Index: trip-planner-front/node_modules/.bin/acorn
===================================================================
--- trip-planner-front/node_modules/.bin/acorn	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/acorn	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../acorn/bin/acorn" "$@"
+  "$basedir/node"  "$basedir/../acorn/bin/acorn" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../acorn/bin/acorn" "$@"
+  node  "$basedir/../acorn/bin/acorn" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/acorn.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/acorn.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/acorn.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\acorn\bin\acorn" %*
+"%_prog%"  "%dp0%\..\acorn\bin\acorn" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/acorn.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/acorn.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/acorn.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../acorn/bin/acorn" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../acorn/bin/acorn" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../acorn/bin/acorn" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../acorn/bin/acorn" $args
-  } else {
-    & "node$exe"  "$basedir/../acorn/bin/acorn" $args
-  }
+  & "node$exe"  "$basedir/../acorn/bin/acorn" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ansi-html
===================================================================
--- trip-planner-front/node_modules/.bin/ansi-html	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ansi-html	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../ansi-html/bin/ansi-html" "$@"
+  "$basedir/node"  "$basedir/../ansi-html/bin/ansi-html" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../ansi-html/bin/ansi-html" "$@"
+  node  "$basedir/../ansi-html/bin/ansi-html" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ansi-html.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ansi-html.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ansi-html.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\ansi-html\bin\ansi-html" %*
+"%_prog%"  "%dp0%\..\ansi-html\bin\ansi-html" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ansi-html.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ansi-html.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ansi-html.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
-  } else {
-    & "node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
-  }
+  & "node$exe"  "$basedir/../ansi-html/bin/ansi-html" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/atob
===================================================================
--- trip-planner-front/node_modules/.bin/atob	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/atob	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../atob/bin/atob.js" "$@"
+  "$basedir/node"  "$basedir/../atob/bin/atob.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../atob/bin/atob.js" "$@"
+  node  "$basedir/../atob/bin/atob.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/atob.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/atob.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/atob.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\atob\bin\atob.js" %*
+"%_prog%"  "%dp0%\..\atob\bin\atob.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/atob.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/atob.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/atob.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../atob/bin/atob.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../atob/bin/atob.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../atob/bin/atob.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../atob/bin/atob.js" $args
-  } else {
-    & "node$exe"  "$basedir/../atob/bin/atob.js" $args
-  }
+  & "node$exe"  "$basedir/../atob/bin/atob.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/autoprefixer
===================================================================
--- trip-planner-front/node_modules/.bin/autoprefixer	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/autoprefixer	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+  "$basedir/node"  "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+  node  "$basedir/../autoprefixer/bin/autoprefixer" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/autoprefixer.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/autoprefixer.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/autoprefixer.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\autoprefixer\bin\autoprefixer" %*
+"%_prog%"  "%dp0%\..\autoprefixer\bin\autoprefixer" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/autoprefixer.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/autoprefixer.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/autoprefixer.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
-  } else {
-    & "node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
-  }
+  & "node$exe"  "$basedir/../autoprefixer/bin/autoprefixer" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/browserslist
===================================================================
--- trip-planner-front/node_modules/.bin/browserslist	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/browserslist	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../browserslist/cli.js" "$@"
+  "$basedir/node"  "$basedir/../browserslist/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../browserslist/cli.js" "$@"
+  node  "$basedir/../browserslist/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/browserslist.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/browserslist.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/browserslist.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\browserslist\cli.js" %*
+"%_prog%"  "%dp0%\..\browserslist\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/browserslist.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/browserslist.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/browserslist.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../browserslist/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../browserslist/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../browserslist/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../browserslist/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../browserslist/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../browserslist/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/build-optimizer
===================================================================
--- trip-planner-front/node_modules/.bin/build-optimizer	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/build-optimizer	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" "$@"
+  "$basedir/node"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" "$@"
+  node  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/build-optimizer.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/build-optimizer.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/build-optimizer.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular-devkit\build-optimizer\src\build-optimizer\cli.js" %*
+"%_prog%"  "%dp0%\..\@angular-devkit\build-optimizer\src\build-optimizer\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/build-optimizer.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/build-optimizer.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/build-optimizer.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../@angular-devkit/build-optimizer/src/build-optimizer/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/css-blank-pseudo
===================================================================
--- trip-planner-front/node_modules/.bin/css-blank-pseudo	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-blank-pseudo	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../css-blank-pseudo/cli.js" "$@"
+  "$basedir/node"  "$basedir/../css-blank-pseudo/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../css-blank-pseudo/cli.js" "$@"
+  node  "$basedir/../css-blank-pseudo/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/css-blank-pseudo.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/css-blank-pseudo.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-blank-pseudo.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\css-blank-pseudo\cli.js" %*
+"%_prog%"  "%dp0%\..\css-blank-pseudo\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/css-blank-pseudo.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/css-blank-pseudo.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-blank-pseudo.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../css-blank-pseudo/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/css-has-pseudo
===================================================================
--- trip-planner-front/node_modules/.bin/css-has-pseudo	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-has-pseudo	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../css-has-pseudo/cli.js" "$@"
+  "$basedir/node"  "$basedir/../css-has-pseudo/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../css-has-pseudo/cli.js" "$@"
+  node  "$basedir/../css-has-pseudo/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/css-has-pseudo.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/css-has-pseudo.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-has-pseudo.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\css-has-pseudo\cli.js" %*
+"%_prog%"  "%dp0%\..\css-has-pseudo\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/css-has-pseudo.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/css-has-pseudo.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-has-pseudo.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../css-has-pseudo/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/css-prefers-color-scheme
===================================================================
--- trip-planner-front/node_modules/.bin/css-prefers-color-scheme	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-prefers-color-scheme	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../css-prefers-color-scheme/cli.js" "$@"
+  "$basedir/node"  "$basedir/../css-prefers-color-scheme/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../css-prefers-color-scheme/cli.js" "$@"
+  node  "$basedir/../css-prefers-color-scheme/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/css-prefers-color-scheme.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/css-prefers-color-scheme.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-prefers-color-scheme.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\css-prefers-color-scheme\cli.js" %*
+"%_prog%"  "%dp0%\..\css-prefers-color-scheme\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/css-prefers-color-scheme.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/css-prefers-color-scheme.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/css-prefers-color-scheme.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../css-prefers-color-scheme/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/cssesc
===================================================================
--- trip-planner-front/node_modules/.bin/cssesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/cssesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../cssesc/bin/cssesc" "$@"
+  node  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/cssesc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/cssesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/cssesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+"%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/cssesc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/cssesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/cssesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/errno
===================================================================
--- trip-planner-front/node_modules/.bin/errno	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/errno	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../errno/cli.js" "$@"
+  "$basedir/node"  "$basedir/../errno/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../errno/cli.js" "$@"
+  node  "$basedir/../errno/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/errno.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/errno.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/errno.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\errno\cli.js" %*
+"%_prog%"  "%dp0%\..\errno\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/errno.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/errno.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/errno.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../errno/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../errno/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../errno/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../errno/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../errno/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../errno/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/esbuild
===================================================================
--- trip-planner-front/node_modules/.bin/esbuild	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/esbuild	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../esbuild/bin/esbuild" "$@"
+  "$basedir/node"  "$basedir/../esbuild/bin/esbuild" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../esbuild/bin/esbuild" "$@"
+  node  "$basedir/../esbuild/bin/esbuild" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/esbuild.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/esbuild.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/esbuild.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\esbuild\bin\esbuild" %*
+"%_prog%"  "%dp0%\..\esbuild\bin\esbuild" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/esbuild.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/esbuild.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/esbuild.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../esbuild/bin/esbuild" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../esbuild/bin/esbuild" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../esbuild/bin/esbuild" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../esbuild/bin/esbuild" $args
-  } else {
-    & "node$exe"  "$basedir/../esbuild/bin/esbuild" $args
-  }
+  & "node$exe"  "$basedir/../esbuild/bin/esbuild" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/image-size
===================================================================
--- trip-planner-front/node_modules/.bin/image-size	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/image-size	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../image-size/bin/image-size.js" "$@"
+  "$basedir/node"  "$basedir/../image-size/bin/image-size.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../image-size/bin/image-size.js" "$@"
+  node  "$basedir/../image-size/bin/image-size.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/image-size.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/image-size.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/image-size.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\image-size\bin\image-size.js" %*
+"%_prog%"  "%dp0%\..\image-size\bin\image-size.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/image-size.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/image-size.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/image-size.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../image-size/bin/image-size.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../image-size/bin/image-size.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../image-size/bin/image-size.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../image-size/bin/image-size.js" $args
-  } else {
-    & "node$exe"  "$basedir/../image-size/bin/image-size.js" $args
-  }
+  & "node$exe"  "$basedir/../image-size/bin/image-size.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/import-local-fixture
===================================================================
--- trip-planner-front/node_modules/.bin/import-local-fixture	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/import-local-fixture	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../import-local/fixtures/cli.js" "$@"
+  "$basedir/node"  "$basedir/../import-local/fixtures/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../import-local/fixtures/cli.js" "$@"
+  node  "$basedir/../import-local/fixtures/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/import-local-fixture.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/import-local-fixture.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/import-local-fixture.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\import-local\fixtures\cli.js" %*
+"%_prog%"  "%dp0%\..\import-local\fixtures\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/import-local-fixture.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/import-local-fixture.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/import-local-fixture.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../import-local/fixtures/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/installed-package-contents
===================================================================
--- trip-planner-front/node_modules/.bin/installed-package-contents	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/installed-package-contents	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -6,3 +6,4 @@
 esac
 
-exec "$basedir/../@npmcli/installed-package-contents/index.js"   "$@"
+"$basedir/../@npmcli/installed-package-contents/index.js"   "$@"
+exit $?
Index: trip-planner-front/node_modules/.bin/installed-package-contents.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/installed-package-contents.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/installed-package-contents.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,9 @@
 @ECHO off
-GOTO start
+SETLOCAL
+CALL :find_dp0
+"%dp0%\..\@npmcli\installed-package-contents\index.js"   %*
+ENDLOCAL
+EXIT /b %errorlevel%
 :find_dp0
 SET dp0=%~dp0
 EXIT /b
-:start
-SETLOCAL
-CALL :find_dp0
-"%dp0%\..\@npmcli\installed-package-contents\index.js"   %*
Index: trip-planner-front/node_modules/.bin/installed-package-contents.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/installed-package-contents.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/installed-package-contents.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -8,9 +8,4 @@
   $exe=".exe"
 }
-# Support pipeline input
-if ($MyInvocation.ExpectingInput) {
-  $input | & "$basedir/../@npmcli/installed-package-contents/index.js"   $args
-} else {
-  & "$basedir/../@npmcli/installed-package-contents/index.js"   $args
-}
+& "$basedir/../@npmcli/installed-package-contents/index.js"   $args
 exit $LASTEXITCODE
Index: trip-planner-front/node_modules/.bin/is-docker
===================================================================
--- trip-planner-front/node_modules/.bin/is-docker	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/is-docker	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../is-docker/cli.js" "$@"
+  "$basedir/node"  "$basedir/../is-docker/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../is-docker/cli.js" "$@"
+  node  "$basedir/../is-docker/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/is-docker.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/is-docker.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/is-docker.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\is-docker\cli.js" %*
+"%_prog%"  "%dp0%\..\is-docker\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/is-docker.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/is-docker.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/is-docker.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../is-docker/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../is-docker/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../is-docker/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../is-docker/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../is-docker/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../is-docker/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ivy-ngcc
===================================================================
--- trip-planner-front/node_modules/.bin/ivy-ngcc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ivy-ngcc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" "$@"
+  "$basedir/node"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" "$@"
+  node  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ivy-ngcc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ivy-ngcc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ivy-ngcc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular\compiler-cli\ngcc\main-ivy-ngcc.js" %*
+"%_prog%"  "%dp0%\..\@angular\compiler-cli\ngcc\main-ivy-ngcc.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ivy-ngcc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ivy-ngcc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ivy-ngcc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
-  }
+  & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ivy-ngcc.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/jsesc
===================================================================
--- trip-planner-front/node_modules/.bin/jsesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/jsesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../jsesc/bin/jsesc" "$@"
+  "$basedir/node"  "$basedir/../jsesc/bin/jsesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../jsesc/bin/jsesc" "$@"
+  node  "$basedir/../jsesc/bin/jsesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/jsesc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/jsesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/jsesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\jsesc\bin\jsesc" %*
+"%_prog%"  "%dp0%\..\jsesc\bin\jsesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/jsesc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/jsesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/jsesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../jsesc/bin/jsesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../jsesc/bin/jsesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../jsesc/bin/jsesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../jsesc/bin/jsesc" $args
-  } else {
-    & "node$exe"  "$basedir/../jsesc/bin/jsesc" $args
-  }
+  & "node$exe"  "$basedir/../jsesc/bin/jsesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/json5
===================================================================
--- trip-planner-front/node_modules/.bin/json5	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/json5	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../json5/lib/cli.js" "$@"
+  "$basedir/node"  "$basedir/../json5/lib/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../json5/lib/cli.js" "$@"
+  node  "$basedir/../json5/lib/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/json5.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/json5.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/json5.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\json5\lib\cli.js" %*
+"%_prog%"  "%dp0%\..\json5\lib\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/json5.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/json5.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/json5.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../json5/lib/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../json5/lib/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../json5/lib/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/karma
===================================================================
--- trip-planner-front/node_modules/.bin/karma	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/karma	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../karma/bin/karma" "$@"
+  "$basedir/node"  "$basedir/../karma/bin/karma" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../karma/bin/karma" "$@"
+  node  "$basedir/../karma/bin/karma" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/karma.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/karma.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/karma.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\karma\bin\karma" %*
+"%_prog%"  "%dp0%\..\karma\bin\karma" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/karma.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/karma.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/karma.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../karma/bin/karma" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../karma/bin/karma" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../karma/bin/karma" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../karma/bin/karma" $args
-  } else {
-    & "node$exe"  "$basedir/../karma/bin/karma" $args
-  }
+  & "node$exe"  "$basedir/../karma/bin/karma" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/lessc
===================================================================
--- trip-planner-front/node_modules/.bin/lessc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/lessc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../less/bin/lessc" "$@"
+  "$basedir/node"  "$basedir/../less/bin/lessc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../less/bin/lessc" "$@"
+  node  "$basedir/../less/bin/lessc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/lessc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/lessc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/lessc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\less\bin\lessc" %*
+"%_prog%"  "%dp0%\..\less\bin\lessc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/lessc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/lessc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/lessc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../less/bin/lessc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../less/bin/lessc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../less/bin/lessc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../less/bin/lessc" $args
-  } else {
-    & "node$exe"  "$basedir/../less/bin/lessc" $args
-  }
+  & "node$exe"  "$basedir/../less/bin/lessc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/mime
===================================================================
--- trip-planner-front/node_modules/.bin/mime	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mime	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../mime/cli.js" "$@"
+  "$basedir/node"  "$basedir/../mime/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../mime/cli.js" "$@"
+  node  "$basedir/../mime/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/mime.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/mime.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mime.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\mime\cli.js" %*
+"%_prog%"  "%dp0%\..\mime\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/mime.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/mime.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mime.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../mime/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../mime/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../mime/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/mkdirp
===================================================================
--- trip-planner-front/node_modules/.bin/mkdirp	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mkdirp	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  "$basedir/node"  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  node  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/mkdirp.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/mkdirp.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mkdirp.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\mkdirp\bin\cmd.js" %*
+"%_prog%"  "%dp0%\..\mkdirp\bin\cmd.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/mkdirp.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/mkdirp.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/mkdirp.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  } else {
-    & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  }
+  & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/multicast-dns
===================================================================
--- trip-planner-front/node_modules/.bin/multicast-dns	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/multicast-dns	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../multicast-dns/cli.js" "$@"
+  "$basedir/node"  "$basedir/../multicast-dns/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../multicast-dns/cli.js" "$@"
+  node  "$basedir/../multicast-dns/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/multicast-dns.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/multicast-dns.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/multicast-dns.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\multicast-dns\cli.js" %*
+"%_prog%"  "%dp0%\..\multicast-dns\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/multicast-dns.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/multicast-dns.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/multicast-dns.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../multicast-dns/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../multicast-dns/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../multicast-dns/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../multicast-dns/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../multicast-dns/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../multicast-dns/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/nanoid
===================================================================
--- trip-planner-front/node_modules/.bin/nanoid	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nanoid	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+  "$basedir/node"  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+  node  "$basedir/../nanoid/bin/nanoid.cjs" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/nanoid.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/nanoid.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nanoid.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\nanoid\bin\nanoid.cjs" %*
+"%_prog%"  "%dp0%\..\nanoid\bin\nanoid.cjs" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/nanoid.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/nanoid.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nanoid.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
-  } else {
-    & "node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
-  }
+  & "node$exe"  "$basedir/../nanoid/bin/nanoid.cjs" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/needle
===================================================================
--- trip-planner-front/node_modules/.bin/needle	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/needle	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../needle/bin/needle" "$@"
+  "$basedir/node"  "$basedir/../needle/bin/needle" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../needle/bin/needle" "$@"
+  node  "$basedir/../needle/bin/needle" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/needle.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/needle.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/needle.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\needle\bin\needle" %*
+"%_prog%"  "%dp0%\..\needle\bin\needle" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/needle.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/needle.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/needle.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../needle/bin/needle" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../needle/bin/needle" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../needle/bin/needle" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../needle/bin/needle" $args
-  } else {
-    & "node$exe"  "$basedir/../needle/bin/needle" $args
-  }
+  & "node$exe"  "$basedir/../needle/bin/needle" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ng
===================================================================
--- trip-planner-front/node_modules/.bin/ng	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular/cli/bin/ng" "$@"
+  "$basedir/node"  "$basedir/../@angular/cli/bin/ng" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular/cli/bin/ng" "$@"
+  node  "$basedir/../@angular/cli/bin/ng" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ng-xi18n
===================================================================
--- trip-planner-front/node_modules/.bin/ng-xi18n	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng-xi18n	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" "$@"
+  "$basedir/node"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" "$@"
+  node  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ng-xi18n.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ng-xi18n.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng-xi18n.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular\compiler-cli\src\extract_i18n.js" %*
+"%_prog%"  "%dp0%\..\@angular\compiler-cli\src\extract_i18n.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ng-xi18n.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ng-xi18n.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng-xi18n.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
-  }
+  & "node$exe"  "$basedir/../@angular/compiler-cli/src/extract_i18n.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ng.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ng.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular\cli\bin\ng" %*
+"%_prog%"  "%dp0%\..\@angular\cli\bin\ng" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ng.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ng.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ng.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular/cli/bin/ng" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular/cli/bin/ng" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular/cli/bin/ng" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular/cli/bin/ng" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular/cli/bin/ng" $args
-  }
+  & "node$exe"  "$basedir/../@angular/cli/bin/ng" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ngc
===================================================================
--- trip-planner-front/node_modules/.bin/ngc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular/compiler-cli/src/main.js" "$@"
+  "$basedir/node"  "$basedir/../@angular/compiler-cli/src/main.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular/compiler-cli/src/main.js" "$@"
+  node  "$basedir/../@angular/compiler-cli/src/main.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ngc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ngc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular\compiler-cli\src\main.js" %*
+"%_prog%"  "%dp0%\..\@angular\compiler-cli\src\main.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ngc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ngc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
-  }
+  & "node$exe"  "$basedir/../@angular/compiler-cli/src/main.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/ngcc
===================================================================
--- trip-planner-front/node_modules/.bin/ngcc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngcc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" "$@"
+  "$basedir/node"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" "$@"
+  node  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/ngcc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/ngcc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngcc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@angular\compiler-cli\ngcc\main-ngcc.js" %*
+"%_prog%"  "%dp0%\..\@angular\compiler-cli\ngcc\main-ngcc.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/ngcc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/ngcc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/ngcc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
-  }
+  & "node$exe"  "$basedir/../@angular/compiler-cli/ngcc/main-ngcc.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/node-gyp
===================================================================
--- trip-planner-front/node_modules/.bin/node-gyp	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/node-gyp	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  "$basedir/node"  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  node  "$basedir/../node-gyp/bin/node-gyp.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/node-gyp.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/node-gyp.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/node-gyp.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\node-gyp\bin\node-gyp.js" %*
+"%_prog%"  "%dp0%\..\node-gyp\bin\node-gyp.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/node-gyp.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/node-gyp.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/node-gyp.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
-  } else {
-    & "node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
-  }
+  & "node$exe"  "$basedir/../node-gyp/bin/node-gyp.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/nopt
===================================================================
--- trip-planner-front/node_modules/.bin/nopt	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nopt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../nopt/bin/nopt.js" "$@"
+  "$basedir/node"  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../nopt/bin/nopt.js" "$@"
+  node  "$basedir/../nopt/bin/nopt.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/nopt.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/nopt.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nopt.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\nopt\bin\nopt.js" %*
+"%_prog%"  "%dp0%\..\nopt\bin\nopt.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/nopt.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/nopt.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/nopt.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../nopt/bin/nopt.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../nopt/bin/nopt.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../nopt/bin/nopt.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../nopt/bin/nopt.js" $args
-  } else {
-    & "node$exe"  "$basedir/../nopt/bin/nopt.js" $args
-  }
+  & "node$exe"  "$basedir/../nopt/bin/nopt.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/npm-packlist
===================================================================
--- trip-planner-front/node_modules/.bin/npm-packlist	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/npm-packlist	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../npm-packlist/bin/index.js" "$@"
+  "$basedir/node"  "$basedir/../npm-packlist/bin/index.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../npm-packlist/bin/index.js" "$@"
+  node  "$basedir/../npm-packlist/bin/index.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/npm-packlist.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/npm-packlist.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/npm-packlist.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\npm-packlist\bin\index.js" %*
+"%_prog%"  "%dp0%\..\npm-packlist\bin\index.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/npm-packlist.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/npm-packlist.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/npm-packlist.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
-  } else {
-    & "node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
-  }
+  & "node$exe"  "$basedir/../npm-packlist/bin/index.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/pacote
===================================================================
--- trip-planner-front/node_modules/.bin/pacote	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/pacote	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../pacote/lib/bin.js" "$@"
+  "$basedir/node"  "$basedir/../pacote/lib/bin.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../pacote/lib/bin.js" "$@"
+  node  "$basedir/../pacote/lib/bin.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/pacote.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/pacote.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/pacote.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\pacote\lib\bin.js" %*
+"%_prog%"  "%dp0%\..\pacote\lib\bin.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/pacote.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/pacote.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/pacote.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../pacote/lib/bin.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../pacote/lib/bin.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../pacote/lib/bin.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../pacote/lib/bin.js" $args
-  } else {
-    & "node$exe"  "$basedir/../pacote/lib/bin.js" $args
-  }
+  & "node$exe"  "$basedir/../pacote/lib/bin.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/parser
===================================================================
--- trip-planner-front/node_modules/.bin/parser	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/parser	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+  "$basedir/node"  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+  node  "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/parser.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/parser.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/parser.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
+"%_prog%"  "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/parser.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/parser.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/parser.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
-  } else {
-    & "node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
-  }
+  & "node$exe"  "$basedir/../@babel/parser/bin/babel-parser.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/regjsparser
===================================================================
--- trip-planner-front/node_modules/.bin/regjsparser	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/regjsparser	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../regjsparser/bin/parser" "$@"
+  "$basedir/node"  "$basedir/../regjsparser/bin/parser" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../regjsparser/bin/parser" "$@"
+  node  "$basedir/../regjsparser/bin/parser" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/regjsparser.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/regjsparser.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/regjsparser.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\regjsparser\bin\parser" %*
+"%_prog%"  "%dp0%\..\regjsparser\bin\parser" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/regjsparser.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/regjsparser.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/regjsparser.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../regjsparser/bin/parser" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../regjsparser/bin/parser" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../regjsparser/bin/parser" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../regjsparser/bin/parser" $args
-  } else {
-    & "node$exe"  "$basedir/../regjsparser/bin/parser" $args
-  }
+  & "node$exe"  "$basedir/../regjsparser/bin/parser" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/rimraf
===================================================================
--- trip-planner-front/node_modules/.bin/rimraf	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/rimraf	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../rimraf/bin.js" "$@"
+  "$basedir/node"  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../rimraf/bin.js" "$@"
+  node  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/rimraf.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/rimraf.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/rimraf.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\rimraf\bin.js" %*
+"%_prog%"  "%dp0%\..\rimraf\bin.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/rimraf.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/rimraf.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/rimraf.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../rimraf/bin.js" $args
-  } else {
-    & "node$exe"  "$basedir/../rimraf/bin.js" $args
-  }
+  & "node$exe"  "$basedir/../rimraf/bin.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/sass
===================================================================
--- trip-planner-front/node_modules/.bin/sass	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sass	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../sass/sass.js" "$@"
+  "$basedir/node"  "$basedir/../sass/sass.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../sass/sass.js" "$@"
+  node  "$basedir/../sass/sass.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/sass.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/sass.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sass.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\sass\sass.js" %*
+"%_prog%"  "%dp0%\..\sass\sass.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/sass.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/sass.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sass.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../sass/sass.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../sass/sass.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../sass/sass.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../sass/sass.js" $args
-  } else {
-    & "node$exe"  "$basedir/../sass/sass.js" $args
-  }
+  & "node$exe"  "$basedir/../sass/sass.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/sshpk-conv
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-conv	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-conv	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../sshpk/bin/sshpk-conv" "$@"
+  "$basedir/node"  "$basedir/../sshpk/bin/sshpk-conv" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../sshpk/bin/sshpk-conv" "$@"
+  node  "$basedir/../sshpk/bin/sshpk-conv" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/sshpk-conv.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-conv.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-conv.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\sshpk\bin\sshpk-conv" %*
+"%_prog%"  "%dp0%\..\sshpk\bin\sshpk-conv" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/sshpk-conv.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-conv.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-conv.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
-  } else {
-    & "node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
-  }
+  & "node$exe"  "$basedir/../sshpk/bin/sshpk-conv" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/sshpk-sign
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-sign	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-sign	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../sshpk/bin/sshpk-sign" "$@"
+  "$basedir/node"  "$basedir/../sshpk/bin/sshpk-sign" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../sshpk/bin/sshpk-sign" "$@"
+  node  "$basedir/../sshpk/bin/sshpk-sign" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/sshpk-sign.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-sign.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-sign.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\sshpk\bin\sshpk-sign" %*
+"%_prog%"  "%dp0%\..\sshpk\bin\sshpk-sign" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/sshpk-sign.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-sign.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-sign.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
-  } else {
-    & "node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
-  }
+  & "node$exe"  "$basedir/../sshpk/bin/sshpk-sign" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/sshpk-verify
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-verify	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-verify	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../sshpk/bin/sshpk-verify" "$@"
+  "$basedir/node"  "$basedir/../sshpk/bin/sshpk-verify" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../sshpk/bin/sshpk-verify" "$@"
+  node  "$basedir/../sshpk/bin/sshpk-verify" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/sshpk-verify.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-verify.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-verify.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\sshpk\bin\sshpk-verify" %*
+"%_prog%"  "%dp0%\..\sshpk\bin\sshpk-verify" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/sshpk-verify.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/sshpk-verify.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/sshpk-verify.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
-  } else {
-    & "node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
-  }
+  & "node$exe"  "$basedir/../sshpk/bin/sshpk-verify" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/stylus
===================================================================
--- trip-planner-front/node_modules/.bin/stylus	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/stylus	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../stylus/bin/stylus" "$@"
+  "$basedir/node"  "$basedir/../stylus/bin/stylus" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../stylus/bin/stylus" "$@"
+  node  "$basedir/../stylus/bin/stylus" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/stylus.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/stylus.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/stylus.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\stylus\bin\stylus" %*
+"%_prog%"  "%dp0%\..\stylus\bin\stylus" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/stylus.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/stylus.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/stylus.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../stylus/bin/stylus" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../stylus/bin/stylus" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../stylus/bin/stylus" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../stylus/bin/stylus" $args
-  } else {
-    & "node$exe"  "$basedir/../stylus/bin/stylus" $args
-  }
+  & "node$exe"  "$basedir/../stylus/bin/stylus" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/svgo
===================================================================
--- trip-planner-front/node_modules/.bin/svgo	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/svgo	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../svgo/bin/svgo" "$@"
+  "$basedir/node"  "$basedir/../svgo/bin/svgo" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../svgo/bin/svgo" "$@"
+  node  "$basedir/../svgo/bin/svgo" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/svgo.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/svgo.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/svgo.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\svgo\bin\svgo" %*
+"%_prog%"  "%dp0%\..\svgo\bin\svgo" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/svgo.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/svgo.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/svgo.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../svgo/bin/svgo" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../svgo/bin/svgo" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../svgo/bin/svgo" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../svgo/bin/svgo" $args
-  } else {
-    & "node$exe"  "$basedir/../svgo/bin/svgo" $args
-  }
+  & "node$exe"  "$basedir/../svgo/bin/svgo" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/terser
===================================================================
--- trip-planner-front/node_modules/.bin/terser	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/terser	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../terser/bin/terser" "$@"
+  "$basedir/node"  "$basedir/../terser/bin/terser" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../terser/bin/terser" "$@"
+  node  "$basedir/../terser/bin/terser" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/terser.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/terser.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/terser.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\terser\bin\terser" %*
+"%_prog%"  "%dp0%\..\terser\bin\terser" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/terser.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/terser.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/terser.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../terser/bin/terser" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../terser/bin/terser" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../terser/bin/terser" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../terser/bin/terser" $args
-  } else {
-    & "node$exe"  "$basedir/../terser/bin/terser" $args
-  }
+  & "node$exe"  "$basedir/../terser/bin/terser" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/tree-kill
===================================================================
--- trip-planner-front/node_modules/.bin/tree-kill	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tree-kill	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../tree-kill/cli.js" "$@"
+  "$basedir/node"  "$basedir/../tree-kill/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../tree-kill/cli.js" "$@"
+  node  "$basedir/../tree-kill/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/tree-kill.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/tree-kill.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tree-kill.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\tree-kill\cli.js" %*
+"%_prog%"  "%dp0%\..\tree-kill\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/tree-kill.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/tree-kill.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tree-kill.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../tree-kill/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../tree-kill/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../tree-kill/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../tree-kill/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../tree-kill/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../tree-kill/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/tsc
===================================================================
--- trip-planner-front/node_modules/.bin/tsc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../typescript/bin/tsc" "$@"
+  "$basedir/node"  "$basedir/../typescript/bin/tsc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../typescript/bin/tsc" "$@"
+  node  "$basedir/../typescript/bin/tsc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/tsc.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/tsc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\typescript\bin\tsc" %*
+"%_prog%"  "%dp0%\..\typescript\bin\tsc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/tsc.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/tsc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../typescript/bin/tsc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../typescript/bin/tsc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../typescript/bin/tsc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../typescript/bin/tsc" $args
-  } else {
-    & "node$exe"  "$basedir/../typescript/bin/tsc" $args
-  }
+  & "node$exe"  "$basedir/../typescript/bin/tsc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/tsserver
===================================================================
--- trip-planner-front/node_modules/.bin/tsserver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsserver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../typescript/bin/tsserver" "$@"
+  "$basedir/node"  "$basedir/../typescript/bin/tsserver" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../typescript/bin/tsserver" "$@"
+  node  "$basedir/../typescript/bin/tsserver" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/tsserver.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/tsserver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsserver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\typescript\bin\tsserver" %*
+"%_prog%"  "%dp0%\..\typescript\bin\tsserver" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/tsserver.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/tsserver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/tsserver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../typescript/bin/tsserver" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../typescript/bin/tsserver" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../typescript/bin/tsserver" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../typescript/bin/tsserver" $args
-  } else {
-    & "node$exe"  "$basedir/../typescript/bin/tsserver" $args
-  }
+  & "node$exe"  "$basedir/../typescript/bin/tsserver" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/uuid
===================================================================
--- trip-planner-front/node_modules/.bin/uuid	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/uuid	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../uuid/dist/bin/uuid" "$@"
+  "$basedir/node"  "$basedir/../uuid/dist/bin/uuid" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../uuid/dist/bin/uuid" "$@"
+  node  "$basedir/../uuid/dist/bin/uuid" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/uuid.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/uuid.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/uuid.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\uuid\dist\bin\uuid" %*
+"%_prog%"  "%dp0%\..\uuid\dist\bin\uuid" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/uuid.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/uuid.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/uuid.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
-  } else {
-    & "node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
-  }
+  & "node$exe"  "$basedir/../uuid/dist/bin/uuid" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/webpack
===================================================================
--- trip-planner-front/node_modules/.bin/webpack	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../webpack/bin/webpack.js" "$@"
+  "$basedir/node"  "$basedir/../webpack/bin/webpack.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../webpack/bin/webpack.js" "$@"
+  node  "$basedir/../webpack/bin/webpack.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/webpack-dev-server
===================================================================
--- trip-planner-front/node_modules/.bin/webpack-dev-server	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack-dev-server	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" "$@"
+  "$basedir/node"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" "$@"
+  node  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/webpack-dev-server.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/webpack-dev-server.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack-dev-server.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\webpack-dev-server\bin\webpack-dev-server.js" %*
+"%_prog%"  "%dp0%\..\webpack-dev-server\bin\webpack-dev-server.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/webpack-dev-server.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/webpack-dev-server.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack-dev-server.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
-  } else {
-    & "node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
-  }
+  & "node$exe"  "$basedir/../webpack-dev-server/bin/webpack-dev-server.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/webpack.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/webpack.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\webpack\bin\webpack.js" %*
+"%_prog%"  "%dp0%\..\webpack\bin\webpack.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/webpack.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/webpack.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/webpack.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../webpack/bin/webpack.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../webpack/bin/webpack.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../webpack/bin/webpack.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../webpack/bin/webpack.js" $args
-  } else {
-    & "node$exe"  "$basedir/../webpack/bin/webpack.js" $args
-  }
+  & "node$exe"  "$basedir/../webpack/bin/webpack.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.bin/which
===================================================================
--- trip-planner-front/node_modules/.bin/which	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/which	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../which/bin/which" "$@"
+  "$basedir/node"  "$basedir/../which/bin/which" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../which/bin/which" "$@"
+  node  "$basedir/../which/bin/which" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/.bin/which.cmd
===================================================================
--- trip-planner-front/node_modules/.bin/which.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/which.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\which\bin\which" %*
+"%_prog%"  "%dp0%\..\which\bin\which" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/.bin/which.ps1
===================================================================
--- trip-planner-front/node_modules/.bin/which.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.bin/which.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../which/bin/which" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../which/bin/which" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../which/bin/which" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../which/bin/which" $args
-  } else {
-    & "node$exe"  "$basedir/../which/bin/which" $args
-  }
+  & "node$exe"  "$basedir/../which/bin/which" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, transition, style, animate } from '@angular/animations';\nconst _c0 = [\"mask\"];\n\nconst _c1 = function (a0, a1) {\n  return {\n    showTransitionParams: a0,\n    hideTransitionParams: a1\n  };\n};\n\nconst _c2 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nfunction Galleria_div_0_div_1_p_galleriaContent_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r7 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaContent\", 6);\n    i0.ɵɵlistener(\"@animation.start\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_animation_animation_start_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r6 = i0.ɵɵnextContext(3);\n      return ctx_r6.onAnimationStart($event);\n    })(\"@animation.done\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_animation_animation_done_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r8 = i0.ɵɵnextContext(3);\n      return ctx_r8.onAnimationEnd($event);\n    })(\"maskHide\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_maskHide_0_listener() {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r9 = i0.ɵɵnextContext(3);\n      return ctx_r9.onMaskHide();\n    })(\"activeItemChange\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_activeItemChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r10 = i0.ɵɵnextContext(3);\n      return ctx_r10.onActiveItemChange($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r5 = i0.ɵɵnextContext(3);\n    i0.ɵɵproperty(\"@animation\", i0.ɵɵpureFunction1(8, _c2, i0.ɵɵpureFunction2(5, _c1, ctx_r5.showTransitionOptions, ctx_r5.hideTransitionOptions)))(\"value\", ctx_r5.value)(\"activeIndex\", ctx_r5.activeIndex)(\"numVisible\", ctx_r5.numVisible)(\"ngStyle\", ctx_r5.containerStyle);\n  }\n}\n\nconst _c3 = function (a1) {\n  return {\n    \"p-galleria-mask p-component-overlay p-component-overlay-enter\": true,\n    \"p-galleria-visible\": a1\n  };\n};\n\nfunction Galleria_div_0_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 3, 4);\n    i0.ɵɵtemplate(2, Galleria_div_0_div_1_p_galleriaContent_2_Template, 1, 10, \"p-galleriaContent\", 5);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext(2);\n    i0.ɵɵclassMap(ctx_r3.maskClass);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c3, ctx_r3.visible));\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", ctx_r3.visible);\n  }\n}\n\nfunction Galleria_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\");\n    i0.ɵɵtemplate(1, Galleria_div_0_div_1_Template, 3, 6, \"div\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.maskVisible);\n  }\n}\n\nfunction Galleria_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r12 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaContent\", 7);\n    i0.ɵɵlistener(\"activeItemChange\", function Galleria_ng_template_1_Template_p_galleriaContent_activeItemChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r12);\n      const ctx_r11 = i0.ɵɵnextContext();\n      return ctx_r11.onActiveItemChange($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"value\", ctx_r2.value)(\"activeIndex\", ctx_r2.activeIndex)(\"numVisible\", ctx_r2.numVisible);\n  }\n}\n\nfunction GalleriaContent_div_0_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r6 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 8);\n    i0.ɵɵlistener(\"click\", function GalleriaContent_div_0_button_1_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r6);\n      const ctx_r5 = i0.ɵɵnextContext(2);\n      return ctx_r5.maskHide.emit();\n    });\n    i0.ɵɵelement(1, \"span\", 9);\n    i0.ɵɵelementEnd();\n  }\n}\n\nfunction GalleriaContent_div_0_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 10);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 11);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"templates\", ctx_r2.galleria.templates);\n  }\n}\n\nfunction GalleriaContent_div_0_p_galleriaThumbnails_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaThumbnails\", 12);\n    i0.ɵɵlistener(\"onActiveIndexChange\", function GalleriaContent_div_0_p_galleriaThumbnails_5_Template_p_galleriaThumbnails_onActiveIndexChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r7 = i0.ɵɵnextContext(2);\n      return ctx_r7.onActiveIndexChange($event);\n    })(\"stopSlideShow\", function GalleriaContent_div_0_p_galleriaThumbnails_5_Template_p_galleriaThumbnails_stopSlideShow_0_listener() {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r9 = i0.ɵɵnextContext(2);\n      return ctx_r9.stopSlideShow();\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"containerId\", ctx_r3.id)(\"value\", ctx_r3.value)(\"activeIndex\", ctx_r3.activeIndex)(\"templates\", ctx_r3.galleria.templates)(\"numVisible\", ctx_r3.numVisible)(\"responsiveOptions\", ctx_r3.galleria.responsiveOptions)(\"circular\", ctx_r3.galleria.circular)(\"isVertical\", ctx_r3.isVertical())(\"contentHeight\", ctx_r3.galleria.verticalThumbnailViewPortHeight)(\"showThumbnailNavigators\", ctx_r3.galleria.showThumbnailNavigators)(\"slideShowActive\", ctx_r3.slideShowActive);\n  }\n}\n\nfunction GalleriaContent_div_0_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 13);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r4 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"templates\", ctx_r4.galleria.templates);\n  }\n}\n\nconst _c4 = function (a1, a2, a3) {\n  return {\n    \"p-galleria p-component\": true,\n    \"p-galleria-fullscreen\": a1,\n    \"p-galleria-indicator-onitem\": a2,\n    \"p-galleria-item-nav-onhover\": a3\n  };\n};\n\nconst _c5 = function () {\n  return {};\n};\n\nfunction GalleriaContent_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r11 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\", 1);\n    i0.ɵɵtemplate(1, GalleriaContent_div_0_button_1_Template, 2, 0, \"button\", 2);\n    i0.ɵɵtemplate(2, GalleriaContent_div_0_div_2_Template, 2, 1, \"div\", 3);\n    i0.ɵɵelementStart(3, \"div\", 4);\n    i0.ɵɵelementStart(4, \"p-galleriaItem\", 5);\n    i0.ɵɵlistener(\"onActiveIndexChange\", function GalleriaContent_div_0_Template_p_galleriaItem_onActiveIndexChange_4_listener($event) {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.onActiveIndexChange($event);\n    })(\"startSlideShow\", function GalleriaContent_div_0_Template_p_galleriaItem_startSlideShow_4_listener() {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r12 = i0.ɵɵnextContext();\n      return ctx_r12.startSlideShow();\n    })(\"stopSlideShow\", function GalleriaContent_div_0_Template_p_galleriaItem_stopSlideShow_4_listener() {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r13 = i0.ɵɵnextContext();\n      return ctx_r13.stopSlideShow();\n    });\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(5, GalleriaContent_div_0_p_galleriaThumbnails_5_Template, 1, 11, \"p-galleriaThumbnails\", 6);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(6, GalleriaContent_div_0_div_6_Template, 2, 1, \"div\", 7);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r0.galleriaClass());\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(20, _c4, ctx_r0.galleria.fullScreen, ctx_r0.galleria.showIndicatorsOnItem, ctx_r0.galleria.showItemNavigatorsOnHover && !ctx_r0.galleria.fullScreen))(\"ngStyle\", !ctx_r0.galleria.fullScreen ? ctx_r0.galleria.containerStyle : i0.ɵɵpureFunction0(24, _c5));\n    i0.ɵɵattribute(\"id\", ctx_r0.id);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.fullScreen);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.templates && ctx_r0.galleria.headerFacet);\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"value\", ctx_r0.value)(\"activeIndex\", ctx_r0.activeIndex)(\"circular\", ctx_r0.galleria.circular)(\"templates\", ctx_r0.galleria.templates)(\"showIndicators\", ctx_r0.galleria.showIndicators)(\"changeItemOnIndicatorHover\", ctx_r0.galleria.changeItemOnIndicatorHover)(\"indicatorFacet\", ctx_r0.galleria.indicatorFacet)(\"captionFacet\", ctx_r0.galleria.captionFacet)(\"showItemNavigators\", ctx_r0.galleria.showItemNavigators)(\"autoPlay\", ctx_r0.galleria.autoPlay)(\"slideShowActive\", ctx_r0.slideShowActive);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.showThumbnails);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.templates && ctx_r0.galleria.footerFacet);\n  }\n}\n\nfunction GalleriaItemSlot_ng_container_0_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction GalleriaItemSlot_ng_container_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, GalleriaItemSlot_ng_container_0_ng_container_1_Template, 1, 0, \"ng-container\", 1);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.contentTemplate)(\"ngTemplateOutletContext\", ctx_r0.context);\n  }\n}\n\nconst _c6 = function (a1) {\n  return {\n    \"p-galleria-item-prev p-galleria-item-nav p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nfunction GalleriaItem_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 6);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_button_2_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 7);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(2, _c6, ctx_r0.isNavBackwardDisabled()))(\"disabled\", ctx_r0.isNavBackwardDisabled());\n  }\n}\n\nconst _c7 = function (a1) {\n  return {\n    \"p-galleria-item-next p-galleria-item-nav p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nfunction GalleriaItem_button_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r7 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 6);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_button_4_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(2, _c7, ctx_r1.isNavForwardDisabled()))(\"disabled\", ctx_r1.isNavForwardDisabled());\n  }\n}\n\nfunction GalleriaItem_div_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 9);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 10);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"item\", ctx_r2.activeItem)(\"templates\", ctx_r2.templates);\n  }\n}\n\nfunction GalleriaItem_ul_6_li_1_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"button\", 16);\n  }\n}\n\nconst _c8 = function (a1) {\n  return {\n    \"p-galleria-indicator\": true,\n    \"p-highlight\": a1\n  };\n};\n\nfunction GalleriaItem_ul_6_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r13 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 13);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_ul_6_li_1_Template_li_click_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r12 = i0.ɵɵnextContext(2);\n      return ctx_r12.onIndicatorClick(index_r10);\n    })(\"mouseenter\", function GalleriaItem_ul_6_li_1_Template_li_mouseenter_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r14 = i0.ɵɵnextContext(2);\n      return ctx_r14.onIndicatorMouseEnter(index_r10);\n    })(\"keydown.enter\", function GalleriaItem_ul_6_li_1_Template_li_keydown_enter_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r15 = i0.ɵɵnextContext(2);\n      return ctx_r15.onIndicatorKeyDown(index_r10);\n    });\n    i0.ɵɵtemplate(1, GalleriaItem_ul_6_li_1_button_1_Template, 1, 0, \"button\", 14);\n    i0.ɵɵelement(2, \"p-galleriaItemSlot\", 15);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const index_r10 = ctx.index;\n    const ctx_r8 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c8, ctx_r8.isIndicatorItemActive(index_r10)));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r8.indicatorFacet);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"index\", index_r10)(\"templates\", ctx_r8.templates);\n  }\n}\n\nfunction GalleriaItem_ul_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"ul\", 11);\n    i0.ɵɵtemplate(1, GalleriaItem_ul_6_li_1_Template, 3, 6, \"li\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r3.value);\n  }\n}\n\nconst _c9 = [\"itemsContainer\"];\n\nconst _c10 = function (a1) {\n  return {\n    \"p-galleria-thumbnail-prev p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c11 = function (a1, a2) {\n  return {\n    \"p-galleria-thumbnail-prev-icon pi\": true,\n    \"pi-chevron-left\": a1,\n    \"pi-chevron-up\": a2\n  };\n};\n\nfunction GalleriaThumbnails_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 7);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_button_2_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c10, ctx_r0.isNavBackwardDisabled()))(\"disabled\", ctx_r0.isNavBackwardDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c11, !ctx_r0.isVertical, ctx_r0.isVertical));\n  }\n}\n\nconst _c12 = function (a1, a2, a3, a4) {\n  return {\n    \"p-galleria-thumbnail-item\": true,\n    \"p-galleria-thumbnail-item-current\": a1,\n    \"p-galleria-thumbnail-item-active\": a2,\n    \"p-galleria-thumbnail-item-start\": a3,\n    \"p-galleria-thumbnail-item-end\": a4\n  };\n};\n\nfunction GalleriaThumbnails_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r9 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\", 8);\n    i0.ɵɵelementStart(1, \"div\", 9);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_div_6_Template_div_click_1_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r9);\n      const index_r7 = restoredCtx.index;\n      const ctx_r8 = i0.ɵɵnextContext();\n      return ctx_r8.onItemClick(index_r7);\n    })(\"keydown.enter\", function GalleriaThumbnails_div_6_Template_div_keydown_enter_1_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r9);\n      const index_r7 = restoredCtx.index;\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.onItemClick(index_r7);\n    });\n    i0.ɵɵelement(2, \"p-galleriaItemSlot\", 10);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r6 = ctx.$implicit;\n    const index_r7 = ctx.index;\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(4, _c12, ctx_r2.activeIndex === index_r7, ctx_r2.isItemActive(index_r7), ctx_r2.firstItemAciveIndex() === index_r7, ctx_r2.lastItemActiveIndex() === index_r7));\n    i0.ɵɵadvance(1);\n    i0.ɵɵattribute(\"tabindex\", ctx_r2.getTabIndex(index_r7));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"item\", item_r6)(\"templates\", ctx_r2.templates);\n  }\n}\n\nconst _c13 = function (a1) {\n  return {\n    \"p-galleria-thumbnail-next p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c14 = function (a1, a2) {\n  return {\n    \"p-galleria-thumbnail-next-icon pi\": true,\n    \"pi-chevron-right\": a1,\n    \"pi-chevron-down\": a2\n  };\n};\n\nfunction GalleriaThumbnails_button_7_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r12 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 7);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_button_7_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r12);\n      const ctx_r11 = i0.ɵɵnextContext();\n      return ctx_r11.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c13, ctx_r3.isNavForwardDisabled()))(\"disabled\", ctx_r3.isNavForwardDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c14, !ctx_r3.isVertical, ctx_r3.isVertical));\n  }\n}\n\nconst _c15 = function (a0) {\n  return {\n    \"height\": a0\n  };\n};\n\nclass Galleria {\n  constructor(element, cd, config) {\n    this.element = element;\n    this.cd = cd;\n    this.config = config;\n    this.fullScreen = false;\n    this.numVisible = 3;\n    this.showItemNavigators = false;\n    this.showThumbnailNavigators = true;\n    this.showItemNavigatorsOnHover = false;\n    this.changeItemOnIndicatorHover = false;\n    this.circular = false;\n    this.autoPlay = false;\n    this.transitionInterval = 4000;\n    this.showThumbnails = true;\n    this.thumbnailsPosition = \"bottom\";\n    this.verticalThumbnailViewPortHeight = \"300px\";\n    this.showIndicators = false;\n    this.showIndicatorsOnItem = false;\n    this.indicatorsPosition = \"bottom\";\n    this.baseZIndex = 0;\n    this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n    this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n    this.activeIndexChange = new EventEmitter();\n    this.visibleChange = new EventEmitter();\n    this._visible = false;\n    this._activeIndex = 0;\n    this.maskVisible = false;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n  }\n\n  get visible() {\n    return this._visible;\n  }\n\n  set visible(visible) {\n    this._visible = visible;\n\n    if (this._visible && !this.maskVisible) {\n      this.maskVisible = true;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'header':\n          this.headerFacet = item.template;\n          break;\n\n        case 'footer':\n          this.footerFacet = item.template;\n          break;\n\n        case 'indicator':\n          this.indicatorFacet = item.template;\n          break;\n\n        case 'caption':\n          this.captionFacet = item.template;\n          break;\n      }\n    });\n  }\n\n  ngOnChanges(simpleChanges) {\n    if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n      this.numVisible = simpleChanges.value.currentValue.length;\n    }\n  }\n\n  onMaskHide() {\n    this.visible = false;\n    this.visibleChange.emit(false);\n  }\n\n  onActiveItemChange(index) {\n    if (this.activeIndex !== index) {\n      this.activeIndex = index;\n      this.activeIndexChange.emit(index);\n    }\n  }\n\n  onAnimationStart(event) {\n    switch (event.toState) {\n      case 'visible':\n        this.enableModality();\n        break;\n\n      case 'void':\n        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n        break;\n    }\n  }\n\n  onAnimationEnd(event) {\n    switch (event.toState) {\n      case 'void':\n        this.disableModality();\n        break;\n    }\n  }\n\n  enableModality() {\n    DomHandler.addClass(document.body, 'p-overflow-hidden');\n    this.cd.markForCheck();\n\n    if (this.mask) {\n      ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n    }\n  }\n\n  disableModality() {\n    DomHandler.removeClass(document.body, 'p-overflow-hidden');\n    this.maskVisible = false;\n    this.cd.markForCheck();\n\n    if (this.mask) {\n      ZIndexUtils.clear(this.mask.nativeElement);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.fullScreen) {\n      DomHandler.removeClass(document.body, 'p-overflow-hidden');\n    }\n\n    if (this.mask) {\n      this.disableModality();\n    }\n  }\n\n}\n\nGalleria.ɵfac = function Galleria_Factory(t) {\n  return new (t || Galleria)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.PrimeNGConfig));\n};\n\nGalleria.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Galleria,\n  selectors: [[\"p-galleria\"]],\n  contentQueries: function Galleria_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Galleria_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mask = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    activeIndex: \"activeIndex\",\n    fullScreen: \"fullScreen\",\n    id: \"id\",\n    value: \"value\",\n    numVisible: \"numVisible\",\n    responsiveOptions: \"responsiveOptions\",\n    showItemNavigators: \"showItemNavigators\",\n    showThumbnailNavigators: \"showThumbnailNavigators\",\n    showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\",\n    changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\",\n    circular: \"circular\",\n    autoPlay: \"autoPlay\",\n    transitionInterval: \"transitionInterval\",\n    showThumbnails: \"showThumbnails\",\n    thumbnailsPosition: \"thumbnailsPosition\",\n    verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\",\n    showIndicators: \"showIndicators\",\n    showIndicatorsOnItem: \"showIndicatorsOnItem\",\n    indicatorsPosition: \"indicatorsPosition\",\n    baseZIndex: \"baseZIndex\",\n    maskClass: \"maskClass\",\n    containerClass: \"containerClass\",\n    containerStyle: \"containerStyle\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\",\n    visible: \"visible\"\n  },\n  outputs: {\n    activeIndexChange: \"activeIndexChange\",\n    visibleChange: \"visibleChange\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature],\n  decls: 3,\n  vars: 2,\n  consts: [[4, \"ngIf\", \"ngIfElse\"], [\"windowed\", \"\"], [3, \"ngClass\", \"class\", 4, \"ngIf\"], [3, \"ngClass\"], [\"mask\", \"\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"ngStyle\", \"maskHide\", \"activeItemChange\", 4, \"ngIf\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"ngStyle\", \"maskHide\", \"activeItemChange\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"activeItemChange\"]],\n  template: function Galleria_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, Galleria_div_0_Template, 2, 1, \"div\", 0);\n      i0.ɵɵtemplate(1, Galleria_ng_template_1_Template, 1, 3, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n    }\n\n    if (rf & 2) {\n      const _r1 = i0.ɵɵreference(2);\n\n      i0.ɵɵproperty(\"ngIf\", ctx.fullScreen)(\"ngIfElse\", _r1);\n    }\n  },\n  directives: function () {\n    return [i2.NgIf, i2.NgClass, GalleriaContent, i2.NgStyle];\n  },\n  styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('animation', [transition('void => visible', [style({\n      transform: 'scale(0.7)',\n      opacity: 0\n    }), animate('{{showTransitionParams}}')]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n      transform: 'scale(0.7)',\n      opacity: 0\n    }))])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Galleria, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleria',\n      template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `,\n      animations: [trigger('animation', [transition('void => visible', [style({\n        transform: 'scale(0.7)',\n        opacity: 0\n      }), animate('{{showTransitionParams}}')]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n        transform: 'scale(0.7)',\n        opacity: 0\n      }))])])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i1.PrimeNGConfig\n    }];\n  }, {\n    activeIndex: [{\n      type: Input\n    }],\n    fullScreen: [{\n      type: Input\n    }],\n    id: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    showItemNavigators: [{\n      type: Input\n    }],\n    showThumbnailNavigators: [{\n      type: Input\n    }],\n    showItemNavigatorsOnHover: [{\n      type: Input\n    }],\n    changeItemOnIndicatorHover: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    autoPlay: [{\n      type: Input\n    }],\n    transitionInterval: [{\n      type: Input\n    }],\n    showThumbnails: [{\n      type: Input\n    }],\n    thumbnailsPosition: [{\n      type: Input\n    }],\n    verticalThumbnailViewPortHeight: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    showIndicatorsOnItem: [{\n      type: Input\n    }],\n    indicatorsPosition: [{\n      type: Input\n    }],\n    baseZIndex: [{\n      type: Input\n    }],\n    maskClass: [{\n      type: Input\n    }],\n    containerClass: [{\n      type: Input\n    }],\n    containerStyle: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    mask: [{\n      type: ViewChild,\n      args: ['mask']\n    }],\n    visible: [{\n      type: Input\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    visibleChange: [{\n      type: Output\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass GalleriaContent {\n  constructor(galleria, cd) {\n    this.galleria = galleria;\n    this.cd = cd;\n    this.value = [];\n    this.maskHide = new EventEmitter();\n    this.activeItemChange = new EventEmitter();\n    this.id = this.galleria.id || UniqueComponentId();\n    this.slideShowActicve = false;\n    this._activeIndex = 0;\n    this.slideShowActive = true;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n  }\n\n  galleriaClass() {\n    const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n    const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n    return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n  }\n\n  startSlideShow() {\n    this.interval = setInterval(() => {\n      let activeIndex = this.galleria.circular && this.value.length - 1 === this.activeIndex ? 0 : this.activeIndex + 1;\n      this.onActiveIndexChange(activeIndex);\n      this.activeIndex = activeIndex;\n    }, this.galleria.transitionInterval);\n    this.slideShowActive = true;\n  }\n\n  stopSlideShow() {\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n\n    this.slideShowActive = false;\n  }\n\n  getPositionClass(preClassName, position) {\n    const positions = ['top', 'left', 'bottom', 'right'];\n    const pos = positions.find(item => item === position);\n    return pos ? `${preClassName}-${pos}` : '';\n  }\n\n  isVertical() {\n    return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n  }\n\n  onActiveIndexChange(index) {\n    if (this.activeIndex !== index) {\n      this.activeIndex = index;\n      this.activeItemChange.emit(this.activeIndex);\n    }\n  }\n\n}\n\nGalleriaContent.ɵfac = function GalleriaContent_Factory(t) {\n  return new (t || GalleriaContent)(i0.ɵɵdirectiveInject(Galleria), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nGalleriaContent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaContent,\n  selectors: [[\"p-galleriaContent\"]],\n  inputs: {\n    activeIndex: \"activeIndex\",\n    value: \"value\",\n    numVisible: \"numVisible\"\n  },\n  outputs: {\n    maskHide: \"maskHide\",\n    activeItemChange: \"activeItemChange\"\n  },\n  decls: 1,\n  vars: 1,\n  consts: [[3, \"ngClass\", \"ngStyle\", \"class\", 4, \"ngIf\"], [3, \"ngClass\", \"ngStyle\"], [\"type\", \"button\", \"class\", \"p-galleria-close p-link\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"p-galleria-header\", 4, \"ngIf\"], [1, \"p-galleria-content\"], [3, \"value\", \"activeIndex\", \"circular\", \"templates\", \"showIndicators\", \"changeItemOnIndicatorHover\", \"indicatorFacet\", \"captionFacet\", \"showItemNavigators\", \"autoPlay\", \"slideShowActive\", \"onActiveIndexChange\", \"startSlideShow\", \"stopSlideShow\"], [3, \"containerId\", \"value\", \"activeIndex\", \"templates\", \"numVisible\", \"responsiveOptions\", \"circular\", \"isVertical\", \"contentHeight\", \"showThumbnailNavigators\", \"slideShowActive\", \"onActiveIndexChange\", \"stopSlideShow\", 4, \"ngIf\"], [\"class\", \"p-galleria-footer\", 4, \"ngIf\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-galleria-close\", \"p-link\", 3, \"click\"], [1, \"p-galleria-close-icon\", \"pi\", \"pi-times\"], [1, \"p-galleria-header\"], [\"type\", \"header\", 3, \"templates\"], [3, \"containerId\", \"value\", \"activeIndex\", \"templates\", \"numVisible\", \"responsiveOptions\", \"circular\", \"isVertical\", \"contentHeight\", \"showThumbnailNavigators\", \"slideShowActive\", \"onActiveIndexChange\", \"stopSlideShow\"], [1, \"p-galleria-footer\"], [\"type\", \"footer\", 3, \"templates\"]],\n  template: function GalleriaContent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, GalleriaContent_div_0_Template, 7, 25, \"div\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", ctx.value && ctx.value.length > 0);\n    }\n  },\n  directives: function () {\n    return [i2.NgIf, i2.NgClass, i2.NgStyle, GalleriaItem, i3.Ripple, GalleriaItemSlot, GalleriaThumbnails];\n  },\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaContent, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaContent',\n      template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], function () {\n    return [{\n      type: Galleria\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    activeIndex: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    maskHide: [{\n      type: Output\n    }],\n    activeItemChange: [{\n      type: Output\n    }]\n  });\n})();\n\nclass GalleriaItemSlot {\n  get item() {\n    return this._item;\n  }\n\n  set item(item) {\n    this._item = item;\n\n    if (this.templates) {\n      this.templates.forEach(item => {\n        if (item.getType() === this.type) {\n          switch (this.type) {\n            case 'item':\n            case 'caption':\n            case 'thumbnail':\n              this.context = {\n                $implicit: this.item\n              };\n              this.contentTemplate = item.template;\n              break;\n          }\n        }\n      });\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      if (item.getType() === this.type) {\n        switch (this.type) {\n          case 'item':\n          case 'caption':\n          case 'thumbnail':\n            this.context = {\n              $implicit: this.item\n            };\n            this.contentTemplate = item.template;\n            break;\n\n          case 'indicator':\n            this.context = {\n              $implicit: this.index\n            };\n            this.contentTemplate = item.template;\n            break;\n\n          default:\n            this.context = {};\n            this.contentTemplate = item.template;\n            break;\n        }\n      }\n    });\n  }\n\n}\n\nGalleriaItemSlot.ɵfac = function GalleriaItemSlot_Factory(t) {\n  return new (t || GalleriaItemSlot)();\n};\n\nGalleriaItemSlot.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaItemSlot,\n  selectors: [[\"p-galleriaItemSlot\"]],\n  inputs: {\n    templates: \"templates\",\n    index: \"index\",\n    item: \"item\",\n    type: \"type\"\n  },\n  decls: 1,\n  vars: 1,\n  consts: [[4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n  template: function GalleriaItemSlot_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, GalleriaItemSlot_ng_container_0_Template, 2, 2, \"ng-container\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", ctx.contentTemplate);\n    }\n  },\n  directives: [i2.NgIf, i2.NgTemplateOutlet],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaItemSlot, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaItemSlot',\n      template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], null, {\n    templates: [{\n      type: Input\n    }],\n    index: [{\n      type: Input\n    }],\n    item: [{\n      type: Input\n    }],\n    type: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaItem {\n  constructor() {\n    this.circular = false;\n    this.showItemNavigators = false;\n    this.showIndicators = true;\n    this.slideShowActive = true;\n    this.changeItemOnIndicatorHover = true;\n    this.autoPlay = false;\n    this.startSlideShow = new EventEmitter();\n    this.stopSlideShow = new EventEmitter();\n    this.onActiveIndexChange = new EventEmitter();\n    this._activeIndex = 0;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n    this.activeItem = this.value[this._activeIndex];\n  }\n\n  ngOnInit() {\n    if (this.autoPlay) {\n      this.startSlideShow.emit();\n    }\n  }\n\n  next() {\n    let nextItemIndex = this.activeIndex + 1;\n    let activeIndex = this.circular && this.value.length - 1 === this.activeIndex ? 0 : nextItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n  }\n\n  prev() {\n    let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n    let activeIndex = this.circular && this.activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n  }\n\n  stopTheSlideShow() {\n    if (this.slideShowActive && this.stopSlideShow) {\n      this.stopSlideShow.emit();\n    }\n  }\n\n  navForward(e) {\n    this.stopTheSlideShow();\n    this.next();\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e) {\n    this.stopTheSlideShow();\n    this.prev();\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onIndicatorClick(index) {\n    this.stopTheSlideShow();\n    this.onActiveIndexChange.emit(index);\n  }\n\n  onIndicatorMouseEnter(index) {\n    if (this.changeItemOnIndicatorHover) {\n      this.stopTheSlideShow();\n      this.onActiveIndexChange.emit(index);\n    }\n  }\n\n  onIndicatorKeyDown(index) {\n    this.stopTheSlideShow();\n    this.onActiveIndexChange.emit(index);\n  }\n\n  isNavForwardDisabled() {\n    return !this.circular && this.activeIndex === this.value.length - 1;\n  }\n\n  isNavBackwardDisabled() {\n    return !this.circular && this.activeIndex === 0;\n  }\n\n  isIndicatorItemActive(index) {\n    return this.activeIndex === index;\n  }\n\n}\n\nGalleriaItem.ɵfac = function GalleriaItem_Factory(t) {\n  return new (t || GalleriaItem)();\n};\n\nGalleriaItem.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaItem,\n  selectors: [[\"p-galleriaItem\"]],\n  inputs: {\n    circular: \"circular\",\n    value: \"value\",\n    showItemNavigators: \"showItemNavigators\",\n    showIndicators: \"showIndicators\",\n    slideShowActive: \"slideShowActive\",\n    changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\",\n    autoPlay: \"autoPlay\",\n    templates: \"templates\",\n    indicatorFacet: \"indicatorFacet\",\n    captionFacet: \"captionFacet\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    startSlideShow: \"startSlideShow\",\n    stopSlideShow: \"stopSlideShow\",\n    onActiveIndexChange: \"onActiveIndexChange\"\n  },\n  decls: 7,\n  vars: 6,\n  consts: [[1, \"p-galleria-item-wrapper\"], [1, \"p-galleria-item-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"item\", 1, \"p-galleria-item\", 3, \"item\", \"templates\"], [\"class\", \"p-galleria-caption\", 4, \"ngIf\"], [\"class\", \"p-galleria-indicators p-reset\", 4, \"ngIf\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [1, \"p-galleria-item-prev-icon\", \"pi\", \"pi-chevron-left\"], [1, \"p-galleria-item-next-icon\", \"pi\", \"pi-chevron-right\"], [1, \"p-galleria-caption\"], [\"type\", \"caption\", 3, \"item\", \"templates\"], [1, \"p-galleria-indicators\", \"p-reset\"], [\"tabindex\", \"0\", 3, \"ngClass\", \"click\", \"mouseenter\", \"keydown.enter\", 4, \"ngFor\", \"ngForOf\"], [\"tabindex\", \"0\", 3, \"ngClass\", \"click\", \"mouseenter\", \"keydown.enter\"], [\"type\", \"button\", \"tabIndex\", \"-1\", \"class\", \"p-link\", 4, \"ngIf\"], [\"type\", \"indicator\", 3, \"index\", \"templates\"], [\"type\", \"button\", \"tabIndex\", \"-1\", 1, \"p-link\"]],\n  template: function GalleriaItem_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, GalleriaItem_button_2_Template, 2, 4, \"button\", 2);\n      i0.ɵɵelement(3, \"p-galleriaItemSlot\", 3);\n      i0.ɵɵtemplate(4, GalleriaItem_button_4_Template, 2, 4, \"button\", 2);\n      i0.ɵɵtemplate(5, GalleriaItem_div_5_Template, 2, 2, \"div\", 4);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(6, GalleriaItem_ul_6_Template, 2, 1, \"ul\", 5);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showItemNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"item\", ctx.activeItem)(\"templates\", ctx.templates);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showItemNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.captionFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showIndicators);\n    }\n  },\n  directives: [i2.NgIf, GalleriaItemSlot, i3.Ripple, i2.NgClass, i2.NgForOf],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaItem, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaItem',\n      template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], null, {\n    circular: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    showItemNavigators: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    slideShowActive: [{\n      type: Input\n    }],\n    changeItemOnIndicatorHover: [{\n      type: Input\n    }],\n    autoPlay: [{\n      type: Input\n    }],\n    templates: [{\n      type: Input\n    }],\n    indicatorFacet: [{\n      type: Input\n    }],\n    captionFacet: [{\n      type: Input\n    }],\n    startSlideShow: [{\n      type: Output\n    }],\n    stopSlideShow: [{\n      type: Output\n    }],\n    onActiveIndexChange: [{\n      type: Output\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaThumbnails {\n  constructor(cd) {\n    this.cd = cd;\n    this.isVertical = false;\n    this.slideShowActive = false;\n    this.circular = false;\n    this.contentHeight = \"300px\";\n    this.showThumbnailNavigators = true;\n    this.onActiveIndexChange = new EventEmitter();\n    this.stopSlideShow = new EventEmitter();\n    this.startPos = null;\n    this.thumbnailsStyle = null;\n    this.sortedResponsiveOptions = null;\n    this.totalShiftedItems = 0;\n    this.page = 0;\n    this._numVisible = 0;\n    this.d_numVisible = 0;\n    this._oldNumVisible = 0;\n    this._activeIndex = 0;\n    this._oldactiveIndex = 0;\n  }\n\n  get numVisible() {\n    return this._numVisible;\n  }\n\n  set numVisible(numVisible) {\n    this._numVisible = numVisible;\n    this._oldNumVisible = this.d_numVisible;\n    this.d_numVisible = numVisible;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._oldactiveIndex = this._activeIndex;\n    this._activeIndex = activeIndex;\n  }\n\n  ngOnInit() {\n    this.createStyle();\n\n    if (this.responsiveOptions) {\n      this.bindDocumentListeners();\n    }\n  }\n\n  ngAfterContentChecked() {\n    let totalShiftedItems = this.totalShiftedItems;\n\n    if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n      if (this._activeIndex <= this.getMedianItemIndex()) {\n        totalShiftedItems = 0;\n      } else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n        totalShiftedItems = this.d_numVisible - this.value.length;\n      } else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n        totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex() + 1;\n      } else {\n        totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex();\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n\n      if (this.itemsContainer && this.itemsContainer.nativeElement) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n      }\n\n      if (this._oldactiveIndex !== this._activeIndex) {\n        DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n        this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n      }\n\n      this._oldactiveIndex = this._activeIndex;\n      this._oldNumVisible = this.d_numVisible;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.calculatePosition();\n  }\n\n  createStyle() {\n    if (!this.thumbnailsStyle) {\n      this.thumbnailsStyle = document.createElement('style');\n      this.thumbnailsStyle.type = 'text/css';\n      document.body.appendChild(this.thumbnailsStyle);\n    }\n\n    let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${100 / this.d_numVisible}%\n            }\n        `;\n\n    if (this.responsiveOptions) {\n      this.sortedResponsiveOptions = [...this.responsiveOptions];\n      this.sortedResponsiveOptions.sort((data1, data2) => {\n        const value1 = data1.breakpoint;\n        const value2 = data2.breakpoint;\n        let result = null;\n        if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n          numeric: true\n        });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n        return -1 * result;\n      });\n\n      for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n        let res = this.sortedResponsiveOptions[i];\n        innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${100 / res.numVisible}%\n                        }\n                    }\n                `;\n      }\n    }\n\n    this.thumbnailsStyle.innerHTML = innerHTML;\n  }\n\n  calculatePosition() {\n    if (this.itemsContainer && this.sortedResponsiveOptions) {\n      let windowWidth = window.innerWidth;\n      let matchedResponsiveData = {\n        numVisible: this._numVisible\n      };\n\n      for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n        let res = this.sortedResponsiveOptions[i];\n\n        if (parseInt(res.breakpoint, 10) >= windowWidth) {\n          matchedResponsiveData = res;\n        }\n      }\n\n      if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n        this.d_numVisible = matchedResponsiveData.numVisible;\n        this.cd.markForCheck();\n      }\n    }\n  }\n\n  getTabIndex(index) {\n    return this.isItemActive(index) ? 0 : null;\n  }\n\n  navForward(e) {\n    this.stopTheSlideShow();\n    let nextItemIndex = this._activeIndex + 1;\n\n    if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.totalShiftedItems < this.getTotalPageNumber() - 1 || this.circular)) {\n      this.step(-1);\n    }\n\n    let activeIndex = this.circular && this.value.length - 1 === this._activeIndex ? 0 : nextItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e) {\n    this.stopTheSlideShow();\n    let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n    let diff = prevItemIndex + this.totalShiftedItems;\n\n    if (this.d_numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.totalShiftedItems !== 0 || this.circular)) {\n      this.step(1);\n    }\n\n    let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onItemClick(index) {\n    this.stopTheSlideShow();\n    let selectedItemIndex = index;\n\n    if (selectedItemIndex !== this._activeIndex) {\n      const diff = selectedItemIndex + this.totalShiftedItems;\n      let dir = 0;\n\n      if (selectedItemIndex < this._activeIndex) {\n        dir = this.d_numVisible - diff - 1 - this.getMedianItemIndex();\n\n        if (dir > 0 && -1 * this.totalShiftedItems !== 0) {\n          this.step(dir);\n        }\n      } else {\n        dir = this.getMedianItemIndex() - diff;\n\n        if (dir < 0 && -1 * this.totalShiftedItems < this.getTotalPageNumber() - 1) {\n          this.step(dir);\n        }\n      }\n\n      this.activeIndex = selectedItemIndex;\n      this.onActiveIndexChange.emit(this.activeIndex);\n    }\n  }\n\n  step(dir) {\n    let totalShiftedItems = this.totalShiftedItems + dir;\n\n    if (dir < 0 && -1 * totalShiftedItems + this.d_numVisible > this.value.length - 1) {\n      totalShiftedItems = this.d_numVisible - this.value.length;\n    } else if (dir > 0 && totalShiftedItems > 0) {\n      totalShiftedItems = 0;\n    }\n\n    if (this.circular) {\n      if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n        totalShiftedItems = 0;\n      } else if (dir > 0 && this._activeIndex === 0) {\n        totalShiftedItems = this.d_numVisible - this.value.length;\n      }\n    }\n\n    if (this.itemsContainer) {\n      DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n      this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n      this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n    }\n\n    this.totalShiftedItems = totalShiftedItems;\n  }\n\n  stopTheSlideShow() {\n    if (this.slideShowActive && this.stopSlideShow) {\n      this.stopSlideShow.emit();\n    }\n  }\n\n  changePageOnTouch(e, diff) {\n    if (diff < 0) {\n      // left\n      this.navForward(e);\n    } else {\n      // right\n      this.navBackward(e);\n    }\n  }\n\n  getTotalPageNumber() {\n    return this.value.length > this.d_numVisible ? this.value.length - this.d_numVisible + 1 : 0;\n  }\n\n  getMedianItemIndex() {\n    let index = Math.floor(this.d_numVisible / 2);\n    return this.d_numVisible % 2 ? index : index - 1;\n  }\n\n  onTransitionEnd() {\n    if (this.itemsContainer && this.itemsContainer.nativeElement) {\n      DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n      this.itemsContainer.nativeElement.style.transition = '';\n    }\n  }\n\n  onTouchEnd(e) {\n    let touchobj = e.changedTouches[0];\n\n    if (this.isVertical) {\n      this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n    } else {\n      this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n    }\n  }\n\n  onTouchMove(e) {\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onTouchStart(e) {\n    let touchobj = e.changedTouches[0];\n    this.startPos = {\n      x: touchobj.pageX,\n      y: touchobj.pageY\n    };\n  }\n\n  isNavBackwardDisabled() {\n    return !this.circular && this._activeIndex === 0 || this.value.length <= this.d_numVisible;\n  }\n\n  isNavForwardDisabled() {\n    return !this.circular && this._activeIndex === this.value.length - 1 || this.value.length <= this.d_numVisible;\n  }\n\n  firstItemAciveIndex() {\n    return this.totalShiftedItems * -1;\n  }\n\n  lastItemActiveIndex() {\n    return this.firstItemAciveIndex() + this.d_numVisible - 1;\n  }\n\n  isItemActive(index) {\n    return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n  }\n\n  bindDocumentListeners() {\n    if (!this.documentResizeListener) {\n      this.documentResizeListener = () => {\n        this.calculatePosition();\n      };\n\n      window.addEventListener('resize', this.documentResizeListener);\n    }\n  }\n\n  unbindDocumentListeners() {\n    if (this.documentResizeListener) {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.responsiveOptions) {\n      this.unbindDocumentListeners();\n    }\n\n    if (this.thumbnailsStyle) {\n      this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n    }\n  }\n\n}\n\nGalleriaThumbnails.ɵfac = function GalleriaThumbnails_Factory(t) {\n  return new (t || GalleriaThumbnails)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nGalleriaThumbnails.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaThumbnails,\n  selectors: [[\"p-galleriaThumbnails\"]],\n  viewQuery: function GalleriaThumbnails_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c9, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsContainer = _t.first);\n    }\n  },\n  inputs: {\n    containerId: \"containerId\",\n    value: \"value\",\n    isVertical: \"isVertical\",\n    slideShowActive: \"slideShowActive\",\n    circular: \"circular\",\n    responsiveOptions: \"responsiveOptions\",\n    contentHeight: \"contentHeight\",\n    showThumbnailNavigators: \"showThumbnailNavigators\",\n    templates: \"templates\",\n    numVisible: \"numVisible\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onActiveIndexChange: \"onActiveIndexChange\",\n    stopSlideShow: \"stopSlideShow\"\n  },\n  decls: 8,\n  vars: 6,\n  consts: [[1, \"p-galleria-thumbnail-wrapper\"], [1, \"p-galleria-thumbnail-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [1, \"p-galleria-thumbnail-items-container\", 3, \"ngStyle\"], [1, \"p-galleria-thumbnail-items\", 3, \"transitionend\", \"touchstart\", \"touchmove\", \"touchend\"], [\"itemsContainer\", \"\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [3, \"ngClass\"], [1, \"p-galleria-thumbnail-item-content\", 3, \"click\", \"keydown.enter\"], [\"type\", \"thumbnail\", 3, \"item\", \"templates\"]],\n  template: function GalleriaThumbnails_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, GalleriaThumbnails_button_2_Template, 2, 8, \"button\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3);\n      i0.ɵɵelementStart(4, \"div\", 4, 5);\n      i0.ɵɵlistener(\"transitionend\", function GalleriaThumbnails_Template_div_transitionend_4_listener() {\n        return ctx.onTransitionEnd();\n      })(\"touchstart\", function GalleriaThumbnails_Template_div_touchstart_4_listener($event) {\n        return ctx.onTouchStart($event);\n      })(\"touchmove\", function GalleriaThumbnails_Template_div_touchmove_4_listener($event) {\n        return ctx.onTouchMove($event);\n      })(\"touchend\", function GalleriaThumbnails_Template_div_touchend_4_listener($event) {\n        return ctx.onTouchEnd($event);\n      });\n      i0.ɵɵtemplate(6, GalleriaThumbnails_div_6_Template, 3, 9, \"div\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(7, GalleriaThumbnails_button_7_Template, 2, 8, \"button\", 2);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showThumbnailNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(4, _c15, ctx.isVertical ? ctx.contentHeight : \"\"));\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngForOf\", ctx.value);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showThumbnailNavigators);\n    }\n  },\n  directives: [i2.NgIf, i2.NgStyle, i2.NgForOf, i3.Ripple, i2.NgClass, GalleriaItemSlot],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaThumbnails, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaThumbnails',\n      template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], function () {\n    return [{\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    containerId: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    isVertical: [{\n      type: Input\n    }],\n    slideShowActive: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    contentHeight: [{\n      type: Input\n    }],\n    showThumbnailNavigators: [{\n      type: Input\n    }],\n    templates: [{\n      type: Input\n    }],\n    onActiveIndexChange: [{\n      type: Output\n    }],\n    stopSlideShow: [{\n      type: Output\n    }],\n    itemsContainer: [{\n      type: ViewChild,\n      args: ['itemsContainer']\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaModule {}\n\nGalleriaModule.ɵfac = function GalleriaModule_Factory(t) {\n  return new (t || GalleriaModule)();\n};\n\nGalleriaModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: GalleriaModule\n});\nGalleriaModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, RippleModule],\n      exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n      declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs"],"names":["i0","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","ViewChild","Output","ContentChildren","NgModule","i2","CommonModule","i1","PrimeTemplate","SharedModule","ZIndexUtils","UniqueComponentId","DomHandler","i3","RippleModule","trigger","transition","style","animate","Galleria","constructor","element","cd","config","fullScreen","numVisible","showItemNavigators","showThumbnailNavigators","showItemNavigatorsOnHover","changeItemOnIndicatorHover","circular","autoPlay","transitionInterval","showThumbnails","thumbnailsPosition","verticalThumbnailViewPortHeight","showIndicators","showIndicatorsOnItem","indicatorsPosition","baseZIndex","showTransitionOptions","hideTransitionOptions","activeIndexChange","visibleChange","_visible","_activeIndex","maskVisible","activeIndex","visible","ngAfterContentInit","templates","forEach","item","getType","headerFacet","template","footerFacet","indicatorFacet","captionFacet","ngOnChanges","simpleChanges","value","currentValue","length","onMaskHide","emit","onActiveItemChange","index","onAnimationStart","event","toState","enableModality","addClass","mask","nativeElement","onAnimationEnd","disableModality","document","body","markForCheck","set","zIndex","modal","removeClass","clear","ngOnDestroy","ɵfac","ElementRef","ChangeDetectorRef","PrimeNGConfig","ɵcmp","NgIf","NgClass","GalleriaContent","NgStyle","transform","opacity","type","args","selector","animations","changeDetection","OnPush","encapsulation","None","host","styles","id","responsiveOptions","maskClass","containerClass","containerStyle","galleria","maskHide","activeItemChange","slideShowActicve","slideShowActive","galleriaClass","thumbnailsPosClass","getPositionClass","indicatorPosClass","startSlideShow","interval","setInterval","onActiveIndexChange","stopSlideShow","clearInterval","preClassName","position","positions","pos","find","isVertical","GalleriaItem","Ripple","GalleriaItemSlot","GalleriaThumbnails","_item","context","$implicit","contentTemplate","NgTemplateOutlet","activeItem","ngOnInit","next","nextItemIndex","prev","prevItemIndex","stopTheSlideShow","navForward","e","cancelable","preventDefault","navBackward","onIndicatorClick","onIndicatorMouseEnter","onIndicatorKeyDown","isNavForwardDisabled","isNavBackwardDisabled","isIndicatorItemActive","NgForOf","contentHeight","startPos","thumbnailsStyle","sortedResponsiveOptions","totalShiftedItems","page","_numVisible","d_numVisible","_oldNumVisible","_oldactiveIndex","createStyle","bindDocumentListeners","ngAfterContentChecked","itemsContainer","getMedianItemIndex","ngAfterViewInit","calculatePosition","createElement","appendChild","innerHTML","containerId","sort","data1","data2","value1","breakpoint","value2","result","localeCompare","undefined","numeric","i","res","windowWidth","window","innerWidth","matchedResponsiveData","parseInt","getTabIndex","isItemActive","getTotalPageNumber","step","diff","onItemClick","selectedItemIndex","dir","changePageOnTouch","Math","floor","onTransitionEnd","onTouchEnd","touchobj","changedTouches","pageY","y","pageX","x","onTouchMove","onTouchStart","firstItemAciveIndex","lastItemActiveIndex","documentResizeListener","addEventListener","unbindDocumentListeners","removeEventListener","parentNode","removeChild","GalleriaModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nclass Galleria {\n    constructor(element, cd, config) {\n        this.element = element;\n        this.cd = cd;\n        this.config = config;\n        this.fullScreen = false;\n        this.numVisible = 3;\n        this.showItemNavigators = false;\n        this.showThumbnailNavigators = true;\n        this.showItemNavigatorsOnHover = false;\n        this.changeItemOnIndicatorHover = false;\n        this.circular = false;\n        this.autoPlay = false;\n        this.transitionInterval = 4000;\n        this.showThumbnails = true;\n        this.thumbnailsPosition = \"bottom\";\n        this.verticalThumbnailViewPortHeight = \"300px\";\n        this.showIndicators = false;\n        this.showIndicatorsOnItem = false;\n        this.indicatorsPosition = \"bottom\";\n        this.baseZIndex = 0;\n        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n        this.activeIndexChange = new EventEmitter();\n        this.visibleChange = new EventEmitter();\n        this._visible = false;\n        this._activeIndex = 0;\n        this.maskVisible = false;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n    get visible() {\n        return this._visible;\n    }\n    ;\n    set visible(visible) {\n        this._visible = visible;\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerFacet = item.template;\n                    break;\n                case 'footer':\n                    this.footerFacet = item.template;\n                    break;\n                case 'indicator':\n                    this.indicatorFacet = item.template;\n                    break;\n                case 'caption':\n                    this.captionFacet = item.template;\n                    break;\n            }\n        });\n    }\n    ngOnChanges(simpleChanges) {\n        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n            this.numVisible = simpleChanges.value.currentValue.length;\n        }\n    }\n    onMaskHide() {\n        this.visible = false;\n        this.visibleChange.emit(false);\n    }\n    onActiveItemChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeIndexChange.emit(index);\n        }\n    }\n    onAnimationStart(event) {\n        switch (event.toState) {\n            case 'visible':\n                this.enableModality();\n                break;\n            case 'void':\n                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n                break;\n        }\n    }\n    onAnimationEnd(event) {\n        switch (event.toState) {\n            case 'void':\n                this.disableModality();\n                break;\n        }\n    }\n    enableModality() {\n        DomHandler.addClass(document.body, 'p-overflow-hidden');\n        this.cd.markForCheck();\n        if (this.mask) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n        }\n    }\n    disableModality() {\n        DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        this.maskVisible = false;\n        this.cd.markForCheck();\n        if (this.mask) {\n            ZIndexUtils.clear(this.mask.nativeElement);\n        }\n    }\n    ngOnDestroy() {\n        if (this.fullScreen) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n        if (this.mask) {\n            this.disableModality();\n        }\n    }\n}\nGalleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Galleria, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nGalleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Galleria, selector: \"p-galleria\", inputs: { activeIndex: \"activeIndex\", fullScreen: \"fullScreen\", id: \"id\", value: \"value\", numVisible: \"numVisible\", responsiveOptions: \"responsiveOptions\", showItemNavigators: \"showItemNavigators\", showThumbnailNavigators: \"showThumbnailNavigators\", showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", circular: \"circular\", autoPlay: \"autoPlay\", transitionInterval: \"transitionInterval\", showThumbnails: \"showThumbnails\", thumbnailsPosition: \"thumbnailsPosition\", verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\", showIndicators: \"showIndicators\", showIndicatorsOnItem: \"showIndicatorsOnItem\", indicatorsPosition: \"indicatorsPosition\", baseZIndex: \"baseZIndex\", maskClass: \"maskClass\", containerClass: \"containerClass\", containerStyle: \"containerStyle\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", visible: \"visible\" }, outputs: { activeIndexChange: \"activeIndexChange\", visibleChange: \"visibleChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"mask\", first: true, predicate: [\"mask\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `, isInline: true, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"], components: [{ type: i0.forwardRef(function () { return GalleriaContent; }), selector: \"p-galleriaContent\", inputs: [\"activeIndex\", \"value\", \"numVisible\"], outputs: [\"maskHide\", \"activeItemChange\"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Galleria, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-galleria', template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `, animations: [\n                        trigger('animation', [\n                            transition('void => visible', [\n                                style({ transform: 'scale(0.7)', opacity: 0 }),\n                                animate('{{showTransitionParams}}')\n                            ]),\n                            transition('visible => void', [\n                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n                            ])\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{\n                type: Input\n            }], fullScreen: [{\n                type: Input\n            }], id: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], showItemNavigators: [{\n                type: Input\n            }], showThumbnailNavigators: [{\n                type: Input\n            }], showItemNavigatorsOnHover: [{\n                type: Input\n            }], changeItemOnIndicatorHover: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], autoPlay: [{\n                type: Input\n            }], transitionInterval: [{\n                type: Input\n            }], showThumbnails: [{\n                type: Input\n            }], thumbnailsPosition: [{\n                type: Input\n            }], verticalThumbnailViewPortHeight: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], showIndicatorsOnItem: [{\n                type: Input\n            }], indicatorsPosition: [{\n                type: Input\n            }], baseZIndex: [{\n                type: Input\n            }], maskClass: [{\n                type: Input\n            }], containerClass: [{\n                type: Input\n            }], containerStyle: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], mask: [{\n                type: ViewChild,\n                args: ['mask']\n            }], visible: [{\n                type: Input\n            }], activeIndexChange: [{\n                type: Output\n            }], visibleChange: [{\n                type: Output\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass GalleriaContent {\n    constructor(galleria, cd) {\n        this.galleria = galleria;\n        this.cd = cd;\n        this.value = [];\n        this.maskHide = new EventEmitter();\n        this.activeItemChange = new EventEmitter();\n        this.id = this.galleria.id || UniqueComponentId();\n        this.slideShowActicve = false;\n        this._activeIndex = 0;\n        this.slideShowActive = true;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n    galleriaClass() {\n        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n        return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n    }\n    startSlideShow() {\n        this.interval = setInterval(() => {\n            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);\n            this.onActiveIndexChange(activeIndex);\n            this.activeIndex = activeIndex;\n        }, this.galleria.transitionInterval);\n        this.slideShowActive = true;\n    }\n    stopSlideShow() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n        this.slideShowActive = false;\n    }\n    getPositionClass(preClassName, position) {\n        const positions = ['top', 'left', 'bottom', 'right'];\n        const pos = positions.find(item => item === position);\n        return pos ? `${preClassName}-${pos}` : '';\n    }\n    isVertical() {\n        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n    }\n    onActiveIndexChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeItemChange.emit(this.activeIndex);\n        }\n    }\n}\nGalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaContent, selector: \"p-galleriaContent\", inputs: { activeIndex: \"activeIndex\", value: \"value\", numVisible: \"numVisible\" }, outputs: { maskHide: \"maskHide\", activeItemChange: \"activeItemChange\" }, ngImport: i0, template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `, isInline: true, components: [{ type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }, { type: i0.forwardRef(function () { return GalleriaItem; }), selector: \"p-galleriaItem\", inputs: [\"circular\", \"value\", \"showItemNavigators\", \"showIndicators\", \"slideShowActive\", \"changeItemOnIndicatorHover\", \"autoPlay\", \"templates\", \"indicatorFacet\", \"captionFacet\", \"activeIndex\"], outputs: [\"startSlideShow\", \"stopSlideShow\", \"onActiveIndexChange\"] }, { type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: \"p-galleriaThumbnails\", inputs: [\"containerId\", \"value\", \"isVertical\", \"slideShowActive\", \"circular\", \"responsiveOptions\", \"contentHeight\", \"showThumbnailNavigators\", \"templates\", \"numVisible\", \"activeIndex\"], outputs: [\"onActiveIndexChange\", \"stopSlideShow\"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i0.forwardRef(function () { return i3.Ripple; }), selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaContent, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaContent',\n                    template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], maskHide: [{\n                type: Output\n            }], activeItemChange: [{\n                type: Output\n            }] } });\nclass GalleriaItemSlot {\n    get item() {\n        return this._item;\n    }\n    ;\n    set item(item) {\n        this._item = item;\n        if (this.templates) {\n            this.templates.forEach((item) => {\n                if (item.getType() === this.type) {\n                    switch (this.type) {\n                        case 'item':\n                        case 'caption':\n                        case 'thumbnail':\n                            this.context = { $implicit: this.item };\n                            this.contentTemplate = item.template;\n                            break;\n                    }\n                }\n            });\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            if (item.getType() === this.type) {\n                switch (this.type) {\n                    case 'item':\n                    case 'caption':\n                    case 'thumbnail':\n                        this.context = { $implicit: this.item };\n                        this.contentTemplate = item.template;\n                        break;\n                    case 'indicator':\n                        this.context = { $implicit: this.index };\n                        this.contentTemplate = item.template;\n                        break;\n                    default:\n                        this.context = {};\n                        this.contentTemplate = item.template;\n                        break;\n                }\n            }\n        });\n    }\n}\nGalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: { templates: \"templates\", index: \"index\", item: \"item\", type: \"type\" }, ngImport: i0, template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItemSlot, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaItemSlot',\n                    template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], propDecorators: { templates: [{\n                type: Input\n            }], index: [{\n                type: Input\n            }], item: [{\n                type: Input\n            }], type: [{\n                type: Input\n            }] } });\nclass GalleriaItem {\n    constructor() {\n        this.circular = false;\n        this.showItemNavigators = false;\n        this.showIndicators = true;\n        this.slideShowActive = true;\n        this.changeItemOnIndicatorHover = true;\n        this.autoPlay = false;\n        this.startSlideShow = new EventEmitter();\n        this.stopSlideShow = new EventEmitter();\n        this.onActiveIndexChange = new EventEmitter();\n        this._activeIndex = 0;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n        this.activeItem = this.value[this._activeIndex];\n    }\n    ngOnInit() {\n        if (this.autoPlay) {\n            this.startSlideShow.emit();\n        }\n    }\n    next() {\n        let nextItemIndex = this.activeIndex + 1;\n        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex\n            ? 0\n            : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n    prev() {\n        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n        let activeIndex = this.circular && this.activeIndex === 0\n            ? this.value.length - 1\n            : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n    navForward(e) {\n        this.stopTheSlideShow();\n        this.next();\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e) {\n        this.stopTheSlideShow();\n        this.prev();\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onIndicatorClick(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n    onIndicatorMouseEnter(index) {\n        if (this.changeItemOnIndicatorHover) {\n            this.stopTheSlideShow();\n            this.onActiveIndexChange.emit(index);\n        }\n    }\n    onIndicatorKeyDown(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n    isNavForwardDisabled() {\n        return !this.circular && this.activeIndex === (this.value.length - 1);\n    }\n    isNavBackwardDisabled() {\n        return !this.circular && this.activeIndex === 0;\n    }\n    isIndicatorItemActive(index) {\n        return this.activeIndex === index;\n    }\n}\nGalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaItem, selector: \"p-galleriaItem\", inputs: { circular: \"circular\", value: \"value\", showItemNavigators: \"showItemNavigators\", showIndicators: \"showIndicators\", slideShowActive: \"slideShowActive\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", autoPlay: \"autoPlay\", templates: \"templates\", indicatorFacet: \"indicatorFacet\", captionFacet: \"captionFacet\", activeIndex: \"activeIndex\" }, outputs: { startSlideShow: \"startSlideShow\", stopSlideShow: \"stopSlideShow\", onActiveIndexChange: \"onActiveIndexChange\" }, ngImport: i0, template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.Ripple, selector: \"[pRipple]\" }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItem, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaItem',\n                    template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], propDecorators: { circular: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], showItemNavigators: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], slideShowActive: [{\n                type: Input\n            }], changeItemOnIndicatorHover: [{\n                type: Input\n            }], autoPlay: [{\n                type: Input\n            }], templates: [{\n                type: Input\n            }], indicatorFacet: [{\n                type: Input\n            }], captionFacet: [{\n                type: Input\n            }], startSlideShow: [{\n                type: Output\n            }], stopSlideShow: [{\n                type: Output\n            }], onActiveIndexChange: [{\n                type: Output\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass GalleriaThumbnails {\n    constructor(cd) {\n        this.cd = cd;\n        this.isVertical = false;\n        this.slideShowActive = false;\n        this.circular = false;\n        this.contentHeight = \"300px\";\n        this.showThumbnailNavigators = true;\n        this.onActiveIndexChange = new EventEmitter();\n        this.stopSlideShow = new EventEmitter();\n        this.startPos = null;\n        this.thumbnailsStyle = null;\n        this.sortedResponsiveOptions = null;\n        this.totalShiftedItems = 0;\n        this.page = 0;\n        this._numVisible = 0;\n        this.d_numVisible = 0;\n        this._oldNumVisible = 0;\n        this._activeIndex = 0;\n        this._oldactiveIndex = 0;\n    }\n    get numVisible() {\n        return this._numVisible;\n    }\n    ;\n    set numVisible(numVisible) {\n        this._numVisible = numVisible;\n        this._oldNumVisible = this.d_numVisible;\n        this.d_numVisible = numVisible;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._oldactiveIndex = this._activeIndex;\n        this._activeIndex = activeIndex;\n    }\n    ngOnInit() {\n        this.createStyle();\n        if (this.responsiveOptions) {\n            this.bindDocumentListeners();\n        }\n    }\n    ngAfterContentChecked() {\n        let totalShiftedItems = this.totalShiftedItems;\n        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n            if (this._activeIndex <= this.getMedianItemIndex()) {\n                totalShiftedItems = 0;\n            }\n            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;\n            }\n            else {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n            if (this.itemsContainer && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n            }\n            if (this._oldactiveIndex !== this._activeIndex) {\n                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n            }\n            this._oldactiveIndex = this._activeIndex;\n            this._oldNumVisible = this.d_numVisible;\n        }\n    }\n    ngAfterViewInit() {\n        this.calculatePosition();\n    }\n    createStyle() {\n        if (!this.thumbnailsStyle) {\n            this.thumbnailsStyle = document.createElement('style');\n            this.thumbnailsStyle.type = 'text/css';\n            document.body.appendChild(this.thumbnailsStyle);\n        }\n        let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${(100 / this.d_numVisible)}%\n            }\n        `;\n        if (this.responsiveOptions) {\n            this.sortedResponsiveOptions = [...this.responsiveOptions];\n            this.sortedResponsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n                return -1 * result;\n            });\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${(100 / res.numVisible)}%\n                        }\n                    }\n                `;\n            }\n        }\n        this.thumbnailsStyle.innerHTML = innerHTML;\n    }\n    calculatePosition() {\n        if (this.itemsContainer && this.sortedResponsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this._numVisible\n            };\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n            if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n                this.d_numVisible = matchedResponsiveData.numVisible;\n                this.cd.markForCheck();\n            }\n        }\n    }\n    getTabIndex(index) {\n        return this.isItemActive(index) ? 0 : null;\n    }\n    navForward(e) {\n        this.stopTheSlideShow();\n        let nextItemIndex = this._activeIndex + 1;\n        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {\n            this.step(-1);\n        }\n        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e) {\n        this.stopTheSlideShow();\n        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n        let diff = prevItemIndex + this.totalShiftedItems;\n        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {\n            this.step(1);\n        }\n        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onItemClick(index) {\n        this.stopTheSlideShow();\n        let selectedItemIndex = index;\n        if (selectedItemIndex !== this._activeIndex) {\n            const diff = selectedItemIndex + this.totalShiftedItems;\n            let dir = 0;\n            if (selectedItemIndex < this._activeIndex) {\n                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();\n                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {\n                    this.step(dir);\n                }\n            }\n            else {\n                dir = this.getMedianItemIndex() - diff;\n                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {\n                    this.step(dir);\n                }\n            }\n            this.activeIndex = selectedItemIndex;\n            this.onActiveIndexChange.emit(this.activeIndex);\n        }\n    }\n    step(dir) {\n        let totalShiftedItems = this.totalShiftedItems + dir;\n        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {\n            totalShiftedItems = this.d_numVisible - this.value.length;\n        }\n        else if (dir > 0 && totalShiftedItems > 0) {\n            totalShiftedItems = 0;\n        }\n        if (this.circular) {\n            if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n                totalShiftedItems = 0;\n            }\n            else if (dir > 0 && this._activeIndex === 0) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n        }\n        if (this.itemsContainer) {\n            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n        this.totalShiftedItems = totalShiftedItems;\n    }\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n    changePageOnTouch(e, diff) {\n        if (diff < 0) { // left\n            this.navForward(e);\n        }\n        else { // right\n            this.navBackward(e);\n        }\n    }\n    getTotalPageNumber() {\n        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;\n    }\n    getMedianItemIndex() {\n        let index = Math.floor(this.d_numVisible / 2);\n        return (this.d_numVisible % 2) ? index : index - 1;\n    }\n    onTransitionEnd() {\n        if (this.itemsContainer && this.itemsContainer.nativeElement) {\n            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transition = '';\n        }\n    }\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n        if (this.isVertical) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n    isNavBackwardDisabled() {\n        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);\n    }\n    isNavForwardDisabled() {\n        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);\n    }\n    firstItemAciveIndex() {\n        return this.totalShiftedItems * -1;\n    }\n    lastItemActiveIndex() {\n        return this.firstItemAciveIndex() + this.d_numVisible - 1;\n    }\n    isItemActive(index) {\n        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n    }\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = () => {\n                this.calculatePosition();\n            };\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n    unbindDocumentListeners() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n            this.unbindDocumentListeners();\n        }\n        if (this.thumbnailsStyle) {\n            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n        }\n    }\n}\nGalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaThumbnails, selector: \"p-galleriaThumbnails\", inputs: { containerId: \"containerId\", value: \"value\", isVertical: \"isVertical\", slideShowActive: \"slideShowActive\", circular: \"circular\", responsiveOptions: \"responsiveOptions\", contentHeight: \"contentHeight\", showThumbnailNavigators: \"showThumbnailNavigators\", templates: \"templates\", numVisible: \"numVisible\", activeIndex: \"activeIndex\" }, outputs: { onActiveIndexChange: \"onActiveIndexChange\", stopSlideShow: \"stopSlideShow\" }, viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], ngImport: i0, template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.Ripple, selector: \"[pRipple]\" }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaThumbnails, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaThumbnails',\n                    template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], isVertical: [{\n                type: Input\n            }], slideShowActive: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], contentHeight: [{\n                type: Input\n            }], showThumbnailNavigators: [{\n                type: Input\n            }], templates: [{\n                type: Input\n            }], onActiveIndexChange: [{\n                type: Output\n            }], stopSlideShow: [{\n                type: Output\n            }], itemsContainer: [{\n                type: ViewChild,\n                args: ['itemsContainer']\n            }], numVisible: [{\n                type: Input\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass GalleriaModule {\n}\nGalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });\nGalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, RippleModule],\n                    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n                    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Optional, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\n\nclass BlockScrollStrategy {\n  constructor(_viewportRuler, document) {\n    this._viewportRuler = _viewportRuler;\n    this._previousHTMLStyles = {\n      top: '',\n      left: ''\n    };\n    this._isEnabled = false;\n    this._document = document;\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach() {}\n  /** Blocks page-level scroll while the attached overlay is open. */\n\n\n  enable() {\n    if (this._canBeEnabled()) {\n      const root = this._document.documentElement;\n      this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition(); // Cache the previous inline styles in case the user had set them.\n\n      this._previousHTMLStyles.left = root.style.left || '';\n      this._previousHTMLStyles.top = root.style.top || ''; // Note: we're using the `html` node, instead of the `body`, because the `body` may\n      // have the user agent margin, whereas the `html` is guaranteed not to have one.\n\n      root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n      root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n      root.classList.add('cdk-global-scrollblock');\n      this._isEnabled = true;\n    }\n  }\n  /** Unblocks page-level scroll while the attached overlay is open. */\n\n\n  disable() {\n    if (this._isEnabled) {\n      const html = this._document.documentElement;\n      const body = this._document.body;\n      const htmlStyle = html.style;\n      const bodyStyle = body.style;\n      const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n      const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n      this._isEnabled = false;\n      htmlStyle.left = this._previousHTMLStyles.left;\n      htmlStyle.top = this._previousHTMLStyles.top;\n      html.classList.remove('cdk-global-scrollblock'); // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n      // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n      // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n      // because it can throw off feature detections in `supportsScrollBehavior` which\n      // checks for `'scrollBehavior' in documentElement.style`.\n\n      if (scrollBehaviorSupported) {\n        htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n      }\n\n      window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n\n      if (scrollBehaviorSupported) {\n        htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n        bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n      }\n    }\n  }\n\n  _canBeEnabled() {\n    // Since the scroll strategies can't be singletons, we have to use a global CSS class\n    // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n    // scrolling multiple times.\n    const html = this._document.documentElement;\n\n    if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n      return false;\n    }\n\n    const body = this._document.body;\n\n    const viewport = this._viewportRuler.getViewportSize();\n\n    return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\n\n\nfunction getMatScrollStrategyAlreadyAttachedError() {\n  return Error(`Scroll strategy has already been attached.`);\n}\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\n\n\nclass CloseScrollStrategy {\n  constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._ngZone = _ngZone;\n    this._viewportRuler = _viewportRuler;\n    this._config = _config;\n    this._scrollSubscription = null;\n    /** Detaches the overlay ref and disables the scroll strategy. */\n\n    this._detach = () => {\n      this.disable();\n\n      if (this._overlayRef.hasAttached()) {\n        this._ngZone.run(() => this._overlayRef.detach());\n      }\n    };\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMatScrollStrategyAlreadyAttachedError();\n    }\n\n    this._overlayRef = overlayRef;\n  }\n  /** Enables the closing of the attached overlay on scroll. */\n\n\n  enable() {\n    if (this._scrollSubscription) {\n      return;\n    }\n\n    const stream = this._scrollDispatcher.scrolled(0);\n\n    if (this._config && this._config.threshold && this._config.threshold > 1) {\n      this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n      this._scrollSubscription = stream.subscribe(() => {\n        const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n\n        if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n          this._detach();\n        } else {\n          this._overlayRef.updatePosition();\n        }\n      });\n    } else {\n      this._scrollSubscription = stream.subscribe(this._detach);\n    }\n  }\n  /** Disables the closing the attached overlay on scroll. */\n\n\n  disable() {\n    if (this._scrollSubscription) {\n      this._scrollSubscription.unsubscribe();\n\n      this._scrollSubscription = null;\n    }\n  }\n\n  detach() {\n    this.disable();\n    this._overlayRef = null;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Scroll strategy that doesn't do anything. */\n\n\nclass NoopScrollStrategy {\n  /** Does nothing, as this scroll strategy is a no-op. */\n  enable() {}\n  /** Does nothing, as this scroll strategy is a no-op. */\n\n\n  disable() {}\n  /** Does nothing, as this scroll strategy is a no-op. */\n\n\n  attach() {}\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\n\n\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n  return scrollContainers.some(containerBounds => {\n    const outsideAbove = element.bottom < containerBounds.top;\n    const outsideBelow = element.top > containerBounds.bottom;\n    const outsideLeft = element.right < containerBounds.left;\n    const outsideRight = element.left > containerBounds.right;\n    return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n  });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\n\n\nfunction isElementClippedByScrolling(element, scrollContainers) {\n  return scrollContainers.some(scrollContainerRect => {\n    const clippedAbove = element.top < scrollContainerRect.top;\n    const clippedBelow = element.bottom > scrollContainerRect.bottom;\n    const clippedLeft = element.left < scrollContainerRect.left;\n    const clippedRight = element.right > scrollContainerRect.right;\n    return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n  });\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\n\n\nclass RepositionScrollStrategy {\n  constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._viewportRuler = _viewportRuler;\n    this._ngZone = _ngZone;\n    this._config = _config;\n    this._scrollSubscription = null;\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMatScrollStrategyAlreadyAttachedError();\n    }\n\n    this._overlayRef = overlayRef;\n  }\n  /** Enables repositioning of the attached overlay on scroll. */\n\n\n  enable() {\n    if (!this._scrollSubscription) {\n      const throttle = this._config ? this._config.scrollThrottle : 0;\n      this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n        this._overlayRef.updatePosition(); // TODO(crisbeto): make `close` on by default once all components can handle it.\n\n\n        if (this._config && this._config.autoClose) {\n          const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n\n          const {\n            width,\n            height\n          } = this._viewportRuler.getViewportSize(); // TODO(crisbeto): include all ancestor scroll containers here once\n          // we have a way of exposing the trigger element to the scroll strategy.\n\n\n          const parentRects = [{\n            width,\n            height,\n            bottom: height,\n            right: width,\n            top: 0,\n            left: 0\n          }];\n\n          if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n            this.disable();\n\n            this._ngZone.run(() => this._overlayRef.detach());\n          }\n        }\n      });\n    }\n  }\n  /** Disables repositioning of the attached overlay on scroll. */\n\n\n  disable() {\n    if (this._scrollSubscription) {\n      this._scrollSubscription.unsubscribe();\n\n      this._scrollSubscription = null;\n    }\n  }\n\n  detach() {\n    this.disable();\n    this._overlayRef = null;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\n\n\nclass ScrollStrategyOptions {\n  constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._viewportRuler = _viewportRuler;\n    this._ngZone = _ngZone;\n    /** Do nothing on scroll. */\n\n    this.noop = () => new NoopScrollStrategy();\n    /**\n     * Close the overlay as soon as the user scrolls.\n     * @param config Configuration to be used inside the scroll strategy.\n     */\n\n\n    this.close = config => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n    /** Block scrolling. */\n\n\n    this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n    /**\n     * Update the overlay's position on scroll.\n     * @param config Configuration to be used inside the scroll strategy.\n     * Allows debouncing the reposition calls.\n     */\n\n\n    this.reposition = config => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n\n    this._document = document;\n  }\n\n}\n\nScrollStrategyOptions.ɵfac = function ScrollStrategyOptions_Factory(t) {\n  return new (t || ScrollStrategyOptions)(i0.ɵɵinject(i1.ScrollDispatcher), i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n};\n\nScrollStrategyOptions.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ScrollStrategyOptions,\n  factory: ScrollStrategyOptions.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollStrategyOptions, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.ScrollDispatcher\n    }, {\n      type: i1.ViewportRuler\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Initial configuration used when creating an overlay. */\n\n\nclass OverlayConfig {\n  constructor(config) {\n    /** Strategy to be used when handling scroll events while the overlay is open. */\n    this.scrollStrategy = new NoopScrollStrategy();\n    /** Custom class to add to the overlay pane. */\n\n    this.panelClass = '';\n    /** Whether the overlay has a backdrop. */\n\n    this.hasBackdrop = false;\n    /** Custom class to add to the backdrop */\n\n    this.backdropClass = 'cdk-overlay-dark-backdrop';\n    /**\n     * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n     * Note that this usually doesn't include clicking on links (unless the user is using\n     * the `HashLocationStrategy`).\n     */\n\n    this.disposeOnNavigation = false;\n\n    if (config) {\n      // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n      // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n      // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n      const configKeys = Object.keys(config);\n\n      for (const key of configKeys) {\n        if (config[key] !== undefined) {\n          // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n          // as \"I don't know *which* key this is, so the only valid value is the intersection\n          // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n          // is not smart enough to see that the right-hand-side is actually an access of the same\n          // exact type with the same exact key, meaning that the value type must be identical.\n          // So we use `any` to work around this.\n          this[key] = config[key];\n        }\n      }\n    }\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** The points of the origin element and the overlay element to connect. */\n\n\nclass ConnectionPositionPair {\n  constructor(origin, overlay,\n  /** Offset along the X axis. */\n  offsetX,\n  /** Offset along the Y axis. */\n  offsetY,\n  /** Class(es) to be applied to the panel while this position is active. */\n  panelClass) {\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    this.panelClass = panelClass;\n    this.originX = origin.originX;\n    this.originY = origin.originY;\n    this.overlayX = overlay.overlayX;\n    this.overlayY = overlay.overlayY;\n  }\n\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n *       -----------                    -----------\n *       | outside |                    | clipped |\n *       |  view   |              --------------------------\n *       |         |              |     |         |        |\n *       ----------               |     -----------        |\n *  --------------------------    |                        |\n *  |                        |    |      Scrollable        |\n *  |                        |    |                        |\n *  |                        |     --------------------------\n *  |      Scrollable        |\n *  |                        |\n *  --------------------------\n *\n *  @docs-private\n */\n\n\nclass ScrollingVisibility {}\n/** The change event emitted by the strategy when a fallback position is used. */\n\n\nclass ConnectedOverlayPositionChange {\n  constructor(\n  /** The position used as a result of this change. */\n  connectionPair,\n  /** @docs-private */\n  scrollableViewProperties) {\n    this.connectionPair = connectionPair;\n    this.scrollableViewProperties = scrollableViewProperties;\n  }\n\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\n\n\nfunction validateVerticalPosition(property, value) {\n  if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n    throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"top\", \"bottom\" or \"center\".`);\n  }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\n\n\nfunction validateHorizontalPosition(property, value) {\n  if (value !== 'start' && value !== 'end' && value !== 'center') {\n    throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"start\", \"end\" or \"center\".`);\n  }\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass BaseOverlayDispatcher {\n  constructor(document) {\n    /** Currently attached overlays in the order they were attached. */\n    this._attachedOverlays = [];\n    this._document = document;\n  }\n\n  ngOnDestroy() {\n    this.detach();\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    // Ensure that we don't get the same overlay multiple times.\n    this.remove(overlayRef);\n\n    this._attachedOverlays.push(overlayRef);\n  }\n  /** Remove an overlay from the list of attached overlay refs. */\n\n\n  remove(overlayRef) {\n    const index = this._attachedOverlays.indexOf(overlayRef);\n\n    if (index > -1) {\n      this._attachedOverlays.splice(index, 1);\n    } // Remove the global listener once there are no more overlays.\n\n\n    if (this._attachedOverlays.length === 0) {\n      this.detach();\n    }\n  }\n\n}\n\nBaseOverlayDispatcher.ɵfac = function BaseOverlayDispatcher_Factory(t) {\n  return new (t || BaseOverlayDispatcher)(i0.ɵɵinject(DOCUMENT));\n};\n\nBaseOverlayDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: BaseOverlayDispatcher,\n  factory: BaseOverlayDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseOverlayDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n  constructor(document) {\n    super(document);\n    /** Keyboard event listener that will be attached to the body. */\n\n    this._keydownListener = event => {\n      const overlays = this._attachedOverlays;\n\n      for (let i = overlays.length - 1; i > -1; i--) {\n        // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n        // We want to target the most recent overlay, rather than trying to match where the event came\n        // from, because some components might open an overlay, but keep focus on a trigger element\n        // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n        // because we don't want overlays that don't handle keyboard events to block the ones below\n        // them that do.\n        if (overlays[i]._keydownEvents.observers.length > 0) {\n          overlays[i]._keydownEvents.next(event);\n\n          break;\n        }\n      }\n    };\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    super.add(overlayRef); // Lazily start dispatcher once first overlay is added\n\n    if (!this._isAttached) {\n      this._document.body.addEventListener('keydown', this._keydownListener);\n\n      this._isAttached = true;\n    }\n  }\n  /** Detaches the global keyboard event listener. */\n\n\n  detach() {\n    if (this._isAttached) {\n      this._document.body.removeEventListener('keydown', this._keydownListener);\n\n      this._isAttached = false;\n    }\n  }\n\n}\n\nOverlayKeyboardDispatcher.ɵfac = function OverlayKeyboardDispatcher_Factory(t) {\n  return new (t || OverlayKeyboardDispatcher)(i0.ɵɵinject(DOCUMENT));\n};\n\nOverlayKeyboardDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayKeyboardDispatcher,\n  factory: OverlayKeyboardDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayKeyboardDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n  constructor(document, _platform) {\n    super(document);\n    this._platform = _platform;\n    this._cursorStyleIsSet = false;\n    /** Store pointerdown event target to track origin of click. */\n\n    this._pointerDownListener = event => {\n      this._pointerDownEventTarget = _getEventTarget(event);\n    };\n    /** Click event listener that will be attached to the body propagate phase. */\n\n\n    this._clickListener = event => {\n      const target = _getEventTarget(event); // In case of a click event, we want to check the origin of the click\n      // (e.g. in case where a user starts a click inside the overlay and\n      // releases the click outside of it).\n      // This is done by using the event target of the preceding pointerdown event.\n      // Every click event caused by a pointer device has a preceding pointerdown\n      // event, unless the click was programmatically triggered (e.g. in a unit test).\n\n\n      const origin = event.type === 'click' && this._pointerDownEventTarget ? this._pointerDownEventTarget : target; // Reset the stored pointerdown event target, to avoid having it interfere\n      // in subsequent events.\n\n      this._pointerDownEventTarget = null; // We copy the array because the original may be modified asynchronously if the\n      // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n      // the for loop.\n\n      const overlays = this._attachedOverlays.slice(); // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n      // We want to target all overlays for which the click could be considered as outside click.\n      // As soon as we reach an overlay for which the click is not outside click we break off\n      // the loop.\n\n\n      for (let i = overlays.length - 1; i > -1; i--) {\n        const overlayRef = overlays[i];\n\n        if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n          continue;\n        } // If it's a click inside the overlay, just break - we should do nothing\n        // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n        // and proceed with the next overlay\n\n\n        if (overlayRef.overlayElement.contains(target) || overlayRef.overlayElement.contains(origin)) {\n          break;\n        }\n\n        overlayRef._outsidePointerEvents.next(event);\n      }\n    };\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    super.add(overlayRef); // Safari on iOS does not generate click events for non-interactive\n    // elements. However, we want to receive a click for any element outside\n    // the overlay. We can force a \"clickable\" state by setting\n    // `cursor: pointer` on the document body. See:\n    // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n    // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n\n    if (!this._isAttached) {\n      const body = this._document.body;\n      body.addEventListener('pointerdown', this._pointerDownListener, true);\n      body.addEventListener('click', this._clickListener, true);\n      body.addEventListener('auxclick', this._clickListener, true);\n      body.addEventListener('contextmenu', this._clickListener, true); // click event is not fired on iOS. To make element \"clickable\" we are\n      // setting the cursor to pointer\n\n      if (this._platform.IOS && !this._cursorStyleIsSet) {\n        this._cursorOriginalValue = body.style.cursor;\n        body.style.cursor = 'pointer';\n        this._cursorStyleIsSet = true;\n      }\n\n      this._isAttached = true;\n    }\n  }\n  /** Detaches the global keyboard event listener. */\n\n\n  detach() {\n    if (this._isAttached) {\n      const body = this._document.body;\n      body.removeEventListener('pointerdown', this._pointerDownListener, true);\n      body.removeEventListener('click', this._clickListener, true);\n      body.removeEventListener('auxclick', this._clickListener, true);\n      body.removeEventListener('contextmenu', this._clickListener, true);\n\n      if (this._platform.IOS && this._cursorStyleIsSet) {\n        body.style.cursor = this._cursorOriginalValue;\n        this._cursorStyleIsSet = false;\n      }\n\n      this._isAttached = false;\n    }\n  }\n\n}\n\nOverlayOutsideClickDispatcher.ɵfac = function OverlayOutsideClickDispatcher_Factory(t) {\n  return new (t || OverlayOutsideClickDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nOverlayOutsideClickDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayOutsideClickDispatcher,\n  factory: OverlayOutsideClickDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayOutsideClickDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Container inside which all overlays will render. */\n\n\nclass OverlayContainer {\n  constructor(document, _platform) {\n    this._platform = _platform;\n    this._document = document;\n  }\n\n  ngOnDestroy() {\n    this._containerElement?.remove();\n  }\n  /**\n   * This method returns the overlay container element. It will lazily\n   * create the element the first time it is called to facilitate using\n   * the container in non-browser environments.\n   * @returns the container element\n   */\n\n\n  getContainerElement() {\n    if (!this._containerElement) {\n      this._createContainer();\n    }\n\n    return this._containerElement;\n  }\n  /**\n   * Create the overlay container element, which is simply a div\n   * with the 'cdk-overlay-container' class on the document body.\n   */\n\n\n  _createContainer() {\n    const containerClass = 'cdk-overlay-container'; // TODO(crisbeto): remove the testing check once we have an overlay testing\n    // module or Angular starts tearing down the testing `NgModule`. See:\n    // https://github.com/angular/angular/issues/18831\n\n    if (this._platform.isBrowser || _isTestEnvironment()) {\n      const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`); // Remove any old containers from the opposite platform.\n      // This can happen when transitioning from the server to the client.\n\n\n      for (let i = 0; i < oppositePlatformContainers.length; i++) {\n        oppositePlatformContainers[i].remove();\n      }\n    }\n\n    const container = this._document.createElement('div');\n\n    container.classList.add(containerClass); // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n    // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n    // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n    // To mitigate the problem we made it so that only containers from a different platform are\n    // cleared, but the side-effect was that people started depending on the overly-aggressive\n    // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n    // module which does the cleanup, we try to detect that we're in a test environment and we\n    // always clear the container. See #17006.\n    // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n\n    if (_isTestEnvironment()) {\n      container.setAttribute('platform', 'test');\n    } else if (!this._platform.isBrowser) {\n      container.setAttribute('platform', 'server');\n    }\n\n    this._document.body.appendChild(container);\n\n    this._containerElement = container;\n  }\n\n}\n\nOverlayContainer.ɵfac = function OverlayContainer_Factory(t) {\n  return new (t || OverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nOverlayContainer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayContainer,\n  factory: OverlayContainer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayContainer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\n\n\nclass OverlayRef {\n  constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n    this._portalOutlet = _portalOutlet;\n    this._host = _host;\n    this._pane = _pane;\n    this._config = _config;\n    this._ngZone = _ngZone;\n    this._keyboardDispatcher = _keyboardDispatcher;\n    this._document = _document;\n    this._location = _location;\n    this._outsideClickDispatcher = _outsideClickDispatcher;\n    this._backdropElement = null;\n    this._backdropClick = new Subject();\n    this._attachments = new Subject();\n    this._detachments = new Subject();\n    this._locationChanges = Subscription.EMPTY;\n\n    this._backdropClickHandler = event => this._backdropClick.next(event);\n    /** Stream of keydown events dispatched to this overlay. */\n\n\n    this._keydownEvents = new Subject();\n    /** Stream of mouse outside events dispatched to this overlay. */\n\n    this._outsidePointerEvents = new Subject();\n\n    if (_config.scrollStrategy) {\n      this._scrollStrategy = _config.scrollStrategy;\n\n      this._scrollStrategy.attach(this);\n    }\n\n    this._positionStrategy = _config.positionStrategy;\n  }\n  /** The overlay's HTML element */\n\n\n  get overlayElement() {\n    return this._pane;\n  }\n  /** The overlay's backdrop HTML element. */\n\n\n  get backdropElement() {\n    return this._backdropElement;\n  }\n  /**\n   * Wrapper around the panel element. Can be used for advanced\n   * positioning where a wrapper with specific styling is\n   * required around the overlay pane.\n   */\n\n\n  get hostElement() {\n    return this._host;\n  }\n  /**\n   * Attaches content, given via a Portal, to the overlay.\n   * If the overlay is configured to have a backdrop, it will be created.\n   *\n   * @param portal Portal instance to which to attach the overlay.\n   * @returns The portal attachment result.\n   */\n\n\n  attach(portal) {\n    let attachResult = this._portalOutlet.attach(portal); // Update the pane element with the given configuration.\n\n\n    if (!this._host.parentElement && this._previousHostParent) {\n      this._previousHostParent.appendChild(this._host);\n    }\n\n    if (this._positionStrategy) {\n      this._positionStrategy.attach(this);\n    }\n\n    this._updateStackingOrder();\n\n    this._updateElementSize();\n\n    this._updateElementDirection();\n\n    if (this._scrollStrategy) {\n      this._scrollStrategy.enable();\n    } // Update the position once the zone is stable so that the overlay will be fully rendered\n    // before attempting to position it, as the position may depend on the size of the rendered\n    // content.\n\n\n    this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n      // The overlay could've been detached before the zone has stabilized.\n      if (this.hasAttached()) {\n        this.updatePosition();\n      }\n    }); // Enable pointer events for the overlay pane element.\n\n\n    this._togglePointerEvents(true);\n\n    if (this._config.hasBackdrop) {\n      this._attachBackdrop();\n    }\n\n    if (this._config.panelClass) {\n      this._toggleClasses(this._pane, this._config.panelClass, true);\n    } // Only emit the `attachments` event once all other setup is done.\n\n\n    this._attachments.next(); // Track this overlay by the keyboard dispatcher\n\n\n    this._keyboardDispatcher.add(this);\n\n    if (this._config.disposeOnNavigation) {\n      this._locationChanges = this._location.subscribe(() => this.dispose());\n    }\n\n    this._outsideClickDispatcher.add(this);\n\n    return attachResult;\n  }\n  /**\n   * Detaches an overlay from a portal.\n   * @returns The portal detachment result.\n   */\n\n\n  detach() {\n    if (!this.hasAttached()) {\n      return;\n    }\n\n    this.detachBackdrop(); // When the overlay is detached, the pane element should disable pointer events.\n    // This is necessary because otherwise the pane element will cover the page and disable\n    // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n\n    this._togglePointerEvents(false);\n\n    if (this._positionStrategy && this._positionStrategy.detach) {\n      this._positionStrategy.detach();\n    }\n\n    if (this._scrollStrategy) {\n      this._scrollStrategy.disable();\n    }\n\n    const detachmentResult = this._portalOutlet.detach(); // Only emit after everything is detached.\n\n\n    this._detachments.next(); // Remove this overlay from keyboard dispatcher tracking.\n\n\n    this._keyboardDispatcher.remove(this); // Keeping the host element in the DOM can cause scroll jank, because it still gets\n    // rendered, even though it's transparent and unclickable which is why we remove it.\n\n\n    this._detachContentWhenStable();\n\n    this._locationChanges.unsubscribe();\n\n    this._outsideClickDispatcher.remove(this);\n\n    return detachmentResult;\n  }\n  /** Cleans up the overlay from the DOM. */\n\n\n  dispose() {\n    const isAttached = this.hasAttached();\n\n    if (this._positionStrategy) {\n      this._positionStrategy.dispose();\n    }\n\n    this._disposeScrollStrategy();\n\n    this._disposeBackdrop(this._backdropElement);\n\n    this._locationChanges.unsubscribe();\n\n    this._keyboardDispatcher.remove(this);\n\n    this._portalOutlet.dispose();\n\n    this._attachments.complete();\n\n    this._backdropClick.complete();\n\n    this._keydownEvents.complete();\n\n    this._outsidePointerEvents.complete();\n\n    this._outsideClickDispatcher.remove(this);\n\n    this._host?.remove();\n    this._previousHostParent = this._pane = this._host = null;\n\n    if (isAttached) {\n      this._detachments.next();\n    }\n\n    this._detachments.complete();\n  }\n  /** Whether the overlay has attached content. */\n\n\n  hasAttached() {\n    return this._portalOutlet.hasAttached();\n  }\n  /** Gets an observable that emits when the backdrop has been clicked. */\n\n\n  backdropClick() {\n    return this._backdropClick;\n  }\n  /** Gets an observable that emits when the overlay has been attached. */\n\n\n  attachments() {\n    return this._attachments;\n  }\n  /** Gets an observable that emits when the overlay has been detached. */\n\n\n  detachments() {\n    return this._detachments;\n  }\n  /** Gets an observable of keydown events targeted to this overlay. */\n\n\n  keydownEvents() {\n    return this._keydownEvents;\n  }\n  /** Gets an observable of pointer events targeted outside this overlay. */\n\n\n  outsidePointerEvents() {\n    return this._outsidePointerEvents;\n  }\n  /** Gets the current overlay configuration, which is immutable. */\n\n\n  getConfig() {\n    return this._config;\n  }\n  /** Updates the position of the overlay based on the position strategy. */\n\n\n  updatePosition() {\n    if (this._positionStrategy) {\n      this._positionStrategy.apply();\n    }\n  }\n  /** Switches to a new position strategy and updates the overlay position. */\n\n\n  updatePositionStrategy(strategy) {\n    if (strategy === this._positionStrategy) {\n      return;\n    }\n\n    if (this._positionStrategy) {\n      this._positionStrategy.dispose();\n    }\n\n    this._positionStrategy = strategy;\n\n    if (this.hasAttached()) {\n      strategy.attach(this);\n      this.updatePosition();\n    }\n  }\n  /** Update the size properties of the overlay. */\n\n\n  updateSize(sizeConfig) {\n    this._config = { ...this._config,\n      ...sizeConfig\n    };\n\n    this._updateElementSize();\n  }\n  /** Sets the LTR/RTL direction for the overlay. */\n\n\n  setDirection(dir) {\n    this._config = { ...this._config,\n      direction: dir\n    };\n\n    this._updateElementDirection();\n  }\n  /** Add a CSS class or an array of classes to the overlay pane. */\n\n\n  addPanelClass(classes) {\n    if (this._pane) {\n      this._toggleClasses(this._pane, classes, true);\n    }\n  }\n  /** Remove a CSS class or an array of classes from the overlay pane. */\n\n\n  removePanelClass(classes) {\n    if (this._pane) {\n      this._toggleClasses(this._pane, classes, false);\n    }\n  }\n  /**\n   * Returns the layout direction of the overlay panel.\n   */\n\n\n  getDirection() {\n    const direction = this._config.direction;\n\n    if (!direction) {\n      return 'ltr';\n    }\n\n    return typeof direction === 'string' ? direction : direction.value;\n  }\n  /** Switches to a new scroll strategy. */\n\n\n  updateScrollStrategy(strategy) {\n    if (strategy === this._scrollStrategy) {\n      return;\n    }\n\n    this._disposeScrollStrategy();\n\n    this._scrollStrategy = strategy;\n\n    if (this.hasAttached()) {\n      strategy.attach(this);\n      strategy.enable();\n    }\n  }\n  /** Updates the text direction of the overlay panel. */\n\n\n  _updateElementDirection() {\n    this._host.setAttribute('dir', this.getDirection());\n  }\n  /** Updates the size of the overlay element based on the overlay config. */\n\n\n  _updateElementSize() {\n    if (!this._pane) {\n      return;\n    }\n\n    const style = this._pane.style;\n    style.width = coerceCssPixelValue(this._config.width);\n    style.height = coerceCssPixelValue(this._config.height);\n    style.minWidth = coerceCssPixelValue(this._config.minWidth);\n    style.minHeight = coerceCssPixelValue(this._config.minHeight);\n    style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n    style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n  }\n  /** Toggles the pointer events for the overlay pane element. */\n\n\n  _togglePointerEvents(enablePointer) {\n    this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n  }\n  /** Attaches a backdrop for this overlay. */\n\n\n  _attachBackdrop() {\n    const showingClass = 'cdk-overlay-backdrop-showing';\n    this._backdropElement = this._document.createElement('div');\n\n    this._backdropElement.classList.add('cdk-overlay-backdrop');\n\n    if (this._config.backdropClass) {\n      this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n    } // Insert the backdrop before the pane in the DOM order,\n    // in order to handle stacked overlays properly.\n\n\n    this._host.parentElement.insertBefore(this._backdropElement, this._host); // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n    // action desired when such a click occurs (usually closing the overlay).\n\n\n    this._backdropElement.addEventListener('click', this._backdropClickHandler); // Add class to fade-in the backdrop after one frame.\n\n\n    if (typeof requestAnimationFrame !== 'undefined') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          if (this._backdropElement) {\n            this._backdropElement.classList.add(showingClass);\n          }\n        });\n      });\n    } else {\n      this._backdropElement.classList.add(showingClass);\n    }\n  }\n  /**\n   * Updates the stacking order of the element, moving it to the top if necessary.\n   * This is required in cases where one overlay was detached, while another one,\n   * that should be behind it, was destroyed. The next time both of them are opened,\n   * the stacking will be wrong, because the detached element's pane will still be\n   * in its original DOM position.\n   */\n\n\n  _updateStackingOrder() {\n    if (this._host.nextSibling) {\n      this._host.parentNode.appendChild(this._host);\n    }\n  }\n  /** Detaches the backdrop (if any) associated with the overlay. */\n\n\n  detachBackdrop() {\n    const backdropToDetach = this._backdropElement;\n\n    if (!backdropToDetach) {\n      return;\n    }\n\n    let timeoutId;\n\n    const finishDetach = () => {\n      // It may not be attached to anything in certain cases (e.g. unit tests).\n      if (backdropToDetach) {\n        backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n        backdropToDetach.removeEventListener('transitionend', finishDetach);\n\n        this._disposeBackdrop(backdropToDetach);\n      }\n\n      if (this._config.backdropClass) {\n        this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n      }\n\n      clearTimeout(timeoutId);\n    };\n\n    backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n\n    this._ngZone.runOutsideAngular(() => {\n      backdropToDetach.addEventListener('transitionend', finishDetach);\n    }); // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n    // In this case we make it unclickable and we try to remove it after a delay.\n\n\n    backdropToDetach.style.pointerEvents = 'none'; // Run this outside the Angular zone because there's nothing that Angular cares about.\n    // If it were to run inside the Angular zone, every test that used Overlay would have to be\n    // either async or fakeAsync.\n\n    timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n  }\n  /** Toggles a single CSS class or an array of classes on an element. */\n\n\n  _toggleClasses(element, cssClasses, isAdd) {\n    const classes = coerceArray(cssClasses || []).filter(c => !!c);\n\n    if (classes.length) {\n      isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n    }\n  }\n  /** Detaches the overlay content next time the zone stabilizes. */\n\n\n  _detachContentWhenStable() {\n    // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n    // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n    // be patched to run inside the zone, which will throw us into an infinite loop.\n    this._ngZone.runOutsideAngular(() => {\n      // We can't remove the host here immediately, because the overlay pane's content\n      // might still be animating. This stream helps us avoid interrupting the animation\n      // by waiting for the pane to become empty.\n      const subscription = this._ngZone.onStable.pipe(takeUntil(merge(this._attachments, this._detachments))).subscribe(() => {\n        // Needs a couple of checks for the pane and host, because\n        // they may have been removed by the time the zone stabilizes.\n        if (!this._pane || !this._host || this._pane.children.length === 0) {\n          if (this._pane && this._config.panelClass) {\n            this._toggleClasses(this._pane, this._config.panelClass, false);\n          }\n\n          if (this._host && this._host.parentElement) {\n            this._previousHostParent = this._host.parentElement;\n\n            this._host.remove();\n          }\n\n          subscription.unsubscribe();\n        }\n      });\n    });\n  }\n  /** Disposes of a scroll strategy. */\n\n\n  _disposeScrollStrategy() {\n    const scrollStrategy = this._scrollStrategy;\n\n    if (scrollStrategy) {\n      scrollStrategy.disable();\n\n      if (scrollStrategy.detach) {\n        scrollStrategy.detach();\n      }\n    }\n  }\n  /** Removes a backdrop element from the DOM. */\n\n\n  _disposeBackdrop(backdrop) {\n    if (backdrop) {\n      backdrop.remove(); // It is possible that a new portal has been attached to this overlay since we started\n      // removing the backdrop. If that is the case, only clear the backdrop reference if it\n      // is still the same instance that we started to remove.\n\n      if (this._backdropElement === backdrop) {\n        this._backdropElement = null;\n      }\n    }\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n\n/** Class to be added to the overlay bounding box. */\n\n\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\n\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\n\nclass FlexibleConnectedPositionStrategy {\n  constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n    this._viewportRuler = _viewportRuler;\n    this._document = _document;\n    this._platform = _platform;\n    this._overlayContainer = _overlayContainer;\n    /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n\n    this._lastBoundingBoxSize = {\n      width: 0,\n      height: 0\n    };\n    /** Whether the overlay was pushed in a previous positioning. */\n\n    this._isPushed = false;\n    /** Whether the overlay can be pushed on-screen on the initial open. */\n\n    this._canPush = true;\n    /** Whether the overlay can grow via flexible width/height after the initial open. */\n\n    this._growAfterOpen = false;\n    /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n\n    this._hasFlexibleDimensions = true;\n    /** Whether the overlay position is locked. */\n\n    this._positionLocked = false;\n    /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n\n    this._viewportMargin = 0;\n    /** The Scrollable containers used to check scrollable view properties on position change. */\n\n    this._scrollables = [];\n    /** Ordered list of preferred positions, from most to least desirable. */\n\n    this._preferredPositions = [];\n    /** Subject that emits whenever the position changes. */\n\n    this._positionChanges = new Subject();\n    /** Subscription to viewport size changes. */\n\n    this._resizeSubscription = Subscription.EMPTY;\n    /** Default offset for the overlay along the x axis. */\n\n    this._offsetX = 0;\n    /** Default offset for the overlay along the y axis. */\n\n    this._offsetY = 0;\n    /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n\n    this._appliedPanelClasses = [];\n    /** Observable sequence of position changes. */\n\n    this.positionChanges = this._positionChanges;\n    this.setOrigin(connectedTo);\n  }\n  /** Ordered list of preferred positions, from most to least desirable. */\n\n\n  get positions() {\n    return this._preferredPositions;\n  }\n  /** Attaches this position strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && overlayRef !== this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('This position strategy is already attached to an overlay');\n    }\n\n    this._validatePositions();\n\n    overlayRef.hostElement.classList.add(boundingBoxClass);\n    this._overlayRef = overlayRef;\n    this._boundingBox = overlayRef.hostElement;\n    this._pane = overlayRef.overlayElement;\n    this._isDisposed = false;\n    this._isInitialRender = true;\n    this._lastPosition = null;\n\n    this._resizeSubscription.unsubscribe();\n\n    this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n      // When the window is resized, we want to trigger the next reposition as if it\n      // was an initial render, in order for the strategy to pick a new optimal position,\n      // otherwise position locking will cause it to stay at the old one.\n      this._isInitialRender = true;\n      this.apply();\n    });\n  }\n  /**\n   * Updates the position of the overlay element, using whichever preferred position relative\n   * to the origin best fits on-screen.\n   *\n   * The selection of a position goes as follows:\n   *  - If any positions fit completely within the viewport as-is,\n   *      choose the first position that does so.\n   *  - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n   *      choose the position with the greatest available size modified by the positions' weight.\n   *  - If pushing is enabled, take the position that went off-screen the least and push it\n   *      on-screen.\n   *  - If none of the previous criteria were met, use the position that goes off-screen the least.\n   * @docs-private\n   */\n\n\n  apply() {\n    // We shouldn't do anything if the strategy was disposed or we're on the server.\n    if (this._isDisposed || !this._platform.isBrowser) {\n      return;\n    } // If the position has been applied already (e.g. when the overlay was opened) and the\n    // consumer opted into locking in the position, re-use the old position, in order to\n    // prevent the overlay from jumping around.\n\n\n    if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n      this.reapplyLastPosition();\n      return;\n    }\n\n    this._clearPanelClasses();\n\n    this._resetOverlayElementStyles();\n\n    this._resetBoundingBoxStyles(); // We need the bounding rects for the origin and the overlay to determine how to position\n    // the overlay relative to the origin.\n    // We use the viewport rect to determine whether a position would go off-screen.\n\n\n    this._viewportRect = this._getNarrowedViewportRect();\n    this._originRect = this._getOriginRect();\n    this._overlayRect = this._pane.getBoundingClientRect();\n    const originRect = this._originRect;\n    const overlayRect = this._overlayRect;\n    const viewportRect = this._viewportRect; // Positions where the overlay will fit with flexible dimensions.\n\n    const flexibleFits = []; // Fallback if none of the preferred positions fit within the viewport.\n\n    let fallback; // Go through each of the preferred positions looking for a good fit.\n    // If a good fit is found, it will be applied immediately.\n\n    for (let pos of this._preferredPositions) {\n      // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n      let originPoint = this._getOriginPoint(originRect, pos); // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n      // overlay in this position. We use the top-left corner for calculations and later translate\n      // this into an appropriate (top, left, bottom, right) style.\n\n\n      let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos); // Calculate how well the overlay would fit into the viewport with this point.\n\n\n      let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos); // If the overlay, without any further work, fits into the viewport, use this position.\n\n\n      if (overlayFit.isCompletelyWithinViewport) {\n        this._isPushed = false;\n\n        this._applyPosition(pos, originPoint);\n\n        return;\n      } // If the overlay has flexible dimensions, we can use this position\n      // so long as there's enough space for the minimum dimensions.\n\n\n      if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n        // Save positions where the overlay will fit with flexible dimensions. We will use these\n        // if none of the positions fit *without* flexible dimensions.\n        flexibleFits.push({\n          position: pos,\n          origin: originPoint,\n          overlayRect,\n          boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos)\n        });\n        continue;\n      } // If the current preferred position does not fit on the screen, remember the position\n      // if it has more visible area on-screen than we've seen and move onto the next preferred\n      // position.\n\n\n      if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n        fallback = {\n          overlayFit,\n          overlayPoint,\n          originPoint,\n          position: pos,\n          overlayRect\n        };\n      }\n    } // If there are any positions where the overlay would fit with flexible dimensions, choose the\n    // one that has the greatest area available modified by the position's weight\n\n\n    if (flexibleFits.length) {\n      let bestFit = null;\n      let bestScore = -1;\n\n      for (const fit of flexibleFits) {\n        const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n\n        if (score > bestScore) {\n          bestScore = score;\n          bestFit = fit;\n        }\n      }\n\n      this._isPushed = false;\n\n      this._applyPosition(bestFit.position, bestFit.origin);\n\n      return;\n    } // When none of the preferred positions fit within the viewport, take the position\n    // that went off-screen the least and attempt to push it on-screen.\n\n\n    if (this._canPush) {\n      // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n      this._isPushed = true;\n\n      this._applyPosition(fallback.position, fallback.originPoint);\n\n      return;\n    } // All options for getting the overlay within the viewport have been exhausted, so go with the\n    // position that went off-screen the least.\n\n\n    this._applyPosition(fallback.position, fallback.originPoint);\n  }\n\n  detach() {\n    this._clearPanelClasses();\n\n    this._lastPosition = null;\n    this._previousPushAmount = null;\n\n    this._resizeSubscription.unsubscribe();\n  }\n  /** Cleanup after the element gets destroyed. */\n\n\n  dispose() {\n    if (this._isDisposed) {\n      return;\n    } // We can't use `_resetBoundingBoxStyles` here, because it resets\n    // some properties to zero, rather than removing them.\n\n\n    if (this._boundingBox) {\n      extendStyles(this._boundingBox.style, {\n        top: '',\n        left: '',\n        right: '',\n        bottom: '',\n        height: '',\n        width: '',\n        alignItems: '',\n        justifyContent: ''\n      });\n    }\n\n    if (this._pane) {\n      this._resetOverlayElementStyles();\n    }\n\n    if (this._overlayRef) {\n      this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n    }\n\n    this.detach();\n\n    this._positionChanges.complete();\n\n    this._overlayRef = this._boundingBox = null;\n    this._isDisposed = true;\n  }\n  /**\n   * This re-aligns the overlay element with the trigger in its last calculated position,\n   * even if a position higher in the \"preferred positions\" list would now fit. This\n   * allows one to re-align the panel without changing the orientation of the panel.\n   */\n\n\n  reapplyLastPosition() {\n    if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n      this._originRect = this._getOriginRect();\n      this._overlayRect = this._pane.getBoundingClientRect();\n      this._viewportRect = this._getNarrowedViewportRect();\n      const lastPosition = this._lastPosition || this._preferredPositions[0];\n\n      const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n\n      this._applyPosition(lastPosition, originPoint);\n    }\n  }\n  /**\n   * Sets the list of Scrollable containers that host the origin element so that\n   * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n   * Scrollable must be an ancestor element of the strategy's origin element.\n   */\n\n\n  withScrollableContainers(scrollables) {\n    this._scrollables = scrollables;\n    return this;\n  }\n  /**\n   * Adds new preferred positions.\n   * @param positions List of positions options for this overlay.\n   */\n\n\n  withPositions(positions) {\n    this._preferredPositions = positions; // If the last calculated position object isn't part of the positions anymore, clear\n    // it in order to avoid it being picked up if the consumer tries to re-apply.\n\n    if (positions.indexOf(this._lastPosition) === -1) {\n      this._lastPosition = null;\n    }\n\n    this._validatePositions();\n\n    return this;\n  }\n  /**\n   * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n   * @param margin Required margin between the overlay and the viewport edge in pixels.\n   */\n\n\n  withViewportMargin(margin) {\n    this._viewportMargin = margin;\n    return this;\n  }\n  /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n\n\n  withFlexibleDimensions(flexibleDimensions = true) {\n    this._hasFlexibleDimensions = flexibleDimensions;\n    return this;\n  }\n  /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n\n\n  withGrowAfterOpen(growAfterOpen = true) {\n    this._growAfterOpen = growAfterOpen;\n    return this;\n  }\n  /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n\n\n  withPush(canPush = true) {\n    this._canPush = canPush;\n    return this;\n  }\n  /**\n   * Sets whether the overlay's position should be locked in after it is positioned\n   * initially. When an overlay is locked in, it won't attempt to reposition itself\n   * when the position is re-applied (e.g. when the user scrolls away).\n   * @param isLocked Whether the overlay should locked in.\n   */\n\n\n  withLockedPosition(isLocked = true) {\n    this._positionLocked = isLocked;\n    return this;\n  }\n  /**\n   * Sets the origin, relative to which to position the overlay.\n   * Using an element origin is useful for building components that need to be positioned\n   * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n   * used for cases like contextual menus which open relative to the user's pointer.\n   * @param origin Reference to the new origin.\n   */\n\n\n  setOrigin(origin) {\n    this._origin = origin;\n    return this;\n  }\n  /**\n   * Sets the default offset for the overlay's connection point on the x-axis.\n   * @param offset New offset in the X axis.\n   */\n\n\n  withDefaultOffsetX(offset) {\n    this._offsetX = offset;\n    return this;\n  }\n  /**\n   * Sets the default offset for the overlay's connection point on the y-axis.\n   * @param offset New offset in the Y axis.\n   */\n\n\n  withDefaultOffsetY(offset) {\n    this._offsetY = offset;\n    return this;\n  }\n  /**\n   * Configures that the position strategy should set a `transform-origin` on some elements\n   * inside the overlay, depending on the current position that is being applied. This is\n   * useful for the cases where the origin of an animation can change depending on the\n   * alignment of the overlay.\n   * @param selector CSS selector that will be used to find the target\n   *    elements onto which to set the transform origin.\n   */\n\n\n  withTransformOriginOn(selector) {\n    this._transformOriginSelector = selector;\n    return this;\n  }\n  /**\n   * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n   */\n\n\n  _getOriginPoint(originRect, pos) {\n    let x;\n\n    if (pos.originX == 'center') {\n      // Note: when centering we should always use the `left`\n      // offset, otherwise the position will be wrong in RTL.\n      x = originRect.left + originRect.width / 2;\n    } else {\n      const startX = this._isRtl() ? originRect.right : originRect.left;\n      const endX = this._isRtl() ? originRect.left : originRect.right;\n      x = pos.originX == 'start' ? startX : endX;\n    }\n\n    let y;\n\n    if (pos.originY == 'center') {\n      y = originRect.top + originRect.height / 2;\n    } else {\n      y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n    }\n\n    return {\n      x,\n      y\n    };\n  }\n  /**\n   * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n   * origin point to which the overlay should be connected.\n   */\n\n\n  _getOverlayPoint(originPoint, overlayRect, pos) {\n    // Calculate the (overlayStartX, overlayStartY), the start of the\n    // potential overlay position relative to the origin point.\n    let overlayStartX;\n\n    if (pos.overlayX == 'center') {\n      overlayStartX = -overlayRect.width / 2;\n    } else if (pos.overlayX === 'start') {\n      overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n    } else {\n      overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n    }\n\n    let overlayStartY;\n\n    if (pos.overlayY == 'center') {\n      overlayStartY = -overlayRect.height / 2;\n    } else {\n      overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n    } // The (x, y) coordinates of the overlay.\n\n\n    return {\n      x: originPoint.x + overlayStartX,\n      y: originPoint.y + overlayStartY\n    };\n  }\n  /** Gets how well an overlay at the given point will fit within the viewport. */\n\n\n  _getOverlayFit(point, rawOverlayRect, viewport, position) {\n    // Round the overlay rect when comparing against the\n    // viewport, because the viewport is always rounded.\n    const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n    let {\n      x,\n      y\n    } = point;\n\n    let offsetX = this._getOffset(position, 'x');\n\n    let offsetY = this._getOffset(position, 'y'); // Account for the offsets since they could push the overlay out of the viewport.\n\n\n    if (offsetX) {\n      x += offsetX;\n    }\n\n    if (offsetY) {\n      y += offsetY;\n    } // How much the overlay would overflow at this position, on each side.\n\n\n    let leftOverflow = 0 - x;\n    let rightOverflow = x + overlay.width - viewport.width;\n    let topOverflow = 0 - y;\n    let bottomOverflow = y + overlay.height - viewport.height; // Visible parts of the element on each axis.\n\n    let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n\n    let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n\n    let visibleArea = visibleWidth * visibleHeight;\n    return {\n      visibleArea,\n      isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n      fitsInViewportVertically: visibleHeight === overlay.height,\n      fitsInViewportHorizontally: visibleWidth == overlay.width\n    };\n  }\n  /**\n   * Whether the overlay can fit within the viewport when it may resize either its width or height.\n   * @param fit How well the overlay fits in the viewport at some position.\n   * @param point The (x, y) coordinates of the overlat at some position.\n   * @param viewport The geometry of the viewport.\n   */\n\n\n  _canFitWithFlexibleDimensions(fit, point, viewport) {\n    if (this._hasFlexibleDimensions) {\n      const availableHeight = viewport.bottom - point.y;\n      const availableWidth = viewport.right - point.x;\n      const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n      const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n      const verticalFit = fit.fitsInViewportVertically || minHeight != null && minHeight <= availableHeight;\n      const horizontalFit = fit.fitsInViewportHorizontally || minWidth != null && minWidth <= availableWidth;\n      return verticalFit && horizontalFit;\n    }\n\n    return false;\n  }\n  /**\n   * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n   * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n   * right and bottom).\n   *\n   * @param start Starting point from which the overlay is pushed.\n   * @param overlay Dimensions of the overlay.\n   * @param scrollPosition Current viewport scroll position.\n   * @returns The point at which to position the overlay after pushing. This is effectively a new\n   *     originPoint.\n   */\n\n\n  _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n    // If the position is locked and we've pushed the overlay already, reuse the previous push\n    // amount, rather than pushing it again. If we were to continue pushing, the element would\n    // remain in the viewport, which goes against the expectations when position locking is enabled.\n    if (this._previousPushAmount && this._positionLocked) {\n      return {\n        x: start.x + this._previousPushAmount.x,\n        y: start.y + this._previousPushAmount.y\n      };\n    } // Round the overlay rect when comparing against the\n    // viewport, because the viewport is always rounded.\n\n\n    const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n    const viewport = this._viewportRect; // Determine how much the overlay goes outside the viewport on each\n    // side, which we'll use to decide which direction to push it.\n\n    const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n    const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n    const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n    const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0); // Amount by which to push the overlay in each axis such that it remains on-screen.\n\n    let pushX = 0;\n    let pushY = 0; // If the overlay fits completely within the bounds of the viewport, push it from whichever\n    // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n    // viewport and allow for the trailing end of the overlay to go out of bounds.\n\n    if (overlay.width <= viewport.width) {\n      pushX = overflowLeft || -overflowRight;\n    } else {\n      pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n    }\n\n    if (overlay.height <= viewport.height) {\n      pushY = overflowTop || -overflowBottom;\n    } else {\n      pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n    }\n\n    this._previousPushAmount = {\n      x: pushX,\n      y: pushY\n    };\n    return {\n      x: start.x + pushX,\n      y: start.y + pushY\n    };\n  }\n  /**\n   * Applies a computed position to the overlay and emits a position change.\n   * @param position The position preference\n   * @param originPoint The point on the origin element where the overlay is connected.\n   */\n\n\n  _applyPosition(position, originPoint) {\n    this._setTransformOrigin(position);\n\n    this._setOverlayElementStyles(originPoint, position);\n\n    this._setBoundingBoxStyles(originPoint, position);\n\n    if (position.panelClass) {\n      this._addPanelClasses(position.panelClass);\n    } // Save the last connected position in case the position needs to be re-calculated.\n\n\n    this._lastPosition = position; // Notify that the position has been changed along with its change properties.\n    // We only emit if we've got any subscriptions, because the scroll visibility\n    // calculcations can be somewhat expensive.\n\n    if (this._positionChanges.observers.length) {\n      const scrollableViewProperties = this._getScrollVisibility();\n\n      const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n\n      this._positionChanges.next(changeEvent);\n    }\n\n    this._isInitialRender = false;\n  }\n  /** Sets the transform origin based on the configured selector and the passed-in position.  */\n\n\n  _setTransformOrigin(position) {\n    if (!this._transformOriginSelector) {\n      return;\n    }\n\n    const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n\n    let xOrigin;\n    let yOrigin = position.overlayY;\n\n    if (position.overlayX === 'center') {\n      xOrigin = 'center';\n    } else if (this._isRtl()) {\n      xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n    } else {\n      xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n    }\n\n    for (let i = 0; i < elements.length; i++) {\n      elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n    }\n  }\n  /**\n   * Gets the position and size of the overlay's sizing container.\n   *\n   * This method does no measuring and applies no styles so that we can cheaply compute the\n   * bounds for all positions and choose the best fit based on these results.\n   */\n\n\n  _calculateBoundingBoxRect(origin, position) {\n    const viewport = this._viewportRect;\n\n    const isRtl = this._isRtl();\n\n    let height, top, bottom;\n\n    if (position.overlayY === 'top') {\n      // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n      top = origin.y;\n      height = viewport.height - top + this._viewportMargin;\n    } else if (position.overlayY === 'bottom') {\n      // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n      // the viewport margin back in, because the viewport rect is narrowed down to remove the\n      // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n      bottom = viewport.height - origin.y + this._viewportMargin * 2;\n      height = viewport.height - bottom + this._viewportMargin;\n    } else {\n      // If neither top nor bottom, it means that the overlay is vertically centered on the\n      // origin point. Note that we want the position relative to the viewport, rather than\n      // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n      // `origin.y - viewport.top`.\n      const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n      const previousHeight = this._lastBoundingBoxSize.height;\n      height = smallestDistanceToViewportEdge * 2;\n      top = origin.y - smallestDistanceToViewportEdge;\n\n      if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n        top = origin.y - previousHeight / 2;\n      }\n    } // The overlay is opening 'right-ward' (the content flows to the right).\n\n\n    const isBoundedByRightViewportEdge = position.overlayX === 'start' && !isRtl || position.overlayX === 'end' && isRtl; // The overlay is opening 'left-ward' (the content flows to the left).\n\n    const isBoundedByLeftViewportEdge = position.overlayX === 'end' && !isRtl || position.overlayX === 'start' && isRtl;\n    let width, left, right;\n\n    if (isBoundedByLeftViewportEdge) {\n      right = viewport.width - origin.x + this._viewportMargin;\n      width = origin.x - this._viewportMargin;\n    } else if (isBoundedByRightViewportEdge) {\n      left = origin.x;\n      width = viewport.right - origin.x;\n    } else {\n      // If neither start nor end, it means that the overlay is horizontally centered on the\n      // origin point. Note that we want the position relative to the viewport, rather than\n      // the page, which is why we don't use something like `viewport.right - origin.x` and\n      // `origin.x - viewport.left`.\n      const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n      const previousWidth = this._lastBoundingBoxSize.width;\n      width = smallestDistanceToViewportEdge * 2;\n      left = origin.x - smallestDistanceToViewportEdge;\n\n      if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n        left = origin.x - previousWidth / 2;\n      }\n    }\n\n    return {\n      top: top,\n      left: left,\n      bottom: bottom,\n      right: right,\n      width,\n      height\n    };\n  }\n  /**\n   * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n   * origin's connection point and stetches to the bounds of the viewport.\n   *\n   * @param origin The point on the origin element where the overlay is connected.\n   * @param position The position preference\n   */\n\n\n  _setBoundingBoxStyles(origin, position) {\n    const boundingBoxRect = this._calculateBoundingBoxRect(origin, position); // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n    // when applying a new size.\n\n\n    if (!this._isInitialRender && !this._growAfterOpen) {\n      boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n      boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n    }\n\n    const styles = {};\n\n    if (this._hasExactPosition()) {\n      styles.top = styles.left = '0';\n      styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n      styles.width = styles.height = '100%';\n    } else {\n      const maxHeight = this._overlayRef.getConfig().maxHeight;\n\n      const maxWidth = this._overlayRef.getConfig().maxWidth;\n\n      styles.height = coerceCssPixelValue(boundingBoxRect.height);\n      styles.top = coerceCssPixelValue(boundingBoxRect.top);\n      styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n      styles.width = coerceCssPixelValue(boundingBoxRect.width);\n      styles.left = coerceCssPixelValue(boundingBoxRect.left);\n      styles.right = coerceCssPixelValue(boundingBoxRect.right); // Push the pane content towards the proper direction.\n\n      if (position.overlayX === 'center') {\n        styles.alignItems = 'center';\n      } else {\n        styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n      }\n\n      if (position.overlayY === 'center') {\n        styles.justifyContent = 'center';\n      } else {\n        styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n      }\n\n      if (maxHeight) {\n        styles.maxHeight = coerceCssPixelValue(maxHeight);\n      }\n\n      if (maxWidth) {\n        styles.maxWidth = coerceCssPixelValue(maxWidth);\n      }\n    }\n\n    this._lastBoundingBoxSize = boundingBoxRect;\n    extendStyles(this._boundingBox.style, styles);\n  }\n  /** Resets the styles for the bounding box so that a new positioning can be computed. */\n\n\n  _resetBoundingBoxStyles() {\n    extendStyles(this._boundingBox.style, {\n      top: '0',\n      left: '0',\n      right: '0',\n      bottom: '0',\n      height: '',\n      width: '',\n      alignItems: '',\n      justifyContent: ''\n    });\n  }\n  /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n\n\n  _resetOverlayElementStyles() {\n    extendStyles(this._pane.style, {\n      top: '',\n      left: '',\n      bottom: '',\n      right: '',\n      position: '',\n      transform: ''\n    });\n  }\n  /** Sets positioning styles to the overlay element. */\n\n\n  _setOverlayElementStyles(originPoint, position) {\n    const styles = {};\n\n    const hasExactPosition = this._hasExactPosition();\n\n    const hasFlexibleDimensions = this._hasFlexibleDimensions;\n\n    const config = this._overlayRef.getConfig();\n\n    if (hasExactPosition) {\n      const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n\n      extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n      extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n    } else {\n      styles.position = 'static';\n    } // Use a transform to apply the offsets. We do this because the `center` positions rely on\n    // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n    // off the position. We also can't use margins, because they won't have an effect in some\n    // cases where the element doesn't have anything to \"push off of\". Finally, this works\n    // better both with flexible and non-flexible positioning.\n\n\n    let transformString = '';\n\n    let offsetX = this._getOffset(position, 'x');\n\n    let offsetY = this._getOffset(position, 'y');\n\n    if (offsetX) {\n      transformString += `translateX(${offsetX}px) `;\n    }\n\n    if (offsetY) {\n      transformString += `translateY(${offsetY}px)`;\n    }\n\n    styles.transform = transformString.trim(); // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n    // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n    // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n    // Note that this doesn't apply when we have an exact position, in which case we do want to\n    // apply them because they'll be cleared from the bounding box.\n\n    if (config.maxHeight) {\n      if (hasExactPosition) {\n        styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n      } else if (hasFlexibleDimensions) {\n        styles.maxHeight = '';\n      }\n    }\n\n    if (config.maxWidth) {\n      if (hasExactPosition) {\n        styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n      } else if (hasFlexibleDimensions) {\n        styles.maxWidth = '';\n      }\n    }\n\n    extendStyles(this._pane.style, styles);\n  }\n  /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n\n\n  _getExactOverlayY(position, originPoint, scrollPosition) {\n    // Reset any existing styles. This is necessary in case the\n    // preferred position has changed since the last `apply`.\n    let styles = {\n      top: '',\n      bottom: ''\n    };\n\n    let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n\n    if (this._isPushed) {\n      overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n    }\n\n    let virtualKeyboardOffset = this._overlayContainer.getContainerElement().getBoundingClientRect().top; // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n    // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n    // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n    // otherwise our positioning will be thrown off.\n\n\n    overlayPoint.y -= virtualKeyboardOffset; // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n    // above or below the origin and the direction in which the element will expand.\n\n    if (position.overlayY === 'bottom') {\n      // When using `bottom`, we adjust the y position such that it is the distance\n      // from the bottom of the viewport rather than the top.\n      const documentHeight = this._document.documentElement.clientHeight;\n      styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n    } else {\n      styles.top = coerceCssPixelValue(overlayPoint.y);\n    }\n\n    return styles;\n  }\n  /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n\n\n  _getExactOverlayX(position, originPoint, scrollPosition) {\n    // Reset any existing styles. This is necessary in case the preferred position has\n    // changed since the last `apply`.\n    let styles = {\n      left: '',\n      right: ''\n    };\n\n    let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n\n    if (this._isPushed) {\n      overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n    } // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n    // or \"after\" the origin, which determines the direction in which the element will expand.\n    // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n    // page is in RTL or LTR.\n\n\n    let horizontalStyleProperty;\n\n    if (this._isRtl()) {\n      horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n    } else {\n      horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n    } // When we're setting `right`, we adjust the x position such that it is the distance\n    // from the right edge of the viewport rather than the left edge.\n\n\n    if (horizontalStyleProperty === 'right') {\n      const documentWidth = this._document.documentElement.clientWidth;\n      styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n    } else {\n      styles.left = coerceCssPixelValue(overlayPoint.x);\n    }\n\n    return styles;\n  }\n  /**\n   * Gets the view properties of the trigger and overlay, including whether they are clipped\n   * or completely outside the view of any of the strategy's scrollables.\n   */\n\n\n  _getScrollVisibility() {\n    // Note: needs fresh rects since the position could've changed.\n    const originBounds = this._getOriginRect();\n\n    const overlayBounds = this._pane.getBoundingClientRect(); // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n    // every time, we should be able to use the scrollTop of the containers if the size of those\n    // containers hasn't changed.\n\n\n    const scrollContainerBounds = this._scrollables.map(scrollable => {\n      return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n    });\n\n    return {\n      isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n      isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n      isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n      isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds)\n    };\n  }\n  /** Subtracts the amount that an element is overflowing on an axis from its length. */\n\n\n  _subtractOverflows(length, ...overflows) {\n    return overflows.reduce((currentValue, currentOverflow) => {\n      return currentValue - Math.max(currentOverflow, 0);\n    }, length);\n  }\n  /** Narrows the given viewport rect by the current _viewportMargin. */\n\n\n  _getNarrowedViewportRect() {\n    // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n    // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n    // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n    // and `innerHeight` that do. This is necessary, because the overlay container uses\n    // 100% `width` and `height` which don't include the scrollbar either.\n    const width = this._document.documentElement.clientWidth;\n    const height = this._document.documentElement.clientHeight;\n\n    const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n\n    return {\n      top: scrollPosition.top + this._viewportMargin,\n      left: scrollPosition.left + this._viewportMargin,\n      right: scrollPosition.left + width - this._viewportMargin,\n      bottom: scrollPosition.top + height - this._viewportMargin,\n      width: width - 2 * this._viewportMargin,\n      height: height - 2 * this._viewportMargin\n    };\n  }\n  /** Whether the we're dealing with an RTL context */\n\n\n  _isRtl() {\n    return this._overlayRef.getDirection() === 'rtl';\n  }\n  /** Determines whether the overlay uses exact or flexible positioning. */\n\n\n  _hasExactPosition() {\n    return !this._hasFlexibleDimensions || this._isPushed;\n  }\n  /** Retrieves the offset of a position along the x or y axis. */\n\n\n  _getOffset(position, axis) {\n    if (axis === 'x') {\n      // We don't do something like `position['offset' + axis]` in\n      // order to avoid breking minifiers that rename properties.\n      return position.offsetX == null ? this._offsetX : position.offsetX;\n    }\n\n    return position.offsetY == null ? this._offsetY : position.offsetY;\n  }\n  /** Validates that the current position match the expected values. */\n\n\n  _validatePositions() {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!this._preferredPositions.length) {\n        throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n      } // TODO(crisbeto): remove these once Angular's template type\n      // checking is advanced enough to catch these cases.\n\n\n      this._preferredPositions.forEach(pair => {\n        validateHorizontalPosition('originX', pair.originX);\n        validateVerticalPosition('originY', pair.originY);\n        validateHorizontalPosition('overlayX', pair.overlayX);\n        validateVerticalPosition('overlayY', pair.overlayY);\n      });\n    }\n  }\n  /** Adds a single CSS class or an array of classes on the overlay panel. */\n\n\n  _addPanelClasses(cssClasses) {\n    if (this._pane) {\n      coerceArray(cssClasses).forEach(cssClass => {\n        if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n          this._appliedPanelClasses.push(cssClass);\n\n          this._pane.classList.add(cssClass);\n        }\n      });\n    }\n  }\n  /** Clears the classes that the position strategy has applied from the overlay panel. */\n\n\n  _clearPanelClasses() {\n    if (this._pane) {\n      this._appliedPanelClasses.forEach(cssClass => {\n        this._pane.classList.remove(cssClass);\n      });\n\n      this._appliedPanelClasses = [];\n    }\n  }\n  /** Returns the ClientRect of the current origin. */\n\n\n  _getOriginRect() {\n    const origin = this._origin;\n\n    if (origin instanceof ElementRef) {\n      return origin.nativeElement.getBoundingClientRect();\n    } // Check for Element so SVG elements are also supported.\n\n\n    if (origin instanceof Element) {\n      return origin.getBoundingClientRect();\n    }\n\n    const width = origin.width || 0;\n    const height = origin.height || 0; // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n\n    return {\n      top: origin.y,\n      bottom: origin.y + height,\n      left: origin.x,\n      right: origin.x + width,\n      height,\n      width\n    };\n  }\n\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\n\n\nfunction extendStyles(destination, source) {\n  for (let key in source) {\n    if (source.hasOwnProperty(key)) {\n      destination[key] = source[key];\n    }\n  }\n\n  return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\n\n\nfunction getPixelValue(input) {\n  if (typeof input !== 'number' && input != null) {\n    const [value, units] = input.split(cssUnitPattern);\n    return !units || units === 'px' ? parseFloat(value) : null;\n  }\n\n  return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\n\n\nfunction getRoundedBoundingClientRect(clientRect) {\n  return {\n    top: Math.floor(clientRect.top),\n    right: Math.floor(clientRect.right),\n    bottom: Math.floor(clientRect.bottom),\n    left: Math.floor(clientRect.left),\n    width: Math.floor(clientRect.width),\n    height: Math.floor(clientRect.height)\n  };\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Class to be added to the overlay pane wrapper. */\n\n\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\n\nclass GlobalPositionStrategy {\n  constructor() {\n    this._cssPosition = 'static';\n    this._topOffset = '';\n    this._bottomOffset = '';\n    this._leftOffset = '';\n    this._rightOffset = '';\n    this._alignItems = '';\n    this._justifyContent = '';\n    this._width = '';\n    this._height = '';\n  }\n\n  attach(overlayRef) {\n    const config = overlayRef.getConfig();\n    this._overlayRef = overlayRef;\n\n    if (this._width && !config.width) {\n      overlayRef.updateSize({\n        width: this._width\n      });\n    }\n\n    if (this._height && !config.height) {\n      overlayRef.updateSize({\n        height: this._height\n      });\n    }\n\n    overlayRef.hostElement.classList.add(wrapperClass);\n    this._isDisposed = false;\n  }\n  /**\n   * Sets the top position of the overlay. Clears any previously set vertical position.\n   * @param value New top offset.\n   */\n\n\n  top(value = '') {\n    this._bottomOffset = '';\n    this._topOffset = value;\n    this._alignItems = 'flex-start';\n    return this;\n  }\n  /**\n   * Sets the left position of the overlay. Clears any previously set horizontal position.\n   * @param value New left offset.\n   */\n\n\n  left(value = '') {\n    this._rightOffset = '';\n    this._leftOffset = value;\n    this._justifyContent = 'flex-start';\n    return this;\n  }\n  /**\n   * Sets the bottom position of the overlay. Clears any previously set vertical position.\n   * @param value New bottom offset.\n   */\n\n\n  bottom(value = '') {\n    this._topOffset = '';\n    this._bottomOffset = value;\n    this._alignItems = 'flex-end';\n    return this;\n  }\n  /**\n   * Sets the right position of the overlay. Clears any previously set horizontal position.\n   * @param value New right offset.\n   */\n\n\n  right(value = '') {\n    this._leftOffset = '';\n    this._rightOffset = value;\n    this._justifyContent = 'flex-end';\n    return this;\n  }\n  /**\n   * Sets the overlay width and clears any previously set width.\n   * @param value New width for the overlay\n   * @deprecated Pass the `width` through the `OverlayConfig`.\n   * @breaking-change 8.0.0\n   */\n\n\n  width(value = '') {\n    if (this._overlayRef) {\n      this._overlayRef.updateSize({\n        width: value\n      });\n    } else {\n      this._width = value;\n    }\n\n    return this;\n  }\n  /**\n   * Sets the overlay height and clears any previously set height.\n   * @param value New height for the overlay\n   * @deprecated Pass the `height` through the `OverlayConfig`.\n   * @breaking-change 8.0.0\n   */\n\n\n  height(value = '') {\n    if (this._overlayRef) {\n      this._overlayRef.updateSize({\n        height: value\n      });\n    } else {\n      this._height = value;\n    }\n\n    return this;\n  }\n  /**\n   * Centers the overlay horizontally with an optional offset.\n   * Clears any previously set horizontal position.\n   *\n   * @param offset Overlay offset from the horizontal center.\n   */\n\n\n  centerHorizontally(offset = '') {\n    this.left(offset);\n    this._justifyContent = 'center';\n    return this;\n  }\n  /**\n   * Centers the overlay vertically with an optional offset.\n   * Clears any previously set vertical position.\n   *\n   * @param offset Overlay offset from the vertical center.\n   */\n\n\n  centerVertically(offset = '') {\n    this.top(offset);\n    this._alignItems = 'center';\n    return this;\n  }\n  /**\n   * Apply the position to the element.\n   * @docs-private\n   */\n\n\n  apply() {\n    // Since the overlay ref applies the strategy asynchronously, it could\n    // have been disposed before it ends up being applied. If that is the\n    // case, we shouldn't do anything.\n    if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n      return;\n    }\n\n    const styles = this._overlayRef.overlayElement.style;\n    const parentStyles = this._overlayRef.hostElement.style;\n\n    const config = this._overlayRef.getConfig();\n\n    const {\n      width,\n      height,\n      maxWidth,\n      maxHeight\n    } = config;\n    const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') && (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n    const shouldBeFlushVertically = (height === '100%' || height === '100vh') && (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n    styles.position = this._cssPosition;\n    styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n    styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n    styles.marginBottom = this._bottomOffset;\n    styles.marginRight = this._rightOffset;\n\n    if (shouldBeFlushHorizontally) {\n      parentStyles.justifyContent = 'flex-start';\n    } else if (this._justifyContent === 'center') {\n      parentStyles.justifyContent = 'center';\n    } else if (this._overlayRef.getConfig().direction === 'rtl') {\n      // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n      // don't want that because our positioning is explicitly `left` and `right`, hence\n      // why we do another inversion to ensure that the overlay stays in the same position.\n      // TODO: reconsider this if we add `start` and `end` methods.\n      if (this._justifyContent === 'flex-start') {\n        parentStyles.justifyContent = 'flex-end';\n      } else if (this._justifyContent === 'flex-end') {\n        parentStyles.justifyContent = 'flex-start';\n      }\n    } else {\n      parentStyles.justifyContent = this._justifyContent;\n    }\n\n    parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n  }\n  /**\n   * Cleans up the DOM changes from the position strategy.\n   * @docs-private\n   */\n\n\n  dispose() {\n    if (this._isDisposed || !this._overlayRef) {\n      return;\n    }\n\n    const styles = this._overlayRef.overlayElement.style;\n    const parent = this._overlayRef.hostElement;\n    const parentStyles = parent.style;\n    parent.classList.remove(wrapperClass);\n    parentStyles.justifyContent = parentStyles.alignItems = styles.marginTop = styles.marginBottom = styles.marginLeft = styles.marginRight = styles.position = '';\n    this._overlayRef = null;\n    this._isDisposed = true;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Builder for overlay position strategy. */\n\n\nclass OverlayPositionBuilder {\n  constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n    this._viewportRuler = _viewportRuler;\n    this._document = _document;\n    this._platform = _platform;\n    this._overlayContainer = _overlayContainer;\n  }\n  /**\n   * Creates a global position strategy.\n   */\n\n\n  global() {\n    return new GlobalPositionStrategy();\n  }\n  /**\n   * Creates a flexible position strategy.\n   * @param origin Origin relative to which to position the overlay.\n   */\n\n\n  flexibleConnectedTo(origin) {\n    return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n  }\n\n}\n\nOverlayPositionBuilder.ɵfac = function OverlayPositionBuilder_Factory(t) {\n  return new (t || OverlayPositionBuilder)(i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(OverlayContainer));\n};\n\nOverlayPositionBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayPositionBuilder,\n  factory: OverlayPositionBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayPositionBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.ViewportRuler\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }, {\n      type: OverlayContainer\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Next overlay unique ID. */\n\n\nlet nextUniqueId = 0; // Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\n\nclass Overlay {\n  constructor(\n  /** Scrolling strategies that can be used when creating an overlay. */\n  scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n    this.scrollStrategies = scrollStrategies;\n    this._overlayContainer = _overlayContainer;\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._positionBuilder = _positionBuilder;\n    this._keyboardDispatcher = _keyboardDispatcher;\n    this._injector = _injector;\n    this._ngZone = _ngZone;\n    this._document = _document;\n    this._directionality = _directionality;\n    this._location = _location;\n    this._outsideClickDispatcher = _outsideClickDispatcher;\n  }\n  /**\n   * Creates an overlay.\n   * @param config Configuration applied to the overlay.\n   * @returns Reference to the created overlay.\n   */\n\n\n  create(config) {\n    const host = this._createHostElement();\n\n    const pane = this._createPaneElement(host);\n\n    const portalOutlet = this._createPortalOutlet(pane);\n\n    const overlayConfig = new OverlayConfig(config);\n    overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n    return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n  }\n  /**\n   * Gets a position builder that can be used, via fluent API,\n   * to construct and configure a position strategy.\n   * @returns An overlay position builder.\n   */\n\n\n  position() {\n    return this._positionBuilder;\n  }\n  /**\n   * Creates the DOM element for an overlay and appends it to the overlay container.\n   * @returns Newly-created pane element\n   */\n\n\n  _createPaneElement(host) {\n    const pane = this._document.createElement('div');\n\n    pane.id = `cdk-overlay-${nextUniqueId++}`;\n    pane.classList.add('cdk-overlay-pane');\n    host.appendChild(pane);\n    return pane;\n  }\n  /**\n   * Creates the host element that wraps around an overlay\n   * and can be used for advanced positioning.\n   * @returns Newly-create host element.\n   */\n\n\n  _createHostElement() {\n    const host = this._document.createElement('div');\n\n    this._overlayContainer.getContainerElement().appendChild(host);\n\n    return host;\n  }\n  /**\n   * Create a DomPortalOutlet into which the overlay content can be loaded.\n   * @param pane The DOM element to turn into a portal outlet.\n   * @returns A portal outlet for the given DOM element.\n   */\n\n\n  _createPortalOutlet(pane) {\n    // We have to resolve the ApplicationRef later in order to allow people\n    // to use overlay-based providers during app initialization.\n    if (!this._appRef) {\n      this._appRef = this._injector.get(ApplicationRef);\n    }\n\n    return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n  }\n\n}\n\nOverlay.ɵfac = function Overlay_Factory(t) {\n  return new (t || Overlay)(i0.ɵɵinject(ScrollStrategyOptions), i0.ɵɵinject(OverlayContainer), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(OverlayPositionBuilder), i0.ɵɵinject(OverlayKeyboardDispatcher), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i5.Directionality), i0.ɵɵinject(i6.Location), i0.ɵɵinject(OverlayOutsideClickDispatcher));\n};\n\nOverlay.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Overlay,\n  factory: Overlay.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Overlay, [{\n    type: Injectable\n  }], function () {\n    return [{\n      type: ScrollStrategyOptions\n    }, {\n      type: OverlayContainer\n    }, {\n      type: i0.ComponentFactoryResolver\n    }, {\n      type: OverlayPositionBuilder\n    }, {\n      type: OverlayKeyboardDispatcher\n    }, {\n      type: i0.Injector\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i5.Directionality\n    }, {\n      type: i6.Location\n    }, {\n      type: OverlayOutsideClickDispatcher\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\n\n\nconst defaultPositionList = [{\n  originX: 'start',\n  originY: 'bottom',\n  overlayX: 'start',\n  overlayY: 'top'\n}, {\n  originX: 'start',\n  originY: 'top',\n  overlayX: 'start',\n  overlayY: 'bottom'\n}, {\n  originX: 'end',\n  originY: 'top',\n  overlayX: 'end',\n  overlayY: 'bottom'\n}, {\n  originX: 'end',\n  originY: 'bottom',\n  overlayX: 'end',\n  overlayY: 'top'\n}];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\n\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\n\nclass CdkOverlayOrigin {\n  constructor(\n  /** Reference to the element on which the directive is applied. */\n  elementRef) {\n    this.elementRef = elementRef;\n  }\n\n}\n\nCdkOverlayOrigin.ɵfac = function CdkOverlayOrigin_Factory(t) {\n  return new (t || CdkOverlayOrigin)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n\nCdkOverlayOrigin.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkOverlayOrigin,\n  selectors: [[\"\", \"cdk-overlay-origin\", \"\"], [\"\", \"overlay-origin\", \"\"], [\"\", \"cdkOverlayOrigin\", \"\"]],\n  exportAs: [\"cdkOverlayOrigin\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkOverlayOrigin, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n      exportAs: 'cdkOverlayOrigin'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }];\n  }, null);\n})();\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\n\n\nclass CdkConnectedOverlay {\n  // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n  constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n    this._overlay = _overlay;\n    this._dir = _dir;\n    this._hasBackdrop = false;\n    this._lockPosition = false;\n    this._growAfterOpen = false;\n    this._flexibleDimensions = false;\n    this._push = false;\n    this._backdropSubscription = Subscription.EMPTY;\n    this._attachSubscription = Subscription.EMPTY;\n    this._detachSubscription = Subscription.EMPTY;\n    this._positionSubscription = Subscription.EMPTY;\n    /** Margin between the overlay and the viewport edges. */\n\n    this.viewportMargin = 0;\n    /** Whether the overlay is open. */\n\n    this.open = false;\n    /** Whether the overlay can be closed by user interaction. */\n\n    this.disableClose = false;\n    /** Event emitted when the backdrop is clicked. */\n\n    this.backdropClick = new EventEmitter();\n    /** Event emitted when the position has changed. */\n\n    this.positionChange = new EventEmitter();\n    /** Event emitted when the overlay has been attached. */\n\n    this.attach = new EventEmitter();\n    /** Event emitted when the overlay has been detached. */\n\n    this.detach = new EventEmitter();\n    /** Emits when there are keyboard events that are targeted at the overlay. */\n\n    this.overlayKeydown = new EventEmitter();\n    /** Emits when there are mouse outside click events that are targeted at the overlay. */\n\n    this.overlayOutsideClick = new EventEmitter();\n    this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n    this._scrollStrategyFactory = scrollStrategyFactory;\n    this.scrollStrategy = this._scrollStrategyFactory();\n  }\n  /** The offset in pixels for the overlay connection point on the x-axis */\n\n\n  get offsetX() {\n    return this._offsetX;\n  }\n\n  set offsetX(offsetX) {\n    this._offsetX = offsetX;\n\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n    }\n  }\n  /** The offset in pixels for the overlay connection point on the y-axis */\n\n\n  get offsetY() {\n    return this._offsetY;\n  }\n\n  set offsetY(offsetY) {\n    this._offsetY = offsetY;\n\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n    }\n  }\n  /** Whether or not the overlay should attach a backdrop. */\n\n\n  get hasBackdrop() {\n    return this._hasBackdrop;\n  }\n\n  set hasBackdrop(value) {\n    this._hasBackdrop = coerceBooleanProperty(value);\n  }\n  /** Whether or not the overlay should be locked when scrolling. */\n\n\n  get lockPosition() {\n    return this._lockPosition;\n  }\n\n  set lockPosition(value) {\n    this._lockPosition = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n\n\n  get flexibleDimensions() {\n    return this._flexibleDimensions;\n  }\n\n  set flexibleDimensions(value) {\n    this._flexibleDimensions = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n\n\n  get growAfterOpen() {\n    return this._growAfterOpen;\n  }\n\n  set growAfterOpen(value) {\n    this._growAfterOpen = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n\n\n  get push() {\n    return this._push;\n  }\n\n  set push(value) {\n    this._push = coerceBooleanProperty(value);\n  }\n  /** The associated overlay reference. */\n\n\n  get overlayRef() {\n    return this._overlayRef;\n  }\n  /** The element's layout direction. */\n\n\n  get dir() {\n    return this._dir ? this._dir.value : 'ltr';\n  }\n\n  ngOnDestroy() {\n    this._attachSubscription.unsubscribe();\n\n    this._detachSubscription.unsubscribe();\n\n    this._backdropSubscription.unsubscribe();\n\n    this._positionSubscription.unsubscribe();\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n\n      this._overlayRef.updateSize({\n        width: this.width,\n        minWidth: this.minWidth,\n        height: this.height,\n        minHeight: this.minHeight\n      });\n\n      if (changes['origin'] && this.open) {\n        this._position.apply();\n      }\n    }\n\n    if (changes['open']) {\n      this.open ? this._attachOverlay() : this._detachOverlay();\n    }\n  }\n  /** Creates an overlay */\n\n\n  _createOverlay() {\n    if (!this.positions || !this.positions.length) {\n      this.positions = defaultPositionList;\n    }\n\n    const overlayRef = this._overlayRef = this._overlay.create(this._buildConfig());\n\n    this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n    this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n    overlayRef.keydownEvents().subscribe(event => {\n      this.overlayKeydown.next(event);\n\n      if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n        event.preventDefault();\n\n        this._detachOverlay();\n      }\n    });\n\n    this._overlayRef.outsidePointerEvents().subscribe(event => {\n      this.overlayOutsideClick.next(event);\n    });\n  }\n  /** Builds the overlay config based on the directive's inputs */\n\n\n  _buildConfig() {\n    const positionStrategy = this._position = this.positionStrategy || this._createPositionStrategy();\n\n    const overlayConfig = new OverlayConfig({\n      direction: this._dir,\n      positionStrategy,\n      scrollStrategy: this.scrollStrategy,\n      hasBackdrop: this.hasBackdrop\n    });\n\n    if (this.width || this.width === 0) {\n      overlayConfig.width = this.width;\n    }\n\n    if (this.height || this.height === 0) {\n      overlayConfig.height = this.height;\n    }\n\n    if (this.minWidth || this.minWidth === 0) {\n      overlayConfig.minWidth = this.minWidth;\n    }\n\n    if (this.minHeight || this.minHeight === 0) {\n      overlayConfig.minHeight = this.minHeight;\n    }\n\n    if (this.backdropClass) {\n      overlayConfig.backdropClass = this.backdropClass;\n    }\n\n    if (this.panelClass) {\n      overlayConfig.panelClass = this.panelClass;\n    }\n\n    return overlayConfig;\n  }\n  /** Updates the state of a position strategy, based on the values of the directive inputs. */\n\n\n  _updatePositionStrategy(positionStrategy) {\n    const positions = this.positions.map(currentPosition => ({\n      originX: currentPosition.originX,\n      originY: currentPosition.originY,\n      overlayX: currentPosition.overlayX,\n      overlayY: currentPosition.overlayY,\n      offsetX: currentPosition.offsetX || this.offsetX,\n      offsetY: currentPosition.offsetY || this.offsetY,\n      panelClass: currentPosition.panelClass || undefined\n    }));\n    return positionStrategy.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector);\n  }\n  /** Returns the position strategy of the overlay to be set on the overlay config */\n\n\n  _createPositionStrategy() {\n    const strategy = this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n\n    this._updatePositionStrategy(strategy);\n\n    return strategy;\n  }\n\n  _getFlexibleConnectedPositionStrategyOrigin() {\n    if (this.origin instanceof CdkOverlayOrigin) {\n      return this.origin.elementRef;\n    } else {\n      return this.origin;\n    }\n  }\n  /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n\n\n  _attachOverlay() {\n    if (!this._overlayRef) {\n      this._createOverlay();\n    } else {\n      // Update the overlay size, in case the directive's inputs have changed\n      this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n    }\n\n    if (!this._overlayRef.hasAttached()) {\n      this._overlayRef.attach(this._templatePortal);\n    }\n\n    if (this.hasBackdrop) {\n      this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n        this.backdropClick.emit(event);\n      });\n    } else {\n      this._backdropSubscription.unsubscribe();\n    }\n\n    this._positionSubscription.unsubscribe(); // Only subscribe to `positionChanges` if requested, because putting\n    // together all the information for it can be expensive.\n\n\n    if (this.positionChange.observers.length > 0) {\n      this._positionSubscription = this._position.positionChanges.pipe(takeWhile(() => this.positionChange.observers.length > 0)).subscribe(position => {\n        this.positionChange.emit(position);\n\n        if (this.positionChange.observers.length === 0) {\n          this._positionSubscription.unsubscribe();\n        }\n      });\n    }\n  }\n  /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n\n\n  _detachOverlay() {\n    if (this._overlayRef) {\n      this._overlayRef.detach();\n    }\n\n    this._backdropSubscription.unsubscribe();\n\n    this._positionSubscription.unsubscribe();\n  }\n\n}\n\nCdkConnectedOverlay.ɵfac = function CdkConnectedOverlay_Factory(t) {\n  return new (t || CdkConnectedOverlay)(i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i5.Directionality, 8));\n};\n\nCdkConnectedOverlay.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkConnectedOverlay,\n  selectors: [[\"\", \"cdk-connected-overlay\", \"\"], [\"\", \"connected-overlay\", \"\"], [\"\", \"cdkConnectedOverlay\", \"\"]],\n  inputs: {\n    origin: [\"cdkConnectedOverlayOrigin\", \"origin\"],\n    positions: [\"cdkConnectedOverlayPositions\", \"positions\"],\n    positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"],\n    offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"],\n    offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"],\n    width: [\"cdkConnectedOverlayWidth\", \"width\"],\n    height: [\"cdkConnectedOverlayHeight\", \"height\"],\n    minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"],\n    minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"],\n    backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"],\n    panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"],\n    viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"],\n    scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"],\n    open: [\"cdkConnectedOverlayOpen\", \"open\"],\n    disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"],\n    transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"],\n    hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"],\n    lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"],\n    flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"],\n    growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"],\n    push: [\"cdkConnectedOverlayPush\", \"push\"]\n  },\n  outputs: {\n    backdropClick: \"backdropClick\",\n    positionChange: \"positionChange\",\n    attach: \"attach\",\n    detach: \"detach\",\n    overlayKeydown: \"overlayKeydown\",\n    overlayOutsideClick: \"overlayOutsideClick\"\n  },\n  exportAs: [\"cdkConnectedOverlay\"],\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkConnectedOverlay, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n      exportAs: 'cdkConnectedOverlay'\n    }]\n  }], function () {\n    return [{\n      type: Overlay\n    }, {\n      type: i0.TemplateRef\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n      }]\n    }, {\n      type: i5.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, {\n    origin: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOrigin']\n    }],\n    positions: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPositions']\n    }],\n    positionStrategy: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPositionStrategy']\n    }],\n    offsetX: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOffsetX']\n    }],\n    offsetY: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOffsetY']\n    }],\n    width: [{\n      type: Input,\n      args: ['cdkConnectedOverlayWidth']\n    }],\n    height: [{\n      type: Input,\n      args: ['cdkConnectedOverlayHeight']\n    }],\n    minWidth: [{\n      type: Input,\n      args: ['cdkConnectedOverlayMinWidth']\n    }],\n    minHeight: [{\n      type: Input,\n      args: ['cdkConnectedOverlayMinHeight']\n    }],\n    backdropClass: [{\n      type: Input,\n      args: ['cdkConnectedOverlayBackdropClass']\n    }],\n    panelClass: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPanelClass']\n    }],\n    viewportMargin: [{\n      type: Input,\n      args: ['cdkConnectedOverlayViewportMargin']\n    }],\n    scrollStrategy: [{\n      type: Input,\n      args: ['cdkConnectedOverlayScrollStrategy']\n    }],\n    open: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOpen']\n    }],\n    disableClose: [{\n      type: Input,\n      args: ['cdkConnectedOverlayDisableClose']\n    }],\n    transformOriginSelector: [{\n      type: Input,\n      args: ['cdkConnectedOverlayTransformOriginOn']\n    }],\n    hasBackdrop: [{\n      type: Input,\n      args: ['cdkConnectedOverlayHasBackdrop']\n    }],\n    lockPosition: [{\n      type: Input,\n      args: ['cdkConnectedOverlayLockPosition']\n    }],\n    flexibleDimensions: [{\n      type: Input,\n      args: ['cdkConnectedOverlayFlexibleDimensions']\n    }],\n    growAfterOpen: [{\n      type: Input,\n      args: ['cdkConnectedOverlayGrowAfterOpen']\n    }],\n    push: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPush']\n    }],\n    backdropClick: [{\n      type: Output\n    }],\n    positionChange: [{\n      type: Output\n    }],\n    attach: [{\n      type: Output\n    }],\n    detach: [{\n      type: Output\n    }],\n    overlayKeydown: [{\n      type: Output\n    }],\n    overlayOutsideClick: [{\n      type: Output\n    }]\n  });\n})();\n/** @docs-private */\n\n\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n  return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\n\n\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n  provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nclass OverlayModule {}\n\nOverlayModule.ɵfac = function OverlayModule_Factory(t) {\n  return new (t || OverlayModule)();\n};\n\nOverlayModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: OverlayModule\n});\nOverlayModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n  imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayModule, [{\n    type: NgModule,\n    args: [{\n      imports: [BidiModule, PortalModule, ScrollingModule],\n      exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n      declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n      providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\n\n\nclass FullscreenOverlayContainer extends OverlayContainer {\n  constructor(_document, platform) {\n    super(_document, platform);\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n\n    if (this._fullScreenEventName && this._fullScreenListener) {\n      this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n    }\n  }\n\n  _createContainer() {\n    super._createContainer();\n\n    this._adjustParentForFullscreenChange();\n\n    this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n  }\n\n  _adjustParentForFullscreenChange() {\n    if (!this._containerElement) {\n      return;\n    }\n\n    const fullscreenElement = this.getFullscreenElement();\n    const parent = fullscreenElement || this._document.body;\n    parent.appendChild(this._containerElement);\n  }\n\n  _addFullscreenChangeListener(fn) {\n    const eventName = this._getEventName();\n\n    if (eventName) {\n      if (this._fullScreenListener) {\n        this._document.removeEventListener(eventName, this._fullScreenListener);\n      }\n\n      this._document.addEventListener(eventName, fn);\n\n      this._fullScreenListener = fn;\n    }\n  }\n\n  _getEventName() {\n    if (!this._fullScreenEventName) {\n      const _document = this._document;\n\n      if (_document.fullscreenEnabled) {\n        this._fullScreenEventName = 'fullscreenchange';\n      } else if (_document.webkitFullscreenEnabled) {\n        this._fullScreenEventName = 'webkitfullscreenchange';\n      } else if (_document.mozFullScreenEnabled) {\n        this._fullScreenEventName = 'mozfullscreenchange';\n      } else if (_document.msFullscreenEnabled) {\n        this._fullScreenEventName = 'MSFullscreenChange';\n      }\n    }\n\n    return this._fullScreenEventName;\n  }\n  /**\n   * When the page is put into fullscreen mode, a specific element is specified.\n   * Only that element and its children are visible when in fullscreen mode.\n   */\n\n\n  getFullscreenElement() {\n    const _document = this._document;\n    return _document.fullscreenElement || _document.webkitFullscreenElement || _document.mozFullScreenElement || _document.msFullscreenElement || null;\n  }\n\n}\n\nFullscreenOverlayContainer.ɵfac = function FullscreenOverlayContainer_Factory(t) {\n  return new (t || FullscreenOverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nFullscreenOverlayContainer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FullscreenOverlayContainer,\n  factory: FullscreenOverlayContainer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FullscreenOverlayContainer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/overlay.mjs"],"names":["i1","ScrollingModule","CdkScrollable","ScrollDispatcher","ViewportRuler","i6","DOCUMENT","i0","Injectable","Inject","ElementRef","ApplicationRef","InjectionToken","Directive","EventEmitter","Optional","Input","Output","NgModule","coerceCssPixelValue","coerceArray","coerceBooleanProperty","i1$1","supportsScrollBehavior","_getEventTarget","_isTestEnvironment","i5","BidiModule","DomPortalOutlet","TemplatePortal","PortalModule","Subject","Subscription","merge","take","takeUntil","takeWhile","ESCAPE","hasModifierKey","scrollBehaviorSupported","BlockScrollStrategy","constructor","_viewportRuler","document","_previousHTMLStyles","top","left","_isEnabled","_document","attach","enable","_canBeEnabled","root","documentElement","_previousScrollPosition","getViewportScrollPosition","style","classList","add","disable","html","body","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","remove","window","scroll","contains","viewport","getViewportSize","scrollHeight","height","scrollWidth","width","getMatScrollStrategyAlreadyAttachedError","Error","CloseScrollStrategy","_scrollDispatcher","_ngZone","_config","_scrollSubscription","_detach","_overlayRef","hasAttached","run","detach","overlayRef","ngDevMode","stream","scrolled","threshold","_initialScrollPosition","subscribe","scrollPosition","Math","abs","updatePosition","unsubscribe","NoopScrollStrategy","isElementScrolledOutsideView","element","scrollContainers","some","containerBounds","outsideAbove","bottom","outsideBelow","outsideLeft","right","outsideRight","isElementClippedByScrolling","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","RepositionScrollStrategy","throttle","scrollThrottle","autoClose","overlayRect","overlayElement","getBoundingClientRect","parentRects","ScrollStrategyOptions","noop","close","config","block","reposition","ɵfac","NgZone","ɵprov","type","args","providedIn","undefined","decorators","OverlayConfig","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","Object","keys","key","ConnectionPositionPair","origin","overlay","offsetX","offsetY","originX","originY","overlayX","overlayY","ScrollingVisibility","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","validateVerticalPosition","property","value","validateHorizontalPosition","BaseOverlayDispatcher","_attachedOverlays","ngOnDestroy","push","index","indexOf","splice","length","OverlayKeyboardDispatcher","_keydownListener","event","overlays","i","_keydownEvents","observers","next","_isAttached","addEventListener","removeEventListener","OverlayOutsideClickDispatcher","_platform","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","target","slice","_outsidePointerEvents","IOS","_cursorOriginalValue","cursor","Platform","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","isBrowser","oppositePlatformContainers","querySelectorAll","container","createElement","setAttribute","appendChild","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","EMPTY","_backdropClickHandler","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","hostElement","portal","attachResult","parentElement","_previousHostParent","_updateStackingOrder","_updateElementSize","_updateElementDirection","onStable","pipe","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","_disposeBackdrop","complete","backdropClick","attachments","detachments","keydownEvents","outsidePointerEvents","getConfig","apply","updatePositionStrategy","strategy","updateSize","sizeConfig","setDirection","dir","direction","addPanelClass","classes","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","pointerEvents","showingClass","insertBefore","requestAnimationFrame","runOutsideAngular","nextSibling","parentNode","backdropToDetach","timeoutId","finishDetach","clearTimeout","setTimeout","cssClasses","isAdd","filter","c","subscription","children","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","positions","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","change","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","originRect","viewportRect","flexibleFits","fallback","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","position","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","margin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","_origin","withDefaultOffsetX","offset","withDefaultOffsetY","withTransformOriginOn","selector","_transformOriginSelector","x","startX","_isRtl","endX","y","overlayStartX","overlayStartY","point","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","leftOverflow","rightOverflow","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","verticalFit","horizontalFit","_pushOverlayOnScreen","start","overflowRight","max","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","elements","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","min","previousHeight","isBoundedByRightViewportEdge","isBoundedByLeftViewportEdge","previousWidth","styles","_hasExactPosition","transform","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","trim","virtualKeyboardOffset","documentHeight","clientHeight","horizontalStyleProperty","documentWidth","clientWidth","originBounds","overlayBounds","scrollContainerBounds","map","scrollable","getElementRef","nativeElement","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","reduce","currentValue","currentOverflow","axis","forEach","pair","cssClass","Element","destination","source","hasOwnProperty","input","units","split","parseFloat","clientRect","floor","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","parent","OverlayPositionBuilder","global","flexibleConnectedTo","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","create","host","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","id","_appRef","get","ComponentFactoryResolver","Injector","Directionality","Location","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","ɵdir","exportAs","CdkConnectedOverlay","_overlay","templateRef","viewContainerRef","scrollStrategyFactory","_dir","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","open","disableClose","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","_scrollStrategyFactory","_position","_updatePositionStrategy","lockPosition","ngOnChanges","changes","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","emit","keyCode","preventDefault","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","TemplateRef","ViewContainerRef","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","provide","deps","useFactory","OverlayModule","ɵmod","ɵinj","imports","exports","declarations","providers","FullscreenOverlayContainer","platform","_fullScreenEventName","_fullScreenListener","_adjustParentForFullscreenChange","_addFullscreenChangeListener","fullscreenElement","getFullscreenElement","fn","eventName","_getEventName","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"],"mappings":"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","sourcesContent":["import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Optional, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n    constructor(_viewportRuler, document) {\n        this._viewportRuler = _viewportRuler;\n        this._previousHTMLStyles = { top: '', left: '' };\n        this._isEnabled = false;\n        this._document = document;\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach() { }\n    /** Blocks page-level scroll while the attached overlay is open. */\n    enable() {\n        if (this._canBeEnabled()) {\n            const root = this._document.documentElement;\n            this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n            // Cache the previous inline styles in case the user had set them.\n            this._previousHTMLStyles.left = root.style.left || '';\n            this._previousHTMLStyles.top = root.style.top || '';\n            // Note: we're using the `html` node, instead of the `body`, because the `body` may\n            // have the user agent margin, whereas the `html` is guaranteed not to have one.\n            root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n            root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n            root.classList.add('cdk-global-scrollblock');\n            this._isEnabled = true;\n        }\n    }\n    /** Unblocks page-level scroll while the attached overlay is open. */\n    disable() {\n        if (this._isEnabled) {\n            const html = this._document.documentElement;\n            const body = this._document.body;\n            const htmlStyle = html.style;\n            const bodyStyle = body.style;\n            const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n            const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n            this._isEnabled = false;\n            htmlStyle.left = this._previousHTMLStyles.left;\n            htmlStyle.top = this._previousHTMLStyles.top;\n            html.classList.remove('cdk-global-scrollblock');\n            // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n            // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n            // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n            // because it can throw off feature detections in `supportsScrollBehavior` which\n            // checks for `'scrollBehavior' in documentElement.style`.\n            if (scrollBehaviorSupported) {\n                htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n            }\n            window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n            if (scrollBehaviorSupported) {\n                htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n                bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n            }\n        }\n    }\n    _canBeEnabled() {\n        // Since the scroll strategies can't be singletons, we have to use a global CSS class\n        // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n        // scrolling multiple times.\n        const html = this._document.documentElement;\n        if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n            return false;\n        }\n        const body = this._document.body;\n        const viewport = this._viewportRuler.getViewportSize();\n        return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n    return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n    constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._ngZone = _ngZone;\n        this._viewportRuler = _viewportRuler;\n        this._config = _config;\n        this._scrollSubscription = null;\n        /** Detaches the overlay ref and disables the scroll strategy. */\n        this._detach = () => {\n            this.disable();\n            if (this._overlayRef.hasAttached()) {\n                this._ngZone.run(() => this._overlayRef.detach());\n            }\n        };\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMatScrollStrategyAlreadyAttachedError();\n        }\n        this._overlayRef = overlayRef;\n    }\n    /** Enables the closing of the attached overlay on scroll. */\n    enable() {\n        if (this._scrollSubscription) {\n            return;\n        }\n        const stream = this._scrollDispatcher.scrolled(0);\n        if (this._config && this._config.threshold && this._config.threshold > 1) {\n            this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n            this._scrollSubscription = stream.subscribe(() => {\n                const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n                if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n                    this._detach();\n                }\n                else {\n                    this._overlayRef.updatePosition();\n                }\n            });\n        }\n        else {\n            this._scrollSubscription = stream.subscribe(this._detach);\n        }\n    }\n    /** Disables the closing the attached overlay on scroll. */\n    disable() {\n        if (this._scrollSubscription) {\n            this._scrollSubscription.unsubscribe();\n            this._scrollSubscription = null;\n        }\n    }\n    detach() {\n        this.disable();\n        this._overlayRef = null;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n    /** Does nothing, as this scroll strategy is a no-op. */\n    enable() { }\n    /** Does nothing, as this scroll strategy is a no-op. */\n    disable() { }\n    /** Does nothing, as this scroll strategy is a no-op. */\n    attach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n    return scrollContainers.some(containerBounds => {\n        const outsideAbove = element.bottom < containerBounds.top;\n        const outsideBelow = element.top > containerBounds.bottom;\n        const outsideLeft = element.right < containerBounds.left;\n        const outsideRight = element.left > containerBounds.right;\n        return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n    });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n    return scrollContainers.some(scrollContainerRect => {\n        const clippedAbove = element.top < scrollContainerRect.top;\n        const clippedBelow = element.bottom > scrollContainerRect.bottom;\n        const clippedLeft = element.left < scrollContainerRect.left;\n        const clippedRight = element.right > scrollContainerRect.right;\n        return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n    });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n    constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._viewportRuler = _viewportRuler;\n        this._ngZone = _ngZone;\n        this._config = _config;\n        this._scrollSubscription = null;\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMatScrollStrategyAlreadyAttachedError();\n        }\n        this._overlayRef = overlayRef;\n    }\n    /** Enables repositioning of the attached overlay on scroll. */\n    enable() {\n        if (!this._scrollSubscription) {\n            const throttle = this._config ? this._config.scrollThrottle : 0;\n            this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n                this._overlayRef.updatePosition();\n                // TODO(crisbeto): make `close` on by default once all components can handle it.\n                if (this._config && this._config.autoClose) {\n                    const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n                    const { width, height } = this._viewportRuler.getViewportSize();\n                    // TODO(crisbeto): include all ancestor scroll containers here once\n                    // we have a way of exposing the trigger element to the scroll strategy.\n                    const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n                    if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n                        this.disable();\n                        this._ngZone.run(() => this._overlayRef.detach());\n                    }\n                }\n            });\n        }\n    }\n    /** Disables repositioning of the attached overlay on scroll. */\n    disable() {\n        if (this._scrollSubscription) {\n            this._scrollSubscription.unsubscribe();\n            this._scrollSubscription = null;\n        }\n    }\n    detach() {\n        this.disable();\n        this._overlayRef = null;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n    constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._viewportRuler = _viewportRuler;\n        this._ngZone = _ngZone;\n        /** Do nothing on scroll. */\n        this.noop = () => new NoopScrollStrategy();\n        /**\n         * Close the overlay as soon as the user scrolls.\n         * @param config Configuration to be used inside the scroll strategy.\n         */\n        this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n        /** Block scrolling. */\n        this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n        /**\n         * Update the overlay's position on scroll.\n         * @param config Configuration to be used inside the scroll strategy.\n         * Allows debouncing the reposition calls.\n         */\n        this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n        this._document = document;\n    }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n    constructor(config) {\n        /** Strategy to be used when handling scroll events while the overlay is open. */\n        this.scrollStrategy = new NoopScrollStrategy();\n        /** Custom class to add to the overlay pane. */\n        this.panelClass = '';\n        /** Whether the overlay has a backdrop. */\n        this.hasBackdrop = false;\n        /** Custom class to add to the backdrop */\n        this.backdropClass = 'cdk-overlay-dark-backdrop';\n        /**\n         * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n         * Note that this usually doesn't include clicking on links (unless the user is using\n         * the `HashLocationStrategy`).\n         */\n        this.disposeOnNavigation = false;\n        if (config) {\n            // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n            // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n            // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n            const configKeys = Object.keys(config);\n            for (const key of configKeys) {\n                if (config[key] !== undefined) {\n                    // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n                    // as \"I don't know *which* key this is, so the only valid value is the intersection\n                    // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n                    // is not smart enough to see that the right-hand-side is actually an access of the same\n                    // exact type with the same exact key, meaning that the value type must be identical.\n                    // So we use `any` to work around this.\n                    this[key] = config[key];\n                }\n            }\n        }\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n    constructor(origin, overlay, \n    /** Offset along the X axis. */\n    offsetX, \n    /** Offset along the Y axis. */\n    offsetY, \n    /** Class(es) to be applied to the panel while this position is active. */\n    panelClass) {\n        this.offsetX = offsetX;\n        this.offsetY = offsetY;\n        this.panelClass = panelClass;\n        this.originX = origin.originX;\n        this.originY = origin.originY;\n        this.overlayX = overlay.overlayX;\n        this.overlayY = overlay.overlayY;\n    }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n *       -----------                    -----------\n *       | outside |                    | clipped |\n *       |  view   |              --------------------------\n *       |         |              |     |         |        |\n *       ----------               |     -----------        |\n *  --------------------------    |                        |\n *  |                        |    |      Scrollable        |\n *  |                        |    |                        |\n *  |                        |     --------------------------\n *  |      Scrollable        |\n *  |                        |\n *  --------------------------\n *\n *  @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n    constructor(\n    /** The position used as a result of this change. */\n    connectionPair, \n    /** @docs-private */\n    scrollableViewProperties) {\n        this.connectionPair = connectionPair;\n        this.scrollableViewProperties = scrollableViewProperties;\n    }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n    if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n        throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n            `Expected \"top\", \"bottom\" or \"center\".`);\n    }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n    if (value !== 'start' && value !== 'end' && value !== 'center') {\n        throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n            `Expected \"start\", \"end\" or \"center\".`);\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n    constructor(document) {\n        /** Currently attached overlays in the order they were attached. */\n        this._attachedOverlays = [];\n        this._document = document;\n    }\n    ngOnDestroy() {\n        this.detach();\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        // Ensure that we don't get the same overlay multiple times.\n        this.remove(overlayRef);\n        this._attachedOverlays.push(overlayRef);\n    }\n    /** Remove an overlay from the list of attached overlay refs. */\n    remove(overlayRef) {\n        const index = this._attachedOverlays.indexOf(overlayRef);\n        if (index > -1) {\n            this._attachedOverlays.splice(index, 1);\n        }\n        // Remove the global listener once there are no more overlays.\n        if (this._attachedOverlays.length === 0) {\n            this.detach();\n        }\n    }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n    constructor(document) {\n        super(document);\n        /** Keyboard event listener that will be attached to the body. */\n        this._keydownListener = (event) => {\n            const overlays = this._attachedOverlays;\n            for (let i = overlays.length - 1; i > -1; i--) {\n                // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n                // We want to target the most recent overlay, rather than trying to match where the event came\n                // from, because some components might open an overlay, but keep focus on a trigger element\n                // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n                // because we don't want overlays that don't handle keyboard events to block the ones below\n                // them that do.\n                if (overlays[i]._keydownEvents.observers.length > 0) {\n                    overlays[i]._keydownEvents.next(event);\n                    break;\n                }\n            }\n        };\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        super.add(overlayRef);\n        // Lazily start dispatcher once first overlay is added\n        if (!this._isAttached) {\n            this._document.body.addEventListener('keydown', this._keydownListener);\n            this._isAttached = true;\n        }\n    }\n    /** Detaches the global keyboard event listener. */\n    detach() {\n        if (this._isAttached) {\n            this._document.body.removeEventListener('keydown', this._keydownListener);\n            this._isAttached = false;\n        }\n    }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n    constructor(document, _platform) {\n        super(document);\n        this._platform = _platform;\n        this._cursorStyleIsSet = false;\n        /** Store pointerdown event target to track origin of click. */\n        this._pointerDownListener = (event) => {\n            this._pointerDownEventTarget = _getEventTarget(event);\n        };\n        /** Click event listener that will be attached to the body propagate phase. */\n        this._clickListener = (event) => {\n            const target = _getEventTarget(event);\n            // In case of a click event, we want to check the origin of the click\n            // (e.g. in case where a user starts a click inside the overlay and\n            // releases the click outside of it).\n            // This is done by using the event target of the preceding pointerdown event.\n            // Every click event caused by a pointer device has a preceding pointerdown\n            // event, unless the click was programmatically triggered (e.g. in a unit test).\n            const origin = event.type === 'click' && this._pointerDownEventTarget\n                ? this._pointerDownEventTarget : target;\n            // Reset the stored pointerdown event target, to avoid having it interfere\n            // in subsequent events.\n            this._pointerDownEventTarget = null;\n            // We copy the array because the original may be modified asynchronously if the\n            // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n            // the for loop.\n            const overlays = this._attachedOverlays.slice();\n            // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n            // We want to target all overlays for which the click could be considered as outside click.\n            // As soon as we reach an overlay for which the click is not outside click we break off\n            // the loop.\n            for (let i = overlays.length - 1; i > -1; i--) {\n                const overlayRef = overlays[i];\n                if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n                    continue;\n                }\n                // If it's a click inside the overlay, just break - we should do nothing\n                // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n                // and proceed with the next overlay\n                if (overlayRef.overlayElement.contains(target) ||\n                    overlayRef.overlayElement.contains(origin)) {\n                    break;\n                }\n                overlayRef._outsidePointerEvents.next(event);\n            }\n        };\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        super.add(overlayRef);\n        // Safari on iOS does not generate click events for non-interactive\n        // elements. However, we want to receive a click for any element outside\n        // the overlay. We can force a \"clickable\" state by setting\n        // `cursor: pointer` on the document body. See:\n        // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n        // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n        if (!this._isAttached) {\n            const body = this._document.body;\n            body.addEventListener('pointerdown', this._pointerDownListener, true);\n            body.addEventListener('click', this._clickListener, true);\n            body.addEventListener('auxclick', this._clickListener, true);\n            body.addEventListener('contextmenu', this._clickListener, true);\n            // click event is not fired on iOS. To make element \"clickable\" we are\n            // setting the cursor to pointer\n            if (this._platform.IOS && !this._cursorStyleIsSet) {\n                this._cursorOriginalValue = body.style.cursor;\n                body.style.cursor = 'pointer';\n                this._cursorStyleIsSet = true;\n            }\n            this._isAttached = true;\n        }\n    }\n    /** Detaches the global keyboard event listener. */\n    detach() {\n        if (this._isAttached) {\n            const body = this._document.body;\n            body.removeEventListener('pointerdown', this._pointerDownListener, true);\n            body.removeEventListener('click', this._clickListener, true);\n            body.removeEventListener('auxclick', this._clickListener, true);\n            body.removeEventListener('contextmenu', this._clickListener, true);\n            if (this._platform.IOS && this._cursorStyleIsSet) {\n                body.style.cursor = this._cursorOriginalValue;\n                this._cursorStyleIsSet = false;\n            }\n            this._isAttached = false;\n        }\n    }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n    constructor(document, _platform) {\n        this._platform = _platform;\n        this._document = document;\n    }\n    ngOnDestroy() {\n        this._containerElement?.remove();\n    }\n    /**\n     * This method returns the overlay container element. It will lazily\n     * create the element the first time it is called to facilitate using\n     * the container in non-browser environments.\n     * @returns the container element\n     */\n    getContainerElement() {\n        if (!this._containerElement) {\n            this._createContainer();\n        }\n        return this._containerElement;\n    }\n    /**\n     * Create the overlay container element, which is simply a div\n     * with the 'cdk-overlay-container' class on the document body.\n     */\n    _createContainer() {\n        const containerClass = 'cdk-overlay-container';\n        // TODO(crisbeto): remove the testing check once we have an overlay testing\n        // module or Angular starts tearing down the testing `NgModule`. See:\n        // https://github.com/angular/angular/issues/18831\n        if (this._platform.isBrowser || _isTestEnvironment()) {\n            const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n            // Remove any old containers from the opposite platform.\n            // This can happen when transitioning from the server to the client.\n            for (let i = 0; i < oppositePlatformContainers.length; i++) {\n                oppositePlatformContainers[i].remove();\n            }\n        }\n        const container = this._document.createElement('div');\n        container.classList.add(containerClass);\n        // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n        // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n        // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n        // To mitigate the problem we made it so that only containers from a different platform are\n        // cleared, but the side-effect was that people started depending on the overly-aggressive\n        // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n        // module which does the cleanup, we try to detect that we're in a test environment and we\n        // always clear the container. See #17006.\n        // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n        if (_isTestEnvironment()) {\n            container.setAttribute('platform', 'test');\n        }\n        else if (!this._platform.isBrowser) {\n            container.setAttribute('platform', 'server');\n        }\n        this._document.body.appendChild(container);\n        this._containerElement = container;\n    }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n    constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n        this._portalOutlet = _portalOutlet;\n        this._host = _host;\n        this._pane = _pane;\n        this._config = _config;\n        this._ngZone = _ngZone;\n        this._keyboardDispatcher = _keyboardDispatcher;\n        this._document = _document;\n        this._location = _location;\n        this._outsideClickDispatcher = _outsideClickDispatcher;\n        this._backdropElement = null;\n        this._backdropClick = new Subject();\n        this._attachments = new Subject();\n        this._detachments = new Subject();\n        this._locationChanges = Subscription.EMPTY;\n        this._backdropClickHandler = (event) => this._backdropClick.next(event);\n        /** Stream of keydown events dispatched to this overlay. */\n        this._keydownEvents = new Subject();\n        /** Stream of mouse outside events dispatched to this overlay. */\n        this._outsidePointerEvents = new Subject();\n        if (_config.scrollStrategy) {\n            this._scrollStrategy = _config.scrollStrategy;\n            this._scrollStrategy.attach(this);\n        }\n        this._positionStrategy = _config.positionStrategy;\n    }\n    /** The overlay's HTML element */\n    get overlayElement() {\n        return this._pane;\n    }\n    /** The overlay's backdrop HTML element. */\n    get backdropElement() {\n        return this._backdropElement;\n    }\n    /**\n     * Wrapper around the panel element. Can be used for advanced\n     * positioning where a wrapper with specific styling is\n     * required around the overlay pane.\n     */\n    get hostElement() {\n        return this._host;\n    }\n    /**\n     * Attaches content, given via a Portal, to the overlay.\n     * If the overlay is configured to have a backdrop, it will be created.\n     *\n     * @param portal Portal instance to which to attach the overlay.\n     * @returns The portal attachment result.\n     */\n    attach(portal) {\n        let attachResult = this._portalOutlet.attach(portal);\n        // Update the pane element with the given configuration.\n        if (!this._host.parentElement && this._previousHostParent) {\n            this._previousHostParent.appendChild(this._host);\n        }\n        if (this._positionStrategy) {\n            this._positionStrategy.attach(this);\n        }\n        this._updateStackingOrder();\n        this._updateElementSize();\n        this._updateElementDirection();\n        if (this._scrollStrategy) {\n            this._scrollStrategy.enable();\n        }\n        // Update the position once the zone is stable so that the overlay will be fully rendered\n        // before attempting to position it, as the position may depend on the size of the rendered\n        // content.\n        this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n            // The overlay could've been detached before the zone has stabilized.\n            if (this.hasAttached()) {\n                this.updatePosition();\n            }\n        });\n        // Enable pointer events for the overlay pane element.\n        this._togglePointerEvents(true);\n        if (this._config.hasBackdrop) {\n            this._attachBackdrop();\n        }\n        if (this._config.panelClass) {\n            this._toggleClasses(this._pane, this._config.panelClass, true);\n        }\n        // Only emit the `attachments` event once all other setup is done.\n        this._attachments.next();\n        // Track this overlay by the keyboard dispatcher\n        this._keyboardDispatcher.add(this);\n        if (this._config.disposeOnNavigation) {\n            this._locationChanges = this._location.subscribe(() => this.dispose());\n        }\n        this._outsideClickDispatcher.add(this);\n        return attachResult;\n    }\n    /**\n     * Detaches an overlay from a portal.\n     * @returns The portal detachment result.\n     */\n    detach() {\n        if (!this.hasAttached()) {\n            return;\n        }\n        this.detachBackdrop();\n        // When the overlay is detached, the pane element should disable pointer events.\n        // This is necessary because otherwise the pane element will cover the page and disable\n        // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n        this._togglePointerEvents(false);\n        if (this._positionStrategy && this._positionStrategy.detach) {\n            this._positionStrategy.detach();\n        }\n        if (this._scrollStrategy) {\n            this._scrollStrategy.disable();\n        }\n        const detachmentResult = this._portalOutlet.detach();\n        // Only emit after everything is detached.\n        this._detachments.next();\n        // Remove this overlay from keyboard dispatcher tracking.\n        this._keyboardDispatcher.remove(this);\n        // Keeping the host element in the DOM can cause scroll jank, because it still gets\n        // rendered, even though it's transparent and unclickable which is why we remove it.\n        this._detachContentWhenStable();\n        this._locationChanges.unsubscribe();\n        this._outsideClickDispatcher.remove(this);\n        return detachmentResult;\n    }\n    /** Cleans up the overlay from the DOM. */\n    dispose() {\n        const isAttached = this.hasAttached();\n        if (this._positionStrategy) {\n            this._positionStrategy.dispose();\n        }\n        this._disposeScrollStrategy();\n        this._disposeBackdrop(this._backdropElement);\n        this._locationChanges.unsubscribe();\n        this._keyboardDispatcher.remove(this);\n        this._portalOutlet.dispose();\n        this._attachments.complete();\n        this._backdropClick.complete();\n        this._keydownEvents.complete();\n        this._outsidePointerEvents.complete();\n        this._outsideClickDispatcher.remove(this);\n        this._host?.remove();\n        this._previousHostParent = this._pane = this._host = null;\n        if (isAttached) {\n            this._detachments.next();\n        }\n        this._detachments.complete();\n    }\n    /** Whether the overlay has attached content. */\n    hasAttached() {\n        return this._portalOutlet.hasAttached();\n    }\n    /** Gets an observable that emits when the backdrop has been clicked. */\n    backdropClick() {\n        return this._backdropClick;\n    }\n    /** Gets an observable that emits when the overlay has been attached. */\n    attachments() {\n        return this._attachments;\n    }\n    /** Gets an observable that emits when the overlay has been detached. */\n    detachments() {\n        return this._detachments;\n    }\n    /** Gets an observable of keydown events targeted to this overlay. */\n    keydownEvents() {\n        return this._keydownEvents;\n    }\n    /** Gets an observable of pointer events targeted outside this overlay. */\n    outsidePointerEvents() {\n        return this._outsidePointerEvents;\n    }\n    /** Gets the current overlay configuration, which is immutable. */\n    getConfig() {\n        return this._config;\n    }\n    /** Updates the position of the overlay based on the position strategy. */\n    updatePosition() {\n        if (this._positionStrategy) {\n            this._positionStrategy.apply();\n        }\n    }\n    /** Switches to a new position strategy and updates the overlay position. */\n    updatePositionStrategy(strategy) {\n        if (strategy === this._positionStrategy) {\n            return;\n        }\n        if (this._positionStrategy) {\n            this._positionStrategy.dispose();\n        }\n        this._positionStrategy = strategy;\n        if (this.hasAttached()) {\n            strategy.attach(this);\n            this.updatePosition();\n        }\n    }\n    /** Update the size properties of the overlay. */\n    updateSize(sizeConfig) {\n        this._config = { ...this._config, ...sizeConfig };\n        this._updateElementSize();\n    }\n    /** Sets the LTR/RTL direction for the overlay. */\n    setDirection(dir) {\n        this._config = { ...this._config, direction: dir };\n        this._updateElementDirection();\n    }\n    /** Add a CSS class or an array of classes to the overlay pane. */\n    addPanelClass(classes) {\n        if (this._pane) {\n            this._toggleClasses(this._pane, classes, true);\n        }\n    }\n    /** Remove a CSS class or an array of classes from the overlay pane. */\n    removePanelClass(classes) {\n        if (this._pane) {\n            this._toggleClasses(this._pane, classes, false);\n        }\n    }\n    /**\n     * Returns the layout direction of the overlay panel.\n     */\n    getDirection() {\n        const direction = this._config.direction;\n        if (!direction) {\n            return 'ltr';\n        }\n        return typeof direction === 'string' ? direction : direction.value;\n    }\n    /** Switches to a new scroll strategy. */\n    updateScrollStrategy(strategy) {\n        if (strategy === this._scrollStrategy) {\n            return;\n        }\n        this._disposeScrollStrategy();\n        this._scrollStrategy = strategy;\n        if (this.hasAttached()) {\n            strategy.attach(this);\n            strategy.enable();\n        }\n    }\n    /** Updates the text direction of the overlay panel. */\n    _updateElementDirection() {\n        this._host.setAttribute('dir', this.getDirection());\n    }\n    /** Updates the size of the overlay element based on the overlay config. */\n    _updateElementSize() {\n        if (!this._pane) {\n            return;\n        }\n        const style = this._pane.style;\n        style.width = coerceCssPixelValue(this._config.width);\n        style.height = coerceCssPixelValue(this._config.height);\n        style.minWidth = coerceCssPixelValue(this._config.minWidth);\n        style.minHeight = coerceCssPixelValue(this._config.minHeight);\n        style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n        style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n    }\n    /** Toggles the pointer events for the overlay pane element. */\n    _togglePointerEvents(enablePointer) {\n        this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n    }\n    /** Attaches a backdrop for this overlay. */\n    _attachBackdrop() {\n        const showingClass = 'cdk-overlay-backdrop-showing';\n        this._backdropElement = this._document.createElement('div');\n        this._backdropElement.classList.add('cdk-overlay-backdrop');\n        if (this._config.backdropClass) {\n            this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n        }\n        // Insert the backdrop before the pane in the DOM order,\n        // in order to handle stacked overlays properly.\n        this._host.parentElement.insertBefore(this._backdropElement, this._host);\n        // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n        // action desired when such a click occurs (usually closing the overlay).\n        this._backdropElement.addEventListener('click', this._backdropClickHandler);\n        // Add class to fade-in the backdrop after one frame.\n        if (typeof requestAnimationFrame !== 'undefined') {\n            this._ngZone.runOutsideAngular(() => {\n                requestAnimationFrame(() => {\n                    if (this._backdropElement) {\n                        this._backdropElement.classList.add(showingClass);\n                    }\n                });\n            });\n        }\n        else {\n            this._backdropElement.classList.add(showingClass);\n        }\n    }\n    /**\n     * Updates the stacking order of the element, moving it to the top if necessary.\n     * This is required in cases where one overlay was detached, while another one,\n     * that should be behind it, was destroyed. The next time both of them are opened,\n     * the stacking will be wrong, because the detached element's pane will still be\n     * in its original DOM position.\n     */\n    _updateStackingOrder() {\n        if (this._host.nextSibling) {\n            this._host.parentNode.appendChild(this._host);\n        }\n    }\n    /** Detaches the backdrop (if any) associated with the overlay. */\n    detachBackdrop() {\n        const backdropToDetach = this._backdropElement;\n        if (!backdropToDetach) {\n            return;\n        }\n        let timeoutId;\n        const finishDetach = () => {\n            // It may not be attached to anything in certain cases (e.g. unit tests).\n            if (backdropToDetach) {\n                backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n                backdropToDetach.removeEventListener('transitionend', finishDetach);\n                this._disposeBackdrop(backdropToDetach);\n            }\n            if (this._config.backdropClass) {\n                this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n            }\n            clearTimeout(timeoutId);\n        };\n        backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n        this._ngZone.runOutsideAngular(() => {\n            backdropToDetach.addEventListener('transitionend', finishDetach);\n        });\n        // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n        // In this case we make it unclickable and we try to remove it after a delay.\n        backdropToDetach.style.pointerEvents = 'none';\n        // Run this outside the Angular zone because there's nothing that Angular cares about.\n        // If it were to run inside the Angular zone, every test that used Overlay would have to be\n        // either async or fakeAsync.\n        timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n    }\n    /** Toggles a single CSS class or an array of classes on an element. */\n    _toggleClasses(element, cssClasses, isAdd) {\n        const classes = coerceArray(cssClasses || []).filter(c => !!c);\n        if (classes.length) {\n            isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n        }\n    }\n    /** Detaches the overlay content next time the zone stabilizes. */\n    _detachContentWhenStable() {\n        // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n        // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n        // be patched to run inside the zone, which will throw us into an infinite loop.\n        this._ngZone.runOutsideAngular(() => {\n            // We can't remove the host here immediately, because the overlay pane's content\n            // might still be animating. This stream helps us avoid interrupting the animation\n            // by waiting for the pane to become empty.\n            const subscription = this._ngZone.onStable\n                .pipe(takeUntil(merge(this._attachments, this._detachments)))\n                .subscribe(() => {\n                // Needs a couple of checks for the pane and host, because\n                // they may have been removed by the time the zone stabilizes.\n                if (!this._pane || !this._host || this._pane.children.length === 0) {\n                    if (this._pane && this._config.panelClass) {\n                        this._toggleClasses(this._pane, this._config.panelClass, false);\n                    }\n                    if (this._host && this._host.parentElement) {\n                        this._previousHostParent = this._host.parentElement;\n                        this._host.remove();\n                    }\n                    subscription.unsubscribe();\n                }\n            });\n        });\n    }\n    /** Disposes of a scroll strategy. */\n    _disposeScrollStrategy() {\n        const scrollStrategy = this._scrollStrategy;\n        if (scrollStrategy) {\n            scrollStrategy.disable();\n            if (scrollStrategy.detach) {\n                scrollStrategy.detach();\n            }\n        }\n    }\n    /** Removes a backdrop element from the DOM. */\n    _disposeBackdrop(backdrop) {\n        if (backdrop) {\n            backdrop.remove();\n            // It is possible that a new portal has been attached to this overlay since we started\n            // removing the backdrop. If that is the case, only clear the backdrop reference if it\n            // is still the same instance that we started to remove.\n            if (this._backdropElement === backdrop) {\n                this._backdropElement = null;\n            }\n        }\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n    constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n        this._viewportRuler = _viewportRuler;\n        this._document = _document;\n        this._platform = _platform;\n        this._overlayContainer = _overlayContainer;\n        /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n        this._lastBoundingBoxSize = { width: 0, height: 0 };\n        /** Whether the overlay was pushed in a previous positioning. */\n        this._isPushed = false;\n        /** Whether the overlay can be pushed on-screen on the initial open. */\n        this._canPush = true;\n        /** Whether the overlay can grow via flexible width/height after the initial open. */\n        this._growAfterOpen = false;\n        /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n        this._hasFlexibleDimensions = true;\n        /** Whether the overlay position is locked. */\n        this._positionLocked = false;\n        /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n        this._viewportMargin = 0;\n        /** The Scrollable containers used to check scrollable view properties on position change. */\n        this._scrollables = [];\n        /** Ordered list of preferred positions, from most to least desirable. */\n        this._preferredPositions = [];\n        /** Subject that emits whenever the position changes. */\n        this._positionChanges = new Subject();\n        /** Subscription to viewport size changes. */\n        this._resizeSubscription = Subscription.EMPTY;\n        /** Default offset for the overlay along the x axis. */\n        this._offsetX = 0;\n        /** Default offset for the overlay along the y axis. */\n        this._offsetY = 0;\n        /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n        this._appliedPanelClasses = [];\n        /** Observable sequence of position changes. */\n        this.positionChanges = this._positionChanges;\n        this.setOrigin(connectedTo);\n    }\n    /** Ordered list of preferred positions, from most to least desirable. */\n    get positions() {\n        return this._preferredPositions;\n    }\n    /** Attaches this position strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef &&\n            overlayRef !== this._overlayRef &&\n            (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('This position strategy is already attached to an overlay');\n        }\n        this._validatePositions();\n        overlayRef.hostElement.classList.add(boundingBoxClass);\n        this._overlayRef = overlayRef;\n        this._boundingBox = overlayRef.hostElement;\n        this._pane = overlayRef.overlayElement;\n        this._isDisposed = false;\n        this._isInitialRender = true;\n        this._lastPosition = null;\n        this._resizeSubscription.unsubscribe();\n        this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n            // When the window is resized, we want to trigger the next reposition as if it\n            // was an initial render, in order for the strategy to pick a new optimal position,\n            // otherwise position locking will cause it to stay at the old one.\n            this._isInitialRender = true;\n            this.apply();\n        });\n    }\n    /**\n     * Updates the position of the overlay element, using whichever preferred position relative\n     * to the origin best fits on-screen.\n     *\n     * The selection of a position goes as follows:\n     *  - If any positions fit completely within the viewport as-is,\n     *      choose the first position that does so.\n     *  - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n     *      choose the position with the greatest available size modified by the positions' weight.\n     *  - If pushing is enabled, take the position that went off-screen the least and push it\n     *      on-screen.\n     *  - If none of the previous criteria were met, use the position that goes off-screen the least.\n     * @docs-private\n     */\n    apply() {\n        // We shouldn't do anything if the strategy was disposed or we're on the server.\n        if (this._isDisposed || !this._platform.isBrowser) {\n            return;\n        }\n        // If the position has been applied already (e.g. when the overlay was opened) and the\n        // consumer opted into locking in the position, re-use the old position, in order to\n        // prevent the overlay from jumping around.\n        if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n            this.reapplyLastPosition();\n            return;\n        }\n        this._clearPanelClasses();\n        this._resetOverlayElementStyles();\n        this._resetBoundingBoxStyles();\n        // We need the bounding rects for the origin and the overlay to determine how to position\n        // the overlay relative to the origin.\n        // We use the viewport rect to determine whether a position would go off-screen.\n        this._viewportRect = this._getNarrowedViewportRect();\n        this._originRect = this._getOriginRect();\n        this._overlayRect = this._pane.getBoundingClientRect();\n        const originRect = this._originRect;\n        const overlayRect = this._overlayRect;\n        const viewportRect = this._viewportRect;\n        // Positions where the overlay will fit with flexible dimensions.\n        const flexibleFits = [];\n        // Fallback if none of the preferred positions fit within the viewport.\n        let fallback;\n        // Go through each of the preferred positions looking for a good fit.\n        // If a good fit is found, it will be applied immediately.\n        for (let pos of this._preferredPositions) {\n            // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n            let originPoint = this._getOriginPoint(originRect, pos);\n            // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n            // overlay in this position. We use the top-left corner for calculations and later translate\n            // this into an appropriate (top, left, bottom, right) style.\n            let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n            // Calculate how well the overlay would fit into the viewport with this point.\n            let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n            // If the overlay, without any further work, fits into the viewport, use this position.\n            if (overlayFit.isCompletelyWithinViewport) {\n                this._isPushed = false;\n                this._applyPosition(pos, originPoint);\n                return;\n            }\n            // If the overlay has flexible dimensions, we can use this position\n            // so long as there's enough space for the minimum dimensions.\n            if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n                // Save positions where the overlay will fit with flexible dimensions. We will use these\n                // if none of the positions fit *without* flexible dimensions.\n                flexibleFits.push({\n                    position: pos,\n                    origin: originPoint,\n                    overlayRect,\n                    boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n                });\n                continue;\n            }\n            // If the current preferred position does not fit on the screen, remember the position\n            // if it has more visible area on-screen than we've seen and move onto the next preferred\n            // position.\n            if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n                fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n            }\n        }\n        // If there are any positions where the overlay would fit with flexible dimensions, choose the\n        // one that has the greatest area available modified by the position's weight\n        if (flexibleFits.length) {\n            let bestFit = null;\n            let bestScore = -1;\n            for (const fit of flexibleFits) {\n                const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n                if (score > bestScore) {\n                    bestScore = score;\n                    bestFit = fit;\n                }\n            }\n            this._isPushed = false;\n            this._applyPosition(bestFit.position, bestFit.origin);\n            return;\n        }\n        // When none of the preferred positions fit within the viewport, take the position\n        // that went off-screen the least and attempt to push it on-screen.\n        if (this._canPush) {\n            // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n            this._isPushed = true;\n            this._applyPosition(fallback.position, fallback.originPoint);\n            return;\n        }\n        // All options for getting the overlay within the viewport have been exhausted, so go with the\n        // position that went off-screen the least.\n        this._applyPosition(fallback.position, fallback.originPoint);\n    }\n    detach() {\n        this._clearPanelClasses();\n        this._lastPosition = null;\n        this._previousPushAmount = null;\n        this._resizeSubscription.unsubscribe();\n    }\n    /** Cleanup after the element gets destroyed. */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        // We can't use `_resetBoundingBoxStyles` here, because it resets\n        // some properties to zero, rather than removing them.\n        if (this._boundingBox) {\n            extendStyles(this._boundingBox.style, {\n                top: '',\n                left: '',\n                right: '',\n                bottom: '',\n                height: '',\n                width: '',\n                alignItems: '',\n                justifyContent: '',\n            });\n        }\n        if (this._pane) {\n            this._resetOverlayElementStyles();\n        }\n        if (this._overlayRef) {\n            this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n        }\n        this.detach();\n        this._positionChanges.complete();\n        this._overlayRef = this._boundingBox = null;\n        this._isDisposed = true;\n    }\n    /**\n     * This re-aligns the overlay element with the trigger in its last calculated position,\n     * even if a position higher in the \"preferred positions\" list would now fit. This\n     * allows one to re-align the panel without changing the orientation of the panel.\n     */\n    reapplyLastPosition() {\n        if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n            this._originRect = this._getOriginRect();\n            this._overlayRect = this._pane.getBoundingClientRect();\n            this._viewportRect = this._getNarrowedViewportRect();\n            const lastPosition = this._lastPosition || this._preferredPositions[0];\n            const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n            this._applyPosition(lastPosition, originPoint);\n        }\n    }\n    /**\n     * Sets the list of Scrollable containers that host the origin element so that\n     * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n     * Scrollable must be an ancestor element of the strategy's origin element.\n     */\n    withScrollableContainers(scrollables) {\n        this._scrollables = scrollables;\n        return this;\n    }\n    /**\n     * Adds new preferred positions.\n     * @param positions List of positions options for this overlay.\n     */\n    withPositions(positions) {\n        this._preferredPositions = positions;\n        // If the last calculated position object isn't part of the positions anymore, clear\n        // it in order to avoid it being picked up if the consumer tries to re-apply.\n        if (positions.indexOf(this._lastPosition) === -1) {\n            this._lastPosition = null;\n        }\n        this._validatePositions();\n        return this;\n    }\n    /**\n     * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n     * @param margin Required margin between the overlay and the viewport edge in pixels.\n     */\n    withViewportMargin(margin) {\n        this._viewportMargin = margin;\n        return this;\n    }\n    /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n    withFlexibleDimensions(flexibleDimensions = true) {\n        this._hasFlexibleDimensions = flexibleDimensions;\n        return this;\n    }\n    /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n    withGrowAfterOpen(growAfterOpen = true) {\n        this._growAfterOpen = growAfterOpen;\n        return this;\n    }\n    /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n    withPush(canPush = true) {\n        this._canPush = canPush;\n        return this;\n    }\n    /**\n     * Sets whether the overlay's position should be locked in after it is positioned\n     * initially. When an overlay is locked in, it won't attempt to reposition itself\n     * when the position is re-applied (e.g. when the user scrolls away).\n     * @param isLocked Whether the overlay should locked in.\n     */\n    withLockedPosition(isLocked = true) {\n        this._positionLocked = isLocked;\n        return this;\n    }\n    /**\n     * Sets the origin, relative to which to position the overlay.\n     * Using an element origin is useful for building components that need to be positioned\n     * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n     * used for cases like contextual menus which open relative to the user's pointer.\n     * @param origin Reference to the new origin.\n     */\n    setOrigin(origin) {\n        this._origin = origin;\n        return this;\n    }\n    /**\n     * Sets the default offset for the overlay's connection point on the x-axis.\n     * @param offset New offset in the X axis.\n     */\n    withDefaultOffsetX(offset) {\n        this._offsetX = offset;\n        return this;\n    }\n    /**\n     * Sets the default offset for the overlay's connection point on the y-axis.\n     * @param offset New offset in the Y axis.\n     */\n    withDefaultOffsetY(offset) {\n        this._offsetY = offset;\n        return this;\n    }\n    /**\n     * Configures that the position strategy should set a `transform-origin` on some elements\n     * inside the overlay, depending on the current position that is being applied. This is\n     * useful for the cases where the origin of an animation can change depending on the\n     * alignment of the overlay.\n     * @param selector CSS selector that will be used to find the target\n     *    elements onto which to set the transform origin.\n     */\n    withTransformOriginOn(selector) {\n        this._transformOriginSelector = selector;\n        return this;\n    }\n    /**\n     * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n     */\n    _getOriginPoint(originRect, pos) {\n        let x;\n        if (pos.originX == 'center') {\n            // Note: when centering we should always use the `left`\n            // offset, otherwise the position will be wrong in RTL.\n            x = originRect.left + originRect.width / 2;\n        }\n        else {\n            const startX = this._isRtl() ? originRect.right : originRect.left;\n            const endX = this._isRtl() ? originRect.left : originRect.right;\n            x = pos.originX == 'start' ? startX : endX;\n        }\n        let y;\n        if (pos.originY == 'center') {\n            y = originRect.top + originRect.height / 2;\n        }\n        else {\n            y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n        }\n        return { x, y };\n    }\n    /**\n     * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n     * origin point to which the overlay should be connected.\n     */\n    _getOverlayPoint(originPoint, overlayRect, pos) {\n        // Calculate the (overlayStartX, overlayStartY), the start of the\n        // potential overlay position relative to the origin point.\n        let overlayStartX;\n        if (pos.overlayX == 'center') {\n            overlayStartX = -overlayRect.width / 2;\n        }\n        else if (pos.overlayX === 'start') {\n            overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n        }\n        else {\n            overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n        }\n        let overlayStartY;\n        if (pos.overlayY == 'center') {\n            overlayStartY = -overlayRect.height / 2;\n        }\n        else {\n            overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n        }\n        // The (x, y) coordinates of the overlay.\n        return {\n            x: originPoint.x + overlayStartX,\n            y: originPoint.y + overlayStartY,\n        };\n    }\n    /** Gets how well an overlay at the given point will fit within the viewport. */\n    _getOverlayFit(point, rawOverlayRect, viewport, position) {\n        // Round the overlay rect when comparing against the\n        // viewport, because the viewport is always rounded.\n        const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n        let { x, y } = point;\n        let offsetX = this._getOffset(position, 'x');\n        let offsetY = this._getOffset(position, 'y');\n        // Account for the offsets since they could push the overlay out of the viewport.\n        if (offsetX) {\n            x += offsetX;\n        }\n        if (offsetY) {\n            y += offsetY;\n        }\n        // How much the overlay would overflow at this position, on each side.\n        let leftOverflow = 0 - x;\n        let rightOverflow = x + overlay.width - viewport.width;\n        let topOverflow = 0 - y;\n        let bottomOverflow = y + overlay.height - viewport.height;\n        // Visible parts of the element on each axis.\n        let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n        let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n        let visibleArea = visibleWidth * visibleHeight;\n        return {\n            visibleArea,\n            isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n            fitsInViewportVertically: visibleHeight === overlay.height,\n            fitsInViewportHorizontally: visibleWidth == overlay.width,\n        };\n    }\n    /**\n     * Whether the overlay can fit within the viewport when it may resize either its width or height.\n     * @param fit How well the overlay fits in the viewport at some position.\n     * @param point The (x, y) coordinates of the overlat at some position.\n     * @param viewport The geometry of the viewport.\n     */\n    _canFitWithFlexibleDimensions(fit, point, viewport) {\n        if (this._hasFlexibleDimensions) {\n            const availableHeight = viewport.bottom - point.y;\n            const availableWidth = viewport.right - point.x;\n            const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n            const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n            const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n            const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n            return verticalFit && horizontalFit;\n        }\n        return false;\n    }\n    /**\n     * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n     * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n     * right and bottom).\n     *\n     * @param start Starting point from which the overlay is pushed.\n     * @param overlay Dimensions of the overlay.\n     * @param scrollPosition Current viewport scroll position.\n     * @returns The point at which to position the overlay after pushing. This is effectively a new\n     *     originPoint.\n     */\n    _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n        // If the position is locked and we've pushed the overlay already, reuse the previous push\n        // amount, rather than pushing it again. If we were to continue pushing, the element would\n        // remain in the viewport, which goes against the expectations when position locking is enabled.\n        if (this._previousPushAmount && this._positionLocked) {\n            return {\n                x: start.x + this._previousPushAmount.x,\n                y: start.y + this._previousPushAmount.y,\n            };\n        }\n        // Round the overlay rect when comparing against the\n        // viewport, because the viewport is always rounded.\n        const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n        const viewport = this._viewportRect;\n        // Determine how much the overlay goes outside the viewport on each\n        // side, which we'll use to decide which direction to push it.\n        const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n        const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n        const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n        const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n        // Amount by which to push the overlay in each axis such that it remains on-screen.\n        let pushX = 0;\n        let pushY = 0;\n        // If the overlay fits completely within the bounds of the viewport, push it from whichever\n        // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n        // viewport and allow for the trailing end of the overlay to go out of bounds.\n        if (overlay.width <= viewport.width) {\n            pushX = overflowLeft || -overflowRight;\n        }\n        else {\n            pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n        }\n        if (overlay.height <= viewport.height) {\n            pushY = overflowTop || -overflowBottom;\n        }\n        else {\n            pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n        }\n        this._previousPushAmount = { x: pushX, y: pushY };\n        return {\n            x: start.x + pushX,\n            y: start.y + pushY,\n        };\n    }\n    /**\n     * Applies a computed position to the overlay and emits a position change.\n     * @param position The position preference\n     * @param originPoint The point on the origin element where the overlay is connected.\n     */\n    _applyPosition(position, originPoint) {\n        this._setTransformOrigin(position);\n        this._setOverlayElementStyles(originPoint, position);\n        this._setBoundingBoxStyles(originPoint, position);\n        if (position.panelClass) {\n            this._addPanelClasses(position.panelClass);\n        }\n        // Save the last connected position in case the position needs to be re-calculated.\n        this._lastPosition = position;\n        // Notify that the position has been changed along with its change properties.\n        // We only emit if we've got any subscriptions, because the scroll visibility\n        // calculcations can be somewhat expensive.\n        if (this._positionChanges.observers.length) {\n            const scrollableViewProperties = this._getScrollVisibility();\n            const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n            this._positionChanges.next(changeEvent);\n        }\n        this._isInitialRender = false;\n    }\n    /** Sets the transform origin based on the configured selector and the passed-in position.  */\n    _setTransformOrigin(position) {\n        if (!this._transformOriginSelector) {\n            return;\n        }\n        const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n        let xOrigin;\n        let yOrigin = position.overlayY;\n        if (position.overlayX === 'center') {\n            xOrigin = 'center';\n        }\n        else if (this._isRtl()) {\n            xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n        }\n        else {\n            xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n        }\n        for (let i = 0; i < elements.length; i++) {\n            elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n        }\n    }\n    /**\n     * Gets the position and size of the overlay's sizing container.\n     *\n     * This method does no measuring and applies no styles so that we can cheaply compute the\n     * bounds for all positions and choose the best fit based on these results.\n     */\n    _calculateBoundingBoxRect(origin, position) {\n        const viewport = this._viewportRect;\n        const isRtl = this._isRtl();\n        let height, top, bottom;\n        if (position.overlayY === 'top') {\n            // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n            top = origin.y;\n            height = viewport.height - top + this._viewportMargin;\n        }\n        else if (position.overlayY === 'bottom') {\n            // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n            // the viewport margin back in, because the viewport rect is narrowed down to remove the\n            // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n            bottom = viewport.height - origin.y + this._viewportMargin * 2;\n            height = viewport.height - bottom + this._viewportMargin;\n        }\n        else {\n            // If neither top nor bottom, it means that the overlay is vertically centered on the\n            // origin point. Note that we want the position relative to the viewport, rather than\n            // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n            // `origin.y - viewport.top`.\n            const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n            const previousHeight = this._lastBoundingBoxSize.height;\n            height = smallestDistanceToViewportEdge * 2;\n            top = origin.y - smallestDistanceToViewportEdge;\n            if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n                top = origin.y - previousHeight / 2;\n            }\n        }\n        // The overlay is opening 'right-ward' (the content flows to the right).\n        const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n        // The overlay is opening 'left-ward' (the content flows to the left).\n        const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n        let width, left, right;\n        if (isBoundedByLeftViewportEdge) {\n            right = viewport.width - origin.x + this._viewportMargin;\n            width = origin.x - this._viewportMargin;\n        }\n        else if (isBoundedByRightViewportEdge) {\n            left = origin.x;\n            width = viewport.right - origin.x;\n        }\n        else {\n            // If neither start nor end, it means that the overlay is horizontally centered on the\n            // origin point. Note that we want the position relative to the viewport, rather than\n            // the page, which is why we don't use something like `viewport.right - origin.x` and\n            // `origin.x - viewport.left`.\n            const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n            const previousWidth = this._lastBoundingBoxSize.width;\n            width = smallestDistanceToViewportEdge * 2;\n            left = origin.x - smallestDistanceToViewportEdge;\n            if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n                left = origin.x - previousWidth / 2;\n            }\n        }\n        return { top: top, left: left, bottom: bottom, right: right, width, height };\n    }\n    /**\n     * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n     * origin's connection point and stetches to the bounds of the viewport.\n     *\n     * @param origin The point on the origin element where the overlay is connected.\n     * @param position The position preference\n     */\n    _setBoundingBoxStyles(origin, position) {\n        const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n        // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n        // when applying a new size.\n        if (!this._isInitialRender && !this._growAfterOpen) {\n            boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n            boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n        }\n        const styles = {};\n        if (this._hasExactPosition()) {\n            styles.top = styles.left = '0';\n            styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n            styles.width = styles.height = '100%';\n        }\n        else {\n            const maxHeight = this._overlayRef.getConfig().maxHeight;\n            const maxWidth = this._overlayRef.getConfig().maxWidth;\n            styles.height = coerceCssPixelValue(boundingBoxRect.height);\n            styles.top = coerceCssPixelValue(boundingBoxRect.top);\n            styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n            styles.width = coerceCssPixelValue(boundingBoxRect.width);\n            styles.left = coerceCssPixelValue(boundingBoxRect.left);\n            styles.right = coerceCssPixelValue(boundingBoxRect.right);\n            // Push the pane content towards the proper direction.\n            if (position.overlayX === 'center') {\n                styles.alignItems = 'center';\n            }\n            else {\n                styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n            }\n            if (position.overlayY === 'center') {\n                styles.justifyContent = 'center';\n            }\n            else {\n                styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n            }\n            if (maxHeight) {\n                styles.maxHeight = coerceCssPixelValue(maxHeight);\n            }\n            if (maxWidth) {\n                styles.maxWidth = coerceCssPixelValue(maxWidth);\n            }\n        }\n        this._lastBoundingBoxSize = boundingBoxRect;\n        extendStyles(this._boundingBox.style, styles);\n    }\n    /** Resets the styles for the bounding box so that a new positioning can be computed. */\n    _resetBoundingBoxStyles() {\n        extendStyles(this._boundingBox.style, {\n            top: '0',\n            left: '0',\n            right: '0',\n            bottom: '0',\n            height: '',\n            width: '',\n            alignItems: '',\n            justifyContent: '',\n        });\n    }\n    /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n    _resetOverlayElementStyles() {\n        extendStyles(this._pane.style, {\n            top: '',\n            left: '',\n            bottom: '',\n            right: '',\n            position: '',\n            transform: '',\n        });\n    }\n    /** Sets positioning styles to the overlay element. */\n    _setOverlayElementStyles(originPoint, position) {\n        const styles = {};\n        const hasExactPosition = this._hasExactPosition();\n        const hasFlexibleDimensions = this._hasFlexibleDimensions;\n        const config = this._overlayRef.getConfig();\n        if (hasExactPosition) {\n            const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n            extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n            extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n        }\n        else {\n            styles.position = 'static';\n        }\n        // Use a transform to apply the offsets. We do this because the `center` positions rely on\n        // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n        // off the position. We also can't use margins, because they won't have an effect in some\n        // cases where the element doesn't have anything to \"push off of\". Finally, this works\n        // better both with flexible and non-flexible positioning.\n        let transformString = '';\n        let offsetX = this._getOffset(position, 'x');\n        let offsetY = this._getOffset(position, 'y');\n        if (offsetX) {\n            transformString += `translateX(${offsetX}px) `;\n        }\n        if (offsetY) {\n            transformString += `translateY(${offsetY}px)`;\n        }\n        styles.transform = transformString.trim();\n        // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n        // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n        // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n        // Note that this doesn't apply when we have an exact position, in which case we do want to\n        // apply them because they'll be cleared from the bounding box.\n        if (config.maxHeight) {\n            if (hasExactPosition) {\n                styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n            }\n            else if (hasFlexibleDimensions) {\n                styles.maxHeight = '';\n            }\n        }\n        if (config.maxWidth) {\n            if (hasExactPosition) {\n                styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n            }\n            else if (hasFlexibleDimensions) {\n                styles.maxWidth = '';\n            }\n        }\n        extendStyles(this._pane.style, styles);\n    }\n    /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n    _getExactOverlayY(position, originPoint, scrollPosition) {\n        // Reset any existing styles. This is necessary in case the\n        // preferred position has changed since the last `apply`.\n        let styles = { top: '', bottom: '' };\n        let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n        if (this._isPushed) {\n            overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n        }\n        let virtualKeyboardOffset = this._overlayContainer\n            .getContainerElement()\n            .getBoundingClientRect().top;\n        // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n        // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n        // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n        // otherwise our positioning will be thrown off.\n        overlayPoint.y -= virtualKeyboardOffset;\n        // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n        // above or below the origin and the direction in which the element will expand.\n        if (position.overlayY === 'bottom') {\n            // When using `bottom`, we adjust the y position such that it is the distance\n            // from the bottom of the viewport rather than the top.\n            const documentHeight = this._document.documentElement.clientHeight;\n            styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n        }\n        else {\n            styles.top = coerceCssPixelValue(overlayPoint.y);\n        }\n        return styles;\n    }\n    /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n    _getExactOverlayX(position, originPoint, scrollPosition) {\n        // Reset any existing styles. This is necessary in case the preferred position has\n        // changed since the last `apply`.\n        let styles = { left: '', right: '' };\n        let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n        if (this._isPushed) {\n            overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n        }\n        // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n        // or \"after\" the origin, which determines the direction in which the element will expand.\n        // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n        // page is in RTL or LTR.\n        let horizontalStyleProperty;\n        if (this._isRtl()) {\n            horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n        }\n        else {\n            horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n        }\n        // When we're setting `right`, we adjust the x position such that it is the distance\n        // from the right edge of the viewport rather than the left edge.\n        if (horizontalStyleProperty === 'right') {\n            const documentWidth = this._document.documentElement.clientWidth;\n            styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n        }\n        else {\n            styles.left = coerceCssPixelValue(overlayPoint.x);\n        }\n        return styles;\n    }\n    /**\n     * Gets the view properties of the trigger and overlay, including whether they are clipped\n     * or completely outside the view of any of the strategy's scrollables.\n     */\n    _getScrollVisibility() {\n        // Note: needs fresh rects since the position could've changed.\n        const originBounds = this._getOriginRect();\n        const overlayBounds = this._pane.getBoundingClientRect();\n        // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n        // every time, we should be able to use the scrollTop of the containers if the size of those\n        // containers hasn't changed.\n        const scrollContainerBounds = this._scrollables.map(scrollable => {\n            return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n        });\n        return {\n            isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n            isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n            isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n            isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n        };\n    }\n    /** Subtracts the amount that an element is overflowing on an axis from its length. */\n    _subtractOverflows(length, ...overflows) {\n        return overflows.reduce((currentValue, currentOverflow) => {\n            return currentValue - Math.max(currentOverflow, 0);\n        }, length);\n    }\n    /** Narrows the given viewport rect by the current _viewportMargin. */\n    _getNarrowedViewportRect() {\n        // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n        // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n        // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n        // and `innerHeight` that do. This is necessary, because the overlay container uses\n        // 100% `width` and `height` which don't include the scrollbar either.\n        const width = this._document.documentElement.clientWidth;\n        const height = this._document.documentElement.clientHeight;\n        const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n        return {\n            top: scrollPosition.top + this._viewportMargin,\n            left: scrollPosition.left + this._viewportMargin,\n            right: scrollPosition.left + width - this._viewportMargin,\n            bottom: scrollPosition.top + height - this._viewportMargin,\n            width: width - 2 * this._viewportMargin,\n            height: height - 2 * this._viewportMargin,\n        };\n    }\n    /** Whether the we're dealing with an RTL context */\n    _isRtl() {\n        return this._overlayRef.getDirection() === 'rtl';\n    }\n    /** Determines whether the overlay uses exact or flexible positioning. */\n    _hasExactPosition() {\n        return !this._hasFlexibleDimensions || this._isPushed;\n    }\n    /** Retrieves the offset of a position along the x or y axis. */\n    _getOffset(position, axis) {\n        if (axis === 'x') {\n            // We don't do something like `position['offset' + axis]` in\n            // order to avoid breking minifiers that rename properties.\n            return position.offsetX == null ? this._offsetX : position.offsetX;\n        }\n        return position.offsetY == null ? this._offsetY : position.offsetY;\n    }\n    /** Validates that the current position match the expected values. */\n    _validatePositions() {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (!this._preferredPositions.length) {\n                throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n            }\n            // TODO(crisbeto): remove these once Angular's template type\n            // checking is advanced enough to catch these cases.\n            this._preferredPositions.forEach(pair => {\n                validateHorizontalPosition('originX', pair.originX);\n                validateVerticalPosition('originY', pair.originY);\n                validateHorizontalPosition('overlayX', pair.overlayX);\n                validateVerticalPosition('overlayY', pair.overlayY);\n            });\n        }\n    }\n    /** Adds a single CSS class or an array of classes on the overlay panel. */\n    _addPanelClasses(cssClasses) {\n        if (this._pane) {\n            coerceArray(cssClasses).forEach(cssClass => {\n                if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n                    this._appliedPanelClasses.push(cssClass);\n                    this._pane.classList.add(cssClass);\n                }\n            });\n        }\n    }\n    /** Clears the classes that the position strategy has applied from the overlay panel. */\n    _clearPanelClasses() {\n        if (this._pane) {\n            this._appliedPanelClasses.forEach(cssClass => {\n                this._pane.classList.remove(cssClass);\n            });\n            this._appliedPanelClasses = [];\n        }\n    }\n    /** Returns the ClientRect of the current origin. */\n    _getOriginRect() {\n        const origin = this._origin;\n        if (origin instanceof ElementRef) {\n            return origin.nativeElement.getBoundingClientRect();\n        }\n        // Check for Element so SVG elements are also supported.\n        if (origin instanceof Element) {\n            return origin.getBoundingClientRect();\n        }\n        const width = origin.width || 0;\n        const height = origin.height || 0;\n        // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n        return {\n            top: origin.y,\n            bottom: origin.y + height,\n            left: origin.x,\n            right: origin.x + width,\n            height,\n            width,\n        };\n    }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n    for (let key in source) {\n        if (source.hasOwnProperty(key)) {\n            destination[key] = source[key];\n        }\n    }\n    return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n    if (typeof input !== 'number' && input != null) {\n        const [value, units] = input.split(cssUnitPattern);\n        return !units || units === 'px' ? parseFloat(value) : null;\n    }\n    return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n    return {\n        top: Math.floor(clientRect.top),\n        right: Math.floor(clientRect.right),\n        bottom: Math.floor(clientRect.bottom),\n        left: Math.floor(clientRect.left),\n        width: Math.floor(clientRect.width),\n        height: Math.floor(clientRect.height),\n    };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n    constructor() {\n        this._cssPosition = 'static';\n        this._topOffset = '';\n        this._bottomOffset = '';\n        this._leftOffset = '';\n        this._rightOffset = '';\n        this._alignItems = '';\n        this._justifyContent = '';\n        this._width = '';\n        this._height = '';\n    }\n    attach(overlayRef) {\n        const config = overlayRef.getConfig();\n        this._overlayRef = overlayRef;\n        if (this._width && !config.width) {\n            overlayRef.updateSize({ width: this._width });\n        }\n        if (this._height && !config.height) {\n            overlayRef.updateSize({ height: this._height });\n        }\n        overlayRef.hostElement.classList.add(wrapperClass);\n        this._isDisposed = false;\n    }\n    /**\n     * Sets the top position of the overlay. Clears any previously set vertical position.\n     * @param value New top offset.\n     */\n    top(value = '') {\n        this._bottomOffset = '';\n        this._topOffset = value;\n        this._alignItems = 'flex-start';\n        return this;\n    }\n    /**\n     * Sets the left position of the overlay. Clears any previously set horizontal position.\n     * @param value New left offset.\n     */\n    left(value = '') {\n        this._rightOffset = '';\n        this._leftOffset = value;\n        this._justifyContent = 'flex-start';\n        return this;\n    }\n    /**\n     * Sets the bottom position of the overlay. Clears any previously set vertical position.\n     * @param value New bottom offset.\n     */\n    bottom(value = '') {\n        this._topOffset = '';\n        this._bottomOffset = value;\n        this._alignItems = 'flex-end';\n        return this;\n    }\n    /**\n     * Sets the right position of the overlay. Clears any previously set horizontal position.\n     * @param value New right offset.\n     */\n    right(value = '') {\n        this._leftOffset = '';\n        this._rightOffset = value;\n        this._justifyContent = 'flex-end';\n        return this;\n    }\n    /**\n     * Sets the overlay width and clears any previously set width.\n     * @param value New width for the overlay\n     * @deprecated Pass the `width` through the `OverlayConfig`.\n     * @breaking-change 8.0.0\n     */\n    width(value = '') {\n        if (this._overlayRef) {\n            this._overlayRef.updateSize({ width: value });\n        }\n        else {\n            this._width = value;\n        }\n        return this;\n    }\n    /**\n     * Sets the overlay height and clears any previously set height.\n     * @param value New height for the overlay\n     * @deprecated Pass the `height` through the `OverlayConfig`.\n     * @breaking-change 8.0.0\n     */\n    height(value = '') {\n        if (this._overlayRef) {\n            this._overlayRef.updateSize({ height: value });\n        }\n        else {\n            this._height = value;\n        }\n        return this;\n    }\n    /**\n     * Centers the overlay horizontally with an optional offset.\n     * Clears any previously set horizontal position.\n     *\n     * @param offset Overlay offset from the horizontal center.\n     */\n    centerHorizontally(offset = '') {\n        this.left(offset);\n        this._justifyContent = 'center';\n        return this;\n    }\n    /**\n     * Centers the overlay vertically with an optional offset.\n     * Clears any previously set vertical position.\n     *\n     * @param offset Overlay offset from the vertical center.\n     */\n    centerVertically(offset = '') {\n        this.top(offset);\n        this._alignItems = 'center';\n        return this;\n    }\n    /**\n     * Apply the position to the element.\n     * @docs-private\n     */\n    apply() {\n        // Since the overlay ref applies the strategy asynchronously, it could\n        // have been disposed before it ends up being applied. If that is the\n        // case, we shouldn't do anything.\n        if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n            return;\n        }\n        const styles = this._overlayRef.overlayElement.style;\n        const parentStyles = this._overlayRef.hostElement.style;\n        const config = this._overlayRef.getConfig();\n        const { width, height, maxWidth, maxHeight } = config;\n        const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n            (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n        const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n            (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n        styles.position = this._cssPosition;\n        styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n        styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n        styles.marginBottom = this._bottomOffset;\n        styles.marginRight = this._rightOffset;\n        if (shouldBeFlushHorizontally) {\n            parentStyles.justifyContent = 'flex-start';\n        }\n        else if (this._justifyContent === 'center') {\n            parentStyles.justifyContent = 'center';\n        }\n        else if (this._overlayRef.getConfig().direction === 'rtl') {\n            // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n            // don't want that because our positioning is explicitly `left` and `right`, hence\n            // why we do another inversion to ensure that the overlay stays in the same position.\n            // TODO: reconsider this if we add `start` and `end` methods.\n            if (this._justifyContent === 'flex-start') {\n                parentStyles.justifyContent = 'flex-end';\n            }\n            else if (this._justifyContent === 'flex-end') {\n                parentStyles.justifyContent = 'flex-start';\n            }\n        }\n        else {\n            parentStyles.justifyContent = this._justifyContent;\n        }\n        parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n    }\n    /**\n     * Cleans up the DOM changes from the position strategy.\n     * @docs-private\n     */\n    dispose() {\n        if (this._isDisposed || !this._overlayRef) {\n            return;\n        }\n        const styles = this._overlayRef.overlayElement.style;\n        const parent = this._overlayRef.hostElement;\n        const parentStyles = parent.style;\n        parent.classList.remove(wrapperClass);\n        parentStyles.justifyContent =\n            parentStyles.alignItems =\n                styles.marginTop =\n                    styles.marginBottom =\n                        styles.marginLeft =\n                            styles.marginRight =\n                                styles.position =\n                                    '';\n        this._overlayRef = null;\n        this._isDisposed = true;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n    constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n        this._viewportRuler = _viewportRuler;\n        this._document = _document;\n        this._platform = _platform;\n        this._overlayContainer = _overlayContainer;\n    }\n    /**\n     * Creates a global position strategy.\n     */\n    global() {\n        return new GlobalPositionStrategy();\n    }\n    /**\n     * Creates a flexible position strategy.\n     * @param origin Origin relative to which to position the overlay.\n     */\n    flexibleConnectedTo(origin) {\n        return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n    }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }, { type: OverlayContainer }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n    constructor(\n    /** Scrolling strategies that can be used when creating an overlay. */\n    scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n        this.scrollStrategies = scrollStrategies;\n        this._overlayContainer = _overlayContainer;\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._positionBuilder = _positionBuilder;\n        this._keyboardDispatcher = _keyboardDispatcher;\n        this._injector = _injector;\n        this._ngZone = _ngZone;\n        this._document = _document;\n        this._directionality = _directionality;\n        this._location = _location;\n        this._outsideClickDispatcher = _outsideClickDispatcher;\n    }\n    /**\n     * Creates an overlay.\n     * @param config Configuration applied to the overlay.\n     * @returns Reference to the created overlay.\n     */\n    create(config) {\n        const host = this._createHostElement();\n        const pane = this._createPaneElement(host);\n        const portalOutlet = this._createPortalOutlet(pane);\n        const overlayConfig = new OverlayConfig(config);\n        overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n        return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n    }\n    /**\n     * Gets a position builder that can be used, via fluent API,\n     * to construct and configure a position strategy.\n     * @returns An overlay position builder.\n     */\n    position() {\n        return this._positionBuilder;\n    }\n    /**\n     * Creates the DOM element for an overlay and appends it to the overlay container.\n     * @returns Newly-created pane element\n     */\n    _createPaneElement(host) {\n        const pane = this._document.createElement('div');\n        pane.id = `cdk-overlay-${nextUniqueId++}`;\n        pane.classList.add('cdk-overlay-pane');\n        host.appendChild(pane);\n        return pane;\n    }\n    /**\n     * Creates the host element that wraps around an overlay\n     * and can be used for advanced positioning.\n     * @returns Newly-create host element.\n     */\n    _createHostElement() {\n        const host = this._document.createElement('div');\n        this._overlayContainer.getContainerElement().appendChild(host);\n        return host;\n    }\n    /**\n     * Create a DomPortalOutlet into which the overlay content can be loaded.\n     * @param pane The DOM element to turn into a portal outlet.\n     * @returns A portal outlet for the given DOM element.\n     */\n    _createPortalOutlet(pane) {\n        // We have to resolve the ApplicationRef later in order to allow people\n        // to use overlay-based providers during app initialization.\n        if (!this._appRef) {\n            this._appRef = this._injector.get(ApplicationRef);\n        }\n        return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n    }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, decorators: [{\n            type: Injectable\n        }], ctorParameters: function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n    {\n        originX: 'start',\n        originY: 'bottom',\n        overlayX: 'start',\n        overlayY: 'top',\n    },\n    {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'bottom',\n    },\n    {\n        originX: 'end',\n        originY: 'top',\n        overlayX: 'end',\n        overlayY: 'bottom',\n    },\n    {\n        originX: 'end',\n        originY: 'bottom',\n        overlayX: 'end',\n        overlayY: 'top',\n    },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n    constructor(\n    /** Reference to the element on which the directive is applied. */\n    elementRef) {\n        this.elementRef = elementRef;\n    }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n                    exportAs: 'cdkOverlayOrigin',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n    // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n    constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n        this._overlay = _overlay;\n        this._dir = _dir;\n        this._hasBackdrop = false;\n        this._lockPosition = false;\n        this._growAfterOpen = false;\n        this._flexibleDimensions = false;\n        this._push = false;\n        this._backdropSubscription = Subscription.EMPTY;\n        this._attachSubscription = Subscription.EMPTY;\n        this._detachSubscription = Subscription.EMPTY;\n        this._positionSubscription = Subscription.EMPTY;\n        /** Margin between the overlay and the viewport edges. */\n        this.viewportMargin = 0;\n        /** Whether the overlay is open. */\n        this.open = false;\n        /** Whether the overlay can be closed by user interaction. */\n        this.disableClose = false;\n        /** Event emitted when the backdrop is clicked. */\n        this.backdropClick = new EventEmitter();\n        /** Event emitted when the position has changed. */\n        this.positionChange = new EventEmitter();\n        /** Event emitted when the overlay has been attached. */\n        this.attach = new EventEmitter();\n        /** Event emitted when the overlay has been detached. */\n        this.detach = new EventEmitter();\n        /** Emits when there are keyboard events that are targeted at the overlay. */\n        this.overlayKeydown = new EventEmitter();\n        /** Emits when there are mouse outside click events that are targeted at the overlay. */\n        this.overlayOutsideClick = new EventEmitter();\n        this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n        this._scrollStrategyFactory = scrollStrategyFactory;\n        this.scrollStrategy = this._scrollStrategyFactory();\n    }\n    /** The offset in pixels for the overlay connection point on the x-axis */\n    get offsetX() {\n        return this._offsetX;\n    }\n    set offsetX(offsetX) {\n        this._offsetX = offsetX;\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n        }\n    }\n    /** The offset in pixels for the overlay connection point on the y-axis */\n    get offsetY() {\n        return this._offsetY;\n    }\n    set offsetY(offsetY) {\n        this._offsetY = offsetY;\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n        }\n    }\n    /** Whether or not the overlay should attach a backdrop. */\n    get hasBackdrop() {\n        return this._hasBackdrop;\n    }\n    set hasBackdrop(value) {\n        this._hasBackdrop = coerceBooleanProperty(value);\n    }\n    /** Whether or not the overlay should be locked when scrolling. */\n    get lockPosition() {\n        return this._lockPosition;\n    }\n    set lockPosition(value) {\n        this._lockPosition = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n    get flexibleDimensions() {\n        return this._flexibleDimensions;\n    }\n    set flexibleDimensions(value) {\n        this._flexibleDimensions = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n    get growAfterOpen() {\n        return this._growAfterOpen;\n    }\n    set growAfterOpen(value) {\n        this._growAfterOpen = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n    get push() {\n        return this._push;\n    }\n    set push(value) {\n        this._push = coerceBooleanProperty(value);\n    }\n    /** The associated overlay reference. */\n    get overlayRef() {\n        return this._overlayRef;\n    }\n    /** The element's layout direction. */\n    get dir() {\n        return this._dir ? this._dir.value : 'ltr';\n    }\n    ngOnDestroy() {\n        this._attachSubscription.unsubscribe();\n        this._detachSubscription.unsubscribe();\n        this._backdropSubscription.unsubscribe();\n        this._positionSubscription.unsubscribe();\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n        }\n    }\n    ngOnChanges(changes) {\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n            this._overlayRef.updateSize({\n                width: this.width,\n                minWidth: this.minWidth,\n                height: this.height,\n                minHeight: this.minHeight,\n            });\n            if (changes['origin'] && this.open) {\n                this._position.apply();\n            }\n        }\n        if (changes['open']) {\n            this.open ? this._attachOverlay() : this._detachOverlay();\n        }\n    }\n    /** Creates an overlay */\n    _createOverlay() {\n        if (!this.positions || !this.positions.length) {\n            this.positions = defaultPositionList;\n        }\n        const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n        this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n        this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n        overlayRef.keydownEvents().subscribe((event) => {\n            this.overlayKeydown.next(event);\n            if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n                event.preventDefault();\n                this._detachOverlay();\n            }\n        });\n        this._overlayRef.outsidePointerEvents().subscribe((event) => {\n            this.overlayOutsideClick.next(event);\n        });\n    }\n    /** Builds the overlay config based on the directive's inputs */\n    _buildConfig() {\n        const positionStrategy = (this._position =\n            this.positionStrategy || this._createPositionStrategy());\n        const overlayConfig = new OverlayConfig({\n            direction: this._dir,\n            positionStrategy,\n            scrollStrategy: this.scrollStrategy,\n            hasBackdrop: this.hasBackdrop,\n        });\n        if (this.width || this.width === 0) {\n            overlayConfig.width = this.width;\n        }\n        if (this.height || this.height === 0) {\n            overlayConfig.height = this.height;\n        }\n        if (this.minWidth || this.minWidth === 0) {\n            overlayConfig.minWidth = this.minWidth;\n        }\n        if (this.minHeight || this.minHeight === 0) {\n            overlayConfig.minHeight = this.minHeight;\n        }\n        if (this.backdropClass) {\n            overlayConfig.backdropClass = this.backdropClass;\n        }\n        if (this.panelClass) {\n            overlayConfig.panelClass = this.panelClass;\n        }\n        return overlayConfig;\n    }\n    /** Updates the state of a position strategy, based on the values of the directive inputs. */\n    _updatePositionStrategy(positionStrategy) {\n        const positions = this.positions.map(currentPosition => ({\n            originX: currentPosition.originX,\n            originY: currentPosition.originY,\n            overlayX: currentPosition.overlayX,\n            overlayY: currentPosition.overlayY,\n            offsetX: currentPosition.offsetX || this.offsetX,\n            offsetY: currentPosition.offsetY || this.offsetY,\n            panelClass: currentPosition.panelClass || undefined,\n        }));\n        return positionStrategy\n            .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n            .withPositions(positions)\n            .withFlexibleDimensions(this.flexibleDimensions)\n            .withPush(this.push)\n            .withGrowAfterOpen(this.growAfterOpen)\n            .withViewportMargin(this.viewportMargin)\n            .withLockedPosition(this.lockPosition)\n            .withTransformOriginOn(this.transformOriginSelector);\n    }\n    /** Returns the position strategy of the overlay to be set on the overlay config */\n    _createPositionStrategy() {\n        const strategy = this._overlay\n            .position()\n            .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n        this._updatePositionStrategy(strategy);\n        return strategy;\n    }\n    _getFlexibleConnectedPositionStrategyOrigin() {\n        if (this.origin instanceof CdkOverlayOrigin) {\n            return this.origin.elementRef;\n        }\n        else {\n            return this.origin;\n        }\n    }\n    /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n    _attachOverlay() {\n        if (!this._overlayRef) {\n            this._createOverlay();\n        }\n        else {\n            // Update the overlay size, in case the directive's inputs have changed\n            this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n        }\n        if (!this._overlayRef.hasAttached()) {\n            this._overlayRef.attach(this._templatePortal);\n        }\n        if (this.hasBackdrop) {\n            this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n                this.backdropClick.emit(event);\n            });\n        }\n        else {\n            this._backdropSubscription.unsubscribe();\n        }\n        this._positionSubscription.unsubscribe();\n        // Only subscribe to `positionChanges` if requested, because putting\n        // together all the information for it can be expensive.\n        if (this.positionChange.observers.length > 0) {\n            this._positionSubscription = this._position.positionChanges\n                .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n                .subscribe(position => {\n                this.positionChange.emit(position);\n                if (this.positionChange.observers.length === 0) {\n                    this._positionSubscription.unsubscribe();\n                }\n            });\n        }\n    }\n    /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n    _detachOverlay() {\n        if (this._overlayRef) {\n            this._overlayRef.detach();\n        }\n        this._backdropSubscription.unsubscribe();\n        this._positionSubscription.unsubscribe();\n    }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n                    exportAs: 'cdkConnectedOverlay',\n                }]\n        }], ctorParameters: function () { return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n                }] }, { type: i5.Directionality, decorators: [{\n                    type: Optional\n                }] }]; }, propDecorators: { origin: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOrigin']\n            }], positions: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPositions']\n            }], positionStrategy: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPositionStrategy']\n            }], offsetX: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOffsetX']\n            }], offsetY: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOffsetY']\n            }], width: [{\n                type: Input,\n                args: ['cdkConnectedOverlayWidth']\n            }], height: [{\n                type: Input,\n                args: ['cdkConnectedOverlayHeight']\n            }], minWidth: [{\n                type: Input,\n                args: ['cdkConnectedOverlayMinWidth']\n            }], minHeight: [{\n                type: Input,\n                args: ['cdkConnectedOverlayMinHeight']\n            }], backdropClass: [{\n                type: Input,\n                args: ['cdkConnectedOverlayBackdropClass']\n            }], panelClass: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPanelClass']\n            }], viewportMargin: [{\n                type: Input,\n                args: ['cdkConnectedOverlayViewportMargin']\n            }], scrollStrategy: [{\n                type: Input,\n                args: ['cdkConnectedOverlayScrollStrategy']\n            }], open: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOpen']\n            }], disableClose: [{\n                type: Input,\n                args: ['cdkConnectedOverlayDisableClose']\n            }], transformOriginSelector: [{\n                type: Input,\n                args: ['cdkConnectedOverlayTransformOriginOn']\n            }], hasBackdrop: [{\n                type: Input,\n                args: ['cdkConnectedOverlayHasBackdrop']\n            }], lockPosition: [{\n                type: Input,\n                args: ['cdkConnectedOverlayLockPosition']\n            }], flexibleDimensions: [{\n                type: Input,\n                args: ['cdkConnectedOverlayFlexibleDimensions']\n            }], growAfterOpen: [{\n                type: Input,\n                args: ['cdkConnectedOverlayGrowAfterOpen']\n            }], push: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPush']\n            }], backdropClick: [{\n                type: Output\n            }], positionChange: [{\n                type: Output\n            }], attach: [{\n                type: Output\n            }], detach: [{\n                type: Output\n            }], overlayKeydown: [{\n                type: Output\n            }], overlayOutsideClick: [{\n                type: Output\n            }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n    return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n    provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [BidiModule, PortalModule, ScrollingModule],\n                    exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n                    declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n                    providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n    constructor(_document, platform) {\n        super(_document, platform);\n    }\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        if (this._fullScreenEventName && this._fullScreenListener) {\n            this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n        }\n    }\n    _createContainer() {\n        super._createContainer();\n        this._adjustParentForFullscreenChange();\n        this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n    }\n    _adjustParentForFullscreenChange() {\n        if (!this._containerElement) {\n            return;\n        }\n        const fullscreenElement = this.getFullscreenElement();\n        const parent = fullscreenElement || this._document.body;\n        parent.appendChild(this._containerElement);\n    }\n    _addFullscreenChangeListener(fn) {\n        const eventName = this._getEventName();\n        if (eventName) {\n            if (this._fullScreenListener) {\n                this._document.removeEventListener(eventName, this._fullScreenListener);\n            }\n            this._document.addEventListener(eventName, fn);\n            this._fullScreenListener = fn;\n        }\n    }\n    _getEventName() {\n        if (!this._fullScreenEventName) {\n            const _document = this._document;\n            if (_document.fullscreenEnabled) {\n                this._fullScreenEventName = 'fullscreenchange';\n            }\n            else if (_document.webkitFullscreenEnabled) {\n                this._fullScreenEventName = 'webkitfullscreenchange';\n            }\n            else if (_document.mozFullScreenEnabled) {\n                this._fullScreenEventName = 'mozfullscreenchange';\n            }\n            else if (_document.msFullscreenEnabled) {\n                this._fullScreenEventName = 'MSFullscreenChange';\n            }\n        }\n        return this._fullScreenEventName;\n    }\n    /**\n     * When the page is put into fullscreen mode, a specific element is specified.\n     * Only that element and its children are visible when in fullscreen mode.\n     */\n    getFullscreenElement() {\n        const _document = this._document;\n        return (_document.fullscreenElement ||\n            _document.webkitFullscreenElement ||\n            _document.mozFullScreenElement ||\n            _document.msFullscreenElement ||\n            null);\n    }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\nconst _c0 = [\"itemsContainer\"];\n\nfunction Carousel_div_1_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 11);\n    i0.ɵɵprojection(1);\n    i0.ɵɵtemplate(2, Carousel_div_1_ng_container_2_Template, 1, 0, \"ng-container\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate);\n  }\n}\n\nconst _c1 = function (a1) {\n  return {\n    \"p-carousel-prev p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c2 = function (a1, a2) {\n  return {\n    \"p-carousel-prev-icon pi\": true,\n    \"pi-chevron-left\": a1,\n    \"pi-chevron-up\": a2\n  };\n};\n\nfunction Carousel_button_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r11 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 13);\n    i0.ɵɵlistener(\"click\", function Carousel_button_4_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c1, ctx_r1.isBackwardNavDisabled()))(\"disabled\", ctx_r1.isBackwardNavDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c2, !ctx_r1.isVertical(), ctx_r1.isVertical()));\n  }\n}\n\nfunction Carousel_div_8_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c3 = function (a1, a2, a3) {\n  return {\n    \"p-carousel-item p-carousel-item-cloned\": true,\n    \"p-carousel-item-active\": a1,\n    \"p-carousel-item-start\": a2,\n    \"p-carousel-item-end\": a3\n  };\n};\n\nconst _c4 = function (a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction Carousel_div_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_8_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r12 = ctx.$implicit;\n    const index_r13 = ctx.index;\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c3, ctx_r3.totalShiftedItems * -1 === ctx_r3.value.length, 0 === index_r13, ctx_r3.clonedItemsForStarting.length - 1 === index_r13));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r12));\n  }\n}\n\nfunction Carousel_div_9_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c5 = function (a1, a2, a3) {\n  return {\n    \"p-carousel-item\": true,\n    \"p-carousel-item-active\": a1,\n    \"p-carousel-item-start\": a2,\n    \"p-carousel-item-end\": a3\n  };\n};\n\nfunction Carousel_div_9_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_9_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r15 = ctx.$implicit;\n    const index_r16 = ctx.index;\n    const ctx_r4 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c5, ctx_r4.firstIndex() <= index_r16 && ctx_r4.lastIndex() >= index_r16, ctx_r4.firstIndex() === index_r16, ctx_r4.lastIndex() === index_r16));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r15));\n  }\n}\n\nfunction Carousel_div_10_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_10_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_10_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r18 = ctx.$implicit;\n    const index_r19 = ctx.index;\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c3, ctx_r5.totalShiftedItems * -1 === ctx_r5.numVisible, 0 === index_r19, ctx_r5.clonedItemsForFinishing.length - 1 === index_r19));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r18));\n  }\n}\n\nconst _c6 = function (a1) {\n  return {\n    \"p-carousel-next p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c7 = function (a1, a2) {\n  return {\n    \"p-carousel-prev-icon pi\": true,\n    \"pi-chevron-right\": a1,\n    \"pi-chevron-down\": a2\n  };\n};\n\nfunction Carousel_button_11_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r22 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 13);\n    i0.ɵɵlistener(\"click\", function Carousel_button_11_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r22);\n      const ctx_r21 = i0.ɵɵnextContext();\n      return ctx_r21.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r6 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c6, ctx_r6.isForwardNavDisabled()))(\"disabled\", ctx_r6.isForwardNavDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c7, !ctx_r6.isVertical(), ctx_r6.isVertical()));\n  }\n}\n\nconst _c8 = function (a1) {\n  return {\n    \"p-carousel-indicator\": true,\n    \"p-highlight\": a1\n  };\n};\n\nfunction Carousel_ul_12_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r27 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 2);\n    i0.ɵɵelementStart(1, \"button\", 15);\n    i0.ɵɵlistener(\"click\", function Carousel_ul_12_li_1_Template_button_click_1_listener($event) {\n      const restoredCtx = i0.ɵɵrestoreView(_r27);\n      const i_r25 = restoredCtx.index;\n      const ctx_r26 = i0.ɵɵnextContext(2);\n      return ctx_r26.onDotClick($event, i_r25);\n    });\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const i_r25 = ctx.index;\n    const ctx_r23 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(5, _c8, ctx_r23._page === i_r25));\n    i0.ɵɵadvance(1);\n    i0.ɵɵclassMap(ctx_r23.indicatorStyleClass);\n    i0.ɵɵproperty(\"ngClass\", \"p-link\")(\"ngStyle\", ctx_r23.indicatorStyle);\n  }\n}\n\nfunction Carousel_ul_12_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"ul\", 0);\n    i0.ɵɵtemplate(1, Carousel_ul_12_li_1_Template, 2, 7, \"li\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r7 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r7.indicatorsContentClass);\n    i0.ɵɵproperty(\"ngClass\", \"p-carousel-indicators p-reset\")(\"ngStyle\", ctx_r7.indicatorsContentStyle);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r7.totalDotsArray());\n  }\n}\n\nfunction Carousel_div_13_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_13_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 16);\n    i0.ɵɵprojection(1, 1);\n    i0.ɵɵtemplate(2, Carousel_div_13_ng_container_2_Template, 1, 0, \"ng-container\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r8 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r8.footerTemplate);\n  }\n}\n\nconst _c9 = [[[\"p-header\"]], [[\"p-footer\"]]];\n\nconst _c10 = function (a1, a2) {\n  return {\n    \"p-carousel p-component\": true,\n    \"p-carousel-vertical\": a1,\n    \"p-carousel-horizontal\": a2\n  };\n};\n\nconst _c11 = function (a0) {\n  return {\n    \"height\": a0\n  };\n};\n\nconst _c12 = [\"p-header\", \"p-footer\"];\n\nclass Carousel {\n  constructor(el, zone, cd) {\n    this.el = el;\n    this.zone = zone;\n    this.cd = cd;\n    this.orientation = \"horizontal\";\n    this.verticalViewPortHeight = \"300px\";\n    this.contentClass = \"\";\n    this.indicatorsContentClass = \"\";\n    this.indicatorStyleClass = \"\";\n    this.circular = false;\n    this.showIndicators = true;\n    this.showNavigators = true;\n    this.autoplayInterval = 0;\n    this.onPage = new EventEmitter();\n    this._numVisible = 1;\n    this._numScroll = 1;\n    this._oldNumScroll = 0;\n    this.prevState = {\n      numScroll: 0,\n      numVisible: 0,\n      value: []\n    };\n    this.defaultNumScroll = 1;\n    this.defaultNumVisible = 1;\n    this._page = 0;\n    this.isRemainingItemsAdded = false;\n    this.remainingItems = 0;\n    this.swipeThreshold = 20;\n    this.totalShiftedItems = this.page * this.numScroll * -1;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(val) {\n    if (this.isCreated && val !== this._page) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n        this.allowAutoplay = false;\n      }\n\n      if (val > this._page && val <= this.totalDots() - 1) {\n        this.step(-1, val);\n      } else if (val < this._page) {\n        this.step(1, val);\n      }\n    }\n\n    this._page = val;\n  }\n\n  get numVisible() {\n    return this._numVisible;\n  }\n\n  set numVisible(val) {\n    this._numVisible = val;\n  }\n\n  get numScroll() {\n    return this._numVisible;\n  }\n\n  set numScroll(val) {\n    this._numScroll = val;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  ngOnChanges(simpleChange) {\n    if (simpleChange.value) {\n      if (this.circular && this._value) {\n        this.setCloneItems();\n      }\n    }\n\n    if (this.isCreated) {\n      if (simpleChange.numVisible) {\n        if (this.responsiveOptions) {\n          this.defaultNumVisible = this.numVisible;\n        }\n\n        if (this.isCircular()) {\n          this.setCloneItems();\n        }\n\n        this.createStyle();\n        this.calculatePosition();\n      }\n\n      if (simpleChange.numScroll) {\n        if (this.responsiveOptions) {\n          this.defaultNumScroll = this.numScroll;\n        }\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    this.id = UniqueComponentId();\n    this.allowAutoplay = !!this.autoplayInterval;\n\n    if (this.circular) {\n      this.setCloneItems();\n    }\n\n    if (this.responsiveOptions) {\n      this.defaultNumScroll = this._numScroll;\n      this.defaultNumVisible = this._numVisible;\n    }\n\n    this.createStyle();\n    this.calculatePosition();\n\n    if (this.responsiveOptions) {\n      this.bindDocumentListeners();\n    }\n\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  ngAfterContentChecked() {\n    const isCircular = this.isCircular();\n    let totalShiftedItems = this.totalShiftedItems;\n\n    if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n      }\n\n      this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n      let page = this._page;\n\n      if (this.totalDots() !== 0 && page >= this.totalDots()) {\n        page = this.totalDots() - 1;\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      totalShiftedItems = page * this._numScroll * -1;\n\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n        totalShiftedItems += -1 * this.remainingItems + this._numScroll;\n        this.isRemainingItemsAdded = true;\n      } else {\n        this.isRemainingItemsAdded = false;\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n\n      this._oldNumScroll = this._numScroll;\n      this.prevState.numScroll = this._numScroll;\n      this.prevState.numVisible = this._numVisible;\n      this.prevState.value = [...this._value];\n\n      if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n\n      this.isCreated = true;\n\n      if (this.autoplayInterval && this.isAutoplay()) {\n        this.startAutoplay();\n      }\n    }\n\n    if (isCircular) {\n      if (this.page === 0) {\n        totalShiftedItems = -1 * this._numVisible;\n      } else if (totalShiftedItems === 0) {\n        totalShiftedItems = -1 * this.value.length;\n\n        if (this.remainingItems > 0) {\n          this.isRemainingItemsAdded = true;\n        }\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n    }\n  }\n\n  createStyle() {\n    if (!this.carouselStyle) {\n      this.carouselStyle = document.createElement('style');\n      this.carouselStyle.type = 'text/css';\n      document.body.appendChild(this.carouselStyle);\n    }\n\n    let innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${100 / this.numVisible}%\n\t\t\t}\n        `;\n\n    if (this.responsiveOptions) {\n      this.responsiveOptions.sort((data1, data2) => {\n        const value1 = data1.breakpoint;\n        const value2 = data2.breakpoint;\n        let result = null;\n        if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n          numeric: true\n        });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n        return -1 * result;\n      });\n\n      for (let i = 0; i < this.responsiveOptions.length; i++) {\n        let res = this.responsiveOptions[i];\n        innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${100 / res.numVisible}%\n                        }\n                    }\n                `;\n      }\n    }\n\n    this.carouselStyle.innerHTML = innerHTML;\n  }\n\n  calculatePosition() {\n    if (this.responsiveOptions) {\n      let windowWidth = window.innerWidth;\n      let matchedResponsiveData = {\n        numVisible: this.defaultNumVisible,\n        numScroll: this.defaultNumScroll\n      };\n\n      for (let i = 0; i < this.responsiveOptions.length; i++) {\n        let res = this.responsiveOptions[i];\n\n        if (parseInt(res.breakpoint, 10) >= windowWidth) {\n          matchedResponsiveData = res;\n        }\n      }\n\n      if (this._numScroll !== matchedResponsiveData.numScroll) {\n        let page = this._page;\n        page = Math.floor(page * this._numScroll / matchedResponsiveData.numScroll);\n        let totalShiftedItems = matchedResponsiveData.numScroll * this.page * -1;\n\n        if (this.isCircular()) {\n          totalShiftedItems -= matchedResponsiveData.numVisible;\n        }\n\n        this.totalShiftedItems = totalShiftedItems;\n        this._numScroll = matchedResponsiveData.numScroll;\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      if (this._numVisible !== matchedResponsiveData.numVisible) {\n        this._numVisible = matchedResponsiveData.numVisible;\n        this.setCloneItems();\n      }\n\n      this.cd.markForCheck();\n    }\n  }\n\n  setCloneItems() {\n    this.clonedItemsForStarting = [];\n    this.clonedItemsForFinishing = [];\n\n    if (this.isCircular()) {\n      this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n      this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n    }\n  }\n\n  firstIndex() {\n    return this.isCircular() ? -1 * (this.totalShiftedItems + this.numVisible) : this.totalShiftedItems * -1;\n  }\n\n  lastIndex() {\n    return this.firstIndex() + this.numVisible - 1;\n  }\n\n  totalDots() {\n    return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n  }\n\n  totalDotsArray() {\n    const totalDots = this.totalDots();\n    return totalDots <= 0 ? [] : Array(totalDots).fill(0);\n  }\n\n  isVertical() {\n    return this.orientation === 'vertical';\n  }\n\n  isCircular() {\n    return this.circular && this.value && this.value.length >= this.numVisible;\n  }\n\n  isAutoplay() {\n    return this.autoplayInterval && this.allowAutoplay;\n  }\n\n  isForwardNavDisabled() {\n    return this.isEmpty() || this._page >= this.totalDots() - 1 && !this.isCircular();\n  }\n\n  isBackwardNavDisabled() {\n    return this.isEmpty() || this._page <= 0 && !this.isCircular();\n  }\n\n  isEmpty() {\n    return !this.value || this.value.length === 0;\n  }\n\n  navForward(e, index) {\n    if (this.isCircular() || this._page < this.totalDots() - 1) {\n      this.step(-1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e, index) {\n    if (this.isCircular() || this._page !== 0) {\n      this.step(1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onDotClick(e, index) {\n    let page = this._page;\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (index > page) {\n      this.navForward(e, index);\n    } else if (index < page) {\n      this.navBackward(e, index);\n    }\n  }\n\n  step(dir, page) {\n    let totalShiftedItems = this.totalShiftedItems;\n    const isCircular = this.isCircular();\n\n    if (page != null) {\n      totalShiftedItems = this._numScroll * page * -1;\n\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      this.isRemainingItemsAdded = false;\n    } else {\n      totalShiftedItems += this._numScroll * dir;\n\n      if (this.isRemainingItemsAdded) {\n        totalShiftedItems += this.remainingItems - this._numScroll * dir;\n        this.isRemainingItemsAdded = false;\n      }\n\n      let originalShiftedItems = isCircular ? totalShiftedItems + this._numVisible : totalShiftedItems;\n      page = Math.abs(Math.floor(originalShiftedItems / this._numScroll));\n    }\n\n    if (isCircular && this.page === this.totalDots() - 1 && dir === -1) {\n      totalShiftedItems = -1 * (this.value.length + this._numVisible);\n      page = 0;\n    } else if (isCircular && this.page === 0 && dir === 1) {\n      totalShiftedItems = 0;\n      page = this.totalDots() - 1;\n    } else if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n      totalShiftedItems += this.remainingItems * -1 - this._numScroll * dir;\n      this.isRemainingItemsAdded = true;\n    }\n\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n    }\n\n    this.totalShiftedItems = totalShiftedItems;\n    this._page = page;\n    this.onPage.emit({\n      page: this.page\n    });\n  }\n\n  startAutoplay() {\n    this.interval = setInterval(() => {\n      if (this.totalDots() > 0) {\n        if (this.page === this.totalDots() - 1) {\n          this.step(-1, 0);\n        } else {\n          this.step(-1, this.page + 1);\n        }\n      }\n    }, this.autoplayInterval);\n  }\n\n  stopAutoplay() {\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n  }\n\n  onTransitionEnd() {\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transition = '';\n\n      if ((this.page === 0 || this.page === this.totalDots() - 1) && this.isCircular()) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n    }\n  }\n\n  onTouchStart(e) {\n    let touchobj = e.changedTouches[0];\n    this.startPos = {\n      x: touchobj.pageX,\n      y: touchobj.pageY\n    };\n  }\n\n  onTouchMove(e) {\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onTouchEnd(e) {\n    let touchobj = e.changedTouches[0];\n\n    if (this.isVertical()) {\n      this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n    } else {\n      this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n    }\n  }\n\n  changePageOnTouch(e, diff) {\n    if (Math.abs(diff) > this.swipeThreshold) {\n      if (diff < 0) {\n        this.navForward(e);\n      } else {\n        this.navBackward(e);\n      }\n    }\n  }\n\n  bindDocumentListeners() {\n    if (!this.documentResizeListener) {\n      this.documentResizeListener = e => {\n        this.calculatePosition();\n      };\n\n      window.addEventListener('resize', this.documentResizeListener);\n    }\n  }\n\n  unbindDocumentListeners() {\n    if (this.documentResizeListener) {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.responsiveOptions) {\n      this.unbindDocumentListeners();\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n    }\n  }\n\n}\n\nCarousel.ɵfac = function Carousel_Factory(t) {\n  return new (t || Carousel)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nCarousel.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Carousel,\n  selectors: [[\"p-carousel\"]],\n  contentQueries: function Carousel_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, Header, 5);\n      i0.ɵɵcontentQuery(dirIndex, Footer, 5);\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerFacet = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Carousel_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsContainer = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    page: \"page\",\n    numVisible: \"numVisible\",\n    numScroll: \"numScroll\",\n    responsiveOptions: \"responsiveOptions\",\n    orientation: \"orientation\",\n    verticalViewPortHeight: \"verticalViewPortHeight\",\n    contentClass: \"contentClass\",\n    indicatorsContentClass: \"indicatorsContentClass\",\n    indicatorsContentStyle: \"indicatorsContentStyle\",\n    indicatorStyleClass: \"indicatorStyleClass\",\n    indicatorStyle: \"indicatorStyle\",\n    value: \"value\",\n    circular: \"circular\",\n    showIndicators: \"showIndicators\",\n    showNavigators: \"showNavigators\",\n    autoplayInterval: \"autoplayInterval\",\n    style: \"style\",\n    styleClass: \"styleClass\"\n  },\n  outputs: {\n    onPage: \"onPage\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature],\n  ngContentSelectors: _c12,\n  decls: 14,\n  vars: 22,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [\"class\", \"p-carousel-header\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-carousel-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [1, \"p-carousel-items-content\", 3, \"ngStyle\"], [1, \"p-carousel-items-container\", 3, \"transitionend\", \"touchend\", \"touchstart\", \"touchmove\"], [\"itemsContainer\", \"\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\", \"class\", \"ngStyle\", 4, \"ngIf\"], [\"class\", \"p-carousel-footer\", 4, \"ngIf\"], [1, \"p-carousel-header\"], [4, \"ngTemplateOutlet\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"type\", \"button\", 3, \"ngClass\", \"ngStyle\", \"click\"], [1, \"p-carousel-footer\"]],\n  template: function Carousel_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef(_c9);\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵtemplate(1, Carousel_div_1_Template, 3, 1, \"div\", 1);\n      i0.ɵɵelementStart(2, \"div\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3);\n      i0.ɵɵtemplate(4, Carousel_button_4_Template, 2, 8, \"button\", 4);\n      i0.ɵɵelementStart(5, \"div\", 5);\n      i0.ɵɵelementStart(6, \"div\", 6, 7);\n      i0.ɵɵlistener(\"transitionend\", function Carousel_Template_div_transitionend_6_listener() {\n        return ctx.onTransitionEnd();\n      })(\"touchend\", function Carousel_Template_div_touchend_6_listener($event) {\n        return ctx.onTouchEnd($event);\n      })(\"touchstart\", function Carousel_Template_div_touchstart_6_listener($event) {\n        return ctx.onTouchStart($event);\n      })(\"touchmove\", function Carousel_Template_div_touchmove_6_listener($event) {\n        return ctx.onTouchMove($event);\n      });\n      i0.ɵɵtemplate(8, Carousel_div_8_Template, 2, 9, \"div\", 8);\n      i0.ɵɵtemplate(9, Carousel_div_9_Template, 2, 9, \"div\", 8);\n      i0.ɵɵtemplate(10, Carousel_div_10_Template, 2, 9, \"div\", 8);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(11, Carousel_button_11_Template, 2, 8, \"button\", 4);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(12, Carousel_ul_12_Template, 2, 5, \"ul\", 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(13, Carousel_div_13_Template, 3, 1, \"div\", 10);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(17, _c10, ctx.isVertical(), !ctx.isVertical()))(\"ngStyle\", ctx.style);\n      i0.ɵɵattribute(\"id\", ctx.id);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.headerFacet || ctx.headerTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵclassMap(ctx.contentClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-carousel-content\");\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(20, _c11, ctx.isVertical() ? ctx.verticalViewPortHeight : \"auto\"));\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngForOf\", ctx.clonedItemsForStarting);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.value);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.clonedItemsForFinishing);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showIndicators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.footerFacet || ctx.footerTemplate);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgIf, i1.NgForOf, i1.NgTemplateOutlet, i2.Ripple],\n  styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Carousel, [{\n    type: Component,\n    args: [{\n      selector: 'p-carousel',\n      template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    page: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    numScroll: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    orientation: [{\n      type: Input\n    }],\n    verticalViewPortHeight: [{\n      type: Input\n    }],\n    contentClass: [{\n      type: Input\n    }],\n    indicatorsContentClass: [{\n      type: Input\n    }],\n    indicatorsContentStyle: [{\n      type: Input\n    }],\n    indicatorStyleClass: [{\n      type: Input\n    }],\n    indicatorStyle: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    showNavigators: [{\n      type: Input\n    }],\n    autoplayInterval: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    onPage: [{\n      type: Output\n    }],\n    itemsContainer: [{\n      type: ViewChild,\n      args: ['itemsContainer']\n    }],\n    headerFacet: [{\n      type: ContentChild,\n      args: [Header]\n    }],\n    footerFacet: [{\n      type: ContentChild,\n      args: [Footer]\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass CarouselModule {}\n\nCarouselModule.ɵfac = function CarouselModule_Factory(t) {\n  return new (t || CarouselModule)();\n};\n\nCarouselModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: CarouselModule\n});\nCarouselModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CarouselModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, RippleModule],\n      exports: [CommonModule, Carousel, SharedModule],\n      declarations: [Carousel]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Carousel, CarouselModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs"],"names":["i0","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","ViewChild","ContentChild","ContentChildren","NgModule","Header","Footer","PrimeTemplate","SharedModule","i2","RippleModule","i1","CommonModule","UniqueComponentId","Carousel","constructor","el","zone","cd","orientation","verticalViewPortHeight","contentClass","indicatorsContentClass","indicatorStyleClass","circular","showIndicators","showNavigators","autoplayInterval","onPage","_numVisible","_numScroll","_oldNumScroll","prevState","numScroll","numVisible","value","defaultNumScroll","defaultNumVisible","_page","isRemainingItemsAdded","remainingItems","swipeThreshold","totalShiftedItems","page","val","isCreated","stopAutoplay","allowAutoplay","totalDots","step","_value","ngOnChanges","simpleChange","setCloneItems","responsiveOptions","isCircular","createStyle","calculatePosition","ngAfterContentInit","id","bindDocumentListeners","templates","forEach","item","getType","itemTemplate","template","headerTemplate","footerTemplate","ngAfterContentChecked","itemsContainer","length","emit","nativeElement","style","transform","isVertical","isAutoplay","startAutoplay","carouselStyle","document","createElement","type","body","appendChild","innerHTML","sort","data1","data2","value1","breakpoint","value2","result","localeCompare","undefined","numeric","i","res","windowWidth","window","innerWidth","matchedResponsiveData","parseInt","Math","floor","markForCheck","clonedItemsForStarting","clonedItemsForFinishing","push","slice","firstIndex","lastIndex","ceil","totalDotsArray","Array","fill","isForwardNavDisabled","isEmpty","isBackwardNavDisabled","navForward","e","index","cancelable","preventDefault","navBackward","onDotClick","dir","originalShiftedItems","abs","transition","interval","setInterval","clearInterval","onTransitionEnd","onTouchStart","touchobj","changedTouches","startPos","x","pageX","y","pageY","onTouchMove","onTouchEnd","changePageOnTouch","diff","documentResizeListener","addEventListener","unbindDocumentListeners","removeEventListener","ngOnDestroy","ɵfac","ElementRef","NgZone","ChangeDetectorRef","ɵcmp","NgClass","NgStyle","NgIf","NgForOf","NgTemplateOutlet","Ripple","args","selector","changeDetection","OnPush","encapsulation","None","host","styles","indicatorsContentStyle","indicatorStyle","styleClass","headerFacet","footerFacet","CarouselModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass Carousel {\n    constructor(el, zone, cd) {\n        this.el = el;\n        this.zone = zone;\n        this.cd = cd;\n        this.orientation = \"horizontal\";\n        this.verticalViewPortHeight = \"300px\";\n        this.contentClass = \"\";\n        this.indicatorsContentClass = \"\";\n        this.indicatorStyleClass = \"\";\n        this.circular = false;\n        this.showIndicators = true;\n        this.showNavigators = true;\n        this.autoplayInterval = 0;\n        this.onPage = new EventEmitter();\n        this._numVisible = 1;\n        this._numScroll = 1;\n        this._oldNumScroll = 0;\n        this.prevState = {\n            numScroll: 0,\n            numVisible: 0,\n            value: []\n        };\n        this.defaultNumScroll = 1;\n        this.defaultNumVisible = 1;\n        this._page = 0;\n        this.isRemainingItemsAdded = false;\n        this.remainingItems = 0;\n        this.swipeThreshold = 20;\n        this.totalShiftedItems = this.page * this.numScroll * -1;\n    }\n    get page() {\n        return this._page;\n    }\n    set page(val) {\n        if (this.isCreated && val !== this._page) {\n            if (this.autoplayInterval) {\n                this.stopAutoplay();\n                this.allowAutoplay = false;\n            }\n            if (val > this._page && val <= (this.totalDots() - 1)) {\n                this.step(-1, val);\n            }\n            else if (val < this._page) {\n                this.step(1, val);\n            }\n        }\n        this._page = val;\n    }\n    get numVisible() {\n        return this._numVisible;\n    }\n    set numVisible(val) {\n        this._numVisible = val;\n    }\n    get numScroll() {\n        return this._numVisible;\n    }\n    set numScroll(val) {\n        this._numScroll = val;\n    }\n    get value() {\n        return this._value;\n    }\n    ;\n    set value(val) {\n        this._value = val;\n    }\n    ngOnChanges(simpleChange) {\n        if (simpleChange.value) {\n            if (this.circular && this._value) {\n                this.setCloneItems();\n            }\n        }\n        if (this.isCreated) {\n            if (simpleChange.numVisible) {\n                if (this.responsiveOptions) {\n                    this.defaultNumVisible = this.numVisible;\n                }\n                if (this.isCircular()) {\n                    this.setCloneItems();\n                }\n                this.createStyle();\n                this.calculatePosition();\n            }\n            if (simpleChange.numScroll) {\n                if (this.responsiveOptions) {\n                    this.defaultNumScroll = this.numScroll;\n                }\n            }\n        }\n    }\n    ngAfterContentInit() {\n        this.id = UniqueComponentId();\n        this.allowAutoplay = !!this.autoplayInterval;\n        if (this.circular) {\n            this.setCloneItems();\n        }\n        if (this.responsiveOptions) {\n            this.defaultNumScroll = this._numScroll;\n            this.defaultNumVisible = this._numVisible;\n        }\n        this.createStyle();\n        this.calculatePosition();\n        if (this.responsiveOptions) {\n            this.bindDocumentListeners();\n        }\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                    break;\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                case 'footer':\n                    this.footerTemplate = item.template;\n                    break;\n                default:\n                    this.itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    ngAfterContentChecked() {\n        const isCircular = this.isCircular();\n        let totalShiftedItems = this.totalShiftedItems;\n        if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n            if (this.autoplayInterval) {\n                this.stopAutoplay();\n            }\n            this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n            let page = this._page;\n            if (this.totalDots() !== 0 && page >= this.totalDots()) {\n                page = this.totalDots() - 1;\n                this._page = page;\n                this.onPage.emit({\n                    page: this.page\n                });\n            }\n            totalShiftedItems = (page * this._numScroll) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n            if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n                totalShiftedItems += (-1 * this.remainingItems) + this._numScroll;\n                this.isRemainingItemsAdded = true;\n            }\n            else {\n                this.isRemainingItemsAdded = false;\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n            this._oldNumScroll = this._numScroll;\n            this.prevState.numScroll = this._numScroll;\n            this.prevState.numVisible = this._numVisible;\n            this.prevState.value = [...this._value];\n            if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            }\n            this.isCreated = true;\n            if (this.autoplayInterval && this.isAutoplay()) {\n                this.startAutoplay();\n            }\n        }\n        if (isCircular) {\n            if (this.page === 0) {\n                totalShiftedItems = -1 * this._numVisible;\n            }\n            else if (totalShiftedItems === 0) {\n                totalShiftedItems = -1 * this.value.length;\n                if (this.remainingItems > 0) {\n                    this.isRemainingItemsAdded = true;\n                }\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n        }\n    }\n    createStyle() {\n        if (!this.carouselStyle) {\n            this.carouselStyle = document.createElement('style');\n            this.carouselStyle.type = 'text/css';\n            document.body.appendChild(this.carouselStyle);\n        }\n        let innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${(100 / this.numVisible)}%\n\t\t\t}\n        `;\n        if (this.responsiveOptions) {\n            this.responsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n                return -1 * result;\n            });\n            for (let i = 0; i < this.responsiveOptions.length; i++) {\n                let res = this.responsiveOptions[i];\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${(100 / res.numVisible)}%\n                        }\n                    }\n                `;\n            }\n        }\n        this.carouselStyle.innerHTML = innerHTML;\n    }\n    calculatePosition() {\n        if (this.responsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this.defaultNumVisible,\n                numScroll: this.defaultNumScroll\n            };\n            for (let i = 0; i < this.responsiveOptions.length; i++) {\n                let res = this.responsiveOptions[i];\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n            if (this._numScroll !== matchedResponsiveData.numScroll) {\n                let page = this._page;\n                page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n                let totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;\n                if (this.isCircular()) {\n                    totalShiftedItems -= matchedResponsiveData.numVisible;\n                }\n                this.totalShiftedItems = totalShiftedItems;\n                this._numScroll = matchedResponsiveData.numScroll;\n                this._page = page;\n                this.onPage.emit({\n                    page: this.page\n                });\n            }\n            if (this._numVisible !== matchedResponsiveData.numVisible) {\n                this._numVisible = matchedResponsiveData.numVisible;\n                this.setCloneItems();\n            }\n            this.cd.markForCheck();\n        }\n    }\n    setCloneItems() {\n        this.clonedItemsForStarting = [];\n        this.clonedItemsForFinishing = [];\n        if (this.isCircular()) {\n            this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n            this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n        }\n    }\n    firstIndex() {\n        return this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);\n    }\n    lastIndex() {\n        return this.firstIndex() + this.numVisible - 1;\n    }\n    totalDots() {\n        return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n    }\n    totalDotsArray() {\n        const totalDots = this.totalDots();\n        return totalDots <= 0 ? [] : Array(totalDots).fill(0);\n    }\n    isVertical() {\n        return this.orientation === 'vertical';\n    }\n    isCircular() {\n        return this.circular && this.value && this.value.length >= this.numVisible;\n    }\n    isAutoplay() {\n        return this.autoplayInterval && this.allowAutoplay;\n    }\n    isForwardNavDisabled() {\n        return this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());\n    }\n    isBackwardNavDisabled() {\n        return this.isEmpty() || (this._page <= 0 && !this.isCircular());\n    }\n    isEmpty() {\n        return !this.value || this.value.length === 0;\n    }\n    navForward(e, index) {\n        if (this.isCircular() || this._page < (this.totalDots() - 1)) {\n            this.step(-1, index);\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e, index) {\n        if (this.isCircular() || this._page !== 0) {\n            this.step(1, index);\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onDotClick(e, index) {\n        let page = this._page;\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (index > page) {\n            this.navForward(e, index);\n        }\n        else if (index < page) {\n            this.navBackward(e, index);\n        }\n    }\n    step(dir, page) {\n        let totalShiftedItems = this.totalShiftedItems;\n        const isCircular = this.isCircular();\n        if (page != null) {\n            totalShiftedItems = (this._numScroll * page) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n            this.isRemainingItemsAdded = false;\n        }\n        else {\n            totalShiftedItems += (this._numScroll * dir);\n            if (this.isRemainingItemsAdded) {\n                totalShiftedItems += this.remainingItems - (this._numScroll * dir);\n                this.isRemainingItemsAdded = false;\n            }\n            let originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;\n            page = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));\n        }\n        if (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {\n            totalShiftedItems = -1 * (this.value.length + this._numVisible);\n            page = 0;\n        }\n        else if (isCircular && this.page === 0 && dir === 1) {\n            totalShiftedItems = 0;\n            page = (this.totalDots() - 1);\n        }\n        else if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n            totalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));\n            this.isRemainingItemsAdded = true;\n        }\n        if (this.itemsContainer) {\n            this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n        this.totalShiftedItems = totalShiftedItems;\n        this._page = page;\n        this.onPage.emit({\n            page: this.page\n        });\n    }\n    startAutoplay() {\n        this.interval = setInterval(() => {\n            if (this.totalDots() > 0) {\n                if (this.page === (this.totalDots() - 1)) {\n                    this.step(-1, 0);\n                }\n                else {\n                    this.step(-1, this.page + 1);\n                }\n            }\n        }, this.autoplayInterval);\n    }\n    stopAutoplay() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n    }\n    onTransitionEnd() {\n        if (this.itemsContainer) {\n            this.itemsContainer.nativeElement.style.transition = '';\n            if ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            }\n        }\n    }\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n        if (this.isVertical()) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n    changePageOnTouch(e, diff) {\n        if (Math.abs(diff) > this.swipeThreshold) {\n            if (diff < 0) {\n                this.navForward(e);\n            }\n            else {\n                this.navBackward(e);\n            }\n        }\n    }\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = (e) => {\n                this.calculatePosition();\n            };\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n    unbindDocumentListeners() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n            this.unbindDocumentListeners();\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n        }\n    }\n}\nCarousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCarousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Carousel, selector: \"p-carousel\", inputs: { page: \"page\", numVisible: \"numVisible\", numScroll: \"numScroll\", responsiveOptions: \"responsiveOptions\", orientation: \"orientation\", verticalViewPortHeight: \"verticalViewPortHeight\", contentClass: \"contentClass\", indicatorsContentClass: \"indicatorsContentClass\", indicatorsContentStyle: \"indicatorsContentStyle\", indicatorStyleClass: \"indicatorStyleClass\", indicatorStyle: \"indicatorStyle\", value: \"value\", circular: \"circular\", showIndicators: \"showIndicators\", showNavigators: \"showNavigators\", autoplayInterval: \"autoplayInterval\", style: \"style\", styleClass: \"styleClass\" }, outputs: { onPage: \"onPage\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `, isInline: true, styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Carousel, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-carousel', template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], numScroll: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], orientation: [{\n                type: Input\n            }], verticalViewPortHeight: [{\n                type: Input\n            }], contentClass: [{\n                type: Input\n            }], indicatorsContentClass: [{\n                type: Input\n            }], indicatorsContentStyle: [{\n                type: Input\n            }], indicatorStyleClass: [{\n                type: Input\n            }], indicatorStyle: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], showNavigators: [{\n                type: Input\n            }], autoplayInterval: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], onPage: [{\n                type: Output\n            }], itemsContainer: [{\n                type: ViewChild,\n                args: ['itemsContainer']\n            }], headerFacet: [{\n                type: ContentChild,\n                args: [Header]\n            }], footerFacet: [{\n                type: ContentChild,\n                args: [Footer]\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass CarouselModule {\n}\nCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Carousel, SharedModule] });\nCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, RippleModule],\n                    exports: [CommonModule, Carousel, SharedModule],\n                    declarations: [Carousel]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Carousel, CarouselModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Optional, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n  constructor(el, zone, config) {\n    this.el = el;\n    this.zone = zone;\n    this.config = config;\n  }\n\n  ngAfterViewInit() {\n    if (this.config && this.config.ripple) {\n      this.zone.runOutsideAngular(() => {\n        this.create();\n        this.mouseDownListener = this.onMouseDown.bind(this);\n        this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n      });\n    }\n  }\n\n  onMouseDown(event) {\n    let ink = this.getInk();\n\n    if (!ink || getComputedStyle(ink, null).display === 'none') {\n      return;\n    }\n\n    DomHandler.removeClass(ink, 'p-ink-active');\n\n    if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n      let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n      ink.style.height = d + 'px';\n      ink.style.width = d + 'px';\n    }\n\n    let offset = DomHandler.getOffset(this.el.nativeElement);\n    let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n    let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n    ink.style.top = y + 'px';\n    ink.style.left = x + 'px';\n    DomHandler.addClass(ink, 'p-ink-active');\n  }\n\n  getInk() {\n    for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n      if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n        return this.el.nativeElement.children[i];\n      }\n    }\n\n    return null;\n  }\n\n  resetInk() {\n    let ink = this.getInk();\n\n    if (ink) {\n      DomHandler.removeClass(ink, 'p-ink-active');\n    }\n  }\n\n  onAnimationEnd(event) {\n    DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n  }\n\n  create() {\n    let ink = document.createElement('span');\n    ink.className = 'p-ink';\n    this.el.nativeElement.appendChild(ink);\n    this.animationListener = this.onAnimationEnd.bind(this);\n    ink.addEventListener('animationend', this.animationListener);\n  }\n\n  remove() {\n    let ink = this.getInk();\n\n    if (ink) {\n      this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n      ink.removeEventListener('animationend', this.animationListener);\n      DomHandler.removeElement(ink);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.config && this.config.ripple) {\n      this.remove();\n    }\n  }\n\n}\n\nRipple.ɵfac = function Ripple_Factory(t) {\n  return new (t || Ripple)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.PrimeNGConfig, 8));\n};\n\nRipple.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Ripple,\n  selectors: [[\"\", \"pRipple\", \"\"]],\n  hostAttrs: [1, \"p-ripple\", \"p-element\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Ripple, [{\n    type: Directive,\n    args: [{\n      selector: '[pRipple]',\n      host: {\n        'class': 'p-ripple p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i1.PrimeNGConfig,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, null);\n})();\n\nclass RippleModule {}\n\nRippleModule.ɵfac = function RippleModule_Factory(t) {\n  return new (t || RippleModule)();\n};\n\nRippleModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: RippleModule\n});\nRippleModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RippleModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Ripple],\n      declarations: [Ripple]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Ripple, RippleModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs"],"names":["i0","Directive","Optional","NgModule","CommonModule","DomHandler","i1","Ripple","constructor","el","zone","config","ngAfterViewInit","ripple","runOutsideAngular","create","mouseDownListener","onMouseDown","bind","nativeElement","addEventListener","event","ink","getInk","getComputedStyle","display","removeClass","getHeight","getWidth","d","Math","max","getOuterWidth","getOuterHeight","style","height","width","offset","getOffset","x","pageX","left","document","body","scrollTop","y","pageY","top","scrollLeft","addClass","i","children","length","className","indexOf","resetInk","onAnimationEnd","currentTarget","createElement","appendChild","animationListener","remove","removeEventListener","removeElement","ngOnDestroy","ɵfac","ElementRef","NgZone","PrimeNGConfig","ɵdir","type","args","selector","host","decorators","RippleModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Optional, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n    constructor(el, zone, config) {\n        this.el = el;\n        this.zone = zone;\n        this.config = config;\n    }\n    ngAfterViewInit() {\n        if (this.config && this.config.ripple) {\n            this.zone.runOutsideAngular(() => {\n                this.create();\n                this.mouseDownListener = this.onMouseDown.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n            });\n        }\n    }\n    onMouseDown(event) {\n        let ink = this.getInk();\n        if (!ink || getComputedStyle(ink, null).display === 'none') {\n            return;\n        }\n        DomHandler.removeClass(ink, 'p-ink-active');\n        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n            ink.style.height = d + 'px';\n            ink.style.width = d + 'px';\n        }\n        let offset = DomHandler.getOffset(this.el.nativeElement);\n        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n        ink.style.top = y + 'px';\n        ink.style.left = x + 'px';\n        DomHandler.addClass(ink, 'p-ink-active');\n    }\n    getInk() {\n        for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n                return this.el.nativeElement.children[i];\n            }\n        }\n        return null;\n    }\n    resetInk() {\n        let ink = this.getInk();\n        if (ink) {\n            DomHandler.removeClass(ink, 'p-ink-active');\n        }\n    }\n    onAnimationEnd(event) {\n        DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n    }\n    create() {\n        let ink = document.createElement('span');\n        ink.className = 'p-ink';\n        this.el.nativeElement.appendChild(ink);\n        this.animationListener = this.onAnimationEnd.bind(this);\n        ink.addEventListener('animationend', this.animationListener);\n    }\n    remove() {\n        let ink = this.getInk();\n        if (ink) {\n            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n            ink.removeEventListener('animationend', this.animationListener);\n            DomHandler.removeElement(ink);\n        }\n    }\n    ngOnDestroy() {\n        if (this.config && this.config.ripple) {\n            this.remove();\n        }\n    }\n}\nRipple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nRipple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Ripple, selector: \"[pRipple]\", host: { classAttribute: \"p-ripple p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Ripple, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pRipple]',\n                    host: {\n                        'class': 'p-ripple p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{\n                    type: Optional\n                }] }]; } });\nclass RippleModule {\n}\nRippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });\nRippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Ripple],\n                    declarations: [Ripple]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Ripple, RippleModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\n\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n  providedIn: 'root',\n  factory: DIR_DOCUMENT_FACTORY\n});\n/** @docs-private */\n\nfunction DIR_DOCUMENT_FACTORY() {\n  return inject(DOCUMENT);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n\n\nclass Directionality {\n  constructor(_document) {\n    /** The current 'ltr' or 'rtl' value. */\n    this.value = 'ltr';\n    /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n\n    this.change = new EventEmitter();\n\n    if (_document) {\n      // TODO: handle 'auto' value -\n      // We still need to account for dir=\"auto\".\n      // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n      // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n      const bodyDir = _document.body ? _document.body.dir : null;\n      const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n      const value = bodyDir || htmlDir;\n      this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr';\n    }\n  }\n\n  ngOnDestroy() {\n    this.change.complete();\n  }\n\n}\n\nDirectionality.ɵfac = function Directionality_Factory(t) {\n  return new (t || Directionality)(i0.ɵɵinject(DIR_DOCUMENT, 8));\n};\n\nDirectionality.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Directionality,\n  factory: Directionality.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Directionality, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DIR_DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\n\n\nclass Dir {\n  constructor() {\n    /** Normalized direction that accounts for invalid/unsupported values. */\n    this._dir = 'ltr';\n    /** Whether the `value` has been set to its initial value. */\n\n    this._isInitialized = false;\n    /** Event emitted when the direction changes. */\n\n    this.change = new EventEmitter();\n  }\n  /** @docs-private */\n\n\n  get dir() {\n    return this._dir;\n  }\n\n  set dir(value) {\n    const old = this._dir;\n    const normalizedValue = value ? value.toLowerCase() : value;\n    this._rawDir = value;\n    this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr';\n\n    if (old !== this._dir && this._isInitialized) {\n      this.change.emit(this._dir);\n    }\n  }\n  /** Current layout direction of the element. */\n\n\n  get value() {\n    return this.dir;\n  }\n  /** Initialize once default value has been set. */\n\n\n  ngAfterContentInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    this.change.complete();\n  }\n\n}\n\nDir.ɵfac = function Dir_Factory(t) {\n  return new (t || Dir)();\n};\n\nDir.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Dir,\n  selectors: [[\"\", \"dir\", \"\"]],\n  hostVars: 1,\n  hostBindings: function Dir_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵattribute(\"dir\", ctx._rawDir);\n    }\n  },\n  inputs: {\n    dir: \"dir\"\n  },\n  outputs: {\n    change: \"dirChange\"\n  },\n  exportAs: [\"dir\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: Directionality,\n    useExisting: Dir\n  }])]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{\n    type: Directive,\n    args: [{\n      selector: '[dir]',\n      providers: [{\n        provide: Directionality,\n        useExisting: Dir\n      }],\n      host: {\n        '[attr.dir]': '_rawDir'\n      },\n      exportAs: 'dir'\n    }]\n  }], null, {\n    change: [{\n      type: Output,\n      args: ['dirChange']\n    }],\n    dir: [{\n      type: Input\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass BidiModule {}\n\nBidiModule.ɵfac = function BidiModule_Factory(t) {\n  return new (t || BidiModule)();\n};\n\nBidiModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: BidiModule\n});\nBidiModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BidiModule, [{\n    type: NgModule,\n    args: [{\n      exports: [Dir],\n      declarations: [Dir]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/bidi.mjs"],"names":["i0","InjectionToken","inject","EventEmitter","Injectable","Optional","Inject","Directive","Output","Input","NgModule","DOCUMENT","DIR_DOCUMENT","providedIn","factory","DIR_DOCUMENT_FACTORY","Directionality","constructor","_document","value","change","bodyDir","body","dir","htmlDir","documentElement","ngOnDestroy","complete","ɵfac","ɵprov","type","args","undefined","decorators","Dir","_dir","_isInitialized","old","normalizedValue","toLowerCase","_rawDir","emit","ngAfterContentInit","ɵdir","provide","useExisting","selector","providers","host","exportAs","BidiModule","ɵmod","ɵinj","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n    providedIn: 'root',\n    factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n    return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n    constructor(_document) {\n        /** The current 'ltr' or 'rtl' value. */\n        this.value = 'ltr';\n        /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n        this.change = new EventEmitter();\n        if (_document) {\n            // TODO: handle 'auto' value -\n            // We still need to account for dir=\"auto\".\n            // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n            // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n            const bodyDir = _document.body ? _document.body.dir : null;\n            const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n            const value = bodyDir || htmlDir;\n            this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr';\n        }\n    }\n    ngOnDestroy() {\n        this.change.complete();\n    }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DIR_DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n    constructor() {\n        /** Normalized direction that accounts for invalid/unsupported values. */\n        this._dir = 'ltr';\n        /** Whether the `value` has been set to its initial value. */\n        this._isInitialized = false;\n        /** Event emitted when the direction changes. */\n        this.change = new EventEmitter();\n    }\n    /** @docs-private */\n    get dir() {\n        return this._dir;\n    }\n    set dir(value) {\n        const old = this._dir;\n        const normalizedValue = value ? value.toLowerCase() : value;\n        this._rawDir = value;\n        this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr';\n        if (old !== this._dir && this._isInitialized) {\n            this.change.emit(this._dir);\n        }\n    }\n    /** Current layout direction of the element. */\n    get value() {\n        return this.dir;\n    }\n    /** Initialize once default value has been set. */\n    ngAfterContentInit() {\n        this._isInitialized = true;\n    }\n    ngOnDestroy() {\n        this.change.complete();\n    }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[dir]',\n                    providers: [{ provide: Directionality, useExisting: Dir }],\n                    host: { '[attr.dir]': '_rawDir' },\n                    exportAs: 'dir',\n                }]\n        }], propDecorators: { change: [{\n                type: Output,\n                args: ['dirChange']\n            }], dir: [{\n                type: Input\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [Dir],\n                    declarations: [Dir],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\n\nfunction AccordionTab_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 9);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", ctx_r0.header, \" \");\n  }\n}\n\nfunction AccordionTab_ng_container_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AccordionTab_ng_content_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵprojection(0, 1, [\"*ngIf\", \"hasHeaderFacet\"]);\n  }\n}\n\nfunction AccordionTab_ng_container_10_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AccordionTab_ng_container_10_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, AccordionTab_ng_container_10_ng_container_1_Template, 1, 0, \"ng-container\", 5);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.contentTemplate);\n  }\n}\n\nconst _c0 = [\"*\", [[\"p-header\"]]];\n\nconst _c1 = function (a0) {\n  return {\n    \"p-accordion-tab-active\": a0\n  };\n};\n\nconst _c2 = function (a0, a1) {\n  return {\n    \"p-highlight\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c3 = function (a0) {\n  return {\n    transitionParams: a0\n  };\n};\n\nconst _c4 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nconst _c5 = function (a1) {\n  return {\n    value: \"hidden\",\n    params: a1\n  };\n};\n\nconst _c6 = [\"*\", \"p-header\"];\nconst _c7 = [\"*\"];\nlet idx = 0;\n\nclass AccordionTab {\n  constructor(accordion, changeDetector) {\n    this.changeDetector = changeDetector;\n    this.cache = true;\n    this.selectedChange = new EventEmitter();\n    this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n    this.id = `p-accordiontab-${idx++}`;\n    this.accordion = accordion;\n  }\n\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(val) {\n    this._selected = val;\n\n    if (!this.loaded) {\n      if (this._selected && this.cache) {\n        this.loaded = true;\n      }\n\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  toggle(event) {\n    if (this.disabled) {\n      return false;\n    }\n\n    let index = this.findTabIndex();\n\n    if (this.selected) {\n      this.selected = false;\n      this.accordion.onClose.emit({\n        originalEvent: event,\n        index: index\n      });\n    } else {\n      if (!this.accordion.multiple) {\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n          this.accordion.tabs[i].selected = false;\n          this.accordion.tabs[i].selectedChange.emit(false);\n          this.accordion.tabs[i].changeDetector.markForCheck();\n        }\n      }\n\n      this.selected = true;\n      this.loaded = true;\n      this.accordion.onOpen.emit({\n        originalEvent: event,\n        index: index\n      });\n    }\n\n    this.selectedChange.emit(this.selected);\n    this.accordion.updateActiveIndex();\n    this.changeDetector.markForCheck();\n    event.preventDefault();\n  }\n\n  findTabIndex() {\n    let index = -1;\n\n    for (var i = 0; i < this.accordion.tabs.length; i++) {\n      if (this.accordion.tabs[i] == this) {\n        index = i;\n        break;\n      }\n    }\n\n    return index;\n  }\n\n  get hasHeaderFacet() {\n    return this.headerFacet && this.headerFacet.length > 0;\n  }\n\n  onKeydown(event) {\n    if (event.which === 32 || event.which === 13) {\n      this.toggle(event);\n      event.preventDefault();\n    }\n  }\n\n  ngOnDestroy() {\n    this.accordion.tabs.splice(this.findTabIndex(), 1);\n  }\n\n}\n\nAccordionTab.ɵfac = function AccordionTab_Factory(t) {\n  return new (t || AccordionTab)(i0.ɵɵdirectiveInject(forwardRef(() => Accordion)), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nAccordionTab.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: AccordionTab,\n  selectors: [[\"p-accordionTab\"]],\n  contentQueries: function AccordionTab_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, Header, 4);\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    header: \"header\",\n    disabled: \"disabled\",\n    cache: \"cache\",\n    transitionOptions: \"transitionOptions\",\n    selected: \"selected\"\n  },\n  outputs: {\n    selectedChange: \"selectedChange\"\n  },\n  ngContentSelectors: _c6,\n  decls: 11,\n  vars: 28,\n  consts: [[1, \"p-accordion-tab\", 3, \"ngClass\"], [1, \"p-accordion-header\", 3, \"ngClass\"], [\"role\", \"tab\", 1, \"p-accordion-header-link\", 3, \"click\", \"keydown\"], [1, \"p-accordion-toggle-icon\", 3, \"ngClass\"], [\"class\", \"p-accordion-header-text\", 4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [4, \"ngIf\"], [\"role\", \"region\", 1, \"p-toggleable-content\"], [1, \"p-accordion-content\"], [1, \"p-accordion-header-text\"]],\n  template: function AccordionTab_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef(_c0);\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵelementStart(2, \"a\", 2);\n      i0.ɵɵlistener(\"click\", function AccordionTab_Template_a_click_2_listener($event) {\n        return ctx.toggle($event);\n      })(\"keydown\", function AccordionTab_Template_a_keydown_2_listener($event) {\n        return ctx.onKeydown($event);\n      });\n      i0.ɵɵelement(3, \"span\", 3);\n      i0.ɵɵtemplate(4, AccordionTab_span_4_Template, 2, 1, \"span\", 4);\n      i0.ɵɵtemplate(5, AccordionTab_ng_container_5_Template, 1, 0, \"ng-container\", 5);\n      i0.ɵɵtemplate(6, AccordionTab_ng_content_6_Template, 1, 0, \"ng-content\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(7, \"div\", 7);\n      i0.ɵɵelementStart(8, \"div\", 8);\n      i0.ɵɵprojection(9);\n      i0.ɵɵtemplate(10, AccordionTab_ng_container_10_Template, 2, 1, \"ng-container\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(15, _c1, ctx.selected));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(17, _c2, ctx.selected, ctx.disabled));\n      i0.ɵɵadvance(1);\n      i0.ɵɵattribute(\"tabindex\", ctx.disabled ? null : 0)(\"id\", ctx.id)(\"aria-controls\", ctx.id + \"-content\")(\"aria-expanded\", ctx.selected);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngClass\", ctx.selected ? ctx.accordion.collapseIcon : ctx.accordion.expandIcon);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.hasHeaderFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.headerTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.hasHeaderFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"@tabContent\", ctx.selected ? i0.ɵɵpureFunction1(22, _c4, i0.ɵɵpureFunction1(20, _c3, ctx.transitionOptions)) : i0.ɵɵpureFunction1(26, _c5, i0.ɵɵpureFunction1(24, _c3, ctx.transitionOptions)));\n      i0.ɵɵattribute(\"id\", ctx.id + \"-content\")(\"aria-hidden\", !ctx.selected)(\"aria-labelledby\", ctx.id);\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngIf\", ctx.contentTemplate && (ctx.cache ? ctx.loaded : ctx.selected));\n    }\n  },\n  directives: [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet],\n  styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('tabContent', [state('hidden', style({\n      height: '0',\n      overflow: 'hidden'\n    })), state('visible', style({\n      height: '*'\n    })), transition('visible <=> hidden', [style({\n      overflow: 'hidden'\n    }), animate('{{transitionParams}}')]), transition('void => *', animate(0))])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AccordionTab, [{\n    type: Component,\n    args: [{\n      selector: 'p-accordionTab',\n      template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n      animations: [trigger('tabContent', [state('hidden', style({\n        height: '0',\n        overflow: 'hidden'\n      })), state('visible', style({\n        height: '*'\n      })), transition('visible <=> hidden', [style({\n        overflow: 'hidden'\n      }), animate('{{transitionParams}}')]), transition('void => *', animate(0))])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [forwardRef(() => Accordion)]\n      }]\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    header: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    cache: [{\n      type: Input\n    }],\n    selectedChange: [{\n      type: Output\n    }],\n    transitionOptions: [{\n      type: Input\n    }],\n    headerFacet: [{\n      type: ContentChildren,\n      args: [Header]\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    selected: [{\n      type: Input\n    }]\n  });\n})();\n\nclass Accordion {\n  constructor(el, changeDetector) {\n    this.el = el;\n    this.changeDetector = changeDetector;\n    this.onClose = new EventEmitter();\n    this.onOpen = new EventEmitter();\n    this.expandIcon = 'pi pi-fw pi-chevron-right';\n    this.collapseIcon = 'pi pi-fw pi-chevron-down';\n    this.activeIndexChange = new EventEmitter();\n    this.tabs = [];\n  }\n\n  ngAfterContentInit() {\n    this.initTabs();\n    this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n      this.initTabs();\n    });\n  }\n\n  initTabs() {\n    this.tabs = this.tabList.toArray();\n    this.updateSelectionState();\n    this.changeDetector.markForCheck();\n  }\n\n  getBlockableElement() {\n    return this.el.nativeElement.children[0];\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(val) {\n    this._activeIndex = val;\n\n    if (this.preventActiveIndexPropagation) {\n      this.preventActiveIndexPropagation = false;\n      return;\n    }\n\n    this.updateSelectionState();\n  }\n\n  updateSelectionState() {\n    if (this.tabs && this.tabs.length && this._activeIndex != null) {\n      for (let i = 0; i < this.tabs.length; i++) {\n        let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;\n        let changed = selected !== this.tabs[i].selected;\n\n        if (changed) {\n          this.tabs[i].selected = selected;\n          this.tabs[i].selectedChange.emit(selected);\n          this.tabs[i].changeDetector.markForCheck();\n        }\n      }\n    }\n  }\n\n  updateActiveIndex() {\n    let index = this.multiple ? [] : null;\n    this.tabs.forEach((tab, i) => {\n      if (tab.selected) {\n        if (this.multiple) {\n          index.push(i);\n        } else {\n          index = i;\n          return;\n        }\n      }\n    });\n    this.preventActiveIndexPropagation = true;\n    this.activeIndexChange.emit(index);\n  }\n\n  ngOnDestroy() {\n    if (this.tabListSubscription) {\n      this.tabListSubscription.unsubscribe();\n    }\n  }\n\n}\n\nAccordion.ɵfac = function Accordion_Factory(t) {\n  return new (t || Accordion)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nAccordion.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Accordion,\n  selectors: [[\"p-accordion\"]],\n  contentQueries: function Accordion_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, AccordionTab, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabList = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    multiple: \"multiple\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    expandIcon: \"expandIcon\",\n    collapseIcon: \"collapseIcon\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onClose: \"onClose\",\n    onOpen: \"onOpen\",\n    activeIndexChange: \"activeIndexChange\"\n  },\n  ngContentSelectors: _c7,\n  decls: 2,\n  vars: 4,\n  consts: [[\"role\", \"tablist\", 3, \"ngClass\", \"ngStyle\"]],\n  template: function Accordion_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵprojection(1);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-accordion p-component\")(\"ngStyle\", ctx.style);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Accordion, [{\n    type: Component,\n    args: [{\n      selector: 'p-accordion',\n      template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    multiple: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    onOpen: [{\n      type: Output\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    expandIcon: [{\n      type: Input\n    }],\n    collapseIcon: [{\n      type: Input\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    tabList: [{\n      type: ContentChildren,\n      args: [AccordionTab]\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass AccordionModule {}\n\nAccordionModule.ɵfac = function AccordionModule_Factory(t) {\n  return new (t || AccordionModule)();\n};\n\nAccordionModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: AccordionModule\n});\nAccordionModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AccordionModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Accordion, AccordionTab, SharedModule],\n      declarations: [Accordion, AccordionTab]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Accordion, AccordionModule, AccordionTab };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs"],"names":["i0","EventEmitter","forwardRef","Component","ChangeDetectionStrategy","ViewEncapsulation","Inject","Input","Output","ContentChildren","NgModule","trigger","state","style","transition","animate","i1","CommonModule","Header","PrimeTemplate","SharedModule","idx","AccordionTab","constructor","accordion","changeDetector","cache","selectedChange","transitionOptions","id","selected","_selected","val","loaded","detectChanges","ngAfterContentInit","templates","forEach","item","getType","contentTemplate","template","headerTemplate","toggle","event","disabled","index","findTabIndex","onClose","emit","originalEvent","multiple","i","tabs","length","markForCheck","onOpen","updateActiveIndex","preventDefault","hasHeaderFacet","headerFacet","onKeydown","which","ngOnDestroy","splice","ɵfac","Accordion","ChangeDetectorRef","ɵcmp","NgClass","NgIf","NgTemplateOutlet","height","overflow","type","args","selector","animations","changeDetection","OnPush","encapsulation","None","host","styles","undefined","decorators","header","el","expandIcon","collapseIcon","activeIndexChange","initTabs","tabListSubscription","tabList","changes","subscribe","_","toArray","updateSelectionState","getBlockableElement","nativeElement","children","activeIndex","_activeIndex","preventActiveIndexPropagation","includes","changed","tab","push","unsubscribe","ElementRef","NgStyle","styleClass","AccordionModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\n\nlet idx = 0;\nclass AccordionTab {\n    constructor(accordion, changeDetector) {\n        this.changeDetector = changeDetector;\n        this.cache = true;\n        this.selectedChange = new EventEmitter();\n        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n        this.id = `p-accordiontab-${idx++}`;\n        this.accordion = accordion;\n    }\n    get selected() {\n        return this._selected;\n    }\n    set selected(val) {\n        this._selected = val;\n        if (!this.loaded) {\n            if (this._selected && this.cache) {\n                this.loaded = true;\n            }\n            this.changeDetector.detectChanges();\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    toggle(event) {\n        if (this.disabled) {\n            return false;\n        }\n        let index = this.findTabIndex();\n        if (this.selected) {\n            this.selected = false;\n            this.accordion.onClose.emit({ originalEvent: event, index: index });\n        }\n        else {\n            if (!this.accordion.multiple) {\n                for (var i = 0; i < this.accordion.tabs.length; i++) {\n                    this.accordion.tabs[i].selected = false;\n                    this.accordion.tabs[i].selectedChange.emit(false);\n                    this.accordion.tabs[i].changeDetector.markForCheck();\n                }\n            }\n            this.selected = true;\n            this.loaded = true;\n            this.accordion.onOpen.emit({ originalEvent: event, index: index });\n        }\n        this.selectedChange.emit(this.selected);\n        this.accordion.updateActiveIndex();\n        this.changeDetector.markForCheck();\n        event.preventDefault();\n    }\n    findTabIndex() {\n        let index = -1;\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n            if (this.accordion.tabs[i] == this) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n    get hasHeaderFacet() {\n        return this.headerFacet && this.headerFacet.length > 0;\n    }\n    onKeydown(event) {\n        if (event.which === 32 || event.which === 13) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n    ngOnDestroy() {\n        this.accordion.tabs.splice(this.findTabIndex(), 1);\n    }\n}\nAccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: AccordionTab, selector: \"p-accordionTab\", inputs: { header: \"header\", disabled: \"disabled\", cache: \"cache\", transitionOptions: \"transitionOptions\", selected: \"selected\" }, outputs: { selectedChange: \"selectedChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", predicate: Header }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `, isInline: true, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n        trigger('tabContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionTab, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-accordionTab', template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `, animations: [\n                        trigger('tabContent', [\n                            state('hidden', style({\n                                height: '0',\n                                overflow: 'hidden'\n                            })),\n                            state('visible', style({\n                                height: '*'\n                            })),\n                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),\n                            transition('void => *', animate(0))\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [forwardRef(() => Accordion)]\n                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], cache: [{\n                type: Input\n            }], selectedChange: [{\n                type: Output\n            }], transitionOptions: [{\n                type: Input\n            }], headerFacet: [{\n                type: ContentChildren,\n                args: [Header]\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], selected: [{\n                type: Input\n            }] } });\nclass Accordion {\n    constructor(el, changeDetector) {\n        this.el = el;\n        this.changeDetector = changeDetector;\n        this.onClose = new EventEmitter();\n        this.onOpen = new EventEmitter();\n        this.expandIcon = 'pi pi-fw pi-chevron-right';\n        this.collapseIcon = 'pi pi-fw pi-chevron-down';\n        this.activeIndexChange = new EventEmitter();\n        this.tabs = [];\n    }\n    ngAfterContentInit() {\n        this.initTabs();\n        this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n    initTabs() {\n        this.tabs = this.tabList.toArray();\n        this.updateSelectionState();\n        this.changeDetector.markForCheck();\n    }\n    getBlockableElement() {\n        return this.el.nativeElement.children[0];\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    set activeIndex(val) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n        this.updateSelectionState();\n    }\n    updateSelectionState() {\n        if (this.tabs && this.tabs.length && this._activeIndex != null) {\n            for (let i = 0; i < this.tabs.length; i++) {\n                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);\n                let changed = selected !== this.tabs[i].selected;\n                if (changed) {\n                    this.tabs[i].selected = selected;\n                    this.tabs[i].selectedChange.emit(selected);\n                    this.tabs[i].changeDetector.markForCheck();\n                }\n            }\n        }\n    }\n    updateActiveIndex() {\n        let index = this.multiple ? [] : null;\n        this.tabs.forEach((tab, i) => {\n            if (tab.selected) {\n                if (this.multiple) {\n                    index.push(i);\n                }\n                else {\n                    index = i;\n                    return;\n                }\n            }\n        });\n        this.preventActiveIndexPropagation = true;\n        this.activeIndexChange.emit(index);\n    }\n    ngOnDestroy() {\n        if (this.tabListSubscription) {\n            this.tabListSubscription.unsubscribe();\n        }\n    }\n}\nAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Accordion, selector: \"p-accordion\", inputs: { multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", activeIndex: \"activeIndex\" }, outputs: { onClose: \"onClose\", onOpen: \"onOpen\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabList\", predicate: AccordionTab }], ngImport: i0, template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Accordion, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-accordion',\n                    template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], onOpen: [{\n                type: Output\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], expandIcon: [{\n                type: Input\n            }], collapseIcon: [{\n                type: Input\n            }], activeIndexChange: [{\n                type: Output\n            }], tabList: [{\n                type: ContentChildren,\n                args: [AccordionTab]\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass AccordionModule {\n}\nAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });\nAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, imports: [[CommonModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Accordion, AccordionTab, SharedModule],\n                    declarations: [Accordion, AccordionTab]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Accordion, AccordionModule, AccordionTab };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate } from 'primeng/api';\n\nfunction Button_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c0 = function (a1, a2, a3, a4) {\n  return {\n    \"p-button-icon\": true,\n    \"p-button-icon-left\": a1,\n    \"p-button-icon-right\": a2,\n    \"p-button-icon-top\": a3,\n    \"p-button-icon-bottom\": a4\n  };\n};\n\nfunction Button_span_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 4);\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r1.loading ? \"p-button-loading-icon \" + ctx_r1.loadingIcon : ctx_r1.icon);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(4, _c0, ctx_r1.iconPos === \"left\" && ctx_r1.label, ctx_r1.iconPos === \"right\" && ctx_r1.label, ctx_r1.iconPos === \"top\" && ctx_r1.label, ctx_r1.iconPos === \"bottom\" && ctx_r1.label));\n    i0.ɵɵattribute(\"aria-hidden\", true);\n  }\n}\n\nfunction Button_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 5);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵattribute(\"aria-hidden\", ctx_r2.icon && !ctx_r2.label);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r2.label || \"\\xA0\");\n  }\n}\n\nfunction Button_span_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 4);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r3.badgeClass);\n    i0.ɵɵproperty(\"ngClass\", ctx_r3.badgeStyleClass());\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r3.badge);\n  }\n}\n\nconst _c1 = function (a1, a2, a3, a4, a5) {\n  return {\n    \"p-button p-component\": true,\n    \"p-button-icon-only\": a1,\n    \"p-button-vertical\": a2,\n    \"p-disabled\": a3,\n    \"p-button-loading\": a4,\n    \"p-button-loading-label-only\": a5\n  };\n};\n\nconst _c2 = [\"*\"];\n\nclass ButtonDirective {\n  constructor(el) {\n    this.el = el;\n    this.iconPos = 'left';\n    this.loadingIcon = \"pi pi-spinner pi-spin\";\n    this._loading = false;\n  }\n\n  ngAfterViewInit() {\n    this._initialStyleClass = this.el.nativeElement.className;\n    DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n    if (this.icon || this.loading) {\n      this.createIconEl();\n    }\n\n    let labelElement = document.createElement(\"span\");\n\n    if (this.icon && !this.label) {\n      labelElement.setAttribute('aria-hidden', 'true');\n    }\n\n    labelElement.className = 'p-button-label';\n    if (this.label) labelElement.appendChild(document.createTextNode(this.label));else labelElement.innerHTML = '&nbsp;';\n    this.el.nativeElement.appendChild(labelElement);\n    this.initialized = true;\n  }\n\n  getStyleClass() {\n    let styleClass = 'p-button p-component';\n\n    if (this.icon && !this.label) {\n      styleClass = styleClass + ' p-button-icon-only';\n    }\n\n    if (this.loading) {\n      styleClass = styleClass + ' p-disabled p-button-loading';\n      if (!this.icon && this.label) styleClass = styleClass + ' p-button-loading-label-only';\n    }\n\n    return styleClass;\n  }\n\n  setStyleClass() {\n    let styleClass = this.getStyleClass();\n    this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n  }\n\n  createIconEl() {\n    let iconElement = document.createElement(\"span\");\n    iconElement.className = 'p-button-icon';\n    iconElement.setAttribute(\"aria-hidden\", \"true\");\n    let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n\n    if (iconPosClass) {\n      DomHandler.addClass(iconElement, iconPosClass);\n    }\n\n    let iconClass = this.getIconClass();\n\n    if (iconClass) {\n      DomHandler.addMultipleClasses(iconElement, iconClass);\n    }\n\n    let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');\n    if (labelEl) this.el.nativeElement.insertBefore(iconElement, labelEl);else this.el.nativeElement.appendChild(iconElement);\n  }\n\n  getIconClass() {\n    return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n  }\n\n  setIconClass() {\n    let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n\n    if (iconElement) {\n      if (this.iconPos) iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();else iconElement.className = 'p-button-icon ' + this.getIconClass();\n    } else {\n      this.createIconEl();\n    }\n  }\n\n  removeIconElement() {\n    let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n    this.el.nativeElement.removeChild(iconElement);\n  }\n\n  get label() {\n    return this._label;\n  }\n\n  set label(val) {\n    this._label = val;\n\n    if (this.initialized) {\n      DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n\n      if (this.loading || this.icon) {\n        this.setIconClass();\n      }\n\n      this.setStyleClass();\n    }\n  }\n\n  get icon() {\n    return this._icon;\n  }\n\n  set icon(val) {\n    this._icon = val;\n\n    if (this.initialized) {\n      this.setIconClass();\n      this.setStyleClass();\n    }\n  }\n\n  get loading() {\n    return this._loading;\n  }\n\n  set loading(val) {\n    this._loading = val;\n\n    if (this.initialized) {\n      if (this.loading || this.icon) this.setIconClass();else this.removeIconElement();\n      this.setStyleClass();\n    }\n  }\n\n  ngOnDestroy() {\n    this.initialized = false;\n  }\n\n}\n\nButtonDirective.ɵfac = function ButtonDirective_Factory(t) {\n  return new (t || ButtonDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n\nButtonDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: ButtonDirective,\n  selectors: [[\"\", \"pButton\", \"\"]],\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    iconPos: \"iconPos\",\n    loadingIcon: \"loadingIcon\",\n    label: \"label\",\n    icon: \"icon\",\n    loading: \"loading\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ButtonDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[pButton]',\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }];\n  }, {\n    iconPos: [{\n      type: Input\n    }],\n    loadingIcon: [{\n      type: Input\n    }],\n    label: [{\n      type: Input\n    }],\n    icon: [{\n      type: Input\n    }],\n    loading: [{\n      type: Input\n    }]\n  });\n})();\n\nclass Button {\n  constructor() {\n    this.type = \"button\";\n    this.iconPos = 'left';\n    this.loading = false;\n    this.loadingIcon = \"pi pi-spinner pi-spin\";\n    this.onClick = new EventEmitter();\n    this.onFocus = new EventEmitter();\n    this.onBlur = new EventEmitter();\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  badgeStyleClass() {\n    return {\n      'p-badge p-component': true,\n      'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n    };\n  }\n\n}\n\nButton.ɵfac = function Button_Factory(t) {\n  return new (t || Button)();\n};\n\nButton.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Button,\n  selectors: [[\"p-button\"]],\n  contentQueries: function Button_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    type: \"type\",\n    iconPos: \"iconPos\",\n    icon: \"icon\",\n    badge: \"badge\",\n    label: \"label\",\n    disabled: \"disabled\",\n    loading: \"loading\",\n    loadingIcon: \"loadingIcon\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    badgeClass: \"badgeClass\"\n  },\n  outputs: {\n    onClick: \"onClick\",\n    onFocus: \"onFocus\",\n    onBlur: \"onBlur\"\n  },\n  ngContentSelectors: _c2,\n  decls: 6,\n  vars: 16,\n  consts: [[\"pRipple\", \"\", 3, \"ngStyle\", \"disabled\", \"ngClass\", \"click\", \"focus\", \"blur\"], [4, \"ngTemplateOutlet\"], [3, \"ngClass\", \"class\", 4, \"ngIf\"], [\"class\", \"p-button-label\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-button-label\"]],\n  template: function Button_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"button\", 0);\n      i0.ɵɵlistener(\"click\", function Button_Template_button_click_0_listener($event) {\n        return ctx.onClick.emit($event);\n      })(\"focus\", function Button_Template_button_focus_0_listener($event) {\n        return ctx.onFocus.emit($event);\n      })(\"blur\", function Button_Template_button_blur_0_listener($event) {\n        return ctx.onBlur.emit($event);\n      });\n      i0.ɵɵprojection(1);\n      i0.ɵɵtemplate(2, Button_ng_container_2_Template, 1, 0, \"ng-container\", 1);\n      i0.ɵɵtemplate(3, Button_span_3_Template, 1, 9, \"span\", 2);\n      i0.ɵɵtemplate(4, Button_span_4_Template, 2, 2, \"span\", 3);\n      i0.ɵɵtemplate(5, Button_span_5_Template, 2, 4, \"span\", 2);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngStyle\", ctx.style)(\"disabled\", ctx.disabled || ctx.loading)(\"ngClass\", i0.ɵɵpureFunction5(10, _c1, ctx.icon && !ctx.label, (ctx.iconPos === \"top\" || ctx.iconPos === \"bottom\") && ctx.label, ctx.disabled || ctx.loading, ctx.loading, ctx.loading && !ctx.icon && ctx.label));\n      i0.ɵɵattribute(\"type\", ctx.type);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.contentTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate && (ctx.icon || ctx.loading));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate && ctx.badge);\n    }\n  },\n  directives: [i1.Ripple, i2.NgStyle, i2.NgClass, i2.NgTemplateOutlet, i2.NgIf],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Button, [{\n    type: Component,\n    args: [{\n      selector: 'p-button',\n      template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], null, {\n    type: [{\n      type: Input\n    }],\n    iconPos: [{\n      type: Input\n    }],\n    icon: [{\n      type: Input\n    }],\n    badge: [{\n      type: Input\n    }],\n    label: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    loading: [{\n      type: Input\n    }],\n    loadingIcon: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    badgeClass: [{\n      type: Input\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    onClick: [{\n      type: Output\n    }],\n    onFocus: [{\n      type: Output\n    }],\n    onBlur: [{\n      type: Output\n    }]\n  });\n})();\n\nclass ButtonModule {}\n\nButtonModule.ɵfac = function ButtonModule_Factory(t) {\n  return new (t || ButtonModule)();\n};\n\nButtonModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ButtonModule\n});\nButtonModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, RippleModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ButtonModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, RippleModule],\n      exports: [ButtonDirective, Button],\n      declarations: [ButtonDirective, Button]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Button, ButtonDirective, ButtonModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs"],"names":["i0","Directive","Input","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","ContentChildren","Output","NgModule","DomHandler","i2","CommonModule","i1","RippleModule","PrimeTemplate","ButtonDirective","constructor","el","iconPos","loadingIcon","_loading","ngAfterViewInit","_initialStyleClass","nativeElement","className","addMultipleClasses","getStyleClass","icon","loading","createIconEl","labelElement","document","createElement","label","setAttribute","appendChild","createTextNode","innerHTML","initialized","styleClass","setStyleClass","iconElement","iconPosClass","addClass","iconClass","getIconClass","labelEl","findSingle","insertBefore","_icon","setIconClass","removeIconElement","removeChild","_label","val","textContent","ngOnDestroy","ɵfac","ElementRef","ɵdir","type","args","selector","host","Button","onClick","onFocus","onBlur","ngAfterContentInit","templates","forEach","item","getType","contentTemplate","template","badgeStyleClass","badge","String","length","ɵcmp","Ripple","NgStyle","NgClass","NgTemplateOutlet","NgIf","changeDetection","OnPush","encapsulation","None","disabled","style","badgeClass","ButtonModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate } from 'primeng/api';\n\nclass ButtonDirective {\n    constructor(el) {\n        this.el = el;\n        this.iconPos = 'left';\n        this.loadingIcon = \"pi pi-spinner pi-spin\";\n        this._loading = false;\n    }\n    ngAfterViewInit() {\n        this._initialStyleClass = this.el.nativeElement.className;\n        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n        if (this.icon || this.loading) {\n            this.createIconEl();\n        }\n        let labelElement = document.createElement(\"span\");\n        if (this.icon && !this.label) {\n            labelElement.setAttribute('aria-hidden', 'true');\n        }\n        labelElement.className = 'p-button-label';\n        if (this.label)\n            labelElement.appendChild(document.createTextNode(this.label));\n        else\n            labelElement.innerHTML = '&nbsp;';\n        this.el.nativeElement.appendChild(labelElement);\n        this.initialized = true;\n    }\n    getStyleClass() {\n        let styleClass = 'p-button p-component';\n        if (this.icon && !this.label) {\n            styleClass = styleClass + ' p-button-icon-only';\n        }\n        if (this.loading) {\n            styleClass = styleClass + ' p-disabled p-button-loading';\n            if (!this.icon && this.label)\n                styleClass = styleClass + ' p-button-loading-label-only';\n        }\n        return styleClass;\n    }\n    setStyleClass() {\n        let styleClass = this.getStyleClass();\n        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n    }\n    createIconEl() {\n        let iconElement = document.createElement(\"span\");\n        iconElement.className = 'p-button-icon';\n        iconElement.setAttribute(\"aria-hidden\", \"true\");\n        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n        if (iconPosClass) {\n            DomHandler.addClass(iconElement, iconPosClass);\n        }\n        let iconClass = this.getIconClass();\n        if (iconClass) {\n            DomHandler.addMultipleClasses(iconElement, iconClass);\n        }\n        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');\n        if (labelEl)\n            this.el.nativeElement.insertBefore(iconElement, labelEl);\n        else\n            this.el.nativeElement.appendChild(iconElement);\n    }\n    getIconClass() {\n        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n    }\n    setIconClass() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        if (iconElement) {\n            if (this.iconPos)\n                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n            else\n                iconElement.className = 'p-button-icon ' + this.getIconClass();\n        }\n        else {\n            this.createIconEl();\n        }\n    }\n    removeIconElement() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        this.el.nativeElement.removeChild(iconElement);\n    }\n    get label() {\n        return this._label;\n    }\n    set label(val) {\n        this._label = val;\n        if (this.initialized) {\n            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n            if (this.loading || this.icon) {\n                this.setIconClass();\n            }\n            this.setStyleClass();\n        }\n    }\n    get icon() {\n        return this._icon;\n    }\n    set icon(val) {\n        this._icon = val;\n        if (this.initialized) {\n            this.setIconClass();\n            this.setStyleClass();\n        }\n    }\n    get loading() {\n        return this._loading;\n    }\n    set loading(val) {\n        this._loading = val;\n        if (this.initialized) {\n            if (this.loading || this.icon)\n                this.setIconClass();\n            else\n                this.removeIconElement();\n            this.setStyleClass();\n        }\n    }\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: ButtonDirective, selector: \"[pButton]\", inputs: { iconPos: \"iconPos\", loadingIcon: \"loadingIcon\", label: \"label\", icon: \"icon\", loading: \"loading\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pButton]',\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{\n                type: Input\n            }], loadingIcon: [{\n                type: Input\n            }], label: [{\n                type: Input\n            }], icon: [{\n                type: Input\n            }], loading: [{\n                type: Input\n            }] } });\nclass Button {\n    constructor() {\n        this.type = \"button\";\n        this.iconPos = 'left';\n        this.loading = false;\n        this.loadingIcon = \"pi pi-spinner pi-spin\";\n        this.onClick = new EventEmitter();\n        this.onFocus = new EventEmitter();\n        this.onBlur = new EventEmitter();\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    badgeStyleClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n        };\n    }\n}\nButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });\nButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Button, selector: \"p-button\", inputs: { type: \"type\", iconPos: \"iconPos\", icon: \"icon\", badge: \"badge\", label: \"label\", disabled: \"disabled\", loading: \"loading\", loadingIcon: \"loadingIcon\", style: \"style\", styleClass: \"styleClass\", badgeClass: \"badgeClass\" }, outputs: { onClick: \"onClick\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `, isInline: true, directives: [{ type: i1.Ripple, selector: \"[pRipple]\" }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Button, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-button',\n                    template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], propDecorators: { type: [{\n                type: Input\n            }], iconPos: [{\n                type: Input\n            }], icon: [{\n                type: Input\n            }], badge: [{\n                type: Input\n            }], label: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], loading: [{\n                type: Input\n            }], loadingIcon: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], badgeClass: [{\n                type: Input\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], onClick: [{\n                type: Output\n            }], onFocus: [{\n                type: Output\n            }], onBlur: [{\n                type: Output\n            }] } });\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, RippleModule],\n                    exports: [ButtonDirective, Button],\n                    declarations: [ButtonDirective, Button]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Button, ButtonDirective, ButtonModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** IDs are delimited by an empty space, as per the spec. */\n\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\nfunction addAriaReferencedId(el, attr, id) {\n  const ids = getAriaReferenceIds(el, attr);\n\n  if (ids.some(existingId => existingId.trim() == id.trim())) {\n    return;\n  }\n\n  ids.push(id.trim());\n  el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\n\nfunction removeAriaReferencedId(el, attr, id) {\n  const ids = getAriaReferenceIds(el, attr);\n  const filteredIds = ids.filter(val => val != id.trim());\n\n  if (filteredIds.length) {\n    el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n  } else {\n    el.removeAttribute(attr);\n  }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\n\nfunction getAriaReferenceIds(el, attr) {\n  // Get string array of all individual ids (whitespace delimited) in the attribute value\n  return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** ID used for the body container where all messages are appended. */\n\n\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\n\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\n\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\n\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\n\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\n\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\n\nclass AriaDescriber {\n  constructor(_document) {\n    this._document = _document;\n  }\n\n  describe(hostElement, message, role) {\n    if (!this._canBeDescribed(hostElement, message)) {\n      return;\n    }\n\n    const key = getKey(message, role);\n\n    if (typeof message !== 'string') {\n      // We need to ensure that the element has an ID.\n      setMessageId(message);\n      messageRegistry.set(key, {\n        messageElement: message,\n        referenceCount: 0\n      });\n    } else if (!messageRegistry.has(key)) {\n      this._createMessageElement(message, role);\n    }\n\n    if (!this._isElementDescribedByMessage(hostElement, key)) {\n      this._addMessageReference(hostElement, key);\n    }\n  }\n\n  removeDescription(hostElement, message, role) {\n    if (!message || !this._isElementNode(hostElement)) {\n      return;\n    }\n\n    const key = getKey(message, role);\n\n    if (this._isElementDescribedByMessage(hostElement, key)) {\n      this._removeMessageReference(hostElement, key);\n    } // If the message is a string, it means that it's one that we created for the\n    // consumer so we can remove it safely, otherwise we should leave it in place.\n\n\n    if (typeof message === 'string') {\n      const registeredMessage = messageRegistry.get(key);\n\n      if (registeredMessage && registeredMessage.referenceCount === 0) {\n        this._deleteMessageElement(key);\n      }\n    }\n\n    if (messagesContainer && messagesContainer.childNodes.length === 0) {\n      this._deleteMessagesContainer();\n    }\n  }\n  /** Unregisters all created message elements and removes the message container. */\n\n\n  ngOnDestroy() {\n    const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n\n    for (let i = 0; i < describedElements.length; i++) {\n      this._removeCdkDescribedByReferenceIds(describedElements[i]);\n\n      describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n    }\n\n    if (messagesContainer) {\n      this._deleteMessagesContainer();\n    }\n\n    messageRegistry.clear();\n  }\n  /**\n   * Creates a new element in the visually hidden message container element with the message\n   * as its content and adds it to the message registry.\n   */\n\n\n  _createMessageElement(message, role) {\n    const messageElement = this._document.createElement('div');\n\n    setMessageId(messageElement);\n    messageElement.textContent = message;\n\n    if (role) {\n      messageElement.setAttribute('role', role);\n    }\n\n    this._createMessagesContainer();\n\n    messagesContainer.appendChild(messageElement);\n    messageRegistry.set(getKey(message, role), {\n      messageElement,\n      referenceCount: 0\n    });\n  }\n  /** Deletes the message element from the global messages container. */\n\n\n  _deleteMessageElement(key) {\n    const registeredMessage = messageRegistry.get(key);\n    registeredMessage?.messageElement?.remove();\n    messageRegistry.delete(key);\n  }\n  /** Creates the global container for all aria-describedby messages. */\n\n\n  _createMessagesContainer() {\n    if (!messagesContainer) {\n      const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID); // When going from the server to the client, we may end up in a situation where there's\n      // already a container on the page, but we don't have a reference to it. Clear the\n      // old container so we don't get duplicates. Doing this, instead of emptying the previous\n      // container, should be slightly faster.\n\n\n      preExistingContainer?.remove();\n      messagesContainer = this._document.createElement('div');\n      messagesContainer.id = MESSAGES_CONTAINER_ID; // We add `visibility: hidden` in order to prevent text in this container from\n      // being searchable by the browser's Ctrl + F functionality.\n      // Screen-readers will still read the description for elements with aria-describedby even\n      // when the description element is not visible.\n\n      messagesContainer.style.visibility = 'hidden'; // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n      // the description element doesn't impact page layout.\n\n      messagesContainer.classList.add('cdk-visually-hidden');\n\n      this._document.body.appendChild(messagesContainer);\n    }\n  }\n  /** Deletes the global messages container. */\n\n\n  _deleteMessagesContainer() {\n    if (messagesContainer) {\n      messagesContainer.remove();\n      messagesContainer = null;\n    }\n  }\n  /** Removes all cdk-describedby messages that are hosted through the element. */\n\n\n  _removeCdkDescribedByReferenceIds(element) {\n    // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n    const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n    element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n  }\n  /**\n   * Adds a message reference to the element using aria-describedby and increments the registered\n   * message's reference count.\n   */\n\n\n  _addMessageReference(element, key) {\n    const registeredMessage = messageRegistry.get(key); // Add the aria-describedby reference and set the\n    // describedby_host attribute to mark the element.\n\n    addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n    registeredMessage.referenceCount++;\n  }\n  /**\n   * Removes a message reference from the element using aria-describedby\n   * and decrements the registered message's reference count.\n   */\n\n\n  _removeMessageReference(element, key) {\n    const registeredMessage = messageRegistry.get(key);\n    registeredMessage.referenceCount--;\n    removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n  }\n  /** Returns true if the element has been described by the provided message ID. */\n\n\n  _isElementDescribedByMessage(element, key) {\n    const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n    const registeredMessage = messageRegistry.get(key);\n    const messageId = registeredMessage && registeredMessage.messageElement.id;\n    return !!messageId && referenceIds.indexOf(messageId) != -1;\n  }\n  /** Determines whether a message can be described on a particular element. */\n\n\n  _canBeDescribed(element, message) {\n    if (!this._isElementNode(element)) {\n      return false;\n    }\n\n    if (message && typeof message === 'object') {\n      // We'd have to make some assumptions about the description element's text, if the consumer\n      // passed in an element. Assume that if an element is passed in, the consumer has verified\n      // that it can be used as a description.\n      return true;\n    }\n\n    const trimmedMessage = message == null ? '' : `${message}`.trim();\n    const ariaLabel = element.getAttribute('aria-label'); // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n    // element, because screen readers will end up reading out the same text twice in a row.\n\n    return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n  }\n  /** Checks whether a node is an Element node. */\n\n\n  _isElementNode(element) {\n    return element.nodeType === this._document.ELEMENT_NODE;\n  }\n\n}\n\nAriaDescriber.ɵfac = function AriaDescriber_Factory(t) {\n  return new (t || AriaDescriber)(i0.ɵɵinject(DOCUMENT));\n};\n\nAriaDescriber.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: AriaDescriber,\n  factory: AriaDescriber.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AriaDescriber, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/** Gets a key that can be used to look messages up in the registry. */\n\n\nfunction getKey(message, role) {\n  return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\n\n\nfunction setMessageId(element) {\n  if (!element.id) {\n    element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n  }\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\n\n\nclass ListKeyManager {\n  constructor(_items) {\n    this._items = _items;\n    this._activeItemIndex = -1;\n    this._activeItem = null;\n    this._wrap = false;\n    this._letterKeyStream = new Subject();\n    this._typeaheadSubscription = Subscription.EMPTY;\n    this._vertical = true;\n    this._allowedModifierKeys = [];\n    this._homeAndEnd = false;\n    /**\n     * Predicate function that can be used to check whether an item should be skipped\n     * by the key manager. By default, disabled items are skipped.\n     */\n\n    this._skipPredicateFn = item => item.disabled; // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n\n\n    this._pressedLetters = [];\n    /**\n     * Stream that emits any time the TAB key is pressed, so components can react\n     * when focus is shifted off of the list.\n     */\n\n    this.tabOut = new Subject();\n    /** Stream that emits whenever the active item of the list manager changes. */\n\n    this.change = new Subject(); // We allow for the items to be an array because, in some cases, the consumer may\n    // not have access to a QueryList of the items they want to manage (e.g. when the\n    // items aren't being collected via `ViewChildren` or `ContentChildren`).\n\n    if (_items instanceof QueryList) {\n      _items.changes.subscribe(newItems => {\n        if (this._activeItem) {\n          const itemArray = newItems.toArray();\n          const newIndex = itemArray.indexOf(this._activeItem);\n\n          if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n            this._activeItemIndex = newIndex;\n          }\n        }\n      });\n    }\n  }\n  /**\n   * Sets the predicate function that determines which items should be skipped by the\n   * list key manager.\n   * @param predicate Function that determines whether the given item should be skipped.\n   */\n\n\n  skipPredicate(predicate) {\n    this._skipPredicateFn = predicate;\n    return this;\n  }\n  /**\n   * Configures wrapping mode, which determines whether the active item will wrap to\n   * the other end of list when there are no more items in the given direction.\n   * @param shouldWrap Whether the list should wrap when reaching the end.\n   */\n\n\n  withWrap(shouldWrap = true) {\n    this._wrap = shouldWrap;\n    return this;\n  }\n  /**\n   * Configures whether the key manager should be able to move the selection vertically.\n   * @param enabled Whether vertical selection should be enabled.\n   */\n\n\n  withVerticalOrientation(enabled = true) {\n    this._vertical = enabled;\n    return this;\n  }\n  /**\n   * Configures the key manager to move the selection horizontally.\n   * Passing in `null` will disable horizontal movement.\n   * @param direction Direction in which the selection can be moved.\n   */\n\n\n  withHorizontalOrientation(direction) {\n    this._horizontal = direction;\n    return this;\n  }\n  /**\n   * Modifier keys which are allowed to be held down and whose default actions will be prevented\n   * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n   */\n\n\n  withAllowedModifierKeys(keys) {\n    this._allowedModifierKeys = keys;\n    return this;\n  }\n  /**\n   * Turns on typeahead mode which allows users to set the active item by typing.\n   * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n   */\n\n\n  withTypeAhead(debounceInterval = 200) {\n    if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._items.length && this._items.some(item => typeof item.getLabel !== 'function')) {\n      throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n    }\n\n    this._typeaheadSubscription.unsubscribe(); // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n    // and convert those letters back into a string. Afterwards find the first item that starts\n    // with that string and select it.\n\n\n    this._typeaheadSubscription = this._letterKeyStream.pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join(''))).subscribe(inputString => {\n      const items = this._getItemsArray(); // Start at 1 because we want to start searching at the item immediately\n      // following the current active item.\n\n\n      for (let i = 1; i < items.length + 1; i++) {\n        const index = (this._activeItemIndex + i) % items.length;\n        const item = items[index];\n\n        if (!this._skipPredicateFn(item) && item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n          this.setActiveItem(index);\n          break;\n        }\n      }\n\n      this._pressedLetters = [];\n    });\n    return this;\n  }\n  /**\n   * Configures the key manager to activate the first and last items\n   * respectively when the Home or End key is pressed.\n   * @param enabled Whether pressing the Home or End key activates the first/last item.\n   */\n\n\n  withHomeAndEnd(enabled = true) {\n    this._homeAndEnd = enabled;\n    return this;\n  }\n\n  setActiveItem(item) {\n    const previousActiveItem = this._activeItem;\n    this.updateActiveItem(item);\n\n    if (this._activeItem !== previousActiveItem) {\n      this.change.next(this._activeItemIndex);\n    }\n  }\n  /**\n   * Sets the active item depending on the key event passed in.\n   * @param event Keyboard event to be used for determining which element should be active.\n   */\n\n\n  onKeydown(event) {\n    const keyCode = event.keyCode;\n    const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n    const isModifierAllowed = modifiers.every(modifier => {\n      return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n    });\n\n    switch (keyCode) {\n      case TAB:\n        this.tabOut.next();\n        return;\n\n      case DOWN_ARROW:\n        if (this._vertical && isModifierAllowed) {\n          this.setNextItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case UP_ARROW:\n        if (this._vertical && isModifierAllowed) {\n          this.setPreviousItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case RIGHT_ARROW:\n        if (this._horizontal && isModifierAllowed) {\n          this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case LEFT_ARROW:\n        if (this._horizontal && isModifierAllowed) {\n          this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case HOME:\n        if (this._homeAndEnd && isModifierAllowed) {\n          this.setFirstItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case END:\n        if (this._homeAndEnd && isModifierAllowed) {\n          this.setLastItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      default:\n        if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n          // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n          // otherwise fall back to resolving alphanumeric characters via the keyCode.\n          if (event.key && event.key.length === 1) {\n            this._letterKeyStream.next(event.key.toLocaleUpperCase());\n          } else if (keyCode >= A && keyCode <= Z || keyCode >= ZERO && keyCode <= NINE) {\n            this._letterKeyStream.next(String.fromCharCode(keyCode));\n          }\n        } // Note that we return here, in order to avoid preventing\n        // the default action of non-navigational keys.\n\n\n        return;\n    }\n\n    this._pressedLetters = [];\n    event.preventDefault();\n  }\n  /** Index of the currently active item. */\n\n\n  get activeItemIndex() {\n    return this._activeItemIndex;\n  }\n  /** The active item. */\n\n\n  get activeItem() {\n    return this._activeItem;\n  }\n  /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n\n\n  isTyping() {\n    return this._pressedLetters.length > 0;\n  }\n  /** Sets the active item to the first enabled item in the list. */\n\n\n  setFirstItemActive() {\n    this._setActiveItemByIndex(0, 1);\n  }\n  /** Sets the active item to the last enabled item in the list. */\n\n\n  setLastItemActive() {\n    this._setActiveItemByIndex(this._items.length - 1, -1);\n  }\n  /** Sets the active item to the next enabled item in the list. */\n\n\n  setNextItemActive() {\n    this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n  }\n  /** Sets the active item to a previous enabled item in the list. */\n\n\n  setPreviousItemActive() {\n    this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1);\n  }\n\n  updateActiveItem(item) {\n    const itemArray = this._getItemsArray();\n\n    const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n    const activeItem = itemArray[index]; // Explicitly check for `null` and `undefined` because other falsy values are valid.\n\n    this._activeItem = activeItem == null ? null : activeItem;\n    this._activeItemIndex = index;\n  }\n  /**\n   * This method sets the active item, given a list of items and the delta between the\n   * currently active item and the new active item. It will calculate differently\n   * depending on whether wrap mode is turned on.\n   */\n\n\n  _setActiveItemByDelta(delta) {\n    this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n  }\n  /**\n   * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n   * down the list until it finds an item that is not disabled, and it will wrap if it\n   * encounters either end of the list.\n   */\n\n\n  _setActiveInWrapMode(delta) {\n    const items = this._getItemsArray();\n\n    for (let i = 1; i <= items.length; i++) {\n      const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n      const item = items[index];\n\n      if (!this._skipPredicateFn(item)) {\n        this.setActiveItem(index);\n        return;\n      }\n    }\n  }\n  /**\n   * Sets the active item properly given the default mode. In other words, it will\n   * continue to move down the list until it finds an item that is not disabled. If\n   * it encounters either end of the list, it will stop and not wrap.\n   */\n\n\n  _setActiveInDefaultMode(delta) {\n    this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n  }\n  /**\n   * Sets the active item to the first enabled item starting at the index specified. If the\n   * item is disabled, it will move in the fallbackDelta direction until it either\n   * finds an enabled item or encounters the end of the list.\n   */\n\n\n  _setActiveItemByIndex(index, fallbackDelta) {\n    const items = this._getItemsArray();\n\n    if (!items[index]) {\n      return;\n    }\n\n    while (this._skipPredicateFn(items[index])) {\n      index += fallbackDelta;\n\n      if (!items[index]) {\n        return;\n      }\n    }\n\n    this.setActiveItem(index);\n  }\n  /** Returns the items as an array. */\n\n\n  _getItemsArray() {\n    return this._items instanceof QueryList ? this._items.toArray() : this._items;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass ActiveDescendantKeyManager extends ListKeyManager {\n  setActiveItem(index) {\n    if (this.activeItem) {\n      this.activeItem.setInactiveStyles();\n    }\n\n    super.setActiveItem(index);\n\n    if (this.activeItem) {\n      this.activeItem.setActiveStyles();\n    }\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass FocusKeyManager extends ListKeyManager {\n  constructor() {\n    super(...arguments);\n    this._origin = 'program';\n  }\n  /**\n   * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n   * @param origin Focus origin to be used when focusing items.\n   */\n\n\n  setFocusOrigin(origin) {\n    this._origin = origin;\n    return this;\n  }\n\n  setActiveItem(item) {\n    super.setActiveItem(item);\n\n    if (this.activeItem) {\n      this.activeItem.focus(this._origin);\n    }\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Configuration for the isFocusable method.\n */\n\n\nclass IsFocusableConfig {\n  constructor() {\n    /**\n     * Whether to count an element as focusable even if it is not currently visible.\n     */\n    this.ignoreVisibility = false;\n  }\n\n} // The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\n\n\nclass InteractivityChecker {\n  constructor(_platform) {\n    this._platform = _platform;\n  }\n  /**\n   * Gets whether an element is disabled.\n   *\n   * @param element Element to be checked.\n   * @returns Whether the element is disabled.\n   */\n\n\n  isDisabled(element) {\n    // This does not capture some cases, such as a non-form control with a disabled attribute or\n    // a form control inside of a disabled form, but should capture the most common cases.\n    return element.hasAttribute('disabled');\n  }\n  /**\n   * Gets whether an element is visible for the purposes of interactivity.\n   *\n   * This will capture states like `display: none` and `visibility: hidden`, but not things like\n   * being clipped by an `overflow: hidden` parent or being outside the viewport.\n   *\n   * @returns Whether the element is visible.\n   */\n\n\n  isVisible(element) {\n    return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n  }\n  /**\n   * Gets whether an element can be reached via Tab key.\n   * Assumes that the element has already been checked with isFocusable.\n   *\n   * @param element Element to be checked.\n   * @returns Whether the element is tabbable.\n   */\n\n\n  isTabbable(element) {\n    // Nothing is tabbable on the server 😎\n    if (!this._platform.isBrowser) {\n      return false;\n    }\n\n    const frameElement = getFrameElement(getWindow(element));\n\n    if (frameElement) {\n      // Frame elements inherit their tabindex onto all child elements.\n      if (getTabIndexValue(frameElement) === -1) {\n        return false;\n      } // Browsers disable tabbing to an element inside of an invisible frame.\n\n\n      if (!this.isVisible(frameElement)) {\n        return false;\n      }\n    }\n\n    let nodeName = element.nodeName.toLowerCase();\n    let tabIndexValue = getTabIndexValue(element);\n\n    if (element.hasAttribute('contenteditable')) {\n      return tabIndexValue !== -1;\n    }\n\n    if (nodeName === 'iframe' || nodeName === 'object') {\n      // The frame or object's content may be tabbable depending on the content, but it's\n      // not possibly to reliably detect the content of the frames. We always consider such\n      // elements as non-tabbable.\n      return false;\n    } // In iOS, the browser only considers some specific elements as tabbable.\n\n\n    if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n      return false;\n    }\n\n    if (nodeName === 'audio') {\n      // Audio elements without controls enabled are never tabbable, regardless\n      // of the tabindex attribute explicitly being set.\n      if (!element.hasAttribute('controls')) {\n        return false;\n      } // Audio elements with controls are by default tabbable unless the\n      // tabindex attribute is set to `-1` explicitly.\n\n\n      return tabIndexValue !== -1;\n    }\n\n    if (nodeName === 'video') {\n      // For all video elements, if the tabindex attribute is set to `-1`, the video\n      // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n      // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n      // tabindex attribute is the source of truth here.\n      if (tabIndexValue === -1) {\n        return false;\n      } // If the tabindex is explicitly set, and not `-1` (as per check before), the\n      // video element is always tabbable (regardless of whether it has controls or not).\n\n\n      if (tabIndexValue !== null) {\n        return true;\n      } // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n      // has controls enabled. Firefox is special as videos are always tabbable regardless\n      // of whether there are controls or not.\n\n\n      return this._platform.FIREFOX || element.hasAttribute('controls');\n    }\n\n    return element.tabIndex >= 0;\n  }\n  /**\n   * Gets whether an element can be focused by the user.\n   *\n   * @param element Element to be checked.\n   * @param config The config object with options to customize this method's behavior\n   * @returns Whether the element is focusable.\n   */\n\n\n  isFocusable(element, config) {\n    // Perform checks in order of left to most expensive.\n    // Again, naive approach that does not capture many edge cases and browser quirks.\n    return isPotentiallyFocusable(element) && !this.isDisabled(element) && (config?.ignoreVisibility || this.isVisible(element));\n  }\n\n}\n\nInteractivityChecker.ɵfac = function InteractivityChecker_Factory(t) {\n  return new (t || InteractivityChecker)(i0.ɵɵinject(i1.Platform));\n};\n\nInteractivityChecker.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: InteractivityChecker,\n  factory: InteractivityChecker.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InteractivityChecker, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }];\n  }, null);\n})();\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\n\n\nfunction getFrameElement(window) {\n  try {\n    return window.frameElement;\n  } catch {\n    return null;\n  }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\n\n\nfunction hasGeometry(element) {\n  // Use logic from jQuery to check for an invisible element.\n  // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n  return !!(element.offsetWidth || element.offsetHeight || typeof element.getClientRects === 'function' && element.getClientRects().length);\n}\n/** Gets whether an element's  */\n\n\nfunction isNativeFormElement(element) {\n  let nodeName = element.nodeName.toLowerCase();\n  return nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea';\n}\n/** Gets whether an element is an `<input type=\"hidden\">`. */\n\n\nfunction isHiddenInput(element) {\n  return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\n\n\nfunction isAnchorWithHref(element) {\n  return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\n\n\nfunction isInputElement(element) {\n  return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\n\n\nfunction isAnchorElement(element) {\n  return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\n\n\nfunction hasValidTabIndex(element) {\n  if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n    return false;\n  }\n\n  let tabIndex = element.getAttribute('tabindex');\n  return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\n\n\nfunction getTabIndexValue(element) {\n  if (!hasValidTabIndex(element)) {\n    return null;\n  } // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n\n\n  const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n  return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\n\n\nfunction isPotentiallyTabbableIOS(element) {\n  let nodeName = element.nodeName.toLowerCase();\n  let inputType = nodeName === 'input' && element.type;\n  return inputType === 'text' || inputType === 'password' || nodeName === 'select' || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\n\n\nfunction isPotentiallyFocusable(element) {\n  // Inputs are potentially focusable *unless* they're type=\"hidden\".\n  if (isHiddenInput(element)) {\n    return false;\n  }\n\n  return isNativeFormElement(element) || isAnchorWithHref(element) || element.hasAttribute('contenteditable') || hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\n\n\nfunction getWindow(node) {\n  // ownerDocument is null if `node` itself *is* a document.\n  return node.ownerDocument && node.ownerDocument.defaultView || window;\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\n\n\nclass FocusTrap {\n  constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n    this._element = _element;\n    this._checker = _checker;\n    this._ngZone = _ngZone;\n    this._document = _document;\n    this._hasAttached = false; // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n\n    this.startAnchorListener = () => this.focusLastTabbableElement();\n\n    this.endAnchorListener = () => this.focusFirstTabbableElement();\n\n    this._enabled = true;\n\n    if (!deferAnchors) {\n      this.attachAnchors();\n    }\n  }\n  /** Whether the focus trap is active. */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    this._enabled = value;\n\n    if (this._startAnchor && this._endAnchor) {\n      this._toggleAnchorTabIndex(value, this._startAnchor);\n\n      this._toggleAnchorTabIndex(value, this._endAnchor);\n    }\n  }\n  /** Destroys the focus trap by cleaning up the anchors. */\n\n\n  destroy() {\n    const startAnchor = this._startAnchor;\n    const endAnchor = this._endAnchor;\n\n    if (startAnchor) {\n      startAnchor.removeEventListener('focus', this.startAnchorListener);\n      startAnchor.remove();\n    }\n\n    if (endAnchor) {\n      endAnchor.removeEventListener('focus', this.endAnchorListener);\n      endAnchor.remove();\n    }\n\n    this._startAnchor = this._endAnchor = null;\n    this._hasAttached = false;\n  }\n  /**\n   * Inserts the anchors into the DOM. This is usually done automatically\n   * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n   * @returns Whether the focus trap managed to attach successfully. This may not be the case\n   * if the target element isn't currently in the DOM.\n   */\n\n\n  attachAnchors() {\n    // If we're not on the browser, there can be no focus to trap.\n    if (this._hasAttached) {\n      return true;\n    }\n\n    this._ngZone.runOutsideAngular(() => {\n      if (!this._startAnchor) {\n        this._startAnchor = this._createAnchor();\n\n        this._startAnchor.addEventListener('focus', this.startAnchorListener);\n      }\n\n      if (!this._endAnchor) {\n        this._endAnchor = this._createAnchor();\n\n        this._endAnchor.addEventListener('focus', this.endAnchorListener);\n      }\n    });\n\n    if (this._element.parentNode) {\n      this._element.parentNode.insertBefore(this._startAnchor, this._element);\n\n      this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n\n      this._hasAttached = true;\n    }\n\n    return this._hasAttached;\n  }\n  /**\n   * Waits for the zone to stabilize, then focuses the first tabbable element.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfully.\n   */\n\n\n  focusInitialElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n    });\n  }\n  /**\n   * Waits for the zone to stabilize, then focuses\n   * the first tabbable element within the focus trap region.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfully.\n   */\n\n\n  focusFirstTabbableElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n    });\n  }\n  /**\n   * Waits for the zone to stabilize, then focuses\n   * the last tabbable element within the focus trap region.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfully.\n   */\n\n\n  focusLastTabbableElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n    });\n  }\n  /**\n   * Get the specified boundary element of the trapped region.\n   * @param bound The boundary to get (start or end of trapped region).\n   * @returns The boundary element.\n   */\n\n\n  _getRegionBoundary(bound) {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n\n    for (let i = 0; i < markers.length; i++) {\n      // @breaking-change 8.0.0\n      if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + `attribute will be removed in 8.0.0.`, markers[i]);\n      } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + `will be removed in 8.0.0.`, markers[i]);\n      }\n    }\n\n    if (bound == 'start') {\n      return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n    }\n\n    return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n  }\n  /**\n   * Focuses the element that should be focused when the focus trap is initialized.\n   * @returns Whether focus was moved successfully.\n   */\n\n\n  focusInitialElement(options) {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n\n    if (redirectToElement) {\n      // @breaking-change 8.0.0\n      if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + `will be removed in 8.0.0`, redirectToElement);\n      } // Warn the consumer if the element they've pointed to\n      // isn't focusable, when not in production mode.\n\n\n      if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._checker.isFocusable(redirectToElement)) {\n        console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n      }\n\n      if (!this._checker.isFocusable(redirectToElement)) {\n        const focusableChild = this._getFirstTabbableElement(redirectToElement);\n\n        focusableChild?.focus(options);\n        return !!focusableChild;\n      }\n\n      redirectToElement.focus(options);\n      return true;\n    }\n\n    return this.focusFirstTabbableElement(options);\n  }\n  /**\n   * Focuses the first tabbable element within the focus trap region.\n   * @returns Whether focus was moved successfully.\n   */\n\n\n  focusFirstTabbableElement(options) {\n    const redirectToElement = this._getRegionBoundary('start');\n\n    if (redirectToElement) {\n      redirectToElement.focus(options);\n    }\n\n    return !!redirectToElement;\n  }\n  /**\n   * Focuses the last tabbable element within the focus trap region.\n   * @returns Whether focus was moved successfully.\n   */\n\n\n  focusLastTabbableElement(options) {\n    const redirectToElement = this._getRegionBoundary('end');\n\n    if (redirectToElement) {\n      redirectToElement.focus(options);\n    }\n\n    return !!redirectToElement;\n  }\n  /**\n   * Checks whether the focus trap has successfully been attached.\n   */\n\n\n  hasAttached() {\n    return this._hasAttached;\n  }\n  /** Get the first tabbable element from a DOM subtree (inclusive). */\n\n\n  _getFirstTabbableElement(root) {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    }\n\n    const children = root.children;\n\n    for (let i = 0; i < children.length; i++) {\n      const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n  /** Get the last tabbable element from a DOM subtree (inclusive). */\n\n\n  _getLastTabbableElement(root) {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    } // Iterate in reverse DOM order.\n\n\n    const children = root.children;\n\n    for (let i = children.length - 1; i >= 0; i--) {\n      const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n  /** Creates an anchor element. */\n\n\n  _createAnchor() {\n    const anchor = this._document.createElement('div');\n\n    this._toggleAnchorTabIndex(this._enabled, anchor);\n\n    anchor.classList.add('cdk-visually-hidden');\n    anchor.classList.add('cdk-focus-trap-anchor');\n    anchor.setAttribute('aria-hidden', 'true');\n    return anchor;\n  }\n  /**\n   * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n   * @param isEnabled Whether the focus trap is enabled.\n   * @param anchor Anchor on which to toggle the tabindex.\n   */\n\n\n  _toggleAnchorTabIndex(isEnabled, anchor) {\n    // Remove the tabindex completely, rather than setting it to -1, because if the\n    // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n    isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n  }\n  /**\n   * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n   * @param enabled: Whether the anchors should trap Tab.\n   */\n\n\n  toggleAnchors(enabled) {\n    if (this._startAnchor && this._endAnchor) {\n      this._toggleAnchorTabIndex(enabled, this._startAnchor);\n\n      this._toggleAnchorTabIndex(enabled, this._endAnchor);\n    }\n  }\n  /** Executes a function when the zone is stable. */\n\n\n  _executeOnStable(fn) {\n    if (this._ngZone.isStable) {\n      fn();\n    } else {\n      this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n    }\n  }\n\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\n\n\nclass FocusTrapFactory {\n  constructor(_checker, _ngZone, _document) {\n    this._checker = _checker;\n    this._ngZone = _ngZone;\n    this._document = _document;\n  }\n  /**\n   * Creates a focus-trapped region around the given element.\n   * @param element The element around which focus will be trapped.\n   * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n   *     manually by the user.\n   * @returns The created focus trap instance.\n   */\n\n\n  create(element, deferCaptureElements = false) {\n    return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n  }\n\n}\n\nFocusTrapFactory.ɵfac = function FocusTrapFactory_Factory(t) {\n  return new (t || FocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n};\n\nFocusTrapFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusTrapFactory,\n  factory: FocusTrapFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: InteractivityChecker\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/** Directive for trapping focus within a region. */\n\n\nclass CdkTrapFocus {\n  constructor(_elementRef, _focusTrapFactory,\n  /**\n   * @deprecated No longer being used. To be removed.\n   * @breaking-change 13.0.0\n   */\n  _document) {\n    this._elementRef = _elementRef;\n    this._focusTrapFactory = _focusTrapFactory;\n    /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n\n    this._previouslyFocusedElement = null;\n    this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n  }\n  /** Whether the focus trap is active. */\n\n\n  get enabled() {\n    return this.focusTrap.enabled;\n  }\n\n  set enabled(value) {\n    this.focusTrap.enabled = coerceBooleanProperty(value);\n  }\n  /**\n   * Whether the directive should automatically move focus into the trapped region upon\n   * initialization and return focus to the previous activeElement upon destruction.\n   */\n\n\n  get autoCapture() {\n    return this._autoCapture;\n  }\n\n  set autoCapture(value) {\n    this._autoCapture = coerceBooleanProperty(value);\n  }\n\n  ngOnDestroy() {\n    this.focusTrap.destroy(); // If we stored a previously focused element when using autoCapture, return focus to that\n    // element now that the trapped region is being destroyed.\n\n    if (this._previouslyFocusedElement) {\n      this._previouslyFocusedElement.focus();\n\n      this._previouslyFocusedElement = null;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.focusTrap.attachAnchors();\n\n    if (this.autoCapture) {\n      this._captureFocus();\n    }\n  }\n\n  ngDoCheck() {\n    if (!this.focusTrap.hasAttached()) {\n      this.focusTrap.attachAnchors();\n    }\n  }\n\n  ngOnChanges(changes) {\n    const autoCaptureChange = changes['autoCapture'];\n\n    if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture && this.focusTrap.hasAttached()) {\n      this._captureFocus();\n    }\n  }\n\n  _captureFocus() {\n    this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n    this.focusTrap.focusInitialElementWhenReady();\n  }\n\n}\n\nCdkTrapFocus.ɵfac = function CdkTrapFocus_Factory(t) {\n  return new (t || CdkTrapFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusTrapFactory), i0.ɵɵdirectiveInject(DOCUMENT));\n};\n\nCdkTrapFocus.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkTrapFocus,\n  selectors: [[\"\", \"cdkTrapFocus\", \"\"]],\n  inputs: {\n    enabled: [\"cdkTrapFocus\", \"enabled\"],\n    autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"]\n  },\n  exportAs: [\"cdkTrapFocus\"],\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTrapFocus, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkTrapFocus]',\n      exportAs: 'cdkTrapFocus'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: FocusTrapFactory\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    enabled: [{\n      type: Input,\n      args: ['cdkTrapFocus']\n    }],\n    autoCapture: [{\n      type: Input,\n      args: ['cdkTrapFocusAutoCapture']\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\n\n\nclass ConfigurableFocusTrap extends FocusTrap {\n  constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n    super(_element, _checker, _ngZone, _document, config.defer);\n    this._focusTrapManager = _focusTrapManager;\n    this._inertStrategy = _inertStrategy;\n\n    this._focusTrapManager.register(this);\n  }\n  /** Whether the FocusTrap is enabled. */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    this._enabled = value;\n\n    if (this._enabled) {\n      this._focusTrapManager.register(this);\n    } else {\n      this._focusTrapManager.deregister(this);\n    }\n  }\n  /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n\n\n  destroy() {\n    this._focusTrapManager.deregister(this);\n\n    super.destroy();\n  }\n  /** @docs-private Implemented as part of ManagedFocusTrap. */\n\n\n  _enable() {\n    this._inertStrategy.preventFocus(this);\n\n    this.toggleAnchors(true);\n  }\n  /** @docs-private Implemented as part of ManagedFocusTrap. */\n\n\n  _disable() {\n    this._inertStrategy.allowFocus(this);\n\n    this.toggleAnchors(false);\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** The injection token used to specify the inert strategy. */\n\n\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\n\nclass EventListenerFocusTrapInertStrategy {\n  constructor() {\n    /** Focus event handler. */\n    this._listener = null;\n  }\n  /** Adds a document event listener that keeps focus inside the FocusTrap. */\n\n\n  preventFocus(focusTrap) {\n    // Ensure there's only one listener per document\n    if (this._listener) {\n      focusTrap._document.removeEventListener('focus', this._listener, true);\n    }\n\n    this._listener = e => this._trapFocus(focusTrap, e);\n\n    focusTrap._ngZone.runOutsideAngular(() => {\n      focusTrap._document.addEventListener('focus', this._listener, true);\n    });\n  }\n  /** Removes the event listener added in preventFocus. */\n\n\n  allowFocus(focusTrap) {\n    if (!this._listener) {\n      return;\n    }\n\n    focusTrap._document.removeEventListener('focus', this._listener, true);\n\n    this._listener = null;\n  }\n  /**\n   * Refocuses the first element in the FocusTrap if the focus event target was outside\n   * the FocusTrap.\n   *\n   * This is an event listener callback. The event listener is added in runOutsideAngular,\n   * so all this code runs outside Angular as well.\n   */\n\n\n  _trapFocus(focusTrap, event) {\n    const target = event.target;\n    const focusTrapRoot = focusTrap._element; // Don't refocus if target was in an overlay, because the overlay might be associated\n    // with an element inside the FocusTrap, ex. mat-select.\n\n    if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n      // Some legacy FocusTrap usages have logic that focuses some element on the page\n      // just before FocusTrap is destroyed. For backwards compatibility, wait\n      // to be sure FocusTrap is still enabled before refocusing.\n      setTimeout(() => {\n        // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n        if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n          focusTrap.focusFirstTabbableElement();\n        }\n      });\n    }\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\n\n\nclass FocusTrapManager {\n  constructor() {\n    // A stack of the FocusTraps on the page. Only the FocusTrap at the\n    // top of the stack is active.\n    this._focusTrapStack = [];\n  }\n  /**\n   * Disables the FocusTrap at the top of the stack, and then pushes\n   * the new FocusTrap onto the stack.\n   */\n\n\n  register(focusTrap) {\n    // Dedupe focusTraps that register multiple times.\n    this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n    let stack = this._focusTrapStack;\n\n    if (stack.length) {\n      stack[stack.length - 1]._disable();\n    }\n\n    stack.push(focusTrap);\n\n    focusTrap._enable();\n  }\n  /**\n   * Removes the FocusTrap from the stack, and activates the\n   * FocusTrap that is the new top of the stack.\n   */\n\n\n  deregister(focusTrap) {\n    focusTrap._disable();\n\n    const stack = this._focusTrapStack;\n    const i = stack.indexOf(focusTrap);\n\n    if (i !== -1) {\n      stack.splice(i, 1);\n\n      if (stack.length) {\n        stack[stack.length - 1]._enable();\n      }\n    }\n  }\n\n}\n\nFocusTrapManager.ɵfac = function FocusTrapManager_Factory(t) {\n  return new (t || FocusTrapManager)();\n};\n\nFocusTrapManager.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusTrapManager,\n  factory: FocusTrapManager.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapManager, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Factory that allows easy instantiation of configurable focus traps. */\n\n\nclass ConfigurableFocusTrapFactory {\n  constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n    this._checker = _checker;\n    this._ngZone = _ngZone;\n    this._focusTrapManager = _focusTrapManager;\n    this._document = _document; // TODO split up the strategies into different modules, similar to DateAdapter.\n\n    this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n  }\n\n  create(element, config = {\n    defer: false\n  }) {\n    let configObject;\n\n    if (typeof config === 'boolean') {\n      configObject = {\n        defer: config\n      };\n    } else {\n      configObject = config;\n    }\n\n    return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n  }\n\n}\n\nConfigurableFocusTrapFactory.ɵfac = function ConfigurableFocusTrapFactory_Factory(t) {\n  return new (t || ConfigurableFocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(FocusTrapManager), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(FOCUS_TRAP_INERT_STRATEGY, 8));\n};\n\nConfigurableFocusTrapFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ConfigurableFocusTrapFactory,\n  factory: ConfigurableFocusTrapFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfigurableFocusTrapFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: InteractivityChecker\n    }, {\n      type: i0.NgZone\n    }, {\n      type: FocusTrapManager\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [FOCUS_TRAP_INERT_STRATEGY]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\n\n\nfunction isFakeMousedownFromScreenReader(event) {\n  // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n  // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n  // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n  // themselves, but that is unlikely to contain interaction elements. Historically we used to\n  // check `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n  return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\n\n\nfunction isFakeTouchstartFromScreenReader(event) {\n  const touch = event.touches && event.touches[0] || event.changedTouches && event.changedTouches[0]; // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n  // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n  // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n  // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n\n  return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) && (touch.radiusY == null || touch.radiusY === 1);\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\n\n\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n *    in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n *    these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\n\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n  ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT]\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\n\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\n\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n  capture: true\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\n\nclass InputModalityDetector {\n  constructor(_platform, ngZone, document, options) {\n    this._platform = _platform;\n    /**\n     * The most recently detected input modality event target. Is null if no input modality has been\n     * detected or if the associated event target is null for some unknown reason.\n     */\n\n    this._mostRecentTarget = null;\n    /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n\n    this._modality = new BehaviorSubject(null);\n    /**\n     * The timestamp of the last touch input modality. Used to determine whether mousedown events\n     * should be attributed to mouse or touch.\n     */\n\n    this._lastTouchMs = 0;\n    /**\n     * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n     * bound.\n     */\n\n    this._onKeydown = event => {\n      // If this is one of the keys we should ignore, then ignore it and don't update the input\n      // modality to keyboard.\n      if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n        return;\n      }\n\n      this._modality.next('keyboard');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n    /**\n     * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n     * gets bound.\n     */\n\n\n    this._onMousedown = event => {\n      // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n      // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n      // after the previous touch event.\n      if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n        return;\n      } // Fake mousedown events are fired by some screen readers when controls are activated by the\n      // screen reader. Attribute them to keyboard input modality.\n\n\n      this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n    /**\n     * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n     * gets bound.\n     */\n\n\n    this._onTouchstart = event => {\n      // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n      // events are fired. Again, attribute to keyboard input modality.\n      if (isFakeTouchstartFromScreenReader(event)) {\n        this._modality.next('keyboard');\n\n        return;\n      } // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n      // triggered via mouse vs touch.\n\n\n      this._lastTouchMs = Date.now();\n\n      this._modality.next('touch');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n\n    this._options = { ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n      ...options\n    }; // Skip the first emission as it's null.\n\n    this.modalityDetected = this._modality.pipe(skip(1));\n    this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged()); // If we're not in a browser, this service should do nothing, as there's no relevant input\n    // modality to detect.\n\n    if (_platform.isBrowser) {\n      ngZone.runOutsideAngular(() => {\n        document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n        document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n        document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n      });\n    }\n  }\n  /** The most recently detected input modality. */\n\n\n  get mostRecentModality() {\n    return this._modality.value;\n  }\n\n  ngOnDestroy() {\n    this._modality.complete();\n\n    if (this._platform.isBrowser) {\n      document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n      document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n      document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n    }\n  }\n\n}\n\nInputModalityDetector.ɵfac = function InputModalityDetector_Factory(t) {\n  return new (t || InputModalityDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(INPUT_MODALITY_DETECTOR_OPTIONS, 8));\n};\n\nInputModalityDetector.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: InputModalityDetector,\n  factory: InputModalityDetector.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InputModalityDetector, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: Document,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n  providedIn: 'root',\n  factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY\n});\n/** @docs-private */\n\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n  return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\n\n\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nclass LiveAnnouncer {\n  constructor(elementToken, _ngZone, _document, _defaultOptions) {\n    this._ngZone = _ngZone;\n    this._defaultOptions = _defaultOptions; // We inject the live element and document as `any` because the constructor signature cannot\n    // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n    // a class decorator causes TypeScript to preserve the constructor signature types.\n\n    this._document = _document;\n    this._liveElement = elementToken || this._createLiveElement();\n  }\n\n  announce(message, ...args) {\n    const defaultOptions = this._defaultOptions;\n    let politeness;\n    let duration;\n\n    if (args.length === 1 && typeof args[0] === 'number') {\n      duration = args[0];\n    } else {\n      [politeness, duration] = args;\n    }\n\n    this.clear();\n    clearTimeout(this._previousTimeout);\n\n    if (!politeness) {\n      politeness = defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n    }\n\n    if (duration == null && defaultOptions) {\n      duration = defaultOptions.duration;\n    } // TODO: ensure changing the politeness works on all environments we support.\n\n\n    this._liveElement.setAttribute('aria-live', politeness); // This 100ms timeout is necessary for some browser + screen-reader combinations:\n    // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n    // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n    //   second time without clearing and then using a non-zero delay.\n    // (using JAWS 17 at time of this writing).\n\n\n    return this._ngZone.runOutsideAngular(() => {\n      return new Promise(resolve => {\n        clearTimeout(this._previousTimeout);\n        this._previousTimeout = setTimeout(() => {\n          this._liveElement.textContent = message;\n          resolve();\n\n          if (typeof duration === 'number') {\n            this._previousTimeout = setTimeout(() => this.clear(), duration);\n          }\n        }, 100);\n      });\n    });\n  }\n  /**\n   * Clears the current text from the announcer element. Can be used to prevent\n   * screen readers from reading the text out again while the user is going\n   * through the page landmarks.\n   */\n\n\n  clear() {\n    if (this._liveElement) {\n      this._liveElement.textContent = '';\n    }\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this._previousTimeout);\n    this._liveElement?.remove();\n    this._liveElement = null;\n  }\n\n  _createLiveElement() {\n    const elementClass = 'cdk-live-announcer-element';\n\n    const previousElements = this._document.getElementsByClassName(elementClass);\n\n    const liveEl = this._document.createElement('div'); // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n\n\n    for (let i = 0; i < previousElements.length; i++) {\n      previousElements[i].remove();\n    }\n\n    liveEl.classList.add(elementClass);\n    liveEl.classList.add('cdk-visually-hidden');\n    liveEl.setAttribute('aria-atomic', 'true');\n    liveEl.setAttribute('aria-live', 'polite');\n\n    this._document.body.appendChild(liveEl);\n\n    return liveEl;\n  }\n\n}\n\nLiveAnnouncer.ɵfac = function LiveAnnouncer_Factory(t) {\n  return new (t || LiveAnnouncer)(i0.ɵɵinject(LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8));\n};\n\nLiveAnnouncer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: LiveAnnouncer,\n  factory: LiveAnnouncer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LiveAnnouncer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n      }]\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\n\n\nclass CdkAriaLive {\n  constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n    this._elementRef = _elementRef;\n    this._liveAnnouncer = _liveAnnouncer;\n    this._contentObserver = _contentObserver;\n    this._ngZone = _ngZone;\n    this._politeness = 'polite';\n  }\n  /** The aria-live politeness level to use when announcing messages. */\n\n\n  get politeness() {\n    return this._politeness;\n  }\n\n  set politeness(value) {\n    this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n\n    if (this._politeness === 'off') {\n      if (this._subscription) {\n        this._subscription.unsubscribe();\n\n        this._subscription = null;\n      }\n    } else if (!this._subscription) {\n      this._subscription = this._ngZone.runOutsideAngular(() => {\n        return this._contentObserver.observe(this._elementRef).subscribe(() => {\n          // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n          const elementText = this._elementRef.nativeElement.textContent; // The `MutationObserver` fires also for attribute\n          // changes which we don't want to announce.\n\n          if (elementText !== this._previousAnnouncedText) {\n            this._liveAnnouncer.announce(elementText, this._politeness);\n\n            this._previousAnnouncedText = elementText;\n          }\n        });\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._subscription) {\n      this._subscription.unsubscribe();\n    }\n  }\n\n}\n\nCdkAriaLive.ɵfac = function CdkAriaLive_Factory(t) {\n  return new (t || CdkAriaLive)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(LiveAnnouncer), i0.ɵɵdirectiveInject(i1$1.ContentObserver), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkAriaLive.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkAriaLive,\n  selectors: [[\"\", \"cdkAriaLive\", \"\"]],\n  inputs: {\n    politeness: [\"cdkAriaLive\", \"politeness\"]\n  },\n  exportAs: [\"cdkAriaLive\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAriaLive, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkAriaLive]',\n      exportAs: 'cdkAriaLive'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: LiveAnnouncer\n    }, {\n      type: i1$1.ContentObserver\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    politeness: [{\n      type: Input,\n      args: ['cdkAriaLive']\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** InjectionToken for FocusMonitorOptions. */\n\n\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\n\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n  capture: true\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\n\nclass FocusMonitor {\n  constructor(_ngZone, _platform, _inputModalityDetector,\n  /** @breaking-change 11.0.0 make document required */\n  document, options) {\n    this._ngZone = _ngZone;\n    this._platform = _platform;\n    this._inputModalityDetector = _inputModalityDetector;\n    /** The focus origin that the next focus event is a result of. */\n\n    this._origin = null;\n    /** Whether the window has just been focused. */\n\n    this._windowFocused = false;\n    /**\n     * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n     * focus events to touch interactions requires special logic.\n     */\n\n    this._originFromTouchInteraction = false;\n    /** Map of elements being monitored to their info. */\n\n    this._elementInfo = new Map();\n    /** The number of elements currently being monitored. */\n\n    this._monitoredElementCount = 0;\n    /**\n     * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n     * as well as the number of monitored elements that they contain. We have to treat focus/blur\n     * handlers differently from the rest of the events, because the browser won't emit events\n     * to the document when focus moves inside of a shadow root.\n     */\n\n    this._rootNodeFocusListenerCount = new Map();\n    /**\n     * Event listener for `focus` events on the window.\n     * Needs to be an arrow function in order to preserve the context when it gets bound.\n     */\n\n    this._windowFocusListener = () => {\n      // Make a note of when the window regains focus, so we can\n      // restore the origin info for the focused element.\n      this._windowFocused = true;\n      this._windowFocusTimeoutId = setTimeout(() => this._windowFocused = false);\n    };\n    /** Subject for stopping our InputModalityDetector subscription. */\n\n\n    this._stopInputModalityDetector = new Subject();\n    /**\n     * Event listener for `focus` and 'blur' events on the document.\n     * Needs to be an arrow function in order to preserve the context when it gets bound.\n     */\n\n    this._rootNodeFocusAndBlurListener = event => {\n      const target = _getEventTarget(event);\n\n      const handler = event.type === 'focus' ? this._onFocus : this._onBlur; // We need to walk up the ancestor chain in order to support `checkChildren`.\n\n      for (let element = target; element; element = element.parentElement) {\n        handler.call(this, event, element);\n      }\n    };\n\n    this._document = document;\n    this._detectionMode = options?.detectionMode || 0\n    /* IMMEDIATE */\n    ;\n  }\n\n  monitor(element, checkChildren = false) {\n    const nativeElement = coerceElement(element); // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n\n    if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n      return of(null);\n    } // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n    // the shadow root, rather than the `document`, because the browser won't emit focus events\n    // to the `document`, if focus is moving within the same shadow root.\n\n\n    const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n\n    const cachedInfo = this._elementInfo.get(nativeElement); // Check if we're already monitoring this element.\n\n\n    if (cachedInfo) {\n      if (checkChildren) {\n        // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n        // observers into ones that behave as if `checkChildren` was turned on. We need a more\n        // robust solution.\n        cachedInfo.checkChildren = true;\n      }\n\n      return cachedInfo.subject;\n    } // Create monitored element info.\n\n\n    const info = {\n      checkChildren: checkChildren,\n      subject: new Subject(),\n      rootNode\n    };\n\n    this._elementInfo.set(nativeElement, info);\n\n    this._registerGlobalListeners(info);\n\n    return info.subject;\n  }\n\n  stopMonitoring(element) {\n    const nativeElement = coerceElement(element);\n\n    const elementInfo = this._elementInfo.get(nativeElement);\n\n    if (elementInfo) {\n      elementInfo.subject.complete();\n\n      this._setClasses(nativeElement);\n\n      this._elementInfo.delete(nativeElement);\n\n      this._removeGlobalListeners(elementInfo);\n    }\n  }\n\n  focusVia(element, origin, options) {\n    const nativeElement = coerceElement(element);\n\n    const focusedElement = this._getDocument().activeElement; // If the element is focused already, calling `focus` again won't trigger the event listener\n    // which means that the focus classes won't be updated. If that's the case, update the classes\n    // directly without waiting for an event.\n\n\n    if (nativeElement === focusedElement) {\n      this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n    } else {\n      this._setOrigin(origin); // `focus` isn't available on the server\n\n\n      if (typeof nativeElement.focus === 'function') {\n        nativeElement.focus(options);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n  }\n  /** Access injected document if available or fallback to global document reference */\n\n\n  _getDocument() {\n    return this._document || document;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    const doc = this._getDocument();\n\n    return doc.defaultView || window;\n  }\n\n  _getFocusOrigin(focusEventTarget) {\n    if (this._origin) {\n      // If the origin was realized via a touch interaction, we need to perform additional checks\n      // to determine whether the focus origin should be attributed to touch or program.\n      if (this._originFromTouchInteraction) {\n        return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n      } else {\n        return this._origin;\n      }\n    } // If the window has just regained focus, we can restore the most recent origin from before the\n    // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n    // focus. This typically means one of two things happened:\n    //\n    // 1) The element was programmatically focused, or\n    // 2) The element was focused via screen reader navigation (which generally doesn't fire\n    //    events).\n    //\n    // Because we can't distinguish between these two cases, we default to setting `program`.\n\n\n    return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n  }\n  /**\n   * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n   * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n   * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n   * event was directly caused by the touch interaction or (2) the focus event was caused by a\n   * subsequent programmatic focus call triggered by the touch interaction.\n   * @param focusEventTarget The target of the focus event under examination.\n   */\n\n\n  _shouldBeAttributedToTouch(focusEventTarget) {\n    // Please note that this check is not perfect. Consider the following edge case:\n    //\n    // <div #parent tabindex=\"0\">\n    //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n    // </div>\n    //\n    // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n    // #child, #parent is programmatically focused. This code will attribute the focus to touch\n    // instead of program. This is a relatively minor edge-case that can be worked around by using\n    // focusVia(parent, 'program') to focus #parent.\n    return this._detectionMode === 1\n    /* EVENTUAL */\n    || !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget);\n  }\n  /**\n   * Sets the focus classes on the element based on the given focus origin.\n   * @param element The element to update the classes on.\n   * @param origin The focus origin.\n   */\n\n\n  _setClasses(element, origin) {\n    element.classList.toggle('cdk-focused', !!origin);\n    element.classList.toggle('cdk-touch-focused', origin === 'touch');\n    element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n    element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n    element.classList.toggle('cdk-program-focused', origin === 'program');\n  }\n  /**\n   * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n   * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n   * the origin being set.\n   * @param origin The origin to set.\n   * @param isFromInteraction Whether we are setting the origin from an interaction event.\n   */\n\n\n  _setOrigin(origin, isFromInteraction = false) {\n    this._ngZone.runOutsideAngular(() => {\n      this._origin = origin;\n      this._originFromTouchInteraction = origin === 'touch' && isFromInteraction; // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n      // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n      // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n      // a touch event because when a touch event is fired, the associated focus event isn't yet in\n      // the event queue. Before doing so, clear any pending timeouts.\n\n      if (this._detectionMode === 0\n      /* IMMEDIATE */\n      ) {\n        clearTimeout(this._originTimeoutId);\n        const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n        this._originTimeoutId = setTimeout(() => this._origin = null, ms);\n      }\n    });\n  }\n  /**\n   * Handles focus events on a registered element.\n   * @param event The focus event.\n   * @param element The monitored element.\n   */\n\n\n  _onFocus(event, element) {\n    // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n    // focus event affecting the monitored element. If we want to use the origin of the first event\n    // instead we should check for the cdk-focused class here and return if the element already has\n    // it. (This only matters for elements that have includesChildren = true).\n    // If we are not counting child-element-focus as focused, make sure that the event target is the\n    // monitored element itself.\n    const elementInfo = this._elementInfo.get(element);\n\n    const focusEventTarget = _getEventTarget(event);\n\n    if (!elementInfo || !elementInfo.checkChildren && element !== focusEventTarget) {\n      return;\n    }\n\n    this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n  }\n  /**\n   * Handles blur events on a registered element.\n   * @param event The blur event.\n   * @param element The monitored element.\n   */\n\n\n  _onBlur(event, element) {\n    // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n    // order to focus another child of the monitored element.\n    const elementInfo = this._elementInfo.get(element);\n\n    if (!elementInfo || elementInfo.checkChildren && event.relatedTarget instanceof Node && element.contains(event.relatedTarget)) {\n      return;\n    }\n\n    this._setClasses(element);\n\n    this._emitOrigin(elementInfo.subject, null);\n  }\n\n  _emitOrigin(subject, origin) {\n    this._ngZone.run(() => subject.next(origin));\n  }\n\n  _registerGlobalListeners(elementInfo) {\n    if (!this._platform.isBrowser) {\n      return;\n    }\n\n    const rootNode = elementInfo.rootNode;\n    const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n\n    if (!rootNodeFocusListeners) {\n      this._ngZone.runOutsideAngular(() => {\n        rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n        rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n      });\n    }\n\n    this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1); // Register global listeners when first element is monitored.\n\n\n    if (++this._monitoredElementCount === 1) {\n      // Note: we listen to events in the capture phase so we\n      // can detect them even if the user stops propagation.\n      this._ngZone.runOutsideAngular(() => {\n        const window = this._getWindow();\n\n        window.addEventListener('focus', this._windowFocusListener);\n      }); // The InputModalityDetector is also just a collection of global listeners.\n\n\n      this._inputModalityDetector.modalityDetected.pipe(takeUntil(this._stopInputModalityDetector)).subscribe(modality => {\n        this._setOrigin(modality, true\n        /* isFromInteraction */\n        );\n      });\n    }\n  }\n\n  _removeGlobalListeners(elementInfo) {\n    const rootNode = elementInfo.rootNode;\n\n    if (this._rootNodeFocusListenerCount.has(rootNode)) {\n      const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n\n      if (rootNodeFocusListeners > 1) {\n        this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n      } else {\n        rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n        rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n\n        this._rootNodeFocusListenerCount.delete(rootNode);\n      }\n    } // Unregister global listeners when last element is unmonitored.\n\n\n    if (! --this._monitoredElementCount) {\n      const window = this._getWindow();\n\n      window.removeEventListener('focus', this._windowFocusListener); // Equivalently, stop our InputModalityDetector subscription.\n\n      this._stopInputModalityDetector.next(); // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n\n\n      clearTimeout(this._windowFocusTimeoutId);\n      clearTimeout(this._originTimeoutId);\n    }\n  }\n  /** Updates all the state on an element once its focus origin has changed. */\n\n\n  _originChanged(element, origin, elementInfo) {\n    this._setClasses(element, origin);\n\n    this._emitOrigin(elementInfo.subject, origin);\n\n    this._lastFocusOrigin = origin;\n  }\n  /**\n   * Collects the `MonitoredElementInfo` of a particular element and\n   * all of its ancestors that have enabled `checkChildren`.\n   * @param element Element from which to start the search.\n   */\n\n\n  _getClosestElementsInfo(element) {\n    const results = [];\n\n    this._elementInfo.forEach((info, currentElement) => {\n      if (currentElement === element || info.checkChildren && currentElement.contains(element)) {\n        results.push([currentElement, info]);\n      }\n    });\n\n    return results;\n  }\n\n}\n\nFocusMonitor.ɵfac = function FocusMonitor_Factory(t) {\n  return new (t || FocusMonitor)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(InputModalityDetector), i0.ɵɵinject(DOCUMENT, 8), i0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8));\n};\n\nFocusMonitor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusMonitor,\n  factory: FocusMonitor.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusMonitor, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }, {\n      type: i1.Platform\n    }, {\n      type: InputModalityDetector\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n *    focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\n\n\nclass CdkMonitorFocus {\n  constructor(_elementRef, _focusMonitor) {\n    this._elementRef = _elementRef;\n    this._focusMonitor = _focusMonitor;\n    this.cdkFocusChange = new EventEmitter();\n  }\n\n  ngAfterViewInit() {\n    const element = this._elementRef.nativeElement;\n    this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus')).subscribe(origin => this.cdkFocusChange.emit(origin));\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n\n    if (this._monitorSubscription) {\n      this._monitorSubscription.unsubscribe();\n    }\n  }\n\n}\n\nCdkMonitorFocus.ɵfac = function CdkMonitorFocus_Factory(t) {\n  return new (t || CdkMonitorFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusMonitor));\n};\n\nCdkMonitorFocus.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkMonitorFocus,\n  selectors: [[\"\", \"cdkMonitorElementFocus\", \"\"], [\"\", \"cdkMonitorSubtreeFocus\", \"\"]],\n  outputs: {\n    cdkFocusChange: \"cdkFocusChange\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkMonitorFocus, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: FocusMonitor\n    }];\n  }, {\n    cdkFocusChange: [{\n      type: Output\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\n\n\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\n\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\n\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\n\nclass HighContrastModeDetector {\n  constructor(_platform, document) {\n    this._platform = _platform;\n    this._document = document;\n  }\n  /** Gets the current high-contrast-mode for the page. */\n\n\n  getHighContrastMode() {\n    if (!this._platform.isBrowser) {\n      return 0\n      /* NONE */\n      ;\n    } // Create a test element with an arbitrary background-color that is neither black nor\n    // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n    // appending the test element to the DOM does not affect layout by absolutely positioning it\n\n\n    const testElement = this._document.createElement('div');\n\n    testElement.style.backgroundColor = 'rgb(1,2,3)';\n    testElement.style.position = 'absolute';\n\n    this._document.body.appendChild(testElement); // Get the computed style for the background color, collapsing spaces to normalize between\n    // browsers. Once we get this color, we no longer need the test element. Access the `window`\n    // via the document so we can fake it in tests. Note that we have extra null checks, because\n    // this logic will likely run during app bootstrap and throwing can break the entire app.\n\n\n    const documentWindow = this._document.defaultView || window;\n    const computedStyle = documentWindow && documentWindow.getComputedStyle ? documentWindow.getComputedStyle(testElement) : null;\n    const computedColor = (computedStyle && computedStyle.backgroundColor || '').replace(/ /g, '');\n    testElement.remove();\n\n    switch (computedColor) {\n      case 'rgb(0,0,0)':\n        return 2\n        /* WHITE_ON_BLACK */\n        ;\n\n      case 'rgb(255,255,255)':\n        return 1\n        /* BLACK_ON_WHITE */\n        ;\n    }\n\n    return 0\n    /* NONE */\n    ;\n  }\n  /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n\n\n  _applyBodyHighContrastModeCssClasses() {\n    if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n      const bodyClasses = this._document.body.classList; // IE11 doesn't support `classList` operations with multiple arguments\n\n      bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n      bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n      bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n      this._hasCheckedHighContrastMode = true;\n      const mode = this.getHighContrastMode();\n\n      if (mode === 1\n      /* BLACK_ON_WHITE */\n      ) {\n        bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n        bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n      } else if (mode === 2\n      /* WHITE_ON_BLACK */\n      ) {\n        bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n        bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n      }\n    }\n  }\n\n}\n\nHighContrastModeDetector.ɵfac = function HighContrastModeDetector_Factory(t) {\n  return new (t || HighContrastModeDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT));\n};\n\nHighContrastModeDetector.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: HighContrastModeDetector,\n  factory: HighContrastModeDetector.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HighContrastModeDetector, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass A11yModule {\n  constructor(highContrastModeDetector) {\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n  }\n\n}\n\nA11yModule.ɵfac = function A11yModule_Factory(t) {\n  return new (t || A11yModule)(i0.ɵɵinject(HighContrastModeDetector));\n};\n\nA11yModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: A11yModule\n});\nA11yModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[PlatformModule, ObserversModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(A11yModule, [{\n    type: NgModule,\n    args: [{\n      imports: [PlatformModule, ObserversModule],\n      declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n      exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]\n    }]\n  }], function () {\n    return [{\n      type: HighContrastModeDetector\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/a11y.mjs"],"names":["DOCUMENT","i0","Injectable","Inject","QueryList","Directive","Input","InjectionToken","Optional","EventEmitter","Output","NgModule","Subject","Subscription","BehaviorSubject","of","hasModifierKey","A","Z","ZERO","NINE","END","HOME","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","TAB","ALT","CONTROL","MAC_META","META","SHIFT","tap","debounceTime","filter","map","take","skip","distinctUntilChanged","takeUntil","coerceBooleanProperty","coerceElement","i1","_getFocusedElementPierceShadowDom","normalizePassiveListenerOptions","_getEventTarget","_getShadowRoot","PlatformModule","i1$1","ObserversModule","ID_DELIMITER","addAriaReferencedId","el","attr","id","ids","getAriaReferenceIds","some","existingId","trim","push","setAttribute","join","removeAriaReferencedId","filteredIds","val","length","removeAttribute","getAttribute","match","MESSAGES_CONTAINER_ID","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","messageRegistry","Map","messagesContainer","AriaDescriber","constructor","_document","describe","hostElement","message","role","_canBeDescribed","key","getKey","setMessageId","set","messageElement","referenceCount","has","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","get","_deleteMessageElement","childNodes","_deleteMessagesContainer","ngOnDestroy","describedElements","querySelectorAll","i","_removeCdkDescribedByReferenceIds","clear","createElement","textContent","_createMessagesContainer","appendChild","remove","delete","preExistingContainer","getElementById","style","visibility","classList","add","body","element","originalReferenceIds","indexOf","referenceIds","messageId","trimmedMessage","ariaLabel","nodeType","ELEMENT_NODE","ɵfac","ɵprov","type","args","providedIn","undefined","decorators","ListKeyManager","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","EMPTY","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","item","disabled","_pressedLetters","tabOut","change","changes","subscribe","newItems","itemArray","toArray","newIndex","skipPredicate","predicate","withWrap","shouldWrap","withVerticalOrientation","enabled","withHorizontalOrientation","direction","_horizontal","withAllowedModifierKeys","keys","withTypeAhead","debounceInterval","ngDevMode","getLabel","Error","unsubscribe","pipe","letter","inputString","items","_getItemsArray","index","toUpperCase","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","next","onKeydown","event","keyCode","modifiers","isModifierAllowed","every","modifier","setNextItemActive","setPreviousItemActive","setFirstItemActive","setLastItemActive","toLocaleUpperCase","String","fromCharCode","preventDefault","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","delta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","FocusKeyManager","arguments","_origin","setFocusOrigin","origin","focus","IsFocusableConfig","ignoreVisibility","InteractivityChecker","_platform","isDisabled","hasAttribute","isVisible","hasGeometry","getComputedStyle","isTabbable","isBrowser","frameElement","getFrameElement","getWindow","getTabIndexValue","nodeName","toLowerCase","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","tabIndex","isFocusable","config","isPotentiallyFocusable","Platform","window","offsetWidth","offsetHeight","getClientRects","isNativeFormElement","isHiddenInput","isInputElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","isNaN","parseInt","inputType","node","ownerDocument","defaultView","FocusTrap","_element","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","value","_startAnchor","_endAnchor","_toggleAnchorTabIndex","destroy","startAnchor","endAnchor","removeEventListener","runOutsideAngular","_createAnchor","addEventListener","parentNode","insertBefore","nextSibling","focusInitialElementWhenReady","options","Promise","resolve","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","console","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","hasAttached","root","children","tabbableChild","anchor","isEnabled","toggleAnchors","fn","isStable","onStable","FocusTrapFactory","create","deferCaptureElements","NgZone","CdkTrapFocus","_elementRef","_focusTrapFactory","_previouslyFocusedElement","focusTrap","nativeElement","autoCapture","_autoCapture","ngAfterContentInit","_captureFocus","ngDoCheck","ngOnChanges","autoCaptureChange","firstChange","ElementRef","ɵdir","selector","exportAs","ConfigurableFocusTrap","_focusTrapManager","_inertStrategy","defer","register","deregister","_enable","preventFocus","_disable","allowFocus","FOCUS_TRAP_INERT_STRATEGY","EventListenerFocusTrapInertStrategy","_listener","e","_trapFocus","target","focusTrapRoot","contains","closest","setTimeout","activeElement","FocusTrapManager","_focusTrapStack","ft","stack","splice","ConfigurableFocusTrapFactory","configObject","isFakeMousedownFromScreenReader","offsetX","offsetY","isFakeTouchstartFromScreenReader","touch","touches","changedTouches","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","TOUCH_BUFFER_MS","modalityEventListenerOptions","passive","capture","InputModalityDetector","ngZone","document","_mostRecentTarget","_modality","_lastTouchMs","_onKeydown","_options","_onMousedown","Date","now","_onTouchstart","modalityDetected","modalityChanged","mostRecentModality","complete","Document","LIVE_ANNOUNCER_ELEMENT_TOKEN","factory","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","defaultOptions","politeness","duration","clearTimeout","_previousTimeout","elementClass","previousElements","getElementsByClassName","liveEl","CdkAriaLive","_liveAnnouncer","_contentObserver","_politeness","_subscription","observe","elementText","_previousAnnouncedText","ContentObserver","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","handler","_onFocus","_onBlur","parentElement","call","_detectionMode","detectionMode","monitor","checkChildren","rootNode","_getDocument","cachedInfo","subject","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","focusedElement","_getClosestElementsInfo","forEach","currentElement","_originChanged","_setOrigin","_info","_getWindow","doc","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","toggle","isFromInteraction","_originTimeoutId","ms","relatedTarget","Node","_emitOrigin","run","rootNodeFocusListeners","modality","results","CdkMonitorFocus","_focusMonitor","cdkFocusChange","ngAfterViewInit","_monitorSubscription","emit","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","backgroundColor","position","documentWindow","computedStyle","computedColor","replace","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","mode","A11yModule","highContrastModeDetector","ɵmod","ɵinj","imports","declarations","exports"],"mappings":"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","sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n    const ids = getAriaReferenceIds(el, attr);\n    if (ids.some(existingId => existingId.trim() == id.trim())) {\n        return;\n    }\n    ids.push(id.trim());\n    el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n    const ids = getAriaReferenceIds(el, attr);\n    const filteredIds = ids.filter(val => val != id.trim());\n    if (filteredIds.length) {\n        el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n    }\n    else {\n        el.removeAttribute(attr);\n    }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n    // Get string array of all individual ids (whitespace delimited) in the attribute value\n    return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** ID used for the body container where all messages are appended. */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n    constructor(_document) {\n        this._document = _document;\n    }\n    describe(hostElement, message, role) {\n        if (!this._canBeDescribed(hostElement, message)) {\n            return;\n        }\n        const key = getKey(message, role);\n        if (typeof message !== 'string') {\n            // We need to ensure that the element has an ID.\n            setMessageId(message);\n            messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n        }\n        else if (!messageRegistry.has(key)) {\n            this._createMessageElement(message, role);\n        }\n        if (!this._isElementDescribedByMessage(hostElement, key)) {\n            this._addMessageReference(hostElement, key);\n        }\n    }\n    removeDescription(hostElement, message, role) {\n        if (!message || !this._isElementNode(hostElement)) {\n            return;\n        }\n        const key = getKey(message, role);\n        if (this._isElementDescribedByMessage(hostElement, key)) {\n            this._removeMessageReference(hostElement, key);\n        }\n        // If the message is a string, it means that it's one that we created for the\n        // consumer so we can remove it safely, otherwise we should leave it in place.\n        if (typeof message === 'string') {\n            const registeredMessage = messageRegistry.get(key);\n            if (registeredMessage && registeredMessage.referenceCount === 0) {\n                this._deleteMessageElement(key);\n            }\n        }\n        if (messagesContainer && messagesContainer.childNodes.length === 0) {\n            this._deleteMessagesContainer();\n        }\n    }\n    /** Unregisters all created message elements and removes the message container. */\n    ngOnDestroy() {\n        const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n        for (let i = 0; i < describedElements.length; i++) {\n            this._removeCdkDescribedByReferenceIds(describedElements[i]);\n            describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n        }\n        if (messagesContainer) {\n            this._deleteMessagesContainer();\n        }\n        messageRegistry.clear();\n    }\n    /**\n     * Creates a new element in the visually hidden message container element with the message\n     * as its content and adds it to the message registry.\n     */\n    _createMessageElement(message, role) {\n        const messageElement = this._document.createElement('div');\n        setMessageId(messageElement);\n        messageElement.textContent = message;\n        if (role) {\n            messageElement.setAttribute('role', role);\n        }\n        this._createMessagesContainer();\n        messagesContainer.appendChild(messageElement);\n        messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n    }\n    /** Deletes the message element from the global messages container. */\n    _deleteMessageElement(key) {\n        const registeredMessage = messageRegistry.get(key);\n        registeredMessage?.messageElement?.remove();\n        messageRegistry.delete(key);\n    }\n    /** Creates the global container for all aria-describedby messages. */\n    _createMessagesContainer() {\n        if (!messagesContainer) {\n            const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID);\n            // When going from the server to the client, we may end up in a situation where there's\n            // already a container on the page, but we don't have a reference to it. Clear the\n            // old container so we don't get duplicates. Doing this, instead of emptying the previous\n            // container, should be slightly faster.\n            preExistingContainer?.remove();\n            messagesContainer = this._document.createElement('div');\n            messagesContainer.id = MESSAGES_CONTAINER_ID;\n            // We add `visibility: hidden` in order to prevent text in this container from\n            // being searchable by the browser's Ctrl + F functionality.\n            // Screen-readers will still read the description for elements with aria-describedby even\n            // when the description element is not visible.\n            messagesContainer.style.visibility = 'hidden';\n            // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n            // the description element doesn't impact page layout.\n            messagesContainer.classList.add('cdk-visually-hidden');\n            this._document.body.appendChild(messagesContainer);\n        }\n    }\n    /** Deletes the global messages container. */\n    _deleteMessagesContainer() {\n        if (messagesContainer) {\n            messagesContainer.remove();\n            messagesContainer = null;\n        }\n    }\n    /** Removes all cdk-describedby messages that are hosted through the element. */\n    _removeCdkDescribedByReferenceIds(element) {\n        // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n        const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n        element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n    }\n    /**\n     * Adds a message reference to the element using aria-describedby and increments the registered\n     * message's reference count.\n     */\n    _addMessageReference(element, key) {\n        const registeredMessage = messageRegistry.get(key);\n        // Add the aria-describedby reference and set the\n        // describedby_host attribute to mark the element.\n        addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n        element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n        registeredMessage.referenceCount++;\n    }\n    /**\n     * Removes a message reference from the element using aria-describedby\n     * and decrements the registered message's reference count.\n     */\n    _removeMessageReference(element, key) {\n        const registeredMessage = messageRegistry.get(key);\n        registeredMessage.referenceCount--;\n        removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n        element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n    }\n    /** Returns true if the element has been described by the provided message ID. */\n    _isElementDescribedByMessage(element, key) {\n        const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n        const registeredMessage = messageRegistry.get(key);\n        const messageId = registeredMessage && registeredMessage.messageElement.id;\n        return !!messageId && referenceIds.indexOf(messageId) != -1;\n    }\n    /** Determines whether a message can be described on a particular element. */\n    _canBeDescribed(element, message) {\n        if (!this._isElementNode(element)) {\n            return false;\n        }\n        if (message && typeof message === 'object') {\n            // We'd have to make some assumptions about the description element's text, if the consumer\n            // passed in an element. Assume that if an element is passed in, the consumer has verified\n            // that it can be used as a description.\n            return true;\n        }\n        const trimmedMessage = message == null ? '' : `${message}`.trim();\n        const ariaLabel = element.getAttribute('aria-label');\n        // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n        // element, because screen readers will end up reading out the same text twice in a row.\n        return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n    }\n    /** Checks whether a node is an Element node. */\n    _isElementNode(element) {\n        return element.nodeType === this._document.ELEMENT_NODE;\n    }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n    return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n    if (!element.id) {\n        element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n    constructor(_items) {\n        this._items = _items;\n        this._activeItemIndex = -1;\n        this._activeItem = null;\n        this._wrap = false;\n        this._letterKeyStream = new Subject();\n        this._typeaheadSubscription = Subscription.EMPTY;\n        this._vertical = true;\n        this._allowedModifierKeys = [];\n        this._homeAndEnd = false;\n        /**\n         * Predicate function that can be used to check whether an item should be skipped\n         * by the key manager. By default, disabled items are skipped.\n         */\n        this._skipPredicateFn = (item) => item.disabled;\n        // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n        this._pressedLetters = [];\n        /**\n         * Stream that emits any time the TAB key is pressed, so components can react\n         * when focus is shifted off of the list.\n         */\n        this.tabOut = new Subject();\n        /** Stream that emits whenever the active item of the list manager changes. */\n        this.change = new Subject();\n        // We allow for the items to be an array because, in some cases, the consumer may\n        // not have access to a QueryList of the items they want to manage (e.g. when the\n        // items aren't being collected via `ViewChildren` or `ContentChildren`).\n        if (_items instanceof QueryList) {\n            _items.changes.subscribe((newItems) => {\n                if (this._activeItem) {\n                    const itemArray = newItems.toArray();\n                    const newIndex = itemArray.indexOf(this._activeItem);\n                    if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n                        this._activeItemIndex = newIndex;\n                    }\n                }\n            });\n        }\n    }\n    /**\n     * Sets the predicate function that determines which items should be skipped by the\n     * list key manager.\n     * @param predicate Function that determines whether the given item should be skipped.\n     */\n    skipPredicate(predicate) {\n        this._skipPredicateFn = predicate;\n        return this;\n    }\n    /**\n     * Configures wrapping mode, which determines whether the active item will wrap to\n     * the other end of list when there are no more items in the given direction.\n     * @param shouldWrap Whether the list should wrap when reaching the end.\n     */\n    withWrap(shouldWrap = true) {\n        this._wrap = shouldWrap;\n        return this;\n    }\n    /**\n     * Configures whether the key manager should be able to move the selection vertically.\n     * @param enabled Whether vertical selection should be enabled.\n     */\n    withVerticalOrientation(enabled = true) {\n        this._vertical = enabled;\n        return this;\n    }\n    /**\n     * Configures the key manager to move the selection horizontally.\n     * Passing in `null` will disable horizontal movement.\n     * @param direction Direction in which the selection can be moved.\n     */\n    withHorizontalOrientation(direction) {\n        this._horizontal = direction;\n        return this;\n    }\n    /**\n     * Modifier keys which are allowed to be held down and whose default actions will be prevented\n     * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n     */\n    withAllowedModifierKeys(keys) {\n        this._allowedModifierKeys = keys;\n        return this;\n    }\n    /**\n     * Turns on typeahead mode which allows users to set the active item by typing.\n     * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n     */\n    withTypeAhead(debounceInterval = 200) {\n        if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n            this._items.length &&\n            this._items.some(item => typeof item.getLabel !== 'function')) {\n            throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n        }\n        this._typeaheadSubscription.unsubscribe();\n        // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n        // and convert those letters back into a string. Afterwards find the first item that starts\n        // with that string and select it.\n        this._typeaheadSubscription = this._letterKeyStream\n            .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n            .subscribe(inputString => {\n            const items = this._getItemsArray();\n            // Start at 1 because we want to start searching at the item immediately\n            // following the current active item.\n            for (let i = 1; i < items.length + 1; i++) {\n                const index = (this._activeItemIndex + i) % items.length;\n                const item = items[index];\n                if (!this._skipPredicateFn(item) &&\n                    item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n                    this.setActiveItem(index);\n                    break;\n                }\n            }\n            this._pressedLetters = [];\n        });\n        return this;\n    }\n    /**\n     * Configures the key manager to activate the first and last items\n     * respectively when the Home or End key is pressed.\n     * @param enabled Whether pressing the Home or End key activates the first/last item.\n     */\n    withHomeAndEnd(enabled = true) {\n        this._homeAndEnd = enabled;\n        return this;\n    }\n    setActiveItem(item) {\n        const previousActiveItem = this._activeItem;\n        this.updateActiveItem(item);\n        if (this._activeItem !== previousActiveItem) {\n            this.change.next(this._activeItemIndex);\n        }\n    }\n    /**\n     * Sets the active item depending on the key event passed in.\n     * @param event Keyboard event to be used for determining which element should be active.\n     */\n    onKeydown(event) {\n        const keyCode = event.keyCode;\n        const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n        const isModifierAllowed = modifiers.every(modifier => {\n            return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n        });\n        switch (keyCode) {\n            case TAB:\n                this.tabOut.next();\n                return;\n            case DOWN_ARROW:\n                if (this._vertical && isModifierAllowed) {\n                    this.setNextItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case UP_ARROW:\n                if (this._vertical && isModifierAllowed) {\n                    this.setPreviousItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case RIGHT_ARROW:\n                if (this._horizontal && isModifierAllowed) {\n                    this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case LEFT_ARROW:\n                if (this._horizontal && isModifierAllowed) {\n                    this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case HOME:\n                if (this._homeAndEnd && isModifierAllowed) {\n                    this.setFirstItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case END:\n                if (this._homeAndEnd && isModifierAllowed) {\n                    this.setLastItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            default:\n                if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n                    // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n                    // otherwise fall back to resolving alphanumeric characters via the keyCode.\n                    if (event.key && event.key.length === 1) {\n                        this._letterKeyStream.next(event.key.toLocaleUpperCase());\n                    }\n                    else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n                        this._letterKeyStream.next(String.fromCharCode(keyCode));\n                    }\n                }\n                // Note that we return here, in order to avoid preventing\n                // the default action of non-navigational keys.\n                return;\n        }\n        this._pressedLetters = [];\n        event.preventDefault();\n    }\n    /** Index of the currently active item. */\n    get activeItemIndex() {\n        return this._activeItemIndex;\n    }\n    /** The active item. */\n    get activeItem() {\n        return this._activeItem;\n    }\n    /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n    isTyping() {\n        return this._pressedLetters.length > 0;\n    }\n    /** Sets the active item to the first enabled item in the list. */\n    setFirstItemActive() {\n        this._setActiveItemByIndex(0, 1);\n    }\n    /** Sets the active item to the last enabled item in the list. */\n    setLastItemActive() {\n        this._setActiveItemByIndex(this._items.length - 1, -1);\n    }\n    /** Sets the active item to the next enabled item in the list. */\n    setNextItemActive() {\n        this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n    }\n    /** Sets the active item to a previous enabled item in the list. */\n    setPreviousItemActive() {\n        this._activeItemIndex < 0 && this._wrap\n            ? this.setLastItemActive()\n            : this._setActiveItemByDelta(-1);\n    }\n    updateActiveItem(item) {\n        const itemArray = this._getItemsArray();\n        const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n        const activeItem = itemArray[index];\n        // Explicitly check for `null` and `undefined` because other falsy values are valid.\n        this._activeItem = activeItem == null ? null : activeItem;\n        this._activeItemIndex = index;\n    }\n    /**\n     * This method sets the active item, given a list of items and the delta between the\n     * currently active item and the new active item. It will calculate differently\n     * depending on whether wrap mode is turned on.\n     */\n    _setActiveItemByDelta(delta) {\n        this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n    }\n    /**\n     * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n     * down the list until it finds an item that is not disabled, and it will wrap if it\n     * encounters either end of the list.\n     */\n    _setActiveInWrapMode(delta) {\n        const items = this._getItemsArray();\n        for (let i = 1; i <= items.length; i++) {\n            const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n            const item = items[index];\n            if (!this._skipPredicateFn(item)) {\n                this.setActiveItem(index);\n                return;\n            }\n        }\n    }\n    /**\n     * Sets the active item properly given the default mode. In other words, it will\n     * continue to move down the list until it finds an item that is not disabled. If\n     * it encounters either end of the list, it will stop and not wrap.\n     */\n    _setActiveInDefaultMode(delta) {\n        this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n    }\n    /**\n     * Sets the active item to the first enabled item starting at the index specified. If the\n     * item is disabled, it will move in the fallbackDelta direction until it either\n     * finds an enabled item or encounters the end of the list.\n     */\n    _setActiveItemByIndex(index, fallbackDelta) {\n        const items = this._getItemsArray();\n        if (!items[index]) {\n            return;\n        }\n        while (this._skipPredicateFn(items[index])) {\n            index += fallbackDelta;\n            if (!items[index]) {\n                return;\n            }\n        }\n        this.setActiveItem(index);\n    }\n    /** Returns the items as an array. */\n    _getItemsArray() {\n        return this._items instanceof QueryList ? this._items.toArray() : this._items;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n    setActiveItem(index) {\n        if (this.activeItem) {\n            this.activeItem.setInactiveStyles();\n        }\n        super.setActiveItem(index);\n        if (this.activeItem) {\n            this.activeItem.setActiveStyles();\n        }\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass FocusKeyManager extends ListKeyManager {\n    constructor() {\n        super(...arguments);\n        this._origin = 'program';\n    }\n    /**\n     * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n     * @param origin Focus origin to be used when focusing items.\n     */\n    setFocusOrigin(origin) {\n        this._origin = origin;\n        return this;\n    }\n    setActiveItem(item) {\n        super.setActiveItem(item);\n        if (this.activeItem) {\n            this.activeItem.focus(this._origin);\n        }\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n    constructor() {\n        /**\n         * Whether to count an element as focusable even if it is not currently visible.\n         */\n        this.ignoreVisibility = false;\n    }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n    constructor(_platform) {\n        this._platform = _platform;\n    }\n    /**\n     * Gets whether an element is disabled.\n     *\n     * @param element Element to be checked.\n     * @returns Whether the element is disabled.\n     */\n    isDisabled(element) {\n        // This does not capture some cases, such as a non-form control with a disabled attribute or\n        // a form control inside of a disabled form, but should capture the most common cases.\n        return element.hasAttribute('disabled');\n    }\n    /**\n     * Gets whether an element is visible for the purposes of interactivity.\n     *\n     * This will capture states like `display: none` and `visibility: hidden`, but not things like\n     * being clipped by an `overflow: hidden` parent or being outside the viewport.\n     *\n     * @returns Whether the element is visible.\n     */\n    isVisible(element) {\n        return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n    }\n    /**\n     * Gets whether an element can be reached via Tab key.\n     * Assumes that the element has already been checked with isFocusable.\n     *\n     * @param element Element to be checked.\n     * @returns Whether the element is tabbable.\n     */\n    isTabbable(element) {\n        // Nothing is tabbable on the server 😎\n        if (!this._platform.isBrowser) {\n            return false;\n        }\n        const frameElement = getFrameElement(getWindow(element));\n        if (frameElement) {\n            // Frame elements inherit their tabindex onto all child elements.\n            if (getTabIndexValue(frameElement) === -1) {\n                return false;\n            }\n            // Browsers disable tabbing to an element inside of an invisible frame.\n            if (!this.isVisible(frameElement)) {\n                return false;\n            }\n        }\n        let nodeName = element.nodeName.toLowerCase();\n        let tabIndexValue = getTabIndexValue(element);\n        if (element.hasAttribute('contenteditable')) {\n            return tabIndexValue !== -1;\n        }\n        if (nodeName === 'iframe' || nodeName === 'object') {\n            // The frame or object's content may be tabbable depending on the content, but it's\n            // not possibly to reliably detect the content of the frames. We always consider such\n            // elements as non-tabbable.\n            return false;\n        }\n        // In iOS, the browser only considers some specific elements as tabbable.\n        if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n            return false;\n        }\n        if (nodeName === 'audio') {\n            // Audio elements without controls enabled are never tabbable, regardless\n            // of the tabindex attribute explicitly being set.\n            if (!element.hasAttribute('controls')) {\n                return false;\n            }\n            // Audio elements with controls are by default tabbable unless the\n            // tabindex attribute is set to `-1` explicitly.\n            return tabIndexValue !== -1;\n        }\n        if (nodeName === 'video') {\n            // For all video elements, if the tabindex attribute is set to `-1`, the video\n            // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n            // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n            // tabindex attribute is the source of truth here.\n            if (tabIndexValue === -1) {\n                return false;\n            }\n            // If the tabindex is explicitly set, and not `-1` (as per check before), the\n            // video element is always tabbable (regardless of whether it has controls or not).\n            if (tabIndexValue !== null) {\n                return true;\n            }\n            // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n            // has controls enabled. Firefox is special as videos are always tabbable regardless\n            // of whether there are controls or not.\n            return this._platform.FIREFOX || element.hasAttribute('controls');\n        }\n        return element.tabIndex >= 0;\n    }\n    /**\n     * Gets whether an element can be focused by the user.\n     *\n     * @param element Element to be checked.\n     * @param config The config object with options to customize this method's behavior\n     * @returns Whether the element is focusable.\n     */\n    isFocusable(element, config) {\n        // Perform checks in order of left to most expensive.\n        // Again, naive approach that does not capture many edge cases and browser quirks.\n        return (isPotentiallyFocusable(element) &&\n            !this.isDisabled(element) &&\n            (config?.ignoreVisibility || this.isVisible(element)));\n    }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n    try {\n        return window.frameElement;\n    }\n    catch {\n        return null;\n    }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n    // Use logic from jQuery to check for an invisible element.\n    // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n    return !!(element.offsetWidth ||\n        element.offsetHeight ||\n        (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's  */\nfunction isNativeFormElement(element) {\n    let nodeName = element.nodeName.toLowerCase();\n    return (nodeName === 'input' ||\n        nodeName === 'select' ||\n        nodeName === 'button' ||\n        nodeName === 'textarea');\n}\n/** Gets whether an element is an `<input type=\"hidden\">`. */\nfunction isHiddenInput(element) {\n    return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n    return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n    return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n    return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n    if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n        return false;\n    }\n    let tabIndex = element.getAttribute('tabindex');\n    return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n    if (!hasValidTabIndex(element)) {\n        return null;\n    }\n    // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n    const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n    return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n    let nodeName = element.nodeName.toLowerCase();\n    let inputType = nodeName === 'input' && element.type;\n    return (inputType === 'text' ||\n        inputType === 'password' ||\n        nodeName === 'select' ||\n        nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n    // Inputs are potentially focusable *unless* they're type=\"hidden\".\n    if (isHiddenInput(element)) {\n        return false;\n    }\n    return (isNativeFormElement(element) ||\n        isAnchorWithHref(element) ||\n        element.hasAttribute('contenteditable') ||\n        hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n    // ownerDocument is null if `node` itself *is* a document.\n    return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n    constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n        this._element = _element;\n        this._checker = _checker;\n        this._ngZone = _ngZone;\n        this._document = _document;\n        this._hasAttached = false;\n        // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n        this.startAnchorListener = () => this.focusLastTabbableElement();\n        this.endAnchorListener = () => this.focusFirstTabbableElement();\n        this._enabled = true;\n        if (!deferAnchors) {\n            this.attachAnchors();\n        }\n    }\n    /** Whether the focus trap is active. */\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(value) {\n        this._enabled = value;\n        if (this._startAnchor && this._endAnchor) {\n            this._toggleAnchorTabIndex(value, this._startAnchor);\n            this._toggleAnchorTabIndex(value, this._endAnchor);\n        }\n    }\n    /** Destroys the focus trap by cleaning up the anchors. */\n    destroy() {\n        const startAnchor = this._startAnchor;\n        const endAnchor = this._endAnchor;\n        if (startAnchor) {\n            startAnchor.removeEventListener('focus', this.startAnchorListener);\n            startAnchor.remove();\n        }\n        if (endAnchor) {\n            endAnchor.removeEventListener('focus', this.endAnchorListener);\n            endAnchor.remove();\n        }\n        this._startAnchor = this._endAnchor = null;\n        this._hasAttached = false;\n    }\n    /**\n     * Inserts the anchors into the DOM. This is usually done automatically\n     * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n     * @returns Whether the focus trap managed to attach successfully. This may not be the case\n     * if the target element isn't currently in the DOM.\n     */\n    attachAnchors() {\n        // If we're not on the browser, there can be no focus to trap.\n        if (this._hasAttached) {\n            return true;\n        }\n        this._ngZone.runOutsideAngular(() => {\n            if (!this._startAnchor) {\n                this._startAnchor = this._createAnchor();\n                this._startAnchor.addEventListener('focus', this.startAnchorListener);\n            }\n            if (!this._endAnchor) {\n                this._endAnchor = this._createAnchor();\n                this._endAnchor.addEventListener('focus', this.endAnchorListener);\n            }\n        });\n        if (this._element.parentNode) {\n            this._element.parentNode.insertBefore(this._startAnchor, this._element);\n            this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n            this._hasAttached = true;\n        }\n        return this._hasAttached;\n    }\n    /**\n     * Waits for the zone to stabilize, then focuses the first tabbable element.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusInitialElementWhenReady(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n        });\n    }\n    /**\n     * Waits for the zone to stabilize, then focuses\n     * the first tabbable element within the focus trap region.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusFirstTabbableElementWhenReady(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n        });\n    }\n    /**\n     * Waits for the zone to stabilize, then focuses\n     * the last tabbable element within the focus trap region.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusLastTabbableElementWhenReady(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n        });\n    }\n    /**\n     * Get the specified boundary element of the trapped region.\n     * @param bound The boundary to get (start or end of trapped region).\n     * @returns The boundary element.\n     */\n    _getRegionBoundary(bound) {\n        // Contains the deprecated version of selector, for temporary backwards comparability.\n        let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n        for (let i = 0; i < markers.length; i++) {\n            // @breaking-change 8.0.0\n            if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n                console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n                    `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n                    `attribute will be removed in 8.0.0.`, markers[i]);\n            }\n            else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n                console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n                    `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n                    `will be removed in 8.0.0.`, markers[i]);\n            }\n        }\n        if (bound == 'start') {\n            return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n        }\n        return markers.length\n            ? markers[markers.length - 1]\n            : this._getLastTabbableElement(this._element);\n    }\n    /**\n     * Focuses the element that should be focused when the focus trap is initialized.\n     * @returns Whether focus was moved successfully.\n     */\n    focusInitialElement(options) {\n        // Contains the deprecated version of selector, for temporary backwards comparability.\n        const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n        if (redirectToElement) {\n            // @breaking-change 8.0.0\n            if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n                console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n                    `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n                    `will be removed in 8.0.0`, redirectToElement);\n            }\n            // Warn the consumer if the element they've pointed to\n            // isn't focusable, when not in production mode.\n            if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n                !this._checker.isFocusable(redirectToElement)) {\n                console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n            }\n            if (!this._checker.isFocusable(redirectToElement)) {\n                const focusableChild = this._getFirstTabbableElement(redirectToElement);\n                focusableChild?.focus(options);\n                return !!focusableChild;\n            }\n            redirectToElement.focus(options);\n            return true;\n        }\n        return this.focusFirstTabbableElement(options);\n    }\n    /**\n     * Focuses the first tabbable element within the focus trap region.\n     * @returns Whether focus was moved successfully.\n     */\n    focusFirstTabbableElement(options) {\n        const redirectToElement = this._getRegionBoundary('start');\n        if (redirectToElement) {\n            redirectToElement.focus(options);\n        }\n        return !!redirectToElement;\n    }\n    /**\n     * Focuses the last tabbable element within the focus trap region.\n     * @returns Whether focus was moved successfully.\n     */\n    focusLastTabbableElement(options) {\n        const redirectToElement = this._getRegionBoundary('end');\n        if (redirectToElement) {\n            redirectToElement.focus(options);\n        }\n        return !!redirectToElement;\n    }\n    /**\n     * Checks whether the focus trap has successfully been attached.\n     */\n    hasAttached() {\n        return this._hasAttached;\n    }\n    /** Get the first tabbable element from a DOM subtree (inclusive). */\n    _getFirstTabbableElement(root) {\n        if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n            return root;\n        }\n        const children = root.children;\n        for (let i = 0; i < children.length; i++) {\n            const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n                ? this._getFirstTabbableElement(children[i])\n                : null;\n            if (tabbableChild) {\n                return tabbableChild;\n            }\n        }\n        return null;\n    }\n    /** Get the last tabbable element from a DOM subtree (inclusive). */\n    _getLastTabbableElement(root) {\n        if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n            return root;\n        }\n        // Iterate in reverse DOM order.\n        const children = root.children;\n        for (let i = children.length - 1; i >= 0; i--) {\n            const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n                ? this._getLastTabbableElement(children[i])\n                : null;\n            if (tabbableChild) {\n                return tabbableChild;\n            }\n        }\n        return null;\n    }\n    /** Creates an anchor element. */\n    _createAnchor() {\n        const anchor = this._document.createElement('div');\n        this._toggleAnchorTabIndex(this._enabled, anchor);\n        anchor.classList.add('cdk-visually-hidden');\n        anchor.classList.add('cdk-focus-trap-anchor');\n        anchor.setAttribute('aria-hidden', 'true');\n        return anchor;\n    }\n    /**\n     * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n     * @param isEnabled Whether the focus trap is enabled.\n     * @param anchor Anchor on which to toggle the tabindex.\n     */\n    _toggleAnchorTabIndex(isEnabled, anchor) {\n        // Remove the tabindex completely, rather than setting it to -1, because if the\n        // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n        isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n    }\n    /**\n     * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n     * @param enabled: Whether the anchors should trap Tab.\n     */\n    toggleAnchors(enabled) {\n        if (this._startAnchor && this._endAnchor) {\n            this._toggleAnchorTabIndex(enabled, this._startAnchor);\n            this._toggleAnchorTabIndex(enabled, this._endAnchor);\n        }\n    }\n    /** Executes a function when the zone is stable. */\n    _executeOnStable(fn) {\n        if (this._ngZone.isStable) {\n            fn();\n        }\n        else {\n            this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n        }\n    }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n    constructor(_checker, _ngZone, _document) {\n        this._checker = _checker;\n        this._ngZone = _ngZone;\n        this._document = _document;\n    }\n    /**\n     * Creates a focus-trapped region around the given element.\n     * @param element The element around which focus will be trapped.\n     * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n     *     manually by the user.\n     * @returns The created focus trap instance.\n     */\n    create(element, deferCaptureElements = false) {\n        return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n    }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n    constructor(_elementRef, _focusTrapFactory, \n    /**\n     * @deprecated No longer being used. To be removed.\n     * @breaking-change 13.0.0\n     */\n    _document) {\n        this._elementRef = _elementRef;\n        this._focusTrapFactory = _focusTrapFactory;\n        /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n        this._previouslyFocusedElement = null;\n        this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n    }\n    /** Whether the focus trap is active. */\n    get enabled() {\n        return this.focusTrap.enabled;\n    }\n    set enabled(value) {\n        this.focusTrap.enabled = coerceBooleanProperty(value);\n    }\n    /**\n     * Whether the directive should automatically move focus into the trapped region upon\n     * initialization and return focus to the previous activeElement upon destruction.\n     */\n    get autoCapture() {\n        return this._autoCapture;\n    }\n    set autoCapture(value) {\n        this._autoCapture = coerceBooleanProperty(value);\n    }\n    ngOnDestroy() {\n        this.focusTrap.destroy();\n        // If we stored a previously focused element when using autoCapture, return focus to that\n        // element now that the trapped region is being destroyed.\n        if (this._previouslyFocusedElement) {\n            this._previouslyFocusedElement.focus();\n            this._previouslyFocusedElement = null;\n        }\n    }\n    ngAfterContentInit() {\n        this.focusTrap.attachAnchors();\n        if (this.autoCapture) {\n            this._captureFocus();\n        }\n    }\n    ngDoCheck() {\n        if (!this.focusTrap.hasAttached()) {\n            this.focusTrap.attachAnchors();\n        }\n    }\n    ngOnChanges(changes) {\n        const autoCaptureChange = changes['autoCapture'];\n        if (autoCaptureChange &&\n            !autoCaptureChange.firstChange &&\n            this.autoCapture &&\n            this.focusTrap.hasAttached()) {\n            this._captureFocus();\n        }\n    }\n    _captureFocus() {\n        this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n        this.focusTrap.focusInitialElementWhenReady();\n    }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkTrapFocus]',\n                    exportAs: 'cdkTrapFocus',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { enabled: [{\n                type: Input,\n                args: ['cdkTrapFocus']\n            }], autoCapture: [{\n                type: Input,\n                args: ['cdkTrapFocusAutoCapture']\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n    constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n        super(_element, _checker, _ngZone, _document, config.defer);\n        this._focusTrapManager = _focusTrapManager;\n        this._inertStrategy = _inertStrategy;\n        this._focusTrapManager.register(this);\n    }\n    /** Whether the FocusTrap is enabled. */\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(value) {\n        this._enabled = value;\n        if (this._enabled) {\n            this._focusTrapManager.register(this);\n        }\n        else {\n            this._focusTrapManager.deregister(this);\n        }\n    }\n    /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n    destroy() {\n        this._focusTrapManager.deregister(this);\n        super.destroy();\n    }\n    /** @docs-private Implemented as part of ManagedFocusTrap. */\n    _enable() {\n        this._inertStrategy.preventFocus(this);\n        this.toggleAnchors(true);\n    }\n    /** @docs-private Implemented as part of ManagedFocusTrap. */\n    _disable() {\n        this._inertStrategy.allowFocus(this);\n        this.toggleAnchors(false);\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n    constructor() {\n        /** Focus event handler. */\n        this._listener = null;\n    }\n    /** Adds a document event listener that keeps focus inside the FocusTrap. */\n    preventFocus(focusTrap) {\n        // Ensure there's only one listener per document\n        if (this._listener) {\n            focusTrap._document.removeEventListener('focus', this._listener, true);\n        }\n        this._listener = (e) => this._trapFocus(focusTrap, e);\n        focusTrap._ngZone.runOutsideAngular(() => {\n            focusTrap._document.addEventListener('focus', this._listener, true);\n        });\n    }\n    /** Removes the event listener added in preventFocus. */\n    allowFocus(focusTrap) {\n        if (!this._listener) {\n            return;\n        }\n        focusTrap._document.removeEventListener('focus', this._listener, true);\n        this._listener = null;\n    }\n    /**\n     * Refocuses the first element in the FocusTrap if the focus event target was outside\n     * the FocusTrap.\n     *\n     * This is an event listener callback. The event listener is added in runOutsideAngular,\n     * so all this code runs outside Angular as well.\n     */\n    _trapFocus(focusTrap, event) {\n        const target = event.target;\n        const focusTrapRoot = focusTrap._element;\n        // Don't refocus if target was in an overlay, because the overlay might be associated\n        // with an element inside the FocusTrap, ex. mat-select.\n        if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n            // Some legacy FocusTrap usages have logic that focuses some element on the page\n            // just before FocusTrap is destroyed. For backwards compatibility, wait\n            // to be sure FocusTrap is still enabled before refocusing.\n            setTimeout(() => {\n                // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n                if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n                    focusTrap.focusFirstTabbableElement();\n                }\n            });\n        }\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n    constructor() {\n        // A stack of the FocusTraps on the page. Only the FocusTrap at the\n        // top of the stack is active.\n        this._focusTrapStack = [];\n    }\n    /**\n     * Disables the FocusTrap at the top of the stack, and then pushes\n     * the new FocusTrap onto the stack.\n     */\n    register(focusTrap) {\n        // Dedupe focusTraps that register multiple times.\n        this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n        let stack = this._focusTrapStack;\n        if (stack.length) {\n            stack[stack.length - 1]._disable();\n        }\n        stack.push(focusTrap);\n        focusTrap._enable();\n    }\n    /**\n     * Removes the FocusTrap from the stack, and activates the\n     * FocusTrap that is the new top of the stack.\n     */\n    deregister(focusTrap) {\n        focusTrap._disable();\n        const stack = this._focusTrapStack;\n        const i = stack.indexOf(focusTrap);\n        if (i !== -1) {\n            stack.splice(i, 1);\n            if (stack.length) {\n                stack[stack.length - 1]._enable();\n            }\n        }\n    }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n    constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n        this._checker = _checker;\n        this._ngZone = _ngZone;\n        this._focusTrapManager = _focusTrapManager;\n        this._document = _document;\n        // TODO split up the strategies into different modules, similar to DateAdapter.\n        this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n    }\n    create(element, config = { defer: false }) {\n        let configObject;\n        if (typeof config === 'boolean') {\n            configObject = { defer: config };\n        }\n        else {\n            configObject = config;\n        }\n        return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n    }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [FOCUS_TRAP_INERT_STRATEGY]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n    // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n    // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n    // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n    // themselves, but that is unlikely to contain interaction elements. Historically we used to\n    // check `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n    return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n    const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n    // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n    // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n    // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n    // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n    return (!!touch &&\n        touch.identifier === -1 &&\n        (touch.radiusX == null || touch.radiusX === 1) &&\n        (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n *    in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n *    these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n    ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n    passive: true,\n    capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n    constructor(_platform, ngZone, document, options) {\n        this._platform = _platform;\n        /**\n         * The most recently detected input modality event target. Is null if no input modality has been\n         * detected or if the associated event target is null for some unknown reason.\n         */\n        this._mostRecentTarget = null;\n        /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n        this._modality = new BehaviorSubject(null);\n        /**\n         * The timestamp of the last touch input modality. Used to determine whether mousedown events\n         * should be attributed to mouse or touch.\n         */\n        this._lastTouchMs = 0;\n        /**\n         * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n         * bound.\n         */\n        this._onKeydown = (event) => {\n            // If this is one of the keys we should ignore, then ignore it and don't update the input\n            // modality to keyboard.\n            if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n                return;\n            }\n            this._modality.next('keyboard');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        /**\n         * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n         * gets bound.\n         */\n        this._onMousedown = (event) => {\n            // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n            // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n            // after the previous touch event.\n            if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n                return;\n            }\n            // Fake mousedown events are fired by some screen readers when controls are activated by the\n            // screen reader. Attribute them to keyboard input modality.\n            this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        /**\n         * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n         * gets bound.\n         */\n        this._onTouchstart = (event) => {\n            // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n            // events are fired. Again, attribute to keyboard input modality.\n            if (isFakeTouchstartFromScreenReader(event)) {\n                this._modality.next('keyboard');\n                return;\n            }\n            // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n            // triggered via mouse vs touch.\n            this._lastTouchMs = Date.now();\n            this._modality.next('touch');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        this._options = {\n            ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n            ...options,\n        };\n        // Skip the first emission as it's null.\n        this.modalityDetected = this._modality.pipe(skip(1));\n        this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n        // If we're not in a browser, this service should do nothing, as there's no relevant input\n        // modality to detect.\n        if (_platform.isBrowser) {\n            ngZone.runOutsideAngular(() => {\n                document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n                document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n                document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n            });\n        }\n    }\n    /** The most recently detected input modality. */\n    get mostRecentModality() {\n        return this._modality.value;\n    }\n    ngOnDestroy() {\n        this._modality.complete();\n        if (this._platform.isBrowser) {\n            document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n            document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n            document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n        }\n    }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n    providedIn: 'root',\n    factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n    return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LiveAnnouncer {\n    constructor(elementToken, _ngZone, _document, _defaultOptions) {\n        this._ngZone = _ngZone;\n        this._defaultOptions = _defaultOptions;\n        // We inject the live element and document as `any` because the constructor signature cannot\n        // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n        // a class decorator causes TypeScript to preserve the constructor signature types.\n        this._document = _document;\n        this._liveElement = elementToken || this._createLiveElement();\n    }\n    announce(message, ...args) {\n        const defaultOptions = this._defaultOptions;\n        let politeness;\n        let duration;\n        if (args.length === 1 && typeof args[0] === 'number') {\n            duration = args[0];\n        }\n        else {\n            [politeness, duration] = args;\n        }\n        this.clear();\n        clearTimeout(this._previousTimeout);\n        if (!politeness) {\n            politeness =\n                defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n        }\n        if (duration == null && defaultOptions) {\n            duration = defaultOptions.duration;\n        }\n        // TODO: ensure changing the politeness works on all environments we support.\n        this._liveElement.setAttribute('aria-live', politeness);\n        // This 100ms timeout is necessary for some browser + screen-reader combinations:\n        // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n        // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n        //   second time without clearing and then using a non-zero delay.\n        // (using JAWS 17 at time of this writing).\n        return this._ngZone.runOutsideAngular(() => {\n            return new Promise(resolve => {\n                clearTimeout(this._previousTimeout);\n                this._previousTimeout = setTimeout(() => {\n                    this._liveElement.textContent = message;\n                    resolve();\n                    if (typeof duration === 'number') {\n                        this._previousTimeout = setTimeout(() => this.clear(), duration);\n                    }\n                }, 100);\n            });\n        });\n    }\n    /**\n     * Clears the current text from the announcer element. Can be used to prevent\n     * screen readers from reading the text out again while the user is going\n     * through the page landmarks.\n     */\n    clear() {\n        if (this._liveElement) {\n            this._liveElement.textContent = '';\n        }\n    }\n    ngOnDestroy() {\n        clearTimeout(this._previousTimeout);\n        this._liveElement?.remove();\n        this._liveElement = null;\n    }\n    _createLiveElement() {\n        const elementClass = 'cdk-live-announcer-element';\n        const previousElements = this._document.getElementsByClassName(elementClass);\n        const liveEl = this._document.createElement('div');\n        // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n        for (let i = 0; i < previousElements.length; i++) {\n            previousElements[i].remove();\n        }\n        liveEl.classList.add(elementClass);\n        liveEl.classList.add('cdk-visually-hidden');\n        liveEl.setAttribute('aria-atomic', 'true');\n        liveEl.setAttribute('aria-live', 'polite');\n        this._document.body.appendChild(liveEl);\n        return liveEl;\n    }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n                }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n                }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n    constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n        this._elementRef = _elementRef;\n        this._liveAnnouncer = _liveAnnouncer;\n        this._contentObserver = _contentObserver;\n        this._ngZone = _ngZone;\n        this._politeness = 'polite';\n    }\n    /** The aria-live politeness level to use when announcing messages. */\n    get politeness() {\n        return this._politeness;\n    }\n    set politeness(value) {\n        this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n        if (this._politeness === 'off') {\n            if (this._subscription) {\n                this._subscription.unsubscribe();\n                this._subscription = null;\n            }\n        }\n        else if (!this._subscription) {\n            this._subscription = this._ngZone.runOutsideAngular(() => {\n                return this._contentObserver.observe(this._elementRef).subscribe(() => {\n                    // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n                    const elementText = this._elementRef.nativeElement.textContent;\n                    // The `MutationObserver` fires also for attribute\n                    // changes which we don't want to announce.\n                    if (elementText !== this._previousAnnouncedText) {\n                        this._liveAnnouncer.announce(elementText, this._politeness);\n                        this._previousAnnouncedText = elementText;\n                    }\n                });\n            });\n        }\n    }\n    ngOnDestroy() {\n        if (this._subscription) {\n            this._subscription.unsubscribe();\n        }\n    }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkAriaLive]',\n                    exportAs: 'cdkAriaLive',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n                type: Input,\n                args: ['cdkAriaLive']\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n    passive: true,\n    capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n    constructor(_ngZone, _platform, _inputModalityDetector, \n    /** @breaking-change 11.0.0 make document required */\n    document, options) {\n        this._ngZone = _ngZone;\n        this._platform = _platform;\n        this._inputModalityDetector = _inputModalityDetector;\n        /** The focus origin that the next focus event is a result of. */\n        this._origin = null;\n        /** Whether the window has just been focused. */\n        this._windowFocused = false;\n        /**\n         * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n         * focus events to touch interactions requires special logic.\n         */\n        this._originFromTouchInteraction = false;\n        /** Map of elements being monitored to their info. */\n        this._elementInfo = new Map();\n        /** The number of elements currently being monitored. */\n        this._monitoredElementCount = 0;\n        /**\n         * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n         * as well as the number of monitored elements that they contain. We have to treat focus/blur\n         * handlers differently from the rest of the events, because the browser won't emit events\n         * to the document when focus moves inside of a shadow root.\n         */\n        this._rootNodeFocusListenerCount = new Map();\n        /**\n         * Event listener for `focus` events on the window.\n         * Needs to be an arrow function in order to preserve the context when it gets bound.\n         */\n        this._windowFocusListener = () => {\n            // Make a note of when the window regains focus, so we can\n            // restore the origin info for the focused element.\n            this._windowFocused = true;\n            this._windowFocusTimeoutId = setTimeout(() => (this._windowFocused = false));\n        };\n        /** Subject for stopping our InputModalityDetector subscription. */\n        this._stopInputModalityDetector = new Subject();\n        /**\n         * Event listener for `focus` and 'blur' events on the document.\n         * Needs to be an arrow function in order to preserve the context when it gets bound.\n         */\n        this._rootNodeFocusAndBlurListener = (event) => {\n            const target = _getEventTarget(event);\n            const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n            // We need to walk up the ancestor chain in order to support `checkChildren`.\n            for (let element = target; element; element = element.parentElement) {\n                handler.call(this, event, element);\n            }\n        };\n        this._document = document;\n        this._detectionMode = options?.detectionMode || 0 /* IMMEDIATE */;\n    }\n    monitor(element, checkChildren = false) {\n        const nativeElement = coerceElement(element);\n        // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n        if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n            return of(null);\n        }\n        // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n        // the shadow root, rather than the `document`, because the browser won't emit focus events\n        // to the `document`, if focus is moving within the same shadow root.\n        const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n        const cachedInfo = this._elementInfo.get(nativeElement);\n        // Check if we're already monitoring this element.\n        if (cachedInfo) {\n            if (checkChildren) {\n                // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n                // observers into ones that behave as if `checkChildren` was turned on. We need a more\n                // robust solution.\n                cachedInfo.checkChildren = true;\n            }\n            return cachedInfo.subject;\n        }\n        // Create monitored element info.\n        const info = {\n            checkChildren: checkChildren,\n            subject: new Subject(),\n            rootNode,\n        };\n        this._elementInfo.set(nativeElement, info);\n        this._registerGlobalListeners(info);\n        return info.subject;\n    }\n    stopMonitoring(element) {\n        const nativeElement = coerceElement(element);\n        const elementInfo = this._elementInfo.get(nativeElement);\n        if (elementInfo) {\n            elementInfo.subject.complete();\n            this._setClasses(nativeElement);\n            this._elementInfo.delete(nativeElement);\n            this._removeGlobalListeners(elementInfo);\n        }\n    }\n    focusVia(element, origin, options) {\n        const nativeElement = coerceElement(element);\n        const focusedElement = this._getDocument().activeElement;\n        // If the element is focused already, calling `focus` again won't trigger the event listener\n        // which means that the focus classes won't be updated. If that's the case, update the classes\n        // directly without waiting for an event.\n        if (nativeElement === focusedElement) {\n            this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n        }\n        else {\n            this._setOrigin(origin);\n            // `focus` isn't available on the server\n            if (typeof nativeElement.focus === 'function') {\n                nativeElement.focus(options);\n            }\n        }\n    }\n    ngOnDestroy() {\n        this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n    }\n    /** Access injected document if available or fallback to global document reference */\n    _getDocument() {\n        return this._document || document;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        const doc = this._getDocument();\n        return doc.defaultView || window;\n    }\n    _getFocusOrigin(focusEventTarget) {\n        if (this._origin) {\n            // If the origin was realized via a touch interaction, we need to perform additional checks\n            // to determine whether the focus origin should be attributed to touch or program.\n            if (this._originFromTouchInteraction) {\n                return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n            }\n            else {\n                return this._origin;\n            }\n        }\n        // If the window has just regained focus, we can restore the most recent origin from before the\n        // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n        // focus. This typically means one of two things happened:\n        //\n        // 1) The element was programmatically focused, or\n        // 2) The element was focused via screen reader navigation (which generally doesn't fire\n        //    events).\n        //\n        // Because we can't distinguish between these two cases, we default to setting `program`.\n        return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n    }\n    /**\n     * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n     * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n     * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n     * event was directly caused by the touch interaction or (2) the focus event was caused by a\n     * subsequent programmatic focus call triggered by the touch interaction.\n     * @param focusEventTarget The target of the focus event under examination.\n     */\n    _shouldBeAttributedToTouch(focusEventTarget) {\n        // Please note that this check is not perfect. Consider the following edge case:\n        //\n        // <div #parent tabindex=\"0\">\n        //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n        // </div>\n        //\n        // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n        // #child, #parent is programmatically focused. This code will attribute the focus to touch\n        // instead of program. This is a relatively minor edge-case that can be worked around by using\n        // focusVia(parent, 'program') to focus #parent.\n        return (this._detectionMode === 1 /* EVENTUAL */ ||\n            !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n    }\n    /**\n     * Sets the focus classes on the element based on the given focus origin.\n     * @param element The element to update the classes on.\n     * @param origin The focus origin.\n     */\n    _setClasses(element, origin) {\n        element.classList.toggle('cdk-focused', !!origin);\n        element.classList.toggle('cdk-touch-focused', origin === 'touch');\n        element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n        element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n        element.classList.toggle('cdk-program-focused', origin === 'program');\n    }\n    /**\n     * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n     * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n     * the origin being set.\n     * @param origin The origin to set.\n     * @param isFromInteraction Whether we are setting the origin from an interaction event.\n     */\n    _setOrigin(origin, isFromInteraction = false) {\n        this._ngZone.runOutsideAngular(() => {\n            this._origin = origin;\n            this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n            // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n            // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n            // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n            // a touch event because when a touch event is fired, the associated focus event isn't yet in\n            // the event queue. Before doing so, clear any pending timeouts.\n            if (this._detectionMode === 0 /* IMMEDIATE */) {\n                clearTimeout(this._originTimeoutId);\n                const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n                this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n            }\n        });\n    }\n    /**\n     * Handles focus events on a registered element.\n     * @param event The focus event.\n     * @param element The monitored element.\n     */\n    _onFocus(event, element) {\n        // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n        // focus event affecting the monitored element. If we want to use the origin of the first event\n        // instead we should check for the cdk-focused class here and return if the element already has\n        // it. (This only matters for elements that have includesChildren = true).\n        // If we are not counting child-element-focus as focused, make sure that the event target is the\n        // monitored element itself.\n        const elementInfo = this._elementInfo.get(element);\n        const focusEventTarget = _getEventTarget(event);\n        if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n            return;\n        }\n        this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n    }\n    /**\n     * Handles blur events on a registered element.\n     * @param event The blur event.\n     * @param element The monitored element.\n     */\n    _onBlur(event, element) {\n        // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n        // order to focus another child of the monitored element.\n        const elementInfo = this._elementInfo.get(element);\n        if (!elementInfo ||\n            (elementInfo.checkChildren &&\n                event.relatedTarget instanceof Node &&\n                element.contains(event.relatedTarget))) {\n            return;\n        }\n        this._setClasses(element);\n        this._emitOrigin(elementInfo.subject, null);\n    }\n    _emitOrigin(subject, origin) {\n        this._ngZone.run(() => subject.next(origin));\n    }\n    _registerGlobalListeners(elementInfo) {\n        if (!this._platform.isBrowser) {\n            return;\n        }\n        const rootNode = elementInfo.rootNode;\n        const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n        if (!rootNodeFocusListeners) {\n            this._ngZone.runOutsideAngular(() => {\n                rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n            });\n        }\n        this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n        // Register global listeners when first element is monitored.\n        if (++this._monitoredElementCount === 1) {\n            // Note: we listen to events in the capture phase so we\n            // can detect them even if the user stops propagation.\n            this._ngZone.runOutsideAngular(() => {\n                const window = this._getWindow();\n                window.addEventListener('focus', this._windowFocusListener);\n            });\n            // The InputModalityDetector is also just a collection of global listeners.\n            this._inputModalityDetector.modalityDetected\n                .pipe(takeUntil(this._stopInputModalityDetector))\n                .subscribe(modality => {\n                this._setOrigin(modality, true /* isFromInteraction */);\n            });\n        }\n    }\n    _removeGlobalListeners(elementInfo) {\n        const rootNode = elementInfo.rootNode;\n        if (this._rootNodeFocusListenerCount.has(rootNode)) {\n            const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n            if (rootNodeFocusListeners > 1) {\n                this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n            }\n            else {\n                rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                this._rootNodeFocusListenerCount.delete(rootNode);\n            }\n        }\n        // Unregister global listeners when last element is unmonitored.\n        if (!--this._monitoredElementCount) {\n            const window = this._getWindow();\n            window.removeEventListener('focus', this._windowFocusListener);\n            // Equivalently, stop our InputModalityDetector subscription.\n            this._stopInputModalityDetector.next();\n            // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n            clearTimeout(this._windowFocusTimeoutId);\n            clearTimeout(this._originTimeoutId);\n        }\n    }\n    /** Updates all the state on an element once its focus origin has changed. */\n    _originChanged(element, origin, elementInfo) {\n        this._setClasses(element, origin);\n        this._emitOrigin(elementInfo.subject, origin);\n        this._lastFocusOrigin = origin;\n    }\n    /**\n     * Collects the `MonitoredElementInfo` of a particular element and\n     * all of its ancestors that have enabled `checkChildren`.\n     * @param element Element from which to start the search.\n     */\n    _getClosestElementsInfo(element) {\n        const results = [];\n        this._elementInfo.forEach((info, currentElement) => {\n            if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n                results.push([currentElement, info]);\n            }\n        });\n        return results;\n    }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n                }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n *    focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n    constructor(_elementRef, _focusMonitor) {\n        this._elementRef = _elementRef;\n        this._focusMonitor = _focusMonitor;\n        this.cdkFocusChange = new EventEmitter();\n    }\n    ngAfterViewInit() {\n        const element = this._elementRef.nativeElement;\n        this._monitorSubscription = this._focusMonitor\n            .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n            .subscribe(origin => this.cdkFocusChange.emit(origin));\n    }\n    ngOnDestroy() {\n        this._focusMonitor.stopMonitoring(this._elementRef);\n        if (this._monitorSubscription) {\n            this._monitorSubscription.unsubscribe();\n        }\n    }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n                type: Output\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n    constructor(_platform, document) {\n        this._platform = _platform;\n        this._document = document;\n    }\n    /** Gets the current high-contrast-mode for the page. */\n    getHighContrastMode() {\n        if (!this._platform.isBrowser) {\n            return 0 /* NONE */;\n        }\n        // Create a test element with an arbitrary background-color that is neither black nor\n        // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n        // appending the test element to the DOM does not affect layout by absolutely positioning it\n        const testElement = this._document.createElement('div');\n        testElement.style.backgroundColor = 'rgb(1,2,3)';\n        testElement.style.position = 'absolute';\n        this._document.body.appendChild(testElement);\n        // Get the computed style for the background color, collapsing spaces to normalize between\n        // browsers. Once we get this color, we no longer need the test element. Access the `window`\n        // via the document so we can fake it in tests. Note that we have extra null checks, because\n        // this logic will likely run during app bootstrap and throwing can break the entire app.\n        const documentWindow = this._document.defaultView || window;\n        const computedStyle = documentWindow && documentWindow.getComputedStyle\n            ? documentWindow.getComputedStyle(testElement)\n            : null;\n        const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n        testElement.remove();\n        switch (computedColor) {\n            case 'rgb(0,0,0)':\n                return 2 /* WHITE_ON_BLACK */;\n            case 'rgb(255,255,255)':\n                return 1 /* BLACK_ON_WHITE */;\n        }\n        return 0 /* NONE */;\n    }\n    /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n    _applyBodyHighContrastModeCssClasses() {\n        if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n            const bodyClasses = this._document.body.classList;\n            // IE11 doesn't support `classList` operations with multiple arguments\n            bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n            bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n            bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n            this._hasCheckedHighContrastMode = true;\n            const mode = this.getHighContrastMode();\n            if (mode === 1 /* BLACK_ON_WHITE */) {\n                bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n                bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n            }\n            else if (mode === 2 /* WHITE_ON_BLACK */) {\n                bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n                bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n            }\n        }\n    }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass A11yModule {\n    constructor(highContrastModeDetector) {\n        highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n    }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [PlatformModule, ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, imports: [[PlatformModule, ObserversModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [PlatformModule, ObserversModule],\n                    declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n                    exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n                }]\n        }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';\nconst _c0 = [\"container\"];\n\nconst _c1 = function (a0, a1, a2, a3) {\n  return {\n    \"pi-info-circle\": a0,\n    \"pi-exclamation-triangle\": a1,\n    \"pi-times-circle\": a2,\n    \"pi-check\": a3\n  };\n};\n\nfunction ToastItem_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵelement(1, \"span\", 6);\n    i0.ɵɵelementStart(2, \"div\", 7);\n    i0.ɵɵelementStart(3, \"div\", 8);\n    i0.ɵɵtext(4);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(5, \"div\", 9);\n    i0.ɵɵtext(6);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵclassMap(\"p-toast-message-icon pi\" + (ctx_r1.message.icon ? \" \" + ctx_r1.message.icon : \"\"));\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(5, _c1, ctx_r1.message.severity == \"info\", ctx_r1.message.severity == \"warn\", ctx_r1.message.severity == \"error\", ctx_r1.message.severity == \"success\"));\n    i0.ɵɵadvance(3);\n    i0.ɵɵtextInterpolate(ctx_r1.message.summary);\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate(ctx_r1.message.detail);\n  }\n}\n\nfunction ToastItem_ng_container_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction ToastItem_button_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 10);\n    i0.ɵɵlistener(\"click\", function ToastItem_button_5_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.onCloseIconClick($event);\n    })(\"keydown.enter\", function ToastItem_button_5_Template_button_keydown_enter_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.onCloseIconClick($event);\n    });\n    i0.ɵɵelement(1, \"span\", 11);\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c2 = function (a0) {\n  return [a0, \"p-toast-message\"];\n};\n\nconst _c3 = function (a0, a1, a2, a3) {\n  return {\n    showTransformParams: a0,\n    hideTransformParams: a1,\n    showTransitionParams: a2,\n    hideTransitionParams: a3\n  };\n};\n\nconst _c4 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nconst _c5 = function (a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction Toast_p_toastItem_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-toastItem\", 3);\n    i0.ɵɵlistener(\"onClose\", function Toast_p_toastItem_2_Template_p_toastItem_onClose_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.onMessageClose($event);\n    })(\"@toastAnimation.start\", function Toast_p_toastItem_2_Template_p_toastItem_animation_toastAnimation_start_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.onAnimationStart($event);\n    })(\"@toastAnimation.done\", function Toast_p_toastItem_2_Template_p_toastItem_animation_toastAnimation_done_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.onAnimationEnd($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const msg_r2 = ctx.$implicit;\n    const i_r3 = ctx.index;\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"message\", msg_r2)(\"index\", i_r3)(\"template\", ctx_r1.template)(\"@toastAnimation\", undefined)(\"showTransformOptions\", ctx_r1.showTransformOptions)(\"hideTransformOptions\", ctx_r1.hideTransformOptions)(\"showTransitionOptions\", ctx_r1.showTransitionOptions)(\"hideTransitionOptions\", ctx_r1.hideTransitionOptions);\n  }\n}\n\nclass ToastItem {\n  constructor(zone) {\n    this.zone = zone;\n    this.onClose = new EventEmitter();\n  }\n\n  ngAfterViewInit() {\n    this.initTimeout();\n  }\n\n  initTimeout() {\n    if (!this.message.sticky) {\n      this.zone.runOutsideAngular(() => {\n        this.timeout = setTimeout(() => {\n          this.onClose.emit({\n            index: this.index,\n            message: this.message\n          });\n        }, this.message.life || 3000);\n      });\n    }\n  }\n\n  clearTimeout() {\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n      this.timeout = null;\n    }\n  }\n\n  onMouseEnter() {\n    this.clearTimeout();\n  }\n\n  onMouseLeave() {\n    this.initTimeout();\n  }\n\n  onCloseIconClick(event) {\n    this.clearTimeout();\n    this.onClose.emit({\n      index: this.index,\n      message: this.message\n    });\n    event.preventDefault();\n  }\n\n  ngOnDestroy() {\n    this.clearTimeout();\n  }\n\n}\n\nToastItem.ɵfac = function ToastItem_Factory(t) {\n  return new (t || ToastItem)(i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nToastItem.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: ToastItem,\n  selectors: [[\"p-toastItem\"]],\n  viewQuery: function ToastItem_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    message: \"message\",\n    index: \"index\",\n    template: \"template\",\n    showTransformOptions: \"showTransformOptions\",\n    hideTransformOptions: \"hideTransformOptions\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\"\n  },\n  outputs: {\n    onClose: \"onClose\"\n  },\n  decls: 6,\n  vars: 21,\n  consts: [[3, \"ngClass\", \"mouseenter\", \"mouseleave\"], [\"container\", \"\"], [\"role\", \"alert\", \"aria-live\", \"assertive\", \"aria-atomic\", \"true\", 1, \"p-toast-message-content\", 3, \"ngClass\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"type\", \"button\", \"class\", \"p-toast-icon-close p-link\", \"pRipple\", \"\", 3, \"click\", \"keydown.enter\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-toast-message-text\"], [1, \"p-toast-summary\"], [1, \"p-toast-detail\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-toast-icon-close\", \"p-link\", 3, \"click\", \"keydown.enter\"], [1, \"p-toast-icon-close-icon\", \"pi\", \"pi-times\"]],\n  template: function ToastItem_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵlistener(\"mouseenter\", function ToastItem_Template_div_mouseenter_0_listener() {\n        return ctx.onMouseEnter();\n      })(\"mouseleave\", function ToastItem_Template_div_mouseleave_0_listener() {\n        return ctx.onMouseLeave();\n      });\n      i0.ɵɵelementStart(2, \"div\", 2);\n      i0.ɵɵtemplate(3, ToastItem_ng_container_3_Template, 7, 10, \"ng-container\", 3);\n      i0.ɵɵtemplate(4, ToastItem_ng_container_4_Template, 1, 0, \"ng-container\", 4);\n      i0.ɵɵtemplate(5, ToastItem_button_5_Template, 2, 0, \"button\", 5);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.message.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(10, _c2, \"p-toast-message-\" + ctx.message.severity))(\"@messageState\", i0.ɵɵpureFunction1(17, _c4, i0.ɵɵpureFunction4(12, _c3, ctx.showTransformOptions, ctx.hideTransformOptions, ctx.showTransitionOptions, ctx.hideTransitionOptions)));\n      i0.ɵɵattribute(\"id\", ctx.message.id);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngClass\", ctx.message.contentStyleClass);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.template);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(19, _c5, ctx.message));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.message.closable !== false);\n    }\n  },\n  directives: [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i2.Ripple],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('messageState', [state('visible', style({\n      transform: 'translateY(0)',\n      opacity: 1\n    })), transition('void => *', [style({\n      transform: '{{showTransformParams}}',\n      opacity: 0\n    }), animate('{{showTransitionParams}}')]), transition('* => void', [animate('{{hideTransitionParams}}', style({\n      height: 0,\n      opacity: 0,\n      transform: '{{hideTransformParams}}'\n    }))])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ToastItem, [{\n    type: Component,\n    args: [{\n      selector: 'p-toastItem',\n      template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n      animations: [trigger('messageState', [state('visible', style({\n        transform: 'translateY(0)',\n        opacity: 1\n      })), transition('void => *', [style({\n        transform: '{{showTransformParams}}',\n        opacity: 0\n      }), animate('{{showTransitionParams}}')]), transition('* => void', [animate('{{hideTransitionParams}}', style({\n        height: 0,\n        opacity: 0,\n        transform: '{{hideTransformParams}}'\n      }))])])],\n      encapsulation: ViewEncapsulation.None,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }];\n  }, {\n    message: [{\n      type: Input\n    }],\n    index: [{\n      type: Input\n    }],\n    template: [{\n      type: Input\n    }],\n    showTransformOptions: [{\n      type: Input\n    }],\n    hideTransformOptions: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    containerViewChild: [{\n      type: ViewChild,\n      args: ['container']\n    }]\n  });\n})();\n\nclass Toast {\n  constructor(messageService, cd, config) {\n    this.messageService = messageService;\n    this.cd = cd;\n    this.config = config;\n    this.autoZIndex = true;\n    this.baseZIndex = 0;\n    this.position = 'top-right';\n    this.preventOpenDuplicates = false;\n    this.preventDuplicates = false;\n    this.showTransformOptions = 'translateY(100%)';\n    this.hideTransformOptions = 'translateY(-100%)';\n    this.showTransitionOptions = '300ms ease-out';\n    this.hideTransitionOptions = '250ms ease-in';\n    this.onClose = new EventEmitter();\n    this.id = UniqueComponentId();\n  }\n\n  ngOnInit() {\n    this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n      if (messages) {\n        if (messages instanceof Array) {\n          const filteredMessages = messages.filter(m => this.canAdd(m));\n          this.add(filteredMessages);\n        } else if (this.canAdd(messages)) {\n          this.add([messages]);\n        }\n      }\n    });\n    this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n      if (key) {\n        if (this.key === key) {\n          this.messages = null;\n        }\n      } else {\n        this.messages = null;\n      }\n\n      this.cd.markForCheck();\n    });\n  }\n\n  ngAfterViewInit() {\n    if (this.breakpoints) {\n      this.createStyle();\n    }\n  }\n\n  add(messages) {\n    this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n\n    if (this.preventDuplicates) {\n      this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n    }\n\n    this.cd.markForCheck();\n  }\n\n  canAdd(message) {\n    let allow = this.key === message.key;\n\n    if (allow && this.preventOpenDuplicates) {\n      allow = !this.containsMessage(this.messages, message);\n    }\n\n    if (allow && this.preventDuplicates) {\n      allow = !this.containsMessage(this.messagesArchieve, message);\n    }\n\n    return allow;\n  }\n\n  containsMessage(collection, message) {\n    if (!collection) {\n      return false;\n    }\n\n    return collection.find(m => {\n      return m.summary === message.summary && m.detail == message.detail && m.severity === message.severity;\n    }) != null;\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'message':\n          this.template = item.template;\n          break;\n\n        default:\n          this.template = item.template;\n          break;\n      }\n    });\n  }\n\n  onMessageClose(event) {\n    this.messages.splice(event.index, 1);\n    this.onClose.emit({\n      message: event.message\n    });\n    this.cd.detectChanges();\n  }\n\n  onAnimationStart(event) {\n    if (event.fromState === 'void') {\n      this.containerViewChild.nativeElement.setAttribute(this.id, '');\n\n      if (this.autoZIndex) {\n        ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n      }\n    }\n  }\n\n  onAnimationEnd(event) {\n    if (event.toState === 'void') {\n      if (this.autoZIndex) {\n        ZIndexUtils.clear(this.containerViewChild.nativeElement);\n      }\n    }\n  }\n\n  createStyle() {\n    if (!this.styleElement) {\n      this.styleElement = document.createElement('style');\n      this.styleElement.type = 'text/css';\n      document.head.appendChild(this.styleElement);\n      let innerHTML = '';\n\n      for (let breakpoint in this.breakpoints) {\n        let breakpointStyle = '';\n\n        for (let styleProp in this.breakpoints[breakpoint]) {\n          breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n        }\n\n        innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `;\n      }\n\n      this.styleElement.innerHTML = innerHTML;\n    }\n  }\n\n  destroyStyle() {\n    if (this.styleElement) {\n      document.head.removeChild(this.styleElement);\n      this.styleElement = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.messageSubscription) {\n      this.messageSubscription.unsubscribe();\n    }\n\n    if (this.containerViewChild && this.autoZIndex) {\n      ZIndexUtils.clear(this.containerViewChild.nativeElement);\n    }\n\n    if (this.clearSubscription) {\n      this.clearSubscription.unsubscribe();\n    }\n\n    this.destroyStyle();\n  }\n\n}\n\nToast.ɵfac = function Toast_Factory(t) {\n  return new (t || Toast)(i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.PrimeNGConfig));\n};\n\nToast.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Toast,\n  selectors: [[\"p-toast\"]],\n  contentQueries: function Toast_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Toast_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    key: \"key\",\n    autoZIndex: \"autoZIndex\",\n    baseZIndex: \"baseZIndex\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    position: \"position\",\n    preventOpenDuplicates: \"preventOpenDuplicates\",\n    preventDuplicates: \"preventDuplicates\",\n    showTransformOptions: \"showTransformOptions\",\n    hideTransformOptions: \"hideTransformOptions\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\",\n    breakpoints: \"breakpoints\"\n  },\n  outputs: {\n    onClose: \"onClose\"\n  },\n  decls: 3,\n  vars: 5,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [\"container\", \"\"], [3, \"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"onClose\", 4, \"ngFor\", \"ngForOf\"], [3, \"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"onClose\"]],\n  template: function Toast_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵtemplate(2, Toast_p_toastItem_2_Template, 1, 8, \"p-toastItem\", 2);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-toast p-component p-toast-\" + ctx.position)(\"ngStyle\", ctx.style);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngForOf\", ctx.messages);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgForOf, ToastItem],\n  styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Toast, [{\n    type: Component,\n    args: [{\n      selector: 'p-toast',\n      template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `,\n      animations: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i3.MessageService\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i3.PrimeNGConfig\n    }];\n  }, {\n    key: [{\n      type: Input\n    }],\n    autoZIndex: [{\n      type: Input\n    }],\n    baseZIndex: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    position: [{\n      type: Input\n    }],\n    preventOpenDuplicates: [{\n      type: Input\n    }],\n    preventDuplicates: [{\n      type: Input\n    }],\n    showTransformOptions: [{\n      type: Input\n    }],\n    hideTransformOptions: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    breakpoints: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    containerViewChild: [{\n      type: ViewChild,\n      args: ['container']\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass ToastModule {}\n\nToastModule.ɵfac = function ToastModule_Factory(t) {\n  return new (t || ToastModule)();\n};\n\nToastModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ToastModule\n});\nToastModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, RippleModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ToastModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, RippleModule],\n      exports: [Toast, SharedModule],\n      declarations: [Toast, ToastItem]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Toast, ToastItem, ToastModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs"],"names":["i0","EventEmitter","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","Output","ViewChild","ContentChildren","NgModule","i1","CommonModule","i3","PrimeTemplate","SharedModule","UniqueComponentId","ZIndexUtils","i2","RippleModule","trigger","state","style","transition","animate","query","animateChild","ToastItem","constructor","zone","onClose","ngAfterViewInit","initTimeout","message","sticky","runOutsideAngular","timeout","setTimeout","emit","index","life","clearTimeout","onMouseEnter","onMouseLeave","onCloseIconClick","event","preventDefault","ngOnDestroy","ɵfac","NgZone","ɵcmp","NgClass","NgIf","NgTemplateOutlet","Ripple","transform","opacity","height","type","args","selector","template","animations","encapsulation","None","changeDetection","OnPush","host","showTransformOptions","hideTransformOptions","showTransitionOptions","hideTransitionOptions","containerViewChild","Toast","messageService","cd","config","autoZIndex","baseZIndex","position","preventOpenDuplicates","preventDuplicates","id","ngOnInit","messageSubscription","messageObserver","subscribe","messages","Array","filteredMessages","filter","m","canAdd","add","clearSubscription","clearObserver","key","markForCheck","breakpoints","createStyle","messagesArchieve","allow","containsMessage","collection","find","summary","detail","severity","ngAfterContentInit","templates","forEach","item","getType","onMessageClose","splice","detectChanges","onAnimationStart","fromState","nativeElement","setAttribute","set","zIndex","modal","onAnimationEnd","toState","clear","styleElement","document","createElement","head","appendChild","innerHTML","breakpoint","breakpointStyle","styleProp","destroyStyle","removeChild","unsubscribe","MessageService","ChangeDetectorRef","PrimeNGConfig","NgStyle","NgForOf","styles","styleClass","ToastModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';\n\nclass ToastItem {\n    constructor(zone) {\n        this.zone = zone;\n        this.onClose = new EventEmitter();\n    }\n    ngAfterViewInit() {\n        this.initTimeout();\n    }\n    initTimeout() {\n        if (!this.message.sticky) {\n            this.zone.runOutsideAngular(() => {\n                this.timeout = setTimeout(() => {\n                    this.onClose.emit({\n                        index: this.index,\n                        message: this.message\n                    });\n                }, this.message.life || 3000);\n            });\n        }\n    }\n    clearTimeout() {\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n    }\n    onMouseEnter() {\n        this.clearTimeout();\n    }\n    onMouseLeave() {\n        this.initTimeout();\n    }\n    onCloseIconClick(event) {\n        this.clearTimeout();\n        this.onClose.emit({\n            index: this.index,\n            message: this.message\n        });\n        event.preventDefault();\n    }\n    ngOnDestroy() {\n        this.clearTimeout();\n    }\n}\nToastItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nToastItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: ToastItem, selector: \"p-toastItem\", inputs: { message: \"message\", index: \"index\", template: \"template\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }], animations: [\n        trigger('messageState', [\n            state('visible', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => *', [\n                style({ transform: '{{showTransformParams}}', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('* => void', [\n                animate(('{{hideTransitionParams}}'), style({\n                    height: 0,\n                    opacity: 0,\n                    transform: '{{hideTransformParams}}'\n                }))\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastItem, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-toastItem',\n                    template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n                    animations: [\n                        trigger('messageState', [\n                            state('visible', style({\n                                transform: 'translateY(0)',\n                                opacity: 1\n                            })),\n                            transition('void => *', [\n                                style({ transform: '{{showTransformParams}}', opacity: 0 }),\n                                animate('{{showTransitionParams}}')\n                            ]),\n                            transition('* => void', [\n                                animate(('{{hideTransitionParams}}'), style({\n                                    height: 0,\n                                    opacity: 0,\n                                    transform: '{{hideTransformParams}}'\n                                }))\n                            ])\n                        ])\n                    ],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { message: [{\n                type: Input\n            }], index: [{\n                type: Input\n            }], template: [{\n                type: Input\n            }], showTransformOptions: [{\n                type: Input\n            }], hideTransformOptions: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], containerViewChild: [{\n                type: ViewChild,\n                args: ['container']\n            }] } });\nclass Toast {\n    constructor(messageService, cd, config) {\n        this.messageService = messageService;\n        this.cd = cd;\n        this.config = config;\n        this.autoZIndex = true;\n        this.baseZIndex = 0;\n        this.position = 'top-right';\n        this.preventOpenDuplicates = false;\n        this.preventDuplicates = false;\n        this.showTransformOptions = 'translateY(100%)';\n        this.hideTransformOptions = 'translateY(-100%)';\n        this.showTransitionOptions = '300ms ease-out';\n        this.hideTransitionOptions = '250ms ease-in';\n        this.onClose = new EventEmitter();\n        this.id = UniqueComponentId();\n    }\n    ngOnInit() {\n        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n            if (messages) {\n                if (messages instanceof Array) {\n                    const filteredMessages = messages.filter(m => this.canAdd(m));\n                    this.add(filteredMessages);\n                }\n                else if (this.canAdd(messages)) {\n                    this.add([messages]);\n                }\n            }\n        });\n        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n            if (key) {\n                if (this.key === key) {\n                    this.messages = null;\n                }\n            }\n            else {\n                this.messages = null;\n            }\n            this.cd.markForCheck();\n        });\n    }\n    ngAfterViewInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n    add(messages) {\n        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n        if (this.preventDuplicates) {\n            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n        }\n        this.cd.markForCheck();\n    }\n    canAdd(message) {\n        let allow = this.key === message.key;\n        if (allow && this.preventOpenDuplicates) {\n            allow = !this.containsMessage(this.messages, message);\n        }\n        if (allow && this.preventDuplicates) {\n            allow = !this.containsMessage(this.messagesArchieve, message);\n        }\n        return allow;\n    }\n    containsMessage(collection, message) {\n        if (!collection) {\n            return false;\n        }\n        return collection.find(m => {\n            return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));\n        }) != null;\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'message':\n                    this.template = item.template;\n                    break;\n                default:\n                    this.template = item.template;\n                    break;\n            }\n        });\n    }\n    onMessageClose(event) {\n        this.messages.splice(event.index, 1);\n        this.onClose.emit({\n            message: event.message\n        });\n        this.cd.detectChanges();\n    }\n    onAnimationStart(event) {\n        if (event.fromState === 'void') {\n            this.containerViewChild.nativeElement.setAttribute(this.id, '');\n            if (this.autoZIndex) {\n                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n            }\n        }\n    }\n    onAnimationEnd(event) {\n        if (event.toState === 'void') {\n            if (this.autoZIndex) {\n                ZIndexUtils.clear(this.containerViewChild.nativeElement);\n            }\n        }\n    }\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                let breakpointStyle = '';\n                for (let styleProp in this.breakpoints[breakpoint]) {\n                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n                }\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `;\n            }\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n        this.destroyStyle();\n    }\n}\nToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Toast, deps: [{ token: i3.MessageService }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Toast, selector: \"p-toast\", inputs: { key: \"key\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", style: \"style\", styleClass: \"styleClass\", position: \"position\", preventOpenDuplicates: \"preventOpenDuplicates\", preventDuplicates: \"preventDuplicates\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", breakpoints: \"breakpoints\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `, isInline: true, styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"], components: [{ type: ToastItem, selector: \"p-toastItem\", inputs: [\"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"onClose\"] }], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n        trigger('toastAnimation', [\n            transition(':enter, :leave', [\n                query('@*', animateChild())\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Toast, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-toast', template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `, animations: [\n                        trigger('toastAnimation', [\n                            transition(':enter, :leave', [\n                                query('@*', animateChild())\n                            ])\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i3.MessageService }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { key: [{\n                type: Input\n            }], autoZIndex: [{\n                type: Input\n            }], baseZIndex: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], position: [{\n                type: Input\n            }], preventOpenDuplicates: [{\n                type: Input\n            }], preventDuplicates: [{\n                type: Input\n            }], showTransformOptions: [{\n                type: Input\n            }], hideTransformOptions: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], breakpoints: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], containerViewChild: [{\n                type: ViewChild,\n                args: ['container']\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass ToastModule {\n}\nToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule], exports: [Toast, SharedModule] });\nToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, imports: [[CommonModule, RippleModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, RippleModule],\n                    exports: [Toast, SharedModule],\n                    declarations: [Toast, ToastItem]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Toast, ToastItem, ToastModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\nconst _c0 = [\"*\"];\n\nclass FilterMatchMode {}\n\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass PrimeNGConfig {\n  constructor() {\n    this.ripple = false;\n    this.filterMatchModeOptions = {\n      text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n      numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n      date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n    };\n    this.translation = {\n      startsWith: 'Starts with',\n      contains: 'Contains',\n      notContains: 'Not contains',\n      endsWith: 'Ends with',\n      equals: 'Equals',\n      notEquals: 'Not equals',\n      noFilter: 'No Filter',\n      lt: 'Less than',\n      lte: 'Less than or equal to',\n      gt: 'Greater than',\n      gte: 'Greater than or equal to',\n      is: 'Is',\n      isNot: 'Is not',\n      before: 'Before',\n      after: 'After',\n      dateIs: 'Date is',\n      dateIsNot: 'Date is not',\n      dateBefore: 'Date is before',\n      dateAfter: 'Date is after',\n      clear: 'Clear',\n      apply: 'Apply',\n      matchAll: 'Match All',\n      matchAny: 'Match Any',\n      addRule: 'Add Rule',\n      removeRule: 'Remove Rule',\n      accept: 'Yes',\n      reject: 'No',\n      choose: 'Choose',\n      upload: 'Upload',\n      cancel: 'Cancel',\n      dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n      dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n      dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n      monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n      monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n      dateFormat: 'mm/dd/yy',\n      today: 'Today',\n      weekHeader: 'Wk',\n      weak: 'Weak',\n      medium: 'Medium',\n      strong: 'Strong',\n      passwordPrompt: 'Enter a password',\n      emptyMessage: 'No results found',\n      emptyFilterMessage: 'No results found'\n    };\n    this.zIndex = {\n      modal: 1100,\n      overlay: 1000,\n      menu: 1000,\n      tooltip: 1100\n    };\n    this.translationSource = new Subject();\n    this.translationObserver = this.translationSource.asObservable();\n  }\n\n  getTranslation(key) {\n    return this.translation[key];\n  }\n\n  setTranslation(value) {\n    this.translation = { ...this.translation,\n      ...value\n    };\n    this.translationSource.next(this.translation);\n  }\n\n}\n\nPrimeNGConfig.ɵfac = function PrimeNGConfig_Factory(t) {\n  return new (t || PrimeNGConfig)();\n};\n\nPrimeNGConfig.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: PrimeNGConfig,\n  factory: PrimeNGConfig.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PrimeNGConfig, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass TranslationKeys {}\n\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\nvar ConfirmEventType;\n\n(function (ConfirmEventType) {\n  ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n  ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n  ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\nclass ConfirmationService {\n  constructor() {\n    this.requireConfirmationSource = new Subject();\n    this.acceptConfirmationSource = new Subject();\n    this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n    this.accept = this.acceptConfirmationSource.asObservable();\n  }\n\n  confirm(confirmation) {\n    this.requireConfirmationSource.next(confirmation);\n    return this;\n  }\n\n  close() {\n    this.requireConfirmationSource.next(null);\n    return this;\n  }\n\n  onAccept() {\n    this.acceptConfirmationSource.next(null);\n  }\n\n}\n\nConfirmationService.ɵfac = function ConfirmationService_Factory(t) {\n  return new (t || ConfirmationService)();\n};\n\nConfirmationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ConfirmationService,\n  factory: ConfirmationService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass FilterService {\n  constructor() {\n    this.filters = {\n      startsWith: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.slice(0, filterValue.length) === filterValue;\n      },\n      contains: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue) !== -1;\n      },\n      notContains: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue) === -1;\n      },\n      endsWith: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n      },\n      equals: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() === filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n      },\n      notEquals: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return false;\n        }\n\n        if (value === undefined || value === null) {\n          return true;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() !== filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n      },\n      in: (value, filter) => {\n        if (filter === undefined || filter === null || filter.length === 0) {\n          return true;\n        }\n\n        for (let i = 0; i < filter.length; i++) {\n          if (ObjectUtils.equals(value, filter[i])) {\n            return true;\n          }\n        }\n\n        return false;\n      },\n      between: (value, filter) => {\n        if (filter == null || filter[0] == null || filter[1] == null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime) return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();else return filter[0] <= value && value <= filter[1];\n      },\n      lt: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() < filter.getTime();else return value < filter;\n      },\n      lte: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() <= filter.getTime();else return value <= filter;\n      },\n      gt: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() > filter.getTime();else return value > filter;\n      },\n      gte: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() >= filter.getTime();else return value >= filter;\n      },\n      is: (value, filter, filterLocale) => {\n        return this.filters.equals(value, filter, filterLocale);\n      },\n      isNot: (value, filter, filterLocale) => {\n        return this.filters.notEquals(value, filter, filterLocale);\n      },\n      before: (value, filter, filterLocale) => {\n        return this.filters.lt(value, filter, filterLocale);\n      },\n      after: (value, filter, filterLocale) => {\n        return this.filters.gt(value, filter, filterLocale);\n      },\n      dateIs: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.toDateString() === filter.toDateString();\n      },\n      dateIsNot: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.toDateString() !== filter.toDateString();\n      },\n      dateBefore: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.getTime() < filter.getTime();\n      },\n      dateAfter: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.getTime() > filter.getTime();\n      }\n    };\n  }\n\n  filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n    let filteredItems = [];\n\n    if (value) {\n      for (let item of value) {\n        for (let field of fields) {\n          let fieldValue = ObjectUtils.resolveFieldData(item, field);\n\n          if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n            filteredItems.push(item);\n            break;\n          }\n        }\n      }\n    }\n\n    return filteredItems;\n  }\n\n  register(rule, fn) {\n    this.filters[rule] = fn;\n  }\n\n}\n\nFilterService.ɵfac = function FilterService_Factory(t) {\n  return new (t || FilterService)();\n};\n\nFilterService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FilterService,\n  factory: FilterService.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FilterService, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass ContextMenuService {\n  constructor() {\n    this.activeItemKeyChange = new Subject();\n    this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n  }\n\n  changeKey(key) {\n    this.activeItemKey = key;\n    this.activeItemKeyChange.next(this.activeItemKey);\n  }\n\n  reset() {\n    this.activeItemKey = null;\n    this.activeItemKeyChange.next(this.activeItemKey);\n  }\n\n}\n\nContextMenuService.ɵfac = function ContextMenuService_Factory(t) {\n  return new (t || ContextMenuService)();\n};\n\nContextMenuService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ContextMenuService,\n  factory: ContextMenuService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContextMenuService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass MessageService {\n  constructor() {\n    this.messageSource = new Subject();\n    this.clearSource = new Subject();\n    this.messageObserver = this.messageSource.asObservable();\n    this.clearObserver = this.clearSource.asObservable();\n  }\n\n  add(message) {\n    if (message) {\n      this.messageSource.next(message);\n    }\n  }\n\n  addAll(messages) {\n    if (messages && messages.length) {\n      this.messageSource.next(messages);\n    }\n  }\n\n  clear(key) {\n    this.clearSource.next(key || null);\n  }\n\n}\n\nMessageService.ɵfac = function MessageService_Factory(t) {\n  return new (t || MessageService)();\n};\n\nMessageService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: MessageService,\n  factory: MessageService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MessageService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass OverlayService {\n  constructor() {\n    this.clickSource = new Subject();\n    this.clickObservable = this.clickSource.asObservable();\n  }\n\n  add(event) {\n    if (event) {\n      this.clickSource.next(event);\n    }\n  }\n\n}\n\nOverlayService.ɵfac = function OverlayService_Factory(t) {\n  return new (t || OverlayService)();\n};\n\nOverlayService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayService,\n  factory: OverlayService.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayService, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass PrimeIcons {}\n\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrow-h';\nPrimeIcons.ARROW_V = 'pi pi-arrow-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass FilterOperator {}\n\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass Header {}\n\nHeader.ɵfac = function Header_Factory(t) {\n  return new (t || Header)();\n};\n\nHeader.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Header,\n  selectors: [[\"p-header\"]],\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 0,\n  template: function Header_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵprojection(0);\n    }\n  },\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Header, [{\n    type: Component,\n    args: [{\n      selector: 'p-header',\n      template: '<ng-content></ng-content>'\n    }]\n  }], null, null);\n})();\n\nclass Footer {}\n\nFooter.ɵfac = function Footer_Factory(t) {\n  return new (t || Footer)();\n};\n\nFooter.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Footer,\n  selectors: [[\"p-footer\"]],\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 0,\n  template: function Footer_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵprojection(0);\n    }\n  },\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Footer, [{\n    type: Component,\n    args: [{\n      selector: 'p-footer',\n      template: '<ng-content></ng-content>'\n    }]\n  }], null, null);\n})();\n\nclass PrimeTemplate {\n  constructor(template) {\n    this.template = template;\n  }\n\n  getType() {\n    return this.name;\n  }\n\n}\n\nPrimeTemplate.ɵfac = function PrimeTemplate_Factory(t) {\n  return new (t || PrimeTemplate)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\n\nPrimeTemplate.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: PrimeTemplate,\n  selectors: [[\"\", \"pTemplate\", \"\"]],\n  inputs: {\n    type: \"type\",\n    name: [\"pTemplate\", \"name\"]\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PrimeTemplate, [{\n    type: Directive,\n    args: [{\n      selector: '[pTemplate]',\n      host: {}\n    }]\n  }], function () {\n    return [{\n      type: i0.TemplateRef\n    }];\n  }, {\n    type: [{\n      type: Input\n    }],\n    name: [{\n      type: Input,\n      args: ['pTemplate']\n    }]\n  });\n})();\n\nclass SharedModule {}\n\nSharedModule.ɵfac = function SharedModule_Factory(t) {\n  return new (t || SharedModule)();\n};\n\nSharedModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: SharedModule\n});\nSharedModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SharedModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Header, Footer, PrimeTemplate],\n      declarations: [Header, Footer, PrimeTemplate]\n    }]\n  }], null, null);\n})();\n\nclass TreeDragDropService {\n  constructor() {\n    this.dragStartSource = new Subject();\n    this.dragStopSource = new Subject();\n    this.dragStart$ = this.dragStartSource.asObservable();\n    this.dragStop$ = this.dragStopSource.asObservable();\n  }\n\n  startDrag(event) {\n    this.dragStartSource.next(event);\n  }\n\n  stopDrag(event) {\n    this.dragStopSource.next(event);\n  }\n\n}\n\nTreeDragDropService.ɵfac = function TreeDragDropService_Factory(t) {\n  return new (t || TreeDragDropService)();\n};\n\nTreeDragDropService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: TreeDragDropService,\n  factory: TreeDragDropService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TreeDragDropService, [{\n    type: Injectable\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs"],"names":["i0","Injectable","Component","Directive","Input","NgModule","Subject","ObjectUtils","CommonModule","FilterMatchMode","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","IN","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","BETWEEN","IS","IS_NOT","BEFORE","AFTER","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","PrimeNGConfig","constructor","ripple","filterMatchModeOptions","text","numeric","date","translation","startsWith","contains","notContains","endsWith","equals","notEquals","noFilter","lt","lte","gt","gte","is","isNot","before","after","dateIs","dateIsNot","dateBefore","dateAfter","clear","apply","matchAll","matchAny","addRule","removeRule","accept","reject","choose","upload","cancel","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","dateFormat","today","weekHeader","weak","medium","strong","passwordPrompt","emptyMessage","emptyFilterMessage","zIndex","modal","overlay","menu","tooltip","translationSource","translationObserver","asObservable","getTranslation","key","setTranslation","value","next","ɵfac","ɵprov","type","args","providedIn","TranslationKeys","NO_FILTER","LT","LTE","GT","GTE","CLEAR","APPLY","MATCH_ALL","MATCH_ANY","ADD_RULE","REMOVE_RULE","ACCEPT","REJECT","CHOOSE","UPLOAD","CANCEL","DAY_NAMES","DAY_NAMES_SHORT","DAY_NAMES_MIN","MONTH_NAMES","MONTH_NAMES_SHORT","TODAY","WEEK_HEADER","WEAK","MEDIUM","STRONG","PASSWORD_PROMPT","EMPTY_MESSAGE","EMPTY_FILTER_MESSAGE","ConfirmEventType","ConfirmationService","requireConfirmationSource","acceptConfirmationSource","requireConfirmation$","confirm","confirmation","close","onAccept","FilterService","filters","filter","filterLocale","undefined","trim","filterValue","removeAccents","toString","toLocaleLowerCase","stringValue","slice","length","indexOf","getTime","in","i","between","toDateString","fields","filterMatchMode","filteredItems","item","field","fieldValue","resolveFieldData","push","register","rule","fn","ContextMenuService","activeItemKeyChange","activeItemKeyChange$","changeKey","activeItemKey","reset","MessageService","messageSource","clearSource","messageObserver","clearObserver","add","message","addAll","messages","OverlayService","clickSource","clickObservable","event","PrimeIcons","ALIGN_CENTER","ALIGN_JUSTIFY","ALIGN_LEFT","ALIGN_RIGHT","AMAZON","ANDROID","ANGLE_DOUBLE_DOWN","ANGLE_DOUBLE_LEFT","ANGLE_DOUBLE_RIGHT","ANGLE_DOUBLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_UP","APPLE","ARROW_CIRCLE_DOWN","ARROW_CIRCLE_LEFT","ARROW_CIRCLE_RIGHT","ARROW_CIRCLE_UP","ARROW_DOWN","ARROW_DOWN_LEFT","ARROW_DOWN_RIGHT","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_UP_LEFT","ARROW_UP_RIGHT","ARROW_H","ARROW_V","AT","BACKWARD","BAN","BARS","BELL","BOLT","BOOK","BOOKMARK","BOOKMARK_FILL","BOX","BRIEFCASE","BUILDING","CALENDAR","CALENDAR_MINUS","CALENDAR_PLUS","CALENDAR_TIMES","CAMERA","CAR","CARET_DOWN","CARET_LEFT","CARET_RIGHT","CARET_UP","CHART_BAR","CHART_LINE","CHART_PIE","CHECK","CHECK_CIRCLE","CHECK_SQUARE","CHEVRON_CIRCLE_DOWN","CHEVRON_CIRCLE_LEFT","CHEVRON_CIRCLE_RIGHT","CHEVRON_CIRCLE_UP","CHEVRON_DOWN","CHEVRON_LEFT","CHEVRON_RIGHT","CHEVRON_UP","CIRCLE","CIRCLE_FILL","CLOCK","CLONE","CLOUD","CLOUD_DOWNLOAD","CLOUD_UPLOAD","CODE","COG","COMMENT","COMMENTS","COMPASS","COPY","CREDIT_CARD","DATABASE","DESKTOP","DIRECTIONS","DIRECTIONS_ALT","DISCORD","DOLLAR","DOWNLOAD","EJECT","ELLIPSIS_H","ELLIPSIS_V","ENVELOPE","EURO","EXCLAMATION_CIRCLE","EXCLAMATION_TRIANGLE","EXTERNAL_LINK","EYE","EYE_SLASH","FACEBOOK","FAST_BACKWARD","FAST_FORWARD","FILE","FILE_EXCEL","FILE_PDF","FILTER","FILTER_FILL","FILTER_SLASH","FLAG","FLAG_FILL","FOLDER","FOLDER_OPEN","FORWARD","GITHUB","GLOBE","GOOGLE","HASHTAG","HEART","HEART_FILL","HISTORY","HOME","ID_CARD","IMAGE","IMAGES","INBOX","INFO","INFO_CIRCLE","INSTAGRAM","KEY","LINK","LINKEDIN","LIST","LOCK","LOCK_OPEN","MAP","MAP_MARKER","MICROSOFT","MINUS","MINUS_CIRCLE","MOBILE","MONEY_BILL","MOON","PALETTE","PAPERCLIP","PAUSE","PAYPAL","PENCIL","PERCENTAGE","PHONE","PLAY","PLUS","PLUS_CIRCLE","POUND","POWER_OFF","PRIME","PRINT","QRCODE","QUESTION","QUESTION_CIRCLE","REDDIT","REFRESH","REPLAY","REPLY","SAVE","SEARCH","SEARCH_MINUS","SEARCH_PLUS","SEND","SERVER","SHARE_ALT","SHIELD","SHOPPING_BAG","SHOPPING_CART","SIGN_IN","SIGN_OUT","SITEMAP","SLACK","SLIDERS_H","SLIDERS_V","SORT","SORT_ALPHA_DOWN","SORT_ALPHA_ALT_DOWN","SORT_ALPHA_UP","SORT_ALPHA_ALT_UP","SORT_ALT","SORT_ALT_SLASH","SORT_AMOUNT_DOWN","SORT_AMOUNT_DOWN_ALT","SORT_AMOUNT_UP","SORT_AMOUNT_UP_ALT","SORT_DOWN","SORT_NUMERIC_DOWN","SORT_NUMERIC_ALT_DOWN","SORT_NUMERIC_UP","SORT_NUMERIC_ALT_UP","SORT_UP","SPINNER","STAR","STAR_FILL","STEP_BACKWARD","STEP_BACKWARD_ALT","STEP_FORWARD","STEP_FORWARD_ALT","STOP","STOP_CIRCLE","SUN","SYNC","TABLE","TABLET","TAG","TAGS","TELEGRAM","TH_LARGE","THUMBS_DOWN","THUMBS_UP","TICKET","TIMES","TIMES_CIRCLE","TRASH","TWITTER","UNDO","UNLOCK","USER","USER_EDIT","USER_MINUS","USER_PLUS","USERS","VIDEO","VIMEO","VOLUME_DOWN","VOLUME_OFF","VOLUME_UP","WALLET","WHATSAPP","WIFI","WINDOW_MAXIMIZE","WINDOW_MINIMIZE","YOUTUBE","FilterOperator","AND","OR","Header","ɵcmp","selector","template","Footer","PrimeTemplate","getType","name","TemplateRef","ɵdir","host","SharedModule","ɵmod","ɵinj","imports","exports","declarations","TreeDragDropService","dragStartSource","dragStopSource","dragStart$","dragStop$","startDrag","stopDrag"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\n\nclass FilterMatchMode {\n}\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass PrimeNGConfig {\n    constructor() {\n        this.ripple = false;\n        this.filterMatchModeOptions = {\n            text: [\n                FilterMatchMode.STARTS_WITH,\n                FilterMatchMode.CONTAINS,\n                FilterMatchMode.NOT_CONTAINS,\n                FilterMatchMode.ENDS_WITH,\n                FilterMatchMode.EQUALS,\n                FilterMatchMode.NOT_EQUALS\n            ],\n            numeric: [\n                FilterMatchMode.EQUALS,\n                FilterMatchMode.NOT_EQUALS,\n                FilterMatchMode.LESS_THAN,\n                FilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n                FilterMatchMode.GREATER_THAN,\n                FilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n            ],\n            date: [\n                FilterMatchMode.DATE_IS,\n                FilterMatchMode.DATE_IS_NOT,\n                FilterMatchMode.DATE_BEFORE,\n                FilterMatchMode.DATE_AFTER\n            ]\n        };\n        this.translation = {\n            startsWith: 'Starts with',\n            contains: 'Contains',\n            notContains: 'Not contains',\n            endsWith: 'Ends with',\n            equals: 'Equals',\n            notEquals: 'Not equals',\n            noFilter: 'No Filter',\n            lt: 'Less than',\n            lte: 'Less than or equal to',\n            gt: 'Greater than',\n            gte: 'Greater than or equal to',\n            is: 'Is',\n            isNot: 'Is not',\n            before: 'Before',\n            after: 'After',\n            dateIs: 'Date is',\n            dateIsNot: 'Date is not',\n            dateBefore: 'Date is before',\n            dateAfter: 'Date is after',\n            clear: 'Clear',\n            apply: 'Apply',\n            matchAll: 'Match All',\n            matchAny: 'Match Any',\n            addRule: 'Add Rule',\n            removeRule: 'Remove Rule',\n            accept: 'Yes',\n            reject: 'No',\n            choose: 'Choose',\n            upload: 'Upload',\n            cancel: 'Cancel',\n            dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n            dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n            dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n            monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n            monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n            dateFormat: 'mm/dd/yy',\n            today: 'Today',\n            weekHeader: 'Wk',\n            weak: 'Weak',\n            medium: 'Medium',\n            strong: 'Strong',\n            passwordPrompt: 'Enter a password',\n            emptyMessage: 'No results found',\n            emptyFilterMessage: 'No results found'\n        };\n        this.zIndex = {\n            modal: 1100,\n            overlay: 1000,\n            menu: 1000,\n            tooltip: 1100\n        };\n        this.translationSource = new Subject();\n        this.translationObserver = this.translationSource.asObservable();\n    }\n    getTranslation(key) {\n        return this.translation[key];\n    }\n    setTranslation(value) {\n        this.translation = { ...this.translation, ...value };\n        this.translationSource.next(this.translation);\n    }\n}\nPrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass TranslationKeys {\n}\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n\nvar ConfirmEventType;\n(function (ConfirmEventType) {\n    ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n    ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n    ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\nclass ConfirmationService {\n    constructor() {\n        this.requireConfirmationSource = new Subject();\n        this.acceptConfirmationSource = new Subject();\n        this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n        this.accept = this.acceptConfirmationSource.asObservable();\n    }\n    confirm(confirmation) {\n        this.requireConfirmationSource.next(confirmation);\n        return this;\n    }\n    close() {\n        this.requireConfirmationSource.next(null);\n        return this;\n    }\n    onAccept() {\n        this.acceptConfirmationSource.next(null);\n    }\n}\nConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService, decorators: [{\n            type: Injectable\n        }] });\n\nclass FilterService {\n    constructor() {\n        this.filters = {\n            startsWith: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || filter.trim() === '') {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.slice(0, filterValue.length) === filterValue;\n            },\n            contains: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue) !== -1;\n            },\n            notContains: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue) === -1;\n            },\n            endsWith: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || filter.trim() === '') {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n            },\n            equals: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() === filter.getTime();\n                else\n                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            },\n            notEquals: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return false;\n                }\n                if (value === undefined || value === null) {\n                    return true;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() !== filter.getTime();\n                else\n                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            },\n            in: (value, filter) => {\n                if (filter === undefined || filter === null || filter.length === 0) {\n                    return true;\n                }\n                for (let i = 0; i < filter.length; i++) {\n                    if (ObjectUtils.equals(value, filter[i])) {\n                        return true;\n                    }\n                }\n                return false;\n            },\n            between: (value, filter) => {\n                if (filter == null || filter[0] == null || filter[1] == null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime)\n                    return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n                else\n                    return filter[0] <= value && value <= filter[1];\n            },\n            lt: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() < filter.getTime();\n                else\n                    return value < filter;\n            },\n            lte: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() <= filter.getTime();\n                else\n                    return value <= filter;\n            },\n            gt: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() > filter.getTime();\n                else\n                    return value > filter;\n            },\n            gte: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() >= filter.getTime();\n                else\n                    return value >= filter;\n            },\n            is: (value, filter, filterLocale) => {\n                return this.filters.equals(value, filter, filterLocale);\n            },\n            isNot: (value, filter, filterLocale) => {\n                return this.filters.notEquals(value, filter, filterLocale);\n            },\n            before: (value, filter, filterLocale) => {\n                return this.filters.lt(value, filter, filterLocale);\n            },\n            after: (value, filter, filterLocale) => {\n                return this.filters.gt(value, filter, filterLocale);\n            },\n            dateIs: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.toDateString() === filter.toDateString();\n            },\n            dateIsNot: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.toDateString() !== filter.toDateString();\n            },\n            dateBefore: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.getTime() < filter.getTime();\n            },\n            dateAfter: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.getTime() > filter.getTime();\n            }\n        };\n    }\n    filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n        let filteredItems = [];\n        if (value) {\n            for (let item of value) {\n                for (let field of fields) {\n                    let fieldValue = ObjectUtils.resolveFieldData(item, field);\n                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n                        filteredItems.push(item);\n                        break;\n                    }\n                }\n            }\n        }\n        return filteredItems;\n    }\n    register(rule, fn) {\n        this.filters[rule] = fn;\n    }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass ContextMenuService {\n    constructor() {\n        this.activeItemKeyChange = new Subject();\n        this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n    }\n    changeKey(key) {\n        this.activeItemKey = key;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n    reset() {\n        this.activeItemKey = null;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n}\nContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService, decorators: [{\n            type: Injectable\n        }] });\n\nclass MessageService {\n    constructor() {\n        this.messageSource = new Subject();\n        this.clearSource = new Subject();\n        this.messageObserver = this.messageSource.asObservable();\n        this.clearObserver = this.clearSource.asObservable();\n    }\n    add(message) {\n        if (message) {\n            this.messageSource.next(message);\n        }\n    }\n    addAll(messages) {\n        if (messages && messages.length) {\n            this.messageSource.next(messages);\n        }\n    }\n    clear(key) {\n        this.clearSource.next(key || null);\n    }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService, decorators: [{\n            type: Injectable\n        }] });\n\nclass OverlayService {\n    constructor() {\n        this.clickSource = new Subject();\n        this.clickObservable = this.clickSource.asObservable();\n    }\n    add(event) {\n        if (event) {\n            this.clickSource.next(event);\n        }\n    }\n}\nOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass PrimeIcons {\n}\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrow-h';\nPrimeIcons.ARROW_V = 'pi pi-arrow-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass FilterOperator {\n}\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass Header {\n}\nHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Header, selector: \"p-header\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Header, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-header',\n                    template: '<ng-content></ng-content>'\n                }]\n        }] });\nclass Footer {\n}\nFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Footer, selector: \"p-footer\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Footer, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-footer',\n                    template: '<ng-content></ng-content>'\n                }]\n        }] });\nclass PrimeTemplate {\n    constructor(template) {\n        this.template = template;\n    }\n    getType() {\n        return this.name;\n    }\n}\nPrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: PrimeTemplate, selector: \"[pTemplate]\", inputs: { type: \"type\", name: [\"pTemplate\", \"name\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeTemplate, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pTemplate]',\n                    host: {}\n                }]\n        }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{\n                type: Input\n            }], name: [{\n                type: Input,\n                args: ['pTemplate']\n            }] } });\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Header, Footer, PrimeTemplate],\n                    declarations: [Header, Footer, PrimeTemplate]\n                }]\n        }] });\n\nclass TreeDragDropService {\n    constructor() {\n        this.dragStartSource = new Subject();\n        this.dragStopSource = new Subject();\n        this.dragStart$ = this.dragStartSource.asObservable();\n        this.dragStop$ = this.dragStopSource.asObservable();\n    }\n    startDrag(event) {\n        this.dragStartSource.next(event);\n    }\n    stopDrag(event) {\n        this.dragStopSource.next(event);\n    }\n}\nTreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService, decorators: [{\n            type: Injectable\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** The injection token used to specify the virtual scrolling strategy. */\n\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\n\nclass FixedSizeVirtualScrollStrategy {\n  /**\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n  constructor(itemSize, minBufferPx, maxBufferPx) {\n    this._scrolledIndexChange = new Subject();\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n    this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n    /** The attached viewport. */\n\n    this._viewport = null;\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n  }\n  /**\n   * Attaches this scroll strategy to a viewport.\n   * @param viewport The viewport to attach this strategy to.\n   */\n\n\n  attach(viewport) {\n    this._viewport = viewport;\n\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** Detaches this scroll strategy from the currently attached viewport. */\n\n\n  detach() {\n    this._scrolledIndexChange.complete();\n\n    this._viewport = null;\n  }\n  /**\n   * Update the item size and buffer size.\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n\n\n  updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n    if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n    }\n\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onContentScrolled() {\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onDataLengthChanged() {\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onContentRendered() {\n    /* no-op */\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onRenderedOffsetChanged() {\n    /* no-op */\n  }\n  /**\n   * Scroll to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling.\n   */\n\n\n  scrollToIndex(index, behavior) {\n    if (this._viewport) {\n      this._viewport.scrollToOffset(index * this._itemSize, behavior);\n    }\n  }\n  /** Update the viewport's total content size. */\n\n\n  _updateTotalContentSize() {\n    if (!this._viewport) {\n      return;\n    }\n\n    this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n  }\n  /** Update the viewport's rendered range. */\n\n\n  _updateRenderedRange() {\n    if (!this._viewport) {\n      return;\n    }\n\n    const renderedRange = this._viewport.getRenderedRange();\n\n    const newRange = {\n      start: renderedRange.start,\n      end: renderedRange.end\n    };\n\n    const viewportSize = this._viewport.getViewportSize();\n\n    const dataLength = this._viewport.getDataLength();\n\n    let scrollOffset = this._viewport.measureScrollOffset(); // Prevent NaN as result when dividing by zero.\n\n\n    let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0; // If user scrolls to the bottom of the list and data changes to a smaller list\n\n    if (newRange.end > dataLength) {\n      // We have to recalculate the first visible index based on new data length and viewport size.\n      const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n      const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems)); // If first visible index changed we must update scroll offset to handle start/end buffers\n      // Current range must also be adjusted to cover the new position (bottom of new list).\n\n      if (firstVisibleIndex != newVisibleIndex) {\n        firstVisibleIndex = newVisibleIndex;\n        scrollOffset = newVisibleIndex * this._itemSize;\n        newRange.start = Math.floor(firstVisibleIndex);\n      }\n\n      newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n    }\n\n    const startBuffer = scrollOffset - newRange.start * this._itemSize;\n\n    if (startBuffer < this._minBufferPx && newRange.start != 0) {\n      const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n      newRange.start = Math.max(0, newRange.start - expandStart);\n      newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n    } else {\n      const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n\n      if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n        const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n\n        if (expandEnd > 0) {\n          newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n          newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n        }\n      }\n    }\n\n    this._viewport.setRenderedRange(newRange);\n\n    this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n\n    this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n  }\n\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n *     `FixedSizeVirtualScrollStrategy` from.\n */\n\n\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n  return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\n\n\nclass CdkFixedSizeVirtualScroll {\n  constructor() {\n    this._itemSize = 20;\n    this._minBufferPx = 100;\n    this._maxBufferPx = 200;\n    /** The scroll strategy used by this directive. */\n\n    this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n  /** The size of the items in the list (in pixels). */\n\n\n  get itemSize() {\n    return this._itemSize;\n  }\n\n  set itemSize(value) {\n    this._itemSize = coerceNumberProperty(value);\n  }\n  /**\n   * The minimum amount of buffer rendered beyond the viewport (in pixels).\n   * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n   */\n\n\n  get minBufferPx() {\n    return this._minBufferPx;\n  }\n\n  set minBufferPx(value) {\n    this._minBufferPx = coerceNumberProperty(value);\n  }\n  /**\n   * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n   */\n\n\n  get maxBufferPx() {\n    return this._maxBufferPx;\n  }\n\n  set maxBufferPx(value) {\n    this._maxBufferPx = coerceNumberProperty(value);\n  }\n\n  ngOnChanges() {\n    this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n\n}\n\nCdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) {\n  return new (t || CdkFixedSizeVirtualScroll)();\n};\n\nCdkFixedSizeVirtualScroll.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkFixedSizeVirtualScroll,\n  selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]],\n  inputs: {\n    itemSize: \"itemSize\",\n    minBufferPx: \"minBufferPx\",\n    maxBufferPx: \"maxBufferPx\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: VIRTUAL_SCROLL_STRATEGY,\n    useFactory: _fixedSizeVirtualScrollStrategyFactory,\n    deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n  }]), i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n    type: Directive,\n    args: [{\n      selector: 'cdk-virtual-scroll-viewport[itemSize]',\n      providers: [{\n        provide: VIRTUAL_SCROLL_STRATEGY,\n        useFactory: _fixedSizeVirtualScrollStrategyFactory,\n        deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n      }]\n    }]\n  }], null, {\n    itemSize: [{\n      type: Input\n    }],\n    minBufferPx: [{\n      type: Input\n    }],\n    maxBufferPx: [{\n      type: Input\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Time in ms to throttle the scrolling events by default. */\n\n\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\n\nclass ScrollDispatcher {\n  constructor(_ngZone, _platform, document) {\n    this._ngZone = _ngZone;\n    this._platform = _platform;\n    /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n\n    this._scrolled = new Subject();\n    /** Keeps track of the global `scroll` and `resize` subscriptions. */\n\n    this._globalSubscription = null;\n    /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n\n    this._scrolledCount = 0;\n    /**\n     * Map of all the scrollable references that are registered with the service and their\n     * scroll event subscriptions.\n     */\n\n    this.scrollContainers = new Map();\n    this._document = document;\n  }\n  /**\n   * Registers a scrollable instance with the service and listens for its scrolled events. When the\n   * scrollable is scrolled, the service emits the event to its scrolled observable.\n   * @param scrollable Scrollable instance to be registered.\n   */\n\n\n  register(scrollable) {\n    if (!this.scrollContainers.has(scrollable)) {\n      this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n    }\n  }\n  /**\n   * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n   * @param scrollable Scrollable instance to be deregistered.\n   */\n\n\n  deregister(scrollable) {\n    const scrollableReference = this.scrollContainers.get(scrollable);\n\n    if (scrollableReference) {\n      scrollableReference.unsubscribe();\n      this.scrollContainers.delete(scrollable);\n    }\n  }\n  /**\n   * Returns an observable that emits an event whenever any of the registered Scrollable\n   * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n   * to override the default \"throttle\" time.\n   *\n   * **Note:** in order to avoid hitting change detection for every scroll event,\n   * all of the events emitted from this stream will be run outside the Angular zone.\n   * If you need to update any data bindings as a result of a scroll event, you have\n   * to run the callback using `NgZone.run`.\n   */\n\n\n  scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n    if (!this._platform.isBrowser) {\n      return of();\n    }\n\n    return new Observable(observer => {\n      if (!this._globalSubscription) {\n        this._addGlobalListener();\n      } // In the case of a 0ms delay, use an observable without auditTime\n      // since it does add a perceptible delay in processing overhead.\n\n\n      const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer);\n      this._scrolledCount++;\n      return () => {\n        subscription.unsubscribe();\n        this._scrolledCount--;\n\n        if (!this._scrolledCount) {\n          this._removeGlobalListener();\n        }\n      };\n    });\n  }\n\n  ngOnDestroy() {\n    this._removeGlobalListener();\n\n    this.scrollContainers.forEach((_, container) => this.deregister(container));\n\n    this._scrolled.complete();\n  }\n  /**\n   * Returns an observable that emits whenever any of the\n   * scrollable ancestors of an element are scrolled.\n   * @param elementOrElementRef Element whose ancestors to listen for.\n   * @param auditTimeInMs Time to throttle the scroll events.\n   */\n\n\n  ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n    const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n    return this.scrolled(auditTimeInMs).pipe(filter(target => {\n      return !target || ancestors.indexOf(target) > -1;\n    }));\n  }\n  /** Returns all registered Scrollables that contain the provided element. */\n\n\n  getAncestorScrollContainers(elementOrElementRef) {\n    const scrollingContainers = [];\n    this.scrollContainers.forEach((_subscription, scrollable) => {\n      if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n        scrollingContainers.push(scrollable);\n      }\n    });\n    return scrollingContainers;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    return this._document.defaultView || window;\n  }\n  /** Returns true if the element is contained within the provided Scrollable. */\n\n\n  _scrollableContainsElement(scrollable, elementOrElementRef) {\n    let element = coerceElement(elementOrElementRef);\n    let scrollableElement = scrollable.getElementRef().nativeElement; // Traverse through the element parents until we reach null, checking if any of the elements\n    // are the scrollable's element.\n\n    do {\n      if (element == scrollableElement) {\n        return true;\n      }\n    } while (element = element.parentElement);\n\n    return false;\n  }\n  /** Sets up the global scroll listeners. */\n\n\n  _addGlobalListener() {\n    this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n      const window = this._getWindow();\n\n      return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n    });\n  }\n  /** Cleans up the global scroll listener. */\n\n\n  _removeGlobalListener() {\n    if (this._globalSubscription) {\n      this._globalSubscription.unsubscribe();\n\n      this._globalSubscription = null;\n    }\n  }\n\n}\n\nScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) {\n  return new (t || ScrollDispatcher)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT, 8));\n};\n\nScrollDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ScrollDispatcher,\n  factory: ScrollDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }, {\n      type: i1.Platform\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\n\n\nclass CdkScrollable {\n  constructor(elementRef, scrollDispatcher, ngZone, dir) {\n    this.elementRef = elementRef;\n    this.scrollDispatcher = scrollDispatcher;\n    this.ngZone = ngZone;\n    this.dir = dir;\n    this._destroyed = new Subject();\n    this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n  }\n\n  ngOnInit() {\n    this.scrollDispatcher.register(this);\n  }\n\n  ngOnDestroy() {\n    this.scrollDispatcher.deregister(this);\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n  }\n  /** Returns observable that emits when a scroll event is fired on the host element. */\n\n\n  elementScrolled() {\n    return this._elementScrolled;\n  }\n  /** Gets the ElementRef for the viewport. */\n\n\n  getElementRef() {\n    return this.elementRef;\n  }\n  /**\n   * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n   * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param options specified the offsets to scroll to.\n   */\n\n\n  scrollTo(options) {\n    const el = this.elementRef.nativeElement;\n    const isRtl = this.dir && this.dir.value == 'rtl'; // Rewrite start & end offsets as right or left offsets.\n\n    if (options.left == null) {\n      options.left = isRtl ? options.end : options.start;\n    }\n\n    if (options.right == null) {\n      options.right = isRtl ? options.start : options.end;\n    } // Rewrite the bottom offset as a top offset.\n\n\n    if (options.bottom != null) {\n      options.top = el.scrollHeight - el.clientHeight - options.bottom;\n    } // Rewrite the right offset as a left offset.\n\n\n    if (isRtl && getRtlScrollAxisType() != 0\n    /* NORMAL */\n    ) {\n      if (options.left != null) {\n        options.right = el.scrollWidth - el.clientWidth - options.left;\n      }\n\n      if (getRtlScrollAxisType() == 2\n      /* INVERTED */\n      ) {\n        options.left = options.right;\n      } else if (getRtlScrollAxisType() == 1\n      /* NEGATED */\n      ) {\n        options.left = options.right ? -options.right : options.right;\n      }\n    } else {\n      if (options.right != null) {\n        options.left = el.scrollWidth - el.clientWidth - options.right;\n      }\n    }\n\n    this._applyScrollToOptions(options);\n  }\n\n  _applyScrollToOptions(options) {\n    const el = this.elementRef.nativeElement;\n\n    if (supportsScrollBehavior()) {\n      el.scrollTo(options);\n    } else {\n      if (options.top != null) {\n        el.scrollTop = options.top;\n      }\n\n      if (options.left != null) {\n        el.scrollLeft = options.left;\n      }\n    }\n  }\n  /**\n   * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n   * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n   * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param from The edge to measure from.\n   */\n\n\n  measureScrollOffset(from) {\n    const LEFT = 'left';\n    const RIGHT = 'right';\n    const el = this.elementRef.nativeElement;\n\n    if (from == 'top') {\n      return el.scrollTop;\n    }\n\n    if (from == 'bottom') {\n      return el.scrollHeight - el.clientHeight - el.scrollTop;\n    } // Rewrite start & end as left or right offsets.\n\n\n    const isRtl = this.dir && this.dir.value == 'rtl';\n\n    if (from == 'start') {\n      from = isRtl ? RIGHT : LEFT;\n    } else if (from == 'end') {\n      from = isRtl ? LEFT : RIGHT;\n    }\n\n    if (isRtl && getRtlScrollAxisType() == 2\n    /* INVERTED */\n    ) {\n      // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      } else {\n        return el.scrollLeft;\n      }\n    } else if (isRtl && getRtlScrollAxisType() == 1\n    /* NEGATED */\n    ) {\n      // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft + el.scrollWidth - el.clientWidth;\n      } else {\n        return -el.scrollLeft;\n      }\n    } else {\n      // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n      // (scrollWidth - clientWidth) when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft;\n      } else {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      }\n    }\n  }\n\n}\n\nCdkScrollable.ɵfac = function CdkScrollable_Factory(t) {\n  return new (t || CdkScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n};\n\nCdkScrollable.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkScrollable,\n  selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollable, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-scrollable], [cdkScrollable]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: ScrollDispatcher\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i2.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Time in ms to throttle the resize events by default. */\n\n\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\n\nclass ViewportRuler {\n  constructor(_platform, ngZone, document) {\n    this._platform = _platform;\n    /** Stream of viewport change events. */\n\n    this._change = new Subject();\n    /** Event listener that will be used to handle the viewport change events. */\n\n    this._changeListener = event => {\n      this._change.next(event);\n    };\n\n    this._document = document;\n    ngZone.runOutsideAngular(() => {\n      if (_platform.isBrowser) {\n        const window = this._getWindow(); // Note that bind the events ourselves, rather than going through something like RxJS's\n        // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n\n\n        window.addEventListener('resize', this._changeListener);\n        window.addEventListener('orientationchange', this._changeListener);\n      } // Clear the cached position so that the viewport is re-measured next time it is required.\n      // We don't need to keep track of the subscription, because it is completed on destroy.\n\n\n      this.change().subscribe(() => this._viewportSize = null);\n    });\n  }\n\n  ngOnDestroy() {\n    if (this._platform.isBrowser) {\n      const window = this._getWindow();\n\n      window.removeEventListener('resize', this._changeListener);\n      window.removeEventListener('orientationchange', this._changeListener);\n    }\n\n    this._change.complete();\n  }\n  /** Returns the viewport's width and height. */\n\n\n  getViewportSize() {\n    if (!this._viewportSize) {\n      this._updateViewportSize();\n    }\n\n    const output = {\n      width: this._viewportSize.width,\n      height: this._viewportSize.height\n    }; // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n\n    if (!this._platform.isBrowser) {\n      this._viewportSize = null;\n    }\n\n    return output;\n  }\n  /** Gets a ClientRect for the viewport's bounds. */\n\n\n  getViewportRect() {\n    // Use the document element's bounding rect rather than the window scroll properties\n    // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n    // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n    // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n    // can disagree when the page is pinch-zoomed (on devices that support touch).\n    // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n    // We use the documentElement instead of the body because, by default (without a css reset)\n    // browsers typically give the document body an 8px margin, which is not included in\n    // getBoundingClientRect().\n    const scrollPosition = this.getViewportScrollPosition();\n    const {\n      width,\n      height\n    } = this.getViewportSize();\n    return {\n      top: scrollPosition.top,\n      left: scrollPosition.left,\n      bottom: scrollPosition.top + height,\n      right: scrollPosition.left + width,\n      height,\n      width\n    };\n  }\n  /** Gets the (top, left) scroll position of the viewport. */\n\n\n  getViewportScrollPosition() {\n    // While we can get a reference to the fake document\n    // during SSR, it doesn't have getBoundingClientRect.\n    if (!this._platform.isBrowser) {\n      return {\n        top: 0,\n        left: 0\n      };\n    } // The top-left-corner of the viewport is determined by the scroll position of the document\n    // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n    // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n    // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n    // `document.documentElement` works consistently, where the `top` and `left` values will\n    // equal negative the scroll position.\n\n\n    const document = this._document;\n\n    const window = this._getWindow();\n\n    const documentElement = document.documentElement;\n    const documentRect = documentElement.getBoundingClientRect();\n    const top = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0;\n    const left = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0;\n    return {\n      top,\n      left\n    };\n  }\n  /**\n   * Returns a stream that emits whenever the size of the viewport changes.\n   * This stream emits outside of the Angular zone.\n   * @param throttleTime Time in milliseconds to throttle the stream.\n   */\n\n\n  change(throttleTime = DEFAULT_RESIZE_TIME) {\n    return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    return this._document.defaultView || window;\n  }\n  /** Updates the cached viewport size. */\n\n\n  _updateViewportSize() {\n    const window = this._getWindow();\n\n    this._viewportSize = this._platform.isBrowser ? {\n      width: window.innerWidth,\n      height: window.innerHeight\n    } : {\n      width: 0,\n      height: 0\n    };\n  }\n\n}\n\nViewportRuler.ɵfac = function ViewportRuler_Factory(t) {\n  return new (t || ViewportRuler)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT, 8));\n};\n\nViewportRuler.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ViewportRuler,\n  factory: ViewportRuler.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ViewportRuler, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Checks if the given ranges are equal. */\n\n\nfunction rangesEqual(r1, r2) {\n  return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\n\n\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\n\nclass CdkVirtualScrollViewport extends CdkScrollable {\n  constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n    super(elementRef, scrollDispatcher, ngZone, dir);\n    this.elementRef = elementRef;\n    this._changeDetectorRef = _changeDetectorRef;\n    this._scrollStrategy = _scrollStrategy;\n    /** Emits when the viewport is detached from a CdkVirtualForOf. */\n\n    this._detachedSubject = new Subject();\n    /** Emits when the rendered range changes. */\n\n    this._renderedRangeSubject = new Subject();\n    this._orientation = 'vertical';\n    this._appendOnly = false; // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n    // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n    // depending on how the strategy calculates the scrolled index, it may come at a cost to\n    // performance.\n\n    /** Emits when the index of the first element visible in the viewport changes. */\n\n    this.scrolledIndexChange = new Observable(observer => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n    /** A stream that emits whenever the rendered range changes. */\n\n    this.renderedRangeStream = this._renderedRangeSubject;\n    /**\n     * The total size of all content (in pixels), including content that is not currently rendered.\n     */\n\n    this._totalContentSize = 0;\n    /** A string representing the `style.width` property value to be used for the spacer element. */\n\n    this._totalContentWidth = '';\n    /** A string representing the `style.height` property value to be used for the spacer element. */\n\n    this._totalContentHeight = '';\n    /** The currently rendered range of indices. */\n\n    this._renderedRange = {\n      start: 0,\n      end: 0\n    };\n    /** The length of the data bound to this viewport (in number of items). */\n\n    this._dataLength = 0;\n    /** The size of the viewport (in pixels). */\n\n    this._viewportSize = 0;\n    /** The last rendered content offset that was set. */\n\n    this._renderedContentOffset = 0;\n    /**\n     * Whether the last rendered content offset was to the end of the content (and therefore needs to\n     * be rewritten as an offset to the start of the content).\n     */\n\n    this._renderedContentOffsetNeedsRewrite = false;\n    /** Whether there is a pending change detection cycle. */\n\n    this._isChangeDetectionPending = false;\n    /** A list of functions to run after the next change detection cycle. */\n\n    this._runAfterChangeDetection = [];\n    /** Subscription to changes in the viewport size. */\n\n    this._viewportChanges = Subscription.EMPTY;\n\n    if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n    }\n\n    this._viewportChanges = viewportRuler.change().subscribe(() => {\n      this.checkViewportSize();\n    });\n  }\n  /** The direction the viewport scrolls. */\n\n\n  get orientation() {\n    return this._orientation;\n  }\n\n  set orientation(orientation) {\n    if (this._orientation !== orientation) {\n      this._orientation = orientation;\n\n      this._calculateSpacerSize();\n    }\n  }\n  /**\n   * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n   * will be removed.\n   */\n\n\n  get appendOnly() {\n    return this._appendOnly;\n  }\n\n  set appendOnly(value) {\n    this._appendOnly = coerceBooleanProperty(value);\n  }\n\n  ngOnInit() {\n    super.ngOnInit(); // It's still too early to measure the viewport at this point. Deferring with a promise allows\n    // the Viewport to be rendered with the correct size before we measure. We run this outside the\n    // zone to avoid causing more change detection cycles. We handle the change detection loop\n    // ourselves instead.\n\n    this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n      this._measureViewportSize();\n\n      this._scrollStrategy.attach(this);\n\n      this.elementScrolled().pipe( // Start off with a fake scroll event so we properly detect our initial position.\n      startWith(null), // Collect multiple events into one until the next animation frame. This way if\n      // there are multiple scroll events in the same frame we only need to recheck\n      // our layout once.\n      auditTime(0, SCROLL_SCHEDULER)).subscribe(() => this._scrollStrategy.onContentScrolled());\n\n      this._markChangeDetectionNeeded();\n    }));\n  }\n\n  ngOnDestroy() {\n    this.detach();\n\n    this._scrollStrategy.detach(); // Complete all subjects\n\n\n    this._renderedRangeSubject.complete();\n\n    this._detachedSubject.complete();\n\n    this._viewportChanges.unsubscribe();\n\n    super.ngOnDestroy();\n  }\n  /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n\n\n  attach(forOf) {\n    if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('CdkVirtualScrollViewport is already attached.');\n    } // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n    // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n    // change detection loop ourselves.\n\n\n    this.ngZone.runOutsideAngular(() => {\n      this._forOf = forOf;\n\n      this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n        const newLength = data.length;\n\n        if (newLength !== this._dataLength) {\n          this._dataLength = newLength;\n\n          this._scrollStrategy.onDataLengthChanged();\n        }\n\n        this._doChangeDetection();\n      });\n    });\n  }\n  /** Detaches the current `CdkVirtualForOf`. */\n\n\n  detach() {\n    this._forOf = null;\n\n    this._detachedSubject.next();\n  }\n  /** Gets the length of the data bound to this viewport (in number of items). */\n\n\n  getDataLength() {\n    return this._dataLength;\n  }\n  /** Gets the size of the viewport (in pixels). */\n\n\n  getViewportSize() {\n    return this._viewportSize;\n  } // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n  // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n  // setting it to something else, but its error prone and should probably be split into\n  // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n\n  /** Get the current rendered range of items. */\n\n\n  getRenderedRange() {\n    return this._renderedRange;\n  }\n  /**\n   * Sets the total size of all content (in pixels), including content that is not currently\n   * rendered.\n   */\n\n\n  setTotalContentSize(size) {\n    if (this._totalContentSize !== size) {\n      this._totalContentSize = size;\n\n      this._calculateSpacerSize();\n\n      this._markChangeDetectionNeeded();\n    }\n  }\n  /** Sets the currently rendered range of indices. */\n\n\n  setRenderedRange(range) {\n    if (!rangesEqual(this._renderedRange, range)) {\n      if (this.appendOnly) {\n        range = {\n          start: 0,\n          end: Math.max(this._renderedRange.end, range.end)\n        };\n      }\n\n      this._renderedRangeSubject.next(this._renderedRange = range);\n\n      this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n    }\n  }\n  /**\n   * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n   */\n\n\n  getOffsetToRenderedContentStart() {\n    return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n  }\n  /**\n   * Sets the offset from the start of the viewport to either the start or end of the rendered data\n   * (in pixels).\n   */\n\n\n  setRenderedContentOffset(offset, to = 'to-start') {\n    // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n    // in the negative direction.\n    const isRtl = this.dir && this.dir.value == 'rtl';\n    const isHorizontal = this.orientation == 'horizontal';\n    const axis = isHorizontal ? 'X' : 'Y';\n    const axisDirection = isHorizontal && isRtl ? -1 : 1;\n    let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n    this._renderedContentOffset = offset;\n\n    if (to === 'to-end') {\n      transform += ` translate${axis}(-100%)`; // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n      // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n      // expand upward).\n\n      this._renderedContentOffsetNeedsRewrite = true;\n    }\n\n    if (this._renderedContentTransform != transform) {\n      // We know this value is safe because we parse `offset` with `Number()` before passing it\n      // into the string.\n      this._renderedContentTransform = transform;\n\n      this._markChangeDetectionNeeded(() => {\n        if (this._renderedContentOffsetNeedsRewrite) {\n          this._renderedContentOffset -= this.measureRenderedContentSize();\n          this._renderedContentOffsetNeedsRewrite = false;\n          this.setRenderedContentOffset(this._renderedContentOffset);\n        } else {\n          this._scrollStrategy.onRenderedOffsetChanged();\n        }\n      });\n    }\n  }\n  /**\n   * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n   * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n   * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n   * @param offset The offset to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n\n\n  scrollToOffset(offset, behavior = 'auto') {\n    const options = {\n      behavior\n    };\n\n    if (this.orientation === 'horizontal') {\n      options.start = offset;\n    } else {\n      options.top = offset;\n    }\n\n    this.scrollTo(options);\n  }\n  /**\n   * Scrolls to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n\n\n  scrollToIndex(index, behavior = 'auto') {\n    this._scrollStrategy.scrollToIndex(index, behavior);\n  }\n  /**\n   * Gets the current scroll offset from the start of the viewport (in pixels).\n   * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n   *     in horizontal mode.\n   */\n\n\n  measureScrollOffset(from) {\n    return from ? super.measureScrollOffset(from) : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n  }\n  /** Measure the combined size of all of the rendered items. */\n\n\n  measureRenderedContentSize() {\n    const contentEl = this._contentWrapper.nativeElement;\n    return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n  }\n  /**\n   * Measure the total combined size of the given range. Throws if the range includes items that are\n   * not rendered.\n   */\n\n\n  measureRangeSize(range) {\n    if (!this._forOf) {\n      return 0;\n    }\n\n    return this._forOf.measureRangeSize(range, this.orientation);\n  }\n  /** Update the viewport dimensions and re-render. */\n\n\n  checkViewportSize() {\n    // TODO: Cleanup later when add logic for handling content resize\n    this._measureViewportSize();\n\n    this._scrollStrategy.onDataLengthChanged();\n  }\n  /** Measure the viewport size. */\n\n\n  _measureViewportSize() {\n    const viewportEl = this.elementRef.nativeElement;\n    this._viewportSize = this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n  }\n  /** Queue up change detection to run. */\n\n\n  _markChangeDetectionNeeded(runAfter) {\n    if (runAfter) {\n      this._runAfterChangeDetection.push(runAfter);\n    } // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n    // properties sequentially we only have to run `_doChangeDetection` once at the end.\n\n\n    if (!this._isChangeDetectionPending) {\n      this._isChangeDetectionPending = true;\n      this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n        this._doChangeDetection();\n      }));\n    }\n  }\n  /** Run change detection. */\n\n\n  _doChangeDetection() {\n    this._isChangeDetectionPending = false; // Apply the content transform. The transform can't be set via an Angular binding because\n    // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n    // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n    // the `Number` function first to coerce it to a numeric value.\n\n    this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform; // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n    // from the root, since the repeated items are content projected in. Calling `detectChanges`\n    // instead does not properly check the projected content.\n\n    this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n    const runAfterChangeDetection = this._runAfterChangeDetection;\n    this._runAfterChangeDetection = [];\n\n    for (const fn of runAfterChangeDetection) {\n      fn();\n    }\n  }\n  /** Calculates the `style.width` and `style.height` for the spacer element. */\n\n\n  _calculateSpacerSize() {\n    this._totalContentHeight = this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n    this._totalContentWidth = this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n  }\n\n}\n\nCdkVirtualScrollViewport.ɵfac = function CdkVirtualScrollViewport_Factory(t) {\n  return new (t || CdkVirtualScrollViewport)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(ViewportRuler));\n};\n\nCdkVirtualScrollViewport.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: CdkVirtualScrollViewport,\n  selectors: [[\"cdk-virtual-scroll-viewport\"]],\n  viewQuery: function CdkVirtualScrollViewport_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 7);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentWrapper = _t.first);\n    }\n  },\n  hostAttrs: [1, \"cdk-virtual-scroll-viewport\"],\n  hostVars: 4,\n  hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n    }\n  },\n  inputs: {\n    orientation: \"orientation\",\n    appendOnly: \"appendOnly\"\n  },\n  outputs: {\n    scrolledIndexChange: \"scrolledIndexChange\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkScrollable,\n    useExisting: CdkVirtualScrollViewport\n  }]), i0.ɵɵInheritDefinitionFeature],\n  ngContentSelectors: _c1,\n  decls: 4,\n  vars: 4,\n  consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]],\n  template: function CdkVirtualScrollViewport_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵprojection(2);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(3, \"div\", 2);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(3);\n      i0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n    }\n  },\n  styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n    type: Component,\n    args: [{\n      selector: 'cdk-virtual-scroll-viewport',\n      host: {\n        'class': 'cdk-virtual-scroll-viewport',\n        '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n        '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n      },\n      encapsulation: ViewEncapsulation.None,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      providers: [{\n        provide: CdkScrollable,\n        useExisting: CdkVirtualScrollViewport\n      }],\n      template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\",\n      styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [VIRTUAL_SCROLL_STRATEGY]\n      }]\n    }, {\n      type: i2.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }, {\n      type: ScrollDispatcher\n    }, {\n      type: ViewportRuler\n    }];\n  }, {\n    orientation: [{\n      type: Input\n    }],\n    appendOnly: [{\n      type: Input\n    }],\n    scrolledIndexChange: [{\n      type: Output\n    }],\n    _contentWrapper: [{\n      type: ViewChild,\n      args: ['contentWrapper', {\n        static: true\n      }]\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\n\n\nfunction getOffset(orientation, direction, node) {\n  const el = node;\n\n  if (!el.getBoundingClientRect) {\n    return 0;\n  }\n\n  const rect = el.getBoundingClientRect();\n\n  if (orientation === 'horizontal') {\n    return direction === 'start' ? rect.left : rect.right;\n  }\n\n  return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\n\n\nclass CdkVirtualForOf {\n  constructor(\n  /** The view container to add items to. */\n  _viewContainerRef,\n  /** The template to use when stamping out new items. */\n  _template,\n  /** The set of available differs. */\n  _differs,\n  /** The strategy used to render items in the virtual scroll viewport. */\n  _viewRepeater,\n  /** The virtual scrolling viewport that these items are being rendered in. */\n  _viewport, ngZone) {\n    this._viewContainerRef = _viewContainerRef;\n    this._template = _template;\n    this._differs = _differs;\n    this._viewRepeater = _viewRepeater;\n    this._viewport = _viewport;\n    /** Emits when the rendered view of the data changes. */\n\n    this.viewChange = new Subject();\n    /** Subject that emits when a new DataSource instance is given. */\n\n    this._dataSourceChanges = new Subject();\n    /** Emits whenever the data in the current DataSource changes. */\n\n    this.dataStream = this._dataSourceChanges.pipe( // Start off with null `DataSource`.\n    startWith(null), // Bundle up the previous and current data sources so we can work with both.\n    pairwise(), // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n    // new one, passing back a stream of data changes which we run through `switchMap` to give\n    // us a data stream that emits the latest data from whatever the current `DataSource` is.\n    switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), // Replay the last emitted data when someone subscribes.\n    shareReplay(1));\n    /** The differ used to calculate changes to the data. */\n\n    this._differ = null;\n    /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n\n    this._needsUpdate = false;\n    this._destroyed = new Subject();\n    this.dataStream.subscribe(data => {\n      this._data = data;\n\n      this._onRenderedDataChange();\n    });\n\n    this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n      this._renderedRange = range;\n      ngZone.run(() => this.viewChange.next(this._renderedRange));\n\n      this._onRenderedDataChange();\n    });\n\n    this._viewport.attach(this);\n  }\n  /** The DataSource to display. */\n\n\n  get cdkVirtualForOf() {\n    return this._cdkVirtualForOf;\n  }\n\n  set cdkVirtualForOf(value) {\n    this._cdkVirtualForOf = value;\n\n    if (isDataSource(value)) {\n      this._dataSourceChanges.next(value);\n    } else {\n      // If value is an an NgIterable, convert it to an array.\n      this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n    }\n  }\n  /**\n   * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n   * the item and produces a value to be used as the item's identity when tracking changes.\n   */\n\n\n  get cdkVirtualForTrackBy() {\n    return this._cdkVirtualForTrackBy;\n  }\n\n  set cdkVirtualForTrackBy(fn) {\n    this._needsUpdate = true;\n    this._cdkVirtualForTrackBy = fn ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) : undefined;\n  }\n  /** The template used to stamp out new elements. */\n\n\n  set cdkVirtualForTemplate(value) {\n    if (value) {\n      this._needsUpdate = true;\n      this._template = value;\n    }\n  }\n  /**\n   * The size of the cache used to store templates that are not being used for re-use later.\n   * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n   */\n\n\n  get cdkVirtualForTemplateCacheSize() {\n    return this._viewRepeater.viewCacheSize;\n  }\n\n  set cdkVirtualForTemplateCacheSize(size) {\n    this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n  }\n  /**\n   * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n   * in the specified range. Throws an error if the range includes items that are not currently\n   * rendered.\n   */\n\n\n  measureRangeSize(range, orientation) {\n    if (range.start >= range.end) {\n      return 0;\n    }\n\n    if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Error: attempted to measure an item that isn't rendered.`);\n    } // The index into the list of rendered views for the first item in the range.\n\n\n    const renderedStartIndex = range.start - this._renderedRange.start; // The length of the range we're measuring.\n\n    const rangeLen = range.end - range.start; // Loop over all the views, find the first and land node and compute the size by subtracting\n    // the top of the first node from the bottom of the last one.\n\n    let firstNode;\n    let lastNode; // Find the first node by starting from the beginning and going forwards.\n\n    for (let i = 0; i < rangeLen; i++) {\n      const view = this._viewContainerRef.get(i + renderedStartIndex);\n\n      if (view && view.rootNodes.length) {\n        firstNode = lastNode = view.rootNodes[0];\n        break;\n      }\n    } // Find the last node by starting from the end and going backwards.\n\n\n    for (let i = rangeLen - 1; i > -1; i--) {\n      const view = this._viewContainerRef.get(i + renderedStartIndex);\n\n      if (view && view.rootNodes.length) {\n        lastNode = view.rootNodes[view.rootNodes.length - 1];\n        break;\n      }\n    }\n\n    return firstNode && lastNode ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n  }\n\n  ngDoCheck() {\n    if (this._differ && this._needsUpdate) {\n      // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n      // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n      // changing (need to do this diff).\n      const changes = this._differ.diff(this._renderedItems);\n\n      if (!changes) {\n        this._updateContext();\n      } else {\n        this._applyChanges(changes);\n      }\n\n      this._needsUpdate = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this._viewport.detach();\n\n    this._dataSourceChanges.next(undefined);\n\n    this._dataSourceChanges.complete();\n\n    this.viewChange.complete();\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n\n    this._viewRepeater.detach();\n  }\n  /** React to scroll state changes in the viewport. */\n\n\n  _onRenderedDataChange() {\n    if (!this._renderedRange) {\n      return;\n    }\n\n    this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n\n    if (!this._differ) {\n      // Use a wrapper function for the `trackBy` so any new values are\n      // picked up automatically without having to recreate the differ.\n      this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n        return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n      });\n    }\n\n    this._needsUpdate = true;\n  }\n  /** Swap out one `DataSource` for another. */\n\n\n  _changeDataSource(oldDs, newDs) {\n    if (oldDs) {\n      oldDs.disconnect(this);\n    }\n\n    this._needsUpdate = true;\n    return newDs ? newDs.connect(this) : of();\n  }\n  /** Update the `CdkVirtualForOfContext` for all views. */\n\n\n  _updateContext() {\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n\n    while (i--) {\n      const view = this._viewContainerRef.get(i);\n\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n\n      this._updateComputedContextProperties(view.context);\n\n      view.detectChanges();\n    }\n  }\n  /** Apply changes to the DOM. */\n\n\n  _applyChanges(changes) {\n    this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item); // Update $implicit for any items that had an identity change.\n\n\n    changes.forEachIdentityChange(record => {\n      const view = this._viewContainerRef.get(record.currentIndex);\n\n      view.context.$implicit = record.item;\n    }); // Update the context variables on all items.\n\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n\n    while (i--) {\n      const view = this._viewContainerRef.get(i);\n\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n\n      this._updateComputedContextProperties(view.context);\n    }\n  }\n  /** Update the computed properties on the `CdkVirtualForOfContext`. */\n\n\n  _updateComputedContextProperties(context) {\n    context.first = context.index === 0;\n    context.last = context.index === context.count - 1;\n    context.even = context.index % 2 === 0;\n    context.odd = !context.even;\n  }\n\n  _getEmbeddedViewArgs(record, index) {\n    // Note that it's important that we insert the item directly at the proper index,\n    // rather than inserting it and the moving it in place, because if there's a directive\n    // on the same node that injects the `ViewContainerRef`, Angular will insert another\n    // comment node which can throw off the move when it's being repeated for all items.\n    return {\n      templateRef: this._template,\n      context: {\n        $implicit: record.item,\n        // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n        // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n        cdkVirtualForOf: this._cdkVirtualForOf,\n        index: -1,\n        count: -1,\n        first: false,\n        last: false,\n        odd: false,\n        even: false\n      },\n      index\n    };\n  }\n\n}\n\nCdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) {\n  return new (t || CdkVirtualForOf)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), i0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkVirtualForOf.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkVirtualForOf,\n  selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]],\n  inputs: {\n    cdkVirtualForOf: \"cdkVirtualForOf\",\n    cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\",\n    cdkVirtualForTemplate: \"cdkVirtualForTemplate\",\n    cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: _VIEW_REPEATER_STRATEGY,\n    useClass: _RecycleViewRepeaterStrategy\n  }])]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualForOf, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkVirtualFor][cdkVirtualForOf]',\n      providers: [{\n        provide: _VIEW_REPEATER_STRATEGY,\n        useClass: _RecycleViewRepeaterStrategy\n      }]\n    }]\n  }], function () {\n    return [{\n      type: i0.ViewContainerRef\n    }, {\n      type: i0.TemplateRef\n    }, {\n      type: i0.IterableDiffers\n    }, {\n      type: i2$1._RecycleViewRepeaterStrategy,\n      decorators: [{\n        type: Inject,\n        args: [_VIEW_REPEATER_STRATEGY]\n      }]\n    }, {\n      type: CdkVirtualScrollViewport,\n      decorators: [{\n        type: SkipSelf\n      }]\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    cdkVirtualForOf: [{\n      type: Input\n    }],\n    cdkVirtualForTrackBy: [{\n      type: Input\n    }],\n    cdkVirtualForTemplate: [{\n      type: Input\n    }],\n    cdkVirtualForTemplateCacheSize: [{\n      type: Input\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass CdkScrollableModule {}\n\nCdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) {\n  return new (t || CdkScrollableModule)();\n};\n\nCdkScrollableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: CdkScrollableModule\n});\nCdkScrollableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollableModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkScrollable],\n      declarations: [CdkScrollable]\n    }]\n  }], null, null);\n})();\n/**\n * @docs-primary-export\n */\n\n\nclass ScrollingModule {}\n\nScrollingModule.ɵfac = function ScrollingModule_Factory(t) {\n  return new (t || ScrollingModule)();\n};\n\nScrollingModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ScrollingModule\n});\nScrollingModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[BidiModule, PlatformModule, CdkScrollableModule], BidiModule, CdkScrollableModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollingModule, [{\n    type: NgModule,\n    args: [{\n      imports: [BidiModule, PlatformModule, CdkScrollableModule],\n      exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n      declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/scrolling.mjs"],"names":["coerceNumberProperty","coerceElement","coerceBooleanProperty","i0","InjectionToken","forwardRef","Directive","Input","Injectable","Optional","Inject","Component","ViewEncapsulation","ChangeDetectionStrategy","Output","ViewChild","SkipSelf","NgModule","Subject","of","Observable","fromEvent","animationFrameScheduler","asapScheduler","Subscription","isObservable","distinctUntilChanged","auditTime","filter","takeUntil","startWith","pairwise","switchMap","shareReplay","i1","getRtlScrollAxisType","supportsScrollBehavior","PlatformModule","DOCUMENT","i2","BidiModule","i2$1","isDataSource","ArrayDataSource","_VIEW_REPEATER_STRATEGY","_RecycleViewRepeaterStrategy","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","constructor","itemSize","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","pipe","_viewport","_itemSize","_minBufferPx","_maxBufferPx","attach","viewport","_updateTotalContentSize","_updateRenderedRange","detach","complete","updateItemAndBufferSize","ngDevMode","Error","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToIndex","index","behavior","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","start","end","viewportSize","getViewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","Math","ceil","newVisibleIndex","max","min","floor","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","next","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","_scrollStrategy","CdkFixedSizeVirtualScroll","value","ngOnChanges","ɵfac","ɵdir","provide","useFactory","deps","type","args","selector","providers","DEFAULT_SCROLL_TIME","ScrollDispatcher","_ngZone","_platform","document","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","Map","_document","register","scrollable","has","set","elementScrolled","subscribe","deregister","scrollableReference","get","unsubscribe","delete","scrolled","auditTimeInMs","isBrowser","observer","_addGlobalListener","subscription","_removeGlobalListener","ngOnDestroy","forEach","_","container","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","target","indexOf","scrollingContainers","_subscription","_scrollableContainsElement","push","_getWindow","defaultView","window","element","scrollableElement","getElementRef","nativeElement","parentElement","runOutsideAngular","NgZone","Platform","ɵprov","providedIn","undefined","decorators","CdkScrollable","elementRef","scrollDispatcher","ngZone","dir","_destroyed","_elementScrolled","ngOnInit","scrollTo","options","el","isRtl","left","right","bottom","top","scrollHeight","clientHeight","scrollWidth","clientWidth","_applyScrollToOptions","scrollTop","scrollLeft","from","LEFT","RIGHT","ElementRef","Directionality","DEFAULT_RESIZE_TIME","ViewportRuler","_change","_changeListener","event","addEventListener","change","_viewportSize","removeEventListener","_updateViewportSize","output","width","height","getViewportRect","scrollPosition","getViewportScrollPosition","documentElement","documentRect","getBoundingClientRect","body","scrollY","scrollX","throttleTime","innerWidth","innerHeight","rangesEqual","r1","r2","SCROLL_SCHEDULER","requestAnimationFrame","CdkVirtualScrollViewport","_changeDetectorRef","viewportRuler","_detachedSubject","_renderedRangeSubject","_orientation","_appendOnly","Promise","resolve","then","run","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","EMPTY","checkViewportSize","orientation","_calculateSpacerSize","appendOnly","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","data","newLength","length","_doChangeDetection","size","range","getOffsetToRenderedContentStart","offset","to","isHorizontal","axis","axisDirection","transform","Number","_renderedContentTransform","measureRenderedContentSize","contentEl","_contentWrapper","offsetWidth","offsetHeight","measureRangeSize","viewportEl","runAfter","style","markForCheck","runAfterChangeDetection","fn","ChangeDetectorRef","ɵcmp","useExisting","host","encapsulation","None","changeDetection","OnPush","template","styles","static","getOffset","direction","node","rect","CdkVirtualForOf","_viewContainerRef","_template","_differs","_viewRepeater","viewChange","_dataSourceChanges","prev","cur","_changeDataSource","_differ","_needsUpdate","_data","_onRenderedDataChange","cdkVirtualForOf","_cdkVirtualForOf","Array","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","item","cdkVirtualForTemplate","cdkVirtualForTemplateCacheSize","viewCacheSize","renderedStartIndex","rangeLen","firstNode","lastNode","i","view","rootNodes","ngDoCheck","changes","diff","_renderedItems","_updateContext","_applyChanges","slice","find","create","oldDs","newDs","disconnect","connect","count","context","_updateComputedContextProperties","detectChanges","applyChanges","record","_adjustedPreviousIndex","currentIndex","_getEmbeddedViewArgs","forEachIdentityChange","$implicit","first","last","even","odd","templateRef","ViewContainerRef","TemplateRef","IterableDiffers","useClass","CdkScrollableModule","ɵmod","ɵinj","exports","declarations","ScrollingModule","imports"],"mappings":"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","sourcesContent":["import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n    /**\n     * @param itemSize The size of the items in the virtually scrolling list.\n     * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n     * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n     */\n    constructor(itemSize, minBufferPx, maxBufferPx) {\n        this._scrolledIndexChange = new Subject();\n        /** @docs-private Implemented as part of VirtualScrollStrategy. */\n        this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n        /** The attached viewport. */\n        this._viewport = null;\n        this._itemSize = itemSize;\n        this._minBufferPx = minBufferPx;\n        this._maxBufferPx = maxBufferPx;\n    }\n    /**\n     * Attaches this scroll strategy to a viewport.\n     * @param viewport The viewport to attach this strategy to.\n     */\n    attach(viewport) {\n        this._viewport = viewport;\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** Detaches this scroll strategy from the currently attached viewport. */\n    detach() {\n        this._scrolledIndexChange.complete();\n        this._viewport = null;\n    }\n    /**\n     * Update the item size and buffer size.\n     * @param itemSize The size of the items in the virtually scrolling list.\n     * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n     * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n     */\n    updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n        if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n        }\n        this._itemSize = itemSize;\n        this._minBufferPx = minBufferPx;\n        this._maxBufferPx = maxBufferPx;\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onContentScrolled() {\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onDataLengthChanged() {\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onContentRendered() {\n        /* no-op */\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onRenderedOffsetChanged() {\n        /* no-op */\n    }\n    /**\n     * Scroll to the offset for the given index.\n     * @param index The index of the element to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling.\n     */\n    scrollToIndex(index, behavior) {\n        if (this._viewport) {\n            this._viewport.scrollToOffset(index * this._itemSize, behavior);\n        }\n    }\n    /** Update the viewport's total content size. */\n    _updateTotalContentSize() {\n        if (!this._viewport) {\n            return;\n        }\n        this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n    }\n    /** Update the viewport's rendered range. */\n    _updateRenderedRange() {\n        if (!this._viewport) {\n            return;\n        }\n        const renderedRange = this._viewport.getRenderedRange();\n        const newRange = { start: renderedRange.start, end: renderedRange.end };\n        const viewportSize = this._viewport.getViewportSize();\n        const dataLength = this._viewport.getDataLength();\n        let scrollOffset = this._viewport.measureScrollOffset();\n        // Prevent NaN as result when dividing by zero.\n        let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n        // If user scrolls to the bottom of the list and data changes to a smaller list\n        if (newRange.end > dataLength) {\n            // We have to recalculate the first visible index based on new data length and viewport size.\n            const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n            const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n            // If first visible index changed we must update scroll offset to handle start/end buffers\n            // Current range must also be adjusted to cover the new position (bottom of new list).\n            if (firstVisibleIndex != newVisibleIndex) {\n                firstVisibleIndex = newVisibleIndex;\n                scrollOffset = newVisibleIndex * this._itemSize;\n                newRange.start = Math.floor(firstVisibleIndex);\n            }\n            newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n        }\n        const startBuffer = scrollOffset - newRange.start * this._itemSize;\n        if (startBuffer < this._minBufferPx && newRange.start != 0) {\n            const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n            newRange.start = Math.max(0, newRange.start - expandStart);\n            newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n        }\n        else {\n            const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n            if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n                const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n                if (expandEnd > 0) {\n                    newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n                    newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n                }\n            }\n        }\n        this._viewport.setRenderedRange(newRange);\n        this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n        this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n    }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n *     `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n    return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n    constructor() {\n        this._itemSize = 20;\n        this._minBufferPx = 100;\n        this._maxBufferPx = 200;\n        /** The scroll strategy used by this directive. */\n        this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n    /** The size of the items in the list (in pixels). */\n    get itemSize() {\n        return this._itemSize;\n    }\n    set itemSize(value) {\n        this._itemSize = coerceNumberProperty(value);\n    }\n    /**\n     * The minimum amount of buffer rendered beyond the viewport (in pixels).\n     * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n     */\n    get minBufferPx() {\n        return this._minBufferPx;\n    }\n    set minBufferPx(value) {\n        this._minBufferPx = coerceNumberProperty(value);\n    }\n    /**\n     * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n     */\n    get maxBufferPx() {\n        return this._maxBufferPx;\n    }\n    set maxBufferPx(value) {\n        this._maxBufferPx = coerceNumberProperty(value);\n    }\n    ngOnChanges() {\n        this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useFactory: _fixedSizeVirtualScrollStrategyFactory,\n            deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n        },\n    ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'cdk-virtual-scroll-viewport[itemSize]',\n                    providers: [\n                        {\n                            provide: VIRTUAL_SCROLL_STRATEGY,\n                            useFactory: _fixedSizeVirtualScrollStrategyFactory,\n                            deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n                        },\n                    ],\n                }]\n        }], propDecorators: { itemSize: [{\n                type: Input\n            }], minBufferPx: [{\n                type: Input\n            }], maxBufferPx: [{\n                type: Input\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n    constructor(_ngZone, _platform, document) {\n        this._ngZone = _ngZone;\n        this._platform = _platform;\n        /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n        this._scrolled = new Subject();\n        /** Keeps track of the global `scroll` and `resize` subscriptions. */\n        this._globalSubscription = null;\n        /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n        this._scrolledCount = 0;\n        /**\n         * Map of all the scrollable references that are registered with the service and their\n         * scroll event subscriptions.\n         */\n        this.scrollContainers = new Map();\n        this._document = document;\n    }\n    /**\n     * Registers a scrollable instance with the service and listens for its scrolled events. When the\n     * scrollable is scrolled, the service emits the event to its scrolled observable.\n     * @param scrollable Scrollable instance to be registered.\n     */\n    register(scrollable) {\n        if (!this.scrollContainers.has(scrollable)) {\n            this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n        }\n    }\n    /**\n     * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n     * @param scrollable Scrollable instance to be deregistered.\n     */\n    deregister(scrollable) {\n        const scrollableReference = this.scrollContainers.get(scrollable);\n        if (scrollableReference) {\n            scrollableReference.unsubscribe();\n            this.scrollContainers.delete(scrollable);\n        }\n    }\n    /**\n     * Returns an observable that emits an event whenever any of the registered Scrollable\n     * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n     * to override the default \"throttle\" time.\n     *\n     * **Note:** in order to avoid hitting change detection for every scroll event,\n     * all of the events emitted from this stream will be run outside the Angular zone.\n     * If you need to update any data bindings as a result of a scroll event, you have\n     * to run the callback using `NgZone.run`.\n     */\n    scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n        if (!this._platform.isBrowser) {\n            return of();\n        }\n        return new Observable((observer) => {\n            if (!this._globalSubscription) {\n                this._addGlobalListener();\n            }\n            // In the case of a 0ms delay, use an observable without auditTime\n            // since it does add a perceptible delay in processing overhead.\n            const subscription = auditTimeInMs > 0\n                ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n                : this._scrolled.subscribe(observer);\n            this._scrolledCount++;\n            return () => {\n                subscription.unsubscribe();\n                this._scrolledCount--;\n                if (!this._scrolledCount) {\n                    this._removeGlobalListener();\n                }\n            };\n        });\n    }\n    ngOnDestroy() {\n        this._removeGlobalListener();\n        this.scrollContainers.forEach((_, container) => this.deregister(container));\n        this._scrolled.complete();\n    }\n    /**\n     * Returns an observable that emits whenever any of the\n     * scrollable ancestors of an element are scrolled.\n     * @param elementOrElementRef Element whose ancestors to listen for.\n     * @param auditTimeInMs Time to throttle the scroll events.\n     */\n    ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n        const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n        return this.scrolled(auditTimeInMs).pipe(filter(target => {\n            return !target || ancestors.indexOf(target) > -1;\n        }));\n    }\n    /** Returns all registered Scrollables that contain the provided element. */\n    getAncestorScrollContainers(elementOrElementRef) {\n        const scrollingContainers = [];\n        this.scrollContainers.forEach((_subscription, scrollable) => {\n            if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n                scrollingContainers.push(scrollable);\n            }\n        });\n        return scrollingContainers;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        return this._document.defaultView || window;\n    }\n    /** Returns true if the element is contained within the provided Scrollable. */\n    _scrollableContainsElement(scrollable, elementOrElementRef) {\n        let element = coerceElement(elementOrElementRef);\n        let scrollableElement = scrollable.getElementRef().nativeElement;\n        // Traverse through the element parents until we reach null, checking if any of the elements\n        // are the scrollable's element.\n        do {\n            if (element == scrollableElement) {\n                return true;\n            }\n        } while ((element = element.parentElement));\n        return false;\n    }\n    /** Sets up the global scroll listeners. */\n    _addGlobalListener() {\n        this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n            const window = this._getWindow();\n            return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n        });\n    }\n    /** Cleans up the global scroll listener. */\n    _removeGlobalListener() {\n        if (this._globalSubscription) {\n            this._globalSubscription.unsubscribe();\n            this._globalSubscription = null;\n        }\n    }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n    constructor(elementRef, scrollDispatcher, ngZone, dir) {\n        this.elementRef = elementRef;\n        this.scrollDispatcher = scrollDispatcher;\n        this.ngZone = ngZone;\n        this.dir = dir;\n        this._destroyed = new Subject();\n        this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(observer)));\n    }\n    ngOnInit() {\n        this.scrollDispatcher.register(this);\n    }\n    ngOnDestroy() {\n        this.scrollDispatcher.deregister(this);\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n    /** Returns observable that emits when a scroll event is fired on the host element. */\n    elementScrolled() {\n        return this._elementScrolled;\n    }\n    /** Gets the ElementRef for the viewport. */\n    getElementRef() {\n        return this.elementRef;\n    }\n    /**\n     * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n     * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n     * left and right always refer to the left and right side of the scrolling container irrespective\n     * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n     * in an RTL context.\n     * @param options specified the offsets to scroll to.\n     */\n    scrollTo(options) {\n        const el = this.elementRef.nativeElement;\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        // Rewrite start & end offsets as right or left offsets.\n        if (options.left == null) {\n            options.left = isRtl ? options.end : options.start;\n        }\n        if (options.right == null) {\n            options.right = isRtl ? options.start : options.end;\n        }\n        // Rewrite the bottom offset as a top offset.\n        if (options.bottom != null) {\n            options.top =\n                el.scrollHeight - el.clientHeight - options.bottom;\n        }\n        // Rewrite the right offset as a left offset.\n        if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n            if (options.left != null) {\n                options.right =\n                    el.scrollWidth - el.clientWidth - options.left;\n            }\n            if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n                options.left = options.right;\n            }\n            else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n                options.left = options.right ? -options.right : options.right;\n            }\n        }\n        else {\n            if (options.right != null) {\n                options.left =\n                    el.scrollWidth - el.clientWidth - options.right;\n            }\n        }\n        this._applyScrollToOptions(options);\n    }\n    _applyScrollToOptions(options) {\n        const el = this.elementRef.nativeElement;\n        if (supportsScrollBehavior()) {\n            el.scrollTo(options);\n        }\n        else {\n            if (options.top != null) {\n                el.scrollTop = options.top;\n            }\n            if (options.left != null) {\n                el.scrollLeft = options.left;\n            }\n        }\n    }\n    /**\n     * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n     * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n     * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n     * left and right always refer to the left and right side of the scrolling container irrespective\n     * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n     * in an RTL context.\n     * @param from The edge to measure from.\n     */\n    measureScrollOffset(from) {\n        const LEFT = 'left';\n        const RIGHT = 'right';\n        const el = this.elementRef.nativeElement;\n        if (from == 'top') {\n            return el.scrollTop;\n        }\n        if (from == 'bottom') {\n            return el.scrollHeight - el.clientHeight - el.scrollTop;\n        }\n        // Rewrite start & end as left or right offsets.\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        if (from == 'start') {\n            from = isRtl ? RIGHT : LEFT;\n        }\n        else if (from == 'end') {\n            from = isRtl ? LEFT : RIGHT;\n        }\n        if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n            // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n            // 0 when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollWidth - el.clientWidth - el.scrollLeft;\n            }\n            else {\n                return el.scrollLeft;\n            }\n        }\n        else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n            // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n            // 0 when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollLeft + el.scrollWidth - el.clientWidth;\n            }\n            else {\n                return -el.scrollLeft;\n            }\n        }\n        else {\n            // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n            // (scrollWidth - clientWidth) when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollLeft;\n            }\n            else {\n                return el.scrollWidth - el.clientWidth - el.scrollLeft;\n            }\n        }\n    }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-scrollable], [cdkScrollable]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n                    type: Optional\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n    constructor(_platform, ngZone, document) {\n        this._platform = _platform;\n        /** Stream of viewport change events. */\n        this._change = new Subject();\n        /** Event listener that will be used to handle the viewport change events. */\n        this._changeListener = (event) => {\n            this._change.next(event);\n        };\n        this._document = document;\n        ngZone.runOutsideAngular(() => {\n            if (_platform.isBrowser) {\n                const window = this._getWindow();\n                // Note that bind the events ourselves, rather than going through something like RxJS's\n                // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n                window.addEventListener('resize', this._changeListener);\n                window.addEventListener('orientationchange', this._changeListener);\n            }\n            // Clear the cached position so that the viewport is re-measured next time it is required.\n            // We don't need to keep track of the subscription, because it is completed on destroy.\n            this.change().subscribe(() => (this._viewportSize = null));\n        });\n    }\n    ngOnDestroy() {\n        if (this._platform.isBrowser) {\n            const window = this._getWindow();\n            window.removeEventListener('resize', this._changeListener);\n            window.removeEventListener('orientationchange', this._changeListener);\n        }\n        this._change.complete();\n    }\n    /** Returns the viewport's width and height. */\n    getViewportSize() {\n        if (!this._viewportSize) {\n            this._updateViewportSize();\n        }\n        const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n        // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n        if (!this._platform.isBrowser) {\n            this._viewportSize = null;\n        }\n        return output;\n    }\n    /** Gets a ClientRect for the viewport's bounds. */\n    getViewportRect() {\n        // Use the document element's bounding rect rather than the window scroll properties\n        // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n        // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n        // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n        // can disagree when the page is pinch-zoomed (on devices that support touch).\n        // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n        // We use the documentElement instead of the body because, by default (without a css reset)\n        // browsers typically give the document body an 8px margin, which is not included in\n        // getBoundingClientRect().\n        const scrollPosition = this.getViewportScrollPosition();\n        const { width, height } = this.getViewportSize();\n        return {\n            top: scrollPosition.top,\n            left: scrollPosition.left,\n            bottom: scrollPosition.top + height,\n            right: scrollPosition.left + width,\n            height,\n            width,\n        };\n    }\n    /** Gets the (top, left) scroll position of the viewport. */\n    getViewportScrollPosition() {\n        // While we can get a reference to the fake document\n        // during SSR, it doesn't have getBoundingClientRect.\n        if (!this._platform.isBrowser) {\n            return { top: 0, left: 0 };\n        }\n        // The top-left-corner of the viewport is determined by the scroll position of the document\n        // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n        // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n        // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n        // `document.documentElement` works consistently, where the `top` and `left` values will\n        // equal negative the scroll position.\n        const document = this._document;\n        const window = this._getWindow();\n        const documentElement = document.documentElement;\n        const documentRect = documentElement.getBoundingClientRect();\n        const top = -documentRect.top ||\n            document.body.scrollTop ||\n            window.scrollY ||\n            documentElement.scrollTop ||\n            0;\n        const left = -documentRect.left ||\n            document.body.scrollLeft ||\n            window.scrollX ||\n            documentElement.scrollLeft ||\n            0;\n        return { top, left };\n    }\n    /**\n     * Returns a stream that emits whenever the size of the viewport changes.\n     * This stream emits outside of the Angular zone.\n     * @param throttleTime Time in milliseconds to throttle the stream.\n     */\n    change(throttleTime = DEFAULT_RESIZE_TIME) {\n        return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        return this._document.defaultView || window;\n    }\n    /** Updates the cached viewport size. */\n    _updateViewportSize() {\n        const window = this._getWindow();\n        this._viewportSize = this._platform.isBrowser\n            ? { width: window.innerWidth, height: window.innerHeight }\n            : { width: 0, height: 0 };\n    }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n    return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n    constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n        super(elementRef, scrollDispatcher, ngZone, dir);\n        this.elementRef = elementRef;\n        this._changeDetectorRef = _changeDetectorRef;\n        this._scrollStrategy = _scrollStrategy;\n        /** Emits when the viewport is detached from a CdkVirtualForOf. */\n        this._detachedSubject = new Subject();\n        /** Emits when the rendered range changes. */\n        this._renderedRangeSubject = new Subject();\n        this._orientation = 'vertical';\n        this._appendOnly = false;\n        // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n        // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n        // depending on how the strategy calculates the scrolled index, it may come at a cost to\n        // performance.\n        /** Emits when the index of the first element visible in the viewport changes. */\n        this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n        /** A stream that emits whenever the rendered range changes. */\n        this.renderedRangeStream = this._renderedRangeSubject;\n        /**\n         * The total size of all content (in pixels), including content that is not currently rendered.\n         */\n        this._totalContentSize = 0;\n        /** A string representing the `style.width` property value to be used for the spacer element. */\n        this._totalContentWidth = '';\n        /** A string representing the `style.height` property value to be used for the spacer element. */\n        this._totalContentHeight = '';\n        /** The currently rendered range of indices. */\n        this._renderedRange = { start: 0, end: 0 };\n        /** The length of the data bound to this viewport (in number of items). */\n        this._dataLength = 0;\n        /** The size of the viewport (in pixels). */\n        this._viewportSize = 0;\n        /** The last rendered content offset that was set. */\n        this._renderedContentOffset = 0;\n        /**\n         * Whether the last rendered content offset was to the end of the content (and therefore needs to\n         * be rewritten as an offset to the start of the content).\n         */\n        this._renderedContentOffsetNeedsRewrite = false;\n        /** Whether there is a pending change detection cycle. */\n        this._isChangeDetectionPending = false;\n        /** A list of functions to run after the next change detection cycle. */\n        this._runAfterChangeDetection = [];\n        /** Subscription to changes in the viewport size. */\n        this._viewportChanges = Subscription.EMPTY;\n        if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n        }\n        this._viewportChanges = viewportRuler.change().subscribe(() => {\n            this.checkViewportSize();\n        });\n    }\n    /** The direction the viewport scrolls. */\n    get orientation() {\n        return this._orientation;\n    }\n    set orientation(orientation) {\n        if (this._orientation !== orientation) {\n            this._orientation = orientation;\n            this._calculateSpacerSize();\n        }\n    }\n    /**\n     * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n     * will be removed.\n     */\n    get appendOnly() {\n        return this._appendOnly;\n    }\n    set appendOnly(value) {\n        this._appendOnly = coerceBooleanProperty(value);\n    }\n    ngOnInit() {\n        super.ngOnInit();\n        // It's still too early to measure the viewport at this point. Deferring with a promise allows\n        // the Viewport to be rendered with the correct size before we measure. We run this outside the\n        // zone to avoid causing more change detection cycles. We handle the change detection loop\n        // ourselves instead.\n        this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n            this._measureViewportSize();\n            this._scrollStrategy.attach(this);\n            this.elementScrolled()\n                .pipe(\n            // Start off with a fake scroll event so we properly detect our initial position.\n            startWith(null), \n            // Collect multiple events into one until the next animation frame. This way if\n            // there are multiple scroll events in the same frame we only need to recheck\n            // our layout once.\n            auditTime(0, SCROLL_SCHEDULER))\n                .subscribe(() => this._scrollStrategy.onContentScrolled());\n            this._markChangeDetectionNeeded();\n        }));\n    }\n    ngOnDestroy() {\n        this.detach();\n        this._scrollStrategy.detach();\n        // Complete all subjects\n        this._renderedRangeSubject.complete();\n        this._detachedSubject.complete();\n        this._viewportChanges.unsubscribe();\n        super.ngOnDestroy();\n    }\n    /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n    attach(forOf) {\n        if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('CdkVirtualScrollViewport is already attached.');\n        }\n        // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n        // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n        // change detection loop ourselves.\n        this.ngZone.runOutsideAngular(() => {\n            this._forOf = forOf;\n            this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n                const newLength = data.length;\n                if (newLength !== this._dataLength) {\n                    this._dataLength = newLength;\n                    this._scrollStrategy.onDataLengthChanged();\n                }\n                this._doChangeDetection();\n            });\n        });\n    }\n    /** Detaches the current `CdkVirtualForOf`. */\n    detach() {\n        this._forOf = null;\n        this._detachedSubject.next();\n    }\n    /** Gets the length of the data bound to this viewport (in number of items). */\n    getDataLength() {\n        return this._dataLength;\n    }\n    /** Gets the size of the viewport (in pixels). */\n    getViewportSize() {\n        return this._viewportSize;\n    }\n    // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n    // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n    // setting it to something else, but its error prone and should probably be split into\n    // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n    /** Get the current rendered range of items. */\n    getRenderedRange() {\n        return this._renderedRange;\n    }\n    /**\n     * Sets the total size of all content (in pixels), including content that is not currently\n     * rendered.\n     */\n    setTotalContentSize(size) {\n        if (this._totalContentSize !== size) {\n            this._totalContentSize = size;\n            this._calculateSpacerSize();\n            this._markChangeDetectionNeeded();\n        }\n    }\n    /** Sets the currently rendered range of indices. */\n    setRenderedRange(range) {\n        if (!rangesEqual(this._renderedRange, range)) {\n            if (this.appendOnly) {\n                range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n            }\n            this._renderedRangeSubject.next((this._renderedRange = range));\n            this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n        }\n    }\n    /**\n     * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n     */\n    getOffsetToRenderedContentStart() {\n        return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n    }\n    /**\n     * Sets the offset from the start of the viewport to either the start or end of the rendered data\n     * (in pixels).\n     */\n    setRenderedContentOffset(offset, to = 'to-start') {\n        // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n        // in the negative direction.\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        const isHorizontal = this.orientation == 'horizontal';\n        const axis = isHorizontal ? 'X' : 'Y';\n        const axisDirection = isHorizontal && isRtl ? -1 : 1;\n        let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n        this._renderedContentOffset = offset;\n        if (to === 'to-end') {\n            transform += ` translate${axis}(-100%)`;\n            // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n            // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n            // expand upward).\n            this._renderedContentOffsetNeedsRewrite = true;\n        }\n        if (this._renderedContentTransform != transform) {\n            // We know this value is safe because we parse `offset` with `Number()` before passing it\n            // into the string.\n            this._renderedContentTransform = transform;\n            this._markChangeDetectionNeeded(() => {\n                if (this._renderedContentOffsetNeedsRewrite) {\n                    this._renderedContentOffset -= this.measureRenderedContentSize();\n                    this._renderedContentOffsetNeedsRewrite = false;\n                    this.setRenderedContentOffset(this._renderedContentOffset);\n                }\n                else {\n                    this._scrollStrategy.onRenderedOffsetChanged();\n                }\n            });\n        }\n    }\n    /**\n     * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n     * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n     * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n     * @param offset The offset to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n     */\n    scrollToOffset(offset, behavior = 'auto') {\n        const options = { behavior };\n        if (this.orientation === 'horizontal') {\n            options.start = offset;\n        }\n        else {\n            options.top = offset;\n        }\n        this.scrollTo(options);\n    }\n    /**\n     * Scrolls to the offset for the given index.\n     * @param index The index of the element to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n     */\n    scrollToIndex(index, behavior = 'auto') {\n        this._scrollStrategy.scrollToIndex(index, behavior);\n    }\n    /**\n     * Gets the current scroll offset from the start of the viewport (in pixels).\n     * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n     *     in horizontal mode.\n     */\n    measureScrollOffset(from) {\n        return from\n            ? super.measureScrollOffset(from)\n            : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n    }\n    /** Measure the combined size of all of the rendered items. */\n    measureRenderedContentSize() {\n        const contentEl = this._contentWrapper.nativeElement;\n        return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n    }\n    /**\n     * Measure the total combined size of the given range. Throws if the range includes items that are\n     * not rendered.\n     */\n    measureRangeSize(range) {\n        if (!this._forOf) {\n            return 0;\n        }\n        return this._forOf.measureRangeSize(range, this.orientation);\n    }\n    /** Update the viewport dimensions and re-render. */\n    checkViewportSize() {\n        // TODO: Cleanup later when add logic for handling content resize\n        this._measureViewportSize();\n        this._scrollStrategy.onDataLengthChanged();\n    }\n    /** Measure the viewport size. */\n    _measureViewportSize() {\n        const viewportEl = this.elementRef.nativeElement;\n        this._viewportSize =\n            this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n    }\n    /** Queue up change detection to run. */\n    _markChangeDetectionNeeded(runAfter) {\n        if (runAfter) {\n            this._runAfterChangeDetection.push(runAfter);\n        }\n        // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n        // properties sequentially we only have to run `_doChangeDetection` once at the end.\n        if (!this._isChangeDetectionPending) {\n            this._isChangeDetectionPending = true;\n            this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n                this._doChangeDetection();\n            }));\n        }\n    }\n    /** Run change detection. */\n    _doChangeDetection() {\n        this._isChangeDetectionPending = false;\n        // Apply the content transform. The transform can't be set via an Angular binding because\n        // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n        // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n        // the `Number` function first to coerce it to a numeric value.\n        this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n        // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n        // from the root, since the repeated items are content projected in. Calling `detectChanges`\n        // instead does not properly check the projected content.\n        this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n        const runAfterChangeDetection = this._runAfterChangeDetection;\n        this._runAfterChangeDetection = [];\n        for (const fn of runAfterChangeDetection) {\n            fn();\n        }\n    }\n    /** Calculates the `style.width` and `style.height` for the spacer element. */\n    _calculateSpacerSize() {\n        this._totalContentHeight =\n            this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n        this._totalContentWidth =\n            this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n    }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n        {\n            provide: CdkScrollable,\n            useExisting: CdkVirtualScrollViewport,\n        },\n    ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n            type: Component,\n            args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n                        'class': 'cdk-virtual-scroll-viewport',\n                        '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n                        '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n                    }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n                        {\n                            provide: CdkScrollable,\n                            useExisting: CdkVirtualScrollViewport,\n                        },\n                    ], template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [VIRTUAL_SCROLL_STRATEGY]\n                }] }, { type: i2.Directionality, decorators: [{\n                    type: Optional\n                }] }, { type: ScrollDispatcher }, { type: ViewportRuler }]; }, propDecorators: { orientation: [{\n                type: Input\n            }], appendOnly: [{\n                type: Input\n            }], scrolledIndexChange: [{\n                type: Output\n            }], _contentWrapper: [{\n                type: ViewChild,\n                args: ['contentWrapper', { static: true }]\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n    const el = node;\n    if (!el.getBoundingClientRect) {\n        return 0;\n    }\n    const rect = el.getBoundingClientRect();\n    if (orientation === 'horizontal') {\n        return direction === 'start' ? rect.left : rect.right;\n    }\n    return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n    constructor(\n    /** The view container to add items to. */\n    _viewContainerRef, \n    /** The template to use when stamping out new items. */\n    _template, \n    /** The set of available differs. */\n    _differs, \n    /** The strategy used to render items in the virtual scroll viewport. */\n    _viewRepeater, \n    /** The virtual scrolling viewport that these items are being rendered in. */\n    _viewport, ngZone) {\n        this._viewContainerRef = _viewContainerRef;\n        this._template = _template;\n        this._differs = _differs;\n        this._viewRepeater = _viewRepeater;\n        this._viewport = _viewport;\n        /** Emits when the rendered view of the data changes. */\n        this.viewChange = new Subject();\n        /** Subject that emits when a new DataSource instance is given. */\n        this._dataSourceChanges = new Subject();\n        /** Emits whenever the data in the current DataSource changes. */\n        this.dataStream = this._dataSourceChanges.pipe(\n        // Start off with null `DataSource`.\n        startWith(null), \n        // Bundle up the previous and current data sources so we can work with both.\n        pairwise(), \n        // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n        // new one, passing back a stream of data changes which we run through `switchMap` to give\n        // us a data stream that emits the latest data from whatever the current `DataSource` is.\n        switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n        // Replay the last emitted data when someone subscribes.\n        shareReplay(1));\n        /** The differ used to calculate changes to the data. */\n        this._differ = null;\n        /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n        this._needsUpdate = false;\n        this._destroyed = new Subject();\n        this.dataStream.subscribe(data => {\n            this._data = data;\n            this._onRenderedDataChange();\n        });\n        this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n            this._renderedRange = range;\n            ngZone.run(() => this.viewChange.next(this._renderedRange));\n            this._onRenderedDataChange();\n        });\n        this._viewport.attach(this);\n    }\n    /** The DataSource to display. */\n    get cdkVirtualForOf() {\n        return this._cdkVirtualForOf;\n    }\n    set cdkVirtualForOf(value) {\n        this._cdkVirtualForOf = value;\n        if (isDataSource(value)) {\n            this._dataSourceChanges.next(value);\n        }\n        else {\n            // If value is an an NgIterable, convert it to an array.\n            this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n        }\n    }\n    /**\n     * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n     * the item and produces a value to be used as the item's identity when tracking changes.\n     */\n    get cdkVirtualForTrackBy() {\n        return this._cdkVirtualForTrackBy;\n    }\n    set cdkVirtualForTrackBy(fn) {\n        this._needsUpdate = true;\n        this._cdkVirtualForTrackBy = fn\n            ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n            : undefined;\n    }\n    /** The template used to stamp out new elements. */\n    set cdkVirtualForTemplate(value) {\n        if (value) {\n            this._needsUpdate = true;\n            this._template = value;\n        }\n    }\n    /**\n     * The size of the cache used to store templates that are not being used for re-use later.\n     * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n     */\n    get cdkVirtualForTemplateCacheSize() {\n        return this._viewRepeater.viewCacheSize;\n    }\n    set cdkVirtualForTemplateCacheSize(size) {\n        this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n    }\n    /**\n     * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n     * in the specified range. Throws an error if the range includes items that are not currently\n     * rendered.\n     */\n    measureRangeSize(range, orientation) {\n        if (range.start >= range.end) {\n            return 0;\n        }\n        if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n            (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error(`Error: attempted to measure an item that isn't rendered.`);\n        }\n        // The index into the list of rendered views for the first item in the range.\n        const renderedStartIndex = range.start - this._renderedRange.start;\n        // The length of the range we're measuring.\n        const rangeLen = range.end - range.start;\n        // Loop over all the views, find the first and land node and compute the size by subtracting\n        // the top of the first node from the bottom of the last one.\n        let firstNode;\n        let lastNode;\n        // Find the first node by starting from the beginning and going forwards.\n        for (let i = 0; i < rangeLen; i++) {\n            const view = this._viewContainerRef.get(i + renderedStartIndex);\n            if (view && view.rootNodes.length) {\n                firstNode = lastNode = view.rootNodes[0];\n                break;\n            }\n        }\n        // Find the last node by starting from the end and going backwards.\n        for (let i = rangeLen - 1; i > -1; i--) {\n            const view = this._viewContainerRef.get(i + renderedStartIndex);\n            if (view && view.rootNodes.length) {\n                lastNode = view.rootNodes[view.rootNodes.length - 1];\n                break;\n            }\n        }\n        return firstNode && lastNode\n            ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n            : 0;\n    }\n    ngDoCheck() {\n        if (this._differ && this._needsUpdate) {\n            // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n            // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n            // changing (need to do this diff).\n            const changes = this._differ.diff(this._renderedItems);\n            if (!changes) {\n                this._updateContext();\n            }\n            else {\n                this._applyChanges(changes);\n            }\n            this._needsUpdate = false;\n        }\n    }\n    ngOnDestroy() {\n        this._viewport.detach();\n        this._dataSourceChanges.next(undefined);\n        this._dataSourceChanges.complete();\n        this.viewChange.complete();\n        this._destroyed.next();\n        this._destroyed.complete();\n        this._viewRepeater.detach();\n    }\n    /** React to scroll state changes in the viewport. */\n    _onRenderedDataChange() {\n        if (!this._renderedRange) {\n            return;\n        }\n        this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n        if (!this._differ) {\n            // Use a wrapper function for the `trackBy` so any new values are\n            // picked up automatically without having to recreate the differ.\n            this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n                return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n            });\n        }\n        this._needsUpdate = true;\n    }\n    /** Swap out one `DataSource` for another. */\n    _changeDataSource(oldDs, newDs) {\n        if (oldDs) {\n            oldDs.disconnect(this);\n        }\n        this._needsUpdate = true;\n        return newDs ? newDs.connect(this) : of();\n    }\n    /** Update the `CdkVirtualForOfContext` for all views. */\n    _updateContext() {\n        const count = this._data.length;\n        let i = this._viewContainerRef.length;\n        while (i--) {\n            const view = this._viewContainerRef.get(i);\n            view.context.index = this._renderedRange.start + i;\n            view.context.count = count;\n            this._updateComputedContextProperties(view.context);\n            view.detectChanges();\n        }\n    }\n    /** Apply changes to the DOM. */\n    _applyChanges(changes) {\n        this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n        // Update $implicit for any items that had an identity change.\n        changes.forEachIdentityChange((record) => {\n            const view = this._viewContainerRef.get(record.currentIndex);\n            view.context.$implicit = record.item;\n        });\n        // Update the context variables on all items.\n        const count = this._data.length;\n        let i = this._viewContainerRef.length;\n        while (i--) {\n            const view = this._viewContainerRef.get(i);\n            view.context.index = this._renderedRange.start + i;\n            view.context.count = count;\n            this._updateComputedContextProperties(view.context);\n        }\n    }\n    /** Update the computed properties on the `CdkVirtualForOfContext`. */\n    _updateComputedContextProperties(context) {\n        context.first = context.index === 0;\n        context.last = context.index === context.count - 1;\n        context.even = context.index % 2 === 0;\n        context.odd = !context.even;\n    }\n    _getEmbeddedViewArgs(record, index) {\n        // Note that it's important that we insert the item directly at the proper index,\n        // rather than inserting it and the moving it in place, because if there's a directive\n        // on the same node that injects the `ViewContainerRef`, Angular will insert another\n        // comment node which can throw off the move when it's being repeated for all items.\n        return {\n            templateRef: this._template,\n            context: {\n                $implicit: record.item,\n                // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n                // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n                cdkVirtualForOf: this._cdkVirtualForOf,\n                index: -1,\n                count: -1,\n                first: false,\n                last: false,\n                odd: false,\n                even: false,\n            },\n            index,\n        };\n    }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkVirtualFor][cdkVirtualForOf]',\n                    providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n                    type: Inject,\n                    args: [_VIEW_REPEATER_STRATEGY]\n                }] }, { type: CdkVirtualScrollViewport, decorators: [{\n                    type: SkipSelf\n                }] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{\n                type: Input\n            }], cdkVirtualForTrackBy: [{\n                type: Input\n            }], cdkVirtualForTemplate: [{\n                type: Input\n            }], cdkVirtualForTemplateCacheSize: [{\n                type: Input\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkScrollable],\n                    declarations: [CdkScrollable],\n                }]\n        }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport], imports: [BidiModule, PlatformModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n        CdkVirtualForOf,\n        CdkVirtualScrollViewport] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, imports: [[BidiModule, PlatformModule, CdkScrollableModule], BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [BidiModule, PlatformModule, CdkScrollableModule],\n                    exports: [\n                        BidiModule,\n                        CdkScrollableModule,\n                        CdkFixedSizeVirtualScroll,\n                        CdkVirtualForOf,\n                        CdkVirtualScrollViewport,\n                    ],\n                    declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nclass Tooltip {\n  constructor(el, zone, config) {\n    this.el = el;\n    this.zone = zone;\n    this.config = config;\n    this.escape = true;\n    this._tooltipOptions = {\n      tooltipPosition: 'right',\n      tooltipEvent: 'hover',\n      appendTo: 'body',\n      tooltipZIndex: 'auto',\n      escape: false,\n      positionTop: 0,\n      positionLeft: 0\n    };\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(val) {\n    this._disabled = val;\n    this.deactivate();\n  }\n\n  ngAfterViewInit() {\n    this.zone.runOutsideAngular(() => {\n      if (this.getOption('tooltipEvent') === 'hover') {\n        this.mouseEnterListener = this.onMouseEnter.bind(this);\n        this.mouseLeaveListener = this.onMouseLeave.bind(this);\n        this.clickListener = this.onClick.bind(this);\n        this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n        this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n        this.el.nativeElement.addEventListener('click', this.clickListener);\n      } else if (this.getOption('tooltipEvent') === 'focus') {\n        this.focusListener = this.onFocus.bind(this);\n        this.blurListener = this.onBlur.bind(this);\n        this.el.nativeElement.addEventListener('focus', this.focusListener);\n        this.el.nativeElement.addEventListener('blur', this.blurListener);\n      }\n    });\n  }\n\n  ngOnChanges(simpleChange) {\n    if (simpleChange.tooltipPosition) {\n      this.setOption({\n        tooltipPosition: simpleChange.tooltipPosition.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipEvent) {\n      this.setOption({\n        tooltipEvent: simpleChange.tooltipEvent.currentValue\n      });\n    }\n\n    if (simpleChange.appendTo) {\n      this.setOption({\n        appendTo: simpleChange.appendTo.currentValue\n      });\n    }\n\n    if (simpleChange.positionStyle) {\n      this.setOption({\n        positionStyle: simpleChange.positionStyle.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipStyleClass) {\n      this.setOption({\n        tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipZIndex) {\n      this.setOption({\n        tooltipZIndex: simpleChange.tooltipZIndex.currentValue\n      });\n    }\n\n    if (simpleChange.escape) {\n      this.setOption({\n        escape: simpleChange.escape.currentValue\n      });\n    }\n\n    if (simpleChange.showDelay) {\n      this.setOption({\n        showDelay: simpleChange.showDelay.currentValue\n      });\n    }\n\n    if (simpleChange.hideDelay) {\n      this.setOption({\n        hideDelay: simpleChange.hideDelay.currentValue\n      });\n    }\n\n    if (simpleChange.life) {\n      this.setOption({\n        life: simpleChange.life.currentValue\n      });\n    }\n\n    if (simpleChange.positionTop) {\n      this.setOption({\n        positionTop: simpleChange.positionTop.currentValue\n      });\n    }\n\n    if (simpleChange.positionLeft) {\n      this.setOption({\n        positionLeft: simpleChange.positionLeft.currentValue\n      });\n    }\n\n    if (simpleChange.disabled) {\n      this.setOption({\n        disabled: simpleChange.disabled.currentValue\n      });\n    }\n\n    if (simpleChange.text) {\n      this.setOption({\n        tooltipLabel: simpleChange.text.currentValue\n      });\n\n      if (this.active) {\n        if (simpleChange.text.currentValue) {\n          if (this.container && this.container.offsetParent) {\n            this.updateText();\n            this.align();\n          } else {\n            this.show();\n          }\n        } else {\n          this.hide();\n        }\n      }\n    }\n\n    if (simpleChange.tooltipOptions) {\n      this._tooltipOptions = { ...this._tooltipOptions,\n        ...simpleChange.tooltipOptions.currentValue\n      };\n      this.deactivate();\n\n      if (this.active) {\n        if (this.getOption('tooltipLabel')) {\n          if (this.container && this.container.offsetParent) {\n            this.updateText();\n            this.align();\n          } else {\n            this.show();\n          }\n        } else {\n          this.hide();\n        }\n      }\n    }\n  }\n\n  onMouseEnter(e) {\n    if (!this.container && !this.showTimeout) {\n      this.activate();\n    }\n  }\n\n  onMouseLeave(e) {\n    this.deactivate();\n  }\n\n  onFocus(e) {\n    this.activate();\n  }\n\n  onBlur(e) {\n    this.deactivate();\n  }\n\n  onClick(e) {\n    this.deactivate();\n  }\n\n  activate() {\n    this.active = true;\n    this.clearHideTimeout();\n    if (this.getOption('showDelay')) this.showTimeout = setTimeout(() => {\n      this.show();\n    }, this.getOption('showDelay'));else this.show();\n\n    if (this.getOption('life')) {\n      let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n      this.hideTimeout = setTimeout(() => {\n        this.hide();\n      }, duration);\n    }\n  }\n\n  deactivate() {\n    this.active = false;\n    this.clearShowTimeout();\n\n    if (this.getOption('hideDelay')) {\n      this.clearHideTimeout(); //life timeout\n\n      this.hideTimeout = setTimeout(() => {\n        this.hide();\n      }, this.getOption('hideDelay'));\n    } else {\n      this.hide();\n    }\n  }\n\n  create() {\n    if (this.container) {\n      this.clearHideTimeout();\n      this.remove();\n    }\n\n    this.container = document.createElement('div');\n    let tooltipArrow = document.createElement('div');\n    tooltipArrow.className = 'p-tooltip-arrow';\n    this.container.appendChild(tooltipArrow);\n    this.tooltipText = document.createElement('div');\n    this.tooltipText.className = 'p-tooltip-text';\n    this.updateText();\n\n    if (this.getOption('positionStyle')) {\n      this.container.style.position = this.getOption('positionStyle');\n    }\n\n    this.container.appendChild(this.tooltipText);\n    if (this.getOption('appendTo') === 'body') document.body.appendChild(this.container);else if (this.getOption('appendTo') === 'target') DomHandler.appendChild(this.container, this.el.nativeElement);else DomHandler.appendChild(this.container, this.getOption('appendTo'));\n    this.container.style.display = 'inline-block';\n  }\n\n  show() {\n    if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n      return;\n    }\n\n    this.create();\n    this.align();\n    DomHandler.fadeIn(this.container, 250);\n    if (this.getOption('tooltipZIndex') === 'auto') ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);else this.container.style.zIndex = this.getOption('tooltipZIndex');\n    this.bindDocumentResizeListener();\n    this.bindScrollListener();\n  }\n\n  hide() {\n    if (this.getOption('tooltipZIndex') === 'auto') {\n      ZIndexUtils.clear(this.container);\n    }\n\n    this.remove();\n  }\n\n  updateText() {\n    if (this.getOption('escape')) {\n      this.tooltipText.innerHTML = '';\n      this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n    } else {\n      this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n    }\n  }\n\n  align() {\n    let position = this.getOption('tooltipPosition');\n\n    switch (position) {\n      case 'top':\n        this.alignTop();\n\n        if (this.isOutOfBounds()) {\n          this.alignBottom();\n\n          if (this.isOutOfBounds()) {\n            this.alignRight();\n\n            if (this.isOutOfBounds()) {\n              this.alignLeft();\n            }\n          }\n        }\n\n        break;\n\n      case 'bottom':\n        this.alignBottom();\n\n        if (this.isOutOfBounds()) {\n          this.alignTop();\n\n          if (this.isOutOfBounds()) {\n            this.alignRight();\n\n            if (this.isOutOfBounds()) {\n              this.alignLeft();\n            }\n          }\n        }\n\n        break;\n\n      case 'left':\n        this.alignLeft();\n\n        if (this.isOutOfBounds()) {\n          this.alignRight();\n\n          if (this.isOutOfBounds()) {\n            this.alignTop();\n\n            if (this.isOutOfBounds()) {\n              this.alignBottom();\n            }\n          }\n        }\n\n        break;\n\n      case 'right':\n        this.alignRight();\n\n        if (this.isOutOfBounds()) {\n          this.alignLeft();\n\n          if (this.isOutOfBounds()) {\n            this.alignTop();\n\n            if (this.isOutOfBounds()) {\n              this.alignBottom();\n            }\n          }\n        }\n\n        break;\n    }\n  }\n\n  getHostOffset() {\n    if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n      let offset = this.el.nativeElement.getBoundingClientRect();\n      let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n      let targetTop = offset.top + DomHandler.getWindowScrollTop();\n      return {\n        left: targetLeft,\n        top: targetTop\n      };\n    } else {\n      return {\n        left: 0,\n        top: 0\n      };\n    }\n  }\n\n  alignRight() {\n    this.preAlign('right');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n    let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignLeft() {\n    this.preAlign('left');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n    let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignTop() {\n    this.preAlign('top');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n    let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignBottom() {\n    this.preAlign('bottom');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n    let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  setOption(option) {\n    this._tooltipOptions = { ...this._tooltipOptions,\n      ...option\n    };\n  }\n\n  getOption(option) {\n    return this._tooltipOptions[option];\n  }\n\n  preAlign(position) {\n    this.container.style.left = -999 + 'px';\n    this.container.style.top = -999 + 'px';\n    let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n    this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n  }\n\n  isOutOfBounds() {\n    let offset = this.container.getBoundingClientRect();\n    let targetTop = offset.top;\n    let targetLeft = offset.left;\n    let width = DomHandler.getOuterWidth(this.container);\n    let height = DomHandler.getOuterHeight(this.container);\n    let viewport = DomHandler.getViewport();\n    return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;\n  }\n\n  onWindowResize(e) {\n    this.hide();\n  }\n\n  bindDocumentResizeListener() {\n    this.zone.runOutsideAngular(() => {\n      this.resizeListener = this.onWindowResize.bind(this);\n      window.addEventListener('resize', this.resizeListener);\n    });\n  }\n\n  unbindDocumentResizeListener() {\n    if (this.resizeListener) {\n      window.removeEventListener('resize', this.resizeListener);\n      this.resizeListener = null;\n    }\n  }\n\n  bindScrollListener() {\n    if (!this.scrollHandler) {\n      this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n        if (this.container) {\n          this.hide();\n        }\n      });\n    }\n\n    this.scrollHandler.bindScrollListener();\n  }\n\n  unbindScrollListener() {\n    if (this.scrollHandler) {\n      this.scrollHandler.unbindScrollListener();\n    }\n  }\n\n  unbindEvents() {\n    if (this.getOption('tooltipEvent') === 'hover') {\n      this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n      this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n      this.el.nativeElement.removeEventListener('click', this.clickListener);\n    } else if (this.getOption('tooltipEvent') === 'focus') {\n      this.el.nativeElement.removeEventListener('focus', this.focusListener);\n      this.el.nativeElement.removeEventListener('blur', this.blurListener);\n    }\n\n    this.unbindDocumentResizeListener();\n  }\n\n  remove() {\n    if (this.container && this.container.parentElement) {\n      if (this.getOption('appendTo') === 'body') document.body.removeChild(this.container);else if (this.getOption('appendTo') === 'target') this.el.nativeElement.removeChild(this.container);else DomHandler.removeChild(this.container, this.getOption('appendTo'));\n    }\n\n    this.unbindDocumentResizeListener();\n    this.unbindScrollListener();\n    this.clearTimeouts();\n    this.container = null;\n    this.scrollHandler = null;\n  }\n\n  clearShowTimeout() {\n    if (this.showTimeout) {\n      clearTimeout(this.showTimeout);\n      this.showTimeout = null;\n    }\n  }\n\n  clearHideTimeout() {\n    if (this.hideTimeout) {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout = null;\n    }\n  }\n\n  clearTimeouts() {\n    this.clearShowTimeout();\n    this.clearHideTimeout();\n  }\n\n  ngOnDestroy() {\n    this.unbindEvents();\n\n    if (this.container) {\n      ZIndexUtils.clear(this.container);\n    }\n\n    this.remove();\n\n    if (this.scrollHandler) {\n      this.scrollHandler.destroy();\n      this.scrollHandler = null;\n    }\n  }\n\n}\n\nTooltip.ɵfac = function Tooltip_Factory(t) {\n  return new (t || Tooltip)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.PrimeNGConfig));\n};\n\nTooltip.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Tooltip,\n  selectors: [[\"\", \"pTooltip\", \"\"]],\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    tooltipPosition: \"tooltipPosition\",\n    tooltipEvent: \"tooltipEvent\",\n    appendTo: \"appendTo\",\n    positionStyle: \"positionStyle\",\n    tooltipStyleClass: \"tooltipStyleClass\",\n    tooltipZIndex: \"tooltipZIndex\",\n    escape: \"escape\",\n    showDelay: \"showDelay\",\n    hideDelay: \"hideDelay\",\n    life: \"life\",\n    positionTop: \"positionTop\",\n    positionLeft: \"positionLeft\",\n    text: [\"pTooltip\", \"text\"],\n    disabled: [\"tooltipDisabled\", \"disabled\"],\n    tooltipOptions: \"tooltipOptions\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Tooltip, [{\n    type: Directive,\n    args: [{\n      selector: '[pTooltip]',\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i1.PrimeNGConfig\n    }];\n  }, {\n    tooltipPosition: [{\n      type: Input\n    }],\n    tooltipEvent: [{\n      type: Input\n    }],\n    appendTo: [{\n      type: Input\n    }],\n    positionStyle: [{\n      type: Input\n    }],\n    tooltipStyleClass: [{\n      type: Input\n    }],\n    tooltipZIndex: [{\n      type: Input\n    }],\n    escape: [{\n      type: Input\n    }],\n    showDelay: [{\n      type: Input\n    }],\n    hideDelay: [{\n      type: Input\n    }],\n    life: [{\n      type: Input\n    }],\n    positionTop: [{\n      type: Input\n    }],\n    positionLeft: [{\n      type: Input\n    }],\n    text: [{\n      type: Input,\n      args: ['pTooltip']\n    }],\n    disabled: [{\n      type: Input,\n      args: [\"tooltipDisabled\"]\n    }],\n    tooltipOptions: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TooltipModule {}\n\nTooltipModule.ɵfac = function TooltipModule_Factory(t) {\n  return new (t || TooltipModule)();\n};\n\nTooltipModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TooltipModule\n});\nTooltipModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TooltipModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Tooltip],\n      declarations: [Tooltip]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Tooltip, TooltipModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs"],"names":["i0","Directive","Input","NgModule","CommonModule","DomHandler","ConnectedOverlayScrollHandler","ZIndexUtils","i1","Tooltip","constructor","el","zone","config","escape","_tooltipOptions","tooltipPosition","tooltipEvent","appendTo","tooltipZIndex","positionTop","positionLeft","disabled","_disabled","val","deactivate","ngAfterViewInit","runOutsideAngular","getOption","mouseEnterListener","onMouseEnter","bind","mouseLeaveListener","onMouseLeave","clickListener","onClick","nativeElement","addEventListener","focusListener","onFocus","blurListener","onBlur","ngOnChanges","simpleChange","setOption","currentValue","positionStyle","tooltipStyleClass","showDelay","hideDelay","life","text","tooltipLabel","active","container","offsetParent","updateText","align","show","hide","tooltipOptions","e","showTimeout","activate","clearHideTimeout","setTimeout","duration","hideTimeout","clearShowTimeout","create","remove","document","createElement","tooltipArrow","className","appendChild","tooltipText","style","position","body","display","fadeIn","set","zIndex","tooltip","bindDocumentResizeListener","bindScrollListener","clear","innerHTML","createTextNode","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","getHostOffset","offset","getBoundingClientRect","targetLeft","left","getWindowScrollLeft","targetTop","top","getWindowScrollTop","preAlign","hostOffset","getOuterWidth","getOuterHeight","option","defaultClassName","width","height","viewport","getViewport","onWindowResize","resizeListener","window","unbindDocumentResizeListener","removeEventListener","scrollHandler","unbindScrollListener","unbindEvents","parentElement","removeChild","clearTimeouts","clearTimeout","ngOnDestroy","destroy","ɵfac","ElementRef","NgZone","PrimeNGConfig","ɵdir","type","args","selector","host","TooltipModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nclass Tooltip {\n    constructor(el, zone, config) {\n        this.el = el;\n        this.zone = zone;\n        this.config = config;\n        this.escape = true;\n        this._tooltipOptions = {\n            tooltipPosition: 'right',\n            tooltipEvent: 'hover',\n            appendTo: 'body',\n            tooltipZIndex: 'auto',\n            escape: false,\n            positionTop: 0,\n            positionLeft: 0\n        };\n    }\n    get disabled() {\n        return this._disabled;\n    }\n    set disabled(val) {\n        this._disabled = val;\n        this.deactivate();\n    }\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            if (this.getOption('tooltipEvent') === 'hover') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n            }\n            else if (this.getOption('tooltipEvent') === 'focus') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n                this.el.nativeElement.addEventListener('focus', this.focusListener);\n                this.el.nativeElement.addEventListener('blur', this.blurListener);\n            }\n        });\n    }\n    ngOnChanges(simpleChange) {\n        if (simpleChange.tooltipPosition) {\n            this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });\n        }\n        if (simpleChange.tooltipEvent) {\n            this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });\n        }\n        if (simpleChange.appendTo) {\n            this.setOption({ appendTo: simpleChange.appendTo.currentValue });\n        }\n        if (simpleChange.positionStyle) {\n            this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });\n        }\n        if (simpleChange.tooltipStyleClass) {\n            this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });\n        }\n        if (simpleChange.tooltipZIndex) {\n            this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });\n        }\n        if (simpleChange.escape) {\n            this.setOption({ escape: simpleChange.escape.currentValue });\n        }\n        if (simpleChange.showDelay) {\n            this.setOption({ showDelay: simpleChange.showDelay.currentValue });\n        }\n        if (simpleChange.hideDelay) {\n            this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });\n        }\n        if (simpleChange.life) {\n            this.setOption({ life: simpleChange.life.currentValue });\n        }\n        if (simpleChange.positionTop) {\n            this.setOption({ positionTop: simpleChange.positionTop.currentValue });\n        }\n        if (simpleChange.positionLeft) {\n            this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });\n        }\n        if (simpleChange.disabled) {\n            this.setOption({ disabled: simpleChange.disabled.currentValue });\n        }\n        if (simpleChange.text) {\n            this.setOption({ tooltipLabel: simpleChange.text.currentValue });\n            if (this.active) {\n                if (simpleChange.text.currentValue) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n        if (simpleChange.tooltipOptions) {\n            this._tooltipOptions = { ...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue };\n            this.deactivate();\n            if (this.active) {\n                if (this.getOption('tooltipLabel')) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n    }\n    onMouseEnter(e) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n    onMouseLeave(e) {\n        this.deactivate();\n    }\n    onFocus(e) {\n        this.activate();\n    }\n    onBlur(e) {\n        this.deactivate();\n    }\n    onClick(e) {\n        this.deactivate();\n    }\n    activate() {\n        this.active = true;\n        this.clearHideTimeout();\n        if (this.getOption('showDelay'))\n            this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));\n        else\n            this.show();\n        if (this.getOption('life')) {\n            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n            this.hideTimeout = setTimeout(() => { this.hide(); }, duration);\n        }\n    }\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n        if (this.getOption('hideDelay')) {\n            this.clearHideTimeout(); //life timeout\n            this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));\n        }\n        else {\n            this.hide();\n        }\n    }\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n        this.container = document.createElement('div');\n        let tooltipArrow = document.createElement('div');\n        tooltipArrow.className = 'p-tooltip-arrow';\n        this.container.appendChild(tooltipArrow);\n        this.tooltipText = document.createElement('div');\n        this.tooltipText.className = 'p-tooltip-text';\n        this.updateText();\n        if (this.getOption('positionStyle')) {\n            this.container.style.position = this.getOption('positionStyle');\n        }\n        this.container.appendChild(this.tooltipText);\n        if (this.getOption('appendTo') === 'body')\n            document.body.appendChild(this.container);\n        else if (this.getOption('appendTo') === 'target')\n            DomHandler.appendChild(this.container, this.el.nativeElement);\n        else\n            DomHandler.appendChild(this.container, this.getOption('appendTo'));\n        this.container.style.display = 'inline-block';\n    }\n    show() {\n        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n            return;\n        }\n        this.create();\n        this.align();\n        DomHandler.fadeIn(this.container, 250);\n        if (this.getOption('tooltipZIndex') === 'auto')\n            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);\n        else\n            this.container.style.zIndex = this.getOption('tooltipZIndex');\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n    hide() {\n        if (this.getOption('tooltipZIndex') === 'auto') {\n            ZIndexUtils.clear(this.container);\n        }\n        this.remove();\n    }\n    updateText() {\n        if (this.getOption('escape')) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n        }\n        else {\n            this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n        }\n    }\n    align() {\n        let position = this.getOption('tooltipPosition');\n        switch (position) {\n            case 'top':\n                this.alignTop();\n                if (this.isOutOfBounds()) {\n                    this.alignBottom();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n            case 'bottom':\n                this.alignBottom();\n                if (this.isOutOfBounds()) {\n                    this.alignTop();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n            case 'left':\n                this.alignLeft();\n                if (this.isOutOfBounds()) {\n                    this.alignRight();\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n            case 'right':\n                this.alignRight();\n                if (this.isOutOfBounds()) {\n                    this.alignLeft();\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n        }\n    }\n    getHostOffset() {\n        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n            let targetTop = offset.top + DomHandler.getWindowScrollTop();\n            return { left: targetLeft, top: targetTop };\n        }\n        else {\n            return { left: 0, top: 0 };\n        }\n    }\n    alignRight() {\n        this.preAlign('right');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignLeft() {\n        this.preAlign('left');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignTop() {\n        this.preAlign('top');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignBottom() {\n        this.preAlign('bottom');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    setOption(option) {\n        this._tooltipOptions = { ...this._tooltipOptions, ...option };\n    }\n    getOption(option) {\n        return this._tooltipOptions[option];\n    }\n    preAlign(position) {\n        this.container.style.left = -999 + 'px';\n        this.container.style.top = -999 + 'px';\n        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n    }\n    isOutOfBounds() {\n        let offset = this.container.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = DomHandler.getOuterWidth(this.container);\n        let height = DomHandler.getOuterHeight(this.container);\n        let viewport = DomHandler.getViewport();\n        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);\n    }\n    onWindowResize(e) {\n        this.hide();\n    }\n    bindDocumentResizeListener() {\n        this.zone.runOutsideAngular(() => {\n            this.resizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.resizeListener);\n        });\n    }\n    unbindDocumentResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (this.container) {\n                    this.hide();\n                }\n            });\n        }\n        this.scrollHandler.bindScrollListener();\n    }\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n    unbindEvents() {\n        if (this.getOption('tooltipEvent') === 'hover') {\n            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n            this.el.nativeElement.removeEventListener('click', this.clickListener);\n        }\n        else if (this.getOption('tooltipEvent') === 'focus') {\n            this.el.nativeElement.removeEventListener('focus', this.focusListener);\n            this.el.nativeElement.removeEventListener('blur', this.blurListener);\n        }\n        this.unbindDocumentResizeListener();\n    }\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.getOption('appendTo') === 'body')\n                document.body.removeChild(this.container);\n            else if (this.getOption('appendTo') === 'target')\n                this.el.nativeElement.removeChild(this.container);\n            else\n                DomHandler.removeChild(this.container, this.getOption('appendTo'));\n        }\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.clearTimeouts();\n        this.container = null;\n        this.scrollHandler = null;\n    }\n    clearShowTimeout() {\n        if (this.showTimeout) {\n            clearTimeout(this.showTimeout);\n            this.showTimeout = null;\n        }\n    }\n    clearHideTimeout() {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n    }\n    clearTimeouts() {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n    ngOnDestroy() {\n        this.unbindEvents();\n        if (this.container) {\n            ZIndexUtils.clear(this.container);\n        }\n        this.remove();\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\nTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });\nTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Tooltip, selector: \"[pTooltip]\", inputs: { tooltipPosition: \"tooltipPosition\", tooltipEvent: \"tooltipEvent\", appendTo: \"appendTo\", positionStyle: \"positionStyle\", tooltipStyleClass: \"tooltipStyleClass\", tooltipZIndex: \"tooltipZIndex\", escape: \"escape\", showDelay: \"showDelay\", hideDelay: \"hideDelay\", life: \"life\", positionTop: \"positionTop\", positionLeft: \"positionLeft\", text: [\"pTooltip\", \"text\"], disabled: [\"tooltipDisabled\", \"disabled\"], tooltipOptions: \"tooltipOptions\" }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Tooltip, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pTooltip]',\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{\n                type: Input\n            }], tooltipEvent: [{\n                type: Input\n            }], appendTo: [{\n                type: Input\n            }], positionStyle: [{\n                type: Input\n            }], tooltipStyleClass: [{\n                type: Input\n            }], tooltipZIndex: [{\n                type: Input\n            }], escape: [{\n                type: Input\n            }], showDelay: [{\n                type: Input\n            }], hideDelay: [{\n                type: Input\n            }], life: [{\n                type: Input\n            }], positionTop: [{\n                type: Input\n            }], positionLeft: [{\n                type: Input\n            }], text: [{\n                type: Input,\n                args: ['pTooltip']\n            }], disabled: [{\n                type: Input,\n                args: [\"tooltipDisabled\"]\n            }], tooltipOptions: [{\n                type: Input\n            }] } });\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Tooltip],\n                    declarations: [Tooltip]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Tooltip, TooltipModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { ElementRef, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\n\nfunction throwNullPortalError() {\n  throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\n\n\nfunction throwPortalAlreadyAttachedError() {\n  throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\n\n\nfunction throwPortalOutletAlreadyDisposedError() {\n  throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\n\n\nfunction throwUnknownPortalTypeError() {\n  throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' + 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\n\n\nfunction throwNullPortalOutletError() {\n  throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\n\n\nfunction throwNoPortalAttachedError() {\n  throw Error('Attempting to detach a portal that is not attached to a host');\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\n\n\nclass Portal {\n  /** Attach this portal to a host. */\n  attach(host) {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (host == null) {\n        throwNullPortalOutletError();\n      }\n\n      if (host.hasAttached()) {\n        throwPortalAlreadyAttachedError();\n      }\n    }\n\n    this._attachedHost = host;\n    return host.attach(this);\n  }\n  /** Detach this portal from its host */\n\n\n  detach() {\n    let host = this._attachedHost;\n\n    if (host != null) {\n      this._attachedHost = null;\n      host.detach();\n    } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throwNoPortalAttachedError();\n    }\n  }\n  /** Whether this portal is attached to a host. */\n\n\n  get isAttached() {\n    return this._attachedHost != null;\n  }\n  /**\n   * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n   * the PortalOutlet when it is performing an `attach()` or `detach()`.\n   */\n\n\n  setAttachedHost(host) {\n    this._attachedHost = host;\n  }\n\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\n\n\nclass ComponentPortal extends Portal {\n  constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n    super();\n    this.component = component;\n    this.viewContainerRef = viewContainerRef;\n    this.injector = injector;\n    this.componentFactoryResolver = componentFactoryResolver;\n  }\n\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\n\n\nclass TemplatePortal extends Portal {\n  constructor(template, viewContainerRef, context) {\n    super();\n    this.templateRef = template;\n    this.viewContainerRef = viewContainerRef;\n    this.context = context;\n  }\n\n  get origin() {\n    return this.templateRef.elementRef;\n  }\n  /**\n   * Attach the portal to the provided `PortalOutlet`.\n   * When a context is provided it will override the `context` property of the `TemplatePortal`\n   * instance.\n   */\n\n\n  attach(host, context = this.context) {\n    this.context = context;\n    return super.attach(host);\n  }\n\n  detach() {\n    this.context = undefined;\n    return super.detach();\n  }\n\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\n\n\nclass DomPortal extends Portal {\n  constructor(element) {\n    super();\n    this.element = element instanceof ElementRef ? element.nativeElement : element;\n  }\n\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\n\n\nclass BasePortalOutlet {\n  constructor() {\n    /** Whether this host has already been permanently disposed. */\n    this._isDisposed = false; // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n\n    this.attachDomPortal = null;\n  }\n  /** Whether this host has an attached portal. */\n\n\n  hasAttached() {\n    return !!this._attachedPortal;\n  }\n  /** Attaches a portal. */\n\n\n  attach(portal) {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!portal) {\n        throwNullPortalError();\n      }\n\n      if (this.hasAttached()) {\n        throwPortalAlreadyAttachedError();\n      }\n\n      if (this._isDisposed) {\n        throwPortalOutletAlreadyDisposedError();\n      }\n    }\n\n    if (portal instanceof ComponentPortal) {\n      this._attachedPortal = portal;\n      return this.attachComponentPortal(portal);\n    } else if (portal instanceof TemplatePortal) {\n      this._attachedPortal = portal;\n      return this.attachTemplatePortal(portal); // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n    } else if (this.attachDomPortal && portal instanceof DomPortal) {\n      this._attachedPortal = portal;\n      return this.attachDomPortal(portal);\n    }\n\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throwUnknownPortalTypeError();\n    }\n  }\n  /** Detaches a previously attached portal. */\n\n\n  detach() {\n    if (this._attachedPortal) {\n      this._attachedPortal.setAttachedHost(null);\n\n      this._attachedPortal = null;\n    }\n\n    this._invokeDisposeFn();\n  }\n  /** Permanently dispose of this portal host. */\n\n\n  dispose() {\n    if (this.hasAttached()) {\n      this.detach();\n    }\n\n    this._invokeDisposeFn();\n\n    this._isDisposed = true;\n  }\n  /** @docs-private */\n\n\n  setDisposeFn(fn) {\n    this._disposeFn = fn;\n  }\n\n  _invokeDisposeFn() {\n    if (this._disposeFn) {\n      this._disposeFn();\n\n      this._disposeFn = null;\n    }\n  }\n\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass BasePortalHost extends BasePortalOutlet {}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\n\n\nclass DomPortalOutlet extends BasePortalOutlet {\n  constructor(\n  /** Element into which the content is projected. */\n  outletElement, _componentFactoryResolver, _appRef, _defaultInjector,\n  /**\n   * @deprecated `_document` Parameter to be made required.\n   * @breaking-change 10.0.0\n   */\n  _document) {\n    super();\n    this.outletElement = outletElement;\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._appRef = _appRef;\n    this._defaultInjector = _defaultInjector;\n    /**\n     * Attaches a DOM portal by transferring its content into the outlet.\n     * @param portal Portal to be attached.\n     * @deprecated To be turned into a method.\n     * @breaking-change 10.0.0\n     */\n\n    this.attachDomPortal = portal => {\n      // @breaking-change 10.0.0 Remove check and error once the\n      // `_document` constructor parameter is required.\n      if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('Cannot attach DOM portal without _document constructor parameter');\n      }\n\n      const element = portal.element;\n\n      if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('DOM portal content must be attached to a parent node.');\n      } // Anchor used to save the element's previous position so\n      // that we can restore it when the portal is detached.\n\n\n      const anchorNode = this._document.createComment('dom-portal');\n\n      element.parentNode.insertBefore(anchorNode, element);\n      this.outletElement.appendChild(element);\n      this._attachedPortal = portal;\n      super.setDisposeFn(() => {\n        // We can't use `replaceWith` here because IE doesn't support it.\n        if (anchorNode.parentNode) {\n          anchorNode.parentNode.replaceChild(element, anchorNode);\n        }\n      });\n    };\n\n    this._document = _document;\n  }\n  /**\n   * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n   * @param portal Portal to be attached\n   * @returns Reference to the created component.\n   */\n\n\n  attachComponentPortal(portal) {\n    const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n    const componentFactory = resolver.resolveComponentFactory(portal.component);\n    let componentRef; // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n    // for the component (in terms of Angular's component tree, not rendering).\n    // When the ViewContainerRef is missing, we use the factory to create the component directly\n    // and then manually attach the view to the application.\n\n    if (portal.viewContainerRef) {\n      componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n      this.setDisposeFn(() => componentRef.destroy());\n    } else {\n      componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n\n      this._appRef.attachView(componentRef.hostView);\n\n      this.setDisposeFn(() => {\n        this._appRef.detachView(componentRef.hostView);\n\n        componentRef.destroy();\n      });\n    } // At this point the component has been instantiated, so we move it to the location in the DOM\n    // where we want it to be rendered.\n\n\n    this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n    this._attachedPortal = portal;\n    return componentRef;\n  }\n  /**\n   * Attaches a template portal to the DOM as an embedded view.\n   * @param portal Portal to be attached.\n   * @returns Reference to the created embedded view.\n   */\n\n\n  attachTemplatePortal(portal) {\n    let viewContainer = portal.viewContainerRef;\n    let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context); // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n    // But for the DomPortalOutlet the view can be added everywhere in the DOM\n    // (e.g Overlay Container) To move the view to the specified host element. We just\n    // re-append the existing root nodes.\n\n    viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode)); // Note that we want to detect changes after the nodes have been moved so that\n    // any directives inside the portal that are looking at the DOM inside a lifecycle\n    // hook won't be invoked too early.\n\n    viewRef.detectChanges();\n    this.setDisposeFn(() => {\n      let index = viewContainer.indexOf(viewRef);\n\n      if (index !== -1) {\n        viewContainer.remove(index);\n      }\n    });\n    this._attachedPortal = portal; // TODO(jelbourn): Return locals from view.\n\n    return viewRef;\n  }\n  /**\n   * Clears out a portal from the DOM.\n   */\n\n\n  dispose() {\n    super.dispose();\n    this.outletElement.remove();\n  }\n  /** Gets the root HTMLElement for an instantiated component. */\n\n\n  _getComponentRootNode(componentRef) {\n    return componentRef.hostView.rootNodes[0];\n  }\n\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass DomPortalHost extends DomPortalOutlet {}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n\n\nclass CdkPortal extends TemplatePortal {\n  constructor(templateRef, viewContainerRef) {\n    super(templateRef, viewContainerRef);\n  }\n\n}\n\nCdkPortal.ɵfac = function CdkPortal_Factory(t) {\n  return new (t || CdkPortal)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n};\n\nCdkPortal.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkPortal,\n  selectors: [[\"\", \"cdkPortal\", \"\"]],\n  exportAs: [\"cdkPortal\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortal, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortal]',\n      exportAs: 'cdkPortal'\n    }]\n  }], function () {\n    return [{\n      type: i0.TemplateRef\n    }, {\n      type: i0.ViewContainerRef\n    }];\n  }, null);\n})();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass TemplatePortalDirective extends CdkPortal {}\n\nTemplatePortalDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵTemplatePortalDirective_BaseFactory;\n  return function TemplatePortalDirective_Factory(t) {\n    return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = i0.ɵɵgetInheritedFactory(TemplatePortalDirective)))(t || TemplatePortalDirective);\n  };\n}();\n\nTemplatePortalDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: TemplatePortalDirective,\n  selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]],\n  exportAs: [\"cdkPortal\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkPortal,\n    useExisting: TemplatePortalDirective\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TemplatePortalDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-portal], [portal]',\n      exportAs: 'cdkPortal',\n      providers: [{\n        provide: CdkPortal,\n        useExisting: TemplatePortalDirective\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n\n\nclass CdkPortalOutlet extends BasePortalOutlet {\n  constructor(_componentFactoryResolver, _viewContainerRef,\n  /**\n   * @deprecated `_document` parameter to be made required.\n   * @breaking-change 9.0.0\n   */\n  _document) {\n    super();\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._viewContainerRef = _viewContainerRef;\n    /** Whether the portal component is initialized. */\n\n    this._isInitialized = false;\n    /** Emits when a portal is attached to the outlet. */\n\n    this.attached = new EventEmitter();\n    /**\n     * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n     * @param portal Portal to be attached.\n     * @deprecated To be turned into a method.\n     * @breaking-change 10.0.0\n     */\n\n    this.attachDomPortal = portal => {\n      // @breaking-change 9.0.0 Remove check and error once the\n      // `_document` constructor parameter is required.\n      if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('Cannot attach DOM portal without _document constructor parameter');\n      }\n\n      const element = portal.element;\n\n      if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('DOM portal content must be attached to a parent node.');\n      } // Anchor used to save the element's previous position so\n      // that we can restore it when the portal is detached.\n\n\n      const anchorNode = this._document.createComment('dom-portal');\n\n      portal.setAttachedHost(this);\n      element.parentNode.insertBefore(anchorNode, element);\n\n      this._getRootNode().appendChild(element);\n\n      this._attachedPortal = portal;\n      super.setDisposeFn(() => {\n        if (anchorNode.parentNode) {\n          anchorNode.parentNode.replaceChild(element, anchorNode);\n        }\n      });\n    };\n\n    this._document = _document;\n  }\n  /** Portal associated with the Portal outlet. */\n\n\n  get portal() {\n    return this._attachedPortal;\n  }\n\n  set portal(portal) {\n    // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n    // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n    // and attach a portal programmatically in the parent component. When Angular does the first CD\n    // round, it will fire the setter with empty string, causing the user's content to be cleared.\n    if (this.hasAttached() && !portal && !this._isInitialized) {\n      return;\n    }\n\n    if (this.hasAttached()) {\n      super.detach();\n    }\n\n    if (portal) {\n      super.attach(portal);\n    }\n\n    this._attachedPortal = portal;\n  }\n  /** Component or view reference that is attached to the portal. */\n\n\n  get attachedRef() {\n    return this._attachedRef;\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    super.dispose();\n    this._attachedPortal = null;\n    this._attachedRef = null;\n  }\n  /**\n   * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n   *\n   * @param portal Portal to be attached to the portal outlet.\n   * @returns Reference to the created component.\n   */\n\n\n  attachComponentPortal(portal) {\n    portal.setAttachedHost(this); // If the portal specifies an origin, use that as the logical location of the component\n    // in the application tree. Otherwise use the location of this PortalOutlet.\n\n    const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n    const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n    const componentFactory = resolver.resolveComponentFactory(portal.component);\n    const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector); // If we're using a view container that's different from the injected one (e.g. when the portal\n    // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n    // inside of the alternate view container.\n\n    if (viewContainerRef !== this._viewContainerRef) {\n      this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n    }\n\n    super.setDisposeFn(() => ref.destroy());\n    this._attachedPortal = portal;\n    this._attachedRef = ref;\n    this.attached.emit(ref);\n    return ref;\n  }\n  /**\n   * Attach the given TemplatePortal to this PortalHost as an embedded View.\n   * @param portal Portal to be attached.\n   * @returns Reference to the created embedded view.\n   */\n\n\n  attachTemplatePortal(portal) {\n    portal.setAttachedHost(this);\n\n    const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n\n    super.setDisposeFn(() => this._viewContainerRef.clear());\n    this._attachedPortal = portal;\n    this._attachedRef = viewRef;\n    this.attached.emit(viewRef);\n    return viewRef;\n  }\n  /** Gets the root node of the portal outlet. */\n\n\n  _getRootNode() {\n    const nativeElement = this._viewContainerRef.element.nativeElement; // The directive could be set on a template which will result in a comment\n    // node being the root. Use the comment's parent node if that is the case.\n\n    return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode;\n  }\n\n}\n\nCdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) {\n  return new (t || CdkPortalOutlet)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT));\n};\n\nCdkPortalOutlet.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkPortalOutlet,\n  selectors: [[\"\", \"cdkPortalOutlet\", \"\"]],\n  inputs: {\n    portal: [\"cdkPortalOutlet\", \"portal\"]\n  },\n  outputs: {\n    attached: \"attached\"\n  },\n  exportAs: [\"cdkPortalOutlet\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortalOutlet, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortalOutlet]',\n      exportAs: 'cdkPortalOutlet',\n      inputs: ['portal: cdkPortalOutlet']\n    }]\n  }], function () {\n    return [{\n      type: i0.ComponentFactoryResolver\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    attached: [{\n      type: Output\n    }]\n  });\n})();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass PortalHostDirective extends CdkPortalOutlet {}\n\nPortalHostDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵPortalHostDirective_BaseFactory;\n  return function PortalHostDirective_Factory(t) {\n    return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = i0.ɵɵgetInheritedFactory(PortalHostDirective)))(t || PortalHostDirective);\n  };\n}();\n\nPortalHostDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: PortalHostDirective,\n  selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]],\n  inputs: {\n    portal: [\"cdkPortalHost\", \"portal\"]\n  },\n  exportAs: [\"cdkPortalHost\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkPortalOutlet,\n    useExisting: PortalHostDirective\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalHostDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortalHost], [portalHost]',\n      exportAs: 'cdkPortalHost',\n      inputs: ['portal: cdkPortalHost'],\n      providers: [{\n        provide: CdkPortalOutlet,\n        useExisting: PortalHostDirective\n      }]\n    }]\n  }], null, null);\n})();\n\nclass PortalModule {}\n\nPortalModule.ɵfac = function PortalModule_Factory(t) {\n  return new (t || PortalModule)();\n};\n\nPortalModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: PortalModule\n});\nPortalModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n      declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\n\n\nclass PortalInjector {\n  constructor(_parentInjector, _customTokens) {\n    this._parentInjector = _parentInjector;\n    this._customTokens = _customTokens;\n  }\n\n  get(token, notFoundValue) {\n    const value = this._customTokens.get(token);\n\n    if (typeof value !== 'undefined') {\n      return value;\n    }\n\n    return this._parentInjector.get(token, notFoundValue);\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/portal.mjs"],"names":["i0","ElementRef","Directive","EventEmitter","Inject","Output","NgModule","DOCUMENT","throwNullPortalError","Error","throwPortalAlreadyAttachedError","throwPortalOutletAlreadyDisposedError","throwUnknownPortalTypeError","throwNullPortalOutletError","throwNoPortalAttachedError","Portal","attach","host","ngDevMode","hasAttached","_attachedHost","detach","isAttached","setAttachedHost","ComponentPortal","constructor","component","viewContainerRef","injector","componentFactoryResolver","TemplatePortal","template","context","templateRef","origin","elementRef","undefined","DomPortal","element","nativeElement","BasePortalOutlet","_isDisposed","attachDomPortal","_attachedPortal","portal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","dispose","setDisposeFn","fn","_disposeFn","BasePortalHost","DomPortalOutlet","outletElement","_componentFactoryResolver","_appRef","_defaultInjector","_document","parentNode","anchorNode","createComment","insertBefore","appendChild","replaceChild","resolver","componentFactory","resolveComponentFactory","componentRef","createComponent","length","destroy","create","attachView","hostView","detachView","_getComponentRootNode","viewContainer","viewRef","createEmbeddedView","rootNodes","forEach","rootNode","detectChanges","index","indexOf","remove","DomPortalHost","CdkPortal","ɵfac","TemplateRef","ViewContainerRef","ɵdir","type","args","selector","exportAs","TemplatePortalDirective","provide","useExisting","providers","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ngOnInit","ngOnDestroy","ref","emit","clear","nodeType","ELEMENT_NODE","ComponentFactoryResolver","inputs","decorators","PortalHostDirective","PortalModule","ɵmod","ɵinj","exports","declarations","PortalInjector","_parentInjector","_customTokens","get","token","notFoundValue","value"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { ElementRef, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n    throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n    throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n    throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n    throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n        'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n    throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n    throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n    /** Attach this portal to a host. */\n    attach(host) {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (host == null) {\n                throwNullPortalOutletError();\n            }\n            if (host.hasAttached()) {\n                throwPortalAlreadyAttachedError();\n            }\n        }\n        this._attachedHost = host;\n        return host.attach(this);\n    }\n    /** Detach this portal from its host */\n    detach() {\n        let host = this._attachedHost;\n        if (host != null) {\n            this._attachedHost = null;\n            host.detach();\n        }\n        else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            throwNoPortalAttachedError();\n        }\n    }\n    /** Whether this portal is attached to a host. */\n    get isAttached() {\n        return this._attachedHost != null;\n    }\n    /**\n     * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n     * the PortalOutlet when it is performing an `attach()` or `detach()`.\n     */\n    setAttachedHost(host) {\n        this._attachedHost = host;\n    }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n    constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n        super();\n        this.component = component;\n        this.viewContainerRef = viewContainerRef;\n        this.injector = injector;\n        this.componentFactoryResolver = componentFactoryResolver;\n    }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n    constructor(template, viewContainerRef, context) {\n        super();\n        this.templateRef = template;\n        this.viewContainerRef = viewContainerRef;\n        this.context = context;\n    }\n    get origin() {\n        return this.templateRef.elementRef;\n    }\n    /**\n     * Attach the portal to the provided `PortalOutlet`.\n     * When a context is provided it will override the `context` property of the `TemplatePortal`\n     * instance.\n     */\n    attach(host, context = this.context) {\n        this.context = context;\n        return super.attach(host);\n    }\n    detach() {\n        this.context = undefined;\n        return super.detach();\n    }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n    constructor(element) {\n        super();\n        this.element = element instanceof ElementRef ? element.nativeElement : element;\n    }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n    constructor() {\n        /** Whether this host has already been permanently disposed. */\n        this._isDisposed = false;\n        // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n        this.attachDomPortal = null;\n    }\n    /** Whether this host has an attached portal. */\n    hasAttached() {\n        return !!this._attachedPortal;\n    }\n    /** Attaches a portal. */\n    attach(portal) {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (!portal) {\n                throwNullPortalError();\n            }\n            if (this.hasAttached()) {\n                throwPortalAlreadyAttachedError();\n            }\n            if (this._isDisposed) {\n                throwPortalOutletAlreadyDisposedError();\n            }\n        }\n        if (portal instanceof ComponentPortal) {\n            this._attachedPortal = portal;\n            return this.attachComponentPortal(portal);\n        }\n        else if (portal instanceof TemplatePortal) {\n            this._attachedPortal = portal;\n            return this.attachTemplatePortal(portal);\n            // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n        }\n        else if (this.attachDomPortal && portal instanceof DomPortal) {\n            this._attachedPortal = portal;\n            return this.attachDomPortal(portal);\n        }\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            throwUnknownPortalTypeError();\n        }\n    }\n    /** Detaches a previously attached portal. */\n    detach() {\n        if (this._attachedPortal) {\n            this._attachedPortal.setAttachedHost(null);\n            this._attachedPortal = null;\n        }\n        this._invokeDisposeFn();\n    }\n    /** Permanently dispose of this portal host. */\n    dispose() {\n        if (this.hasAttached()) {\n            this.detach();\n        }\n        this._invokeDisposeFn();\n        this._isDisposed = true;\n    }\n    /** @docs-private */\n    setDisposeFn(fn) {\n        this._disposeFn = fn;\n    }\n    _invokeDisposeFn() {\n        if (this._disposeFn) {\n            this._disposeFn();\n            this._disposeFn = null;\n        }\n    }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n    constructor(\n    /** Element into which the content is projected. */\n    outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n    /**\n     * @deprecated `_document` Parameter to be made required.\n     * @breaking-change 10.0.0\n     */\n    _document) {\n        super();\n        this.outletElement = outletElement;\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._appRef = _appRef;\n        this._defaultInjector = _defaultInjector;\n        /**\n         * Attaches a DOM portal by transferring its content into the outlet.\n         * @param portal Portal to be attached.\n         * @deprecated To be turned into a method.\n         * @breaking-change 10.0.0\n         */\n        this.attachDomPortal = (portal) => {\n            // @breaking-change 10.0.0 Remove check and error once the\n            // `_document` constructor parameter is required.\n            if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('Cannot attach DOM portal without _document constructor parameter');\n            }\n            const element = portal.element;\n            if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('DOM portal content must be attached to a parent node.');\n            }\n            // Anchor used to save the element's previous position so\n            // that we can restore it when the portal is detached.\n            const anchorNode = this._document.createComment('dom-portal');\n            element.parentNode.insertBefore(anchorNode, element);\n            this.outletElement.appendChild(element);\n            this._attachedPortal = portal;\n            super.setDisposeFn(() => {\n                // We can't use `replaceWith` here because IE doesn't support it.\n                if (anchorNode.parentNode) {\n                    anchorNode.parentNode.replaceChild(element, anchorNode);\n                }\n            });\n        };\n        this._document = _document;\n    }\n    /**\n     * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n     * @param portal Portal to be attached\n     * @returns Reference to the created component.\n     */\n    attachComponentPortal(portal) {\n        const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n        const componentFactory = resolver.resolveComponentFactory(portal.component);\n        let componentRef;\n        // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n        // for the component (in terms of Angular's component tree, not rendering).\n        // When the ViewContainerRef is missing, we use the factory to create the component directly\n        // and then manually attach the view to the application.\n        if (portal.viewContainerRef) {\n            componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n            this.setDisposeFn(() => componentRef.destroy());\n        }\n        else {\n            componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n            this._appRef.attachView(componentRef.hostView);\n            this.setDisposeFn(() => {\n                this._appRef.detachView(componentRef.hostView);\n                componentRef.destroy();\n            });\n        }\n        // At this point the component has been instantiated, so we move it to the location in the DOM\n        // where we want it to be rendered.\n        this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n        this._attachedPortal = portal;\n        return componentRef;\n    }\n    /**\n     * Attaches a template portal to the DOM as an embedded view.\n     * @param portal Portal to be attached.\n     * @returns Reference to the created embedded view.\n     */\n    attachTemplatePortal(portal) {\n        let viewContainer = portal.viewContainerRef;\n        let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n        // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n        // But for the DomPortalOutlet the view can be added everywhere in the DOM\n        // (e.g Overlay Container) To move the view to the specified host element. We just\n        // re-append the existing root nodes.\n        viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n        // Note that we want to detect changes after the nodes have been moved so that\n        // any directives inside the portal that are looking at the DOM inside a lifecycle\n        // hook won't be invoked too early.\n        viewRef.detectChanges();\n        this.setDisposeFn(() => {\n            let index = viewContainer.indexOf(viewRef);\n            if (index !== -1) {\n                viewContainer.remove(index);\n            }\n        });\n        this._attachedPortal = portal;\n        // TODO(jelbourn): Return locals from view.\n        return viewRef;\n    }\n    /**\n     * Clears out a portal from the DOM.\n     */\n    dispose() {\n        super.dispose();\n        this.outletElement.remove();\n    }\n    /** Gets the root HTMLElement for an instantiated component. */\n    _getComponentRootNode(componentRef) {\n        return componentRef.hostView.rootNodes[0];\n    }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n    constructor(templateRef, viewContainerRef) {\n        super(templateRef, viewContainerRef);\n    }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortal]',\n                    exportAs: 'cdkPortal',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n        {\n            provide: CdkPortal,\n            useExisting: TemplatePortalDirective,\n        },\n    ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-portal], [portal]',\n                    exportAs: 'cdkPortal',\n                    providers: [\n                        {\n                            provide: CdkPortal,\n                            useExisting: TemplatePortalDirective,\n                        },\n                    ],\n                }]\n        }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n    constructor(_componentFactoryResolver, _viewContainerRef, \n    /**\n     * @deprecated `_document` parameter to be made required.\n     * @breaking-change 9.0.0\n     */\n    _document) {\n        super();\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._viewContainerRef = _viewContainerRef;\n        /** Whether the portal component is initialized. */\n        this._isInitialized = false;\n        /** Emits when a portal is attached to the outlet. */\n        this.attached = new EventEmitter();\n        /**\n         * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n         * @param portal Portal to be attached.\n         * @deprecated To be turned into a method.\n         * @breaking-change 10.0.0\n         */\n        this.attachDomPortal = (portal) => {\n            // @breaking-change 9.0.0 Remove check and error once the\n            // `_document` constructor parameter is required.\n            if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('Cannot attach DOM portal without _document constructor parameter');\n            }\n            const element = portal.element;\n            if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('DOM portal content must be attached to a parent node.');\n            }\n            // Anchor used to save the element's previous position so\n            // that we can restore it when the portal is detached.\n            const anchorNode = this._document.createComment('dom-portal');\n            portal.setAttachedHost(this);\n            element.parentNode.insertBefore(anchorNode, element);\n            this._getRootNode().appendChild(element);\n            this._attachedPortal = portal;\n            super.setDisposeFn(() => {\n                if (anchorNode.parentNode) {\n                    anchorNode.parentNode.replaceChild(element, anchorNode);\n                }\n            });\n        };\n        this._document = _document;\n    }\n    /** Portal associated with the Portal outlet. */\n    get portal() {\n        return this._attachedPortal;\n    }\n    set portal(portal) {\n        // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n        // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n        // and attach a portal programmatically in the parent component. When Angular does the first CD\n        // round, it will fire the setter with empty string, causing the user's content to be cleared.\n        if (this.hasAttached() && !portal && !this._isInitialized) {\n            return;\n        }\n        if (this.hasAttached()) {\n            super.detach();\n        }\n        if (portal) {\n            super.attach(portal);\n        }\n        this._attachedPortal = portal;\n    }\n    /** Component or view reference that is attached to the portal. */\n    get attachedRef() {\n        return this._attachedRef;\n    }\n    ngOnInit() {\n        this._isInitialized = true;\n    }\n    ngOnDestroy() {\n        super.dispose();\n        this._attachedPortal = null;\n        this._attachedRef = null;\n    }\n    /**\n     * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n     *\n     * @param portal Portal to be attached to the portal outlet.\n     * @returns Reference to the created component.\n     */\n    attachComponentPortal(portal) {\n        portal.setAttachedHost(this);\n        // If the portal specifies an origin, use that as the logical location of the component\n        // in the application tree. Otherwise use the location of this PortalOutlet.\n        const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n        const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n        const componentFactory = resolver.resolveComponentFactory(portal.component);\n        const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n        // If we're using a view container that's different from the injected one (e.g. when the portal\n        // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n        // inside of the alternate view container.\n        if (viewContainerRef !== this._viewContainerRef) {\n            this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n        }\n        super.setDisposeFn(() => ref.destroy());\n        this._attachedPortal = portal;\n        this._attachedRef = ref;\n        this.attached.emit(ref);\n        return ref;\n    }\n    /**\n     * Attach the given TemplatePortal to this PortalHost as an embedded View.\n     * @param portal Portal to be attached.\n     * @returns Reference to the created embedded view.\n     */\n    attachTemplatePortal(portal) {\n        portal.setAttachedHost(this);\n        const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n        super.setDisposeFn(() => this._viewContainerRef.clear());\n        this._attachedPortal = portal;\n        this._attachedRef = viewRef;\n        this.attached.emit(viewRef);\n        return viewRef;\n    }\n    /** Gets the root node of the portal outlet. */\n    _getRootNode() {\n        const nativeElement = this._viewContainerRef.element.nativeElement;\n        // The directive could be set on a template which will result in a comment\n        // node being the root. Use the comment's parent node if that is the case.\n        return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n            ? nativeElement\n            : nativeElement.parentNode);\n    }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortalOutlet]',\n                    exportAs: 'cdkPortalOutlet',\n                    inputs: ['portal: cdkPortalOutlet'],\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { attached: [{\n                type: Output\n            }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n        {\n            provide: CdkPortalOutlet,\n            useExisting: PortalHostDirective,\n        },\n    ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortalHost], [portalHost]',\n                    exportAs: 'cdkPortalHost',\n                    inputs: ['portal: cdkPortalHost'],\n                    providers: [\n                        {\n                            provide: CdkPortalOutlet,\n                            useExisting: PortalHostDirective,\n                        },\n                    ],\n                }]\n        }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n                    declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n    constructor(_parentInjector, _customTokens) {\n        this._parentInjector = _parentInjector;\n        this._customTokens = _customTokens;\n    }\n    get(token, notFoundValue) {\n        const value = this._customTokens.get(token);\n        if (typeof value !== 'undefined') {\n            return value;\n        }\n        return this._parentInjector.get(token, notFoundValue);\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Options to pass to the animationstart listener. */\n\nconst listenerOptions = normalizePassiveListenerOptions({\n  passive: true\n});\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\n\nclass AutofillMonitor {\n  constructor(_platform, _ngZone) {\n    this._platform = _platform;\n    this._ngZone = _ngZone;\n    this._monitoredElements = new Map();\n  }\n\n  monitor(elementOrRef) {\n    if (!this._platform.isBrowser) {\n      return EMPTY;\n    }\n\n    const element = coerceElement(elementOrRef);\n\n    const info = this._monitoredElements.get(element);\n\n    if (info) {\n      return info.subject;\n    }\n\n    const result = new Subject();\n    const cssClass = 'cdk-text-field-autofilled';\n\n    const listener = event => {\n      // Animation events fire on initial element render, we check for the presence of the autofill\n      // CSS class to make sure this is a real change in state, not just the initial render before\n      // we fire off events.\n      if (event.animationName === 'cdk-text-field-autofill-start' && !element.classList.contains(cssClass)) {\n        element.classList.add(cssClass);\n\n        this._ngZone.run(() => result.next({\n          target: event.target,\n          isAutofilled: true\n        }));\n      } else if (event.animationName === 'cdk-text-field-autofill-end' && element.classList.contains(cssClass)) {\n        element.classList.remove(cssClass);\n\n        this._ngZone.run(() => result.next({\n          target: event.target,\n          isAutofilled: false\n        }));\n      }\n    };\n\n    this._ngZone.runOutsideAngular(() => {\n      element.addEventListener('animationstart', listener, listenerOptions);\n      element.classList.add('cdk-text-field-autofill-monitored');\n    });\n\n    this._monitoredElements.set(element, {\n      subject: result,\n      unlisten: () => {\n        element.removeEventListener('animationstart', listener, listenerOptions);\n      }\n    });\n\n    return result;\n  }\n\n  stopMonitoring(elementOrRef) {\n    const element = coerceElement(elementOrRef);\n\n    const info = this._monitoredElements.get(element);\n\n    if (info) {\n      info.unlisten();\n      info.subject.complete();\n      element.classList.remove('cdk-text-field-autofill-monitored');\n      element.classList.remove('cdk-text-field-autofilled');\n\n      this._monitoredElements.delete(element);\n    }\n  }\n\n  ngOnDestroy() {\n    this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n  }\n\n}\n\nAutofillMonitor.ɵfac = function AutofillMonitor_Factory(t) {\n  return new (t || AutofillMonitor)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone));\n};\n\nAutofillMonitor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: AutofillMonitor,\n  factory: AutofillMonitor.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AutofillMonitor, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }];\n  }, null);\n})();\n/** A directive that can be used to monitor the autofill state of an input. */\n\n\nclass CdkAutofill {\n  constructor(_elementRef, _autofillMonitor) {\n    this._elementRef = _elementRef;\n    this._autofillMonitor = _autofillMonitor;\n    /** Emits when the autofill state of the element changes. */\n\n    this.cdkAutofill = new EventEmitter();\n  }\n\n  ngOnInit() {\n    this._autofillMonitor.monitor(this._elementRef).subscribe(event => this.cdkAutofill.emit(event));\n  }\n\n  ngOnDestroy() {\n    this._autofillMonitor.stopMonitoring(this._elementRef);\n  }\n\n}\n\nCdkAutofill.ɵfac = function CdkAutofill_Factory(t) {\n  return new (t || CdkAutofill)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(AutofillMonitor));\n};\n\nCdkAutofill.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkAutofill,\n  selectors: [[\"\", \"cdkAutofill\", \"\"]],\n  outputs: {\n    cdkAutofill: \"cdkAutofill\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAutofill, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkAutofill]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: AutofillMonitor\n    }];\n  }, {\n    cdkAutofill: [{\n      type: Output\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Directive to automatically resize a textarea to fit its content. */\n\n\nclass CdkTextareaAutosize {\n  constructor(_elementRef, _platform, _ngZone,\n  /** @breaking-change 11.0.0 make document required */\n  document) {\n    this._elementRef = _elementRef;\n    this._platform = _platform;\n    this._ngZone = _ngZone;\n    this._destroyed = new Subject();\n    this._enabled = true;\n    /**\n     * Value of minRows as of last resize. If the minRows has decreased, the\n     * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n     * does not have the same problem because it does not affect the textarea's scrollHeight.\n     */\n\n    this._previousMinRows = -1;\n    this._isViewInited = false;\n    /** Handles `focus` and `blur` events. */\n\n    this._handleFocusEvent = event => {\n      this._hasFocus = event.type === 'focus';\n    };\n\n    this._document = document;\n    this._textareaElement = this._elementRef.nativeElement;\n  }\n  /** Minimum amount of rows in the textarea. */\n\n\n  get minRows() {\n    return this._minRows;\n  }\n\n  set minRows(value) {\n    this._minRows = coerceNumberProperty(value);\n\n    this._setMinHeight();\n  }\n  /** Maximum amount of rows in the textarea. */\n\n\n  get maxRows() {\n    return this._maxRows;\n  }\n\n  set maxRows(value) {\n    this._maxRows = coerceNumberProperty(value);\n\n    this._setMaxHeight();\n  }\n  /** Whether autosizing is enabled or not */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    value = coerceBooleanProperty(value); // Only act if the actual value changed. This specifically helps to not run\n    // resizeToFitContent too early (i.e. before ngAfterViewInit)\n\n    if (this._enabled !== value) {\n      (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n    }\n  }\n\n  get placeholder() {\n    return this._textareaElement.placeholder;\n  }\n\n  set placeholder(value) {\n    this._cachedPlaceholderHeight = undefined;\n    this._textareaElement.placeholder = value;\n\n    this._cacheTextareaPlaceholderHeight();\n  }\n  /** Sets the minimum height of the textarea as determined by minRows. */\n\n\n  _setMinHeight() {\n    const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n    if (minHeight) {\n      this._textareaElement.style.minHeight = minHeight;\n    }\n  }\n  /** Sets the maximum height of the textarea as determined by maxRows. */\n\n\n  _setMaxHeight() {\n    const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n\n    if (maxHeight) {\n      this._textareaElement.style.maxHeight = maxHeight;\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this._platform.isBrowser) {\n      // Remember the height which we started with in case autosizing is disabled\n      this._initialHeight = this._textareaElement.style.height;\n      this.resizeToFitContent();\n\n      this._ngZone.runOutsideAngular(() => {\n        const window = this._getWindow();\n\n        fromEvent(window, 'resize').pipe(auditTime(16), takeUntil(this._destroyed)).subscribe(() => this.resizeToFitContent(true));\n\n        this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n\n        this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n      });\n\n      this._isViewInited = true;\n      this.resizeToFitContent(true);\n    }\n  }\n\n  ngOnDestroy() {\n    this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n\n    this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n  }\n  /**\n   * Cache the height of a single-row textarea if it has not already been cached.\n   *\n   * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n   * maxRows. For the initial version, we will assume that the height of a single line in the\n   * textarea does not ever change.\n   */\n\n\n  _cacheTextareaLineHeight() {\n    if (this._cachedLineHeight) {\n      return;\n    } // Use a clone element because we have to override some styles.\n\n\n    let textareaClone = this._textareaElement.cloneNode(false);\n\n    textareaClone.rows = 1; // Use `position: absolute` so that this doesn't cause a browser layout and use\n    // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n    // would affect the height.\n\n    textareaClone.style.position = 'absolute';\n    textareaClone.style.visibility = 'hidden';\n    textareaClone.style.border = 'none';\n    textareaClone.style.padding = '0';\n    textareaClone.style.height = '';\n    textareaClone.style.minHeight = '';\n    textareaClone.style.maxHeight = ''; // In Firefox it happens that textarea elements are always bigger than the specified amount\n    // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n    // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n    // to hidden. This ensures that there is no invalid calculation of the line height.\n    // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n\n    textareaClone.style.overflow = 'hidden';\n\n    this._textareaElement.parentNode.appendChild(textareaClone);\n\n    this._cachedLineHeight = textareaClone.clientHeight;\n    textareaClone.remove(); // Min and max heights have to be re-calculated if the cached line height changes\n\n    this._setMinHeight();\n\n    this._setMaxHeight();\n  }\n\n  _measureScrollHeight() {\n    const element = this._textareaElement;\n    const previousMargin = element.style.marginBottom || '';\n    const isFirefox = this._platform.FIREFOX;\n    const needsMarginFiller = isFirefox && this._hasFocus;\n    const measuringClass = isFirefox ? 'cdk-textarea-autosize-measuring-firefox' : 'cdk-textarea-autosize-measuring'; // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n    // work around it by assigning a temporary margin with the same height as the `textarea` so that\n    // it occupies the same amount of space. See #23233.\n\n    if (needsMarginFiller) {\n      element.style.marginBottom = `${element.clientHeight}px`;\n    } // Reset the textarea height to auto in order to shrink back to its default size.\n    // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n\n\n    element.classList.add(measuringClass); // The measuring class includes a 2px padding to workaround an issue with Chrome,\n    // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n\n    const scrollHeight = element.scrollHeight - 4;\n    element.classList.remove(measuringClass);\n\n    if (needsMarginFiller) {\n      element.style.marginBottom = previousMargin;\n    }\n\n    return scrollHeight;\n  }\n\n  _cacheTextareaPlaceholderHeight() {\n    if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n      return;\n    }\n\n    if (!this.placeholder) {\n      this._cachedPlaceholderHeight = 0;\n      return;\n    }\n\n    const value = this._textareaElement.value;\n    this._textareaElement.value = this._textareaElement.placeholder;\n    this._cachedPlaceholderHeight = this._measureScrollHeight();\n    this._textareaElement.value = value;\n  }\n\n  ngDoCheck() {\n    if (this._platform.isBrowser) {\n      this.resizeToFitContent();\n    }\n  }\n  /**\n   * Resize the textarea to fit its content.\n   * @param force Whether to force a height recalculation. By default the height will be\n   *    recalculated only if the value changed since the last call.\n   */\n\n\n  resizeToFitContent(force = false) {\n    // If autosizing is disabled, just skip everything else\n    if (!this._enabled) {\n      return;\n    }\n\n    this._cacheTextareaLineHeight();\n\n    this._cacheTextareaPlaceholderHeight(); // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n    // in checking the height of the textarea.\n\n\n    if (!this._cachedLineHeight) {\n      return;\n    }\n\n    const textarea = this._elementRef.nativeElement;\n    const value = textarea.value; // Only resize if the value or minRows have changed since these calculations can be expensive.\n\n    if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n      return;\n    }\n\n    const scrollHeight = this._measureScrollHeight();\n\n    const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0); // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n\n    textarea.style.height = `${height}px`;\n\n    this._ngZone.runOutsideAngular(() => {\n      if (typeof requestAnimationFrame !== 'undefined') {\n        requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n      } else {\n        setTimeout(() => this._scrollToCaretPosition(textarea));\n      }\n    });\n\n    this._previousValue = value;\n    this._previousMinRows = this._minRows;\n  }\n  /**\n   * Resets the textarea to its original size\n   */\n\n\n  reset() {\n    // Do not try to change the textarea, if the initialHeight has not been determined yet\n    // This might potentially remove styles when reset() is called before ngAfterViewInit\n    if (this._initialHeight !== undefined) {\n      this._textareaElement.style.height = this._initialHeight;\n    }\n  }\n\n  _noopInputHandler() {// no-op handler that ensures we're running change detection on input events.\n  }\n  /** Access injected document if available or fallback to global document reference */\n\n\n  _getDocument() {\n    return this._document || document;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    const doc = this._getDocument();\n\n    return doc.defaultView || window;\n  }\n  /**\n   * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n   * prevent it from scrolling to the caret position. We need to re-set the selection\n   * in order for it to scroll to the proper position.\n   */\n\n\n  _scrollToCaretPosition(textarea) {\n    const {\n      selectionStart,\n      selectionEnd\n    } = textarea; // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n    // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n    // between the time we requested the animation frame and when it was executed.\n    // Also note that we have to assert that the textarea is focused before we set the\n    // selection range. Setting the selection range on a non-focused textarea will cause\n    // it to receive focus on IE and Edge.\n\n    if (!this._destroyed.isStopped && this._hasFocus) {\n      textarea.setSelectionRange(selectionStart, selectionEnd);\n    }\n  }\n\n}\n\nCdkTextareaAutosize.ɵfac = function CdkTextareaAutosize_Factory(t) {\n  return new (t || CdkTextareaAutosize)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(DOCUMENT, 8));\n};\n\nCdkTextareaAutosize.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkTextareaAutosize,\n  selectors: [[\"textarea\", \"cdkTextareaAutosize\", \"\"]],\n  hostAttrs: [\"rows\", \"1\", 1, \"cdk-textarea-autosize\"],\n  hostBindings: function CdkTextareaAutosize_HostBindings(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵlistener(\"input\", function CdkTextareaAutosize_input_HostBindingHandler() {\n        return ctx._noopInputHandler();\n      });\n    }\n  },\n  inputs: {\n    minRows: [\"cdkAutosizeMinRows\", \"minRows\"],\n    maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"],\n    enabled: [\"cdkTextareaAutosize\", \"enabled\"],\n    placeholder: \"placeholder\"\n  },\n  exportAs: [\"cdkTextareaAutosize\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTextareaAutosize, [{\n    type: Directive,\n    args: [{\n      selector: 'textarea[cdkTextareaAutosize]',\n      exportAs: 'cdkTextareaAutosize',\n      host: {\n        'class': 'cdk-textarea-autosize',\n        // Textarea elements that have the directive applied should have a single row by default.\n        // Browsers normally show two rows by default and therefore this limits the minRows binding.\n        'rows': '1',\n        '(input)': '_noopInputHandler()'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    minRows: [{\n      type: Input,\n      args: ['cdkAutosizeMinRows']\n    }],\n    maxRows: [{\n      type: Input,\n      args: ['cdkAutosizeMaxRows']\n    }],\n    enabled: [{\n      type: Input,\n      args: ['cdkTextareaAutosize']\n    }],\n    placeholder: [{\n      type: Input\n    }]\n  });\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass TextFieldModule {}\n\nTextFieldModule.ɵfac = function TextFieldModule_Factory(t) {\n  return new (t || TextFieldModule)();\n};\n\nTextFieldModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TextFieldModule\n});\nTextFieldModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[PlatformModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TextFieldModule, [{\n    type: NgModule,\n    args: [{\n      declarations: [CdkAutofill, CdkTextareaAutosize],\n      imports: [PlatformModule],\n      exports: [CdkAutofill, CdkTextareaAutosize]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/text-field.mjs"],"names":["i1","normalizePassiveListenerOptions","PlatformModule","i0","Injectable","EventEmitter","Directive","Output","Optional","Inject","Input","NgModule","coerceElement","coerceNumberProperty","coerceBooleanProperty","EMPTY","Subject","fromEvent","auditTime","takeUntil","DOCUMENT","listenerOptions","passive","AutofillMonitor","constructor","_platform","_ngZone","_monitoredElements","Map","monitor","elementOrRef","isBrowser","element","info","get","subject","result","cssClass","listener","event","animationName","classList","contains","add","run","next","target","isAutofilled","remove","runOutsideAngular","addEventListener","set","unlisten","removeEventListener","stopMonitoring","complete","delete","ngOnDestroy","forEach","_info","ɵfac","Platform","NgZone","ɵprov","type","args","providedIn","CdkAutofill","_elementRef","_autofillMonitor","cdkAutofill","ngOnInit","subscribe","emit","ElementRef","ɵdir","selector","CdkTextareaAutosize","document","_destroyed","_enabled","_previousMinRows","_isViewInited","_handleFocusEvent","_hasFocus","_document","_textareaElement","nativeElement","minRows","_minRows","value","_setMinHeight","maxRows","_maxRows","_setMaxHeight","enabled","resizeToFitContent","reset","placeholder","_cachedPlaceholderHeight","undefined","_cacheTextareaPlaceholderHeight","minHeight","_cachedLineHeight","style","maxHeight","ngAfterViewInit","_initialHeight","height","window","_getWindow","pipe","_cacheTextareaLineHeight","textareaClone","cloneNode","rows","position","visibility","border","padding","overflow","parentNode","appendChild","clientHeight","_measureScrollHeight","previousMargin","marginBottom","isFirefox","FIREFOX","needsMarginFiller","measuringClass","scrollHeight","ngDoCheck","force","textarea","_previousValue","Math","max","requestAnimationFrame","_scrollToCaretPosition","setTimeout","_noopInputHandler","_getDocument","doc","defaultView","selectionStart","selectionEnd","isStopped","setSelectionRange","exportAs","host","decorators","TextFieldModule","ɵmod","ɵinj","declarations","imports","exports"],"mappings":"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","sourcesContent":["import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n    constructor(_platform, _ngZone) {\n        this._platform = _platform;\n        this._ngZone = _ngZone;\n        this._monitoredElements = new Map();\n    }\n    monitor(elementOrRef) {\n        if (!this._platform.isBrowser) {\n            return EMPTY;\n        }\n        const element = coerceElement(elementOrRef);\n        const info = this._monitoredElements.get(element);\n        if (info) {\n            return info.subject;\n        }\n        const result = new Subject();\n        const cssClass = 'cdk-text-field-autofilled';\n        const listener = ((event) => {\n            // Animation events fire on initial element render, we check for the presence of the autofill\n            // CSS class to make sure this is a real change in state, not just the initial render before\n            // we fire off events.\n            if (event.animationName === 'cdk-text-field-autofill-start' &&\n                !element.classList.contains(cssClass)) {\n                element.classList.add(cssClass);\n                this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n            }\n            else if (event.animationName === 'cdk-text-field-autofill-end' &&\n                element.classList.contains(cssClass)) {\n                element.classList.remove(cssClass);\n                this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n            }\n        });\n        this._ngZone.runOutsideAngular(() => {\n            element.addEventListener('animationstart', listener, listenerOptions);\n            element.classList.add('cdk-text-field-autofill-monitored');\n        });\n        this._monitoredElements.set(element, {\n            subject: result,\n            unlisten: () => {\n                element.removeEventListener('animationstart', listener, listenerOptions);\n            },\n        });\n        return result;\n    }\n    stopMonitoring(elementOrRef) {\n        const element = coerceElement(elementOrRef);\n        const info = this._monitoredElements.get(element);\n        if (info) {\n            info.unlisten();\n            info.subject.complete();\n            element.classList.remove('cdk-text-field-autofill-monitored');\n            element.classList.remove('cdk-text-field-autofilled');\n            this._monitoredElements.delete(element);\n        }\n    }\n    ngOnDestroy() {\n        this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n    }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n    constructor(_elementRef, _autofillMonitor) {\n        this._elementRef = _elementRef;\n        this._autofillMonitor = _autofillMonitor;\n        /** Emits when the autofill state of the element changes. */\n        this.cdkAutofill = new EventEmitter();\n    }\n    ngOnInit() {\n        this._autofillMonitor\n            .monitor(this._elementRef)\n            .subscribe(event => this.cdkAutofill.emit(event));\n    }\n    ngOnDestroy() {\n        this._autofillMonitor.stopMonitoring(this._elementRef);\n    }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkAutofill]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n                type: Output\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n    constructor(_elementRef, _platform, _ngZone, \n    /** @breaking-change 11.0.0 make document required */\n    document) {\n        this._elementRef = _elementRef;\n        this._platform = _platform;\n        this._ngZone = _ngZone;\n        this._destroyed = new Subject();\n        this._enabled = true;\n        /**\n         * Value of minRows as of last resize. If the minRows has decreased, the\n         * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n         * does not have the same problem because it does not affect the textarea's scrollHeight.\n         */\n        this._previousMinRows = -1;\n        this._isViewInited = false;\n        /** Handles `focus` and `blur` events. */\n        this._handleFocusEvent = (event) => {\n            this._hasFocus = event.type === 'focus';\n        };\n        this._document = document;\n        this._textareaElement = this._elementRef.nativeElement;\n    }\n    /** Minimum amount of rows in the textarea. */\n    get minRows() {\n        return this._minRows;\n    }\n    set minRows(value) {\n        this._minRows = coerceNumberProperty(value);\n        this._setMinHeight();\n    }\n    /** Maximum amount of rows in the textarea. */\n    get maxRows() {\n        return this._maxRows;\n    }\n    set maxRows(value) {\n        this._maxRows = coerceNumberProperty(value);\n        this._setMaxHeight();\n    }\n    /** Whether autosizing is enabled or not */\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(value) {\n        value = coerceBooleanProperty(value);\n        // Only act if the actual value changed. This specifically helps to not run\n        // resizeToFitContent too early (i.e. before ngAfterViewInit)\n        if (this._enabled !== value) {\n            (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n        }\n    }\n    get placeholder() {\n        return this._textareaElement.placeholder;\n    }\n    set placeholder(value) {\n        this._cachedPlaceholderHeight = undefined;\n        this._textareaElement.placeholder = value;\n        this._cacheTextareaPlaceholderHeight();\n    }\n    /** Sets the minimum height of the textarea as determined by minRows. */\n    _setMinHeight() {\n        const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n        if (minHeight) {\n            this._textareaElement.style.minHeight = minHeight;\n        }\n    }\n    /** Sets the maximum height of the textarea as determined by maxRows. */\n    _setMaxHeight() {\n        const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n        if (maxHeight) {\n            this._textareaElement.style.maxHeight = maxHeight;\n        }\n    }\n    ngAfterViewInit() {\n        if (this._platform.isBrowser) {\n            // Remember the height which we started with in case autosizing is disabled\n            this._initialHeight = this._textareaElement.style.height;\n            this.resizeToFitContent();\n            this._ngZone.runOutsideAngular(() => {\n                const window = this._getWindow();\n                fromEvent(window, 'resize')\n                    .pipe(auditTime(16), takeUntil(this._destroyed))\n                    .subscribe(() => this.resizeToFitContent(true));\n                this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n                this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n            });\n            this._isViewInited = true;\n            this.resizeToFitContent(true);\n        }\n    }\n    ngOnDestroy() {\n        this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n        this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n    /**\n     * Cache the height of a single-row textarea if it has not already been cached.\n     *\n     * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n     * maxRows. For the initial version, we will assume that the height of a single line in the\n     * textarea does not ever change.\n     */\n    _cacheTextareaLineHeight() {\n        if (this._cachedLineHeight) {\n            return;\n        }\n        // Use a clone element because we have to override some styles.\n        let textareaClone = this._textareaElement.cloneNode(false);\n        textareaClone.rows = 1;\n        // Use `position: absolute` so that this doesn't cause a browser layout and use\n        // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n        // would affect the height.\n        textareaClone.style.position = 'absolute';\n        textareaClone.style.visibility = 'hidden';\n        textareaClone.style.border = 'none';\n        textareaClone.style.padding = '0';\n        textareaClone.style.height = '';\n        textareaClone.style.minHeight = '';\n        textareaClone.style.maxHeight = '';\n        // In Firefox it happens that textarea elements are always bigger than the specified amount\n        // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n        // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n        // to hidden. This ensures that there is no invalid calculation of the line height.\n        // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n        textareaClone.style.overflow = 'hidden';\n        this._textareaElement.parentNode.appendChild(textareaClone);\n        this._cachedLineHeight = textareaClone.clientHeight;\n        textareaClone.remove();\n        // Min and max heights have to be re-calculated if the cached line height changes\n        this._setMinHeight();\n        this._setMaxHeight();\n    }\n    _measureScrollHeight() {\n        const element = this._textareaElement;\n        const previousMargin = element.style.marginBottom || '';\n        const isFirefox = this._platform.FIREFOX;\n        const needsMarginFiller = isFirefox && this._hasFocus;\n        const measuringClass = isFirefox\n            ? 'cdk-textarea-autosize-measuring-firefox'\n            : 'cdk-textarea-autosize-measuring';\n        // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n        // work around it by assigning a temporary margin with the same height as the `textarea` so that\n        // it occupies the same amount of space. See #23233.\n        if (needsMarginFiller) {\n            element.style.marginBottom = `${element.clientHeight}px`;\n        }\n        // Reset the textarea height to auto in order to shrink back to its default size.\n        // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n        element.classList.add(measuringClass);\n        // The measuring class includes a 2px padding to workaround an issue with Chrome,\n        // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n        const scrollHeight = element.scrollHeight - 4;\n        element.classList.remove(measuringClass);\n        if (needsMarginFiller) {\n            element.style.marginBottom = previousMargin;\n        }\n        return scrollHeight;\n    }\n    _cacheTextareaPlaceholderHeight() {\n        if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n            return;\n        }\n        if (!this.placeholder) {\n            this._cachedPlaceholderHeight = 0;\n            return;\n        }\n        const value = this._textareaElement.value;\n        this._textareaElement.value = this._textareaElement.placeholder;\n        this._cachedPlaceholderHeight = this._measureScrollHeight();\n        this._textareaElement.value = value;\n    }\n    ngDoCheck() {\n        if (this._platform.isBrowser) {\n            this.resizeToFitContent();\n        }\n    }\n    /**\n     * Resize the textarea to fit its content.\n     * @param force Whether to force a height recalculation. By default the height will be\n     *    recalculated only if the value changed since the last call.\n     */\n    resizeToFitContent(force = false) {\n        // If autosizing is disabled, just skip everything else\n        if (!this._enabled) {\n            return;\n        }\n        this._cacheTextareaLineHeight();\n        this._cacheTextareaPlaceholderHeight();\n        // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n        // in checking the height of the textarea.\n        if (!this._cachedLineHeight) {\n            return;\n        }\n        const textarea = this._elementRef.nativeElement;\n        const value = textarea.value;\n        // Only resize if the value or minRows have changed since these calculations can be expensive.\n        if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n            return;\n        }\n        const scrollHeight = this._measureScrollHeight();\n        const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n        // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n        textarea.style.height = `${height}px`;\n        this._ngZone.runOutsideAngular(() => {\n            if (typeof requestAnimationFrame !== 'undefined') {\n                requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n            }\n            else {\n                setTimeout(() => this._scrollToCaretPosition(textarea));\n            }\n        });\n        this._previousValue = value;\n        this._previousMinRows = this._minRows;\n    }\n    /**\n     * Resets the textarea to its original size\n     */\n    reset() {\n        // Do not try to change the textarea, if the initialHeight has not been determined yet\n        // This might potentially remove styles when reset() is called before ngAfterViewInit\n        if (this._initialHeight !== undefined) {\n            this._textareaElement.style.height = this._initialHeight;\n        }\n    }\n    _noopInputHandler() {\n        // no-op handler that ensures we're running change detection on input events.\n    }\n    /** Access injected document if available or fallback to global document reference */\n    _getDocument() {\n        return this._document || document;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        const doc = this._getDocument();\n        return doc.defaultView || window;\n    }\n    /**\n     * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n     * prevent it from scrolling to the caret position. We need to re-set the selection\n     * in order for it to scroll to the proper position.\n     */\n    _scrollToCaretPosition(textarea) {\n        const { selectionStart, selectionEnd } = textarea;\n        // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n        // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n        // between the time we requested the animation frame and when it was executed.\n        // Also note that we have to assert that the textarea is focused before we set the\n        // selection range. Setting the selection range on a non-focused textarea will cause\n        // it to receive focus on IE and Edge.\n        if (!this._destroyed.isStopped && this._hasFocus) {\n            textarea.setSelectionRange(selectionStart, selectionEnd);\n        }\n    }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'textarea[cdkTextareaAutosize]',\n                    exportAs: 'cdkTextareaAutosize',\n                    host: {\n                        'class': 'cdk-textarea-autosize',\n                        // Textarea elements that have the directive applied should have a single row by default.\n                        // Browsers normally show two rows by default and therefore this limits the minRows binding.\n                        'rows': '1',\n                        '(input)': '_noopInputHandler()',\n                    },\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { minRows: [{\n                type: Input,\n                args: ['cdkAutosizeMinRows']\n            }], maxRows: [{\n                type: Input,\n                args: ['cdkAutosizeMaxRows']\n            }], enabled: [{\n                type: Input,\n                args: ['cdkTextareaAutosize']\n            }], placeholder: [{\n                type: Input\n            }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, imports: [[PlatformModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    declarations: [CdkAutofill, CdkTextareaAutosize],\n                    imports: [PlatformModule],\n                    exports: [CdkAutofill, CdkTextareaAutosize],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\n\nlet hasV8BreakIterator; // We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\n\ntry {\n  hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n} catch {\n  hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n\n\nclass Platform {\n  constructor(_platformId) {\n    this._platformId = _platformId; // We want to use the Angular platform check because if the Document is shimmed\n    // without the navigator, the following checks will fail. This is preferred because\n    // sometimes the Document may be shimmed without the user's knowledge or intention\n\n    /** Whether the Angular application is being rendered in the browser. */\n\n    this.isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n    /** Whether the current browser is Microsoft Edge. */\n\n    this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n    /** Whether the current rendering engine is Microsoft Trident. */\n\n    this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent); // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n\n    /** Whether the current rendering engine is Blink. */\n\n    this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT; // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n    // ensure that Webkit runs standalone and is not used as another engine's base.\n\n    /** Whether the current rendering engine is WebKit. */\n\n    this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n    /** Whether the current platform is Apple iOS. */\n\n    this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window); // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n    // them self as Gecko-like browsers and modify the userAgent's according to that.\n    // Since we only cover one explicit Firefox case, we can simply check for Firefox\n    // instead of having an unstable check for Gecko.\n\n    /** Whether the current browser is Firefox. */\n\n    this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n    /** Whether the current platform is Android. */\n    // Trident on mobile adds the android platform to the userAgent to trick detections.\n\n    this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT; // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n    // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n    // Safari browser should also use Webkit as its layout engine.\n\n    /** Whether the current browser is Safari. */\n\n    this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n  }\n\n}\n\nPlatform.ɵfac = function Platform_Factory(t) {\n  return new (t || Platform)(i0.ɵɵinject(PLATFORM_ID));\n};\n\nPlatform.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Platform,\n  factory: Platform.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Platform, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: Object,\n      decorators: [{\n        type: Inject,\n        args: [PLATFORM_ID]\n      }]\n    }];\n  }, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nclass PlatformModule {}\n\nPlatformModule.ɵfac = function PlatformModule_Factory(t) {\n  return new (t || PlatformModule)();\n};\n\nPlatformModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: PlatformModule\n});\nPlatformModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PlatformModule, [{\n    type: NgModule,\n    args: [{}]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Cached result Set of input types support by the current browser. */\n\n\nlet supportedInputTypes;\n/** Types of `<input>` that *might* be supported. */\n\nconst candidateInputTypes = [// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n// first changing it to something else:\n// The specified value \"\" does not conform to the required format.\n// The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n'color', 'button', 'checkbox', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'];\n/** @returns The input types supported by this browser. */\n\nfunction getSupportedInputTypes() {\n  // Result is cached.\n  if (supportedInputTypes) {\n    return supportedInputTypes;\n  } // We can't check if an input type is not supported until we're on the browser, so say that\n  // everything is supported when not on the browser. We don't use `Platform` here since it's\n  // just a helper function and can't inject it.\n\n\n  if (typeof document !== 'object' || !document) {\n    supportedInputTypes = new Set(candidateInputTypes);\n    return supportedInputTypes;\n  }\n\n  let featureTestInput = document.createElement('input');\n  supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n    featureTestInput.setAttribute('type', value);\n    return featureTestInput.type === value;\n  }));\n  return supportedInputTypes;\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Cached result of whether the user's browser supports passive event listeners. */\n\n\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\n\nfunction supportsPassiveEventListeners() {\n  if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n    try {\n      window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n        get: () => supportsPassiveEvents = true\n      }));\n    } finally {\n      supportsPassiveEvents = supportsPassiveEvents || false;\n    }\n  }\n\n  return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\n\n\nfunction normalizePassiveListenerOptions(options) {\n  return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\n\n\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\n\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\n\nfunction supportsScrollBehavior() {\n  if (scrollBehaviorSupported == null) {\n    // If we're not in the browser, it can't be supported. Also check for `Element`, because\n    // some projects stub out the global `document` during SSR which can throw us off.\n    if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n      scrollBehaviorSupported = false;\n      return scrollBehaviorSupported;\n    } // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n\n\n    if ('scrollBehavior' in document.documentElement.style) {\n      scrollBehaviorSupported = true;\n    } else {\n      // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n      // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n      const scrollToFunction = Element.prototype.scrollTo;\n\n      if (scrollToFunction) {\n        // We can detect if the function has been polyfilled by calling `toString` on it. Native\n        // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n        // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n        // polyfilled functions as supporting scroll behavior.\n        scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n      } else {\n        scrollBehaviorSupported = false;\n      }\n    }\n  }\n\n  return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\n\n\nfunction getRtlScrollAxisType() {\n  // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n  if (typeof document !== 'object' || !document) {\n    return 0\n    /* NORMAL */\n    ;\n  }\n\n  if (rtlScrollAxisType == null) {\n    // Create a 1px wide scrolling container and a 2px wide content element.\n    const scrollContainer = document.createElement('div');\n    const containerStyle = scrollContainer.style;\n    scrollContainer.dir = 'rtl';\n    containerStyle.width = '1px';\n    containerStyle.overflow = 'auto';\n    containerStyle.visibility = 'hidden';\n    containerStyle.pointerEvents = 'none';\n    containerStyle.position = 'absolute';\n    const content = document.createElement('div');\n    const contentStyle = content.style;\n    contentStyle.width = '2px';\n    contentStyle.height = '1px';\n    scrollContainer.appendChild(content);\n    document.body.appendChild(scrollContainer);\n    rtlScrollAxisType = 0\n    /* NORMAL */\n    ; // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n    // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n    // dealing with one of the other two types of browsers.\n\n    if (scrollContainer.scrollLeft === 0) {\n      // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n      // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n      // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n      // return 0 when we read it again.\n      scrollContainer.scrollLeft = 1;\n      rtlScrollAxisType = scrollContainer.scrollLeft === 0 ? 1\n      /* NEGATED */\n      : 2\n      /* INVERTED */\n      ;\n    }\n\n    scrollContainer.remove();\n  }\n\n  return rtlScrollAxisType;\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\n\nfunction _supportsShadowDom() {\n  if (shadowDomIsSupported == null) {\n    const head = typeof document !== 'undefined' ? document.head : null;\n    shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n  }\n\n  return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\n\n\nfunction _getShadowRoot(element) {\n  if (_supportsShadowDom()) {\n    const rootNode = element.getRootNode ? element.getRootNode() : null; // Note that this should be caught by `_supportsShadowDom`, but some\n    // teams have been able to hit this code path on unsupported browsers.\n\n    if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n      return rootNode;\n    }\n  }\n\n  return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\n\n\nfunction _getFocusedElementPierceShadowDom() {\n  let activeElement = typeof document !== 'undefined' && document ? document.activeElement : null;\n\n  while (activeElement && activeElement.shadowRoot) {\n    const newActiveElement = activeElement.shadowRoot.activeElement;\n\n    if (newActiveElement === activeElement) {\n      break;\n    } else {\n      activeElement = newActiveElement;\n    }\n  }\n\n  return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\n\n\nfunction _getEventTarget(event) {\n  // If an event is bound outside the Shadow DOM, the `event.target` will\n  // point to the shadow root so we have to use `composedPath` instead.\n  return event.composedPath ? event.composedPath()[0] : event.target;\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Gets whether the code is currently running in a test environment. */\n\n\nfunction _isTestEnvironment() {\n  // We can't use `declare const` because it causes conflicts inside Google with the real typings\n  // for these symbols and we can't read them off the global object, because they don't appear to\n  // be attached there for some runners like Jest.\n  // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n  return (// @ts-ignore\n    typeof __karma__ !== 'undefined' && !!__karma__ || // @ts-ignore\n    typeof jasmine !== 'undefined' && !!jasmine || // @ts-ignore\n    typeof jest !== 'undefined' && !!jest || // @ts-ignore\n    typeof Mocha !== 'undefined' && !!Mocha\n  );\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/platform.mjs"],"names":["i0","PLATFORM_ID","Injectable","Inject","NgModule","isPlatformBrowser","hasV8BreakIterator","Intl","v8BreakIterator","Platform","constructor","_platformId","isBrowser","document","EDGE","test","navigator","userAgent","TRIDENT","BLINK","window","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","ɵfac","ɵprov","type","args","providedIn","Object","decorators","PlatformModule","ɵmod","ɵinj","supportedInputTypes","candidateInputTypes","getSupportedInputTypes","Set","featureTestInput","createElement","filter","value","setAttribute","supportsPassiveEvents","supportsPassiveEventListeners","addEventListener","defineProperty","get","normalizePassiveListenerOptions","options","capture","rtlScrollAxisType","scrollBehaviorSupported","supportsScrollBehavior","Element","documentElement","style","scrollToFunction","prototype","scrollTo","toString","getRtlScrollAxisType","scrollContainer","containerStyle","dir","width","overflow","visibility","pointerEvents","position","content","contentStyle","height","appendChild","body","scrollLeft","remove","shadowDomIsSupported","_supportsShadowDom","head","createShadowRoot","attachShadow","_getShadowRoot","element","rootNode","getRootNode","ShadowRoot","_getFocusedElementPierceShadowDom","activeElement","shadowRoot","newActiveElement","_getEventTarget","event","composedPath","target","_isTestEnvironment","__karma__","jasmine","jest","Mocha"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n    hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n    hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n    constructor(_platformId) {\n        this._platformId = _platformId;\n        // We want to use the Angular platform check because if the Document is shimmed\n        // without the navigator, the following checks will fail. This is preferred because\n        // sometimes the Document may be shimmed without the user's knowledge or intention\n        /** Whether the Angular application is being rendered in the browser. */\n        this.isBrowser = this._platformId\n            ? isPlatformBrowser(this._platformId)\n            : typeof document === 'object' && !!document;\n        /** Whether the current browser is Microsoft Edge. */\n        this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n        /** Whether the current rendering engine is Microsoft Trident. */\n        this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n        // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n        /** Whether the current rendering engine is Blink. */\n        this.BLINK = this.isBrowser &&\n            !!(window.chrome || hasV8BreakIterator) &&\n            typeof CSS !== 'undefined' &&\n            !this.EDGE &&\n            !this.TRIDENT;\n        // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n        // ensure that Webkit runs standalone and is not used as another engine's base.\n        /** Whether the current rendering engine is WebKit. */\n        this.WEBKIT = this.isBrowser &&\n            /AppleWebKit/i.test(navigator.userAgent) &&\n            !this.BLINK &&\n            !this.EDGE &&\n            !this.TRIDENT;\n        /** Whether the current platform is Apple iOS. */\n        this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n        // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n        // them self as Gecko-like browsers and modify the userAgent's according to that.\n        // Since we only cover one explicit Firefox case, we can simply check for Firefox\n        // instead of having an unstable check for Gecko.\n        /** Whether the current browser is Firefox. */\n        this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n        /** Whether the current platform is Android. */\n        // Trident on mobile adds the android platform to the userAgent to trick detections.\n        this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n        // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n        // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n        // Safari browser should also use Webkit as its layout engine.\n        /** Whether the current browser is Safari. */\n        this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n    }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: Object, decorators: [{\n                    type: Inject,\n                    args: [PLATFORM_ID]\n                }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, decorators: [{\n            type: NgModule,\n            args: [{}]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n    // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n    // first changing it to something else:\n    // The specified value \"\" does not conform to the required format.\n    // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n    'color',\n    'button',\n    'checkbox',\n    'date',\n    'datetime-local',\n    'email',\n    'file',\n    'hidden',\n    'image',\n    'month',\n    'number',\n    'password',\n    'radio',\n    'range',\n    'reset',\n    'search',\n    'submit',\n    'tel',\n    'text',\n    'time',\n    'url',\n    'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n    // Result is cached.\n    if (supportedInputTypes) {\n        return supportedInputTypes;\n    }\n    // We can't check if an input type is not supported until we're on the browser, so say that\n    // everything is supported when not on the browser. We don't use `Platform` here since it's\n    // just a helper function and can't inject it.\n    if (typeof document !== 'object' || !document) {\n        supportedInputTypes = new Set(candidateInputTypes);\n        return supportedInputTypes;\n    }\n    let featureTestInput = document.createElement('input');\n    supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n        featureTestInput.setAttribute('type', value);\n        return featureTestInput.type === value;\n    }));\n    return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n    if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n        try {\n            window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n                get: () => (supportsPassiveEvents = true),\n            }));\n        }\n        finally {\n            supportsPassiveEvents = supportsPassiveEvents || false;\n        }\n    }\n    return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n    return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n    if (scrollBehaviorSupported == null) {\n        // If we're not in the browser, it can't be supported. Also check for `Element`, because\n        // some projects stub out the global `document` during SSR which can throw us off.\n        if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n            scrollBehaviorSupported = false;\n            return scrollBehaviorSupported;\n        }\n        // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n        if ('scrollBehavior' in document.documentElement.style) {\n            scrollBehaviorSupported = true;\n        }\n        else {\n            // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n            // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n            const scrollToFunction = Element.prototype.scrollTo;\n            if (scrollToFunction) {\n                // We can detect if the function has been polyfilled by calling `toString` on it. Native\n                // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n                // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n                // polyfilled functions as supporting scroll behavior.\n                scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n            }\n            else {\n                scrollBehaviorSupported = false;\n            }\n        }\n    }\n    return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n    // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n    if (typeof document !== 'object' || !document) {\n        return 0 /* NORMAL */;\n    }\n    if (rtlScrollAxisType == null) {\n        // Create a 1px wide scrolling container and a 2px wide content element.\n        const scrollContainer = document.createElement('div');\n        const containerStyle = scrollContainer.style;\n        scrollContainer.dir = 'rtl';\n        containerStyle.width = '1px';\n        containerStyle.overflow = 'auto';\n        containerStyle.visibility = 'hidden';\n        containerStyle.pointerEvents = 'none';\n        containerStyle.position = 'absolute';\n        const content = document.createElement('div');\n        const contentStyle = content.style;\n        contentStyle.width = '2px';\n        contentStyle.height = '1px';\n        scrollContainer.appendChild(content);\n        document.body.appendChild(scrollContainer);\n        rtlScrollAxisType = 0 /* NORMAL */;\n        // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n        // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n        // dealing with one of the other two types of browsers.\n        if (scrollContainer.scrollLeft === 0) {\n            // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n            // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n            // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n            // return 0 when we read it again.\n            scrollContainer.scrollLeft = 1;\n            rtlScrollAxisType =\n                scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n        }\n        scrollContainer.remove();\n    }\n    return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n    if (shadowDomIsSupported == null) {\n        const head = typeof document !== 'undefined' ? document.head : null;\n        shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n    }\n    return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n    if (_supportsShadowDom()) {\n        const rootNode = element.getRootNode ? element.getRootNode() : null;\n        // Note that this should be caught by `_supportsShadowDom`, but some\n        // teams have been able to hit this code path on unsupported browsers.\n        if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n            return rootNode;\n        }\n    }\n    return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n    let activeElement = typeof document !== 'undefined' && document\n        ? document.activeElement\n        : null;\n    while (activeElement && activeElement.shadowRoot) {\n        const newActiveElement = activeElement.shadowRoot.activeElement;\n        if (newActiveElement === activeElement) {\n            break;\n        }\n        else {\n            activeElement = newActiveElement;\n        }\n    }\n    return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n    // If an event is bound outside the Shadow DOM, the `event.target` will\n    // point to the shadow root so we have to use `composedPath` instead.\n    return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n    // We can't use `declare const` because it causes conflicts inside Google with the real typings\n    // for these symbols and we can't read them off the global object, because they don't appear to\n    // be attached there for some runners like Jest.\n    // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n    return (\n    // @ts-ignore\n    (typeof __karma__ !== 'undefined' && !!__karma__) ||\n        // @ts-ignore\n        (typeof jasmine !== 'undefined' && !!jasmine) ||\n        // @ts-ignore\n        (typeof jest !== 'undefined' && !!jest) ||\n        // @ts-ignore\n        (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nclass DataSource {}\n/** Checks whether an object is a data source. */\n\n\nfunction isDataSource(value) {\n  // Check if the value is a DataSource by observing if it has a connect function. Cannot\n  // be checked as an `instanceof DataSource` since people could create their own sources\n  // that match the interface, but don't extend DataSource.\n  return value && typeof value.connect === 'function';\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** DataSource wrapper for a native array. */\n\n\nclass ArrayDataSource extends DataSource {\n  constructor(_data) {\n    super();\n    this._data = _data;\n  }\n\n  connect() {\n    return isObservable(this._data) ? this._data : of(this._data);\n  }\n\n  disconnect() {}\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\n\n\nclass _DisposeViewRepeaterStrategy {\n  applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n    changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n      let view;\n      let operation;\n\n      if (record.previousIndex == null) {\n        const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n        view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n        operation = 1\n        /* INSERTED */\n        ;\n      } else if (currentIndex == null) {\n        viewContainerRef.remove(adjustedPreviousIndex);\n        operation = 3\n        /* REMOVED */\n        ;\n      } else {\n        view = viewContainerRef.get(adjustedPreviousIndex);\n        viewContainerRef.move(view, currentIndex);\n        operation = 2\n        /* MOVED */\n        ;\n      }\n\n      if (itemViewChanged) {\n        itemViewChanged({\n          context: view?.context,\n          operation,\n          record\n        });\n      }\n    });\n  }\n\n  detach() {}\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\n\n\nclass _RecycleViewRepeaterStrategy {\n  constructor() {\n    /**\n     * The size of the cache used to store unused views.\n     * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n     */\n    this.viewCacheSize = 20;\n    /**\n     * View cache that stores embedded view instances that have been previously stamped out,\n     * but don't are not currently rendered. The view repeater will reuse these views rather than\n     * creating brand new ones.\n     *\n     * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n     */\n\n    this._viewCache = [];\n  }\n  /** Apply changes to the DOM. */\n\n\n  applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n    // Rearrange the views to put them in the right location.\n    changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n      let view;\n      let operation;\n\n      if (record.previousIndex == null) {\n        // Item added.\n        const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n\n        view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n        operation = view ? 1\n        /* INSERTED */\n        : 0\n        /* REPLACED */\n        ;\n      } else if (currentIndex == null) {\n        // Item removed.\n        this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n\n        operation = 3\n        /* REMOVED */\n        ;\n      } else {\n        // Item moved.\n        view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n        operation = 2\n        /* MOVED */\n        ;\n      }\n\n      if (itemViewChanged) {\n        itemViewChanged({\n          context: view?.context,\n          operation,\n          record\n        });\n      }\n    });\n  }\n\n  detach() {\n    for (const view of this._viewCache) {\n      view.destroy();\n    }\n\n    this._viewCache = [];\n  }\n  /**\n   * Inserts a view for a new item, either from the cache or by creating a new\n   * one. Returns `undefined` if the item was inserted into a cached view.\n   */\n\n\n  _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n    const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n\n    if (cachedView) {\n      cachedView.context.$implicit = value;\n      return undefined;\n    }\n\n    const viewArgs = viewArgsFactory();\n    return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n  }\n  /** Detaches the view at the given index and inserts into the view cache. */\n\n\n  _detachAndCacheView(index, viewContainerRef) {\n    const detachedView = viewContainerRef.detach(index);\n\n    this._maybeCacheView(detachedView, viewContainerRef);\n  }\n  /** Moves view at the previous index to the current index. */\n\n\n  _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n    const view = viewContainerRef.get(adjustedPreviousIndex);\n    viewContainerRef.move(view, currentIndex);\n    view.context.$implicit = value;\n    return view;\n  }\n  /**\n   * Cache the given detached view. If the cache is full, the view will be\n   * destroyed.\n   */\n\n\n  _maybeCacheView(view, viewContainerRef) {\n    if (this._viewCache.length < this.viewCacheSize) {\n      this._viewCache.push(view);\n    } else {\n      const index = viewContainerRef.indexOf(view); // The host component could remove views from the container outside of\n      // the view repeater. It's unlikely this will occur, but just in case,\n      // destroy the view on its own, otherwise destroy it through the\n      // container to ensure that all the references are removed.\n\n      if (index === -1) {\n        view.destroy();\n      } else {\n        viewContainerRef.remove(index);\n      }\n    }\n  }\n  /** Inserts a recycled view from the cache at the given index. */\n\n\n  _insertViewFromCache(index, viewContainerRef) {\n    const cachedView = this._viewCache.pop();\n\n    if (cachedView) {\n      viewContainerRef.insert(cachedView, index);\n    }\n\n    return cachedView || null;\n  }\n\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\n\n\nclass SelectionModel {\n  constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n    this._multiple = _multiple;\n    this._emitChanges = _emitChanges;\n    /** Currently-selected values. */\n\n    this._selection = new Set();\n    /** Keeps track of the deselected options that haven't been emitted by the change event. */\n\n    this._deselectedToEmit = [];\n    /** Keeps track of the selected options that haven't been emitted by the change event. */\n\n    this._selectedToEmit = [];\n    /** Event emitted when the value has changed. */\n\n    this.changed = new Subject();\n\n    if (initiallySelectedValues && initiallySelectedValues.length) {\n      if (_multiple) {\n        initiallySelectedValues.forEach(value => this._markSelected(value));\n      } else {\n        this._markSelected(initiallySelectedValues[0]);\n      } // Clear the array in order to avoid firing the change event for preselected values.\n\n\n      this._selectedToEmit.length = 0;\n    }\n  }\n  /** Selected values. */\n\n\n  get selected() {\n    if (!this._selected) {\n      this._selected = Array.from(this._selection.values());\n    }\n\n    return this._selected;\n  }\n  /**\n   * Selects a value or an array of values.\n   */\n\n\n  select(...values) {\n    this._verifyValueAssignment(values);\n\n    values.forEach(value => this._markSelected(value));\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Deselects a value or an array of values.\n   */\n\n\n  deselect(...values) {\n    this._verifyValueAssignment(values);\n\n    values.forEach(value => this._unmarkSelected(value));\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Toggles a value between selected and deselected.\n   */\n\n\n  toggle(value) {\n    this.isSelected(value) ? this.deselect(value) : this.select(value);\n  }\n  /**\n   * Clears all of the selected values.\n   */\n\n\n  clear() {\n    this._unmarkAll();\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Determines whether a value is selected.\n   */\n\n\n  isSelected(value) {\n    return this._selection.has(value);\n  }\n  /**\n   * Determines whether the model does not have a value.\n   */\n\n\n  isEmpty() {\n    return this._selection.size === 0;\n  }\n  /**\n   * Determines whether the model has a value.\n   */\n\n\n  hasValue() {\n    return !this.isEmpty();\n  }\n  /**\n   * Sorts the selected values based on a predicate function.\n   */\n\n\n  sort(predicate) {\n    if (this._multiple && this.selected) {\n      this._selected.sort(predicate);\n    }\n  }\n  /**\n   * Gets whether multiple values can be selected.\n   */\n\n\n  isMultipleSelection() {\n    return this._multiple;\n  }\n  /** Emits a change event and clears the records of selected and deselected values. */\n\n\n  _emitChangeEvent() {\n    // Clear the selected values so they can be re-cached.\n    this._selected = null;\n\n    if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n      this.changed.next({\n        source: this,\n        added: this._selectedToEmit,\n        removed: this._deselectedToEmit\n      });\n      this._deselectedToEmit = [];\n      this._selectedToEmit = [];\n    }\n  }\n  /** Selects a value. */\n\n\n  _markSelected(value) {\n    if (!this.isSelected(value)) {\n      if (!this._multiple) {\n        this._unmarkAll();\n      }\n\n      this._selection.add(value);\n\n      if (this._emitChanges) {\n        this._selectedToEmit.push(value);\n      }\n    }\n  }\n  /** Deselects a value. */\n\n\n  _unmarkSelected(value) {\n    if (this.isSelected(value)) {\n      this._selection.delete(value);\n\n      if (this._emitChanges) {\n        this._deselectedToEmit.push(value);\n      }\n    }\n  }\n  /** Clears out the selected values. */\n\n\n  _unmarkAll() {\n    if (!this.isEmpty()) {\n      this._selection.forEach(value => this._unmarkSelected(value));\n    }\n  }\n  /**\n   * Verifies the value assignment and throws an error if the specified value array is\n   * including multiple values while the selection model is not supporting multiple values.\n   */\n\n\n  _verifyValueAssignment(values) {\n    if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMultipleValuesInSingleSelectionError();\n    }\n  }\n\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\n\n\nfunction getMultipleValuesInSingleSelectionError() {\n  return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\n\n\nclass UniqueSelectionDispatcher {\n  constructor() {\n    this._listeners = [];\n  }\n  /**\n   * Notify other items that selection for the given name has been set.\n   * @param id ID of the item.\n   * @param name Name of the item.\n   */\n\n\n  notify(id, name) {\n    for (let listener of this._listeners) {\n      listener(id, name);\n    }\n  }\n  /**\n   * Listen for future changes to item selection.\n   * @return Function used to deregister listener\n   */\n\n\n  listen(listener) {\n    this._listeners.push(listener);\n\n    return () => {\n      this._listeners = this._listeners.filter(registered => {\n        return listener !== registered;\n      });\n    };\n  }\n\n  ngOnDestroy() {\n    this._listeners = [];\n  }\n\n}\n\nUniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) {\n  return new (t || UniqueSelectionDispatcher)();\n};\n\nUniqueSelectionDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: UniqueSelectionDispatcher,\n  factory: UniqueSelectionDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\n\n\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/collections.mjs"],"names":["isObservable","of","Subject","i0","Injectable","InjectionToken","DataSource","isDataSource","value","connect","ArrayDataSource","constructor","_data","disconnect","_DisposeViewRepeaterStrategy","applyChanges","changes","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","currentIndex","view","operation","previousIndex","insertContext","createEmbeddedView","templateRef","context","index","remove","get","move","detach","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","viewArgsFactory","_insertView","_detachAndCacheView","_moveView","destroy","cachedView","_insertViewFromCache","$implicit","undefined","viewArgs","detachedView","_maybeCacheView","length","push","indexOf","pop","insert","SelectionModel","_multiple","initiallySelectedValues","_emitChanges","_selection","Set","_deselectedToEmit","_selectedToEmit","changed","forEach","_markSelected","selected","_selected","Array","from","values","select","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","toggle","isSelected","clear","_unmarkAll","has","isEmpty","size","hasValue","sort","predicate","isMultipleSelection","next","source","added","removed","add","delete","ngDevMode","getMultipleValuesInSingleSelectionError","Error","UniqueSelectionDispatcher","_listeners","notify","id","name","listener","listen","filter","registered","ngOnDestroy","ɵfac","ɵprov","type","args","providedIn","_VIEW_REPEATER_STRATEGY"],"mappings":"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","sourcesContent":["import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n    // Check if the value is a DataSource by observing if it has a connect function. Cannot\n    // be checked as an `instanceof DataSource` since people could create their own sources\n    // that match the interface, but don't extend DataSource.\n    return value && typeof value.connect === 'function';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n    constructor(_data) {\n        super();\n        this._data = _data;\n    }\n    connect() {\n        return isObservable(this._data) ? this._data : of(this._data);\n    }\n    disconnect() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n    applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n        changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n            let view;\n            let operation;\n            if (record.previousIndex == null) {\n                const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n                view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n                operation = 1 /* INSERTED */;\n            }\n            else if (currentIndex == null) {\n                viewContainerRef.remove(adjustedPreviousIndex);\n                operation = 3 /* REMOVED */;\n            }\n            else {\n                view = viewContainerRef.get(adjustedPreviousIndex);\n                viewContainerRef.move(view, currentIndex);\n                operation = 2 /* MOVED */;\n            }\n            if (itemViewChanged) {\n                itemViewChanged({\n                    context: view?.context,\n                    operation,\n                    record,\n                });\n            }\n        });\n    }\n    detach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n    constructor() {\n        /**\n         * The size of the cache used to store unused views.\n         * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n         */\n        this.viewCacheSize = 20;\n        /**\n         * View cache that stores embedded view instances that have been previously stamped out,\n         * but don't are not currently rendered. The view repeater will reuse these views rather than\n         * creating brand new ones.\n         *\n         * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n         */\n        this._viewCache = [];\n    }\n    /** Apply changes to the DOM. */\n    applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n        // Rearrange the views to put them in the right location.\n        changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n            let view;\n            let operation;\n            if (record.previousIndex == null) {\n                // Item added.\n                const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n                view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n                operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n            }\n            else if (currentIndex == null) {\n                // Item removed.\n                this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n                operation = 3 /* REMOVED */;\n            }\n            else {\n                // Item moved.\n                view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n                operation = 2 /* MOVED */;\n            }\n            if (itemViewChanged) {\n                itemViewChanged({\n                    context: view?.context,\n                    operation,\n                    record,\n                });\n            }\n        });\n    }\n    detach() {\n        for (const view of this._viewCache) {\n            view.destroy();\n        }\n        this._viewCache = [];\n    }\n    /**\n     * Inserts a view for a new item, either from the cache or by creating a new\n     * one. Returns `undefined` if the item was inserted into a cached view.\n     */\n    _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n        const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n        if (cachedView) {\n            cachedView.context.$implicit = value;\n            return undefined;\n        }\n        const viewArgs = viewArgsFactory();\n        return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n    }\n    /** Detaches the view at the given index and inserts into the view cache. */\n    _detachAndCacheView(index, viewContainerRef) {\n        const detachedView = viewContainerRef.detach(index);\n        this._maybeCacheView(detachedView, viewContainerRef);\n    }\n    /** Moves view at the previous index to the current index. */\n    _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n        const view = viewContainerRef.get(adjustedPreviousIndex);\n        viewContainerRef.move(view, currentIndex);\n        view.context.$implicit = value;\n        return view;\n    }\n    /**\n     * Cache the given detached view. If the cache is full, the view will be\n     * destroyed.\n     */\n    _maybeCacheView(view, viewContainerRef) {\n        if (this._viewCache.length < this.viewCacheSize) {\n            this._viewCache.push(view);\n        }\n        else {\n            const index = viewContainerRef.indexOf(view);\n            // The host component could remove views from the container outside of\n            // the view repeater. It's unlikely this will occur, but just in case,\n            // destroy the view on its own, otherwise destroy it through the\n            // container to ensure that all the references are removed.\n            if (index === -1) {\n                view.destroy();\n            }\n            else {\n                viewContainerRef.remove(index);\n            }\n        }\n    }\n    /** Inserts a recycled view from the cache at the given index. */\n    _insertViewFromCache(index, viewContainerRef) {\n        const cachedView = this._viewCache.pop();\n        if (cachedView) {\n            viewContainerRef.insert(cachedView, index);\n        }\n        return cachedView || null;\n    }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n    constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n        this._multiple = _multiple;\n        this._emitChanges = _emitChanges;\n        /** Currently-selected values. */\n        this._selection = new Set();\n        /** Keeps track of the deselected options that haven't been emitted by the change event. */\n        this._deselectedToEmit = [];\n        /** Keeps track of the selected options that haven't been emitted by the change event. */\n        this._selectedToEmit = [];\n        /** Event emitted when the value has changed. */\n        this.changed = new Subject();\n        if (initiallySelectedValues && initiallySelectedValues.length) {\n            if (_multiple) {\n                initiallySelectedValues.forEach(value => this._markSelected(value));\n            }\n            else {\n                this._markSelected(initiallySelectedValues[0]);\n            }\n            // Clear the array in order to avoid firing the change event for preselected values.\n            this._selectedToEmit.length = 0;\n        }\n    }\n    /** Selected values. */\n    get selected() {\n        if (!this._selected) {\n            this._selected = Array.from(this._selection.values());\n        }\n        return this._selected;\n    }\n    /**\n     * Selects a value or an array of values.\n     */\n    select(...values) {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._markSelected(value));\n        this._emitChangeEvent();\n    }\n    /**\n     * Deselects a value or an array of values.\n     */\n    deselect(...values) {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._unmarkSelected(value));\n        this._emitChangeEvent();\n    }\n    /**\n     * Toggles a value between selected and deselected.\n     */\n    toggle(value) {\n        this.isSelected(value) ? this.deselect(value) : this.select(value);\n    }\n    /**\n     * Clears all of the selected values.\n     */\n    clear() {\n        this._unmarkAll();\n        this._emitChangeEvent();\n    }\n    /**\n     * Determines whether a value is selected.\n     */\n    isSelected(value) {\n        return this._selection.has(value);\n    }\n    /**\n     * Determines whether the model does not have a value.\n     */\n    isEmpty() {\n        return this._selection.size === 0;\n    }\n    /**\n     * Determines whether the model has a value.\n     */\n    hasValue() {\n        return !this.isEmpty();\n    }\n    /**\n     * Sorts the selected values based on a predicate function.\n     */\n    sort(predicate) {\n        if (this._multiple && this.selected) {\n            this._selected.sort(predicate);\n        }\n    }\n    /**\n     * Gets whether multiple values can be selected.\n     */\n    isMultipleSelection() {\n        return this._multiple;\n    }\n    /** Emits a change event and clears the records of selected and deselected values. */\n    _emitChangeEvent() {\n        // Clear the selected values so they can be re-cached.\n        this._selected = null;\n        if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n            this.changed.next({\n                source: this,\n                added: this._selectedToEmit,\n                removed: this._deselectedToEmit,\n            });\n            this._deselectedToEmit = [];\n            this._selectedToEmit = [];\n        }\n    }\n    /** Selects a value. */\n    _markSelected(value) {\n        if (!this.isSelected(value)) {\n            if (!this._multiple) {\n                this._unmarkAll();\n            }\n            this._selection.add(value);\n            if (this._emitChanges) {\n                this._selectedToEmit.push(value);\n            }\n        }\n    }\n    /** Deselects a value. */\n    _unmarkSelected(value) {\n        if (this.isSelected(value)) {\n            this._selection.delete(value);\n            if (this._emitChanges) {\n                this._deselectedToEmit.push(value);\n            }\n        }\n    }\n    /** Clears out the selected values. */\n    _unmarkAll() {\n        if (!this.isEmpty()) {\n            this._selection.forEach(value => this._unmarkSelected(value));\n        }\n    }\n    /**\n     * Verifies the value assignment and throws an error if the specified value array is\n     * including multiple values while the selection model is not supporting multiple values.\n     */\n    _verifyValueAssignment(values) {\n        if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMultipleValuesInSingleSelectionError();\n        }\n    }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n    return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n    constructor() {\n        this._listeners = [];\n    }\n    /**\n     * Notify other items that selection for the given name has been set.\n     * @param id ID of the item.\n     * @param name Name of the item.\n     */\n    notify(id, name) {\n        for (let listener of this._listeners) {\n            listener(id, name);\n        }\n    }\n    /**\n     * Listen for future changes to item selection.\n     * @return Function used to deregister listener\n     */\n    listen(listener) {\n        this._listeners.push(listener);\n        return () => {\n            this._listeners = this._listeners.filter((registered) => {\n                return listener !== registered;\n            });\n        };\n    }\n    ngOnDestroy() {\n        this._listeners = [];\n    }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\n\nfunction TabPanel_div_0_ng_container_2_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction TabPanel_div_0_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, TabPanel_div_0_ng_container_2_ng_container_1_Template, 1, 0, \"ng-container\", 3);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.contentTemplate);\n  }\n}\n\nfunction TabPanel_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 1);\n    i0.ɵɵprojection(1);\n    i0.ɵɵtemplate(2, TabPanel_div_0_ng_container_2_Template, 2, 1, \"ng-container\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"hidden\", !ctx_r0.selected);\n    i0.ɵɵattribute(\"id\", ctx_r0.id)(\"aria-hidden\", !ctx_r0.selected)(\"aria-labelledby\", ctx_r0.id + \"-label\");\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.contentTemplate && (ctx_r0.cache ? ctx_r0.loaded : ctx_r0.selected));\n  }\n}\n\nconst _c0 = [\"*\"];\nconst _c1 = [\"content\"];\nconst _c2 = [\"navbar\"];\nconst _c3 = [\"prevBtn\"];\nconst _c4 = [\"nextBtn\"];\nconst _c5 = [\"inkbar\"];\n\nfunction TabView_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 12, 13);\n    i0.ɵɵlistener(\"click\", function TabView_button_2_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.navBackward();\n    });\n    i0.ɵɵelement(2, \"span\", 14);\n    i0.ɵɵelementEnd();\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 24);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(3).$implicit;\n    i0.ɵɵproperty(\"ngClass\", tab_r9.leftIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 25);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(3).$implicit;\n    i0.ɵɵproperty(\"ngClass\", tab_r9.rightIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, TabView_ng_template_7_li_0_ng_container_2_span_1_Template, 1, 1, \"span\", 21);\n    i0.ɵɵelementStart(2, \"span\", 22);\n    i0.ɵɵtext(3);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(4, TabView_ng_template_7_li_0_ng_container_2_span_4_Template, 1, 1, \"span\", 23);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(2).$implicit;\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.leftIcon);\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate(tab_r9.header);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.rightIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r21 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"span\", 26);\n    i0.ɵɵlistener(\"click\", function TabView_ng_template_7_li_0_span_4_Template_span_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r21);\n      const tab_r9 = i0.ɵɵnextContext(2).$implicit;\n      const ctx_r19 = i0.ɵɵnextContext();\n      return ctx_r19.close($event, tab_r9);\n    });\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c6 = function (a0, a1) {\n  return {\n    \"p-highlight\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nfunction TabView_ng_template_7_li_0_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r24 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 16);\n    i0.ɵɵelementStart(1, \"a\", 17);\n    i0.ɵɵlistener(\"click\", function TabView_ng_template_7_li_0_Template_a_click_1_listener($event) {\n      i0.ɵɵrestoreView(_r24);\n      const tab_r9 = i0.ɵɵnextContext().$implicit;\n      const ctx_r22 = i0.ɵɵnextContext();\n      return ctx_r22.open($event, tab_r9);\n    })(\"keydown.enter\", function TabView_ng_template_7_li_0_Template_a_keydown_enter_1_listener($event) {\n      i0.ɵɵrestoreView(_r24);\n      const tab_r9 = i0.ɵɵnextContext().$implicit;\n      const ctx_r25 = i0.ɵɵnextContext();\n      return ctx_r25.open($event, tab_r9);\n    });\n    i0.ɵɵtemplate(2, TabView_ng_template_7_li_0_ng_container_2_Template, 5, 3, \"ng-container\", 18);\n    i0.ɵɵtemplate(3, TabView_ng_template_7_li_0_ng_container_3_Template, 1, 0, \"ng-container\", 19);\n    i0.ɵɵtemplate(4, TabView_ng_template_7_li_0_span_4_Template, 1, 0, \"span\", 20);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext().$implicit;\n    i0.ɵɵclassMap(tab_r9.headerStyleClass);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(16, _c6, tab_r9.selected, tab_r9.disabled))(\"ngStyle\", tab_r9.headerStyle);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"pTooltip\", tab_r9.tooltip)(\"tooltipPosition\", tab_r9.tooltipPosition)(\"positionStyle\", tab_r9.tooltipPositionStyle)(\"tooltipStyleClass\", tab_r9.tooltipStyleClass);\n    i0.ɵɵattribute(\"id\", tab_r9.id + \"-label\")(\"aria-selected\", tab_r9.selected)(\"aria-controls\", tab_r9.id)(\"aria-selected\", tab_r9.selected)(\"tabindex\", tab_r9.disabled ? null : \"0\");\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !tab_r9.headerTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", tab_r9.headerTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.closable);\n  }\n}\n\nfunction TabView_ng_template_7_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, TabView_ng_template_7_li_0_Template, 5, 19, \"li\", 15);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = ctx.$implicit;\n    i0.ɵɵproperty(\"ngIf\", !tab_r9.closed);\n  }\n}\n\nfunction TabView_button_10_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r30 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 27, 28);\n    i0.ɵɵlistener(\"click\", function TabView_button_10_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r30);\n      const ctx_r29 = i0.ɵɵnextContext();\n      return ctx_r29.navForward();\n    });\n    i0.ɵɵelement(2, \"span\", 29);\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c7 = function (a1) {\n  return {\n    \"p-tabview p-component\": true,\n    \"p-tabview-scrollable\": a1\n  };\n};\n\nlet idx = 0;\n\nclass TabPanel {\n  constructor(tabView, viewContainer, cd) {\n    this.viewContainer = viewContainer;\n    this.cd = cd;\n    this.cache = true;\n    this.tooltipPosition = 'top';\n    this.tooltipPositionStyle = 'absolute';\n    this.id = `p-tabpanel-${idx++}`;\n    this.tabView = tabView;\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(val) {\n    this._selected = val;\n\n    if (!this.loaded) {\n      this.cd.detectChanges();\n    }\n\n    if (val) this.loaded = true;\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(disabled) {\n    this._disabled = disabled;\n    this.tabView.cd.markForCheck();\n  }\n\n  get header() {\n    return this._header;\n  }\n\n  set header(header) {\n    this._header = header;\n    this.tabView.cd.markForCheck();\n  }\n\n  get leftIcon() {\n    return this._leftIcon;\n  }\n\n  set leftIcon(leftIcon) {\n    this._leftIcon = leftIcon;\n    this.tabView.cd.markForCheck();\n  }\n\n  get rightIcon() {\n    return this._rightIcon;\n  }\n\n  set rightIcon(rightIcon) {\n    this._rightIcon = rightIcon;\n    this.tabView.cd.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this.view = null;\n  }\n\n}\n\nTabPanel.ɵfac = function TabPanel_Factory(t) {\n  return new (t || TabPanel)(i0.ɵɵdirectiveInject(forwardRef(() => TabView)), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nTabPanel.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: TabPanel,\n  selectors: [[\"p-tabPanel\"]],\n  contentQueries: function TabPanel_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    closable: \"closable\",\n    headerStyle: \"headerStyle\",\n    headerStyleClass: \"headerStyleClass\",\n    cache: \"cache\",\n    tooltip: \"tooltip\",\n    tooltipPosition: \"tooltipPosition\",\n    tooltipPositionStyle: \"tooltipPositionStyle\",\n    tooltipStyleClass: \"tooltipStyleClass\",\n    selected: \"selected\",\n    disabled: \"disabled\",\n    header: \"header\",\n    leftIcon: \"leftIcon\",\n    rightIcon: \"rightIcon\"\n  },\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 1,\n  consts: [[\"class\", \"p-tabview-panel\", \"role\", \"tabpanel\", 3, \"hidden\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 1, \"p-tabview-panel\", 3, \"hidden\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\"]],\n  template: function TabPanel_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵtemplate(0, TabPanel_div_0_Template, 3, 5, \"div\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", !ctx.closed);\n    }\n  },\n  directives: [i1.NgIf, i1.NgTemplateOutlet],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabPanel, [{\n    type: Component,\n    args: [{\n      selector: 'p-tabPanel',\n      template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [forwardRef(() => TabView)]\n      }]\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    closable: [{\n      type: Input\n    }],\n    headerStyle: [{\n      type: Input\n    }],\n    headerStyleClass: [{\n      type: Input\n    }],\n    cache: [{\n      type: Input\n    }],\n    tooltip: [{\n      type: Input\n    }],\n    tooltipPosition: [{\n      type: Input\n    }],\n    tooltipPositionStyle: [{\n      type: Input\n    }],\n    tooltipStyleClass: [{\n      type: Input\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    selected: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    header: [{\n      type: Input\n    }],\n    leftIcon: [{\n      type: Input\n    }],\n    rightIcon: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TabView {\n  constructor(el, cd) {\n    this.el = el;\n    this.cd = cd;\n    this.orientation = 'top';\n    this.onChange = new EventEmitter();\n    this.onClose = new EventEmitter();\n    this.activeIndexChange = new EventEmitter();\n    this.backwardIsDisabled = true;\n    this.forwardIsDisabled = false;\n  }\n\n  ngAfterContentInit() {\n    this.initTabs();\n    this.tabPanels.changes.subscribe(_ => {\n      this.initTabs();\n    });\n  }\n\n  ngAfterViewChecked() {\n    if (this.tabChanged) {\n      this.updateInkBar();\n      this.tabChanged = false;\n    }\n  }\n\n  initTabs() {\n    this.tabs = this.tabPanels.toArray();\n    let selectedTab = this.findSelectedTab();\n\n    if (!selectedTab && this.tabs.length) {\n      if (this.activeIndex != null && this.tabs.length > this.activeIndex) this.tabs[this.activeIndex].selected = true;else this.tabs[0].selected = true;\n      this.tabChanged = true;\n    }\n\n    this.cd.markForCheck();\n  }\n\n  open(event, tab) {\n    if (tab.disabled) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      return;\n    }\n\n    if (!tab.selected) {\n      let selectedTab = this.findSelectedTab();\n\n      if (selectedTab) {\n        selectedTab.selected = false;\n      }\n\n      this.tabChanged = true;\n      tab.selected = true;\n      let selectedTabIndex = this.findTabIndex(tab);\n      this.preventActiveIndexPropagation = true;\n      this.activeIndexChange.emit(selectedTabIndex);\n      this.onChange.emit({\n        originalEvent: event,\n        index: selectedTabIndex\n      });\n      this.updateScrollBar(selectedTabIndex);\n    }\n\n    if (event) {\n      event.preventDefault();\n    }\n  }\n\n  close(event, tab) {\n    if (this.controlClose) {\n      this.onClose.emit({\n        originalEvent: event,\n        index: this.findTabIndex(tab),\n        close: () => {\n          this.closeTab(tab);\n        }\n      });\n    } else {\n      this.closeTab(tab);\n      this.onClose.emit({\n        originalEvent: event,\n        index: this.findTabIndex(tab)\n      });\n    }\n\n    event.stopPropagation();\n  }\n\n  closeTab(tab) {\n    if (tab.disabled) {\n      return;\n    }\n\n    if (tab.selected) {\n      this.tabChanged = true;\n      tab.selected = false;\n\n      for (let i = 0; i < this.tabs.length; i++) {\n        let tabPanel = this.tabs[i];\n\n        if (!tabPanel.closed && !tab.disabled) {\n          tabPanel.selected = true;\n          break;\n        }\n      }\n    }\n\n    tab.closed = true;\n  }\n\n  findSelectedTab() {\n    for (let i = 0; i < this.tabs.length; i++) {\n      if (this.tabs[i].selected) {\n        return this.tabs[i];\n      }\n    }\n\n    return null;\n  }\n\n  findTabIndex(tab) {\n    let index = -1;\n\n    for (let i = 0; i < this.tabs.length; i++) {\n      if (this.tabs[i] == tab) {\n        index = i;\n        break;\n      }\n    }\n\n    return index;\n  }\n\n  getBlockableElement() {\n    return this.el.nativeElement.children[0];\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(val) {\n    this._activeIndex = val;\n\n    if (this.preventActiveIndexPropagation) {\n      this.preventActiveIndexPropagation = false;\n      return;\n    }\n\n    if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n      this.findSelectedTab().selected = false;\n      this.tabs[this._activeIndex].selected = true;\n      this.tabChanged = true;\n      this.updateScrollBar(val);\n    }\n  }\n\n  updateInkBar() {\n    let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n    this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n    this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n  }\n\n  updateScrollBar(index) {\n    let tabHeader = this.navbar.nativeElement.children[index];\n    tabHeader.scrollIntoView({\n      block: 'nearest'\n    });\n  }\n\n  updateButtonState() {\n    const content = this.content.nativeElement;\n    const {\n      scrollLeft,\n      scrollWidth\n    } = content;\n    const width = DomHandler.getWidth(content);\n    this.backwardIsDisabled = scrollLeft === 0;\n    this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n  }\n\n  onScroll(event) {\n    this.scrollable && this.updateButtonState();\n    event.preventDefault();\n  }\n\n  getVisibleButtonWidths() {\n    return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n  }\n\n  navBackward() {\n    const content = this.content.nativeElement;\n    const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n    const pos = content.scrollLeft - width;\n    content.scrollLeft = pos <= 0 ? 0 : pos;\n  }\n\n  navForward() {\n    const content = this.content.nativeElement;\n    const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n    const pos = content.scrollLeft + width;\n    const lastPos = content.scrollWidth - width;\n    content.scrollLeft = pos >= lastPos ? lastPos : pos;\n  }\n\n}\n\nTabView.ɵfac = function TabView_Factory(t) {\n  return new (t || TabView)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nTabView.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: TabView,\n  selectors: [[\"p-tabView\"]],\n  contentQueries: function TabView_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, TabPanel, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabPanels = _t);\n    }\n  },\n  viewQuery: function TabView_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c1, 5);\n      i0.ɵɵviewQuery(_c2, 5);\n      i0.ɵɵviewQuery(_c3, 5);\n      i0.ɵɵviewQuery(_c4, 5);\n      i0.ɵɵviewQuery(_c5, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.navbar = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prevBtn = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nextBtn = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inkbar = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    orientation: \"orientation\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    controlClose: \"controlClose\",\n    scrollable: \"scrollable\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onChange: \"onChange\",\n    onClose: \"onClose\",\n    activeIndexChange: \"activeIndexChange\"\n  },\n  ngContentSelectors: _c0,\n  decls: 13,\n  vars: 9,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [1, \"p-tabview-nav-container\"], [\"class\", \"p-tabview-nav-prev p-tabview-nav-btn p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [1, \"p-tabview-nav-content\", 3, \"scroll\"], [\"content\", \"\"], [\"role\", \"tablist\", 1, \"p-tabview-nav\"], [\"navbar\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"p-tabview-ink-bar\"], [\"inkbar\", \"\"], [\"class\", \"p-tabview-nav-next p-tabview-nav-btn p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [1, \"p-tabview-panels\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-tabview-nav-prev\", \"p-tabview-nav-btn\", \"p-link\", 3, \"click\"], [\"prevBtn\", \"\"], [1, \"pi\", \"pi-chevron-left\"], [\"role\", \"presentation\", 3, \"ngClass\", \"ngStyle\", \"class\", 4, \"ngIf\"], [\"role\", \"presentation\", 3, \"ngClass\", \"ngStyle\"], [\"role\", \"tab\", \"pRipple\", \"\", 1, \"p-tabview-nav-link\", 3, \"pTooltip\", \"tooltipPosition\", \"positionStyle\", \"tooltipStyleClass\", \"click\", \"keydown.enter\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [\"class\", \"p-tabview-close pi pi-times\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"p-tabview-left-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"p-tabview-title\"], [\"class\", \"p-tabview-right-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"p-tabview-left-icon\", 3, \"ngClass\"], [1, \"p-tabview-right-icon\", 3, \"ngClass\"], [1, \"p-tabview-close\", \"pi\", \"pi-times\", 3, \"click\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-tabview-nav-next\", \"p-tabview-nav-btn\", \"p-link\", 3, \"click\"], [\"nextBtn\", \"\"], [1, \"pi\", \"pi-chevron-right\"]],\n  template: function TabView_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, TabView_button_2_Template, 3, 0, \"button\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3, 4);\n      i0.ɵɵlistener(\"scroll\", function TabView_Template_div_scroll_3_listener($event) {\n        return ctx.onScroll($event);\n      });\n      i0.ɵɵelementStart(5, \"ul\", 5, 6);\n      i0.ɵɵtemplate(7, TabView_ng_template_7_Template, 1, 1, \"ng-template\", 7);\n      i0.ɵɵelement(8, \"li\", 8, 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(10, TabView_button_10_Template, 3, 0, \"button\", 10);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(11, \"div\", 11);\n      i0.ɵɵprojection(12);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(7, _c7, ctx.scrollable))(\"ngStyle\", ctx.style);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.scrollable && !ctx.backwardIsDisabled);\n      i0.ɵɵadvance(5);\n      i0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngIf\", ctx.scrollable && !ctx.forwardIsDisabled);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgIf, i1.NgForOf, i2.Ripple, i3.Tooltip, i1.NgTemplateOutlet],\n  styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabView, [{\n    type: Component,\n    args: [{\n      selector: 'p-tabView',\n      template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    orientation: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    controlClose: [{\n      type: Input\n    }],\n    scrollable: [{\n      type: Input\n    }],\n    content: [{\n      type: ViewChild,\n      args: ['content']\n    }],\n    navbar: [{\n      type: ViewChild,\n      args: ['navbar']\n    }],\n    prevBtn: [{\n      type: ViewChild,\n      args: ['prevBtn']\n    }],\n    nextBtn: [{\n      type: ViewChild,\n      args: ['nextBtn']\n    }],\n    inkbar: [{\n      type: ViewChild,\n      args: ['inkbar']\n    }],\n    tabPanels: [{\n      type: ContentChildren,\n      args: [TabPanel]\n    }],\n    onChange: [{\n      type: Output\n    }],\n    onClose: [{\n      type: Output\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TabViewModule {}\n\nTabViewModule.ɵfac = function TabViewModule_Factory(t) {\n  return new (t || TabViewModule)();\n};\n\nTabViewModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TabViewModule\n});\nTabViewModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabViewModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, TooltipModule, RippleModule],\n      exports: [TabView, TabPanel, SharedModule],\n      declarations: [TabView, TabPanel]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { TabPanel, TabView, TabViewModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs"],"names":["i0","forwardRef","Component","Inject","Input","ContentChildren","EventEmitter","ChangeDetectionStrategy","ViewEncapsulation","ViewChild","Output","NgModule","i1","CommonModule","i3","TooltipModule","i2","RippleModule","PrimeTemplate","SharedModule","DomHandler","idx","TabPanel","constructor","tabView","viewContainer","cd","cache","tooltipPosition","tooltipPositionStyle","id","ngAfterContentInit","templates","forEach","item","getType","headerTemplate","template","contentTemplate","selected","_selected","val","loaded","detectChanges","disabled","_disabled","markForCheck","header","_header","leftIcon","_leftIcon","rightIcon","_rightIcon","ngOnDestroy","view","ɵfac","TabView","ViewContainerRef","ChangeDetectorRef","ɵcmp","NgIf","NgTemplateOutlet","type","args","selector","host","undefined","decorators","closable","headerStyle","headerStyleClass","tooltip","tooltipStyleClass","el","orientation","onChange","onClose","activeIndexChange","backwardIsDisabled","forwardIsDisabled","initTabs","tabPanels","changes","subscribe","_","ngAfterViewChecked","tabChanged","updateInkBar","tabs","toArray","selectedTab","findSelectedTab","length","activeIndex","open","event","tab","preventDefault","selectedTabIndex","findTabIndex","preventActiveIndexPropagation","emit","originalEvent","index","updateScrollBar","close","controlClose","closeTab","stopPropagation","i","tabPanel","closed","getBlockableElement","nativeElement","children","_activeIndex","tabHeader","findSingle","navbar","inkbar","style","width","getWidth","left","getOffset","scrollIntoView","block","updateButtonState","content","scrollLeft","scrollWidth","onScroll","scrollable","getVisibleButtonWidths","prevBtn","nextBtn","reduce","acc","navBackward","pos","navForward","lastPos","ElementRef","NgClass","NgStyle","NgForOf","Ripple","Tooltip","changeDetection","OnPush","encapsulation","None","styles","styleClass","TabViewModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\n\nlet idx = 0;\nclass TabPanel {\n    constructor(tabView, viewContainer, cd) {\n        this.viewContainer = viewContainer;\n        this.cd = cd;\n        this.cache = true;\n        this.tooltipPosition = 'top';\n        this.tooltipPositionStyle = 'absolute';\n        this.id = `p-tabpanel-${idx++}`;\n        this.tabView = tabView;\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    get selected() {\n        return this._selected;\n    }\n    set selected(val) {\n        this._selected = val;\n        if (!this.loaded) {\n            this.cd.detectChanges();\n        }\n        if (val)\n            this.loaded = true;\n    }\n    get disabled() {\n        return this._disabled;\n    }\n    ;\n    set disabled(disabled) {\n        this._disabled = disabled;\n        this.tabView.cd.markForCheck();\n    }\n    get header() {\n        return this._header;\n    }\n    set header(header) {\n        this._header = header;\n        this.tabView.cd.markForCheck();\n    }\n    get leftIcon() {\n        return this._leftIcon;\n    }\n    set leftIcon(leftIcon) {\n        this._leftIcon = leftIcon;\n        this.tabView.cd.markForCheck();\n    }\n    get rightIcon() {\n        return this._rightIcon;\n    }\n    set rightIcon(rightIcon) {\n        this._rightIcon = rightIcon;\n        this.tabView.cd.markForCheck();\n    }\n    ngOnDestroy() {\n        this.view = null;\n    }\n}\nTabPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTabPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: TabPanel, selector: \"p-tabPanel\", inputs: { closable: \"closable\", headerStyle: \"headerStyle\", headerStyleClass: \"headerStyleClass\", cache: \"cache\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", selected: \"selected\", disabled: \"disabled\", header: \"header\", leftIcon: \"leftIcon\", rightIcon: \"rightIcon\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabPanel, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-tabPanel',\n                    template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [forwardRef(() => TabView)]\n                }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { closable: [{\n                type: Input\n            }], headerStyle: [{\n                type: Input\n            }], headerStyleClass: [{\n                type: Input\n            }], cache: [{\n                type: Input\n            }], tooltip: [{\n                type: Input\n            }], tooltipPosition: [{\n                type: Input\n            }], tooltipPositionStyle: [{\n                type: Input\n            }], tooltipStyleClass: [{\n                type: Input\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], selected: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], header: [{\n                type: Input\n            }], leftIcon: [{\n                type: Input\n            }], rightIcon: [{\n                type: Input\n            }] } });\nclass TabView {\n    constructor(el, cd) {\n        this.el = el;\n        this.cd = cd;\n        this.orientation = 'top';\n        this.onChange = new EventEmitter();\n        this.onClose = new EventEmitter();\n        this.activeIndexChange = new EventEmitter();\n        this.backwardIsDisabled = true;\n        this.forwardIsDisabled = false;\n    }\n    ngAfterContentInit() {\n        this.initTabs();\n        this.tabPanels.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n    initTabs() {\n        this.tabs = this.tabPanels.toArray();\n        let selectedTab = this.findSelectedTab();\n        if (!selectedTab && this.tabs.length) {\n            if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n                this.tabs[this.activeIndex].selected = true;\n            else\n                this.tabs[0].selected = true;\n            this.tabChanged = true;\n        }\n        this.cd.markForCheck();\n    }\n    open(event, tab) {\n        if (tab.disabled) {\n            if (event) {\n                event.preventDefault();\n            }\n            return;\n        }\n        if (!tab.selected) {\n            let selectedTab = this.findSelectedTab();\n            if (selectedTab) {\n                selectedTab.selected = false;\n            }\n            this.tabChanged = true;\n            tab.selected = true;\n            let selectedTabIndex = this.findTabIndex(tab);\n            this.preventActiveIndexPropagation = true;\n            this.activeIndexChange.emit(selectedTabIndex);\n            this.onChange.emit({ originalEvent: event, index: selectedTabIndex });\n            this.updateScrollBar(selectedTabIndex);\n        }\n        if (event) {\n            event.preventDefault();\n        }\n    }\n    close(event, tab) {\n        if (this.controlClose) {\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab),\n                close: () => {\n                    this.closeTab(tab);\n                }\n            });\n        }\n        else {\n            this.closeTab(tab);\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab)\n            });\n        }\n        event.stopPropagation();\n    }\n    closeTab(tab) {\n        if (tab.disabled) {\n            return;\n        }\n        if (tab.selected) {\n            this.tabChanged = true;\n            tab.selected = false;\n            for (let i = 0; i < this.tabs.length; i++) {\n                let tabPanel = this.tabs[i];\n                if (!tabPanel.closed && !tab.disabled) {\n                    tabPanel.selected = true;\n                    break;\n                }\n            }\n        }\n        tab.closed = true;\n    }\n    findSelectedTab() {\n        for (let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i].selected) {\n                return this.tabs[i];\n            }\n        }\n        return null;\n    }\n    findTabIndex(tab) {\n        let index = -1;\n        for (let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i] == tab) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n    getBlockableElement() {\n        return this.el.nativeElement.children[0];\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    set activeIndex(val) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n            this.findSelectedTab().selected = false;\n            this.tabs[this._activeIndex].selected = true;\n            this.tabChanged = true;\n            this.updateScrollBar(val);\n        }\n    }\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n        this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n    }\n    updateScrollBar(index) {\n        let tabHeader = this.navbar.nativeElement.children[index];\n        tabHeader.scrollIntoView({ block: 'nearest' });\n    }\n    updateButtonState() {\n        const content = this.content.nativeElement;\n        const { scrollLeft, scrollWidth } = content;\n        const width = DomHandler.getWidth(content);\n        this.backwardIsDisabled = scrollLeft === 0;\n        this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n    }\n    onScroll(event) {\n        this.scrollable && this.updateButtonState();\n        event.preventDefault();\n    }\n    getVisibleButtonWidths() {\n        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n    }\n    navBackward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft - width;\n        content.scrollLeft = pos <= 0 ? 0 : pos;\n    }\n    navForward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft + width;\n        const lastPos = content.scrollWidth - width;\n        content.scrollLeft = pos >= lastPos ? lastPos : pos;\n    }\n}\nTabView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTabView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: TabView, selector: \"p-tabView\", inputs: { orientation: \"orientation\", style: \"style\", styleClass: \"styleClass\", controlClose: \"controlClose\", scrollable: \"scrollable\", activeIndex: \"activeIndex\" }, outputs: { onChange: \"onChange\", onClose: \"onClose\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabPanels\", predicate: TabPanel }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"navbar\", first: true, predicate: [\"navbar\"], descendants: true }, { propertyName: \"prevBtn\", first: true, predicate: [\"prevBtn\"], descendants: true }, { propertyName: \"nextBtn\", first: true, predicate: [\"nextBtn\"], descendants: true }, { propertyName: \"inkbar\", first: true, predicate: [\"inkbar\"], descendants: true }], ngImport: i0, template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `, isInline: true, styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabView, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-tabView', template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orientation: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], controlClose: [{\n                type: Input\n            }], scrollable: [{\n                type: Input\n            }], content: [{\n                type: ViewChild,\n                args: ['content']\n            }], navbar: [{\n                type: ViewChild,\n                args: ['navbar']\n            }], prevBtn: [{\n                type: ViewChild,\n                args: ['prevBtn']\n            }], nextBtn: [{\n                type: ViewChild,\n                args: ['nextBtn']\n            }], inkbar: [{\n                type: ViewChild,\n                args: ['inkbar']\n            }], tabPanels: [{\n                type: ContentChildren,\n                args: [TabPanel]\n            }], onChange: [{\n                type: Output\n            }], onClose: [{\n                type: Output\n            }], activeIndexChange: [{\n                type: Output\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass TabViewModule {\n}\nTabViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTabViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule], exports: [TabView, TabPanel, SharedModule] });\nTabViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, TooltipModule, RippleModule],\n                    exports: [TabView, TabPanel, SharedModule],\n                    declarations: [TabView, TabPanel]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TabPanel, TabView, TabViewModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n\nclass MutationObserverFactory {\n  create(callback) {\n    return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n  }\n\n}\n\nMutationObserverFactory.ɵfac = function MutationObserverFactory_Factory(t) {\n  return new (t || MutationObserverFactory)();\n};\n\nMutationObserverFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: MutationObserverFactory,\n  factory: MutationObserverFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MutationObserverFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n/** An injectable service that allows watching elements for changes to their content. */\n\n\nclass ContentObserver {\n  constructor(_mutationObserverFactory) {\n    this._mutationObserverFactory = _mutationObserverFactory;\n    /** Keeps track of the existing MutationObservers so they can be reused. */\n\n    this._observedElements = new Map();\n  }\n\n  ngOnDestroy() {\n    this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n  }\n\n  observe(elementOrRef) {\n    const element = coerceElement(elementOrRef);\n    return new Observable(observer => {\n      const stream = this._observeElement(element);\n\n      const subscription = stream.subscribe(observer);\n      return () => {\n        subscription.unsubscribe();\n\n        this._unobserveElement(element);\n      };\n    });\n  }\n  /**\n   * Observes the given element by using the existing MutationObserver if available, or creating a\n   * new one if not.\n   */\n\n\n  _observeElement(element) {\n    if (!this._observedElements.has(element)) {\n      const stream = new Subject();\n\n      const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n\n      if (observer) {\n        observer.observe(element, {\n          characterData: true,\n          childList: true,\n          subtree: true\n        });\n      }\n\n      this._observedElements.set(element, {\n        observer,\n        stream,\n        count: 1\n      });\n    } else {\n      this._observedElements.get(element).count++;\n    }\n\n    return this._observedElements.get(element).stream;\n  }\n  /**\n   * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n   * observing this element.\n   */\n\n\n  _unobserveElement(element) {\n    if (this._observedElements.has(element)) {\n      this._observedElements.get(element).count--;\n\n      if (!this._observedElements.get(element).count) {\n        this._cleanupObserver(element);\n      }\n    }\n  }\n  /** Clean up the underlying MutationObserver for the specified element. */\n\n\n  _cleanupObserver(element) {\n    if (this._observedElements.has(element)) {\n      const {\n        observer,\n        stream\n      } = this._observedElements.get(element);\n\n      if (observer) {\n        observer.disconnect();\n      }\n\n      stream.complete();\n\n      this._observedElements.delete(element);\n    }\n  }\n\n}\n\nContentObserver.ɵfac = function ContentObserver_Factory(t) {\n  return new (t || ContentObserver)(i0.ɵɵinject(MutationObserverFactory));\n};\n\nContentObserver.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ContentObserver,\n  factory: ContentObserver.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContentObserver, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: MutationObserverFactory\n    }];\n  }, null);\n})();\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\n\n\nclass CdkObserveContent {\n  constructor(_contentObserver, _elementRef, _ngZone) {\n    this._contentObserver = _contentObserver;\n    this._elementRef = _elementRef;\n    this._ngZone = _ngZone;\n    /** Event emitted for each change in the element's content. */\n\n    this.event = new EventEmitter();\n    this._disabled = false;\n    this._currentSubscription = null;\n  }\n  /**\n   * Whether observing content is disabled. This option can be used\n   * to disconnect the underlying MutationObserver until it is needed.\n   */\n\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n    this._disabled ? this._unsubscribe() : this._subscribe();\n  }\n  /** Debounce interval for emitting the changes. */\n\n\n  get debounce() {\n    return this._debounce;\n  }\n\n  set debounce(value) {\n    this._debounce = coerceNumberProperty(value);\n\n    this._subscribe();\n  }\n\n  ngAfterContentInit() {\n    if (!this._currentSubscription && !this.disabled) {\n      this._subscribe();\n    }\n  }\n\n  ngOnDestroy() {\n    this._unsubscribe();\n  }\n\n  _subscribe() {\n    this._unsubscribe();\n\n    const stream = this._contentObserver.observe(this._elementRef); // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n    // Consider brining it back inside the zone next time we're making breaking changes.\n    // Bringing it back inside can cause things like infinite change detection loops and changed\n    // after checked errors if people's code isn't handling it properly.\n\n\n    this._ngZone.runOutsideAngular(() => {\n      this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n    });\n  }\n\n  _unsubscribe() {\n    this._currentSubscription?.unsubscribe();\n  }\n\n}\n\nCdkObserveContent.ɵfac = function CdkObserveContent_Factory(t) {\n  return new (t || CdkObserveContent)(i0.ɵɵdirectiveInject(ContentObserver), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkObserveContent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkObserveContent,\n  selectors: [[\"\", \"cdkObserveContent\", \"\"]],\n  inputs: {\n    disabled: [\"cdkObserveContentDisabled\", \"disabled\"],\n    debounce: \"debounce\"\n  },\n  outputs: {\n    event: \"cdkObserveContent\"\n  },\n  exportAs: [\"cdkObserveContent\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkObserveContent, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkObserveContent]',\n      exportAs: 'cdkObserveContent'\n    }]\n  }], function () {\n    return [{\n      type: ContentObserver\n    }, {\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    event: [{\n      type: Output,\n      args: ['cdkObserveContent']\n    }],\n    disabled: [{\n      type: Input,\n      args: ['cdkObserveContentDisabled']\n    }],\n    debounce: [{\n      type: Input\n    }]\n  });\n})();\n\nclass ObserversModule {}\n\nObserversModule.ɵfac = function ObserversModule_Factory(t) {\n  return new (t || ObserversModule)();\n};\n\nObserversModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ObserversModule\n});\nObserversModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  providers: [MutationObserverFactory]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ObserversModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkObserveContent],\n      declarations: [CdkObserveContent],\n      providers: [MutationObserverFactory]\n    }]\n  }], null, null);\n})();\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/observers.mjs"],"names":["coerceElement","coerceBooleanProperty","coerceNumberProperty","i0","Injectable","EventEmitter","Directive","Output","Input","NgModule","Observable","Subject","debounceTime","MutationObserverFactory","create","callback","MutationObserver","ɵfac","ɵprov","type","args","providedIn","ContentObserver","constructor","_mutationObserverFactory","_observedElements","Map","ngOnDestroy","forEach","_","element","_cleanupObserver","observe","elementOrRef","observer","stream","_observeElement","subscription","subscribe","unsubscribe","_unobserveElement","has","mutations","next","characterData","childList","subtree","set","count","get","disconnect","complete","delete","CdkObserveContent","_contentObserver","_elementRef","_ngZone","event","_disabled","_currentSubscription","disabled","value","_unsubscribe","_subscribe","debounce","_debounce","ngAfterContentInit","runOutsideAngular","pipe","ElementRef","NgZone","ɵdir","selector","exportAs","ObserversModule","ɵmod","ɵinj","exports","declarations","providers"],"mappings":"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","sourcesContent":["import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n    create(callback) {\n        return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n    }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n    constructor(_mutationObserverFactory) {\n        this._mutationObserverFactory = _mutationObserverFactory;\n        /** Keeps track of the existing MutationObservers so they can be reused. */\n        this._observedElements = new Map();\n    }\n    ngOnDestroy() {\n        this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n    }\n    observe(elementOrRef) {\n        const element = coerceElement(elementOrRef);\n        return new Observable((observer) => {\n            const stream = this._observeElement(element);\n            const subscription = stream.subscribe(observer);\n            return () => {\n                subscription.unsubscribe();\n                this._unobserveElement(element);\n            };\n        });\n    }\n    /**\n     * Observes the given element by using the existing MutationObserver if available, or creating a\n     * new one if not.\n     */\n    _observeElement(element) {\n        if (!this._observedElements.has(element)) {\n            const stream = new Subject();\n            const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n            if (observer) {\n                observer.observe(element, {\n                    characterData: true,\n                    childList: true,\n                    subtree: true,\n                });\n            }\n            this._observedElements.set(element, { observer, stream, count: 1 });\n        }\n        else {\n            this._observedElements.get(element).count++;\n        }\n        return this._observedElements.get(element).stream;\n    }\n    /**\n     * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n     * observing this element.\n     */\n    _unobserveElement(element) {\n        if (this._observedElements.has(element)) {\n            this._observedElements.get(element).count--;\n            if (!this._observedElements.get(element).count) {\n                this._cleanupObserver(element);\n            }\n        }\n    }\n    /** Clean up the underlying MutationObserver for the specified element. */\n    _cleanupObserver(element) {\n        if (this._observedElements.has(element)) {\n            const { observer, stream } = this._observedElements.get(element);\n            if (observer) {\n                observer.disconnect();\n            }\n            stream.complete();\n            this._observedElements.delete(element);\n        }\n    }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n    constructor(_contentObserver, _elementRef, _ngZone) {\n        this._contentObserver = _contentObserver;\n        this._elementRef = _elementRef;\n        this._ngZone = _ngZone;\n        /** Event emitted for each change in the element's content. */\n        this.event = new EventEmitter();\n        this._disabled = false;\n        this._currentSubscription = null;\n    }\n    /**\n     * Whether observing content is disabled. This option can be used\n     * to disconnect the underlying MutationObserver until it is needed.\n     */\n    get disabled() {\n        return this._disabled;\n    }\n    set disabled(value) {\n        this._disabled = coerceBooleanProperty(value);\n        this._disabled ? this._unsubscribe() : this._subscribe();\n    }\n    /** Debounce interval for emitting the changes. */\n    get debounce() {\n        return this._debounce;\n    }\n    set debounce(value) {\n        this._debounce = coerceNumberProperty(value);\n        this._subscribe();\n    }\n    ngAfterContentInit() {\n        if (!this._currentSubscription && !this.disabled) {\n            this._subscribe();\n        }\n    }\n    ngOnDestroy() {\n        this._unsubscribe();\n    }\n    _subscribe() {\n        this._unsubscribe();\n        const stream = this._contentObserver.observe(this._elementRef);\n        // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n        // Consider brining it back inside the zone next time we're making breaking changes.\n        // Bringing it back inside can cause things like infinite change detection loops and changed\n        // after checked errors if people's code isn't handling it properly.\n        this._ngZone.runOutsideAngular(() => {\n            this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n        });\n    }\n    _unsubscribe() {\n        this._currentSubscription?.unsubscribe();\n    }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkObserveContent]',\n                    exportAs: 'cdkObserveContent',\n                }]\n        }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n                type: Output,\n                args: ['cdkObserveContent']\n            }], disabled: [{\n                type: Input,\n                args: ['cdkObserveContentDisabled']\n            }], debounce: [{\n                type: Input\n            }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkObserveContent],\n                    declarations: [CdkObserveContent],\n                    providers: [MutationObserverFactory],\n                }]\n        }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.package-lock.json
===================================================================
--- trip-planner-front/node_modules/.package-lock.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/.package-lock.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -3447,12 +3447,4 @@
       "dev": true
     },
-    "node_modules/bootstrap": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
-      "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/brace-expansion": {
       "version": "1.1.11",
Index: trip-planner-front/node_modules/@ampproject/remapping/package.json
===================================================================
--- trip-planner-front/node_modules/@ampproject/remapping/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@ampproject/remapping/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,69 @@
 {
-  "name": "@ampproject/remapping",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "@ampproject/remapping@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@ampproject/remapping@1.0.1",
+  "_id": "@ampproject/remapping@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==",
+  "_location": "/@ampproject/remapping",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@ampproject/remapping@1.0.1",
+    "name": "@ampproject/remapping",
+    "escapedName": "@ampproject%2fremapping",
+    "scope": "@ampproject",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Justin Ridgewell",
+    "email": "jridgewell@google.com"
+  },
+  "bugs": {
+    "url": "https://github.com/ampproject/remapping/issues"
+  },
+  "dependencies": {
+    "@jridgewell/resolve-uri": "1.0.0",
+    "sourcemap-codec": "1.4.8"
+  },
   "description": "Remap sequential sourcemaps through transformations to point at the original source code",
+  "devDependencies": {
+    "@rollup/plugin-node-resolve": "11.0.1",
+    "@rollup/plugin-typescript": "8.1.0",
+    "@types/jest": "26.0.19",
+    "@typescript-eslint/eslint-plugin": "4.10.0",
+    "@typescript-eslint/parser": "4.10.0",
+    "eslint": "7.15.0",
+    "eslint-config-prettier": "7.0.0",
+    "jest": "26.6.3",
+    "jest-config": "26.6.3",
+    "npm-run-all": "4.1.5",
+    "prettier": "2.2.1",
+    "rollup": "2.35.1",
+    "ts-jest": "26.4.4",
+    "tslib": "2.0.3",
+    "typescript": "4.1.3"
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/ampproject/remapping#readme",
   "keywords": [
     "source",
@@ -8,18 +71,11 @@
     "remap"
   ],
+  "license": "Apache-2.0",
   "main": "dist/remapping.umd.js",
   "module": "dist/remapping.mjs",
-  "typings": "dist/types/remapping.d.ts",
-  "files": [
-    "dist"
-  ],
-  "author": "Justin Ridgewell <jridgewell@google.com>",
+  "name": "@ampproject/remapping",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/ampproject/remapping.git"
-  },
-  "license": "Apache-2.0",
-  "engines": {
-    "node": ">=6.0.0"
   },
   "scripts": {
@@ -41,24 +97,5 @@
     "test:watch": "jest --coverage --watch"
   },
-  "devDependencies": {
-    "@rollup/plugin-node-resolve": "11.0.1",
-    "@rollup/plugin-typescript": "8.1.0",
-    "@types/jest": "26.0.19",
-    "@typescript-eslint/eslint-plugin": "4.10.0",
-    "@typescript-eslint/parser": "4.10.0",
-    "eslint": "7.15.0",
-    "eslint-config-prettier": "7.0.0",
-    "jest": "26.6.3",
-    "jest-config": "26.6.3",
-    "npm-run-all": "4.1.5",
-    "prettier": "2.2.1",
-    "rollup": "2.35.1",
-    "ts-jest": "26.4.4",
-    "tslib": "2.0.3",
-    "typescript": "4.1.3"
-  },
-  "dependencies": {
-    "@jridgewell/resolve-uri": "1.0.0",
-    "sourcemap-codec": "1.4.8"
-  }
+  "typings": "dist/types/remapping.d.ts",
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/@angular-devkit/architect/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/architect/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/architect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,54 @@
 {
-  "name": "@angular-devkit/architect",
-  "version": "0.1202.9",
-  "description": "Angular Build Facade",
-  "experimental": true,
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "_args": [
+    [
+      "@angular-devkit/architect@0.1202.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/architect@0.1202.9",
+  "_id": "@angular-devkit/architect@0.1202.9",
+  "_inBundle": false,
+  "_integrity": "sha512-s2NcFqZjsdYoR0vhJWLCwykF6hG7F0C5fJJs49i6IJMKj5Ai58z7d2IFYvD8nA60paMvjFS14OQ+E/FEEEZ88Q==",
+  "_location": "/@angular-devkit/architect",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/architect@0.1202.9",
+    "name": "@angular-devkit/architect",
+    "escapedName": "@angular-devkit%2farchitect",
+    "scope": "@angular-devkit",
+    "rawSpec": "0.1202.9",
+    "saveSpec": null,
+    "fetchSpec": "0.1202.9"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular-devkit/build-webpack",
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.9.tgz",
+  "_spec": "0.1202.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
+  "builders": "./builders/builders.json",
   "dependencies": {
     "@angular-devkit/core": "12.2.9",
     "rxjs": "6.6.7"
   },
-  "builders": "./builders/builders.json",
+  "description": "Angular Build Facade",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "experimental": true,
+  "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
     "angular",
@@ -18,18 +58,12 @@
     "Angular DevKit"
   ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/architect",
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "0.1202.9"
 }
Index: trip-planner-front/node_modules/@angular-devkit/build-angular/node_modules/tslib/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/build-angular/node_modules/tslib/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/build-angular/node_modules/tslib/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,68 @@
 {
+  "_args": [
+    [
+      "tslib@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "tslib@2.3.0",
+  "_id": "tslib@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+  "_location": "/@angular-devkit/build-angular/tslib",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tslib@2.3.0",
     "name": "tslib",
-    "author": "Microsoft Corp.",
-    "homepage": "https://www.typescriptlang.org/",
-    "version": "2.3.0",
-    "license": "0BSD",
-    "description": "Runtime library for TypeScript helper functions",
-    "keywords": [
-        "TypeScript",
-        "Microsoft",
-        "compiler",
-        "language",
-        "javascript",
-        "tslib",
-        "runtime"
-    ],
-    "bugs": {
-        "url": "https://github.com/Microsoft/TypeScript/issues"
+    "escapedName": "tslib",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Microsoft Corp."
+  },
+  "bugs": {
+    "url": "https://github.com/Microsoft/TypeScript/issues"
+  },
+  "description": "Runtime library for TypeScript helper functions",
+  "exports": {
+    ".": {
+      "module": "./tslib.es6.js",
+      "import": "./modules/index.js",
+      "default": "./tslib.js"
     },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/Microsoft/tslib.git"
-    },
-    "main": "tslib.js",
-    "module": "tslib.es6.js",
-    "jsnext:main": "tslib.es6.js",
-    "typings": "tslib.d.ts",
-    "sideEffects": false,
-    "exports": {
-        ".": {
-            "module": "./tslib.es6.js",
-            "import": "./modules/index.js",
-            "default": "./tslib.js"
-        },
-        "./": "./"
-    }
+    "./": "./"
+  },
+  "homepage": "https://www.typescriptlang.org/",
+  "jsnext:main": "tslib.es6.js",
+  "keywords": [
+    "TypeScript",
+    "Microsoft",
+    "compiler",
+    "language",
+    "javascript",
+    "tslib",
+    "runtime"
+  ],
+  "license": "0BSD",
+  "main": "tslib.js",
+  "module": "tslib.es6.js",
+  "name": "tslib",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Microsoft/tslib.git"
+  },
+  "sideEffects": false,
+  "typings": "tslib.d.ts",
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/@angular-devkit/build-angular/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/build-angular/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/build-angular/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,39 @@
 {
-  "name": "@angular-devkit/build-angular",
-  "version": "12.2.9",
-  "description": "Angular Webpack Build Facade",
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "_args": [
+    [
+      "@angular-devkit/build-angular@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/build-angular@12.2.9",
+  "_id": "@angular-devkit/build-angular@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-A8yddhGpUnrTcA4WCiUxwklFbfkNMfvlST5CT9VLVjz4MEwwOpdaNmIF39+NMr4XTgOBbP6Bq/t3ciIsB5+/Uw==",
+  "_location": "/@angular-devkit/build-angular",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/build-angular@12.2.9",
+    "name": "@angular-devkit/build-angular",
+    "escapedName": "@angular-devkit%2fbuild-angular",
+    "scope": "@angular-devkit",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
   "builders": "builders.json",
   "dependencies": {
@@ -35,4 +66,5 @@
     "css-loader": "6.2.0",
     "css-minimizer-webpack-plugin": "3.0.2",
+    "esbuild": "0.13.4",
     "esbuild-wasm": "0.13.4",
     "find-cache-dir": "3.3.1",
@@ -77,4 +109,21 @@
     "webpack-subresource-integrity": "1.5.2"
   },
+  "description": "Angular Webpack Build Facade",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "homepage": "https://github.com/angular/angular-cli",
+  "keywords": [
+    "angular",
+    "Angular CLI",
+    "devkit",
+    "sdk",
+    "Angular DevKit"
+  ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/build-angular",
   "optionalDependencies": {
     "esbuild": "0.13.4"
@@ -114,25 +163,9 @@
     }
   },
-  "keywords": [
-    "angular",
-    "Angular CLI",
-    "devkit",
-    "sdk",
-    "Angular DevKit"
-  ],
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular-devkit/build-optimizer/node_modules/tslib/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/build-optimizer/node_modules/tslib/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/build-optimizer/node_modules/tslib/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,68 @@
 {
+  "_args": [
+    [
+      "tslib@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "tslib@2.3.0",
+  "_id": "tslib@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+  "_location": "/@angular-devkit/build-optimizer/tslib",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tslib@2.3.0",
     "name": "tslib",
-    "author": "Microsoft Corp.",
-    "homepage": "https://www.typescriptlang.org/",
-    "version": "2.3.0",
-    "license": "0BSD",
-    "description": "Runtime library for TypeScript helper functions",
-    "keywords": [
-        "TypeScript",
-        "Microsoft",
-        "compiler",
-        "language",
-        "javascript",
-        "tslib",
-        "runtime"
-    ],
-    "bugs": {
-        "url": "https://github.com/Microsoft/TypeScript/issues"
+    "escapedName": "tslib",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-optimizer"
+  ],
+  "_resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Microsoft Corp."
+  },
+  "bugs": {
+    "url": "https://github.com/Microsoft/TypeScript/issues"
+  },
+  "description": "Runtime library for TypeScript helper functions",
+  "exports": {
+    ".": {
+      "module": "./tslib.es6.js",
+      "import": "./modules/index.js",
+      "default": "./tslib.js"
     },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/Microsoft/tslib.git"
-    },
-    "main": "tslib.js",
-    "module": "tslib.es6.js",
-    "jsnext:main": "tslib.es6.js",
-    "typings": "tslib.d.ts",
-    "sideEffects": false,
-    "exports": {
-        ".": {
-            "module": "./tslib.es6.js",
-            "import": "./modules/index.js",
-            "default": "./tslib.js"
-        },
-        "./": "./"
-    }
+    "./": "./"
+  },
+  "homepage": "https://www.typescriptlang.org/",
+  "jsnext:main": "tslib.es6.js",
+  "keywords": [
+    "TypeScript",
+    "Microsoft",
+    "compiler",
+    "language",
+    "javascript",
+    "tslib",
+    "runtime"
+  ],
+  "license": "0BSD",
+  "main": "tslib.js",
+  "module": "tslib.es6.js",
+  "name": "tslib",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Microsoft/tslib.git"
+  },
+  "sideEffects": false,
+  "typings": "tslib.d.ts",
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/@angular-devkit/build-optimizer/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/build-optimizer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/build-optimizer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,41 @@
 {
-  "name": "@angular-devkit/build-optimizer",
-  "version": "0.1202.9",
-  "description": "Angular Build Optimizer",
-  "experimental": true,
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "_args": [
+    [
+      "@angular-devkit/build-optimizer@0.1202.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/build-optimizer@0.1202.9",
+  "_id": "@angular-devkit/build-optimizer@0.1202.9",
+  "_inBundle": false,
+  "_integrity": "sha512-yDR7f2fRWzJdqa7U0eIYu5fCRIae3tcSsYE18UPiV5ypGK3talMIpZ1ibkklr9Nm9SAB6Js1/EdVBGB5jo3R9A==",
+  "_location": "/@angular-devkit/build-optimizer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/build-optimizer@0.1202.9",
+    "name": "@angular-devkit/build-optimizer",
+    "escapedName": "@angular-devkit%2fbuild-optimizer",
+    "scope": "@angular-devkit",
+    "rawSpec": "0.1202.9",
+    "saveSpec": null,
+    "fetchSpec": "0.1202.9"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.9.tgz",
+  "_spec": "0.1202.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
   "bin": {
-    "build-optimizer": "./src/build-optimizer/cli.js"
+    "build-optimizer": "src/build-optimizer/cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
   },
   "dependencies": {
@@ -14,4 +44,22 @@
     "typescript": "4.3.5"
   },
+  "description": "Angular Build Optimizer",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "experimental": true,
+  "homepage": "https://github.com/angular/angular-cli",
+  "keywords": [
+    "angular",
+    "Angular CLI",
+    "devkit",
+    "sdk",
+    "Angular DevKit"
+  ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/build-optimizer",
   "peerDependencies": {
     "webpack": "^5.30.0"
@@ -22,25 +70,9 @@
     }
   },
-  "keywords": [
-    "angular",
-    "Angular CLI",
-    "devkit",
-    "sdk",
-    "Angular DevKit"
-  ],
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "0.1202.9"
 }
Index: trip-planner-front/node_modules/@angular-devkit/build-webpack/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/build-webpack/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/build-webpack/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,39 @@
 {
-  "name": "@angular-devkit/build-webpack",
-  "version": "0.1202.9",
-  "description": "Webpack Builder for Architect",
-  "experimental": true,
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "_args": [
+    [
+      "@angular-devkit/build-webpack@0.1202.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/build-webpack@0.1202.9",
+  "_id": "@angular-devkit/build-webpack@0.1202.9",
+  "_inBundle": false,
+  "_integrity": "sha512-UKVxFTRSyDpQDxM1yk1OJiynhbryrbsy+WgZ/gFcnZcrRGtrpAWOq+uMXfq05zET6CNqpOKBnxy9LSHAwXR5Ig==",
+  "_location": "/@angular-devkit/build-webpack",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/build-webpack@0.1202.9",
+    "name": "@angular-devkit/build-webpack",
+    "escapedName": "@angular-devkit%2fbuild-webpack",
+    "scope": "@angular-devkit",
+    "rawSpec": "0.1202.9",
+    "saveSpec": null,
+    "fetchSpec": "0.1202.9"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.9.tgz",
+  "_spec": "0.1202.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
   "builders": "builders.json",
   "dependencies": {
@@ -11,8 +41,12 @@
     "rxjs": "6.6.7"
   },
-  "peerDependencies": {
-    "webpack": "^5.30.0",
-    "webpack-dev-server": "^3.1.4"
+  "description": "Webpack Builder for Architect",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
   },
+  "experimental": true,
+  "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
     "angular",
@@ -22,18 +56,16 @@
     "Angular DevKit"
   ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/build-webpack",
+  "peerDependencies": {
+    "webpack": "^5.30.0",
+    "webpack-dev-server": "^3.1.4"
+  },
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "0.1202.9"
 }
Index: trip-planner-front/node_modules/@angular-devkit/core/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/core/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,58 @@
 {
-  "name": "@angular-devkit/core",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@angular-devkit/core@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/core@12.2.9",
+  "_id": "@angular-devkit/core@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-iPHQiga08bbryiVq3QYzwpuq9sNb8CB/MVy65MHJ0fuW1z6RYDeUh1EziitBBUT2d81KWKPO1wQ2DuUoxOg4mg==",
+  "_location": "/@angular-devkit/core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/core@12.2.9",
+    "name": "@angular-devkit/core",
+    "escapedName": "@angular-devkit%2fcore",
+    "scope": "@angular-devkit",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/architect",
+    "/@angular-devkit/build-angular",
+    "/@angular-devkit/schematics",
+    "/@angular/cli",
+    "/@schematics/angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
+  "dependencies": {
+    "ajv": "8.6.2",
+    "ajv-formats": "2.1.0",
+    "fast-json-stable-stringify": "2.1.0",
+    "magic-string": "0.25.7",
+    "rxjs": "6.6.7",
+    "source-map": "0.7.3"
+  },
   "description": "Angular DevKit - Core Utility Library",
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
     "angular",
@@ -13,26 +63,12 @@
     "core"
   ],
-  "dependencies": {
-    "ajv": "8.6.2",
-    "ajv-formats": "2.1.0",
-    "fast-json-stable-stringify": "2.1.0",
-    "magic-string": "0.25.7",
-    "rxjs": "6.6.7",
-    "source-map": "0.7.3"
-  },
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/core",
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular-devkit/schematics/package.json
===================================================================
--- trip-planner-front/node_modules/@angular-devkit/schematics/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular-devkit/schematics/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,52 @@
 {
-  "name": "@angular-devkit/schematics",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@angular-devkit/schematics@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular-devkit/schematics@12.2.9",
+  "_id": "@angular-devkit/schematics@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-OcMDCdlIxiir8XntrNXdXEPi9/8BRx54oYZeRosr0sJZlz4pPzsHs36t5uX2DURYYMkNNMaBnf2luUIC+77ZsA==",
+  "_location": "/@angular-devkit/schematics",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular-devkit/schematics@12.2.9",
+    "name": "@angular-devkit/schematics",
+    "escapedName": "@angular-devkit%2fschematics",
+    "scope": "@angular-devkit",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/@angular/cli",
+    "/@schematics/angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
+  "dependencies": {
+    "@angular-devkit/core": "12.2.9",
+    "ora": "5.4.1",
+    "rxjs": "6.6.7"
+  },
   "description": "Angular Schematics - Library",
-  "main": "src/index.js",
-  "typings": "src/index.d.ts",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
     "angular",
@@ -18,23 +62,12 @@
     "schematics"
   ],
-  "dependencies": {
-    "@angular-devkit/core": "12.2.9",
-    "ora": "5.4.1",
-    "rxjs": "6.6.7"
-  },
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "@angular-devkit/schematics",
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli"
+  "typings": "src/index.d.ts",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular/animations/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/animations/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/animations/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,56 @@
 {
-  "name": "@angular/animations",
-  "version": "12.2.9",
-  "description": "Angular - animations integration with web-animations",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/animations@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/animations@12.2.9",
+  "_id": "@angular/animations@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-duGhAuXw4OtgnWi5KqS/qnnWDtvG3jbPjjalTMhFPHHdUl7p3pJ2sM9WX7Fqp3QPnxBnQ+vdgQYbfUQ7c/g2cA==",
+  "_location": "/@angular/animations",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/animations@12.2.9",
+    "name": "@angular/animations",
+    "escapedName": "@angular%2fanimations",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "peerDependencies": {
-    "@angular/core": "12.2.9"
+  "description": "Angular - animations integration with web-animations",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/animations"
-  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
+  "es2015": "./fesm2015/animations.js",
+  "esm2015": "./esm2015/animations.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
+  "fesm2015": "./fesm2015/animations.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/animations.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
+  "module": "./fesm2015/animations.js",
+  "name": "@angular/animations",
   "ng-update": {
     "packageGroup": [
@@ -39,14 +73,15 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/core": "12.2.9"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/animations"
+  },
   "sideEffects": false,
-  "main": "./bundles/animations.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
-  "fesm2015": "./fesm2015/animations.js",
-  "esm2015": "./esm2015/animations.js",
   "typings": "./animations.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
-  "module": "./fesm2015/animations.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/animations.js",
-  "es2015": "./fesm2015/animations.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,3801 +1,0 @@
-import * as i0 from '@angular/core';
-import { Injectable, NgZone, Inject, InjectionToken, Directive, Input, EventEmitter, ElementRef, ChangeDetectorRef, Optional, SkipSelf, Output, TemplateRef, ViewContainerRef, Self, ContentChildren, ContentChild, NgModule } from '@angular/core';
-import * as i1 from '@angular/common';
-import { DOCUMENT } from '@angular/common';
-import * as i2 from '@angular/cdk/scrolling';
-import { ViewportRuler, ScrollDispatcher, CdkScrollableModule } from '@angular/cdk/scrolling';
-import { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';
-import { coerceBooleanProperty, coerceElement, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion';
-import { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';
-import { Subject, Subscription, interval, animationFrameScheduler, Observable, merge } from 'rxjs';
-import { takeUntil, startWith, map, take, tap, switchMap } from 'rxjs/operators';
-import { Directionality } from '@angular/cdk/bidi';
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Shallow-extends a stylesheet object with another stylesheet-like object.
- * Note that the keys in `source` have to be dash-cased.
- * @docs-private
- */
-import * as ɵngcc0 from '@angular/core';
-import * as ɵngcc1 from '@angular/cdk/scrolling';
-import * as ɵngcc2 from '@angular/cdk/bidi';
-function extendStyles(dest, source, importantProperties) {
-    for (let key in source) {
-        if (source.hasOwnProperty(key)) {
-            const value = source[key];
-            if (value) {
-                dest.setProperty(key, value, (importantProperties === null || importantProperties === void 0 ? void 0 : importantProperties.has(key)) ? 'important' : '');
-            }
-            else {
-                dest.removeProperty(key);
-            }
-        }
-    }
-    return dest;
-}
-/**
- * Toggles whether the native drag interactions should be enabled for an element.
- * @param element Element on which to toggle the drag interactions.
- * @param enable Whether the drag interactions should be enabled.
- * @docs-private
- */
-function toggleNativeDragInteractions(element, enable) {
-    const userSelect = enable ? '' : 'none';
-    extendStyles(element.style, {
-        'touch-action': enable ? '' : 'none',
-        '-webkit-user-drag': enable ? '' : 'none',
-        '-webkit-tap-highlight-color': enable ? '' : 'transparent',
-        'user-select': userSelect,
-        '-ms-user-select': userSelect,
-        '-webkit-user-select': userSelect,
-        '-moz-user-select': userSelect
-    });
-}
-/**
- * Toggles whether an element is visible while preserving its dimensions.
- * @param element Element whose visibility to toggle
- * @param enable Whether the element should be visible.
- * @param importantProperties Properties to be set as `!important`.
- * @docs-private
- */
-function toggleVisibility(element, enable, importantProperties) {
-    extendStyles(element.style, {
-        position: enable ? '' : 'fixed',
-        top: enable ? '' : '0',
-        opacity: enable ? '' : '0',
-        left: enable ? '' : '-999em'
-    }, importantProperties);
-}
-/**
- * Combines a transform string with an optional other transform
- * that exited before the base transform was applied.
- */
-function combineTransforms(transform, initialTransform) {
-    return initialTransform && initialTransform != 'none' ?
-        (transform + ' ' + initialTransform) :
-        transform;
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Parses a CSS time value to milliseconds. */
-function parseCssTimeUnitsToMs(value) {
-    // Some browsers will return it in seconds, whereas others will return milliseconds.
-    const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;
-    return parseFloat(value) * multiplier;
-}
-/** Gets the transform transition duration, including the delay, of an element in milliseconds. */
-function getTransformTransitionDurationInMs(element) {
-    const computedStyle = getComputedStyle(element);
-    const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');
-    const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');
-    // If there's no transition for `all` or `transform`, we shouldn't do anything.
-    if (!property) {
-        return 0;
-    }
-    // Get the index of the property that we're interested in and match
-    // it up to the same index in `transition-delay` and `transition-duration`.
-    const propertyIndex = transitionedProperties.indexOf(property);
-    const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');
-    const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');
-    return parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +
-        parseCssTimeUnitsToMs(rawDelays[propertyIndex]);
-}
-/** Parses out multiple values from a computed style into an array. */
-function parseCssPropertyValue(computedStyle, name) {
-    const value = computedStyle.getPropertyValue(name);
-    return value.split(',').map(part => part.trim());
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Gets a mutable version of an element's bounding `ClientRect`. */
-function getMutableClientRect(element) {
-    const clientRect = element.getBoundingClientRect();
-    // We need to clone the `clientRect` here, because all the values on it are readonly
-    // and we need to be able to update them. Also we can't use a spread here, because
-    // the values on a `ClientRect` aren't own properties. See:
-    // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes
-    return {
-        top: clientRect.top,
-        right: clientRect.right,
-        bottom: clientRect.bottom,
-        left: clientRect.left,
-        width: clientRect.width,
-        height: clientRect.height
-    };
-}
-/**
- * Checks whether some coordinates are within a `ClientRect`.
- * @param clientRect ClientRect that is being checked.
- * @param x Coordinates along the X axis.
- * @param y Coordinates along the Y axis.
- */
-function isInsideClientRect(clientRect, x, y) {
-    const { top, bottom, left, right } = clientRect;
-    return y >= top && y <= bottom && x >= left && x <= right;
-}
-/**
- * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.
- * @param clientRect `ClientRect` that should be updated.
- * @param top Amount to add to the `top` position.
- * @param left Amount to add to the `left` position.
- */
-function adjustClientRect(clientRect, top, left) {
-    clientRect.top += top;
-    clientRect.bottom = clientRect.top + clientRect.height;
-    clientRect.left += left;
-    clientRect.right = clientRect.left + clientRect.width;
-}
-/**
- * Checks whether the pointer coordinates are close to a ClientRect.
- * @param rect ClientRect to check against.
- * @param threshold Threshold around the ClientRect.
- * @param pointerX Coordinates along the X axis.
- * @param pointerY Coordinates along the Y axis.
- */
-function isPointerNearClientRect(rect, threshold, pointerX, pointerY) {
-    const { top, right, bottom, left, width, height } = rect;
-    const xThreshold = width * threshold;
-    const yThreshold = height * threshold;
-    return pointerY > top - yThreshold && pointerY < bottom + yThreshold &&
-        pointerX > left - xThreshold && pointerX < right + xThreshold;
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Keeps track of the scroll position and dimensions of the parents of an element. */
-class ParentPositionTracker {
-    constructor(_document, _viewportRuler) {
-        this._document = _document;
-        this._viewportRuler = _viewportRuler;
-        /** Cached positions of the scrollable parent elements. */
-        this.positions = new Map();
-    }
-    /** Clears the cached positions. */
-    clear() {
-        this.positions.clear();
-    }
-    /** Caches the positions. Should be called at the beginning of a drag sequence. */
-    cache(elements) {
-        this.clear();
-        this.positions.set(this._document, {
-            scrollPosition: this._viewportRuler.getViewportScrollPosition(),
-        });
-        elements.forEach(element => {
-            this.positions.set(element, {
-                scrollPosition: { top: element.scrollTop, left: element.scrollLeft },
-                clientRect: getMutableClientRect(element)
-            });
-        });
-    }
-    /** Handles scrolling while a drag is taking place. */
-    handleScroll(event) {
-        const target = _getEventTarget(event);
-        const cachedPosition = this.positions.get(target);
-        if (!cachedPosition) {
-            return null;
-        }
-        // Used when figuring out whether an element is inside the scroll parent. If the scrolled
-        // parent is the `document`, we use the `documentElement`, because IE doesn't support
-        // `contains` on the `document`.
-        const scrolledParentNode = target === this._document ? target.documentElement : target;
-        const scrollPosition = cachedPosition.scrollPosition;
-        let newTop;
-        let newLeft;
-        if (target === this._document) {
-            const viewportScrollPosition = this._viewportRuler.getViewportScrollPosition();
-            newTop = viewportScrollPosition.top;
-            newLeft = viewportScrollPosition.left;
-        }
-        else {
-            newTop = target.scrollTop;
-            newLeft = target.scrollLeft;
-        }
-        const topDifference = scrollPosition.top - newTop;
-        const leftDifference = scrollPosition.left - newLeft;
-        // Go through and update the cached positions of the scroll
-        // parents that are inside the element that was scrolled.
-        this.positions.forEach((position, node) => {
-            if (position.clientRect && target !== node && scrolledParentNode.contains(node)) {
-                adjustClientRect(position.clientRect, topDifference, leftDifference);
-            }
-        });
-        scrollPosition.top = newTop;
-        scrollPosition.left = newLeft;
-        return { top: topDifference, left: leftDifference };
-    }
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Creates a deep clone of an element. */
-function deepCloneNode(node) {
-    const clone = node.cloneNode(true);
-    const descendantsWithId = clone.querySelectorAll('[id]');
-    const nodeName = node.nodeName.toLowerCase();
-    // Remove the `id` to avoid having multiple elements with the same id on the page.
-    clone.removeAttribute('id');
-    for (let i = 0; i < descendantsWithId.length; i++) {
-        descendantsWithId[i].removeAttribute('id');
-    }
-    if (nodeName === 'canvas') {
-        transferCanvasData(node, clone);
-    }
-    else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {
-        transferInputData(node, clone);
-    }
-    transferData('canvas', node, clone, transferCanvasData);
-    transferData('input, textarea, select', node, clone, transferInputData);
-    return clone;
-}
-/** Matches elements between an element and its clone and allows for their data to be cloned. */
-function transferData(selector, node, clone, callback) {
-    const descendantElements = node.querySelectorAll(selector);
-    if (descendantElements.length) {
-        const cloneElements = clone.querySelectorAll(selector);
-        for (let i = 0; i < descendantElements.length; i++) {
-            callback(descendantElements[i], cloneElements[i]);
-        }
-    }
-}
-// Counter for unique cloned radio button names.
-let cloneUniqueId = 0;
-/** Transfers the data of one input element to another. */
-function transferInputData(source, clone) {
-    // Browsers throw an error when assigning the value of a file input programmatically.
-    if (clone.type !== 'file') {
-        clone.value = source.value;
-    }
-    // Radio button `name` attributes must be unique for radio button groups
-    // otherwise original radio buttons can lose their checked state
-    // once the clone is inserted in the DOM.
-    if (clone.type === 'radio' && clone.name) {
-        clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;
-    }
-}
-/** Transfers the data of one canvas element to another. */
-function transferCanvasData(source, clone) {
-    const context = clone.getContext('2d');
-    if (context) {
-        // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).
-        // We can't do much about it so just ignore the error.
-        try {
-            context.drawImage(source, 0, 0);
-        }
-        catch (_a) { }
-    }
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Options that can be used to bind a passive event listener. */
-const passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });
-/** Options that can be used to bind an active event listener. */
-const activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });
-/**
- * Time in milliseconds for which to ignore mouse events, after
- * receiving a touch event. Used to avoid doing double work for
- * touch devices where the browser fires fake mouse events, in
- * addition to touch events.
- */
-const MOUSE_EVENT_IGNORE_TIME = 800;
-/** Inline styles to be set as `!important` while dragging. */
-const dragImportantProperties = new Set([
-    // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.
-    'position'
-]);
-/**
- * Reference to a draggable item. Used to manipulate or dispose of the item.
- */
-class DragRef {
-    constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {
-        this._config = _config;
-        this._document = _document;
-        this._ngZone = _ngZone;
-        this._viewportRuler = _viewportRuler;
-        this._dragDropRegistry = _dragDropRegistry;
-        /**
-         * CSS `transform` applied to the element when it isn't being dragged. We need a
-         * passive transform in order for the dragged element to retain its new position
-         * after the user has stopped dragging and because we need to know the relative
-         * position in case they start dragging again. This corresponds to `element.style.transform`.
-         */
-        this._passiveTransform = { x: 0, y: 0 };
-        /** CSS `transform` that is applied to the element while it's being dragged. */
-        this._activeTransform = { x: 0, y: 0 };
-        /**
-         * Whether the dragging sequence has been started. Doesn't
-         * necessarily mean that the element has been moved.
-         */
-        this._hasStartedDragging = false;
-        /** Emits when the item is being moved. */
-        this._moveEvents = new Subject();
-        /** Subscription to pointer movement events. */
-        this._pointerMoveSubscription = Subscription.EMPTY;
-        /** Subscription to the event that is dispatched when the user lifts their pointer. */
-        this._pointerUpSubscription = Subscription.EMPTY;
-        /** Subscription to the viewport being scrolled. */
-        this._scrollSubscription = Subscription.EMPTY;
-        /** Subscription to the viewport being resized. */
-        this._resizeSubscription = Subscription.EMPTY;
-        /** Cached reference to the boundary element. */
-        this._boundaryElement = null;
-        /** Whether the native dragging interactions have been enabled on the root element. */
-        this._nativeInteractionsEnabled = true;
-        /** Elements that can be used to drag the draggable item. */
-        this._handles = [];
-        /** Registered handles that are currently disabled. */
-        this._disabledHandles = new Set();
-        /** Layout direction of the item. */
-        this._direction = 'ltr';
-        /**
-         * Amount of milliseconds to wait after the user has put their
-         * pointer down before starting to drag the element.
-         */
-        this.dragStartDelay = 0;
-        this._disabled = false;
-        /** Emits as the drag sequence is being prepared. */
-        this.beforeStarted = new Subject();
-        /** Emits when the user starts dragging the item. */
-        this.started = new Subject();
-        /** Emits when the user has released a drag item, before any animations have started. */
-        this.released = new Subject();
-        /** Emits when the user stops dragging an item in the container. */
-        this.ended = new Subject();
-        /** Emits when the user has moved the item into a new container. */
-        this.entered = new Subject();
-        /** Emits when the user removes the item its container by dragging it into another container. */
-        this.exited = new Subject();
-        /** Emits when the user drops the item inside a container. */
-        this.dropped = new Subject();
-        /**
-         * Emits as the user is dragging the item. Use with caution,
-         * because this event will fire for every pixel that the user has dragged.
-         */
-        this.moved = this._moveEvents;
-        /** Handler for the `mousedown`/`touchstart` events. */
-        this._pointerDown = (event) => {
-            this.beforeStarted.next();
-            // Delegate the event based on whether it started from a handle or the element itself.
-            if (this._handles.length) {
-                const targetHandle = this._handles.find(handle => {
-                    const target = _getEventTarget(event);
-                    return !!target && (target === handle || handle.contains(target));
-                });
-                if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {
-                    this._initializeDragSequence(targetHandle, event);
-                }
-            }
-            else if (!this.disabled) {
-                this._initializeDragSequence(this._rootElement, event);
-            }
-        };
-        /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */
-        this._pointerMove = (event) => {
-            const pointerPosition = this._getPointerPositionOnPage(event);
-            if (!this._hasStartedDragging) {
-                const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);
-                const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);
-                const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;
-                // Only start dragging after the user has moved more than the minimum distance in either
-                // direction. Note that this is preferrable over doing something like `skip(minimumDistance)`
-                // in the `pointerMove` subscription, because we're not guaranteed to have one move event
-                // per pixel of movement (e.g. if the user moves their pointer quickly).
-                if (isOverThreshold) {
-                    const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);
-                    const container = this._dropContainer;
-                    if (!isDelayElapsed) {
-                        this._endDragSequence(event);
-                        return;
-                    }
-                    // Prevent other drag sequences from starting while something in the container is still
-                    // being dragged. This can happen while we're waiting for the drop animation to finish
-                    // and can cause errors, because some elements might still be moving around.
-                    if (!container || (!container.isDragging() && !container.isReceiving())) {
-                        // Prevent the default action as soon as the dragging sequence is considered as
-                        // "started" since waiting for the next event can allow the device to begin scrolling.
-                        event.preventDefault();
-                        this._hasStartedDragging = true;
-                        this._ngZone.run(() => this._startDragSequence(event));
-                    }
-                }
-                return;
-            }
-            // We only need the preview dimensions if we have a boundary element.
-            if (this._boundaryElement) {
-                // Cache the preview element rect if we haven't cached it already or if
-                // we cached it too early before the element dimensions were computed.
-                if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {
-                    this._previewRect = (this._preview || this._rootElement).getBoundingClientRect();
-                }
-            }
-            // We prevent the default action down here so that we know that dragging has started. This is
-            // important for touch devices where doing this too early can unnecessarily block scrolling,
-            // if there's a dragging delay.
-            event.preventDefault();
-            const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);
-            this._hasMoved = true;
-            this._lastKnownPointerPosition = pointerPosition;
-            this._updatePointerDirectionDelta(constrainedPointerPosition);
-            if (this._dropContainer) {
-                this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);
-            }
-            else {
-                const activeTransform = this._activeTransform;
-                activeTransform.x =
-                    constrainedPointerPosition.x - this._pickupPositionOnPage.x + this._passiveTransform.x;
-                activeTransform.y =
-                    constrainedPointerPosition.y - this._pickupPositionOnPage.y + this._passiveTransform.y;
-                this._applyRootElementTransform(activeTransform.x, activeTransform.y);
-                // Apply transform as attribute if dragging and svg element to work for IE
-                if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {
-                    const appliedTransform = `translate(${activeTransform.x} ${activeTransform.y})`;
-                    this._rootElement.setAttribute('transform', appliedTransform);
-                }
-            }
-            // Since this event gets fired for every pixel while dragging, we only
-            // want to fire it if the consumer opted into it. Also we have to
-            // re-enter the zone because we run all of the events on the outside.
-            if (this._moveEvents.observers.length) {
-                this._ngZone.run(() => {
-                    this._moveEvents.next({
-                        source: this,
-                        pointerPosition: constrainedPointerPosition,
-                        event,
-                        distance: this._getDragDistance(constrainedPointerPosition),
-                        delta: this._pointerDirectionDelta
-                    });
-                });
-            }
-        };
-        /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */
-        this._pointerUp = (event) => {
-            this._endDragSequence(event);
-        };
-        this.withRootElement(element).withParent(_config.parentDragRef || null);
-        this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);
-        _dragDropRegistry.registerDragItem(this);
-    }
-    /** Whether starting to drag this element is disabled. */
-    get disabled() {
-        return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);
-    }
-    set disabled(value) {
-        const newValue = coerceBooleanProperty(value);
-        if (newValue !== this._disabled) {
-            this._disabled = newValue;
-            this._toggleNativeDragInteractions();
-            this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));
-        }
-    }
-    /**
-     * Returns the element that is being used as a placeholder
-     * while the current element is being dragged.
-     */
-    getPlaceholderElement() {
-        return this._placeholder;
-    }
-    /** Returns the root draggable element. */
-    getRootElement() {
-        return this._rootElement;
-    }
-    /**
-     * Gets the currently-visible element that represents the drag item.
-     * While dragging this is the placeholder, otherwise it's the root element.
-     */
-    getVisibleElement() {
-        return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();
-    }
-    /** Registers the handles that can be used to drag the element. */
-    withHandles(handles) {
-        this._handles = handles.map(handle => coerceElement(handle));
-        this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));
-        this._toggleNativeDragInteractions();
-        // Delete any lingering disabled handles that may have been destroyed. Note that we re-create
-        // the set, rather than iterate over it and filter out the destroyed handles, because while
-        // the ES spec allows for sets to be modified while they're being iterated over, some polyfills
-        // use an array internally which may throw an error.
-        const disabledHandles = new Set();
-        this._disabledHandles.forEach(handle => {
-            if (this._handles.indexOf(handle) > -1) {
-                disabledHandles.add(handle);
-            }
-        });
-        this._disabledHandles = disabledHandles;
-        return this;
-    }
-    /**
-     * Registers the template that should be used for the drag preview.
-     * @param template Template that from which to stamp out the preview.
-     */
-    withPreviewTemplate(template) {
-        this._previewTemplate = template;
-        return this;
-    }
-    /**
-     * Registers the template that should be used for the drag placeholder.
-     * @param template Template that from which to stamp out the placeholder.
-     */
-    withPlaceholderTemplate(template) {
-        this._placeholderTemplate = template;
-        return this;
-    }
-    /**
-     * Sets an alternate drag root element. The root element is the element that will be moved as
-     * the user is dragging. Passing an alternate root element is useful when trying to enable
-     * dragging on an element that you might not have access to.
-     */
-    withRootElement(rootElement) {
-        const element = coerceElement(rootElement);
-        if (element !== this._rootElement) {
-            if (this._rootElement) {
-                this._removeRootElementListeners(this._rootElement);
-            }
-            this._ngZone.runOutsideAngular(() => {
-                element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);
-                element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);
-            });
-            this._initialTransform = undefined;
-            this._rootElement = element;
-        }
-        if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {
-            this._ownerSVGElement = this._rootElement.ownerSVGElement;
-        }
-        return this;
-    }
-    /**
-     * Element to which the draggable's position will be constrained.
-     */
-    withBoundaryElement(boundaryElement) {
-        this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;
-        this._resizeSubscription.unsubscribe();
-        if (boundaryElement) {
-            this._resizeSubscription = this._viewportRuler
-                .change(10)
-                .subscribe(() => this._containInsideBoundaryOnResize());
-        }
-        return this;
-    }
-    /** Sets the parent ref that the ref is nested in.  */
-    withParent(parent) {
-        this._parentDragRef = parent;
-        return this;
-    }
-    /** Removes the dragging functionality from the DOM element. */
-    dispose() {
-        this._removeRootElementListeners(this._rootElement);
-        // Do this check before removing from the registry since it'll
-        // stop being considered as dragged once it is removed.
-        if (this.isDragging()) {
-            // Since we move out the element to the end of the body while it's being
-            // dragged, we have to make sure that it's removed if it gets destroyed.
-            removeNode(this._rootElement);
-        }
-        removeNode(this._anchor);
-        this._destroyPreview();
-        this._destroyPlaceholder();
-        this._dragDropRegistry.removeDragItem(this);
-        this._removeSubscriptions();
-        this.beforeStarted.complete();
-        this.started.complete();
-        this.released.complete();
-        this.ended.complete();
-        this.entered.complete();
-        this.exited.complete();
-        this.dropped.complete();
-        this._moveEvents.complete();
-        this._handles = [];
-        this._disabledHandles.clear();
-        this._dropContainer = undefined;
-        this._resizeSubscription.unsubscribe();
-        this._parentPositions.clear();
-        this._boundaryElement = this._rootElement = this._ownerSVGElement = this._placeholderTemplate =
-            this._previewTemplate = this._anchor = this._parentDragRef = null;
-    }
-    /** Checks whether the element is currently being dragged. */
-    isDragging() {
-        return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);
-    }
-    /** Resets a standalone drag item to its initial position. */
-    reset() {
-        this._rootElement.style.transform = this._initialTransform || '';
-        this._activeTransform = { x: 0, y: 0 };
-        this._passiveTransform = { x: 0, y: 0 };
-    }
-    /**
-     * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.
-     * @param handle Handle element that should be disabled.
-     */
-    disableHandle(handle) {
-        if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {
-            this._disabledHandles.add(handle);
-            toggleNativeDragInteractions(handle, true);
-        }
-    }
-    /**
-     * Enables a handle, if it has been disabled.
-     * @param handle Handle element to be enabled.
-     */
-    enableHandle(handle) {
-        if (this._disabledHandles.has(handle)) {
-            this._disabledHandles.delete(handle);
-            toggleNativeDragInteractions(handle, this.disabled);
-        }
-    }
-    /** Sets the layout direction of the draggable item. */
-    withDirection(direction) {
-        this._direction = direction;
-        return this;
-    }
-    /** Sets the container that the item is part of. */
-    _withDropContainer(container) {
-        this._dropContainer = container;
-    }
-    /**
-     * Gets the current position in pixels the draggable outside of a drop container.
-     */
-    getFreeDragPosition() {
-        const position = this.isDragging() ? this._activeTransform : this._passiveTransform;
-        return { x: position.x, y: position.y };
-    }
-    /**
-     * Sets the current position in pixels the draggable outside of a drop container.
-     * @param value New position to be set.
-     */
-    setFreeDragPosition(value) {
-        this._activeTransform = { x: 0, y: 0 };
-        this._passiveTransform.x = value.x;
-        this._passiveTransform.y = value.y;
-        if (!this._dropContainer) {
-            this._applyRootElementTransform(value.x, value.y);
-        }
-        return this;
-    }
-    /**
-     * Sets the container into which to insert the preview element.
-     * @param value Container into which to insert the preview.
-     */
-    withPreviewContainer(value) {
-        this._previewContainer = value;
-        return this;
-    }
-    /** Updates the item's sort order based on the last-known pointer position. */
-    _sortFromLastPointerPosition() {
-        const position = this._lastKnownPointerPosition;
-        if (position && this._dropContainer) {
-            this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);
-        }
-    }
-    /** Unsubscribes from the global subscriptions. */
-    _removeSubscriptions() {
-        this._pointerMoveSubscription.unsubscribe();
-        this._pointerUpSubscription.unsubscribe();
-        this._scrollSubscription.unsubscribe();
-    }
-    /** Destroys the preview element and its ViewRef. */
-    _destroyPreview() {
-        if (this._preview) {
-            removeNode(this._preview);
-        }
-        if (this._previewRef) {
-            this._previewRef.destroy();
-        }
-        this._preview = this._previewRef = null;
-    }
-    /** Destroys the placeholder element and its ViewRef. */
-    _destroyPlaceholder() {
-        if (this._placeholder) {
-            removeNode(this._placeholder);
-        }
-        if (this._placeholderRef) {
-            this._placeholderRef.destroy();
-        }
-        this._placeholder = this._placeholderRef = null;
-    }
-    /**
-     * Clears subscriptions and stops the dragging sequence.
-     * @param event Browser event object that ended the sequence.
-     */
-    _endDragSequence(event) {
-        // Note that here we use `isDragging` from the service, rather than from `this`.
-        // The difference is that the one from the service reflects whether a dragging sequence
-        // has been initiated, whereas the one on `this` includes whether the user has passed
-        // the minimum dragging threshold.
-        if (!this._dragDropRegistry.isDragging(this)) {
-            return;
-        }
-        this._removeSubscriptions();
-        this._dragDropRegistry.stopDragging(this);
-        this._toggleNativeDragInteractions();
-        if (this._handles) {
-            this._rootElement.style.webkitTapHighlightColor = this._rootElementTapHighlight;
-        }
-        if (!this._hasStartedDragging) {
-            return;
-        }
-        this.released.next({ source: this });
-        if (this._dropContainer) {
-            // Stop scrolling immediately, instead of waiting for the animation to finish.
-            this._dropContainer._stopScrolling();
-            this._animatePreviewToPlaceholder().then(() => {
-                this._cleanupDragArtifacts(event);
-                this._cleanupCachedDimensions();
-                this._dragDropRegistry.stopDragging(this);
-            });
-        }
-        else {
-            // Convert the active transform into a passive one. This means that next time
-            // the user starts dragging the item, its position will be calculated relatively
-            // to the new passive transform.
-            this._passiveTransform.x = this._activeTransform.x;
-            const pointerPosition = this._getPointerPositionOnPage(event);
-            this._passiveTransform.y = this._activeTransform.y;
-            this._ngZone.run(() => {
-                this.ended.next({
-                    source: this,
-                    distance: this._getDragDistance(pointerPosition),
-                    dropPoint: pointerPosition
-                });
-            });
-            this._cleanupCachedDimensions();
-            this._dragDropRegistry.stopDragging(this);
-        }
-    }
-    /** Starts the dragging sequence. */
-    _startDragSequence(event) {
-        if (isTouchEvent(event)) {
-            this._lastTouchEventTime = Date.now();
-        }
-        this._toggleNativeDragInteractions();
-        const dropContainer = this._dropContainer;
-        if (dropContainer) {
-            const element = this._rootElement;
-            const parent = element.parentNode;
-            const placeholder = this._placeholder = this._createPlaceholderElement();
-            const anchor = this._anchor = this._anchor || this._document.createComment('');
-            // Needs to happen before the root element is moved.
-            const shadowRoot = this._getShadowRoot();
-            // Insert an anchor node so that we can restore the element's position in the DOM.
-            parent.insertBefore(anchor, element);
-            // There's no risk of transforms stacking when inside a drop container so
-            // we can keep the initial transform up to date any time dragging starts.
-            this._initialTransform = element.style.transform || '';
-            // Create the preview after the initial transform has
-            // been cached, because it can be affected by the transform.
-            this._preview = this._createPreviewElement();
-            // We move the element out at the end of the body and we make it hidden, because keeping it in
-            // place will throw off the consumer's `:last-child` selectors. We can't remove the element
-            // from the DOM completely, because iOS will stop firing all subsequent events in the chain.
-            toggleVisibility(element, false, dragImportantProperties);
-            this._document.body.appendChild(parent.replaceChild(placeholder, element));
-            this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);
-            this.started.next({ source: this }); // Emit before notifying the container.
-            dropContainer.start();
-            this._initialContainer = dropContainer;
-            this._initialIndex = dropContainer.getItemIndex(this);
-        }
-        else {
-            this.started.next({ source: this });
-            this._initialContainer = this._initialIndex = undefined;
-        }
-        // Important to run after we've called `start` on the parent container
-        // so that it has had time to resolve its scrollable parents.
-        this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);
-    }
-    /**
-     * Sets up the different variables and subscriptions
-     * that will be necessary for the dragging sequence.
-     * @param referenceElement Element that started the drag sequence.
-     * @param event Browser event object that started the sequence.
-     */
-    _initializeDragSequence(referenceElement, event) {
-        // Stop propagation if the item is inside another
-        // draggable so we don't start multiple drag sequences.
-        if (this._parentDragRef) {
-            event.stopPropagation();
-        }
-        const isDragging = this.isDragging();
-        const isTouchSequence = isTouchEvent(event);
-        const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;
-        const rootElement = this._rootElement;
-        const target = _getEventTarget(event);
-        const isSyntheticEvent = !isTouchSequence && this._lastTouchEventTime &&
-            this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();
-        const isFakeEvent = isTouchSequence ? isFakeTouchstartFromScreenReader(event) :
-            isFakeMousedownFromScreenReader(event);
-        // If the event started from an element with the native HTML drag&drop, it'll interfere
-        // with our own dragging (e.g. `img` tags do it by default). Prevent the default action
-        // to stop it from happening. Note that preventing on `dragstart` also seems to work, but
-        // it's flaky and it fails if the user drags it away quickly. Also note that we only want
-        // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`
-        // events from firing on touch devices.
-        if (target && target.draggable && event.type === 'mousedown') {
-            event.preventDefault();
-        }
-        // Abort if the user is already dragging or is using a mouse button other than the primary one.
-        if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {
-            return;
-        }
-        // If we've got handles, we need to disable the tap highlight on the entire root element,
-        // otherwise iOS will still add it, even though all the drag interactions on the handle
-        // are disabled.
-        if (this._handles.length) {
-            this._rootElementTapHighlight = rootElement.style.webkitTapHighlightColor || '';
-            rootElement.style.webkitTapHighlightColor = 'transparent';
-        }
-        this._hasStartedDragging = this._hasMoved = false;
-        // Avoid multiple subscriptions and memory leaks when multi touch
-        // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)
-        this._removeSubscriptions();
-        this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);
-        this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);
-        this._scrollSubscription = this._dragDropRegistry
-            .scrolled(this._getShadowRoot())
-            .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));
-        if (this._boundaryElement) {
-            this._boundaryRect = getMutableClientRect(this._boundaryElement);
-        }
-        // If we have a custom preview we can't know ahead of time how large it'll be so we position
-        // it next to the cursor. The exception is when the consumer has opted into making the preview
-        // the same size as the root element, in which case we do know the size.
-        const previewTemplate = this._previewTemplate;
-        this._pickupPositionInElement = previewTemplate && previewTemplate.template &&
-            !previewTemplate.matchSize ? { x: 0, y: 0 } :
-            this._getPointerPositionInElement(referenceElement, event);
-        const pointerPosition = this._pickupPositionOnPage = this._lastKnownPointerPosition =
-            this._getPointerPositionOnPage(event);
-        this._pointerDirectionDelta = { x: 0, y: 0 };
-        this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };
-        this._dragStartTime = Date.now();
-        this._dragDropRegistry.startDragging(this, event);
-    }
-    /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */
-    _cleanupDragArtifacts(event) {
-        // Restore the element's visibility and insert it at its old position in the DOM.
-        // It's important that we maintain the position, because moving the element around in the DOM
-        // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,
-        // while moving the existing elements in all other cases.
-        toggleVisibility(this._rootElement, true, dragImportantProperties);
-        this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);
-        this._destroyPreview();
-        this._destroyPlaceholder();
-        this._boundaryRect = this._previewRect = this._initialTransform = undefined;
-        // Re-enter the NgZone since we bound `document` events on the outside.
-        this._ngZone.run(() => {
-            const container = this._dropContainer;
-            const currentIndex = container.getItemIndex(this);
-            const pointerPosition = this._getPointerPositionOnPage(event);
-            const distance = this._getDragDistance(pointerPosition);
-            const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);
-            this.ended.next({ source: this, distance, dropPoint: pointerPosition });
-            this.dropped.next({
-                item: this,
-                currentIndex,
-                previousIndex: this._initialIndex,
-                container: container,
-                previousContainer: this._initialContainer,
-                isPointerOverContainer,
-                distance,
-                dropPoint: pointerPosition
-            });
-            container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition);
-            this._dropContainer = this._initialContainer;
-        });
-    }
-    /**
-     * Updates the item's position in its drop container, or moves it
-     * into a new one, depending on its current drag position.
-     */
-    _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {
-        // Drop container that draggable has been moved into.
-        let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);
-        // If we couldn't find a new container to move the item into, and the item has left its
-        // initial container, check whether the it's over the initial container. This handles the
-        // case where two containers are connected one way and the user tries to undo dragging an
-        // item into a new container.
-        if (!newContainer && this._dropContainer !== this._initialContainer &&
-            this._initialContainer._isOverContainer(x, y)) {
-            newContainer = this._initialContainer;
-        }
-        if (newContainer && newContainer !== this._dropContainer) {
-            this._ngZone.run(() => {
-                // Notify the old container that the item has left.
-                this.exited.next({ item: this, container: this._dropContainer });
-                this._dropContainer.exit(this);
-                // Notify the new container that the item has entered.
-                this._dropContainer = newContainer;
-                this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&
-                    // If we're re-entering the initial container and sorting is disabled,
-                    // put item the into its starting index to begin with.
-                    newContainer.sortingDisabled ? this._initialIndex : undefined);
-                this.entered.next({
-                    item: this,
-                    container: newContainer,
-                    currentIndex: newContainer.getItemIndex(this)
-                });
-            });
-        }
-        // Dragging may have been interrupted as a result of the events above.
-        if (this.isDragging()) {
-            this._dropContainer._startScrollingIfNecessary(rawX, rawY);
-            this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);
-            this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);
-        }
-    }
-    /**
-     * Creates the element that will be rendered next to the user's pointer
-     * and will be used as a preview of the element that is being dragged.
-     */
-    _createPreviewElement() {
-        const previewConfig = this._previewTemplate;
-        const previewClass = this.previewClass;
-        const previewTemplate = previewConfig ? previewConfig.template : null;
-        let preview;
-        if (previewTemplate && previewConfig) {
-            // Measure the element before we've inserted the preview
-            // since the insertion could throw off the measurement.
-            const rootRect = previewConfig.matchSize ? this._rootElement.getBoundingClientRect() : null;
-            const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);
-            viewRef.detectChanges();
-            preview = getRootNode(viewRef, this._document);
-            this._previewRef = viewRef;
-            if (previewConfig.matchSize) {
-                matchElementSize(preview, rootRect);
-            }
-            else {
-                preview.style.transform =
-                    getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);
-            }
-        }
-        else {
-            const element = this._rootElement;
-            preview = deepCloneNode(element);
-            matchElementSize(preview, element.getBoundingClientRect());
-            if (this._initialTransform) {
-                preview.style.transform = this._initialTransform;
-            }
-        }
-        extendStyles(preview.style, {
-            // It's important that we disable the pointer events on the preview, because
-            // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.
-            'pointer-events': 'none',
-            // We have to reset the margin, because it can throw off positioning relative to the viewport.
-            'margin': '0',
-            'position': 'fixed',
-            'top': '0',
-            'left': '0',
-            'z-index': `${this._config.zIndex || 1000}`
-        }, dragImportantProperties);
-        toggleNativeDragInteractions(preview, false);
-        preview.classList.add('cdk-drag-preview');
-        preview.setAttribute('dir', this._direction);
-        if (previewClass) {
-            if (Array.isArray(previewClass)) {
-                previewClass.forEach(className => preview.classList.add(className));
-            }
-            else {
-                preview.classList.add(previewClass);
-            }
-        }
-        return preview;
-    }
-    /**
-     * Animates the preview element from its current position to the location of the drop placeholder.
-     * @returns Promise that resolves when the animation completes.
-     */
-    _animatePreviewToPlaceholder() {
-        // If the user hasn't moved yet, the transitionend event won't fire.
-        if (!this._hasMoved) {
-            return Promise.resolve();
-        }
-        const placeholderRect = this._placeholder.getBoundingClientRect();
-        // Apply the class that adds a transition to the preview.
-        this._preview.classList.add('cdk-drag-animating');
-        // Move the preview to the placeholder position.
-        this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);
-        // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since
-        // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to
-        // apply its style, we take advantage of the available info to figure out whether we need to
-        // bind the event in the first place.
-        const duration = getTransformTransitionDurationInMs(this._preview);
-        if (duration === 0) {
-            return Promise.resolve();
-        }
-        return this._ngZone.runOutsideAngular(() => {
-            return new Promise(resolve => {
-                const handler = ((event) => {
-                    var _a;
-                    if (!event || (_getEventTarget(event) === this._preview &&
-                        event.propertyName === 'transform')) {
-                        (_a = this._preview) === null || _a === void 0 ? void 0 : _a.removeEventListener('transitionend', handler);
-                        resolve();
-                        clearTimeout(timeout);
-                    }
-                });
-                // If a transition is short enough, the browser might not fire the `transitionend` event.
-                // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll
-                // fire if the transition hasn't completed when it was supposed to.
-                const timeout = setTimeout(handler, duration * 1.5);
-                this._preview.addEventListener('transitionend', handler);
-            });
-        });
-    }
-    /** Creates an element that will be shown instead of the current element while dragging. */
-    _createPlaceholderElement() {
-        const placeholderConfig = this._placeholderTemplate;
-        const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;
-        let placeholder;
-        if (placeholderTemplate) {
-            this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);
-            this._placeholderRef.detectChanges();
-            placeholder = getRootNode(this._placeholderRef, this._document);
-        }
-        else {
-            placeholder = deepCloneNode(this._rootElement);
-        }
-        placeholder.classList.add('cdk-drag-placeholder');
-        return placeholder;
-    }
-    /**
-     * Figures out the coordinates at which an element was picked up.
-     * @param referenceElement Element that initiated the dragging.
-     * @param event Event that initiated the dragging.
-     */
-    _getPointerPositionInElement(referenceElement, event) {
-        const elementRect = this._rootElement.getBoundingClientRect();
-        const handleElement = referenceElement === this._rootElement ? null : referenceElement;
-        const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;
-        const point = isTouchEvent(event) ? event.targetTouches[0] : event;
-        const scrollPosition = this._getViewportScrollPosition();
-        const x = point.pageX - referenceRect.left - scrollPosition.left;
-        const y = point.pageY - referenceRect.top - scrollPosition.top;
-        return {
-            x: referenceRect.left - elementRect.left + x,
-            y: referenceRect.top - elementRect.top + y
-        };
-    }
-    /** Determines the point of the page that was touched by the user. */
-    _getPointerPositionOnPage(event) {
-        const scrollPosition = this._getViewportScrollPosition();
-        const point = isTouchEvent(event) ?
-            // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.
-            // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`
-            // to have a value, but Firefox in device emulation mode has a bug where both can be empty
-            // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid
-            // throwing an error. The value returned here will be incorrect, but since this only
-            // breaks inside a developer tool and the value is only used for secondary information,
-            // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.
-            (event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }) : event;
-        const x = point.pageX - scrollPosition.left;
-        const y = point.pageY - scrollPosition.top;
-        // if dragging SVG element, try to convert from the screen coordinate system to the SVG
-        // coordinate system
-        if (this._ownerSVGElement) {
-            const svgMatrix = this._ownerSVGElement.getScreenCTM();
-            if (svgMatrix) {
-                const svgPoint = this._ownerSVGElement.createSVGPoint();
-                svgPoint.x = x;
-                svgPoint.y = y;
-                return svgPoint.matrixTransform(svgMatrix.inverse());
-            }
-        }
-        return { x, y };
-    }
-    /** Gets the pointer position on the page, accounting for any position constraints. */
-    _getConstrainedPointerPosition(point) {
-        const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;
-        let { x, y } = this.constrainPosition ? this.constrainPosition(point, this) : point;
-        if (this.lockAxis === 'x' || dropContainerLock === 'x') {
-            y = this._pickupPositionOnPage.y;
-        }
-        else if (this.lockAxis === 'y' || dropContainerLock === 'y') {
-            x = this._pickupPositionOnPage.x;
-        }
-        if (this._boundaryRect) {
-            const { x: pickupX, y: pickupY } = this._pickupPositionInElement;
-            const boundaryRect = this._boundaryRect;
-            const previewRect = this._previewRect;
-            const minY = boundaryRect.top + pickupY;
-            const maxY = boundaryRect.bottom - (previewRect.height - pickupY);
-            const minX = boundaryRect.left + pickupX;
-            const maxX = boundaryRect.right - (previewRect.width - pickupX);
-            x = clamp$1(x, minX, maxX);
-            y = clamp$1(y, minY, maxY);
-        }
-        return { x, y };
-    }
-    /** Updates the current drag delta, based on the user's current pointer position on the page. */
-    _updatePointerDirectionDelta(pointerPositionOnPage) {
-        const { x, y } = pointerPositionOnPage;
-        const delta = this._pointerDirectionDelta;
-        const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;
-        // Amount of pixels the user has dragged since the last time the direction changed.
-        const changeX = Math.abs(x - positionSinceLastChange.x);
-        const changeY = Math.abs(y - positionSinceLastChange.y);
-        // Because we handle pointer events on a per-pixel basis, we don't want the delta
-        // to change for every pixel, otherwise anything that depends on it can look erratic.
-        // To make the delta more consistent, we track how much the user has moved since the last
-        // delta change and we only update it after it has reached a certain threshold.
-        if (changeX > this._config.pointerDirectionChangeThreshold) {
-            delta.x = x > positionSinceLastChange.x ? 1 : -1;
-            positionSinceLastChange.x = x;
-        }
-        if (changeY > this._config.pointerDirectionChangeThreshold) {
-            delta.y = y > positionSinceLastChange.y ? 1 : -1;
-            positionSinceLastChange.y = y;
-        }
-        return delta;
-    }
-    /** Toggles the native drag interactions, based on how many handles are registered. */
-    _toggleNativeDragInteractions() {
-        if (!this._rootElement || !this._handles) {
-            return;
-        }
-        const shouldEnable = this._handles.length > 0 || !this.isDragging();
-        if (shouldEnable !== this._nativeInteractionsEnabled) {
-            this._nativeInteractionsEnabled = shouldEnable;
-            toggleNativeDragInteractions(this._rootElement, shouldEnable);
-        }
-    }
-    /** Removes the manually-added event listeners from the root element. */
-    _removeRootElementListeners(element) {
-        element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);
-        element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);
-    }
-    /**
-     * Applies a `transform` to the root element, taking into account any existing transforms on it.
-     * @param x New transform value along the X axis.
-     * @param y New transform value along the Y axis.
-     */
-    _applyRootElementTransform(x, y) {
-        const transform = getTransform(x, y);
-        // Cache the previous transform amount only after the first drag sequence, because
-        // we don't want our own transforms to stack on top of each other.
-        // Should be excluded none because none + translate3d(x, y, x) is invalid css
-        if (this._initialTransform == null) {
-            this._initialTransform = this._rootElement.style.transform
-                && this._rootElement.style.transform != 'none'
-                ? this._rootElement.style.transform
-                : '';
-        }
-        // Preserve the previous `transform` value, if there was one. Note that we apply our own
-        // transform before the user's, because things like rotation can affect which direction
-        // the element will be translated towards.
-        this._rootElement.style.transform = combineTransforms(transform, this._initialTransform);
-    }
-    /**
-     * Applies a `transform` to the preview, taking into account any existing transforms on it.
-     * @param x New transform value along the X axis.
-     * @param y New transform value along the Y axis.
-     */
-    _applyPreviewTransform(x, y) {
-        var _a;
-        // Only apply the initial transform if the preview is a clone of the original element, otherwise
-        // it could be completely different and the transform might not make sense anymore.
-        const initialTransform = ((_a = this._previewTemplate) === null || _a === void 0 ? void 0 : _a.template) ? undefined : this._initialTransform;
-        const transform = getTransform(x, y);
-        this._preview.style.transform = combineTransforms(transform, initialTransform);
-    }
-    /**
-     * Gets the distance that the user has dragged during the current drag sequence.
-     * @param currentPosition Current position of the user's pointer.
-     */
-    _getDragDistance(currentPosition) {
-        const pickupPosition = this._pickupPositionOnPage;
-        if (pickupPosition) {
-            return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };
-        }
-        return { x: 0, y: 0 };
-    }
-    /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */
-    _cleanupCachedDimensions() {
-        this._boundaryRect = this._previewRect = undefined;
-        this._parentPositions.clear();
-    }
-    /**
-     * Checks whether the element is still inside its boundary after the viewport has been resized.
-     * If not, the position is adjusted so that the element fits again.
-     */
-    _containInsideBoundaryOnResize() {
-        let { x, y } = this._passiveTransform;
-        if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {
-            return;
-        }
-        const boundaryRect = this._boundaryElement.getBoundingClientRect();
-        const elementRect = this._rootElement.getBoundingClientRect();
-        // It's possible that the element got hidden away after dragging (e.g. by switching to a
-        // different tab). Don't do anything in this case so we don't clear the user's position.
-        if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||
-            (elementRect.width === 0 && elementRect.height === 0)) {
-            return;
-        }
-        const leftOverflow = boundaryRect.left - elementRect.left;
-        const rightOverflow = elementRect.right - boundaryRect.right;
-        const topOverflow = boundaryRect.top - elementRect.top;
-        const bottomOverflow = elementRect.bottom - boundaryRect.bottom;
-        // If the element has become wider than the boundary, we can't
-        // do much to make it fit so we just anchor it to the left.
-        if (boundaryRect.width > elementRect.width) {
-            if (leftOverflow > 0) {
-                x += leftOverflow;
-            }
-            if (rightOverflow > 0) {
-                x -= rightOverflow;
-            }
-        }
-        else {
-            x = 0;
-        }
-        // If the element has become taller than the boundary, we can't
-        // do much to make it fit so we just anchor it to the top.
-        if (boundaryRect.height > elementRect.height) {
-            if (topOverflow > 0) {
-                y += topOverflow;
-            }
-            if (bottomOverflow > 0) {
-                y -= bottomOverflow;
-            }
-        }
-        else {
-            y = 0;
-        }
-        if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {
-            this.setFreeDragPosition({ y, x });
-        }
-    }
-    /** Gets the drag start delay, based on the event type. */
-    _getDragStartDelay(event) {
-        const value = this.dragStartDelay;
-        if (typeof value === 'number') {
-            return value;
-        }
-        else if (isTouchEvent(event)) {
-            return value.touch;
-        }
-        return value ? value.mouse : 0;
-    }
-    /** Updates the internal state of the draggable element when scrolling has occurred. */
-    _updateOnScroll(event) {
-        const scrollDifference = this._parentPositions.handleScroll(event);
-        if (scrollDifference) {
-            const target = _getEventTarget(event);
-            // ClientRect dimensions are based on the scroll position of the page and its parent node so
-            // we have to update the cached boundary ClientRect if the user has scrolled. Check for
-            // the `document` specifically since IE doesn't support `contains` on it.
-            if (this._boundaryRect && (target === this._document ||
-                (target !== this._boundaryElement && target.contains(this._boundaryElement)))) {
-                adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);
-            }
-            this._pickupPositionOnPage.x += scrollDifference.left;
-            this._pickupPositionOnPage.y += scrollDifference.top;
-            // If we're in free drag mode, we have to update the active transform, because
-            // it isn't relative to the viewport like the preview inside a drop list.
-            if (!this._dropContainer) {
-                this._activeTransform.x -= scrollDifference.left;
-                this._activeTransform.y -= scrollDifference.top;
-                this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);
-            }
-        }
-    }
-    /** Gets the scroll position of the viewport. */
-    _getViewportScrollPosition() {
-        const cachedPosition = this._parentPositions.positions.get(this._document);
-        return cachedPosition ? cachedPosition.scrollPosition :
-            this._viewportRuler.getViewportScrollPosition();
-    }
-    /**
-     * Lazily resolves and returns the shadow root of the element. We do this in a function, rather
-     * than saving it in property directly on init, because we want to resolve it as late as possible
-     * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the
-     * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.
-     */
-    _getShadowRoot() {
-        if (this._cachedShadowRoot === undefined) {
-            this._cachedShadowRoot = _getShadowRoot(this._rootElement);
-        }
-        return this._cachedShadowRoot;
-    }
-    /** Gets the element into which the drag preview should be inserted. */
-    _getPreviewInsertionPoint(initialParent, shadowRoot) {
-        const previewContainer = this._previewContainer || 'global';
-        if (previewContainer === 'parent') {
-            return initialParent;
-        }
-        if (previewContainer === 'global') {
-            const documentRef = this._document;
-            // We can't use the body if the user is in fullscreen mode,
-            // because the preview will render under the fullscreen element.
-            // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.
-            return shadowRoot ||
-                documentRef.fullscreenElement ||
-                documentRef.webkitFullscreenElement ||
-                documentRef.mozFullScreenElement ||
-                documentRef.msFullscreenElement ||
-                documentRef.body;
-        }
-        return coerceElement(previewContainer);
-    }
-}
-/**
- * Gets a 3d `transform` that can be applied to an element.
- * @param x Desired position of the element along the X axis.
- * @param y Desired position of the element along the Y axis.
- */
-function getTransform(x, y) {
-    // Round the transforms since some browsers will
-    // blur the elements for sub-pixel transforms.
-    return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;
-}
-/** Clamps a value between a minimum and a maximum. */
-function clamp$1(value, min, max) {
-    return Math.max(min, Math.min(max, value));
-}
-/**
- * Helper to remove a node from the DOM and to do all the necessary null checks.
- * @param node Node to be removed.
- */
-function removeNode(node) {
-    if (node && node.parentNode) {
-        node.parentNode.removeChild(node);
-    }
-}
-/** Determines whether an event is a touch event. */
-function isTouchEvent(event) {
-    // This function is called for every pixel that the user has dragged so we need it to be
-    // as fast as possible. Since we only bind mouse events and touch events, we can assume
-    // that if the event's name starts with `t`, it's a touch event.
-    return event.type[0] === 't';
-}
-/**
- * Gets the root HTML element of an embedded view.
- * If the root is not an HTML element it gets wrapped in one.
- */
-function getRootNode(viewRef, _document) {
-    const rootNodes = viewRef.rootNodes;
-    if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {
-        return rootNodes[0];
-    }
-    const wrapper = _document.createElement('div');
-    rootNodes.forEach(node => wrapper.appendChild(node));
-    return wrapper;
-}
-/**
- * Matches the target element's size to the source's size.
- * @param target Element that needs to be resized.
- * @param sourceRect Dimensions of the source element.
- */
-function matchElementSize(target, sourceRect) {
-    target.style.width = `${sourceRect.width}px`;
-    target.style.height = `${sourceRect.height}px`;
-    target.style.transform = getTransform(sourceRect.left, sourceRect.top);
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Moves an item one index in an array to another.
- * @param array Array in which to move the item.
- * @param fromIndex Starting index of the item.
- * @param toIndex Index to which the item should be moved.
- */
-function moveItemInArray(array, fromIndex, toIndex) {
-    const from = clamp(fromIndex, array.length - 1);
-    const to = clamp(toIndex, array.length - 1);
-    if (from === to) {
-        return;
-    }
-    const target = array[from];
-    const delta = to < from ? -1 : 1;
-    for (let i = from; i !== to; i += delta) {
-        array[i] = array[i + delta];
-    }
-    array[to] = target;
-}
-/**
- * Moves an item from one array to another.
- * @param currentArray Array from which to transfer the item.
- * @param targetArray Array into which to put the item.
- * @param currentIndex Index of the item in its current array.
- * @param targetIndex Index at which to insert the item.
- */
-function transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {
-    const from = clamp(currentIndex, currentArray.length - 1);
-    const to = clamp(targetIndex, targetArray.length);
-    if (currentArray.length) {
-        targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);
-    }
-}
-/**
- * Copies an item from one array to another, leaving it in its
- * original position in current array.
- * @param currentArray Array from which to copy the item.
- * @param targetArray Array into which is copy the item.
- * @param currentIndex Index of the item in its current array.
- * @param targetIndex Index at which to insert the item.
- *
- */
-function copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {
-    const to = clamp(targetIndex, targetArray.length);
-    if (currentArray.length) {
-        targetArray.splice(to, 0, currentArray[currentIndex]);
-    }
-}
-/** Clamps a number between zero and a maximum. */
-function clamp(value, max) {
-    return Math.max(0, Math.min(max, value));
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Proximity, as a ratio to width/height, at which a
- * dragged item will affect the drop container.
- */
-const DROP_PROXIMITY_THRESHOLD = 0.05;
-/**
- * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the
- * viewport. The value comes from trying it out manually until it feels right.
- */
-const SCROLL_PROXIMITY_THRESHOLD = 0.05;
-/**
- * Reference to a drop list. Used to manipulate or dispose of the container.
- */
-class DropListRef {
-    constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {
-        this._dragDropRegistry = _dragDropRegistry;
-        this._ngZone = _ngZone;
-        this._viewportRuler = _viewportRuler;
-        /** Whether starting a dragging sequence from this container is disabled. */
-        this.disabled = false;
-        /** Whether sorting items within the list is disabled. */
-        this.sortingDisabled = false;
-        /**
-         * Whether auto-scrolling the view when the user
-         * moves their pointer close to the edges is disabled.
-         */
-        this.autoScrollDisabled = false;
-        /** Number of pixels to scroll for each frame when auto-scrolling an element. */
-        this.autoScrollStep = 2;
-        /**
-         * Function that is used to determine whether an item
-         * is allowed to be moved into a drop container.
-         */
-        this.enterPredicate = () => true;
-        /** Functions that is used to determine whether an item can be sorted into a particular index. */
-        this.sortPredicate = () => true;
-        /** Emits right before dragging has started. */
-        this.beforeStarted = new Subject();
-        /**
-         * Emits when the user has moved a new drag item into this container.
-         */
-        this.entered = new Subject();
-        /**
-         * Emits when the user removes an item from the container
-         * by dragging it into another container.
-         */
-        this.exited = new Subject();
-        /** Emits when the user drops an item inside the container. */
-        this.dropped = new Subject();
-        /** Emits as the user is swapping items while actively dragging. */
-        this.sorted = new Subject();
-        /** Whether an item in the list is being dragged. */
-        this._isDragging = false;
-        /** Cache of the dimensions of all the items inside the container. */
-        this._itemPositions = [];
-        /**
-         * Keeps track of the item that was last swapped with the dragged item, as well as what direction
-         * the pointer was moving in when the swap occured and whether the user's pointer continued to
-         * overlap with the swapped item after the swapping occurred.
-         */
-        this._previousSwap = { drag: null, delta: 0, overlaps: false };
-        /** Draggable items in the container. */
-        this._draggables = [];
-        /** Drop lists that are connected to the current one. */
-        this._siblings = [];
-        /** Direction in which the list is oriented. */
-        this._orientation = 'vertical';
-        /** Connected siblings that currently have a dragged item. */
-        this._activeSiblings = new Set();
-        /** Layout direction of the drop list. */
-        this._direction = 'ltr';
-        /** Subscription to the window being scrolled. */
-        this._viewportScrollSubscription = Subscription.EMPTY;
-        /** Vertical direction in which the list is currently scrolling. */
-        this._verticalScrollDirection = 0 /* NONE */;
-        /** Horizontal direction in which the list is currently scrolling. */
-        this._horizontalScrollDirection = 0 /* NONE */;
-        /** Used to signal to the current auto-scroll sequence when to stop. */
-        this._stopScrollTimers = new Subject();
-        /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */
-        this._cachedShadowRoot = null;
-        /** Starts the interval that'll auto-scroll the element. */
-        this._startScrollInterval = () => {
-            this._stopScrolling();
-            interval(0, animationFrameScheduler)
-                .pipe(takeUntil(this._stopScrollTimers))
-                .subscribe(() => {
-                const node = this._scrollNode;
-                const scrollStep = this.autoScrollStep;
-                if (this._verticalScrollDirection === 1 /* UP */) {
-                    incrementVerticalScroll(node, -scrollStep);
-                }
-                else if (this._verticalScrollDirection === 2 /* DOWN */) {
-                    incrementVerticalScroll(node, scrollStep);
-                }
-                if (this._horizontalScrollDirection === 1 /* LEFT */) {
-                    incrementHorizontalScroll(node, -scrollStep);
-                }
-                else if (this._horizontalScrollDirection === 2 /* RIGHT */) {
-                    incrementHorizontalScroll(node, scrollStep);
-                }
-            });
-        };
-        this.element = coerceElement(element);
-        this._document = _document;
-        this.withScrollableParents([this.element]);
-        _dragDropRegistry.registerDropContainer(this);
-        this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);
-    }
-    /** Removes the drop list functionality from the DOM element. */
-    dispose() {
-        this._stopScrolling();
-        this._stopScrollTimers.complete();
-        this._viewportScrollSubscription.unsubscribe();
-        this.beforeStarted.complete();
-        this.entered.complete();
-        this.exited.complete();
-        this.dropped.complete();
-        this.sorted.complete();
-        this._activeSiblings.clear();
-        this._scrollNode = null;
-        this._parentPositions.clear();
-        this._dragDropRegistry.removeDropContainer(this);
-    }
-    /** Whether an item from this list is currently being dragged. */
-    isDragging() {
-        return this._isDragging;
-    }
-    /** Starts dragging an item. */
-    start() {
-        this._draggingStarted();
-        this._notifyReceivingSiblings();
-    }
-    /**
-     * Emits an event to indicate that the user moved an item into the container.
-     * @param item Item that was moved into the container.
-     * @param pointerX Position of the item along the X axis.
-     * @param pointerY Position of the item along the Y axis.
-     * @param index Index at which the item entered. If omitted, the container will try to figure it
-     *   out automatically.
-     */
-    enter(item, pointerX, pointerY, index) {
-        this._draggingStarted();
-        // If sorting is disabled, we want the item to return to its starting
-        // position if the user is returning it to its initial container.
-        let newIndex;
-        if (index == null) {
-            newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;
-            if (newIndex === -1) {
-                // We use the coordinates of where the item entered the drop
-                // zone to figure out at which index it should be inserted.
-                newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);
-            }
-        }
-        else {
-            newIndex = index;
-        }
-        const activeDraggables = this._activeDraggables;
-        const currentIndex = activeDraggables.indexOf(item);
-        const placeholder = item.getPlaceholderElement();
-        let newPositionReference = activeDraggables[newIndex];
-        // If the item at the new position is the same as the item that is being dragged,
-        // it means that we're trying to restore the item to its initial position. In this
-        // case we should use the next item from the list as the reference.
-        if (newPositionReference === item) {
-            newPositionReference = activeDraggables[newIndex + 1];
-        }
-        // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it
-        // into another container and back again), we have to ensure that it isn't duplicated.
-        if (currentIndex > -1) {
-            activeDraggables.splice(currentIndex, 1);
-        }
-        // Don't use items that are being dragged as a reference, because
-        // their element has been moved down to the bottom of the body.
-        if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {
-            const element = newPositionReference.getRootElement();
-            element.parentElement.insertBefore(placeholder, element);
-            activeDraggables.splice(newIndex, 0, item);
-        }
-        else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) {
-            const reference = activeDraggables[0].getRootElement();
-            reference.parentNode.insertBefore(placeholder, reference);
-            activeDraggables.unshift(item);
-        }
-        else {
-            coerceElement(this.element).appendChild(placeholder);
-            activeDraggables.push(item);
-        }
-        // The transform needs to be cleared so it doesn't throw off the measurements.
-        placeholder.style.transform = '';
-        // Note that the positions were already cached when we called `start` above,
-        // but we need to refresh them since the amount of items has changed and also parent rects.
-        this._cacheItemPositions();
-        this._cacheParentPositions();
-        // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.
-        this._notifyReceivingSiblings();
-        this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });
-    }
-    /**
-     * Removes an item from the container after it was dragged into another container by the user.
-     * @param item Item that was dragged out.
-     */
-    exit(item) {
-        this._reset();
-        this.exited.next({ item, container: this });
-    }
-    /**
-     * Drops an item into this container.
-     * @param item Item being dropped into the container.
-     * @param currentIndex Index at which the item should be inserted.
-     * @param previousIndex Index of the item when dragging started.
-     * @param previousContainer Container from which the item got dragged in.
-     * @param isPointerOverContainer Whether the user's pointer was over the
-     *    container when the item was dropped.
-     * @param distance Distance the user has dragged since the start of the dragging sequence.
-     */
-    drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint) {
-        this._reset();
-        this.dropped.next({
-            item,
-            currentIndex,
-            previousIndex,
-            container: this,
-            previousContainer,
-            isPointerOverContainer,
-            distance,
-            dropPoint
-        });
-    }
-    /**
-     * Sets the draggable items that are a part of this list.
-     * @param items Items that are a part of this list.
-     */
-    withItems(items) {
-        const previousItems = this._draggables;
-        this._draggables = items;
-        items.forEach(item => item._withDropContainer(this));
-        if (this.isDragging()) {
-            const draggedItems = previousItems.filter(item => item.isDragging());
-            // If all of the items being dragged were removed
-            // from the list, abort the current drag sequence.
-            if (draggedItems.every(item => items.indexOf(item) === -1)) {
-                this._reset();
-            }
-            else {
-                this._cacheItems();
-            }
-        }
-        return this;
-    }
-    /** Sets the layout direction of the drop list. */
-    withDirection(direction) {
-        this._direction = direction;
-        return this;
-    }
-    /**
-     * Sets the containers that are connected to this one. When two or more containers are
-     * connected, the user will be allowed to transfer items between them.
-     * @param connectedTo Other containers that the current containers should be connected to.
-     */
-    connectedTo(connectedTo) {
-        this._siblings = connectedTo.slice();
-        return this;
-    }
-    /**
-     * Sets the orientation of the container.
-     * @param orientation New orientation for the container.
-     */
-    withOrientation(orientation) {
-        this._orientation = orientation;
-        return this;
-    }
-    /**
-     * Sets which parent elements are can be scrolled while the user is dragging.
-     * @param elements Elements that can be scrolled.
-     */
-    withScrollableParents(elements) {
-        const element = coerceElement(this.element);
-        // We always allow the current element to be scrollable
-        // so we need to ensure that it's in the array.
-        this._scrollableElements =
-            elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();
-        return this;
-    }
-    /** Gets the scrollable parents that are registered with this drop container. */
-    getScrollableParents() {
-        return this._scrollableElements;
-    }
-    /**
-     * Figures out the index of an item in the container.
-     * @param item Item whose index should be determined.
-     */
-    getItemIndex(item) {
-        if (!this._isDragging) {
-            return this._draggables.indexOf(item);
-        }
-        // Items are sorted always by top/left in the cache, however they flow differently in RTL.
-        // The rest of the logic still stands no matter what orientation we're in, however
-        // we need to invert the array when determining the index.
-        const items = this._orientation === 'horizontal' && this._direction === 'rtl' ?
-            this._itemPositions.slice().reverse() : this._itemPositions;
-        return findIndex(items, currentItem => currentItem.drag === item);
-    }
-    /**
-     * Whether the list is able to receive the item that
-     * is currently being dragged inside a connected drop list.
-     */
-    isReceiving() {
-        return this._activeSiblings.size > 0;
-    }
-    /**
-     * Sorts an item inside the container based on its position.
-     * @param item Item to be sorted.
-     * @param pointerX Position of the item along the X axis.
-     * @param pointerY Position of the item along the Y axis.
-     * @param pointerDelta Direction in which the pointer is moving along each axis.
-     */
-    _sortItem(item, pointerX, pointerY, pointerDelta) {
-        // Don't sort the item if sorting is disabled or it's out of range.
-        if (this.sortingDisabled || !this._clientRect ||
-            !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {
-            return;
-        }
-        const siblings = this._itemPositions;
-        const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);
-        if (newIndex === -1 && siblings.length > 0) {
-            return;
-        }
-        const isHorizontal = this._orientation === 'horizontal';
-        const currentIndex = findIndex(siblings, currentItem => currentItem.drag === item);
-        const siblingAtNewPosition = siblings[newIndex];
-        const currentPosition = siblings[currentIndex].clientRect;
-        const newPosition = siblingAtNewPosition.clientRect;
-        const delta = currentIndex > newIndex ? 1 : -1;
-        // How many pixels the item's placeholder should be offset.
-        const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);
-        // How many pixels all the other items should be offset.
-        const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);
-        // Save the previous order of the items before moving the item to its new index.
-        // We use this to check whether an item has been moved as a result of the sorting.
-        const oldOrder = siblings.slice();
-        // Shuffle the array in place.
-        moveItemInArray(siblings, currentIndex, newIndex);
-        this.sorted.next({
-            previousIndex: currentIndex,
-            currentIndex: newIndex,
-            container: this,
-            item
-        });
-        siblings.forEach((sibling, index) => {
-            // Don't do anything if the position hasn't changed.
-            if (oldOrder[index] === sibling) {
-                return;
-            }
-            const isDraggedItem = sibling.drag === item;
-            const offset = isDraggedItem ? itemOffset : siblingOffset;
-            const elementToOffset = isDraggedItem ? item.getPlaceholderElement() :
-                sibling.drag.getRootElement();
-            // Update the offset to reflect the new position.
-            sibling.offset += offset;
-            // Since we're moving the items with a `transform`, we need to adjust their cached
-            // client rects to reflect their new position, as well as swap their positions in the cache.
-            // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the
-            // elements may be mid-animation which will give us a wrong result.
-            if (isHorizontal) {
-                // Round the transforms since some browsers will
-                // blur the elements, for sub-pixel transforms.
-                elementToOffset.style.transform = combineTransforms(`translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);
-                adjustClientRect(sibling.clientRect, 0, offset);
-            }
-            else {
-                elementToOffset.style.transform = combineTransforms(`translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);
-                adjustClientRect(sibling.clientRect, offset, 0);
-            }
-        });
-        // Note that it's important that we do this after the client rects have been adjusted.
-        this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);
-        this._previousSwap.drag = siblingAtNewPosition.drag;
-        this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;
-    }
-    /**
-     * Checks whether the user's pointer is close to the edges of either the
-     * viewport or the drop list and starts the auto-scroll sequence.
-     * @param pointerX User's pointer position along the x axis.
-     * @param pointerY User's pointer position along the y axis.
-     */
-    _startScrollingIfNecessary(pointerX, pointerY) {
-        if (this.autoScrollDisabled) {
-            return;
-        }
-        let scrollNode;
-        let verticalScrollDirection = 0 /* NONE */;
-        let horizontalScrollDirection = 0 /* NONE */;
-        // Check whether we should start scrolling any of the parent containers.
-        this._parentPositions.positions.forEach((position, element) => {
-            // We have special handling for the `document` below. Also this would be
-            // nicer with a  for...of loop, but it requires changing a compiler flag.
-            if (element === this._document || !position.clientRect || scrollNode) {
-                return;
-            }
-            if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {
-                [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, pointerX, pointerY);
-                if (verticalScrollDirection || horizontalScrollDirection) {
-                    scrollNode = element;
-                }
-            }
-        });
-        // Otherwise check if we can start scrolling the viewport.
-        if (!verticalScrollDirection && !horizontalScrollDirection) {
-            const { width, height } = this._viewportRuler.getViewportSize();
-            const clientRect = { width, height, top: 0, right: width, bottom: height, left: 0 };
-            verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);
-            horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);
-            scrollNode = window;
-        }
-        if (scrollNode && (verticalScrollDirection !== this._verticalScrollDirection ||
-            horizontalScrollDirection !== this._horizontalScrollDirection ||
-            scrollNode !== this._scrollNode)) {
-            this._verticalScrollDirection = verticalScrollDirection;
-            this._horizontalScrollDirection = horizontalScrollDirection;
-            this._scrollNode = scrollNode;
-            if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {
-                this._ngZone.runOutsideAngular(this._startScrollInterval);
-            }
-            else {
-                this._stopScrolling();
-            }
-        }
-    }
-    /** Stops any currently-running auto-scroll sequences. */
-    _stopScrolling() {
-        this._stopScrollTimers.next();
-    }
-    /** Starts the dragging sequence within the list. */
-    _draggingStarted() {
-        const styles = coerceElement(this.element).style;
-        this.beforeStarted.next();
-        this._isDragging = true;
-        // We need to disable scroll snapping while the user is dragging, because it breaks automatic
-        // scrolling. The browser seems to round the value based on the snapping points which means
-        // that we can't increment/decrement the scroll position.
-        this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';
-        styles.scrollSnapType = styles.msScrollSnapType = 'none';
-        this._cacheItems();
-        this._viewportScrollSubscription.unsubscribe();
-        this._listenToScrollEvents();
-    }
-    /** Caches the positions of the configured scrollable parents. */
-    _cacheParentPositions() {
-        const element = coerceElement(this.element);
-        this._parentPositions.cache(this._scrollableElements);
-        // The list element is always in the `scrollableElements`
-        // so we can take advantage of the cached `ClientRect`.
-        this._clientRect = this._parentPositions.positions.get(element).clientRect;
-    }
-    /** Refreshes the position cache of the items and sibling containers. */
-    _cacheItemPositions() {
-        const isHorizontal = this._orientation === 'horizontal';
-        this._itemPositions = this._activeDraggables.map(drag => {
-            const elementToMeasure = drag.getVisibleElement();
-            return {
-                drag,
-                offset: 0,
-                initialTransform: elementToMeasure.style.transform || '',
-                clientRect: getMutableClientRect(elementToMeasure),
-            };
-        }).sort((a, b) => {
-            return isHorizontal ? a.clientRect.left - b.clientRect.left :
-                a.clientRect.top - b.clientRect.top;
-        });
-    }
-    /** Resets the container to its initial state. */
-    _reset() {
-        this._isDragging = false;
-        const styles = coerceElement(this.element).style;
-        styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;
-        // TODO(crisbeto): may have to wait for the animations to finish.
-        this._activeDraggables.forEach(item => {
-            var _a;
-            const rootElement = item.getRootElement();
-            if (rootElement) {
-                const initialTransform = (_a = this._itemPositions
-                    .find(current => current.drag === item)) === null || _a === void 0 ? void 0 : _a.initialTransform;
-                rootElement.style.transform = initialTransform || '';
-            }
-        });
-        this._siblings.forEach(sibling => sibling._stopReceiving(this));
-        this._activeDraggables = [];
-        this._itemPositions = [];
-        this._previousSwap.drag = null;
-        this._previousSwap.delta = 0;
-        this._previousSwap.overlaps = false;
-        this._stopScrolling();
-        this._viewportScrollSubscription.unsubscribe();
-        this._parentPositions.clear();
-    }
-    /**
-     * Gets the offset in pixels by which the items that aren't being dragged should be moved.
-     * @param currentIndex Index of the item currently being dragged.
-     * @param siblings All of the items in the list.
-     * @param delta Direction in which the user is moving.
-     */
-    _getSiblingOffsetPx(currentIndex, siblings, delta) {
-        const isHorizontal = this._orientation === 'horizontal';
-        const currentPosition = siblings[currentIndex].clientRect;
-        const immediateSibling = siblings[currentIndex + delta * -1];
-        let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;
-        if (immediateSibling) {
-            const start = isHorizontal ? 'left' : 'top';
-            const end = isHorizontal ? 'right' : 'bottom';
-            // Get the spacing between the start of the current item and the end of the one immediately
-            // after it in the direction in which the user is dragging, or vice versa. We add it to the
-            // offset in order to push the element to where it will be when it's inline and is influenced
-            // by the `margin` of its siblings.
-            if (delta === -1) {
-                siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];
-            }
-            else {
-                siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];
-            }
-        }
-        return siblingOffset;
-    }
-    /**
-     * Gets the offset in pixels by which the item that is being dragged should be moved.
-     * @param currentPosition Current position of the item.
-     * @param newPosition Position of the item where the current item should be moved.
-     * @param delta Direction in which the user is moving.
-     */
-    _getItemOffsetPx(currentPosition, newPosition, delta) {
-        const isHorizontal = this._orientation === 'horizontal';
-        let itemOffset = isHorizontal ? newPosition.left - currentPosition.left :
-            newPosition.top - currentPosition.top;
-        // Account for differences in the item width/height.
-        if (delta === -1) {
-            itemOffset += isHorizontal ? newPosition.width - currentPosition.width :
-                newPosition.height - currentPosition.height;
-        }
-        return itemOffset;
-    }
-    /**
-     * Checks if pointer is entering in the first position
-     * @param pointerX Position of the user's pointer along the X axis.
-     * @param pointerY Position of the user's pointer along the Y axis.
-     */
-    _shouldEnterAsFirstChild(pointerX, pointerY) {
-        if (!this._activeDraggables.length) {
-            return false;
-        }
-        const itemPositions = this._itemPositions;
-        const isHorizontal = this._orientation === 'horizontal';
-        // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index
-        // check if container is using some sort of "reverse" ordering (eg: flex-direction: row-reverse)
-        const reversed = itemPositions[0].drag !== this._activeDraggables[0];
-        if (reversed) {
-            const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;
-            return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;
-        }
-        else {
-            const firstItemRect = itemPositions[0].clientRect;
-            return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;
-        }
-    }
-    /**
-     * Gets the index of an item in the drop container, based on the position of the user's pointer.
-     * @param item Item that is being sorted.
-     * @param pointerX Position of the user's pointer along the X axis.
-     * @param pointerY Position of the user's pointer along the Y axis.
-     * @param delta Direction in which the user is moving their pointer.
-     */
-    _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {
-        const isHorizontal = this._orientation === 'horizontal';
-        const index = findIndex(this._itemPositions, ({ drag, clientRect }, _, array) => {
-            if (drag === item) {
-                // If there's only one item left in the container, it must be
-                // the dragged item itself so we use it as a reference.
-                return array.length < 2;
-            }
-            if (delta) {
-                const direction = isHorizontal ? delta.x : delta.y;
-                // If the user is still hovering over the same item as last time, their cursor hasn't left
-                // the item after we made the swap, and they didn't change the direction in which they're
-                // dragging, we don't consider it a direction swap.
-                if (drag === this._previousSwap.drag && this._previousSwap.overlaps &&
-                    direction === this._previousSwap.delta) {
-                    return false;
-                }
-            }
-            return isHorizontal ?
-                // Round these down since most browsers report client rects with
-                // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.
-                pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right) :
-                pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);
-        });
-        return (index === -1 || !this.sortPredicate(index, item, this)) ? -1 : index;
-    }
-    /** Caches the current items in the list and their positions. */
-    _cacheItems() {
-        this._activeDraggables = this._draggables.slice();
-        this._cacheItemPositions();
-        this._cacheParentPositions();
-    }
-    /**
-     * Checks whether the user's pointer is positioned over the container.
-     * @param x Pointer position along the X axis.
-     * @param y Pointer position along the Y axis.
-     */
-    _isOverContainer(x, y) {
-        return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);
-    }
-    /**
-     * Figures out whether an item should be moved into a sibling
-     * drop container, based on its current position.
-     * @param item Drag item that is being moved.
-     * @param x Position of the item along the X axis.
-     * @param y Position of the item along the Y axis.
-     */
-    _getSiblingContainerFromPosition(item, x, y) {
-        return this._siblings.find(sibling => sibling._canReceive(item, x, y));
-    }
-    /**
-     * Checks whether the drop list can receive the passed-in item.
-     * @param item Item that is being dragged into the list.
-     * @param x Position of the item along the X axis.
-     * @param y Position of the item along the Y axis.
-     */
-    _canReceive(item, x, y) {
-        if (!this._clientRect || !isInsideClientRect(this._clientRect, x, y) ||
-            !this.enterPredicate(item, this)) {
-            return false;
-        }
-        const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);
-        // If there's no element at the pointer position, then
-        // the client rect is probably scrolled out of the view.
-        if (!elementFromPoint) {
-            return false;
-        }
-        const nativeElement = coerceElement(this.element);
-        // The `ClientRect`, that we're using to find the container over which the user is
-        // hovering, doesn't give us any information on whether the element has been scrolled
-        // out of the view or whether it's overlapping with other containers. This means that
-        // we could end up transferring the item into a container that's invisible or is positioned
-        // below another one. We use the result from `elementFromPoint` to get the top-most element
-        // at the pointer position and to find whether it's one of the intersecting drop containers.
-        return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);
-    }
-    /**
-     * Called by one of the connected drop lists when a dragging sequence has started.
-     * @param sibling Sibling in which dragging has started.
-     */
-    _startReceiving(sibling, items) {
-        const activeSiblings = this._activeSiblings;
-        if (!activeSiblings.has(sibling) && items.every(item => {
-            // Note that we have to add an exception to the `enterPredicate` for items that started off
-            // in this drop list. The drag ref has logic that allows an item to return to its initial
-            // container, if it has left the initial container and none of the connected containers
-            // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.
-            return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;
-        })) {
-            activeSiblings.add(sibling);
-            this._cacheParentPositions();
-            this._listenToScrollEvents();
-        }
-    }
-    /**
-     * Called by a connected drop list when dragging has stopped.
-     * @param sibling Sibling whose dragging has stopped.
-     */
-    _stopReceiving(sibling) {
-        this._activeSiblings.delete(sibling);
-        this._viewportScrollSubscription.unsubscribe();
-    }
-    /**
-     * Starts listening to scroll events on the viewport.
-     * Used for updating the internal state of the list.
-     */
-    _listenToScrollEvents() {
-        this._viewportScrollSubscription = this._dragDropRegistry
-            .scrolled(this._getShadowRoot())
-            .subscribe(event => {
-            if (this.isDragging()) {
-                const scrollDifference = this._parentPositions.handleScroll(event);
-                if (scrollDifference) {
-                    // Since we know the amount that the user has scrolled we can shift all of the
-                    // client rectangles ourselves. This is cheaper than re-measuring everything and
-                    // we can avoid inconsistent behavior where we might be measuring the element before
-                    // its position has changed.
-                    this._itemPositions.forEach(({ clientRect }) => {
-                        adjustClientRect(clientRect, scrollDifference.top, scrollDifference.left);
-                    });
-                    // We need two loops for this, because we want all of the cached
-                    // positions to be up-to-date before we re-sort the item.
-                    this._itemPositions.forEach(({ drag }) => {
-                        if (this._dragDropRegistry.isDragging(drag)) {
-                            // We need to re-sort the item manually, because the pointer move
-                            // events won't be dispatched while the user is scrolling.
-                            drag._sortFromLastPointerPosition();
-                        }
-                    });
-                }
-            }
-            else if (this.isReceiving()) {
-                this._cacheParentPositions();
-            }
-        });
-    }
-    /**
-     * Lazily resolves and returns the shadow root of the element. We do this in a function, rather
-     * than saving it in property directly on init, because we want to resolve it as late as possible
-     * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the
-     * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.
-     */
-    _getShadowRoot() {
-        if (!this._cachedShadowRoot) {
-            const shadowRoot = _getShadowRoot(coerceElement(this.element));
-            this._cachedShadowRoot = shadowRoot || this._document;
-        }
-        return this._cachedShadowRoot;
-    }
-    /** Notifies any siblings that may potentially receive the item. */
-    _notifyReceivingSiblings() {
-        const draggedItems = this._activeDraggables.filter(item => item.isDragging());
-        this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));
-    }
-}
-/**
- * Finds the index of an item that matches a predicate function. Used as an equivalent
- * of `Array.prototype.findIndex` which isn't part of the standard Google typings.
- * @param array Array in which to look for matches.
- * @param predicate Function used to determine whether an item is a match.
- */
-function findIndex(array, predicate) {
-    for (let i = 0; i < array.length; i++) {
-        if (predicate(array[i], i, array)) {
-            return i;
-        }
-    }
-    return -1;
-}
-/**
- * Increments the vertical scroll position of a node.
- * @param node Node whose scroll position should change.
- * @param amount Amount of pixels that the `node` should be scrolled.
- */
-function incrementVerticalScroll(node, amount) {
-    if (node === window) {
-        node.scrollBy(0, amount);
-    }
-    else {
-        // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.
-        node.scrollTop += amount;
-    }
-}
-/**
- * Increments the horizontal scroll position of a node.
- * @param node Node whose scroll position should change.
- * @param amount Amount of pixels that the `node` should be scrolled.
- */
-function incrementHorizontalScroll(node, amount) {
-    if (node === window) {
-        node.scrollBy(amount, 0);
-    }
-    else {
-        // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.
-        node.scrollLeft += amount;
-    }
-}
-/**
- * Gets whether the vertical auto-scroll direction of a node.
- * @param clientRect Dimensions of the node.
- * @param pointerY Position of the user's pointer along the y axis.
- */
-function getVerticalScrollDirection(clientRect, pointerY) {
-    const { top, bottom, height } = clientRect;
-    const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;
-    if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {
-        return 1 /* UP */;
-    }
-    else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {
-        return 2 /* DOWN */;
-    }
-    return 0 /* NONE */;
-}
-/**
- * Gets whether the horizontal auto-scroll direction of a node.
- * @param clientRect Dimensions of the node.
- * @param pointerX Position of the user's pointer along the x axis.
- */
-function getHorizontalScrollDirection(clientRect, pointerX) {
-    const { left, right, width } = clientRect;
-    const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;
-    if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {
-        return 1 /* LEFT */;
-    }
-    else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {
-        return 2 /* RIGHT */;
-    }
-    return 0 /* NONE */;
-}
-/**
- * Gets the directions in which an element node should be scrolled,
- * assuming that the user's pointer is already within it scrollable region.
- * @param element Element for which we should calculate the scroll direction.
- * @param clientRect Bounding client rectangle of the element.
- * @param pointerX Position of the user's pointer along the x axis.
- * @param pointerY Position of the user's pointer along the y axis.
- */
-function getElementScrollDirections(element, clientRect, pointerX, pointerY) {
-    const computedVertical = getVerticalScrollDirection(clientRect, pointerY);
-    const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);
-    let verticalScrollDirection = 0 /* NONE */;
-    let horizontalScrollDirection = 0 /* NONE */;
-    // Note that we here we do some extra checks for whether the element is actually scrollable in
-    // a certain direction and we only assign the scroll direction if it is. We do this so that we
-    // can allow other elements to be scrolled, if the current element can't be scrolled anymore.
-    // This allows us to handle cases where the scroll regions of two scrollable elements overlap.
-    if (computedVertical) {
-        const scrollTop = element.scrollTop;
-        if (computedVertical === 1 /* UP */) {
-            if (scrollTop > 0) {
-                verticalScrollDirection = 1 /* UP */;
-            }
-        }
-        else if (element.scrollHeight - scrollTop > element.clientHeight) {
-            verticalScrollDirection = 2 /* DOWN */;
-        }
-    }
-    if (computedHorizontal) {
-        const scrollLeft = element.scrollLeft;
-        if (computedHorizontal === 1 /* LEFT */) {
-            if (scrollLeft > 0) {
-                horizontalScrollDirection = 1 /* LEFT */;
-            }
-        }
-        else if (element.scrollWidth - scrollLeft > element.clientWidth) {
-            horizontalScrollDirection = 2 /* RIGHT */;
-        }
-    }
-    return [verticalScrollDirection, horizontalScrollDirection];
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Event options that can be used to bind an active, capturing event. */
-const activeCapturingEventOptions = normalizePassiveListenerOptions({
-    passive: false,
-    capture: true
-});
-/**
- * Service that keeps track of all the drag item and drop container
- * instances, and manages global event listeners on the `document`.
- * @docs-private
- */
-// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order
-// to avoid circular imports. If we were to reference them here, importing the registry into the
-// classes that are registering themselves will introduce a circular import.
-class DragDropRegistry {
-    constructor(_ngZone, _document) {
-        this._ngZone = _ngZone;
-        /** Registered drop container instances. */
-        this._dropInstances = new Set();
-        /** Registered drag item instances. */
-        this._dragInstances = new Set();
-        /** Drag item instances that are currently being dragged. */
-        this._activeDragInstances = [];
-        /** Keeps track of the event listeners that we've bound to the `document`. */
-        this._globalListeners = new Map();
-        /**
-         * Predicate function to check if an item is being dragged.  Moved out into a property,
-         * because it'll be called a lot and we don't want to create a new function every time.
-         */
-        this._draggingPredicate = (item) => item.isDragging();
-        /**
-         * Emits the `touchmove` or `mousemove` events that are dispatched
-         * while the user is dragging a drag item instance.
-         */
-        this.pointerMove = new Subject();
-        /**
-         * Emits the `touchend` or `mouseup` events that are dispatched
-         * while the user is dragging a drag item instance.
-         */
-        this.pointerUp = new Subject();
-        /**
-         * Emits when the viewport has been scrolled while the user is dragging an item.
-         * @deprecated To be turned into a private member. Use the `scrolled` method instead.
-         * @breaking-change 13.0.0
-         */
-        this.scroll = new Subject();
-        /**
-         * Event listener that will prevent the default browser action while the user is dragging.
-         * @param event Event whose default action should be prevented.
-         */
-        this._preventDefaultWhileDragging = (event) => {
-            if (this._activeDragInstances.length > 0) {
-                event.preventDefault();
-            }
-        };
-        /** Event listener for `touchmove` that is bound even if no dragging is happening. */
-        this._persistentTouchmoveListener = (event) => {
-            if (this._activeDragInstances.length > 0) {
-                // Note that we only want to prevent the default action after dragging has actually started.
-                // Usually this is the same time at which the item is added to the `_activeDragInstances`,
-                // but it could be pushed back if the user has set up a drag delay or threshold.
-                if (this._activeDragInstances.some(this._draggingPredicate)) {
-                    event.preventDefault();
-                }
-                this.pointerMove.next(event);
-            }
-        };
-        this._document = _document;
-    }
-    /** Adds a drop container to the registry. */
-    registerDropContainer(drop) {
-        if (!this._dropInstances.has(drop)) {
-            this._dropInstances.add(drop);
-        }
-    }
-    /** Adds a drag item instance to the registry. */
-    registerDragItem(drag) {
-        this._dragInstances.add(drag);
-        // The `touchmove` event gets bound once, ahead of time, because WebKit
-        // won't preventDefault on a dynamically-added `touchmove` listener.
-        // See https://bugs.webkit.org/show_bug.cgi?id=184250.
-        if (this._dragInstances.size === 1) {
-            this._ngZone.runOutsideAngular(() => {
-                // The event handler has to be explicitly active,
-                // because newer browsers make it passive by default.
-                this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);
-            });
-        }
-    }
-    /** Removes a drop container from the registry. */
-    removeDropContainer(drop) {
-        this._dropInstances.delete(drop);
-    }
-    /** Removes a drag item instance from the registry. */
-    removeDragItem(drag) {
-        this._dragInstances.delete(drag);
-        this.stopDragging(drag);
-        if (this._dragInstances.size === 0) {
-            this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);
-        }
-    }
-    /**
-     * Starts the dragging sequence for a drag instance.
-     * @param drag Drag instance which is being dragged.
-     * @param event Event that initiated the dragging.
-     */
-    startDragging(drag, event) {
-        // Do not process the same drag twice to avoid memory leaks and redundant listeners
-        if (this._activeDragInstances.indexOf(drag) > -1) {
-            return;
-        }
-        this._activeDragInstances.push(drag);
-        if (this._activeDragInstances.length === 1) {
-            const isTouchEvent = event.type.startsWith('touch');
-            // We explicitly bind __active__ listeners here, because newer browsers will default to
-            // passive ones for `mousemove` and `touchmove`. The events need to be active, because we
-            // use `preventDefault` to prevent the page from scrolling while the user is dragging.
-            this._globalListeners
-                .set(isTouchEvent ? 'touchend' : 'mouseup', {
-                handler: (e) => this.pointerUp.next(e),
-                options: true
-            })
-                .set('scroll', {
-                handler: (e) => this.scroll.next(e),
-                // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't
-                // the document. See https://github.com/angular/components/issues/17144.
-                options: true
-            })
-                // Preventing the default action on `mousemove` isn't enough to disable text selection
-                // on Safari so we need to prevent the selection event as well. Alternatively this can
-                // be done by setting `user-select: none` on the `body`, however it has causes a style
-                // recalculation which can be expensive on pages with a lot of elements.
-                .set('selectstart', {
-                handler: this._preventDefaultWhileDragging,
-                options: activeCapturingEventOptions
-            });
-            // We don't have to bind a move event for touch drag sequences, because
-            // we already have a persistent global one bound from `registerDragItem`.
-            if (!isTouchEvent) {
-                this._globalListeners.set('mousemove', {
-                    handler: (e) => this.pointerMove.next(e),
-                    options: activeCapturingEventOptions
-                });
-            }
-            this._ngZone.runOutsideAngular(() => {
-                this._globalListeners.forEach((config, name) => {
-                    this._document.addEventListener(name, config.handler, config.options);
-                });
-            });
-        }
-    }
-    /** Stops dragging a drag item instance. */
-    stopDragging(drag) {
-        const index = this._activeDragInstances.indexOf(drag);
-        if (index > -1) {
-            this._activeDragInstances.splice(index, 1);
-            if (this._activeDragInstances.length === 0) {
-                this._clearGlobalListeners();
-            }
-        }
-    }
-    /** Gets whether a drag item instance is currently being dragged. */
-    isDragging(drag) {
-        return this._activeDragInstances.indexOf(drag) > -1;
-    }
-    /**
-     * Gets a stream that will emit when any element on the page is scrolled while an item is being
-     * dragged.
-     * @param shadowRoot Optional shadow root that the current dragging sequence started from.
-     *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can
-     *   be used to include an additional top-level listener at the shadow root level.
-     */
-    scrolled(shadowRoot) {
-        const streams = [this.scroll];
-        if (shadowRoot && shadowRoot !== this._document) {
-            // Note that this is basically the same as `fromEvent` from rjxs, but we do it ourselves,
-            // because we want to guarantee that the event is bound outside of the `NgZone`. With
-            // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.
-            streams.push(new Observable((observer) => {
-                return this._ngZone.runOutsideAngular(() => {
-                    const eventOptions = true;
-                    const callback = (event) => {
-                        if (this._activeDragInstances.length) {
-                            observer.next(event);
-                        }
-                    };
-                    shadowRoot.addEventListener('scroll', callback, eventOptions);
-                    return () => {
-                        shadowRoot.removeEventListener('scroll', callback, eventOptions);
-                    };
-                });
-            }));
-        }
-        return merge(...streams);
-    }
-    ngOnDestroy() {
-        this._dragInstances.forEach(instance => this.removeDragItem(instance));
-        this._dropInstances.forEach(instance => this.removeDropContainer(instance));
-        this._clearGlobalListeners();
-        this.pointerMove.complete();
-        this.pointerUp.complete();
-    }
-    /** Clears out the global event listeners from the `document`. */
-    _clearGlobalListeners() {
-        this._globalListeners.forEach((config, name) => {
-            this._document.removeEventListener(name, config.handler, config.options);
-        });
-        this._globalListeners.clear();
-    }
-}
-DragDropRegistry.ɵfac = function DragDropRegistry_Factory(t) { return new (t || DragDropRegistry)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT)); };
-DragDropRegistry.ɵprov = i0.ɵɵdefineInjectable({ factory: function DragDropRegistry_Factory() { return new DragDropRegistry(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.DOCUMENT)); }, token: DragDropRegistry, providedIn: "root" });
-DragDropRegistry.ctorParameters = () => [
-    { type: NgZone },
-    { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
-];
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDropRegistry, [{
-        type: Injectable,
-        args: [{ providedIn: 'root' }]
-    }], function () { return [{ type: ɵngcc0.NgZone }, { type: undefined, decorators: [{
-                type: Inject,
-                args: [DOCUMENT]
-            }] }]; }, null); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Default configuration to be used when creating a `DragRef`. */
-const DEFAULT_CONFIG = {
-    dragStartThreshold: 5,
-    pointerDirectionChangeThreshold: 5
-};
-/**
- * Service that allows for drag-and-drop functionality to be attached to DOM elements.
- */
-class DragDrop {
-    constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {
-        this._document = _document;
-        this._ngZone = _ngZone;
-        this._viewportRuler = _viewportRuler;
-        this._dragDropRegistry = _dragDropRegistry;
-    }
-    /**
-     * Turns an element into a draggable item.
-     * @param element Element to which to attach the dragging functionality.
-     * @param config Object used to configure the dragging behavior.
-     */
-    createDrag(element, config = DEFAULT_CONFIG) {
-        return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);
-    }
-    /**
-     * Turns an element into a drop list.
-     * @param element Element to which to attach the drop list functionality.
-     */
-    createDropList(element) {
-        return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);
-    }
-}
-DragDrop.ɵfac = function DragDrop_Factory(t) { return new (t || DragDrop)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵinject(DragDropRegistry)); };
-DragDrop.ɵprov = i0.ɵɵdefineInjectable({ factory: function DragDrop_Factory() { return new DragDrop(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.ViewportRuler), i0.ɵɵinject(DragDropRegistry)); }, token: DragDrop, providedIn: "root" });
-DragDrop.ctorParameters = () => [
-    { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
-    { type: NgZone },
-    { type: ViewportRuler },
-    { type: DragDropRegistry }
-];
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDrop, [{
-        type: Injectable,
-        args: [{ providedIn: 'root' }]
-    }], function () { return [{ type: undefined, decorators: [{
-                type: Inject,
-                args: [DOCUMENT]
-            }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.ViewportRuler }, { type: DragDropRegistry }]; }, null); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the
- * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily
- * to avoid circular imports.
- * @docs-private
- */
-const CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as
- * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-const CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');
-/**
- * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`
- * elements that are placed inside a `cdkDropListGroup` will be connected to each other
- * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input
- * from `cdkDropList`.
- */
-class CdkDropListGroup {
-    constructor() {
-        /** Drop lists registered inside the group. */
-        this._items = new Set();
-        this._disabled = false;
-    }
-    /** Whether starting a dragging sequence from inside this group is disabled. */
-    get disabled() { return this._disabled; }
-    set disabled(value) {
-        this._disabled = coerceBooleanProperty(value);
-    }
-    ngOnDestroy() {
-        this._items.clear();
-    }
-}
-CdkDropListGroup.ɵfac = function CdkDropListGroup_Factory(t) { return new (t || CdkDropListGroup)(); };
-CdkDropListGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDropListGroup, selectors: [["", "cdkDropListGroup", ""]], inputs: { disabled: ["cdkDropListGroupDisabled", "disabled"] }, exportAs: ["cdkDropListGroup"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }])] });
-CdkDropListGroup.propDecorators = {
-    disabled: [{ type: Input, args: ['cdkDropListGroupDisabled',] }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDropListGroup, [{
-        type: Directive,
-        args: [{
-                selector: '[cdkDropListGroup]',
-                exportAs: 'cdkDropListGroup',
-                providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }]
-            }]
-    }], function () { return []; }, { disabled: [{
-            type: Input,
-            args: ['cdkDropListGroupDisabled']
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used to configure the
- * behavior of the drag&drop-related components.
- */
-const CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Asserts that a particular node is an element.
- * @param node Node to be checked.
- * @param name Name to attach to the error message.
- */
-function assertElementNode(node, name) {
-    if (node.nodeType !== 1) {
-        throw Error(`${name} must be attached to an element node. ` +
-            `Currently attached to "${node.nodeName}".`);
-    }
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/** Counter used to generate unique ids for drop zones. */
-let _uniqueIdCounter = 0;
-/**
- * Injection token that can be used to reference instances of `CdkDropList`. It serves as
- * alternative token to the actual `CdkDropList` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-const CDK_DROP_LIST = new InjectionToken('CdkDropList');
-const ɵ0 = undefined;
-/** Container that wraps a set of draggable items. */
-class CdkDropList {
-    constructor(
-    /** Element that the drop list is attached to. */
-    element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {
-        this.element = element;
-        this._changeDetectorRef = _changeDetectorRef;
-        this._scrollDispatcher = _scrollDispatcher;
-        this._dir = _dir;
-        this._group = _group;
-        /** Emits when the list has been destroyed. */
-        this._destroyed = new Subject();
-        /**
-         * Other draggable containers that this container is connected to and into which the
-         * container's items can be transferred. Can either be references to other drop containers,
-         * or their unique IDs.
-         */
-        this.connectedTo = [];
-        /**
-         * Unique ID for the drop zone. Can be used as a reference
-         * in the `connectedTo` of another `CdkDropList`.
-         */
-        this.id = `cdk-drop-list-${_uniqueIdCounter++}`;
-        /**
-         * Function that is used to determine whether an item
-         * is allowed to be moved into a drop container.
-         */
-        this.enterPredicate = () => true;
-        /** Functions that is used to determine whether an item can be sorted into a particular index. */
-        this.sortPredicate = () => true;
-        /** Emits when the user drops an item inside the container. */
-        this.dropped = new EventEmitter();
-        /**
-         * Emits when the user has moved a new drag item into this container.
-         */
-        this.entered = new EventEmitter();
-        /**
-         * Emits when the user removes an item from the container
-         * by dragging it into another container.
-         */
-        this.exited = new EventEmitter();
-        /** Emits as the user is swapping items while actively dragging. */
-        this.sorted = new EventEmitter();
-        /**
-         * Keeps track of the items that are registered with this container. Historically we used to
-         * do this with a `ContentChildren` query, however queries don't handle transplanted views very
-         * well which means that we can't handle cases like dragging the headers of a `mat-table`
-         * correctly. What we do instead is to have the items register themselves with the container
-         * and then we sort them based on their position in the DOM.
-         */
-        this._unsortedItems = new Set();
-        if (typeof ngDevMode === 'undefined' || ngDevMode) {
-            assertElementNode(element.nativeElement, 'cdkDropList');
-        }
-        this._dropListRef = dragDrop.createDropList(element);
-        this._dropListRef.data = this;
-        if (config) {
-            this._assignDefaults(config);
-        }
-        this._dropListRef.enterPredicate = (drag, drop) => {
-            return this.enterPredicate(drag.data, drop.data);
-        };
-        this._dropListRef.sortPredicate =
-            (index, drag, drop) => {
-                return this.sortPredicate(index, drag.data, drop.data);
-            };
-        this._setupInputSyncSubscription(this._dropListRef);
-        this._handleEvents(this._dropListRef);
-        CdkDropList._dropLists.push(this);
-        if (_group) {
-            _group._items.add(this);
-        }
-    }
-    /** Whether starting a dragging sequence from this container is disabled. */
-    get disabled() {
-        return this._disabled || (!!this._group && this._group.disabled);
-    }
-    set disabled(value) {
-        // Usually we sync the directive and ref state right before dragging starts, in order to have
-        // a single point of failure and to avoid having to use setters for everything. `disabled` is
-        // a special case, because it can prevent the `beforeStarted` event from firing, which can lock
-        // the user in a disabled state, so we also need to sync it as it's being set.
-        this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);
-    }
-    /** Registers an items with the drop list. */
-    addItem(item) {
-        this._unsortedItems.add(item);
-        if (this._dropListRef.isDragging()) {
-            this._syncItemsWithRef();
-        }
-    }
-    /** Removes an item from the drop list. */
-    removeItem(item) {
-        this._unsortedItems.delete(item);
-        if (this._dropListRef.isDragging()) {
-            this._syncItemsWithRef();
-        }
-    }
-    /** Gets the registered items in the list, sorted by their position in the DOM. */
-    getSortedItems() {
-        return Array.from(this._unsortedItems).sort((a, b) => {
-            const documentPosition = a._dragRef.getVisibleElement().compareDocumentPosition(b._dragRef.getVisibleElement());
-            // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.
-            // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition
-            // tslint:disable-next-line:no-bitwise
-            return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
-        });
-    }
-    ngOnDestroy() {
-        const index = CdkDropList._dropLists.indexOf(this);
-        if (index > -1) {
-            CdkDropList._dropLists.splice(index, 1);
-        }
-        if (this._group) {
-            this._group._items.delete(this);
-        }
-        this._unsortedItems.clear();
-        this._dropListRef.dispose();
-        this._destroyed.next();
-        this._destroyed.complete();
-    }
-    /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */
-    _setupInputSyncSubscription(ref) {
-        if (this._dir) {
-            this._dir.change
-                .pipe(startWith(this._dir.value), takeUntil(this._destroyed))
-                .subscribe(value => ref.withDirection(value));
-        }
-        ref.beforeStarted.subscribe(() => {
-            const siblings = coerceArray(this.connectedTo).map(drop => {
-                if (typeof drop === 'string') {
-                    const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);
-                    if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {
-                        console.warn(`CdkDropList could not find connected drop list with id "${drop}"`);
-                    }
-                    return correspondingDropList;
-                }
-                return drop;
-            });
-            if (this._group) {
-                this._group._items.forEach(drop => {
-                    if (siblings.indexOf(drop) === -1) {
-                        siblings.push(drop);
-                    }
-                });
-            }
-            // Note that we resolve the scrollable parents here so that we delay the resolution
-            // as long as possible, ensuring that the element is in its final place in the DOM.
-            if (!this._scrollableParentsResolved) {
-                const scrollableParents = this._scrollDispatcher
-                    .getAncestorScrollContainers(this.element)
-                    .map(scrollable => scrollable.getElementRef().nativeElement);
-                this._dropListRef.withScrollableParents(scrollableParents);
-                // Only do this once since it involves traversing the DOM and the parents
-                // shouldn't be able to change without the drop list being destroyed.
-                this._scrollableParentsResolved = true;
-            }
-            ref.disabled = this.disabled;
-            ref.lockAxis = this.lockAxis;
-            ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);
-            ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);
-            ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);
-            ref
-                .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))
-                .withOrientation(this.orientation);
-        });
-    }
-    /** Handles events from the underlying DropListRef. */
-    _handleEvents(ref) {
-        ref.beforeStarted.subscribe(() => {
-            this._syncItemsWithRef();
-            this._changeDetectorRef.markForCheck();
-        });
-        ref.entered.subscribe(event => {
-            this.entered.emit({
-                container: this,
-                item: event.item.data,
-                currentIndex: event.currentIndex
-            });
-        });
-        ref.exited.subscribe(event => {
-            this.exited.emit({
-                container: this,
-                item: event.item.data
-            });
-            this._changeDetectorRef.markForCheck();
-        });
-        ref.sorted.subscribe(event => {
-            this.sorted.emit({
-                previousIndex: event.previousIndex,
-                currentIndex: event.currentIndex,
-                container: this,
-                item: event.item.data
-            });
-        });
-        ref.dropped.subscribe(event => {
-            this.dropped.emit({
-                previousIndex: event.previousIndex,
-                currentIndex: event.currentIndex,
-                previousContainer: event.previousContainer.data,
-                container: event.container.data,
-                item: event.item.data,
-                isPointerOverContainer: event.isPointerOverContainer,
-                distance: event.distance,
-                dropPoint: event.dropPoint
-            });
-            // Mark for check since all of these events run outside of change
-            // detection and we're not guaranteed for something else to have triggered it.
-            this._changeDetectorRef.markForCheck();
-        });
-    }
-    /** Assigns the default input values based on a provided config object. */
-    _assignDefaults(config) {
-        const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;
-        this.disabled = draggingDisabled == null ? false : draggingDisabled;
-        this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;
-        this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;
-        this.orientation = listOrientation || 'vertical';
-        if (lockAxis) {
-            this.lockAxis = lockAxis;
-        }
-    }
-    /** Syncs up the registered drag items with underlying drop list ref. */
-    _syncItemsWithRef() {
-        this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));
-    }
-}
-CdkDropList.ɵfac = function CdkDropList_Factory(t) { return new (t || CdkDropList)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DragDrop), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(CDK_DROP_LIST_GROUP, 12), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_CONFIG, 8)); };
-CdkDropList.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDropList, selectors: [["", "cdkDropList", ""], ["cdk-drop-list"]], hostAttrs: [1, "cdk-drop-list"], hostVars: 7, hostBindings: function CdkDropList_HostBindings(rf, ctx) { if (rf & 2) {
-        ɵngcc0.ɵɵattribute("id", ctx.id);
-        ɵngcc0.ɵɵclassProp("cdk-drop-list-disabled", ctx.disabled)("cdk-drop-list-dragging", ctx._dropListRef.isDragging())("cdk-drop-list-receiving", ctx._dropListRef.isReceiving());
-    } }, inputs: { connectedTo: ["cdkDropListConnectedTo", "connectedTo"], id: "id", enterPredicate: ["cdkDropListEnterPredicate", "enterPredicate"], sortPredicate: ["cdkDropListSortPredicate", "sortPredicate"], disabled: ["cdkDropListDisabled", "disabled"], sortingDisabled: ["cdkDropListSortingDisabled", "sortingDisabled"], autoScrollDisabled: ["cdkDropListAutoScrollDisabled", "autoScrollDisabled"], orientation: ["cdkDropListOrientation", "orientation"], lockAxis: ["cdkDropListLockAxis", "lockAxis"], data: ["cdkDropListData", "data"], autoScrollStep: ["cdkDropListAutoScrollStep", "autoScrollStep"] }, outputs: { dropped: "cdkDropListDropped", entered: "cdkDropListEntered", exited: "cdkDropListExited", sorted: "cdkDropListSorted" }, exportAs: ["cdkDropList"], features: [ɵngcc0.ɵɵProvidersFeature([
-            // Prevent child drop lists from picking up the same group as their parent.
-            { provide: CDK_DROP_LIST_GROUP, useValue: ɵ0 },
-            { provide: CDK_DROP_LIST, useExisting: CdkDropList },
-        ])] });
-/** Keeps track of the drop lists that are currently on the page. */
-CdkDropList._dropLists = [];
-CdkDropList.ctorParameters = () => [
-    { type: ElementRef },
-    { type: DragDrop },
-    { type: ChangeDetectorRef },
-    { type: ScrollDispatcher },
-    { type: Directionality, decorators: [{ type: Optional }] },
-    { type: CdkDropListGroup, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DROP_LIST_GROUP,] }, { type: SkipSelf }] },
-    { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DRAG_CONFIG,] }] }
-];
-CdkDropList.propDecorators = {
-    connectedTo: [{ type: Input, args: ['cdkDropListConnectedTo',] }],
-    data: [{ type: Input, args: ['cdkDropListData',] }],
-    orientation: [{ type: Input, args: ['cdkDropListOrientation',] }],
-    id: [{ type: Input }],
-    lockAxis: [{ type: Input, args: ['cdkDropListLockAxis',] }],
-    disabled: [{ type: Input, args: ['cdkDropListDisabled',] }],
-    sortingDisabled: [{ type: Input, args: ['cdkDropListSortingDisabled',] }],
-    enterPredicate: [{ type: Input, args: ['cdkDropListEnterPredicate',] }],
-    sortPredicate: [{ type: Input, args: ['cdkDropListSortPredicate',] }],
-    autoScrollDisabled: [{ type: Input, args: ['cdkDropListAutoScrollDisabled',] }],
-    autoScrollStep: [{ type: Input, args: ['cdkDropListAutoScrollStep',] }],
-    dropped: [{ type: Output, args: ['cdkDropListDropped',] }],
-    entered: [{ type: Output, args: ['cdkDropListEntered',] }],
-    exited: [{ type: Output, args: ['cdkDropListExited',] }],
-    sorted: [{ type: Output, args: ['cdkDropListSorted',] }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDropList, [{
-        type: Directive,
-        args: [{
-                selector: '[cdkDropList], cdk-drop-list',
-                exportAs: 'cdkDropList',
-                providers: [
-                    // Prevent child drop lists from picking up the same group as their parent.
-                    { provide: CDK_DROP_LIST_GROUP, useValue: ɵ0 },
-                    { provide: CDK_DROP_LIST, useExisting: CdkDropList },
-                ],
-                host: {
-                    'class': 'cdk-drop-list',
-                    '[attr.id]': 'id',
-                    '[class.cdk-drop-list-disabled]': 'disabled',
-                    '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',
-                    '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()'
-                }
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DragDrop }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.ScrollDispatcher }, { type: ɵngcc2.Directionality, decorators: [{
-                type: Optional
-            }] }, { type: CdkDropListGroup, decorators: [{
-                type: Optional
-            }, {
-                type: Inject,
-                args: [CDK_DROP_LIST_GROUP]
-            }, {
-                type: SkipSelf
-            }] }, { type: undefined, decorators: [{
-                type: Optional
-            }, {
-                type: Inject,
-                args: [CDK_DRAG_CONFIG]
-            }] }]; }, { connectedTo: [{
-            type: Input,
-            args: ['cdkDropListConnectedTo']
-        }], id: [{
-            type: Input
-        }], enterPredicate: [{
-            type: Input,
-            args: ['cdkDropListEnterPredicate']
-        }], sortPredicate: [{
-            type: Input,
-            args: ['cdkDropListSortPredicate']
-        }], dropped: [{
-            type: Output,
-            args: ['cdkDropListDropped']
-        }], entered: [{
-            type: Output,
-            args: ['cdkDropListEntered']
-        }], exited: [{
-            type: Output,
-            args: ['cdkDropListExited']
-        }], sorted: [{
-            type: Output,
-            args: ['cdkDropListSorted']
-        }], disabled: [{
-            type: Input,
-            args: ['cdkDropListDisabled']
-        }], sortingDisabled: [{
-            type: Input,
-            args: ['cdkDropListSortingDisabled']
-        }], autoScrollDisabled: [{
-            type: Input,
-            args: ['cdkDropListAutoScrollDisabled']
-        }], orientation: [{
-            type: Input,
-            args: ['cdkDropListOrientation']
-        }], lockAxis: [{
-            type: Input,
-            args: ['cdkDropListLockAxis']
-        }], data: [{
-            type: Input,
-            args: ['cdkDropListData']
-        }], autoScrollStep: [{
-            type: Input,
-            args: ['cdkDropListAutoScrollStep']
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as
- * alternative token to the actual `CdkDragHandle` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-const CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');
-/** Handle that can be used to drag a CdkDrag instance. */
-class CdkDragHandle {
-    constructor(element, parentDrag) {
-        this.element = element;
-        /** Emits when the state of the handle has changed. */
-        this._stateChanges = new Subject();
-        this._disabled = false;
-        if (typeof ngDevMode === 'undefined' || ngDevMode) {
-            assertElementNode(element.nativeElement, 'cdkDragHandle');
-        }
-        this._parentDrag = parentDrag;
-    }
-    /** Whether starting to drag through this handle is disabled. */
-    get disabled() { return this._disabled; }
-    set disabled(value) {
-        this._disabled = coerceBooleanProperty(value);
-        this._stateChanges.next(this);
-    }
-    ngOnDestroy() {
-        this._stateChanges.complete();
-    }
-}
-CdkDragHandle.ɵfac = function CdkDragHandle_Factory(t) { return new (t || CdkDragHandle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_PARENT, 12)); };
-CdkDragHandle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragHandle, selectors: [["", "cdkDragHandle", ""]], hostAttrs: [1, "cdk-drag-handle"], inputs: { disabled: ["cdkDragHandleDisabled", "disabled"] }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }])] });
-CdkDragHandle.ctorParameters = () => [
-    { type: ElementRef },
-    { type: undefined, decorators: [{ type: Inject, args: [CDK_DRAG_PARENT,] }, { type: Optional }, { type: SkipSelf }] }
-];
-CdkDragHandle.propDecorators = {
-    disabled: [{ type: Input, args: ['cdkDragHandleDisabled',] }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragHandle, [{
-        type: Directive,
-        args: [{
-                selector: '[cdkDragHandle]',
-                host: {
-                    'class': 'cdk-drag-handle'
-                },
-                providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }]
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{
-                type: Inject,
-                args: [CDK_DRAG_PARENT]
-            }, {
-                type: Optional
-            }, {
-                type: SkipSelf
-            }] }]; }, { disabled: [{
-            type: Input,
-            args: ['cdkDragHandleDisabled']
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as
- * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-const CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');
-/**
- * Element that will be used as a template for the placeholder of a CdkDrag when
- * it is being dragged. The placeholder is displayed in place of the element being dragged.
- */
-class CdkDragPlaceholder {
-    constructor(templateRef) {
-        this.templateRef = templateRef;
-    }
-}
-CdkDragPlaceholder.ɵfac = function CdkDragPlaceholder_Factory(t) { return new (t || CdkDragPlaceholder)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
-CdkDragPlaceholder.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragPlaceholder, selectors: [["ng-template", "cdkDragPlaceholder", ""]], inputs: { data: "data" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }])] });
-CdkDragPlaceholder.ctorParameters = () => [
-    { type: TemplateRef }
-];
-CdkDragPlaceholder.propDecorators = {
-    data: [{ type: Input }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragPlaceholder, [{
-        type: Directive,
-        args: [{
-                selector: 'ng-template[cdkDragPlaceholder]',
-                providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }]
-            }]
-    }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { data: [{
-            type: Input
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-/**
- * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as
- * alternative token to the actual `CdkDragPreview` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-const CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');
-/**
- * Element that will be used as a template for the preview
- * of a CdkDrag when it is being dragged.
- */
-class CdkDragPreview {
-    constructor(templateRef) {
-        this.templateRef = templateRef;
-        this._matchSize = false;
-    }
-    /** Whether the preview should preserve the same size as the item that is being dragged. */
-    get matchSize() { return this._matchSize; }
-    set matchSize(value) { this._matchSize = coerceBooleanProperty(value); }
-}
-CdkDragPreview.ɵfac = function CdkDragPreview_Factory(t) { return new (t || CdkDragPreview)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };
-CdkDragPreview.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragPreview, selectors: [["ng-template", "cdkDragPreview", ""]], inputs: { matchSize: "matchSize", data: "data" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }])] });
-CdkDragPreview.ctorParameters = () => [
-    { type: TemplateRef }
-];
-CdkDragPreview.propDecorators = {
-    data: [{ type: Input }],
-    matchSize: [{ type: Input }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragPreview, [{
-        type: Directive,
-        args: [{
-                selector: 'ng-template[cdkDragPreview]',
-                providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }]
-            }]
-    }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { matchSize: [{
-            type: Input
-        }], data: [{
-            type: Input
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-const DRAG_HOST_CLASS = 'cdk-drag';
-/** Element that can be moved inside a CdkDropList container. */
-class CdkDrag {
-    constructor(
-    /** Element that the draggable is attached to. */
-    element, 
-    /** Droppable container that the draggable is a part of. */
-    dropContainer, 
-    /**
-     * @deprecated `_document` parameter no longer being used and will be removed.
-     * @breaking-change 12.0.0
-     */
-    _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {
-        this.element = element;
-        this.dropContainer = dropContainer;
-        this._ngZone = _ngZone;
-        this._viewContainerRef = _viewContainerRef;
-        this._dir = _dir;
-        this._changeDetectorRef = _changeDetectorRef;
-        this._selfHandle = _selfHandle;
-        this._parentDrag = _parentDrag;
-        this._destroyed = new Subject();
-        /** Emits when the user starts dragging the item. */
-        this.started = new EventEmitter();
-        /** Emits when the user has released a drag item, before any animations have started. */
-        this.released = new EventEmitter();
-        /** Emits when the user stops dragging an item in the container. */
-        this.ended = new EventEmitter();
-        /** Emits when the user has moved the item into a new container. */
-        this.entered = new EventEmitter();
-        /** Emits when the user removes the item its container by dragging it into another container. */
-        this.exited = new EventEmitter();
-        /** Emits when the user drops the item inside a container. */
-        this.dropped = new EventEmitter();
-        /**
-         * Emits as the user is dragging the item. Use with caution,
-         * because this event will fire for every pixel that the user has dragged.
-         */
-        this.moved = new Observable((observer) => {
-            const subscription = this._dragRef.moved.pipe(map(movedEvent => ({
-                source: this,
-                pointerPosition: movedEvent.pointerPosition,
-                event: movedEvent.event,
-                delta: movedEvent.delta,
-                distance: movedEvent.distance
-            }))).subscribe(observer);
-            return () => {
-                subscription.unsubscribe();
-            };
-        });
-        this._dragRef = dragDrop.createDrag(element, {
-            dragStartThreshold: config && config.dragStartThreshold != null ?
-                config.dragStartThreshold : 5,
-            pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null ?
-                config.pointerDirectionChangeThreshold : 5,
-            zIndex: config === null || config === void 0 ? void 0 : config.zIndex,
-        });
-        this._dragRef.data = this;
-        // We have to keep track of the drag instances in order to be able to match an element to
-        // a drag instance. We can't go through the global registry of `DragRef`, because the root
-        // element could be different.
-        CdkDrag._dragInstances.push(this);
-        if (config) {
-            this._assignDefaults(config);
-        }
-        // Note that usually the container is assigned when the drop list is picks up the item, but in
-        // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation
-        // where there are no items on the first change detection pass, but the items get picked up as
-        // soon as the user triggers another pass by dragging. This is a problem, because the item would
-        // have to switch from standalone mode to drag mode in the middle of the dragging sequence which
-        // is too late since the two modes save different kinds of information. We work around it by
-        // assigning the drop container both from here and the list.
-        if (dropContainer) {
-            this._dragRef._withDropContainer(dropContainer._dropListRef);
-            dropContainer.addItem(this);
-        }
-        this._syncInputs(this._dragRef);
-        this._handleEvents(this._dragRef);
-    }
-    /** Whether starting to drag this element is disabled. */
-    get disabled() {
-        return this._disabled || (this.dropContainer && this.dropContainer.disabled);
-    }
-    set disabled(value) {
-        this._disabled = coerceBooleanProperty(value);
-        this._dragRef.disabled = this._disabled;
-    }
-    /**
-     * Returns the element that is being used as a placeholder
-     * while the current element is being dragged.
-     */
-    getPlaceholderElement() {
-        return this._dragRef.getPlaceholderElement();
-    }
-    /** Returns the root draggable element. */
-    getRootElement() {
-        return this._dragRef.getRootElement();
-    }
-    /** Resets a standalone drag item to its initial position. */
-    reset() {
-        this._dragRef.reset();
-    }
-    /**
-     * Gets the pixel coordinates of the draggable outside of a drop container.
-     */
-    getFreeDragPosition() {
-        return this._dragRef.getFreeDragPosition();
-    }
-    ngAfterViewInit() {
-        // Normally this isn't in the zone, but it can cause major performance regressions for apps
-        // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
-        this._ngZone.runOutsideAngular(() => {
-            // We need to wait for the zone to stabilize, in order for the reference
-            // element to be in the proper place in the DOM. This is mostly relevant
-            // for draggable elements inside portals since they get stamped out in
-            // their original DOM position and then they get transferred to the portal.
-            this._ngZone.onStable
-                .pipe(take(1), takeUntil(this._destroyed))
-                .subscribe(() => {
-                this._updateRootElement();
-                this._setupHandlesListener();
-                if (this.freeDragPosition) {
-                    this._dragRef.setFreeDragPosition(this.freeDragPosition);
-                }
-            });
-        });
-    }
-    ngOnChanges(changes) {
-        const rootSelectorChange = changes['rootElementSelector'];
-        const positionChange = changes['freeDragPosition'];
-        // We don't have to react to the first change since it's being
-        // handled in `ngAfterViewInit` where it needs to be deferred.
-        if (rootSelectorChange && !rootSelectorChange.firstChange) {
-            this._updateRootElement();
-        }
-        // Skip the first change since it's being handled in `ngAfterViewInit`.
-        if (positionChange && !positionChange.firstChange && this.freeDragPosition) {
-            this._dragRef.setFreeDragPosition(this.freeDragPosition);
-        }
-    }
-    ngOnDestroy() {
-        if (this.dropContainer) {
-            this.dropContainer.removeItem(this);
-        }
-        const index = CdkDrag._dragInstances.indexOf(this);
-        if (index > -1) {
-            CdkDrag._dragInstances.splice(index, 1);
-        }
-        // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.
-        this._ngZone.runOutsideAngular(() => {
-            this._destroyed.next();
-            this._destroyed.complete();
-            this._dragRef.dispose();
-        });
-    }
-    /** Syncs the root element with the `DragRef`. */
-    _updateRootElement() {
-        const element = this.element.nativeElement;
-        const rootElement = this.rootElementSelector ?
-            getClosestMatchingAncestor(element, this.rootElementSelector) : element;
-        if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {
-            assertElementNode(rootElement, 'cdkDrag');
-        }
-        this._dragRef.withRootElement(rootElement || element);
-    }
-    /** Gets the boundary element, based on the `boundaryElement` value. */
-    _getBoundaryElement() {
-        const boundary = this.boundaryElement;
-        if (!boundary) {
-            return null;
-        }
-        if (typeof boundary === 'string') {
-            return getClosestMatchingAncestor(this.element.nativeElement, boundary);
-        }
-        const element = coerceElement(boundary);
-        if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
-            !element.contains(this.element.nativeElement)) {
-            throw Error('Draggable element is not inside of the node passed into cdkDragBoundary.');
-        }
-        return element;
-    }
-    /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */
-    _syncInputs(ref) {
-        ref.beforeStarted.subscribe(() => {
-            if (!ref.isDragging()) {
-                const dir = this._dir;
-                const dragStartDelay = this.dragStartDelay;
-                const placeholder = this._placeholderTemplate ? {
-                    template: this._placeholderTemplate.templateRef,
-                    context: this._placeholderTemplate.data,
-                    viewContainer: this._viewContainerRef
-                } : null;
-                const preview = this._previewTemplate ? {
-                    template: this._previewTemplate.templateRef,
-                    context: this._previewTemplate.data,
-                    matchSize: this._previewTemplate.matchSize,
-                    viewContainer: this._viewContainerRef
-                } : null;
-                ref.disabled = this.disabled;
-                ref.lockAxis = this.lockAxis;
-                ref.dragStartDelay = (typeof dragStartDelay === 'object' && dragStartDelay) ?
-                    dragStartDelay : coerceNumberProperty(dragStartDelay);
-                ref.constrainPosition = this.constrainPosition;
-                ref.previewClass = this.previewClass;
-                ref
-                    .withBoundaryElement(this._getBoundaryElement())
-                    .withPlaceholderTemplate(placeholder)
-                    .withPreviewTemplate(preview)
-                    .withPreviewContainer(this.previewContainer || 'global');
-                if (dir) {
-                    ref.withDirection(dir.value);
-                }
-            }
-        });
-        // This only needs to be resolved once.
-        ref.beforeStarted.pipe(take(1)).subscribe(() => {
-            var _a, _b;
-            // If we managed to resolve a parent through DI, use it.
-            if (this._parentDrag) {
-                ref.withParent(this._parentDrag._dragRef);
-                return;
-            }
-            // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if
-            // the item was projected into another item by something like `ngTemplateOutlet`.
-            let parent = this.element.nativeElement.parentElement;
-            while (parent) {
-                // `classList` needs to be null checked, because IE doesn't have it on some elements.
-                if ((_a = parent.classList) === null || _a === void 0 ? void 0 : _a.contains(DRAG_HOST_CLASS)) {
-                    ref.withParent(((_b = CdkDrag._dragInstances.find(drag => {
-                        return drag.element.nativeElement === parent;
-                    })) === null || _b === void 0 ? void 0 : _b._dragRef) || null);
-                    break;
-                }
-                parent = parent.parentElement;
-            }
-        });
-    }
-    /** Handles the events from the underlying `DragRef`. */
-    _handleEvents(ref) {
-        ref.started.subscribe(() => {
-            this.started.emit({ source: this });
-            // Since all of these events run outside of change detection,
-            // we need to ensure that everything is marked correctly.
-            this._changeDetectorRef.markForCheck();
-        });
-        ref.released.subscribe(() => {
-            this.released.emit({ source: this });
-        });
-        ref.ended.subscribe(event => {
-            this.ended.emit({
-                source: this,
-                distance: event.distance,
-                dropPoint: event.dropPoint
-            });
-            // Since all of these events run outside of change detection,
-            // we need to ensure that everything is marked correctly.
-            this._changeDetectorRef.markForCheck();
-        });
-        ref.entered.subscribe(event => {
-            this.entered.emit({
-                container: event.container.data,
-                item: this,
-                currentIndex: event.currentIndex
-            });
-        });
-        ref.exited.subscribe(event => {
-            this.exited.emit({
-                container: event.container.data,
-                item: this
-            });
-        });
-        ref.dropped.subscribe(event => {
-            this.dropped.emit({
-                previousIndex: event.previousIndex,
-                currentIndex: event.currentIndex,
-                previousContainer: event.previousContainer.data,
-                container: event.container.data,
-                isPointerOverContainer: event.isPointerOverContainer,
-                item: this,
-                distance: event.distance,
-                dropPoint: event.dropPoint
-            });
-        });
-    }
-    /** Assigns the default input values based on a provided config object. */
-    _assignDefaults(config) {
-        const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer } = config;
-        this.disabled = draggingDisabled == null ? false : draggingDisabled;
-        this.dragStartDelay = dragStartDelay || 0;
-        if (lockAxis) {
-            this.lockAxis = lockAxis;
-        }
-        if (constrainPosition) {
-            this.constrainPosition = constrainPosition;
-        }
-        if (previewClass) {
-            this.previewClass = previewClass;
-        }
-        if (boundaryElement) {
-            this.boundaryElement = boundaryElement;
-        }
-        if (rootElementSelector) {
-            this.rootElementSelector = rootElementSelector;
-        }
-        if (previewContainer) {
-            this.previewContainer = previewContainer;
-        }
-    }
-    /** Sets up the listener that syncs the handles with the drag ref. */
-    _setupHandlesListener() {
-        // Listen for any newly-added handles.
-        this._handles.changes.pipe(startWith(this._handles), 
-        // Sync the new handles with the DragRef.
-        tap((handles) => {
-            const childHandleElements = handles
-                .filter(handle => handle._parentDrag === this)
-                .map(handle => handle.element);
-            // Usually handles are only allowed to be a descendant of the drag element, but if
-            // the consumer defined a different drag root, we should allow the drag element
-            // itself to be a handle too.
-            if (this._selfHandle && this.rootElementSelector) {
-                childHandleElements.push(this.element);
-            }
-            this._dragRef.withHandles(childHandleElements);
-        }), 
-        // Listen if the state of any of the handles changes.
-        switchMap((handles) => {
-            return merge(...handles.map(item => {
-                return item._stateChanges.pipe(startWith(item));
-            }));
-        }), takeUntil(this._destroyed)).subscribe(handleInstance => {
-            // Enabled/disable the handle that changed in the DragRef.
-            const dragRef = this._dragRef;
-            const handle = handleInstance.element.nativeElement;
-            handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);
-        });
-    }
-}
-CdkDrag.ɵfac = function CdkDrag_Factory(t) { return new (t || CdkDrag)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(CDK_DROP_LIST, 12), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_CONFIG, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(DragDrop), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_HANDLE, 10), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_PARENT, 12)); };
-CdkDrag.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDrag, selectors: [["", "cdkDrag", ""]], contentQueries: function CdkDrag_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
-        ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_PREVIEW, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_PLACEHOLDER, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_HANDLE, 5);
-    } if (rf & 2) {
-        let _t;
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._previewTemplate = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._placeholderTemplate = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._handles = _t);
-    } }, hostAttrs: [1, "cdk-drag"], hostVars: 4, hostBindings: function CdkDrag_HostBindings(rf, ctx) { if (rf & 2) {
-        ɵngcc0.ɵɵclassProp("cdk-drag-disabled", ctx.disabled)("cdk-drag-dragging", ctx._dragRef.isDragging());
-    } }, inputs: { disabled: ["cdkDragDisabled", "disabled"], dragStartDelay: ["cdkDragStartDelay", "dragStartDelay"], lockAxis: ["cdkDragLockAxis", "lockAxis"], constrainPosition: ["cdkDragConstrainPosition", "constrainPosition"], previewClass: ["cdkDragPreviewClass", "previewClass"], boundaryElement: ["cdkDragBoundary", "boundaryElement"], rootElementSelector: ["cdkDragRootElement", "rootElementSelector"], previewContainer: ["cdkDragPreviewContainer", "previewContainer"], data: ["cdkDragData", "data"], freeDragPosition: ["cdkDragFreeDragPosition", "freeDragPosition"] }, outputs: { started: "cdkDragStarted", released: "cdkDragReleased", ended: "cdkDragEnded", entered: "cdkDragEntered", exited: "cdkDragExited", dropped: "cdkDragDropped", moved: "cdkDragMoved" }, exportAs: ["cdkDrag"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }]), ɵngcc0.ɵɵNgOnChangesFeature] });
-CdkDrag._dragInstances = [];
-CdkDrag.ctorParameters = () => [
-    { type: ElementRef },
-    { type: undefined, decorators: [{ type: Inject, args: [CDK_DROP_LIST,] }, { type: Optional }, { type: SkipSelf }] },
-    { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
-    { type: NgZone },
-    { type: ViewContainerRef },
-    { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DRAG_CONFIG,] }] },
-    { type: Directionality, decorators: [{ type: Optional }] },
-    { type: DragDrop },
-    { type: ChangeDetectorRef },
-    { type: CdkDragHandle, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [CDK_DRAG_HANDLE,] }] },
-    { type: CdkDrag, decorators: [{ type: Optional }, { type: SkipSelf }, { type: Inject, args: [CDK_DRAG_PARENT,] }] }
-];
-CdkDrag.propDecorators = {
-    _handles: [{ type: ContentChildren, args: [CDK_DRAG_HANDLE, { descendants: true },] }],
-    _previewTemplate: [{ type: ContentChild, args: [CDK_DRAG_PREVIEW,] }],
-    _placeholderTemplate: [{ type: ContentChild, args: [CDK_DRAG_PLACEHOLDER,] }],
-    data: [{ type: Input, args: ['cdkDragData',] }],
-    lockAxis: [{ type: Input, args: ['cdkDragLockAxis',] }],
-    rootElementSelector: [{ type: Input, args: ['cdkDragRootElement',] }],
-    boundaryElement: [{ type: Input, args: ['cdkDragBoundary',] }],
-    dragStartDelay: [{ type: Input, args: ['cdkDragStartDelay',] }],
-    freeDragPosition: [{ type: Input, args: ['cdkDragFreeDragPosition',] }],
-    disabled: [{ type: Input, args: ['cdkDragDisabled',] }],
-    constrainPosition: [{ type: Input, args: ['cdkDragConstrainPosition',] }],
-    previewClass: [{ type: Input, args: ['cdkDragPreviewClass',] }],
-    previewContainer: [{ type: Input, args: ['cdkDragPreviewContainer',] }],
-    started: [{ type: Output, args: ['cdkDragStarted',] }],
-    released: [{ type: Output, args: ['cdkDragReleased',] }],
-    ended: [{ type: Output, args: ['cdkDragEnded',] }],
-    entered: [{ type: Output, args: ['cdkDragEntered',] }],
-    exited: [{ type: Output, args: ['cdkDragExited',] }],
-    dropped: [{ type: Output, args: ['cdkDragDropped',] }],
-    moved: [{ type: Output, args: ['cdkDragMoved',] }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDrag, [{
-        type: Directive,
-        args: [{
-                selector: '[cdkDrag]',
-                exportAs: 'cdkDrag',
-                host: {
-                    'class': DRAG_HOST_CLASS,
-                    '[class.cdk-drag-disabled]': 'disabled',
-                    '[class.cdk-drag-dragging]': '_dragRef.isDragging()'
-                },
-                providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }]
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{
-                type: Inject,
-                args: [CDK_DROP_LIST]
-            }, {
-                type: Optional
-            }, {
-                type: SkipSelf
-            }] }, { type: undefined, decorators: [{
-                type: Inject,
-                args: [DOCUMENT]
-            }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{
-                type: Optional
-            }, {
-                type: Inject,
-                args: [CDK_DRAG_CONFIG]
-            }] }, { type: ɵngcc2.Directionality, decorators: [{
-                type: Optional
-            }] }, { type: DragDrop }, { type: ɵngcc0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{
-                type: Optional
-            }, {
-                type: Self
-            }, {
-                type: Inject,
-                args: [CDK_DRAG_HANDLE]
-            }] }, { type: CdkDrag, decorators: [{
-                type: Optional
-            }, {
-                type: SkipSelf
-            }, {
-                type: Inject,
-                args: [CDK_DRAG_PARENT]
-            }] }]; }, { started: [{
-            type: Output,
-            args: ['cdkDragStarted']
-        }], released: [{
-            type: Output,
-            args: ['cdkDragReleased']
-        }], ended: [{
-            type: Output,
-            args: ['cdkDragEnded']
-        }], entered: [{
-            type: Output,
-            args: ['cdkDragEntered']
-        }], exited: [{
-            type: Output,
-            args: ['cdkDragExited']
-        }], dropped: [{
-            type: Output,
-            args: ['cdkDragDropped']
-        }], moved: [{
-            type: Output,
-            args: ['cdkDragMoved']
-        }], disabled: [{
-            type: Input,
-            args: ['cdkDragDisabled']
-        }], dragStartDelay: [{
-            type: Input,
-            args: ['cdkDragStartDelay']
-        }], lockAxis: [{
-            type: Input,
-            args: ['cdkDragLockAxis']
-        }], constrainPosition: [{
-            type: Input,
-            args: ['cdkDragConstrainPosition']
-        }], previewClass: [{
-            type: Input,
-            args: ['cdkDragPreviewClass']
-        }], boundaryElement: [{
-            type: Input,
-            args: ['cdkDragBoundary']
-        }], rootElementSelector: [{
-            type: Input,
-            args: ['cdkDragRootElement']
-        }], previewContainer: [{
-            type: Input,
-            args: ['cdkDragPreviewContainer']
-        }], _handles: [{
-            type: ContentChildren,
-            args: [CDK_DRAG_HANDLE, { descendants: true }]
-        }], _previewTemplate: [{
-            type: ContentChild,
-            args: [CDK_DRAG_PREVIEW]
-        }], _placeholderTemplate: [{
-            type: ContentChild,
-            args: [CDK_DRAG_PLACEHOLDER]
-        }], data: [{
-            type: Input,
-            args: ['cdkDragData']
-        }], freeDragPosition: [{
-            type: Input,
-            args: ['cdkDragFreeDragPosition']
-        }] }); })();
-/** Gets the closest ancestor of an element that matches a selector. */
-function getClosestMatchingAncestor(element, selector) {
-    let currentElement = element.parentElement;
-    while (currentElement) {
-        // IE doesn't support `matches` so we have to fall back to `msMatchesSelector`.
-        if (currentElement.matches ? currentElement.matches(selector) :
-            currentElement.msMatchesSelector(selector)) {
-            return currentElement;
-        }
-        currentElement = currentElement.parentElement;
-    }
-    return null;
-}
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-class DragDropModule {
-}
-DragDropModule.ɵfac = function DragDropModule_Factory(t) { return new (t || DragDropModule)(); };
-DragDropModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DragDropModule });
-DragDropModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [
-        DragDrop,
-    ], imports: [CdkScrollableModule] });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDropModule, [{
-        type: NgModule,
-        args: [{
-                declarations: [
-                    CdkDropList,
-                    CdkDropListGroup,
-                    CdkDrag,
-                    CdkDragHandle,
-                    CdkDragPreview,
-                    CdkDragPlaceholder,
-                ],
-                exports: [
-                    CdkScrollableModule,
-                    CdkDropList,
-                    CdkDropListGroup,
-                    CdkDrag,
-                    CdkDragHandle,
-                    CdkDragPreview,
-                    CdkDragPlaceholder,
-                ],
-                providers: [
-                    DragDrop,
-                ]
-            }]
-    }], null, null); })();
-(function () { (typeof ngJitMode === "undefined" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DragDropModule, { declarations: function () { return [CdkDropList, CdkDropListGroup, CdkDrag, CdkDragHandle, CdkDragPreview, CdkDragPlaceholder]; }, exports: function () { return [CdkScrollableModule, CdkDropList, CdkDropListGroup, CdkDrag, CdkDragHandle, CdkDragPreview, CdkDragPlaceholder]; } }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * Generated bundle index. Do not edit.
- */
-
-export { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };
-
-//# sourceMappingURL=drag-drop.js.map
Index: trip-planner-front/node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-drop.js","sources":["../../../../../../src/cdk/drag-drop/drag-styling.ts","../../../../../../src/cdk/drag-drop/transition-duration.ts","../../../../../../src/cdk/drag-drop/client-rect.ts","../../../../../../src/cdk/drag-drop/parent-position-tracker.ts","../../../../../../src/cdk/drag-drop/clone-node.ts","../../../../../../src/cdk/drag-drop/drag-ref.ts","../../../../../../src/cdk/drag-drop/drag-utils.ts","../../../../../../src/cdk/drag-drop/drop-list-ref.ts","../../../../../../src/cdk/drag-drop/drag-drop-registry.ts","../../../../../../src/cdk/drag-drop/drag-drop.ts","../../../../../../src/cdk/drag-drop/drag-parent.ts","../../../../../../src/cdk/drag-drop/drag-events.ts","../../../../../../src/cdk/drag-drop/directives/drop-list-group.ts","../../../../../../src/cdk/drag-drop/directives/config.ts","../../../../../../src/cdk/drag-drop/directives/assertions.ts","../../../../../../src/cdk/drag-drop/directives/drop-list.ts","../../../../../../src/cdk/drag-drop/directives/drag-handle.ts","../../../../../../src/cdk/drag-drop/directives/drag-placeholder.ts","../../../../../../src/cdk/drag-drop/directives/drag-preview.ts","../../../../../../src/cdk/drag-drop/directives/drag.ts","../../../../../../src/cdk/drag-drop/drag-drop-module.ts","../../../../../../src/cdk/drag-drop/public-api.ts","../../../../../../src/cdk/drag-drop/index.ts"],"names":["clamp"],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Extended CSSStyleDeclaration that includes a couple of drag-related\n * properties that aren't in the built-in TS typings.\n */\n export interface DragCSSStyleDeclaration extends CSSStyleDeclaration {\n  msScrollSnapType: string;\n  scrollSnapType: string;\n}\n\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nexport function extendStyles(dest: CSSStyleDeclaration,\n                             source: Record<string, string>,\n                             importantProperties?: Set<string>) {\n  for (let key in source) {\n    if (source.hasOwnProperty(key)) {\n      const value = source[key];\n\n      if (value) {\n        dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');\n      } else {\n        dest.removeProperty(key);\n      }\n    }\n  }\n\n  return dest;\n}\n\n\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nexport function toggleNativeDragInteractions(element: HTMLElement, enable: boolean) {\n  const userSelect = enable ? '' : 'none';\n\n  extendStyles(element.style, {\n    'touch-action': enable ? '' : 'none',\n    '-webkit-user-drag': enable ? '' : 'none',\n    '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n    'user-select': userSelect,\n    '-ms-user-select': userSelect,\n    '-webkit-user-select': userSelect,\n    '-moz-user-select': userSelect\n  });\n}\n\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nexport function toggleVisibility(element: HTMLElement,\n                                 enable: boolean,\n                                 importantProperties?: Set<string>) {\n  extendStyles(element.style, {\n    position: enable ? '' : 'fixed',\n    top: enable ? '' : '0',\n    opacity: enable ? '' : '0',\n    left: enable ? '' : '-999em'\n  }, importantProperties);\n}\n\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nexport function combineTransforms(transform: string, initialTransform?: string): string {\n  return initialTransform && initialTransform != 'none' ?\n      (transform + ' ' + initialTransform) :\n      transform;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value: string): number {\n  // Some browsers will return it in seconds, whereas others will return milliseconds.\n  const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n  return parseFloat(value) * multiplier;\n}\n\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nexport function getTransformTransitionDurationInMs(element: HTMLElement): number {\n  const computedStyle = getComputedStyle(element);\n  const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n  const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n\n  // If there's no transition for `all` or `transform`, we shouldn't do anything.\n  if (!property) {\n    return 0;\n  }\n\n  // Get the index of the property that we're interested in and match\n  // it up to the same index in `transition-delay` and `transition-duration`.\n  const propertyIndex = transitionedProperties.indexOf(property);\n  const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n  const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n\n  return parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n         parseCssTimeUnitsToMs(rawDelays[propertyIndex]);\n}\n\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle: CSSStyleDeclaration, name: string): string[] {\n  const value = computedStyle.getPropertyValue(name);\n  return value.split(',').map(part => part.trim());\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Gets a mutable version of an element's bounding `ClientRect`. */\nexport function getMutableClientRect(element: Element): ClientRect {\n  const clientRect = element.getBoundingClientRect();\n\n  // We need to clone the `clientRect` here, because all the values on it are readonly\n  // and we need to be able to update them. Also we can't use a spread here, because\n  // the values on a `ClientRect` aren't own properties. See:\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n  return {\n    top: clientRect.top,\n    right: clientRect.right,\n    bottom: clientRect.bottom,\n    left: clientRect.left,\n    width: clientRect.width,\n    height: clientRect.height\n  };\n}\n\n/**\n * Checks whether some coordinates are within a `ClientRect`.\n * @param clientRect ClientRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nexport function isInsideClientRect(clientRect: ClientRect, x: number, y: number) {\n  const {top, bottom, left, right} = clientRect;\n  return y >= top && y <= bottom && x >= left && x <= right;\n}\n\n/**\n * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.\n * @param clientRect `ClientRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nexport function adjustClientRect(clientRect: ClientRect, top: number, left: number) {\n  clientRect.top += top;\n  clientRect.bottom = clientRect.top + clientRect.height;\n\n  clientRect.left += left;\n  clientRect.right = clientRect.left + clientRect.width;\n}\n\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nexport function isPointerNearClientRect(rect: ClientRect,\n                                        threshold: number,\n                                        pointerX: number,\n                                        pointerY: number): boolean {\n  const {top, right, bottom, left, width, height} = rect;\n  const xThreshold = width * threshold;\n  const yThreshold = height * threshold;\n\n  return pointerY > top - yThreshold && pointerY < bottom + yThreshold &&\n         pointerX > left - xThreshold && pointerX < right + xThreshold;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {getMutableClientRect, adjustClientRect} from './client-rect';\n\n/** Object holding the scroll position of something. */\ninterface ScrollPosition {\n  top: number;\n  left: number;\n}\n\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nexport class ParentPositionTracker {\n  /** Cached positions of the scrollable parent elements. */\n  readonly positions = new Map<Document|HTMLElement, {\n    scrollPosition: ScrollPosition,\n    clientRect?: ClientRect\n  }>();\n\n  constructor(private _document: Document, private _viewportRuler: ViewportRuler) {}\n\n  /** Clears the cached positions. */\n  clear() {\n    this.positions.clear();\n  }\n\n  /** Caches the positions. Should be called at the beginning of a drag sequence. */\n  cache(elements: readonly HTMLElement[]) {\n    this.clear();\n    this.positions.set(this._document, {\n      scrollPosition: this._viewportRuler.getViewportScrollPosition(),\n    });\n\n    elements.forEach(element => {\n      this.positions.set(element, {\n        scrollPosition: {top: element.scrollTop, left: element.scrollLeft},\n        clientRect: getMutableClientRect(element)\n      });\n    });\n  }\n\n  /** Handles scrolling while a drag is taking place. */\n  handleScroll(event: Event): ScrollPosition | null {\n    const target = _getEventTarget<HTMLElement|Document>(event)!;\n    const cachedPosition = this.positions.get(target);\n\n    if (!cachedPosition) {\n      return null;\n    }\n\n    // Used when figuring out whether an element is inside the scroll parent. If the scrolled\n    // parent is the `document`, we use the `documentElement`, because IE doesn't support\n    // `contains` on the `document`.\n    const scrolledParentNode = target === this._document ? target.documentElement : target;\n    const scrollPosition = cachedPosition.scrollPosition;\n    let newTop: number;\n    let newLeft: number;\n\n    if (target === this._document) {\n      const viewportScrollPosition = this._viewportRuler!.getViewportScrollPosition();\n      newTop = viewportScrollPosition.top;\n      newLeft = viewportScrollPosition.left;\n    } else {\n      newTop = (target as HTMLElement).scrollTop;\n      newLeft = (target as HTMLElement).scrollLeft;\n    }\n\n    const topDifference = scrollPosition.top - newTop;\n    const leftDifference = scrollPosition.left - newLeft;\n\n    // Go through and update the cached positions of the scroll\n    // parents that are inside the element that was scrolled.\n    this.positions.forEach((position, node) => {\n      if (position.clientRect && target !== node && scrolledParentNode.contains(node)) {\n        adjustClientRect(position.clientRect, topDifference, leftDifference);\n      }\n    });\n\n    scrollPosition.top = newTop;\n    scrollPosition.left = newLeft;\n\n    return {top: topDifference, left: leftDifference};\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Creates a deep clone of an element. */\nexport function deepCloneNode(node: HTMLElement): HTMLElement {\n  const clone = node.cloneNode(true) as HTMLElement;\n  const descendantsWithId = clone.querySelectorAll('[id]');\n  const nodeName = node.nodeName.toLowerCase();\n\n  // Remove the `id` to avoid having multiple elements with the same id on the page.\n  clone.removeAttribute('id');\n\n  for (let i = 0; i < descendantsWithId.length; i++) {\n    descendantsWithId[i].removeAttribute('id');\n  }\n\n  if (nodeName === 'canvas') {\n    transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);\n  } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n    transferInputData(node as HTMLInputElement, clone as HTMLInputElement);\n  }\n\n  transferData('canvas', node, clone, transferCanvasData);\n  transferData('input, textarea, select', node, clone, transferInputData);\n  return clone;\n}\n\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData<T extends Element>(selector: string, node: HTMLElement, clone: HTMLElement,\n                                         callback: (source: T, clone: T) => void) {\n  const descendantElements = node.querySelectorAll<T>(selector);\n\n  if (descendantElements.length) {\n    const cloneElements = clone.querySelectorAll<T>(selector);\n\n    for (let i = 0; i < descendantElements.length; i++) {\n      callback(descendantElements[i], cloneElements[i]);\n    }\n  }\n}\n\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source: Element & {value: string},\n                           clone: Element & {value: string; name: string; type: string}) {\n  // Browsers throw an error when assigning the value of a file input programmatically.\n  if (clone.type !== 'file') {\n    clone.value = source.value;\n  }\n\n  // Radio button `name` attributes must be unique for radio button groups\n  // otherwise original radio buttons can lose their checked state\n  // once the clone is inserted in the DOM.\n  if (clone.type === 'radio' && clone.name) {\n    clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n  }\n}\n\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {\n  const context = clone.getContext('2d');\n\n  if (context) {\n    // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n    // We can't do much about it so just ignore the error.\n    try {\n      context.drawImage(source, 0, 0);\n    } catch {}\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {EmbeddedViewRef, ElementRef, NgZone, ViewContainerRef, TemplateRef} from '@angular/core';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {Direction} from '@angular/cdk/bidi';\nimport {\n  normalizePassiveListenerOptions,\n  _getEventTarget,\n  _getShadowRoot,\n} from '@angular/cdk/platform';\nimport {coerceBooleanProperty, coerceElement} from '@angular/cdk/coercion';\nimport {\n  isFakeMousedownFromScreenReader,\n  isFakeTouchstartFromScreenReader,\n} from '@angular/cdk/a11y';\nimport {Subscription, Subject, Observable} from 'rxjs';\nimport {DropListRefInternal as DropListRef} from './drop-list-ref';\nimport {DragDropRegistry} from './drag-drop-registry';\nimport {\n  combineTransforms,\n  extendStyles,\n  toggleNativeDragInteractions,\n  toggleVisibility,\n} from './drag-styling';\nimport {getTransformTransitionDurationInMs} from './transition-duration';\nimport {getMutableClientRect, adjustClientRect} from './client-rect';\nimport {ParentPositionTracker} from './parent-position-tracker';\nimport {deepCloneNode} from './clone-node';\n\n/** Object that can be used to configure the behavior of DragRef. */\nexport interface DragRefConfig {\n  /**\n   * Minimum amount of pixels that the user should\n   * drag, before the CDK initiates a drag sequence.\n   */\n  dragStartThreshold: number;\n\n  /**\n   * Amount the pixels the user should drag before the CDK\n   * considers them to have changed the drag direction.\n   */\n  pointerDirectionChangeThreshold: number;\n\n  /** `z-index` for the absolutely-positioned elements that are created by the drag item. */\n  zIndex?: number;\n\n  /** Ref that the current drag item is nested in. */\n  parentDragRef?: DragRef;\n}\n\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({passive: false});\n\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n\n// TODO(crisbeto): add an API for moving a draggable up/down the\n// list programmatically. Useful for keyboard controls.\n\n/**\n * Internal compile-time-only representation of a `DragRef`.\n * Used to avoid circular import issues between the `DragRef` and the `DropListRef`.\n * @docs-private\n */\nexport interface DragRefInternal extends DragRef {}\n\n/** Template that can be used to create a drag helper element (e.g. a preview or a placeholder). */\ninterface DragHelperTemplate<T = any> {\n  template: TemplateRef<T> | null;\n  viewContainer: ViewContainerRef;\n  context: T;\n}\n\n/** Template that can be used to create a drag preview element. */\ninterface DragPreviewTemplate<T = any> extends DragHelperTemplate<T> {\n  matchSize?: boolean;\n}\n\n/** Point on the page or within an element. */\nexport interface Point {\n  x: number;\n  y: number;\n}\n\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n  // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n  'position'\n]);\n\n/**\n * Possible places into which the preview of a drag item can be inserted.\n * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that\n * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain\n * its inherited styles.\n * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that\n * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be\n * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors\n * like `:nth-child` and some flexbox configurations.\n * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.\n * Same advantages and disadvantages as `parent`.\n */\nexport type PreviewContainer = 'global' | 'parent' | ElementRef<HTMLElement> | HTMLElement;\n\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nexport class DragRef<T = any> {\n  /** Element displayed next to the user's pointer while the element is dragged. */\n  private _preview: HTMLElement;\n\n  /** Reference to the view of the preview element. */\n  private _previewRef: EmbeddedViewRef<any> | null;\n\n  /** Container into which to insert the preview. */\n  private _previewContainer: PreviewContainer | undefined;\n\n  /** Reference to the view of the placeholder element. */\n  private _placeholderRef: EmbeddedViewRef<any> | null;\n\n  /** Element that is rendered instead of the draggable item while it is being sorted. */\n  private _placeholder: HTMLElement;\n\n  /** Coordinates within the element at which the user picked up the element. */\n  private _pickupPositionInElement: Point;\n\n  /** Coordinates on the page at which the user picked up the element. */\n  private _pickupPositionOnPage: Point;\n\n  /**\n   * Anchor node used to save the place in the DOM where the element was\n   * picked up so that it can be restored at the end of the drag sequence.\n   */\n  private _anchor: Comment;\n\n  /**\n   * CSS `transform` applied to the element when it isn't being dragged. We need a\n   * passive transform in order for the dragged element to retain its new position\n   * after the user has stopped dragging and because we need to know the relative\n   * position in case they start dragging again. This corresponds to `element.style.transform`.\n   */\n  private _passiveTransform: Point = {x: 0, y: 0};\n\n  /** CSS `transform` that is applied to the element while it's being dragged. */\n  private _activeTransform: Point = {x: 0, y: 0};\n\n  /** Inline `transform` value that the element had before the first dragging sequence. */\n  private _initialTransform?: string;\n\n  /**\n   * Whether the dragging sequence has been started. Doesn't\n   * necessarily mean that the element has been moved.\n   */\n  private _hasStartedDragging = false;\n\n  /** Whether the element has moved since the user started dragging it. */\n  private _hasMoved: boolean;\n\n  /** Drop container in which the DragRef resided when dragging began. */\n  private _initialContainer: DropListRef;\n\n  /** Index at which the item started in its initial container. */\n  private _initialIndex: number;\n\n  /** Cached positions of scrollable parent elements. */\n  private _parentPositions: ParentPositionTracker;\n\n  /** Emits when the item is being moved. */\n  private readonly _moveEvents = new Subject<{\n    source: DragRef;\n    pointerPosition: {x: number, y: number};\n    event: MouseEvent | TouchEvent;\n    distance: Point;\n    delta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n  }>();\n\n  /** Keeps track of the direction in which the user is dragging along each axis. */\n  private _pointerDirectionDelta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n\n  /** Pointer position at which the last change in the delta occurred. */\n  private _pointerPositionAtLastDirectionChange: Point;\n\n  /** Position of the pointer at the last pointer event. */\n  private _lastKnownPointerPosition: Point;\n\n  /**\n   * Root DOM node of the drag instance. This is the element that will\n   * be moved around as the user is dragging.\n   */\n  private _rootElement: HTMLElement;\n\n  /**\n   * Nearest ancestor SVG, relative to which coordinates are calculated if dragging SVGElement\n   */\n  private _ownerSVGElement: SVGSVGElement | null;\n\n  /**\n   * Inline style value of `-webkit-tap-highlight-color` at the time the\n   * dragging was started. Used to restore the value once we're done dragging.\n   */\n  private _rootElementTapHighlight: string;\n\n  /** Subscription to pointer movement events. */\n  private _pointerMoveSubscription = Subscription.EMPTY;\n\n  /** Subscription to the event that is dispatched when the user lifts their pointer. */\n  private _pointerUpSubscription = Subscription.EMPTY;\n\n  /** Subscription to the viewport being scrolled. */\n  private _scrollSubscription = Subscription.EMPTY;\n\n  /** Subscription to the viewport being resized. */\n  private _resizeSubscription = Subscription.EMPTY;\n\n  /**\n   * Time at which the last touch event occurred. Used to avoid firing the same\n   * events multiple times on touch devices where the browser will fire a fake\n   * mouse event for each touch event, after a certain time.\n   */\n  private _lastTouchEventTime: number;\n\n  /** Time at which the last dragging sequence was started. */\n  private _dragStartTime: number;\n\n  /** Cached reference to the boundary element. */\n  private _boundaryElement: HTMLElement | null = null;\n\n  /** Whether the native dragging interactions have been enabled on the root element. */\n  private _nativeInteractionsEnabled = true;\n\n  /** Cached dimensions of the preview element. */\n  private _previewRect?: ClientRect;\n\n  /** Cached dimensions of the boundary element. */\n  private _boundaryRect?: ClientRect;\n\n  /** Element that will be used as a template to create the draggable item's preview. */\n  private _previewTemplate?: DragPreviewTemplate | null;\n\n  /** Template for placeholder element rendered to show where a draggable would be dropped. */\n  private _placeholderTemplate?: DragHelperTemplate | null;\n\n  /** Elements that can be used to drag the draggable item. */\n  private _handles: HTMLElement[] = [];\n\n  /** Registered handles that are currently disabled. */\n  private _disabledHandles = new Set<HTMLElement>();\n\n  /** Droppable container that the draggable is a part of. */\n  private _dropContainer?: DropListRef;\n\n  /** Layout direction of the item. */\n  private _direction: Direction = 'ltr';\n\n  /** Ref that the current drag item is nested in. */\n  private _parentDragRef: DragRef<unknown> | null;\n\n  /**\n   * Cached shadow root that the element is placed in. `null` means that the element isn't in\n   * the shadow DOM and `undefined` means that it hasn't been resolved yet. Should be read via\n   * `_getShadowRoot`, not directly.\n   */\n  private _cachedShadowRoot: ShadowRoot | null | undefined;\n\n  /** Axis along which dragging is locked. */\n  lockAxis: 'x' | 'y';\n\n  /**\n   * Amount of milliseconds to wait after the user has put their\n   * pointer down before starting to drag the element.\n   */\n  dragStartDelay: number | {touch: number, mouse: number} = 0;\n\n  /** Class to be added to the preview element. */\n  previewClass: string|string[]|undefined;\n\n  /** Whether starting to drag this element is disabled. */\n  get disabled(): boolean {\n    return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this._toggleNativeDragInteractions();\n      this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));\n    }\n  }\n  private _disabled = false;\n\n  /** Emits as the drag sequence is being prepared. */\n  readonly beforeStarted = new Subject<void>();\n\n  /** Emits when the user starts dragging the item. */\n  readonly started = new Subject<{source: DragRef}>();\n\n  /** Emits when the user has released a drag item, before any animations have started. */\n  readonly released = new Subject<{source: DragRef}>();\n\n  /** Emits when the user stops dragging an item in the container. */\n  readonly ended = new Subject<{source: DragRef, distance: Point, dropPoint: Point}>();\n\n  /** Emits when the user has moved the item into a new container. */\n  readonly entered = new Subject<{container: DropListRef, item: DragRef, currentIndex: number}>();\n\n  /** Emits when the user removes the item its container by dragging it into another container. */\n  readonly exited = new Subject<{container: DropListRef, item: DragRef}>();\n\n  /** Emits when the user drops the item inside a container. */\n  readonly dropped = new Subject<{\n    previousIndex: number;\n    currentIndex: number;\n    item: DragRef;\n    container: DropListRef;\n    previousContainer: DropListRef;\n    distance: Point;\n    dropPoint: Point;\n    isPointerOverContainer: boolean;\n  }>();\n\n  /**\n   * Emits as the user is dragging the item. Use with caution,\n   * because this event will fire for every pixel that the user has dragged.\n   */\n  readonly moved: Observable<{\n    source: DragRef;\n    pointerPosition: {x: number, y: number};\n    event: MouseEvent | TouchEvent;\n    distance: Point;\n    delta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n  }> = this._moveEvents;\n\n  /** Arbitrary data that can be attached to the drag item. */\n  data: T;\n\n  /**\n   * Function that can be used to customize the logic of how the position of the drag item\n   * is limited while it's being dragged. Gets called with a point containing the current position\n   * of the user's pointer on the page and should return a point describing where the item should\n   * be rendered.\n   */\n  constrainPosition?: (point: Point, dragRef: DragRef) => Point;\n\n  constructor(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    private _config: DragRefConfig,\n    private _document: Document,\n    private _ngZone: NgZone,\n    private _viewportRuler: ViewportRuler,\n    private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>) {\n\n    this.withRootElement(element).withParent(_config.parentDragRef || null);\n    this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n    _dragDropRegistry.registerDragItem(this);\n  }\n\n  /**\n   * Returns the element that is being used as a placeholder\n   * while the current element is being dragged.\n   */\n  getPlaceholderElement(): HTMLElement {\n    return this._placeholder;\n  }\n\n  /** Returns the root draggable element. */\n  getRootElement(): HTMLElement {\n    return this._rootElement;\n  }\n\n  /**\n   * Gets the currently-visible element that represents the drag item.\n   * While dragging this is the placeholder, otherwise it's the root element.\n   */\n  getVisibleElement(): HTMLElement {\n    return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n  }\n\n  /** Registers the handles that can be used to drag the element. */\n  withHandles(handles: (HTMLElement | ElementRef<HTMLElement>)[]): this {\n    this._handles = handles.map(handle => coerceElement(handle));\n    this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n    this._toggleNativeDragInteractions();\n\n    // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n    // the set, rather than iterate over it and filter out the destroyed handles, because while\n    // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n    // use an array internally which may throw an error.\n    const disabledHandles = new Set<HTMLElement>();\n    this._disabledHandles.forEach(handle => {\n      if (this._handles.indexOf(handle) > -1) {\n        disabledHandles.add(handle);\n      }\n    });\n    this._disabledHandles = disabledHandles;\n    return this;\n  }\n\n  /**\n   * Registers the template that should be used for the drag preview.\n   * @param template Template that from which to stamp out the preview.\n   */\n  withPreviewTemplate(template: DragPreviewTemplate | null): this {\n    this._previewTemplate = template;\n    return this;\n  }\n\n  /**\n   * Registers the template that should be used for the drag placeholder.\n   * @param template Template that from which to stamp out the placeholder.\n   */\n  withPlaceholderTemplate(template: DragHelperTemplate | null): this {\n    this._placeholderTemplate = template;\n    return this;\n  }\n\n  /**\n   * Sets an alternate drag root element. The root element is the element that will be moved as\n   * the user is dragging. Passing an alternate root element is useful when trying to enable\n   * dragging on an element that you might not have access to.\n   */\n  withRootElement(rootElement: ElementRef<HTMLElement> | HTMLElement): this {\n    const element = coerceElement(rootElement);\n\n    if (element !== this._rootElement) {\n      if (this._rootElement) {\n        this._removeRootElementListeners(this._rootElement);\n      }\n\n      this._ngZone.runOutsideAngular(() => {\n        element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n        element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n      });\n      this._initialTransform = undefined;\n      this._rootElement = element;\n    }\n\n    if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n      this._ownerSVGElement = this._rootElement.ownerSVGElement;\n    }\n\n    return this;\n  }\n\n  /**\n   * Element to which the draggable's position will be constrained.\n   */\n  withBoundaryElement(boundaryElement: ElementRef<HTMLElement> | HTMLElement | null): this {\n    this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n    this._resizeSubscription.unsubscribe();\n    if (boundaryElement) {\n      this._resizeSubscription = this._viewportRuler\n        .change(10)\n        .subscribe(() => this._containInsideBoundaryOnResize());\n    }\n    return this;\n  }\n\n  /** Sets the parent ref that the ref is nested in.  */\n  withParent(parent: DragRef<unknown> | null): this {\n    this._parentDragRef = parent;\n    return this;\n  }\n\n  /** Removes the dragging functionality from the DOM element. */\n  dispose() {\n    this._removeRootElementListeners(this._rootElement);\n\n    // Do this check before removing from the registry since it'll\n    // stop being considered as dragged once it is removed.\n    if (this.isDragging()) {\n      // Since we move out the element to the end of the body while it's being\n      // dragged, we have to make sure that it's removed if it gets destroyed.\n      removeNode(this._rootElement);\n    }\n\n    removeNode(this._anchor);\n    this._destroyPreview();\n    this._destroyPlaceholder();\n    this._dragDropRegistry.removeDragItem(this);\n    this._removeSubscriptions();\n    this.beforeStarted.complete();\n    this.started.complete();\n    this.released.complete();\n    this.ended.complete();\n    this.entered.complete();\n    this.exited.complete();\n    this.dropped.complete();\n    this._moveEvents.complete();\n    this._handles = [];\n    this._disabledHandles.clear();\n    this._dropContainer = undefined;\n    this._resizeSubscription.unsubscribe();\n    this._parentPositions.clear();\n    this._boundaryElement = this._rootElement = this._ownerSVGElement = this._placeholderTemplate =\n        this._previewTemplate = this._anchor = this._parentDragRef = null!;\n  }\n\n  /** Checks whether the element is currently being dragged. */\n  isDragging(): boolean {\n    return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n  }\n\n  /** Resets a standalone drag item to its initial position. */\n  reset(): void {\n    this._rootElement.style.transform = this._initialTransform || '';\n    this._activeTransform = {x: 0, y: 0};\n    this._passiveTransform = {x: 0, y: 0};\n  }\n\n  /**\n   * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n   * @param handle Handle element that should be disabled.\n   */\n  disableHandle(handle: HTMLElement) {\n    if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n      this._disabledHandles.add(handle);\n      toggleNativeDragInteractions(handle, true);\n    }\n  }\n\n  /**\n   * Enables a handle, if it has been disabled.\n   * @param handle Handle element to be enabled.\n   */\n  enableHandle(handle: HTMLElement) {\n    if (this._disabledHandles.has(handle)) {\n      this._disabledHandles.delete(handle);\n      toggleNativeDragInteractions(handle, this.disabled);\n    }\n  }\n\n  /** Sets the layout direction of the draggable item. */\n  withDirection(direction: Direction): this {\n    this._direction = direction;\n    return this;\n  }\n\n  /** Sets the container that the item is part of. */\n  _withDropContainer(container: DropListRef) {\n    this._dropContainer = container;\n  }\n\n  /**\n   * Gets the current position in pixels the draggable outside of a drop container.\n   */\n  getFreeDragPosition(): Readonly<Point> {\n    const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n    return {x: position.x, y: position.y};\n  }\n\n  /**\n   * Sets the current position in pixels the draggable outside of a drop container.\n   * @param value New position to be set.\n   */\n  setFreeDragPosition(value: Point): this {\n    this._activeTransform = {x: 0, y: 0};\n    this._passiveTransform.x = value.x;\n    this._passiveTransform.y = value.y;\n\n    if (!this._dropContainer) {\n      this._applyRootElementTransform(value.x, value.y);\n    }\n\n    return this;\n  }\n\n  /**\n   * Sets the container into which to insert the preview element.\n   * @param value Container into which to insert the preview.\n   */\n  withPreviewContainer(value: PreviewContainer): this {\n    this._previewContainer = value;\n    return this;\n  }\n\n  /** Updates the item's sort order based on the last-known pointer position. */\n  _sortFromLastPointerPosition() {\n    const position = this._lastKnownPointerPosition;\n\n    if (position && this._dropContainer) {\n      this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n    }\n  }\n\n  /** Unsubscribes from the global subscriptions. */\n  private _removeSubscriptions() {\n    this._pointerMoveSubscription.unsubscribe();\n    this._pointerUpSubscription.unsubscribe();\n    this._scrollSubscription.unsubscribe();\n  }\n\n  /** Destroys the preview element and its ViewRef. */\n  private _destroyPreview() {\n    if (this._preview) {\n      removeNode(this._preview);\n    }\n\n    if (this._previewRef) {\n      this._previewRef.destroy();\n    }\n\n    this._preview = this._previewRef = null!;\n  }\n\n  /** Destroys the placeholder element and its ViewRef. */\n  private _destroyPlaceholder() {\n    if (this._placeholder) {\n      removeNode(this._placeholder);\n    }\n\n    if (this._placeholderRef) {\n      this._placeholderRef.destroy();\n    }\n\n    this._placeholder = this._placeholderRef = null!;\n  }\n\n  /** Handler for the `mousedown`/`touchstart` events. */\n  private _pointerDown = (event: MouseEvent | TouchEvent) => {\n    this.beforeStarted.next();\n\n    // Delegate the event based on whether it started from a handle or the element itself.\n    if (this._handles.length) {\n      const targetHandle = this._handles.find(handle => {\n        const target = _getEventTarget(event);\n        return !!target && (target === handle || handle.contains(target as HTMLElement));\n      });\n\n      if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n        this._initializeDragSequence(targetHandle, event);\n      }\n    } else if (!this.disabled) {\n      this._initializeDragSequence(this._rootElement, event);\n    }\n  }\n\n  /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n  private _pointerMove = (event: MouseEvent | TouchEvent) => {\n    const pointerPosition = this._getPointerPositionOnPage(event);\n\n    if (!this._hasStartedDragging) {\n      const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n      const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n      const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n\n      // Only start dragging after the user has moved more than the minimum distance in either\n      // direction. Note that this is preferrable over doing something like `skip(minimumDistance)`\n      // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n      // per pixel of movement (e.g. if the user moves their pointer quickly).\n      if (isOverThreshold) {\n        const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n        const container = this._dropContainer;\n\n        if (!isDelayElapsed) {\n          this._endDragSequence(event);\n          return;\n        }\n\n        // Prevent other drag sequences from starting while something in the container is still\n        // being dragged. This can happen while we're waiting for the drop animation to finish\n        // and can cause errors, because some elements might still be moving around.\n        if (!container || (!container.isDragging() && !container.isReceiving())) {\n          // Prevent the default action as soon as the dragging sequence is considered as\n          // \"started\" since waiting for the next event can allow the device to begin scrolling.\n          event.preventDefault();\n          this._hasStartedDragging = true;\n          this._ngZone.run(() => this._startDragSequence(event));\n        }\n      }\n\n      return;\n    }\n\n    // We only need the preview dimensions if we have a boundary element.\n    if (this._boundaryElement) {\n      // Cache the preview element rect if we haven't cached it already or if\n      // we cached it too early before the element dimensions were computed.\n      if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n        this._previewRect = (this._preview || this._rootElement).getBoundingClientRect();\n      }\n    }\n\n    // We prevent the default action down here so that we know that dragging has started. This is\n    // important for touch devices where doing this too early can unnecessarily block scrolling,\n    // if there's a dragging delay.\n    event.preventDefault();\n\n    const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n    this._hasMoved = true;\n    this._lastKnownPointerPosition = pointerPosition;\n    this._updatePointerDirectionDelta(constrainedPointerPosition);\n\n    if (this._dropContainer) {\n      this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n    } else {\n      const activeTransform = this._activeTransform;\n      activeTransform.x =\n          constrainedPointerPosition.x - this._pickupPositionOnPage.x + this._passiveTransform.x;\n      activeTransform.y =\n          constrainedPointerPosition.y - this._pickupPositionOnPage.y + this._passiveTransform.y;\n\n      this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n\n      // Apply transform as attribute if dragging and svg element to work for IE\n      if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n        const appliedTransform = `translate(${activeTransform.x} ${activeTransform.y})`;\n        this._rootElement.setAttribute('transform', appliedTransform);\n      }\n    }\n\n    // Since this event gets fired for every pixel while dragging, we only\n    // want to fire it if the consumer opted into it. Also we have to\n    // re-enter the zone because we run all of the events on the outside.\n    if (this._moveEvents.observers.length) {\n      this._ngZone.run(() => {\n        this._moveEvents.next({\n          source: this,\n          pointerPosition: constrainedPointerPosition,\n          event,\n          distance: this._getDragDistance(constrainedPointerPosition),\n          delta: this._pointerDirectionDelta\n        });\n      });\n    }\n  }\n\n  /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n  private _pointerUp = (event: MouseEvent | TouchEvent) => {\n    this._endDragSequence(event);\n  }\n\n  /**\n   * Clears subscriptions and stops the dragging sequence.\n   * @param event Browser event object that ended the sequence.\n   */\n  private _endDragSequence(event: MouseEvent | TouchEvent) {\n    // Note that here we use `isDragging` from the service, rather than from `this`.\n    // The difference is that the one from the service reflects whether a dragging sequence\n    // has been initiated, whereas the one on `this` includes whether the user has passed\n    // the minimum dragging threshold.\n    if (!this._dragDropRegistry.isDragging(this)) {\n      return;\n    }\n\n    this._removeSubscriptions();\n    this._dragDropRegistry.stopDragging(this);\n    this._toggleNativeDragInteractions();\n\n    if (this._handles) {\n      this._rootElement.style.webkitTapHighlightColor = this._rootElementTapHighlight;\n    }\n\n    if (!this._hasStartedDragging) {\n      return;\n    }\n\n    this.released.next({source: this});\n\n    if (this._dropContainer) {\n      // Stop scrolling immediately, instead of waiting for the animation to finish.\n      this._dropContainer._stopScrolling();\n      this._animatePreviewToPlaceholder().then(() => {\n        this._cleanupDragArtifacts(event);\n        this._cleanupCachedDimensions();\n        this._dragDropRegistry.stopDragging(this);\n      });\n    } else {\n      // Convert the active transform into a passive one. This means that next time\n      // the user starts dragging the item, its position will be calculated relatively\n      // to the new passive transform.\n      this._passiveTransform.x = this._activeTransform.x;\n      const pointerPosition = this._getPointerPositionOnPage(event);\n      this._passiveTransform.y = this._activeTransform.y;\n      this._ngZone.run(() => {\n        this.ended.next({\n          source: this,\n          distance: this._getDragDistance(pointerPosition),\n          dropPoint: pointerPosition\n        });\n      });\n      this._cleanupCachedDimensions();\n      this._dragDropRegistry.stopDragging(this);\n    }\n  }\n\n  /** Starts the dragging sequence. */\n  private _startDragSequence(event: MouseEvent | TouchEvent) {\n    if (isTouchEvent(event)) {\n      this._lastTouchEventTime = Date.now();\n    }\n\n    this._toggleNativeDragInteractions();\n\n    const dropContainer = this._dropContainer;\n\n    if (dropContainer) {\n      const element = this._rootElement;\n      const parent = element.parentNode as HTMLElement;\n      const placeholder = this._placeholder = this._createPlaceholderElement();\n      const anchor = this._anchor = this._anchor || this._document.createComment('');\n\n      // Needs to happen before the root element is moved.\n      const shadowRoot = this._getShadowRoot();\n\n      // Insert an anchor node so that we can restore the element's position in the DOM.\n      parent.insertBefore(anchor, element);\n\n      // There's no risk of transforms stacking when inside a drop container so\n      // we can keep the initial transform up to date any time dragging starts.\n      this._initialTransform = element.style.transform || '';\n\n      // Create the preview after the initial transform has\n      // been cached, because it can be affected by the transform.\n      this._preview = this._createPreviewElement();\n\n      // We move the element out at the end of the body and we make it hidden, because keeping it in\n      // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n      // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n      toggleVisibility(element, false, dragImportantProperties);\n      this._document.body.appendChild(parent.replaceChild(placeholder, element));\n      this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);\n      this.started.next({source: this}); // Emit before notifying the container.\n      dropContainer.start();\n      this._initialContainer = dropContainer;\n      this._initialIndex = dropContainer.getItemIndex(this);\n    } else {\n      this.started.next({source: this});\n      this._initialContainer = this._initialIndex = undefined!;\n    }\n\n    // Important to run after we've called `start` on the parent container\n    // so that it has had time to resolve its scrollable parents.\n    this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n  }\n\n  /**\n   * Sets up the different variables and subscriptions\n   * that will be necessary for the dragging sequence.\n   * @param referenceElement Element that started the drag sequence.\n   * @param event Browser event object that started the sequence.\n   */\n  private _initializeDragSequence(referenceElement: HTMLElement, event: MouseEvent | TouchEvent) {\n    // Stop propagation if the item is inside another\n    // draggable so we don't start multiple drag sequences.\n    if (this._parentDragRef) {\n      event.stopPropagation();\n    }\n\n    const isDragging = this.isDragging();\n    const isTouchSequence = isTouchEvent(event);\n    const isAuxiliaryMouseButton = !isTouchSequence && (event as MouseEvent).button !== 0;\n    const rootElement = this._rootElement;\n    const target = _getEventTarget(event);\n    const isSyntheticEvent = !isTouchSequence && this._lastTouchEventTime &&\n      this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n    const isFakeEvent = isTouchSequence ? isFakeTouchstartFromScreenReader(event as TouchEvent) :\n      isFakeMousedownFromScreenReader(event as MouseEvent);\n\n    // If the event started from an element with the native HTML drag&drop, it'll interfere\n    // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n    // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n    // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n    // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n    // events from firing on touch devices.\n    if (target && (target as HTMLElement).draggable && event.type === 'mousedown') {\n      event.preventDefault();\n    }\n\n    // Abort if the user is already dragging or is using a mouse button other than the primary one.\n    if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n      return;\n    }\n\n    // If we've got handles, we need to disable the tap highlight on the entire root element,\n    // otherwise iOS will still add it, even though all the drag interactions on the handle\n    // are disabled.\n    if (this._handles.length) {\n      this._rootElementTapHighlight = rootElement.style.webkitTapHighlightColor || '';\n      rootElement.style.webkitTapHighlightColor = 'transparent';\n    }\n\n    this._hasStartedDragging = this._hasMoved = false;\n\n    // Avoid multiple subscriptions and memory leaks when multi touch\n    // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n    this._removeSubscriptions();\n    this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n    this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n    this._scrollSubscription = this._dragDropRegistry\n      .scrolled(this._getShadowRoot())\n      .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n\n    if (this._boundaryElement) {\n      this._boundaryRect = getMutableClientRect(this._boundaryElement);\n    }\n\n    // If we have a custom preview we can't know ahead of time how large it'll be so we position\n    // it next to the cursor. The exception is when the consumer has opted into making the preview\n    // the same size as the root element, in which case we do know the size.\n    const previewTemplate = this._previewTemplate;\n    this._pickupPositionInElement = previewTemplate && previewTemplate.template &&\n      !previewTemplate.matchSize ? {x: 0, y: 0} :\n      this._getPointerPositionInElement(referenceElement, event);\n    const pointerPosition = this._pickupPositionOnPage = this._lastKnownPointerPosition =\n        this._getPointerPositionOnPage(event);\n    this._pointerDirectionDelta = {x: 0, y: 0};\n    this._pointerPositionAtLastDirectionChange = {x: pointerPosition.x, y: pointerPosition.y};\n    this._dragStartTime = Date.now();\n    this._dragDropRegistry.startDragging(this, event);\n  }\n\n  /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n  private _cleanupDragArtifacts(event: MouseEvent | TouchEvent) {\n    // Restore the element's visibility and insert it at its old position in the DOM.\n    // It's important that we maintain the position, because moving the element around in the DOM\n    // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n    // while moving the existing elements in all other cases.\n    toggleVisibility(this._rootElement, true, dragImportantProperties);\n    this._anchor.parentNode!.replaceChild(this._rootElement, this._anchor);\n\n    this._destroyPreview();\n    this._destroyPlaceholder();\n    this._boundaryRect = this._previewRect = this._initialTransform = undefined;\n\n    // Re-enter the NgZone since we bound `document` events on the outside.\n    this._ngZone.run(() => {\n      const container = this._dropContainer!;\n      const currentIndex = container.getItemIndex(this);\n      const pointerPosition = this._getPointerPositionOnPage(event);\n      const distance = this._getDragDistance(pointerPosition);\n      const isPointerOverContainer = container._isOverContainer(\n        pointerPosition.x, pointerPosition.y);\n\n      this.ended.next({source: this, distance, dropPoint: pointerPosition});\n      this.dropped.next({\n        item: this,\n        currentIndex,\n        previousIndex: this._initialIndex,\n        container: container,\n        previousContainer: this._initialContainer,\n        isPointerOverContainer,\n        distance,\n        dropPoint: pointerPosition\n      });\n      container.drop(this, currentIndex, this._initialIndex, this._initialContainer,\n        isPointerOverContainer, distance, pointerPosition);\n      this._dropContainer = this._initialContainer;\n    });\n  }\n\n  /**\n   * Updates the item's position in its drop container, or moves it\n   * into a new one, depending on its current drag position.\n   */\n  private _updateActiveDropContainer({x, y}: Point, {x: rawX, y: rawY}: Point) {\n    // Drop container that draggable has been moved into.\n    let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n\n    // If we couldn't find a new container to move the item into, and the item has left its\n    // initial container, check whether the it's over the initial container. This handles the\n    // case where two containers are connected one way and the user tries to undo dragging an\n    // item into a new container.\n    if (!newContainer && this._dropContainer !== this._initialContainer &&\n        this._initialContainer._isOverContainer(x, y)) {\n      newContainer = this._initialContainer;\n    }\n\n    if (newContainer && newContainer !== this._dropContainer) {\n      this._ngZone.run(() => {\n        // Notify the old container that the item has left.\n        this.exited.next({item: this, container: this._dropContainer!});\n        this._dropContainer!.exit(this);\n        // Notify the new container that the item has entered.\n        this._dropContainer = newContainer!;\n        this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n            // If we're re-entering the initial container and sorting is disabled,\n            // put item the into its starting index to begin with.\n            newContainer.sortingDisabled ? this._initialIndex : undefined);\n        this.entered.next({\n          item: this,\n          container: newContainer!,\n          currentIndex: newContainer!.getItemIndex(this)\n        });\n      });\n    }\n\n    // Dragging may have been interrupted as a result of the events above.\n    if (this.isDragging()) {\n      this._dropContainer!._startScrollingIfNecessary(rawX, rawY);\n      this._dropContainer!._sortItem(this, x, y, this._pointerDirectionDelta);\n      this._applyPreviewTransform(\n        x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n    }\n  }\n\n  /**\n   * Creates the element that will be rendered next to the user's pointer\n   * and will be used as a preview of the element that is being dragged.\n   */\n  private _createPreviewElement(): HTMLElement {\n    const previewConfig = this._previewTemplate;\n    const previewClass = this.previewClass;\n    const previewTemplate = previewConfig ? previewConfig.template : null;\n    let preview: HTMLElement;\n\n    if (previewTemplate && previewConfig) {\n      // Measure the element before we've inserted the preview\n      // since the insertion could throw off the measurement.\n      const rootRect = previewConfig.matchSize ? this._rootElement.getBoundingClientRect() : null;\n      const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate,\n                                                                     previewConfig.context);\n      viewRef.detectChanges();\n      preview = getRootNode(viewRef, this._document);\n      this._previewRef = viewRef;\n      if (previewConfig.matchSize) {\n        matchElementSize(preview, rootRect!);\n      } else {\n        preview.style.transform =\n            getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n      }\n    } else {\n      const element = this._rootElement;\n      preview = deepCloneNode(element);\n      matchElementSize(preview, element.getBoundingClientRect());\n\n      if (this._initialTransform) {\n        preview.style.transform = this._initialTransform;\n      }\n    }\n\n    extendStyles(preview.style, {\n      // It's important that we disable the pointer events on the preview, because\n      // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n      'pointer-events': 'none',\n      // We have to reset the margin, because it can throw off positioning relative to the viewport.\n      'margin': '0',\n      'position': 'fixed',\n      'top': '0',\n      'left': '0',\n      'z-index': `${this._config.zIndex || 1000}`\n    }, dragImportantProperties);\n\n    toggleNativeDragInteractions(preview, false);\n    preview.classList.add('cdk-drag-preview');\n    preview.setAttribute('dir', this._direction);\n\n    if (previewClass) {\n      if (Array.isArray(previewClass)) {\n        previewClass.forEach(className => preview.classList.add(className));\n      } else {\n        preview.classList.add(previewClass);\n      }\n    }\n\n    return preview;\n  }\n\n  /**\n   * Animates the preview element from its current position to the location of the drop placeholder.\n   * @returns Promise that resolves when the animation completes.\n   */\n  private _animatePreviewToPlaceholder(): Promise<void> {\n    // If the user hasn't moved yet, the transitionend event won't fire.\n    if (!this._hasMoved) {\n      return Promise.resolve();\n    }\n\n    const placeholderRect = this._placeholder.getBoundingClientRect();\n\n    // Apply the class that adds a transition to the preview.\n    this._preview.classList.add('cdk-drag-animating');\n\n    // Move the preview to the placeholder position.\n    this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n\n    // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n    // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n    // apply its style, we take advantage of the available info to figure out whether we need to\n    // bind the event in the first place.\n    const duration = getTransformTransitionDurationInMs(this._preview);\n\n    if (duration === 0) {\n      return Promise.resolve();\n    }\n\n    return this._ngZone.runOutsideAngular(() => {\n      return new Promise(resolve => {\n        const handler = ((event: TransitionEvent) => {\n          if (!event || (_getEventTarget(event) === this._preview &&\n              event.propertyName === 'transform')) {\n            this._preview?.removeEventListener('transitionend', handler);\n            resolve();\n            clearTimeout(timeout);\n          }\n        }) as EventListenerOrEventListenerObject;\n\n        // If a transition is short enough, the browser might not fire the `transitionend` event.\n        // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n        // fire if the transition hasn't completed when it was supposed to.\n        const timeout = setTimeout(handler as Function, duration * 1.5);\n        this._preview.addEventListener('transitionend', handler);\n      });\n    });\n  }\n\n  /** Creates an element that will be shown instead of the current element while dragging. */\n  private _createPlaceholderElement(): HTMLElement {\n    const placeholderConfig = this._placeholderTemplate;\n    const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n    let placeholder: HTMLElement;\n\n    if (placeholderTemplate) {\n      this._placeholderRef = placeholderConfig!.viewContainer.createEmbeddedView(\n        placeholderTemplate,\n        placeholderConfig!.context\n      );\n      this._placeholderRef.detectChanges();\n      placeholder = getRootNode(this._placeholderRef, this._document);\n    } else {\n      placeholder = deepCloneNode(this._rootElement);\n    }\n\n    placeholder.classList.add('cdk-drag-placeholder');\n    return placeholder;\n  }\n\n  /**\n   * Figures out the coordinates at which an element was picked up.\n   * @param referenceElement Element that initiated the dragging.\n   * @param event Event that initiated the dragging.\n   */\n  private _getPointerPositionInElement(referenceElement: HTMLElement,\n                                       event: MouseEvent | TouchEvent): Point {\n    const elementRect = this._rootElement.getBoundingClientRect();\n    const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n    const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n    const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n    const scrollPosition = this._getViewportScrollPosition();\n    const x = point.pageX - referenceRect.left - scrollPosition.left;\n    const y = point.pageY - referenceRect.top - scrollPosition.top;\n\n    return {\n      x: referenceRect.left - elementRect.left + x,\n      y: referenceRect.top - elementRect.top + y\n    };\n  }\n\n  /** Determines the point of the page that was touched by the user. */\n  private _getPointerPositionOnPage(event: MouseEvent | TouchEvent): Point {\n    const scrollPosition = this._getViewportScrollPosition();\n    const point = isTouchEvent(event) ?\n        // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n        // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n        // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n        // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n        // throwing an error. The value returned here will be incorrect, but since this only\n        // breaks inside a developer tool and the value is only used for secondary information,\n        // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n        (event.touches[0] || event.changedTouches[0] || {pageX: 0, pageY: 0}) : event;\n\n    const x = point.pageX - scrollPosition.left;\n    const y = point.pageY - scrollPosition.top;\n\n    // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n    // coordinate system\n    if (this._ownerSVGElement) {\n      const svgMatrix = this._ownerSVGElement.getScreenCTM();\n      if (svgMatrix) {\n        const svgPoint = this._ownerSVGElement.createSVGPoint();\n        svgPoint.x = x;\n        svgPoint.y = y;\n        return svgPoint.matrixTransform(svgMatrix.inverse());\n      }\n    }\n\n    return {x, y};\n  }\n\n\n  /** Gets the pointer position on the page, accounting for any position constraints. */\n  private _getConstrainedPointerPosition(point: Point): Point {\n    const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n    let {x, y} = this.constrainPosition ? this.constrainPosition(point, this) : point;\n\n    if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n      y = this._pickupPositionOnPage.y;\n    } else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n      x = this._pickupPositionOnPage.x;\n    }\n\n    if (this._boundaryRect) {\n      const {x: pickupX, y: pickupY} = this._pickupPositionInElement;\n      const boundaryRect = this._boundaryRect;\n      const previewRect = this._previewRect!;\n      const minY = boundaryRect.top + pickupY;\n      const maxY = boundaryRect.bottom - (previewRect.height - pickupY);\n      const minX = boundaryRect.left + pickupX;\n      const maxX = boundaryRect.right - (previewRect.width - pickupX);\n\n      x = clamp(x, minX, maxX);\n      y = clamp(y, minY, maxY);\n    }\n\n    return {x, y};\n  }\n\n\n  /** Updates the current drag delta, based on the user's current pointer position on the page. */\n  private _updatePointerDirectionDelta(pointerPositionOnPage: Point) {\n    const {x, y} = pointerPositionOnPage;\n    const delta = this._pointerDirectionDelta;\n    const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n\n    // Amount of pixels the user has dragged since the last time the direction changed.\n    const changeX = Math.abs(x - positionSinceLastChange.x);\n    const changeY = Math.abs(y - positionSinceLastChange.y);\n\n    // Because we handle pointer events on a per-pixel basis, we don't want the delta\n    // to change for every pixel, otherwise anything that depends on it can look erratic.\n    // To make the delta more consistent, we track how much the user has moved since the last\n    // delta change and we only update it after it has reached a certain threshold.\n    if (changeX > this._config.pointerDirectionChangeThreshold) {\n      delta.x = x > positionSinceLastChange.x ? 1 : -1;\n      positionSinceLastChange.x = x;\n    }\n\n    if (changeY > this._config.pointerDirectionChangeThreshold) {\n      delta.y = y > positionSinceLastChange.y ? 1 : -1;\n      positionSinceLastChange.y = y;\n    }\n\n    return delta;\n  }\n\n  /** Toggles the native drag interactions, based on how many handles are registered. */\n  private _toggleNativeDragInteractions() {\n    if (!this._rootElement || !this._handles) {\n      return;\n    }\n\n    const shouldEnable = this._handles.length > 0 || !this.isDragging();\n\n    if (shouldEnable !== this._nativeInteractionsEnabled) {\n      this._nativeInteractionsEnabled = shouldEnable;\n      toggleNativeDragInteractions(this._rootElement, shouldEnable);\n    }\n  }\n\n  /** Removes the manually-added event listeners from the root element. */\n  private _removeRootElementListeners(element: HTMLElement) {\n    element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n    element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n  }\n\n  /**\n   * Applies a `transform` to the root element, taking into account any existing transforms on it.\n   * @param x New transform value along the X axis.\n   * @param y New transform value along the Y axis.\n   */\n  private _applyRootElementTransform(x: number, y: number) {\n    const transform = getTransform(x, y);\n\n    // Cache the previous transform amount only after the first drag sequence, because\n    // we don't want our own transforms to stack on top of each other.\n    // Should be excluded none because none + translate3d(x, y, x) is invalid css\n    if (this._initialTransform == null) {\n      this._initialTransform = this._rootElement.style.transform\n                               && this._rootElement.style.transform != 'none'\n                               ? this._rootElement.style.transform\n                               : '';\n    }\n\n    // Preserve the previous `transform` value, if there was one. Note that we apply our own\n    // transform before the user's, because things like rotation can affect which direction\n    // the element will be translated towards.\n    this._rootElement.style.transform = combineTransforms(transform, this._initialTransform);\n  }\n\n  /**\n   * Applies a `transform` to the preview, taking into account any existing transforms on it.\n   * @param x New transform value along the X axis.\n   * @param y New transform value along the Y axis.\n   */\n  private _applyPreviewTransform(x: number, y: number) {\n    // Only apply the initial transform if the preview is a clone of the original element, otherwise\n    // it could be completely different and the transform might not make sense anymore.\n    const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;\n    const transform = getTransform(x, y);\n    this._preview.style.transform = combineTransforms(transform, initialTransform);\n  }\n\n  /**\n   * Gets the distance that the user has dragged during the current drag sequence.\n   * @param currentPosition Current position of the user's pointer.\n   */\n  private _getDragDistance(currentPosition: Point): Point {\n    const pickupPosition = this._pickupPositionOnPage;\n\n    if (pickupPosition) {\n      return {x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y};\n    }\n\n    return {x: 0, y: 0};\n  }\n\n  /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n  private _cleanupCachedDimensions() {\n    this._boundaryRect = this._previewRect = undefined;\n    this._parentPositions.clear();\n  }\n\n  /**\n   * Checks whether the element is still inside its boundary after the viewport has been resized.\n   * If not, the position is adjusted so that the element fits again.\n   */\n  private _containInsideBoundaryOnResize() {\n    let {x, y} = this._passiveTransform;\n\n    if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n      return;\n    }\n\n    const boundaryRect = this._boundaryElement.getBoundingClientRect();\n    const elementRect = this._rootElement.getBoundingClientRect();\n\n    // It's possible that the element got hidden away after dragging (e.g. by switching to a\n    // different tab). Don't do anything in this case so we don't clear the user's position.\n    if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n        (elementRect.width === 0 && elementRect.height === 0)) {\n      return;\n    }\n\n    const leftOverflow = boundaryRect.left - elementRect.left;\n    const rightOverflow = elementRect.right - boundaryRect.right;\n    const topOverflow = boundaryRect.top - elementRect.top;\n    const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n\n    // If the element has become wider than the boundary, we can't\n    // do much to make it fit so we just anchor it to the left.\n    if (boundaryRect.width > elementRect.width) {\n      if (leftOverflow > 0) {\n        x += leftOverflow;\n      }\n\n      if (rightOverflow > 0) {\n        x -= rightOverflow;\n      }\n    } else {\n      x = 0;\n    }\n\n    // If the element has become taller than the boundary, we can't\n    // do much to make it fit so we just anchor it to the top.\n    if (boundaryRect.height > elementRect.height) {\n      if (topOverflow > 0) {\n        y += topOverflow;\n      }\n\n      if (bottomOverflow > 0) {\n        y -= bottomOverflow;\n      }\n    } else {\n      y = 0;\n    }\n\n    if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n      this.setFreeDragPosition({y, x});\n    }\n  }\n\n  /** Gets the drag start delay, based on the event type. */\n  private _getDragStartDelay(event: MouseEvent | TouchEvent): number {\n    const value = this.dragStartDelay;\n\n    if (typeof value === 'number') {\n      return value;\n    } else if (isTouchEvent(event)) {\n      return value.touch;\n    }\n\n    return value ? value.mouse : 0;\n  }\n\n  /** Updates the internal state of the draggable element when scrolling has occurred. */\n  private _updateOnScroll(event: Event) {\n    const scrollDifference = this._parentPositions.handleScroll(event);\n\n    if (scrollDifference) {\n      const target = _getEventTarget<HTMLElement|Document>(event)!;\n\n      // ClientRect dimensions are based on the scroll position of the page and its parent node so\n      // we have to update the cached boundary ClientRect if the user has scrolled. Check for\n      // the `document` specifically since IE doesn't support `contains` on it.\n      if (this._boundaryRect && (target === this._document ||\n          (target !== this._boundaryElement && target.contains(this._boundaryElement)))) {\n        adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n      }\n\n      this._pickupPositionOnPage.x += scrollDifference.left;\n      this._pickupPositionOnPage.y += scrollDifference.top;\n\n      // If we're in free drag mode, we have to update the active transform, because\n      // it isn't relative to the viewport like the preview inside a drop list.\n      if (!this._dropContainer) {\n        this._activeTransform.x -= scrollDifference.left;\n        this._activeTransform.y -= scrollDifference.top;\n        this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n      }\n    }\n  }\n\n  /** Gets the scroll position of the viewport. */\n  private _getViewportScrollPosition() {\n    const cachedPosition = this._parentPositions.positions.get(this._document);\n    return cachedPosition ? cachedPosition.scrollPosition :\n        this._viewportRuler.getViewportScrollPosition();\n  }\n\n  /**\n   * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n   * than saving it in property directly on init, because we want to resolve it as late as possible\n   * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n   * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n   */\n  private _getShadowRoot(): ShadowRoot | null {\n    if (this._cachedShadowRoot === undefined) {\n      this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n    }\n\n    return this._cachedShadowRoot;\n  }\n\n  /** Gets the element into which the drag preview should be inserted. */\n  private _getPreviewInsertionPoint(initialParent: HTMLElement,\n                                    shadowRoot: ShadowRoot | null): HTMLElement {\n    const previewContainer = this._previewContainer || 'global';\n\n    if (previewContainer === 'parent') {\n      return initialParent;\n    }\n\n    if (previewContainer === 'global') {\n      const documentRef = this._document;\n\n      // We can't use the body if the user is in fullscreen mode,\n      // because the preview will render under the fullscreen element.\n      // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n      return shadowRoot ||\n             documentRef.fullscreenElement ||\n             (documentRef as any).webkitFullscreenElement ||\n             (documentRef as any).mozFullScreenElement ||\n             (documentRef as any).msFullscreenElement ||\n             documentRef.body;\n    }\n\n    return coerceElement(previewContainer);\n  }\n}\n\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x: number, y: number): string {\n  // Round the transforms since some browsers will\n  // blur the elements for sub-pixel transforms.\n  return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp(value: number, min: number, max: number) {\n  return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Helper to remove a node from the DOM and to do all the necessary null checks.\n * @param node Node to be removed.\n */\nfunction removeNode(node: Node | null) {\n  if (node && node.parentNode) {\n    node.parentNode.removeChild(node);\n  }\n}\n\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n  // This function is called for every pixel that the user has dragged so we need it to be\n  // as fast as possible. Since we only bind mouse events and touch events, we can assume\n  // that if the event's name starts with `t`, it's a touch event.\n  return event.type[0] === 't';\n}\n\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef: EmbeddedViewRef<any>, _document: Document): HTMLElement {\n  const rootNodes: Node[] = viewRef.rootNodes;\n\n  if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n    return rootNodes[0] as HTMLElement;\n  }\n\n  const wrapper = _document.createElement('div');\n  rootNodes.forEach(node => wrapper.appendChild(node));\n  return wrapper;\n}\n\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target: HTMLElement, sourceRect: ClientRect): void {\n  target.style.width = `${sourceRect.width}px`;\n  target.style.height = `${sourceRect.height}px`;\n  target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nexport function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex: number): void {\n  const from = clamp(fromIndex, array.length - 1);\n  const to = clamp(toIndex, array.length - 1);\n\n  if (from === to) {\n    return;\n  }\n\n  const target = array[from];\n  const delta = to < from ? -1 : 1;\n\n  for (let i = from; i !== to; i += delta) {\n    array[i] = array[i + delta];\n  }\n\n  array[to] = target;\n}\n\n\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nexport function transferArrayItem<T = any>(currentArray: T[],\n                                           targetArray: T[],\n                                           currentIndex: number,\n                                           targetIndex: number): void {\n  const from = clamp(currentIndex, currentArray.length - 1);\n  const to = clamp(targetIndex, targetArray.length);\n\n  if (currentArray.length) {\n    targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n  }\n}\n\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nexport function copyArrayItem<T = any>(currentArray: T[],\n                                       targetArray: T[],\n                                       currentIndex: number,\n                                       targetIndex: number): void {\n  const to = clamp(targetIndex, targetArray.length);\n\n  if (currentArray.length) {\n    targetArray.splice(to, 0, currentArray[currentIndex]);\n  }\n}\n\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value: number, max: number): number {\n  return Math.max(0, Math.min(max, value));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ElementRef, NgZone} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {_getShadowRoot} from '@angular/cdk/platform';\nimport {Subject, Subscription, interval, animationFrameScheduler} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {moveItemInArray} from './drag-utils';\nimport {DragDropRegistry} from './drag-drop-registry';\nimport {DragRefInternal as DragRef, Point} from './drag-ref';\nimport {\n  isPointerNearClientRect,\n  adjustClientRect,\n  getMutableClientRect,\n  isInsideClientRect,\n} from './client-rect';\nimport {ParentPositionTracker} from './parent-position-tracker';\nimport {combineTransforms, DragCSSStyleDeclaration} from './drag-styling';\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n\n/**\n * Entry in the position cache for draggable items.\n * @docs-private\n */\ninterface CachedItemPosition {\n  /** Instance of the drag item. */\n  drag: DragRef;\n  /** Dimensions of the item. */\n  clientRect: ClientRect;\n  /** Amount by which the item has been moved since dragging started. */\n  offset: number;\n  /** Inline transform that the drag item had when dragging started. */\n  initialTransform: string;\n}\n\n/** Vertical direction in which we can auto-scroll. */\nconst enum AutoScrollVerticalDirection {NONE, UP, DOWN}\n\n/** Horizontal direction in which we can auto-scroll. */\nconst enum AutoScrollHorizontalDirection {NONE, LEFT, RIGHT}\n\n/**\n * Internal compile-time-only representation of a `DropListRef`.\n * Used to avoid circular import issues between the `DropListRef` and the `DragRef`.\n * @docs-private\n */\nexport interface DropListRefInternal extends DropListRef {}\n\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nexport class DropListRef<T = any> {\n  /** Element that the drop list is attached to. */\n  element: HTMLElement | ElementRef<HTMLElement>;\n\n  /** Whether starting a dragging sequence from this container is disabled. */\n  disabled: boolean = false;\n\n  /** Whether sorting items within the list is disabled. */\n  sortingDisabled: boolean = false;\n\n  /** Locks the position of the draggable elements inside the container along the specified axis. */\n  lockAxis: 'x' | 'y';\n\n  /**\n   * Whether auto-scrolling the view when the user\n   * moves their pointer close to the edges is disabled.\n   */\n  autoScrollDisabled: boolean = false;\n\n  /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n  autoScrollStep: number = 2;\n\n  /**\n   * Function that is used to determine whether an item\n   * is allowed to be moved into a drop container.\n   */\n  enterPredicate: (drag: DragRef, drop: DropListRef) => boolean = () => true;\n\n  /** Functions that is used to determine whether an item can be sorted into a particular index. */\n  sortPredicate: (index: number, drag: DragRef, drop: DropListRef) => boolean = () => true;\n\n  /** Emits right before dragging has started. */\n  readonly beforeStarted = new Subject<void>();\n\n  /**\n   * Emits when the user has moved a new drag item into this container.\n   */\n  readonly entered = new Subject<{item: DragRef, container: DropListRef, currentIndex: number}>();\n\n  /**\n   * Emits when the user removes an item from the container\n   * by dragging it into another container.\n   */\n  readonly exited = new Subject<{item: DragRef, container: DropListRef}>();\n\n  /** Emits when the user drops an item inside the container. */\n  readonly dropped = new Subject<{\n    item: DragRef,\n    currentIndex: number,\n    previousIndex: number,\n    container: DropListRef,\n    previousContainer: DropListRef,\n    isPointerOverContainer: boolean,\n    distance: Point;\n    dropPoint: Point;\n  }>();\n\n  /** Emits as the user is swapping items while actively dragging. */\n  readonly sorted = new Subject<{\n    previousIndex: number,\n    currentIndex: number,\n    container: DropListRef,\n    item: DragRef\n  }>();\n\n  /** Arbitrary data that can be attached to the drop list. */\n  data: T;\n\n  /** Whether an item in the list is being dragged. */\n  private _isDragging = false;\n\n  /** Cache of the dimensions of all the items inside the container. */\n  private _itemPositions: CachedItemPosition[] = [];\n\n  /** Keeps track of the positions of any parent scrollable elements. */\n  private _parentPositions: ParentPositionTracker;\n\n  /** Cached `ClientRect` of the drop list. */\n  private _clientRect: ClientRect | undefined;\n\n  /**\n   * Draggable items that are currently active inside the container. Includes the items\n   * from `_draggables`, as well as any items that have been dragged in, but haven't\n   * been dropped yet.\n   */\n  private _activeDraggables: DragRef[];\n\n  /**\n   * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n   * the pointer was moving in when the swap occured and whether the user's pointer continued to\n   * overlap with the swapped item after the swapping occurred.\n   */\n  private _previousSwap = {drag: null as DragRef | null, delta: 0, overlaps: false};\n\n  /** Draggable items in the container. */\n  private _draggables: readonly DragRef[] = [];\n\n  /** Drop lists that are connected to the current one. */\n  private _siblings: readonly DropListRef[] = [];\n\n  /** Direction in which the list is oriented. */\n  private _orientation: 'horizontal' | 'vertical' = 'vertical';\n\n  /** Connected siblings that currently have a dragged item. */\n  private _activeSiblings = new Set<DropListRef>();\n\n  /** Layout direction of the drop list. */\n  private _direction: Direction = 'ltr';\n\n  /** Subscription to the window being scrolled. */\n  private _viewportScrollSubscription = Subscription.EMPTY;\n\n  /** Vertical direction in which the list is currently scrolling. */\n  private _verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n\n  /** Horizontal direction in which the list is currently scrolling. */\n  private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n  /** Node that is being auto-scrolled. */\n  private _scrollNode: HTMLElement | Window;\n\n  /** Used to signal to the current auto-scroll sequence when to stop. */\n  private readonly _stopScrollTimers = new Subject<void>();\n\n  /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n  private _cachedShadowRoot: DocumentOrShadowRoot | null = null;\n\n  /** Reference to the document. */\n  private _document: Document;\n\n  /** Elements that can be scrolled while the user is dragging. */\n  private _scrollableElements: HTMLElement[];\n\n  /** Initial value for the element's `scroll-snap-type` style. */\n  private _initialScrollSnap: string;\n\n  constructor(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>,\n    _document: any,\n    private _ngZone: NgZone,\n    private _viewportRuler: ViewportRuler) {\n    this.element = coerceElement(element);\n    this._document = _document;\n    this.withScrollableParents([this.element]);\n    _dragDropRegistry.registerDropContainer(this);\n    this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n  }\n\n  /** Removes the drop list functionality from the DOM element. */\n  dispose() {\n    this._stopScrolling();\n    this._stopScrollTimers.complete();\n    this._viewportScrollSubscription.unsubscribe();\n    this.beforeStarted.complete();\n    this.entered.complete();\n    this.exited.complete();\n    this.dropped.complete();\n    this.sorted.complete();\n    this._activeSiblings.clear();\n    this._scrollNode = null!;\n    this._parentPositions.clear();\n    this._dragDropRegistry.removeDropContainer(this);\n  }\n\n  /** Whether an item from this list is currently being dragged. */\n  isDragging() {\n    return this._isDragging;\n  }\n\n  /** Starts dragging an item. */\n  start(): void {\n    this._draggingStarted();\n    this._notifyReceivingSiblings();\n  }\n\n  /**\n   * Emits an event to indicate that the user moved an item into the container.\n   * @param item Item that was moved into the container.\n   * @param pointerX Position of the item along the X axis.\n   * @param pointerY Position of the item along the Y axis.\n   * @param index Index at which the item entered. If omitted, the container will try to figure it\n   *   out automatically.\n   */\n  enter(item: DragRef, pointerX: number, pointerY: number, index?: number): void {\n    this._draggingStarted();\n\n    // If sorting is disabled, we want the item to return to its starting\n    // position if the user is returning it to its initial container.\n    let newIndex: number;\n\n    if (index == null) {\n      newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;\n\n      if (newIndex === -1) {\n        // We use the coordinates of where the item entered the drop\n        // zone to figure out at which index it should be inserted.\n        newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n      }\n    } else {\n      newIndex = index;\n    }\n\n    const activeDraggables = this._activeDraggables;\n    const currentIndex = activeDraggables.indexOf(item);\n    const placeholder = item.getPlaceholderElement();\n    let newPositionReference: DragRef | undefined = activeDraggables[newIndex];\n\n    // If the item at the new position is the same as the item that is being dragged,\n    // it means that we're trying to restore the item to its initial position. In this\n    // case we should use the next item from the list as the reference.\n    if (newPositionReference === item) {\n      newPositionReference = activeDraggables[newIndex + 1];\n    }\n\n    // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n    // into another container and back again), we have to ensure that it isn't duplicated.\n    if (currentIndex > -1) {\n      activeDraggables.splice(currentIndex, 1);\n    }\n\n    // Don't use items that are being dragged as a reference, because\n    // their element has been moved down to the bottom of the body.\n    if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n      const element = newPositionReference.getRootElement();\n      element.parentElement!.insertBefore(placeholder, element);\n      activeDraggables.splice(newIndex, 0, item);\n    } else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n      const reference = activeDraggables[0].getRootElement();\n      reference.parentNode!.insertBefore(placeholder, reference);\n      activeDraggables.unshift(item);\n    } else {\n      coerceElement(this.element).appendChild(placeholder);\n      activeDraggables.push(item);\n    }\n\n    // The transform needs to be cleared so it doesn't throw off the measurements.\n    placeholder.style.transform = '';\n\n    // Note that the positions were already cached when we called `start` above,\n    // but we need to refresh them since the amount of items has changed and also parent rects.\n    this._cacheItemPositions();\n    this._cacheParentPositions();\n\n    // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n    this._notifyReceivingSiblings();\n    this.entered.next({item, container: this, currentIndex: this.getItemIndex(item)});\n  }\n\n  /**\n   * Removes an item from the container after it was dragged into another container by the user.\n   * @param item Item that was dragged out.\n   */\n  exit(item: DragRef): void {\n    this._reset();\n    this.exited.next({item, container: this});\n  }\n\n  /**\n   * Drops an item into this container.\n   * @param item Item being dropped into the container.\n   * @param currentIndex Index at which the item should be inserted.\n   * @param previousIndex Index of the item when dragging started.\n   * @param previousContainer Container from which the item got dragged in.\n   * @param isPointerOverContainer Whether the user's pointer was over the\n   *    container when the item was dropped.\n   * @param distance Distance the user has dragged since the start of the dragging sequence.\n   */\n  drop(item: DragRef, currentIndex: number, previousIndex: number, previousContainer: DropListRef,\n    isPointerOverContainer: boolean, distance: Point, dropPoint: Point): void {\n    this._reset();\n    this.dropped.next({\n      item,\n      currentIndex,\n      previousIndex,\n      container: this,\n      previousContainer,\n      isPointerOverContainer,\n      distance,\n      dropPoint\n    });\n  }\n\n  /**\n   * Sets the draggable items that are a part of this list.\n   * @param items Items that are a part of this list.\n   */\n  withItems(items: DragRef[]): this {\n    const previousItems = this._draggables;\n    this._draggables = items;\n    items.forEach(item => item._withDropContainer(this));\n\n    if (this.isDragging()) {\n      const draggedItems = previousItems.filter(item => item.isDragging());\n\n      // If all of the items being dragged were removed\n      // from the list, abort the current drag sequence.\n      if (draggedItems.every(item => items.indexOf(item) === -1)) {\n        this._reset();\n      } else {\n        this._cacheItems();\n      }\n    }\n\n    return this;\n  }\n\n  /** Sets the layout direction of the drop list. */\n  withDirection(direction: Direction): this {\n    this._direction = direction;\n    return this;\n  }\n\n  /**\n   * Sets the containers that are connected to this one. When two or more containers are\n   * connected, the user will be allowed to transfer items between them.\n   * @param connectedTo Other containers that the current containers should be connected to.\n   */\n  connectedTo(connectedTo: DropListRef[]): this {\n    this._siblings = connectedTo.slice();\n    return this;\n  }\n\n  /**\n   * Sets the orientation of the container.\n   * @param orientation New orientation for the container.\n   */\n  withOrientation(orientation: 'vertical' | 'horizontal'): this {\n    this._orientation = orientation;\n    return this;\n  }\n\n  /**\n   * Sets which parent elements are can be scrolled while the user is dragging.\n   * @param elements Elements that can be scrolled.\n   */\n  withScrollableParents(elements: HTMLElement[]): this {\n    const element = coerceElement(this.element);\n\n    // We always allow the current element to be scrollable\n    // so we need to ensure that it's in the array.\n    this._scrollableElements =\n        elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n    return this;\n  }\n\n  /** Gets the scrollable parents that are registered with this drop container. */\n  getScrollableParents(): readonly HTMLElement[] {\n    return this._scrollableElements;\n  }\n\n  /**\n   * Figures out the index of an item in the container.\n   * @param item Item whose index should be determined.\n   */\n  getItemIndex(item: DragRef): number {\n    if (!this._isDragging) {\n      return this._draggables.indexOf(item);\n    }\n\n    // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n    // The rest of the logic still stands no matter what orientation we're in, however\n    // we need to invert the array when determining the index.\n    const items = this._orientation === 'horizontal' && this._direction === 'rtl' ?\n        this._itemPositions.slice().reverse() : this._itemPositions;\n\n    return findIndex(items, currentItem => currentItem.drag === item);\n  }\n\n  /**\n   * Whether the list is able to receive the item that\n   * is currently being dragged inside a connected drop list.\n   */\n  isReceiving(): boolean {\n    return this._activeSiblings.size > 0;\n  }\n\n  /**\n   * Sorts an item inside the container based on its position.\n   * @param item Item to be sorted.\n   * @param pointerX Position of the item along the X axis.\n   * @param pointerY Position of the item along the Y axis.\n   * @param pointerDelta Direction in which the pointer is moving along each axis.\n   */\n  _sortItem(item: DragRef, pointerX: number, pointerY: number,\n            pointerDelta: {x: number, y: number}): void {\n    // Don't sort the item if sorting is disabled or it's out of range.\n    if (this.sortingDisabled || !this._clientRect ||\n        !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n      return;\n    }\n\n    const siblings = this._itemPositions;\n    const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n\n    if (newIndex === -1 && siblings.length > 0) {\n      return;\n    }\n\n    const isHorizontal = this._orientation === 'horizontal';\n    const currentIndex = findIndex(siblings, currentItem => currentItem.drag === item);\n    const siblingAtNewPosition = siblings[newIndex];\n    const currentPosition = siblings[currentIndex].clientRect;\n    const newPosition = siblingAtNewPosition.clientRect;\n    const delta = currentIndex > newIndex ? 1 : -1;\n\n    // How many pixels the item's placeholder should be offset.\n    const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n\n    // How many pixels all the other items should be offset.\n    const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n\n    // Save the previous order of the items before moving the item to its new index.\n    // We use this to check whether an item has been moved as a result of the sorting.\n    const oldOrder = siblings.slice();\n\n    // Shuffle the array in place.\n    moveItemInArray(siblings, currentIndex, newIndex);\n\n    this.sorted.next({\n      previousIndex: currentIndex,\n      currentIndex: newIndex,\n      container: this,\n      item\n    });\n\n    siblings.forEach((sibling, index) => {\n      // Don't do anything if the position hasn't changed.\n      if (oldOrder[index] === sibling) {\n        return;\n      }\n\n      const isDraggedItem = sibling.drag === item;\n      const offset = isDraggedItem ? itemOffset : siblingOffset;\n      const elementToOffset = isDraggedItem ? item.getPlaceholderElement() :\n                                              sibling.drag.getRootElement();\n\n      // Update the offset to reflect the new position.\n      sibling.offset += offset;\n\n      // Since we're moving the items with a `transform`, we need to adjust their cached\n      // client rects to reflect their new position, as well as swap their positions in the cache.\n      // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n      // elements may be mid-animation which will give us a wrong result.\n      if (isHorizontal) {\n        // Round the transforms since some browsers will\n        // blur the elements, for sub-pixel transforms.\n        elementToOffset.style.transform = combineTransforms(\n          `translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);\n        adjustClientRect(sibling.clientRect, 0, offset);\n      } else {\n        elementToOffset.style.transform = combineTransforms(\n          `translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);\n        adjustClientRect(sibling.clientRect, offset, 0);\n      }\n    });\n\n    // Note that it's important that we do this after the client rects have been adjusted.\n    this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n    this._previousSwap.drag = siblingAtNewPosition.drag;\n    this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n  }\n\n  /**\n   * Checks whether the user's pointer is close to the edges of either the\n   * viewport or the drop list and starts the auto-scroll sequence.\n   * @param pointerX User's pointer position along the x axis.\n   * @param pointerY User's pointer position along the y axis.\n   */\n  _startScrollingIfNecessary(pointerX: number, pointerY: number) {\n    if (this.autoScrollDisabled) {\n      return;\n    }\n\n    let scrollNode: HTMLElement | Window | undefined;\n    let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n    let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n    // Check whether we should start scrolling any of the parent containers.\n    this._parentPositions.positions.forEach((position, element) => {\n      // We have special handling for the `document` below. Also this would be\n      // nicer with a  for...of loop, but it requires changing a compiler flag.\n      if (element === this._document || !position.clientRect || scrollNode) {\n        return;\n      }\n\n      if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD,\n          pointerX, pointerY)) {\n        [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(\n            element as HTMLElement, position.clientRect, pointerX, pointerY);\n\n        if (verticalScrollDirection || horizontalScrollDirection) {\n          scrollNode = element as HTMLElement;\n        }\n      }\n    });\n\n    // Otherwise check if we can start scrolling the viewport.\n    if (!verticalScrollDirection && !horizontalScrollDirection) {\n      const {width, height} = this._viewportRuler.getViewportSize();\n      const clientRect = {width, height, top: 0, right: width, bottom: height, left: 0};\n      verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n      horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n      scrollNode = window;\n    }\n\n    if (scrollNode && (verticalScrollDirection !== this._verticalScrollDirection ||\n        horizontalScrollDirection !== this._horizontalScrollDirection ||\n        scrollNode !== this._scrollNode)) {\n      this._verticalScrollDirection = verticalScrollDirection;\n      this._horizontalScrollDirection = horizontalScrollDirection;\n      this._scrollNode = scrollNode;\n\n      if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n        this._ngZone.runOutsideAngular(this._startScrollInterval);\n      } else {\n        this._stopScrolling();\n      }\n    }\n  }\n\n  /** Stops any currently-running auto-scroll sequences. */\n  _stopScrolling() {\n    this._stopScrollTimers.next();\n  }\n\n  /** Starts the dragging sequence within the list. */\n  private _draggingStarted() {\n    const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;\n    this.beforeStarted.next();\n    this._isDragging = true;\n\n    // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n    // scrolling. The browser seems to round the value based on the snapping points which means\n    // that we can't increment/decrement the scroll position.\n    this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n    styles.scrollSnapType = styles.msScrollSnapType = 'none';\n    this._cacheItems();\n    this._viewportScrollSubscription.unsubscribe();\n    this._listenToScrollEvents();\n  }\n\n  /** Caches the positions of the configured scrollable parents. */\n  private _cacheParentPositions() {\n    const element = coerceElement(this.element);\n    this._parentPositions.cache(this._scrollableElements);\n\n    // The list element is always in the `scrollableElements`\n    // so we can take advantage of the cached `ClientRect`.\n    this._clientRect = this._parentPositions.positions.get(element)!.clientRect!;\n  }\n\n  /** Refreshes the position cache of the items and sibling containers. */\n  private _cacheItemPositions() {\n    const isHorizontal = this._orientation === 'horizontal';\n\n    this._itemPositions = this._activeDraggables.map(drag => {\n      const elementToMeasure = drag.getVisibleElement();\n      return {\n        drag,\n        offset: 0,\n        initialTransform: elementToMeasure.style.transform || '',\n        clientRect: getMutableClientRect(elementToMeasure),\n      };\n    }).sort((a, b) => {\n      return isHorizontal ? a.clientRect.left - b.clientRect.left :\n                            a.clientRect.top - b.clientRect.top;\n    });\n  }\n\n  /** Resets the container to its initial state. */\n  private _reset() {\n    this._isDragging = false;\n\n    const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;\n    styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n\n    // TODO(crisbeto): may have to wait for the animations to finish.\n    this._activeDraggables.forEach(item => {\n      const rootElement = item.getRootElement();\n\n      if (rootElement) {\n        const initialTransform = this._itemPositions\n          .find(current => current.drag === item)?.initialTransform;\n        rootElement.style.transform = initialTransform || '';\n      }\n    });\n    this._siblings.forEach(sibling => sibling._stopReceiving(this));\n    this._activeDraggables = [];\n    this._itemPositions = [];\n    this._previousSwap.drag = null;\n    this._previousSwap.delta = 0;\n    this._previousSwap.overlaps = false;\n    this._stopScrolling();\n    this._viewportScrollSubscription.unsubscribe();\n    this._parentPositions.clear();\n  }\n\n  /**\n   * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n   * @param currentIndex Index of the item currently being dragged.\n   * @param siblings All of the items in the list.\n   * @param delta Direction in which the user is moving.\n   */\n  private _getSiblingOffsetPx(currentIndex: number,\n                              siblings: CachedItemPosition[],\n                              delta: 1 | -1) {\n\n    const isHorizontal = this._orientation === 'horizontal';\n    const currentPosition = siblings[currentIndex].clientRect;\n    const immediateSibling = siblings[currentIndex + delta * -1];\n    let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n\n    if (immediateSibling) {\n      const start = isHorizontal ? 'left' : 'top';\n      const end = isHorizontal ? 'right' : 'bottom';\n\n      // Get the spacing between the start of the current item and the end of the one immediately\n      // after it in the direction in which the user is dragging, or vice versa. We add it to the\n      // offset in order to push the element to where it will be when it's inline and is influenced\n      // by the `margin` of its siblings.\n      if (delta === -1) {\n        siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n      } else {\n        siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n      }\n    }\n\n    return siblingOffset;\n  }\n\n  /**\n   * Gets the offset in pixels by which the item that is being dragged should be moved.\n   * @param currentPosition Current position of the item.\n   * @param newPosition Position of the item where the current item should be moved.\n   * @param delta Direction in which the user is moving.\n   */\n  private _getItemOffsetPx(currentPosition: ClientRect, newPosition: ClientRect, delta: 1 | -1) {\n    const isHorizontal = this._orientation === 'horizontal';\n    let itemOffset = isHorizontal ? newPosition.left - currentPosition.left :\n                                    newPosition.top - currentPosition.top;\n\n    // Account for differences in the item width/height.\n    if (delta === -1) {\n      itemOffset += isHorizontal ? newPosition.width - currentPosition.width :\n                                   newPosition.height - currentPosition.height;\n    }\n\n    return itemOffset;\n  }\n\n  /**\n   * Checks if pointer is entering in the first position\n   * @param pointerX Position of the user's pointer along the X axis.\n   * @param pointerY Position of the user's pointer along the Y axis.\n   */\n  private _shouldEnterAsFirstChild(pointerX: number, pointerY: number) {\n    if (!this._activeDraggables.length) {\n      return false;\n    }\n\n    const itemPositions = this._itemPositions;\n    const isHorizontal = this._orientation === 'horizontal';\n\n    // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n    // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n    const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n    if (reversed) {\n      const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n      return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n    } else {\n      const firstItemRect = itemPositions[0].clientRect;\n      return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n    }\n  }\n\n  /**\n   * Gets the index of an item in the drop container, based on the position of the user's pointer.\n   * @param item Item that is being sorted.\n   * @param pointerX Position of the user's pointer along the X axis.\n   * @param pointerY Position of the user's pointer along the Y axis.\n   * @param delta Direction in which the user is moving their pointer.\n   */\n  private _getItemIndexFromPointerPosition(item: DragRef, pointerX: number, pointerY: number,\n                                           delta?: {x: number, y: number}): number {\n    const isHorizontal = this._orientation === 'horizontal';\n    const index = findIndex(this._itemPositions, ({drag, clientRect}, _, array) => {\n      if (drag === item) {\n        // If there's only one item left in the container, it must be\n        // the dragged item itself so we use it as a reference.\n        return array.length < 2;\n      }\n\n      if (delta) {\n        const direction = isHorizontal ? delta.x : delta.y;\n\n        // If the user is still hovering over the same item as last time, their cursor hasn't left\n        // the item after we made the swap, and they didn't change the direction in which they're\n        // dragging, we don't consider it a direction swap.\n        if (drag === this._previousSwap.drag && this._previousSwap.overlaps &&\n            direction === this._previousSwap.delta) {\n          return false;\n        }\n      }\n\n      return isHorizontal ?\n          // Round these down since most browsers report client rects with\n          // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n          pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right) :\n          pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n    });\n\n    return (index === -1 || !this.sortPredicate(index, item, this)) ? -1 : index;\n  }\n\n  /** Caches the current items in the list and their positions. */\n  private _cacheItems(): void {\n    this._activeDraggables = this._draggables.slice();\n    this._cacheItemPositions();\n    this._cacheParentPositions();\n  }\n\n  /** Starts the interval that'll auto-scroll the element. */\n  private _startScrollInterval = () => {\n    this._stopScrolling();\n\n    interval(0, animationFrameScheduler)\n      .pipe(takeUntil(this._stopScrollTimers))\n      .subscribe(() => {\n        const node = this._scrollNode;\n        const scrollStep = this.autoScrollStep;\n\n        if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {\n          incrementVerticalScroll(node, -scrollStep);\n        } else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {\n          incrementVerticalScroll(node, scrollStep);\n        }\n\n        if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n          incrementHorizontalScroll(node, -scrollStep);\n        } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n          incrementHorizontalScroll(node, scrollStep);\n        }\n      });\n  }\n\n  /**\n   * Checks whether the user's pointer is positioned over the container.\n   * @param x Pointer position along the X axis.\n   * @param y Pointer position along the Y axis.\n   */\n  _isOverContainer(x: number, y: number): boolean {\n    return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);\n  }\n\n  /**\n   * Figures out whether an item should be moved into a sibling\n   * drop container, based on its current position.\n   * @param item Drag item that is being moved.\n   * @param x Position of the item along the X axis.\n   * @param y Position of the item along the Y axis.\n   */\n  _getSiblingContainerFromPosition(item: DragRef, x: number, y: number): DropListRef | undefined {\n    return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n  }\n\n  /**\n   * Checks whether the drop list can receive the passed-in item.\n   * @param item Item that is being dragged into the list.\n   * @param x Position of the item along the X axis.\n   * @param y Position of the item along the Y axis.\n   */\n  _canReceive(item: DragRef, x: number, y: number): boolean {\n    if (!this._clientRect || !isInsideClientRect(this._clientRect, x, y) ||\n        !this.enterPredicate(item, this)) {\n      return false;\n    }\n\n    const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y) as HTMLElement | null;\n\n    // If there's no element at the pointer position, then\n    // the client rect is probably scrolled out of the view.\n    if (!elementFromPoint) {\n      return false;\n    }\n\n    const nativeElement = coerceElement(this.element);\n\n    // The `ClientRect`, that we're using to find the container over which the user is\n    // hovering, doesn't give us any information on whether the element has been scrolled\n    // out of the view or whether it's overlapping with other containers. This means that\n    // we could end up transferring the item into a container that's invisible or is positioned\n    // below another one. We use the result from `elementFromPoint` to get the top-most element\n    // at the pointer position and to find whether it's one of the intersecting drop containers.\n    return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);\n  }\n\n  /**\n   * Called by one of the connected drop lists when a dragging sequence has started.\n   * @param sibling Sibling in which dragging has started.\n   */\n  _startReceiving(sibling: DropListRef, items: DragRef[]) {\n    const activeSiblings = this._activeSiblings;\n\n    if (!activeSiblings.has(sibling) && items.every(item => {\n      // Note that we have to add an exception to the `enterPredicate` for items that started off\n      // in this drop list. The drag ref has logic that allows an item to return to its initial\n      // container, if it has left the initial container and none of the connected containers\n      // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n      return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n    })) {\n      activeSiblings.add(sibling);\n      this._cacheParentPositions();\n      this._listenToScrollEvents();\n    }\n  }\n\n  /**\n   * Called by a connected drop list when dragging has stopped.\n   * @param sibling Sibling whose dragging has stopped.\n   */\n  _stopReceiving(sibling: DropListRef) {\n    this._activeSiblings.delete(sibling);\n    this._viewportScrollSubscription.unsubscribe();\n  }\n\n  /**\n   * Starts listening to scroll events on the viewport.\n   * Used for updating the internal state of the list.\n   */\n  private _listenToScrollEvents() {\n    this._viewportScrollSubscription = this._dragDropRegistry\n      .scrolled(this._getShadowRoot())\n      .subscribe(event => {\n        if (this.isDragging()) {\n          const scrollDifference = this._parentPositions.handleScroll(event);\n\n          if (scrollDifference) {\n            // Since we know the amount that the user has scrolled we can shift all of the\n            // client rectangles ourselves. This is cheaper than re-measuring everything and\n            // we can avoid inconsistent behavior where we might be measuring the element before\n            // its position has changed.\n            this._itemPositions.forEach(({clientRect}) => {\n              adjustClientRect(clientRect, scrollDifference.top, scrollDifference.left);\n            });\n\n            // We need two loops for this, because we want all of the cached\n            // positions to be up-to-date before we re-sort the item.\n            this._itemPositions.forEach(({drag}) => {\n              if (this._dragDropRegistry.isDragging(drag)) {\n                // We need to re-sort the item manually, because the pointer move\n                // events won't be dispatched while the user is scrolling.\n                drag._sortFromLastPointerPosition();\n              }\n            });\n          }\n        } else if (this.isReceiving()) {\n          this._cacheParentPositions();\n        }\n      });\n  }\n\n  /**\n   * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n   * than saving it in property directly on init, because we want to resolve it as late as possible\n   * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n   * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n   */\n  private _getShadowRoot(): DocumentOrShadowRoot {\n    if (!this._cachedShadowRoot) {\n      const shadowRoot = _getShadowRoot(coerceElement(this.element));\n      this._cachedShadowRoot = shadowRoot || this._document;\n    }\n\n    return this._cachedShadowRoot;\n  }\n\n  /** Notifies any siblings that may potentially receive the item. */\n  private _notifyReceivingSiblings() {\n    const draggedItems = this._activeDraggables.filter(item => item.isDragging());\n    this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n  }\n}\n\n\n/**\n * Finds the index of an item that matches a predicate function. Used as an equivalent\n * of `Array.prototype.findIndex` which isn't part of the standard Google typings.\n * @param array Array in which to look for matches.\n * @param predicate Function used to determine whether an item is a match.\n */\nfunction findIndex<T>(array: T[],\n                      predicate: (value: T, index: number, obj: T[]) => boolean): number {\n\n  for (let i = 0; i < array.length; i++) {\n    if (predicate(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\n/**\n * Increments the vertical scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementVerticalScroll(node: HTMLElement | Window, amount: number) {\n  if (node === window) {\n    (node as Window).scrollBy(0, amount);\n  } else {\n    // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n    (node as HTMLElement).scrollTop += amount;\n  }\n}\n\n/**\n * Increments the horizontal scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementHorizontalScroll(node: HTMLElement | Window, amount: number) {\n  if (node === window) {\n    (node as Window).scrollBy(amount, 0);\n  } else {\n    // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n    (node as HTMLElement).scrollLeft += amount;\n  }\n}\n\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect: ClientRect, pointerY: number) {\n  const {top, bottom, height} = clientRect;\n  const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n\n  if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n    return AutoScrollVerticalDirection.UP;\n  } else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n    return AutoScrollVerticalDirection.DOWN;\n  }\n\n  return AutoScrollVerticalDirection.NONE;\n}\n\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect: ClientRect, pointerX: number) {\n  const {left, right, width} = clientRect;\n  const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n  if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n    return AutoScrollHorizontalDirection.LEFT;\n  } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n    return AutoScrollHorizontalDirection.RIGHT;\n  }\n\n  return AutoScrollHorizontalDirection.NONE;\n}\n\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element: HTMLElement, clientRect: ClientRect, pointerX: number,\n  pointerY: number): [AutoScrollVerticalDirection, AutoScrollHorizontalDirection] {\n  const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n  const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n  let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n  let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n  // Note that we here we do some extra checks for whether the element is actually scrollable in\n  // a certain direction and we only assign the scroll direction if it is. We do this so that we\n  // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n  // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n  if (computedVertical) {\n    const scrollTop = element.scrollTop;\n\n    if (computedVertical === AutoScrollVerticalDirection.UP) {\n      if (scrollTop > 0) {\n        verticalScrollDirection = AutoScrollVerticalDirection.UP;\n      }\n    } else if (element.scrollHeight - scrollTop > element.clientHeight) {\n      verticalScrollDirection = AutoScrollVerticalDirection.DOWN;\n    }\n  }\n\n  if (computedHorizontal) {\n    const scrollLeft = element.scrollLeft;\n\n    if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {\n      if (scrollLeft > 0) {\n        horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n      }\n    } else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n      horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n    }\n  }\n\n  return [verticalScrollDirection, horizontalScrollDirection];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, NgZone, OnDestroy, Inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {merge, Observable, Observer, Subject} from 'rxjs';\n\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n  passive: false,\n  capture: true\n});\n\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\n// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order\n// to avoid circular imports. If we were to reference them here, importing the registry into the\n// classes that are registering themselves will introduce a circular import.\n@Injectable({providedIn: 'root'})\nexport class DragDropRegistry<I extends {isDragging(): boolean}, C> implements OnDestroy {\n  private _document: Document;\n\n  /** Registered drop container instances. */\n  private _dropInstances = new Set<C>();\n\n  /** Registered drag item instances. */\n  private _dragInstances = new Set<I>();\n\n  /** Drag item instances that are currently being dragged. */\n  private _activeDragInstances: I[] = [];\n\n  /** Keeps track of the event listeners that we've bound to the `document`. */\n  private _globalListeners = new Map<string, {\n    handler: (event: Event) => void,\n    options?: AddEventListenerOptions | boolean\n  }>();\n\n  /**\n   * Predicate function to check if an item is being dragged.  Moved out into a property,\n   * because it'll be called a lot and we don't want to create a new function every time.\n   */\n  private _draggingPredicate = (item: I) => item.isDragging();\n\n  /**\n   * Emits the `touchmove` or `mousemove` events that are dispatched\n   * while the user is dragging a drag item instance.\n   */\n  readonly pointerMove: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();\n\n  /**\n   * Emits the `touchend` or `mouseup` events that are dispatched\n   * while the user is dragging a drag item instance.\n   */\n  readonly pointerUp: Subject<TouchEvent | MouseEvent> = new Subject<TouchEvent | MouseEvent>();\n\n  /**\n   * Emits when the viewport has been scrolled while the user is dragging an item.\n   * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n   * @breaking-change 13.0.0\n   */\n  readonly scroll: Subject<Event> = new Subject<Event>();\n\n  constructor(\n    private _ngZone: NgZone,\n    @Inject(DOCUMENT) _document: any) {\n    this._document = _document;\n  }\n\n  /** Adds a drop container to the registry. */\n  registerDropContainer(drop: C) {\n    if (!this._dropInstances.has(drop)) {\n      this._dropInstances.add(drop);\n    }\n  }\n\n  /** Adds a drag item instance to the registry. */\n  registerDragItem(drag: I) {\n    this._dragInstances.add(drag);\n\n    // The `touchmove` event gets bound once, ahead of time, because WebKit\n    // won't preventDefault on a dynamically-added `touchmove` listener.\n    // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n    if (this._dragInstances.size === 1) {\n      this._ngZone.runOutsideAngular(() => {\n        // The event handler has to be explicitly active,\n        // because newer browsers make it passive by default.\n        this._document.addEventListener('touchmove', this._persistentTouchmoveListener,\n            activeCapturingEventOptions);\n      });\n    }\n  }\n\n  /** Removes a drop container from the registry. */\n  removeDropContainer(drop: C) {\n    this._dropInstances.delete(drop);\n  }\n\n  /** Removes a drag item instance from the registry. */\n  removeDragItem(drag: I) {\n    this._dragInstances.delete(drag);\n    this.stopDragging(drag);\n\n    if (this._dragInstances.size === 0) {\n      this._document.removeEventListener('touchmove', this._persistentTouchmoveListener,\n          activeCapturingEventOptions);\n    }\n  }\n\n  /**\n   * Starts the dragging sequence for a drag instance.\n   * @param drag Drag instance which is being dragged.\n   * @param event Event that initiated the dragging.\n   */\n  startDragging(drag: I, event: TouchEvent | MouseEvent) {\n    // Do not process the same drag twice to avoid memory leaks and redundant listeners\n    if (this._activeDragInstances.indexOf(drag) > -1) {\n      return;\n    }\n\n    this._activeDragInstances.push(drag);\n\n    if (this._activeDragInstances.length === 1) {\n      const isTouchEvent = event.type.startsWith('touch');\n\n      // We explicitly bind __active__ listeners here, because newer browsers will default to\n      // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n      // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n      this._globalListeners\n        .set(isTouchEvent ? 'touchend' : 'mouseup', {\n          handler: (e: Event) => this.pointerUp.next(e as TouchEvent | MouseEvent),\n          options: true\n        })\n        .set('scroll', {\n          handler: (e: Event) => this.scroll.next(e),\n          // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n          // the document. See https://github.com/angular/components/issues/17144.\n          options: true\n        })\n        // Preventing the default action on `mousemove` isn't enough to disable text selection\n        // on Safari so we need to prevent the selection event as well. Alternatively this can\n        // be done by setting `user-select: none` on the `body`, however it has causes a style\n        // recalculation which can be expensive on pages with a lot of elements.\n        .set('selectstart', {\n          handler: this._preventDefaultWhileDragging,\n          options: activeCapturingEventOptions\n        });\n\n      // We don't have to bind a move event for touch drag sequences, because\n      // we already have a persistent global one bound from `registerDragItem`.\n      if (!isTouchEvent) {\n        this._globalListeners.set('mousemove', {\n          handler: (e: Event) => this.pointerMove.next(e as MouseEvent),\n          options: activeCapturingEventOptions\n        });\n      }\n\n      this._ngZone.runOutsideAngular(() => {\n        this._globalListeners.forEach((config, name) => {\n          this._document.addEventListener(name, config.handler, config.options);\n        });\n      });\n    }\n  }\n\n  /** Stops dragging a drag item instance. */\n  stopDragging(drag: I) {\n    const index = this._activeDragInstances.indexOf(drag);\n\n    if (index > -1) {\n      this._activeDragInstances.splice(index, 1);\n\n      if (this._activeDragInstances.length === 0) {\n        this._clearGlobalListeners();\n      }\n    }\n  }\n\n  /** Gets whether a drag item instance is currently being dragged. */\n  isDragging(drag: I) {\n    return this._activeDragInstances.indexOf(drag) > -1;\n  }\n\n  /**\n   * Gets a stream that will emit when any element on the page is scrolled while an item is being\n   * dragged.\n   * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n   *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n   *   be used to include an additional top-level listener at the shadow root level.\n   */\n  scrolled(shadowRoot?: DocumentOrShadowRoot | null): Observable<Event> {\n    const streams: Observable<Event>[] = [this.scroll];\n\n    if (shadowRoot && shadowRoot !== this._document) {\n      // Note that this is basically the same as `fromEvent` from rjxs, but we do it ourselves,\n      // because we want to guarantee that the event is bound outside of the `NgZone`. With\n      // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n      streams.push(new Observable((observer: Observer<Event>) => {\n        return this._ngZone.runOutsideAngular(() => {\n          const eventOptions = true;\n          const callback = (event: Event) => {\n            if (this._activeDragInstances.length) {\n              observer.next(event);\n            }\n          };\n\n          (shadowRoot as ShadowRoot).addEventListener('scroll', callback, eventOptions);\n\n          return () => {\n            (shadowRoot as ShadowRoot).removeEventListener('scroll', callback, eventOptions);\n          };\n        });\n      }));\n    }\n\n    return merge(...streams);\n  }\n\n  ngOnDestroy() {\n    this._dragInstances.forEach(instance => this.removeDragItem(instance));\n    this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n    this._clearGlobalListeners();\n    this.pointerMove.complete();\n    this.pointerUp.complete();\n  }\n\n  /**\n   * Event listener that will prevent the default browser action while the user is dragging.\n   * @param event Event whose default action should be prevented.\n   */\n  private _preventDefaultWhileDragging = (event: Event) => {\n    if (this._activeDragInstances.length > 0) {\n      event.preventDefault();\n    }\n  }\n\n  /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n  private _persistentTouchmoveListener = (event: TouchEvent) => {\n    if (this._activeDragInstances.length > 0) {\n      // Note that we only want to prevent the default action after dragging has actually started.\n      // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n      // but it could be pushed back if the user has set up a drag delay or threshold.\n      if (this._activeDragInstances.some(this._draggingPredicate)) {\n        event.preventDefault();\n      }\n\n      this.pointerMove.next(event);\n    }\n  }\n\n  /** Clears out the global event listeners from the `document`. */\n  private _clearGlobalListeners() {\n    this._globalListeners.forEach((config, name) => {\n      this._document.removeEventListener(name, config.handler, config.options);\n    });\n\n    this._globalListeners.clear();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, Inject, NgZone, ElementRef} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {DragRef, DragRefConfig} from './drag-ref';\nimport {DropListRef} from './drop-list-ref';\nimport {DragDropRegistry} from './drag-drop-registry';\n\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n  dragStartThreshold: 5,\n  pointerDirectionChangeThreshold: 5\n};\n\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\n@Injectable({providedIn: 'root'})\nexport class DragDrop {\n  constructor(\n    @Inject(DOCUMENT) private _document: any,\n    private _ngZone: NgZone,\n    private _viewportRuler: ViewportRuler,\n    private _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>) {}\n\n  /**\n   * Turns an element into a draggable item.\n   * @param element Element to which to attach the dragging functionality.\n   * @param config Object used to configure the dragging behavior.\n   */\n  createDrag<T = any>(element: ElementRef<HTMLElement> | HTMLElement,\n                config: DragRefConfig = DEFAULT_CONFIG): DragRef<T> {\n\n    return new DragRef<T>(element, config, this._document, this._ngZone, this._viewportRuler,\n        this._dragDropRegistry);\n  }\n\n  /**\n   * Turns an element into a drop list.\n   * @param element Element to which to attach the drop list functionality.\n   */\n  createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T> {\n    return new DropListRef<T>(element, this._dragDropRegistry, this._document, this._ngZone,\n        this._viewportRuler);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nexport const CDK_DRAG_PARENT = new InjectionToken<{}>('CDK_DRAG_PARENT');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkDrag} from './directives/drag';\nimport {CdkDropList} from './directives/drop-list';\n\n/** Event emitted when the user starts dragging a draggable. */\nexport interface CdkDragStart<T = any> {\n  /** Draggable that emitted the event. */\n  source: CdkDrag<T>;\n}\n\n/** Event emitted when the user releases an item, before any animations have started. */\nexport interface CdkDragRelease<T = any> {\n  /** Draggable that emitted the event. */\n  source: CdkDrag<T>;\n}\n\n/** Event emitted when the user stops dragging a draggable. */\nexport interface CdkDragEnd<T = any> {\n  /** Draggable that emitted the event. */\n  source: CdkDrag<T>;\n  /** Distance in pixels that the user has dragged since the drag sequence started. */\n  distance: {x: number, y: number};\n  /** Position where the pointer was when the item was dropped */\n  dropPoint: {x: number, y: number};\n}\n\n/** Event emitted when the user moves an item into a new drop container. */\nexport interface CdkDragEnter<T = any, I = T> {\n  /** Container into which the user has moved the item. */\n  container: CdkDropList<T>;\n  /** Item that was moved into the container. */\n  item: CdkDrag<I>;\n  /** Index at which the item has entered the container. */\n  currentIndex: number;\n}\n\n/**\n * Event emitted when the user removes an item from a\n * drop container by moving it into another one.\n */\nexport interface CdkDragExit<T = any, I = T> {\n  /** Container from which the user has a removed an item. */\n  container: CdkDropList<T>;\n  /** Item that was removed from the container. */\n  item: CdkDrag<I>;\n}\n\n\n/** Event emitted when the user drops a draggable item inside a drop container. */\nexport interface CdkDragDrop<T, O = T, I = any> {\n  /** Index of the item when it was picked up. */\n  previousIndex: number;\n  /** Current index of the item. */\n  currentIndex: number;\n  /** Item that is being dropped. */\n  item: CdkDrag<I>;\n  /** Container in which the item was dropped. */\n  container: CdkDropList<T>;\n  /** Container from which the item was picked up. Can be the same as the `container`. */\n  previousContainer: CdkDropList<O>;\n  /** Whether the user's pointer was over the container when the item was dropped. */\n  isPointerOverContainer: boolean;\n  /** Distance in pixels that the user has dragged since the drag sequence started. */\n  distance: {x: number, y: number};\n  /** Position where the pointer was when the item was dropped */\n  dropPoint: {x: number, y: number};\n}\n\n/** Event emitted as the user is dragging a draggable item. */\nexport interface CdkDragMove<T = any> {\n  /** Item that is being dragged. */\n  source: CdkDrag<T>;\n  /** Position of the user's pointer on the page. */\n  pointerPosition: {x: number, y: number};\n  /** Native event that is causing the dragging. */\n  event: MouseEvent | TouchEvent;\n  /** Distance in pixels that the user has dragged since the drag sequence started. */\n  distance: {x: number, y: number};\n  /**\n   * Indicates the direction in which the user is dragging the element along each axis.\n   * `1` means that the position is increasing (e.g. the user is moving to the right or downwards),\n   * whereas `-1` means that it's decreasing (they're moving to the left or upwards). `0` means\n   * that the position hasn't changed.\n   */\n  delta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n}\n\n/** Event emitted when the user swaps the position of two drag items. */\nexport interface CdkDragSortEvent<T = any, I = T> {\n  /** Index from which the item was sorted previously. */\n  previousIndex: number;\n  /** Index that the item is currently in. */\n  currentIndex: number;\n  /** Container that the item belongs to. */\n  container: CdkDropList<T>;\n  /** Item that is being sorted. */\n  item: CdkDrag<I>;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, OnDestroy, Input, InjectionToken} from '@angular/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\n\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const CDK_DROP_LIST_GROUP =\n    new InjectionToken<CdkDropListGroup<unknown>>('CdkDropListGroup');\n\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\n@Directive({\n  selector: '[cdkDropListGroup]',\n  exportAs: 'cdkDropListGroup',\n  providers: [{provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup}],\n})\nexport class CdkDropListGroup<T> implements OnDestroy {\n  /** Drop lists registered inside the group. */\n  readonly _items = new Set<T>();\n\n  /** Whether starting a dragging sequence from inside this group is disabled. */\n  @Input('cdkDropListGroupDisabled')\n  get disabled(): boolean { return this._disabled; }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled = false;\n\n  ngOnDestroy() {\n    this._items.clear();\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DragRefConfig, Point, DragRef} from '../drag-ref';\n\n/** Possible values that can be used to configure the drag start delay. */\nexport type DragStartDelay = number | {touch: number, mouse: number};\n\n/** Possible axis along which dragging can be locked. */\nexport type DragAxis = 'x' | 'y';\n\n/** Function that can be used to constrain the position of a dragged element. */\nexport type DragConstrainPosition = (point: Point, dragRef: DragRef) => Point;\n\n/** Possible orientations for a drop list. */\nexport type DropListOrientation = 'horizontal' | 'vertical';\n\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nexport const CDK_DRAG_CONFIG = new InjectionToken<DragDropConfig>('CDK_DRAG_CONFIG');\n\n/**\n * Object that can be used to configure the drag\n * items and drop lists within a module or a component.\n */\nexport interface DragDropConfig extends Partial<DragRefConfig> {\n  lockAxis?: DragAxis;\n  dragStartDelay?: DragStartDelay;\n  constrainPosition?: DragConstrainPosition;\n  previewClass?: string | string[];\n  boundaryElement?: string;\n  rootElementSelector?: string;\n  draggingDisabled?: boolean;\n  sortingDisabled?: boolean;\n  listAutoScrollDisabled?: boolean;\n  listOrientation?: DropListOrientation;\n  zIndex?: number;\n  previewContainer?: 'global' | 'parent';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nexport function assertElementNode(node: Node, name: string): asserts node is HTMLElement {\n  if (node.nodeType !== 1) {\n    throw Error(`${name} must be attached to an element node. ` +\n                `Currently attached to \"${node.nodeName}\".`);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  BooleanInput,\n  coerceArray,\n  coerceNumberProperty,\n  coerceBooleanProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  Optional,\n  Directive,\n  ChangeDetectorRef,\n  SkipSelf,\n  Inject,\n  InjectionToken,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\nimport {CdkDrag} from './drag';\nimport {CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent} from '../drag-events';\nimport {CDK_DROP_LIST_GROUP, CdkDropListGroup} from './drop-list-group';\nimport {DropListRef} from '../drop-list-ref';\nimport {DragRef} from '../drag-ref';\nimport {DragDrop} from '../drag-drop';\nimport {DropListOrientation, DragAxis, DragDropConfig, CDK_DRAG_CONFIG} from './config';\nimport {Subject} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {assertElementNode} from './assertions';\n\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n\n/**\n * Internal compile-time-only representation of a `CdkDropList`.\n * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.\n * @docs-private\n */\nexport interface CdkDropListInternal extends CdkDropList {}\n\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const CDK_DROP_LIST = new InjectionToken<CdkDropList>('CdkDropList');\n\n/** Container that wraps a set of draggable items. */\n@Directive({\n  selector: '[cdkDropList], cdk-drop-list',\n  exportAs: 'cdkDropList',\n  providers: [\n    // Prevent child drop lists from picking up the same group as their parent.\n    {provide: CDK_DROP_LIST_GROUP, useValue: undefined},\n    {provide: CDK_DROP_LIST, useExisting: CdkDropList},\n  ],\n  host: {\n    'class': 'cdk-drop-list',\n    '[attr.id]': 'id',\n    '[class.cdk-drop-list-disabled]': 'disabled',\n    '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n    '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n  }\n})\nexport class CdkDropList<T = any> implements OnDestroy {\n  /** Emits when the list has been destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /** Whether the element's scrollable parents have been resolved. */\n  private _scrollableParentsResolved: boolean;\n\n  /** Keeps track of the drop lists that are currently on the page. */\n  private static _dropLists: CdkDropList[] = [];\n\n  /** Reference to the underlying drop list instance. */\n  _dropListRef: DropListRef<CdkDropList<T>>;\n\n  /**\n   * Other draggable containers that this container is connected to and into which the\n   * container's items can be transferred. Can either be references to other drop containers,\n   * or their unique IDs.\n   */\n  @Input('cdkDropListConnectedTo')\n  connectedTo: (CdkDropList | string)[] | CdkDropList | string = [];\n\n  /** Arbitrary data to attach to this container. */\n  @Input('cdkDropListData') data: T;\n\n  /** Direction in which the list is oriented. */\n  @Input('cdkDropListOrientation') orientation: DropListOrientation;\n\n  /**\n   * Unique ID for the drop zone. Can be used as a reference\n   * in the `connectedTo` of another `CdkDropList`.\n   */\n  @Input() id: string = `cdk-drop-list-${_uniqueIdCounter++}`;\n\n  /** Locks the position of the draggable elements inside the container along the specified axis. */\n  @Input('cdkDropListLockAxis') lockAxis: DragAxis;\n\n  /** Whether starting a dragging sequence from this container is disabled. */\n  @Input('cdkDropListDisabled')\n  get disabled(): boolean {\n    return this._disabled || (!!this._group && this._group.disabled);\n  }\n  set disabled(value: boolean) {\n    // Usually we sync the directive and ref state right before dragging starts, in order to have\n    // a single point of failure and to avoid having to use setters for everything. `disabled` is\n    // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n    // the user in a disabled state, so we also need to sync it as it's being set.\n    this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean;\n\n  /** Whether sorting within this drop list is disabled. */\n  @Input('cdkDropListSortingDisabled')\n  sortingDisabled: boolean;\n\n  /**\n   * Function that is used to determine whether an item\n   * is allowed to be moved into a drop container.\n   */\n  @Input('cdkDropListEnterPredicate')\n  enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean = () => true\n\n  /** Functions that is used to determine whether an item can be sorted into a particular index. */\n  @Input('cdkDropListSortPredicate')\n  sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean = () => true\n\n  /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */\n  @Input('cdkDropListAutoScrollDisabled')\n  autoScrollDisabled: boolean;\n\n  /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n  @Input('cdkDropListAutoScrollStep')\n  autoScrollStep: number;\n\n  /** Emits when the user drops an item inside the container. */\n  @Output('cdkDropListDropped')\n  readonly dropped: EventEmitter<CdkDragDrop<T, any>> = new EventEmitter<CdkDragDrop<T, any>>();\n\n  /**\n   * Emits when the user has moved a new drag item into this container.\n   */\n  @Output('cdkDropListEntered')\n  readonly entered: EventEmitter<CdkDragEnter<T>> = new EventEmitter<CdkDragEnter<T>>();\n\n  /**\n   * Emits when the user removes an item from the container\n   * by dragging it into another container.\n   */\n  @Output('cdkDropListExited')\n  readonly exited: EventEmitter<CdkDragExit<T>> = new EventEmitter<CdkDragExit<T>>();\n\n  /** Emits as the user is swapping items while actively dragging. */\n  @Output('cdkDropListSorted')\n  readonly sorted: EventEmitter<CdkDragSortEvent<T>> = new EventEmitter<CdkDragSortEvent<T>>();\n\n  /**\n   * Keeps track of the items that are registered with this container. Historically we used to\n   * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n   * well which means that we can't handle cases like dragging the headers of a `mat-table`\n   * correctly. What we do instead is to have the items register themselves with the container\n   * and then we sort them based on their position in the DOM.\n   */\n  private _unsortedItems = new Set<CdkDrag>();\n\n  constructor(\n      /** Element that the drop list is attached to. */\n      public element: ElementRef<HTMLElement>, dragDrop: DragDrop,\n      private _changeDetectorRef: ChangeDetectorRef,\n      private _scrollDispatcher: ScrollDispatcher,\n      @Optional() private _dir?: Directionality,\n      @Optional() @Inject(CDK_DROP_LIST_GROUP) @SkipSelf()\n      private _group?: CdkDropListGroup<CdkDropList>,\n      @Optional() @Inject(CDK_DRAG_CONFIG) config?: DragDropConfig) {\n\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      assertElementNode(element.nativeElement, 'cdkDropList');\n    }\n\n    this._dropListRef = dragDrop.createDropList(element);\n    this._dropListRef.data = this;\n\n    if (config) {\n      this._assignDefaults(config);\n    }\n\n    this._dropListRef.enterPredicate = (drag: DragRef<CdkDrag>, drop: DropListRef<CdkDropList>) => {\n      return this.enterPredicate(drag.data, drop.data);\n    };\n\n    this._dropListRef.sortPredicate =\n      (index: number, drag: DragRef<CdkDrag>, drop: DropListRef<CdkDropList>) => {\n        return this.sortPredicate(index, drag.data, drop.data);\n      };\n\n    this._setupInputSyncSubscription(this._dropListRef);\n    this._handleEvents(this._dropListRef);\n    CdkDropList._dropLists.push(this);\n\n    if (_group) {\n      _group._items.add(this);\n    }\n  }\n\n  /** Registers an items with the drop list. */\n  addItem(item: CdkDrag): void {\n    this._unsortedItems.add(item);\n\n    if (this._dropListRef.isDragging()) {\n      this._syncItemsWithRef();\n    }\n  }\n\n  /** Removes an item from the drop list. */\n  removeItem(item: CdkDrag): void {\n    this._unsortedItems.delete(item);\n\n    if (this._dropListRef.isDragging()) {\n      this._syncItemsWithRef();\n    }\n  }\n\n  /** Gets the registered items in the list, sorted by their position in the DOM. */\n  getSortedItems(): CdkDrag[] {\n    return Array.from(this._unsortedItems).sort((a: CdkDrag, b: CdkDrag) => {\n      const documentPosition =\n          a._dragRef.getVisibleElement().compareDocumentPosition(b._dragRef.getVisibleElement());\n\n      // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n      // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n      // tslint:disable-next-line:no-bitwise\n      return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n    });\n  }\n\n  ngOnDestroy() {\n    const index = CdkDropList._dropLists.indexOf(this);\n\n    if (index > -1) {\n      CdkDropList._dropLists.splice(index, 1);\n    }\n\n    if (this._group) {\n      this._group._items.delete(this);\n    }\n\n    this._unsortedItems.clear();\n    this._dropListRef.dispose();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n  private _setupInputSyncSubscription(ref: DropListRef<CdkDropList>) {\n    if (this._dir) {\n      this._dir.change\n        .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n        .subscribe(value => ref.withDirection(value));\n    }\n\n    ref.beforeStarted.subscribe(() => {\n      const siblings = coerceArray(this.connectedTo).map(drop => {\n        if (typeof drop === 'string') {\n          const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n\n          if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n          }\n\n          return correspondingDropList!;\n        }\n\n        return drop;\n      });\n\n      if (this._group) {\n        this._group._items.forEach(drop => {\n          if (siblings.indexOf(drop) === -1) {\n            siblings.push(drop);\n          }\n        });\n      }\n\n      // Note that we resolve the scrollable parents here so that we delay the resolution\n      // as long as possible, ensuring that the element is in its final place in the DOM.\n      if (!this._scrollableParentsResolved) {\n        const scrollableParents = this._scrollDispatcher\n          .getAncestorScrollContainers(this.element)\n          .map(scrollable => scrollable.getElementRef().nativeElement);\n        this._dropListRef.withScrollableParents(scrollableParents);\n\n        // Only do this once since it involves traversing the DOM and the parents\n        // shouldn't be able to change without the drop list being destroyed.\n        this._scrollableParentsResolved = true;\n      }\n\n      ref.disabled = this.disabled;\n      ref.lockAxis = this.lockAxis;\n      ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n      ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n      ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n      ref\n        .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n        .withOrientation(this.orientation);\n    });\n  }\n\n  /** Handles events from the underlying DropListRef. */\n  private _handleEvents(ref: DropListRef<CdkDropList>) {\n    ref.beforeStarted.subscribe(() => {\n      this._syncItemsWithRef();\n      this._changeDetectorRef.markForCheck();\n    });\n\n    ref.entered.subscribe(event => {\n      this.entered.emit({\n        container: this,\n        item: event.item.data,\n        currentIndex: event.currentIndex\n      });\n    });\n\n    ref.exited.subscribe(event => {\n      this.exited.emit({\n        container: this,\n        item: event.item.data\n      });\n      this._changeDetectorRef.markForCheck();\n    });\n\n    ref.sorted.subscribe(event => {\n      this.sorted.emit({\n        previousIndex: event.previousIndex,\n        currentIndex: event.currentIndex,\n        container: this,\n        item: event.item.data\n      });\n    });\n\n    ref.dropped.subscribe(event => {\n      this.dropped.emit({\n        previousIndex: event.previousIndex,\n        currentIndex: event.currentIndex,\n        previousContainer: event.previousContainer.data,\n        container: event.container.data,\n        item: event.item.data,\n        isPointerOverContainer: event.isPointerOverContainer,\n        distance: event.distance,\n        dropPoint: event.dropPoint\n      });\n\n      // Mark for check since all of these events run outside of change\n      // detection and we're not guaranteed for something else to have triggered it.\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /** Assigns the default input values based on a provided config object. */\n  private _assignDefaults(config: DragDropConfig) {\n    const {\n      lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation\n    } = config;\n\n    this.disabled = draggingDisabled == null ? false : draggingDisabled;\n    this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n    this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n    this.orientation = listOrientation || 'vertical';\n\n    if (lockAxis) {\n      this.lockAxis = lockAxis;\n    }\n  }\n\n  /** Syncs up the registered drag items with underlying drop list ref. */\n  private _syncItemsWithRef() {\n    this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_sortingDisabled: BooleanInput;\n  static ngAcceptInputType_autoScrollDisabled: BooleanInput;\n  static ngAcceptInputType_autoScrollStep: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {CDK_DRAG_PARENT} from '../drag-parent';\nimport {assertElementNode} from './assertions';\n\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const CDK_DRAG_HANDLE = new InjectionToken<CdkDragHandle>('CdkDragHandle');\n\n/** Handle that can be used to drag a CdkDrag instance. */\n@Directive({\n  selector: '[cdkDragHandle]',\n  host: {\n    'class': 'cdk-drag-handle'\n  },\n  providers: [{provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle}],\n})\nexport class CdkDragHandle implements OnDestroy {\n  /** Closest parent draggable instance. */\n  _parentDrag: {} | undefined;\n\n  /** Emits when the state of the handle has changed. */\n  readonly _stateChanges = new Subject<CdkDragHandle>();\n\n  /** Whether starting to drag through this handle is disabled. */\n  @Input('cdkDragHandleDisabled')\n  get disabled(): boolean { return this._disabled; }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this._stateChanges.next(this);\n  }\n  private _disabled = false;\n\n  constructor(\n    public element: ElementRef<HTMLElement>,\n    @Inject(CDK_DRAG_PARENT) @Optional() @SkipSelf() parentDrag?: any) {\n\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      assertElementNode(element.nativeElement, 'cdkDragHandle');\n    }\n\n    this._parentDrag = parentDrag;\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, TemplateRef, Input, InjectionToken} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const CDK_DRAG_PLACEHOLDER = new InjectionToken<CdkDragPlaceholder>('CdkDragPlaceholder');\n\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\n@Directive({\n  selector: 'ng-template[cdkDragPlaceholder]',\n  providers: [{provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder}],\n})\nexport class CdkDragPlaceholder<T = any> {\n  /** Context data to be added to the placeholder template instance. */\n  @Input() data: T;\n  constructor(public templateRef: TemplateRef<T>) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Directive, InjectionToken, Input, TemplateRef} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const CDK_DRAG_PREVIEW = new InjectionToken<CdkDragPreview>('CdkDragPreview');\n\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\n@Directive({\n  selector: 'ng-template[cdkDragPreview]',\n  providers: [{provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview}],\n})\nexport class CdkDragPreview<T = any> {\n  /** Context data to be added to the preview template instance. */\n  @Input() data: T;\n\n  /** Whether the preview should preserve the same size as the item that is being dragged. */\n  @Input()\n  get matchSize(): boolean { return this._matchSize; }\n  set matchSize(value: boolean) { this._matchSize = coerceBooleanProperty(value); }\n  private _matchSize = false;\n\n  constructor(public templateRef: TemplateRef<T>) {}\n\n  static ngAcceptInputType_matchSize: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {DOCUMENT} from '@angular/common';\nimport {\n  AfterViewInit,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  SkipSelf,\n  ViewContainerRef,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectorRef,\n  Self,\n} from '@angular/core';\nimport {\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  coerceElement,\n  BooleanInput\n} from '@angular/cdk/coercion';\nimport {Observable, Observer, Subject, merge} from 'rxjs';\nimport {startWith, take, map, takeUntil, switchMap, tap} from 'rxjs/operators';\nimport {\n  CdkDragDrop,\n  CdkDragEnd,\n  CdkDragEnter,\n  CdkDragExit,\n  CdkDragMove,\n  CdkDragStart,\n  CdkDragRelease,\n} from '../drag-events';\nimport {CDK_DRAG_HANDLE, CdkDragHandle} from './drag-handle';\nimport {CDK_DRAG_PLACEHOLDER, CdkDragPlaceholder} from './drag-placeholder';\nimport {CDK_DRAG_PREVIEW, CdkDragPreview} from './drag-preview';\nimport {CDK_DRAG_PARENT} from '../drag-parent';\nimport {DragRef, Point, PreviewContainer} from '../drag-ref';\nimport {CDK_DROP_LIST, CdkDropListInternal as CdkDropList} from './drop-list';\nimport {DragDrop} from '../drag-drop';\nimport {CDK_DRAG_CONFIG, DragDropConfig, DragStartDelay, DragAxis} from './config';\nimport {assertElementNode} from './assertions';\n\nconst DRAG_HOST_CLASS = 'cdk-drag';\n\n/** Element that can be moved inside a CdkDropList container. */\n@Directive({\n  selector: '[cdkDrag]',\n  exportAs: 'cdkDrag',\n  host: {\n    'class': DRAG_HOST_CLASS,\n    '[class.cdk-drag-disabled]': 'disabled',\n    '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n  },\n  providers: [{provide: CDK_DRAG_PARENT, useExisting: CdkDrag}]\n})\nexport class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {\n  private readonly _destroyed = new Subject<void>();\n  private static _dragInstances: CdkDrag[] = [];\n\n  /** Reference to the underlying drag instance. */\n  _dragRef: DragRef<CdkDrag<T>>;\n\n  /** Elements that can be used to drag the draggable item. */\n  @ContentChildren(CDK_DRAG_HANDLE, {descendants: true}) _handles: QueryList<CdkDragHandle>;\n\n  /** Element that will be used as a template to create the draggable item's preview. */\n  @ContentChild(CDK_DRAG_PREVIEW) _previewTemplate: CdkDragPreview;\n\n  /** Template for placeholder element rendered to show where a draggable would be dropped. */\n  @ContentChild(CDK_DRAG_PLACEHOLDER) _placeholderTemplate: CdkDragPlaceholder;\n\n  /** Arbitrary data to attach to this drag instance. */\n  @Input('cdkDragData') data: T;\n\n  /** Locks the position of the dragged element along the specified axis. */\n  @Input('cdkDragLockAxis') lockAxis: DragAxis;\n\n  /**\n   * Selector that will be used to determine the root draggable element, starting from\n   * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful\n   * when trying to enable dragging on an element that you might not have access to.\n   */\n  @Input('cdkDragRootElement') rootElementSelector: string;\n\n  /**\n   * Node or selector that will be used to determine the element to which the draggable's\n   * position will be constrained. If a string is passed in, it'll be used as a selector that\n   * will be matched starting from the element's parent and going up the DOM until a match\n   * has been found.\n   */\n  @Input('cdkDragBoundary') boundaryElement: string | ElementRef<HTMLElement> | HTMLElement;\n\n  /**\n   * Amount of milliseconds to wait after the user has put their\n   * pointer down before starting to drag the element.\n   */\n  @Input('cdkDragStartDelay') dragStartDelay: DragStartDelay;\n\n  /**\n   * Sets the position of a `CdkDrag` that is outside of a drop container.\n   * Can be used to restore the element's position for a returning user.\n   */\n  @Input('cdkDragFreeDragPosition') freeDragPosition: {x: number, y: number};\n\n  /** Whether starting to drag this element is disabled. */\n  @Input('cdkDragDisabled')\n  get disabled(): boolean {\n    return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this._dragRef.disabled = this._disabled;\n  }\n  private _disabled: boolean;\n\n  /**\n   * Function that can be used to customize the logic of how the position of the drag item\n   * is limited while it's being dragged. Gets called with a point containing the current position\n   * of the user's pointer on the page and should return a point describing where the item should\n   * be rendered.\n   */\n  @Input('cdkDragConstrainPosition') constrainPosition?: (point: Point, dragRef: DragRef) => Point;\n\n  /** Class to be added to the preview element. */\n  @Input('cdkDragPreviewClass') previewClass: string | string[];\n\n  /**\n   * Configures the place into which the preview of the item will be inserted. Can be configured\n   * globally through `CDK_DROP_LIST`. Possible values:\n   * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that\n   * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain\n   * its inherited styles.\n   * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that\n   * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be\n   * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors\n   * like `:nth-child` and some flexbox configurations.\n   * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.\n   * Same advantages and disadvantages as `parent`.\n   */\n  @Input('cdkDragPreviewContainer') previewContainer: PreviewContainer;\n\n  /** Emits when the user starts dragging the item. */\n  @Output('cdkDragStarted') readonly started: EventEmitter<CdkDragStart> =\n      new EventEmitter<CdkDragStart>();\n\n  /** Emits when the user has released a drag item, before any animations have started. */\n  @Output('cdkDragReleased') readonly released: EventEmitter<CdkDragRelease> =\n      new EventEmitter<CdkDragRelease>();\n\n  /** Emits when the user stops dragging an item in the container. */\n  @Output('cdkDragEnded') readonly ended: EventEmitter<CdkDragEnd> = new EventEmitter<CdkDragEnd>();\n\n  /** Emits when the user has moved the item into a new container. */\n  @Output('cdkDragEntered') readonly entered: EventEmitter<CdkDragEnter<any>> =\n      new EventEmitter<CdkDragEnter<any>>();\n\n  /** Emits when the user removes the item its container by dragging it into another container. */\n  @Output('cdkDragExited') readonly exited: EventEmitter<CdkDragExit<any>> =\n      new EventEmitter<CdkDragExit<any>>();\n\n  /** Emits when the user drops the item inside a container. */\n  @Output('cdkDragDropped') readonly dropped: EventEmitter<CdkDragDrop<any>> =\n      new EventEmitter<CdkDragDrop<any>>();\n\n  /**\n   * Emits as the user is dragging the item. Use with caution,\n   * because this event will fire for every pixel that the user has dragged.\n   */\n  @Output('cdkDragMoved')\n  readonly moved:  Observable<CdkDragMove<T>> =\n      new Observable((observer: Observer<CdkDragMove<T>>) => {\n        const subscription = this._dragRef.moved.pipe(map(movedEvent => ({\n          source: this,\n          pointerPosition: movedEvent.pointerPosition,\n          event: movedEvent.event,\n          delta: movedEvent.delta,\n          distance: movedEvent.distance\n        }))).subscribe(observer);\n\n        return () => {\n          subscription.unsubscribe();\n        };\n      });\n\n  constructor(\n      /** Element that the draggable is attached to. */\n      public element: ElementRef<HTMLElement>,\n      /** Droppable container that the draggable is a part of. */\n      @Inject(CDK_DROP_LIST) @Optional() @SkipSelf() public dropContainer: CdkDropList,\n      /**\n       * @deprecated `_document` parameter no longer being used and will be removed.\n       * @breaking-change 12.0.0\n       */\n      @Inject(DOCUMENT) _document: any, private _ngZone: NgZone,\n      private _viewContainerRef: ViewContainerRef,\n      @Optional() @Inject(CDK_DRAG_CONFIG) config: DragDropConfig,\n      @Optional() private _dir: Directionality, dragDrop: DragDrop,\n      private _changeDetectorRef: ChangeDetectorRef,\n      @Optional() @Self() @Inject(CDK_DRAG_HANDLE) private _selfHandle?: CdkDragHandle,\n      @Optional() @SkipSelf() @Inject(CDK_DRAG_PARENT) private _parentDrag?: CdkDrag) {\n    this._dragRef = dragDrop.createDrag(element, {\n      dragStartThreshold: config && config.dragStartThreshold != null ?\n          config.dragStartThreshold : 5,\n      pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null ?\n          config.pointerDirectionChangeThreshold : 5,\n      zIndex: config?.zIndex,\n    });\n    this._dragRef.data = this;\n\n    // We have to keep track of the drag instances in order to be able to match an element to\n    // a drag instance. We can't go through the global registry of `DragRef`, because the root\n    // element could be different.\n    CdkDrag._dragInstances.push(this);\n\n    if (config) {\n      this._assignDefaults(config);\n    }\n\n    // Note that usually the container is assigned when the drop list is picks up the item, but in\n    // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n    // where there are no items on the first change detection pass, but the items get picked up as\n    // soon as the user triggers another pass by dragging. This is a problem, because the item would\n    // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n    // is too late since the two modes save different kinds of information. We work around it by\n    // assigning the drop container both from here and the list.\n    if (dropContainer) {\n      this._dragRef._withDropContainer(dropContainer._dropListRef);\n      dropContainer.addItem(this);\n    }\n\n    this._syncInputs(this._dragRef);\n    this._handleEvents(this._dragRef);\n  }\n\n  /**\n   * Returns the element that is being used as a placeholder\n   * while the current element is being dragged.\n   */\n  getPlaceholderElement(): HTMLElement {\n    return this._dragRef.getPlaceholderElement();\n  }\n\n  /** Returns the root draggable element. */\n  getRootElement(): HTMLElement {\n    return this._dragRef.getRootElement();\n  }\n\n  /** Resets a standalone drag item to its initial position. */\n  reset(): void {\n    this._dragRef.reset();\n  }\n\n  /**\n   * Gets the pixel coordinates of the draggable outside of a drop container.\n   */\n  getFreeDragPosition(): {readonly x: number, readonly y: number} {\n    return this._dragRef.getFreeDragPosition();\n  }\n\n  ngAfterViewInit() {\n    // Normally this isn't in the zone, but it can cause major performance regressions for apps\n    // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n    this._ngZone.runOutsideAngular(() => {\n      // We need to wait for the zone to stabilize, in order for the reference\n      // element to be in the proper place in the DOM. This is mostly relevant\n      // for draggable elements inside portals since they get stamped out in\n      // their original DOM position and then they get transferred to the portal.\n      this._ngZone.onStable\n        .pipe(take(1), takeUntil(this._destroyed))\n        .subscribe(() => {\n          this._updateRootElement();\n          this._setupHandlesListener();\n\n          if (this.freeDragPosition) {\n            this._dragRef.setFreeDragPosition(this.freeDragPosition);\n          }\n        });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const rootSelectorChange = changes['rootElementSelector'];\n    const positionChange = changes['freeDragPosition'];\n\n    // We don't have to react to the first change since it's being\n    // handled in `ngAfterViewInit` where it needs to be deferred.\n    if (rootSelectorChange && !rootSelectorChange.firstChange) {\n      this._updateRootElement();\n    }\n\n    // Skip the first change since it's being handled in `ngAfterViewInit`.\n    if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n      this._dragRef.setFreeDragPosition(this.freeDragPosition);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.dropContainer) {\n      this.dropContainer.removeItem(this);\n    }\n\n    const index = CdkDrag._dragInstances.indexOf(this);\n    if (index > -1) {\n      CdkDrag._dragInstances.splice(index, 1);\n    }\n\n    // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n    this._ngZone.runOutsideAngular(() => {\n      this._destroyed.next();\n      this._destroyed.complete();\n      this._dragRef.dispose();\n    });\n  }\n\n  /** Syncs the root element with the `DragRef`. */\n  private _updateRootElement() {\n    const element = this.element.nativeElement;\n    const rootElement = this.rootElementSelector ?\n        getClosestMatchingAncestor(element, this.rootElementSelector) : element;\n\n    if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      assertElementNode(rootElement, 'cdkDrag');\n    }\n\n    this._dragRef.withRootElement(rootElement || element);\n  }\n\n  /** Gets the boundary element, based on the `boundaryElement` value. */\n  private _getBoundaryElement() {\n    const boundary = this.boundaryElement;\n\n    if (!boundary) {\n      return null;\n    }\n\n    if (typeof boundary === 'string') {\n      return getClosestMatchingAncestor(this.element.nativeElement, boundary);\n    }\n\n    const element = coerceElement(boundary);\n\n    if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n      !element.contains(this.element.nativeElement)) {\n      throw Error('Draggable element is not inside of the node passed into cdkDragBoundary.');\n    }\n\n    return element;\n  }\n\n  /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n  private _syncInputs(ref: DragRef<CdkDrag<T>>) {\n    ref.beforeStarted.subscribe(() => {\n      if (!ref.isDragging()) {\n        const dir = this._dir;\n        const dragStartDelay = this.dragStartDelay;\n        const placeholder = this._placeholderTemplate ? {\n          template: this._placeholderTemplate.templateRef,\n          context: this._placeholderTemplate.data,\n          viewContainer: this._viewContainerRef\n        } : null;\n        const preview = this._previewTemplate ? {\n          template: this._previewTemplate.templateRef,\n          context: this._previewTemplate.data,\n          matchSize: this._previewTemplate.matchSize,\n          viewContainer: this._viewContainerRef\n        } : null;\n\n        ref.disabled = this.disabled;\n        ref.lockAxis = this.lockAxis;\n        ref.dragStartDelay = (typeof dragStartDelay === 'object' && dragStartDelay) ?\n            dragStartDelay : coerceNumberProperty(dragStartDelay);\n        ref.constrainPosition = this.constrainPosition;\n        ref.previewClass = this.previewClass;\n        ref\n          .withBoundaryElement(this._getBoundaryElement())\n          .withPlaceholderTemplate(placeholder)\n          .withPreviewTemplate(preview)\n          .withPreviewContainer(this.previewContainer || 'global');\n\n        if (dir) {\n          ref.withDirection(dir.value);\n        }\n      }\n    });\n\n    // This only needs to be resolved once.\n    ref.beforeStarted.pipe(take(1)).subscribe(() => {\n      // If we managed to resolve a parent through DI, use it.\n      if (this._parentDrag) {\n        ref.withParent(this._parentDrag._dragRef);\n        return;\n      }\n\n      // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n      // the item was projected into another item by something like `ngTemplateOutlet`.\n      let parent = this.element.nativeElement.parentElement;\n      while (parent) {\n        // `classList` needs to be null checked, because IE doesn't have it on some elements.\n        if (parent.classList?.contains(DRAG_HOST_CLASS)) {\n          ref.withParent(CdkDrag._dragInstances.find(drag => {\n            return drag.element.nativeElement === parent;\n          })?._dragRef || null);\n          break;\n        }\n        parent = parent.parentElement;\n      }\n    });\n  }\n\n  /** Handles the events from the underlying `DragRef`. */\n  private _handleEvents(ref: DragRef<CdkDrag<T>>) {\n    ref.started.subscribe(() => {\n      this.started.emit({source: this});\n\n      // Since all of these events run outside of change detection,\n      // we need to ensure that everything is marked correctly.\n      this._changeDetectorRef.markForCheck();\n    });\n\n    ref.released.subscribe(() => {\n      this.released.emit({source: this});\n    });\n\n    ref.ended.subscribe(event => {\n      this.ended.emit({\n        source: this,\n        distance: event.distance,\n        dropPoint: event.dropPoint\n      });\n\n      // Since all of these events run outside of change detection,\n      // we need to ensure that everything is marked correctly.\n      this._changeDetectorRef.markForCheck();\n    });\n\n    ref.entered.subscribe(event => {\n      this.entered.emit({\n        container: event.container.data,\n        item: this,\n        currentIndex: event.currentIndex\n      });\n    });\n\n    ref.exited.subscribe(event => {\n      this.exited.emit({\n        container: event.container.data,\n        item: this\n      });\n    });\n\n    ref.dropped.subscribe(event => {\n      this.dropped.emit({\n        previousIndex: event.previousIndex,\n        currentIndex: event.currentIndex,\n        previousContainer: event.previousContainer.data,\n        container: event.container.data,\n        isPointerOverContainer: event.isPointerOverContainer,\n        item: this,\n        distance: event.distance,\n        dropPoint: event.dropPoint\n      });\n    });\n  }\n\n  /** Assigns the default input values based on a provided config object. */\n  private _assignDefaults(config: DragDropConfig) {\n    const {\n      lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled,\n      rootElementSelector, previewContainer\n    } = config;\n\n    this.disabled = draggingDisabled == null ? false : draggingDisabled;\n    this.dragStartDelay = dragStartDelay || 0;\n\n    if (lockAxis) {\n      this.lockAxis = lockAxis;\n    }\n\n    if (constrainPosition) {\n      this.constrainPosition = constrainPosition;\n    }\n\n    if (previewClass) {\n      this.previewClass = previewClass;\n    }\n\n    if (boundaryElement) {\n      this.boundaryElement = boundaryElement;\n    }\n\n    if (rootElementSelector) {\n      this.rootElementSelector = rootElementSelector;\n    }\n\n    if (previewContainer) {\n      this.previewContainer = previewContainer;\n    }\n  }\n\n  /** Sets up the listener that syncs the handles with the drag ref. */\n  private _setupHandlesListener() {\n    // Listen for any newly-added handles.\n    this._handles.changes.pipe(\n      startWith(this._handles),\n      // Sync the new handles with the DragRef.\n      tap((handles: QueryList<CdkDragHandle>) => {\n        const childHandleElements = handles\n          .filter(handle => handle._parentDrag === this)\n          .map(handle => handle.element);\n\n        // Usually handles are only allowed to be a descendant of the drag element, but if\n        // the consumer defined a different drag root, we should allow the drag element\n        // itself to be a handle too.\n        if (this._selfHandle && this.rootElementSelector) {\n          childHandleElements.push(this.element);\n        }\n\n        this._dragRef.withHandles(childHandleElements);\n      }),\n      // Listen if the state of any of the handles changes.\n      switchMap((handles: QueryList<CdkDragHandle>) => {\n        return merge(...handles.map(item => {\n          return item._stateChanges.pipe(startWith(item));\n        })) as Observable<CdkDragHandle>;\n      }),\n      takeUntil(this._destroyed)\n    ).subscribe(handleInstance => {\n      // Enabled/disable the handle that changed in the DragRef.\n      const dragRef = this._dragRef;\n      const handle = handleInstance.element.nativeElement;\n      handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n    });\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Gets the closest ancestor of an element that matches a selector. */\nfunction getClosestMatchingAncestor(element: HTMLElement, selector: string) {\n  let currentElement = element.parentElement as HTMLElement | null;\n\n  while (currentElement) {\n    // IE doesn't support `matches` so we have to fall back to `msMatchesSelector`.\n    if (currentElement.matches ? currentElement.matches(selector) :\n        (currentElement as any).msMatchesSelector(selector)) {\n      return currentElement;\n    }\n\n    currentElement = currentElement.parentElement;\n  }\n\n  return null;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {CdkDropList} from './directives/drop-list';\nimport {CdkDropListGroup} from './directives/drop-list-group';\nimport {CdkDrag} from './directives/drag';\nimport {CdkDragHandle} from './directives/drag-handle';\nimport {CdkDragPreview} from './directives/drag-preview';\nimport {CdkDragPlaceholder} from './directives/drag-placeholder';\nimport {DragDrop} from './drag-drop';\n\n@NgModule({\n  declarations: [\n    CdkDropList,\n    CdkDropListGroup,\n    CdkDrag,\n    CdkDragHandle,\n    CdkDragPreview,\n    CdkDragPlaceholder,\n  ],\n  exports: [\n    CdkScrollableModule,\n    CdkDropList,\n    CdkDropListGroup,\n    CdkDrag,\n    CdkDragHandle,\n    CdkDragPreview,\n    CdkDragPlaceholder,\n  ],\n  providers: [\n    DragDrop,\n  ]\n})\nexport class DragDropModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {DragDrop} from './drag-drop';\nexport {DragRef, DragRefConfig, Point, PreviewContainer} from './drag-ref';\nexport {DropListRef} from './drop-list-ref';\nexport {CDK_DRAG_PARENT} from './drag-parent';\n\nexport * from './drag-events';\nexport * from './drag-utils';\nexport * from './drag-drop-module';\nexport * from './drag-drop-registry';\n\nexport {CdkDropList, CDK_DROP_LIST} from './directives/drop-list';\nexport * from './directives/config';\nexport * from './directives/drop-list-group';\nexport * from './directives/drag';\nexport * from './directives/drag-handle';\nexport * from './directives/drag-preview';\nexport * from './directives/drag-placeholder';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {CdkDropListInternal as ɵangular_material_src_cdk_drag_drop_drag_drop_a} from './directives/drop-list';"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -14,5 +14,4 @@
  * retention of the class and its directive metadata.
  */
-import * as ɵngcc0 from '@angular/core';
 export declare const CDK_DRAG_HANDLE: InjectionToken<CdkDragHandle>;
 /** Handle that can be used to drag a CdkDrag instance. */
@@ -30,7 +29,3 @@
     ngOnDestroy(): void;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDragHandle, [null, { optional: true; skipSelf: true; }]>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDragHandle, "[cdkDragHandle]", never, { "disabled": "cdkDragHandleDisabled"; }, {}, never>;
 }
-
-//# sourceMappingURL=drag-handle.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { BooleanInput } from '@angular/cdk/coercion';
-import { ElementRef, InjectionToken, OnDestroy } from '@angular/core';
-import { Subject } from 'rxjs';
-/**
- * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as
- * alternative token to the actual `CdkDragHandle` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-export declare const CDK_DRAG_HANDLE: InjectionToken<CdkDragHandle>;
-/** Handle that can be used to drag a CdkDrag instance. */
-export declare class CdkDragHandle implements OnDestroy {
-    element: ElementRef<HTMLElement>;
-    /** Closest parent draggable instance. */
-    _parentDrag: {} | undefined;
-    /** Emits when the state of the handle has changed. */
-    readonly _stateChanges: Subject<CdkDragHandle>;
-    /** Whether starting to drag through this handle is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    constructor(element: ElementRef<HTMLElement>, parentDrag?: any);
-    ngOnDestroy(): void;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-handle.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-handle.d.ts","sources":["drag-handle.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { ElementRef, InjectionToken, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport declare const CDK_DRAG_HANDLE: InjectionToken<CdkDragHandle>;\n/** Handle that can be used to drag a CdkDrag instance. */\nexport declare class CdkDragHandle implements OnDestroy {\n    element: ElementRef<HTMLElement>;\n    /** Closest parent draggable instance. */\n    _parentDrag: {} | undefined;\n    /** Emits when the state of the handle has changed. */\n    readonly _stateChanges: Subject<CdkDragHandle>;\n    /** Whether starting to drag through this handle is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    constructor(element: ElementRef<HTMLElement>, parentDrag?: any);\n    ngOnDestroy(): void;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -12,5 +12,4 @@
  * retention of the class and its directive metadata.
  */
-import * as ɵngcc0 from '@angular/core';
 export declare const CDK_DRAG_PLACEHOLDER: InjectionToken<CdkDragPlaceholder<any>>;
 /**
@@ -23,7 +22,3 @@
     data: T;
     constructor(templateRef: TemplateRef<T>);
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDragPlaceholder<any>, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDragPlaceholder<any>, "ng-template[cdkDragPlaceholder]", never, { "data": "data"; }, {}, never>;
 }
-
-//# sourceMappingURL=drag-placeholder.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,24 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { TemplateRef, InjectionToken } from '@angular/core';
-/**
- * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as
- * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-export declare const CDK_DRAG_PLACEHOLDER: InjectionToken<CdkDragPlaceholder<any>>;
-/**
- * Element that will be used as a template for the placeholder of a CdkDrag when
- * it is being dragged. The placeholder is displayed in place of the element being dragged.
- */
-export declare class CdkDragPlaceholder<T = any> {
-    templateRef: TemplateRef<T>;
-    /** Context data to be added to the placeholder template instance. */
-    data: T;
-    constructor(templateRef: TemplateRef<T>);
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-placeholder.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-placeholder.d.ts","sources":["drag-placeholder.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { TemplateRef, InjectionToken } from '@angular/core';\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport declare const CDK_DRAG_PLACEHOLDER: InjectionToken<CdkDragPlaceholder<any>>;\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nexport declare class CdkDragPlaceholder<T = any> {\n    templateRef: TemplateRef<T>;\n    /** Context data to be added to the placeholder template instance. */\n    data: T;\n    constructor(templateRef: TemplateRef<T>);\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -13,5 +13,4 @@
  * retention of the class and its directive metadata.
  */
-import * as ɵngcc0 from '@angular/core';
 export declare const CDK_DRAG_PREVIEW: InjectionToken<CdkDragPreview<any>>;
 /**
@@ -29,7 +28,3 @@
     constructor(templateRef: TemplateRef<T>);
     static ngAcceptInputType_matchSize: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDragPreview<any>, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDragPreview<any>, "ng-template[cdkDragPreview]", never, { "matchSize": "matchSize"; "data": "data"; }, {}, never>;
 }
-
-//# sourceMappingURL=drag-preview.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,30 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { BooleanInput } from '@angular/cdk/coercion';
-import { InjectionToken, TemplateRef } from '@angular/core';
-/**
- * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as
- * alternative token to the actual `CdkDragPreview` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-export declare const CDK_DRAG_PREVIEW: InjectionToken<CdkDragPreview<any>>;
-/**
- * Element that will be used as a template for the preview
- * of a CdkDrag when it is being dragged.
- */
-export declare class CdkDragPreview<T = any> {
-    templateRef: TemplateRef<T>;
-    /** Context data to be added to the preview template instance. */
-    data: T;
-    /** Whether the preview should preserve the same size as the item that is being dragged. */
-    get matchSize(): boolean;
-    set matchSize(value: boolean);
-    private _matchSize;
-    constructor(templateRef: TemplateRef<T>);
-    static ngAcceptInputType_matchSize: BooleanInput;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag-preview.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-preview.d.ts","sources":["drag-preview.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { InjectionToken, TemplateRef } from '@angular/core';\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport declare const CDK_DRAG_PREVIEW: InjectionToken<CdkDragPreview<any>>;\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nexport declare class CdkDragPreview<T = any> {\n    templateRef: TemplateRef<T>;\n    /** Context data to be added to the preview template instance. */\n    data: T;\n    /** Whether the preview should preserve the same size as the item that is being dragged. */\n    get matchSize(): boolean;\n    set matchSize(value: boolean);\n    private _matchSize;\n    constructor(templateRef: TemplateRef<T>);\n    static ngAcceptInputType_matchSize: BooleanInput;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -19,5 +19,4 @@
 import { DragDropConfig, DragStartDelay, DragAxis } from './config';
 /** Element that can be moved inside a CdkDropList container. */
-import * as ɵngcc0 from '@angular/core';
 export declare class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {
     /** Element that the draggable is attached to. */
@@ -157,7 +156,3 @@
     private _setupHandlesListener;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDrag<any>, [null, { optional: true; skipSelf: true; }, null, null, null, { optional: true; }, { optional: true; }, null, null, { optional: true; self: true; }, { optional: true; skipSelf: true; }]>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDrag<any>, "[cdkDrag]", ["cdkDrag"], { "disabled": "cdkDragDisabled"; "dragStartDelay": "cdkDragStartDelay"; "lockAxis": "cdkDragLockAxis"; "constrainPosition": "cdkDragConstrainPosition"; "previewClass": "cdkDragPreviewClass"; "boundaryElement": "cdkDragBoundary"; "rootElementSelector": "cdkDragRootElement"; "previewContainer": "cdkDragPreviewContainer"; "data": "cdkDragData"; "freeDragPosition": "cdkDragFreeDragPosition"; }, { "started": "cdkDragStarted"; "released": "cdkDragReleased"; "ended": "cdkDragEnded"; "entered": "cdkDragEntered"; "exited": "cdkDragExited"; "dropped": "cdkDragDropped"; "moved": "cdkDragMoved"; }, ["_previewTemplate", "_placeholderTemplate", "_handles"]>;
 }
-
-//# sourceMappingURL=drag.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,158 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { Directionality } from '@angular/cdk/bidi';
-import { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy, QueryList, ViewContainerRef, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
-import { BooleanInput } from '@angular/cdk/coercion';
-import { Observable } from 'rxjs';
-import { CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragMove, CdkDragStart, CdkDragRelease } from '../drag-events';
-import { CdkDragHandle } from './drag-handle';
-import { CdkDragPlaceholder } from './drag-placeholder';
-import { CdkDragPreview } from './drag-preview';
-import { DragRef, Point, PreviewContainer } from '../drag-ref';
-import { CdkDropListInternal as CdkDropList } from './drop-list';
-import { DragDrop } from '../drag-drop';
-import { DragDropConfig, DragStartDelay, DragAxis } from './config';
-/** Element that can be moved inside a CdkDropList container. */
-export declare class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {
-    /** Element that the draggable is attached to. */
-    element: ElementRef<HTMLElement>;
-    /** Droppable container that the draggable is a part of. */
-    dropContainer: CdkDropList;
-    private _ngZone;
-    private _viewContainerRef;
-    private _dir;
-    private _changeDetectorRef;
-    private _selfHandle?;
-    private _parentDrag?;
-    private readonly _destroyed;
-    private static _dragInstances;
-    /** Reference to the underlying drag instance. */
-    _dragRef: DragRef<CdkDrag<T>>;
-    /** Elements that can be used to drag the draggable item. */
-    _handles: QueryList<CdkDragHandle>;
-    /** Element that will be used as a template to create the draggable item's preview. */
-    _previewTemplate: CdkDragPreview;
-    /** Template for placeholder element rendered to show where a draggable would be dropped. */
-    _placeholderTemplate: CdkDragPlaceholder;
-    /** Arbitrary data to attach to this drag instance. */
-    data: T;
-    /** Locks the position of the dragged element along the specified axis. */
-    lockAxis: DragAxis;
-    /**
-     * Selector that will be used to determine the root draggable element, starting from
-     * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful
-     * when trying to enable dragging on an element that you might not have access to.
-     */
-    rootElementSelector: string;
-    /**
-     * Node or selector that will be used to determine the element to which the draggable's
-     * position will be constrained. If a string is passed in, it'll be used as a selector that
-     * will be matched starting from the element's parent and going up the DOM until a match
-     * has been found.
-     */
-    boundaryElement: string | ElementRef<HTMLElement> | HTMLElement;
-    /**
-     * Amount of milliseconds to wait after the user has put their
-     * pointer down before starting to drag the element.
-     */
-    dragStartDelay: DragStartDelay;
-    /**
-     * Sets the position of a `CdkDrag` that is outside of a drop container.
-     * Can be used to restore the element's position for a returning user.
-     */
-    freeDragPosition: {
-        x: number;
-        y: number;
-    };
-    /** Whether starting to drag this element is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    /**
-     * Function that can be used to customize the logic of how the position of the drag item
-     * is limited while it's being dragged. Gets called with a point containing the current position
-     * of the user's pointer on the page and should return a point describing where the item should
-     * be rendered.
-     */
-    constrainPosition?: (point: Point, dragRef: DragRef) => Point;
-    /** Class to be added to the preview element. */
-    previewClass: string | string[];
-    /**
-     * Configures the place into which the preview of the item will be inserted. Can be configured
-     * globally through `CDK_DROP_LIST`. Possible values:
-     * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that
-     * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain
-     * its inherited styles.
-     * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that
-     * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be
-     * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors
-     * like `:nth-child` and some flexbox configurations.
-     * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.
-     * Same advantages and disadvantages as `parent`.
-     */
-    previewContainer: PreviewContainer;
-    /** Emits when the user starts dragging the item. */
-    readonly started: EventEmitter<CdkDragStart>;
-    /** Emits when the user has released a drag item, before any animations have started. */
-    readonly released: EventEmitter<CdkDragRelease>;
-    /** Emits when the user stops dragging an item in the container. */
-    readonly ended: EventEmitter<CdkDragEnd>;
-    /** Emits when the user has moved the item into a new container. */
-    readonly entered: EventEmitter<CdkDragEnter<any>>;
-    /** Emits when the user removes the item its container by dragging it into another container. */
-    readonly exited: EventEmitter<CdkDragExit<any>>;
-    /** Emits when the user drops the item inside a container. */
-    readonly dropped: EventEmitter<CdkDragDrop<any>>;
-    /**
-     * Emits as the user is dragging the item. Use with caution,
-     * because this event will fire for every pixel that the user has dragged.
-     */
-    readonly moved: Observable<CdkDragMove<T>>;
-    constructor(
-    /** Element that the draggable is attached to. */
-    element: ElementRef<HTMLElement>, 
-    /** Droppable container that the draggable is a part of. */
-    dropContainer: CdkDropList, 
-    /**
-     * @deprecated `_document` parameter no longer being used and will be removed.
-     * @breaking-change 12.0.0
-     */
-    _document: any, _ngZone: NgZone, _viewContainerRef: ViewContainerRef, config: DragDropConfig, _dir: Directionality, dragDrop: DragDrop, _changeDetectorRef: ChangeDetectorRef, _selfHandle?: CdkDragHandle | undefined, _parentDrag?: CdkDrag<any> | undefined);
-    /**
-     * Returns the element that is being used as a placeholder
-     * while the current element is being dragged.
-     */
-    getPlaceholderElement(): HTMLElement;
-    /** Returns the root draggable element. */
-    getRootElement(): HTMLElement;
-    /** Resets a standalone drag item to its initial position. */
-    reset(): void;
-    /**
-     * Gets the pixel coordinates of the draggable outside of a drop container.
-     */
-    getFreeDragPosition(): {
-        readonly x: number;
-        readonly y: number;
-    };
-    ngAfterViewInit(): void;
-    ngOnChanges(changes: SimpleChanges): void;
-    ngOnDestroy(): void;
-    /** Syncs the root element with the `DragRef`. */
-    private _updateRootElement;
-    /** Gets the boundary element, based on the `boundaryElement` value. */
-    private _getBoundaryElement;
-    /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */
-    private _syncInputs;
-    /** Handles the events from the underlying `DragRef`. */
-    private _handleEvents;
-    /** Assigns the default input values based on a provided config object. */
-    private _assignDefaults;
-    /** Sets up the listener that syncs the handles with the drag ref. */
-    private _setupHandlesListener;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drag.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag.d.ts","sources":["drag.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directionality } from '@angular/cdk/bidi';\nimport { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy, QueryList, ViewContainerRef, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { Observable } from 'rxjs';\nimport { CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragMove, CdkDragStart, CdkDragRelease } from '../drag-events';\nimport { CdkDragHandle } from './drag-handle';\nimport { CdkDragPlaceholder } from './drag-placeholder';\nimport { CdkDragPreview } from './drag-preview';\nimport { DragRef, Point, PreviewContainer } from '../drag-ref';\nimport { CdkDropListInternal as CdkDropList } from './drop-list';\nimport { DragDrop } from '../drag-drop';\nimport { DragDropConfig, DragStartDelay, DragAxis } from './config';\n/** Element that can be moved inside a CdkDropList container. */\nexport declare class CdkDrag<T = any> implements AfterViewInit, OnChanges, OnDestroy {\n    /** Element that the draggable is attached to. */\n    element: ElementRef<HTMLElement>;\n    /** Droppable container that the draggable is a part of. */\n    dropContainer: CdkDropList;\n    private _ngZone;\n    private _viewContainerRef;\n    private _dir;\n    private _changeDetectorRef;\n    private _selfHandle?;\n    private _parentDrag?;\n    private readonly _destroyed;\n    private static _dragInstances;\n    /** Reference to the underlying drag instance. */\n    _dragRef: DragRef<CdkDrag<T>>;\n    /** Elements that can be used to drag the draggable item. */\n    _handles: QueryList<CdkDragHandle>;\n    /** Element that will be used as a template to create the draggable item's preview. */\n    _previewTemplate: CdkDragPreview;\n    /** Template for placeholder element rendered to show where a draggable would be dropped. */\n    _placeholderTemplate: CdkDragPlaceholder;\n    /** Arbitrary data to attach to this drag instance. */\n    data: T;\n    /** Locks the position of the dragged element along the specified axis. */\n    lockAxis: DragAxis;\n    /**\n     * Selector that will be used to determine the root draggable element, starting from\n     * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful\n     * when trying to enable dragging on an element that you might not have access to.\n     */\n    rootElementSelector: string;\n    /**\n     * Node or selector that will be used to determine the element to which the draggable's\n     * position will be constrained. If a string is passed in, it'll be used as a selector that\n     * will be matched starting from the element's parent and going up the DOM until a match\n     * has been found.\n     */\n    boundaryElement: string | ElementRef<HTMLElement> | HTMLElement;\n    /**\n     * Amount of milliseconds to wait after the user has put their\n     * pointer down before starting to drag the element.\n     */\n    dragStartDelay: DragStartDelay;\n    /**\n     * Sets the position of a `CdkDrag` that is outside of a drop container.\n     * Can be used to restore the element's position for a returning user.\n     */\n    freeDragPosition: {\n        x: number;\n        y: number;\n    };\n    /** Whether starting to drag this element is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    /**\n     * Function that can be used to customize the logic of how the position of the drag item\n     * is limited while it's being dragged. Gets called with a point containing the current position\n     * of the user's pointer on the page and should return a point describing where the item should\n     * be rendered.\n     */\n    constrainPosition?: (point: Point, dragRef: DragRef) => Point;\n    /** Class to be added to the preview element. */\n    previewClass: string | string[];\n    /**\n     * Configures the place into which the preview of the item will be inserted. Can be configured\n     * globally through `CDK_DROP_LIST`. Possible values:\n     * - `global` - Preview will be inserted at the bottom of the `<body>`. The advantage is that\n     * you don't have to worry about `overflow: hidden` or `z-index`, but the item won't retain\n     * its inherited styles.\n     * - `parent` - Preview will be inserted into the parent of the drag item. The advantage is that\n     * inherited styles will be preserved, but it may be clipped by `overflow: hidden` or not be\n     * visible due to `z-index`. Furthermore, the preview is going to have an effect over selectors\n     * like `:nth-child` and some flexbox configurations.\n     * - `ElementRef<HTMLElement> | HTMLElement` - Preview will be inserted into a specific element.\n     * Same advantages and disadvantages as `parent`.\n     */\n    previewContainer: PreviewContainer;\n    /** Emits when the user starts dragging the item. */\n    readonly started: EventEmitter<CdkDragStart>;\n    /** Emits when the user has released a drag item, before any animations have started. */\n    readonly released: EventEmitter<CdkDragRelease>;\n    /** Emits when the user stops dragging an item in the container. */\n    readonly ended: EventEmitter<CdkDragEnd>;\n    /** Emits when the user has moved the item into a new container. */\n    readonly entered: EventEmitter<CdkDragEnter<any>>;\n    /** Emits when the user removes the item its container by dragging it into another container. */\n    readonly exited: EventEmitter<CdkDragExit<any>>;\n    /** Emits when the user drops the item inside a container. */\n    readonly dropped: EventEmitter<CdkDragDrop<any>>;\n    /**\n     * Emits as the user is dragging the item. Use with caution,\n     * because this event will fire for every pixel that the user has dragged.\n     */\n    readonly moved: Observable<CdkDragMove<T>>;\n    constructor(\n    /** Element that the draggable is attached to. */\n    element: ElementRef<HTMLElement>, \n    /** Droppable container that the draggable is a part of. */\n    dropContainer: CdkDropList, \n    /**\n     * @deprecated `_document` parameter no longer being used and will be removed.\n     * @breaking-change 12.0.0\n     */\n    _document: any, _ngZone: NgZone, _viewContainerRef: ViewContainerRef, config: DragDropConfig, _dir: Directionality, dragDrop: DragDrop, _changeDetectorRef: ChangeDetectorRef, _selfHandle?: CdkDragHandle | undefined, _parentDrag?: CdkDrag<any> | undefined);\n    /**\n     * Returns the element that is being used as a placeholder\n     * while the current element is being dragged.\n     */\n    getPlaceholderElement(): HTMLElement;\n    /** Returns the root draggable element. */\n    getRootElement(): HTMLElement;\n    /** Resets a standalone drag item to its initial position. */\n    reset(): void;\n    /**\n     * Gets the pixel coordinates of the draggable outside of a drop container.\n     */\n    getFreeDragPosition(): {\n        readonly x: number;\n        readonly y: number;\n    };\n    ngAfterViewInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnDestroy(): void;\n    /** Syncs the root element with the `DragRef`. */\n    private _updateRootElement;\n    /** Gets the boundary element, based on the `boundaryElement` value. */\n    private _getBoundaryElement;\n    /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n    private _syncInputs;\n    /** Handles the events from the underlying `DragRef`. */\n    private _handleEvents;\n    /** Assigns the default input values based on a provided config object. */\n    private _assignDefaults;\n    /** Sets up the listener that syncs the handles with the drag ref. */\n    private _setupHandlesListener;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -13,5 +13,4 @@
  * retention of the class and its directive metadata.
  */
-import * as ɵngcc0 from '@angular/core';
 export declare const CDK_DROP_LIST_GROUP: InjectionToken<CdkDropListGroup<unknown>>;
 /**
@@ -30,7 +29,3 @@
     ngOnDestroy(): void;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDropListGroup<any>, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDropListGroup<any>, "[cdkDropListGroup]", ["cdkDropListGroup"], { "disabled": "cdkDropListGroupDisabled"; }, {}, never>;
 }
-
-//# sourceMappingURL=drop-list-group.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { OnDestroy, InjectionToken } from '@angular/core';
-import { BooleanInput } from '@angular/cdk/coercion';
-/**
- * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as
- * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-export declare const CDK_DROP_LIST_GROUP: InjectionToken<CdkDropListGroup<unknown>>;
-/**
- * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`
- * elements that are placed inside a `cdkDropListGroup` will be connected to each other
- * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input
- * from `cdkDropList`.
- */
-export declare class CdkDropListGroup<T> implements OnDestroy {
-    /** Drop lists registered inside the group. */
-    readonly _items: Set<T>;
-    /** Whether starting a dragging sequence from inside this group is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    ngOnDestroy(): void;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list-group.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drop-list-group.d.ts","sources":["drop-list-group.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { OnDestroy, InjectionToken } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport declare const CDK_DROP_LIST_GROUP: InjectionToken<CdkDropListGroup<unknown>>;\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nexport declare class CdkDropListGroup<T> implements OnDestroy {\n    /** Drop lists registered inside the group. */\n    readonly _items: Set<T>;\n    /** Whether starting a dragging sequence from inside this group is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    ngOnDestroy(): void;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -21,5 +21,4 @@
  * @docs-private
  */
-import * as ɵngcc0 from '@angular/core';
 export interface CdkDropListInternal extends CdkDropList {
 }
@@ -123,7 +122,3 @@
     static ngAcceptInputType_autoScrollDisabled: BooleanInput;
     static ngAcceptInputType_autoScrollStep: NumberInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<CdkDropList<any>, [null, null, null, null, { optional: true; }, { optional: true; skipSelf: true; }, { optional: true; }]>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<CdkDropList<any>, "[cdkDropList], cdk-drop-list", ["cdkDropList"], { "connectedTo": "cdkDropListConnectedTo"; "id": "id"; "enterPredicate": "cdkDropListEnterPredicate"; "sortPredicate": "cdkDropListSortPredicate"; "disabled": "cdkDropListDisabled"; "sortingDisabled": "cdkDropListSortingDisabled"; "autoScrollDisabled": "cdkDropListAutoScrollDisabled"; "orientation": "cdkDropListOrientation"; "lockAxis": "cdkDropListLockAxis"; "data": "cdkDropListData"; "autoScrollStep": "cdkDropListAutoScrollStep"; }, { "dropped": "cdkDropListDropped"; "entered": "cdkDropListEntered"; "exited": "cdkDropListExited"; "sorted": "cdkDropListSorted"; }, never>;
 }
-
-//# sourceMappingURL=drop-list.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,124 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
-import { ElementRef, EventEmitter, OnDestroy, ChangeDetectorRef, InjectionToken } from '@angular/core';
-import { Directionality } from '@angular/cdk/bidi';
-import { ScrollDispatcher } from '@angular/cdk/scrolling';
-import { CdkDrag } from './drag';
-import { CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent } from '../drag-events';
-import { CdkDropListGroup } from './drop-list-group';
-import { DropListRef } from '../drop-list-ref';
-import { DragDrop } from '../drag-drop';
-import { DropListOrientation, DragAxis, DragDropConfig } from './config';
-/**
- * Internal compile-time-only representation of a `CdkDropList`.
- * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.
- * @docs-private
- */
-export interface CdkDropListInternal extends CdkDropList {
-}
-/**
- * Injection token that can be used to reference instances of `CdkDropList`. It serves as
- * alternative token to the actual `CdkDropList` class which could cause unnecessary
- * retention of the class and its directive metadata.
- */
-export declare const CDK_DROP_LIST: InjectionToken<CdkDropList<any>>;
-/** Container that wraps a set of draggable items. */
-export declare class CdkDropList<T = any> implements OnDestroy {
-    /** Element that the drop list is attached to. */
-    element: ElementRef<HTMLElement>;
-    private _changeDetectorRef;
-    private _scrollDispatcher;
-    private _dir?;
-    private _group?;
-    /** Emits when the list has been destroyed. */
-    private readonly _destroyed;
-    /** Whether the element's scrollable parents have been resolved. */
-    private _scrollableParentsResolved;
-    /** Keeps track of the drop lists that are currently on the page. */
-    private static _dropLists;
-    /** Reference to the underlying drop list instance. */
-    _dropListRef: DropListRef<CdkDropList<T>>;
-    /**
-     * Other draggable containers that this container is connected to and into which the
-     * container's items can be transferred. Can either be references to other drop containers,
-     * or their unique IDs.
-     */
-    connectedTo: (CdkDropList | string)[] | CdkDropList | string;
-    /** Arbitrary data to attach to this container. */
-    data: T;
-    /** Direction in which the list is oriented. */
-    orientation: DropListOrientation;
-    /**
-     * Unique ID for the drop zone. Can be used as a reference
-     * in the `connectedTo` of another `CdkDropList`.
-     */
-    id: string;
-    /** Locks the position of the draggable elements inside the container along the specified axis. */
-    lockAxis: DragAxis;
-    /** Whether starting a dragging sequence from this container is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    /** Whether sorting within this drop list is disabled. */
-    sortingDisabled: boolean;
-    /**
-     * Function that is used to determine whether an item
-     * is allowed to be moved into a drop container.
-     */
-    enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean;
-    /** Functions that is used to determine whether an item can be sorted into a particular index. */
-    sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean;
-    /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */
-    autoScrollDisabled: boolean;
-    /** Number of pixels to scroll for each frame when auto-scrolling an element. */
-    autoScrollStep: number;
-    /** Emits when the user drops an item inside the container. */
-    readonly dropped: EventEmitter<CdkDragDrop<T, any>>;
-    /**
-     * Emits when the user has moved a new drag item into this container.
-     */
-    readonly entered: EventEmitter<CdkDragEnter<T>>;
-    /**
-     * Emits when the user removes an item from the container
-     * by dragging it into another container.
-     */
-    readonly exited: EventEmitter<CdkDragExit<T>>;
-    /** Emits as the user is swapping items while actively dragging. */
-    readonly sorted: EventEmitter<CdkDragSortEvent<T>>;
-    /**
-     * Keeps track of the items that are registered with this container. Historically we used to
-     * do this with a `ContentChildren` query, however queries don't handle transplanted views very
-     * well which means that we can't handle cases like dragging the headers of a `mat-table`
-     * correctly. What we do instead is to have the items register themselves with the container
-     * and then we sort them based on their position in the DOM.
-     */
-    private _unsortedItems;
-    constructor(
-    /** Element that the drop list is attached to. */
-    element: ElementRef<HTMLElement>, dragDrop: DragDrop, _changeDetectorRef: ChangeDetectorRef, _scrollDispatcher: ScrollDispatcher, _dir?: Directionality | undefined, _group?: CdkDropListGroup<CdkDropList<any>> | undefined, config?: DragDropConfig);
-    /** Registers an items with the drop list. */
-    addItem(item: CdkDrag): void;
-    /** Removes an item from the drop list. */
-    removeItem(item: CdkDrag): void;
-    /** Gets the registered items in the list, sorted by their position in the DOM. */
-    getSortedItems(): CdkDrag[];
-    ngOnDestroy(): void;
-    /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */
-    private _setupInputSyncSubscription;
-    /** Handles events from the underlying DropListRef. */
-    private _handleEvents;
-    /** Assigns the default input values based on a provided config object. */
-    private _assignDefaults;
-    /** Syncs up the registered drag items with underlying drop list ref. */
-    private _syncItemsWithRef;
-    static ngAcceptInputType_disabled: BooleanInput;
-    static ngAcceptInputType_sortingDisabled: BooleanInput;
-    static ngAcceptInputType_autoScrollDisabled: BooleanInput;
-    static ngAcceptInputType_autoScrollStep: NumberInput;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/directives/drop-list.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drop-list.d.ts","sources":["drop-list.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { ElementRef, EventEmitter, OnDestroy, ChangeDetectorRef, InjectionToken } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { CdkDrag } from './drag';\nimport { CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent } from '../drag-events';\nimport { CdkDropListGroup } from './drop-list-group';\nimport { DropListRef } from '../drop-list-ref';\nimport { DragDrop } from '../drag-drop';\nimport { DropListOrientation, DragAxis, DragDropConfig } from './config';\n/**\n * Internal compile-time-only representation of a `CdkDropList`.\n * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.\n * @docs-private\n */\nexport interface CdkDropListInternal extends CdkDropList {\n}\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport declare const CDK_DROP_LIST: InjectionToken<CdkDropList<any>>;\n/** Container that wraps a set of draggable items. */\nexport declare class CdkDropList<T = any> implements OnDestroy {\n    /** Element that the drop list is attached to. */\n    element: ElementRef<HTMLElement>;\n    private _changeDetectorRef;\n    private _scrollDispatcher;\n    private _dir?;\n    private _group?;\n    /** Emits when the list has been destroyed. */\n    private readonly _destroyed;\n    /** Whether the element's scrollable parents have been resolved. */\n    private _scrollableParentsResolved;\n    /** Keeps track of the drop lists that are currently on the page. */\n    private static _dropLists;\n    /** Reference to the underlying drop list instance. */\n    _dropListRef: DropListRef<CdkDropList<T>>;\n    /**\n     * Other draggable containers that this container is connected to and into which the\n     * container's items can be transferred. Can either be references to other drop containers,\n     * or their unique IDs.\n     */\n    connectedTo: (CdkDropList | string)[] | CdkDropList | string;\n    /** Arbitrary data to attach to this container. */\n    data: T;\n    /** Direction in which the list is oriented. */\n    orientation: DropListOrientation;\n    /**\n     * Unique ID for the drop zone. Can be used as a reference\n     * in the `connectedTo` of another `CdkDropList`.\n     */\n    id: string;\n    /** Locks the position of the draggable elements inside the container along the specified axis. */\n    lockAxis: DragAxis;\n    /** Whether starting a dragging sequence from this container is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    /** Whether sorting within this drop list is disabled. */\n    sortingDisabled: boolean;\n    /**\n     * Function that is used to determine whether an item\n     * is allowed to be moved into a drop container.\n     */\n    enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean;\n    /** Functions that is used to determine whether an item can be sorted into a particular index. */\n    sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean;\n    /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */\n    autoScrollDisabled: boolean;\n    /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n    autoScrollStep: number;\n    /** Emits when the user drops an item inside the container. */\n    readonly dropped: EventEmitter<CdkDragDrop<T, any>>;\n    /**\n     * Emits when the user has moved a new drag item into this container.\n     */\n    readonly entered: EventEmitter<CdkDragEnter<T>>;\n    /**\n     * Emits when the user removes an item from the container\n     * by dragging it into another container.\n     */\n    readonly exited: EventEmitter<CdkDragExit<T>>;\n    /** Emits as the user is swapping items while actively dragging. */\n    readonly sorted: EventEmitter<CdkDragSortEvent<T>>;\n    /**\n     * Keeps track of the items that are registered with this container. Historically we used to\n     * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n     * well which means that we can't handle cases like dragging the headers of a `mat-table`\n     * correctly. What we do instead is to have the items register themselves with the container\n     * and then we sort them based on their position in the DOM.\n     */\n    private _unsortedItems;\n    constructor(\n    /** Element that the drop list is attached to. */\n    element: ElementRef<HTMLElement>, dragDrop: DragDrop, _changeDetectorRef: ChangeDetectorRef, _scrollDispatcher: ScrollDispatcher, _dir?: Directionality | undefined, _group?: CdkDropListGroup<CdkDropList<any>> | undefined, config?: DragDropConfig);\n    /** Registers an items with the drop list. */\n    addItem(item: CdkDrag): void;\n    /** Removes an item from the drop list. */\n    removeItem(item: CdkDrag): void;\n    /** Gets the registered items in the list, sorted by their position in the DOM. */\n    getSortedItems(): CdkDrag[];\n    ngOnDestroy(): void;\n    /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n    private _setupInputSyncSubscription;\n    /** Handles events from the underlying DropListRef. */\n    private _handleEvents;\n    /** Assigns the default input values based on a provided config object. */\n    private _assignDefaults;\n    /** Syncs up the registered drag items with underlying drop list ref. */\n    private _syncItemsWithRef;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_sortingDisabled: BooleanInput;\n    static ngAcceptInputType_autoScrollDisabled: BooleanInput;\n    static ngAcceptInputType_autoScrollStep: NumberInput;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -6,17 +6,4 @@
  * found in the LICENSE file at https://angular.io/license
  */
-import * as ɵngcc0 from '@angular/core';
-import * as ɵngcc1 from './directives/drop-list';
-import * as ɵngcc2 from './directives/drop-list-group';
-import * as ɵngcc3 from './directives/drag';
-import * as ɵngcc4 from './directives/drag-handle';
-import * as ɵngcc5 from './directives/drag-preview';
-import * as ɵngcc6 from './directives/drag-placeholder';
-import * as ɵngcc7 from '@angular/cdk/scrolling';
 export declare class DragDropModule {
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<DragDropModule, never>;
-    static ɵmod: ɵngcc0.ɵɵNgModuleDeclaration<DragDropModule, [typeof ɵngcc1.CdkDropList, typeof ɵngcc2.CdkDropListGroup, typeof ɵngcc3.CdkDrag, typeof ɵngcc4.CdkDragHandle, typeof ɵngcc5.CdkDragPreview, typeof ɵngcc6.CdkDragPlaceholder], never, [typeof ɵngcc7.CdkScrollableModule, typeof ɵngcc1.CdkDropList, typeof ɵngcc2.CdkDropListGroup, typeof ɵngcc3.CdkDrag, typeof ɵngcc4.CdkDragHandle, typeof ɵngcc5.CdkDragPreview, typeof ɵngcc6.CdkDragPlaceholder]>;
-    static ɵinj: ɵngcc0.ɵɵInjectorDeclaration<DragDropModule>;
 }
-
-//# sourceMappingURL=drag-drop-module.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-export declare class DragDropModule {
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-module.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-drop-module.d.ts","sources":["drag-drop-module.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AACA;;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport declare class DragDropModule {\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -13,5 +13,4 @@
  * @docs-private
  */
-import * as ɵngcc0 from '@angular/core';
 export declare class DragDropRegistry<I extends {
     isDragging(): boolean;
@@ -85,6 +84,3 @@
     /** Clears out the global event listeners from the `document`. */
     private _clearGlobalListeners;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<DragDropRegistry<any, any>, never>;
 }
-
-//# sourceMappingURL=drag-drop-registry.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,86 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { NgZone, OnDestroy } from '@angular/core';
-import { Observable, Subject } from 'rxjs';
-/**
- * Service that keeps track of all the drag item and drop container
- * instances, and manages global event listeners on the `document`.
- * @docs-private
- */
-export declare class DragDropRegistry<I extends {
-    isDragging(): boolean;
-}, C> implements OnDestroy {
-    private _ngZone;
-    private _document;
-    /** Registered drop container instances. */
-    private _dropInstances;
-    /** Registered drag item instances. */
-    private _dragInstances;
-    /** Drag item instances that are currently being dragged. */
-    private _activeDragInstances;
-    /** Keeps track of the event listeners that we've bound to the `document`. */
-    private _globalListeners;
-    /**
-     * Predicate function to check if an item is being dragged.  Moved out into a property,
-     * because it'll be called a lot and we don't want to create a new function every time.
-     */
-    private _draggingPredicate;
-    /**
-     * Emits the `touchmove` or `mousemove` events that are dispatched
-     * while the user is dragging a drag item instance.
-     */
-    readonly pointerMove: Subject<TouchEvent | MouseEvent>;
-    /**
-     * Emits the `touchend` or `mouseup` events that are dispatched
-     * while the user is dragging a drag item instance.
-     */
-    readonly pointerUp: Subject<TouchEvent | MouseEvent>;
-    /**
-     * Emits when the viewport has been scrolled while the user is dragging an item.
-     * @deprecated To be turned into a private member. Use the `scrolled` method instead.
-     * @breaking-change 13.0.0
-     */
-    readonly scroll: Subject<Event>;
-    constructor(_ngZone: NgZone, _document: any);
-    /** Adds a drop container to the registry. */
-    registerDropContainer(drop: C): void;
-    /** Adds a drag item instance to the registry. */
-    registerDragItem(drag: I): void;
-    /** Removes a drop container from the registry. */
-    removeDropContainer(drop: C): void;
-    /** Removes a drag item instance from the registry. */
-    removeDragItem(drag: I): void;
-    /**
-     * Starts the dragging sequence for a drag instance.
-     * @param drag Drag instance which is being dragged.
-     * @param event Event that initiated the dragging.
-     */
-    startDragging(drag: I, event: TouchEvent | MouseEvent): void;
-    /** Stops dragging a drag item instance. */
-    stopDragging(drag: I): void;
-    /** Gets whether a drag item instance is currently being dragged. */
-    isDragging(drag: I): boolean;
-    /**
-     * Gets a stream that will emit when any element on the page is scrolled while an item is being
-     * dragged.
-     * @param shadowRoot Optional shadow root that the current dragging sequence started from.
-     *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can
-     *   be used to include an additional top-level listener at the shadow root level.
-     */
-    scrolled(shadowRoot?: DocumentOrShadowRoot | null): Observable<Event>;
-    ngOnDestroy(): void;
-    /**
-     * Event listener that will prevent the default browser action while the user is dragging.
-     * @param event Event whose default action should be prevented.
-     */
-    private _preventDefaultWhileDragging;
-    /** Event listener for `touchmove` that is bound even if no dragging is happening. */
-    private _persistentTouchmoveListener;
-    /** Clears out the global event listeners from the `document`. */
-    private _clearGlobalListeners;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop-registry.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-drop-registry.d.ts","sources":["drag-drop-registry.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgZone, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\nexport declare class DragDropRegistry<I extends {\n    isDragging(): boolean;\n}, C> implements OnDestroy {\n    private _ngZone;\n    private _document;\n    /** Registered drop container instances. */\n    private _dropInstances;\n    /** Registered drag item instances. */\n    private _dragInstances;\n    /** Drag item instances that are currently being dragged. */\n    private _activeDragInstances;\n    /** Keeps track of the event listeners that we've bound to the `document`. */\n    private _globalListeners;\n    /**\n     * Predicate function to check if an item is being dragged.  Moved out into a property,\n     * because it'll be called a lot and we don't want to create a new function every time.\n     */\n    private _draggingPredicate;\n    /**\n     * Emits the `touchmove` or `mousemove` events that are dispatched\n     * while the user is dragging a drag item instance.\n     */\n    readonly pointerMove: Subject<TouchEvent | MouseEvent>;\n    /**\n     * Emits the `touchend` or `mouseup` events that are dispatched\n     * while the user is dragging a drag item instance.\n     */\n    readonly pointerUp: Subject<TouchEvent | MouseEvent>;\n    /**\n     * Emits when the viewport has been scrolled while the user is dragging an item.\n     * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n     * @breaking-change 13.0.0\n     */\n    readonly scroll: Subject<Event>;\n    constructor(_ngZone: NgZone, _document: any);\n    /** Adds a drop container to the registry. */\n    registerDropContainer(drop: C): void;\n    /** Adds a drag item instance to the registry. */\n    registerDragItem(drag: I): void;\n    /** Removes a drop container from the registry. */\n    removeDropContainer(drop: C): void;\n    /** Removes a drag item instance from the registry. */\n    removeDragItem(drag: I): void;\n    /**\n     * Starts the dragging sequence for a drag instance.\n     * @param drag Drag instance which is being dragged.\n     * @param event Event that initiated the dragging.\n     */\n    startDragging(drag: I, event: TouchEvent | MouseEvent): void;\n    /** Stops dragging a drag item instance. */\n    stopDragging(drag: I): void;\n    /** Gets whether a drag item instance is currently being dragged. */\n    isDragging(drag: I): boolean;\n    /**\n     * Gets a stream that will emit when any element on the page is scrolled while an item is being\n     * dragged.\n     * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n     *   Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n     *   be used to include an additional top-level listener at the shadow root level.\n     */\n    scrolled(shadowRoot?: DocumentOrShadowRoot | null): Observable<Event>;\n    ngOnDestroy(): void;\n    /**\n     * Event listener that will prevent the default browser action while the user is dragging.\n     * @param event Event whose default action should be prevented.\n     */\n    private _preventDefaultWhileDragging;\n    /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n    private _persistentTouchmoveListener;\n    /** Clears out the global event listeners from the `document`. */\n    private _clearGlobalListeners;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -14,5 +14,4 @@
  * Service that allows for drag-and-drop functionality to be attached to DOM elements.
  */
-import * as ɵngcc0 from '@angular/core';
 export declare class DragDrop {
     private _document;
@@ -32,6 +31,3 @@
      */
     createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T>;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<DragDrop, never>;
 }
-
-//# sourceMappingURL=drag-drop.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { NgZone, ElementRef } from '@angular/core';
-import { ViewportRuler } from '@angular/cdk/scrolling';
-import { DragRef, DragRefConfig } from './drag-ref';
-import { DropListRef } from './drop-list-ref';
-import { DragDropRegistry } from './drag-drop-registry';
-/**
- * Service that allows for drag-and-drop functionality to be attached to DOM elements.
- */
-export declare class DragDrop {
-    private _document;
-    private _ngZone;
-    private _viewportRuler;
-    private _dragDropRegistry;
-    constructor(_document: any, _ngZone: NgZone, _viewportRuler: ViewportRuler, _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>);
-    /**
-     * Turns an element into a draggable item.
-     * @param element Element to which to attach the dragging functionality.
-     * @param config Object used to configure the dragging behavior.
-     */
-    createDrag<T = any>(element: ElementRef<HTMLElement> | HTMLElement, config?: DragRefConfig): DragRef<T>;
-    /**
-     * Turns an element into a drop list.
-     * @param element Element to which to attach the drop list functionality.
-     */
-    createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T>;
-}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/drag-drop.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"drag-drop.d.ts","sources":["drag-drop.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgZone, ElementRef } from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DragRef, DragRefConfig } from './drag-ref';\nimport { DropListRef } from './drop-list-ref';\nimport { DragDropRegistry } from './drag-drop-registry';\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nexport declare class DragDrop {\n    private _document;\n    private _ngZone;\n    private _viewportRuler;\n    private _dragDropRegistry;\n    constructor(_document: any, _ngZone: NgZone, _viewportRuler: ViewportRuler, _dragDropRegistry: DragDropRegistry<DragRef, DropListRef>);\n    /**\n     * Turns an element into a draggable item.\n     * @param element Element to which to attach the dragging functionality.\n     * @param config Object used to configure the dragging behavior.\n     */\n    createDrag<T = any>(element: ElementRef<HTMLElement> | HTMLElement, config?: DragRefConfig): DragRef<T>;\n    /**\n     * Turns an element into a drop list.\n     * @param element Element to which to attach the drop list functionality.\n     */\n    createDropList<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DropListRef<T>;\n}\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -4,4 +4,2 @@
 export * from './public-api';
 export { CdkDropListInternal as ɵangular_material_src_cdk_drag_drop_drag_drop_a } from './directives/drop-list';
-
-//# sourceMappingURL=index.d.ts.map
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,5 +1,0 @@
-/**
- * Generated bundle index. Do not edit.
- */
-export * from './public-api';
-export { CdkDropListInternal as ɵangular_material_src_cdk_drag_drop_drag_drop_a } from './directives/drop-list';
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/index.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"index.d.ts","sources":["index.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\nexport { CdkDropListInternal as ɵangular_material_src_cdk_drag_drop_drag_drop_a } from './directives/drop-list';\n"]}
Index: trip-planner-front/node_modules/@angular/cdk/drag-drop/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/drag-drop/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/drag-drop/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -2,20 +2,8 @@
   "name": "@angular/cdk/drag-drop",
   "main": "../bundles/cdk-drag-drop.umd.js",
-  "fesm2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/drag-drop.js",
   "fesm2015": "../fesm2015/drag-drop.js",
   "esm2015": "../esm2015/drag-drop/index.js",
   "typings": "./index.d.ts",
-  "module_ivy_ngcc": "../__ivy_ngcc__/fesm2015/drag-drop.js",
   "module": "../fesm2015/drag-drop.js",
-  "es2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/drag-drop.js",
-  "es2015": "../fesm2015/drag-drop.js",
-  "__processed_by_ivy_ngcc__": {
-    "es2015": "12.2.9",
-    "fesm2015": "12.2.9",
-    "module": "12.2.9",
-    "typings": "12.2.9"
-  },
-  "scripts": {
-    "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by NGCC. This is not allowed.\\nPlease delete and rebuild the package, without compiling with NGCC, before attempting to publish.\\nNote that NGCC may have been run by importing this package into another project that is being built with Ivy enabled.\\n')\" && exit 1"
-  }
+  "es2015": "../fesm2015/drag-drop.js"
 }
Index: trip-planner-front/node_modules/@angular/cdk/node_modules/parse5/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/node_modules/parse5/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/node_modules/parse5/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,67 @@
 {
+  "_from": "parse5@^5.0.0",
+  "_id": "parse5@5.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+  "_location": "/@angular/cdk/parse5",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "parse5@^5.0.0",
     "name": "parse5",
-    "description": "HTML parser and serializer.",
-    "version": "5.1.1",
-    "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
-    "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
-    "homepage": "https://github.com/inikulin/parse5",
-    "keywords": [
-        "html",
-        "parser",
-        "html5",
-        "WHATWG",
-        "specification",
-        "fast",
-        "html parser",
-        "html5 parser",
-        "htmlparser",
-        "parse5",
-        "serializer",
-        "html serializer",
-        "htmlserializer",
-        "parse",
-        "serialize"
-    ],
-    "license": "MIT",
-    "main": "./lib/index.js",
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/inikulin/parse5.git"
-    },
-    "files": [
-        "lib"
-    ],
-    "gitHead": "9c7556ed05e4ff4d884ab2447e27ce3817c42e79"
+    "escapedName": "parse5",
+    "rawSpec": "^5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^5.0.0"
+  },
+  "_requiredBy": [
+    "/@angular/cdk"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+  "_shasum": "f68e4e5ba1852ac2cadc00f4555fff6c2abb6178",
+  "_spec": "parse5@^5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front\\node_modules\\@angular\\cdk",
+  "author": {
+    "name": "Ivan Nikulin",
+    "email": "ifaaan@gmail.com",
+    "url": "https://github.com/inikulin"
+  },
+  "bugs": {
+    "url": "https://github.com/inikulin/parse5/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
+  "deprecated": false,
+  "description": "HTML parser and serializer.",
+  "files": [
+    "lib"
+  ],
+  "gitHead": "9c7556ed05e4ff4d884ab2447e27ce3817c42e79",
+  "homepage": "https://github.com/inikulin/parse5",
+  "keywords": [
+    "html",
+    "parser",
+    "html5",
+    "WHATWG",
+    "specification",
+    "fast",
+    "html parser",
+    "html5 parser",
+    "htmlparser",
+    "parse5",
+    "serializer",
+    "html serializer",
+    "htmlserializer",
+    "parse",
+    "serialize"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "parse5",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inikulin/parse5.git"
+  },
+  "version": "5.1.1"
 }
Index: trip-planner-front/node_modules/@angular/cdk/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/cdk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cdk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,42 @@
 {
-  "name": "@angular/cdk",
-  "version": "12.2.10",
+  "_from": "@angular/cdk@12.2.10",
+  "_id": "@angular/cdk@12.2.10",
+  "_inBundle": false,
+  "_integrity": "sha512-jF/tyZXcAS0i11aH8061lMf/ofKs8U52smm/q7k5llTj/NvMZl4s6o3SmdYYE/ByljvCzObz+2j3TzJS/ioDFg==",
+  "_location": "/@angular/cdk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/cdk@12.2.10",
+    "name": "@angular/cdk",
+    "escapedName": "@angular%2fcdk",
+    "scope": "@angular",
+    "rawSpec": "12.2.10",
+    "saveSpec": null,
+    "fetchSpec": "12.2.10"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.10.tgz",
+  "_shasum": "48782cd812efabf34def594d80c17fcfc24fe270",
+  "_spec": "@angular/cdk@12.2.10",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/angular/components/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "parse5": "^5.0.0",
+    "tslib": "^2.2.0"
+  },
+  "deprecated": false,
   "description": "Angular Material Component Development Kit",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/components.git"
-  },
+  "es2015": "./fesm2015/cdk.js",
+  "esm2015": "./esm2015/index.js",
+  "fesm2015": "./fesm2015/cdk.js",
+  "homepage": "https://github.com/angular/components#readme",
   "keywords": [
     "angular",
@@ -15,8 +47,13 @@
   ],
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/components/issues"
+  "main": "./bundles/cdk.umd.js",
+  "module": "./fesm2015/cdk.js",
+  "name": "@angular/cdk",
+  "ng-update": {
+    "migrations": "./schematics/migration.json"
   },
-  "homepage": "https://github.com/angular/components#readme",
+  "optionalDependencies": {
+    "parse5": "^5.0.0"
+  },
   "peerDependencies": {
     "@angular/core": "^12.0.0 || ^13.0.0-0",
@@ -24,20 +61,11 @@
     "rxjs": "^6.5.3 || ^7.0.0"
   },
-  "dependencies": {
-    "tslib": "^2.2.0"
-  },
-  "optionalDependencies": {
-    "parse5": "^5.0.0"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/components.git"
   },
   "schematics": "./schematics/collection.json",
-  "ng-update": {
-    "migrations": "./schematics/migration.json"
-  },
   "sideEffects": false,
-  "main": "./bundles/cdk.umd.js",
-  "fesm2015": "./fesm2015/cdk.js",
-  "esm2015": "./esm2015/index.js",
   "typings": "./index.d.ts",
-  "module": "./fesm2015/cdk.js",
-  "es2015": "./fesm2015/cdk.js"
+  "version": "12.2.10"
 }
Index: trip-planner-front/node_modules/@angular/cli/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/cli/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/cli/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,42 @@
 {
-  "name": "@angular/cli",
-  "version": "12.2.9",
-  "description": "CLI tool for Angular",
-  "main": "lib/cli/index.js",
+  "_args": [
+    [
+      "@angular/cli@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular/cli@12.2.9",
+  "_id": "@angular/cli@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-aYAb6LkqIpKOZE8Kkhst5NNWpM4W1o1mmPTt6Nm6b/4wVLSC+mDp1IBCJSihDWysDetXA5J3kNJ4R2XnpHpIKw==",
+  "_location": "/@angular/cli",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/cli@12.2.9",
+    "name": "@angular/cli",
+    "escapedName": "@angular%2fcli",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
   "bin": {
-    "ng": "./bin/ng"
+    "ng": "bin/ng"
   },
-  "keywords": [
-    "angular",
-    "Angular CLI",
-    "devkit",
-    "sdk",
-    "Angular DevKit",
-    "angular-cli"
-  ],
-  "scripts": {
-    "postinstall": "node ./bin/postinstall/script.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/angular/angular-cli/issues"
   },
-  "homepage": "https://github.com/angular/angular-cli",
   "dependencies": {
     "@angular-devkit/architect": "0.1202.9",
@@ -49,4 +60,22 @@
     "uuid": "8.3.2"
   },
+  "description": "CLI tool for Angular",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "homepage": "https://github.com/angular/angular-cli",
+  "keywords": [
+    "angular",
+    "Angular CLI",
+    "devkit",
+    "sdk",
+    "Angular DevKit",
+    "angular-cli"
+  ],
+  "license": "MIT",
+  "main": "lib/cli/index.js",
+  "name": "@angular/cli",
   "ng-update": {
     "migrations": "@schematics/angular/migrations/migration-collection.json",
@@ -60,8 +89,11 @@
     }
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular-cli.git"
+  },
+  "scripts": {
+    "postinstall": "node ./bin/postinstall/script.js"
+  },
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular/common/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/common/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/common/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,57 @@
 {
-  "name": "@angular/common",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@angular/common@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/common@12.2.9",
+  "_id": "@angular/common@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-V7leBrq80CSJWHWVE3LEL6Z6onP2ibsITY3++86Uddz8AxzfOtNRslbs4/qCWc82nT7CIEn8a28NLP/BdOwNew==",
+  "_location": "/@angular/common",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/common@12.2.9",
+    "name": "@angular/common",
+    "escapedName": "@angular%2fcommon",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
+  },
+  "dependencies": {
+    "tslib": "^2.2.0"
+  },
   "description": "Angular - commonly needed directives and services",
-  "author": "angular",
-  "license": "MIT",
   "engines": {
     "node": "^12.14.1 || >=14.0.0"
   },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
+  "es2015": "./fesm2015/common.js",
+  "esm2015": "./esm2015/common.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
+  "fesm2015": "./fesm2015/common.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
   "locales": "locales",
-  "dependencies": {
-    "tslib": "^2.2.0"
-  },
-  "peerDependencies": {
-    "@angular/core": "12.2.9",
-    "rxjs": "^6.5.3 || ^7.0.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/common"
-  },
+  "main": "./bundles/common.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
+  "module": "./fesm2015/common.js",
+  "name": "@angular/common",
   "ng-update": {
     "packageGroup": [
@@ -41,17 +74,19 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/core": "12.2.9",
+    "rxjs": "^6.5.3 || ^7.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/common"
+  },
   "sideEffects": [
     "**/global/*.js",
     "**/closure-locale.*"
   ],
-  "main": "./bundles/common.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
-  "fesm2015": "./fesm2015/common.js",
-  "esm2015": "./esm2015/common.js",
   "typings": "./common.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
-  "module": "./fesm2015/common.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/common.js",
-  "es2015": "./fesm2015/common.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/compiler-cli/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/compiler-cli/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/compiler-cli/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/@angular/compiler-cli/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/@angular/compiler-cli/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/compiler-cli/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/compiler-cli/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,45 @@
 {
-  "name": "@angular/compiler-cli",
-  "version": "12.2.9",
-  "description": "Angular - the compiler CLI for Node.js",
-  "main": "index.js",
-  "typings": "index.d.ts",
+  "_args": [
+    [
+      "@angular/compiler-cli@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@angular/compiler-cli@12.2.9",
+  "_id": "@angular/compiler-cli@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-jswNKFm3MNcY4oDO/8HcFLLVxDEcTOyqp9CeKzlbjBKb04Ntjaqpm9CKzlxLOtJJj9BSMHTz1CjE0hSNv76NPg==",
+  "_location": "/@angular/compiler-cli",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/compiler-cli@12.2.9",
+    "name": "@angular/compiler-cli",
+    "escapedName": "@angular%2fcompiler-cli",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "bin": {
-    "ivy-ngcc": "./ngcc/main-ivy-ngcc.js",
-    "ngcc": "./ngcc/main-ngcc.js",
-    "ngc": "./src/main.js",
-    "ng-xi18n": "./src/extract_i18n.js"
+    "ivy-ngcc": "ngcc/main-ivy-ngcc.js",
+    "ngcc": "ngcc/main-ngcc.js",
+    "ngc": "src/main.js",
+    "ng-xi18n": "src/extract_i18n.js"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "@babel/core": "^7.8.6",
     "@babel/types": "^7.8.6",
-    "reflect-metadata": "^0.1.2",
-    "minimist": "^1.2.0",
     "canonical-path": "1.0.0",
     "chokidar": "^3.0.0",
@@ -21,4 +47,6 @@
     "dependency-graph": "^0.11.0",
     "magic-string": "^0.25.0",
+    "minimist": "^1.2.0",
+    "reflect-metadata": "^0.1.2",
     "semver": "^7.0.0",
     "source-map": "^0.6.1",
@@ -27,13 +55,9 @@
     "yargs": "^17.0.0"
   },
-  "peerDependencies": {
-    "@angular/compiler": "12.2.9",
-    "typescript": ">=4.2.3 <4.4"
+  "description": "Angular - the compiler CLI for Node.js",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/compiler-cli"
-  },
+  "homepage": "https://github.com/angular/angular/tree/master/packages/compiler-cli",
   "keywords": [
     "angular",
@@ -41,11 +65,6 @@
   ],
   "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
-  },
-  "bugs": {
-    "url": "https://github.com/angular/angular/issues"
-  },
-  "homepage": "https://github.com/angular/angular/tree/master/packages/compiler-cli",
+  "main": "index.js",
+  "name": "@angular/compiler-cli",
   "ng-update": {
     "packageGroup": [
@@ -67,4 +86,15 @@
       "@angular/service-worker"
     ]
-  }
+  },
+  "peerDependencies": {
+    "@angular/compiler": "12.2.9",
+    "typescript": ">=4.2.3 <4.4"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/compiler-cli"
+  },
+  "typings": "index.d.ts",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular/compiler/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/compiler/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/compiler/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,53 @@
 {
-  "name": "@angular/compiler",
-  "version": "12.2.9",
-  "description": "Angular - the compiler library",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/compiler@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/compiler@12.2.9",
+  "_id": "@angular/compiler@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-87Qn8HuQ+6ECUnapQxpgIvwuUs6i1oM6lmLSKrYe0/WpIzTabB30eXWCKfvqYrv516cMdrq+nLCIXJx1tPqzSw==",
+  "_location": "/@angular/compiler",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/compiler@12.2.9",
+    "name": "@angular/compiler",
+    "escapedName": "@angular%2fcompiler",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/compiler"
+  "description": "Angular - the compiler library",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
+  "es2015": "./fesm2015/compiler.js",
+  "esm2015": "./esm2015/index.js",
+  "fesm2015": "./fesm2015/compiler.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/compiler.umd.js",
+  "module": "./fesm2015/compiler.js",
+  "name": "@angular/compiler",
   "ng-update": {
     "packageGroup": [
@@ -36,10 +70,11 @@
     ]
   },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/compiler"
+  },
   "sideEffects": true,
-  "main": "./bundles/compiler.umd.js",
-  "fesm2015": "./fesm2015/compiler.js",
-  "esm2015": "./esm2015/index.js",
   "typings": "./index.d.ts",
-  "module": "./fesm2015/compiler.js",
-  "es2015": "./fesm2015/compiler.js"
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@angular/core/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/core/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,56 @@
 {
-  "name": "@angular/core",
-  "version": "12.2.9",
-  "description": "Angular - the core framework",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/core@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/core@12.2.9",
+  "_id": "@angular/core@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-RgUmn0YM4GMcViTEkWxDVGCyz8+subF+98dJie+bwJszATMxRK2TSINEg2X/Y0LgNxpRt4mKzIK2kz62oaDH7g==",
+  "_location": "/@angular/core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/core@12.2.9",
+    "name": "@angular/core",
+    "escapedName": "@angular%2fcore",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "peerDependencies": {
-    "rxjs": "^6.5.3 || ^7.0.0",
-    "zone.js": "~0.11.4"
+  "description": "Angular - the core framework",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/core"
-  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
+  "es2015": "./fesm2015/core.js",
+  "esm2015": "./esm2015/core.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
+  "fesm2015": "./fesm2015/core.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/core.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
+  "module": "./fesm2015/core.js",
+  "name": "@angular/core",
   "ng-update": {
     "migrations": "./schematics/migrations.json",
@@ -41,14 +74,16 @@
     ]
   },
+  "peerDependencies": {
+    "rxjs": "^6.5.3 || ^7.0.0",
+    "zone.js": "~0.11.4"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/core"
+  },
   "sideEffects": false,
-  "main": "./bundles/core.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
-  "fesm2015": "./fesm2015/core.js",
-  "esm2015": "./esm2015/core.js",
   "typings": "./core.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
-  "module": "./fesm2015/core.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/core.js",
-  "es2015": "./fesm2015/core.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/forms/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/forms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/forms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,56 @@
 {
-  "name": "@angular/forms",
-  "version": "12.2.9",
-  "description": "Angular - directives and services for creating forms",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/forms@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/forms@12.2.9",
+  "_id": "@angular/forms@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-DugLX9h/hmphjdx0wGOp9koEpzFZpcMiYXfYO2rLyzc1NwopAcbSJTCvU+adfShZgh/b5v+7rb5n10JROj/ODw==",
+  "_location": "/@angular/forms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/forms@12.2.9",
+    "name": "@angular/forms",
+    "escapedName": "@angular%2fforms",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "peerDependencies": {
-    "@angular/core": "12.2.9",
-    "@angular/common": "12.2.9",
-    "@angular/platform-browser": "12.2.9",
-    "rxjs": "^6.5.3 || ^7.0.0"
+  "description": "Angular - directives and services for creating forms",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/forms"
-  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
+  "es2015": "./fesm2015/forms.js",
+  "esm2015": "./esm2015/forms.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
+  "fesm2015": "./fesm2015/forms.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/forms.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
+  "module": "./fesm2015/forms.js",
+  "name": "@angular/forms",
   "ng-update": {
     "packageGroup": [
@@ -42,14 +73,18 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/core": "12.2.9",
+    "@angular/common": "12.2.9",
+    "@angular/platform-browser": "12.2.9",
+    "rxjs": "^6.5.3 || ^7.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/forms"
+  },
   "sideEffects": false,
-  "main": "./bundles/forms.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
-  "fesm2015": "./fesm2015/forms.js",
-  "esm2015": "./esm2015/forms.js",
   "typings": "./forms.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
-  "module": "./fesm2015/forms.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/forms.js",
-  "es2015": "./fesm2015/forms.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/list.js
===================================================================
--- trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/list.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1071 +1,0 @@
-import { CommonModule } from '@angular/common';
-import { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, Directive, ChangeDetectorRef, Optional, Inject, ContentChildren, ContentChild, Input, forwardRef, EventEmitter, Output, ViewChild, Attribute, NgModule } from '@angular/core';
-import { mixinDisabled, mixinDisableRipple, setLines, MatLine, MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule } from '@angular/material/core';
-import { coerceBooleanProperty } from '@angular/cdk/coercion';
-import { Subject } from 'rxjs';
-import { takeUntil, startWith } from 'rxjs/operators';
-import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';
-import { SelectionModel } from '@angular/cdk/collections';
-import { hasModifierKey, A, ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
-import { NG_VALUE_ACCESSOR } from '@angular/forms';
-import { MatDividerModule } from '@angular/material/divider';
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-// Boilerplate for applying mixins to MatList.
-/** @docs-private */
-import * as ɵngcc0 from '@angular/core';
-import * as ɵngcc1 from '@angular/material/core';
-import * as ɵngcc2 from '@angular/common';
-import * as ɵngcc3 from '@angular/cdk/a11y';
-
-const _c0 = ["*"];
-const _c1 = ".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}\n";
-const _c2 = [[["", "mat-list-avatar", ""], ["", "mat-list-icon", ""], ["", "matListAvatar", ""], ["", "matListIcon", ""]], [["", "mat-line", ""], ["", "matLine", ""]], "*"];
-const _c3 = ["[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]", "[mat-line], [matLine]", "*"];
-const _c4 = ["text"];
-function MatListOption_mat_pseudo_checkbox_2_Template(rf, ctx) { if (rf & 1) {
-    ɵngcc0.ɵɵelement(0, "mat-pseudo-checkbox", 5);
-} if (rf & 2) {
-    const ctx_r0 = ɵngcc0.ɵɵnextContext();
-    ɵngcc0.ɵɵproperty("state", ctx_r0.selected ? "checked" : "unchecked")("disabled", ctx_r0.disabled);
-} }
-const _c5 = ["*", [["", "mat-list-avatar", ""], ["", "mat-list-icon", ""], ["", "matListAvatar", ""], ["", "matListIcon", ""]]];
-const _c6 = ["*", "[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]"];
-const _MatListBase = mixinDisabled(mixinDisableRipple(class {
-}));
-// Boilerplate for applying mixins to MatListItem.
-/** @docs-private */
-const _MatListItemMixinBase = mixinDisableRipple(class {
-});
-/**
- * Injection token that can be used to inject instances of `MatList`. It serves as
- * alternative token to the actual `MatList` class which could cause unnecessary
- * retention of the class and its component metadata.
- */
-const MAT_LIST = new InjectionToken('MatList');
-/**
- * Injection token that can be used to inject instances of `MatNavList`. It serves as
- * alternative token to the actual `MatNavList` class which could cause unnecessary
- * retention of the class and its component metadata.
- */
-const MAT_NAV_LIST = new InjectionToken('MatNavList');
-class MatNavList extends _MatListBase {
-    constructor() {
-        super(...arguments);
-        /** Emits when the state of the list changes. */
-        this._stateChanges = new Subject();
-    }
-    ngOnChanges() {
-        this._stateChanges.next();
-    }
-    ngOnDestroy() {
-        this._stateChanges.complete();
-    }
-}
-MatNavList.ɵfac = /*@__PURE__*/ function () { let ɵMatNavList_BaseFactory; return function MatNavList_Factory(t) { return (ɵMatNavList_BaseFactory || (ɵMatNavList_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(MatNavList)))(t || MatNavList); }; }();
-MatNavList.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatNavList, selectors: [["mat-nav-list"]], hostAttrs: ["role", "navigation", 1, "mat-nav-list", "mat-list-base"], inputs: { disableRipple: "disableRipple", disabled: "disabled" }, exportAs: ["matNavList"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_NAV_LIST, useExisting: MatNavList }]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function MatNavList_Template(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵprojectionDef();
-        ɵngcc0.ɵɵprojection(0);
-    } }, styles: [_c1], encapsulation: 2, changeDetection: 0 });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatNavList, [{
-        type: Component,
-        args: [{
-                selector: 'mat-nav-list',
-                exportAs: 'matNavList',
-                host: {
-                    'role': 'navigation',
-                    'class': 'mat-nav-list mat-list-base'
-                },
-                template: "<ng-content></ng-content>\n\n",
-                inputs: ['disableRipple', 'disabled'],
-                encapsulation: ViewEncapsulation.None,
-                changeDetection: ChangeDetectionStrategy.OnPush,
-                providers: [{ provide: MAT_NAV_LIST, useExisting: MatNavList }],
-                styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}\n"]
-            }]
-    }], null, null); })();
-class MatList extends _MatListBase {
-    constructor(_elementRef) {
-        super();
-        this._elementRef = _elementRef;
-        /** Emits when the state of the list changes. */
-        this._stateChanges = new Subject();
-        if (this._getListType() === 'action-list') {
-            _elementRef.nativeElement.classList.add('mat-action-list');
-        }
-    }
-    _getListType() {
-        const nodeName = this._elementRef.nativeElement.nodeName.toLowerCase();
-        if (nodeName === 'mat-list') {
-            return 'list';
-        }
-        if (nodeName === 'mat-action-list') {
-            return 'action-list';
-        }
-        return null;
-    }
-    ngOnChanges() {
-        this._stateChanges.next();
-    }
-    ngOnDestroy() {
-        this._stateChanges.complete();
-    }
-}
-MatList.ɵfac = function MatList_Factory(t) { return new (t || MatList)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };
-MatList.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatList, selectors: [["mat-list"], ["mat-action-list"]], hostAttrs: [1, "mat-list", "mat-list-base"], inputs: { disableRipple: "disableRipple", disabled: "disabled" }, exportAs: ["matList"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_LIST, useExisting: MatList }]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function MatList_Template(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵprojectionDef();
-        ɵngcc0.ɵɵprojection(0);
-    } }, styles: [_c1], encapsulation: 2, changeDetection: 0 });
-MatList.ctorParameters = () => [
-    { type: ElementRef }
-];
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatList, [{
-        type: Component,
-        args: [{
-                selector: 'mat-list, mat-action-list',
-                exportAs: 'matList',
-                template: "<ng-content></ng-content>\n\n",
-                host: {
-                    'class': 'mat-list mat-list-base'
-                },
-                inputs: ['disableRipple', 'disabled'],
-                encapsulation: ViewEncapsulation.None,
-                changeDetection: ChangeDetectionStrategy.OnPush,
-                providers: [{ provide: MAT_LIST, useExisting: MatList }],
-                styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}\n"]
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-class MatListAvatarCssMatStyler {
-}
-MatListAvatarCssMatStyler.ɵfac = function MatListAvatarCssMatStyler_Factory(t) { return new (t || MatListAvatarCssMatStyler)(); };
-MatListAvatarCssMatStyler.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatListAvatarCssMatStyler, selectors: [["", "mat-list-avatar", ""], ["", "matListAvatar", ""]], hostAttrs: [1, "mat-list-avatar"] });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListAvatarCssMatStyler, [{
-        type: Directive,
-        args: [{
-                selector: '[mat-list-avatar], [matListAvatar]',
-                host: { 'class': 'mat-list-avatar' }
-            }]
-    }], null, null); })();
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-class MatListIconCssMatStyler {
-}
-MatListIconCssMatStyler.ɵfac = function MatListIconCssMatStyler_Factory(t) { return new (t || MatListIconCssMatStyler)(); };
-MatListIconCssMatStyler.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatListIconCssMatStyler, selectors: [["", "mat-list-icon", ""], ["", "matListIcon", ""]], hostAttrs: [1, "mat-list-icon"] });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListIconCssMatStyler, [{
-        type: Directive,
-        args: [{
-                selector: '[mat-list-icon], [matListIcon]',
-                host: { 'class': 'mat-list-icon' }
-            }]
-    }], null, null); })();
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-class MatListSubheaderCssMatStyler {
-}
-MatListSubheaderCssMatStyler.ɵfac = function MatListSubheaderCssMatStyler_Factory(t) { return new (t || MatListSubheaderCssMatStyler)(); };
-MatListSubheaderCssMatStyler.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatListSubheaderCssMatStyler, selectors: [["", "mat-subheader", ""], ["", "matSubheader", ""]], hostAttrs: [1, "mat-subheader"] });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListSubheaderCssMatStyler, [{
-        type: Directive,
-        args: [{
-                selector: '[mat-subheader], [matSubheader]',
-                host: { 'class': 'mat-subheader' }
-            }]
-    }], null, null); })();
-/** An item within a Material Design list. */
-class MatListItem extends _MatListItemMixinBase {
-    constructor(_element, _changeDetectorRef, navList, list) {
-        super();
-        this._element = _element;
-        this._isInteractiveList = false;
-        this._destroyed = new Subject();
-        this._disabled = false;
-        this._isInteractiveList = !!(navList || (list && list._getListType() === 'action-list'));
-        this._list = navList || list;
-        // If no type attribute is specified for <button>, set it to "button".
-        // If a type attribute is already specified, do nothing.
-        const element = this._getHostElement();
-        if (element.nodeName.toLowerCase() === 'button' && !element.hasAttribute('type')) {
-            element.setAttribute('type', 'button');
-        }
-        if (this._list) {
-            // React to changes in the state of the parent list since
-            // some of the item's properties depend on it (e.g. `disableRipple`).
-            this._list._stateChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {
-                _changeDetectorRef.markForCheck();
-            });
-        }
-    }
-    /** Whether the option is disabled. */
-    get disabled() { return this._disabled || !!(this._list && this._list.disabled); }
-    set disabled(value) {
-        this._disabled = coerceBooleanProperty(value);
-    }
-    ngAfterContentInit() {
-        setLines(this._lines, this._element);
-    }
-    ngOnDestroy() {
-        this._destroyed.next();
-        this._destroyed.complete();
-    }
-    /** Whether this list item should show a ripple effect when clicked. */
-    _isRippleDisabled() {
-        return !this._isInteractiveList || this.disableRipple ||
-            !!(this._list && this._list.disableRipple);
-    }
-    /** Retrieves the DOM element of the component host. */
-    _getHostElement() {
-        return this._element.nativeElement;
-    }
-}
-MatListItem.ɵfac = function MatListItem_Factory(t) { return new (t || MatListItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(MAT_NAV_LIST, 8), ɵngcc0.ɵɵdirectiveInject(MAT_LIST, 8)); };
-MatListItem.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatListItem, selectors: [["mat-list-item"], ["a", "mat-list-item", ""], ["button", "mat-list-item", ""]], contentQueries: function MatListItem_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatListAvatarCssMatStyler, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatListIconCssMatStyler, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatLine, 5);
-    } if (rf & 2) {
-        let _t;
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._avatar = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._icon = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._lines = _t);
-    } }, hostAttrs: [1, "mat-list-item", "mat-focus-indicator"], hostVars: 6, hostBindings: function MatListItem_HostBindings(rf, ctx) { if (rf & 2) {
-        ɵngcc0.ɵɵclassProp("mat-list-item-disabled", ctx.disabled)("mat-list-item-avatar", ctx._avatar || ctx._icon)("mat-list-item-with-avatar", ctx._avatar || ctx._icon);
-    } }, inputs: { disableRipple: "disableRipple", disabled: "disabled" }, exportAs: ["matListItem"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls: 6, vars: 2, consts: [[1, "mat-list-item-content"], ["mat-ripple", "", 1, "mat-list-item-ripple", 3, "matRippleTrigger", "matRippleDisabled"], [1, "mat-list-text"]], template: function MatListItem_Template(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵprojectionDef(_c2);
-        ɵngcc0.ɵɵelementStart(0, "div", 0);
-        ɵngcc0.ɵɵelement(1, "div", 1);
-        ɵngcc0.ɵɵprojection(2);
-        ɵngcc0.ɵɵelementStart(3, "div", 2);
-        ɵngcc0.ɵɵprojection(4, 1);
-        ɵngcc0.ɵɵelementEnd();
-        ɵngcc0.ɵɵprojection(5, 2);
-        ɵngcc0.ɵɵelementEnd();
-    } if (rf & 2) {
-        ɵngcc0.ɵɵadvance(1);
-        ɵngcc0.ɵɵproperty("matRippleTrigger", ctx._getHostElement())("matRippleDisabled", ctx._isRippleDisabled());
-    } }, directives: [ɵngcc1.MatRipple], encapsulation: 2, changeDetection: 0 });
-MatListItem.ctorParameters = () => [
-    { type: ElementRef },
-    { type: ChangeDetectorRef },
-    { type: MatNavList, decorators: [{ type: Optional }, { type: Inject, args: [MAT_NAV_LIST,] }] },
-    { type: MatList, decorators: [{ type: Optional }, { type: Inject, args: [MAT_LIST,] }] }
-];
-MatListItem.propDecorators = {
-    _lines: [{ type: ContentChildren, args: [MatLine, { descendants: true },] }],
-    _avatar: [{ type: ContentChild, args: [MatListAvatarCssMatStyler,] }],
-    _icon: [{ type: ContentChild, args: [MatListIconCssMatStyler,] }],
-    disabled: [{ type: Input }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListItem, [{
-        type: Component,
-        args: [{
-                selector: 'mat-list-item, a[mat-list-item], button[mat-list-item]',
-                exportAs: 'matListItem',
-                host: {
-                    'class': 'mat-list-item mat-focus-indicator',
-                    '[class.mat-list-item-disabled]': 'disabled',
-                    // @breaking-change 8.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.
-                    '[class.mat-list-item-avatar]': '_avatar || _icon',
-                    '[class.mat-list-item-with-avatar]': '_avatar || _icon'
-                },
-                inputs: ['disableRipple'],
-                template: "<div class=\"mat-list-item-content\">\n  <div class=\"mat-list-item-ripple\" mat-ripple\n       [matRippleTrigger]=\"_getHostElement()\"\n       [matRippleDisabled]=\"_isRippleDisabled()\">\n  </div>\n\n  <ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\">\n  </ng-content>\n\n  <div class=\"mat-list-text\"><ng-content select=\"[mat-line], [matLine]\"></ng-content></div>\n\n  <ng-content></ng-content>\n</div>\n",
-                encapsulation: ViewEncapsulation.None,
-                changeDetection: ChangeDetectionStrategy.OnPush
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: MatNavList, decorators: [{
-                type: Optional
-            }, {
-                type: Inject,
-                args: [MAT_NAV_LIST]
-            }] }, { type: MatList, decorators: [{
-                type: Optional
-            }, {
-                type: Inject,
-                args: [MAT_LIST]
-            }] }]; }, { disabled: [{
-            type: Input
-        }], _lines: [{
-            type: ContentChildren,
-            args: [MatLine, { descendants: true }]
-        }], _avatar: [{
-            type: ContentChild,
-            args: [MatListAvatarCssMatStyler]
-        }], _icon: [{
-            type: ContentChild,
-            args: [MatListIconCssMatStyler]
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-const _MatSelectionListBase = mixinDisableRipple(class {
-});
-const _MatListOptionBase = mixinDisableRipple(class {
-});
-/** @docs-private */
-const MAT_SELECTION_LIST_VALUE_ACCESSOR = {
-    provide: NG_VALUE_ACCESSOR,
-    useExisting: forwardRef(() => MatSelectionList),
-    multi: true
-};
-/** Change event that is being fired whenever the selected state of an option changes. */
-class MatSelectionListChange {
-    constructor(
-    /** Reference to the selection list that emitted the event. */
-    source, 
-    /**
-     * Reference to the option that has been changed.
-     * @deprecated Use `options` instead, because some events may change more than one option.
-     * @breaking-change 12.0.0
-     */
-    option, 
-    /** Reference to the options that have been changed. */
-    options) {
-        this.source = source;
-        this.option = option;
-        this.options = options;
-    }
-}
-/**
- * Component for list-options of selection-list. Each list-option can automatically
- * generate a checkbox and can put current item into the selectionModel of selection-list
- * if the current item is selected.
- */
-class MatListOption extends _MatListOptionBase {
-    constructor(_element, _changeDetector, 
-    /** @docs-private */
-    selectionList) {
-        super();
-        this._element = _element;
-        this._changeDetector = _changeDetector;
-        this.selectionList = selectionList;
-        this._selected = false;
-        this._disabled = false;
-        this._hasFocus = false;
-        /**
-         * Emits when the selected state of the option has changed.
-         * Use to facilitate two-data binding to the `selected` property.
-         * @docs-private
-         */
-        this.selectedChange = new EventEmitter();
-        /** Whether the label should appear before or after the checkbox. Defaults to 'after' */
-        this.checkboxPosition = 'after';
-        /**
-         * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
-         * in the first cycle.
-         */
-        this._inputsInitialized = false;
-    }
-    /** Theme color of the list option. This sets the color of the checkbox. */
-    get color() { return this._color || this.selectionList.color; }
-    set color(newValue) { this._color = newValue; }
-    /** Value of the option */
-    get value() { return this._value; }
-    set value(newValue) {
-        if (this.selected &&
-            !this.selectionList.compareWith(newValue, this.value) &&
-            this._inputsInitialized) {
-            this.selected = false;
-        }
-        this._value = newValue;
-    }
-    /** Whether the option is disabled. */
-    get disabled() { return this._disabled || (this.selectionList && this.selectionList.disabled); }
-    set disabled(value) {
-        const newValue = coerceBooleanProperty(value);
-        if (newValue !== this._disabled) {
-            this._disabled = newValue;
-            this._changeDetector.markForCheck();
-        }
-    }
-    /** Whether the option is selected. */
-    get selected() { return this.selectionList.selectedOptions.isSelected(this); }
-    set selected(value) {
-        const isSelected = coerceBooleanProperty(value);
-        if (isSelected !== this._selected) {
-            this._setSelected(isSelected);
-            if (isSelected || this.selectionList.multiple) {
-                this.selectionList._reportValueChange();
-            }
-        }
-    }
-    ngOnInit() {
-        const list = this.selectionList;
-        if (list._value && list._value.some(value => list.compareWith(value, this._value))) {
-            this._setSelected(true);
-        }
-        const wasSelected = this._selected;
-        // List options that are selected at initialization can't be reported properly to the form
-        // control. This is because it takes some time until the selection-list knows about all
-        // available options. Also it can happen that the ControlValueAccessor has an initial value
-        // that should be used instead. Deferring the value change report to the next tick ensures
-        // that the form control value is not being overwritten.
-        Promise.resolve().then(() => {
-            if (this._selected || wasSelected) {
-                this.selected = true;
-                this._changeDetector.markForCheck();
-            }
-        });
-        this._inputsInitialized = true;
-    }
-    ngAfterContentInit() {
-        setLines(this._lines, this._element);
-    }
-    ngOnDestroy() {
-        if (this.selected) {
-            // We have to delay this until the next tick in order
-            // to avoid changed after checked errors.
-            Promise.resolve().then(() => {
-                this.selected = false;
-            });
-        }
-        const hadFocus = this._hasFocus;
-        const newActiveItem = this.selectionList._removeOptionFromList(this);
-        // Only move focus if this option was focused at the time it was destroyed.
-        if (hadFocus && newActiveItem) {
-            newActiveItem.focus();
-        }
-    }
-    /** Toggles the selection state of the option. */
-    toggle() {
-        this.selected = !this.selected;
-    }
-    /** Allows for programmatic focusing of the option. */
-    focus() {
-        this._element.nativeElement.focus();
-    }
-    /**
-     * Returns the list item's text label. Implemented as a part of the FocusKeyManager.
-     * @docs-private
-     */
-    getLabel() {
-        return this._text ? (this._text.nativeElement.textContent || '') : '';
-    }
-    /** Whether this list item should show a ripple effect when clicked. */
-    _isRippleDisabled() {
-        return this.disabled || this.disableRipple || this.selectionList.disableRipple;
-    }
-    _handleClick() {
-        if (!this.disabled && (this.selectionList.multiple || !this.selected)) {
-            this.toggle();
-            // Emit a change event if the selected state of the option changed through user interaction.
-            this.selectionList._emitChangeEvent([this]);
-        }
-    }
-    _handleFocus() {
-        this.selectionList._setFocusedOption(this);
-        this._hasFocus = true;
-    }
-    _handleBlur() {
-        this.selectionList._onTouched();
-        this._hasFocus = false;
-    }
-    /** Retrieves the DOM element of the component host. */
-    _getHostElement() {
-        return this._element.nativeElement;
-    }
-    /** Sets the selected state of the option. Returns whether the value has changed. */
-    _setSelected(selected) {
-        if (selected === this._selected) {
-            return false;
-        }
-        this._selected = selected;
-        if (selected) {
-            this.selectionList.selectedOptions.select(this);
-        }
-        else {
-            this.selectionList.selectedOptions.deselect(this);
-        }
-        this.selectedChange.emit(selected);
-        this._changeDetector.markForCheck();
-        return true;
-    }
-    /**
-     * Notifies Angular that the option needs to be checked in the next change detection run. Mainly
-     * used to trigger an update of the list option if the disabled state of the selection list
-     * changed.
-     */
-    _markForCheck() {
-        this._changeDetector.markForCheck();
-    }
-}
-MatListOption.ɵfac = function MatListOption_Factory(t) { return new (t || MatListOption)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(forwardRef(() => MatSelectionList))); };
-MatListOption.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatListOption, selectors: [["mat-list-option"]], contentQueries: function MatListOption_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatListAvatarCssMatStyler, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatListIconCssMatStyler, 5);
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatLine, 5);
-    } if (rf & 2) {
-        let _t;
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._avatar = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._icon = _t.first);
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._lines = _t);
-    } }, viewQuery: function MatListOption_Query(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵviewQuery(_c4, 5);
-    } if (rf & 2) {
-        let _t;
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._text = _t.first);
-    } }, hostAttrs: ["role", "option", 1, "mat-list-item", "mat-list-option", "mat-focus-indicator"], hostVars: 15, hostBindings: function MatListOption_HostBindings(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵlistener("focus", function MatListOption_focus_HostBindingHandler() { return ctx._handleFocus(); })("blur", function MatListOption_blur_HostBindingHandler() { return ctx._handleBlur(); })("click", function MatListOption_click_HostBindingHandler() { return ctx._handleClick(); });
-    } if (rf & 2) {
-        ɵngcc0.ɵɵattribute("aria-selected", ctx.selected)("aria-disabled", ctx.disabled)("tabindex", -1);
-        ɵngcc0.ɵɵclassProp("mat-list-item-disabled", ctx.disabled)("mat-list-item-with-avatar", ctx._avatar || ctx._icon)("mat-primary", ctx.color === "primary")("mat-accent", ctx.color !== "primary" && ctx.color !== "warn")("mat-warn", ctx.color === "warn")("mat-list-single-selected-option", ctx.selected && !ctx.selectionList.multiple);
-    } }, inputs: { disableRipple: "disableRipple", checkboxPosition: "checkboxPosition", color: "color", value: "value", selected: "selected", disabled: "disabled" }, outputs: { selectedChange: "selectedChange" }, exportAs: ["matListOption"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c6, decls: 7, vars: 5, consts: [[1, "mat-list-item-content"], ["mat-ripple", "", 1, "mat-list-item-ripple", 3, "matRippleTrigger", "matRippleDisabled"], [3, "state", "disabled", 4, "ngIf"], [1, "mat-list-text"], ["text", ""], [3, "state", "disabled"]], template: function MatListOption_Template(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵprojectionDef(_c5);
-        ɵngcc0.ɵɵelementStart(0, "div", 0);
-        ɵngcc0.ɵɵelement(1, "div", 1);
-        ɵngcc0.ɵɵtemplate(2, MatListOption_mat_pseudo_checkbox_2_Template, 1, 2, "mat-pseudo-checkbox", 2);
-        ɵngcc0.ɵɵelementStart(3, "div", 3, 4);
-        ɵngcc0.ɵɵprojection(5);
-        ɵngcc0.ɵɵelementEnd();
-        ɵngcc0.ɵɵprojection(6, 1);
-        ɵngcc0.ɵɵelementEnd();
-    } if (rf & 2) {
-        ɵngcc0.ɵɵclassProp("mat-list-item-content-reverse", ctx.checkboxPosition == "after");
-        ɵngcc0.ɵɵadvance(1);
-        ɵngcc0.ɵɵproperty("matRippleTrigger", ctx._getHostElement())("matRippleDisabled", ctx._isRippleDisabled());
-        ɵngcc0.ɵɵadvance(1);
-        ɵngcc0.ɵɵproperty("ngIf", ctx.selectionList.multiple);
-    } }, directives: [ɵngcc1.MatRipple, ɵngcc2.NgIf, ɵngcc1.MatPseudoCheckbox], encapsulation: 2, changeDetection: 0 });
-MatListOption.ctorParameters = () => [
-    { type: ElementRef },
-    { type: ChangeDetectorRef },
-    { type: MatSelectionList, decorators: [{ type: Inject, args: [forwardRef(() => MatSelectionList),] }] }
-];
-MatListOption.propDecorators = {
-    _avatar: [{ type: ContentChild, args: [MatListAvatarCssMatStyler,] }],
-    _icon: [{ type: ContentChild, args: [MatListIconCssMatStyler,] }],
-    _lines: [{ type: ContentChildren, args: [MatLine, { descendants: true },] }],
-    selectedChange: [{ type: Output }],
-    _text: [{ type: ViewChild, args: ['text',] }],
-    checkboxPosition: [{ type: Input }],
-    color: [{ type: Input }],
-    value: [{ type: Input }],
-    disabled: [{ type: Input }],
-    selected: [{ type: Input }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListOption, [{
-        type: Component,
-        args: [{
-                selector: 'mat-list-option',
-                exportAs: 'matListOption',
-                inputs: ['disableRipple'],
-                host: {
-                    'role': 'option',
-                    'class': 'mat-list-item mat-list-option mat-focus-indicator',
-                    '(focus)': '_handleFocus()',
-                    '(blur)': '_handleBlur()',
-                    '(click)': '_handleClick()',
-                    '[class.mat-list-item-disabled]': 'disabled',
-                    '[class.mat-list-item-with-avatar]': '_avatar || _icon',
-                    // Manually set the "primary" or "warn" class if the color has been explicitly
-                    // set to "primary" or "warn". The pseudo checkbox picks up these classes for
-                    // its theme.
-                    '[class.mat-primary]': 'color === "primary"',
-                    // Even though accent is the default, we need to set this class anyway, because the  list might
-                    // be placed inside a parent that has one of the other colors with a higher specificity.
-                    '[class.mat-accent]': 'color !== "primary" && color !== "warn"',
-                    '[class.mat-warn]': 'color === "warn"',
-                    '[class.mat-list-single-selected-option]': 'selected && !selectionList.multiple',
-                    '[attr.aria-selected]': 'selected',
-                    '[attr.aria-disabled]': 'disabled',
-                    '[attr.tabindex]': '-1'
-                },
-                template: "<div class=\"mat-list-item-content\"\n  [class.mat-list-item-content-reverse]=\"checkboxPosition == 'after'\">\n\n  <div mat-ripple\n    class=\"mat-list-item-ripple\"\n    [matRippleTrigger]=\"_getHostElement()\"\n    [matRippleDisabled]=\"_isRippleDisabled()\"></div>\n\n  <mat-pseudo-checkbox\n    *ngIf=\"selectionList.multiple\"\n    [state]=\"selected ? 'checked' : 'unchecked'\"\n    [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n  <div class=\"mat-list-text\" #text><ng-content></ng-content></div>\n\n  <ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\">\n  </ng-content>\n\n</div>\n",
-                encapsulation: ViewEncapsulation.None,
-                changeDetection: ChangeDetectionStrategy.OnPush
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: MatSelectionList, decorators: [{
-                type: Inject,
-                args: [forwardRef(() => MatSelectionList)]
-            }] }]; }, { selectedChange: [{
-            type: Output
-        }], checkboxPosition: [{
-            type: Input
-        }], color: [{
-            type: Input
-        }], value: [{
-            type: Input
-        }], selected: [{
-            type: Input
-        }], disabled: [{
-            type: Input
-        }], _avatar: [{
-            type: ContentChild,
-            args: [MatListAvatarCssMatStyler]
-        }], _icon: [{
-            type: ContentChild,
-            args: [MatListIconCssMatStyler]
-        }], _lines: [{
-            type: ContentChildren,
-            args: [MatLine, { descendants: true }]
-        }], _text: [{
-            type: ViewChild,
-            args: ['text']
-        }] }); })();
-/**
- * Material Design list component where each item is a selectable option. Behaves as a listbox.
- */
-class MatSelectionList extends _MatSelectionListBase {
-    constructor(_element, 
-    // @breaking-change 11.0.0 Remove `tabIndex` parameter.
-    tabIndex, _changeDetector, 
-    // @breaking-change 11.0.0 `_focusMonitor` parameter to become required.
-    _focusMonitor) {
-        super();
-        this._element = _element;
-        this._changeDetector = _changeDetector;
-        this._focusMonitor = _focusMonitor;
-        this._multiple = true;
-        this._contentInitialized = false;
-        /** Emits a change event whenever the selected state of an option changes. */
-        this.selectionChange = new EventEmitter();
-        /**
-         * Tabindex of the selection list.
-         * @breaking-change 11.0.0 Remove `tabIndex` input.
-         */
-        this.tabIndex = 0;
-        /** Theme color of the selection list. This sets the checkbox color for all list options. */
-        this.color = 'accent';
-        /**
-         * Function used for comparing an option against the selected value when determining which
-         * options should appear as selected. The first argument is the value of an options. The second
-         * one is a value from the selected value. A boolean must be returned.
-         */
-        this.compareWith = (a1, a2) => a1 === a2;
-        this._disabled = false;
-        /** The currently selected options. */
-        this.selectedOptions = new SelectionModel(this._multiple);
-        /** The tabindex of the selection list. */
-        this._tabIndex = -1;
-        /** View to model callback that should be called whenever the selected options change. */
-        this._onChange = (_) => { };
-        /** Emits when the list has been destroyed. */
-        this._destroyed = new Subject();
-        /** View to model callback that should be called if the list or its options lost focus. */
-        this._onTouched = () => { };
-    }
-    /** Whether the selection list is disabled. */
-    get disabled() { return this._disabled; }
-    set disabled(value) {
-        this._disabled = coerceBooleanProperty(value);
-        // The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection
-        // strategy. Therefore the options will not check for any changes if the `MatSelectionList`
-        // changed its state. Since we know that a change to `disabled` property of the list affects
-        // the state of the options, we manually mark each option for check.
-        this._markOptionsForCheck();
-    }
-    /** Whether selection is limited to one or multiple items (default multiple). */
-    get multiple() { return this._multiple; }
-    set multiple(value) {
-        const newValue = coerceBooleanProperty(value);
-        if (newValue !== this._multiple) {
-            if (this._contentInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {
-                throw new Error('Cannot change `multiple` mode of mat-selection-list after initialization.');
-            }
-            this._multiple = newValue;
-            this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);
-        }
-    }
-    ngAfterContentInit() {
-        var _a;
-        this._contentInitialized = true;
-        this._keyManager = new FocusKeyManager(this.options)
-            .withWrap()
-            .withTypeAhead()
-            .withHomeAndEnd()
-            // Allow disabled items to be focusable. For accessibility reasons, there must be a way for
-            // screenreader users, that allows reading the different options of the list.
-            .skipPredicate(() => false)
-            .withAllowedModifierKeys(['shiftKey']);
-        if (this._value) {
-            this._setOptionsFromValues(this._value);
-        }
-        // If the user attempts to tab out of the selection list, allow focus to escape.
-        this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {
-            this._allowFocusEscape();
-        });
-        // When the number of options change, update the tabindex of the selection list.
-        this.options.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {
-            this._updateTabIndex();
-        });
-        // Sync external changes to the model back to the options.
-        this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {
-            if (event.added) {
-                for (let item of event.added) {
-                    item.selected = true;
-                }
-            }
-            if (event.removed) {
-                for (let item of event.removed) {
-                    item.selected = false;
-                }
-            }
-        });
-        // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.
-        (_a = this._focusMonitor) === null || _a === void 0 ? void 0 : _a.monitor(this._element).pipe(takeUntil(this._destroyed)).subscribe(origin => {
-            var _a;
-            if (origin === 'keyboard' || origin === 'program') {
-                let toFocus = 0;
-                for (let i = 0; i < this.options.length; i++) {
-                    if ((_a = this.options.get(i)) === null || _a === void 0 ? void 0 : _a.selected) {
-                        toFocus = i;
-                        break;
-                    }
-                }
-                this._keyManager.setActiveItem(toFocus);
-            }
-        });
-    }
-    ngOnChanges(changes) {
-        const disableRippleChanges = changes['disableRipple'];
-        const colorChanges = changes['color'];
-        if ((disableRippleChanges && !disableRippleChanges.firstChange) ||
-            (colorChanges && !colorChanges.firstChange)) {
-            this._markOptionsForCheck();
-        }
-    }
-    ngOnDestroy() {
-        var _a;
-        // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.
-        (_a = this._focusMonitor) === null || _a === void 0 ? void 0 : _a.stopMonitoring(this._element);
-        this._destroyed.next();
-        this._destroyed.complete();
-        this._isDestroyed = true;
-    }
-    /** Focuses the selection list. */
-    focus(options) {
-        this._element.nativeElement.focus(options);
-    }
-    /** Selects all of the options. Returns the options that changed as a result. */
-    selectAll() {
-        return this._setAllOptionsSelected(true);
-    }
-    /** Deselects all of the options. Returns the options that changed as a result. */
-    deselectAll() {
-        return this._setAllOptionsSelected(false);
-    }
-    /** Sets the focused option of the selection-list. */
-    _setFocusedOption(option) {
-        this._keyManager.updateActiveItem(option);
-    }
-    /**
-     * Removes an option from the selection list and updates the active item.
-     * @returns Currently-active item.
-     */
-    _removeOptionFromList(option) {
-        const optionIndex = this._getOptionIndex(option);
-        if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {
-            // Check whether the option is the last item
-            if (optionIndex > 0) {
-                this._keyManager.updateActiveItem(optionIndex - 1);
-            }
-            else if (optionIndex === 0 && this.options.length > 1) {
-                this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));
-            }
-        }
-        return this._keyManager.activeItem;
-    }
-    /** Passes relevant key presses to our key manager. */
-    _keydown(event) {
-        const keyCode = event.keyCode;
-        const manager = this._keyManager;
-        const previousFocusIndex = manager.activeItemIndex;
-        const hasModifier = hasModifierKey(event);
-        switch (keyCode) {
-            case SPACE:
-            case ENTER:
-                if (!hasModifier && !manager.isTyping()) {
-                    this._toggleFocusedOption();
-                    // Always prevent space from scrolling the page since the list has focus
-                    event.preventDefault();
-                }
-                break;
-            default:
-                // The "A" key gets special treatment, because it's used for the "select all" functionality.
-                if (keyCode === A && this.multiple && hasModifierKey(event, 'ctrlKey') &&
-                    !manager.isTyping()) {
-                    const shouldSelect = this.options.some(option => !option.disabled && !option.selected);
-                    this._setAllOptionsSelected(shouldSelect, true, true);
-                    event.preventDefault();
-                }
-                else {
-                    manager.onKeydown(event);
-                }
-        }
-        if (this.multiple && (keyCode === UP_ARROW || keyCode === DOWN_ARROW) && event.shiftKey &&
-            manager.activeItemIndex !== previousFocusIndex) {
-            this._toggleFocusedOption();
-        }
-    }
-    /** Reports a value change to the ControlValueAccessor */
-    _reportValueChange() {
-        // Stop reporting value changes after the list has been destroyed. This avoids
-        // cases where the list might wrongly reset its value once it is removed, but
-        // the form control is still live.
-        if (this.options && !this._isDestroyed) {
-            const value = this._getSelectedOptionValues();
-            this._onChange(value);
-            this._value = value;
-        }
-    }
-    /** Emits a change event if the selected state of an option changed. */
-    _emitChangeEvent(options) {
-        this.selectionChange.emit(new MatSelectionListChange(this, options[0], options));
-    }
-    /** Implemented as part of ControlValueAccessor. */
-    writeValue(values) {
-        this._value = values;
-        if (this.options) {
-            this._setOptionsFromValues(values || []);
-        }
-    }
-    /** Implemented as a part of ControlValueAccessor. */
-    setDisabledState(isDisabled) {
-        this.disabled = isDisabled;
-    }
-    /** Implemented as part of ControlValueAccessor. */
-    registerOnChange(fn) {
-        this._onChange = fn;
-    }
-    /** Implemented as part of ControlValueAccessor. */
-    registerOnTouched(fn) {
-        this._onTouched = fn;
-    }
-    /** Sets the selected options based on the specified values. */
-    _setOptionsFromValues(values) {
-        this.options.forEach(option => option._setSelected(false));
-        values.forEach(value => {
-            const correspondingOption = this.options.find(option => {
-                // Skip options that are already in the model. This allows us to handle cases
-                // where the same primitive value is selected multiple times.
-                return option.selected ? false : this.compareWith(option.value, value);
-            });
-            if (correspondingOption) {
-                correspondingOption._setSelected(true);
-            }
-        });
-    }
-    /** Returns the values of the selected options. */
-    _getSelectedOptionValues() {
-        return this.options.filter(option => option.selected).map(option => option.value);
-    }
-    /** Toggles the state of the currently focused option if enabled. */
-    _toggleFocusedOption() {
-        let focusedIndex = this._keyManager.activeItemIndex;
-        if (focusedIndex != null && this._isValidIndex(focusedIndex)) {
-            let focusedOption = this.options.toArray()[focusedIndex];
-            if (focusedOption && !focusedOption.disabled && (this._multiple || !focusedOption.selected)) {
-                focusedOption.toggle();
-                // Emit a change event because the focused option changed its state through user
-                // interaction.
-                this._emitChangeEvent([focusedOption]);
-            }
-        }
-    }
-    /**
-     * Sets the selected state on all of the options
-     * and emits an event if anything changed.
-     */
-    _setAllOptionsSelected(isSelected, skipDisabled, isUserInput) {
-        // Keep track of whether anything changed, because we only want to
-        // emit the changed event when something actually changed.
-        const changedOptions = [];
-        this.options.forEach(option => {
-            if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {
-                changedOptions.push(option);
-            }
-        });
-        if (changedOptions.length) {
-            this._reportValueChange();
-            if (isUserInput) {
-                this._emitChangeEvent(changedOptions);
-            }
-        }
-        return changedOptions;
-    }
-    /**
-     * Utility to ensure all indexes are valid.
-     * @param index The index to be checked.
-     * @returns True if the index is valid for our list of options.
-     */
-    _isValidIndex(index) {
-        return index >= 0 && index < this.options.length;
-    }
-    /** Returns the index of the specified list option. */
-    _getOptionIndex(option) {
-        return this.options.toArray().indexOf(option);
-    }
-    /** Marks all the options to be checked in the next change detection run. */
-    _markOptionsForCheck() {
-        if (this.options) {
-            this.options.forEach(option => option._markForCheck());
-        }
-    }
-    /**
-     * Removes the tabindex from the selection list and resets it back afterwards, allowing the user
-     * to tab out of it. This prevents the list from capturing focus and redirecting it back within
-     * the list, creating a focus trap if it user tries to tab away.
-     */
-    _allowFocusEscape() {
-        this._tabIndex = -1;
-        setTimeout(() => {
-            this._tabIndex = 0;
-            this._changeDetector.markForCheck();
-        });
-    }
-    /** Updates the tabindex based upon if the selection list is empty. */
-    _updateTabIndex() {
-        this._tabIndex = (this.options.length === 0) ? -1 : 0;
-    }
-}
-MatSelectionList.ɵfac = function MatSelectionList_Factory(t) { return new (t || MatSelectionList)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.FocusMonitor)); };
-MatSelectionList.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatSelectionList, selectors: [["mat-selection-list"]], contentQueries: function MatSelectionList_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
-        ɵngcc0.ɵɵcontentQuery(dirIndex, MatListOption, 5);
-    } if (rf & 2) {
-        let _t;
-        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.options = _t);
-    } }, hostAttrs: ["role", "listbox", 1, "mat-selection-list", "mat-list-base"], hostVars: 3, hostBindings: function MatSelectionList_HostBindings(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵlistener("keydown", function MatSelectionList_keydown_HostBindingHandler($event) { return ctx._keydown($event); });
-    } if (rf & 2) {
-        ɵngcc0.ɵɵattribute("aria-multiselectable", ctx.multiple)("aria-disabled", ctx.disabled.toString())("tabindex", ctx._tabIndex);
-    } }, inputs: { disableRipple: "disableRipple", tabIndex: "tabIndex", color: "color", compareWith: "compareWith", disabled: "disabled", multiple: "multiple" }, outputs: { selectionChange: "selectionChange" }, exportAs: ["matSelectionList"], features: [ɵngcc0.ɵɵProvidersFeature([MAT_SELECTION_LIST_VALUE_ACCESSOR]), ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function MatSelectionList_Template(rf, ctx) { if (rf & 1) {
-        ɵngcc0.ɵɵprojectionDef();
-        ɵngcc0.ɵɵprojection(0);
-    } }, styles: [_c1], encapsulation: 2, changeDetection: 0 });
-MatSelectionList.ctorParameters = () => [
-    { type: ElementRef },
-    { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
-    { type: ChangeDetectorRef },
-    { type: FocusMonitor }
-];
-MatSelectionList.propDecorators = {
-    options: [{ type: ContentChildren, args: [MatListOption, { descendants: true },] }],
-    selectionChange: [{ type: Output }],
-    tabIndex: [{ type: Input }],
-    color: [{ type: Input }],
-    compareWith: [{ type: Input }],
-    disabled: [{ type: Input }],
-    multiple: [{ type: Input }]
-};
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatSelectionList, [{
-        type: Component,
-        args: [{
-                selector: 'mat-selection-list',
-                exportAs: 'matSelectionList',
-                inputs: ['disableRipple'],
-                host: {
-                    'role': 'listbox',
-                    'class': 'mat-selection-list mat-list-base',
-                    '(keydown)': '_keydown($event)',
-                    '[attr.aria-multiselectable]': 'multiple',
-                    '[attr.aria-disabled]': 'disabled.toString()',
-                    '[attr.tabindex]': '_tabIndex'
-                },
-                template: '<ng-content></ng-content>',
-                encapsulation: ViewEncapsulation.None,
-                providers: [MAT_SELECTION_LIST_VALUE_ACCESSOR],
-                changeDetection: ChangeDetectionStrategy.OnPush,
-                styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}\n"]
-            }]
-    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: String, decorators: [{
-                type: Attribute,
-                args: ['tabindex']
-            }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc3.FocusMonitor }]; }, { selectionChange: [{
-            type: Output
-        }], tabIndex: [{
-            type: Input
-        }], color: [{
-            type: Input
-        }], compareWith: [{
-            type: Input
-        }], disabled: [{
-            type: Input
-        }], multiple: [{
-            type: Input
-        }], options: [{
-            type: ContentChildren,
-            args: [MatListOption, { descendants: true }]
-        }] }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-class MatListModule {
-}
-MatListModule.ɵfac = function MatListModule_Factory(t) { return new (t || MatListModule)(); };
-MatListModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MatListModule });
-MatListModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule], MatLineModule,
-        MatCommonModule,
-        MatPseudoCheckboxModule,
-        MatDividerModule] });
-(function () { (typeof ngDevMode === "undefined" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatListModule, [{
-        type: NgModule,
-        args: [{
-                imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],
-                exports: [
-                    MatList,
-                    MatNavList,
-                    MatListItem,
-                    MatListAvatarCssMatStyler,
-                    MatLineModule,
-                    MatCommonModule,
-                    MatListIconCssMatStyler,
-                    MatListSubheaderCssMatStyler,
-                    MatPseudoCheckboxModule,
-                    MatSelectionList,
-                    MatListOption,
-                    MatDividerModule
-                ],
-                declarations: [
-                    MatList,
-                    MatNavList,
-                    MatListItem,
-                    MatListAvatarCssMatStyler,
-                    MatListIconCssMatStyler,
-                    MatListSubheaderCssMatStyler,
-                    MatSelectionList,
-                    MatListOption
-                ]
-            }]
-    }], null, null); })();
-(function () { (typeof ngJitMode === "undefined" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatListModule, { declarations: function () { return [MatList, MatNavList, MatListItem, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatSelectionList, MatListOption]; }, imports: function () { return [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule]; }, exports: function () { return [MatList, MatNavList, MatListItem, MatListAvatarCssMatStyler, MatLineModule,
-        MatCommonModule, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatPseudoCheckboxModule, MatSelectionList, MatListOption, MatDividerModule]; } }); })();
-
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-/**
- * Generated bundle index. Do not edit.
- */
-
-export { MAT_LIST, MAT_NAV_LIST, MAT_SELECTION_LIST_VALUE_ACCESSOR, MatList, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListItem, MatListModule, MatListOption, MatListSubheaderCssMatStyler, MatNavList, MatSelectionList, MatSelectionListChange };
-
-//# sourceMappingURL=list.js.map
Index: trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/list.js.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/list.js.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"list.js","sources":["../../../../../../src/material/list/list.ts","../../../../../../src/material/list/selection-list.ts","../../../../../../src/material/list/list-module.ts","../../../../../../src/material/list/public-api.ts","../../../../../../src/material/list/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty, BooleanInput} from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  Optional,\n  QueryList,\n  ViewEncapsulation,\n  OnChanges,\n  OnDestroy,\n  ChangeDetectorRef,\n  Input,\n  InjectionToken,\n  Inject,\n} from '@angular/core';\nimport {\n  CanDisable,\n  CanDisableRipple,\n  MatLine,\n  setLines,\n  mixinDisableRipple,\n  mixinDisabled,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n// Boilerplate for applying mixins to MatList.\n/** @docs-private */\nconst _MatListBase = mixinDisabled(mixinDisableRipple(class {}));\n\n// Boilerplate for applying mixins to MatListItem.\n/** @docs-private */\nconst _MatListItemMixinBase = mixinDisableRipple(class {});\n\n/**\n * Injection token that can be used to inject instances of `MatList`. It serves as\n * alternative token to the actual `MatList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_LIST = new InjectionToken<MatList>('MatList');\n\n/**\n * Injection token that can be used to inject instances of `MatNavList`. It serves as\n * alternative token to the actual `MatNavList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_NAV_LIST = new InjectionToken<MatNavList>('MatNavList');\n\n@Component({\n  selector: 'mat-nav-list',\n  exportAs: 'matNavList',\n  host: {\n    'role': 'navigation',\n    'class': 'mat-nav-list mat-list-base'\n  },\n  templateUrl: 'list.html',\n  styleUrls: ['list.css'],\n  inputs: ['disableRipple', 'disabled'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [{provide: MAT_NAV_LIST, useExisting: MatNavList}],\n})\nexport class MatNavList extends _MatListBase implements CanDisable, CanDisableRipple,\n  OnChanges, OnDestroy {\n  /** Emits when the state of the list changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableRipple: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n@Component({\n  selector: 'mat-list, mat-action-list',\n  exportAs: 'matList',\n  templateUrl: 'list.html',\n  host: {\n    'class': 'mat-list mat-list-base'\n  },\n  styleUrls: ['list.css'],\n  inputs: ['disableRipple', 'disabled'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [{provide: MAT_LIST, useExisting: MatList}],\n})\nexport class MatList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges,\n  OnDestroy {\n  /** Emits when the state of the list changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  constructor(private _elementRef: ElementRef<HTMLElement>) {\n    super();\n\n    if (this._getListType() === 'action-list') {\n      _elementRef.nativeElement.classList.add('mat-action-list');\n    }\n  }\n\n  _getListType(): 'list' | 'action-list' | null {\n    const nodeName = this._elementRef.nativeElement.nodeName.toLowerCase();\n\n    if (nodeName === 'mat-list') {\n      return 'list';\n    }\n\n    if (nodeName === 'mat-action-list') {\n      return 'action-list';\n    }\n\n    return null;\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n\n  static ngAcceptInputType_disableRipple: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n  selector: '[mat-list-avatar], [matListAvatar]',\n  host: {'class': 'mat-list-avatar'}\n})\nexport class MatListAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n  selector: '[mat-list-icon], [matListIcon]',\n  host: {'class': 'mat-list-icon'}\n})\nexport class MatListIconCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n  selector: '[mat-subheader], [matSubheader]',\n  host: {'class': 'mat-subheader'}\n})\nexport class MatListSubheaderCssMatStyler {}\n\n/** An item within a Material Design list. */\n@Component({\n  selector: 'mat-list-item, a[mat-list-item], button[mat-list-item]',\n  exportAs: 'matListItem',\n  host: {\n    'class': 'mat-list-item mat-focus-indicator',\n    '[class.mat-list-item-disabled]': 'disabled',\n    // @breaking-change 8.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.\n    '[class.mat-list-item-avatar]': '_avatar || _icon',\n    '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n  },\n  inputs: ['disableRipple'],\n  templateUrl: 'list-item.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListItem extends _MatListItemMixinBase implements AfterContentInit,\n    CanDisableRipple, OnDestroy {\n  private _isInteractiveList: boolean = false;\n  private _list?: MatNavList | MatList;\n  private readonly _destroyed = new Subject<void>();\n\n  @ContentChildren(MatLine, {descendants: true}) _lines: QueryList<MatLine>;\n  @ContentChild(MatListAvatarCssMatStyler) _avatar: MatListAvatarCssMatStyler;\n  @ContentChild(MatListIconCssMatStyler) _icon: MatListIconCssMatStyler;\n\n  constructor(private _element: ElementRef<HTMLElement>,\n              _changeDetectorRef: ChangeDetectorRef,\n              @Optional() @Inject(MAT_NAV_LIST) navList?: MatNavList,\n              @Optional() @Inject(MAT_LIST) list?: MatList) {\n    super();\n    this._isInteractiveList = !!(navList || (list && list._getListType() === 'action-list'));\n    this._list = navList || list;\n\n    // If no type attribute is specified for <button>, set it to \"button\".\n    // If a type attribute is already specified, do nothing.\n    const element = this._getHostElement();\n\n    if (element.nodeName.toLowerCase() === 'button' && !element.hasAttribute('type')) {\n      element.setAttribute('type', 'button');\n    }\n\n    if (this._list) {\n      // React to changes in the state of the parent list since\n      // some of the item's properties depend on it (e.g. `disableRipple`).\n      this._list._stateChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n        _changeDetectorRef.markForCheck();\n      });\n    }\n  }\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return this._disabled || !!(this._list && this._list.disabled); }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled = false;\n\n  ngAfterContentInit() {\n    setLines(this._lines, this._element);\n  }\n\n  ngOnDestroy() {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /** Whether this list item should show a ripple effect when clicked. */\n  _isRippleDisabled() {\n    return !this._isInteractiveList || this.disableRipple ||\n           !!(this._list && this._list.disableRipple);\n  }\n\n  /** Retrieves the DOM element of the component host. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  static ngAcceptInputType_disableRipple: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusableOption, FocusKeyManager, FocusMonitor} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n  A,\n  DOWN_ARROW,\n  ENTER,\n  hasModifierKey,\n  SPACE,\n  UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport {\n  AfterContentInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n  CanDisableRipple,\n  MatLine,\n  mixinDisableRipple,\n  setLines,\n  ThemePalette,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatListAvatarCssMatStyler, MatListIconCssMatStyler} from './list';\n\nconst _MatSelectionListBase = mixinDisableRipple(class {});\nconst _MatListOptionBase = mixinDisableRipple(class {});\n\n/** @docs-private */\nexport const MAT_SELECTION_LIST_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MatSelectionList),\n  multi: true\n};\n\n/** Change event that is being fired whenever the selected state of an option changes. */\nexport class MatSelectionListChange {\n  constructor(\n    /** Reference to the selection list that emitted the event. */\n    public source: MatSelectionList,\n    /**\n     * Reference to the option that has been changed.\n     * @deprecated Use `options` instead, because some events may change more than one option.\n     * @breaking-change 12.0.0\n     */\n    public option: MatListOption,\n    /** Reference to the options that have been changed. */\n    public options: MatListOption[]) {}\n}\n\n/**\n * Type describing possible positions of a checkbox in a list option\n * with respect to the list item's text.\n */\nexport type MatListOptionCheckboxPosition = 'before'|'after';\n\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is selected.\n */\n@Component({\n  selector: 'mat-list-option',\n  exportAs: 'matListOption',\n  inputs: ['disableRipple'],\n  host: {\n    'role': 'option',\n    'class': 'mat-list-item mat-list-option mat-focus-indicator',\n    '(focus)': '_handleFocus()',\n    '(blur)': '_handleBlur()',\n    '(click)': '_handleClick()',\n    '[class.mat-list-item-disabled]': 'disabled',\n    '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n    // Manually set the \"primary\" or \"warn\" class if the color has been explicitly\n    // set to \"primary\" or \"warn\". The pseudo checkbox picks up these classes for\n    // its theme.\n    '[class.mat-primary]': 'color === \"primary\"',\n    // Even though accent is the default, we need to set this class anyway, because the  list might\n    // be placed inside a parent that has one of the other colors with a higher specificity.\n    '[class.mat-accent]': 'color !== \"primary\" && color !== \"warn\"',\n    '[class.mat-warn]': 'color === \"warn\"',\n    '[class.mat-list-single-selected-option]': 'selected && !selectionList.multiple',\n    '[attr.aria-selected]': 'selected',\n    '[attr.aria-disabled]': 'disabled',\n    '[attr.tabindex]': '-1',\n  },\n  templateUrl: 'list-option.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListOption extends _MatListOptionBase implements AfterContentInit, OnDestroy,\n                                                                      OnInit, FocusableOption,\n                                                                      CanDisableRipple {\n  private _selected = false;\n  private _disabled = false;\n  private _hasFocus = false;\n\n  @ContentChild(MatListAvatarCssMatStyler) _avatar: MatListAvatarCssMatStyler;\n  @ContentChild(MatListIconCssMatStyler) _icon: MatListIconCssMatStyler;\n  @ContentChildren(MatLine, {descendants: true}) _lines: QueryList<MatLine>;\n\n  /**\n   * Emits when the selected state of the option has changed.\n   * Use to facilitate two-data binding to the `selected` property.\n   * @docs-private\n   */\n  @Output()\n  readonly selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /** DOM element containing the item's text. */\n  @ViewChild('text') _text: ElementRef;\n\n  /** Whether the label should appear before or after the checkbox. Defaults to 'after' */\n  @Input() checkboxPosition: MatListOptionCheckboxPosition = 'after';\n\n  /** Theme color of the list option. This sets the color of the checkbox. */\n  @Input()\n  get color(): ThemePalette { return this._color || this.selectionList.color; }\n  set color(newValue: ThemePalette) { this._color = newValue; }\n  private _color: ThemePalette;\n\n  /**\n   * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`\n   * in the first cycle.\n   */\n  private _inputsInitialized = false;\n  /** Value of the option */\n  @Input()\n  get value(): any { return this._value; }\n  set value(newValue: any) {\n    if (\n      this.selected &&\n      !this.selectionList.compareWith(newValue, this.value) &&\n      this._inputsInitialized\n    ) {\n      this.selected = false;\n    }\n\n    this._value = newValue;\n  }\n  private _value: any;\n\n  /** Whether the option is disabled. */\n  @Input()\n  get disabled() { return this._disabled || (this.selectionList && this.selectionList.disabled); }\n  set disabled(value: any) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this._changeDetector.markForCheck();\n    }\n  }\n\n  /** Whether the option is selected. */\n  @Input()\n  get selected(): boolean { return this.selectionList.selectedOptions.isSelected(this); }\n  set selected(value: boolean) {\n    const isSelected = coerceBooleanProperty(value);\n\n    if (isSelected !== this._selected) {\n      this._setSelected(isSelected);\n\n      if (isSelected || this.selectionList.multiple) {\n        this.selectionList._reportValueChange();\n      }\n    }\n  }\n\n  constructor(private _element: ElementRef<HTMLElement>,\n              private _changeDetector: ChangeDetectorRef,\n              /** @docs-private */\n              @Inject(forwardRef(() => MatSelectionList)) public selectionList: MatSelectionList) {\n    super();\n  }\n\n  ngOnInit() {\n    const list = this.selectionList;\n\n    if (list._value && list._value.some(value => list.compareWith(value, this._value))) {\n      this._setSelected(true);\n    }\n\n    const wasSelected = this._selected;\n\n    // List options that are selected at initialization can't be reported properly to the form\n    // control. This is because it takes some time until the selection-list knows about all\n    // available options. Also it can happen that the ControlValueAccessor has an initial value\n    // that should be used instead. Deferring the value change report to the next tick ensures\n    // that the form control value is not being overwritten.\n    Promise.resolve().then(() => {\n      if (this._selected || wasSelected) {\n        this.selected = true;\n        this._changeDetector.markForCheck();\n      }\n    });\n    this._inputsInitialized = true;\n  }\n\n  ngAfterContentInit() {\n    setLines(this._lines, this._element);\n  }\n\n  ngOnDestroy(): void {\n    if (this.selected) {\n      // We have to delay this until the next tick in order\n      // to avoid changed after checked errors.\n      Promise.resolve().then(() => {\n        this.selected = false;\n      });\n    }\n\n    const hadFocus = this._hasFocus;\n    const newActiveItem = this.selectionList._removeOptionFromList(this);\n\n    // Only move focus if this option was focused at the time it was destroyed.\n    if (hadFocus && newActiveItem) {\n      newActiveItem.focus();\n    }\n  }\n\n  /** Toggles the selection state of the option. */\n  toggle(): void {\n    this.selected = !this.selected;\n  }\n\n  /** Allows for programmatic focusing of the option. */\n  focus(): void {\n    this._element.nativeElement.focus();\n  }\n\n  /**\n   * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n   * @docs-private\n   */\n  getLabel() {\n    return this._text ? (this._text.nativeElement.textContent || '') : '';\n  }\n\n  /** Whether this list item should show a ripple effect when clicked. */\n  _isRippleDisabled() {\n    return this.disabled || this.disableRipple || this.selectionList.disableRipple;\n  }\n\n  _handleClick() {\n    if (!this.disabled && (this.selectionList.multiple || !this.selected)) {\n      this.toggle();\n\n      // Emit a change event if the selected state of the option changed through user interaction.\n      this.selectionList._emitChangeEvent([this]);\n    }\n  }\n\n  _handleFocus() {\n    this.selectionList._setFocusedOption(this);\n    this._hasFocus = true;\n  }\n\n  _handleBlur() {\n    this.selectionList._onTouched();\n    this._hasFocus = false;\n  }\n\n  /** Retrieves the DOM element of the component host. */\n  _getHostElement(): HTMLElement {\n    return this._element.nativeElement;\n  }\n\n  /** Sets the selected state of the option. Returns whether the value has changed. */\n  _setSelected(selected: boolean): boolean {\n    if (selected === this._selected) {\n      return false;\n    }\n\n    this._selected = selected;\n\n    if (selected) {\n      this.selectionList.selectedOptions.select(this);\n    } else {\n      this.selectionList.selectedOptions.deselect(this);\n    }\n\n    this.selectedChange.emit(selected);\n    this._changeDetector.markForCheck();\n    return true;\n  }\n\n  /**\n   * Notifies Angular that the option needs to be checked in the next change detection run. Mainly\n   * used to trigger an update of the list option if the disabled state of the selection list\n   * changed.\n   */\n  _markForCheck() {\n    this._changeDetector.markForCheck();\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_selected: BooleanInput;\n  static ngAcceptInputType_disableRipple: BooleanInput;\n}\n\n\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\n@Component({\n  selector: 'mat-selection-list',\n  exportAs: 'matSelectionList',\n  inputs: ['disableRipple'],\n  host: {\n    'role': 'listbox',\n    'class': 'mat-selection-list mat-list-base',\n    '(keydown)': '_keydown($event)',\n    '[attr.aria-multiselectable]': 'multiple',\n    '[attr.aria-disabled]': 'disabled.toString()',\n    '[attr.tabindex]': '_tabIndex',\n  },\n  template: '<ng-content></ng-content>',\n  styleUrls: ['list.css'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [MAT_SELECTION_LIST_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatSelectionList extends _MatSelectionListBase implements CanDisableRipple,\n  AfterContentInit, ControlValueAccessor, OnDestroy, OnChanges {\n  private _multiple = true;\n  private _contentInitialized = false;\n\n  /** The FocusKeyManager which handles focus. */\n  _keyManager: FocusKeyManager<MatListOption>;\n\n  /** The option components contained within this selection-list. */\n  @ContentChildren(MatListOption, {descendants: true}) options: QueryList<MatListOption>;\n\n  /** Emits a change event whenever the selected state of an option changes. */\n  @Output() readonly selectionChange: EventEmitter<MatSelectionListChange> =\n      new EventEmitter<MatSelectionListChange>();\n\n  /**\n   * Tabindex of the selection list.\n   * @breaking-change 11.0.0 Remove `tabIndex` input.\n   */\n  @Input() tabIndex: number = 0;\n\n  /** Theme color of the selection list. This sets the checkbox color for all list options. */\n  @Input() color: ThemePalette = 'accent';\n\n  /**\n   * Function used for comparing an option against the selected value when determining which\n   * options should appear as selected. The first argument is the value of an options. The second\n   * one is a value from the selected value. A boolean must be returned.\n   */\n  @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\n\n  /** Whether the selection list is disabled. */\n  @Input()\n  get disabled(): boolean { return this._disabled; }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection\n    // strategy. Therefore the options will not check for any changes if the `MatSelectionList`\n    // changed its state. Since we know that a change to `disabled` property of the list affects\n    // the state of the options, we manually mark each option for check.\n    this._markOptionsForCheck();\n  }\n  private _disabled: boolean = false;\n\n  /** Whether selection is limited to one or multiple items (default multiple). */\n  @Input()\n  get multiple(): boolean { return this._multiple; }\n  set multiple(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._multiple) {\n      if (this._contentInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw new Error(\n            'Cannot change `multiple` mode of mat-selection-list after initialization.');\n      }\n\n      this._multiple = newValue;\n      this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);\n    }\n  }\n\n  /** The currently selected options. */\n  selectedOptions = new SelectionModel<MatListOption>(this._multiple);\n\n  /** The tabindex of the selection list. */\n  _tabIndex = -1;\n\n  /** View to model callback that should be called whenever the selected options change. */\n  private _onChange: (value: any) => void = (_: any) => {};\n\n  /** Keeps track of the currently-selected value. */\n  _value: string[]|null;\n\n  /** Emits when the list has been destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /** View to model callback that should be called if the list or its options lost focus. */\n  _onTouched: () => void = () => {};\n\n  /** Whether the list has been destroyed. */\n  private _isDestroyed: boolean;\n\n  constructor(private _element: ElementRef<HTMLElement>,\n    // @breaking-change 11.0.0 Remove `tabIndex` parameter.\n    @Attribute('tabindex') tabIndex: string,\n    private _changeDetector: ChangeDetectorRef,\n    // @breaking-change 11.0.0 `_focusMonitor` parameter to become required.\n    private _focusMonitor?: FocusMonitor) {\n    super();\n  }\n\n  ngAfterContentInit(): void {\n    this._contentInitialized = true;\n\n    this._keyManager = new FocusKeyManager<MatListOption>(this.options)\n      .withWrap()\n      .withTypeAhead()\n      .withHomeAndEnd()\n      // Allow disabled items to be focusable. For accessibility reasons, there must be a way for\n      // screenreader users, that allows reading the different options of the list.\n      .skipPredicate(() => false)\n      .withAllowedModifierKeys(['shiftKey']);\n\n    if (this._value) {\n      this._setOptionsFromValues(this._value);\n    }\n\n    // If the user attempts to tab out of the selection list, allow focus to escape.\n    this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      this._allowFocusEscape();\n    });\n\n    // When the number of options change, update the tabindex of the selection list.\n    this.options.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n      this._updateTabIndex();\n    });\n\n    // Sync external changes to the model back to the options.\n    this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {\n      if (event.added) {\n        for (let item of event.added) {\n          item.selected = true;\n        }\n      }\n\n      if (event.removed) {\n        for (let item of event.removed) {\n          item.selected = false;\n        }\n      }\n    });\n\n    // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.\n    this._focusMonitor?.monitor(this._element)\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(origin => {\n        if (origin === 'keyboard' || origin === 'program') {\n          let toFocus = 0;\n          for (let i = 0; i < this.options.length; i++) {\n            if (this.options.get(i)?.selected) {\n              toFocus = i;\n              break;\n            }\n          }\n          this._keyManager.setActiveItem(toFocus);\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const disableRippleChanges = changes['disableRipple'];\n    const colorChanges = changes['color'];\n\n    if ((disableRippleChanges && !disableRippleChanges.firstChange) ||\n        (colorChanges && !colorChanges.firstChange)) {\n      this._markOptionsForCheck();\n    }\n  }\n\n  ngOnDestroy() {\n    // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.\n    this._focusMonitor?.stopMonitoring(this._element);\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._isDestroyed = true;\n  }\n\n  /** Focuses the selection list. */\n  focus(options?: FocusOptions) {\n    this._element.nativeElement.focus(options);\n  }\n\n  /** Selects all of the options. Returns the options that changed as a result. */\n  selectAll(): MatListOption[] {\n    return this._setAllOptionsSelected(true);\n  }\n\n  /** Deselects all of the options. Returns the options that changed as a result. */\n  deselectAll(): MatListOption[] {\n    return this._setAllOptionsSelected(false);\n  }\n\n  /** Sets the focused option of the selection-list. */\n  _setFocusedOption(option: MatListOption) {\n    this._keyManager.updateActiveItem(option);\n  }\n\n  /**\n   * Removes an option from the selection list and updates the active item.\n   * @returns Currently-active item.\n   */\n  _removeOptionFromList(option: MatListOption): MatListOption | null {\n    const optionIndex = this._getOptionIndex(option);\n\n    if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {\n      // Check whether the option is the last item\n      if (optionIndex > 0) {\n        this._keyManager.updateActiveItem(optionIndex - 1);\n      } else if (optionIndex === 0 && this.options.length > 1) {\n        this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));\n      }\n    }\n\n    return this._keyManager.activeItem;\n  }\n\n  /** Passes relevant key presses to our key manager. */\n  _keydown(event: KeyboardEvent) {\n    const keyCode = event.keyCode;\n    const manager = this._keyManager;\n    const previousFocusIndex = manager.activeItemIndex;\n    const hasModifier = hasModifierKey(event);\n\n    switch (keyCode) {\n      case SPACE:\n      case ENTER:\n        if (!hasModifier && !manager.isTyping()) {\n          this._toggleFocusedOption();\n          // Always prevent space from scrolling the page since the list has focus\n          event.preventDefault();\n        }\n        break;\n      default:\n        // The \"A\" key gets special treatment, because it's used for the \"select all\" functionality.\n        if (keyCode === A && this.multiple && hasModifierKey(event, 'ctrlKey') &&\n            !manager.isTyping()) {\n          const shouldSelect = this.options.some(option => !option.disabled && !option.selected);\n          this._setAllOptionsSelected(shouldSelect, true, true);\n          event.preventDefault();\n        } else {\n          manager.onKeydown(event);\n        }\n    }\n\n    if (this.multiple && (keyCode === UP_ARROW || keyCode === DOWN_ARROW) && event.shiftKey &&\n        manager.activeItemIndex !== previousFocusIndex) {\n      this._toggleFocusedOption();\n    }\n  }\n\n  /** Reports a value change to the ControlValueAccessor */\n  _reportValueChange() {\n    // Stop reporting value changes after the list has been destroyed. This avoids\n    // cases where the list might wrongly reset its value once it is removed, but\n    // the form control is still live.\n    if (this.options && !this._isDestroyed) {\n      const value = this._getSelectedOptionValues();\n      this._onChange(value);\n      this._value = value;\n    }\n  }\n\n  /** Emits a change event if the selected state of an option changed. */\n  _emitChangeEvent(options: MatListOption[]) {\n    this.selectionChange.emit(new MatSelectionListChange(this, options[0], options));\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  writeValue(values: string[]): void {\n    this._value = values;\n\n    if (this.options) {\n      this._setOptionsFromValues(values || []);\n    }\n  }\n\n  /** Implemented as a part of ControlValueAccessor. */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnChange(fn: (value: any) => void): void {\n    this._onChange = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  /** Sets the selected options based on the specified values. */\n  private _setOptionsFromValues(values: string[]) {\n    this.options.forEach(option => option._setSelected(false));\n\n    values.forEach(value => {\n      const correspondingOption = this.options.find(option => {\n        // Skip options that are already in the model. This allows us to handle cases\n        // where the same primitive value is selected multiple times.\n        return option.selected ? false : this.compareWith(option.value, value);\n      });\n\n      if (correspondingOption) {\n        correspondingOption._setSelected(true);\n      }\n    });\n  }\n\n  /** Returns the values of the selected options. */\n  private _getSelectedOptionValues(): string[] {\n    return this.options.filter(option => option.selected).map(option => option.value);\n  }\n\n  /** Toggles the state of the currently focused option if enabled. */\n  private _toggleFocusedOption(): void {\n    let focusedIndex = this._keyManager.activeItemIndex;\n\n    if (focusedIndex != null && this._isValidIndex(focusedIndex)) {\n      let focusedOption: MatListOption = this.options.toArray()[focusedIndex];\n\n      if (focusedOption && !focusedOption.disabled && (this._multiple || !focusedOption.selected)) {\n        focusedOption.toggle();\n\n        // Emit a change event because the focused option changed its state through user\n        // interaction.\n        this._emitChangeEvent([focusedOption]);\n      }\n    }\n  }\n\n  /**\n   * Sets the selected state on all of the options\n   * and emits an event if anything changed.\n   */\n  private _setAllOptionsSelected(\n    isSelected: boolean,\n    skipDisabled?: boolean,\n    isUserInput?: boolean): MatListOption[] {\n    // Keep track of whether anything changed, because we only want to\n    // emit the changed event when something actually changed.\n    const changedOptions: MatListOption[] = [];\n\n    this.options.forEach(option => {\n      if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {\n        changedOptions.push(option);\n      }\n    });\n\n    if (changedOptions.length) {\n      this._reportValueChange();\n\n      if (isUserInput) {\n        this._emitChangeEvent(changedOptions);\n      }\n    }\n\n    return changedOptions;\n  }\n\n  /**\n   * Utility to ensure all indexes are valid.\n   * @param index The index to be checked.\n   * @returns True if the index is valid for our list of options.\n   */\n  private _isValidIndex(index: number): boolean {\n    return index >= 0 && index < this.options.length;\n  }\n\n  /** Returns the index of the specified list option. */\n  private _getOptionIndex(option: MatListOption): number {\n    return this.options.toArray().indexOf(option);\n  }\n\n  /** Marks all the options to be checked in the next change detection run. */\n  private _markOptionsForCheck() {\n    if (this.options) {\n      this.options.forEach(option => option._markForCheck());\n    }\n  }\n\n  /**\n   * Removes the tabindex from the selection list and resets it back afterwards, allowing the user\n   * to tab out of it. This prevents the list from capturing focus and redirecting it back within\n   * the list, creating a focus trap if it user tries to tab away.\n   */\n  private _allowFocusEscape() {\n    this._tabIndex = -1;\n\n    setTimeout(() => {\n      this._tabIndex = 0;\n      this._changeDetector.markForCheck();\n    });\n  }\n\n  /** Updates the tabindex based upon if the selection list is empty. */\n  private _updateTabIndex(): void {\n    this._tabIndex = (this.options.length === 0) ? -1 : 0;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_disableRipple: BooleanInput;\n  static ngAcceptInputType_multiple: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n  MatCommonModule,\n  MatLineModule,\n  MatPseudoCheckboxModule,\n  MatRippleModule,\n} from '@angular/material/core';\nimport {\n  MatList,\n  MatNavList,\n  MatListAvatarCssMatStyler,\n  MatListIconCssMatStyler,\n  MatListItem,\n  MatListSubheaderCssMatStyler,\n} from './list';\nimport {MatListOption, MatSelectionList} from './selection-list';\nimport {MatDividerModule} from '@angular/material/divider';\n\n\n@NgModule({\n  imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n  exports: [\n    MatList,\n    MatNavList,\n    MatListItem,\n    MatListAvatarCssMatStyler,\n    MatLineModule,\n    MatCommonModule,\n    MatListIconCssMatStyler,\n    MatListSubheaderCssMatStyler,\n    MatPseudoCheckboxModule,\n    MatSelectionList,\n    MatListOption,\n    MatDividerModule\n  ],\n  declarations: [\n    MatList,\n    MatNavList,\n    MatListItem,\n    MatListAvatarCssMatStyler,\n    MatListIconCssMatStyler,\n    MatListSubheaderCssMatStyler,\n    MatSelectionList,\n    MatListOption\n  ],\n})\nexport class MatListModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './list-module';\nexport * from './list';\nexport * from './selection-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
Index: trip-planner-front/node_modules/@angular/material/list/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/index.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/list/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -3,4 +3,2 @@
  */
 export * from './public-api';
-
-//# sourceMappingURL=index.d.ts.map
Index: trip-planner-front/node_modules/@angular/material/list/index.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/index.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/**
- * Generated bundle index. Do not edit.
- */
-export * from './public-api';
Index: trip-planner-front/node_modules/@angular/material/list/index.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/index.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"index.d.ts","sources":["index.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n"]}
Index: trip-planner-front/node_modules/@angular/material/list/list-module.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list-module.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/list/list-module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -6,15 +6,4 @@
  * found in the LICENSE file at https://angular.io/license
  */
-import * as ɵngcc0 from '@angular/core';
-import * as ɵngcc1 from './list';
-import * as ɵngcc2 from './selection-list';
-import * as ɵngcc3 from '@angular/material/core';
-import * as ɵngcc4 from '@angular/common';
-import * as ɵngcc5 from '@angular/material/divider';
 export declare class MatListModule {
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListModule, never>;
-    static ɵmod: ɵngcc0.ɵɵNgModuleDeclaration<MatListModule, [typeof ɵngcc1.MatList, typeof ɵngcc1.MatNavList, typeof ɵngcc1.MatListItem, typeof ɵngcc1.MatListAvatarCssMatStyler, typeof ɵngcc1.MatListIconCssMatStyler, typeof ɵngcc1.MatListSubheaderCssMatStyler, typeof ɵngcc2.MatSelectionList, typeof ɵngcc2.MatListOption], [typeof ɵngcc3.MatLineModule, typeof ɵngcc3.MatRippleModule, typeof ɵngcc3.MatCommonModule, typeof ɵngcc3.MatPseudoCheckboxModule, typeof ɵngcc4.CommonModule], [typeof ɵngcc1.MatList, typeof ɵngcc1.MatNavList, typeof ɵngcc1.MatListItem, typeof ɵngcc1.MatListAvatarCssMatStyler, typeof ɵngcc3.MatLineModule, typeof ɵngcc3.MatCommonModule, typeof ɵngcc1.MatListIconCssMatStyler, typeof ɵngcc1.MatListSubheaderCssMatStyler, typeof ɵngcc3.MatPseudoCheckboxModule, typeof ɵngcc2.MatSelectionList, typeof ɵngcc2.MatListOption, typeof ɵngcc5.MatDividerModule]>;
-    static ɵinj: ɵngcc0.ɵɵInjectorDeclaration<MatListModule>;
 }
-
-//# sourceMappingURL=list-module.d.ts.map
Index: trip-planner-front/node_modules/@angular/material/list/list-module.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list-module.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-export declare class MatListModule {
-}
Index: trip-planner-front/node_modules/@angular/material/list/list-module.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list-module.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"list-module.d.ts","sources":["list-module.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AACA;;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport declare class MatListModule {\n}\n"]}
Index: trip-planner-front/node_modules/@angular/material/list/list.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/list/list.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -11,5 +11,4 @@
 import { Subject } from 'rxjs';
 /** @docs-private */
-import * as ɵngcc0 from '@angular/core';
 declare const _MatListBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisable> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisable> & import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
     new (): {};
@@ -38,6 +37,4 @@
     static ngAcceptInputType_disableRipple: BooleanInput;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatNavList, never>;
-    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatNavList, "mat-nav-list", ["matNavList"], { "disableRipple": "disableRipple"; "disabled": "disabled"; }, {}, never, ["*"]>;
 }
 export declare class MatList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy {
@@ -51,6 +48,4 @@
     static ngAcceptInputType_disableRipple: BooleanInput;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatList, never>;
-    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatList, "mat-list, mat-action-list", ["matList"], { "disableRipple": "disableRipple"; "disabled": "disabled"; }, {}, never, ["*"]>;
 }
 /**
@@ -59,6 +54,4 @@
  */
 export declare class MatListAvatarCssMatStyler {
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListAvatarCssMatStyler, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatListAvatarCssMatStyler, "[mat-list-avatar], [matListAvatar]", never, {}, {}, never>;
 }
 /**
@@ -67,6 +60,4 @@
  */
 export declare class MatListIconCssMatStyler {
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListIconCssMatStyler, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatListIconCssMatStyler, "[mat-list-icon], [matListIcon]", never, {}, {}, never>;
 }
 /**
@@ -75,6 +66,4 @@
  */
 export declare class MatListSubheaderCssMatStyler {
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListSubheaderCssMatStyler, never>;
-    static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration<MatListSubheaderCssMatStyler, "[mat-subheader], [matSubheader]", never, {}, {}, never>;
 }
 /** An item within a Material Design list. */
@@ -100,8 +89,4 @@
     static ngAcceptInputType_disableRipple: BooleanInput;
     static ngAcceptInputType_disabled: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListItem, [null, null, { optional: true; }, { optional: true; }]>;
-    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatListItem, "mat-list-item, a[mat-list-item], button[mat-list-item]", ["matListItem"], { "disableRipple": "disableRipple"; "disabled": "disabled"; }, {}, ["_avatar", "_icon", "_lines"], ["[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]", "[mat-line], [matLine]", "*"]>;
 }
 export {};
-
-//# sourceMappingURL=list.d.ts.map
Index: trip-planner-front/node_modules/@angular/material/list/list.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,92 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { BooleanInput } from '@angular/cdk/coercion';
-import { AfterContentInit, ElementRef, QueryList, OnChanges, OnDestroy, ChangeDetectorRef, InjectionToken } from '@angular/core';
-import { CanDisable, CanDisableRipple, MatLine } from '@angular/material/core';
-import { Subject } from 'rxjs';
-/** @docs-private */
-declare const _MatListBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisable> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisable> & import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
-    new (): {};
-};
-/** @docs-private */
-declare const _MatListItemMixinBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
-    new (): {};
-};
-/**
- * Injection token that can be used to inject instances of `MatList`. It serves as
- * alternative token to the actual `MatList` class which could cause unnecessary
- * retention of the class and its component metadata.
- */
-export declare const MAT_LIST: InjectionToken<MatList>;
-/**
- * Injection token that can be used to inject instances of `MatNavList`. It serves as
- * alternative token to the actual `MatNavList` class which could cause unnecessary
- * retention of the class and its component metadata.
- */
-export declare const MAT_NAV_LIST: InjectionToken<MatNavList>;
-export declare class MatNavList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy {
-    /** Emits when the state of the list changes. */
-    readonly _stateChanges: Subject<void>;
-    ngOnChanges(): void;
-    ngOnDestroy(): void;
-    static ngAcceptInputType_disableRipple: BooleanInput;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
-export declare class MatList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy {
-    private _elementRef;
-    /** Emits when the state of the list changes. */
-    readonly _stateChanges: Subject<void>;
-    constructor(_elementRef: ElementRef<HTMLElement>);
-    _getListType(): 'list' | 'action-list' | null;
-    ngOnChanges(): void;
-    ngOnDestroy(): void;
-    static ngAcceptInputType_disableRipple: BooleanInput;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-export declare class MatListAvatarCssMatStyler {
-}
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-export declare class MatListIconCssMatStyler {
-}
-/**
- * Directive whose purpose is to add the mat- CSS styling to this selector.
- * @docs-private
- */
-export declare class MatListSubheaderCssMatStyler {
-}
-/** An item within a Material Design list. */
-export declare class MatListItem extends _MatListItemMixinBase implements AfterContentInit, CanDisableRipple, OnDestroy {
-    private _element;
-    private _isInteractiveList;
-    private _list?;
-    private readonly _destroyed;
-    _lines: QueryList<MatLine>;
-    _avatar: MatListAvatarCssMatStyler;
-    _icon: MatListIconCssMatStyler;
-    constructor(_element: ElementRef<HTMLElement>, _changeDetectorRef: ChangeDetectorRef, navList?: MatNavList, list?: MatList);
-    /** Whether the option is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    ngAfterContentInit(): void;
-    ngOnDestroy(): void;
-    /** Whether this list item should show a ripple effect when clicked. */
-    _isRippleDisabled(): boolean;
-    /** Retrieves the DOM element of the component host. */
-    _getHostElement(): HTMLElement;
-    static ngAcceptInputType_disableRipple: BooleanInput;
-    static ngAcceptInputType_disabled: BooleanInput;
-}
-export {};
Index: trip-planner-front/node_modules/@angular/material/list/list.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/list.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"list.d.ts","sources":["list.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { AfterContentInit, ElementRef, QueryList, OnChanges, OnDestroy, ChangeDetectorRef, InjectionToken } from '@angular/core';\nimport { CanDisable, CanDisableRipple, MatLine } from '@angular/material/core';\nimport { Subject } from 'rxjs';\n/** @docs-private */\ndeclare const _MatListBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisable> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisable> & import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisableRipple> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisableRipple> & {\n    new (): {};\n};\n/** @docs-private */\ndeclare const _MatListItemMixinBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisableRipple> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisableRipple> & {\n    new (): {};\n};\n/**\n * Injection token that can be used to inject instances of `MatList`. It serves as\n * alternative token to the actual `MatList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport declare const MAT_LIST: InjectionToken<MatList>;\n/**\n * Injection token that can be used to inject instances of `MatNavList`. It serves as\n * alternative token to the actual `MatNavList` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport declare const MAT_NAV_LIST: InjectionToken<MatNavList>;\nexport declare class MatNavList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy {\n    /** Emits when the state of the list changes. */\n    readonly _stateChanges: Subject<void>;\n    ngOnChanges(): void;\n    ngOnDestroy(): void;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\nexport declare class MatList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy {\n    private _elementRef;\n    /** Emits when the state of the list changes. */\n    readonly _stateChanges: Subject<void>;\n    constructor(_elementRef: ElementRef<HTMLElement>);\n    _getListType(): 'list' | 'action-list' | null;\n    ngOnChanges(): void;\n    ngOnDestroy(): void;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nexport declare class MatListAvatarCssMatStyler {\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nexport declare class MatListIconCssMatStyler {\n}\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nexport declare class MatListSubheaderCssMatStyler {\n}\n/** An item within a Material Design list. */\nexport declare class MatListItem extends _MatListItemMixinBase implements AfterContentInit, CanDisableRipple, OnDestroy {\n    private _element;\n    private _isInteractiveList;\n    private _list?;\n    private readonly _destroyed;\n    _lines: QueryList<MatLine>;\n    _avatar: MatListAvatarCssMatStyler;\n    _icon: MatListIconCssMatStyler;\n    constructor(_element: ElementRef<HTMLElement>, _changeDetectorRef: ChangeDetectorRef, navList?: MatNavList, list?: MatList);\n    /** Whether the option is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    ngAfterContentInit(): void;\n    ngOnDestroy(): void;\n    /** Whether this list item should show a ripple effect when clicked. */\n    _isRippleDisabled(): boolean;\n    /** Retrieves the DOM element of the component host. */\n    _getHostElement(): HTMLElement;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n    static ngAcceptInputType_disabled: BooleanInput;\n}\nexport {};\n"]}
Index: trip-planner-front/node_modules/@angular/material/list/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/list/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -2,20 +2,8 @@
   "name": "@angular/material/list",
   "main": "../bundles/material-list.umd.js",
-  "fesm2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/list.js",
   "fesm2015": "../fesm2015/list.js",
   "esm2015": "../esm2015/list/index.js",
   "typings": "./index.d.ts",
-  "module_ivy_ngcc": "../__ivy_ngcc__/fesm2015/list.js",
   "module": "../fesm2015/list.js",
-  "es2015_ivy_ngcc": "../__ivy_ngcc__/fesm2015/list.js",
-  "es2015": "../fesm2015/list.js",
-  "__processed_by_ivy_ngcc__": {
-    "es2015": "12.2.9",
-    "fesm2015": "12.2.9",
-    "module": "12.2.9",
-    "typings": "12.2.9"
-  },
-  "scripts": {
-    "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by NGCC. This is not allowed.\\nPlease delete and rebuild the package, without compiling with NGCC, before attempting to publish.\\nNote that NGCC may have been run by importing this package into another project that is being built with Ivy enabled.\\n')\" && exit 1"
-  }
+  "es2015": "../fesm2015/list.js"
 }
Index: trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -13,5 +13,4 @@
 import { CanDisableRipple, MatLine, ThemePalette } from '@angular/material/core';
 import { MatListAvatarCssMatStyler, MatListIconCssMatStyler } from './list';
-import * as ɵngcc0 from '@angular/core';
 declare const _MatSelectionListBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
     new (): {};
@@ -129,6 +128,4 @@
     static ngAcceptInputType_selected: BooleanInput;
     static ngAcceptInputType_disableRipple: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatListOption, never>;
-    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatListOption, "mat-list-option", ["matListOption"], { "disableRipple": "disableRipple"; "checkboxPosition": "checkboxPosition"; "color": "color"; "value": "value"; "selected": "selected"; "disabled": "disabled"; }, { "selectedChange": "selectedChange"; }, ["_avatar", "_icon", "_lines"], ["*", "[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]"]>;
 }
 /**
@@ -244,8 +241,4 @@
     static ngAcceptInputType_disableRipple: BooleanInput;
     static ngAcceptInputType_multiple: BooleanInput;
-    static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatSelectionList, [null, { attribute: "tabindex"; }, null, null]>;
-    static ɵcmp: ɵngcc0.ɵɵComponentDeclaration<MatSelectionList, "mat-selection-list", ["matSelectionList"], { "disableRipple": "disableRipple"; "tabIndex": "tabIndex"; "color": "color"; "compareWith": "compareWith"; "disabled": "disabled"; "multiple": "multiple"; }, { "selectionChange": "selectionChange"; }, ["options"], ["*"]>;
 }
 export {};
-
-//# sourceMappingURL=selection-list.d.ts.map
Index: trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts.__ivy_ngcc_bak
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts.__ivy_ngcc_bak	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,244 +1,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-import { FocusableOption, FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';
-import { BooleanInput } from '@angular/cdk/coercion';
-import { SelectionModel } from '@angular/cdk/collections';
-import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';
-import { ControlValueAccessor } from '@angular/forms';
-import { CanDisableRipple, MatLine, ThemePalette } from '@angular/material/core';
-import { MatListAvatarCssMatStyler, MatListIconCssMatStyler } from './list';
-declare const _MatSelectionListBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
-    new (): {};
-};
-declare const _MatListOptionBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
-    new (): {};
-};
-/** @docs-private */
-export declare const MAT_SELECTION_LIST_VALUE_ACCESSOR: any;
-/** Change event that is being fired whenever the selected state of an option changes. */
-export declare class MatSelectionListChange {
-    /** Reference to the selection list that emitted the event. */
-    source: MatSelectionList;
-    /**
-     * Reference to the option that has been changed.
-     * @deprecated Use `options` instead, because some events may change more than one option.
-     * @breaking-change 12.0.0
-     */
-    option: MatListOption;
-    /** Reference to the options that have been changed. */
-    options: MatListOption[];
-    constructor(
-    /** Reference to the selection list that emitted the event. */
-    source: MatSelectionList, 
-    /**
-     * Reference to the option that has been changed.
-     * @deprecated Use `options` instead, because some events may change more than one option.
-     * @breaking-change 12.0.0
-     */
-    option: MatListOption, 
-    /** Reference to the options that have been changed. */
-    options: MatListOption[]);
-}
-/**
- * Type describing possible positions of a checkbox in a list option
- * with respect to the list item's text.
- */
-export declare type MatListOptionCheckboxPosition = 'before' | 'after';
-/**
- * Component for list-options of selection-list. Each list-option can automatically
- * generate a checkbox and can put current item into the selectionModel of selection-list
- * if the current item is selected.
- */
-export declare class MatListOption extends _MatListOptionBase implements AfterContentInit, OnDestroy, OnInit, FocusableOption, CanDisableRipple {
-    private _element;
-    private _changeDetector;
-    /** @docs-private */
-    selectionList: MatSelectionList;
-    private _selected;
-    private _disabled;
-    private _hasFocus;
-    _avatar: MatListAvatarCssMatStyler;
-    _icon: MatListIconCssMatStyler;
-    _lines: QueryList<MatLine>;
-    /**
-     * Emits when the selected state of the option has changed.
-     * Use to facilitate two-data binding to the `selected` property.
-     * @docs-private
-     */
-    readonly selectedChange: EventEmitter<boolean>;
-    /** DOM element containing the item's text. */
-    _text: ElementRef;
-    /** Whether the label should appear before or after the checkbox. Defaults to 'after' */
-    checkboxPosition: MatListOptionCheckboxPosition;
-    /** Theme color of the list option. This sets the color of the checkbox. */
-    get color(): ThemePalette;
-    set color(newValue: ThemePalette);
-    private _color;
-    /**
-     * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
-     * in the first cycle.
-     */
-    private _inputsInitialized;
-    /** Value of the option */
-    get value(): any;
-    set value(newValue: any);
-    private _value;
-    /** Whether the option is disabled. */
-    get disabled(): any;
-    set disabled(value: any);
-    /** Whether the option is selected. */
-    get selected(): boolean;
-    set selected(value: boolean);
-    constructor(_element: ElementRef<HTMLElement>, _changeDetector: ChangeDetectorRef, 
-    /** @docs-private */
-    selectionList: MatSelectionList);
-    ngOnInit(): void;
-    ngAfterContentInit(): void;
-    ngOnDestroy(): void;
-    /** Toggles the selection state of the option. */
-    toggle(): void;
-    /** Allows for programmatic focusing of the option. */
-    focus(): void;
-    /**
-     * Returns the list item's text label. Implemented as a part of the FocusKeyManager.
-     * @docs-private
-     */
-    getLabel(): any;
-    /** Whether this list item should show a ripple effect when clicked. */
-    _isRippleDisabled(): any;
-    _handleClick(): void;
-    _handleFocus(): void;
-    _handleBlur(): void;
-    /** Retrieves the DOM element of the component host. */
-    _getHostElement(): HTMLElement;
-    /** Sets the selected state of the option. Returns whether the value has changed. */
-    _setSelected(selected: boolean): boolean;
-    /**
-     * Notifies Angular that the option needs to be checked in the next change detection run. Mainly
-     * used to trigger an update of the list option if the disabled state of the selection list
-     * changed.
-     */
-    _markForCheck(): void;
-    static ngAcceptInputType_disabled: BooleanInput;
-    static ngAcceptInputType_selected: BooleanInput;
-    static ngAcceptInputType_disableRipple: BooleanInput;
-}
-/**
- * Material Design list component where each item is a selectable option. Behaves as a listbox.
- */
-export declare class MatSelectionList extends _MatSelectionListBase implements CanDisableRipple, AfterContentInit, ControlValueAccessor, OnDestroy, OnChanges {
-    private _element;
-    private _changeDetector;
-    private _focusMonitor?;
-    private _multiple;
-    private _contentInitialized;
-    /** The FocusKeyManager which handles focus. */
-    _keyManager: FocusKeyManager<MatListOption>;
-    /** The option components contained within this selection-list. */
-    options: QueryList<MatListOption>;
-    /** Emits a change event whenever the selected state of an option changes. */
-    readonly selectionChange: EventEmitter<MatSelectionListChange>;
-    /**
-     * Tabindex of the selection list.
-     * @breaking-change 11.0.0 Remove `tabIndex` input.
-     */
-    tabIndex: number;
-    /** Theme color of the selection list. This sets the checkbox color for all list options. */
-    color: ThemePalette;
-    /**
-     * Function used for comparing an option against the selected value when determining which
-     * options should appear as selected. The first argument is the value of an options. The second
-     * one is a value from the selected value. A boolean must be returned.
-     */
-    compareWith: (o1: any, o2: any) => boolean;
-    /** Whether the selection list is disabled. */
-    get disabled(): boolean;
-    set disabled(value: boolean);
-    private _disabled;
-    /** Whether selection is limited to one or multiple items (default multiple). */
-    get multiple(): boolean;
-    set multiple(value: boolean);
-    /** The currently selected options. */
-    selectedOptions: SelectionModel<MatListOption>;
-    /** The tabindex of the selection list. */
-    _tabIndex: number;
-    /** View to model callback that should be called whenever the selected options change. */
-    private _onChange;
-    /** Keeps track of the currently-selected value. */
-    _value: string[] | null;
-    /** Emits when the list has been destroyed. */
-    private readonly _destroyed;
-    /** View to model callback that should be called if the list or its options lost focus. */
-    _onTouched: () => void;
-    /** Whether the list has been destroyed. */
-    private _isDestroyed;
-    constructor(_element: ElementRef<HTMLElement>, tabIndex: string, _changeDetector: ChangeDetectorRef, _focusMonitor?: FocusMonitor | undefined);
-    ngAfterContentInit(): void;
-    ngOnChanges(changes: SimpleChanges): void;
-    ngOnDestroy(): void;
-    /** Focuses the selection list. */
-    focus(options?: FocusOptions): void;
-    /** Selects all of the options. Returns the options that changed as a result. */
-    selectAll(): MatListOption[];
-    /** Deselects all of the options. Returns the options that changed as a result. */
-    deselectAll(): MatListOption[];
-    /** Sets the focused option of the selection-list. */
-    _setFocusedOption(option: MatListOption): void;
-    /**
-     * Removes an option from the selection list and updates the active item.
-     * @returns Currently-active item.
-     */
-    _removeOptionFromList(option: MatListOption): MatListOption | null;
-    /** Passes relevant key presses to our key manager. */
-    _keydown(event: KeyboardEvent): void;
-    /** Reports a value change to the ControlValueAccessor */
-    _reportValueChange(): void;
-    /** Emits a change event if the selected state of an option changed. */
-    _emitChangeEvent(options: MatListOption[]): void;
-    /** Implemented as part of ControlValueAccessor. */
-    writeValue(values: string[]): void;
-    /** Implemented as a part of ControlValueAccessor. */
-    setDisabledState(isDisabled: boolean): void;
-    /** Implemented as part of ControlValueAccessor. */
-    registerOnChange(fn: (value: any) => void): void;
-    /** Implemented as part of ControlValueAccessor. */
-    registerOnTouched(fn: () => void): void;
-    /** Sets the selected options based on the specified values. */
-    private _setOptionsFromValues;
-    /** Returns the values of the selected options. */
-    private _getSelectedOptionValues;
-    /** Toggles the state of the currently focused option if enabled. */
-    private _toggleFocusedOption;
-    /**
-     * Sets the selected state on all of the options
-     * and emits an event if anything changed.
-     */
-    private _setAllOptionsSelected;
-    /**
-     * Utility to ensure all indexes are valid.
-     * @param index The index to be checked.
-     * @returns True if the index is valid for our list of options.
-     */
-    private _isValidIndex;
-    /** Returns the index of the specified list option. */
-    private _getOptionIndex;
-    /** Marks all the options to be checked in the next change detection run. */
-    private _markOptionsForCheck;
-    /**
-     * Removes the tabindex from the selection list and resets it back afterwards, allowing the user
-     * to tab out of it. This prevents the list from capturing focus and redirecting it back within
-     * the list, creating a focus trap if it user tries to tab away.
-     */
-    private _allowFocusEscape;
-    /** Updates the tabindex based upon if the selection list is empty. */
-    private _updateTabIndex;
-    static ngAcceptInputType_disabled: BooleanInput;
-    static ngAcceptInputType_disableRipple: BooleanInput;
-    static ngAcceptInputType_multiple: BooleanInput;
-}
-export {};
Index: trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/list/selection-list.d.ts.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"selection-list.d.ts","sources":["selection-list.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { FocusableOption, FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { CanDisableRipple, MatLine, ThemePalette } from '@angular/material/core';\nimport { MatListAvatarCssMatStyler, MatListIconCssMatStyler } from './list';\ndeclare const _MatSelectionListBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisableRipple> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisableRipple> & {\n    new (): {};\n};\ndeclare const _MatListOptionBase: import(\"@angular/material/core/common-behaviors/constructor\").Constructor<CanDisableRipple> & import(\"@angular/material/core/common-behaviors/constructor\").AbstractConstructor<CanDisableRipple> & {\n    new (): {};\n};\n/** @docs-private */\nexport declare const MAT_SELECTION_LIST_VALUE_ACCESSOR: any;\n/** Change event that is being fired whenever the selected state of an option changes. */\nexport declare class MatSelectionListChange {\n    /** Reference to the selection list that emitted the event. */\n    source: MatSelectionList;\n    /**\n     * Reference to the option that has been changed.\n     * @deprecated Use `options` instead, because some events may change more than one option.\n     * @breaking-change 12.0.0\n     */\n    option: MatListOption;\n    /** Reference to the options that have been changed. */\n    options: MatListOption[];\n    constructor(\n    /** Reference to the selection list that emitted the event. */\n    source: MatSelectionList, \n    /**\n     * Reference to the option that has been changed.\n     * @deprecated Use `options` instead, because some events may change more than one option.\n     * @breaking-change 12.0.0\n     */\n    option: MatListOption, \n    /** Reference to the options that have been changed. */\n    options: MatListOption[]);\n}\n/**\n * Type describing possible positions of a checkbox in a list option\n * with respect to the list item's text.\n */\nexport declare type MatListOptionCheckboxPosition = 'before' | 'after';\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is selected.\n */\nexport declare class MatListOption extends _MatListOptionBase implements AfterContentInit, OnDestroy, OnInit, FocusableOption, CanDisableRipple {\n    private _element;\n    private _changeDetector;\n    /** @docs-private */\n    selectionList: MatSelectionList;\n    private _selected;\n    private _disabled;\n    private _hasFocus;\n    _avatar: MatListAvatarCssMatStyler;\n    _icon: MatListIconCssMatStyler;\n    _lines: QueryList<MatLine>;\n    /**\n     * Emits when the selected state of the option has changed.\n     * Use to facilitate two-data binding to the `selected` property.\n     * @docs-private\n     */\n    readonly selectedChange: EventEmitter<boolean>;\n    /** DOM element containing the item's text. */\n    _text: ElementRef;\n    /** Whether the label should appear before or after the checkbox. Defaults to 'after' */\n    checkboxPosition: MatListOptionCheckboxPosition;\n    /** Theme color of the list option. This sets the color of the checkbox. */\n    get color(): ThemePalette;\n    set color(newValue: ThemePalette);\n    private _color;\n    /**\n     * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`\n     * in the first cycle.\n     */\n    private _inputsInitialized;\n    /** Value of the option */\n    get value(): any;\n    set value(newValue: any);\n    private _value;\n    /** Whether the option is disabled. */\n    get disabled(): any;\n    set disabled(value: any);\n    /** Whether the option is selected. */\n    get selected(): boolean;\n    set selected(value: boolean);\n    constructor(_element: ElementRef<HTMLElement>, _changeDetector: ChangeDetectorRef, \n    /** @docs-private */\n    selectionList: MatSelectionList);\n    ngOnInit(): void;\n    ngAfterContentInit(): void;\n    ngOnDestroy(): void;\n    /** Toggles the selection state of the option. */\n    toggle(): void;\n    /** Allows for programmatic focusing of the option. */\n    focus(): void;\n    /**\n     * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n     * @docs-private\n     */\n    getLabel(): any;\n    /** Whether this list item should show a ripple effect when clicked. */\n    _isRippleDisabled(): any;\n    _handleClick(): void;\n    _handleFocus(): void;\n    _handleBlur(): void;\n    /** Retrieves the DOM element of the component host. */\n    _getHostElement(): HTMLElement;\n    /** Sets the selected state of the option. Returns whether the value has changed. */\n    _setSelected(selected: boolean): boolean;\n    /**\n     * Notifies Angular that the option needs to be checked in the next change detection run. Mainly\n     * used to trigger an update of the list option if the disabled state of the selection list\n     * changed.\n     */\n    _markForCheck(): void;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_selected: BooleanInput;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n}\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\nexport declare class MatSelectionList extends _MatSelectionListBase implements CanDisableRipple, AfterContentInit, ControlValueAccessor, OnDestroy, OnChanges {\n    private _element;\n    private _changeDetector;\n    private _focusMonitor?;\n    private _multiple;\n    private _contentInitialized;\n    /** The FocusKeyManager which handles focus. */\n    _keyManager: FocusKeyManager<MatListOption>;\n    /** The option components contained within this selection-list. */\n    options: QueryList<MatListOption>;\n    /** Emits a change event whenever the selected state of an option changes. */\n    readonly selectionChange: EventEmitter<MatSelectionListChange>;\n    /**\n     * Tabindex of the selection list.\n     * @breaking-change 11.0.0 Remove `tabIndex` input.\n     */\n    tabIndex: number;\n    /** Theme color of the selection list. This sets the checkbox color for all list options. */\n    color: ThemePalette;\n    /**\n     * Function used for comparing an option against the selected value when determining which\n     * options should appear as selected. The first argument is the value of an options. The second\n     * one is a value from the selected value. A boolean must be returned.\n     */\n    compareWith: (o1: any, o2: any) => boolean;\n    /** Whether the selection list is disabled. */\n    get disabled(): boolean;\n    set disabled(value: boolean);\n    private _disabled;\n    /** Whether selection is limited to one or multiple items (default multiple). */\n    get multiple(): boolean;\n    set multiple(value: boolean);\n    /** The currently selected options. */\n    selectedOptions: SelectionModel<MatListOption>;\n    /** The tabindex of the selection list. */\n    _tabIndex: number;\n    /** View to model callback that should be called whenever the selected options change. */\n    private _onChange;\n    /** Keeps track of the currently-selected value. */\n    _value: string[] | null;\n    /** Emits when the list has been destroyed. */\n    private readonly _destroyed;\n    /** View to model callback that should be called if the list or its options lost focus. */\n    _onTouched: () => void;\n    /** Whether the list has been destroyed. */\n    private _isDestroyed;\n    constructor(_element: ElementRef<HTMLElement>, tabIndex: string, _changeDetector: ChangeDetectorRef, _focusMonitor?: FocusMonitor | undefined);\n    ngAfterContentInit(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    ngOnDestroy(): void;\n    /** Focuses the selection list. */\n    focus(options?: FocusOptions): void;\n    /** Selects all of the options. Returns the options that changed as a result. */\n    selectAll(): MatListOption[];\n    /** Deselects all of the options. Returns the options that changed as a result. */\n    deselectAll(): MatListOption[];\n    /** Sets the focused option of the selection-list. */\n    _setFocusedOption(option: MatListOption): void;\n    /**\n     * Removes an option from the selection list and updates the active item.\n     * @returns Currently-active item.\n     */\n    _removeOptionFromList(option: MatListOption): MatListOption | null;\n    /** Passes relevant key presses to our key manager. */\n    _keydown(event: KeyboardEvent): void;\n    /** Reports a value change to the ControlValueAccessor */\n    _reportValueChange(): void;\n    /** Emits a change event if the selected state of an option changed. */\n    _emitChangeEvent(options: MatListOption[]): void;\n    /** Implemented as part of ControlValueAccessor. */\n    writeValue(values: string[]): void;\n    /** Implemented as a part of ControlValueAccessor. */\n    setDisabledState(isDisabled: boolean): void;\n    /** Implemented as part of ControlValueAccessor. */\n    registerOnChange(fn: (value: any) => void): void;\n    /** Implemented as part of ControlValueAccessor. */\n    registerOnTouched(fn: () => void): void;\n    /** Sets the selected options based on the specified values. */\n    private _setOptionsFromValues;\n    /** Returns the values of the selected options. */\n    private _getSelectedOptionValues;\n    /** Toggles the state of the currently focused option if enabled. */\n    private _toggleFocusedOption;\n    /**\n     * Sets the selected state on all of the options\n     * and emits an event if anything changed.\n     */\n    private _setAllOptionsSelected;\n    /**\n     * Utility to ensure all indexes are valid.\n     * @param index The index to be checked.\n     * @returns True if the index is valid for our list of options.\n     */\n    private _isValidIndex;\n    /** Returns the index of the specified list option. */\n    private _getOptionIndex;\n    /** Marks all the options to be checked in the next change detection run. */\n    private _markOptionsForCheck;\n    /**\n     * Removes the tabindex from the selection list and resets it back afterwards, allowing the user\n     * to tab out of it. This prevents the list from capturing focus and redirecting it back within\n     * the list, creating a focus trap if it user tries to tab away.\n     */\n    private _allowFocusEscape;\n    /** Updates the tabindex based upon if the selection list is empty. */\n    private _updateTabIndex;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n    static ngAcceptInputType_multiple: BooleanInput;\n}\nexport {};\n"]}
Index: trip-planner-front/node_modules/@angular/material/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/material/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/material/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,43 @@
 {
-  "name": "@angular/material",
-  "version": "12.2.10",
+  "_args": [
+    [
+      "@angular/material@12.2.10",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/material@12.2.10",
+  "_id": "@angular/material@12.2.10",
+  "_inBundle": false,
+  "_integrity": "sha512-iC0EA8ogpn/KJ+kr3TEfQJLYPAtrguMr21KAGwtKOOLng1HiEhH6qEqlc0PPYUUQ06i+8nJr/WWfL0ORKXh3fg==",
+  "_location": "/@angular/material",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/material@12.2.10",
+    "name": "@angular/material",
+    "escapedName": "@angular%2fmaterial",
+    "scope": "@angular",
+    "rawSpec": "12.2.10",
+    "saveSpec": null,
+    "fetchSpec": "12.2.10"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.10.tgz",
+  "_spec": "12.2.10",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/angular/components/issues"
+  },
+  "dependencies": {
+    "tslib": "^2.2.0"
+  },
   "description": "Angular Material",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/components.git"
-  },
+  "es2015": "./fesm2015/material.js",
+  "esm2015": "./esm2015/index.js",
+  "fesm2015": "./fesm2015/material.js",
+  "homepage": "https://github.com/angular/components#readme",
   "keywords": [
     "angular",
@@ -14,20 +47,7 @@
   ],
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/components/issues"
-  },
-  "homepage": "https://github.com/angular/components#readme",
-  "peerDependencies": {
-    "@angular/animations": "^12.0.0 || ^13.0.0-0",
-    "@angular/cdk": "12.2.10",
-    "@angular/core": "^12.0.0 || ^13.0.0-0",
-    "@angular/common": "^12.0.0 || ^13.0.0-0",
-    "@angular/forms": "^12.0.0 || ^13.0.0-0",
-    "rxjs": "^6.5.3 || ^7.0.0"
-  },
-  "dependencies": {
-    "tslib": "^2.2.0"
-  },
-  "schematics": "./schematics/collection.json",
+  "main": "./bundles/material.umd.js",
+  "module": "./fesm2015/material.js",
+  "name": "@angular/material",
   "ng-update": {
     "migrations": "./schematics/migration.json",
@@ -39,10 +59,19 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/animations": "^12.0.0 || ^13.0.0-0",
+    "@angular/cdk": "12.2.10",
+    "@angular/core": "^12.0.0 || ^13.0.0-0",
+    "@angular/common": "^12.0.0 || ^13.0.0-0",
+    "@angular/forms": "^12.0.0 || ^13.0.0-0",
+    "rxjs": "^6.5.3 || ^7.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/components.git"
+  },
+  "schematics": "./schematics/collection.json",
   "sideEffects": false,
-  "main": "./bundles/material.umd.js",
-  "fesm2015": "./fesm2015/material.js",
-  "esm2015": "./esm2015/index.js",
   "typings": "./index.d.ts",
-  "module": "./fesm2015/material.js",
-  "es2015": "./fesm2015/material.js"
+  "version": "12.2.10"
 }
Index: trip-planner-front/node_modules/@angular/platform-browser-dynamic/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/platform-browser-dynamic/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/platform-browser-dynamic/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,56 @@
 {
-  "name": "@angular/platform-browser-dynamic",
-  "version": "12.2.9",
-  "description": "Angular - library for using Angular in a web browser with JIT compilation",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/platform-browser-dynamic@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/platform-browser-dynamic@12.2.9",
+  "_id": "@angular/platform-browser-dynamic@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bBNsq2rrL08IaVCps9j54iu3Xoxf1PkjtbEyP5EqXbjccsF7KDM32+5Cjjf0AwYtzaWbjXPSP7awAXpCCsqSdA==",
+  "_location": "/@angular/platform-browser-dynamic",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/platform-browser-dynamic@12.2.9",
+    "name": "@angular/platform-browser-dynamic",
+    "escapedName": "@angular%2fplatform-browser-dynamic",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "peerDependencies": {
-    "@angular/core": "12.2.9",
-    "@angular/common": "12.2.9",
-    "@angular/compiler": "12.2.9",
-    "@angular/platform-browser": "12.2.9"
+  "description": "Angular - library for using Angular in a web browser with JIT compilation",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/platform-browser-dynamic"
-  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
+  "es2015": "./fesm2015/platform-browser-dynamic.js",
+  "esm2015": "./esm2015/platform-browser-dynamic.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
+  "fesm2015": "./fesm2015/platform-browser-dynamic.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/platform-browser-dynamic.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
+  "module": "./fesm2015/platform-browser-dynamic.js",
+  "name": "@angular/platform-browser-dynamic",
   "ng-update": {
     "packageGroup": [
@@ -42,14 +73,18 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/core": "12.2.9",
+    "@angular/common": "12.2.9",
+    "@angular/compiler": "12.2.9",
+    "@angular/platform-browser": "12.2.9"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/platform-browser-dynamic"
+  },
   "sideEffects": false,
-  "main": "./bundles/platform-browser-dynamic.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
-  "fesm2015": "./fesm2015/platform-browser-dynamic.js",
-  "esm2015": "./esm2015/platform-browser-dynamic.js",
   "typings": "./platform-browser-dynamic.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
-  "module": "./fesm2015/platform-browser-dynamic.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser-dynamic.js",
-  "es2015": "./fesm2015/platform-browser-dynamic.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/platform-browser/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/platform-browser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/platform-browser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,56 @@
 {
-  "name": "@angular/platform-browser",
-  "version": "12.2.9",
-  "description": "Angular - library for using Angular in a web browser",
-  "author": "angular",
-  "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
+  "_args": [
+    [
+      "@angular/platform-browser@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/platform-browser@12.2.9",
+  "_id": "@angular/platform-browser@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-moO5Fz4b15EWYQthOaQThmy0gm/d5W/+9RmCiZs2ZHiVjuC358lnFy626VdkZmJ/MLwMwqHpyQS9JhCYOZGOdw==",
+  "_location": "/@angular/platform-browser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/platform-browser@12.2.9",
+    "name": "@angular/platform-browser",
+    "escapedName": "@angular%2fplatform-browser",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
   },
   "dependencies": {
     "tslib": "^2.2.0"
   },
-  "peerDependencies": {
-    "@angular/animations": "12.2.9",
-    "@angular/core": "12.2.9",
-    "@angular/common": "12.2.9"
+  "description": "Angular - library for using Angular in a web browser",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
   },
-  "peerDependenciesMeta": {
-    "@angular/animations": {
-      "optional": true
-    }
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular.git",
-    "directory": "packages/platform-browser"
-  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
+  "es2015": "./fesm2015/platform-browser.js",
+  "esm2015": "./esm2015/platform-browser.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
+  "fesm2015": "./fesm2015/platform-browser.js",
+  "homepage": "https://github.com/angular/angular#readme",
+  "license": "MIT",
+  "main": "./bundles/platform-browser.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
+  "module": "./fesm2015/platform-browser.js",
+  "name": "@angular/platform-browser",
   "ng-update": {
     "packageGroup": [
@@ -46,14 +73,22 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/animations": "12.2.9",
+    "@angular/core": "12.2.9",
+    "@angular/common": "12.2.9"
+  },
+  "peerDependenciesMeta": {
+    "@angular/animations": {
+      "optional": true
+    }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/platform-browser"
+  },
   "sideEffects": false,
-  "main": "./bundles/platform-browser.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
-  "fesm2015": "./fesm2015/platform-browser.js",
-  "esm2015": "./esm2015/platform-browser.js",
   "typings": "./platform-browser.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
-  "module": "./fesm2015/platform-browser.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/platform-browser.js",
-  "es2015": "./fesm2015/platform-browser.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@angular/router/package.json
===================================================================
--- trip-planner-front/node_modules/@angular/router/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@angular/router/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,60 @@
 {
-  "name": "@angular/router",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@angular/router@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_from": "@angular/router@12.2.9",
+  "_id": "@angular/router@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-Qh7Ugh6N7PIK4+ydRPHiKy8Q3wlB/ieXVyqYgkNfGFZ+QtNHpWgWBUXJuGPnmKk0Yn02EwSPOuPWEHV92rayhw==",
+  "_location": "/@angular/router",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@angular/router@12.2.9",
+    "name": "@angular/router",
+    "escapedName": "@angular%2frouter",
+    "scope": "@angular",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "angular"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular/issues"
+  },
+  "dependencies": {
+    "tslib": "^2.2.0"
+  },
   "description": "Angular - the routing library",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0"
+  },
+  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
+  "es2015": "./fesm2015/router.js",
+  "esm2015": "./esm2015/router.js",
+  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
+  "fesm2015": "./fesm2015/router.js",
+  "homepage": "https://github.com/angular/angular/tree/master/packages/router",
   "keywords": [
     "angular",
     "router"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/angular/angular.git",
-    "directory": "packages/router"
-  },
-  "author": "angular",
   "license": "MIT",
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0"
-  },
-  "bugs": {
-    "url": "https://github.com/angular/angular/issues"
-  },
-  "homepage": "https://github.com/angular/angular/tree/master/packages/router",
-  "dependencies": {
-    "tslib": "^2.2.0"
-  },
-  "peerDependencies": {
-    "@angular/core": "12.2.9",
-    "@angular/common": "12.2.9",
-    "@angular/platform-browser": "12.2.9",
-    "rxjs": "^6.5.3 || ^7.0.0"
-  },
+  "main": "./bundles/router.umd.js",
+  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
+  "module": "./fesm2015/router.js",
+  "name": "@angular/router",
   "ng-update": {
     "packageGroup": [
@@ -50,14 +77,18 @@
     ]
   },
+  "peerDependencies": {
+    "@angular/core": "12.2.9",
+    "@angular/common": "12.2.9",
+    "@angular/platform-browser": "12.2.9",
+    "rxjs": "^6.5.3 || ^7.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular.git",
+    "directory": "packages/router"
+  },
   "sideEffects": false,
-  "main": "./bundles/router.umd.js",
-  "fesm2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
-  "fesm2015": "./fesm2015/router.js",
-  "esm2015": "./esm2015/router.js",
   "typings": "./router.d.ts",
-  "module_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
-  "module": "./fesm2015/router.js",
-  "es2015_ivy_ngcc": "__ivy_ngcc__/fesm2015/router.js",
-  "es2015": "./fesm2015/router.js",
+  "version": "12.2.9",
   "__processed_by_ivy_ngcc__": {
     "es2015": "12.2.9",
Index: trip-planner-front/node_modules/@assemblyscript/loader/package.json
===================================================================
--- trip-planner-front/node_modules/@assemblyscript/loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@assemblyscript/loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,48 @@
 {
-  "name": "@assemblyscript/loader",
+  "_args": [
+    [
+      "@assemblyscript/loader@0.10.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@assemblyscript/loader@0.10.1",
+  "_id": "@assemblyscript/loader@0.10.1",
+  "_inBundle": false,
+  "_integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==",
+  "_location": "/@assemblyscript/loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@assemblyscript/loader@0.10.1",
+    "name": "@assemblyscript/loader",
+    "escapedName": "@assemblyscript%2floader",
+    "scope": "@assemblyscript",
+    "rawSpec": "0.10.1",
+    "saveSpec": null,
+    "fetchSpec": "0.10.1"
+  },
+  "_requiredBy": [
+    "/hdr-histogram-js"
+  ],
+  "_resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz",
+  "_spec": "0.10.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Daniel Wirtz",
+    "email": "dcode+assemblyscript@dcode.io"
+  },
+  "bugs": {
+    "url": "https://github.com/AssemblyScript/assemblyscript/issues"
+  },
   "description": "A convenient loader for AssemblyScript modules.",
+  "files": [
+    "index.d.ts",
+    "index.js",
+    "package.json",
+    "README.md"
+  ],
+  "homepage": "https://assemblyscript.org",
   "keywords": [
     "assemblyscript",
@@ -10,18 +53,12 @@
     "wasm"
   ],
-  "version": "0.10.1",
-  "author": "Daniel Wirtz <dcode+assemblyscript@dcode.io>",
   "license": "Apache-2.0",
-  "homepage": "https://assemblyscript.org",
+  "main": "index.js",
+  "name": "@assemblyscript/loader",
   "repository": {
     "type": "git",
-    "url": "https://github.com/AssemblyScript/assemblyscript.git",
+    "url": "git+https://github.com/AssemblyScript/assemblyscript.git",
     "directory": "lib/loader"
   },
-  "bugs": {
-    "url": "https://github.com/AssemblyScript/assemblyscript/issues"
-  },
-  "main": "index.js",
-  "types": "index.d.ts",
   "scripts": {
     "asbuild": "npm run asbuild:default && npm run asbuild:legacy",
@@ -30,9 +67,5 @@
     "test": "node tests"
   },
-  "files": [
-    "index.d.ts",
-    "index.js",
-    "package.json",
-    "README.md"
-  ]
+  "types": "index.d.ts",
+  "version": "0.10.1"
 }
Index: trip-planner-front/node_modules/@babel/code-frame/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/code-frame/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/code-frame/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,51 @@
 {
-  "name": "@babel/code-frame",
-  "version": "7.15.8",
-  "description": "Generate errors that contain a code frame that point to source locations.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/code-frame@7.15.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/code-frame@7.15.8",
+  "_id": "@babel/code-frame@7.15.8",
+  "_inBundle": false,
+  "_integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
+  "_location": "/@babel/code-frame",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/code-frame@7.15.8",
+    "name": "@babel/code-frame",
+    "escapedName": "@babel%2fcode-frame",
+    "scope": "@babel",
+    "rawSpec": "7.15.8",
+    "saveSpec": null,
+    "fetchSpec": "7.15.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-code-frame"
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/helper-function-name/@babel/template",
+    "/@babel/helper-module-transforms/@babel/template",
+    "/@babel/helper-wrap-function/@babel/template",
+    "/@babel/helpers/@babel/template",
+    "/@babel/template",
+    "/@babel/traverse",
+    "/parse-json"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
+  "_spec": "7.15.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen"
+  },
   "dependencies": {
     "@babel/highlight": "^7.14.5"
   },
+  "description": "Generate errors that contain a code frame that point to source locations.",
   "devDependencies": {
     "@types/chalk": "^2.0.0",
@@ -26,4 +55,17 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/code-frame",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-code-frame"
+  },
+  "version": "7.15.8"
 }
Index: trip-planner-front/node_modules/@babel/compat-data/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/compat-data/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/compat-data/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,51 @@
 {
-  "name": "@babel/compat-data",
-  "version": "7.15.0",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
+  "_args": [
+    [
+      "@babel/compat-data@7.15.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/compat-data@7.15.0",
+  "_id": "@babel/compat-data@7.15.0",
+  "_inBundle": false,
+  "_integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
+  "_location": "/@babel/compat-data",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/compat-data@7.15.0",
+    "name": "@babel/compat-data",
+    "escapedName": "@babel%2fcompat-data",
+    "scope": "@babel",
+    "rawSpec": "7.15.0",
+    "saveSpec": null,
+    "fetchSpec": "7.15.0"
+  },
+  "_requiredBy": [
+    "/@babel/helper-compilation-targets",
+    "/@babel/plugin-proposal-object-rest-spread",
+    "/@babel/preset-env",
+    "/babel-plugin-polyfill-corejs2"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+  "_spec": "7.15.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "description": "",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-compat-data"
+  "devDependencies": {
+    "@mdn/browser-compat-data": "^3.3.4",
+    "core-js-compat": "^3.16.0",
+    "electron-to-chromium": "^1.3.749"
   },
-  "publishConfig": {
-    "access": "public"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "exports": {
@@ -21,7 +57,5 @@
     "./plugin-bugfixes": "./plugin-bugfixes.js"
   },
-  "scripts": {
-    "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
-  },
+  "homepage": "https://github.com/babel/babel#readme",
   "keywords": [
     "babel",
@@ -29,11 +63,17 @@
     "compat-data"
   ],
-  "devDependencies": {
-    "@mdn/browser-compat-data": "^3.3.4",
-    "core-js-compat": "^3.16.0",
-    "electron-to-chromium": "^1.3.749"
+  "license": "MIT",
+  "name": "@babel/compat-data",
+  "publishConfig": {
+    "access": "public"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-compat-data"
+  },
+  "scripts": {
+    "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
+  },
+  "version": "7.15.0"
 }
Index: trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@babel/core/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/core/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/@babel/core/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/@babel/core/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/core/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.5.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.5.7",
+  "_id": "source-map@0.5.7",
+  "_inBundle": false,
+  "_integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+  "_location": "/@babel/core/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.5.7",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.5.7",
+    "saveSpec": null,
+    "fetchSpec": "0.5.7"
+  },
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+  "_spec": "0.5.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.5.7",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -56,17 +198,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.5.7"
 }
Index: trip-planner-front/node_modules/@babel/core/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/core/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,38 @@
 {
-  "name": "@babel/core",
-  "version": "7.14.8",
-  "description": "Babel compiler core.",
-  "main": "./lib/index.js",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/core@7.14.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/core@7.14.8",
+  "_id": "@babel/core@7.14.8",
+  "_inBundle": false,
+  "_integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
+  "_location": "/@babel/core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/core@7.14.8",
+    "name": "@babel/core",
+    "escapedName": "@babel%2fcore",
+    "scope": "@babel",
+    "rawSpec": "7.14.8",
+    "saveSpec": null,
+    "fetchSpec": "7.14.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-core"
-  },
-  "homepage": "https://babel.dev/docs/en/next/babel-core",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen",
-  "keywords": [
-    "6to5",
-    "babel",
-    "classes",
-    "const",
-    "es6",
-    "harmony",
-    "let",
-    "modules",
-    "transpile",
-    "transpiler",
-    "var",
-    "babel-core",
-    "compiler"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular/compiler-cli",
+    "/istanbul-lib-instrument"
   ],
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/babel"
+  "_resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
+  "_spec": "7.14.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
   "browser": {
@@ -47,4 +45,7 @@
     "./src/transform-file.ts": "./src/transform-file-browser.ts",
     "./src/transformation/util/clone-deep.ts": "./src/transformation/util/clone-deep-browser.ts"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen"
   },
   "dependencies": {
@@ -65,4 +66,5 @@
     "source-map": "^0.5.0"
   },
+  "description": "Babel compiler core.",
   "devDependencies": {
     "@babel/helper-transform-fixture-test-runner": "7.14.5",
@@ -73,4 +75,39 @@
     "@types/semver": "^5.4.0",
     "@types/source-map": "^0.5.0"
-  }
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/babel"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-core",
+  "keywords": [
+    "6to5",
+    "babel",
+    "classes",
+    "const",
+    "es6",
+    "harmony",
+    "let",
+    "modules",
+    "transpile",
+    "transpiler",
+    "var",
+    "babel-core",
+    "compiler"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/core",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-core"
+  },
+  "version": "7.14.8"
 }
Index: trip-planner-front/node_modules/@babel/generator/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/generator/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/generator/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.5.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.5.7",
+  "_id": "source-map@0.5.7",
+  "_inBundle": false,
+  "_integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+  "_location": "/@babel/generator/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.5.7",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.5.7",
+    "saveSpec": null,
+    "fetchSpec": "0.5.7"
+  },
+  "_requiredBy": [
+    "/@babel/generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+  "_spec": "0.5.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.5.7",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -56,17 +198,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.5.7"
 }
Index: trip-planner-front/node_modules/@babel/generator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/generator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/generator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,41 @@
 {
-  "name": "@babel/generator",
-  "version": "7.14.8",
-  "description": "Turns an AST into code.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/generator@7.14.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/generator@7.14.8",
+  "_id": "@babel/generator@7.14.8",
+  "_inBundle": false,
+  "_integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
+  "_location": "/@babel/generator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/generator@7.14.8",
+    "name": "@babel/generator",
+    "escapedName": "@babel%2fgenerator",
+    "scope": "@babel",
+    "rawSpec": "7.14.8",
+    "saveSpec": null,
+    "fetchSpec": "7.14.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-generator"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
+  "_spec": "7.14.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-generator",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen",
-  "main": "./lib/index.js",
-  "files": [
-    "lib"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen"
+  },
   "dependencies": {
     "@babel/types": "^7.14.8",
@@ -24,4 +43,5 @@
     "source-map": "^0.5.0"
   },
+  "description": "Turns an AST into code.",
   "devDependencies": {
     "@babel/helper-fixtures": "7.14.5",
@@ -32,4 +52,20 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://babel.dev/docs/en/next/babel-generator",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/generator",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-generator"
+  },
+  "version": "7.14.8"
 }
Index: trip-planner-front/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,60 @@
 {
-  "name": "@babel/helper-annotate-as-pure",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/helper-annotate-as-pure@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-annotate-as-pure@7.14.5",
+  "_id": "@babel/helper-annotate-as-pure@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==",
+  "_location": "/@babel/helper-annotate-as-pure",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-annotate-as-pure@7.14.5",
+    "name": "@babel/helper-annotate-as-pure",
+    "escapedName": "@babel%2fhelper-annotate-as-pure",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/helper-create-regexp-features-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.14.5"
+  },
   "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-annotate-as-pure"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-annotate-as-pure",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.14.5"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,60 @@
 {
-  "name": "@babel/helper-builder-binary-assignment-operator-visitor",
-  "version": "7.15.4",
-  "description": "Helper function to build binary assignment operator visitors",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-builder-binary-assignment-operator-visitor"
+  "_args": [
+    [
+      "@babel/helper-builder-binary-assignment-operator-visitor@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-builder-binary-assignment-operator-visitor@7.15.4",
+  "_id": "@babel/helper-builder-binary-assignment-operator-visitor@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==",
+  "_location": "/@babel/helper-builder-binary-assignment-operator-visitor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-builder-binary-assignment-operator-visitor@7.15.4",
+    "name": "@babel/helper-builder-binary-assignment-operator-visitor",
+    "escapedName": "@babel%2fhelper-builder-binary-assignment-operator-visitor",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-builder-binary-assignment-operator-visitor",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-transform-exponentiation-operator"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-explode-assignable-expression": "^7.15.4",
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to build binary assignment operator visitors",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-builder-binary-assignment-operator-visitor",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-builder-binary-assignment-operator-visitor",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-builder-binary-assignment-operator-visitor"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/@babel/helper-compilation-targets/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/@babel/helper-compilation-targets"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/@babel/helper-compilation-targets/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-compilation-targets/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-compilation-targets/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,43 @@
 {
-  "name": "@babel/helper-compilation-targets",
-  "version": "7.15.4",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "description": "Helper functions on Babel compilation targets",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-compilation-targets"
+  "_args": [
+    [
+      "@babel/helper-compilation-targets@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-compilation-targets@7.15.4",
+  "_id": "@babel/helper-compilation-targets@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
+  "_location": "/@babel/helper-compilation-targets",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-compilation-targets@7.15.4",
+    "name": "@babel/helper-compilation-targets",
+    "escapedName": "@babel%2fhelper-compilation-targets",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": "./lib/index.js"
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/helper-define-polyfill-provider",
+    "/@babel/plugin-proposal-object-rest-spread",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
-  "keywords": [
-    "babel",
-    "babel-plugin"
-  ],
   "dependencies": {
     "@babel/compat-data": "^7.15.0",
@@ -27,7 +46,5 @@
     "semver": "^6.3.0"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0"
-  },
+  "description": "Helper functions on Babel compilation targets",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -37,4 +54,27 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "exports": {
+    ".": "./lib/index.js"
+  },
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-compilation-targets",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-compilation-targets"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,59 @@
 {
-  "name": "@babel/helper-annotate-as-pure",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-annotate-as-pure@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-annotate-as-pure@7.15.4",
+  "_id": "@babel/helper-annotate-as-pure@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
+  "_location": "/@babel/helper-create-class-features-plugin/@babel/helper-annotate-as-pure",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-annotate-as-pure@7.15.4",
+    "name": "@babel/helper-annotate-as-pure",
+    "escapedName": "@babel%2fhelper-annotate-as-pure",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-annotate-as-pure"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-annotate-as-pure",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,45 @@
 {
-  "name": "@babel/helper-create-class-features-plugin",
-  "version": "7.15.4",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "description": "Compile class public and private fields, private methods and decorators to ES6",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-create-class-features-plugin"
+  "_args": [
+    [
+      "@babel/helper-create-class-features-plugin@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-create-class-features-plugin@7.15.4",
+  "_id": "@babel/helper-create-class-features-plugin@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==",
+  "_location": "/@babel/helper-create-class-features-plugin",
+  "_phantomChildren": {
+    "@babel/types": "7.15.6"
   },
-  "main": "./lib/index.js",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-create-class-features-plugin@7.15.4",
+    "name": "@babel/helper-create-class-features-plugin",
+    "escapedName": "@babel%2fhelper-create-class-features-plugin",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "keywords": [
-    "babel",
-    "babel-plugin"
+  "_requiredBy": [
+    "/@babel/plugin-proposal-class-properties",
+    "/@babel/plugin-proposal-class-static-block",
+    "/@babel/plugin-proposal-private-methods",
+    "/@babel/plugin-proposal-private-property-in-object"
   ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-annotate-as-pure": "^7.15.4",
@@ -26,7 +50,5 @@
     "@babel/helper-split-export-declaration": "^7.15.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0"
-  },
+  "description": "Compile class public and private fields, private methods and decorators to ES6",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -37,4 +59,24 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-create-class-features-plugin",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-create-class-features-plugin"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-create-regexp-features-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-create-regexp-features-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-create-regexp-features-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,48 @@
 {
-  "name": "@babel/helper-create-regexp-features-plugin",
-  "version": "7.14.5",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "description": "Compile ESNext Regular Expressions to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-create-regexp-features-plugin"
+  "_args": [
+    [
+      "@babel/helper-create-regexp-features-plugin@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-create-regexp-features-plugin@7.14.5",
+  "_id": "@babel/helper-create-regexp-features-plugin@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==",
+  "_location": "/@babel/helper-create-regexp-features-plugin",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-create-regexp-features-plugin@7.14.5",
+    "name": "@babel/helper-create-regexp-features-plugin",
+    "escapedName": "@babel%2fhelper-create-regexp-features-plugin",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "main": "./lib/index.js",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-proposal-unicode-property-regex",
+    "/@babel/plugin-transform-dotall-regex",
+    "/@babel/plugin-transform-named-capturing-groups-regex",
+    "/@babel/plugin-transform-unicode-regex"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "keywords": [
-    "babel",
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-annotate-as-pure": "^7.14.5",
     "regexpu-core": "^4.7.1"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0"
-  },
+  "description": "Compile ESNext Regular Expressions to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +51,24 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-create-regexp-features-plugin",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-create-regexp-features-plugin"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/@babel/helper-define-polyfill-provider/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/@babel/helper-define-polyfill-provider"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-define-polyfill-provider/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,63 @@
 {
-  "name": "@babel/helper-define-polyfill-provider",
-  "version": "0.2.3",
-  "description": "Babel helper to create your own polyfill provider",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel-polyfills.git",
-    "directory": "packages/babel-helper-define-polyfill-provider"
+  "_args": [
+    [
+      "@babel/helper-define-polyfill-provider@0.2.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-define-polyfill-provider@0.2.3",
+  "_id": "@babel/helper-define-polyfill-provider@0.2.3",
+  "_inBundle": false,
+  "_integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==",
+  "_location": "/@babel/helper-define-polyfill-provider",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-define-polyfill-provider@0.2.3",
+    "name": "@babel/helper-define-polyfill-provider",
+    "escapedName": "@babel%2fhelper-define-polyfill-provider",
+    "scope": "@babel",
+    "rawSpec": "0.2.3",
+    "saveSpec": null,
+    "fetchSpec": "0.2.3"
   },
-  "keywords": [
-    "babel-plugin"
+  "_requiredBy": [
+    "/babel-plugin-polyfill-corejs2",
+    "/babel-plugin-polyfill-corejs3",
+    "/babel-plugin-polyfill-regenerator"
   ],
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "lib/index.js",
+  "_resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz",
+  "_spec": "0.2.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "browser": {
     "./lib/node/dependencies.js": "./lib/browser/dependencies.js",
     "./src/node/dependencies.js": "./src/browser/dependencies.js"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel-polyfills/issues"
+  },
+  "dependencies": {
+    "@babel/helper-compilation-targets": "^7.13.0",
+    "@babel/helper-module-imports": "^7.12.13",
+    "@babel/helper-plugin-utils": "^7.13.0",
+    "@babel/traverse": "^7.13.0",
+    "debug": "^4.1.1",
+    "lodash.debounce": "^4.0.8",
+    "resolve": "^1.14.2",
+    "semver": "^6.1.2"
+  },
+  "description": "Babel helper to create your own polyfill provider",
+  "devDependencies": {
+    "@babel/cli": "^7.11.5",
+    "@babel/core": "^7.13.0",
+    "@babel/generator": "^7.11.5",
+    "@babel/plugin-transform-modules-commonjs": "^7.10.4",
+    "babel-loader": "^8.1.0",
+    "rollup": "^2.3.2",
+    "rollup-plugin-babel": "^4.4.0",
+    "webpack": "^4.42.1",
+    "webpack-cli": "^3.3.11"
   },
   "exports": {
@@ -33,28 +74,23 @@
     "./package.json": "./package.json"
   },
-  "dependencies": {
-    "@babel/helper-compilation-targets": "^7.13.0",
-    "@babel/helper-module-imports": "^7.12.13",
-    "@babel/helper-plugin-utils": "^7.13.0",
-    "@babel/traverse": "^7.13.0",
-    "debug": "^4.1.1",
-    "lodash.debounce": "^4.0.8",
-    "resolve": "^1.14.2",
-    "semver": "^6.1.2"
-  },
+  "gitHead": "9ecc6171257ca4185ebd880a75ae0232862720c2",
+  "homepage": "https://github.com/babel/babel-polyfills#readme",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "@babel/helper-define-polyfill-provider",
   "peerDependencies": {
     "@babel/core": "^7.4.0-0"
   },
-  "devDependencies": {
-    "@babel/cli": "^7.11.5",
-    "@babel/core": "^7.13.0",
-    "@babel/generator": "^7.11.5",
-    "@babel/plugin-transform-modules-commonjs": "^7.10.4",
-    "babel-loader": "^8.1.0",
-    "rollup": "^2.3.2",
-    "rollup-plugin-babel": "^4.4.0",
-    "webpack": "^4.42.1",
-    "webpack-cli": "^3.3.11"
+  "publishConfig": {
+    "access": "public"
   },
-  "gitHead": "9ecc6171257ca4185ebd880a75ae0232862720c2"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel-polyfills.git",
+    "directory": "packages/babel-helper-define-polyfill-provider"
+  },
+  "version": "0.2.3"
 }
Index: trip-planner-front/node_modules/@babel/helper-explode-assignable-expression/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-explode-assignable-expression/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-explode-assignable-expression/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,44 @@
 {
-  "name": "@babel/helper-explode-assignable-expression",
-  "version": "7.15.4",
-  "description": "Helper function to explode an assignable expression",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-explode-assignable-expression"
+  "_args": [
+    [
+      "@babel/helper-explode-assignable-expression@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-explode-assignable-expression@7.15.4",
+  "_id": "@babel/helper-explode-assignable-expression@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==",
+  "_location": "/@babel/helper-explode-assignable-expression",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-explode-assignable-expression@7.15.4",
+    "name": "@babel/helper-explode-assignable-expression",
+    "escapedName": "@babel%2fhelper-explode-assignable-expression",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-explode-assignable-expression",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/helper-builder-binary-assignment-operator-visitor"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to explode an assignable expression",
   "devDependencies": {
     "@babel/traverse": "7.15.4"
@@ -23,4 +47,16 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-explode-assignable-expression",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-explode-assignable-expression",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-explode-assignable-expression"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-function-name/node_modules/@babel/template/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-function-name/node_modules/@babel/template/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-function-name/node_modules/@babel/template/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,53 @@
 {
+  "_args": [
+    [
+      "@babel/template@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/template@7.15.4",
+  "_id": "@babel/template@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+  "_location": "/@babel/helper-function-name/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/template@7.15.4",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-function-name"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.14.5",
+    "@babel/parser": "^7.15.4",
+    "@babel/types": "^7.15.4"
+  },
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.15.4",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,15 +55,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.14.5",
-    "@babel/parser": "^7.15.4",
-    "@babel/types": "^7.15.4"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-function-name/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-function-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-function-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,48 @@
 {
-  "name": "@babel/helper-function-name",
-  "version": "7.15.4",
-  "description": "Helper function to change the property 'name' of every function",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-function-name"
+  "_args": [
+    [
+      "@babel/helper-function-name@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-function-name@7.15.4",
+  "_id": "@babel/helper-function-name@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
+  "_location": "/@babel/helper-function-name",
+  "_phantomChildren": {
+    "@babel/code-frame": "7.15.8",
+    "@babel/parser": "7.15.8",
+    "@babel/types": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-function-name",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-function-name@7.15.4",
+    "name": "@babel/helper-function-name",
+    "escapedName": "@babel%2fhelper-function-name",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin",
+    "/@babel/helper-wrap-function",
+    "/@babel/plugin-transform-classes",
+    "/@babel/plugin-transform-function-name",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-get-function-arity": "^7.15.4",
@@ -19,7 +50,20 @@
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to change the property 'name' of every function",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-function-name",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-function-name",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-function-name"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-get-function-arity/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-get-function-arity/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-get-function-arity/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,59 @@
 {
-  "name": "@babel/helper-get-function-arity",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-get-function-arity@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-get-function-arity@7.15.4",
+  "_id": "@babel/helper-get-function-arity@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
+  "_location": "/@babel/helper-get-function-arity",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-get-function-arity@7.15.4",
+    "name": "@babel/helper-get-function-arity",
+    "escapedName": "@babel%2fhelper-get-function-arity",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-function-name"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Helper function to get function arity",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-get-function-arity"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-get-function-arity",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-get-function-arity",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-get-function-arity"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-hoist-variables/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-hoist-variables/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-hoist-variables/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,46 @@
 {
-  "name": "@babel/helper-hoist-variables",
-  "version": "7.15.4",
-  "description": "Helper function to hoist variables",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-hoist-variables"
+  "TODO": "The @babel/traverse dependency is only needed for the NodePath TS type. We can consider exporting it from @babel/core.",
+  "_args": [
+    [
+      "@babel/helper-hoist-variables@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-hoist-variables@7.15.4",
+  "_id": "@babel/helper-hoist-variables@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
+  "_location": "/@babel/helper-hoist-variables",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-hoist-variables@7.15.4",
+    "name": "@babel/helper-hoist-variables",
+    "escapedName": "@babel%2fhelper-hoist-variables",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-hoist-variables",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-transform-modules-systemjs",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
-  "TODO": "The @babel/traverse dependency is only needed for the NodePath TS type. We can consider exporting it from @babel/core.",
+  "description": "Helper function to hoist variables",
   "devDependencies": {
     "@babel/traverse": "7.15.4"
@@ -24,4 +49,16 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-hoist-variables",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-hoist-variables",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-hoist-variables"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-member-expression-to-functions/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-member-expression-to-functions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-member-expression-to-functions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,45 @@
 {
-  "name": "@babel/helper-member-expression-to-functions",
-  "version": "7.15.4",
-  "description": "Helper function to replace certain member expressions with function calls",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-member-expression-to-functions"
+  "_args": [
+    [
+      "@babel/helper-member-expression-to-functions@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-member-expression-to-functions@7.15.4",
+  "_id": "@babel/helper-member-expression-to-functions@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
+  "_location": "/@babel/helper-member-expression-to-functions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-member-expression-to-functions@7.15.4",
+    "name": "@babel/helper-member-expression-to-functions",
+    "escapedName": "@babel%2fhelper-member-expression-to-functions",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-member-expression-to-functions",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin",
+    "/@babel/helper-replace-supers"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to replace certain member expressions with function calls",
   "devDependencies": {
     "@babel/traverse": "7.15.4"
@@ -23,4 +47,17 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-member-expression-to-functions",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-member-expression-to-functions",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-member-expression-to-functions"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-module-imports/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-module-imports/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-module-imports/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,47 @@
 {
-  "name": "@babel/helper-module-imports",
-  "version": "7.15.4",
-  "description": "Babel helper functions for inserting module loads",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/helper-module-imports@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-module-imports@7.15.4",
+  "_id": "@babel/helper-module-imports@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
+  "_location": "/@babel/helper-module-imports",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-module-imports@7.15.4",
+    "name": "@babel/helper-module-imports",
+    "escapedName": "@babel%2fhelper-module-imports",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-module-imports"
+  "_requiredBy": [
+    "/@babel/helper-define-polyfill-provider",
+    "/@babel/helper-module-transforms",
+    "/@babel/plugin-transform-async-to-generator",
+    "/@babel/plugin-transform-runtime"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
+  "description": "Babel helper functions for inserting module loads",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -24,4 +50,17 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-module-imports",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-module-imports"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-module-transforms/node_modules/@babel/template/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-module-transforms/node_modules/@babel/template/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-module-transforms/node_modules/@babel/template/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,53 @@
 {
+  "_args": [
+    [
+      "@babel/template@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/template@7.15.4",
+  "_id": "@babel/template@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+  "_location": "/@babel/helper-module-transforms/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/template@7.15.4",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-module-transforms"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.14.5",
+    "@babel/parser": "^7.15.4",
+    "@babel/types": "^7.15.4"
+  },
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.15.4",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,15 +55,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.14.5",
-    "@babel/parser": "^7.15.4",
-    "@babel/types": "^7.15.4"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-module-transforms/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-module-transforms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-module-transforms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,48 @@
 {
-  "name": "@babel/helper-module-transforms",
-  "version": "7.15.8",
-  "description": "Babel helper functions for implementing ES6 module transformations",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/helper-module-transforms@7.15.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-module-transforms@7.15.8",
+  "_id": "@babel/helper-module-transforms@7.15.8",
+  "_inBundle": false,
+  "_integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
+  "_location": "/@babel/helper-module-transforms",
+  "_phantomChildren": {
+    "@babel/code-frame": "7.15.8",
+    "@babel/parser": "7.15.8",
+    "@babel/types": "7.15.6"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-module-transforms"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-module-transforms@7.15.8",
+    "name": "@babel/helper-module-transforms",
+    "escapedName": "@babel%2fhelper-module-transforms",
+    "scope": "@babel",
+    "rawSpec": "7.15.8",
+    "saveSpec": null,
+    "fetchSpec": "7.15.8"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/plugin-transform-modules-amd",
+    "/@babel/plugin-transform-modules-commonjs",
+    "/@babel/plugin-transform-modules-systemjs",
+    "/@babel/plugin-transform-modules-umd"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
+  "_spec": "7.15.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-module-imports": "^7.15.4",
@@ -25,6 +55,20 @@
     "@babel/types": "^7.15.6"
   },
+  "description": "Babel helper functions for implementing ES6 module transformations",
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-module-transforms",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-module-transforms"
+  },
+  "version": "7.15.8"
 }
Index: trip-planner-front/node_modules/@babel/helper-optimise-call-expression/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-optimise-call-expression/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-optimise-call-expression/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,46 @@
 {
-  "name": "@babel/helper-optimise-call-expression",
-  "version": "7.15.4",
-  "description": "Helper function to optimise call expression",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-optimise-call-expression"
+  "_args": [
+    [
+      "@babel/helper-optimise-call-expression@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-optimise-call-expression@7.15.4",
+  "_id": "@babel/helper-optimise-call-expression@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
+  "_location": "/@babel/helper-optimise-call-expression",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-optimise-call-expression@7.15.4",
+    "name": "@babel/helper-optimise-call-expression",
+    "escapedName": "@babel%2fhelper-optimise-call-expression",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-optimise-call-expression",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin",
+    "/@babel/helper-replace-supers",
+    "/@babel/plugin-transform-classes"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to optimise call expression",
   "devDependencies": {
     "@babel/generator": "7.15.4",
@@ -24,4 +50,16 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-optimise-call-expression",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-optimise-call-expression",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-optimise-call-expression"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-plugin-utils/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-plugin-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-plugin-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,111 @@
 {
-  "name": "@babel/helper-plugin-utils",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/helper-plugin-utils@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-plugin-utils@7.14.5",
+  "_id": "@babel/helper-plugin-utils@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
+  "_location": "/@babel/helper-plugin-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-plugin-utils@7.14.5",
+    "name": "@babel/helper-plugin-utils",
+    "escapedName": "@babel%2fhelper-plugin-utils",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/helper-define-polyfill-provider",
+    "/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+    "/@babel/plugin-proposal-async-generator-functions",
+    "/@babel/plugin-proposal-class-properties",
+    "/@babel/plugin-proposal-class-static-block",
+    "/@babel/plugin-proposal-dynamic-import",
+    "/@babel/plugin-proposal-export-namespace-from",
+    "/@babel/plugin-proposal-json-strings",
+    "/@babel/plugin-proposal-logical-assignment-operators",
+    "/@babel/plugin-proposal-nullish-coalescing-operator",
+    "/@babel/plugin-proposal-numeric-separator",
+    "/@babel/plugin-proposal-object-rest-spread",
+    "/@babel/plugin-proposal-optional-catch-binding",
+    "/@babel/plugin-proposal-optional-chaining",
+    "/@babel/plugin-proposal-private-methods",
+    "/@babel/plugin-proposal-private-property-in-object",
+    "/@babel/plugin-proposal-unicode-property-regex",
+    "/@babel/plugin-syntax-async-generators",
+    "/@babel/plugin-syntax-class-properties",
+    "/@babel/plugin-syntax-class-static-block",
+    "/@babel/plugin-syntax-dynamic-import",
+    "/@babel/plugin-syntax-export-namespace-from",
+    "/@babel/plugin-syntax-json-strings",
+    "/@babel/plugin-syntax-logical-assignment-operators",
+    "/@babel/plugin-syntax-nullish-coalescing-operator",
+    "/@babel/plugin-syntax-numeric-separator",
+    "/@babel/plugin-syntax-object-rest-spread",
+    "/@babel/plugin-syntax-optional-catch-binding",
+    "/@babel/plugin-syntax-optional-chaining",
+    "/@babel/plugin-syntax-private-property-in-object",
+    "/@babel/plugin-syntax-top-level-await",
+    "/@babel/plugin-transform-arrow-functions",
+    "/@babel/plugin-transform-async-to-generator",
+    "/@babel/plugin-transform-block-scoped-functions",
+    "/@babel/plugin-transform-block-scoping",
+    "/@babel/plugin-transform-classes",
+    "/@babel/plugin-transform-computed-properties",
+    "/@babel/plugin-transform-destructuring",
+    "/@babel/plugin-transform-dotall-regex",
+    "/@babel/plugin-transform-duplicate-keys",
+    "/@babel/plugin-transform-exponentiation-operator",
+    "/@babel/plugin-transform-for-of",
+    "/@babel/plugin-transform-function-name",
+    "/@babel/plugin-transform-literals",
+    "/@babel/plugin-transform-member-expression-literals",
+    "/@babel/plugin-transform-modules-amd",
+    "/@babel/plugin-transform-modules-commonjs",
+    "/@babel/plugin-transform-modules-systemjs",
+    "/@babel/plugin-transform-modules-umd",
+    "/@babel/plugin-transform-new-target",
+    "/@babel/plugin-transform-object-super",
+    "/@babel/plugin-transform-parameters",
+    "/@babel/plugin-transform-property-literals",
+    "/@babel/plugin-transform-reserved-words",
+    "/@babel/plugin-transform-runtime",
+    "/@babel/plugin-transform-shorthand-properties",
+    "/@babel/plugin-transform-spread",
+    "/@babel/plugin-transform-sticky-regex",
+    "/@babel/plugin-transform-template-literals",
+    "/@babel/plugin-transform-typeof-symbol",
+    "/@babel/plugin-transform-unicode-escapes",
+    "/@babel/plugin-transform-unicode-regex",
+    "/@babel/preset-env",
+    "/@babel/preset-modules"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "description": "General utilities for plugins to use",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "engines": {
+    "node": ">=6.9.0"
+  },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-plugin-utils",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-plugin-utils",
   "publishConfig": {
     "access": "public"
@@ -11,10 +113,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-helper-plugin-utils"
   },
-  "main": "./lib/index.js",
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,59 @@
 {
-  "name": "@babel/helper-annotate-as-pure",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-annotate-as-pure@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-annotate-as-pure@7.15.4",
+  "_id": "@babel/helper-annotate-as-pure@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
+  "_location": "/@babel/helper-remap-async-to-generator/@babel/helper-annotate-as-pure",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-annotate-as-pure@7.15.4",
+    "name": "@babel/helper-annotate-as-pure",
+    "escapedName": "@babel%2fhelper-annotate-as-pure",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-remap-async-to-generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-annotate-as-pure"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-annotate-as-pure",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-remap-async-to-generator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,43 @@
 {
-  "name": "@babel/helper-remap-async-to-generator",
-  "version": "7.15.4",
-  "description": "Helper function to remap async functions to generators",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-remap-async-to-generator"
+  "_args": [
+    [
+      "@babel/helper-remap-async-to-generator@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-remap-async-to-generator@7.15.4",
+  "_id": "@babel/helper-remap-async-to-generator@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==",
+  "_location": "/@babel/helper-remap-async-to-generator",
+  "_phantomChildren": {
+    "@babel/types": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-remap-async-to-generator",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-remap-async-to-generator@7.15.4",
+    "name": "@babel/helper-remap-async-to-generator",
+    "escapedName": "@babel%2fhelper-remap-async-to-generator",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/plugin-proposal-async-generator-functions",
+    "/@babel/plugin-transform-async-to-generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-annotate-as-pure": "^7.15.4",
@@ -19,4 +45,5 @@
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to remap async functions to generators",
   "devDependencies": {
     "@babel/traverse": "7.15.4"
@@ -25,4 +52,16 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-remap-async-to-generator",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-remap-async-to-generator",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-remap-async-to-generator"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-replace-supers/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-replace-supers/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-replace-supers/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,43 @@
 {
-  "name": "@babel/helper-replace-supers",
-  "version": "7.15.4",
-  "description": "Helper function to replace supers",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-replace-supers"
+  "_args": [
+    [
+      "@babel/helper-replace-supers@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-replace-supers@7.15.4",
+  "_id": "@babel/helper-replace-supers@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
+  "_location": "/@babel/helper-replace-supers",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-replace-supers@7.15.4",
+    "name": "@babel/helper-replace-supers",
+    "escapedName": "@babel%2fhelper-replace-supers",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-replace-supers",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin",
+    "/@babel/helper-module-transforms",
+    "/@babel/plugin-transform-classes",
+    "/@babel/plugin-transform-object-super"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-member-expression-to-functions": "^7.15.4",
@@ -20,7 +46,20 @@
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper function to replace supers",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-replace-supers",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-replace-supers",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-replace-supers"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-simple-access/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-simple-access/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-simple-access/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,55 @@
 {
-  "name": "@babel/helper-simple-access",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-simple-access@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-simple-access@7.15.4",
+  "_id": "@babel/helper-simple-access@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
+  "_location": "/@babel/helper-simple-access",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-simple-access@7.15.4",
+    "name": "@babel/helper-simple-access",
+    "escapedName": "@babel%2fhelper-simple-access",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-module-transforms",
+    "/@babel/plugin-transform-modules-commonjs"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Babel helper for ensuring that access to a given value is performed through simple accesses",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "devDependencies": {
+    "@babel/traverse": "7.15.4"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-simple-access",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-simple-access",
   "publishConfig": {
     "access": "public"
@@ -11,16 +57,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-helper-simple-access"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
-  },
-  "devDependencies": {
-    "@babel/traverse": "7.15.4"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,46 @@
 {
-  "name": "@babel/helper-skip-transparent-expression-wrappers",
-  "version": "7.15.4",
-  "description": "Helper which skips types and parentheses",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-skip-transparent-expression-wrappers"
+  "_args": [
+    [
+      "@babel/helper-skip-transparent-expression-wrappers@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-skip-transparent-expression-wrappers@7.15.4",
+  "_id": "@babel/helper-skip-transparent-expression-wrappers@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==",
+  "_location": "/@babel/helper-skip-transparent-expression-wrappers",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-skip-transparent-expression-wrappers@7.15.4",
+    "name": "@babel/helper-skip-transparent-expression-wrappers",
+    "escapedName": "@babel%2fhelper-skip-transparent-expression-wrappers",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+    "/@babel/plugin-proposal-optional-chaining",
+    "/@babel/plugin-transform-spread"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": "./lib/index.js",
-    "./package.json": "./package.json"
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
   "dependencies": {
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper which skips types and parentheses",
   "devDependencies": {
     "@babel/traverse": "7.15.4"
@@ -26,4 +49,20 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "exports": {
+    ".": "./lib/index.js",
+    "./package.json": "./package.json"
+  },
+  "homepage": "https://github.com/babel/babel#readme",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-skip-transparent-expression-wrappers",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-skip-transparent-expression-wrappers"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-split-export-declaration/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-split-export-declaration/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-split-export-declaration/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,62 @@
 {
-  "name": "@babel/helper-split-export-declaration",
-  "version": "7.15.4",
-  "description": "",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-split-export-declaration"
+  "_args": [
+    [
+      "@babel/helper-split-export-declaration@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-split-export-declaration@7.15.4",
+  "_id": "@babel/helper-split-export-declaration@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
+  "_location": "/@babel/helper-split-export-declaration",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-split-export-declaration@7.15.4",
+    "name": "@babel/helper-split-export-declaration",
+    "escapedName": "@babel%2fhelper-split-export-declaration",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-create-class-features-plugin",
+    "/@babel/helper-module-transforms",
+    "/@babel/plugin-transform-classes",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
+  "description": ">",
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-split-export-declaration",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-split-export-declaration",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-split-export-declaration"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-validator-identifier/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-validator-identifier/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-validator-identifier/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "@babel/helper-validator-identifier",
-  "version": "7.15.7",
+  "_args": [
+    [
+      "@babel/helper-validator-identifier@7.15.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-validator-identifier@7.15.7",
+  "_id": "@babel/helper-validator-identifier@7.15.7",
+  "_inBundle": false,
+  "_integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+  "_location": "/@babel/helper-validator-identifier",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-validator-identifier@7.15.7",
+    "name": "@babel/helper-validator-identifier",
+    "escapedName": "@babel%2fhelper-validator-identifier",
+    "scope": "@babel",
+    "rawSpec": "7.15.7",
+    "saveSpec": null,
+    "fetchSpec": "7.15.7"
+  },
+  "_requiredBy": [
+    "/@babel/helper-module-transforms",
+    "/@babel/highlight",
+    "/@babel/plugin-transform-modules-systemjs",
+    "/@babel/types"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+  "_spec": "7.15.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "description": "Validate identifier/keywords name",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-validator-identifier"
-  },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "./lib/index.js",
-  "exports": "./lib/index.js",
   "devDependencies": {
     "@unicode/unicode-14.0.0": "^1.2.1",
@@ -21,4 +48,17 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "exports": "./lib/index.js",
+  "homepage": "https://github.com/babel/babel#readme",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-validator-identifier",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-validator-identifier"
+  },
+  "version": "7.15.7"
 }
Index: trip-planner-front/node_modules/@babel/helper-validator-option/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-validator-option/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-validator-option/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,58 @@
 {
+  "_args": [
+    [
+      "@babel/helper-validator-option@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-validator-option@7.14.5",
+  "_id": "@babel/helper-validator-option@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
+  "_location": "/@babel/helper-validator-option",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-validator-option@7.14.5",
+    "name": "@babel/helper-validator-option",
+    "escapedName": "@babel%2fhelper-validator-option",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/helper-compilation-targets",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "description": "Validate plugin/preset options",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "exports": "./lib/index.js",
+  "homepage": "https://github.com/babel/babel#readme",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/helper-validator-option",
-  "version": "7.14.5",
-  "description": "Validate plugin/preset options",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-validator-option"
-  },
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "exports": "./lib/index.js",
-  "engines": {
-    "node": ">=6.9.0"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-validator-option"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/helper-wrap-function/node_modules/@babel/template/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-wrap-function/node_modules/@babel/template/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-wrap-function/node_modules/@babel/template/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,53 @@
 {
+  "_args": [
+    [
+      "@babel/template@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/template@7.15.4",
+  "_id": "@babel/template@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+  "_location": "/@babel/helper-wrap-function/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/template@7.15.4",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helper-wrap-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.14.5",
+    "@babel/parser": "^7.15.4",
+    "@babel/types": "^7.15.4"
+  },
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.15.4",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,15 +55,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.14.5",
-    "@babel/parser": "^7.15.4",
-    "@babel/types": "^7.15.4"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helper-wrap-function/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helper-wrap-function/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helper-wrap-function/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "@babel/helper-wrap-function",
-  "version": "7.15.4",
-  "description": "Helper to wrap functions inside a function call.",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-wrap-function"
+  "_args": [
+    [
+      "@babel/helper-wrap-function@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-wrap-function@7.15.4",
+  "_id": "@babel/helper-wrap-function@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==",
+  "_location": "/@babel/helper-wrap-function",
+  "_phantomChildren": {
+    "@babel/code-frame": "7.15.8",
+    "@babel/parser": "7.15.8",
+    "@babel/types": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-wrap-function",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-wrap-function@7.15.4",
+    "name": "@babel/helper-wrap-function",
+    "escapedName": "@babel%2fhelper-wrap-function",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/helper-remap-async-to-generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-function-name": "^7.15.4",
@@ -20,7 +47,20 @@
     "@babel/types": "^7.15.4"
   },
+  "description": "Helper to wrap functions inside a function call.",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-wrap-function",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-wrap-function",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-wrap-function"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helpers/node_modules/@babel/template/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helpers/node_modules/@babel/template/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helpers/node_modules/@babel/template/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,53 @@
 {
+  "_args": [
+    [
+      "@babel/template@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/template@7.15.4",
+  "_id": "@babel/template@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
+  "_location": "/@babel/helpers/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/template@7.15.4",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/helpers"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.14.5",
+    "@babel/parser": "^7.15.4",
+    "@babel/types": "^7.15.4"
+  },
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.15.4",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,15 +55,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.14.5",
-    "@babel/parser": "^7.15.4",
-    "@babel/types": "^7.15.4"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/helpers/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/helpers/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/helpers/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,60 @@
 {
-  "name": "@babel/helpers",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helpers@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helpers@7.15.4",
+  "_id": "@babel/helpers@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
+  "_location": "/@babel/helpers",
+  "_phantomChildren": {
+    "@babel/code-frame": "7.15.8",
+    "@babel/parser": "7.15.8",
+    "@babel/types": "7.15.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helpers@7.15.4",
+    "name": "@babel/helpers",
+    "escapedName": "@babel%2fhelpers",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/template": "^7.15.4",
+    "@babel/traverse": "^7.15.4",
+    "@babel/types": "^7.15.4"
+  },
   "description": "Collection of helper functions used by Babel transforms.",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "devDependencies": {
+    "@babel/helper-plugin-test-runner": "7.14.5"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
   "homepage": "https://babel.dev/docs/en/next/babel-helpers",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helpers",
   "publishConfig": {
     "access": "public"
@@ -11,18 +62,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-helpers"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/template": "^7.15.4",
-    "@babel/traverse": "^7.15.4",
-    "@babel/types": "^7.15.4"
-  },
-  "devDependencies": {
-    "@babel/helper-plugin-test-runner": "7.14.5"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/highlight/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/highlight/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/highlight/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,40 @@
 {
-  "name": "@babel/highlight",
-  "version": "7.14.5",
-  "description": "Syntax highlight JavaScript strings for output in terminals.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-highlight",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/highlight@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/highlight@7.14.5",
+  "_id": "@babel/highlight@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+  "_location": "/@babel/highlight",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/highlight@7.14.5",
+    "name": "@babel/highlight",
+    "escapedName": "@babel%2fhighlight",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-highlight"
+  "_requiredBy": [
+    "/@babel/code-frame"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-validator-identifier": "^7.14.5",
@@ -20,4 +42,5 @@
     "js-tokens": "^4.0.0"
   },
+  "description": "Syntax highlight JavaScript strings for output in terminals.",
   "devDependencies": {
     "@types/chalk": "^2.0.0",
@@ -26,4 +49,17 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-highlight",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/highlight",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-highlight"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/parser/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,65 @@
 {
-  "name": "@babel/parser",
-  "version": "7.15.8",
+  "_args": [
+    [
+      "@babel/parser@7.15.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/parser@7.15.8",
+  "_id": "@babel/parser@7.15.8",
+  "_inBundle": false,
+  "_integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
+  "_location": "/@babel/parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/parser@7.15.8",
+    "name": "@babel/parser",
+    "escapedName": "@babel%2fparser",
+    "scope": "@babel",
+    "rawSpec": "7.15.8",
+    "saveSpec": null,
+    "fetchSpec": "7.15.8"
+  },
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/helper-function-name/@babel/template",
+    "/@babel/helper-module-transforms/@babel/template",
+    "/@babel/helper-wrap-function/@babel/template",
+    "/@babel/helpers/@babel/template",
+    "/@babel/template",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
+  "_spec": "7.15.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bin": {
+    "parser": "bin/babel-parser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen"
+  },
   "description": "A JavaScript parser",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "devDependencies": {
+    "@babel/code-frame": "7.15.8",
+    "@babel/helper-fixtures": "7.14.5",
+    "@babel/helper-validator-identifier": "7.15.7",
+    "charcodes": "^0.2.0"
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "files": [
+    "bin",
+    "lib",
+    "typings"
+  ],
   "homepage": "https://babel.dev/docs/en/next/babel-parser",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
   "keywords": [
     "babel",
@@ -18,25 +70,16 @@
     "@babel/parser"
   ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/parser",
+  "publishConfig": {
+    "access": "public"
+  },
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-parser"
   },
-  "main": "./lib/index.js",
   "types": "./typings/babel-parser.d.ts",
-  "files": [
-    "bin",
-    "lib",
-    "typings"
-  ],
-  "engines": {
-    "node": ">=6.0.0"
-  },
-  "devDependencies": {
-    "@babel/code-frame": "7.15.8",
-    "@babel/helper-fixtures": "7.14.5",
-    "@babel/helper-validator-identifier": "7.15.7",
-    "charcodes": "^0.2.0"
-  },
-  "bin": "./bin/babel-parser.js"
+  "version": "7.15.8"
 }
Index: trip-planner-front/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,40 @@
 {
-  "name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
-  "version": "7.15.4",
-  "description": "Transform optional chaining operators to workaround https://crbug.com/v8/11558",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining"
+  "_args": [
+    [
+      "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.15.4",
+  "_id": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==",
+  "_location": "/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.15.4",
+    "name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+    "escapedName": "@babel%2fplugin-bugfix-v8-spread-parameters-in-optional-chaining",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": [
-      "./lib/index.js"
-    ]
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
-  "keywords": [
-    "babel-plugin",
-    "bugfix"
-  ],
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
@@ -28,7 +42,5 @@
     "@babel/plugin-proposal-optional-chaining": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.13.0"
-  },
+  "description": "Transform optional chaining operators to workaround https://crbug.com/v8/11558",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -39,4 +51,28 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "exports": {
+    ".": [
+      "./lib/index.js"
+    ]
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+  "peerDependencies": {
+    "@babel/core": "^7.13.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-async-generator-functions/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-async-generator-functions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-async-generator-functions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "@babel/plugin-proposal-async-generator-functions",
-  "version": "7.14.7",
-  "description": "Turn async generator functions into ES2015 generators",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-async-generator-functions"
+  "_args": [
+    [
+      "@babel/plugin-proposal-async-generator-functions@7.14.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-async-generator-functions@7.14.7",
+  "_id": "@babel/plugin-proposal-async-generator-functions@7.14.7",
+  "_inBundle": false,
+  "_integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==",
+  "_location": "/@babel/plugin-proposal-async-generator-functions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-async-generator-functions@7.14.7",
+    "name": "@babel/plugin-proposal-async-generator-functions",
+    "escapedName": "@babel%2fplugin-proposal-async-generator-functions",
+    "scope": "@babel",
+    "rawSpec": "7.14.7",
+    "saveSpec": null,
+    "fetchSpec": "7.14.7"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-async-generator-functions",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz",
+  "_spec": "7.14.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
@@ -22,7 +43,5 @@
     "@babel/plugin-syntax-async-generators": "^7.8.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Turn async generator functions into ES2015 generators",
   "devDependencies": {
     "@babel/core": "7.14.6",
@@ -34,4 +53,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-async-generator-functions",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-async-generator-functions",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-async-generator-functions"
+  },
+  "version": "7.14.7"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-class-properties/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-class-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-class-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-class-properties",
-  "version": "7.14.5",
-  "description": "This plugin transforms static class properties as well as properties declared with the property initializer syntax",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-class-properties"
+  "_args": [
+    [
+      "@babel/plugin-proposal-class-properties@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-class-properties@7.14.5",
+  "_id": "@babel/plugin-proposal-class-properties@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==",
+  "_location": "/@babel/plugin-proposal-class-properties",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-class-properties@7.14.5",
+    "name": "@babel/plugin-proposal-class-properties",
+    "escapedName": "@babel%2fplugin-proposal-class-properties",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-class-properties",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-create-class-features-plugin": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms static class properties as well as properties declared with the property initializer syntax",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-class-properties",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-class-properties",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-class-properties"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-class-static-block/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-class-static-block/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-class-static-block/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,40 @@
 {
-  "name": "@babel/plugin-proposal-class-static-block",
-  "version": "7.15.4",
-  "description": "Allow parsing of class static blocks",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-class-static-block"
+  "_args": [
+    [
+      "@babel/plugin-proposal-class-static-block@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-class-static-block@7.15.4",
+  "_id": "@babel/plugin-proposal-class-static-block@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==",
+  "_location": "/@babel/plugin-proposal-class-static-block",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-class-static-block@7.15.4",
+    "name": "@babel/plugin-proposal-class-static-block",
+    "escapedName": "@babel%2fplugin-proposal-class-static-block",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": "./lib/index.js"
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
   "dependencies": {
     "@babel/helper-create-class-features-plugin": "^7.15.4",
@@ -24,15 +42,33 @@
     "@babel/plugin-syntax-class-static-block": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.12.0"
-  },
+  "description": "Allow parsing of class static blocks",
   "devDependencies": {
     "@babel/core": "7.15.4",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-class-static-block",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "exports": {
+    ".": "./lib/index.js"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-class-static-block",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-class-static-block",
+  "peerDependencies": {
+    "@babel/core": "^7.12.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-class-static-block"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-dynamic-import/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-dynamic-import/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-dynamic-import/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-dynamic-import",
-  "version": "7.14.5",
-  "description": "Transform import() expressions",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-dynamic-import"
+  "_args": [
+    [
+      "@babel/plugin-proposal-dynamic-import@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-dynamic-import@7.14.5",
+  "_id": "@babel/plugin-proposal-dynamic-import@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==",
+  "_location": "/@babel/plugin-proposal-dynamic-import",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-dynamic-import@7.14.5",
+    "name": "@babel/plugin-proposal-dynamic-import",
+    "escapedName": "@babel%2fplugin-proposal-dynamic-import",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-dynamic-import": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Transform import() expressions",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-dynamic-import",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-dynamic-import"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-export-namespace-from/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-export-namespace-from/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-export-namespace-from/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,70 @@
 {
-  "name": "@babel/plugin-proposal-export-namespace-from",
-  "version": "7.14.5",
-  "description": "Compile export namespace to ES2015",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-export-namespace-from"
+  "_args": [
+    [
+      "@babel/plugin-proposal-export-namespace-from@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-export-namespace-from@7.14.5",
+  "_id": "@babel/plugin-proposal-export-namespace-from@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==",
+  "_location": "/@babel/plugin-proposal-export-namespace-from",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-export-namespace-from@7.14.5",
+    "name": "@babel/plugin-proposal-export-namespace-from",
+    "escapedName": "@babel%2fplugin-proposal-export-namespace-from",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile export namespace to ES2015",
   "devDependencies": {
     "@babel/core": "7.14.5",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-export-namespace-from",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-export-namespace-from"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-json-strings/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-json-strings/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-json-strings/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-json-strings",
-  "version": "7.14.5",
-  "description": "Escape U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-json-strings"
+  "_args": [
+    [
+      "@babel/plugin-proposal-json-strings@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-json-strings@7.14.5",
+  "_id": "@babel/plugin-proposal-json-strings@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==",
+  "_location": "/@babel/plugin-proposal-json-strings",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-json-strings@7.14.5",
+    "name": "@babel/plugin-proposal-json-strings",
+    "escapedName": "@babel%2fplugin-proposal-json-strings",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-json-strings",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-json-strings": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Escape U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-json-strings",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-json-strings",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-json-strings"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-logical-assignment-operators/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-logical-assignment-operators/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-logical-assignment-operators/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-logical-assignment-operators",
-  "version": "7.14.5",
-  "description": "Transforms logical assignment operators into short-circuited assignments",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-logical-assignment-operators"
+  "_args": [
+    [
+      "@babel/plugin-proposal-logical-assignment-operators@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-logical-assignment-operators@7.14.5",
+  "_id": "@babel/plugin-proposal-logical-assignment-operators@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==",
+  "_location": "/@babel/plugin-proposal-logical-assignment-operators",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-logical-assignment-operators@7.14.5",
+    "name": "@babel/plugin-proposal-logical-assignment-operators",
+    "escapedName": "@babel%2fplugin-proposal-logical-assignment-operators",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Transforms logical assignment operators into short-circuited assignments",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -29,8 +48,25 @@
     "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-logical-assignment-operators",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-logical-assignment-operators",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-logical-assignment-operators",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-logical-assignment-operators"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-nullish-coalescing-operator",
-  "version": "7.14.5",
-  "description": "Remove nullish coalescing operator",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-nullish-coalescing-operator"
+  "_args": [
+    [
+      "@babel/plugin-proposal-nullish-coalescing-operator@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-nullish-coalescing-operator@7.14.5",
+  "_id": "@babel/plugin-proposal-nullish-coalescing-operator@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==",
+  "_location": "/@babel/plugin-proposal-nullish-coalescing-operator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-nullish-coalescing-operator@7.14.5",
+    "name": "@babel/plugin-proposal-nullish-coalescing-operator",
+    "escapedName": "@babel%2fplugin-proposal-nullish-coalescing-operator",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-nullish-coalescing-operator",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Remove nullish coalescing operator",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-nullish-coalescing-operator",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-nullish-coalescing-operator",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-nullish-coalescing-operator"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-numeric-separator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-numeric-separator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-numeric-separator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-numeric-separator",
-  "version": "7.14.5",
-  "description": "Remove numeric separators from Decimal, Binary, Hex and Octal literals",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-numeric-separator"
+  "_args": [
+    [
+      "@babel/plugin-proposal-numeric-separator@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-numeric-separator@7.14.5",
+  "_id": "@babel/plugin-proposal-numeric-separator@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==",
+  "_location": "/@babel/plugin-proposal-numeric-separator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-numeric-separator@7.14.5",
+    "name": "@babel/plugin-proposal-numeric-separator",
+    "escapedName": "@babel%2fplugin-proposal-numeric-separator",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-numeric-separator",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-numeric-separator": "^7.10.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Remove numeric separators from Decimal, Binary, Hex and Octal literals",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-numeric-separator",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-numeric-separator",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-numeric-separator"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-object-rest-spread/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-object-rest-spread/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-object-rest-spread/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,40 @@
 {
-  "name": "@babel/plugin-proposal-object-rest-spread",
-  "version": "7.15.6",
-  "description": "Compile object rest and spread to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-object-rest-spread"
+  "_args": [
+    [
+      "@babel/plugin-proposal-object-rest-spread@7.15.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-object-rest-spread@7.15.6",
+  "_id": "@babel/plugin-proposal-object-rest-spread@7.15.6",
+  "_inBundle": false,
+  "_integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==",
+  "_location": "/@babel/plugin-proposal-object-rest-spread",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-object-rest-spread@7.15.6",
+    "name": "@babel/plugin-proposal-object-rest-spread",
+    "escapedName": "@babel%2fplugin-proposal-object-rest-spread",
+    "scope": "@babel",
+    "rawSpec": "7.15.6",
+    "saveSpec": null,
+    "fetchSpec": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-object-rest-spread",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz",
+  "_spec": "7.15.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/compat-data": "^7.15.0",
@@ -24,7 +44,5 @@
     "@babel/plugin-transform-parameters": "^7.15.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile object rest and spread to ES5",
   "devDependencies": {
     "@babel/core": "7.15.5",
@@ -35,4 +53,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-object-rest-spread",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-object-rest-spread",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-object-rest-spread"
+  },
+  "version": "7.15.6"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-optional-catch-binding/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-optional-catch-binding/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-optional-catch-binding/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-optional-catch-binding",
-  "version": "7.14.5",
-  "description": "Compile optional catch bindings",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-optional-catch-binding"
+  "_args": [
+    [
+      "@babel/plugin-proposal-optional-catch-binding@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-optional-catch-binding@7.14.5",
+  "_id": "@babel/plugin-proposal-optional-catch-binding@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==",
+  "_location": "/@babel/plugin-proposal-optional-catch-binding",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-optional-catch-binding@7.14.5",
+    "name": "@babel/plugin-proposal-optional-catch-binding",
+    "escapedName": "@babel%2fplugin-proposal-optional-catch-binding",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-optional-catch-binding",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile optional catch bindings",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-optional-catch-binding",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-optional-catch-binding",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-optional-catch-binding"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-optional-chaining/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-optional-chaining/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-optional-chaining/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "@babel/plugin-proposal-optional-chaining",
-  "version": "7.14.5",
-  "description": "Transform optional chaining operators into a series of nil checks",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-optional-chaining"
+  "_args": [
+    [
+      "@babel/plugin-proposal-optional-chaining@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-optional-chaining@7.14.5",
+  "_id": "@babel/plugin-proposal-optional-chaining@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==",
+  "_location": "/@babel/plugin-proposal-optional-chaining",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-optional-chaining@7.14.5",
+    "name": "@babel/plugin-proposal-optional-chaining",
+    "escapedName": "@babel%2fplugin-proposal-optional-chaining",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-optional-chaining",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
@@ -22,7 +43,5 @@
     "@babel/plugin-syntax-optional-chaining": "^7.8.3"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Transform optional chaining operators into a series of nil checks",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -33,4 +52,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-optional-chaining",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-optional-chaining",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-optional-chaining"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-private-methods/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-private-methods/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-private-methods/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-proposal-private-methods",
-  "version": "7.14.5",
-  "description": "This plugin transforms private class methods",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-private-methods"
+  "_args": [
+    [
+      "@babel/plugin-proposal-private-methods@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-private-methods@7.14.5",
+  "_id": "@babel/plugin-proposal-private-methods@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==",
+  "_location": "/@babel/plugin-proposal-private-methods",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-private-methods@7.14.5",
+    "name": "@babel/plugin-proposal-private-methods",
+    "escapedName": "@babel%2fplugin-proposal-private-methods",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-private-methods",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-create-class-features-plugin": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms private class methods",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-private-methods",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-private-methods",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-private-methods"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,59 @@
 {
-  "name": "@babel/helper-annotate-as-pure",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-annotate-as-pure@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-annotate-as-pure@7.15.4",
+  "_id": "@babel/helper-annotate-as-pure@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
+  "_location": "/@babel/plugin-proposal-private-property-in-object/@babel/helper-annotate-as-pure",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-annotate-as-pure@7.15.4",
+    "name": "@babel/helper-annotate-as-pure",
+    "escapedName": "@babel%2fhelper-annotate-as-pure",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-private-property-in-object"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-annotate-as-pure"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-annotate-as-pure",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-private-property-in-object/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,42 @@
 {
-  "name": "@babel/plugin-proposal-private-property-in-object",
-  "version": "7.15.4",
-  "description": "This plugin transforms checks for a private property in an object",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-private-property-in-object"
+  "_args": [
+    [
+      "@babel/plugin-proposal-private-property-in-object@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-private-property-in-object@7.15.4",
+  "_id": "@babel/plugin-proposal-private-property-in-object@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==",
+  "_location": "/@babel/plugin-proposal-private-property-in-object",
+  "_phantomChildren": {
+    "@babel/types": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-private-property-in-object",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-private-property-in-object@7.15.4",
+    "name": "@babel/plugin-proposal-private-property-in-object",
+    "escapedName": "@babel%2fplugin-proposal-private-property-in-object",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
+  "_requiredBy": [
+    "/@babel/preset-env"
   ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-annotate-as-pure": "^7.15.4",
@@ -23,7 +45,5 @@
     "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms checks for a private property in an object",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -33,4 +53,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-private-property-in-object",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-private-property-in-object",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-private-property-in-object"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-proposal-unicode-property-regex/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-proposal-unicode-property-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-proposal-unicode-property-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,54 @@
 {
-  "name": "@babel/plugin-proposal-unicode-property-regex",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/plugin-proposal-unicode-property-regex@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-proposal-unicode-property-regex@7.14.5",
+  "_id": "@babel/plugin-proposal-unicode-property-regex@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==",
+  "_location": "/@babel/plugin-proposal-unicode-property-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-proposal-unicode-property-regex@7.14.5",
+    "name": "@babel/plugin-proposal-unicode-property-regex",
+    "escapedName": "@babel%2fplugin-proposal-unicode-property-regex",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/preset-env",
+    "/@babel/preset-modules"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+    "@babel/helper-plugin-utils": "^7.14.5"
+  },
   "description": "Compile Unicode property escapes in Unicode regular expressions to ES5.",
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-unicode-property-regex",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "devDependencies": {
+    "@babel/core": "7.14.5",
+    "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "main": "./lib/index.js",
   "engines": {
     "node": ">=4"
   },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-unicode-property-regex",
   "keywords": [
     "babel-plugin",
@@ -20,21 +59,18 @@
     "unicode"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-proposal-unicode-property-regex"
-  },
-  "bugs": "https://github.com/babel/babel/issues",
-  "dependencies": {
-    "@babel/helper-create-regexp-features-plugin": "^7.14.5",
-    "@babel/helper-plugin-utils": "^7.14.5"
-  },
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-proposal-unicode-property-regex",
   "peerDependencies": {
     "@babel/core": "^7.0.0-0"
   },
-  "devDependencies": {
-    "@babel/core": "7.14.5",
-    "@babel/helper-plugin-test-runner": "7.14.5"
+  "publishConfig": {
+    "access": "public"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-proposal-unicode-property-regex"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-async-generators/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-async-generators/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-async-generators/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-async-generators@7.8.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-async-generators@7.8.4",
+  "_id": "@babel/plugin-syntax-async-generators@7.8.4",
+  "_inBundle": false,
+  "_integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+  "_location": "/@babel/plugin-syntax-async-generators",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-async-generators@7.8.4",
+    "name": "@babel/plugin-syntax-async-generators",
+    "escapedName": "@babel%2fplugin-syntax-async-generators",
+    "scope": "@babel",
+    "rawSpec": "7.8.4",
+    "saveSpec": null,
+    "fetchSpec": "7.8.4"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-async-generator-functions",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+  "_spec": "7.8.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of async generator functions",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-async-generators",
-  "version": "7.8.4",
-  "description": "Allow parsing of async generator functions",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-class-properties/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-class-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-class-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,61 @@
 {
-  "name": "@babel/plugin-syntax-class-properties",
-  "version": "7.12.13",
+  "_args": [
+    [
+      "@babel/plugin-syntax-class-properties@7.12.13",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-class-properties@7.12.13",
+  "_id": "@babel/plugin-syntax-class-properties@7.12.13",
+  "_inBundle": false,
+  "_integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+  "_location": "/@babel/plugin-syntax-class-properties",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-class-properties@7.12.13",
+    "name": "@babel/plugin-syntax-class-properties",
+    "escapedName": "@babel%2fplugin-syntax-class-properties",
+    "scope": "@babel",
+    "rawSpec": "7.12.13",
+    "saveSpec": null,
+    "fetchSpec": "7.12.13"
+  },
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+  "_spec": "7.12.13",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.12.13"
+  },
   "description": "Allow parsing of class properties",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-class-properties"
+  "devDependencies": {
+    "@babel/core": "7.12.13"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-class-properties",
+  "keywords": [
+    "babel-plugin"
+  ],
   "license": "MIT",
+  "main": "lib/index.js",
+  "name": "@babel/plugin-syntax-class-properties",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.12.13"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-class-properties"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "7.12.13"
-  }
+  "version": "7.12.13"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-class-static-block/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-class-static-block/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-class-static-block/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,69 @@
 {
-  "name": "@babel/plugin-syntax-class-static-block",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/plugin-syntax-class-static-block@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-class-static-block@7.14.5",
+  "_id": "@babel/plugin-syntax-class-static-block@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+  "_location": "/@babel/plugin-syntax-class-static-block",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-class-static-block@7.14.5",
+    "name": "@babel/plugin-syntax-class-static-block",
+    "escapedName": "@babel%2fplugin-syntax-class-static-block",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-class-static-block",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.14.5"
+  },
   "description": "Allow parsing of class static blocks",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-class-static-block"
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "exports": {
+    ".": "./lib/index.js"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-class-static-block",
+  "keywords": [
+    "babel-plugin"
+  ],
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-syntax-class-static-block",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": "./lib/index.js"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-class-static-block"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.14.5"
-  },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-dynamic-import/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-dynamic-import/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-dynamic-import/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-dynamic-import@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-dynamic-import@7.8.3",
+  "_id": "@babel/plugin-syntax-dynamic-import@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+  "_location": "/@babel/plugin-syntax-dynamic-import",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-dynamic-import@7.8.3",
+    "name": "@babel/plugin-syntax-dynamic-import",
+    "escapedName": "@babel%2fplugin-syntax-dynamic-import",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-dynamic-import",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of import()",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-dynamic-import",
-  "version": "7.8.3",
-  "description": "Allow parsing of import()",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-export-namespace-from/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-export-namespace-from/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-export-namespace-from/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,58 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-export-namespace-from@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-export-namespace-from@7.8.3",
+  "_id": "@babel/plugin-syntax-export-namespace-from@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+  "_location": "/@babel/plugin-syntax-export-namespace-from",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-export-namespace-from@7.8.3",
+    "name": "@babel/plugin-syntax-export-namespace-from",
+    "escapedName": "@babel%2fplugin-syntax-export-namespace-from",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-export-namespace-from",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.3"
+  },
+  "description": "Allow parsing of export namespace from",
+  "devDependencies": {
+    "@babel/core": "^7.8.3"
+  },
+  "gitHead": "a7620bd266ae1345975767bbc7abf09034437017",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-export-namespace-from",
-  "version": "7.8.3",
-  "description": "Allow parsing of export namespace from",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.3"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.3"
-  },
-  "gitHead": "a7620bd266ae1345975767bbc7abf09034437017"
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-json-strings/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-json-strings/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-json-strings/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-json-strings@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-json-strings@7.8.3",
+  "_id": "@babel/plugin-syntax-json-strings@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+  "_location": "/@babel/plugin-syntax-json-strings",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-json-strings@7.8.3",
+    "name": "@babel/plugin-syntax-json-strings",
+    "escapedName": "@babel%2fplugin-syntax-json-strings",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-json-strings",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of the U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-json-strings",
-  "version": "7.8.3",
-  "description": "Allow parsing of the U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-logical-assignment-operators/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-logical-assignment-operators/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-logical-assignment-operators/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,63 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-logical-assignment-operators@7.10.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-logical-assignment-operators@7.10.4",
+  "_id": "@babel/plugin-syntax-logical-assignment-operators@7.10.4",
+  "_inBundle": false,
+  "_integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+  "_location": "/@babel/plugin-syntax-logical-assignment-operators",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-logical-assignment-operators@7.10.4",
+    "name": "@babel/plugin-syntax-logical-assignment-operators",
+    "escapedName": "@babel%2fplugin-syntax-logical-assignment-operators",
+    "scope": "@babel",
+    "rawSpec": "7.10.4",
+    "saveSpec": null,
+    "fetchSpec": "7.10.4"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-logical-assignment-operators",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+  "_spec": "7.10.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.10.4"
+  },
+  "description": "Allow parsing of the logical assignment operators",
+  "devDependencies": {
+    "@babel/core": "^7.10.4"
+  },
+  "gitHead": "7fd40d86a0d03ff0e9c3ea16b29689945433d4df",
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-logical-assignment-operators",
-  "version": "7.10.4",
-  "description": "Allow parsing of the logical assignment operators",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-logical-assignment-operators"
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
   },
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.10.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-logical-assignment-operators"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.10.4"
-  },
-  "gitHead": "7fd40d86a0d03ff0e9c3ea16b29689945433d4df"
+  "version": "7.10.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3",
+  "_id": "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+  "_location": "/@babel/plugin-syntax-nullish-coalescing-operator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3",
+    "name": "@babel/plugin-syntax-nullish-coalescing-operator",
+    "escapedName": "@babel%2fplugin-syntax-nullish-coalescing-operator",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-nullish-coalescing-operator",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of the nullish-coalescing operator",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-nullish-coalescing-operator",
-  "version": "7.8.3",
-  "description": "Allow parsing of the nullish-coalescing operator",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-numeric-separator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-numeric-separator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-numeric-separator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,63 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-numeric-separator@7.10.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-numeric-separator@7.10.4",
+  "_id": "@babel/plugin-syntax-numeric-separator@7.10.4",
+  "_inBundle": false,
+  "_integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+  "_location": "/@babel/plugin-syntax-numeric-separator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-numeric-separator@7.10.4",
+    "name": "@babel/plugin-syntax-numeric-separator",
+    "escapedName": "@babel%2fplugin-syntax-numeric-separator",
+    "scope": "@babel",
+    "rawSpec": "7.10.4",
+    "saveSpec": null,
+    "fetchSpec": "7.10.4"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-numeric-separator",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+  "_spec": "7.10.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.10.4"
+  },
+  "description": "Allow parsing of Decimal, Binary, Hex and Octal literals that contain a Numeric Literal Separator",
+  "devDependencies": {
+    "@babel/core": "^7.10.4"
+  },
+  "gitHead": "7fd40d86a0d03ff0e9c3ea16b29689945433d4df",
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-numeric-separator",
-  "version": "7.10.4",
-  "description": "Allow parsing of Decimal, Binary, Hex and Octal literals that contain a Numeric Literal Separator",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-numeric-separator"
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
   },
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.10.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-numeric-separator"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.10.4"
-  },
-  "gitHead": "7fd40d86a0d03ff0e9c3ea16b29689945433d4df"
+  "version": "7.10.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-object-rest-spread/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-object-rest-spread/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-object-rest-spread/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-object-rest-spread@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-object-rest-spread@7.8.3",
+  "_id": "@babel/plugin-syntax-object-rest-spread@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+  "_location": "/@babel/plugin-syntax-object-rest-spread",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-object-rest-spread@7.8.3",
+    "name": "@babel/plugin-syntax-object-rest-spread",
+    "escapedName": "@babel%2fplugin-syntax-object-rest-spread",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-object-rest-spread",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of object rest/spread",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-object-rest-spread",
-  "version": "7.8.3",
-  "description": "Allow parsing of object rest/spread",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-optional-catch-binding@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-optional-catch-binding@7.8.3",
+  "_id": "@babel/plugin-syntax-optional-catch-binding@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+  "_location": "/@babel/plugin-syntax-optional-catch-binding",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-optional-catch-binding@7.8.3",
+    "name": "@babel/plugin-syntax-optional-catch-binding",
+    "escapedName": "@babel%2fplugin-syntax-optional-catch-binding",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-optional-catch-binding",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of optional catch bindings",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-optional-catch-binding",
-  "version": "7.8.3",
-  "description": "Allow parsing of optional catch bindings",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-optional-chaining/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-optional-chaining/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-optional-chaining/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,57 @@
 {
+  "_args": [
+    [
+      "@babel/plugin-syntax-optional-chaining@7.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-optional-chaining@7.8.3",
+  "_id": "@babel/plugin-syntax-optional-chaining@7.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+  "_location": "/@babel/plugin-syntax-optional-chaining",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-optional-chaining@7.8.3",
+    "name": "@babel/plugin-syntax-optional-chaining",
+    "escapedName": "@babel%2fplugin-syntax-optional-chaining",
+    "scope": "@babel",
+    "rawSpec": "7.8.3",
+    "saveSpec": null,
+    "fetchSpec": "7.8.3"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-optional-chaining",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+  "_spec": "7.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.8.0"
+  },
+  "description": "Allow parsing of optional properties",
+  "devDependencies": {
+    "@babel/core": "^7.8.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "@babel/plugin-syntax-optional-chaining",
-  "version": "7.8.3",
-  "description": "Allow parsing of optional properties",
-  "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining",
-  "license": "MIT",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.8.0"
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.8.0"
-  }
+  "version": "7.8.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-private-property-in-object/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-private-property-in-object/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-private-property-in-object/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,69 @@
 {
-  "name": "@babel/plugin-syntax-private-property-in-object",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/plugin-syntax-private-property-in-object@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-private-property-in-object@7.14.5",
+  "_id": "@babel/plugin-syntax-private-property-in-object@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+  "_location": "/@babel/plugin-syntax-private-property-in-object",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-private-property-in-object@7.14.5",
+    "name": "@babel/plugin-syntax-private-property-in-object",
+    "escapedName": "@babel%2fplugin-syntax-private-property-in-object",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-proposal-private-property-in-object",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.14.5"
+  },
   "description": "Allow parsing of '#foo in obj' brand checks",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-private-property-in-object"
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "exports": {
+    ".": "./lib/index.js"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-private-property-in-object",
+  "keywords": [
+    "babel-plugin"
+  ],
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-syntax-private-property-in-object",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": "./lib/index.js"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-private-property-in-object"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.14.5"
-  },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-syntax-top-level-await/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-syntax-top-level-await/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-syntax-top-level-await/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-syntax-top-level-await",
-  "version": "7.14.5",
-  "description": "Allow parsing of top-level await in modules",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-syntax-top-level-await"
+  "_args": [
+    [
+      "@babel/plugin-syntax-top-level-await@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-syntax-top-level-await@7.14.5",
+  "_id": "@babel/plugin-syntax-top-level-await@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+  "_location": "/@babel/plugin-syntax-top-level-await",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-syntax-top-level-await@7.14.5",
+    "name": "@babel/plugin-syntax-top-level-await",
+    "escapedName": "@babel%2fplugin-syntax-top-level-await",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-top-level-await",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Allow parsing of top-level await in modules",
   "devDependencies": {
     "@babel/core": "7.14.5"
@@ -29,4 +47,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-top-level-await",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-syntax-top-level-await",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-top-level-await"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-arrow-functions/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-arrow-functions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-arrow-functions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-arrow-functions",
-  "version": "7.14.5",
-  "description": "Compile ES2015 arrow functions to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-arrow-functions"
+  "_args": [
+    [
+      "@babel/plugin-transform-arrow-functions@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-arrow-functions@7.14.5",
+  "_id": "@babel/plugin-transform-arrow-functions@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==",
+  "_location": "/@babel/plugin-transform-arrow-functions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-arrow-functions@7.14.5",
+    "name": "@babel/plugin-transform-arrow-functions",
+    "escapedName": "@babel%2fplugin-transform-arrow-functions",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-arrow-functions",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 arrow functions to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-arrow-functions",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-arrow-functions",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-arrow-functions"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-async-to-generator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-async-to-generator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-async-to-generator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "@babel/plugin-transform-async-to-generator",
-  "version": "7.14.5",
-  "description": "Turn async functions into ES2015 generators",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-async-to-generator"
+  "_args": [
+    [
+      "@babel/plugin-transform-async-to-generator@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-async-to-generator@7.14.5",
+  "_id": "@babel/plugin-transform-async-to-generator@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==",
+  "_location": "/@babel/plugin-transform-async-to-generator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-async-to-generator@7.14.5",
+    "name": "@babel/plugin-transform-async-to-generator",
+    "escapedName": "@babel%2fplugin-transform-async-to-generator",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-async-to-generator",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-module-imports": "^7.14.5",
@@ -22,7 +43,5 @@
     "@babel/helper-remap-async-to-generator": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Turn async functions into ES2015 generators",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -32,4 +51,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-async-to-generator",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-async-to-generator",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-async-to-generator"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-block-scoped-functions/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-block-scoped-functions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-block-scoped-functions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-block-scoped-functions",
-  "version": "7.14.5",
-  "description": "Babel plugin to ensure function declarations at the block level are block scoped",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-block-scoped-functions"
+  "_args": [
+    [
+      "@babel/plugin-transform-block-scoped-functions@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-block-scoped-functions@7.14.5",
+  "_id": "@babel/plugin-transform-block-scoped-functions@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==",
+  "_location": "/@babel/plugin-transform-block-scoped-functions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-block-scoped-functions@7.14.5",
+    "name": "@babel/plugin-transform-block-scoped-functions",
+    "escapedName": "@babel%2fplugin-transform-block-scoped-functions",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoped-functions",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Babel plugin to ensure function declarations at the block level are block scoped",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoped-functions",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-block-scoped-functions",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-block-scoped-functions"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-block-scoping/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-block-scoping/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-block-scoping/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-block-scoping",
-  "version": "7.15.3",
-  "description": "Compile ES2015 block scoping (const and let) to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-block-scoping"
+  "_args": [
+    [
+      "@babel/plugin-transform-block-scoping@7.15.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-block-scoping@7.15.3",
+  "_id": "@babel/plugin-transform-block-scoping@7.15.3",
+  "_inBundle": false,
+  "_integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==",
+  "_location": "/@babel/plugin-transform-block-scoping",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-block-scoping@7.15.3",
+    "name": "@babel/plugin-transform-block-scoping",
+    "escapedName": "@babel%2fplugin-transform-block-scoping",
+    "scope": "@babel",
+    "rawSpec": "7.15.3",
+    "saveSpec": null,
+    "fetchSpec": "7.15.3"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoping",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz",
+  "_spec": "7.15.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 block scoping (const and let) to ES5",
   "devDependencies": {
     "@babel/core": "7.15.0",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoping",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-block-scoping",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-block-scoping"
+  },
+  "version": "7.15.3"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,59 @@
 {
-  "name": "@babel/helper-annotate-as-pure",
-  "version": "7.15.4",
+  "_args": [
+    [
+      "@babel/helper-annotate-as-pure@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/helper-annotate-as-pure@7.15.4",
+  "_id": "@babel/helper-annotate-as-pure@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==",
+  "_location": "/@babel/plugin-transform-classes/@babel/helper-annotate-as-pure",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/helper-annotate-as-pure@7.15.4",
+    "name": "@babel/helper-annotate-as-pure",
+    "escapedName": "@babel%2fhelper-annotate-as-pure",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-classes"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/types": "^7.15.4"
+  },
   "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-annotate-as-pure"
+  "engines": {
+    "node": ">=6.9.0"
   },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-annotate-as-pure",
   "publishConfig": {
     "access": "public"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/types": "^7.15.4"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-classes/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-classes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-classes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,42 @@
 {
-  "name": "@babel/plugin-transform-classes",
-  "version": "7.15.4",
-  "description": "Compile ES2015 classes to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-classes"
+  "_args": [
+    [
+      "@babel/plugin-transform-classes@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-classes@7.15.4",
+  "_id": "@babel/plugin-transform-classes@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==",
+  "_location": "/@babel/plugin-transform-classes",
+  "_phantomChildren": {
+    "@babel/types": "7.15.6"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-classes",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-classes@7.15.4",
+    "name": "@babel/plugin-transform-classes",
+    "escapedName": "@babel%2fplugin-transform-classes",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-annotate-as-pure": "^7.15.4",
@@ -23,10 +48,5 @@
     "globals": "^11.1.0"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 classes to ES5",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -37,4 +57,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-classes",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-classes",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-classes"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-computed-properties/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-computed-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-computed-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-computed-properties",
-  "version": "7.14.5",
-  "description": "Compile ES2015 computed properties to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-computed-properties"
+  "_args": [
+    [
+      "@babel/plugin-transform-computed-properties@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-computed-properties@7.14.5",
+  "_id": "@babel/plugin-transform-computed-properties@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==",
+  "_location": "/@babel/plugin-transform-computed-properties",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-computed-properties@7.14.5",
+    "name": "@babel/plugin-transform-computed-properties",
+    "escapedName": "@babel%2fplugin-transform-computed-properties",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-computed-properties",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 computed properties to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-computed-properties",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-computed-properties",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-computed-properties"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-destructuring/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-destructuring/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-destructuring/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-destructuring",
-  "version": "7.14.7",
-  "description": "Compile ES2015 destructuring to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-destructuring"
+  "_args": [
+    [
+      "@babel/plugin-transform-destructuring@7.14.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-destructuring@7.14.7",
+  "_id": "@babel/plugin-transform-destructuring@7.14.7",
+  "_inBundle": false,
+  "_integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==",
+  "_location": "/@babel/plugin-transform-destructuring",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-destructuring@7.14.7",
+    "name": "@babel/plugin-transform-destructuring",
+    "escapedName": "@babel%2fplugin-transform-destructuring",
+    "scope": "@babel",
+    "rawSpec": "7.14.7",
+    "saveSpec": null,
+    "fetchSpec": "7.14.7"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-destructuring",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz",
+  "_spec": "7.14.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 destructuring to ES5",
   "devDependencies": {
     "@babel/core": "7.14.6",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-destructuring",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-destructuring",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-destructuring"
+  },
+  "version": "7.14.7"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-dotall-regex/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-dotall-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-dotall-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,54 @@
 {
-  "name": "@babel/plugin-transform-dotall-regex",
-  "version": "7.14.5",
+  "_args": [
+    [
+      "@babel/plugin-transform-dotall-regex@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-dotall-regex@7.14.5",
+  "_id": "@babel/plugin-transform-dotall-regex@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==",
+  "_location": "/@babel/plugin-transform-dotall-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-dotall-regex@7.14.5",
+    "name": "@babel/plugin-transform-dotall-regex",
+    "escapedName": "@babel%2fplugin-transform-dotall-regex",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@babel/preset-env",
+    "/@babel/preset-modules"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+    "@babel/helper-plugin-utils": "^7.14.5"
+  },
   "description": "Compile regular expressions using the `s` (`dotAll`) flag to ES5.",
+  "devDependencies": {
+    "@babel/core": "7.14.5",
+    "@babel/helper-plugin-test-runner": "7.14.5"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
   "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-dotall-regex",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "./lib/index.js",
   "keywords": [
     "babel-plugin",
@@ -16,24 +58,18 @@
     "dotall"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-dotall-regex"
-  },
-  "bugs": "https://github.com/babel/babel/issues",
-  "dependencies": {
-    "@babel/helper-create-regexp-features-plugin": "^7.14.5",
-    "@babel/helper-plugin-utils": "^7.14.5"
-  },
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-dotall-regex",
   "peerDependencies": {
     "@babel/core": "^7.0.0-0"
   },
-  "devDependencies": {
-    "@babel/core": "7.14.5",
-    "@babel/helper-plugin-test-runner": "7.14.5"
+  "publishConfig": {
+    "access": "public"
   },
-  "engines": {
-    "node": ">=6.9.0"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-dotall-regex"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-duplicate-keys/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-duplicate-keys/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-duplicate-keys/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-duplicate-keys",
-  "version": "7.14.5",
-  "description": "Compile objects with duplicate keys to valid strict ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-duplicate-keys"
+  "_args": [
+    [
+      "@babel/plugin-transform-duplicate-keys@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-duplicate-keys@7.14.5",
+  "_id": "@babel/plugin-transform-duplicate-keys@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==",
+  "_location": "/@babel/plugin-transform-duplicate-keys",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-duplicate-keys@7.14.5",
+    "name": "@babel/plugin-transform-duplicate-keys",
+    "escapedName": "@babel%2fplugin-transform-duplicate-keys",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-duplicate-keys",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile objects with duplicate keys to valid strict ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-duplicate-keys",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-duplicate-keys",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-duplicate-keys"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-exponentiation-operator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-exponentiation-operator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-exponentiation-operator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-transform-exponentiation-operator",
-  "version": "7.14.5",
-  "description": "Compile exponentiation operator to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-exponentiation-operator"
+  "_args": [
+    [
+      "@babel/plugin-transform-exponentiation-operator@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-exponentiation-operator@7.14.5",
+  "_id": "@babel/plugin-transform-exponentiation-operator@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==",
+  "_location": "/@babel/plugin-transform-exponentiation-operator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-exponentiation-operator@7.14.5",
+    "name": "@babel/plugin-transform-exponentiation-operator",
+    "escapedName": "@babel%2fplugin-transform-exponentiation-operator",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile exponentiation operator to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-exponentiation-operator",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-exponentiation-operator"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-for-of/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-for-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-for-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-for-of",
-  "version": "7.15.4",
-  "description": "Compile ES2015 for...of to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-for-of"
+  "_args": [
+    [
+      "@babel/plugin-transform-for-of@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-for-of@7.15.4",
+  "_id": "@babel/plugin-transform-for-of@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==",
+  "_location": "/@babel/plugin-transform-for-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-for-of@7.15.4",
+    "name": "@babel/plugin-transform-for-of",
+    "escapedName": "@babel%2fplugin-transform-for-of",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-for-of",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 for...of to ES5",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-for-of",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-for-of",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-for-of"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-function-name/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-function-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-function-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-transform-function-name",
-  "version": "7.14.5",
-  "description": "Apply ES2015 function.name semantics to all functions",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-function-name"
+  "_args": [
+    [
+      "@babel/plugin-transform-function-name@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-function-name@7.14.5",
+  "_id": "@babel/plugin-transform-function-name@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==",
+  "_location": "/@babel/plugin-transform-function-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-function-name@7.14.5",
+    "name": "@babel/plugin-transform-function-name",
+    "escapedName": "@babel%2fplugin-transform-function-name",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-function-name",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-function-name": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Apply ES2015 function.name semantics to all functions",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-function-name",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-function-name",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-function-name"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-literals/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-literals/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-literals/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-literals",
-  "version": "7.14.5",
-  "description": "Compile ES2015 unicode string and number literals to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-literals"
+  "_args": [
+    [
+      "@babel/plugin-transform-literals@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-literals@7.14.5",
+  "_id": "@babel/plugin-transform-literals@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==",
+  "_location": "/@babel/plugin-transform-literals",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-literals@7.14.5",
+    "name": "@babel/plugin-transform-literals",
+    "escapedName": "@babel%2fplugin-transform-literals",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-literals",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 unicode string and number literals to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-literals",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-literals",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-literals"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-member-expression-literals/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-member-expression-literals/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-member-expression-literals/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-member-expression-literals",
-  "version": "7.14.5",
-  "description": "Ensure that reserved words are quoted in property accesses",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-member-expression-literals"
+  "_args": [
+    [
+      "@babel/plugin-transform-member-expression-literals@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-member-expression-literals@7.14.5",
+  "_id": "@babel/plugin-transform-member-expression-literals@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==",
+  "_location": "/@babel/plugin-transform-member-expression-literals",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-member-expression-literals@7.14.5",
+    "name": "@babel/plugin-transform-member-expression-literals",
+    "escapedName": "@babel%2fplugin-transform-member-expression-literals",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-member-expression-literals",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Ensure that reserved words are quoted in property accesses",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-member-expression-literals",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-member-expression-literals",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-member-expression-literals"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-modules-amd/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-modules-amd/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-modules-amd/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,40 @@
 {
-  "name": "@babel/plugin-transform-modules-amd",
-  "version": "7.14.5",
-  "description": "This plugin transforms ES2015 modules to AMD",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-modules-amd"
+  "_args": [
+    [
+      "@babel/plugin-transform-modules-amd@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-modules-amd@7.14.5",
+  "_id": "@babel/plugin-transform-modules-amd@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==",
+  "_location": "/@babel/plugin-transform-modules-amd",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-modules-amd@7.14.5",
+    "name": "@babel/plugin-transform-modules-amd",
+    "escapedName": "@babel%2fplugin-transform-modules-amd",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-amd",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-module-transforms": "^7.14.5",
@@ -19,10 +42,5 @@
     "babel-plugin-dynamic-import-node": "^2.3.3"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms ES2015 modules to AMD",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -33,4 +51,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-amd",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-modules-amd",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-amd"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-modules-commonjs/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-modules-commonjs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-modules-commonjs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,40 @@
 {
-  "name": "@babel/plugin-transform-modules-commonjs",
-  "version": "7.15.4",
-  "description": "This plugin transforms ES2015 modules to CommonJS",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-modules-commonjs"
+  "_args": [
+    [
+      "@babel/plugin-transform-modules-commonjs@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-modules-commonjs@7.15.4",
+  "_id": "@babel/plugin-transform-modules-commonjs@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==",
+  "_location": "/@babel/plugin-transform-modules-commonjs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-modules-commonjs@7.15.4",
+    "name": "@babel/plugin-transform-modules-commonjs",
+    "escapedName": "@babel%2fplugin-transform-modules-commonjs",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-module-transforms": "^7.15.4",
@@ -19,10 +43,5 @@
     "babel-plugin-dynamic-import-node": "^2.3.3"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms ES2015 modules to CommonJS",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -32,8 +51,25 @@
     "@babel/plugin-syntax-object-rest-spread": "^7.8.3"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-commonjs",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-commonjs",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-modules-commonjs",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-commonjs"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-modules-systemjs/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-modules-systemjs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-modules-systemjs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,40 @@
 {
-  "name": "@babel/plugin-transform-modules-systemjs",
-  "version": "7.15.4",
-  "description": "This plugin transforms ES2015 modules to SystemJS",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-modules-systemjs"
+  "_args": [
+    [
+      "@babel/plugin-transform-modules-systemjs@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-modules-systemjs@7.15.4",
+  "_id": "@babel/plugin-transform-modules-systemjs@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==",
+  "_location": "/@babel/plugin-transform-modules-systemjs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-modules-systemjs@7.15.4",
+    "name": "@babel/plugin-transform-modules-systemjs",
+    "escapedName": "@babel%2fplugin-transform-modules-systemjs",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-hoist-variables": "^7.15.4",
@@ -20,10 +44,5 @@
     "babel-plugin-dynamic-import-node": "^2.3.3"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms ES2015 modules to SystemJS",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -31,8 +50,25 @@
     "@babel/plugin-syntax-dynamic-import": "^7.8.3"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-systemjs",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-systemjs",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-modules-systemjs",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-systemjs"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-modules-umd/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-modules-umd/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-modules-umd/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-transform-modules-umd",
-  "version": "7.14.5",
-  "description": "This plugin transforms ES2015 modules to UMD",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-modules-umd"
+  "_args": [
+    [
+      "@babel/plugin-transform-modules-umd@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-modules-umd@7.14.5",
+  "_id": "@babel/plugin-transform-modules-umd@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==",
+  "_location": "/@babel/plugin-transform-modules-umd",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-modules-umd@7.14.5",
+    "name": "@babel/plugin-transform-modules-umd",
+    "escapedName": "@babel%2fplugin-transform-modules-umd",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-umd",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-module-transforms": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This plugin transforms ES2015 modules to UMD",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -32,4 +50,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-umd",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-modules-umd",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-umd"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,44 @@
 {
-  "name": "@babel/plugin-transform-named-capturing-groups-regex",
-  "version": "7.14.9",
-  "description": "Compile regular expressions using named groups to ES5.",
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-named-capturing-groups-regex",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/plugin-transform-named-capturing-groups-regex@7.14.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-named-capturing-groups-regex@7.14.9",
+  "_id": "@babel/plugin-transform-named-capturing-groups-regex@7.14.9",
+  "_inBundle": false,
+  "_integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==",
+  "_location": "/@babel/plugin-transform-named-capturing-groups-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-named-capturing-groups-regex@7.14.9",
+    "name": "@babel/plugin-transform-named-capturing-groups-regex",
+    "escapedName": "@babel%2fplugin-transform-named-capturing-groups-regex",
+    "scope": "@babel",
+    "rawSpec": "7.14.9",
+    "saveSpec": null,
+    "fetchSpec": "7.14.9"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin",
-    "regex",
-    "regexp",
-    "regular expressions"
+  "_requiredBy": [
+    "/@babel/preset-env"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-named-capturing-groups-regex"
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz",
+  "_spec": "7.14.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "bugs": "https://github.com/babel/babel/issues",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-create-regexp-features-plugin": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0"
-  },
+  "description": "Compile regular expressions using named groups to ES5.",
   "devDependencies": {
     "@babel/core": "7.14.8",
@@ -35,4 +49,25 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-named-capturing-groups-regex",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-named-capturing-groups-regex",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-named-capturing-groups-regex"
+  },
+  "version": "7.14.9"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-new-target/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-new-target/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-new-target/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-new-target",
-  "version": "7.14.5",
-  "description": "Transforms new.target meta property",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-new-target"
+  "_args": [
+    [
+      "@babel/plugin-transform-new-target@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-new-target@7.14.5",
+  "_id": "@babel/plugin-transform-new-target@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==",
+  "_location": "/@babel/plugin-transform-new-target",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-new-target@7.14.5",
+    "name": "@babel/plugin-transform-new-target",
+    "escapedName": "@babel%2fplugin-transform-new-target",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-new-target",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Transforms new.target meta property",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -32,4 +50,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-new-target",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-new-target",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-new-target"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-object-super/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-object-super/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-object-super/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "@babel/plugin-transform-object-super",
-  "version": "7.14.5",
-  "description": "Compile ES2015 object super to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-object-super"
+  "_args": [
+    [
+      "@babel/plugin-transform-object-super@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-object-super@7.14.5",
+  "_id": "@babel/plugin-transform-object-super@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==",
+  "_location": "/@babel/plugin-transform-object-super",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-object-super@7.14.5",
+    "name": "@babel/plugin-transform-object-super",
+    "escapedName": "@babel%2fplugin-transform-object-super",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-object-super",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/helper-replace-supers": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 object super to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -31,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-object-super",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-object-super",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-object-super"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-parameters/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-parameters/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-parameters/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,45 @@
 {
-  "name": "@babel/plugin-transform-parameters",
-  "version": "7.15.4",
-  "description": "Compile ES2015 default and rest parameters to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-parameters"
+  "_args": [
+    [
+      "@babel/plugin-transform-parameters@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-parameters@7.15.4",
+  "_id": "@babel/plugin-transform-parameters@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==",
+  "_location": "/@babel/plugin-transform-parameters",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-parameters@7.15.4",
+    "name": "@babel/plugin-transform-parameters",
+    "escapedName": "@babel%2fplugin-transform-parameters",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-parameters",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/plugin-proposal-object-rest-spread",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 default and rest parameters to ES5",
   "devDependencies": {
     "@babel/core": "7.15.4",
@@ -30,4 +49,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-parameters",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-parameters",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-parameters"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-property-literals/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-property-literals/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-property-literals/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-property-literals",
-  "version": "7.14.5",
-  "description": "Ensure that reserved words are quoted in object property keys",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-property-literals"
+  "_args": [
+    [
+      "@babel/plugin-transform-property-literals@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-property-literals@7.14.5",
+  "_id": "@babel/plugin-transform-property-literals@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==",
+  "_location": "/@babel/plugin-transform-property-literals",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-property-literals@7.14.5",
+    "name": "@babel/plugin-transform-property-literals",
+    "escapedName": "@babel%2fplugin-transform-property-literals",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-property-literals",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Ensure that reserved words are quoted in object property keys",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-property-literals",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-property-literals",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-property-literals"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-regenerator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-regenerator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-regenerator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,44 @@
 {
-  "name": "@babel/plugin-transform-regenerator",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "description": "Explode async and generator functions into a state machine.",
-  "version": "7.14.5",
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-regenerator",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-regenerator"
+  "_args": [
+    [
+      "@babel/plugin-transform-regenerator@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-regenerator@7.14.5",
+  "_id": "@babel/plugin-transform-regenerator@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==",
+  "_location": "/@babel/plugin-transform-regenerator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-regenerator@7.14.5",
+    "name": "@babel/plugin-transform-regenerator",
+    "escapedName": "@babel%2fplugin-transform-regenerator",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "regenerator-transform": "^0.14.2"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Explode async and generator functions into a state machine.",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -27,4 +47,20 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-regenerator",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-regenerator",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-regenerator"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-reserved-words/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-reserved-words/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-reserved-words/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-reserved-words",
-  "version": "7.14.5",
-  "description": "Ensure that no reserved words are used.",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-reserved-words"
+  "_args": [
+    [
+      "@babel/plugin-transform-reserved-words@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-reserved-words@7.14.5",
+  "_id": "@babel/plugin-transform-reserved-words@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==",
+  "_location": "/@babel/plugin-transform-reserved-words",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-reserved-words@7.14.5",
+    "name": "@babel/plugin-transform-reserved-words",
+    "escapedName": "@babel%2fplugin-transform-reserved-words",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-reserved-words",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Ensure that no reserved words are used.",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-reserved-words",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-reserved-words",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-reserved-words"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-runtime/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/@babel/plugin-transform-runtime/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-runtime"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-runtime/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-runtime/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-runtime/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,43 @@
 {
-  "name": "@babel/plugin-transform-runtime",
-  "version": "7.14.5",
-  "description": "Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-runtime"
+  "_args": [
+    [
+      "@babel/plugin-transform-runtime@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-runtime@7.14.5",
+  "_id": "@babel/plugin-transform-runtime@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==",
+  "_location": "/@babel/plugin-transform-runtime",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-runtime@7.14.5",
+    "name": "@babel/plugin-transform-runtime",
+    "escapedName": "@babel%2fplugin-transform-runtime",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
   "browser": {
     "./lib/get-runtime-path/index.js": "./lib/get-runtime-path/browser.js",
     "./src/get-runtime-path/index.ts": "./src/get-runtime-path/browser.ts"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
   "dependencies": {
@@ -28,7 +49,5 @@
     "semver": "^6.3.0"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -43,8 +62,25 @@
     "make-dir": "^2.1.0"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-runtime",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-runtime",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-runtime",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-runtime"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-shorthand-properties/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-shorthand-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-shorthand-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "@babel/plugin-transform-shorthand-properties",
-  "version": "7.14.5",
-  "description": "Compile ES2015 shorthand properties to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-shorthand-properties"
+  "_args": [
+    [
+      "@babel/plugin-transform-shorthand-properties@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-shorthand-properties@7.14.5",
+  "_id": "@babel/plugin-transform-shorthand-properties@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==",
+  "_location": "/@babel/plugin-transform-shorthand-properties",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-shorthand-properties@7.14.5",
+    "name": "@babel/plugin-transform-shorthand-properties",
+    "escapedName": "@babel%2fplugin-transform-shorthand-properties",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-shorthand-properties",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 shorthand properties to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -30,4 +48,22 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-shorthand-properties",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-shorthand-properties",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-shorthand-properties"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-spread/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-spread/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-spread/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,70 @@
 {
-  "name": "@babel/plugin-transform-spread",
-  "version": "7.15.8",
-  "description": "Compile ES2015 spread to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-spread"
+  "_args": [
+    [
+      "@babel/plugin-transform-spread@7.15.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-spread@7.15.8",
+  "_id": "@babel/plugin-transform-spread@7.15.8",
+  "_inBundle": false,
+  "_integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==",
+  "_location": "/@babel/plugin-transform-spread",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-spread@7.15.8",
+    "name": "@babel/plugin-transform-spread",
+    "escapedName": "@babel%2fplugin-transform-spread",
+    "scope": "@babel",
+    "rawSpec": "7.15.8",
+    "saveSpec": null,
+    "fetchSpec": "7.15.8"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz",
+  "_spec": "7.15.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5",
     "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 spread to ES5",
   "devDependencies": {
     "@babel/core": "7.15.8",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-spread",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-spread",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-spread",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-spread"
+  },
+  "version": "7.15.8"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-sticky-regex/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-sticky-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-sticky-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,69 @@
 {
-  "name": "@babel/plugin-transform-sticky-regex",
-  "version": "7.14.5",
-  "description": "Compile ES2015 sticky regex to an ES5 RegExp constructor",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-sticky-regex"
+  "_args": [
+    [
+      "@babel/plugin-transform-sticky-regex@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-sticky-regex@7.14.5",
+  "_id": "@babel/plugin-transform-sticky-regex@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==",
+  "_location": "/@babel/plugin-transform-sticky-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-sticky-regex@7.14.5",
+    "name": "@babel/plugin-transform-sticky-regex",
+    "escapedName": "@babel%2fplugin-transform-sticky-regex",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 sticky regex to an ES5 RegExp constructor",
   "devDependencies": {
     "@babel/core": "7.14.5",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-sticky-regex",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-sticky-regex",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-sticky-regex",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-sticky-regex"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-template-literals/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-template-literals/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-template-literals/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,69 @@
 {
-  "name": "@babel/plugin-transform-template-literals",
-  "version": "7.14.5",
-  "description": "Compile ES2015 template literals to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-template-literals"
+  "_args": [
+    [
+      "@babel/plugin-transform-template-literals@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-template-literals@7.14.5",
+  "_id": "@babel/plugin-transform-template-literals@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==",
+  "_location": "/@babel/plugin-transform-template-literals",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-template-literals@7.14.5",
+    "name": "@babel/plugin-transform-template-literals",
+    "escapedName": "@babel%2fplugin-transform-template-literals",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "keywords": [
-    "babel-plugin"
-  ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 template literals to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-template-literals",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-template-literals",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-template-literals",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-template-literals"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-typeof-symbol/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-typeof-symbol/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-typeof-symbol/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,44 @@
 {
-  "name": "@babel/plugin-transform-typeof-symbol",
-  "version": "7.14.5",
-  "description": "This transformer wraps all typeof expressions with a method that replicates native behaviour. (ie. returning “symbol” for symbols)",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-typeof-symbol"
+  "_args": [
+    [
+      "@babel/plugin-transform-typeof-symbol@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-typeof-symbol@7.14.5",
+  "_id": "@babel/plugin-transform-typeof-symbol@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==",
+  "_location": "/@babel/plugin-transform-typeof-symbol",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-typeof-symbol@7.14.5",
+    "name": "@babel/plugin-transform-typeof-symbol",
+    "escapedName": "@babel%2fplugin-transform-typeof-symbol",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "This transformer wraps all typeof expressions with a method that replicates native behaviour. (ie. returning “symbol” for symbols)",
   "devDependencies": {
     "@babel/core": "7.14.5",
@@ -29,8 +48,25 @@
     "@babel/runtime-corejs3": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-typeof-symbol",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-typeof-symbol",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-typeof-symbol",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-typeof-symbol"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-unicode-escapes/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-unicode-escapes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-unicode-escapes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,69 @@
 {
-  "name": "@babel/plugin-transform-unicode-escapes",
-  "version": "7.14.5",
-  "description": "Compile ES2015 Unicode escapes to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-unicode-escapes"
+  "_args": [
+    [
+      "@babel/plugin-transform-unicode-escapes@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-unicode-escapes@7.14.5",
+  "_id": "@babel/plugin-transform-unicode-escapes@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==",
+  "_location": "/@babel/plugin-transform-unicode-escapes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-unicode-escapes@7.14.5",
+    "name": "@babel/plugin-transform-unicode-escapes",
+    "escapedName": "@babel%2fplugin-transform-unicode-escapes",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 Unicode escapes to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-escapes",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-escapes",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-unicode-escapes",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-escapes"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/plugin-transform-unicode-regex/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/plugin-transform-unicode-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/plugin-transform-unicode-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,70 @@
 {
-  "name": "@babel/plugin-transform-unicode-regex",
-  "version": "7.14.5",
-  "description": "Compile ES2015 Unicode regex to ES5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-unicode-regex"
+  "_args": [
+    [
+      "@babel/plugin-transform-unicode-regex@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/plugin-transform-unicode-regex@7.14.5",
+  "_id": "@babel/plugin-transform-unicode-regex@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==",
+  "_location": "/@babel/plugin-transform-unicode-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/plugin-transform-unicode-regex@7.14.5",
+    "name": "@babel/plugin-transform-unicode-regex",
+    "escapedName": "@babel%2fplugin-transform-unicode-regex",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "@babel/helper-create-regexp-features-plugin": "^7.14.5",
     "@babel/helper-plugin-utils": "^7.14.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "Compile ES2015 Unicode regex to ES5",
   "devDependencies": {
     "@babel/core": "7.14.5",
     "@babel/helper-plugin-test-runner": "7.14.5"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-regex",
   "engines": {
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-regex",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-unicode-regex",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-regex"
+  },
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-env/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@babel/preset-env/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/preset-env/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-env/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/@babel/preset-env/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/@babel/preset-env/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/preset-env/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-env/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,40 @@
 {
-  "name": "@babel/preset-env",
-  "version": "7.14.8",
-  "description": "A Babel preset for each environment.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-preset-env",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/preset-env@7.14.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/preset-env@7.14.8",
+  "_id": "@babel/preset-env@7.14.8",
+  "_inBundle": false,
+  "_integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==",
+  "_location": "/@babel/preset-env",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/preset-env@7.14.8",
+    "name": "@babel/preset-env",
+    "escapedName": "@babel%2fpreset-env",
+    "scope": "@babel",
+    "rawSpec": "7.14.8",
+    "saveSpec": null,
+    "fetchSpec": "7.14.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-preset-env"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz",
+  "_spec": "7.14.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen"
+  },
   "dependencies": {
     "@babel/compat-data": "^7.14.7",
@@ -91,7 +112,5 @@
     "semver": "^6.3.0"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "description": "A Babel preset for each environment.",
   "devDependencies": {
     "@babel/core": "7.14.8",
@@ -102,4 +121,20 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-preset-env",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/preset-env",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-preset-env"
+  },
+  "version": "7.14.8"
 }
Index: trip-planner-front/node_modules/@babel/preset-modules/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/preset-modules/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/preset-modules/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,66 +1,44 @@
 {
-  "name": "@babel/preset-modules",
-  "version": "0.1.4",
-  "description": "A Babel preset that targets modern browsers by fixing engine bugs.",
-  "main": "lib/index.js",
-  "license": "MIT",
-  "scripts": {
-    "start": "concurrently -r 'npm:watch:* -s'",
-    "build": "babel src -d lib --ignore '**/*.test.js'",
-    "test": "eslint src test && jest --colors",
-    "test:browser": "cd test/browser && karmatic --no-coverage --browsers chrome:headless,sauce-chrome-61,sauce-firefox-60,sauce-safari-10,sauce-safari-11,sauce-edge-16,sauce-edge-17 '**/*.js'",
-    "test:local": "cd test/browser && karmatic --no-coverage '**/*.js'",
-    "test:safari": "npm run test:local -- --browsers sauce-safari-10",
-    "test:edge": "npm run test:local -- --browsers sauce-edge-16",
-    "watch:test": "jest --watch",
-    "watch:build": "npm run -s build -- -w"
+  "_args": [
+    [
+      "@babel/preset-modules@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/preset-modules@0.1.4",
+  "_id": "@babel/preset-modules@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
+  "_location": "/@babel/preset-modules",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/preset-modules@0.1.4",
+    "name": "@babel/preset-modules",
+    "escapedName": "@babel%2fpreset-modules",
+    "scope": "@babel",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
   },
-  "keywords": [
-    "babel",
-    "preset",
-    "preset-env",
-    "modern",
-    "modules",
-    "ES Modules",
-    "module/nomodule"
+  "_requiredBy": [
+    "/@babel/preset-env"
   ],
-  "files": [
-    "src",
-    "lib"
-  ],
-  "lint-staged": {
-    "*.js": [
-      "eslint --format=codeframe"
-    ]
-  },
-  "husky": {
-    "hooks": {
-      "pre-commit": "lint-staged"
-    }
-  },
-  "jest": {
-    "testEnvironment": "node",
-    "roots": [
-      "src",
-      "test"
-    ]
-  },
-  "eslintConfig": {
-    "extends": "developit",
-    "rules": {
-      "no-console": 0,
-      "new-cap": 0
-    }
-  },
-  "eslintIgnore": [
-    "test/fixtures/**/*",
-    "test/integration/**/*"
-  ],
+  "_resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "Jason Miller <jason@developit.ca>"
   ],
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.0.0",
+    "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+    "@babel/plugin-transform-dotall-regex": "^7.4.4",
+    "@babel/types": "^7.4.4",
+    "esutils": "^2.0.2"
   },
+  "description": "A Babel preset that targets modern browsers by fixing engine bugs.",
   "devDependencies": {
     "@babel/cli": "^7.7.0",
@@ -93,10 +71,62 @@
     "webpack": "^4.35.0"
   },
-  "dependencies": {
-    "@babel/helper-plugin-utils": "^7.0.0",
-    "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
-    "@babel/plugin-transform-dotall-regex": "^7.4.4",
-    "@babel/types": "^7.4.4",
-    "esutils": "^2.0.2"
-  }
+  "eslintConfig": {
+    "extends": "developit",
+    "rules": {
+      "no-console": 0,
+      "new-cap": 0
+    }
+  },
+  "eslintIgnore": [
+    "test/fixtures/**/*",
+    "test/integration/**/*"
+  ],
+  "files": [
+    "src",
+    "lib"
+  ],
+  "husky": {
+    "hooks": {
+      "pre-commit": "lint-staged"
+    }
+  },
+  "jest": {
+    "testEnvironment": "node",
+    "roots": [
+      "src",
+      "test"
+    ]
+  },
+  "keywords": [
+    "babel",
+    "preset",
+    "preset-env",
+    "modern",
+    "modules",
+    "ES Modules",
+    "module/nomodule"
+  ],
+  "license": "MIT",
+  "lint-staged": {
+    "*.js": [
+      "eslint --format=codeframe"
+    ]
+  },
+  "main": "lib/index.js",
+  "name": "@babel/preset-modules",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "scripts": {
+    "build": "babel src -d lib --ignore '**/*.test.js'",
+    "start": "concurrently -r 'npm:watch:* -s'",
+    "test": "eslint src test && jest --colors",
+    "test:browser": "cd test/browser && karmatic --no-coverage --browsers chrome:headless,sauce-chrome-61,sauce-firefox-60,sauce-safari-10,sauce-safari-11,sauce-edge-16,sauce-edge-17 '**/*.js'",
+    "test:edge": "npm run test:local -- --browsers sauce-edge-16",
+    "test:local": "cd test/browser && karmatic --no-coverage '**/*.js'",
+    "test:safari": "npm run test:local -- --browsers sauce-safari-10",
+    "watch:build": "npm run -s build -- -w",
+    "watch:test": "jest --watch"
+  },
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/@babel/runtime/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/runtime/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/runtime/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,47 @@
 {
-  "name": "@babel/runtime",
-  "version": "7.14.8",
-  "description": "babel's modular runtime helpers",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/runtime@7.14.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/runtime@7.14.8",
+  "_id": "@babel/runtime@7.14.8",
+  "_inBundle": false,
+  "_integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
+  "_location": "/@babel/runtime",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/runtime@7.14.8",
+    "name": "@babel/runtime",
+    "escapedName": "@babel%2fruntime",
+    "scope": "@babel",
+    "rawSpec": "7.14.8",
+    "saveSpec": null,
+    "fetchSpec": "7.14.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-runtime"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/regenerator-transform"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
+  "_spec": "7.14.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-runtime",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
   "dependencies": {
     "regenerator-runtime": "^0.13.4"
+  },
+  "description": "babel's modular runtime helpers",
+  "engines": {
+    "node": ">=6.9.0"
   },
   "exports": {
@@ -816,6 +844,15 @@
     "./regenerator/": "./regenerator/"
   },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "homepage": "https://babel.dev/docs/en/next/babel-runtime",
+  "license": "MIT",
+  "name": "@babel/runtime",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-runtime"
+  },
+  "version": "7.14.8"
 }
Index: trip-planner-front/node_modules/@babel/template/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/template/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/template/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,54 @@
 {
+  "_args": [
+    [
+      "@babel/template@7.14.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/template@7.14.5",
+  "_id": "@babel/template@7.14.5",
+  "_inBundle": false,
+  "_integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==",
+  "_location": "/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/template@7.14.5",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "7.14.5",
+    "saveSpec": null,
+    "fetchSpec": "7.14.5"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz",
+  "_spec": "7.14.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.14.5",
+    "@babel/parser": "^7.14.5",
+    "@babel/types": "^7.14.5"
+  },
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.14.5",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,15 +56,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.14.5",
-    "@babel/parser": "^7.14.5",
-    "@babel/types": "^7.14.5"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.14.5"
 }
Index: trip-planner-front/node_modules/@babel/traverse/node_modules/@babel/generator/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/traverse/node_modules/@babel/generator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/traverse/node_modules/@babel/generator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,40 @@
 {
-  "name": "@babel/generator",
-  "version": "7.15.8",
-  "description": "Turns an AST into code.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/generator@7.15.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/generator@7.15.8",
+  "_id": "@babel/generator@7.15.8",
+  "_inBundle": false,
+  "_integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
+  "_location": "/@babel/traverse/@babel/generator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/generator@7.15.8",
+    "name": "@babel/generator",
+    "escapedName": "@babel%2fgenerator",
+    "scope": "@babel",
+    "rawSpec": "7.15.8",
+    "saveSpec": null,
+    "fetchSpec": "7.15.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-generator"
+  "_requiredBy": [
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
+  "_spec": "7.15.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-generator",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen",
-  "main": "./lib/index.js",
-  "files": [
-    "lib"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen"
+  },
   "dependencies": {
     "@babel/types": "^7.15.6",
@@ -24,4 +42,5 @@
     "source-map": "^0.5.0"
   },
+  "description": "Turns an AST into code.",
   "devDependencies": {
     "@babel/helper-fixtures": "7.14.5",
@@ -33,4 +52,20 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://babel.dev/docs/en/next/babel-generator",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/generator",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-generator"
+  },
+  "version": "7.15.8"
 }
Index: trip-planner-front/node_modules/@babel/traverse/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/traverse/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/traverse/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.5.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.5.7",
+  "_id": "source-map@0.5.7",
+  "_inBundle": false,
+  "_integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+  "_location": "/@babel/traverse/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.5.7",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.5.7",
+    "saveSpec": null,
+    "fetchSpec": "0.5.7"
+  },
+  "_requiredBy": [
+    "/@babel/traverse/@babel/generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+  "_spec": "0.5.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.5.7",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -56,17 +198,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.5.7"
 }
Index: trip-planner-front/node_modules/@babel/traverse/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,48 @@
 {
-  "name": "@babel/traverse",
-  "version": "7.15.4",
-  "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-traverse",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_args": [
+    [
+      "@babel/traverse@7.15.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/traverse@7.15.4",
+  "_id": "@babel/traverse@7.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
+  "_location": "/@babel/traverse",
+  "_phantomChildren": {
+    "@babel/types": "7.15.6",
+    "jsesc": "2.5.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-traverse"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/traverse@7.15.4",
+    "name": "@babel/traverse",
+    "escapedName": "@babel%2ftraverse",
+    "scope": "@babel",
+    "rawSpec": "7.15.4",
+    "saveSpec": null,
+    "fetchSpec": "7.15.4"
   },
-  "main": "./lib/index.js",
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/helper-define-polyfill-provider",
+    "/@babel/helper-module-transforms",
+    "/@babel/helper-replace-supers",
+    "/@babel/helper-wrap-function",
+    "/@babel/helpers"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
+  "_spec": "7.15.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen"
+  },
   "dependencies": {
     "@babel/code-frame": "^7.14.5",
@@ -27,4 +56,5 @@
     "globals": "^11.1.0"
   },
+  "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
   "devDependencies": {
     "@babel/helper-plugin-test-runner": "7.14.5"
@@ -32,4 +62,17 @@
   "engines": {
     "node": ">=6.9.0"
-  }
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-traverse",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/traverse",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-traverse"
+  },
+  "version": "7.15.4"
 }
Index: trip-planner-front/node_modules/@babel/types/package.json
===================================================================
--- trip-planner-front/node_modules/@babel/types/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@babel/types/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,90 @@
 {
+  "_args": [
+    [
+      "@babel/types@7.15.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@babel/types@7.15.6",
+  "_id": "@babel/types@7.15.6",
+  "_inBundle": false,
+  "_integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
+  "_location": "/@babel/types",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/types@7.15.6",
+    "name": "@babel/types",
+    "escapedName": "@babel%2ftypes",
+    "scope": "@babel",
+    "rawSpec": "7.15.6",
+    "saveSpec": null,
+    "fetchSpec": "7.15.6"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli",
+    "/@babel/core",
+    "/@babel/generator",
+    "/@babel/helper-annotate-as-pure",
+    "/@babel/helper-builder-binary-assignment-operator-visitor",
+    "/@babel/helper-create-class-features-plugin/@babel/helper-annotate-as-pure",
+    "/@babel/helper-explode-assignable-expression",
+    "/@babel/helper-function-name",
+    "/@babel/helper-function-name/@babel/template",
+    "/@babel/helper-get-function-arity",
+    "/@babel/helper-hoist-variables",
+    "/@babel/helper-member-expression-to-functions",
+    "/@babel/helper-module-imports",
+    "/@babel/helper-module-transforms",
+    "/@babel/helper-module-transforms/@babel/template",
+    "/@babel/helper-optimise-call-expression",
+    "/@babel/helper-remap-async-to-generator",
+    "/@babel/helper-remap-async-to-generator/@babel/helper-annotate-as-pure",
+    "/@babel/helper-replace-supers",
+    "/@babel/helper-simple-access",
+    "/@babel/helper-skip-transparent-expression-wrappers",
+    "/@babel/helper-split-export-declaration",
+    "/@babel/helper-wrap-function",
+    "/@babel/helper-wrap-function/@babel/template",
+    "/@babel/helpers",
+    "/@babel/helpers/@babel/template",
+    "/@babel/plugin-proposal-private-property-in-object/@babel/helper-annotate-as-pure",
+    "/@babel/plugin-transform-classes/@babel/helper-annotate-as-pure",
+    "/@babel/preset-env",
+    "/@babel/preset-modules",
+    "/@babel/template",
+    "/@babel/traverse",
+    "/@babel/traverse/@babel/generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
+  "_spec": "7.15.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen"
+  },
+  "dependencies": {
+    "@babel/helper-validator-identifier": "^7.14.9",
+    "to-fast-properties": "^2.0.0"
+  },
+  "description": "Babel Types is a Lodash-esque utility library for AST nodes",
+  "devDependencies": {
+    "@babel/generator": "7.15.4",
+    "@babel/parser": "7.15.6",
+    "chalk": "^4.1.0",
+    "glob": "^7.1.7"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-types",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/types",
-  "version": "7.15.6",
-  "description": "Babel Types is a Lodash-esque utility library for AST nodes",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-types",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,8 +92,7 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-types"
   },
-  "main": "./lib/index.js",
   "types": "./lib/index-legacy.d.ts",
   "typesVersions": {
@@ -24,16 +103,4 @@
     }
   },
-  "dependencies": {
-    "@babel/helper-validator-identifier": "^7.14.9",
-    "to-fast-properties": "^2.0.0"
-  },
-  "devDependencies": {
-    "@babel/generator": "7.15.4",
-    "@babel/parser": "7.15.6",
-    "chalk": "^4.1.0",
-    "glob": "^7.1.7"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  }
+  "version": "7.15.6"
 }
Index: trip-planner-front/node_modules/@csstools/convert-colors/package.json
===================================================================
--- trip-planner-front/node_modules/@csstools/convert-colors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@csstools/convert-colors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,43 @@
 {
-  "name": "@csstools/convert-colors",
-  "version": "1.4.0",
+  "_args": [
+    [
+      "@csstools/convert-colors@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@csstools/convert-colors@1.4.0",
+  "_id": "@csstools/convert-colors@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
+  "_location": "/@csstools/convert-colors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@csstools/convert-colors@1.4.0",
+    "name": "@csstools/convert-colors",
+    "escapedName": "@csstools%2fconvert-colors",
+    "scope": "@csstools",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/postcss-color-gray",
+    "/postcss-color-mod-function",
+    "/postcss-lab-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/convert-colors/issues"
+  },
   "description": "Convert colors between RGB, HSL, and HWB",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/convert-colors",
-  "homepage": "https://github.com/jonathantneal/convert-colors#readme",
-  "bugs": "https://github.com/jonathantneal/convert-colors/issues",
-  "main": "index.bundle.js",
-  "module": "index.js",
-  "files": [
-    "index.js",
-    "index.bundle.js",
-    "lib"
-  ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:ec && npm run test:js && npm run test:tape",
-    "test:ec": "echint test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "node .tape"
-  },
-  "engines": {
-    "node": ">=4.0.0"
-  },
   "devDependencies": {
     "babel-core": "^6.26.0",
@@ -36,4 +50,7 @@
     "rollup-plugin-babel": "^3.0"
   },
+  "engines": {
+    "node": ">=4.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
@@ -45,4 +62,10 @@
     }
   },
+  "files": [
+    "index.js",
+    "index.bundle.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/jonathantneal/convert-colors#readme",
   "keywords": [
     "colors",
@@ -67,4 +90,21 @@
     "blackness",
     "cie"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.bundle.js",
+  "module": "index.js",
+  "name": "@csstools/convert-colors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/convert-colors.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:ec && npm run test:js && npm run test:tape",
+    "test:ec": "echint test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "node .tape"
+  },
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/@discoveryjs/json-ext/package.json
===================================================================
--- trip-planner-front/node_modules/@discoveryjs/json-ext/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@discoveryjs/json-ext/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,57 +1,98 @@
 {
+  "_args": [
+    [
+      "@discoveryjs/json-ext@0.5.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@discoveryjs/json-ext@0.5.3",
+  "_id": "@discoveryjs/json-ext@0.5.3",
+  "_inBundle": false,
+  "_integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
+  "_location": "/@discoveryjs/json-ext",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@discoveryjs/json-ext@0.5.3",
     "name": "@discoveryjs/json-ext",
-    "version": "0.5.3",
-    "description": "A set of utilities that extend the use of JSON",
-    "keywords": [
-        "json",
-        "utils",
-        "stream",
-        "async",
-        "promise",
-        "stringify",
-        "info"
-    ],
-    "author": "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)",
-    "license": "MIT",
-    "repository": "discoveryjs/json-ext",
-    "main": "./src/index",
-    "browser": {
-        "./src/stringify-stream.js": "./src/stringify-stream-browser.js",
-        "./src/text-decoder.js": "./src/text-decoder-browser.js"
-    },
-    "scripts": {
-        "test": "mocha --reporter progress",
-        "lint": "eslint src test",
-        "lint-and-test": "npm run lint && npm test",
-        "build": "rollup --config",
-        "test:all": "npm run test:src && npm run test:dist",
-        "test:src": "npm test",
-        "test:dist": "cross-env MODE=dist npm test && cross-env MODE=dist-min npm test",
-        "build-and-test": "npm run build && npm run test:dist",
-        "coverage": "nyc npm test",
-        "travis": "nyc npm run lint-and-test && npm run build-and-test && npm run coveralls",
-        "coveralls": "nyc report --reporter=text-lcov | coveralls",
-        "prepublishOnly": "npm run build"
-    },
-    "dependencies": {},
-    "devDependencies": {
-        "@rollup/plugin-commonjs": "^15.1.0",
-        "@rollup/plugin-json": "^4.1.0",
-        "@rollup/plugin-node-resolve": "^9.0.0",
-        "chalk": "^4.1.0",
-        "coveralls": "^3.1.0",
-        "cross-env": "^7.0.3",
-        "eslint": "^7.6.0",
-        "mocha": "^8.1.1",
-        "nyc": "^15.1.0",
-        "rollup": "^2.28.2",
-        "rollup-plugin-terser": "^7.0.2"
-    },
-    "engines": {
-        "node": ">=10.0.0"
-    },
-    "files": [
-        "dist",
-        "src"
-    ]
+    "escapedName": "@discoveryjs%2fjson-ext",
+    "scope": "@discoveryjs",
+    "rawSpec": "0.5.3",
+    "saveSpec": null,
+    "fetchSpec": "0.5.3"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
+  "_spec": "0.5.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Roman Dvornov",
+    "email": "rdvornov@gmail.com",
+    "url": "https://github.com/lahmatiy"
+  },
+  "browser": {
+    "./src/stringify-stream.js": "./src/stringify-stream-browser.js",
+    "./src/text-decoder.js": "./src/text-decoder-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/discoveryjs/json-ext/issues"
+  },
+  "dependencies": {},
+  "description": "A set of utilities that extend the use of JSON",
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^15.1.0",
+    "@rollup/plugin-json": "^4.1.0",
+    "@rollup/plugin-node-resolve": "^9.0.0",
+    "chalk": "^4.1.0",
+    "coveralls": "^3.1.0",
+    "cross-env": "^7.0.3",
+    "eslint": "^7.6.0",
+    "mocha": "^8.1.1",
+    "nyc": "^15.1.0",
+    "rollup": "^2.28.2",
+    "rollup-plugin-terser": "^7.0.2"
+  },
+  "engines": {
+    "node": ">=10.0.0"
+  },
+  "files": [
+    "dist",
+    "src"
+  ],
+  "homepage": "https://github.com/discoveryjs/json-ext#readme",
+  "keywords": [
+    "json",
+    "utils",
+    "stream",
+    "async",
+    "promise",
+    "stringify",
+    "info"
+  ],
+  "license": "MIT",
+  "main": "./src/index",
+  "name": "@discoveryjs/json-ext",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/discoveryjs/json-ext.git"
+  },
+  "scripts": {
+    "build": "rollup --config",
+    "build-and-test": "npm run build && npm run test:dist",
+    "coverage": "nyc npm test",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "lint": "eslint src test",
+    "lint-and-test": "npm run lint && npm test",
+    "prepublishOnly": "npm run build",
+    "test": "mocha --reporter progress",
+    "test:all": "npm run test:src && npm run test:dist",
+    "test:dist": "cross-env MODE=dist npm test && cross-env MODE=dist-min npm test",
+    "test:src": "npm test",
+    "travis": "nyc npm run lint-and-test && npm run build-and-test && npm run coveralls"
+  },
+  "version": "0.5.3"
 }
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/LICENSE
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/LICENSE	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/LICENSE	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Fonticons, Inc. and 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.
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/README.md
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,150 @@
+<a href="https://fontawesome.com">
+  <img align="right" width="100" height="100" alt="Official Javascript Component" src="https://img.fortawesome.com/349cfdf6/official-javascript-component.svg">
+</a>
+
+# angular-fontawesome
+
+[![npm](https://img.shields.io/npm/v/@fortawesome/angular-fontawesome.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/angular-fontawesome)
+
+Official Angular component for Font Awesome 5
+
+## Installation
+
+Using `ng add`:
+
+```
+# See Compatibility table below to choose a correct version
+$ ng add @fortawesome/angular-fontawesome@<version>
+```
+
+Using [Yarn](https://yarnpkg.com)
+```
+$ yarn add @fortawesome/fontawesome-svg-core
+$ yarn add @fortawesome/free-solid-svg-icons
+# See Compatibility table below to choose a correct version
+$ yarn add @fortawesome/angular-fontawesome@<version>
+```
+
+Using [NPM](https://www.npmjs.com/)
+```
+$ npm install @fortawesome/fontawesome-svg-core
+$ npm install @fortawesome/free-solid-svg-icons
+# See Compatibility table below to choose a correct version
+$ npm install @fortawesome/angular-fontawesome@<version>
+```
+
+### Compatibility table
+
+|@fortawesome/angular-fontawesome|Angular|ng-add|
+|-|-|-|
+|0.1.x|5.x|not supported|
+|0.2.x|6.x|not supported|
+|0.3.x|6.x && 7.x|not supported|
+|0.4.x, 0.5.x|8.x|not supported|
+|0.6.x|9.x|supported|
+|0.7.x|10.x|supported|
+|0.8.x|11.x|supported|
+
+## Usage
+To get up and running using Font Awesome with Angular follow below steps:
+
+1. Add `FontAwesomeModule` to `imports` in
+`src/app/app.module.ts`:
+
+    ```typescript
+    import { BrowserModule } from '@angular/platform-browser';
+    import { NgModule } from '@angular/core';
+    
+    import { AppComponent } from './app.component';
+    import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
+    
+    @NgModule({
+      imports: [
+        BrowserModule,
+        FontAwesomeModule
+      ],
+      declarations: [AppComponent],
+      bootstrap: [AppComponent]
+    })
+    export class AppModule { }
+    ```
+
+2. Tie the icon to the property in your component
+`src/app/app.component.ts`:
+
+    ```typescript
+    import { Component } from '@angular/core';
+    import { faCoffee } from '@fortawesome/free-solid-svg-icons';
+    
+    @Component({
+      selector: 'app-root',
+      templateUrl: './app.component.html'
+    })
+    export class AppComponent {
+      faCoffee = faCoffee;
+    }
+    ```
+
+3. Use the icon in the template
+`src/app/app.component.html`:
+
+    ```html
+    <fa-icon [icon]="faCoffee"></fa-icon>
+    ```
+
+## Documentation
+
+* [In-depth usage guide](./docs/usage.md)
+* [Using other styles](./docs/usage/using-other-styles.md)
+* [Full feature list](./docs/usage/features.md)
+* [Upgrading instructions](UPGRADING.md)
+
+## Examples
+
+### Stackblitz
+Here's a [StackBlitz Starter Sample](https://stackblitz.com/edit/angular-fontawesome-sample?file=src%2Fapp%2Fapp.module.ts) on how to display Solid, Regular, and Brand icons [using the Icon Library](./docs/usage/icon-library.md#using-the-icon-library).
+
+
+### Demo application
+You can find examples in the `projects/demo` directory. You can follow [the docs to run the demo app](./DEVELOPER.md#setting-up-the-local-environment) on your own machine.
+
+## Contributing
+`angular-fontawesome` is a product of the community, you can take a look at the [developer docs](./DEVELOPER.md) to find about more on how to contribute back to the project.
+
+## Contributors
+
+The following contributors have either helped to start this project, have contributed
+code, are actively maintaining it (including documentation), or in other ways
+being awesome contributors to this project. **We'd like to take a moment to recognize them.**
+
+[<img src="https://github.com/devoto13.png?size=72" alt="devoto13" width="72">](https://github.com/devoto13)
+[<img src="https://github.com/zeevkatz.png?size=72" alt="zeevkatz" width="72">](https://github.com/zeevkatz)
+[<img src="https://github.com/scttcper.png?size=72" alt="scttcper" width="72">](https://github.com/scttcper)
+[<img src="https://github.com/DavidePastore.png?size=72" alt="DavidePastore" width="72">](https://github.com/DavidePastore)
+[<img src="https://github.com/donmckenna.png?size=72" alt="donmckenna" width="72">](https://github.com/donmckenna)
+[<img src="https://github.com/paustint.png?size=72" alt="paustint" width="72">](https://github.com/paustint)
+[<img src="https://github.com/mzellho.png?size=72" alt="mzellho" width="72">](https://github.com/mzellho)
+[<img src="https://github.com/elebitzero.png?size=72" alt="elebitzero" width="72">](https://github.com/elebitzero)
+[<img src="https://github.com/mcenkar.png?size=72" alt="mcenkar" width="72">](https://github.com/mcenkar)
+[<img src="https://github.com/SiddAjmera.png?size=72" alt="SiddAjmera" width="72">](https://github.com/SiddAjmera)
+[<img src="https://github.com/stephaniepurvis.png?size=72" alt="stephaniepurvis" width="72">](https://github.com/stephaniepurvis)
+[<img src="https://github.com/loicgasser.png?size=72" alt="loicgasser" width="72">](https://github.com/loicgasser)
+[<img src="https://github.com/damienwebdev.png?size=72" alt="damienwebdev" width="72">](https://github.com/damienwebdev)
+[<img src="https://github.com/ronniebarker.png?size=72" alt="ronniebarker" width="72">](https://github.com/ronniebarker)
+[<img src="https://github.com/bhanuhiteshi.png?size=72" alt="bhanuhiteshi" width="72">](https://github.com/bhanuhiteshi)
+[<img src="https://github.com/plinkpaste.png?size=72" alt="plinkpaste" width="72">](https://github.com/plinkpaste)
+[<img src="https://github.com/ej2.png?size=72" alt="ej2" width="72">](https://github.com/ej2)
+[<img src="https://github.com/peterblazejewicz.png?size=72" alt="peterblazejewicz" width="72">](https://github.com/peterblazejewicz)
+[<img src="https://github.com/arjenbrandenburgh.png?size=72" alt="arjenbrandenburgh" width="72">](https://github.com/arjenbrandenburgh)
+[<img src="https://github.com/athisun.png?size=72" alt="athisun" width="72">](https://github.com/athisun)
+[<img src="https://github.com/madebyjeffrey.png?size=72" alt="madebyjeffrey" width="72">](https://github.com/madebyjeffrey)
+[<img src="https://github.com/benjamincharity.png?size=72" alt="benjamincharity" width="72">](https://github.com/benjamincharity)
+
+If we've missed someone (which is quite likely) submit a Pull Request to us and we'll get it resolved.
+
+The Font Awesome team:
+
+[<img src="https://github.com/mlwilkerson.png?size=72" alt="mlwilkerson" width="72">](https://github.com/mlwilkerson)
+[<img src="https://github.com/supercodepoet.png?size=72" alt="supercodepoet" width="72">](https://github.com/supercodepoet)
+[<img src="https://github.com/robmadole.png?size=72" alt="robmadole" width="72">](https://github.com/robmadole)
+[<img src="https://github.com/talbs.png?size=72" alt="talbs" width="72">](https://github.com/talbs)
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.metadata.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.metadata.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/angular-fontawesome.metadata.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"__symbolic":"module","version":4,"metadata":{"FontAwesomeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FaIconComponent"},{"__symbolic":"reference","name":"FaDuotoneIconComponent"},{"__symbolic":"reference","name":"FaLayersComponent"},{"__symbolic":"reference","name":"FaLayersTextComponent"},{"__symbolic":"reference","name":"FaLayersCounterComponent"},{"__symbolic":"reference","name":"FaStackComponent"},{"__symbolic":"reference","name":"FaStackItemSizeDirective"}],"exports":[{"__symbolic":"reference","name":"FaIconComponent"},{"__symbolic":"reference","name":"FaDuotoneIconComponent"},{"__symbolic":"reference","name":"FaLayersComponent"},{"__symbolic":"reference","name":"FaLayersTextComponent"},{"__symbolic":"reference","name":"FaLayersCounterComponent"},{"__symbolic":"reference","name":"FaStackComponent"},{"__symbolic":"reference","name":"FaStackItemSizeDirective"}]}]}],"members":{}},"FaProps":{"__symbolic":"interface"},"FaIconComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"fa-icon","template":"","host":{"class":"ng-fa-icon","[attr.title]":"title","$quoted$":["[attr.title]"]}}]}],"members":{"icon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"spin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"pulse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"mask":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"flip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"pull":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"border":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"inverse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"symbol":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"rotate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"fixedWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"classes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"transform":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"a11yRole":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"renderedIconHTML":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":66,"character":3},"arguments":["innerHTML"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":72,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":73,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":69,"character":23},{"__symbolic":"reference","name":"FaConfig"},{"__symbolic":"reference","name":"FaIconLibrary"},{"__symbolic":"reference","name":"FaStackItemSizeDirective"},{"__symbolic":"reference","name":"FaStackComponent"}]}],"ngOnChanges":[{"__symbolic":"method"}],"render":[{"__symbolic":"method"}],"findIconDefinition":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"renderIcon":[{"__symbolic":"method"}]}},"FaDuotoneIconComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FaIconComponent"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"fa-duotone-icon","template":""}]}],"members":{"swapOpacity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"primaryOpacity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"secondaryOpacity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"primaryColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"secondaryColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"findIconDefinition":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}]}},"FaConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"FaLayersComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"fa-layers","template":"<ng-content></ng-content>"}]}],"members":{"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"fixedWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":14,"character":12},"arguments":["class.fa-fw"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":16,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":16,"character":63},{"__symbolic":"reference","name":"FaConfig"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"FaLayersTextComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"fa-layers-text","template":"","host":{"class":"ng-fa-layers-text"}}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"classes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"spin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"pulse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"flip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"pull":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"border":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"inverse":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"rotate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"fixedWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"transform":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"renderedHTML":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":41,"character":3},"arguments":["innerHTML"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null],"parameters":[{"__symbolic":"reference","name":"FaLayersComponent"},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":43,"character":80}]}],"ngOnChanges":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"updateContent":[{"__symbolic":"method"}]}},"FaLayersCounterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"fa-layers-counter","template":"","host":{"class":"ng-fa-layers-counter"}}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"classes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"renderedHTML":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":19,"character":3},"arguments":["innerHTML"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":15}}],null],"parameters":[{"__symbolic":"reference","name":"FaLayersComponent"},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":21,"character":80}]}],"ngOnChanges":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"updateContent":[{"__symbolic":"method"}]}},"FaStackComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"fa-stack","template":"<ng-content></ng-content>"}]}],"members":{"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":16,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":16,"character":63}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"FaStackItemSizeDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":4,"character":1},"arguments":[{"selector":"fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]"}]}],"members":{"stackItemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}]}},"FaIconLibrary":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addIcons":[{"__symbolic":"method"}],"addIconPacks":[{"__symbolic":"method"}],"getIconDefinition":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"FaIconLibraryInterface":{"__symbolic":"interface"}},"origins":{"FontAwesomeModule":"./fontawesome.module","FaProps":"./shared/models/props.model","FaIconComponent":"./icon/icon.component","FaDuotoneIconComponent":"./icon/duotone-icon.component","FaConfig":"./config","FaLayersComponent":"./layers/layers.component","FaLayersTextComponent":"./layers/layers-text.component","FaLayersCounterComponent":"./layers/layers-counter.component","FaStackComponent":"./stack/stack.component","FaStackItemSizeDirective":"./stack/stack-item-size.directive","FaIconLibrary":"./icon-library","FaIconLibraryInterface":"./icon-library"},"importAs":"@fortawesome/angular-fontawesome"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,948 @@
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser'), require('@fortawesome/fontawesome-svg-core')) :
+    typeof define === 'function' && define.amd ? define('@fortawesome/angular-fontawesome', ['exports', '@angular/core', '@angular/platform-browser', '@fortawesome/fontawesome-svg-core'], factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.fortawesome = global.fortawesome || {}, global.fortawesome['angular-fontawesome'] = {}), global.ng.core, global.ng.platformBrowser, global.fontawesomeSvgCore));
+}(this, (function (exports, i0, platformBrowser, fontawesomeSvgCore) { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+    /* global Reflect, Promise */
+    var extendStatics = function (d, b) {
+        extendStatics = Object.setPrototypeOf ||
+            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+            function (d, b) { for (var p in b)
+                if (Object.prototype.hasOwnProperty.call(b, p))
+                    d[p] = b[p]; };
+        return extendStatics(d, b);
+    };
+    function __extends(d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    }
+    var __assign = function () {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s)
+                    if (Object.prototype.hasOwnProperty.call(s, p))
+                        t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+    function __rest(s, e) {
+        var t = {};
+        for (var p in s)
+            if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+                t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    }
+    function __decorate(decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+            r = Reflect.decorate(decorators, target, key, desc);
+        else
+            for (var i = decorators.length - 1; i >= 0; i--)
+                if (d = decorators[i])
+                    r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    }
+    function __param(paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); };
+    }
+    function __metadata(metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
+            return Reflect.metadata(metadataKey, metadataValue);
+    }
+    function __awaiter(thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try {
+                step(generator.next(value));
+            }
+            catch (e) {
+                reject(e);
+            } }
+            function rejected(value) { try {
+                step(generator["throw"](value));
+            }
+            catch (e) {
+                reject(e);
+            } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    }
+    function __generator(thisArg, body) {
+        var _ = { label: 0, sent: function () { if (t[0] & 1)
+                throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f)
+                throw new TypeError("Generator is already executing.");
+            while (_)
+                try {
+                    if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
+                        return t;
+                    if (y = 0, t)
+                        op = [op[0] & 2, t.value];
+                    switch (op[0]) {
+                        case 0:
+                        case 1:
+                            t = op;
+                            break;
+                        case 4:
+                            _.label++;
+                            return { value: op[1], done: false };
+                        case 5:
+                            _.label++;
+                            y = op[1];
+                            op = [0];
+                            continue;
+                        case 7:
+                            op = _.ops.pop();
+                            _.trys.pop();
+                            continue;
+                        default:
+                            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+                                _ = 0;
+                                continue;
+                            }
+                            if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
+                                _.label = op[1];
+                                break;
+                            }
+                            if (op[0] === 6 && _.label < t[1]) {
+                                _.label = t[1];
+                                t = op;
+                                break;
+                            }
+                            if (t && _.label < t[2]) {
+                                _.label = t[2];
+                                _.ops.push(op);
+                                break;
+                            }
+                            if (t[2])
+                                _.ops.pop();
+                            _.trys.pop();
+                            continue;
+                    }
+                    op = body.call(thisArg, _);
+                }
+                catch (e) {
+                    op = [6, e];
+                    y = 0;
+                }
+                finally {
+                    f = t = 0;
+                }
+            if (op[0] & 5)
+                throw op[1];
+            return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    }
+    var __createBinding = Object.create ? (function (o, m, k, k2) {
+        if (k2 === undefined)
+            k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
+    }) : (function (o, m, k, k2) {
+        if (k2 === undefined)
+            k2 = k;
+        o[k2] = m[k];
+    });
+    function __exportStar(m, o) {
+        for (var p in m)
+            if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
+                __createBinding(o, m, p);
+    }
+    function __values(o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m)
+            return m.call(o);
+        if (o && typeof o.length === "number")
+            return {
+                next: function () {
+                    if (o && i >= o.length)
+                        o = void 0;
+                    return { value: o && o[i++], done: !o };
+                }
+            };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    }
+    function __read(o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m)
+            return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
+                ar.push(r.value);
+        }
+        catch (error) {
+            e = { error: error };
+        }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"]))
+                    m.call(i);
+            }
+            finally {
+                if (e)
+                    throw e.error;
+            }
+        }
+        return ar;
+    }
+    /** @deprecated */
+    function __spread() {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    }
+    /** @deprecated */
+    function __spreadArrays() {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++)
+            s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    }
+    function __spreadArray(to, from) {
+        for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+            to[j] = from[i];
+        return to;
+    }
+    function __await(v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    }
+    function __asyncGenerator(thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator)
+            throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n])
+            i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try {
+            step(g[n](v));
+        }
+        catch (e) {
+            settle(q[0][3], e);
+        } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length)
+            resume(q[0][0], q[0][1]); }
+    }
+    function __asyncDelegator(o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    }
+    function __asyncValues(o) {
+        if (!Symbol.asyncIterator)
+            throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
+    }
+    function __makeTemplateObject(cooked, raw) {
+        if (Object.defineProperty) {
+            Object.defineProperty(cooked, "raw", { value: raw });
+        }
+        else {
+            cooked.raw = raw;
+        }
+        return cooked;
+    }
+    ;
+    var __setModuleDefault = Object.create ? (function (o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function (o, v) {
+        o["default"] = v;
+    };
+    function __importStar(mod) {
+        if (mod && mod.__esModule)
+            return mod;
+        var result = {};
+        if (mod != null)
+            for (var k in mod)
+                if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
+                    __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    }
+    function __importDefault(mod) {
+        return (mod && mod.__esModule) ? mod : { default: mod };
+    }
+    function __classPrivateFieldGet(receiver, privateMap) {
+        if (!privateMap.has(receiver)) {
+            throw new TypeError("attempted to get private field on non-instance");
+        }
+        return privateMap.get(receiver);
+    }
+    function __classPrivateFieldSet(receiver, privateMap, value) {
+        if (!privateMap.has(receiver)) {
+            throw new TypeError("attempted to set private field on non-instance");
+        }
+        privateMap.set(receiver, value);
+        return value;
+    }
+
+    var FaConfig = /** @class */ (function () {
+        function FaConfig() {
+            /**
+             * Default prefix to use, when one is not provided with the icon name.
+             *
+             * @default 'fas'
+             */
+            this.defaultPrefix = 'fas';
+            /**
+             * Provides a fallback icon to use whilst main icon is being loaded asynchronously.
+             * When value is null, then fa-icon component will throw an error if icon input is missing.
+             * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.
+             *
+             * @default null
+             */
+            this.fallbackIcon = null;
+            /**
+             * Whether components should lookup icon definitions in the global icon
+             * library (the one available from
+             * `import { library } from '@fortawesome/fontawesome-svg-core')`.
+             *
+             * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md
+             * for detailed description of library modes.
+             *
+             * - 'unset' - Components should lookup icon definitions in the global library
+             * and emit warning if they find a definition there. This option is a default
+             * to assist existing applications with a migration. Applications are expected
+             * to switch to using {@link FaIconLibrary}.
+             * - true - Components should lookup icon definitions in the global library.
+             * Note that global icon library is deprecated and support for it will be
+             * removed. This option can be used to temporarily suppress warnings.
+             * - false - Components should not lookup icon definitions in the global
+             * library. Library will throw an error if missing icon is found in the global
+             * library.
+             *
+             * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will
+             * be changed to false. In 0.8.0 the option will be removed together with the
+             * support for the global icon library.
+             *
+             * @default false
+             */
+            this.globalLibrary = false;
+        }
+        return FaConfig;
+    }());
+    FaConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function FaConfig_Factory() { return new FaConfig(); }, token: FaConfig, providedIn: "root" });
+    FaConfig.decorators = [
+        { type: i0.Injectable, args: [{ providedIn: 'root' },] }
+    ];
+
+    var FaIconLibrary = /** @class */ (function () {
+        function FaIconLibrary() {
+            this.definitions = {};
+        }
+        FaIconLibrary.prototype.addIcons = function () {
+            var e_1, _a;
+            var icons = [];
+            for (var _i = 0; _i < arguments.length; _i++) {
+                icons[_i] = arguments[_i];
+            }
+            try {
+                for (var icons_1 = __values(icons), icons_1_1 = icons_1.next(); !icons_1_1.done; icons_1_1 = icons_1.next()) {
+                    var icon = icons_1_1.value;
+                    if (!(icon.prefix in this.definitions)) {
+                        this.definitions[icon.prefix] = {};
+                    }
+                    this.definitions[icon.prefix][icon.iconName] = icon;
+                }
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (icons_1_1 && !icons_1_1.done && (_a = icons_1.return)) _a.call(icons_1);
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
+        };
+        FaIconLibrary.prototype.addIconPacks = function () {
+            var e_2, _a;
+            var packs = [];
+            for (var _i = 0; _i < arguments.length; _i++) {
+                packs[_i] = arguments[_i];
+            }
+            var _loop_1 = function (pack) {
+                var icons = Object.keys(pack).map(function (key) { return pack[key]; });
+                this_1.addIcons.apply(this_1, __spread(icons));
+            };
+            var this_1 = this;
+            try {
+                for (var packs_1 = __values(packs), packs_1_1 = packs_1.next(); !packs_1_1.done; packs_1_1 = packs_1.next()) {
+                    var pack = packs_1_1.value;
+                    _loop_1(pack);
+                }
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (packs_1_1 && !packs_1_1.done && (_a = packs_1.return)) _a.call(packs_1);
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
+        };
+        FaIconLibrary.prototype.getIconDefinition = function (prefix, name) {
+            if (prefix in this.definitions && name in this.definitions[prefix]) {
+                return this.definitions[prefix][name];
+            }
+            return null;
+        };
+        return FaIconLibrary;
+    }());
+    FaIconLibrary.ɵprov = i0.ɵɵdefineInjectable({ factory: function FaIconLibrary_Factory() { return new FaIconLibrary(); }, token: FaIconLibrary, providedIn: "root" });
+    FaIconLibrary.decorators = [
+        { type: i0.Injectable, args: [{ providedIn: 'root' },] }
+    ];
+
+    var faWarnIfIconDefinitionMissing = function (iconSpec) {
+        throw new Error("Could not find icon with iconName=" + iconSpec.iconName + " and prefix=" + iconSpec.prefix + " in the icon library.");
+    };
+
+    var faWarnIfIconSpecMissing = function () {
+        throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');
+    };
+
+    /**
+     * Fontawesome class list.
+     * Returns classes array by props.
+     */
+    var faClassList = function (props) {
+        var _a;
+        var classes = (_a = {
+                'fa-spin': props.spin,
+                'fa-pulse': props.pulse,
+                'fa-fw': props.fixedWidth,
+                'fa-border': props.border,
+                'fa-inverse': props.inverse,
+                'fa-layers-counter': props.counter,
+                'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',
+                'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'
+            },
+            _a["fa-" + props.size] = props.size !== null,
+            _a["fa-rotate-" + props.rotate] = props.rotate !== null,
+            _a["fa-pull-" + props.pull] = props.pull !== null,
+            _a["fa-stack-" + props.stackItemSize] = props.stackItemSize != null,
+            _a);
+        return Object.keys(classes)
+            .map(function (key) { return (classes[key] ? key : null); })
+            .filter(function (key) { return key; });
+    };
+
+    /**
+     * Returns if is IconLookup or not.
+     */
+    var isIconLookup = function (i) {
+        return i.prefix !== undefined && i.iconName !== undefined;
+    };
+
+    /**
+     * Normalizing icon spec.
+     */
+    var faNormalizeIconSpec = function (iconSpec, defaultPrefix) {
+        if (isIconLookup(iconSpec)) {
+            return iconSpec;
+        }
+        if (Array.isArray(iconSpec) && iconSpec.length === 2) {
+            return { prefix: iconSpec[0], iconName: iconSpec[1] };
+        }
+        if (typeof iconSpec === 'string') {
+            return { prefix: defaultPrefix, iconName: iconSpec };
+        }
+    };
+
+    var FaStackItemSizeDirective = /** @class */ (function () {
+        function FaStackItemSizeDirective() {
+            /**
+             * Specify whether icon inside {@link FaStackComponent} should be rendered in
+             * regular size (1x) or as a larger icon (2x).
+             */
+            this.stackItemSize = '1x';
+        }
+        FaStackItemSizeDirective.prototype.ngOnChanges = function (changes) {
+            if ('size' in changes) {
+                throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +
+                    'Set size on the enclosing fa-stack instead: <fa-stack size="4x">...</fa-stack>.');
+            }
+        };
+        return FaStackItemSizeDirective;
+    }());
+    FaStackItemSizeDirective.decorators = [
+        { type: i0.Directive, args: [{
+                    // tslint:disable-next-line:directive-selector
+                    selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',
+                },] }
+    ];
+    FaStackItemSizeDirective.propDecorators = {
+        stackItemSize: [{ type: i0.Input }],
+        size: [{ type: i0.Input }]
+    };
+
+    var FaStackComponent = /** @class */ (function () {
+        function FaStackComponent(renderer, elementRef) {
+            this.renderer = renderer;
+            this.elementRef = elementRef;
+        }
+        FaStackComponent.prototype.ngOnInit = function () {
+            this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');
+        };
+        FaStackComponent.prototype.ngOnChanges = function (changes) {
+            if ('size' in changes) {
+                if (changes.size.currentValue != null) {
+                    this.renderer.addClass(this.elementRef.nativeElement, "fa-" + changes.size.currentValue);
+                }
+                if (changes.size.previousValue != null) {
+                    this.renderer.removeClass(this.elementRef.nativeElement, "fa-" + changes.size.previousValue);
+                }
+            }
+        };
+        return FaStackComponent;
+    }());
+    FaStackComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-stack',
+                    template: "<ng-content></ng-content>"
+                },] }
+    ];
+    FaStackComponent.ctorParameters = function () { return [
+        { type: i0.Renderer2 },
+        { type: i0.ElementRef }
+    ]; };
+    FaStackComponent.propDecorators = {
+        size: [{ type: i0.Input }]
+    };
+
+    var FaIconComponent = /** @class */ (function () {
+        function FaIconComponent(sanitizer, config, iconLibrary, stackItem, stack) {
+            this.sanitizer = sanitizer;
+            this.config = config;
+            this.iconLibrary = iconLibrary;
+            this.stackItem = stackItem;
+            this.classes = [];
+            if (stack != null && stackItem == null) {
+                console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +
+                    'fa-stack. Example: <fa-icon stackItemSize="2x"></fa-icon>.');
+            }
+        }
+        FaIconComponent.prototype.ngOnChanges = function (changes) {
+            if (this.icon == null && this.config.fallbackIcon == null) {
+                return faWarnIfIconSpecMissing();
+            }
+            var iconToBeRendered = null;
+            if (this.icon == null) {
+                iconToBeRendered = this.config.fallbackIcon;
+            }
+            else {
+                iconToBeRendered = this.icon;
+            }
+            if (changes) {
+                var iconDefinition = this.findIconDefinition(iconToBeRendered);
+                if (iconDefinition != null) {
+                    var params = this.buildParams();
+                    this.renderIcon(iconDefinition, params);
+                }
+            }
+        };
+        /**
+         * Programmatically trigger rendering of the icon.
+         *
+         * This method is useful, when creating {@link FaIconComponent} dynamically or
+         * changing its inputs programmatically as in these cases icon won't be
+         * re-rendered automatically.
+         */
+        FaIconComponent.prototype.render = function () {
+            this.ngOnChanges({});
+        };
+        FaIconComponent.prototype.findIconDefinition = function (i) {
+            var lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);
+            if ('icon' in lookup) {
+                return lookup;
+            }
+            var definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);
+            if (definition != null) {
+                return definition;
+            }
+            var globalDefinition = fontawesomeSvgCore.findIconDefinition(lookup);
+            if (globalDefinition != null) {
+                var message = 'Global icon library is deprecated. ' +
+                    'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +
+                    'for the migration instructions.';
+                if (this.config.globalLibrary === 'unset') {
+                    console.error('FontAwesome: ' + message);
+                }
+                else if (!this.config.globalLibrary) {
+                    throw new Error(message);
+                }
+                return globalDefinition;
+            }
+            faWarnIfIconDefinitionMissing(lookup);
+            return null;
+        };
+        FaIconComponent.prototype.buildParams = function () {
+            var classOpts = {
+                flip: this.flip,
+                spin: this.spin,
+                pulse: this.pulse,
+                border: this.border,
+                inverse: this.inverse,
+                size: this.size || null,
+                pull: this.pull || null,
+                rotate: this.rotate || null,
+                fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,
+                stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,
+            };
+            var parsedTransform = typeof this.transform === 'string' ? fontawesomeSvgCore.parse.transform(this.transform) : this.transform;
+            return {
+                title: this.title,
+                transform: parsedTransform,
+                classes: __spread(faClassList(classOpts), this.classes),
+                mask: this.mask != null ? this.findIconDefinition(this.mask) : null,
+                styles: this.styles != null ? this.styles : {},
+                symbol: this.symbol,
+                attributes: {
+                    role: this.a11yRole,
+                },
+            };
+        };
+        FaIconComponent.prototype.renderIcon = function (definition, params) {
+            var renderedIcon = fontawesomeSvgCore.icon(definition, params);
+            this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\n'));
+        };
+        return FaIconComponent;
+    }());
+    FaIconComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-icon',
+                    template: "",
+                    host: {
+                        class: 'ng-fa-icon',
+                        '[attr.title]': 'title',
+                    }
+                },] }
+    ];
+    FaIconComponent.ctorParameters = function () { return [
+        { type: platformBrowser.DomSanitizer },
+        { type: FaConfig },
+        { type: FaIconLibrary },
+        { type: FaStackItemSizeDirective, decorators: [{ type: i0.Optional }] },
+        { type: FaStackComponent, decorators: [{ type: i0.Optional }] }
+    ]; };
+    FaIconComponent.propDecorators = {
+        icon: [{ type: i0.Input }],
+        title: [{ type: i0.Input }],
+        spin: [{ type: i0.Input }],
+        pulse: [{ type: i0.Input }],
+        mask: [{ type: i0.Input }],
+        styles: [{ type: i0.Input }],
+        flip: [{ type: i0.Input }],
+        size: [{ type: i0.Input }],
+        pull: [{ type: i0.Input }],
+        border: [{ type: i0.Input }],
+        inverse: [{ type: i0.Input }],
+        symbol: [{ type: i0.Input }],
+        rotate: [{ type: i0.Input }],
+        fixedWidth: [{ type: i0.Input }],
+        classes: [{ type: i0.Input }],
+        transform: [{ type: i0.Input }],
+        a11yRole: [{ type: i0.Input }],
+        renderedIconHTML: [{ type: i0.HostBinding, args: ['innerHTML',] }]
+    };
+
+    var FaDuotoneIconComponent = /** @class */ (function (_super) {
+        __extends(FaDuotoneIconComponent, _super);
+        function FaDuotoneIconComponent() {
+            return _super !== null && _super.apply(this, arguments) || this;
+        }
+        FaDuotoneIconComponent.prototype.findIconDefinition = function (i) {
+            var definition = _super.prototype.findIconDefinition.call(this, i);
+            if (definition != null && !Array.isArray(definition.icon[4])) {
+                throw new Error('The specified icon does not appear to be a Duotone icon. ' +
+                    'Check that you specified the correct style: ' +
+                    ("<fa-duotone-icon [icon]=\"['fad', '" + definition.iconName + "']\"></fa-duotone-icon> ") +
+                    ("or use: <fa-icon icon=\"" + definition.iconName + "\"></fa-icon> instead."));
+            }
+            return definition;
+        };
+        FaDuotoneIconComponent.prototype.buildParams = function () {
+            var params = _super.prototype.buildParams.call(this);
+            if (this.swapOpacity === true || this.swapOpacity === 'true') {
+                params.classes.push('fa-swap-opacity');
+            }
+            if (this.primaryOpacity != null) {
+                params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();
+            }
+            if (this.secondaryOpacity != null) {
+                params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();
+            }
+            if (this.primaryColor != null) {
+                params.styles['--fa-primary-color'] = this.primaryColor;
+            }
+            if (this.secondaryColor != null) {
+                params.styles['--fa-secondary-color'] = this.secondaryColor;
+            }
+            return params;
+        };
+        return FaDuotoneIconComponent;
+    }(FaIconComponent));
+    FaDuotoneIconComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-duotone-icon',
+                    template: ""
+                },] }
+    ];
+    FaDuotoneIconComponent.propDecorators = {
+        swapOpacity: [{ type: i0.Input }],
+        primaryOpacity: [{ type: i0.Input }],
+        secondaryOpacity: [{ type: i0.Input }],
+        primaryColor: [{ type: i0.Input }],
+        secondaryColor: [{ type: i0.Input }]
+    };
+
+    /**
+     * Warns if parent component not existing.
+     */
+    var faWarnIfParentNotExist = function (parent, parentName, childName) {
+        if (!parent) {
+            throw new Error(childName + " should be used as child of " + parentName + " only.");
+        }
+    };
+
+    /**
+     * Fontawesome layers.
+     */
+    var FaLayersComponent = /** @class */ (function () {
+        function FaLayersComponent(renderer, elementRef, config) {
+            this.renderer = renderer;
+            this.elementRef = elementRef;
+            this.config = config;
+        }
+        FaLayersComponent.prototype.ngOnInit = function () {
+            this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');
+            this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;
+        };
+        FaLayersComponent.prototype.ngOnChanges = function (changes) {
+            if ('size' in changes) {
+                if (changes.size.currentValue != null) {
+                    this.renderer.addClass(this.elementRef.nativeElement, "fa-" + changes.size.currentValue);
+                }
+                if (changes.size.previousValue != null) {
+                    this.renderer.removeClass(this.elementRef.nativeElement, "fa-" + changes.size.previousValue);
+                }
+            }
+        };
+        return FaLayersComponent;
+    }());
+    FaLayersComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-layers',
+                    template: "<ng-content></ng-content>"
+                },] }
+    ];
+    FaLayersComponent.ctorParameters = function () { return [
+        { type: i0.Renderer2 },
+        { type: i0.ElementRef },
+        { type: FaConfig }
+    ]; };
+    FaLayersComponent.propDecorators = {
+        size: [{ type: i0.Input }],
+        fixedWidth: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class.fa-fw',] }]
+    };
+
+    var FaLayersCounterComponent = /** @class */ (function () {
+        function FaLayersCounterComponent(parent, sanitizer) {
+            this.parent = parent;
+            this.sanitizer = sanitizer;
+            this.classes = [];
+            faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+        }
+        FaLayersCounterComponent.prototype.ngOnChanges = function (changes) {
+            if (changes) {
+                var params = this.buildParams();
+                this.updateContent(params);
+            }
+        };
+        FaLayersCounterComponent.prototype.buildParams = function () {
+            return {
+                title: this.title,
+                classes: this.classes,
+                styles: this.styles,
+            };
+        };
+        FaLayersCounterComponent.prototype.updateContent = function (params) {
+            this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(fontawesomeSvgCore.counter(this.content || '', params).html.join(''));
+        };
+        return FaLayersCounterComponent;
+    }());
+    FaLayersCounterComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-layers-counter',
+                    template: '',
+                    host: {
+                        class: 'ng-fa-layers-counter',
+                    }
+                },] }
+    ];
+    FaLayersCounterComponent.ctorParameters = function () { return [
+        { type: FaLayersComponent, decorators: [{ type: i0.Optional }] },
+        { type: platformBrowser.DomSanitizer }
+    ]; };
+    FaLayersCounterComponent.propDecorators = {
+        content: [{ type: i0.Input }],
+        title: [{ type: i0.Input }],
+        styles: [{ type: i0.Input }],
+        classes: [{ type: i0.Input }],
+        renderedHTML: [{ type: i0.HostBinding, args: ['innerHTML',] }]
+    };
+
+    var FaLayersTextComponent = /** @class */ (function () {
+        function FaLayersTextComponent(parent, sanitizer) {
+            this.parent = parent;
+            this.sanitizer = sanitizer;
+            this.classes = [];
+            faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+        }
+        FaLayersTextComponent.prototype.ngOnChanges = function (changes) {
+            if (changes) {
+                var params = this.buildParams();
+                this.updateContent(params);
+            }
+        };
+        /**
+         * Updating params by component props.
+         */
+        FaLayersTextComponent.prototype.buildParams = function () {
+            var classOpts = {
+                flip: this.flip,
+                spin: this.spin,
+                pulse: this.pulse,
+                border: this.border,
+                inverse: this.inverse,
+                size: this.size || null,
+                pull: this.pull || null,
+                rotate: this.rotate || null,
+                fixedWidth: this.fixedWidth,
+            };
+            var parsedTransform = typeof this.transform === 'string' ? fontawesomeSvgCore.parse.transform(this.transform) : this.transform;
+            return {
+                transform: parsedTransform,
+                classes: __spread(faClassList(classOpts), this.classes),
+                title: this.title,
+                styles: this.styles,
+            };
+        };
+        FaLayersTextComponent.prototype.updateContent = function (params) {
+            this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(fontawesomeSvgCore.text(this.content || '', params).html.join('\n'));
+        };
+        return FaLayersTextComponent;
+    }());
+    FaLayersTextComponent.decorators = [
+        { type: i0.Component, args: [{
+                    selector: 'fa-layers-text',
+                    template: '',
+                    host: {
+                        class: 'ng-fa-layers-text',
+                    }
+                },] }
+    ];
+    FaLayersTextComponent.ctorParameters = function () { return [
+        { type: FaLayersComponent, decorators: [{ type: i0.Optional }] },
+        { type: platformBrowser.DomSanitizer }
+    ]; };
+    FaLayersTextComponent.propDecorators = {
+        content: [{ type: i0.Input }],
+        title: [{ type: i0.Input }],
+        styles: [{ type: i0.Input }],
+        classes: [{ type: i0.Input }],
+        spin: [{ type: i0.Input }],
+        pulse: [{ type: i0.Input }],
+        flip: [{ type: i0.Input }],
+        size: [{ type: i0.Input }],
+        pull: [{ type: i0.Input }],
+        border: [{ type: i0.Input }],
+        inverse: [{ type: i0.Input }],
+        rotate: [{ type: i0.Input }],
+        fixedWidth: [{ type: i0.Input }],
+        transform: [{ type: i0.Input }],
+        renderedHTML: [{ type: i0.HostBinding, args: ['innerHTML',] }]
+    };
+
+    var FontAwesomeModule = /** @class */ (function () {
+        function FontAwesomeModule() {
+        }
+        return FontAwesomeModule;
+    }());
+    FontAwesomeModule.decorators = [
+        { type: i0.NgModule, args: [{
+                    declarations: [
+                        FaIconComponent,
+                        FaDuotoneIconComponent,
+                        FaLayersComponent,
+                        FaLayersTextComponent,
+                        FaLayersCounterComponent,
+                        FaStackComponent,
+                        FaStackItemSizeDirective,
+                    ],
+                    exports: [
+                        FaIconComponent,
+                        FaDuotoneIconComponent,
+                        FaLayersComponent,
+                        FaLayersTextComponent,
+                        FaLayersCounterComponent,
+                        FaStackComponent,
+                        FaStackItemSizeDirective,
+                    ],
+                },] }
+    ];
+
+    /**
+     * Generated bundle index. Do not edit.
+     */
+
+    exports.FaConfig = FaConfig;
+    exports.FaDuotoneIconComponent = FaDuotoneIconComponent;
+    exports.FaIconComponent = FaIconComponent;
+    exports.FaIconLibrary = FaIconLibrary;
+    exports.FaLayersComponent = FaLayersComponent;
+    exports.FaLayersCounterComponent = FaLayersCounterComponent;
+    exports.FaLayersTextComponent = FaLayersTextComponent;
+    exports.FaStackComponent = FaStackComponent;
+    exports.FaStackItemSizeDirective = FaStackItemSizeDirective;
+    exports.FontAwesomeModule = FontAwesomeModule;
+
+    Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=angular-fontawesome.umd.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"angular-fontawesome.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/lib/config.ts","../../../src/lib/icon-library.ts","../../../src/lib/shared/errors/warn-if-icon-html-missing.ts","../../../src/lib/shared/errors/warn-if-icon-spec-missing.ts","../../../src/lib/shared/utils/classlist.util.ts","../../../src/lib/shared/utils/is-icon-lookup.util.ts","../../../src/lib/shared/utils/normalize-icon-spec.util.ts","../../../src/lib/stack/stack-item-size.directive.ts","../../../src/lib/stack/stack.component.ts","../../../src/lib/icon/icon.component.ts","../../../src/lib/icon/duotone-icon.component.ts","../../../src/lib/shared/errors/warn-if-parent-not-exist.ts","../../../src/lib/layers/layers.component.ts","../../../src/lib/layers/layers-counter.component.ts","../../../src/lib/layers/layers-text.component.ts","../../../src/lib/fontawesome.module.ts","../../../src/lib/angular-fontawesome.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { IconDefinition, IconPrefix } from '@fortawesome/fontawesome-common-types';\nimport { FaIconLibrary } from './icon-library';\n\n@Injectable({ providedIn: 'root' })\nexport class FaConfig {\n  /**\n   * Default prefix to use, when one is not provided with the icon name.\n   *\n   * @default 'fas'\n   */\n  defaultPrefix: IconPrefix = 'fas';\n\n  /**\n   * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n   * When value is null, then fa-icon component will throw an error if icon input is missing.\n   * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n   *\n   * @default null\n   */\n  fallbackIcon: IconDefinition = null;\n\n  /**\n   * Set icons to the same fixed width.\n   * @see {@link: https://fontawesome.com/how-to-use/on-the-web/styling/fixed-width-icons}\n   * @default false\n   */\n  fixedWidth?: boolean;\n\n  /**\n   * Whether components should lookup icon definitions in the global icon\n   * library (the one available from\n   * `import { library } from '@fortawesome/fontawesome-svg-core')`.\n   *\n   * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md\n   * for detailed description of library modes.\n   *\n   * - 'unset' - Components should lookup icon definitions in the global library\n   * and emit warning if they find a definition there. This option is a default\n   * to assist existing applications with a migration. Applications are expected\n   * to switch to using {@link FaIconLibrary}.\n   * - true - Components should lookup icon definitions in the global library.\n   * Note that global icon library is deprecated and support for it will be\n   * removed. This option can be used to temporarily suppress warnings.\n   * - false - Components should not lookup icon definitions in the global\n   * library. Library will throw an error if missing icon is found in the global\n   * library.\n   *\n   * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will\n   * be changed to false. In 0.8.0 the option will be removed together with the\n   * support for the global icon library.\n   *\n   * @default false\n   */\n  globalLibrary: boolean | 'unset' = false;\n}\n","import { Injectable } from '@angular/core';\nimport { IconDefinition, IconName, IconPack, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport interface FaIconLibraryInterface {\n  addIcons(...icons: IconDefinition[]): void;\n  addIconPacks(...packs: IconPack[]): void;\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FaIconLibrary implements FaIconLibraryInterface {\n  private definitions: { [prefix: string]: { [name: string]: IconDefinition } } = {};\n\n  addIcons(...icons: IconDefinition[]) {\n    for (const icon of icons) {\n      if (!(icon.prefix in this.definitions)) {\n        this.definitions[icon.prefix] = {};\n      }\n      this.definitions[icon.prefix][icon.iconName] = icon;\n    }\n  }\n\n  addIconPacks(...packs: IconPack[]) {\n    for (const pack of packs) {\n      const icons = Object.keys(pack).map((key) => pack[key]);\n      this.addIcons(...icons);\n    }\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null {\n    if (prefix in this.definitions && name in this.definitions[prefix]) {\n      return this.definitions[prefix][name];\n    }\n    return null;\n  }\n}\n","import { IconLookup } from '@fortawesome/fontawesome-svg-core';\n\nexport const faWarnIfIconDefinitionMissing = (iconSpec: IconLookup) => {\n  throw new Error(\n    `Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`,\n  );\n};\n","export const faWarnIfIconSpecMissing = () => {\n  throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n","import { FaProps } from '../models/props.model';\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nexport const faClassList = (props: FaProps): string[] => {\n  const classes = {\n    'fa-spin': props.spin,\n    'fa-pulse': props.pulse,\n    'fa-fw': props.fixedWidth,\n    'fa-border': props.border,\n    'fa-inverse': props.inverse,\n    'fa-layers-counter': props.counter,\n    'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n    'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n    [`fa-${props.size}`]: props.size !== null,\n    [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n    [`fa-pull-${props.pull}`]: props.pull !== null,\n    [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n  };\n\n  return Object.keys(classes)\n    .map((key) => (classes[key] ? key : null))\n    .filter((key) => key);\n};\n","import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core';\n\n/**\n * Returns if is IconLookup or not.\n */\nexport const isIconLookup = (i: IconProp): i is IconLookup => {\n  return (i as IconLookup).prefix !== undefined && (i as IconLookup).iconName !== undefined;\n};\n","import { IconDefinition, IconLookup, IconPrefix, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { isIconLookup } from './is-icon-lookup.util';\n\n/**\n * Normalizing icon spec.\n */\nexport const faNormalizeIconSpec = (\n  iconSpec: IconProp | IconDefinition,\n  defaultPrefix: IconPrefix,\n): IconLookup | IconDefinition => {\n  if (isIconLookup(iconSpec)) {\n    return iconSpec;\n  }\n\n  if (Array.isArray(iconSpec) && (iconSpec as string[]).length === 2) {\n    return { prefix: iconSpec[0], iconName: iconSpec[1] };\n  }\n\n  if (typeof iconSpec === 'string') {\n    return { prefix: defaultPrefix, iconName: iconSpec };\n  }\n};\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaStackComponent } from './stack.component';\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',\n})\nexport class FaStackItemSizeDirective implements OnChanges {\n  /**\n   * Specify whether icon inside {@link FaStackComponent} should be rendered in\n   * regular size (1x) or as a larger icon (2x).\n   */\n  @Input() stackItemSize: '1x' | '2x' = '1x';\n\n  /**\n   * @internal\n   */\n  @Input() size?: SizeProp;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      throw new Error(\n        'fa-icon is not allowed to customize size when used inside fa-stack. ' +\n          'Set size on the enclosing fa-stack instead: <fa-stack size=\"4x\">...</fa-stack>.',\n      );\n    }\n  }\n}\n","import { Component, ElementRef, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\n\n@Component({\n  selector: 'fa-stack',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaStackComponent implements OnInit, OnChanges {\n  /**\n   * Size of the stacked icon.\n   * Note that stacked icon is by default 2 times bigger, than non-stacked icon.\n   * You'll need to set size using custom CSS to align stacked icon with a\n   * simple one. E.g. `fa-stack { font-size: 0.5em; }`.\n   */\n  @Input() size?: SizeProp;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FaSymbol,\n  findIconDefinition,\n  FlipProp,\n  icon,\n  IconDefinition,\n  IconParams,\n  IconProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\nimport { FaIconLibrary } from '../icon-library';\nimport { faWarnIfIconDefinitionMissing } from '../shared/errors/warn-if-icon-html-missing';\nimport { faWarnIfIconSpecMissing } from '../shared/errors/warn-if-icon-spec-missing';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { faNormalizeIconSpec } from '../shared/utils/normalize-icon-spec.util';\nimport { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';\nimport { FaStackComponent } from '../stack/stack.component';\n\n@Component({\n  selector: 'fa-icon',\n  template: ``,\n  host: {\n    class: 'ng-fa-icon',\n    '[attr.title]': 'title',\n  },\n})\nexport class FaIconComponent implements OnChanges {\n  @Input() icon: IconProp;\n\n  /**\n   * Specify a title for the icon.\n   * This text will be displayed in a tooltip on hover and presented to the\n   * screen readers.\n   */\n  @Input() title?: string;\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() mask?: IconProp;\n  @Input() styles?: Styles;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() symbol?: FaSymbol;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() classes?: string[] = [];\n  @Input() transform?: string | Transform;\n\n  /**\n   * Specify the `role` attribute for the rendered <svg> element.\n   *\n   * @default 'img'\n   */\n  @Input() a11yRole: string;\n\n  @HostBinding('innerHTML') renderedIconHTML: SafeHtml;\n\n  constructor(\n    private sanitizer: DomSanitizer,\n    private config: FaConfig,\n    private iconLibrary: FaIconLibrary,\n    @Optional() private stackItem: FaStackItemSizeDirective,\n    @Optional() stack: FaStackComponent,\n  ) {\n    if (stack != null && stackItem == null) {\n      console.error(\n        'FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n          'fa-stack. Example: <fa-icon stackItemSize=\"2x\"></fa-icon>.',\n      );\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.icon == null && this.config.fallbackIcon == null) {\n      return faWarnIfIconSpecMissing();\n    }\n\n    let iconToBeRendered: IconProp = null;\n    if (this.icon == null) {\n      iconToBeRendered = this.config.fallbackIcon;\n    } else {\n      iconToBeRendered = this.icon;\n    }\n\n    if (changes) {\n      const iconDefinition = this.findIconDefinition(iconToBeRendered);\n      if (iconDefinition != null) {\n        const params = this.buildParams();\n        this.renderIcon(iconDefinition, params);\n      }\n    }\n  }\n\n  /**\n   * Programmatically trigger rendering of the icon.\n   *\n   * This method is useful, when creating {@link FaIconComponent} dynamically or\n   * changing its inputs programmatically as in these cases icon won't be\n   * re-rendered automatically.\n   */\n  render() {\n    this.ngOnChanges({});\n  }\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n    if ('icon' in lookup) {\n      return lookup;\n    }\n\n    const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n    if (definition != null) {\n      return definition;\n    }\n\n    const globalDefinition = findIconDefinition(lookup);\n    if (globalDefinition != null) {\n      const message =\n        'Global icon library is deprecated. ' +\n        'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +\n        'for the migration instructions.';\n      if (this.config.globalLibrary === 'unset') {\n        console.error('FontAwesome: ' + message);\n      } else if (!this.config.globalLibrary) {\n        throw new Error(message);\n      }\n\n      return globalDefinition;\n    }\n\n    faWarnIfIconDefinitionMissing(lookup);\n    return null;\n  }\n\n  protected buildParams() {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n      stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      title: this.title,\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n      styles: this.styles != null ? this.styles : {},\n      symbol: this.symbol,\n      attributes: {\n        role: this.a11yRole,\n      },\n    };\n  }\n\n  private renderIcon(definition: IconDefinition, params: IconParams) {\n    const renderedIcon = icon(definition, params);\n    this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { IconDefinition, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaIconComponent } from './icon.component';\n\n@Component({\n  selector: 'fa-duotone-icon',\n  template: ``,\n})\nexport class FaDuotoneIconComponent extends FaIconComponent {\n  /**\n   * Swap the default opacity of each duotone icon’s layers. This will make an\n   * icon’s primary layer have the default opacity of 40% rather than its\n   * secondary layer.\n   *\n   * @default false\n   */\n  @Input() swapOpacity?: 'true' | 'false' | boolean;\n\n  /**\n   * Customize the opacity of the primary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 1.0\n   */\n  @Input() primaryOpacity?: string | number;\n\n  /**\n   * Customize the opacity of the secondary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 0.4\n   */\n  @Input() secondaryOpacity?: string | number;\n\n  /**\n   * Customize the color of the primary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() primaryColor?: string;\n\n  /**\n   * Customize the color of the secondary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() secondaryColor?: string;\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const definition = super.findIconDefinition(i);\n\n    if (definition != null && !Array.isArray(definition.icon[4])) {\n      throw new Error(\n        'The specified icon does not appear to be a Duotone icon. ' +\n          'Check that you specified the correct style: ' +\n          `<fa-duotone-icon [icon]=\"['fad', '${definition.iconName}']\"></fa-duotone-icon> ` +\n          `or use: <fa-icon icon=\"${definition.iconName}\"></fa-icon> instead.`,\n      );\n    }\n\n    return definition;\n  }\n\n  protected buildParams() {\n    const params = super.buildParams();\n\n    if (this.swapOpacity === true || this.swapOpacity === 'true') {\n      params.classes.push('fa-swap-opacity');\n    }\n    if (this.primaryOpacity != null) {\n      params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n    }\n    if (this.secondaryOpacity != null) {\n      params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n    }\n    if (this.primaryColor != null) {\n      params.styles['--fa-primary-color'] = this.primaryColor;\n    }\n    if (this.secondaryColor != null) {\n      params.styles['--fa-secondary-color'] = this.secondaryColor;\n    }\n\n    return params;\n  }\n}\n","/**\n * Warns if parent component not existing.\n */\nexport const faWarnIfParentNotExist = (parent: any, parentName: string, childName: string) => {\n  if (!parent) {\n    throw new Error(`${childName} should be used as child of ${parentName} only.`);\n  }\n};\n","import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\n\n/**\n * Fontawesome layers.\n */\n@Component({\n  selector: 'fa-layers',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaLayersComponent implements OnInit, OnChanges {\n  @Input() size?: SizeProp;\n\n  @Input() @HostBinding('class.fa-fw') fixedWidth?: boolean;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef, private config: FaConfig) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n    this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { counter, CounterParams, Styles } from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-counter',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-counter',\n  },\n})\nexport class FaLayersCounterComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  protected buildParams(): CounterParams {\n    return {\n      title: this.title,\n      classes: this.classes,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: CounterParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FlipProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  text,\n  TextParams,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-text',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-text',\n  },\n})\nexport class FaLayersTextComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() transform?: string | Transform;\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  /**\n   * Updating params by component props.\n   */\n  protected buildParams(): TextParams {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: this.fixedWidth,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      title: this.title,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: TextParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaDuotoneIconComponent } from './icon/duotone-icon.component';\nimport { FaIconComponent } from './icon/icon.component';\nimport { FaLayersCounterComponent } from './layers/layers-counter.component';\nimport { FaLayersTextComponent } from './layers/layers-text.component';\nimport { FaLayersComponent } from './layers/layers.component';\nimport { FaStackItemSizeDirective } from './stack/stack-item-size.directive';\nimport { FaStackComponent } from './stack/stack.component';\n\n@NgModule({\n  declarations: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n  exports: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n})\nexport class FontAwesomeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Injectable","Directive","Input","Component","Renderer2","ElementRef","findIconDefinition","parse","icon","DomSanitizer","Optional","HostBinding","counter","text","NgModule"],"mappings":"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"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/platform-browser"),require("@fortawesome/fontawesome-svg-core")):"function"==typeof define&&define.amd?define("@fortawesome/angular-fontawesome",["exports","@angular/core","@angular/platform-browser","@fortawesome/fontawesome-svg-core"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).fortawesome=t.fortawesome||{},t.fortawesome["angular-fontawesome"]={}),t.ng.core,t.ng.platformBrowser,t.fontawesomeSvgCore)}(this,(function(t,e,n,r){"use strict";
+/*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */var o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};Object.create;function i(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function a(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t}Object.create;var l=function(){this.defaultPrefix="fas",this.fallbackIcon=null,this.globalLibrary=!1};l.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new l},token:l,providedIn:"root"}),l.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}];var p=function(){function t(){this.definitions={}}return t.prototype.addIcons=function(){for(var t,e,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];try{for(var o=i(n),s=o.next();!s.done;s=o.next()){var a=s.value;a.prefix in this.definitions||(this.definitions[a.prefix]={}),this.definitions[a.prefix][a.iconName]=a}}catch(e){t={error:e}}finally{try{s&&!s.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}},t.prototype.addIconPacks=function(){for(var t,e,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var o=function(t){var e=Object.keys(t).map((function(e){return t[e]}));s.addIcons.apply(s,a(e))},s=this;try{for(var l=i(n),p=l.next();!p.done;p=l.next()){var c=p.value;o(c)}}catch(e){t={error:e}}finally{try{p&&!p.done&&(e=l.return)&&e.call(l)}finally{if(t)throw t.error}}},t.prototype.getIconDefinition=function(t,e){return t in this.definitions&&e in this.definitions[t]?this.definitions[t][e]:null},t}();p.ɵprov=e.ɵɵdefineInjectable({factory:function(){return new p},token:p,providedIn:"root"}),p.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}];var c=function(t){var e,n=((e={"fa-spin":t.spin,"fa-pulse":t.pulse,"fa-fw":t.fixedWidth,"fa-border":t.border,"fa-inverse":t.inverse,"fa-layers-counter":t.counter,"fa-flip-horizontal":"horizontal"===t.flip||"both"===t.flip,"fa-flip-vertical":"vertical"===t.flip||"both"===t.flip})["fa-"+t.size]=null!==t.size,e["fa-rotate-"+t.rotate]=null!==t.rotate,e["fa-pull-"+t.pull]=null!==t.pull,e["fa-stack-"+t.stackItemSize]=null!=t.stackItemSize,e);return Object.keys(n).map((function(t){return n[t]?t:null})).filter((function(t){return t}))},u=function(){function t(){this.stackItemSize="1x"}return t.prototype.ngOnChanges=function(t){if("size"in t)throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. Set size on the enclosing fa-stack instead: <fa-stack size="4x">...</fa-stack>.')},t}();u.decorators=[{type:e.Directive,args:[{selector:"fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]"}]}],u.propDecorators={stackItemSize:[{type:e.Input}],size:[{type:e.Input}]};var f=function(){function t(t,e){this.renderer=t,this.elementRef=e}return t.prototype.ngOnInit=function(){this.renderer.addClass(this.elementRef.nativeElement,"fa-stack")},t.prototype.ngOnChanges=function(t){"size"in t&&(null!=t.size.currentValue&&this.renderer.addClass(this.elementRef.nativeElement,"fa-"+t.size.currentValue),null!=t.size.previousValue&&this.renderer.removeClass(this.elementRef.nativeElement,"fa-"+t.size.previousValue))},t}();f.decorators=[{type:e.Component,args:[{selector:"fa-stack",template:"<ng-content></ng-content>"}]}],f.ctorParameters=function(){return[{type:e.Renderer2},{type:e.ElementRef}]},f.propDecorators={size:[{type:e.Input}]};var y=function(){function t(t,e,n,r,o){this.sanitizer=t,this.config=e,this.iconLibrary=n,this.stackItem=r,this.classes=[],null!=o&&null==r&&console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into fa-stack. Example: <fa-icon stackItemSize="2x"></fa-icon>.')}return t.prototype.ngOnChanges=function(t){if(null==this.icon&&null==this.config.fallbackIcon)return function(){throw new Error("Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.")}();var e=null;if(e=null==this.icon?this.config.fallbackIcon:this.icon,t){var n=this.findIconDefinition(e);if(null!=n){var r=this.buildParams();this.renderIcon(n,r)}}},t.prototype.render=function(){this.ngOnChanges({})},t.prototype.findIconDefinition=function(t){var e=function(t,e){return void 0!==(n=t).prefix&&void 0!==n.iconName?t:Array.isArray(t)&&2===t.length?{prefix:t[0],iconName:t[1]}:"string"==typeof t?{prefix:e,iconName:t}:void 0;var n}(t,this.config.defaultPrefix);if("icon"in e)return e;var n=this.iconLibrary.getIconDefinition(e.prefix,e.iconName);if(null!=n)return n;var o=r.findIconDefinition(e);if(null!=o){var i="Global icon library is deprecated. Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md for the migration instructions.";if("unset"===this.config.globalLibrary)console.error("FontAwesome: "+i);else if(!this.config.globalLibrary)throw new Error(i);return o}return function(t){throw new Error("Could not find icon with iconName="+t.iconName+" and prefix="+t.prefix+" in the icon library.")}(e),null},t.prototype.buildParams=function(){var t={flip:this.flip,spin:this.spin,pulse:this.pulse,border:this.border,inverse:this.inverse,size:this.size||null,pull:this.pull||null,rotate:this.rotate||null,fixedWidth:"boolean"==typeof this.fixedWidth?this.fixedWidth:this.config.fixedWidth,stackItemSize:null!=this.stackItem?this.stackItem.stackItemSize:null},e="string"==typeof this.transform?r.parse.transform(this.transform):this.transform;return{title:this.title,transform:e,classes:a(c(t),this.classes),mask:null!=this.mask?this.findIconDefinition(this.mask):null,styles:null!=this.styles?this.styles:{},symbol:this.symbol,attributes:{role:this.a11yRole}}},t.prototype.renderIcon=function(t,e){var n=r.icon(t,e);this.renderedIconHTML=this.sanitizer.bypassSecurityTrustHtml(n.html.join("\n"))},t}();y.decorators=[{type:e.Component,args:[{selector:"fa-icon",template:"",host:{class:"ng-fa-icon","[attr.title]":"title"}}]}],y.ctorParameters=function(){return[{type:n.DomSanitizer},{type:l},{type:p},{type:u,decorators:[{type:e.Optional}]},{type:f,decorators:[{type:e.Optional}]}]},y.propDecorators={icon:[{type:e.Input}],title:[{type:e.Input}],spin:[{type:e.Input}],pulse:[{type:e.Input}],mask:[{type:e.Input}],styles:[{type:e.Input}],flip:[{type:e.Input}],size:[{type:e.Input}],pull:[{type:e.Input}],border:[{type:e.Input}],inverse:[{type:e.Input}],symbol:[{type:e.Input}],rotate:[{type:e.Input}],fixedWidth:[{type:e.Input}],classes:[{type:e.Input}],transform:[{type:e.Input}],a11yRole:[{type:e.Input}],renderedIconHTML:[{type:e.HostBinding,args:["innerHTML"]}]};var h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}(e,t),e.prototype.findIconDefinition=function(e){var n=t.prototype.findIconDefinition.call(this,e);if(null!=n&&!Array.isArray(n.icon[4]))throw new Error("The specified icon does not appear to be a Duotone icon. Check that you specified the correct style: <fa-duotone-icon [icon]=\"['fad', '"+n.iconName+'\']"></fa-duotone-icon> or use: <fa-icon icon="'+n.iconName+'"></fa-icon> instead.');return n},e.prototype.buildParams=function(){var e=t.prototype.buildParams.call(this);return!0!==this.swapOpacity&&"true"!==this.swapOpacity||e.classes.push("fa-swap-opacity"),null!=this.primaryOpacity&&(e.styles["--fa-primary-opacity"]=this.primaryOpacity.toString()),null!=this.secondaryOpacity&&(e.styles["--fa-secondary-opacity"]=this.secondaryOpacity.toString()),null!=this.primaryColor&&(e.styles["--fa-primary-color"]=this.primaryColor),null!=this.secondaryColor&&(e.styles["--fa-secondary-color"]=this.secondaryColor),e},e}(y);h.decorators=[{type:e.Component,args:[{selector:"fa-duotone-icon",template:""}]}],h.propDecorators={swapOpacity:[{type:e.Input}],primaryOpacity:[{type:e.Input}],secondaryOpacity:[{type:e.Input}],primaryColor:[{type:e.Input}],secondaryColor:[{type:e.Input}]};var d=function(t,e,n){if(!t)throw new Error(n+" should be used as child of "+e+" only.")},m=function(){function t(t,e,n){this.renderer=t,this.elementRef=e,this.config=n}return t.prototype.ngOnInit=function(){this.renderer.addClass(this.elementRef.nativeElement,"fa-layers"),this.fixedWidth="boolean"==typeof this.fixedWidth?this.fixedWidth:this.config.fixedWidth},t.prototype.ngOnChanges=function(t){"size"in t&&(null!=t.size.currentValue&&this.renderer.addClass(this.elementRef.nativeElement,"fa-"+t.size.currentValue),null!=t.size.previousValue&&this.renderer.removeClass(this.elementRef.nativeElement,"fa-"+t.size.previousValue))},t}();m.decorators=[{type:e.Component,args:[{selector:"fa-layers",template:"<ng-content></ng-content>"}]}],m.ctorParameters=function(){return[{type:e.Renderer2},{type:e.ElementRef},{type:l}]},m.propDecorators={size:[{type:e.Input}],fixedWidth:[{type:e.Input},{type:e.HostBinding,args:["class.fa-fw"]}]};var I=function(){function t(t,e){this.parent=t,this.sanitizer=e,this.classes=[],d(this.parent,"FaLayersComponent",this.constructor.name)}return t.prototype.ngOnChanges=function(t){if(t){var e=this.buildParams();this.updateContent(e)}},t.prototype.buildParams=function(){return{title:this.title,classes:this.classes,styles:this.styles}},t.prototype.updateContent=function(t){this.renderedHTML=this.sanitizer.bypassSecurityTrustHtml(r.counter(this.content||"",t).html.join(""))},t}();I.decorators=[{type:e.Component,args:[{selector:"fa-layers-counter",template:"",host:{class:"ng-fa-layers-counter"}}]}],I.ctorParameters=function(){return[{type:m,decorators:[{type:e.Optional}]},{type:n.DomSanitizer}]},I.propDecorators={content:[{type:e.Input}],title:[{type:e.Input}],styles:[{type:e.Input}],classes:[{type:e.Input}],renderedHTML:[{type:e.HostBinding,args:["innerHTML"]}]};var g=function(){function t(t,e){this.parent=t,this.sanitizer=e,this.classes=[],d(this.parent,"FaLayersComponent",this.constructor.name)}return t.prototype.ngOnChanges=function(t){if(t){var e=this.buildParams();this.updateContent(e)}},t.prototype.buildParams=function(){var t={flip:this.flip,spin:this.spin,pulse:this.pulse,border:this.border,inverse:this.inverse,size:this.size||null,pull:this.pull||null,rotate:this.rotate||null,fixedWidth:this.fixedWidth};return{transform:"string"==typeof this.transform?r.parse.transform(this.transform):this.transform,classes:a(c(t),this.classes),title:this.title,styles:this.styles}},t.prototype.updateContent=function(t){this.renderedHTML=this.sanitizer.bypassSecurityTrustHtml(r.text(this.content||"",t).html.join("\n"))},t}();g.decorators=[{type:e.Component,args:[{selector:"fa-layers-text",template:"",host:{class:"ng-fa-layers-text"}}]}],g.ctorParameters=function(){return[{type:m,decorators:[{type:e.Optional}]},{type:n.DomSanitizer}]},g.propDecorators={content:[{type:e.Input}],title:[{type:e.Input}],styles:[{type:e.Input}],classes:[{type:e.Input}],spin:[{type:e.Input}],pulse:[{type:e.Input}],flip:[{type:e.Input}],size:[{type:e.Input}],pull:[{type:e.Input}],border:[{type:e.Input}],inverse:[{type:e.Input}],rotate:[{type:e.Input}],fixedWidth:[{type:e.Input}],transform:[{type:e.Input}],renderedHTML:[{type:e.HostBinding,args:["innerHTML"]}]};var v=function(){};v.decorators=[{type:e.NgModule,args:[{declarations:[y,h,m,g,I,f,u],exports:[y,h,m,g,I,f,u]}]}],t.FaConfig=l,t.FaDuotoneIconComponent=h,t.FaIconComponent=y,t.FaIconLibrary=p,t.FaLayersComponent=m,t.FaLayersCounterComponent=I,t.FaLayersTextComponent=g,t.FaStackComponent=f,t.FaStackItemSizeDirective=u,t.FontAwesomeModule=v,Object.defineProperty(t,"__esModule",{value:!0})}));
+//# sourceMappingURL=angular-fontawesome.umd.min.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/angular-fontawesome.umd.min.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../src/lib/config.ts","../../../src/lib/icon-library.ts","../../../src/lib/shared/errors/warn-if-icon-html-missing.ts","../../../src/lib/shared/utils/classlist.util.ts","../../../src/lib/stack/stack-item-size.directive.ts","../../../src/lib/stack/stack.component.ts","../../../src/lib/icon/icon.component.ts","../../../src/lib/shared/errors/warn-if-icon-spec-missing.ts","../../../src/lib/shared/utils/normalize-icon-spec.util.ts","../../../src/lib/shared/utils/is-icon-lookup.util.ts","../../../src/lib/icon/duotone-icon.component.ts","../../../src/lib/shared/errors/warn-if-parent-not-exist.ts","../../../src/lib/layers/layers.component.ts","../../../src/lib/layers/layers-counter.component.ts","../../../src/lib/layers/layers-text.component.ts","../../../src/lib/fontawesome.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","create","__values","o","s","Symbol","iterator","m","i","length","next","value","done","TypeError","__read","n","r","e","ar","push","error","__spread","arguments","concat","this","defaultPrefix","fallbackIcon","globalLibrary","Injectable","args","providedIn","FaIconLibrary","definitions","addIcons","icons","_i","icons_1","icons_1_1","icon","prefix","iconName","addIconPacks","packs","pack","keys","map","key","this_1","apply","packs_1","packs_1_1","getIconDefinition","name","faClassList","props","classes","_a","fa-spin","spin","fa-pulse","pulse","fa-fw","fixedWidth","fa-border","border","fa-inverse","inverse","fa-layers-counter","counter","fa-flip-horizontal","flip","fa-flip-vertical","size","rotate","pull","stackItemSize","filter","FaStackItemSizeDirective","ngOnChanges","changes","Error","Directive","selector","Input","FaStackComponent","renderer","elementRef","ngOnInit","addClass","nativeElement","currentValue","previousValue","removeClass","Component","template","Renderer2","ElementRef","FaIconComponent","sanitizer","config","iconLibrary","stackItem","stack","console","faWarnIfIconSpecMissing","iconToBeRendered","iconDefinition","findIconDefinition","params","buildParams","renderIcon","render","lookup","iconSpec","undefined","isArray","faNormalizeIconSpec","definition","globalDefinition","message","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","transform","parse","title","mask","styles","symbol","attributes","role","a11yRole","renderedIcon","renderedIconHTML","bypassSecurityTrustHtml","html","join","host","class","[attr.title]","DomSanitizer","FaConfig","decorators","type","Optional","HostBinding","FaDuotoneIconComponent","String","__","constructor","__extends","_super","swapOpacity","primaryOpacity","toString","secondaryOpacity","primaryColor","secondaryColor","faWarnIfParentNotExist","parent","parentName","childName","FaLayersComponent","FaLayersCounterComponent","updateContent","renderedHTML","content","FaLayersTextComponent","text","NgModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { IconDefinition, IconPrefix } from '@fortawesome/fontawesome-common-types';\nimport { FaIconLibrary } from './icon-library';\n\n@Injectable({ providedIn: 'root' })\nexport class FaConfig {\n  /**\n   * Default prefix to use, when one is not provided with the icon name.\n   *\n   * @default 'fas'\n   */\n  defaultPrefix: IconPrefix = 'fas';\n\n  /**\n   * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n   * When value is null, then fa-icon component will throw an error if icon input is missing.\n   * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n   *\n   * @default null\n   */\n  fallbackIcon: IconDefinition = null;\n\n  /**\n   * Set icons to the same fixed width.\n   * @see {@link: https://fontawesome.com/how-to-use/on-the-web/styling/fixed-width-icons}\n   * @default false\n   */\n  fixedWidth?: boolean;\n\n  /**\n   * Whether components should lookup icon definitions in the global icon\n   * library (the one available from\n   * `import { library } from '@fortawesome/fontawesome-svg-core')`.\n   *\n   * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md\n   * for detailed description of library modes.\n   *\n   * - 'unset' - Components should lookup icon definitions in the global library\n   * and emit warning if they find a definition there. This option is a default\n   * to assist existing applications with a migration. Applications are expected\n   * to switch to using {@link FaIconLibrary}.\n   * - true - Components should lookup icon definitions in the global library.\n   * Note that global icon library is deprecated and support for it will be\n   * removed. This option can be used to temporarily suppress warnings.\n   * - false - Components should not lookup icon definitions in the global\n   * library. Library will throw an error if missing icon is found in the global\n   * library.\n   *\n   * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will\n   * be changed to false. In 0.8.0 the option will be removed together with the\n   * support for the global icon library.\n   *\n   * @default false\n   */\n  globalLibrary: boolean | 'unset' = false;\n}\n","import { Injectable } from '@angular/core';\nimport { IconDefinition, IconName, IconPack, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport interface FaIconLibraryInterface {\n  addIcons(...icons: IconDefinition[]): void;\n  addIconPacks(...packs: IconPack[]): void;\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FaIconLibrary implements FaIconLibraryInterface {\n  private definitions: { [prefix: string]: { [name: string]: IconDefinition } } = {};\n\n  addIcons(...icons: IconDefinition[]) {\n    for (const icon of icons) {\n      if (!(icon.prefix in this.definitions)) {\n        this.definitions[icon.prefix] = {};\n      }\n      this.definitions[icon.prefix][icon.iconName] = icon;\n    }\n  }\n\n  addIconPacks(...packs: IconPack[]) {\n    for (const pack of packs) {\n      const icons = Object.keys(pack).map((key) => pack[key]);\n      this.addIcons(...icons);\n    }\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null {\n    if (prefix in this.definitions && name in this.definitions[prefix]) {\n      return this.definitions[prefix][name];\n    }\n    return null;\n  }\n}\n","import { IconLookup } from '@fortawesome/fontawesome-svg-core';\n\nexport const faWarnIfIconDefinitionMissing = (iconSpec: IconLookup) => {\n  throw new Error(\n    `Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`,\n  );\n};\n","import { FaProps } from '../models/props.model';\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nexport const faClassList = (props: FaProps): string[] => {\n  const classes = {\n    'fa-spin': props.spin,\n    'fa-pulse': props.pulse,\n    'fa-fw': props.fixedWidth,\n    'fa-border': props.border,\n    'fa-inverse': props.inverse,\n    'fa-layers-counter': props.counter,\n    'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n    'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n    [`fa-${props.size}`]: props.size !== null,\n    [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n    [`fa-pull-${props.pull}`]: props.pull !== null,\n    [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n  };\n\n  return Object.keys(classes)\n    .map((key) => (classes[key] ? key : null))\n    .filter((key) => key);\n};\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaStackComponent } from './stack.component';\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',\n})\nexport class FaStackItemSizeDirective implements OnChanges {\n  /**\n   * Specify whether icon inside {@link FaStackComponent} should be rendered in\n   * regular size (1x) or as a larger icon (2x).\n   */\n  @Input() stackItemSize: '1x' | '2x' = '1x';\n\n  /**\n   * @internal\n   */\n  @Input() size?: SizeProp;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      throw new Error(\n        'fa-icon is not allowed to customize size when used inside fa-stack. ' +\n          'Set size on the enclosing fa-stack instead: <fa-stack size=\"4x\">...</fa-stack>.',\n      );\n    }\n  }\n}\n","import { Component, ElementRef, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\n\n@Component({\n  selector: 'fa-stack',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaStackComponent implements OnInit, OnChanges {\n  /**\n   * Size of the stacked icon.\n   * Note that stacked icon is by default 2 times bigger, than non-stacked icon.\n   * You'll need to set size using custom CSS to align stacked icon with a\n   * simple one. E.g. `fa-stack { font-size: 0.5em; }`.\n   */\n  @Input() size?: SizeProp;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FaSymbol,\n  findIconDefinition,\n  FlipProp,\n  icon,\n  IconDefinition,\n  IconParams,\n  IconProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\nimport { FaIconLibrary } from '../icon-library';\nimport { faWarnIfIconDefinitionMissing } from '../shared/errors/warn-if-icon-html-missing';\nimport { faWarnIfIconSpecMissing } from '../shared/errors/warn-if-icon-spec-missing';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { faNormalizeIconSpec } from '../shared/utils/normalize-icon-spec.util';\nimport { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';\nimport { FaStackComponent } from '../stack/stack.component';\n\n@Component({\n  selector: 'fa-icon',\n  template: ``,\n  host: {\n    class: 'ng-fa-icon',\n    '[attr.title]': 'title',\n  },\n})\nexport class FaIconComponent implements OnChanges {\n  @Input() icon: IconProp;\n\n  /**\n   * Specify a title for the icon.\n   * This text will be displayed in a tooltip on hover and presented to the\n   * screen readers.\n   */\n  @Input() title?: string;\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() mask?: IconProp;\n  @Input() styles?: Styles;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() symbol?: FaSymbol;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() classes?: string[] = [];\n  @Input() transform?: string | Transform;\n\n  /**\n   * Specify the `role` attribute for the rendered <svg> element.\n   *\n   * @default 'img'\n   */\n  @Input() a11yRole: string;\n\n  @HostBinding('innerHTML') renderedIconHTML: SafeHtml;\n\n  constructor(\n    private sanitizer: DomSanitizer,\n    private config: FaConfig,\n    private iconLibrary: FaIconLibrary,\n    @Optional() private stackItem: FaStackItemSizeDirective,\n    @Optional() stack: FaStackComponent,\n  ) {\n    if (stack != null && stackItem == null) {\n      console.error(\n        'FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n          'fa-stack. Example: <fa-icon stackItemSize=\"2x\"></fa-icon>.',\n      );\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.icon == null && this.config.fallbackIcon == null) {\n      return faWarnIfIconSpecMissing();\n    }\n\n    let iconToBeRendered: IconProp = null;\n    if (this.icon == null) {\n      iconToBeRendered = this.config.fallbackIcon;\n    } else {\n      iconToBeRendered = this.icon;\n    }\n\n    if (changes) {\n      const iconDefinition = this.findIconDefinition(iconToBeRendered);\n      if (iconDefinition != null) {\n        const params = this.buildParams();\n        this.renderIcon(iconDefinition, params);\n      }\n    }\n  }\n\n  /**\n   * Programmatically trigger rendering of the icon.\n   *\n   * This method is useful, when creating {@link FaIconComponent} dynamically or\n   * changing its inputs programmatically as in these cases icon won't be\n   * re-rendered automatically.\n   */\n  render() {\n    this.ngOnChanges({});\n  }\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n    if ('icon' in lookup) {\n      return lookup;\n    }\n\n    const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n    if (definition != null) {\n      return definition;\n    }\n\n    const globalDefinition = findIconDefinition(lookup);\n    if (globalDefinition != null) {\n      const message =\n        'Global icon library is deprecated. ' +\n        'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +\n        'for the migration instructions.';\n      if (this.config.globalLibrary === 'unset') {\n        console.error('FontAwesome: ' + message);\n      } else if (!this.config.globalLibrary) {\n        throw new Error(message);\n      }\n\n      return globalDefinition;\n    }\n\n    faWarnIfIconDefinitionMissing(lookup);\n    return null;\n  }\n\n  protected buildParams() {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n      stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      title: this.title,\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n      styles: this.styles != null ? this.styles : {},\n      symbol: this.symbol,\n      attributes: {\n        role: this.a11yRole,\n      },\n    };\n  }\n\n  private renderIcon(definition: IconDefinition, params: IconParams) {\n    const renderedIcon = icon(definition, params);\n    this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n  }\n}\n","export const faWarnIfIconSpecMissing = () => {\n  throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n","import { IconDefinition, IconLookup, IconPrefix, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { isIconLookup } from './is-icon-lookup.util';\n\n/**\n * Normalizing icon spec.\n */\nexport const faNormalizeIconSpec = (\n  iconSpec: IconProp | IconDefinition,\n  defaultPrefix: IconPrefix,\n): IconLookup | IconDefinition => {\n  if (isIconLookup(iconSpec)) {\n    return iconSpec;\n  }\n\n  if (Array.isArray(iconSpec) && (iconSpec as string[]).length === 2) {\n    return { prefix: iconSpec[0], iconName: iconSpec[1] };\n  }\n\n  if (typeof iconSpec === 'string') {\n    return { prefix: defaultPrefix, iconName: iconSpec };\n  }\n};\n","import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core';\n\n/**\n * Returns if is IconLookup or not.\n */\nexport const isIconLookup = (i: IconProp): i is IconLookup => {\n  return (i as IconLookup).prefix !== undefined && (i as IconLookup).iconName !== undefined;\n};\n","import { Component, Input } from '@angular/core';\nimport { IconDefinition, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaIconComponent } from './icon.component';\n\n@Component({\n  selector: 'fa-duotone-icon',\n  template: ``,\n})\nexport class FaDuotoneIconComponent extends FaIconComponent {\n  /**\n   * Swap the default opacity of each duotone icon’s layers. This will make an\n   * icon’s primary layer have the default opacity of 40% rather than its\n   * secondary layer.\n   *\n   * @default false\n   */\n  @Input() swapOpacity?: 'true' | 'false' | boolean;\n\n  /**\n   * Customize the opacity of the primary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 1.0\n   */\n  @Input() primaryOpacity?: string | number;\n\n  /**\n   * Customize the opacity of the secondary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 0.4\n   */\n  @Input() secondaryOpacity?: string | number;\n\n  /**\n   * Customize the color of the primary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() primaryColor?: string;\n\n  /**\n   * Customize the color of the secondary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() secondaryColor?: string;\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const definition = super.findIconDefinition(i);\n\n    if (definition != null && !Array.isArray(definition.icon[4])) {\n      throw new Error(\n        'The specified icon does not appear to be a Duotone icon. ' +\n          'Check that you specified the correct style: ' +\n          `<fa-duotone-icon [icon]=\"['fad', '${definition.iconName}']\"></fa-duotone-icon> ` +\n          `or use: <fa-icon icon=\"${definition.iconName}\"></fa-icon> instead.`,\n      );\n    }\n\n    return definition;\n  }\n\n  protected buildParams() {\n    const params = super.buildParams();\n\n    if (this.swapOpacity === true || this.swapOpacity === 'true') {\n      params.classes.push('fa-swap-opacity');\n    }\n    if (this.primaryOpacity != null) {\n      params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n    }\n    if (this.secondaryOpacity != null) {\n      params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n    }\n    if (this.primaryColor != null) {\n      params.styles['--fa-primary-color'] = this.primaryColor;\n    }\n    if (this.secondaryColor != null) {\n      params.styles['--fa-secondary-color'] = this.secondaryColor;\n    }\n\n    return params;\n  }\n}\n","/**\n * Warns if parent component not existing.\n */\nexport const faWarnIfParentNotExist = (parent: any, parentName: string, childName: string) => {\n  if (!parent) {\n    throw new Error(`${childName} should be used as child of ${parentName} only.`);\n  }\n};\n","import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\n\n/**\n * Fontawesome layers.\n */\n@Component({\n  selector: 'fa-layers',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaLayersComponent implements OnInit, OnChanges {\n  @Input() size?: SizeProp;\n\n  @Input() @HostBinding('class.fa-fw') fixedWidth?: boolean;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef, private config: FaConfig) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n    this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { counter, CounterParams, Styles } from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-counter',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-counter',\n  },\n})\nexport class FaLayersCounterComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  protected buildParams(): CounterParams {\n    return {\n      title: this.title,\n      classes: this.classes,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: CounterParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FlipProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  text,\n  TextParams,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-text',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-text',\n  },\n})\nexport class FaLayersTextComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() transform?: string | Transform;\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  /**\n   * Updating params by component props.\n   */\n  protected buildParams(): TextParams {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: this.fixedWidth,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      title: this.title,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: TextParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaDuotoneIconComponent } from './icon/duotone-icon.component';\nimport { FaIconComponent } from './icon/icon.component';\nimport { FaLayersCounterComponent } from './layers/layers-counter.component';\nimport { FaLayersTextComponent } from './layers/layers-text.component';\nimport { FaLayersComponent } from './layers/layers.component';\nimport { FaStackItemSizeDirective } from './stack/stack-item-size.directive';\nimport { FaStackComponent } from './stack/stack.component';\n\n@NgModule({\n  declarations: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n  exports: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n})\nexport class FontAwesomeModule {}\n"]}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,55 @@
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@fortawesome/angular-fontawesome')) :
+    typeof define === 'function' && define.amd ? define('@fortawesome/angular-fontawesome/testing', ['exports', '@angular/core', '@fortawesome/angular-fontawesome'], factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.fortawesome = global.fortawesome || {}, global.fortawesome['angular-fontawesome'] = global.fortawesome['angular-fontawesome'] || {}, global.fortawesome['angular-fontawesome'].testing = {}), global.ng.core, global.fortawesome['angular-fontawesome']));
+}(this, (function (exports, i0, angularFontawesome) { 'use strict';
+
+    var dummyIcon = {
+        prefix: 'fad',
+        iconName: 'dummy',
+        icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],
+    };
+    var MockFaIconLibrary = /** @class */ (function () {
+        function MockFaIconLibrary() {
+        }
+        MockFaIconLibrary.prototype.addIcons = function () {
+            throw new Error('Attempt to add an icon to the MockFaIconLibrary.');
+        };
+        MockFaIconLibrary.prototype.addIconPacks = function () {
+            throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');
+        };
+        MockFaIconLibrary.prototype.getIconDefinition = function (prefix, name) {
+            return dummyIcon;
+        };
+        return MockFaIconLibrary;
+    }());
+    MockFaIconLibrary.ɵprov = i0.ɵɵdefineInjectable({ factory: function MockFaIconLibrary_Factory() { return new MockFaIconLibrary(); }, token: MockFaIconLibrary, providedIn: "root" });
+    MockFaIconLibrary.decorators = [
+        { type: i0.Injectable, args: [{
+                    providedIn: 'root',
+                },] }
+    ];
+
+    var FontAwesomeTestingModule = /** @class */ (function () {
+        function FontAwesomeTestingModule() {
+        }
+        return FontAwesomeTestingModule;
+    }());
+    FontAwesomeTestingModule.decorators = [
+        { type: i0.NgModule, args: [{
+                    exports: [angularFontawesome.FontAwesomeModule],
+                    providers: [{ provide: angularFontawesome.FaIconLibrary, useExisting: MockFaIconLibrary }],
+                },] }
+    ];
+
+    /**
+     * Generated bundle index. Do not edit.
+     */
+
+    exports.FontAwesomeTestingModule = FontAwesomeTestingModule;
+    exports.ɵa = MockFaIconLibrary;
+
+    Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+//# sourceMappingURL=fortawesome-angular-fontawesome-testing.umd.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"fortawesome-angular-fontawesome-testing.umd.js","sources":["../../../testing/src/icon/mock-icon-library.service.ts","../../../testing/src/testing.module.ts","../../../testing/src/fortawesome-angular-fontawesome-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FaIconLibraryInterface } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport const dummyIcon: IconDefinition = {\n  prefix: 'fad',\n  iconName: 'dummy' as IconName,\n  icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MockFaIconLibrary implements FaIconLibraryInterface {\n  addIcons() {\n    throw new Error('Attempt to add an icon to the MockFaIconLibrary.');\n  }\n\n  addIconPacks() {\n    throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition {\n    return dummyIcon;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { MockFaIconLibrary } from './icon/mock-icon-library.service';\n\n@NgModule({\n  exports: [FontAwesomeModule],\n  providers: [{ provide: FaIconLibrary, useExisting: MockFaIconLibrary }],\n})\nexport class FontAwesomeTestingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {MockFaIconLibrary as ɵa} from './icon/mock-icon-library.service';"],"names":["Injectable","NgModule","FontAwesomeModule","FaIconLibrary"],"mappings":";;;;;;IAIO,IAAM,SAAS,GAAmB;QACvC,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,OAAmB;QAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC;KACvD,CAAC;;QAKF;;QACE,oCAAQ,GAAR;YACE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACrE;QAED,wCAAY,GAAZ;YACE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;QAED,6CAAiB,GAAjB,UAAkB,MAAkB,EAAE,IAAc;YAClD,OAAO,SAAS,CAAC;SAClB;;;;;gBAdFA,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;QCJD;;;;;gBAJCC,WAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,oCAAiB,CAAC;oBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAEC,gCAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;iBACxE;;;ICPD;;;;;;;;;;;;;"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core"),require("@fortawesome/angular-fontawesome")):"function"==typeof define&&define.amd?define("@fortawesome/angular-fontawesome/testing",["exports","@angular/core","@fortawesome/angular-fontawesome"],o):o(((e="undefined"!=typeof globalThis?globalThis:e||self).fortawesome=e.fortawesome||{},e.fortawesome["angular-fontawesome"]=e.fortawesome["angular-fontawesome"]||{},e.fortawesome["angular-fontawesome"].testing={}),e.ng.core,e.fortawesome["angular-fontawesome"])}(this,(function(e,o,t){"use strict";var n={prefix:"fad",iconName:"dummy",icon:[512,512,[],"f030","M50 50 H462 V462 H50 Z"]},r=function(){function e(){}return e.prototype.addIcons=function(){throw new Error("Attempt to add an icon to the MockFaIconLibrary.")},e.prototype.addIconPacks=function(){throw new Error("Attempt to add an icon pack to the MockFaIconLibrary.")},e.prototype.getIconDefinition=function(e,o){return n},e}();r.ɵprov=o.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r.decorators=[{type:o.Injectable,args:[{providedIn:"root"}]}];var a=function(){};a.decorators=[{type:o.NgModule,args:[{exports:[t.FontAwesomeModule],providers:[{provide:t.FaIconLibrary,useExisting:r}]}]}],e.FontAwesomeTestingModule=a,e.ɵa=r,Object.defineProperty(e,"__esModule",{value:!0})}));
+//# sourceMappingURL=fortawesome-angular-fontawesome-testing.umd.min.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/bundles/fortawesome-angular-fontawesome-testing.umd.min.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../../../testing/src/icon/mock-icon-library.service.ts","../../../testing/src/testing.module.ts"],"names":["dummyIcon","prefix","iconName","icon","MockFaIconLibrary","prototype","addIcons","Error","addIconPacks","getIconDefinition","name","Injectable","args","providedIn","NgModule","exports","FontAwesomeModule","providers","provide","FaIconLibrary","useExisting"],"mappings":"wlBAIO,IAAMA,EAA4B,CACvCC,OAAQ,MACRC,SAAU,QACVC,KAAM,CAAC,IAAK,IAAK,GAAI,OAAQ,wCAM/B,SAAAC,YACEA,EAAAC,UAAAC,SAAA,WACE,MAAM,IAAIC,MAAM,qDAGlBH,EAAAC,UAAAG,aAAA,WACE,MAAM,IAAID,MAAM,0DAGlBH,EAAAC,UAAAI,kBAAA,SAAkBR,EAAoBS,GACpC,OAAOV,uHAbVW,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,iBCHd,iCAJCC,EAAAA,SAAQF,KAAA,CAAC,CACRG,QAAS,CAACC,EAAAA,mBACVC,UAAW,CAAC,CAAEC,QAASC,EAAAA,cAAeC,YAAahB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { FaIconLibraryInterface } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport const dummyIcon: IconDefinition = {\n  prefix: 'fad',\n  iconName: 'dummy' as IconName,\n  icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MockFaIconLibrary implements FaIconLibraryInterface {\n  addIcons() {\n    throw new Error('Attempt to add an icon to the MockFaIconLibrary.');\n  }\n\n  addIconPacks() {\n    throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition {\n    return dummyIcon;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { MockFaIconLibrary } from './icon/mock-icon-library.service';\n\n@NgModule({\n  exports: [FontAwesomeModule],\n  providers: [{ provide: FaIconLibrary, useExisting: MockFaIconLibrary }],\n})\nexport class FontAwesomeTestingModule {}\n"]}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/config.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/config.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/config.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,49 @@
+import { IconDefinition, IconPrefix } from '@fortawesome/fontawesome-common-types';
+export declare class FaConfig {
+    /**
+     * Default prefix to use, when one is not provided with the icon name.
+     *
+     * @default 'fas'
+     */
+    defaultPrefix: IconPrefix;
+    /**
+     * Provides a fallback icon to use whilst main icon is being loaded asynchronously.
+     * When value is null, then fa-icon component will throw an error if icon input is missing.
+     * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.
+     *
+     * @default null
+     */
+    fallbackIcon: IconDefinition;
+    /**
+     * Set icons to the same fixed width.
+     * @see {@link: https://fontawesome.com/how-to-use/on-the-web/styling/fixed-width-icons}
+     * @default false
+     */
+    fixedWidth?: boolean;
+    /**
+     * Whether components should lookup icon definitions in the global icon
+     * library (the one available from
+     * `import { library } from '@fortawesome/fontawesome-svg-core')`.
+     *
+     * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md
+     * for detailed description of library modes.
+     *
+     * - 'unset' - Components should lookup icon definitions in the global library
+     * and emit warning if they find a definition there. This option is a default
+     * to assist existing applications with a migration. Applications are expected
+     * to switch to using {@link FaIconLibrary}.
+     * - true - Components should lookup icon definitions in the global library.
+     * Note that global icon library is deprecated and support for it will be
+     * removed. This option can be used to temporarily suppress warnings.
+     * - false - Components should not lookup icon definitions in the global
+     * library. Library will throw an error if missing icon is found in the global
+     * library.
+     *
+     * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will
+     * be changed to false. In 0.8.0 the option will be removed together with the
+     * support for the global icon library.
+     *
+     * @default false
+     */
+    globalLibrary: boolean | 'unset';
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/angular-fontawesome.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/angular-fontawesome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/angular-fontawesome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1mb250YXdlc29tZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYW5ndWxhci1mb250YXdlc29tZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/config.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/config.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/config.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,51 @@
+import { Injectable } from '@angular/core';
+import * as i0 from "@angular/core";
+export class FaConfig {
+    constructor() {
+        /**
+         * Default prefix to use, when one is not provided with the icon name.
+         *
+         * @default 'fas'
+         */
+        this.defaultPrefix = 'fas';
+        /**
+         * Provides a fallback icon to use whilst main icon is being loaded asynchronously.
+         * When value is null, then fa-icon component will throw an error if icon input is missing.
+         * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.
+         *
+         * @default null
+         */
+        this.fallbackIcon = null;
+        /**
+         * Whether components should lookup icon definitions in the global icon
+         * library (the one available from
+         * `import { library } from '@fortawesome/fontawesome-svg-core')`.
+         *
+         * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md
+         * for detailed description of library modes.
+         *
+         * - 'unset' - Components should lookup icon definitions in the global library
+         * and emit warning if they find a definition there. This option is a default
+         * to assist existing applications with a migration. Applications are expected
+         * to switch to using {@link FaIconLibrary}.
+         * - true - Components should lookup icon definitions in the global library.
+         * Note that global icon library is deprecated and support for it will be
+         * removed. This option can be used to temporarily suppress warnings.
+         * - false - Components should not lookup icon definitions in the global
+         * library. Library will throw an error if missing icon is found in the global
+         * library.
+         *
+         * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will
+         * be changed to false. In 0.8.0 the option will be removed together with the
+         * support for the global icon library.
+         *
+         * @default false
+         */
+        this.globalLibrary = false;
+    }
+}
+FaConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function FaConfig_Factory() { return new FaConfig(); }, token: FaConfig, providedIn: "root" });
+FaConfig.decorators = [
+    { type: Injectable, args: [{ providedIn: 'root' },] }
+];
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFFBQVE7SUFEckI7UUFFRTs7OztXQUlHO1FBQ0gsa0JBQWEsR0FBZSxLQUFLLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ0gsaUJBQVksR0FBbUIsSUFBSSxDQUFDO1FBU3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0F3Qkc7UUFDSCxrQkFBYSxHQUFzQixLQUFLLENBQUM7S0FDMUM7Ozs7WUFuREEsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25EZWZpbml0aW9uLCBJY29uUHJlZml4IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLWNvbW1vbi10eXBlcyc7XG5pbXBvcnQgeyBGYUljb25MaWJyYXJ5IH0gZnJvbSAnLi9pY29uLWxpYnJhcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZhQ29uZmlnIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgcHJlZml4IHRvIHVzZSwgd2hlbiBvbmUgaXMgbm90IHByb3ZpZGVkIHdpdGggdGhlIGljb24gbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2ZhcydcbiAgICovXG4gIGRlZmF1bHRQcmVmaXg6IEljb25QcmVmaXggPSAnZmFzJztcblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBmYWxsYmFjayBpY29uIHRvIHVzZSB3aGlsc3QgbWFpbiBpY29uIGlzIGJlaW5nIGxvYWRlZCBhc3luY2hyb25vdXNseS5cbiAgICogV2hlbiB2YWx1ZSBpcyBudWxsLCB0aGVuIGZhLWljb24gY29tcG9uZW50IHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgaWNvbiBpbnB1dCBpcyBtaXNzaW5nLlxuICAgKiBXaGVuIHZhbHVlIGlzIG5vdCBudWxsLCB0aGVuIHRoZSBwcm92aWRlZCBpY29uIHdpbGwgYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGljb24gaWYgaWNvbiBpbnB1dCBpcyBtaXNzaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBmYWxsYmFja0ljb246IEljb25EZWZpbml0aW9uID0gbnVsbDtcblxuICAvKipcbiAgICogU2V0IGljb25zIHRvIHRoZSBzYW1lIGZpeGVkIHdpZHRoLlxuICAgKiBAc2VlIHtAbGluazogaHR0cHM6Ly9mb250YXdlc29tZS5jb20vaG93LXRvLXVzZS9vbi10aGUtd2ViL3N0eWxpbmcvZml4ZWQtd2lkdGgtaWNvbnN9XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmaXhlZFdpZHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBjb21wb25lbnRzIHNob3VsZCBsb29rdXAgaWNvbiBkZWZpbml0aW9ucyBpbiB0aGUgZ2xvYmFsIGljb25cbiAgICogbGlicmFyeSAodGhlIG9uZSBhdmFpbGFibGUgZnJvbVxuICAgKiBgaW1wb3J0IHsgbGlicmFyeSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZScpYC5cbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb3J0QXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lL2Jsb2IvbWFzdGVyL2RvY3MvdXNhZ2UvaWNvbi1saWJyYXJ5Lm1kXG4gICAqIGZvciBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBsaWJyYXJ5IG1vZGVzLlxuICAgKlxuICAgKiAtICd1bnNldCcgLSBDb21wb25lbnRzIHNob3VsZCBsb29rdXAgaWNvbiBkZWZpbml0aW9ucyBpbiB0aGUgZ2xvYmFsIGxpYnJhcnlcbiAgICogYW5kIGVtaXQgd2FybmluZyBpZiB0aGV5IGZpbmQgYSBkZWZpbml0aW9uIHRoZXJlLiBUaGlzIG9wdGlvbiBpcyBhIGRlZmF1bHRcbiAgICogdG8gYXNzaXN0IGV4aXN0aW5nIGFwcGxpY2F0aW9ucyB3aXRoIGEgbWlncmF0aW9uLiBBcHBsaWNhdGlvbnMgYXJlIGV4cGVjdGVkXG4gICAqIHRvIHN3aXRjaCB0byB1c2luZyB7QGxpbmsgRmFJY29uTGlicmFyeX0uXG4gICAqIC0gdHJ1ZSAtIENvbXBvbmVudHMgc2hvdWxkIGxvb2t1cCBpY29uIGRlZmluaXRpb25zIGluIHRoZSBnbG9iYWwgbGlicmFyeS5cbiAgICogTm90ZSB0aGF0IGdsb2JhbCBpY29uIGxpYnJhcnkgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZVxuICAgKiByZW1vdmVkLiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byB0ZW1wb3JhcmlseSBzdXBwcmVzcyB3YXJuaW5ncy5cbiAgICogLSBmYWxzZSAtIENvbXBvbmVudHMgc2hvdWxkIG5vdCBsb29rdXAgaWNvbiBkZWZpbml0aW9ucyBpbiB0aGUgZ2xvYmFsXG4gICAqIGxpYnJhcnkuIExpYnJhcnkgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiBtaXNzaW5nIGljb24gaXMgZm91bmQgaW4gdGhlIGdsb2JhbFxuICAgKiBsaWJyYXJ5LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG9wdGlvbiBpcyBkZXByZWNhdGVkIHNpbmNlIDAuNS4wLiBJbiAwLjYuMCBkZWZhdWx0IHdpbGxcbiAgICogYmUgY2hhbmdlZCB0byBmYWxzZS4gSW4gMC44LjAgdGhlIG9wdGlvbiB3aWxsIGJlIHJlbW92ZWQgdG9nZXRoZXIgd2l0aCB0aGVcbiAgICogc3VwcG9ydCBmb3IgdGhlIGdsb2JhbCBpY29uIGxpYnJhcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBnbG9iYWxMaWJyYXJ5OiBib29sZWFuIHwgJ3Vuc2V0JyA9IGZhbHNlO1xufVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/fontawesome.module.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/fontawesome.module.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/fontawesome.module.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,33 @@
+import { NgModule } from '@angular/core';
+import { FaDuotoneIconComponent } from './icon/duotone-icon.component';
+import { FaIconComponent } from './icon/icon.component';
+import { FaLayersCounterComponent } from './layers/layers-counter.component';
+import { FaLayersTextComponent } from './layers/layers-text.component';
+import { FaLayersComponent } from './layers/layers.component';
+import { FaStackItemSizeDirective } from './stack/stack-item-size.directive';
+import { FaStackComponent } from './stack/stack.component';
+export class FontAwesomeModule {
+}
+FontAwesomeModule.decorators = [
+    { type: NgModule, args: [{
+                declarations: [
+                    FaIconComponent,
+                    FaDuotoneIconComponent,
+                    FaLayersComponent,
+                    FaLayersTextComponent,
+                    FaLayersCounterComponent,
+                    FaStackComponent,
+                    FaStackItemSizeDirective,
+                ],
+                exports: [
+                    FaIconComponent,
+                    FaDuotoneIconComponent,
+                    FaLayersComponent,
+                    FaLayersTextComponent,
+                    FaLayersCounterComponent,
+                    FaStackComponent,
+                    FaStackItemSizeDirective,
+                ],
+            },] }
+];
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udGF3ZXNvbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9mb250YXdlc29tZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFzQjNELE1BQU0sT0FBTyxpQkFBaUI7OztZQXBCN0IsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWixlQUFlO29CQUNmLHNCQUFzQjtvQkFDdEIsaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLHdCQUF3QjtvQkFDeEIsZ0JBQWdCO29CQUNoQix3QkFBd0I7aUJBQ3pCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxlQUFlO29CQUNmLHNCQUFzQjtvQkFDdEIsaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLHdCQUF3QjtvQkFDeEIsZ0JBQWdCO29CQUNoQix3QkFBd0I7aUJBQ3pCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFEdW90b25lSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9kdW90b25lLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGYUxheWVyc0NvdW50ZXJDb21wb25lbnQgfSBmcm9tICcuL2xheWVycy9sYXllcnMtY291bnRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFMYXllcnNUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXllcnMvbGF5ZXJzLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEZhTGF5ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9sYXllcnMvbGF5ZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGYVN0YWNrSXRlbVNpemVEaXJlY3RpdmUgfSBmcm9tICcuL3N0YWNrL3N0YWNrLWl0ZW0tc2l6ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmFTdGFja0NvbXBvbmVudCB9IGZyb20gJy4vc3RhY2svc3RhY2suY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIEZhRHVvdG9uZUljb25Db21wb25lbnQsXG4gICAgRmFMYXllcnNDb21wb25lbnQsXG4gICAgRmFMYXllcnNUZXh0Q29tcG9uZW50LFxuICAgIEZhTGF5ZXJzQ291bnRlckNvbXBvbmVudCxcbiAgICBGYVN0YWNrQ29tcG9uZW50LFxuICAgIEZhU3RhY2tJdGVtU2l6ZURpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBGYUR1b3RvbmVJY29uQ29tcG9uZW50LFxuICAgIEZhTGF5ZXJzQ29tcG9uZW50LFxuICAgIEZhTGF5ZXJzVGV4dENvbXBvbmVudCxcbiAgICBGYUxheWVyc0NvdW50ZXJDb21wb25lbnQsXG4gICAgRmFTdGFja0NvbXBvbmVudCxcbiAgICBGYVN0YWNrSXRlbVNpemVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvbnRBd2Vzb21lTW9kdWxlIHt9XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon-library.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon-library.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon-library.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,32 @@
+import { Injectable } from '@angular/core';
+import * as i0 from "@angular/core";
+export class FaIconLibrary {
+    constructor() {
+        this.definitions = {};
+    }
+    addIcons(...icons) {
+        for (const icon of icons) {
+            if (!(icon.prefix in this.definitions)) {
+                this.definitions[icon.prefix] = {};
+            }
+            this.definitions[icon.prefix][icon.iconName] = icon;
+        }
+    }
+    addIconPacks(...packs) {
+        for (const pack of packs) {
+            const icons = Object.keys(pack).map((key) => pack[key]);
+            this.addIcons(...icons);
+        }
+    }
+    getIconDefinition(prefix, name) {
+        if (prefix in this.definitions && name in this.definitions[prefix]) {
+            return this.definitions[prefix][name];
+        }
+        return null;
+    }
+}
+FaIconLibrary.ɵprov = i0.ɵɵdefineInjectable({ factory: function FaIconLibrary_Factory() { return new FaIconLibrary(); }, token: FaIconLibrary, providedIn: "root" });
+FaIconLibrary.decorators = [
+    { type: Injectable, args: [{ providedIn: 'root' },] }
+];
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pY29uLWxpYnJhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVM0MsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFVSxnQkFBVyxHQUE2RCxFQUFFLENBQUM7S0F3QnBGO0lBdEJDLFFBQVEsQ0FBQyxHQUFHLEtBQXVCO1FBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDcEM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHLEtBQWlCO1FBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0IsRUFBRSxJQUFjO1FBQ2xELElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O1lBekJGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiwgSWNvbk5hbWUsIEljb25QYWNrLCBJY29uUHJlZml4IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBGYUljb25MaWJyYXJ5SW50ZXJmYWNlIHtcbiAgYWRkSWNvbnMoLi4uaWNvbnM6IEljb25EZWZpbml0aW9uW10pOiB2b2lkO1xuICBhZGRJY29uUGFja3MoLi4ucGFja3M6IEljb25QYWNrW10pOiB2b2lkO1xuICBnZXRJY29uRGVmaW5pdGlvbihwcmVmaXg6IEljb25QcmVmaXgsIG5hbWU6IEljb25OYW1lKTogSWNvbkRlZmluaXRpb24gfCBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZhSWNvbkxpYnJhcnkgaW1wbGVtZW50cyBGYUljb25MaWJyYXJ5SW50ZXJmYWNlIHtcbiAgcHJpdmF0ZSBkZWZpbml0aW9uczogeyBbcHJlZml4OiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBJY29uRGVmaW5pdGlvbiB9IH0gPSB7fTtcblxuICBhZGRJY29ucyguLi5pY29uczogSWNvbkRlZmluaXRpb25bXSkge1xuICAgIGZvciAoY29uc3QgaWNvbiBvZiBpY29ucykge1xuICAgICAgaWYgKCEoaWNvbi5wcmVmaXggaW4gdGhpcy5kZWZpbml0aW9ucykpIHtcbiAgICAgICAgdGhpcy5kZWZpbml0aW9uc1tpY29uLnByZWZpeF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGVmaW5pdGlvbnNbaWNvbi5wcmVmaXhdW2ljb24uaWNvbk5hbWVdID0gaWNvbjtcbiAgICB9XG4gIH1cblxuICBhZGRJY29uUGFja3MoLi4ucGFja3M6IEljb25QYWNrW10pIHtcbiAgICBmb3IgKGNvbnN0IHBhY2sgb2YgcGFja3MpIHtcbiAgICAgIGNvbnN0IGljb25zID0gT2JqZWN0LmtleXMocGFjaykubWFwKChrZXkpID0+IHBhY2tba2V5XSk7XG4gICAgICB0aGlzLmFkZEljb25zKC4uLmljb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRJY29uRGVmaW5pdGlvbihwcmVmaXg6IEljb25QcmVmaXgsIG5hbWU6IEljb25OYW1lKTogSWNvbkRlZmluaXRpb24gfCBudWxsIHtcbiAgICBpZiAocHJlZml4IGluIHRoaXMuZGVmaW5pdGlvbnMgJiYgbmFtZSBpbiB0aGlzLmRlZmluaXRpb25zW3ByZWZpeF0pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmluaXRpb25zW3ByZWZpeF1bbmFtZV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/duotone-icon.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/duotone-icon.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/duotone-icon.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,47 @@
+import { Component, Input } from '@angular/core';
+import { FaIconComponent } from './icon.component';
+export class FaDuotoneIconComponent extends FaIconComponent {
+    findIconDefinition(i) {
+        const definition = super.findIconDefinition(i);
+        if (definition != null && !Array.isArray(definition.icon[4])) {
+            throw new Error('The specified icon does not appear to be a Duotone icon. ' +
+                'Check that you specified the correct style: ' +
+                `<fa-duotone-icon [icon]="['fad', '${definition.iconName}']"></fa-duotone-icon> ` +
+                `or use: <fa-icon icon="${definition.iconName}"></fa-icon> instead.`);
+        }
+        return definition;
+    }
+    buildParams() {
+        const params = super.buildParams();
+        if (this.swapOpacity === true || this.swapOpacity === 'true') {
+            params.classes.push('fa-swap-opacity');
+        }
+        if (this.primaryOpacity != null) {
+            params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();
+        }
+        if (this.secondaryOpacity != null) {
+            params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();
+        }
+        if (this.primaryColor != null) {
+            params.styles['--fa-primary-color'] = this.primaryColor;
+        }
+        if (this.secondaryColor != null) {
+            params.styles['--fa-secondary-color'] = this.secondaryColor;
+        }
+        return params;
+    }
+}
+FaDuotoneIconComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-duotone-icon',
+                template: ``
+            },] }
+];
+FaDuotoneIconComponent.propDecorators = {
+    swapOpacity: [{ type: Input }],
+    primaryOpacity: [{ type: Input }],
+    secondaryOpacity: [{ type: Input }],
+    primaryColor: [{ type: Input }],
+    secondaryColor: [{ type: Input }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVvdG9uZS1pY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaWNvbi9kdW90b25lLWljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU1uRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZUFBZTtJQTBDL0Msa0JBQWtCLENBQUMsQ0FBNEI7UUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9DLElBQUksVUFBVSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJEO2dCQUN6RCw4Q0FBOEM7Z0JBQzlDLHFDQUFxQyxVQUFVLENBQUMsUUFBUSx5QkFBeUI7Z0JBQ2pGLDBCQUEwQixVQUFVLENBQUMsUUFBUSx1QkFBdUIsQ0FDdkUsQ0FBQztTQUNIO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVTLFdBQVc7UUFDbkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQUU7WUFDNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUU7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEU7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM1RTtRQUNELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUU7WUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDekQ7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7O1lBakZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUUsRUFBRTthQUNiOzs7MEJBU0UsS0FBSzs2QkFRTCxLQUFLOytCQVFMLEtBQUs7MkJBUUwsS0FBSzs2QkFRTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmYS1kdW90b25lLWljb24nLFxuICB0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIEZhRHVvdG9uZUljb25Db21wb25lbnQgZXh0ZW5kcyBGYUljb25Db21wb25lbnQge1xuICAvKipcbiAgICogU3dhcCB0aGUgZGVmYXVsdCBvcGFjaXR5IG9mIGVhY2ggZHVvdG9uZSBpY29u4oCZcyBsYXllcnMuIFRoaXMgd2lsbCBtYWtlIGFuXG4gICAqIGljb27igJlzIHByaW1hcnkgbGF5ZXIgaGF2ZSB0aGUgZGVmYXVsdCBvcGFjaXR5IG9mIDQwJSByYXRoZXIgdGhhbiBpdHNcbiAgICogc2Vjb25kYXJ5IGxheWVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KCkgc3dhcE9wYWNpdHk/OiAndHJ1ZScgfCAnZmFsc2UnIHwgYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9taXplIHRoZSBvcGFjaXR5IG9mIHRoZSBwcmltYXJ5IGljb24gbGF5ZXIuXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgaW4gcmFuZ2UgWzAsIDEuMF0uXG4gICAqXG4gICAqIEBkZWZhdWx0IDEuMFxuICAgKi9cbiAgQElucHV0KCkgcHJpbWFyeU9wYWNpdHk/OiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZSB0aGUgb3BhY2l0eSBvZiB0aGUgc2Vjb25kYXJ5IGljb24gbGF5ZXIuXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgaW4gcmFuZ2UgWzAsIDEuMF0uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAuNFxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5T3BhY2l0eT86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9taXplIHRoZSBjb2xvciBvZiB0aGUgcHJpbWFyeSBpY29uIGxheWVyLlxuICAgKiBBY2NlcHRzIGFueSB2YWxpZCBDU1MgY29sb3IgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IENTUyBpbmhlcml0ZWQgY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnlDb2xvcj86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9taXplIHRoZSBjb2xvciBvZiB0aGUgc2Vjb25kYXJ5IGljb24gbGF5ZXIuXG4gICAqIEFjY2VwdHMgYW55IHZhbGlkIENTUyBjb2xvciB2YWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgQ1NTIGluaGVyaXRlZCBjb2xvclxuICAgKi9cbiAgQElucHV0KCkgc2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGZpbmRJY29uRGVmaW5pdGlvbihpOiBJY29uUHJvcCB8IEljb25EZWZpbml0aW9uKTogSWNvbkRlZmluaXRpb24gfCBudWxsIHtcbiAgICBjb25zdCBkZWZpbml0aW9uID0gc3VwZXIuZmluZEljb25EZWZpbml0aW9uKGkpO1xuXG4gICAgaWYgKGRlZmluaXRpb24gIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShkZWZpbml0aW9uLmljb25bNF0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgc3BlY2lmaWVkIGljb24gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgRHVvdG9uZSBpY29uLiAnICtcbiAgICAgICAgICAnQ2hlY2sgdGhhdCB5b3Ugc3BlY2lmaWVkIHRoZSBjb3JyZWN0IHN0eWxlOiAnICtcbiAgICAgICAgICBgPGZhLWR1b3RvbmUtaWNvbiBbaWNvbl09XCJbJ2ZhZCcsICcke2RlZmluaXRpb24uaWNvbk5hbWV9J11cIj48L2ZhLWR1b3RvbmUtaWNvbj4gYCArXG4gICAgICAgICAgYG9yIHVzZTogPGZhLWljb24gaWNvbj1cIiR7ZGVmaW5pdGlvbi5pY29uTmFtZX1cIj48L2ZhLWljb24+IGluc3RlYWQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmluaXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRQYXJhbXMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3VwZXIuYnVpbGRQYXJhbXMoKTtcblxuICAgIGlmICh0aGlzLnN3YXBPcGFjaXR5ID09PSB0cnVlIHx8IHRoaXMuc3dhcE9wYWNpdHkgPT09ICd0cnVlJykge1xuICAgICAgcGFyYW1zLmNsYXNzZXMucHVzaCgnZmEtc3dhcC1vcGFjaXR5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByaW1hcnlPcGFjaXR5ICE9IG51bGwpIHtcbiAgICAgIHBhcmFtcy5zdHlsZXNbJy0tZmEtcHJpbWFyeS1vcGFjaXR5J10gPSB0aGlzLnByaW1hcnlPcGFjaXR5LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlY29uZGFyeU9wYWNpdHkgIT0gbnVsbCkge1xuICAgICAgcGFyYW1zLnN0eWxlc1snLS1mYS1zZWNvbmRhcnktb3BhY2l0eSddID0gdGhpcy5zZWNvbmRhcnlPcGFjaXR5LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByaW1hcnlDb2xvciAhPSBudWxsKSB7XG4gICAgICBwYXJhbXMuc3R5bGVzWyctLWZhLXByaW1hcnktY29sb3InXSA9IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWNvbmRhcnlDb2xvciAhPSBudWxsKSB7XG4gICAgICBwYXJhbXMuc3R5bGVzWyctLWZhLXNlY29uZGFyeS1jb2xvciddID0gdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/icon.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/icon.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/icon/icon.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,146 @@
+import { Component, HostBinding, Input, Optional } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { findIconDefinition, icon, parse, } from '@fortawesome/fontawesome-svg-core';
+import { FaConfig } from '../config';
+import { FaIconLibrary } from '../icon-library';
+import { faWarnIfIconDefinitionMissing } from '../shared/errors/warn-if-icon-html-missing';
+import { faWarnIfIconSpecMissing } from '../shared/errors/warn-if-icon-spec-missing';
+import { faClassList } from '../shared/utils/classlist.util';
+import { faNormalizeIconSpec } from '../shared/utils/normalize-icon-spec.util';
+import { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';
+import { FaStackComponent } from '../stack/stack.component';
+export class FaIconComponent {
+    constructor(sanitizer, config, iconLibrary, stackItem, stack) {
+        this.sanitizer = sanitizer;
+        this.config = config;
+        this.iconLibrary = iconLibrary;
+        this.stackItem = stackItem;
+        this.classes = [];
+        if (stack != null && stackItem == null) {
+            console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +
+                'fa-stack. Example: <fa-icon stackItemSize="2x"></fa-icon>.');
+        }
+    }
+    ngOnChanges(changes) {
+        if (this.icon == null && this.config.fallbackIcon == null) {
+            return faWarnIfIconSpecMissing();
+        }
+        let iconToBeRendered = null;
+        if (this.icon == null) {
+            iconToBeRendered = this.config.fallbackIcon;
+        }
+        else {
+            iconToBeRendered = this.icon;
+        }
+        if (changes) {
+            const iconDefinition = this.findIconDefinition(iconToBeRendered);
+            if (iconDefinition != null) {
+                const params = this.buildParams();
+                this.renderIcon(iconDefinition, params);
+            }
+        }
+    }
+    /**
+     * Programmatically trigger rendering of the icon.
+     *
+     * This method is useful, when creating {@link FaIconComponent} dynamically or
+     * changing its inputs programmatically as in these cases icon won't be
+     * re-rendered automatically.
+     */
+    render() {
+        this.ngOnChanges({});
+    }
+    findIconDefinition(i) {
+        const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);
+        if ('icon' in lookup) {
+            return lookup;
+        }
+        const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);
+        if (definition != null) {
+            return definition;
+        }
+        const globalDefinition = findIconDefinition(lookup);
+        if (globalDefinition != null) {
+            const message = 'Global icon library is deprecated. ' +
+                'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +
+                'for the migration instructions.';
+            if (this.config.globalLibrary === 'unset') {
+                console.error('FontAwesome: ' + message);
+            }
+            else if (!this.config.globalLibrary) {
+                throw new Error(message);
+            }
+            return globalDefinition;
+        }
+        faWarnIfIconDefinitionMissing(lookup);
+        return null;
+    }
+    buildParams() {
+        const classOpts = {
+            flip: this.flip,
+            spin: this.spin,
+            pulse: this.pulse,
+            border: this.border,
+            inverse: this.inverse,
+            size: this.size || null,
+            pull: this.pull || null,
+            rotate: this.rotate || null,
+            fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,
+            stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,
+        };
+        const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
+        return {
+            title: this.title,
+            transform: parsedTransform,
+            classes: [...faClassList(classOpts), ...this.classes],
+            mask: this.mask != null ? this.findIconDefinition(this.mask) : null,
+            styles: this.styles != null ? this.styles : {},
+            symbol: this.symbol,
+            attributes: {
+                role: this.a11yRole,
+            },
+        };
+    }
+    renderIcon(definition, params) {
+        const renderedIcon = icon(definition, params);
+        this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\n'));
+    }
+}
+FaIconComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-icon',
+                template: ``,
+                host: {
+                    class: 'ng-fa-icon',
+                    '[attr.title]': 'title',
+                }
+            },] }
+];
+FaIconComponent.ctorParameters = () => [
+    { type: DomSanitizer },
+    { type: FaConfig },
+    { type: FaIconLibrary },
+    { type: FaStackItemSizeDirective, decorators: [{ type: Optional }] },
+    { type: FaStackComponent, decorators: [{ type: Optional }] }
+];
+FaIconComponent.propDecorators = {
+    icon: [{ type: Input }],
+    title: [{ type: Input }],
+    spin: [{ type: Input }],
+    pulse: [{ type: Input }],
+    mask: [{ type: Input }],
+    styles: [{ type: Input }],
+    flip: [{ type: Input }],
+    size: [{ type: Input }],
+    pull: [{ type: Input }],
+    border: [{ type: Input }],
+    inverse: [{ type: Input }],
+    symbol: [{ type: Input }],
+    rotate: [{ type: Input }],
+    fixedWidth: [{ type: Input }],
+    classes: [{ type: Input }],
+    transform: [{ type: Input }],
+    a11yRole: [{ type: Input }],
+    renderedIconHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFFTCxrQkFBa0IsRUFFbEIsSUFBSSxFQUlKLEtBQUssR0FNTixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVU1RCxNQUFNLE9BQU8sZUFBZTtJQWlDMUIsWUFDVSxTQUF1QixFQUN2QixNQUFnQixFQUNoQixXQUEwQixFQUNkLFNBQW1DLEVBQzNDLEtBQXVCO1FBSjNCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBaEJoRCxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBbUIvQixJQUFJLEtB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QUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQzs7O1lBdEpGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxZQUFZO29CQUNuQixjQUFjLEVBQUUsT0FBTztpQkFDeEI7YUFDRjs7O1lBakNRLFlBQVk7WUFnQlosUUFBUTtZQUNSLGFBQWE7WUFNYix3QkFBd0IsdUJBZ0Q1QixRQUFRO1lBL0NKLGdCQUFnQix1QkFnRHBCLFFBQVE7OzttQkFyQ1YsS0FBSztvQkFPTCxLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSzttQkFDTCxLQUFLO3FCQUNMLEtBQUs7bUJBQ0wsS0FBSzttQkFDTCxLQUFLO21CQUNMLEtBQUs7cUJBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUNMLEtBQUs7cUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFPTCxLQUFLOytCQUVMLFdBQVcsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7XG4gIEZhU3ltYm9sLFxuICBmaW5kSWNvbkRlZmluaXRpb24sXG4gIEZsaXBQcm9wLFxuICBpY29uLFxuICBJY29uRGVmaW5pdGlvbixcbiAgSWNvblBhcmFtcyxcbiAgSWNvblByb3AsXG4gIHBhcnNlLFxuICBQdWxsUHJvcCxcbiAgUm90YXRlUHJvcCxcbiAgU2l6ZVByb3AsXG4gIFN0eWxlcyxcbiAgVHJhbnNmb3JtLFxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuaW1wb3J0IHsgRmFDb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgRmFJY29uTGlicmFyeSB9IGZyb20gJy4uL2ljb24tbGlicmFyeSc7XG5pbXBvcnQgeyBmYVdhcm5JZkljb25EZWZpbml0aW9uTWlzc2luZyB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvd2Fybi1pZi1pY29uLWh0bWwtbWlzc2luZyc7XG5pbXBvcnQgeyBmYVdhcm5JZkljb25TcGVjTWlzc2luZyB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvd2Fybi1pZi1pY29uLXNwZWMtbWlzc2luZyc7XG5pbXBvcnQgeyBGYVByb3BzIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9wcm9wcy5tb2RlbCc7XG5pbXBvcnQgeyBmYUNsYXNzTGlzdCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy9jbGFzc2xpc3QudXRpbCc7XG5pbXBvcnQgeyBmYU5vcm1hbGl6ZUljb25TcGVjIH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzL25vcm1hbGl6ZS1pY29uLXNwZWMudXRpbCc7XG5pbXBvcnQgeyBGYVN0YWNrSXRlbVNpemVEaXJlY3RpdmUgfSBmcm9tICcuLi9zdGFjay9zdGFjay1pdGVtLXNpemUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZhU3RhY2tDb21wb25lbnQgfSBmcm9tICcuLi9zdGFjay9zdGFjay5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmYS1pY29uJyxcbiAgdGVtcGxhdGU6IGBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICduZy1mYS1pY29uJyxcbiAgICAnW2F0dHIudGl0bGVdJzogJ3RpdGxlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgRmFJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaWNvbjogSWNvblByb3A7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSB0aXRsZSBmb3IgdGhlIGljb24uXG4gICAqIFRoaXMgdGV4dCB3aWxsIGJlIGRpc3BsYXllZCBpbiBhIHRvb2x0aXAgb24gaG92ZXIgYW5kIHByZXNlbnRlZCB0byB0aGVcbiAgICogc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgc3Bpbj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1bHNlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbWFzaz86IEljb25Qcm9wO1xuICBASW5wdXQoKSBzdHlsZXM/OiBTdHlsZXM7XG4gIEBJbnB1dCgpIGZsaXA/OiBGbGlwUHJvcDtcbiAgQElucHV0KCkgc2l6ZT86IFNpemVQcm9wO1xuICBASW5wdXQoKSBwdWxsPzogUHVsbFByb3A7XG4gIEBJbnB1dCgpIGJvcmRlcj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGludmVyc2U/OiBib29sZWFuO1xuICBASW5wdXQoKSBzeW1ib2w/OiBGYVN5bWJvbDtcbiAgQElucHV0KCkgcm90YXRlPzogUm90YXRlUHJvcDtcbiAgQElucHV0KCkgZml4ZWRXaWR0aD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNsYXNzZXM/OiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSB0cmFuc2Zvcm0/OiBzdHJpbmcgfCBUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGByb2xlYCBhdHRyaWJ1dGUgZm9yIHRoZSByZW5kZXJlZCA8c3ZnPiBlbGVtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnaW1nJ1xuICAgKi9cbiAgQElucHV0KCkgYTExeVJvbGU6IHN0cmluZztcblxuICBASG9zdEJpbmRpbmcoJ2lubmVySFRNTCcpIHJlbmRlcmVkSWNvbkhUTUw6IFNhZmVIdG1sO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjb25maWc6IEZhQ29uZmlnLFxuICAgIHByaXZhdGUgaWNvbkxpYnJhcnk6IEZhSWNvbkxpYnJhcnksXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzdGFja0l0ZW06IEZhU3RhY2tJdGVtU2l6ZURpcmVjdGl2ZSxcbiAgICBAT3B0aW9uYWwoKSBzdGFjazogRmFTdGFja0NvbXBvbmVudCxcbiAgKSB7XG4gICAgaWYgKHN0YWNrICE9IG51bGwgJiYgc3RhY2tJdGVtID09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdGb250QXdlc29tZTogZmEtaWNvbiBhbmQgZmEtZHVvdG9uZS1pY29uIGVsZW1lbnRzIG11c3Qgc3BlY2lmeSBzdGFja0l0ZW1TaXplIGF0dHJpYnV0ZSB3aGVuIHdyYXBwZWQgaW50byAnICtcbiAgICAgICAgICAnZmEtc3RhY2suIEV4YW1wbGU6IDxmYS1pY29uIHN0YWNrSXRlbVNpemU9XCIyeFwiPjwvZmEtaWNvbj4uJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmljb24gPT0gbnVsbCAmJiB0aGlzLmNvbmZpZy5mYWxsYmFja0ljb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhV2FybklmSWNvblNwZWNNaXNzaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IGljb25Ub0JlUmVuZGVyZWQ6IEljb25Qcm9wID0gbnVsbDtcbiAgICBpZiAodGhpcy5pY29uID09IG51bGwpIHtcbiAgICAgIGljb25Ub0JlUmVuZGVyZWQgPSB0aGlzLmNvbmZpZy5mYWxsYmFja0ljb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb25Ub0JlUmVuZGVyZWQgPSB0aGlzLmljb247XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IGljb25EZWZpbml0aW9uID0gdGhpcy5maW5kSWNvbkRlZmluaXRpb24oaWNvblRvQmVSZW5kZXJlZCk7XG4gICAgICBpZiAoaWNvbkRlZmluaXRpb24gIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKCk7XG4gICAgICAgIHRoaXMucmVuZGVySWNvbihpY29uRGVmaW5pdGlvbiwgcGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSB0cmlnZ2VyIHJlbmRlcmluZyBvZiB0aGUgaWNvbi5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsLCB3aGVuIGNyZWF0aW5nIHtAbGluayBGYUljb25Db21wb25lbnR9IGR5bmFtaWNhbGx5IG9yXG4gICAqIGNoYW5naW5nIGl0cyBpbnB1dHMgcHJvZ3JhbW1hdGljYWxseSBhcyBpbiB0aGVzZSBjYXNlcyBpY29uIHdvbid0IGJlXG4gICAqIHJlLXJlbmRlcmVkIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgdGhpcy5uZ09uQ2hhbmdlcyh7fSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZEljb25EZWZpbml0aW9uKGk6IEljb25Qcm9wIHwgSWNvbkRlZmluaXRpb24pOiBJY29uRGVmaW5pdGlvbiB8IG51bGwge1xuICAgIGNvbnN0IGxvb2t1cCA9IGZhTm9ybWFsaXplSWNvblNwZWMoaSwgdGhpcy5jb25maWcuZGVmYXVsdFByZWZpeCk7XG4gICAgaWYgKCdpY29uJyBpbiBsb29rdXApIHtcbiAgICAgIHJldHVybiBsb29rdXA7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMuaWNvbkxpYnJhcnkuZ2V0SWNvbkRlZmluaXRpb24obG9va3VwLnByZWZpeCwgbG9va3VwLmljb25OYW1lKTtcbiAgICBpZiAoZGVmaW5pdGlvbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBnbG9iYWxEZWZpbml0aW9uID0gZmluZEljb25EZWZpbml0aW9uKGxvb2t1cCk7XG4gICAgaWYgKGdsb2JhbERlZmluaXRpb24gIT0gbnVsbCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICdHbG9iYWwgaWNvbiBsaWJyYXJ5IGlzIGRlcHJlY2F0ZWQuICcgK1xuICAgICAgICAnQ29uc3VsdCBodHRwczovL2dpdGh1Yi5jb20vRm9ydEF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZS9ibG9iL21hc3Rlci9VUEdSQURJTkcubWQgJyArXG4gICAgICAgICdmb3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJztcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5nbG9iYWxMaWJyYXJ5ID09PSAndW5zZXQnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvbnRBd2Vzb21lOiAnICsgbWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbmZpZy5nbG9iYWxMaWJyYXJ5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdsb2JhbERlZmluaXRpb247XG4gICAgfVxuXG4gICAgZmFXYXJuSWZJY29uRGVmaW5pdGlvbk1pc3NpbmcobG9va3VwKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFBhcmFtcygpIHtcbiAgICBjb25zdCBjbGFzc09wdHM6IEZhUHJvcHMgPSB7XG4gICAgICBmbGlwOiB0aGlzLmZsaXAsXG4gICAgICBzcGluOiB0aGlzLnNwaW4sXG4gICAgICBwdWxzZTogdGhpcy5wdWxzZSxcbiAgICAgIGJvcmRlcjogdGhpcy5ib3JkZXIsXG4gICAgICBpbnZlcnNlOiB0aGlzLmludmVyc2UsXG4gICAgICBzaXplOiB0aGlzLnNpemUgfHwgbnVsbCxcbiAgICAgIHB1bGw6IHRoaXMucHVsbCB8fCBudWxsLFxuICAgICAgcm90YXRlOiB0aGlzLnJvdGF0ZSB8fCBudWxsLFxuICAgICAgZml4ZWRXaWR0aDogdHlwZW9mIHRoaXMuZml4ZWRXaWR0aCA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5maXhlZFdpZHRoIDogdGhpcy5jb25maWcuZml4ZWRXaWR0aCxcbiAgICAgIHN0YWNrSXRlbVNpemU6IHRoaXMuc3RhY2tJdGVtICE9IG51bGwgPyB0aGlzLnN0YWNrSXRlbS5zdGFja0l0ZW1TaXplIDogbnVsbCxcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyc2VkVHJhbnNmb3JtID0gdHlwZW9mIHRoaXMudHJhbnNmb3JtID09PSAnc3RyaW5nJyA/IHBhcnNlLnRyYW5zZm9ybSh0aGlzLnRyYW5zZm9ybSkgOiB0aGlzLnRyYW5zZm9ybTtcblxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHRyYW5zZm9ybTogcGFyc2VkVHJhbnNmb3JtLFxuICAgICAgY2xhc3NlczogWy4uLmZhQ2xhc3NMaXN0KGNsYXNzT3B0cyksIC4uLnRoaXMuY2xhc3Nlc10sXG4gICAgICBtYXNrOiB0aGlzLm1hc2sgIT0gbnVsbCA/IHRoaXMuZmluZEljb25EZWZpbml0aW9uKHRoaXMubWFzaykgOiBudWxsLFxuICAgICAgc3R5bGVzOiB0aGlzLnN0eWxlcyAhPSBudWxsID8gdGhpcy5zdHlsZXMgOiB7fSxcbiAgICAgIHN5bWJvbDogdGhpcy5zeW1ib2wsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIHJvbGU6IHRoaXMuYTExeVJvbGUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckljb24oZGVmaW5pdGlvbjogSWNvbkRlZmluaXRpb24sIHBhcmFtczogSWNvblBhcmFtcykge1xuICAgIGNvbnN0IHJlbmRlcmVkSWNvbiA9IGljb24oZGVmaW5pdGlvbiwgcGFyYW1zKTtcbiAgICB0aGlzLnJlbmRlcmVkSWNvbkhUTUwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChyZW5kZXJlZEljb24uaHRtbC5qb2luKCdcXG4nKSk7XG4gIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-counter.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-counter.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-counter.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,50 @@
+import { Component, HostBinding, Input, Optional } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { counter } from '@fortawesome/fontawesome-svg-core';
+import { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';
+import { FaLayersComponent } from './layers.component';
+export class FaLayersCounterComponent {
+    constructor(parent, sanitizer) {
+        this.parent = parent;
+        this.sanitizer = sanitizer;
+        this.classes = [];
+        faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+    }
+    ngOnChanges(changes) {
+        if (changes) {
+            const params = this.buildParams();
+            this.updateContent(params);
+        }
+    }
+    buildParams() {
+        return {
+            title: this.title,
+            classes: this.classes,
+            styles: this.styles,
+        };
+    }
+    updateContent(params) {
+        this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));
+    }
+}
+FaLayersCounterComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers-counter',
+                template: '',
+                host: {
+                    class: 'ng-fa-layers-counter',
+                }
+            },] }
+];
+FaLayersCounterComponent.ctorParameters = () => [
+    { type: FaLayersComponent, decorators: [{ type: Optional }] },
+    { type: DomSanitizer }
+];
+FaLayersCounterComponent.propDecorators = {
+    content: [{ type: Input }],
+    title: [{ type: Input }],
+    styles: [{ type: Input }],
+    classes: [{ type: Input }],
+    renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLWNvdW50ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9sYXllcnMvbGF5ZXJzLWNvdW50ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUF5QixNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBU3ZELE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFBZ0MsTUFBeUIsRUFBVSxTQUF1QjtRQUExRCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFKakYsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUsvQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVTLFdBQVc7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQXFCO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7OztZQXBDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxzQkFBc0I7aUJBQzlCO2FBQ0Y7OztZQVJRLGlCQUFpQix1QkFpQlgsUUFBUTtZQXBCZCxZQUFZOzs7c0JBYWxCLEtBQUs7b0JBQ0wsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7MkJBRUwsV0FBVyxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgY291bnRlciwgQ291bnRlclBhcmFtcywgU3R5bGVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcbmltcG9ydCB7IGZhV2FybklmUGFyZW50Tm90RXhpc3QgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzL3dhcm4taWYtcGFyZW50LW5vdC1leGlzdCc7XG5pbXBvcnQgeyBGYUxheWVyc0NvbXBvbmVudCB9IGZyb20gJy4vbGF5ZXJzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZhLWxheWVycy1jb3VudGVyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICduZy1mYS1sYXllcnMtY291bnRlcicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEZhTGF5ZXJzQ291bnRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0eWxlcz86IFN0eWxlcztcbiAgQElucHV0KCkgY2xhc3Nlcz86IHN0cmluZ1tdID0gW107XG5cbiAgQEhvc3RCaW5kaW5nKCdpbm5lckhUTUwnKSByZW5kZXJlZEhUTUw6IFNhZmVIdG1sO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGYUxheWVyc0NvbXBvbmVudCwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgIGZhV2FybklmUGFyZW50Tm90RXhpc3QodGhpcy5wYXJlbnQsICdGYUxheWVyc0NvbXBvbmVudCcsIHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFBhcmFtcygpOiBDb3VudGVyUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBjbGFzc2VzOiB0aGlzLmNsYXNzZXMsXG4gICAgICBzdHlsZXM6IHRoaXMuc3R5bGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQocGFyYW1zOiBDb3VudGVyUGFyYW1zKSB7XG4gICAgdGhpcy5yZW5kZXJlZEhUTUwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjb3VudGVyKHRoaXMuY29udGVudCB8fCAnJywgcGFyYW1zKS5odG1sLmpvaW4oJycpKTtcbiAgfVxufVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-text.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-text.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers-text.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,77 @@
+import { Component, HostBinding, Input, Optional } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { parse, text, } from '@fortawesome/fontawesome-svg-core';
+import { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';
+import { faClassList } from '../shared/utils/classlist.util';
+import { FaLayersComponent } from './layers.component';
+export class FaLayersTextComponent {
+    constructor(parent, sanitizer) {
+        this.parent = parent;
+        this.sanitizer = sanitizer;
+        this.classes = [];
+        faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+    }
+    ngOnChanges(changes) {
+        if (changes) {
+            const params = this.buildParams();
+            this.updateContent(params);
+        }
+    }
+    /**
+     * Updating params by component props.
+     */
+    buildParams() {
+        const classOpts = {
+            flip: this.flip,
+            spin: this.spin,
+            pulse: this.pulse,
+            border: this.border,
+            inverse: this.inverse,
+            size: this.size || null,
+            pull: this.pull || null,
+            rotate: this.rotate || null,
+            fixedWidth: this.fixedWidth,
+        };
+        const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
+        return {
+            transform: parsedTransform,
+            classes: [...faClassList(classOpts), ...this.classes],
+            title: this.title,
+            styles: this.styles,
+        };
+    }
+    updateContent(params) {
+        this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\n'));
+    }
+}
+FaLayersTextComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers-text',
+                template: '',
+                host: {
+                    class: 'ng-fa-layers-text',
+                }
+            },] }
+];
+FaLayersTextComponent.ctorParameters = () => [
+    { type: FaLayersComponent, decorators: [{ type: Optional }] },
+    { type: DomSanitizer }
+];
+FaLayersTextComponent.propDecorators = {
+    content: [{ type: Input }],
+    title: [{ type: Input }],
+    styles: [{ type: Input }],
+    classes: [{ type: Input }],
+    spin: [{ type: Input }],
+    pulse: [{ type: Input }],
+    flip: [{ type: Input }],
+    size: [{ type: Input }],
+    pull: [{ type: Input }],
+    border: [{ type: Input }],
+    inverse: [{ type: Input }],
+    rotate: [{ type: Input }],
+    fixedWidth: [{ type: Input }],
+    transform: [{ type: Input }],
+    renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9sYXllcnMvbGF5ZXJzLXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBRUwsS0FBSyxFQUtMLElBQUksR0FHTCxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVN2RCxNQUFNLE9BQU8scUJBQXFCO0lBa0JoQyxZQUFnQyxNQUF5QixFQUFVLFNBQXVCO1FBQTFELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWRqRixZQUFPLEdBQWMsRUFBRSxDQUFDO1FBZS9CLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXO1FBQ25CLE1BQU0sU0FBUyxHQUFZO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFOUcsT0FBTztZQUNMLFNBQVMsRUFBRSxlQUFlO1lBQzFCLE9BQU8sRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQWtCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7OztZQWhFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxtQkFBbUI7aUJBQzNCO2FBQ0Y7OztZQVJRLGlCQUFpQix1QkEyQlgsUUFBUTtZQTFDZCxZQUFZOzs7c0JBeUJsQixLQUFLO29CQUNMLEtBQUs7cUJBQ0wsS0FBSztzQkFDTCxLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSzttQkFDTCxLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7cUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3dCQUNMLEtBQUs7MkJBRUwsV0FBVyxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgRmxpcFByb3AsXG4gIHBhcnNlLFxuICBQdWxsUHJvcCxcbiAgUm90YXRlUHJvcCxcbiAgU2l6ZVByb3AsXG4gIFN0eWxlcyxcbiAgdGV4dCxcbiAgVGV4dFBhcmFtcyxcbiAgVHJhbnNmb3JtLFxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuaW1wb3J0IHsgZmFXYXJuSWZQYXJlbnROb3RFeGlzdCB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvd2Fybi1pZi1wYXJlbnQtbm90LWV4aXN0JztcbmltcG9ydCB7IEZhUHJvcHMgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3Byb3BzLm1vZGVsJztcbmltcG9ydCB7IGZhQ2xhc3NMaXN0IH0gZnJvbSAnLi4vc2hhcmVkL3V0aWxzL2NsYXNzbGlzdC51dGlsJztcbmltcG9ydCB7IEZhTGF5ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9sYXllcnMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmEtbGF5ZXJzLXRleHQnLFxuICB0ZW1wbGF0ZTogJycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ25nLWZhLWxheWVycy10ZXh0JyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgRmFMYXllcnNUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29udGVudDogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgc3R5bGVzPzogU3R5bGVzO1xuICBASW5wdXQoKSBjbGFzc2VzPzogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgc3Bpbj86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1bHNlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgZmxpcD86IEZsaXBQcm9wO1xuICBASW5wdXQoKSBzaXplPzogU2l6ZVByb3A7XG4gIEBJbnB1dCgpIHB1bGw/OiBQdWxsUHJvcDtcbiAgQElucHV0KCkgYm9yZGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaW52ZXJzZT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJvdGF0ZT86IFJvdGF0ZVByb3A7XG4gIEBJbnB1dCgpIGZpeGVkV2lkdGg/OiBib29sZWFuO1xuICBASW5wdXQoKSB0cmFuc2Zvcm0/OiBzdHJpbmcgfCBUcmFuc2Zvcm07XG5cbiAgQEhvc3RCaW5kaW5nKCdpbm5lckhUTUwnKSByZW5kZXJlZEhUTUw6IFNhZmVIdG1sO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGYUxheWVyc0NvbXBvbmVudCwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgIGZhV2FybklmUGFyZW50Tm90RXhpc3QodGhpcy5wYXJlbnQsICdGYUxheWVyc0NvbXBvbmVudCcsIHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMoKTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGluZyBwYXJhbXMgYnkgY29tcG9uZW50IHByb3BzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkUGFyYW1zKCk6IFRleHRQYXJhbXMge1xuICAgIGNvbnN0IGNsYXNzT3B0czogRmFQcm9wcyA9IHtcbiAgICAgIGZsaXA6IHRoaXMuZmxpcCxcbiAgICAgIHNwaW46IHRoaXMuc3BpbixcbiAgICAgIHB1bHNlOiB0aGlzLnB1bHNlLFxuICAgICAgYm9yZGVyOiB0aGlzLmJvcmRlcixcbiAgICAgIGludmVyc2U6IHRoaXMuaW52ZXJzZSxcbiAgICAgIHNpemU6IHRoaXMuc2l6ZSB8fCBudWxsLFxuICAgICAgcHVsbDogdGhpcy5wdWxsIHx8IG51bGwsXG4gICAgICByb3RhdGU6IHRoaXMucm90YXRlIHx8IG51bGwsXG4gICAgICBmaXhlZFdpZHRoOiB0aGlzLmZpeGVkV2lkdGgsXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlZFRyYW5zZm9ybSA9IHR5cGVvZiB0aGlzLnRyYW5zZm9ybSA9PT0gJ3N0cmluZycgPyBwYXJzZS50cmFuc2Zvcm0odGhpcy50cmFuc2Zvcm0pIDogdGhpcy50cmFuc2Zvcm07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtOiBwYXJzZWRUcmFuc2Zvcm0sXG4gICAgICBjbGFzc2VzOiBbLi4uZmFDbGFzc0xpc3QoY2xhc3NPcHRzKSwgLi4udGhpcy5jbGFzc2VzXSxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgc3R5bGVzOiB0aGlzLnN0eWxlcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KHBhcmFtczogVGV4dFBhcmFtcykge1xuICAgIHRoaXMucmVuZGVyZWRIVE1MID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGV4dCh0aGlzLmNvbnRlbnQgfHwgJycsIHBhcmFtcykuaHRtbC5qb2luKCdcXG4nKSk7XG4gIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/layers/layers.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+import { Component, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';
+import { FaConfig } from '../config';
+/**
+ * Fontawesome layers.
+ */
+export class FaLayersComponent {
+    constructor(renderer, elementRef, config) {
+        this.renderer = renderer;
+        this.elementRef = elementRef;
+        this.config = config;
+    }
+    ngOnInit() {
+        this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');
+        this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            if (changes.size.currentValue != null) {
+                this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
+            }
+            if (changes.size.previousValue != null) {
+                this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
+            }
+        }
+    }
+}
+FaLayersComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers',
+                template: `<ng-content></ng-content>`
+            },] }
+];
+FaLayersComponent.ctorParameters = () => [
+    { type: Renderer2 },
+    { type: ElementRef },
+    { type: FaConfig }
+];
+FaLayersComponent.propDecorators = {
+    size: [{ type: Input }],
+    fixedWidth: [{ type: Input }, { type: HostBinding, args: ['class.fa-fw',] }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL2xheWVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV2SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDOztHQUVHO0FBS0gsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUFvQixRQUFtQixFQUFVLFVBQXNCLEVBQVUsTUFBZ0I7UUFBN0UsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFVO0lBQUcsQ0FBQztJQUVyRyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUNwRyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUNyQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDMUY7WUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7YUFDOUY7U0FDRjtJQUNILENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRSwyQkFBMkI7YUFDdEM7OztZQVZzRSxTQUFTO1lBQTVELFVBQVU7WUFFckIsUUFBUTs7O21CQVVkLEtBQUs7eUJBRUwsS0FBSyxZQUFJLFdBQVcsU0FBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpemVQcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcbmltcG9ydCB7IEZhQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcblxuLyoqXG4gKiBGb250YXdlc29tZSBsYXllcnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZhLWxheWVycycsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG59KVxuZXhwb3J0IGNsYXNzIEZhTGF5ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBzaXplPzogU2l6ZVByb3A7XG5cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5mYS1mdycpIGZpeGVkV2lkdGg/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNvbmZpZzogRmFDb25maWcpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2ZhLWxheWVycycpO1xuICAgIHRoaXMuZml4ZWRXaWR0aCA9IHR5cGVvZiB0aGlzLmZpeGVkV2lkdGggPT09ICdib29sZWFuJyA/IHRoaXMuZml4ZWRXaWR0aCA6IHRoaXMuY29uZmlnLmZpeGVkV2lkdGg7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdzaXplJyBpbiBjaGFuZ2VzKSB7XG4gICAgICBpZiAoY2hhbmdlcy5zaXplLmN1cnJlbnRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGBmYS0ke2NoYW5nZXMuc2l6ZS5jdXJyZW50VmFsdWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlcy5zaXplLnByZXZpb3VzVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBgZmEtJHtjaGFuZ2VzLnNpemUucHJldmlvdXNWYWx1ZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/public_api.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/public_api.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/public_api.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,11 @@
+export { FontAwesomeModule } from './fontawesome.module';
+export { FaIconComponent } from './icon/icon.component';
+export { FaDuotoneIconComponent } from './icon/duotone-icon.component';
+export { FaConfig } from './config';
+export { FaLayersComponent } from './layers/layers.component';
+export { FaLayersTextComponent } from './layers/layers-text.component';
+export { FaLayersCounterComponent } from './layers/layers-counter.component';
+export { FaStackComponent } from './stack/stack.component';
+export { FaStackItemSizeDirective } from './stack/stack-item-size.directive';
+export { FaIconLibrary } from './icon-library';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUEwQixNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICcuL2ZvbnRhd2Vzb21lLm1vZHVsZSc7XG5leHBvcnQgeyBGYVByb3BzIH0gZnJvbSAnLi9zaGFyZWQvbW9kZWxzL3Byb3BzLm1vZGVsJztcbmV4cG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGYUR1b3RvbmVJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uL2R1b3RvbmUtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgRmFDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgeyBGYUxheWVyc0NvbXBvbmVudCB9IGZyb20gJy4vbGF5ZXJzL2xheWVycy5jb21wb25lbnQnO1xuZXhwb3J0IHsgRmFMYXllcnNUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXllcnMvbGF5ZXJzLXRleHQuY29tcG9uZW50JztcbmV4cG9ydCB7IEZhTGF5ZXJzQ291bnRlckNvbXBvbmVudCB9IGZyb20gJy4vbGF5ZXJzL2xheWVycy1jb3VudGVyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGYVN0YWNrQ29tcG9uZW50IH0gZnJvbSAnLi9zdGFjay9zdGFjay5jb21wb25lbnQnO1xuZXhwb3J0IHsgRmFTdGFja0l0ZW1TaXplRGlyZWN0aXZlIH0gZnJvbSAnLi9zdGFjay9zdGFjay1pdGVtLXNpemUuZGlyZWN0aXZlJztcbmV4cG9ydCB7IEZhSWNvbkxpYnJhcnksIEZhSWNvbkxpYnJhcnlJbnRlcmZhY2UgfSBmcm9tICcuL2ljb24tbGlicmFyeSc7XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-html-missing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-html-missing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-html-missing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+export const faWarnIfIconDefinitionMissing = (iconSpec) => {
+    throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1pZi1pY29uLWh0bWwtbWlzc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2hhcmVkL2Vycm9ycy93YXJuLWlmLWljb24taHRtbC1taXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsUUFBb0IsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQ2IscUNBQXFDLFFBQVEsQ0FBQyxRQUFRLGVBQWUsUUFBUSxDQUFDLE1BQU0sdUJBQXVCLENBQzVHLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uTG9va3VwIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcblxuZXhwb3J0IGNvbnN0IGZhV2FybklmSWNvbkRlZmluaXRpb25NaXNzaW5nID0gKGljb25TcGVjOiBJY29uTG9va3VwKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ291bGQgbm90IGZpbmQgaWNvbiB3aXRoIGljb25OYW1lPSR7aWNvblNwZWMuaWNvbk5hbWV9IGFuZCBwcmVmaXg9JHtpY29uU3BlYy5wcmVmaXh9IGluIHRoZSBpY29uIGxpYnJhcnkuYCxcbiAgKTtcbn07XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-spec-missing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-spec-missing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-icon-spec-missing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+export const faWarnIfIconSpecMissing = () => {
+    throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1pZi1pY29uLXNwZWMtbWlzc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2hhcmVkL2Vycm9ycy93YXJuLWlmLWljb24tc3BlYy1taXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtJQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7QUFDN0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZhV2FybklmSWNvblNwZWNNaXNzaW5nID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5IGBpY29uYCBpcyByZXF1aXJlZCBmb3IgYGZhLWljb25gL2BmYS1kdW90b25lLWljb25gIGNvbXBvbmVudHMuJyk7XG59O1xuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-parent-not-exist.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-parent-not-exist.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/errors/warn-if-parent-not-exist.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,9 @@
+/**
+ * Warns if parent component not existing.
+ */
+export const faWarnIfParentNotExist = (parent, parentName, childName) => {
+    if (!parent) {
+        throw new Error(`${childName} should be used as child of ${parentName} only.`);
+    }
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1pZi1wYXJlbnQtbm90LWV4aXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaGFyZWQvZXJyb3JzL3dhcm4taWYtcGFyZW50LW5vdC1leGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBVyxFQUFFLFVBQWtCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO0lBQzNGLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsU0FBUywrQkFBK0IsVUFBVSxRQUFRLENBQUMsQ0FBQztLQUNoRjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2FybnMgaWYgcGFyZW50IGNvbXBvbmVudCBub3QgZXhpc3RpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBmYVdhcm5JZlBhcmVudE5vdEV4aXN0ID0gKHBhcmVudDogYW55LCBwYXJlbnROYW1lOiBzdHJpbmcsIGNoaWxkTmFtZTogc3RyaW5nKSA9PiB7XG4gIGlmICghcGFyZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2NoaWxkTmFtZX0gc2hvdWxkIGJlIHVzZWQgYXMgY2hpbGQgb2YgJHtwYXJlbnROYW1lfSBvbmx5LmApO1xuICB9XG59O1xuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/models/props.model.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/models/props.model.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/models/props.model.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NoYXJlZC9tb2RlbHMvcHJvcHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZhU3ltYm9sLFxuICBGbGlwUHJvcCxcbiAgSWNvblByb3AsXG4gIFB1bGxQcm9wLFxuICBSb3RhdGVQcm9wLFxuICBTaXplUHJvcCxcbiAgU3R5bGVzLFxuICBUcmFuc2Zvcm0sXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XG5cbi8qKlxuICogRm9udGF3ZXNvbWUgcHJvcHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFQcm9wcyB7XG4gIG1hc2s/OiBJY29uUHJvcDtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzcGluPzogYm9vbGVhbjtcbiAgcHVsc2U/OiBib29sZWFuO1xuICBib3JkZXI/OiBib29sZWFuO1xuICBmaXhlZFdpZHRoPzogYm9vbGVhbjtcbiAgY291bnRlcj86IGJvb2xlYW47XG4gIGludmVyc2U/OiBib29sZWFuO1xuICBmbGlwPzogRmxpcFByb3A7XG4gIHNpemU/OiBTaXplUHJvcDtcbiAgcHVsbD86IFB1bGxQcm9wO1xuICByb3RhdGU/OiBSb3RhdGVQcm9wO1xuICB0cmFuc2Zvcm0/OiBzdHJpbmcgfCBUcmFuc2Zvcm07XG4gIHN5bWJvbD86IEZhU3ltYm9sO1xuICBzdHlsZT86IFN0eWxlcztcbiAgc3RhY2tJdGVtU2l6ZT86ICcxeCcgfCAnMngnO1xufVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/classlist.util.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/classlist.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/classlist.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,24 @@
+/**
+ * Fontawesome class list.
+ * Returns classes array by props.
+ */
+export const faClassList = (props) => {
+    const classes = {
+        'fa-spin': props.spin,
+        'fa-pulse': props.pulse,
+        'fa-fw': props.fixedWidth,
+        'fa-border': props.border,
+        'fa-inverse': props.inverse,
+        'fa-layers-counter': props.counter,
+        'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',
+        'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',
+        [`fa-${props.size}`]: props.size !== null,
+        [`fa-rotate-${props.rotate}`]: props.rotate !== null,
+        [`fa-pull-${props.pull}`]: props.pull !== null,
+        [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,
+    };
+    return Object.keys(classes)
+        .map((key) => (classes[key] ? key : null))
+        .filter((key) => key);
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NsaXN0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NoYXJlZC91dGlscy9jbGFzc2xpc3QudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQVksRUFBRTtJQUN0RCxNQUFNLE9BQU8sR0FBRztRQUNkLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNyQixVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDdkIsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQ3pCLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUN6QixZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDM0IsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDbEMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNO1FBQzFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTTtRQUN0RSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJO1FBQ3pDLENBQUMsYUFBYSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUk7UUFDcEQsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSTtRQUM5QyxDQUFDLFlBQVksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJO0tBQ2pFLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3hCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYVByb3BzIH0gZnJvbSAnLi4vbW9kZWxzL3Byb3BzLm1vZGVsJztcblxuLyoqXG4gKiBGb250YXdlc29tZSBjbGFzcyBsaXN0LlxuICogUmV0dXJucyBjbGFzc2VzIGFycmF5IGJ5IHByb3BzLlxuICovXG5leHBvcnQgY29uc3QgZmFDbGFzc0xpc3QgPSAocHJvcHM6IEZhUHJvcHMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgJ2ZhLXNwaW4nOiBwcm9wcy5zcGluLFxuICAgICdmYS1wdWxzZSc6IHByb3BzLnB1bHNlLFxuICAgICdmYS1mdyc6IHByb3BzLmZpeGVkV2lkdGgsXG4gICAgJ2ZhLWJvcmRlcic6IHByb3BzLmJvcmRlcixcbiAgICAnZmEtaW52ZXJzZSc6IHByb3BzLmludmVyc2UsXG4gICAgJ2ZhLWxheWVycy1jb3VudGVyJzogcHJvcHMuY291bnRlcixcbiAgICAnZmEtZmxpcC1ob3Jpem9udGFsJzogcHJvcHMuZmxpcCA9PT0gJ2hvcml6b250YWwnIHx8IHByb3BzLmZsaXAgPT09ICdib3RoJyxcbiAgICAnZmEtZmxpcC12ZXJ0aWNhbCc6IHByb3BzLmZsaXAgPT09ICd2ZXJ0aWNhbCcgfHwgcHJvcHMuZmxpcCA9PT0gJ2JvdGgnLFxuICAgIFtgZmEtJHtwcm9wcy5zaXplfWBdOiBwcm9wcy5zaXplICE9PSBudWxsLFxuICAgIFtgZmEtcm90YXRlLSR7cHJvcHMucm90YXRlfWBdOiBwcm9wcy5yb3RhdGUgIT09IG51bGwsXG4gICAgW2BmYS1wdWxsLSR7cHJvcHMucHVsbH1gXTogcHJvcHMucHVsbCAhPT0gbnVsbCxcbiAgICBbYGZhLXN0YWNrLSR7cHJvcHMuc3RhY2tJdGVtU2l6ZX1gXTogcHJvcHMuc3RhY2tJdGVtU2l6ZSAhPSBudWxsLFxuICB9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhjbGFzc2VzKVxuICAgIC5tYXAoKGtleSkgPT4gKGNsYXNzZXNba2V5XSA/IGtleSA6IG51bGwpKVxuICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5KTtcbn07XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/is-icon-lookup.util.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/is-icon-lookup.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/is-icon-lookup.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+/**
+ * Returns if is IconLookup or not.
+ */
+export const isIconLookup = (i) => {
+    return i.prefix !== undefined && i.iconName !== undefined;
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaWNvbi1sb29rdXAudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2hhcmVkL3V0aWxzL2lzLWljb24tbG9va3VwLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFXLEVBQW1CLEVBQUU7SUFDM0QsT0FBUSxDQUFnQixDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUssQ0FBZ0IsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDO0FBQzVGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25Mb29rdXAsIEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcblxuLyoqXG4gKiBSZXR1cm5zIGlmIGlzIEljb25Mb29rdXAgb3Igbm90LlxuICovXG5leHBvcnQgY29uc3QgaXNJY29uTG9va3VwID0gKGk6IEljb25Qcm9wKTogaSBpcyBJY29uTG9va3VwID0+IHtcbiAgcmV0dXJuIChpIGFzIEljb25Mb29rdXApLnByZWZpeCAhPT0gdW5kZWZpbmVkICYmIChpIGFzIEljb25Mb29rdXApLmljb25OYW1lICE9PSB1bmRlZmluZWQ7XG59O1xuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/normalize-icon-spec.util.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/normalize-icon-spec.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/shared/utils/normalize-icon-spec.util.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import { isIconLookup } from './is-icon-lookup.util';
+/**
+ * Normalizing icon spec.
+ */
+export const faNormalizeIconSpec = (iconSpec, defaultPrefix) => {
+    if (isIconLookup(iconSpec)) {
+        return iconSpec;
+    }
+    if (Array.isArray(iconSpec) && iconSpec.length === 2) {
+        return { prefix: iconSpec[0], iconName: iconSpec[1] };
+    }
+    if (typeof iconSpec === 'string') {
+        return { prefix: defaultPrefix, iconName: iconSpec };
+    }
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWljb24tc3BlYy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zaGFyZWQvdXRpbHMvbm9ybWFsaXplLWljb24tc3BlYy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLFFBQW1DLEVBQ25DLGFBQXlCLEVBQ0ksRUFBRTtJQUMvQixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMxQixPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSyxRQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3ZEO0lBRUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7UUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQ3REO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIEljb25Mb29rdXAsIEljb25QcmVmaXgsIEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcbmltcG9ydCB7IGlzSWNvbkxvb2t1cCB9IGZyb20gJy4vaXMtaWNvbi1sb29rdXAudXRpbCc7XG5cbi8qKlxuICogTm9ybWFsaXppbmcgaWNvbiBzcGVjLlxuICovXG5leHBvcnQgY29uc3QgZmFOb3JtYWxpemVJY29uU3BlYyA9IChcbiAgaWNvblNwZWM6IEljb25Qcm9wIHwgSWNvbkRlZmluaXRpb24sXG4gIGRlZmF1bHRQcmVmaXg6IEljb25QcmVmaXgsXG4pOiBJY29uTG9va3VwIHwgSWNvbkRlZmluaXRpb24gPT4ge1xuICBpZiAoaXNJY29uTG9va3VwKGljb25TcGVjKSkge1xuICAgIHJldHVybiBpY29uU3BlYztcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGljb25TcGVjKSAmJiAoaWNvblNwZWMgYXMgc3RyaW5nW10pLmxlbmd0aCA9PT0gMikge1xuICAgIHJldHVybiB7IHByZWZpeDogaWNvblNwZWNbMF0sIGljb25OYW1lOiBpY29uU3BlY1sxXSB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpY29uU3BlYyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBwcmVmaXg6IGRlZmF1bHRQcmVmaXgsIGljb25OYW1lOiBpY29uU3BlYyB9O1xuICB9XG59O1xuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack-item-size.directive.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack-item-size.directive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack-item-size.directive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+import { Directive, Input } from '@angular/core';
+export class FaStackItemSizeDirective {
+    constructor() {
+        /**
+         * Specify whether icon inside {@link FaStackComponent} should be rendered in
+         * regular size (1x) or as a larger icon (2x).
+         */
+        this.stackItemSize = '1x';
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +
+                'Set size on the enclosing fa-stack instead: <fa-stack size="4x">...</fa-stack>.');
+        }
+    }
+}
+FaStackItemSizeDirective.decorators = [
+    { type: Directive, args: [{
+                // tslint:disable-next-line:directive-selector
+                selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',
+            },] }
+];
+FaStackItemSizeDirective.propDecorators = {
+    stackItemSize: [{ type: Input }],
+    size: [{ type: Input }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staXRlbS1zaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RhY2svc3RhY2staXRlbS1zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFRM0UsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQUtFOzs7V0FHRztRQUNNLGtCQUFhLEdBQWdCLElBQUksQ0FBQztJQWU3QyxDQUFDO0lBUkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUNiLHNFQUFzRTtnQkFDcEUsaUZBQWlGLENBQ3BGLENBQUM7U0FDSDtJQUNILENBQUM7OztZQXZCRixTQUFTLFNBQUM7Z0JBQ1QsOENBQThDO2dCQUM5QyxRQUFRLEVBQUUsdURBQXVEO2FBQ2xFOzs7NEJBTUUsS0FBSzttQkFLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaXplUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XG5pbXBvcnQgeyBGYVN0YWNrQ29tcG9uZW50IH0gZnJvbSAnLi9zdGFjay5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ZhLWljb25bc3RhY2tJdGVtU2l6ZV0sZmEtZHVvdG9uZS1pY29uW3N0YWNrSXRlbVNpemVdJyxcbn0pXG5leHBvcnQgY2xhc3MgRmFTdGFja0l0ZW1TaXplRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciBpY29uIGluc2lkZSB7QGxpbmsgRmFTdGFja0NvbXBvbmVudH0gc2hvdWxkIGJlIHJlbmRlcmVkIGluXG4gICAqIHJlZ3VsYXIgc2l6ZSAoMXgpIG9yIGFzIGEgbGFyZ2VyIGljb24gKDJ4KS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YWNrSXRlbVNpemU6ICcxeCcgfCAnMngnID0gJzF4JztcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKSBzaXplPzogU2l6ZVByb3A7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnc2l6ZScgaW4gY2hhbmdlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnZmEtaWNvbiBpcyBub3QgYWxsb3dlZCB0byBjdXN0b21pemUgc2l6ZSB3aGVuIHVzZWQgaW5zaWRlIGZhLXN0YWNrLiAnICtcbiAgICAgICAgICAnU2V0IHNpemUgb24gdGhlIGVuY2xvc2luZyBmYS1zdGFjayBpbnN0ZWFkOiA8ZmEtc3RhY2sgc2l6ZT1cIjR4XCI+Li4uPC9mYS1zdGFjaz4uJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack.component.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/stack/stack.component.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,34 @@
+import { Component, ElementRef, Input, Renderer2 } from '@angular/core';
+export class FaStackComponent {
+    constructor(renderer, elementRef) {
+        this.renderer = renderer;
+        this.elementRef = elementRef;
+    }
+    ngOnInit() {
+        this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            if (changes.size.currentValue != null) {
+                this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
+            }
+            if (changes.size.previousValue != null) {
+                this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
+            }
+        }
+    }
+}
+FaStackComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-stack',
+                template: `<ng-content></ng-content>`
+            },] }
+];
+FaStackComponent.ctorParameters = () => [
+    { type: Renderer2 },
+    { type: ElementRef }
+];
+FaStackComponent.propDecorators = {
+    size: [{ type: Input }]
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGFjay9zdGFjay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBTzFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFTM0IsWUFBb0IsUUFBbUIsRUFBVSxVQUFzQjtRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFM0UsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQ3JCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQzthQUMxRjtZQUNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQzthQUM5RjtTQUNGO0lBQ0gsQ0FBQzs7O1lBNUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsUUFBUSxFQUFFLDJCQUEyQjthQUN0Qzs7O1lBTnlELFNBQVM7WUFBL0MsVUFBVTs7O21CQWMzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2l6ZVByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmYS1zdGFjaycsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG59KVxuZXhwb3J0IGNsYXNzIEZhU3RhY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBzdGFja2VkIGljb24uXG4gICAqIE5vdGUgdGhhdCBzdGFja2VkIGljb24gaXMgYnkgZGVmYXVsdCAyIHRpbWVzIGJpZ2dlciwgdGhhbiBub24tc3RhY2tlZCBpY29uLlxuICAgKiBZb3UnbGwgbmVlZCB0byBzZXQgc2l6ZSB1c2luZyBjdXN0b20gQ1NTIHRvIGFsaWduIHN0YWNrZWQgaWNvbiB3aXRoIGFcbiAgICogc2ltcGxlIG9uZS4gRS5nLiBgZmEtc3RhY2sgeyBmb250LXNpemU6IDAuNWVtOyB9YC5cbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiBTaXplUHJvcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZmEtc3RhY2snKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ3NpemUnIGluIGNoYW5nZXMpIHtcbiAgICAgIGlmIChjaGFuZ2VzLnNpemUuY3VycmVudFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYGZhLSR7Y2hhbmdlcy5zaXplLmN1cnJlbnRWYWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuZ2VzLnNpemUucHJldmlvdXNWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGBmYS0ke2NoYW5nZXMuc2l6ZS5wcmV2aW91c1ZhbHVlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/fortawesome-angular-fontawesome-testing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/fortawesome-angular-fontawesome-testing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/fortawesome-angular-fontawesome-testing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+export { MockFaIconLibrary as ɵa } from './icon/mock-icon-library.service';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ydGF3ZXNvbWUtYW5ndWxhci1mb250YXdlc29tZS10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdGluZy9zcmMvZm9ydGF3ZXNvbWUtYW5ndWxhci1mb250YXdlc29tZS10ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge01vY2tGYUljb25MaWJyYXJ5IGFzIMm1YX0gZnJvbSAnLi9pY29uL21vY2staWNvbi1saWJyYXJ5LnNlcnZpY2UnOyJdfQ==
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/icon/mock-icon-library.service.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/icon/mock-icon-library.service.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/icon/mock-icon-library.service.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,25 @@
+import { Injectable } from '@angular/core';
+import * as i0 from "@angular/core";
+export const dummyIcon = {
+    prefix: 'fad',
+    iconName: 'dummy',
+    icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],
+};
+export class MockFaIconLibrary {
+    addIcons() {
+        throw new Error('Attempt to add an icon to the MockFaIconLibrary.');
+    }
+    addIconPacks() {
+        throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');
+    }
+    getIconDefinition(prefix, name) {
+        return dummyIcon;
+    }
+}
+MockFaIconLibrary.ɵprov = i0.ɵɵdefineInjectable({ factory: function MockFaIconLibrary_Factory() { return new MockFaIconLibrary(); }, token: MockFaIconLibrary, providedIn: "root" });
+MockFaIconLibrary.decorators = [
+    { type: Injectable, args: [{
+                providedIn: 'root',
+            },] }
+];
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1pY29uLWxpYnJhcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3Rpbmcvc3JjL2ljb24vbW9jay1pY29uLWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQW1CO0lBQ3ZDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsUUFBUSxFQUFFLE9BQW1CO0lBQzdCLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQztDQUN2RCxDQUFDO0FBS0YsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixRQUFRO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFrQixFQUFFLElBQWM7UUFDbEQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7OztZQWRGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhSWNvbkxpYnJhcnlJbnRlcmZhY2UgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiwgSWNvbk5hbWUsIEljb25QcmVmaXggfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuXG5leHBvcnQgY29uc3QgZHVtbXlJY29uOiBJY29uRGVmaW5pdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFkJyxcbiAgaWNvbk5hbWU6ICdkdW1teScgYXMgSWNvbk5hbWUsXG4gIGljb246IFs1MTIsIDUxMiwgW10sICdmMDMwJywgJ001MCA1MCBINDYyIFY0NjIgSDUwIFonXSxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2NrRmFJY29uTGlicmFyeSBpbXBsZW1lbnRzIEZhSWNvbkxpYnJhcnlJbnRlcmZhY2Uge1xuICBhZGRJY29ucygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHQgdG8gYWRkIGFuIGljb24gdG8gdGhlIE1vY2tGYUljb25MaWJyYXJ5LicpO1xuICB9XG5cbiAgYWRkSWNvblBhY2tzKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdCB0byBhZGQgYW4gaWNvbiBwYWNrIHRvIHRoZSBNb2NrRmFJY29uTGlicmFyeS4nKTtcbiAgfVxuXG4gIGdldEljb25EZWZpbml0aW9uKHByZWZpeDogSWNvblByZWZpeCwgbmFtZTogSWNvbk5hbWUpOiBJY29uRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGR1bW15SWNvbjtcbiAgfVxufVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/public_api.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/public_api.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/public_api.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export { FontAwesomeTestingModule } from './testing.module';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3Rpbmcvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGb250QXdlc29tZVRlc3RpbmdNb2R1bGUgfSBmcm9tICcuL3Rlc3RpbmcubW9kdWxlJztcbiJdfQ==
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/testing.module.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/testing.module.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/esm2015/testing/testing.module.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core';
+import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
+import { MockFaIconLibrary } from './icon/mock-icon-library.service';
+export class FontAwesomeTestingModule {
+}
+FontAwesomeTestingModule.decorators = [
+    { type: NgModule, args: [{
+                exports: [FontAwesomeModule],
+                providers: [{ provide: FaIconLibrary, useExisting: MockFaIconLibrary }],
+            },] }
+];
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0aW5nL3NyYy90ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1yRSxNQUFNLE9BQU8sd0JBQXdCOzs7WUFKcEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUM7YUFDeEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFJY29uTGlicmFyeSwgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBNb2NrRmFJY29uTGlicmFyeSB9IGZyb20gJy4vaWNvbi9tb2NrLWljb24tbGlicmFyeS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW0ZvbnRBd2Vzb21lTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGYUljb25MaWJyYXJ5LCB1c2VFeGlzdGluZzogTW9ja0ZhSWNvbkxpYnJhcnkgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvbnRBd2Vzb21lVGVzdGluZ01vZHVsZSB7fVxuIl19
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,572 @@
+import { ɵɵdefineInjectable, Injectable, Directive, Input, Component, Renderer2, ElementRef, Optional, HostBinding, NgModule } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { findIconDefinition, parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';
+
+class FaConfig {
+    constructor() {
+        /**
+         * Default prefix to use, when one is not provided with the icon name.
+         *
+         * @default 'fas'
+         */
+        this.defaultPrefix = 'fas';
+        /**
+         * Provides a fallback icon to use whilst main icon is being loaded asynchronously.
+         * When value is null, then fa-icon component will throw an error if icon input is missing.
+         * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.
+         *
+         * @default null
+         */
+        this.fallbackIcon = null;
+        /**
+         * Whether components should lookup icon definitions in the global icon
+         * library (the one available from
+         * `import { library } from '@fortawesome/fontawesome-svg-core')`.
+         *
+         * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md
+         * for detailed description of library modes.
+         *
+         * - 'unset' - Components should lookup icon definitions in the global library
+         * and emit warning if they find a definition there. This option is a default
+         * to assist existing applications with a migration. Applications are expected
+         * to switch to using {@link FaIconLibrary}.
+         * - true - Components should lookup icon definitions in the global library.
+         * Note that global icon library is deprecated and support for it will be
+         * removed. This option can be used to temporarily suppress warnings.
+         * - false - Components should not lookup icon definitions in the global
+         * library. Library will throw an error if missing icon is found in the global
+         * library.
+         *
+         * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will
+         * be changed to false. In 0.8.0 the option will be removed together with the
+         * support for the global icon library.
+         *
+         * @default false
+         */
+        this.globalLibrary = false;
+    }
+}
+FaConfig.ɵprov = ɵɵdefineInjectable({ factory: function FaConfig_Factory() { return new FaConfig(); }, token: FaConfig, providedIn: "root" });
+FaConfig.decorators = [
+    { type: Injectable, args: [{ providedIn: 'root' },] }
+];
+
+class FaIconLibrary {
+    constructor() {
+        this.definitions = {};
+    }
+    addIcons(...icons) {
+        for (const icon of icons) {
+            if (!(icon.prefix in this.definitions)) {
+                this.definitions[icon.prefix] = {};
+            }
+            this.definitions[icon.prefix][icon.iconName] = icon;
+        }
+    }
+    addIconPacks(...packs) {
+        for (const pack of packs) {
+            const icons = Object.keys(pack).map((key) => pack[key]);
+            this.addIcons(...icons);
+        }
+    }
+    getIconDefinition(prefix, name) {
+        if (prefix in this.definitions && name in this.definitions[prefix]) {
+            return this.definitions[prefix][name];
+        }
+        return null;
+    }
+}
+FaIconLibrary.ɵprov = ɵɵdefineInjectable({ factory: function FaIconLibrary_Factory() { return new FaIconLibrary(); }, token: FaIconLibrary, providedIn: "root" });
+FaIconLibrary.decorators = [
+    { type: Injectable, args: [{ providedIn: 'root' },] }
+];
+
+const faWarnIfIconDefinitionMissing = (iconSpec) => {
+    throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);
+};
+
+const faWarnIfIconSpecMissing = () => {
+    throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');
+};
+
+/**
+ * Fontawesome class list.
+ * Returns classes array by props.
+ */
+const faClassList = (props) => {
+    const classes = {
+        'fa-spin': props.spin,
+        'fa-pulse': props.pulse,
+        'fa-fw': props.fixedWidth,
+        'fa-border': props.border,
+        'fa-inverse': props.inverse,
+        'fa-layers-counter': props.counter,
+        'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',
+        'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',
+        [`fa-${props.size}`]: props.size !== null,
+        [`fa-rotate-${props.rotate}`]: props.rotate !== null,
+        [`fa-pull-${props.pull}`]: props.pull !== null,
+        [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,
+    };
+    return Object.keys(classes)
+        .map((key) => (classes[key] ? key : null))
+        .filter((key) => key);
+};
+
+/**
+ * Returns if is IconLookup or not.
+ */
+const isIconLookup = (i) => {
+    return i.prefix !== undefined && i.iconName !== undefined;
+};
+
+/**
+ * Normalizing icon spec.
+ */
+const faNormalizeIconSpec = (iconSpec, defaultPrefix) => {
+    if (isIconLookup(iconSpec)) {
+        return iconSpec;
+    }
+    if (Array.isArray(iconSpec) && iconSpec.length === 2) {
+        return { prefix: iconSpec[0], iconName: iconSpec[1] };
+    }
+    if (typeof iconSpec === 'string') {
+        return { prefix: defaultPrefix, iconName: iconSpec };
+    }
+};
+
+class FaStackItemSizeDirective {
+    constructor() {
+        /**
+         * Specify whether icon inside {@link FaStackComponent} should be rendered in
+         * regular size (1x) or as a larger icon (2x).
+         */
+        this.stackItemSize = '1x';
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +
+                'Set size on the enclosing fa-stack instead: <fa-stack size="4x">...</fa-stack>.');
+        }
+    }
+}
+FaStackItemSizeDirective.decorators = [
+    { type: Directive, args: [{
+                // tslint:disable-next-line:directive-selector
+                selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',
+            },] }
+];
+FaStackItemSizeDirective.propDecorators = {
+    stackItemSize: [{ type: Input }],
+    size: [{ type: Input }]
+};
+
+class FaStackComponent {
+    constructor(renderer, elementRef) {
+        this.renderer = renderer;
+        this.elementRef = elementRef;
+    }
+    ngOnInit() {
+        this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            if (changes.size.currentValue != null) {
+                this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
+            }
+            if (changes.size.previousValue != null) {
+                this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
+            }
+        }
+    }
+}
+FaStackComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-stack',
+                template: `<ng-content></ng-content>`
+            },] }
+];
+FaStackComponent.ctorParameters = () => [
+    { type: Renderer2 },
+    { type: ElementRef }
+];
+FaStackComponent.propDecorators = {
+    size: [{ type: Input }]
+};
+
+class FaIconComponent {
+    constructor(sanitizer, config, iconLibrary, stackItem, stack) {
+        this.sanitizer = sanitizer;
+        this.config = config;
+        this.iconLibrary = iconLibrary;
+        this.stackItem = stackItem;
+        this.classes = [];
+        if (stack != null && stackItem == null) {
+            console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +
+                'fa-stack. Example: <fa-icon stackItemSize="2x"></fa-icon>.');
+        }
+    }
+    ngOnChanges(changes) {
+        if (this.icon == null && this.config.fallbackIcon == null) {
+            return faWarnIfIconSpecMissing();
+        }
+        let iconToBeRendered = null;
+        if (this.icon == null) {
+            iconToBeRendered = this.config.fallbackIcon;
+        }
+        else {
+            iconToBeRendered = this.icon;
+        }
+        if (changes) {
+            const iconDefinition = this.findIconDefinition(iconToBeRendered);
+            if (iconDefinition != null) {
+                const params = this.buildParams();
+                this.renderIcon(iconDefinition, params);
+            }
+        }
+    }
+    /**
+     * Programmatically trigger rendering of the icon.
+     *
+     * This method is useful, when creating {@link FaIconComponent} dynamically or
+     * changing its inputs programmatically as in these cases icon won't be
+     * re-rendered automatically.
+     */
+    render() {
+        this.ngOnChanges({});
+    }
+    findIconDefinition(i) {
+        const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);
+        if ('icon' in lookup) {
+            return lookup;
+        }
+        const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);
+        if (definition != null) {
+            return definition;
+        }
+        const globalDefinition = findIconDefinition(lookup);
+        if (globalDefinition != null) {
+            const message = 'Global icon library is deprecated. ' +
+                'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +
+                'for the migration instructions.';
+            if (this.config.globalLibrary === 'unset') {
+                console.error('FontAwesome: ' + message);
+            }
+            else if (!this.config.globalLibrary) {
+                throw new Error(message);
+            }
+            return globalDefinition;
+        }
+        faWarnIfIconDefinitionMissing(lookup);
+        return null;
+    }
+    buildParams() {
+        const classOpts = {
+            flip: this.flip,
+            spin: this.spin,
+            pulse: this.pulse,
+            border: this.border,
+            inverse: this.inverse,
+            size: this.size || null,
+            pull: this.pull || null,
+            rotate: this.rotate || null,
+            fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,
+            stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,
+        };
+        const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
+        return {
+            title: this.title,
+            transform: parsedTransform,
+            classes: [...faClassList(classOpts), ...this.classes],
+            mask: this.mask != null ? this.findIconDefinition(this.mask) : null,
+            styles: this.styles != null ? this.styles : {},
+            symbol: this.symbol,
+            attributes: {
+                role: this.a11yRole,
+            },
+        };
+    }
+    renderIcon(definition, params) {
+        const renderedIcon = icon(definition, params);
+        this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\n'));
+    }
+}
+FaIconComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-icon',
+                template: ``,
+                host: {
+                    class: 'ng-fa-icon',
+                    '[attr.title]': 'title',
+                }
+            },] }
+];
+FaIconComponent.ctorParameters = () => [
+    { type: DomSanitizer },
+    { type: FaConfig },
+    { type: FaIconLibrary },
+    { type: FaStackItemSizeDirective, decorators: [{ type: Optional }] },
+    { type: FaStackComponent, decorators: [{ type: Optional }] }
+];
+FaIconComponent.propDecorators = {
+    icon: [{ type: Input }],
+    title: [{ type: Input }],
+    spin: [{ type: Input }],
+    pulse: [{ type: Input }],
+    mask: [{ type: Input }],
+    styles: [{ type: Input }],
+    flip: [{ type: Input }],
+    size: [{ type: Input }],
+    pull: [{ type: Input }],
+    border: [{ type: Input }],
+    inverse: [{ type: Input }],
+    symbol: [{ type: Input }],
+    rotate: [{ type: Input }],
+    fixedWidth: [{ type: Input }],
+    classes: [{ type: Input }],
+    transform: [{ type: Input }],
+    a11yRole: [{ type: Input }],
+    renderedIconHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+
+class FaDuotoneIconComponent extends FaIconComponent {
+    findIconDefinition(i) {
+        const definition = super.findIconDefinition(i);
+        if (definition != null && !Array.isArray(definition.icon[4])) {
+            throw new Error('The specified icon does not appear to be a Duotone icon. ' +
+                'Check that you specified the correct style: ' +
+                `<fa-duotone-icon [icon]="['fad', '${definition.iconName}']"></fa-duotone-icon> ` +
+                `or use: <fa-icon icon="${definition.iconName}"></fa-icon> instead.`);
+        }
+        return definition;
+    }
+    buildParams() {
+        const params = super.buildParams();
+        if (this.swapOpacity === true || this.swapOpacity === 'true') {
+            params.classes.push('fa-swap-opacity');
+        }
+        if (this.primaryOpacity != null) {
+            params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();
+        }
+        if (this.secondaryOpacity != null) {
+            params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();
+        }
+        if (this.primaryColor != null) {
+            params.styles['--fa-primary-color'] = this.primaryColor;
+        }
+        if (this.secondaryColor != null) {
+            params.styles['--fa-secondary-color'] = this.secondaryColor;
+        }
+        return params;
+    }
+}
+FaDuotoneIconComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-duotone-icon',
+                template: ``
+            },] }
+];
+FaDuotoneIconComponent.propDecorators = {
+    swapOpacity: [{ type: Input }],
+    primaryOpacity: [{ type: Input }],
+    secondaryOpacity: [{ type: Input }],
+    primaryColor: [{ type: Input }],
+    secondaryColor: [{ type: Input }]
+};
+
+/**
+ * Warns if parent component not existing.
+ */
+const faWarnIfParentNotExist = (parent, parentName, childName) => {
+    if (!parent) {
+        throw new Error(`${childName} should be used as child of ${parentName} only.`);
+    }
+};
+
+/**
+ * Fontawesome layers.
+ */
+class FaLayersComponent {
+    constructor(renderer, elementRef, config) {
+        this.renderer = renderer;
+        this.elementRef = elementRef;
+        this.config = config;
+    }
+    ngOnInit() {
+        this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');
+        this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;
+    }
+    ngOnChanges(changes) {
+        if ('size' in changes) {
+            if (changes.size.currentValue != null) {
+                this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
+            }
+            if (changes.size.previousValue != null) {
+                this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
+            }
+        }
+    }
+}
+FaLayersComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers',
+                template: `<ng-content></ng-content>`
+            },] }
+];
+FaLayersComponent.ctorParameters = () => [
+    { type: Renderer2 },
+    { type: ElementRef },
+    { type: FaConfig }
+];
+FaLayersComponent.propDecorators = {
+    size: [{ type: Input }],
+    fixedWidth: [{ type: Input }, { type: HostBinding, args: ['class.fa-fw',] }]
+};
+
+class FaLayersCounterComponent {
+    constructor(parent, sanitizer) {
+        this.parent = parent;
+        this.sanitizer = sanitizer;
+        this.classes = [];
+        faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+    }
+    ngOnChanges(changes) {
+        if (changes) {
+            const params = this.buildParams();
+            this.updateContent(params);
+        }
+    }
+    buildParams() {
+        return {
+            title: this.title,
+            classes: this.classes,
+            styles: this.styles,
+        };
+    }
+    updateContent(params) {
+        this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));
+    }
+}
+FaLayersCounterComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers-counter',
+                template: '',
+                host: {
+                    class: 'ng-fa-layers-counter',
+                }
+            },] }
+];
+FaLayersCounterComponent.ctorParameters = () => [
+    { type: FaLayersComponent, decorators: [{ type: Optional }] },
+    { type: DomSanitizer }
+];
+FaLayersCounterComponent.propDecorators = {
+    content: [{ type: Input }],
+    title: [{ type: Input }],
+    styles: [{ type: Input }],
+    classes: [{ type: Input }],
+    renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+
+class FaLayersTextComponent {
+    constructor(parent, sanitizer) {
+        this.parent = parent;
+        this.sanitizer = sanitizer;
+        this.classes = [];
+        faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
+    }
+    ngOnChanges(changes) {
+        if (changes) {
+            const params = this.buildParams();
+            this.updateContent(params);
+        }
+    }
+    /**
+     * Updating params by component props.
+     */
+    buildParams() {
+        const classOpts = {
+            flip: this.flip,
+            spin: this.spin,
+            pulse: this.pulse,
+            border: this.border,
+            inverse: this.inverse,
+            size: this.size || null,
+            pull: this.pull || null,
+            rotate: this.rotate || null,
+            fixedWidth: this.fixedWidth,
+        };
+        const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
+        return {
+            transform: parsedTransform,
+            classes: [...faClassList(classOpts), ...this.classes],
+            title: this.title,
+            styles: this.styles,
+        };
+    }
+    updateContent(params) {
+        this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\n'));
+    }
+}
+FaLayersTextComponent.decorators = [
+    { type: Component, args: [{
+                selector: 'fa-layers-text',
+                template: '',
+                host: {
+                    class: 'ng-fa-layers-text',
+                }
+            },] }
+];
+FaLayersTextComponent.ctorParameters = () => [
+    { type: FaLayersComponent, decorators: [{ type: Optional }] },
+    { type: DomSanitizer }
+];
+FaLayersTextComponent.propDecorators = {
+    content: [{ type: Input }],
+    title: [{ type: Input }],
+    styles: [{ type: Input }],
+    classes: [{ type: Input }],
+    spin: [{ type: Input }],
+    pulse: [{ type: Input }],
+    flip: [{ type: Input }],
+    size: [{ type: Input }],
+    pull: [{ type: Input }],
+    border: [{ type: Input }],
+    inverse: [{ type: Input }],
+    rotate: [{ type: Input }],
+    fixedWidth: [{ type: Input }],
+    transform: [{ type: Input }],
+    renderedHTML: [{ type: HostBinding, args: ['innerHTML',] }]
+};
+
+class FontAwesomeModule {
+}
+FontAwesomeModule.decorators = [
+    { type: NgModule, args: [{
+                declarations: [
+                    FaIconComponent,
+                    FaDuotoneIconComponent,
+                    FaLayersComponent,
+                    FaLayersTextComponent,
+                    FaLayersCounterComponent,
+                    FaStackComponent,
+                    FaStackItemSizeDirective,
+                ],
+                exports: [
+                    FaIconComponent,
+                    FaDuotoneIconComponent,
+                    FaLayersComponent,
+                    FaLayersTextComponent,
+                    FaLayersCounterComponent,
+                    FaStackComponent,
+                    FaStackItemSizeDirective,
+                ],
+            },] }
+];
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };
+//# sourceMappingURL=angular-fontawesome.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/angular-fontawesome.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"angular-fontawesome.js","sources":["../../../src/lib/config.ts","../../../src/lib/icon-library.ts","../../../src/lib/shared/errors/warn-if-icon-html-missing.ts","../../../src/lib/shared/errors/warn-if-icon-spec-missing.ts","../../../src/lib/shared/utils/classlist.util.ts","../../../src/lib/shared/utils/is-icon-lookup.util.ts","../../../src/lib/shared/utils/normalize-icon-spec.util.ts","../../../src/lib/stack/stack-item-size.directive.ts","../../../src/lib/stack/stack.component.ts","../../../src/lib/icon/icon.component.ts","../../../src/lib/icon/duotone-icon.component.ts","../../../src/lib/shared/errors/warn-if-parent-not-exist.ts","../../../src/lib/layers/layers.component.ts","../../../src/lib/layers/layers-counter.component.ts","../../../src/lib/layers/layers-text.component.ts","../../../src/lib/fontawesome.module.ts","../../../src/lib/angular-fontawesome.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IconDefinition, IconPrefix } from '@fortawesome/fontawesome-common-types';\nimport { FaIconLibrary } from './icon-library';\n\n@Injectable({ providedIn: 'root' })\nexport class FaConfig {\n  /**\n   * Default prefix to use, when one is not provided with the icon name.\n   *\n   * @default 'fas'\n   */\n  defaultPrefix: IconPrefix = 'fas';\n\n  /**\n   * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n   * When value is null, then fa-icon component will throw an error if icon input is missing.\n   * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n   *\n   * @default null\n   */\n  fallbackIcon: IconDefinition = null;\n\n  /**\n   * Set icons to the same fixed width.\n   * @see {@link: https://fontawesome.com/how-to-use/on-the-web/styling/fixed-width-icons}\n   * @default false\n   */\n  fixedWidth?: boolean;\n\n  /**\n   * Whether components should lookup icon definitions in the global icon\n   * library (the one available from\n   * `import { library } from '@fortawesome/fontawesome-svg-core')`.\n   *\n   * See https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/icon-library.md\n   * for detailed description of library modes.\n   *\n   * - 'unset' - Components should lookup icon definitions in the global library\n   * and emit warning if they find a definition there. This option is a default\n   * to assist existing applications with a migration. Applications are expected\n   * to switch to using {@link FaIconLibrary}.\n   * - true - Components should lookup icon definitions in the global library.\n   * Note that global icon library is deprecated and support for it will be\n   * removed. This option can be used to temporarily suppress warnings.\n   * - false - Components should not lookup icon definitions in the global\n   * library. Library will throw an error if missing icon is found in the global\n   * library.\n   *\n   * @deprecated This option is deprecated since 0.5.0. In 0.6.0 default will\n   * be changed to false. In 0.8.0 the option will be removed together with the\n   * support for the global icon library.\n   *\n   * @default false\n   */\n  globalLibrary: boolean | 'unset' = false;\n}\n","import { Injectable } from '@angular/core';\nimport { IconDefinition, IconName, IconPack, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport interface FaIconLibraryInterface {\n  addIcons(...icons: IconDefinition[]): void;\n  addIconPacks(...packs: IconPack[]): void;\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FaIconLibrary implements FaIconLibraryInterface {\n  private definitions: { [prefix: string]: { [name: string]: IconDefinition } } = {};\n\n  addIcons(...icons: IconDefinition[]) {\n    for (const icon of icons) {\n      if (!(icon.prefix in this.definitions)) {\n        this.definitions[icon.prefix] = {};\n      }\n      this.definitions[icon.prefix][icon.iconName] = icon;\n    }\n  }\n\n  addIconPacks(...packs: IconPack[]) {\n    for (const pack of packs) {\n      const icons = Object.keys(pack).map((key) => pack[key]);\n      this.addIcons(...icons);\n    }\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null {\n    if (prefix in this.definitions && name in this.definitions[prefix]) {\n      return this.definitions[prefix][name];\n    }\n    return null;\n  }\n}\n","import { IconLookup } from '@fortawesome/fontawesome-svg-core';\n\nexport const faWarnIfIconDefinitionMissing = (iconSpec: IconLookup) => {\n  throw new Error(\n    `Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`,\n  );\n};\n","export const faWarnIfIconSpecMissing = () => {\n  throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n","import { FaProps } from '../models/props.model';\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nexport const faClassList = (props: FaProps): string[] => {\n  const classes = {\n    'fa-spin': props.spin,\n    'fa-pulse': props.pulse,\n    'fa-fw': props.fixedWidth,\n    'fa-border': props.border,\n    'fa-inverse': props.inverse,\n    'fa-layers-counter': props.counter,\n    'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n    'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n    [`fa-${props.size}`]: props.size !== null,\n    [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n    [`fa-pull-${props.pull}`]: props.pull !== null,\n    [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,\n  };\n\n  return Object.keys(classes)\n    .map((key) => (classes[key] ? key : null))\n    .filter((key) => key);\n};\n","import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core';\n\n/**\n * Returns if is IconLookup or not.\n */\nexport const isIconLookup = (i: IconProp): i is IconLookup => {\n  return (i as IconLookup).prefix !== undefined && (i as IconLookup).iconName !== undefined;\n};\n","import { IconDefinition, IconLookup, IconPrefix, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { isIconLookup } from './is-icon-lookup.util';\n\n/**\n * Normalizing icon spec.\n */\nexport const faNormalizeIconSpec = (\n  iconSpec: IconProp | IconDefinition,\n  defaultPrefix: IconPrefix,\n): IconLookup | IconDefinition => {\n  if (isIconLookup(iconSpec)) {\n    return iconSpec;\n  }\n\n  if (Array.isArray(iconSpec) && (iconSpec as string[]).length === 2) {\n    return { prefix: iconSpec[0], iconName: iconSpec[1] };\n  }\n\n  if (typeof iconSpec === 'string') {\n    return { prefix: defaultPrefix, iconName: iconSpec };\n  }\n};\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaStackComponent } from './stack.component';\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',\n})\nexport class FaStackItemSizeDirective implements OnChanges {\n  /**\n   * Specify whether icon inside {@link FaStackComponent} should be rendered in\n   * regular size (1x) or as a larger icon (2x).\n   */\n  @Input() stackItemSize: '1x' | '2x' = '1x';\n\n  /**\n   * @internal\n   */\n  @Input() size?: SizeProp;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      throw new Error(\n        'fa-icon is not allowed to customize size when used inside fa-stack. ' +\n          'Set size on the enclosing fa-stack instead: <fa-stack size=\"4x\">...</fa-stack>.',\n      );\n    }\n  }\n}\n","import { Component, ElementRef, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\n\n@Component({\n  selector: 'fa-stack',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaStackComponent implements OnInit, OnChanges {\n  /**\n   * Size of the stacked icon.\n   * Note that stacked icon is by default 2 times bigger, than non-stacked icon.\n   * You'll need to set size using custom CSS to align stacked icon with a\n   * simple one. E.g. `fa-stack { font-size: 0.5em; }`.\n   */\n  @Input() size?: SizeProp;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FaSymbol,\n  findIconDefinition,\n  FlipProp,\n  icon,\n  IconDefinition,\n  IconParams,\n  IconProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\nimport { FaIconLibrary } from '../icon-library';\nimport { faWarnIfIconDefinitionMissing } from '../shared/errors/warn-if-icon-html-missing';\nimport { faWarnIfIconSpecMissing } from '../shared/errors/warn-if-icon-spec-missing';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { faNormalizeIconSpec } from '../shared/utils/normalize-icon-spec.util';\nimport { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';\nimport { FaStackComponent } from '../stack/stack.component';\n\n@Component({\n  selector: 'fa-icon',\n  template: ``,\n  host: {\n    class: 'ng-fa-icon',\n    '[attr.title]': 'title',\n  },\n})\nexport class FaIconComponent implements OnChanges {\n  @Input() icon: IconProp;\n\n  /**\n   * Specify a title for the icon.\n   * This text will be displayed in a tooltip on hover and presented to the\n   * screen readers.\n   */\n  @Input() title?: string;\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() mask?: IconProp;\n  @Input() styles?: Styles;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() symbol?: FaSymbol;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() classes?: string[] = [];\n  @Input() transform?: string | Transform;\n\n  /**\n   * Specify the `role` attribute for the rendered <svg> element.\n   *\n   * @default 'img'\n   */\n  @Input() a11yRole: string;\n\n  @HostBinding('innerHTML') renderedIconHTML: SafeHtml;\n\n  constructor(\n    private sanitizer: DomSanitizer,\n    private config: FaConfig,\n    private iconLibrary: FaIconLibrary,\n    @Optional() private stackItem: FaStackItemSizeDirective,\n    @Optional() stack: FaStackComponent,\n  ) {\n    if (stack != null && stackItem == null) {\n      console.error(\n        'FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +\n          'fa-stack. Example: <fa-icon stackItemSize=\"2x\"></fa-icon>.',\n      );\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.icon == null && this.config.fallbackIcon == null) {\n      return faWarnIfIconSpecMissing();\n    }\n\n    let iconToBeRendered: IconProp = null;\n    if (this.icon == null) {\n      iconToBeRendered = this.config.fallbackIcon;\n    } else {\n      iconToBeRendered = this.icon;\n    }\n\n    if (changes) {\n      const iconDefinition = this.findIconDefinition(iconToBeRendered);\n      if (iconDefinition != null) {\n        const params = this.buildParams();\n        this.renderIcon(iconDefinition, params);\n      }\n    }\n  }\n\n  /**\n   * Programmatically trigger rendering of the icon.\n   *\n   * This method is useful, when creating {@link FaIconComponent} dynamically or\n   * changing its inputs programmatically as in these cases icon won't be\n   * re-rendered automatically.\n   */\n  render() {\n    this.ngOnChanges({});\n  }\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n    if ('icon' in lookup) {\n      return lookup;\n    }\n\n    const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n    if (definition != null) {\n      return definition;\n    }\n\n    const globalDefinition = findIconDefinition(lookup);\n    if (globalDefinition != null) {\n      const message =\n        'Global icon library is deprecated. ' +\n        'Consult https://github.com/FortAwesome/angular-fontawesome/blob/master/UPGRADING.md ' +\n        'for the migration instructions.';\n      if (this.config.globalLibrary === 'unset') {\n        console.error('FontAwesome: ' + message);\n      } else if (!this.config.globalLibrary) {\n        throw new Error(message);\n      }\n\n      return globalDefinition;\n    }\n\n    faWarnIfIconDefinitionMissing(lookup);\n    return null;\n  }\n\n  protected buildParams() {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n      stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      title: this.title,\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n      styles: this.styles != null ? this.styles : {},\n      symbol: this.symbol,\n      attributes: {\n        role: this.a11yRole,\n      },\n    };\n  }\n\n  private renderIcon(definition: IconDefinition, params: IconParams) {\n    const renderedIcon = icon(definition, params);\n    this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { IconDefinition, IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaIconComponent } from './icon.component';\n\n@Component({\n  selector: 'fa-duotone-icon',\n  template: ``,\n})\nexport class FaDuotoneIconComponent extends FaIconComponent {\n  /**\n   * Swap the default opacity of each duotone icon’s layers. This will make an\n   * icon’s primary layer have the default opacity of 40% rather than its\n   * secondary layer.\n   *\n   * @default false\n   */\n  @Input() swapOpacity?: 'true' | 'false' | boolean;\n\n  /**\n   * Customize the opacity of the primary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 1.0\n   */\n  @Input() primaryOpacity?: string | number;\n\n  /**\n   * Customize the opacity of the secondary icon layer.\n   * Valid values are in range [0, 1.0].\n   *\n   * @default 0.4\n   */\n  @Input() secondaryOpacity?: string | number;\n\n  /**\n   * Customize the color of the primary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() primaryColor?: string;\n\n  /**\n   * Customize the color of the secondary icon layer.\n   * Accepts any valid CSS color value.\n   *\n   * @default CSS inherited color\n   */\n  @Input() secondaryColor?: string;\n\n  protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null {\n    const definition = super.findIconDefinition(i);\n\n    if (definition != null && !Array.isArray(definition.icon[4])) {\n      throw new Error(\n        'The specified icon does not appear to be a Duotone icon. ' +\n          'Check that you specified the correct style: ' +\n          `<fa-duotone-icon [icon]=\"['fad', '${definition.iconName}']\"></fa-duotone-icon> ` +\n          `or use: <fa-icon icon=\"${definition.iconName}\"></fa-icon> instead.`,\n      );\n    }\n\n    return definition;\n  }\n\n  protected buildParams() {\n    const params = super.buildParams();\n\n    if (this.swapOpacity === true || this.swapOpacity === 'true') {\n      params.classes.push('fa-swap-opacity');\n    }\n    if (this.primaryOpacity != null) {\n      params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n    }\n    if (this.secondaryOpacity != null) {\n      params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n    }\n    if (this.primaryColor != null) {\n      params.styles['--fa-primary-color'] = this.primaryColor;\n    }\n    if (this.secondaryColor != null) {\n      params.styles['--fa-secondary-color'] = this.secondaryColor;\n    }\n\n    return params;\n  }\n}\n","/**\n * Warns if parent component not existing.\n */\nexport const faWarnIfParentNotExist = (parent: any, parentName: string, childName: string) => {\n  if (!parent) {\n    throw new Error(`${childName} should be used as child of ${parentName} only.`);\n  }\n};\n","import { Component, ElementRef, HostBinding, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '@fortawesome/fontawesome-svg-core';\nimport { FaConfig } from '../config';\n\n/**\n * Fontawesome layers.\n */\n@Component({\n  selector: 'fa-layers',\n  template: `<ng-content></ng-content>`,\n})\nexport class FaLayersComponent implements OnInit, OnChanges {\n  @Input() size?: SizeProp;\n\n  @Input() @HostBinding('class.fa-fw') fixedWidth?: boolean;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef, private config: FaConfig) {}\n\n  ngOnInit() {\n    this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n    this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('size' in changes) {\n      if (changes.size.currentValue != null) {\n        this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n      }\n      if (changes.size.previousValue != null) {\n        this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n      }\n    }\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { counter, CounterParams, Styles } from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-counter',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-counter',\n  },\n})\nexport class FaLayersCounterComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  protected buildParams(): CounterParams {\n    return {\n      title: this.title,\n      classes: this.classes,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: CounterParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n  }\n}\n","import { Component, HostBinding, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n  FlipProp,\n  parse,\n  PullProp,\n  RotateProp,\n  SizeProp,\n  Styles,\n  text,\n  TextParams,\n  Transform,\n} from '@fortawesome/fontawesome-svg-core';\nimport { faWarnIfParentNotExist } from '../shared/errors/warn-if-parent-not-exist';\nimport { FaProps } from '../shared/models/props.model';\nimport { faClassList } from '../shared/utils/classlist.util';\nimport { FaLayersComponent } from './layers.component';\n\n@Component({\n  selector: 'fa-layers-text',\n  template: '',\n  host: {\n    class: 'ng-fa-layers-text',\n  },\n})\nexport class FaLayersTextComponent implements OnChanges {\n  @Input() content: string;\n  @Input() title?: string;\n  @Input() styles?: Styles;\n  @Input() classes?: string[] = [];\n  @Input() spin?: boolean;\n  @Input() pulse?: boolean;\n  @Input() flip?: FlipProp;\n  @Input() size?: SizeProp;\n  @Input() pull?: PullProp;\n  @Input() border?: boolean;\n  @Input() inverse?: boolean;\n  @Input() rotate?: RotateProp;\n  @Input() fixedWidth?: boolean;\n  @Input() transform?: string | Transform;\n\n  @HostBinding('innerHTML') renderedHTML: SafeHtml;\n\n  constructor(@Optional() private parent: FaLayersComponent, private sanitizer: DomSanitizer) {\n    faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      const params = this.buildParams();\n      this.updateContent(params);\n    }\n  }\n\n  /**\n   * Updating params by component props.\n   */\n  protected buildParams(): TextParams {\n    const classOpts: FaProps = {\n      flip: this.flip,\n      spin: this.spin,\n      pulse: this.pulse,\n      border: this.border,\n      inverse: this.inverse,\n      size: this.size || null,\n      pull: this.pull || null,\n      rotate: this.rotate || null,\n      fixedWidth: this.fixedWidth,\n    };\n\n    const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n\n    return {\n      transform: parsedTransform,\n      classes: [...faClassList(classOpts), ...this.classes],\n      title: this.title,\n      styles: this.styles,\n    };\n  }\n\n  private updateContent(params: TextParams) {\n    this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaDuotoneIconComponent } from './icon/duotone-icon.component';\nimport { FaIconComponent } from './icon/icon.component';\nimport { FaLayersCounterComponent } from './layers/layers-counter.component';\nimport { FaLayersTextComponent } from './layers/layers-text.component';\nimport { FaLayersComponent } from './layers/layers.component';\nimport { FaStackItemSizeDirective } from './stack/stack-item-size.directive';\nimport { FaStackComponent } from './stack/stack.component';\n\n@NgModule({\n  declarations: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n  exports: [\n    FaIconComponent,\n    FaDuotoneIconComponent,\n    FaLayersComponent,\n    FaLayersTextComponent,\n    FaLayersCounterComponent,\n    FaStackComponent,\n    FaStackItemSizeDirective,\n  ],\n})\nexport class FontAwesomeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,41 @@
+import { ɵɵdefineInjectable, Injectable, NgModule } from '@angular/core';
+import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
+
+const dummyIcon = {
+    prefix: 'fad',
+    iconName: 'dummy',
+    icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],
+};
+class MockFaIconLibrary {
+    addIcons() {
+        throw new Error('Attempt to add an icon to the MockFaIconLibrary.');
+    }
+    addIconPacks() {
+        throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');
+    }
+    getIconDefinition(prefix, name) {
+        return dummyIcon;
+    }
+}
+MockFaIconLibrary.ɵprov = ɵɵdefineInjectable({ factory: function MockFaIconLibrary_Factory() { return new MockFaIconLibrary(); }, token: MockFaIconLibrary, providedIn: "root" });
+MockFaIconLibrary.decorators = [
+    { type: Injectable, args: [{
+                providedIn: 'root',
+            },] }
+];
+
+class FontAwesomeTestingModule {
+}
+FontAwesomeTestingModule.decorators = [
+    { type: NgModule, args: [{
+                exports: [FontAwesomeModule],
+                providers: [{ provide: FaIconLibrary, useExisting: MockFaIconLibrary }],
+            },] }
+];
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FontAwesomeTestingModule, MockFaIconLibrary as ɵa };
+//# sourceMappingURL=fortawesome-angular-fontawesome-testing.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fesm2015/fortawesome-angular-fontawesome-testing.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"fortawesome-angular-fontawesome-testing.js","sources":["../../../testing/src/icon/mock-icon-library.service.ts","../../../testing/src/testing.module.ts","../../../testing/src/fortawesome-angular-fontawesome-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FaIconLibraryInterface } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\n\nexport const dummyIcon: IconDefinition = {\n  prefix: 'fad',\n  iconName: 'dummy' as IconName,\n  icon: [512, 512, [], 'f030', 'M50 50 H462 V462 H50 Z'],\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class MockFaIconLibrary implements FaIconLibraryInterface {\n  addIcons() {\n    throw new Error('Attempt to add an icon to the MockFaIconLibrary.');\n  }\n\n  addIconPacks() {\n    throw new Error('Attempt to add an icon pack to the MockFaIconLibrary.');\n  }\n\n  getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition {\n    return dummyIcon;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { MockFaIconLibrary } from './icon/mock-icon-library.service';\n\n@NgModule({\n  exports: [FontAwesomeModule],\n  providers: [{ provide: FaIconLibrary, useExisting: MockFaIconLibrary }],\n})\nexport class FontAwesomeTestingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {MockFaIconLibrary as ɵa} from './icon/mock-icon-library.service';"],"names":[],"mappings":";;;AAIO,MAAM,SAAS,GAAmB;IACvC,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,OAAmB;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC;CACvD,CAAC;MAKW,iBAAiB;IAC5B,QAAQ;QACN,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACrE;IAED,YAAY;QACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;KAC1E;IAED,iBAAiB,CAAC,MAAkB,EAAE,IAAc;QAClD,OAAO,SAAS,CAAC;KAClB;;;;YAdF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;MCJY,wBAAwB;;;YAJpC,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;gBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;aACxE;;;ACPD;;;;;;"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fontawesome.module.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fontawesome.module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/fontawesome.module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export declare class FontAwesomeModule {
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon-library.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon-library.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon-library.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+import { IconDefinition, IconName, IconPack, IconPrefix } from '@fortawesome/fontawesome-svg-core';
+export interface FaIconLibraryInterface {
+    addIcons(...icons: IconDefinition[]): void;
+    addIconPacks(...packs: IconPack[]): void;
+    getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null;
+}
+export declare class FaIconLibrary implements FaIconLibraryInterface {
+    private definitions;
+    addIcons(...icons: IconDefinition[]): void;
+    addIconPacks(...packs: IconPack[]): void;
+    getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition | null;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/duotone-icon.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/duotone-icon.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/duotone-icon.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,52 @@
+import { IconDefinition, IconProp } from '@fortawesome/fontawesome-svg-core';
+import { FaIconComponent } from './icon.component';
+export declare class FaDuotoneIconComponent extends FaIconComponent {
+    /**
+     * Swap the default opacity of each duotone icon’s layers. This will make an
+     * icon’s primary layer have the default opacity of 40% rather than its
+     * secondary layer.
+     *
+     * @default false
+     */
+    swapOpacity?: 'true' | 'false' | boolean;
+    /**
+     * Customize the opacity of the primary icon layer.
+     * Valid values are in range [0, 1.0].
+     *
+     * @default 1.0
+     */
+    primaryOpacity?: string | number;
+    /**
+     * Customize the opacity of the secondary icon layer.
+     * Valid values are in range [0, 1.0].
+     *
+     * @default 0.4
+     */
+    secondaryOpacity?: string | number;
+    /**
+     * Customize the color of the primary icon layer.
+     * Accepts any valid CSS color value.
+     *
+     * @default CSS inherited color
+     */
+    primaryColor?: string;
+    /**
+     * Customize the color of the secondary icon layer.
+     * Accepts any valid CSS color value.
+     *
+     * @default CSS inherited color
+     */
+    secondaryColor?: string;
+    protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null;
+    protected buildParams(): {
+        title: string;
+        transform: import("@fortawesome/fontawesome-svg-core").Transform;
+        classes: string[];
+        mask: IconDefinition;
+        styles: import("@fortawesome/fontawesome-svg-core").Styles;
+        symbol: string | boolean;
+        attributes: {
+            role: string;
+        };
+    };
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/icon.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/icon.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/icon/icon.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,64 @@
+import { OnChanges, SimpleChanges } from '@angular/core';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
+import { FaSymbol, FlipProp, IconDefinition, IconProp, PullProp, RotateProp, SizeProp, Styles, Transform } from '@fortawesome/fontawesome-svg-core';
+import { FaConfig } from '../config';
+import { FaIconLibrary } from '../icon-library';
+import { FaStackItemSizeDirective } from '../stack/stack-item-size.directive';
+import { FaStackComponent } from '../stack/stack.component';
+export declare class FaIconComponent implements OnChanges {
+    private sanitizer;
+    private config;
+    private iconLibrary;
+    private stackItem;
+    icon: IconProp;
+    /**
+     * Specify a title for the icon.
+     * This text will be displayed in a tooltip on hover and presented to the
+     * screen readers.
+     */
+    title?: string;
+    spin?: boolean;
+    pulse?: boolean;
+    mask?: IconProp;
+    styles?: Styles;
+    flip?: FlipProp;
+    size?: SizeProp;
+    pull?: PullProp;
+    border?: boolean;
+    inverse?: boolean;
+    symbol?: FaSymbol;
+    rotate?: RotateProp;
+    fixedWidth?: boolean;
+    classes?: string[];
+    transform?: string | Transform;
+    /**
+     * Specify the `role` attribute for the rendered <svg> element.
+     *
+     * @default 'img'
+     */
+    a11yRole: string;
+    renderedIconHTML: SafeHtml;
+    constructor(sanitizer: DomSanitizer, config: FaConfig, iconLibrary: FaIconLibrary, stackItem: FaStackItemSizeDirective, stack: FaStackComponent);
+    ngOnChanges(changes: SimpleChanges): never;
+    /**
+     * Programmatically trigger rendering of the icon.
+     *
+     * This method is useful, when creating {@link FaIconComponent} dynamically or
+     * changing its inputs programmatically as in these cases icon won't be
+     * re-rendered automatically.
+     */
+    render(): void;
+    protected findIconDefinition(i: IconProp | IconDefinition): IconDefinition | null;
+    protected buildParams(): {
+        title: string;
+        transform: Transform;
+        classes: string[];
+        mask: IconDefinition;
+        styles: Styles;
+        symbol: string | boolean;
+        attributes: {
+            role: string;
+        };
+    };
+    private renderIcon;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-counter.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-counter.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-counter.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+import { OnChanges, SimpleChanges } from '@angular/core';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
+import { CounterParams, Styles } from '@fortawesome/fontawesome-svg-core';
+import { FaLayersComponent } from './layers.component';
+export declare class FaLayersCounterComponent implements OnChanges {
+    private parent;
+    private sanitizer;
+    content: string;
+    title?: string;
+    styles?: Styles;
+    classes?: string[];
+    renderedHTML: SafeHtml;
+    constructor(parent: FaLayersComponent, sanitizer: DomSanitizer);
+    ngOnChanges(changes: SimpleChanges): void;
+    protected buildParams(): CounterParams;
+    private updateContent;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-text.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-text.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers-text.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,30 @@
+import { OnChanges, SimpleChanges } from '@angular/core';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
+import { FlipProp, PullProp, RotateProp, SizeProp, Styles, TextParams, Transform } from '@fortawesome/fontawesome-svg-core';
+import { FaLayersComponent } from './layers.component';
+export declare class FaLayersTextComponent implements OnChanges {
+    private parent;
+    private sanitizer;
+    content: string;
+    title?: string;
+    styles?: Styles;
+    classes?: string[];
+    spin?: boolean;
+    pulse?: boolean;
+    flip?: FlipProp;
+    size?: SizeProp;
+    pull?: PullProp;
+    border?: boolean;
+    inverse?: boolean;
+    rotate?: RotateProp;
+    fixedWidth?: boolean;
+    transform?: string | Transform;
+    renderedHTML: SafeHtml;
+    constructor(parent: FaLayersComponent, sanitizer: DomSanitizer);
+    ngOnChanges(changes: SimpleChanges): void;
+    /**
+     * Updating params by component props.
+     */
+    protected buildParams(): TextParams;
+    private updateContent;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/layers/layers.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import { ElementRef, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';
+import { SizeProp } from '@fortawesome/fontawesome-svg-core';
+import { FaConfig } from '../config';
+/**
+ * Fontawesome layers.
+ */
+export declare class FaLayersComponent implements OnInit, OnChanges {
+    private renderer;
+    private elementRef;
+    private config;
+    size?: SizeProp;
+    fixedWidth?: boolean;
+    constructor(renderer: Renderer2, elementRef: ElementRef, config: FaConfig);
+    ngOnInit(): void;
+    ngOnChanges(changes: SimpleChanges): void;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/package.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,65 @@
+{
+  "$schema": "./node_modules/ng-packagr/package.schema.json",
+  "_from": "@fortawesome/angular-fontawesome@^0.8.1",
+  "_id": "@fortawesome/angular-fontawesome@0.8.2",
+  "_inBundle": false,
+  "_integrity": "sha512-K/AiykA4YbHKE6XKEtZ0ZvVRQocUHyk+79HYWIfhGy3teHpzxsUqB/UjDaxivgBd6dF6ihlzgEbgrDMHlGNwGg==",
+  "_location": "/@fortawesome/angular-fontawesome",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@fortawesome/angular-fontawesome@^0.8.1",
+    "name": "@fortawesome/angular-fontawesome",
+    "escapedName": "@fortawesome%2fangular-fontawesome",
+    "scope": "@fortawesome",
+    "rawSpec": "^0.8.1",
+    "saveSpec": null,
+    "fetchSpec": "^0.8.1"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.8.2.tgz",
+  "_shasum": "fe0401c66dd237fd78d3f29d540ef7302bb40e5a",
+  "_spec": "@fortawesome/angular-fontawesome@^0.8.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/FortAwesome/angular-fontawesome/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "tslib": "^2.1.0"
+  },
+  "deprecated": false,
+  "description": "Angular Fontawesome, an Angular library",
+  "es2015": "fesm2015/angular-fontawesome.js",
+  "esm2015": "esm2015/angular-fontawesome.js",
+  "fesm2015": "fesm2015/angular-fontawesome.js",
+  "homepage": "https://github.com/FortAwesome/angular-fontawesome",
+  "keywords": [
+    "angular",
+    "font",
+    "awesome",
+    "fontawesome",
+    "icon",
+    "svg"
+  ],
+  "license": "MIT",
+  "main": "bundles/angular-fontawesome.umd.js",
+  "metadata": "angular-fontawesome.metadata.json",
+  "module": "fesm2015/angular-fontawesome.js",
+  "name": "@fortawesome/angular-fontawesome",
+  "peerDependencies": {
+    "@angular/core": "^11.0.0",
+    "@fortawesome/fontawesome-svg-core": "^1.2.27"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/FortAwesome/angular-fontawesome.git"
+  },
+  "schematics": "./schematics/collection.json",
+  "sideEffects": false,
+  "typings": "angular-fontawesome.d.ts",
+  "version": "0.8.2"
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,11 @@
+export { FontAwesomeModule } from './fontawesome.module';
+export { FaProps } from './shared/models/props.model';
+export { FaIconComponent } from './icon/icon.component';
+export { FaDuotoneIconComponent } from './icon/duotone-icon.component';
+export { FaConfig } from './config';
+export { FaLayersComponent } from './layers/layers.component';
+export { FaLayersTextComponent } from './layers/layers-text.component';
+export { FaLayersCounterComponent } from './layers/layers-counter.component';
+export { FaStackComponent } from './stack/stack.component';
+export { FaStackItemSizeDirective } from './stack/stack-item-size.directive';
+export { FaIconLibrary, FaIconLibraryInterface } from './icon-library';
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/collection.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/collection.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/collection.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
+  "schematics": {
+    "ng-add": {
+      "description": "Adds Font Awesome 5 to the application without affecting any templates.",
+      "factory": "./ng-add/index",
+      "schema": "./ng-add/schema.json"
+    }
+  }
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+import { workspaces } from '@angular-devkit/core';
+import { Rule } from '@angular-devkit/schematics';
+import { Schema } from './schema';
+export default function (options: Schema): Rule;
+export declare function getProjectTargetOptions(project: workspaces.ProjectDefinition, buildTarget: string): Record<string, string | number | boolean | import("@angular-devkit/core").JsonArray | import("@angular-devkit/core").JsonObject | null | undefined>;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,96 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getProjectTargetOptions = void 0;
+const schematics_1 = require("@angular-devkit/schematics");
+const tasks_1 = require("@angular-devkit/schematics/tasks");
+const typescript_1 = require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript");
+const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
+const change_1 = require("@schematics/angular/utility/change");
+const dependencies_1 = require("@schematics/angular/utility/dependencies");
+const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
+const workspace_1 = require("@schematics/angular/utility/workspace");
+const versions_1 = require("./versions");
+function default_1(options) {
+    return schematics_1.chain([
+        (tree, context) => {
+            dependencies_1.addPackageJsonDependency(tree, {
+                type: dependencies_1.NodeDependencyType.Default,
+                name: '@fortawesome/fontawesome-svg-core',
+                version: versions_1.svgCoreVersion,
+            });
+            dependencies_1.addPackageJsonDependency(tree, {
+                type: dependencies_1.NodeDependencyType.Default,
+                name: '@fortawesome/angular-fontawesome',
+                version: versions_1.angularFontawesomeVersion,
+            });
+            const iconPackages = options.iconPackages != null ? options.iconPackages : ['free-solid'];
+            for (const pack of iconPackages) {
+                dependencies_1.addPackageJsonDependency(tree, {
+                    type: dependencies_1.NodeDependencyType.Default,
+                    name: `@fortawesome/${pack}-svg-icons`,
+                    version: versions_1.iconPackVersion,
+                });
+            }
+            context.addTask(new tasks_1.NodePackageInstallTask());
+            return tree;
+        },
+        addModule(options),
+    ]);
+}
+exports.default = default_1;
+function addModule(options) {
+    return (host, context) => __awaiter(this, void 0, void 0, function* () {
+        var _a;
+        const workspace = yield workspace_1.getWorkspace(host);
+        const projectName = (_a = options.project) !== null && _a !== void 0 ? _a : workspace.extensions.defaultProject;
+        const project = workspace.projects.get(projectName);
+        if (project == null) {
+            throw new schematics_1.SchematicsException(`Project with name ${projectName} does not exist.`);
+        }
+        const buildOptions = getProjectTargetOptions(project, 'build');
+        const modulePath = ng_ast_utils_1.getAppModulePath(host, buildOptions.main);
+        const moduleSource = getSourceFile(host, modulePath);
+        const changes = ast_utils_1.addImportToModule(moduleSource, modulePath, 'FontAwesomeModule', '@fortawesome/angular-fontawesome');
+        const recorder = host.beginUpdate(modulePath);
+        changes.forEach((change) => {
+            if (change instanceof change_1.InsertChange) {
+                recorder.insertLeft(change.pos, change.toAdd);
+            }
+        });
+        host.commitUpdate(recorder);
+        /* tslint is required to add a tslint fix task */
+        try {
+            require('tslint');
+            context.addTask(new tasks_1.TslintFixTask(modulePath, {}));
+        }
+        catch (err) {
+            context.logger.warn('Formatting was skipped because tslint is not installed.');
+        }
+    });
+}
+function getSourceFile(host, path) {
+    const buffer = host.read(path);
+    if (!buffer) {
+        throw new schematics_1.SchematicsException(`Could not find ${path}.`);
+    }
+    const content = buffer.toString('utf-8');
+    return typescript_1.createSourceFile(path, content, typescript_1.ScriptTarget.Latest, true);
+}
+function getProjectTargetOptions(project, buildTarget) {
+    const buildTargetObject = project.targets.get(buildTarget);
+    if (buildTargetObject && buildTargetObject.options) {
+        return buildTargetObject.options;
+    }
+    throw new schematics_1.SchematicsException(`Cannot determine project target configuration for: ${buildTarget}.`);
+}
+exports.getProjectTargetOptions = getProjectTargetOptions;
+//# sourceMappingURL=index.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/index.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/schematics/src/ng-add/index.ts"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6 @@
+export interface Schema {
+    /** Name of the project. */
+    project?: string;
+    /** The icon packages to install */
+    iconPackages?: ('free-solid' | 'free-regular' | 'free-brands' | 'pro-solid' | 'pro-regular' | 'pro-light' | 'pro-duotone')[];
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=schema.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../projects/schematics/src/ng-add/schema.ts"],"names":[],"mappings":""}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/schema.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+{
+  "$schema": "http://json-schema.org/schema",
+  "id": "angular-fontawesome-ng-add",
+  "title": "Font Awesome ng-add schematic",
+  "type": "object",
+  "properties": {
+    "project": {
+      "type": "string",
+      "description": "The name of the project.",
+      "$default": {
+        "$source": "projectName"
+      }
+    },
+    "iconPackages": {
+      "description": "The icon packages to install.",
+      "type": "array",
+      "items": {
+        "type": "string",
+        "enum": ["free-solid", "free-regular", "free-brands", "pro-solid", "pro-regular", "pro-light", "pro-duotone"]
+      },
+      "default": ["free-solid"],
+      "x-prompt": {
+        "message": "Choose Font Awesome icon packages you would like to use:",
+        "type": "list",
+        "multiselect": true,
+        "items": [
+          {
+            "value": "free-solid",
+            "label": "Free Solid Icons"
+          },
+          {
+            "value": "free-regular",
+            "label": "Free Regular Icons"
+          },
+          {
+            "value": "free-brands",
+            "label": "Free Brands Icons"
+          },
+          {
+            "value": "pro-solid",
+            "label": "Pro Solid Icons    [ Requires: https://fontawesome.com/pro ]"
+          },
+          {
+            "value": "pro-regular",
+            "label": "Pro Regular Icons  [ Requires: https://fontawesome.com/pro ]"
+          },
+          {
+            "value": "pro-light",
+            "label": "Pro Light Icons    [ Requires: https://fontawesome.com/pro ]"
+          },
+          {
+            "value": "pro-duotone",
+            "label": "Pro Duotone Icons  [ Requires: https://fontawesome.com/pro ]"
+          }
+        ]
+      }
+    }
+  },
+  "required": [],
+  "additionalProperties": false
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+export declare const svgCoreVersion = "^1.2.34";
+export declare const angularFontawesomeVersion = "~0.8.2";
+export declare const iconPackVersion = "^5.15.2";
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.iconPackVersion = exports.angularFontawesomeVersion = exports.svgCoreVersion = void 0;
+exports.svgCoreVersion = '^1.2.34';
+exports.angularFontawesomeVersion = '~0.8.2';
+exports.iconPackVersion = '^5.15.2';
+//# sourceMappingURL=versions.js.map
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js.map
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/schematics/ng-add/versions.js.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../projects/schematics/src/ng-add/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,yBAAyB,GAAG,QAAQ,CAAC;AACrC,QAAA,eAAe,GAAG,SAAS,CAAC"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-html-missing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-html-missing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-html-missing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+import { IconLookup } from '@fortawesome/fontawesome-svg-core';
+export declare const faWarnIfIconDefinitionMissing: (iconSpec: IconLookup) => never;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-spec-missing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-spec-missing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-icon-spec-missing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export declare const faWarnIfIconSpecMissing: () => never;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-parent-not-exist.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-parent-not-exist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/errors/warn-if-parent-not-exist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+/**
+ * Warns if parent component not existing.
+ */
+export declare const faWarnIfParentNotExist: (parent: any, parentName: string, childName: string) => void;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/models/props.model.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/models/props.model.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/models/props.model.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,22 @@
+import { FaSymbol, FlipProp, IconProp, PullProp, RotateProp, SizeProp, Styles, Transform } from '@fortawesome/fontawesome-svg-core';
+/**
+ * Fontawesome props.
+ */
+export interface FaProps {
+    mask?: IconProp;
+    className?: string;
+    spin?: boolean;
+    pulse?: boolean;
+    border?: boolean;
+    fixedWidth?: boolean;
+    counter?: boolean;
+    inverse?: boolean;
+    flip?: FlipProp;
+    size?: SizeProp;
+    pull?: PullProp;
+    rotate?: RotateProp;
+    transform?: string | Transform;
+    symbol?: FaSymbol;
+    style?: Styles;
+    stackItemSize?: '1x' | '2x';
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/classlist.util.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/classlist.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/classlist.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6 @@
+import { FaProps } from '../models/props.model';
+/**
+ * Fontawesome class list.
+ * Returns classes array by props.
+ */
+export declare const faClassList: (props: FaProps) => string[];
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/is-icon-lookup.util.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/is-icon-lookup.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/is-icon-lookup.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core';
+/**
+ * Returns if is IconLookup or not.
+ */
+export declare const isIconLookup: (i: IconProp) => i is IconLookup;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/normalize-icon-spec.util.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/normalize-icon-spec.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/shared/utils/normalize-icon-spec.util.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+import { IconDefinition, IconLookup, IconPrefix, IconProp } from '@fortawesome/fontawesome-svg-core';
+/**
+ * Normalizing icon spec.
+ */
+export declare const faNormalizeIconSpec: (iconSpec: IconProp | IconDefinition, defaultPrefix: IconPrefix) => IconLookup | IconDefinition;
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack-item-size.directive.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack-item-size.directive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack-item-size.directive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,9 @@
+import { OnChanges, SimpleChanges } from '@angular/core';
+export declare class FaStackItemSizeDirective implements OnChanges {
+    /**
+     * Specify whether icon inside {@link FaStackComponent} should be rendered in
+     * regular size (1x) or as a larger icon (2x).
+     */
+    stackItemSize: '1x' | '2x';
+    ngOnChanges(changes: SimpleChanges): void;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack.component.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/stack/stack.component.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import { ElementRef, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';
+import { SizeProp } from '@fortawesome/fontawesome-svg-core';
+export declare class FaStackComponent implements OnInit, OnChanges {
+    private renderer;
+    private elementRef;
+    /**
+     * Size of the stacked icon.
+     * Note that stacked icon is by default 2 times bigger, than non-stacked icon.
+     * You'll need to set size using custom CSS to align stacked icon with a
+     * simple one. E.g. `fa-stack { font-size: 0.5em; }`.
+     */
+    size?: SizeProp;
+    constructor(renderer: Renderer2, elementRef: ElementRef);
+    ngOnInit(): void;
+    ngOnChanges(changes: SimpleChanges): void;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+export { MockFaIconLibrary as ɵa } from './icon/mock-icon-library.service';
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.metadata.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.metadata.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/fortawesome-angular-fontawesome-testing.metadata.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"__symbolic":"module","version":4,"metadata":{"FontAwesomeTestingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","module":"@fortawesome/angular-fontawesome","name":"FontAwesomeModule","line":5,"character":12}],"providers":[{"provide":{"__symbolic":"reference","module":"@fortawesome/angular-fontawesome","name":"FaIconLibrary","line":6,"character":25},"useExisting":{"__symbolic":"reference","name":"ɵa"}}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addIcons":[{"__symbolic":"method"}],"addIconPacks":[{"__symbolic":"method"}],"getIconDefinition":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"FontAwesomeTestingModule":"./testing.module","ɵa":"./icon/mock-icon-library.service"},"importAs":"@fortawesome/angular-fontawesome/testing"}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/icon/mock-icon-library.service.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/icon/mock-icon-library.service.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/icon/mock-icon-library.service.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+import { FaIconLibraryInterface } from '@fortawesome/angular-fontawesome';
+import { IconDefinition, IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';
+export declare const dummyIcon: IconDefinition;
+export declare class MockFaIconLibrary implements FaIconLibraryInterface {
+    addIcons(): void;
+    addIconPacks(): void;
+    getIconDefinition(prefix: IconPrefix, name: IconName): IconDefinition;
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/package.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,11 @@
+{
+  "name": "@fortawesome/angular-fontawesome/testing",
+  "main": "../bundles/fortawesome-angular-fontawesome-testing.umd.js",
+  "module": "../fesm2015/fortawesome-angular-fontawesome-testing.js",
+  "es2015": "../fesm2015/fortawesome-angular-fontawesome-testing.js",
+  "esm2015": "../esm2015/testing/fortawesome-angular-fontawesome-testing.js",
+  "fesm2015": "../fesm2015/fortawesome-angular-fontawesome-testing.js",
+  "typings": "fortawesome-angular-fontawesome-testing.d.ts",
+  "metadata": "fortawesome-angular-fontawesome-testing.metadata.json",
+  "sideEffects": false
+}
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export { FontAwesomeTestingModule } from './testing.module';
Index: trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/testing.module.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/testing.module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/angular-fontawesome/testing/testing.module.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export declare class FontAwesomeTestingModule {
+}
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/LICENSE.txt
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,34 @@
+Font Awesome Free License
+-------------------------
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license/free.
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
+packaged as SVG and JS file types.
+
+# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
+In the Font Awesome Free download, the SIL OFL license applies to all icons
+packaged as web and desktop font files.
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+# Attribution
+Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to
+learn about Font Awesome.
+
+# Brand Icons
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/README.md
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+# @fortawesome/fontawesome-common-types - SVG with JavaScript
+
+> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
+
+[![npm](https://img.shields.io/npm/v/@fortawesome/fontawesome-common-types.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/fontawesome-common-types)
+
+## What is this package?
+
+Font Awesome 5 JavaScript packages support TypeScript. This package abstracts out some of the common definitions that those packages use.
+
+## Here be dragons
+
+If you are trying to import types from this package we *highly* recommend you do the following instead as *all types in this package are re-exported to the main fontawesome package*.
+
+your.ts
+
+```
+import {
+  IconName
+} from `@fortawesome/fontawesome-svg-core`
+
+const myIcon: IconName = "..."
+```
+
+## Issues and support
+
+Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/attribution.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+console.log(`Font Awesome Free 0.2.36 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+`)
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7892 @@
+export type IconPrefix = "fas" | "fab" | "far" | "fal" | "fad";
+export type IconPathData = string | string[]
+
+export interface IconLookup {
+  prefix: IconPrefix;
+  // IconName is defined in the code that will be generated at build time and bundled with this file.
+  iconName: IconName;
+}
+
+export interface IconDefinition extends IconLookup {
+  icon: [
+    number, // width
+    number, // height
+    string[], // ligatures
+    string, // unicode
+    IconPathData // svgPathData
+  ];
+}
+
+export interface IconPack {
+  [key: string]: IconDefinition;
+}
+
+export type IconName = '500px' | 
+  'accessible-icon' | 
+  'accusoft' | 
+  'acquisitions-incorporated' | 
+  'adn' | 
+  'adversal' | 
+  'affiliatetheme' | 
+  'airbnb' | 
+  'algolia' | 
+  'alipay' | 
+  'amazon' | 
+  'amazon-pay' | 
+  'amilia' | 
+  'android' | 
+  'angellist' | 
+  'angrycreative' | 
+  'angular' | 
+  'app-store' | 
+  'app-store-ios' | 
+  'apper' | 
+  'apple' | 
+  'apple-pay' | 
+  'artstation' | 
+  'asymmetrik' | 
+  'atlassian' | 
+  'audible' | 
+  'autoprefixer' | 
+  'avianex' | 
+  'aviato' | 
+  'aws' | 
+  'bandcamp' | 
+  'battle-net' | 
+  'behance' | 
+  'behance-square' | 
+  'bimobject' | 
+  'bitbucket' | 
+  'bitcoin' | 
+  'bity' | 
+  'black-tie' | 
+  'blackberry' | 
+  'blogger' | 
+  'blogger-b' | 
+  'bluetooth' | 
+  'bluetooth-b' | 
+  'bootstrap' | 
+  'btc' | 
+  'buffer' | 
+  'buromobelexperte' | 
+  'buy-n-large' | 
+  'buysellads' | 
+  'canadian-maple-leaf' | 
+  'cc-amazon-pay' | 
+  'cc-amex' | 
+  'cc-apple-pay' | 
+  'cc-diners-club' | 
+  'cc-discover' | 
+  'cc-jcb' | 
+  'cc-mastercard' | 
+  'cc-paypal' | 
+  'cc-stripe' | 
+  'cc-visa' | 
+  'centercode' | 
+  'centos' | 
+  'chrome' | 
+  'chromecast' | 
+  'cloudflare' | 
+  'cloudscale' | 
+  'cloudsmith' | 
+  'cloudversify' | 
+  'codepen' | 
+  'codiepie' | 
+  'confluence' | 
+  'connectdevelop' | 
+  'contao' | 
+  'cotton-bureau' | 
+  'cpanel' | 
+  'creative-commons' | 
+  'creative-commons-by' | 
+  'creative-commons-nc' | 
+  'creative-commons-nc-eu' | 
+  'creative-commons-nc-jp' | 
+  'creative-commons-nd' | 
+  'creative-commons-pd' | 
+  'creative-commons-pd-alt' | 
+  'creative-commons-remix' | 
+  'creative-commons-sa' | 
+  'creative-commons-sampling' | 
+  'creative-commons-sampling-plus' | 
+  'creative-commons-share' | 
+  'creative-commons-zero' | 
+  'critical-role' | 
+  'css3' | 
+  'css3-alt' | 
+  'cuttlefish' | 
+  'd-and-d' | 
+  'd-and-d-beyond' | 
+  'dailymotion' | 
+  'dashcube' | 
+  'deezer' | 
+  'delicious' | 
+  'deploydog' | 
+  'deskpro' | 
+  'dev' | 
+  'deviantart' | 
+  'dhl' | 
+  'diaspora' | 
+  'digg' | 
+  'digital-ocean' | 
+  'discord' | 
+  'discourse' | 
+  'dochub' | 
+  'docker' | 
+  'draft2digital' | 
+  'dribbble' | 
+  'dribbble-square' | 
+  'dropbox' | 
+  'drupal' | 
+  'dyalog' | 
+  'earlybirds' | 
+  'ebay' | 
+  'edge' | 
+  'edge-legacy' | 
+  'elementor' | 
+  'ello' | 
+  'ember' | 
+  'empire' | 
+  'envira' | 
+  'erlang' | 
+  'ethereum' | 
+  'etsy' | 
+  'evernote' | 
+  'expeditedssl' | 
+  'facebook' | 
+  'facebook-f' | 
+  'facebook-messenger' | 
+  'facebook-square' | 
+  'fantasy-flight-games' | 
+  'fedex' | 
+  'fedora' | 
+  'figma' | 
+  'firefox' | 
+  'firefox-browser' | 
+  'first-order' | 
+  'first-order-alt' | 
+  'firstdraft' | 
+  'flickr' | 
+  'flipboard' | 
+  'fly' | 
+  'font-awesome' | 
+  'font-awesome-alt' | 
+  'font-awesome-flag' | 
+  'font-awesome-logo-full' | 
+  'fonticons' | 
+  'fonticons-fi' | 
+  'fort-awesome' | 
+  'fort-awesome-alt' | 
+  'forumbee' | 
+  'foursquare' | 
+  'free-code-camp' | 
+  'freebsd' | 
+  'fulcrum' | 
+  'galactic-republic' | 
+  'galactic-senate' | 
+  'get-pocket' | 
+  'gg' | 
+  'gg-circle' | 
+  'git' | 
+  'git-alt' | 
+  'git-square' | 
+  'github' | 
+  'github-alt' | 
+  'github-square' | 
+  'gitkraken' | 
+  'gitlab' | 
+  'gitter' | 
+  'glide' | 
+  'glide-g' | 
+  'gofore' | 
+  'goodreads' | 
+  'goodreads-g' | 
+  'google' | 
+  'google-drive' | 
+  'google-pay' | 
+  'google-play' | 
+  'google-plus' | 
+  'google-plus-g' | 
+  'google-plus-square' | 
+  'google-wallet' | 
+  'gratipay' | 
+  'grav' | 
+  'gripfire' | 
+  'grunt' | 
+  'guilded' | 
+  'gulp' | 
+  'hacker-news' | 
+  'hacker-news-square' | 
+  'hackerrank' | 
+  'hips' | 
+  'hire-a-helper' | 
+  'hive' | 
+  'hooli' | 
+  'hornbill' | 
+  'hotjar' | 
+  'houzz' | 
+  'html5' | 
+  'hubspot' | 
+  'ideal' | 
+  'imdb' | 
+  'innosoft' | 
+  'instagram' | 
+  'instagram-square' | 
+  'instalod' | 
+  'intercom' | 
+  'internet-explorer' | 
+  'invision' | 
+  'ioxhost' | 
+  'itch-io' | 
+  'itunes' | 
+  'itunes-note' | 
+  'java' | 
+  'jedi-order' | 
+  'jenkins' | 
+  'jira' | 
+  'joget' | 
+  'joomla' | 
+  'js' | 
+  'js-square' | 
+  'jsfiddle' | 
+  'kaggle' | 
+  'keybase' | 
+  'keycdn' | 
+  'kickstarter' | 
+  'kickstarter-k' | 
+  'korvue' | 
+  'laravel' | 
+  'lastfm' | 
+  'lastfm-square' | 
+  'leanpub' | 
+  'less' | 
+  'line' | 
+  'linkedin' | 
+  'linkedin-in' | 
+  'linode' | 
+  'linux' | 
+  'lyft' | 
+  'magento' | 
+  'mailchimp' | 
+  'mandalorian' | 
+  'markdown' | 
+  'mastodon' | 
+  'maxcdn' | 
+  'mdb' | 
+  'medapps' | 
+  'medium' | 
+  'medium-m' | 
+  'medrt' | 
+  'meetup' | 
+  'megaport' | 
+  'mendeley' | 
+  'microblog' | 
+  'microsoft' | 
+  'mix' | 
+  'mixcloud' | 
+  'mixer' | 
+  'mizuni' | 
+  'modx' | 
+  'monero' | 
+  'napster' | 
+  'neos' | 
+  'nimblr' | 
+  'node' | 
+  'node-js' | 
+  'npm' | 
+  'ns8' | 
+  'nutritionix' | 
+  'octopus-deploy' | 
+  'odnoklassniki' | 
+  'odnoklassniki-square' | 
+  'old-republic' | 
+  'opencart' | 
+  'openid' | 
+  'opera' | 
+  'optin-monster' | 
+  'orcid' | 
+  'osi' | 
+  'page4' | 
+  'pagelines' | 
+  'palfed' | 
+  'patreon' | 
+  'paypal' | 
+  'penny-arcade' | 
+  'perbyte' | 
+  'periscope' | 
+  'phabricator' | 
+  'phoenix-framework' | 
+  'phoenix-squadron' | 
+  'php' | 
+  'pied-piper' | 
+  'pied-piper-alt' | 
+  'pied-piper-hat' | 
+  'pied-piper-pp' | 
+  'pied-piper-square' | 
+  'pinterest' | 
+  'pinterest-p' | 
+  'pinterest-square' | 
+  'playstation' | 
+  'product-hunt' | 
+  'pushed' | 
+  'python' | 
+  'qq' | 
+  'quinscape' | 
+  'quora' | 
+  'r-project' | 
+  'raspberry-pi' | 
+  'ravelry' | 
+  'react' | 
+  'reacteurope' | 
+  'readme' | 
+  'rebel' | 
+  'red-river' | 
+  'reddit' | 
+  'reddit-alien' | 
+  'reddit-square' | 
+  'redhat' | 
+  'renren' | 
+  'replyd' | 
+  'researchgate' | 
+  'resolving' | 
+  'rev' | 
+  'rocketchat' | 
+  'rockrms' | 
+  'rust' | 
+  'safari' | 
+  'salesforce' | 
+  'sass' | 
+  'schlix' | 
+  'scribd' | 
+  'searchengin' | 
+  'sellcast' | 
+  'sellsy' | 
+  'servicestack' | 
+  'shirtsinbulk' | 
+  'shopify' | 
+  'shopware' | 
+  'simplybuilt' | 
+  'sistrix' | 
+  'sith' | 
+  'sketch' | 
+  'skyatlas' | 
+  'skype' | 
+  'slack' | 
+  'slack-hash' | 
+  'slideshare' | 
+  'snapchat' | 
+  'snapchat-ghost' | 
+  'snapchat-square' | 
+  'soundcloud' | 
+  'sourcetree' | 
+  'speakap' | 
+  'speaker-deck' | 
+  'spotify' | 
+  'squarespace' | 
+  'stack-exchange' | 
+  'stack-overflow' | 
+  'stackpath' | 
+  'staylinked' | 
+  'steam' | 
+  'steam-square' | 
+  'steam-symbol' | 
+  'sticker-mule' | 
+  'strava' | 
+  'stripe' | 
+  'stripe-s' | 
+  'studiovinari' | 
+  'stumbleupon' | 
+  'stumbleupon-circle' | 
+  'superpowers' | 
+  'supple' | 
+  'suse' | 
+  'swift' | 
+  'symfony' | 
+  'teamspeak' | 
+  'telegram' | 
+  'telegram-plane' | 
+  'tencent-weibo' | 
+  'the-red-yeti' | 
+  'themeco' | 
+  'themeisle' | 
+  'think-peaks' | 
+  'tiktok' | 
+  'trade-federation' | 
+  'trello' | 
+  'tumblr' | 
+  'tumblr-square' | 
+  'twitch' | 
+  'twitter' | 
+  'twitter-square' | 
+  'typo3' | 
+  'uber' | 
+  'ubuntu' | 
+  'uikit' | 
+  'umbraco' | 
+  'uncharted' | 
+  'uniregistry' | 
+  'unity' | 
+  'unsplash' | 
+  'untappd' | 
+  'ups' | 
+  'usb' | 
+  'usps' | 
+  'ussunnah' | 
+  'vaadin' | 
+  'viacoin' | 
+  'viadeo' | 
+  'viadeo-square' | 
+  'viber' | 
+  'vimeo' | 
+  'vimeo-square' | 
+  'vimeo-v' | 
+  'vine' | 
+  'vk' | 
+  'vnv' | 
+  'vuejs' | 
+  'watchman-monitoring' | 
+  'waze' | 
+  'weebly' | 
+  'weibo' | 
+  'weixin' | 
+  'whatsapp' | 
+  'whatsapp-square' | 
+  'whmcs' | 
+  'wikipedia-w' | 
+  'windows' | 
+  'wix' | 
+  'wizards-of-the-coast' | 
+  'wodu' | 
+  'wolf-pack-battalion' | 
+  'wordpress' | 
+  'wordpress-simple' | 
+  'wpbeginner' | 
+  'wpexplorer' | 
+  'wpforms' | 
+  'wpressr' | 
+  'xbox' | 
+  'xing' | 
+  'xing-square' | 
+  'y-combinator' | 
+  'yahoo' | 
+  'yammer' | 
+  'yandex' | 
+  'yandex-international' | 
+  'yarn' | 
+  'yelp' | 
+  'yoast' | 
+  'youtube' | 
+  'youtube-square' | 
+  'zhihu' | 
+  'abacus' | 
+  'acorn' | 
+  'ad' | 
+  'address-book' | 
+  'address-card' | 
+  'adjust' | 
+  'air-conditioner' | 
+  'air-freshener' | 
+  'alarm-clock' | 
+  'alarm-exclamation' | 
+  'alarm-plus' | 
+  'alarm-snooze' | 
+  'album' | 
+  'album-collection' | 
+  'alicorn' | 
+  'alien' | 
+  'alien-monster' | 
+  'align-center' | 
+  'align-justify' | 
+  'align-left' | 
+  'align-right' | 
+  'align-slash' | 
+  'allergies' | 
+  'ambulance' | 
+  'american-sign-language-interpreting' | 
+  'amp-guitar' | 
+  'analytics' | 
+  'anchor' | 
+  'angel' | 
+  'angle-double-down' | 
+  'angle-double-left' | 
+  'angle-double-right' | 
+  'angle-double-up' | 
+  'angle-down' | 
+  'angle-left' | 
+  'angle-right' | 
+  'angle-up' | 
+  'angry' | 
+  'ankh' | 
+  'apple-alt' | 
+  'apple-crate' | 
+  'archive' | 
+  'archway' | 
+  'arrow-alt-circle-down' | 
+  'arrow-alt-circle-left' | 
+  'arrow-alt-circle-right' | 
+  'arrow-alt-circle-up' | 
+  'arrow-alt-down' | 
+  'arrow-alt-from-bottom' | 
+  'arrow-alt-from-left' | 
+  'arrow-alt-from-right' | 
+  'arrow-alt-from-top' | 
+  'arrow-alt-left' | 
+  'arrow-alt-right' | 
+  'arrow-alt-square-down' | 
+  'arrow-alt-square-left' | 
+  'arrow-alt-square-right' | 
+  'arrow-alt-square-up' | 
+  'arrow-alt-to-bottom' | 
+  'arrow-alt-to-left' | 
+  'arrow-alt-to-right' | 
+  'arrow-alt-to-top' | 
+  'arrow-alt-up' | 
+  'arrow-circle-down' | 
+  'arrow-circle-left' | 
+  'arrow-circle-right' | 
+  'arrow-circle-up' | 
+  'arrow-down' | 
+  'arrow-from-bottom' | 
+  'arrow-from-left' | 
+  'arrow-from-right' | 
+  'arrow-from-top' | 
+  'arrow-left' | 
+  'arrow-right' | 
+  'arrow-square-down' | 
+  'arrow-square-left' | 
+  'arrow-square-right' | 
+  'arrow-square-up' | 
+  'arrow-to-bottom' | 
+  'arrow-to-left' | 
+  'arrow-to-right' | 
+  'arrow-to-top' | 
+  'arrow-up' | 
+  'arrows' | 
+  'arrows-alt' | 
+  'arrows-alt-h' | 
+  'arrows-alt-v' | 
+  'arrows-h' | 
+  'arrows-v' | 
+  'assistive-listening-systems' | 
+  'asterisk' | 
+  'at' | 
+  'atlas' | 
+  'atom' | 
+  'atom-alt' | 
+  'audio-description' | 
+  'award' | 
+  'axe' | 
+  'axe-battle' | 
+  'baby' | 
+  'baby-carriage' | 
+  'backpack' | 
+  'backspace' | 
+  'backward' | 
+  'bacon' | 
+  'bacteria' | 
+  'bacterium' | 
+  'badge' | 
+  'badge-check' | 
+  'badge-dollar' | 
+  'badge-percent' | 
+  'badge-sheriff' | 
+  'badger-honey' | 
+  'bags-shopping' | 
+  'bahai' | 
+  'balance-scale' | 
+  'balance-scale-left' | 
+  'balance-scale-right' | 
+  'ball-pile' | 
+  'ballot' | 
+  'ballot-check' | 
+  'ban' | 
+  'band-aid' | 
+  'banjo' | 
+  'barcode' | 
+  'barcode-alt' | 
+  'barcode-read' | 
+  'barcode-scan' | 
+  'bars' | 
+  'baseball' | 
+  'baseball-ball' | 
+  'basketball-ball' | 
+  'basketball-hoop' | 
+  'bat' | 
+  'bath' | 
+  'battery-bolt' | 
+  'battery-empty' | 
+  'battery-full' | 
+  'battery-half' | 
+  'battery-quarter' | 
+  'battery-slash' | 
+  'battery-three-quarters' | 
+  'bed' | 
+  'bed-alt' | 
+  'bed-bunk' | 
+  'bed-empty' | 
+  'beer' | 
+  'bell' | 
+  'bell-exclamation' | 
+  'bell-on' | 
+  'bell-plus' | 
+  'bell-school' | 
+  'bell-school-slash' | 
+  'bell-slash' | 
+  'bells' | 
+  'betamax' | 
+  'bezier-curve' | 
+  'bible' | 
+  'bicycle' | 
+  'biking' | 
+  'biking-mountain' | 
+  'binoculars' | 
+  'biohazard' | 
+  'birthday-cake' | 
+  'blanket' | 
+  'blender' | 
+  'blender-phone' | 
+  'blind' | 
+  'blinds' | 
+  'blinds-open' | 
+  'blinds-raised' | 
+  'blog' | 
+  'bold' | 
+  'bolt' | 
+  'bomb' | 
+  'bone' | 
+  'bone-break' | 
+  'bong' | 
+  'book' | 
+  'book-alt' | 
+  'book-dead' | 
+  'book-heart' | 
+  'book-medical' | 
+  'book-open' | 
+  'book-reader' | 
+  'book-spells' | 
+  'book-user' | 
+  'bookmark' | 
+  'books' | 
+  'books-medical' | 
+  'boombox' | 
+  'boot' | 
+  'booth-curtain' | 
+  'border-all' | 
+  'border-bottom' | 
+  'border-center-h' | 
+  'border-center-v' | 
+  'border-inner' | 
+  'border-left' | 
+  'border-none' | 
+  'border-outer' | 
+  'border-right' | 
+  'border-style' | 
+  'border-style-alt' | 
+  'border-top' | 
+  'bow-arrow' | 
+  'bowling-ball' | 
+  'bowling-pins' | 
+  'box' | 
+  'box-alt' | 
+  'box-ballot' | 
+  'box-check' | 
+  'box-fragile' | 
+  'box-full' | 
+  'box-heart' | 
+  'box-open' | 
+  'box-tissue' | 
+  'box-up' | 
+  'box-usd' | 
+  'boxes' | 
+  'boxes-alt' | 
+  'boxing-glove' | 
+  'brackets' | 
+  'brackets-curly' | 
+  'braille' | 
+  'brain' | 
+  'bread-loaf' | 
+  'bread-slice' | 
+  'briefcase' | 
+  'briefcase-medical' | 
+  'bring-forward' | 
+  'bring-front' | 
+  'broadcast-tower' | 
+  'broom' | 
+  'browser' | 
+  'brush' | 
+  'bug' | 
+  'building' | 
+  'bullhorn' | 
+  'bullseye' | 
+  'bullseye-arrow' | 
+  'bullseye-pointer' | 
+  'burger-soda' | 
+  'burn' | 
+  'burrito' | 
+  'bus' | 
+  'bus-alt' | 
+  'bus-school' | 
+  'business-time' | 
+  'cabinet-filing' | 
+  'cactus' | 
+  'calculator' | 
+  'calculator-alt' | 
+  'calendar' | 
+  'calendar-alt' | 
+  'calendar-check' | 
+  'calendar-day' | 
+  'calendar-edit' | 
+  'calendar-exclamation' | 
+  'calendar-minus' | 
+  'calendar-plus' | 
+  'calendar-star' | 
+  'calendar-times' | 
+  'calendar-week' | 
+  'camcorder' | 
+  'camera' | 
+  'camera-alt' | 
+  'camera-home' | 
+  'camera-movie' | 
+  'camera-polaroid' | 
+  'camera-retro' | 
+  'campfire' | 
+  'campground' | 
+  'candle-holder' | 
+  'candy-cane' | 
+  'candy-corn' | 
+  'cannabis' | 
+  'capsules' | 
+  'car' | 
+  'car-alt' | 
+  'car-battery' | 
+  'car-building' | 
+  'car-bump' | 
+  'car-bus' | 
+  'car-crash' | 
+  'car-garage' | 
+  'car-mechanic' | 
+  'car-side' | 
+  'car-tilt' | 
+  'car-wash' | 
+  'caravan' | 
+  'caravan-alt' | 
+  'caret-circle-down' | 
+  'caret-circle-left' | 
+  'caret-circle-right' | 
+  'caret-circle-up' | 
+  'caret-down' | 
+  'caret-left' | 
+  'caret-right' | 
+  'caret-square-down' | 
+  'caret-square-left' | 
+  'caret-square-right' | 
+  'caret-square-up' | 
+  'caret-up' | 
+  'carrot' | 
+  'cars' | 
+  'cart-arrow-down' | 
+  'cart-plus' | 
+  'cash-register' | 
+  'cassette-tape' | 
+  'cat' | 
+  'cat-space' | 
+  'cauldron' | 
+  'cctv' | 
+  'certificate' | 
+  'chair' | 
+  'chair-office' | 
+  'chalkboard' | 
+  'chalkboard-teacher' | 
+  'charging-station' | 
+  'chart-area' | 
+  'chart-bar' | 
+  'chart-line' | 
+  'chart-line-down' | 
+  'chart-network' | 
+  'chart-pie' | 
+  'chart-pie-alt' | 
+  'chart-scatter' | 
+  'check' | 
+  'check-circle' | 
+  'check-double' | 
+  'check-square' | 
+  'cheese' | 
+  'cheese-swiss' | 
+  'cheeseburger' | 
+  'chess' | 
+  'chess-bishop' | 
+  'chess-bishop-alt' | 
+  'chess-board' | 
+  'chess-clock' | 
+  'chess-clock-alt' | 
+  'chess-king' | 
+  'chess-king-alt' | 
+  'chess-knight' | 
+  'chess-knight-alt' | 
+  'chess-pawn' | 
+  'chess-pawn-alt' | 
+  'chess-queen' | 
+  'chess-queen-alt' | 
+  'chess-rook' | 
+  'chess-rook-alt' | 
+  'chevron-circle-down' | 
+  'chevron-circle-left' | 
+  'chevron-circle-right' | 
+  'chevron-circle-up' | 
+  'chevron-double-down' | 
+  'chevron-double-left' | 
+  'chevron-double-right' | 
+  'chevron-double-up' | 
+  'chevron-down' | 
+  'chevron-left' | 
+  'chevron-right' | 
+  'chevron-square-down' | 
+  'chevron-square-left' | 
+  'chevron-square-right' | 
+  'chevron-square-up' | 
+  'chevron-up' | 
+  'child' | 
+  'chimney' | 
+  'church' | 
+  'circle' | 
+  'circle-notch' | 
+  'city' | 
+  'clarinet' | 
+  'claw-marks' | 
+  'clinic-medical' | 
+  'clipboard' | 
+  'clipboard-check' | 
+  'clipboard-list' | 
+  'clipboard-list-check' | 
+  'clipboard-prescription' | 
+  'clipboard-user' | 
+  'clock' | 
+  'clone' | 
+  'closed-captioning' | 
+  'cloud' | 
+  'cloud-download' | 
+  'cloud-download-alt' | 
+  'cloud-drizzle' | 
+  'cloud-hail' | 
+  'cloud-hail-mixed' | 
+  'cloud-meatball' | 
+  'cloud-moon' | 
+  'cloud-moon-rain' | 
+  'cloud-music' | 
+  'cloud-rain' | 
+  'cloud-rainbow' | 
+  'cloud-showers' | 
+  'cloud-showers-heavy' | 
+  'cloud-sleet' | 
+  'cloud-snow' | 
+  'cloud-sun' | 
+  'cloud-sun-rain' | 
+  'cloud-upload' | 
+  'cloud-upload-alt' | 
+  'clouds' | 
+  'clouds-moon' | 
+  'clouds-sun' | 
+  'club' | 
+  'cocktail' | 
+  'code' | 
+  'code-branch' | 
+  'code-commit' | 
+  'code-merge' | 
+  'coffee' | 
+  'coffee-pot' | 
+  'coffee-togo' | 
+  'coffin' | 
+  'coffin-cross' | 
+  'cog' | 
+  'cogs' | 
+  'coin' | 
+  'coins' | 
+  'columns' | 
+  'comet' | 
+  'comment' | 
+  'comment-alt' | 
+  'comment-alt-check' | 
+  'comment-alt-dollar' | 
+  'comment-alt-dots' | 
+  'comment-alt-edit' | 
+  'comment-alt-exclamation' | 
+  'comment-alt-lines' | 
+  'comment-alt-medical' | 
+  'comment-alt-minus' | 
+  'comment-alt-music' | 
+  'comment-alt-plus' | 
+  'comment-alt-slash' | 
+  'comment-alt-smile' | 
+  'comment-alt-times' | 
+  'comment-check' | 
+  'comment-dollar' | 
+  'comment-dots' | 
+  'comment-edit' | 
+  'comment-exclamation' | 
+  'comment-lines' | 
+  'comment-medical' | 
+  'comment-minus' | 
+  'comment-music' | 
+  'comment-plus' | 
+  'comment-slash' | 
+  'comment-smile' | 
+  'comment-times' | 
+  'comments' | 
+  'comments-alt' | 
+  'comments-alt-dollar' | 
+  'comments-dollar' | 
+  'compact-disc' | 
+  'compass' | 
+  'compass-slash' | 
+  'compress' | 
+  'compress-alt' | 
+  'compress-arrows-alt' | 
+  'compress-wide' | 
+  'computer-classic' | 
+  'computer-speaker' | 
+  'concierge-bell' | 
+  'construction' | 
+  'container-storage' | 
+  'conveyor-belt' | 
+  'conveyor-belt-alt' | 
+  'cookie' | 
+  'cookie-bite' | 
+  'copy' | 
+  'copyright' | 
+  'corn' | 
+  'couch' | 
+  'cow' | 
+  'cowbell' | 
+  'cowbell-more' | 
+  'credit-card' | 
+  'credit-card-blank' | 
+  'credit-card-front' | 
+  'cricket' | 
+  'croissant' | 
+  'crop' | 
+  'crop-alt' | 
+  'cross' | 
+  'crosshairs' | 
+  'crow' | 
+  'crown' | 
+  'crutch' | 
+  'crutches' | 
+  'cube' | 
+  'cubes' | 
+  'curling' | 
+  'cut' | 
+  'dagger' | 
+  'database' | 
+  'deaf' | 
+  'debug' | 
+  'deer' | 
+  'deer-rudolph' | 
+  'democrat' | 
+  'desktop' | 
+  'desktop-alt' | 
+  'dewpoint' | 
+  'dharmachakra' | 
+  'diagnoses' | 
+  'diamond' | 
+  'dice' | 
+  'dice-d10' | 
+  'dice-d12' | 
+  'dice-d20' | 
+  'dice-d4' | 
+  'dice-d6' | 
+  'dice-d8' | 
+  'dice-five' | 
+  'dice-four' | 
+  'dice-one' | 
+  'dice-six' | 
+  'dice-three' | 
+  'dice-two' | 
+  'digging' | 
+  'digital-tachograph' | 
+  'diploma' | 
+  'directions' | 
+  'disc-drive' | 
+  'disease' | 
+  'divide' | 
+  'dizzy' | 
+  'dna' | 
+  'do-not-enter' | 
+  'dog' | 
+  'dog-leashed' | 
+  'dollar-sign' | 
+  'dolly' | 
+  'dolly-empty' | 
+  'dolly-flatbed' | 
+  'dolly-flatbed-alt' | 
+  'dolly-flatbed-empty' | 
+  'donate' | 
+  'door-closed' | 
+  'door-open' | 
+  'dot-circle' | 
+  'dove' | 
+  'download' | 
+  'drafting-compass' | 
+  'dragon' | 
+  'draw-circle' | 
+  'draw-polygon' | 
+  'draw-square' | 
+  'dreidel' | 
+  'drone' | 
+  'drone-alt' | 
+  'drum' | 
+  'drum-steelpan' | 
+  'drumstick' | 
+  'drumstick-bite' | 
+  'dryer' | 
+  'dryer-alt' | 
+  'duck' | 
+  'dumbbell' | 
+  'dumpster' | 
+  'dumpster-fire' | 
+  'dungeon' | 
+  'ear' | 
+  'ear-muffs' | 
+  'eclipse' | 
+  'eclipse-alt' | 
+  'edit' | 
+  'egg' | 
+  'egg-fried' | 
+  'eject' | 
+  'elephant' | 
+  'ellipsis-h' | 
+  'ellipsis-h-alt' | 
+  'ellipsis-v' | 
+  'ellipsis-v-alt' | 
+  'empty-set' | 
+  'engine-warning' | 
+  'envelope' | 
+  'envelope-open' | 
+  'envelope-open-dollar' | 
+  'envelope-open-text' | 
+  'envelope-square' | 
+  'equals' | 
+  'eraser' | 
+  'ethernet' | 
+  'euro-sign' | 
+  'exchange' | 
+  'exchange-alt' | 
+  'exclamation' | 
+  'exclamation-circle' | 
+  'exclamation-square' | 
+  'exclamation-triangle' | 
+  'expand' | 
+  'expand-alt' | 
+  'expand-arrows' | 
+  'expand-arrows-alt' | 
+  'expand-wide' | 
+  'external-link' | 
+  'external-link-alt' | 
+  'external-link-square' | 
+  'external-link-square-alt' | 
+  'eye' | 
+  'eye-dropper' | 
+  'eye-evil' | 
+  'eye-slash' | 
+  'fan' | 
+  'fan-table' | 
+  'farm' | 
+  'fast-backward' | 
+  'fast-forward' | 
+  'faucet' | 
+  'faucet-drip' | 
+  'fax' | 
+  'feather' | 
+  'feather-alt' | 
+  'female' | 
+  'field-hockey' | 
+  'fighter-jet' | 
+  'file' | 
+  'file-alt' | 
+  'file-archive' | 
+  'file-audio' | 
+  'file-certificate' | 
+  'file-chart-line' | 
+  'file-chart-pie' | 
+  'file-check' | 
+  'file-code' | 
+  'file-contract' | 
+  'file-csv' | 
+  'file-download' | 
+  'file-edit' | 
+  'file-excel' | 
+  'file-exclamation' | 
+  'file-export' | 
+  'file-image' | 
+  'file-import' | 
+  'file-invoice' | 
+  'file-invoice-dollar' | 
+  'file-medical' | 
+  'file-medical-alt' | 
+  'file-minus' | 
+  'file-music' | 
+  'file-pdf' | 
+  'file-plus' | 
+  'file-powerpoint' | 
+  'file-prescription' | 
+  'file-search' | 
+  'file-signature' | 
+  'file-spreadsheet' | 
+  'file-times' | 
+  'file-upload' | 
+  'file-user' | 
+  'file-video' | 
+  'file-word' | 
+  'files-medical' | 
+  'fill' | 
+  'fill-drip' | 
+  'film' | 
+  'film-alt' | 
+  'film-canister' | 
+  'filter' | 
+  'fingerprint' | 
+  'fire' | 
+  'fire-alt' | 
+  'fire-extinguisher' | 
+  'fire-smoke' | 
+  'fireplace' | 
+  'first-aid' | 
+  'fish' | 
+  'fish-cooked' | 
+  'fist-raised' | 
+  'flag' | 
+  'flag-alt' | 
+  'flag-checkered' | 
+  'flag-usa' | 
+  'flame' | 
+  'flashlight' | 
+  'flask' | 
+  'flask-poison' | 
+  'flask-potion' | 
+  'flower' | 
+  'flower-daffodil' | 
+  'flower-tulip' | 
+  'flushed' | 
+  'flute' | 
+  'flux-capacitor' | 
+  'fog' | 
+  'folder' | 
+  'folder-download' | 
+  'folder-minus' | 
+  'folder-open' | 
+  'folder-plus' | 
+  'folder-times' | 
+  'folder-tree' | 
+  'folder-upload' | 
+  'folders' | 
+  'font' | 
+  'font-awesome-logo-full' | 
+  'font-case' | 
+  'football-ball' | 
+  'football-helmet' | 
+  'forklift' | 
+  'forward' | 
+  'fragile' | 
+  'french-fries' | 
+  'frog' | 
+  'frosty-head' | 
+  'frown' | 
+  'frown-open' | 
+  'function' | 
+  'funnel-dollar' | 
+  'futbol' | 
+  'galaxy' | 
+  'game-board' | 
+  'game-board-alt' | 
+  'game-console-handheld' | 
+  'gamepad' | 
+  'gamepad-alt' | 
+  'garage' | 
+  'garage-car' | 
+  'garage-open' | 
+  'gas-pump' | 
+  'gas-pump-slash' | 
+  'gavel' | 
+  'gem' | 
+  'genderless' | 
+  'ghost' | 
+  'gift' | 
+  'gift-card' | 
+  'gifts' | 
+  'gingerbread-man' | 
+  'glass' | 
+  'glass-champagne' | 
+  'glass-cheers' | 
+  'glass-citrus' | 
+  'glass-martini' | 
+  'glass-martini-alt' | 
+  'glass-whiskey' | 
+  'glass-whiskey-rocks' | 
+  'glasses' | 
+  'glasses-alt' | 
+  'globe' | 
+  'globe-africa' | 
+  'globe-americas' | 
+  'globe-asia' | 
+  'globe-europe' | 
+  'globe-snow' | 
+  'globe-stand' | 
+  'golf-ball' | 
+  'golf-club' | 
+  'gopuram' | 
+  'graduation-cap' | 
+  'gramophone' | 
+  'greater-than' | 
+  'greater-than-equal' | 
+  'grimace' | 
+  'grin' | 
+  'grin-alt' | 
+  'grin-beam' | 
+  'grin-beam-sweat' | 
+  'grin-hearts' | 
+  'grin-squint' | 
+  'grin-squint-tears' | 
+  'grin-stars' | 
+  'grin-tears' | 
+  'grin-tongue' | 
+  'grin-tongue-squint' | 
+  'grin-tongue-wink' | 
+  'grin-wink' | 
+  'grip-horizontal' | 
+  'grip-lines' | 
+  'grip-lines-vertical' | 
+  'grip-vertical' | 
+  'guitar' | 
+  'guitar-electric' | 
+  'guitars' | 
+  'h-square' | 
+  'h1' | 
+  'h2' | 
+  'h3' | 
+  'h4' | 
+  'hamburger' | 
+  'hammer' | 
+  'hammer-war' | 
+  'hamsa' | 
+  'hand-heart' | 
+  'hand-holding' | 
+  'hand-holding-box' | 
+  'hand-holding-heart' | 
+  'hand-holding-magic' | 
+  'hand-holding-medical' | 
+  'hand-holding-seedling' | 
+  'hand-holding-usd' | 
+  'hand-holding-water' | 
+  'hand-lizard' | 
+  'hand-middle-finger' | 
+  'hand-paper' | 
+  'hand-peace' | 
+  'hand-point-down' | 
+  'hand-point-left' | 
+  'hand-point-right' | 
+  'hand-point-up' | 
+  'hand-pointer' | 
+  'hand-receiving' | 
+  'hand-rock' | 
+  'hand-scissors' | 
+  'hand-sparkles' | 
+  'hand-spock' | 
+  'hands' | 
+  'hands-heart' | 
+  'hands-helping' | 
+  'hands-usd' | 
+  'hands-wash' | 
+  'handshake' | 
+  'handshake-alt' | 
+  'handshake-alt-slash' | 
+  'handshake-slash' | 
+  'hanukiah' | 
+  'hard-hat' | 
+  'hashtag' | 
+  'hat-chef' | 
+  'hat-cowboy' | 
+  'hat-cowboy-side' | 
+  'hat-santa' | 
+  'hat-winter' | 
+  'hat-witch' | 
+  'hat-wizard' | 
+  'hdd' | 
+  'head-side' | 
+  'head-side-brain' | 
+  'head-side-cough' | 
+  'head-side-cough-slash' | 
+  'head-side-headphones' | 
+  'head-side-mask' | 
+  'head-side-medical' | 
+  'head-side-virus' | 
+  'head-vr' | 
+  'heading' | 
+  'headphones' | 
+  'headphones-alt' | 
+  'headset' | 
+  'heart' | 
+  'heart-broken' | 
+  'heart-circle' | 
+  'heart-rate' | 
+  'heart-square' | 
+  'heartbeat' | 
+  'heat' | 
+  'helicopter' | 
+  'helmet-battle' | 
+  'hexagon' | 
+  'highlighter' | 
+  'hiking' | 
+  'hippo' | 
+  'history' | 
+  'hockey-mask' | 
+  'hockey-puck' | 
+  'hockey-sticks' | 
+  'holly-berry' | 
+  'home' | 
+  'home-alt' | 
+  'home-heart' | 
+  'home-lg' | 
+  'home-lg-alt' | 
+  'hood-cloak' | 
+  'horizontal-rule' | 
+  'horse' | 
+  'horse-head' | 
+  'horse-saddle' | 
+  'hospital' | 
+  'hospital-alt' | 
+  'hospital-symbol' | 
+  'hospital-user' | 
+  'hospitals' | 
+  'hot-tub' | 
+  'hotdog' | 
+  'hotel' | 
+  'hourglass' | 
+  'hourglass-end' | 
+  'hourglass-half' | 
+  'hourglass-start' | 
+  'house' | 
+  'house-damage' | 
+  'house-day' | 
+  'house-flood' | 
+  'house-leave' | 
+  'house-night' | 
+  'house-return' | 
+  'house-signal' | 
+  'house-user' | 
+  'hryvnia' | 
+  'humidity' | 
+  'hurricane' | 
+  'i-cursor' | 
+  'ice-cream' | 
+  'ice-skate' | 
+  'icicles' | 
+  'icons' | 
+  'icons-alt' | 
+  'id-badge' | 
+  'id-card' | 
+  'id-card-alt' | 
+  'igloo' | 
+  'image' | 
+  'image-polaroid' | 
+  'images' | 
+  'inbox' | 
+  'inbox-in' | 
+  'inbox-out' | 
+  'indent' | 
+  'industry' | 
+  'industry-alt' | 
+  'infinity' | 
+  'info' | 
+  'info-circle' | 
+  'info-square' | 
+  'inhaler' | 
+  'integral' | 
+  'intersection' | 
+  'inventory' | 
+  'island-tropical' | 
+  'italic' | 
+  'jack-o-lantern' | 
+  'jedi' | 
+  'joint' | 
+  'journal-whills' | 
+  'joystick' | 
+  'jug' | 
+  'kaaba' | 
+  'kazoo' | 
+  'kerning' | 
+  'key' | 
+  'key-skeleton' | 
+  'keyboard' | 
+  'keynote' | 
+  'khanda' | 
+  'kidneys' | 
+  'kiss' | 
+  'kiss-beam' | 
+  'kiss-wink-heart' | 
+  'kite' | 
+  'kiwi-bird' | 
+  'knife-kitchen' | 
+  'lambda' | 
+  'lamp' | 
+  'lamp-desk' | 
+  'lamp-floor' | 
+  'landmark' | 
+  'landmark-alt' | 
+  'language' | 
+  'laptop' | 
+  'laptop-code' | 
+  'laptop-house' | 
+  'laptop-medical' | 
+  'lasso' | 
+  'laugh' | 
+  'laugh-beam' | 
+  'laugh-squint' | 
+  'laugh-wink' | 
+  'layer-group' | 
+  'layer-minus' | 
+  'layer-plus' | 
+  'leaf' | 
+  'leaf-heart' | 
+  'leaf-maple' | 
+  'leaf-oak' | 
+  'lemon' | 
+  'less-than' | 
+  'less-than-equal' | 
+  'level-down' | 
+  'level-down-alt' | 
+  'level-up' | 
+  'level-up-alt' | 
+  'life-ring' | 
+  'light-ceiling' | 
+  'light-switch' | 
+  'light-switch-off' | 
+  'light-switch-on' | 
+  'lightbulb' | 
+  'lightbulb-dollar' | 
+  'lightbulb-exclamation' | 
+  'lightbulb-on' | 
+  'lightbulb-slash' | 
+  'lights-holiday' | 
+  'line-columns' | 
+  'line-height' | 
+  'link' | 
+  'lips' | 
+  'lira-sign' | 
+  'list' | 
+  'list-alt' | 
+  'list-music' | 
+  'list-ol' | 
+  'list-ul' | 
+  'location' | 
+  'location-arrow' | 
+  'location-circle' | 
+  'location-slash' | 
+  'lock' | 
+  'lock-alt' | 
+  'lock-open' | 
+  'lock-open-alt' | 
+  'long-arrow-alt-down' | 
+  'long-arrow-alt-left' | 
+  'long-arrow-alt-right' | 
+  'long-arrow-alt-up' | 
+  'long-arrow-down' | 
+  'long-arrow-left' | 
+  'long-arrow-right' | 
+  'long-arrow-up' | 
+  'loveseat' | 
+  'low-vision' | 
+  'luchador' | 
+  'luggage-cart' | 
+  'lungs' | 
+  'lungs-virus' | 
+  'mace' | 
+  'magic' | 
+  'magnet' | 
+  'mail-bulk' | 
+  'mailbox' | 
+  'male' | 
+  'mandolin' | 
+  'map' | 
+  'map-marked' | 
+  'map-marked-alt' | 
+  'map-marker' | 
+  'map-marker-alt' | 
+  'map-marker-alt-slash' | 
+  'map-marker-check' | 
+  'map-marker-edit' | 
+  'map-marker-exclamation' | 
+  'map-marker-minus' | 
+  'map-marker-plus' | 
+  'map-marker-question' | 
+  'map-marker-slash' | 
+  'map-marker-smile' | 
+  'map-marker-times' | 
+  'map-pin' | 
+  'map-signs' | 
+  'marker' | 
+  'mars' | 
+  'mars-double' | 
+  'mars-stroke' | 
+  'mars-stroke-h' | 
+  'mars-stroke-v' | 
+  'mask' | 
+  'meat' | 
+  'medal' | 
+  'medkit' | 
+  'megaphone' | 
+  'meh' | 
+  'meh-blank' | 
+  'meh-rolling-eyes' | 
+  'memory' | 
+  'menorah' | 
+  'mercury' | 
+  'meteor' | 
+  'microchip' | 
+  'microphone' | 
+  'microphone-alt' | 
+  'microphone-alt-slash' | 
+  'microphone-slash' | 
+  'microphone-stand' | 
+  'microscope' | 
+  'microwave' | 
+  'mind-share' | 
+  'minus' | 
+  'minus-circle' | 
+  'minus-hexagon' | 
+  'minus-octagon' | 
+  'minus-square' | 
+  'mistletoe' | 
+  'mitten' | 
+  'mobile' | 
+  'mobile-alt' | 
+  'mobile-android' | 
+  'mobile-android-alt' | 
+  'money-bill' | 
+  'money-bill-alt' | 
+  'money-bill-wave' | 
+  'money-bill-wave-alt' | 
+  'money-check' | 
+  'money-check-alt' | 
+  'money-check-edit' | 
+  'money-check-edit-alt' | 
+  'monitor-heart-rate' | 
+  'monkey' | 
+  'monument' | 
+  'moon' | 
+  'moon-cloud' | 
+  'moon-stars' | 
+  'mortar-pestle' | 
+  'mosque' | 
+  'motorcycle' | 
+  'mountain' | 
+  'mountains' | 
+  'mouse' | 
+  'mouse-alt' | 
+  'mouse-pointer' | 
+  'mp3-player' | 
+  'mug' | 
+  'mug-hot' | 
+  'mug-marshmallows' | 
+  'mug-tea' | 
+  'music' | 
+  'music-alt' | 
+  'music-alt-slash' | 
+  'music-slash' | 
+  'narwhal' | 
+  'network-wired' | 
+  'neuter' | 
+  'newspaper' | 
+  'not-equal' | 
+  'notes-medical' | 
+  'object-group' | 
+  'object-ungroup' | 
+  'octagon' | 
+  'oil-can' | 
+  'oil-temp' | 
+  'om' | 
+  'omega' | 
+  'ornament' | 
+  'otter' | 
+  'outdent' | 
+  'outlet' | 
+  'oven' | 
+  'overline' | 
+  'page-break' | 
+  'pager' | 
+  'paint-brush' | 
+  'paint-brush-alt' | 
+  'paint-roller' | 
+  'palette' | 
+  'pallet' | 
+  'pallet-alt' | 
+  'paper-plane' | 
+  'paperclip' | 
+  'parachute-box' | 
+  'paragraph' | 
+  'paragraph-rtl' | 
+  'parking' | 
+  'parking-circle' | 
+  'parking-circle-slash' | 
+  'parking-slash' | 
+  'passport' | 
+  'pastafarianism' | 
+  'paste' | 
+  'pause' | 
+  'pause-circle' | 
+  'paw' | 
+  'paw-alt' | 
+  'paw-claws' | 
+  'peace' | 
+  'pegasus' | 
+  'pen' | 
+  'pen-alt' | 
+  'pen-fancy' | 
+  'pen-nib' | 
+  'pen-square' | 
+  'pencil' | 
+  'pencil-alt' | 
+  'pencil-paintbrush' | 
+  'pencil-ruler' | 
+  'pennant' | 
+  'people-arrows' | 
+  'people-carry' | 
+  'pepper-hot' | 
+  'percent' | 
+  'percentage' | 
+  'person-booth' | 
+  'person-carry' | 
+  'person-dolly' | 
+  'person-dolly-empty' | 
+  'person-sign' | 
+  'phone' | 
+  'phone-alt' | 
+  'phone-laptop' | 
+  'phone-office' | 
+  'phone-plus' | 
+  'phone-rotary' | 
+  'phone-slash' | 
+  'phone-square' | 
+  'phone-square-alt' | 
+  'phone-volume' | 
+  'photo-video' | 
+  'pi' | 
+  'piano' | 
+  'piano-keyboard' | 
+  'pie' | 
+  'pig' | 
+  'piggy-bank' | 
+  'pills' | 
+  'pizza' | 
+  'pizza-slice' | 
+  'place-of-worship' | 
+  'plane' | 
+  'plane-alt' | 
+  'plane-arrival' | 
+  'plane-departure' | 
+  'plane-slash' | 
+  'planet-moon' | 
+  'planet-ringed' | 
+  'play' | 
+  'play-circle' | 
+  'plug' | 
+  'plus' | 
+  'plus-circle' | 
+  'plus-hexagon' | 
+  'plus-octagon' | 
+  'plus-square' | 
+  'podcast' | 
+  'podium' | 
+  'podium-star' | 
+  'police-box' | 
+  'poll' | 
+  'poll-h' | 
+  'poll-people' | 
+  'poo' | 
+  'poo-storm' | 
+  'poop' | 
+  'popcorn' | 
+  'portal-enter' | 
+  'portal-exit' | 
+  'portrait' | 
+  'pound-sign' | 
+  'power-off' | 
+  'pray' | 
+  'praying-hands' | 
+  'prescription' | 
+  'prescription-bottle' | 
+  'prescription-bottle-alt' | 
+  'presentation' | 
+  'print' | 
+  'print-search' | 
+  'print-slash' | 
+  'procedures' | 
+  'project-diagram' | 
+  'projector' | 
+  'pump-medical' | 
+  'pump-soap' | 
+  'pumpkin' | 
+  'puzzle-piece' | 
+  'qrcode' | 
+  'question' | 
+  'question-circle' | 
+  'question-square' | 
+  'quidditch' | 
+  'quote-left' | 
+  'quote-right' | 
+  'quran' | 
+  'rabbit' | 
+  'rabbit-fast' | 
+  'racquet' | 
+  'radar' | 
+  'radiation' | 
+  'radiation-alt' | 
+  'radio' | 
+  'radio-alt' | 
+  'rainbow' | 
+  'raindrops' | 
+  'ram' | 
+  'ramp-loading' | 
+  'random' | 
+  'raygun' | 
+  'receipt' | 
+  'record-vinyl' | 
+  'rectangle-landscape' | 
+  'rectangle-portrait' | 
+  'rectangle-wide' | 
+  'recycle' | 
+  'redo' | 
+  'redo-alt' | 
+  'refrigerator' | 
+  'registered' | 
+  'remove-format' | 
+  'repeat' | 
+  'repeat-1' | 
+  'repeat-1-alt' | 
+  'repeat-alt' | 
+  'reply' | 
+  'reply-all' | 
+  'republican' | 
+  'restroom' | 
+  'retweet' | 
+  'retweet-alt' | 
+  'ribbon' | 
+  'ring' | 
+  'rings-wedding' | 
+  'road' | 
+  'robot' | 
+  'rocket' | 
+  'rocket-launch' | 
+  'route' | 
+  'route-highway' | 
+  'route-interstate' | 
+  'router' | 
+  'rss' | 
+  'rss-square' | 
+  'ruble-sign' | 
+  'ruler' | 
+  'ruler-combined' | 
+  'ruler-horizontal' | 
+  'ruler-triangle' | 
+  'ruler-vertical' | 
+  'running' | 
+  'rupee-sign' | 
+  'rv' | 
+  'sack' | 
+  'sack-dollar' | 
+  'sad-cry' | 
+  'sad-tear' | 
+  'salad' | 
+  'sandwich' | 
+  'satellite' | 
+  'satellite-dish' | 
+  'sausage' | 
+  'save' | 
+  'sax-hot' | 
+  'saxophone' | 
+  'scalpel' | 
+  'scalpel-path' | 
+  'scanner' | 
+  'scanner-image' | 
+  'scanner-keyboard' | 
+  'scanner-touchscreen' | 
+  'scarecrow' | 
+  'scarf' | 
+  'school' | 
+  'screwdriver' | 
+  'scroll' | 
+  'scroll-old' | 
+  'scrubber' | 
+  'scythe' | 
+  'sd-card' | 
+  'search' | 
+  'search-dollar' | 
+  'search-location' | 
+  'search-minus' | 
+  'search-plus' | 
+  'seedling' | 
+  'send-back' | 
+  'send-backward' | 
+  'sensor' | 
+  'sensor-alert' | 
+  'sensor-fire' | 
+  'sensor-on' | 
+  'sensor-smoke' | 
+  'server' | 
+  'shapes' | 
+  'share' | 
+  'share-all' | 
+  'share-alt' | 
+  'share-alt-square' | 
+  'share-square' | 
+  'sheep' | 
+  'shekel-sign' | 
+  'shield' | 
+  'shield-alt' | 
+  'shield-check' | 
+  'shield-cross' | 
+  'shield-virus' | 
+  'ship' | 
+  'shipping-fast' | 
+  'shipping-timed' | 
+  'shish-kebab' | 
+  'shoe-prints' | 
+  'shopping-bag' | 
+  'shopping-basket' | 
+  'shopping-cart' | 
+  'shovel' | 
+  'shovel-snow' | 
+  'shower' | 
+  'shredder' | 
+  'shuttle-van' | 
+  'shuttlecock' | 
+  'sickle' | 
+  'sigma' | 
+  'sign' | 
+  'sign-in' | 
+  'sign-in-alt' | 
+  'sign-language' | 
+  'sign-out' | 
+  'sign-out-alt' | 
+  'signal' | 
+  'signal-1' | 
+  'signal-2' | 
+  'signal-3' | 
+  'signal-4' | 
+  'signal-alt' | 
+  'signal-alt-1' | 
+  'signal-alt-2' | 
+  'signal-alt-3' | 
+  'signal-alt-slash' | 
+  'signal-slash' | 
+  'signal-stream' | 
+  'signature' | 
+  'sim-card' | 
+  'sink' | 
+  'siren' | 
+  'siren-on' | 
+  'sitemap' | 
+  'skating' | 
+  'skeleton' | 
+  'ski-jump' | 
+  'ski-lift' | 
+  'skiing' | 
+  'skiing-nordic' | 
+  'skull' | 
+  'skull-cow' | 
+  'skull-crossbones' | 
+  'slash' | 
+  'sledding' | 
+  'sleigh' | 
+  'sliders-h' | 
+  'sliders-h-square' | 
+  'sliders-v' | 
+  'sliders-v-square' | 
+  'smile' | 
+  'smile-beam' | 
+  'smile-plus' | 
+  'smile-wink' | 
+  'smog' | 
+  'smoke' | 
+  'smoking' | 
+  'smoking-ban' | 
+  'sms' | 
+  'snake' | 
+  'snooze' | 
+  'snow-blowing' | 
+  'snowboarding' | 
+  'snowflake' | 
+  'snowflakes' | 
+  'snowman' | 
+  'snowmobile' | 
+  'snowplow' | 
+  'soap' | 
+  'socks' | 
+  'solar-panel' | 
+  'solar-system' | 
+  'sort' | 
+  'sort-alpha-down' | 
+  'sort-alpha-down-alt' | 
+  'sort-alpha-up' | 
+  'sort-alpha-up-alt' | 
+  'sort-alt' | 
+  'sort-amount-down' | 
+  'sort-amount-down-alt' | 
+  'sort-amount-up' | 
+  'sort-amount-up-alt' | 
+  'sort-circle' | 
+  'sort-circle-down' | 
+  'sort-circle-up' | 
+  'sort-down' | 
+  'sort-numeric-down' | 
+  'sort-numeric-down-alt' | 
+  'sort-numeric-up' | 
+  'sort-numeric-up-alt' | 
+  'sort-shapes-down' | 
+  'sort-shapes-down-alt' | 
+  'sort-shapes-up' | 
+  'sort-shapes-up-alt' | 
+  'sort-size-down' | 
+  'sort-size-down-alt' | 
+  'sort-size-up' | 
+  'sort-size-up-alt' | 
+  'sort-up' | 
+  'soup' | 
+  'spa' | 
+  'space-shuttle' | 
+  'space-station-moon' | 
+  'space-station-moon-alt' | 
+  'spade' | 
+  'sparkles' | 
+  'speaker' | 
+  'speakers' | 
+  'spell-check' | 
+  'spider' | 
+  'spider-black-widow' | 
+  'spider-web' | 
+  'spinner' | 
+  'spinner-third' | 
+  'splotch' | 
+  'spray-can' | 
+  'sprinkler' | 
+  'square' | 
+  'square-full' | 
+  'square-root' | 
+  'square-root-alt' | 
+  'squirrel' | 
+  'staff' | 
+  'stamp' | 
+  'star' | 
+  'star-and-crescent' | 
+  'star-christmas' | 
+  'star-exclamation' | 
+  'star-half' | 
+  'star-half-alt' | 
+  'star-of-david' | 
+  'star-of-life' | 
+  'star-shooting' | 
+  'starfighter' | 
+  'starfighter-alt' | 
+  'stars' | 
+  'starship' | 
+  'starship-freighter' | 
+  'steak' | 
+  'steering-wheel' | 
+  'step-backward' | 
+  'step-forward' | 
+  'stethoscope' | 
+  'sticky-note' | 
+  'stocking' | 
+  'stomach' | 
+  'stop' | 
+  'stop-circle' | 
+  'stopwatch' | 
+  'stopwatch-20' | 
+  'store' | 
+  'store-alt' | 
+  'store-alt-slash' | 
+  'store-slash' | 
+  'stream' | 
+  'street-view' | 
+  'stretcher' | 
+  'strikethrough' | 
+  'stroopwafel' | 
+  'subscript' | 
+  'subway' | 
+  'suitcase' | 
+  'suitcase-rolling' | 
+  'sun' | 
+  'sun-cloud' | 
+  'sun-dust' | 
+  'sun-haze' | 
+  'sunglasses' | 
+  'sunrise' | 
+  'sunset' | 
+  'superscript' | 
+  'surprise' | 
+  'swatchbook' | 
+  'swimmer' | 
+  'swimming-pool' | 
+  'sword' | 
+  'sword-laser' | 
+  'sword-laser-alt' | 
+  'swords' | 
+  'swords-laser' | 
+  'synagogue' | 
+  'sync' | 
+  'sync-alt' | 
+  'syringe' | 
+  'table' | 
+  'table-tennis' | 
+  'tablet' | 
+  'tablet-alt' | 
+  'tablet-android' | 
+  'tablet-android-alt' | 
+  'tablet-rugged' | 
+  'tablets' | 
+  'tachometer' | 
+  'tachometer-alt' | 
+  'tachometer-alt-average' | 
+  'tachometer-alt-fast' | 
+  'tachometer-alt-fastest' | 
+  'tachometer-alt-slow' | 
+  'tachometer-alt-slowest' | 
+  'tachometer-average' | 
+  'tachometer-fast' | 
+  'tachometer-fastest' | 
+  'tachometer-slow' | 
+  'tachometer-slowest' | 
+  'taco' | 
+  'tag' | 
+  'tags' | 
+  'tally' | 
+  'tanakh' | 
+  'tape' | 
+  'tasks' | 
+  'tasks-alt' | 
+  'taxi' | 
+  'teeth' | 
+  'teeth-open' | 
+  'telescope' | 
+  'temperature-down' | 
+  'temperature-frigid' | 
+  'temperature-high' | 
+  'temperature-hot' | 
+  'temperature-low' | 
+  'temperature-up' | 
+  'tenge' | 
+  'tennis-ball' | 
+  'terminal' | 
+  'text' | 
+  'text-height' | 
+  'text-size' | 
+  'text-width' | 
+  'th' | 
+  'th-large' | 
+  'th-list' | 
+  'theater-masks' | 
+  'thermometer' | 
+  'thermometer-empty' | 
+  'thermometer-full' | 
+  'thermometer-half' | 
+  'thermometer-quarter' | 
+  'thermometer-three-quarters' | 
+  'theta' | 
+  'thumbs-down' | 
+  'thumbs-up' | 
+  'thumbtack' | 
+  'thunderstorm' | 
+  'thunderstorm-moon' | 
+  'thunderstorm-sun' | 
+  'ticket' | 
+  'ticket-alt' | 
+  'tilde' | 
+  'times' | 
+  'times-circle' | 
+  'times-hexagon' | 
+  'times-octagon' | 
+  'times-square' | 
+  'tint' | 
+  'tint-slash' | 
+  'tire' | 
+  'tire-flat' | 
+  'tire-pressure-warning' | 
+  'tire-rugged' | 
+  'tired' | 
+  'toggle-off' | 
+  'toggle-on' | 
+  'toilet' | 
+  'toilet-paper' | 
+  'toilet-paper-alt' | 
+  'toilet-paper-slash' | 
+  'tombstone' | 
+  'tombstone-alt' | 
+  'toolbox' | 
+  'tools' | 
+  'tooth' | 
+  'toothbrush' | 
+  'torah' | 
+  'torii-gate' | 
+  'tornado' | 
+  'tractor' | 
+  'trademark' | 
+  'traffic-cone' | 
+  'traffic-light' | 
+  'traffic-light-go' | 
+  'traffic-light-slow' | 
+  'traffic-light-stop' | 
+  'trailer' | 
+  'train' | 
+  'tram' | 
+  'transgender' | 
+  'transgender-alt' | 
+  'transporter' | 
+  'transporter-1' | 
+  'transporter-2' | 
+  'transporter-3' | 
+  'transporter-empty' | 
+  'trash' | 
+  'trash-alt' | 
+  'trash-restore' | 
+  'trash-restore-alt' | 
+  'trash-undo' | 
+  'trash-undo-alt' | 
+  'treasure-chest' | 
+  'tree' | 
+  'tree-alt' | 
+  'tree-christmas' | 
+  'tree-decorated' | 
+  'tree-large' | 
+  'tree-palm' | 
+  'trees' | 
+  'triangle' | 
+  'triangle-music' | 
+  'trophy' | 
+  'trophy-alt' | 
+  'truck' | 
+  'truck-container' | 
+  'truck-couch' | 
+  'truck-loading' | 
+  'truck-monster' | 
+  'truck-moving' | 
+  'truck-pickup' | 
+  'truck-plow' | 
+  'truck-ramp' | 
+  'trumpet' | 
+  'tshirt' | 
+  'tty' | 
+  'turkey' | 
+  'turntable' | 
+  'turtle' | 
+  'tv' | 
+  'tv-alt' | 
+  'tv-music' | 
+  'tv-retro' | 
+  'typewriter' | 
+  'ufo' | 
+  'ufo-beam' | 
+  'umbrella' | 
+  'umbrella-beach' | 
+  'underline' | 
+  'undo' | 
+  'undo-alt' | 
+  'unicorn' | 
+  'union' | 
+  'universal-access' | 
+  'university' | 
+  'unlink' | 
+  'unlock' | 
+  'unlock-alt' | 
+  'upload' | 
+  'usb-drive' | 
+  'usd-circle' | 
+  'usd-square' | 
+  'user' | 
+  'user-alien' | 
+  'user-alt' | 
+  'user-alt-slash' | 
+  'user-astronaut' | 
+  'user-chart' | 
+  'user-check' | 
+  'user-circle' | 
+  'user-clock' | 
+  'user-cog' | 
+  'user-cowboy' | 
+  'user-crown' | 
+  'user-edit' | 
+  'user-friends' | 
+  'user-graduate' | 
+  'user-hard-hat' | 
+  'user-headset' | 
+  'user-injured' | 
+  'user-lock' | 
+  'user-md' | 
+  'user-md-chat' | 
+  'user-minus' | 
+  'user-music' | 
+  'user-ninja' | 
+  'user-nurse' | 
+  'user-plus' | 
+  'user-robot' | 
+  'user-secret' | 
+  'user-shield' | 
+  'user-slash' | 
+  'user-tag' | 
+  'user-tie' | 
+  'user-times' | 
+  'user-unlock' | 
+  'user-visor' | 
+  'users' | 
+  'users-class' | 
+  'users-cog' | 
+  'users-crown' | 
+  'users-medical' | 
+  'users-slash' | 
+  'utensil-fork' | 
+  'utensil-knife' | 
+  'utensil-spoon' | 
+  'utensils' | 
+  'utensils-alt' | 
+  'vacuum' | 
+  'vacuum-robot' | 
+  'value-absolute' | 
+  'vector-square' | 
+  'venus' | 
+  'venus-double' | 
+  'venus-mars' | 
+  'vest' | 
+  'vest-patches' | 
+  'vhs' | 
+  'vial' | 
+  'vials' | 
+  'video' | 
+  'video-plus' | 
+  'video-slash' | 
+  'vihara' | 
+  'violin' | 
+  'virus' | 
+  'virus-slash' | 
+  'viruses' | 
+  'voicemail' | 
+  'volcano' | 
+  'volleyball-ball' | 
+  'volume' | 
+  'volume-down' | 
+  'volume-mute' | 
+  'volume-off' | 
+  'volume-slash' | 
+  'volume-up' | 
+  'vote-nay' | 
+  'vote-yea' | 
+  'vr-cardboard' | 
+  'wagon-covered' | 
+  'walker' | 
+  'walkie-talkie' | 
+  'walking' | 
+  'wallet' | 
+  'wand' | 
+  'wand-magic' | 
+  'warehouse' | 
+  'warehouse-alt' | 
+  'washer' | 
+  'watch' | 
+  'watch-calculator' | 
+  'watch-fitness' | 
+  'water' | 
+  'water-lower' | 
+  'water-rise' | 
+  'wave-sine' | 
+  'wave-square' | 
+  'wave-triangle' | 
+  'waveform' | 
+  'waveform-path' | 
+  'webcam' | 
+  'webcam-slash' | 
+  'weight' | 
+  'weight-hanging' | 
+  'whale' | 
+  'wheat' | 
+  'wheelchair' | 
+  'whistle' | 
+  'wifi' | 
+  'wifi-1' | 
+  'wifi-2' | 
+  'wifi-slash' | 
+  'wind' | 
+  'wind-turbine' | 
+  'wind-warning' | 
+  'window' | 
+  'window-alt' | 
+  'window-close' | 
+  'window-frame' | 
+  'window-frame-open' | 
+  'window-maximize' | 
+  'window-minimize' | 
+  'window-restore' | 
+  'windsock' | 
+  'wine-bottle' | 
+  'wine-glass' | 
+  'wine-glass-alt' | 
+  'won-sign' | 
+  'wreath' | 
+  'wrench' | 
+  'x-ray' | 
+  'yen-sign' | 
+  'yin-yang' | 
+  'abacus' | 
+  'acorn' | 
+  'ad' | 
+  'address-book' | 
+  'address-card' | 
+  'adjust' | 
+  'air-conditioner' | 
+  'air-freshener' | 
+  'alarm-clock' | 
+  'alarm-exclamation' | 
+  'alarm-plus' | 
+  'alarm-snooze' | 
+  'album' | 
+  'album-collection' | 
+  'alicorn' | 
+  'alien' | 
+  'alien-monster' | 
+  'align-center' | 
+  'align-justify' | 
+  'align-left' | 
+  'align-right' | 
+  'align-slash' | 
+  'allergies' | 
+  'ambulance' | 
+  'american-sign-language-interpreting' | 
+  'amp-guitar' | 
+  'analytics' | 
+  'anchor' | 
+  'angel' | 
+  'angle-double-down' | 
+  'angle-double-left' | 
+  'angle-double-right' | 
+  'angle-double-up' | 
+  'angle-down' | 
+  'angle-left' | 
+  'angle-right' | 
+  'angle-up' | 
+  'angry' | 
+  'ankh' | 
+  'apple-alt' | 
+  'apple-crate' | 
+  'archive' | 
+  'archway' | 
+  'arrow-alt-circle-down' | 
+  'arrow-alt-circle-left' | 
+  'arrow-alt-circle-right' | 
+  'arrow-alt-circle-up' | 
+  'arrow-alt-down' | 
+  'arrow-alt-from-bottom' | 
+  'arrow-alt-from-left' | 
+  'arrow-alt-from-right' | 
+  'arrow-alt-from-top' | 
+  'arrow-alt-left' | 
+  'arrow-alt-right' | 
+  'arrow-alt-square-down' | 
+  'arrow-alt-square-left' | 
+  'arrow-alt-square-right' | 
+  'arrow-alt-square-up' | 
+  'arrow-alt-to-bottom' | 
+  'arrow-alt-to-left' | 
+  'arrow-alt-to-right' | 
+  'arrow-alt-to-top' | 
+  'arrow-alt-up' | 
+  'arrow-circle-down' | 
+  'arrow-circle-left' | 
+  'arrow-circle-right' | 
+  'arrow-circle-up' | 
+  'arrow-down' | 
+  'arrow-from-bottom' | 
+  'arrow-from-left' | 
+  'arrow-from-right' | 
+  'arrow-from-top' | 
+  'arrow-left' | 
+  'arrow-right' | 
+  'arrow-square-down' | 
+  'arrow-square-left' | 
+  'arrow-square-right' | 
+  'arrow-square-up' | 
+  'arrow-to-bottom' | 
+  'arrow-to-left' | 
+  'arrow-to-right' | 
+  'arrow-to-top' | 
+  'arrow-up' | 
+  'arrows' | 
+  'arrows-alt' | 
+  'arrows-alt-h' | 
+  'arrows-alt-v' | 
+  'arrows-h' | 
+  'arrows-v' | 
+  'assistive-listening-systems' | 
+  'asterisk' | 
+  'at' | 
+  'atlas' | 
+  'atom' | 
+  'atom-alt' | 
+  'audio-description' | 
+  'award' | 
+  'axe' | 
+  'axe-battle' | 
+  'baby' | 
+  'baby-carriage' | 
+  'backpack' | 
+  'backspace' | 
+  'backward' | 
+  'bacon' | 
+  'bacteria' | 
+  'bacterium' | 
+  'badge' | 
+  'badge-check' | 
+  'badge-dollar' | 
+  'badge-percent' | 
+  'badge-sheriff' | 
+  'badger-honey' | 
+  'bags-shopping' | 
+  'bahai' | 
+  'balance-scale' | 
+  'balance-scale-left' | 
+  'balance-scale-right' | 
+  'ball-pile' | 
+  'ballot' | 
+  'ballot-check' | 
+  'ban' | 
+  'band-aid' | 
+  'banjo' | 
+  'barcode' | 
+  'barcode-alt' | 
+  'barcode-read' | 
+  'barcode-scan' | 
+  'bars' | 
+  'baseball' | 
+  'baseball-ball' | 
+  'basketball-ball' | 
+  'basketball-hoop' | 
+  'bat' | 
+  'bath' | 
+  'battery-bolt' | 
+  'battery-empty' | 
+  'battery-full' | 
+  'battery-half' | 
+  'battery-quarter' | 
+  'battery-slash' | 
+  'battery-three-quarters' | 
+  'bed' | 
+  'bed-alt' | 
+  'bed-bunk' | 
+  'bed-empty' | 
+  'beer' | 
+  'bell' | 
+  'bell-exclamation' | 
+  'bell-on' | 
+  'bell-plus' | 
+  'bell-school' | 
+  'bell-school-slash' | 
+  'bell-slash' | 
+  'bells' | 
+  'betamax' | 
+  'bezier-curve' | 
+  'bible' | 
+  'bicycle' | 
+  'biking' | 
+  'biking-mountain' | 
+  'binoculars' | 
+  'biohazard' | 
+  'birthday-cake' | 
+  'blanket' | 
+  'blender' | 
+  'blender-phone' | 
+  'blind' | 
+  'blinds' | 
+  'blinds-open' | 
+  'blinds-raised' | 
+  'blog' | 
+  'bold' | 
+  'bolt' | 
+  'bomb' | 
+  'bone' | 
+  'bone-break' | 
+  'bong' | 
+  'book' | 
+  'book-alt' | 
+  'book-dead' | 
+  'book-heart' | 
+  'book-medical' | 
+  'book-open' | 
+  'book-reader' | 
+  'book-spells' | 
+  'book-user' | 
+  'bookmark' | 
+  'books' | 
+  'books-medical' | 
+  'boombox' | 
+  'boot' | 
+  'booth-curtain' | 
+  'border-all' | 
+  'border-bottom' | 
+  'border-center-h' | 
+  'border-center-v' | 
+  'border-inner' | 
+  'border-left' | 
+  'border-none' | 
+  'border-outer' | 
+  'border-right' | 
+  'border-style' | 
+  'border-style-alt' | 
+  'border-top' | 
+  'bow-arrow' | 
+  'bowling-ball' | 
+  'bowling-pins' | 
+  'box' | 
+  'box-alt' | 
+  'box-ballot' | 
+  'box-check' | 
+  'box-fragile' | 
+  'box-full' | 
+  'box-heart' | 
+  'box-open' | 
+  'box-tissue' | 
+  'box-up' | 
+  'box-usd' | 
+  'boxes' | 
+  'boxes-alt' | 
+  'boxing-glove' | 
+  'brackets' | 
+  'brackets-curly' | 
+  'braille' | 
+  'brain' | 
+  'bread-loaf' | 
+  'bread-slice' | 
+  'briefcase' | 
+  'briefcase-medical' | 
+  'bring-forward' | 
+  'bring-front' | 
+  'broadcast-tower' | 
+  'broom' | 
+  'browser' | 
+  'brush' | 
+  'bug' | 
+  'building' | 
+  'bullhorn' | 
+  'bullseye' | 
+  'bullseye-arrow' | 
+  'bullseye-pointer' | 
+  'burger-soda' | 
+  'burn' | 
+  'burrito' | 
+  'bus' | 
+  'bus-alt' | 
+  'bus-school' | 
+  'business-time' | 
+  'cabinet-filing' | 
+  'cactus' | 
+  'calculator' | 
+  'calculator-alt' | 
+  'calendar' | 
+  'calendar-alt' | 
+  'calendar-check' | 
+  'calendar-day' | 
+  'calendar-edit' | 
+  'calendar-exclamation' | 
+  'calendar-minus' | 
+  'calendar-plus' | 
+  'calendar-star' | 
+  'calendar-times' | 
+  'calendar-week' | 
+  'camcorder' | 
+  'camera' | 
+  'camera-alt' | 
+  'camera-home' | 
+  'camera-movie' | 
+  'camera-polaroid' | 
+  'camera-retro' | 
+  'campfire' | 
+  'campground' | 
+  'candle-holder' | 
+  'candy-cane' | 
+  'candy-corn' | 
+  'cannabis' | 
+  'capsules' | 
+  'car' | 
+  'car-alt' | 
+  'car-battery' | 
+  'car-building' | 
+  'car-bump' | 
+  'car-bus' | 
+  'car-crash' | 
+  'car-garage' | 
+  'car-mechanic' | 
+  'car-side' | 
+  'car-tilt' | 
+  'car-wash' | 
+  'caravan' | 
+  'caravan-alt' | 
+  'caret-circle-down' | 
+  'caret-circle-left' | 
+  'caret-circle-right' | 
+  'caret-circle-up' | 
+  'caret-down' | 
+  'caret-left' | 
+  'caret-right' | 
+  'caret-square-down' | 
+  'caret-square-left' | 
+  'caret-square-right' | 
+  'caret-square-up' | 
+  'caret-up' | 
+  'carrot' | 
+  'cars' | 
+  'cart-arrow-down' | 
+  'cart-plus' | 
+  'cash-register' | 
+  'cassette-tape' | 
+  'cat' | 
+  'cat-space' | 
+  'cauldron' | 
+  'cctv' | 
+  'certificate' | 
+  'chair' | 
+  'chair-office' | 
+  'chalkboard' | 
+  'chalkboard-teacher' | 
+  'charging-station' | 
+  'chart-area' | 
+  'chart-bar' | 
+  'chart-line' | 
+  'chart-line-down' | 
+  'chart-network' | 
+  'chart-pie' | 
+  'chart-pie-alt' | 
+  'chart-scatter' | 
+  'check' | 
+  'check-circle' | 
+  'check-double' | 
+  'check-square' | 
+  'cheese' | 
+  'cheese-swiss' | 
+  'cheeseburger' | 
+  'chess' | 
+  'chess-bishop' | 
+  'chess-bishop-alt' | 
+  'chess-board' | 
+  'chess-clock' | 
+  'chess-clock-alt' | 
+  'chess-king' | 
+  'chess-king-alt' | 
+  'chess-knight' | 
+  'chess-knight-alt' | 
+  'chess-pawn' | 
+  'chess-pawn-alt' | 
+  'chess-queen' | 
+  'chess-queen-alt' | 
+  'chess-rook' | 
+  'chess-rook-alt' | 
+  'chevron-circle-down' | 
+  'chevron-circle-left' | 
+  'chevron-circle-right' | 
+  'chevron-circle-up' | 
+  'chevron-double-down' | 
+  'chevron-double-left' | 
+  'chevron-double-right' | 
+  'chevron-double-up' | 
+  'chevron-down' | 
+  'chevron-left' | 
+  'chevron-right' | 
+  'chevron-square-down' | 
+  'chevron-square-left' | 
+  'chevron-square-right' | 
+  'chevron-square-up' | 
+  'chevron-up' | 
+  'child' | 
+  'chimney' | 
+  'church' | 
+  'circle' | 
+  'circle-notch' | 
+  'city' | 
+  'clarinet' | 
+  'claw-marks' | 
+  'clinic-medical' | 
+  'clipboard' | 
+  'clipboard-check' | 
+  'clipboard-list' | 
+  'clipboard-list-check' | 
+  'clipboard-prescription' | 
+  'clipboard-user' | 
+  'clock' | 
+  'clone' | 
+  'closed-captioning' | 
+  'cloud' | 
+  'cloud-download' | 
+  'cloud-download-alt' | 
+  'cloud-drizzle' | 
+  'cloud-hail' | 
+  'cloud-hail-mixed' | 
+  'cloud-meatball' | 
+  'cloud-moon' | 
+  'cloud-moon-rain' | 
+  'cloud-music' | 
+  'cloud-rain' | 
+  'cloud-rainbow' | 
+  'cloud-showers' | 
+  'cloud-showers-heavy' | 
+  'cloud-sleet' | 
+  'cloud-snow' | 
+  'cloud-sun' | 
+  'cloud-sun-rain' | 
+  'cloud-upload' | 
+  'cloud-upload-alt' | 
+  'clouds' | 
+  'clouds-moon' | 
+  'clouds-sun' | 
+  'club' | 
+  'cocktail' | 
+  'code' | 
+  'code-branch' | 
+  'code-commit' | 
+  'code-merge' | 
+  'coffee' | 
+  'coffee-pot' | 
+  'coffee-togo' | 
+  'coffin' | 
+  'coffin-cross' | 
+  'cog' | 
+  'cogs' | 
+  'coin' | 
+  'coins' | 
+  'columns' | 
+  'comet' | 
+  'comment' | 
+  'comment-alt' | 
+  'comment-alt-check' | 
+  'comment-alt-dollar' | 
+  'comment-alt-dots' | 
+  'comment-alt-edit' | 
+  'comment-alt-exclamation' | 
+  'comment-alt-lines' | 
+  'comment-alt-medical' | 
+  'comment-alt-minus' | 
+  'comment-alt-music' | 
+  'comment-alt-plus' | 
+  'comment-alt-slash' | 
+  'comment-alt-smile' | 
+  'comment-alt-times' | 
+  'comment-check' | 
+  'comment-dollar' | 
+  'comment-dots' | 
+  'comment-edit' | 
+  'comment-exclamation' | 
+  'comment-lines' | 
+  'comment-medical' | 
+  'comment-minus' | 
+  'comment-music' | 
+  'comment-plus' | 
+  'comment-slash' | 
+  'comment-smile' | 
+  'comment-times' | 
+  'comments' | 
+  'comments-alt' | 
+  'comments-alt-dollar' | 
+  'comments-dollar' | 
+  'compact-disc' | 
+  'compass' | 
+  'compass-slash' | 
+  'compress' | 
+  'compress-alt' | 
+  'compress-arrows-alt' | 
+  'compress-wide' | 
+  'computer-classic' | 
+  'computer-speaker' | 
+  'concierge-bell' | 
+  'construction' | 
+  'container-storage' | 
+  'conveyor-belt' | 
+  'conveyor-belt-alt' | 
+  'cookie' | 
+  'cookie-bite' | 
+  'copy' | 
+  'copyright' | 
+  'corn' | 
+  'couch' | 
+  'cow' | 
+  'cowbell' | 
+  'cowbell-more' | 
+  'credit-card' | 
+  'credit-card-blank' | 
+  'credit-card-front' | 
+  'cricket' | 
+  'croissant' | 
+  'crop' | 
+  'crop-alt' | 
+  'cross' | 
+  'crosshairs' | 
+  'crow' | 
+  'crown' | 
+  'crutch' | 
+  'crutches' | 
+  'cube' | 
+  'cubes' | 
+  'curling' | 
+  'cut' | 
+  'dagger' | 
+  'database' | 
+  'deaf' | 
+  'debug' | 
+  'deer' | 
+  'deer-rudolph' | 
+  'democrat' | 
+  'desktop' | 
+  'desktop-alt' | 
+  'dewpoint' | 
+  'dharmachakra' | 
+  'diagnoses' | 
+  'diamond' | 
+  'dice' | 
+  'dice-d10' | 
+  'dice-d12' | 
+  'dice-d20' | 
+  'dice-d4' | 
+  'dice-d6' | 
+  'dice-d8' | 
+  'dice-five' | 
+  'dice-four' | 
+  'dice-one' | 
+  'dice-six' | 
+  'dice-three' | 
+  'dice-two' | 
+  'digging' | 
+  'digital-tachograph' | 
+  'diploma' | 
+  'directions' | 
+  'disc-drive' | 
+  'disease' | 
+  'divide' | 
+  'dizzy' | 
+  'dna' | 
+  'do-not-enter' | 
+  'dog' | 
+  'dog-leashed' | 
+  'dollar-sign' | 
+  'dolly' | 
+  'dolly-empty' | 
+  'dolly-flatbed' | 
+  'dolly-flatbed-alt' | 
+  'dolly-flatbed-empty' | 
+  'donate' | 
+  'door-closed' | 
+  'door-open' | 
+  'dot-circle' | 
+  'dove' | 
+  'download' | 
+  'drafting-compass' | 
+  'dragon' | 
+  'draw-circle' | 
+  'draw-polygon' | 
+  'draw-square' | 
+  'dreidel' | 
+  'drone' | 
+  'drone-alt' | 
+  'drum' | 
+  'drum-steelpan' | 
+  'drumstick' | 
+  'drumstick-bite' | 
+  'dryer' | 
+  'dryer-alt' | 
+  'duck' | 
+  'dumbbell' | 
+  'dumpster' | 
+  'dumpster-fire' | 
+  'dungeon' | 
+  'ear' | 
+  'ear-muffs' | 
+  'eclipse' | 
+  'eclipse-alt' | 
+  'edit' | 
+  'egg' | 
+  'egg-fried' | 
+  'eject' | 
+  'elephant' | 
+  'ellipsis-h' | 
+  'ellipsis-h-alt' | 
+  'ellipsis-v' | 
+  'ellipsis-v-alt' | 
+  'empty-set' | 
+  'engine-warning' | 
+  'envelope' | 
+  'envelope-open' | 
+  'envelope-open-dollar' | 
+  'envelope-open-text' | 
+  'envelope-square' | 
+  'equals' | 
+  'eraser' | 
+  'ethernet' | 
+  'euro-sign' | 
+  'exchange' | 
+  'exchange-alt' | 
+  'exclamation' | 
+  'exclamation-circle' | 
+  'exclamation-square' | 
+  'exclamation-triangle' | 
+  'expand' | 
+  'expand-alt' | 
+  'expand-arrows' | 
+  'expand-arrows-alt' | 
+  'expand-wide' | 
+  'external-link' | 
+  'external-link-alt' | 
+  'external-link-square' | 
+  'external-link-square-alt' | 
+  'eye' | 
+  'eye-dropper' | 
+  'eye-evil' | 
+  'eye-slash' | 
+  'fan' | 
+  'fan-table' | 
+  'farm' | 
+  'fast-backward' | 
+  'fast-forward' | 
+  'faucet' | 
+  'faucet-drip' | 
+  'fax' | 
+  'feather' | 
+  'feather-alt' | 
+  'female' | 
+  'field-hockey' | 
+  'fighter-jet' | 
+  'file' | 
+  'file-alt' | 
+  'file-archive' | 
+  'file-audio' | 
+  'file-certificate' | 
+  'file-chart-line' | 
+  'file-chart-pie' | 
+  'file-check' | 
+  'file-code' | 
+  'file-contract' | 
+  'file-csv' | 
+  'file-download' | 
+  'file-edit' | 
+  'file-excel' | 
+  'file-exclamation' | 
+  'file-export' | 
+  'file-image' | 
+  'file-import' | 
+  'file-invoice' | 
+  'file-invoice-dollar' | 
+  'file-medical' | 
+  'file-medical-alt' | 
+  'file-minus' | 
+  'file-music' | 
+  'file-pdf' | 
+  'file-plus' | 
+  'file-powerpoint' | 
+  'file-prescription' | 
+  'file-search' | 
+  'file-signature' | 
+  'file-spreadsheet' | 
+  'file-times' | 
+  'file-upload' | 
+  'file-user' | 
+  'file-video' | 
+  'file-word' | 
+  'files-medical' | 
+  'fill' | 
+  'fill-drip' | 
+  'film' | 
+  'film-alt' | 
+  'film-canister' | 
+  'filter' | 
+  'fingerprint' | 
+  'fire' | 
+  'fire-alt' | 
+  'fire-extinguisher' | 
+  'fire-smoke' | 
+  'fireplace' | 
+  'first-aid' | 
+  'fish' | 
+  'fish-cooked' | 
+  'fist-raised' | 
+  'flag' | 
+  'flag-alt' | 
+  'flag-checkered' | 
+  'flag-usa' | 
+  'flame' | 
+  'flashlight' | 
+  'flask' | 
+  'flask-poison' | 
+  'flask-potion' | 
+  'flower' | 
+  'flower-daffodil' | 
+  'flower-tulip' | 
+  'flushed' | 
+  'flute' | 
+  'flux-capacitor' | 
+  'fog' | 
+  'folder' | 
+  'folder-download' | 
+  'folder-minus' | 
+  'folder-open' | 
+  'folder-plus' | 
+  'folder-times' | 
+  'folder-tree' | 
+  'folder-upload' | 
+  'folders' | 
+  'font' | 
+  'font-awesome-logo-full' | 
+  'font-case' | 
+  'football-ball' | 
+  'football-helmet' | 
+  'forklift' | 
+  'forward' | 
+  'fragile' | 
+  'french-fries' | 
+  'frog' | 
+  'frosty-head' | 
+  'frown' | 
+  'frown-open' | 
+  'function' | 
+  'funnel-dollar' | 
+  'futbol' | 
+  'galaxy' | 
+  'game-board' | 
+  'game-board-alt' | 
+  'game-console-handheld' | 
+  'gamepad' | 
+  'gamepad-alt' | 
+  'garage' | 
+  'garage-car' | 
+  'garage-open' | 
+  'gas-pump' | 
+  'gas-pump-slash' | 
+  'gavel' | 
+  'gem' | 
+  'genderless' | 
+  'ghost' | 
+  'gift' | 
+  'gift-card' | 
+  'gifts' | 
+  'gingerbread-man' | 
+  'glass' | 
+  'glass-champagne' | 
+  'glass-cheers' | 
+  'glass-citrus' | 
+  'glass-martini' | 
+  'glass-martini-alt' | 
+  'glass-whiskey' | 
+  'glass-whiskey-rocks' | 
+  'glasses' | 
+  'glasses-alt' | 
+  'globe' | 
+  'globe-africa' | 
+  'globe-americas' | 
+  'globe-asia' | 
+  'globe-europe' | 
+  'globe-snow' | 
+  'globe-stand' | 
+  'golf-ball' | 
+  'golf-club' | 
+  'gopuram' | 
+  'graduation-cap' | 
+  'gramophone' | 
+  'greater-than' | 
+  'greater-than-equal' | 
+  'grimace' | 
+  'grin' | 
+  'grin-alt' | 
+  'grin-beam' | 
+  'grin-beam-sweat' | 
+  'grin-hearts' | 
+  'grin-squint' | 
+  'grin-squint-tears' | 
+  'grin-stars' | 
+  'grin-tears' | 
+  'grin-tongue' | 
+  'grin-tongue-squint' | 
+  'grin-tongue-wink' | 
+  'grin-wink' | 
+  'grip-horizontal' | 
+  'grip-lines' | 
+  'grip-lines-vertical' | 
+  'grip-vertical' | 
+  'guitar' | 
+  'guitar-electric' | 
+  'guitars' | 
+  'h-square' | 
+  'h1' | 
+  'h2' | 
+  'h3' | 
+  'h4' | 
+  'hamburger' | 
+  'hammer' | 
+  'hammer-war' | 
+  'hamsa' | 
+  'hand-heart' | 
+  'hand-holding' | 
+  'hand-holding-box' | 
+  'hand-holding-heart' | 
+  'hand-holding-magic' | 
+  'hand-holding-medical' | 
+  'hand-holding-seedling' | 
+  'hand-holding-usd' | 
+  'hand-holding-water' | 
+  'hand-lizard' | 
+  'hand-middle-finger' | 
+  'hand-paper' | 
+  'hand-peace' | 
+  'hand-point-down' | 
+  'hand-point-left' | 
+  'hand-point-right' | 
+  'hand-point-up' | 
+  'hand-pointer' | 
+  'hand-receiving' | 
+  'hand-rock' | 
+  'hand-scissors' | 
+  'hand-sparkles' | 
+  'hand-spock' | 
+  'hands' | 
+  'hands-heart' | 
+  'hands-helping' | 
+  'hands-usd' | 
+  'hands-wash' | 
+  'handshake' | 
+  'handshake-alt' | 
+  'handshake-alt-slash' | 
+  'handshake-slash' | 
+  'hanukiah' | 
+  'hard-hat' | 
+  'hashtag' | 
+  'hat-chef' | 
+  'hat-cowboy' | 
+  'hat-cowboy-side' | 
+  'hat-santa' | 
+  'hat-winter' | 
+  'hat-witch' | 
+  'hat-wizard' | 
+  'hdd' | 
+  'head-side' | 
+  'head-side-brain' | 
+  'head-side-cough' | 
+  'head-side-cough-slash' | 
+  'head-side-headphones' | 
+  'head-side-mask' | 
+  'head-side-medical' | 
+  'head-side-virus' | 
+  'head-vr' | 
+  'heading' | 
+  'headphones' | 
+  'headphones-alt' | 
+  'headset' | 
+  'heart' | 
+  'heart-broken' | 
+  'heart-circle' | 
+  'heart-rate' | 
+  'heart-square' | 
+  'heartbeat' | 
+  'heat' | 
+  'helicopter' | 
+  'helmet-battle' | 
+  'hexagon' | 
+  'highlighter' | 
+  'hiking' | 
+  'hippo' | 
+  'history' | 
+  'hockey-mask' | 
+  'hockey-puck' | 
+  'hockey-sticks' | 
+  'holly-berry' | 
+  'home' | 
+  'home-alt' | 
+  'home-heart' | 
+  'home-lg' | 
+  'home-lg-alt' | 
+  'hood-cloak' | 
+  'horizontal-rule' | 
+  'horse' | 
+  'horse-head' | 
+  'horse-saddle' | 
+  'hospital' | 
+  'hospital-alt' | 
+  'hospital-symbol' | 
+  'hospital-user' | 
+  'hospitals' | 
+  'hot-tub' | 
+  'hotdog' | 
+  'hotel' | 
+  'hourglass' | 
+  'hourglass-end' | 
+  'hourglass-half' | 
+  'hourglass-start' | 
+  'house' | 
+  'house-damage' | 
+  'house-day' | 
+  'house-flood' | 
+  'house-leave' | 
+  'house-night' | 
+  'house-return' | 
+  'house-signal' | 
+  'house-user' | 
+  'hryvnia' | 
+  'humidity' | 
+  'hurricane' | 
+  'i-cursor' | 
+  'ice-cream' | 
+  'ice-skate' | 
+  'icicles' | 
+  'icons' | 
+  'icons-alt' | 
+  'id-badge' | 
+  'id-card' | 
+  'id-card-alt' | 
+  'igloo' | 
+  'image' | 
+  'image-polaroid' | 
+  'images' | 
+  'inbox' | 
+  'inbox-in' | 
+  'inbox-out' | 
+  'indent' | 
+  'industry' | 
+  'industry-alt' | 
+  'infinity' | 
+  'info' | 
+  'info-circle' | 
+  'info-square' | 
+  'inhaler' | 
+  'integral' | 
+  'intersection' | 
+  'inventory' | 
+  'island-tropical' | 
+  'italic' | 
+  'jack-o-lantern' | 
+  'jedi' | 
+  'joint' | 
+  'journal-whills' | 
+  'joystick' | 
+  'jug' | 
+  'kaaba' | 
+  'kazoo' | 
+  'kerning' | 
+  'key' | 
+  'key-skeleton' | 
+  'keyboard' | 
+  'keynote' | 
+  'khanda' | 
+  'kidneys' | 
+  'kiss' | 
+  'kiss-beam' | 
+  'kiss-wink-heart' | 
+  'kite' | 
+  'kiwi-bird' | 
+  'knife-kitchen' | 
+  'lambda' | 
+  'lamp' | 
+  'lamp-desk' | 
+  'lamp-floor' | 
+  'landmark' | 
+  'landmark-alt' | 
+  'language' | 
+  'laptop' | 
+  'laptop-code' | 
+  'laptop-house' | 
+  'laptop-medical' | 
+  'lasso' | 
+  'laugh' | 
+  'laugh-beam' | 
+  'laugh-squint' | 
+  'laugh-wink' | 
+  'layer-group' | 
+  'layer-minus' | 
+  'layer-plus' | 
+  'leaf' | 
+  'leaf-heart' | 
+  'leaf-maple' | 
+  'leaf-oak' | 
+  'lemon' | 
+  'less-than' | 
+  'less-than-equal' | 
+  'level-down' | 
+  'level-down-alt' | 
+  'level-up' | 
+  'level-up-alt' | 
+  'life-ring' | 
+  'light-ceiling' | 
+  'light-switch' | 
+  'light-switch-off' | 
+  'light-switch-on' | 
+  'lightbulb' | 
+  'lightbulb-dollar' | 
+  'lightbulb-exclamation' | 
+  'lightbulb-on' | 
+  'lightbulb-slash' | 
+  'lights-holiday' | 
+  'line-columns' | 
+  'line-height' | 
+  'link' | 
+  'lips' | 
+  'lira-sign' | 
+  'list' | 
+  'list-alt' | 
+  'list-music' | 
+  'list-ol' | 
+  'list-ul' | 
+  'location' | 
+  'location-arrow' | 
+  'location-circle' | 
+  'location-slash' | 
+  'lock' | 
+  'lock-alt' | 
+  'lock-open' | 
+  'lock-open-alt' | 
+  'long-arrow-alt-down' | 
+  'long-arrow-alt-left' | 
+  'long-arrow-alt-right' | 
+  'long-arrow-alt-up' | 
+  'long-arrow-down' | 
+  'long-arrow-left' | 
+  'long-arrow-right' | 
+  'long-arrow-up' | 
+  'loveseat' | 
+  'low-vision' | 
+  'luchador' | 
+  'luggage-cart' | 
+  'lungs' | 
+  'lungs-virus' | 
+  'mace' | 
+  'magic' | 
+  'magnet' | 
+  'mail-bulk' | 
+  'mailbox' | 
+  'male' | 
+  'mandolin' | 
+  'map' | 
+  'map-marked' | 
+  'map-marked-alt' | 
+  'map-marker' | 
+  'map-marker-alt' | 
+  'map-marker-alt-slash' | 
+  'map-marker-check' | 
+  'map-marker-edit' | 
+  'map-marker-exclamation' | 
+  'map-marker-minus' | 
+  'map-marker-plus' | 
+  'map-marker-question' | 
+  'map-marker-slash' | 
+  'map-marker-smile' | 
+  'map-marker-times' | 
+  'map-pin' | 
+  'map-signs' | 
+  'marker' | 
+  'mars' | 
+  'mars-double' | 
+  'mars-stroke' | 
+  'mars-stroke-h' | 
+  'mars-stroke-v' | 
+  'mask' | 
+  'meat' | 
+  'medal' | 
+  'medkit' | 
+  'megaphone' | 
+  'meh' | 
+  'meh-blank' | 
+  'meh-rolling-eyes' | 
+  'memory' | 
+  'menorah' | 
+  'mercury' | 
+  'meteor' | 
+  'microchip' | 
+  'microphone' | 
+  'microphone-alt' | 
+  'microphone-alt-slash' | 
+  'microphone-slash' | 
+  'microphone-stand' | 
+  'microscope' | 
+  'microwave' | 
+  'mind-share' | 
+  'minus' | 
+  'minus-circle' | 
+  'minus-hexagon' | 
+  'minus-octagon' | 
+  'minus-square' | 
+  'mistletoe' | 
+  'mitten' | 
+  'mobile' | 
+  'mobile-alt' | 
+  'mobile-android' | 
+  'mobile-android-alt' | 
+  'money-bill' | 
+  'money-bill-alt' | 
+  'money-bill-wave' | 
+  'money-bill-wave-alt' | 
+  'money-check' | 
+  'money-check-alt' | 
+  'money-check-edit' | 
+  'money-check-edit-alt' | 
+  'monitor-heart-rate' | 
+  'monkey' | 
+  'monument' | 
+  'moon' | 
+  'moon-cloud' | 
+  'moon-stars' | 
+  'mortar-pestle' | 
+  'mosque' | 
+  'motorcycle' | 
+  'mountain' | 
+  'mountains' | 
+  'mouse' | 
+  'mouse-alt' | 
+  'mouse-pointer' | 
+  'mp3-player' | 
+  'mug' | 
+  'mug-hot' | 
+  'mug-marshmallows' | 
+  'mug-tea' | 
+  'music' | 
+  'music-alt' | 
+  'music-alt-slash' | 
+  'music-slash' | 
+  'narwhal' | 
+  'network-wired' | 
+  'neuter' | 
+  'newspaper' | 
+  'not-equal' | 
+  'notes-medical' | 
+  'object-group' | 
+  'object-ungroup' | 
+  'octagon' | 
+  'oil-can' | 
+  'oil-temp' | 
+  'om' | 
+  'omega' | 
+  'ornament' | 
+  'otter' | 
+  'outdent' | 
+  'outlet' | 
+  'oven' | 
+  'overline' | 
+  'page-break' | 
+  'pager' | 
+  'paint-brush' | 
+  'paint-brush-alt' | 
+  'paint-roller' | 
+  'palette' | 
+  'pallet' | 
+  'pallet-alt' | 
+  'paper-plane' | 
+  'paperclip' | 
+  'parachute-box' | 
+  'paragraph' | 
+  'paragraph-rtl' | 
+  'parking' | 
+  'parking-circle' | 
+  'parking-circle-slash' | 
+  'parking-slash' | 
+  'passport' | 
+  'pastafarianism' | 
+  'paste' | 
+  'pause' | 
+  'pause-circle' | 
+  'paw' | 
+  'paw-alt' | 
+  'paw-claws' | 
+  'peace' | 
+  'pegasus' | 
+  'pen' | 
+  'pen-alt' | 
+  'pen-fancy' | 
+  'pen-nib' | 
+  'pen-square' | 
+  'pencil' | 
+  'pencil-alt' | 
+  'pencil-paintbrush' | 
+  'pencil-ruler' | 
+  'pennant' | 
+  'people-arrows' | 
+  'people-carry' | 
+  'pepper-hot' | 
+  'percent' | 
+  'percentage' | 
+  'person-booth' | 
+  'person-carry' | 
+  'person-dolly' | 
+  'person-dolly-empty' | 
+  'person-sign' | 
+  'phone' | 
+  'phone-alt' | 
+  'phone-laptop' | 
+  'phone-office' | 
+  'phone-plus' | 
+  'phone-rotary' | 
+  'phone-slash' | 
+  'phone-square' | 
+  'phone-square-alt' | 
+  'phone-volume' | 
+  'photo-video' | 
+  'pi' | 
+  'piano' | 
+  'piano-keyboard' | 
+  'pie' | 
+  'pig' | 
+  'piggy-bank' | 
+  'pills' | 
+  'pizza' | 
+  'pizza-slice' | 
+  'place-of-worship' | 
+  'plane' | 
+  'plane-alt' | 
+  'plane-arrival' | 
+  'plane-departure' | 
+  'plane-slash' | 
+  'planet-moon' | 
+  'planet-ringed' | 
+  'play' | 
+  'play-circle' | 
+  'plug' | 
+  'plus' | 
+  'plus-circle' | 
+  'plus-hexagon' | 
+  'plus-octagon' | 
+  'plus-square' | 
+  'podcast' | 
+  'podium' | 
+  'podium-star' | 
+  'police-box' | 
+  'poll' | 
+  'poll-h' | 
+  'poll-people' | 
+  'poo' | 
+  'poo-storm' | 
+  'poop' | 
+  'popcorn' | 
+  'portal-enter' | 
+  'portal-exit' | 
+  'portrait' | 
+  'pound-sign' | 
+  'power-off' | 
+  'pray' | 
+  'praying-hands' | 
+  'prescription' | 
+  'prescription-bottle' | 
+  'prescription-bottle-alt' | 
+  'presentation' | 
+  'print' | 
+  'print-search' | 
+  'print-slash' | 
+  'procedures' | 
+  'project-diagram' | 
+  'projector' | 
+  'pump-medical' | 
+  'pump-soap' | 
+  'pumpkin' | 
+  'puzzle-piece' | 
+  'qrcode' | 
+  'question' | 
+  'question-circle' | 
+  'question-square' | 
+  'quidditch' | 
+  'quote-left' | 
+  'quote-right' | 
+  'quran' | 
+  'rabbit' | 
+  'rabbit-fast' | 
+  'racquet' | 
+  'radar' | 
+  'radiation' | 
+  'radiation-alt' | 
+  'radio' | 
+  'radio-alt' | 
+  'rainbow' | 
+  'raindrops' | 
+  'ram' | 
+  'ramp-loading' | 
+  'random' | 
+  'raygun' | 
+  'receipt' | 
+  'record-vinyl' | 
+  'rectangle-landscape' | 
+  'rectangle-portrait' | 
+  'rectangle-wide' | 
+  'recycle' | 
+  'redo' | 
+  'redo-alt' | 
+  'refrigerator' | 
+  'registered' | 
+  'remove-format' | 
+  'repeat' | 
+  'repeat-1' | 
+  'repeat-1-alt' | 
+  'repeat-alt' | 
+  'reply' | 
+  'reply-all' | 
+  'republican' | 
+  'restroom' | 
+  'retweet' | 
+  'retweet-alt' | 
+  'ribbon' | 
+  'ring' | 
+  'rings-wedding' | 
+  'road' | 
+  'robot' | 
+  'rocket' | 
+  'rocket-launch' | 
+  'route' | 
+  'route-highway' | 
+  'route-interstate' | 
+  'router' | 
+  'rss' | 
+  'rss-square' | 
+  'ruble-sign' | 
+  'ruler' | 
+  'ruler-combined' | 
+  'ruler-horizontal' | 
+  'ruler-triangle' | 
+  'ruler-vertical' | 
+  'running' | 
+  'rupee-sign' | 
+  'rv' | 
+  'sack' | 
+  'sack-dollar' | 
+  'sad-cry' | 
+  'sad-tear' | 
+  'salad' | 
+  'sandwich' | 
+  'satellite' | 
+  'satellite-dish' | 
+  'sausage' | 
+  'save' | 
+  'sax-hot' | 
+  'saxophone' | 
+  'scalpel' | 
+  'scalpel-path' | 
+  'scanner' | 
+  'scanner-image' | 
+  'scanner-keyboard' | 
+  'scanner-touchscreen' | 
+  'scarecrow' | 
+  'scarf' | 
+  'school' | 
+  'screwdriver' | 
+  'scroll' | 
+  'scroll-old' | 
+  'scrubber' | 
+  'scythe' | 
+  'sd-card' | 
+  'search' | 
+  'search-dollar' | 
+  'search-location' | 
+  'search-minus' | 
+  'search-plus' | 
+  'seedling' | 
+  'send-back' | 
+  'send-backward' | 
+  'sensor' | 
+  'sensor-alert' | 
+  'sensor-fire' | 
+  'sensor-on' | 
+  'sensor-smoke' | 
+  'server' | 
+  'shapes' | 
+  'share' | 
+  'share-all' | 
+  'share-alt' | 
+  'share-alt-square' | 
+  'share-square' | 
+  'sheep' | 
+  'shekel-sign' | 
+  'shield' | 
+  'shield-alt' | 
+  'shield-check' | 
+  'shield-cross' | 
+  'shield-virus' | 
+  'ship' | 
+  'shipping-fast' | 
+  'shipping-timed' | 
+  'shish-kebab' | 
+  'shoe-prints' | 
+  'shopping-bag' | 
+  'shopping-basket' | 
+  'shopping-cart' | 
+  'shovel' | 
+  'shovel-snow' | 
+  'shower' | 
+  'shredder' | 
+  'shuttle-van' | 
+  'shuttlecock' | 
+  'sickle' | 
+  'sigma' | 
+  'sign' | 
+  'sign-in' | 
+  'sign-in-alt' | 
+  'sign-language' | 
+  'sign-out' | 
+  'sign-out-alt' | 
+  'signal' | 
+  'signal-1' | 
+  'signal-2' | 
+  'signal-3' | 
+  'signal-4' | 
+  'signal-alt' | 
+  'signal-alt-1' | 
+  'signal-alt-2' | 
+  'signal-alt-3' | 
+  'signal-alt-slash' | 
+  'signal-slash' | 
+  'signal-stream' | 
+  'signature' | 
+  'sim-card' | 
+  'sink' | 
+  'siren' | 
+  'siren-on' | 
+  'sitemap' | 
+  'skating' | 
+  'skeleton' | 
+  'ski-jump' | 
+  'ski-lift' | 
+  'skiing' | 
+  'skiing-nordic' | 
+  'skull' | 
+  'skull-cow' | 
+  'skull-crossbones' | 
+  'slash' | 
+  'sledding' | 
+  'sleigh' | 
+  'sliders-h' | 
+  'sliders-h-square' | 
+  'sliders-v' | 
+  'sliders-v-square' | 
+  'smile' | 
+  'smile-beam' | 
+  'smile-plus' | 
+  'smile-wink' | 
+  'smog' | 
+  'smoke' | 
+  'smoking' | 
+  'smoking-ban' | 
+  'sms' | 
+  'snake' | 
+  'snooze' | 
+  'snow-blowing' | 
+  'snowboarding' | 
+  'snowflake' | 
+  'snowflakes' | 
+  'snowman' | 
+  'snowmobile' | 
+  'snowplow' | 
+  'soap' | 
+  'socks' | 
+  'solar-panel' | 
+  'solar-system' | 
+  'sort' | 
+  'sort-alpha-down' | 
+  'sort-alpha-down-alt' | 
+  'sort-alpha-up' | 
+  'sort-alpha-up-alt' | 
+  'sort-alt' | 
+  'sort-amount-down' | 
+  'sort-amount-down-alt' | 
+  'sort-amount-up' | 
+  'sort-amount-up-alt' | 
+  'sort-circle' | 
+  'sort-circle-down' | 
+  'sort-circle-up' | 
+  'sort-down' | 
+  'sort-numeric-down' | 
+  'sort-numeric-down-alt' | 
+  'sort-numeric-up' | 
+  'sort-numeric-up-alt' | 
+  'sort-shapes-down' | 
+  'sort-shapes-down-alt' | 
+  'sort-shapes-up' | 
+  'sort-shapes-up-alt' | 
+  'sort-size-down' | 
+  'sort-size-down-alt' | 
+  'sort-size-up' | 
+  'sort-size-up-alt' | 
+  'sort-up' | 
+  'soup' | 
+  'spa' | 
+  'space-shuttle' | 
+  'space-station-moon' | 
+  'space-station-moon-alt' | 
+  'spade' | 
+  'sparkles' | 
+  'speaker' | 
+  'speakers' | 
+  'spell-check' | 
+  'spider' | 
+  'spider-black-widow' | 
+  'spider-web' | 
+  'spinner' | 
+  'spinner-third' | 
+  'splotch' | 
+  'spray-can' | 
+  'sprinkler' | 
+  'square' | 
+  'square-full' | 
+  'square-root' | 
+  'square-root-alt' | 
+  'squirrel' | 
+  'staff' | 
+  'stamp' | 
+  'star' | 
+  'star-and-crescent' | 
+  'star-christmas' | 
+  'star-exclamation' | 
+  'star-half' | 
+  'star-half-alt' | 
+  'star-of-david' | 
+  'star-of-life' | 
+  'star-shooting' | 
+  'starfighter' | 
+  'starfighter-alt' | 
+  'stars' | 
+  'starship' | 
+  'starship-freighter' | 
+  'steak' | 
+  'steering-wheel' | 
+  'step-backward' | 
+  'step-forward' | 
+  'stethoscope' | 
+  'sticky-note' | 
+  'stocking' | 
+  'stomach' | 
+  'stop' | 
+  'stop-circle' | 
+  'stopwatch' | 
+  'stopwatch-20' | 
+  'store' | 
+  'store-alt' | 
+  'store-alt-slash' | 
+  'store-slash' | 
+  'stream' | 
+  'street-view' | 
+  'stretcher' | 
+  'strikethrough' | 
+  'stroopwafel' | 
+  'subscript' | 
+  'subway' | 
+  'suitcase' | 
+  'suitcase-rolling' | 
+  'sun' | 
+  'sun-cloud' | 
+  'sun-dust' | 
+  'sun-haze' | 
+  'sunglasses' | 
+  'sunrise' | 
+  'sunset' | 
+  'superscript' | 
+  'surprise' | 
+  'swatchbook' | 
+  'swimmer' | 
+  'swimming-pool' | 
+  'sword' | 
+  'sword-laser' | 
+  'sword-laser-alt' | 
+  'swords' | 
+  'swords-laser' | 
+  'synagogue' | 
+  'sync' | 
+  'sync-alt' | 
+  'syringe' | 
+  'table' | 
+  'table-tennis' | 
+  'tablet' | 
+  'tablet-alt' | 
+  'tablet-android' | 
+  'tablet-android-alt' | 
+  'tablet-rugged' | 
+  'tablets' | 
+  'tachometer' | 
+  'tachometer-alt' | 
+  'tachometer-alt-average' | 
+  'tachometer-alt-fast' | 
+  'tachometer-alt-fastest' | 
+  'tachometer-alt-slow' | 
+  'tachometer-alt-slowest' | 
+  'tachometer-average' | 
+  'tachometer-fast' | 
+  'tachometer-fastest' | 
+  'tachometer-slow' | 
+  'tachometer-slowest' | 
+  'taco' | 
+  'tag' | 
+  'tags' | 
+  'tally' | 
+  'tanakh' | 
+  'tape' | 
+  'tasks' | 
+  'tasks-alt' | 
+  'taxi' | 
+  'teeth' | 
+  'teeth-open' | 
+  'telescope' | 
+  'temperature-down' | 
+  'temperature-frigid' | 
+  'temperature-high' | 
+  'temperature-hot' | 
+  'temperature-low' | 
+  'temperature-up' | 
+  'tenge' | 
+  'tennis-ball' | 
+  'terminal' | 
+  'text' | 
+  'text-height' | 
+  'text-size' | 
+  'text-width' | 
+  'th' | 
+  'th-large' | 
+  'th-list' | 
+  'theater-masks' | 
+  'thermometer' | 
+  'thermometer-empty' | 
+  'thermometer-full' | 
+  'thermometer-half' | 
+  'thermometer-quarter' | 
+  'thermometer-three-quarters' | 
+  'theta' | 
+  'thumbs-down' | 
+  'thumbs-up' | 
+  'thumbtack' | 
+  'thunderstorm' | 
+  'thunderstorm-moon' | 
+  'thunderstorm-sun' | 
+  'ticket' | 
+  'ticket-alt' | 
+  'tilde' | 
+  'times' | 
+  'times-circle' | 
+  'times-hexagon' | 
+  'times-octagon' | 
+  'times-square' | 
+  'tint' | 
+  'tint-slash' | 
+  'tire' | 
+  'tire-flat' | 
+  'tire-pressure-warning' | 
+  'tire-rugged' | 
+  'tired' | 
+  'toggle-off' | 
+  'toggle-on' | 
+  'toilet' | 
+  'toilet-paper' | 
+  'toilet-paper-alt' | 
+  'toilet-paper-slash' | 
+  'tombstone' | 
+  'tombstone-alt' | 
+  'toolbox' | 
+  'tools' | 
+  'tooth' | 
+  'toothbrush' | 
+  'torah' | 
+  'torii-gate' | 
+  'tornado' | 
+  'tractor' | 
+  'trademark' | 
+  'traffic-cone' | 
+  'traffic-light' | 
+  'traffic-light-go' | 
+  'traffic-light-slow' | 
+  'traffic-light-stop' | 
+  'trailer' | 
+  'train' | 
+  'tram' | 
+  'transgender' | 
+  'transgender-alt' | 
+  'transporter' | 
+  'transporter-1' | 
+  'transporter-2' | 
+  'transporter-3' | 
+  'transporter-empty' | 
+  'trash' | 
+  'trash-alt' | 
+  'trash-restore' | 
+  'trash-restore-alt' | 
+  'trash-undo' | 
+  'trash-undo-alt' | 
+  'treasure-chest' | 
+  'tree' | 
+  'tree-alt' | 
+  'tree-christmas' | 
+  'tree-decorated' | 
+  'tree-large' | 
+  'tree-palm' | 
+  'trees' | 
+  'triangle' | 
+  'triangle-music' | 
+  'trophy' | 
+  'trophy-alt' | 
+  'truck' | 
+  'truck-container' | 
+  'truck-couch' | 
+  'truck-loading' | 
+  'truck-monster' | 
+  'truck-moving' | 
+  'truck-pickup' | 
+  'truck-plow' | 
+  'truck-ramp' | 
+  'trumpet' | 
+  'tshirt' | 
+  'tty' | 
+  'turkey' | 
+  'turntable' | 
+  'turtle' | 
+  'tv' | 
+  'tv-alt' | 
+  'tv-music' | 
+  'tv-retro' | 
+  'typewriter' | 
+  'ufo' | 
+  'ufo-beam' | 
+  'umbrella' | 
+  'umbrella-beach' | 
+  'underline' | 
+  'undo' | 
+  'undo-alt' | 
+  'unicorn' | 
+  'union' | 
+  'universal-access' | 
+  'university' | 
+  'unlink' | 
+  'unlock' | 
+  'unlock-alt' | 
+  'upload' | 
+  'usb-drive' | 
+  'usd-circle' | 
+  'usd-square' | 
+  'user' | 
+  'user-alien' | 
+  'user-alt' | 
+  'user-alt-slash' | 
+  'user-astronaut' | 
+  'user-chart' | 
+  'user-check' | 
+  'user-circle' | 
+  'user-clock' | 
+  'user-cog' | 
+  'user-cowboy' | 
+  'user-crown' | 
+  'user-edit' | 
+  'user-friends' | 
+  'user-graduate' | 
+  'user-hard-hat' | 
+  'user-headset' | 
+  'user-injured' | 
+  'user-lock' | 
+  'user-md' | 
+  'user-md-chat' | 
+  'user-minus' | 
+  'user-music' | 
+  'user-ninja' | 
+  'user-nurse' | 
+  'user-plus' | 
+  'user-robot' | 
+  'user-secret' | 
+  'user-shield' | 
+  'user-slash' | 
+  'user-tag' | 
+  'user-tie' | 
+  'user-times' | 
+  'user-unlock' | 
+  'user-visor' | 
+  'users' | 
+  'users-class' | 
+  'users-cog' | 
+  'users-crown' | 
+  'users-medical' | 
+  'users-slash' | 
+  'utensil-fork' | 
+  'utensil-knife' | 
+  'utensil-spoon' | 
+  'utensils' | 
+  'utensils-alt' | 
+  'vacuum' | 
+  'vacuum-robot' | 
+  'value-absolute' | 
+  'vector-square' | 
+  'venus' | 
+  'venus-double' | 
+  'venus-mars' | 
+  'vest' | 
+  'vest-patches' | 
+  'vhs' | 
+  'vial' | 
+  'vials' | 
+  'video' | 
+  'video-plus' | 
+  'video-slash' | 
+  'vihara' | 
+  'violin' | 
+  'virus' | 
+  'virus-slash' | 
+  'viruses' | 
+  'voicemail' | 
+  'volcano' | 
+  'volleyball-ball' | 
+  'volume' | 
+  'volume-down' | 
+  'volume-mute' | 
+  'volume-off' | 
+  'volume-slash' | 
+  'volume-up' | 
+  'vote-nay' | 
+  'vote-yea' | 
+  'vr-cardboard' | 
+  'wagon-covered' | 
+  'walker' | 
+  'walkie-talkie' | 
+  'walking' | 
+  'wallet' | 
+  'wand' | 
+  'wand-magic' | 
+  'warehouse' | 
+  'warehouse-alt' | 
+  'washer' | 
+  'watch' | 
+  'watch-calculator' | 
+  'watch-fitness' | 
+  'water' | 
+  'water-lower' | 
+  'water-rise' | 
+  'wave-sine' | 
+  'wave-square' | 
+  'wave-triangle' | 
+  'waveform' | 
+  'waveform-path' | 
+  'webcam' | 
+  'webcam-slash' | 
+  'weight' | 
+  'weight-hanging' | 
+  'whale' | 
+  'wheat' | 
+  'wheelchair' | 
+  'whistle' | 
+  'wifi' | 
+  'wifi-1' | 
+  'wifi-2' | 
+  'wifi-slash' | 
+  'wind' | 
+  'wind-turbine' | 
+  'wind-warning' | 
+  'window' | 
+  'window-alt' | 
+  'window-close' | 
+  'window-frame' | 
+  'window-frame-open' | 
+  'window-maximize' | 
+  'window-minimize' | 
+  'window-restore' | 
+  'windsock' | 
+  'wine-bottle' | 
+  'wine-glass' | 
+  'wine-glass-alt' | 
+  'won-sign' | 
+  'wreath' | 
+  'wrench' | 
+  'x-ray' | 
+  'yen-sign' | 
+  'yin-yang' | 
+  'abacus' | 
+  'acorn' | 
+  'ad' | 
+  'address-book' | 
+  'address-card' | 
+  'adjust' | 
+  'air-conditioner' | 
+  'air-freshener' | 
+  'alarm-clock' | 
+  'alarm-exclamation' | 
+  'alarm-plus' | 
+  'alarm-snooze' | 
+  'album' | 
+  'album-collection' | 
+  'alicorn' | 
+  'alien' | 
+  'alien-monster' | 
+  'align-center' | 
+  'align-justify' | 
+  'align-left' | 
+  'align-right' | 
+  'align-slash' | 
+  'allergies' | 
+  'ambulance' | 
+  'american-sign-language-interpreting' | 
+  'amp-guitar' | 
+  'analytics' | 
+  'anchor' | 
+  'angel' | 
+  'angle-double-down' | 
+  'angle-double-left' | 
+  'angle-double-right' | 
+  'angle-double-up' | 
+  'angle-down' | 
+  'angle-left' | 
+  'angle-right' | 
+  'angle-up' | 
+  'angry' | 
+  'ankh' | 
+  'apple-alt' | 
+  'apple-crate' | 
+  'archive' | 
+  'archway' | 
+  'arrow-alt-circle-down' | 
+  'arrow-alt-circle-left' | 
+  'arrow-alt-circle-right' | 
+  'arrow-alt-circle-up' | 
+  'arrow-alt-down' | 
+  'arrow-alt-from-bottom' | 
+  'arrow-alt-from-left' | 
+  'arrow-alt-from-right' | 
+  'arrow-alt-from-top' | 
+  'arrow-alt-left' | 
+  'arrow-alt-right' | 
+  'arrow-alt-square-down' | 
+  'arrow-alt-square-left' | 
+  'arrow-alt-square-right' | 
+  'arrow-alt-square-up' | 
+  'arrow-alt-to-bottom' | 
+  'arrow-alt-to-left' | 
+  'arrow-alt-to-right' | 
+  'arrow-alt-to-top' | 
+  'arrow-alt-up' | 
+  'arrow-circle-down' | 
+  'arrow-circle-left' | 
+  'arrow-circle-right' | 
+  'arrow-circle-up' | 
+  'arrow-down' | 
+  'arrow-from-bottom' | 
+  'arrow-from-left' | 
+  'arrow-from-right' | 
+  'arrow-from-top' | 
+  'arrow-left' | 
+  'arrow-right' | 
+  'arrow-square-down' | 
+  'arrow-square-left' | 
+  'arrow-square-right' | 
+  'arrow-square-up' | 
+  'arrow-to-bottom' | 
+  'arrow-to-left' | 
+  'arrow-to-right' | 
+  'arrow-to-top' | 
+  'arrow-up' | 
+  'arrows' | 
+  'arrows-alt' | 
+  'arrows-alt-h' | 
+  'arrows-alt-v' | 
+  'arrows-h' | 
+  'arrows-v' | 
+  'assistive-listening-systems' | 
+  'asterisk' | 
+  'at' | 
+  'atlas' | 
+  'atom' | 
+  'atom-alt' | 
+  'audio-description' | 
+  'award' | 
+  'axe' | 
+  'axe-battle' | 
+  'baby' | 
+  'baby-carriage' | 
+  'backpack' | 
+  'backspace' | 
+  'backward' | 
+  'bacon' | 
+  'bacteria' | 
+  'bacterium' | 
+  'badge' | 
+  'badge-check' | 
+  'badge-dollar' | 
+  'badge-percent' | 
+  'badge-sheriff' | 
+  'badger-honey' | 
+  'bags-shopping' | 
+  'bahai' | 
+  'balance-scale' | 
+  'balance-scale-left' | 
+  'balance-scale-right' | 
+  'ball-pile' | 
+  'ballot' | 
+  'ballot-check' | 
+  'ban' | 
+  'band-aid' | 
+  'banjo' | 
+  'barcode' | 
+  'barcode-alt' | 
+  'barcode-read' | 
+  'barcode-scan' | 
+  'bars' | 
+  'baseball' | 
+  'baseball-ball' | 
+  'basketball-ball' | 
+  'basketball-hoop' | 
+  'bat' | 
+  'bath' | 
+  'battery-bolt' | 
+  'battery-empty' | 
+  'battery-full' | 
+  'battery-half' | 
+  'battery-quarter' | 
+  'battery-slash' | 
+  'battery-three-quarters' | 
+  'bed' | 
+  'bed-alt' | 
+  'bed-bunk' | 
+  'bed-empty' | 
+  'beer' | 
+  'bell' | 
+  'bell-exclamation' | 
+  'bell-on' | 
+  'bell-plus' | 
+  'bell-school' | 
+  'bell-school-slash' | 
+  'bell-slash' | 
+  'bells' | 
+  'betamax' | 
+  'bezier-curve' | 
+  'bible' | 
+  'bicycle' | 
+  'biking' | 
+  'biking-mountain' | 
+  'binoculars' | 
+  'biohazard' | 
+  'birthday-cake' | 
+  'blanket' | 
+  'blender' | 
+  'blender-phone' | 
+  'blind' | 
+  'blinds' | 
+  'blinds-open' | 
+  'blinds-raised' | 
+  'blog' | 
+  'bold' | 
+  'bolt' | 
+  'bomb' | 
+  'bone' | 
+  'bone-break' | 
+  'bong' | 
+  'book' | 
+  'book-alt' | 
+  'book-dead' | 
+  'book-heart' | 
+  'book-medical' | 
+  'book-open' | 
+  'book-reader' | 
+  'book-spells' | 
+  'book-user' | 
+  'bookmark' | 
+  'books' | 
+  'books-medical' | 
+  'boombox' | 
+  'boot' | 
+  'booth-curtain' | 
+  'border-all' | 
+  'border-bottom' | 
+  'border-center-h' | 
+  'border-center-v' | 
+  'border-inner' | 
+  'border-left' | 
+  'border-none' | 
+  'border-outer' | 
+  'border-right' | 
+  'border-style' | 
+  'border-style-alt' | 
+  'border-top' | 
+  'bow-arrow' | 
+  'bowling-ball' | 
+  'bowling-pins' | 
+  'box' | 
+  'box-alt' | 
+  'box-ballot' | 
+  'box-check' | 
+  'box-fragile' | 
+  'box-full' | 
+  'box-heart' | 
+  'box-open' | 
+  'box-tissue' | 
+  'box-up' | 
+  'box-usd' | 
+  'boxes' | 
+  'boxes-alt' | 
+  'boxing-glove' | 
+  'brackets' | 
+  'brackets-curly' | 
+  'braille' | 
+  'brain' | 
+  'bread-loaf' | 
+  'bread-slice' | 
+  'briefcase' | 
+  'briefcase-medical' | 
+  'bring-forward' | 
+  'bring-front' | 
+  'broadcast-tower' | 
+  'broom' | 
+  'browser' | 
+  'brush' | 
+  'bug' | 
+  'building' | 
+  'bullhorn' | 
+  'bullseye' | 
+  'bullseye-arrow' | 
+  'bullseye-pointer' | 
+  'burger-soda' | 
+  'burn' | 
+  'burrito' | 
+  'bus' | 
+  'bus-alt' | 
+  'bus-school' | 
+  'business-time' | 
+  'cabinet-filing' | 
+  'cactus' | 
+  'calculator' | 
+  'calculator-alt' | 
+  'calendar' | 
+  'calendar-alt' | 
+  'calendar-check' | 
+  'calendar-day' | 
+  'calendar-edit' | 
+  'calendar-exclamation' | 
+  'calendar-minus' | 
+  'calendar-plus' | 
+  'calendar-star' | 
+  'calendar-times' | 
+  'calendar-week' | 
+  'camcorder' | 
+  'camera' | 
+  'camera-alt' | 
+  'camera-home' | 
+  'camera-movie' | 
+  'camera-polaroid' | 
+  'camera-retro' | 
+  'campfire' | 
+  'campground' | 
+  'candle-holder' | 
+  'candy-cane' | 
+  'candy-corn' | 
+  'cannabis' | 
+  'capsules' | 
+  'car' | 
+  'car-alt' | 
+  'car-battery' | 
+  'car-building' | 
+  'car-bump' | 
+  'car-bus' | 
+  'car-crash' | 
+  'car-garage' | 
+  'car-mechanic' | 
+  'car-side' | 
+  'car-tilt' | 
+  'car-wash' | 
+  'caravan' | 
+  'caravan-alt' | 
+  'caret-circle-down' | 
+  'caret-circle-left' | 
+  'caret-circle-right' | 
+  'caret-circle-up' | 
+  'caret-down' | 
+  'caret-left' | 
+  'caret-right' | 
+  'caret-square-down' | 
+  'caret-square-left' | 
+  'caret-square-right' | 
+  'caret-square-up' | 
+  'caret-up' | 
+  'carrot' | 
+  'cars' | 
+  'cart-arrow-down' | 
+  'cart-plus' | 
+  'cash-register' | 
+  'cassette-tape' | 
+  'cat' | 
+  'cat-space' | 
+  'cauldron' | 
+  'cctv' | 
+  'certificate' | 
+  'chair' | 
+  'chair-office' | 
+  'chalkboard' | 
+  'chalkboard-teacher' | 
+  'charging-station' | 
+  'chart-area' | 
+  'chart-bar' | 
+  'chart-line' | 
+  'chart-line-down' | 
+  'chart-network' | 
+  'chart-pie' | 
+  'chart-pie-alt' | 
+  'chart-scatter' | 
+  'check' | 
+  'check-circle' | 
+  'check-double' | 
+  'check-square' | 
+  'cheese' | 
+  'cheese-swiss' | 
+  'cheeseburger' | 
+  'chess' | 
+  'chess-bishop' | 
+  'chess-bishop-alt' | 
+  'chess-board' | 
+  'chess-clock' | 
+  'chess-clock-alt' | 
+  'chess-king' | 
+  'chess-king-alt' | 
+  'chess-knight' | 
+  'chess-knight-alt' | 
+  'chess-pawn' | 
+  'chess-pawn-alt' | 
+  'chess-queen' | 
+  'chess-queen-alt' | 
+  'chess-rook' | 
+  'chess-rook-alt' | 
+  'chevron-circle-down' | 
+  'chevron-circle-left' | 
+  'chevron-circle-right' | 
+  'chevron-circle-up' | 
+  'chevron-double-down' | 
+  'chevron-double-left' | 
+  'chevron-double-right' | 
+  'chevron-double-up' | 
+  'chevron-down' | 
+  'chevron-left' | 
+  'chevron-right' | 
+  'chevron-square-down' | 
+  'chevron-square-left' | 
+  'chevron-square-right' | 
+  'chevron-square-up' | 
+  'chevron-up' | 
+  'child' | 
+  'chimney' | 
+  'church' | 
+  'circle' | 
+  'circle-notch' | 
+  'city' | 
+  'clarinet' | 
+  'claw-marks' | 
+  'clinic-medical' | 
+  'clipboard' | 
+  'clipboard-check' | 
+  'clipboard-list' | 
+  'clipboard-list-check' | 
+  'clipboard-prescription' | 
+  'clipboard-user' | 
+  'clock' | 
+  'clone' | 
+  'closed-captioning' | 
+  'cloud' | 
+  'cloud-download' | 
+  'cloud-download-alt' | 
+  'cloud-drizzle' | 
+  'cloud-hail' | 
+  'cloud-hail-mixed' | 
+  'cloud-meatball' | 
+  'cloud-moon' | 
+  'cloud-moon-rain' | 
+  'cloud-music' | 
+  'cloud-rain' | 
+  'cloud-rainbow' | 
+  'cloud-showers' | 
+  'cloud-showers-heavy' | 
+  'cloud-sleet' | 
+  'cloud-snow' | 
+  'cloud-sun' | 
+  'cloud-sun-rain' | 
+  'cloud-upload' | 
+  'cloud-upload-alt' | 
+  'clouds' | 
+  'clouds-moon' | 
+  'clouds-sun' | 
+  'club' | 
+  'cocktail' | 
+  'code' | 
+  'code-branch' | 
+  'code-commit' | 
+  'code-merge' | 
+  'coffee' | 
+  'coffee-pot' | 
+  'coffee-togo' | 
+  'coffin' | 
+  'coffin-cross' | 
+  'cog' | 
+  'cogs' | 
+  'coin' | 
+  'coins' | 
+  'columns' | 
+  'comet' | 
+  'comment' | 
+  'comment-alt' | 
+  'comment-alt-check' | 
+  'comment-alt-dollar' | 
+  'comment-alt-dots' | 
+  'comment-alt-edit' | 
+  'comment-alt-exclamation' | 
+  'comment-alt-lines' | 
+  'comment-alt-medical' | 
+  'comment-alt-minus' | 
+  'comment-alt-music' | 
+  'comment-alt-plus' | 
+  'comment-alt-slash' | 
+  'comment-alt-smile' | 
+  'comment-alt-times' | 
+  'comment-check' | 
+  'comment-dollar' | 
+  'comment-dots' | 
+  'comment-edit' | 
+  'comment-exclamation' | 
+  'comment-lines' | 
+  'comment-medical' | 
+  'comment-minus' | 
+  'comment-music' | 
+  'comment-plus' | 
+  'comment-slash' | 
+  'comment-smile' | 
+  'comment-times' | 
+  'comments' | 
+  'comments-alt' | 
+  'comments-alt-dollar' | 
+  'comments-dollar' | 
+  'compact-disc' | 
+  'compass' | 
+  'compass-slash' | 
+  'compress' | 
+  'compress-alt' | 
+  'compress-arrows-alt' | 
+  'compress-wide' | 
+  'computer-classic' | 
+  'computer-speaker' | 
+  'concierge-bell' | 
+  'construction' | 
+  'container-storage' | 
+  'conveyor-belt' | 
+  'conveyor-belt-alt' | 
+  'cookie' | 
+  'cookie-bite' | 
+  'copy' | 
+  'copyright' | 
+  'corn' | 
+  'couch' | 
+  'cow' | 
+  'cowbell' | 
+  'cowbell-more' | 
+  'credit-card' | 
+  'credit-card-blank' | 
+  'credit-card-front' | 
+  'cricket' | 
+  'croissant' | 
+  'crop' | 
+  'crop-alt' | 
+  'cross' | 
+  'crosshairs' | 
+  'crow' | 
+  'crown' | 
+  'crutch' | 
+  'crutches' | 
+  'cube' | 
+  'cubes' | 
+  'curling' | 
+  'cut' | 
+  'dagger' | 
+  'database' | 
+  'deaf' | 
+  'debug' | 
+  'deer' | 
+  'deer-rudolph' | 
+  'democrat' | 
+  'desktop' | 
+  'desktop-alt' | 
+  'dewpoint' | 
+  'dharmachakra' | 
+  'diagnoses' | 
+  'diamond' | 
+  'dice' | 
+  'dice-d10' | 
+  'dice-d12' | 
+  'dice-d20' | 
+  'dice-d4' | 
+  'dice-d6' | 
+  'dice-d8' | 
+  'dice-five' | 
+  'dice-four' | 
+  'dice-one' | 
+  'dice-six' | 
+  'dice-three' | 
+  'dice-two' | 
+  'digging' | 
+  'digital-tachograph' | 
+  'diploma' | 
+  'directions' | 
+  'disc-drive' | 
+  'disease' | 
+  'divide' | 
+  'dizzy' | 
+  'dna' | 
+  'do-not-enter' | 
+  'dog' | 
+  'dog-leashed' | 
+  'dollar-sign' | 
+  'dolly' | 
+  'dolly-empty' | 
+  'dolly-flatbed' | 
+  'dolly-flatbed-alt' | 
+  'dolly-flatbed-empty' | 
+  'donate' | 
+  'door-closed' | 
+  'door-open' | 
+  'dot-circle' | 
+  'dove' | 
+  'download' | 
+  'drafting-compass' | 
+  'dragon' | 
+  'draw-circle' | 
+  'draw-polygon' | 
+  'draw-square' | 
+  'dreidel' | 
+  'drone' | 
+  'drone-alt' | 
+  'drum' | 
+  'drum-steelpan' | 
+  'drumstick' | 
+  'drumstick-bite' | 
+  'dryer' | 
+  'dryer-alt' | 
+  'duck' | 
+  'dumbbell' | 
+  'dumpster' | 
+  'dumpster-fire' | 
+  'dungeon' | 
+  'ear' | 
+  'ear-muffs' | 
+  'eclipse' | 
+  'eclipse-alt' | 
+  'edit' | 
+  'egg' | 
+  'egg-fried' | 
+  'eject' | 
+  'elephant' | 
+  'ellipsis-h' | 
+  'ellipsis-h-alt' | 
+  'ellipsis-v' | 
+  'ellipsis-v-alt' | 
+  'empty-set' | 
+  'engine-warning' | 
+  'envelope' | 
+  'envelope-open' | 
+  'envelope-open-dollar' | 
+  'envelope-open-text' | 
+  'envelope-square' | 
+  'equals' | 
+  'eraser' | 
+  'ethernet' | 
+  'euro-sign' | 
+  'exchange' | 
+  'exchange-alt' | 
+  'exclamation' | 
+  'exclamation-circle' | 
+  'exclamation-square' | 
+  'exclamation-triangle' | 
+  'expand' | 
+  'expand-alt' | 
+  'expand-arrows' | 
+  'expand-arrows-alt' | 
+  'expand-wide' | 
+  'external-link' | 
+  'external-link-alt' | 
+  'external-link-square' | 
+  'external-link-square-alt' | 
+  'eye' | 
+  'eye-dropper' | 
+  'eye-evil' | 
+  'eye-slash' | 
+  'fan' | 
+  'fan-table' | 
+  'farm' | 
+  'fast-backward' | 
+  'fast-forward' | 
+  'faucet' | 
+  'faucet-drip' | 
+  'fax' | 
+  'feather' | 
+  'feather-alt' | 
+  'female' | 
+  'field-hockey' | 
+  'fighter-jet' | 
+  'file' | 
+  'file-alt' | 
+  'file-archive' | 
+  'file-audio' | 
+  'file-certificate' | 
+  'file-chart-line' | 
+  'file-chart-pie' | 
+  'file-check' | 
+  'file-code' | 
+  'file-contract' | 
+  'file-csv' | 
+  'file-download' | 
+  'file-edit' | 
+  'file-excel' | 
+  'file-exclamation' | 
+  'file-export' | 
+  'file-image' | 
+  'file-import' | 
+  'file-invoice' | 
+  'file-invoice-dollar' | 
+  'file-medical' | 
+  'file-medical-alt' | 
+  'file-minus' | 
+  'file-music' | 
+  'file-pdf' | 
+  'file-plus' | 
+  'file-powerpoint' | 
+  'file-prescription' | 
+  'file-search' | 
+  'file-signature' | 
+  'file-spreadsheet' | 
+  'file-times' | 
+  'file-upload' | 
+  'file-user' | 
+  'file-video' | 
+  'file-word' | 
+  'files-medical' | 
+  'fill' | 
+  'fill-drip' | 
+  'film' | 
+  'film-alt' | 
+  'film-canister' | 
+  'filter' | 
+  'fingerprint' | 
+  'fire' | 
+  'fire-alt' | 
+  'fire-extinguisher' | 
+  'fire-smoke' | 
+  'fireplace' | 
+  'first-aid' | 
+  'fish' | 
+  'fish-cooked' | 
+  'fist-raised' | 
+  'flag' | 
+  'flag-alt' | 
+  'flag-checkered' | 
+  'flag-usa' | 
+  'flame' | 
+  'flashlight' | 
+  'flask' | 
+  'flask-poison' | 
+  'flask-potion' | 
+  'flower' | 
+  'flower-daffodil' | 
+  'flower-tulip' | 
+  'flushed' | 
+  'flute' | 
+  'flux-capacitor' | 
+  'fog' | 
+  'folder' | 
+  'folder-download' | 
+  'folder-minus' | 
+  'folder-open' | 
+  'folder-plus' | 
+  'folder-times' | 
+  'folder-tree' | 
+  'folder-upload' | 
+  'folders' | 
+  'font' | 
+  'font-awesome-logo-full' | 
+  'font-case' | 
+  'football-ball' | 
+  'football-helmet' | 
+  'forklift' | 
+  'forward' | 
+  'fragile' | 
+  'french-fries' | 
+  'frog' | 
+  'frosty-head' | 
+  'frown' | 
+  'frown-open' | 
+  'function' | 
+  'funnel-dollar' | 
+  'futbol' | 
+  'galaxy' | 
+  'game-board' | 
+  'game-board-alt' | 
+  'game-console-handheld' | 
+  'gamepad' | 
+  'gamepad-alt' | 
+  'garage' | 
+  'garage-car' | 
+  'garage-open' | 
+  'gas-pump' | 
+  'gas-pump-slash' | 
+  'gavel' | 
+  'gem' | 
+  'genderless' | 
+  'ghost' | 
+  'gift' | 
+  'gift-card' | 
+  'gifts' | 
+  'gingerbread-man' | 
+  'glass' | 
+  'glass-champagne' | 
+  'glass-cheers' | 
+  'glass-citrus' | 
+  'glass-martini' | 
+  'glass-martini-alt' | 
+  'glass-whiskey' | 
+  'glass-whiskey-rocks' | 
+  'glasses' | 
+  'glasses-alt' | 
+  'globe' | 
+  'globe-africa' | 
+  'globe-americas' | 
+  'globe-asia' | 
+  'globe-europe' | 
+  'globe-snow' | 
+  'globe-stand' | 
+  'golf-ball' | 
+  'golf-club' | 
+  'gopuram' | 
+  'graduation-cap' | 
+  'gramophone' | 
+  'greater-than' | 
+  'greater-than-equal' | 
+  'grimace' | 
+  'grin' | 
+  'grin-alt' | 
+  'grin-beam' | 
+  'grin-beam-sweat' | 
+  'grin-hearts' | 
+  'grin-squint' | 
+  'grin-squint-tears' | 
+  'grin-stars' | 
+  'grin-tears' | 
+  'grin-tongue' | 
+  'grin-tongue-squint' | 
+  'grin-tongue-wink' | 
+  'grin-wink' | 
+  'grip-horizontal' | 
+  'grip-lines' | 
+  'grip-lines-vertical' | 
+  'grip-vertical' | 
+  'guitar' | 
+  'guitar-electric' | 
+  'guitars' | 
+  'h-square' | 
+  'h1' | 
+  'h2' | 
+  'h3' | 
+  'h4' | 
+  'hamburger' | 
+  'hammer' | 
+  'hammer-war' | 
+  'hamsa' | 
+  'hand-heart' | 
+  'hand-holding' | 
+  'hand-holding-box' | 
+  'hand-holding-heart' | 
+  'hand-holding-magic' | 
+  'hand-holding-medical' | 
+  'hand-holding-seedling' | 
+  'hand-holding-usd' | 
+  'hand-holding-water' | 
+  'hand-lizard' | 
+  'hand-middle-finger' | 
+  'hand-paper' | 
+  'hand-peace' | 
+  'hand-point-down' | 
+  'hand-point-left' | 
+  'hand-point-right' | 
+  'hand-point-up' | 
+  'hand-pointer' | 
+  'hand-receiving' | 
+  'hand-rock' | 
+  'hand-scissors' | 
+  'hand-sparkles' | 
+  'hand-spock' | 
+  'hands' | 
+  'hands-heart' | 
+  'hands-helping' | 
+  'hands-usd' | 
+  'hands-wash' | 
+  'handshake' | 
+  'handshake-alt' | 
+  'handshake-alt-slash' | 
+  'handshake-slash' | 
+  'hanukiah' | 
+  'hard-hat' | 
+  'hashtag' | 
+  'hat-chef' | 
+  'hat-cowboy' | 
+  'hat-cowboy-side' | 
+  'hat-santa' | 
+  'hat-winter' | 
+  'hat-witch' | 
+  'hat-wizard' | 
+  'hdd' | 
+  'head-side' | 
+  'head-side-brain' | 
+  'head-side-cough' | 
+  'head-side-cough-slash' | 
+  'head-side-headphones' | 
+  'head-side-mask' | 
+  'head-side-medical' | 
+  'head-side-virus' | 
+  'head-vr' | 
+  'heading' | 
+  'headphones' | 
+  'headphones-alt' | 
+  'headset' | 
+  'heart' | 
+  'heart-broken' | 
+  'heart-circle' | 
+  'heart-rate' | 
+  'heart-square' | 
+  'heartbeat' | 
+  'heat' | 
+  'helicopter' | 
+  'helmet-battle' | 
+  'hexagon' | 
+  'highlighter' | 
+  'hiking' | 
+  'hippo' | 
+  'history' | 
+  'hockey-mask' | 
+  'hockey-puck' | 
+  'hockey-sticks' | 
+  'holly-berry' | 
+  'home' | 
+  'home-alt' | 
+  'home-heart' | 
+  'home-lg' | 
+  'home-lg-alt' | 
+  'hood-cloak' | 
+  'horizontal-rule' | 
+  'horse' | 
+  'horse-head' | 
+  'horse-saddle' | 
+  'hospital' | 
+  'hospital-alt' | 
+  'hospital-symbol' | 
+  'hospital-user' | 
+  'hospitals' | 
+  'hot-tub' | 
+  'hotdog' | 
+  'hotel' | 
+  'hourglass' | 
+  'hourglass-end' | 
+  'hourglass-half' | 
+  'hourglass-start' | 
+  'house' | 
+  'house-damage' | 
+  'house-day' | 
+  'house-flood' | 
+  'house-leave' | 
+  'house-night' | 
+  'house-return' | 
+  'house-signal' | 
+  'house-user' | 
+  'hryvnia' | 
+  'humidity' | 
+  'hurricane' | 
+  'i-cursor' | 
+  'ice-cream' | 
+  'ice-skate' | 
+  'icicles' | 
+  'icons' | 
+  'icons-alt' | 
+  'id-badge' | 
+  'id-card' | 
+  'id-card-alt' | 
+  'igloo' | 
+  'image' | 
+  'image-polaroid' | 
+  'images' | 
+  'inbox' | 
+  'inbox-in' | 
+  'inbox-out' | 
+  'indent' | 
+  'industry' | 
+  'industry-alt' | 
+  'infinity' | 
+  'info' | 
+  'info-circle' | 
+  'info-square' | 
+  'inhaler' | 
+  'integral' | 
+  'intersection' | 
+  'inventory' | 
+  'island-tropical' | 
+  'italic' | 
+  'jack-o-lantern' | 
+  'jedi' | 
+  'joint' | 
+  'journal-whills' | 
+  'joystick' | 
+  'jug' | 
+  'kaaba' | 
+  'kazoo' | 
+  'kerning' | 
+  'key' | 
+  'key-skeleton' | 
+  'keyboard' | 
+  'keynote' | 
+  'khanda' | 
+  'kidneys' | 
+  'kiss' | 
+  'kiss-beam' | 
+  'kiss-wink-heart' | 
+  'kite' | 
+  'kiwi-bird' | 
+  'knife-kitchen' | 
+  'lambda' | 
+  'lamp' | 
+  'lamp-desk' | 
+  'lamp-floor' | 
+  'landmark' | 
+  'landmark-alt' | 
+  'language' | 
+  'laptop' | 
+  'laptop-code' | 
+  'laptop-house' | 
+  'laptop-medical' | 
+  'lasso' | 
+  'laugh' | 
+  'laugh-beam' | 
+  'laugh-squint' | 
+  'laugh-wink' | 
+  'layer-group' | 
+  'layer-minus' | 
+  'layer-plus' | 
+  'leaf' | 
+  'leaf-heart' | 
+  'leaf-maple' | 
+  'leaf-oak' | 
+  'lemon' | 
+  'less-than' | 
+  'less-than-equal' | 
+  'level-down' | 
+  'level-down-alt' | 
+  'level-up' | 
+  'level-up-alt' | 
+  'life-ring' | 
+  'light-ceiling' | 
+  'light-switch' | 
+  'light-switch-off' | 
+  'light-switch-on' | 
+  'lightbulb' | 
+  'lightbulb-dollar' | 
+  'lightbulb-exclamation' | 
+  'lightbulb-on' | 
+  'lightbulb-slash' | 
+  'lights-holiday' | 
+  'line-columns' | 
+  'line-height' | 
+  'link' | 
+  'lips' | 
+  'lira-sign' | 
+  'list' | 
+  'list-alt' | 
+  'list-music' | 
+  'list-ol' | 
+  'list-ul' | 
+  'location' | 
+  'location-arrow' | 
+  'location-circle' | 
+  'location-slash' | 
+  'lock' | 
+  'lock-alt' | 
+  'lock-open' | 
+  'lock-open-alt' | 
+  'long-arrow-alt-down' | 
+  'long-arrow-alt-left' | 
+  'long-arrow-alt-right' | 
+  'long-arrow-alt-up' | 
+  'long-arrow-down' | 
+  'long-arrow-left' | 
+  'long-arrow-right' | 
+  'long-arrow-up' | 
+  'loveseat' | 
+  'low-vision' | 
+  'luchador' | 
+  'luggage-cart' | 
+  'lungs' | 
+  'lungs-virus' | 
+  'mace' | 
+  'magic' | 
+  'magnet' | 
+  'mail-bulk' | 
+  'mailbox' | 
+  'male' | 
+  'mandolin' | 
+  'map' | 
+  'map-marked' | 
+  'map-marked-alt' | 
+  'map-marker' | 
+  'map-marker-alt' | 
+  'map-marker-alt-slash' | 
+  'map-marker-check' | 
+  'map-marker-edit' | 
+  'map-marker-exclamation' | 
+  'map-marker-minus' | 
+  'map-marker-plus' | 
+  'map-marker-question' | 
+  'map-marker-slash' | 
+  'map-marker-smile' | 
+  'map-marker-times' | 
+  'map-pin' | 
+  'map-signs' | 
+  'marker' | 
+  'mars' | 
+  'mars-double' | 
+  'mars-stroke' | 
+  'mars-stroke-h' | 
+  'mars-stroke-v' | 
+  'mask' | 
+  'meat' | 
+  'medal' | 
+  'medkit' | 
+  'megaphone' | 
+  'meh' | 
+  'meh-blank' | 
+  'meh-rolling-eyes' | 
+  'memory' | 
+  'menorah' | 
+  'mercury' | 
+  'meteor' | 
+  'microchip' | 
+  'microphone' | 
+  'microphone-alt' | 
+  'microphone-alt-slash' | 
+  'microphone-slash' | 
+  'microphone-stand' | 
+  'microscope' | 
+  'microwave' | 
+  'mind-share' | 
+  'minus' | 
+  'minus-circle' | 
+  'minus-hexagon' | 
+  'minus-octagon' | 
+  'minus-square' | 
+  'mistletoe' | 
+  'mitten' | 
+  'mobile' | 
+  'mobile-alt' | 
+  'mobile-android' | 
+  'mobile-android-alt' | 
+  'money-bill' | 
+  'money-bill-alt' | 
+  'money-bill-wave' | 
+  'money-bill-wave-alt' | 
+  'money-check' | 
+  'money-check-alt' | 
+  'money-check-edit' | 
+  'money-check-edit-alt' | 
+  'monitor-heart-rate' | 
+  'monkey' | 
+  'monument' | 
+  'moon' | 
+  'moon-cloud' | 
+  'moon-stars' | 
+  'mortar-pestle' | 
+  'mosque' | 
+  'motorcycle' | 
+  'mountain' | 
+  'mountains' | 
+  'mouse' | 
+  'mouse-alt' | 
+  'mouse-pointer' | 
+  'mp3-player' | 
+  'mug' | 
+  'mug-hot' | 
+  'mug-marshmallows' | 
+  'mug-tea' | 
+  'music' | 
+  'music-alt' | 
+  'music-alt-slash' | 
+  'music-slash' | 
+  'narwhal' | 
+  'network-wired' | 
+  'neuter' | 
+  'newspaper' | 
+  'not-equal' | 
+  'notes-medical' | 
+  'object-group' | 
+  'object-ungroup' | 
+  'octagon' | 
+  'oil-can' | 
+  'oil-temp' | 
+  'om' | 
+  'omega' | 
+  'ornament' | 
+  'otter' | 
+  'outdent' | 
+  'outlet' | 
+  'oven' | 
+  'overline' | 
+  'page-break' | 
+  'pager' | 
+  'paint-brush' | 
+  'paint-brush-alt' | 
+  'paint-roller' | 
+  'palette' | 
+  'pallet' | 
+  'pallet-alt' | 
+  'paper-plane' | 
+  'paperclip' | 
+  'parachute-box' | 
+  'paragraph' | 
+  'paragraph-rtl' | 
+  'parking' | 
+  'parking-circle' | 
+  'parking-circle-slash' | 
+  'parking-slash' | 
+  'passport' | 
+  'pastafarianism' | 
+  'paste' | 
+  'pause' | 
+  'pause-circle' | 
+  'paw' | 
+  'paw-alt' | 
+  'paw-claws' | 
+  'peace' | 
+  'pegasus' | 
+  'pen' | 
+  'pen-alt' | 
+  'pen-fancy' | 
+  'pen-nib' | 
+  'pen-square' | 
+  'pencil' | 
+  'pencil-alt' | 
+  'pencil-paintbrush' | 
+  'pencil-ruler' | 
+  'pennant' | 
+  'people-arrows' | 
+  'people-carry' | 
+  'pepper-hot' | 
+  'percent' | 
+  'percentage' | 
+  'person-booth' | 
+  'person-carry' | 
+  'person-dolly' | 
+  'person-dolly-empty' | 
+  'person-sign' | 
+  'phone' | 
+  'phone-alt' | 
+  'phone-laptop' | 
+  'phone-office' | 
+  'phone-plus' | 
+  'phone-rotary' | 
+  'phone-slash' | 
+  'phone-square' | 
+  'phone-square-alt' | 
+  'phone-volume' | 
+  'photo-video' | 
+  'pi' | 
+  'piano' | 
+  'piano-keyboard' | 
+  'pie' | 
+  'pig' | 
+  'piggy-bank' | 
+  'pills' | 
+  'pizza' | 
+  'pizza-slice' | 
+  'place-of-worship' | 
+  'plane' | 
+  'plane-alt' | 
+  'plane-arrival' | 
+  'plane-departure' | 
+  'plane-slash' | 
+  'planet-moon' | 
+  'planet-ringed' | 
+  'play' | 
+  'play-circle' | 
+  'plug' | 
+  'plus' | 
+  'plus-circle' | 
+  'plus-hexagon' | 
+  'plus-octagon' | 
+  'plus-square' | 
+  'podcast' | 
+  'podium' | 
+  'podium-star' | 
+  'police-box' | 
+  'poll' | 
+  'poll-h' | 
+  'poll-people' | 
+  'poo' | 
+  'poo-storm' | 
+  'poop' | 
+  'popcorn' | 
+  'portal-enter' | 
+  'portal-exit' | 
+  'portrait' | 
+  'pound-sign' | 
+  'power-off' | 
+  'pray' | 
+  'praying-hands' | 
+  'prescription' | 
+  'prescription-bottle' | 
+  'prescription-bottle-alt' | 
+  'presentation' | 
+  'print' | 
+  'print-search' | 
+  'print-slash' | 
+  'procedures' | 
+  'project-diagram' | 
+  'projector' | 
+  'pump-medical' | 
+  'pump-soap' | 
+  'pumpkin' | 
+  'puzzle-piece' | 
+  'qrcode' | 
+  'question' | 
+  'question-circle' | 
+  'question-square' | 
+  'quidditch' | 
+  'quote-left' | 
+  'quote-right' | 
+  'quran' | 
+  'rabbit' | 
+  'rabbit-fast' | 
+  'racquet' | 
+  'radar' | 
+  'radiation' | 
+  'radiation-alt' | 
+  'radio' | 
+  'radio-alt' | 
+  'rainbow' | 
+  'raindrops' | 
+  'ram' | 
+  'ramp-loading' | 
+  'random' | 
+  'raygun' | 
+  'receipt' | 
+  'record-vinyl' | 
+  'rectangle-landscape' | 
+  'rectangle-portrait' | 
+  'rectangle-wide' | 
+  'recycle' | 
+  'redo' | 
+  'redo-alt' | 
+  'refrigerator' | 
+  'registered' | 
+  'remove-format' | 
+  'repeat' | 
+  'repeat-1' | 
+  'repeat-1-alt' | 
+  'repeat-alt' | 
+  'reply' | 
+  'reply-all' | 
+  'republican' | 
+  'restroom' | 
+  'retweet' | 
+  'retweet-alt' | 
+  'ribbon' | 
+  'ring' | 
+  'rings-wedding' | 
+  'road' | 
+  'robot' | 
+  'rocket' | 
+  'rocket-launch' | 
+  'route' | 
+  'route-highway' | 
+  'route-interstate' | 
+  'router' | 
+  'rss' | 
+  'rss-square' | 
+  'ruble-sign' | 
+  'ruler' | 
+  'ruler-combined' | 
+  'ruler-horizontal' | 
+  'ruler-triangle' | 
+  'ruler-vertical' | 
+  'running' | 
+  'rupee-sign' | 
+  'rv' | 
+  'sack' | 
+  'sack-dollar' | 
+  'sad-cry' | 
+  'sad-tear' | 
+  'salad' | 
+  'sandwich' | 
+  'satellite' | 
+  'satellite-dish' | 
+  'sausage' | 
+  'save' | 
+  'sax-hot' | 
+  'saxophone' | 
+  'scalpel' | 
+  'scalpel-path' | 
+  'scanner' | 
+  'scanner-image' | 
+  'scanner-keyboard' | 
+  'scanner-touchscreen' | 
+  'scarecrow' | 
+  'scarf' | 
+  'school' | 
+  'screwdriver' | 
+  'scroll' | 
+  'scroll-old' | 
+  'scrubber' | 
+  'scythe' | 
+  'sd-card' | 
+  'search' | 
+  'search-dollar' | 
+  'search-location' | 
+  'search-minus' | 
+  'search-plus' | 
+  'seedling' | 
+  'send-back' | 
+  'send-backward' | 
+  'sensor' | 
+  'sensor-alert' | 
+  'sensor-fire' | 
+  'sensor-on' | 
+  'sensor-smoke' | 
+  'server' | 
+  'shapes' | 
+  'share' | 
+  'share-all' | 
+  'share-alt' | 
+  'share-alt-square' | 
+  'share-square' | 
+  'sheep' | 
+  'shekel-sign' | 
+  'shield' | 
+  'shield-alt' | 
+  'shield-check' | 
+  'shield-cross' | 
+  'shield-virus' | 
+  'ship' | 
+  'shipping-fast' | 
+  'shipping-timed' | 
+  'shish-kebab' | 
+  'shoe-prints' | 
+  'shopping-bag' | 
+  'shopping-basket' | 
+  'shopping-cart' | 
+  'shovel' | 
+  'shovel-snow' | 
+  'shower' | 
+  'shredder' | 
+  'shuttle-van' | 
+  'shuttlecock' | 
+  'sickle' | 
+  'sigma' | 
+  'sign' | 
+  'sign-in' | 
+  'sign-in-alt' | 
+  'sign-language' | 
+  'sign-out' | 
+  'sign-out-alt' | 
+  'signal' | 
+  'signal-1' | 
+  'signal-2' | 
+  'signal-3' | 
+  'signal-4' | 
+  'signal-alt' | 
+  'signal-alt-1' | 
+  'signal-alt-2' | 
+  'signal-alt-3' | 
+  'signal-alt-slash' | 
+  'signal-slash' | 
+  'signal-stream' | 
+  'signature' | 
+  'sim-card' | 
+  'sink' | 
+  'siren' | 
+  'siren-on' | 
+  'sitemap' | 
+  'skating' | 
+  'skeleton' | 
+  'ski-jump' | 
+  'ski-lift' | 
+  'skiing' | 
+  'skiing-nordic' | 
+  'skull' | 
+  'skull-cow' | 
+  'skull-crossbones' | 
+  'slash' | 
+  'sledding' | 
+  'sleigh' | 
+  'sliders-h' | 
+  'sliders-h-square' | 
+  'sliders-v' | 
+  'sliders-v-square' | 
+  'smile' | 
+  'smile-beam' | 
+  'smile-plus' | 
+  'smile-wink' | 
+  'smog' | 
+  'smoke' | 
+  'smoking' | 
+  'smoking-ban' | 
+  'sms' | 
+  'snake' | 
+  'snooze' | 
+  'snow-blowing' | 
+  'snowboarding' | 
+  'snowflake' | 
+  'snowflakes' | 
+  'snowman' | 
+  'snowmobile' | 
+  'snowplow' | 
+  'soap' | 
+  'socks' | 
+  'solar-panel' | 
+  'solar-system' | 
+  'sort' | 
+  'sort-alpha-down' | 
+  'sort-alpha-down-alt' | 
+  'sort-alpha-up' | 
+  'sort-alpha-up-alt' | 
+  'sort-alt' | 
+  'sort-amount-down' | 
+  'sort-amount-down-alt' | 
+  'sort-amount-up' | 
+  'sort-amount-up-alt' | 
+  'sort-circle' | 
+  'sort-circle-down' | 
+  'sort-circle-up' | 
+  'sort-down' | 
+  'sort-numeric-down' | 
+  'sort-numeric-down-alt' | 
+  'sort-numeric-up' | 
+  'sort-numeric-up-alt' | 
+  'sort-shapes-down' | 
+  'sort-shapes-down-alt' | 
+  'sort-shapes-up' | 
+  'sort-shapes-up-alt' | 
+  'sort-size-down' | 
+  'sort-size-down-alt' | 
+  'sort-size-up' | 
+  'sort-size-up-alt' | 
+  'sort-up' | 
+  'soup' | 
+  'spa' | 
+  'space-shuttle' | 
+  'space-station-moon' | 
+  'space-station-moon-alt' | 
+  'spade' | 
+  'sparkles' | 
+  'speaker' | 
+  'speakers' | 
+  'spell-check' | 
+  'spider' | 
+  'spider-black-widow' | 
+  'spider-web' | 
+  'spinner' | 
+  'spinner-third' | 
+  'splotch' | 
+  'spray-can' | 
+  'sprinkler' | 
+  'square' | 
+  'square-full' | 
+  'square-root' | 
+  'square-root-alt' | 
+  'squirrel' | 
+  'staff' | 
+  'stamp' | 
+  'star' | 
+  'star-and-crescent' | 
+  'star-christmas' | 
+  'star-exclamation' | 
+  'star-half' | 
+  'star-half-alt' | 
+  'star-of-david' | 
+  'star-of-life' | 
+  'star-shooting' | 
+  'starfighter' | 
+  'starfighter-alt' | 
+  'stars' | 
+  'starship' | 
+  'starship-freighter' | 
+  'steak' | 
+  'steering-wheel' | 
+  'step-backward' | 
+  'step-forward' | 
+  'stethoscope' | 
+  'sticky-note' | 
+  'stocking' | 
+  'stomach' | 
+  'stop' | 
+  'stop-circle' | 
+  'stopwatch' | 
+  'stopwatch-20' | 
+  'store' | 
+  'store-alt' | 
+  'store-alt-slash' | 
+  'store-slash' | 
+  'stream' | 
+  'street-view' | 
+  'stretcher' | 
+  'strikethrough' | 
+  'stroopwafel' | 
+  'subscript' | 
+  'subway' | 
+  'suitcase' | 
+  'suitcase-rolling' | 
+  'sun' | 
+  'sun-cloud' | 
+  'sun-dust' | 
+  'sun-haze' | 
+  'sunglasses' | 
+  'sunrise' | 
+  'sunset' | 
+  'superscript' | 
+  'surprise' | 
+  'swatchbook' | 
+  'swimmer' | 
+  'swimming-pool' | 
+  'sword' | 
+  'sword-laser' | 
+  'sword-laser-alt' | 
+  'swords' | 
+  'swords-laser' | 
+  'synagogue' | 
+  'sync' | 
+  'sync-alt' | 
+  'syringe' | 
+  'table' | 
+  'table-tennis' | 
+  'tablet' | 
+  'tablet-alt' | 
+  'tablet-android' | 
+  'tablet-android-alt' | 
+  'tablet-rugged' | 
+  'tablets' | 
+  'tachometer' | 
+  'tachometer-alt' | 
+  'tachometer-alt-average' | 
+  'tachometer-alt-fast' | 
+  'tachometer-alt-fastest' | 
+  'tachometer-alt-slow' | 
+  'tachometer-alt-slowest' | 
+  'tachometer-average' | 
+  'tachometer-fast' | 
+  'tachometer-fastest' | 
+  'tachometer-slow' | 
+  'tachometer-slowest' | 
+  'taco' | 
+  'tag' | 
+  'tags' | 
+  'tally' | 
+  'tanakh' | 
+  'tape' | 
+  'tasks' | 
+  'tasks-alt' | 
+  'taxi' | 
+  'teeth' | 
+  'teeth-open' | 
+  'telescope' | 
+  'temperature-down' | 
+  'temperature-frigid' | 
+  'temperature-high' | 
+  'temperature-hot' | 
+  'temperature-low' | 
+  'temperature-up' | 
+  'tenge' | 
+  'tennis-ball' | 
+  'terminal' | 
+  'text' | 
+  'text-height' | 
+  'text-size' | 
+  'text-width' | 
+  'th' | 
+  'th-large' | 
+  'th-list' | 
+  'theater-masks' | 
+  'thermometer' | 
+  'thermometer-empty' | 
+  'thermometer-full' | 
+  'thermometer-half' | 
+  'thermometer-quarter' | 
+  'thermometer-three-quarters' | 
+  'theta' | 
+  'thumbs-down' | 
+  'thumbs-up' | 
+  'thumbtack' | 
+  'thunderstorm' | 
+  'thunderstorm-moon' | 
+  'thunderstorm-sun' | 
+  'ticket' | 
+  'ticket-alt' | 
+  'tilde' | 
+  'times' | 
+  'times-circle' | 
+  'times-hexagon' | 
+  'times-octagon' | 
+  'times-square' | 
+  'tint' | 
+  'tint-slash' | 
+  'tire' | 
+  'tire-flat' | 
+  'tire-pressure-warning' | 
+  'tire-rugged' | 
+  'tired' | 
+  'toggle-off' | 
+  'toggle-on' | 
+  'toilet' | 
+  'toilet-paper' | 
+  'toilet-paper-alt' | 
+  'toilet-paper-slash' | 
+  'tombstone' | 
+  'tombstone-alt' | 
+  'toolbox' | 
+  'tools' | 
+  'tooth' | 
+  'toothbrush' | 
+  'torah' | 
+  'torii-gate' | 
+  'tornado' | 
+  'tractor' | 
+  'trademark' | 
+  'traffic-cone' | 
+  'traffic-light' | 
+  'traffic-light-go' | 
+  'traffic-light-slow' | 
+  'traffic-light-stop' | 
+  'trailer' | 
+  'train' | 
+  'tram' | 
+  'transgender' | 
+  'transgender-alt' | 
+  'transporter' | 
+  'transporter-1' | 
+  'transporter-2' | 
+  'transporter-3' | 
+  'transporter-empty' | 
+  'trash' | 
+  'trash-alt' | 
+  'trash-restore' | 
+  'trash-restore-alt' | 
+  'trash-undo' | 
+  'trash-undo-alt' | 
+  'treasure-chest' | 
+  'tree' | 
+  'tree-alt' | 
+  'tree-christmas' | 
+  'tree-decorated' | 
+  'tree-large' | 
+  'tree-palm' | 
+  'trees' | 
+  'triangle' | 
+  'triangle-music' | 
+  'trophy' | 
+  'trophy-alt' | 
+  'truck' | 
+  'truck-container' | 
+  'truck-couch' | 
+  'truck-loading' | 
+  'truck-monster' | 
+  'truck-moving' | 
+  'truck-pickup' | 
+  'truck-plow' | 
+  'truck-ramp' | 
+  'trumpet' | 
+  'tshirt' | 
+  'tty' | 
+  'turkey' | 
+  'turntable' | 
+  'turtle' | 
+  'tv' | 
+  'tv-alt' | 
+  'tv-music' | 
+  'tv-retro' | 
+  'typewriter' | 
+  'ufo' | 
+  'ufo-beam' | 
+  'umbrella' | 
+  'umbrella-beach' | 
+  'underline' | 
+  'undo' | 
+  'undo-alt' | 
+  'unicorn' | 
+  'union' | 
+  'universal-access' | 
+  'university' | 
+  'unlink' | 
+  'unlock' | 
+  'unlock-alt' | 
+  'upload' | 
+  'usb-drive' | 
+  'usd-circle' | 
+  'usd-square' | 
+  'user' | 
+  'user-alien' | 
+  'user-alt' | 
+  'user-alt-slash' | 
+  'user-astronaut' | 
+  'user-chart' | 
+  'user-check' | 
+  'user-circle' | 
+  'user-clock' | 
+  'user-cog' | 
+  'user-cowboy' | 
+  'user-crown' | 
+  'user-edit' | 
+  'user-friends' | 
+  'user-graduate' | 
+  'user-hard-hat' | 
+  'user-headset' | 
+  'user-injured' | 
+  'user-lock' | 
+  'user-md' | 
+  'user-md-chat' | 
+  'user-minus' | 
+  'user-music' | 
+  'user-ninja' | 
+  'user-nurse' | 
+  'user-plus' | 
+  'user-robot' | 
+  'user-secret' | 
+  'user-shield' | 
+  'user-slash' | 
+  'user-tag' | 
+  'user-tie' | 
+  'user-times' | 
+  'user-unlock' | 
+  'user-visor' | 
+  'users' | 
+  'users-class' | 
+  'users-cog' | 
+  'users-crown' | 
+  'users-medical' | 
+  'users-slash' | 
+  'utensil-fork' | 
+  'utensil-knife' | 
+  'utensil-spoon' | 
+  'utensils' | 
+  'utensils-alt' | 
+  'vacuum' | 
+  'vacuum-robot' | 
+  'value-absolute' | 
+  'vector-square' | 
+  'venus' | 
+  'venus-double' | 
+  'venus-mars' | 
+  'vest' | 
+  'vest-patches' | 
+  'vhs' | 
+  'vial' | 
+  'vials' | 
+  'video' | 
+  'video-plus' | 
+  'video-slash' | 
+  'vihara' | 
+  'violin' | 
+  'virus' | 
+  'virus-slash' | 
+  'viruses' | 
+  'voicemail' | 
+  'volcano' | 
+  'volleyball-ball' | 
+  'volume' | 
+  'volume-down' | 
+  'volume-mute' | 
+  'volume-off' | 
+  'volume-slash' | 
+  'volume-up' | 
+  'vote-nay' | 
+  'vote-yea' | 
+  'vr-cardboard' | 
+  'wagon-covered' | 
+  'walker' | 
+  'walkie-talkie' | 
+  'walking' | 
+  'wallet' | 
+  'wand' | 
+  'wand-magic' | 
+  'warehouse' | 
+  'warehouse-alt' | 
+  'washer' | 
+  'watch' | 
+  'watch-calculator' | 
+  'watch-fitness' | 
+  'water' | 
+  'water-lower' | 
+  'water-rise' | 
+  'wave-sine' | 
+  'wave-square' | 
+  'wave-triangle' | 
+  'waveform' | 
+  'waveform-path' | 
+  'webcam' | 
+  'webcam-slash' | 
+  'weight' | 
+  'weight-hanging' | 
+  'whale' | 
+  'wheat' | 
+  'wheelchair' | 
+  'whistle' | 
+  'wifi' | 
+  'wifi-1' | 
+  'wifi-2' | 
+  'wifi-slash' | 
+  'wind' | 
+  'wind-turbine' | 
+  'wind-warning' | 
+  'window' | 
+  'window-alt' | 
+  'window-close' | 
+  'window-frame' | 
+  'window-frame-open' | 
+  'window-maximize' | 
+  'window-minimize' | 
+  'window-restore' | 
+  'windsock' | 
+  'wine-bottle' | 
+  'wine-glass' | 
+  'wine-glass-alt' | 
+  'won-sign' | 
+  'wreath' | 
+  'wrench' | 
+  'x-ray' | 
+  'yen-sign' | 
+  'yin-yang' | 
+  'abacus' | 
+  'acorn' | 
+  'ad' | 
+  'address-book' | 
+  'address-card' | 
+  'adjust' | 
+  'air-conditioner' | 
+  'air-freshener' | 
+  'alarm-clock' | 
+  'alarm-exclamation' | 
+  'alarm-plus' | 
+  'alarm-snooze' | 
+  'album' | 
+  'album-collection' | 
+  'alicorn' | 
+  'alien' | 
+  'alien-monster' | 
+  'align-center' | 
+  'align-justify' | 
+  'align-left' | 
+  'align-right' | 
+  'align-slash' | 
+  'allergies' | 
+  'ambulance' | 
+  'american-sign-language-interpreting' | 
+  'amp-guitar' | 
+  'analytics' | 
+  'anchor' | 
+  'angel' | 
+  'angle-double-down' | 
+  'angle-double-left' | 
+  'angle-double-right' | 
+  'angle-double-up' | 
+  'angle-down' | 
+  'angle-left' | 
+  'angle-right' | 
+  'angle-up' | 
+  'angry' | 
+  'ankh' | 
+  'apple-alt' | 
+  'apple-crate' | 
+  'archive' | 
+  'archway' | 
+  'arrow-alt-circle-down' | 
+  'arrow-alt-circle-left' | 
+  'arrow-alt-circle-right' | 
+  'arrow-alt-circle-up' | 
+  'arrow-alt-down' | 
+  'arrow-alt-from-bottom' | 
+  'arrow-alt-from-left' | 
+  'arrow-alt-from-right' | 
+  'arrow-alt-from-top' | 
+  'arrow-alt-left' | 
+  'arrow-alt-right' | 
+  'arrow-alt-square-down' | 
+  'arrow-alt-square-left' | 
+  'arrow-alt-square-right' | 
+  'arrow-alt-square-up' | 
+  'arrow-alt-to-bottom' | 
+  'arrow-alt-to-left' | 
+  'arrow-alt-to-right' | 
+  'arrow-alt-to-top' | 
+  'arrow-alt-up' | 
+  'arrow-circle-down' | 
+  'arrow-circle-left' | 
+  'arrow-circle-right' | 
+  'arrow-circle-up' | 
+  'arrow-down' | 
+  'arrow-from-bottom' | 
+  'arrow-from-left' | 
+  'arrow-from-right' | 
+  'arrow-from-top' | 
+  'arrow-left' | 
+  'arrow-right' | 
+  'arrow-square-down' | 
+  'arrow-square-left' | 
+  'arrow-square-right' | 
+  'arrow-square-up' | 
+  'arrow-to-bottom' | 
+  'arrow-to-left' | 
+  'arrow-to-right' | 
+  'arrow-to-top' | 
+  'arrow-up' | 
+  'arrows' | 
+  'arrows-alt' | 
+  'arrows-alt-h' | 
+  'arrows-alt-v' | 
+  'arrows-h' | 
+  'arrows-v' | 
+  'assistive-listening-systems' | 
+  'asterisk' | 
+  'at' | 
+  'atlas' | 
+  'atom' | 
+  'atom-alt' | 
+  'audio-description' | 
+  'award' | 
+  'axe' | 
+  'axe-battle' | 
+  'baby' | 
+  'baby-carriage' | 
+  'backpack' | 
+  'backspace' | 
+  'backward' | 
+  'bacon' | 
+  'bacteria' | 
+  'bacterium' | 
+  'badge' | 
+  'badge-check' | 
+  'badge-dollar' | 
+  'badge-percent' | 
+  'badge-sheriff' | 
+  'badger-honey' | 
+  'bags-shopping' | 
+  'bahai' | 
+  'balance-scale' | 
+  'balance-scale-left' | 
+  'balance-scale-right' | 
+  'ball-pile' | 
+  'ballot' | 
+  'ballot-check' | 
+  'ban' | 
+  'band-aid' | 
+  'banjo' | 
+  'barcode' | 
+  'barcode-alt' | 
+  'barcode-read' | 
+  'barcode-scan' | 
+  'bars' | 
+  'baseball' | 
+  'baseball-ball' | 
+  'basketball-ball' | 
+  'basketball-hoop' | 
+  'bat' | 
+  'bath' | 
+  'battery-bolt' | 
+  'battery-empty' | 
+  'battery-full' | 
+  'battery-half' | 
+  'battery-quarter' | 
+  'battery-slash' | 
+  'battery-three-quarters' | 
+  'bed' | 
+  'bed-alt' | 
+  'bed-bunk' | 
+  'bed-empty' | 
+  'beer' | 
+  'bell' | 
+  'bell-exclamation' | 
+  'bell-on' | 
+  'bell-plus' | 
+  'bell-school' | 
+  'bell-school-slash' | 
+  'bell-slash' | 
+  'bells' | 
+  'betamax' | 
+  'bezier-curve' | 
+  'bible' | 
+  'bicycle' | 
+  'biking' | 
+  'biking-mountain' | 
+  'binoculars' | 
+  'biohazard' | 
+  'birthday-cake' | 
+  'blanket' | 
+  'blender' | 
+  'blender-phone' | 
+  'blind' | 
+  'blinds' | 
+  'blinds-open' | 
+  'blinds-raised' | 
+  'blog' | 
+  'bold' | 
+  'bolt' | 
+  'bomb' | 
+  'bone' | 
+  'bone-break' | 
+  'bong' | 
+  'book' | 
+  'book-alt' | 
+  'book-dead' | 
+  'book-heart' | 
+  'book-medical' | 
+  'book-open' | 
+  'book-reader' | 
+  'book-spells' | 
+  'book-user' | 
+  'bookmark' | 
+  'books' | 
+  'books-medical' | 
+  'boombox' | 
+  'boot' | 
+  'booth-curtain' | 
+  'border-all' | 
+  'border-bottom' | 
+  'border-center-h' | 
+  'border-center-v' | 
+  'border-inner' | 
+  'border-left' | 
+  'border-none' | 
+  'border-outer' | 
+  'border-right' | 
+  'border-style' | 
+  'border-style-alt' | 
+  'border-top' | 
+  'bow-arrow' | 
+  'bowling-ball' | 
+  'bowling-pins' | 
+  'box' | 
+  'box-alt' | 
+  'box-ballot' | 
+  'box-check' | 
+  'box-fragile' | 
+  'box-full' | 
+  'box-heart' | 
+  'box-open' | 
+  'box-tissue' | 
+  'box-up' | 
+  'box-usd' | 
+  'boxes' | 
+  'boxes-alt' | 
+  'boxing-glove' | 
+  'brackets' | 
+  'brackets-curly' | 
+  'braille' | 
+  'brain' | 
+  'bread-loaf' | 
+  'bread-slice' | 
+  'briefcase' | 
+  'briefcase-medical' | 
+  'bring-forward' | 
+  'bring-front' | 
+  'broadcast-tower' | 
+  'broom' | 
+  'browser' | 
+  'brush' | 
+  'bug' | 
+  'building' | 
+  'bullhorn' | 
+  'bullseye' | 
+  'bullseye-arrow' | 
+  'bullseye-pointer' | 
+  'burger-soda' | 
+  'burn' | 
+  'burrito' | 
+  'bus' | 
+  'bus-alt' | 
+  'bus-school' | 
+  'business-time' | 
+  'cabinet-filing' | 
+  'cactus' | 
+  'calculator' | 
+  'calculator-alt' | 
+  'calendar' | 
+  'calendar-alt' | 
+  'calendar-check' | 
+  'calendar-day' | 
+  'calendar-edit' | 
+  'calendar-exclamation' | 
+  'calendar-minus' | 
+  'calendar-plus' | 
+  'calendar-star' | 
+  'calendar-times' | 
+  'calendar-week' | 
+  'camcorder' | 
+  'camera' | 
+  'camera-alt' | 
+  'camera-home' | 
+  'camera-movie' | 
+  'camera-polaroid' | 
+  'camera-retro' | 
+  'campfire' | 
+  'campground' | 
+  'candle-holder' | 
+  'candy-cane' | 
+  'candy-corn' | 
+  'cannabis' | 
+  'capsules' | 
+  'car' | 
+  'car-alt' | 
+  'car-battery' | 
+  'car-building' | 
+  'car-bump' | 
+  'car-bus' | 
+  'car-crash' | 
+  'car-garage' | 
+  'car-mechanic' | 
+  'car-side' | 
+  'car-tilt' | 
+  'car-wash' | 
+  'caravan' | 
+  'caravan-alt' | 
+  'caret-circle-down' | 
+  'caret-circle-left' | 
+  'caret-circle-right' | 
+  'caret-circle-up' | 
+  'caret-down' | 
+  'caret-left' | 
+  'caret-right' | 
+  'caret-square-down' | 
+  'caret-square-left' | 
+  'caret-square-right' | 
+  'caret-square-up' | 
+  'caret-up' | 
+  'carrot' | 
+  'cars' | 
+  'cart-arrow-down' | 
+  'cart-plus' | 
+  'cash-register' | 
+  'cassette-tape' | 
+  'cat' | 
+  'cat-space' | 
+  'cauldron' | 
+  'cctv' | 
+  'certificate' | 
+  'chair' | 
+  'chair-office' | 
+  'chalkboard' | 
+  'chalkboard-teacher' | 
+  'charging-station' | 
+  'chart-area' | 
+  'chart-bar' | 
+  'chart-line' | 
+  'chart-line-down' | 
+  'chart-network' | 
+  'chart-pie' | 
+  'chart-pie-alt' | 
+  'chart-scatter' | 
+  'check' | 
+  'check-circle' | 
+  'check-double' | 
+  'check-square' | 
+  'cheese' | 
+  'cheese-swiss' | 
+  'cheeseburger' | 
+  'chess' | 
+  'chess-bishop' | 
+  'chess-bishop-alt' | 
+  'chess-board' | 
+  'chess-clock' | 
+  'chess-clock-alt' | 
+  'chess-king' | 
+  'chess-king-alt' | 
+  'chess-knight' | 
+  'chess-knight-alt' | 
+  'chess-pawn' | 
+  'chess-pawn-alt' | 
+  'chess-queen' | 
+  'chess-queen-alt' | 
+  'chess-rook' | 
+  'chess-rook-alt' | 
+  'chevron-circle-down' | 
+  'chevron-circle-left' | 
+  'chevron-circle-right' | 
+  'chevron-circle-up' | 
+  'chevron-double-down' | 
+  'chevron-double-left' | 
+  'chevron-double-right' | 
+  'chevron-double-up' | 
+  'chevron-down' | 
+  'chevron-left' | 
+  'chevron-right' | 
+  'chevron-square-down' | 
+  'chevron-square-left' | 
+  'chevron-square-right' | 
+  'chevron-square-up' | 
+  'chevron-up' | 
+  'child' | 
+  'chimney' | 
+  'church' | 
+  'circle' | 
+  'circle-notch' | 
+  'city' | 
+  'clarinet' | 
+  'claw-marks' | 
+  'clinic-medical' | 
+  'clipboard' | 
+  'clipboard-check' | 
+  'clipboard-list' | 
+  'clipboard-list-check' | 
+  'clipboard-prescription' | 
+  'clipboard-user' | 
+  'clock' | 
+  'clone' | 
+  'closed-captioning' | 
+  'cloud' | 
+  'cloud-download' | 
+  'cloud-download-alt' | 
+  'cloud-drizzle' | 
+  'cloud-hail' | 
+  'cloud-hail-mixed' | 
+  'cloud-meatball' | 
+  'cloud-moon' | 
+  'cloud-moon-rain' | 
+  'cloud-music' | 
+  'cloud-rain' | 
+  'cloud-rainbow' | 
+  'cloud-showers' | 
+  'cloud-showers-heavy' | 
+  'cloud-sleet' | 
+  'cloud-snow' | 
+  'cloud-sun' | 
+  'cloud-sun-rain' | 
+  'cloud-upload' | 
+  'cloud-upload-alt' | 
+  'clouds' | 
+  'clouds-moon' | 
+  'clouds-sun' | 
+  'club' | 
+  'cocktail' | 
+  'code' | 
+  'code-branch' | 
+  'code-commit' | 
+  'code-merge' | 
+  'coffee' | 
+  'coffee-pot' | 
+  'coffee-togo' | 
+  'coffin' | 
+  'coffin-cross' | 
+  'cog' | 
+  'cogs' | 
+  'coin' | 
+  'coins' | 
+  'columns' | 
+  'comet' | 
+  'comment' | 
+  'comment-alt' | 
+  'comment-alt-check' | 
+  'comment-alt-dollar' | 
+  'comment-alt-dots' | 
+  'comment-alt-edit' | 
+  'comment-alt-exclamation' | 
+  'comment-alt-lines' | 
+  'comment-alt-medical' | 
+  'comment-alt-minus' | 
+  'comment-alt-music' | 
+  'comment-alt-plus' | 
+  'comment-alt-slash' | 
+  'comment-alt-smile' | 
+  'comment-alt-times' | 
+  'comment-check' | 
+  'comment-dollar' | 
+  'comment-dots' | 
+  'comment-edit' | 
+  'comment-exclamation' | 
+  'comment-lines' | 
+  'comment-medical' | 
+  'comment-minus' | 
+  'comment-music' | 
+  'comment-plus' | 
+  'comment-slash' | 
+  'comment-smile' | 
+  'comment-times' | 
+  'comments' | 
+  'comments-alt' | 
+  'comments-alt-dollar' | 
+  'comments-dollar' | 
+  'compact-disc' | 
+  'compass' | 
+  'compass-slash' | 
+  'compress' | 
+  'compress-alt' | 
+  'compress-arrows-alt' | 
+  'compress-wide' | 
+  'computer-classic' | 
+  'computer-speaker' | 
+  'concierge-bell' | 
+  'construction' | 
+  'container-storage' | 
+  'conveyor-belt' | 
+  'conveyor-belt-alt' | 
+  'cookie' | 
+  'cookie-bite' | 
+  'copy' | 
+  'copyright' | 
+  'corn' | 
+  'couch' | 
+  'cow' | 
+  'cowbell' | 
+  'cowbell-more' | 
+  'credit-card' | 
+  'credit-card-blank' | 
+  'credit-card-front' | 
+  'cricket' | 
+  'croissant' | 
+  'crop' | 
+  'crop-alt' | 
+  'cross' | 
+  'crosshairs' | 
+  'crow' | 
+  'crown' | 
+  'crutch' | 
+  'crutches' | 
+  'cube' | 
+  'cubes' | 
+  'curling' | 
+  'cut' | 
+  'dagger' | 
+  'database' | 
+  'deaf' | 
+  'debug' | 
+  'deer' | 
+  'deer-rudolph' | 
+  'democrat' | 
+  'desktop' | 
+  'desktop-alt' | 
+  'dewpoint' | 
+  'dharmachakra' | 
+  'diagnoses' | 
+  'diamond' | 
+  'dice' | 
+  'dice-d10' | 
+  'dice-d12' | 
+  'dice-d20' | 
+  'dice-d4' | 
+  'dice-d6' | 
+  'dice-d8' | 
+  'dice-five' | 
+  'dice-four' | 
+  'dice-one' | 
+  'dice-six' | 
+  'dice-three' | 
+  'dice-two' | 
+  'digging' | 
+  'digital-tachograph' | 
+  'diploma' | 
+  'directions' | 
+  'disc-drive' | 
+  'disease' | 
+  'divide' | 
+  'dizzy' | 
+  'dna' | 
+  'do-not-enter' | 
+  'dog' | 
+  'dog-leashed' | 
+  'dollar-sign' | 
+  'dolly' | 
+  'dolly-empty' | 
+  'dolly-flatbed' | 
+  'dolly-flatbed-alt' | 
+  'dolly-flatbed-empty' | 
+  'donate' | 
+  'door-closed' | 
+  'door-open' | 
+  'dot-circle' | 
+  'dove' | 
+  'download' | 
+  'drafting-compass' | 
+  'dragon' | 
+  'draw-circle' | 
+  'draw-polygon' | 
+  'draw-square' | 
+  'dreidel' | 
+  'drone' | 
+  'drone-alt' | 
+  'drum' | 
+  'drum-steelpan' | 
+  'drumstick' | 
+  'drumstick-bite' | 
+  'dryer' | 
+  'dryer-alt' | 
+  'duck' | 
+  'dumbbell' | 
+  'dumpster' | 
+  'dumpster-fire' | 
+  'dungeon' | 
+  'ear' | 
+  'ear-muffs' | 
+  'eclipse' | 
+  'eclipse-alt' | 
+  'edit' | 
+  'egg' | 
+  'egg-fried' | 
+  'eject' | 
+  'elephant' | 
+  'ellipsis-h' | 
+  'ellipsis-h-alt' | 
+  'ellipsis-v' | 
+  'ellipsis-v-alt' | 
+  'empty-set' | 
+  'engine-warning' | 
+  'envelope' | 
+  'envelope-open' | 
+  'envelope-open-dollar' | 
+  'envelope-open-text' | 
+  'envelope-square' | 
+  'equals' | 
+  'eraser' | 
+  'ethernet' | 
+  'euro-sign' | 
+  'exchange' | 
+  'exchange-alt' | 
+  'exclamation' | 
+  'exclamation-circle' | 
+  'exclamation-square' | 
+  'exclamation-triangle' | 
+  'expand' | 
+  'expand-alt' | 
+  'expand-arrows' | 
+  'expand-arrows-alt' | 
+  'expand-wide' | 
+  'external-link' | 
+  'external-link-alt' | 
+  'external-link-square' | 
+  'external-link-square-alt' | 
+  'eye' | 
+  'eye-dropper' | 
+  'eye-evil' | 
+  'eye-slash' | 
+  'fan' | 
+  'fan-table' | 
+  'farm' | 
+  'fast-backward' | 
+  'fast-forward' | 
+  'faucet' | 
+  'faucet-drip' | 
+  'fax' | 
+  'feather' | 
+  'feather-alt' | 
+  'female' | 
+  'field-hockey' | 
+  'fighter-jet' | 
+  'file' | 
+  'file-alt' | 
+  'file-archive' | 
+  'file-audio' | 
+  'file-certificate' | 
+  'file-chart-line' | 
+  'file-chart-pie' | 
+  'file-check' | 
+  'file-code' | 
+  'file-contract' | 
+  'file-csv' | 
+  'file-download' | 
+  'file-edit' | 
+  'file-excel' | 
+  'file-exclamation' | 
+  'file-export' | 
+  'file-image' | 
+  'file-import' | 
+  'file-invoice' | 
+  'file-invoice-dollar' | 
+  'file-medical' | 
+  'file-medical-alt' | 
+  'file-minus' | 
+  'file-music' | 
+  'file-pdf' | 
+  'file-plus' | 
+  'file-powerpoint' | 
+  'file-prescription' | 
+  'file-search' | 
+  'file-signature' | 
+  'file-spreadsheet' | 
+  'file-times' | 
+  'file-upload' | 
+  'file-user' | 
+  'file-video' | 
+  'file-word' | 
+  'files-medical' | 
+  'fill' | 
+  'fill-drip' | 
+  'film' | 
+  'film-alt' | 
+  'film-canister' | 
+  'filter' | 
+  'fingerprint' | 
+  'fire' | 
+  'fire-alt' | 
+  'fire-extinguisher' | 
+  'fire-smoke' | 
+  'fireplace' | 
+  'first-aid' | 
+  'fish' | 
+  'fish-cooked' | 
+  'fist-raised' | 
+  'flag' | 
+  'flag-alt' | 
+  'flag-checkered' | 
+  'flag-usa' | 
+  'flame' | 
+  'flashlight' | 
+  'flask' | 
+  'flask-poison' | 
+  'flask-potion' | 
+  'flower' | 
+  'flower-daffodil' | 
+  'flower-tulip' | 
+  'flushed' | 
+  'flute' | 
+  'flux-capacitor' | 
+  'fog' | 
+  'folder' | 
+  'folder-download' | 
+  'folder-minus' | 
+  'folder-open' | 
+  'folder-plus' | 
+  'folder-times' | 
+  'folder-tree' | 
+  'folder-upload' | 
+  'folders' | 
+  'font' | 
+  'font-awesome-logo-full' | 
+  'font-case' | 
+  'football-ball' | 
+  'football-helmet' | 
+  'forklift' | 
+  'forward' | 
+  'fragile' | 
+  'french-fries' | 
+  'frog' | 
+  'frosty-head' | 
+  'frown' | 
+  'frown-open' | 
+  'function' | 
+  'funnel-dollar' | 
+  'futbol' | 
+  'galaxy' | 
+  'game-board' | 
+  'game-board-alt' | 
+  'game-console-handheld' | 
+  'gamepad' | 
+  'gamepad-alt' | 
+  'garage' | 
+  'garage-car' | 
+  'garage-open' | 
+  'gas-pump' | 
+  'gas-pump-slash' | 
+  'gavel' | 
+  'gem' | 
+  'genderless' | 
+  'ghost' | 
+  'gift' | 
+  'gift-card' | 
+  'gifts' | 
+  'gingerbread-man' | 
+  'glass' | 
+  'glass-champagne' | 
+  'glass-cheers' | 
+  'glass-citrus' | 
+  'glass-martini' | 
+  'glass-martini-alt' | 
+  'glass-whiskey' | 
+  'glass-whiskey-rocks' | 
+  'glasses' | 
+  'glasses-alt' | 
+  'globe' | 
+  'globe-africa' | 
+  'globe-americas' | 
+  'globe-asia' | 
+  'globe-europe' | 
+  'globe-snow' | 
+  'globe-stand' | 
+  'golf-ball' | 
+  'golf-club' | 
+  'gopuram' | 
+  'graduation-cap' | 
+  'gramophone' | 
+  'greater-than' | 
+  'greater-than-equal' | 
+  'grimace' | 
+  'grin' | 
+  'grin-alt' | 
+  'grin-beam' | 
+  'grin-beam-sweat' | 
+  'grin-hearts' | 
+  'grin-squint' | 
+  'grin-squint-tears' | 
+  'grin-stars' | 
+  'grin-tears' | 
+  'grin-tongue' | 
+  'grin-tongue-squint' | 
+  'grin-tongue-wink' | 
+  'grin-wink' | 
+  'grip-horizontal' | 
+  'grip-lines' | 
+  'grip-lines-vertical' | 
+  'grip-vertical' | 
+  'guitar' | 
+  'guitar-electric' | 
+  'guitars' | 
+  'h-square' | 
+  'h1' | 
+  'h2' | 
+  'h3' | 
+  'h4' | 
+  'hamburger' | 
+  'hammer' | 
+  'hammer-war' | 
+  'hamsa' | 
+  'hand-heart' | 
+  'hand-holding' | 
+  'hand-holding-box' | 
+  'hand-holding-heart' | 
+  'hand-holding-magic' | 
+  'hand-holding-medical' | 
+  'hand-holding-seedling' | 
+  'hand-holding-usd' | 
+  'hand-holding-water' | 
+  'hand-lizard' | 
+  'hand-middle-finger' | 
+  'hand-paper' | 
+  'hand-peace' | 
+  'hand-point-down' | 
+  'hand-point-left' | 
+  'hand-point-right' | 
+  'hand-point-up' | 
+  'hand-pointer' | 
+  'hand-receiving' | 
+  'hand-rock' | 
+  'hand-scissors' | 
+  'hand-sparkles' | 
+  'hand-spock' | 
+  'hands' | 
+  'hands-heart' | 
+  'hands-helping' | 
+  'hands-usd' | 
+  'hands-wash' | 
+  'handshake' | 
+  'handshake-alt' | 
+  'handshake-alt-slash' | 
+  'handshake-slash' | 
+  'hanukiah' | 
+  'hard-hat' | 
+  'hashtag' | 
+  'hat-chef' | 
+  'hat-cowboy' | 
+  'hat-cowboy-side' | 
+  'hat-santa' | 
+  'hat-winter' | 
+  'hat-witch' | 
+  'hat-wizard' | 
+  'hdd' | 
+  'head-side' | 
+  'head-side-brain' | 
+  'head-side-cough' | 
+  'head-side-cough-slash' | 
+  'head-side-headphones' | 
+  'head-side-mask' | 
+  'head-side-medical' | 
+  'head-side-virus' | 
+  'head-vr' | 
+  'heading' | 
+  'headphones' | 
+  'headphones-alt' | 
+  'headset' | 
+  'heart' | 
+  'heart-broken' | 
+  'heart-circle' | 
+  'heart-rate' | 
+  'heart-square' | 
+  'heartbeat' | 
+  'heat' | 
+  'helicopter' | 
+  'helmet-battle' | 
+  'hexagon' | 
+  'highlighter' | 
+  'hiking' | 
+  'hippo' | 
+  'history' | 
+  'hockey-mask' | 
+  'hockey-puck' | 
+  'hockey-sticks' | 
+  'holly-berry' | 
+  'home' | 
+  'home-alt' | 
+  'home-heart' | 
+  'home-lg' | 
+  'home-lg-alt' | 
+  'hood-cloak' | 
+  'horizontal-rule' | 
+  'horse' | 
+  'horse-head' | 
+  'horse-saddle' | 
+  'hospital' | 
+  'hospital-alt' | 
+  'hospital-symbol' | 
+  'hospital-user' | 
+  'hospitals' | 
+  'hot-tub' | 
+  'hotdog' | 
+  'hotel' | 
+  'hourglass' | 
+  'hourglass-end' | 
+  'hourglass-half' | 
+  'hourglass-start' | 
+  'house' | 
+  'house-damage' | 
+  'house-day' | 
+  'house-flood' | 
+  'house-leave' | 
+  'house-night' | 
+  'house-return' | 
+  'house-signal' | 
+  'house-user' | 
+  'hryvnia' | 
+  'humidity' | 
+  'hurricane' | 
+  'i-cursor' | 
+  'ice-cream' | 
+  'ice-skate' | 
+  'icicles' | 
+  'icons' | 
+  'icons-alt' | 
+  'id-badge' | 
+  'id-card' | 
+  'id-card-alt' | 
+  'igloo' | 
+  'image' | 
+  'image-polaroid' | 
+  'images' | 
+  'inbox' | 
+  'inbox-in' | 
+  'inbox-out' | 
+  'indent' | 
+  'industry' | 
+  'industry-alt' | 
+  'infinity' | 
+  'info' | 
+  'info-circle' | 
+  'info-square' | 
+  'inhaler' | 
+  'integral' | 
+  'intersection' | 
+  'inventory' | 
+  'island-tropical' | 
+  'italic' | 
+  'jack-o-lantern' | 
+  'jedi' | 
+  'joint' | 
+  'journal-whills' | 
+  'joystick' | 
+  'jug' | 
+  'kaaba' | 
+  'kazoo' | 
+  'kerning' | 
+  'key' | 
+  'key-skeleton' | 
+  'keyboard' | 
+  'keynote' | 
+  'khanda' | 
+  'kidneys' | 
+  'kiss' | 
+  'kiss-beam' | 
+  'kiss-wink-heart' | 
+  'kite' | 
+  'kiwi-bird' | 
+  'knife-kitchen' | 
+  'lambda' | 
+  'lamp' | 
+  'lamp-desk' | 
+  'lamp-floor' | 
+  'landmark' | 
+  'landmark-alt' | 
+  'language' | 
+  'laptop' | 
+  'laptop-code' | 
+  'laptop-house' | 
+  'laptop-medical' | 
+  'lasso' | 
+  'laugh' | 
+  'laugh-beam' | 
+  'laugh-squint' | 
+  'laugh-wink' | 
+  'layer-group' | 
+  'layer-minus' | 
+  'layer-plus' | 
+  'leaf' | 
+  'leaf-heart' | 
+  'leaf-maple' | 
+  'leaf-oak' | 
+  'lemon' | 
+  'less-than' | 
+  'less-than-equal' | 
+  'level-down' | 
+  'level-down-alt' | 
+  'level-up' | 
+  'level-up-alt' | 
+  'life-ring' | 
+  'light-ceiling' | 
+  'light-switch' | 
+  'light-switch-off' | 
+  'light-switch-on' | 
+  'lightbulb' | 
+  'lightbulb-dollar' | 
+  'lightbulb-exclamation' | 
+  'lightbulb-on' | 
+  'lightbulb-slash' | 
+  'lights-holiday' | 
+  'line-columns' | 
+  'line-height' | 
+  'link' | 
+  'lips' | 
+  'lira-sign' | 
+  'list' | 
+  'list-alt' | 
+  'list-music' | 
+  'list-ol' | 
+  'list-ul' | 
+  'location' | 
+  'location-arrow' | 
+  'location-circle' | 
+  'location-slash' | 
+  'lock' | 
+  'lock-alt' | 
+  'lock-open' | 
+  'lock-open-alt' | 
+  'long-arrow-alt-down' | 
+  'long-arrow-alt-left' | 
+  'long-arrow-alt-right' | 
+  'long-arrow-alt-up' | 
+  'long-arrow-down' | 
+  'long-arrow-left' | 
+  'long-arrow-right' | 
+  'long-arrow-up' | 
+  'loveseat' | 
+  'low-vision' | 
+  'luchador' | 
+  'luggage-cart' | 
+  'lungs' | 
+  'lungs-virus' | 
+  'mace' | 
+  'magic' | 
+  'magnet' | 
+  'mail-bulk' | 
+  'mailbox' | 
+  'male' | 
+  'mandolin' | 
+  'map' | 
+  'map-marked' | 
+  'map-marked-alt' | 
+  'map-marker' | 
+  'map-marker-alt' | 
+  'map-marker-alt-slash' | 
+  'map-marker-check' | 
+  'map-marker-edit' | 
+  'map-marker-exclamation' | 
+  'map-marker-minus' | 
+  'map-marker-plus' | 
+  'map-marker-question' | 
+  'map-marker-slash' | 
+  'map-marker-smile' | 
+  'map-marker-times' | 
+  'map-pin' | 
+  'map-signs' | 
+  'marker' | 
+  'mars' | 
+  'mars-double' | 
+  'mars-stroke' | 
+  'mars-stroke-h' | 
+  'mars-stroke-v' | 
+  'mask' | 
+  'meat' | 
+  'medal' | 
+  'medkit' | 
+  'megaphone' | 
+  'meh' | 
+  'meh-blank' | 
+  'meh-rolling-eyes' | 
+  'memory' | 
+  'menorah' | 
+  'mercury' | 
+  'meteor' | 
+  'microchip' | 
+  'microphone' | 
+  'microphone-alt' | 
+  'microphone-alt-slash' | 
+  'microphone-slash' | 
+  'microphone-stand' | 
+  'microscope' | 
+  'microwave' | 
+  'mind-share' | 
+  'minus' | 
+  'minus-circle' | 
+  'minus-hexagon' | 
+  'minus-octagon' | 
+  'minus-square' | 
+  'mistletoe' | 
+  'mitten' | 
+  'mobile' | 
+  'mobile-alt' | 
+  'mobile-android' | 
+  'mobile-android-alt' | 
+  'money-bill' | 
+  'money-bill-alt' | 
+  'money-bill-wave' | 
+  'money-bill-wave-alt' | 
+  'money-check' | 
+  'money-check-alt' | 
+  'money-check-edit' | 
+  'money-check-edit-alt' | 
+  'monitor-heart-rate' | 
+  'monkey' | 
+  'monument' | 
+  'moon' | 
+  'moon-cloud' | 
+  'moon-stars' | 
+  'mortar-pestle' | 
+  'mosque' | 
+  'motorcycle' | 
+  'mountain' | 
+  'mountains' | 
+  'mouse' | 
+  'mouse-alt' | 
+  'mouse-pointer' | 
+  'mp3-player' | 
+  'mug' | 
+  'mug-hot' | 
+  'mug-marshmallows' | 
+  'mug-tea' | 
+  'music' | 
+  'music-alt' | 
+  'music-alt-slash' | 
+  'music-slash' | 
+  'narwhal' | 
+  'network-wired' | 
+  'neuter' | 
+  'newspaper' | 
+  'not-equal' | 
+  'notes-medical' | 
+  'object-group' | 
+  'object-ungroup' | 
+  'octagon' | 
+  'oil-can' | 
+  'oil-temp' | 
+  'om' | 
+  'omega' | 
+  'ornament' | 
+  'otter' | 
+  'outdent' | 
+  'outlet' | 
+  'oven' | 
+  'overline' | 
+  'page-break' | 
+  'pager' | 
+  'paint-brush' | 
+  'paint-brush-alt' | 
+  'paint-roller' | 
+  'palette' | 
+  'pallet' | 
+  'pallet-alt' | 
+  'paper-plane' | 
+  'paperclip' | 
+  'parachute-box' | 
+  'paragraph' | 
+  'paragraph-rtl' | 
+  'parking' | 
+  'parking-circle' | 
+  'parking-circle-slash' | 
+  'parking-slash' | 
+  'passport' | 
+  'pastafarianism' | 
+  'paste' | 
+  'pause' | 
+  'pause-circle' | 
+  'paw' | 
+  'paw-alt' | 
+  'paw-claws' | 
+  'peace' | 
+  'pegasus' | 
+  'pen' | 
+  'pen-alt' | 
+  'pen-fancy' | 
+  'pen-nib' | 
+  'pen-square' | 
+  'pencil' | 
+  'pencil-alt' | 
+  'pencil-paintbrush' | 
+  'pencil-ruler' | 
+  'pennant' | 
+  'people-arrows' | 
+  'people-carry' | 
+  'pepper-hot' | 
+  'percent' | 
+  'percentage' | 
+  'person-booth' | 
+  'person-carry' | 
+  'person-dolly' | 
+  'person-dolly-empty' | 
+  'person-sign' | 
+  'phone' | 
+  'phone-alt' | 
+  'phone-laptop' | 
+  'phone-office' | 
+  'phone-plus' | 
+  'phone-rotary' | 
+  'phone-slash' | 
+  'phone-square' | 
+  'phone-square-alt' | 
+  'phone-volume' | 
+  'photo-video' | 
+  'pi' | 
+  'piano' | 
+  'piano-keyboard' | 
+  'pie' | 
+  'pig' | 
+  'piggy-bank' | 
+  'pills' | 
+  'pizza' | 
+  'pizza-slice' | 
+  'place-of-worship' | 
+  'plane' | 
+  'plane-alt' | 
+  'plane-arrival' | 
+  'plane-departure' | 
+  'plane-slash' | 
+  'planet-moon' | 
+  'planet-ringed' | 
+  'play' | 
+  'play-circle' | 
+  'plug' | 
+  'plus' | 
+  'plus-circle' | 
+  'plus-hexagon' | 
+  'plus-octagon' | 
+  'plus-square' | 
+  'podcast' | 
+  'podium' | 
+  'podium-star' | 
+  'police-box' | 
+  'poll' | 
+  'poll-h' | 
+  'poll-people' | 
+  'poo' | 
+  'poo-storm' | 
+  'poop' | 
+  'popcorn' | 
+  'portal-enter' | 
+  'portal-exit' | 
+  'portrait' | 
+  'pound-sign' | 
+  'power-off' | 
+  'pray' | 
+  'praying-hands' | 
+  'prescription' | 
+  'prescription-bottle' | 
+  'prescription-bottle-alt' | 
+  'presentation' | 
+  'print' | 
+  'print-search' | 
+  'print-slash' | 
+  'procedures' | 
+  'project-diagram' | 
+  'projector' | 
+  'pump-medical' | 
+  'pump-soap' | 
+  'pumpkin' | 
+  'puzzle-piece' | 
+  'qrcode' | 
+  'question' | 
+  'question-circle' | 
+  'question-square' | 
+  'quidditch' | 
+  'quote-left' | 
+  'quote-right' | 
+  'quran' | 
+  'rabbit' | 
+  'rabbit-fast' | 
+  'racquet' | 
+  'radar' | 
+  'radiation' | 
+  'radiation-alt' | 
+  'radio' | 
+  'radio-alt' | 
+  'rainbow' | 
+  'raindrops' | 
+  'ram' | 
+  'ramp-loading' | 
+  'random' | 
+  'raygun' | 
+  'receipt' | 
+  'record-vinyl' | 
+  'rectangle-landscape' | 
+  'rectangle-portrait' | 
+  'rectangle-wide' | 
+  'recycle' | 
+  'redo' | 
+  'redo-alt' | 
+  'refrigerator' | 
+  'registered' | 
+  'remove-format' | 
+  'repeat' | 
+  'repeat-1' | 
+  'repeat-1-alt' | 
+  'repeat-alt' | 
+  'reply' | 
+  'reply-all' | 
+  'republican' | 
+  'restroom' | 
+  'retweet' | 
+  'retweet-alt' | 
+  'ribbon' | 
+  'ring' | 
+  'rings-wedding' | 
+  'road' | 
+  'robot' | 
+  'rocket' | 
+  'rocket-launch' | 
+  'route' | 
+  'route-highway' | 
+  'route-interstate' | 
+  'router' | 
+  'rss' | 
+  'rss-square' | 
+  'ruble-sign' | 
+  'ruler' | 
+  'ruler-combined' | 
+  'ruler-horizontal' | 
+  'ruler-triangle' | 
+  'ruler-vertical' | 
+  'running' | 
+  'rupee-sign' | 
+  'rv' | 
+  'sack' | 
+  'sack-dollar' | 
+  'sad-cry' | 
+  'sad-tear' | 
+  'salad' | 
+  'sandwich' | 
+  'satellite' | 
+  'satellite-dish' | 
+  'sausage' | 
+  'save' | 
+  'sax-hot' | 
+  'saxophone' | 
+  'scalpel' | 
+  'scalpel-path' | 
+  'scanner' | 
+  'scanner-image' | 
+  'scanner-keyboard' | 
+  'scanner-touchscreen' | 
+  'scarecrow' | 
+  'scarf' | 
+  'school' | 
+  'screwdriver' | 
+  'scroll' | 
+  'scroll-old' | 
+  'scrubber' | 
+  'scythe' | 
+  'sd-card' | 
+  'search' | 
+  'search-dollar' | 
+  'search-location' | 
+  'search-minus' | 
+  'search-plus' | 
+  'seedling' | 
+  'send-back' | 
+  'send-backward' | 
+  'sensor' | 
+  'sensor-alert' | 
+  'sensor-fire' | 
+  'sensor-on' | 
+  'sensor-smoke' | 
+  'server' | 
+  'shapes' | 
+  'share' | 
+  'share-all' | 
+  'share-alt' | 
+  'share-alt-square' | 
+  'share-square' | 
+  'sheep' | 
+  'shekel-sign' | 
+  'shield' | 
+  'shield-alt' | 
+  'shield-check' | 
+  'shield-cross' | 
+  'shield-virus' | 
+  'ship' | 
+  'shipping-fast' | 
+  'shipping-timed' | 
+  'shish-kebab' | 
+  'shoe-prints' | 
+  'shopping-bag' | 
+  'shopping-basket' | 
+  'shopping-cart' | 
+  'shovel' | 
+  'shovel-snow' | 
+  'shower' | 
+  'shredder' | 
+  'shuttle-van' | 
+  'shuttlecock' | 
+  'sickle' | 
+  'sigma' | 
+  'sign' | 
+  'sign-in' | 
+  'sign-in-alt' | 
+  'sign-language' | 
+  'sign-out' | 
+  'sign-out-alt' | 
+  'signal' | 
+  'signal-1' | 
+  'signal-2' | 
+  'signal-3' | 
+  'signal-4' | 
+  'signal-alt' | 
+  'signal-alt-1' | 
+  'signal-alt-2' | 
+  'signal-alt-3' | 
+  'signal-alt-slash' | 
+  'signal-slash' | 
+  'signal-stream' | 
+  'signature' | 
+  'sim-card' | 
+  'sink' | 
+  'siren' | 
+  'siren-on' | 
+  'sitemap' | 
+  'skating' | 
+  'skeleton' | 
+  'ski-jump' | 
+  'ski-lift' | 
+  'skiing' | 
+  'skiing-nordic' | 
+  'skull' | 
+  'skull-cow' | 
+  'skull-crossbones' | 
+  'slash' | 
+  'sledding' | 
+  'sleigh' | 
+  'sliders-h' | 
+  'sliders-h-square' | 
+  'sliders-v' | 
+  'sliders-v-square' | 
+  'smile' | 
+  'smile-beam' | 
+  'smile-plus' | 
+  'smile-wink' | 
+  'smog' | 
+  'smoke' | 
+  'smoking' | 
+  'smoking-ban' | 
+  'sms' | 
+  'snake' | 
+  'snooze' | 
+  'snow-blowing' | 
+  'snowboarding' | 
+  'snowflake' | 
+  'snowflakes' | 
+  'snowman' | 
+  'snowmobile' | 
+  'snowplow' | 
+  'soap' | 
+  'socks' | 
+  'solar-panel' | 
+  'solar-system' | 
+  'sort' | 
+  'sort-alpha-down' | 
+  'sort-alpha-down-alt' | 
+  'sort-alpha-up' | 
+  'sort-alpha-up-alt' | 
+  'sort-alt' | 
+  'sort-amount-down' | 
+  'sort-amount-down-alt' | 
+  'sort-amount-up' | 
+  'sort-amount-up-alt' | 
+  'sort-circle' | 
+  'sort-circle-down' | 
+  'sort-circle-up' | 
+  'sort-down' | 
+  'sort-numeric-down' | 
+  'sort-numeric-down-alt' | 
+  'sort-numeric-up' | 
+  'sort-numeric-up-alt' | 
+  'sort-shapes-down' | 
+  'sort-shapes-down-alt' | 
+  'sort-shapes-up' | 
+  'sort-shapes-up-alt' | 
+  'sort-size-down' | 
+  'sort-size-down-alt' | 
+  'sort-size-up' | 
+  'sort-size-up-alt' | 
+  'sort-up' | 
+  'soup' | 
+  'spa' | 
+  'space-shuttle' | 
+  'space-station-moon' | 
+  'space-station-moon-alt' | 
+  'spade' | 
+  'sparkles' | 
+  'speaker' | 
+  'speakers' | 
+  'spell-check' | 
+  'spider' | 
+  'spider-black-widow' | 
+  'spider-web' | 
+  'spinner' | 
+  'spinner-third' | 
+  'splotch' | 
+  'spray-can' | 
+  'sprinkler' | 
+  'square' | 
+  'square-full' | 
+  'square-root' | 
+  'square-root-alt' | 
+  'squirrel' | 
+  'staff' | 
+  'stamp' | 
+  'star' | 
+  'star-and-crescent' | 
+  'star-christmas' | 
+  'star-exclamation' | 
+  'star-half' | 
+  'star-half-alt' | 
+  'star-of-david' | 
+  'star-of-life' | 
+  'star-shooting' | 
+  'starfighter' | 
+  'starfighter-alt' | 
+  'stars' | 
+  'starship' | 
+  'starship-freighter' | 
+  'steak' | 
+  'steering-wheel' | 
+  'step-backward' | 
+  'step-forward' | 
+  'stethoscope' | 
+  'sticky-note' | 
+  'stocking' | 
+  'stomach' | 
+  'stop' | 
+  'stop-circle' | 
+  'stopwatch' | 
+  'stopwatch-20' | 
+  'store' | 
+  'store-alt' | 
+  'store-alt-slash' | 
+  'store-slash' | 
+  'stream' | 
+  'street-view' | 
+  'stretcher' | 
+  'strikethrough' | 
+  'stroopwafel' | 
+  'subscript' | 
+  'subway' | 
+  'suitcase' | 
+  'suitcase-rolling' | 
+  'sun' | 
+  'sun-cloud' | 
+  'sun-dust' | 
+  'sun-haze' | 
+  'sunglasses' | 
+  'sunrise' | 
+  'sunset' | 
+  'superscript' | 
+  'surprise' | 
+  'swatchbook' | 
+  'swimmer' | 
+  'swimming-pool' | 
+  'sword' | 
+  'sword-laser' | 
+  'sword-laser-alt' | 
+  'swords' | 
+  'swords-laser' | 
+  'synagogue' | 
+  'sync' | 
+  'sync-alt' | 
+  'syringe' | 
+  'table' | 
+  'table-tennis' | 
+  'tablet' | 
+  'tablet-alt' | 
+  'tablet-android' | 
+  'tablet-android-alt' | 
+  'tablet-rugged' | 
+  'tablets' | 
+  'tachometer' | 
+  'tachometer-alt' | 
+  'tachometer-alt-average' | 
+  'tachometer-alt-fast' | 
+  'tachometer-alt-fastest' | 
+  'tachometer-alt-slow' | 
+  'tachometer-alt-slowest' | 
+  'tachometer-average' | 
+  'tachometer-fast' | 
+  'tachometer-fastest' | 
+  'tachometer-slow' | 
+  'tachometer-slowest' | 
+  'taco' | 
+  'tag' | 
+  'tags' | 
+  'tally' | 
+  'tanakh' | 
+  'tape' | 
+  'tasks' | 
+  'tasks-alt' | 
+  'taxi' | 
+  'teeth' | 
+  'teeth-open' | 
+  'telescope' | 
+  'temperature-down' | 
+  'temperature-frigid' | 
+  'temperature-high' | 
+  'temperature-hot' | 
+  'temperature-low' | 
+  'temperature-up' | 
+  'tenge' | 
+  'tennis-ball' | 
+  'terminal' | 
+  'text' | 
+  'text-height' | 
+  'text-size' | 
+  'text-width' | 
+  'th' | 
+  'th-large' | 
+  'th-list' | 
+  'theater-masks' | 
+  'thermometer' | 
+  'thermometer-empty' | 
+  'thermometer-full' | 
+  'thermometer-half' | 
+  'thermometer-quarter' | 
+  'thermometer-three-quarters' | 
+  'theta' | 
+  'thumbs-down' | 
+  'thumbs-up' | 
+  'thumbtack' | 
+  'thunderstorm' | 
+  'thunderstorm-moon' | 
+  'thunderstorm-sun' | 
+  'ticket' | 
+  'ticket-alt' | 
+  'tilde' | 
+  'times' | 
+  'times-circle' | 
+  'times-hexagon' | 
+  'times-octagon' | 
+  'times-square' | 
+  'tint' | 
+  'tint-slash' | 
+  'tire' | 
+  'tire-flat' | 
+  'tire-pressure-warning' | 
+  'tire-rugged' | 
+  'tired' | 
+  'toggle-off' | 
+  'toggle-on' | 
+  'toilet' | 
+  'toilet-paper' | 
+  'toilet-paper-alt' | 
+  'toilet-paper-slash' | 
+  'tombstone' | 
+  'tombstone-alt' | 
+  'toolbox' | 
+  'tools' | 
+  'tooth' | 
+  'toothbrush' | 
+  'torah' | 
+  'torii-gate' | 
+  'tornado' | 
+  'tractor' | 
+  'trademark' | 
+  'traffic-cone' | 
+  'traffic-light' | 
+  'traffic-light-go' | 
+  'traffic-light-slow' | 
+  'traffic-light-stop' | 
+  'trailer' | 
+  'train' | 
+  'tram' | 
+  'transgender' | 
+  'transgender-alt' | 
+  'transporter' | 
+  'transporter-1' | 
+  'transporter-2' | 
+  'transporter-3' | 
+  'transporter-empty' | 
+  'trash' | 
+  'trash-alt' | 
+  'trash-restore' | 
+  'trash-restore-alt' | 
+  'trash-undo' | 
+  'trash-undo-alt' | 
+  'treasure-chest' | 
+  'tree' | 
+  'tree-alt' | 
+  'tree-christmas' | 
+  'tree-decorated' | 
+  'tree-large' | 
+  'tree-palm' | 
+  'trees' | 
+  'triangle' | 
+  'triangle-music' | 
+  'trophy' | 
+  'trophy-alt' | 
+  'truck' | 
+  'truck-container' | 
+  'truck-couch' | 
+  'truck-loading' | 
+  'truck-monster' | 
+  'truck-moving' | 
+  'truck-pickup' | 
+  'truck-plow' | 
+  'truck-ramp' | 
+  'trumpet' | 
+  'tshirt' | 
+  'tty' | 
+  'turkey' | 
+  'turntable' | 
+  'turtle' | 
+  'tv' | 
+  'tv-alt' | 
+  'tv-music' | 
+  'tv-retro' | 
+  'typewriter' | 
+  'ufo' | 
+  'ufo-beam' | 
+  'umbrella' | 
+  'umbrella-beach' | 
+  'underline' | 
+  'undo' | 
+  'undo-alt' | 
+  'unicorn' | 
+  'union' | 
+  'universal-access' | 
+  'university' | 
+  'unlink' | 
+  'unlock' | 
+  'unlock-alt' | 
+  'upload' | 
+  'usb-drive' | 
+  'usd-circle' | 
+  'usd-square' | 
+  'user' | 
+  'user-alien' | 
+  'user-alt' | 
+  'user-alt-slash' | 
+  'user-astronaut' | 
+  'user-chart' | 
+  'user-check' | 
+  'user-circle' | 
+  'user-clock' | 
+  'user-cog' | 
+  'user-cowboy' | 
+  'user-crown' | 
+  'user-edit' | 
+  'user-friends' | 
+  'user-graduate' | 
+  'user-hard-hat' | 
+  'user-headset' | 
+  'user-injured' | 
+  'user-lock' | 
+  'user-md' | 
+  'user-md-chat' | 
+  'user-minus' | 
+  'user-music' | 
+  'user-ninja' | 
+  'user-nurse' | 
+  'user-plus' | 
+  'user-robot' | 
+  'user-secret' | 
+  'user-shield' | 
+  'user-slash' | 
+  'user-tag' | 
+  'user-tie' | 
+  'user-times' | 
+  'user-unlock' | 
+  'user-visor' | 
+  'users' | 
+  'users-class' | 
+  'users-cog' | 
+  'users-crown' | 
+  'users-medical' | 
+  'users-slash' | 
+  'utensil-fork' | 
+  'utensil-knife' | 
+  'utensil-spoon' | 
+  'utensils' | 
+  'utensils-alt' | 
+  'vacuum' | 
+  'vacuum-robot' | 
+  'value-absolute' | 
+  'vector-square' | 
+  'venus' | 
+  'venus-double' | 
+  'venus-mars' | 
+  'vest' | 
+  'vest-patches' | 
+  'vhs' | 
+  'vial' | 
+  'vials' | 
+  'video' | 
+  'video-plus' | 
+  'video-slash' | 
+  'vihara' | 
+  'violin' | 
+  'virus' | 
+  'virus-slash' | 
+  'viruses' | 
+  'voicemail' | 
+  'volcano' | 
+  'volleyball-ball' | 
+  'volume' | 
+  'volume-down' | 
+  'volume-mute' | 
+  'volume-off' | 
+  'volume-slash' | 
+  'volume-up' | 
+  'vote-nay' | 
+  'vote-yea' | 
+  'vr-cardboard' | 
+  'wagon-covered' | 
+  'walker' | 
+  'walkie-talkie' | 
+  'walking' | 
+  'wallet' | 
+  'wand' | 
+  'wand-magic' | 
+  'warehouse' | 
+  'warehouse-alt' | 
+  'washer' | 
+  'watch' | 
+  'watch-calculator' | 
+  'watch-fitness' | 
+  'water' | 
+  'water-lower' | 
+  'water-rise' | 
+  'wave-sine' | 
+  'wave-square' | 
+  'wave-triangle' | 
+  'waveform' | 
+  'waveform-path' | 
+  'webcam' | 
+  'webcam-slash' | 
+  'weight' | 
+  'weight-hanging' | 
+  'whale' | 
+  'wheat' | 
+  'wheelchair' | 
+  'whistle' | 
+  'wifi' | 
+  'wifi-1' | 
+  'wifi-2' | 
+  'wifi-slash' | 
+  'wind' | 
+  'wind-turbine' | 
+  'wind-warning' | 
+  'window' | 
+  'window-alt' | 
+  'window-close' | 
+  'window-frame' | 
+  'window-frame-open' | 
+  'window-maximize' | 
+  'window-minimize' | 
+  'window-restore' | 
+  'windsock' | 
+  'wine-bottle' | 
+  'wine-glass' | 
+  'wine-glass-alt' | 
+  'won-sign' | 
+  'wreath' | 
+  'wrench' | 
+  'x-ray' | 
+  'yen-sign' | 
+  'yin-yang';
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/package.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-common-types/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,84 @@
+{
+  "_from": "@fortawesome/fontawesome-common-types@^0.2.36",
+  "_id": "@fortawesome/fontawesome-common-types@0.2.36",
+  "_inBundle": false,
+  "_integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
+  "_location": "/@fortawesome/fontawesome-common-types",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@fortawesome/fontawesome-common-types@^0.2.36",
+    "name": "@fortawesome/fontawesome-common-types",
+    "escapedName": "@fortawesome%2ffontawesome-common-types",
+    "scope": "@fortawesome",
+    "rawSpec": "^0.2.36",
+    "saveSpec": null,
+    "fetchSpec": "^0.2.36"
+  },
+  "_requiredBy": [
+    "/@fortawesome/fontawesome-svg-core",
+    "/@fortawesome/free-solid-svg-icons"
+  ],
+  "_resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+  "_shasum": "b44e52db3b6b20523e0c57ef8c42d315532cb903",
+  "_spec": "@fortawesome/fontawesome-common-types@^0.2.36",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front\\node_modules\\@fortawesome\\fontawesome-svg-core",
+  "author": {
+    "name": "Dave Gandy",
+    "email": "dave@fontawesome.com",
+    "url": "http://twitter.com/davegandy"
+  },
+  "bugs": {
+    "url": "http://github.com/FortAwesome/Font-Awesome/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Brian Talbot",
+      "url": "http://twitter.com/talbs"
+    },
+    {
+      "name": "Travis Chase",
+      "url": "http://twitter.com/supercodepoet"
+    },
+    {
+      "name": "Rob Madole",
+      "url": "http://twitter.com/robmadole"
+    },
+    {
+      "name": "Geremia Taglialatela",
+      "url": "http://twitter.com/gtagliala"
+    },
+    {
+      "name": "Mike Wilkerson",
+      "url": "http://twitter.com/mw77"
+    }
+  ],
+  "dependencies": {},
+  "deprecated": false,
+  "description": "The iconic font, CSS, and SVG framework",
+  "engines": {
+    "node": ">=6"
+  },
+  "homepage": "https://fontawesome.com",
+  "keywords": [
+    "font",
+    "awesome",
+    "fontawesome",
+    "icon",
+    "svg",
+    "bootstrap"
+  ],
+  "license": "MIT",
+  "name": "@fortawesome/fontawesome-common-types",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/FortAwesome/Font-Awesome.git"
+  },
+  "scripts": {
+    "postinstall": "node attribution.js"
+  },
+  "types": "./index.d.ts",
+  "version": "0.2.36"
+}
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/LICENSE.txt
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,34 @@
+Font Awesome Free License
+-------------------------
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license/free.
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
+packaged as SVG and JS file types.
+
+# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
+In the Font Awesome Free download, the SIL OFL license applies to all icons
+packaged as web and desktop font files.
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+# Attribution
+Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to
+learn about Font Awesome.
+
+# Brand Icons
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/README.md
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+# @fortawesome/fontawesome-svg-core - SVG with JavaScript version
+
+> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
+
+[![npm](https://img.shields.io/npm/v/@fortawesome/fontawesome-svg-core.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/fontawesome-svg-core)
+
+## Installation
+
+```
+$ npm i --save @fortawesome/fontawesome-svg-core
+```
+
+Or
+
+```
+$ yarn add @fortawesome/fontawesome-svg-core
+```
+
+## Documentation
+
+Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
+
+Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
+
+## Issues and support
+
+Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/attribution.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+console.log(`Font Awesome Free 1.2.36 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+`)
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,119 @@
+import {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types';
+export {IconDefinition, IconLookup, IconName, IconPrefix, IconPathData, IconPack } from '@fortawesome/fontawesome-common-types';
+export const dom: DOM;
+export const library: Library;
+export const parse: { transform(transformString: string): Transform };
+export const config: Config;
+export function noAuto():void;
+export function findIconDefinition(iconLookup: IconLookup): IconDefinition;
+export function text(content: string, params?: TextParams): Text;
+export function counter(content: string | number, params?: CounterParams): Counter;
+export function toHtml(content: any): string;
+export function toHtml(abstractNodes: AbstractElement): string;
+export function layer(
+  assembler: (
+    addLayerCallback: (layerToAdd: IconOrText | IconOrText[]) => void
+  ) => void,
+  params?: LayerParams
+): Layer;
+export function icon(icon: IconName | IconLookup, params?: IconParams): Icon;
+export type IconProp = IconName | [IconPrefix, IconName] | IconLookup;
+export type FlipProp = "horizontal" | "vertical" | "both";
+export type SizeProp =
+  | "xs"
+  | "lg"
+  | "sm"
+  | "1x"
+  | "2x"
+  | "3x"
+  | "4x"
+  | "5x"
+  | "6x"
+  | "7x"
+  | "8x"
+  | "9x"
+  | "10x";
+export type PullProp = "left" | "right";
+export type RotateProp = 90 | 180 | 270;
+export type FaSymbol = string | boolean;
+export interface Config {
+  familyPrefix: IconPrefix;
+  replacementClass: string;
+  autoReplaceSvg: boolean | 'nest';
+  autoAddCss: boolean;
+  autoA11y: boolean;
+  searchPseudoElements: boolean;
+  observeMutations: boolean;
+  keepOriginalSource: boolean;
+  measurePerformance: boolean;
+  showMissingIcons: boolean;
+}
+export interface AbstractElement {
+  tag: string;
+  attributes: any;
+  children?: AbstractElement[];
+}
+export interface FontawesomeObject {
+  readonly abstract: AbstractElement[];
+  readonly html: string[];
+  readonly node: HTMLCollection;
+}
+export interface Icon extends FontawesomeObject, IconDefinition {
+  readonly type: "icon";
+}
+export interface Text extends FontawesomeObject {
+  readonly type: "text";
+}
+export interface Counter extends FontawesomeObject {
+  readonly type: "counter";
+}
+export interface Layer extends FontawesomeObject {
+  readonly type: "layer";
+}
+type IconOrText = Icon | Text;
+export interface Attributes {
+  [key: string]: number | string;
+}
+export interface Styles {
+  [key: string]: string;
+}
+export interface Transform {
+  size?: number;
+  x?: number;
+  y?: number;
+  rotate?: number;
+  flipX?: boolean;
+  flipY?: boolean;
+}
+export interface Params {
+  title?: string;
+  titleId?: string;
+  classes?: string | string[];
+  attributes?: Attributes;
+  styles?: Styles;
+}
+export interface CounterParams extends Params {
+}
+export interface LayerParams {
+  classes?: string | string[];
+}
+export interface TextParams extends Params {
+  transform?: Transform;
+}
+export interface IconParams extends Params {
+  transform?: Transform;
+  symbol?: FaSymbol;
+  mask?: IconLookup;
+  maskId?: string;
+}
+export interface DOM {
+  i2svg(params?: { node: Node; callback: () => void }): Promise<void>;
+  css(): string;
+  insertCss(): string;
+  watch(): void;
+}
+type IconDefinitionOrPack = IconDefinition | IconPack;
+export interface Library {
+  add(...definitions: IconDefinitionOrPack[]): void;
+  reset(): void;
+}
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.es.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.es.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.es.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2435 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+function _typeof(obj) {
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function (obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function (obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+
+  return _typeof(obj);
+}
+
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+}
+
+function _defineProperties(target, props) {
+  for (var i = 0; i < props.length; i++) {
+    var descriptor = props[i];
+    descriptor.enumerable = descriptor.enumerable || false;
+    descriptor.configurable = true;
+    if ("value" in descriptor) descriptor.writable = true;
+    Object.defineProperty(target, descriptor.key, descriptor);
+  }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+  if (staticProps) _defineProperties(Constructor, staticProps);
+  return Constructor;
+}
+
+function _defineProperty(obj, key, value) {
+  if (key in obj) {
+    Object.defineProperty(obj, key, {
+      value: value,
+      enumerable: true,
+      configurable: true,
+      writable: true
+    });
+  } else {
+    obj[key] = value;
+  }
+
+  return obj;
+}
+
+function _objectSpread(target) {
+  for (var i = 1; i < arguments.length; i++) {
+    var source = arguments[i] != null ? arguments[i] : {};
+    var ownKeys = Object.keys(source);
+
+    if (typeof Object.getOwnPropertySymbols === 'function') {
+      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+        return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+      }));
+    }
+
+    ownKeys.forEach(function (key) {
+      _defineProperty(target, key, source[key]);
+    });
+  }
+
+  return target;
+}
+
+function _slicedToArray(arr, i) {
+  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+}
+
+function _toConsumableArray(arr) {
+  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+  if (Array.isArray(arr)) {
+    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+    return arr2;
+  }
+}
+
+function _arrayWithHoles(arr) {
+  if (Array.isArray(arr)) return arr;
+}
+
+function _iterableToArray(iter) {
+  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _iterableToArrayLimit(arr, i) {
+  var _arr = [];
+  var _n = true;
+  var _d = false;
+  var _e = undefined;
+
+  try {
+    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+      _arr.push(_s.value);
+
+      if (i && _arr.length === i) break;
+    }
+  } catch (err) {
+    _d = true;
+    _e = err;
+  } finally {
+    try {
+      if (!_n && _i["return"] != null) _i["return"]();
+    } finally {
+      if (_d) throw _e;
+    }
+  }
+
+  return _arr;
+}
+
+function _nonIterableSpread() {
+  throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+function _nonIterableRest() {
+  throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+var noop = function noop() {};
+
+var _WINDOW = {};
+var _DOCUMENT = {};
+var _MUTATION_OBSERVER = null;
+var _PERFORMANCE = {
+  mark: noop,
+  measure: noop
+};
+
+try {
+  if (typeof window !== 'undefined') _WINDOW = window;
+  if (typeof document !== 'undefined') _DOCUMENT = document;
+  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
+  if (typeof performance !== 'undefined') _PERFORMANCE = performance;
+} catch (e) {}
+
+var _ref = _WINDOW.navigator || {},
+    _ref$userAgent = _ref.userAgent,
+    userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
+
+var WINDOW = _WINDOW;
+var DOCUMENT = _DOCUMENT;
+var MUTATION_OBSERVER = _MUTATION_OBSERVER;
+var PERFORMANCE = _PERFORMANCE;
+var IS_BROWSER = !!WINDOW.document;
+var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
+var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
+
+var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
+var UNITS_IN_GRID = 16;
+var DEFAULT_FAMILY_PREFIX = 'fa';
+var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
+var DATA_FA_I2SVG = 'data-fa-i2svg';
+var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
+var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
+var DATA_PREFIX = 'data-prefix';
+var DATA_ICON = 'data-icon';
+var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
+var MUTATION_APPROACH_ASYNC = 'async';
+var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
+var PRODUCTION = function () {
+  try {
+    return process.env.NODE_ENV === 'production';
+  } catch (e) {
+    return false;
+  }
+}();
+var PREFIX_TO_STYLE = {
+  'fas': 'solid',
+  'far': 'regular',
+  'fal': 'light',
+  'fad': 'duotone',
+  'fab': 'brands',
+  'fak': 'kit',
+  'fa': 'solid'
+};
+var STYLE_TO_PREFIX = {
+  'solid': 'fas',
+  'regular': 'far',
+  'light': 'fal',
+  'duotone': 'fad',
+  'brands': 'fab',
+  'kit': 'fak'
+};
+var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
+var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
+
+var FONT_WEIGHT_TO_PREFIX = {
+  '900': 'fas',
+  '400': 'far',
+  'normal': 'far',
+  '300': 'fal'
+};
+var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
+var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
+var DUOTONE_CLASSES = {
+  GROUP: 'group',
+  SWAP_OPACITY: 'swap-opacity',
+  PRIMARY: 'primary',
+  SECONDARY: 'secondary'
+};
+var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
+  return "".concat(n, "x");
+})).concat(oneToTwenty.map(function (n) {
+  return "w-".concat(n);
+}));
+
+var initial = WINDOW.FontAwesomeConfig || {};
+
+function getAttrConfig(attr) {
+  var element = DOCUMENT.querySelector('script[' + attr + ']');
+
+  if (element) {
+    return element.getAttribute(attr);
+  }
+}
+
+function coerce(val) {
+  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value
+  // We'll assume that this is an indication that it should be toggled to true
+  // For example <script data-search-pseudo-elements src="..."></script>
+  if (val === '') return true;
+  if (val === 'false') return false;
+  if (val === 'true') return true;
+  return val;
+}
+
+if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
+  var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
+  attrs.forEach(function (_ref) {
+    var _ref2 = _slicedToArray(_ref, 2),
+        attr = _ref2[0],
+        key = _ref2[1];
+
+    var val = coerce(getAttrConfig(attr));
+
+    if (val !== undefined && val !== null) {
+      initial[key] = val;
+    }
+  });
+}
+
+var _default = {
+  familyPrefix: DEFAULT_FAMILY_PREFIX,
+  replacementClass: DEFAULT_REPLACEMENT_CLASS,
+  autoReplaceSvg: true,
+  autoAddCss: true,
+  autoA11y: true,
+  searchPseudoElements: false,
+  observeMutations: true,
+  mutateApproach: 'async',
+  keepOriginalSource: true,
+  measurePerformance: false,
+  showMissingIcons: true
+};
+
+var _config = _objectSpread({}, _default, initial);
+
+if (!_config.autoReplaceSvg) _config.observeMutations = false;
+
+var config = _objectSpread({}, _config);
+
+WINDOW.FontAwesomeConfig = config;
+
+var w = WINDOW || {};
+if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
+if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
+if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
+if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
+var namespace = w[NAMESPACE_IDENTIFIER];
+
+var functions = [];
+
+var listener = function listener() {
+  DOCUMENT.removeEventListener('DOMContentLoaded', listener);
+  loaded = 1;
+  functions.map(function (fn) {
+    return fn();
+  });
+};
+
+var loaded = false;
+
+if (IS_DOM) {
+  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
+  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
+}
+
+function domready (fn) {
+  if (!IS_DOM) return;
+  loaded ? setTimeout(fn, 0) : functions.push(fn);
+}
+
+var PENDING = 'pending';
+var SETTLED = 'settled';
+var FULFILLED = 'fulfilled';
+var REJECTED = 'rejected';
+
+var NOOP = function NOOP() {};
+
+var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
+var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
+var asyncQueue = [];
+var asyncTimer;
+
+function asyncFlush() {
+  // run promise callbacks
+  for (var i = 0; i < asyncQueue.length; i++) {
+    asyncQueue[i][0](asyncQueue[i][1]);
+  } // reset async asyncQueue
+
+
+  asyncQueue = [];
+  asyncTimer = false;
+}
+
+function asyncCall(callback, arg) {
+  asyncQueue.push([callback, arg]);
+
+  if (!asyncTimer) {
+    asyncTimer = true;
+    asyncSetTimer(asyncFlush, 0);
+  }
+}
+
+function invokeResolver(resolver, promise) {
+  function resolvePromise(value) {
+    resolve(promise, value);
+  }
+
+  function rejectPromise(reason) {
+    reject(promise, reason);
+  }
+
+  try {
+    resolver(resolvePromise, rejectPromise);
+  } catch (e) {
+    rejectPromise(e);
+  }
+}
+
+function invokeCallback(subscriber) {
+  var owner = subscriber.owner;
+  var settled = owner._state;
+  var value = owner._data;
+  var callback = subscriber[settled];
+  var promise = subscriber.then;
+
+  if (typeof callback === 'function') {
+    settled = FULFILLED;
+
+    try {
+      value = callback(value);
+    } catch (e) {
+      reject(promise, e);
+    }
+  }
+
+  if (!handleThenable(promise, value)) {
+    if (settled === FULFILLED) {
+      resolve(promise, value);
+    }
+
+    if (settled === REJECTED) {
+      reject(promise, value);
+    }
+  }
+}
+
+function handleThenable(promise, value) {
+  var resolved;
+
+  try {
+    if (promise === value) {
+      throw new TypeError('A promises callback cannot return that same promise.');
+    }
+
+    if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
+      // then should be retrieved only once
+      var then = value.then;
+
+      if (typeof then === 'function') {
+        then.call(value, function (val) {
+          if (!resolved) {
+            resolved = true;
+
+            if (value === val) {
+              fulfill(promise, val);
+            } else {
+              resolve(promise, val);
+            }
+          }
+        }, function (reason) {
+          if (!resolved) {
+            resolved = true;
+            reject(promise, reason);
+          }
+        });
+        return true;
+      }
+    }
+  } catch (e) {
+    if (!resolved) {
+      reject(promise, e);
+    }
+
+    return true;
+  }
+
+  return false;
+}
+
+function resolve(promise, value) {
+  if (promise === value || !handleThenable(promise, value)) {
+    fulfill(promise, value);
+  }
+}
+
+function fulfill(promise, value) {
+  if (promise._state === PENDING) {
+    promise._state = SETTLED;
+    promise._data = value;
+    asyncCall(publishFulfillment, promise);
+  }
+}
+
+function reject(promise, reason) {
+  if (promise._state === PENDING) {
+    promise._state = SETTLED;
+    promise._data = reason;
+    asyncCall(publishRejection, promise);
+  }
+}
+
+function publish(promise) {
+  promise._then = promise._then.forEach(invokeCallback);
+}
+
+function publishFulfillment(promise) {
+  promise._state = FULFILLED;
+  publish(promise);
+}
+
+function publishRejection(promise) {
+  promise._state = REJECTED;
+  publish(promise);
+
+  if (!promise._handled && isNode) {
+    global.process.emit('unhandledRejection', promise._data, promise);
+  }
+}
+
+function notifyRejectionHandled(promise) {
+  global.process.emit('rejectionHandled', promise);
+}
+/**
+ * @class
+ */
+
+
+function P(resolver) {
+  if (typeof resolver !== 'function') {
+    throw new TypeError('Promise resolver ' + resolver + ' is not a function');
+  }
+
+  if (this instanceof P === false) {
+    throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
+  }
+
+  this._then = [];
+  invokeResolver(resolver, this);
+}
+
+P.prototype = {
+  constructor: P,
+  _state: PENDING,
+  _then: null,
+  _data: undefined,
+  _handled: false,
+  then: function then(onFulfillment, onRejection) {
+    var subscriber = {
+      owner: this,
+      then: new this.constructor(NOOP),
+      fulfilled: onFulfillment,
+      rejected: onRejection
+    };
+
+    if ((onRejection || onFulfillment) && !this._handled) {
+      this._handled = true;
+
+      if (this._state === REJECTED && isNode) {
+        asyncCall(notifyRejectionHandled, this);
+      }
+    }
+
+    if (this._state === FULFILLED || this._state === REJECTED) {
+      // already resolved, call callback async
+      asyncCall(invokeCallback, subscriber);
+    } else {
+      // subscribe
+      this._then.push(subscriber);
+    }
+
+    return subscriber.then;
+  },
+  catch: function _catch(onRejection) {
+    return this.then(null, onRejection);
+  }
+};
+
+P.all = function (promises) {
+  if (!Array.isArray(promises)) {
+    throw new TypeError('You must pass an array to Promise.all().');
+  }
+
+  return new P(function (resolve, reject) {
+    var results = [];
+    var remaining = 0;
+
+    function resolver(index) {
+      remaining++;
+      return function (value) {
+        results[index] = value;
+
+        if (! --remaining) {
+          resolve(results);
+        }
+      };
+    }
+
+    for (var i = 0, promise; i < promises.length; i++) {
+      promise = promises[i];
+
+      if (promise && typeof promise.then === 'function') {
+        promise.then(resolver(i), reject);
+      } else {
+        results[i] = promise;
+      }
+    }
+
+    if (!remaining) {
+      resolve(results);
+    }
+  });
+};
+
+P.race = function (promises) {
+  if (!Array.isArray(promises)) {
+    throw new TypeError('You must pass an array to Promise.race().');
+  }
+
+  return new P(function (resolve, reject) {
+    for (var i = 0, promise; i < promises.length; i++) {
+      promise = promises[i];
+
+      if (promise && typeof promise.then === 'function') {
+        promise.then(resolve, reject);
+      } else {
+        resolve(promise);
+      }
+    }
+  });
+};
+
+P.resolve = function (value) {
+  if (value && _typeof(value) === 'object' && value.constructor === P) {
+    return value;
+  }
+
+  return new P(function (resolve) {
+    resolve(value);
+  });
+};
+
+P.reject = function (reason) {
+  return new P(function (resolve, reject) {
+    reject(reason);
+  });
+};
+
+var picked = typeof Promise === 'function' ? Promise : P;
+
+var d = UNITS_IN_GRID;
+var meaninglessTransform = {
+  size: 16,
+  x: 0,
+  y: 0,
+  rotate: 0,
+  flipX: false,
+  flipY: false
+};
+
+function isReserved(name) {
+  return ~RESERVED_CLASSES.indexOf(name);
+}
+function insertCss(css) {
+  if (!css || !IS_DOM) {
+    return;
+  }
+
+  var style = DOCUMENT.createElement('style');
+  style.setAttribute('type', 'text/css');
+  style.innerHTML = css;
+  var headChildren = DOCUMENT.head.childNodes;
+  var beforeChild = null;
+
+  for (var i = headChildren.length - 1; i > -1; i--) {
+    var child = headChildren[i];
+    var tagName = (child.tagName || '').toUpperCase();
+
+    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
+      beforeChild = child;
+    }
+  }
+
+  DOCUMENT.head.insertBefore(style, beforeChild);
+  return css;
+}
+var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+function nextUniqueId() {
+  var size = 12;
+  var id = '';
+
+  while (size-- > 0) {
+    id += idPool[Math.random() * 62 | 0];
+  }
+
+  return id;
+}
+function toArray(obj) {
+  var array = [];
+
+  for (var i = (obj || []).length >>> 0; i--;) {
+    array[i] = obj[i];
+  }
+
+  return array;
+}
+function classArray(node) {
+  if (node.classList) {
+    return toArray(node.classList);
+  } else {
+    return (node.getAttribute('class') || '').split(' ').filter(function (i) {
+      return i;
+    });
+  }
+}
+function getIconName(familyPrefix, cls) {
+  var parts = cls.split('-');
+  var prefix = parts[0];
+  var iconName = parts.slice(1).join('-');
+
+  if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
+    return iconName;
+  } else {
+    return null;
+  }
+}
+function htmlEscape(str) {
+  return "".concat(str).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+}
+function joinAttributes(attributes) {
+  return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
+    return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
+  }, '').trim();
+}
+function joinStyles(styles) {
+  return Object.keys(styles || {}).reduce(function (acc, styleName) {
+    return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
+  }, '');
+}
+function transformIsMeaningful(transform) {
+  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
+}
+function transformForSvg(_ref) {
+  var transform = _ref.transform,
+      containerWidth = _ref.containerWidth,
+      iconWidth = _ref.iconWidth;
+  var outer = {
+    transform: "translate(".concat(containerWidth / 2, " 256)")
+  };
+  var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
+  var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
+  var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
+  var inner = {
+    transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
+  };
+  var path = {
+    transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
+  };
+  return {
+    outer: outer,
+    inner: inner,
+    path: path
+  };
+}
+function transformForCss(_ref2) {
+  var transform = _ref2.transform,
+      _ref2$width = _ref2.width,
+      width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
+      _ref2$height = _ref2.height,
+      height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
+      _ref2$startCentered = _ref2.startCentered,
+      startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
+  var val = '';
+
+  if (startCentered && IS_IE) {
+    val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
+  } else if (startCentered) {
+    val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
+  } else {
+    val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
+  }
+
+  val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
+  val += "rotate(".concat(transform.rotate, "deg) ");
+  return val;
+}
+
+var ALL_SPACE = {
+  x: 0,
+  y: 0,
+  width: '100%',
+  height: '100%'
+};
+
+function fillBlack(abstract) {
+  var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+  if (abstract.attributes && (abstract.attributes.fill || force)) {
+    abstract.attributes.fill = 'black';
+  }
+
+  return abstract;
+}
+
+function deGroup(abstract) {
+  if (abstract.tag === 'g') {
+    return abstract.children;
+  } else {
+    return [abstract];
+  }
+}
+
+function makeIconMasking (_ref) {
+  var children = _ref.children,
+      attributes = _ref.attributes,
+      main = _ref.main,
+      mask = _ref.mask,
+      explicitMaskId = _ref.maskId,
+      transform = _ref.transform;
+  var mainWidth = main.width,
+      mainPath = main.icon;
+  var maskWidth = mask.width,
+      maskPath = mask.icon;
+  var trans = transformForSvg({
+    transform: transform,
+    containerWidth: maskWidth,
+    iconWidth: mainWidth
+  });
+  var maskRect = {
+    tag: 'rect',
+    attributes: _objectSpread({}, ALL_SPACE, {
+      fill: 'white'
+    })
+  };
+  var maskInnerGroupChildrenMixin = mainPath.children ? {
+    children: mainPath.children.map(fillBlack)
+  } : {};
+  var maskInnerGroup = {
+    tag: 'g',
+    attributes: _objectSpread({}, trans.inner),
+    children: [fillBlack(_objectSpread({
+      tag: mainPath.tag,
+      attributes: _objectSpread({}, mainPath.attributes, trans.path)
+    }, maskInnerGroupChildrenMixin))]
+  };
+  var maskOuterGroup = {
+    tag: 'g',
+    attributes: _objectSpread({}, trans.outer),
+    children: [maskInnerGroup]
+  };
+  var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
+  var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
+  var maskTag = {
+    tag: 'mask',
+    attributes: _objectSpread({}, ALL_SPACE, {
+      id: maskId,
+      maskUnits: 'userSpaceOnUse',
+      maskContentUnits: 'userSpaceOnUse'
+    }),
+    children: [maskRect, maskOuterGroup]
+  };
+  var defs = {
+    tag: 'defs',
+    children: [{
+      tag: 'clipPath',
+      attributes: {
+        id: clipId
+      },
+      children: deGroup(maskPath)
+    }, maskTag]
+  };
+  children.push(defs, {
+    tag: 'rect',
+    attributes: _objectSpread({
+      fill: 'currentColor',
+      'clip-path': "url(#".concat(clipId, ")"),
+      mask: "url(#".concat(maskId, ")")
+    }, ALL_SPACE)
+  });
+  return {
+    children: children,
+    attributes: attributes
+  };
+}
+
+function makeIconStandard (_ref) {
+  var children = _ref.children,
+      attributes = _ref.attributes,
+      main = _ref.main,
+      transform = _ref.transform,
+      styles = _ref.styles;
+  var styleString = joinStyles(styles);
+
+  if (styleString.length > 0) {
+    attributes['style'] = styleString;
+  }
+
+  if (transformIsMeaningful(transform)) {
+    var trans = transformForSvg({
+      transform: transform,
+      containerWidth: main.width,
+      iconWidth: main.width
+    });
+    children.push({
+      tag: 'g',
+      attributes: _objectSpread({}, trans.outer),
+      children: [{
+        tag: 'g',
+        attributes: _objectSpread({}, trans.inner),
+        children: [{
+          tag: main.icon.tag,
+          children: main.icon.children,
+          attributes: _objectSpread({}, main.icon.attributes, trans.path)
+        }]
+      }]
+    });
+  } else {
+    children.push(main.icon);
+  }
+
+  return {
+    children: children,
+    attributes: attributes
+  };
+}
+
+function asIcon (_ref) {
+  var children = _ref.children,
+      main = _ref.main,
+      mask = _ref.mask,
+      attributes = _ref.attributes,
+      styles = _ref.styles,
+      transform = _ref.transform;
+
+  if (transformIsMeaningful(transform) && main.found && !mask.found) {
+    var width = main.width,
+        height = main.height;
+    var offset = {
+      x: width / height / 2,
+      y: 0.5
+    };
+    attributes['style'] = joinStyles(_objectSpread({}, styles, {
+      'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
+    }));
+  }
+
+  return [{
+    tag: 'svg',
+    attributes: attributes,
+    children: children
+  }];
+}
+
+function asSymbol (_ref) {
+  var prefix = _ref.prefix,
+      iconName = _ref.iconName,
+      children = _ref.children,
+      attributes = _ref.attributes,
+      symbol = _ref.symbol;
+  var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
+  return [{
+    tag: 'svg',
+    attributes: {
+      style: 'display: none;'
+    },
+    children: [{
+      tag: 'symbol',
+      attributes: _objectSpread({}, attributes, {
+        id: id
+      }),
+      children: children
+    }]
+  }];
+}
+
+function makeInlineSvgAbstract(params) {
+  var _params$icons = params.icons,
+      main = _params$icons.main,
+      mask = _params$icons.mask,
+      prefix = params.prefix,
+      iconName = params.iconName,
+      transform = params.transform,
+      symbol = params.symbol,
+      title = params.title,
+      maskId = params.maskId,
+      titleId = params.titleId,
+      extra = params.extra,
+      _params$watchable = params.watchable,
+      watchable = _params$watchable === void 0 ? false : _params$watchable;
+
+  var _ref = mask.found ? mask : main,
+      width = _ref.width,
+      height = _ref.height;
+
+  var isUploadedIcon = prefix === 'fak';
+  var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
+  var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
+    return extra.classes.indexOf(c) === -1;
+  }).filter(function (c) {
+    return c !== '' || !!c;
+  }).concat(extra.classes).join(' ');
+  var content = {
+    children: [],
+    attributes: _objectSpread({}, extra.attributes, {
+      'data-prefix': prefix,
+      'data-icon': iconName,
+      'class': attrClass,
+      'role': extra.attributes.role || 'img',
+      'xmlns': 'http://www.w3.org/2000/svg',
+      'viewBox': "0 0 ".concat(width, " ").concat(height)
+    })
+  };
+  var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
+    width: "".concat(width / height * 16 * 0.0625, "em")
+  } : {};
+
+  if (watchable) {
+    content.attributes[DATA_FA_I2SVG] = '';
+  }
+
+  if (title) content.children.push({
+    tag: 'title',
+    attributes: {
+      id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
+    },
+    children: [title]
+  });
+
+  var args = _objectSpread({}, content, {
+    prefix: prefix,
+    iconName: iconName,
+    main: main,
+    mask: mask,
+    maskId: maskId,
+    transform: transform,
+    symbol: symbol,
+    styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)
+  });
+
+  var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
+      children = _ref2.children,
+      attributes = _ref2.attributes;
+
+  args.children = children;
+  args.attributes = attributes;
+
+  if (symbol) {
+    return asSymbol(args);
+  } else {
+    return asIcon(args);
+  }
+}
+function makeLayersTextAbstract(params) {
+  var content = params.content,
+      width = params.width,
+      height = params.height,
+      transform = params.transform,
+      title = params.title,
+      extra = params.extra,
+      _params$watchable2 = params.watchable,
+      watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
+
+  var attributes = _objectSpread({}, extra.attributes, title ? {
+    'title': title
+  } : {}, {
+    'class': extra.classes.join(' ')
+  });
+
+  if (watchable) {
+    attributes[DATA_FA_I2SVG] = '';
+  }
+
+  var styles = _objectSpread({}, extra.styles);
+
+  if (transformIsMeaningful(transform)) {
+    styles['transform'] = transformForCss({
+      transform: transform,
+      startCentered: true,
+      width: width,
+      height: height
+    });
+    styles['-webkit-transform'] = styles['transform'];
+  }
+
+  var styleString = joinStyles(styles);
+
+  if (styleString.length > 0) {
+    attributes['style'] = styleString;
+  }
+
+  var val = [];
+  val.push({
+    tag: 'span',
+    attributes: attributes,
+    children: [content]
+  });
+
+  if (title) {
+    val.push({
+      tag: 'span',
+      attributes: {
+        class: 'sr-only'
+      },
+      children: [title]
+    });
+  }
+
+  return val;
+}
+function makeLayersCounterAbstract(params) {
+  var content = params.content,
+      title = params.title,
+      extra = params.extra;
+
+  var attributes = _objectSpread({}, extra.attributes, title ? {
+    'title': title
+  } : {}, {
+    'class': extra.classes.join(' ')
+  });
+
+  var styleString = joinStyles(extra.styles);
+
+  if (styleString.length > 0) {
+    attributes['style'] = styleString;
+  }
+
+  var val = [];
+  val.push({
+    tag: 'span',
+    attributes: attributes,
+    children: [content]
+  });
+
+  if (title) {
+    val.push({
+      tag: 'span',
+      attributes: {
+        class: 'sr-only'
+      },
+      children: [title]
+    });
+  }
+
+  return val;
+}
+
+var noop$1 = function noop() {};
+
+var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
+  mark: noop$1,
+  measure: noop$1
+};
+var preamble = "FA \"5.15.4\"";
+
+var begin = function begin(name) {
+  p.mark("".concat(preamble, " ").concat(name, " begins"));
+  return function () {
+    return end(name);
+  };
+};
+
+var end = function end(name) {
+  p.mark("".concat(preamble, " ").concat(name, " ends"));
+  p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
+};
+
+var perf = {
+  begin: begin,
+  end: end
+};
+
+/**
+ * Internal helper to bind a function known to have 4 arguments
+ * to a given context.
+ */
+
+var bindInternal4 = function bindInternal4(func, thisContext) {
+  return function (a, b, c, d) {
+    return func.call(thisContext, a, b, c, d);
+  };
+};
+
+/**
+ * # Reduce
+ *
+ * A fast object `.reduce()` implementation.
+ *
+ * @param  {Object}   subject      The object to reduce over.
+ * @param  {Function} fn           The reducer function.
+ * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].
+ * @param  {Object}   thisContext  The context for the reducer.
+ * @return {mixed}                 The final result.
+ */
+
+
+var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
+  var keys = Object.keys(subject),
+      length = keys.length,
+      iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
+      i,
+      key,
+      result;
+
+  if (initialValue === undefined) {
+    i = 1;
+    result = subject[keys[0]];
+  } else {
+    i = 0;
+    result = initialValue;
+  }
+
+  for (; i < length; i++) {
+    key = keys[i];
+    result = iterator(result, subject[key], key, subject);
+  }
+
+  return result;
+};
+
+function toHex(unicode) {
+  var result = '';
+
+  for (var i = 0; i < unicode.length; i++) {
+    var hex = unicode.charCodeAt(i).toString(16);
+    result += ('000' + hex).slice(-4);
+  }
+
+  return result;
+}
+
+function defineIcons(prefix, icons) {
+  var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  var _params$skipHooks = params.skipHooks,
+      skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
+  var normalized = Object.keys(icons).reduce(function (acc, iconName) {
+    var icon = icons[iconName];
+    var expanded = !!icon.icon;
+
+    if (expanded) {
+      acc[icon.iconName] = icon.icon;
+    } else {
+      acc[iconName] = icon;
+    }
+
+    return acc;
+  }, {});
+
+  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
+    namespace.hooks.addPack(prefix, normalized);
+  } else {
+    namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);
+  }
+  /**
+   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
+   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias
+   * for `fas` so we'll easy the upgrade process for our users by automatically defining
+   * this as well.
+   */
+
+
+  if (prefix === 'fas') {
+    defineIcons('fa', icons);
+  }
+}
+
+var styles = namespace.styles,
+    shims = namespace.shims;
+var _byUnicode = {};
+var _byLigature = {};
+var _byOldName = {};
+var build = function build() {
+  var lookup = function lookup(reducer) {
+    return reduce(styles, function (o, style, prefix) {
+      o[prefix] = reduce(style, reducer, {});
+      return o;
+    }, {});
+  };
+
+  _byUnicode = lookup(function (acc, icon, iconName) {
+    if (icon[3]) {
+      acc[icon[3]] = iconName;
+    }
+
+    return acc;
+  });
+  _byLigature = lookup(function (acc, icon, iconName) {
+    var ligatures = icon[2];
+    acc[iconName] = iconName;
+    ligatures.forEach(function (ligature) {
+      acc[ligature] = iconName;
+    });
+    return acc;
+  });
+  var hasRegular = 'far' in styles;
+  _byOldName = reduce(shims, function (acc, shim) {
+    var oldName = shim[0];
+    var prefix = shim[1];
+    var iconName = shim[2];
+
+    if (prefix === 'far' && !hasRegular) {
+      prefix = 'fas';
+    }
+
+    acc[oldName] = {
+      prefix: prefix,
+      iconName: iconName
+    };
+    return acc;
+  }, {});
+};
+build();
+function byUnicode(prefix, unicode) {
+  return (_byUnicode[prefix] || {})[unicode];
+}
+function byLigature(prefix, ligature) {
+  return (_byLigature[prefix] || {})[ligature];
+}
+function byOldName(name) {
+  return _byOldName[name] || {
+    prefix: null,
+    iconName: null
+  };
+}
+
+var styles$1 = namespace.styles;
+var emptyCanonicalIcon = function emptyCanonicalIcon() {
+  return {
+    prefix: null,
+    iconName: null,
+    rest: []
+  };
+};
+function getCanonicalIcon(values) {
+  return values.reduce(function (acc, cls) {
+    var iconName = getIconName(config.familyPrefix, cls);
+
+    if (styles$1[cls]) {
+      acc.prefix = cls;
+    } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
+      acc.prefix = cls;
+    } else if (iconName) {
+      var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
+      acc.iconName = shim.iconName || iconName;
+      acc.prefix = shim.prefix || acc.prefix;
+    } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
+      acc.rest.push(cls);
+    }
+
+    return acc;
+  }, emptyCanonicalIcon());
+}
+function iconFromMapping(mapping, prefix, iconName) {
+  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
+    return {
+      prefix: prefix,
+      iconName: iconName,
+      icon: mapping[prefix][iconName]
+    };
+  }
+}
+
+function toHtml(abstractNodes) {
+  var tag = abstractNodes.tag,
+      _abstractNodes$attrib = abstractNodes.attributes,
+      attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
+      _abstractNodes$childr = abstractNodes.children,
+      children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
+
+  if (typeof abstractNodes === 'string') {
+    return htmlEscape(abstractNodes);
+  } else {
+    return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "</").concat(tag, ">");
+  }
+}
+
+var noop$2 = function noop() {};
+
+function isWatched(node) {
+  var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
+  return typeof i2svg === 'string';
+}
+
+function getMutator() {
+  if (config.autoReplaceSvg === true) {
+    return mutators.replace;
+  }
+
+  var mutator = mutators[config.autoReplaceSvg];
+  return mutator || mutators.replace;
+}
+
+var mutators = {
+  replace: function replace(mutation) {
+    var node = mutation[0];
+    var abstract = mutation[1];
+    var newOuterHTML = abstract.map(function (a) {
+      return toHtml(a);
+    }).join('\n');
+
+    if (node.parentNode && node.outerHTML) {
+      node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "<!-- ".concat(node.outerHTML, " Font Awesome fontawesome.com -->") : '');
+    } else if (node.parentNode) {
+      var newNode = document.createElement('span');
+      node.parentNode.replaceChild(newNode, node);
+      newNode.outerHTML = newOuterHTML;
+    }
+  },
+  nest: function nest(mutation) {
+    var node = mutation[0];
+    var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
+    // Short-circuit to the standard replacement
+
+    if (~classArray(node).indexOf(config.replacementClass)) {
+      return mutators.replace(mutation);
+    }
+
+    var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
+    delete abstract[0].attributes.style;
+    delete abstract[0].attributes.id;
+    var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
+      if (cls === config.replacementClass || cls.match(forSvg)) {
+        acc.toSvg.push(cls);
+      } else {
+        acc.toNode.push(cls);
+      }
+
+      return acc;
+    }, {
+      toNode: [],
+      toSvg: []
+    });
+    abstract[0].attributes.class = splitClasses.toSvg.join(' ');
+    var newInnerHTML = abstract.map(function (a) {
+      return toHtml(a);
+    }).join('\n');
+    node.setAttribute('class', splitClasses.toNode.join(' '));
+    node.setAttribute(DATA_FA_I2SVG, '');
+    node.innerHTML = newInnerHTML;
+  }
+};
+
+function performOperationSync(op) {
+  op();
+}
+
+function perform(mutations, callback) {
+  var callbackFunction = typeof callback === 'function' ? callback : noop$2;
+
+  if (mutations.length === 0) {
+    callbackFunction();
+  } else {
+    var frame = performOperationSync;
+
+    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
+      frame = WINDOW.requestAnimationFrame || performOperationSync;
+    }
+
+    frame(function () {
+      var mutator = getMutator();
+      var mark = perf.begin('mutate');
+      mutations.map(mutator);
+      mark();
+      callbackFunction();
+    });
+  }
+}
+var disabled = false;
+function disableObservation() {
+  disabled = true;
+}
+function enableObservation() {
+  disabled = false;
+}
+var mo = null;
+function observe(options) {
+  if (!MUTATION_OBSERVER) {
+    return;
+  }
+
+  if (!config.observeMutations) {
+    return;
+  }
+
+  var treeCallback = options.treeCallback,
+      nodeCallback = options.nodeCallback,
+      pseudoElementsCallback = options.pseudoElementsCallback,
+      _options$observeMutat = options.observeMutationsRoot,
+      observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
+  mo = new MUTATION_OBSERVER(function (objects) {
+    if (disabled) return;
+    toArray(objects).forEach(function (mutationRecord) {
+      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
+        if (config.searchPseudoElements) {
+          pseudoElementsCallback(mutationRecord.target);
+        }
+
+        treeCallback(mutationRecord.target);
+      }
+
+      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
+        pseudoElementsCallback(mutationRecord.target.parentNode);
+      }
+
+      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
+        if (mutationRecord.attributeName === 'class') {
+          var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
+              prefix = _getCanonicalIcon.prefix,
+              iconName = _getCanonicalIcon.iconName;
+
+          if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
+          if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
+        } else {
+          nodeCallback(mutationRecord.target);
+        }
+      }
+    });
+  });
+  if (!IS_DOM) return;
+  mo.observe(observeMutationsRoot, {
+    childList: true,
+    attributes: true,
+    characterData: true,
+    subtree: true
+  });
+}
+function disconnect() {
+  if (!mo) return;
+  mo.disconnect();
+}
+
+function styleParser (node) {
+  var style = node.getAttribute('style');
+  var val = [];
+
+  if (style) {
+    val = style.split(';').reduce(function (acc, style) {
+      var styles = style.split(':');
+      var prop = styles[0];
+      var value = styles.slice(1);
+
+      if (prop && value.length > 0) {
+        acc[prop] = value.join(':').trim();
+      }
+
+      return acc;
+    }, {});
+  }
+
+  return val;
+}
+
+function classParser (node) {
+  var existingPrefix = node.getAttribute('data-prefix');
+  var existingIconName = node.getAttribute('data-icon');
+  var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
+  var val = getCanonicalIcon(classArray(node));
+
+  if (existingPrefix && existingIconName) {
+    val.prefix = existingPrefix;
+    val.iconName = existingIconName;
+  }
+
+  if (val.prefix && innerText.length > 1) {
+    val.iconName = byLigature(val.prefix, node.innerText);
+  } else if (val.prefix && innerText.length === 1) {
+    val.iconName = byUnicode(val.prefix, toHex(node.innerText));
+  }
+
+  return val;
+}
+
+var parseTransformString = function parseTransformString(transformString) {
+  var transform = {
+    size: 16,
+    x: 0,
+    y: 0,
+    flipX: false,
+    flipY: false,
+    rotate: 0
+  };
+
+  if (!transformString) {
+    return transform;
+  } else {
+    return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
+      var parts = n.toLowerCase().split('-');
+      var first = parts[0];
+      var rest = parts.slice(1).join('-');
+
+      if (first && rest === 'h') {
+        acc.flipX = true;
+        return acc;
+      }
+
+      if (first && rest === 'v') {
+        acc.flipY = true;
+        return acc;
+      }
+
+      rest = parseFloat(rest);
+
+      if (isNaN(rest)) {
+        return acc;
+      }
+
+      switch (first) {
+        case 'grow':
+          acc.size = acc.size + rest;
+          break;
+
+        case 'shrink':
+          acc.size = acc.size - rest;
+          break;
+
+        case 'left':
+          acc.x = acc.x - rest;
+          break;
+
+        case 'right':
+          acc.x = acc.x + rest;
+          break;
+
+        case 'up':
+          acc.y = acc.y - rest;
+          break;
+
+        case 'down':
+          acc.y = acc.y + rest;
+          break;
+
+        case 'rotate':
+          acc.rotate = acc.rotate + rest;
+          break;
+      }
+
+      return acc;
+    }, transform);
+  }
+};
+function transformParser (node) {
+  return parseTransformString(node.getAttribute('data-fa-transform'));
+}
+
+function symbolParser (node) {
+  var symbol = node.getAttribute('data-fa-symbol');
+  return symbol === null ? false : symbol === '' ? true : symbol;
+}
+
+function attributesParser (node) {
+  var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
+    if (acc.name !== 'class' && acc.name !== 'style') {
+      acc[attr.name] = attr.value;
+    }
+
+    return acc;
+  }, {});
+  var title = node.getAttribute('title');
+  var titleId = node.getAttribute('data-fa-title-id');
+
+  if (config.autoA11y) {
+    if (title) {
+      extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
+    } else {
+      extraAttributes['aria-hidden'] = 'true';
+      extraAttributes['focusable'] = 'false';
+    }
+  }
+
+  return extraAttributes;
+}
+
+function maskParser (node) {
+  var mask = node.getAttribute('data-fa-mask');
+
+  if (!mask) {
+    return emptyCanonicalIcon();
+  } else {
+    return getCanonicalIcon(mask.split(' ').map(function (i) {
+      return i.trim();
+    }));
+  }
+}
+
+function blankMeta() {
+  return {
+    iconName: null,
+    title: null,
+    titleId: null,
+    prefix: null,
+    transform: meaninglessTransform,
+    symbol: false,
+    mask: null,
+    maskId: null,
+    extra: {
+      classes: [],
+      styles: {},
+      attributes: {}
+    }
+  };
+}
+function parseMeta(node) {
+  var _classParser = classParser(node),
+      iconName = _classParser.iconName,
+      prefix = _classParser.prefix,
+      extraClasses = _classParser.rest;
+
+  var extraStyles = styleParser(node);
+  var transform = transformParser(node);
+  var symbol = symbolParser(node);
+  var extraAttributes = attributesParser(node);
+  var mask = maskParser(node);
+  return {
+    iconName: iconName,
+    title: node.getAttribute('title'),
+    titleId: node.getAttribute('data-fa-title-id'),
+    prefix: prefix,
+    transform: transform,
+    symbol: symbol,
+    mask: mask,
+    maskId: node.getAttribute('data-fa-mask-id'),
+    extra: {
+      classes: extraClasses,
+      styles: extraStyles,
+      attributes: extraAttributes
+    }
+  };
+}
+
+function MissingIcon(error) {
+  this.name = 'MissingIcon';
+  this.message = error || 'Icon unavailable';
+  this.stack = new Error().stack;
+}
+MissingIcon.prototype = Object.create(Error.prototype);
+MissingIcon.prototype.constructor = MissingIcon;
+
+var FILL = {
+  fill: 'currentColor'
+};
+var ANIMATION_BASE = {
+  attributeType: 'XML',
+  repeatCount: 'indefinite',
+  dur: '2s'
+};
+var RING = {
+  tag: 'path',
+  attributes: _objectSpread({}, FILL, {
+    d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
+  })
+};
+
+var OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {
+  attributeName: 'opacity'
+});
+
+var DOT = {
+  tag: 'circle',
+  attributes: _objectSpread({}, FILL, {
+    cx: '256',
+    cy: '364',
+    r: '28'
+  }),
+  children: [{
+    tag: 'animate',
+    attributes: _objectSpread({}, ANIMATION_BASE, {
+      attributeName: 'r',
+      values: '28;14;28;28;14;28;'
+    })
+  }, {
+    tag: 'animate',
+    attributes: _objectSpread({}, OPACITY_ANIMATE, {
+      values: '1;0;1;1;0;1;'
+    })
+  }]
+};
+var QUESTION = {
+  tag: 'path',
+  attributes: _objectSpread({}, FILL, {
+    opacity: '1',
+    d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
+  }),
+  children: [{
+    tag: 'animate',
+    attributes: _objectSpread({}, OPACITY_ANIMATE, {
+      values: '1;0;0;0;0;1;'
+    })
+  }]
+};
+var EXCLAMATION = {
+  tag: 'path',
+  attributes: _objectSpread({}, FILL, {
+    opacity: '0',
+    d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
+  }),
+  children: [{
+    tag: 'animate',
+    attributes: _objectSpread({}, OPACITY_ANIMATE, {
+      values: '0;0;1;1;0;0;'
+    })
+  }]
+};
+var missing = {
+  tag: 'g',
+  children: [RING, DOT, QUESTION, EXCLAMATION]
+};
+
+var styles$2 = namespace.styles;
+function asFoundIcon(icon) {
+  var width = icon[0];
+  var height = icon[1];
+
+  var _icon$slice = icon.slice(4),
+      _icon$slice2 = _slicedToArray(_icon$slice, 1),
+      vectorData = _icon$slice2[0];
+
+  var element = null;
+
+  if (Array.isArray(vectorData)) {
+    element = {
+      tag: 'g',
+      attributes: {
+        class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
+      },
+      children: [{
+        tag: 'path',
+        attributes: {
+          class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
+          fill: 'currentColor',
+          d: vectorData[0]
+        }
+      }, {
+        tag: 'path',
+        attributes: {
+          class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
+          fill: 'currentColor',
+          d: vectorData[1]
+        }
+      }]
+    };
+  } else {
+    element = {
+      tag: 'path',
+      attributes: {
+        fill: 'currentColor',
+        d: vectorData
+      }
+    };
+  }
+
+  return {
+    found: true,
+    width: width,
+    height: height,
+    icon: element
+  };
+}
+function findIcon(iconName, prefix) {
+  return new picked(function (resolve, reject) {
+    var val = {
+      found: false,
+      width: 512,
+      height: 512,
+      icon: missing
+    };
+
+    if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
+      var icon = styles$2[prefix][iconName];
+      return resolve(asFoundIcon(icon));
+    }
+
+    if (iconName && prefix && !config.showMissingIcons) {
+      reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
+    } else {
+      resolve(val);
+    }
+  });
+}
+
+var styles$3 = namespace.styles;
+
+function generateSvgReplacementMutation(node, nodeMeta) {
+  var iconName = nodeMeta.iconName,
+      title = nodeMeta.title,
+      titleId = nodeMeta.titleId,
+      prefix = nodeMeta.prefix,
+      transform = nodeMeta.transform,
+      symbol = nodeMeta.symbol,
+      mask = nodeMeta.mask,
+      maskId = nodeMeta.maskId,
+      extra = nodeMeta.extra;
+  return new picked(function (resolve, reject) {
+    picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          main = _ref2[0],
+          mask = _ref2[1];
+
+      resolve([node, makeInlineSvgAbstract({
+        icons: {
+          main: main,
+          mask: mask
+        },
+        prefix: prefix,
+        iconName: iconName,
+        transform: transform,
+        symbol: symbol,
+        mask: mask,
+        maskId: maskId,
+        title: title,
+        titleId: titleId,
+        extra: extra,
+        watchable: true
+      })]);
+    });
+  });
+}
+
+function generateLayersText(node, nodeMeta) {
+  var title = nodeMeta.title,
+      transform = nodeMeta.transform,
+      extra = nodeMeta.extra;
+  var width = null;
+  var height = null;
+
+  if (IS_IE) {
+    var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
+    var boundingClientRect = node.getBoundingClientRect();
+    width = boundingClientRect.width / computedFontSize;
+    height = boundingClientRect.height / computedFontSize;
+  }
+
+  if (config.autoA11y && !title) {
+    extra.attributes['aria-hidden'] = 'true';
+  }
+
+  return picked.resolve([node, makeLayersTextAbstract({
+    content: node.innerHTML,
+    width: width,
+    height: height,
+    transform: transform,
+    title: title,
+    extra: extra,
+    watchable: true
+  })]);
+}
+
+function generateMutation(node) {
+  var nodeMeta = parseMeta(node);
+
+  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
+    return generateLayersText(node, nodeMeta);
+  } else {
+    return generateSvgReplacementMutation(node, nodeMeta);
+  }
+}
+
+function onTree(root) {
+  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+  if (!IS_DOM) return;
+  var htmlClassList = DOCUMENT.documentElement.classList;
+
+  var hclAdd = function hclAdd(suffix) {
+    return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
+  };
+
+  var hclRemove = function hclRemove(suffix) {
+    return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
+  };
+
+  var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
+  var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
+    return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
+  })).join(', ');
+
+  if (prefixesDomQuery.length === 0) {
+    return;
+  }
+
+  var candidates = [];
+
+  try {
+    candidates = toArray(root.querySelectorAll(prefixesDomQuery));
+  } catch (e) {// noop
+  }
+
+  if (candidates.length > 0) {
+    hclAdd('pending');
+    hclRemove('complete');
+  } else {
+    return;
+  }
+
+  var mark = perf.begin('onTree');
+  var mutations = candidates.reduce(function (acc, node) {
+    try {
+      var mutation = generateMutation(node);
+
+      if (mutation) {
+        acc.push(mutation);
+      }
+    } catch (e) {
+      if (!PRODUCTION) {
+        if (e instanceof MissingIcon) {
+          console.error(e);
+        }
+      }
+    }
+
+    return acc;
+  }, []);
+  return new picked(function (resolve, reject) {
+    picked.all(mutations).then(function (resolvedMutations) {
+      perform(resolvedMutations, function () {
+        hclAdd('active');
+        hclAdd('complete');
+        hclRemove('pending');
+        if (typeof callback === 'function') callback();
+        mark();
+        resolve();
+      });
+    }).catch(function () {
+      mark();
+      reject();
+    });
+  });
+}
+function onNode(node) {
+  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+  generateMutation(node).then(function (mutation) {
+    if (mutation) {
+      perform([mutation], callback);
+    }
+  });
+}
+
+function replaceForPosition(node, position) {
+  var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
+  return new picked(function (resolve, reject) {
+    if (node.getAttribute(pendingAttribute) !== null) {
+      // This node is already being processed
+      return resolve();
+    }
+
+    var children = toArray(node.children);
+    var alreadyProcessedPseudoElement = children.filter(function (c) {
+      return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
+    })[0];
+    var styles = WINDOW.getComputedStyle(node, position);
+    var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
+    var fontWeight = styles.getPropertyValue('font-weight');
+    var content = styles.getPropertyValue('content');
+
+    if (alreadyProcessedPseudoElement && !fontFamily) {
+      // If we've already processed it but the current computed style does not result in a font-family,
+      // that probably means that a class name that was previously present to make the icon has been
+      // removed. So we now should delete the icon.
+      node.removeChild(alreadyProcessedPseudoElement);
+      return resolve();
+    } else if (fontFamily && content !== 'none' && content !== '') {
+      var _content = styles.getPropertyValue('content');
+
+      var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
+      var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
+      var iconName = byUnicode(prefix, hexValue);
+      var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
+      // already done so with the same prefix and iconName
+
+      if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
+        node.setAttribute(pendingAttribute, iconIdentifier);
+
+        if (alreadyProcessedPseudoElement) {
+          // Delete the old one, since we're replacing it with a new one
+          node.removeChild(alreadyProcessedPseudoElement);
+        }
+
+        var meta = blankMeta();
+        var extra = meta.extra;
+        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
+        findIcon(iconName, prefix).then(function (main) {
+          var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {
+            icons: {
+              main: main,
+              mask: emptyCanonicalIcon()
+            },
+            prefix: prefix,
+            iconName: iconIdentifier,
+            extra: extra,
+            watchable: true
+          }));
+          var element = DOCUMENT.createElement('svg');
+
+          if (position === ':before') {
+            node.insertBefore(element, node.firstChild);
+          } else {
+            node.appendChild(element);
+          }
+
+          element.outerHTML = abstract.map(function (a) {
+            return toHtml(a);
+          }).join('\n');
+          node.removeAttribute(pendingAttribute);
+          resolve();
+        }).catch(reject);
+      } else {
+        resolve();
+      }
+    } else {
+      resolve();
+    }
+  });
+}
+
+function replace(node) {
+  return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
+}
+
+function processable(node) {
+  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
+}
+
+function searchPseudoElements (root) {
+  if (!IS_DOM) return;
+  return new picked(function (resolve, reject) {
+    var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
+    var end = perf.begin('searchPseudoElements');
+    disableObservation();
+    picked.all(operations).then(function () {
+      end();
+      enableObservation();
+      resolve();
+    }).catch(function () {
+      end();
+      enableObservation();
+      reject();
+    });
+  });
+}
+
+var baseStyles = "svg:not(:root).svg-inline--fa {\n  overflow: visible;\n}\n\n.svg-inline--fa {\n  display: inline-block;\n  font-size: inherit;\n  height: 1em;\n  overflow: visible;\n  vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n  vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n  width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n  width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n  width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n  width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n  width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n  width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n  width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n  width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n  width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n  width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n  width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n  width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n  width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n  width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n  width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n  width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n  width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n  width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n  width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n  width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n  margin-right: 0.3em;\n  width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n  margin-left: 0.3em;\n  width: auto;\n}\n.svg-inline--fa.fa-border {\n  height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n  width: 2em;\n}\n.svg-inline--fa.fa-fw {\n  width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.fa-layers {\n  display: inline-block;\n  height: 1em;\n  position: relative;\n  text-align: center;\n  vertical-align: -0.125em;\n  width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n  -webkit-transform-origin: center center;\n          transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n  display: inline-block;\n  position: absolute;\n  text-align: center;\n}\n\n.fa-layers-text {\n  left: 50%;\n  top: 50%;\n  -webkit-transform: translate(-50%, -50%);\n          transform: translate(-50%, -50%);\n  -webkit-transform-origin: center center;\n          transform-origin: center center;\n}\n\n.fa-layers-counter {\n  background-color: #ff253a;\n  border-radius: 1em;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  color: #fff;\n  height: 1.5em;\n  line-height: 1;\n  max-width: 5em;\n  min-width: 1.5em;\n  overflow: hidden;\n  padding: 0.25em;\n  right: 0;\n  text-overflow: ellipsis;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n  bottom: 0;\n  right: 0;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom right;\n          transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n  bottom: 0;\n  left: 0;\n  right: auto;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom left;\n          transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n  right: 0;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right;\n}\n\n.fa-layers-top-left {\n  left: 0;\n  right: auto;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top left;\n          transform-origin: top left;\n}\n\n.fa-lg {\n  font-size: 1.3333333333em;\n  line-height: 0.75em;\n  vertical-align: -0.0667em;\n}\n\n.fa-xs {\n  font-size: 0.75em;\n}\n\n.fa-sm {\n  font-size: 0.875em;\n}\n\n.fa-1x {\n  font-size: 1em;\n}\n\n.fa-2x {\n  font-size: 2em;\n}\n\n.fa-3x {\n  font-size: 3em;\n}\n\n.fa-4x {\n  font-size: 4em;\n}\n\n.fa-5x {\n  font-size: 5em;\n}\n\n.fa-6x {\n  font-size: 6em;\n}\n\n.fa-7x {\n  font-size: 7em;\n}\n\n.fa-8x {\n  font-size: 8em;\n}\n\n.fa-9x {\n  font-size: 9em;\n}\n\n.fa-10x {\n  font-size: 10em;\n}\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em;\n}\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0;\n}\n.fa-ul > li {\n  position: relative;\n}\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit;\n}\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: 0.1em;\n  padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n  float: left;\n}\n\n.fa-pull-right {\n  float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: 0.3em;\n}\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n  }\n}\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n  }\n}\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n  -webkit-filter: none;\n          filter: none;\n}\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  position: relative;\n  width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n  height: 1em;\n  width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n  height: 2em;\n  width: 2.5em;\n}\n\n.fa-inverse {\n  color: #fff;\n}\n\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n  fill: var(--fa-primary-color, currentColor);\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n  fill: var(--fa-secondary-color, currentColor);\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n  fill: black;\n}\n\n.fad.fa-inverse {\n  color: #fff;\n}";
+
+function css () {
+  var dfp = DEFAULT_FAMILY_PREFIX;
+  var drc = DEFAULT_REPLACEMENT_CLASS;
+  var fp = config.familyPrefix;
+  var rc = config.replacementClass;
+  var s = baseStyles;
+
+  if (fp !== dfp || rc !== drc) {
+    var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
+    var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
+    var rPatt = new RegExp("\\.".concat(drc), 'g');
+    s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
+  }
+
+  return s;
+}
+
+var Library =
+/*#__PURE__*/
+function () {
+  function Library() {
+    _classCallCheck(this, Library);
+
+    this.definitions = {};
+  }
+
+  _createClass(Library, [{
+    key: "add",
+    value: function add() {
+      var _this = this;
+
+      for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
+        definitions[_key] = arguments[_key];
+      }
+
+      var additions = definitions.reduce(this._pullDefinitions, {});
+      Object.keys(additions).forEach(function (key) {
+        _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);
+        defineIcons(key, additions[key]);
+        build();
+      });
+    }
+  }, {
+    key: "reset",
+    value: function reset() {
+      this.definitions = {};
+    }
+  }, {
+    key: "_pullDefinitions",
+    value: function _pullDefinitions(additions, definition) {
+      var normalized = definition.prefix && definition.iconName && definition.icon ? {
+        0: definition
+      } : definition;
+      Object.keys(normalized).map(function (key) {
+        var _normalized$key = normalized[key],
+            prefix = _normalized$key.prefix,
+            iconName = _normalized$key.iconName,
+            icon = _normalized$key.icon;
+        if (!additions[prefix]) additions[prefix] = {};
+        additions[prefix][iconName] = icon;
+      });
+      return additions;
+    }
+  }]);
+
+  return Library;
+}();
+
+function ensureCss() {
+  if (config.autoAddCss && !_cssInserted) {
+    insertCss(css());
+
+    _cssInserted = true;
+  }
+}
+
+function apiObject(val, abstractCreator) {
+  Object.defineProperty(val, 'abstract', {
+    get: abstractCreator
+  });
+  Object.defineProperty(val, 'html', {
+    get: function get() {
+      return val.abstract.map(function (a) {
+        return toHtml(a);
+      });
+    }
+  });
+  Object.defineProperty(val, 'node', {
+    get: function get() {
+      if (!IS_DOM) return;
+      var container = DOCUMENT.createElement('div');
+      container.innerHTML = val.html;
+      return container.children;
+    }
+  });
+  return val;
+}
+
+function findIconDefinition(iconLookup) {
+  var _iconLookup$prefix = iconLookup.prefix,
+      prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
+      iconName = iconLookup.iconName;
+  if (!iconName) return;
+  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
+}
+
+function resolveIcons(next) {
+  return function (maybeIconDefinition) {
+    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
+    var mask = params.mask;
+
+    if (mask) {
+      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
+    }
+
+    return next(iconDefinition, _objectSpread({}, params, {
+      mask: mask
+    }));
+  };
+}
+
+var library = new Library();
+var noAuto = function noAuto() {
+  config.autoReplaceSvg = false;
+  config.observeMutations = false;
+  disconnect();
+};
+var _cssInserted = false;
+var dom = {
+  i2svg: function i2svg() {
+    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+    if (IS_DOM) {
+      ensureCss();
+      var _params$node = params.node,
+          node = _params$node === void 0 ? DOCUMENT : _params$node,
+          _params$callback = params.callback,
+          callback = _params$callback === void 0 ? function () {} : _params$callback;
+
+      if (config.searchPseudoElements) {
+        searchPseudoElements(node);
+      }
+
+      return onTree(node, callback);
+    } else {
+      return picked.reject('Operation requires a DOM of some kind.');
+    }
+  },
+  css: css,
+  insertCss: function insertCss$$1() {
+    if (!_cssInserted) {
+      insertCss(css());
+
+      _cssInserted = true;
+    }
+  },
+  watch: function watch() {
+    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
+        observeMutationsRoot = params.observeMutationsRoot;
+
+    if (config.autoReplaceSvg === false) {
+      config.autoReplaceSvg = true;
+    }
+
+    config.observeMutations = true;
+    domready(function () {
+      autoReplace({
+        autoReplaceSvgRoot: autoReplaceSvgRoot
+      });
+      observe({
+        treeCallback: onTree,
+        nodeCallback: onNode,
+        pseudoElementsCallback: searchPseudoElements,
+        observeMutationsRoot: observeMutationsRoot
+      });
+    });
+  }
+};
+var parse = {
+  transform: function transform(transformString) {
+    return parseTransformString(transformString);
+  }
+};
+var icon = resolveIcons(function (iconDefinition) {
+  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _params$transform = params.transform,
+      transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
+      _params$symbol = params.symbol,
+      symbol = _params$symbol === void 0 ? false : _params$symbol,
+      _params$mask = params.mask,
+      mask = _params$mask === void 0 ? null : _params$mask,
+      _params$maskId = params.maskId,
+      maskId = _params$maskId === void 0 ? null : _params$maskId,
+      _params$title = params.title,
+      title = _params$title === void 0 ? null : _params$title,
+      _params$titleId = params.titleId,
+      titleId = _params$titleId === void 0 ? null : _params$titleId,
+      _params$classes = params.classes,
+      classes = _params$classes === void 0 ? [] : _params$classes,
+      _params$attributes = params.attributes,
+      attributes = _params$attributes === void 0 ? {} : _params$attributes,
+      _params$styles = params.styles,
+      styles = _params$styles === void 0 ? {} : _params$styles;
+  if (!iconDefinition) return;
+  var prefix = iconDefinition.prefix,
+      iconName = iconDefinition.iconName,
+      icon = iconDefinition.icon;
+  return apiObject(_objectSpread({
+    type: 'icon'
+  }, iconDefinition), function () {
+    ensureCss();
+
+    if (config.autoA11y) {
+      if (title) {
+        attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
+      } else {
+        attributes['aria-hidden'] = 'true';
+        attributes['focusable'] = 'false';
+      }
+    }
+
+    return makeInlineSvgAbstract({
+      icons: {
+        main: asFoundIcon(icon),
+        mask: mask ? asFoundIcon(mask.icon) : {
+          found: false,
+          width: null,
+          height: null,
+          icon: {}
+        }
+      },
+      prefix: prefix,
+      iconName: iconName,
+      transform: _objectSpread({}, meaninglessTransform, transform),
+      symbol: symbol,
+      title: title,
+      maskId: maskId,
+      titleId: titleId,
+      extra: {
+        attributes: attributes,
+        styles: styles,
+        classes: classes
+      }
+    });
+  });
+});
+var text = function text(content) {
+  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _params$transform2 = params.transform,
+      transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
+      _params$title2 = params.title,
+      title = _params$title2 === void 0 ? null : _params$title2,
+      _params$classes2 = params.classes,
+      classes = _params$classes2 === void 0 ? [] : _params$classes2,
+      _params$attributes2 = params.attributes,
+      attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
+      _params$styles2 = params.styles,
+      styles = _params$styles2 === void 0 ? {} : _params$styles2;
+  return apiObject({
+    type: 'text',
+    content: content
+  }, function () {
+    ensureCss();
+    return makeLayersTextAbstract({
+      content: content,
+      transform: _objectSpread({}, meaninglessTransform, transform),
+      title: title,
+      extra: {
+        attributes: attributes,
+        styles: styles,
+        classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
+      }
+    });
+  });
+};
+var counter = function counter(content) {
+  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _params$title3 = params.title,
+      title = _params$title3 === void 0 ? null : _params$title3,
+      _params$classes3 = params.classes,
+      classes = _params$classes3 === void 0 ? [] : _params$classes3,
+      _params$attributes3 = params.attributes,
+      attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
+      _params$styles3 = params.styles,
+      styles = _params$styles3 === void 0 ? {} : _params$styles3;
+  return apiObject({
+    type: 'counter',
+    content: content
+  }, function () {
+    ensureCss();
+    return makeLayersCounterAbstract({
+      content: content.toString(),
+      title: title,
+      extra: {
+        attributes: attributes,
+        styles: styles,
+        classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
+      }
+    });
+  });
+};
+var layer = function layer(assembler) {
+  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _params$classes4 = params.classes,
+      classes = _params$classes4 === void 0 ? [] : _params$classes4;
+  return apiObject({
+    type: 'layer'
+  }, function () {
+    ensureCss();
+    var children = [];
+    assembler(function (args) {
+      Array.isArray(args) ? args.map(function (a) {
+        children = children.concat(a.abstract);
+      }) : children = children.concat(args.abstract);
+    });
+    return [{
+      tag: 'span',
+      attributes: {
+        class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
+      },
+      children: children
+    }];
+  });
+};
+var api = {
+  noAuto: noAuto,
+  config: config,
+  dom: dom,
+  library: library,
+  parse: parse,
+  findIconDefinition: findIconDefinition,
+  icon: icon,
+  text: text,
+  counter: counter,
+  layer: layer,
+  toHtml: toHtml
+};
+
+var autoReplace = function autoReplace() {
+  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  var _params$autoReplaceSv = params.autoReplaceSvgRoot,
+      autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
+  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
+    node: autoReplaceSvgRoot
+  });
+};
+
+export { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2455 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+  typeof define === 'function' && define.amd ? define(['exports'], factory) :
+  (factory((global['fontawesome-svg-core'] = {})));
+}(this, (function (exports) { 'use strict';
+
+  function _typeof(obj) {
+    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+      _typeof = function (obj) {
+        return typeof obj;
+      };
+    } else {
+      _typeof = function (obj) {
+        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+      };
+    }
+
+    return _typeof(obj);
+  }
+
+  function _classCallCheck(instance, Constructor) {
+    if (!(instance instanceof Constructor)) {
+      throw new TypeError("Cannot call a class as a function");
+    }
+  }
+
+  function _defineProperties(target, props) {
+    for (var i = 0; i < props.length; i++) {
+      var descriptor = props[i];
+      descriptor.enumerable = descriptor.enumerable || false;
+      descriptor.configurable = true;
+      if ("value" in descriptor) descriptor.writable = true;
+      Object.defineProperty(target, descriptor.key, descriptor);
+    }
+  }
+
+  function _createClass(Constructor, protoProps, staticProps) {
+    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+    if (staticProps) _defineProperties(Constructor, staticProps);
+    return Constructor;
+  }
+
+  function _defineProperty(obj, key, value) {
+    if (key in obj) {
+      Object.defineProperty(obj, key, {
+        value: value,
+        enumerable: true,
+        configurable: true,
+        writable: true
+      });
+    } else {
+      obj[key] = value;
+    }
+
+    return obj;
+  }
+
+  function _objectSpread(target) {
+    for (var i = 1; i < arguments.length; i++) {
+      var source = arguments[i] != null ? arguments[i] : {};
+      var ownKeys = Object.keys(source);
+
+      if (typeof Object.getOwnPropertySymbols === 'function') {
+        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+        }));
+      }
+
+      ownKeys.forEach(function (key) {
+        _defineProperty(target, key, source[key]);
+      });
+    }
+
+    return target;
+  }
+
+  function _slicedToArray(arr, i) {
+    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+  }
+
+  function _toConsumableArray(arr) {
+    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+  }
+
+  function _arrayWithoutHoles(arr) {
+    if (Array.isArray(arr)) {
+      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+      return arr2;
+    }
+  }
+
+  function _arrayWithHoles(arr) {
+    if (Array.isArray(arr)) return arr;
+  }
+
+  function _iterableToArray(iter) {
+    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+  }
+
+  function _iterableToArrayLimit(arr, i) {
+    var _arr = [];
+    var _n = true;
+    var _d = false;
+    var _e = undefined;
+
+    try {
+      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+        _arr.push(_s.value);
+
+        if (i && _arr.length === i) break;
+      }
+    } catch (err) {
+      _d = true;
+      _e = err;
+    } finally {
+      try {
+        if (!_n && _i["return"] != null) _i["return"]();
+      } finally {
+        if (_d) throw _e;
+      }
+    }
+
+    return _arr;
+  }
+
+  function _nonIterableSpread() {
+    throw new TypeError("Invalid attempt to spread non-iterable instance");
+  }
+
+  function _nonIterableRest() {
+    throw new TypeError("Invalid attempt to destructure non-iterable instance");
+  }
+
+  var noop = function noop() {};
+
+  var _WINDOW = {};
+  var _DOCUMENT = {};
+  var _MUTATION_OBSERVER = null;
+  var _PERFORMANCE = {
+    mark: noop,
+    measure: noop
+  };
+
+  try {
+    if (typeof window !== 'undefined') _WINDOW = window;
+    if (typeof document !== 'undefined') _DOCUMENT = document;
+    if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
+    if (typeof performance !== 'undefined') _PERFORMANCE = performance;
+  } catch (e) {}
+
+  var _ref = _WINDOW.navigator || {},
+      _ref$userAgent = _ref.userAgent,
+      userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
+
+  var WINDOW = _WINDOW;
+  var DOCUMENT = _DOCUMENT;
+  var MUTATION_OBSERVER = _MUTATION_OBSERVER;
+  var PERFORMANCE = _PERFORMANCE;
+  var IS_BROWSER = !!WINDOW.document;
+  var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
+  var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
+
+  var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
+  var UNITS_IN_GRID = 16;
+  var DEFAULT_FAMILY_PREFIX = 'fa';
+  var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
+  var DATA_FA_I2SVG = 'data-fa-i2svg';
+  var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
+  var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
+  var DATA_PREFIX = 'data-prefix';
+  var DATA_ICON = 'data-icon';
+  var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
+  var MUTATION_APPROACH_ASYNC = 'async';
+  var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
+  var PRODUCTION = function () {
+    try {
+      return process.env.NODE_ENV === 'production';
+    } catch (e) {
+      return false;
+    }
+  }();
+  var PREFIX_TO_STYLE = {
+    'fas': 'solid',
+    'far': 'regular',
+    'fal': 'light',
+    'fad': 'duotone',
+    'fab': 'brands',
+    'fak': 'kit',
+    'fa': 'solid'
+  };
+  var STYLE_TO_PREFIX = {
+    'solid': 'fas',
+    'regular': 'far',
+    'light': 'fal',
+    'duotone': 'fad',
+    'brands': 'fab',
+    'kit': 'fak'
+  };
+  var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
+  var FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?
+
+  var FONT_WEIGHT_TO_PREFIX = {
+    '900': 'fas',
+    '400': 'far',
+    'normal': 'far',
+    '300': 'fal'
+  };
+  var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+  var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
+  var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
+  var DUOTONE_CLASSES = {
+    GROUP: 'group',
+    SWAP_OPACITY: 'swap-opacity',
+    PRIMARY: 'primary',
+    SECONDARY: 'secondary'
+  };
+  var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {
+    return "".concat(n, "x");
+  })).concat(oneToTwenty.map(function (n) {
+    return "w-".concat(n);
+  }));
+
+  var initial = WINDOW.FontAwesomeConfig || {};
+
+  function getAttrConfig(attr) {
+    var element = DOCUMENT.querySelector('script[' + attr + ']');
+
+    if (element) {
+      return element.getAttribute(attr);
+    }
+  }
+
+  function coerce(val) {
+    // Getting an empty string will occur if the attribute is set on the HTML tag but without a value
+    // We'll assume that this is an indication that it should be toggled to true
+    // For example <script data-search-pseudo-elements src="..."></script>
+    if (val === '') return true;
+    if (val === 'false') return false;
+    if (val === 'true') return true;
+    return val;
+  }
+
+  if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
+    var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
+    attrs.forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          attr = _ref2[0],
+          key = _ref2[1];
+
+      var val = coerce(getAttrConfig(attr));
+
+      if (val !== undefined && val !== null) {
+        initial[key] = val;
+      }
+    });
+  }
+
+  var _default = {
+    familyPrefix: DEFAULT_FAMILY_PREFIX,
+    replacementClass: DEFAULT_REPLACEMENT_CLASS,
+    autoReplaceSvg: true,
+    autoAddCss: true,
+    autoA11y: true,
+    searchPseudoElements: false,
+    observeMutations: true,
+    mutateApproach: 'async',
+    keepOriginalSource: true,
+    measurePerformance: false,
+    showMissingIcons: true
+  };
+
+  var _config = _objectSpread({}, _default, initial);
+
+  if (!_config.autoReplaceSvg) _config.observeMutations = false;
+
+  var config = _objectSpread({}, _config);
+
+  WINDOW.FontAwesomeConfig = config;
+
+  var w = WINDOW || {};
+  if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
+  if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
+  if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
+  if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
+  var namespace = w[NAMESPACE_IDENTIFIER];
+
+  var functions = [];
+
+  var listener = function listener() {
+    DOCUMENT.removeEventListener('DOMContentLoaded', listener);
+    loaded = 1;
+    functions.map(function (fn) {
+      return fn();
+    });
+  };
+
+  var loaded = false;
+
+  if (IS_DOM) {
+    loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
+    if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
+  }
+
+  function domready (fn) {
+    if (!IS_DOM) return;
+    loaded ? setTimeout(fn, 0) : functions.push(fn);
+  }
+
+  var PENDING = 'pending';
+  var SETTLED = 'settled';
+  var FULFILLED = 'fulfilled';
+  var REJECTED = 'rejected';
+
+  var NOOP = function NOOP() {};
+
+  var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
+  var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
+  var asyncQueue = [];
+  var asyncTimer;
+
+  function asyncFlush() {
+    // run promise callbacks
+    for (var i = 0; i < asyncQueue.length; i++) {
+      asyncQueue[i][0](asyncQueue[i][1]);
+    } // reset async asyncQueue
+
+
+    asyncQueue = [];
+    asyncTimer = false;
+  }
+
+  function asyncCall(callback, arg) {
+    asyncQueue.push([callback, arg]);
+
+    if (!asyncTimer) {
+      asyncTimer = true;
+      asyncSetTimer(asyncFlush, 0);
+    }
+  }
+
+  function invokeResolver(resolver, promise) {
+    function resolvePromise(value) {
+      resolve(promise, value);
+    }
+
+    function rejectPromise(reason) {
+      reject(promise, reason);
+    }
+
+    try {
+      resolver(resolvePromise, rejectPromise);
+    } catch (e) {
+      rejectPromise(e);
+    }
+  }
+
+  function invokeCallback(subscriber) {
+    var owner = subscriber.owner;
+    var settled = owner._state;
+    var value = owner._data;
+    var callback = subscriber[settled];
+    var promise = subscriber.then;
+
+    if (typeof callback === 'function') {
+      settled = FULFILLED;
+
+      try {
+        value = callback(value);
+      } catch (e) {
+        reject(promise, e);
+      }
+    }
+
+    if (!handleThenable(promise, value)) {
+      if (settled === FULFILLED) {
+        resolve(promise, value);
+      }
+
+      if (settled === REJECTED) {
+        reject(promise, value);
+      }
+    }
+  }
+
+  function handleThenable(promise, value) {
+    var resolved;
+
+    try {
+      if (promise === value) {
+        throw new TypeError('A promises callback cannot return that same promise.');
+      }
+
+      if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
+        // then should be retrieved only once
+        var then = value.then;
+
+        if (typeof then === 'function') {
+          then.call(value, function (val) {
+            if (!resolved) {
+              resolved = true;
+
+              if (value === val) {
+                fulfill(promise, val);
+              } else {
+                resolve(promise, val);
+              }
+            }
+          }, function (reason) {
+            if (!resolved) {
+              resolved = true;
+              reject(promise, reason);
+            }
+          });
+          return true;
+        }
+      }
+    } catch (e) {
+      if (!resolved) {
+        reject(promise, e);
+      }
+
+      return true;
+    }
+
+    return false;
+  }
+
+  function resolve(promise, value) {
+    if (promise === value || !handleThenable(promise, value)) {
+      fulfill(promise, value);
+    }
+  }
+
+  function fulfill(promise, value) {
+    if (promise._state === PENDING) {
+      promise._state = SETTLED;
+      promise._data = value;
+      asyncCall(publishFulfillment, promise);
+    }
+  }
+
+  function reject(promise, reason) {
+    if (promise._state === PENDING) {
+      promise._state = SETTLED;
+      promise._data = reason;
+      asyncCall(publishRejection, promise);
+    }
+  }
+
+  function publish(promise) {
+    promise._then = promise._then.forEach(invokeCallback);
+  }
+
+  function publishFulfillment(promise) {
+    promise._state = FULFILLED;
+    publish(promise);
+  }
+
+  function publishRejection(promise) {
+    promise._state = REJECTED;
+    publish(promise);
+
+    if (!promise._handled && isNode) {
+      global.process.emit('unhandledRejection', promise._data, promise);
+    }
+  }
+
+  function notifyRejectionHandled(promise) {
+    global.process.emit('rejectionHandled', promise);
+  }
+  /**
+   * @class
+   */
+
+
+  function P(resolver) {
+    if (typeof resolver !== 'function') {
+      throw new TypeError('Promise resolver ' + resolver + ' is not a function');
+    }
+
+    if (this instanceof P === false) {
+      throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
+    }
+
+    this._then = [];
+    invokeResolver(resolver, this);
+  }
+
+  P.prototype = {
+    constructor: P,
+    _state: PENDING,
+    _then: null,
+    _data: undefined,
+    _handled: false,
+    then: function then(onFulfillment, onRejection) {
+      var subscriber = {
+        owner: this,
+        then: new this.constructor(NOOP),
+        fulfilled: onFulfillment,
+        rejected: onRejection
+      };
+
+      if ((onRejection || onFulfillment) && !this._handled) {
+        this._handled = true;
+
+        if (this._state === REJECTED && isNode) {
+          asyncCall(notifyRejectionHandled, this);
+        }
+      }
+
+      if (this._state === FULFILLED || this._state === REJECTED) {
+        // already resolved, call callback async
+        asyncCall(invokeCallback, subscriber);
+      } else {
+        // subscribe
+        this._then.push(subscriber);
+      }
+
+      return subscriber.then;
+    },
+    catch: function _catch(onRejection) {
+      return this.then(null, onRejection);
+    }
+  };
+
+  P.all = function (promises) {
+    if (!Array.isArray(promises)) {
+      throw new TypeError('You must pass an array to Promise.all().');
+    }
+
+    return new P(function (resolve, reject) {
+      var results = [];
+      var remaining = 0;
+
+      function resolver(index) {
+        remaining++;
+        return function (value) {
+          results[index] = value;
+
+          if (! --remaining) {
+            resolve(results);
+          }
+        };
+      }
+
+      for (var i = 0, promise; i < promises.length; i++) {
+        promise = promises[i];
+
+        if (promise && typeof promise.then === 'function') {
+          promise.then(resolver(i), reject);
+        } else {
+          results[i] = promise;
+        }
+      }
+
+      if (!remaining) {
+        resolve(results);
+      }
+    });
+  };
+
+  P.race = function (promises) {
+    if (!Array.isArray(promises)) {
+      throw new TypeError('You must pass an array to Promise.race().');
+    }
+
+    return new P(function (resolve, reject) {
+      for (var i = 0, promise; i < promises.length; i++) {
+        promise = promises[i];
+
+        if (promise && typeof promise.then === 'function') {
+          promise.then(resolve, reject);
+        } else {
+          resolve(promise);
+        }
+      }
+    });
+  };
+
+  P.resolve = function (value) {
+    if (value && _typeof(value) === 'object' && value.constructor === P) {
+      return value;
+    }
+
+    return new P(function (resolve) {
+      resolve(value);
+    });
+  };
+
+  P.reject = function (reason) {
+    return new P(function (resolve, reject) {
+      reject(reason);
+    });
+  };
+
+  var picked = typeof Promise === 'function' ? Promise : P;
+
+  var d = UNITS_IN_GRID;
+  var meaninglessTransform = {
+    size: 16,
+    x: 0,
+    y: 0,
+    rotate: 0,
+    flipX: false,
+    flipY: false
+  };
+
+  function isReserved(name) {
+    return ~RESERVED_CLASSES.indexOf(name);
+  }
+  function insertCss(css) {
+    if (!css || !IS_DOM) {
+      return;
+    }
+
+    var style = DOCUMENT.createElement('style');
+    style.setAttribute('type', 'text/css');
+    style.innerHTML = css;
+    var headChildren = DOCUMENT.head.childNodes;
+    var beforeChild = null;
+
+    for (var i = headChildren.length - 1; i > -1; i--) {
+      var child = headChildren[i];
+      var tagName = (child.tagName || '').toUpperCase();
+
+      if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
+        beforeChild = child;
+      }
+    }
+
+    DOCUMENT.head.insertBefore(style, beforeChild);
+    return css;
+  }
+  var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+  function nextUniqueId() {
+    var size = 12;
+    var id = '';
+
+    while (size-- > 0) {
+      id += idPool[Math.random() * 62 | 0];
+    }
+
+    return id;
+  }
+  function toArray(obj) {
+    var array = [];
+
+    for (var i = (obj || []).length >>> 0; i--;) {
+      array[i] = obj[i];
+    }
+
+    return array;
+  }
+  function classArray(node) {
+    if (node.classList) {
+      return toArray(node.classList);
+    } else {
+      return (node.getAttribute('class') || '').split(' ').filter(function (i) {
+        return i;
+      });
+    }
+  }
+  function getIconName(familyPrefix, cls) {
+    var parts = cls.split('-');
+    var prefix = parts[0];
+    var iconName = parts.slice(1).join('-');
+
+    if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
+      return iconName;
+    } else {
+      return null;
+    }
+  }
+  function htmlEscape(str) {
+    return "".concat(str).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+  }
+  function joinAttributes(attributes) {
+    return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
+      return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
+    }, '').trim();
+  }
+  function joinStyles(styles) {
+    return Object.keys(styles || {}).reduce(function (acc, styleName) {
+      return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
+    }, '');
+  }
+  function transformIsMeaningful(transform) {
+    return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
+  }
+  function transformForSvg(_ref) {
+    var transform = _ref.transform,
+        containerWidth = _ref.containerWidth,
+        iconWidth = _ref.iconWidth;
+    var outer = {
+      transform: "translate(".concat(containerWidth / 2, " 256)")
+    };
+    var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
+    var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
+    var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
+    var inner = {
+      transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
+    };
+    var path = {
+      transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
+    };
+    return {
+      outer: outer,
+      inner: inner,
+      path: path
+    };
+  }
+  function transformForCss(_ref2) {
+    var transform = _ref2.transform,
+        _ref2$width = _ref2.width,
+        width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
+        _ref2$height = _ref2.height,
+        height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
+        _ref2$startCentered = _ref2.startCentered,
+        startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
+    var val = '';
+
+    if (startCentered && IS_IE) {
+      val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
+    } else if (startCentered) {
+      val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
+    } else {
+      val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
+    }
+
+    val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
+    val += "rotate(".concat(transform.rotate, "deg) ");
+    return val;
+  }
+
+  var ALL_SPACE = {
+    x: 0,
+    y: 0,
+    width: '100%',
+    height: '100%'
+  };
+
+  function fillBlack(abstract) {
+    var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+    if (abstract.attributes && (abstract.attributes.fill || force)) {
+      abstract.attributes.fill = 'black';
+    }
+
+    return abstract;
+  }
+
+  function deGroup(abstract) {
+    if (abstract.tag === 'g') {
+      return abstract.children;
+    } else {
+      return [abstract];
+    }
+  }
+
+  function makeIconMasking (_ref) {
+    var children = _ref.children,
+        attributes = _ref.attributes,
+        main = _ref.main,
+        mask = _ref.mask,
+        explicitMaskId = _ref.maskId,
+        transform = _ref.transform;
+    var mainWidth = main.width,
+        mainPath = main.icon;
+    var maskWidth = mask.width,
+        maskPath = mask.icon;
+    var trans = transformForSvg({
+      transform: transform,
+      containerWidth: maskWidth,
+      iconWidth: mainWidth
+    });
+    var maskRect = {
+      tag: 'rect',
+      attributes: _objectSpread({}, ALL_SPACE, {
+        fill: 'white'
+      })
+    };
+    var maskInnerGroupChildrenMixin = mainPath.children ? {
+      children: mainPath.children.map(fillBlack)
+    } : {};
+    var maskInnerGroup = {
+      tag: 'g',
+      attributes: _objectSpread({}, trans.inner),
+      children: [fillBlack(_objectSpread({
+        tag: mainPath.tag,
+        attributes: _objectSpread({}, mainPath.attributes, trans.path)
+      }, maskInnerGroupChildrenMixin))]
+    };
+    var maskOuterGroup = {
+      tag: 'g',
+      attributes: _objectSpread({}, trans.outer),
+      children: [maskInnerGroup]
+    };
+    var maskId = "mask-".concat(explicitMaskId || nextUniqueId());
+    var clipId = "clip-".concat(explicitMaskId || nextUniqueId());
+    var maskTag = {
+      tag: 'mask',
+      attributes: _objectSpread({}, ALL_SPACE, {
+        id: maskId,
+        maskUnits: 'userSpaceOnUse',
+        maskContentUnits: 'userSpaceOnUse'
+      }),
+      children: [maskRect, maskOuterGroup]
+    };
+    var defs = {
+      tag: 'defs',
+      children: [{
+        tag: 'clipPath',
+        attributes: {
+          id: clipId
+        },
+        children: deGroup(maskPath)
+      }, maskTag]
+    };
+    children.push(defs, {
+      tag: 'rect',
+      attributes: _objectSpread({
+        fill: 'currentColor',
+        'clip-path': "url(#".concat(clipId, ")"),
+        mask: "url(#".concat(maskId, ")")
+      }, ALL_SPACE)
+    });
+    return {
+      children: children,
+      attributes: attributes
+    };
+  }
+
+  function makeIconStandard (_ref) {
+    var children = _ref.children,
+        attributes = _ref.attributes,
+        main = _ref.main,
+        transform = _ref.transform,
+        styles = _ref.styles;
+    var styleString = joinStyles(styles);
+
+    if (styleString.length > 0) {
+      attributes['style'] = styleString;
+    }
+
+    if (transformIsMeaningful(transform)) {
+      var trans = transformForSvg({
+        transform: transform,
+        containerWidth: main.width,
+        iconWidth: main.width
+      });
+      children.push({
+        tag: 'g',
+        attributes: _objectSpread({}, trans.outer),
+        children: [{
+          tag: 'g',
+          attributes: _objectSpread({}, trans.inner),
+          children: [{
+            tag: main.icon.tag,
+            children: main.icon.children,
+            attributes: _objectSpread({}, main.icon.attributes, trans.path)
+          }]
+        }]
+      });
+    } else {
+      children.push(main.icon);
+    }
+
+    return {
+      children: children,
+      attributes: attributes
+    };
+  }
+
+  function asIcon (_ref) {
+    var children = _ref.children,
+        main = _ref.main,
+        mask = _ref.mask,
+        attributes = _ref.attributes,
+        styles = _ref.styles,
+        transform = _ref.transform;
+
+    if (transformIsMeaningful(transform) && main.found && !mask.found) {
+      var width = main.width,
+          height = main.height;
+      var offset = {
+        x: width / height / 2,
+        y: 0.5
+      };
+      attributes['style'] = joinStyles(_objectSpread({}, styles, {
+        'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
+      }));
+    }
+
+    return [{
+      tag: 'svg',
+      attributes: attributes,
+      children: children
+    }];
+  }
+
+  function asSymbol (_ref) {
+    var prefix = _ref.prefix,
+        iconName = _ref.iconName,
+        children = _ref.children,
+        attributes = _ref.attributes,
+        symbol = _ref.symbol;
+    var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
+    return [{
+      tag: 'svg',
+      attributes: {
+        style: 'display: none;'
+      },
+      children: [{
+        tag: 'symbol',
+        attributes: _objectSpread({}, attributes, {
+          id: id
+        }),
+        children: children
+      }]
+    }];
+  }
+
+  function makeInlineSvgAbstract(params) {
+    var _params$icons = params.icons,
+        main = _params$icons.main,
+        mask = _params$icons.mask,
+        prefix = params.prefix,
+        iconName = params.iconName,
+        transform = params.transform,
+        symbol = params.symbol,
+        title = params.title,
+        maskId = params.maskId,
+        titleId = params.titleId,
+        extra = params.extra,
+        _params$watchable = params.watchable,
+        watchable = _params$watchable === void 0 ? false : _params$watchable;
+
+    var _ref = mask.found ? mask : main,
+        width = _ref.width,
+        height = _ref.height;
+
+    var isUploadedIcon = prefix === 'fak';
+    var widthClass = isUploadedIcon ? '' : "fa-w-".concat(Math.ceil(width / height * 16));
+    var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
+      return extra.classes.indexOf(c) === -1;
+    }).filter(function (c) {
+      return c !== '' || !!c;
+    }).concat(extra.classes).join(' ');
+    var content = {
+      children: [],
+      attributes: _objectSpread({}, extra.attributes, {
+        'data-prefix': prefix,
+        'data-icon': iconName,
+        'class': attrClass,
+        'role': extra.attributes.role || 'img',
+        'xmlns': 'http://www.w3.org/2000/svg',
+        'viewBox': "0 0 ".concat(width, " ").concat(height)
+      })
+    };
+    var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {
+      width: "".concat(width / height * 16 * 0.0625, "em")
+    } : {};
+
+    if (watchable) {
+      content.attributes[DATA_FA_I2SVG] = '';
+    }
+
+    if (title) content.children.push({
+      tag: 'title',
+      attributes: {
+        id: content.attributes['aria-labelledby'] || "title-".concat(titleId || nextUniqueId())
+      },
+      children: [title]
+    });
+
+    var args = _objectSpread({}, content, {
+      prefix: prefix,
+      iconName: iconName,
+      main: main,
+      mask: mask,
+      maskId: maskId,
+      transform: transform,
+      symbol: symbol,
+      styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)
+    });
+
+    var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
+        children = _ref2.children,
+        attributes = _ref2.attributes;
+
+    args.children = children;
+    args.attributes = attributes;
+
+    if (symbol) {
+      return asSymbol(args);
+    } else {
+      return asIcon(args);
+    }
+  }
+  function makeLayersTextAbstract(params) {
+    var content = params.content,
+        width = params.width,
+        height = params.height,
+        transform = params.transform,
+        title = params.title,
+        extra = params.extra,
+        _params$watchable2 = params.watchable,
+        watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
+
+    var attributes = _objectSpread({}, extra.attributes, title ? {
+      'title': title
+    } : {}, {
+      'class': extra.classes.join(' ')
+    });
+
+    if (watchable) {
+      attributes[DATA_FA_I2SVG] = '';
+    }
+
+    var styles = _objectSpread({}, extra.styles);
+
+    if (transformIsMeaningful(transform)) {
+      styles['transform'] = transformForCss({
+        transform: transform,
+        startCentered: true,
+        width: width,
+        height: height
+      });
+      styles['-webkit-transform'] = styles['transform'];
+    }
+
+    var styleString = joinStyles(styles);
+
+    if (styleString.length > 0) {
+      attributes['style'] = styleString;
+    }
+
+    var val = [];
+    val.push({
+      tag: 'span',
+      attributes: attributes,
+      children: [content]
+    });
+
+    if (title) {
+      val.push({
+        tag: 'span',
+        attributes: {
+          class: 'sr-only'
+        },
+        children: [title]
+      });
+    }
+
+    return val;
+  }
+  function makeLayersCounterAbstract(params) {
+    var content = params.content,
+        title = params.title,
+        extra = params.extra;
+
+    var attributes = _objectSpread({}, extra.attributes, title ? {
+      'title': title
+    } : {}, {
+      'class': extra.classes.join(' ')
+    });
+
+    var styleString = joinStyles(extra.styles);
+
+    if (styleString.length > 0) {
+      attributes['style'] = styleString;
+    }
+
+    var val = [];
+    val.push({
+      tag: 'span',
+      attributes: attributes,
+      children: [content]
+    });
+
+    if (title) {
+      val.push({
+        tag: 'span',
+        attributes: {
+          class: 'sr-only'
+        },
+        children: [title]
+      });
+    }
+
+    return val;
+  }
+
+  var noop$1 = function noop() {};
+
+  var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
+    mark: noop$1,
+    measure: noop$1
+  };
+  var preamble = "FA \"5.15.4\"";
+
+  var begin = function begin(name) {
+    p.mark("".concat(preamble, " ").concat(name, " begins"));
+    return function () {
+      return end(name);
+    };
+  };
+
+  var end = function end(name) {
+    p.mark("".concat(preamble, " ").concat(name, " ends"));
+    p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
+  };
+
+  var perf = {
+    begin: begin,
+    end: end
+  };
+
+  /**
+   * Internal helper to bind a function known to have 4 arguments
+   * to a given context.
+   */
+
+  var bindInternal4 = function bindInternal4(func, thisContext) {
+    return function (a, b, c, d) {
+      return func.call(thisContext, a, b, c, d);
+    };
+  };
+
+  /**
+   * # Reduce
+   *
+   * A fast object `.reduce()` implementation.
+   *
+   * @param  {Object}   subject      The object to reduce over.
+   * @param  {Function} fn           The reducer function.
+   * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].
+   * @param  {Object}   thisContext  The context for the reducer.
+   * @return {mixed}                 The final result.
+   */
+
+
+  var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
+    var keys = Object.keys(subject),
+        length = keys.length,
+        iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
+        i,
+        key,
+        result;
+
+    if (initialValue === undefined) {
+      i = 1;
+      result = subject[keys[0]];
+    } else {
+      i = 0;
+      result = initialValue;
+    }
+
+    for (; i < length; i++) {
+      key = keys[i];
+      result = iterator(result, subject[key], key, subject);
+    }
+
+    return result;
+  };
+
+  function toHex(unicode) {
+    var result = '';
+
+    for (var i = 0; i < unicode.length; i++) {
+      var hex = unicode.charCodeAt(i).toString(16);
+      result += ('000' + hex).slice(-4);
+    }
+
+    return result;
+  }
+
+  function defineIcons(prefix, icons) {
+    var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+    var _params$skipHooks = params.skipHooks,
+        skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
+    var normalized = Object.keys(icons).reduce(function (acc, iconName) {
+      var icon = icons[iconName];
+      var expanded = !!icon.icon;
+
+      if (expanded) {
+        acc[icon.iconName] = icon.icon;
+      } else {
+        acc[iconName] = icon;
+      }
+
+      return acc;
+    }, {});
+
+    if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
+      namespace.hooks.addPack(prefix, normalized);
+    } else {
+      namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);
+    }
+    /**
+     * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
+     * of new styles we needed to differentiate between them. Prefix `fa` is now an alias
+     * for `fas` so we'll easy the upgrade process for our users by automatically defining
+     * this as well.
+     */
+
+
+    if (prefix === 'fas') {
+      defineIcons('fa', icons);
+    }
+  }
+
+  var styles = namespace.styles,
+      shims = namespace.shims;
+  var _byUnicode = {};
+  var _byLigature = {};
+  var _byOldName = {};
+  var build = function build() {
+    var lookup = function lookup(reducer) {
+      return reduce(styles, function (o, style, prefix) {
+        o[prefix] = reduce(style, reducer, {});
+        return o;
+      }, {});
+    };
+
+    _byUnicode = lookup(function (acc, icon, iconName) {
+      if (icon[3]) {
+        acc[icon[3]] = iconName;
+      }
+
+      return acc;
+    });
+    _byLigature = lookup(function (acc, icon, iconName) {
+      var ligatures = icon[2];
+      acc[iconName] = iconName;
+      ligatures.forEach(function (ligature) {
+        acc[ligature] = iconName;
+      });
+      return acc;
+    });
+    var hasRegular = 'far' in styles;
+    _byOldName = reduce(shims, function (acc, shim) {
+      var oldName = shim[0];
+      var prefix = shim[1];
+      var iconName = shim[2];
+
+      if (prefix === 'far' && !hasRegular) {
+        prefix = 'fas';
+      }
+
+      acc[oldName] = {
+        prefix: prefix,
+        iconName: iconName
+      };
+      return acc;
+    }, {});
+  };
+  build();
+  function byUnicode(prefix, unicode) {
+    return (_byUnicode[prefix] || {})[unicode];
+  }
+  function byLigature(prefix, ligature) {
+    return (_byLigature[prefix] || {})[ligature];
+  }
+  function byOldName(name) {
+    return _byOldName[name] || {
+      prefix: null,
+      iconName: null
+    };
+  }
+
+  var styles$1 = namespace.styles;
+  var emptyCanonicalIcon = function emptyCanonicalIcon() {
+    return {
+      prefix: null,
+      iconName: null,
+      rest: []
+    };
+  };
+  function getCanonicalIcon(values) {
+    return values.reduce(function (acc, cls) {
+      var iconName = getIconName(config.familyPrefix, cls);
+
+      if (styles$1[cls]) {
+        acc.prefix = cls;
+      } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {
+        acc.prefix = cls;
+      } else if (iconName) {
+        var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
+        acc.iconName = shim.iconName || iconName;
+        acc.prefix = shim.prefix || acc.prefix;
+      } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
+        acc.rest.push(cls);
+      }
+
+      return acc;
+    }, emptyCanonicalIcon());
+  }
+  function iconFromMapping(mapping, prefix, iconName) {
+    if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
+      return {
+        prefix: prefix,
+        iconName: iconName,
+        icon: mapping[prefix][iconName]
+      };
+    }
+  }
+
+  function toHtml(abstractNodes) {
+    var tag = abstractNodes.tag,
+        _abstractNodes$attrib = abstractNodes.attributes,
+        attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
+        _abstractNodes$childr = abstractNodes.children,
+        children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
+
+    if (typeof abstractNodes === 'string') {
+      return htmlEscape(abstractNodes);
+    } else {
+      return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "</").concat(tag, ">");
+    }
+  }
+
+  var noop$2 = function noop() {};
+
+  function isWatched(node) {
+    var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
+    return typeof i2svg === 'string';
+  }
+
+  function getMutator() {
+    if (config.autoReplaceSvg === true) {
+      return mutators.replace;
+    }
+
+    var mutator = mutators[config.autoReplaceSvg];
+    return mutator || mutators.replace;
+  }
+
+  var mutators = {
+    replace: function replace(mutation) {
+      var node = mutation[0];
+      var abstract = mutation[1];
+      var newOuterHTML = abstract.map(function (a) {
+        return toHtml(a);
+      }).join('\n');
+
+      if (node.parentNode && node.outerHTML) {
+        node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "<!-- ".concat(node.outerHTML, " Font Awesome fontawesome.com -->") : '');
+      } else if (node.parentNode) {
+        var newNode = document.createElement('span');
+        node.parentNode.replaceChild(newNode, node);
+        newNode.outerHTML = newOuterHTML;
+      }
+    },
+    nest: function nest(mutation) {
+      var node = mutation[0];
+      var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
+      // Short-circuit to the standard replacement
+
+      if (~classArray(node).indexOf(config.replacementClass)) {
+        return mutators.replace(mutation);
+      }
+
+      var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
+      delete abstract[0].attributes.style;
+      delete abstract[0].attributes.id;
+      var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
+        if (cls === config.replacementClass || cls.match(forSvg)) {
+          acc.toSvg.push(cls);
+        } else {
+          acc.toNode.push(cls);
+        }
+
+        return acc;
+      }, {
+        toNode: [],
+        toSvg: []
+      });
+      abstract[0].attributes.class = splitClasses.toSvg.join(' ');
+      var newInnerHTML = abstract.map(function (a) {
+        return toHtml(a);
+      }).join('\n');
+      node.setAttribute('class', splitClasses.toNode.join(' '));
+      node.setAttribute(DATA_FA_I2SVG, '');
+      node.innerHTML = newInnerHTML;
+    }
+  };
+
+  function performOperationSync(op) {
+    op();
+  }
+
+  function perform(mutations, callback) {
+    var callbackFunction = typeof callback === 'function' ? callback : noop$2;
+
+    if (mutations.length === 0) {
+      callbackFunction();
+    } else {
+      var frame = performOperationSync;
+
+      if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {
+        frame = WINDOW.requestAnimationFrame || performOperationSync;
+      }
+
+      frame(function () {
+        var mutator = getMutator();
+        var mark = perf.begin('mutate');
+        mutations.map(mutator);
+        mark();
+        callbackFunction();
+      });
+    }
+  }
+  var disabled = false;
+  function disableObservation() {
+    disabled = true;
+  }
+  function enableObservation() {
+    disabled = false;
+  }
+  var mo = null;
+  function observe(options) {
+    if (!MUTATION_OBSERVER) {
+      return;
+    }
+
+    if (!config.observeMutations) {
+      return;
+    }
+
+    var treeCallback = options.treeCallback,
+        nodeCallback = options.nodeCallback,
+        pseudoElementsCallback = options.pseudoElementsCallback,
+        _options$observeMutat = options.observeMutationsRoot,
+        observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
+    mo = new MUTATION_OBSERVER(function (objects) {
+      if (disabled) return;
+      toArray(objects).forEach(function (mutationRecord) {
+        if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
+          if (config.searchPseudoElements) {
+            pseudoElementsCallback(mutationRecord.target);
+          }
+
+          treeCallback(mutationRecord.target);
+        }
+
+        if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
+          pseudoElementsCallback(mutationRecord.target.parentNode);
+        }
+
+        if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
+          if (mutationRecord.attributeName === 'class') {
+            var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
+                prefix = _getCanonicalIcon.prefix,
+                iconName = _getCanonicalIcon.iconName;
+
+            if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
+            if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
+          } else {
+            nodeCallback(mutationRecord.target);
+          }
+        }
+      });
+    });
+    if (!IS_DOM) return;
+    mo.observe(observeMutationsRoot, {
+      childList: true,
+      attributes: true,
+      characterData: true,
+      subtree: true
+    });
+  }
+  function disconnect() {
+    if (!mo) return;
+    mo.disconnect();
+  }
+
+  function styleParser (node) {
+    var style = node.getAttribute('style');
+    var val = [];
+
+    if (style) {
+      val = style.split(';').reduce(function (acc, style) {
+        var styles = style.split(':');
+        var prop = styles[0];
+        var value = styles.slice(1);
+
+        if (prop && value.length > 0) {
+          acc[prop] = value.join(':').trim();
+        }
+
+        return acc;
+      }, {});
+    }
+
+    return val;
+  }
+
+  function classParser (node) {
+    var existingPrefix = node.getAttribute('data-prefix');
+    var existingIconName = node.getAttribute('data-icon');
+    var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
+    var val = getCanonicalIcon(classArray(node));
+
+    if (existingPrefix && existingIconName) {
+      val.prefix = existingPrefix;
+      val.iconName = existingIconName;
+    }
+
+    if (val.prefix && innerText.length > 1) {
+      val.iconName = byLigature(val.prefix, node.innerText);
+    } else if (val.prefix && innerText.length === 1) {
+      val.iconName = byUnicode(val.prefix, toHex(node.innerText));
+    }
+
+    return val;
+  }
+
+  var parseTransformString = function parseTransformString(transformString) {
+    var transform = {
+      size: 16,
+      x: 0,
+      y: 0,
+      flipX: false,
+      flipY: false,
+      rotate: 0
+    };
+
+    if (!transformString) {
+      return transform;
+    } else {
+      return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
+        var parts = n.toLowerCase().split('-');
+        var first = parts[0];
+        var rest = parts.slice(1).join('-');
+
+        if (first && rest === 'h') {
+          acc.flipX = true;
+          return acc;
+        }
+
+        if (first && rest === 'v') {
+          acc.flipY = true;
+          return acc;
+        }
+
+        rest = parseFloat(rest);
+
+        if (isNaN(rest)) {
+          return acc;
+        }
+
+        switch (first) {
+          case 'grow':
+            acc.size = acc.size + rest;
+            break;
+
+          case 'shrink':
+            acc.size = acc.size - rest;
+            break;
+
+          case 'left':
+            acc.x = acc.x - rest;
+            break;
+
+          case 'right':
+            acc.x = acc.x + rest;
+            break;
+
+          case 'up':
+            acc.y = acc.y - rest;
+            break;
+
+          case 'down':
+            acc.y = acc.y + rest;
+            break;
+
+          case 'rotate':
+            acc.rotate = acc.rotate + rest;
+            break;
+        }
+
+        return acc;
+      }, transform);
+    }
+  };
+  function transformParser (node) {
+    return parseTransformString(node.getAttribute('data-fa-transform'));
+  }
+
+  function symbolParser (node) {
+    var symbol = node.getAttribute('data-fa-symbol');
+    return symbol === null ? false : symbol === '' ? true : symbol;
+  }
+
+  function attributesParser (node) {
+    var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
+      if (acc.name !== 'class' && acc.name !== 'style') {
+        acc[attr.name] = attr.value;
+      }
+
+      return acc;
+    }, {});
+    var title = node.getAttribute('title');
+    var titleId = node.getAttribute('data-fa-title-id');
+
+    if (config.autoA11y) {
+      if (title) {
+        extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
+      } else {
+        extraAttributes['aria-hidden'] = 'true';
+        extraAttributes['focusable'] = 'false';
+      }
+    }
+
+    return extraAttributes;
+  }
+
+  function maskParser (node) {
+    var mask = node.getAttribute('data-fa-mask');
+
+    if (!mask) {
+      return emptyCanonicalIcon();
+    } else {
+      return getCanonicalIcon(mask.split(' ').map(function (i) {
+        return i.trim();
+      }));
+    }
+  }
+
+  function blankMeta() {
+    return {
+      iconName: null,
+      title: null,
+      titleId: null,
+      prefix: null,
+      transform: meaninglessTransform,
+      symbol: false,
+      mask: null,
+      maskId: null,
+      extra: {
+        classes: [],
+        styles: {},
+        attributes: {}
+      }
+    };
+  }
+  function parseMeta(node) {
+    var _classParser = classParser(node),
+        iconName = _classParser.iconName,
+        prefix = _classParser.prefix,
+        extraClasses = _classParser.rest;
+
+    var extraStyles = styleParser(node);
+    var transform = transformParser(node);
+    var symbol = symbolParser(node);
+    var extraAttributes = attributesParser(node);
+    var mask = maskParser(node);
+    return {
+      iconName: iconName,
+      title: node.getAttribute('title'),
+      titleId: node.getAttribute('data-fa-title-id'),
+      prefix: prefix,
+      transform: transform,
+      symbol: symbol,
+      mask: mask,
+      maskId: node.getAttribute('data-fa-mask-id'),
+      extra: {
+        classes: extraClasses,
+        styles: extraStyles,
+        attributes: extraAttributes
+      }
+    };
+  }
+
+  function MissingIcon(error) {
+    this.name = 'MissingIcon';
+    this.message = error || 'Icon unavailable';
+    this.stack = new Error().stack;
+  }
+  MissingIcon.prototype = Object.create(Error.prototype);
+  MissingIcon.prototype.constructor = MissingIcon;
+
+  var FILL = {
+    fill: 'currentColor'
+  };
+  var ANIMATION_BASE = {
+    attributeType: 'XML',
+    repeatCount: 'indefinite',
+    dur: '2s'
+  };
+  var RING = {
+    tag: 'path',
+    attributes: _objectSpread({}, FILL, {
+      d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
+    })
+  };
+
+  var OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {
+    attributeName: 'opacity'
+  });
+
+  var DOT = {
+    tag: 'circle',
+    attributes: _objectSpread({}, FILL, {
+      cx: '256',
+      cy: '364',
+      r: '28'
+    }),
+    children: [{
+      tag: 'animate',
+      attributes: _objectSpread({}, ANIMATION_BASE, {
+        attributeName: 'r',
+        values: '28;14;28;28;14;28;'
+      })
+    }, {
+      tag: 'animate',
+      attributes: _objectSpread({}, OPACITY_ANIMATE, {
+        values: '1;0;1;1;0;1;'
+      })
+    }]
+  };
+  var QUESTION = {
+    tag: 'path',
+    attributes: _objectSpread({}, FILL, {
+      opacity: '1',
+      d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
+    }),
+    children: [{
+      tag: 'animate',
+      attributes: _objectSpread({}, OPACITY_ANIMATE, {
+        values: '1;0;0;0;0;1;'
+      })
+    }]
+  };
+  var EXCLAMATION = {
+    tag: 'path',
+    attributes: _objectSpread({}, FILL, {
+      opacity: '0',
+      d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
+    }),
+    children: [{
+      tag: 'animate',
+      attributes: _objectSpread({}, OPACITY_ANIMATE, {
+        values: '0;0;1;1;0;0;'
+      })
+    }]
+  };
+  var missing = {
+    tag: 'g',
+    children: [RING, DOT, QUESTION, EXCLAMATION]
+  };
+
+  var styles$2 = namespace.styles;
+  function asFoundIcon(icon) {
+    var width = icon[0];
+    var height = icon[1];
+
+    var _icon$slice = icon.slice(4),
+        _icon$slice2 = _slicedToArray(_icon$slice, 1),
+        vectorData = _icon$slice2[0];
+
+    var element = null;
+
+    if (Array.isArray(vectorData)) {
+      element = {
+        tag: 'g',
+        attributes: {
+          class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.GROUP)
+        },
+        children: [{
+          tag: 'path',
+          attributes: {
+            class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.SECONDARY),
+            fill: 'currentColor',
+            d: vectorData[0]
+          }
+        }, {
+          tag: 'path',
+          attributes: {
+            class: "".concat(config.familyPrefix, "-").concat(DUOTONE_CLASSES.PRIMARY),
+            fill: 'currentColor',
+            d: vectorData[1]
+          }
+        }]
+      };
+    } else {
+      element = {
+        tag: 'path',
+        attributes: {
+          fill: 'currentColor',
+          d: vectorData
+        }
+      };
+    }
+
+    return {
+      found: true,
+      width: width,
+      height: height,
+      icon: element
+    };
+  }
+  function findIcon(iconName, prefix) {
+    return new picked(function (resolve, reject) {
+      var val = {
+        found: false,
+        width: 512,
+        height: 512,
+        icon: missing
+      };
+
+      if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
+        var icon = styles$2[prefix][iconName];
+        return resolve(asFoundIcon(icon));
+      }
+
+      if (iconName && prefix && !config.showMissingIcons) {
+        reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
+      } else {
+        resolve(val);
+      }
+    });
+  }
+
+  var styles$3 = namespace.styles;
+
+  function generateSvgReplacementMutation(node, nodeMeta) {
+    var iconName = nodeMeta.iconName,
+        title = nodeMeta.title,
+        titleId = nodeMeta.titleId,
+        prefix = nodeMeta.prefix,
+        transform = nodeMeta.transform,
+        symbol = nodeMeta.symbol,
+        mask = nodeMeta.mask,
+        maskId = nodeMeta.maskId,
+        extra = nodeMeta.extra;
+    return new picked(function (resolve, reject) {
+      picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
+        var _ref2 = _slicedToArray(_ref, 2),
+            main = _ref2[0],
+            mask = _ref2[1];
+
+        resolve([node, makeInlineSvgAbstract({
+          icons: {
+            main: main,
+            mask: mask
+          },
+          prefix: prefix,
+          iconName: iconName,
+          transform: transform,
+          symbol: symbol,
+          mask: mask,
+          maskId: maskId,
+          title: title,
+          titleId: titleId,
+          extra: extra,
+          watchable: true
+        })]);
+      });
+    });
+  }
+
+  function generateLayersText(node, nodeMeta) {
+    var title = nodeMeta.title,
+        transform = nodeMeta.transform,
+        extra = nodeMeta.extra;
+    var width = null;
+    var height = null;
+
+    if (IS_IE) {
+      var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
+      var boundingClientRect = node.getBoundingClientRect();
+      width = boundingClientRect.width / computedFontSize;
+      height = boundingClientRect.height / computedFontSize;
+    }
+
+    if (config.autoA11y && !title) {
+      extra.attributes['aria-hidden'] = 'true';
+    }
+
+    return picked.resolve([node, makeLayersTextAbstract({
+      content: node.innerHTML,
+      width: width,
+      height: height,
+      transform: transform,
+      title: title,
+      extra: extra,
+      watchable: true
+    })]);
+  }
+
+  function generateMutation(node) {
+    var nodeMeta = parseMeta(node);
+
+    if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
+      return generateLayersText(node, nodeMeta);
+    } else {
+      return generateSvgReplacementMutation(node, nodeMeta);
+    }
+  }
+
+  function onTree(root) {
+    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+    if (!IS_DOM) return;
+    var htmlClassList = DOCUMENT.documentElement.classList;
+
+    var hclAdd = function hclAdd(suffix) {
+      return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
+    };
+
+    var hclRemove = function hclRemove(suffix) {
+      return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
+    };
+
+    var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
+    var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
+      return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
+    })).join(', ');
+
+    if (prefixesDomQuery.length === 0) {
+      return;
+    }
+
+    var candidates = [];
+
+    try {
+      candidates = toArray(root.querySelectorAll(prefixesDomQuery));
+    } catch (e) {// noop
+    }
+
+    if (candidates.length > 0) {
+      hclAdd('pending');
+      hclRemove('complete');
+    } else {
+      return;
+    }
+
+    var mark = perf.begin('onTree');
+    var mutations = candidates.reduce(function (acc, node) {
+      try {
+        var mutation = generateMutation(node);
+
+        if (mutation) {
+          acc.push(mutation);
+        }
+      } catch (e) {
+        if (!PRODUCTION) {
+          if (e instanceof MissingIcon) {
+            console.error(e);
+          }
+        }
+      }
+
+      return acc;
+    }, []);
+    return new picked(function (resolve, reject) {
+      picked.all(mutations).then(function (resolvedMutations) {
+        perform(resolvedMutations, function () {
+          hclAdd('active');
+          hclAdd('complete');
+          hclRemove('pending');
+          if (typeof callback === 'function') callback();
+          mark();
+          resolve();
+        });
+      }).catch(function () {
+        mark();
+        reject();
+      });
+    });
+  }
+  function onNode(node) {
+    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+    generateMutation(node).then(function (mutation) {
+      if (mutation) {
+        perform([mutation], callback);
+      }
+    });
+  }
+
+  function replaceForPosition(node, position) {
+    var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
+    return new picked(function (resolve, reject) {
+      if (node.getAttribute(pendingAttribute) !== null) {
+        // This node is already being processed
+        return resolve();
+      }
+
+      var children = toArray(node.children);
+      var alreadyProcessedPseudoElement = children.filter(function (c) {
+        return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
+      })[0];
+      var styles = WINDOW.getComputedStyle(node, position);
+      var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
+      var fontWeight = styles.getPropertyValue('font-weight');
+      var content = styles.getPropertyValue('content');
+
+      if (alreadyProcessedPseudoElement && !fontFamily) {
+        // If we've already processed it but the current computed style does not result in a font-family,
+        // that probably means that a class name that was previously present to make the icon has been
+        // removed. So we now should delete the icon.
+        node.removeChild(alreadyProcessedPseudoElement);
+        return resolve();
+      } else if (fontFamily && content !== 'none' && content !== '') {
+        var _content = styles.getPropertyValue('content');
+
+        var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
+        var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);
+        var iconName = byUnicode(prefix, hexValue);
+        var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't
+        // already done so with the same prefix and iconName
+
+        if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {
+          node.setAttribute(pendingAttribute, iconIdentifier);
+
+          if (alreadyProcessedPseudoElement) {
+            // Delete the old one, since we're replacing it with a new one
+            node.removeChild(alreadyProcessedPseudoElement);
+          }
+
+          var meta = blankMeta();
+          var extra = meta.extra;
+          extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
+          findIcon(iconName, prefix).then(function (main) {
+            var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {
+              icons: {
+                main: main,
+                mask: emptyCanonicalIcon()
+              },
+              prefix: prefix,
+              iconName: iconIdentifier,
+              extra: extra,
+              watchable: true
+            }));
+            var element = DOCUMENT.createElement('svg');
+
+            if (position === ':before') {
+              node.insertBefore(element, node.firstChild);
+            } else {
+              node.appendChild(element);
+            }
+
+            element.outerHTML = abstract.map(function (a) {
+              return toHtml(a);
+            }).join('\n');
+            node.removeAttribute(pendingAttribute);
+            resolve();
+          }).catch(reject);
+        } else {
+          resolve();
+        }
+      } else {
+        resolve();
+      }
+    });
+  }
+
+  function replace(node) {
+    return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
+  }
+
+  function processable(node) {
+    return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
+  }
+
+  function searchPseudoElements (root) {
+    if (!IS_DOM) return;
+    return new picked(function (resolve, reject) {
+      var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
+      var end = perf.begin('searchPseudoElements');
+      disableObservation();
+      picked.all(operations).then(function () {
+        end();
+        enableObservation();
+        resolve();
+      }).catch(function () {
+        end();
+        enableObservation();
+        reject();
+      });
+    });
+  }
+
+  var baseStyles = "svg:not(:root).svg-inline--fa {\n  overflow: visible;\n}\n\n.svg-inline--fa {\n  display: inline-block;\n  font-size: inherit;\n  height: 1em;\n  overflow: visible;\n  vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n  vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n  width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n  width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n  width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n  width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n  width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n  width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n  width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n  width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n  width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n  width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n  width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n  width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n  width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n  width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n  width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n  width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n  width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n  width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n  width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n  width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n  margin-right: 0.3em;\n  width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n  margin-left: 0.3em;\n  width: auto;\n}\n.svg-inline--fa.fa-border {\n  height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n  width: 2em;\n}\n.svg-inline--fa.fa-fw {\n  width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.fa-layers {\n  display: inline-block;\n  height: 1em;\n  position: relative;\n  text-align: center;\n  vertical-align: -0.125em;\n  width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n  -webkit-transform-origin: center center;\n          transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n  display: inline-block;\n  position: absolute;\n  text-align: center;\n}\n\n.fa-layers-text {\n  left: 50%;\n  top: 50%;\n  -webkit-transform: translate(-50%, -50%);\n          transform: translate(-50%, -50%);\n  -webkit-transform-origin: center center;\n          transform-origin: center center;\n}\n\n.fa-layers-counter {\n  background-color: #ff253a;\n  border-radius: 1em;\n  -webkit-box-sizing: border-box;\n          box-sizing: border-box;\n  color: #fff;\n  height: 1.5em;\n  line-height: 1;\n  max-width: 5em;\n  min-width: 1.5em;\n  overflow: hidden;\n  padding: 0.25em;\n  right: 0;\n  text-overflow: ellipsis;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n  bottom: 0;\n  right: 0;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom right;\n          transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n  bottom: 0;\n  left: 0;\n  right: auto;\n  top: auto;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: bottom left;\n          transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n  right: 0;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top right;\n          transform-origin: top right;\n}\n\n.fa-layers-top-left {\n  left: 0;\n  right: auto;\n  top: 0;\n  -webkit-transform: scale(0.25);\n          transform: scale(0.25);\n  -webkit-transform-origin: top left;\n          transform-origin: top left;\n}\n\n.fa-lg {\n  font-size: 1.3333333333em;\n  line-height: 0.75em;\n  vertical-align: -0.0667em;\n}\n\n.fa-xs {\n  font-size: 0.75em;\n}\n\n.fa-sm {\n  font-size: 0.875em;\n}\n\n.fa-1x {\n  font-size: 1em;\n}\n\n.fa-2x {\n  font-size: 2em;\n}\n\n.fa-3x {\n  font-size: 3em;\n}\n\n.fa-4x {\n  font-size: 4em;\n}\n\n.fa-5x {\n  font-size: 5em;\n}\n\n.fa-6x {\n  font-size: 6em;\n}\n\n.fa-7x {\n  font-size: 7em;\n}\n\n.fa-8x {\n  font-size: 8em;\n}\n\n.fa-9x {\n  font-size: 9em;\n}\n\n.fa-10x {\n  font-size: 10em;\n}\n\n.fa-fw {\n  text-align: center;\n  width: 1.25em;\n}\n\n.fa-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0;\n}\n.fa-ul > li {\n  position: relative;\n}\n\n.fa-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit;\n}\n\n.fa-border {\n  border: solid 0.08em #eee;\n  border-radius: 0.1em;\n  padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n  float: left;\n}\n\n.fa-pull-right {\n  float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n  margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n  margin-left: 0.3em;\n}\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n  }\n}\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n  }\n}\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n          transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n          transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n          transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n          transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n          transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(-1, -1);\n          transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n  -webkit-filter: none;\n          filter: none;\n}\n\n.fa-stack {\n  display: inline-block;\n  height: 2em;\n  position: relative;\n  width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n  bottom: 0;\n  left: 0;\n  margin: auto;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n  height: 1em;\n  width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n  height: 2em;\n  width: 2.5em;\n}\n\n.fa-inverse {\n  color: #fff;\n}\n\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  clip: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  position: static;\n  width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n  fill: var(--fa-primary-color, currentColor);\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n  fill: var(--fa-secondary-color, currentColor);\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n  opacity: 0.4;\n  opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n  opacity: 1;\n  opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n  fill: black;\n}\n\n.fad.fa-inverse {\n  color: #fff;\n}";
+
+  function css () {
+    var dfp = DEFAULT_FAMILY_PREFIX;
+    var drc = DEFAULT_REPLACEMENT_CLASS;
+    var fp = config.familyPrefix;
+    var rc = config.replacementClass;
+    var s = baseStyles;
+
+    if (fp !== dfp || rc !== drc) {
+      var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
+      var customPropPatt = new RegExp("\\--".concat(dfp, "\\-"), 'g');
+      var rPatt = new RegExp("\\.".concat(drc), 'g');
+      s = s.replace(dPatt, ".".concat(fp, "-")).replace(customPropPatt, "--".concat(fp, "-")).replace(rPatt, ".".concat(rc));
+    }
+
+    return s;
+  }
+
+  var Library =
+  /*#__PURE__*/
+  function () {
+    function Library() {
+      _classCallCheck(this, Library);
+
+      this.definitions = {};
+    }
+
+    _createClass(Library, [{
+      key: "add",
+      value: function add() {
+        var _this = this;
+
+        for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
+          definitions[_key] = arguments[_key];
+        }
+
+        var additions = definitions.reduce(this._pullDefinitions, {});
+        Object.keys(additions).forEach(function (key) {
+          _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);
+          defineIcons(key, additions[key]);
+          build();
+        });
+      }
+    }, {
+      key: "reset",
+      value: function reset() {
+        this.definitions = {};
+      }
+    }, {
+      key: "_pullDefinitions",
+      value: function _pullDefinitions(additions, definition) {
+        var normalized = definition.prefix && definition.iconName && definition.icon ? {
+          0: definition
+        } : definition;
+        Object.keys(normalized).map(function (key) {
+          var _normalized$key = normalized[key],
+              prefix = _normalized$key.prefix,
+              iconName = _normalized$key.iconName,
+              icon = _normalized$key.icon;
+          if (!additions[prefix]) additions[prefix] = {};
+          additions[prefix][iconName] = icon;
+        });
+        return additions;
+      }
+    }]);
+
+    return Library;
+  }();
+
+  function ensureCss() {
+    if (config.autoAddCss && !_cssInserted) {
+      insertCss(css());
+
+      _cssInserted = true;
+    }
+  }
+
+  function apiObject(val, abstractCreator) {
+    Object.defineProperty(val, 'abstract', {
+      get: abstractCreator
+    });
+    Object.defineProperty(val, 'html', {
+      get: function get() {
+        return val.abstract.map(function (a) {
+          return toHtml(a);
+        });
+      }
+    });
+    Object.defineProperty(val, 'node', {
+      get: function get() {
+        if (!IS_DOM) return;
+        var container = DOCUMENT.createElement('div');
+        container.innerHTML = val.html;
+        return container.children;
+      }
+    });
+    return val;
+  }
+
+  function findIconDefinition(iconLookup) {
+    var _iconLookup$prefix = iconLookup.prefix,
+        prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
+        iconName = iconLookup.iconName;
+    if (!iconName) return;
+    return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
+  }
+
+  function resolveIcons(next) {
+    return function (maybeIconDefinition) {
+      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+      var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
+      var mask = params.mask;
+
+      if (mask) {
+        mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
+      }
+
+      return next(iconDefinition, _objectSpread({}, params, {
+        mask: mask
+      }));
+    };
+  }
+
+  var library = new Library();
+  var noAuto = function noAuto() {
+    config.autoReplaceSvg = false;
+    config.observeMutations = false;
+    disconnect();
+  };
+  var _cssInserted = false;
+  var dom = {
+    i2svg: function i2svg() {
+      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+      if (IS_DOM) {
+        ensureCss();
+        var _params$node = params.node,
+            node = _params$node === void 0 ? DOCUMENT : _params$node,
+            _params$callback = params.callback,
+            callback = _params$callback === void 0 ? function () {} : _params$callback;
+
+        if (config.searchPseudoElements) {
+          searchPseudoElements(node);
+        }
+
+        return onTree(node, callback);
+      } else {
+        return picked.reject('Operation requires a DOM of some kind.');
+      }
+    },
+    css: css,
+    insertCss: function insertCss$$1() {
+      if (!_cssInserted) {
+        insertCss(css());
+
+        _cssInserted = true;
+      }
+    },
+    watch: function watch() {
+      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
+          observeMutationsRoot = params.observeMutationsRoot;
+
+      if (config.autoReplaceSvg === false) {
+        config.autoReplaceSvg = true;
+      }
+
+      config.observeMutations = true;
+      domready(function () {
+        autoReplace({
+          autoReplaceSvgRoot: autoReplaceSvgRoot
+        });
+        observe({
+          treeCallback: onTree,
+          nodeCallback: onNode,
+          pseudoElementsCallback: searchPseudoElements,
+          observeMutationsRoot: observeMutationsRoot
+        });
+      });
+    }
+  };
+  var parse = {
+    transform: function transform(transformString) {
+      return parseTransformString(transformString);
+    }
+  };
+  var icon = resolveIcons(function (iconDefinition) {
+    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var _params$transform = params.transform,
+        transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
+        _params$symbol = params.symbol,
+        symbol = _params$symbol === void 0 ? false : _params$symbol,
+        _params$mask = params.mask,
+        mask = _params$mask === void 0 ? null : _params$mask,
+        _params$maskId = params.maskId,
+        maskId = _params$maskId === void 0 ? null : _params$maskId,
+        _params$title = params.title,
+        title = _params$title === void 0 ? null : _params$title,
+        _params$titleId = params.titleId,
+        titleId = _params$titleId === void 0 ? null : _params$titleId,
+        _params$classes = params.classes,
+        classes = _params$classes === void 0 ? [] : _params$classes,
+        _params$attributes = params.attributes,
+        attributes = _params$attributes === void 0 ? {} : _params$attributes,
+        _params$styles = params.styles,
+        styles = _params$styles === void 0 ? {} : _params$styles;
+    if (!iconDefinition) return;
+    var prefix = iconDefinition.prefix,
+        iconName = iconDefinition.iconName,
+        icon = iconDefinition.icon;
+    return apiObject(_objectSpread({
+      type: 'icon'
+    }, iconDefinition), function () {
+      ensureCss();
+
+      if (config.autoA11y) {
+        if (title) {
+          attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(titleId || nextUniqueId());
+        } else {
+          attributes['aria-hidden'] = 'true';
+          attributes['focusable'] = 'false';
+        }
+      }
+
+      return makeInlineSvgAbstract({
+        icons: {
+          main: asFoundIcon(icon),
+          mask: mask ? asFoundIcon(mask.icon) : {
+            found: false,
+            width: null,
+            height: null,
+            icon: {}
+          }
+        },
+        prefix: prefix,
+        iconName: iconName,
+        transform: _objectSpread({}, meaninglessTransform, transform),
+        symbol: symbol,
+        title: title,
+        maskId: maskId,
+        titleId: titleId,
+        extra: {
+          attributes: attributes,
+          styles: styles,
+          classes: classes
+        }
+      });
+    });
+  });
+  var text = function text(content) {
+    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var _params$transform2 = params.transform,
+        transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
+        _params$title2 = params.title,
+        title = _params$title2 === void 0 ? null : _params$title2,
+        _params$classes2 = params.classes,
+        classes = _params$classes2 === void 0 ? [] : _params$classes2,
+        _params$attributes2 = params.attributes,
+        attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
+        _params$styles2 = params.styles,
+        styles = _params$styles2 === void 0 ? {} : _params$styles2;
+    return apiObject({
+      type: 'text',
+      content: content
+    }, function () {
+      ensureCss();
+      return makeLayersTextAbstract({
+        content: content,
+        transform: _objectSpread({}, meaninglessTransform, transform),
+        title: title,
+        extra: {
+          attributes: attributes,
+          styles: styles,
+          classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
+        }
+      });
+    });
+  };
+  var counter = function counter(content) {
+    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var _params$title3 = params.title,
+        title = _params$title3 === void 0 ? null : _params$title3,
+        _params$classes3 = params.classes,
+        classes = _params$classes3 === void 0 ? [] : _params$classes3,
+        _params$attributes3 = params.attributes,
+        attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
+        _params$styles3 = params.styles,
+        styles = _params$styles3 === void 0 ? {} : _params$styles3;
+    return apiObject({
+      type: 'counter',
+      content: content
+    }, function () {
+      ensureCss();
+      return makeLayersCounterAbstract({
+        content: content.toString(),
+        title: title,
+        extra: {
+          attributes: attributes,
+          styles: styles,
+          classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
+        }
+      });
+    });
+  };
+  var layer = function layer(assembler) {
+    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    var _params$classes4 = params.classes,
+        classes = _params$classes4 === void 0 ? [] : _params$classes4;
+    return apiObject({
+      type: 'layer'
+    }, function () {
+      ensureCss();
+      var children = [];
+      assembler(function (args) {
+        Array.isArray(args) ? args.map(function (a) {
+          children = children.concat(a.abstract);
+        }) : children = children.concat(args.abstract);
+      });
+      return [{
+        tag: 'span',
+        attributes: {
+          class: ["".concat(config.familyPrefix, "-layers")].concat(_toConsumableArray(classes)).join(' ')
+        },
+        children: children
+      }];
+    });
+  };
+  var api = {
+    noAuto: noAuto,
+    config: config,
+    dom: dom,
+    library: library,
+    parse: parse,
+    findIconDefinition: findIconDefinition,
+    icon: icon,
+    text: text,
+    counter: counter,
+    layer: layer,
+    toHtml: toHtml
+  };
+
+  var autoReplace = function autoReplace() {
+    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    var _params$autoReplaceSv = params.autoReplaceSvgRoot,
+        autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
+    if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
+      node: autoReplaceSvgRoot
+    });
+  };
+
+  exports.icon = icon;
+  exports.noAuto = noAuto;
+  exports.config = config;
+  exports.toHtml = toHtml;
+  exports.layer = layer;
+  exports.text = text;
+  exports.counter = counter;
+  exports.library = library;
+  exports.dom = dom;
+  exports.parse = parse;
+  exports.findIconDefinition = findIconDefinition;
+
+  Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/package.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,89 @@
+{
+  "_from": "@fortawesome/fontawesome-svg-core@^1.2.32",
+  "_id": "@fortawesome/fontawesome-svg-core@1.2.36",
+  "_inBundle": false,
+  "_integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
+  "_location": "/@fortawesome/fontawesome-svg-core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@fortawesome/fontawesome-svg-core@^1.2.32",
+    "name": "@fortawesome/fontawesome-svg-core",
+    "escapedName": "@fortawesome%2ffontawesome-svg-core",
+    "scope": "@fortawesome",
+    "rawSpec": "^1.2.32",
+    "saveSpec": null,
+    "fetchSpec": "^1.2.32"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+  "_shasum": "4f2ea6f778298e0c47c6524ce2e7fd58eb6930e3",
+  "_spec": "@fortawesome/fontawesome-svg-core@^1.2.32",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dave Gandy",
+    "email": "dave@fontawesome.com",
+    "url": "http://twitter.com/davegandy"
+  },
+  "bugs": {
+    "url": "http://github.com/FortAwesome/Font-Awesome/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Brian Talbot",
+      "url": "http://twitter.com/talbs"
+    },
+    {
+      "name": "Travis Chase",
+      "url": "http://twitter.com/supercodepoet"
+    },
+    {
+      "name": "Rob Madole",
+      "url": "http://twitter.com/robmadole"
+    },
+    {
+      "name": "Geremia Taglialatela",
+      "url": "http://twitter.com/gtagliala"
+    },
+    {
+      "name": "Mike Wilkerson",
+      "url": "http://twitter.com/mw77"
+    }
+  ],
+  "dependencies": {
+    "@fortawesome/fontawesome-common-types": "^0.2.36"
+  },
+  "deprecated": false,
+  "description": "The iconic font, CSS, and SVG framework",
+  "engines": {
+    "node": ">=6"
+  },
+  "homepage": "https://fontawesome.com",
+  "jsnext:main": "index.es.js",
+  "keywords": [
+    "font",
+    "awesome",
+    "fontawesome",
+    "icon",
+    "svg",
+    "bootstrap"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "module": "index.es.js",
+  "name": "@fortawesome/fontawesome-svg-core",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/FortAwesome/Font-Awesome.git"
+  },
+  "scripts": {
+    "postinstall": "node attribution.js"
+  },
+  "style": "styles.css",
+  "types": "./index.d.ts",
+  "version": "1.2.36"
+}
Index: trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/styles.css
===================================================================
--- trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/styles.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core/styles.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,367 @@
+svg:not(:root).svg-inline--fa {
+  overflow: visible; }
+
+.svg-inline--fa {
+  display: inline-block;
+  font-size: inherit;
+  height: 1em;
+  overflow: visible;
+  vertical-align: -.125em; }
+  .svg-inline--fa.fa-lg {
+    vertical-align: -.225em; }
+  .svg-inline--fa.fa-w-1 {
+    width: 0.0625em; }
+  .svg-inline--fa.fa-w-2 {
+    width: 0.125em; }
+  .svg-inline--fa.fa-w-3 {
+    width: 0.1875em; }
+  .svg-inline--fa.fa-w-4 {
+    width: 0.25em; }
+  .svg-inline--fa.fa-w-5 {
+    width: 0.3125em; }
+  .svg-inline--fa.fa-w-6 {
+    width: 0.375em; }
+  .svg-inline--fa.fa-w-7 {
+    width: 0.4375em; }
+  .svg-inline--fa.fa-w-8 {
+    width: 0.5em; }
+  .svg-inline--fa.fa-w-9 {
+    width: 0.5625em; }
+  .svg-inline--fa.fa-w-10 {
+    width: 0.625em; }
+  .svg-inline--fa.fa-w-11 {
+    width: 0.6875em; }
+  .svg-inline--fa.fa-w-12 {
+    width: 0.75em; }
+  .svg-inline--fa.fa-w-13 {
+    width: 0.8125em; }
+  .svg-inline--fa.fa-w-14 {
+    width: 0.875em; }
+  .svg-inline--fa.fa-w-15 {
+    width: 0.9375em; }
+  .svg-inline--fa.fa-w-16 {
+    width: 1em; }
+  .svg-inline--fa.fa-w-17 {
+    width: 1.0625em; }
+  .svg-inline--fa.fa-w-18 {
+    width: 1.125em; }
+  .svg-inline--fa.fa-w-19 {
+    width: 1.1875em; }
+  .svg-inline--fa.fa-w-20 {
+    width: 1.25em; }
+  .svg-inline--fa.fa-pull-left {
+    margin-right: .3em;
+    width: auto; }
+  .svg-inline--fa.fa-pull-right {
+    margin-left: .3em;
+    width: auto; }
+  .svg-inline--fa.fa-border {
+    height: 1.5em; }
+  .svg-inline--fa.fa-li {
+    width: 2em; }
+  .svg-inline--fa.fa-fw {
+    width: 1.25em; }
+
+.fa-layers svg.svg-inline--fa {
+  bottom: 0;
+  left: 0;
+  margin: auto;
+  position: absolute;
+  right: 0;
+  top: 0; }
+
+.fa-layers {
+  display: inline-block;
+  height: 1em;
+  position: relative;
+  text-align: center;
+  vertical-align: -.125em;
+  width: 1em; }
+  .fa-layers svg.svg-inline--fa {
+    -webkit-transform-origin: center center;
+            transform-origin: center center; }
+
+.fa-layers-text, .fa-layers-counter {
+  display: inline-block;
+  position: absolute;
+  text-align: center; }
+
+.fa-layers-text {
+  left: 50%;
+  top: 50%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  -webkit-transform-origin: center center;
+          transform-origin: center center; }
+
+.fa-layers-counter {
+  background-color: #ff253a;
+  border-radius: 1em;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  color: #fff;
+  height: 1.5em;
+  line-height: 1;
+  max-width: 5em;
+  min-width: 1.5em;
+  overflow: hidden;
+  padding: .25em;
+  right: 0;
+  text-overflow: ellipsis;
+  top: 0;
+  -webkit-transform: scale(0.25);
+          transform: scale(0.25);
+  -webkit-transform-origin: top right;
+          transform-origin: top right; }
+
+.fa-layers-bottom-right {
+  bottom: 0;
+  right: 0;
+  top: auto;
+  -webkit-transform: scale(0.25);
+          transform: scale(0.25);
+  -webkit-transform-origin: bottom right;
+          transform-origin: bottom right; }
+
+.fa-layers-bottom-left {
+  bottom: 0;
+  left: 0;
+  right: auto;
+  top: auto;
+  -webkit-transform: scale(0.25);
+          transform: scale(0.25);
+  -webkit-transform-origin: bottom left;
+          transform-origin: bottom left; }
+
+.fa-layers-top-right {
+  right: 0;
+  top: 0;
+  -webkit-transform: scale(0.25);
+          transform: scale(0.25);
+  -webkit-transform-origin: top right;
+          transform-origin: top right; }
+
+.fa-layers-top-left {
+  left: 0;
+  right: auto;
+  top: 0;
+  -webkit-transform: scale(0.25);
+          transform: scale(0.25);
+  -webkit-transform-origin: top left;
+          transform-origin: top left; }
+
+.fa-lg {
+  font-size: 1.33333em;
+  line-height: 0.75em;
+  vertical-align: -.0667em; }
+
+.fa-xs {
+  font-size: .75em; }
+
+.fa-sm {
+  font-size: .875em; }
+
+.fa-1x {
+  font-size: 1em; }
+
+.fa-2x {
+  font-size: 2em; }
+
+.fa-3x {
+  font-size: 3em; }
+
+.fa-4x {
+  font-size: 4em; }
+
+.fa-5x {
+  font-size: 5em; }
+
+.fa-6x {
+  font-size: 6em; }
+
+.fa-7x {
+  font-size: 7em; }
+
+.fa-8x {
+  font-size: 8em; }
+
+.fa-9x {
+  font-size: 9em; }
+
+.fa-10x {
+  font-size: 10em; }
+
+.fa-fw {
+  text-align: center;
+  width: 1.25em; }
+
+.fa-ul {
+  list-style-type: none;
+  margin-left: 2.5em;
+  padding-left: 0; }
+  .fa-ul > li {
+    position: relative; }
+
+.fa-li {
+  left: -2em;
+  position: absolute;
+  text-align: center;
+  width: 2em;
+  line-height: inherit; }
+
+.fa-border {
+  border: solid 0.08em #eee;
+  border-radius: .1em;
+  padding: .2em .25em .15em; }
+
+.fa-pull-left {
+  float: left; }
+
+.fa-pull-right {
+  float: right; }
+
+.fa.fa-pull-left,
+.fas.fa-pull-left,
+.far.fa-pull-left,
+.fal.fa-pull-left,
+.fab.fa-pull-left {
+  margin-right: .3em; }
+
+.fa.fa-pull-right,
+.fas.fa-pull-right,
+.far.fa-pull-right,
+.fal.fa-pull-right,
+.fab.fa-pull-right {
+  margin-left: .3em; }
+
+.fa-spin {
+  -webkit-animation: fa-spin 2s infinite linear;
+          animation: fa-spin 2s infinite linear; }
+
+.fa-pulse {
+  -webkit-animation: fa-spin 1s infinite steps(8);
+          animation: fa-spin 1s infinite steps(8); }
+
+@-webkit-keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); }
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg); } }
+
+@keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+            transform: rotate(0deg); }
+  100% {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg); } }
+
+.fa-rotate-90 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg); }
+
+.fa-rotate-180 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+  -webkit-transform: rotate(180deg);
+          transform: rotate(180deg); }
+
+.fa-rotate-270 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+  -webkit-transform: rotate(270deg);
+          transform: rotate(270deg); }
+
+.fa-flip-horizontal {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+  -webkit-transform: scale(-1, 1);
+          transform: scale(-1, 1); }
+
+.fa-flip-vertical {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+  -webkit-transform: scale(1, -1);
+          transform: scale(1, -1); }
+
+.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+  -webkit-transform: scale(-1, -1);
+          transform: scale(-1, -1); }
+
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical,
+:root .fa-flip-both {
+  -webkit-filter: none;
+          filter: none; }
+
+.fa-stack {
+  display: inline-block;
+  height: 2em;
+  position: relative;
+  width: 2.5em; }
+
+.fa-stack-1x,
+.fa-stack-2x {
+  bottom: 0;
+  left: 0;
+  margin: auto;
+  position: absolute;
+  right: 0;
+  top: 0; }
+
+.svg-inline--fa.fa-stack-1x {
+  height: 1em;
+  width: 1.25em; }
+
+.svg-inline--fa.fa-stack-2x {
+  height: 2em;
+  width: 2.5em; }
+
+.fa-inverse {
+  color: #fff; }
+
+.sr-only {
+  border: 0;
+  clip: rect(0, 0, 0, 0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px; }
+
+.sr-only-focusable:active, .sr-only-focusable:focus {
+  clip: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  position: static;
+  width: auto; }
+
+.svg-inline--fa .fa-primary {
+  fill: var(--fa-primary-color, currentColor);
+  opacity: 1;
+  opacity: var(--fa-primary-opacity, 1); }
+
+.svg-inline--fa .fa-secondary {
+  fill: var(--fa-secondary-color, currentColor);
+  opacity: 0.4;
+  opacity: var(--fa-secondary-opacity, 0.4); }
+
+.svg-inline--fa.fa-swap-opacity .fa-primary {
+  opacity: 0.4;
+  opacity: var(--fa-secondary-opacity, 0.4); }
+
+.svg-inline--fa.fa-swap-opacity .fa-secondary {
+  opacity: 1;
+  opacity: var(--fa-primary-opacity, 1); }
+
+.svg-inline--fa mask .fa-primary,
+.svg-inline--fa mask .fa-secondary {
+  fill: black; }
+
+.fad.fa-inverse {
+  color: #fff; }
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/LICENSE.txt
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/LICENSE.txt	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,34 @@
+Font Awesome Free License
+-------------------------
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license/free.
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
+packaged as SVG and JS file types.
+
+# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
+In the Font Awesome Free download, the SIL OFL license applies to all icons
+packaged as web and desktop font files.
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+# Attribution
+Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to
+learn about Font Awesome.
+
+# Brand Icons
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/README.md
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+# @fortawesome/free-solid-svg-icons - SVG with JavaScript version
+
+> "I came here to chew bubblegum and install Font Awesome 5 - and I'm all out of bubblegum"
+
+[![npm](https://img.shields.io/npm/v/@fortawesome/free-solid-svg-icons.svg?style=flat-square)](https://www.npmjs.com/package/@fortawesome/free-solid-svg-icons)
+
+## Installation
+
+```
+$ npm i --save @fortawesome/free-solid-svg-icons
+```
+
+Or
+
+```
+$ yarn add @fortawesome/free-solid-svg-icons
+```
+
+## Documentation
+
+Get started [here](https://fontawesome.com/how-to-use/on-the-web/setup/getting-started). Continue your journey [here](https://fontawesome.com/how-to-use/on-the-web/advanced).
+
+Or go straight to the [API documentation](https://fontawesome.com/how-to-use/with-the-api).
+
+## Issues and support
+
+Start with [GitHub issues](https://github.com/FortAwesome/Font-Awesome/issues) and ping us on [Twitter](https://twitter.com/fontawesome) if you need to.
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/attribution.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/attribution.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+console.log(`Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+`)
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAd: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ad';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f641';
+var svgPathData = 'M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAd = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAddressBook: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressBook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'address-book';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2b9';
+var svgPathData = 'M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAddressBook = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAddressCard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAddressCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'address-card';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2bb';
+var svgPathData = 'M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAddressCard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAdjust: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAdjust.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'adjust';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f042';
+var svgPathData = 'M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAdjust = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAirFreshener: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAirFreshener.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'air-freshener';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5d0';
+var svgPathData = 'M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAirFreshener = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAlignCenter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignCenter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'align-center';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f037';
+var svgPathData = 'M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAlignCenter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAlignJustify: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignJustify.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'align-justify';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f039';
+var svgPathData = 'M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAlignJustify = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAlignLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'align-left';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f036';
+var svgPathData = 'M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAlignLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAlignRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAlignRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'align-right';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f038';
+var svgPathData = 'M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAlignRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAllergies: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAllergies.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'allergies';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f461';
+var svgPathData = 'M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAllergies = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAmbulance: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmbulance.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ambulance';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f9';
+var svgPathData = 'M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAmbulance = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAmericanSignLanguageInterpreting: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAmericanSignLanguageInterpreting.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'american-sign-language-interpreting';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a3';
+var svgPathData = 'M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAmericanSignLanguageInterpreting = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAnchor: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnchor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'anchor';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f13d';
+var svgPathData = 'M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAnchor = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleDoubleDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-double-down';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f103';
+var svgPathData = 'M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleDoubleDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleDoubleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-double-left';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f100';
+var svgPathData = 'M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleDoubleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleDoubleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-double-right';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f101';
+var svgPathData = 'M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleDoubleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleDoubleUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-double-up';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f102';
+var svgPathData = 'M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleDoubleUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-down';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f107';
+var svgPathData = 'M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-left';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f104';
+var svgPathData = 'M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-right';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f105';
+var svgPathData = 'M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngleUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angle-up';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f106';
+var svgPathData = 'M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngleUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAngry: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAngry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'angry';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f556';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAngry = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAnkh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAnkh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ankh';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f644';
+var svgPathData = 'M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAnkh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAppleAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAppleAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'apple-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5d1';
+var svgPathData = 'M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAppleAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArchive: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'archive';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f187';
+var svgPathData = 'M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArchive = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArchway: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArchway.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'archway';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f557';
+var svgPathData = 'M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArchway = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowAltCircleDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-alt-circle-down';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f358';
+var svgPathData = 'M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowAltCircleDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowAltCircleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-alt-circle-left';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f359';
+var svgPathData = 'M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowAltCircleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowAltCircleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-alt-circle-right';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f35a';
+var svgPathData = 'M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowAltCircleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowAltCircleUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowAltCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-alt-circle-up';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f35b';
+var svgPathData = 'M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowAltCircleUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowCircleDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-circle-down';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ab';
+var svgPathData = 'M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowCircleDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowCircleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-circle-left';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a8';
+var svgPathData = 'M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowCircleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowCircleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-circle-right';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a9';
+var svgPathData = 'M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowCircleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowCircleUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-circle-up';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0aa';
+var svgPathData = 'M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowCircleUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-down';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f063';
+var svgPathData = 'M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-left';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f060';
+var svgPathData = 'M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-right';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f061';
+var svgPathData = 'M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrow-up';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f062';
+var svgPathData = 'M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowsAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrows-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0b2';
+var svgPathData = 'M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowsAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowsAltH: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrows-alt-h';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f337';
+var svgPathData = 'M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowsAltH = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faArrowsAltV: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faArrowsAltV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'arrows-alt-v';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f338';
+var svgPathData = 'M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faArrowsAltV = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAssistiveListeningSystems: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAssistiveListeningSystems.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'assistive-listening-systems';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a2';
+var svgPathData = 'M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAssistiveListeningSystems = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAsterisk: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAsterisk.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'asterisk';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f069';
+var svgPathData = 'M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAsterisk = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'at';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1fa';
+var svgPathData = 'M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAtlas: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtlas.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'atlas';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f558';
+var svgPathData = 'M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAtlas = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAtom: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAtom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'atom';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5d2';
+var svgPathData = 'M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAtom = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAudioDescription: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAudioDescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'audio-description';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f29e';
+var svgPathData = 'M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAudioDescription = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faAward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faAward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'award';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f559';
+var svgPathData = 'M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faAward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBaby: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaby.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'baby';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f77c';
+var svgPathData = 'M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBaby = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBabyCarriage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBabyCarriage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'baby-carriage';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f77d';
+var svgPathData = 'M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBabyCarriage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBackspace: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackspace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'backspace';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55a';
+var svgPathData = 'M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBackspace = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBackward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'backward';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f04a';
+var svgPathData = 'M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBackward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBacon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bacon';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7e5';
+var svgPathData = 'M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBacon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBacteria: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacteria.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bacteria';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e059';
+var svgPathData = 'M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBacteria = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBacterium: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBacterium.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bacterium';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05a';
+var svgPathData = 'M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBacterium = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBahai: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBahai.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bahai';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f666';
+var svgPathData = 'M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBahai = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBalanceScale: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'balance-scale';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f24e';
+var svgPathData = 'M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBalanceScale = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBalanceScaleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'balance-scale-left';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f515';
+var svgPathData = 'M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBalanceScaleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBalanceScaleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBalanceScaleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'balance-scale-right';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f516';
+var svgPathData = 'M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBalanceScaleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ban';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f05e';
+var svgPathData = 'M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBandAid: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBandAid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'band-aid';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f462';
+var svgPathData = 'M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBandAid = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBarcode: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBarcode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'barcode';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02a';
+var svgPathData = 'M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBarcode = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBars: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bars';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c9';
+var svgPathData = 'M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBars = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBaseballBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBaseballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'baseball-ball';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f433';
+var svgPathData = 'M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBaseballBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBasketballBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBasketballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'basketball-ball';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f434';
+var svgPathData = 'M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBasketballBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBath: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBath.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bath';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2cd';
+var svgPathData = 'M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBath = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBatteryEmpty: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'battery-empty';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f244';
+var svgPathData = 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBatteryEmpty = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBatteryFull: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'battery-full';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f240';
+var svgPathData = 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBatteryFull = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBatteryHalf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'battery-half';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f242';
+var svgPathData = 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBatteryHalf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBatteryQuarter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'battery-quarter';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f243';
+var svgPathData = 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBatteryQuarter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBatteryThreeQuarters: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'battery-three-quarters';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f241';
+var svgPathData = 'M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBatteryThreeQuarters = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBed: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bed';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f236';
+var svgPathData = 'M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBed = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBeer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBeer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'beer';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0fc';
+var svgPathData = 'M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBeer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBell: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bell';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f3';
+var svgPathData = 'M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBell = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBellSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBellSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bell-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1f6';
+var svgPathData = 'M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBellSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBezierCurve: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBezierCurve.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bezier-curve';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55b';
+var svgPathData = 'M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBezierCurve = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBible: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBible.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bible';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f647';
+var svgPathData = 'M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBible = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBicycle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBicycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bicycle';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f206';
+var svgPathData = 'M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBicycle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBiking: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'biking';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f84a';
+var svgPathData = 'M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBiking = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBinoculars: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBinoculars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'binoculars';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e5';
+var svgPathData = 'M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBinoculars = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBiohazard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBiohazard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'biohazard';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f780';
+var svgPathData = 'M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBiohazard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBirthdayCake: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBirthdayCake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'birthday-cake';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1fd';
+var svgPathData = 'M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBirthdayCake = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBlender: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlender.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'blender';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f517';
+var svgPathData = 'M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBlender = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBlenderPhone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlenderPhone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'blender-phone';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6b6';
+var svgPathData = 'M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBlenderPhone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBlind: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlind.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'blind';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f29d';
+var svgPathData = 'M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBlind = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBlog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBlog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'blog';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f781';
+var svgPathData = 'M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBlog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBold: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBold.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bold';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f032';
+var svgPathData = 'M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBold = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBolt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBolt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bolt';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e7';
+var svgPathData = 'M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBolt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBomb: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBomb.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bomb';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e2';
+var svgPathData = 'M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBomb = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bone';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5d7';
+var svgPathData = 'M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBong: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBong.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bong';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55c';
+var svgPathData = 'M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBong = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBook: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'book';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02d';
+var svgPathData = 'M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBook = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBookDead: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookDead.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'book-dead';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6b7';
+var svgPathData = 'M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBookDead = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBookMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'book-medical';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7e6';
+var svgPathData = 'M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBookMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBookOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'book-open';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f518';
+var svgPathData = 'M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBookOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBookReader: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookReader.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'book-reader';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5da';
+var svgPathData = 'M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBookReader = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBookmark: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBookmark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bookmark';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02e';
+var svgPathData = 'M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBookmark = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBorderAll: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderAll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'border-all';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f84c';
+var svgPathData = 'M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBorderAll = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBorderNone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderNone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'border-none';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f850';
+var svgPathData = 'M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBorderNone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBorderStyle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBorderStyle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'border-style';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f853';
+var svgPathData = 'M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBorderStyle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBowlingBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBowlingBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bowling-ball';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f436';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBowlingBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBox: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'box';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f466';
+var svgPathData = 'M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBox = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBoxOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'box-open';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f49e';
+var svgPathData = 'M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBoxOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBoxTissue: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxTissue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'box-tissue';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05b';
+var svgPathData = 'M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBoxTissue = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBoxes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBoxes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'boxes';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f468';
+var svgPathData = 'M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBoxes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBraille: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBraille.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'braille';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a1';
+var svgPathData = 'M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBraille = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBrain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'brain';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5dc';
+var svgPathData = 'M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBrain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBreadSlice: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBreadSlice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bread-slice';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ec';
+var svgPathData = 'M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBreadSlice = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBriefcase: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'briefcase';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0b1';
+var svgPathData = 'M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBriefcase = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBriefcaseMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBriefcaseMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'briefcase-medical';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f469';
+var svgPathData = 'M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBriefcaseMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBroadcastTower: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroadcastTower.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'broadcast-tower';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f519';
+var svgPathData = 'M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBroadcastTower = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBroom: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBroom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'broom';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51a';
+var svgPathData = 'M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBroom = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBrush: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBrush.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'brush';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55d';
+var svgPathData = 'M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBrush = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBug: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBug.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bug';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f188';
+var svgPathData = 'M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBug = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBuilding: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBuilding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'building';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ad';
+var svgPathData = 'M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBuilding = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBullhorn: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullhorn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bullhorn';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a1';
+var svgPathData = 'M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBullhorn = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBullseye: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBullseye.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bullseye';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f140';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBullseye = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBurn: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBurn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'burn';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f46a';
+var svgPathData = 'M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBurn = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f207';
+var svgPathData = 'M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBusAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'bus-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55e';
+var svgPathData = 'M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBusAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faBusinessTime: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faBusinessTime.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'business-time';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f64a';
+var svgPathData = 'M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faBusinessTime = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalculator: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalculator.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calculator';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ec';
+var svgPathData = 'M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalculator = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f133';
+var svgPathData = 'M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f073';
+var svgPathData = 'M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-check';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f274';
+var svgPathData = 'M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarDay: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarDay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-day';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f783';
+var svgPathData = 'M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarDay = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarMinus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-minus';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f272';
+var svgPathData = 'M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarMinus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-plus';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f271';
+var svgPathData = 'M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarTimes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-times';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f273';
+var svgPathData = 'M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarTimes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCalendarWeek: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCalendarWeek.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'calendar-week';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f784';
+var svgPathData = 'M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCalendarWeek = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCamera: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCamera.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'camera';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f030';
+var svgPathData = 'M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCamera = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCameraRetro: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCameraRetro.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'camera-retro';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f083';
+var svgPathData = 'M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCameraRetro = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCampground: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCampground.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'campground';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6bb';
+var svgPathData = 'M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCampground = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCandyCane: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCandyCane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'candy-cane';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f786';
+var svgPathData = 'M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCandyCane = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCannabis: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCannabis.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cannabis';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f55f';
+var svgPathData = 'M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCannabis = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCapsules: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCapsules.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'capsules';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f46b';
+var svgPathData = 'M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCapsules = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'car';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1b9';
+var svgPathData = 'M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCarAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'car-alt';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5de';
+var svgPathData = 'M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCarAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCarBattery: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarBattery.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'car-battery';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5df';
+var svgPathData = 'M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCarBattery = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCarCrash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarCrash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'car-crash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5e1';
+var svgPathData = 'M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCarCrash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCarSide: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarSide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'car-side';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5e4';
+var svgPathData = 'M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCarSide = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaravan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaravan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caravan';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f8ff';
+var svgPathData = 'M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaravan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-down';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d7';
+var svgPathData = 'M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-left';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d9';
+var svgPathData = 'M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-right';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0da';
+var svgPathData = 'M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretSquareDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-square-down';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f150';
+var svgPathData = 'M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretSquareDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretSquareLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-square-left';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f191';
+var svgPathData = 'M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretSquareLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretSquareRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-square-right';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f152';
+var svgPathData = 'M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretSquareRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretSquareUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretSquareUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-square-up';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f151';
+var svgPathData = 'M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretSquareUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCaretUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCaretUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'caret-up';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d8';
+var svgPathData = 'M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCaretUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCarrot: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCarrot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'carrot';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f787';
+var svgPathData = 'M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCarrot = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCartArrowDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartArrowDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cart-arrow-down';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f218';
+var svgPathData = 'M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCartArrowDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCartPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCartPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cart-plus';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f217';
+var svgPathData = 'M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCartPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCashRegister: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCashRegister.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cash-register';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f788';
+var svgPathData = 'M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCashRegister = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cat';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6be';
+var svgPathData = 'M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCertificate: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCertificate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'certificate';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a3';
+var svgPathData = 'M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCertificate = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChair: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChair.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chair';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6c0';
+var svgPathData = 'M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChair = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChalkboard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chalkboard';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51b';
+var svgPathData = 'M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChalkboard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChalkboardTeacher: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChalkboardTeacher.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chalkboard-teacher';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51c';
+var svgPathData = 'M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChalkboardTeacher = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChargingStation: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChargingStation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'charging-station';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5e7';
+var svgPathData = 'M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChargingStation = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChartArea: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartArea.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chart-area';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1fe';
+var svgPathData = 'M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChartArea = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChartBar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartBar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chart-bar';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f080';
+var svgPathData = 'M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChartBar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChartLine: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartLine.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chart-line';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f201';
+var svgPathData = 'M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChartLine = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChartPie: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChartPie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chart-pie';
+var width = 544;
+var height = 512;
+var ligatures = [];
+var unicode = 'f200';
+var svgPathData = 'M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChartPie = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'check';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f00c';
+var svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCheckCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'check-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f058';
+var svgPathData = 'M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCheckCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCheckDouble: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'check-double';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f560';
+var svgPathData = 'M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCheckDouble = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCheckSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheckSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'check-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f14a';
+var svgPathData = 'M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCheckSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCheese: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCheese.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cheese';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ef';
+var svgPathData = 'M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCheese = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChess: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChess.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f439';
+var svgPathData = 'M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChess = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessBishop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBishop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-bishop';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f43a';
+var svgPathData = 'M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessBishop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessBoard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessBoard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-board';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f43c';
+var svgPathData = 'M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessBoard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessKing: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-king';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f43f';
+var svgPathData = 'M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessKing = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessKnight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessKnight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-knight';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f441';
+var svgPathData = 'M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessKnight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessPawn: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessPawn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-pawn';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f443';
+var svgPathData = 'M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessPawn = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessQueen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessQueen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-queen';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f445';
+var svgPathData = 'M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessQueen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChessRook: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChessRook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chess-rook';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f447';
+var svgPathData = 'M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChessRook = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronCircleDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-circle-down';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f13a';
+var svgPathData = 'M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronCircleDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronCircleLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-circle-left';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f137';
+var svgPathData = 'M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronCircleLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronCircleRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-circle-right';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f138';
+var svgPathData = 'M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronCircleRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronCircleUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronCircleUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-circle-up';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f139';
+var svgPathData = 'M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronCircleUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-down';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f078';
+var svgPathData = 'M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-left';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f053';
+var svgPathData = 'M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-right';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f054';
+var svgPathData = 'M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChevronUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'chevron-up';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f077';
+var svgPathData = 'M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChevronUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChild: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChild.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'child';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ae';
+var svgPathData = 'M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChild = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faChurch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faChurch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'church';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51d';
+var svgPathData = 'M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faChurch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f111';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCircleNotch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'circle-notch';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ce';
+var svgPathData = 'M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCircleNotch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCity: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'city';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f64f';
+var svgPathData = 'M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCity = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClinicMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClinicMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clinic-medical';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7f2';
+var svgPathData = 'M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClinicMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClipboard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clipboard';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f328';
+var svgPathData = 'M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClipboard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClipboardCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clipboard-check';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f46c';
+var svgPathData = 'M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClipboardCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClipboardList: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClipboardList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clipboard-list';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f46d';
+var svgPathData = 'M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClipboardList = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clock';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f017';
+var svgPathData = 'M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'clone';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f24d';
+var svgPathData = 'M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faClosedCaptioning: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faClosedCaptioning.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'closed-captioning';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f20a';
+var svgPathData = 'M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faClosedCaptioning = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloud: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloud.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c2';
+var svgPathData = 'M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloud = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudDownloadAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudDownloadAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-download-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f381';
+var svgPathData = 'M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudDownloadAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudMeatball: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMeatball.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-meatball';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f73b';
+var svgPathData = 'M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudMeatball = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudMoon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-moon';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6c3';
+var svgPathData = 'M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudMoon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudMoonRain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudMoonRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-moon-rain';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f73c';
+var svgPathData = 'M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudMoonRain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudRain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-rain';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f73d';
+var svgPathData = 'M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudRain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudShowersHeavy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudShowersHeavy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-showers-heavy';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f740';
+var svgPathData = 'M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudShowersHeavy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudSun: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSun.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-sun';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6c4';
+var svgPathData = 'M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudSun = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudSunRain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudSunRain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-sun-rain';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f743';
+var svgPathData = 'M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudSunRain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCloudUploadAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCloudUploadAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cloud-upload-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f382';
+var svgPathData = 'M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCloudUploadAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCocktail: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCocktail.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cocktail';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f561';
+var svgPathData = 'M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCocktail = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCode: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'code';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f121';
+var svgPathData = 'M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCode = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCodeBranch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCodeBranch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'code-branch';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f126';
+var svgPathData = 'M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCodeBranch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCoffee: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoffee.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'coffee';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f4';
+var svgPathData = 'M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCoffee = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cog';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f013';
+var svgPathData = 'M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCogs: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCogs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cogs';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f085';
+var svgPathData = 'M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCogs = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCoins: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCoins.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'coins';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51e';
+var svgPathData = 'M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCoins = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faColumns: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faColumns.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'columns';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0db';
+var svgPathData = 'M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faColumns = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faComment: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComment.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f075';
+var svgPathData = 'M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faComment = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f27a';
+var svgPathData = 'M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentDollar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment-dollar';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f651';
+var svgPathData = 'M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentDollar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentDots: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentDots.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment-dots';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4ad';
+var svgPathData = 'M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentDots = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment-medical';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7f5';
+var svgPathData = 'M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comment-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4b3';
+var svgPathData = 'M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faComments: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faComments.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comments';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f086';
+var svgPathData = 'M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faComments = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCommentsDollar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCommentsDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'comments-dollar';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f653';
+var svgPathData = 'M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCommentsDollar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCompactDisc: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompactDisc.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'compact-disc';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f51f';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCompactDisc = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCompass: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'compass';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f14e';
+var svgPathData = 'M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCompass = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCompress: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompress.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'compress';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f066';
+var svgPathData = 'M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCompress = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCompressAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'compress-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f422';
+var svgPathData = 'M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCompressAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCompressArrowsAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCompressArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'compress-arrows-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f78c';
+var svgPathData = 'M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCompressArrowsAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faConciergeBell: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faConciergeBell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'concierge-bell';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f562';
+var svgPathData = 'M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faConciergeBell = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCookie: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cookie';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f563';
+var svgPathData = 'M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCookie = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCookieBite: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCookieBite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cookie-bite';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f564';
+var svgPathData = 'M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCookieBite = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCopy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'copy';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c5';
+var svgPathData = 'M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCopy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCopyright: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCopyright.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'copyright';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1f9';
+var svgPathData = 'M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCopyright = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCouch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCouch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'couch';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4b8';
+var svgPathData = 'M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCouch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCreditCard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCreditCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'credit-card';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f09d';
+var svgPathData = 'M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCreditCard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCrop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crop';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f125';
+var svgPathData = 'M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCrop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCropAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCropAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crop-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f565';
+var svgPathData = 'M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCropAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCross: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCross.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cross';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f654';
+var svgPathData = 'M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCross = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCrosshairs: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrosshairs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crosshairs';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f05b';
+var svgPathData = 'M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCrosshairs = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCrow: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crow';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f520';
+var svgPathData = 'M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCrow = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCrown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crown';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f521';
+var svgPathData = 'M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCrown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCrutch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCrutch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'crutch';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7f7';
+var svgPathData = 'M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCrutch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCube: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCube.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cube';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1b2';
+var svgPathData = 'M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCube = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCubes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCubes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cubes';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1b3';
+var svgPathData = 'M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCubes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faCut: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faCut.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'cut';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c4';
+var svgPathData = 'M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faCut = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDatabase: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDatabase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'database';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c0';
+var svgPathData = 'M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDatabase = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDeaf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDeaf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'deaf';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a4';
+var svgPathData = 'M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDeaf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDemocrat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDemocrat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'democrat';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f747';
+var svgPathData = 'M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDemocrat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDesktop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDesktop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'desktop';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f108';
+var svgPathData = 'M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDesktop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDharmachakra: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDharmachakra.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dharmachakra';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f655';
+var svgPathData = 'M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDharmachakra = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiagnoses: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiagnoses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'diagnoses';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f470';
+var svgPathData = 'M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiagnoses = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDice: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f522';
+var svgPathData = 'M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDice = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceD20: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD20.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-d20';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6cf';
+var svgPathData = 'M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceD20 = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceD6: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceD6.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-d6';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6d1';
+var svgPathData = 'M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceD6 = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceFive: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-five';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f523';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceFive = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceFour: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceFour.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-four';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f524';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceFour = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceOne: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceOne.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-one';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f525';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceOne = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceSix: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceSix.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-six';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f526';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceSix = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceThree: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceThree.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-three';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f527';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceThree = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDiceTwo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDiceTwo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dice-two';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f528';
+var svgPathData = 'M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDiceTwo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDigitalTachograph: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDigitalTachograph.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'digital-tachograph';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f566';
+var svgPathData = 'M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDigitalTachograph = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDirections: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDirections.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'directions';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5eb';
+var svgPathData = 'M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDirections = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDisease: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDisease.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'disease';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7fa';
+var svgPathData = 'M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDisease = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDivide: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDivide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'divide';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f529';
+var svgPathData = 'M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDivide = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDizzy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDizzy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dizzy';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f567';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDizzy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDna: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDna.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dna';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f471';
+var svgPathData = 'M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDna = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dog';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6d3';
+var svgPathData = 'M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDollarSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollarSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dollar-sign';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f155';
+var svgPathData = 'M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDollarSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDolly: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDolly.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dolly';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f472';
+var svgPathData = 'M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDolly = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDollyFlatbed: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDollyFlatbed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dolly-flatbed';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f474';
+var svgPathData = 'M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDollyFlatbed = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDonate: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDonate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'donate';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4b9';
+var svgPathData = 'M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDonate = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDoorClosed: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorClosed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'door-closed';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52a';
+var svgPathData = 'M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDoorClosed = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDoorOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDoorOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'door-open';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52b';
+var svgPathData = 'M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDoorOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDotCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDotCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dot-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f192';
+var svgPathData = 'M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDotCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDove: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDove.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dove';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4ba';
+var svgPathData = 'M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDove = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDownload: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDownload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'download';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f019';
+var svgPathData = 'M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDownload = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDraftingCompass: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDraftingCompass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'drafting-compass';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f568';
+var svgPathData = 'M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDraftingCompass = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDragon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDragon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dragon';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6d5';
+var svgPathData = 'M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDragon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDrawPolygon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrawPolygon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'draw-polygon';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ee';
+var svgPathData = 'M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDrawPolygon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDrum: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrum.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'drum';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f569';
+var svgPathData = 'M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDrum = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDrumSteelpan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumSteelpan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'drum-steelpan';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56a';
+var svgPathData = 'M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDrumSteelpan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDrumstickBite: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDrumstickBite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'drumstick-bite';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6d7';
+var svgPathData = 'M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDrumstickBite = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDumbbell: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumbbell.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dumbbell';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f44b';
+var svgPathData = 'M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDumbbell = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDumpster: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpster.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dumpster';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f793';
+var svgPathData = 'M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDumpster = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDumpsterFire: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDumpsterFire.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dumpster-fire';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f794';
+var svgPathData = 'M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDumpsterFire = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faDungeon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faDungeon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'dungeon';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6d9';
+var svgPathData = 'M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faDungeon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEdit: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEdit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'edit';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f044';
+var svgPathData = 'M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEdit = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEgg: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEgg.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'egg';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7fb';
+var svgPathData = 'M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEgg = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEject: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEject.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'eject';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f052';
+var svgPathData = 'M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEject = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEllipsisH: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ellipsis-h';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f141';
+var svgPathData = 'M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEllipsisH = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEllipsisV: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEllipsisV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ellipsis-v';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f142';
+var svgPathData = 'M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEllipsisV = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEnvelope: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'envelope';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e0';
+var svgPathData = 'M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEnvelope = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEnvelopeOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'envelope-open';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2b6';
+var svgPathData = 'M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEnvelopeOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEnvelopeOpenText: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeOpenText.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'envelope-open-text';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f658';
+var svgPathData = 'M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEnvelopeOpenText = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEnvelopeSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEnvelopeSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'envelope-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f199';
+var svgPathData = 'M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEnvelopeSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEquals: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEquals.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'equals';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52c';
+var svgPathData = 'M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEquals = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEraser: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEraser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'eraser';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f12d';
+var svgPathData = 'M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEraser = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEthernet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEthernet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ethernet';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f796';
+var svgPathData = 'M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEthernet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEuroSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEuroSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'euro-sign';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f153';
+var svgPathData = 'M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEuroSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExchangeAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExchangeAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'exchange-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f362';
+var svgPathData = 'M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExchangeAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExclamation: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'exclamation';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f12a';
+var svgPathData = 'M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExclamation = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExclamationCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'exclamation-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f06a';
+var svgPathData = 'M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExclamationCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExclamationTriangle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'exclamation-triangle';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f071';
+var svgPathData = 'M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExclamationTriangle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExpand: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpand.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'expand';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f065';
+var svgPathData = 'M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExpand = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExpandAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'expand-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f424';
+var svgPathData = 'M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExpandAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExpandArrowsAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExpandArrowsAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'expand-arrows-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f31e';
+var svgPathData = 'M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExpandArrowsAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExternalLinkAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'external-link-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f35d';
+var svgPathData = 'M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExternalLinkAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faExternalLinkSquareAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkSquareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'external-link-square-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f360';
+var svgPathData = 'M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faExternalLinkSquareAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEye: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEye.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'eye';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f06e';
+var svgPathData = 'M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEye = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEyeDropper: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeDropper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'eye-dropper';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1fb';
+var svgPathData = 'M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEyeDropper = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faEyeSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'eye-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f070';
+var svgPathData = 'M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faEyeSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fan';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f863';
+var svgPathData = 'M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFastBackward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fast-backward';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f049';
+var svgPathData = 'M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFastBackward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFastForward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFastForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fast-forward';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f050';
+var svgPathData = 'M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFastForward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFaucet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFaucet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'faucet';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e005';
+var svgPathData = 'M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFaucet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFax: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFax.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fax';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ac';
+var svgPathData = 'M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFax = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFeather: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeather.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'feather';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52d';
+var svgPathData = 'M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFeather = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFeatherAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFeatherAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'feather-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56b';
+var svgPathData = 'M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFeatherAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFemale: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFemale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'female';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f182';
+var svgPathData = 'M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFemale = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFighterJet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFighterJet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fighter-jet';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0fb';
+var svgPathData = 'M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFighterJet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFile: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f15b';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFile = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-alt';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f15c';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileArchive: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-archive';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c6';
+var svgPathData = 'M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileArchive = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileAudio: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileAudio.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-audio';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c7';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileAudio = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileCode: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-code';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c9';
+var svgPathData = 'M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileCode = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileContract: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileContract.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-contract';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56c';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileContract = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileCsv: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileCsv.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-csv';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6dd';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileCsv = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileDownload: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileDownload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-download';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56d';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileDownload = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileExcel: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-excel';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c3';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileExcel = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileExport: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileExport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-export';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56e';
+var svgPathData = 'M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileExport = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileImage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-image';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c5';
+var svgPathData = 'M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileImage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileImport: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileImport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-import';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f56f';
+var svgPathData = 'M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileImport = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileInvoice: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-invoice';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f570';
+var svgPathData = 'M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileInvoice = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileInvoiceDollar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileInvoiceDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-invoice-dollar';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f571';
+var svgPathData = 'M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileInvoiceDollar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-medical';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f477';
+var svgPathData = 'M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileMedicalAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileMedicalAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-medical-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f478';
+var svgPathData = 'M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileMedicalAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFilePdf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-pdf';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c1';
+var svgPathData = 'M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFilePdf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFilePowerpoint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePowerpoint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-powerpoint';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c4';
+var svgPathData = 'M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFilePowerpoint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFilePrescription: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilePrescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-prescription';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f572';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFilePrescription = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileSignature: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileSignature.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-signature';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f573';
+var svgPathData = 'M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileSignature = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileUpload: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileUpload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-upload';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f574';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileUpload = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileVideo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-video';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c8';
+var svgPathData = 'M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileVideo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFileWord: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFileWord.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'file-word';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1c2';
+var svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFileWord = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFill: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFill.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fill';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f575';
+var svgPathData = 'M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFill = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFillDrip: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFillDrip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fill-drip';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f576';
+var svgPathData = 'M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFillDrip = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFilm: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'film';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f008';
+var svgPathData = 'M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFilm = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFilter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFilter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'filter';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0b0';
+var svgPathData = 'M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFilter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFingerprint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFingerprint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fingerprint';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f577';
+var svgPathData = 'M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFingerprint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFire: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFire.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fire';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f06d';
+var svgPathData = 'M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFire = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFireAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fire-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7e4';
+var svgPathData = 'M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFireAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFireExtinguisher: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFireExtinguisher.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fire-extinguisher';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f134';
+var svgPathData = 'M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFireExtinguisher = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFirstAid: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFirstAid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'first-aid';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f479';
+var svgPathData = 'M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFirstAid = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFish: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFish.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fish';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f578';
+var svgPathData = 'M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFish = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFistRaised: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'fist-raised';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6de';
+var svgPathData = 'M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFistRaised = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFlag: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'flag';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f024';
+var svgPathData = 'M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFlag = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFlagCheckered: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagCheckered.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'flag-checkered';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f11e';
+var svgPathData = 'M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFlagCheckered = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFlagUsa: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlagUsa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'flag-usa';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f74d';
+var svgPathData = 'M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFlagUsa = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFlask: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'flask';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c3';
+var svgPathData = 'M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFlask = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFlushed: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFlushed.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'flushed';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f579';
+var svgPathData = 'M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFlushed = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFolder: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolder.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'folder';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f07b';
+var svgPathData = 'M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFolder = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFolderMinus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'folder-minus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f65d';
+var svgPathData = 'M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFolderMinus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFolderOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'folder-open';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f07c';
+var svgPathData = 'M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFolderOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFolderPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'folder-plus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f65e';
+var svgPathData = 'M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFolderPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFont: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFont.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'font';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f031';
+var svgPathData = 'M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFont = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFontAwesomeLogoFull: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFontAwesomeLogoFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'font-awesome-logo-full';
+var width = 3992;
+var height = 512;
+var ligatures = ['Font Awesome'];
+var unicode = 'f4e6';
+var svgPathData = 'M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFontAwesomeLogoFull = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFootballBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFootballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'football-ball';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f44e';
+var svgPathData = 'M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFootballBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faForward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'forward';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f04e';
+var svgPathData = 'M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faForward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFrog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'frog';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52e';
+var svgPathData = 'M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFrog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFrown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'frown';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f119';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFrown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFrownOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFrownOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'frown-open';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57a';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFrownOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFunnelDollar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFunnelDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'funnel-dollar';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f662';
+var svgPathData = 'M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFunnelDollar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faFutbol: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faFutbol.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'futbol';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e3';
+var svgPathData = 'M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faFutbol = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGamepad: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGamepad.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gamepad';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f11b';
+var svgPathData = 'M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGamepad = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGasPump: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGasPump.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gas-pump';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f52f';
+var svgPathData = 'M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGasPump = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGavel: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGavel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gavel';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e3';
+var svgPathData = 'M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGavel = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGem: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGem.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gem';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3a5';
+var svgPathData = 'M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGem = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGenderless: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGenderless.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'genderless';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f22d';
+var svgPathData = 'M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGenderless = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGhost: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGhost.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ghost';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6e2';
+var svgPathData = 'M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGhost = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGift: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGift.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gift';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f06b';
+var svgPathData = 'M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGift = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGifts: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGifts.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gifts';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f79c';
+var svgPathData = 'M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGifts = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlassCheers: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassCheers.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'glass-cheers';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f79f';
+var svgPathData = 'M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlassCheers = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlassMartini: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartini.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'glass-martini';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f000';
+var svgPathData = 'M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlassMartini = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlassMartiniAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassMartiniAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'glass-martini-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57b';
+var svgPathData = 'M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlassMartiniAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlassWhiskey: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlassWhiskey.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'glass-whiskey';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a0';
+var svgPathData = 'M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlassWhiskey = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlasses: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlasses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'glasses';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f530';
+var svgPathData = 'M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlasses = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlobe: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobe.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'globe';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ac';
+var svgPathData = 'M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlobe = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlobeAfrica: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAfrica.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'globe-africa';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57c';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlobeAfrica = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlobeAmericas: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAmericas.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'globe-americas';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57d';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlobeAmericas = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlobeAsia: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeAsia.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'globe-asia';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57e';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlobeAsia = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGlobeEurope: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGlobeEurope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'globe-europe';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a2';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGlobeEurope = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGolfBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGolfBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'golf-ball';
+var width = 416;
+var height = 512;
+var ligatures = [];
+var unicode = 'f450';
+var svgPathData = 'M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGolfBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGopuram: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGopuram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'gopuram';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f664';
+var svgPathData = 'M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGopuram = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGraduationCap: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGraduationCap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'graduation-cap';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f19d';
+var svgPathData = 'M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGraduationCap = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGreaterThan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'greater-than';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f531';
+var svgPathData = 'M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGreaterThan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGreaterThanEqual: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGreaterThanEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'greater-than-equal';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f532';
+var svgPathData = 'M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGreaterThanEqual = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrimace: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrimace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grimace';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f57f';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrimace = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrin: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrin.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f580';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrin = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-alt';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f581';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinBeam: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-beam';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f582';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinBeam = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinBeamSweat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinBeamSweat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-beam-sweat';
+var width = 504;
+var height = 512;
+var ligatures = [];
+var unicode = 'f583';
+var svgPathData = 'M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinBeamSweat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinHearts: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinHearts.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-hearts';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f584';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinHearts = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinSquint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-squint';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f585';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinSquint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinSquintTears: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinSquintTears.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-squint-tears';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f586';
+var svgPathData = 'M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinSquintTears = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinStars: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinStars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-stars';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f587';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinStars = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinTears: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTears.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-tears';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f588';
+var svgPathData = 'M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinTears = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinTongue: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-tongue';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f589';
+var svgPathData = 'M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinTongue = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinTongueSquint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-tongue-squint';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58a';
+var svgPathData = 'M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinTongueSquint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinTongueWink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinTongueWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-tongue-wink';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58b';
+var svgPathData = 'M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinTongueWink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGrinWink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGrinWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grin-wink';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58c';
+var svgPathData = 'M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGrinWink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGripHorizontal: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripHorizontal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grip-horizontal';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58d';
+var svgPathData = 'M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGripHorizontal = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGripLines: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLines.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grip-lines';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a4';
+var svgPathData = 'M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGripLines = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGripLinesVertical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripLinesVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grip-lines-vertical';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a5';
+var svgPathData = 'M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGripLinesVertical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGripVertical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGripVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'grip-vertical';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58e';
+var svgPathData = 'M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGripVertical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faGuitar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faGuitar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'guitar';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a6';
+var svgPathData = 'M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faGuitar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'h-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0fd';
+var svgPathData = 'M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHamburger: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamburger.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hamburger';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f805';
+var svgPathData = 'M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHamburger = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHammer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHammer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hammer';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6e3';
+var svgPathData = 'M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHammer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHamsa: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHamsa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hamsa';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f665';
+var svgPathData = 'M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHamsa = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandHolding: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHolding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-holding';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4bd';
+var svgPathData = 'M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandHolding = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandHoldingHeart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-holding-heart';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4be';
+var svgPathData = 'M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandHoldingHeart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandHoldingMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-holding-medical';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05c';
+var svgPathData = 'M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandHoldingMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandHoldingUsd: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingUsd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-holding-usd';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4c0';
+var svgPathData = 'M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandHoldingUsd = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandHoldingWater: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandHoldingWater.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-holding-water';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4c1';
+var svgPathData = 'M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandHoldingWater = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandLizard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandLizard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-lizard';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f258';
+var svgPathData = 'M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandLizard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandMiddleFinger: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandMiddleFinger.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-middle-finger';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f806';
+var svgPathData = 'M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandMiddleFinger = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPaper: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-paper';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f256';
+var svgPathData = 'M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPaper = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPeace: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPeace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-peace';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f25b';
+var svgPathData = 'M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPeace = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPointDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-point-down';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a7';
+var svgPathData = 'M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPointDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPointLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-point-left';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a5';
+var svgPathData = 'M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPointLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPointRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-point-right';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a4';
+var svgPathData = 'M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPointRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPointUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-point-up';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a6';
+var svgPathData = 'M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPointUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandPointer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandPointer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-pointer';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f25a';
+var svgPathData = 'M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandPointer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandRock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandRock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-rock';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f255';
+var svgPathData = 'M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandRock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandScissors: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandScissors.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-scissors';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f257';
+var svgPathData = 'M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandScissors = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandSparkles: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSparkles.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-sparkles';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05d';
+var svgPathData = 'M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandSparkles = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandSpock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandSpock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hand-spock';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f259';
+var svgPathData = 'M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandSpock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHands: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHands.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hands';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4c2';
+var svgPathData = 'M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHands = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandsHelping: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsHelping.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hands-helping';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4c4';
+var svgPathData = 'M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandsHelping = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandsWash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandsWash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hands-wash';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05e';
+var svgPathData = 'M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandsWash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandshake: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'handshake';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2b5';
+var svgPathData = 'M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandshake = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandshakeAltSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'handshake-alt-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e05f';
+var svgPathData = 'M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandshakeAltSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHandshakeSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHandshakeSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'handshake-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e060';
+var svgPathData = 'M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHandshakeSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHanukiah: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHanukiah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hanukiah';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6e6';
+var svgPathData = 'M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHanukiah = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHardHat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHardHat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hard-hat';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f807';
+var svgPathData = 'M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHardHat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHashtag: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHashtag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hashtag';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f292';
+var svgPathData = 'M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHashtag = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHatCowboy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hat-cowboy';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f8c0';
+var svgPathData = 'M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHatCowboy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHatCowboySide: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatCowboySide.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hat-cowboy-side';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f8c1';
+var svgPathData = 'M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHatCowboySide = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHatWizard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHatWizard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hat-wizard';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6e8';
+var svgPathData = 'M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHatWizard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHdd: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHdd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hdd';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0a0';
+var svgPathData = 'M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHdd = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadSideCough: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCough.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'head-side-cough';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e061';
+var svgPathData = 'M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadSideCough = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadSideCoughSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideCoughSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'head-side-cough-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e062';
+var svgPathData = 'M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadSideCoughSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadSideMask: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideMask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'head-side-mask';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e063';
+var svgPathData = 'M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadSideMask = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadSideVirus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadSideVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'head-side-virus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e064';
+var svgPathData = 'M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadSideVirus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeading: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeading.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'heading';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1dc';
+var svgPathData = 'M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeading = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadphones: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphones.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'headphones';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f025';
+var svgPathData = 'M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadphones = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadphonesAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadphonesAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'headphones-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f58f';
+var svgPathData = 'M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadphonesAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeadset: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeadset.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'headset';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f590';
+var svgPathData = 'M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeadset = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'heart';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f004';
+var svgPathData = 'M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeartBroken: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartBroken.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'heart-broken';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7a9';
+var svgPathData = 'M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeartBroken = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHeartbeat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHeartbeat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'heartbeat';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f21e';
+var svgPathData = 'M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHeartbeat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHelicopter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHelicopter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'helicopter';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f533';
+var svgPathData = 'M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHelicopter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHighlighter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHighlighter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'highlighter';
+var width = 544;
+var height = 512;
+var ligatures = [];
+var unicode = 'f591';
+var svgPathData = 'M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHighlighter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHiking: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHiking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hiking';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6ec';
+var svgPathData = 'M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHiking = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHippo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHippo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hippo';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6ed';
+var svgPathData = 'M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHippo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHistory: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHistory.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'history';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1da';
+var svgPathData = 'M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHistory = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHockeyPuck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHockeyPuck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hockey-puck';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f453';
+var svgPathData = 'M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHockeyPuck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHollyBerry: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHollyBerry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'holly-berry';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7aa';
+var svgPathData = 'M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHollyBerry = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHome: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHome.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'home';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f015';
+var svgPathData = 'M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHome = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHorse: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'horse';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6f0';
+var svgPathData = 'M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHorse = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHorseHead: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHorseHead.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'horse-head';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ab';
+var svgPathData = 'M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHorseHead = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHospital: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospital.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hospital';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f8';
+var svgPathData = 'M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHospital = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHospitalAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hospital-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f47d';
+var svgPathData = 'M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHospitalAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHospitalSymbol: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalSymbol.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hospital-symbol';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f47e';
+var svgPathData = 'M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHospitalSymbol = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHospitalUser: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHospitalUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hospital-user';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f80d';
+var svgPathData = 'M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHospitalUser = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHotTub: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotTub.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hot-tub';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f593';
+var svgPathData = 'M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHotTub = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHotdog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotdog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hotdog';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f80f';
+var svgPathData = 'M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHotdog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHotel: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHotel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hotel';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f594';
+var svgPathData = 'M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHotel = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHourglass: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hourglass';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f254';
+var svgPathData = 'M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHourglass = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHourglassEnd: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassEnd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hourglass-end';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f253';
+var svgPathData = 'M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHourglassEnd = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHourglassHalf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hourglass-half';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f252';
+var svgPathData = 'M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHourglassHalf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHourglassStart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHourglassStart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hourglass-start';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f251';
+var svgPathData = 'M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHourglassStart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHouseDamage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseDamage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'house-damage';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6f1';
+var svgPathData = 'M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHouseDamage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHouseUser: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHouseUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'house-user';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'e065';
+var svgPathData = 'M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHouseUser = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faHryvnia: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faHryvnia.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'hryvnia';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6f2';
+var svgPathData = 'M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faHryvnia = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faICursor: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faICursor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'i-cursor';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f246';
+var svgPathData = 'M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faICursor = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIceCream: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIceCream.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ice-cream';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f810';
+var svgPathData = 'M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIceCream = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIcicles: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcicles.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'icicles';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ad';
+var svgPathData = 'M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIcicles = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIcons: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIcons.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'icons';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f86d';
+var svgPathData = 'M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIcons = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIdBadge: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdBadge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'id-badge';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2c1';
+var svgPathData = 'M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIdBadge = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIdCard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'id-card';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2c2';
+var svgPathData = 'M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIdCard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIdCardAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIdCardAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'id-card-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f47f';
+var svgPathData = 'M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIdCardAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIgloo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIgloo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'igloo';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ae';
+var svgPathData = 'M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIgloo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faImage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'image';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f03e';
+var svgPathData = 'M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faImage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faImages: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faImages.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'images';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f302';
+var svgPathData = 'M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faImages = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faInbox: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInbox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'inbox';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f01c';
+var svgPathData = 'M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faInbox = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIndent: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'indent';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f03c';
+var svgPathData = 'M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIndent = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faIndustry: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faIndustry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'industry';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f275';
+var svgPathData = 'M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faIndustry = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faInfinity: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfinity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'infinity';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f534';
+var svgPathData = 'M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faInfinity = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faInfo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'info';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f129';
+var svgPathData = 'M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faInfo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faInfoCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'info-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f05a';
+var svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faInfoCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faItalic: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faItalic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'italic';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f033';
+var svgPathData = 'M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faItalic = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faJedi: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJedi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'jedi';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f669';
+var svgPathData = 'M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faJedi = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faJoint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJoint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'joint';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f595';
+var svgPathData = 'M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faJoint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faJournalWhills: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faJournalWhills.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'journal-whills';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f66a';
+var svgPathData = 'M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faJournalWhills = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKaaba: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKaaba.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'kaaba';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f66b';
+var svgPathData = 'M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKaaba = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKey: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKey.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'key';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f084';
+var svgPathData = 'M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKey = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKeyboard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKeyboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'keyboard';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f11c';
+var svgPathData = 'M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKeyboard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKhanda: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKhanda.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'khanda';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f66d';
+var svgPathData = 'M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKhanda = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKiss: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiss.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'kiss';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f596';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKiss = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKissBeam: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'kiss-beam';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f597';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKissBeam = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKissWinkHeart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKissWinkHeart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'kiss-wink-heart';
+var width = 504;
+var height = 512;
+var ligatures = [];
+var unicode = 'f598';
+var svgPathData = 'M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKissWinkHeart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faKiwiBird: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faKiwiBird.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'kiwi-bird';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f535';
+var svgPathData = 'M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faKiwiBird = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLandmark: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLandmark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'landmark';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f66f';
+var svgPathData = 'M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLandmark = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLanguage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLanguage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'language';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ab';
+var svgPathData = 'M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLanguage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaptop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laptop';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f109';
+var svgPathData = 'M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaptop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaptopCode: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopCode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laptop-code';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5fc';
+var svgPathData = 'M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaptopCode = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaptopHouse: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopHouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laptop-house';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e066';
+var svgPathData = 'M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaptopHouse = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaptopMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaptopMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laptop-medical';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f812';
+var svgPathData = 'M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaptopMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaugh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaugh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laugh';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f599';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaugh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaughBeam: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laugh-beam';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f59a';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaughBeam = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaughSquint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughSquint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laugh-squint';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f59b';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaughSquint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLaughWink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLaughWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'laugh-wink';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f59c';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLaughWink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLayerGroup: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'layer-group';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5fd';
+var svgPathData = 'M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLayerGroup = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLeaf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLeaf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'leaf';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f06c';
+var svgPathData = 'M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLeaf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLemon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLemon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lemon';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f094';
+var svgPathData = 'M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLemon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLessThan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'less-than';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f536';
+var svgPathData = 'M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLessThan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLessThanEqual: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLessThanEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'less-than-equal';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f537';
+var svgPathData = 'M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLessThanEqual = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLevelDownAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'level-down-alt';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3be';
+var svgPathData = 'M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLevelDownAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLevelUpAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'level-up-alt';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3bf';
+var svgPathData = 'M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLevelUpAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLifeRing: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLifeRing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'life-ring';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1cd';
+var svgPathData = 'M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLifeRing = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLightbulb: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLightbulb.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lightbulb';
+var width = 352;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0eb';
+var svgPathData = 'M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLightbulb = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'link';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c1';
+var svgPathData = 'M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLiraSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLiraSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lira-sign';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f195';
+var svgPathData = 'M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLiraSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faList: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'list';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f03a';
+var svgPathData = 'M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faList = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faListAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'list-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f022';
+var svgPathData = 'M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faListAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faListOl: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListOl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'list-ol';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0cb';
+var svgPathData = 'M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faListOl = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faListUl: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faListUl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'list-ul';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ca';
+var svgPathData = 'M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faListUl = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLocationArrow: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLocationArrow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'location-arrow';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f124';
+var svgPathData = 'M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLocationArrow = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lock';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f023';
+var svgPathData = 'M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLockOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLockOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lock-open';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3c1';
+var svgPathData = 'M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLockOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLongArrowAltDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'long-arrow-alt-down';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f309';
+var svgPathData = 'M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLongArrowAltDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLongArrowAltLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'long-arrow-alt-left';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f30a';
+var svgPathData = 'M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLongArrowAltLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLongArrowAltRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'long-arrow-alt-right';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f30b';
+var svgPathData = 'M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLongArrowAltRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLongArrowAltUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLongArrowAltUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'long-arrow-alt-up';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f30c';
+var svgPathData = 'M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLongArrowAltUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLowVision: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLowVision.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'low-vision';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a8';
+var svgPathData = 'M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLowVision = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLuggageCart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLuggageCart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'luggage-cart';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f59d';
+var svgPathData = 'M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLuggageCart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLungs: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungs.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lungs';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f604';
+var svgPathData = 'M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLungs = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faLungsVirus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faLungsVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'lungs-virus';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e067';
+var svgPathData = 'M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faLungsVirus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMagic: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'magic';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d0';
+var svgPathData = 'M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMagic = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMagnet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMagnet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'magnet';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f076';
+var svgPathData = 'M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMagnet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMailBulk: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMailBulk.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mail-bulk';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f674';
+var svgPathData = 'M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMailBulk = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMale: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMale.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'male';
+var width = 192;
+var height = 512;
+var ligatures = [];
+var unicode = 'f183';
+var svgPathData = 'M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMale = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMap: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f279';
+var svgPathData = 'M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMap = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapMarked: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarked.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-marked';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f59f';
+var svgPathData = 'M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapMarked = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapMarkedAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkedAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-marked-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a0';
+var svgPathData = 'M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapMarkedAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapMarker: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarker.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-marker';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f041';
+var svgPathData = 'M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapMarker = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapMarkerAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapMarkerAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-marker-alt';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3c5';
+var svgPathData = 'M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapMarkerAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapPin: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapPin.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-pin';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f276';
+var svgPathData = 'M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapPin = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMapSigns: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMapSigns.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'map-signs';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f277';
+var svgPathData = 'M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMapSigns = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMarker: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarker.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'marker';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a1';
+var svgPathData = 'M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMarker = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMars: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mars';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f222';
+var svgPathData = 'M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMars = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMarsDouble: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mars-double';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f227';
+var svgPathData = 'M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMarsDouble = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMarsStroke: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStroke.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mars-stroke';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f229';
+var svgPathData = 'M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMarsStroke = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMarsStrokeH: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mars-stroke-h';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f22b';
+var svgPathData = 'M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMarsStrokeH = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMarsStrokeV: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMarsStrokeV.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mars-stroke-v';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f22a';
+var svgPathData = 'M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMarsStrokeV = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMask: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMask.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mask';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6fa';
+var svgPathData = 'M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMask = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMedal: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'medal';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a2';
+var svgPathData = 'M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMedal = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMedkit: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMedkit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'medkit';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0fa';
+var svgPathData = 'M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMedkit = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMeh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'meh';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f11a';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMeh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMehBlank: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehBlank.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'meh-blank';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a4';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMehBlank = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMehRollingEyes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMehRollingEyes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'meh-rolling-eyes';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a5';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMehRollingEyes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMemory: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMemory.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'memory';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f538';
+var svgPathData = 'M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMemory = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMenorah: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMenorah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'menorah';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f676';
+var svgPathData = 'M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMenorah = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMercury: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMercury.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mercury';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f223';
+var svgPathData = 'M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMercury = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMeteor: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMeteor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'meteor';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f753';
+var svgPathData = 'M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMeteor = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicrochip: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrochip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microchip';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2db';
+var svgPathData = 'M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicrochip = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicrophone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microphone';
+var width = 352;
+var height = 512;
+var ligatures = [];
+var unicode = 'f130';
+var svgPathData = 'M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicrophone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicrophoneAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microphone-alt';
+var width = 352;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3c9';
+var svgPathData = 'M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicrophoneAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicrophoneAltSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microphone-alt-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f539';
+var svgPathData = 'M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicrophoneAltSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicrophoneSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicrophoneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microphone-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f131';
+var svgPathData = 'M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicrophoneSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMicroscope: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMicroscope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'microscope';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f610';
+var svgPathData = 'M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMicroscope = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMinus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'minus';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f068';
+var svgPathData = 'M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMinus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMinusCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'minus-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f056';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMinusCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMinusSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMinusSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'minus-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f146';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMinusSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMitten: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMitten.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mitten';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7b5';
+var svgPathData = 'M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMitten = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMobile: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mobile';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f10b';
+var svgPathData = 'M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMobile = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMobileAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMobileAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mobile-alt';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3cd';
+var svgPathData = 'M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMobileAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyBill: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBill.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-bill';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d6';
+var svgPathData = 'M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyBill = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyBillAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-bill-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3d1';
+var svgPathData = 'M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyBillAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyBillWave: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWave.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-bill-wave';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53a';
+var svgPathData = 'M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyBillWave = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyBillWaveAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyBillWaveAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-bill-wave-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53b';
+var svgPathData = 'M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyBillWaveAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-check';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53c';
+var svgPathData = 'M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoneyCheckAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoneyCheckAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'money-check-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53d';
+var svgPathData = 'M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoneyCheckAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMonument: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMonument.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'monument';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a6';
+var svgPathData = 'M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMonument = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMoon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'moon';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f186';
+var svgPathData = 'M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMoon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMortarPestle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMortarPestle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mortar-pestle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5a7';
+var svgPathData = 'M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMortarPestle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMosque: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMosque.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mosque';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f678';
+var svgPathData = 'M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMosque = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMotorcycle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMotorcycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'motorcycle';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f21c';
+var svgPathData = 'M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMotorcycle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMountain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMountain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mountain';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6fc';
+var svgPathData = 'M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMountain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMouse: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mouse';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f8cc';
+var svgPathData = 'M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMouse = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMousePointer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMousePointer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mouse-pointer';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f245';
+var svgPathData = 'M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMousePointer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMugHot: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMugHot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'mug-hot';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7b6';
+var svgPathData = 'M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMugHot = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faMusic: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faMusic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'music';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f001';
+var svgPathData = 'M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faMusic = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faNetworkWired: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNetworkWired.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'network-wired';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6ff';
+var svgPathData = 'M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faNetworkWired = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faNeuter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNeuter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'neuter';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f22c';
+var svgPathData = 'M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faNeuter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faNewspaper: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNewspaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'newspaper';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ea';
+var svgPathData = 'M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faNewspaper = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faNotEqual: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotEqual.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'not-equal';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53e';
+var svgPathData = 'M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faNotEqual = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faNotesMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faNotesMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'notes-medical';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f481';
+var svgPathData = 'M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faNotesMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faObjectGroup: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'object-group';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f247';
+var svgPathData = 'M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faObjectGroup = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faObjectUngroup: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faObjectUngroup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'object-ungroup';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f248';
+var svgPathData = 'M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faObjectUngroup = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faOilCan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOilCan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'oil-can';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f613';
+var svgPathData = 'M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faOilCan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faOm: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'om';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f679';
+var svgPathData = 'M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faOm = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faOtter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOtter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'otter';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f700';
+var svgPathData = 'M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faOtter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faOutdent: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faOutdent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'outdent';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f03b';
+var svgPathData = 'M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faOutdent = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPager: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPager.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pager';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f815';
+var svgPathData = 'M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPager = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaintBrush: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintBrush.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paint-brush';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1fc';
+var svgPathData = 'M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaintBrush = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaintRoller: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaintRoller.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paint-roller';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5aa';
+var svgPathData = 'M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaintRoller = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPalette: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPalette.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'palette';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f53f';
+var svgPathData = 'M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPalette = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPallet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPallet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pallet';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f482';
+var svgPathData = 'M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPallet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaperPlane: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperPlane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paper-plane';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1d8';
+var svgPathData = 'M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaperPlane = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaperclip: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaperclip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paperclip';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c6';
+var svgPathData = 'M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaperclip = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faParachuteBox: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParachuteBox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'parachute-box';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4cd';
+var svgPathData = 'M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faParachuteBox = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faParagraph: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParagraph.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paragraph';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1dd';
+var svgPathData = 'M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faParagraph = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faParking: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faParking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'parking';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f540';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faParking = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPassport: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPassport.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'passport';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ab';
+var svgPathData = 'M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPassport = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPastafarianism: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPastafarianism.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pastafarianism';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f67b';
+var svgPathData = 'M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPastafarianism = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaste: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaste.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paste';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ea';
+var svgPathData = 'M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaste = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPause: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPause.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pause';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f04c';
+var svgPathData = 'M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPause = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPauseCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPauseCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pause-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f28b';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPauseCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPaw: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPaw.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'paw';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1b0';
+var svgPathData = 'M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPaw = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPeace: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeace.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'peace';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f67c';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPeace = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pen';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f304';
+var svgPathData = 'M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPenAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pen-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f305';
+var svgPathData = 'M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPenAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPenFancy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenFancy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pen-fancy';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ac';
+var svgPathData = 'M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPenFancy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPenNib: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenNib.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pen-nib';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ad';
+var svgPathData = 'M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPenNib = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPenSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPenSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pen-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f14b';
+var svgPathData = 'M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPenSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPencilAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pencil-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f303';
+var svgPathData = 'M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPencilAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPencilRuler: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPencilRuler.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pencil-ruler';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ae';
+var svgPathData = 'M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPencilRuler = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPeopleArrows: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleArrows.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'people-arrows';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'e068';
+var svgPathData = 'M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPeopleArrows = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPeopleCarry: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPeopleCarry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'people-carry';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4ce';
+var svgPathData = 'M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPeopleCarry = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPepperHot: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPepperHot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pepper-hot';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f816';
+var svgPathData = 'M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPepperHot = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPercent: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'percent';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f295';
+var svgPathData = 'M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPercent = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPercentage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPercentage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'percentage';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f541';
+var svgPathData = 'M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPercentage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPersonBooth: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPersonBooth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'person-booth';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f756';
+var svgPathData = 'M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPersonBooth = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhone: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhone.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f095';
+var svgPathData = 'M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhone = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhoneAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f879';
+var svgPathData = 'M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhoneAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhoneSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3dd';
+var svgPathData = 'M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhoneSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhoneSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f098';
+var svgPathData = 'M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhoneSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhoneSquareAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneSquareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone-square-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f87b';
+var svgPathData = 'M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhoneSquareAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhoneVolume: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhoneVolume.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'phone-volume';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a0';
+var svgPathData = 'M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhoneVolume = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPhotoVideo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPhotoVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'photo-video';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f87c';
+var svgPathData = 'M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPhotoVideo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPiggyBank: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPiggyBank.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'piggy-bank';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4d3';
+var svgPathData = 'M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPiggyBank = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPills: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPills.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pills';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f484';
+var svgPathData = 'M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPills = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPizzaSlice: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPizzaSlice.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pizza-slice';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f818';
+var svgPathData = 'M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPizzaSlice = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlaceOfWorship: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaceOfWorship.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'place-of-worship';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f67f';
+var svgPathData = 'M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlaceOfWorship = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlane: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlane.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plane';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f072';
+var svgPathData = 'M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlane = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlaneArrival: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneArrival.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plane-arrival';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5af';
+var svgPathData = 'M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlaneArrival = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlaneDeparture: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneDeparture.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plane-departure';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b0';
+var svgPathData = 'M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlaneDeparture = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlaneSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlaneSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plane-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e069';
+var svgPathData = 'M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlaneSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlay: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'play';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f04b';
+var svgPathData = 'M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlay = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlayCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlayCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'play-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f144';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlayCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlug: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlug.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plug';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e6';
+var svgPathData = 'M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlug = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plus';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f067';
+var svgPathData = 'M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlusCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plus-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f055';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlusCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPlusSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPlusSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'plus-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0fe';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPlusSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPodcast: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPodcast.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'podcast';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2ce';
+var svgPathData = 'M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPodcast = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPoll: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'poll';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f681';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPoll = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPollH: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPollH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'poll-h';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f682';
+var svgPathData = 'M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPollH = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPoo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'poo';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2fe';
+var svgPathData = 'M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPoo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPooStorm: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPooStorm.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'poo-storm';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f75a';
+var svgPathData = 'M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPooStorm = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPoop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'poop';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f619';
+var svgPathData = 'M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPoop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPortrait: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPortrait.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'portrait';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3e0';
+var svgPathData = 'M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPortrait = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPoundSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPoundSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pound-sign';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f154';
+var svgPathData = 'M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPoundSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPowerOff: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPowerOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'power-off';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f011';
+var svgPathData = 'M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPowerOff = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPray: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPray.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pray';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f683';
+var svgPathData = 'M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPray = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPrayingHands: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrayingHands.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'praying-hands';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f684';
+var svgPathData = 'M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPrayingHands = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPrescription: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescription.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'prescription';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b1';
+var svgPathData = 'M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPrescription = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPrescriptionBottle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'prescription-bottle';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f485';
+var svgPathData = 'M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPrescriptionBottle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPrescriptionBottleAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrescriptionBottleAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'prescription-bottle-alt';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f486';
+var svgPathData = 'M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPrescriptionBottleAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPrint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPrint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'print';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02f';
+var svgPathData = 'M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPrint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faProcedures: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProcedures.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'procedures';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f487';
+var svgPathData = 'M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faProcedures = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faProjectDiagram: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faProjectDiagram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'project-diagram';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f542';
+var svgPathData = 'M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faProjectDiagram = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPumpMedical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpMedical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pump-medical';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06a';
+var svgPathData = 'M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPumpMedical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPumpSoap: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPumpSoap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'pump-soap';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06b';
+var svgPathData = 'M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPumpSoap = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faPuzzlePiece: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faPuzzlePiece.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'puzzle-piece';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f12e';
+var svgPathData = 'M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faPuzzlePiece = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQrcode: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQrcode.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'qrcode';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f029';
+var svgPathData = 'M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQrcode = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuestion: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestion.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'question';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f128';
+var svgPathData = 'M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuestion = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuestionCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'question-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f059';
+var svgPathData = 'M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuestionCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuidditch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuidditch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'quidditch';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f458';
+var svgPathData = 'M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuidditch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuoteLeft: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteLeft.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'quote-left';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f10d';
+var svgPathData = 'M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuoteLeft = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuoteRight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuoteRight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'quote-right';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f10e';
+var svgPathData = 'M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuoteRight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faQuran: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faQuran.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'quran';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f687';
+var svgPathData = 'M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faQuran = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRadiation: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'radiation';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7b9';
+var svgPathData = 'M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRadiation = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRadiationAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRadiationAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'radiation-alt';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ba';
+var svgPathData = 'M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRadiationAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRainbow: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRainbow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'rainbow';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f75b';
+var svgPathData = 'M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRainbow = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRandom: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRandom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'random';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f074';
+var svgPathData = 'M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRandom = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faReceipt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReceipt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'receipt';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f543';
+var svgPathData = 'M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faReceipt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRecordVinyl: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecordVinyl.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'record-vinyl';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f8d9';
+var svgPathData = 'M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRecordVinyl = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRecycle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRecycle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'recycle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1b8';
+var svgPathData = 'M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRecycle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRedo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'redo';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f01e';
+var svgPathData = 'M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRedo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRedoAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRedoAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'redo-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2f9';
+var svgPathData = 'M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRedoAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRegistered: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRegistered.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'registered';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f25d';
+var svgPathData = 'M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRegistered = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRemoveFormat: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRemoveFormat.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'remove-format';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f87d';
+var svgPathData = 'M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRemoveFormat = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faReply: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReply.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'reply';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3e5';
+var svgPathData = 'M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faReply = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faReplyAll: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faReplyAll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'reply-all';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f122';
+var svgPathData = 'M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faReplyAll = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRepublican: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRepublican.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'republican';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f75e';
+var svgPathData = 'M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRepublican = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRestroom: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRestroom.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'restroom';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7bd';
+var svgPathData = 'M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRestroom = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRetweet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRetweet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'retweet';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f079';
+var svgPathData = 'M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRetweet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRibbon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRibbon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ribbon';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4d6';
+var svgPathData = 'M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRibbon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRing: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ring';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f70b';
+var svgPathData = 'M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRing = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRoad: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoad.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'road';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f018';
+var svgPathData = 'M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRoad = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRobot: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRobot.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'robot';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f544';
+var svgPathData = 'M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRobot = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRocket: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRocket.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'rocket';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f135';
+var svgPathData = 'M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRocket = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRoute: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRoute.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'route';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4d7';
+var svgPathData = 'M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRoute = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRss: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRss.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'rss';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f09e';
+var svgPathData = 'M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRss = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRssSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRssSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'rss-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f143';
+var svgPathData = 'M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRssSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRubleSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRubleSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ruble-sign';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f158';
+var svgPathData = 'M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRubleSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRuler: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRuler.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ruler';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f545';
+var svgPathData = 'M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRuler = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRulerCombined: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerCombined.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ruler-combined';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f546';
+var svgPathData = 'M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRulerCombined = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRulerHorizontal: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerHorizontal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ruler-horizontal';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f547';
+var svgPathData = 'M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRulerHorizontal = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRulerVertical: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRulerVertical.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ruler-vertical';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f548';
+var svgPathData = 'M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRulerVertical = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRunning: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRunning.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'running';
+var width = 416;
+var height = 512;
+var ligatures = [];
+var unicode = 'f70c';
+var svgPathData = 'M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRunning = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faRupeeSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faRupeeSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'rupee-sign';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f156';
+var svgPathData = 'M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faRupeeSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSadCry: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadCry.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sad-cry';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b3';
+var svgPathData = 'M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSadCry = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSadTear: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSadTear.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sad-tear';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b4';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSadTear = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSatellite: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatellite.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'satellite';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7bf';
+var svgPathData = 'M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSatellite = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSatelliteDish: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSatelliteDish.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'satellite-dish';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7c0';
+var svgPathData = 'M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSatelliteDish = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSave: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSave.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'save';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c7';
+var svgPathData = 'M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSave = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSchool: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSchool.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'school';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f549';
+var svgPathData = 'M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSchool = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faScrewdriver: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScrewdriver.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'screwdriver';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54a';
+var svgPathData = 'M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faScrewdriver = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faScroll: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faScroll.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'scroll';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f70e';
+var svgPathData = 'M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faScroll = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSdCard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSdCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sd-card';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7c2';
+var svgPathData = 'M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSdCard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSearch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'search';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f002';
+var svgPathData = 'M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSearch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSearchDollar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchDollar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'search-dollar';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f688';
+var svgPathData = 'M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSearchDollar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSearchLocation: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchLocation.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'search-location';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f689';
+var svgPathData = 'M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSearchLocation = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSearchMinus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'search-minus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f010';
+var svgPathData = 'M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSearchMinus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSearchPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSearchPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'search-plus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f00e';
+var svgPathData = 'M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSearchPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSeedling: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSeedling.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'seedling';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4d8';
+var svgPathData = 'M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSeedling = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faServer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faServer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'server';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f233';
+var svgPathData = 'M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faServer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShapes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShapes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shapes';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f61f';
+var svgPathData = 'M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShapes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'share';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f064';
+var svgPathData = 'M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShareAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'share-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e0';
+var svgPathData = 'M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShareAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShareAltSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareAltSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'share-alt-square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e1';
+var svgPathData = 'M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShareAltSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShareSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShareSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'share-square';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f14d';
+var svgPathData = 'M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShareSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShekelSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShekelSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shekel-sign';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f20b';
+var svgPathData = 'M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShekelSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShieldAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shield-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3ed';
+var svgPathData = 'M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShieldAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShieldVirus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShieldVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shield-virus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06c';
+var svgPathData = 'M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShieldVirus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShip: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShip.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ship';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f21a';
+var svgPathData = 'M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShip = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShippingFast: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShippingFast.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shipping-fast';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f48b';
+var svgPathData = 'M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShippingFast = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShoePrints: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoePrints.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shoe-prints';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54b';
+var svgPathData = 'M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShoePrints = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShoppingBag: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shopping-bag';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f290';
+var svgPathData = 'M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShoppingBag = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShoppingBasket: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingBasket.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shopping-basket';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f291';
+var svgPathData = 'M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShoppingBasket = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShoppingCart: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShoppingCart.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shopping-cart';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f07a';
+var svgPathData = 'M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShoppingCart = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShower: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShower.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shower';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2cc';
+var svgPathData = 'M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShower = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faShuttleVan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faShuttleVan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'shuttle-van';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b6';
+var svgPathData = 'M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faShuttleVan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sign';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4d9';
+var svgPathData = 'M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSignInAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignInAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sign-in-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2f6';
+var svgPathData = 'M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSignInAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSignLanguage: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignLanguage.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sign-language';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2a7';
+var svgPathData = 'M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSignLanguage = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSignOutAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignOutAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sign-out-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2f5';
+var svgPathData = 'M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSignOutAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSignal: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'signal';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f012';
+var svgPathData = 'M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSignal = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSignature: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSignature.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'signature';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b7';
+var svgPathData = 'M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSignature = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSimCard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSimCard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sim-card';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7c4';
+var svgPathData = 'M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSimCard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sink';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06d';
+var svgPathData = 'M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSitemap: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSitemap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sitemap';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e8';
+var svgPathData = 'M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSitemap = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSkating: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkating.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'skating';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7c5';
+var svgPathData = 'M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSkating = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSkiing: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiing.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'skiing';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7c9';
+var svgPathData = 'M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSkiing = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSkiingNordic: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkiingNordic.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'skiing-nordic';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ca';
+var svgPathData = 'M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSkiingNordic = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSkull: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'skull';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54c';
+var svgPathData = 'M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSkull = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSkullCrossbones: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSkullCrossbones.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'skull-crossbones';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f714';
+var svgPathData = 'M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSkullCrossbones = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f715';
+var svgPathData = 'M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSleigh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSleigh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sleigh';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7cc';
+var svgPathData = 'M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSleigh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSlidersH: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSlidersH.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sliders-h';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1de';
+var svgPathData = 'M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSlidersH = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmile: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmile.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smile';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f118';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmile = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmileBeam: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileBeam.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smile-beam';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5b8';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmileBeam = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmileWink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmileWink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smile-wink';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4da';
+var svgPathData = 'M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmileWink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smog';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f75f';
+var svgPathData = 'M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmoking: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmoking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smoking';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f48d';
+var svgPathData = 'M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmoking = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSmokingBan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSmokingBan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'smoking-ban';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54d';
+var svgPathData = 'M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSmokingBan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSms: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSms.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sms';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7cd';
+var svgPathData = 'M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSms = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSnowboarding: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowboarding.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'snowboarding';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7ce';
+var svgPathData = 'M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSnowboarding = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSnowflake: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowflake.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'snowflake';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2dc';
+var svgPathData = 'M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSnowflake = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSnowman: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowman.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'snowman';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7d0';
+var svgPathData = 'M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSnowman = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSnowplow: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSnowplow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'snowplow';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7d2';
+var svgPathData = 'M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSnowplow = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSoap: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSoap.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'soap';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06e';
+var svgPathData = 'M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSoap = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSocks: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSocks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'socks';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f696';
+var svgPathData = 'M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSocks = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSolarPanel: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSolarPanel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'solar-panel';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ba';
+var svgPathData = 'M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSolarPanel = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSort: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSort.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0dc';
+var svgPathData = 'M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSort = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAlphaDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-alpha-down';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f15d';
+var svgPathData = 'M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAlphaDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAlphaDownAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-alpha-down-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f881';
+var svgPathData = 'M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAlphaDownAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAlphaUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-alpha-up';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f15e';
+var svgPathData = 'M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAlphaUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAlphaUpAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAlphaUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-alpha-up-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f882';
+var svgPathData = 'M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAlphaUpAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAmountDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-amount-down';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f160';
+var svgPathData = 'M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAmountDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAmountDownAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-amount-down-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f884';
+var svgPathData = 'M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAmountDownAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAmountUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-amount-up';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f161';
+var svgPathData = 'M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAmountUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortAmountUpAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-amount-up-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f885';
+var svgPathData = 'M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortAmountUpAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-down';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0dd';
+var svgPathData = 'M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortNumericDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-numeric-down';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f162';
+var svgPathData = 'M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortNumericDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortNumericDownAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericDownAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-numeric-down-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f886';
+var svgPathData = 'M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortNumericDownAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortNumericUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-numeric-up';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f163';
+var svgPathData = 'M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortNumericUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortNumericUpAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortNumericUpAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-numeric-up-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f887';
+var svgPathData = 'M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortNumericUpAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSortUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSortUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sort-up';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0de';
+var svgPathData = 'M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSortUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSpa: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpa.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'spa';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5bb';
+var svgPathData = 'M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSpa = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSpaceShuttle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpaceShuttle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'space-shuttle';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f197';
+var svgPathData = 'M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSpaceShuttle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSpellCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpellCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'spell-check';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f891';
+var svgPathData = 'M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSpellCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSpider: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpider.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'spider';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f717';
+var svgPathData = 'M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSpider = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSpinner: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSpinner.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'spinner';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f110';
+var svgPathData = 'M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSpinner = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSplotch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSplotch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'splotch';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5bc';
+var svgPathData = 'M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSplotch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSprayCan: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSprayCan.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'spray-can';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5bd';
+var svgPathData = 'M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSprayCan = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'square';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c8';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSquareFull: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'square-full';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f45c';
+var svgPathData = 'M512 512H0V0h512v512z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSquareFull = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSquareRootAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSquareRootAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'square-root-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f698';
+var svgPathData = 'M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSquareRootAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStamp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStamp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stamp';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5bf';
+var svgPathData = 'M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStamp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStar: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStar.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f005';
+var svgPathData = 'M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStar = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStarAndCrescent: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarAndCrescent.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star-and-crescent';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f699';
+var svgPathData = 'M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStarAndCrescent = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStarHalf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star-half';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f089';
+var svgPathData = 'M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStarHalf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStarHalfAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarHalfAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star-half-alt';
+var width = 536;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c0';
+var svgPathData = 'M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStarHalfAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStarOfDavid: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfDavid.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star-of-david';
+var width = 464;
+var height = 512;
+var ligatures = [];
+var unicode = 'f69a';
+var svgPathData = 'M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStarOfDavid = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStarOfLife: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStarOfLife.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'star-of-life';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f621';
+var svgPathData = 'M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStarOfLife = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStepBackward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepBackward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'step-backward';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f048';
+var svgPathData = 'M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStepBackward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStepForward: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStepForward.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'step-forward';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f051';
+var svgPathData = 'M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStepForward = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStethoscope: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStethoscope.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stethoscope';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f1';
+var svgPathData = 'M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStethoscope = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStickyNote: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStickyNote.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sticky-note';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f249';
+var svgPathData = 'M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStickyNote = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStop: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStop.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stop';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f04d';
+var svgPathData = 'M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStop = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStopCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stop-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f28d';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStopCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStopwatch: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stopwatch';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2f2';
+var svgPathData = 'M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStopwatch = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStopwatch20: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStopwatch20.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stopwatch-20';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'e06f';
+var svgPathData = 'M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStopwatch20 = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStore: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'store';
+var width = 616;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54e';
+var svgPathData = 'M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStore = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStoreAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'store-alt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f54f';
+var svgPathData = 'M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStoreAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStoreAltSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'store-alt-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e070';
+var svgPathData = 'M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStoreAltSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStoreSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStoreSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'store-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e071';
+var svgPathData = 'M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStoreSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStream: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStream.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stream';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f550';
+var svgPathData = 'M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStream = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStreetView: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStreetView.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'street-view';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f21d';
+var svgPathData = 'M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStreetView = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStrikethrough: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStrikethrough.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'strikethrough';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0cc';
+var svgPathData = 'M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStrikethrough = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faStroopwafel: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faStroopwafel.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'stroopwafel';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f551';
+var svgPathData = 'M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faStroopwafel = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSubscript: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubscript.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'subscript';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f12c';
+var svgPathData = 'M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSubscript = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSubway: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSubway.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'subway';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f239';
+var svgPathData = 'M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSubway = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSuitcase: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcase.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'suitcase';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f2';
+var svgPathData = 'M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSuitcase = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSuitcaseRolling: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuitcaseRolling.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'suitcase-rolling';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c1';
+var svgPathData = 'M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSuitcaseRolling = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSun: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSun.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sun';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f185';
+var svgPathData = 'M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSun = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSuperscript: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSuperscript.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'superscript';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f12b';
+var svgPathData = 'M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSuperscript = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSurprise: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSurprise.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'surprise';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c2';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSurprise = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSwatchbook: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwatchbook.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'swatchbook';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c3';
+var svgPathData = 'M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSwatchbook = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSwimmer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'swimmer';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c4';
+var svgPathData = 'M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSwimmer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSwimmingPool: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSwimmingPool.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'swimming-pool';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c5';
+var svgPathData = 'M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSwimmingPool = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSynagogue: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSynagogue.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'synagogue';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f69b';
+var svgPathData = 'M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSynagogue = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSync: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSync.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sync';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f021';
+var svgPathData = 'M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSync = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSyncAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyncAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'sync-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2f1';
+var svgPathData = 'M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSyncAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faSyringe: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faSyringe.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'syringe';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f48e';
+var svgPathData = 'M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faSyringe = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTable: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTable.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'table';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ce';
+var svgPathData = 'M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTable = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTableTennis: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTableTennis.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'table-tennis';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f45d';
+var svgPathData = 'M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTableTennis = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTablet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tablet';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f10a';
+var svgPathData = 'M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTablet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTabletAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTabletAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tablet-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3fa';
+var svgPathData = 'M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTabletAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTablets: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTablets.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tablets';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f490';
+var svgPathData = 'M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTablets = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTachometerAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTachometerAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tachometer-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3fd';
+var svgPathData = 'M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTachometerAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTag: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tag';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02b';
+var svgPathData = 'M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTag = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTags: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTags.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tags';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f02c';
+var svgPathData = 'M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTags = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTape: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTape.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tape';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4db';
+var svgPathData = 'M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTape = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTasks: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTasks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tasks';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ae';
+var svgPathData = 'M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTasks = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTaxi: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTaxi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'taxi';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1ba';
+var svgPathData = 'M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTaxi = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTeeth: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeeth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'teeth';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f62e';
+var svgPathData = 'M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTeeth = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTeethOpen: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTeethOpen.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'teeth-open';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f62f';
+var svgPathData = 'M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTeethOpen = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTemperatureHigh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'temperature-high';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f769';
+var svgPathData = 'M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTemperatureHigh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTemperatureLow: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'temperature-low';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f76b';
+var svgPathData = 'M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTemperatureLow = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTenge: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTenge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tenge';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7d7';
+var svgPathData = 'M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTenge = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTerminal: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTerminal.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'terminal';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f120';
+var svgPathData = 'M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTerminal = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTextHeight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextHeight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'text-height';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f034';
+var svgPathData = 'M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTextHeight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTextWidth: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTextWidth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'text-width';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f035';
+var svgPathData = 'M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTextWidth = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTh: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTh.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'th';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f00a';
+var svgPathData = 'M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTh = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThLarge: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThLarge.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'th-large';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f009';
+var svgPathData = 'M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThLarge = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThList: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThList.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'th-list';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f00b';
+var svgPathData = 'M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThList = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTheaterMasks: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTheaterMasks.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'theater-masks';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f630';
+var svgPathData = 'M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTheaterMasks = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f491';
+var svgPathData = 'M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometerEmpty: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerEmpty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer-empty';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2cb';
+var svgPathData = 'M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometerEmpty = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometerFull: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerFull.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer-full';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2c7';
+var svgPathData = 'M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometerFull = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometerHalf: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer-half';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2c9';
+var svgPathData = 'M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometerHalf = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometerQuarter: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerQuarter.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer-quarter';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2ca';
+var svgPathData = 'M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometerQuarter = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThermometerThreeQuarters: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThermometerThreeQuarters.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thermometer-three-quarters';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2c8';
+var svgPathData = 'M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThermometerThreeQuarters = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThumbsDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thumbs-down';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f165';
+var svgPathData = 'M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThumbsDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThumbsUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbsUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thumbs-up';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f164';
+var svgPathData = 'M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThumbsUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faThumbtack: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faThumbtack.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'thumbtack';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f08d';
+var svgPathData = 'M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faThumbtack = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTicketAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTicketAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'ticket-alt';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f3ff';
+var svgPathData = 'M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTicketAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTimes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'times';
+var width = 352;
+var height = 512;
+var ligatures = [];
+var unicode = 'f00d';
+var svgPathData = 'M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTimes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTimesCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTimesCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'times-circle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f057';
+var svgPathData = 'M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTimesCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTint: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTint.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tint';
+var width = 352;
+var height = 512;
+var ligatures = [];
+var unicode = 'f043';
+var svgPathData = 'M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTint = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTintSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTintSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tint-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c7';
+var svgPathData = 'M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTintSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTired: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTired.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tired';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c8';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTired = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToggleOff: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toggle-off';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f204';
+var svgPathData = 'M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToggleOff = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToggleOn: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toggle-on';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f205';
+var svgPathData = 'M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToggleOn = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToilet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToilet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toilet';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7d8';
+var svgPathData = 'M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToilet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToiletPaper: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaper.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toilet-paper';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f71e';
+var svgPathData = 'M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToiletPaper = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToiletPaperSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToiletPaperSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toilet-paper-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e072';
+var svgPathData = 'M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToiletPaperSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToolbox: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToolbox.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'toolbox';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f552';
+var svgPathData = 'M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToolbox = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTools: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTools.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tools';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7d9';
+var svgPathData = 'M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTools = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTooth: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTooth.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tooth';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5c9';
+var svgPathData = 'M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTooth = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTorah: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTorah.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'torah';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6a0';
+var svgPathData = 'M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTorah = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faToriiGate: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faToriiGate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'torii-gate';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6a1';
+var svgPathData = 'M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faToriiGate = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTractor: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTractor.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tractor';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f722';
+var svgPathData = 'M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTractor = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrademark: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrademark.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trademark';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f25c';
+var svgPathData = 'M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrademark = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrafficLight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrafficLight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'traffic-light';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f637';
+var svgPathData = 'M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrafficLight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrailer: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrailer.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trailer';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e041';
+var svgPathData = 'M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrailer = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrain: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrain.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'train';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f238';
+var svgPathData = 'M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrain = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTram: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTram.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tram';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f7da';
+var svgPathData = 'M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTram = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTransgender: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgender.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'transgender';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f224';
+var svgPathData = 'M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTransgender = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTransgenderAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTransgenderAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'transgender-alt';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f225';
+var svgPathData = 'M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTransgenderAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trash';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1f8';
+var svgPathData = 'M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrashAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trash-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2ed';
+var svgPathData = 'M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrashAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrashRestore: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trash-restore';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f829';
+var svgPathData = 'M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrashRestore = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrashRestoreAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrashRestoreAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trash-restore-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f82a';
+var svgPathData = 'M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrashRestoreAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTree: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTree.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tree';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1bb';
+var svgPathData = 'M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTree = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTrophy: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTrophy.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'trophy';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f091';
+var svgPathData = 'M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTrophy = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTruck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'truck';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0d1';
+var svgPathData = 'M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTruck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTruckLoading: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckLoading.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'truck-loading';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4de';
+var svgPathData = 'M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTruckLoading = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTruckMonster: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMonster.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'truck-monster';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f63b';
+var svgPathData = 'M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTruckMonster = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTruckMoving: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckMoving.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'truck-moving';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4df';
+var svgPathData = 'M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTruckMoving = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTruckPickup: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTruckPickup.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'truck-pickup';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f63c';
+var svgPathData = 'M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTruckPickup = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTshirt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTshirt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tshirt';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f553';
+var svgPathData = 'M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTshirt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTty: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTty.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tty';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1e4';
+var svgPathData = 'M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTty = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faTv: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faTv.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'tv';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f26c';
+var svgPathData = 'M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faTv = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUmbrella: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrella.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'umbrella';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e9';
+var svgPathData = 'M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUmbrella = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUmbrellaBeach: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUmbrellaBeach.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'umbrella-beach';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ca';
+var svgPathData = 'M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUmbrellaBeach = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUnderline: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnderline.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'underline';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0cd';
+var svgPathData = 'M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUnderline = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUndo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'undo';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0e2';
+var svgPathData = 'M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUndo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUndoAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUndoAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'undo-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2ea';
+var svgPathData = 'M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUndoAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUniversalAccess: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversalAccess.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'universal-access';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f29a';
+var svgPathData = 'M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUniversalAccess = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUniversity: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUniversity.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'university';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f19c';
+var svgPathData = 'M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUniversity = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUnlink: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlink.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'unlink';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f127';
+var svgPathData = 'M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUnlink = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUnlock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'unlock';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f09c';
+var svgPathData = 'M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUnlock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUnlockAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUnlockAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'unlock-alt';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f13e';
+var svgPathData = 'M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUnlockAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUpload: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUpload.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'upload';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f093';
+var svgPathData = 'M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUpload = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUser: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUser.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f007';
+var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUser = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-alt';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f406';
+var svgPathData = 'M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserAltSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAltSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-alt-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4fa';
+var svgPathData = 'M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserAltSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserAstronaut: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserAstronaut.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-astronaut';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4fb';
+var svgPathData = 'M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserAstronaut = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserCheck: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCheck.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-check';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4fc';
+var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserCheck = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserCircle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCircle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-circle';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2bd';
+var svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserCircle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserClock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserClock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-clock';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4fd';
+var svgPathData = 'M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserClock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserCog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-cog';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4fe';
+var svgPathData = 'M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserCog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserEdit: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserEdit.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-edit';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4ff';
+var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserEdit = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserFriends: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserFriends.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-friends';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f500';
+var svgPathData = 'M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserFriends = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserGraduate: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserGraduate.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-graduate';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f501';
+var svgPathData = 'M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserGraduate = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserInjured: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserInjured.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-injured';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f728';
+var svgPathData = 'M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserInjured = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserLock: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserLock.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-lock';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f502';
+var svgPathData = 'M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserLock = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserMd: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMd.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-md';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0f0';
+var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserMd = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserMinus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserMinus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-minus';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f503';
+var svgPathData = 'M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserMinus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserNinja: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNinja.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-ninja';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f504';
+var svgPathData = 'M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserNinja = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserNurse: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserNurse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-nurse';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f82f';
+var svgPathData = 'M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserNurse = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserPlus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserPlus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-plus';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f234';
+var svgPathData = 'M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserPlus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserSecret: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSecret.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-secret';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f21b';
+var svgPathData = 'M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserSecret = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserShield: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserShield.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-shield';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f505';
+var svgPathData = 'M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserShield = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f506';
+var svgPathData = 'M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserTag: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTag.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-tag';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f507';
+var svgPathData = 'M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserTag = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserTie: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTie.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-tie';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'f508';
+var svgPathData = 'M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserTie = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUserTimes: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUserTimes.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'user-times';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f235';
+var svgPathData = 'M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUserTimes = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUsers: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsers.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'users';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0c0';
+var svgPathData = 'M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUsers = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUsersCog: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersCog.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'users-cog';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f509';
+var svgPathData = 'M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUsersCog = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUsersSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUsersSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'users-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e073';
+var svgPathData = 'M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUsersSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUtensilSpoon: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensilSpoon.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'utensil-spoon';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2e5';
+var svgPathData = 'M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUtensilSpoon = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faUtensils: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faUtensils.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'utensils';
+var width = 416;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2e7';
+var svgPathData = 'M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faUtensils = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVectorSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVectorSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vector-square';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5cb';
+var svgPathData = 'M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVectorSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVenus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'venus';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f221';
+var svgPathData = 'M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVenus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVenusDouble: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusDouble.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'venus-double';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f226';
+var svgPathData = 'M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVenusDouble = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVenusMars: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVenusMars.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'venus-mars';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f228';
+var svgPathData = 'M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVenusMars = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVest: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVest.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vest';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'e085';
+var svgPathData = 'M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVest = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVestPatches: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVestPatches.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vest-patches';
+var width = 448;
+var height = 512;
+var ligatures = [];
+var unicode = 'e086';
+var svgPathData = 'M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVestPatches = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVial: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVial.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vial';
+var width = 480;
+var height = 512;
+var ligatures = [];
+var unicode = 'f492';
+var svgPathData = 'M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVial = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVials: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVials.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vials';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f493';
+var svgPathData = 'M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVials = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVideo: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideo.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'video';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f03d';
+var svgPathData = 'M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVideo = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVideoSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVideoSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'video-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4e2';
+var svgPathData = 'M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVideoSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVihara: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVihara.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vihara';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6a7';
+var svgPathData = 'M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVihara = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVirus: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirus.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'virus';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'e074';
+var svgPathData = 'M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVirus = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVirusSlash: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVirusSlash.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'virus-slash';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e075';
+var svgPathData = 'M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVirusSlash = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faViruses: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faViruses.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'viruses';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'e076';
+var svgPathData = 'M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faViruses = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVoicemail: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoicemail.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'voicemail';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f897';
+var svgPathData = 'M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVoicemail = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVolleyballBall: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolleyballBall.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'volleyball-ball';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f45f';
+var svgPathData = 'M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVolleyballBall = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVolumeDown: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeDown.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'volume-down';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f027';
+var svgPathData = 'M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVolumeDown = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVolumeMute: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeMute.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'volume-mute';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6a9';
+var svgPathData = 'M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVolumeMute = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVolumeOff: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeOff.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'volume-off';
+var width = 256;
+var height = 512;
+var ligatures = [];
+var unicode = 'f026';
+var svgPathData = 'M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVolumeOff = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVolumeUp: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVolumeUp.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'volume-up';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f028';
+var svgPathData = 'M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVolumeUp = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVoteYea: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVoteYea.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vote-yea';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f772';
+var svgPathData = 'M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVoteYea = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faVrCardboard: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faVrCardboard.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'vr-cardboard';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f729';
+var svgPathData = 'M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faVrCardboard = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWalking: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWalking.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'walking';
+var width = 320;
+var height = 512;
+var ligatures = [];
+var unicode = 'f554';
+var svgPathData = 'M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWalking = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWallet: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWallet.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wallet';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f555';
+var svgPathData = 'M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWallet = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWarehouse: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWarehouse.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'warehouse';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f494';
+var svgPathData = 'M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWarehouse = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWater: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWater.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'water';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f773';
+var svgPathData = 'M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWater = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWaveSquare: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWaveSquare.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wave-square';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f83e';
+var svgPathData = 'M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWaveSquare = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWeight: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeight.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'weight';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f496';
+var svgPathData = 'M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWeight = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWeightHanging: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWeightHanging.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'weight-hanging';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5cd';
+var svgPathData = 'M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWeightHanging = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWheelchair: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWheelchair.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wheelchair';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f193';
+var svgPathData = 'M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWheelchair = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWifi: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWifi.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wifi';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f1eb';
+var svgPathData = 'M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWifi = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWind: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWind.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wind';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f72e';
+var svgPathData = 'M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWind = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWindowClose: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowClose.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'window-close';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f410';
+var svgPathData = 'M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWindowClose = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWindowMaximize: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMaximize.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'window-maximize';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2d0';
+var svgPathData = 'M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWindowMaximize = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWindowMinimize: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowMinimize.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'window-minimize';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2d1';
+var svgPathData = 'M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWindowMinimize = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWindowRestore: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWindowRestore.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'window-restore';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f2d2';
+var svgPathData = 'M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWindowRestore = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWineBottle: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineBottle.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wine-bottle';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f72f';
+var svgPathData = 'M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWineBottle = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWineGlass: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlass.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wine-glass';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f4e3';
+var svgPathData = 'M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWineGlass = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWineGlassAlt: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWineGlassAlt.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wine-glass-alt';
+var width = 288;
+var height = 512;
+var ligatures = [];
+var unicode = 'f5ce';
+var svgPathData = 'M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWineGlassAlt = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWonSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWonSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'won-sign';
+var width = 576;
+var height = 512;
+var ligatures = [];
+var unicode = 'f159';
+var svgPathData = 'M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWonSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faWrench: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faWrench.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'wrench';
+var width = 512;
+var height = 512;
+var ligatures = [];
+var unicode = 'f0ad';
+var svgPathData = 'M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faWrench = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faXRay: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faXRay.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'x-ray';
+var width = 640;
+var height = 512;
+var ligatures = [];
+var unicode = 'f497';
+var svgPathData = 'M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faXRay = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faYenSign: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYenSign.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'yen-sign';
+var width = 384;
+var height = 512;
+var ligatures = [];
+var unicode = 'f157';
+var svgPathData = 'M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faYenSign = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { IconDefinition, IconPrefix, IconName } from "@fortawesome/fontawesome-common-types";
+export const definition: IconDefinition;
+export const faYinYang: IconDefinition;
+export const prefix: IconPrefix;
+export const iconName: IconName;
+export const width: number;
+export const height: number;
+export const ligatures: string[];
+export const unicode: string;
+export const svgPathData: string;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/faYinYang.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var prefix = 'fas';
+var iconName = 'yin-yang';
+var width = 496;
+var height = 512;
+var ligatures = [];
+var unicode = 'f6ad';
+var svgPathData = 'M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z';
+
+exports.definition = {
+  prefix: prefix,
+  iconName: iconName,
+  icon: [
+    width,
+    height,
+    ligatures,
+    unicode,
+    svgPathData
+  ]};
+
+exports.faYinYang = exports.definition;
+exports.prefix = prefix;
+exports.iconName = iconName;
+exports.width = width;
+exports.height = height;
+exports.ligatures = ligatures;
+exports.unicode = unicode;
+exports.svgPathData = svgPathData;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.d.ts
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1006 @@
+export const faAd: IconDefinition;
+export const faAddressBook: IconDefinition;
+export const faAddressCard: IconDefinition;
+export const faAdjust: IconDefinition;
+export const faAirFreshener: IconDefinition;
+export const faAlignCenter: IconDefinition;
+export const faAlignJustify: IconDefinition;
+export const faAlignLeft: IconDefinition;
+export const faAlignRight: IconDefinition;
+export const faAllergies: IconDefinition;
+export const faAmbulance: IconDefinition;
+export const faAmericanSignLanguageInterpreting: IconDefinition;
+export const faAnchor: IconDefinition;
+export const faAngleDoubleDown: IconDefinition;
+export const faAngleDoubleLeft: IconDefinition;
+export const faAngleDoubleRight: IconDefinition;
+export const faAngleDoubleUp: IconDefinition;
+export const faAngleDown: IconDefinition;
+export const faAngleLeft: IconDefinition;
+export const faAngleRight: IconDefinition;
+export const faAngleUp: IconDefinition;
+export const faAngry: IconDefinition;
+export const faAnkh: IconDefinition;
+export const faAppleAlt: IconDefinition;
+export const faArchive: IconDefinition;
+export const faArchway: IconDefinition;
+export const faArrowAltCircleDown: IconDefinition;
+export const faArrowAltCircleLeft: IconDefinition;
+export const faArrowAltCircleRight: IconDefinition;
+export const faArrowAltCircleUp: IconDefinition;
+export const faArrowCircleDown: IconDefinition;
+export const faArrowCircleLeft: IconDefinition;
+export const faArrowCircleRight: IconDefinition;
+export const faArrowCircleUp: IconDefinition;
+export const faArrowDown: IconDefinition;
+export const faArrowLeft: IconDefinition;
+export const faArrowRight: IconDefinition;
+export const faArrowUp: IconDefinition;
+export const faArrowsAlt: IconDefinition;
+export const faArrowsAltH: IconDefinition;
+export const faArrowsAltV: IconDefinition;
+export const faAssistiveListeningSystems: IconDefinition;
+export const faAsterisk: IconDefinition;
+export const faAt: IconDefinition;
+export const faAtlas: IconDefinition;
+export const faAtom: IconDefinition;
+export const faAudioDescription: IconDefinition;
+export const faAward: IconDefinition;
+export const faBaby: IconDefinition;
+export const faBabyCarriage: IconDefinition;
+export const faBackspace: IconDefinition;
+export const faBackward: IconDefinition;
+export const faBacon: IconDefinition;
+export const faBacteria: IconDefinition;
+export const faBacterium: IconDefinition;
+export const faBahai: IconDefinition;
+export const faBalanceScale: IconDefinition;
+export const faBalanceScaleLeft: IconDefinition;
+export const faBalanceScaleRight: IconDefinition;
+export const faBan: IconDefinition;
+export const faBandAid: IconDefinition;
+export const faBarcode: IconDefinition;
+export const faBars: IconDefinition;
+export const faBaseballBall: IconDefinition;
+export const faBasketballBall: IconDefinition;
+export const faBath: IconDefinition;
+export const faBatteryEmpty: IconDefinition;
+export const faBatteryFull: IconDefinition;
+export const faBatteryHalf: IconDefinition;
+export const faBatteryQuarter: IconDefinition;
+export const faBatteryThreeQuarters: IconDefinition;
+export const faBed: IconDefinition;
+export const faBeer: IconDefinition;
+export const faBell: IconDefinition;
+export const faBellSlash: IconDefinition;
+export const faBezierCurve: IconDefinition;
+export const faBible: IconDefinition;
+export const faBicycle: IconDefinition;
+export const faBiking: IconDefinition;
+export const faBinoculars: IconDefinition;
+export const faBiohazard: IconDefinition;
+export const faBirthdayCake: IconDefinition;
+export const faBlender: IconDefinition;
+export const faBlenderPhone: IconDefinition;
+export const faBlind: IconDefinition;
+export const faBlog: IconDefinition;
+export const faBold: IconDefinition;
+export const faBolt: IconDefinition;
+export const faBomb: IconDefinition;
+export const faBone: IconDefinition;
+export const faBong: IconDefinition;
+export const faBook: IconDefinition;
+export const faBookDead: IconDefinition;
+export const faBookMedical: IconDefinition;
+export const faBookOpen: IconDefinition;
+export const faBookReader: IconDefinition;
+export const faBookmark: IconDefinition;
+export const faBorderAll: IconDefinition;
+export const faBorderNone: IconDefinition;
+export const faBorderStyle: IconDefinition;
+export const faBowlingBall: IconDefinition;
+export const faBox: IconDefinition;
+export const faBoxOpen: IconDefinition;
+export const faBoxTissue: IconDefinition;
+export const faBoxes: IconDefinition;
+export const faBraille: IconDefinition;
+export const faBrain: IconDefinition;
+export const faBreadSlice: IconDefinition;
+export const faBriefcase: IconDefinition;
+export const faBriefcaseMedical: IconDefinition;
+export const faBroadcastTower: IconDefinition;
+export const faBroom: IconDefinition;
+export const faBrush: IconDefinition;
+export const faBug: IconDefinition;
+export const faBuilding: IconDefinition;
+export const faBullhorn: IconDefinition;
+export const faBullseye: IconDefinition;
+export const faBurn: IconDefinition;
+export const faBus: IconDefinition;
+export const faBusAlt: IconDefinition;
+export const faBusinessTime: IconDefinition;
+export const faCalculator: IconDefinition;
+export const faCalendar: IconDefinition;
+export const faCalendarAlt: IconDefinition;
+export const faCalendarCheck: IconDefinition;
+export const faCalendarDay: IconDefinition;
+export const faCalendarMinus: IconDefinition;
+export const faCalendarPlus: IconDefinition;
+export const faCalendarTimes: IconDefinition;
+export const faCalendarWeek: IconDefinition;
+export const faCamera: IconDefinition;
+export const faCameraRetro: IconDefinition;
+export const faCampground: IconDefinition;
+export const faCandyCane: IconDefinition;
+export const faCannabis: IconDefinition;
+export const faCapsules: IconDefinition;
+export const faCar: IconDefinition;
+export const faCarAlt: IconDefinition;
+export const faCarBattery: IconDefinition;
+export const faCarCrash: IconDefinition;
+export const faCarSide: IconDefinition;
+export const faCaravan: IconDefinition;
+export const faCaretDown: IconDefinition;
+export const faCaretLeft: IconDefinition;
+export const faCaretRight: IconDefinition;
+export const faCaretSquareDown: IconDefinition;
+export const faCaretSquareLeft: IconDefinition;
+export const faCaretSquareRight: IconDefinition;
+export const faCaretSquareUp: IconDefinition;
+export const faCaretUp: IconDefinition;
+export const faCarrot: IconDefinition;
+export const faCartArrowDown: IconDefinition;
+export const faCartPlus: IconDefinition;
+export const faCashRegister: IconDefinition;
+export const faCat: IconDefinition;
+export const faCertificate: IconDefinition;
+export const faChair: IconDefinition;
+export const faChalkboard: IconDefinition;
+export const faChalkboardTeacher: IconDefinition;
+export const faChargingStation: IconDefinition;
+export const faChartArea: IconDefinition;
+export const faChartBar: IconDefinition;
+export const faChartLine: IconDefinition;
+export const faChartPie: IconDefinition;
+export const faCheck: IconDefinition;
+export const faCheckCircle: IconDefinition;
+export const faCheckDouble: IconDefinition;
+export const faCheckSquare: IconDefinition;
+export const faCheese: IconDefinition;
+export const faChess: IconDefinition;
+export const faChessBishop: IconDefinition;
+export const faChessBoard: IconDefinition;
+export const faChessKing: IconDefinition;
+export const faChessKnight: IconDefinition;
+export const faChessPawn: IconDefinition;
+export const faChessQueen: IconDefinition;
+export const faChessRook: IconDefinition;
+export const faChevronCircleDown: IconDefinition;
+export const faChevronCircleLeft: IconDefinition;
+export const faChevronCircleRight: IconDefinition;
+export const faChevronCircleUp: IconDefinition;
+export const faChevronDown: IconDefinition;
+export const faChevronLeft: IconDefinition;
+export const faChevronRight: IconDefinition;
+export const faChevronUp: IconDefinition;
+export const faChild: IconDefinition;
+export const faChurch: IconDefinition;
+export const faCircle: IconDefinition;
+export const faCircleNotch: IconDefinition;
+export const faCity: IconDefinition;
+export const faClinicMedical: IconDefinition;
+export const faClipboard: IconDefinition;
+export const faClipboardCheck: IconDefinition;
+export const faClipboardList: IconDefinition;
+export const faClock: IconDefinition;
+export const faClone: IconDefinition;
+export const faClosedCaptioning: IconDefinition;
+export const faCloud: IconDefinition;
+export const faCloudDownloadAlt: IconDefinition;
+export const faCloudMeatball: IconDefinition;
+export const faCloudMoon: IconDefinition;
+export const faCloudMoonRain: IconDefinition;
+export const faCloudRain: IconDefinition;
+export const faCloudShowersHeavy: IconDefinition;
+export const faCloudSun: IconDefinition;
+export const faCloudSunRain: IconDefinition;
+export const faCloudUploadAlt: IconDefinition;
+export const faCocktail: IconDefinition;
+export const faCode: IconDefinition;
+export const faCodeBranch: IconDefinition;
+export const faCoffee: IconDefinition;
+export const faCog: IconDefinition;
+export const faCogs: IconDefinition;
+export const faCoins: IconDefinition;
+export const faColumns: IconDefinition;
+export const faComment: IconDefinition;
+export const faCommentAlt: IconDefinition;
+export const faCommentDollar: IconDefinition;
+export const faCommentDots: IconDefinition;
+export const faCommentMedical: IconDefinition;
+export const faCommentSlash: IconDefinition;
+export const faComments: IconDefinition;
+export const faCommentsDollar: IconDefinition;
+export const faCompactDisc: IconDefinition;
+export const faCompass: IconDefinition;
+export const faCompress: IconDefinition;
+export const faCompressAlt: IconDefinition;
+export const faCompressArrowsAlt: IconDefinition;
+export const faConciergeBell: IconDefinition;
+export const faCookie: IconDefinition;
+export const faCookieBite: IconDefinition;
+export const faCopy: IconDefinition;
+export const faCopyright: IconDefinition;
+export const faCouch: IconDefinition;
+export const faCreditCard: IconDefinition;
+export const faCrop: IconDefinition;
+export const faCropAlt: IconDefinition;
+export const faCross: IconDefinition;
+export const faCrosshairs: IconDefinition;
+export const faCrow: IconDefinition;
+export const faCrown: IconDefinition;
+export const faCrutch: IconDefinition;
+export const faCube: IconDefinition;
+export const faCubes: IconDefinition;
+export const faCut: IconDefinition;
+export const faDatabase: IconDefinition;
+export const faDeaf: IconDefinition;
+export const faDemocrat: IconDefinition;
+export const faDesktop: IconDefinition;
+export const faDharmachakra: IconDefinition;
+export const faDiagnoses: IconDefinition;
+export const faDice: IconDefinition;
+export const faDiceD20: IconDefinition;
+export const faDiceD6: IconDefinition;
+export const faDiceFive: IconDefinition;
+export const faDiceFour: IconDefinition;
+export const faDiceOne: IconDefinition;
+export const faDiceSix: IconDefinition;
+export const faDiceThree: IconDefinition;
+export const faDiceTwo: IconDefinition;
+export const faDigitalTachograph: IconDefinition;
+export const faDirections: IconDefinition;
+export const faDisease: IconDefinition;
+export const faDivide: IconDefinition;
+export const faDizzy: IconDefinition;
+export const faDna: IconDefinition;
+export const faDog: IconDefinition;
+export const faDollarSign: IconDefinition;
+export const faDolly: IconDefinition;
+export const faDollyFlatbed: IconDefinition;
+export const faDonate: IconDefinition;
+export const faDoorClosed: IconDefinition;
+export const faDoorOpen: IconDefinition;
+export const faDotCircle: IconDefinition;
+export const faDove: IconDefinition;
+export const faDownload: IconDefinition;
+export const faDraftingCompass: IconDefinition;
+export const faDragon: IconDefinition;
+export const faDrawPolygon: IconDefinition;
+export const faDrum: IconDefinition;
+export const faDrumSteelpan: IconDefinition;
+export const faDrumstickBite: IconDefinition;
+export const faDumbbell: IconDefinition;
+export const faDumpster: IconDefinition;
+export const faDumpsterFire: IconDefinition;
+export const faDungeon: IconDefinition;
+export const faEdit: IconDefinition;
+export const faEgg: IconDefinition;
+export const faEject: IconDefinition;
+export const faEllipsisH: IconDefinition;
+export const faEllipsisV: IconDefinition;
+export const faEnvelope: IconDefinition;
+export const faEnvelopeOpen: IconDefinition;
+export const faEnvelopeOpenText: IconDefinition;
+export const faEnvelopeSquare: IconDefinition;
+export const faEquals: IconDefinition;
+export const faEraser: IconDefinition;
+export const faEthernet: IconDefinition;
+export const faEuroSign: IconDefinition;
+export const faExchangeAlt: IconDefinition;
+export const faExclamation: IconDefinition;
+export const faExclamationCircle: IconDefinition;
+export const faExclamationTriangle: IconDefinition;
+export const faExpand: IconDefinition;
+export const faExpandAlt: IconDefinition;
+export const faExpandArrowsAlt: IconDefinition;
+export const faExternalLinkAlt: IconDefinition;
+export const faExternalLinkSquareAlt: IconDefinition;
+export const faEye: IconDefinition;
+export const faEyeDropper: IconDefinition;
+export const faEyeSlash: IconDefinition;
+export const faFan: IconDefinition;
+export const faFastBackward: IconDefinition;
+export const faFastForward: IconDefinition;
+export const faFaucet: IconDefinition;
+export const faFax: IconDefinition;
+export const faFeather: IconDefinition;
+export const faFeatherAlt: IconDefinition;
+export const faFemale: IconDefinition;
+export const faFighterJet: IconDefinition;
+export const faFile: IconDefinition;
+export const faFileAlt: IconDefinition;
+export const faFileArchive: IconDefinition;
+export const faFileAudio: IconDefinition;
+export const faFileCode: IconDefinition;
+export const faFileContract: IconDefinition;
+export const faFileCsv: IconDefinition;
+export const faFileDownload: IconDefinition;
+export const faFileExcel: IconDefinition;
+export const faFileExport: IconDefinition;
+export const faFileImage: IconDefinition;
+export const faFileImport: IconDefinition;
+export const faFileInvoice: IconDefinition;
+export const faFileInvoiceDollar: IconDefinition;
+export const faFileMedical: IconDefinition;
+export const faFileMedicalAlt: IconDefinition;
+export const faFilePdf: IconDefinition;
+export const faFilePowerpoint: IconDefinition;
+export const faFilePrescription: IconDefinition;
+export const faFileSignature: IconDefinition;
+export const faFileUpload: IconDefinition;
+export const faFileVideo: IconDefinition;
+export const faFileWord: IconDefinition;
+export const faFill: IconDefinition;
+export const faFillDrip: IconDefinition;
+export const faFilm: IconDefinition;
+export const faFilter: IconDefinition;
+export const faFingerprint: IconDefinition;
+export const faFire: IconDefinition;
+export const faFireAlt: IconDefinition;
+export const faFireExtinguisher: IconDefinition;
+export const faFirstAid: IconDefinition;
+export const faFish: IconDefinition;
+export const faFistRaised: IconDefinition;
+export const faFlag: IconDefinition;
+export const faFlagCheckered: IconDefinition;
+export const faFlagUsa: IconDefinition;
+export const faFlask: IconDefinition;
+export const faFlushed: IconDefinition;
+export const faFolder: IconDefinition;
+export const faFolderMinus: IconDefinition;
+export const faFolderOpen: IconDefinition;
+export const faFolderPlus: IconDefinition;
+export const faFont: IconDefinition;
+export const faFontAwesomeLogoFull: IconDefinition;
+export const faFootballBall: IconDefinition;
+export const faForward: IconDefinition;
+export const faFrog: IconDefinition;
+export const faFrown: IconDefinition;
+export const faFrownOpen: IconDefinition;
+export const faFunnelDollar: IconDefinition;
+export const faFutbol: IconDefinition;
+export const faGamepad: IconDefinition;
+export const faGasPump: IconDefinition;
+export const faGavel: IconDefinition;
+export const faGem: IconDefinition;
+export const faGenderless: IconDefinition;
+export const faGhost: IconDefinition;
+export const faGift: IconDefinition;
+export const faGifts: IconDefinition;
+export const faGlassCheers: IconDefinition;
+export const faGlassMartini: IconDefinition;
+export const faGlassMartiniAlt: IconDefinition;
+export const faGlassWhiskey: IconDefinition;
+export const faGlasses: IconDefinition;
+export const faGlobe: IconDefinition;
+export const faGlobeAfrica: IconDefinition;
+export const faGlobeAmericas: IconDefinition;
+export const faGlobeAsia: IconDefinition;
+export const faGlobeEurope: IconDefinition;
+export const faGolfBall: IconDefinition;
+export const faGopuram: IconDefinition;
+export const faGraduationCap: IconDefinition;
+export const faGreaterThan: IconDefinition;
+export const faGreaterThanEqual: IconDefinition;
+export const faGrimace: IconDefinition;
+export const faGrin: IconDefinition;
+export const faGrinAlt: IconDefinition;
+export const faGrinBeam: IconDefinition;
+export const faGrinBeamSweat: IconDefinition;
+export const faGrinHearts: IconDefinition;
+export const faGrinSquint: IconDefinition;
+export const faGrinSquintTears: IconDefinition;
+export const faGrinStars: IconDefinition;
+export const faGrinTears: IconDefinition;
+export const faGrinTongue: IconDefinition;
+export const faGrinTongueSquint: IconDefinition;
+export const faGrinTongueWink: IconDefinition;
+export const faGrinWink: IconDefinition;
+export const faGripHorizontal: IconDefinition;
+export const faGripLines: IconDefinition;
+export const faGripLinesVertical: IconDefinition;
+export const faGripVertical: IconDefinition;
+export const faGuitar: IconDefinition;
+export const faHSquare: IconDefinition;
+export const faHamburger: IconDefinition;
+export const faHammer: IconDefinition;
+export const faHamsa: IconDefinition;
+export const faHandHolding: IconDefinition;
+export const faHandHoldingHeart: IconDefinition;
+export const faHandHoldingMedical: IconDefinition;
+export const faHandHoldingUsd: IconDefinition;
+export const faHandHoldingWater: IconDefinition;
+export const faHandLizard: IconDefinition;
+export const faHandMiddleFinger: IconDefinition;
+export const faHandPaper: IconDefinition;
+export const faHandPeace: IconDefinition;
+export const faHandPointDown: IconDefinition;
+export const faHandPointLeft: IconDefinition;
+export const faHandPointRight: IconDefinition;
+export const faHandPointUp: IconDefinition;
+export const faHandPointer: IconDefinition;
+export const faHandRock: IconDefinition;
+export const faHandScissors: IconDefinition;
+export const faHandSparkles: IconDefinition;
+export const faHandSpock: IconDefinition;
+export const faHands: IconDefinition;
+export const faHandsHelping: IconDefinition;
+export const faHandsWash: IconDefinition;
+export const faHandshake: IconDefinition;
+export const faHandshakeAltSlash: IconDefinition;
+export const faHandshakeSlash: IconDefinition;
+export const faHanukiah: IconDefinition;
+export const faHardHat: IconDefinition;
+export const faHashtag: IconDefinition;
+export const faHatCowboy: IconDefinition;
+export const faHatCowboySide: IconDefinition;
+export const faHatWizard: IconDefinition;
+export const faHdd: IconDefinition;
+export const faHeadSideCough: IconDefinition;
+export const faHeadSideCoughSlash: IconDefinition;
+export const faHeadSideMask: IconDefinition;
+export const faHeadSideVirus: IconDefinition;
+export const faHeading: IconDefinition;
+export const faHeadphones: IconDefinition;
+export const faHeadphonesAlt: IconDefinition;
+export const faHeadset: IconDefinition;
+export const faHeart: IconDefinition;
+export const faHeartBroken: IconDefinition;
+export const faHeartbeat: IconDefinition;
+export const faHelicopter: IconDefinition;
+export const faHighlighter: IconDefinition;
+export const faHiking: IconDefinition;
+export const faHippo: IconDefinition;
+export const faHistory: IconDefinition;
+export const faHockeyPuck: IconDefinition;
+export const faHollyBerry: IconDefinition;
+export const faHome: IconDefinition;
+export const faHorse: IconDefinition;
+export const faHorseHead: IconDefinition;
+export const faHospital: IconDefinition;
+export const faHospitalAlt: IconDefinition;
+export const faHospitalSymbol: IconDefinition;
+export const faHospitalUser: IconDefinition;
+export const faHotTub: IconDefinition;
+export const faHotdog: IconDefinition;
+export const faHotel: IconDefinition;
+export const faHourglass: IconDefinition;
+export const faHourglassEnd: IconDefinition;
+export const faHourglassHalf: IconDefinition;
+export const faHourglassStart: IconDefinition;
+export const faHouseDamage: IconDefinition;
+export const faHouseUser: IconDefinition;
+export const faHryvnia: IconDefinition;
+export const faICursor: IconDefinition;
+export const faIceCream: IconDefinition;
+export const faIcicles: IconDefinition;
+export const faIcons: IconDefinition;
+export const faIdBadge: IconDefinition;
+export const faIdCard: IconDefinition;
+export const faIdCardAlt: IconDefinition;
+export const faIgloo: IconDefinition;
+export const faImage: IconDefinition;
+export const faImages: IconDefinition;
+export const faInbox: IconDefinition;
+export const faIndent: IconDefinition;
+export const faIndustry: IconDefinition;
+export const faInfinity: IconDefinition;
+export const faInfo: IconDefinition;
+export const faInfoCircle: IconDefinition;
+export const faItalic: IconDefinition;
+export const faJedi: IconDefinition;
+export const faJoint: IconDefinition;
+export const faJournalWhills: IconDefinition;
+export const faKaaba: IconDefinition;
+export const faKey: IconDefinition;
+export const faKeyboard: IconDefinition;
+export const faKhanda: IconDefinition;
+export const faKiss: IconDefinition;
+export const faKissBeam: IconDefinition;
+export const faKissWinkHeart: IconDefinition;
+export const faKiwiBird: IconDefinition;
+export const faLandmark: IconDefinition;
+export const faLanguage: IconDefinition;
+export const faLaptop: IconDefinition;
+export const faLaptopCode: IconDefinition;
+export const faLaptopHouse: IconDefinition;
+export const faLaptopMedical: IconDefinition;
+export const faLaugh: IconDefinition;
+export const faLaughBeam: IconDefinition;
+export const faLaughSquint: IconDefinition;
+export const faLaughWink: IconDefinition;
+export const faLayerGroup: IconDefinition;
+export const faLeaf: IconDefinition;
+export const faLemon: IconDefinition;
+export const faLessThan: IconDefinition;
+export const faLessThanEqual: IconDefinition;
+export const faLevelDownAlt: IconDefinition;
+export const faLevelUpAlt: IconDefinition;
+export const faLifeRing: IconDefinition;
+export const faLightbulb: IconDefinition;
+export const faLink: IconDefinition;
+export const faLiraSign: IconDefinition;
+export const faList: IconDefinition;
+export const faListAlt: IconDefinition;
+export const faListOl: IconDefinition;
+export const faListUl: IconDefinition;
+export const faLocationArrow: IconDefinition;
+export const faLock: IconDefinition;
+export const faLockOpen: IconDefinition;
+export const faLongArrowAltDown: IconDefinition;
+export const faLongArrowAltLeft: IconDefinition;
+export const faLongArrowAltRight: IconDefinition;
+export const faLongArrowAltUp: IconDefinition;
+export const faLowVision: IconDefinition;
+export const faLuggageCart: IconDefinition;
+export const faLungs: IconDefinition;
+export const faLungsVirus: IconDefinition;
+export const faMagic: IconDefinition;
+export const faMagnet: IconDefinition;
+export const faMailBulk: IconDefinition;
+export const faMale: IconDefinition;
+export const faMap: IconDefinition;
+export const faMapMarked: IconDefinition;
+export const faMapMarkedAlt: IconDefinition;
+export const faMapMarker: IconDefinition;
+export const faMapMarkerAlt: IconDefinition;
+export const faMapPin: IconDefinition;
+export const faMapSigns: IconDefinition;
+export const faMarker: IconDefinition;
+export const faMars: IconDefinition;
+export const faMarsDouble: IconDefinition;
+export const faMarsStroke: IconDefinition;
+export const faMarsStrokeH: IconDefinition;
+export const faMarsStrokeV: IconDefinition;
+export const faMask: IconDefinition;
+export const faMedal: IconDefinition;
+export const faMedkit: IconDefinition;
+export const faMeh: IconDefinition;
+export const faMehBlank: IconDefinition;
+export const faMehRollingEyes: IconDefinition;
+export const faMemory: IconDefinition;
+export const faMenorah: IconDefinition;
+export const faMercury: IconDefinition;
+export const faMeteor: IconDefinition;
+export const faMicrochip: IconDefinition;
+export const faMicrophone: IconDefinition;
+export const faMicrophoneAlt: IconDefinition;
+export const faMicrophoneAltSlash: IconDefinition;
+export const faMicrophoneSlash: IconDefinition;
+export const faMicroscope: IconDefinition;
+export const faMinus: IconDefinition;
+export const faMinusCircle: IconDefinition;
+export const faMinusSquare: IconDefinition;
+export const faMitten: IconDefinition;
+export const faMobile: IconDefinition;
+export const faMobileAlt: IconDefinition;
+export const faMoneyBill: IconDefinition;
+export const faMoneyBillAlt: IconDefinition;
+export const faMoneyBillWave: IconDefinition;
+export const faMoneyBillWaveAlt: IconDefinition;
+export const faMoneyCheck: IconDefinition;
+export const faMoneyCheckAlt: IconDefinition;
+export const faMonument: IconDefinition;
+export const faMoon: IconDefinition;
+export const faMortarPestle: IconDefinition;
+export const faMosque: IconDefinition;
+export const faMotorcycle: IconDefinition;
+export const faMountain: IconDefinition;
+export const faMouse: IconDefinition;
+export const faMousePointer: IconDefinition;
+export const faMugHot: IconDefinition;
+export const faMusic: IconDefinition;
+export const faNetworkWired: IconDefinition;
+export const faNeuter: IconDefinition;
+export const faNewspaper: IconDefinition;
+export const faNotEqual: IconDefinition;
+export const faNotesMedical: IconDefinition;
+export const faObjectGroup: IconDefinition;
+export const faObjectUngroup: IconDefinition;
+export const faOilCan: IconDefinition;
+export const faOm: IconDefinition;
+export const faOtter: IconDefinition;
+export const faOutdent: IconDefinition;
+export const faPager: IconDefinition;
+export const faPaintBrush: IconDefinition;
+export const faPaintRoller: IconDefinition;
+export const faPalette: IconDefinition;
+export const faPallet: IconDefinition;
+export const faPaperPlane: IconDefinition;
+export const faPaperclip: IconDefinition;
+export const faParachuteBox: IconDefinition;
+export const faParagraph: IconDefinition;
+export const faParking: IconDefinition;
+export const faPassport: IconDefinition;
+export const faPastafarianism: IconDefinition;
+export const faPaste: IconDefinition;
+export const faPause: IconDefinition;
+export const faPauseCircle: IconDefinition;
+export const faPaw: IconDefinition;
+export const faPeace: IconDefinition;
+export const faPen: IconDefinition;
+export const faPenAlt: IconDefinition;
+export const faPenFancy: IconDefinition;
+export const faPenNib: IconDefinition;
+export const faPenSquare: IconDefinition;
+export const faPencilAlt: IconDefinition;
+export const faPencilRuler: IconDefinition;
+export const faPeopleArrows: IconDefinition;
+export const faPeopleCarry: IconDefinition;
+export const faPepperHot: IconDefinition;
+export const faPercent: IconDefinition;
+export const faPercentage: IconDefinition;
+export const faPersonBooth: IconDefinition;
+export const faPhone: IconDefinition;
+export const faPhoneAlt: IconDefinition;
+export const faPhoneSlash: IconDefinition;
+export const faPhoneSquare: IconDefinition;
+export const faPhoneSquareAlt: IconDefinition;
+export const faPhoneVolume: IconDefinition;
+export const faPhotoVideo: IconDefinition;
+export const faPiggyBank: IconDefinition;
+export const faPills: IconDefinition;
+export const faPizzaSlice: IconDefinition;
+export const faPlaceOfWorship: IconDefinition;
+export const faPlane: IconDefinition;
+export const faPlaneArrival: IconDefinition;
+export const faPlaneDeparture: IconDefinition;
+export const faPlaneSlash: IconDefinition;
+export const faPlay: IconDefinition;
+export const faPlayCircle: IconDefinition;
+export const faPlug: IconDefinition;
+export const faPlus: IconDefinition;
+export const faPlusCircle: IconDefinition;
+export const faPlusSquare: IconDefinition;
+export const faPodcast: IconDefinition;
+export const faPoll: IconDefinition;
+export const faPollH: IconDefinition;
+export const faPoo: IconDefinition;
+export const faPooStorm: IconDefinition;
+export const faPoop: IconDefinition;
+export const faPortrait: IconDefinition;
+export const faPoundSign: IconDefinition;
+export const faPowerOff: IconDefinition;
+export const faPray: IconDefinition;
+export const faPrayingHands: IconDefinition;
+export const faPrescription: IconDefinition;
+export const faPrescriptionBottle: IconDefinition;
+export const faPrescriptionBottleAlt: IconDefinition;
+export const faPrint: IconDefinition;
+export const faProcedures: IconDefinition;
+export const faProjectDiagram: IconDefinition;
+export const faPumpMedical: IconDefinition;
+export const faPumpSoap: IconDefinition;
+export const faPuzzlePiece: IconDefinition;
+export const faQrcode: IconDefinition;
+export const faQuestion: IconDefinition;
+export const faQuestionCircle: IconDefinition;
+export const faQuidditch: IconDefinition;
+export const faQuoteLeft: IconDefinition;
+export const faQuoteRight: IconDefinition;
+export const faQuran: IconDefinition;
+export const faRadiation: IconDefinition;
+export const faRadiationAlt: IconDefinition;
+export const faRainbow: IconDefinition;
+export const faRandom: IconDefinition;
+export const faReceipt: IconDefinition;
+export const faRecordVinyl: IconDefinition;
+export const faRecycle: IconDefinition;
+export const faRedo: IconDefinition;
+export const faRedoAlt: IconDefinition;
+export const faRegistered: IconDefinition;
+export const faRemoveFormat: IconDefinition;
+export const faReply: IconDefinition;
+export const faReplyAll: IconDefinition;
+export const faRepublican: IconDefinition;
+export const faRestroom: IconDefinition;
+export const faRetweet: IconDefinition;
+export const faRibbon: IconDefinition;
+export const faRing: IconDefinition;
+export const faRoad: IconDefinition;
+export const faRobot: IconDefinition;
+export const faRocket: IconDefinition;
+export const faRoute: IconDefinition;
+export const faRss: IconDefinition;
+export const faRssSquare: IconDefinition;
+export const faRubleSign: IconDefinition;
+export const faRuler: IconDefinition;
+export const faRulerCombined: IconDefinition;
+export const faRulerHorizontal: IconDefinition;
+export const faRulerVertical: IconDefinition;
+export const faRunning: IconDefinition;
+export const faRupeeSign: IconDefinition;
+export const faSadCry: IconDefinition;
+export const faSadTear: IconDefinition;
+export const faSatellite: IconDefinition;
+export const faSatelliteDish: IconDefinition;
+export const faSave: IconDefinition;
+export const faSchool: IconDefinition;
+export const faScrewdriver: IconDefinition;
+export const faScroll: IconDefinition;
+export const faSdCard: IconDefinition;
+export const faSearch: IconDefinition;
+export const faSearchDollar: IconDefinition;
+export const faSearchLocation: IconDefinition;
+export const faSearchMinus: IconDefinition;
+export const faSearchPlus: IconDefinition;
+export const faSeedling: IconDefinition;
+export const faServer: IconDefinition;
+export const faShapes: IconDefinition;
+export const faShare: IconDefinition;
+export const faShareAlt: IconDefinition;
+export const faShareAltSquare: IconDefinition;
+export const faShareSquare: IconDefinition;
+export const faShekelSign: IconDefinition;
+export const faShieldAlt: IconDefinition;
+export const faShieldVirus: IconDefinition;
+export const faShip: IconDefinition;
+export const faShippingFast: IconDefinition;
+export const faShoePrints: IconDefinition;
+export const faShoppingBag: IconDefinition;
+export const faShoppingBasket: IconDefinition;
+export const faShoppingCart: IconDefinition;
+export const faShower: IconDefinition;
+export const faShuttleVan: IconDefinition;
+export const faSign: IconDefinition;
+export const faSignInAlt: IconDefinition;
+export const faSignLanguage: IconDefinition;
+export const faSignOutAlt: IconDefinition;
+export const faSignal: IconDefinition;
+export const faSignature: IconDefinition;
+export const faSimCard: IconDefinition;
+export const faSink: IconDefinition;
+export const faSitemap: IconDefinition;
+export const faSkating: IconDefinition;
+export const faSkiing: IconDefinition;
+export const faSkiingNordic: IconDefinition;
+export const faSkull: IconDefinition;
+export const faSkullCrossbones: IconDefinition;
+export const faSlash: IconDefinition;
+export const faSleigh: IconDefinition;
+export const faSlidersH: IconDefinition;
+export const faSmile: IconDefinition;
+export const faSmileBeam: IconDefinition;
+export const faSmileWink: IconDefinition;
+export const faSmog: IconDefinition;
+export const faSmoking: IconDefinition;
+export const faSmokingBan: IconDefinition;
+export const faSms: IconDefinition;
+export const faSnowboarding: IconDefinition;
+export const faSnowflake: IconDefinition;
+export const faSnowman: IconDefinition;
+export const faSnowplow: IconDefinition;
+export const faSoap: IconDefinition;
+export const faSocks: IconDefinition;
+export const faSolarPanel: IconDefinition;
+export const faSort: IconDefinition;
+export const faSortAlphaDown: IconDefinition;
+export const faSortAlphaDownAlt: IconDefinition;
+export const faSortAlphaUp: IconDefinition;
+export const faSortAlphaUpAlt: IconDefinition;
+export const faSortAmountDown: IconDefinition;
+export const faSortAmountDownAlt: IconDefinition;
+export const faSortAmountUp: IconDefinition;
+export const faSortAmountUpAlt: IconDefinition;
+export const faSortDown: IconDefinition;
+export const faSortNumericDown: IconDefinition;
+export const faSortNumericDownAlt: IconDefinition;
+export const faSortNumericUp: IconDefinition;
+export const faSortNumericUpAlt: IconDefinition;
+export const faSortUp: IconDefinition;
+export const faSpa: IconDefinition;
+export const faSpaceShuttle: IconDefinition;
+export const faSpellCheck: IconDefinition;
+export const faSpider: IconDefinition;
+export const faSpinner: IconDefinition;
+export const faSplotch: IconDefinition;
+export const faSprayCan: IconDefinition;
+export const faSquare: IconDefinition;
+export const faSquareFull: IconDefinition;
+export const faSquareRootAlt: IconDefinition;
+export const faStamp: IconDefinition;
+export const faStar: IconDefinition;
+export const faStarAndCrescent: IconDefinition;
+export const faStarHalf: IconDefinition;
+export const faStarHalfAlt: IconDefinition;
+export const faStarOfDavid: IconDefinition;
+export const faStarOfLife: IconDefinition;
+export const faStepBackward: IconDefinition;
+export const faStepForward: IconDefinition;
+export const faStethoscope: IconDefinition;
+export const faStickyNote: IconDefinition;
+export const faStop: IconDefinition;
+export const faStopCircle: IconDefinition;
+export const faStopwatch: IconDefinition;
+export const faStopwatch20: IconDefinition;
+export const faStore: IconDefinition;
+export const faStoreAlt: IconDefinition;
+export const faStoreAltSlash: IconDefinition;
+export const faStoreSlash: IconDefinition;
+export const faStream: IconDefinition;
+export const faStreetView: IconDefinition;
+export const faStrikethrough: IconDefinition;
+export const faStroopwafel: IconDefinition;
+export const faSubscript: IconDefinition;
+export const faSubway: IconDefinition;
+export const faSuitcase: IconDefinition;
+export const faSuitcaseRolling: IconDefinition;
+export const faSun: IconDefinition;
+export const faSuperscript: IconDefinition;
+export const faSurprise: IconDefinition;
+export const faSwatchbook: IconDefinition;
+export const faSwimmer: IconDefinition;
+export const faSwimmingPool: IconDefinition;
+export const faSynagogue: IconDefinition;
+export const faSync: IconDefinition;
+export const faSyncAlt: IconDefinition;
+export const faSyringe: IconDefinition;
+export const faTable: IconDefinition;
+export const faTableTennis: IconDefinition;
+export const faTablet: IconDefinition;
+export const faTabletAlt: IconDefinition;
+export const faTablets: IconDefinition;
+export const faTachometerAlt: IconDefinition;
+export const faTag: IconDefinition;
+export const faTags: IconDefinition;
+export const faTape: IconDefinition;
+export const faTasks: IconDefinition;
+export const faTaxi: IconDefinition;
+export const faTeeth: IconDefinition;
+export const faTeethOpen: IconDefinition;
+export const faTemperatureHigh: IconDefinition;
+export const faTemperatureLow: IconDefinition;
+export const faTenge: IconDefinition;
+export const faTerminal: IconDefinition;
+export const faTextHeight: IconDefinition;
+export const faTextWidth: IconDefinition;
+export const faTh: IconDefinition;
+export const faThLarge: IconDefinition;
+export const faThList: IconDefinition;
+export const faTheaterMasks: IconDefinition;
+export const faThermometer: IconDefinition;
+export const faThermometerEmpty: IconDefinition;
+export const faThermometerFull: IconDefinition;
+export const faThermometerHalf: IconDefinition;
+export const faThermometerQuarter: IconDefinition;
+export const faThermometerThreeQuarters: IconDefinition;
+export const faThumbsDown: IconDefinition;
+export const faThumbsUp: IconDefinition;
+export const faThumbtack: IconDefinition;
+export const faTicketAlt: IconDefinition;
+export const faTimes: IconDefinition;
+export const faTimesCircle: IconDefinition;
+export const faTint: IconDefinition;
+export const faTintSlash: IconDefinition;
+export const faTired: IconDefinition;
+export const faToggleOff: IconDefinition;
+export const faToggleOn: IconDefinition;
+export const faToilet: IconDefinition;
+export const faToiletPaper: IconDefinition;
+export const faToiletPaperSlash: IconDefinition;
+export const faToolbox: IconDefinition;
+export const faTools: IconDefinition;
+export const faTooth: IconDefinition;
+export const faTorah: IconDefinition;
+export const faToriiGate: IconDefinition;
+export const faTractor: IconDefinition;
+export const faTrademark: IconDefinition;
+export const faTrafficLight: IconDefinition;
+export const faTrailer: IconDefinition;
+export const faTrain: IconDefinition;
+export const faTram: IconDefinition;
+export const faTransgender: IconDefinition;
+export const faTransgenderAlt: IconDefinition;
+export const faTrash: IconDefinition;
+export const faTrashAlt: IconDefinition;
+export const faTrashRestore: IconDefinition;
+export const faTrashRestoreAlt: IconDefinition;
+export const faTree: IconDefinition;
+export const faTrophy: IconDefinition;
+export const faTruck: IconDefinition;
+export const faTruckLoading: IconDefinition;
+export const faTruckMonster: IconDefinition;
+export const faTruckMoving: IconDefinition;
+export const faTruckPickup: IconDefinition;
+export const faTshirt: IconDefinition;
+export const faTty: IconDefinition;
+export const faTv: IconDefinition;
+export const faUmbrella: IconDefinition;
+export const faUmbrellaBeach: IconDefinition;
+export const faUnderline: IconDefinition;
+export const faUndo: IconDefinition;
+export const faUndoAlt: IconDefinition;
+export const faUniversalAccess: IconDefinition;
+export const faUniversity: IconDefinition;
+export const faUnlink: IconDefinition;
+export const faUnlock: IconDefinition;
+export const faUnlockAlt: IconDefinition;
+export const faUpload: IconDefinition;
+export const faUser: IconDefinition;
+export const faUserAlt: IconDefinition;
+export const faUserAltSlash: IconDefinition;
+export const faUserAstronaut: IconDefinition;
+export const faUserCheck: IconDefinition;
+export const faUserCircle: IconDefinition;
+export const faUserClock: IconDefinition;
+export const faUserCog: IconDefinition;
+export const faUserEdit: IconDefinition;
+export const faUserFriends: IconDefinition;
+export const faUserGraduate: IconDefinition;
+export const faUserInjured: IconDefinition;
+export const faUserLock: IconDefinition;
+export const faUserMd: IconDefinition;
+export const faUserMinus: IconDefinition;
+export const faUserNinja: IconDefinition;
+export const faUserNurse: IconDefinition;
+export const faUserPlus: IconDefinition;
+export const faUserSecret: IconDefinition;
+export const faUserShield: IconDefinition;
+export const faUserSlash: IconDefinition;
+export const faUserTag: IconDefinition;
+export const faUserTie: IconDefinition;
+export const faUserTimes: IconDefinition;
+export const faUsers: IconDefinition;
+export const faUsersCog: IconDefinition;
+export const faUsersSlash: IconDefinition;
+export const faUtensilSpoon: IconDefinition;
+export const faUtensils: IconDefinition;
+export const faVectorSquare: IconDefinition;
+export const faVenus: IconDefinition;
+export const faVenusDouble: IconDefinition;
+export const faVenusMars: IconDefinition;
+export const faVest: IconDefinition;
+export const faVestPatches: IconDefinition;
+export const faVial: IconDefinition;
+export const faVials: IconDefinition;
+export const faVideo: IconDefinition;
+export const faVideoSlash: IconDefinition;
+export const faVihara: IconDefinition;
+export const faVirus: IconDefinition;
+export const faVirusSlash: IconDefinition;
+export const faViruses: IconDefinition;
+export const faVoicemail: IconDefinition;
+export const faVolleyballBall: IconDefinition;
+export const faVolumeDown: IconDefinition;
+export const faVolumeMute: IconDefinition;
+export const faVolumeOff: IconDefinition;
+export const faVolumeUp: IconDefinition;
+export const faVoteYea: IconDefinition;
+export const faVrCardboard: IconDefinition;
+export const faWalking: IconDefinition;
+export const faWallet: IconDefinition;
+export const faWarehouse: IconDefinition;
+export const faWater: IconDefinition;
+export const faWaveSquare: IconDefinition;
+export const faWeight: IconDefinition;
+export const faWeightHanging: IconDefinition;
+export const faWheelchair: IconDefinition;
+export const faWifi: IconDefinition;
+export const faWind: IconDefinition;
+export const faWindowClose: IconDefinition;
+export const faWindowMaximize: IconDefinition;
+export const faWindowMinimize: IconDefinition;
+export const faWindowRestore: IconDefinition;
+export const faWineBottle: IconDefinition;
+export const faWineGlass: IconDefinition;
+export const faWineGlassAlt: IconDefinition;
+export const faWonSign: IconDefinition;
+export const faWrench: IconDefinition;
+export const faXRay: IconDefinition;
+export const faYenSign: IconDefinition;
+export const faYinYang: IconDefinition;
+import { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
+export { IconDefinition, IconLookup, IconName, IconPrefix, IconPack } from '@fortawesome/fontawesome-common-types';
+export const prefix: IconPrefix;
+export const fas: IconPack;
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.es.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.es.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.es.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6021 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+var prefix = "fas";
+var faAd = {
+  prefix: 'fas',
+  iconName: 'ad',
+  icon: [512, 512, [], "f641", "M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"]
+};
+var faAddressBook = {
+  prefix: 'fas',
+  iconName: 'address-book',
+  icon: [448, 512, [], "f2b9", "M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+};
+var faAddressCard = {
+  prefix: 'fas',
+  iconName: 'address-card',
+  icon: [576, 512, [], "f2bb", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]
+};
+var faAdjust = {
+  prefix: 'fas',
+  iconName: 'adjust',
+  icon: [512, 512, [], "f042", "M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"]
+};
+var faAirFreshener = {
+  prefix: 'fas',
+  iconName: 'air-freshener',
+  icon: [512, 512, [], "f5d0", "M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"]
+};
+var faAlignCenter = {
+  prefix: 'fas',
+  iconName: 'align-center',
+  icon: [448, 512, [], "f037", "M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"]
+};
+var faAlignJustify = {
+  prefix: 'fas',
+  iconName: 'align-justify',
+  icon: [448, 512, [], "f039", "M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faAlignLeft = {
+  prefix: 'fas',
+  iconName: 'align-left',
+  icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faAlignRight = {
+  prefix: 'fas',
+  iconName: 'align-right',
+  icon: [448, 512, [], "f038", "M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"]
+};
+var faAllergies = {
+  prefix: 'fas',
+  iconName: 'allergies',
+  icon: [448, 512, [], "f461", "M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+};
+var faAmbulance = {
+  prefix: 'fas',
+  iconName: 'ambulance',
+  icon: [640, 512, [], "f0f9", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+};
+var faAmericanSignLanguageInterpreting = {
+  prefix: 'fas',
+  iconName: 'american-sign-language-interpreting',
+  icon: [640, 512, [], "f2a3", "M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"]
+};
+var faAnchor = {
+  prefix: 'fas',
+  iconName: 'anchor',
+  icon: [576, 512, [], "f13d", "M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"]
+};
+var faAngleDoubleDown = {
+  prefix: 'fas',
+  iconName: 'angle-double-down',
+  icon: [320, 512, [], "f103", "M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"]
+};
+var faAngleDoubleLeft = {
+  prefix: 'fas',
+  iconName: 'angle-double-left',
+  icon: [448, 512, [], "f100", "M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]
+};
+var faAngleDoubleRight = {
+  prefix: 'fas',
+  iconName: 'angle-double-right',
+  icon: [448, 512, [], "f101", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]
+};
+var faAngleDoubleUp = {
+  prefix: 'fas',
+  iconName: 'angle-double-up',
+  icon: [320, 512, [], "f102", "M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"]
+};
+var faAngleDown = {
+  prefix: 'fas',
+  iconName: 'angle-down',
+  icon: [320, 512, [], "f107", "M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"]
+};
+var faAngleLeft = {
+  prefix: 'fas',
+  iconName: 'angle-left',
+  icon: [256, 512, [], "f104", "M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]
+};
+var faAngleRight = {
+  prefix: 'fas',
+  iconName: 'angle-right',
+  icon: [256, 512, [], "f105", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]
+};
+var faAngleUp = {
+  prefix: 'fas',
+  iconName: 'angle-up',
+  icon: [320, 512, [], "f106", "M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"]
+};
+var faAngry = {
+  prefix: 'fas',
+  iconName: 'angry',
+  icon: [496, 512, [], "f556", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"]
+};
+var faAnkh = {
+  prefix: 'fas',
+  iconName: 'ankh',
+  icon: [320, 512, [], "f644", "M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"]
+};
+var faAppleAlt = {
+  prefix: 'fas',
+  iconName: 'apple-alt',
+  icon: [448, 512, [], "f5d1", "M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"]
+};
+var faArchive = {
+  prefix: 'fas',
+  iconName: 'archive',
+  icon: [512, 512, [], "f187", "M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"]
+};
+var faArchway = {
+  prefix: 'fas',
+  iconName: 'archway',
+  icon: [576, 512, [], "f557", "M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]
+};
+var faArrowAltCircleDown = {
+  prefix: 'fas',
+  iconName: 'arrow-alt-circle-down',
+  icon: [512, 512, [], "f358", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"]
+};
+var faArrowAltCircleLeft = {
+  prefix: 'fas',
+  iconName: 'arrow-alt-circle-left',
+  icon: [512, 512, [], "f359", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"]
+};
+var faArrowAltCircleRight = {
+  prefix: 'fas',
+  iconName: 'arrow-alt-circle-right',
+  icon: [512, 512, [], "f35a", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"]
+};
+var faArrowAltCircleUp = {
+  prefix: 'fas',
+  iconName: 'arrow-alt-circle-up',
+  icon: [512, 512, [], "f35b", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"]
+};
+var faArrowCircleDown = {
+  prefix: 'fas',
+  iconName: 'arrow-circle-down',
+  icon: [512, 512, [], "f0ab", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"]
+};
+var faArrowCircleLeft = {
+  prefix: 'fas',
+  iconName: 'arrow-circle-left',
+  icon: [512, 512, [], "f0a8", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"]
+};
+var faArrowCircleRight = {
+  prefix: 'fas',
+  iconName: 'arrow-circle-right',
+  icon: [512, 512, [], "f0a9", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"]
+};
+var faArrowCircleUp = {
+  prefix: 'fas',
+  iconName: 'arrow-circle-up',
+  icon: [512, 512, [], "f0aa", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"]
+};
+var faArrowDown = {
+  prefix: 'fas',
+  iconName: 'arrow-down',
+  icon: [448, 512, [], "f063", "M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]
+};
+var faArrowLeft = {
+  prefix: 'fas',
+  iconName: 'arrow-left',
+  icon: [448, 512, [], "f060", "M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"]
+};
+var faArrowRight = {
+  prefix: 'fas',
+  iconName: 'arrow-right',
+  icon: [448, 512, [], "f061", "M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"]
+};
+var faArrowUp = {
+  prefix: 'fas',
+  iconName: 'arrow-up',
+  icon: [448, 512, [], "f062", "M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]
+};
+var faArrowsAlt = {
+  prefix: 'fas',
+  iconName: 'arrows-alt',
+  icon: [512, 512, [], "f0b2", "M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"]
+};
+var faArrowsAltH = {
+  prefix: 'fas',
+  iconName: 'arrows-alt-h',
+  icon: [512, 512, [], "f337", "M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"]
+};
+var faArrowsAltV = {
+  prefix: 'fas',
+  iconName: 'arrows-alt-v',
+  icon: [256, 512, [], "f338", "M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]
+};
+var faAssistiveListeningSystems = {
+  prefix: 'fas',
+  iconName: 'assistive-listening-systems',
+  icon: [512, 512, [], "f2a2", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"]
+};
+var faAsterisk = {
+  prefix: 'fas',
+  iconName: 'asterisk',
+  icon: [512, 512, [], "f069", "M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"]
+};
+var faAt = {
+  prefix: 'fas',
+  iconName: 'at',
+  icon: [512, 512, [], "f1fa", "M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"]
+};
+var faAtlas = {
+  prefix: 'fas',
+  iconName: 'atlas',
+  icon: [448, 512, [], "f558", "M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"]
+};
+var faAtom = {
+  prefix: 'fas',
+  iconName: 'atom',
+  icon: [448, 512, [], "f5d2", "M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"]
+};
+var faAudioDescription = {
+  prefix: 'fas',
+  iconName: 'audio-description',
+  icon: [512, 512, [], "f29e", "M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"]
+};
+var faAward = {
+  prefix: 'fas',
+  iconName: 'award',
+  icon: [384, 512, [], "f559", "M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"]
+};
+var faBaby = {
+  prefix: 'fas',
+  iconName: 'baby',
+  icon: [384, 512, [], "f77c", "M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"]
+};
+var faBabyCarriage = {
+  prefix: 'fas',
+  iconName: 'baby-carriage',
+  icon: [512, 512, [], "f77d", "M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"]
+};
+var faBackspace = {
+  prefix: 'fas',
+  iconName: 'backspace',
+  icon: [640, 512, [], "f55a", "M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"]
+};
+var faBackward = {
+  prefix: 'fas',
+  iconName: 'backward',
+  icon: [512, 512, [], "f04a", "M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"]
+};
+var faBacon = {
+  prefix: 'fas',
+  iconName: 'bacon',
+  icon: [576, 512, [], "f7e5", "M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"]
+};
+var faBacteria = {
+  prefix: 'fas',
+  iconName: 'bacteria',
+  icon: [640, 512, [], "e059", "M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"]
+};
+var faBacterium = {
+  prefix: 'fas',
+  iconName: 'bacterium',
+  icon: [512, 512, [], "e05a", "M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"]
+};
+var faBahai = {
+  prefix: 'fas',
+  iconName: 'bahai',
+  icon: [512, 512, [], "f666", "M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"]
+};
+var faBalanceScale = {
+  prefix: 'fas',
+  iconName: 'balance-scale',
+  icon: [640, 512, [], "f24e", "M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faBalanceScaleLeft = {
+  prefix: 'fas',
+  iconName: 'balance-scale-left',
+  icon: [640, 512, [], "f515", "M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"]
+};
+var faBalanceScaleRight = {
+  prefix: 'fas',
+  iconName: 'balance-scale-right',
+  icon: [640, 512, [], "f516", "M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"]
+};
+var faBan = {
+  prefix: 'fas',
+  iconName: 'ban',
+  icon: [512, 512, [], "f05e", "M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"]
+};
+var faBandAid = {
+  prefix: 'fas',
+  iconName: 'band-aid',
+  icon: [640, 512, [], "f462", "M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"]
+};
+var faBarcode = {
+  prefix: 'fas',
+  iconName: 'barcode',
+  icon: [512, 512, [], "f02a", "M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"]
+};
+var faBars = {
+  prefix: 'fas',
+  iconName: 'bars',
+  icon: [448, 512, [], "f0c9", "M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]
+};
+var faBaseballBall = {
+  prefix: 'fas',
+  iconName: 'baseball-ball',
+  icon: [496, 512, [], "f433", "M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"]
+};
+var faBasketballBall = {
+  prefix: 'fas',
+  iconName: 'basketball-ball',
+  icon: [496, 512, [], "f434", "M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"]
+};
+var faBath = {
+  prefix: 'fas',
+  iconName: 'bath',
+  icon: [512, 512, [], "f2cd", "M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"]
+};
+var faBatteryEmpty = {
+  prefix: 'fas',
+  iconName: 'battery-empty',
+  icon: [640, 512, [], "f244", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"]
+};
+var faBatteryFull = {
+  prefix: 'fas',
+  iconName: 'battery-full',
+  icon: [640, 512, [], "f240", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"]
+};
+var faBatteryHalf = {
+  prefix: 'fas',
+  iconName: 'battery-half',
+  icon: [640, 512, [], "f242", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"]
+};
+var faBatteryQuarter = {
+  prefix: 'fas',
+  iconName: 'battery-quarter',
+  icon: [640, 512, [], "f243", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"]
+};
+var faBatteryThreeQuarters = {
+  prefix: 'fas',
+  iconName: 'battery-three-quarters',
+  icon: [640, 512, [], "f241", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"]
+};
+var faBed = {
+  prefix: 'fas',
+  iconName: 'bed',
+  icon: [640, 512, [], "f236", "M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"]
+};
+var faBeer = {
+  prefix: 'fas',
+  iconName: 'beer',
+  icon: [448, 512, [], "f0fc", "M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"]
+};
+var faBell = {
+  prefix: 'fas',
+  iconName: 'bell',
+  icon: [448, 512, [], "f0f3", "M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]
+};
+var faBellSlash = {
+  prefix: 'fas',
+  iconName: 'bell-slash',
+  icon: [640, 512, [], "f1f6", "M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]
+};
+var faBezierCurve = {
+  prefix: 'fas',
+  iconName: 'bezier-curve',
+  icon: [640, 512, [], "f55b", "M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+};
+var faBible = {
+  prefix: 'fas',
+  iconName: 'bible',
+  icon: [448, 512, [], "f647", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]
+};
+var faBicycle = {
+  prefix: 'fas',
+  iconName: 'bicycle',
+  icon: [640, 512, [], "f206", "M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"]
+};
+var faBiking = {
+  prefix: 'fas',
+  iconName: 'biking',
+  icon: [640, 512, [], "f84a", "M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]
+};
+var faBinoculars = {
+  prefix: 'fas',
+  iconName: 'binoculars',
+  icon: [512, 512, [], "f1e5", "M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"]
+};
+var faBiohazard = {
+  prefix: 'fas',
+  iconName: 'biohazard',
+  icon: [576, 512, [], "f780", "M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+};
+var faBirthdayCake = {
+  prefix: 'fas',
+  iconName: 'birthday-cake',
+  icon: [448, 512, [], "f1fd", "M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"]
+};
+var faBlender = {
+  prefix: 'fas',
+  iconName: 'blender',
+  icon: [512, 512, [], "f517", "M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"]
+};
+var faBlenderPhone = {
+  prefix: 'fas',
+  iconName: 'blender-phone',
+  icon: [576, 512, [], "f6b6", "M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faBlind = {
+  prefix: 'fas',
+  iconName: 'blind',
+  icon: [384, 512, [], "f29d", "M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"]
+};
+var faBlog = {
+  prefix: 'fas',
+  iconName: 'blog',
+  icon: [512, 512, [], "f781", "M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"]
+};
+var faBold = {
+  prefix: 'fas',
+  iconName: 'bold',
+  icon: [384, 512, [], "f032", "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"]
+};
+var faBolt = {
+  prefix: 'fas',
+  iconName: 'bolt',
+  icon: [320, 512, [], "f0e7", "M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"]
+};
+var faBomb = {
+  prefix: 'fas',
+  iconName: 'bomb',
+  icon: [512, 512, [], "f1e2", "M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"]
+};
+var faBone = {
+  prefix: 'fas',
+  iconName: 'bone',
+  icon: [640, 512, [], "f5d7", "M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"]
+};
+var faBong = {
+  prefix: 'fas',
+  iconName: 'bong',
+  icon: [448, 512, [], "f55c", "M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"]
+};
+var faBook = {
+  prefix: 'fas',
+  iconName: 'book',
+  icon: [448, 512, [], "f02d", "M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]
+};
+var faBookDead = {
+  prefix: 'fas',
+  iconName: 'book-dead',
+  icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]
+};
+var faBookMedical = {
+  prefix: 'fas',
+  iconName: 'book-medical',
+  icon: [448, 512, [], "f7e6", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"]
+};
+var faBookOpen = {
+  prefix: 'fas',
+  iconName: 'book-open',
+  icon: [576, 512, [], "f518", "M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"]
+};
+var faBookReader = {
+  prefix: 'fas',
+  iconName: 'book-reader',
+  icon: [512, 512, [], "f5da", "M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"]
+};
+var faBookmark = {
+  prefix: 'fas',
+  iconName: 'bookmark',
+  icon: [384, 512, [], "f02e", "M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]
+};
+var faBorderAll = {
+  prefix: 'fas',
+  iconName: 'border-all',
+  icon: [448, 512, [], "f84c", "M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"]
+};
+var faBorderNone = {
+  prefix: 'fas',
+  iconName: 'border-none',
+  icon: [448, 512, [], "f850", "M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faBorderStyle = {
+  prefix: 'fas',
+  iconName: 'border-style',
+  icon: [448, 512, [], "f853", "M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faBowlingBall = {
+  prefix: 'fas',
+  iconName: 'bowling-ball',
+  icon: [496, 512, [], "f436", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faBox = {
+  prefix: 'fas',
+  iconName: 'box',
+  icon: [512, 512, [], "f466", "M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"]
+};
+var faBoxOpen = {
+  prefix: 'fas',
+  iconName: 'box-open',
+  icon: [640, 512, [], "f49e", "M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]
+};
+var faBoxTissue = {
+  prefix: 'fas',
+  iconName: 'box-tissue',
+  icon: [512, 512, [], "e05b", "M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"]
+};
+var faBoxes = {
+  prefix: 'fas',
+  iconName: 'boxes',
+  icon: [576, 512, [], "f468", "M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"]
+};
+var faBraille = {
+  prefix: 'fas',
+  iconName: 'braille',
+  icon: [640, 512, [], "f2a1", "M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]
+};
+var faBrain = {
+  prefix: 'fas',
+  iconName: 'brain',
+  icon: [576, 512, [], "f5dc", "M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"]
+};
+var faBreadSlice = {
+  prefix: 'fas',
+  iconName: 'bread-slice',
+  icon: [576, 512, [], "f7ec", "M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"]
+};
+var faBriefcase = {
+  prefix: 'fas',
+  iconName: 'briefcase',
+  icon: [512, 512, [], "f0b1", "M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"]
+};
+var faBriefcaseMedical = {
+  prefix: 'fas',
+  iconName: 'briefcase-medical',
+  icon: [512, 512, [], "f469", "M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"]
+};
+var faBroadcastTower = {
+  prefix: 'fas',
+  iconName: 'broadcast-tower',
+  icon: [640, 512, [], "f519", "M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"]
+};
+var faBroom = {
+  prefix: 'fas',
+  iconName: 'broom',
+  icon: [640, 512, [], "f51a", "M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"]
+};
+var faBrush = {
+  prefix: 'fas',
+  iconName: 'brush',
+  icon: [384, 512, [], "f55d", "M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"]
+};
+var faBug = {
+  prefix: 'fas',
+  iconName: 'bug',
+  icon: [512, 512, [], "f188", "M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"]
+};
+var faBuilding = {
+  prefix: 'fas',
+  iconName: 'building',
+  icon: [448, 512, [], "f1ad", "M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"]
+};
+var faBullhorn = {
+  prefix: 'fas',
+  iconName: 'bullhorn',
+  icon: [576, 512, [], "f0a1", "M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"]
+};
+var faBullseye = {
+  prefix: 'fas',
+  iconName: 'bullseye',
+  icon: [496, 512, [], "f140", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"]
+};
+var faBurn = {
+  prefix: 'fas',
+  iconName: 'burn',
+  icon: [384, 512, [], "f46a", "M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"]
+};
+var faBus = {
+  prefix: 'fas',
+  iconName: 'bus',
+  icon: [512, 512, [], "f207", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faBusAlt = {
+  prefix: 'fas',
+  iconName: 'bus-alt',
+  icon: [512, 512, [], "f55e", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faBusinessTime = {
+  prefix: 'fas',
+  iconName: 'business-time',
+  icon: [640, 512, [], "f64a", "M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"]
+};
+var faCalculator = {
+  prefix: 'fas',
+  iconName: 'calculator',
+  icon: [448, 512, [], "f1ec", "M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"]
+};
+var faCalendar = {
+  prefix: 'fas',
+  iconName: 'calendar',
+  icon: [448, 512, [], "f133", "M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"]
+};
+var faCalendarAlt = {
+  prefix: 'fas',
+  iconName: 'calendar-alt',
+  icon: [448, 512, [], "f073", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+};
+var faCalendarCheck = {
+  prefix: 'fas',
+  iconName: 'calendar-check',
+  icon: [448, 512, [], "f274", "M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"]
+};
+var faCalendarDay = {
+  prefix: 'fas',
+  iconName: 'calendar-day',
+  icon: [448, 512, [], "f783", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+};
+var faCalendarMinus = {
+  prefix: 'fas',
+  iconName: 'calendar-minus',
+  icon: [448, 512, [], "f272", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"]
+};
+var faCalendarPlus = {
+  prefix: 'fas',
+  iconName: 'calendar-plus',
+  icon: [448, 512, [], "f271", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"]
+};
+var faCalendarTimes = {
+  prefix: 'fas',
+  iconName: 'calendar-times',
+  icon: [448, 512, [], "f273", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"]
+};
+var faCalendarWeek = {
+  prefix: 'fas',
+  iconName: 'calendar-week',
+  icon: [448, 512, [], "f784", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+};
+var faCamera = {
+  prefix: 'fas',
+  iconName: 'camera',
+  icon: [512, 512, [], "f030", "M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"]
+};
+var faCameraRetro = {
+  prefix: 'fas',
+  iconName: 'camera-retro',
+  icon: [512, 512, [], "f083", "M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"]
+};
+var faCampground = {
+  prefix: 'fas',
+  iconName: 'campground',
+  icon: [640, 512, [], "f6bb", "M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"]
+};
+var faCandyCane = {
+  prefix: 'fas',
+  iconName: 'candy-cane',
+  icon: [512, 512, [], "f786", "M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"]
+};
+var faCannabis = {
+  prefix: 'fas',
+  iconName: 'cannabis',
+  icon: [512, 512, [], "f55f", "M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"]
+};
+var faCapsules = {
+  prefix: 'fas',
+  iconName: 'capsules',
+  icon: [576, 512, [], "f46b", "M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"]
+};
+var faCar = {
+  prefix: 'fas',
+  iconName: 'car',
+  icon: [512, 512, [], "f1b9", "M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]
+};
+var faCarAlt = {
+  prefix: 'fas',
+  iconName: 'car-alt',
+  icon: [480, 512, [], "f5de", "M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]
+};
+var faCarBattery = {
+  prefix: 'fas',
+  iconName: 'car-battery',
+  icon: [512, 512, [], "f5df", "M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"]
+};
+var faCarCrash = {
+  prefix: 'fas',
+  iconName: 'car-crash',
+  icon: [640, 512, [], "f5e1", "M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"]
+};
+var faCarSide = {
+  prefix: 'fas',
+  iconName: 'car-side',
+  icon: [640, 512, [], "f5e4", "M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]
+};
+var faCaravan = {
+  prefix: 'fas',
+  iconName: 'caravan',
+  icon: [640, 512, [], "f8ff", "M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"]
+};
+var faCaretDown = {
+  prefix: 'fas',
+  iconName: 'caret-down',
+  icon: [320, 512, [], "f0d7", "M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]
+};
+var faCaretLeft = {
+  prefix: 'fas',
+  iconName: 'caret-left',
+  icon: [192, 512, [], "f0d9", "M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"]
+};
+var faCaretRight = {
+  prefix: 'fas',
+  iconName: 'caret-right',
+  icon: [192, 512, [], "f0da", "M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"]
+};
+var faCaretSquareDown = {
+  prefix: 'fas',
+  iconName: 'caret-square-down',
+  icon: [448, 512, [], "f150", "M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"]
+};
+var faCaretSquareLeft = {
+  prefix: 'fas',
+  iconName: 'caret-square-left',
+  icon: [448, 512, [], "f191", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"]
+};
+var faCaretSquareRight = {
+  prefix: 'fas',
+  iconName: 'caret-square-right',
+  icon: [448, 512, [], "f152", "M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"]
+};
+var faCaretSquareUp = {
+  prefix: 'fas',
+  iconName: 'caret-square-up',
+  icon: [448, 512, [], "f151", "M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"]
+};
+var faCaretUp = {
+  prefix: 'fas',
+  iconName: 'caret-up',
+  icon: [320, 512, [], "f0d8", "M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]
+};
+var faCarrot = {
+  prefix: 'fas',
+  iconName: 'carrot',
+  icon: [512, 512, [], "f787", "M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"]
+};
+var faCartArrowDown = {
+  prefix: 'fas',
+  iconName: 'cart-arrow-down',
+  icon: [576, 512, [], "f218", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"]
+};
+var faCartPlus = {
+  prefix: 'fas',
+  iconName: 'cart-plus',
+  icon: [576, 512, [], "f217", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"]
+};
+var faCashRegister = {
+  prefix: 'fas',
+  iconName: 'cash-register',
+  icon: [512, 512, [], "f788", "M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"]
+};
+var faCat = {
+  prefix: 'fas',
+  iconName: 'cat',
+  icon: [512, 512, [], "f6be", "M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+};
+var faCertificate = {
+  prefix: 'fas',
+  iconName: 'certificate',
+  icon: [512, 512, [], "f0a3", "M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"]
+};
+var faChair = {
+  prefix: 'fas',
+  iconName: 'chair',
+  icon: [448, 512, [], "f6c0", "M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"]
+};
+var faChalkboard = {
+  prefix: 'fas',
+  iconName: 'chalkboard',
+  icon: [640, 512, [], "f51b", "M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faChalkboardTeacher = {
+  prefix: 'fas',
+  iconName: 'chalkboard-teacher',
+  icon: [640, 512, [], "f51c", "M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"]
+};
+var faChargingStation = {
+  prefix: 'fas',
+  iconName: 'charging-station',
+  icon: [576, 512, [], "f5e7", "M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"]
+};
+var faChartArea = {
+  prefix: 'fas',
+  iconName: 'chart-area',
+  icon: [512, 512, [], "f1fe", "M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"]
+};
+var faChartBar = {
+  prefix: 'fas',
+  iconName: 'chart-bar',
+  icon: [512, 512, [], "f080", "M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faChartLine = {
+  prefix: 'fas',
+  iconName: 'chart-line',
+  icon: [512, 512, [], "f201", "M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"]
+};
+var faChartPie = {
+  prefix: 'fas',
+  iconName: 'chart-pie',
+  icon: [544, 512, [], "f200", "M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"]
+};
+var faCheck = {
+  prefix: 'fas',
+  iconName: 'check',
+  icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]
+};
+var faCheckCircle = {
+  prefix: 'fas',
+  iconName: 'check-circle',
+  icon: [512, 512, [], "f058", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"]
+};
+var faCheckDouble = {
+  prefix: 'fas',
+  iconName: 'check-double',
+  icon: [512, 512, [], "f560", "M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"]
+};
+var faCheckSquare = {
+  prefix: 'fas',
+  iconName: 'check-square',
+  icon: [448, 512, [], "f14a", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"]
+};
+var faCheese = {
+  prefix: 'fas',
+  iconName: 'cheese',
+  icon: [512, 512, [], "f7ef", "M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"]
+};
+var faChess = {
+  prefix: 'fas',
+  iconName: 'chess',
+  icon: [512, 512, [], "f439", "M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"]
+};
+var faChessBishop = {
+  prefix: 'fas',
+  iconName: 'chess-bishop',
+  icon: [320, 512, [], "f43a", "M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faChessBoard = {
+  prefix: 'fas',
+  iconName: 'chess-board',
+  icon: [512, 512, [], "f43c", "M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"]
+};
+var faChessKing = {
+  prefix: 'fas',
+  iconName: 'chess-king',
+  icon: [448, 512, [], "f43f", "M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"]
+};
+var faChessKnight = {
+  prefix: 'fas',
+  iconName: 'chess-knight',
+  icon: [384, 512, [], "f441", "M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faChessPawn = {
+  prefix: 'fas',
+  iconName: 'chess-pawn',
+  icon: [320, 512, [], "f443", "M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faChessQueen = {
+  prefix: 'fas',
+  iconName: 'chess-queen',
+  icon: [512, 512, [], "f445", "M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"]
+};
+var faChessRook = {
+  prefix: 'fas',
+  iconName: 'chess-rook',
+  icon: [384, 512, [], "f447", "M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faChevronCircleDown = {
+  prefix: 'fas',
+  iconName: 'chevron-circle-down',
+  icon: [512, 512, [], "f13a", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"]
+};
+var faChevronCircleLeft = {
+  prefix: 'fas',
+  iconName: 'chevron-circle-left',
+  icon: [512, 512, [], "f137", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"]
+};
+var faChevronCircleRight = {
+  prefix: 'fas',
+  iconName: 'chevron-circle-right',
+  icon: [512, 512, [], "f138", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"]
+};
+var faChevronCircleUp = {
+  prefix: 'fas',
+  iconName: 'chevron-circle-up',
+  icon: [512, 512, [], "f139", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"]
+};
+var faChevronDown = {
+  prefix: 'fas',
+  iconName: 'chevron-down',
+  icon: [448, 512, [], "f078", "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]
+};
+var faChevronLeft = {
+  prefix: 'fas',
+  iconName: 'chevron-left',
+  icon: [320, 512, [], "f053", "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]
+};
+var faChevronRight = {
+  prefix: 'fas',
+  iconName: 'chevron-right',
+  icon: [320, 512, [], "f054", "M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]
+};
+var faChevronUp = {
+  prefix: 'fas',
+  iconName: 'chevron-up',
+  icon: [448, 512, [], "f077", "M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"]
+};
+var faChild = {
+  prefix: 'fas',
+  iconName: 'child',
+  icon: [384, 512, [], "f1ae", "M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"]
+};
+var faChurch = {
+  prefix: 'fas',
+  iconName: 'church',
+  icon: [640, 512, [], "f51d", "M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"]
+};
+var faCircle = {
+  prefix: 'fas',
+  iconName: 'circle',
+  icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]
+};
+var faCircleNotch = {
+  prefix: 'fas',
+  iconName: 'circle-notch',
+  icon: [512, 512, [], "f1ce", "M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"]
+};
+var faCity = {
+  prefix: 'fas',
+  iconName: 'city',
+  icon: [640, 512, [], "f64f", "M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"]
+};
+var faClinicMedical = {
+  prefix: 'fas',
+  iconName: 'clinic-medical',
+  icon: [576, 512, [], "f7f2", "M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"]
+};
+var faClipboard = {
+  prefix: 'fas',
+  iconName: 'clipboard',
+  icon: [384, 512, [], "f328", "M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"]
+};
+var faClipboardCheck = {
+  prefix: 'fas',
+  iconName: 'clipboard-check',
+  icon: [384, 512, [], "f46c", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"]
+};
+var faClipboardList = {
+  prefix: 'fas',
+  iconName: 'clipboard-list',
+  icon: [384, 512, [], "f46d", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]
+};
+var faClock = {
+  prefix: 'fas',
+  iconName: 'clock',
+  icon: [512, 512, [], "f017", "M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"]
+};
+var faClone = {
+  prefix: 'fas',
+  iconName: 'clone',
+  icon: [512, 512, [], "f24d", "M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]
+};
+var faClosedCaptioning = {
+  prefix: 'fas',
+  iconName: 'closed-captioning',
+  icon: [512, 512, [], "f20a", "M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"]
+};
+var faCloud = {
+  prefix: 'fas',
+  iconName: 'cloud',
+  icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]
+};
+var faCloudDownloadAlt = {
+  prefix: 'fas',
+  iconName: 'cloud-download-alt',
+  icon: [640, 512, [], "f381", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"]
+};
+var faCloudMeatball = {
+  prefix: 'fas',
+  iconName: 'cloud-meatball',
+  icon: [512, 512, [], "f73b", "M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"]
+};
+var faCloudMoon = {
+  prefix: 'fas',
+  iconName: 'cloud-moon',
+  icon: [576, 512, [], "f6c3", "M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"]
+};
+var faCloudMoonRain = {
+  prefix: 'fas',
+  iconName: 'cloud-moon-rain',
+  icon: [576, 512, [], "f73c", "M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]
+};
+var faCloudRain = {
+  prefix: 'fas',
+  iconName: 'cloud-rain',
+  icon: [512, 512, [], "f73d", "M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"]
+};
+var faCloudShowersHeavy = {
+  prefix: 'fas',
+  iconName: 'cloud-showers-heavy',
+  icon: [512, 512, [], "f740", "M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"]
+};
+var faCloudSun = {
+  prefix: 'fas',
+  iconName: 'cloud-sun',
+  icon: [640, 512, [], "f6c4", "M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"]
+};
+var faCloudSunRain = {
+  prefix: 'fas',
+  iconName: 'cloud-sun-rain',
+  icon: [576, 512, [], "f743", "M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]
+};
+var faCloudUploadAlt = {
+  prefix: 'fas',
+  iconName: 'cloud-upload-alt',
+  icon: [640, 512, [], "f382", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]
+};
+var faCocktail = {
+  prefix: 'fas',
+  iconName: 'cocktail',
+  icon: [576, 512, [], "f561", "M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"]
+};
+var faCode = {
+  prefix: 'fas',
+  iconName: 'code',
+  icon: [640, 512, [], "f121", "M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"]
+};
+var faCodeBranch = {
+  prefix: 'fas',
+  iconName: 'code-branch',
+  icon: [384, 512, [], "f126", "M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"]
+};
+var faCoffee = {
+  prefix: 'fas',
+  iconName: 'coffee',
+  icon: [640, 512, [], "f0f4", "M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"]
+};
+var faCog = {
+  prefix: 'fas',
+  iconName: 'cog',
+  icon: [512, 512, [], "f013", "M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faCogs = {
+  prefix: 'fas',
+  iconName: 'cogs',
+  icon: [640, 512, [], "f085", "M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]
+};
+var faCoins = {
+  prefix: 'fas',
+  iconName: 'coins',
+  icon: [512, 512, [], "f51e", "M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"]
+};
+var faColumns = {
+  prefix: 'fas',
+  iconName: 'columns',
+  icon: [512, 512, [], "f0db", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"]
+};
+var faComment = {
+  prefix: 'fas',
+  iconName: 'comment',
+  icon: [512, 512, [], "f075", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]
+};
+var faCommentAlt = {
+  prefix: 'fas',
+  iconName: 'comment-alt',
+  icon: [512, 512, [], "f27a", "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"]
+};
+var faCommentDollar = {
+  prefix: 'fas',
+  iconName: 'comment-dollar',
+  icon: [512, 512, [], "f651", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"]
+};
+var faCommentDots = {
+  prefix: 'fas',
+  iconName: 'comment-dots',
+  icon: [512, 512, [], "f4ad", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faCommentMedical = {
+  prefix: 'fas',
+  iconName: 'comment-medical',
+  icon: [512, 512, [], "f7f5", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"]
+};
+var faCommentSlash = {
+  prefix: 'fas',
+  iconName: 'comment-slash',
+  icon: [640, 512, [], "f4b3", "M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]
+};
+var faComments = {
+  prefix: 'fas',
+  iconName: 'comments',
+  icon: [576, 512, [], "f086", "M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"]
+};
+var faCommentsDollar = {
+  prefix: 'fas',
+  iconName: 'comments-dollar',
+  icon: [576, 512, [], "f653", "M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"]
+};
+var faCompactDisc = {
+  prefix: 'fas',
+  iconName: 'compact-disc',
+  icon: [496, 512, [], "f51f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]
+};
+var faCompass = {
+  prefix: 'fas',
+  iconName: 'compass',
+  icon: [496, 512, [], "f14e", "M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"]
+};
+var faCompress = {
+  prefix: 'fas',
+  iconName: 'compress',
+  icon: [448, 512, [], "f066", "M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]
+};
+var faCompressAlt = {
+  prefix: 'fas',
+  iconName: 'compress-alt',
+  icon: [448, 512, [], "f422", "M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"]
+};
+var faCompressArrowsAlt = {
+  prefix: 'fas',
+  iconName: 'compress-arrows-alt',
+  icon: [512, 512, [], "f78c", "M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"]
+};
+var faConciergeBell = {
+  prefix: 'fas',
+  iconName: 'concierge-bell',
+  icon: [512, 512, [], "f562", "M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faCookie = {
+  prefix: 'fas',
+  iconName: 'cookie',
+  icon: [512, 512, [], "f563", "M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faCookieBite = {
+  prefix: 'fas',
+  iconName: 'cookie-bite',
+  icon: [512, 512, [], "f564", "M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faCopy = {
+  prefix: 'fas',
+  iconName: 'copy',
+  icon: [448, 512, [], "f0c5", "M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]
+};
+var faCopyright = {
+  prefix: 'fas',
+  iconName: 'copyright',
+  icon: [512, 512, [], "f1f9", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"]
+};
+var faCouch = {
+  prefix: 'fas',
+  iconName: 'couch',
+  icon: [640, 512, [], "f4b8", "M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"]
+};
+var faCreditCard = {
+  prefix: 'fas',
+  iconName: 'credit-card',
+  icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]
+};
+var faCrop = {
+  prefix: 'fas',
+  iconName: 'crop',
+  icon: [512, 512, [], "f125", "M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+};
+var faCropAlt = {
+  prefix: 'fas',
+  iconName: 'crop-alt',
+  icon: [512, 512, [], "f565", "M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"]
+};
+var faCross = {
+  prefix: 'fas',
+  iconName: 'cross',
+  icon: [384, 512, [], "f654", "M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+};
+var faCrosshairs = {
+  prefix: 'fas',
+  iconName: 'crosshairs',
+  icon: [512, 512, [], "f05b", "M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"]
+};
+var faCrow = {
+  prefix: 'fas',
+  iconName: 'crow',
+  icon: [640, 512, [], "f520", "M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+};
+var faCrown = {
+  prefix: 'fas',
+  iconName: 'crown',
+  icon: [640, 512, [], "f521", "M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"]
+};
+var faCrutch = {
+  prefix: 'fas',
+  iconName: 'crutch',
+  icon: [512, 512, [], "f7f7", "M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"]
+};
+var faCube = {
+  prefix: 'fas',
+  iconName: 'cube',
+  icon: [512, 512, [], "f1b2", "M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"]
+};
+var faCubes = {
+  prefix: 'fas',
+  iconName: 'cubes',
+  icon: [512, 512, [], "f1b3", "M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"]
+};
+var faCut = {
+  prefix: 'fas',
+  iconName: 'cut',
+  icon: [448, 512, [], "f0c4", "M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]
+};
+var faDatabase = {
+  prefix: 'fas',
+  iconName: 'database',
+  icon: [448, 512, [], "f1c0", "M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"]
+};
+var faDeaf = {
+  prefix: 'fas',
+  iconName: 'deaf',
+  icon: [512, 512, [], "f2a4", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"]
+};
+var faDemocrat = {
+  prefix: 'fas',
+  iconName: 'democrat',
+  icon: [640, 512, [], "f747", "M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"]
+};
+var faDesktop = {
+  prefix: 'fas',
+  iconName: 'desktop',
+  icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]
+};
+var faDharmachakra = {
+  prefix: 'fas',
+  iconName: 'dharmachakra',
+  icon: [512, 512, [], "f655", "M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"]
+};
+var faDiagnoses = {
+  prefix: 'fas',
+  iconName: 'diagnoses',
+  icon: [640, 512, [], "f470", "M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+};
+var faDice = {
+  prefix: 'fas',
+  iconName: 'dice',
+  icon: [640, 512, [], "f522", "M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+};
+var faDiceD20 = {
+  prefix: 'fas',
+  iconName: 'dice-d20',
+  icon: [480, 512, [], "f6cf", "M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"]
+};
+var faDiceD6 = {
+  prefix: 'fas',
+  iconName: 'dice-d6',
+  icon: [448, 512, [], "f6d1", "M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"]
+};
+var faDiceFive = {
+  prefix: 'fas',
+  iconName: 'dice-five',
+  icon: [448, 512, [], "f523", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDiceFour = {
+  prefix: 'fas',
+  iconName: 'dice-four',
+  icon: [448, 512, [], "f524", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDiceOne = {
+  prefix: 'fas',
+  iconName: 'dice-one',
+  icon: [448, 512, [], "f525", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDiceSix = {
+  prefix: 'fas',
+  iconName: 'dice-six',
+  icon: [448, 512, [], "f526", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDiceThree = {
+  prefix: 'fas',
+  iconName: 'dice-three',
+  icon: [448, 512, [], "f527", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDiceTwo = {
+  prefix: 'fas',
+  iconName: 'dice-two',
+  icon: [448, 512, [], "f528", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faDigitalTachograph = {
+  prefix: 'fas',
+  iconName: 'digital-tachograph',
+  icon: [640, 512, [], "f566", "M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"]
+};
+var faDirections = {
+  prefix: 'fas',
+  iconName: 'directions',
+  icon: [512, 512, [], "f5eb", "M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"]
+};
+var faDisease = {
+  prefix: 'fas',
+  iconName: 'disease',
+  icon: [512, 512, [], "f7fa", "M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"]
+};
+var faDivide = {
+  prefix: 'fas',
+  iconName: 'divide',
+  icon: [448, 512, [], "f529", "M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+};
+var faDizzy = {
+  prefix: 'fas',
+  iconName: 'dizzy',
+  icon: [496, 512, [], "f567", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"]
+};
+var faDna = {
+  prefix: 'fas',
+  iconName: 'dna',
+  icon: [448, 512, [], "f471", "M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"]
+};
+var faDog = {
+  prefix: 'fas',
+  iconName: 'dog',
+  icon: [576, 512, [], "f6d3", "M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"]
+};
+var faDollarSign = {
+  prefix: 'fas',
+  iconName: 'dollar-sign',
+  icon: [288, 512, [], "f155", "M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"]
+};
+var faDolly = {
+  prefix: 'fas',
+  iconName: 'dolly',
+  icon: [576, 512, [], "f472", "M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+};
+var faDollyFlatbed = {
+  prefix: 'fas',
+  iconName: 'dolly-flatbed',
+  icon: [640, 512, [], "f474", "M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+};
+var faDonate = {
+  prefix: 'fas',
+  iconName: 'donate',
+  icon: [512, 512, [], "f4b9", "M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"]
+};
+var faDoorClosed = {
+  prefix: 'fas',
+  iconName: 'door-closed',
+  icon: [640, 512, [], "f52a", "M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"]
+};
+var faDoorOpen = {
+  prefix: 'fas',
+  iconName: 'door-open',
+  icon: [640, 512, [], "f52b", "M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"]
+};
+var faDotCircle = {
+  prefix: 'fas',
+  iconName: 'dot-circle',
+  icon: [512, 512, [], "f192", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"]
+};
+var faDove = {
+  prefix: 'fas',
+  iconName: 'dove',
+  icon: [512, 512, [], "f4ba", "M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+};
+var faDownload = {
+  prefix: 'fas',
+  iconName: 'download',
+  icon: [512, 512, [], "f019", "M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]
+};
+var faDraftingCompass = {
+  prefix: 'fas',
+  iconName: 'drafting-compass',
+  icon: [512, 512, [], "f568", "M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"]
+};
+var faDragon = {
+  prefix: 'fas',
+  iconName: 'dragon',
+  icon: [640, 512, [], "f6d5", "M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"]
+};
+var faDrawPolygon = {
+  prefix: 'fas',
+  iconName: 'draw-polygon',
+  icon: [448, 512, [], "f5ee", "M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"]
+};
+var faDrum = {
+  prefix: 'fas',
+  iconName: 'drum',
+  icon: [512, 512, [], "f569", "M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"]
+};
+var faDrumSteelpan = {
+  prefix: 'fas',
+  iconName: 'drum-steelpan',
+  icon: [576, 512, [], "f56a", "M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"]
+};
+var faDrumstickBite = {
+  prefix: 'fas',
+  iconName: 'drumstick-bite',
+  icon: [512, 512, [], "f6d7", "M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"]
+};
+var faDumbbell = {
+  prefix: 'fas',
+  iconName: 'dumbbell',
+  icon: [640, 512, [], "f44b", "M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"]
+};
+var faDumpster = {
+  prefix: 'fas',
+  iconName: 'dumpster',
+  icon: [576, 512, [], "f793", "M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+};
+var faDumpsterFire = {
+  prefix: 'fas',
+  iconName: 'dumpster-fire',
+  icon: [640, 512, [], "f794", "M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"]
+};
+var faDungeon = {
+  prefix: 'fas',
+  iconName: 'dungeon',
+  icon: [512, 512, [], "f6d9", "M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"]
+};
+var faEdit = {
+  prefix: 'fas',
+  iconName: 'edit',
+  icon: [576, 512, [], "f044", "M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]
+};
+var faEgg = {
+  prefix: 'fas',
+  iconName: 'egg',
+  icon: [384, 512, [], "f7fb", "M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"]
+};
+var faEject = {
+  prefix: 'fas',
+  iconName: 'eject',
+  icon: [448, 512, [], "f052", "M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"]
+};
+var faEllipsisH = {
+  prefix: 'fas',
+  iconName: 'ellipsis-h',
+  icon: [512, 512, [], "f141", "M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]
+};
+var faEllipsisV = {
+  prefix: 'fas',
+  iconName: 'ellipsis-v',
+  icon: [192, 512, [], "f142", "M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]
+};
+var faEnvelope = {
+  prefix: 'fas',
+  iconName: 'envelope',
+  icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]
+};
+var faEnvelopeOpen = {
+  prefix: 'fas',
+  iconName: 'envelope-open',
+  icon: [512, 512, [], "f2b6", "M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"]
+};
+var faEnvelopeOpenText = {
+  prefix: 'fas',
+  iconName: 'envelope-open-text',
+  icon: [512, 512, [], "f658", "M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]
+};
+var faEnvelopeSquare = {
+  prefix: 'fas',
+  iconName: 'envelope-square',
+  icon: [448, 512, [], "f199", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"]
+};
+var faEquals = {
+  prefix: 'fas',
+  iconName: 'equals',
+  icon: [448, 512, [], "f52c", "M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+};
+var faEraser = {
+  prefix: 'fas',
+  iconName: 'eraser',
+  icon: [512, 512, [], "f12d", "M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"]
+};
+var faEthernet = {
+  prefix: 'fas',
+  iconName: 'ethernet',
+  icon: [512, 512, [], "f796", "M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]
+};
+var faEuroSign = {
+  prefix: 'fas',
+  iconName: 'euro-sign',
+  icon: [320, 512, [], "f153", "M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"]
+};
+var faExchangeAlt = {
+  prefix: 'fas',
+  iconName: 'exchange-alt',
+  icon: [512, 512, [], "f362", "M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"]
+};
+var faExclamation = {
+  prefix: 'fas',
+  iconName: 'exclamation',
+  icon: [192, 512, [], "f12a", "M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"]
+};
+var faExclamationCircle = {
+  prefix: 'fas',
+  iconName: 'exclamation-circle',
+  icon: [512, 512, [], "f06a", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]
+};
+var faExclamationTriangle = {
+  prefix: 'fas',
+  iconName: 'exclamation-triangle',
+  icon: [576, 512, [], "f071", "M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]
+};
+var faExpand = {
+  prefix: 'fas',
+  iconName: 'expand',
+  icon: [448, 512, [], "f065", "M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"]
+};
+var faExpandAlt = {
+  prefix: 'fas',
+  iconName: 'expand-alt',
+  icon: [448, 512, [], "f424", "M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"]
+};
+var faExpandArrowsAlt = {
+  prefix: 'fas',
+  iconName: 'expand-arrows-alt',
+  icon: [448, 512, [], "f31e", "M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]
+};
+var faExternalLinkAlt = {
+  prefix: 'fas',
+  iconName: 'external-link-alt',
+  icon: [512, 512, [], "f35d", "M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"]
+};
+var faExternalLinkSquareAlt = {
+  prefix: 'fas',
+  iconName: 'external-link-square-alt',
+  icon: [448, 512, [], "f360", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"]
+};
+var faEye = {
+  prefix: 'fas',
+  iconName: 'eye',
+  icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]
+};
+var faEyeDropper = {
+  prefix: 'fas',
+  iconName: 'eye-dropper',
+  icon: [512, 512, [], "f1fb", "M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"]
+};
+var faEyeSlash = {
+  prefix: 'fas',
+  iconName: 'eye-slash',
+  icon: [640, 512, [], "f070", "M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]
+};
+var faFan = {
+  prefix: 'fas',
+  iconName: 'fan',
+  icon: [512, 512, [], "f863", "M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]
+};
+var faFastBackward = {
+  prefix: 'fas',
+  iconName: 'fast-backward',
+  icon: [512, 512, [], "f049", "M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"]
+};
+var faFastForward = {
+  prefix: 'fas',
+  iconName: 'fast-forward',
+  icon: [512, 512, [], "f050", "M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"]
+};
+var faFaucet = {
+  prefix: 'fas',
+  iconName: 'faucet',
+  icon: [512, 512, [], "e005", "M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"]
+};
+var faFax = {
+  prefix: 'fas',
+  iconName: 'fax',
+  icon: [512, 512, [], "f1ac", "M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"]
+};
+var faFeather = {
+  prefix: 'fas',
+  iconName: 'feather',
+  icon: [512, 512, [], "f52d", "M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"]
+};
+var faFeatherAlt = {
+  prefix: 'fas',
+  iconName: 'feather-alt',
+  icon: [512, 512, [], "f56b", "M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"]
+};
+var faFemale = {
+  prefix: 'fas',
+  iconName: 'female',
+  icon: [256, 512, [], "f182", "M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"]
+};
+var faFighterJet = {
+  prefix: 'fas',
+  iconName: 'fighter-jet',
+  icon: [640, 512, [], "f0fb", "M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"]
+};
+var faFile = {
+  prefix: 'fas',
+  iconName: 'file',
+  icon: [384, 512, [], "f15b", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFileAlt = {
+  prefix: 'fas',
+  iconName: 'file-alt',
+  icon: [384, 512, [], "f15c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFileArchive = {
+  prefix: 'fas',
+  iconName: 'file-archive',
+  icon: [384, 512, [], "f1c6", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"]
+};
+var faFileAudio = {
+  prefix: 'fas',
+  iconName: 'file-audio',
+  icon: [384, 512, [], "f1c7", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFileCode = {
+  prefix: 'fas',
+  iconName: 'file-code',
+  icon: [384, 512, [], "f1c9", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"]
+};
+var faFileContract = {
+  prefix: 'fas',
+  iconName: 'file-contract',
+  icon: [384, 512, [], "f56c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+};
+var faFileCsv = {
+  prefix: 'fas',
+  iconName: 'file-csv',
+  icon: [384, 512, [], "f6dd", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+};
+var faFileDownload = {
+  prefix: 'fas',
+  iconName: 'file-download',
+  icon: [384, 512, [], "f56d", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+};
+var faFileExcel = {
+  prefix: 'fas',
+  iconName: 'file-excel',
+  icon: [384, 512, [], "f1c3", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFileExport = {
+  prefix: 'fas',
+  iconName: 'file-export',
+  icon: [576, 512, [], "f56e", "M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"]
+};
+var faFileImage = {
+  prefix: 'fas',
+  iconName: 'file-image',
+  icon: [384, 512, [], "f1c5", "M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]
+};
+var faFileImport = {
+  prefix: 'fas',
+  iconName: 'file-import',
+  icon: [512, 512, [], "f56f", "M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"]
+};
+var faFileInvoice = {
+  prefix: 'fas',
+  iconName: 'file-invoice',
+  icon: [384, 512, [], "f570", "M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"]
+};
+var faFileInvoiceDollar = {
+  prefix: 'fas',
+  iconName: 'file-invoice-dollar',
+  icon: [384, 512, [], "f571", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"]
+};
+var faFileMedical = {
+  prefix: 'fas',
+  iconName: 'file-medical',
+  icon: [384, 512, [], "f477", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"]
+};
+var faFileMedicalAlt = {
+  prefix: 'fas',
+  iconName: 'file-medical-alt',
+  icon: [448, 512, [], "f478", "M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+};
+var faFilePdf = {
+  prefix: 'fas',
+  iconName: 'file-pdf',
+  icon: [384, 512, [], "f1c1", "M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"]
+};
+var faFilePowerpoint = {
+  prefix: 'fas',
+  iconName: 'file-powerpoint',
+  icon: [384, 512, [], "f1c4", "M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"]
+};
+var faFilePrescription = {
+  prefix: 'fas',
+  iconName: 'file-prescription',
+  icon: [384, 512, [], "f572", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFileSignature = {
+  prefix: 'fas',
+  iconName: 'file-signature',
+  icon: [576, 512, [], "f573", "M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"]
+};
+var faFileUpload = {
+  prefix: 'fas',
+  iconName: 'file-upload',
+  icon: [384, 512, [], "f574", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+};
+var faFileVideo = {
+  prefix: 'fas',
+  iconName: 'file-video',
+  icon: [384, 512, [], "f1c8", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]
+};
+var faFileWord = {
+  prefix: 'fas',
+  iconName: 'file-word',
+  icon: [384, 512, [], "f1c2", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+};
+var faFill = {
+  prefix: 'fas',
+  iconName: 'fill',
+  icon: [512, 512, [], "f575", "M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"]
+};
+var faFillDrip = {
+  prefix: 'fas',
+  iconName: 'fill-drip',
+  icon: [576, 512, [], "f576", "M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"]
+};
+var faFilm = {
+  prefix: 'fas',
+  iconName: 'film',
+  icon: [512, 512, [], "f008", "M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]
+};
+var faFilter = {
+  prefix: 'fas',
+  iconName: 'filter',
+  icon: [512, 512, [], "f0b0", "M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]
+};
+var faFingerprint = {
+  prefix: 'fas',
+  iconName: 'fingerprint',
+  icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]
+};
+var faFire = {
+  prefix: 'fas',
+  iconName: 'fire',
+  icon: [384, 512, [], "f06d", "M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"]
+};
+var faFireAlt = {
+  prefix: 'fas',
+  iconName: 'fire-alt',
+  icon: [448, 512, [], "f7e4", "M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"]
+};
+var faFireExtinguisher = {
+  prefix: 'fas',
+  iconName: 'fire-extinguisher',
+  icon: [448, 512, [], "f134", "M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"]
+};
+var faFirstAid = {
+  prefix: 'fas',
+  iconName: 'first-aid',
+  icon: [576, 512, [], "f479", "M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+};
+var faFish = {
+  prefix: 'fas',
+  iconName: 'fish',
+  icon: [576, 512, [], "f578", "M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]
+};
+var faFistRaised = {
+  prefix: 'fas',
+  iconName: 'fist-raised',
+  icon: [384, 512, [], "f6de", "M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"]
+};
+var faFlag = {
+  prefix: 'fas',
+  iconName: 'flag',
+  icon: [512, 512, [], "f024", "M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"]
+};
+var faFlagCheckered = {
+  prefix: 'fas',
+  iconName: 'flag-checkered',
+  icon: [512, 512, [], "f11e", "M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"]
+};
+var faFlagUsa = {
+  prefix: 'fas',
+  iconName: 'flag-usa',
+  icon: [512, 512, [], "f74d", "M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"]
+};
+var faFlask = {
+  prefix: 'fas',
+  iconName: 'flask',
+  icon: [448, 512, [], "f0c3", "M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"]
+};
+var faFlushed = {
+  prefix: 'fas',
+  iconName: 'flushed',
+  icon: [496, 512, [], "f579", "M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"]
+};
+var faFolder = {
+  prefix: 'fas',
+  iconName: 'folder',
+  icon: [512, 512, [], "f07b", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]
+};
+var faFolderMinus = {
+  prefix: 'fas',
+  iconName: 'folder-minus',
+  icon: [512, 512, [], "f65d", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"]
+};
+var faFolderOpen = {
+  prefix: 'fas',
+  iconName: 'folder-open',
+  icon: [576, 512, [], "f07c", "M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]
+};
+var faFolderPlus = {
+  prefix: 'fas',
+  iconName: 'folder-plus',
+  icon: [512, 512, [], "f65e", "M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]
+};
+var faFont = {
+  prefix: 'fas',
+  iconName: 'font',
+  icon: [448, 512, [], "f031", "M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"]
+};
+var faFontAwesomeLogoFull = {
+  prefix: 'fas',
+  iconName: 'font-awesome-logo-full',
+  icon: [3992, 512, ["Font Awesome"], "f4e6", "M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]
+};
+var faFootballBall = {
+  prefix: 'fas',
+  iconName: 'football-ball',
+  icon: [496, 512, [], "f44e", "M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"]
+};
+var faForward = {
+  prefix: 'fas',
+  iconName: 'forward',
+  icon: [512, 512, [], "f04e", "M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]
+};
+var faFrog = {
+  prefix: 'fas',
+  iconName: 'frog',
+  icon: [576, 512, [], "f52e", "M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]
+};
+var faFrown = {
+  prefix: 'fas',
+  iconName: 'frown',
+  icon: [496, 512, [], "f119", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"]
+};
+var faFrownOpen = {
+  prefix: 'fas',
+  iconName: 'frown-open',
+  icon: [496, 512, [], "f57a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faFunnelDollar = {
+  prefix: 'fas',
+  iconName: 'funnel-dollar',
+  icon: [640, 512, [], "f662", "M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"]
+};
+var faFutbol = {
+  prefix: 'fas',
+  iconName: 'futbol',
+  icon: [512, 512, [], "f1e3", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"]
+};
+var faGamepad = {
+  prefix: 'fas',
+  iconName: 'gamepad',
+  icon: [640, 512, [], "f11b", "M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"]
+};
+var faGasPump = {
+  prefix: 'fas',
+  iconName: 'gas-pump',
+  icon: [512, 512, [], "f52f", "M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"]
+};
+var faGavel = {
+  prefix: 'fas',
+  iconName: 'gavel',
+  icon: [512, 512, [], "f0e3", "M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"]
+};
+var faGem = {
+  prefix: 'fas',
+  iconName: 'gem',
+  icon: [576, 512, [], "f3a5", "M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"]
+};
+var faGenderless = {
+  prefix: 'fas',
+  iconName: 'genderless',
+  icon: [288, 512, [], "f22d", "M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"]
+};
+var faGhost = {
+  prefix: 'fas',
+  iconName: 'ghost',
+  icon: [384, 512, [], "f6e2", "M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faGift = {
+  prefix: 'fas',
+  iconName: 'gift',
+  icon: [512, 512, [], "f06b", "M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"]
+};
+var faGifts = {
+  prefix: 'fas',
+  iconName: 'gifts',
+  icon: [640, 512, [], "f79c", "M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"]
+};
+var faGlassCheers = {
+  prefix: 'fas',
+  iconName: 'glass-cheers',
+  icon: [640, 512, [], "f79f", "M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"]
+};
+var faGlassMartini = {
+  prefix: 'fas',
+  iconName: 'glass-martini',
+  icon: [512, 512, [], "f000", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"]
+};
+var faGlassMartiniAlt = {
+  prefix: 'fas',
+  iconName: 'glass-martini-alt',
+  icon: [512, 512, [], "f57b", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"]
+};
+var faGlassWhiskey = {
+  prefix: 'fas',
+  iconName: 'glass-whiskey',
+  icon: [512, 512, [], "f7a0", "M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"]
+};
+var faGlasses = {
+  prefix: 'fas',
+  iconName: 'glasses',
+  icon: [576, 512, [], "f530", "M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"]
+};
+var faGlobe = {
+  prefix: 'fas',
+  iconName: 'globe',
+  icon: [496, 512, [], "f0ac", "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"]
+};
+var faGlobeAfrica = {
+  prefix: 'fas',
+  iconName: 'globe-africa',
+  icon: [496, 512, [], "f57c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"]
+};
+var faGlobeAmericas = {
+  prefix: 'fas',
+  iconName: 'globe-americas',
+  icon: [496, 512, [], "f57d", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"]
+};
+var faGlobeAsia = {
+  prefix: 'fas',
+  iconName: 'globe-asia',
+  icon: [496, 512, [], "f57e", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"]
+};
+var faGlobeEurope = {
+  prefix: 'fas',
+  iconName: 'globe-europe',
+  icon: [496, 512, [], "f7a2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"]
+};
+var faGolfBall = {
+  prefix: 'fas',
+  iconName: 'golf-ball',
+  icon: [416, 512, [], "f450", "M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"]
+};
+var faGopuram = {
+  prefix: 'fas',
+  iconName: 'gopuram',
+  icon: [512, 512, [], "f664", "M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"]
+};
+var faGraduationCap = {
+  prefix: 'fas',
+  iconName: 'graduation-cap',
+  icon: [640, 512, [], "f19d", "M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"]
+};
+var faGreaterThan = {
+  prefix: 'fas',
+  iconName: 'greater-than',
+  icon: [384, 512, [], "f531", "M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"]
+};
+var faGreaterThanEqual = {
+  prefix: 'fas',
+  iconName: 'greater-than-equal',
+  icon: [448, 512, [], "f532", "M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+};
+var faGrimace = {
+  prefix: 'fas',
+  iconName: 'grimace',
+  icon: [496, 512, [], "f57f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"]
+};
+var faGrin = {
+  prefix: 'fas',
+  iconName: 'grin',
+  icon: [496, 512, [], "f580", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinAlt = {
+  prefix: 'fas',
+  iconName: 'grin-alt',
+  icon: [496, 512, [], "f581", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinBeam = {
+  prefix: 'fas',
+  iconName: 'grin-beam',
+  icon: [496, 512, [], "f582", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinBeamSweat = {
+  prefix: 'fas',
+  iconName: 'grin-beam-sweat',
+  icon: [504, 512, [], "f583", "M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinHearts = {
+  prefix: 'fas',
+  iconName: 'grin-hearts',
+  icon: [496, 512, [], "f584", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"]
+};
+var faGrinSquint = {
+  prefix: 'fas',
+  iconName: 'grin-squint',
+  icon: [496, 512, [], "f585", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinSquintTears = {
+  prefix: 'fas',
+  iconName: 'grin-squint-tears',
+  icon: [512, 512, [], "f586", "M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"]
+};
+var faGrinStars = {
+  prefix: 'fas',
+  iconName: 'grin-stars',
+  icon: [496, 512, [], "f587", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"]
+};
+var faGrinTears = {
+  prefix: 'fas',
+  iconName: 'grin-tears',
+  icon: [640, 512, [], "f588", "M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+};
+var faGrinTongue = {
+  prefix: 'fas',
+  iconName: 'grin-tongue',
+  icon: [496, 512, [], "f589", "M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]
+};
+var faGrinTongueSquint = {
+  prefix: 'fas',
+  iconName: 'grin-tongue-squint',
+  icon: [496, 512, [], "f58a", "M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"]
+};
+var faGrinTongueWink = {
+  prefix: 'fas',
+  iconName: 'grin-tongue-wink',
+  icon: [496, 512, [], "f58b", "M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]
+};
+var faGrinWink = {
+  prefix: 'fas',
+  iconName: 'grin-wink',
+  icon: [496, 512, [], "f58c", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"]
+};
+var faGripHorizontal = {
+  prefix: 'fas',
+  iconName: 'grip-horizontal',
+  icon: [448, 512, [], "f58d", "M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+};
+var faGripLines = {
+  prefix: 'fas',
+  iconName: 'grip-lines',
+  icon: [512, 512, [], "f7a4", "M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+};
+var faGripLinesVertical = {
+  prefix: 'fas',
+  iconName: 'grip-lines-vertical',
+  icon: [256, 512, [], "f7a5", "M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"]
+};
+var faGripVertical = {
+  prefix: 'fas',
+  iconName: 'grip-vertical',
+  icon: [320, 512, [], "f58e", "M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+};
+var faGuitar = {
+  prefix: 'fas',
+  iconName: 'guitar',
+  icon: [512, 512, [], "f7a6", "M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]
+};
+var faHSquare = {
+  prefix: 'fas',
+  iconName: 'h-square',
+  icon: [448, 512, [], "f0fd", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"]
+};
+var faHamburger = {
+  prefix: 'fas',
+  iconName: 'hamburger',
+  icon: [512, 512, [], "f805", "M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"]
+};
+var faHammer = {
+  prefix: 'fas',
+  iconName: 'hammer',
+  icon: [576, 512, [], "f6e3", "M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"]
+};
+var faHamsa = {
+  prefix: 'fas',
+  iconName: 'hamsa',
+  icon: [512, 512, [], "f665", "M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+};
+var faHandHolding = {
+  prefix: 'fas',
+  iconName: 'hand-holding',
+  icon: [576, 512, [], "f4bd", "M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+};
+var faHandHoldingHeart = {
+  prefix: 'fas',
+  iconName: 'hand-holding-heart',
+  icon: [576, 512, [], "f4be", "M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+};
+var faHandHoldingMedical = {
+  prefix: 'fas',
+  iconName: 'hand-holding-medical',
+  icon: [576, 512, [], "e05c", "M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"]
+};
+var faHandHoldingUsd = {
+  prefix: 'fas',
+  iconName: 'hand-holding-usd',
+  icon: [576, 512, [], "f4c0", "M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"]
+};
+var faHandHoldingWater = {
+  prefix: 'fas',
+  iconName: 'hand-holding-water',
+  icon: [576, 512, [], "f4c1", "M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+};
+var faHandLizard = {
+  prefix: 'fas',
+  iconName: 'hand-lizard',
+  icon: [576, 512, [], "f258", "M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"]
+};
+var faHandMiddleFinger = {
+  prefix: 'fas',
+  iconName: 'hand-middle-finger',
+  icon: [512, 512, [], "f806", "M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"]
+};
+var faHandPaper = {
+  prefix: 'fas',
+  iconName: 'hand-paper',
+  icon: [448, 512, [], "f256", "M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"]
+};
+var faHandPeace = {
+  prefix: 'fas',
+  iconName: 'hand-peace',
+  icon: [448, 512, [], "f25b", "M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"]
+};
+var faHandPointDown = {
+  prefix: 'fas',
+  iconName: 'hand-point-down',
+  icon: [384, 512, [], "f0a7", "M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]
+};
+var faHandPointLeft = {
+  prefix: 'fas',
+  iconName: 'hand-point-left',
+  icon: [512, 512, [], "f0a5", "M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"]
+};
+var faHandPointRight = {
+  prefix: 'fas',
+  iconName: 'hand-point-right',
+  icon: [512, 512, [], "f0a4", "M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]
+};
+var faHandPointUp = {
+  prefix: 'fas',
+  iconName: 'hand-point-up',
+  icon: [384, 512, [], "f0a6", "M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"]
+};
+var faHandPointer = {
+  prefix: 'fas',
+  iconName: 'hand-pointer',
+  icon: [448, 512, [], "f25a", "M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"]
+};
+var faHandRock = {
+  prefix: 'fas',
+  iconName: 'hand-rock',
+  icon: [512, 512, [], "f255", "M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"]
+};
+var faHandScissors = {
+  prefix: 'fas',
+  iconName: 'hand-scissors',
+  icon: [512, 512, [], "f257", "M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"]
+};
+var faHandSparkles = {
+  prefix: 'fas',
+  iconName: 'hand-sparkles',
+  icon: [640, 512, [], "e05d", "M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"]
+};
+var faHandSpock = {
+  prefix: 'fas',
+  iconName: 'hand-spock',
+  icon: [512, 512, [], "f259", "M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"]
+};
+var faHands = {
+  prefix: 'fas',
+  iconName: 'hands',
+  icon: [640, 512, [], "f4c2", "M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"]
+};
+var faHandsHelping = {
+  prefix: 'fas',
+  iconName: 'hands-helping',
+  icon: [640, 512, [], "f4c4", "M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"]
+};
+var faHandsWash = {
+  prefix: 'fas',
+  iconName: 'hands-wash',
+  icon: [576, 512, [], "e05e", "M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"]
+};
+var faHandshake = {
+  prefix: 'fas',
+  iconName: 'handshake',
+  icon: [640, 512, [], "f2b5", "M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"]
+};
+var faHandshakeAltSlash = {
+  prefix: 'fas',
+  iconName: 'handshake-alt-slash',
+  icon: [640, 512, [], "e05f", "M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"]
+};
+var faHandshakeSlash = {
+  prefix: 'fas',
+  iconName: 'handshake-slash',
+  icon: [640, 512, [], "e060", "M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"]
+};
+var faHanukiah = {
+  prefix: 'fas',
+  iconName: 'hanukiah',
+  icon: [640, 512, [], "f6e6", "M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"]
+};
+var faHardHat = {
+  prefix: 'fas',
+  iconName: 'hard-hat',
+  icon: [512, 512, [], "f807", "M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faHashtag = {
+  prefix: 'fas',
+  iconName: 'hashtag',
+  icon: [448, 512, [], "f292", "M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"]
+};
+var faHatCowboy = {
+  prefix: 'fas',
+  iconName: 'hat-cowboy',
+  icon: [640, 512, [], "f8c0", "M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"]
+};
+var faHatCowboySide = {
+  prefix: 'fas',
+  iconName: 'hat-cowboy-side',
+  icon: [640, 512, [], "f8c1", "M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"]
+};
+var faHatWizard = {
+  prefix: 'fas',
+  iconName: 'hat-wizard',
+  icon: [512, 512, [], "f6e8", "M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"]
+};
+var faHdd = {
+  prefix: 'fas',
+  iconName: 'hdd',
+  icon: [576, 512, [], "f0a0", "M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]
+};
+var faHeadSideCough = {
+  prefix: 'fas',
+  iconName: 'head-side-cough',
+  icon: [640, 512, [], "e061", "M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"]
+};
+var faHeadSideCoughSlash = {
+  prefix: 'fas',
+  iconName: 'head-side-cough-slash',
+  icon: [640, 512, [], "e062", "M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"]
+};
+var faHeadSideMask = {
+  prefix: 'fas',
+  iconName: 'head-side-mask',
+  icon: [512, 512, [], "e063", "M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"]
+};
+var faHeadSideVirus = {
+  prefix: 'fas',
+  iconName: 'head-side-virus',
+  icon: [512, 512, [], "e064", "M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"]
+};
+var faHeading = {
+  prefix: 'fas',
+  iconName: 'heading',
+  icon: [512, 512, [], "f1dc", "M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"]
+};
+var faHeadphones = {
+  prefix: 'fas',
+  iconName: 'headphones',
+  icon: [512, 512, [], "f025", "M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"]
+};
+var faHeadphonesAlt = {
+  prefix: 'fas',
+  iconName: 'headphones-alt',
+  icon: [512, 512, [], "f58f", "M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"]
+};
+var faHeadset = {
+  prefix: 'fas',
+  iconName: 'headset',
+  icon: [512, 512, [], "f590", "M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"]
+};
+var faHeart = {
+  prefix: 'fas',
+  iconName: 'heart',
+  icon: [512, 512, [], "f004", "M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"]
+};
+var faHeartBroken = {
+  prefix: 'fas',
+  iconName: 'heart-broken',
+  icon: [512, 512, [], "f7a9", "M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"]
+};
+var faHeartbeat = {
+  prefix: 'fas',
+  iconName: 'heartbeat',
+  icon: [512, 512, [], "f21e", "M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"]
+};
+var faHelicopter = {
+  prefix: 'fas',
+  iconName: 'helicopter',
+  icon: [640, 512, [], "f533", "M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"]
+};
+var faHighlighter = {
+  prefix: 'fas',
+  iconName: 'highlighter',
+  icon: [544, 512, [], "f591", "M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"]
+};
+var faHiking = {
+  prefix: 'fas',
+  iconName: 'hiking',
+  icon: [384, 512, [], "f6ec", "M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"]
+};
+var faHippo = {
+  prefix: 'fas',
+  iconName: 'hippo',
+  icon: [640, 512, [], "f6ed", "M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+};
+var faHistory = {
+  prefix: 'fas',
+  iconName: 'history',
+  icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]
+};
+var faHockeyPuck = {
+  prefix: 'fas',
+  iconName: 'hockey-puck',
+  icon: [512, 512, [], "f453", "M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"]
+};
+var faHollyBerry = {
+  prefix: 'fas',
+  iconName: 'holly-berry',
+  icon: [448, 512, [], "f7aa", "M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"]
+};
+var faHome = {
+  prefix: 'fas',
+  iconName: 'home',
+  icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]
+};
+var faHorse = {
+  prefix: 'fas',
+  iconName: 'horse',
+  icon: [576, 512, [], "f6f0", "M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+};
+var faHorseHead = {
+  prefix: 'fas',
+  iconName: 'horse-head',
+  icon: [512, 512, [], "f7ab", "M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"]
+};
+var faHospital = {
+  prefix: 'fas',
+  iconName: 'hospital',
+  icon: [448, 512, [], "f0f8", "M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"]
+};
+var faHospitalAlt = {
+  prefix: 'fas',
+  iconName: 'hospital-alt',
+  icon: [576, 512, [], "f47d", "M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]
+};
+var faHospitalSymbol = {
+  prefix: 'fas',
+  iconName: 'hospital-symbol',
+  icon: [512, 512, [], "f47e", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"]
+};
+var faHospitalUser = {
+  prefix: 'fas',
+  iconName: 'hospital-user',
+  icon: [640, 512, [], "f80d", "M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"]
+};
+var faHotTub = {
+  prefix: 'fas',
+  iconName: 'hot-tub',
+  icon: [512, 512, [], "f593", "M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"]
+};
+var faHotdog = {
+  prefix: 'fas',
+  iconName: 'hotdog',
+  icon: [512, 512, [], "f80f", "M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"]
+};
+var faHotel = {
+  prefix: 'fas',
+  iconName: 'hotel',
+  icon: [576, 512, [], "f594", "M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]
+};
+var faHourglass = {
+  prefix: 'fas',
+  iconName: 'hourglass',
+  icon: [384, 512, [], "f254", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"]
+};
+var faHourglassEnd = {
+  prefix: 'fas',
+  iconName: 'hourglass-end',
+  icon: [384, 512, [], "f253", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"]
+};
+var faHourglassHalf = {
+  prefix: 'fas',
+  iconName: 'hourglass-half',
+  icon: [384, 512, [], "f252", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"]
+};
+var faHourglassStart = {
+  prefix: 'fas',
+  iconName: 'hourglass-start',
+  icon: [384, 512, [], "f251", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"]
+};
+var faHouseDamage = {
+  prefix: 'fas',
+  iconName: 'house-damage',
+  icon: [576, 512, [], "f6f1", "M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"]
+};
+var faHouseUser = {
+  prefix: 'fas',
+  iconName: 'house-user',
+  icon: [576, 512, [], "e065", "M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"]
+};
+var faHryvnia = {
+  prefix: 'fas',
+  iconName: 'hryvnia',
+  icon: [384, 512, [], "f6f2", "M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"]
+};
+var faICursor = {
+  prefix: 'fas',
+  iconName: 'i-cursor',
+  icon: [256, 512, [], "f246", "M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"]
+};
+var faIceCream = {
+  prefix: 'fas',
+  iconName: 'ice-cream',
+  icon: [448, 512, [], "f810", "M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"]
+};
+var faIcicles = {
+  prefix: 'fas',
+  iconName: 'icicles',
+  icon: [512, 512, [], "f7ad", "M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"]
+};
+var faIcons = {
+  prefix: 'fas',
+  iconName: 'icons',
+  icon: [512, 512, [], "f86d", "M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"]
+};
+var faIdBadge = {
+  prefix: 'fas',
+  iconName: 'id-badge',
+  icon: [384, 512, [], "f2c1", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+};
+var faIdCard = {
+  prefix: 'fas',
+  iconName: 'id-card',
+  icon: [576, 512, [], "f2c2", "M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"]
+};
+var faIdCardAlt = {
+  prefix: 'fas',
+  iconName: 'id-card-alt',
+  icon: [576, 512, [], "f47f", "M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"]
+};
+var faIgloo = {
+  prefix: 'fas',
+  iconName: 'igloo',
+  icon: [576, 512, [], "f7ae", "M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"]
+};
+var faImage = {
+  prefix: 'fas',
+  iconName: 'image',
+  icon: [512, 512, [], "f03e", "M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]
+};
+var faImages = {
+  prefix: 'fas',
+  iconName: 'images',
+  icon: [576, 512, [], "f302", "M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"]
+};
+var faInbox = {
+  prefix: 'fas',
+  iconName: 'inbox',
+  icon: [576, 512, [], "f01c", "M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"]
+};
+var faIndent = {
+  prefix: 'fas',
+  iconName: 'indent',
+  icon: [448, 512, [], "f03c", "M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faIndustry = {
+  prefix: 'fas',
+  iconName: 'industry',
+  icon: [512, 512, [], "f275", "M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"]
+};
+var faInfinity = {
+  prefix: 'fas',
+  iconName: 'infinity',
+  icon: [640, 512, [], "f534", "M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]
+};
+var faInfo = {
+  prefix: 'fas',
+  iconName: 'info',
+  icon: [192, 512, [], "f129", "M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]
+};
+var faInfoCircle = {
+  prefix: 'fas',
+  iconName: 'info-circle',
+  icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]
+};
+var faItalic = {
+  prefix: 'fas',
+  iconName: 'italic',
+  icon: [320, 512, [], "f033", "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]
+};
+var faJedi = {
+  prefix: 'fas',
+  iconName: 'jedi',
+  icon: [576, 512, [], "f669", "M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"]
+};
+var faJoint = {
+  prefix: 'fas',
+  iconName: 'joint',
+  icon: [640, 512, [], "f595", "M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"]
+};
+var faJournalWhills = {
+  prefix: 'fas',
+  iconName: 'journal-whills',
+  icon: [448, 512, [], "f66a", "M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"]
+};
+var faKaaba = {
+  prefix: 'fas',
+  iconName: 'kaaba',
+  icon: [576, 512, [], "f66b", "M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"]
+};
+var faKey = {
+  prefix: 'fas',
+  iconName: 'key',
+  icon: [512, 512, [], "f084", "M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]
+};
+var faKeyboard = {
+  prefix: 'fas',
+  iconName: 'keyboard',
+  icon: [576, 512, [], "f11c", "M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]
+};
+var faKhanda = {
+  prefix: 'fas',
+  iconName: 'khanda',
+  icon: [512, 512, [], "f66d", "M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"]
+};
+var faKiss = {
+  prefix: 'fas',
+  iconName: 'kiss',
+  icon: [496, 512, [], "f596", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faKissBeam = {
+  prefix: 'fas',
+  iconName: 'kiss-beam',
+  icon: [496, 512, [], "f597", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"]
+};
+var faKissWinkHeart = {
+  prefix: 'fas',
+  iconName: 'kiss-wink-heart',
+  icon: [504, 512, [], "f598", "M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"]
+};
+var faKiwiBird = {
+  prefix: 'fas',
+  iconName: 'kiwi-bird',
+  icon: [576, 512, [], "f535", "M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"]
+};
+var faLandmark = {
+  prefix: 'fas',
+  iconName: 'landmark',
+  icon: [512, 512, [], "f66f", "M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faLanguage = {
+  prefix: 'fas',
+  iconName: 'language',
+  icon: [640, 512, [], "f1ab", "M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"]
+};
+var faLaptop = {
+  prefix: 'fas',
+  iconName: 'laptop',
+  icon: [640, 512, [], "f109", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]
+};
+var faLaptopCode = {
+  prefix: 'fas',
+  iconName: 'laptop-code',
+  icon: [640, 512, [], "f5fc", "M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]
+};
+var faLaptopHouse = {
+  prefix: 'fas',
+  iconName: 'laptop-house',
+  icon: [640, 512, [], "e066", "M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]
+};
+var faLaptopMedical = {
+  prefix: 'fas',
+  iconName: 'laptop-medical',
+  icon: [640, 512, [], "f812", "M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]
+};
+var faLaugh = {
+  prefix: 'fas',
+  iconName: 'laugh',
+  icon: [496, 512, [], "f599", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"]
+};
+var faLaughBeam = {
+  prefix: 'fas',
+  iconName: 'laugh-beam',
+  icon: [496, 512, [], "f59a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+};
+var faLaughSquint = {
+  prefix: 'fas',
+  iconName: 'laugh-squint',
+  icon: [496, 512, [], "f59b", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+};
+var faLaughWink = {
+  prefix: 'fas',
+  iconName: 'laugh-wink',
+  icon: [496, 512, [], "f59c", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+};
+var faLayerGroup = {
+  prefix: 'fas',
+  iconName: 'layer-group',
+  icon: [512, 512, [], "f5fd", "M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"]
+};
+var faLeaf = {
+  prefix: 'fas',
+  iconName: 'leaf',
+  icon: [576, 512, [], "f06c", "M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"]
+};
+var faLemon = {
+  prefix: 'fas',
+  iconName: 'lemon',
+  icon: [512, 512, [], "f094", "M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"]
+};
+var faLessThan = {
+  prefix: 'fas',
+  iconName: 'less-than',
+  icon: [384, 512, [], "f536", "M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"]
+};
+var faLessThanEqual = {
+  prefix: 'fas',
+  iconName: 'less-than-equal',
+  icon: [448, 512, [], "f537", "M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+};
+var faLevelDownAlt = {
+  prefix: 'fas',
+  iconName: 'level-down-alt',
+  icon: [320, 512, [], "f3be", "M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"]
+};
+var faLevelUpAlt = {
+  prefix: 'fas',
+  iconName: 'level-up-alt',
+  icon: [320, 512, [], "f3bf", "M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"]
+};
+var faLifeRing = {
+  prefix: 'fas',
+  iconName: 'life-ring',
+  icon: [512, 512, [], "f1cd", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"]
+};
+var faLightbulb = {
+  prefix: 'fas',
+  iconName: 'lightbulb',
+  icon: [352, 512, [], "f0eb", "M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]
+};
+var faLink = {
+  prefix: 'fas',
+  iconName: 'link',
+  icon: [512, 512, [], "f0c1", "M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]
+};
+var faLiraSign = {
+  prefix: 'fas',
+  iconName: 'lira-sign',
+  icon: [384, 512, [], "f195", "M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"]
+};
+var faList = {
+  prefix: 'fas',
+  iconName: 'list',
+  icon: [512, 512, [], "f03a", "M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faListAlt = {
+  prefix: 'fas',
+  iconName: 'list-alt',
+  icon: [512, 512, [], "f022", "M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"]
+};
+var faListOl = {
+  prefix: 'fas',
+  iconName: 'list-ol',
+  icon: [512, 512, [], "f0cb", "M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"]
+};
+var faListUl = {
+  prefix: 'fas',
+  iconName: 'list-ul',
+  icon: [512, 512, [], "f0ca", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faLocationArrow = {
+  prefix: 'fas',
+  iconName: 'location-arrow',
+  icon: [512, 512, [], "f124", "M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"]
+};
+var faLock = {
+  prefix: 'fas',
+  iconName: 'lock',
+  icon: [448, 512, [], "f023", "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]
+};
+var faLockOpen = {
+  prefix: 'fas',
+  iconName: 'lock-open',
+  icon: [576, 512, [], "f3c1", "M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]
+};
+var faLongArrowAltDown = {
+  prefix: 'fas',
+  iconName: 'long-arrow-alt-down',
+  icon: [256, 512, [], "f309", "M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"]
+};
+var faLongArrowAltLeft = {
+  prefix: 'fas',
+  iconName: 'long-arrow-alt-left',
+  icon: [448, 512, [], "f30a", "M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"]
+};
+var faLongArrowAltRight = {
+  prefix: 'fas',
+  iconName: 'long-arrow-alt-right',
+  icon: [448, 512, [], "f30b", "M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]
+};
+var faLongArrowAltUp = {
+  prefix: 'fas',
+  iconName: 'long-arrow-alt-up',
+  icon: [256, 512, [], "f30c", "M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]
+};
+var faLowVision = {
+  prefix: 'fas',
+  iconName: 'low-vision',
+  icon: [576, 512, [], "f2a8", "M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"]
+};
+var faLuggageCart = {
+  prefix: 'fas',
+  iconName: 'luggage-cart',
+  icon: [640, 512, [], "f59d", "M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"]
+};
+var faLungs = {
+  prefix: 'fas',
+  iconName: 'lungs',
+  icon: [640, 512, [], "f604", "M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"]
+};
+var faLungsVirus = {
+  prefix: 'fas',
+  iconName: 'lungs-virus',
+  icon: [640, 512, [], "e067", "M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"]
+};
+var faMagic = {
+  prefix: 'fas',
+  iconName: 'magic',
+  icon: [512, 512, [], "f0d0", "M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"]
+};
+var faMagnet = {
+  prefix: 'fas',
+  iconName: 'magnet',
+  icon: [512, 512, [], "f076", "M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"]
+};
+var faMailBulk = {
+  prefix: 'fas',
+  iconName: 'mail-bulk',
+  icon: [576, 512, [], "f674", "M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"]
+};
+var faMale = {
+  prefix: 'fas',
+  iconName: 'male',
+  icon: [192, 512, [], "f183", "M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"]
+};
+var faMap = {
+  prefix: 'fas',
+  iconName: 'map',
+  icon: [576, 512, [], "f279", "M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"]
+};
+var faMapMarked = {
+  prefix: 'fas',
+  iconName: 'map-marked',
+  icon: [576, 512, [], "f59f", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]
+};
+var faMapMarkedAlt = {
+  prefix: 'fas',
+  iconName: 'map-marked-alt',
+  icon: [576, 512, [], "f5a0", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]
+};
+var faMapMarker = {
+  prefix: 'fas',
+  iconName: 'map-marker',
+  icon: [384, 512, [], "f041", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"]
+};
+var faMapMarkerAlt = {
+  prefix: 'fas',
+  iconName: 'map-marker-alt',
+  icon: [384, 512, [], "f3c5", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"]
+};
+var faMapPin = {
+  prefix: 'fas',
+  iconName: 'map-pin',
+  icon: [288, 512, [], "f276", "M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"]
+};
+var faMapSigns = {
+  prefix: 'fas',
+  iconName: 'map-signs',
+  icon: [512, 512, [], "f277", "M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"]
+};
+var faMarker = {
+  prefix: 'fas',
+  iconName: 'marker',
+  icon: [512, 512, [], "f5a1", "M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"]
+};
+var faMars = {
+  prefix: 'fas',
+  iconName: 'mars',
+  icon: [384, 512, [], "f222", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faMarsDouble = {
+  prefix: 'fas',
+  iconName: 'mars-double',
+  icon: [512, 512, [], "f227", "M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"]
+};
+var faMarsStroke = {
+  prefix: 'fas',
+  iconName: 'mars-stroke',
+  icon: [384, 512, [], "f229", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faMarsStrokeH = {
+  prefix: 'fas',
+  iconName: 'mars-stroke-h',
+  icon: [480, 512, [], "f22b", "M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]
+};
+var faMarsStrokeV = {
+  prefix: 'fas',
+  iconName: 'mars-stroke-v',
+  icon: [288, 512, [], "f22a", "M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]
+};
+var faMask = {
+  prefix: 'fas',
+  iconName: 'mask',
+  icon: [640, 512, [], "f6fa", "M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"]
+};
+var faMedal = {
+  prefix: 'fas',
+  iconName: 'medal',
+  icon: [512, 512, [], "f5a2", "M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]
+};
+var faMedkit = {
+  prefix: 'fas',
+  iconName: 'medkit',
+  icon: [512, 512, [], "f0fa", "M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"]
+};
+var faMeh = {
+  prefix: 'fas',
+  iconName: 'meh',
+  icon: [496, 512, [], "f11a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faMehBlank = {
+  prefix: 'fas',
+  iconName: 'meh-blank',
+  icon: [496, 512, [], "f5a4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faMehRollingEyes = {
+  prefix: 'fas',
+  iconName: 'meh-rolling-eyes',
+  icon: [496, 512, [], "f5a5", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"]
+};
+var faMemory = {
+  prefix: 'fas',
+  iconName: 'memory',
+  icon: [640, 512, [], "f538", "M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"]
+};
+var faMenorah = {
+  prefix: 'fas',
+  iconName: 'menorah',
+  icon: [640, 512, [], "f676", "M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"]
+};
+var faMercury = {
+  prefix: 'fas',
+  iconName: 'mercury',
+  icon: [288, 512, [], "f223", "M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]
+};
+var faMeteor = {
+  prefix: 'fas',
+  iconName: 'meteor',
+  icon: [512, 512, [], "f753", "M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"]
+};
+var faMicrochip = {
+  prefix: 'fas',
+  iconName: 'microchip',
+  icon: [512, 512, [], "f2db", "M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"]
+};
+var faMicrophone = {
+  prefix: 'fas',
+  iconName: 'microphone',
+  icon: [352, 512, [], "f130", "M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"]
+};
+var faMicrophoneAlt = {
+  prefix: 'fas',
+  iconName: 'microphone-alt',
+  icon: [352, 512, [], "f3c9", "M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"]
+};
+var faMicrophoneAltSlash = {
+  prefix: 'fas',
+  iconName: 'microphone-alt-slash',
+  icon: [640, 512, [], "f539", "M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]
+};
+var faMicrophoneSlash = {
+  prefix: 'fas',
+  iconName: 'microphone-slash',
+  icon: [640, 512, [], "f131", "M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]
+};
+var faMicroscope = {
+  prefix: 'fas',
+  iconName: 'microscope',
+  icon: [512, 512, [], "f610", "M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"]
+};
+var faMinus = {
+  prefix: 'fas',
+  iconName: 'minus',
+  icon: [448, 512, [], "f068", "M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+};
+var faMinusCircle = {
+  prefix: 'fas',
+  iconName: 'minus-circle',
+  icon: [512, 512, [], "f056", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"]
+};
+var faMinusSquare = {
+  prefix: 'fas',
+  iconName: 'minus-square',
+  icon: [448, 512, [], "f146", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"]
+};
+var faMitten = {
+  prefix: 'fas',
+  iconName: 'mitten',
+  icon: [448, 512, [], "f7b5", "M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"]
+};
+var faMobile = {
+  prefix: 'fas',
+  iconName: 'mobile',
+  icon: [320, 512, [], "f10b", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faMobileAlt = {
+  prefix: 'fas',
+  iconName: 'mobile-alt',
+  icon: [320, 512, [], "f3cd", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"]
+};
+var faMoneyBill = {
+  prefix: 'fas',
+  iconName: 'money-bill',
+  icon: [640, 512, [], "f0d6", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]
+};
+var faMoneyBillAlt = {
+  prefix: 'fas',
+  iconName: 'money-bill-alt',
+  icon: [640, 512, [], "f3d1", "M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]
+};
+var faMoneyBillWave = {
+  prefix: 'fas',
+  iconName: 'money-bill-wave',
+  icon: [640, 512, [], "f53a", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"]
+};
+var faMoneyBillWaveAlt = {
+  prefix: 'fas',
+  iconName: 'money-bill-wave-alt',
+  icon: [640, 512, [], "f53b", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"]
+};
+var faMoneyCheck = {
+  prefix: 'fas',
+  iconName: 'money-check',
+  icon: [640, 512, [], "f53c", "M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"]
+};
+var faMoneyCheckAlt = {
+  prefix: 'fas',
+  iconName: 'money-check-alt',
+  icon: [640, 512, [], "f53d", "M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"]
+};
+var faMonument = {
+  prefix: 'fas',
+  iconName: 'monument',
+  icon: [384, 512, [], "f5a6", "M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]
+};
+var faMoon = {
+  prefix: 'fas',
+  iconName: 'moon',
+  icon: [512, 512, [], "f186", "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"]
+};
+var faMortarPestle = {
+  prefix: 'fas',
+  iconName: 'mortar-pestle',
+  icon: [512, 512, [], "f5a7", "M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+};
+var faMosque = {
+  prefix: 'fas',
+  iconName: 'mosque',
+  icon: [640, 512, [], "f678", "M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"]
+};
+var faMotorcycle = {
+  prefix: 'fas',
+  iconName: 'motorcycle',
+  icon: [640, 512, [], "f21c", "M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"]
+};
+var faMountain = {
+  prefix: 'fas',
+  iconName: 'mountain',
+  icon: [640, 512, [], "f6fc", "M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"]
+};
+var faMouse = {
+  prefix: 'fas',
+  iconName: 'mouse',
+  icon: [384, 512, [], "f8cc", "M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"]
+};
+var faMousePointer = {
+  prefix: 'fas',
+  iconName: 'mouse-pointer',
+  icon: [320, 512, [], "f245", "M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"]
+};
+var faMugHot = {
+  prefix: 'fas',
+  iconName: 'mug-hot',
+  icon: [512, 512, [], "f7b6", "M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]
+};
+var faMusic = {
+  prefix: 'fas',
+  iconName: 'music',
+  icon: [512, 512, [], "f001", "M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"]
+};
+var faNetworkWired = {
+  prefix: 'fas',
+  iconName: 'network-wired',
+  icon: [640, 512, [], "f6ff", "M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"]
+};
+var faNeuter = {
+  prefix: 'fas',
+  iconName: 'neuter',
+  icon: [288, 512, [], "f22c", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faNewspaper = {
+  prefix: 'fas',
+  iconName: 'newspaper',
+  icon: [576, 512, [], "f1ea", "M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"]
+};
+var faNotEqual = {
+  prefix: 'fas',
+  iconName: 'not-equal',
+  icon: [448, 512, [], "f53e", "M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"]
+};
+var faNotesMedical = {
+  prefix: 'fas',
+  iconName: 'notes-medical',
+  icon: [384, 512, [], "f481", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"]
+};
+var faObjectGroup = {
+  prefix: 'fas',
+  iconName: 'object-group',
+  icon: [512, 512, [], "f247", "M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]
+};
+var faObjectUngroup = {
+  prefix: 'fas',
+  iconName: 'object-ungroup',
+  icon: [576, 512, [], "f248", "M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"]
+};
+var faOilCan = {
+  prefix: 'fas',
+  iconName: 'oil-can',
+  icon: [640, 512, [], "f613", "M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"]
+};
+var faOm = {
+  prefix: 'fas',
+  iconName: 'om',
+  icon: [512, 512, [], "f679", "M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"]
+};
+var faOtter = {
+  prefix: 'fas',
+  iconName: 'otter',
+  icon: [640, 512, [], "f700", "M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"]
+};
+var faOutdent = {
+  prefix: 'fas',
+  iconName: 'outdent',
+  icon: [448, 512, [], "f03b", "M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faPager = {
+  prefix: 'fas',
+  iconName: 'pager',
+  icon: [512, 512, [], "f815", "M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"]
+};
+var faPaintBrush = {
+  prefix: 'fas',
+  iconName: 'paint-brush',
+  icon: [512, 512, [], "f1fc", "M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"]
+};
+var faPaintRoller = {
+  prefix: 'fas',
+  iconName: 'paint-roller',
+  icon: [512, 512, [], "f5aa", "M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"]
+};
+var faPalette = {
+  prefix: 'fas',
+  iconName: 'palette',
+  icon: [512, 512, [], "f53f", "M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faPallet = {
+  prefix: 'fas',
+  iconName: 'pallet',
+  icon: [640, 512, [], "f482", "M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"]
+};
+var faPaperPlane = {
+  prefix: 'fas',
+  iconName: 'paper-plane',
+  icon: [512, 512, [], "f1d8", "M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"]
+};
+var faPaperclip = {
+  prefix: 'fas',
+  iconName: 'paperclip',
+  icon: [448, 512, [], "f0c6", "M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]
+};
+var faParachuteBox = {
+  prefix: 'fas',
+  iconName: 'parachute-box',
+  icon: [512, 512, [], "f4cd", "M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"]
+};
+var faParagraph = {
+  prefix: 'fas',
+  iconName: 'paragraph',
+  icon: [448, 512, [], "f1dd", "M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"]
+};
+var faParking = {
+  prefix: 'fas',
+  iconName: 'parking',
+  icon: [448, 512, [], "f540", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"]
+};
+var faPassport = {
+  prefix: 'fas',
+  iconName: 'passport',
+  icon: [448, 512, [], "f5ab", "M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"]
+};
+var faPastafarianism = {
+  prefix: 'fas',
+  iconName: 'pastafarianism',
+  icon: [640, 512, [], "f67b", "M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"]
+};
+var faPaste = {
+  prefix: 'fas',
+  iconName: 'paste',
+  icon: [448, 512, [], "f0ea", "M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]
+};
+var faPause = {
+  prefix: 'fas',
+  iconName: 'pause',
+  icon: [448, 512, [], "f04c", "M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]
+};
+var faPauseCircle = {
+  prefix: 'fas',
+  iconName: 'pause-circle',
+  icon: [512, 512, [], "f28b", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"]
+};
+var faPaw = {
+  prefix: 'fas',
+  iconName: 'paw',
+  icon: [512, 512, [], "f1b0", "M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"]
+};
+var faPeace = {
+  prefix: 'fas',
+  iconName: 'peace',
+  icon: [496, 512, [], "f67c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"]
+};
+var faPen = {
+  prefix: 'fas',
+  iconName: 'pen',
+  icon: [512, 512, [], "f304", "M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]
+};
+var faPenAlt = {
+  prefix: 'fas',
+  iconName: 'pen-alt',
+  icon: [512, 512, [], "f305", "M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"]
+};
+var faPenFancy = {
+  prefix: 'fas',
+  iconName: 'pen-fancy',
+  icon: [512, 512, [], "f5ac", "M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"]
+};
+var faPenNib = {
+  prefix: 'fas',
+  iconName: 'pen-nib',
+  icon: [512, 512, [], "f5ad", "M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"]
+};
+var faPenSquare = {
+  prefix: 'fas',
+  iconName: 'pen-square',
+  icon: [448, 512, [], "f14b", "M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"]
+};
+var faPencilAlt = {
+  prefix: 'fas',
+  iconName: 'pencil-alt',
+  icon: [512, 512, [], "f303", "M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]
+};
+var faPencilRuler = {
+  prefix: 'fas',
+  iconName: 'pencil-ruler',
+  icon: [512, 512, [], "f5ae", "M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"]
+};
+var faPeopleArrows = {
+  prefix: 'fas',
+  iconName: 'people-arrows',
+  icon: [576, 512, [], "e068", "M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"]
+};
+var faPeopleCarry = {
+  prefix: 'fas',
+  iconName: 'people-carry',
+  icon: [640, 512, [], "f4ce", "M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"]
+};
+var faPepperHot = {
+  prefix: 'fas',
+  iconName: 'pepper-hot',
+  icon: [512, 512, [], "f816", "M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"]
+};
+var faPercent = {
+  prefix: 'fas',
+  iconName: 'percent',
+  icon: [448, 512, [], "f295", "M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"]
+};
+var faPercentage = {
+  prefix: 'fas',
+  iconName: 'percentage',
+  icon: [384, 512, [], "f541", "M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"]
+};
+var faPersonBooth = {
+  prefix: 'fas',
+  iconName: 'person-booth',
+  icon: [576, 512, [], "f756", "M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"]
+};
+var faPhone = {
+  prefix: 'fas',
+  iconName: 'phone',
+  icon: [512, 512, [], "f095", "M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"]
+};
+var faPhoneAlt = {
+  prefix: 'fas',
+  iconName: 'phone-alt',
+  icon: [512, 512, [], "f879", "M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"]
+};
+var faPhoneSlash = {
+  prefix: 'fas',
+  iconName: 'phone-slash',
+  icon: [640, 512, [], "f3dd", "M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]
+};
+var faPhoneSquare = {
+  prefix: 'fas',
+  iconName: 'phone-square',
+  icon: [448, 512, [], "f098", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"]
+};
+var faPhoneSquareAlt = {
+  prefix: 'fas',
+  iconName: 'phone-square-alt',
+  icon: [448, 512, [], "f87b", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"]
+};
+var faPhoneVolume = {
+  prefix: 'fas',
+  iconName: 'phone-volume',
+  icon: [384, 512, [], "f2a0", "M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"]
+};
+var faPhotoVideo = {
+  prefix: 'fas',
+  iconName: 'photo-video',
+  icon: [640, 512, [], "f87c", "M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"]
+};
+var faPiggyBank = {
+  prefix: 'fas',
+  iconName: 'piggy-bank',
+  icon: [576, 512, [], "f4d3", "M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"]
+};
+var faPills = {
+  prefix: 'fas',
+  iconName: 'pills',
+  icon: [576, 512, [], "f484", "M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"]
+};
+var faPizzaSlice = {
+  prefix: 'fas',
+  iconName: 'pizza-slice',
+  icon: [512, 512, [], "f818", "M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]
+};
+var faPlaceOfWorship = {
+  prefix: 'fas',
+  iconName: 'place-of-worship',
+  icon: [640, 512, [], "f67f", "M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"]
+};
+var faPlane = {
+  prefix: 'fas',
+  iconName: 'plane',
+  icon: [576, 512, [], "f072", "M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"]
+};
+var faPlaneArrival = {
+  prefix: 'fas',
+  iconName: 'plane-arrival',
+  icon: [640, 512, [], "f5af", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"]
+};
+var faPlaneDeparture = {
+  prefix: 'fas',
+  iconName: 'plane-departure',
+  icon: [640, 512, [], "f5b0", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"]
+};
+var faPlaneSlash = {
+  prefix: 'fas',
+  iconName: 'plane-slash',
+  icon: [640, 512, [], "e069", "M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"]
+};
+var faPlay = {
+  prefix: 'fas',
+  iconName: 'play',
+  icon: [448, 512, [], "f04b", "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]
+};
+var faPlayCircle = {
+  prefix: 'fas',
+  iconName: 'play-circle',
+  icon: [512, 512, [], "f144", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"]
+};
+var faPlug = {
+  prefix: 'fas',
+  iconName: 'plug',
+  icon: [384, 512, [], "f1e6", "M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"]
+};
+var faPlus = {
+  prefix: 'fas',
+  iconName: 'plus',
+  icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+};
+var faPlusCircle = {
+  prefix: 'fas',
+  iconName: 'plus-circle',
+  icon: [512, 512, [], "f055", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]
+};
+var faPlusSquare = {
+  prefix: 'fas',
+  iconName: 'plus-square',
+  icon: [448, 512, [], "f0fe", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]
+};
+var faPodcast = {
+  prefix: 'fas',
+  iconName: 'podcast',
+  icon: [448, 512, [], "f2ce", "M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"]
+};
+var faPoll = {
+  prefix: 'fas',
+  iconName: 'poll',
+  icon: [448, 512, [], "f681", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"]
+};
+var faPollH = {
+  prefix: 'fas',
+  iconName: 'poll-h',
+  icon: [448, 512, [], "f682", "M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"]
+};
+var faPoo = {
+  prefix: 'fas',
+  iconName: 'poo',
+  icon: [512, 512, [], "f2fe", "M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faPooStorm = {
+  prefix: 'fas',
+  iconName: 'poo-storm',
+  icon: [448, 512, [], "f75a", "M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"]
+};
+var faPoop = {
+  prefix: 'fas',
+  iconName: 'poop',
+  icon: [512, 512, [], "f619", "M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"]
+};
+var faPortrait = {
+  prefix: 'fas',
+  iconName: 'portrait',
+  icon: [384, 512, [], "f3e0", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+};
+var faPoundSign = {
+  prefix: 'fas',
+  iconName: 'pound-sign',
+  icon: [320, 512, [], "f154", "M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"]
+};
+var faPowerOff = {
+  prefix: 'fas',
+  iconName: 'power-off',
+  icon: [512, 512, [], "f011", "M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"]
+};
+var faPray = {
+  prefix: 'fas',
+  iconName: 'pray',
+  icon: [384, 512, [], "f683", "M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"]
+};
+var faPrayingHands = {
+  prefix: 'fas',
+  iconName: 'praying-hands',
+  icon: [640, 512, [], "f684", "M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"]
+};
+var faPrescription = {
+  prefix: 'fas',
+  iconName: 'prescription',
+  icon: [384, 512, [], "f5b1", "M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"]
+};
+var faPrescriptionBottle = {
+  prefix: 'fas',
+  iconName: 'prescription-bottle',
+  icon: [384, 512, [], "f485", "M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"]
+};
+var faPrescriptionBottleAlt = {
+  prefix: 'fas',
+  iconName: 'prescription-bottle-alt',
+  icon: [384, 512, [], "f486", "M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"]
+};
+var faPrint = {
+  prefix: 'fas',
+  iconName: 'print',
+  icon: [512, 512, [], "f02f", "M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+};
+var faProcedures = {
+  prefix: 'fas',
+  iconName: 'procedures',
+  icon: [640, 512, [], "f487", "M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]
+};
+var faProjectDiagram = {
+  prefix: 'fas',
+  iconName: 'project-diagram',
+  icon: [640, 512, [], "f542", "M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]
+};
+var faPumpMedical = {
+  prefix: 'fas',
+  iconName: 'pump-medical',
+  icon: [384, 512, [], "e06a", "M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"]
+};
+var faPumpSoap = {
+  prefix: 'fas',
+  iconName: 'pump-soap',
+  icon: [384, 512, [], "e06b", "M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"]
+};
+var faPuzzlePiece = {
+  prefix: 'fas',
+  iconName: 'puzzle-piece',
+  icon: [576, 512, [], "f12e", "M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"]
+};
+var faQrcode = {
+  prefix: 'fas',
+  iconName: 'qrcode',
+  icon: [448, 512, [], "f029", "M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"]
+};
+var faQuestion = {
+  prefix: 'fas',
+  iconName: 'question',
+  icon: [384, 512, [], "f128", "M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"]
+};
+var faQuestionCircle = {
+  prefix: 'fas',
+  iconName: 'question-circle',
+  icon: [512, 512, [], "f059", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]
+};
+var faQuidditch = {
+  prefix: 'fas',
+  iconName: 'quidditch',
+  icon: [640, 512, [], "f458", "M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"]
+};
+var faQuoteLeft = {
+  prefix: 'fas',
+  iconName: 'quote-left',
+  icon: [512, 512, [], "f10d", "M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]
+};
+var faQuoteRight = {
+  prefix: 'fas',
+  iconName: 'quote-right',
+  icon: [512, 512, [], "f10e", "M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"]
+};
+var faQuran = {
+  prefix: 'fas',
+  iconName: 'quran',
+  icon: [448, 512, [], "f687", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]
+};
+var faRadiation = {
+  prefix: 'fas',
+  iconName: 'radiation',
+  icon: [496, 512, [], "f7b9", "M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"]
+};
+var faRadiationAlt = {
+  prefix: 'fas',
+  iconName: 'radiation-alt',
+  icon: [496, 512, [], "f7ba", "M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]
+};
+var faRainbow = {
+  prefix: 'fas',
+  iconName: 'rainbow',
+  icon: [576, 512, [], "f75b", "M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"]
+};
+var faRandom = {
+  prefix: 'fas',
+  iconName: 'random',
+  icon: [512, 512, [], "f074", "M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"]
+};
+var faReceipt = {
+  prefix: 'fas',
+  iconName: 'receipt',
+  icon: [384, 512, [], "f543", "M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"]
+};
+var faRecordVinyl = {
+  prefix: 'fas',
+  iconName: 'record-vinyl',
+  icon: [512, 512, [], "f8d9", "M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"]
+};
+var faRecycle = {
+  prefix: 'fas',
+  iconName: 'recycle',
+  icon: [512, 512, [], "f1b8", "M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"]
+};
+var faRedo = {
+  prefix: 'fas',
+  iconName: 'redo',
+  icon: [512, 512, [], "f01e", "M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]
+};
+var faRedoAlt = {
+  prefix: 'fas',
+  iconName: 'redo-alt',
+  icon: [512, 512, [], "f2f9", "M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"]
+};
+var faRegistered = {
+  prefix: 'fas',
+  iconName: 'registered',
+  icon: [512, 512, [], "f25d", "M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"]
+};
+var faRemoveFormat = {
+  prefix: 'fas',
+  iconName: 'remove-format',
+  icon: [640, 512, [], "f87d", "M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"]
+};
+var faReply = {
+  prefix: 'fas',
+  iconName: 'reply',
+  icon: [512, 512, [], "f3e5", "M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]
+};
+var faReplyAll = {
+  prefix: 'fas',
+  iconName: 'reply-all',
+  icon: [576, 512, [], "f122", "M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"]
+};
+var faRepublican = {
+  prefix: 'fas',
+  iconName: 'republican',
+  icon: [640, 512, [], "f75e", "M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"]
+};
+var faRestroom = {
+  prefix: 'fas',
+  iconName: 'restroom',
+  icon: [640, 512, [], "f7bd", "M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"]
+};
+var faRetweet = {
+  prefix: 'fas',
+  iconName: 'retweet',
+  icon: [640, 512, [], "f079", "M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"]
+};
+var faRibbon = {
+  prefix: 'fas',
+  iconName: 'ribbon',
+  icon: [448, 512, [], "f4d6", "M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"]
+};
+var faRing = {
+  prefix: 'fas',
+  iconName: 'ring',
+  icon: [512, 512, [], "f70b", "M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"]
+};
+var faRoad = {
+  prefix: 'fas',
+  iconName: 'road',
+  icon: [576, 512, [], "f018", "M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"]
+};
+var faRobot = {
+  prefix: 'fas',
+  iconName: 'robot',
+  icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]
+};
+var faRocket = {
+  prefix: 'fas',
+  iconName: 'rocket',
+  icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]
+};
+var faRoute = {
+  prefix: 'fas',
+  iconName: 'route',
+  icon: [512, 512, [], "f4d7", "M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faRss = {
+  prefix: 'fas',
+  iconName: 'rss',
+  icon: [448, 512, [], "f09e", "M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"]
+};
+var faRssSquare = {
+  prefix: 'fas',
+  iconName: 'rss-square',
+  icon: [448, 512, [], "f143", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"]
+};
+var faRubleSign = {
+  prefix: 'fas',
+  iconName: 'ruble-sign',
+  icon: [384, 512, [], "f158", "M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"]
+};
+var faRuler = {
+  prefix: 'fas',
+  iconName: 'ruler',
+  icon: [640, 512, [], "f545", "M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"]
+};
+var faRulerCombined = {
+  prefix: 'fas',
+  iconName: 'ruler-combined',
+  icon: [512, 512, [], "f546", "M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+};
+var faRulerHorizontal = {
+  prefix: 'fas',
+  iconName: 'ruler-horizontal',
+  icon: [576, 512, [], "f547", "M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"]
+};
+var faRulerVertical = {
+  prefix: 'fas',
+  iconName: 'ruler-vertical',
+  icon: [256, 512, [], "f548", "M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"]
+};
+var faRunning = {
+  prefix: 'fas',
+  iconName: 'running',
+  icon: [416, 512, [], "f70c", "M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"]
+};
+var faRupeeSign = {
+  prefix: 'fas',
+  iconName: 'rupee-sign',
+  icon: [320, 512, [], "f156", "M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"]
+};
+var faSadCry = {
+  prefix: 'fas',
+  iconName: 'sad-cry',
+  icon: [496, 512, [], "f5b3", "M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"]
+};
+var faSadTear = {
+  prefix: 'fas',
+  iconName: 'sad-tear',
+  icon: [496, 512, [], "f5b4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"]
+};
+var faSatellite = {
+  prefix: 'fas',
+  iconName: 'satellite',
+  icon: [512, 512, [], "f7bf", "M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"]
+};
+var faSatelliteDish = {
+  prefix: 'fas',
+  iconName: 'satellite-dish',
+  icon: [512, 512, [], "f7c0", "M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"]
+};
+var faSave = {
+  prefix: 'fas',
+  iconName: 'save',
+  icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]
+};
+var faSchool = {
+  prefix: 'fas',
+  iconName: 'school',
+  icon: [640, 512, [], "f549", "M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"]
+};
+var faScrewdriver = {
+  prefix: 'fas',
+  iconName: 'screwdriver',
+  icon: [512, 512, [], "f54a", "M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"]
+};
+var faScroll = {
+  prefix: 'fas',
+  iconName: 'scroll',
+  icon: [640, 512, [], "f70e", "M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"]
+};
+var faSdCard = {
+  prefix: 'fas',
+  iconName: 'sd-card',
+  icon: [384, 512, [], "f7c2", "M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"]
+};
+var faSearch = {
+  prefix: 'fas',
+  iconName: 'search',
+  icon: [512, 512, [], "f002", "M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]
+};
+var faSearchDollar = {
+  prefix: 'fas',
+  iconName: 'search-dollar',
+  icon: [512, 512, [], "f688", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"]
+};
+var faSearchLocation = {
+  prefix: 'fas',
+  iconName: 'search-location',
+  icon: [512, 512, [], "f689", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+};
+var faSearchMinus = {
+  prefix: 'fas',
+  iconName: 'search-minus',
+  icon: [512, 512, [], "f010", "M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]
+};
+var faSearchPlus = {
+  prefix: 'fas',
+  iconName: 'search-plus',
+  icon: [512, 512, [], "f00e", "M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]
+};
+var faSeedling = {
+  prefix: 'fas',
+  iconName: 'seedling',
+  icon: [512, 512, [], "f4d8", "M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"]
+};
+var faServer = {
+  prefix: 'fas',
+  iconName: 'server',
+  icon: [512, 512, [], "f233", "M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"]
+};
+var faShapes = {
+  prefix: 'fas',
+  iconName: 'shapes',
+  icon: [512, 512, [], "f61f", "M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"]
+};
+var faShare = {
+  prefix: 'fas',
+  iconName: 'share',
+  icon: [512, 512, [], "f064", "M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]
+};
+var faShareAlt = {
+  prefix: 'fas',
+  iconName: 'share-alt',
+  icon: [448, 512, [], "f1e0", "M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"]
+};
+var faShareAltSquare = {
+  prefix: 'fas',
+  iconName: 'share-alt-square',
+  icon: [448, 512, [], "f1e1", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"]
+};
+var faShareSquare = {
+  prefix: 'fas',
+  iconName: 'share-square',
+  icon: [576, 512, [], "f14d", "M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"]
+};
+var faShekelSign = {
+  prefix: 'fas',
+  iconName: 'shekel-sign',
+  icon: [448, 512, [], "f20b", "M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"]
+};
+var faShieldAlt = {
+  prefix: 'fas',
+  iconName: 'shield-alt',
+  icon: [512, 512, [], "f3ed", "M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"]
+};
+var faShieldVirus = {
+  prefix: 'fas',
+  iconName: 'shield-virus',
+  icon: [512, 512, [], "e06c", "M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"]
+};
+var faShip = {
+  prefix: 'fas',
+  iconName: 'ship',
+  icon: [640, 512, [], "f21a", "M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"]
+};
+var faShippingFast = {
+  prefix: 'fas',
+  iconName: 'shipping-fast',
+  icon: [640, 512, [], "f48b", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+};
+var faShoePrints = {
+  prefix: 'fas',
+  iconName: 'shoe-prints',
+  icon: [640, 512, [], "f54b", "M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"]
+};
+var faShoppingBag = {
+  prefix: 'fas',
+  iconName: 'shopping-bag',
+  icon: [448, 512, [], "f290", "M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"]
+};
+var faShoppingBasket = {
+  prefix: 'fas',
+  iconName: 'shopping-basket',
+  icon: [576, 512, [], "f291", "M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"]
+};
+var faShoppingCart = {
+  prefix: 'fas',
+  iconName: 'shopping-cart',
+  icon: [576, 512, [], "f07a", "M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"]
+};
+var faShower = {
+  prefix: 'fas',
+  iconName: 'shower',
+  icon: [512, 512, [], "f2cc", "M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"]
+};
+var faShuttleVan = {
+  prefix: 'fas',
+  iconName: 'shuttle-van',
+  icon: [640, 512, [], "f5b6", "M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"]
+};
+var faSign = {
+  prefix: 'fas',
+  iconName: 'sign',
+  icon: [512, 512, [], "f4d9", "M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"]
+};
+var faSignInAlt = {
+  prefix: 'fas',
+  iconName: 'sign-in-alt',
+  icon: [512, 512, [], "f2f6", "M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"]
+};
+var faSignLanguage = {
+  prefix: 'fas',
+  iconName: 'sign-language',
+  icon: [448, 512, [], "f2a7", "M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"]
+};
+var faSignOutAlt = {
+  prefix: 'fas',
+  iconName: 'sign-out-alt',
+  icon: [512, 512, [], "f2f5", "M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"]
+};
+var faSignal = {
+  prefix: 'fas',
+  iconName: 'signal',
+  icon: [640, 512, [], "f012", "M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]
+};
+var faSignature = {
+  prefix: 'fas',
+  iconName: 'signature',
+  icon: [640, 512, [], "f5b7", "M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"]
+};
+var faSimCard = {
+  prefix: 'fas',
+  iconName: 'sim-card',
+  icon: [384, 512, [], "f7c4", "M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"]
+};
+var faSink = {
+  prefix: 'fas',
+  iconName: 'sink',
+  icon: [512, 512, [], "e06d", "M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"]
+};
+var faSitemap = {
+  prefix: 'fas',
+  iconName: 'sitemap',
+  icon: [640, 512, [], "f0e8", "M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+};
+var faSkating = {
+  prefix: 'fas',
+  iconName: 'skating',
+  icon: [448, 512, [], "f7c5", "M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]
+};
+var faSkiing = {
+  prefix: 'fas',
+  iconName: 'skiing',
+  icon: [512, 512, [], "f7c9", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"]
+};
+var faSkiingNordic = {
+  prefix: 'fas',
+  iconName: 'skiing-nordic',
+  icon: [576, 512, [], "f7ca", "M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"]
+};
+var faSkull = {
+  prefix: 'fas',
+  iconName: 'skull',
+  icon: [512, 512, [], "f54c", "M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"]
+};
+var faSkullCrossbones = {
+  prefix: 'fas',
+  iconName: 'skull-crossbones',
+  icon: [448, 512, [], "f714", "M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"]
+};
+var faSlash = {
+  prefix: 'fas',
+  iconName: 'slash',
+  icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]
+};
+var faSleigh = {
+  prefix: 'fas',
+  iconName: 'sleigh',
+  icon: [640, 512, [], "f7cc", "M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"]
+};
+var faSlidersH = {
+  prefix: 'fas',
+  iconName: 'sliders-h',
+  icon: [512, 512, [], "f1de", "M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]
+};
+var faSmile = {
+  prefix: 'fas',
+  iconName: 'smile',
+  icon: [496, 512, [], "f118", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"]
+};
+var faSmileBeam = {
+  prefix: 'fas',
+  iconName: 'smile-beam',
+  icon: [496, 512, [], "f5b8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"]
+};
+var faSmileWink = {
+  prefix: 'fas',
+  iconName: 'smile-wink',
+  icon: [496, 512, [], "f4da", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"]
+};
+var faSmog = {
+  prefix: 'fas',
+  iconName: 'smog',
+  icon: [640, 512, [], "f75f", "M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"]
+};
+var faSmoking = {
+  prefix: 'fas',
+  iconName: 'smoking',
+  icon: [640, 512, [], "f48d", "M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]
+};
+var faSmokingBan = {
+  prefix: 'fas',
+  iconName: 'smoking-ban',
+  icon: [512, 512, [], "f54d", "M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"]
+};
+var faSms = {
+  prefix: 'fas',
+  iconName: 'sms',
+  icon: [512, 512, [], "f7cd", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"]
+};
+var faSnowboarding = {
+  prefix: 'fas',
+  iconName: 'snowboarding',
+  icon: [512, 512, [], "f7ce", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"]
+};
+var faSnowflake = {
+  prefix: 'fas',
+  iconName: 'snowflake',
+  icon: [448, 512, [], "f2dc", "M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"]
+};
+var faSnowman = {
+  prefix: 'fas',
+  iconName: 'snowman',
+  icon: [512, 512, [], "f7d0", "M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+};
+var faSnowplow = {
+  prefix: 'fas',
+  iconName: 'snowplow',
+  icon: [640, 512, [], "f7d2", "M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]
+};
+var faSoap = {
+  prefix: 'fas',
+  iconName: 'soap',
+  icon: [512, 512, [], "e06e", "M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"]
+};
+var faSocks = {
+  prefix: 'fas',
+  iconName: 'socks',
+  icon: [512, 512, [], "f696", "M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"]
+};
+var faSolarPanel = {
+  prefix: 'fas',
+  iconName: 'solar-panel',
+  icon: [640, 512, [], "f5ba", "M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"]
+};
+var faSort = {
+  prefix: 'fas',
+  iconName: 'sort',
+  icon: [320, 512, [], "f0dc", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]
+};
+var faSortAlphaDown = {
+  prefix: 'fas',
+  iconName: 'sort-alpha-down',
+  icon: [448, 512, [], "f15d", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]
+};
+var faSortAlphaDownAlt = {
+  prefix: 'fas',
+  iconName: 'sort-alpha-down-alt',
+  icon: [448, 512, [], "f881", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]
+};
+var faSortAlphaUp = {
+  prefix: 'fas',
+  iconName: 'sort-alpha-up',
+  icon: [448, 512, [], "f15e", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]
+};
+var faSortAlphaUpAlt = {
+  prefix: 'fas',
+  iconName: 'sort-alpha-up-alt',
+  icon: [448, 512, [], "f882", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]
+};
+var faSortAmountDown = {
+  prefix: 'fas',
+  iconName: 'sort-amount-down',
+  icon: [512, 512, [], "f160", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faSortAmountDownAlt = {
+  prefix: 'fas',
+  iconName: 'sort-amount-down-alt',
+  icon: [512, 512, [], "f884", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]
+};
+var faSortAmountUp = {
+  prefix: 'fas',
+  iconName: 'sort-amount-up',
+  icon: [512, 512, [], "f161", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faSortAmountUpAlt = {
+  prefix: 'fas',
+  iconName: 'sort-amount-up-alt',
+  icon: [512, 512, [], "f885", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"]
+};
+var faSortDown = {
+  prefix: 'fas',
+  iconName: 'sort-down',
+  icon: [320, 512, [], "f0dd", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]
+};
+var faSortNumericDown = {
+  prefix: 'fas',
+  iconName: 'sort-numeric-down',
+  icon: [448, 512, [], "f162", "M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]
+};
+var faSortNumericDownAlt = {
+  prefix: 'fas',
+  iconName: 'sort-numeric-down-alt',
+  icon: [448, 512, [], "f886", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]
+};
+var faSortNumericUp = {
+  prefix: 'fas',
+  iconName: 'sort-numeric-up',
+  icon: [448, 512, [], "f163", "M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"]
+};
+var faSortNumericUpAlt = {
+  prefix: 'fas',
+  iconName: 'sort-numeric-up-alt',
+  icon: [448, 512, [], "f887", "M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]
+};
+var faSortUp = {
+  prefix: 'fas',
+  iconName: 'sort-up',
+  icon: [320, 512, [], "f0de", "M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]
+};
+var faSpa = {
+  prefix: 'fas',
+  iconName: 'spa',
+  icon: [576, 512, [], "f5bb", "M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"]
+};
+var faSpaceShuttle = {
+  prefix: 'fas',
+  iconName: 'space-shuttle',
+  icon: [640, 512, [], "f197", "M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"]
+};
+var faSpellCheck = {
+  prefix: 'fas',
+  iconName: 'spell-check',
+  icon: [576, 512, [], "f891", "M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"]
+};
+var faSpider = {
+  prefix: 'fas',
+  iconName: 'spider',
+  icon: [576, 512, [], "f717", "M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"]
+};
+var faSpinner = {
+  prefix: 'fas',
+  iconName: 'spinner',
+  icon: [512, 512, [], "f110", "M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"]
+};
+var faSplotch = {
+  prefix: 'fas',
+  iconName: 'splotch',
+  icon: [512, 512, [], "f5bc", "M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"]
+};
+var faSprayCan = {
+  prefix: 'fas',
+  iconName: 'spray-can',
+  icon: [512, 512, [], "f5bd", "M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+};
+var faSquare = {
+  prefix: 'fas',
+  iconName: 'square',
+  icon: [448, 512, [], "f0c8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+};
+var faSquareFull = {
+  prefix: 'fas',
+  iconName: 'square-full',
+  icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"]
+};
+var faSquareRootAlt = {
+  prefix: 'fas',
+  iconName: 'square-root-alt',
+  icon: [576, 512, [], "f698", "M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"]
+};
+var faStamp = {
+  prefix: 'fas',
+  iconName: 'stamp',
+  icon: [512, 512, [], "f5bf", "M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"]
+};
+var faStar = {
+  prefix: 'fas',
+  iconName: 'star',
+  icon: [576, 512, [], "f005", "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]
+};
+var faStarAndCrescent = {
+  prefix: 'fas',
+  iconName: 'star-and-crescent',
+  icon: [512, 512, [], "f699", "M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"]
+};
+var faStarHalf = {
+  prefix: 'fas',
+  iconName: 'star-half',
+  icon: [576, 512, [], "f089", "M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"]
+};
+var faStarHalfAlt = {
+  prefix: 'fas',
+  iconName: 'star-half-alt',
+  icon: [536, 512, [], "f5c0", "M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"]
+};
+var faStarOfDavid = {
+  prefix: 'fas',
+  iconName: 'star-of-david',
+  icon: [464, 512, [], "f69a", "M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"]
+};
+var faStarOfLife = {
+  prefix: 'fas',
+  iconName: 'star-of-life',
+  icon: [480, 512, [], "f621", "M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"]
+};
+var faStepBackward = {
+  prefix: 'fas',
+  iconName: 'step-backward',
+  icon: [448, 512, [], "f048", "M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]
+};
+var faStepForward = {
+  prefix: 'fas',
+  iconName: 'step-forward',
+  icon: [448, 512, [], "f051", "M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]
+};
+var faStethoscope = {
+  prefix: 'fas',
+  iconName: 'stethoscope',
+  icon: [512, 512, [], "f0f1", "M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+};
+var faStickyNote = {
+  prefix: 'fas',
+  iconName: 'sticky-note',
+  icon: [448, 512, [], "f249", "M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"]
+};
+var faStop = {
+  prefix: 'fas',
+  iconName: 'stop',
+  icon: [448, 512, [], "f04d", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+};
+var faStopCircle = {
+  prefix: 'fas',
+  iconName: 'stop-circle',
+  icon: [512, 512, [], "f28d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"]
+};
+var faStopwatch = {
+  prefix: 'fas',
+  iconName: 'stopwatch',
+  icon: [448, 512, [], "f2f2", "M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]
+};
+var faStopwatch20 = {
+  prefix: 'fas',
+  iconName: 'stopwatch-20',
+  icon: [448, 512, [], "e06f", "M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"]
+};
+var faStore = {
+  prefix: 'fas',
+  iconName: 'store',
+  icon: [616, 512, [], "f54e", "M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"]
+};
+var faStoreAlt = {
+  prefix: 'fas',
+  iconName: 'store-alt',
+  icon: [640, 512, [], "f54f", "M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"]
+};
+var faStoreAltSlash = {
+  prefix: 'fas',
+  iconName: 'store-alt-slash',
+  icon: [640, 512, [], "e070", "M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"]
+};
+var faStoreSlash = {
+  prefix: 'fas',
+  iconName: 'store-slash',
+  icon: [640, 512, [], "e071", "M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"]
+};
+var faStream = {
+  prefix: 'fas',
+  iconName: 'stream',
+  icon: [512, 512, [], "f550", "M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"]
+};
+var faStreetView = {
+  prefix: 'fas',
+  iconName: 'street-view',
+  icon: [512, 512, [], "f21d", "M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"]
+};
+var faStrikethrough = {
+  prefix: 'fas',
+  iconName: 'strikethrough',
+  icon: [512, 512, [], "f0cc", "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"]
+};
+var faStroopwafel = {
+  prefix: 'fas',
+  iconName: 'stroopwafel',
+  icon: [512, 512, [], "f551", "M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"]
+};
+var faSubscript = {
+  prefix: 'fas',
+  iconName: 'subscript',
+  icon: [512, 512, [], "f12c", "M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]
+};
+var faSubway = {
+  prefix: 'fas',
+  iconName: 'subway',
+  icon: [448, 512, [], "f239", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]
+};
+var faSuitcase = {
+  prefix: 'fas',
+  iconName: 'suitcase',
+  icon: [512, 512, [], "f0f2", "M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"]
+};
+var faSuitcaseRolling = {
+  prefix: 'fas',
+  iconName: 'suitcase-rolling',
+  icon: [384, 512, [], "f5c1", "M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"]
+};
+var faSun = {
+  prefix: 'fas',
+  iconName: 'sun',
+  icon: [512, 512, [], "f185", "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"]
+};
+var faSuperscript = {
+  prefix: 'fas',
+  iconName: 'superscript',
+  icon: [512, 512, [], "f12b", "M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]
+};
+var faSurprise = {
+  prefix: 'fas',
+  iconName: 'surprise',
+  icon: [496, 512, [], "f5c2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faSwatchbook = {
+  prefix: 'fas',
+  iconName: 'swatchbook',
+  icon: [512, 512, [], "f5c3", "M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"]
+};
+var faSwimmer = {
+  prefix: 'fas',
+  iconName: 'swimmer',
+  icon: [640, 512, [], "f5c4", "M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"]
+};
+var faSwimmingPool = {
+  prefix: 'fas',
+  iconName: 'swimming-pool',
+  icon: [640, 512, [], "f5c5", "M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"]
+};
+var faSynagogue = {
+  prefix: 'fas',
+  iconName: 'synagogue',
+  icon: [640, 512, [], "f69b", "M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"]
+};
+var faSync = {
+  prefix: 'fas',
+  iconName: 'sync',
+  icon: [512, 512, [], "f021", "M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"]
+};
+var faSyncAlt = {
+  prefix: 'fas',
+  iconName: 'sync-alt',
+  icon: [512, 512, [], "f2f1", "M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]
+};
+var faSyringe = {
+  prefix: 'fas',
+  iconName: 'syringe',
+  icon: [512, 512, [], "f48e", "M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"]
+};
+var faTable = {
+  prefix: 'fas',
+  iconName: 'table',
+  icon: [512, 512, [], "f0ce", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"]
+};
+var faTableTennis = {
+  prefix: 'fas',
+  iconName: 'table-tennis',
+  icon: [512, 512, [], "f45d", "M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"]
+};
+var faTablet = {
+  prefix: 'fas',
+  iconName: 'tablet',
+  icon: [448, 512, [], "f10a", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+};
+var faTabletAlt = {
+  prefix: 'fas',
+  iconName: 'tablet-alt',
+  icon: [448, 512, [], "f3fa", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"]
+};
+var faTablets = {
+  prefix: 'fas',
+  iconName: 'tablets',
+  icon: [640, 512, [], "f490", "M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"]
+};
+var faTachometerAlt = {
+  prefix: 'fas',
+  iconName: 'tachometer-alt',
+  icon: [576, 512, [], "f3fd", "M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faTag = {
+  prefix: 'fas',
+  iconName: 'tag',
+  icon: [512, 512, [], "f02b", "M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]
+};
+var faTags = {
+  prefix: 'fas',
+  iconName: 'tags',
+  icon: [640, 512, [], "f02c", "M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"]
+};
+var faTape = {
+  prefix: 'fas',
+  iconName: 'tape',
+  icon: [640, 512, [], "f4db", "M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"]
+};
+var faTasks = {
+  prefix: 'fas',
+  iconName: 'tasks',
+  icon: [512, 512, [], "f0ae", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faTaxi = {
+  prefix: 'fas',
+  iconName: 'taxi',
+  icon: [512, 512, [], "f1ba", "M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faTeeth = {
+  prefix: 'fas',
+  iconName: 'teeth',
+  icon: [640, 512, [], "f62e", "M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"]
+};
+var faTeethOpen = {
+  prefix: 'fas',
+  iconName: 'teeth-open',
+  icon: [640, 512, [], "f62f", "M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"]
+};
+var faTemperatureHigh = {
+  prefix: 'fas',
+  iconName: 'temperature-high',
+  icon: [512, 512, [], "f769", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]
+};
+var faTemperatureLow = {
+  prefix: 'fas',
+  iconName: 'temperature-low',
+  icon: [512, 512, [], "f76b", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]
+};
+var faTenge = {
+  prefix: 'fas',
+  iconName: 'tenge',
+  icon: [384, 512, [], "f7d7", "M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"]
+};
+var faTerminal = {
+  prefix: 'fas',
+  iconName: 'terminal',
+  icon: [640, 512, [], "f120", "M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"]
+};
+var faTextHeight = {
+  prefix: 'fas',
+  iconName: 'text-height',
+  icon: [576, 512, [], "f034", "M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"]
+};
+var faTextWidth = {
+  prefix: 'fas',
+  iconName: 'text-width',
+  icon: [448, 512, [], "f035", "M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"]
+};
+var faTh = {
+  prefix: 'fas',
+  iconName: 'th',
+  icon: [512, 512, [], "f00a", "M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]
+};
+var faThLarge = {
+  prefix: 'fas',
+  iconName: 'th-large',
+  icon: [512, 512, [], "f009", "M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"]
+};
+var faThList = {
+  prefix: 'fas',
+  iconName: 'th-list',
+  icon: [512, 512, [], "f00b", "M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]
+};
+var faTheaterMasks = {
+  prefix: 'fas',
+  iconName: 'theater-masks',
+  icon: [640, 512, [], "f630", "M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"]
+};
+var faThermometer = {
+  prefix: 'fas',
+  iconName: 'thermometer',
+  icon: [512, 512, [], "f491", "M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"]
+};
+var faThermometerEmpty = {
+  prefix: 'fas',
+  iconName: 'thermometer-empty',
+  icon: [256, 512, [], "f2cb", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+};
+var faThermometerFull = {
+  prefix: 'fas',
+  iconName: 'thermometer-full',
+  icon: [256, 512, [], "f2c7", "M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"]
+};
+var faThermometerHalf = {
+  prefix: 'fas',
+  iconName: 'thermometer-half',
+  icon: [256, 512, [], "f2c9", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+};
+var faThermometerQuarter = {
+  prefix: 'fas',
+  iconName: 'thermometer-quarter',
+  icon: [256, 512, [], "f2ca", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+};
+var faThermometerThreeQuarters = {
+  prefix: 'fas',
+  iconName: 'thermometer-three-quarters',
+  icon: [256, 512, [], "f2c8", "M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+};
+var faThumbsDown = {
+  prefix: 'fas',
+  iconName: 'thumbs-down',
+  icon: [512, 512, [], "f165", "M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"]
+};
+var faThumbsUp = {
+  prefix: 'fas',
+  iconName: 'thumbs-up',
+  icon: [512, 512, [], "f164", "M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"]
+};
+var faThumbtack = {
+  prefix: 'fas',
+  iconName: 'thumbtack',
+  icon: [384, 512, [], "f08d", "M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"]
+};
+var faTicketAlt = {
+  prefix: 'fas',
+  iconName: 'ticket-alt',
+  icon: [576, 512, [], "f3ff", "M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"]
+};
+var faTimes = {
+  prefix: 'fas',
+  iconName: 'times',
+  icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]
+};
+var faTimesCircle = {
+  prefix: 'fas',
+  iconName: 'times-circle',
+  icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]
+};
+var faTint = {
+  prefix: 'fas',
+  iconName: 'tint',
+  icon: [352, 512, [], "f043", "M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]
+};
+var faTintSlash = {
+  prefix: 'fas',
+  iconName: 'tint-slash',
+  icon: [640, 512, [], "f5c7", "M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"]
+};
+var faTired = {
+  prefix: 'fas',
+  iconName: 'tired',
+  icon: [496, 512, [], "f5c8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"]
+};
+var faToggleOff = {
+  prefix: 'fas',
+  iconName: 'toggle-off',
+  icon: [576, 512, [], "f204", "M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"]
+};
+var faToggleOn = {
+  prefix: 'fas',
+  iconName: 'toggle-on',
+  icon: [576, 512, [], "f205", "M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"]
+};
+var faToilet = {
+  prefix: 'fas',
+  iconName: 'toilet',
+  icon: [384, 512, [], "f7d8", "M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"]
+};
+var faToiletPaper = {
+  prefix: 'fas',
+  iconName: 'toilet-paper',
+  icon: [576, 512, [], "f71e", "M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"]
+};
+var faToiletPaperSlash = {
+  prefix: 'fas',
+  iconName: 'toilet-paper-slash',
+  icon: [640, 512, [], "e072", "M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"]
+};
+var faToolbox = {
+  prefix: 'fas',
+  iconName: 'toolbox',
+  icon: [512, 512, [], "f552", "M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"]
+};
+var faTools = {
+  prefix: 'fas',
+  iconName: 'tools',
+  icon: [512, 512, [], "f7d9", "M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"]
+};
+var faTooth = {
+  prefix: 'fas',
+  iconName: 'tooth',
+  icon: [448, 512, [], "f5c9", "M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"]
+};
+var faTorah = {
+  prefix: 'fas',
+  iconName: 'torah',
+  icon: [640, 512, [], "f6a0", "M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"]
+};
+var faToriiGate = {
+  prefix: 'fas',
+  iconName: 'torii-gate',
+  icon: [512, 512, [], "f6a1", "M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"]
+};
+var faTractor = {
+  prefix: 'fas',
+  iconName: 'tractor',
+  icon: [640, 512, [], "f722", "M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"]
+};
+var faTrademark = {
+  prefix: 'fas',
+  iconName: 'trademark',
+  icon: [640, 512, [], "f25c", "M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"]
+};
+var faTrafficLight = {
+  prefix: 'fas',
+  iconName: 'traffic-light',
+  icon: [384, 512, [], "f637", "M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]
+};
+var faTrailer = {
+  prefix: 'fas',
+  iconName: 'trailer',
+  icon: [640, 512, [], "e041", "M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"]
+};
+var faTrain = {
+  prefix: 'fas',
+  iconName: 'train',
+  icon: [448, 512, [], "f238", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"]
+};
+var faTram = {
+  prefix: 'fas',
+  iconName: 'tram',
+  icon: [512, 512, [], "f7da", "M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]
+};
+var faTransgender = {
+  prefix: 'fas',
+  iconName: 'transgender',
+  icon: [384, 512, [], "f224", "M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faTransgenderAlt = {
+  prefix: 'fas',
+  iconName: 'transgender-alt',
+  icon: [480, 512, [], "f225", "M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faTrash = {
+  prefix: 'fas',
+  iconName: 'trash',
+  icon: [448, 512, [], "f1f8", "M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]
+};
+var faTrashAlt = {
+  prefix: 'fas',
+  iconName: 'trash-alt',
+  icon: [448, 512, [], "f2ed", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faTrashRestore = {
+  prefix: 'fas',
+  iconName: 'trash-restore',
+  icon: [448, 512, [], "f829", "M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faTrashRestoreAlt = {
+  prefix: 'fas',
+  iconName: 'trash-restore-alt',
+  icon: [448, 512, [], "f82a", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+};
+var faTree = {
+  prefix: 'fas',
+  iconName: 'tree',
+  icon: [384, 512, [], "f1bb", "M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"]
+};
+var faTrophy = {
+  prefix: 'fas',
+  iconName: 'trophy',
+  icon: [576, 512, [], "f091", "M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"]
+};
+var faTruck = {
+  prefix: 'fas',
+  iconName: 'truck',
+  icon: [640, 512, [], "f0d1", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+};
+var faTruckLoading = {
+  prefix: 'fas',
+  iconName: 'truck-loading',
+  icon: [640, 512, [], "f4de", "M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+};
+var faTruckMonster = {
+  prefix: 'fas',
+  iconName: 'truck-monster',
+  icon: [640, 512, [], "f63b", "M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]
+};
+var faTruckMoving = {
+  prefix: 'fas',
+  iconName: 'truck-moving',
+  icon: [640, 512, [], "f4df", "M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"]
+};
+var faTruckPickup = {
+  prefix: 'fas',
+  iconName: 'truck-pickup',
+  icon: [640, 512, [], "f63c", "M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]
+};
+var faTshirt = {
+  prefix: 'fas',
+  iconName: 'tshirt',
+  icon: [640, 512, [], "f553", "M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"]
+};
+var faTty = {
+  prefix: 'fas',
+  iconName: 'tty',
+  icon: [512, 512, [], "f1e4", "M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]
+};
+var faTv = {
+  prefix: 'fas',
+  iconName: 'tv',
+  icon: [640, 512, [], "f26c", "M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"]
+};
+var faUmbrella = {
+  prefix: 'fas',
+  iconName: 'umbrella',
+  icon: [576, 512, [], "f0e9", "M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"]
+};
+var faUmbrellaBeach = {
+  prefix: 'fas',
+  iconName: 'umbrella-beach',
+  icon: [640, 512, [], "f5ca", "M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"]
+};
+var faUnderline = {
+  prefix: 'fas',
+  iconName: 'underline',
+  icon: [448, 512, [], "f0cd", "M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+};
+var faUndo = {
+  prefix: 'fas',
+  iconName: 'undo',
+  icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]
+};
+var faUndoAlt = {
+  prefix: 'fas',
+  iconName: 'undo-alt',
+  icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]
+};
+var faUniversalAccess = {
+  prefix: 'fas',
+  iconName: 'universal-access',
+  icon: [512, 512, [], "f29a", "M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"]
+};
+var faUniversity = {
+  prefix: 'fas',
+  iconName: 'university',
+  icon: [512, 512, [], "f19c", "M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"]
+};
+var faUnlink = {
+  prefix: 'fas',
+  iconName: 'unlink',
+  icon: [512, 512, [], "f127", "M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"]
+};
+var faUnlock = {
+  prefix: 'fas',
+  iconName: 'unlock',
+  icon: [448, 512, [], "f09c", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]
+};
+var faUnlockAlt = {
+  prefix: 'fas',
+  iconName: 'unlock-alt',
+  icon: [448, 512, [], "f13e", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"]
+};
+var faUpload = {
+  prefix: 'fas',
+  iconName: 'upload',
+  icon: [512, 512, [], "f093", "M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]
+};
+var faUser = {
+  prefix: 'fas',
+  iconName: 'user',
+  icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+};
+var faUserAlt = {
+  prefix: 'fas',
+  iconName: 'user-alt',
+  icon: [512, 512, [], "f406", "M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"]
+};
+var faUserAltSlash = {
+  prefix: 'fas',
+  iconName: 'user-alt-slash',
+  icon: [640, 512, [], "f4fa", "M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"]
+};
+var faUserAstronaut = {
+  prefix: 'fas',
+  iconName: 'user-astronaut',
+  icon: [448, 512, [], "f4fb", "M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"]
+};
+var faUserCheck = {
+  prefix: 'fas',
+  iconName: 'user-check',
+  icon: [640, 512, [], "f4fc", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"]
+};
+var faUserCircle = {
+  prefix: 'fas',
+  iconName: 'user-circle',
+  icon: [496, 512, [], "f2bd", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"]
+};
+var faUserClock = {
+  prefix: 'fas',
+  iconName: 'user-clock',
+  icon: [640, 512, [], "f4fd", "M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"]
+};
+var faUserCog = {
+  prefix: 'fas',
+  iconName: 'user-cog',
+  icon: [640, 512, [], "f4fe", "M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"]
+};
+var faUserEdit = {
+  prefix: 'fas',
+  iconName: 'user-edit',
+  icon: [640, 512, [], "f4ff", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]
+};
+var faUserFriends = {
+  prefix: 'fas',
+  iconName: 'user-friends',
+  icon: [640, 512, [], "f500", "M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]
+};
+var faUserGraduate = {
+  prefix: 'fas',
+  iconName: 'user-graduate',
+  icon: [448, 512, [], "f501", "M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"]
+};
+var faUserInjured = {
+  prefix: 'fas',
+  iconName: 'user-injured',
+  icon: [448, 512, [], "f728", "M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"]
+};
+var faUserLock = {
+  prefix: 'fas',
+  iconName: 'user-lock',
+  icon: [640, 512, [], "f502", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]
+};
+var faUserMd = {
+  prefix: 'fas',
+  iconName: 'user-md',
+  icon: [448, 512, [], "f0f0", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"]
+};
+var faUserMinus = {
+  prefix: 'fas',
+  iconName: 'user-minus',
+  icon: [640, 512, [], "f503", "M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+};
+var faUserNinja = {
+  prefix: 'fas',
+  iconName: 'user-ninja',
+  icon: [448, 512, [], "f504", "M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"]
+};
+var faUserNurse = {
+  prefix: 'fas',
+  iconName: 'user-nurse',
+  icon: [448, 512, [], "f82f", "M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"]
+};
+var faUserPlus = {
+  prefix: 'fas',
+  iconName: 'user-plus',
+  icon: [640, 512, [], "f234", "M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+};
+var faUserSecret = {
+  prefix: 'fas',
+  iconName: 'user-secret',
+  icon: [448, 512, [], "f21b", "M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"]
+};
+var faUserShield = {
+  prefix: 'fas',
+  iconName: 'user-shield',
+  icon: [640, 512, [], "f505", "M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"]
+};
+var faUserSlash = {
+  prefix: 'fas',
+  iconName: 'user-slash',
+  icon: [640, 512, [], "f506", "M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"]
+};
+var faUserTag = {
+  prefix: 'fas',
+  iconName: 'user-tag',
+  icon: [640, 512, [], "f507", "M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"]
+};
+var faUserTie = {
+  prefix: 'fas',
+  iconName: 'user-tie',
+  icon: [448, 512, [], "f508", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"]
+};
+var faUserTimes = {
+  prefix: 'fas',
+  iconName: 'user-times',
+  icon: [640, 512, [], "f235", "M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+};
+var faUsers = {
+  prefix: 'fas',
+  iconName: 'users',
+  icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
+};
+var faUsersCog = {
+  prefix: 'fas',
+  iconName: 'users-cog',
+  icon: [640, 512, [], "f509", "M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
+};
+var faUsersSlash = {
+  prefix: 'fas',
+  iconName: 'users-slash',
+  icon: [640, 512, [], "e073", "M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"]
+};
+var faUtensilSpoon = {
+  prefix: 'fas',
+  iconName: 'utensil-spoon',
+  icon: [512, 512, [], "f2e5", "M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"]
+};
+var faUtensils = {
+  prefix: 'fas',
+  iconName: 'utensils',
+  icon: [416, 512, [], "f2e7", "M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"]
+};
+var faVectorSquare = {
+  prefix: 'fas',
+  iconName: 'vector-square',
+  icon: [512, 512, [], "f5cb", "M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"]
+};
+var faVenus = {
+  prefix: 'fas',
+  iconName: 'venus',
+  icon: [288, 512, [], "f221", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]
+};
+var faVenusDouble = {
+  prefix: 'fas',
+  iconName: 'venus-double',
+  icon: [512, 512, [], "f226", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"]
+};
+var faVenusMars = {
+  prefix: 'fas',
+  iconName: 'venus-mars',
+  icon: [576, 512, [], "f228", "M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+};
+var faVest = {
+  prefix: 'fas',
+  iconName: 'vest',
+  icon: [448, 512, [], "e085", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"]
+};
+var faVestPatches = {
+  prefix: 'fas',
+  iconName: 'vest-patches',
+  icon: [448, 512, [], "e086", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"]
+};
+var faVial = {
+  prefix: 'fas',
+  iconName: 'vial',
+  icon: [480, 512, [], "f492", "M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"]
+};
+var faVials = {
+  prefix: 'fas',
+  iconName: 'vials',
+  icon: [640, 512, [], "f493", "M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"]
+};
+var faVideo = {
+  prefix: 'fas',
+  iconName: 'video',
+  icon: [576, 512, [], "f03d", "M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"]
+};
+var faVideoSlash = {
+  prefix: 'fas',
+  iconName: 'video-slash',
+  icon: [640, 512, [], "f4e2", "M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"]
+};
+var faVihara = {
+  prefix: 'fas',
+  iconName: 'vihara',
+  icon: [640, 512, [], "f6a7", "M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"]
+};
+var faVirus = {
+  prefix: 'fas',
+  iconName: 'virus',
+  icon: [512, 512, [], "e074", "M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"]
+};
+var faVirusSlash = {
+  prefix: 'fas',
+  iconName: 'virus-slash',
+  icon: [640, 512, [], "e075", "M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"]
+};
+var faViruses = {
+  prefix: 'fas',
+  iconName: 'viruses',
+  icon: [640, 512, [], "e076", "M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"]
+};
+var faVoicemail = {
+  prefix: 'fas',
+  iconName: 'voicemail',
+  icon: [640, 512, [], "f897", "M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"]
+};
+var faVolleyballBall = {
+  prefix: 'fas',
+  iconName: 'volleyball-ball',
+  icon: [512, 512, [], "f45f", "M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"]
+};
+var faVolumeDown = {
+  prefix: 'fas',
+  iconName: 'volume-down',
+  icon: [384, 512, [], "f027", "M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"]
+};
+var faVolumeMute = {
+  prefix: 'fas',
+  iconName: 'volume-mute',
+  icon: [512, 512, [], "f6a9", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"]
+};
+var faVolumeOff = {
+  prefix: 'fas',
+  iconName: 'volume-off',
+  icon: [256, 512, [], "f026", "M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"]
+};
+var faVolumeUp = {
+  prefix: 'fas',
+  iconName: 'volume-up',
+  icon: [576, 512, [], "f028", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"]
+};
+var faVoteYea = {
+  prefix: 'fas',
+  iconName: 'vote-yea',
+  icon: [640, 512, [], "f772", "M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"]
+};
+var faVrCardboard = {
+  prefix: 'fas',
+  iconName: 'vr-cardboard',
+  icon: [640, 512, [], "f729", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"]
+};
+var faWalking = {
+  prefix: 'fas',
+  iconName: 'walking',
+  icon: [320, 512, [], "f554", "M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"]
+};
+var faWallet = {
+  prefix: 'fas',
+  iconName: 'wallet',
+  icon: [512, 512, [], "f555", "M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+};
+var faWarehouse = {
+  prefix: 'fas',
+  iconName: 'warehouse',
+  icon: [640, 512, [], "f494", "M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"]
+};
+var faWater = {
+  prefix: 'fas',
+  iconName: 'water',
+  icon: [576, 512, [], "f773", "M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"]
+};
+var faWaveSquare = {
+  prefix: 'fas',
+  iconName: 'wave-square',
+  icon: [640, 512, [], "f83e", "M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"]
+};
+var faWeight = {
+  prefix: 'fas',
+  iconName: 'weight',
+  icon: [512, 512, [], "f496", "M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"]
+};
+var faWeightHanging = {
+  prefix: 'fas',
+  iconName: 'weight-hanging',
+  icon: [512, 512, [], "f5cd", "M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]
+};
+var faWheelchair = {
+  prefix: 'fas',
+  iconName: 'wheelchair',
+  icon: [512, 512, [], "f193", "M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"]
+};
+var faWifi = {
+  prefix: 'fas',
+  iconName: 'wifi',
+  icon: [640, 512, [], "f1eb", "M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"]
+};
+var faWind = {
+  prefix: 'fas',
+  iconName: 'wind',
+  icon: [512, 512, [], "f72e", "M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"]
+};
+var faWindowClose = {
+  prefix: 'fas',
+  iconName: 'window-close',
+  icon: [512, 512, [], "f410", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"]
+};
+var faWindowMaximize = {
+  prefix: 'fas',
+  iconName: 'window-maximize',
+  icon: [512, 512, [], "f2d0", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"]
+};
+var faWindowMinimize = {
+  prefix: 'fas',
+  iconName: 'window-minimize',
+  icon: [512, 512, [], "f2d1", "M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"]
+};
+var faWindowRestore = {
+  prefix: 'fas',
+  iconName: 'window-restore',
+  icon: [512, 512, [], "f2d2", "M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"]
+};
+var faWineBottle = {
+  prefix: 'fas',
+  iconName: 'wine-bottle',
+  icon: [512, 512, [], "f72f", "M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"]
+};
+var faWineGlass = {
+  prefix: 'fas',
+  iconName: 'wine-glass',
+  icon: [288, 512, [], "f4e3", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"]
+};
+var faWineGlassAlt = {
+  prefix: 'fas',
+  iconName: 'wine-glass-alt',
+  icon: [288, 512, [], "f5ce", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"]
+};
+var faWonSign = {
+  prefix: 'fas',
+  iconName: 'won-sign',
+  icon: [576, 512, [], "f159", "M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"]
+};
+var faWrench = {
+  prefix: 'fas',
+  iconName: 'wrench',
+  icon: [512, 512, [], "f0ad", "M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+};
+var faXRay = {
+  prefix: 'fas',
+  iconName: 'x-ray',
+  icon: [640, 512, [], "f497", "M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"]
+};
+var faYenSign = {
+  prefix: 'fas',
+  iconName: 'yen-sign',
+  icon: [384, 512, [], "f157", "M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"]
+};
+var faYinYang = {
+  prefix: 'fas',
+  iconName: 'yin-yang',
+  icon: [496, 512, [], "f6ad", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+};
+var _iconsCache = {
+  faAd: faAd,
+  faAddressBook: faAddressBook,
+  faAddressCard: faAddressCard,
+  faAdjust: faAdjust,
+  faAirFreshener: faAirFreshener,
+  faAlignCenter: faAlignCenter,
+  faAlignJustify: faAlignJustify,
+  faAlignLeft: faAlignLeft,
+  faAlignRight: faAlignRight,
+  faAllergies: faAllergies,
+  faAmbulance: faAmbulance,
+  faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,
+  faAnchor: faAnchor,
+  faAngleDoubleDown: faAngleDoubleDown,
+  faAngleDoubleLeft: faAngleDoubleLeft,
+  faAngleDoubleRight: faAngleDoubleRight,
+  faAngleDoubleUp: faAngleDoubleUp,
+  faAngleDown: faAngleDown,
+  faAngleLeft: faAngleLeft,
+  faAngleRight: faAngleRight,
+  faAngleUp: faAngleUp,
+  faAngry: faAngry,
+  faAnkh: faAnkh,
+  faAppleAlt: faAppleAlt,
+  faArchive: faArchive,
+  faArchway: faArchway,
+  faArrowAltCircleDown: faArrowAltCircleDown,
+  faArrowAltCircleLeft: faArrowAltCircleLeft,
+  faArrowAltCircleRight: faArrowAltCircleRight,
+  faArrowAltCircleUp: faArrowAltCircleUp,
+  faArrowCircleDown: faArrowCircleDown,
+  faArrowCircleLeft: faArrowCircleLeft,
+  faArrowCircleRight: faArrowCircleRight,
+  faArrowCircleUp: faArrowCircleUp,
+  faArrowDown: faArrowDown,
+  faArrowLeft: faArrowLeft,
+  faArrowRight: faArrowRight,
+  faArrowUp: faArrowUp,
+  faArrowsAlt: faArrowsAlt,
+  faArrowsAltH: faArrowsAltH,
+  faArrowsAltV: faArrowsAltV,
+  faAssistiveListeningSystems: faAssistiveListeningSystems,
+  faAsterisk: faAsterisk,
+  faAt: faAt,
+  faAtlas: faAtlas,
+  faAtom: faAtom,
+  faAudioDescription: faAudioDescription,
+  faAward: faAward,
+  faBaby: faBaby,
+  faBabyCarriage: faBabyCarriage,
+  faBackspace: faBackspace,
+  faBackward: faBackward,
+  faBacon: faBacon,
+  faBacteria: faBacteria,
+  faBacterium: faBacterium,
+  faBahai: faBahai,
+  faBalanceScale: faBalanceScale,
+  faBalanceScaleLeft: faBalanceScaleLeft,
+  faBalanceScaleRight: faBalanceScaleRight,
+  faBan: faBan,
+  faBandAid: faBandAid,
+  faBarcode: faBarcode,
+  faBars: faBars,
+  faBaseballBall: faBaseballBall,
+  faBasketballBall: faBasketballBall,
+  faBath: faBath,
+  faBatteryEmpty: faBatteryEmpty,
+  faBatteryFull: faBatteryFull,
+  faBatteryHalf: faBatteryHalf,
+  faBatteryQuarter: faBatteryQuarter,
+  faBatteryThreeQuarters: faBatteryThreeQuarters,
+  faBed: faBed,
+  faBeer: faBeer,
+  faBell: faBell,
+  faBellSlash: faBellSlash,
+  faBezierCurve: faBezierCurve,
+  faBible: faBible,
+  faBicycle: faBicycle,
+  faBiking: faBiking,
+  faBinoculars: faBinoculars,
+  faBiohazard: faBiohazard,
+  faBirthdayCake: faBirthdayCake,
+  faBlender: faBlender,
+  faBlenderPhone: faBlenderPhone,
+  faBlind: faBlind,
+  faBlog: faBlog,
+  faBold: faBold,
+  faBolt: faBolt,
+  faBomb: faBomb,
+  faBone: faBone,
+  faBong: faBong,
+  faBook: faBook,
+  faBookDead: faBookDead,
+  faBookMedical: faBookMedical,
+  faBookOpen: faBookOpen,
+  faBookReader: faBookReader,
+  faBookmark: faBookmark,
+  faBorderAll: faBorderAll,
+  faBorderNone: faBorderNone,
+  faBorderStyle: faBorderStyle,
+  faBowlingBall: faBowlingBall,
+  faBox: faBox,
+  faBoxOpen: faBoxOpen,
+  faBoxTissue: faBoxTissue,
+  faBoxes: faBoxes,
+  faBraille: faBraille,
+  faBrain: faBrain,
+  faBreadSlice: faBreadSlice,
+  faBriefcase: faBriefcase,
+  faBriefcaseMedical: faBriefcaseMedical,
+  faBroadcastTower: faBroadcastTower,
+  faBroom: faBroom,
+  faBrush: faBrush,
+  faBug: faBug,
+  faBuilding: faBuilding,
+  faBullhorn: faBullhorn,
+  faBullseye: faBullseye,
+  faBurn: faBurn,
+  faBus: faBus,
+  faBusAlt: faBusAlt,
+  faBusinessTime: faBusinessTime,
+  faCalculator: faCalculator,
+  faCalendar: faCalendar,
+  faCalendarAlt: faCalendarAlt,
+  faCalendarCheck: faCalendarCheck,
+  faCalendarDay: faCalendarDay,
+  faCalendarMinus: faCalendarMinus,
+  faCalendarPlus: faCalendarPlus,
+  faCalendarTimes: faCalendarTimes,
+  faCalendarWeek: faCalendarWeek,
+  faCamera: faCamera,
+  faCameraRetro: faCameraRetro,
+  faCampground: faCampground,
+  faCandyCane: faCandyCane,
+  faCannabis: faCannabis,
+  faCapsules: faCapsules,
+  faCar: faCar,
+  faCarAlt: faCarAlt,
+  faCarBattery: faCarBattery,
+  faCarCrash: faCarCrash,
+  faCarSide: faCarSide,
+  faCaravan: faCaravan,
+  faCaretDown: faCaretDown,
+  faCaretLeft: faCaretLeft,
+  faCaretRight: faCaretRight,
+  faCaretSquareDown: faCaretSquareDown,
+  faCaretSquareLeft: faCaretSquareLeft,
+  faCaretSquareRight: faCaretSquareRight,
+  faCaretSquareUp: faCaretSquareUp,
+  faCaretUp: faCaretUp,
+  faCarrot: faCarrot,
+  faCartArrowDown: faCartArrowDown,
+  faCartPlus: faCartPlus,
+  faCashRegister: faCashRegister,
+  faCat: faCat,
+  faCertificate: faCertificate,
+  faChair: faChair,
+  faChalkboard: faChalkboard,
+  faChalkboardTeacher: faChalkboardTeacher,
+  faChargingStation: faChargingStation,
+  faChartArea: faChartArea,
+  faChartBar: faChartBar,
+  faChartLine: faChartLine,
+  faChartPie: faChartPie,
+  faCheck: faCheck,
+  faCheckCircle: faCheckCircle,
+  faCheckDouble: faCheckDouble,
+  faCheckSquare: faCheckSquare,
+  faCheese: faCheese,
+  faChess: faChess,
+  faChessBishop: faChessBishop,
+  faChessBoard: faChessBoard,
+  faChessKing: faChessKing,
+  faChessKnight: faChessKnight,
+  faChessPawn: faChessPawn,
+  faChessQueen: faChessQueen,
+  faChessRook: faChessRook,
+  faChevronCircleDown: faChevronCircleDown,
+  faChevronCircleLeft: faChevronCircleLeft,
+  faChevronCircleRight: faChevronCircleRight,
+  faChevronCircleUp: faChevronCircleUp,
+  faChevronDown: faChevronDown,
+  faChevronLeft: faChevronLeft,
+  faChevronRight: faChevronRight,
+  faChevronUp: faChevronUp,
+  faChild: faChild,
+  faChurch: faChurch,
+  faCircle: faCircle,
+  faCircleNotch: faCircleNotch,
+  faCity: faCity,
+  faClinicMedical: faClinicMedical,
+  faClipboard: faClipboard,
+  faClipboardCheck: faClipboardCheck,
+  faClipboardList: faClipboardList,
+  faClock: faClock,
+  faClone: faClone,
+  faClosedCaptioning: faClosedCaptioning,
+  faCloud: faCloud,
+  faCloudDownloadAlt: faCloudDownloadAlt,
+  faCloudMeatball: faCloudMeatball,
+  faCloudMoon: faCloudMoon,
+  faCloudMoonRain: faCloudMoonRain,
+  faCloudRain: faCloudRain,
+  faCloudShowersHeavy: faCloudShowersHeavy,
+  faCloudSun: faCloudSun,
+  faCloudSunRain: faCloudSunRain,
+  faCloudUploadAlt: faCloudUploadAlt,
+  faCocktail: faCocktail,
+  faCode: faCode,
+  faCodeBranch: faCodeBranch,
+  faCoffee: faCoffee,
+  faCog: faCog,
+  faCogs: faCogs,
+  faCoins: faCoins,
+  faColumns: faColumns,
+  faComment: faComment,
+  faCommentAlt: faCommentAlt,
+  faCommentDollar: faCommentDollar,
+  faCommentDots: faCommentDots,
+  faCommentMedical: faCommentMedical,
+  faCommentSlash: faCommentSlash,
+  faComments: faComments,
+  faCommentsDollar: faCommentsDollar,
+  faCompactDisc: faCompactDisc,
+  faCompass: faCompass,
+  faCompress: faCompress,
+  faCompressAlt: faCompressAlt,
+  faCompressArrowsAlt: faCompressArrowsAlt,
+  faConciergeBell: faConciergeBell,
+  faCookie: faCookie,
+  faCookieBite: faCookieBite,
+  faCopy: faCopy,
+  faCopyright: faCopyright,
+  faCouch: faCouch,
+  faCreditCard: faCreditCard,
+  faCrop: faCrop,
+  faCropAlt: faCropAlt,
+  faCross: faCross,
+  faCrosshairs: faCrosshairs,
+  faCrow: faCrow,
+  faCrown: faCrown,
+  faCrutch: faCrutch,
+  faCube: faCube,
+  faCubes: faCubes,
+  faCut: faCut,
+  faDatabase: faDatabase,
+  faDeaf: faDeaf,
+  faDemocrat: faDemocrat,
+  faDesktop: faDesktop,
+  faDharmachakra: faDharmachakra,
+  faDiagnoses: faDiagnoses,
+  faDice: faDice,
+  faDiceD20: faDiceD20,
+  faDiceD6: faDiceD6,
+  faDiceFive: faDiceFive,
+  faDiceFour: faDiceFour,
+  faDiceOne: faDiceOne,
+  faDiceSix: faDiceSix,
+  faDiceThree: faDiceThree,
+  faDiceTwo: faDiceTwo,
+  faDigitalTachograph: faDigitalTachograph,
+  faDirections: faDirections,
+  faDisease: faDisease,
+  faDivide: faDivide,
+  faDizzy: faDizzy,
+  faDna: faDna,
+  faDog: faDog,
+  faDollarSign: faDollarSign,
+  faDolly: faDolly,
+  faDollyFlatbed: faDollyFlatbed,
+  faDonate: faDonate,
+  faDoorClosed: faDoorClosed,
+  faDoorOpen: faDoorOpen,
+  faDotCircle: faDotCircle,
+  faDove: faDove,
+  faDownload: faDownload,
+  faDraftingCompass: faDraftingCompass,
+  faDragon: faDragon,
+  faDrawPolygon: faDrawPolygon,
+  faDrum: faDrum,
+  faDrumSteelpan: faDrumSteelpan,
+  faDrumstickBite: faDrumstickBite,
+  faDumbbell: faDumbbell,
+  faDumpster: faDumpster,
+  faDumpsterFire: faDumpsterFire,
+  faDungeon: faDungeon,
+  faEdit: faEdit,
+  faEgg: faEgg,
+  faEject: faEject,
+  faEllipsisH: faEllipsisH,
+  faEllipsisV: faEllipsisV,
+  faEnvelope: faEnvelope,
+  faEnvelopeOpen: faEnvelopeOpen,
+  faEnvelopeOpenText: faEnvelopeOpenText,
+  faEnvelopeSquare: faEnvelopeSquare,
+  faEquals: faEquals,
+  faEraser: faEraser,
+  faEthernet: faEthernet,
+  faEuroSign: faEuroSign,
+  faExchangeAlt: faExchangeAlt,
+  faExclamation: faExclamation,
+  faExclamationCircle: faExclamationCircle,
+  faExclamationTriangle: faExclamationTriangle,
+  faExpand: faExpand,
+  faExpandAlt: faExpandAlt,
+  faExpandArrowsAlt: faExpandArrowsAlt,
+  faExternalLinkAlt: faExternalLinkAlt,
+  faExternalLinkSquareAlt: faExternalLinkSquareAlt,
+  faEye: faEye,
+  faEyeDropper: faEyeDropper,
+  faEyeSlash: faEyeSlash,
+  faFan: faFan,
+  faFastBackward: faFastBackward,
+  faFastForward: faFastForward,
+  faFaucet: faFaucet,
+  faFax: faFax,
+  faFeather: faFeather,
+  faFeatherAlt: faFeatherAlt,
+  faFemale: faFemale,
+  faFighterJet: faFighterJet,
+  faFile: faFile,
+  faFileAlt: faFileAlt,
+  faFileArchive: faFileArchive,
+  faFileAudio: faFileAudio,
+  faFileCode: faFileCode,
+  faFileContract: faFileContract,
+  faFileCsv: faFileCsv,
+  faFileDownload: faFileDownload,
+  faFileExcel: faFileExcel,
+  faFileExport: faFileExport,
+  faFileImage: faFileImage,
+  faFileImport: faFileImport,
+  faFileInvoice: faFileInvoice,
+  faFileInvoiceDollar: faFileInvoiceDollar,
+  faFileMedical: faFileMedical,
+  faFileMedicalAlt: faFileMedicalAlt,
+  faFilePdf: faFilePdf,
+  faFilePowerpoint: faFilePowerpoint,
+  faFilePrescription: faFilePrescription,
+  faFileSignature: faFileSignature,
+  faFileUpload: faFileUpload,
+  faFileVideo: faFileVideo,
+  faFileWord: faFileWord,
+  faFill: faFill,
+  faFillDrip: faFillDrip,
+  faFilm: faFilm,
+  faFilter: faFilter,
+  faFingerprint: faFingerprint,
+  faFire: faFire,
+  faFireAlt: faFireAlt,
+  faFireExtinguisher: faFireExtinguisher,
+  faFirstAid: faFirstAid,
+  faFish: faFish,
+  faFistRaised: faFistRaised,
+  faFlag: faFlag,
+  faFlagCheckered: faFlagCheckered,
+  faFlagUsa: faFlagUsa,
+  faFlask: faFlask,
+  faFlushed: faFlushed,
+  faFolder: faFolder,
+  faFolderMinus: faFolderMinus,
+  faFolderOpen: faFolderOpen,
+  faFolderPlus: faFolderPlus,
+  faFont: faFont,
+  faFontAwesomeLogoFull: faFontAwesomeLogoFull,
+  faFootballBall: faFootballBall,
+  faForward: faForward,
+  faFrog: faFrog,
+  faFrown: faFrown,
+  faFrownOpen: faFrownOpen,
+  faFunnelDollar: faFunnelDollar,
+  faFutbol: faFutbol,
+  faGamepad: faGamepad,
+  faGasPump: faGasPump,
+  faGavel: faGavel,
+  faGem: faGem,
+  faGenderless: faGenderless,
+  faGhost: faGhost,
+  faGift: faGift,
+  faGifts: faGifts,
+  faGlassCheers: faGlassCheers,
+  faGlassMartini: faGlassMartini,
+  faGlassMartiniAlt: faGlassMartiniAlt,
+  faGlassWhiskey: faGlassWhiskey,
+  faGlasses: faGlasses,
+  faGlobe: faGlobe,
+  faGlobeAfrica: faGlobeAfrica,
+  faGlobeAmericas: faGlobeAmericas,
+  faGlobeAsia: faGlobeAsia,
+  faGlobeEurope: faGlobeEurope,
+  faGolfBall: faGolfBall,
+  faGopuram: faGopuram,
+  faGraduationCap: faGraduationCap,
+  faGreaterThan: faGreaterThan,
+  faGreaterThanEqual: faGreaterThanEqual,
+  faGrimace: faGrimace,
+  faGrin: faGrin,
+  faGrinAlt: faGrinAlt,
+  faGrinBeam: faGrinBeam,
+  faGrinBeamSweat: faGrinBeamSweat,
+  faGrinHearts: faGrinHearts,
+  faGrinSquint: faGrinSquint,
+  faGrinSquintTears: faGrinSquintTears,
+  faGrinStars: faGrinStars,
+  faGrinTears: faGrinTears,
+  faGrinTongue: faGrinTongue,
+  faGrinTongueSquint: faGrinTongueSquint,
+  faGrinTongueWink: faGrinTongueWink,
+  faGrinWink: faGrinWink,
+  faGripHorizontal: faGripHorizontal,
+  faGripLines: faGripLines,
+  faGripLinesVertical: faGripLinesVertical,
+  faGripVertical: faGripVertical,
+  faGuitar: faGuitar,
+  faHSquare: faHSquare,
+  faHamburger: faHamburger,
+  faHammer: faHammer,
+  faHamsa: faHamsa,
+  faHandHolding: faHandHolding,
+  faHandHoldingHeart: faHandHoldingHeart,
+  faHandHoldingMedical: faHandHoldingMedical,
+  faHandHoldingUsd: faHandHoldingUsd,
+  faHandHoldingWater: faHandHoldingWater,
+  faHandLizard: faHandLizard,
+  faHandMiddleFinger: faHandMiddleFinger,
+  faHandPaper: faHandPaper,
+  faHandPeace: faHandPeace,
+  faHandPointDown: faHandPointDown,
+  faHandPointLeft: faHandPointLeft,
+  faHandPointRight: faHandPointRight,
+  faHandPointUp: faHandPointUp,
+  faHandPointer: faHandPointer,
+  faHandRock: faHandRock,
+  faHandScissors: faHandScissors,
+  faHandSparkles: faHandSparkles,
+  faHandSpock: faHandSpock,
+  faHands: faHands,
+  faHandsHelping: faHandsHelping,
+  faHandsWash: faHandsWash,
+  faHandshake: faHandshake,
+  faHandshakeAltSlash: faHandshakeAltSlash,
+  faHandshakeSlash: faHandshakeSlash,
+  faHanukiah: faHanukiah,
+  faHardHat: faHardHat,
+  faHashtag: faHashtag,
+  faHatCowboy: faHatCowboy,
+  faHatCowboySide: faHatCowboySide,
+  faHatWizard: faHatWizard,
+  faHdd: faHdd,
+  faHeadSideCough: faHeadSideCough,
+  faHeadSideCoughSlash: faHeadSideCoughSlash,
+  faHeadSideMask: faHeadSideMask,
+  faHeadSideVirus: faHeadSideVirus,
+  faHeading: faHeading,
+  faHeadphones: faHeadphones,
+  faHeadphonesAlt: faHeadphonesAlt,
+  faHeadset: faHeadset,
+  faHeart: faHeart,
+  faHeartBroken: faHeartBroken,
+  faHeartbeat: faHeartbeat,
+  faHelicopter: faHelicopter,
+  faHighlighter: faHighlighter,
+  faHiking: faHiking,
+  faHippo: faHippo,
+  faHistory: faHistory,
+  faHockeyPuck: faHockeyPuck,
+  faHollyBerry: faHollyBerry,
+  faHome: faHome,
+  faHorse: faHorse,
+  faHorseHead: faHorseHead,
+  faHospital: faHospital,
+  faHospitalAlt: faHospitalAlt,
+  faHospitalSymbol: faHospitalSymbol,
+  faHospitalUser: faHospitalUser,
+  faHotTub: faHotTub,
+  faHotdog: faHotdog,
+  faHotel: faHotel,
+  faHourglass: faHourglass,
+  faHourglassEnd: faHourglassEnd,
+  faHourglassHalf: faHourglassHalf,
+  faHourglassStart: faHourglassStart,
+  faHouseDamage: faHouseDamage,
+  faHouseUser: faHouseUser,
+  faHryvnia: faHryvnia,
+  faICursor: faICursor,
+  faIceCream: faIceCream,
+  faIcicles: faIcicles,
+  faIcons: faIcons,
+  faIdBadge: faIdBadge,
+  faIdCard: faIdCard,
+  faIdCardAlt: faIdCardAlt,
+  faIgloo: faIgloo,
+  faImage: faImage,
+  faImages: faImages,
+  faInbox: faInbox,
+  faIndent: faIndent,
+  faIndustry: faIndustry,
+  faInfinity: faInfinity,
+  faInfo: faInfo,
+  faInfoCircle: faInfoCircle,
+  faItalic: faItalic,
+  faJedi: faJedi,
+  faJoint: faJoint,
+  faJournalWhills: faJournalWhills,
+  faKaaba: faKaaba,
+  faKey: faKey,
+  faKeyboard: faKeyboard,
+  faKhanda: faKhanda,
+  faKiss: faKiss,
+  faKissBeam: faKissBeam,
+  faKissWinkHeart: faKissWinkHeart,
+  faKiwiBird: faKiwiBird,
+  faLandmark: faLandmark,
+  faLanguage: faLanguage,
+  faLaptop: faLaptop,
+  faLaptopCode: faLaptopCode,
+  faLaptopHouse: faLaptopHouse,
+  faLaptopMedical: faLaptopMedical,
+  faLaugh: faLaugh,
+  faLaughBeam: faLaughBeam,
+  faLaughSquint: faLaughSquint,
+  faLaughWink: faLaughWink,
+  faLayerGroup: faLayerGroup,
+  faLeaf: faLeaf,
+  faLemon: faLemon,
+  faLessThan: faLessThan,
+  faLessThanEqual: faLessThanEqual,
+  faLevelDownAlt: faLevelDownAlt,
+  faLevelUpAlt: faLevelUpAlt,
+  faLifeRing: faLifeRing,
+  faLightbulb: faLightbulb,
+  faLink: faLink,
+  faLiraSign: faLiraSign,
+  faList: faList,
+  faListAlt: faListAlt,
+  faListOl: faListOl,
+  faListUl: faListUl,
+  faLocationArrow: faLocationArrow,
+  faLock: faLock,
+  faLockOpen: faLockOpen,
+  faLongArrowAltDown: faLongArrowAltDown,
+  faLongArrowAltLeft: faLongArrowAltLeft,
+  faLongArrowAltRight: faLongArrowAltRight,
+  faLongArrowAltUp: faLongArrowAltUp,
+  faLowVision: faLowVision,
+  faLuggageCart: faLuggageCart,
+  faLungs: faLungs,
+  faLungsVirus: faLungsVirus,
+  faMagic: faMagic,
+  faMagnet: faMagnet,
+  faMailBulk: faMailBulk,
+  faMale: faMale,
+  faMap: faMap,
+  faMapMarked: faMapMarked,
+  faMapMarkedAlt: faMapMarkedAlt,
+  faMapMarker: faMapMarker,
+  faMapMarkerAlt: faMapMarkerAlt,
+  faMapPin: faMapPin,
+  faMapSigns: faMapSigns,
+  faMarker: faMarker,
+  faMars: faMars,
+  faMarsDouble: faMarsDouble,
+  faMarsStroke: faMarsStroke,
+  faMarsStrokeH: faMarsStrokeH,
+  faMarsStrokeV: faMarsStrokeV,
+  faMask: faMask,
+  faMedal: faMedal,
+  faMedkit: faMedkit,
+  faMeh: faMeh,
+  faMehBlank: faMehBlank,
+  faMehRollingEyes: faMehRollingEyes,
+  faMemory: faMemory,
+  faMenorah: faMenorah,
+  faMercury: faMercury,
+  faMeteor: faMeteor,
+  faMicrochip: faMicrochip,
+  faMicrophone: faMicrophone,
+  faMicrophoneAlt: faMicrophoneAlt,
+  faMicrophoneAltSlash: faMicrophoneAltSlash,
+  faMicrophoneSlash: faMicrophoneSlash,
+  faMicroscope: faMicroscope,
+  faMinus: faMinus,
+  faMinusCircle: faMinusCircle,
+  faMinusSquare: faMinusSquare,
+  faMitten: faMitten,
+  faMobile: faMobile,
+  faMobileAlt: faMobileAlt,
+  faMoneyBill: faMoneyBill,
+  faMoneyBillAlt: faMoneyBillAlt,
+  faMoneyBillWave: faMoneyBillWave,
+  faMoneyBillWaveAlt: faMoneyBillWaveAlt,
+  faMoneyCheck: faMoneyCheck,
+  faMoneyCheckAlt: faMoneyCheckAlt,
+  faMonument: faMonument,
+  faMoon: faMoon,
+  faMortarPestle: faMortarPestle,
+  faMosque: faMosque,
+  faMotorcycle: faMotorcycle,
+  faMountain: faMountain,
+  faMouse: faMouse,
+  faMousePointer: faMousePointer,
+  faMugHot: faMugHot,
+  faMusic: faMusic,
+  faNetworkWired: faNetworkWired,
+  faNeuter: faNeuter,
+  faNewspaper: faNewspaper,
+  faNotEqual: faNotEqual,
+  faNotesMedical: faNotesMedical,
+  faObjectGroup: faObjectGroup,
+  faObjectUngroup: faObjectUngroup,
+  faOilCan: faOilCan,
+  faOm: faOm,
+  faOtter: faOtter,
+  faOutdent: faOutdent,
+  faPager: faPager,
+  faPaintBrush: faPaintBrush,
+  faPaintRoller: faPaintRoller,
+  faPalette: faPalette,
+  faPallet: faPallet,
+  faPaperPlane: faPaperPlane,
+  faPaperclip: faPaperclip,
+  faParachuteBox: faParachuteBox,
+  faParagraph: faParagraph,
+  faParking: faParking,
+  faPassport: faPassport,
+  faPastafarianism: faPastafarianism,
+  faPaste: faPaste,
+  faPause: faPause,
+  faPauseCircle: faPauseCircle,
+  faPaw: faPaw,
+  faPeace: faPeace,
+  faPen: faPen,
+  faPenAlt: faPenAlt,
+  faPenFancy: faPenFancy,
+  faPenNib: faPenNib,
+  faPenSquare: faPenSquare,
+  faPencilAlt: faPencilAlt,
+  faPencilRuler: faPencilRuler,
+  faPeopleArrows: faPeopleArrows,
+  faPeopleCarry: faPeopleCarry,
+  faPepperHot: faPepperHot,
+  faPercent: faPercent,
+  faPercentage: faPercentage,
+  faPersonBooth: faPersonBooth,
+  faPhone: faPhone,
+  faPhoneAlt: faPhoneAlt,
+  faPhoneSlash: faPhoneSlash,
+  faPhoneSquare: faPhoneSquare,
+  faPhoneSquareAlt: faPhoneSquareAlt,
+  faPhoneVolume: faPhoneVolume,
+  faPhotoVideo: faPhotoVideo,
+  faPiggyBank: faPiggyBank,
+  faPills: faPills,
+  faPizzaSlice: faPizzaSlice,
+  faPlaceOfWorship: faPlaceOfWorship,
+  faPlane: faPlane,
+  faPlaneArrival: faPlaneArrival,
+  faPlaneDeparture: faPlaneDeparture,
+  faPlaneSlash: faPlaneSlash,
+  faPlay: faPlay,
+  faPlayCircle: faPlayCircle,
+  faPlug: faPlug,
+  faPlus: faPlus,
+  faPlusCircle: faPlusCircle,
+  faPlusSquare: faPlusSquare,
+  faPodcast: faPodcast,
+  faPoll: faPoll,
+  faPollH: faPollH,
+  faPoo: faPoo,
+  faPooStorm: faPooStorm,
+  faPoop: faPoop,
+  faPortrait: faPortrait,
+  faPoundSign: faPoundSign,
+  faPowerOff: faPowerOff,
+  faPray: faPray,
+  faPrayingHands: faPrayingHands,
+  faPrescription: faPrescription,
+  faPrescriptionBottle: faPrescriptionBottle,
+  faPrescriptionBottleAlt: faPrescriptionBottleAlt,
+  faPrint: faPrint,
+  faProcedures: faProcedures,
+  faProjectDiagram: faProjectDiagram,
+  faPumpMedical: faPumpMedical,
+  faPumpSoap: faPumpSoap,
+  faPuzzlePiece: faPuzzlePiece,
+  faQrcode: faQrcode,
+  faQuestion: faQuestion,
+  faQuestionCircle: faQuestionCircle,
+  faQuidditch: faQuidditch,
+  faQuoteLeft: faQuoteLeft,
+  faQuoteRight: faQuoteRight,
+  faQuran: faQuran,
+  faRadiation: faRadiation,
+  faRadiationAlt: faRadiationAlt,
+  faRainbow: faRainbow,
+  faRandom: faRandom,
+  faReceipt: faReceipt,
+  faRecordVinyl: faRecordVinyl,
+  faRecycle: faRecycle,
+  faRedo: faRedo,
+  faRedoAlt: faRedoAlt,
+  faRegistered: faRegistered,
+  faRemoveFormat: faRemoveFormat,
+  faReply: faReply,
+  faReplyAll: faReplyAll,
+  faRepublican: faRepublican,
+  faRestroom: faRestroom,
+  faRetweet: faRetweet,
+  faRibbon: faRibbon,
+  faRing: faRing,
+  faRoad: faRoad,
+  faRobot: faRobot,
+  faRocket: faRocket,
+  faRoute: faRoute,
+  faRss: faRss,
+  faRssSquare: faRssSquare,
+  faRubleSign: faRubleSign,
+  faRuler: faRuler,
+  faRulerCombined: faRulerCombined,
+  faRulerHorizontal: faRulerHorizontal,
+  faRulerVertical: faRulerVertical,
+  faRunning: faRunning,
+  faRupeeSign: faRupeeSign,
+  faSadCry: faSadCry,
+  faSadTear: faSadTear,
+  faSatellite: faSatellite,
+  faSatelliteDish: faSatelliteDish,
+  faSave: faSave,
+  faSchool: faSchool,
+  faScrewdriver: faScrewdriver,
+  faScroll: faScroll,
+  faSdCard: faSdCard,
+  faSearch: faSearch,
+  faSearchDollar: faSearchDollar,
+  faSearchLocation: faSearchLocation,
+  faSearchMinus: faSearchMinus,
+  faSearchPlus: faSearchPlus,
+  faSeedling: faSeedling,
+  faServer: faServer,
+  faShapes: faShapes,
+  faShare: faShare,
+  faShareAlt: faShareAlt,
+  faShareAltSquare: faShareAltSquare,
+  faShareSquare: faShareSquare,
+  faShekelSign: faShekelSign,
+  faShieldAlt: faShieldAlt,
+  faShieldVirus: faShieldVirus,
+  faShip: faShip,
+  faShippingFast: faShippingFast,
+  faShoePrints: faShoePrints,
+  faShoppingBag: faShoppingBag,
+  faShoppingBasket: faShoppingBasket,
+  faShoppingCart: faShoppingCart,
+  faShower: faShower,
+  faShuttleVan: faShuttleVan,
+  faSign: faSign,
+  faSignInAlt: faSignInAlt,
+  faSignLanguage: faSignLanguage,
+  faSignOutAlt: faSignOutAlt,
+  faSignal: faSignal,
+  faSignature: faSignature,
+  faSimCard: faSimCard,
+  faSink: faSink,
+  faSitemap: faSitemap,
+  faSkating: faSkating,
+  faSkiing: faSkiing,
+  faSkiingNordic: faSkiingNordic,
+  faSkull: faSkull,
+  faSkullCrossbones: faSkullCrossbones,
+  faSlash: faSlash,
+  faSleigh: faSleigh,
+  faSlidersH: faSlidersH,
+  faSmile: faSmile,
+  faSmileBeam: faSmileBeam,
+  faSmileWink: faSmileWink,
+  faSmog: faSmog,
+  faSmoking: faSmoking,
+  faSmokingBan: faSmokingBan,
+  faSms: faSms,
+  faSnowboarding: faSnowboarding,
+  faSnowflake: faSnowflake,
+  faSnowman: faSnowman,
+  faSnowplow: faSnowplow,
+  faSoap: faSoap,
+  faSocks: faSocks,
+  faSolarPanel: faSolarPanel,
+  faSort: faSort,
+  faSortAlphaDown: faSortAlphaDown,
+  faSortAlphaDownAlt: faSortAlphaDownAlt,
+  faSortAlphaUp: faSortAlphaUp,
+  faSortAlphaUpAlt: faSortAlphaUpAlt,
+  faSortAmountDown: faSortAmountDown,
+  faSortAmountDownAlt: faSortAmountDownAlt,
+  faSortAmountUp: faSortAmountUp,
+  faSortAmountUpAlt: faSortAmountUpAlt,
+  faSortDown: faSortDown,
+  faSortNumericDown: faSortNumericDown,
+  faSortNumericDownAlt: faSortNumericDownAlt,
+  faSortNumericUp: faSortNumericUp,
+  faSortNumericUpAlt: faSortNumericUpAlt,
+  faSortUp: faSortUp,
+  faSpa: faSpa,
+  faSpaceShuttle: faSpaceShuttle,
+  faSpellCheck: faSpellCheck,
+  faSpider: faSpider,
+  faSpinner: faSpinner,
+  faSplotch: faSplotch,
+  faSprayCan: faSprayCan,
+  faSquare: faSquare,
+  faSquareFull: faSquareFull,
+  faSquareRootAlt: faSquareRootAlt,
+  faStamp: faStamp,
+  faStar: faStar,
+  faStarAndCrescent: faStarAndCrescent,
+  faStarHalf: faStarHalf,
+  faStarHalfAlt: faStarHalfAlt,
+  faStarOfDavid: faStarOfDavid,
+  faStarOfLife: faStarOfLife,
+  faStepBackward: faStepBackward,
+  faStepForward: faStepForward,
+  faStethoscope: faStethoscope,
+  faStickyNote: faStickyNote,
+  faStop: faStop,
+  faStopCircle: faStopCircle,
+  faStopwatch: faStopwatch,
+  faStopwatch20: faStopwatch20,
+  faStore: faStore,
+  faStoreAlt: faStoreAlt,
+  faStoreAltSlash: faStoreAltSlash,
+  faStoreSlash: faStoreSlash,
+  faStream: faStream,
+  faStreetView: faStreetView,
+  faStrikethrough: faStrikethrough,
+  faStroopwafel: faStroopwafel,
+  faSubscript: faSubscript,
+  faSubway: faSubway,
+  faSuitcase: faSuitcase,
+  faSuitcaseRolling: faSuitcaseRolling,
+  faSun: faSun,
+  faSuperscript: faSuperscript,
+  faSurprise: faSurprise,
+  faSwatchbook: faSwatchbook,
+  faSwimmer: faSwimmer,
+  faSwimmingPool: faSwimmingPool,
+  faSynagogue: faSynagogue,
+  faSync: faSync,
+  faSyncAlt: faSyncAlt,
+  faSyringe: faSyringe,
+  faTable: faTable,
+  faTableTennis: faTableTennis,
+  faTablet: faTablet,
+  faTabletAlt: faTabletAlt,
+  faTablets: faTablets,
+  faTachometerAlt: faTachometerAlt,
+  faTag: faTag,
+  faTags: faTags,
+  faTape: faTape,
+  faTasks: faTasks,
+  faTaxi: faTaxi,
+  faTeeth: faTeeth,
+  faTeethOpen: faTeethOpen,
+  faTemperatureHigh: faTemperatureHigh,
+  faTemperatureLow: faTemperatureLow,
+  faTenge: faTenge,
+  faTerminal: faTerminal,
+  faTextHeight: faTextHeight,
+  faTextWidth: faTextWidth,
+  faTh: faTh,
+  faThLarge: faThLarge,
+  faThList: faThList,
+  faTheaterMasks: faTheaterMasks,
+  faThermometer: faThermometer,
+  faThermometerEmpty: faThermometerEmpty,
+  faThermometerFull: faThermometerFull,
+  faThermometerHalf: faThermometerHalf,
+  faThermometerQuarter: faThermometerQuarter,
+  faThermometerThreeQuarters: faThermometerThreeQuarters,
+  faThumbsDown: faThumbsDown,
+  faThumbsUp: faThumbsUp,
+  faThumbtack: faThumbtack,
+  faTicketAlt: faTicketAlt,
+  faTimes: faTimes,
+  faTimesCircle: faTimesCircle,
+  faTint: faTint,
+  faTintSlash: faTintSlash,
+  faTired: faTired,
+  faToggleOff: faToggleOff,
+  faToggleOn: faToggleOn,
+  faToilet: faToilet,
+  faToiletPaper: faToiletPaper,
+  faToiletPaperSlash: faToiletPaperSlash,
+  faToolbox: faToolbox,
+  faTools: faTools,
+  faTooth: faTooth,
+  faTorah: faTorah,
+  faToriiGate: faToriiGate,
+  faTractor: faTractor,
+  faTrademark: faTrademark,
+  faTrafficLight: faTrafficLight,
+  faTrailer: faTrailer,
+  faTrain: faTrain,
+  faTram: faTram,
+  faTransgender: faTransgender,
+  faTransgenderAlt: faTransgenderAlt,
+  faTrash: faTrash,
+  faTrashAlt: faTrashAlt,
+  faTrashRestore: faTrashRestore,
+  faTrashRestoreAlt: faTrashRestoreAlt,
+  faTree: faTree,
+  faTrophy: faTrophy,
+  faTruck: faTruck,
+  faTruckLoading: faTruckLoading,
+  faTruckMonster: faTruckMonster,
+  faTruckMoving: faTruckMoving,
+  faTruckPickup: faTruckPickup,
+  faTshirt: faTshirt,
+  faTty: faTty,
+  faTv: faTv,
+  faUmbrella: faUmbrella,
+  faUmbrellaBeach: faUmbrellaBeach,
+  faUnderline: faUnderline,
+  faUndo: faUndo,
+  faUndoAlt: faUndoAlt,
+  faUniversalAccess: faUniversalAccess,
+  faUniversity: faUniversity,
+  faUnlink: faUnlink,
+  faUnlock: faUnlock,
+  faUnlockAlt: faUnlockAlt,
+  faUpload: faUpload,
+  faUser: faUser,
+  faUserAlt: faUserAlt,
+  faUserAltSlash: faUserAltSlash,
+  faUserAstronaut: faUserAstronaut,
+  faUserCheck: faUserCheck,
+  faUserCircle: faUserCircle,
+  faUserClock: faUserClock,
+  faUserCog: faUserCog,
+  faUserEdit: faUserEdit,
+  faUserFriends: faUserFriends,
+  faUserGraduate: faUserGraduate,
+  faUserInjured: faUserInjured,
+  faUserLock: faUserLock,
+  faUserMd: faUserMd,
+  faUserMinus: faUserMinus,
+  faUserNinja: faUserNinja,
+  faUserNurse: faUserNurse,
+  faUserPlus: faUserPlus,
+  faUserSecret: faUserSecret,
+  faUserShield: faUserShield,
+  faUserSlash: faUserSlash,
+  faUserTag: faUserTag,
+  faUserTie: faUserTie,
+  faUserTimes: faUserTimes,
+  faUsers: faUsers,
+  faUsersCog: faUsersCog,
+  faUsersSlash: faUsersSlash,
+  faUtensilSpoon: faUtensilSpoon,
+  faUtensils: faUtensils,
+  faVectorSquare: faVectorSquare,
+  faVenus: faVenus,
+  faVenusDouble: faVenusDouble,
+  faVenusMars: faVenusMars,
+  faVest: faVest,
+  faVestPatches: faVestPatches,
+  faVial: faVial,
+  faVials: faVials,
+  faVideo: faVideo,
+  faVideoSlash: faVideoSlash,
+  faVihara: faVihara,
+  faVirus: faVirus,
+  faVirusSlash: faVirusSlash,
+  faViruses: faViruses,
+  faVoicemail: faVoicemail,
+  faVolleyballBall: faVolleyballBall,
+  faVolumeDown: faVolumeDown,
+  faVolumeMute: faVolumeMute,
+  faVolumeOff: faVolumeOff,
+  faVolumeUp: faVolumeUp,
+  faVoteYea: faVoteYea,
+  faVrCardboard: faVrCardboard,
+  faWalking: faWalking,
+  faWallet: faWallet,
+  faWarehouse: faWarehouse,
+  faWater: faWater,
+  faWaveSquare: faWaveSquare,
+  faWeight: faWeight,
+  faWeightHanging: faWeightHanging,
+  faWheelchair: faWheelchair,
+  faWifi: faWifi,
+  faWind: faWind,
+  faWindowClose: faWindowClose,
+  faWindowMaximize: faWindowMaximize,
+  faWindowMinimize: faWindowMinimize,
+  faWindowRestore: faWindowRestore,
+  faWineBottle: faWineBottle,
+  faWineGlass: faWineGlass,
+  faWineGlassAlt: faWineGlassAlt,
+  faWonSign: faWonSign,
+  faWrench: faWrench,
+  faXRay: faXRay,
+  faYenSign: faYenSign,
+  faYinYang: faYinYang
+};
+
+export { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.js
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/index.js	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7034 @@
+/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+  typeof define === 'function' && define.amd ? define(['exports'], factory) :
+  (factory((global['free-solid-svg-icons'] = {})));
+}(this, (function (exports) { 'use strict';
+
+  var prefix = "fas";
+  var faAd = {
+    prefix: 'fas',
+    iconName: 'ad',
+    icon: [512, 512, [], "f641", "M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"]
+  };
+  var faAddressBook = {
+    prefix: 'fas',
+    iconName: 'address-book',
+    icon: [448, 512, [], "f2b9", "M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+  };
+  var faAddressCard = {
+    prefix: 'fas',
+    iconName: 'address-card',
+    icon: [576, 512, [], "f2bb", "M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]
+  };
+  var faAdjust = {
+    prefix: 'fas',
+    iconName: 'adjust',
+    icon: [512, 512, [], "f042", "M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"]
+  };
+  var faAirFreshener = {
+    prefix: 'fas',
+    iconName: 'air-freshener',
+    icon: [512, 512, [], "f5d0", "M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"]
+  };
+  var faAlignCenter = {
+    prefix: 'fas',
+    iconName: 'align-center',
+    icon: [448, 512, [], "f037", "M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"]
+  };
+  var faAlignJustify = {
+    prefix: 'fas',
+    iconName: 'align-justify',
+    icon: [448, 512, [], "f039", "M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faAlignLeft = {
+    prefix: 'fas',
+    iconName: 'align-left',
+    icon: [448, 512, [], "f036", "M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faAlignRight = {
+    prefix: 'fas',
+    iconName: 'align-right',
+    icon: [448, 512, [], "f038", "M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"]
+  };
+  var faAllergies = {
+    prefix: 'fas',
+    iconName: 'allergies',
+    icon: [448, 512, [], "f461", "M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+  };
+  var faAmbulance = {
+    prefix: 'fas',
+    iconName: 'ambulance',
+    icon: [640, 512, [], "f0f9", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+  };
+  var faAmericanSignLanguageInterpreting = {
+    prefix: 'fas',
+    iconName: 'american-sign-language-interpreting',
+    icon: [640, 512, [], "f2a3", "M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"]
+  };
+  var faAnchor = {
+    prefix: 'fas',
+    iconName: 'anchor',
+    icon: [576, 512, [], "f13d", "M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"]
+  };
+  var faAngleDoubleDown = {
+    prefix: 'fas',
+    iconName: 'angle-double-down',
+    icon: [320, 512, [], "f103", "M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"]
+  };
+  var faAngleDoubleLeft = {
+    prefix: 'fas',
+    iconName: 'angle-double-left',
+    icon: [448, 512, [], "f100", "M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]
+  };
+  var faAngleDoubleRight = {
+    prefix: 'fas',
+    iconName: 'angle-double-right',
+    icon: [448, 512, [], "f101", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]
+  };
+  var faAngleDoubleUp = {
+    prefix: 'fas',
+    iconName: 'angle-double-up',
+    icon: [320, 512, [], "f102", "M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"]
+  };
+  var faAngleDown = {
+    prefix: 'fas',
+    iconName: 'angle-down',
+    icon: [320, 512, [], "f107", "M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"]
+  };
+  var faAngleLeft = {
+    prefix: 'fas',
+    iconName: 'angle-left',
+    icon: [256, 512, [], "f104", "M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]
+  };
+  var faAngleRight = {
+    prefix: 'fas',
+    iconName: 'angle-right',
+    icon: [256, 512, [], "f105", "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]
+  };
+  var faAngleUp = {
+    prefix: 'fas',
+    iconName: 'angle-up',
+    icon: [320, 512, [], "f106", "M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"]
+  };
+  var faAngry = {
+    prefix: 'fas',
+    iconName: 'angry',
+    icon: [496, 512, [], "f556", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"]
+  };
+  var faAnkh = {
+    prefix: 'fas',
+    iconName: 'ankh',
+    icon: [320, 512, [], "f644", "M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"]
+  };
+  var faAppleAlt = {
+    prefix: 'fas',
+    iconName: 'apple-alt',
+    icon: [448, 512, [], "f5d1", "M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"]
+  };
+  var faArchive = {
+    prefix: 'fas',
+    iconName: 'archive',
+    icon: [512, 512, [], "f187", "M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"]
+  };
+  var faArchway = {
+    prefix: 'fas',
+    iconName: 'archway',
+    icon: [576, 512, [], "f557", "M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]
+  };
+  var faArrowAltCircleDown = {
+    prefix: 'fas',
+    iconName: 'arrow-alt-circle-down',
+    icon: [512, 512, [], "f358", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"]
+  };
+  var faArrowAltCircleLeft = {
+    prefix: 'fas',
+    iconName: 'arrow-alt-circle-left',
+    icon: [512, 512, [], "f359", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"]
+  };
+  var faArrowAltCircleRight = {
+    prefix: 'fas',
+    iconName: 'arrow-alt-circle-right',
+    icon: [512, 512, [], "f35a", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"]
+  };
+  var faArrowAltCircleUp = {
+    prefix: 'fas',
+    iconName: 'arrow-alt-circle-up',
+    icon: [512, 512, [], "f35b", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"]
+  };
+  var faArrowCircleDown = {
+    prefix: 'fas',
+    iconName: 'arrow-circle-down',
+    icon: [512, 512, [], "f0ab", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"]
+  };
+  var faArrowCircleLeft = {
+    prefix: 'fas',
+    iconName: 'arrow-circle-left',
+    icon: [512, 512, [], "f0a8", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"]
+  };
+  var faArrowCircleRight = {
+    prefix: 'fas',
+    iconName: 'arrow-circle-right',
+    icon: [512, 512, [], "f0a9", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"]
+  };
+  var faArrowCircleUp = {
+    prefix: 'fas',
+    iconName: 'arrow-circle-up',
+    icon: [512, 512, [], "f0aa", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"]
+  };
+  var faArrowDown = {
+    prefix: 'fas',
+    iconName: 'arrow-down',
+    icon: [448, 512, [], "f063", "M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]
+  };
+  var faArrowLeft = {
+    prefix: 'fas',
+    iconName: 'arrow-left',
+    icon: [448, 512, [], "f060", "M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"]
+  };
+  var faArrowRight = {
+    prefix: 'fas',
+    iconName: 'arrow-right',
+    icon: [448, 512, [], "f061", "M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"]
+  };
+  var faArrowUp = {
+    prefix: 'fas',
+    iconName: 'arrow-up',
+    icon: [448, 512, [], "f062", "M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]
+  };
+  var faArrowsAlt = {
+    prefix: 'fas',
+    iconName: 'arrows-alt',
+    icon: [512, 512, [], "f0b2", "M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"]
+  };
+  var faArrowsAltH = {
+    prefix: 'fas',
+    iconName: 'arrows-alt-h',
+    icon: [512, 512, [], "f337", "M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"]
+  };
+  var faArrowsAltV = {
+    prefix: 'fas',
+    iconName: 'arrows-alt-v',
+    icon: [256, 512, [], "f338", "M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]
+  };
+  var faAssistiveListeningSystems = {
+    prefix: 'fas',
+    iconName: 'assistive-listening-systems',
+    icon: [512, 512, [], "f2a2", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"]
+  };
+  var faAsterisk = {
+    prefix: 'fas',
+    iconName: 'asterisk',
+    icon: [512, 512, [], "f069", "M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"]
+  };
+  var faAt = {
+    prefix: 'fas',
+    iconName: 'at',
+    icon: [512, 512, [], "f1fa", "M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"]
+  };
+  var faAtlas = {
+    prefix: 'fas',
+    iconName: 'atlas',
+    icon: [448, 512, [], "f558", "M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"]
+  };
+  var faAtom = {
+    prefix: 'fas',
+    iconName: 'atom',
+    icon: [448, 512, [], "f5d2", "M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"]
+  };
+  var faAudioDescription = {
+    prefix: 'fas',
+    iconName: 'audio-description',
+    icon: [512, 512, [], "f29e", "M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"]
+  };
+  var faAward = {
+    prefix: 'fas',
+    iconName: 'award',
+    icon: [384, 512, [], "f559", "M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"]
+  };
+  var faBaby = {
+    prefix: 'fas',
+    iconName: 'baby',
+    icon: [384, 512, [], "f77c", "M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"]
+  };
+  var faBabyCarriage = {
+    prefix: 'fas',
+    iconName: 'baby-carriage',
+    icon: [512, 512, [], "f77d", "M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"]
+  };
+  var faBackspace = {
+    prefix: 'fas',
+    iconName: 'backspace',
+    icon: [640, 512, [], "f55a", "M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"]
+  };
+  var faBackward = {
+    prefix: 'fas',
+    iconName: 'backward',
+    icon: [512, 512, [], "f04a", "M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"]
+  };
+  var faBacon = {
+    prefix: 'fas',
+    iconName: 'bacon',
+    icon: [576, 512, [], "f7e5", "M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"]
+  };
+  var faBacteria = {
+    prefix: 'fas',
+    iconName: 'bacteria',
+    icon: [640, 512, [], "e059", "M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"]
+  };
+  var faBacterium = {
+    prefix: 'fas',
+    iconName: 'bacterium',
+    icon: [512, 512, [], "e05a", "M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"]
+  };
+  var faBahai = {
+    prefix: 'fas',
+    iconName: 'bahai',
+    icon: [512, 512, [], "f666", "M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"]
+  };
+  var faBalanceScale = {
+    prefix: 'fas',
+    iconName: 'balance-scale',
+    icon: [640, 512, [], "f24e", "M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faBalanceScaleLeft = {
+    prefix: 'fas',
+    iconName: 'balance-scale-left',
+    icon: [640, 512, [], "f515", "M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"]
+  };
+  var faBalanceScaleRight = {
+    prefix: 'fas',
+    iconName: 'balance-scale-right',
+    icon: [640, 512, [], "f516", "M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"]
+  };
+  var faBan = {
+    prefix: 'fas',
+    iconName: 'ban',
+    icon: [512, 512, [], "f05e", "M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"]
+  };
+  var faBandAid = {
+    prefix: 'fas',
+    iconName: 'band-aid',
+    icon: [640, 512, [], "f462", "M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"]
+  };
+  var faBarcode = {
+    prefix: 'fas',
+    iconName: 'barcode',
+    icon: [512, 512, [], "f02a", "M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"]
+  };
+  var faBars = {
+    prefix: 'fas',
+    iconName: 'bars',
+    icon: [448, 512, [], "f0c9", "M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]
+  };
+  var faBaseballBall = {
+    prefix: 'fas',
+    iconName: 'baseball-ball',
+    icon: [496, 512, [], "f433", "M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"]
+  };
+  var faBasketballBall = {
+    prefix: 'fas',
+    iconName: 'basketball-ball',
+    icon: [496, 512, [], "f434", "M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"]
+  };
+  var faBath = {
+    prefix: 'fas',
+    iconName: 'bath',
+    icon: [512, 512, [], "f2cd", "M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"]
+  };
+  var faBatteryEmpty = {
+    prefix: 'fas',
+    iconName: 'battery-empty',
+    icon: [640, 512, [], "f244", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"]
+  };
+  var faBatteryFull = {
+    prefix: 'fas',
+    iconName: 'battery-full',
+    icon: [640, 512, [], "f240", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"]
+  };
+  var faBatteryHalf = {
+    prefix: 'fas',
+    iconName: 'battery-half',
+    icon: [640, 512, [], "f242", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"]
+  };
+  var faBatteryQuarter = {
+    prefix: 'fas',
+    iconName: 'battery-quarter',
+    icon: [640, 512, [], "f243", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"]
+  };
+  var faBatteryThreeQuarters = {
+    prefix: 'fas',
+    iconName: 'battery-three-quarters',
+    icon: [640, 512, [], "f241", "M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"]
+  };
+  var faBed = {
+    prefix: 'fas',
+    iconName: 'bed',
+    icon: [640, 512, [], "f236", "M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"]
+  };
+  var faBeer = {
+    prefix: 'fas',
+    iconName: 'beer',
+    icon: [448, 512, [], "f0fc", "M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"]
+  };
+  var faBell = {
+    prefix: 'fas',
+    iconName: 'bell',
+    icon: [448, 512, [], "f0f3", "M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]
+  };
+  var faBellSlash = {
+    prefix: 'fas',
+    iconName: 'bell-slash',
+    icon: [640, 512, [], "f1f6", "M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]
+  };
+  var faBezierCurve = {
+    prefix: 'fas',
+    iconName: 'bezier-curve',
+    icon: [640, 512, [], "f55b", "M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+  };
+  var faBible = {
+    prefix: 'fas',
+    iconName: 'bible',
+    icon: [448, 512, [], "f647", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]
+  };
+  var faBicycle = {
+    prefix: 'fas',
+    iconName: 'bicycle',
+    icon: [640, 512, [], "f206", "M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"]
+  };
+  var faBiking = {
+    prefix: 'fas',
+    iconName: 'biking',
+    icon: [640, 512, [], "f84a", "M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]
+  };
+  var faBinoculars = {
+    prefix: 'fas',
+    iconName: 'binoculars',
+    icon: [512, 512, [], "f1e5", "M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"]
+  };
+  var faBiohazard = {
+    prefix: 'fas',
+    iconName: 'biohazard',
+    icon: [576, 512, [], "f780", "M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+  };
+  var faBirthdayCake = {
+    prefix: 'fas',
+    iconName: 'birthday-cake',
+    icon: [448, 512, [], "f1fd", "M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"]
+  };
+  var faBlender = {
+    prefix: 'fas',
+    iconName: 'blender',
+    icon: [512, 512, [], "f517", "M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"]
+  };
+  var faBlenderPhone = {
+    prefix: 'fas',
+    iconName: 'blender-phone',
+    icon: [576, 512, [], "f6b6", "M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faBlind = {
+    prefix: 'fas',
+    iconName: 'blind',
+    icon: [384, 512, [], "f29d", "M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"]
+  };
+  var faBlog = {
+    prefix: 'fas',
+    iconName: 'blog',
+    icon: [512, 512, [], "f781", "M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"]
+  };
+  var faBold = {
+    prefix: 'fas',
+    iconName: 'bold',
+    icon: [384, 512, [], "f032", "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"]
+  };
+  var faBolt = {
+    prefix: 'fas',
+    iconName: 'bolt',
+    icon: [320, 512, [], "f0e7", "M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"]
+  };
+  var faBomb = {
+    prefix: 'fas',
+    iconName: 'bomb',
+    icon: [512, 512, [], "f1e2", "M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"]
+  };
+  var faBone = {
+    prefix: 'fas',
+    iconName: 'bone',
+    icon: [640, 512, [], "f5d7", "M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"]
+  };
+  var faBong = {
+    prefix: 'fas',
+    iconName: 'bong',
+    icon: [448, 512, [], "f55c", "M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"]
+  };
+  var faBook = {
+    prefix: 'fas',
+    iconName: 'book',
+    icon: [448, 512, [], "f02d", "M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]
+  };
+  var faBookDead = {
+    prefix: 'fas',
+    iconName: 'book-dead',
+    icon: [448, 512, [], "f6b7", "M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]
+  };
+  var faBookMedical = {
+    prefix: 'fas',
+    iconName: 'book-medical',
+    icon: [448, 512, [], "f7e6", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"]
+  };
+  var faBookOpen = {
+    prefix: 'fas',
+    iconName: 'book-open',
+    icon: [576, 512, [], "f518", "M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"]
+  };
+  var faBookReader = {
+    prefix: 'fas',
+    iconName: 'book-reader',
+    icon: [512, 512, [], "f5da", "M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"]
+  };
+  var faBookmark = {
+    prefix: 'fas',
+    iconName: 'bookmark',
+    icon: [384, 512, [], "f02e", "M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]
+  };
+  var faBorderAll = {
+    prefix: 'fas',
+    iconName: 'border-all',
+    icon: [448, 512, [], "f84c", "M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"]
+  };
+  var faBorderNone = {
+    prefix: 'fas',
+    iconName: 'border-none',
+    icon: [448, 512, [], "f850", "M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faBorderStyle = {
+    prefix: 'fas',
+    iconName: 'border-style',
+    icon: [448, 512, [], "f853", "M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faBowlingBall = {
+    prefix: 'fas',
+    iconName: 'bowling-ball',
+    icon: [496, 512, [], "f436", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faBox = {
+    prefix: 'fas',
+    iconName: 'box',
+    icon: [512, 512, [], "f466", "M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"]
+  };
+  var faBoxOpen = {
+    prefix: 'fas',
+    iconName: 'box-open',
+    icon: [640, 512, [], "f49e", "M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]
+  };
+  var faBoxTissue = {
+    prefix: 'fas',
+    iconName: 'box-tissue',
+    icon: [512, 512, [], "e05b", "M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"]
+  };
+  var faBoxes = {
+    prefix: 'fas',
+    iconName: 'boxes',
+    icon: [576, 512, [], "f468", "M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"]
+  };
+  var faBraille = {
+    prefix: 'fas',
+    iconName: 'braille',
+    icon: [640, 512, [], "f2a1", "M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]
+  };
+  var faBrain = {
+    prefix: 'fas',
+    iconName: 'brain',
+    icon: [576, 512, [], "f5dc", "M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"]
+  };
+  var faBreadSlice = {
+    prefix: 'fas',
+    iconName: 'bread-slice',
+    icon: [576, 512, [], "f7ec", "M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"]
+  };
+  var faBriefcase = {
+    prefix: 'fas',
+    iconName: 'briefcase',
+    icon: [512, 512, [], "f0b1", "M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"]
+  };
+  var faBriefcaseMedical = {
+    prefix: 'fas',
+    iconName: 'briefcase-medical',
+    icon: [512, 512, [], "f469", "M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"]
+  };
+  var faBroadcastTower = {
+    prefix: 'fas',
+    iconName: 'broadcast-tower',
+    icon: [640, 512, [], "f519", "M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"]
+  };
+  var faBroom = {
+    prefix: 'fas',
+    iconName: 'broom',
+    icon: [640, 512, [], "f51a", "M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"]
+  };
+  var faBrush = {
+    prefix: 'fas',
+    iconName: 'brush',
+    icon: [384, 512, [], "f55d", "M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"]
+  };
+  var faBug = {
+    prefix: 'fas',
+    iconName: 'bug',
+    icon: [512, 512, [], "f188", "M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"]
+  };
+  var faBuilding = {
+    prefix: 'fas',
+    iconName: 'building',
+    icon: [448, 512, [], "f1ad", "M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"]
+  };
+  var faBullhorn = {
+    prefix: 'fas',
+    iconName: 'bullhorn',
+    icon: [576, 512, [], "f0a1", "M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"]
+  };
+  var faBullseye = {
+    prefix: 'fas',
+    iconName: 'bullseye',
+    icon: [496, 512, [], "f140", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"]
+  };
+  var faBurn = {
+    prefix: 'fas',
+    iconName: 'burn',
+    icon: [384, 512, [], "f46a", "M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"]
+  };
+  var faBus = {
+    prefix: 'fas',
+    iconName: 'bus',
+    icon: [512, 512, [], "f207", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faBusAlt = {
+    prefix: 'fas',
+    iconName: 'bus-alt',
+    icon: [512, 512, [], "f55e", "M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faBusinessTime = {
+    prefix: 'fas',
+    iconName: 'business-time',
+    icon: [640, 512, [], "f64a", "M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"]
+  };
+  var faCalculator = {
+    prefix: 'fas',
+    iconName: 'calculator',
+    icon: [448, 512, [], "f1ec", "M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"]
+  };
+  var faCalendar = {
+    prefix: 'fas',
+    iconName: 'calendar',
+    icon: [448, 512, [], "f133", "M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"]
+  };
+  var faCalendarAlt = {
+    prefix: 'fas',
+    iconName: 'calendar-alt',
+    icon: [448, 512, [], "f073", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+  };
+  var faCalendarCheck = {
+    prefix: 'fas',
+    iconName: 'calendar-check',
+    icon: [448, 512, [], "f274", "M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"]
+  };
+  var faCalendarDay = {
+    prefix: 'fas',
+    iconName: 'calendar-day',
+    icon: [448, 512, [], "f783", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+  };
+  var faCalendarMinus = {
+    prefix: 'fas',
+    iconName: 'calendar-minus',
+    icon: [448, 512, [], "f272", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"]
+  };
+  var faCalendarPlus = {
+    prefix: 'fas',
+    iconName: 'calendar-plus',
+    icon: [448, 512, [], "f271", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"]
+  };
+  var faCalendarTimes = {
+    prefix: 'fas',
+    iconName: 'calendar-times',
+    icon: [448, 512, [], "f273", "M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"]
+  };
+  var faCalendarWeek = {
+    prefix: 'fas',
+    iconName: 'calendar-week',
+    icon: [448, 512, [], "f784", "M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]
+  };
+  var faCamera = {
+    prefix: 'fas',
+    iconName: 'camera',
+    icon: [512, 512, [], "f030", "M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"]
+  };
+  var faCameraRetro = {
+    prefix: 'fas',
+    iconName: 'camera-retro',
+    icon: [512, 512, [], "f083", "M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"]
+  };
+  var faCampground = {
+    prefix: 'fas',
+    iconName: 'campground',
+    icon: [640, 512, [], "f6bb", "M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"]
+  };
+  var faCandyCane = {
+    prefix: 'fas',
+    iconName: 'candy-cane',
+    icon: [512, 512, [], "f786", "M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"]
+  };
+  var faCannabis = {
+    prefix: 'fas',
+    iconName: 'cannabis',
+    icon: [512, 512, [], "f55f", "M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"]
+  };
+  var faCapsules = {
+    prefix: 'fas',
+    iconName: 'capsules',
+    icon: [576, 512, [], "f46b", "M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"]
+  };
+  var faCar = {
+    prefix: 'fas',
+    iconName: 'car',
+    icon: [512, 512, [], "f1b9", "M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]
+  };
+  var faCarAlt = {
+    prefix: 'fas',
+    iconName: 'car-alt',
+    icon: [480, 512, [], "f5de", "M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]
+  };
+  var faCarBattery = {
+    prefix: 'fas',
+    iconName: 'car-battery',
+    icon: [512, 512, [], "f5df", "M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"]
+  };
+  var faCarCrash = {
+    prefix: 'fas',
+    iconName: 'car-crash',
+    icon: [640, 512, [], "f5e1", "M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"]
+  };
+  var faCarSide = {
+    prefix: 'fas',
+    iconName: 'car-side',
+    icon: [640, 512, [], "f5e4", "M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]
+  };
+  var faCaravan = {
+    prefix: 'fas',
+    iconName: 'caravan',
+    icon: [640, 512, [], "f8ff", "M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"]
+  };
+  var faCaretDown = {
+    prefix: 'fas',
+    iconName: 'caret-down',
+    icon: [320, 512, [], "f0d7", "M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]
+  };
+  var faCaretLeft = {
+    prefix: 'fas',
+    iconName: 'caret-left',
+    icon: [192, 512, [], "f0d9", "M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"]
+  };
+  var faCaretRight = {
+    prefix: 'fas',
+    iconName: 'caret-right',
+    icon: [192, 512, [], "f0da", "M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"]
+  };
+  var faCaretSquareDown = {
+    prefix: 'fas',
+    iconName: 'caret-square-down',
+    icon: [448, 512, [], "f150", "M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"]
+  };
+  var faCaretSquareLeft = {
+    prefix: 'fas',
+    iconName: 'caret-square-left',
+    icon: [448, 512, [], "f191", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"]
+  };
+  var faCaretSquareRight = {
+    prefix: 'fas',
+    iconName: 'caret-square-right',
+    icon: [448, 512, [], "f152", "M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"]
+  };
+  var faCaretSquareUp = {
+    prefix: 'fas',
+    iconName: 'caret-square-up',
+    icon: [448, 512, [], "f151", "M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"]
+  };
+  var faCaretUp = {
+    prefix: 'fas',
+    iconName: 'caret-up',
+    icon: [320, 512, [], "f0d8", "M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]
+  };
+  var faCarrot = {
+    prefix: 'fas',
+    iconName: 'carrot',
+    icon: [512, 512, [], "f787", "M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"]
+  };
+  var faCartArrowDown = {
+    prefix: 'fas',
+    iconName: 'cart-arrow-down',
+    icon: [576, 512, [], "f218", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"]
+  };
+  var faCartPlus = {
+    prefix: 'fas',
+    iconName: 'cart-plus',
+    icon: [576, 512, [], "f217", "M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"]
+  };
+  var faCashRegister = {
+    prefix: 'fas',
+    iconName: 'cash-register',
+    icon: [512, 512, [], "f788", "M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"]
+  };
+  var faCat = {
+    prefix: 'fas',
+    iconName: 'cat',
+    icon: [512, 512, [], "f6be", "M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+  };
+  var faCertificate = {
+    prefix: 'fas',
+    iconName: 'certificate',
+    icon: [512, 512, [], "f0a3", "M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"]
+  };
+  var faChair = {
+    prefix: 'fas',
+    iconName: 'chair',
+    icon: [448, 512, [], "f6c0", "M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"]
+  };
+  var faChalkboard = {
+    prefix: 'fas',
+    iconName: 'chalkboard',
+    icon: [640, 512, [], "f51b", "M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faChalkboardTeacher = {
+    prefix: 'fas',
+    iconName: 'chalkboard-teacher',
+    icon: [640, 512, [], "f51c", "M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"]
+  };
+  var faChargingStation = {
+    prefix: 'fas',
+    iconName: 'charging-station',
+    icon: [576, 512, [], "f5e7", "M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"]
+  };
+  var faChartArea = {
+    prefix: 'fas',
+    iconName: 'chart-area',
+    icon: [512, 512, [], "f1fe", "M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"]
+  };
+  var faChartBar = {
+    prefix: 'fas',
+    iconName: 'chart-bar',
+    icon: [512, 512, [], "f080", "M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faChartLine = {
+    prefix: 'fas',
+    iconName: 'chart-line',
+    icon: [512, 512, [], "f201", "M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"]
+  };
+  var faChartPie = {
+    prefix: 'fas',
+    iconName: 'chart-pie',
+    icon: [544, 512, [], "f200", "M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"]
+  };
+  var faCheck = {
+    prefix: 'fas',
+    iconName: 'check',
+    icon: [512, 512, [], "f00c", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]
+  };
+  var faCheckCircle = {
+    prefix: 'fas',
+    iconName: 'check-circle',
+    icon: [512, 512, [], "f058", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"]
+  };
+  var faCheckDouble = {
+    prefix: 'fas',
+    iconName: 'check-double',
+    icon: [512, 512, [], "f560", "M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"]
+  };
+  var faCheckSquare = {
+    prefix: 'fas',
+    iconName: 'check-square',
+    icon: [448, 512, [], "f14a", "M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"]
+  };
+  var faCheese = {
+    prefix: 'fas',
+    iconName: 'cheese',
+    icon: [512, 512, [], "f7ef", "M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"]
+  };
+  var faChess = {
+    prefix: 'fas',
+    iconName: 'chess',
+    icon: [512, 512, [], "f439", "M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"]
+  };
+  var faChessBishop = {
+    prefix: 'fas',
+    iconName: 'chess-bishop',
+    icon: [320, 512, [], "f43a", "M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faChessBoard = {
+    prefix: 'fas',
+    iconName: 'chess-board',
+    icon: [512, 512, [], "f43c", "M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"]
+  };
+  var faChessKing = {
+    prefix: 'fas',
+    iconName: 'chess-king',
+    icon: [448, 512, [], "f43f", "M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"]
+  };
+  var faChessKnight = {
+    prefix: 'fas',
+    iconName: 'chess-knight',
+    icon: [384, 512, [], "f441", "M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faChessPawn = {
+    prefix: 'fas',
+    iconName: 'chess-pawn',
+    icon: [320, 512, [], "f443", "M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faChessQueen = {
+    prefix: 'fas',
+    iconName: 'chess-queen',
+    icon: [512, 512, [], "f445", "M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"]
+  };
+  var faChessRook = {
+    prefix: 'fas',
+    iconName: 'chess-rook',
+    icon: [384, 512, [], "f447", "M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faChevronCircleDown = {
+    prefix: 'fas',
+    iconName: 'chevron-circle-down',
+    icon: [512, 512, [], "f13a", "M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"]
+  };
+  var faChevronCircleLeft = {
+    prefix: 'fas',
+    iconName: 'chevron-circle-left',
+    icon: [512, 512, [], "f137", "M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"]
+  };
+  var faChevronCircleRight = {
+    prefix: 'fas',
+    iconName: 'chevron-circle-right',
+    icon: [512, 512, [], "f138", "M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"]
+  };
+  var faChevronCircleUp = {
+    prefix: 'fas',
+    iconName: 'chevron-circle-up',
+    icon: [512, 512, [], "f139", "M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"]
+  };
+  var faChevronDown = {
+    prefix: 'fas',
+    iconName: 'chevron-down',
+    icon: [448, 512, [], "f078", "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]
+  };
+  var faChevronLeft = {
+    prefix: 'fas',
+    iconName: 'chevron-left',
+    icon: [320, 512, [], "f053", "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]
+  };
+  var faChevronRight = {
+    prefix: 'fas',
+    iconName: 'chevron-right',
+    icon: [320, 512, [], "f054", "M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]
+  };
+  var faChevronUp = {
+    prefix: 'fas',
+    iconName: 'chevron-up',
+    icon: [448, 512, [], "f077", "M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"]
+  };
+  var faChild = {
+    prefix: 'fas',
+    iconName: 'child',
+    icon: [384, 512, [], "f1ae", "M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"]
+  };
+  var faChurch = {
+    prefix: 'fas',
+    iconName: 'church',
+    icon: [640, 512, [], "f51d", "M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"]
+  };
+  var faCircle = {
+    prefix: 'fas',
+    iconName: 'circle',
+    icon: [512, 512, [], "f111", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]
+  };
+  var faCircleNotch = {
+    prefix: 'fas',
+    iconName: 'circle-notch',
+    icon: [512, 512, [], "f1ce", "M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"]
+  };
+  var faCity = {
+    prefix: 'fas',
+    iconName: 'city',
+    icon: [640, 512, [], "f64f", "M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"]
+  };
+  var faClinicMedical = {
+    prefix: 'fas',
+    iconName: 'clinic-medical',
+    icon: [576, 512, [], "f7f2", "M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"]
+  };
+  var faClipboard = {
+    prefix: 'fas',
+    iconName: 'clipboard',
+    icon: [384, 512, [], "f328", "M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"]
+  };
+  var faClipboardCheck = {
+    prefix: 'fas',
+    iconName: 'clipboard-check',
+    icon: [384, 512, [], "f46c", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"]
+  };
+  var faClipboardList = {
+    prefix: 'fas',
+    iconName: 'clipboard-list',
+    icon: [384, 512, [], "f46d", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]
+  };
+  var faClock = {
+    prefix: 'fas',
+    iconName: 'clock',
+    icon: [512, 512, [], "f017", "M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"]
+  };
+  var faClone = {
+    prefix: 'fas',
+    iconName: 'clone',
+    icon: [512, 512, [], "f24d", "M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]
+  };
+  var faClosedCaptioning = {
+    prefix: 'fas',
+    iconName: 'closed-captioning',
+    icon: [512, 512, [], "f20a", "M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"]
+  };
+  var faCloud = {
+    prefix: 'fas',
+    iconName: 'cloud',
+    icon: [640, 512, [], "f0c2", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]
+  };
+  var faCloudDownloadAlt = {
+    prefix: 'fas',
+    iconName: 'cloud-download-alt',
+    icon: [640, 512, [], "f381", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"]
+  };
+  var faCloudMeatball = {
+    prefix: 'fas',
+    iconName: 'cloud-meatball',
+    icon: [512, 512, [], "f73b", "M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"]
+  };
+  var faCloudMoon = {
+    prefix: 'fas',
+    iconName: 'cloud-moon',
+    icon: [576, 512, [], "f6c3", "M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"]
+  };
+  var faCloudMoonRain = {
+    prefix: 'fas',
+    iconName: 'cloud-moon-rain',
+    icon: [576, 512, [], "f73c", "M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]
+  };
+  var faCloudRain = {
+    prefix: 'fas',
+    iconName: 'cloud-rain',
+    icon: [512, 512, [], "f73d", "M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"]
+  };
+  var faCloudShowersHeavy = {
+    prefix: 'fas',
+    iconName: 'cloud-showers-heavy',
+    icon: [512, 512, [], "f740", "M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"]
+  };
+  var faCloudSun = {
+    prefix: 'fas',
+    iconName: 'cloud-sun',
+    icon: [640, 512, [], "f6c4", "M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"]
+  };
+  var faCloudSunRain = {
+    prefix: 'fas',
+    iconName: 'cloud-sun-rain',
+    icon: [576, 512, [], "f743", "M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]
+  };
+  var faCloudUploadAlt = {
+    prefix: 'fas',
+    iconName: 'cloud-upload-alt',
+    icon: [640, 512, [], "f382", "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]
+  };
+  var faCocktail = {
+    prefix: 'fas',
+    iconName: 'cocktail',
+    icon: [576, 512, [], "f561", "M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"]
+  };
+  var faCode = {
+    prefix: 'fas',
+    iconName: 'code',
+    icon: [640, 512, [], "f121", "M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"]
+  };
+  var faCodeBranch = {
+    prefix: 'fas',
+    iconName: 'code-branch',
+    icon: [384, 512, [], "f126", "M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"]
+  };
+  var faCoffee = {
+    prefix: 'fas',
+    iconName: 'coffee',
+    icon: [640, 512, [], "f0f4", "M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"]
+  };
+  var faCog = {
+    prefix: 'fas',
+    iconName: 'cog',
+    icon: [512, 512, [], "f013", "M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faCogs = {
+    prefix: 'fas',
+    iconName: 'cogs',
+    icon: [640, 512, [], "f085", "M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]
+  };
+  var faCoins = {
+    prefix: 'fas',
+    iconName: 'coins',
+    icon: [512, 512, [], "f51e", "M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"]
+  };
+  var faColumns = {
+    prefix: 'fas',
+    iconName: 'columns',
+    icon: [512, 512, [], "f0db", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"]
+  };
+  var faComment = {
+    prefix: 'fas',
+    iconName: 'comment',
+    icon: [512, 512, [], "f075", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]
+  };
+  var faCommentAlt = {
+    prefix: 'fas',
+    iconName: 'comment-alt',
+    icon: [512, 512, [], "f27a", "M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"]
+  };
+  var faCommentDollar = {
+    prefix: 'fas',
+    iconName: 'comment-dollar',
+    icon: [512, 512, [], "f651", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"]
+  };
+  var faCommentDots = {
+    prefix: 'fas',
+    iconName: 'comment-dots',
+    icon: [512, 512, [], "f4ad", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faCommentMedical = {
+    prefix: 'fas',
+    iconName: 'comment-medical',
+    icon: [512, 512, [], "f7f5", "M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"]
+  };
+  var faCommentSlash = {
+    prefix: 'fas',
+    iconName: 'comment-slash',
+    icon: [640, 512, [], "f4b3", "M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]
+  };
+  var faComments = {
+    prefix: 'fas',
+    iconName: 'comments',
+    icon: [576, 512, [], "f086", "M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"]
+  };
+  var faCommentsDollar = {
+    prefix: 'fas',
+    iconName: 'comments-dollar',
+    icon: [576, 512, [], "f653", "M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"]
+  };
+  var faCompactDisc = {
+    prefix: 'fas',
+    iconName: 'compact-disc',
+    icon: [496, 512, [], "f51f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]
+  };
+  var faCompass = {
+    prefix: 'fas',
+    iconName: 'compass',
+    icon: [496, 512, [], "f14e", "M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"]
+  };
+  var faCompress = {
+    prefix: 'fas',
+    iconName: 'compress',
+    icon: [448, 512, [], "f066", "M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]
+  };
+  var faCompressAlt = {
+    prefix: 'fas',
+    iconName: 'compress-alt',
+    icon: [448, 512, [], "f422", "M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"]
+  };
+  var faCompressArrowsAlt = {
+    prefix: 'fas',
+    iconName: 'compress-arrows-alt',
+    icon: [512, 512, [], "f78c", "M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"]
+  };
+  var faConciergeBell = {
+    prefix: 'fas',
+    iconName: 'concierge-bell',
+    icon: [512, 512, [], "f562", "M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faCookie = {
+    prefix: 'fas',
+    iconName: 'cookie',
+    icon: [512, 512, [], "f563", "M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faCookieBite = {
+    prefix: 'fas',
+    iconName: 'cookie-bite',
+    icon: [512, 512, [], "f564", "M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faCopy = {
+    prefix: 'fas',
+    iconName: 'copy',
+    icon: [448, 512, [], "f0c5", "M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]
+  };
+  var faCopyright = {
+    prefix: 'fas',
+    iconName: 'copyright',
+    icon: [512, 512, [], "f1f9", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"]
+  };
+  var faCouch = {
+    prefix: 'fas',
+    iconName: 'couch',
+    icon: [640, 512, [], "f4b8", "M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"]
+  };
+  var faCreditCard = {
+    prefix: 'fas',
+    iconName: 'credit-card',
+    icon: [576, 512, [], "f09d", "M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]
+  };
+  var faCrop = {
+    prefix: 'fas',
+    iconName: 'crop',
+    icon: [512, 512, [], "f125", "M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+  };
+  var faCropAlt = {
+    prefix: 'fas',
+    iconName: 'crop-alt',
+    icon: [512, 512, [], "f565", "M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"]
+  };
+  var faCross = {
+    prefix: 'fas',
+    iconName: 'cross',
+    icon: [384, 512, [], "f654", "M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+  };
+  var faCrosshairs = {
+    prefix: 'fas',
+    iconName: 'crosshairs',
+    icon: [512, 512, [], "f05b", "M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"]
+  };
+  var faCrow = {
+    prefix: 'fas',
+    iconName: 'crow',
+    icon: [640, 512, [], "f520", "M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+  };
+  var faCrown = {
+    prefix: 'fas',
+    iconName: 'crown',
+    icon: [640, 512, [], "f521", "M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"]
+  };
+  var faCrutch = {
+    prefix: 'fas',
+    iconName: 'crutch',
+    icon: [512, 512, [], "f7f7", "M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"]
+  };
+  var faCube = {
+    prefix: 'fas',
+    iconName: 'cube',
+    icon: [512, 512, [], "f1b2", "M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"]
+  };
+  var faCubes = {
+    prefix: 'fas',
+    iconName: 'cubes',
+    icon: [512, 512, [], "f1b3", "M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"]
+  };
+  var faCut = {
+    prefix: 'fas',
+    iconName: 'cut',
+    icon: [448, 512, [], "f0c4", "M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]
+  };
+  var faDatabase = {
+    prefix: 'fas',
+    iconName: 'database',
+    icon: [448, 512, [], "f1c0", "M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"]
+  };
+  var faDeaf = {
+    prefix: 'fas',
+    iconName: 'deaf',
+    icon: [512, 512, [], "f2a4", "M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"]
+  };
+  var faDemocrat = {
+    prefix: 'fas',
+    iconName: 'democrat',
+    icon: [640, 512, [], "f747", "M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"]
+  };
+  var faDesktop = {
+    prefix: 'fas',
+    iconName: 'desktop',
+    icon: [576, 512, [], "f108", "M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]
+  };
+  var faDharmachakra = {
+    prefix: 'fas',
+    iconName: 'dharmachakra',
+    icon: [512, 512, [], "f655", "M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"]
+  };
+  var faDiagnoses = {
+    prefix: 'fas',
+    iconName: 'diagnoses',
+    icon: [640, 512, [], "f470", "M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+  };
+  var faDice = {
+    prefix: 'fas',
+    iconName: 'dice',
+    icon: [640, 512, [], "f522", "M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+  };
+  var faDiceD20 = {
+    prefix: 'fas',
+    iconName: 'dice-d20',
+    icon: [480, 512, [], "f6cf", "M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"]
+  };
+  var faDiceD6 = {
+    prefix: 'fas',
+    iconName: 'dice-d6',
+    icon: [448, 512, [], "f6d1", "M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"]
+  };
+  var faDiceFive = {
+    prefix: 'fas',
+    iconName: 'dice-five',
+    icon: [448, 512, [], "f523", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDiceFour = {
+    prefix: 'fas',
+    iconName: 'dice-four',
+    icon: [448, 512, [], "f524", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDiceOne = {
+    prefix: 'fas',
+    iconName: 'dice-one',
+    icon: [448, 512, [], "f525", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDiceSix = {
+    prefix: 'fas',
+    iconName: 'dice-six',
+    icon: [448, 512, [], "f526", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDiceThree = {
+    prefix: 'fas',
+    iconName: 'dice-three',
+    icon: [448, 512, [], "f527", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDiceTwo = {
+    prefix: 'fas',
+    iconName: 'dice-two',
+    icon: [448, 512, [], "f528", "M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faDigitalTachograph = {
+    prefix: 'fas',
+    iconName: 'digital-tachograph',
+    icon: [640, 512, [], "f566", "M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"]
+  };
+  var faDirections = {
+    prefix: 'fas',
+    iconName: 'directions',
+    icon: [512, 512, [], "f5eb", "M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"]
+  };
+  var faDisease = {
+    prefix: 'fas',
+    iconName: 'disease',
+    icon: [512, 512, [], "f7fa", "M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"]
+  };
+  var faDivide = {
+    prefix: 'fas',
+    iconName: 'divide',
+    icon: [448, 512, [], "f529", "M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+  };
+  var faDizzy = {
+    prefix: 'fas',
+    iconName: 'dizzy',
+    icon: [496, 512, [], "f567", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"]
+  };
+  var faDna = {
+    prefix: 'fas',
+    iconName: 'dna',
+    icon: [448, 512, [], "f471", "M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"]
+  };
+  var faDog = {
+    prefix: 'fas',
+    iconName: 'dog',
+    icon: [576, 512, [], "f6d3", "M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"]
+  };
+  var faDollarSign = {
+    prefix: 'fas',
+    iconName: 'dollar-sign',
+    icon: [288, 512, [], "f155", "M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"]
+  };
+  var faDolly = {
+    prefix: 'fas',
+    iconName: 'dolly',
+    icon: [576, 512, [], "f472", "M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+  };
+  var faDollyFlatbed = {
+    prefix: 'fas',
+    iconName: 'dolly-flatbed',
+    icon: [640, 512, [], "f474", "M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+  };
+  var faDonate = {
+    prefix: 'fas',
+    iconName: 'donate',
+    icon: [512, 512, [], "f4b9", "M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"]
+  };
+  var faDoorClosed = {
+    prefix: 'fas',
+    iconName: 'door-closed',
+    icon: [640, 512, [], "f52a", "M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"]
+  };
+  var faDoorOpen = {
+    prefix: 'fas',
+    iconName: 'door-open',
+    icon: [640, 512, [], "f52b", "M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"]
+  };
+  var faDotCircle = {
+    prefix: 'fas',
+    iconName: 'dot-circle',
+    icon: [512, 512, [], "f192", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"]
+  };
+  var faDove = {
+    prefix: 'fas',
+    iconName: 'dove',
+    icon: [512, 512, [], "f4ba", "M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+  };
+  var faDownload = {
+    prefix: 'fas',
+    iconName: 'download',
+    icon: [512, 512, [], "f019", "M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]
+  };
+  var faDraftingCompass = {
+    prefix: 'fas',
+    iconName: 'drafting-compass',
+    icon: [512, 512, [], "f568", "M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"]
+  };
+  var faDragon = {
+    prefix: 'fas',
+    iconName: 'dragon',
+    icon: [640, 512, [], "f6d5", "M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"]
+  };
+  var faDrawPolygon = {
+    prefix: 'fas',
+    iconName: 'draw-polygon',
+    icon: [448, 512, [], "f5ee", "M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"]
+  };
+  var faDrum = {
+    prefix: 'fas',
+    iconName: 'drum',
+    icon: [512, 512, [], "f569", "M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"]
+  };
+  var faDrumSteelpan = {
+    prefix: 'fas',
+    iconName: 'drum-steelpan',
+    icon: [576, 512, [], "f56a", "M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"]
+  };
+  var faDrumstickBite = {
+    prefix: 'fas',
+    iconName: 'drumstick-bite',
+    icon: [512, 512, [], "f6d7", "M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"]
+  };
+  var faDumbbell = {
+    prefix: 'fas',
+    iconName: 'dumbbell',
+    icon: [640, 512, [], "f44b", "M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"]
+  };
+  var faDumpster = {
+    prefix: 'fas',
+    iconName: 'dumpster',
+    icon: [576, 512, [], "f793", "M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+  };
+  var faDumpsterFire = {
+    prefix: 'fas',
+    iconName: 'dumpster-fire',
+    icon: [640, 512, [], "f794", "M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"]
+  };
+  var faDungeon = {
+    prefix: 'fas',
+    iconName: 'dungeon',
+    icon: [512, 512, [], "f6d9", "M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"]
+  };
+  var faEdit = {
+    prefix: 'fas',
+    iconName: 'edit',
+    icon: [576, 512, [], "f044", "M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]
+  };
+  var faEgg = {
+    prefix: 'fas',
+    iconName: 'egg',
+    icon: [384, 512, [], "f7fb", "M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"]
+  };
+  var faEject = {
+    prefix: 'fas',
+    iconName: 'eject',
+    icon: [448, 512, [], "f052", "M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"]
+  };
+  var faEllipsisH = {
+    prefix: 'fas',
+    iconName: 'ellipsis-h',
+    icon: [512, 512, [], "f141", "M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]
+  };
+  var faEllipsisV = {
+    prefix: 'fas',
+    iconName: 'ellipsis-v',
+    icon: [192, 512, [], "f142", "M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]
+  };
+  var faEnvelope = {
+    prefix: 'fas',
+    iconName: 'envelope',
+    icon: [512, 512, [], "f0e0", "M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]
+  };
+  var faEnvelopeOpen = {
+    prefix: 'fas',
+    iconName: 'envelope-open',
+    icon: [512, 512, [], "f2b6", "M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"]
+  };
+  var faEnvelopeOpenText = {
+    prefix: 'fas',
+    iconName: 'envelope-open-text',
+    icon: [512, 512, [], "f658", "M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]
+  };
+  var faEnvelopeSquare = {
+    prefix: 'fas',
+    iconName: 'envelope-square',
+    icon: [448, 512, [], "f199", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"]
+  };
+  var faEquals = {
+    prefix: 'fas',
+    iconName: 'equals',
+    icon: [448, 512, [], "f52c", "M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+  };
+  var faEraser = {
+    prefix: 'fas',
+    iconName: 'eraser',
+    icon: [512, 512, [], "f12d", "M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"]
+  };
+  var faEthernet = {
+    prefix: 'fas',
+    iconName: 'ethernet',
+    icon: [512, 512, [], "f796", "M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]
+  };
+  var faEuroSign = {
+    prefix: 'fas',
+    iconName: 'euro-sign',
+    icon: [320, 512, [], "f153", "M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"]
+  };
+  var faExchangeAlt = {
+    prefix: 'fas',
+    iconName: 'exchange-alt',
+    icon: [512, 512, [], "f362", "M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"]
+  };
+  var faExclamation = {
+    prefix: 'fas',
+    iconName: 'exclamation',
+    icon: [192, 512, [], "f12a", "M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"]
+  };
+  var faExclamationCircle = {
+    prefix: 'fas',
+    iconName: 'exclamation-circle',
+    icon: [512, 512, [], "f06a", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]
+  };
+  var faExclamationTriangle = {
+    prefix: 'fas',
+    iconName: 'exclamation-triangle',
+    icon: [576, 512, [], "f071", "M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]
+  };
+  var faExpand = {
+    prefix: 'fas',
+    iconName: 'expand',
+    icon: [448, 512, [], "f065", "M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"]
+  };
+  var faExpandAlt = {
+    prefix: 'fas',
+    iconName: 'expand-alt',
+    icon: [448, 512, [], "f424", "M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"]
+  };
+  var faExpandArrowsAlt = {
+    prefix: 'fas',
+    iconName: 'expand-arrows-alt',
+    icon: [448, 512, [], "f31e", "M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]
+  };
+  var faExternalLinkAlt = {
+    prefix: 'fas',
+    iconName: 'external-link-alt',
+    icon: [512, 512, [], "f35d", "M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"]
+  };
+  var faExternalLinkSquareAlt = {
+    prefix: 'fas',
+    iconName: 'external-link-square-alt',
+    icon: [448, 512, [], "f360", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"]
+  };
+  var faEye = {
+    prefix: 'fas',
+    iconName: 'eye',
+    icon: [576, 512, [], "f06e", "M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]
+  };
+  var faEyeDropper = {
+    prefix: 'fas',
+    iconName: 'eye-dropper',
+    icon: [512, 512, [], "f1fb", "M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"]
+  };
+  var faEyeSlash = {
+    prefix: 'fas',
+    iconName: 'eye-slash',
+    icon: [640, 512, [], "f070", "M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]
+  };
+  var faFan = {
+    prefix: 'fas',
+    iconName: 'fan',
+    icon: [512, 512, [], "f863", "M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]
+  };
+  var faFastBackward = {
+    prefix: 'fas',
+    iconName: 'fast-backward',
+    icon: [512, 512, [], "f049", "M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"]
+  };
+  var faFastForward = {
+    prefix: 'fas',
+    iconName: 'fast-forward',
+    icon: [512, 512, [], "f050", "M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"]
+  };
+  var faFaucet = {
+    prefix: 'fas',
+    iconName: 'faucet',
+    icon: [512, 512, [], "e005", "M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"]
+  };
+  var faFax = {
+    prefix: 'fas',
+    iconName: 'fax',
+    icon: [512, 512, [], "f1ac", "M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"]
+  };
+  var faFeather = {
+    prefix: 'fas',
+    iconName: 'feather',
+    icon: [512, 512, [], "f52d", "M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"]
+  };
+  var faFeatherAlt = {
+    prefix: 'fas',
+    iconName: 'feather-alt',
+    icon: [512, 512, [], "f56b", "M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"]
+  };
+  var faFemale = {
+    prefix: 'fas',
+    iconName: 'female',
+    icon: [256, 512, [], "f182", "M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"]
+  };
+  var faFighterJet = {
+    prefix: 'fas',
+    iconName: 'fighter-jet',
+    icon: [640, 512, [], "f0fb", "M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"]
+  };
+  var faFile = {
+    prefix: 'fas',
+    iconName: 'file',
+    icon: [384, 512, [], "f15b", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFileAlt = {
+    prefix: 'fas',
+    iconName: 'file-alt',
+    icon: [384, 512, [], "f15c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFileArchive = {
+    prefix: 'fas',
+    iconName: 'file-archive',
+    icon: [384, 512, [], "f1c6", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"]
+  };
+  var faFileAudio = {
+    prefix: 'fas',
+    iconName: 'file-audio',
+    icon: [384, 512, [], "f1c7", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFileCode = {
+    prefix: 'fas',
+    iconName: 'file-code',
+    icon: [384, 512, [], "f1c9", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"]
+  };
+  var faFileContract = {
+    prefix: 'fas',
+    iconName: 'file-contract',
+    icon: [384, 512, [], "f56c", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+  };
+  var faFileCsv = {
+    prefix: 'fas',
+    iconName: 'file-csv',
+    icon: [384, 512, [], "f6dd", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+  };
+  var faFileDownload = {
+    prefix: 'fas',
+    iconName: 'file-download',
+    icon: [384, 512, [], "f56d", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+  };
+  var faFileExcel = {
+    prefix: 'fas',
+    iconName: 'file-excel',
+    icon: [384, 512, [], "f1c3", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFileExport = {
+    prefix: 'fas',
+    iconName: 'file-export',
+    icon: [576, 512, [], "f56e", "M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"]
+  };
+  var faFileImage = {
+    prefix: 'fas',
+    iconName: 'file-image',
+    icon: [384, 512, [], "f1c5", "M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]
+  };
+  var faFileImport = {
+    prefix: 'fas',
+    iconName: 'file-import',
+    icon: [512, 512, [], "f56f", "M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"]
+  };
+  var faFileInvoice = {
+    prefix: 'fas',
+    iconName: 'file-invoice',
+    icon: [384, 512, [], "f570", "M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"]
+  };
+  var faFileInvoiceDollar = {
+    prefix: 'fas',
+    iconName: 'file-invoice-dollar',
+    icon: [384, 512, [], "f571", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"]
+  };
+  var faFileMedical = {
+    prefix: 'fas',
+    iconName: 'file-medical',
+    icon: [384, 512, [], "f477", "M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"]
+  };
+  var faFileMedicalAlt = {
+    prefix: 'fas',
+    iconName: 'file-medical-alt',
+    icon: [448, 512, [], "f478", "M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+  };
+  var faFilePdf = {
+    prefix: 'fas',
+    iconName: 'file-pdf',
+    icon: [384, 512, [], "f1c1", "M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"]
+  };
+  var faFilePowerpoint = {
+    prefix: 'fas',
+    iconName: 'file-powerpoint',
+    icon: [384, 512, [], "f1c4", "M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"]
+  };
+  var faFilePrescription = {
+    prefix: 'fas',
+    iconName: 'file-prescription',
+    icon: [384, 512, [], "f572", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFileSignature = {
+    prefix: 'fas',
+    iconName: 'file-signature',
+    icon: [576, 512, [], "f573", "M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"]
+  };
+  var faFileUpload = {
+    prefix: 'fas',
+    iconName: 'file-upload',
+    icon: [384, 512, [], "f574", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]
+  };
+  var faFileVideo = {
+    prefix: 'fas',
+    iconName: 'file-video',
+    icon: [384, 512, [], "f1c8", "M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]
+  };
+  var faFileWord = {
+    prefix: 'fas',
+    iconName: 'file-word',
+    icon: [384, 512, [], "f1c2", "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]
+  };
+  var faFill = {
+    prefix: 'fas',
+    iconName: 'fill',
+    icon: [512, 512, [], "f575", "M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"]
+  };
+  var faFillDrip = {
+    prefix: 'fas',
+    iconName: 'fill-drip',
+    icon: [576, 512, [], "f576", "M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"]
+  };
+  var faFilm = {
+    prefix: 'fas',
+    iconName: 'film',
+    icon: [512, 512, [], "f008", "M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]
+  };
+  var faFilter = {
+    prefix: 'fas',
+    iconName: 'filter',
+    icon: [512, 512, [], "f0b0", "M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]
+  };
+  var faFingerprint = {
+    prefix: 'fas',
+    iconName: 'fingerprint',
+    icon: [512, 512, [], "f577", "M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]
+  };
+  var faFire = {
+    prefix: 'fas',
+    iconName: 'fire',
+    icon: [384, 512, [], "f06d", "M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"]
+  };
+  var faFireAlt = {
+    prefix: 'fas',
+    iconName: 'fire-alt',
+    icon: [448, 512, [], "f7e4", "M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"]
+  };
+  var faFireExtinguisher = {
+    prefix: 'fas',
+    iconName: 'fire-extinguisher',
+    icon: [448, 512, [], "f134", "M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"]
+  };
+  var faFirstAid = {
+    prefix: 'fas',
+    iconName: 'first-aid',
+    icon: [576, 512, [], "f479", "M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+  };
+  var faFish = {
+    prefix: 'fas',
+    iconName: 'fish',
+    icon: [576, 512, [], "f578", "M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]
+  };
+  var faFistRaised = {
+    prefix: 'fas',
+    iconName: 'fist-raised',
+    icon: [384, 512, [], "f6de", "M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"]
+  };
+  var faFlag = {
+    prefix: 'fas',
+    iconName: 'flag',
+    icon: [512, 512, [], "f024", "M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"]
+  };
+  var faFlagCheckered = {
+    prefix: 'fas',
+    iconName: 'flag-checkered',
+    icon: [512, 512, [], "f11e", "M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"]
+  };
+  var faFlagUsa = {
+    prefix: 'fas',
+    iconName: 'flag-usa',
+    icon: [512, 512, [], "f74d", "M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"]
+  };
+  var faFlask = {
+    prefix: 'fas',
+    iconName: 'flask',
+    icon: [448, 512, [], "f0c3", "M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"]
+  };
+  var faFlushed = {
+    prefix: 'fas',
+    iconName: 'flushed',
+    icon: [496, 512, [], "f579", "M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"]
+  };
+  var faFolder = {
+    prefix: 'fas',
+    iconName: 'folder',
+    icon: [512, 512, [], "f07b", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]
+  };
+  var faFolderMinus = {
+    prefix: 'fas',
+    iconName: 'folder-minus',
+    icon: [512, 512, [], "f65d", "M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"]
+  };
+  var faFolderOpen = {
+    prefix: 'fas',
+    iconName: 'folder-open',
+    icon: [576, 512, [], "f07c", "M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]
+  };
+  var faFolderPlus = {
+    prefix: 'fas',
+    iconName: 'folder-plus',
+    icon: [512, 512, [], "f65e", "M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]
+  };
+  var faFont = {
+    prefix: 'fas',
+    iconName: 'font',
+    icon: [448, 512, [], "f031", "M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"]
+  };
+  var faFontAwesomeLogoFull = {
+    prefix: 'fas',
+    iconName: 'font-awesome-logo-full',
+    icon: [3992, 512, ["Font Awesome"], "f4e6", "M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]
+  };
+  var faFootballBall = {
+    prefix: 'fas',
+    iconName: 'football-ball',
+    icon: [496, 512, [], "f44e", "M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"]
+  };
+  var faForward = {
+    prefix: 'fas',
+    iconName: 'forward',
+    icon: [512, 512, [], "f04e", "M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]
+  };
+  var faFrog = {
+    prefix: 'fas',
+    iconName: 'frog',
+    icon: [576, 512, [], "f52e", "M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]
+  };
+  var faFrown = {
+    prefix: 'fas',
+    iconName: 'frown',
+    icon: [496, 512, [], "f119", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"]
+  };
+  var faFrownOpen = {
+    prefix: 'fas',
+    iconName: 'frown-open',
+    icon: [496, 512, [], "f57a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faFunnelDollar = {
+    prefix: 'fas',
+    iconName: 'funnel-dollar',
+    icon: [640, 512, [], "f662", "M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"]
+  };
+  var faFutbol = {
+    prefix: 'fas',
+    iconName: 'futbol',
+    icon: [512, 512, [], "f1e3", "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"]
+  };
+  var faGamepad = {
+    prefix: 'fas',
+    iconName: 'gamepad',
+    icon: [640, 512, [], "f11b", "M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"]
+  };
+  var faGasPump = {
+    prefix: 'fas',
+    iconName: 'gas-pump',
+    icon: [512, 512, [], "f52f", "M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"]
+  };
+  var faGavel = {
+    prefix: 'fas',
+    iconName: 'gavel',
+    icon: [512, 512, [], "f0e3", "M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"]
+  };
+  var faGem = {
+    prefix: 'fas',
+    iconName: 'gem',
+    icon: [576, 512, [], "f3a5", "M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"]
+  };
+  var faGenderless = {
+    prefix: 'fas',
+    iconName: 'genderless',
+    icon: [288, 512, [], "f22d", "M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"]
+  };
+  var faGhost = {
+    prefix: 'fas',
+    iconName: 'ghost',
+    icon: [384, 512, [], "f6e2", "M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faGift = {
+    prefix: 'fas',
+    iconName: 'gift',
+    icon: [512, 512, [], "f06b", "M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"]
+  };
+  var faGifts = {
+    prefix: 'fas',
+    iconName: 'gifts',
+    icon: [640, 512, [], "f79c", "M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"]
+  };
+  var faGlassCheers = {
+    prefix: 'fas',
+    iconName: 'glass-cheers',
+    icon: [640, 512, [], "f79f", "M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"]
+  };
+  var faGlassMartini = {
+    prefix: 'fas',
+    iconName: 'glass-martini',
+    icon: [512, 512, [], "f000", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"]
+  };
+  var faGlassMartiniAlt = {
+    prefix: 'fas',
+    iconName: 'glass-martini-alt',
+    icon: [512, 512, [], "f57b", "M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"]
+  };
+  var faGlassWhiskey = {
+    prefix: 'fas',
+    iconName: 'glass-whiskey',
+    icon: [512, 512, [], "f7a0", "M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"]
+  };
+  var faGlasses = {
+    prefix: 'fas',
+    iconName: 'glasses',
+    icon: [576, 512, [], "f530", "M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"]
+  };
+  var faGlobe = {
+    prefix: 'fas',
+    iconName: 'globe',
+    icon: [496, 512, [], "f0ac", "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"]
+  };
+  var faGlobeAfrica = {
+    prefix: 'fas',
+    iconName: 'globe-africa',
+    icon: [496, 512, [], "f57c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"]
+  };
+  var faGlobeAmericas = {
+    prefix: 'fas',
+    iconName: 'globe-americas',
+    icon: [496, 512, [], "f57d", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"]
+  };
+  var faGlobeAsia = {
+    prefix: 'fas',
+    iconName: 'globe-asia',
+    icon: [496, 512, [], "f57e", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"]
+  };
+  var faGlobeEurope = {
+    prefix: 'fas',
+    iconName: 'globe-europe',
+    icon: [496, 512, [], "f7a2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"]
+  };
+  var faGolfBall = {
+    prefix: 'fas',
+    iconName: 'golf-ball',
+    icon: [416, 512, [], "f450", "M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"]
+  };
+  var faGopuram = {
+    prefix: 'fas',
+    iconName: 'gopuram',
+    icon: [512, 512, [], "f664", "M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"]
+  };
+  var faGraduationCap = {
+    prefix: 'fas',
+    iconName: 'graduation-cap',
+    icon: [640, 512, [], "f19d", "M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"]
+  };
+  var faGreaterThan = {
+    prefix: 'fas',
+    iconName: 'greater-than',
+    icon: [384, 512, [], "f531", "M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"]
+  };
+  var faGreaterThanEqual = {
+    prefix: 'fas',
+    iconName: 'greater-than-equal',
+    icon: [448, 512, [], "f532", "M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+  };
+  var faGrimace = {
+    prefix: 'fas',
+    iconName: 'grimace',
+    icon: [496, 512, [], "f57f", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"]
+  };
+  var faGrin = {
+    prefix: 'fas',
+    iconName: 'grin',
+    icon: [496, 512, [], "f580", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinAlt = {
+    prefix: 'fas',
+    iconName: 'grin-alt',
+    icon: [496, 512, [], "f581", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinBeam = {
+    prefix: 'fas',
+    iconName: 'grin-beam',
+    icon: [496, 512, [], "f582", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinBeamSweat = {
+    prefix: 'fas',
+    iconName: 'grin-beam-sweat',
+    icon: [504, 512, [], "f583", "M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinHearts = {
+    prefix: 'fas',
+    iconName: 'grin-hearts',
+    icon: [496, 512, [], "f584", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"]
+  };
+  var faGrinSquint = {
+    prefix: 'fas',
+    iconName: 'grin-squint',
+    icon: [496, 512, [], "f585", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinSquintTears = {
+    prefix: 'fas',
+    iconName: 'grin-squint-tears',
+    icon: [512, 512, [], "f586", "M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"]
+  };
+  var faGrinStars = {
+    prefix: 'fas',
+    iconName: 'grin-stars',
+    icon: [496, 512, [], "f587", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"]
+  };
+  var faGrinTears = {
+    prefix: 'fas',
+    iconName: 'grin-tears',
+    icon: [640, 512, [], "f588", "M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]
+  };
+  var faGrinTongue = {
+    prefix: 'fas',
+    iconName: 'grin-tongue',
+    icon: [496, 512, [], "f589", "M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]
+  };
+  var faGrinTongueSquint = {
+    prefix: 'fas',
+    iconName: 'grin-tongue-squint',
+    icon: [496, 512, [], "f58a", "M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"]
+  };
+  var faGrinTongueWink = {
+    prefix: 'fas',
+    iconName: 'grin-tongue-wink',
+    icon: [496, 512, [], "f58b", "M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]
+  };
+  var faGrinWink = {
+    prefix: 'fas',
+    iconName: 'grin-wink',
+    icon: [496, 512, [], "f58c", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"]
+  };
+  var faGripHorizontal = {
+    prefix: 'fas',
+    iconName: 'grip-horizontal',
+    icon: [448, 512, [], "f58d", "M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+  };
+  var faGripLines = {
+    prefix: 'fas',
+    iconName: 'grip-lines',
+    icon: [512, 512, [], "f7a4", "M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]
+  };
+  var faGripLinesVertical = {
+    prefix: 'fas',
+    iconName: 'grip-lines-vertical',
+    icon: [256, 512, [], "f7a5", "M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"]
+  };
+  var faGripVertical = {
+    prefix: 'fas',
+    iconName: 'grip-vertical',
+    icon: [320, 512, [], "f58e", "M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]
+  };
+  var faGuitar = {
+    prefix: 'fas',
+    iconName: 'guitar',
+    icon: [512, 512, [], "f7a6", "M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]
+  };
+  var faHSquare = {
+    prefix: 'fas',
+    iconName: 'h-square',
+    icon: [448, 512, [], "f0fd", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"]
+  };
+  var faHamburger = {
+    prefix: 'fas',
+    iconName: 'hamburger',
+    icon: [512, 512, [], "f805", "M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"]
+  };
+  var faHammer = {
+    prefix: 'fas',
+    iconName: 'hammer',
+    icon: [576, 512, [], "f6e3", "M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"]
+  };
+  var faHamsa = {
+    prefix: 'fas',
+    iconName: 'hamsa',
+    icon: [512, 512, [], "f665", "M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+  };
+  var faHandHolding = {
+    prefix: 'fas',
+    iconName: 'hand-holding',
+    icon: [576, 512, [], "f4bd", "M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+  };
+  var faHandHoldingHeart = {
+    prefix: 'fas',
+    iconName: 'hand-holding-heart',
+    icon: [576, 512, [], "f4be", "M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+  };
+  var faHandHoldingMedical = {
+    prefix: 'fas',
+    iconName: 'hand-holding-medical',
+    icon: [576, 512, [], "e05c", "M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"]
+  };
+  var faHandHoldingUsd = {
+    prefix: 'fas',
+    iconName: 'hand-holding-usd',
+    icon: [576, 512, [], "f4c0", "M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"]
+  };
+  var faHandHoldingWater = {
+    prefix: 'fas',
+    iconName: 'hand-holding-water',
+    icon: [576, 512, [], "f4c1", "M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]
+  };
+  var faHandLizard = {
+    prefix: 'fas',
+    iconName: 'hand-lizard',
+    icon: [576, 512, [], "f258", "M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"]
+  };
+  var faHandMiddleFinger = {
+    prefix: 'fas',
+    iconName: 'hand-middle-finger',
+    icon: [512, 512, [], "f806", "M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"]
+  };
+  var faHandPaper = {
+    prefix: 'fas',
+    iconName: 'hand-paper',
+    icon: [448, 512, [], "f256", "M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"]
+  };
+  var faHandPeace = {
+    prefix: 'fas',
+    iconName: 'hand-peace',
+    icon: [448, 512, [], "f25b", "M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"]
+  };
+  var faHandPointDown = {
+    prefix: 'fas',
+    iconName: 'hand-point-down',
+    icon: [384, 512, [], "f0a7", "M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]
+  };
+  var faHandPointLeft = {
+    prefix: 'fas',
+    iconName: 'hand-point-left',
+    icon: [512, 512, [], "f0a5", "M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"]
+  };
+  var faHandPointRight = {
+    prefix: 'fas',
+    iconName: 'hand-point-right',
+    icon: [512, 512, [], "f0a4", "M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]
+  };
+  var faHandPointUp = {
+    prefix: 'fas',
+    iconName: 'hand-point-up',
+    icon: [384, 512, [], "f0a6", "M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"]
+  };
+  var faHandPointer = {
+    prefix: 'fas',
+    iconName: 'hand-pointer',
+    icon: [448, 512, [], "f25a", "M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"]
+  };
+  var faHandRock = {
+    prefix: 'fas',
+    iconName: 'hand-rock',
+    icon: [512, 512, [], "f255", "M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"]
+  };
+  var faHandScissors = {
+    prefix: 'fas',
+    iconName: 'hand-scissors',
+    icon: [512, 512, [], "f257", "M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"]
+  };
+  var faHandSparkles = {
+    prefix: 'fas',
+    iconName: 'hand-sparkles',
+    icon: [640, 512, [], "e05d", "M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"]
+  };
+  var faHandSpock = {
+    prefix: 'fas',
+    iconName: 'hand-spock',
+    icon: [512, 512, [], "f259", "M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"]
+  };
+  var faHands = {
+    prefix: 'fas',
+    iconName: 'hands',
+    icon: [640, 512, [], "f4c2", "M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"]
+  };
+  var faHandsHelping = {
+    prefix: 'fas',
+    iconName: 'hands-helping',
+    icon: [640, 512, [], "f4c4", "M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"]
+  };
+  var faHandsWash = {
+    prefix: 'fas',
+    iconName: 'hands-wash',
+    icon: [576, 512, [], "e05e", "M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"]
+  };
+  var faHandshake = {
+    prefix: 'fas',
+    iconName: 'handshake',
+    icon: [640, 512, [], "f2b5", "M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"]
+  };
+  var faHandshakeAltSlash = {
+    prefix: 'fas',
+    iconName: 'handshake-alt-slash',
+    icon: [640, 512, [], "e05f", "M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"]
+  };
+  var faHandshakeSlash = {
+    prefix: 'fas',
+    iconName: 'handshake-slash',
+    icon: [640, 512, [], "e060", "M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"]
+  };
+  var faHanukiah = {
+    prefix: 'fas',
+    iconName: 'hanukiah',
+    icon: [640, 512, [], "f6e6", "M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"]
+  };
+  var faHardHat = {
+    prefix: 'fas',
+    iconName: 'hard-hat',
+    icon: [512, 512, [], "f807", "M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faHashtag = {
+    prefix: 'fas',
+    iconName: 'hashtag',
+    icon: [448, 512, [], "f292", "M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"]
+  };
+  var faHatCowboy = {
+    prefix: 'fas',
+    iconName: 'hat-cowboy',
+    icon: [640, 512, [], "f8c0", "M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"]
+  };
+  var faHatCowboySide = {
+    prefix: 'fas',
+    iconName: 'hat-cowboy-side',
+    icon: [640, 512, [], "f8c1", "M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"]
+  };
+  var faHatWizard = {
+    prefix: 'fas',
+    iconName: 'hat-wizard',
+    icon: [512, 512, [], "f6e8", "M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"]
+  };
+  var faHdd = {
+    prefix: 'fas',
+    iconName: 'hdd',
+    icon: [576, 512, [], "f0a0", "M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]
+  };
+  var faHeadSideCough = {
+    prefix: 'fas',
+    iconName: 'head-side-cough',
+    icon: [640, 512, [], "e061", "M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"]
+  };
+  var faHeadSideCoughSlash = {
+    prefix: 'fas',
+    iconName: 'head-side-cough-slash',
+    icon: [640, 512, [], "e062", "M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"]
+  };
+  var faHeadSideMask = {
+    prefix: 'fas',
+    iconName: 'head-side-mask',
+    icon: [512, 512, [], "e063", "M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"]
+  };
+  var faHeadSideVirus = {
+    prefix: 'fas',
+    iconName: 'head-side-virus',
+    icon: [512, 512, [], "e064", "M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"]
+  };
+  var faHeading = {
+    prefix: 'fas',
+    iconName: 'heading',
+    icon: [512, 512, [], "f1dc", "M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"]
+  };
+  var faHeadphones = {
+    prefix: 'fas',
+    iconName: 'headphones',
+    icon: [512, 512, [], "f025", "M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"]
+  };
+  var faHeadphonesAlt = {
+    prefix: 'fas',
+    iconName: 'headphones-alt',
+    icon: [512, 512, [], "f58f", "M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"]
+  };
+  var faHeadset = {
+    prefix: 'fas',
+    iconName: 'headset',
+    icon: [512, 512, [], "f590", "M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"]
+  };
+  var faHeart = {
+    prefix: 'fas',
+    iconName: 'heart',
+    icon: [512, 512, [], "f004", "M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"]
+  };
+  var faHeartBroken = {
+    prefix: 'fas',
+    iconName: 'heart-broken',
+    icon: [512, 512, [], "f7a9", "M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"]
+  };
+  var faHeartbeat = {
+    prefix: 'fas',
+    iconName: 'heartbeat',
+    icon: [512, 512, [], "f21e", "M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"]
+  };
+  var faHelicopter = {
+    prefix: 'fas',
+    iconName: 'helicopter',
+    icon: [640, 512, [], "f533", "M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"]
+  };
+  var faHighlighter = {
+    prefix: 'fas',
+    iconName: 'highlighter',
+    icon: [544, 512, [], "f591", "M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"]
+  };
+  var faHiking = {
+    prefix: 'fas',
+    iconName: 'hiking',
+    icon: [384, 512, [], "f6ec", "M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"]
+  };
+  var faHippo = {
+    prefix: 'fas',
+    iconName: 'hippo',
+    icon: [640, 512, [], "f6ed", "M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+  };
+  var faHistory = {
+    prefix: 'fas',
+    iconName: 'history',
+    icon: [512, 512, [], "f1da", "M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]
+  };
+  var faHockeyPuck = {
+    prefix: 'fas',
+    iconName: 'hockey-puck',
+    icon: [512, 512, [], "f453", "M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"]
+  };
+  var faHollyBerry = {
+    prefix: 'fas',
+    iconName: 'holly-berry',
+    icon: [448, 512, [], "f7aa", "M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"]
+  };
+  var faHome = {
+    prefix: 'fas',
+    iconName: 'home',
+    icon: [576, 512, [], "f015", "M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]
+  };
+  var faHorse = {
+    prefix: 'fas',
+    iconName: 'horse',
+    icon: [576, 512, [], "f6f0", "M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]
+  };
+  var faHorseHead = {
+    prefix: 'fas',
+    iconName: 'horse-head',
+    icon: [512, 512, [], "f7ab", "M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"]
+  };
+  var faHospital = {
+    prefix: 'fas',
+    iconName: 'hospital',
+    icon: [448, 512, [], "f0f8", "M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"]
+  };
+  var faHospitalAlt = {
+    prefix: 'fas',
+    iconName: 'hospital-alt',
+    icon: [576, 512, [], "f47d", "M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]
+  };
+  var faHospitalSymbol = {
+    prefix: 'fas',
+    iconName: 'hospital-symbol',
+    icon: [512, 512, [], "f47e", "M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"]
+  };
+  var faHospitalUser = {
+    prefix: 'fas',
+    iconName: 'hospital-user',
+    icon: [640, 512, [], "f80d", "M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"]
+  };
+  var faHotTub = {
+    prefix: 'fas',
+    iconName: 'hot-tub',
+    icon: [512, 512, [], "f593", "M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"]
+  };
+  var faHotdog = {
+    prefix: 'fas',
+    iconName: 'hotdog',
+    icon: [512, 512, [], "f80f", "M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"]
+  };
+  var faHotel = {
+    prefix: 'fas',
+    iconName: 'hotel',
+    icon: [576, 512, [], "f594", "M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]
+  };
+  var faHourglass = {
+    prefix: 'fas',
+    iconName: 'hourglass',
+    icon: [384, 512, [], "f254", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"]
+  };
+  var faHourglassEnd = {
+    prefix: 'fas',
+    iconName: 'hourglass-end',
+    icon: [384, 512, [], "f253", "M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"]
+  };
+  var faHourglassHalf = {
+    prefix: 'fas',
+    iconName: 'hourglass-half',
+    icon: [384, 512, [], "f252", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"]
+  };
+  var faHourglassStart = {
+    prefix: 'fas',
+    iconName: 'hourglass-start',
+    icon: [384, 512, [], "f251", "M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"]
+  };
+  var faHouseDamage = {
+    prefix: 'fas',
+    iconName: 'house-damage',
+    icon: [576, 512, [], "f6f1", "M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"]
+  };
+  var faHouseUser = {
+    prefix: 'fas',
+    iconName: 'house-user',
+    icon: [576, 512, [], "e065", "M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"]
+  };
+  var faHryvnia = {
+    prefix: 'fas',
+    iconName: 'hryvnia',
+    icon: [384, 512, [], "f6f2", "M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"]
+  };
+  var faICursor = {
+    prefix: 'fas',
+    iconName: 'i-cursor',
+    icon: [256, 512, [], "f246", "M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"]
+  };
+  var faIceCream = {
+    prefix: 'fas',
+    iconName: 'ice-cream',
+    icon: [448, 512, [], "f810", "M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"]
+  };
+  var faIcicles = {
+    prefix: 'fas',
+    iconName: 'icicles',
+    icon: [512, 512, [], "f7ad", "M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"]
+  };
+  var faIcons = {
+    prefix: 'fas',
+    iconName: 'icons',
+    icon: [512, 512, [], "f86d", "M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"]
+  };
+  var faIdBadge = {
+    prefix: 'fas',
+    iconName: 'id-badge',
+    icon: [384, 512, [], "f2c1", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+  };
+  var faIdCard = {
+    prefix: 'fas',
+    iconName: 'id-card',
+    icon: [576, 512, [], "f2c2", "M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"]
+  };
+  var faIdCardAlt = {
+    prefix: 'fas',
+    iconName: 'id-card-alt',
+    icon: [576, 512, [], "f47f", "M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"]
+  };
+  var faIgloo = {
+    prefix: 'fas',
+    iconName: 'igloo',
+    icon: [576, 512, [], "f7ae", "M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"]
+  };
+  var faImage = {
+    prefix: 'fas',
+    iconName: 'image',
+    icon: [512, 512, [], "f03e", "M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]
+  };
+  var faImages = {
+    prefix: 'fas',
+    iconName: 'images',
+    icon: [576, 512, [], "f302", "M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"]
+  };
+  var faInbox = {
+    prefix: 'fas',
+    iconName: 'inbox',
+    icon: [576, 512, [], "f01c", "M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"]
+  };
+  var faIndent = {
+    prefix: 'fas',
+    iconName: 'indent',
+    icon: [448, 512, [], "f03c", "M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faIndustry = {
+    prefix: 'fas',
+    iconName: 'industry',
+    icon: [512, 512, [], "f275", "M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"]
+  };
+  var faInfinity = {
+    prefix: 'fas',
+    iconName: 'infinity',
+    icon: [640, 512, [], "f534", "M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]
+  };
+  var faInfo = {
+    prefix: 'fas',
+    iconName: 'info',
+    icon: [192, 512, [], "f129", "M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]
+  };
+  var faInfoCircle = {
+    prefix: 'fas',
+    iconName: 'info-circle',
+    icon: [512, 512, [], "f05a", "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]
+  };
+  var faItalic = {
+    prefix: 'fas',
+    iconName: 'italic',
+    icon: [320, 512, [], "f033", "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]
+  };
+  var faJedi = {
+    prefix: 'fas',
+    iconName: 'jedi',
+    icon: [576, 512, [], "f669", "M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"]
+  };
+  var faJoint = {
+    prefix: 'fas',
+    iconName: 'joint',
+    icon: [640, 512, [], "f595", "M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"]
+  };
+  var faJournalWhills = {
+    prefix: 'fas',
+    iconName: 'journal-whills',
+    icon: [448, 512, [], "f66a", "M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"]
+  };
+  var faKaaba = {
+    prefix: 'fas',
+    iconName: 'kaaba',
+    icon: [576, 512, [], "f66b", "M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"]
+  };
+  var faKey = {
+    prefix: 'fas',
+    iconName: 'key',
+    icon: [512, 512, [], "f084", "M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]
+  };
+  var faKeyboard = {
+    prefix: 'fas',
+    iconName: 'keyboard',
+    icon: [576, 512, [], "f11c", "M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]
+  };
+  var faKhanda = {
+    prefix: 'fas',
+    iconName: 'khanda',
+    icon: [512, 512, [], "f66d", "M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"]
+  };
+  var faKiss = {
+    prefix: 'fas',
+    iconName: 'kiss',
+    icon: [496, 512, [], "f596", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faKissBeam = {
+    prefix: 'fas',
+    iconName: 'kiss-beam',
+    icon: [496, 512, [], "f597", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"]
+  };
+  var faKissWinkHeart = {
+    prefix: 'fas',
+    iconName: 'kiss-wink-heart',
+    icon: [504, 512, [], "f598", "M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"]
+  };
+  var faKiwiBird = {
+    prefix: 'fas',
+    iconName: 'kiwi-bird',
+    icon: [576, 512, [], "f535", "M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"]
+  };
+  var faLandmark = {
+    prefix: 'fas',
+    iconName: 'landmark',
+    icon: [512, 512, [], "f66f", "M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faLanguage = {
+    prefix: 'fas',
+    iconName: 'language',
+    icon: [640, 512, [], "f1ab", "M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"]
+  };
+  var faLaptop = {
+    prefix: 'fas',
+    iconName: 'laptop',
+    icon: [640, 512, [], "f109", "M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]
+  };
+  var faLaptopCode = {
+    prefix: 'fas',
+    iconName: 'laptop-code',
+    icon: [640, 512, [], "f5fc", "M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]
+  };
+  var faLaptopHouse = {
+    prefix: 'fas',
+    iconName: 'laptop-house',
+    icon: [640, 512, [], "e066", "M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]
+  };
+  var faLaptopMedical = {
+    prefix: 'fas',
+    iconName: 'laptop-medical',
+    icon: [640, 512, [], "f812", "M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]
+  };
+  var faLaugh = {
+    prefix: 'fas',
+    iconName: 'laugh',
+    icon: [496, 512, [], "f599", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"]
+  };
+  var faLaughBeam = {
+    prefix: 'fas',
+    iconName: 'laugh-beam',
+    icon: [496, 512, [], "f59a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+  };
+  var faLaughSquint = {
+    prefix: 'fas',
+    iconName: 'laugh-squint',
+    icon: [496, 512, [], "f59b", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+  };
+  var faLaughWink = {
+    prefix: 'fas',
+    iconName: 'laugh-wink',
+    icon: [496, 512, [], "f59c", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]
+  };
+  var faLayerGroup = {
+    prefix: 'fas',
+    iconName: 'layer-group',
+    icon: [512, 512, [], "f5fd", "M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"]
+  };
+  var faLeaf = {
+    prefix: 'fas',
+    iconName: 'leaf',
+    icon: [576, 512, [], "f06c", "M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"]
+  };
+  var faLemon = {
+    prefix: 'fas',
+    iconName: 'lemon',
+    icon: [512, 512, [], "f094", "M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"]
+  };
+  var faLessThan = {
+    prefix: 'fas',
+    iconName: 'less-than',
+    icon: [384, 512, [], "f536", "M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"]
+  };
+  var faLessThanEqual = {
+    prefix: 'fas',
+    iconName: 'less-than-equal',
+    icon: [448, 512, [], "f537", "M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]
+  };
+  var faLevelDownAlt = {
+    prefix: 'fas',
+    iconName: 'level-down-alt',
+    icon: [320, 512, [], "f3be", "M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"]
+  };
+  var faLevelUpAlt = {
+    prefix: 'fas',
+    iconName: 'level-up-alt',
+    icon: [320, 512, [], "f3bf", "M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"]
+  };
+  var faLifeRing = {
+    prefix: 'fas',
+    iconName: 'life-ring',
+    icon: [512, 512, [], "f1cd", "M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"]
+  };
+  var faLightbulb = {
+    prefix: 'fas',
+    iconName: 'lightbulb',
+    icon: [352, 512, [], "f0eb", "M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]
+  };
+  var faLink = {
+    prefix: 'fas',
+    iconName: 'link',
+    icon: [512, 512, [], "f0c1", "M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]
+  };
+  var faLiraSign = {
+    prefix: 'fas',
+    iconName: 'lira-sign',
+    icon: [384, 512, [], "f195", "M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"]
+  };
+  var faList = {
+    prefix: 'fas',
+    iconName: 'list',
+    icon: [512, 512, [], "f03a", "M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faListAlt = {
+    prefix: 'fas',
+    iconName: 'list-alt',
+    icon: [512, 512, [], "f022", "M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"]
+  };
+  var faListOl = {
+    prefix: 'fas',
+    iconName: 'list-ol',
+    icon: [512, 512, [], "f0cb", "M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"]
+  };
+  var faListUl = {
+    prefix: 'fas',
+    iconName: 'list-ul',
+    icon: [512, 512, [], "f0ca", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faLocationArrow = {
+    prefix: 'fas',
+    iconName: 'location-arrow',
+    icon: [512, 512, [], "f124", "M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"]
+  };
+  var faLock = {
+    prefix: 'fas',
+    iconName: 'lock',
+    icon: [448, 512, [], "f023", "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]
+  };
+  var faLockOpen = {
+    prefix: 'fas',
+    iconName: 'lock-open',
+    icon: [576, 512, [], "f3c1", "M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]
+  };
+  var faLongArrowAltDown = {
+    prefix: 'fas',
+    iconName: 'long-arrow-alt-down',
+    icon: [256, 512, [], "f309", "M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"]
+  };
+  var faLongArrowAltLeft = {
+    prefix: 'fas',
+    iconName: 'long-arrow-alt-left',
+    icon: [448, 512, [], "f30a", "M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"]
+  };
+  var faLongArrowAltRight = {
+    prefix: 'fas',
+    iconName: 'long-arrow-alt-right',
+    icon: [448, 512, [], "f30b", "M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]
+  };
+  var faLongArrowAltUp = {
+    prefix: 'fas',
+    iconName: 'long-arrow-alt-up',
+    icon: [256, 512, [], "f30c", "M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]
+  };
+  var faLowVision = {
+    prefix: 'fas',
+    iconName: 'low-vision',
+    icon: [576, 512, [], "f2a8", "M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"]
+  };
+  var faLuggageCart = {
+    prefix: 'fas',
+    iconName: 'luggage-cart',
+    icon: [640, 512, [], "f59d", "M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"]
+  };
+  var faLungs = {
+    prefix: 'fas',
+    iconName: 'lungs',
+    icon: [640, 512, [], "f604", "M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"]
+  };
+  var faLungsVirus = {
+    prefix: 'fas',
+    iconName: 'lungs-virus',
+    icon: [640, 512, [], "e067", "M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"]
+  };
+  var faMagic = {
+    prefix: 'fas',
+    iconName: 'magic',
+    icon: [512, 512, [], "f0d0", "M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"]
+  };
+  var faMagnet = {
+    prefix: 'fas',
+    iconName: 'magnet',
+    icon: [512, 512, [], "f076", "M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"]
+  };
+  var faMailBulk = {
+    prefix: 'fas',
+    iconName: 'mail-bulk',
+    icon: [576, 512, [], "f674", "M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"]
+  };
+  var faMale = {
+    prefix: 'fas',
+    iconName: 'male',
+    icon: [192, 512, [], "f183", "M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"]
+  };
+  var faMap = {
+    prefix: 'fas',
+    iconName: 'map',
+    icon: [576, 512, [], "f279", "M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"]
+  };
+  var faMapMarked = {
+    prefix: 'fas',
+    iconName: 'map-marked',
+    icon: [576, 512, [], "f59f", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]
+  };
+  var faMapMarkedAlt = {
+    prefix: 'fas',
+    iconName: 'map-marked-alt',
+    icon: [576, 512, [], "f5a0", "M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]
+  };
+  var faMapMarker = {
+    prefix: 'fas',
+    iconName: 'map-marker',
+    icon: [384, 512, [], "f041", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"]
+  };
+  var faMapMarkerAlt = {
+    prefix: 'fas',
+    iconName: 'map-marker-alt',
+    icon: [384, 512, [], "f3c5", "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"]
+  };
+  var faMapPin = {
+    prefix: 'fas',
+    iconName: 'map-pin',
+    icon: [288, 512, [], "f276", "M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"]
+  };
+  var faMapSigns = {
+    prefix: 'fas',
+    iconName: 'map-signs',
+    icon: [512, 512, [], "f277", "M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"]
+  };
+  var faMarker = {
+    prefix: 'fas',
+    iconName: 'marker',
+    icon: [512, 512, [], "f5a1", "M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"]
+  };
+  var faMars = {
+    prefix: 'fas',
+    iconName: 'mars',
+    icon: [384, 512, [], "f222", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faMarsDouble = {
+    prefix: 'fas',
+    iconName: 'mars-double',
+    icon: [512, 512, [], "f227", "M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"]
+  };
+  var faMarsStroke = {
+    prefix: 'fas',
+    iconName: 'mars-stroke',
+    icon: [384, 512, [], "f229", "M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faMarsStrokeH = {
+    prefix: 'fas',
+    iconName: 'mars-stroke-h',
+    icon: [480, 512, [], "f22b", "M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]
+  };
+  var faMarsStrokeV = {
+    prefix: 'fas',
+    iconName: 'mars-stroke-v',
+    icon: [288, 512, [], "f22a", "M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]
+  };
+  var faMask = {
+    prefix: 'fas',
+    iconName: 'mask',
+    icon: [640, 512, [], "f6fa", "M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"]
+  };
+  var faMedal = {
+    prefix: 'fas',
+    iconName: 'medal',
+    icon: [512, 512, [], "f5a2", "M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]
+  };
+  var faMedkit = {
+    prefix: 'fas',
+    iconName: 'medkit',
+    icon: [512, 512, [], "f0fa", "M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"]
+  };
+  var faMeh = {
+    prefix: 'fas',
+    iconName: 'meh',
+    icon: [496, 512, [], "f11a", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faMehBlank = {
+    prefix: 'fas',
+    iconName: 'meh-blank',
+    icon: [496, 512, [], "f5a4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faMehRollingEyes = {
+    prefix: 'fas',
+    iconName: 'meh-rolling-eyes',
+    icon: [496, 512, [], "f5a5", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"]
+  };
+  var faMemory = {
+    prefix: 'fas',
+    iconName: 'memory',
+    icon: [640, 512, [], "f538", "M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"]
+  };
+  var faMenorah = {
+    prefix: 'fas',
+    iconName: 'menorah',
+    icon: [640, 512, [], "f676", "M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"]
+  };
+  var faMercury = {
+    prefix: 'fas',
+    iconName: 'mercury',
+    icon: [288, 512, [], "f223", "M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]
+  };
+  var faMeteor = {
+    prefix: 'fas',
+    iconName: 'meteor',
+    icon: [512, 512, [], "f753", "M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"]
+  };
+  var faMicrochip = {
+    prefix: 'fas',
+    iconName: 'microchip',
+    icon: [512, 512, [], "f2db", "M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"]
+  };
+  var faMicrophone = {
+    prefix: 'fas',
+    iconName: 'microphone',
+    icon: [352, 512, [], "f130", "M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"]
+  };
+  var faMicrophoneAlt = {
+    prefix: 'fas',
+    iconName: 'microphone-alt',
+    icon: [352, 512, [], "f3c9", "M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"]
+  };
+  var faMicrophoneAltSlash = {
+    prefix: 'fas',
+    iconName: 'microphone-alt-slash',
+    icon: [640, 512, [], "f539", "M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]
+  };
+  var faMicrophoneSlash = {
+    prefix: 'fas',
+    iconName: 'microphone-slash',
+    icon: [640, 512, [], "f131", "M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]
+  };
+  var faMicroscope = {
+    prefix: 'fas',
+    iconName: 'microscope',
+    icon: [512, 512, [], "f610", "M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"]
+  };
+  var faMinus = {
+    prefix: 'fas',
+    iconName: 'minus',
+    icon: [448, 512, [], "f068", "M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+  };
+  var faMinusCircle = {
+    prefix: 'fas',
+    iconName: 'minus-circle',
+    icon: [512, 512, [], "f056", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"]
+  };
+  var faMinusSquare = {
+    prefix: 'fas',
+    iconName: 'minus-square',
+    icon: [448, 512, [], "f146", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"]
+  };
+  var faMitten = {
+    prefix: 'fas',
+    iconName: 'mitten',
+    icon: [448, 512, [], "f7b5", "M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"]
+  };
+  var faMobile = {
+    prefix: 'fas',
+    iconName: 'mobile',
+    icon: [320, 512, [], "f10b", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faMobileAlt = {
+    prefix: 'fas',
+    iconName: 'mobile-alt',
+    icon: [320, 512, [], "f3cd", "M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"]
+  };
+  var faMoneyBill = {
+    prefix: 'fas',
+    iconName: 'money-bill',
+    icon: [640, 512, [], "f0d6", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]
+  };
+  var faMoneyBillAlt = {
+    prefix: 'fas',
+    iconName: 'money-bill-alt',
+    icon: [640, 512, [], "f3d1", "M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]
+  };
+  var faMoneyBillWave = {
+    prefix: 'fas',
+    iconName: 'money-bill-wave',
+    icon: [640, 512, [], "f53a", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"]
+  };
+  var faMoneyBillWaveAlt = {
+    prefix: 'fas',
+    iconName: 'money-bill-wave-alt',
+    icon: [640, 512, [], "f53b", "M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"]
+  };
+  var faMoneyCheck = {
+    prefix: 'fas',
+    iconName: 'money-check',
+    icon: [640, 512, [], "f53c", "M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"]
+  };
+  var faMoneyCheckAlt = {
+    prefix: 'fas',
+    iconName: 'money-check-alt',
+    icon: [640, 512, [], "f53d", "M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"]
+  };
+  var faMonument = {
+    prefix: 'fas',
+    iconName: 'monument',
+    icon: [384, 512, [], "f5a6", "M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]
+  };
+  var faMoon = {
+    prefix: 'fas',
+    iconName: 'moon',
+    icon: [512, 512, [], "f186", "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"]
+  };
+  var faMortarPestle = {
+    prefix: 'fas',
+    iconName: 'mortar-pestle',
+    icon: [512, 512, [], "f5a7", "M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]
+  };
+  var faMosque = {
+    prefix: 'fas',
+    iconName: 'mosque',
+    icon: [640, 512, [], "f678", "M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"]
+  };
+  var faMotorcycle = {
+    prefix: 'fas',
+    iconName: 'motorcycle',
+    icon: [640, 512, [], "f21c", "M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"]
+  };
+  var faMountain = {
+    prefix: 'fas',
+    iconName: 'mountain',
+    icon: [640, 512, [], "f6fc", "M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"]
+  };
+  var faMouse = {
+    prefix: 'fas',
+    iconName: 'mouse',
+    icon: [384, 512, [], "f8cc", "M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"]
+  };
+  var faMousePointer = {
+    prefix: 'fas',
+    iconName: 'mouse-pointer',
+    icon: [320, 512, [], "f245", "M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"]
+  };
+  var faMugHot = {
+    prefix: 'fas',
+    iconName: 'mug-hot',
+    icon: [512, 512, [], "f7b6", "M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]
+  };
+  var faMusic = {
+    prefix: 'fas',
+    iconName: 'music',
+    icon: [512, 512, [], "f001", "M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"]
+  };
+  var faNetworkWired = {
+    prefix: 'fas',
+    iconName: 'network-wired',
+    icon: [640, 512, [], "f6ff", "M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"]
+  };
+  var faNeuter = {
+    prefix: 'fas',
+    iconName: 'neuter',
+    icon: [288, 512, [], "f22c", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faNewspaper = {
+    prefix: 'fas',
+    iconName: 'newspaper',
+    icon: [576, 512, [], "f1ea", "M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"]
+  };
+  var faNotEqual = {
+    prefix: 'fas',
+    iconName: 'not-equal',
+    icon: [448, 512, [], "f53e", "M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"]
+  };
+  var faNotesMedical = {
+    prefix: 'fas',
+    iconName: 'notes-medical',
+    icon: [384, 512, [], "f481", "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"]
+  };
+  var faObjectGroup = {
+    prefix: 'fas',
+    iconName: 'object-group',
+    icon: [512, 512, [], "f247", "M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]
+  };
+  var faObjectUngroup = {
+    prefix: 'fas',
+    iconName: 'object-ungroup',
+    icon: [576, 512, [], "f248", "M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"]
+  };
+  var faOilCan = {
+    prefix: 'fas',
+    iconName: 'oil-can',
+    icon: [640, 512, [], "f613", "M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"]
+  };
+  var faOm = {
+    prefix: 'fas',
+    iconName: 'om',
+    icon: [512, 512, [], "f679", "M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"]
+  };
+  var faOtter = {
+    prefix: 'fas',
+    iconName: 'otter',
+    icon: [640, 512, [], "f700", "M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"]
+  };
+  var faOutdent = {
+    prefix: 'fas',
+    iconName: 'outdent',
+    icon: [448, 512, [], "f03b", "M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faPager = {
+    prefix: 'fas',
+    iconName: 'pager',
+    icon: [512, 512, [], "f815", "M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"]
+  };
+  var faPaintBrush = {
+    prefix: 'fas',
+    iconName: 'paint-brush',
+    icon: [512, 512, [], "f1fc", "M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"]
+  };
+  var faPaintRoller = {
+    prefix: 'fas',
+    iconName: 'paint-roller',
+    icon: [512, 512, [], "f5aa", "M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"]
+  };
+  var faPalette = {
+    prefix: 'fas',
+    iconName: 'palette',
+    icon: [512, 512, [], "f53f", "M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faPallet = {
+    prefix: 'fas',
+    iconName: 'pallet',
+    icon: [640, 512, [], "f482", "M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"]
+  };
+  var faPaperPlane = {
+    prefix: 'fas',
+    iconName: 'paper-plane',
+    icon: [512, 512, [], "f1d8", "M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"]
+  };
+  var faPaperclip = {
+    prefix: 'fas',
+    iconName: 'paperclip',
+    icon: [448, 512, [], "f0c6", "M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]
+  };
+  var faParachuteBox = {
+    prefix: 'fas',
+    iconName: 'parachute-box',
+    icon: [512, 512, [], "f4cd", "M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"]
+  };
+  var faParagraph = {
+    prefix: 'fas',
+    iconName: 'paragraph',
+    icon: [448, 512, [], "f1dd", "M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"]
+  };
+  var faParking = {
+    prefix: 'fas',
+    iconName: 'parking',
+    icon: [448, 512, [], "f540", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"]
+  };
+  var faPassport = {
+    prefix: 'fas',
+    iconName: 'passport',
+    icon: [448, 512, [], "f5ab", "M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"]
+  };
+  var faPastafarianism = {
+    prefix: 'fas',
+    iconName: 'pastafarianism',
+    icon: [640, 512, [], "f67b", "M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"]
+  };
+  var faPaste = {
+    prefix: 'fas',
+    iconName: 'paste',
+    icon: [448, 512, [], "f0ea", "M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]
+  };
+  var faPause = {
+    prefix: 'fas',
+    iconName: 'pause',
+    icon: [448, 512, [], "f04c", "M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]
+  };
+  var faPauseCircle = {
+    prefix: 'fas',
+    iconName: 'pause-circle',
+    icon: [512, 512, [], "f28b", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"]
+  };
+  var faPaw = {
+    prefix: 'fas',
+    iconName: 'paw',
+    icon: [512, 512, [], "f1b0", "M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"]
+  };
+  var faPeace = {
+    prefix: 'fas',
+    iconName: 'peace',
+    icon: [496, 512, [], "f67c", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"]
+  };
+  var faPen = {
+    prefix: 'fas',
+    iconName: 'pen',
+    icon: [512, 512, [], "f304", "M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]
+  };
+  var faPenAlt = {
+    prefix: 'fas',
+    iconName: 'pen-alt',
+    icon: [512, 512, [], "f305", "M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"]
+  };
+  var faPenFancy = {
+    prefix: 'fas',
+    iconName: 'pen-fancy',
+    icon: [512, 512, [], "f5ac", "M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"]
+  };
+  var faPenNib = {
+    prefix: 'fas',
+    iconName: 'pen-nib',
+    icon: [512, 512, [], "f5ad", "M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"]
+  };
+  var faPenSquare = {
+    prefix: 'fas',
+    iconName: 'pen-square',
+    icon: [448, 512, [], "f14b", "M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"]
+  };
+  var faPencilAlt = {
+    prefix: 'fas',
+    iconName: 'pencil-alt',
+    icon: [512, 512, [], "f303", "M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]
+  };
+  var faPencilRuler = {
+    prefix: 'fas',
+    iconName: 'pencil-ruler',
+    icon: [512, 512, [], "f5ae", "M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"]
+  };
+  var faPeopleArrows = {
+    prefix: 'fas',
+    iconName: 'people-arrows',
+    icon: [576, 512, [], "e068", "M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"]
+  };
+  var faPeopleCarry = {
+    prefix: 'fas',
+    iconName: 'people-carry',
+    icon: [640, 512, [], "f4ce", "M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"]
+  };
+  var faPepperHot = {
+    prefix: 'fas',
+    iconName: 'pepper-hot',
+    icon: [512, 512, [], "f816", "M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"]
+  };
+  var faPercent = {
+    prefix: 'fas',
+    iconName: 'percent',
+    icon: [448, 512, [], "f295", "M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"]
+  };
+  var faPercentage = {
+    prefix: 'fas',
+    iconName: 'percentage',
+    icon: [384, 512, [], "f541", "M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"]
+  };
+  var faPersonBooth = {
+    prefix: 'fas',
+    iconName: 'person-booth',
+    icon: [576, 512, [], "f756", "M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"]
+  };
+  var faPhone = {
+    prefix: 'fas',
+    iconName: 'phone',
+    icon: [512, 512, [], "f095", "M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"]
+  };
+  var faPhoneAlt = {
+    prefix: 'fas',
+    iconName: 'phone-alt',
+    icon: [512, 512, [], "f879", "M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"]
+  };
+  var faPhoneSlash = {
+    prefix: 'fas',
+    iconName: 'phone-slash',
+    icon: [640, 512, [], "f3dd", "M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]
+  };
+  var faPhoneSquare = {
+    prefix: 'fas',
+    iconName: 'phone-square',
+    icon: [448, 512, [], "f098", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"]
+  };
+  var faPhoneSquareAlt = {
+    prefix: 'fas',
+    iconName: 'phone-square-alt',
+    icon: [448, 512, [], "f87b", "M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"]
+  };
+  var faPhoneVolume = {
+    prefix: 'fas',
+    iconName: 'phone-volume',
+    icon: [384, 512, [], "f2a0", "M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"]
+  };
+  var faPhotoVideo = {
+    prefix: 'fas',
+    iconName: 'photo-video',
+    icon: [640, 512, [], "f87c", "M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"]
+  };
+  var faPiggyBank = {
+    prefix: 'fas',
+    iconName: 'piggy-bank',
+    icon: [576, 512, [], "f4d3", "M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"]
+  };
+  var faPills = {
+    prefix: 'fas',
+    iconName: 'pills',
+    icon: [576, 512, [], "f484", "M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"]
+  };
+  var faPizzaSlice = {
+    prefix: 'fas',
+    iconName: 'pizza-slice',
+    icon: [512, 512, [], "f818", "M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]
+  };
+  var faPlaceOfWorship = {
+    prefix: 'fas',
+    iconName: 'place-of-worship',
+    icon: [640, 512, [], "f67f", "M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"]
+  };
+  var faPlane = {
+    prefix: 'fas',
+    iconName: 'plane',
+    icon: [576, 512, [], "f072", "M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"]
+  };
+  var faPlaneArrival = {
+    prefix: 'fas',
+    iconName: 'plane-arrival',
+    icon: [640, 512, [], "f5af", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"]
+  };
+  var faPlaneDeparture = {
+    prefix: 'fas',
+    iconName: 'plane-departure',
+    icon: [640, 512, [], "f5b0", "M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"]
+  };
+  var faPlaneSlash = {
+    prefix: 'fas',
+    iconName: 'plane-slash',
+    icon: [640, 512, [], "e069", "M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"]
+  };
+  var faPlay = {
+    prefix: 'fas',
+    iconName: 'play',
+    icon: [448, 512, [], "f04b", "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]
+  };
+  var faPlayCircle = {
+    prefix: 'fas',
+    iconName: 'play-circle',
+    icon: [512, 512, [], "f144", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"]
+  };
+  var faPlug = {
+    prefix: 'fas',
+    iconName: 'plug',
+    icon: [384, 512, [], "f1e6", "M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"]
+  };
+  var faPlus = {
+    prefix: 'fas',
+    iconName: 'plus',
+    icon: [448, 512, [], "f067", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]
+  };
+  var faPlusCircle = {
+    prefix: 'fas',
+    iconName: 'plus-circle',
+    icon: [512, 512, [], "f055", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]
+  };
+  var faPlusSquare = {
+    prefix: 'fas',
+    iconName: 'plus-square',
+    icon: [448, 512, [], "f0fe", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]
+  };
+  var faPodcast = {
+    prefix: 'fas',
+    iconName: 'podcast',
+    icon: [448, 512, [], "f2ce", "M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"]
+  };
+  var faPoll = {
+    prefix: 'fas',
+    iconName: 'poll',
+    icon: [448, 512, [], "f681", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"]
+  };
+  var faPollH = {
+    prefix: 'fas',
+    iconName: 'poll-h',
+    icon: [448, 512, [], "f682", "M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"]
+  };
+  var faPoo = {
+    prefix: 'fas',
+    iconName: 'poo',
+    icon: [512, 512, [], "f2fe", "M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faPooStorm = {
+    prefix: 'fas',
+    iconName: 'poo-storm',
+    icon: [448, 512, [], "f75a", "M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"]
+  };
+  var faPoop = {
+    prefix: 'fas',
+    iconName: 'poop',
+    icon: [512, 512, [], "f619", "M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"]
+  };
+  var faPortrait = {
+    prefix: 'fas',
+    iconName: 'portrait',
+    icon: [384, 512, [], "f3e0", "M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]
+  };
+  var faPoundSign = {
+    prefix: 'fas',
+    iconName: 'pound-sign',
+    icon: [320, 512, [], "f154", "M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"]
+  };
+  var faPowerOff = {
+    prefix: 'fas',
+    iconName: 'power-off',
+    icon: [512, 512, [], "f011", "M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"]
+  };
+  var faPray = {
+    prefix: 'fas',
+    iconName: 'pray',
+    icon: [384, 512, [], "f683", "M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"]
+  };
+  var faPrayingHands = {
+    prefix: 'fas',
+    iconName: 'praying-hands',
+    icon: [640, 512, [], "f684", "M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"]
+  };
+  var faPrescription = {
+    prefix: 'fas',
+    iconName: 'prescription',
+    icon: [384, 512, [], "f5b1", "M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"]
+  };
+  var faPrescriptionBottle = {
+    prefix: 'fas',
+    iconName: 'prescription-bottle',
+    icon: [384, 512, [], "f485", "M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"]
+  };
+  var faPrescriptionBottleAlt = {
+    prefix: 'fas',
+    iconName: 'prescription-bottle-alt',
+    icon: [384, 512, [], "f486", "M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"]
+  };
+  var faPrint = {
+    prefix: 'fas',
+    iconName: 'print',
+    icon: [512, 512, [], "f02f", "M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+  };
+  var faProcedures = {
+    prefix: 'fas',
+    iconName: 'procedures',
+    icon: [640, 512, [], "f487", "M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]
+  };
+  var faProjectDiagram = {
+    prefix: 'fas',
+    iconName: 'project-diagram',
+    icon: [640, 512, [], "f542", "M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]
+  };
+  var faPumpMedical = {
+    prefix: 'fas',
+    iconName: 'pump-medical',
+    icon: [384, 512, [], "e06a", "M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"]
+  };
+  var faPumpSoap = {
+    prefix: 'fas',
+    iconName: 'pump-soap',
+    icon: [384, 512, [], "e06b", "M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"]
+  };
+  var faPuzzlePiece = {
+    prefix: 'fas',
+    iconName: 'puzzle-piece',
+    icon: [576, 512, [], "f12e", "M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"]
+  };
+  var faQrcode = {
+    prefix: 'fas',
+    iconName: 'qrcode',
+    icon: [448, 512, [], "f029", "M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"]
+  };
+  var faQuestion = {
+    prefix: 'fas',
+    iconName: 'question',
+    icon: [384, 512, [], "f128", "M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"]
+  };
+  var faQuestionCircle = {
+    prefix: 'fas',
+    iconName: 'question-circle',
+    icon: [512, 512, [], "f059", "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]
+  };
+  var faQuidditch = {
+    prefix: 'fas',
+    iconName: 'quidditch',
+    icon: [640, 512, [], "f458", "M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"]
+  };
+  var faQuoteLeft = {
+    prefix: 'fas',
+    iconName: 'quote-left',
+    icon: [512, 512, [], "f10d", "M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]
+  };
+  var faQuoteRight = {
+    prefix: 'fas',
+    iconName: 'quote-right',
+    icon: [512, 512, [], "f10e", "M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"]
+  };
+  var faQuran = {
+    prefix: 'fas',
+    iconName: 'quran',
+    icon: [448, 512, [], "f687", "M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]
+  };
+  var faRadiation = {
+    prefix: 'fas',
+    iconName: 'radiation',
+    icon: [496, 512, [], "f7b9", "M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"]
+  };
+  var faRadiationAlt = {
+    prefix: 'fas',
+    iconName: 'radiation-alt',
+    icon: [496, 512, [], "f7ba", "M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]
+  };
+  var faRainbow = {
+    prefix: 'fas',
+    iconName: 'rainbow',
+    icon: [576, 512, [], "f75b", "M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"]
+  };
+  var faRandom = {
+    prefix: 'fas',
+    iconName: 'random',
+    icon: [512, 512, [], "f074", "M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"]
+  };
+  var faReceipt = {
+    prefix: 'fas',
+    iconName: 'receipt',
+    icon: [384, 512, [], "f543", "M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"]
+  };
+  var faRecordVinyl = {
+    prefix: 'fas',
+    iconName: 'record-vinyl',
+    icon: [512, 512, [], "f8d9", "M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"]
+  };
+  var faRecycle = {
+    prefix: 'fas',
+    iconName: 'recycle',
+    icon: [512, 512, [], "f1b8", "M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"]
+  };
+  var faRedo = {
+    prefix: 'fas',
+    iconName: 'redo',
+    icon: [512, 512, [], "f01e", "M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]
+  };
+  var faRedoAlt = {
+    prefix: 'fas',
+    iconName: 'redo-alt',
+    icon: [512, 512, [], "f2f9", "M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"]
+  };
+  var faRegistered = {
+    prefix: 'fas',
+    iconName: 'registered',
+    icon: [512, 512, [], "f25d", "M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"]
+  };
+  var faRemoveFormat = {
+    prefix: 'fas',
+    iconName: 'remove-format',
+    icon: [640, 512, [], "f87d", "M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"]
+  };
+  var faReply = {
+    prefix: 'fas',
+    iconName: 'reply',
+    icon: [512, 512, [], "f3e5", "M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]
+  };
+  var faReplyAll = {
+    prefix: 'fas',
+    iconName: 'reply-all',
+    icon: [576, 512, [], "f122", "M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"]
+  };
+  var faRepublican = {
+    prefix: 'fas',
+    iconName: 'republican',
+    icon: [640, 512, [], "f75e", "M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"]
+  };
+  var faRestroom = {
+    prefix: 'fas',
+    iconName: 'restroom',
+    icon: [640, 512, [], "f7bd", "M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"]
+  };
+  var faRetweet = {
+    prefix: 'fas',
+    iconName: 'retweet',
+    icon: [640, 512, [], "f079", "M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"]
+  };
+  var faRibbon = {
+    prefix: 'fas',
+    iconName: 'ribbon',
+    icon: [448, 512, [], "f4d6", "M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"]
+  };
+  var faRing = {
+    prefix: 'fas',
+    iconName: 'ring',
+    icon: [512, 512, [], "f70b", "M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"]
+  };
+  var faRoad = {
+    prefix: 'fas',
+    iconName: 'road',
+    icon: [576, 512, [], "f018", "M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"]
+  };
+  var faRobot = {
+    prefix: 'fas',
+    iconName: 'robot',
+    icon: [640, 512, [], "f544", "M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]
+  };
+  var faRocket = {
+    prefix: 'fas',
+    iconName: 'rocket',
+    icon: [512, 512, [], "f135", "M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]
+  };
+  var faRoute = {
+    prefix: 'fas',
+    iconName: 'route',
+    icon: [512, 512, [], "f4d7", "M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faRss = {
+    prefix: 'fas',
+    iconName: 'rss',
+    icon: [448, 512, [], "f09e", "M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"]
+  };
+  var faRssSquare = {
+    prefix: 'fas',
+    iconName: 'rss-square',
+    icon: [448, 512, [], "f143", "M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"]
+  };
+  var faRubleSign = {
+    prefix: 'fas',
+    iconName: 'ruble-sign',
+    icon: [384, 512, [], "f158", "M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"]
+  };
+  var faRuler = {
+    prefix: 'fas',
+    iconName: 'ruler',
+    icon: [640, 512, [], "f545", "M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"]
+  };
+  var faRulerCombined = {
+    prefix: 'fas',
+    iconName: 'ruler-combined',
+    icon: [512, 512, [], "f546", "M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+  };
+  var faRulerHorizontal = {
+    prefix: 'fas',
+    iconName: 'ruler-horizontal',
+    icon: [576, 512, [], "f547", "M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"]
+  };
+  var faRulerVertical = {
+    prefix: 'fas',
+    iconName: 'ruler-vertical',
+    icon: [256, 512, [], "f548", "M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"]
+  };
+  var faRunning = {
+    prefix: 'fas',
+    iconName: 'running',
+    icon: [416, 512, [], "f70c", "M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"]
+  };
+  var faRupeeSign = {
+    prefix: 'fas',
+    iconName: 'rupee-sign',
+    icon: [320, 512, [], "f156", "M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"]
+  };
+  var faSadCry = {
+    prefix: 'fas',
+    iconName: 'sad-cry',
+    icon: [496, 512, [], "f5b3", "M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"]
+  };
+  var faSadTear = {
+    prefix: 'fas',
+    iconName: 'sad-tear',
+    icon: [496, 512, [], "f5b4", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"]
+  };
+  var faSatellite = {
+    prefix: 'fas',
+    iconName: 'satellite',
+    icon: [512, 512, [], "f7bf", "M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"]
+  };
+  var faSatelliteDish = {
+    prefix: 'fas',
+    iconName: 'satellite-dish',
+    icon: [512, 512, [], "f7c0", "M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"]
+  };
+  var faSave = {
+    prefix: 'fas',
+    iconName: 'save',
+    icon: [448, 512, [], "f0c7", "M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]
+  };
+  var faSchool = {
+    prefix: 'fas',
+    iconName: 'school',
+    icon: [640, 512, [], "f549", "M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"]
+  };
+  var faScrewdriver = {
+    prefix: 'fas',
+    iconName: 'screwdriver',
+    icon: [512, 512, [], "f54a", "M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"]
+  };
+  var faScroll = {
+    prefix: 'fas',
+    iconName: 'scroll',
+    icon: [640, 512, [], "f70e", "M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"]
+  };
+  var faSdCard = {
+    prefix: 'fas',
+    iconName: 'sd-card',
+    icon: [384, 512, [], "f7c2", "M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"]
+  };
+  var faSearch = {
+    prefix: 'fas',
+    iconName: 'search',
+    icon: [512, 512, [], "f002", "M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]
+  };
+  var faSearchDollar = {
+    prefix: 'fas',
+    iconName: 'search-dollar',
+    icon: [512, 512, [], "f688", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"]
+  };
+  var faSearchLocation = {
+    prefix: 'fas',
+    iconName: 'search-location',
+    icon: [512, 512, [], "f689", "M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+  };
+  var faSearchMinus = {
+    prefix: 'fas',
+    iconName: 'search-minus',
+    icon: [512, 512, [], "f010", "M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]
+  };
+  var faSearchPlus = {
+    prefix: 'fas',
+    iconName: 'search-plus',
+    icon: [512, 512, [], "f00e", "M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]
+  };
+  var faSeedling = {
+    prefix: 'fas',
+    iconName: 'seedling',
+    icon: [512, 512, [], "f4d8", "M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"]
+  };
+  var faServer = {
+    prefix: 'fas',
+    iconName: 'server',
+    icon: [512, 512, [], "f233", "M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"]
+  };
+  var faShapes = {
+    prefix: 'fas',
+    iconName: 'shapes',
+    icon: [512, 512, [], "f61f", "M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"]
+  };
+  var faShare = {
+    prefix: 'fas',
+    iconName: 'share',
+    icon: [512, 512, [], "f064", "M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]
+  };
+  var faShareAlt = {
+    prefix: 'fas',
+    iconName: 'share-alt',
+    icon: [448, 512, [], "f1e0", "M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"]
+  };
+  var faShareAltSquare = {
+    prefix: 'fas',
+    iconName: 'share-alt-square',
+    icon: [448, 512, [], "f1e1", "M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"]
+  };
+  var faShareSquare = {
+    prefix: 'fas',
+    iconName: 'share-square',
+    icon: [576, 512, [], "f14d", "M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"]
+  };
+  var faShekelSign = {
+    prefix: 'fas',
+    iconName: 'shekel-sign',
+    icon: [448, 512, [], "f20b", "M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"]
+  };
+  var faShieldAlt = {
+    prefix: 'fas',
+    iconName: 'shield-alt',
+    icon: [512, 512, [], "f3ed", "M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"]
+  };
+  var faShieldVirus = {
+    prefix: 'fas',
+    iconName: 'shield-virus',
+    icon: [512, 512, [], "e06c", "M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"]
+  };
+  var faShip = {
+    prefix: 'fas',
+    iconName: 'ship',
+    icon: [640, 512, [], "f21a", "M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"]
+  };
+  var faShippingFast = {
+    prefix: 'fas',
+    iconName: 'shipping-fast',
+    icon: [640, 512, [], "f48b", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+  };
+  var faShoePrints = {
+    prefix: 'fas',
+    iconName: 'shoe-prints',
+    icon: [640, 512, [], "f54b", "M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"]
+  };
+  var faShoppingBag = {
+    prefix: 'fas',
+    iconName: 'shopping-bag',
+    icon: [448, 512, [], "f290", "M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"]
+  };
+  var faShoppingBasket = {
+    prefix: 'fas',
+    iconName: 'shopping-basket',
+    icon: [576, 512, [], "f291", "M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"]
+  };
+  var faShoppingCart = {
+    prefix: 'fas',
+    iconName: 'shopping-cart',
+    icon: [576, 512, [], "f07a", "M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"]
+  };
+  var faShower = {
+    prefix: 'fas',
+    iconName: 'shower',
+    icon: [512, 512, [], "f2cc", "M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"]
+  };
+  var faShuttleVan = {
+    prefix: 'fas',
+    iconName: 'shuttle-van',
+    icon: [640, 512, [], "f5b6", "M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"]
+  };
+  var faSign = {
+    prefix: 'fas',
+    iconName: 'sign',
+    icon: [512, 512, [], "f4d9", "M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"]
+  };
+  var faSignInAlt = {
+    prefix: 'fas',
+    iconName: 'sign-in-alt',
+    icon: [512, 512, [], "f2f6", "M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"]
+  };
+  var faSignLanguage = {
+    prefix: 'fas',
+    iconName: 'sign-language',
+    icon: [448, 512, [], "f2a7", "M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"]
+  };
+  var faSignOutAlt = {
+    prefix: 'fas',
+    iconName: 'sign-out-alt',
+    icon: [512, 512, [], "f2f5", "M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"]
+  };
+  var faSignal = {
+    prefix: 'fas',
+    iconName: 'signal',
+    icon: [640, 512, [], "f012", "M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]
+  };
+  var faSignature = {
+    prefix: 'fas',
+    iconName: 'signature',
+    icon: [640, 512, [], "f5b7", "M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"]
+  };
+  var faSimCard = {
+    prefix: 'fas',
+    iconName: 'sim-card',
+    icon: [384, 512, [], "f7c4", "M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"]
+  };
+  var faSink = {
+    prefix: 'fas',
+    iconName: 'sink',
+    icon: [512, 512, [], "e06d", "M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"]
+  };
+  var faSitemap = {
+    prefix: 'fas',
+    iconName: 'sitemap',
+    icon: [640, 512, [], "f0e8", "M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]
+  };
+  var faSkating = {
+    prefix: 'fas',
+    iconName: 'skating',
+    icon: [448, 512, [], "f7c5", "M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]
+  };
+  var faSkiing = {
+    prefix: 'fas',
+    iconName: 'skiing',
+    icon: [512, 512, [], "f7c9", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"]
+  };
+  var faSkiingNordic = {
+    prefix: 'fas',
+    iconName: 'skiing-nordic',
+    icon: [576, 512, [], "f7ca", "M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"]
+  };
+  var faSkull = {
+    prefix: 'fas',
+    iconName: 'skull',
+    icon: [512, 512, [], "f54c", "M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"]
+  };
+  var faSkullCrossbones = {
+    prefix: 'fas',
+    iconName: 'skull-crossbones',
+    icon: [448, 512, [], "f714", "M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"]
+  };
+  var faSlash = {
+    prefix: 'fas',
+    iconName: 'slash',
+    icon: [640, 512, [], "f715", "M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]
+  };
+  var faSleigh = {
+    prefix: 'fas',
+    iconName: 'sleigh',
+    icon: [640, 512, [], "f7cc", "M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"]
+  };
+  var faSlidersH = {
+    prefix: 'fas',
+    iconName: 'sliders-h',
+    icon: [512, 512, [], "f1de", "M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]
+  };
+  var faSmile = {
+    prefix: 'fas',
+    iconName: 'smile',
+    icon: [496, 512, [], "f118", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"]
+  };
+  var faSmileBeam = {
+    prefix: 'fas',
+    iconName: 'smile-beam',
+    icon: [496, 512, [], "f5b8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"]
+  };
+  var faSmileWink = {
+    prefix: 'fas',
+    iconName: 'smile-wink',
+    icon: [496, 512, [], "f4da", "M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"]
+  };
+  var faSmog = {
+    prefix: 'fas',
+    iconName: 'smog',
+    icon: [640, 512, [], "f75f", "M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"]
+  };
+  var faSmoking = {
+    prefix: 'fas',
+    iconName: 'smoking',
+    icon: [640, 512, [], "f48d", "M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]
+  };
+  var faSmokingBan = {
+    prefix: 'fas',
+    iconName: 'smoking-ban',
+    icon: [512, 512, [], "f54d", "M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"]
+  };
+  var faSms = {
+    prefix: 'fas',
+    iconName: 'sms',
+    icon: [512, 512, [], "f7cd", "M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"]
+  };
+  var faSnowboarding = {
+    prefix: 'fas',
+    iconName: 'snowboarding',
+    icon: [512, 512, [], "f7ce", "M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"]
+  };
+  var faSnowflake = {
+    prefix: 'fas',
+    iconName: 'snowflake',
+    icon: [448, 512, [], "f2dc", "M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"]
+  };
+  var faSnowman = {
+    prefix: 'fas',
+    iconName: 'snowman',
+    icon: [512, 512, [], "f7d0", "M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+  };
+  var faSnowplow = {
+    prefix: 'fas',
+    iconName: 'snowplow',
+    icon: [640, 512, [], "f7d2", "M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]
+  };
+  var faSoap = {
+    prefix: 'fas',
+    iconName: 'soap',
+    icon: [512, 512, [], "e06e", "M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"]
+  };
+  var faSocks = {
+    prefix: 'fas',
+    iconName: 'socks',
+    icon: [512, 512, [], "f696", "M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"]
+  };
+  var faSolarPanel = {
+    prefix: 'fas',
+    iconName: 'solar-panel',
+    icon: [640, 512, [], "f5ba", "M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"]
+  };
+  var faSort = {
+    prefix: 'fas',
+    iconName: 'sort',
+    icon: [320, 512, [], "f0dc", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]
+  };
+  var faSortAlphaDown = {
+    prefix: 'fas',
+    iconName: 'sort-alpha-down',
+    icon: [448, 512, [], "f15d", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]
+  };
+  var faSortAlphaDownAlt = {
+    prefix: 'fas',
+    iconName: 'sort-alpha-down-alt',
+    icon: [448, 512, [], "f881", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]
+  };
+  var faSortAlphaUp = {
+    prefix: 'fas',
+    iconName: 'sort-alpha-up',
+    icon: [448, 512, [], "f15e", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]
+  };
+  var faSortAlphaUpAlt = {
+    prefix: 'fas',
+    iconName: 'sort-alpha-up-alt',
+    icon: [448, 512, [], "f882", "M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]
+  };
+  var faSortAmountDown = {
+    prefix: 'fas',
+    iconName: 'sort-amount-down',
+    icon: [512, 512, [], "f160", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faSortAmountDownAlt = {
+    prefix: 'fas',
+    iconName: 'sort-amount-down-alt',
+    icon: [512, 512, [], "f884", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]
+  };
+  var faSortAmountUp = {
+    prefix: 'fas',
+    iconName: 'sort-amount-up',
+    icon: [512, 512, [], "f161", "M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faSortAmountUpAlt = {
+    prefix: 'fas',
+    iconName: 'sort-amount-up-alt',
+    icon: [512, 512, [], "f885", "M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"]
+  };
+  var faSortDown = {
+    prefix: 'fas',
+    iconName: 'sort-down',
+    icon: [320, 512, [], "f0dd", "M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]
+  };
+  var faSortNumericDown = {
+    prefix: 'fas',
+    iconName: 'sort-numeric-down',
+    icon: [448, 512, [], "f162", "M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]
+  };
+  var faSortNumericDownAlt = {
+    prefix: 'fas',
+    iconName: 'sort-numeric-down-alt',
+    icon: [448, 512, [], "f886", "M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]
+  };
+  var faSortNumericUp = {
+    prefix: 'fas',
+    iconName: 'sort-numeric-up',
+    icon: [448, 512, [], "f163", "M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"]
+  };
+  var faSortNumericUpAlt = {
+    prefix: 'fas',
+    iconName: 'sort-numeric-up-alt',
+    icon: [448, 512, [], "f887", "M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]
+  };
+  var faSortUp = {
+    prefix: 'fas',
+    iconName: 'sort-up',
+    icon: [320, 512, [], "f0de", "M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]
+  };
+  var faSpa = {
+    prefix: 'fas',
+    iconName: 'spa',
+    icon: [576, 512, [], "f5bb", "M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"]
+  };
+  var faSpaceShuttle = {
+    prefix: 'fas',
+    iconName: 'space-shuttle',
+    icon: [640, 512, [], "f197", "M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"]
+  };
+  var faSpellCheck = {
+    prefix: 'fas',
+    iconName: 'spell-check',
+    icon: [576, 512, [], "f891", "M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"]
+  };
+  var faSpider = {
+    prefix: 'fas',
+    iconName: 'spider',
+    icon: [576, 512, [], "f717", "M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"]
+  };
+  var faSpinner = {
+    prefix: 'fas',
+    iconName: 'spinner',
+    icon: [512, 512, [], "f110", "M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"]
+  };
+  var faSplotch = {
+    prefix: 'fas',
+    iconName: 'splotch',
+    icon: [512, 512, [], "f5bc", "M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"]
+  };
+  var faSprayCan = {
+    prefix: 'fas',
+    iconName: 'spray-can',
+    icon: [512, 512, [], "f5bd", "M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+  };
+  var faSquare = {
+    prefix: 'fas',
+    iconName: 'square',
+    icon: [448, 512, [], "f0c8", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+  };
+  var faSquareFull = {
+    prefix: 'fas',
+    iconName: 'square-full',
+    icon: [512, 512, [], "f45c", "M512 512H0V0h512v512z"]
+  };
+  var faSquareRootAlt = {
+    prefix: 'fas',
+    iconName: 'square-root-alt',
+    icon: [576, 512, [], "f698", "M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"]
+  };
+  var faStamp = {
+    prefix: 'fas',
+    iconName: 'stamp',
+    icon: [512, 512, [], "f5bf", "M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"]
+  };
+  var faStar = {
+    prefix: 'fas',
+    iconName: 'star',
+    icon: [576, 512, [], "f005", "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]
+  };
+  var faStarAndCrescent = {
+    prefix: 'fas',
+    iconName: 'star-and-crescent',
+    icon: [512, 512, [], "f699", "M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"]
+  };
+  var faStarHalf = {
+    prefix: 'fas',
+    iconName: 'star-half',
+    icon: [576, 512, [], "f089", "M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"]
+  };
+  var faStarHalfAlt = {
+    prefix: 'fas',
+    iconName: 'star-half-alt',
+    icon: [536, 512, [], "f5c0", "M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"]
+  };
+  var faStarOfDavid = {
+    prefix: 'fas',
+    iconName: 'star-of-david',
+    icon: [464, 512, [], "f69a", "M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"]
+  };
+  var faStarOfLife = {
+    prefix: 'fas',
+    iconName: 'star-of-life',
+    icon: [480, 512, [], "f621", "M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"]
+  };
+  var faStepBackward = {
+    prefix: 'fas',
+    iconName: 'step-backward',
+    icon: [448, 512, [], "f048", "M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]
+  };
+  var faStepForward = {
+    prefix: 'fas',
+    iconName: 'step-forward',
+    icon: [448, 512, [], "f051", "M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]
+  };
+  var faStethoscope = {
+    prefix: 'fas',
+    iconName: 'stethoscope',
+    icon: [512, 512, [], "f0f1", "M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]
+  };
+  var faStickyNote = {
+    prefix: 'fas',
+    iconName: 'sticky-note',
+    icon: [448, 512, [], "f249", "M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"]
+  };
+  var faStop = {
+    prefix: 'fas',
+    iconName: 'stop',
+    icon: [448, 512, [], "f04d", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]
+  };
+  var faStopCircle = {
+    prefix: 'fas',
+    iconName: 'stop-circle',
+    icon: [512, 512, [], "f28d", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"]
+  };
+  var faStopwatch = {
+    prefix: 'fas',
+    iconName: 'stopwatch',
+    icon: [448, 512, [], "f2f2", "M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]
+  };
+  var faStopwatch20 = {
+    prefix: 'fas',
+    iconName: 'stopwatch-20',
+    icon: [448, 512, [], "e06f", "M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"]
+  };
+  var faStore = {
+    prefix: 'fas',
+    iconName: 'store',
+    icon: [616, 512, [], "f54e", "M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"]
+  };
+  var faStoreAlt = {
+    prefix: 'fas',
+    iconName: 'store-alt',
+    icon: [640, 512, [], "f54f", "M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"]
+  };
+  var faStoreAltSlash = {
+    prefix: 'fas',
+    iconName: 'store-alt-slash',
+    icon: [640, 512, [], "e070", "M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"]
+  };
+  var faStoreSlash = {
+    prefix: 'fas',
+    iconName: 'store-slash',
+    icon: [640, 512, [], "e071", "M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"]
+  };
+  var faStream = {
+    prefix: 'fas',
+    iconName: 'stream',
+    icon: [512, 512, [], "f550", "M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"]
+  };
+  var faStreetView = {
+    prefix: 'fas',
+    iconName: 'street-view',
+    icon: [512, 512, [], "f21d", "M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"]
+  };
+  var faStrikethrough = {
+    prefix: 'fas',
+    iconName: 'strikethrough',
+    icon: [512, 512, [], "f0cc", "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"]
+  };
+  var faStroopwafel = {
+    prefix: 'fas',
+    iconName: 'stroopwafel',
+    icon: [512, 512, [], "f551", "M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"]
+  };
+  var faSubscript = {
+    prefix: 'fas',
+    iconName: 'subscript',
+    icon: [512, 512, [], "f12c", "M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]
+  };
+  var faSubway = {
+    prefix: 'fas',
+    iconName: 'subway',
+    icon: [448, 512, [], "f239", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]
+  };
+  var faSuitcase = {
+    prefix: 'fas',
+    iconName: 'suitcase',
+    icon: [512, 512, [], "f0f2", "M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"]
+  };
+  var faSuitcaseRolling = {
+    prefix: 'fas',
+    iconName: 'suitcase-rolling',
+    icon: [384, 512, [], "f5c1", "M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"]
+  };
+  var faSun = {
+    prefix: 'fas',
+    iconName: 'sun',
+    icon: [512, 512, [], "f185", "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"]
+  };
+  var faSuperscript = {
+    prefix: 'fas',
+    iconName: 'superscript',
+    icon: [512, 512, [], "f12b", "M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]
+  };
+  var faSurprise = {
+    prefix: 'fas',
+    iconName: 'surprise',
+    icon: [496, 512, [], "f5c2", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faSwatchbook = {
+    prefix: 'fas',
+    iconName: 'swatchbook',
+    icon: [512, 512, [], "f5c3", "M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"]
+  };
+  var faSwimmer = {
+    prefix: 'fas',
+    iconName: 'swimmer',
+    icon: [640, 512, [], "f5c4", "M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"]
+  };
+  var faSwimmingPool = {
+    prefix: 'fas',
+    iconName: 'swimming-pool',
+    icon: [640, 512, [], "f5c5", "M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"]
+  };
+  var faSynagogue = {
+    prefix: 'fas',
+    iconName: 'synagogue',
+    icon: [640, 512, [], "f69b", "M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"]
+  };
+  var faSync = {
+    prefix: 'fas',
+    iconName: 'sync',
+    icon: [512, 512, [], "f021", "M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"]
+  };
+  var faSyncAlt = {
+    prefix: 'fas',
+    iconName: 'sync-alt',
+    icon: [512, 512, [], "f2f1", "M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]
+  };
+  var faSyringe = {
+    prefix: 'fas',
+    iconName: 'syringe',
+    icon: [512, 512, [], "f48e", "M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"]
+  };
+  var faTable = {
+    prefix: 'fas',
+    iconName: 'table',
+    icon: [512, 512, [], "f0ce", "M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"]
+  };
+  var faTableTennis = {
+    prefix: 'fas',
+    iconName: 'table-tennis',
+    icon: [512, 512, [], "f45d", "M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"]
+  };
+  var faTablet = {
+    prefix: 'fas',
+    iconName: 'tablet',
+    icon: [448, 512, [], "f10a", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]
+  };
+  var faTabletAlt = {
+    prefix: 'fas',
+    iconName: 'tablet-alt',
+    icon: [448, 512, [], "f3fa", "M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"]
+  };
+  var faTablets = {
+    prefix: 'fas',
+    iconName: 'tablets',
+    icon: [640, 512, [], "f490", "M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"]
+  };
+  var faTachometerAlt = {
+    prefix: 'fas',
+    iconName: 'tachometer-alt',
+    icon: [576, 512, [], "f3fd", "M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faTag = {
+    prefix: 'fas',
+    iconName: 'tag',
+    icon: [512, 512, [], "f02b", "M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]
+  };
+  var faTags = {
+    prefix: 'fas',
+    iconName: 'tags',
+    icon: [640, 512, [], "f02c", "M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"]
+  };
+  var faTape = {
+    prefix: 'fas',
+    iconName: 'tape',
+    icon: [640, 512, [], "f4db", "M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"]
+  };
+  var faTasks = {
+    prefix: 'fas',
+    iconName: 'tasks',
+    icon: [512, 512, [], "f0ae", "M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faTaxi = {
+    prefix: 'fas',
+    iconName: 'taxi',
+    icon: [512, 512, [], "f1ba", "M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faTeeth = {
+    prefix: 'fas',
+    iconName: 'teeth',
+    icon: [640, 512, [], "f62e", "M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"]
+  };
+  var faTeethOpen = {
+    prefix: 'fas',
+    iconName: 'teeth-open',
+    icon: [640, 512, [], "f62f", "M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"]
+  };
+  var faTemperatureHigh = {
+    prefix: 'fas',
+    iconName: 'temperature-high',
+    icon: [512, 512, [], "f769", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]
+  };
+  var faTemperatureLow = {
+    prefix: 'fas',
+    iconName: 'temperature-low',
+    icon: [512, 512, [], "f76b", "M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]
+  };
+  var faTenge = {
+    prefix: 'fas',
+    iconName: 'tenge',
+    icon: [384, 512, [], "f7d7", "M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"]
+  };
+  var faTerminal = {
+    prefix: 'fas',
+    iconName: 'terminal',
+    icon: [640, 512, [], "f120", "M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"]
+  };
+  var faTextHeight = {
+    prefix: 'fas',
+    iconName: 'text-height',
+    icon: [576, 512, [], "f034", "M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"]
+  };
+  var faTextWidth = {
+    prefix: 'fas',
+    iconName: 'text-width',
+    icon: [448, 512, [], "f035", "M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"]
+  };
+  var faTh = {
+    prefix: 'fas',
+    iconName: 'th',
+    icon: [512, 512, [], "f00a", "M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]
+  };
+  var faThLarge = {
+    prefix: 'fas',
+    iconName: 'th-large',
+    icon: [512, 512, [], "f009", "M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"]
+  };
+  var faThList = {
+    prefix: 'fas',
+    iconName: 'th-list',
+    icon: [512, 512, [], "f00b", "M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]
+  };
+  var faTheaterMasks = {
+    prefix: 'fas',
+    iconName: 'theater-masks',
+    icon: [640, 512, [], "f630", "M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"]
+  };
+  var faThermometer = {
+    prefix: 'fas',
+    iconName: 'thermometer',
+    icon: [512, 512, [], "f491", "M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"]
+  };
+  var faThermometerEmpty = {
+    prefix: 'fas',
+    iconName: 'thermometer-empty',
+    icon: [256, 512, [], "f2cb", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+  };
+  var faThermometerFull = {
+    prefix: 'fas',
+    iconName: 'thermometer-full',
+    icon: [256, 512, [], "f2c7", "M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"]
+  };
+  var faThermometerHalf = {
+    prefix: 'fas',
+    iconName: 'thermometer-half',
+    icon: [256, 512, [], "f2c9", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+  };
+  var faThermometerQuarter = {
+    prefix: 'fas',
+    iconName: 'thermometer-quarter',
+    icon: [256, 512, [], "f2ca", "M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+  };
+  var faThermometerThreeQuarters = {
+    prefix: 'fas',
+    iconName: 'thermometer-three-quarters',
+    icon: [256, 512, [], "f2c8", "M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]
+  };
+  var faThumbsDown = {
+    prefix: 'fas',
+    iconName: 'thumbs-down',
+    icon: [512, 512, [], "f165", "M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"]
+  };
+  var faThumbsUp = {
+    prefix: 'fas',
+    iconName: 'thumbs-up',
+    icon: [512, 512, [], "f164", "M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"]
+  };
+  var faThumbtack = {
+    prefix: 'fas',
+    iconName: 'thumbtack',
+    icon: [384, 512, [], "f08d", "M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"]
+  };
+  var faTicketAlt = {
+    prefix: 'fas',
+    iconName: 'ticket-alt',
+    icon: [576, 512, [], "f3ff", "M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"]
+  };
+  var faTimes = {
+    prefix: 'fas',
+    iconName: 'times',
+    icon: [352, 512, [], "f00d", "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]
+  };
+  var faTimesCircle = {
+    prefix: 'fas',
+    iconName: 'times-circle',
+    icon: [512, 512, [], "f057", "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]
+  };
+  var faTint = {
+    prefix: 'fas',
+    iconName: 'tint',
+    icon: [352, 512, [], "f043", "M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]
+  };
+  var faTintSlash = {
+    prefix: 'fas',
+    iconName: 'tint-slash',
+    icon: [640, 512, [], "f5c7", "M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"]
+  };
+  var faTired = {
+    prefix: 'fas',
+    iconName: 'tired',
+    icon: [496, 512, [], "f5c8", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"]
+  };
+  var faToggleOff = {
+    prefix: 'fas',
+    iconName: 'toggle-off',
+    icon: [576, 512, [], "f204", "M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"]
+  };
+  var faToggleOn = {
+    prefix: 'fas',
+    iconName: 'toggle-on',
+    icon: [576, 512, [], "f205", "M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"]
+  };
+  var faToilet = {
+    prefix: 'fas',
+    iconName: 'toilet',
+    icon: [384, 512, [], "f7d8", "M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"]
+  };
+  var faToiletPaper = {
+    prefix: 'fas',
+    iconName: 'toilet-paper',
+    icon: [576, 512, [], "f71e", "M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"]
+  };
+  var faToiletPaperSlash = {
+    prefix: 'fas',
+    iconName: 'toilet-paper-slash',
+    icon: [640, 512, [], "e072", "M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"]
+  };
+  var faToolbox = {
+    prefix: 'fas',
+    iconName: 'toolbox',
+    icon: [512, 512, [], "f552", "M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"]
+  };
+  var faTools = {
+    prefix: 'fas',
+    iconName: 'tools',
+    icon: [512, 512, [], "f7d9", "M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"]
+  };
+  var faTooth = {
+    prefix: 'fas',
+    iconName: 'tooth',
+    icon: [448, 512, [], "f5c9", "M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"]
+  };
+  var faTorah = {
+    prefix: 'fas',
+    iconName: 'torah',
+    icon: [640, 512, [], "f6a0", "M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"]
+  };
+  var faToriiGate = {
+    prefix: 'fas',
+    iconName: 'torii-gate',
+    icon: [512, 512, [], "f6a1", "M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"]
+  };
+  var faTractor = {
+    prefix: 'fas',
+    iconName: 'tractor',
+    icon: [640, 512, [], "f722", "M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"]
+  };
+  var faTrademark = {
+    prefix: 'fas',
+    iconName: 'trademark',
+    icon: [640, 512, [], "f25c", "M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"]
+  };
+  var faTrafficLight = {
+    prefix: 'fas',
+    iconName: 'traffic-light',
+    icon: [384, 512, [], "f637", "M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]
+  };
+  var faTrailer = {
+    prefix: 'fas',
+    iconName: 'trailer',
+    icon: [640, 512, [], "e041", "M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"]
+  };
+  var faTrain = {
+    prefix: 'fas',
+    iconName: 'train',
+    icon: [448, 512, [], "f238", "M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"]
+  };
+  var faTram = {
+    prefix: 'fas',
+    iconName: 'tram',
+    icon: [512, 512, [], "f7da", "M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]
+  };
+  var faTransgender = {
+    prefix: 'fas',
+    iconName: 'transgender',
+    icon: [384, 512, [], "f224", "M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faTransgenderAlt = {
+    prefix: 'fas',
+    iconName: 'transgender-alt',
+    icon: [480, 512, [], "f225", "M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faTrash = {
+    prefix: 'fas',
+    iconName: 'trash',
+    icon: [448, 512, [], "f1f8", "M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]
+  };
+  var faTrashAlt = {
+    prefix: 'fas',
+    iconName: 'trash-alt',
+    icon: [448, 512, [], "f2ed", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faTrashRestore = {
+    prefix: 'fas',
+    iconName: 'trash-restore',
+    icon: [448, 512, [], "f829", "M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faTrashRestoreAlt = {
+    prefix: 'fas',
+    iconName: 'trash-restore-alt',
+    icon: [448, 512, [], "f82a", "M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]
+  };
+  var faTree = {
+    prefix: 'fas',
+    iconName: 'tree',
+    icon: [384, 512, [], "f1bb", "M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"]
+  };
+  var faTrophy = {
+    prefix: 'fas',
+    iconName: 'trophy',
+    icon: [576, 512, [], "f091", "M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"]
+  };
+  var faTruck = {
+    prefix: 'fas',
+    iconName: 'truck',
+    icon: [640, 512, [], "f0d1", "M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]
+  };
+  var faTruckLoading = {
+    prefix: 'fas',
+    iconName: 'truck-loading',
+    icon: [640, 512, [], "f4de", "M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]
+  };
+  var faTruckMonster = {
+    prefix: 'fas',
+    iconName: 'truck-monster',
+    icon: [640, 512, [], "f63b", "M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]
+  };
+  var faTruckMoving = {
+    prefix: 'fas',
+    iconName: 'truck-moving',
+    icon: [640, 512, [], "f4df", "M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"]
+  };
+  var faTruckPickup = {
+    prefix: 'fas',
+    iconName: 'truck-pickup',
+    icon: [640, 512, [], "f63c", "M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]
+  };
+  var faTshirt = {
+    prefix: 'fas',
+    iconName: 'tshirt',
+    icon: [640, 512, [], "f553", "M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"]
+  };
+  var faTty = {
+    prefix: 'fas',
+    iconName: 'tty',
+    icon: [512, 512, [], "f1e4", "M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]
+  };
+  var faTv = {
+    prefix: 'fas',
+    iconName: 'tv',
+    icon: [640, 512, [], "f26c", "M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"]
+  };
+  var faUmbrella = {
+    prefix: 'fas',
+    iconName: 'umbrella',
+    icon: [576, 512, [], "f0e9", "M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"]
+  };
+  var faUmbrellaBeach = {
+    prefix: 'fas',
+    iconName: 'umbrella-beach',
+    icon: [640, 512, [], "f5ca", "M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"]
+  };
+  var faUnderline = {
+    prefix: 'fas',
+    iconName: 'underline',
+    icon: [448, 512, [], "f0cd", "M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]
+  };
+  var faUndo = {
+    prefix: 'fas',
+    iconName: 'undo',
+    icon: [512, 512, [], "f0e2", "M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]
+  };
+  var faUndoAlt = {
+    prefix: 'fas',
+    iconName: 'undo-alt',
+    icon: [512, 512, [], "f2ea", "M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]
+  };
+  var faUniversalAccess = {
+    prefix: 'fas',
+    iconName: 'universal-access',
+    icon: [512, 512, [], "f29a", "M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"]
+  };
+  var faUniversity = {
+    prefix: 'fas',
+    iconName: 'university',
+    icon: [512, 512, [], "f19c", "M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"]
+  };
+  var faUnlink = {
+    prefix: 'fas',
+    iconName: 'unlink',
+    icon: [512, 512, [], "f127", "M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"]
+  };
+  var faUnlock = {
+    prefix: 'fas',
+    iconName: 'unlock',
+    icon: [448, 512, [], "f09c", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]
+  };
+  var faUnlockAlt = {
+    prefix: 'fas',
+    iconName: 'unlock-alt',
+    icon: [448, 512, [], "f13e", "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"]
+  };
+  var faUpload = {
+    prefix: 'fas',
+    iconName: 'upload',
+    icon: [512, 512, [], "f093", "M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]
+  };
+  var faUser = {
+    prefix: 'fas',
+    iconName: 'user',
+    icon: [448, 512, [], "f007", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+  };
+  var faUserAlt = {
+    prefix: 'fas',
+    iconName: 'user-alt',
+    icon: [512, 512, [], "f406", "M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"]
+  };
+  var faUserAltSlash = {
+    prefix: 'fas',
+    iconName: 'user-alt-slash',
+    icon: [640, 512, [], "f4fa", "M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"]
+  };
+  var faUserAstronaut = {
+    prefix: 'fas',
+    iconName: 'user-astronaut',
+    icon: [448, 512, [], "f4fb", "M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"]
+  };
+  var faUserCheck = {
+    prefix: 'fas',
+    iconName: 'user-check',
+    icon: [640, 512, [], "f4fc", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"]
+  };
+  var faUserCircle = {
+    prefix: 'fas',
+    iconName: 'user-circle',
+    icon: [496, 512, [], "f2bd", "M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"]
+  };
+  var faUserClock = {
+    prefix: 'fas',
+    iconName: 'user-clock',
+    icon: [640, 512, [], "f4fd", "M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"]
+  };
+  var faUserCog = {
+    prefix: 'fas',
+    iconName: 'user-cog',
+    icon: [640, 512, [], "f4fe", "M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"]
+  };
+  var faUserEdit = {
+    prefix: 'fas',
+    iconName: 'user-edit',
+    icon: [640, 512, [], "f4ff", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]
+  };
+  var faUserFriends = {
+    prefix: 'fas',
+    iconName: 'user-friends',
+    icon: [640, 512, [], "f500", "M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]
+  };
+  var faUserGraduate = {
+    prefix: 'fas',
+    iconName: 'user-graduate',
+    icon: [448, 512, [], "f501", "M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"]
+  };
+  var faUserInjured = {
+    prefix: 'fas',
+    iconName: 'user-injured',
+    icon: [448, 512, [], "f728", "M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"]
+  };
+  var faUserLock = {
+    prefix: 'fas',
+    iconName: 'user-lock',
+    icon: [640, 512, [], "f502", "M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]
+  };
+  var faUserMd = {
+    prefix: 'fas',
+    iconName: 'user-md',
+    icon: [448, 512, [], "f0f0", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"]
+  };
+  var faUserMinus = {
+    prefix: 'fas',
+    iconName: 'user-minus',
+    icon: [640, 512, [], "f503", "M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+  };
+  var faUserNinja = {
+    prefix: 'fas',
+    iconName: 'user-ninja',
+    icon: [448, 512, [], "f504", "M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"]
+  };
+  var faUserNurse = {
+    prefix: 'fas',
+    iconName: 'user-nurse',
+    icon: [448, 512, [], "f82f", "M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"]
+  };
+  var faUserPlus = {
+    prefix: 'fas',
+    iconName: 'user-plus',
+    icon: [640, 512, [], "f234", "M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+  };
+  var faUserSecret = {
+    prefix: 'fas',
+    iconName: 'user-secret',
+    icon: [448, 512, [], "f21b", "M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"]
+  };
+  var faUserShield = {
+    prefix: 'fas',
+    iconName: 'user-shield',
+    icon: [640, 512, [], "f505", "M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"]
+  };
+  var faUserSlash = {
+    prefix: 'fas',
+    iconName: 'user-slash',
+    icon: [640, 512, [], "f506", "M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"]
+  };
+  var faUserTag = {
+    prefix: 'fas',
+    iconName: 'user-tag',
+    icon: [640, 512, [], "f507", "M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"]
+  };
+  var faUserTie = {
+    prefix: 'fas',
+    iconName: 'user-tie',
+    icon: [448, 512, [], "f508", "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"]
+  };
+  var faUserTimes = {
+    prefix: 'fas',
+    iconName: 'user-times',
+    icon: [640, 512, [], "f235", "M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]
+  };
+  var faUsers = {
+    prefix: 'fas',
+    iconName: 'users',
+    icon: [640, 512, [], "f0c0", "M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
+  };
+  var faUsersCog = {
+    prefix: 'fas',
+    iconName: 'users-cog',
+    icon: [640, 512, [], "f509", "M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]
+  };
+  var faUsersSlash = {
+    prefix: 'fas',
+    iconName: 'users-slash',
+    icon: [640, 512, [], "e073", "M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"]
+  };
+  var faUtensilSpoon = {
+    prefix: 'fas',
+    iconName: 'utensil-spoon',
+    icon: [512, 512, [], "f2e5", "M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"]
+  };
+  var faUtensils = {
+    prefix: 'fas',
+    iconName: 'utensils',
+    icon: [416, 512, [], "f2e7", "M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"]
+  };
+  var faVectorSquare = {
+    prefix: 'fas',
+    iconName: 'vector-square',
+    icon: [512, 512, [], "f5cb", "M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"]
+  };
+  var faVenus = {
+    prefix: 'fas',
+    iconName: 'venus',
+    icon: [288, 512, [], "f221", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]
+  };
+  var faVenusDouble = {
+    prefix: 'fas',
+    iconName: 'venus-double',
+    icon: [512, 512, [], "f226", "M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"]
+  };
+  var faVenusMars = {
+    prefix: 'fas',
+    iconName: 'venus-mars',
+    icon: [576, 512, [], "f228", "M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]
+  };
+  var faVest = {
+    prefix: 'fas',
+    iconName: 'vest',
+    icon: [448, 512, [], "e085", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"]
+  };
+  var faVestPatches = {
+    prefix: 'fas',
+    iconName: 'vest-patches',
+    icon: [448, 512, [], "e086", "M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"]
+  };
+  var faVial = {
+    prefix: 'fas',
+    iconName: 'vial',
+    icon: [480, 512, [], "f492", "M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"]
+  };
+  var faVials = {
+    prefix: 'fas',
+    iconName: 'vials',
+    icon: [640, 512, [], "f493", "M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"]
+  };
+  var faVideo = {
+    prefix: 'fas',
+    iconName: 'video',
+    icon: [576, 512, [], "f03d", "M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"]
+  };
+  var faVideoSlash = {
+    prefix: 'fas',
+    iconName: 'video-slash',
+    icon: [640, 512, [], "f4e2", "M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"]
+  };
+  var faVihara = {
+    prefix: 'fas',
+    iconName: 'vihara',
+    icon: [640, 512, [], "f6a7", "M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"]
+  };
+  var faVirus = {
+    prefix: 'fas',
+    iconName: 'virus',
+    icon: [512, 512, [], "e074", "M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"]
+  };
+  var faVirusSlash = {
+    prefix: 'fas',
+    iconName: 'virus-slash',
+    icon: [640, 512, [], "e075", "M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"]
+  };
+  var faViruses = {
+    prefix: 'fas',
+    iconName: 'viruses',
+    icon: [640, 512, [], "e076", "M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"]
+  };
+  var faVoicemail = {
+    prefix: 'fas',
+    iconName: 'voicemail',
+    icon: [640, 512, [], "f897", "M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"]
+  };
+  var faVolleyballBall = {
+    prefix: 'fas',
+    iconName: 'volleyball-ball',
+    icon: [512, 512, [], "f45f", "M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"]
+  };
+  var faVolumeDown = {
+    prefix: 'fas',
+    iconName: 'volume-down',
+    icon: [384, 512, [], "f027", "M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"]
+  };
+  var faVolumeMute = {
+    prefix: 'fas',
+    iconName: 'volume-mute',
+    icon: [512, 512, [], "f6a9", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"]
+  };
+  var faVolumeOff = {
+    prefix: 'fas',
+    iconName: 'volume-off',
+    icon: [256, 512, [], "f026", "M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"]
+  };
+  var faVolumeUp = {
+    prefix: 'fas',
+    iconName: 'volume-up',
+    icon: [576, 512, [], "f028", "M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"]
+  };
+  var faVoteYea = {
+    prefix: 'fas',
+    iconName: 'vote-yea',
+    icon: [640, 512, [], "f772", "M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"]
+  };
+  var faVrCardboard = {
+    prefix: 'fas',
+    iconName: 'vr-cardboard',
+    icon: [640, 512, [], "f729", "M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"]
+  };
+  var faWalking = {
+    prefix: 'fas',
+    iconName: 'walking',
+    icon: [320, 512, [], "f554", "M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"]
+  };
+  var faWallet = {
+    prefix: 'fas',
+    iconName: 'wallet',
+    icon: [512, 512, [], "f555", "M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]
+  };
+  var faWarehouse = {
+    prefix: 'fas',
+    iconName: 'warehouse',
+    icon: [640, 512, [], "f494", "M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"]
+  };
+  var faWater = {
+    prefix: 'fas',
+    iconName: 'water',
+    icon: [576, 512, [], "f773", "M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"]
+  };
+  var faWaveSquare = {
+    prefix: 'fas',
+    iconName: 'wave-square',
+    icon: [640, 512, [], "f83e", "M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"]
+  };
+  var faWeight = {
+    prefix: 'fas',
+    iconName: 'weight',
+    icon: [512, 512, [], "f496", "M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"]
+  };
+  var faWeightHanging = {
+    prefix: 'fas',
+    iconName: 'weight-hanging',
+    icon: [512, 512, [], "f5cd", "M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]
+  };
+  var faWheelchair = {
+    prefix: 'fas',
+    iconName: 'wheelchair',
+    icon: [512, 512, [], "f193", "M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"]
+  };
+  var faWifi = {
+    prefix: 'fas',
+    iconName: 'wifi',
+    icon: [640, 512, [], "f1eb", "M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"]
+  };
+  var faWind = {
+    prefix: 'fas',
+    iconName: 'wind',
+    icon: [512, 512, [], "f72e", "M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"]
+  };
+  var faWindowClose = {
+    prefix: 'fas',
+    iconName: 'window-close',
+    icon: [512, 512, [], "f410", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"]
+  };
+  var faWindowMaximize = {
+    prefix: 'fas',
+    iconName: 'window-maximize',
+    icon: [512, 512, [], "f2d0", "M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"]
+  };
+  var faWindowMinimize = {
+    prefix: 'fas',
+    iconName: 'window-minimize',
+    icon: [512, 512, [], "f2d1", "M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"]
+  };
+  var faWindowRestore = {
+    prefix: 'fas',
+    iconName: 'window-restore',
+    icon: [512, 512, [], "f2d2", "M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"]
+  };
+  var faWineBottle = {
+    prefix: 'fas',
+    iconName: 'wine-bottle',
+    icon: [512, 512, [], "f72f", "M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"]
+  };
+  var faWineGlass = {
+    prefix: 'fas',
+    iconName: 'wine-glass',
+    icon: [288, 512, [], "f4e3", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"]
+  };
+  var faWineGlassAlt = {
+    prefix: 'fas',
+    iconName: 'wine-glass-alt',
+    icon: [288, 512, [], "f5ce", "M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"]
+  };
+  var faWonSign = {
+    prefix: 'fas',
+    iconName: 'won-sign',
+    icon: [576, 512, [], "f159", "M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"]
+  };
+  var faWrench = {
+    prefix: 'fas',
+    iconName: 'wrench',
+    icon: [512, 512, [], "f0ad", "M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]
+  };
+  var faXRay = {
+    prefix: 'fas',
+    iconName: 'x-ray',
+    icon: [640, 512, [], "f497", "M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"]
+  };
+  var faYenSign = {
+    prefix: 'fas',
+    iconName: 'yen-sign',
+    icon: [384, 512, [], "f157", "M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"]
+  };
+  var faYinYang = {
+    prefix: 'fas',
+    iconName: 'yin-yang',
+    icon: [496, 512, [], "f6ad", "M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]
+  };
+  var _iconsCache = {
+    faAd: faAd,
+    faAddressBook: faAddressBook,
+    faAddressCard: faAddressCard,
+    faAdjust: faAdjust,
+    faAirFreshener: faAirFreshener,
+    faAlignCenter: faAlignCenter,
+    faAlignJustify: faAlignJustify,
+    faAlignLeft: faAlignLeft,
+    faAlignRight: faAlignRight,
+    faAllergies: faAllergies,
+    faAmbulance: faAmbulance,
+    faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,
+    faAnchor: faAnchor,
+    faAngleDoubleDown: faAngleDoubleDown,
+    faAngleDoubleLeft: faAngleDoubleLeft,
+    faAngleDoubleRight: faAngleDoubleRight,
+    faAngleDoubleUp: faAngleDoubleUp,
+    faAngleDown: faAngleDown,
+    faAngleLeft: faAngleLeft,
+    faAngleRight: faAngleRight,
+    faAngleUp: faAngleUp,
+    faAngry: faAngry,
+    faAnkh: faAnkh,
+    faAppleAlt: faAppleAlt,
+    faArchive: faArchive,
+    faArchway: faArchway,
+    faArrowAltCircleDown: faArrowAltCircleDown,
+    faArrowAltCircleLeft: faArrowAltCircleLeft,
+    faArrowAltCircleRight: faArrowAltCircleRight,
+    faArrowAltCircleUp: faArrowAltCircleUp,
+    faArrowCircleDown: faArrowCircleDown,
+    faArrowCircleLeft: faArrowCircleLeft,
+    faArrowCircleRight: faArrowCircleRight,
+    faArrowCircleUp: faArrowCircleUp,
+    faArrowDown: faArrowDown,
+    faArrowLeft: faArrowLeft,
+    faArrowRight: faArrowRight,
+    faArrowUp: faArrowUp,
+    faArrowsAlt: faArrowsAlt,
+    faArrowsAltH: faArrowsAltH,
+    faArrowsAltV: faArrowsAltV,
+    faAssistiveListeningSystems: faAssistiveListeningSystems,
+    faAsterisk: faAsterisk,
+    faAt: faAt,
+    faAtlas: faAtlas,
+    faAtom: faAtom,
+    faAudioDescription: faAudioDescription,
+    faAward: faAward,
+    faBaby: faBaby,
+    faBabyCarriage: faBabyCarriage,
+    faBackspace: faBackspace,
+    faBackward: faBackward,
+    faBacon: faBacon,
+    faBacteria: faBacteria,
+    faBacterium: faBacterium,
+    faBahai: faBahai,
+    faBalanceScale: faBalanceScale,
+    faBalanceScaleLeft: faBalanceScaleLeft,
+    faBalanceScaleRight: faBalanceScaleRight,
+    faBan: faBan,
+    faBandAid: faBandAid,
+    faBarcode: faBarcode,
+    faBars: faBars,
+    faBaseballBall: faBaseballBall,
+    faBasketballBall: faBasketballBall,
+    faBath: faBath,
+    faBatteryEmpty: faBatteryEmpty,
+    faBatteryFull: faBatteryFull,
+    faBatteryHalf: faBatteryHalf,
+    faBatteryQuarter: faBatteryQuarter,
+    faBatteryThreeQuarters: faBatteryThreeQuarters,
+    faBed: faBed,
+    faBeer: faBeer,
+    faBell: faBell,
+    faBellSlash: faBellSlash,
+    faBezierCurve: faBezierCurve,
+    faBible: faBible,
+    faBicycle: faBicycle,
+    faBiking: faBiking,
+    faBinoculars: faBinoculars,
+    faBiohazard: faBiohazard,
+    faBirthdayCake: faBirthdayCake,
+    faBlender: faBlender,
+    faBlenderPhone: faBlenderPhone,
+    faBlind: faBlind,
+    faBlog: faBlog,
+    faBold: faBold,
+    faBolt: faBolt,
+    faBomb: faBomb,
+    faBone: faBone,
+    faBong: faBong,
+    faBook: faBook,
+    faBookDead: faBookDead,
+    faBookMedical: faBookMedical,
+    faBookOpen: faBookOpen,
+    faBookReader: faBookReader,
+    faBookmark: faBookmark,
+    faBorderAll: faBorderAll,
+    faBorderNone: faBorderNone,
+    faBorderStyle: faBorderStyle,
+    faBowlingBall: faBowlingBall,
+    faBox: faBox,
+    faBoxOpen: faBoxOpen,
+    faBoxTissue: faBoxTissue,
+    faBoxes: faBoxes,
+    faBraille: faBraille,
+    faBrain: faBrain,
+    faBreadSlice: faBreadSlice,
+    faBriefcase: faBriefcase,
+    faBriefcaseMedical: faBriefcaseMedical,
+    faBroadcastTower: faBroadcastTower,
+    faBroom: faBroom,
+    faBrush: faBrush,
+    faBug: faBug,
+    faBuilding: faBuilding,
+    faBullhorn: faBullhorn,
+    faBullseye: faBullseye,
+    faBurn: faBurn,
+    faBus: faBus,
+    faBusAlt: faBusAlt,
+    faBusinessTime: faBusinessTime,
+    faCalculator: faCalculator,
+    faCalendar: faCalendar,
+    faCalendarAlt: faCalendarAlt,
+    faCalendarCheck: faCalendarCheck,
+    faCalendarDay: faCalendarDay,
+    faCalendarMinus: faCalendarMinus,
+    faCalendarPlus: faCalendarPlus,
+    faCalendarTimes: faCalendarTimes,
+    faCalendarWeek: faCalendarWeek,
+    faCamera: faCamera,
+    faCameraRetro: faCameraRetro,
+    faCampground: faCampground,
+    faCandyCane: faCandyCane,
+    faCannabis: faCannabis,
+    faCapsules: faCapsules,
+    faCar: faCar,
+    faCarAlt: faCarAlt,
+    faCarBattery: faCarBattery,
+    faCarCrash: faCarCrash,
+    faCarSide: faCarSide,
+    faCaravan: faCaravan,
+    faCaretDown: faCaretDown,
+    faCaretLeft: faCaretLeft,
+    faCaretRight: faCaretRight,
+    faCaretSquareDown: faCaretSquareDown,
+    faCaretSquareLeft: faCaretSquareLeft,
+    faCaretSquareRight: faCaretSquareRight,
+    faCaretSquareUp: faCaretSquareUp,
+    faCaretUp: faCaretUp,
+    faCarrot: faCarrot,
+    faCartArrowDown: faCartArrowDown,
+    faCartPlus: faCartPlus,
+    faCashRegister: faCashRegister,
+    faCat: faCat,
+    faCertificate: faCertificate,
+    faChair: faChair,
+    faChalkboard: faChalkboard,
+    faChalkboardTeacher: faChalkboardTeacher,
+    faChargingStation: faChargingStation,
+    faChartArea: faChartArea,
+    faChartBar: faChartBar,
+    faChartLine: faChartLine,
+    faChartPie: faChartPie,
+    faCheck: faCheck,
+    faCheckCircle: faCheckCircle,
+    faCheckDouble: faCheckDouble,
+    faCheckSquare: faCheckSquare,
+    faCheese: faCheese,
+    faChess: faChess,
+    faChessBishop: faChessBishop,
+    faChessBoard: faChessBoard,
+    faChessKing: faChessKing,
+    faChessKnight: faChessKnight,
+    faChessPawn: faChessPawn,
+    faChessQueen: faChessQueen,
+    faChessRook: faChessRook,
+    faChevronCircleDown: faChevronCircleDown,
+    faChevronCircleLeft: faChevronCircleLeft,
+    faChevronCircleRight: faChevronCircleRight,
+    faChevronCircleUp: faChevronCircleUp,
+    faChevronDown: faChevronDown,
+    faChevronLeft: faChevronLeft,
+    faChevronRight: faChevronRight,
+    faChevronUp: faChevronUp,
+    faChild: faChild,
+    faChurch: faChurch,
+    faCircle: faCircle,
+    faCircleNotch: faCircleNotch,
+    faCity: faCity,
+    faClinicMedical: faClinicMedical,
+    faClipboard: faClipboard,
+    faClipboardCheck: faClipboardCheck,
+    faClipboardList: faClipboardList,
+    faClock: faClock,
+    faClone: faClone,
+    faClosedCaptioning: faClosedCaptioning,
+    faCloud: faCloud,
+    faCloudDownloadAlt: faCloudDownloadAlt,
+    faCloudMeatball: faCloudMeatball,
+    faCloudMoon: faCloudMoon,
+    faCloudMoonRain: faCloudMoonRain,
+    faCloudRain: faCloudRain,
+    faCloudShowersHeavy: faCloudShowersHeavy,
+    faCloudSun: faCloudSun,
+    faCloudSunRain: faCloudSunRain,
+    faCloudUploadAlt: faCloudUploadAlt,
+    faCocktail: faCocktail,
+    faCode: faCode,
+    faCodeBranch: faCodeBranch,
+    faCoffee: faCoffee,
+    faCog: faCog,
+    faCogs: faCogs,
+    faCoins: faCoins,
+    faColumns: faColumns,
+    faComment: faComment,
+    faCommentAlt: faCommentAlt,
+    faCommentDollar: faCommentDollar,
+    faCommentDots: faCommentDots,
+    faCommentMedical: faCommentMedical,
+    faCommentSlash: faCommentSlash,
+    faComments: faComments,
+    faCommentsDollar: faCommentsDollar,
+    faCompactDisc: faCompactDisc,
+    faCompass: faCompass,
+    faCompress: faCompress,
+    faCompressAlt: faCompressAlt,
+    faCompressArrowsAlt: faCompressArrowsAlt,
+    faConciergeBell: faConciergeBell,
+    faCookie: faCookie,
+    faCookieBite: faCookieBite,
+    faCopy: faCopy,
+    faCopyright: faCopyright,
+    faCouch: faCouch,
+    faCreditCard: faCreditCard,
+    faCrop: faCrop,
+    faCropAlt: faCropAlt,
+    faCross: faCross,
+    faCrosshairs: faCrosshairs,
+    faCrow: faCrow,
+    faCrown: faCrown,
+    faCrutch: faCrutch,
+    faCube: faCube,
+    faCubes: faCubes,
+    faCut: faCut,
+    faDatabase: faDatabase,
+    faDeaf: faDeaf,
+    faDemocrat: faDemocrat,
+    faDesktop: faDesktop,
+    faDharmachakra: faDharmachakra,
+    faDiagnoses: faDiagnoses,
+    faDice: faDice,
+    faDiceD20: faDiceD20,
+    faDiceD6: faDiceD6,
+    faDiceFive: faDiceFive,
+    faDiceFour: faDiceFour,
+    faDiceOne: faDiceOne,
+    faDiceSix: faDiceSix,
+    faDiceThree: faDiceThree,
+    faDiceTwo: faDiceTwo,
+    faDigitalTachograph: faDigitalTachograph,
+    faDirections: faDirections,
+    faDisease: faDisease,
+    faDivide: faDivide,
+    faDizzy: faDizzy,
+    faDna: faDna,
+    faDog: faDog,
+    faDollarSign: faDollarSign,
+    faDolly: faDolly,
+    faDollyFlatbed: faDollyFlatbed,
+    faDonate: faDonate,
+    faDoorClosed: faDoorClosed,
+    faDoorOpen: faDoorOpen,
+    faDotCircle: faDotCircle,
+    faDove: faDove,
+    faDownload: faDownload,
+    faDraftingCompass: faDraftingCompass,
+    faDragon: faDragon,
+    faDrawPolygon: faDrawPolygon,
+    faDrum: faDrum,
+    faDrumSteelpan: faDrumSteelpan,
+    faDrumstickBite: faDrumstickBite,
+    faDumbbell: faDumbbell,
+    faDumpster: faDumpster,
+    faDumpsterFire: faDumpsterFire,
+    faDungeon: faDungeon,
+    faEdit: faEdit,
+    faEgg: faEgg,
+    faEject: faEject,
+    faEllipsisH: faEllipsisH,
+    faEllipsisV: faEllipsisV,
+    faEnvelope: faEnvelope,
+    faEnvelopeOpen: faEnvelopeOpen,
+    faEnvelopeOpenText: faEnvelopeOpenText,
+    faEnvelopeSquare: faEnvelopeSquare,
+    faEquals: faEquals,
+    faEraser: faEraser,
+    faEthernet: faEthernet,
+    faEuroSign: faEuroSign,
+    faExchangeAlt: faExchangeAlt,
+    faExclamation: faExclamation,
+    faExclamationCircle: faExclamationCircle,
+    faExclamationTriangle: faExclamationTriangle,
+    faExpand: faExpand,
+    faExpandAlt: faExpandAlt,
+    faExpandArrowsAlt: faExpandArrowsAlt,
+    faExternalLinkAlt: faExternalLinkAlt,
+    faExternalLinkSquareAlt: faExternalLinkSquareAlt,
+    faEye: faEye,
+    faEyeDropper: faEyeDropper,
+    faEyeSlash: faEyeSlash,
+    faFan: faFan,
+    faFastBackward: faFastBackward,
+    faFastForward: faFastForward,
+    faFaucet: faFaucet,
+    faFax: faFax,
+    faFeather: faFeather,
+    faFeatherAlt: faFeatherAlt,
+    faFemale: faFemale,
+    faFighterJet: faFighterJet,
+    faFile: faFile,
+    faFileAlt: faFileAlt,
+    faFileArchive: faFileArchive,
+    faFileAudio: faFileAudio,
+    faFileCode: faFileCode,
+    faFileContract: faFileContract,
+    faFileCsv: faFileCsv,
+    faFileDownload: faFileDownload,
+    faFileExcel: faFileExcel,
+    faFileExport: faFileExport,
+    faFileImage: faFileImage,
+    faFileImport: faFileImport,
+    faFileInvoice: faFileInvoice,
+    faFileInvoiceDollar: faFileInvoiceDollar,
+    faFileMedical: faFileMedical,
+    faFileMedicalAlt: faFileMedicalAlt,
+    faFilePdf: faFilePdf,
+    faFilePowerpoint: faFilePowerpoint,
+    faFilePrescription: faFilePrescription,
+    faFileSignature: faFileSignature,
+    faFileUpload: faFileUpload,
+    faFileVideo: faFileVideo,
+    faFileWord: faFileWord,
+    faFill: faFill,
+    faFillDrip: faFillDrip,
+    faFilm: faFilm,
+    faFilter: faFilter,
+    faFingerprint: faFingerprint,
+    faFire: faFire,
+    faFireAlt: faFireAlt,
+    faFireExtinguisher: faFireExtinguisher,
+    faFirstAid: faFirstAid,
+    faFish: faFish,
+    faFistRaised: faFistRaised,
+    faFlag: faFlag,
+    faFlagCheckered: faFlagCheckered,
+    faFlagUsa: faFlagUsa,
+    faFlask: faFlask,
+    faFlushed: faFlushed,
+    faFolder: faFolder,
+    faFolderMinus: faFolderMinus,
+    faFolderOpen: faFolderOpen,
+    faFolderPlus: faFolderPlus,
+    faFont: faFont,
+    faFontAwesomeLogoFull: faFontAwesomeLogoFull,
+    faFootballBall: faFootballBall,
+    faForward: faForward,
+    faFrog: faFrog,
+    faFrown: faFrown,
+    faFrownOpen: faFrownOpen,
+    faFunnelDollar: faFunnelDollar,
+    faFutbol: faFutbol,
+    faGamepad: faGamepad,
+    faGasPump: faGasPump,
+    faGavel: faGavel,
+    faGem: faGem,
+    faGenderless: faGenderless,
+    faGhost: faGhost,
+    faGift: faGift,
+    faGifts: faGifts,
+    faGlassCheers: faGlassCheers,
+    faGlassMartini: faGlassMartini,
+    faGlassMartiniAlt: faGlassMartiniAlt,
+    faGlassWhiskey: faGlassWhiskey,
+    faGlasses: faGlasses,
+    faGlobe: faGlobe,
+    faGlobeAfrica: faGlobeAfrica,
+    faGlobeAmericas: faGlobeAmericas,
+    faGlobeAsia: faGlobeAsia,
+    faGlobeEurope: faGlobeEurope,
+    faGolfBall: faGolfBall,
+    faGopuram: faGopuram,
+    faGraduationCap: faGraduationCap,
+    faGreaterThan: faGreaterThan,
+    faGreaterThanEqual: faGreaterThanEqual,
+    faGrimace: faGrimace,
+    faGrin: faGrin,
+    faGrinAlt: faGrinAlt,
+    faGrinBeam: faGrinBeam,
+    faGrinBeamSweat: faGrinBeamSweat,
+    faGrinHearts: faGrinHearts,
+    faGrinSquint: faGrinSquint,
+    faGrinSquintTears: faGrinSquintTears,
+    faGrinStars: faGrinStars,
+    faGrinTears: faGrinTears,
+    faGrinTongue: faGrinTongue,
+    faGrinTongueSquint: faGrinTongueSquint,
+    faGrinTongueWink: faGrinTongueWink,
+    faGrinWink: faGrinWink,
+    faGripHorizontal: faGripHorizontal,
+    faGripLines: faGripLines,
+    faGripLinesVertical: faGripLinesVertical,
+    faGripVertical: faGripVertical,
+    faGuitar: faGuitar,
+    faHSquare: faHSquare,
+    faHamburger: faHamburger,
+    faHammer: faHammer,
+    faHamsa: faHamsa,
+    faHandHolding: faHandHolding,
+    faHandHoldingHeart: faHandHoldingHeart,
+    faHandHoldingMedical: faHandHoldingMedical,
+    faHandHoldingUsd: faHandHoldingUsd,
+    faHandHoldingWater: faHandHoldingWater,
+    faHandLizard: faHandLizard,
+    faHandMiddleFinger: faHandMiddleFinger,
+    faHandPaper: faHandPaper,
+    faHandPeace: faHandPeace,
+    faHandPointDown: faHandPointDown,
+    faHandPointLeft: faHandPointLeft,
+    faHandPointRight: faHandPointRight,
+    faHandPointUp: faHandPointUp,
+    faHandPointer: faHandPointer,
+    faHandRock: faHandRock,
+    faHandScissors: faHandScissors,
+    faHandSparkles: faHandSparkles,
+    faHandSpock: faHandSpock,
+    faHands: faHands,
+    faHandsHelping: faHandsHelping,
+    faHandsWash: faHandsWash,
+    faHandshake: faHandshake,
+    faHandshakeAltSlash: faHandshakeAltSlash,
+    faHandshakeSlash: faHandshakeSlash,
+    faHanukiah: faHanukiah,
+    faHardHat: faHardHat,
+    faHashtag: faHashtag,
+    faHatCowboy: faHatCowboy,
+    faHatCowboySide: faHatCowboySide,
+    faHatWizard: faHatWizard,
+    faHdd: faHdd,
+    faHeadSideCough: faHeadSideCough,
+    faHeadSideCoughSlash: faHeadSideCoughSlash,
+    faHeadSideMask: faHeadSideMask,
+    faHeadSideVirus: faHeadSideVirus,
+    faHeading: faHeading,
+    faHeadphones: faHeadphones,
+    faHeadphonesAlt: faHeadphonesAlt,
+    faHeadset: faHeadset,
+    faHeart: faHeart,
+    faHeartBroken: faHeartBroken,
+    faHeartbeat: faHeartbeat,
+    faHelicopter: faHelicopter,
+    faHighlighter: faHighlighter,
+    faHiking: faHiking,
+    faHippo: faHippo,
+    faHistory: faHistory,
+    faHockeyPuck: faHockeyPuck,
+    faHollyBerry: faHollyBerry,
+    faHome: faHome,
+    faHorse: faHorse,
+    faHorseHead: faHorseHead,
+    faHospital: faHospital,
+    faHospitalAlt: faHospitalAlt,
+    faHospitalSymbol: faHospitalSymbol,
+    faHospitalUser: faHospitalUser,
+    faHotTub: faHotTub,
+    faHotdog: faHotdog,
+    faHotel: faHotel,
+    faHourglass: faHourglass,
+    faHourglassEnd: faHourglassEnd,
+    faHourglassHalf: faHourglassHalf,
+    faHourglassStart: faHourglassStart,
+    faHouseDamage: faHouseDamage,
+    faHouseUser: faHouseUser,
+    faHryvnia: faHryvnia,
+    faICursor: faICursor,
+    faIceCream: faIceCream,
+    faIcicles: faIcicles,
+    faIcons: faIcons,
+    faIdBadge: faIdBadge,
+    faIdCard: faIdCard,
+    faIdCardAlt: faIdCardAlt,
+    faIgloo: faIgloo,
+    faImage: faImage,
+    faImages: faImages,
+    faInbox: faInbox,
+    faIndent: faIndent,
+    faIndustry: faIndustry,
+    faInfinity: faInfinity,
+    faInfo: faInfo,
+    faInfoCircle: faInfoCircle,
+    faItalic: faItalic,
+    faJedi: faJedi,
+    faJoint: faJoint,
+    faJournalWhills: faJournalWhills,
+    faKaaba: faKaaba,
+    faKey: faKey,
+    faKeyboard: faKeyboard,
+    faKhanda: faKhanda,
+    faKiss: faKiss,
+    faKissBeam: faKissBeam,
+    faKissWinkHeart: faKissWinkHeart,
+    faKiwiBird: faKiwiBird,
+    faLandmark: faLandmark,
+    faLanguage: faLanguage,
+    faLaptop: faLaptop,
+    faLaptopCode: faLaptopCode,
+    faLaptopHouse: faLaptopHouse,
+    faLaptopMedical: faLaptopMedical,
+    faLaugh: faLaugh,
+    faLaughBeam: faLaughBeam,
+    faLaughSquint: faLaughSquint,
+    faLaughWink: faLaughWink,
+    faLayerGroup: faLayerGroup,
+    faLeaf: faLeaf,
+    faLemon: faLemon,
+    faLessThan: faLessThan,
+    faLessThanEqual: faLessThanEqual,
+    faLevelDownAlt: faLevelDownAlt,
+    faLevelUpAlt: faLevelUpAlt,
+    faLifeRing: faLifeRing,
+    faLightbulb: faLightbulb,
+    faLink: faLink,
+    faLiraSign: faLiraSign,
+    faList: faList,
+    faListAlt: faListAlt,
+    faListOl: faListOl,
+    faListUl: faListUl,
+    faLocationArrow: faLocationArrow,
+    faLock: faLock,
+    faLockOpen: faLockOpen,
+    faLongArrowAltDown: faLongArrowAltDown,
+    faLongArrowAltLeft: faLongArrowAltLeft,
+    faLongArrowAltRight: faLongArrowAltRight,
+    faLongArrowAltUp: faLongArrowAltUp,
+    faLowVision: faLowVision,
+    faLuggageCart: faLuggageCart,
+    faLungs: faLungs,
+    faLungsVirus: faLungsVirus,
+    faMagic: faMagic,
+    faMagnet: faMagnet,
+    faMailBulk: faMailBulk,
+    faMale: faMale,
+    faMap: faMap,
+    faMapMarked: faMapMarked,
+    faMapMarkedAlt: faMapMarkedAlt,
+    faMapMarker: faMapMarker,
+    faMapMarkerAlt: faMapMarkerAlt,
+    faMapPin: faMapPin,
+    faMapSigns: faMapSigns,
+    faMarker: faMarker,
+    faMars: faMars,
+    faMarsDouble: faMarsDouble,
+    faMarsStroke: faMarsStroke,
+    faMarsStrokeH: faMarsStrokeH,
+    faMarsStrokeV: faMarsStrokeV,
+    faMask: faMask,
+    faMedal: faMedal,
+    faMedkit: faMedkit,
+    faMeh: faMeh,
+    faMehBlank: faMehBlank,
+    faMehRollingEyes: faMehRollingEyes,
+    faMemory: faMemory,
+    faMenorah: faMenorah,
+    faMercury: faMercury,
+    faMeteor: faMeteor,
+    faMicrochip: faMicrochip,
+    faMicrophone: faMicrophone,
+    faMicrophoneAlt: faMicrophoneAlt,
+    faMicrophoneAltSlash: faMicrophoneAltSlash,
+    faMicrophoneSlash: faMicrophoneSlash,
+    faMicroscope: faMicroscope,
+    faMinus: faMinus,
+    faMinusCircle: faMinusCircle,
+    faMinusSquare: faMinusSquare,
+    faMitten: faMitten,
+    faMobile: faMobile,
+    faMobileAlt: faMobileAlt,
+    faMoneyBill: faMoneyBill,
+    faMoneyBillAlt: faMoneyBillAlt,
+    faMoneyBillWave: faMoneyBillWave,
+    faMoneyBillWaveAlt: faMoneyBillWaveAlt,
+    faMoneyCheck: faMoneyCheck,
+    faMoneyCheckAlt: faMoneyCheckAlt,
+    faMonument: faMonument,
+    faMoon: faMoon,
+    faMortarPestle: faMortarPestle,
+    faMosque: faMosque,
+    faMotorcycle: faMotorcycle,
+    faMountain: faMountain,
+    faMouse: faMouse,
+    faMousePointer: faMousePointer,
+    faMugHot: faMugHot,
+    faMusic: faMusic,
+    faNetworkWired: faNetworkWired,
+    faNeuter: faNeuter,
+    faNewspaper: faNewspaper,
+    faNotEqual: faNotEqual,
+    faNotesMedical: faNotesMedical,
+    faObjectGroup: faObjectGroup,
+    faObjectUngroup: faObjectUngroup,
+    faOilCan: faOilCan,
+    faOm: faOm,
+    faOtter: faOtter,
+    faOutdent: faOutdent,
+    faPager: faPager,
+    faPaintBrush: faPaintBrush,
+    faPaintRoller: faPaintRoller,
+    faPalette: faPalette,
+    faPallet: faPallet,
+    faPaperPlane: faPaperPlane,
+    faPaperclip: faPaperclip,
+    faParachuteBox: faParachuteBox,
+    faParagraph: faParagraph,
+    faParking: faParking,
+    faPassport: faPassport,
+    faPastafarianism: faPastafarianism,
+    faPaste: faPaste,
+    faPause: faPause,
+    faPauseCircle: faPauseCircle,
+    faPaw: faPaw,
+    faPeace: faPeace,
+    faPen: faPen,
+    faPenAlt: faPenAlt,
+    faPenFancy: faPenFancy,
+    faPenNib: faPenNib,
+    faPenSquare: faPenSquare,
+    faPencilAlt: faPencilAlt,
+    faPencilRuler: faPencilRuler,
+    faPeopleArrows: faPeopleArrows,
+    faPeopleCarry: faPeopleCarry,
+    faPepperHot: faPepperHot,
+    faPercent: faPercent,
+    faPercentage: faPercentage,
+    faPersonBooth: faPersonBooth,
+    faPhone: faPhone,
+    faPhoneAlt: faPhoneAlt,
+    faPhoneSlash: faPhoneSlash,
+    faPhoneSquare: faPhoneSquare,
+    faPhoneSquareAlt: faPhoneSquareAlt,
+    faPhoneVolume: faPhoneVolume,
+    faPhotoVideo: faPhotoVideo,
+    faPiggyBank: faPiggyBank,
+    faPills: faPills,
+    faPizzaSlice: faPizzaSlice,
+    faPlaceOfWorship: faPlaceOfWorship,
+    faPlane: faPlane,
+    faPlaneArrival: faPlaneArrival,
+    faPlaneDeparture: faPlaneDeparture,
+    faPlaneSlash: faPlaneSlash,
+    faPlay: faPlay,
+    faPlayCircle: faPlayCircle,
+    faPlug: faPlug,
+    faPlus: faPlus,
+    faPlusCircle: faPlusCircle,
+    faPlusSquare: faPlusSquare,
+    faPodcast: faPodcast,
+    faPoll: faPoll,
+    faPollH: faPollH,
+    faPoo: faPoo,
+    faPooStorm: faPooStorm,
+    faPoop: faPoop,
+    faPortrait: faPortrait,
+    faPoundSign: faPoundSign,
+    faPowerOff: faPowerOff,
+    faPray: faPray,
+    faPrayingHands: faPrayingHands,
+    faPrescription: faPrescription,
+    faPrescriptionBottle: faPrescriptionBottle,
+    faPrescriptionBottleAlt: faPrescriptionBottleAlt,
+    faPrint: faPrint,
+    faProcedures: faProcedures,
+    faProjectDiagram: faProjectDiagram,
+    faPumpMedical: faPumpMedical,
+    faPumpSoap: faPumpSoap,
+    faPuzzlePiece: faPuzzlePiece,
+    faQrcode: faQrcode,
+    faQuestion: faQuestion,
+    faQuestionCircle: faQuestionCircle,
+    faQuidditch: faQuidditch,
+    faQuoteLeft: faQuoteLeft,
+    faQuoteRight: faQuoteRight,
+    faQuran: faQuran,
+    faRadiation: faRadiation,
+    faRadiationAlt: faRadiationAlt,
+    faRainbow: faRainbow,
+    faRandom: faRandom,
+    faReceipt: faReceipt,
+    faRecordVinyl: faRecordVinyl,
+    faRecycle: faRecycle,
+    faRedo: faRedo,
+    faRedoAlt: faRedoAlt,
+    faRegistered: faRegistered,
+    faRemoveFormat: faRemoveFormat,
+    faReply: faReply,
+    faReplyAll: faReplyAll,
+    faRepublican: faRepublican,
+    faRestroom: faRestroom,
+    faRetweet: faRetweet,
+    faRibbon: faRibbon,
+    faRing: faRing,
+    faRoad: faRoad,
+    faRobot: faRobot,
+    faRocket: faRocket,
+    faRoute: faRoute,
+    faRss: faRss,
+    faRssSquare: faRssSquare,
+    faRubleSign: faRubleSign,
+    faRuler: faRuler,
+    faRulerCombined: faRulerCombined,
+    faRulerHorizontal: faRulerHorizontal,
+    faRulerVertical: faRulerVertical,
+    faRunning: faRunning,
+    faRupeeSign: faRupeeSign,
+    faSadCry: faSadCry,
+    faSadTear: faSadTear,
+    faSatellite: faSatellite,
+    faSatelliteDish: faSatelliteDish,
+    faSave: faSave,
+    faSchool: faSchool,
+    faScrewdriver: faScrewdriver,
+    faScroll: faScroll,
+    faSdCard: faSdCard,
+    faSearch: faSearch,
+    faSearchDollar: faSearchDollar,
+    faSearchLocation: faSearchLocation,
+    faSearchMinus: faSearchMinus,
+    faSearchPlus: faSearchPlus,
+    faSeedling: faSeedling,
+    faServer: faServer,
+    faShapes: faShapes,
+    faShare: faShare,
+    faShareAlt: faShareAlt,
+    faShareAltSquare: faShareAltSquare,
+    faShareSquare: faShareSquare,
+    faShekelSign: faShekelSign,
+    faShieldAlt: faShieldAlt,
+    faShieldVirus: faShieldVirus,
+    faShip: faShip,
+    faShippingFast: faShippingFast,
+    faShoePrints: faShoePrints,
+    faShoppingBag: faShoppingBag,
+    faShoppingBasket: faShoppingBasket,
+    faShoppingCart: faShoppingCart,
+    faShower: faShower,
+    faShuttleVan: faShuttleVan,
+    faSign: faSign,
+    faSignInAlt: faSignInAlt,
+    faSignLanguage: faSignLanguage,
+    faSignOutAlt: faSignOutAlt,
+    faSignal: faSignal,
+    faSignature: faSignature,
+    faSimCard: faSimCard,
+    faSink: faSink,
+    faSitemap: faSitemap,
+    faSkating: faSkating,
+    faSkiing: faSkiing,
+    faSkiingNordic: faSkiingNordic,
+    faSkull: faSkull,
+    faSkullCrossbones: faSkullCrossbones,
+    faSlash: faSlash,
+    faSleigh: faSleigh,
+    faSlidersH: faSlidersH,
+    faSmile: faSmile,
+    faSmileBeam: faSmileBeam,
+    faSmileWink: faSmileWink,
+    faSmog: faSmog,
+    faSmoking: faSmoking,
+    faSmokingBan: faSmokingBan,
+    faSms: faSms,
+    faSnowboarding: faSnowboarding,
+    faSnowflake: faSnowflake,
+    faSnowman: faSnowman,
+    faSnowplow: faSnowplow,
+    faSoap: faSoap,
+    faSocks: faSocks,
+    faSolarPanel: faSolarPanel,
+    faSort: faSort,
+    faSortAlphaDown: faSortAlphaDown,
+    faSortAlphaDownAlt: faSortAlphaDownAlt,
+    faSortAlphaUp: faSortAlphaUp,
+    faSortAlphaUpAlt: faSortAlphaUpAlt,
+    faSortAmountDown: faSortAmountDown,
+    faSortAmountDownAlt: faSortAmountDownAlt,
+    faSortAmountUp: faSortAmountUp,
+    faSortAmountUpAlt: faSortAmountUpAlt,
+    faSortDown: faSortDown,
+    faSortNumericDown: faSortNumericDown,
+    faSortNumericDownAlt: faSortNumericDownAlt,
+    faSortNumericUp: faSortNumericUp,
+    faSortNumericUpAlt: faSortNumericUpAlt,
+    faSortUp: faSortUp,
+    faSpa: faSpa,
+    faSpaceShuttle: faSpaceShuttle,
+    faSpellCheck: faSpellCheck,
+    faSpider: faSpider,
+    faSpinner: faSpinner,
+    faSplotch: faSplotch,
+    faSprayCan: faSprayCan,
+    faSquare: faSquare,
+    faSquareFull: faSquareFull,
+    faSquareRootAlt: faSquareRootAlt,
+    faStamp: faStamp,
+    faStar: faStar,
+    faStarAndCrescent: faStarAndCrescent,
+    faStarHalf: faStarHalf,
+    faStarHalfAlt: faStarHalfAlt,
+    faStarOfDavid: faStarOfDavid,
+    faStarOfLife: faStarOfLife,
+    faStepBackward: faStepBackward,
+    faStepForward: faStepForward,
+    faStethoscope: faStethoscope,
+    faStickyNote: faStickyNote,
+    faStop: faStop,
+    faStopCircle: faStopCircle,
+    faStopwatch: faStopwatch,
+    faStopwatch20: faStopwatch20,
+    faStore: faStore,
+    faStoreAlt: faStoreAlt,
+    faStoreAltSlash: faStoreAltSlash,
+    faStoreSlash: faStoreSlash,
+    faStream: faStream,
+    faStreetView: faStreetView,
+    faStrikethrough: faStrikethrough,
+    faStroopwafel: faStroopwafel,
+    faSubscript: faSubscript,
+    faSubway: faSubway,
+    faSuitcase: faSuitcase,
+    faSuitcaseRolling: faSuitcaseRolling,
+    faSun: faSun,
+    faSuperscript: faSuperscript,
+    faSurprise: faSurprise,
+    faSwatchbook: faSwatchbook,
+    faSwimmer: faSwimmer,
+    faSwimmingPool: faSwimmingPool,
+    faSynagogue: faSynagogue,
+    faSync: faSync,
+    faSyncAlt: faSyncAlt,
+    faSyringe: faSyringe,
+    faTable: faTable,
+    faTableTennis: faTableTennis,
+    faTablet: faTablet,
+    faTabletAlt: faTabletAlt,
+    faTablets: faTablets,
+    faTachometerAlt: faTachometerAlt,
+    faTag: faTag,
+    faTags: faTags,
+    faTape: faTape,
+    faTasks: faTasks,
+    faTaxi: faTaxi,
+    faTeeth: faTeeth,
+    faTeethOpen: faTeethOpen,
+    faTemperatureHigh: faTemperatureHigh,
+    faTemperatureLow: faTemperatureLow,
+    faTenge: faTenge,
+    faTerminal: faTerminal,
+    faTextHeight: faTextHeight,
+    faTextWidth: faTextWidth,
+    faTh: faTh,
+    faThLarge: faThLarge,
+    faThList: faThList,
+    faTheaterMasks: faTheaterMasks,
+    faThermometer: faThermometer,
+    faThermometerEmpty: faThermometerEmpty,
+    faThermometerFull: faThermometerFull,
+    faThermometerHalf: faThermometerHalf,
+    faThermometerQuarter: faThermometerQuarter,
+    faThermometerThreeQuarters: faThermometerThreeQuarters,
+    faThumbsDown: faThumbsDown,
+    faThumbsUp: faThumbsUp,
+    faThumbtack: faThumbtack,
+    faTicketAlt: faTicketAlt,
+    faTimes: faTimes,
+    faTimesCircle: faTimesCircle,
+    faTint: faTint,
+    faTintSlash: faTintSlash,
+    faTired: faTired,
+    faToggleOff: faToggleOff,
+    faToggleOn: faToggleOn,
+    faToilet: faToilet,
+    faToiletPaper: faToiletPaper,
+    faToiletPaperSlash: faToiletPaperSlash,
+    faToolbox: faToolbox,
+    faTools: faTools,
+    faTooth: faTooth,
+    faTorah: faTorah,
+    faToriiGate: faToriiGate,
+    faTractor: faTractor,
+    faTrademark: faTrademark,
+    faTrafficLight: faTrafficLight,
+    faTrailer: faTrailer,
+    faTrain: faTrain,
+    faTram: faTram,
+    faTransgender: faTransgender,
+    faTransgenderAlt: faTransgenderAlt,
+    faTrash: faTrash,
+    faTrashAlt: faTrashAlt,
+    faTrashRestore: faTrashRestore,
+    faTrashRestoreAlt: faTrashRestoreAlt,
+    faTree: faTree,
+    faTrophy: faTrophy,
+    faTruck: faTruck,
+    faTruckLoading: faTruckLoading,
+    faTruckMonster: faTruckMonster,
+    faTruckMoving: faTruckMoving,
+    faTruckPickup: faTruckPickup,
+    faTshirt: faTshirt,
+    faTty: faTty,
+    faTv: faTv,
+    faUmbrella: faUmbrella,
+    faUmbrellaBeach: faUmbrellaBeach,
+    faUnderline: faUnderline,
+    faUndo: faUndo,
+    faUndoAlt: faUndoAlt,
+    faUniversalAccess: faUniversalAccess,
+    faUniversity: faUniversity,
+    faUnlink: faUnlink,
+    faUnlock: faUnlock,
+    faUnlockAlt: faUnlockAlt,
+    faUpload: faUpload,
+    faUser: faUser,
+    faUserAlt: faUserAlt,
+    faUserAltSlash: faUserAltSlash,
+    faUserAstronaut: faUserAstronaut,
+    faUserCheck: faUserCheck,
+    faUserCircle: faUserCircle,
+    faUserClock: faUserClock,
+    faUserCog: faUserCog,
+    faUserEdit: faUserEdit,
+    faUserFriends: faUserFriends,
+    faUserGraduate: faUserGraduate,
+    faUserInjured: faUserInjured,
+    faUserLock: faUserLock,
+    faUserMd: faUserMd,
+    faUserMinus: faUserMinus,
+    faUserNinja: faUserNinja,
+    faUserNurse: faUserNurse,
+    faUserPlus: faUserPlus,
+    faUserSecret: faUserSecret,
+    faUserShield: faUserShield,
+    faUserSlash: faUserSlash,
+    faUserTag: faUserTag,
+    faUserTie: faUserTie,
+    faUserTimes: faUserTimes,
+    faUsers: faUsers,
+    faUsersCog: faUsersCog,
+    faUsersSlash: faUsersSlash,
+    faUtensilSpoon: faUtensilSpoon,
+    faUtensils: faUtensils,
+    faVectorSquare: faVectorSquare,
+    faVenus: faVenus,
+    faVenusDouble: faVenusDouble,
+    faVenusMars: faVenusMars,
+    faVest: faVest,
+    faVestPatches: faVestPatches,
+    faVial: faVial,
+    faVials: faVials,
+    faVideo: faVideo,
+    faVideoSlash: faVideoSlash,
+    faVihara: faVihara,
+    faVirus: faVirus,
+    faVirusSlash: faVirusSlash,
+    faViruses: faViruses,
+    faVoicemail: faVoicemail,
+    faVolleyballBall: faVolleyballBall,
+    faVolumeDown: faVolumeDown,
+    faVolumeMute: faVolumeMute,
+    faVolumeOff: faVolumeOff,
+    faVolumeUp: faVolumeUp,
+    faVoteYea: faVoteYea,
+    faVrCardboard: faVrCardboard,
+    faWalking: faWalking,
+    faWallet: faWallet,
+    faWarehouse: faWarehouse,
+    faWater: faWater,
+    faWaveSquare: faWaveSquare,
+    faWeight: faWeight,
+    faWeightHanging: faWeightHanging,
+    faWheelchair: faWheelchair,
+    faWifi: faWifi,
+    faWind: faWind,
+    faWindowClose: faWindowClose,
+    faWindowMaximize: faWindowMaximize,
+    faWindowMinimize: faWindowMinimize,
+    faWindowRestore: faWindowRestore,
+    faWineBottle: faWineBottle,
+    faWineGlass: faWineGlass,
+    faWineGlassAlt: faWineGlassAlt,
+    faWonSign: faWonSign,
+    faWrench: faWrench,
+    faXRay: faXRay,
+    faYenSign: faYenSign,
+    faYinYang: faYinYang
+  };
+
+  exports.fas = _iconsCache;
+  exports.prefix = prefix;
+  exports.faAd = faAd;
+  exports.faAddressBook = faAddressBook;
+  exports.faAddressCard = faAddressCard;
+  exports.faAdjust = faAdjust;
+  exports.faAirFreshener = faAirFreshener;
+  exports.faAlignCenter = faAlignCenter;
+  exports.faAlignJustify = faAlignJustify;
+  exports.faAlignLeft = faAlignLeft;
+  exports.faAlignRight = faAlignRight;
+  exports.faAllergies = faAllergies;
+  exports.faAmbulance = faAmbulance;
+  exports.faAmericanSignLanguageInterpreting = faAmericanSignLanguageInterpreting;
+  exports.faAnchor = faAnchor;
+  exports.faAngleDoubleDown = faAngleDoubleDown;
+  exports.faAngleDoubleLeft = faAngleDoubleLeft;
+  exports.faAngleDoubleRight = faAngleDoubleRight;
+  exports.faAngleDoubleUp = faAngleDoubleUp;
+  exports.faAngleDown = faAngleDown;
+  exports.faAngleLeft = faAngleLeft;
+  exports.faAngleRight = faAngleRight;
+  exports.faAngleUp = faAngleUp;
+  exports.faAngry = faAngry;
+  exports.faAnkh = faAnkh;
+  exports.faAppleAlt = faAppleAlt;
+  exports.faArchive = faArchive;
+  exports.faArchway = faArchway;
+  exports.faArrowAltCircleDown = faArrowAltCircleDown;
+  exports.faArrowAltCircleLeft = faArrowAltCircleLeft;
+  exports.faArrowAltCircleRight = faArrowAltCircleRight;
+  exports.faArrowAltCircleUp = faArrowAltCircleUp;
+  exports.faArrowCircleDown = faArrowCircleDown;
+  exports.faArrowCircleLeft = faArrowCircleLeft;
+  exports.faArrowCircleRight = faArrowCircleRight;
+  exports.faArrowCircleUp = faArrowCircleUp;
+  exports.faArrowDown = faArrowDown;
+  exports.faArrowLeft = faArrowLeft;
+  exports.faArrowRight = faArrowRight;
+  exports.faArrowUp = faArrowUp;
+  exports.faArrowsAlt = faArrowsAlt;
+  exports.faArrowsAltH = faArrowsAltH;
+  exports.faArrowsAltV = faArrowsAltV;
+  exports.faAssistiveListeningSystems = faAssistiveListeningSystems;
+  exports.faAsterisk = faAsterisk;
+  exports.faAt = faAt;
+  exports.faAtlas = faAtlas;
+  exports.faAtom = faAtom;
+  exports.faAudioDescription = faAudioDescription;
+  exports.faAward = faAward;
+  exports.faBaby = faBaby;
+  exports.faBabyCarriage = faBabyCarriage;
+  exports.faBackspace = faBackspace;
+  exports.faBackward = faBackward;
+  exports.faBacon = faBacon;
+  exports.faBacteria = faBacteria;
+  exports.faBacterium = faBacterium;
+  exports.faBahai = faBahai;
+  exports.faBalanceScale = faBalanceScale;
+  exports.faBalanceScaleLeft = faBalanceScaleLeft;
+  exports.faBalanceScaleRight = faBalanceScaleRight;
+  exports.faBan = faBan;
+  exports.faBandAid = faBandAid;
+  exports.faBarcode = faBarcode;
+  exports.faBars = faBars;
+  exports.faBaseballBall = faBaseballBall;
+  exports.faBasketballBall = faBasketballBall;
+  exports.faBath = faBath;
+  exports.faBatteryEmpty = faBatteryEmpty;
+  exports.faBatteryFull = faBatteryFull;
+  exports.faBatteryHalf = faBatteryHalf;
+  exports.faBatteryQuarter = faBatteryQuarter;
+  exports.faBatteryThreeQuarters = faBatteryThreeQuarters;
+  exports.faBed = faBed;
+  exports.faBeer = faBeer;
+  exports.faBell = faBell;
+  exports.faBellSlash = faBellSlash;
+  exports.faBezierCurve = faBezierCurve;
+  exports.faBible = faBible;
+  exports.faBicycle = faBicycle;
+  exports.faBiking = faBiking;
+  exports.faBinoculars = faBinoculars;
+  exports.faBiohazard = faBiohazard;
+  exports.faBirthdayCake = faBirthdayCake;
+  exports.faBlender = faBlender;
+  exports.faBlenderPhone = faBlenderPhone;
+  exports.faBlind = faBlind;
+  exports.faBlog = faBlog;
+  exports.faBold = faBold;
+  exports.faBolt = faBolt;
+  exports.faBomb = faBomb;
+  exports.faBone = faBone;
+  exports.faBong = faBong;
+  exports.faBook = faBook;
+  exports.faBookDead = faBookDead;
+  exports.faBookMedical = faBookMedical;
+  exports.faBookOpen = faBookOpen;
+  exports.faBookReader = faBookReader;
+  exports.faBookmark = faBookmark;
+  exports.faBorderAll = faBorderAll;
+  exports.faBorderNone = faBorderNone;
+  exports.faBorderStyle = faBorderStyle;
+  exports.faBowlingBall = faBowlingBall;
+  exports.faBox = faBox;
+  exports.faBoxOpen = faBoxOpen;
+  exports.faBoxTissue = faBoxTissue;
+  exports.faBoxes = faBoxes;
+  exports.faBraille = faBraille;
+  exports.faBrain = faBrain;
+  exports.faBreadSlice = faBreadSlice;
+  exports.faBriefcase = faBriefcase;
+  exports.faBriefcaseMedical = faBriefcaseMedical;
+  exports.faBroadcastTower = faBroadcastTower;
+  exports.faBroom = faBroom;
+  exports.faBrush = faBrush;
+  exports.faBug = faBug;
+  exports.faBuilding = faBuilding;
+  exports.faBullhorn = faBullhorn;
+  exports.faBullseye = faBullseye;
+  exports.faBurn = faBurn;
+  exports.faBus = faBus;
+  exports.faBusAlt = faBusAlt;
+  exports.faBusinessTime = faBusinessTime;
+  exports.faCalculator = faCalculator;
+  exports.faCalendar = faCalendar;
+  exports.faCalendarAlt = faCalendarAlt;
+  exports.faCalendarCheck = faCalendarCheck;
+  exports.faCalendarDay = faCalendarDay;
+  exports.faCalendarMinus = faCalendarMinus;
+  exports.faCalendarPlus = faCalendarPlus;
+  exports.faCalendarTimes = faCalendarTimes;
+  exports.faCalendarWeek = faCalendarWeek;
+  exports.faCamera = faCamera;
+  exports.faCameraRetro = faCameraRetro;
+  exports.faCampground = faCampground;
+  exports.faCandyCane = faCandyCane;
+  exports.faCannabis = faCannabis;
+  exports.faCapsules = faCapsules;
+  exports.faCar = faCar;
+  exports.faCarAlt = faCarAlt;
+  exports.faCarBattery = faCarBattery;
+  exports.faCarCrash = faCarCrash;
+  exports.faCarSide = faCarSide;
+  exports.faCaravan = faCaravan;
+  exports.faCaretDown = faCaretDown;
+  exports.faCaretLeft = faCaretLeft;
+  exports.faCaretRight = faCaretRight;
+  exports.faCaretSquareDown = faCaretSquareDown;
+  exports.faCaretSquareLeft = faCaretSquareLeft;
+  exports.faCaretSquareRight = faCaretSquareRight;
+  exports.faCaretSquareUp = faCaretSquareUp;
+  exports.faCaretUp = faCaretUp;
+  exports.faCarrot = faCarrot;
+  exports.faCartArrowDown = faCartArrowDown;
+  exports.faCartPlus = faCartPlus;
+  exports.faCashRegister = faCashRegister;
+  exports.faCat = faCat;
+  exports.faCertificate = faCertificate;
+  exports.faChair = faChair;
+  exports.faChalkboard = faChalkboard;
+  exports.faChalkboardTeacher = faChalkboardTeacher;
+  exports.faChargingStation = faChargingStation;
+  exports.faChartArea = faChartArea;
+  exports.faChartBar = faChartBar;
+  exports.faChartLine = faChartLine;
+  exports.faChartPie = faChartPie;
+  exports.faCheck = faCheck;
+  exports.faCheckCircle = faCheckCircle;
+  exports.faCheckDouble = faCheckDouble;
+  exports.faCheckSquare = faCheckSquare;
+  exports.faCheese = faCheese;
+  exports.faChess = faChess;
+  exports.faChessBishop = faChessBishop;
+  exports.faChessBoard = faChessBoard;
+  exports.faChessKing = faChessKing;
+  exports.faChessKnight = faChessKnight;
+  exports.faChessPawn = faChessPawn;
+  exports.faChessQueen = faChessQueen;
+  exports.faChessRook = faChessRook;
+  exports.faChevronCircleDown = faChevronCircleDown;
+  exports.faChevronCircleLeft = faChevronCircleLeft;
+  exports.faChevronCircleRight = faChevronCircleRight;
+  exports.faChevronCircleUp = faChevronCircleUp;
+  exports.faChevronDown = faChevronDown;
+  exports.faChevronLeft = faChevronLeft;
+  exports.faChevronRight = faChevronRight;
+  exports.faChevronUp = faChevronUp;
+  exports.faChild = faChild;
+  exports.faChurch = faChurch;
+  exports.faCircle = faCircle;
+  exports.faCircleNotch = faCircleNotch;
+  exports.faCity = faCity;
+  exports.faClinicMedical = faClinicMedical;
+  exports.faClipboard = faClipboard;
+  exports.faClipboardCheck = faClipboardCheck;
+  exports.faClipboardList = faClipboardList;
+  exports.faClock = faClock;
+  exports.faClone = faClone;
+  exports.faClosedCaptioning = faClosedCaptioning;
+  exports.faCloud = faCloud;
+  exports.faCloudDownloadAlt = faCloudDownloadAlt;
+  exports.faCloudMeatball = faCloudMeatball;
+  exports.faCloudMoon = faCloudMoon;
+  exports.faCloudMoonRain = faCloudMoonRain;
+  exports.faCloudRain = faCloudRain;
+  exports.faCloudShowersHeavy = faCloudShowersHeavy;
+  exports.faCloudSun = faCloudSun;
+  exports.faCloudSunRain = faCloudSunRain;
+  exports.faCloudUploadAlt = faCloudUploadAlt;
+  exports.faCocktail = faCocktail;
+  exports.faCode = faCode;
+  exports.faCodeBranch = faCodeBranch;
+  exports.faCoffee = faCoffee;
+  exports.faCog = faCog;
+  exports.faCogs = faCogs;
+  exports.faCoins = faCoins;
+  exports.faColumns = faColumns;
+  exports.faComment = faComment;
+  exports.faCommentAlt = faCommentAlt;
+  exports.faCommentDollar = faCommentDollar;
+  exports.faCommentDots = faCommentDots;
+  exports.faCommentMedical = faCommentMedical;
+  exports.faCommentSlash = faCommentSlash;
+  exports.faComments = faComments;
+  exports.faCommentsDollar = faCommentsDollar;
+  exports.faCompactDisc = faCompactDisc;
+  exports.faCompass = faCompass;
+  exports.faCompress = faCompress;
+  exports.faCompressAlt = faCompressAlt;
+  exports.faCompressArrowsAlt = faCompressArrowsAlt;
+  exports.faConciergeBell = faConciergeBell;
+  exports.faCookie = faCookie;
+  exports.faCookieBite = faCookieBite;
+  exports.faCopy = faCopy;
+  exports.faCopyright = faCopyright;
+  exports.faCouch = faCouch;
+  exports.faCreditCard = faCreditCard;
+  exports.faCrop = faCrop;
+  exports.faCropAlt = faCropAlt;
+  exports.faCross = faCross;
+  exports.faCrosshairs = faCrosshairs;
+  exports.faCrow = faCrow;
+  exports.faCrown = faCrown;
+  exports.faCrutch = faCrutch;
+  exports.faCube = faCube;
+  exports.faCubes = faCubes;
+  exports.faCut = faCut;
+  exports.faDatabase = faDatabase;
+  exports.faDeaf = faDeaf;
+  exports.faDemocrat = faDemocrat;
+  exports.faDesktop = faDesktop;
+  exports.faDharmachakra = faDharmachakra;
+  exports.faDiagnoses = faDiagnoses;
+  exports.faDice = faDice;
+  exports.faDiceD20 = faDiceD20;
+  exports.faDiceD6 = faDiceD6;
+  exports.faDiceFive = faDiceFive;
+  exports.faDiceFour = faDiceFour;
+  exports.faDiceOne = faDiceOne;
+  exports.faDiceSix = faDiceSix;
+  exports.faDiceThree = faDiceThree;
+  exports.faDiceTwo = faDiceTwo;
+  exports.faDigitalTachograph = faDigitalTachograph;
+  exports.faDirections = faDirections;
+  exports.faDisease = faDisease;
+  exports.faDivide = faDivide;
+  exports.faDizzy = faDizzy;
+  exports.faDna = faDna;
+  exports.faDog = faDog;
+  exports.faDollarSign = faDollarSign;
+  exports.faDolly = faDolly;
+  exports.faDollyFlatbed = faDollyFlatbed;
+  exports.faDonate = faDonate;
+  exports.faDoorClosed = faDoorClosed;
+  exports.faDoorOpen = faDoorOpen;
+  exports.faDotCircle = faDotCircle;
+  exports.faDove = faDove;
+  exports.faDownload = faDownload;
+  exports.faDraftingCompass = faDraftingCompass;
+  exports.faDragon = faDragon;
+  exports.faDrawPolygon = faDrawPolygon;
+  exports.faDrum = faDrum;
+  exports.faDrumSteelpan = faDrumSteelpan;
+  exports.faDrumstickBite = faDrumstickBite;
+  exports.faDumbbell = faDumbbell;
+  exports.faDumpster = faDumpster;
+  exports.faDumpsterFire = faDumpsterFire;
+  exports.faDungeon = faDungeon;
+  exports.faEdit = faEdit;
+  exports.faEgg = faEgg;
+  exports.faEject = faEject;
+  exports.faEllipsisH = faEllipsisH;
+  exports.faEllipsisV = faEllipsisV;
+  exports.faEnvelope = faEnvelope;
+  exports.faEnvelopeOpen = faEnvelopeOpen;
+  exports.faEnvelopeOpenText = faEnvelopeOpenText;
+  exports.faEnvelopeSquare = faEnvelopeSquare;
+  exports.faEquals = faEquals;
+  exports.faEraser = faEraser;
+  exports.faEthernet = faEthernet;
+  exports.faEuroSign = faEuroSign;
+  exports.faExchangeAlt = faExchangeAlt;
+  exports.faExclamation = faExclamation;
+  exports.faExclamationCircle = faExclamationCircle;
+  exports.faExclamationTriangle = faExclamationTriangle;
+  exports.faExpand = faExpand;
+  exports.faExpandAlt = faExpandAlt;
+  exports.faExpandArrowsAlt = faExpandArrowsAlt;
+  exports.faExternalLinkAlt = faExternalLinkAlt;
+  exports.faExternalLinkSquareAlt = faExternalLinkSquareAlt;
+  exports.faEye = faEye;
+  exports.faEyeDropper = faEyeDropper;
+  exports.faEyeSlash = faEyeSlash;
+  exports.faFan = faFan;
+  exports.faFastBackward = faFastBackward;
+  exports.faFastForward = faFastForward;
+  exports.faFaucet = faFaucet;
+  exports.faFax = faFax;
+  exports.faFeather = faFeather;
+  exports.faFeatherAlt = faFeatherAlt;
+  exports.faFemale = faFemale;
+  exports.faFighterJet = faFighterJet;
+  exports.faFile = faFile;
+  exports.faFileAlt = faFileAlt;
+  exports.faFileArchive = faFileArchive;
+  exports.faFileAudio = faFileAudio;
+  exports.faFileCode = faFileCode;
+  exports.faFileContract = faFileContract;
+  exports.faFileCsv = faFileCsv;
+  exports.faFileDownload = faFileDownload;
+  exports.faFileExcel = faFileExcel;
+  exports.faFileExport = faFileExport;
+  exports.faFileImage = faFileImage;
+  exports.faFileImport = faFileImport;
+  exports.faFileInvoice = faFileInvoice;
+  exports.faFileInvoiceDollar = faFileInvoiceDollar;
+  exports.faFileMedical = faFileMedical;
+  exports.faFileMedicalAlt = faFileMedicalAlt;
+  exports.faFilePdf = faFilePdf;
+  exports.faFilePowerpoint = faFilePowerpoint;
+  exports.faFilePrescription = faFilePrescription;
+  exports.faFileSignature = faFileSignature;
+  exports.faFileUpload = faFileUpload;
+  exports.faFileVideo = faFileVideo;
+  exports.faFileWord = faFileWord;
+  exports.faFill = faFill;
+  exports.faFillDrip = faFillDrip;
+  exports.faFilm = faFilm;
+  exports.faFilter = faFilter;
+  exports.faFingerprint = faFingerprint;
+  exports.faFire = faFire;
+  exports.faFireAlt = faFireAlt;
+  exports.faFireExtinguisher = faFireExtinguisher;
+  exports.faFirstAid = faFirstAid;
+  exports.faFish = faFish;
+  exports.faFistRaised = faFistRaised;
+  exports.faFlag = faFlag;
+  exports.faFlagCheckered = faFlagCheckered;
+  exports.faFlagUsa = faFlagUsa;
+  exports.faFlask = faFlask;
+  exports.faFlushed = faFlushed;
+  exports.faFolder = faFolder;
+  exports.faFolderMinus = faFolderMinus;
+  exports.faFolderOpen = faFolderOpen;
+  exports.faFolderPlus = faFolderPlus;
+  exports.faFont = faFont;
+  exports.faFontAwesomeLogoFull = faFontAwesomeLogoFull;
+  exports.faFootballBall = faFootballBall;
+  exports.faForward = faForward;
+  exports.faFrog = faFrog;
+  exports.faFrown = faFrown;
+  exports.faFrownOpen = faFrownOpen;
+  exports.faFunnelDollar = faFunnelDollar;
+  exports.faFutbol = faFutbol;
+  exports.faGamepad = faGamepad;
+  exports.faGasPump = faGasPump;
+  exports.faGavel = faGavel;
+  exports.faGem = faGem;
+  exports.faGenderless = faGenderless;
+  exports.faGhost = faGhost;
+  exports.faGift = faGift;
+  exports.faGifts = faGifts;
+  exports.faGlassCheers = faGlassCheers;
+  exports.faGlassMartini = faGlassMartini;
+  exports.faGlassMartiniAlt = faGlassMartiniAlt;
+  exports.faGlassWhiskey = faGlassWhiskey;
+  exports.faGlasses = faGlasses;
+  exports.faGlobe = faGlobe;
+  exports.faGlobeAfrica = faGlobeAfrica;
+  exports.faGlobeAmericas = faGlobeAmericas;
+  exports.faGlobeAsia = faGlobeAsia;
+  exports.faGlobeEurope = faGlobeEurope;
+  exports.faGolfBall = faGolfBall;
+  exports.faGopuram = faGopuram;
+  exports.faGraduationCap = faGraduationCap;
+  exports.faGreaterThan = faGreaterThan;
+  exports.faGreaterThanEqual = faGreaterThanEqual;
+  exports.faGrimace = faGrimace;
+  exports.faGrin = faGrin;
+  exports.faGrinAlt = faGrinAlt;
+  exports.faGrinBeam = faGrinBeam;
+  exports.faGrinBeamSweat = faGrinBeamSweat;
+  exports.faGrinHearts = faGrinHearts;
+  exports.faGrinSquint = faGrinSquint;
+  exports.faGrinSquintTears = faGrinSquintTears;
+  exports.faGrinStars = faGrinStars;
+  exports.faGrinTears = faGrinTears;
+  exports.faGrinTongue = faGrinTongue;
+  exports.faGrinTongueSquint = faGrinTongueSquint;
+  exports.faGrinTongueWink = faGrinTongueWink;
+  exports.faGrinWink = faGrinWink;
+  exports.faGripHorizontal = faGripHorizontal;
+  exports.faGripLines = faGripLines;
+  exports.faGripLinesVertical = faGripLinesVertical;
+  exports.faGripVertical = faGripVertical;
+  exports.faGuitar = faGuitar;
+  exports.faHSquare = faHSquare;
+  exports.faHamburger = faHamburger;
+  exports.faHammer = faHammer;
+  exports.faHamsa = faHamsa;
+  exports.faHandHolding = faHandHolding;
+  exports.faHandHoldingHeart = faHandHoldingHeart;
+  exports.faHandHoldingMedical = faHandHoldingMedical;
+  exports.faHandHoldingUsd = faHandHoldingUsd;
+  exports.faHandHoldingWater = faHandHoldingWater;
+  exports.faHandLizard = faHandLizard;
+  exports.faHandMiddleFinger = faHandMiddleFinger;
+  exports.faHandPaper = faHandPaper;
+  exports.faHandPeace = faHandPeace;
+  exports.faHandPointDown = faHandPointDown;
+  exports.faHandPointLeft = faHandPointLeft;
+  exports.faHandPointRight = faHandPointRight;
+  exports.faHandPointUp = faHandPointUp;
+  exports.faHandPointer = faHandPointer;
+  exports.faHandRock = faHandRock;
+  exports.faHandScissors = faHandScissors;
+  exports.faHandSparkles = faHandSparkles;
+  exports.faHandSpock = faHandSpock;
+  exports.faHands = faHands;
+  exports.faHandsHelping = faHandsHelping;
+  exports.faHandsWash = faHandsWash;
+  exports.faHandshake = faHandshake;
+  exports.faHandshakeAltSlash = faHandshakeAltSlash;
+  exports.faHandshakeSlash = faHandshakeSlash;
+  exports.faHanukiah = faHanukiah;
+  exports.faHardHat = faHardHat;
+  exports.faHashtag = faHashtag;
+  exports.faHatCowboy = faHatCowboy;
+  exports.faHatCowboySide = faHatCowboySide;
+  exports.faHatWizard = faHatWizard;
+  exports.faHdd = faHdd;
+  exports.faHeadSideCough = faHeadSideCough;
+  exports.faHeadSideCoughSlash = faHeadSideCoughSlash;
+  exports.faHeadSideMask = faHeadSideMask;
+  exports.faHeadSideVirus = faHeadSideVirus;
+  exports.faHeading = faHeading;
+  exports.faHeadphones = faHeadphones;
+  exports.faHeadphonesAlt = faHeadphonesAlt;
+  exports.faHeadset = faHeadset;
+  exports.faHeart = faHeart;
+  exports.faHeartBroken = faHeartBroken;
+  exports.faHeartbeat = faHeartbeat;
+  exports.faHelicopter = faHelicopter;
+  exports.faHighlighter = faHighlighter;
+  exports.faHiking = faHiking;
+  exports.faHippo = faHippo;
+  exports.faHistory = faHistory;
+  exports.faHockeyPuck = faHockeyPuck;
+  exports.faHollyBerry = faHollyBerry;
+  exports.faHome = faHome;
+  exports.faHorse = faHorse;
+  exports.faHorseHead = faHorseHead;
+  exports.faHospital = faHospital;
+  exports.faHospitalAlt = faHospitalAlt;
+  exports.faHospitalSymbol = faHospitalSymbol;
+  exports.faHospitalUser = faHospitalUser;
+  exports.faHotTub = faHotTub;
+  exports.faHotdog = faHotdog;
+  exports.faHotel = faHotel;
+  exports.faHourglass = faHourglass;
+  exports.faHourglassEnd = faHourglassEnd;
+  exports.faHourglassHalf = faHourglassHalf;
+  exports.faHourglassStart = faHourglassStart;
+  exports.faHouseDamage = faHouseDamage;
+  exports.faHouseUser = faHouseUser;
+  exports.faHryvnia = faHryvnia;
+  exports.faICursor = faICursor;
+  exports.faIceCream = faIceCream;
+  exports.faIcicles = faIcicles;
+  exports.faIcons = faIcons;
+  exports.faIdBadge = faIdBadge;
+  exports.faIdCard = faIdCard;
+  exports.faIdCardAlt = faIdCardAlt;
+  exports.faIgloo = faIgloo;
+  exports.faImage = faImage;
+  exports.faImages = faImages;
+  exports.faInbox = faInbox;
+  exports.faIndent = faIndent;
+  exports.faIndustry = faIndustry;
+  exports.faInfinity = faInfinity;
+  exports.faInfo = faInfo;
+  exports.faInfoCircle = faInfoCircle;
+  exports.faItalic = faItalic;
+  exports.faJedi = faJedi;
+  exports.faJoint = faJoint;
+  exports.faJournalWhills = faJournalWhills;
+  exports.faKaaba = faKaaba;
+  exports.faKey = faKey;
+  exports.faKeyboard = faKeyboard;
+  exports.faKhanda = faKhanda;
+  exports.faKiss = faKiss;
+  exports.faKissBeam = faKissBeam;
+  exports.faKissWinkHeart = faKissWinkHeart;
+  exports.faKiwiBird = faKiwiBird;
+  exports.faLandmark = faLandmark;
+  exports.faLanguage = faLanguage;
+  exports.faLaptop = faLaptop;
+  exports.faLaptopCode = faLaptopCode;
+  exports.faLaptopHouse = faLaptopHouse;
+  exports.faLaptopMedical = faLaptopMedical;
+  exports.faLaugh = faLaugh;
+  exports.faLaughBeam = faLaughBeam;
+  exports.faLaughSquint = faLaughSquint;
+  exports.faLaughWink = faLaughWink;
+  exports.faLayerGroup = faLayerGroup;
+  exports.faLeaf = faLeaf;
+  exports.faLemon = faLemon;
+  exports.faLessThan = faLessThan;
+  exports.faLessThanEqual = faLessThanEqual;
+  exports.faLevelDownAlt = faLevelDownAlt;
+  exports.faLevelUpAlt = faLevelUpAlt;
+  exports.faLifeRing = faLifeRing;
+  exports.faLightbulb = faLightbulb;
+  exports.faLink = faLink;
+  exports.faLiraSign = faLiraSign;
+  exports.faList = faList;
+  exports.faListAlt = faListAlt;
+  exports.faListOl = faListOl;
+  exports.faListUl = faListUl;
+  exports.faLocationArrow = faLocationArrow;
+  exports.faLock = faLock;
+  exports.faLockOpen = faLockOpen;
+  exports.faLongArrowAltDown = faLongArrowAltDown;
+  exports.faLongArrowAltLeft = faLongArrowAltLeft;
+  exports.faLongArrowAltRight = faLongArrowAltRight;
+  exports.faLongArrowAltUp = faLongArrowAltUp;
+  exports.faLowVision = faLowVision;
+  exports.faLuggageCart = faLuggageCart;
+  exports.faLungs = faLungs;
+  exports.faLungsVirus = faLungsVirus;
+  exports.faMagic = faMagic;
+  exports.faMagnet = faMagnet;
+  exports.faMailBulk = faMailBulk;
+  exports.faMale = faMale;
+  exports.faMap = faMap;
+  exports.faMapMarked = faMapMarked;
+  exports.faMapMarkedAlt = faMapMarkedAlt;
+  exports.faMapMarker = faMapMarker;
+  exports.faMapMarkerAlt = faMapMarkerAlt;
+  exports.faMapPin = faMapPin;
+  exports.faMapSigns = faMapSigns;
+  exports.faMarker = faMarker;
+  exports.faMars = faMars;
+  exports.faMarsDouble = faMarsDouble;
+  exports.faMarsStroke = faMarsStroke;
+  exports.faMarsStrokeH = faMarsStrokeH;
+  exports.faMarsStrokeV = faMarsStrokeV;
+  exports.faMask = faMask;
+  exports.faMedal = faMedal;
+  exports.faMedkit = faMedkit;
+  exports.faMeh = faMeh;
+  exports.faMehBlank = faMehBlank;
+  exports.faMehRollingEyes = faMehRollingEyes;
+  exports.faMemory = faMemory;
+  exports.faMenorah = faMenorah;
+  exports.faMercury = faMercury;
+  exports.faMeteor = faMeteor;
+  exports.faMicrochip = faMicrochip;
+  exports.faMicrophone = faMicrophone;
+  exports.faMicrophoneAlt = faMicrophoneAlt;
+  exports.faMicrophoneAltSlash = faMicrophoneAltSlash;
+  exports.faMicrophoneSlash = faMicrophoneSlash;
+  exports.faMicroscope = faMicroscope;
+  exports.faMinus = faMinus;
+  exports.faMinusCircle = faMinusCircle;
+  exports.faMinusSquare = faMinusSquare;
+  exports.faMitten = faMitten;
+  exports.faMobile = faMobile;
+  exports.faMobileAlt = faMobileAlt;
+  exports.faMoneyBill = faMoneyBill;
+  exports.faMoneyBillAlt = faMoneyBillAlt;
+  exports.faMoneyBillWave = faMoneyBillWave;
+  exports.faMoneyBillWaveAlt = faMoneyBillWaveAlt;
+  exports.faMoneyCheck = faMoneyCheck;
+  exports.faMoneyCheckAlt = faMoneyCheckAlt;
+  exports.faMonument = faMonument;
+  exports.faMoon = faMoon;
+  exports.faMortarPestle = faMortarPestle;
+  exports.faMosque = faMosque;
+  exports.faMotorcycle = faMotorcycle;
+  exports.faMountain = faMountain;
+  exports.faMouse = faMouse;
+  exports.faMousePointer = faMousePointer;
+  exports.faMugHot = faMugHot;
+  exports.faMusic = faMusic;
+  exports.faNetworkWired = faNetworkWired;
+  exports.faNeuter = faNeuter;
+  exports.faNewspaper = faNewspaper;
+  exports.faNotEqual = faNotEqual;
+  exports.faNotesMedical = faNotesMedical;
+  exports.faObjectGroup = faObjectGroup;
+  exports.faObjectUngroup = faObjectUngroup;
+  exports.faOilCan = faOilCan;
+  exports.faOm = faOm;
+  exports.faOtter = faOtter;
+  exports.faOutdent = faOutdent;
+  exports.faPager = faPager;
+  exports.faPaintBrush = faPaintBrush;
+  exports.faPaintRoller = faPaintRoller;
+  exports.faPalette = faPalette;
+  exports.faPallet = faPallet;
+  exports.faPaperPlane = faPaperPlane;
+  exports.faPaperclip = faPaperclip;
+  exports.faParachuteBox = faParachuteBox;
+  exports.faParagraph = faParagraph;
+  exports.faParking = faParking;
+  exports.faPassport = faPassport;
+  exports.faPastafarianism = faPastafarianism;
+  exports.faPaste = faPaste;
+  exports.faPause = faPause;
+  exports.faPauseCircle = faPauseCircle;
+  exports.faPaw = faPaw;
+  exports.faPeace = faPeace;
+  exports.faPen = faPen;
+  exports.faPenAlt = faPenAlt;
+  exports.faPenFancy = faPenFancy;
+  exports.faPenNib = faPenNib;
+  exports.faPenSquare = faPenSquare;
+  exports.faPencilAlt = faPencilAlt;
+  exports.faPencilRuler = faPencilRuler;
+  exports.faPeopleArrows = faPeopleArrows;
+  exports.faPeopleCarry = faPeopleCarry;
+  exports.faPepperHot = faPepperHot;
+  exports.faPercent = faPercent;
+  exports.faPercentage = faPercentage;
+  exports.faPersonBooth = faPersonBooth;
+  exports.faPhone = faPhone;
+  exports.faPhoneAlt = faPhoneAlt;
+  exports.faPhoneSlash = faPhoneSlash;
+  exports.faPhoneSquare = faPhoneSquare;
+  exports.faPhoneSquareAlt = faPhoneSquareAlt;
+  exports.faPhoneVolume = faPhoneVolume;
+  exports.faPhotoVideo = faPhotoVideo;
+  exports.faPiggyBank = faPiggyBank;
+  exports.faPills = faPills;
+  exports.faPizzaSlice = faPizzaSlice;
+  exports.faPlaceOfWorship = faPlaceOfWorship;
+  exports.faPlane = faPlane;
+  exports.faPlaneArrival = faPlaneArrival;
+  exports.faPlaneDeparture = faPlaneDeparture;
+  exports.faPlaneSlash = faPlaneSlash;
+  exports.faPlay = faPlay;
+  exports.faPlayCircle = faPlayCircle;
+  exports.faPlug = faPlug;
+  exports.faPlus = faPlus;
+  exports.faPlusCircle = faPlusCircle;
+  exports.faPlusSquare = faPlusSquare;
+  exports.faPodcast = faPodcast;
+  exports.faPoll = faPoll;
+  exports.faPollH = faPollH;
+  exports.faPoo = faPoo;
+  exports.faPooStorm = faPooStorm;
+  exports.faPoop = faPoop;
+  exports.faPortrait = faPortrait;
+  exports.faPoundSign = faPoundSign;
+  exports.faPowerOff = faPowerOff;
+  exports.faPray = faPray;
+  exports.faPrayingHands = faPrayingHands;
+  exports.faPrescription = faPrescription;
+  exports.faPrescriptionBottle = faPrescriptionBottle;
+  exports.faPrescriptionBottleAlt = faPrescriptionBottleAlt;
+  exports.faPrint = faPrint;
+  exports.faProcedures = faProcedures;
+  exports.faProjectDiagram = faProjectDiagram;
+  exports.faPumpMedical = faPumpMedical;
+  exports.faPumpSoap = faPumpSoap;
+  exports.faPuzzlePiece = faPuzzlePiece;
+  exports.faQrcode = faQrcode;
+  exports.faQuestion = faQuestion;
+  exports.faQuestionCircle = faQuestionCircle;
+  exports.faQuidditch = faQuidditch;
+  exports.faQuoteLeft = faQuoteLeft;
+  exports.faQuoteRight = faQuoteRight;
+  exports.faQuran = faQuran;
+  exports.faRadiation = faRadiation;
+  exports.faRadiationAlt = faRadiationAlt;
+  exports.faRainbow = faRainbow;
+  exports.faRandom = faRandom;
+  exports.faReceipt = faReceipt;
+  exports.faRecordVinyl = faRecordVinyl;
+  exports.faRecycle = faRecycle;
+  exports.faRedo = faRedo;
+  exports.faRedoAlt = faRedoAlt;
+  exports.faRegistered = faRegistered;
+  exports.faRemoveFormat = faRemoveFormat;
+  exports.faReply = faReply;
+  exports.faReplyAll = faReplyAll;
+  exports.faRepublican = faRepublican;
+  exports.faRestroom = faRestroom;
+  exports.faRetweet = faRetweet;
+  exports.faRibbon = faRibbon;
+  exports.faRing = faRing;
+  exports.faRoad = faRoad;
+  exports.faRobot = faRobot;
+  exports.faRocket = faRocket;
+  exports.faRoute = faRoute;
+  exports.faRss = faRss;
+  exports.faRssSquare = faRssSquare;
+  exports.faRubleSign = faRubleSign;
+  exports.faRuler = faRuler;
+  exports.faRulerCombined = faRulerCombined;
+  exports.faRulerHorizontal = faRulerHorizontal;
+  exports.faRulerVertical = faRulerVertical;
+  exports.faRunning = faRunning;
+  exports.faRupeeSign = faRupeeSign;
+  exports.faSadCry = faSadCry;
+  exports.faSadTear = faSadTear;
+  exports.faSatellite = faSatellite;
+  exports.faSatelliteDish = faSatelliteDish;
+  exports.faSave = faSave;
+  exports.faSchool = faSchool;
+  exports.faScrewdriver = faScrewdriver;
+  exports.faScroll = faScroll;
+  exports.faSdCard = faSdCard;
+  exports.faSearch = faSearch;
+  exports.faSearchDollar = faSearchDollar;
+  exports.faSearchLocation = faSearchLocation;
+  exports.faSearchMinus = faSearchMinus;
+  exports.faSearchPlus = faSearchPlus;
+  exports.faSeedling = faSeedling;
+  exports.faServer = faServer;
+  exports.faShapes = faShapes;
+  exports.faShare = faShare;
+  exports.faShareAlt = faShareAlt;
+  exports.faShareAltSquare = faShareAltSquare;
+  exports.faShareSquare = faShareSquare;
+  exports.faShekelSign = faShekelSign;
+  exports.faShieldAlt = faShieldAlt;
+  exports.faShieldVirus = faShieldVirus;
+  exports.faShip = faShip;
+  exports.faShippingFast = faShippingFast;
+  exports.faShoePrints = faShoePrints;
+  exports.faShoppingBag = faShoppingBag;
+  exports.faShoppingBasket = faShoppingBasket;
+  exports.faShoppingCart = faShoppingCart;
+  exports.faShower = faShower;
+  exports.faShuttleVan = faShuttleVan;
+  exports.faSign = faSign;
+  exports.faSignInAlt = faSignInAlt;
+  exports.faSignLanguage = faSignLanguage;
+  exports.faSignOutAlt = faSignOutAlt;
+  exports.faSignal = faSignal;
+  exports.faSignature = faSignature;
+  exports.faSimCard = faSimCard;
+  exports.faSink = faSink;
+  exports.faSitemap = faSitemap;
+  exports.faSkating = faSkating;
+  exports.faSkiing = faSkiing;
+  exports.faSkiingNordic = faSkiingNordic;
+  exports.faSkull = faSkull;
+  exports.faSkullCrossbones = faSkullCrossbones;
+  exports.faSlash = faSlash;
+  exports.faSleigh = faSleigh;
+  exports.faSlidersH = faSlidersH;
+  exports.faSmile = faSmile;
+  exports.faSmileBeam = faSmileBeam;
+  exports.faSmileWink = faSmileWink;
+  exports.faSmog = faSmog;
+  exports.faSmoking = faSmoking;
+  exports.faSmokingBan = faSmokingBan;
+  exports.faSms = faSms;
+  exports.faSnowboarding = faSnowboarding;
+  exports.faSnowflake = faSnowflake;
+  exports.faSnowman = faSnowman;
+  exports.faSnowplow = faSnowplow;
+  exports.faSoap = faSoap;
+  exports.faSocks = faSocks;
+  exports.faSolarPanel = faSolarPanel;
+  exports.faSort = faSort;
+  exports.faSortAlphaDown = faSortAlphaDown;
+  exports.faSortAlphaDownAlt = faSortAlphaDownAlt;
+  exports.faSortAlphaUp = faSortAlphaUp;
+  exports.faSortAlphaUpAlt = faSortAlphaUpAlt;
+  exports.faSortAmountDown = faSortAmountDown;
+  exports.faSortAmountDownAlt = faSortAmountDownAlt;
+  exports.faSortAmountUp = faSortAmountUp;
+  exports.faSortAmountUpAlt = faSortAmountUpAlt;
+  exports.faSortDown = faSortDown;
+  exports.faSortNumericDown = faSortNumericDown;
+  exports.faSortNumericDownAlt = faSortNumericDownAlt;
+  exports.faSortNumericUp = faSortNumericUp;
+  exports.faSortNumericUpAlt = faSortNumericUpAlt;
+  exports.faSortUp = faSortUp;
+  exports.faSpa = faSpa;
+  exports.faSpaceShuttle = faSpaceShuttle;
+  exports.faSpellCheck = faSpellCheck;
+  exports.faSpider = faSpider;
+  exports.faSpinner = faSpinner;
+  exports.faSplotch = faSplotch;
+  exports.faSprayCan = faSprayCan;
+  exports.faSquare = faSquare;
+  exports.faSquareFull = faSquareFull;
+  exports.faSquareRootAlt = faSquareRootAlt;
+  exports.faStamp = faStamp;
+  exports.faStar = faStar;
+  exports.faStarAndCrescent = faStarAndCrescent;
+  exports.faStarHalf = faStarHalf;
+  exports.faStarHalfAlt = faStarHalfAlt;
+  exports.faStarOfDavid = faStarOfDavid;
+  exports.faStarOfLife = faStarOfLife;
+  exports.faStepBackward = faStepBackward;
+  exports.faStepForward = faStepForward;
+  exports.faStethoscope = faStethoscope;
+  exports.faStickyNote = faStickyNote;
+  exports.faStop = faStop;
+  exports.faStopCircle = faStopCircle;
+  exports.faStopwatch = faStopwatch;
+  exports.faStopwatch20 = faStopwatch20;
+  exports.faStore = faStore;
+  exports.faStoreAlt = faStoreAlt;
+  exports.faStoreAltSlash = faStoreAltSlash;
+  exports.faStoreSlash = faStoreSlash;
+  exports.faStream = faStream;
+  exports.faStreetView = faStreetView;
+  exports.faStrikethrough = faStrikethrough;
+  exports.faStroopwafel = faStroopwafel;
+  exports.faSubscript = faSubscript;
+  exports.faSubway = faSubway;
+  exports.faSuitcase = faSuitcase;
+  exports.faSuitcaseRolling = faSuitcaseRolling;
+  exports.faSun = faSun;
+  exports.faSuperscript = faSuperscript;
+  exports.faSurprise = faSurprise;
+  exports.faSwatchbook = faSwatchbook;
+  exports.faSwimmer = faSwimmer;
+  exports.faSwimmingPool = faSwimmingPool;
+  exports.faSynagogue = faSynagogue;
+  exports.faSync = faSync;
+  exports.faSyncAlt = faSyncAlt;
+  exports.faSyringe = faSyringe;
+  exports.faTable = faTable;
+  exports.faTableTennis = faTableTennis;
+  exports.faTablet = faTablet;
+  exports.faTabletAlt = faTabletAlt;
+  exports.faTablets = faTablets;
+  exports.faTachometerAlt = faTachometerAlt;
+  exports.faTag = faTag;
+  exports.faTags = faTags;
+  exports.faTape = faTape;
+  exports.faTasks = faTasks;
+  exports.faTaxi = faTaxi;
+  exports.faTeeth = faTeeth;
+  exports.faTeethOpen = faTeethOpen;
+  exports.faTemperatureHigh = faTemperatureHigh;
+  exports.faTemperatureLow = faTemperatureLow;
+  exports.faTenge = faTenge;
+  exports.faTerminal = faTerminal;
+  exports.faTextHeight = faTextHeight;
+  exports.faTextWidth = faTextWidth;
+  exports.faTh = faTh;
+  exports.faThLarge = faThLarge;
+  exports.faThList = faThList;
+  exports.faTheaterMasks = faTheaterMasks;
+  exports.faThermometer = faThermometer;
+  exports.faThermometerEmpty = faThermometerEmpty;
+  exports.faThermometerFull = faThermometerFull;
+  exports.faThermometerHalf = faThermometerHalf;
+  exports.faThermometerQuarter = faThermometerQuarter;
+  exports.faThermometerThreeQuarters = faThermometerThreeQuarters;
+  exports.faThumbsDown = faThumbsDown;
+  exports.faThumbsUp = faThumbsUp;
+  exports.faThumbtack = faThumbtack;
+  exports.faTicketAlt = faTicketAlt;
+  exports.faTimes = faTimes;
+  exports.faTimesCircle = faTimesCircle;
+  exports.faTint = faTint;
+  exports.faTintSlash = faTintSlash;
+  exports.faTired = faTired;
+  exports.faToggleOff = faToggleOff;
+  exports.faToggleOn = faToggleOn;
+  exports.faToilet = faToilet;
+  exports.faToiletPaper = faToiletPaper;
+  exports.faToiletPaperSlash = faToiletPaperSlash;
+  exports.faToolbox = faToolbox;
+  exports.faTools = faTools;
+  exports.faTooth = faTooth;
+  exports.faTorah = faTorah;
+  exports.faToriiGate = faToriiGate;
+  exports.faTractor = faTractor;
+  exports.faTrademark = faTrademark;
+  exports.faTrafficLight = faTrafficLight;
+  exports.faTrailer = faTrailer;
+  exports.faTrain = faTrain;
+  exports.faTram = faTram;
+  exports.faTransgender = faTransgender;
+  exports.faTransgenderAlt = faTransgenderAlt;
+  exports.faTrash = faTrash;
+  exports.faTrashAlt = faTrashAlt;
+  exports.faTrashRestore = faTrashRestore;
+  exports.faTrashRestoreAlt = faTrashRestoreAlt;
+  exports.faTree = faTree;
+  exports.faTrophy = faTrophy;
+  exports.faTruck = faTruck;
+  exports.faTruckLoading = faTruckLoading;
+  exports.faTruckMonster = faTruckMonster;
+  exports.faTruckMoving = faTruckMoving;
+  exports.faTruckPickup = faTruckPickup;
+  exports.faTshirt = faTshirt;
+  exports.faTty = faTty;
+  exports.faTv = faTv;
+  exports.faUmbrella = faUmbrella;
+  exports.faUmbrellaBeach = faUmbrellaBeach;
+  exports.faUnderline = faUnderline;
+  exports.faUndo = faUndo;
+  exports.faUndoAlt = faUndoAlt;
+  exports.faUniversalAccess = faUniversalAccess;
+  exports.faUniversity = faUniversity;
+  exports.faUnlink = faUnlink;
+  exports.faUnlock = faUnlock;
+  exports.faUnlockAlt = faUnlockAlt;
+  exports.faUpload = faUpload;
+  exports.faUser = faUser;
+  exports.faUserAlt = faUserAlt;
+  exports.faUserAltSlash = faUserAltSlash;
+  exports.faUserAstronaut = faUserAstronaut;
+  exports.faUserCheck = faUserCheck;
+  exports.faUserCircle = faUserCircle;
+  exports.faUserClock = faUserClock;
+  exports.faUserCog = faUserCog;
+  exports.faUserEdit = faUserEdit;
+  exports.faUserFriends = faUserFriends;
+  exports.faUserGraduate = faUserGraduate;
+  exports.faUserInjured = faUserInjured;
+  exports.faUserLock = faUserLock;
+  exports.faUserMd = faUserMd;
+  exports.faUserMinus = faUserMinus;
+  exports.faUserNinja = faUserNinja;
+  exports.faUserNurse = faUserNurse;
+  exports.faUserPlus = faUserPlus;
+  exports.faUserSecret = faUserSecret;
+  exports.faUserShield = faUserShield;
+  exports.faUserSlash = faUserSlash;
+  exports.faUserTag = faUserTag;
+  exports.faUserTie = faUserTie;
+  exports.faUserTimes = faUserTimes;
+  exports.faUsers = faUsers;
+  exports.faUsersCog = faUsersCog;
+  exports.faUsersSlash = faUsersSlash;
+  exports.faUtensilSpoon = faUtensilSpoon;
+  exports.faUtensils = faUtensils;
+  exports.faVectorSquare = faVectorSquare;
+  exports.faVenus = faVenus;
+  exports.faVenusDouble = faVenusDouble;
+  exports.faVenusMars = faVenusMars;
+  exports.faVest = faVest;
+  exports.faVestPatches = faVestPatches;
+  exports.faVial = faVial;
+  exports.faVials = faVials;
+  exports.faVideo = faVideo;
+  exports.faVideoSlash = faVideoSlash;
+  exports.faVihara = faVihara;
+  exports.faVirus = faVirus;
+  exports.faVirusSlash = faVirusSlash;
+  exports.faViruses = faViruses;
+  exports.faVoicemail = faVoicemail;
+  exports.faVolleyballBall = faVolleyballBall;
+  exports.faVolumeDown = faVolumeDown;
+  exports.faVolumeMute = faVolumeMute;
+  exports.faVolumeOff = faVolumeOff;
+  exports.faVolumeUp = faVolumeUp;
+  exports.faVoteYea = faVoteYea;
+  exports.faVrCardboard = faVrCardboard;
+  exports.faWalking = faWalking;
+  exports.faWallet = faWallet;
+  exports.faWarehouse = faWarehouse;
+  exports.faWater = faWater;
+  exports.faWaveSquare = faWaveSquare;
+  exports.faWeight = faWeight;
+  exports.faWeightHanging = faWeightHanging;
+  exports.faWheelchair = faWheelchair;
+  exports.faWifi = faWifi;
+  exports.faWind = faWind;
+  exports.faWindowClose = faWindowClose;
+  exports.faWindowMaximize = faWindowMaximize;
+  exports.faWindowMinimize = faWindowMinimize;
+  exports.faWindowRestore = faWindowRestore;
+  exports.faWineBottle = faWineBottle;
+  exports.faWineGlass = faWineGlass;
+  exports.faWineGlassAlt = faWineGlassAlt;
+  exports.faWonSign = faWonSign;
+  exports.faWrench = faWrench;
+  exports.faXRay = faXRay;
+  exports.faYenSign = faYenSign;
+  exports.faYinYang = faYinYang;
+
+  Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
Index: trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/package.json
===================================================================
--- trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/@fortawesome/free-solid-svg-icons/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,89 @@
+{
+  "_from": "@fortawesome/free-solid-svg-icons@^5.15.1",
+  "_id": "@fortawesome/free-solid-svg-icons@5.15.4",
+  "_inBundle": false,
+  "_integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
+  "_location": "/@fortawesome/free-solid-svg-icons",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@fortawesome/free-solid-svg-icons@^5.15.1",
+    "name": "@fortawesome/free-solid-svg-icons",
+    "escapedName": "@fortawesome%2ffree-solid-svg-icons",
+    "scope": "@fortawesome",
+    "rawSpec": "^5.15.1",
+    "saveSpec": null,
+    "fetchSpec": "^5.15.1"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
+  "_shasum": "2a68f3fc3ddda12e52645654142b9e4e8fbb6cc5",
+  "_spec": "@fortawesome/free-solid-svg-icons@^5.15.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dave Gandy",
+    "email": "dave@fontawesome.com",
+    "url": "http://twitter.com/davegandy"
+  },
+  "bugs": {
+    "url": "http://github.com/FortAwesome/Font-Awesome/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Brian Talbot",
+      "url": "http://twitter.com/talbs"
+    },
+    {
+      "name": "Travis Chase",
+      "url": "http://twitter.com/supercodepoet"
+    },
+    {
+      "name": "Rob Madole",
+      "url": "http://twitter.com/robmadole"
+    },
+    {
+      "name": "Geremia Taglialatela",
+      "url": "http://twitter.com/gtagliala"
+    },
+    {
+      "name": "Mike Wilkerson",
+      "url": "http://twitter.com/mw77"
+    }
+  ],
+  "dependencies": {
+    "@fortawesome/fontawesome-common-types": "^0.2.36"
+  },
+  "deprecated": false,
+  "description": "The iconic font, CSS, and SVG framework",
+  "engines": {
+    "node": ">=6"
+  },
+  "homepage": "https://fontawesome.com",
+  "jsnext:main": "index.es.js",
+  "keywords": [
+    "font",
+    "awesome",
+    "fontawesome",
+    "icon",
+    "svg",
+    "bootstrap"
+  ],
+  "license": "(CC-BY-4.0 AND MIT)",
+  "main": "index.js",
+  "module": "index.es.js",
+  "name": "@fortawesome/free-solid-svg-icons",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/FortAwesome/Font-Awesome.git"
+  },
+  "scripts": {
+    "postinstall": "node attribution.js"
+  },
+  "sideEffects": false,
+  "types": "./index.d.ts",
+  "version": "5.15.4"
+}
Index: trip-planner-front/node_modules/@istanbuljs/schema/package.json
===================================================================
--- trip-planner-front/node_modules/@istanbuljs/schema/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@istanbuljs/schema/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,62 @@
 {
-	"name": "@istanbuljs/schema",
-	"version": "0.1.3",
-	"description": "Schemas describing various structures used by nyc and istanbuljs",
-	"main": "index.js",
-	"scripts": {
-		"release": "standard-version --sign",
-		"pretest": "xo",
-		"test": "tap",
-		"snap": "npm test -- --snapshot"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"author": "Corey Farrell",
-	"license": "MIT",
-	"repository": {
-		"type": "git",
-		"url": "git+https://github.com/istanbuljs/schema.git"
-	},
-	"bugs": {
-		"url": "https://github.com/istanbuljs/schema/issues"
-	},
-	"homepage": "https://github.com/istanbuljs/schema#readme",
-	"devDependencies": {
-		"standard-version": "^7.0.0",
-		"tap": "^14.6.7",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "@istanbuljs/schema@0.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@istanbuljs/schema@0.1.3",
+  "_id": "@istanbuljs/schema@0.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+  "_location": "/@istanbuljs/schema",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@istanbuljs/schema@0.1.3",
+    "name": "@istanbuljs/schema",
+    "escapedName": "@istanbuljs%2fschema",
+    "scope": "@istanbuljs",
+    "rawSpec": "0.1.3",
+    "saveSpec": null,
+    "fetchSpec": "0.1.3"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-instrument"
+  ],
+  "_resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+  "_spec": "0.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Corey Farrell"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/schema/issues"
+  },
+  "description": "Schemas describing various structures used by nyc and istanbuljs",
+  "devDependencies": {
+    "standard-version": "^7.0.0",
+    "tap": "^14.6.7",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "homepage": "https://github.com/istanbuljs/schema#readme",
+  "license": "MIT",
+  "main": "index.js",
+  "name": "@istanbuljs/schema",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/istanbuljs/schema.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "release": "standard-version --sign",
+    "snap": "npm test -- --snapshot",
+    "test": "tap"
+  },
+  "version": "0.1.3"
 }
Index: trip-planner-front/node_modules/@jridgewell/resolve-uri/package.json
===================================================================
--- trip-planner-front/node_modules/@jridgewell/resolve-uri/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@jridgewell/resolve-uri/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,41 @@
 {
-  "name": "@jridgewell/resolve-uri",
-  "version": "1.0.0",
-  "description": "Resolve a URI relative to an optional base URI",
-  "keywords": [
-    "resolve",
-    "uri",
-    "url",
-    "path"
+  "_args": [
+    [
+      "@jridgewell/resolve-uri@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "main": "dist/resolve-uri.umd.js",
-  "module": "dist/resolve-uri.mjs",
-  "typings": "dist/types/resolve-uri.d.ts",
-  "files": [
-    "dist"
+  "_development": true,
+  "_from": "@jridgewell/resolve-uri@1.0.0",
+  "_id": "@jridgewell/resolve-uri@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==",
+  "_location": "/@jridgewell/resolve-uri",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@jridgewell/resolve-uri@1.0.0",
+    "name": "@jridgewell/resolve-uri",
+    "escapedName": "@jridgewell%2fresolve-uri",
+    "scope": "@jridgewell",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/@ampproject/remapping"
   ],
-  "author": "Justin Ridgewell <jridgewell@google.com>",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/jridgewell/resolve-uri.git"
+  "_resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Justin Ridgewell",
+    "email": "jridgewell@google.com"
   },
   "bugs": {
     "url": "https://github.com/jridgewell/resolve-uri/issues"
   },
-  "license": "MIT",
-  "engines": {
-    "node": ">=6.0.0"
-  },
-  "scripts": {
-    "lint:ts": "npm run test:lint:ts -- --fix",
-    "lint:prettier": "npm run test:lint:prettier -- --write",
-    "lint": "run-s -n lint:*",
-    "prebuild": "rm -rf dist",
-    "build:ts": "tsc --module commonjs",
-    "build:rollup": "rollup -c rollup.config.ts",
-    "build": "run-s -n build:*",
-    "test": "jest --coverage",
-    "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
-    "test:watch": "jest --coverage --watch",
-    "test:lint:ts": "tslint  --project tsconfig.json -t codeFrame '{src,test}/**/*.ts'",
-    "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
-    "test:lint": "run-s -n test:lint:*",
-    "test:prod": "run-s -n test:lint 'test --no-cache'",
-    "preversion": "run-s test:prod build",
-    "prepublishOnly": "npm run preversion"
-  },
+  "description": "Resolve a URI relative to an optional base URI",
   "devDependencies": {
     "@types/jest": "24.0.15",
@@ -63,4 +56,45 @@
     "tslint-config-standard": "8.0.1",
     "typescript": "3.5.3"
-  }
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/jridgewell/resolve-uri#readme",
+  "keywords": [
+    "resolve",
+    "uri",
+    "url",
+    "path"
+  ],
+  "license": "MIT",
+  "main": "dist/resolve-uri.umd.js",
+  "module": "dist/resolve-uri.mjs",
+  "name": "@jridgewell/resolve-uri",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jridgewell/resolve-uri.git"
+  },
+  "scripts": {
+    "build": "run-s -n build:*",
+    "build:rollup": "rollup -c rollup.config.ts",
+    "build:ts": "tsc --module commonjs",
+    "lint": "run-s -n lint:*",
+    "lint:prettier": "npm run test:lint:prettier -- --write",
+    "lint:ts": "npm run test:lint:ts -- --fix",
+    "prebuild": "rm -rf dist",
+    "prepublishOnly": "npm run preversion",
+    "preversion": "run-s test:prod build",
+    "test": "jest --coverage",
+    "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
+    "test:lint": "run-s -n test:lint:*",
+    "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
+    "test:lint:ts": "tslint  --project tsconfig.json -t codeFrame '{src,test}/**/*.ts'",
+    "test:prod": "run-s -n test:lint 'test --no-cache'",
+    "test:watch": "jest --coverage --watch"
+  },
+  "typings": "dist/types/resolve-uri.d.ts",
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/@jsdevtools/coverage-istanbul-loader/package.json
===================================================================
--- trip-planner-front/node_modules/@jsdevtools/coverage-istanbul-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@jsdevtools/coverage-istanbul-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,39 @@
 {
-  "name": "@jsdevtools/coverage-istanbul-loader",
-  "version": "3.0.5",
-  "description": "A Webpack loader that uses Istanbul to add code coverage instrumentation",
-  "keywords": [
-    "webpack-loader",
-    "webpack",
-    "loader",
-    "istanbul",
-    "coverage",
-    "code coverage",
-    "instrumentation",
-    "instrumenter",
-    "sourcemap",
-    "source-map",
-    "sourcemaps",
-    "source-maps"
+  "_args": [
+    [
+      "@jsdevtools/coverage-istanbul-loader@3.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "@jsdevtools/coverage-istanbul-loader@3.0.5",
+  "_id": "@jsdevtools/coverage-istanbul-loader@3.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==",
+  "_location": "/@jsdevtools/coverage-istanbul-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@jsdevtools/coverage-istanbul-loader@3.0.5",
+    "name": "@jsdevtools/coverage-istanbul-loader",
+    "escapedName": "@jsdevtools%2fcoverage-istanbul-loader",
+    "scope": "@jsdevtools",
+    "rawSpec": "3.0.5",
+    "saveSpec": null,
+    "fetchSpec": "3.0.5"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz",
+  "_spec": "3.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "James Messinger",
     "url": "https://jamesmessinger.com"
   },
-  "license": "MIT",
-  "homepage": "https://jstools.dev/coverage-istanbul-loader",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/JS-DevTools/coverage-istanbul-loader.git"
-  },
-  "main": "lib/index.js",
-  "types": "lib/index.d.ts",
-  "files": [
-    "lib"
-  ],
-  "scripts": {
-    "clean": "shx rm -rf .nyc_output coverage lib",
-    "lint": "eslint src test/specs test/utils",
-    "build": "tsc",
-    "watch": "tsc --watch",
-    "test": "mocha && npm run lint",
-    "coverage": "nyc node_modules/mocha/bin/mocha",
-    "upgrade": "npm-check -u && npm audit fix",
-    "bump": "bump --tag --push --all",
-    "release": "npm run upgrade && npm run clean && npm run build && npm test && npm run bump"
+  "bugs": {
+    "url": "https://github.com/JS-DevTools/coverage-istanbul-loader/issues"
   },
   "dependencies": {
@@ -50,4 +44,5 @@
     "schema-utils": "^2.7.0"
   },
+  "description": "A Webpack loader that uses Istanbul to add code coverage instrumentation",
   "devDependencies": {
     "@jsdevtools/eslint-config": "^1.0.3",
@@ -67,4 +62,42 @@
     "typescript": "^3.9.6",
     "webpack": "^4.43.0"
-  }
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://jstools.dev/coverage-istanbul-loader",
+  "keywords": [
+    "webpack-loader",
+    "webpack",
+    "loader",
+    "istanbul",
+    "coverage",
+    "code coverage",
+    "instrumentation",
+    "instrumenter",
+    "sourcemap",
+    "source-map",
+    "sourcemaps",
+    "source-maps"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "@jsdevtools/coverage-istanbul-loader",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/JS-DevTools/coverage-istanbul-loader.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "bump": "bump --tag --push --all",
+    "clean": "shx rm -rf .nyc_output coverage lib",
+    "coverage": "nyc node_modules/mocha/bin/mocha",
+    "lint": "eslint src test/specs test/utils",
+    "release": "npm run upgrade && npm run clean && npm run build && npm test && npm run bump",
+    "test": "mocha && npm run lint",
+    "upgrade": "npm-check -u && npm audit fix",
+    "watch": "tsc --watch"
+  },
+  "types": "lib/index.d.ts",
+  "version": "3.0.5"
 }
Index: trip-planner-front/node_modules/@ngtools/webpack/package.json
===================================================================
--- trip-planner-front/node_modules/@ngtools/webpack/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@ngtools/webpack/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,47 @@
 {
-  "name": "@ngtools/webpack",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@ngtools/webpack@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@ngtools/webpack@12.2.9",
+  "_id": "@ngtools/webpack@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-IQkzvompjLdWbZ+33crtyVF8huF53C36k1FNFdq3x2j4Kw4ssDd6K9fq3aZpRCK0J8O79HJ5j4QH6ZtWjwajLg==",
+  "_location": "/@ngtools/webpack",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@ngtools/webpack@12.2.9",
+    "name": "@ngtools/webpack",
+    "escapedName": "@ngtools%2fwebpack",
+    "scope": "@ngtools",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
+  "dependencies": {},
   "description": "Webpack plugin that AoT compiles your Angular components and modules.",
-  "main": "./src/index.js",
-  "typings": "src/index.d.ts",
-  "license": "MIT",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
+  "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
     "angular",
@@ -16,14 +54,7 @@
     "aot"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
-  },
-  "author": "Angular Authors",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  },
-  "homepage": "https://github.com/angular/angular-cli",
-  "dependencies": {},
+  "license": "MIT",
+  "main": "./src/index.js",
+  "name": "@ngtools/webpack",
   "peerDependencies": {
     "@angular/compiler-cli": "^12.0.0",
@@ -31,8 +62,9 @@
     "webpack": "^5.30.0"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/angular/angular-cli.git"
+  },
+  "typings": "src/index.d.ts",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@nodelib/fs.scandir/package.json
===================================================================
--- trip-planner-front/node_modules/@nodelib/fs.scandir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@nodelib/fs.scandir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,51 @@
 {
-  "name": "@nodelib/fs.scandir",
-  "version": "2.1.5",
+  "_args": [
+    [
+      "@nodelib/fs.scandir@2.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@nodelib/fs.scandir@2.1.5",
+  "_id": "@nodelib/fs.scandir@2.1.5",
+  "_inBundle": false,
+  "_integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+  "_location": "/@nodelib/fs.scandir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@nodelib/fs.scandir@2.1.5",
+    "name": "@nodelib/fs.scandir",
+    "escapedName": "@nodelib%2ffs.scandir",
+    "scope": "@nodelib",
+    "rawSpec": "2.1.5",
+    "saveSpec": null,
+    "fetchSpec": "2.1.5"
+  },
+  "_requiredBy": [
+    "/@nodelib/fs.walk"
+  ],
+  "_resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+  "_spec": "2.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@nodelib/fs.stat": "2.0.5",
+    "run-parallel": "^1.1.9"
+  },
   "description": "List files and directories inside the specified directory",
-  "license": "MIT",
-  "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir",
+  "devDependencies": {
+    "@nodelib/fs.macchiato": "1.0.4",
+    "@types/run-parallel": "^1.1.0"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
+  "files": [
+    "out/**",
+    "!out/**/*.map",
+    "!out/**/*.spec.*"
+  ],
+  "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562",
   "keywords": [
     "NodeLib",
@@ -14,31 +57,21 @@
     "dirent"
   ],
-  "engines": {
-    "node": ">= 8"
+  "license": "MIT",
+  "main": "out/index.js",
+  "name": "@nodelib/fs.scandir",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir"
   },
-  "files": [
-    "out/**",
-    "!out/**/*.map",
-    "!out/**/*.spec.*"
-  ],
-  "main": "out/index.js",
-  "typings": "out/index.d.ts",
   "scripts": {
+    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "clean": "rimraf {tsconfig.tsbuildinfo,out}",
-    "lint": "eslint \"src/**/*.ts\" --cache",
     "compile": "tsc -b .",
     "compile:watch": "tsc -p . --watch --sourceMap",
+    "lint": "eslint \"src/**/*.ts\" --cache",
     "test": "mocha \"out/**/*.spec.js\" -s 0",
-    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "watch": "npm run clean && npm run compile:watch"
   },
-  "dependencies": {
-    "@nodelib/fs.stat": "2.0.5",
-    "run-parallel": "^1.1.9"
-  },
-  "devDependencies": {
-    "@nodelib/fs.macchiato": "1.0.4",
-    "@types/run-parallel": "^1.1.0"
-  },
-  "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562"
+  "typings": "out/index.d.ts",
+  "version": "2.1.5"
 }
Index: trip-planner-front/node_modules/@nodelib/fs.stat/package.json
===================================================================
--- trip-planner-front/node_modules/@nodelib/fs.stat/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@nodelib/fs.stat/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,38 @@
 {
-  "name": "@nodelib/fs.stat",
-  "version": "2.0.5",
+  "_args": [
+    [
+      "@nodelib/fs.stat@2.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@nodelib/fs.stat@2.0.5",
+  "_id": "@nodelib/fs.stat@2.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+  "_location": "/@nodelib/fs.stat",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@nodelib/fs.stat@2.0.5",
+    "name": "@nodelib/fs.stat",
+    "escapedName": "@nodelib%2ffs.stat",
+    "scope": "@nodelib",
+    "rawSpec": "2.0.5",
+    "saveSpec": null,
+    "fetchSpec": "2.0.5"
+  },
+  "_requiredBy": [
+    "/@nodelib/fs.scandir",
+    "/fast-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+  "_spec": "2.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "description": "Get the status of a file with some features",
-  "license": "MIT",
-  "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat",
-  "keywords": [
-    "NodeLib",
-    "fs",
-    "FileSystem",
-    "file system",
-    "stat"
-  ],
+  "devDependencies": {
+    "@nodelib/fs.macchiato": "1.0.4"
+  },
   "engines": {
     "node": ">= 8"
@@ -20,18 +43,29 @@
     "!out/**/*.spec.*"
   ],
+  "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562",
+  "keywords": [
+    "NodeLib",
+    "fs",
+    "FileSystem",
+    "file system",
+    "stat"
+  ],
+  "license": "MIT",
   "main": "out/index.js",
-  "typings": "out/index.d.ts",
+  "name": "@nodelib/fs.stat",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat"
+  },
   "scripts": {
+    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "clean": "rimraf {tsconfig.tsbuildinfo,out}",
-    "lint": "eslint \"src/**/*.ts\" --cache",
     "compile": "tsc -b .",
     "compile:watch": "tsc -p . --watch --sourceMap",
+    "lint": "eslint \"src/**/*.ts\" --cache",
     "test": "mocha \"out/**/*.spec.js\" -s 0",
-    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "watch": "npm run clean && npm run compile:watch"
   },
-  "devDependencies": {
-    "@nodelib/fs.macchiato": "1.0.4"
-  },
-  "gitHead": "d6a7960d5281d3dd5f8e2efba49bb552d090f562"
+  "typings": "out/index.d.ts",
+  "version": "2.0.5"
 }
Index: trip-planner-front/node_modules/@nodelib/fs.walk/package.json
===================================================================
--- trip-planner-front/node_modules/@nodelib/fs.walk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@nodelib/fs.walk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,51 @@
 {
-  "name": "@nodelib/fs.walk",
-  "version": "1.2.8",
+  "_args": [
+    [
+      "@nodelib/fs.walk@1.2.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@nodelib/fs.walk@1.2.8",
+  "_id": "@nodelib/fs.walk@1.2.8",
+  "_inBundle": false,
+  "_integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+  "_location": "/@nodelib/fs.walk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@nodelib/fs.walk@1.2.8",
+    "name": "@nodelib/fs.walk",
+    "escapedName": "@nodelib%2ffs.walk",
+    "scope": "@nodelib",
+    "rawSpec": "1.2.8",
+    "saveSpec": null,
+    "fetchSpec": "1.2.8"
+  },
+  "_requiredBy": [
+    "/fast-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+  "_spec": "1.2.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "dependencies": {
+    "@nodelib/fs.scandir": "2.1.5",
+    "fastq": "^1.6.0"
+  },
   "description": "A library for efficiently walking a directory recursively",
-  "license": "MIT",
-  "repository": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk",
+  "devDependencies": {
+    "@nodelib/fs.macchiato": "1.0.4"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
+  "files": [
+    "out/**",
+    "!out/**/*.map",
+    "!out/**/*.spec.*",
+    "!out/**/tests/**"
+  ],
+  "gitHead": "1e5bad48565da2b06b8600e744324ea240bf49d8",
   "keywords": [
     "NodeLib",
@@ -14,31 +57,21 @@
     "crawler"
   ],
-  "engines": {
-    "node": ">= 8"
+  "license": "MIT",
+  "main": "out/index.js",
+  "name": "@nodelib/fs.walk",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk"
   },
-  "files": [
-    "out/**",
-    "!out/**/*.map",
-    "!out/**/*.spec.*",
-    "!out/**/tests/**"
-  ],
-  "main": "out/index.js",
-  "typings": "out/index.d.ts",
   "scripts": {
+    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "clean": "rimraf {tsconfig.tsbuildinfo,out}",
-    "lint": "eslint \"src/**/*.ts\" --cache",
     "compile": "tsc -b .",
     "compile:watch": "tsc -p . --watch --sourceMap",
+    "lint": "eslint \"src/**/*.ts\" --cache",
     "test": "mocha \"out/**/*.spec.js\" -s 0",
-    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "watch": "npm run clean && npm run compile:watch"
   },
-  "dependencies": {
-    "@nodelib/fs.scandir": "2.1.5",
-    "fastq": "^1.6.0"
-  },
-  "devDependencies": {
-    "@nodelib/fs.macchiato": "1.0.4"
-  },
-  "gitHead": "1e5bad48565da2b06b8600e744324ea240bf49d8"
+  "typings": "out/index.d.ts",
+  "version": "1.2.8"
 }
Index: trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which
===================================================================
--- trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../which/bin/node-which" "$@"
+  "$basedir/node"  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../which/bin/node-which" "$@"
+  node  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.cmd
===================================================================
--- trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\which\bin\node-which" %*
+"%_prog%"  "%dp0%\..\which\bin\node-which" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.ps1
===================================================================
--- trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/git/node_modules/.bin/node-which.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../which/bin/node-which" $args
-  } else {
-    & "node$exe"  "$basedir/../which/bin/node-which" $args
-  }
+  & "node$exe"  "$basedir/../which/bin/node-which" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/@npmcli/git/node_modules/which/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/git/node_modules/which/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/git/node_modules/which/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,47 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
-  "name": "which",
-  "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
-  "version": "2.0.2",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/node-which.git"
+  "_args": [
+    [
+      "which@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "which@2.0.2",
+  "_id": "which@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+  "_location": "/@npmcli/git/which",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "which@2.0.2",
+    "name": "which",
+    "escapedName": "which",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
   },
-  "main": "which.js",
+  "_requiredBy": [
+    "/@npmcli/git"
+  ],
+  "_resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me"
+  },
   "bin": {
-    "node-which": "./bin/node-which"
+    "node-which": "bin/node-which"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/isaacs/node-which/issues"
+  },
   "dependencies": {
     "isexe": "^2.0.0"
   },
+  "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
   "devDependencies": {
     "mkdirp": "^0.5.0",
@@ -21,13 +49,6 @@
     "tap": "^14.6.9"
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublish": "npm run changelog",
-    "prechangelog": "bash gen-changelog.sh",
-    "changelog": "git add CHANGELOG.md",
-    "postchangelog": "git commit -m 'update changelog - '${npm_package_version}",
-    "postpublish": "git push origin --follow-tags"
+  "engines": {
+    "node": ">= 8"
   },
   "files": [
@@ -35,9 +56,25 @@
     "bin/node-which"
   ],
+  "homepage": "https://github.com/isaacs/node-which#readme",
+  "license": "ISC",
+  "main": "which.js",
+  "name": "which",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-which.git"
+  },
+  "scripts": {
+    "changelog": "git add CHANGELOG.md",
+    "postchangelog": "git commit -m 'update changelog - '${npm_package_version}",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "prechangelog": "bash gen-changelog.sh",
+    "prepublish": "npm run changelog",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
   },
-  "engines": {
-    "node": ">= 8"
-  }
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/@npmcli/git/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/git/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/git/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,42 @@
 {
-  "name": "@npmcli/git",
-  "version": "2.1.0",
-  "main": "lib/index.js",
-  "files": [
-    "lib/*.js"
+  "_args": [
+    [
+      "@npmcli/git@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "description": "a util for spawning git from npm CLI contexts",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/git"
+  "_development": true,
+  "_from": "@npmcli/git@2.1.0",
+  "_id": "@npmcli/git@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==",
+  "_location": "/@npmcli/git",
+  "_phantomChildren": {
+    "isexe": "2.0.0"
   },
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "lint": "standard",
-    "lint:fix": "standard --fix",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags",
-    "preversion": "npm test",
-    "snap": "tap",
-    "test": "tap",
-    "posttest": "npm run lint"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/git@2.1.0",
+    "name": "@npmcli/git",
+    "escapedName": "@npmcli%2fgit",
+    "scope": "@npmcli",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
   },
-  "tap": {
-    "check-coverage": true,
-    "coverage-map": "map.js"
+  "_requiredBy": [
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
   },
-  "devDependencies": {
-    "slash": "^3.0.0",
-    "standard": "^16.0.3",
-    "tap": "^15.0.6"
+  "bugs": {
+    "url": "https://github.com/npm/git/issues"
   },
   "dependencies": {
@@ -41,4 +49,36 @@
     "semver": "^7.3.5",
     "which": "^2.0.2"
-  }
+  },
+  "description": "a util for spawning git from npm CLI contexts",
+  "devDependencies": {
+    "slash": "^3.0.0",
+    "standard": "^16.0.3",
+    "tap": "^15.0.6"
+  },
+  "files": [
+    "lib/*.js"
+  ],
+  "homepage": "https://github.com/npm/git#readme",
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "@npmcli/git",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/git.git"
+  },
+  "scripts": {
+    "lint": "standard",
+    "lint:fix": "standard --fix",
+    "posttest": "npm run lint",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true,
+    "coverage-map": "map.js"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/@npmcli/installed-package-contents/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/installed-package-contents/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/installed-package-contents/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,73 @@
 {
-  "name": "@npmcli/installed-package-contents",
-  "version": "1.0.7",
-  "description": "Get the list of files installed in a package in node_modules, including bundled dependencies",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "main": "index.js",
+  "_args": [
+    [
+      "@npmcli/installed-package-contents@1.0.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@npmcli/installed-package-contents@1.0.7",
+  "_id": "@npmcli/installed-package-contents@1.0.7",
+  "_inBundle": false,
+  "_integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==",
+  "_location": "/@npmcli/installed-package-contents",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/installed-package-contents@1.0.7",
+    "name": "@npmcli/installed-package-contents",
+    "escapedName": "@npmcli%2finstalled-package-contents",
+    "scope": "@npmcli",
+    "rawSpec": "1.0.7",
+    "saveSpec": null,
+    "fetchSpec": "1.0.7"
+  },
+  "_requiredBy": [
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz",
+  "_spec": "1.0.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
   "bin": {
     "installed-package-contents": "index.js"
   },
+  "bugs": {
+    "url": "https://github.com/npm/installed-package-contents/issues"
+  },
+  "dependencies": {
+    "npm-bundled": "^1.1.1",
+    "npm-normalize-package-bin": "^1.0.1"
+  },
+  "description": "Get the list of files installed in a package in node_modules, including bundled dependencies",
+  "devDependencies": {
+    "require-inject": "^1.4.4",
+    "tap": "^14.11.0"
+  },
+  "engines": {
+    "node": ">= 10"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/installed-package-contents#readme",
   "license": "ISC",
+  "main": "index.js",
+  "name": "@npmcli/installed-package-contents",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/installed-package-contents.git"
+  },
   "scripts": {
-    "test": "tap",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+    "test": "tap"
   },
   "tap": {
@@ -20,18 +75,4 @@
     "color": true
   },
-  "devDependencies": {
-    "require-inject": "^1.4.4",
-    "tap": "^14.11.0"
-  },
-  "dependencies": {
-    "npm-bundled": "^1.1.1",
-    "npm-normalize-package-bin": "^1.0.1"
-  },
-  "repository": "git+https://github.com/npm/installed-package-contents",
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">= 10"
-  }
+  "version": "1.0.7"
 }
Index: trip-planner-front/node_modules/@npmcli/move-file/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/move-file/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/move-file/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,68 @@
 {
-  "name": "@npmcli/move-file",
-  "version": "1.1.2",
-  "files": [
-    "index.js"
+  "_args": [
+    [
+      "@npmcli/move-file@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "description": "move a file (fork of move-file)",
+  "_development": true,
+  "_from": "@npmcli/move-file@1.1.2",
+  "_id": "@npmcli/move-file@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+  "_location": "/@npmcli/move-file",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/move-file@1.1.2",
+    "name": "@npmcli/move-file",
+    "escapedName": "@npmcli%2fmove-file",
+    "scope": "@npmcli",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/cacache"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/npm/move-file/issues"
+  },
   "dependencies": {
     "mkdirp": "^1.0.4",
     "rimraf": "^3.0.2"
   },
+  "description": "move a file (fork of move-file)",
   "devDependencies": {
     "require-inject": "^1.4.4",
     "tap": "^14.10.7"
   },
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
+  "engines": {
+    "node": ">=10"
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/move-file#readme",
+  "license": "MIT",
+  "name": "@npmcli/move-file",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/npm/move-file"
+    "url": "git+https://github.com/npm/move-file.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
   },
   "tap": {
     "check-coverage": true
   },
-  "license": "MIT",
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/@npmcli/node-gyp/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/node-gyp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/node-gyp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,50 @@
 {
-  "name": "@npmcli/node-gyp",
-  "version": "1.0.3",
+  "_args": [
+    [
+      "@npmcli/node-gyp@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@npmcli/node-gyp@1.0.3",
+  "_id": "@npmcli/node-gyp@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==",
+  "_location": "/@npmcli/node-gyp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/node-gyp@1.0.3",
+    "name": "@npmcli/node-gyp",
+    "escapedName": "@npmcli%2fnode-gyp",
+    "scope": "@npmcli",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/@npmcli/run-script"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Brian Jenkins",
+    "email": "bonkydog@bonkydog.com"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-gyp/issues"
+  },
   "description": "Tools for dealing with node-gyp packages",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
+  "devDependencies": {
+    "require-inject": "^1.4.4",
+    "tap": "^14.10.6",
+    "tmp": "^0.2.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/node-gyp.git"
-  },
+  "files": [
+    "lib/**/*.js"
+  ],
+  "homepage": "https://github.com/npm/node-gyp#readme",
   "keywords": [
     "npm",
@@ -18,18 +52,21 @@
     "node-gyp"
   ],
-  "files": [
-    "lib/**/*.js"
-  ],
+  "license": "ISC",
   "main": "lib/index.js",
-  "author": "Brian Jenkins <bonkydog@bonkydog.com>",
-  "license": "ISC",
+  "name": "@npmcli/node-gyp",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-gyp.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true,
     "coverage-map": "map.js"
   },
-  "devDependencies": {
-    "require-inject": "^1.4.4",
-    "tap": "^14.10.6",
-    "tmp": "^0.2.1"
-  }
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/@npmcli/promise-spawn/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/promise-spawn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/promise-spawn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,47 @@
 {
-  "name": "@npmcli/promise-spawn",
-  "version": "1.3.2",
-  "files": [
-    "index.js"
+  "_args": [
+    [
+      "@npmcli/promise-spawn@1.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "@npmcli/promise-spawn@1.3.2",
+  "_id": "@npmcli/promise-spawn@1.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==",
+  "_location": "/@npmcli/promise-spawn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/promise-spawn@1.3.2",
+    "name": "@npmcli/promise-spawn",
+    "escapedName": "@npmcli%2fpromise-spawn",
+    "scope": "@npmcli",
+    "rawSpec": "1.3.2",
+    "saveSpec": null,
+    "fetchSpec": "1.3.2"
+  },
+  "_requiredBy": [
+    "/@npmcli/git",
+    "/@npmcli/run-script",
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz",
+  "_spec": "1.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/promise-spawn/issues"
+  },
+  "dependencies": {
+    "infer-owner": "^1.0.4"
+  },
   "description": "spawn processes the way the npm cli likes to do",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/promise-spawn"
-  },
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
-  },
-  "tap": {
-    "check-coverage": true
-  },
   "devDependencies": {
     "minipass": "^3.1.1",
@@ -27,6 +49,24 @@
     "tap": "^14.10.6"
   },
-  "dependencies": {
-    "infer-owner": "^1.0.4"
-  }
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/promise-spawn#readme",
+  "license": "ISC",
+  "name": "@npmcli/promise-spawn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/promise-spawn.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "1.3.2"
 }
Index: trip-planner-front/node_modules/@npmcli/run-script/package.json
===================================================================
--- trip-planner-front/node_modules/@npmcli/run-script/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@npmcli/run-script/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,48 @@
 {
-  "name": "@npmcli/run-script",
-  "version": "1.8.6",
+  "_args": [
+    [
+      "@npmcli/run-script@1.8.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@npmcli/run-script@1.8.6",
+  "_id": "@npmcli/run-script@1.8.6",
+  "_inBundle": false,
+  "_integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==",
+  "_location": "/@npmcli/run-script",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@npmcli/run-script@1.8.6",
+    "name": "@npmcli/run-script",
+    "escapedName": "@npmcli%2frun-script",
+    "scope": "@npmcli",
+    "rawSpec": "1.8.6",
+    "saveSpec": null,
+    "fetchSpec": "1.8.6"
+  },
+  "_requiredBy": [
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz",
+  "_spec": "1.8.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/run-script/issues"
+  },
+  "dependencies": {
+    "@npmcli/node-gyp": "^1.0.2",
+    "@npmcli/promise-spawn": "^1.3.2",
+    "node-gyp": "^7.1.0",
+    "read-package-json-fast": "^2.0.1"
+  },
   "description": "Run a lifecycle script for a package (descendant of npm-lifecycle)",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags",
-    "eslint": "eslint",
-    "lint": "npm run eslint -- \"lib/**/*.js\"",
-    "lintfix": "npm run lint -- --fix"
-  },
-  "tap": {
-    "check-coverage": true,
-    "coverage-map": "map.js"
-  },
   "devDependencies": {
     "eslint": "^7.19.0",
@@ -28,18 +55,29 @@
     "tap": "^15.0.4"
   },
-  "dependencies": {
-    "@npmcli/node-gyp": "^1.0.2",
-    "@npmcli/promise-spawn": "^1.3.2",
-    "node-gyp": "^7.1.0",
-    "read-package-json-fast": "^2.0.1"
-  },
   "files": [
     "lib/**/*.js",
     "lib/node-gyp-bin"
   ],
+  "homepage": "https://github.com/npm/run-script#readme",
+  "license": "ISC",
   "main": "lib/run-script.js",
+  "name": "@npmcli/run-script",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/npm/run-script.git"
-  }
+  },
+  "scripts": {
+    "eslint": "eslint",
+    "lint": "npm run eslint -- \"lib/**/*.js\"",
+    "lintfix": "npm run lint -- --fix",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true,
+    "coverage-map": "map.js"
+  },
+  "version": "1.8.6"
 }
Index: trip-planner-front/node_modules/@schematics/angular/package.json
===================================================================
--- trip-planner-front/node_modules/@schematics/angular/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@schematics/angular/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,50 @@
 {
-  "name": "@schematics/angular",
-  "version": "12.2.9",
+  "_args": [
+    [
+      "@schematics/angular@12.2.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@schematics/angular@12.2.9",
+  "_id": "@schematics/angular@12.2.9",
+  "_inBundle": false,
+  "_integrity": "sha512-IIczXVwegREekub0+bBxOc0dDL7j8p5rG6rB/2btJRR+tg04milP+BkvnQgksmIkW1OcZ5beRSB37R3jY/W/PA==",
+  "_location": "/@schematics/angular",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@schematics/angular@12.2.9",
+    "name": "@schematics/angular",
+    "escapedName": "@schematics%2fangular",
+    "scope": "@schematics",
+    "rawSpec": "12.2.9",
+    "saveSpec": null,
+    "fetchSpec": "12.2.9"
+  },
+  "_requiredBy": [
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.9.tgz",
+  "_spec": "12.2.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Angular Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/angular/angular-cli/issues"
+  },
+  "dependencies": {
+    "@angular-devkit/core": "12.2.9",
+    "@angular-devkit/schematics": "12.2.9",
+    "jsonc-parser": "3.0.0"
+  },
   "description": "Schematics specific to Angular",
+  "engines": {
+    "node": "^12.14.1 || >=14.0.0",
+    "npm": "^6.11.0 || ^7.5.6",
+    "yarn": ">= 1.13.0"
+  },
   "homepage": "https://github.com/angular/angular-cli",
   "keywords": [
@@ -14,23 +58,11 @@
     "schematics"
   ],
-  "schematics": "./collection.json",
-  "dependencies": {
-    "@angular-devkit/core": "12.2.9",
-    "@angular-devkit/schematics": "12.2.9",
-    "jsonc-parser": "3.0.0"
-  },
+  "license": "MIT",
+  "name": "@schematics/angular",
   "repository": {
     "type": "git",
-    "url": "https://github.com/angular/angular-cli.git"
+    "url": "git+https://github.com/angular/angular-cli.git"
   },
-  "engines": {
-    "node": "^12.14.1 || >=14.0.0",
-    "npm": "^6.11.0 || ^7.5.6",
-    "yarn": ">= 1.13.0"
-  },
-  "author": "Angular Authors",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/angular/angular-cli/issues"
-  }
+  "schematics": "./collection.json",
+  "version": "12.2.9"
 }
Index: trip-planner-front/node_modules/@tootallnate/once/package.json
===================================================================
--- trip-planner-front/node_modules/@tootallnate/once/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@tootallnate/once/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,42 @@
 {
-  "name": "@tootallnate/once",
-  "version": "1.1.2",
-  "description": "Creates a Promise that waits for a single event",
-  "main": "./dist/index.js",
-  "types": "./dist/index.d.ts",
-  "files": [
-    "dist"
+  "_args": [
+    [
+      "@tootallnate/once@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "tsc",
-    "test": "mocha --reporter spec",
-    "test-lint": "eslint src --ext .js,.ts",
-    "prepublishOnly": "npm run build"
+  "_development": true,
+  "_from": "@tootallnate/once@1.1.2",
+  "_id": "@tootallnate/once@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+  "_location": "/@tootallnate/once",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@tootallnate/once@1.1.2",
+    "name": "@tootallnate/once",
+    "escapedName": "@tootallnate%2fonce",
+    "scope": "@tootallnate",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/once.git"
+  "_requiredBy": [
+    "/http-proxy-agent"
+  ],
+  "_resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
   },
-  "keywords": [],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/TooTallNate/once/issues"
   },
+  "description": "Creates a Promise that waits for a single event",
   "devDependencies": {
     "@types/node": "^12.12.11",
@@ -42,4 +56,25 @@
   "engines": {
     "node": ">= 6"
-  }
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/TooTallNate/once#readme",
+  "keywords": [],
+  "license": "MIT",
+  "main": "./dist/index.js",
+  "name": "@tootallnate/once",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/once.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "prebuild": "rimraf dist",
+    "prepublishOnly": "npm run build",
+    "test": "mocha --reporter spec",
+    "test-lint": "eslint src --ext .js,.ts"
+  },
+  "types": "./dist/index.d.ts",
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/@trysound/sax/package.json
===================================================================
--- trip-planner-front/node_modules/@trysound/sax/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@trysound/sax/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,41 @@
 {
-  "version": "0.2.0",
-  "name": "@trysound/sax",
-  "description": "An evented streaming XML parser in JavaScript",
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "repository": "git://github.com/svg/sax.git",
-  "license": "ISC",
+  "_args": [
+    [
+      "@trysound/sax@0.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@trysound/sax@0.2.0",
+  "_id": "@trysound/sax@0.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+  "_location": "/@trysound/sax",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@trysound/sax@0.2.0",
+    "name": "@trysound/sax",
+    "escapedName": "@trysound%2fsax",
+    "scope": "@trysound",
+    "rawSpec": "0.2.0",
+    "saveSpec": null,
+    "fetchSpec": "0.2.0"
+  },
+  "_requiredBy": [
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+  "_spec": "0.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/svg/sax/issues"
+  },
   "contributors": [
     {
@@ -13,18 +45,27 @@
     }
   ],
-  "main": "lib/sax.js",
+  "description": "An evented streaming XML parser in JavaScript",
+  "devDependencies": {
+    "standard": "^8.6.0",
+    "tap": "^10.5.1"
+  },
+  "engines": {
+    "node": ">=10.13.0"
+  },
   "files": [
     "lib"
   ],
-  "engines": {
-    "node": ">=10.13.0"
+  "homepage": "https://github.com/svg/sax#readme",
+  "license": "ISC",
+  "main": "lib/sax.js",
+  "name": "@trysound/sax",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/svg/sax.git"
   },
   "scripts": {
-    "test": "tap test/*.js --cov -j4",
-    "lint": "standard -F test/*.js lib/*.js"
+    "lint": "standard -F test/*.js lib/*.js",
+    "test": "tap test/*.js --cov -j4"
   },
-  "devDependencies": {
-    "standard": "^8.6.0",
-    "tap": "^10.5.1"
-  }
+  "version": "0.2.0"
 }
Index: trip-planner-front/node_modules/@types/component-emitter/package.json
===================================================================
--- trip-planner-front/node_modules/@types/component-emitter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/component-emitter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,57 @@
 {
+  "_args": [
+    [
+      "@types/component-emitter@1.2.10",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/component-emitter@1.2.10",
+  "_id": "@types/component-emitter@1.2.10",
+  "_inBundle": false,
+  "_integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==",
+  "_location": "/@types/component-emitter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/component-emitter@1.2.10",
     "name": "@types/component-emitter",
-    "version": "1.2.10",
-    "description": "TypeScript definitions for component-emitter",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Peter Snider",
-            "url": "https://github.com/psnider",
-            "githubUsername": "psnider"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/component-emitter"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "446bfc6b04cc0bdf3afbaa65ac393c5c9056ab15d158199b96d266059c762403",
-    "typeScriptVersion": "3.1"
+    "escapedName": "@types%2fcomponent-emitter",
+    "scope": "@types",
+    "rawSpec": "1.2.10",
+    "saveSpec": null,
+    "fetchSpec": "1.2.10"
+  },
+  "_requiredBy": [
+    "/socket.io-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
+  "_spec": "1.2.10",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Peter Snider",
+      "url": "https://github.com/psnider"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for component-emitter",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/component-emitter",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/component-emitter"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.1",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "446bfc6b04cc0bdf3afbaa65ac393c5c9056ab15d158199b96d266059c762403",
+  "version": "1.2.10"
 }
Index: trip-planner-front/node_modules/@types/cookie/package.json
===================================================================
--- trip-planner-front/node_modules/@types/cookie/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/cookie/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,61 @@
 {
+  "_args": [
+    [
+      "@types/cookie@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/cookie@0.4.1",
+  "_id": "@types/cookie@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
+  "_location": "/@types/cookie",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/cookie@0.4.1",
     "name": "@types/cookie",
-    "version": "0.4.1",
-    "description": "TypeScript definitions for cookie",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cookie",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Pine Mizune",
-            "url": "https://github.com/pine",
-            "githubUsername": "pine"
-        },
-        {
-            "name": "Piotr Błażejewicz",
-            "url": "https://github.com/peterblazejewicz",
-            "githubUsername": "peterblazejewicz"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/cookie"
+    "escapedName": "@types%2fcookie",
+    "scope": "@types",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
+  },
+  "_requiredBy": [
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Pine Mizune",
+      "url": "https://github.com/pine"
     },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "7d4a6dd505c896319459ae131b5fa8fc0a2ed25552db53dac87946119bb21559",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Piotr Błażejewicz",
+      "url": "https://github.com/peterblazejewicz"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for cookie",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cookie",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/cookie",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/cookie"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "7d4a6dd505c896319459ae131b5fa8fc0a2ed25552db53dac87946119bb21559",
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/@types/cors/package.json
===================================================================
--- trip-planner-front/node_modules/@types/cors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/cors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,61 @@
 {
+  "_args": [
+    [
+      "@types/cors@2.8.12",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/cors@2.8.12",
+  "_id": "@types/cors@2.8.12",
+  "_inBundle": false,
+  "_integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
+  "_location": "/@types/cors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/cors@2.8.12",
     "name": "@types/cors",
-    "version": "2.8.12",
-    "description": "TypeScript definitions for cors",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cors",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Alan Plum",
-            "url": "https://github.com/pluma",
-            "githubUsername": "pluma"
-        },
-        {
-            "name": "Gaurav Sharma",
-            "url": "https://github.com/gtpan77",
-            "githubUsername": "gtpan77"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/cors"
+    "escapedName": "@types%2fcors",
+    "scope": "@types",
+    "rawSpec": "2.8.12",
+    "saveSpec": null,
+    "fetchSpec": "2.8.12"
+  },
+  "_requiredBy": [
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+  "_spec": "2.8.12",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Alan Plum",
+      "url": "https://github.com/pluma"
     },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "53ea51a6543d58d3c1b9035a9c361d8f06d7be01973be2895820b2fb7ad9563a",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Gaurav Sharma",
+      "url": "https://github.com/gtpan77"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for cors",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cors",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/cors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/cors"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "53ea51a6543d58d3c1b9035a9c361d8f06d7be01973be2895820b2fb7ad9563a",
+  "version": "2.8.12"
 }
Index: trip-planner-front/node_modules/@types/eslint-scope/package.json
===================================================================
--- trip-planner-front/node_modules/@types/eslint-scope/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/eslint-scope/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,60 @@
 {
+  "_args": [
+    [
+      "@types/eslint-scope@3.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/eslint-scope@3.7.1",
+  "_id": "@types/eslint-scope@3.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==",
+  "_location": "/@types/eslint-scope",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/eslint-scope@3.7.1",
     "name": "@types/eslint-scope",
-    "version": "3.7.1",
-    "description": "TypeScript definitions for eslint-scope",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Toru Nagashima",
-            "url": "https://github.com/mysticatea",
-            "githubUsername": "mysticatea"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/eslint-scope"
-    },
-    "scripts": {},
-    "dependencies": {
-        "@types/eslint": "*",
-        "@types/estree": "*"
-    },
-    "typesPublisherContentHash": "47224c2bf9a37ca8eb542bd7399915133185a33ed6b71ef30985d3c8a9598e8c",
-    "typeScriptVersion": "3.6"
+    "escapedName": "@types%2feslint-scope",
+    "scope": "@types",
+    "rawSpec": "3.7.1",
+    "saveSpec": null,
+    "fetchSpec": "3.7.1"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz",
+  "_spec": "3.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Toru Nagashima",
+      "url": "https://github.com/mysticatea"
+    }
+  ],
+  "dependencies": {
+    "@types/eslint": "*",
+    "@types/estree": "*"
+  },
+  "description": "TypeScript definitions for eslint-scope",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/eslint-scope",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/eslint-scope"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "47224c2bf9a37ca8eb542bd7399915133185a33ed6b71ef30985d3c8a9598e8c",
+  "version": "3.7.1"
 }
Index: trip-planner-front/node_modules/@types/eslint/package.json
===================================================================
--- trip-planner-front/node_modules/@types/eslint/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/eslint/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,80 @@
 {
+  "_args": [
+    [
+      "@types/eslint@7.28.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/eslint@7.28.1",
+  "_id": "@types/eslint@7.28.1",
+  "_inBundle": false,
+  "_integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==",
+  "_location": "/@types/eslint",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/eslint@7.28.1",
     "name": "@types/eslint",
-    "version": "7.28.1",
-    "description": "TypeScript definitions for eslint",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Pierre-Marie Dartus",
-            "url": "https://github.com/pmdartus",
-            "githubUsername": "pmdartus"
-        },
-        {
-            "name": "Jed Fox",
-            "url": "https://github.com/j-f1",
-            "githubUsername": "j-f1"
-        },
-        {
-            "name": "Saad Quadri",
-            "url": "https://github.com/saadq",
-            "githubUsername": "saadq"
-        },
-        {
-            "name": "Jason Kwok",
-            "url": "https://github.com/JasonHK",
-            "githubUsername": "JasonHK"
-        },
-        {
-            "name": "Brad Zacher",
-            "url": "https://github.com/bradzacher",
-            "githubUsername": "bradzacher"
-        },
-        {
-            "name": "JounQin",
-            "url": "https://github.com/JounQin",
-            "githubUsername": "JounQin"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/eslint"
+    "escapedName": "@types%2feslint",
+    "scope": "@types",
+    "rawSpec": "7.28.1",
+    "saveSpec": null,
+    "fetchSpec": "7.28.1"
+  },
+  "_requiredBy": [
+    "/@types/eslint-scope"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz",
+  "_spec": "7.28.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Pierre-Marie Dartus",
+      "url": "https://github.com/pmdartus"
     },
-    "scripts": {},
-    "dependencies": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
+    {
+      "name": "Jed Fox",
+      "url": "https://github.com/j-f1"
     },
-    "typesPublisherContentHash": "ead3341b417b1fe8a2825d96ddb954f3dad2633c5eb166e057c130a2c7db3605",
-    "typeScriptVersion": "3.7"
+    {
+      "name": "Saad Quadri",
+      "url": "https://github.com/saadq"
+    },
+    {
+      "name": "Jason Kwok",
+      "url": "https://github.com/JasonHK"
+    },
+    {
+      "name": "Brad Zacher",
+      "url": "https://github.com/bradzacher"
+    },
+    {
+      "name": "JounQin",
+      "url": "https://github.com/JounQin"
+    }
+  ],
+  "dependencies": {
+    "@types/estree": "*",
+    "@types/json-schema": "*"
+  },
+  "description": "TypeScript definitions for eslint",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/eslint",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/eslint"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.7",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "ead3341b417b1fe8a2825d96ddb954f3dad2633c5eb166e057c130a2c7db3605",
+  "version": "7.28.1"
 }
Index: trip-planner-front/node_modules/@types/estree/package.json
===================================================================
--- trip-planner-front/node_modules/@types/estree/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/estree/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,59 @@
 {
+  "_args": [
+    [
+      "@types/estree@0.0.50",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/estree@0.0.50",
+  "_id": "@types/estree@0.0.50",
+  "_inBundle": false,
+  "_integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==",
+  "_location": "/@types/estree",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/estree@0.0.50",
     "name": "@types/estree",
-    "version": "0.0.50",
-    "description": "TypeScript definitions for ESTree AST specification",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "RReverser",
-            "url": "https://github.com/RReverser",
-            "githubUsername": "RReverser"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/estree"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "17c3bbf309fdb8f5ab9aed3719a85b192528e1cc459e4ce8336f68936d64b34d",
-    "typeScriptVersion": "3.6"
+    "escapedName": "@types%2festree",
+    "scope": "@types",
+    "rawSpec": "0.0.50",
+    "saveSpec": null,
+    "fetchSpec": "0.0.50"
+  },
+  "_requiredBy": [
+    "/@types/eslint",
+    "/@types/eslint-scope",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
+  "_spec": "0.0.50",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "RReverser",
+      "url": "https://github.com/RReverser"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for ESTree AST specification",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/estree",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/estree"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "17c3bbf309fdb8f5ab9aed3719a85b192528e1cc459e4ce8336f68936d64b34d",
+  "version": "0.0.50"
 }
Index: trip-planner-front/node_modules/@types/glob/package.json
===================================================================
--- trip-planner-front/node_modules/@types/glob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/glob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,72 @@
 {
+  "_args": [
+    [
+      "@types/glob@7.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/glob@7.1.4",
+  "_id": "@types/glob@7.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==",
+  "_location": "/@types/glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/glob@7.1.4",
     "name": "@types/glob",
-    "version": "7.1.4",
-    "description": "TypeScript definitions for Glob",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/glob",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "vvakame",
-            "url": "https://github.com/vvakame",
-            "githubUsername": "vvakame"
-        },
-        {
-            "name": "voy",
-            "url": "https://github.com/voy",
-            "githubUsername": "voy"
-        },
-        {
-            "name": "Klaus Meinhardt",
-            "url": "https://github.com/ajafff",
-            "githubUsername": "ajafff"
-        },
-        {
-            "name": "Piotr Błażejewicz",
-            "url": "https://github.com/peterblazejewicz",
-            "githubUsername": "peterblazejewicz"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/glob"
+    "escapedName": "@types%2fglob",
+    "scope": "@types",
+    "rawSpec": "7.1.4",
+    "saveSpec": null,
+    "fetchSpec": "7.1.4"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz",
+  "_spec": "7.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "vvakame",
+      "url": "https://github.com/vvakame"
     },
-    "scripts": {},
-    "dependencies": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
+    {
+      "name": "voy",
+      "url": "https://github.com/voy"
     },
-    "typesPublisherContentHash": "9c65678f7b7e4a9c5a11737e187e406ff2fa0640018fcc9359b2ec6f7d0eb646",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Klaus Meinhardt",
+      "url": "https://github.com/ajafff"
+    },
+    {
+      "name": "Piotr Błażejewicz",
+      "url": "https://github.com/peterblazejewicz"
+    }
+  ],
+  "dependencies": {
+    "@types/minimatch": "*",
+    "@types/node": "*"
+  },
+  "description": "TypeScript definitions for Glob",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/glob",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/glob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/glob"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "9c65678f7b7e4a9c5a11737e187e406ff2fa0640018fcc9359b2ec6f7d0eb646",
+  "version": "7.1.4"
 }
Index: trip-planner-front/node_modules/@types/jasmine/package.json
===================================================================
--- trip-planner-front/node_modules/@types/jasmine/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/jasmine/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,95 +1,113 @@
 {
+  "_args": [
+    [
+      "@types/jasmine@3.8.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/jasmine@3.8.2",
+  "_id": "@types/jasmine@3.8.2",
+  "_inBundle": false,
+  "_integrity": "sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg==",
+  "_location": "/@types/jasmine",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/jasmine@3.8.2",
     "name": "@types/jasmine",
-    "version": "3.8.2",
-    "description": "TypeScript definitions for Jasmine",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jasmine",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Boris Yankov",
-            "url": "https://github.com/borisyankov",
-            "githubUsername": "borisyankov"
-        },
-        {
-            "name": "Theodore Brown",
-            "url": "https://github.com/theodorejb",
-            "githubUsername": "theodorejb"
-        },
-        {
-            "name": "David Pärsson",
-            "url": "https://github.com/davidparsson",
-            "githubUsername": "davidparsson"
-        },
-        {
-            "name": "Lukas Zech",
-            "url": "https://github.com/lukas-zech-software",
-            "githubUsername": "lukas-zech-software"
-        },
-        {
-            "name": "Boris Breuer",
-            "url": "https://github.com/Engineer2B",
-            "githubUsername": "Engineer2B"
-        },
-        {
-            "name": "Chris Yungmann",
-            "url": "https://github.com/cyungmann",
-            "githubUsername": "cyungmann"
-        },
-        {
-            "name": "Giles Roadnight",
-            "url": "https://github.com/Roaders",
-            "githubUsername": "Roaders"
-        },
-        {
-            "name": "Yaroslav Admin",
-            "url": "https://github.com/devoto13",
-            "githubUsername": "devoto13"
-        },
-        {
-            "name": "Domas Trijonis",
-            "url": "https://github.com/fdim",
-            "githubUsername": "fdim"
-        },
-        {
-            "name": "Moshe Kolodny",
-            "url": "https://github.com/kolodny",
-            "githubUsername": "kolodny"
-        },
-        {
-            "name": "Stephen Farrar",
-            "url": "https://github.com/stephenfarrar",
-            "githubUsername": "stephenfarrar"
-        },
-        {
-            "name": "Dominik Ehrenberg",
-            "url": "https://github.com/djungowski",
-            "githubUsername": "djungowski"
-        },
-        {
-            "name": "Chives",
-            "url": "https://github.com/chivesrs",
-            "githubUsername": "chivesrs"
-        },
-        {
-            "name": "kirjs",
-            "url": "https://github.com/kirjs",
-            "githubUsername": "kirjs"
-        },
-        {
-            "name": "Md. Enzam Hossain",
-            "url": "https://github.com/ienzam",
-            "githubUsername": "ienzam"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/jasmine"
+    "escapedName": "@types%2fjasmine",
+    "scope": "@types",
+    "rawSpec": "3.8.2",
+    "saveSpec": null,
+    "fetchSpec": "3.8.2"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.8.2.tgz",
+  "_spec": "3.8.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Boris Yankov",
+      "url": "https://github.com/borisyankov"
     },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "e848a403332ac1a7d20012622f31eeb8fa8c19a2adba2031559cf82f32008e0e",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Theodore Brown",
+      "url": "https://github.com/theodorejb"
+    },
+    {
+      "name": "David Pärsson",
+      "url": "https://github.com/davidparsson"
+    },
+    {
+      "name": "Lukas Zech",
+      "url": "https://github.com/lukas-zech-software"
+    },
+    {
+      "name": "Boris Breuer",
+      "url": "https://github.com/Engineer2B"
+    },
+    {
+      "name": "Chris Yungmann",
+      "url": "https://github.com/cyungmann"
+    },
+    {
+      "name": "Giles Roadnight",
+      "url": "https://github.com/Roaders"
+    },
+    {
+      "name": "Yaroslav Admin",
+      "url": "https://github.com/devoto13"
+    },
+    {
+      "name": "Domas Trijonis",
+      "url": "https://github.com/fdim"
+    },
+    {
+      "name": "Moshe Kolodny",
+      "url": "https://github.com/kolodny"
+    },
+    {
+      "name": "Stephen Farrar",
+      "url": "https://github.com/stephenfarrar"
+    },
+    {
+      "name": "Dominik Ehrenberg",
+      "url": "https://github.com/djungowski"
+    },
+    {
+      "name": "Chives",
+      "url": "https://github.com/chivesrs"
+    },
+    {
+      "name": "kirjs",
+      "url": "https://github.com/kirjs"
+    },
+    {
+      "name": "Md. Enzam Hossain",
+      "url": "https://github.com/ienzam"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for Jasmine",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jasmine",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/jasmine",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/jasmine"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "e848a403332ac1a7d20012622f31eeb8fa8c19a2adba2031559cf82f32008e0e",
+  "version": "3.8.2"
 }
Index: trip-planner-front/node_modules/@types/json-schema/package.json
===================================================================
--- trip-planner-front/node_modules/@types/json-schema/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/json-schema/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,80 @@
 {
+  "_args": [
+    [
+      "@types/json-schema@7.0.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/json-schema@7.0.9",
+  "_id": "@types/json-schema@7.0.9",
+  "_inBundle": false,
+  "_integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
+  "_location": "/@types/json-schema",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/json-schema@7.0.9",
     "name": "@types/json-schema",
-    "version": "7.0.9",
-    "description": "TypeScript definitions for json-schema 4.0, 6.0 and",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Boris Cherny",
-            "url": "https://github.com/bcherny",
-            "githubUsername": "bcherny"
-        },
-        {
-            "name": "Cyrille Tuzi",
-            "url": "https://github.com/cyrilletuzi",
-            "githubUsername": "cyrilletuzi"
-        },
-        {
-            "name": "Lucian Buzzo",
-            "url": "https://github.com/lucianbuzzo",
-            "githubUsername": "lucianbuzzo"
-        },
-        {
-            "name": "Roland Groza",
-            "url": "https://github.com/rolandjitsu",
-            "githubUsername": "rolandjitsu"
-        },
-        {
-            "name": "Jason Kwok",
-            "url": "https://github.com/JasonHK",
-            "githubUsername": "JasonHK"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/json-schema"
+    "escapedName": "@types%2fjson-schema",
+    "scope": "@types",
+    "rawSpec": "7.0.9",
+    "saveSpec": null,
+    "fetchSpec": "7.0.9"
+  },
+  "_requiredBy": [
+    "/@types/eslint",
+    "/copy-webpack-plugin/schema-utils",
+    "/css-minimizer-webpack-plugin/schema-utils",
+    "/mini-css-extract-plugin/schema-utils",
+    "/schema-utils",
+    "/terser-webpack-plugin/schema-utils",
+    "/webpack-dev-middleware/schema-utils",
+    "/webpack/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+  "_spec": "7.0.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Boris Cherny",
+      "url": "https://github.com/bcherny"
     },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "2eb4af77c88f8be05a313707b99902ae4fc14609b7a2af2b5ce7007443a63253",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Cyrille Tuzi",
+      "url": "https://github.com/cyrilletuzi"
+    },
+    {
+      "name": "Lucian Buzzo",
+      "url": "https://github.com/lucianbuzzo"
+    },
+    {
+      "name": "Roland Groza",
+      "url": "https://github.com/rolandjitsu"
+    },
+    {
+      "name": "Jason Kwok",
+      "url": "https://github.com/JasonHK"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for json-schema 4.0, 6.0 and",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/json-schema",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/json-schema"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "2eb4af77c88f8be05a313707b99902ae4fc14609b7a2af2b5ce7007443a63253",
+  "version": "7.0.9"
 }
Index: trip-planner-front/node_modules/@types/minimatch/package.json
===================================================================
--- trip-planner-front/node_modules/@types/minimatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/minimatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,61 @@
 {
+  "_args": [
+    [
+      "@types/minimatch@3.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/minimatch@3.0.5",
+  "_id": "@types/minimatch@3.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+  "_location": "/@types/minimatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/minimatch@3.0.5",
     "name": "@types/minimatch",
-    "version": "3.0.5",
-    "description": "TypeScript definitions for Minimatch",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/minimatch",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "vvakame",
-            "url": "https://github.com/vvakame",
-            "githubUsername": "vvakame"
-        },
-        {
-            "name": "Shant Marouti",
-            "url": "https://github.com/shantmarouti",
-            "githubUsername": "shantmarouti"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/minimatch"
+    "escapedName": "@types%2fminimatch",
+    "scope": "@types",
+    "rawSpec": "3.0.5",
+    "saveSpec": null,
+    "fetchSpec": "3.0.5"
+  },
+  "_requiredBy": [
+    "/@types/glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+  "_spec": "3.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "vvakame",
+      "url": "https://github.com/vvakame"
     },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "ce8670ab7ddb0b32136aa0f819c3e7d791e75f04ff991f2f1baa3a9967dd61c0",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Shant Marouti",
+      "url": "https://github.com/shantmarouti"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for Minimatch",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/minimatch",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/minimatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/minimatch"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "ce8670ab7ddb0b32136aa0f819c3e7d791e75f04ff991f2f1baa3a9967dd61c0",
+  "version": "3.0.5"
 }
Index: trip-planner-front/node_modules/@types/node/package.json
===================================================================
--- trip-planner-front/node_modules/@types/node/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/node/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,200 +1,201 @@
 {
+  "_args": [
+    [
+      "@types/node@12.20.28",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/node@12.20.28",
+  "_id": "@types/node@12.20.28",
+  "_inBundle": false,
+  "_integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==",
+  "_location": "/@types/node",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/node@12.20.28",
     "name": "@types/node",
-    "version": "12.20.28",
-    "description": "TypeScript definitions for Node.js",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Microsoft TypeScript",
-            "url": "https://github.com/Microsoft",
-            "githubUsername": "Microsoft"
-        },
-        {
-            "name": "DefinitelyTyped",
-            "url": "https://github.com/DefinitelyTyped",
-            "githubUsername": "DefinitelyTyped"
-        },
-        {
-            "name": "Alberto Schiabel",
-            "url": "https://github.com/jkomyno",
-            "githubUsername": "jkomyno"
-        },
-        {
-            "name": "Alvis HT Tang",
-            "url": "https://github.com/alvis",
-            "githubUsername": "alvis"
-        },
-        {
-            "name": "Andrew Makarov",
-            "url": "https://github.com/r3nya",
-            "githubUsername": "r3nya"
-        },
-        {
-            "name": "Benjamin Toueg",
-            "url": "https://github.com/btoueg",
-            "githubUsername": "btoueg"
-        },
-        {
-            "name": "Chigozirim C.",
-            "url": "https://github.com/smac89",
-            "githubUsername": "smac89"
-        },
-        {
-            "name": "David Junger",
-            "url": "https://github.com/touffy",
-            "githubUsername": "touffy"
-        },
-        {
-            "name": "Deividas Bakanas",
-            "url": "https://github.com/DeividasBakanas",
-            "githubUsername": "DeividasBakanas"
-        },
-        {
-            "name": "Eugene Y. Q. Shen",
-            "url": "https://github.com/eyqs",
-            "githubUsername": "eyqs"
-        },
-        {
-            "name": "Hannes Magnusson",
-            "url": "https://github.com/Hannes-Magnusson-CK",
-            "githubUsername": "Hannes-Magnusson-CK"
-        },
-        {
-            "name": "Hoàng Văn Khải",
-            "url": "https://github.com/KSXGitHub",
-            "githubUsername": "KSXGitHub"
-        },
-        {
-            "name": "Huw",
-            "url": "https://github.com/hoo29",
-            "githubUsername": "hoo29"
-        },
-        {
-            "name": "Kelvin Jin",
-            "url": "https://github.com/kjin",
-            "githubUsername": "kjin"
-        },
-        {
-            "name": "Klaus Meinhardt",
-            "url": "https://github.com/ajafff",
-            "githubUsername": "ajafff"
-        },
-        {
-            "name": "Lishude",
-            "url": "https://github.com/islishude",
-            "githubUsername": "islishude"
-        },
-        {
-            "name": "Mariusz Wiktorczyk",
-            "url": "https://github.com/mwiktorczyk",
-            "githubUsername": "mwiktorczyk"
-        },
-        {
-            "name": "Mohsen Azimi",
-            "url": "https://github.com/mohsen1",
-            "githubUsername": "mohsen1"
-        },
-        {
-            "name": "Nicolas Even",
-            "url": "https://github.com/n-e",
-            "githubUsername": "n-e"
-        },
-        {
-            "name": "Nikita Galkin",
-            "url": "https://github.com/galkin",
-            "githubUsername": "galkin"
-        },
-        {
-            "name": "Parambir Singh",
-            "url": "https://github.com/parambirs",
-            "githubUsername": "parambirs"
-        },
-        {
-            "name": "Sebastian Silbermann",
-            "url": "https://github.com/eps1lon",
-            "githubUsername": "eps1lon"
-        },
-        {
-            "name": "Simon Schick",
-            "url": "https://github.com/SimonSchick",
-            "githubUsername": "SimonSchick"
-        },
-        {
-            "name": "Thomas den Hollander",
-            "url": "https://github.com/ThomasdenH",
-            "githubUsername": "ThomasdenH"
-        },
-        {
-            "name": "Wilco Bakker",
-            "url": "https://github.com/WilcoBakker",
-            "githubUsername": "WilcoBakker"
-        },
-        {
-            "name": "wwwy3y3",
-            "url": "https://github.com/wwwy3y3",
-            "githubUsername": "wwwy3y3"
-        },
-        {
-            "name": "Zane Hannan AU",
-            "url": "https://github.com/ZaneHannanAU",
-            "githubUsername": "ZaneHannanAU"
-        },
-        {
-            "name": "Samuel Ainsworth",
-            "url": "https://github.com/samuela",
-            "githubUsername": "samuela"
-        },
-        {
-            "name": "Kyle Uehlein",
-            "url": "https://github.com/kuehlein",
-            "githubUsername": "kuehlein"
-        },
-        {
-            "name": "Thanik Bhongbhibhat",
-            "url": "https://github.com/bhongy",
-            "githubUsername": "bhongy"
-        },
-        {
-            "name": "Marcin Kopacz",
-            "url": "https://github.com/chyzwar",
-            "githubUsername": "chyzwar"
-        },
-        {
-            "name": "Trivikram Kamat",
-            "url": "https://github.com/trivikr",
-            "githubUsername": "trivikr"
-        },
-        {
-            "name": "Minh Son Nguyen",
-            "url": "https://github.com/nguymin4",
-            "githubUsername": "nguymin4"
-        },
-        {
-            "name": "Junxiao Shi",
-            "url": "https://github.com/yoursunny",
-            "githubUsername": "yoursunny"
-        },
-        {
-            "name": "Ilia Baryshnikov",
-            "url": "https://github.com/qwelias",
-            "githubUsername": "qwelias"
-        },
-        {
-            "name": "ExE Boss",
-            "url": "https://github.com/ExE-Boss",
-            "githubUsername": "ExE-Boss"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/node"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "42364b7d4d815f35a5adce5277b009c6550fdef6d27f37f53495d2228ea1cd7e",
-    "typeScriptVersion": "3.7"
+    "escapedName": "@types%2fnode",
+    "scope": "@types",
+    "rawSpec": "12.20.28",
+    "saveSpec": null,
+    "fetchSpec": "12.20.28"
+  },
+  "_requiredBy": [
+    "#DEV:/",
+    "/@types/glob",
+    "/@types/webpack-sources",
+    "/jest-worker",
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz",
+  "_spec": "12.20.28",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "Microsoft TypeScript",
+      "url": "https://github.com/Microsoft"
+    },
+    {
+      "name": "DefinitelyTyped",
+      "url": "https://github.com/DefinitelyTyped"
+    },
+    {
+      "name": "Alberto Schiabel",
+      "url": "https://github.com/jkomyno"
+    },
+    {
+      "name": "Alvis HT Tang",
+      "url": "https://github.com/alvis"
+    },
+    {
+      "name": "Andrew Makarov",
+      "url": "https://github.com/r3nya"
+    },
+    {
+      "name": "Benjamin Toueg",
+      "url": "https://github.com/btoueg"
+    },
+    {
+      "name": "Chigozirim C.",
+      "url": "https://github.com/smac89"
+    },
+    {
+      "name": "David Junger",
+      "url": "https://github.com/touffy"
+    },
+    {
+      "name": "Deividas Bakanas",
+      "url": "https://github.com/DeividasBakanas"
+    },
+    {
+      "name": "Eugene Y. Q. Shen",
+      "url": "https://github.com/eyqs"
+    },
+    {
+      "name": "Hannes Magnusson",
+      "url": "https://github.com/Hannes-Magnusson-CK"
+    },
+    {
+      "name": "Hoàng Văn Khải",
+      "url": "https://github.com/KSXGitHub"
+    },
+    {
+      "name": "Huw",
+      "url": "https://github.com/hoo29"
+    },
+    {
+      "name": "Kelvin Jin",
+      "url": "https://github.com/kjin"
+    },
+    {
+      "name": "Klaus Meinhardt",
+      "url": "https://github.com/ajafff"
+    },
+    {
+      "name": "Lishude",
+      "url": "https://github.com/islishude"
+    },
+    {
+      "name": "Mariusz Wiktorczyk",
+      "url": "https://github.com/mwiktorczyk"
+    },
+    {
+      "name": "Mohsen Azimi",
+      "url": "https://github.com/mohsen1"
+    },
+    {
+      "name": "Nicolas Even",
+      "url": "https://github.com/n-e"
+    },
+    {
+      "name": "Nikita Galkin",
+      "url": "https://github.com/galkin"
+    },
+    {
+      "name": "Parambir Singh",
+      "url": "https://github.com/parambirs"
+    },
+    {
+      "name": "Sebastian Silbermann",
+      "url": "https://github.com/eps1lon"
+    },
+    {
+      "name": "Simon Schick",
+      "url": "https://github.com/SimonSchick"
+    },
+    {
+      "name": "Thomas den Hollander",
+      "url": "https://github.com/ThomasdenH"
+    },
+    {
+      "name": "Wilco Bakker",
+      "url": "https://github.com/WilcoBakker"
+    },
+    {
+      "name": "wwwy3y3",
+      "url": "https://github.com/wwwy3y3"
+    },
+    {
+      "name": "Zane Hannan AU",
+      "url": "https://github.com/ZaneHannanAU"
+    },
+    {
+      "name": "Samuel Ainsworth",
+      "url": "https://github.com/samuela"
+    },
+    {
+      "name": "Kyle Uehlein",
+      "url": "https://github.com/kuehlein"
+    },
+    {
+      "name": "Thanik Bhongbhibhat",
+      "url": "https://github.com/bhongy"
+    },
+    {
+      "name": "Marcin Kopacz",
+      "url": "https://github.com/chyzwar"
+    },
+    {
+      "name": "Trivikram Kamat",
+      "url": "https://github.com/trivikr"
+    },
+    {
+      "name": "Minh Son Nguyen",
+      "url": "https://github.com/nguymin4"
+    },
+    {
+      "name": "Junxiao Shi",
+      "url": "https://github.com/yoursunny"
+    },
+    {
+      "name": "Ilia Baryshnikov",
+      "url": "https://github.com/qwelias"
+    },
+    {
+      "name": "ExE Boss",
+      "url": "https://github.com/ExE-Boss"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for Node.js",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/node",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/node"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.7",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "42364b7d4d815f35a5adce5277b009c6550fdef6d27f37f53495d2228ea1cd7e",
+  "version": "12.20.28"
 }
Index: trip-planner-front/node_modules/@types/parse-json/package.json
===================================================================
--- trip-planner-front/node_modules/@types/parse-json/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/parse-json/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,55 @@
 {
+  "_args": [
+    [
+      "@types/parse-json@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/parse-json@4.0.0",
+  "_id": "@types/parse-json@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
+  "_location": "/@types/parse-json",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/parse-json@4.0.0",
     "name": "@types/parse-json",
-    "version": "4.0.0",
-    "description": "TypeScript definitions for parse-json",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "mrmlnc",
-            "url": "https://github.com/mrmlnc",
-            "githubUsername": "mrmlnc"
-        }
-    ],
-    "main": "",
-    "repository": {
-        "type": "git",
-        "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "68b3120a3ffa0ae0c978a90b74a1e50adc0340a9d11f17cc1efb7bf2186e7751",
-    "typeScriptVersion": "2.0"
+    "escapedName": "@types%2fparse-json",
+    "scope": "@types",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/cosmiconfig"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "mrmlnc",
+      "url": "https://github.com/mrmlnc"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for parse-json",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/parse-json",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+  },
+  "scripts": {},
+  "typeScriptVersion": "2.0",
+  "typesPublisherContentHash": "68b3120a3ffa0ae0c978a90b74a1e50adc0340a9d11f17cc1efb7bf2186e7751",
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/@types/source-list-map/package.json
===================================================================
--- trip-planner-front/node_modules/@types/source-list-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/source-list-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,55 @@
 {
+  "_args": [
+    [
+      "@types/source-list-map@0.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/source-list-map@0.1.2",
+  "_id": "@types/source-list-map@0.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+  "_location": "/@types/source-list-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/source-list-map@0.1.2",
     "name": "@types/source-list-map",
-    "version": "0.1.2",
-    "description": "TypeScript definitions for source-list-map",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "e-cloud",
-            "url": "https://github.com/e-cloud"
-        }
-    ],
-    "main": "",
-    "repository": {
-        "type": "git",
-        "url": "https://www.github.com/DefinitelyTyped/DefinitelyTyped.git"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "typesPublisherContentHash": "5f6375ac4dc8a29e535bfbe3201cb00cbe1ab108d86918f8fd8aeea32f7ae45f",
-    "typeScriptVersion": "2.0"
+    "escapedName": "@types%2fsource-list-map",
+    "scope": "@types",
+    "rawSpec": "0.1.2",
+    "saveSpec": null,
+    "fetchSpec": "0.1.2"
+  },
+  "_requiredBy": [
+    "/@types/webpack-sources"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+  "_spec": "0.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "e-cloud",
+      "url": "https://github.com/e-cloud"
+    }
+  ],
+  "dependencies": {},
+  "description": "TypeScript definitions for source-list-map",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/source-list-map",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git"
+  },
+  "scripts": {},
+  "typeScriptVersion": "2.0",
+  "typesPublisherContentHash": "5f6375ac4dc8a29e535bfbe3201cb00cbe1ab108d86918f8fd8aeea32f7ae45f",
+  "version": "0.1.2"
 }
Index: trip-planner-front/node_modules/@types/webpack-sources/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/@types/webpack-sources/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/webpack-sources/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/@types/webpack-sources/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/@types/webpack-sources"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/@types/webpack-sources/package.json
===================================================================
--- trip-planner-front/node_modules/@types/webpack-sources/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@types/webpack-sources/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,65 @@
 {
+  "_args": [
+    [
+      "@types/webpack-sources@0.1.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@types/webpack-sources@0.1.9",
+  "_id": "@types/webpack-sources@0.1.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==",
+  "_location": "/@types/webpack-sources",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@types/webpack-sources@0.1.9",
     "name": "@types/webpack-sources",
-    "version": "0.1.9",
-    "description": "TypeScript definitions for webpack-sources",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webpack-sources",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "e-cloud",
-            "url": "https://github.com/e-cloud",
-            "githubUsername": "e-cloud"
-        },
-        {
-            "name": "Chris Eppstein",
-            "url": "https://github.com/chriseppstein",
-            "githubUsername": "chriseppstein"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/webpack-sources"
+    "escapedName": "@types%2fwebpack-sources",
+    "scope": "@types",
+    "rawSpec": "0.1.9",
+    "saveSpec": null,
+    "fetchSpec": "0.1.9"
+  },
+  "_requiredBy": [
+    "/license-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz",
+  "_spec": "0.1.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "contributors": [
+    {
+      "name": "e-cloud",
+      "url": "https://github.com/e-cloud"
     },
-    "scripts": {},
-    "dependencies": {
-        "@types/node": "*",
-        "@types/source-list-map": "*",
-        "source-map": "^0.6.1"
-    },
-    "typesPublisherContentHash": "2f6824e3ab2a4c3f20b781ec6d29738b29afd7edf09d1e1dfd30221beaa37d4a",
-    "typeScriptVersion": "3.6"
+    {
+      "name": "Chris Eppstein",
+      "url": "https://github.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "@types/node": "*",
+    "@types/source-list-map": "*",
+    "source-map": "^0.6.1"
+  },
+  "description": "TypeScript definitions for webpack-sources",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/webpack-sources",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/webpack-sources",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/webpack-sources"
+  },
+  "scripts": {},
+  "typeScriptVersion": "3.6",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "2f6824e3ab2a4c3f20b781ec6d29738b29afd7edf09d1e1dfd30221beaa37d4a",
+  "version": "0.1.9"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/ast/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/ast/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/ast/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,50 @@
 {
-  "name": "@webassemblyjs/ast",
-  "version": "1.11.1",
-  "description": "AST utils for webassemblyjs",
-  "keywords": [
-    "webassembly",
-    "javascript",
-    "ast"
+  "_args": [
+    [
+      "@webassemblyjs/ast@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "author": "Sven Sauleau",
-  "license": "MIT",
+  "_development": true,
+  "_from": "@webassemblyjs/ast@1.11.1",
+  "_id": "@webassemblyjs/ast@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
+  "_location": "/@webassemblyjs/ast",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/ast@1.11.1",
+    "name": "@webassemblyjs/ast",
+    "escapedName": "@webassemblyjs%2fast",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/helper-wasm-section",
+    "/@webassemblyjs/wasm-edit",
+    "/@webassemblyjs/wasm-gen",
+    "/@webassemblyjs/wasm-opt",
+    "/@webassemblyjs/wasm-parser",
+    "/@webassemblyjs/wast-printer",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "dependencies": {
     "@webassemblyjs/helper-numbers": "1.11.1",
     "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
+  "description": "AST utils for webassemblyjs",
   "devDependencies": {
     "@webassemblyjs/helper-test-framework": "1.11.1",
@@ -29,4 +53,22 @@
     "mamacro": "^0.0.7"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "keywords": [
+    "webassembly",
+    "javascript",
+    "ast"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/ast",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/floating-point-hex-parser/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/floating-point-hex-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/floating-point-hex-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,60 @@
 {
-  "name": "@webassemblyjs/floating-point-hex-parser",
-  "scripts": {
-    "build-fuzzer": "[ -f ./test/fuzzing/parse.out ] || gcc ./test/fuzzing/parse.c -o ./test/fuzzing/parse.out -lm -Wall"
+  "_args": [
+    [
+      "@webassemblyjs/floating-point-hex-parser@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/floating-point-hex-parser@1.11.1",
+  "_id": "@webassemblyjs/floating-point-hex-parser@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
+  "_location": "/@webassemblyjs/floating-point-hex-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/floating-point-hex-parser@1.11.1",
+    "name": "@webassemblyjs/floating-point-hex-parser",
+    "escapedName": "@webassemblyjs%2ffloating-point-hex-parser",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/@webassemblyjs/helper-numbers"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mauro Bringolf"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
-  "version": "1.11.1",
   "description": "A function to parse floating point hexadecimal strings as defined by the WebAssembly specification",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
   "keywords": [
     "webassembly",
     "floating-point"
   ],
-  "author": "Mauro Bringolf",
   "license": "MIT",
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/floating-point-hex-parser",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "build-fuzzer": "[ -f ./test/fuzzing/parse.out ] || gcc ./test/fuzzing/parse.c -o ./test/fuzzing/parse.out -lm -Wall"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/helper-api-error/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/helper-api-error/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/helper-api-error/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,55 @@
 {
-  "name": "@webassemblyjs/helper-api-error",
-  "version": "1.11.1",
+  "_args": [
+    [
+      "@webassemblyjs/helper-api-error@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/helper-api-error@1.11.1",
+  "_id": "@webassemblyjs/helper-api-error@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
+  "_location": "/@webassemblyjs/helper-api-error",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/helper-api-error@1.11.1",
+    "name": "@webassemblyjs/helper-api-error",
+    "escapedName": "@webassemblyjs%2fhelper-api-error",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/helper-numbers",
+    "/@webassemblyjs/wasm-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "description": "Common API errors",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
   "main": "lib/index.js",
   "module": "esm/index.js",
-  "author": "Sven Sauleau",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git",
-    "directory": "packages/helper-api-error"
-  },
+  "name": "@webassemblyjs/helper-api-error",
   "publishConfig": {
     "access": "public"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git",
+    "directory": "packages/helper-api-error"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/helper-buffer/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/helper-buffer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/helper-buffer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,62 @@
 {
-  "name": "@webassemblyjs/helper-buffer",
-  "version": "1.11.1",
+  "_args": [
+    [
+      "@webassemblyjs/helper-buffer@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/helper-buffer@1.11.1",
+  "_id": "@webassemblyjs/helper-buffer@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
+  "_location": "/@webassemblyjs/helper-buffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/helper-buffer@1.11.1",
+    "name": "@webassemblyjs/helper-buffer",
+    "escapedName": "@webassemblyjs%2fhelper-buffer",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/helper-wasm-section",
+    "/@webassemblyjs/wasm-edit",
+    "/@webassemblyjs/wasm-opt"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "description": "Buffer manipulation utility",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "author": "Sven Sauleau",
-  "license": "MIT",
   "devDependencies": {
     "@webassemblyjs/wasm-parser": "1.11.1",
     "jest-diff": "^24.0.0"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/helper-buffer",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/helper-numbers/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/helper-numbers/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/helper-numbers/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,38 @@
 {
-  "name": "@webassemblyjs/helper-numbers",
-  "version": "1.11.1",
-  "description": "Number parsing utility",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/helper-numbers@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/helper-numbers@1.11.1",
+  "_id": "@webassemblyjs/helper-numbers@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
+  "_location": "/@webassemblyjs/helper-numbers",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/helper-numbers@1.11.1",
+    "name": "@webassemblyjs/helper-numbers",
+    "escapedName": "@webassemblyjs%2fhelper-numbers",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/@webassemblyjs/ast"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
   "dependencies": {
@@ -20,6 +41,21 @@
     "@xtuc/long": "4.2.2"
   },
-  "author": "Sven Sauleau",
+  "description": "Number parsing utility",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
   "license": "MIT",
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/helper-numbers",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/helper-wasm-bytecode/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/helper-wasm-bytecode/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/helper-wasm-bytecode/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,60 @@
 {
-  "name": "@webassemblyjs/helper-wasm-bytecode",
-  "version": "1.11.1",
+  "_args": [
+    [
+      "@webassemblyjs/helper-wasm-bytecode@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/helper-wasm-bytecode@1.11.1",
+  "_id": "@webassemblyjs/helper-wasm-bytecode@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
+  "_location": "/@webassemblyjs/helper-wasm-bytecode",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/helper-wasm-bytecode@1.11.1",
+    "name": "@webassemblyjs/helper-wasm-bytecode",
+    "escapedName": "@webassemblyjs%2fhelper-wasm-bytecode",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/ast",
+    "/@webassemblyjs/helper-wasm-section",
+    "/@webassemblyjs/wasm-edit",
+    "/@webassemblyjs/wasm-gen",
+    "/@webassemblyjs/wasm-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "description": "WASM's Bytecode constants",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
   "main": "lib/index.js",
   "module": "esm/index.js",
+  "name": "@webassemblyjs/helper-wasm-bytecode",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/helper-wasm-section/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/helper-wasm-section/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/helper-wasm-section/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,39 @@
 {
-  "name": "@webassemblyjs/helper-wasm-section",
-  "version": "1.11.1",
-  "description": "",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/helper-wasm-section@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/helper-wasm-section@1.11.1",
+  "_id": "@webassemblyjs/helper-wasm-section@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
+  "_location": "/@webassemblyjs/helper-wasm-section",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/helper-wasm-section@1.11.1",
+    "name": "@webassemblyjs/helper-wasm-section",
+    "escapedName": "@webassemblyjs%2fhelper-wasm-section",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-edit"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
   "dependencies": {
     "@webassemblyjs/ast": "1.11.1",
@@ -23,7 +42,24 @@
     "@webassemblyjs/wasm-gen": "1.11.1"
   },
+  "description": "",
   "devDependencies": {
     "@webassemblyjs/wasm-parser": "1.11.1"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/helper-wasm-section",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/ieee754/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/ieee754/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/ieee754/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,58 @@
 {
-  "name": "@webassemblyjs/ieee754",
-  "version": "1.11.1",
-  "description": "IEEE754 decoder and encoder",
-  "license": "MIT",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/ieee754@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/ieee754@1.11.1",
+  "_id": "@webassemblyjs/ieee754@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
+  "_location": "/@webassemblyjs/ieee754",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/ieee754@1.11.1",
+    "name": "@webassemblyjs/ieee754",
+    "escapedName": "@webassemblyjs%2fieee754",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git",
-    "directory": "packages/ieee754"
-  },
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-gen",
+    "/@webassemblyjs/wasm-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
   "dependencies": {
     "@xtuc/ieee754": "^1.2.0"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "description": "IEEE754 decoder and encoder",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/ieee754",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git",
+    "directory": "packages/ieee754"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/leb128/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/leb128/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/leb128/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,58 @@
 {
-  "name": "@webassemblyjs/leb128",
-  "version": "1.11.1",
-  "description": "LEB128 decoder and encoder",
-  "license": "Apache-2.0",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/leb128@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/leb128@1.11.1",
+  "_id": "@webassemblyjs/leb128@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
+  "_location": "/@webassemblyjs/leb128",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/leb128@1.11.1",
+    "name": "@webassemblyjs/leb128",
+    "escapedName": "@webassemblyjs%2fleb128",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git",
-    "directory": "packages/leb128"
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-gen",
+    "/@webassemblyjs/wasm-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
   "dependencies": {
     "@xtuc/long": "4.2.2"
   },
+  "description": "LEB128 decoder and encoder",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "Apache-2.0",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/leb128",
   "publishConfig": {
     "access": "public"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git",
+    "directory": "packages/leb128"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/utf8/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/utf8/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/utf8/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,57 @@
 {
-  "name": "@webassemblyjs/utf8",
-  "version": "1.11.1",
+  "_args": [
+    [
+      "@webassemblyjs/utf8@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/utf8@1.11.1",
+  "_id": "@webassemblyjs/utf8@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
+  "_location": "/@webassemblyjs/utf8",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/utf8@1.11.1",
+    "name": "@webassemblyjs/utf8",
+    "escapedName": "@webassemblyjs%2futf8",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-gen",
+    "/@webassemblyjs/wasm-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "description": "UTF8 encoder/decoder for WASM",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
   "main": "lib/index.js",
   "module": "esm/index.js",
+  "name": "@webassemblyjs/utf8",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "author": "Sven Sauleau",
-  "license": "MIT",
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/wasm-edit/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/wasm-edit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/wasm-edit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,39 @@
 {
-  "name": "@webassemblyjs/wasm-edit",
-  "version": "1.11.1",
-  "description": "",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/wasm-edit@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/wasm-edit@1.11.1",
+  "_id": "@webassemblyjs/wasm-edit@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
+  "_location": "/@webassemblyjs/wasm-edit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/wasm-edit@1.11.1",
+    "name": "@webassemblyjs/wasm-edit",
+    "escapedName": "@webassemblyjs%2fwasm-edit",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
   "dependencies": {
     "@webassemblyjs/ast": "1.11.1",
@@ -27,7 +46,24 @@
     "@webassemblyjs/wast-printer": "1.11.1"
   },
+  "description": "> Rewrite a WASM binary",
   "devDependencies": {
     "@webassemblyjs/helper-test-framework": "1.11.1"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/wasm-edit",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/wasm-gen/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/wasm-gen/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/wasm-gen/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "@webassemblyjs/wasm-gen",
-  "version": "1.11.1",
-  "description": "WebAssembly binary format printer",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/wasm-gen@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/wasm-gen@1.11.1",
+  "_id": "@webassemblyjs/wasm-gen@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
+  "_location": "/@webassemblyjs/wasm-gen",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/wasm-gen@1.11.1",
+    "name": "@webassemblyjs/wasm-gen",
+    "escapedName": "@webassemblyjs%2fwasm-gen",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/@webassemblyjs/helper-wasm-section",
+    "/@webassemblyjs/wasm-edit",
+    "/@webassemblyjs/wasm-opt"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
   "dependencies": {
     "@webassemblyjs/ast": "1.11.1",
@@ -24,4 +45,21 @@
     "@webassemblyjs/utf8": "1.11.1"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "description": "WebAssembly binary format printer",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/wasm-gen",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/wasm-opt/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/wasm-opt/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/wasm-opt/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,39 @@
 {
-  "name": "@webassemblyjs/wasm-opt",
-  "version": "1.11.1",
-  "description": "",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+  "_args": [
+    [
+      "@webassemblyjs/wasm-opt@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/wasm-opt@1.11.1",
+  "_id": "@webassemblyjs/wasm-opt@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
+  "_location": "/@webassemblyjs/wasm-opt",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/wasm-opt@1.11.1",
+    "name": "@webassemblyjs/wasm-opt",
+    "escapedName": "@webassemblyjs%2fwasm-opt",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-edit"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
   "dependencies": {
     "@webassemblyjs/ast": "1.11.1",
@@ -23,4 +42,21 @@
     "@webassemblyjs/wasm-parser": "1.11.1"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "description": "",
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/wasm-opt",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/wasm-parser/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/wasm-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/wasm-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "@webassemblyjs/wasm-parser",
-  "version": "1.11.1",
-  "keywords": [
-    "webassembly",
-    "javascript",
-    "ast",
-    "parser",
-    "wasm"
+  "_args": [
+    [
+      "@webassemblyjs/wasm-parser@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "description": "WebAssembly binary format parser",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
-  "scripts": {
-    "test": "mocha"
+  "_development": true,
+  "_from": "@webassemblyjs/wasm-parser@1.11.1",
+  "_id": "@webassemblyjs/wasm-parser@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
+  "_location": "/@webassemblyjs/wasm-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/wasm-parser@1.11.1",
+    "name": "@webassemblyjs/wasm-parser",
+    "escapedName": "@webassemblyjs%2fwasm-parser",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-edit",
+    "/@webassemblyjs/wasm-opt",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
   "dependencies": {
     "@webassemblyjs/ast": "1.11.1",
@@ -25,11 +46,5 @@
     "@webassemblyjs/utf8": "1.11.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
+  "description": "WebAssembly binary format parser",
   "devDependencies": {
     "@webassemblyjs/helper-buffer": "1.11.1",
@@ -41,4 +56,27 @@
     "wabt": "1.0.12"
   },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
+  "keywords": [
+    "webassembly",
+    "javascript",
+    "ast",
+    "parser",
+    "wasm"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/wasm-parser",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@webassemblyjs/wast-printer/package.json
===================================================================
--- trip-planner-front/node_modules/@webassemblyjs/wast-printer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@webassemblyjs/wast-printer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,50 @@
 {
-  "name": "@webassemblyjs/wast-printer",
-  "version": "1.11.1",
+  "_args": [
+    [
+      "@webassemblyjs/wast-printer@1.11.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@webassemblyjs/wast-printer@1.11.1",
+  "_id": "@webassemblyjs/wast-printer@1.11.1",
+  "_inBundle": false,
+  "_integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
+  "_location": "/@webassemblyjs/wast-printer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@webassemblyjs/wast-printer@1.11.1",
+    "name": "@webassemblyjs/wast-printer",
+    "escapedName": "@webassemblyjs%2fwast-printer",
+    "scope": "@webassemblyjs",
+    "rawSpec": "1.11.1",
+    "saveSpec": null,
+    "fetchSpec": "1.11.1"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/wasm-edit"
+  ],
+  "_resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+  "_spec": "1.11.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau"
+  },
+  "bugs": {
+    "url": "https://github.com/xtuc/webassemblyjs/issues"
+  },
+  "dependencies": {
+    "@webassemblyjs/ast": "1.11.1",
+    "@xtuc/long": "4.2.2"
+  },
   "description": "WebAssembly text format printer",
-  "main": "lib/index.js",
-  "module": "esm/index.js",
+  "devDependencies": {
+    "@webassemblyjs/helper-test-framework": "1.11.1",
+    "@webassemblyjs/wast-parser": "1.11.1"
+  },
+  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b",
+  "homepage": "https://github.com/xtuc/webassemblyjs#readme",
   "keywords": [
     "webassembly",
@@ -13,24 +55,18 @@
     "wast"
   ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "esm/index.js",
+  "name": "@webassemblyjs/wast-printer",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/webassemblyjs.git"
+  },
   "scripts": {
     "test": "mocha"
   },
-  "author": "Sven Sauleau",
-  "license": "MIT",
-  "dependencies": {
-    "@webassemblyjs/ast": "1.11.1",
-    "@xtuc/long": "4.2.2"
-  },
-  "devDependencies": {
-    "@webassemblyjs/helper-test-framework": "1.11.1",
-    "@webassemblyjs/wast-parser": "1.11.1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/webassemblyjs.git"
-  },
-  "publishConfig": {
-    "access": "public"
-  },
-  "gitHead": "3f07e2db2031afe0ce686630418c542938c1674b"
+  "version": "1.11.1"
 }
Index: trip-planner-front/node_modules/@xtuc/ieee754/package.json
===================================================================
--- trip-planner-front/node_modules/@xtuc/ieee754/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@xtuc/ieee754/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,33 @@
 {
-  "name": "@xtuc/ieee754",
-  "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object",
-  "version": "1.2.0",
+  "_args": [
+    [
+      "@xtuc/ieee754@1.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@xtuc/ieee754@1.2.0",
+  "_id": "@xtuc/ieee754@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+  "_location": "/@xtuc/ieee754",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@xtuc/ieee754@1.2.0",
+    "name": "@xtuc/ieee754",
+    "escapedName": "@xtuc%2fieee754",
+    "scope": "@xtuc",
+    "rawSpec": "1.2.0",
+    "saveSpec": null,
+    "fetchSpec": "1.2.0"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/ieee754"
+  ],
+  "_resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+  "_spec": "1.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Feross Aboukhadijeh",
@@ -8,15 +35,23 @@
     "url": "http://feross.org"
   },
+  "bugs": {
+    "url": "https://github.com/feross/ieee754/issues"
+  },
   "contributors": [
-    "Romain Beauxis <toots@rastageeks.org>"
+    {
+      "name": "Romain Beauxis",
+      "email": "toots@rastageeks.org"
+    }
   ],
+  "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object",
   "devDependencies": {
+    "@babel/cli": "^7.0.0-beta.54",
+    "@babel/core": "^7.0.0-beta.54",
+    "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.54",
     "airtap": "0.0.7",
     "standard": "*",
-    "tape": "^4.0.0",
-    "@babel/cli": "^7.0.0-beta.54",
-    "@babel/core": "^7.0.0-beta.54",
-    "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.54"
+    "tape": "^4.0.0"
   },
+  "homepage": "https://github.com/feross/ieee754#readme",
   "keywords": [
     "IEEE 754",
@@ -29,4 +64,6 @@
   "main": "dist/index.cjs.js",
   "module": "index.js",
+  "name": "@xtuc/ieee754",
+  "prepublish": "babel --plugins @babel/plugin-transform-modules-commonjs index.js -o dist/index.cjs.js",
   "repository": {
     "type": "git",
@@ -39,4 +76,4 @@
     "test-node": "tape test/*.js"
   },
-  "prepublish": "babel --plugins @babel/plugin-transform-modules-commonjs index.js -o dist/index.cjs.js"
+  "version": "1.2.0"
 }
Index: trip-planner-front/node_modules/@xtuc/long/package.json
===================================================================
--- trip-planner-front/node_modules/@xtuc/long/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@xtuc/long/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,72 @@
 {
+  "_args": [
+    [
+      "@xtuc/long@4.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@xtuc/long@4.2.2",
+  "_id": "@xtuc/long@4.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+  "_location": "/@xtuc/long",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@xtuc/long@4.2.2",
     "name": "@xtuc/long",
-    "version": "4.2.2",
-    "author": "Daniel Wirtz <dcode@dcode.io>",
-    "description": "A Long class for representing a 64-bit two's-complement integer value.",
-    "main": "src/long.js",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/dcodeIO/long.js.git"
-    },
-    "bugs": {
-        "url": "https://github.com/dcodeIO/long.js/issues"
-    },
-    "keywords": [
-        "math"
-    ],
-    "dependencies": {},
-    "devDependencies": {
-        "webpack": "^3.10.0"
-    },
-    "license": "Apache-2.0",
-    "scripts": {
-        "build": "webpack",
-        "test": "node tests"
-    },
-    "files": [
-        "index.js",
-        "LICENSE",
-        "README.md",
-        "src/long.js",
-        "dist/long.js",
-        "dist/long.js.map",
-        "index.d.ts"
-    ],
-    "types": "index.d.ts"
+    "escapedName": "@xtuc%2flong",
+    "scope": "@xtuc",
+    "rawSpec": "4.2.2",
+    "saveSpec": null,
+    "fetchSpec": "4.2.2"
+  },
+  "_requiredBy": [
+    "/@webassemblyjs/helper-numbers",
+    "/@webassemblyjs/leb128",
+    "/@webassemblyjs/wast-printer"
+  ],
+  "_resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+  "_spec": "4.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Daniel Wirtz",
+    "email": "dcode@dcode.io"
+  },
+  "bugs": {
+    "url": "https://github.com/dcodeIO/long.js/issues"
+  },
+  "dependencies": {},
+  "description": "A Long class for representing a 64-bit two's-complement integer value.",
+  "devDependencies": {
+    "webpack": "^3.10.0"
+  },
+  "files": [
+    "index.js",
+    "LICENSE",
+    "README.md",
+    "src/long.js",
+    "dist/long.js",
+    "dist/long.js.map",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/dcodeIO/long.js#readme",
+  "keywords": [
+    "math"
+  ],
+  "license": "Apache-2.0",
+  "main": "src/long.js",
+  "name": "@xtuc/long",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/dcodeIO/long.js.git"
+  },
+  "scripts": {
+    "build": "webpack",
+    "test": "node tests"
+  },
+  "types": "index.d.ts",
+  "version": "4.2.2"
 }
Index: trip-planner-front/node_modules/@yarnpkg/lockfile/package.json
===================================================================
--- trip-planner-front/node_modules/@yarnpkg/lockfile/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/@yarnpkg/lockfile/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,34 @@
 {
-  "name": "@yarnpkg/lockfile",
-  "version": "1.1.0",
+  "_args": [
+    [
+      "@yarnpkg/lockfile@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "@yarnpkg/lockfile@1.1.0",
+  "_id": "@yarnpkg/lockfile@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+  "_location": "/@yarnpkg/lockfile",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@yarnpkg/lockfile@1.1.0",
+    "name": "@yarnpkg/lockfile",
+    "escapedName": "@yarnpkg%2flockfile",
+    "scope": "@yarnpkg",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "description": "The parser/stringifier for Yarn lockfiles.",
-  "main": "index.js",
-  "repository": "https://github.com/yarnpkg/yarn/blob/master/packages/lockfile",
   "keywords": [
     "yarn",
@@ -12,4 +38,11 @@
     "npm"
   ],
-  "license": "BSD-2-Clause"
+  "license": "BSD-2-Clause",
+  "main": "index.js",
+  "name": "@yarnpkg/lockfile",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/yarnpkg/yarn/blob/master/packages/lockfile"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/__ngcc_entry_points__.json
===================================================================
--- trip-planner-front/node_modules/__ngcc_entry_points__.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/__ngcc_entry_points__.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ngccVersion":"12.2.9","configFileHash":"6883213aec2e6448f60915f864b10646a78045af10f17ba40f81f18dd7c1b8e7","lockFileHash":"eb5e6f19add9fe32bb86fea9ba79ae076a21debdc350e08aaf23a1c7a8621df5","entryPointPaths":[["@ampproject/remapping","@ampproject/remapping"],["@angular/animations","@angular/animations"],["@angular/animations","@angular/animations/browser",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core"]],["@angular/animations","@angular/animations/browser/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations/browser"]],["@angular/cdk","@angular/cdk"],["@angular/cdk","@angular/cdk/a11y",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/observers"]],["@angular/cdk","@angular/cdk/accordion",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/cdk","@angular/cdk/bidi",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/cdk","@angular/cdk/clipboard",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core"]],["@angular/cdk","@angular/cdk/coercion"],["@angular/cdk","@angular/cdk/collections",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core"]],["@angular/cdk","@angular/cdk/drag-drop",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi"]],["@angular/cdk","@angular/cdk/keycodes"],["@angular/cdk","@angular/cdk/layout",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform"]],["@angular/cdk","@angular/cdk/observers",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/cdk","@angular/cdk/overlay",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes"]],["@angular/cdk","@angular/cdk/platform",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/cdk","@angular/cdk/portal",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/cdk","@angular/cdk/scrolling",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections"]],["@angular/cdk","@angular/cdk/stepper",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/cdk","@angular/cdk/table",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/cdk","@angular/cdk/testing"],["@angular/cdk","@angular/cdk/testing/protractor"],["@angular/cdk","@angular/cdk/testing/selenium-webdriver"],["@angular/cdk","@angular/cdk/testing/testbed"],["@angular/cdk","@angular/cdk/text-field",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/cdk","@angular/cdk/tree",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y"]],["@angular/cli","@angular/cli"],["@angular/common","@angular/common",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/common","@angular/common/http",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/common","@angular/common/http/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common/http","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/common","@angular/common/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/common","@angular/common/upgrade",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core"],["@angular/upgrade/static"]],["@angular/compiler","@angular/compiler"],["@angular/compiler","@angular/compiler/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/compiler"]],["@angular/compiler-cli","@angular/compiler-cli"],["@angular/core","@angular/core",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/core","@angular/core/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/tslib","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/compiler"]],["@angular/forms","@angular/forms",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/material","@angular/material"],["@angular/material","@angular/material/autocomplete",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/material","@angular/material/autocomplete/testing"],["@angular/material","@angular/material/badge",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations"]],["@angular/material","@angular/material/badge/testing"],["@angular/material","@angular/material/bottom-sheet",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/layout","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/material","@angular/material/bottom-sheet/testing"],["@angular/material","@angular/material/button",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion"]],["@angular/material","@angular/material/button/testing"],["@angular/material","@angular/material/button-toggle",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core"]],["@angular/material","@angular/material/button-toggle/testing"],["@angular/material","@angular/material/card",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core"]],["@angular/material","@angular/material/card/testing"],["@angular/material","@angular/material/checkbox",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/observers"]],["@angular/material","@angular/material/checkbox/testing"],["@angular/material","@angular/material/chips",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field"]],["@angular/material","@angular/material/chips/testing"],["@angular/material","@angular/material/core",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms"]],["@angular/material","@angular/material/core/testing"],["@angular/material","@angular/material/datepicker",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/button","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/input"]],["@angular/material","@angular/material/datepicker/testing"],["@angular/material","@angular/material/dialog",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes"]],["@angular/material","@angular/material/dialog/testing"],["@angular/material","@angular/material/divider",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core"]],["@angular/material","@angular/material/divider/testing"],["@angular/material","@angular/material/expansion",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/accordion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections"]],["@angular/material","@angular/material/expansion/testing"],["@angular/material","@angular/material/form-field",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/observers","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms"]],["@angular/material","@angular/material/form-field/testing"],["@angular/material","@angular/material/form-field/testing/control"],["@angular/material","@angular/material/grid-list",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi"]],["@angular/material","@angular/material/grid-list/testing"],["@angular/material","@angular/material/icon",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common/http","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser"]],["@angular/material","@angular/material/icon/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/tslib","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/testing","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/icon","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/material","@angular/material/input",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/text-field","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/material","@angular/material/input/testing"],["@angular/material","@angular/material/list",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/divider"]],["@angular/material","@angular/material/list/testing"],["@angular/material","@angular/material/menu",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling"]],["@angular/material","@angular/material/menu/testing"],["@angular/material","@angular/material/paginator",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/button","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/select","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/tooltip","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field"]],["@angular/material","@angular/material/paginator/testing"],["@angular/material","@angular/material/progress-bar",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/material","@angular/material/progress-bar/testing"],["@angular/material","@angular/material/progress-spinner",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations"]],["@angular/material","@angular/material/progress-spinner/testing"],["@angular/material","@angular/material/radio",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations"]],["@angular/material","@angular/material/radio/testing"],["@angular/material","@angular/material/select",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/form-field","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations"]],["@angular/material","@angular/material/select/testing"],["@angular/material","@angular/material/sidenav",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations"]],["@angular/material","@angular/material/sidenav/testing"],["@angular/material","@angular/material/slide-toggle",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/observers","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations"]],["@angular/material","@angular/material/slide-toggle/testing"],["@angular/material","@angular/material/slider",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs"]],["@angular/material","@angular/material/slider/testing"],["@angular/material","@angular/material/snack-bar",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/button","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/layout","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi"]],["@angular/material","@angular/material/snack-bar/testing"],["@angular/material","@angular/material/sort",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/material","@angular/material/sort/testing"],["@angular/material","@angular/material/stepper",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/stepper","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/button","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/icon","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/forms"]],["@angular/material","@angular/material/stepper/testing"],["@angular/material","@angular/material/table",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/table","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/paginator","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/sort"]],["@angular/material","@angular/material/table/testing"],["@angular/material","@angular/material/tabs",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/observers","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes"]],["@angular/material","@angular/material/tabs/testing"],["@angular/material","@angular/material/toolbar",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/material","@angular/material/toolbar/testing"],["@angular/material","@angular/material/tooltip",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/overlay","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/a11y","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/scrolling","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/bidi","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/keycodes","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/layout","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/platform","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/portal","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations"]],["@angular/material","@angular/material/tooltip/testing"],["@angular/material","@angular/material/tree",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/tree","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/material/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/coercion","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/collections","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/material","@angular/material/tree/testing"],["@angular/platform-browser","@angular/platform-browser",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core"]],["@angular/platform-browser","@angular/platform-browser/animations",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/animations/browser","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/platform-browser","@angular/platform-browser/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common"]],["@angular/platform-browser-dynamic","@angular/platform-browser-dynamic",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/compiler","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser"]],["@angular/platform-browser-dynamic","@angular/platform-browser-dynamic/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core/testing","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser-dynamic","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser/testing","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/compiler","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/compiler/testing"]],["@angular/router","@angular/router",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/rxjs/operators"]],["@angular/router","@angular/router/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common/testing","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/router"]],["@angular/router","@angular/router/upgrade",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/common","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/router"],["@angular/upgrade/static"]],["@angular-devkit/architect","@angular-devkit/architect"],["@angular-devkit/build-angular","@angular-devkit/build-angular"],["@angular-devkit/build-optimizer","@angular-devkit/build-optimizer"],["@angular-devkit/build-optimizer","@angular-devkit/build-optimizer/webpack-loader"],["@angular-devkit/build-webpack","@angular-devkit/build-webpack"],["@angular-devkit/core","@angular-devkit/core"],["@angular-devkit/core","@angular-devkit/core/node"],["@angular-devkit/schematics","@angular-devkit/schematics"],["@angular-devkit/schematics","@angular-devkit/schematics/tasks"],["@angular-devkit/schematics","@angular-devkit/schematics/testing"],["@angular-devkit/schematics","@angular-devkit/schematics/tools"],["@assemblyscript/loader","@assemblyscript/loader"],["@babel/parser","@babel/parser"],["@babel/types","@babel/types"],["@fortawesome/angular-fontawesome","@fortawesome/angular-fontawesome",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/platform-browser","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@fortawesome/fontawesome-common-types"]],["@fortawesome/angular-fontawesome","@fortawesome/angular-fontawesome/testing",["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/core","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@fortawesome/angular-fontawesome","C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@fortawesome/fontawesome-svg-core"]],["@fortawesome/fontawesome-common-types","@fortawesome/fontawesome-common-types"],["@fortawesome/fontawesome-svg-core","@fortawesome/fontawesome-svg-core"],["@fortawesome/free-solid-svg-icons","@fortawesome/free-solid-svg-icons"],["@jridgewell/resolve-uri","@jridgewell/resolve-uri"],["@jsdevtools/coverage-istanbul-loader","@jsdevtools/coverage-istanbul-loader"],["@ngtools/webpack","@ngtools/webpack"],["@nodelib/fs.scandir","@nodelib/fs.scandir"],["@nodelib/fs.stat","@nodelib/fs.stat"],["@nodelib/fs.walk","@nodelib/fs.walk"],["@tootallnate/once","@tootallnate/once"],["@types/component-emitter","@types/component-emitter"],["@types/cookie","@types/cookie"],["@types/cors","@types/cors"],["@types/eslint","@types/eslint"],["@types/eslint-scope","@types/eslint-scope"],["@types/estree","@types/estree"],["@types/glob","@types/glob"],["@types/jasmine","@types/jasmine"],["@types/json-schema","@types/json-schema"],["@types/minimatch","@types/minimatch"],["@types/node","@types/node"],["@types/parse-json","@types/parse-json"],["@types/source-list-map","@types/source-list-map"],["@types/webpack-sources","@types/webpack-sources"],["@xtuc/long","@xtuc/long"],["abab","abab"],["acorn","acorn"],["agent-base","agent-base"],["agentkeepalive","agentkeepalive"],["ajv","ajv"],["ajv-formats","ajv-formats"],["ansi-colors","ansi-colors"],["array-flatten","array-flatten"],["base64-js","base64-js"],["big.js","big.js"],["browserslist","browserslist"],["buffer","buffer"],["builtins","builtins"],["canonical-path","canonical-path"],["chalk","chalk"],["chokidar","chokidar"],["chrome-trace-event","chrome-trace-event"],["cliui","cliui"],["colord","colord"],["colorette","colorette"],["commander","commander"],["copy-anything","copy-anything"],["cosmiconfig","cosmiconfig"],["critters","critters"],["css-blank-pseudo","css-blank-pseudo"],["css-color-names","css-color-names"],["css-declaration-sorter","css-declaration-sorter"],["css-has-pseudo","css-has-pseudo"],["css-prefers-color-scheme","css-prefers-color-scheme"],["css-select","css-select"],["css-what","css-what"],["cssdb","cssdb"],["dependency-graph","dependency-graph"],["dom-serializer","dom-serializer"],["domelementtype","domelementtype"],["domhandler","domhandler"],["domutils","domutils"],["emoji-regex","emoji-regex"],["enhanced-resolve","enhanced-resolve"],["entities","entities"],["es-module-lexer","es-module-lexer"],["esbuild","esbuild"],["esbuild-wasm","esbuild-wasm"],["escalade","escalade"],["eventemitter-asyncresource","eventemitter-asyncresource"],["eventemitter3","eventemitter3"],["external-editor","external-editor"],["fast-deep-equal","fast-deep-equal"],["fast-glob","fast-glob"],["fast-json-stable-stringify","fast-json-stable-stringify"],["faye-websocket","faye-websocket"],["flatted","flatted"],["get-caller-file","get-caller-file"],["has","has"],["hdr-histogram-js","hdr-histogram-js"],["html-entities","html-entities"],["http-proxy-agent","http-proxy-agent"],["https-proxy-agent","https-proxy-agent"],["iconv-lite","iconv-lite"],["ieee754","ieee754"],["ipaddr.js","ipaddr.js"],["is-extendable","is-extendable"],["is-plain-object","is-plain-object"],["is-what","is-what"],["isbinaryfile","isbinaryfile"],["isobject","isobject"],["jest-worker","jest-worker"],["json-schema-traverse","json-schema-traverse"],["json5","json5"],["jsonc-parser","jsonc-parser"],["klona","klona"],["license-webpack-plugin","license-webpack-plugin"],["lilconfig","lilconfig"],["lines-and-columns","lines-and-columns"],["log4js","log4js"],["loglevel","loglevel"],["magic-string","magic-string"],["map-age-cleaner","map-age-cleaner"],["mem","mem"],["memfs","memfs"],["nanocolors","nanocolors"],["nanoid","nanoid"],["nanoid","nanoid/async"],["nanoid","nanoid/non-secure"],["nanoid","nanoid/url-alphabet"],["nth-check","nth-check"],["performance-now","performance-now"],["picocolors","picocolors"],["piscina","piscina"],["piscina","piscina/dist"],["portfinder","portfinder"],["postcss","postcss"],["postcss-color-functional-notation","postcss-color-functional-notation"],["postcss-color-hex-alpha","postcss-color-hex-alpha"],["postcss-color-mod-function","postcss-color-mod-function"],["postcss-custom-media","postcss-custom-media"],["postcss-custom-properties","postcss-custom-properties"],["postcss-custom-selectors","postcss-custom-selectors"],["postcss-dir-pseudo-class","postcss-dir-pseudo-class"],["postcss-double-position-gradients","postcss-double-position-gradients"],["postcss-env-function","postcss-env-function"],["postcss-focus-visible","postcss-focus-visible"],["postcss-focus-within","postcss-focus-within"],["postcss-gap-properties","postcss-gap-properties"],["postcss-image-set-function","postcss-image-set-function"],["postcss-lab-function","postcss-lab-function"],["postcss-logical","postcss-logical"],["postcss-overflow-shorthand","postcss-overflow-shorthand"],["postcss-place","postcss-place"],["postcss-preset-env","postcss-preset-env"],["postcss-pseudo-class-any-link","postcss-pseudo-class-any-link"],["postcss-selector-parser","postcss-selector-parser"],["postcss-value-parser","postcss-value-parser"],["primeng","primeng"],["primeng","primeng/accordion"],["primeng","primeng/api"],["primeng","primeng/autocomplete"],["primeng","primeng/avatar"],["primeng","primeng/avatargroup"],["primeng","primeng/badge"],["primeng","primeng/blockui"],["primeng","primeng/breadcrumb"],["primeng","primeng/button"],["primeng","primeng/calendar"],["primeng","primeng/captcha"],["primeng","primeng/card"],["primeng","primeng/carousel"],["primeng","primeng/cascadeselect"],["primeng","primeng/chart"],["primeng","primeng/checkbox"],["primeng","primeng/chip"],["primeng","primeng/chips"],["primeng","primeng/codehighlighter"],["primeng","primeng/colorpicker"],["primeng","primeng/confirmdialog"],["primeng","primeng/confirmpopup"],["primeng","primeng/contextmenu"],["primeng","primeng/dataview"],["primeng","primeng/defer"],["primeng","primeng/dialog"],["primeng","primeng/divider"],["primeng","primeng/dock"],["primeng","primeng/dom"],["primeng","primeng/dragdrop"],["primeng","primeng/dropdown"],["primeng","primeng/dynamicdialog"],["primeng","primeng/editor"],["primeng","primeng/fieldset"],["primeng","primeng/fileupload"],["primeng","primeng/focustrap"],["primeng","primeng/fullcalendar"],["primeng","primeng/galleria"],["primeng","primeng/gmap"],["primeng","primeng/image"],["primeng","primeng/inplace"],["primeng","primeng/inputmask"],["primeng","primeng/inputnumber"],["primeng","primeng/inputswitch"],["primeng","primeng/inputtext"],["primeng","primeng/inputtextarea"],["primeng","primeng/keyfilter"],["primeng","primeng/knob"],["primeng","primeng/lightbox"],["primeng","primeng/listbox"],["primeng","primeng/megamenu"],["primeng","primeng/menu"],["primeng","primeng/menubar"],["primeng","primeng/message"],["primeng","primeng/messages"],["primeng","primeng/multiselect"],["primeng","primeng/orderlist"],["primeng","primeng/organizationchart"],["primeng","primeng/overlaypanel"],["primeng","primeng/paginator"],["primeng","primeng/panel"],["primeng","primeng/panelmenu"],["primeng","primeng/password"],["primeng","primeng/picklist"],["primeng","primeng/progressbar"],["primeng","primeng/progressspinner"],["primeng","primeng/radiobutton"],["primeng","primeng/rating"],["primeng","primeng/ripple"],["primeng","primeng/scrollpanel"],["primeng","primeng/scrolltop"],["primeng","primeng/selectbutton"],["primeng","primeng/sidebar"],["primeng","primeng/skeleton"],["primeng","primeng/slidemenu"],["primeng","primeng/slider"],["primeng","primeng/speeddial"],["primeng","primeng/spinner"],["primeng","primeng/splitbutton"],["primeng","primeng/splitter"],["primeng","primeng/steps"],["primeng","primeng/styleclass"],["primeng","primeng/table"],["primeng","primeng/tabmenu"],["primeng","primeng/tabview"],["primeng","primeng/tag"],["primeng","primeng/terminal"],["primeng","primeng/tieredmenu"],["primeng","primeng/timeline"],["primeng","primeng/toast"],["primeng","primeng/togglebutton"],["primeng","primeng/toolbar"],["primeng","primeng/tooltip"],["primeng","primeng/tree"],["primeng","primeng/treeselect"],["primeng","primeng/treetable"],["primeng","primeng/tristatecheckbox"],["primeng","primeng/utils"],["primeng","primeng/virtualscroller"],["queue-microtask","queue-microtask"],["readdirp","readdirp"],["reflect-metadata","reflect-metadata"],["regex-parser","regex-parser"],["rfdc","rfdc"],["rxjs","rxjs"],["rxjs","rxjs/ajax"],["rxjs","rxjs/fetch"],["rxjs","rxjs/internal-compatibility"],["rxjs","rxjs/operators"],["rxjs","rxjs/testing"],["rxjs","rxjs/webSocket"],["safe-buffer","safe-buffer"],["schema-utils","schema-utils"],["setprototypeof","setprototypeof"],["smart-buffer","smart-buffer"],["socket.io","socket.io"],["socket.io-adapter","socket.io-adapter"],["socket.io-parser","socket.io-parser"],["socks","socks"],["socks-proxy-agent","socks-proxy-agent"],["source-map","source-map"],["source-map-js","source-map-js"],["sourcemap-codec","sourcemap-codec"],["spdy","spdy"],["spdy-transport","spdy-transport"],["stable","stable"],["symbol-observable","symbol-observable"],["tapable","tapable"],["terser","terser"],["terser","terser/bin"],["tree-kill","tree-kill"],["tslib","tslib"],["tweetnacl","tweetnacl"],["type-fest","type-fest"],["typescript","typescript"],["upath","upath"],["uri-js","uri-js"],["vendors","vendors"],["webpack","webpack"],["webpack-merge","webpack-merge"],["websocket-driver","websocket-driver"],["y18n","y18n"],["yaml","yaml"],["yargs","yargs"],["yargs-parser","yargs-parser"],["zone.js","zone.js"]]}
Index: trip-planner-front/node_modules/abab/package.json
===================================================================
--- trip-planner-front/node_modules/abab/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/abab/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,40 @@
 {
-  "name": "abab",
-  "version": "2.0.5",
-  "description": "WHATWG spec-compliant implementations of window.atob and window.btoa.",
-  "main": "index.js",
-  "files": [
-    "index.d.ts",
-    "index.js",
-    "lib/"
+  "_args": [
+    [
+      "abab@2.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "mocha": "mocha test/node",
-    "karma": "karma start",
-    "test": "npm run lint && npm run mocha && npm run karma",
-    "lint": "eslint ."
+  "_development": true,
+  "_from": "abab@2.0.5",
+  "_id": "abab@2.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
+  "_location": "/abab",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "abab@2.0.5",
+    "name": "abab",
+    "escapedName": "abab",
+    "rawSpec": "2.0.5",
+    "saveSpec": null,
+    "fetchSpec": "2.0.5"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/jsdom/abab.git"
+  "_requiredBy": [
+    "/source-map-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
+  "_spec": "2.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jeff Carpenter",
+    "email": "gcarpenterv@gmail.com"
   },
-  "keywords": [
-    "atob",
-    "btoa",
-    "browser"
-  ],
-  "author": "Jeff Carpenter <gcarpenterv@gmail.com>",
-  "license": "BSD-3-Clause",
   "bugs": {
     "url": "https://github.com/jsdom/abab/issues"
   },
-  "homepage": "https://github.com/jsdom/abab#readme",
+  "description": "WHATWG spec-compliant implementations of window.atob and window.btoa.",
   "devDependencies": {
     "eslint": "^4.19.1",
@@ -39,4 +46,29 @@
     "mocha": "^5.1.0",
     "webpack": "^4.5.0"
-  }
+  },
+  "files": [
+    "index.d.ts",
+    "index.js",
+    "lib/"
+  ],
+  "homepage": "https://github.com/jsdom/abab#readme",
+  "keywords": [
+    "atob",
+    "btoa",
+    "browser"
+  ],
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "name": "abab",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jsdom/abab.git"
+  },
+  "scripts": {
+    "karma": "karma start",
+    "lint": "eslint .",
+    "mocha": "mocha test/node",
+    "test": "npm run lint && npm run mocha && npm run karma"
+  },
+  "version": "2.0.5"
 }
Index: trip-planner-front/node_modules/abbrev/package.json
===================================================================
--- trip-planner-front/node_modules/abbrev/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/abbrev/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,40 @@
 {
-  "name": "abbrev",
-  "version": "1.1.1",
+  "_args": [
+    [
+      "abbrev@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "abbrev@1.1.1",
+  "_id": "abbrev@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+  "_location": "/abbrev",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "abbrev@1.1.1",
+    "name": "abbrev",
+    "escapedName": "abbrev",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/nopt"
+  ],
+  "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/abbrev-js/issues"
+  },
   "description": "Like ruby's abbrev module, but in js",
-  "author": "Isaac Z. Schlueter <i@izs.me>",
-  "main": "abbrev.js",
-  "scripts": {
-    "test": "tap test.js --100",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
-  },
-  "repository": "http://github.com/isaacs/abbrev-js",
-  "license": "ISC",
   "devDependencies": {
     "tap": "^10.1"
@@ -18,4 +42,19 @@
   "files": [
     "abbrev.js"
-  ]
+  ],
+  "homepage": "https://github.com/isaacs/abbrev-js#readme",
+  "license": "ISC",
+  "main": "abbrev.js",
+  "name": "abbrev",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test.js --100"
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/accepts/package.json
===================================================================
--- trip-planner-front/node_modules/accepts/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/accepts/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,55 @@
 {
-  "name": "accepts",
-  "description": "Higher-level content negotiation",
-  "version": "1.3.7",
+  "_args": [
+    [
+      "accepts@1.3.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "accepts@1.3.7",
+  "_id": "accepts@1.3.7",
+  "_inBundle": false,
+  "_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+  "_location": "/accepts",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "accepts@1.3.7",
+    "name": "accepts",
+    "escapedName": "accepts",
+    "rawSpec": "1.3.7",
+    "saveSpec": null,
+    "fetchSpec": "1.3.7"
+  },
+  "_requiredBy": [
+    "/compression",
+    "/engine.io",
+    "/express",
+    "/serve-index",
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+  "_spec": "1.3.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/accepts/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "jshttp/accepts",
   "dependencies": {
     "mime-types": "~2.1.24",
     "negotiator": "0.6.2"
   },
+  "description": "Higher-level content negotiation",
   "devDependencies": {
     "deep-equal": "1.0.1",
@@ -25,4 +64,7 @@
     "nyc": "14.0.0"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "LICENSE",
@@ -30,6 +72,16 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/accepts#readme",
+  "keywords": [
+    "content",
+    "negotiation",
+    "accept",
+    "accepts"
+  ],
+  "license": "MIT",
+  "name": "accepts",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/accepts.git"
   },
   "scripts": {
@@ -39,9 +91,4 @@
     "test-travis": "nyc --reporter=text npm test"
   },
-  "keywords": [
-    "content",
-    "negotiation",
-    "accept",
-    "accepts"
-  ]
+  "version": "1.3.7"
 }
Index: trip-planner-front/node_modules/acorn-import-assertions/package.json
===================================================================
--- trip-planner-front/node_modules/acorn-import-assertions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/acorn-import-assertions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,54 @@
 {
-  "name": "acorn-import-assertions",
-  "version": "1.8.0",
+  "_args": [
+    [
+      "acorn-import-assertions@1.8.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "acorn-import-assertions@1.8.0",
+  "_id": "acorn-import-assertions@1.8.0",
+  "_inBundle": false,
+  "_integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
+  "_location": "/acorn-import-assertions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "acorn-import-assertions@1.8.0",
+    "name": "acorn-import-assertions",
+    "escapedName": "acorn-import-assertions",
+    "rawSpec": "1.8.0",
+    "saveSpec": null,
+    "fetchSpec": "1.8.0"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+  "_spec": "1.8.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sven Sauleau",
+    "email": "sven@sauleau.com"
+  },
+  "browserslist": [
+    "maintained node versions"
+  ],
+  "bugs": {
+    "url": "https://github.com/xtuc/acorn-import-assertions/issues"
+  },
   "description": "Support for import assertions in acorn",
-  "main": "lib/index.js",
-  "module": "src/index.js",
+  "devDependencies": {
+    "@babel/cli": "^7.14.8",
+    "@babel/core": "^7.15.0",
+    "@babel/preset-env": "^7.15.0",
+    "@babel/register": "^7.15.3",
+    "acorn": "^8.4.1",
+    "chai": "^4.3.4",
+    "mocha": "^9.1.0",
+    "test262": "github:tc39/test262#47ab262658cd97ae35c9a537808cac18fa4ab567",
+    "test262-parser-runner": "^0.5.0"
+  },
   "exports": {
     ".": {
@@ -13,4 +59,20 @@
     "./": "./"
   },
+  "files": [
+    "lib",
+    "src"
+  ],
+  "homepage": "https://github.com/xtuc/acorn-import-assertions#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "src/index.js",
+  "name": "acorn-import-assertions",
+  "peerDependencies": {
+    "acorn": "^8"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/xtuc/acorn-import-assertions.git"
+  },
   "scripts": {
     "build": "babel ./src --out-dir ./lib && node post-build.js",
@@ -20,30 +82,4 @@
     "watch": "babel ./src --out-dir ./lib --watch"
   },
-  "author": "Sven Sauleau <sven@sauleau.com>",
-  "license": "MIT",
-  "devDependencies": {
-    "@babel/cli": "^7.14.8",
-    "@babel/core": "^7.15.0",
-    "@babel/preset-env": "^7.15.0",
-    "@babel/register": "^7.15.3",
-    "acorn": "^8.4.1",
-    "chai": "^4.3.4",
-    "mocha": "^9.1.0",
-    "test262": "tc39/test262#47ab262658cd97ae35c9a537808cac18fa4ab567",
-    "test262-parser-runner": "^0.5.0"
-  },
-  "peerDependencies": {
-    "acorn": "^8"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/xtuc/acorn-import-assertions"
-  },
-  "browserslist": [
-    "maintained node versions"
-  ],
-  "files": [
-    "lib",
-    "src"
-  ]
+  "version": "1.8.0"
 }
Index: trip-planner-front/node_modules/acorn/package.json
===================================================================
--- trip-planner-front/node_modules/acorn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/acorn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,42 @@
 {
-  "name": "acorn",
+  "_args": [
+    [
+      "acorn@8.5.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "acorn@8.5.0",
+  "_id": "acorn@8.5.0",
+  "_inBundle": false,
+  "_integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+  "_location": "/acorn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "acorn@8.5.0",
+    "name": "acorn",
+    "escapedName": "acorn",
+    "rawSpec": "8.5.0",
+    "saveSpec": null,
+    "fetchSpec": "8.5.0"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+  "_spec": "8.5.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "acorn": "bin/acorn"
+  },
+  "bugs": {
+    "url": "https://github.com/acornjs/acorn/issues"
+  },
   "description": "ECMAScript parser",
-  "homepage": "https://github.com/acornjs/acorn",
-  "main": "dist/acorn.js",
-  "types": "dist/acorn.d.ts",
-  "module": "dist/acorn.mjs",
+  "engines": {
+    "node": ">=0.4.0"
+  },
   "exports": {
     ".": [
@@ -17,30 +50,33 @@
     "./package.json": "./package.json"
   },
-  "version": "8.5.0",
-  "engines": {"node": ">=0.4.0"},
+  "homepage": "https://github.com/acornjs/acorn",
+  "license": "MIT",
+  "main": "dist/acorn.js",
   "maintainers": [
     {
       "name": "Marijn Haverbeke",
       "email": "marijnh@gmail.com",
-      "web": "https://marijnhaverbeke.nl"
+      "url": "https://marijnhaverbeke.nl"
     },
     {
       "name": "Ingvar Stepanyan",
       "email": "me@rreverser.com",
-      "web": "https://rreverser.com/"
+      "url": "https://rreverser.com/"
     },
     {
       "name": "Adrian Heine",
-      "web": "http://adrianheine.de"
+      "url": "http://adrianheine.de"
     }
   ],
+  "module": "dist/acorn.mjs",
+  "name": "acorn",
   "repository": {
     "type": "git",
-    "url": "https://github.com/acornjs/acorn.git"
+    "url": "git+https://github.com/acornjs/acorn.git"
   },
-  "license": "MIT",
   "scripts": {
     "prepare": "cd ..; npm run build:main && npm run build:bin"
   },
-  "bin": {"acorn": "./bin/acorn"}
+  "types": "dist/acorn.d.ts",
+  "version": "8.5.0"
 }
Index: trip-planner-front/node_modules/adjust-sourcemap-loader/package.json
===================================================================
--- trip-planner-front/node_modules/adjust-sourcemap-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/adjust-sourcemap-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,50 @@
 {
-  "name": "adjust-sourcemap-loader",
-  "version": "4.0.0",
+  "_args": [
+    [
+      "adjust-sourcemap-loader@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "adjust-sourcemap-loader@4.0.0",
+  "_id": "adjust-sourcemap-loader@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==",
+  "_location": "/adjust-sourcemap-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "adjust-sourcemap-loader@4.0.0",
+    "name": "adjust-sourcemap-loader",
+    "escapedName": "adjust-sourcemap-loader",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/resolve-url-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "bholloway"
+  },
+  "bugs": {
+    "url": "https://github.com/bholloway/adjust-sourcemap-loader/issues"
+  },
+  "dependencies": {
+    "loader-utils": "^2.0.0",
+    "regex-parser": "^2.2.11"
+  },
   "description": "Webpack loader that adjusts source maps",
-  "main": "index.js",
+  "devDependencies": {
+    "jshint": "^2.12.0"
+  },
   "engines": {
     "node": ">=8.9"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/bholloway/adjust-sourcemap-loader.git"
-  },
+  "homepage": "https://github.com/bholloway/adjust-sourcemap-loader",
   "keywords": [
     "webpack",
@@ -20,19 +56,14 @@
     "adjust"
   ],
-  "author": "bholloway",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/bholloway/adjust-sourcemap-loader/issues"
-  },
-  "homepage": "https://github.com/bholloway/adjust-sourcemap-loader",
-  "dependencies": {
-    "loader-utils": "^2.0.0",
-    "regex-parser": "^2.2.11"
-  },
-  "devDependencies": {
-    "jshint": "^2.12.0"
+  "main": "index.js",
+  "name": "adjust-sourcemap-loader",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/bholloway/adjust-sourcemap-loader.git"
   },
   "scripts": {
     "lint": "jshint index.js lib codec"
-  }
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/agent-base/package.json
===================================================================
--- trip-planner-front/node_modules/agent-base/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/agent-base/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,39 @@
 {
-  "name": "agent-base",
-  "version": "6.0.2",
-  "description": "Turn a function into an `http.Agent` instance",
-  "main": "dist/src/index",
-  "typings": "dist/src/index",
-  "files": [
-    "dist/src",
-    "src"
+  "_args": [
+    [
+      "agent-base@6.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "tsc",
-    "postbuild": "cpy --parents src test '!**/*.ts' dist",
-    "test": "mocha --reporter spec dist/test/*.js",
-    "test-lint": "eslint src --ext .js,.ts",
-    "prepublishOnly": "npm run build"
+  "_development": true,
+  "_from": "agent-base@6.0.2",
+  "_id": "agent-base@6.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+  "_location": "/agent-base",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "agent-base@6.0.2",
+    "name": "agent-base",
+    "escapedName": "agent-base",
+    "rawSpec": "6.0.2",
+    "saveSpec": null,
+    "fetchSpec": "6.0.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/node-agent-base.git"
+  "_requiredBy": [
+    "/http-proxy-agent",
+    "/https-proxy-agent",
+    "/socks-proxy-agent"
+  ],
+  "_resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+  "_spec": "6.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
   },
-  "keywords": [
-    "http",
-    "agent",
-    "base",
-    "barebones",
-    "https"
-  ],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/TooTallNate/node-agent-base/issues"
@@ -36,4 +42,5 @@
     "debug": "4"
   },
+  "description": "Turn a function into an `http.Agent` instance",
   "devDependencies": {
     "@types/debug": "4",
@@ -61,4 +68,33 @@
   "engines": {
     "node": ">= 6.0.0"
-  }
+  },
+  "files": [
+    "dist/src",
+    "src"
+  ],
+  "homepage": "https://github.com/TooTallNate/node-agent-base#readme",
+  "keywords": [
+    "http",
+    "agent",
+    "base",
+    "barebones",
+    "https"
+  ],
+  "license": "MIT",
+  "main": "dist/src/index",
+  "name": "agent-base",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/node-agent-base.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "postbuild": "cpy --parents src test '!**/*.ts' dist",
+    "prebuild": "rimraf dist",
+    "prepublishOnly": "npm run build",
+    "test": "mocha --reporter spec dist/test/*.js",
+    "test-lint": "eslint src --ext .js,.ts"
+  },
+  "typings": "dist/src/index",
+  "version": "6.0.2"
 }
Index: trip-planner-front/node_modules/agentkeepalive/package.json
===================================================================
--- trip-planner-front/node_modules/agentkeepalive/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/agentkeepalive/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,48 @@
 {
-  "name": "agentkeepalive",
-  "version": "4.1.4",
-  "description": "Missing keepalive http.Agent",
-  "main": "index.js",
+  "_args": [
+    [
+      "agentkeepalive@4.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "agentkeepalive@4.1.4",
+  "_id": "agentkeepalive@4.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==",
+  "_location": "/agentkeepalive",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "agentkeepalive@4.1.4",
+    "name": "agentkeepalive",
+    "escapedName": "agentkeepalive",
+    "rawSpec": "4.1.4",
+    "saveSpec": null,
+    "fetchSpec": "4.1.4"
+  },
+  "_requiredBy": [
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz",
+  "_spec": "4.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "fengmk2",
+    "email": "fengmk2@gmail.com",
+    "url": "https://fengmk2.com"
+  },
   "browser": "browser.js",
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "browser.js",
-    "lib"
-  ],
-  "scripts": {
-    "test": "npm run lint && egg-bin test --full-trace",
-    "test-local": "egg-bin test --full-trace",
-    "cov": "cross-env DEBUG=agentkeepalive egg-bin cov --full-trace",
-    "ci": "npm run lint && npm run cov",
-    "lint": "eslint lib test index.js",
-    "autod": "autod"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/node-modules/agentkeepalive.git"
-  },
   "bugs": {
     "url": "https://github.com/node-modules/agentkeepalive/issues"
   },
-  "keywords": [
-    "http",
-    "https",
-    "agent",
-    "keepalive",
-    "agentkeepalive",
-    "HttpAgent",
-    "HttpsAgent"
-  ],
+  "ci": {
+    "type": "github",
+    "os": {
+      "github": "linux"
+    },
+    "version": "8, 10, 12, 14"
+  },
   "dependencies": {
     "debug": "^4.1.0",
@@ -40,4 +50,5 @@
     "humanize-ms": "^1.2.1"
   },
+  "description": "Missing keepalive http.Agent",
   "devDependencies": {
     "autod": "^3.0.1",
@@ -55,12 +66,35 @@
     "node": ">= 8.0.0"
   },
-  "ci": {
-    "type": "github",
-    "os": {
-      "github": "linux"
-    },
-    "version": "8, 10, 12, 14"
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "browser.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/node-modules/agentkeepalive#readme",
+  "keywords": [
+    "http",
+    "https",
+    "agent",
+    "keepalive",
+    "agentkeepalive",
+    "HttpAgent",
+    "HttpsAgent"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "agentkeepalive",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/node-modules/agentkeepalive.git"
   },
-  "author": "fengmk2 <fengmk2@gmail.com> (https://fengmk2.com)",
-  "license": "MIT"
+  "scripts": {
+    "autod": "autod",
+    "ci": "npm run lint && npm run cov",
+    "cov": "cross-env DEBUG=agentkeepalive egg-bin cov --full-trace",
+    "lint": "eslint lib test index.js",
+    "test": "npm run lint && egg-bin test --full-trace",
+    "test-local": "egg-bin test --full-trace"
+  },
+  "version": "4.1.4"
 }
Index: trip-planner-front/node_modules/aggregate-error/package.json
===================================================================
--- trip-planner-front/node_modules/aggregate-error/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/aggregate-error/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,77 @@
 {
-	"name": "aggregate-error",
-	"version": "3.1.0",
-	"description": "Create an error from multiple errors",
-	"license": "MIT",
-	"repository": "sindresorhus/aggregate-error",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"aggregate",
-		"error",
-		"combine",
-		"multiple",
-		"many",
-		"collection",
-		"iterable",
-		"iterator"
-	],
-	"dependencies": {
-		"clean-stack": "^2.0.0",
-		"indent-string": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"tsd": "^0.7.1",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "aggregate-error@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "aggregate-error@3.1.0",
+  "_id": "aggregate-error@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+  "_location": "/aggregate-error",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "aggregate-error@3.1.0",
+    "name": "aggregate-error",
+    "escapedName": "aggregate-error",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/p-map"
+  ],
+  "_resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/aggregate-error/issues"
+  },
+  "dependencies": {
+    "clean-stack": "^2.0.0",
+    "indent-string": "^4.0.0"
+  },
+  "description": "Create an error from multiple errors",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "tsd": "^0.7.1",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/aggregate-error#readme",
+  "keywords": [
+    "aggregate",
+    "error",
+    "combine",
+    "multiple",
+    "many",
+    "collection",
+    "iterable",
+    "iterator"
+  ],
+  "license": "MIT",
+  "name": "aggregate-error",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/aggregate-error.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/ajv-errors/package.json
===================================================================
--- trip-planner-front/node_modules/ajv-errors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ajv-errors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,37 @@
 {
-  "name": "ajv-errors",
-  "version": "1.0.1",
-  "description": "Custom error messages in JSON-Schema for Ajv validator",
-  "main": "index.js",
-  "files": [
-    "lib"
+  "_args": [
+    [
+      "ajv-errors@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib lib",
-    "eslint": "eslint *.js spec",
-    "test-spec": "mocha spec/*.spec.js -R spec",
-    "test-cov": "nyc npm run test-spec",
-    "test": "npm run eslint && npm run build && npm run test-cov",
-    "prepublish": "npm run build"
+  "_development": true,
+  "_from": "ajv-errors@1.0.1",
+  "_id": "ajv-errors@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+  "_location": "/ajv-errors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv-errors@1.0.1",
+    "name": "ajv-errors",
+    "escapedName": "ajv-errors",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/ajv-errors.git"
-  },
-  "keywords": [
-    "ajv",
-    "json-schema",
-    "validator",
-    "error",
-    "messages"
+  "_requiredBy": [
+    "/webpack-dev-server/schema-utils"
   ],
+  "_resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": "",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/ajv-errors/issues"
   },
-  "homepage": "https://github.com/epoberezkin/ajv-errors#readme",
-  "peerDependencies": {
-    "ajv": ">=5.0.0"
-  },
+  "description": "Custom error messages in JSON-Schema for Ajv validator",
   "devDependencies": {
     "ajv": "^5.0.0",
@@ -46,4 +45,18 @@
     "pre-commit": "^1.2.2"
   },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/epoberezkin/ajv-errors#readme",
+  "keywords": [
+    "ajv",
+    "json-schema",
+    "validator",
+    "error",
+    "messages"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ajv-errors",
   "nyc": {
     "exclude": [
@@ -55,4 +68,20 @@
       "text-summary"
     ]
-  }
+  },
+  "peerDependencies": {
+    "ajv": ">=5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/ajv-errors.git"
+  },
+  "scripts": {
+    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib lib",
+    "eslint": "eslint *.js spec",
+    "prepublish": "npm run build",
+    "test": "npm run eslint && npm run build && npm run test-cov",
+    "test-cov": "nyc npm run test-spec",
+    "test-spec": "mocha spec/*.spec.js -R spec"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/ajv-formats/package.json
===================================================================
--- trip-planner-front/node_modules/ajv-formats/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ajv-formats/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,49 +1,42 @@
 {
-  "name": "ajv-formats",
-  "version": "2.1.0",
-  "description": "Format validation for Ajv v7+",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "files": [
-    "src/",
-    "dist/"
+  "_args": [
+    [
+      "ajv-formats@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "build": "tsc",
-    "prettier:write": "prettier --write \"./**/*.{md,json,yaml,js,ts}\"",
-    "prettier:check": "prettier --list-different \"./**/*.{md,json,yaml,js,ts}\"",
-    "eslint": "eslint --ext .ts ./src/**/*",
-    "test-spec": "jest",
-    "test-cov": "jest --coverage",
-    "test": "npm run prettier:check && npm run build && npm run eslint && npm run test-cov",
-    "ci-test": "npm run test"
+  "_development": true,
+  "_from": "ajv-formats@2.1.0",
+  "_id": "ajv-formats@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
+  "_location": "/ajv-formats",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv-formats@2.1.0",
+    "name": "ajv-formats",
+    "escapedName": "ajv-formats",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/ajv-validator/ajv-formats.git"
+  "_requiredBy": [
+    "/@angular-devkit/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "Ajv",
-    "JSON-Schema",
-    "format",
-    "validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/ajv-validator/ajv-formats/issues"
   },
-  "homepage": "https://github.com/ajv-validator/ajv-formats#readme",
   "dependencies": {
     "ajv": "^8.0.0"
   },
-  "peerDependencies": {
-    "ajv": "^8.0.0"
-  },
-  "peerDependenciesMeta": {
-    "ajv": {
-      "optional": true
-    }
-  },
+  "description": "Format validation for Ajv v7+",
   "devDependencies": {
     "@ajv-validator/config": "^0.3.0",
@@ -63,5 +56,9 @@
     "typescript": "^4.0.0"
   },
-  "prettier": "@ajv-validator/config/prettierrc.json",
+  "files": [
+    "src/",
+    "dist/"
+  ],
+  "homepage": "https://github.com/ajv-validator/ajv-formats#readme",
   "husky": {
     "hooks": {
@@ -69,6 +66,40 @@
     }
   },
+  "keywords": [
+    "Ajv",
+    "JSON-Schema",
+    "format",
+    "validation"
+  ],
+  "license": "MIT",
   "lint-staged": {
     "*.{md,json,yaml,js,ts}": "prettier --write"
-  }
+  },
+  "main": "dist/index.js",
+  "name": "ajv-formats",
+  "peerDependencies": {
+    "ajv": "^8.0.0"
+  },
+  "peerDependenciesMeta": {
+    "ajv": {
+      "optional": true
+    }
+  },
+  "prettier": "@ajv-validator/config/prettierrc.json",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv-formats.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "ci-test": "npm run test",
+    "eslint": "eslint --ext .ts ./src/**/*",
+    "prettier:check": "prettier --list-different \"./**/*.{md,json,yaml,js,ts}\"",
+    "prettier:write": "prettier --write \"./**/*.{md,json,yaml,js,ts}\"",
+    "test": "npm run prettier:check && npm run build && npm run eslint && npm run test-cov",
+    "test-cov": "jest --coverage",
+    "test-spec": "jest"
+  },
+  "types": "dist/index.d.ts",
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/ajv/package.json
===================================================================
--- trip-planner-front/node_modules/ajv/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ajv/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,60 +1,43 @@
 {
-  "name": "ajv",
-  "version": "8.6.2",
-  "description": "Another JSON Schema Validator",
-  "main": "dist/ajv.js",
-  "types": "dist/ajv.d.ts",
-  "files": [
-    "lib/",
-    "dist/",
-    ".runkit_example.js"
+  "_args": [
+    [
+      "ajv@8.6.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint \"lib/**/*.ts\" \"spec/**/*.*s\" scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
-    "prettier:write": "prettier --write \"./**/*.{json,yaml,js,ts}\"",
-    "prettier:check": "prettier --list-different \"./**/*.{json,yaml,js,ts}\"",
-    "test-spec": "cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot -g \\(.recursiveRef.with.no..recursiveAnchor\\|.dynamicRef.with.no..dynamicAnchor\\).in.the.initial.target.schema.resource -i",
-    "test-codegen": "nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec",
-    "test-debug": "npm run test-spec -- --inspect-brk",
-    "test-cov": "nyc npm run test-spec",
-    "bundle": "rm -rf bundle && rollup -c",
-    "build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts",
-    "json-tests": "rm -rf spec/_json/*.js && node scripts/jsontests",
-    "test-karma": "karma start",
-    "test-browser": "rm -rf .browser && npm run bundle && scripts/prepare-tests && karma start",
-    "test-all": "npm run test-cov && if-node-version 12 npm run test-browser",
-    "test": "npm run json-tests && npm run prettier:check && npm run eslint && npm link && npm link ajv && npm run test-cov",
-    "test-ci": "AJV_FULL_TEST=true npm test",
-    "prepublish": "npm run build",
-    "benchmark": "npm i && npm run build && npm link && cd ./benchmark && npm link ajv && npm i && node ./jtd",
-    "docs:dev": "./scripts/prepare-site && vuepress dev docs",
-    "docs:build": "./scripts/prepare-site && vuepress build docs"
+  "_development": true,
+  "_from": "ajv@8.6.2",
+  "_id": "ajv@8.6.2",
+  "_inBundle": false,
+  "_integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
+  "_location": "/ajv",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv@8.6.2",
+    "name": "ajv",
+    "escapedName": "ajv",
+    "rawSpec": "8.6.2",
+    "saveSpec": null,
+    "fetchSpec": "8.6.2"
   },
-  "nyc": {
-    "exclude": [
-      "**/spec/**",
-      "node_modules"
-    ],
-    "reporter": [
-      "lcov",
-      "text-summary"
-    ]
+  "_requiredBy": [
+    "/@angular-devkit/core",
+    "/ajv-formats"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
+  "_spec": "8.6.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "repository": "ajv-validator/ajv",
-  "keywords": [
-    "JSON",
-    "schema",
-    "validator",
-    "validation",
-    "jsonschema",
-    "json-schema",
-    "json-schema-validator",
-    "json-schema-validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
-  "bugs": "https://github.com/ajv-validator/ajv/issues",
-  "homepage": "https://ajv.js.org",
-  "runkitExampleFilename": ".runkit_example.js",
+  "bugs": {
+    "url": "https://github.com/ajv-validator/ajv/issues"
+  },
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ajv"
+  },
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
@@ -63,4 +46,5 @@
     "uri-js": "^4.2.2"
   },
+  "description": "Another JSON Schema Validator",
   "devDependencies": {
     "@ajv-validator/config": "^0.3.0",
@@ -104,13 +88,14 @@
     "vuepress": "^1.8.2"
   },
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ajv"
-  },
+  "files": [
+    "lib/",
+    "dist/",
+    ".runkit_example.js"
+  ],
   "funding": {
     "type": "github",
     "url": "https://github.com/sponsors/epoberezkin"
   },
-  "prettier": "@ajv-validator/config/prettierrc.json",
+  "homepage": "https://ajv.js.org",
   "husky": {
     "hooks": {
@@ -118,6 +103,58 @@
     }
   },
+  "keywords": [
+    "JSON",
+    "schema",
+    "validator",
+    "validation",
+    "jsonschema",
+    "json-schema",
+    "json-schema-validator",
+    "json-schema-validation"
+  ],
+  "license": "MIT",
   "lint-staged": {
     "*.{json,yaml,js,ts}": "prettier --write"
-  }
+  },
+  "main": "dist/ajv.js",
+  "name": "ajv",
+  "nyc": {
+    "exclude": [
+      "**/spec/**",
+      "node_modules"
+    ],
+    "reporter": [
+      "lcov",
+      "text-summary"
+    ]
+  },
+  "prettier": "@ajv-validator/config/prettierrc.json",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv.git"
+  },
+  "runkitExampleFilename": ".runkit_example.js",
+  "scripts": {
+    "benchmark": "npm i && npm run build && npm link && cd ./benchmark && npm link ajv && npm i && node ./jtd",
+    "build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts",
+    "bundle": "rm -rf bundle && rollup -c",
+    "docs:build": "./scripts/prepare-site && vuepress build docs",
+    "docs:dev": "./scripts/prepare-site && vuepress dev docs",
+    "eslint": "eslint \"lib/**/*.ts\" \"spec/**/*.*s\" scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
+    "json-tests": "rm -rf spec/_json/*.js && node scripts/jsontests",
+    "prepublish": "npm run build",
+    "prettier:check": "prettier --list-different \"./**/*.{json,yaml,js,ts}\"",
+    "prettier:write": "prettier --write \"./**/*.{json,yaml,js,ts}\"",
+    "test": "npm run json-tests && npm run prettier:check && npm run eslint && npm link && npm link ajv && npm run test-cov",
+    "test-all": "npm run test-cov && if-node-version 12 npm run test-browser",
+    "test-browser": "rm -rf .browser && npm run bundle && scripts/prepare-tests && karma start",
+    "test-ci": "AJV_FULL_TEST=true npm test",
+    "test-codegen": "nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec",
+    "test-cov": "nyc npm run test-spec",
+    "test-debug": "npm run test-spec -- --inspect-brk",
+    "test-karma": "karma start",
+    "test-spec": "cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register \"spec/**/*.spec.{ts,js}\" -R dot -g \\(.recursiveRef.with.no..recursiveAnchor\\|.dynamicRef.with.no..dynamicAnchor\\).in.the.initial.target.schema.resource -i"
+  },
+  "types": "dist/ajv.d.ts",
+  "version": "8.6.2"
 }
Index: trip-planner-front/node_modules/alphanum-sort/package.json
===================================================================
--- trip-planner-front/node_modules/alphanum-sort/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/alphanum-sort/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,42 @@
 {
-  "name": "alphanum-sort",
-  "version": "1.0.2",
+  "_args": [
+    [
+      "alphanum-sort@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "alphanum-sort@1.0.2",
+  "_id": "alphanum-sort@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+  "_location": "/alphanum-sort",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "alphanum-sort@1.0.2",
+    "name": "alphanum-sort",
+    "escapedName": "alphanum-sort",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/postcss-minify-params",
+    "/postcss-minify-selectors",
+    "/postcss-unique-selectors"
+  ],
+  "_resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Bogdan Chadkin",
+    "email": "trysound@yandex.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/TrySound/alphanum-sort/issues"
+  },
   "description": "Alphanumeric sorting algorithm",
-  "main": "lib/index.js",
-  "files": [
-    "lib"
-  ],
   "devDependencies": {
     "eslint": "^1.5.1",
@@ -13,16 +45,7 @@
     "tape": "^4.2.0"
   },
-  "scripts": {
-    "test": "eslint lib test.js && tape test.js | tap-spec"
-  },
-  "author": "Bogdan Chadkin <trysound@yandex.ru>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/TrySound/alphanum-sort.git"
-  },
-  "bugs": {
-    "url": "https://github.com/TrySound/alphanum-sort/issues"
-  },
+  "files": [
+    "lib"
+  ],
   "homepage": "https://github.com/TrySound/alphanum-sort",
   "keywords": [
@@ -32,4 +55,15 @@
     "natural",
     "human"
-  ]
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "alphanum-sort",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/TrySound/alphanum-sort.git"
+  },
+  "scripts": {
+    "test": "eslint lib test.js && tape test.js | tap-spec"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/ansi-colors/package.json
===================================================================
--- trip-planner-front/node_modules/ansi-colors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ansi-colors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,59 @@
 {
-  "name": "ansi-colors",
-  "description": "Easily add ANSI colors to your text and symbols in the terminal. A faster drop-in replacement for chalk, kleur and turbocolor (without the dependencies and rendering bugs).",
-  "version": "4.1.1",
-  "homepage": "https://github.com/doowb/ansi-colors",
-  "author": "Brian Woodward (https://github.com/doowb)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jason Schilling (https://sourecode.de)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Jordan (https://github.com/Silic0nS0ldier)"
+  "_args": [
+    [
+      "ansi-colors@4.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "doowb/ansi-colors",
+  "_development": true,
+  "_from": "ansi-colors@4.1.1",
+  "_id": "ansi-colors@4.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+  "_location": "/ansi-colors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-colors@4.1.1",
+    "name": "ansi-colors",
+    "escapedName": "ansi-colors",
+    "rawSpec": "4.1.1",
+    "saveSpec": null,
+    "fetchSpec": "4.1.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+  "_spec": "4.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Brian Woodward",
+    "url": "https://github.com/doowb"
+  },
   "bugs": {
     "url": "https://github.com/doowb/ansi-colors/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "symbols.js",
-    "types/index.d.ts"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jason Schilling",
+      "url": "https://sourecode.de"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Jordan",
+      "url": "https://github.com/Silic0nS0ldier"
+    }
   ],
-  "main": "index.js",
-  "types": "./types/index.d.ts",
-  "engines": {
-    "node": ">=6"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Easily add ANSI colors to your text and symbols in the terminal. A faster drop-in replacement for chalk, kleur and turbocolor (without the dependencies and rendering bugs).",
   "devDependencies": {
     "decache": "^4.5.1",
@@ -36,4 +63,13 @@
     "text-table": "^0.2.0"
   },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "symbols.js",
+    "types/index.d.ts"
+  ],
+  "homepage": "https://github.com/doowb/ansi-colors",
   "keywords": [
     "ansi",
@@ -76,4 +112,15 @@
     "yellow"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ansi-colors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/doowb/ansi-colors.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "types": "./types/index.d.ts",
   "verb": {
     "toc": false,
@@ -106,4 +153,5 @@
       "kleur"
     ]
-  }
+  },
+  "version": "4.1.1"
 }
Index: trip-planner-front/node_modules/ansi-escapes/package.json
===================================================================
--- trip-planner-front/node_modules/ansi-escapes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ansi-escapes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,57 +1,93 @@
 {
-	"name": "ansi-escapes",
-	"version": "4.3.2",
-	"description": "ANSI escape codes for manipulating the terminal",
-	"license": "MIT",
-	"repository": "sindresorhus/ansi-escapes",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"escapes",
-		"formatting",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text",
-		"vt100",
-		"sequence",
-		"control",
-		"code",
-		"codes",
-		"cursor",
-		"iterm",
-		"iterm2"
-	],
-	"dependencies": {
-		"type-fest": "^0.21.3"
-	},
-	"devDependencies": {
-		"@types/node": "^13.7.7",
-		"ava": "^2.1.0",
-		"tsd": "^0.14.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-escapes@4.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-escapes@4.3.2",
+  "_id": "ansi-escapes@4.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+  "_location": "/ansi-escapes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-escapes@4.3.2",
+    "name": "ansi-escapes",
+    "escapedName": "ansi-escapes",
+    "rawSpec": "4.3.2",
+    "saveSpec": null,
+    "fetchSpec": "4.3.2"
+  },
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+  "_spec": "4.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/ansi-escapes/issues"
+  },
+  "dependencies": {
+    "type-fest": "^0.21.3"
+  },
+  "description": "ANSI escape codes for manipulating the terminal",
+  "devDependencies": {
+    "@types/node": "^13.7.7",
+    "ava": "^2.1.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/ansi-escapes#readme",
+  "keywords": [
+    "ansi",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "escapes",
+    "formatting",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text",
+    "vt100",
+    "sequence",
+    "control",
+    "code",
+    "codes",
+    "cursor",
+    "iterm",
+    "iterm2"
+  ],
+  "license": "MIT",
+  "name": "ansi-escapes",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/ansi-escapes.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.2"
 }
Index: trip-planner-front/node_modules/ansi-html/package.json
===================================================================
--- trip-planner-front/node_modules/ansi-html/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ansi-html/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,53 @@
 {
-  "name": "ansi-html",
-  "version": "0.0.7",
-  "description": "An elegant lib that converts the chalked (ANSI) text to HTML.",
-  "main": "index.js",
-  "scripts": {
-    "test": "./node_modules/.bin/mocha -R spec -t 5000"
+  "_args": [
+    [
+      "ansi-html@0.0.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-html@0.0.7",
+  "_id": "ansi-html@0.0.7",
+  "_inBundle": false,
+  "_integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+  "_location": "/ansi-html",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-html@0.0.7",
+    "name": "ansi-html",
+    "escapedName": "ansi-html",
+    "rawSpec": "0.0.7",
+    "saveSpec": null,
+    "fetchSpec": "0.0.7"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+  "_spec": "0.0.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tjatse"
   },
   "bin": {
-    "ansi-html": "./bin/ansi-html"
+    "ansi-html": "bin/ansi-html"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/Tjatse/ansi-html.git"
+  "bugs": {
+    "url": "https://github.com/Tjatse/ansi-html/issues"
   },
+  "dependencies": {},
+  "description": "An elegant lib that converts the chalked (ANSI) text to HTML.",
+  "devDependencies": {
+    "chai": "^1.9.1",
+    "chalk": "^1.1.3",
+    "lodash": "^2.4.2",
+    "mocha": "^1.21.4"
+  },
+  "engines": [
+    "node >= 0.8.0"
+  ],
+  "homepage": "https://github.com/Tjatse/ansi-html",
   "keywords": [
     "ansi",
@@ -19,24 +55,14 @@
     "chalk html"
   ],
-  "author": {
-    "name": "Tjatse"
+  "license": "Apache-2.0",
+  "main": "index.js",
+  "name": "ansi-html",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/Tjatse/ansi-html.git"
   },
-  "license": "Apache-2.0",
-  "bugs": {
-    "url": "https://github.com/Tjatse/ansi-html/issues"
+  "scripts": {
+    "test": "mocha -R spec -t 5000"
   },
-  "engines": [
-    "node >= 0.8.0"
-  ],
-  "dependencies": {
-  },
-  "devDependencies": {
-    "mocha": "^1.21.4",
-    "chai": "^1.9.1",
-    "chalk": "^1.1.3",
-    "lodash": "^2.4.2"
-  },
-  "readmeFilename": "README.md",
-  "homepage": "https://github.com/Tjatse/ansi-html",
   "standard": {
     "ignore": [],
@@ -47,4 +73,5 @@
       "after"
     ]
-  }
+  },
+  "version": "0.0.7"
 }
Index: trip-planner-front/node_modules/ansi-regex/package.json
===================================================================
--- trip-planner-front/node_modules/ansi-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ansi-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,55 +1,91 @@
 {
-	"name": "ansi-regex",
-	"version": "5.0.1",
-	"description": "Regular expression for matching ANSI escape codes",
-	"license": "MIT",
-	"repository": "chalk/ansi-regex",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"view-supported": "node fixtures/view-codes.js"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"text",
-		"regex",
-		"regexp",
-		"re",
-		"match",
-		"test",
-		"find",
-		"pattern"
-	],
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"tsd": "^0.9.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-regex@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-regex@5.0.1",
+  "_id": "ansi-regex@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+  "_location": "/ansi-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-regex@5.0.1",
+    "name": "ansi-regex",
+    "escapedName": "ansi-regex",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/strip-ansi"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-regex/issues"
+  },
+  "description": "Regular expression for matching ANSI escape codes",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "tsd": "^0.9.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/chalk/ansi-regex#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "text",
+    "regex",
+    "regexp",
+    "re",
+    "match",
+    "test",
+    "find",
+    "pattern"
+  ],
+  "license": "MIT",
+  "name": "ansi-regex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-regex.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd",
+    "view-supported": "node fixtures/view-codes.js"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/ansi-styles/package.json
===================================================================
--- trip-planner-front/node_modules/ansi-styles/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ansi-styles/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,93 @@
 {
-	"name": "ansi-styles",
-	"version": "3.2.1",
-	"description": "ANSI escape codes for styling strings in the terminal",
-	"license": "MIT",
-	"repository": "chalk/ansi-styles",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=4"
-	},
-	"scripts": {
-		"test": "xo && ava",
-		"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"color-convert": "^1.9.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"babel-polyfill": "^6.23.0",
-		"svg-term-cli": "^2.1.1",
-		"xo": "*"
-	},
-	"ava": {
-		"require": "babel-polyfill"
-	}
+  "_args": [
+    [
+      "ansi-styles@3.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-styles@3.2.1",
+  "_id": "ansi-styles@3.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+  "_location": "/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-styles@3.2.1",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "3.2.1",
+    "saveSpec": null,
+    "fetchSpec": "3.2.1"
+  },
+  "_requiredBy": [
+    "/chalk",
+    "/webpack-dev-server/wrap-ansi"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+  "_spec": "3.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "ava": {
+    "require": "babel-polyfill"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {
+    "color-convert": "^1.9.0"
+  },
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "ava": "*",
+    "babel-polyfill": "^6.23.0",
+    "svg-term-cli": "^2.1.1",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava"
+  },
+  "version": "3.2.1"
 }
Index: trip-planner-front/node_modules/anymatch/package.json
===================================================================
--- trip-planner-front/node_modules/anymatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/anymatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,56 @@
 {
-  "name": "anymatch",
-  "version": "3.1.2",
+  "_args": [
+    [
+      "anymatch@3.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "anymatch@3.1.2",
+  "_id": "anymatch@3.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+  "_location": "/anymatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "anymatch@3.1.2",
+    "name": "anymatch",
+    "escapedName": "anymatch",
+    "rawSpec": "3.1.2",
+    "saveSpec": null,
+    "fetchSpec": "3.1.2"
+  },
+  "_requiredBy": [
+    "/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+  "_spec": "3.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Elan Shanker",
+    "url": "https://github.com/es128"
+  },
+  "bugs": {
+    "url": "https://github.com/micromatch/anymatch/issues"
+  },
+  "dependencies": {
+    "normalize-path": "^3.0.0",
+    "picomatch": "^2.0.4"
+  },
   "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions",
+  "devDependencies": {
+    "mocha": "^6.1.3",
+    "nyc": "^14.0.0"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
   "files": [
     "index.js",
     "index.d.ts"
   ],
-  "dependencies": {
-    "normalize-path": "^3.0.0",
-    "picomatch": "^2.0.4"
-  },
-  "author": {
-    "name": "Elan Shanker",
-    "url": "https://github.com/es128"
-  },
-  "license": "ISC",
   "homepage": "https://github.com/micromatch/anymatch",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/micromatch/anymatch"
-  },
   "keywords": [
     "match",
@@ -35,14 +67,14 @@
     "function"
   ],
+  "license": "ISC",
+  "name": "anymatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/anymatch.git"
+  },
   "scripts": {
-    "test": "nyc mocha",
-    "mocha": "mocha"
+    "mocha": "mocha",
+    "test": "nyc mocha"
   },
-  "devDependencies": {
-    "mocha": "^6.1.3",
-    "nyc": "^14.0.0"
-  },
-  "engines": {
-    "node": ">= 8"
-  }
+  "version": "3.1.2"
 }
Index: trip-planner-front/node_modules/aproba/package.json
===================================================================
--- trip-planner-front/node_modules/aproba/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/aproba/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,66 @@
 {
-  "name": "aproba",
-  "version": "1.2.0",
-  "description": "A ridiculously light-weight argument validator (now browser friendly)",
-  "main": "index.js",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "aproba@1.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "aproba@1.2.0",
+  "_id": "aproba@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+  "_location": "/aproba",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "aproba@1.2.0",
+    "name": "aproba",
+    "escapedName": "aproba",
+    "rawSpec": "1.2.0",
+    "saveSpec": null,
+    "fetchSpec": "1.2.0"
+  },
+  "_requiredBy": [
+    "/gauge"
+  ],
+  "_resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+  "_spec": "1.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "email": "me@re-becca.org"
+  },
+  "bugs": {
+    "url": "https://github.com/iarna/aproba/issues"
   },
   "dependencies": {},
+  "description": "A ridiculously light-weight argument validator (now browser friendly)",
   "devDependencies": {
     "standard": "^10.0.3",
     "tap": "^10.0.2"
   },
+  "directories": {
+    "test": "test"
+  },
   "files": [
     "index.js"
   ],
-  "scripts": {
-    "test": "standard && tap -j3 test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iarna/aproba"
-  },
+  "homepage": "https://github.com/iarna/aproba",
   "keywords": [
     "argument",
     "validate"
   ],
-  "author": "Rebecca Turner <me@re-becca.org>",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/iarna/aproba/issues"
+  "main": "index.js",
+  "name": "aproba",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iarna/aproba.git"
   },
-  "homepage": "https://github.com/iarna/aproba"
+  "scripts": {
+    "test": "standard && tap -j3 test/*.js"
+  },
+  "version": "1.2.0"
 }
Index: trip-planner-front/node_modules/are-we-there-yet/node_modules/readable-stream/package.json
===================================================================
--- trip-planner-front/node_modules/are-we-there-yet/node_modules/readable-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/are-we-there-yet/node_modules/readable-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,42 @@
 {
-  "name": "readable-stream",
-  "version": "2.3.7",
-  "description": "Streams3, a user-land copy of the stream library from Node.js",
-  "main": "readable.js",
+  "_args": [
+    [
+      "readable-stream@2.3.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "readable-stream@2.3.7",
+  "_id": "readable-stream@2.3.7",
+  "_inBundle": false,
+  "_integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+  "_location": "/are-we-there-yet/readable-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "readable-stream@2.3.7",
+    "name": "readable-stream",
+    "escapedName": "readable-stream",
+    "rawSpec": "2.3.7",
+    "saveSpec": null,
+    "fetchSpec": "2.3.7"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet"
+  ],
+  "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+  "_spec": "2.3.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": {
+    "util": false,
+    "./readable.js": "./readable-browser.js",
+    "./writable.js": "./writable-browser.js",
+    "./duplex.js": "./duplex-browser.js",
+    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/nodejs/readable-stream/issues"
+  },
   "dependencies": {
     "core-util-is": "~1.0.0",
@@ -13,4 +48,5 @@
     "util-deprecate": "~1.0.1"
   },
+  "description": "Streams3, a user-land copy of the stream library from Node.js",
   "devDependencies": {
     "assert": "^1.4.0",
@@ -22,14 +58,5 @@
     "tape": "^4.8.0"
   },
-  "scripts": {
-    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
-    "cover": "nyc npm test",
-    "report": "nyc report --reporter=lcov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/readable-stream"
-  },
+  "homepage": "https://github.com/nodejs/readable-stream#readme",
   "keywords": [
     "readable",
@@ -37,11 +64,7 @@
     "pipe"
   ],
-  "browser": {
-    "util": false,
-    "./readable.js": "./readable-browser.js",
-    "./writable.js": "./writable-browser.js",
-    "./duplex.js": "./duplex-browser.js",
-    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
-  },
+  "license": "MIT",
+  "main": "readable.js",
+  "name": "readable-stream",
   "nyc": {
     "include": [
@@ -49,4 +72,14 @@
     ]
   },
-  "license": "MIT"
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/readable-stream.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "cover": "nyc npm test",
+    "report": "nyc report --reporter=lcov",
+    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js"
+  },
+  "version": "2.3.7"
 }
Index: trip-planner-front/node_modules/are-we-there-yet/node_modules/string_decoder/package.json
===================================================================
--- trip-planner-front/node_modules/are-we-there-yet/node_modules/string_decoder/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/are-we-there-yet/node_modules/string_decoder/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,39 @@
 {
-  "name": "string_decoder",
-  "version": "1.1.1",
-  "description": "The string_decoder module from Node core",
-  "main": "lib/string_decoder.js",
+  "_args": [
+    [
+      "string_decoder@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "string_decoder@1.1.1",
+  "_id": "string_decoder@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+  "_location": "/are-we-there-yet/string_decoder",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "string_decoder@1.1.1",
+    "name": "string_decoder",
+    "escapedName": "string_decoder",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/nodejs/string_decoder/issues"
+  },
   "dependencies": {
     "safe-buffer": "~5.1.0"
   },
+  "description": "The string_decoder module from Node core",
   "devDependencies": {
     "babel-polyfill": "^6.23.0",
@@ -12,12 +41,4 @@
     "inherits": "^2.0.3",
     "tap": "~0.4.8"
-  },
-  "scripts": {
-    "test": "tap test/parallel/*.js && node test/verify-dependencies",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/string_decoder.git"
   },
   "homepage": "https://github.com/nodejs/string_decoder",
@@ -28,4 +49,15 @@
     "browserify"
   ],
-  "license": "MIT"
+  "license": "MIT",
+  "main": "lib/string_decoder.js",
+  "name": "string_decoder",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/string_decoder.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "test": "tap test/parallel/*.js && node test/verify-dependencies"
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/are-we-there-yet/package.json
===================================================================
--- trip-planner-front/node_modules/are-we-there-yet/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/are-we-there-yet/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "are-we-there-yet",
-  "version": "1.1.7",
-  "description": "Keep track of the overall completion of many disparate processes",
-  "main": "index.js",
-  "scripts": {
-    "test": "standard && tap test/*.js"
+  "_args": [
+    [
+      "are-we-there-yet@1.1.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "are-we-there-yet@1.1.7",
+  "_id": "are-we-there-yet@1.1.7",
+  "_inBundle": false,
+  "_integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
+  "_location": "/are-we-there-yet",
+  "_phantomChildren": {
+    "core-util-is": "1.0.2",
+    "inherits": "2.0.4",
+    "isarray": "1.0.0",
+    "process-nextick-args": "2.0.1",
+    "safe-buffer": "5.1.2",
+    "util-deprecate": "1.0.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iarna/are-we-there-yet.git"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "are-we-there-yet@1.1.7",
+    "name": "are-we-there-yet",
+    "escapedName": "are-we-there-yet",
+    "rawSpec": "1.1.7",
+    "saveSpec": null,
+    "fetchSpec": "1.1.7"
   },
-  "author": "Rebecca Turner (http://re-becca.org)",
-  "license": "ISC",
+  "_requiredBy": [
+    "/npmlog"
+  ],
+  "_resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
+  "_spec": "1.1.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "url": "http://re-becca.org"
+  },
   "bugs": {
     "url": "https://github.com/iarna/are-we-there-yet/issues"
-  },
-  "homepage": "https://github.com/iarna/are-we-there-yet",
-  "devDependencies": {
-    "standard": "^11.0.1",
-    "tap": "^12.0.1"
   },
   "dependencies": {
     "delegates": "^1.0.0",
     "readable-stream": "^2.0.6"
+  },
+  "description": "Keep track of the overall completion of many disparate processes",
+  "devDependencies": {
+    "standard": "^11.0.1",
+    "tap": "^12.0.1"
   },
   "files": [
@@ -32,4 +59,16 @@
     "tracker.js",
     "CHANGES.md"
-  ]
+  ],
+  "homepage": "https://github.com/iarna/are-we-there-yet",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "are-we-there-yet",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iarna/are-we-there-yet.git"
+  },
+  "scripts": {
+    "test": "standard && tap test/*.js"
+  },
+  "version": "1.1.7"
 }
Index: trip-planner-front/node_modules/arr-diff/package.json
===================================================================
--- trip-planner-front/node_modules/arr-diff/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/arr-diff/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,55 @@
 {
-  "name": "arr-diff",
-  "description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.",
-  "version": "4.0.0",
-  "homepage": "https://github.com/jonschlinkert/arr-diff",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)",
-    "Paul Miller <paul+gh@paulmillr.com> (paulmillr.com)"
+  "_args": [
+    [
+      "arr-diff@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/arr-diff",
+  "_development": true,
+  "_from": "arr-diff@4.0.0",
+  "_id": "arr-diff@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+  "_location": "/arr-diff",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "arr-diff@4.0.0",
+    "name": "arr-diff",
+    "escapedName": "arr-diff",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/arr-diff/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Paul Miller",
+      "email": "paul+gh@paulmillr.com",
+      "url": "paulmillr.com"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {},
+  "description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -34,4 +61,11 @@
     "mocha": "^2.4.5"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/arr-diff",
   "keywords": [
     "arr",
@@ -43,4 +77,14 @@
     "difference"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "arr-diff",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/arr-diff.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -66,4 +110,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/arr-flatten/package.json
===================================================================
--- trip-planner-front/node_modules/arr-flatten/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/arr-flatten/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,51 @@
 {
-  "name": "arr-flatten",
-  "description": "Recursively flatten an array or arrays.",
-  "version": "1.1.0",
-  "homepage": "https://github.com/jonschlinkert/arr-flatten",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Luke Edwards (https://lukeed.com)"
+  "_args": [
+    [
+      "arr-flatten@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/arr-flatten",
+  "_development": true,
+  "_from": "arr-flatten@1.1.0",
+  "_id": "arr-flatten@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+  "_location": "/arr-flatten",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "arr-flatten@1.1.0",
+    "name": "arr-flatten",
+    "escapedName": "arr-flatten",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/braces",
+    "/webpack-dev-server/braces"
+  ],
+  "_resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/arr-flatten/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Luke Edwards",
+      "url": "https://lukeed.com"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Recursively flatten an array or arrays.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +66,11 @@
     "write": "^0.3.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/arr-flatten",
   "keywords": [
     "arr",
@@ -53,4 +84,14 @@
     "recursively"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "arr-flatten",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/arr-flatten.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -73,4 +114,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/arr-union/package.json
===================================================================
--- trip-planner-front/node_modules/arr-union/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/arr-union/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,41 @@
 {
-  "name": "arr-union",
-  "description": "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.",
-  "version": "3.1.0",
-  "homepage": "https://github.com/jonschlinkert/arr-union",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/arr-union",
+  "_args": [
+    [
+      "arr-union@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "arr-union@3.1.0",
+  "_id": "arr-union@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+  "_location": "/arr-union",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "arr-union@3.1.0",
+    "name": "arr-union",
+    "escapedName": "arr-union",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/class-utils",
+    "/union-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/arr-union/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -30,4 +48,11 @@
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/arr-union",
   "keywords": [
     "add",
@@ -45,4 +70,14 @@
     "utils"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "arr-union",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/arr-union.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -73,4 +108,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/array-flatten/package.json
===================================================================
--- trip-planner-front/node_modules/array-flatten/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/array-flatten/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,47 @@
 {
-  "name": "array-flatten",
-  "version": "2.1.2",
+  "_args": [
+    [
+      "array-flatten@2.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-flatten@2.1.2",
+  "_id": "array-flatten@2.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+  "_location": "/array-flatten",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-flatten@2.1.2",
+    "name": "array-flatten",
+    "escapedName": "array-flatten",
+    "rawSpec": "2.1.2",
+    "saveSpec": null,
+    "fetchSpec": "2.1.2"
+  },
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+  "_spec": "2.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Blake Embrey",
+    "email": "hello@blakeembrey.com",
+    "url": "http://blakeembrey.me"
+  },
+  "bugs": {
+    "url": "https://github.com/blakeembrey/array-flatten/issues"
+  },
   "description": "Flatten nested arrays",
-  "main": "array-flatten.js",
-  "typings": "array-flatten.d.ts",
+  "devDependencies": {
+    "benchmarked": "^2.0.0",
+    "istanbul": "^0.4.0",
+    "mocha": "^3.1.2",
+    "standard": "^10.0.0"
+  },
   "files": [
     "array-flatten.js",
@@ -10,15 +49,5 @@
     "LICENSE"
   ],
-  "scripts": {
-    "lint": "standard",
-    "test-spec": "mocha -R spec --bail",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail",
-    "test": "npm run lint && npm run test-cov",
-    "benchmark": "node benchmark"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/blakeembrey/array-flatten.git"
-  },
+  "homepage": "https://github.com/blakeembrey/array-flatten",
   "keywords": [
     "array",
@@ -29,19 +58,19 @@
     "for"
   ],
-  "author": {
-    "name": "Blake Embrey",
-    "email": "hello@blakeembrey.com",
-    "url": "http://blakeembrey.me"
+  "license": "MIT",
+  "main": "array-flatten.js",
+  "name": "array-flatten",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/blakeembrey/array-flatten.git"
   },
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/blakeembrey/array-flatten/issues"
+  "scripts": {
+    "benchmark": "node benchmark",
+    "lint": "standard",
+    "test": "npm run lint && npm run test-cov",
+    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec --bail",
+    "test-spec": "mocha -R spec --bail"
   },
-  "homepage": "https://github.com/blakeembrey/array-flatten",
-  "devDependencies": {
-    "benchmarked": "^2.0.0",
-    "istanbul": "^0.4.0",
-    "mocha": "^3.1.2",
-    "standard": "^10.0.0"
-  }
+  "typings": "array-flatten.d.ts",
+  "version": "2.1.2"
 }
Index: trip-planner-front/node_modules/array-union/package.json
===================================================================
--- trip-planner-front/node_modules/array-union/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/array-union/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,74 @@
 {
-	"name": "array-union",
-	"version": "2.1.0",
-	"description": "Create an array of unique values, in order, from the input arrays",
-	"license": "MIT",
-	"repository": "sindresorhus/array-union",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"array",
-		"set",
-		"uniq",
-		"unique",
-		"duplicate",
-		"remove",
-		"union",
-		"combine",
-		"merge"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "array-union@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-union@2.1.0",
+  "_id": "array-union@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+  "_location": "/array-union",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-union@2.1.0",
+    "name": "array-union",
+    "escapedName": "array-union",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/array-union/issues"
+  },
+  "description": "Create an array of unique values, in order, from the input arrays",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/array-union#readme",
+  "keywords": [
+    "array",
+    "set",
+    "uniq",
+    "unique",
+    "duplicate",
+    "remove",
+    "union",
+    "combine",
+    "merge"
+  ],
+  "license": "MIT",
+  "name": "array-union",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/array-union.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/array-uniq/package.json
===================================================================
--- trip-planner-front/node_modules/array-uniq/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/array-uniq/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "array-uniq",
-  "version": "1.0.3",
-  "description": "Create an array without duplicates",
-  "license": "MIT",
-  "repository": "sindresorhus/array-uniq",
+  "_args": [
+    [
+      "array-uniq@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-uniq@1.0.3",
+  "_id": "array-uniq@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+  "_location": "/array-uniq",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-uniq@1.0.3",
+    "name": "array-uniq",
+    "escapedName": "array-uniq",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/del/array-union"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,21 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/array-uniq/issues"
+  },
+  "description": "Create an array without duplicates",
+  "devDependencies": {
+    "ava": "*",
+    "es6-set": "^0.1.0",
+    "require-uncached": "^1.0.2",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/array-uniq#readme",
   "keywords": [
     "array",
@@ -29,9 +61,13 @@
     "remove"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "es6-set": "^0.1.0",
-    "require-uncached": "^1.0.2",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "array-uniq",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/array-uniq.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/array-unique/package.json
===================================================================
--- trip-planner-front/node_modules/array-unique/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/array-unique/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,45 @@
 {
-  "name": "array-unique",
-  "description": "Remove duplicate values from an array. Fastest ES5 implementation.",
-  "version": "0.3.2",
-  "homepage": "https://github.com/jonschlinkert/array-unique",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/array-unique",
+  "_args": [
+    [
+      "array-unique@0.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-unique@0.3.2",
+  "_id": "array-unique@0.3.2",
+  "_inBundle": false,
+  "_integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+  "_location": "/array-unique",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-unique@0.3.2",
+    "name": "array-unique",
+    "escapedName": "array-unique",
+    "rawSpec": "0.3.2",
+    "saveSpec": null,
+    "fetchSpec": "0.3.2"
+  },
+  "_requiredBy": [
+    "/extglob",
+    "/http-proxy-middleware/braces",
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/webpack-dev-server/braces",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+  "_spec": "0.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/array-unique/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "LICENSE",
-    "README.md"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Remove duplicate values from an array. Fastest ES5 implementation.",
   "devDependencies": {
     "array-uniq": "^1.0.2",
@@ -29,8 +49,27 @@
     "should": "^10.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/jonschlinkert/array-unique",
   "keywords": [
     "array",
     "unique"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "array-unique",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/array-unique.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -59,4 +98,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.3.2"
 }
Index: trip-planner-front/node_modules/asn1/package.json
===================================================================
--- trip-planner-front/node_modules/asn1/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/asn1/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,79 @@
 {
-  "author": "Joyent (joyent.com)",
+  "_args": [
+    [
+      "asn1@0.2.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "asn1@0.2.4",
+  "_id": "asn1@0.2.4",
+  "_inBundle": false,
+  "_integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+  "_location": "/asn1",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "asn1@0.2.4",
+    "name": "asn1",
+    "escapedName": "asn1",
+    "rawSpec": "0.2.4",
+    "saveSpec": null,
+    "fetchSpec": "0.2.4"
+  },
+  "_requiredBy": [
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+  "_spec": "0.2.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Joyent",
+    "url": "joyent.com"
+  },
+  "bugs": {
+    "url": "https://github.com/joyent/node-asn1/issues"
+  },
   "contributors": [
-    "Mark Cavage <mcavage@gmail.com>",
-    "David Gwynne <loki@animata.net>",
-    "Yunong Xiao <yunong@joyent.com>",
-    "Alex Wilson <alex.wilson@joyent.com>"
+    {
+      "name": "Mark Cavage",
+      "email": "mcavage@gmail.com"
+    },
+    {
+      "name": "David Gwynne",
+      "email": "loki@animata.net"
+    },
+    {
+      "name": "Yunong Xiao",
+      "email": "yunong@joyent.com"
+    },
+    {
+      "name": "Alex Wilson",
+      "email": "alex.wilson@joyent.com"
+    }
   ],
+  "dependencies": {
+    "safer-buffer": "~2.1.0"
+  },
+  "description": "Contains parsers and serializers for ASN.1 (currently BER only)",
+  "devDependencies": {
+    "eslint": "2.13.1",
+    "eslint-plugin-joyent": "~1.3.0",
+    "faucet": "0.0.1",
+    "istanbul": "^0.3.6",
+    "tape": "^3.5.0"
+  },
+  "homepage": "https://github.com/joyent/node-asn1#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
   "name": "asn1",
-  "description": "Contains parsers and serializers for ASN.1 (currently BER only)",
-  "version": "0.2.4",
   "repository": {
     "type": "git",
     "url": "git://github.com/joyent/node-asn1.git"
   },
-  "main": "lib/index.js",
-  "dependencies": {
-    "safer-buffer": "~2.1.0"
+  "scripts": {
+    "test": "tape ./test/ber/*.test.js"
   },
-  "devDependencies": {
-    "istanbul": "^0.3.6",
-    "faucet": "0.0.1",
-    "tape": "^3.5.0",
-    "eslint": "2.13.1",
-    "eslint-plugin-joyent": "~1.3.0"
-  },
-  "scripts": {
-    "test": "./node_modules/.bin/tape ./test/ber/*.test.js"
-  },
-  "license": "MIT"
+  "version": "0.2.4"
 }
Index: trip-planner-front/node_modules/assert-plus/package.json
===================================================================
--- trip-planner-front/node_modules/assert-plus/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/assert-plus/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,91 @@
 {
-  "author": "Mark Cavage <mcavage@gmail.com>",
-  "name": "assert-plus",
+  "_args": [
+    [
+      "assert-plus@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "assert-plus@1.0.0",
+  "_id": "assert-plus@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+  "_location": "/assert-plus",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "assert-plus@1.0.0",
+    "name": "assert-plus",
+    "escapedName": "assert-plus",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/dashdash",
+    "/getpass",
+    "/http-signature",
+    "/jsprim",
+    "/sshpk",
+    "/verror"
+  ],
+  "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mark Cavage",
+    "email": "mcavage@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mcavage/node-assert-plus/issues"
+  },
+  "contributors": [
+    {
+      "name": "Dave Eddy",
+      "email": "dave@daveeddy.com"
+    },
+    {
+      "name": "Fred Kuo",
+      "email": "fred.kuo@joyent.com"
+    },
+    {
+      "name": "Lars-Magnus Skog",
+      "email": "ralphtheninja@riseup.net"
+    },
+    {
+      "name": "Mark Cavage",
+      "email": "mcavage@gmail.com"
+    },
+    {
+      "name": "Patrick Mooney",
+      "email": "pmooney@pfmooney.com"
+    },
+    {
+      "name": "Rob Gulewich",
+      "email": "robert.gulewich@joyent.com"
+    }
+  ],
+  "dependencies": {},
   "description": "Extra assertions on top of node's assert module",
-  "version": "1.0.0",
-  "license": "MIT",
-  "main": "./assert.js",
   "devDependencies": {
-    "tape": "4.2.2",
-    "faucet": "0.0.1"
-  },
-  "optionalDependencies": {},
-  "scripts": {
-    "test": "./node_modules/.bin/tape tests/*.js | ./node_modules/.bin/faucet"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mcavage/node-assert-plus.git"
+    "faucet": "0.0.1",
+    "tape": "4.2.2"
   },
   "engines": {
     "node": ">=0.8"
-  }
+  },
+  "homepage": "https://github.com/mcavage/node-assert-plus#readme",
+  "license": "MIT",
+  "main": "./assert.js",
+  "name": "assert-plus",
+  "optionalDependencies": {},
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mcavage/node-assert-plus.git"
+  },
+  "scripts": {
+    "test": "tape tests/*.js | ./node_modules/.bin/faucet"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/assign-symbols/package.json
===================================================================
--- trip-planner-front/node_modules/assign-symbols/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/assign-symbols/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,64 @@
 {
-  "name": "assign-symbols",
-  "description": "Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/assign-symbols",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/assign-symbols",
+  "_args": [
+    [
+      "assign-symbols@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "assign-symbols@1.0.0",
+  "_id": "assign-symbols@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+  "_location": "/assign-symbols",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "assign-symbols@1.0.0",
+    "name": "assign-symbols",
+    "escapedName": "assign-symbols",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/extend-shallow"
+  ],
+  "_resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/assign-symbols/issues"
   },
-  "license": "MIT",
+  "description": "Assign the enumerable es6 Symbol properties from an object (or objects) to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.",
+  "devDependencies": {
+    "mocha": "^3.0.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/jonschlinkert/assign-symbols",
+  "keywords": [
+    "assign",
+    "symbols"
+  ],
+  "license": "MIT",
   "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "name": "assign-symbols",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/assign-symbols.git"
   },
   "scripts": {
     "test": "mocha"
   },
-  "devDependencies": {
-    "mocha": "^3.0.0"
-  },
-  "keywords": [
-    "assign",
-    "symbols"
-  ],
   "verb": {
     "related": {
@@ -37,4 +71,5 @@
       ]
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/async-each/package.json
===================================================================
--- trip-planner-front/node_modules/async-each/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/async-each/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,67 @@
 {
+  "_args": [
+    [
+      "async-each@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "async-each@1.0.3",
+  "_id": "async-each@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+  "_location": "/async-each",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "async-each@1.0.3",
+    "name": "async-each",
+    "escapedName": "async-each",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Paul Miller",
+    "url": "https://paulmillr.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/paulmillr/async-each/issues"
+  },
+  "dependencies": {},
+  "description": "No-bullshit, ultra-simple, 35-lines-of-code async parallel forEach / map function for JavaScript.",
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/paulmillr/async-each/",
+  "keywords": [
+    "async",
+    "forEach",
+    "each",
+    "map",
+    "asynchronous",
+    "iteration",
+    "iterate",
+    "loop",
+    "parallel",
+    "concurrent",
+    "array",
+    "flow",
+    "control flow"
+  ],
+  "license": "MIT",
+  "main": "index.js",
   "name": "async-each",
-  "description": "No-bullshit, ultra-simple, 35-lines-of-code async parallel forEach / map function for JavaScript.",
-  "version": "1.0.3",
-  "license": "MIT",
-  "keywords": [
-    "async", "forEach", "each", "map",
-    "asynchronous",
-    "iteration", "iterate",
-    "loop", "parallel",
-    "concurrent", "array",
-    "flow", "control flow"
-  ],
-  "files": ["index.js"],
-  "homepage": "https://github.com/paulmillr/async-each/",
-  "author": "Paul Miller (https://paulmillr.com/)",
-  "repository": "git://github.com/paulmillr/async-each.git",
-  "main": "index.js",
-  "dependencies": {}
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/paulmillr/async-each.git"
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/async-limiter/package.json
===================================================================
--- trip-planner-front/node_modules/async-limiter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/async-limiter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,50 @@
 {
-  "name": "async-limiter",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "async-limiter@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "async-limiter@1.0.1",
+  "_id": "async-limiter@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+  "_location": "/async-limiter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "async-limiter@1.0.1",
+    "name": "async-limiter",
+    "escapedName": "async-limiter",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/ws"
+  ],
+  "_resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Samuel Reed"
+  },
+  "bugs": {
+    "url": "https://github.com/strml/async-limiter/issues"
+  },
+  "dependencies": {},
   "description": "asynchronous function queue with adjustable concurrency",
+  "devDependencies": {
+    "coveralls": "^3.0.3",
+    "eslint": "^5.16.0",
+    "eslint-plugin-mocha": "^5.3.0",
+    "intelli-espower-loader": "^1.0.1",
+    "mocha": "^6.1.4",
+    "nyc": "^14.1.1",
+    "power-assert": "^1.6.1"
+  },
+  "homepage": "https://github.com/strml/async-limiter#readme",
   "keywords": [
     "throttle",
@@ -13,23 +57,17 @@
     "concurrent"
   ],
-  "dependencies": {},
-  "devDependencies": {
-    "coveralls": "^3.0.3",
-    "eslint": "^5.16.0",
-    "eslint-plugin-mocha": "^5.3.0",
-    "intelli-espower-loader": "^1.0.1",
-    "mocha": "^6.1.4",
-    "nyc": "^14.1.1",
-    "power-assert": "^1.6.1"
+  "license": "MIT",
+  "name": "async-limiter",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/strml/async-limiter.git"
   },
   "scripts": {
-    "test": "mocha --require intelli-espower-loader test/",
-    "travis": "npm run lint && npm run test",
     "coverage": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
     "example": "node example",
-    "lint": "eslint ."
+    "lint": "eslint .",
+    "test": "mocha --require intelli-espower-loader test/",
+    "travis": "npm run lint && npm run test"
   },
-  "repository": "https://github.com/strml/async-limiter.git",
-  "author": "Samuel Reed <samuel.trace.reed@gmail.com",
-  "license": "MIT"
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/async/package.json
===================================================================
--- trip-planner-front/node_modules/async/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/async/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,42 @@
 {
-  "name": "async",
-  "description": "Higher-order functions and common patterns for asynchronous code",
-  "version": "2.6.3",
-  "main": "dist/async.js",
-  "author": "Caolan McMahon",
-  "homepage": "https://caolan.github.io/async/",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/caolan/async.git"
+  "_args": [
+    [
+      "async@2.6.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "async@2.6.3",
+  "_id": "async@2.6.3",
+  "_inBundle": false,
+  "_integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+  "_location": "/async",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "async@2.6.3",
+    "name": "async",
+    "escapedName": "async",
+    "rawSpec": "2.6.3",
+    "saveSpec": null,
+    "fetchSpec": "2.6.3"
+  },
+  "_requiredBy": [
+    "/portfinder"
+  ],
+  "_resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+  "_spec": "2.6.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Caolan McMahon"
   },
   "bugs": {
     "url": "https://github.com/caolan/async/issues"
   },
-  "keywords": [
-    "async",
-    "callback",
-    "module",
-    "utility"
-  ],
   "dependencies": {
     "lodash": "^4.17.14"
   },
+  "description": "Higher-order functions and common patterns for asynchronous code",
   "devDependencies": {
     "babel-cli": "^6.24.0",
@@ -59,4 +76,26 @@
     "yargs": "^11.0.0"
   },
+  "gh-pages-deploy": {
+    "staticpath": "docs"
+  },
+  "homepage": "https://caolan.github.io/async/",
+  "keywords": [
+    "async",
+    "callback",
+    "module",
+    "utility"
+  ],
+  "license": "MIT",
+  "main": "dist/async.js",
+  "name": "async",
+  "nyc": {
+    "exclude": [
+      "mocha_test"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/caolan/async.git"
+  },
   "scripts": {
     "coverage": "nyc npm run mocha-node-test -- --grep @nycinvalid --invert",
@@ -69,12 +108,4 @@
     "test": "npm run lint && npm run mocha-node-test"
   },
-  "license": "MIT",
-  "gh-pages-deploy": {
-    "staticpath": "docs"
-  },
-  "nyc": {
-    "exclude": [
-      "mocha_test"
-    ]
-  }
+  "version": "2.6.3"
 }
Index: trip-planner-front/node_modules/asynckit/package.json
===================================================================
--- trip-planner-front/node_modules/asynckit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/asynckit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,41 @@
 {
-  "name": "asynckit",
-  "version": "0.4.0",
-  "description": "Minimal async jobs utility library, with streams support",
-  "main": "index.js",
-  "scripts": {
-    "clean": "rimraf coverage",
-    "lint": "eslint *.js lib/*.js test/*.js",
-    "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec",
-    "win-test": "tape test/test-*.js",
-    "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec",
-    "report": "istanbul report",
-    "size": "browserify index.js | size-table asynckit",
-    "debug": "tape test/test-*.js"
+  "_args": [
+    [
+      "asynckit@0.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "asynckit@0.4.0",
+  "_id": "asynckit@0.4.0",
+  "_inBundle": false,
+  "_integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+  "_location": "/asynckit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "asynckit@0.4.0",
+    "name": "asynckit",
+    "escapedName": "asynckit",
+    "rawSpec": "0.4.0",
+    "saveSpec": null,
+    "fetchSpec": "0.4.0"
   },
-  "pre-commit": [
-    "clean",
-    "lint",
-    "test",
-    "browser",
-    "report",
-    "size"
+  "_requiredBy": [
+    "/form-data"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/alexindigo/asynckit.git"
+  "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+  "_spec": "0.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alex Indigo",
+    "email": "iam@alexindigo.com"
   },
-  "keywords": [
-    "async",
-    "jobs",
-    "parallel",
-    "serial",
-    "iterator",
-    "array",
-    "object",
-    "stream",
-    "destroy",
-    "terminate",
-    "abort"
-  ],
-  "author": "Alex Indigo <iam@alexindigo.com>",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/alexindigo/asynckit/issues"
   },
-  "homepage": "https://github.com/alexindigo/asynckit#readme",
+  "dependencies": {},
+  "description": "Minimal async jobs utility library, with streams support",
   "devDependencies": {
     "browserify": "^13.0.0",
@@ -60,4 +53,43 @@
     "tape": "^4.5.1"
   },
-  "dependencies": {}
+  "homepage": "https://github.com/alexindigo/asynckit#readme",
+  "keywords": [
+    "async",
+    "jobs",
+    "parallel",
+    "serial",
+    "iterator",
+    "array",
+    "object",
+    "stream",
+    "destroy",
+    "terminate",
+    "abort"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "asynckit",
+  "pre-commit": [
+    "clean",
+    "lint",
+    "test",
+    "browser",
+    "report",
+    "size"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/alexindigo/asynckit.git"
+  },
+  "scripts": {
+    "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec",
+    "clean": "rimraf coverage",
+    "debug": "tape test/test-*.js",
+    "lint": "eslint *.js lib/*.js test/*.js",
+    "report": "istanbul report",
+    "size": "browserify index.js | size-table asynckit",
+    "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec",
+    "win-test": "tape test/test-*.js"
+  },
+  "version": "0.4.0"
 }
Index: trip-planner-front/node_modules/atob/package.json
===================================================================
--- trip-planner-front/node_modules/atob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/atob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,59 @@
 {
+  "_args": [
+    [
+      "atob@2.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "atob@2.1.2",
+  "_id": "atob@2.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+  "_location": "/atob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "atob@2.1.2",
+    "name": "atob",
+    "escapedName": "atob",
+    "rawSpec": "2.1.2",
+    "saveSpec": null,
+    "fetchSpec": "2.1.2"
+  },
+  "_requiredBy": [
+    "/css-parse/source-map-resolve",
+    "/snapdragon/source-map-resolve",
+    "/source-map-resolve"
+  ],
+  "_resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+  "_spec": "2.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "AJ ONeal",
+    "email": "coolaj86@gmail.com",
+    "url": "https://coolaj86.com"
+  },
+  "bin": {
+    "atob": "bin/atob.js"
+  },
+  "browser": "browser-atob.js",
+  "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
+  "engines": {
+    "node": ">= 4.5.0"
+  },
+  "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git",
+  "keywords": [
+    "atob",
+    "browser"
+  ],
+  "license": "(MIT OR Apache-2.0)",
+  "main": "node-atob.js",
   "name": "atob",
-  "homepage": "https://git.coolaj86.com/coolaj86/atob.js.git",
-  "description": "atob for Node.JS and Linux / Mac / Windows CLI (it's a one-liner)",
   "repository": {
     "type": "git",
     "url": "git://git.coolaj86.com/coolaj86/atob.js.git"
   },
-  "keywords": [
-    "atob",
-    "browser"
-  ],
-  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
-  "engines": {
-    "node": ">= 4.5.0"
-  },
-  "main": "node-atob.js",
-  "browser": "browser-atob.js",
-  "bin": {
-    "atob": "bin/atob.js"
-  },
-  "license": "(MIT OR Apache-2.0)",
   "version": "2.1.2"
 }
Index: trip-planner-front/node_modules/autoprefixer/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/autoprefixer/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/autoprefixer/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/autoprefixer/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/autoprefixer"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/autoprefixer/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/autoprefixer/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/autoprefixer/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/autoprefixer/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/autoprefixer/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/autoprefixer/package.json
===================================================================
--- trip-planner-front/node_modules/autoprefixer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/autoprefixer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,44 @@
 {
-  "name": "autoprefixer",
-  "version": "9.8.8",
-  "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
-  "keywords": [
-    "autoprefixer",
-    "css",
-    "prefix",
-    "postcss",
-    "postcss-plugin"
+  "_args": [
+    [
+      "autoprefixer@9.8.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "bin": "./bin/autoprefixer",
-  "funding": {
-    "type": "tidelift",
-    "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+  "_development": true,
+  "_from": "autoprefixer@9.8.8",
+  "_id": "autoprefixer@9.8.8",
+  "_inBundle": false,
+  "_integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+  "_location": "/autoprefixer",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "repository": "postcss/autoprefixer",
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "autoprefixer@9.8.8",
+    "name": "autoprefixer",
+    "escapedName": "autoprefixer",
+    "rawSpec": "9.8.8",
+    "saveSpec": null,
+    "fetchSpec": "9.8.8"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
+  "_spec": "9.8.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "bin": {
+    "autoprefixer": "bin/autoprefixer"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/autoprefixer/issues"
+  },
   "dependencies": {
     "browserslist": "^4.12.0",
@@ -27,4 +50,24 @@
     "postcss-value-parser": "^4.1.0"
   },
-  "main": "lib/autoprefixer"
+  "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website",
+  "funding": {
+    "type": "tidelift",
+    "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+  },
+  "homepage": "https://github.com/postcss/autoprefixer#readme",
+  "keywords": [
+    "autoprefixer",
+    "css",
+    "prefix",
+    "postcss",
+    "postcss-plugin"
+  ],
+  "license": "MIT",
+  "main": "lib/autoprefixer",
+  "name": "autoprefixer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/autoprefixer.git"
+  },
+  "version": "9.8.8"
 }
Index: trip-planner-front/node_modules/aws-sign2/package.json
===================================================================
--- trip-planner-front/node_modules/aws-sign2/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/aws-sign2/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,54 @@
 {
-  "author": "Mikeal Rogers <mikeal.rogers@gmail.com> (http://www.futurealoof.com)",
-  "name": "aws-sign2",
+  "_args": [
+    [
+      "aws-sign2@0.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "aws-sign2@0.7.0",
+  "_id": "aws-sign2@0.7.0",
+  "_inBundle": false,
+  "_integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+  "_location": "/aws-sign2",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "aws-sign2@0.7.0",
+    "name": "aws-sign2",
+    "escapedName": "aws-sign2",
+    "rawSpec": "0.7.0",
+    "saveSpec": null,
+    "fetchSpec": "0.7.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+  "_spec": "0.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mikeal Rogers",
+    "email": "mikeal.rogers@gmail.com",
+    "url": "http://www.futurealoof.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mikeal/aws-sign/issues"
+  },
+  "dependencies": {},
   "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.",
-  "version": "0.7.0",
-  "repository": {
-    "url": "https://github.com/mikeal/aws-sign"
+  "devDependencies": {},
+  "engines": {
+    "node": "*"
   },
+  "homepage": "https://github.com/mikeal/aws-sign#readme",
   "license": "Apache-2.0",
   "main": "index.js",
-  "dependencies": {},
-  "devDependencies": {},
+  "name": "aws-sign2",
   "optionalDependencies": {},
-  "engines": {
-    "node": "*"
-  }
+  "repository": {
+    "url": "git+https://github.com/mikeal/aws-sign.git"
+  },
+  "version": "0.7.0"
 }
Index: trip-planner-front/node_modules/aws4/package.json
===================================================================
--- trip-planner-front/node_modules/aws4/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/aws4/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,57 @@
 {
-  "name": "aws4",
-  "version": "1.11.0",
+  "_args": [
+    [
+      "aws4@1.11.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "aws4@1.11.0",
+  "_id": "aws4@1.11.0",
+  "_inBundle": false,
+  "_integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+  "_location": "/aws4",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "aws4@1.11.0",
+    "name": "aws4",
+    "escapedName": "aws4",
+    "rawSpec": "1.11.0",
+    "saveSpec": null,
+    "fetchSpec": "1.11.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+  "_spec": "1.11.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Michael Hart",
+    "email": "michael.hart.au@gmail.com",
+    "url": "https://github.com/mhart"
+  },
+  "bugs": {
+    "url": "https://github.com/mhart/aws4/issues"
+  },
   "description": "Signs and prepares requests using AWS Signature Version 4",
-  "author": "Michael Hart <michael.hart.au@gmail.com> (https://github.com/mhart)",
-  "license": "MIT",
-  "repository": "github:mhart/aws4",
-  "main": "aws4.js",
-  "scripts": {
-    "test": "mocha ./test/fast.js -R list",
-    "integration": "node ./test/slow.js"
-  },
   "devDependencies": {
     "mocha": "^2.5.3",
     "should": "^8.4.0"
-  }
+  },
+  "homepage": "https://github.com/mhart/aws4#readme",
+  "license": "MIT",
+  "main": "aws4.js",
+  "name": "aws4",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mhart/aws4.git"
+  },
+  "scripts": {
+    "integration": "node ./test/slow.js",
+    "test": "mocha ./test/fast.js -R list"
+  },
+  "version": "1.11.0"
 }
Index: trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5
===================================================================
--- trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../json5/lib/cli.js" "$@"
+  "$basedir/node"  "$basedir/../json5/lib/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../json5/lib/cli.js" "$@"
+  node  "$basedir/../json5/lib/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.cmd
===================================================================
--- trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\json5\lib\cli.js" %*
+"%_prog%"  "%dp0%\..\json5\lib\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.ps1
===================================================================
--- trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/node_modules/.bin/json5.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../json5/lib/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../json5/lib/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../json5/lib/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../json5/lib/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/babel-loader/node_modules/json5/package.json
===================================================================
--- trip-planner-front/node_modules/babel-loader/node_modules/json5/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/node_modules/json5/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,61 @@
 {
-  "name": "json5",
-  "version": "1.0.1",
-  "description": "JSON for humans.",
-  "main": "lib/index.js",
-  "bin": "lib/cli.js",
+  "_args": [
+    [
+      "json5@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json5@1.0.1",
+  "_id": "json5@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+  "_location": "/babel-loader/json5",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json5@1.0.1",
+    "name": "json5",
+    "escapedName": "json5",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/babel-loader/loader-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Aseem Kishore",
+    "email": "aseem.kishore@gmail.com"
+  },
+  "bin": {
+    "json5": "lib/cli.js"
+  },
   "browser": "dist/index.js",
-  "files": [
-    "lib/",
-    "dist/"
-  ],
-  "scripts": {
-    "build": "babel-node build/build.js && babel src -d lib && rollup -c",
-    "coverage": "nyc report --reporter=text-lcov | coveralls",
-    "lint": "eslint --fix build src",
-    "prepublishOnly": "npm run lint && npm test && npm run production",
-    "pretest": "cross-env NODE_ENV=test npm run build",
-    "preversion": "npm run lint && npm test && npm run production",
-    "production": "cross-env NODE_ENV=production npm run build",
-    "test": "nyc --reporter=html --reporter=text mocha"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/json5/json5.git"
-  },
-  "keywords": [
-    "json",
-    "json5",
-    "es5",
-    "es2015",
-    "ecmascript"
-  ],
-  "author": "Aseem Kishore <aseem.kishore@gmail.com>",
-  "contributors": [
-    "Max Nanasy <max.nanasy@gmail.com>",
-    "Andrew Eisenberg <andrew@eisenberg.as>",
-    "Jordan Tucker <jordanbtucker@gmail.com>"
-  ],
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/json5/json5/issues"
   },
-  "homepage": "http://json5.org/",
+  "contributors": [
+    {
+      "name": "Max Nanasy",
+      "email": "max.nanasy@gmail.com"
+    },
+    {
+      "name": "Andrew Eisenberg",
+      "email": "andrew@eisenberg.as"
+    },
+    {
+      "name": "Jordan Tucker",
+      "email": "jordanbtucker@gmail.com"
+    }
+  ],
   "dependencies": {
     "minimist": "^1.2.0"
   },
+  "description": "JSON for humans.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -73,4 +86,34 @@
     "sinon": "^4.4.2",
     "unicode-9.0.0": "^0.7.5"
-  }
+  },
+  "files": [
+    "lib/",
+    "dist/"
+  ],
+  "homepage": "http://json5.org/",
+  "keywords": [
+    "json",
+    "json5",
+    "es5",
+    "es2015",
+    "ecmascript"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "json5",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/json5/json5.git"
+  },
+  "scripts": {
+    "build": "babel-node build/build.js && babel src -d lib && rollup -c",
+    "coverage": "nyc report --reporter=text-lcov | coveralls",
+    "lint": "eslint --fix build src",
+    "prepublishOnly": "npm run lint && npm test && npm run production",
+    "pretest": "cross-env NODE_ENV=test npm run build",
+    "preversion": "npm run lint && npm test && npm run production",
+    "production": "cross-env NODE_ENV=production npm run build",
+    "test": "nyc --reporter=html --reporter=text mocha"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/babel-loader/node_modules/loader-utils/package.json
===================================================================
--- trip-planner-front/node_modules/babel-loader/node_modules/loader-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/node_modules/loader-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,38 @@
 {
-  "name": "loader-utils",
-  "version": "1.4.0",
-  "author": "Tobias Koppers @sokra",
-  "description": "utils for webpack loaders",
+  "_args": [
+    [
+      "loader-utils@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "loader-utils@1.4.0",
+  "_id": "loader-utils@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+  "_location": "/babel-loader/loader-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "loader-utils@1.4.0",
+    "name": "loader-utils",
+    "escapedName": "loader-utils",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/babel-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
+  },
+  "bugs": {
+    "url": "https://github.com/webpack/loader-utils/issues"
+  },
   "dependencies": {
     "big.js": "^5.2.2",
@@ -9,19 +40,5 @@
     "json5": "^1.0.1"
   },
-  "scripts": {
-    "lint": "eslint lib test",
-    "pretest": "yarn lint",
-    "test": "jest",
-    "test:ci": "jest --coverage",
-    "release": "yarn test && standard-version"
-  },
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/webpack/loader-utils.git"
-  },
-  "engines": {
-    "node": ">=4.0.0"
-  },
+  "description": "utils for webpack loaders",
   "devDependencies": {
     "coveralls": "^3.0.2",
@@ -33,7 +50,25 @@
     "standard-version": "^4.0.0"
   },
-  "main": "lib/index.js",
+  "engines": {
+    "node": ">=4.0.0"
+  },
   "files": [
     "lib"
-  ]
+  ],
+  "homepage": "https://github.com/webpack/loader-utils#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "loader-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/loader-utils.git"
+  },
+  "scripts": {
+    "lint": "eslint lib test",
+    "pretest": "yarn lint",
+    "release": "yarn test && standard-version",
+    "test": "jest",
+    "test:ci": "jest --coverage"
+  },
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/babel-loader/package.json
===================================================================
--- trip-planner-front/node_modules/babel-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,54 @@
 {
-  "name": "babel-loader",
-  "version": "8.2.2",
-  "description": "babel module loader for webpack",
-  "files": [
-    "lib"
+  "_args": [
+    [
+      "babel-loader@8.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "main": "lib/index.js",
-  "engines": {
-    "node": ">= 8.9"
+  "_development": true,
+  "_from": "babel-loader@8.2.2",
+  "_id": "babel-loader@8.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==",
+  "_location": "/babel-loader",
+  "_phantomChildren": {
+    "big.js": "5.2.2",
+    "emojis-list": "3.0.0",
+    "minimist": "1.2.5"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "babel-loader@8.2.2",
+    "name": "babel-loader",
+    "escapedName": "babel-loader",
+    "rawSpec": "8.2.2",
+    "saveSpec": null,
+    "fetchSpec": "8.2.2"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz",
+  "_spec": "8.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Luis Couto",
+    "email": "hello@luiscouto.pt"
+  },
+  "ava": {
+    "files": [
+      "test/**/*.test.js",
+      "!test/fixtures/**/*",
+      "!test/helpers/**/*"
+    ],
+    "babel": {
+      "compileAsTests": [
+        "test/helpers/**/*"
+      ]
+    }
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel-loader/issues"
   },
   "dependencies": {
@@ -16,8 +58,5 @@
     "schema-utils": "^2.6.5"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0",
-    "webpack": ">=2"
-  },
+  "description": "babel module loader for webpack",
   "devDependencies": {
     "@ava/babel": "^1.0.1",
@@ -47,19 +86,11 @@
     "webpack": "^5.4.0"
   },
-  "scripts": {
-    "clean": "rimraf lib/",
-    "build": "babel src/ --out-dir lib/ --copy-files",
-    "format": "prettier --write --trailing-comma all 'src/**/*.js' 'test/**/*.test.js' 'test/helpers/*.js' && prettier --write --trailing-comma es5 'scripts/*.js'",
-    "lint": "eslint src test",
-    "precommit": "lint-staged",
-    "prepublish": "yarn run clean && yarn run build",
-    "preversion": "yarn run test",
-    "test": "yarn run lint && cross-env BABEL_ENV=test yarn run build && yarn run test-only",
-    "test-only": "nyc ava"
+  "engines": {
+    "node": ">= 8.9"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel-loader.git"
-  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/babel/babel-loader",
   "keywords": [
     "webpack",
@@ -70,34 +101,5 @@
     "module"
   ],
-  "author": "Luis Couto <hello@luiscouto.pt>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/babel/babel-loader/issues"
-  },
-  "homepage": "https://github.com/babel/babel-loader",
-  "nyc": {
-    "all": true,
-    "include": [
-      "src/**/*.js"
-    ],
-    "reporter": [
-      "text",
-      "json"
-    ],
-    "sourceMap": false,
-    "instrument": false
-  },
-  "ava": {
-    "files": [
-      "test/**/*.test.js",
-      "!test/fixtures/**/*",
-      "!test/helpers/**/*"
-    ],
-    "babel": {
-      "compileAsTests": [
-        "test/helpers/**/*"
-      ]
-    }
-  },
   "lint-staged": {
     "scripts/*.js": [
@@ -121,4 +123,38 @@
       "git add yarn.lock"
     ]
-  }
+  },
+  "main": "lib/index.js",
+  "name": "babel-loader",
+  "nyc": {
+    "all": true,
+    "include": [
+      "src/**/*.js"
+    ],
+    "reporter": [
+      "text",
+      "json"
+    ],
+    "sourceMap": false,
+    "instrument": false
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0",
+    "webpack": ">=2"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel-loader.git"
+  },
+  "scripts": {
+    "build": "babel src/ --out-dir lib/ --copy-files",
+    "clean": "rimraf lib/",
+    "format": "prettier --write --trailing-comma all 'src/**/*.js' 'test/**/*.test.js' 'test/helpers/*.js' && prettier --write --trailing-comma es5 'scripts/*.js'",
+    "lint": "eslint src test",
+    "precommit": "lint-staged",
+    "prepublish": "yarn run clean && yarn run build",
+    "preversion": "yarn run test",
+    "test": "yarn run lint && cross-env BABEL_ENV=test yarn run build && yarn run test-only",
+    "test-only": "nyc ava"
+  },
+  "version": "8.2.2"
 }
Index: trip-planner-front/node_modules/babel-plugin-dynamic-import-node/package.json
===================================================================
--- trip-planner-front/node_modules/babel-plugin-dynamic-import-node/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-dynamic-import-node/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,45 @@
 {
-  "name": "babel-plugin-dynamic-import-node",
-  "version": "2.3.3",
-  "description": "Babel plugin to transpile import() to a deferred require(), for node",
-  "main": "lib/index.js",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "babel-plugin-dynamic-import-node@2.3.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "babel-plugin-dynamic-import-node@2.3.3",
+  "_id": "babel-plugin-dynamic-import-node@2.3.3",
+  "_inBundle": false,
+  "_integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+  "_location": "/babel-plugin-dynamic-import-node",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "babel-plugin-dynamic-import-node@2.3.3",
+    "name": "babel-plugin-dynamic-import-node",
+    "escapedName": "babel-plugin-dynamic-import-node",
+    "rawSpec": "2.3.3",
+    "saveSpec": null,
+    "fetchSpec": "2.3.3"
   },
-  "scripts": {
-    "clean": "rimraf lib",
-    "prebuild": "npm run clean",
-    "build": "babel src --out-dir lib",
-    "pretest": "npm run lint",
-    "test": "npm run tests-only",
-    "tests-only": "tape --require airbnb-js-shims --require babel-register test",
-    "lint": "eslint .",
-    "prepublish": "not-in-publish || (safe-publish-latest && npm run build)",
-    "check-changelog": "expr $(git status --porcelain 2>/dev/null| grep \"^\\s*M.*CHANGELOG.md\" | wc -l) >/dev/null || (echo 'Please edit CHANGELOG.md' && exit 1)",
-    "check-only-changelog-changed": "(expr $(git status --porcelain 2>/dev/null| grep -v \"CHANGELOG.md\" | wc -l) >/dev/null && echo 'Only CHANGELOG.md may have uncommitted changes' && exit 1) || exit 0",
-    "version:major": "npm --no-git-tag-version version major",
-    "version:minor": "npm --no-git-tag-version version minor",
-    "version:patch": "npm --no-git-tag-version version patch",
-    "postversion": "git commit package.json CHANGELOG.md -m \"v$npm_package_version\" && npm run tag && git push && git push --tags",
-    "preversion": "npm run test && npm run check-changelog && npm run check-only-changelog-changed",
-    "tag": "git tag v$npm_package_version"
+  "_requiredBy": [
+    "/@babel/plugin-transform-modules-amd",
+    "/@babel/plugin-transform-modules-commonjs",
+    "/@babel/plugin-transform-modules-systemjs"
+  ],
+  "_resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+  "_spec": "2.3.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Gensler",
+    "email": "jordan.gensler@airbnb.com"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git"
-  },
-  "keywords": [
-    "babel",
-    "plugin",
-    "dynamic",
-    "import",
-    "node"
-  ],
-  "author": "Jordan Gensler <jordan.gensler@airbnb.com>",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/airbnb/babel-plugin-dynamic-import-node/issues"
   },
-  "homepage": "https://github.com/airbnb/babel-plugin-dynamic-import-node#readme",
+  "dependencies": {
+    "object.assign": "^4.1.0"
+  },
+  "description": "Babel plugin to transpile import() to a deferred require(), for node",
   "devDependencies": {
     "@babel/core": "^7.9.0",
@@ -66,6 +66,40 @@
     "tape": "^5.0.0-next.5"
   },
-  "dependencies": {
-    "object.assign": "^4.1.0"
-  }
+  "directories": {
+    "test": "test"
+  },
+  "homepage": "https://github.com/airbnb/babel-plugin-dynamic-import-node#readme",
+  "keywords": [
+    "babel",
+    "plugin",
+    "dynamic",
+    "import",
+    "node"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "babel-plugin-dynamic-import-node",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git"
+  },
+  "scripts": {
+    "build": "babel src --out-dir lib",
+    "check-changelog": "expr $(git status --porcelain 2>/dev/null| grep \"^\\s*M.*CHANGELOG.md\" | wc -l) >/dev/null || (echo 'Please edit CHANGELOG.md' && exit 1)",
+    "check-only-changelog-changed": "(expr $(git status --porcelain 2>/dev/null| grep -v \"CHANGELOG.md\" | wc -l) >/dev/null && echo 'Only CHANGELOG.md may have uncommitted changes' && exit 1) || exit 0",
+    "clean": "rimraf lib",
+    "lint": "eslint .",
+    "postversion": "git commit package.json CHANGELOG.md -m \"v$npm_package_version\" && npm run tag && git push && git push --tags",
+    "prebuild": "npm run clean",
+    "prepublish": "not-in-publish || (safe-publish-latest && npm run build)",
+    "pretest": "npm run lint",
+    "preversion": "npm run test && npm run check-changelog && npm run check-only-changelog-changed",
+    "tag": "git tag v$npm_package_version",
+    "test": "npm run tests-only",
+    "tests-only": "tape --require airbnb-js-shims --require babel-register test",
+    "version:major": "npm --no-git-tag-version version major",
+    "version:minor": "npm --no-git-tag-version version minor",
+    "version:patch": "npm --no-git-tag-version version patch"
+  },
+  "version": "2.3.3"
 }
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/babel-plugin-polyfill-corejs2/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/babel-plugin-polyfill-corejs2"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/package.json
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs2/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,48 @@
 {
-  "name": "babel-plugin-polyfill-corejs2",
-  "version": "0.2.2",
+  "_args": [
+    [
+      "babel-plugin-polyfill-corejs2@0.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "babel-plugin-polyfill-corejs2@0.2.2",
+  "_id": "babel-plugin-polyfill-corejs2@0.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==",
+  "_location": "/babel-plugin-polyfill-corejs2",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "babel-plugin-polyfill-corejs2@0.2.2",
+    "name": "babel-plugin-polyfill-corejs2",
+    "escapedName": "babel-plugin-polyfill-corejs2",
+    "rawSpec": "0.2.2",
+    "saveSpec": null,
+    "fetchSpec": "0.2.2"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-runtime",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz",
+  "_spec": "0.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel-polyfills/issues"
+  },
+  "dependencies": {
+    "@babel/compat-data": "^7.13.11",
+    "@babel/helper-define-polyfill-provider": "^0.2.2",
+    "semver": "^6.1.1"
+  },
   "description": "A Babel plugin to inject imports to core-js@2 polyfills",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel-polyfills.git",
-    "directory": "packages/babel-plugin-polyfill-corejs2"
+  "devDependencies": {
+    "@babel/core": "^7.13.0",
+    "@babel/helper-plugin-test-runner": "^7.10.4",
+    "@babel/plugin-transform-for-of": "^7.10.4",
+    "@babel/plugin-transform-modules-commonjs": "^7.10.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "lib/index.js",
   "exports": {
     ".": [
@@ -23,21 +55,23 @@
     "./package.json": "./package.json"
   },
+  "gitHead": "1db1e16a7e6855094c52a6cf9b98410e3f0e80de",
+  "homepage": "https://github.com/babel/babel-polyfills#readme",
   "keywords": [
     "babel-plugin"
   ],
-  "dependencies": {
-    "@babel/compat-data": "^7.13.11",
-    "@babel/helper-define-polyfill-provider": "^0.2.2",
-    "semver": "^6.1.1"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.13.0",
-    "@babel/helper-plugin-test-runner": "^7.10.4",
-    "@babel/plugin-transform-for-of": "^7.10.4",
-    "@babel/plugin-transform-modules-commonjs": "^7.10.4"
-  },
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "babel-plugin-polyfill-corejs2",
   "peerDependencies": {
     "@babel/core": "^7.0.0-0"
   },
-  "gitHead": "1db1e16a7e6855094c52a6cf9b98410e3f0e80de"
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel-polyfills.git",
+    "directory": "packages/babel-plugin-polyfill-corejs2"
+  },
+  "version": "0.2.2"
 }
Index: trip-planner-front/node_modules/babel-plugin-polyfill-corejs3/package.json
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-corejs3/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-corejs3/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,51 @@
 {
-  "name": "babel-plugin-polyfill-corejs3",
-  "version": "0.2.5",
+  "_args": [
+    [
+      "babel-plugin-polyfill-corejs3@0.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "babel-plugin-polyfill-corejs3@0.2.5",
+  "_id": "babel-plugin-polyfill-corejs3@0.2.5",
+  "_inBundle": false,
+  "_integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
+  "_location": "/babel-plugin-polyfill-corejs3",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "babel-plugin-polyfill-corejs3@0.2.5",
+    "name": "babel-plugin-polyfill-corejs3",
+    "escapedName": "babel-plugin-polyfill-corejs3",
+    "rawSpec": "0.2.5",
+    "saveSpec": null,
+    "fetchSpec": "0.2.5"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-runtime",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
+  "_spec": "0.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel-polyfills/issues"
+  },
+  "dependencies": {
+    "@babel/helper-define-polyfill-provider": "^0.2.2",
+    "core-js-compat": "^3.16.2"
+  },
   "description": "A Babel plugin to inject imports to core-js@3 polyfills",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel-polyfills.git",
-    "directory": "packages/babel-plugin-polyfill-corejs3"
+  "devDependencies": {
+    "@babel/core": "^7.13.0",
+    "@babel/helper-plugin-test-runner": "^7.10.4",
+    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+    "@babel/plugin-transform-classes": "^7.13.0",
+    "@babel/plugin-transform-for-of": "^7.10.4",
+    "@babel/plugin-transform-modules-commonjs": "^7.10.4",
+    "@babel/plugin-transform-spread": "^7.13.0",
+    "core-js-pure": "^3.8.1"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "lib/index.js",
   "exports": {
     ".": [
@@ -23,24 +58,23 @@
     "./package.json": "./package.json"
   },
+  "gitHead": "a8e0ddc77ee775ced7f441d723f8b66c6d631f30",
+  "homepage": "https://github.com/babel/babel-polyfills#readme",
   "keywords": [
     "babel-plugin"
   ],
-  "dependencies": {
-    "@babel/helper-define-polyfill-provider": "^0.2.2",
-    "core-js-compat": "^3.16.2"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.13.0",
-    "@babel/helper-plugin-test-runner": "^7.10.4",
-    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-    "@babel/plugin-transform-classes": "^7.13.0",
-    "@babel/plugin-transform-for-of": "^7.10.4",
-    "@babel/plugin-transform-modules-commonjs": "^7.10.4",
-    "@babel/plugin-transform-spread": "^7.13.0",
-    "core-js-pure": "^3.8.1"
-  },
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "babel-plugin-polyfill-corejs3",
   "peerDependencies": {
     "@babel/core": "^7.0.0-0"
   },
-  "gitHead": "a8e0ddc77ee775ced7f441d723f8b66c6d631f30"
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel-polyfills.git",
+    "directory": "packages/babel-plugin-polyfill-corejs3"
+  },
+  "version": "0.2.5"
 }
Index: trip-planner-front/node_modules/babel-plugin-polyfill-regenerator/package.json
===================================================================
--- trip-planner-front/node_modules/babel-plugin-polyfill-regenerator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/babel-plugin-polyfill-regenerator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,44 @@
 {
-  "name": "babel-plugin-polyfill-regenerator",
-  "version": "0.2.2",
+  "_args": [
+    [
+      "babel-plugin-polyfill-regenerator@0.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "babel-plugin-polyfill-regenerator@0.2.2",
+  "_id": "babel-plugin-polyfill-regenerator@0.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==",
+  "_location": "/babel-plugin-polyfill-regenerator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "babel-plugin-polyfill-regenerator@0.2.2",
+    "name": "babel-plugin-polyfill-regenerator",
+    "escapedName": "babel-plugin-polyfill-regenerator",
+    "rawSpec": "0.2.2",
+    "saveSpec": null,
+    "fetchSpec": "0.2.2"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-runtime",
+    "/@babel/preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz",
+  "_spec": "0.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/babel/babel-polyfills/issues"
+  },
+  "dependencies": {
+    "@babel/helper-define-polyfill-provider": "^0.2.2"
+  },
   "description": "A Babel plugin to inject imports to regenerator-runtime",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel-polyfills.git",
-    "directory": "packages/babel-plugin-polyfill-regenerator"
+  "devDependencies": {
+    "@babel/core": "^7.13.0",
+    "@babel/helper-plugin-test-runner": "^7.10.4"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "lib/index.js",
   "exports": {
     ".": [
@@ -23,17 +51,23 @@
     "./package.json": "./package.json"
   },
+  "gitHead": "1db1e16a7e6855094c52a6cf9b98410e3f0e80de",
+  "homepage": "https://github.com/babel/babel-polyfills#readme",
   "keywords": [
     "babel-plugin"
   ],
-  "dependencies": {
-    "@babel/helper-define-polyfill-provider": "^0.2.2"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.13.0",
-    "@babel/helper-plugin-test-runner": "^7.10.4"
-  },
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "babel-plugin-polyfill-regenerator",
   "peerDependencies": {
     "@babel/core": "^7.0.0-0"
   },
-  "gitHead": "1db1e16a7e6855094c52a6cf9b98410e3f0e80de"
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel-polyfills.git",
+    "directory": "packages/babel-plugin-polyfill-regenerator"
+  },
+  "version": "0.2.2"
 }
Index: trip-planner-front/node_modules/balanced-match/package.json
===================================================================
--- trip-planner-front/node_modules/balanced-match/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/balanced-match/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,48 @@
 {
-  "name": "balanced-match",
+  "_args": [
+    [
+      "balanced-match@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "balanced-match@1.0.2",
+  "_id": "balanced-match@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+  "_location": "/balanced-match",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "balanced-match@1.0.2",
+    "name": "balanced-match",
+    "escapedName": "balanced-match",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/brace-expansion",
+    "/postcss-selector-matches",
+    "/postcss-selector-not"
+  ],
+  "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Julian Gruber",
+    "email": "mail@juliangruber.com",
+    "url": "http://juliangruber.com"
+  },
+  "bugs": {
+    "url": "https://github.com/juliangruber/balanced-match/issues"
+  },
   "description": "Match balanced character pairs, like \"{\" and \"}\"",
-  "version": "1.0.2",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/juliangruber/balanced-match.git"
-  },
-  "homepage": "https://github.com/juliangruber/balanced-match",
-  "main": "index.js",
-  "scripts": {
-    "test": "tape test/test.js",
-    "bench": "matcha test/bench.js"
-  },
   "devDependencies": {
     "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
+  "homepage": "https://github.com/juliangruber/balanced-match",
   "keywords": [
     "match",
@@ -24,10 +52,15 @@
     "parse"
   ],
-  "author": {
-    "name": "Julian Gruber",
-    "email": "mail@juliangruber.com",
-    "url": "http://juliangruber.com"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "balanced-match",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/balanced-match.git"
   },
-  "license": "MIT",
+  "scripts": {
+    "bench": "matcha test/bench.js",
+    "test": "tape test/test.js"
+  },
   "testling": {
     "files": "test/*.js",
@@ -45,4 +78,5 @@
       "android-browser/4.2..latest"
     ]
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/base/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/base/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/base/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,54 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/define-property",
+  "_args": [
+    [
+      "define-property@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-property@1.0.0",
+  "_id": "define-property@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+  "_location": "/base/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@1.0.0",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-descriptor": "^1.0.0"
   },
+  "description": "Define a non-enumerable property on an object.",
   "devDependencies": {
     "gulp-format-md": "^0.1.12",
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -39,4 +63,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -59,4 +93,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/base/package.json
===================================================================
--- trip-planner-front/node_modules/base/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/base/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,62 @@
 {
-  "name": "base",
-  "description": "base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.",
-  "version": "0.11.2",
-  "homepage": "https://github.com/node-base/base",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "maintainers": [
-    "Brian Woodward (https://github.com/doowb)",
-    "Jon Schlinkert (https://github.com/jonschlinkert)"
+  "_args": [
+    [
+      "base@0.11.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "John O'Donnell (https://github.com/criticalmash)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "tunnckoCore (https://i.am.charlike.online)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_development": true,
+  "_from": "base@0.11.2",
+  "_id": "base@0.11.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+  "_location": "/base",
+  "_phantomChildren": {
+    "is-descriptor": "1.0.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "base@0.11.2",
+    "name": "base",
+    "escapedName": "base",
+    "rawSpec": "0.11.2",
+    "saveSpec": null,
+    "fetchSpec": "0.11.2"
+  },
+  "_requiredBy": [
+    "/snapdragon"
   ],
-  "repository": "node-base/base",
+  "_resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+  "_spec": "0.11.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/node-base/base/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "John O'Donnell",
+      "url": "https://github.com/criticalmash"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "tunnckoCore",
+      "url": "https://i.am.charlike.online"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "cache-base": "^1.0.1",
@@ -40,4 +68,5 @@
     "pascalcase": "^0.1.1"
   },
+  "description": "base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.",
   "devDependencies": {
     "gulp": "^3.9.1",
@@ -52,4 +81,11 @@
     "verb-generate-readme": "^0.6.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/node-base/base",
   "keywords": [
     "base",
@@ -65,4 +101,24 @@
     "visit"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://github.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "https://github.com/jonschlinkert"
+    }
+  ],
+  "name": "base",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/node-base/base.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -108,4 +164,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.11.2"
 }
Index: trip-planner-front/node_modules/base64-arraybuffer/package.json
===================================================================
--- trip-planner-front/node_modules/base64-arraybuffer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/base64-arraybuffer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,32 @@
 {
-  "name": "base64-arraybuffer",
-  "description": "Encode/decode base64 data into ArrayBuffers",
-  "version": "0.1.4",
-  "homepage": "https://github.com/niklasvh/base64-arraybuffer",
+  "_args": [
+    [
+      "base64-arraybuffer@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "base64-arraybuffer@0.1.4",
+  "_id": "base64-arraybuffer@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=",
+  "_location": "/base64-arraybuffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "base64-arraybuffer@0.1.4",
+    "name": "base64-arraybuffer",
+    "escapedName": "base64-arraybuffer",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/engine.io-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Niklas von Hertzen",
@@ -9,11 +34,20 @@
     "url": "http://hertzen.com"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/niklasvh/base64-arraybuffer"
-  },
   "bugs": {
     "url": "https://github.com/niklasvh/base64-arraybuffer/issues"
   },
+  "description": "Encode/decode base64 data into ArrayBuffers",
+  "devDependencies": {
+    "grunt": "^0.4.5",
+    "grunt-cli": "^0.1.13",
+    "grunt-contrib-jshint": "^0.11.2",
+    "grunt-contrib-nodeunit": "^0.4.1",
+    "grunt-contrib-watch": "^0.6.1"
+  },
+  "engines": {
+    "node": ">= 0.6.0"
+  },
+  "homepage": "https://github.com/niklasvh/base64-arraybuffer",
+  "keywords": [],
   "licenses": [
     {
@@ -23,17 +57,12 @@
   ],
   "main": "lib/base64-arraybuffer",
-  "engines": {
-    "node": ">= 0.6.0"
+  "name": "base64-arraybuffer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/niklasvh/base64-arraybuffer.git"
   },
   "scripts": {
     "test": "grunt nodeunit"
   },
-  "devDependencies": {
-    "grunt": "^0.4.5",
-    "grunt-cli": "^0.1.13",
-    "grunt-contrib-jshint": "^0.11.2",
-    "grunt-contrib-nodeunit": "^0.4.1",
-    "grunt-contrib-watch": "^0.6.1"
-  },
-  "keywords": []
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/base64-js/package.json
===================================================================
--- trip-planner-front/node_modules/base64-js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/base64-js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,41 @@
 {
-  "name": "base64-js",
-  "description": "Base64 encoding/decoding in pure JS",
-  "version": "1.5.1",
-  "author": "T. Jameson Little <t.jameson.little@gmail.com>",
-  "typings": "index.d.ts",
+  "_args": [
+    [
+      "base64-js@1.5.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "base64-js@1.5.1",
+  "_id": "base64-js@1.5.1",
+  "_inBundle": false,
+  "_integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+  "_location": "/base64-js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "base64-js@1.5.1",
+    "name": "base64-js",
+    "escapedName": "base64-js",
+    "rawSpec": "1.5.1",
+    "saveSpec": null,
+    "fetchSpec": "1.5.1"
+  },
+  "_requiredBy": [
+    "/buffer",
+    "/hdr-histogram-js"
+  ],
+  "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+  "_spec": "1.5.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "T. Jameson Little",
+    "email": "t.jameson.little@gmail.com"
+  },
   "bugs": {
     "url": "https://github.com/beatgammit/base64-js/issues"
   },
+  "description": "Base64 encoding/decoding in pure JS",
   "devDependencies": {
     "babel-minify": "^0.5.1",
@@ -14,20 +44,4 @@
     "standard": "*",
     "tape": "4.x"
-  },
-  "homepage": "https://github.com/beatgammit/base64-js",
-  "keywords": [
-    "base64"
-  ],
-  "license": "MIT",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/beatgammit/base64-js.git"
-  },
-  "scripts": {
-    "build": "browserify -s base64js -r ./ | minify > base64js.min.js",
-    "lint": "standard",
-    "test": "npm run lint && npm run unit",
-    "unit": "tape test/*.js"
   },
   "funding": [
@@ -44,4 +58,23 @@
       "url": "https://feross.org/support"
     }
-  ]
+  ],
+  "homepage": "https://github.com/beatgammit/base64-js",
+  "keywords": [
+    "base64"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "base64-js",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/beatgammit/base64-js.git"
+  },
+  "scripts": {
+    "build": "browserify -s base64js -r ./ | minify > base64js.min.js",
+    "lint": "standard",
+    "test": "npm run lint && npm run unit",
+    "unit": "tape test/*.js"
+  },
+  "typings": "index.d.ts",
+  "version": "1.5.1"
 }
Index: trip-planner-front/node_modules/base64id/package.json
===================================================================
--- trip-planner-front/node_modules/base64id/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/base64id/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,52 @@
 {
-    "name": "base64id"
-  , "version": "2.0.0"
-  , "license": "MIT"
-  , "description": "Generates a base64 id"
-  , "author": "Kristian Faeldt <faeldt_kristian@cyberagent.co.jp>"
-  , "repository": {
-        "type": "git"
-      , "url": "https://github.com/faeldt/base64id.git"
-   }
-  , "main": "./lib/base64id.js"
-  , "engines": { "node": "^4.5.0 || >= 5.9" }
+  "_args": [
+    [
+      "base64id@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "base64id@2.0.0",
+  "_id": "base64id@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+  "_location": "/base64id",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "base64id@2.0.0",
+    "name": "base64id",
+    "escapedName": "base64id",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/engine.io",
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kristian Faeldt",
+    "email": "faeldt_kristian@cyberagent.co.jp"
+  },
+  "bugs": {
+    "url": "https://github.com/faeldt/base64id/issues"
+  },
+  "description": "Generates a base64 id",
+  "engines": {
+    "node": "^4.5.0 || >= 5.9"
+  },
+  "homepage": "https://github.com/faeldt/base64id#readme",
+  "license": "MIT",
+  "main": "./lib/base64id.js",
+  "name": "base64id",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/faeldt/base64id.git"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/batch/package.json
===================================================================
--- trip-planner-front/node_modules/batch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/batch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,55 @@
 {
+  "_args": [
+    [
+      "batch@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "batch@0.6.1",
+  "_id": "batch@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+  "_location": "/batch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "batch@0.6.1",
     "name": "batch",
-    "description": "Simple async batch with concurrency control and progress reporting.",
-    "version": "0.6.1",
-    "author": "TJ Holowaychuk <tj@vision-media.ca>",
-    "license": "MIT",
-    "devDependencies": {
-        "mocha": "*",
-        "should": "*"
-    },
-    "main": "index",
-    "browser": {
-        "emitter": "events"
-    },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/visionmedia/batch.git"
-    }
+    "escapedName": "batch",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/serve-index"
+  ],
+  "_resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": {
+    "emitter": "events"
+  },
+  "bugs": {
+    "url": "https://github.com/visionmedia/batch/issues"
+  },
+  "description": "Simple async batch with concurrency control and progress reporting.",
+  "devDependencies": {
+    "mocha": "*",
+    "should": "*"
+  },
+  "homepage": "https://github.com/visionmedia/batch#readme",
+  "license": "MIT",
+  "main": "index",
+  "name": "batch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/visionmedia/batch.git"
+  },
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/bcrypt-pbkdf/package.json
===================================================================
--- trip-planner-front/node_modules/bcrypt-pbkdf/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/bcrypt-pbkdf/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,48 @@
 {
+  "_args": [
+    [
+      "bcrypt-pbkdf@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "bcrypt-pbkdf@1.0.2",
+  "_id": "bcrypt-pbkdf@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+  "_location": "/bcrypt-pbkdf",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "bcrypt-pbkdf@1.0.2",
+    "name": "bcrypt-pbkdf",
+    "escapedName": "bcrypt-pbkdf",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/joyent/node-bcrypt-pbkdf/issues"
+  },
+  "dependencies": {
+    "tweetnacl": "^0.14.3"
+  },
+  "description": "Port of the OpenBSD bcrypt_pbkdf function to pure JS",
+  "devDependencies": {},
+  "homepage": "https://github.com/joyent/node-bcrypt-pbkdf#readme",
+  "license": "BSD-3-Clause",
+  "main": "index.js",
   "name": "bcrypt-pbkdf",
-  "version": "1.0.2",
-  "description": "Port of the OpenBSD bcrypt_pbkdf function to pure JS",
   "repository": {
     "type": "git",
     "url": "git://github.com/joyent/node-bcrypt-pbkdf.git"
   },
-  "main": "index.js",
-  "dependencies": {
-    "tweetnacl": "^0.14.3"
-  },
-  "devDependencies": {},
-  "license": "BSD-3-Clause"
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/big.js/package.json
===================================================================
--- trip-planner-front/node_modules/big.js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/big.js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,55 @@
 {
-  "name": "big.js",
+  "_args": [
+    [
+      "big.js@5.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "big.js@5.2.2",
+  "_id": "big.js@5.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+  "_location": "/big.js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "big.js@5.2.2",
+    "name": "big.js",
+    "escapedName": "big.js",
+    "rawSpec": "5.2.2",
+    "saveSpec": null,
+    "fetchSpec": "5.2.2"
+  },
+  "_requiredBy": [
+    "/babel-loader/loader-utils",
+    "/loader-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+  "_spec": "5.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Michael Mclaughlin",
+    "email": "M8ch88l@gmail.com"
+  },
+  "browser": "big.js",
+  "bugs": {
+    "url": "https://github.com/MikeMcl/big.js/issues"
+  },
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/bigjs"
+  },
   "description": "A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic",
-  "version": "5.2.2",
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "big.js",
+    "big.mjs",
+    "big.min.js"
+  ],
+  "homepage": "https://github.com/MikeMcl/big.js#readme",
   "keywords": [
     "arbitrary",
@@ -17,34 +66,16 @@
     "bignum"
   ],
+  "license": "MIT",
+  "main": "big",
+  "module": "big.mjs",
+  "name": "big.js",
   "repository": {
     "type": "git",
-    "url": "https://github.com/MikeMcl/big.js.git"
+    "url": "git+https://github.com/MikeMcl/big.js.git"
   },
-  "main": "big",
-  "browser": "big.js",
-  "module": "big.mjs",
-  "author": {
-    "name": "Michael Mclaughlin",
-    "email": "M8ch88l@gmail.com"
+  "scripts": {
+    "build": "uglifyjs big.js --source-map -c -m -o big.min.js",
+    "test": "node ./test/every-test.js"
   },
-  "bugs": {
-    "url": "https://github.com/MikeMcl/big.js/issues"
-  },
-  "engines": {
-    "node": "*"
-  },
-  "license": "MIT",
-  "scripts": {
-    "test": "node ./test/every-test.js",
-    "build": "uglifyjs big.js --source-map -c -m -o big.min.js"
-  },
-  "files": [
-    "big.js",
-    "big.mjs",
-    "big.min.js"
-  ],
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/bigjs"
-  }
+  "version": "5.2.2"
 }
Index: trip-planner-front/node_modules/binary-extensions/package.json
===================================================================
--- trip-planner-front/node_modules/binary-extensions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/binary-extensions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,74 @@
 {
-	"name": "binary-extensions",
-	"version": "2.2.0",
-	"description": "List of binary file extensions",
-	"license": "MIT",
-	"repository": "sindresorhus/binary-extensions",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"binary-extensions.json",
-		"binary-extensions.json.d.ts"
-	],
-	"keywords": [
-		"binary",
-		"extensions",
-		"extension",
-		"file",
-		"json",
-		"list",
-		"array"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "binary-extensions@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "binary-extensions@2.2.0",
+  "_id": "binary-extensions@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+  "_location": "/binary-extensions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "binary-extensions@2.2.0",
+    "name": "binary-extensions",
+    "escapedName": "binary-extensions",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/is-binary-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/binary-extensions/issues"
+  },
+  "description": "List of binary file extensions",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "binary-extensions.json",
+    "binary-extensions.json.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/binary-extensions#readme",
+  "keywords": [
+    "binary",
+    "extensions",
+    "extension",
+    "file",
+    "json",
+    "list",
+    "array"
+  ],
+  "license": "MIT",
+  "name": "binary-extensions",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/binary-extensions.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/bl/package.json
===================================================================
--- trip-planner-front/node_modules/bl/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/bl/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,32 @@
 {
-  "name": "bl",
-  "version": "4.1.0",
-  "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!",
-  "license": "MIT",
-  "main": "bl.js",
-  "scripts": {
-    "lint": "standard *.js test/*.js",
-    "test": "npm run lint && node test/test.js | faucet"
+  "_args": [
+    [
+      "bl@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "bl@4.1.0",
+  "_id": "bl@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+  "_location": "/bl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "bl@4.1.0",
+    "name": "bl",
+    "escapedName": "bl",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/rvagg/bl.git"
-  },
-  "homepage": "https://github.com/rvagg/bl",
+  "_requiredBy": [
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "Rod Vagg <rod@vagg.org> (https://github.com/rvagg)",
@@ -19,4 +34,19 @@
     "Jarett Cruger <jcrugzz@gmail.com> (https://github.com/jcrugzz)"
   ],
+  "bugs": {
+    "url": "https://github.com/rvagg/bl/issues"
+  },
+  "dependencies": {
+    "buffer": "^5.5.0",
+    "inherits": "^2.0.4",
+    "readable-stream": "^3.4.0"
+  },
+  "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!",
+  "devDependencies": {
+    "faucet": "~0.0.1",
+    "standard": "^14.3.0",
+    "tape": "^4.11.0"
+  },
+  "homepage": "https://github.com/rvagg/bl",
   "keywords": [
     "buffer",
@@ -25,13 +55,15 @@
     "awesomesauce"
   ],
-  "dependencies": {
-    "buffer": "^5.5.0",
-    "inherits": "^2.0.4",
-    "readable-stream": "^3.4.0"
+  "license": "MIT",
+  "main": "bl.js",
+  "name": "bl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/rvagg/bl.git"
   },
-  "devDependencies": {
-    "faucet": "~0.0.1",
-    "standard": "^14.3.0",
-    "tape": "^4.11.0"
-  }
+  "scripts": {
+    "lint": "standard *.js test/*.js",
+    "test": "npm run lint && node test/test.js | faucet"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/body-parser/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/body-parser/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/body-parser/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/body-parser/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/body-parser"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/body-parser/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/body-parser/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/body-parser/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/body-parser/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/body-parser/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/body-parser/package.json
===================================================================
--- trip-planner-front/node_modules/body-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/body-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,47 @@
 {
-  "name": "body-parser",
-  "description": "Node.js body parsing middleware",
-  "version": "1.19.0",
+  "_args": [
+    [
+      "body-parser@1.19.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "body-parser@1.19.0",
+  "_id": "body-parser@1.19.0",
+  "_inBundle": false,
+  "_integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+  "_location": "/body-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "body-parser@1.19.0",
+    "name": "body-parser",
+    "escapedName": "body-parser",
+    "rawSpec": "1.19.0",
+    "saveSpec": null,
+    "fetchSpec": "1.19.0"
+  },
+  "_requiredBy": [
+    "/express",
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+  "_spec": "1.19.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/expressjs/body-parser/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "expressjs/body-parser",
   "dependencies": {
     "bytes": "3.1.0",
@@ -21,4 +56,5 @@
     "type-is": "~1.6.17"
   },
+  "description": "Node.js body parsing middleware",
   "devDependencies": {
     "eslint": "5.16.0",
@@ -35,4 +71,7 @@
     "supertest": "4.0.2"
   },
+  "engines": {
+    "node": ">= 0.8"
+  },
   "files": [
     "lib/",
@@ -41,6 +80,10 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8"
+  "homepage": "https://github.com/expressjs/body-parser#readme",
+  "license": "MIT",
+  "name": "body-parser",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/expressjs/body-parser.git"
   },
   "scripts": {
@@ -49,4 +92,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "1.19.0"
 }
Index: trip-planner-front/node_modules/bonjour/package.json
===================================================================
--- trip-planner-front/node_modules/bonjour/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/bonjour/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,44 @@
 {
-  "name": "bonjour",
-  "version": "3.5.0",
-  "description": "A Bonjour/Zeroconf implementation in pure JavaScript",
-  "main": "index.js",
+  "_args": [
+    [
+      "bonjour@3.5.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "bonjour@3.5.0",
+  "_id": "bonjour@3.5.0",
+  "_inBundle": false,
+  "_integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+  "_location": "/bonjour",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "bonjour@3.5.0",
+    "name": "bonjour",
+    "escapedName": "bonjour",
+    "rawSpec": "3.5.0",
+    "saveSpec": null,
+    "fetchSpec": "3.5.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+  "_spec": "3.5.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Thomas Watson Steen",
+    "email": "w@tson.dk",
+    "url": "https://twitter.com/wa7son"
+  },
+  "bugs": {
+    "url": "https://github.com/watson/bonjour/issues"
+  },
+  "coordinates": [
+    55.68250900965318,
+    12.586377442991648
+  ],
   "dependencies": {
     "array-flatten": "^2.1.0",
@@ -12,4 +49,5 @@
     "multicast-dns-service-types": "^1.1.0"
   },
+  "description": "A Bonjour/Zeroconf implementation in pure JavaScript",
   "devDependencies": {
     "after-all": "^2.0.2",
@@ -17,11 +55,5 @@
     "tape": "^4.5.1"
   },
-  "scripts": {
-    "test": "standard && tape test/*.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/watson/bonjour.git"
-  },
+  "homepage": "https://github.com/watson/bonjour",
   "keywords": [
     "bonjour",
@@ -37,13 +69,14 @@
     "dns-sd"
   ],
-  "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/watson/bonjour/issues"
+  "main": "index.js",
+  "name": "bonjour",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/watson/bonjour.git"
   },
-  "homepage": "https://github.com/watson/bonjour",
-  "coordinates": [
-    55.68250900965318,
-    12.586377442991648
-  ]
+  "scripts": {
+    "test": "standard && tape test/*.js"
+  },
+  "version": "3.5.0"
 }
Index: trip-planner-front/node_modules/boolbase/package.json
===================================================================
--- trip-planner-front/node_modules/boolbase/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/boolbase/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,56 @@
 {
-  "name": "boolbase",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "boolbase@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "boolbase@1.0.0",
+  "_id": "boolbase@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+  "_location": "/boolbase",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "boolbase@1.0.0",
+    "name": "boolbase",
+    "escapedName": "boolbase",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/css-select",
+    "/nth-check"
+  ],
+  "_resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/boolbase/issues"
+  },
   "description": "two functions: One that returns true, one that returns false",
-  "main": "index.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/fb55/boolbase"
-  },
+  "homepage": "https://github.com/fb55/boolbase",
   "keywords": [
     "boolean",
     "function"
   ],
-  "author": "Felix Boehm <me@feedic.com>",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/fb55/boolbase/issues"
+  "main": "index.js",
+  "name": "boolbase",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/fb55/boolbase.git"
   },
-  "homepage": "https://github.com/fb55/boolbase"
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/bootstrap/CHANGELOG.md
===================================================================
--- trip-planner-front/node_modules/bootstrap/CHANGELOG.md	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,5 +1,0 @@
-Bootstrap uses [GitHub's Releases feature](https://blog.github.com/2013-07-02-release-your-software/) for its changelogs.
-
-See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
-
-Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
Index: trip-planner-front/node_modules/bootstrap/Gruntfile.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/Gruntfile.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,430 +1,0 @@
-/*!
- * Bootstrap's Gruntfile
- * https://getbootstrap.com/
- * Copyright 2013-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-module.exports = function (grunt) {
-  'use strict';
-
-  // Force use of Unix newlines
-  grunt.util.linefeed = '\n';
-
-  RegExp.quote = function (string) {
-    return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
-  };
-
-  var fs = require('fs');
-  var path = require('path');
-  var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
-  var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
-  var getLessVarsData = function () {
-    var filePath = path.join(__dirname, 'less/variables.less');
-    var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
-    var parser = new BsLessdocParser(fileContent);
-    return { sections: parser.parseFile() };
-  };
-  var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
-  var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
-  var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' });
-
-  Object.keys(configBridge.paths).forEach(function (key) {
-    configBridge.paths[key].forEach(function (val, i, arr) {
-      arr[i] = path.join('./docs/assets', val);
-    });
-  });
-
-  // Project configuration.
-  grunt.initConfig({
-
-    // Metadata.
-    pkg: grunt.file.readJSON('package.json'),
-    banner: '/*!\n' +
-            ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
-            ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
-            ' * Licensed under the <%= pkg.license %> license\n' +
-            ' */\n',
-    jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
-    jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
-
-    // Task configuration.
-    clean: {
-      dist: 'dist',
-      docs: 'docs/dist'
-    },
-
-    jshint: {
-      options: {
-        jshintrc: 'js/.jshintrc'
-      },
-      grunt: {
-        options: {
-          jshintrc: 'grunt/.jshintrc'
-        },
-        src: ['Gruntfile.js', 'package.js', 'grunt/*.js']
-      },
-      core: {
-        src: 'js/*.js'
-      },
-      test: {
-        options: {
-          jshintrc: 'js/tests/unit/.jshintrc'
-        },
-        src: 'js/tests/unit/*.js'
-      },
-      assets: {
-        src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
-      }
-    },
-
-    jscs: {
-      options: {
-        config: 'js/.jscsrc'
-      },
-      grunt: {
-        src: '<%= jshint.grunt.src %>'
-      },
-      core: {
-        src: '<%= jshint.core.src %>'
-      },
-      test: {
-        src: '<%= jshint.test.src %>'
-      },
-      assets: {
-        options: {
-          requireCamelCaseOrUpperCaseIdentifiers: null
-        },
-        src: '<%= jshint.assets.src %>'
-      }
-    },
-
-    concat: {
-      options: {
-        banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
-        stripBanners: false
-      },
-      core: {
-        src: [
-          'js/transition.js',
-          'js/alert.js',
-          'js/button.js',
-          'js/carousel.js',
-          'js/collapse.js',
-          'js/dropdown.js',
-          'js/modal.js',
-          'js/tooltip.js',
-          'js/popover.js',
-          'js/scrollspy.js',
-          'js/tab.js',
-          'js/affix.js'
-        ],
-        dest: 'dist/js/<%= pkg.name %>.js'
-      }
-    },
-
-    uglify: {
-      options: {
-        compress: true,
-        mangle: true,
-        ie8: true,
-        output: {
-          comments: /^!|@preserve|@license|@cc_on/i
-        }
-      },
-      core: {
-        src: '<%= concat.core.dest %>',
-        dest: 'dist/js/<%= pkg.name %>.min.js'
-      },
-      customize: {
-        src: configBridge.paths.customizerJs,
-        dest: 'docs/assets/js/customize.min.js'
-      },
-      docs: {
-        src: configBridge.paths.docsJs,
-        dest: 'docs/assets/js/docs.min.js'
-      }
-    },
-
-    less: {
-      options: {
-        ieCompat: true,
-        strictMath: true,
-        sourceMap: true,
-        outputSourceFiles: true
-      },
-      core: {
-        options: {
-          sourceMapURL: '<%= pkg.name %>.css.map',
-          sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
-        },
-        src: 'less/bootstrap.less',
-        dest: 'dist/css/<%= pkg.name %>.css'
-      },
-      theme: {
-        options: {
-          sourceMapURL: '<%= pkg.name %>-theme.css.map',
-          sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
-        },
-        src: 'less/theme.less',
-        dest: 'dist/css/<%= pkg.name %>-theme.css'
-      },
-      docs: {
-        options: {
-          sourceMapURL: 'docs.css.map',
-          sourceMapFilename: 'docs/assets/css/docs.css.map'
-        },
-        src: 'docs/assets/less/docs.less',
-        dest: 'docs/assets/css/docs.css'
-      },
-      docsIe: {
-        options: {
-          sourceMap: false
-        },
-        src: 'docs/assets/less/ie10-viewport-bug-workaround.less',
-        dest: 'docs/assets/css/ie10-viewport-bug-workaround.css'
-      }
-    },
-
-    postcss: {
-      options: {
-        map: {
-          inline: false,
-          sourcesContent: true
-        },
-        processors: [
-          require('autoprefixer')(configBridge.config.autoprefixer)
-        ]
-      },
-      core: {
-        src: 'dist/css/<%= pkg.name %>.css'
-      },
-      theme: {
-        src: 'dist/css/<%= pkg.name %>-theme.css'
-      },
-      docs: {
-        src: 'docs/assets/css/docs.css'
-      },
-      examples: {
-        options: {
-          map: false
-        },
-        expand: true,
-        cwd: 'docs/examples/',
-        src: ['**/*.css'],
-        dest: 'docs/examples/'
-      }
-    },
-
-    stylelint: {
-      options: {
-        configFile: 'grunt/.stylelintrc',
-        reportNeedlessDisables: false
-      },
-      dist: [
-        'less/**/*.less'
-      ],
-      docs: [
-        'docs/assets/less/**/*.less'
-      ],
-      examples: [
-        'docs/examples/**/*.css'
-      ]
-    },
-
-    cssmin: {
-      options: {
-        compatibility: 'ie8',
-        sourceMap: true,
-        sourceMapInlineSources: true,
-        level: {
-          1: {
-            specialComments: 'all'
-          }
-        }
-      },
-      core: {
-        src: 'dist/css/<%= pkg.name %>.css',
-        dest: 'dist/css/<%= pkg.name %>.min.css'
-      },
-      theme: {
-        src: 'dist/css/<%= pkg.name %>-theme.css',
-        dest: 'dist/css/<%= pkg.name %>-theme.min.css'
-      },
-      docs: {
-        src: 'docs/assets/css/docs.css',
-        dest: 'docs/assets/css/docs.min.css'
-      }
-    },
-
-    copy: {
-      fonts: {
-        expand: true,
-        src: 'fonts/**',
-        dest: 'dist/'
-      },
-      docs: {
-        expand: true,
-        cwd: 'dist/',
-        src: [
-          '**/*'
-        ],
-        dest: 'docs/dist/'
-      }
-    },
-
-    connect: {
-      server: {
-        options: {
-          port: 3000,
-          base: '.'
-        }
-      }
-    },
-
-    jekyll: {
-      options: {
-        bundleExec: true,
-        config: '_config.yml',
-        incremental: false
-      },
-      docs: {},
-      github: {
-        options: {
-          raw: 'github: true'
-        }
-      }
-    },
-
-    pug: {
-      options: {
-        pretty: true,
-        data: getLessVarsData
-      },
-      customizerVars: {
-        src: 'docs/_pug/customizer-variables.pug',
-        dest: 'docs/_includes/customizer-variables.html'
-      },
-      customizerNav: {
-        src: 'docs/_pug/customizer-nav.pug',
-        dest: 'docs/_includes/nav/customize.html'
-      }
-    },
-
-    htmllint: {
-      options: {
-        ignore: [
-          'Element "img" is missing required attribute "src".'
-        ],
-        noLangDetect: true
-      },
-      src: ['_gh_pages/**/*.html', 'js/tests/**/*.html']
-    },
-
-    watch: {
-      src: {
-        files: '<%= jshint.core.src %>',
-        tasks: ['jshint:core', 'exec:karma', 'concat']
-      },
-      test: {
-        files: '<%= jshint.test.src %>',
-        tasks: ['jshint:test', 'exec:karma']
-      },
-      less: {
-        files: 'less/**/*.less',
-        tasks: ['less', 'copy']
-      },
-      docs: {
-        files: 'docs/assets/less/**/*.less',
-        tasks: ['less']
-      }
-    },
-
-    exec: {
-      browserstack: {
-        command: 'cross-env BROWSER=true karma start grunt/karma.conf.js'
-      },
-      karma: {
-        command: 'karma start grunt/karma.conf.js'
-      }
-    }
-  });
-
-
-  // These plugins provide necessary tasks.
-  require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
-  require('time-grunt')(grunt);
-
-  // Docs HTML validation task
-  grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']);
-
-  var runSubset = function (subset) {
-    return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
-  };
-  var isUndefOrNonZero = function (val) {
-    return typeof val === 'undefined' || val !== '0';
-  };
-
-  // Test task.
-  var testSubtasks = [];
-  // Skip core tests if running a different subset of the test suite
-  if (runSubset('core')) {
-    testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'stylelint:dist', 'test-js', 'docs']);
-  }
-  // Skip HTML validation if running a different subset of the test suite
-  if (runSubset('validate-html') &&
-      // Skip HTML5 validator on Travis when [skip validator] is in the commit message
-      isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
-    testSubtasks.push('validate-html');
-  }
-  // Only run BrowserStack tests if there's a BrowserStack access key
-  if (typeof process.env.BROWSER_STACK_USERNAME !== 'undefined' &&
-      // Skip BrowserStack if running a different subset of the test suite
-      runSubset('browserstack') &&
-      // Skip BrowserStack on Travis when [skip browserstack] is in the commit message
-      isUndefOrNonZero(process.env.TWBS_DO_BROWSERSTACK)) {
-    testSubtasks.push('exec:browserstack');
-  }
-
-  grunt.registerTask('test', testSubtasks);
-  grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'exec:karma']);
-
-  // JS distribution task.
-  grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
-
-  // CSS distribution task.
-  grunt.registerTask('dist-css', ['less:core', 'less:theme', 'postcss:core', 'postcss:theme', 'cssmin:core', 'cssmin:theme']);
-
-  // Full distribution task.
-  grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
-
-  // Default task.
-  grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
-
-  grunt.registerTask('build-glyphicons-data', function () {
-    generateGlyphiconsData.call(this, grunt);
-  });
-
-  // task for building customizer
-  grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
-  grunt.registerTask('build-customizer-html', 'pug');
-  grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
-    var banner = grunt.template.process('<%= banner %>');
-    generateRawFiles(grunt, banner);
-  });
-
-  grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
-    var srcFiles = grunt.config.get('concat.core.src');
-    var destFilepath = 'dist/js/npm.js';
-    generateCommonJSModule(grunt, srcFiles, destFilepath);
-  });
-
-  // Docs task.
-  grunt.registerTask('docs-css', ['less:docs', 'less:docsIe', 'postcss:docs', 'postcss:examples', 'cssmin:docs']);
-  grunt.registerTask('lint-docs-css', ['stylelint:docs', 'stylelint:examples']);
-  grunt.registerTask('docs-js', ['uglify:docs', 'uglify:customize']);
-  grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
-  grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
-
-  grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github']);
-};
Index: trip-planner-front/node_modules/bootstrap/LICENSE
===================================================================
--- trip-planner-front/node_modules/bootstrap/LICENSE	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2011-2019 Twitter, Inc.
-
-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.
Index: trip-planner-front/node_modules/bootstrap/README.md
===================================================================
--- trip-planner-front/node_modules/bootstrap/README.md	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,149 +1,0 @@
-# [Bootstrap](https://getbootstrap.com/)
-
-[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
-![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
-[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
-[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
-[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
-[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
-
-Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
-
-To get started, check out <https://getbootstrap.com/>!
-
-
-## Table of contents
-
-* [Quick start](#quick-start)
-* [Bugs and feature requests](#bugs-and-feature-requests)
-* [Documentation](#documentation)
-* [Contributing](#contributing)
-* [Community](#community)
-* [Versioning](#versioning)
-* [Creators](#creators)
-* [Thanks](#thanks)
-* [Copyright and license](#copyright-and-license)
-
-
-## Quick start
-
-Several quick start options are available:
-
-* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.4.1.zip).
-* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
-* Install with [Bower](https://bower.io/): `bower install bootstrap`.
-* Install with [npm](https://www.npmjs.com/): `npm install bootstrap@3`.
-* Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
-* Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap`.
-
-Read the [Getting started page](https://getbootstrap.com/docs/3.4/getting-started/) for information on the framework contents, templates and examples, and more.
-
-### What's included
-
-Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
-
-```
-bootstrap/
-├── css/
-│   ├── bootstrap.css
-│   ├── bootstrap.css.map
-│   ├── bootstrap.min.css
-│   ├── bootstrap.min.css.map
-│   ├── bootstrap-theme.css
-│   ├── bootstrap-theme.css.map
-│   ├── bootstrap-theme.min.css
-│   └── bootstrap-theme.min.css.map
-├── js/
-│   ├── bootstrap.js
-│   └── bootstrap.min.js
-└── fonts/
-    ├── glyphicons-halflings-regular.eot
-    ├── glyphicons-halflings-regular.svg
-    ├── glyphicons-halflings-regular.ttf
-    ├── glyphicons-halflings-regular.woff
-    └── glyphicons-halflings-regular.woff2
-```
-
-We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
-
-
-## Bugs and feature requests
-
-Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
-
-Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4.
-
-
-## Documentation
-
-Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
-
-### Running documentation locally
-
-1. If necessary, [install Jekyll](https://jekyllrb.com/docs/installation/) and other Ruby dependencies with `bundle install`.
-   **Note for Windows users:** Read [this guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
-2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line.
-4. Open `http://localhost:9001` in your browser, and voilà.
-
-Learn more about using Jekyll by reading its [documentation](https://jekyllrb.com/docs/).
-
-### Documentation for previous releases
-
-Documentation for v2.3.2 has been made available for the time being at <https://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
-
-[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
-
-
-## Contributing
-
-Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
-
-Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
-
-**Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead.
-
-Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
-
-
-## Community
-
-Get updates on Bootstrap's development and chat with the project maintainers and community members.
-
-* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
-* Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
-* Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
-* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
-* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
-* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.
-
-
-## Versioning
-
-For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
-
-See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
-
-
-## Thanks
-
-<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="490" height="106">
-
-Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
-
-
-## Creators
-
-**Mark Otto**
-
-* <https://twitter.com/mdo>
-* <https://github.com/mdo>
-
-**Jacob Thornton**
-
-* <https://twitter.com/fat>
-* <https://github.com/fat>
-
-
-## Copyright and license
-
-Code and documentation copyright 2011-2019 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.css
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.css	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,587 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.btn-default:active,
-.btn-primary:active,
-.btn-success:active,
-.btn-info:active,
-.btn-warning:active,
-.btn-danger:active,
-.btn-default.active,
-.btn-primary.active,
-.btn-success.active,
-.btn-info.active,
-.btn-warning.active,
-.btn-danger.active {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn-default.disabled,
-.btn-primary.disabled,
-.btn-success.disabled,
-.btn-info.disabled,
-.btn-warning.disabled,
-.btn-danger.disabled,
-.btn-default[disabled],
-.btn-primary[disabled],
-.btn-success[disabled],
-.btn-info[disabled],
-.btn-warning[disabled],
-.btn-danger[disabled],
-fieldset[disabled] .btn-default,
-fieldset[disabled] .btn-primary,
-fieldset[disabled] .btn-success,
-fieldset[disabled] .btn-info,
-fieldset[disabled] .btn-warning,
-fieldset[disabled] .btn-danger {
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-.btn-default .badge,
-.btn-primary .badge,
-.btn-success .badge,
-.btn-info .badge,
-.btn-warning .badge,
-.btn-danger .badge {
-  text-shadow: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-}
-.btn-default {
-  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
-  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
-  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #dbdbdb;
-  text-shadow: 0 1px 0 #fff;
-  border-color: #ccc;
-}
-.btn-default:hover,
-.btn-default:focus {
-  background-color: #e0e0e0;
-  background-position: 0 -15px;
-}
-.btn-default:active,
-.btn-default.active {
-  background-color: #e0e0e0;
-  border-color: #dbdbdb;
-}
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #e0e0e0;
-  background-image: none;
-}
-.btn-primary {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
-  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
-  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #245580;
-}
-.btn-primary:hover,
-.btn-primary:focus {
-  background-color: #265a88;
-  background-position: 0 -15px;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #265a88;
-  border-color: #245580;
-}
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #265a88;
-  background-image: none;
-}
-.btn-success {
-  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
-  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
-  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #3e8f3e;
-}
-.btn-success:hover,
-.btn-success:focus {
-  background-color: #419641;
-  background-position: 0 -15px;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #419641;
-  border-color: #3e8f3e;
-}
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #419641;
-  background-image: none;
-}
-.btn-info {
-  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
-  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
-  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #28a4c9;
-}
-.btn-info:hover,
-.btn-info:focus {
-  background-color: #2aabd2;
-  background-position: 0 -15px;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #2aabd2;
-  border-color: #28a4c9;
-}
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #2aabd2;
-  background-image: none;
-}
-.btn-warning {
-  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
-  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
-  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #e38d13;
-}
-.btn-warning:hover,
-.btn-warning:focus {
-  background-color: #eb9316;
-  background-position: 0 -15px;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #eb9316;
-  border-color: #e38d13;
-}
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #eb9316;
-  background-image: none;
-}
-.btn-danger {
-  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
-  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
-  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #b92c28;
-}
-.btn-danger:hover,
-.btn-danger:focus {
-  background-color: #c12e2a;
-  background-position: 0 -15px;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #c12e2a;
-  border-color: #b92c28;
-}
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #c12e2a;
-  background-image: none;
-}
-.thumbnail,
-.img-thumbnail {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
-  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-  background-repeat: repeat-x;
-  background-color: #e8e8e8;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-  background-repeat: repeat-x;
-  background-color: #2e6da4;
-}
-.navbar-default {
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
-  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .active > a {
-  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
-  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
-  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
-  background-repeat: repeat-x;
-  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
-}
-.navbar-brand,
-.navbar-nav > li > a {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-}
-.navbar-inverse {
-  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
-  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
-  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border-radius: 4px;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .active > a {
-  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
-  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
-  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
-  background-repeat: repeat-x;
-  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
-  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .navbar-brand,
-.navbar-inverse .navbar-nav > li > a {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  border-radius: 0;
-}
-@media (max-width: 767px) {
-  .navbar .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-    background-repeat: repeat-x;
-  }
-}
-.alert {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.alert-success {
-  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
-  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
-  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #b2dba1;
-}
-.alert-info {
-  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
-  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
-  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #9acfea;
-}
-.alert-warning {
-  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
-  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
-  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #f5e79e;
-}
-.alert-danger {
-  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
-  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
-  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #dca7a7;
-}
-.progress {
-  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
-  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
-  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
-  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
-  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-success {
-  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
-  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-info {
-  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
-  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-warning {
-  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
-  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-danger {
-  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
-  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-striped {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.list-group {
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  text-shadow: 0 -1px 0 #286090;
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
-  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
-  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #2b669a;
-}
-.list-group-item.active .badge,
-.list-group-item.active:hover .badge,
-.list-group-item.active:focus .badge {
-  text-shadow: none;
-}
-.panel {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.panel-default > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
-  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-primary > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-success > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
-  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
-  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-info > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
-  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
-  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-warning > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
-  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
-  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-danger > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
-  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
-  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
-  background-repeat: repeat-x;
-}
-.well {
-  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
-  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
-  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #dcdcdc;
-  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
-}
-/*# sourceMappingURL=bootstrap-theme.css.map */
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.css.map
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.css.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    .box-shadow(none);\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: darken(@btn-color, 12%);\n      background-image: none;\n    }\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n  .btn-styles(@btn-default-bg);\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n  border-radius: @navbar-border-radius;\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n  .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n  word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.min.css
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.min.css	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,6 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x;background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x;background-color:#2e6da4}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
-/*# sourceMappingURL=bootstrap-theme.min.css.map */
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"sources":["bootstrap-theme.css","dist/css/bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n  background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n  background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  background-repeat: repeat-x;\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n    background-repeat: repeat-x;\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #b2dba1;\n}\n.alert-info {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n  background-repeat: repeat-x;\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n  background-repeat: repeat-x;\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  background-repeat: repeat-x;\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    .box-shadow(none);\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: darken(@btn-color, 12%);\n      background-image: none;\n    }\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n  .btn-styles(@btn-default-bg);\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n  border-radius: @navbar-border-radius;\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n  .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n  word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.css
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.css	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,6834 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html {
-  font-family: sans-serif;
-  -ms-text-size-adjust: 100%;
-  -webkit-text-size-adjust: 100%;
-}
-body {
-  margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
-  display: block;
-}
-audio,
-canvas,
-progress,
-video {
-  display: inline-block;
-  vertical-align: baseline;
-}
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-[hidden],
-template {
-  display: none;
-}
-a {
-  background-color: transparent;
-}
-a:active,
-a:hover {
-  outline: 0;
-}
-abbr[title] {
-  border-bottom: none;
-  text-decoration: underline;
-  -webkit-text-decoration: underline dotted;
-  -moz-text-decoration: underline dotted;
-  text-decoration: underline dotted;
-}
-b,
-strong {
-  font-weight: bold;
-}
-dfn {
-  font-style: italic;
-}
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-mark {
-  background: #ff0;
-  color: #000;
-}
-small {
-  font-size: 80%;
-}
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  border: 0;
-}
-svg:not(:root) {
-  overflow: hidden;
-}
-figure {
-  margin: 1em 40px;
-}
-hr {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  height: 0;
-}
-pre {
-  overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
-  color: inherit;
-  font: inherit;
-  margin: 0;
-}
-button {
-  overflow: visible;
-}
-button,
-select {
-  text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-input {
-  line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-fieldset {
-  border: 1px solid #c0c0c0;
-  margin: 0 2px;
-  padding: 0.35em 0.625em 0.75em;
-}
-legend {
-  border: 0;
-  padding: 0;
-}
-textarea {
-  overflow: auto;
-}
-optgroup {
-  font-weight: bold;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-td,
-th {
-  padding: 0;
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print {
-  *,
-  *:before,
-  *:after {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    -webkit-box-shadow: none !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  a[href^="#"]:after,
-  a[href^="javascript:"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-  .navbar {
-    display: none;
-  }
-  .btn > .caret,
-  .dropup > .btn > .caret {
-    border-top-color: #000 !important;
-  }
-  .label {
-    border: 1px solid #000;
-  }
-  .table {
-    border-collapse: collapse !important;
-  }
-  .table td,
-  .table th {
-    background-color: #fff !important;
-  }
-  .table-bordered th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-@font-face {
-  font-family: "Glyphicons Halflings";
-  src: url("../fonts/glyphicons-halflings-regular.eot");
-  src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg");
-}
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: "Glyphicons Halflings";
-  font-style: normal;
-  font-weight: 400;
-  line-height: 1;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
-  content: "\002a";
-}
-.glyphicon-plus:before {
-  content: "\002b";
-}
-.glyphicon-euro:before,
-.glyphicon-eur:before {
-  content: "\20ac";
-}
-.glyphicon-minus:before {
-  content: "\2212";
-}
-.glyphicon-cloud:before {
-  content: "\2601";
-}
-.glyphicon-envelope:before {
-  content: "\2709";
-}
-.glyphicon-pencil:before {
-  content: "\270f";
-}
-.glyphicon-glass:before {
-  content: "\e001";
-}
-.glyphicon-music:before {
-  content: "\e002";
-}
-.glyphicon-search:before {
-  content: "\e003";
-}
-.glyphicon-heart:before {
-  content: "\e005";
-}
-.glyphicon-star:before {
-  content: "\e006";
-}
-.glyphicon-star-empty:before {
-  content: "\e007";
-}
-.glyphicon-user:before {
-  content: "\e008";
-}
-.glyphicon-film:before {
-  content: "\e009";
-}
-.glyphicon-th-large:before {
-  content: "\e010";
-}
-.glyphicon-th:before {
-  content: "\e011";
-}
-.glyphicon-th-list:before {
-  content: "\e012";
-}
-.glyphicon-ok:before {
-  content: "\e013";
-}
-.glyphicon-remove:before {
-  content: "\e014";
-}
-.glyphicon-zoom-in:before {
-  content: "\e015";
-}
-.glyphicon-zoom-out:before {
-  content: "\e016";
-}
-.glyphicon-off:before {
-  content: "\e017";
-}
-.glyphicon-signal:before {
-  content: "\e018";
-}
-.glyphicon-cog:before {
-  content: "\e019";
-}
-.glyphicon-trash:before {
-  content: "\e020";
-}
-.glyphicon-home:before {
-  content: "\e021";
-}
-.glyphicon-file:before {
-  content: "\e022";
-}
-.glyphicon-time:before {
-  content: "\e023";
-}
-.glyphicon-road:before {
-  content: "\e024";
-}
-.glyphicon-download-alt:before {
-  content: "\e025";
-}
-.glyphicon-download:before {
-  content: "\e026";
-}
-.glyphicon-upload:before {
-  content: "\e027";
-}
-.glyphicon-inbox:before {
-  content: "\e028";
-}
-.glyphicon-play-circle:before {
-  content: "\e029";
-}
-.glyphicon-repeat:before {
-  content: "\e030";
-}
-.glyphicon-refresh:before {
-  content: "\e031";
-}
-.glyphicon-list-alt:before {
-  content: "\e032";
-}
-.glyphicon-lock:before {
-  content: "\e033";
-}
-.glyphicon-flag:before {
-  content: "\e034";
-}
-.glyphicon-headphones:before {
-  content: "\e035";
-}
-.glyphicon-volume-off:before {
-  content: "\e036";
-}
-.glyphicon-volume-down:before {
-  content: "\e037";
-}
-.glyphicon-volume-up:before {
-  content: "\e038";
-}
-.glyphicon-qrcode:before {
-  content: "\e039";
-}
-.glyphicon-barcode:before {
-  content: "\e040";
-}
-.glyphicon-tag:before {
-  content: "\e041";
-}
-.glyphicon-tags:before {
-  content: "\e042";
-}
-.glyphicon-book:before {
-  content: "\e043";
-}
-.glyphicon-bookmark:before {
-  content: "\e044";
-}
-.glyphicon-print:before {
-  content: "\e045";
-}
-.glyphicon-camera:before {
-  content: "\e046";
-}
-.glyphicon-font:before {
-  content: "\e047";
-}
-.glyphicon-bold:before {
-  content: "\e048";
-}
-.glyphicon-italic:before {
-  content: "\e049";
-}
-.glyphicon-text-height:before {
-  content: "\e050";
-}
-.glyphicon-text-width:before {
-  content: "\e051";
-}
-.glyphicon-align-left:before {
-  content: "\e052";
-}
-.glyphicon-align-center:before {
-  content: "\e053";
-}
-.glyphicon-align-right:before {
-  content: "\e054";
-}
-.glyphicon-align-justify:before {
-  content: "\e055";
-}
-.glyphicon-list:before {
-  content: "\e056";
-}
-.glyphicon-indent-left:before {
-  content: "\e057";
-}
-.glyphicon-indent-right:before {
-  content: "\e058";
-}
-.glyphicon-facetime-video:before {
-  content: "\e059";
-}
-.glyphicon-picture:before {
-  content: "\e060";
-}
-.glyphicon-map-marker:before {
-  content: "\e062";
-}
-.glyphicon-adjust:before {
-  content: "\e063";
-}
-.glyphicon-tint:before {
-  content: "\e064";
-}
-.glyphicon-edit:before {
-  content: "\e065";
-}
-.glyphicon-share:before {
-  content: "\e066";
-}
-.glyphicon-check:before {
-  content: "\e067";
-}
-.glyphicon-move:before {
-  content: "\e068";
-}
-.glyphicon-step-backward:before {
-  content: "\e069";
-}
-.glyphicon-fast-backward:before {
-  content: "\e070";
-}
-.glyphicon-backward:before {
-  content: "\e071";
-}
-.glyphicon-play:before {
-  content: "\e072";
-}
-.glyphicon-pause:before {
-  content: "\e073";
-}
-.glyphicon-stop:before {
-  content: "\e074";
-}
-.glyphicon-forward:before {
-  content: "\e075";
-}
-.glyphicon-fast-forward:before {
-  content: "\e076";
-}
-.glyphicon-step-forward:before {
-  content: "\e077";
-}
-.glyphicon-eject:before {
-  content: "\e078";
-}
-.glyphicon-chevron-left:before {
-  content: "\e079";
-}
-.glyphicon-chevron-right:before {
-  content: "\e080";
-}
-.glyphicon-plus-sign:before {
-  content: "\e081";
-}
-.glyphicon-minus-sign:before {
-  content: "\e082";
-}
-.glyphicon-remove-sign:before {
-  content: "\e083";
-}
-.glyphicon-ok-sign:before {
-  content: "\e084";
-}
-.glyphicon-question-sign:before {
-  content: "\e085";
-}
-.glyphicon-info-sign:before {
-  content: "\e086";
-}
-.glyphicon-screenshot:before {
-  content: "\e087";
-}
-.glyphicon-remove-circle:before {
-  content: "\e088";
-}
-.glyphicon-ok-circle:before {
-  content: "\e089";
-}
-.glyphicon-ban-circle:before {
-  content: "\e090";
-}
-.glyphicon-arrow-left:before {
-  content: "\e091";
-}
-.glyphicon-arrow-right:before {
-  content: "\e092";
-}
-.glyphicon-arrow-up:before {
-  content: "\e093";
-}
-.glyphicon-arrow-down:before {
-  content: "\e094";
-}
-.glyphicon-share-alt:before {
-  content: "\e095";
-}
-.glyphicon-resize-full:before {
-  content: "\e096";
-}
-.glyphicon-resize-small:before {
-  content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
-  content: "\e101";
-}
-.glyphicon-gift:before {
-  content: "\e102";
-}
-.glyphicon-leaf:before {
-  content: "\e103";
-}
-.glyphicon-fire:before {
-  content: "\e104";
-}
-.glyphicon-eye-open:before {
-  content: "\e105";
-}
-.glyphicon-eye-close:before {
-  content: "\e106";
-}
-.glyphicon-warning-sign:before {
-  content: "\e107";
-}
-.glyphicon-plane:before {
-  content: "\e108";
-}
-.glyphicon-calendar:before {
-  content: "\e109";
-}
-.glyphicon-random:before {
-  content: "\e110";
-}
-.glyphicon-comment:before {
-  content: "\e111";
-}
-.glyphicon-magnet:before {
-  content: "\e112";
-}
-.glyphicon-chevron-up:before {
-  content: "\e113";
-}
-.glyphicon-chevron-down:before {
-  content: "\e114";
-}
-.glyphicon-retweet:before {
-  content: "\e115";
-}
-.glyphicon-shopping-cart:before {
-  content: "\e116";
-}
-.glyphicon-folder-close:before {
-  content: "\e117";
-}
-.glyphicon-folder-open:before {
-  content: "\e118";
-}
-.glyphicon-resize-vertical:before {
-  content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
-  content: "\e120";
-}
-.glyphicon-hdd:before {
-  content: "\e121";
-}
-.glyphicon-bullhorn:before {
-  content: "\e122";
-}
-.glyphicon-bell:before {
-  content: "\e123";
-}
-.glyphicon-certificate:before {
-  content: "\e124";
-}
-.glyphicon-thumbs-up:before {
-  content: "\e125";
-}
-.glyphicon-thumbs-down:before {
-  content: "\e126";
-}
-.glyphicon-hand-right:before {
-  content: "\e127";
-}
-.glyphicon-hand-left:before {
-  content: "\e128";
-}
-.glyphicon-hand-up:before {
-  content: "\e129";
-}
-.glyphicon-hand-down:before {
-  content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
-  content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
-  content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
-  content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
-  content: "\e134";
-}
-.glyphicon-globe:before {
-  content: "\e135";
-}
-.glyphicon-wrench:before {
-  content: "\e136";
-}
-.glyphicon-tasks:before {
-  content: "\e137";
-}
-.glyphicon-filter:before {
-  content: "\e138";
-}
-.glyphicon-briefcase:before {
-  content: "\e139";
-}
-.glyphicon-fullscreen:before {
-  content: "\e140";
-}
-.glyphicon-dashboard:before {
-  content: "\e141";
-}
-.glyphicon-paperclip:before {
-  content: "\e142";
-}
-.glyphicon-heart-empty:before {
-  content: "\e143";
-}
-.glyphicon-link:before {
-  content: "\e144";
-}
-.glyphicon-phone:before {
-  content: "\e145";
-}
-.glyphicon-pushpin:before {
-  content: "\e146";
-}
-.glyphicon-usd:before {
-  content: "\e148";
-}
-.glyphicon-gbp:before {
-  content: "\e149";
-}
-.glyphicon-sort:before {
-  content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152";
-}
-.glyphicon-sort-by-order:before {
-  content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
-  content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156";
-}
-.glyphicon-unchecked:before {
-  content: "\e157";
-}
-.glyphicon-expand:before {
-  content: "\e158";
-}
-.glyphicon-collapse-down:before {
-  content: "\e159";
-}
-.glyphicon-collapse-up:before {
-  content: "\e160";
-}
-.glyphicon-log-in:before {
-  content: "\e161";
-}
-.glyphicon-flash:before {
-  content: "\e162";
-}
-.glyphicon-log-out:before {
-  content: "\e163";
-}
-.glyphicon-new-window:before {
-  content: "\e164";
-}
-.glyphicon-record:before {
-  content: "\e165";
-}
-.glyphicon-save:before {
-  content: "\e166";
-}
-.glyphicon-open:before {
-  content: "\e167";
-}
-.glyphicon-saved:before {
-  content: "\e168";
-}
-.glyphicon-import:before {
-  content: "\e169";
-}
-.glyphicon-export:before {
-  content: "\e170";
-}
-.glyphicon-send:before {
-  content: "\e171";
-}
-.glyphicon-floppy-disk:before {
-  content: "\e172";
-}
-.glyphicon-floppy-saved:before {
-  content: "\e173";
-}
-.glyphicon-floppy-remove:before {
-  content: "\e174";
-}
-.glyphicon-floppy-save:before {
-  content: "\e175";
-}
-.glyphicon-floppy-open:before {
-  content: "\e176";
-}
-.glyphicon-credit-card:before {
-  content: "\e177";
-}
-.glyphicon-transfer:before {
-  content: "\e178";
-}
-.glyphicon-cutlery:before {
-  content: "\e179";
-}
-.glyphicon-header:before {
-  content: "\e180";
-}
-.glyphicon-compressed:before {
-  content: "\e181";
-}
-.glyphicon-earphone:before {
-  content: "\e182";
-}
-.glyphicon-phone-alt:before {
-  content: "\e183";
-}
-.glyphicon-tower:before {
-  content: "\e184";
-}
-.glyphicon-stats:before {
-  content: "\e185";
-}
-.glyphicon-sd-video:before {
-  content: "\e186";
-}
-.glyphicon-hd-video:before {
-  content: "\e187";
-}
-.glyphicon-subtitles:before {
-  content: "\e188";
-}
-.glyphicon-sound-stereo:before {
-  content: "\e189";
-}
-.glyphicon-sound-dolby:before {
-  content: "\e190";
-}
-.glyphicon-sound-5-1:before {
-  content: "\e191";
-}
-.glyphicon-sound-6-1:before {
-  content: "\e192";
-}
-.glyphicon-sound-7-1:before {
-  content: "\e193";
-}
-.glyphicon-copyright-mark:before {
-  content: "\e194";
-}
-.glyphicon-registration-mark:before {
-  content: "\e195";
-}
-.glyphicon-cloud-download:before {
-  content: "\e197";
-}
-.glyphicon-cloud-upload:before {
-  content: "\e198";
-}
-.glyphicon-tree-conifer:before {
-  content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
-  content: "\e200";
-}
-.glyphicon-cd:before {
-  content: "\e201";
-}
-.glyphicon-save-file:before {
-  content: "\e202";
-}
-.glyphicon-open-file:before {
-  content: "\e203";
-}
-.glyphicon-level-up:before {
-  content: "\e204";
-}
-.glyphicon-copy:before {
-  content: "\e205";
-}
-.glyphicon-paste:before {
-  content: "\e206";
-}
-.glyphicon-alert:before {
-  content: "\e209";
-}
-.glyphicon-equalizer:before {
-  content: "\e210";
-}
-.glyphicon-king:before {
-  content: "\e211";
-}
-.glyphicon-queen:before {
-  content: "\e212";
-}
-.glyphicon-pawn:before {
-  content: "\e213";
-}
-.glyphicon-bishop:before {
-  content: "\e214";
-}
-.glyphicon-knight:before {
-  content: "\e215";
-}
-.glyphicon-baby-formula:before {
-  content: "\e216";
-}
-.glyphicon-tent:before {
-  content: "\26fa";
-}
-.glyphicon-blackboard:before {
-  content: "\e218";
-}
-.glyphicon-bed:before {
-  content: "\e219";
-}
-.glyphicon-apple:before {
-  content: "\f8ff";
-}
-.glyphicon-erase:before {
-  content: "\e221";
-}
-.glyphicon-hourglass:before {
-  content: "\231b";
-}
-.glyphicon-lamp:before {
-  content: "\e223";
-}
-.glyphicon-duplicate:before {
-  content: "\e224";
-}
-.glyphicon-piggy-bank:before {
-  content: "\e225";
-}
-.glyphicon-scissors:before {
-  content: "\e226";
-}
-.glyphicon-bitcoin:before {
-  content: "\e227";
-}
-.glyphicon-btc:before {
-  content: "\e227";
-}
-.glyphicon-xbt:before {
-  content: "\e227";
-}
-.glyphicon-yen:before {
-  content: "\00a5";
-}
-.glyphicon-jpy:before {
-  content: "\00a5";
-}
-.glyphicon-ruble:before {
-  content: "\20bd";
-}
-.glyphicon-rub:before {
-  content: "\20bd";
-}
-.glyphicon-scale:before {
-  content: "\e230";
-}
-.glyphicon-ice-lolly:before {
-  content: "\e231";
-}
-.glyphicon-ice-lolly-tasted:before {
-  content: "\e232";
-}
-.glyphicon-education:before {
-  content: "\e233";
-}
-.glyphicon-option-horizontal:before {
-  content: "\e234";
-}
-.glyphicon-option-vertical:before {
-  content: "\e235";
-}
-.glyphicon-menu-hamburger:before {
-  content: "\e236";
-}
-.glyphicon-modal-window:before {
-  content: "\e237";
-}
-.glyphicon-oil:before {
-  content: "\e238";
-}
-.glyphicon-grain:before {
-  content: "\e239";
-}
-.glyphicon-sunglasses:before {
-  content: "\e240";
-}
-.glyphicon-text-size:before {
-  content: "\e241";
-}
-.glyphicon-text-color:before {
-  content: "\e242";
-}
-.glyphicon-text-background:before {
-  content: "\e243";
-}
-.glyphicon-object-align-top:before {
-  content: "\e244";
-}
-.glyphicon-object-align-bottom:before {
-  content: "\e245";
-}
-.glyphicon-object-align-horizontal:before {
-  content: "\e246";
-}
-.glyphicon-object-align-left:before {
-  content: "\e247";
-}
-.glyphicon-object-align-vertical:before {
-  content: "\e248";
-}
-.glyphicon-object-align-right:before {
-  content: "\e249";
-}
-.glyphicon-triangle-right:before {
-  content: "\e250";
-}
-.glyphicon-triangle-left:before {
-  content: "\e251";
-}
-.glyphicon-triangle-bottom:before {
-  content: "\e252";
-}
-.glyphicon-triangle-top:before {
-  content: "\e253";
-}
-.glyphicon-console:before {
-  content: "\e254";
-}
-.glyphicon-superscript:before {
-  content: "\e255";
-}
-.glyphicon-subscript:before {
-  content: "\e256";
-}
-.glyphicon-menu-left:before {
-  content: "\e257";
-}
-.glyphicon-menu-right:before {
-  content: "\e258";
-}
-.glyphicon-menu-down:before {
-  content: "\e259";
-}
-.glyphicon-menu-up:before {
-  content: "\e260";
-}
-* {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-html {
-  font-size: 10px;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333333;
-  background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-a {
-  color: #337ab7;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #23527c;
-  text-decoration: underline;
-}
-a:focus {
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-figure {
-  margin: 0;
-}
-img {
-  vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  max-width: 100%;
-  height: auto;
-}
-.img-rounded {
-  border-radius: 6px;
-}
-.img-thumbnail {
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-  -o-transition: all 0.2s ease-in-out;
-  transition: all 0.2s ease-in-out;
-  display: inline-block;
-  max-width: 100%;
-  height: auto;
-}
-.img-circle {
-  border-radius: 50%;
-}
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-}
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
-  position: static;
-  width: auto;
-  height: auto;
-  margin: 0;
-  overflow: visible;
-  clip: auto;
-}
-[role="button"] {
-  cursor: pointer;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: inherit;
-  font-weight: 500;
-  line-height: 1.1;
-  color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: 400;
-  line-height: 1;
-  color: #777777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
-  font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
-  font-size: 75%;
-}
-h1,
-.h1 {
-  font-size: 36px;
-}
-h2,
-.h2 {
-  font-size: 30px;
-}
-h3,
-.h3 {
-  font-size: 24px;
-}
-h4,
-.h4 {
-  font-size: 18px;
-}
-h5,
-.h5 {
-  font-size: 14px;
-}
-h6,
-.h6 {
-  font-size: 12px;
-}
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 1.4;
-}
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-small,
-.small {
-  font-size: 85%;
-}
-mark,
-.mark {
-  padding: 0.2em;
-  background-color: #fcf8e3;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-.text-justify {
-  text-align: justify;
-}
-.text-nowrap {
-  white-space: nowrap;
-}
-.text-lowercase {
-  text-transform: lowercase;
-}
-.text-uppercase {
-  text-transform: uppercase;
-}
-.text-capitalize {
-  text-transform: capitalize;
-}
-.text-muted {
-  color: #777777;
-}
-.text-primary {
-  color: #337ab7;
-}
-a.text-primary:hover,
-a.text-primary:focus {
-  color: #286090;
-}
-.text-success {
-  color: #3c763d;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #2b542c;
-}
-.text-info {
-  color: #31708f;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #245269;
-}
-.text-warning {
-  color: #8a6d3b;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #66512c;
-}
-.text-danger {
-  color: #a94442;
-}
-a.text-danger:hover,
-a.text-danger:focus {
-  color: #843534;
-}
-.bg-primary {
-  color: #fff;
-  background-color: #337ab7;
-}
-a.bg-primary:hover,
-a.bg-primary:focus {
-  background-color: #286090;
-}
-.bg-success {
-  background-color: #dff0d8;
-}
-a.bg-success:hover,
-a.bg-success:focus {
-  background-color: #c1e2b3;
-}
-.bg-info {
-  background-color: #d9edf7;
-}
-a.bg-info:hover,
-a.bg-info:focus {
-  background-color: #afd9ee;
-}
-.bg-warning {
-  background-color: #fcf8e3;
-}
-a.bg-warning:hover,
-a.bg-warning:focus {
-  background-color: #f7ecb5;
-}
-.bg-danger {
-  background-color: #f2dede;
-}
-a.bg-danger:hover,
-a.bg-danger:focus {
-  background-color: #e4b9b9;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-.list-inline {
-  padding-left: 0;
-  list-style: none;
-  margin-left: -5px;
-}
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px;
-}
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 1.42857143;
-}
-dt {
-  font-weight: 700;
-}
-dd {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    clear: left;
-    text-align: right;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .dl-horizontal dd {
-    margin-left: 180px;
-  }
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-}
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: "\2014 \00A0";
-}
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: "";
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: "\00A0 \2014";
-}
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #fff;
-  background-color: #333;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-kbd kbd {
-  padding: 0;
-  font-size: 100%;
-  font-weight: 700;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  color: #333333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-@media (min-width: 768px) {
-  .container {
-    width: 750px;
-  }
-}
-@media (min-width: 992px) {
-  .container {
-    width: 970px;
-  }
-}
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px;
-  }
-}
-.container-fluid {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-.row {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-.row-no-gutters {
-  margin-right: 0;
-  margin-left: 0;
-}
-.row-no-gutters [class*="col-"] {
-  padding-right: 0;
-  padding-left: 0;
-}
-.col-xs-1,
-.col-sm-1,
-.col-md-1,
-.col-lg-1,
-.col-xs-2,
-.col-sm-2,
-.col-md-2,
-.col-lg-2,
-.col-xs-3,
-.col-sm-3,
-.col-md-3,
-.col-lg-3,
-.col-xs-4,
-.col-sm-4,
-.col-md-4,
-.col-lg-4,
-.col-xs-5,
-.col-sm-5,
-.col-md-5,
-.col-lg-5,
-.col-xs-6,
-.col-sm-6,
-.col-md-6,
-.col-lg-6,
-.col-xs-7,
-.col-sm-7,
-.col-md-7,
-.col-lg-7,
-.col-xs-8,
-.col-sm-8,
-.col-md-8,
-.col-lg-8,
-.col-xs-9,
-.col-sm-9,
-.col-md-9,
-.col-lg-9,
-.col-xs-10,
-.col-sm-10,
-.col-md-10,
-.col-lg-10,
-.col-xs-11,
-.col-sm-11,
-.col-md-11,
-.col-lg-11,
-.col-xs-12,
-.col-sm-12,
-.col-md-12,
-.col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px;
-}
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12 {
-  float: left;
-}
-.col-xs-12 {
-  width: 100%;
-}
-.col-xs-11 {
-  width: 91.66666667%;
-}
-.col-xs-10 {
-  width: 83.33333333%;
-}
-.col-xs-9 {
-  width: 75%;
-}
-.col-xs-8 {
-  width: 66.66666667%;
-}
-.col-xs-7 {
-  width: 58.33333333%;
-}
-.col-xs-6 {
-  width: 50%;
-}
-.col-xs-5 {
-  width: 41.66666667%;
-}
-.col-xs-4 {
-  width: 33.33333333%;
-}
-.col-xs-3 {
-  width: 25%;
-}
-.col-xs-2 {
-  width: 16.66666667%;
-}
-.col-xs-1 {
-  width: 8.33333333%;
-}
-.col-xs-pull-12 {
-  right: 100%;
-}
-.col-xs-pull-11 {
-  right: 91.66666667%;
-}
-.col-xs-pull-10 {
-  right: 83.33333333%;
-}
-.col-xs-pull-9 {
-  right: 75%;
-}
-.col-xs-pull-8 {
-  right: 66.66666667%;
-}
-.col-xs-pull-7 {
-  right: 58.33333333%;
-}
-.col-xs-pull-6 {
-  right: 50%;
-}
-.col-xs-pull-5 {
-  right: 41.66666667%;
-}
-.col-xs-pull-4 {
-  right: 33.33333333%;
-}
-.col-xs-pull-3 {
-  right: 25%;
-}
-.col-xs-pull-2 {
-  right: 16.66666667%;
-}
-.col-xs-pull-1 {
-  right: 8.33333333%;
-}
-.col-xs-pull-0 {
-  right: auto;
-}
-.col-xs-push-12 {
-  left: 100%;
-}
-.col-xs-push-11 {
-  left: 91.66666667%;
-}
-.col-xs-push-10 {
-  left: 83.33333333%;
-}
-.col-xs-push-9 {
-  left: 75%;
-}
-.col-xs-push-8 {
-  left: 66.66666667%;
-}
-.col-xs-push-7 {
-  left: 58.33333333%;
-}
-.col-xs-push-6 {
-  left: 50%;
-}
-.col-xs-push-5 {
-  left: 41.66666667%;
-}
-.col-xs-push-4 {
-  left: 33.33333333%;
-}
-.col-xs-push-3 {
-  left: 25%;
-}
-.col-xs-push-2 {
-  left: 16.66666667%;
-}
-.col-xs-push-1 {
-  left: 8.33333333%;
-}
-.col-xs-push-0 {
-  left: auto;
-}
-.col-xs-offset-12 {
-  margin-left: 100%;
-}
-.col-xs-offset-11 {
-  margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
-  margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-.col-xs-offset-8 {
-  margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
-  margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-.col-xs-offset-5 {
-  margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
-  margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-.col-xs-offset-2 {
-  margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
-  margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
-  margin-left: 0%;
-}
-@media (min-width: 768px) {
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11,
-  .col-sm-12 {
-    float: left;
-  }
-  .col-sm-12 {
-    width: 100%;
-  }
-  .col-sm-11 {
-    width: 91.66666667%;
-  }
-  .col-sm-10 {
-    width: 83.33333333%;
-  }
-  .col-sm-9 {
-    width: 75%;
-  }
-  .col-sm-8 {
-    width: 66.66666667%;
-  }
-  .col-sm-7 {
-    width: 58.33333333%;
-  }
-  .col-sm-6 {
-    width: 50%;
-  }
-  .col-sm-5 {
-    width: 41.66666667%;
-  }
-  .col-sm-4 {
-    width: 33.33333333%;
-  }
-  .col-sm-3 {
-    width: 25%;
-  }
-  .col-sm-2 {
-    width: 16.66666667%;
-  }
-  .col-sm-1 {
-    width: 8.33333333%;
-  }
-  .col-sm-pull-12 {
-    right: 100%;
-  }
-  .col-sm-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-sm-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-sm-pull-9 {
-    right: 75%;
-  }
-  .col-sm-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-sm-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-sm-pull-6 {
-    right: 50%;
-  }
-  .col-sm-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-sm-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-sm-pull-3 {
-    right: 25%;
-  }
-  .col-sm-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-sm-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-sm-pull-0 {
-    right: auto;
-  }
-  .col-sm-push-12 {
-    left: 100%;
-  }
-  .col-sm-push-11 {
-    left: 91.66666667%;
-  }
-  .col-sm-push-10 {
-    left: 83.33333333%;
-  }
-  .col-sm-push-9 {
-    left: 75%;
-  }
-  .col-sm-push-8 {
-    left: 66.66666667%;
-  }
-  .col-sm-push-7 {
-    left: 58.33333333%;
-  }
-  .col-sm-push-6 {
-    left: 50%;
-  }
-  .col-sm-push-5 {
-    left: 41.66666667%;
-  }
-  .col-sm-push-4 {
-    left: 33.33333333%;
-  }
-  .col-sm-push-3 {
-    left: 25%;
-  }
-  .col-sm-push-2 {
-    left: 16.66666667%;
-  }
-  .col-sm-push-1 {
-    left: 8.33333333%;
-  }
-  .col-sm-push-0 {
-    left: auto;
-  }
-  .col-sm-offset-12 {
-    margin-left: 100%;
-  }
-  .col-sm-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-  .col-sm-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-sm-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-  .col-sm-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-  .col-sm-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-sm-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-sm-offset-0 {
-    margin-left: 0%;
-  }
-}
-@media (min-width: 992px) {
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11,
-  .col-md-12 {
-    float: left;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-11 {
-    width: 91.66666667%;
-  }
-  .col-md-10 {
-    width: 83.33333333%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-8 {
-    width: 66.66666667%;
-  }
-  .col-md-7 {
-    width: 58.33333333%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-5 {
-    width: 41.66666667%;
-  }
-  .col-md-4 {
-    width: 33.33333333%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-2 {
-    width: 16.66666667%;
-  }
-  .col-md-1 {
-    width: 8.33333333%;
-  }
-  .col-md-pull-12 {
-    right: 100%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-md-pull-0 {
-    right: auto;
-  }
-  .col-md-push-12 {
-    left: 100%;
-  }
-  .col-md-push-11 {
-    left: 91.66666667%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-8 {
-    left: 66.66666667%;
-  }
-  .col-md-push-7 {
-    left: 58.33333333%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-5 {
-    left: 41.66666667%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-2 {
-    left: 16.66666667%;
-  }
-  .col-md-push-1 {
-    left: 8.33333333%;
-  }
-  .col-md-push-0 {
-    left: auto;
-  }
-  .col-md-offset-12 {
-    margin-left: 100%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0%;
-  }
-}
-@media (min-width: 1200px) {
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11,
-  .col-lg-12 {
-    float: left;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-11 {
-    width: 91.66666667%;
-  }
-  .col-lg-10 {
-    width: 83.33333333%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-8 {
-    width: 66.66666667%;
-  }
-  .col-lg-7 {
-    width: 58.33333333%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-5 {
-    width: 41.66666667%;
-  }
-  .col-lg-4 {
-    width: 33.33333333%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-2 {
-    width: 16.66666667%;
-  }
-  .col-lg-1 {
-    width: 8.33333333%;
-  }
-  .col-lg-pull-12 {
-    right: 100%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-lg-pull-0 {
-    right: auto;
-  }
-  .col-lg-push-12 {
-    left: 100%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-  }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-  }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-  }
-  .col-lg-push-0 {
-    left: auto;
-  }
-  .col-lg-offset-12 {
-    margin-left: 100%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0%;
-  }
-}
-table {
-  background-color: transparent;
-}
-table col[class*="col-"] {
-  position: static;
-  display: table-column;
-  float: none;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
-  position: static;
-  display: table-cell;
-  float: none;
-}
-caption {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  color: #777777;
-  text-align: left;
-}
-th {
-  text-align: left;
-}
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #ddd;
-}
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #ddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table .table {
-  background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-of-type(odd) {
-  background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover {
-  background-color: #f5f5f5;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-.table-responsive {
-  min-height: 0.01%;
-  overflow-x: auto;
-}
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-y: hidden;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-  }
-  .table-responsive > .table {
-    margin-bottom: 0;
-  }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-fieldset {
-  min-width: 0;
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: 700;
-}
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-}
-input[type="file"] {
-  display: block;
-}
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-}
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-  transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-}
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-.form-control::-moz-placeholder {
-  color: #999;
-  opacity: 1;
-}
-.form-control:-ms-input-placeholder {
-  color: #999;
-}
-.form-control::-webkit-input-placeholder {
-  color: #999;
-}
-.form-control::-ms-expand {
-  background-color: transparent;
-  border: 0;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  background-color: #eeeeee;
-  opacity: 1;
-}
-.form-control[disabled],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-}
-textarea.form-control {
-  height: auto;
-}
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
-  input[type="date"].form-control,
-  input[type="time"].form-control,
-  input[type="datetime-local"].form-control,
-  input[type="month"].form-control {
-    line-height: 34px;
-  }
-  input[type="date"].input-sm,
-  input[type="time"].input-sm,
-  input[type="datetime-local"].input-sm,
-  input[type="month"].input-sm,
-  .input-group-sm input[type="date"],
-  .input-group-sm input[type="time"],
-  .input-group-sm input[type="datetime-local"],
-  .input-group-sm input[type="month"] {
-    line-height: 30px;
-  }
-  input[type="date"].input-lg,
-  input[type="time"].input-lg,
-  input[type="datetime-local"].input-lg,
-  input[type="month"].input-lg,
-  .input-group-lg input[type="date"],
-  .input-group-lg input[type="time"],
-  .input-group-lg input[type="datetime-local"],
-  .input-group-lg input[type="month"] {
-    line-height: 46px;
-  }
-}
-.form-group {
-  margin-bottom: 15px;
-}
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed;
-}
-.radio label,
-.checkbox label {
-  min-height: 20px;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: 400;
-  cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 4px \9;
-  margin-left: -20px;
-}
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
-  position: relative;
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: 400;
-  vertical-align: middle;
-  cursor: pointer;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-.form-control-static {
-  min-height: 34px;
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-sm {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-sm,
-select[multiple].input-sm {
-  height: auto;
-}
-.form-group-sm .form-control {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.form-group-sm select.form-control {
-  height: 30px;
-  line-height: 30px;
-}
-.form-group-sm textarea.form-control,
-.form-group-sm select[multiple].form-control {
-  height: auto;
-}
-.form-group-sm .form-control-static {
-  height: 30px;
-  min-height: 32px;
-  padding: 6px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-}
-.input-lg {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-select.input-lg {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-lg,
-select[multiple].input-lg {
-  height: auto;
-}
-.form-group-lg .form-control {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-.form-group-lg select.form-control {
-  height: 46px;
-  line-height: 46px;
-}
-.form-group-lg textarea.form-control,
-.form-group-lg select[multiple].form-control {
-  height: auto;
-}
-.form-group-lg .form-control-static {
-  height: 46px;
-  min-height: 38px;
-  padding: 11px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-}
-.has-feedback {
-  position: relative;
-}
-.has-feedback .form-control {
-  padding-right: 42.5px;
-}
-.form-control-feedback {
-  position: absolute;
-  top: 0;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-  pointer-events: none;
-}
-.input-lg + .form-control-feedback,
-.input-group-lg + .form-control-feedback,
-.form-group-lg .form-control + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px;
-}
-.input-sm + .form-control-feedback,
-.input-group-sm + .form-control-feedback,
-.form-group-sm .form-control + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline,
-.has-success.radio label,
-.has-success.checkbox label,
-.has-success.radio-inline label,
-.has-success.checkbox-inline label {
-  color: #3c763d;
-}
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #3c763d;
-}
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline,
-.has-warning.radio label,
-.has-warning.checkbox label,
-.has-warning.radio-inline label,
-.has-warning.checkbox-inline label {
-  color: #8a6d3b;
-}
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #8a6d3b;
-}
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline,
-.has-error.radio label,
-.has-error.checkbox label,
-.has-error.radio-inline label,
-.has-error.checkbox-inline label {
-  color: #a94442;
-}
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #a94442;
-}
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-.has-feedback label ~ .form-control-feedback {
-  top: 25px;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
-  top: 0;
-}
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .form-inline .form-control-static {
-    display: inline-block;
-  }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .form-inline .input-group .input-group-addon,
-  .form-inline .input-group .input-group-btn,
-  .form-inline .input-group .form-control {
-    width: auto;
-  }
-  .form-inline .input-group > .form-control {
-    width: 100%;
-  }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio label,
-  .form-inline .checkbox label {
-    padding-left: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 7px;
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    padding-top: 7px;
-    margin-bottom: 0;
-    text-align: right;
-  }
-}
-.form-horizontal .has-feedback .form-control-feedback {
-  right: 15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-lg .control-label {
-    padding-top: 11px;
-    font-size: 18px;
-  }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-    font-size: 12px;
-  }
-}
-.btn {
-  display: inline-block;
-  margin-bottom: 0;
-  font-weight: normal;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  -ms-touch-action: manipulation;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-image: none;
-  border: 1px solid transparent;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  border-radius: 4px;
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  user-select: none;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn.active.focus {
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus,
-.btn.focus {
-  color: #333;
-  text-decoration: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  opacity: 0.65;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-a.btn.disabled,
-fieldset[disabled] a.btn {
-  pointer-events: none;
-}
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default:focus,
-.btn-default.focus {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #8c8c8c;
-}
-.btn-default:hover {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  color: #333;
-  background-color: #e6e6e6;
-  background-image: none;
-  border-color: #adadad;
-}
-.btn-default:active:hover,
-.btn-default.active:hover,
-.open > .dropdown-toggle.btn-default:hover,
-.btn-default:active:focus,
-.btn-default.active:focus,
-.open > .dropdown-toggle.btn-default:focus,
-.btn-default:active.focus,
-.btn-default.active.focus,
-.open > .dropdown-toggle.btn-default.focus {
-  color: #333;
-  background-color: #d4d4d4;
-  border-color: #8c8c8c;
-}
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus {
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default .badge {
-  color: #fff;
-  background-color: #333;
-}
-.btn-primary {
-  color: #fff;
-  background-color: #337ab7;
-  border-color: #2e6da4;
-}
-.btn-primary:focus,
-.btn-primary.focus {
-  color: #fff;
-  background-color: #286090;
-  border-color: #122b40;
-}
-.btn-primary:hover {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #286090;
-  background-image: none;
-  border-color: #204d74;
-}
-.btn-primary:active:hover,
-.btn-primary.active:hover,
-.open > .dropdown-toggle.btn-primary:hover,
-.btn-primary:active:focus,
-.btn-primary.active:focus,
-.open > .dropdown-toggle.btn-primary:focus,
-.btn-primary:active.focus,
-.btn-primary.active.focus,
-.open > .dropdown-toggle.btn-primary.focus {
-  color: #fff;
-  background-color: #204d74;
-  border-color: #122b40;
-}
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus {
-  background-color: #337ab7;
-  border-color: #2e6da4;
-}
-.btn-primary .badge {
-  color: #337ab7;
-  background-color: #fff;
-}
-.btn-success {
-  color: #fff;
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success:focus,
-.btn-success.focus {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #255625;
-}
-.btn-success:hover {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #449d44;
-  background-image: none;
-  border-color: #398439;
-}
-.btn-success:active:hover,
-.btn-success.active:hover,
-.open > .dropdown-toggle.btn-success:hover,
-.btn-success:active:focus,
-.btn-success.active:focus,
-.open > .dropdown-toggle.btn-success:focus,
-.btn-success:active.focus,
-.btn-success.active.focus,
-.open > .dropdown-toggle.btn-success.focus {
-  color: #fff;
-  background-color: #398439;
-  border-color: #255625;
-}
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus {
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success .badge {
-  color: #5cb85c;
-  background-color: #fff;
-}
-.btn-info {
-  color: #fff;
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info:focus,
-.btn-info.focus {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #1b6d85;
-}
-.btn-info:hover {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #31b0d5;
-  background-image: none;
-  border-color: #269abc;
-}
-.btn-info:active:hover,
-.btn-info.active:hover,
-.open > .dropdown-toggle.btn-info:hover,
-.btn-info:active:focus,
-.btn-info.active:focus,
-.open > .dropdown-toggle.btn-info:focus,
-.btn-info:active.focus,
-.btn-info.active.focus,
-.open > .dropdown-toggle.btn-info.focus {
-  color: #fff;
-  background-color: #269abc;
-  border-color: #1b6d85;
-}
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus {
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info .badge {
-  color: #5bc0de;
-  background-color: #fff;
-}
-.btn-warning {
-  color: #fff;
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning:focus,
-.btn-warning.focus {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #985f0d;
-}
-.btn-warning:hover {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #ec971f;
-  background-image: none;
-  border-color: #d58512;
-}
-.btn-warning:active:hover,
-.btn-warning.active:hover,
-.open > .dropdown-toggle.btn-warning:hover,
-.btn-warning:active:focus,
-.btn-warning.active:focus,
-.open > .dropdown-toggle.btn-warning:focus,
-.btn-warning:active.focus,
-.btn-warning.active.focus,
-.open > .dropdown-toggle.btn-warning.focus {
-  color: #fff;
-  background-color: #d58512;
-  border-color: #985f0d;
-}
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus {
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning .badge {
-  color: #f0ad4e;
-  background-color: #fff;
-}
-.btn-danger {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger:focus,
-.btn-danger.focus {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #761c19;
-}
-.btn-danger:hover {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #c9302c;
-  background-image: none;
-  border-color: #ac2925;
-}
-.btn-danger:active:hover,
-.btn-danger.active:hover,
-.open > .dropdown-toggle.btn-danger:hover,
-.btn-danger:active:focus,
-.btn-danger.active:focus,
-.open > .dropdown-toggle.btn-danger:focus,
-.btn-danger:active.focus,
-.btn-danger.active.focus,
-.open > .dropdown-toggle.btn-danger.focus {
-  color: #fff;
-  background-color: #ac2925;
-  border-color: #761c19;
-}
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff;
-}
-.btn-link {
-  font-weight: 400;
-  color: #337ab7;
-  border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link.active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #23527c;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #777777;
-  text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  display: none;
-}
-.collapse.in {
-  display: block;
-}
-tr.collapse.in {
-  display: table-row;
-}
-tbody.collapse.in {
-  display: table-row-group;
-}
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition-property: height, visibility;
-  -o-transition-property: height, visibility;
-  transition-property: height, visibility;
-  -webkit-transition-duration: 0.35s;
-  -o-transition-duration: 0.35s;
-  transition-duration: 0.35s;
-  -webkit-transition-timing-function: ease;
-  -o-transition-timing-function: ease;
-  transition-timing-function: ease;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px dashed;
-  border-top: 4px solid \9;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle:focus {
-  outline: 0;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 14px;
-  text-align: left;
-  list-style: none;
-  background-color: #fff;
-  background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: 400;
-  line-height: 1.42857143;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #262626;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #337ab7;
-  outline: 0;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.open > a {
-  outline: 0;
-}
-.dropdown-menu-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu-left {
-  right: auto;
-  left: 0;
-}
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #777777;
-  white-space: nowrap;
-}
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  content: "";
-  border-top: 0;
-  border-bottom: 4px dashed;
-  border-bottom: 4px solid \9;
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-@media (min-width: 768px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-  }
-  .navbar-right .dropdown-menu-left {
-    right: auto;
-    left: 0;
-  }
-}
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-.btn-toolbar {
-  margin-left: -5px;
-}
-.btn-toolbar .btn,
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
-  float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
-  margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group > .btn-group {
-  float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-.btn .caret {
-  margin-left: 0;
-}
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
-  display: table-cell;
-  float: none;
-  width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
-  width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
-  left: auto;
-}
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
-  position: absolute;
-  clip: rect(0, 0, 0, 0);
-  pointer-events: none;
-}
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-}
-.input-group .form-control:focus {
-  z-index: 3;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: 400;
-  line-height: 1;
-  color: #555555;
-  text-align: center;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.input-group-addon:first-child {
-  border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.input-group-addon:last-child {
-  border-left: 0;
-}
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-group-btn > .btn {
-  position: relative;
-}
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
-  margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
-  z-index: 2;
-  margin-left: -1px;
-}
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-}
-.nav > li {
-  position: relative;
-  display: block;
-}
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li.disabled > a {
-  color: #777777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #777777;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eeeeee;
-  border-color: #337ab7;
-}
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555555;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-.nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.nav-pills > li {
-  float: left;
-}
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #337ab7;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-.nav-justified {
-  width: 100%;
-}
-.nav-justified > li {
-  float: none;
-}
-.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs-justified > .active > a,
-  .nav-tabs-justified > .active > a:hover,
-  .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.tab-content > .tab-pane {
-  display: none;
-}
-.tab-content > .active {
-  display: block;
-}
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;
-  }
-}
-.navbar-collapse {
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  -webkit-overflow-scrolling: touch;
-}
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-@media (min-width: 768px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-    box-shadow: none;
-  }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-  }
-  .navbar-collapse.in {
-    overflow-y: visible;
-  }
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-}
-@media (max-device-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-.navbar-brand {
-  float: left;
-  height: 50px;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-.navbar-brand > img {
-  display: block;
-}
-@media (min-width: 768px) {
-  .navbar > .container .navbar-brand,
-  .navbar > .container-fluid .navbar-brand {
-    margin-left: -15px;
-  }
-}
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-right: 15px;
-  margin-top: 8px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.navbar-toggle:focus {
-  outline: 0;
-}
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-@media (max-width: 767px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    -webkit-box-shadow: none;
-    box-shadow: none;
-  }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-}
-.navbar-form {
-  padding: 10px 15px;
-  margin-right: -15px;
-  margin-left: -15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-@media (min-width: 768px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control-static {
-    display: inline-block;
-  }
-  .navbar-form .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group .input-group-addon,
-  .navbar-form .input-group .input-group-btn,
-  .navbar-form .input-group .form-control {
-    width: auto;
-  }
-  .navbar-form .input-group > .form-control {
-    width: 100%;
-  }
-  .navbar-form .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio label,
-  .navbar-form .checkbox label {
-    padding-left: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .navbar-form .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-@media (max-width: 767px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-  .navbar-form .form-group:last-child {
-    margin-bottom: 0;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-    box-shadow: none;
-  }
-}
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  margin-bottom: 0;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-.navbar-btn.btn-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.navbar-btn.btn-xs {
-  margin-top: 14px;
-  margin-bottom: 14px;
-}
-.navbar-text {
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-@media (min-width: 768px) {
-  .navbar-text {
-    float: left;
-    margin-right: 15px;
-    margin-left: 15px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-left {
-    float: left !important;
-  }
-  .navbar-right {
-    float: right !important;
-    margin-right: -15px;
-  }
-  .navbar-right ~ .navbar-right {
-    margin-right: 0;
-  }
-}
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
-  color: #777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-.navbar-default .navbar-text {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-@media (max-width: 767px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
-    background-color: transparent;
-  }
-}
-.navbar-default .navbar-toggle {
-  border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-link {
-  color: #777;
-}
-.navbar-default .navbar-link:hover {
-  color: #333;
-}
-.navbar-default .btn-link {
-  color: #777;
-}
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
-  color: #333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
-}
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-text {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-@media (max-width: 767px) {
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-    border-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
-    color: #9d9d9d;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #fff;
-    background-color: transparent;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #444;
-    background-color: transparent;
-  }
-}
-.navbar-inverse .navbar-toggle {
-  border-color: #333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #333;
-}
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff;
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #101010;
-}
-.navbar-inverse .navbar-link {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-link:hover {
-  color: #fff;
-}
-.navbar-inverse .btn-link {
-  color: #9d9d9d;
-}
-.navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link:focus {
-  color: #fff;
-}
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-inverse .btn-link:focus {
-  color: #444;
-}
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-}
-.breadcrumb > li {
-  display: inline-block;
-}
-.breadcrumb > li + li:before {
-  padding: 0 5px;
-  color: #ccc;
-  content: "/\00a0";
-}
-.breadcrumb > .active {
-  color: #777777;
-}
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: 20px 0;
-  border-radius: 4px;
-}
-.pagination > li {
-  display: inline;
-}
-.pagination > li > a,
-.pagination > li > span {
-  position: relative;
-  float: left;
-  padding: 6px 12px;
-  margin-left: -1px;
-  line-height: 1.42857143;
-  color: #337ab7;
-  text-decoration: none;
-  background-color: #fff;
-  border: 1px solid #ddd;
-}
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
-  z-index: 2;
-  color: #23527c;
-  background-color: #eeeeee;
-  border-color: #ddd;
-}
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
-  margin-left: 0;
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
-  z-index: 3;
-  color: #fff;
-  cursor: default;
-  background-color: #337ab7;
-  border-color: #337ab7;
-}
-.pagination > .disabled > span,
-.pagination > .disabled > span:hover,
-.pagination > .disabled > span:focus,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
-  color: #777777;
-  cursor: not-allowed;
-  background-color: #fff;
-  border-color: #ddd;
-}
-.pagination-lg > li > a,
-.pagination-lg > li > span {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-}
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
-  border-top-left-radius: 6px;
-  border-bottom-left-radius: 6px;
-}
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
-  border-top-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-}
-.pagination-sm > li > a,
-.pagination-sm > li > span {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-}
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
-  border-top-left-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
-}
-.pager {
-  padding-left: 0;
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-}
-.pager li {
-  display: inline;
-}
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 15px;
-}
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #777777;
-  cursor: not-allowed;
-  background-color: #fff;
-}
-.label {
-  display: inline;
-  padding: 0.2em 0.6em 0.3em;
-  font-size: 75%;
-  font-weight: 700;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: 0.25em;
-}
-a.label:hover,
-a.label:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer;
-}
-.label:empty {
-  display: none;
-}
-.btn .label {
-  position: relative;
-  top: -1px;
-}
-.label-default {
-  background-color: #777777;
-}
-.label-default[href]:hover,
-.label-default[href]:focus {
-  background-color: #5e5e5e;
-}
-.label-primary {
-  background-color: #337ab7;
-}
-.label-primary[href]:hover,
-.label-primary[href]:focus {
-  background-color: #286090;
-}
-.label-success {
-  background-color: #5cb85c;
-}
-.label-success[href]:hover,
-.label-success[href]:focus {
-  background-color: #449d44;
-}
-.label-info {
-  background-color: #5bc0de;
-}
-.label-info[href]:hover,
-.label-info[href]:focus {
-  background-color: #31b0d5;
-}
-.label-warning {
-  background-color: #f0ad4e;
-}
-.label-warning[href]:hover,
-.label-warning[href]:focus {
-  background-color: #ec971f;
-}
-.label-danger {
-  background-color: #d9534f;
-}
-.label-danger[href]:hover,
-.label-danger[href]:focus {
-  background-color: #c9302c;
-}
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: bold;
-  line-height: 1;
-  color: #fff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  background-color: #777777;
-  border-radius: 10px;
-}
-.badge:empty {
-  display: none;
-}
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-.btn-xs .badge,
-.btn-group-xs > .btn .badge {
-  top: 0;
-  padding: 1px 5px;
-}
-a.badge:hover,
-a.badge:focus {
-  color: #fff;
-  text-decoration: none;
-  cursor: pointer;
-}
-.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
-  color: #337ab7;
-  background-color: #fff;
-}
-.list-group-item > .badge {
-  float: right;
-}
-.list-group-item > .badge + .badge {
-  margin-right: 5px;
-}
-.nav-pills > li > a > .badge {
-  margin-left: 3px;
-}
-.jumbotron {
-  padding-top: 30px;
-  padding-bottom: 30px;
-  margin-bottom: 30px;
-  color: inherit;
-  background-color: #eeeeee;
-}
-.jumbotron h1,
-.jumbotron .h1 {
-  color: inherit;
-}
-.jumbotron p {
-  margin-bottom: 15px;
-  font-size: 21px;
-  font-weight: 200;
-}
-.jumbotron > hr {
-  border-top-color: #d5d5d5;
-}
-.container .jumbotron,
-.container-fluid .jumbotron {
-  padding-right: 15px;
-  padding-left: 15px;
-  border-radius: 6px;
-}
-.jumbotron .container {
-  max-width: 100%;
-}
-@media screen and (min-width: 768px) {
-  .jumbotron {
-    padding-top: 48px;
-    padding-bottom: 48px;
-  }
-  .container .jumbotron,
-  .container-fluid .jumbotron {
-    padding-right: 60px;
-    padding-left: 60px;
-  }
-  .jumbotron h1,
-  .jumbotron .h1 {
-    font-size: 63px;
-  }
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  margin-bottom: 20px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: border 0.2s ease-in-out;
-  -o-transition: border 0.2s ease-in-out;
-  transition: border 0.2s ease-in-out;
-}
-.thumbnail > img,
-.thumbnail a > img {
-  margin-right: auto;
-  margin-left: auto;
-}
-a.thumbnail:hover,
-a.thumbnail:focus,
-a.thumbnail.active {
-  border-color: #337ab7;
-}
-.thumbnail .caption {
-  padding: 9px;
-  color: #333333;
-}
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.alert h4 {
-  margin-top: 0;
-  color: inherit;
-}
-.alert .alert-link {
-  font-weight: bold;
-}
-.alert > p,
-.alert > ul {
-  margin-bottom: 0;
-}
-.alert > p + p {
-  margin-top: 5px;
-}
-.alert-dismissable,
-.alert-dismissible {
-  padding-right: 35px;
-}
-.alert-dismissable .close,
-.alert-dismissible .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  color: inherit;
-}
-.alert-success {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.alert-success hr {
-  border-top-color: #c9e2b3;
-}
-.alert-success .alert-link {
-  color: #2b542c;
-}
-.alert-info {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.alert-info hr {
-  border-top-color: #a6e1ec;
-}
-.alert-info .alert-link {
-  color: #245269;
-}
-.alert-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-}
-.alert-warning hr {
-  border-top-color: #f7e1b5;
-}
-.alert-warning .alert-link {
-  color: #66512c;
-}
-.alert-danger {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1;
-}
-.alert-danger hr {
-  border-top-color: #e4b9c0;
-}
-.alert-danger .alert-link {
-  color: #843534;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-.progress-bar {
-  float: left;
-  width: 0%;
-  height: 100%;
-  font-size: 12px;
-  line-height: 20px;
-  color: #fff;
-  text-align: center;
-  background-color: #337ab7;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .progress-bar,
-.progress-bar-striped {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .progress-bar,
-.progress-bar.active {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -o-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-bar-success {
-  background-color: #5cb85c;
-}
-.progress-striped .progress-bar-success {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-info {
-  background-color: #5bc0de;
-}
-.progress-striped .progress-bar-info {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-warning {
-  background-color: #f0ad4e;
-}
-.progress-striped .progress-bar-warning {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-danger {
-  background-color: #d9534f;
-}
-.progress-striped .progress-bar-danger {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.media {
-  margin-top: 15px;
-}
-.media:first-child {
-  margin-top: 0;
-}
-.media,
-.media-body {
-  overflow: hidden;
-  zoom: 1;
-}
-.media-body {
-  width: 10000px;
-}
-.media-object {
-  display: block;
-}
-.media-object.img-thumbnail {
-  max-width: none;
-}
-.media-right,
-.media > .pull-right {
-  padding-left: 10px;
-}
-.media-left,
-.media > .pull-left {
-  padding-right: 10px;
-}
-.media-left,
-.media-right,
-.media-body {
-  display: table-cell;
-  vertical-align: top;
-}
-.media-middle {
-  vertical-align: middle;
-}
-.media-bottom {
-  vertical-align: bottom;
-}
-.media-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-}
-.media-list {
-  padding-left: 0;
-  list-style: none;
-}
-.list-group {
-  padding-left: 0;
-  margin-bottom: 20px;
-}
-.list-group-item {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-  margin-bottom: -1px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-}
-.list-group-item:first-child {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.list-group-item:last-child {
-  margin-bottom: 0;
-  border-bottom-right-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-.list-group-item.disabled,
-.list-group-item.disabled:hover,
-.list-group-item.disabled:focus {
-  color: #777777;
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-.list-group-item.disabled .list-group-item-heading,
-.list-group-item.disabled:hover .list-group-item-heading,
-.list-group-item.disabled:focus .list-group-item-heading {
-  color: inherit;
-}
-.list-group-item.disabled .list-group-item-text,
-.list-group-item.disabled:hover .list-group-item-text,
-.list-group-item.disabled:focus .list-group-item-text {
-  color: #777777;
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  z-index: 2;
-  color: #fff;
-  background-color: #337ab7;
-  border-color: #337ab7;
-}
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading,
-.list-group-item.active .list-group-item-heading > small,
-.list-group-item.active:hover .list-group-item-heading > small,
-.list-group-item.active:focus .list-group-item-heading > small,
-.list-group-item.active .list-group-item-heading > .small,
-.list-group-item.active:hover .list-group-item-heading > .small,
-.list-group-item.active:focus .list-group-item-heading > .small {
-  color: inherit;
-}
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
-  color: #c7ddef;
-}
-a.list-group-item,
-button.list-group-item {
-  color: #555;
-}
-a.list-group-item .list-group-item-heading,
-button.list-group-item .list-group-item-heading {
-  color: #333;
-}
-a.list-group-item:hover,
-button.list-group-item:hover,
-a.list-group-item:focus,
-button.list-group-item:focus {
-  color: #555;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-button.list-group-item {
-  width: 100%;
-  text-align: left;
-}
-.list-group-item-success {
-  color: #3c763d;
-  background-color: #dff0d8;
-}
-a.list-group-item-success,
-button.list-group-item-success {
-  color: #3c763d;
-}
-a.list-group-item-success .list-group-item-heading,
-button.list-group-item-success .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-success:hover,
-button.list-group-item-success:hover,
-a.list-group-item-success:focus,
-button.list-group-item-success:focus {
-  color: #3c763d;
-  background-color: #d0e9c6;
-}
-a.list-group-item-success.active,
-button.list-group-item-success.active,
-a.list-group-item-success.active:hover,
-button.list-group-item-success.active:hover,
-a.list-group-item-success.active:focus,
-button.list-group-item-success.active:focus {
-  color: #fff;
-  background-color: #3c763d;
-  border-color: #3c763d;
-}
-.list-group-item-info {
-  color: #31708f;
-  background-color: #d9edf7;
-}
-a.list-group-item-info,
-button.list-group-item-info {
-  color: #31708f;
-}
-a.list-group-item-info .list-group-item-heading,
-button.list-group-item-info .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-info:hover,
-button.list-group-item-info:hover,
-a.list-group-item-info:focus,
-button.list-group-item-info:focus {
-  color: #31708f;
-  background-color: #c4e3f3;
-}
-a.list-group-item-info.active,
-button.list-group-item-info.active,
-a.list-group-item-info.active:hover,
-button.list-group-item-info.active:hover,
-a.list-group-item-info.active:focus,
-button.list-group-item-info.active:focus {
-  color: #fff;
-  background-color: #31708f;
-  border-color: #31708f;
-}
-.list-group-item-warning {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-}
-a.list-group-item-warning,
-button.list-group-item-warning {
-  color: #8a6d3b;
-}
-a.list-group-item-warning .list-group-item-heading,
-button.list-group-item-warning .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-warning:hover,
-button.list-group-item-warning:hover,
-a.list-group-item-warning:focus,
-button.list-group-item-warning:focus {
-  color: #8a6d3b;
-  background-color: #faf2cc;
-}
-a.list-group-item-warning.active,
-button.list-group-item-warning.active,
-a.list-group-item-warning.active:hover,
-button.list-group-item-warning.active:hover,
-a.list-group-item-warning.active:focus,
-button.list-group-item-warning.active:focus {
-  color: #fff;
-  background-color: #8a6d3b;
-  border-color: #8a6d3b;
-}
-.list-group-item-danger {
-  color: #a94442;
-  background-color: #f2dede;
-}
-a.list-group-item-danger,
-button.list-group-item-danger {
-  color: #a94442;
-}
-a.list-group-item-danger .list-group-item-heading,
-button.list-group-item-danger .list-group-item-heading {
-  color: inherit;
-}
-a.list-group-item-danger:hover,
-button.list-group-item-danger:hover,
-a.list-group-item-danger:focus,
-button.list-group-item-danger:focus {
-  color: #a94442;
-  background-color: #ebcccc;
-}
-a.list-group-item-danger.active,
-button.list-group-item-danger.active,
-a.list-group-item-danger.active:hover,
-button.list-group-item-danger.active:hover,
-a.list-group-item-danger.active:focus,
-button.list-group-item-danger.active:focus {
-  color: #fff;
-  background-color: #a94442;
-  border-color: #a94442;
-}
-.list-group-item-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-}
-.list-group-item-text {
-  margin-bottom: 0;
-  line-height: 1.3;
-}
-.panel {
-  margin-bottom: 20px;
-  background-color: #fff;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.panel-body {
-  padding: 15px;
-}
-.panel-heading {
-  padding: 10px 15px;
-  border-bottom: 1px solid transparent;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel-heading > .dropdown .dropdown-toggle {
-  color: inherit;
-}
-.panel-title {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-size: 16px;
-  color: inherit;
-}
-.panel-title > a,
-.panel-title > small,
-.panel-title > .small,
-.panel-title > small > a,
-.panel-title > .small > a {
-  color: inherit;
-}
-.panel-footer {
-  padding: 10px 15px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .list-group,
-.panel > .panel-collapse > .list-group {
-  margin-bottom: 0;
-}
-.panel > .list-group .list-group-item,
-.panel > .panel-collapse > .list-group .list-group-item {
-  border-width: 1px 0;
-  border-radius: 0;
-}
-.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
-  border-top: 0;
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel > .list-group:last-child .list-group-item:last-child,
-.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
-  border-bottom: 0;
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.panel-heading + .list-group .list-group-item:first-child {
-  border-top-width: 0;
-}
-.list-group + .panel-footer {
-  border-top-width: 0;
-}
-.panel > .table,
-.panel > .table-responsive > .table,
-.panel > .panel-collapse > .table {
-  margin-bottom: 0;
-}
-.panel > .table caption,
-.panel > .table-responsive > .table caption,
-.panel > .panel-collapse > .table caption {
-  padding-right: 15px;
-  padding-left: 15px;
-}
-.panel > .table:first-child,
-.panel > .table-responsive:first-child > .table:first-child {
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
-  border-top-left-radius: 3px;
-  border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
-  border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
-  border-top-right-radius: 3px;
-}
-.panel > .table:last-child,
-.panel > .table-responsive:last-child > .table:last-child {
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
-  border-bottom-right-radius: 3px;
-  border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
-  border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
-  border-bottom-right-radius: 3px;
-}
-.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive,
-.panel > .table + .panel-body,
-.panel > .table-responsive + .panel-body {
-  border-top: 1px solid #ddd;
-}
-.panel > .table > tbody:first-child > tr:first-child th,
-.panel > .table > tbody:first-child > tr:first-child td {
-  border-top: 0;
-}
-.panel > .table-bordered,
-.panel > .table-responsive > .table-bordered {
-  border: 0;
-}
-.panel > .table-bordered > thead > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-.panel > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-bordered > thead > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-.panel > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-bordered > tfoot > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-  border-left: 0;
-}
-.panel > .table-bordered > thead > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-.panel > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-bordered > thead > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-.panel > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-bordered > tfoot > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-  border-right: 0;
-}
-.panel > .table-bordered > thead > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-.panel > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-bordered > thead > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-.panel > .table-bordered > tbody > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
-  border-bottom: 0;
-}
-.panel > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-bordered > tfoot > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
-  border-bottom: 0;
-}
-.panel > .table-responsive {
-  margin-bottom: 0;
-  border: 0;
-}
-.panel-group {
-  margin-bottom: 20px;
-}
-.panel-group .panel {
-  margin-bottom: 0;
-  border-radius: 4px;
-}
-.panel-group .panel + .panel {
-  margin-top: 5px;
-}
-.panel-group .panel-heading {
-  border-bottom: 0;
-}
-.panel-group .panel-heading + .panel-collapse > .panel-body,
-.panel-group .panel-heading + .panel-collapse > .list-group {
-  border-top: 1px solid #ddd;
-}
-.panel-group .panel-footer {
-  border-top: 0;
-}
-.panel-group .panel-footer + .panel-collapse .panel-body {
-  border-bottom: 1px solid #ddd;
-}
-.panel-default {
-  border-color: #ddd;
-}
-.panel-default > .panel-heading {
-  color: #333333;
-  background-color: #f5f5f5;
-  border-color: #ddd;
-}
-.panel-default > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #ddd;
-}
-.panel-default > .panel-heading .badge {
-  color: #f5f5f5;
-  background-color: #333333;
-}
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ddd;
-}
-.panel-primary {
-  border-color: #337ab7;
-}
-.panel-primary > .panel-heading {
-  color: #fff;
-  background-color: #337ab7;
-  border-color: #337ab7;
-}
-.panel-primary > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #337ab7;
-}
-.panel-primary > .panel-heading .badge {
-  color: #337ab7;
-  background-color: #fff;
-}
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #337ab7;
-}
-.panel-success {
-  border-color: #d6e9c6;
-}
-.panel-success > .panel-heading {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-.panel-success > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #d6e9c6;
-}
-.panel-success > .panel-heading .badge {
-  color: #dff0d8;
-  background-color: #3c763d;
-}
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #d6e9c6;
-}
-.panel-info {
-  border-color: #bce8f1;
-}
-.panel-info > .panel-heading {
-  color: #31708f;
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-}
-.panel-info > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #bce8f1;
-}
-.panel-info > .panel-heading .badge {
-  color: #d9edf7;
-  background-color: #31708f;
-}
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #bce8f1;
-}
-.panel-warning {
-  border-color: #faebcc;
-}
-.panel-warning > .panel-heading {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #faebcc;
-}
-.panel-warning > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #faebcc;
-}
-.panel-warning > .panel-heading .badge {
-  color: #fcf8e3;
-  background-color: #8a6d3b;
-}
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #faebcc;
-}
-.panel-danger {
-  border-color: #ebccd1;
-}
-.panel-danger > .panel-heading {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #ebccd1;
-}
-.panel-danger > .panel-heading + .panel-collapse > .panel-body {
-  border-top-color: #ebccd1;
-}
-.panel-danger > .panel-heading .badge {
-  color: #f2dede;
-  background-color: #a94442;
-}
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
-  border-bottom-color: #ebccd1;
-}
-.embed-responsive {
-  position: relative;
-  display: block;
-  height: 0;
-  padding: 0;
-  overflow: hidden;
-}
-.embed-responsive .embed-responsive-item,
-.embed-responsive iframe,
-.embed-responsive embed,
-.embed-responsive object,
-.embed-responsive video {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  border: 0;
-}
-.embed-responsive-16by9 {
-  padding-bottom: 56.25%;
-}
-.embed-responsive-4by3 {
-  padding-bottom: 75%;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-lg {
-  padding: 24px;
-  border-radius: 6px;
-}
-.well-sm {
-  padding: 9px;
-  border-radius: 3px;
-}
-.close {
-  float: right;
-  font-size: 21px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  filter: alpha(opacity=20);
-  opacity: 0.2;
-}
-.close:hover,
-.close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  filter: alpha(opacity=50);
-  opacity: 0.5;
-}
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-}
-.modal-open {
-  overflow: hidden;
-}
-.modal {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1050;
-  display: none;
-  overflow: hidden;
-  -webkit-overflow-scrolling: touch;
-  outline: 0;
-}
-.modal.fade .modal-dialog {
-  -webkit-transform: translate(0, -25%);
-  -ms-transform: translate(0, -25%);
-  -o-transform: translate(0, -25%);
-  transform: translate(0, -25%);
-  -webkit-transition: -webkit-transform 0.3s ease-out;
-  -o-transition: -o-transform 0.3s ease-out;
-  transition: -webkit-transform 0.3s ease-out;
-  transition: transform 0.3s ease-out;
-  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;
-}
-.modal.in .modal-dialog {
-  -webkit-transform: translate(0, 0);
-  -ms-transform: translate(0, 0);
-  -o-transform: translate(0, 0);
-  transform: translate(0, 0);
-}
-.modal-open .modal {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-.modal-dialog {
-  position: relative;
-  width: auto;
-  margin: 10px;
-}
-.modal-content {
-  position: relative;
-  background-color: #fff;
-  background-clip: padding-box;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000;
-}
-.modal-backdrop.fade {
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.modal-backdrop.in {
-  filter: alpha(opacity=50);
-  opacity: 0.5;
-}
-.modal-header {
-  padding: 15px;
-  border-bottom: 1px solid #e5e5e5;
-}
-.modal-header .close {
-  margin-top: -2px;
-}
-.modal-title {
-  margin: 0;
-  line-height: 1.42857143;
-}
-.modal-body {
-  position: relative;
-  padding: 15px;
-}
-.modal-footer {
-  padding: 15px;
-  text-align: right;
-  border-top: 1px solid #e5e5e5;
-}
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-.modal-scrollbar-measure {
-  position: absolute;
-  top: -9999px;
-  width: 50px;
-  height: 50px;
-  overflow: scroll;
-}
-@media (min-width: 768px) {
-  .modal-dialog {
-    width: 600px;
-    margin: 30px auto;
-  }
-  .modal-content {
-    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-  }
-  .modal-sm {
-    width: 300px;
-  }
-}
-@media (min-width: 992px) {
-  .modal-lg {
-    width: 900px;
-  }
-}
-.tooltip {
-  position: absolute;
-  z-index: 1070;
-  display: block;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-style: normal;
-  font-weight: 400;
-  line-height: 1.42857143;
-  line-break: auto;
-  text-align: left;
-  text-align: start;
-  text-decoration: none;
-  text-shadow: none;
-  text-transform: none;
-  letter-spacing: normal;
-  word-break: normal;
-  word-spacing: normal;
-  word-wrap: normal;
-  white-space: normal;
-  font-size: 12px;
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.tooltip.in {
-  filter: alpha(opacity=90);
-  opacity: 0.9;
-}
-.tooltip.top {
-  padding: 5px 0;
-  margin-top: -3px;
-}
-.tooltip.right {
-  padding: 0 5px;
-  margin-left: 3px;
-}
-.tooltip.bottom {
-  padding: 5px 0;
-  margin-top: 3px;
-}
-.tooltip.left {
-  padding: 0 5px;
-  margin-left: -3px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.top-left .tooltip-arrow {
-  right: 5px;
-  bottom: 0;
-  margin-bottom: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.top-right .tooltip-arrow {
-  bottom: 0;
-  left: 5px;
-  margin-bottom: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-width: 5px 5px 5px 0;
-  border-right-color: #000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.tooltip.bottom-left .tooltip-arrow {
-  top: 0;
-  right: 5px;
-  margin-top: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.tooltip.bottom-right .tooltip-arrow {
-  top: 0;
-  left: 5px;
-  margin-top: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #fff;
-  text-align: center;
-  background-color: #000;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1060;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-style: normal;
-  font-weight: 400;
-  line-height: 1.42857143;
-  line-break: auto;
-  text-align: left;
-  text-align: start;
-  text-decoration: none;
-  text-shadow: none;
-  text-transform: none;
-  letter-spacing: normal;
-  word-break: normal;
-  word-spacing: normal;
-  word-wrap: normal;
-  white-space: normal;
-  font-size: 14px;
-  background-color: #fff;
-  background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-}
-.popover.top {
-  margin-top: -10px;
-}
-.popover.right {
-  margin-left: 10px;
-}
-.popover.bottom {
-  margin-top: 10px;
-}
-.popover.left {
-  margin-left: -10px;
-}
-.popover > .arrow {
-  border-width: 11px;
-}
-.popover > .arrow,
-.popover > .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.popover > .arrow:after {
-  content: "";
-  border-width: 10px;
-}
-.popover.top > .arrow {
-  bottom: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-color: #999999;
-  border-top-color: rgba(0, 0, 0, 0.25);
-  border-bottom-width: 0;
-}
-.popover.top > .arrow:after {
-  bottom: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-color: #fff;
-  border-bottom-width: 0;
-}
-.popover.right > .arrow {
-  top: 50%;
-  left: -11px;
-  margin-top: -11px;
-  border-right-color: #999999;
-  border-right-color: rgba(0, 0, 0, 0.25);
-  border-left-width: 0;
-}
-.popover.right > .arrow:after {
-  bottom: -10px;
-  left: 1px;
-  content: " ";
-  border-right-color: #fff;
-  border-left-width: 0;
-}
-.popover.bottom > .arrow {
-  top: -11px;
-  left: 50%;
-  margin-left: -11px;
-  border-top-width: 0;
-  border-bottom-color: #999999;
-  border-bottom-color: rgba(0, 0, 0, 0.25);
-}
-.popover.bottom > .arrow:after {
-  top: 1px;
-  margin-left: -10px;
-  content: " ";
-  border-top-width: 0;
-  border-bottom-color: #fff;
-}
-.popover.left > .arrow {
-  top: 50%;
-  right: -11px;
-  margin-top: -11px;
-  border-right-width: 0;
-  border-left-color: #999999;
-  border-left-color: rgba(0, 0, 0, 0.25);
-}
-.popover.left > .arrow:after {
-  right: 1px;
-  bottom: -10px;
-  content: " ";
-  border-right-width: 0;
-  border-left-color: #fff;
-}
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 14px;
-  background-color: #f7f7f7;
-  border-bottom: 1px solid #ebebeb;
-  border-radius: 5px 5px 0 0;
-}
-.popover-content {
-  padding: 9px 14px;
-}
-.carousel {
-  position: relative;
-}
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-}
-.carousel-inner > .item {
-  position: relative;
-  display: none;
-  -webkit-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  line-height: 1;
-}
-@media all and (transform-3d), (-webkit-transform-3d) {
-  .carousel-inner > .item {
-    -webkit-transition: -webkit-transform 0.6s ease-in-out;
-    -o-transition: -o-transform 0.6s ease-in-out;
-    transition: -webkit-transform 0.6s ease-in-out;
-    transition: transform 0.6s ease-in-out;
-    transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;
-    -webkit-backface-visibility: hidden;
-    backface-visibility: hidden;
-    -webkit-perspective: 1000px;
-    perspective: 1000px;
-  }
-  .carousel-inner > .item.next,
-  .carousel-inner > .item.active.right {
-    -webkit-transform: translate3d(100%, 0, 0);
-    transform: translate3d(100%, 0, 0);
-    left: 0;
-  }
-  .carousel-inner > .item.prev,
-  .carousel-inner > .item.active.left {
-    -webkit-transform: translate3d(-100%, 0, 0);
-    transform: translate3d(-100%, 0, 0);
-    left: 0;
-  }
-  .carousel-inner > .item.next.left,
-  .carousel-inner > .item.prev.right,
-  .carousel-inner > .item.active {
-    -webkit-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-    left: 0;
-  }
-}
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  display: block;
-}
-.carousel-inner > .active {
-  left: 0;
-}
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel-inner > .next {
-  left: 100%;
-}
-.carousel-inner > .prev {
-  left: -100%;
-}
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
-  left: 0;
-}
-.carousel-inner > .active.left {
-  left: -100%;
-}
-.carousel-inner > .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 15%;
-  font-size: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
-  background-color: rgba(0, 0, 0, 0);
-  filter: alpha(opacity=50);
-  opacity: 0.5;
-}
-.carousel-control.left {
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
-  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
-  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
-  background-repeat: repeat-x;
-}
-.carousel-control.right {
-  right: 0;
-  left: auto;
-  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
-  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
-  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
-  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
-  background-repeat: repeat-x;
-}
-.carousel-control:hover,
-.carousel-control:focus {
-  color: #fff;
-  text-decoration: none;
-  outline: 0;
-  filter: alpha(opacity=90);
-  opacity: 0.9;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right {
-  position: absolute;
-  top: 50%;
-  z-index: 5;
-  display: inline-block;
-  margin-top: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .glyphicon-chevron-left {
-  left: 50%;
-  margin-left: -10px;
-}
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-right {
-  right: 50%;
-  margin-right: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
-  width: 20px;
-  height: 20px;
-  font-family: serif;
-  line-height: 1;
-}
-.carousel-control .icon-prev:before {
-  content: "\2039";
-}
-.carousel-control .icon-next:before {
-  content: "\203a";
-}
-.carousel-indicators {
-  position: absolute;
-  bottom: 10px;
-  left: 50%;
-  z-index: 15;
-  width: 60%;
-  padding-left: 0;
-  margin-left: -30%;
-  text-align: center;
-  list-style: none;
-}
-.carousel-indicators li {
-  display: inline-block;
-  width: 10px;
-  height: 10px;
-  margin: 1px;
-  text-indent: -999px;
-  cursor: pointer;
-  background-color: #000 \9;
-  background-color: rgba(0, 0, 0, 0);
-  border: 1px solid #fff;
-  border-radius: 10px;
-}
-.carousel-indicators .active {
-  width: 12px;
-  height: 12px;
-  margin: 0;
-  background-color: #fff;
-}
-.carousel-caption {
-  position: absolute;
-  right: 15%;
-  bottom: 20px;
-  left: 15%;
-  z-index: 10;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  color: #fff;
-  text-align: center;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
-}
-.carousel-caption .btn {
-  text-shadow: none;
-}
-@media screen and (min-width: 768px) {
-  .carousel-control .glyphicon-chevron-left,
-  .carousel-control .glyphicon-chevron-right,
-  .carousel-control .icon-prev,
-  .carousel-control .icon-next {
-    width: 30px;
-    height: 30px;
-    margin-top: -10px;
-    font-size: 30px;
-  }
-  .carousel-control .glyphicon-chevron-left,
-  .carousel-control .icon-prev {
-    margin-left: -10px;
-  }
-  .carousel-control .glyphicon-chevron-right,
-  .carousel-control .icon-next {
-    margin-right: -10px;
-  }
-  .carousel-caption {
-    right: 20%;
-    left: 20%;
-    padding-bottom: 30px;
-  }
-  .carousel-indicators {
-    bottom: 20px;
-  }
-}
-.clearfix:before,
-.clearfix:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.row:before,
-.row:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.btn-toolbar:before,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.pager:before,
-.pager:after,
-.panel-body:before,
-.panel-body:after,
-.modal-header:before,
-.modal-header:after,
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: " ";
-}
-.clearfix:after,
-.dl-horizontal dd:after,
-.container:after,
-.container-fluid:after,
-.row:after,
-.form-horizontal .form-group:after,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.pager:after,
-.panel-body:after,
-.modal-header:after,
-.modal-footer:after {
-  clear: both;
-}
-.center-block {
-  display: block;
-  margin-right: auto;
-  margin-left: auto;
-}
-.pull-right {
-  float: right !important;
-}
-.pull-left {
-  float: left !important;
-}
-.hide {
-  display: none !important;
-}
-.show {
-  display: block !important;
-}
-.invisible {
-  visibility: hidden;
-}
-.text-hide {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.hidden {
-  display: none !important;
-}
-.affix {
-  position: fixed;
-}
-@-ms-viewport {
-  width: device-width;
-}
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
-  display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
-  display: none !important;
-}
-@media (max-width: 767px) {
-  .visible-xs {
-    display: block !important;
-  }
-  table.visible-xs {
-    display: table !important;
-  }
-  tr.visible-xs {
-    display: table-row !important;
-  }
-  th.visible-xs,
-  td.visible-xs {
-    display: table-cell !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-block {
-    display: block !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-inline {
-    display: inline !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm {
-    display: block !important;
-  }
-  table.visible-sm {
-    display: table !important;
-  }
-  tr.visible-sm {
-    display: table-row !important;
-  }
-  th.visible-sm,
-  td.visible-sm {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-block {
-    display: block !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md {
-    display: block !important;
-  }
-  table.visible-md {
-    display: table !important;
-  }
-  tr.visible-md {
-    display: table-row !important;
-  }
-  th.visible-md,
-  td.visible-md {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-block {
-    display: block !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg {
-    display: block !important;
-  }
-  table.visible-lg {
-    display: table !important;
-  }
-  tr.visible-lg {
-    display: table-row !important;
-  }
-  th.visible-lg,
-  td.visible-lg {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-block {
-    display: block !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (max-width: 767px) {
-  .hidden-xs {
-    display: none !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .hidden-sm {
-    display: none !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .hidden-md {
-    display: none !important;
-  }
-}
-@media (min-width: 1200px) {
-  .hidden-lg {
-    display: none !important;
-  }
-}
-.visible-print {
-  display: none !important;
-}
-@media print {
-  .visible-print {
-    display: block !important;
-  }
-  table.visible-print {
-    display: table !important;
-  }
-  tr.visible-print {
-    display: table-row !important;
-  }
-  th.visible-print,
-  td.visible-print {
-    display: table-cell !important;
-  }
-}
-.visible-print-block {
-  display: none !important;
-}
-@media print {
-  .visible-print-block {
-    display: block !important;
-  }
-}
-.visible-print-inline {
-  display: none !important;
-}
-@media print {
-  .visible-print-inline {
-    display: inline !important;
-  }
-}
-.visible-print-inline-block {
-  display: none !important;
-}
-@media print {
-  .visible-print-inline-block {
-    display: inline-block !important;
-  }
-}
-@media print {
-  .hidden-print {
-    display: none !important;
-  }
-}
-/*# sourceMappingURL=bootstrap.css.map */
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.css.map
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.css.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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A;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;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rDA;EC8DG,oBAAA;CfwnDH;ActrDA;EC8DG,oBAAA;Cf2nDH;AczrDA;EC8DG,WAAA;Cf8nDH;Ac5rDA;EC8DG,oBAAA;CfioDH;Ac/rDA;EC8DG,oBAAA;CfooDH;AclsDA;EC8DG,WAAA;CfuoDH;AcrsDA;EC8DG,oBAAA;Cf0oDH;AcxsDA;EC8DG,oBAAA;Cf6oDH;Ac3sDA;EC8DG,WAAA;CfgpDH;Ac9sDA;EC8DG,oBAAA;CfmpDH;AcjtDA;EC8DG,mBAAA;CfspDH;AcptDA;ECmEG,YAAA;CfopDH;AcvtDA;ECoDG,WAAA;CfsqDH;Ac1tDA;ECoDG,mBAAA;CfyqDH;Ac7tDA;ECoDG,mBAAA;Cf4qDH;AchuDA;ECoDG,UAAA;Cf+qDH;AcnuDA;ECoDG,mBAAA;CfkrDH;ActuDA;ECoDG,mBAAA;CfqrDH;AczuDA;ECoDG,UAAA;CfwrDH;Ac5uDA;ECoDG,mBAAA;Cf2rDH;Ac/uDA;ECoDG,mBAAA;Cf8rDH;AclvDA;ECoDG,UAAA;CfisDH;AcrvDA;ECoDG,mBAAA;CfosDH;AcxvDA;ECoDG,kBAAA;CfusDH;Ac3vDA;ECyDG,WAAA;CfqsDH;Ac9vDA;ECwEG,kBAAA;CfyrDH;AcjwDA;ECwEG,0BAAA;Cf4rDH;AcpwDA;ECwEG,0BAAA;Cf+rDH;AcvwDA;ECwEG,iBAAA;CfksDH;Ac1wDA;ECwEG,0BAAA;CfqsDH;Ac7wDA;ECwEG,0BAAA;CfwsDH;AchxDA;ECwEG,iBAAA;Cf2sDH;AcnxDA;ECwEG,0BAAA;Cf8sDH;ActxDA;ECwEG,0BAAA;CfitDH;AczxDA;ECwEG,iBAAA;CfotDH;Ac5xDA;ECwEG,0BAAA;CfutDH;Ac/xDA;ECwEG,yBAAA;Cf0tDH;AclyDA;ECwEG,gBAAA;Cf6tDH;Aa5tDD;ECzEC;;;;;;;;;;;;ICuCK,YAAA;Gf6wDH;EcpzDF;IC+CG,YAAA;GfwwDD;EcvzDF;IC+CG,oBAAA;Gf2wDD;Ec1zDF;IC+CG,oBAAA;Gf8wDD;Ec7zDF;IC+CG,WAAA;GfixDD;Ech0DF;IC+CG,oBAAA;GfoxDD;Ecn0DF;IC+CG,oBAAA;GfuxDD;Ect0DF;IC+CG,WAAA;Gf0xDD;Ecz0DF;IC+CG,oBAAA;Gf6xDD;Ec50DF;IC+CG,oBAAA;GfgyDD;Ec/0DF;IC+CG,WAAA;GfmyDD;Ecl1DF;IC+CG,oBAAA;GfsyDD;Ecr1DF;IC+CG,mBAAA;GfyyDD;Ecx1DF;IC8DG,YAAA;Gf6xDD;Ec31DF;IC8DG,oBAAA;GfgyDD;Ec91DF;IC8DG,oBAAA;GfmyDD;Ecj2DF;IC8DG,WAAA;GfsyDD;Ecp2DF;IC8DG,oBAAA;GfyyDD;Ecv2DF;IC8DG,oBAAA;Gf4yDD;Ec12DF;IC8DG,WAAA;Gf+yDD;Ec72DF;IC8DG,oBAAA;GfkzDD;Ech3DF;IC8DG,oBAAA;GfqzDD;Ecn3DF;IC8DG,WAAA;GfwzDD;Ect3DF;IC8DG,oBAAA;Gf2zDD;Ecz3DF;IC8DG,mBAAA;Gf8zDD;Ec53DF;ICmEG,YAAA;Gf4zDD;Ec/3DF;ICoDG,WAAA;Gf80DD;Ecl4DF;ICoDG,mBAAA;Gfi1DD;Ecr4DF;ICoDG,mBAAA;Gfo1DD;Ecx4DF;ICoDG,UAAA;Gfu1DD;Ec34DF;ICoDG,mBAAA;Gf01DD;Ec94DF;ICoDG,mBAAA;Gf61DD;Ecj5DF;ICoDG,UAAA;Gfg2DD;Ecp5DF;ICoDG,mBAAA;Gfm2DD;Ecv5DF;ICoDG,mBAAA;Gfs2DD;Ec15DF;ICoDG,UAAA;Gfy2DD;Ec75DF;ICoDG,mBAAA;Gf42DD;Ech6DF;ICoDG,kBAAA;Gf+2DD;Ecn6DF;ICyDG,WAAA;Gf62DD;Ect6DF;ICwEG,kBAAA;Gfi2DD;Ecz6DF;ICwEG,0BAAA;Gfo2DD;Ec56DF;ICwEG,0BAAA;Gfu2DD;Ec/6DF;ICwEG,iBAAA;Gf02DD;Ecl7DF;ICwEG,0BAAA;Gf62DD;Ecr7DF;ICwEG,0BAAA;Gfg3DD;Ecx7DF;ICwEG,iBAAA;Gfm3DD;Ec37DF;ICwEG,0BAAA;Gfs3DD;Ec97DF;ICwEG,0BAAA;Gfy3DD;Ecj8DF;ICwEG,iBAAA;Gf43DD;Ecp8DF;ICwEG,0BAAA;Gf+3DD;Ecv8DF;ICwEG,yBAAA;Gfk4DD;Ec18DF;ICwEG,gBAAA;Gfq4DD;CACF;Aa53DD;EClFC;;;;;;;;;;;;ICuCK,YAAA;Gfs7DH;Ec79DF;IC+CG,YAAA;Gfi7DD;Ech+DF;IC+CG,oBAAA;Gfo7DD;Ecn+DF;IC+CG,oBAAA;Gfu7DD;Ect+DF;IC+CG,WAAA;Gf07DD;Ecz+DF;IC+CG,oBAAA;Gf67DD;Ec5+DF;IC+CG,oBAAA;Gfg8DD;Ec/+DF;IC+CG,WAAA;Gfm8DD;Ecl/DF;IC+CG,oBAAA;Gfs8DD;Ecr/DF;IC+CG,oBAAA;Gfy8DD;Ecx/DF;IC+CG,WAAA;Gf48DD;Ec3/DF;IC+CG,oBAAA;Gf+8DD;Ec9/DF;IC+CG,mBAAA;Gfk9DD;EcjgEF;IC8DG,YAAA;Gfs8DD;EcpgEF;IC8DG,oBAAA;Gfy8DD;EcvgEF;IC8DG,oBAAA;Gf48DD;Ec1gEF;IC8DG,WAAA;Gf+8DD;Ec7gEF;IC8DG,oBAAA;Gfk9DD;EchhEF;IC8DG,oBAAA;Gfq9DD;EcnhEF;IC8DG,WAAA;Gfw9DD;EcthEF;IC8DG,oBAAA;Gf29DD;EczhEF;IC8DG,oBAAA;Gf89DD;Ec5hEF;IC8DG,WAAA;Gfi+DD;Ec/hEF;IC8DG,oBAAA;Gfo+DD;EcliEF;IC8DG,mBAAA;Gfu+DD;EcriEF;ICmEG,YAAA;Gfq+DD;EcxiEF;ICoDG,WAAA;Gfu/DD;Ec3iEF;ICoDG,mBAAA;Gf0/DD;Ec9iEF;ICoDG,mBAAA;Gf6/DD;EcjjEF;ICoDG,UAAA;GfggED;EcpjEF;ICoDG,mBAAA;GfmgED;EcvjEF;ICoDG,mBAAA;GfsgED;Ec1jEF;ICoDG,UAAA;GfygED;Ec7jEF;ICoDG,mBAAA;Gf4gED;EchkEF;ICoDG,mBAAA;Gf+gED;EcnkEF;ICoDG,UAAA;GfkhED;EctkEF;ICoDG,mBAAA;GfqhED;EczkEF;ICoDG,kBAAA;GfwhED;Ec5kEF;ICyDG,WAAA;GfshED;Ec/kEF;ICwEG,kBAAA;Gf0gED;EcllEF;ICwEG,0BAAA;Gf6gED;EcrlEF;ICwEG,0BAAA;GfghED;EcxlEF;ICwEG,iBAAA;GfmhED;Ec3lEF;ICwEG,0BAAA;GfshED;Ec9lEF;ICwEG,0BAAA;GfyhED;EcjmEF;ICwEG,iBAAA;Gf4hED;EcpmEF;ICwEG,0BAAA;Gf+hED;EcvmEF;ICwEG,0BAAA;GfkiED;Ec1mEF;ICwEG,iBAAA;GfqiED;Ec7mEF;ICwEG,0BAAA;GfwiED;EchnEF;ICwEG,yBAAA;Gf2iED;EcnnEF;ICwEG,gBAAA;Gf8iED;CACF;Aa5hED;EC3FC;;;;;;;;;;;;ICuCK,YAAA;Gf+lEH;EctoEF;IC+CG,YAAA;Gf0lED;EczoEF;IC+CG,oBAAA;Gf6lED;Ec5oEF;IC+CG,oBAAA;GfgmED;Ec/oEF;IC+CG,WAAA;GfmmED;EclpEF;IC+CG,oBAAA;GfsmED;EcrpEF;IC+CG,oBAAA;GfymED;EcxpEF;IC+CG,WAAA;Gf4mED;Ec3pEF;IC+CG,oBAAA;Gf+mED;Ec9pEF;IC+CG,oBAAA;GfknED;EcjqEF;IC+CG,WAAA;GfqnED;EcpqEF;IC+CG,oBAAA;GfwnED;EcvqEF;IC+CG,mBAAA;Gf2nED;Ec1qEF;IC8DG,YAAA;Gf+mED;Ec7qEF;IC8DG,oBAAA;GfknED;EchrEF;IC8DG,oBAAA;GfqnED;EcnrEF;IC8DG,WAAA;GfwnED;EctrEF;IC8DG,oBAAA;Gf2nED;EczrEF;IC8DG,oBAAA;Gf8nED;Ec5rEF;IC8DG,WAAA;GfioED;Ec/rEF;IC8DG,oBAAA;GfooED;EclsEF;IC8DG,oBAAA;GfuoED;EcrsEF;IC8DG,WAAA;Gf0oED;EcxsEF;IC8DG,oBAAA;Gf6oED;Ec3sEF;IC8DG,mBAAA;GfgpED;Ec9sEF;ICmEG,YAAA;Gf8oED;EcjtEF;ICoDG,WAAA;GfgqED;EcptEF;ICoDG,mBAAA;GfmqED;EcvtEF;ICoDG,mBAAA;GfsqED;Ec1tEF;ICoDG,UAAA;GfyqED;Ec7tEF;ICoDG,mBAAA;Gf4qED;EchuEF;ICoDG,mBAAA;Gf+qED;EcnuEF;ICoDG,UAAA;GfkrED;EctuEF;ICoDG,mBAAA;GfqrED;EczuEF;ICoDG,mBAAA;GfwrED;Ec5uEF;ICoDG,UAAA;Gf2rED;Ec/uEF;ICoDG,mBAAA;Gf8rED;EclvEF;ICoDG,kBAAA;GfisED;EcrvEF;ICyDG,WAAA;Gf+rED;EcxvEF;ICwEG,kBAAA;GfmrED;Ec3vEF;ICwEG,0BAAA;GfsrED;Ec9vEF;ICwEG,0BAAA;GfyrED;EcjwEF;ICwEG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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  text-decoration: underline dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: \"\\00A0 \\2014\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11,\n  .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11,\n  .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11,\n  .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  background-image: none;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  background-image: none;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  background-image: none;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  background-image: none;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  background-image: none;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  background-image: none;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: 400;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n  content: \"\\203a\";\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n//    without disabling user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n  border-bottom: none; // 1\n  text-decoration: underline; // 2\n  text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important; // Black prints faster: h5bp.com/s\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n\n  // Don't show links that are fragment identifiers,\n  // or use the `javascript:` pseudo protocol\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n\n  thead {\n    display: table-header-group; // h5bp.com/t\n  }\n\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n\n  img {\n    max-width: 100% !important;\n  }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n\n  // Bootstrap specific changes start\n\n  // Bootstrap components\n  .navbar {\n    display: none;\n  }\n  .btn,\n  .dropup > .btn {\n    > .caret {\n      border-top-color: #000 !important;\n    }\n  }\n  .label {\n    border: 1px solid #000;\n  }\n\n  .table {\n    border-collapse: collapse !important;\n\n    td,\n    th {\n      background-color: #fff !important;\n    }\n  }\n  .table-bordered {\n    th,\n    td {\n      border: 1px solid #ddd !important;\n    }\n  }\n}\n","// stylelint-disable value-list-comma-newline-after, value-list-comma-space-after, indentation, declaration-colon-newline-after, font-family-no-missing-generic-family-keyword\n\n//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"@{icon-font-path}@{icon-font-name}.eot\");\n  src: url(\"@{icon-font-path}@{icon-font-name}.eot?#iefix\") format(\"embedded-opentype\"),\n       url(\"@{icon-font-path}@{icon-font-name}.woff2\") format(\"woff2\"),\n       url(\"@{icon-font-path}@{icon-font-name}.woff\") format(\"woff\"),\n       url(\"@{icon-font-path}@{icon-font-name}.ttf\") format(\"truetype\"),\n       url(\"@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\") format(\"svg\");\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\002a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n  word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // WebKit-specific. Other browsers will keep their default outline style.\n  // (Initially tried to also force default via `outline: initial`,\n  // but that seems to erroneously remove the outline in Firefox altogether.)\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and ( min--moz-device-pixel-ratio: 2),\n  only screen and ( -o-min-device-pixel-ratio: 2/1),\n  only screen and ( min-device-pixel-ratio: 2),\n  only screen and ( min-resolution: 192dpi),\n  only screen and ( min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: 400;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  padding: .2em;\n  background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-right: 5px;\n    padding-left: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: \"\\2014 \\00A0\"; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: \"\"; }\n    &:after {\n      content: \"\\00A0 \\2014\"; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: 700;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  color: @pre-color;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n\n  [class*=\"col-\"] {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  padding-right: ceil((@gutter / 2));\n  padding-left: floor((@gutter / 2));\n  margin-right: auto;\n  margin-left: auto;\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-right: floor((@gutter / -2));\n  margin-left: ceil((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-right: floor((@grid-gutter-width / 2));\n      padding-left: ceil((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n\n  // Table cell sizing\n  //\n  // Reset default table behavior\n\n  col[class*=\"col-\"] {\n    position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n    display: table-column;\n    float: none;\n  }\n\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      display: table-cell;\n      float: none;\n    }\n  }\n}\n\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\n\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n  overflow-x: auto;\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * .75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n  // Override content-box in Normalize (* isn't specific enough)\n  .box-sizing(border-box);\n\n  // Search inputs in iOS\n  //\n  // This overrides the extra rounded corners on search inputs in iOS so that our\n  // `.form-control` class can properly style them. Note that this cannot simply\n  // be added to `.form-control` as it's not specific enough. For details, see\n  // https://github.com/twbs/bootstrap/issues/11586.\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n\n  // Apply same disabled cursor tweak as for inputs\n  // Some special care is needed because <label>s don't inherit their parent's `cursor`.\n  //\n  // Note: Neither radios nor checkboxes can be readonly.\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    background-color: transparent;\n    border: 0;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    &.form-control {\n      line-height: @input-height-base;\n    }\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  // These are used on elements with <label> descendants\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: @cursor-disabled;\n    }\n  }\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: 400;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n\n  // These are used directly on <label>s\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  min-height: (@line-height-computed + @font-size-base);\n  // Size it appropriately next to real form controls\n  padding-top: (@padding-base-vertical + 1);\n  padding-bottom: (@padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n\n  &.input-lg,\n  &.input-sm {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n  .form-control {\n    height: @input-height-small;\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n    border-radius: @input-border-radius-small;\n  }\n  select.form-control {\n    height: @input-height-small;\n    line-height: @input-height-small;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-small;\n    min-height: (@line-height-computed + @font-size-small);\n    padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n  }\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n  .form-control {\n    height: @input-height-large;\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n    border-radius: @input-border-radius-large;\n  }\n  select.form-control {\n    height: @input-height-large;\n    line-height: @input-height-large;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-large;\n    min-height: (@line-height-computed + @font-size-large);\n    padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: @input-height-base;\n  height: @input-height-base;\n  line-height: @input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: @input-height-large;\n  height: @input-height-large;\n  line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: @input-height-small;\n  height: @input-height-small;\n  line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n    top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n      margin-bottom: 0;\n      text-align: right;\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: floor((@grid-gutter-width / 2));\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-large-vertical + 1);\n        font-size: @font-size-large;\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-small-vertical + 1);\n        font-size: @font-size-small;\n      }\n    }\n  }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    background-color: @background-color;\n    border-color: @border-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    background-image: none;\n    outline: 0;\n    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: 400;\n  color: @link-color;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n    border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n    border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n    background-image: none;\n    border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n      border-color: darken(@border, 25%);\n    }\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n      border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  @opacity-ie: (@opacity * 100);  // IE8 filter\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n  opacity: @opacity;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: @caret-width-base dashed;\n  border-top: @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: @dropdown-bg;\n  background-clip: padding-box;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0, 0, 0, .175));\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: 400;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n\n    &:hover,\n    &:focus {\n      color: @dropdown-link-hover-color;\n      text-decoration: none;\n      background-color: @dropdown-link-hover-bg;\n    }\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    background-color: @dropdown-link-active-bg;\n    outline: 0;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    cursor: @cursor-disabled;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  right: 0;\n  left: auto; // Reset the default from `.dropdown-menu`\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    content: \"\";\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// stylelint-disable selector-no-qualifying-type */\n\n//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    .border-top-radius(@btn-border-radius-base);\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    .border-top-radius(0);\n    .border-bottom-radius(@btn-border-radius-base);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    display: table-cell;\n    float: none;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-left-radius: @radius;\n  border-top-right-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-top-right-radius: @radius;\n  border-bottom-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n  border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-top-left-radius: @radius;\n  border-bottom-left-radius: @radius;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: 400;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type, selector-max-type\n\n//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  padding-left: 0; // Override default ul/ol\n  margin-bottom: 0;\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        cursor: @cursor-disabled;\n        background-color: transparent;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        cursor: default;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      margin-bottom: 5px;\n      text-align: center;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, selector-max-class, declaration-no-important, selector-no-qualifying-type\n\n//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  padding-right: @navbar-padding-horizontal;\n  padding-left: @navbar-padding-horizontal;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-right: 0;\n      padding-left: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n\n  // Fix the top/bottom navbars when screen real estate supports it\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left: -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left: 0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  height: @navbar-height;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: @navbar-padding-horizontal;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top: @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  padding: 10px @navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  margin-left: -@navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-right: @navbar-padding-horizontal;\n    margin-left: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n\n    // Dropdown menu items\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n\n    // Dropdowns\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      padding: 0 5px;\n      color: @breadcrumb-color;\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      margin-left: -1px;\n      line-height: @line-height-base;\n      color: @pagination-color;\n      text-decoration: none;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n\n      &:hover,\n      &:focus {\n        z-index: 2;\n        color: @pagination-hover-color;\n        background-color: @pagination-hover-bg;\n        border-color: @pagination-hover-border;\n      }\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      cursor: default;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      cursor: @cursor-disabled;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  text-align: center;\n  list-style: none;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      cursor: @cursor-disabled;\n      background-color: @pager-bg;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  line-height: @badge-line-height;\n  color: @badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top: @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    padding-right: (@grid-gutter-width / 2);\n    padding-left: (@grid-gutter-width / 2);\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top: (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-right: (@jumbotron-padding * 2);\n      padding-left: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-right: auto;\n    margin-left: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n// The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  color: @text-color;\n  background-color: @background;\n  border-color: @border;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","// stylelint-disable at-rule-no-vendor-prefix\n\n//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  overflow: hidden;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 20px;\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    color: @list-group-disabled-color;\n    cursor: @cursor-disabled;\n    background-color: @list-group-disabled-bg;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    color: @list-group-link-hover-color;\n    text-decoration: none;\n    background-color: @list-group-hover-bg;\n  }\n}\n\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a&,\n    button& {\n      color: @color;\n\n      .list-group-item-heading {\n        color: inherit;\n      }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, no-duplicate-selectors\n\n//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0, 0, 0, .05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: @panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: @panel-footer-padding;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n  > .panel-heading + .panel-collapse > .list-group {\n    .list-group-item:first-child {\n      .border-top-radius(0);\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-right: @panel-body-padding;\n      padding-left: @panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: (@panel-border-radius - 1);\n        border-top-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-right-radius: (@panel-border-radius - 1);\n        border-bottom-left-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    margin-bottom: 0;\n    border: 0;\n  }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: @border;\n    }\n    .badge {\n      color: @heading-bg-color;\n      background-color: @heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0, 0, 0, .15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","// stylelint-disable property-no-vendor-prefix\n\n//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n    appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0); }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  background-clip: padding-box;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0, 0, 0, .5));\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n    margin-left: 5px;\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0, 0, 0, .5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-small;\n\n  .opacity(0);\n\n  &.in { .opacity(@tooltip-opacity); }\n  &.top {\n    padding: @tooltip-arrow-width 0;\n    margin-top: -3px;\n  }\n  &.right {\n    padding: 0 @tooltip-arrow-width;\n    margin-left: 3px;\n  }\n  &.bottom {\n    padding: @tooltip-arrow-width 0;\n    margin-top: 3px;\n  }\n  &.left {\n    padding: 0 @tooltip-arrow-width;\n    margin-left: -3px;\n  }\n\n  // Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    right: @tooltip-arrow-width;\n    bottom: 0;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n",".reset-text() {\n  font-family: @font-family-base;\n  // We deliberately do NOT reset font-size.\n  font-style: normal;\n  font-weight: 400;\n  line-height: @line-height-base;\n  line-break: auto;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-base;\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0, 0, 0, .2));\n\n  // Offset the popover to account for the popover arrow\n  &.top { margin-top: -@popover-arrow-width; }\n  &.right { margin-left: @popover-arrow-width; }\n  &.bottom { margin-top: @popover-arrow-width; }\n  &.left { margin-left: -@popover-arrow-width; }\n\n  // Arrows\n  // .arrow is outer, .arrow:after is inner\n  > .arrow {\n    border-width: @popover-arrow-outer-width;\n\n    &,\n    &:after {\n      position: absolute;\n      display: block;\n      width: 0;\n      height: 0;\n      border-color: transparent;\n      border-style: solid;\n    }\n\n    &:after {\n      content: \"\";\n      border-width: @popover-arrow-width;\n    }\n  }\n\n  &.top > .arrow {\n    bottom: -@popover-arrow-outer-width;\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    border-bottom-width: 0;\n    &:after {\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      content: \" \";\n      border-top-color: @popover-arrow-color;\n      border-bottom-width: 0;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    border-left-width: 0;\n    &:after {\n      bottom: -@popover-arrow-width;\n      left: 1px;\n      content: \" \";\n      border-right-color: @popover-arrow-color;\n      border-left-width: 0;\n    }\n  }\n  &.bottom > .arrow {\n    top: -@popover-arrow-outer-width;\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    &:after {\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      content: \" \";\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      right: 1px;\n      bottom: -@popover-arrow-width;\n      content: \" \";\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n    }\n  }\n}\n\n.popover-title {\n  padding: 8px 14px;\n  margin: 0; // reset heading margin\n  font-size: @font-size-base;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n","// stylelint-disable media-feature-name-no-unknown\n\n//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n\n  > .item {\n    position: relative;\n    display: none;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .transition-transform(~\"0.6s ease-in-out\");\n      .backface-visibility(~\"hidden\");\n      .perspective(1000px);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: @carousel-control-width;\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n  .opacity(@carousel-control-opacity);\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .5); @end-color: rgba(0, 0, 0, .0001));\n  }\n  &.right {\n    right: 0;\n    left: auto;\n    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .0001); @end-color: rgba(0, 0, 0, .5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: @carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n    margin-top: -10px;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width: 20px;\n    height: 20px;\n    font-family: serif;\n    line-height: 1;\n  }\n\n  .icon-prev {\n    &:before {\n      content: \"\\2039\";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: \"\\203a\";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n\n  li {\n    display: inline-block;\n    width: 10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    cursor: pointer;\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0, 0, 0, 0); // IE9\n\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n  }\n\n  .active {\n    width: 12px;\n    height: 12px;\n    margin: 0;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: (@carousel-control-font-size * 1.5);\n      height: (@carousel-control-font-size * 1.5);\n      margin-top: (@carousel-control-font-size / -2);\n      font-size: (@carousel-control-font-size * 1.5);\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: (@carousel-control-font-size / -2);\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: (@carousel-control-font-size / -2);\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n  &:before,\n  &:after {\n    display: table; // 2\n    content: \" \"; // 1\n  }\n  &:after {\n    clear: both;\n  }\n}\n","// Center-align a block level element\n\n.center-block() {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n","// stylelint-disable font-family-name-quotes, font-family-no-missing-generic-family-keyword\n\n// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n","// stylelint-disable declaration-no-important, at-rule-no-vendor-prefix\n\n//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width\n// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-xs-block {\n  @media (max-width: @screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: @screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: @screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n.visible-lg-block {\n  @media (min-width: @screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: @screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: @screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table !important; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n"]}
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.min.css
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.min.css	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,6 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
-/*# sourceMappingURL=bootstrap.min.css.map */
Index: trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.min.css.map
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/css/bootstrap.min.css.map	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"sources":["bootstrap.css","less/normalize.less","dist/css/bootstrap.css","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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A,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,EFCJ,yBCzEC,Ub2zDC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UcnxDI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GFUJ,yBClFC,Ubo+DC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,Uc57DI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GFmBJ,0BC3FC,Ub6oEC,WACA,WACA,WAVA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UcrmEI,MAAA,KDvCL,WC+CG,MAAA,KD/CH,WC+CG,MAAA,aD/CH,WC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,ID/CH,UC+CG,MAAA,aD/CH,UC+CG,MAAA,YD/CH,gBC8DG,MAAA,KD9DH,gBC8DG,MAAA,aD9DH,gBC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,ID9DH,eC8DG,MAAA,aD9DH,eC8DG,MAAA,YD9DH,eCmEG,MAAA,KDnEH,gBCoDG,KAAA,KDpDH,gBCoDG,KAAA,aDpDH,gBCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,IDpDH,eCoDG,KAAA,aDpDH,eCoDG,KAAA,YDpDH,eCyDG,KAAA,KDzDH,kBCwEG,YAAA,KDxEH,kBCwEG,YAAA,aDxEH,kBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,IDxEH,iBCwEG,YAAA,aDxEH,iBCwEG,YAAA,YDxEH,iBCwEG,YAAA,GCjEJ,MACE,iBAAA,YADF,uBAQI,SAAA,OACA,QAAA,aACA,MAAA,KAKA,sBf+xEJ,sBe9xEM,SAAA,OACA,QAAA,WACA,MAAA,KAKN,QACE,YAAA,IACA,eAAA,IACA,MAAA,KACA,WAAA,KAGF,GACE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","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  text-decoration: underline dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: \"\\00A0 \\2014\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11,\n  .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11,\n  .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11,\n  .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  background-image: none;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  background-image: none;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  background-image: none;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  background-image: none;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  background-image: none;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  background-image: none;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: 400;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -moz-transition: -moz-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -moz-transition: -moz-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    -moz-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    -moz-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n  content: \"\\203a\";\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n//    without disabling user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n  border-bottom: none; // 1\n  text-decoration: underline; // 2\n  text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  -moz-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\002a\";\n}\n.glyphicon-plus:before {\n  content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n[role=\"button\"] {\n  cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: \"\\00A0 \\2014\";\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1,\n  .col-sm-2,\n  .col-sm-3,\n  .col-sm-4,\n  .col-sm-5,\n  .col-sm-6,\n  .col-sm-7,\n  .col-sm-8,\n  .col-sm-9,\n  .col-sm-10,\n  .col-sm-11,\n  .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1,\n  .col-md-2,\n  .col-md-3,\n  .col-md-4,\n  .col-md-5,\n  .col-md-6,\n  .col-md-7,\n  .col-md-8,\n  .col-md-9,\n  .col-md-10,\n  .col-md-11,\n  .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1,\n  .col-lg-2,\n  .col-lg-3,\n  .col-lg-4,\n  .col-lg-5,\n  .col-lg-6,\n  .col-lg-7,\n  .col-lg-8,\n  .col-lg-9,\n  .col-lg-10,\n  .col-lg-11,\n  .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  background-color: #eeeeee;\n  opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n}\ntextarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"].form-control,\n  input[type=\"time\"].form-control,\n  input[type=\"datetime-local\"].form-control,\n  input[type=\"month\"].form-control {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n  pointer-events: none;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #8c8c8c;\n}\n.btn-default:hover {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  background-image: none;\n  border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n  color: #333;\n  background-color: #d4d4d4;\n  border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  background-image: none;\n  border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #255625;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  background-image: none;\n  border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n  color: #fff;\n  background-color: #398439;\n  border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #1b6d85;\n}\n.btn-info:hover {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  background-image: none;\n  border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n  color: #fff;\n  background-color: #269abc;\n  border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #985f0d;\n}\n.btn-warning:hover {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  background-image: none;\n  border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n  color: #fff;\n  background-color: #d58512;\n  border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #761c19;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  background-image: none;\n  border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n  color: #fff;\n  background-color: #ac2925;\n  border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: 400;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity 0.15s linear;\n  -o-transition: opacity 0.15s linear;\n  transition: opacity 0.15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n}\n.collapse.in {\n  display: block;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-property: height, visibility;\n  -o-transition-property: height, visibility;\n  transition-property: height, visibility;\n  -webkit-transition-duration: 0.35s;\n  -o-transition-duration: 0.35s;\n  transition-duration: 0.35s;\n  -webkit-transition-timing-function: ease;\n  -o-transition-timing-function: ease;\n  transition-timing-function: ease;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.42857143;\n  color: #333333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n  box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group .form-control:focus {\n  z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: #555555;\n  text-align: center;\n  background-color: #eeeeee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n  color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eeeeee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  z-index: 2;\n  color: #23527c;\n  background-color: #eeeeee;\n  border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: #777777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border 0.2s ease-in-out;\n  -o-transition: border 0.2s ease-in-out;\n  transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  -webkit-transition: width 0.6s ease;\n  -o-transition: width 0.6s ease;\n  transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n  background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n  -o-animation: progress-bar-stripes 2s linear infinite;\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-object.img-thumbnail {\n  max-width: none;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777777;\n  cursor: not-allowed;\n  background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transform: translate(0, -25%);\n  -ms-transform: translate(0, -25%);\n  -o-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n  -webkit-transition: -webkit-transform 0.3s ease-out;\n  -o-transition: -o-transform 0.3s ease-out;\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out, -o-transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  -ms-transform: translate(0, 0);\n  -o-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.42857143;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: 0.6s ease-in-out left;\n  -o-transition: 0.6s ease-in-out left;\n  transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform 0.6s ease-in-out;\n    -o-transition: -o-transform 0.6s ease-in-out;\n    transition: -webkit-transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out;\n    transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out;\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n    -webkit-perspective: 1000px;\n    perspective: 1000px;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n  content: \"\\203a\";\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table !important;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table !important;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table !important;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table !important;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table !important;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important; // Black prints faster: h5bp.com/s\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n\n  // Don't show links that are fragment identifiers,\n  // or use the `javascript:` pseudo protocol\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n\n  thead {\n    display: table-header-group; // h5bp.com/t\n  }\n\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n\n  img {\n    max-width: 100% !important;\n  }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n\n  // Bootstrap specific changes start\n\n  // Bootstrap components\n  .navbar {\n    display: none;\n  }\n  .btn,\n  .dropup > .btn {\n    > .caret {\n      border-top-color: #000 !important;\n    }\n  }\n  .label {\n    border: 1px solid #000;\n  }\n\n  .table {\n    border-collapse: collapse !important;\n\n    td,\n    th {\n      background-color: #fff !important;\n    }\n  }\n  .table-bordered {\n    th,\n    td {\n      border: 1px solid #ddd !important;\n    }\n  }\n}\n","// stylelint-disable value-list-comma-newline-after, value-list-comma-space-after, indentation, declaration-colon-newline-after, font-family-no-missing-generic-family-keyword\n\n//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"@{icon-font-path}@{icon-font-name}.eot\");\n  src: url(\"@{icon-font-path}@{icon-font-name}.eot?#iefix\") format(\"embedded-opentype\"),\n       url(\"@{icon-font-path}@{icon-font-name}.woff2\") format(\"woff2\"),\n       url(\"@{icon-font-path}@{icon-font-name}.woff\") format(\"woff\"),\n       url(\"@{icon-font-path}@{icon-font-name}.ttf\") format(\"truetype\"),\n       url(\"@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\") format(\"svg\");\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\002a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n  cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n  word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scaleY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n       -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n  // WebKit-specific. Other browsers will keep their default outline style.\n  // (Initially tried to also force default via `outline: initial`,\n  // but that seems to erroneously remove the outline in Firefox altogether.)\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and ( min--moz-device-pixel-ratio: 2),\n  only screen and ( -o-min-device-pixel-ratio: 2/1),\n  only screen and ( min-device-pixel-ratio: 2),\n  only screen and ( min-resolution: 192dpi),\n  only screen and ( min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: 400;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n  padding: .2em;\n  background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-right: 5px;\n    padding-left: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: 700;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @dl-horizontal-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n}\n\n.initialism {\n  font-size: 90%;\n  .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: \"\\2014 \\00A0\"; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: \"\"; }\n    &:after {\n      content: \"\\00A0 \\2014\"; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover,\n  a&:focus {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover,\n  a&:focus {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: 700;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  color: @pre-color;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n.row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n\n  [class*=\"col-\"] {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  padding-right: ceil((@gutter / 2));\n  padding-left: floor((@gutter / 2));\n  margin-right: auto;\n  margin-left: auto;\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-right: floor((@gutter / -2));\n  margin-left: ceil((@gutter / -2));\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-right: (@gutter / 2);\n  padding-left: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-right: floor((@grid-gutter-width / 2));\n      padding-left: ceil((@grid-gutter-width / 2));\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n\n  // Table cell sizing\n  //\n  // Reset default table behavior\n\n  col[class*=\"col-\"] {\n    position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n    display: table-column;\n    float: none;\n  }\n\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      display: table-cell;\n      float: none;\n    }\n  }\n}\n\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\n\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: @table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n  overflow-x: auto;\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: (@line-height-computed * .75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &:hover > .@{state},\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n  // Override content-box in Normalize (* isn't specific enough)\n  .box-sizing(border-box);\n\n  // Search inputs in iOS\n  //\n  // This overrides the extra rounded corners on search inputs in iOS so that our\n  // `.form-control` class can properly style them. Note that this cannot simply\n  // be added to `.form-control` as it's not specific enough. For details, see\n  // https://github.com/twbs/bootstrap/issues/11586.\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n\n  // Apply same disabled cursor tweak as for inputs\n  // Some special care is needed because <label>s don't inherit their parent's `cursor`.\n  //\n  // Note: Neither radios nor checkboxes can be readonly.\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    background-color: transparent;\n    border: 0;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    &.form-control {\n      line-height: @input-height-base;\n    }\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  // These are used on elements with <label> descendants\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: @cursor-disabled;\n    }\n  }\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: 400;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n\n  // These are used directly on <label>s\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n  }\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  min-height: (@line-height-computed + @font-size-base);\n  // Size it appropriately next to real form controls\n  padding-top: (@padding-base-vertical + 1);\n  padding-bottom: (@padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n\n  &.input-lg,\n  &.input-sm {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n  .form-control {\n    height: @input-height-small;\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n    border-radius: @input-border-radius-small;\n  }\n  select.form-control {\n    height: @input-height-small;\n    line-height: @input-height-small;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-small;\n    min-height: (@line-height-computed + @font-size-small);\n    padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n    font-size: @font-size-small;\n    line-height: @line-height-small;\n  }\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n  .form-control {\n    height: @input-height-large;\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n    border-radius: @input-border-radius-large;\n  }\n  select.form-control {\n    height: @input-height-large;\n    line-height: @input-height-large;\n  }\n  textarea.form-control,\n  select[multiple].form-control {\n    height: auto;\n  }\n  .form-control-static {\n    height: @input-height-large;\n    min-height: (@line-height-computed + @font-size-large);\n    padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n    font-size: @font-size-large;\n    line-height: @line-height-large;\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: @input-height-base;\n  height: @input-height-base;\n  line-height: @input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n  width: @input-height-large;\n  height: @input-height-large;\n  line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n  width: @input-height-small;\n  height: @input-height-small;\n  line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n    top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n      margin-bottom: 0;\n      text-align: right;\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: floor((@grid-gutter-width / 2));\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-large-vertical + 1);\n        font-size: @font-size-large;\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: @screen-sm-min) {\n      .control-label {\n        padding-top: (@padding-small-vertical + 1);\n        font-size: @font-size-small;\n      }\n    }\n  }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    background-color: @background-color;\n    border-color: @border-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    background-image: none;\n    outline: 0;\n    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n  a& {\n    &.disabled,\n    fieldset[disabled] & {\n      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n    }\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: 400;\n  color: @link-color;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: @link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n    border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n    border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 10%);\n    background-image: none;\n    border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n      border-color: darken(@border, 25%);\n    }\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n      border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n  @opacity-ie: (@opacity * 100);  // IE8 filter\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n  opacity: @opacity;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  tr&.in    { display: table-row; }\n  tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition-property(~\"height, visibility\");\n  .transition-duration(.35s);\n  .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: @caret-width-base dashed;\n  border-top: @caret-width-base solid ~\"\\9\"; // IE8\n  border-right: @caret-width-base solid transparent;\n  border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  font-size: @font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: @dropdown-bg;\n  background-clip: padding-box;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0, 0, 0, .175));\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: 400;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n\n    &:hover,\n    &:focus {\n      color: @dropdown-link-hover-color;\n      text-decoration: none;\n      background-color: @dropdown-link-hover-bg;\n    }\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    background-color: @dropdown-link-active-bg;\n    outline: 0;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    cursor: @cursor-disabled;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  right: 0;\n  left: auto; // Reset the default from `.dropdown-menu`\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    content: \"\";\n    border-top: 0;\n    border-bottom: @caret-width-base dashed;\n    border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// stylelint-disable selector-no-qualifying-type */\n\n//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn,\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    .border-top-radius(@btn-border-radius-base);\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    .border-top-radius(0);\n    .border-bottom-radius(@btn-border-radius-base);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    display: table-cell;\n    float: none;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n  }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n  border-top-left-radius: @radius;\n  border-top-right-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-top-right-radius: @radius;\n  border-bottom-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n  border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-top-left-radius: @radius;\n  border-bottom-left-radius: @radius;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n\n    &:focus {\n      z-index: 3;\n    }\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: 400;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @input-border-radius;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @input-border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @input-border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      z-index: 2;\n      margin-left: -1px;\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type, selector-max-type\n\n//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  padding-left: 0; // Override default ul/ol\n  margin-bottom: 0;\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        cursor: @cursor-disabled;\n        background-color: transparent;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        cursor: default;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      margin-bottom: 5px;\n      text-align: center;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, selector-max-class, declaration-no-important, selector-no-qualifying-type\n\n//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  padding-right: @navbar-padding-horizontal;\n  padding-left: @navbar-padding-horizontal;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-right: 0;\n      padding-left: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: @navbar-collapse-max-height;\n\n    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n\n  // Fix the top/bottom navbars when screen real estate supports it\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left: -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left: 0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  height: @navbar-height;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: @navbar-padding-horizontal;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top: @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  padding: 10px @navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  margin-left: -@navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    .box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  .border-top-radius(@navbar-border-radius);\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-right: @navbar-padding-horizontal;\n    margin-left: @navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right {\n    .pull-right();\n    margin-right: -@navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n\n    // Dropdown menu items\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n\n    // Dropdowns\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: @navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      padding: 0 5px;\n      color: @breadcrumb-color;\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      margin-left: -1px;\n      line-height: @line-height-base;\n      color: @pagination-color;\n      text-decoration: none;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n\n      &:hover,\n      &:focus {\n        z-index: 2;\n        color: @pagination-hover-color;\n        background-color: @pagination-hover-bg;\n        border-color: @pagination-hover-border;\n      }\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 3;\n      color: @pagination-active-color;\n      cursor: default;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      cursor: @cursor-disabled;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n      line-height: @line-height;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  text-align: center;\n  list-style: none;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      cursor: @cursor-disabled;\n      background-color: @pager-bg;\n    }\n  }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n  background-color: @color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  line-height: @badge-line-height;\n  color: @badge-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // Hover state, but only for links\n  a& {\n    &:hover,\n    &:focus {\n      color: @badge-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: @badge-active-color;\n    background-color: @badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding-top: @jumbotron-padding;\n  padding-bottom: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken(@jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    padding-right: (@grid-gutter-width / 2);\n    padding-left: (@grid-gutter-width / 2);\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top: (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container &,\n    .container-fluid & {\n      padding-right: (@jumbotron-padding * 2);\n      padding-left: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: @jumbotron-heading-font-size;\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-right: auto;\n    margin-left: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n// The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n  color: @text-color;\n  background-color: @background;\n  border-color: @border;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n","// stylelint-disable at-rule-no-vendor-prefix\n\n//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  overflow: hidden;\n  background-color: @progress-bg;\n  border-radius: @progress-border-radius;\n  .box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n    background-repeat: repeat-x;\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n    background-repeat: no-repeat;\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n  background-color: @color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n",".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n\n  // Fix collapse in webkit from max-width: 100% and display: table-cell.\n  &.img-thumbnail {\n    max-width: none;\n  }\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 20px;\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    color: @list-group-disabled-color;\n    cursor: @cursor-disabled;\n    background-color: @list-group-disabled-bg;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    color: @list-group-link-hover-color;\n    text-decoration: none;\n    background-color: @list-group-hover-bg;\n  }\n}\n\nbutton.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a&,\n    button& {\n      color: @color;\n\n      .list-group-item-heading {\n        color: inherit;\n      }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, no-duplicate-selectors\n\n//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0, 0, 0, .05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: @panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: @panel-footer-padding;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n  > .panel-heading + .panel-collapse > .list-group {\n    .list-group-item:first-child {\n      .border-top-radius(0);\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-right: @panel-body-padding;\n      padding-left: @panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: (@panel-border-radius - 1);\n        border-top-right-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-right-radius: (@panel-border-radius - 1);\n        border-bottom-left-radius: (@panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    margin-bottom: 0;\n    border: 0;\n  }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: @border;\n    }\n    .badge {\n      color: @heading-bg-color;\n      background-color: @heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0, 0, 0, .15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","// stylelint-disable property-no-vendor-prefix\n\n//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n    appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0); }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  background-clip: padding-box;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0, 0, 0, .5));\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n    margin-left: 5px;\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0, 0, 0, .5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-small;\n\n  .opacity(0);\n\n  &.in { .opacity(@tooltip-opacity); }\n  &.top {\n    padding: @tooltip-arrow-width 0;\n    margin-top: -3px;\n  }\n  &.right {\n    padding: 0 @tooltip-arrow-width;\n    margin-left: 3px;\n  }\n  &.bottom {\n    padding: @tooltip-arrow-width 0;\n    margin-top: 3px;\n  }\n  &.left {\n    padding: 0 @tooltip-arrow-width;\n    margin-left: -3px;\n  }\n\n  // Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    right: @tooltip-arrow-width;\n    bottom: 0;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    margin-bottom: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    margin-top: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n",".reset-text() {\n  font-family: @font-family-base;\n  // We deliberately do NOT reset font-size.\n  font-style: normal;\n  font-weight: 400;\n  line-height: @line-height-base;\n  line-break: auto;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  .reset-text();\n  font-size: @font-size-base;\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0, 0, 0, .2));\n\n  // Offset the popover to account for the popover arrow\n  &.top { margin-top: -@popover-arrow-width; }\n  &.right { margin-left: @popover-arrow-width; }\n  &.bottom { margin-top: @popover-arrow-width; }\n  &.left { margin-left: -@popover-arrow-width; }\n\n  // Arrows\n  // .arrow is outer, .arrow:after is inner\n  > .arrow {\n    border-width: @popover-arrow-outer-width;\n\n    &,\n    &:after {\n      position: absolute;\n      display: block;\n      width: 0;\n      height: 0;\n      border-color: transparent;\n      border-style: solid;\n    }\n\n    &:after {\n      content: \"\";\n      border-width: @popover-arrow-width;\n    }\n  }\n\n  &.top > .arrow {\n    bottom: -@popover-arrow-outer-width;\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    border-bottom-width: 0;\n    &:after {\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      content: \" \";\n      border-top-color: @popover-arrow-color;\n      border-bottom-width: 0;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    border-left-width: 0;\n    &:after {\n      bottom: -@popover-arrow-width;\n      left: 1px;\n      content: \" \";\n      border-right-color: @popover-arrow-color;\n      border-left-width: 0;\n    }\n  }\n  &.bottom > .arrow {\n    top: -@popover-arrow-outer-width;\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    &:after {\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      content: \" \";\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      right: 1px;\n      bottom: -@popover-arrow-width;\n      content: \" \";\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n    }\n  }\n}\n\n.popover-title {\n  padding: 8px 14px;\n  margin: 0; // reset heading margin\n  font-size: @font-size-base;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n","// stylelint-disable media-feature-name-no-unknown\n\n//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n\n  > .item {\n    position: relative;\n    display: none;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .transition-transform(~\"0.6s ease-in-out\");\n      .backface-visibility(~\"hidden\");\n      .perspective(1000px);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: @carousel-control-width;\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n  .opacity(@carousel-control-opacity);\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .5); @end-color: rgba(0, 0, 0, .0001));\n  }\n  &.right {\n    right: 0;\n    left: auto;\n    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .0001); @end-color: rgba(0, 0, 0, .5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: @carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n    margin-top: -10px;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width: 20px;\n    height: 20px;\n    font-family: serif;\n    line-height: 1;\n  }\n\n  .icon-prev {\n    &:before {\n      content: \"\\2039\";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: \"\\203a\";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n\n  li {\n    display: inline-block;\n    width: 10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    cursor: pointer;\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0, 0, 0, 0); // IE9\n\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n  }\n\n  .active {\n    width: 12px;\n    height: 12px;\n    margin: 0;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: (@carousel-control-font-size * 1.5);\n      height: (@carousel-control-font-size * 1.5);\n      margin-top: (@carousel-control-font-size / -2);\n      font-size: (@carousel-control-font-size * 1.5);\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: (@carousel-control-font-size / -2);\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: (@carousel-control-font-size / -2);\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n  &:before,\n  &:after {\n    display: table; // 2\n    content: \" \"; // 1\n  }\n  &:after {\n    clear: both;\n  }\n}\n","// Center-align a block level element\n\n.center-block() {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n","// stylelint-disable font-family-name-quotes, font-family-no-missing-generic-family-keyword\n\n// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n","// stylelint-disable declaration-no-important, at-rule-no-vendor-prefix\n\n//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width\n// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-xs-block {\n  @media (max-width: @screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: @screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: @screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n.visible-lg-block {\n  @media (min-width: @screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: @screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: @screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table !important; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n"]}
Index: trip-planner-front/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.svg
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.svg	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,288 +1,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph horiz-adv-x="0" />
-<glyph horiz-adv-x="400" />
-<glyph unicode=" " />
-<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
-<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
-<glyph unicode="&#x2000;" horiz-adv-x="650" />
-<glyph unicode="&#x2001;" horiz-adv-x="1300" />
-<glyph unicode="&#x2002;" horiz-adv-x="650" />
-<glyph unicode="&#x2003;" horiz-adv-x="1300" />
-<glyph unicode="&#x2004;" horiz-adv-x="433" />
-<glyph unicode="&#x2005;" horiz-adv-x="325" />
-<glyph unicode="&#x2006;" horiz-adv-x="216" />
-<glyph unicode="&#x2007;" horiz-adv-x="216" />
-<glyph unicode="&#x2008;" horiz-adv-x="162" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="325" />
-<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
-<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
-<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
-<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
-<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
-<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
-<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
-<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
-<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
-<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
-<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
-<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
-<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
-<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
-<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
-<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
-<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
-<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
-<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
-<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
-<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
-<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
-<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
-<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
-<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
-<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
-<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
-<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
-<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
-<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
-<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
-<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
-<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
-<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
-<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
-<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
-<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
-<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
-<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
-<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
-<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
-<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
-<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
-<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
-<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
-<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
-<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
-<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
-<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
-<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
-<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
-<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
-<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
-<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
-<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
-<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
-<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
-<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
-<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
-<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
-<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
-<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
-<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
-<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
-<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
-<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
-<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
-<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
-<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
-<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
-<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
-<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
-<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
-<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
-<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
-<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
-<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
-<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
-<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
-<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
-<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
-<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
-<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
-<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
-<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
-<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
-<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
-<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
-<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
-<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
-<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
-<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
-<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
-<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
-<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
-<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
-<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
-<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
-<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
-<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
-<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
-<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
-<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
-<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
-<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
-<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
-<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
-<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
-<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
-<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
-<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
-<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
-<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
-<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
-<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
-<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
-<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
-<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
-<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
-<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
-<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
-<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
-<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
-<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
-<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
-<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
-<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
-<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
-<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
-<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
-<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
-<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
-<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
-<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
-<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
-<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
-<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
-<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
-<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
-<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
-<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
-<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
-<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
-<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
-<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
-<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
-<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
-<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
-<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
-<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
-<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
-<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
-<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
-<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
-<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
-<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
-<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
-<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
-<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
-<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
-<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
-<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
-<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
-<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
-<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
-<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
-<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
-<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
-<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
-</font>
-</defs></svg> 
Index: trip-planner-front/node_modules/bootstrap/dist/js/bootstrap.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/js/bootstrap.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,2580 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under the MIT license
- */
-
-if (typeof jQuery === 'undefined') {
-  throw new Error('Bootstrap\'s JavaScript requires jQuery')
-}
-
-+function ($) {
-  'use strict';
-  var version = $.fn.jquery.split(' ')[0].split('.')
-  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
-    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
-  }
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: transition.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#transitions
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      WebkitTransition : 'webkitTransitionEnd',
-      MozTransition    : 'transitionend',
-      OTransition      : 'oTransitionEnd otransitionend',
-      transition       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-
-    return false // explicit for ie8 (  ._.)
-  }
-
-  // https://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false
-    var $el = this
-    $(this).one('bsTransitionEnd', function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-
-    if (!$.support.transition) return
-
-    $.event.special.bsTransitionEnd = {
-      bindType: $.support.transition.end,
-      delegateType: $.support.transition.end,
-      handle: function (e) {
-        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
-      }
-    }
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#alerts
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.VERSION = '3.4.1'
-
-  Alert.TRANSITION_DURATION = 150
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    selector    = selector === '#' ? [] : selector
-    var $parent = $(document).find(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.closest('.alert')
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      // detach from parent, fire event then clean up data
-      $parent.detach().trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one('bsTransitionEnd', removeElement)
-        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.alert
-
-  $.fn.alert             = Plugin
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#buttons
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element  = $(element)
-    this.options   = $.extend({}, Button.DEFAULTS, options)
-    this.isLoading = false
-  }
-
-  Button.VERSION  = '3.4.1'
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state += 'Text'
-
-    if (data.resetText == null) $el.data('resetText', $el[val]())
-
-    // push to event loop to allow forms to submit
-    setTimeout($.proxy(function () {
-      $el[val](data[state] == null ? this.options[state] : data[state])
-
-      if (state == 'loadingText') {
-        this.isLoading = true
-        $el.addClass(d).attr(d, d).prop(d, true)
-      } else if (this.isLoading) {
-        this.isLoading = false
-        $el.removeClass(d).removeAttr(d).prop(d, false)
-      }
-    }, this), 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var changed = true
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-      if ($input.prop('type') == 'radio') {
-        if ($input.prop('checked')) changed = false
-        $parent.find('.active').removeClass('active')
-        this.$element.addClass('active')
-      } else if ($input.prop('type') == 'checkbox') {
-        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
-        this.$element.toggleClass('active')
-      }
-      $input.prop('checked', this.$element.hasClass('active'))
-      if (changed) $input.trigger('change')
-    } else {
-      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
-      this.$element.toggleClass('active')
-    }
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  var old = $.fn.button
-
-  $.fn.button             = Plugin
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document)
-    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      var $btn = $(e.target).closest('.btn')
-      Plugin.call($btn, 'toggle')
-      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
-        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
-        e.preventDefault()
-        // The target component still receive the focus
-        if ($btn.is('input,button')) $btn.trigger('focus')
-        else $btn.find('input:visible,button:visible').first().trigger('focus')
-      }
-    })
-    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
-    })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#carousel
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      = null
-    this.sliding     = null
-    this.interval    = null
-    this.$active     = null
-    this.$items      = null
-
-    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
-
-    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
-      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
-      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
-  }
-
-  Carousel.VERSION  = '3.4.1'
-
-  Carousel.TRANSITION_DURATION = 600
-
-  Carousel.DEFAULTS = {
-    interval: 5000,
-    pause: 'hover',
-    wrap: true,
-    keyboard: true
-  }
-
-  Carousel.prototype.keydown = function (e) {
-    if (/input|textarea/i.test(e.target.tagName)) return
-    switch (e.which) {
-      case 37: this.prev(); break
-      case 39: this.next(); break
-      default: return
-    }
-
-    e.preventDefault()
-  }
-
-  Carousel.prototype.cycle = function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getItemIndex = function (item) {
-    this.$items = item.parent().children('.item')
-    return this.$items.index(item || this.$active)
-  }
-
-  Carousel.prototype.getItemForDirection = function (direction, active) {
-    var activeIndex = this.getItemIndex(active)
-    var willWrap = (direction == 'prev' && activeIndex === 0)
-                || (direction == 'next' && activeIndex == (this.$items.length - 1))
-    if (willWrap && !this.options.wrap) return active
-    var delta = direction == 'prev' ? -1 : 1
-    var itemIndex = (activeIndex + delta) % this.$items.length
-    return this.$items.eq(itemIndex)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || this.getItemForDirection(type, $active)
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var that      = this
-
-    if ($next.hasClass('active')) return (this.sliding = false)
-
-    var relatedTarget = $next[0]
-    var slideEvent = $.Event('slide.bs.carousel', {
-      relatedTarget: relatedTarget,
-      direction: direction
-    })
-    this.$element.trigger(slideEvent)
-    if (slideEvent.isDefaultPrevented()) return
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
-      $nextIndicator && $nextIndicator.addClass('active')
-    }
-
-    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      $next.addClass(type)
-      if (typeof $next === 'object' && $next.length) {
-        $next[0].offsetWidth // force reflow
-      }
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one('bsTransitionEnd', function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () {
-            that.$element.trigger(slidEvent)
-          }, 0)
-        })
-        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
-    } else {
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger(slidEvent)
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  var old = $.fn.carousel
-
-  $.fn.carousel             = Plugin
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  var clickHandler = function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    if (href) {
-      href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-    }
-
-    var target  = $this.attr('data-target') || href
-    var $target = $(document).find(target)
-
-    if (!$target.hasClass('carousel')) return
-
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    Plugin.call($target, options)
-
-    if (slideIndex) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  }
-
-  $(document)
-    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
-    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      Plugin.call($carousel, $carousel.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#collapse
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-/* jshint latedef: false */
-
-+function ($) {
-  'use strict';
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
-                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
-    this.transitioning = null
-
-    if (this.options.parent) {
-      this.$parent = this.getParent()
-    } else {
-      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
-    }
-
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.VERSION  = '3.4.1'
-
-  Collapse.TRANSITION_DURATION = 350
-
-  Collapse.DEFAULTS = {
-    toggle: true
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var activesData
-    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
-
-    if (actives && actives.length) {
-      activesData = actives.data('bs.collapse')
-      if (activesData && activesData.transitioning) return
-    }
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    if (actives && actives.length) {
-      Plugin.call(actives, 'hide')
-      activesData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')[dimension](0)
-      .attr('aria-expanded', true)
-
-    this.$trigger
-      .removeClass('collapsed')
-      .attr('aria-expanded', true)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse in')[dimension]('')
-      this.transitioning = 0
-      this.$element
-        .trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse in')
-      .attr('aria-expanded', false)
-
-    this.$trigger
-      .addClass('collapsed')
-      .attr('aria-expanded', false)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse')
-        .trigger('hidden.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-  Collapse.prototype.getParent = function () {
-    return $(document).find(this.options.parent)
-      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
-      .each($.proxy(function (i, element) {
-        var $element = $(element)
-        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
-      }, this))
-      .end()
-  }
-
-  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
-    var isOpen = $element.hasClass('in')
-
-    $element.attr('aria-expanded', isOpen)
-    $trigger
-      .toggleClass('collapsed', !isOpen)
-      .attr('aria-expanded', isOpen)
-  }
-
-  function getTargetFromTrigger($trigger) {
-    var href
-    var target = $trigger.attr('data-target')
-      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-
-    return $(document).find(target)
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.collapse
-
-  $.fn.collapse             = Plugin
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
-    var $this   = $(this)
-
-    if (!$this.attr('data-target')) e.preventDefault()
-
-    var $target = getTargetFromTrigger($this)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $this.data()
-
-    Plugin.call($target, option)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle="dropdown"]'
-  var Dropdown = function (element) {
-    $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.VERSION = '3.4.1'
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = selector !== '#' ? $(document).find(selector) : null
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-  function clearMenus(e) {
-    if (e && e.which === 3) return
-    $(backdrop).remove()
-    $(toggle).each(function () {
-      var $this         = $(this)
-      var $parent       = getParent($this)
-      var relatedTarget = { relatedTarget: this }
-
-      if (!$parent.hasClass('open')) return
-
-      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
-
-      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this.attr('aria-expanded', 'false')
-      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
-    })
-  }
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we use a backdrop because click events don't delegate
-        $(document.createElement('div'))
-          .addClass('dropdown-backdrop')
-          .insertAfter($(this))
-          .on('click', clearMenus)
-      }
-
-      var relatedTarget = { relatedTarget: this }
-      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this
-        .trigger('focus')
-        .attr('aria-expanded', 'true')
-
-      $parent
-        .toggleClass('open')
-        .trigger($.Event('shown.bs.dropdown', relatedTarget))
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if (!isActive && e.which != 27 || isActive && e.which == 27) {
-      if (e.which == 27) $parent.find(toggle).trigger('focus')
-      return $this.trigger('click')
-    }
-
-    var desc = ' li:not(.disabled):visible a'
-    var $items = $parent.find('.dropdown-menu' + desc)
-
-    if (!$items.length) return
-
-    var index = $items.index(e.target)
-
-    if (e.which == 38 && index > 0)                 index--         // up
-    if (e.which == 40 && index < $items.length - 1) index++         // down
-    if (!~index)                                    index = 0
-
-    $items.eq(index).trigger('focus')
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.dropdown')
-
-      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown             = Plugin
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
-    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#modals
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$body = $(document.body)
-    this.$element = $(element)
-    this.$dialog = this.$element.find('.modal-dialog')
-    this.$backdrop = null
-    this.isShown = null
-    this.originalBodyPad = null
-    this.scrollbarWidth = 0
-    this.ignoreBackdropClick = false
-    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
-
-    if (this.options.remote) {
-      this.$element
-        .find('.modal-content')
-        .load(this.options.remote, $.proxy(function () {
-          this.$element.trigger('loaded.bs.modal')
-        }, this))
-    }
-  }
-
-  Modal.VERSION = '3.4.1'
-
-  Modal.TRANSITION_DURATION = 300
-  Modal.BACKDROP_TRANSITION_DURATION = 150
-
-  Modal.DEFAULTS = {
-    backdrop: true,
-    keyboard: true,
-    show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this.isShown ? this.hide() : this.show(_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.checkScrollbar()
-    this.setScrollbar()
-    this.$body.addClass('modal-open')
-
-    this.escape()
-    this.resize()
-
-    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
-      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
-        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
-      })
-    })
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(that.$body) // don't move modals dom position
-      }
-
-      that.$element
-        .show()
-        .scrollTop(0)
-
-      that.adjustDialog()
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element.addClass('in')
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$dialog // wait for modal to slide in
-          .one('bsTransitionEnd', function () {
-            that.$element.trigger('focus').trigger(e)
-          })
-          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-        that.$element.trigger('focus').trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.escape()
-    this.resize()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .off('click.dismiss.bs.modal')
-      .off('mouseup.dismiss.bs.modal')
-
-    this.$dialog.off('mousedown.dismiss.bs.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (document !== e.target &&
-          this.$element[0] !== e.target &&
-          !this.$element.has(e.target).length) {
-          this.$element.trigger('focus')
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keydown.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.resize = function () {
-    if (this.isShown) {
-      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
-    } else {
-      $(window).off('resize.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.$body.removeClass('modal-open')
-      that.resetAdjustments()
-      that.resetScrollbar()
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $(document.createElement('div'))
-        .addClass('modal-backdrop ' + animate)
-        .appendTo(this.$body)
-
-      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
-        if (this.ignoreBackdropClick) {
-          this.ignoreBackdropClick = false
-          return
-        }
-        if (e.target !== e.currentTarget) return
-        this.options.backdrop == 'static'
-          ? this.$element[0].focus()
-          : this.hide()
-      }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one('bsTransitionEnd', callback)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      var callbackRemove = function () {
-        that.removeBackdrop()
-        callback && callback()
-      }
-      $.support.transition && this.$element.hasClass('fade') ?
-        this.$backdrop
-          .one('bsTransitionEnd', callbackRemove)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callbackRemove()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  // these following methods are used to handle overflowing modals
-
-  Modal.prototype.handleUpdate = function () {
-    this.adjustDialog()
-  }
-
-  Modal.prototype.adjustDialog = function () {
-    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
-
-    this.$element.css({
-      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
-      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
-    })
-  }
-
-  Modal.prototype.resetAdjustments = function () {
-    this.$element.css({
-      paddingLeft: '',
-      paddingRight: ''
-    })
-  }
-
-  Modal.prototype.checkScrollbar = function () {
-    var fullWindowWidth = window.innerWidth
-    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
-      var documentElementRect = document.documentElement.getBoundingClientRect()
-      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
-    }
-    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
-    this.scrollbarWidth = this.measureScrollbar()
-  }
-
-  Modal.prototype.setScrollbar = function () {
-    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
-    this.originalBodyPad = document.body.style.paddingRight || ''
-    var scrollbarWidth = this.scrollbarWidth
-    if (this.bodyIsOverflowing) {
-      this.$body.css('padding-right', bodyPad + scrollbarWidth)
-      $(this.fixedContent).each(function (index, element) {
-        var actualPadding = element.style.paddingRight
-        var calculatedPadding = $(element).css('padding-right')
-        $(element)
-          .data('padding-right', actualPadding)
-          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
-      })
-    }
-  }
-
-  Modal.prototype.resetScrollbar = function () {
-    this.$body.css('padding-right', this.originalBodyPad)
-    $(this.fixedContent).each(function (index, element) {
-      var padding = $(element).data('padding-right')
-      $(element).removeData('padding-right')
-      element.style.paddingRight = padding ? padding : ''
-    })
-  }
-
-  Modal.prototype.measureScrollbar = function () { // thx walsh
-    var scrollDiv = document.createElement('div')
-    scrollDiv.className = 'modal-scrollbar-measure'
-    this.$body.append(scrollDiv)
-    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
-    this.$body[0].removeChild(scrollDiv)
-    return scrollbarWidth
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option, _relatedTarget) {
-    return this.each(function () {
-      var $this = $(this)
-      var data = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  var old = $.fn.modal
-
-  $.fn.modal = Plugin
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this = $(this)
-    var href = $this.attr('href')
-    var target = $this.attr('data-target') ||
-      (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
-
-    var $target = $(document).find(target)
-    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    if ($this.is('a')) e.preventDefault()
-
-    $target.one('show.bs.modal', function (showEvent) {
-      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
-      $target.one('hidden.bs.modal', function () {
-        $this.is(':visible') && $this.trigger('focus')
-      })
-    })
-    Plugin.call($target, option, this)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-+function ($) {
-  'use strict';
-
-  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
-
-  var uriAttrs = [
-    'background',
-    'cite',
-    'href',
-    'itemtype',
-    'longdesc',
-    'poster',
-    'src',
-    'xlink:href'
-  ]
-
-  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
-
-  var DefaultWhitelist = {
-    // Global attributes allowed on any supplied element below.
-    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-    a: ['target', 'href', 'title', 'rel'],
-    area: [],
-    b: [],
-    br: [],
-    col: [],
-    code: [],
-    div: [],
-    em: [],
-    hr: [],
-    h1: [],
-    h2: [],
-    h3: [],
-    h4: [],
-    h5: [],
-    h6: [],
-    i: [],
-    img: ['src', 'alt', 'title', 'width', 'height'],
-    li: [],
-    ol: [],
-    p: [],
-    pre: [],
-    s: [],
-    small: [],
-    span: [],
-    sub: [],
-    sup: [],
-    strong: [],
-    u: [],
-    ul: []
-  }
-
-  /**
-   * A pattern that recognizes a commonly useful subset of URLs that are safe.
-   *
-   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
-   */
-  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
-
-  /**
-   * A pattern that matches safe data URLs. Only matches image, video and audio types.
-   *
-   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
-   */
-  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
-
-  function allowedAttribute(attr, allowedAttributeList) {
-    var attrName = attr.nodeName.toLowerCase()
-
-    if ($.inArray(attrName, allowedAttributeList) !== -1) {
-      if ($.inArray(attrName, uriAttrs) !== -1) {
-        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
-      }
-
-      return true
-    }
-
-    var regExp = $(allowedAttributeList).filter(function (index, value) {
-      return value instanceof RegExp
-    })
-
-    // Check if a regular expression validates the attribute.
-    for (var i = 0, l = regExp.length; i < l; i++) {
-      if (attrName.match(regExp[i])) {
-        return true
-      }
-    }
-
-    return false
-  }
-
-  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
-    if (unsafeHtml.length === 0) {
-      return unsafeHtml
-    }
-
-    if (sanitizeFn && typeof sanitizeFn === 'function') {
-      return sanitizeFn(unsafeHtml)
-    }
-
-    // IE 8 and below don't support createHTMLDocument
-    if (!document.implementation || !document.implementation.createHTMLDocument) {
-      return unsafeHtml
-    }
-
-    var createdDocument = document.implementation.createHTMLDocument('sanitization')
-    createdDocument.body.innerHTML = unsafeHtml
-
-    var whitelistKeys = $.map(whiteList, function (el, i) { return i })
-    var elements = $(createdDocument.body).find('*')
-
-    for (var i = 0, len = elements.length; i < len; i++) {
-      var el = elements[i]
-      var elName = el.nodeName.toLowerCase()
-
-      if ($.inArray(elName, whitelistKeys) === -1) {
-        el.parentNode.removeChild(el)
-
-        continue
-      }
-
-      var attributeList = $.map(el.attributes, function (el) { return el })
-      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
-
-      for (var j = 0, len2 = attributeList.length; j < len2; j++) {
-        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
-          el.removeAttribute(attributeList[j].nodeName)
-        }
-      }
-    }
-
-    return createdDocument.body.innerHTML
-  }
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       = null
-    this.options    = null
-    this.enabled    = null
-    this.timeout    = null
-    this.hoverState = null
-    this.$element   = null
-    this.inState    = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.VERSION  = '3.4.1'
-
-  Tooltip.TRANSITION_DURATION = 150
-
-  Tooltip.DEFAULTS = {
-    animation: true,
-    placement: 'top',
-    selector: false,
-    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-    trigger: 'hover focus',
-    title: '',
-    delay: 0,
-    html: false,
-    container: false,
-    viewport: {
-      selector: 'body',
-      padding: 0
-    },
-    sanitize : true,
-    sanitizeFn : null,
-    whiteList : DefaultWhitelist
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled   = true
-    this.type      = type
-    this.$element  = $(element)
-    this.options   = this.getOptions(options)
-    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
-    this.inState   = { click: false, hover: false, focus: false }
-
-    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
-      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
-    }
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    var dataAttributes = this.$element.data()
-
-    for (var dataAttr in dataAttributes) {
-      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
-        delete dataAttributes[dataAttr]
-      }
-    }
-
-    options = $.extend({}, this.getDefaults(), dataAttributes, options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay,
-        hide: options.delay
-      }
-    }
-
-    if (options.sanitize) {
-      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    if (obj instanceof $.Event) {
-      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
-    }
-
-    if (self.tip().hasClass('in') || self.hoverState == 'in') {
-      self.hoverState = 'in'
-      return
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.isInStateTrue = function () {
-    for (var key in this.inState) {
-      if (this.inState[key]) return true
-    }
-
-    return false
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    if (obj instanceof $.Event) {
-      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
-    }
-
-    if (self.isInStateTrue()) return
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.' + this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
-      if (e.isDefaultPrevented() || !inDom) return
-      var that = this
-
-      var $tip = this.tip()
-
-      var tipId = this.getUID(this.type)
-
-      this.setContent()
-      $tip.attr('id', tipId)
-      this.$element.attr('aria-describedby', tipId)
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-        .data('bs.' + this.type, this)
-
-      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
-      this.$element.trigger('inserted.bs.' + this.type)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var orgPlacement = placement
-        var viewportDim = this.getPosition(this.$viewport)
-
-        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
-                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
-                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
-                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-
-      var complete = function () {
-        var prevHoverState = that.hoverState
-        that.$element.trigger('shown.bs.' + that.type)
-        that.hoverState = null
-
-        if (prevHoverState == 'out') that.leave(that)
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        $tip
-          .one('bsTransitionEnd', complete)
-          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-        complete()
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function (offset, placement) {
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  += marginTop
-    offset.left += marginLeft
-
-    // $.fn.offset doesn't round pixel values
-    // so we use setOffset directly with our own function B-0
-    $.offset.setOffset($tip[0], $.extend({
-      using: function (props) {
-        $tip.css({
-          top: Math.round(props.top),
-          left: Math.round(props.left)
-        })
-      }
-    }, offset), 0)
-
-    $tip.addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      offset.top = offset.top + height - actualHeight
-    }
-
-    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
-
-    if (delta.left) offset.left += delta.left
-    else offset.top += delta.top
-
-    var isVertical          = /top|bottom/.test(placement)
-    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
-    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
-
-    $tip.offset(offset)
-    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
-  }
-
-  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
-    this.arrow()
-      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
-      .css(isVertical ? 'top' : 'left', '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    if (this.options.html) {
-      if (this.options.sanitize) {
-        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
-      }
-
-      $tip.find('.tooltip-inner').html(title)
-    } else {
-      $tip.find('.tooltip-inner').text(title)
-    }
-
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function (callback) {
-    var that = this
-    var $tip = $(this.$tip)
-    var e    = $.Event('hide.bs.' + this.type)
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
-        that.$element
-          .removeAttr('aria-describedby')
-          .trigger('hidden.bs.' + that.type)
-      }
-      callback && callback()
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && $tip.hasClass('fade') ?
-      $tip
-        .one('bsTransitionEnd', complete)
-        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-      complete()
-
-    this.hoverState = null
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function ($element) {
-    $element   = $element || this.$element
-
-    var el     = $element[0]
-    var isBody = el.tagName == 'BODY'
-
-    var elRect    = el.getBoundingClientRect()
-    if (elRect.width == null) {
-      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
-      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
-    }
-    var isSvg = window.SVGElement && el instanceof window.SVGElement
-    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
-    // See https://github.com/twbs/bootstrap/issues/20280
-    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
-    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
-    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
-
-    return $.extend({}, elRect, scroll, outerDims, elOffset)
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
-
-  }
-
-  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
-    var delta = { top: 0, left: 0 }
-    if (!this.$viewport) return delta
-
-    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
-    var viewportDimensions = this.getPosition(this.$viewport)
-
-    if (/right|left/.test(placement)) {
-      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
-      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
-      if (topEdgeOffset < viewportDimensions.top) { // top overflow
-        delta.top = viewportDimensions.top - topEdgeOffset
-      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
-        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
-      }
-    } else {
-      var leftEdgeOffset  = pos.left - viewportPadding
-      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
-      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
-        delta.left = viewportDimensions.left - leftEdgeOffset
-      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
-        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
-      }
-    }
-
-    return delta
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.getUID = function (prefix) {
-    do prefix += ~~(Math.random() * 1000000)
-    while (document.getElementById(prefix))
-    return prefix
-  }
-
-  Tooltip.prototype.tip = function () {
-    if (!this.$tip) {
-      this.$tip = $(this.options.template)
-      if (this.$tip.length != 1) {
-        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
-      }
-    }
-    return this.$tip
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = this
-    if (e) {
-      self = $(e.currentTarget).data('bs.' + this.type)
-      if (!self) {
-        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
-        $(e.currentTarget).data('bs.' + this.type, self)
-      }
-    }
-
-    if (e) {
-      self.inState.click = !self.inState.click
-      if (self.isInStateTrue()) self.enter(self)
-      else self.leave(self)
-    } else {
-      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-    }
-  }
-
-  Tooltip.prototype.destroy = function () {
-    var that = this
-    clearTimeout(this.timeout)
-    this.hide(function () {
-      that.$element.off('.' + that.type).removeData('bs.' + that.type)
-      if (that.$tip) {
-        that.$tip.detach()
-      }
-      that.$tip = null
-      that.$arrow = null
-      that.$viewport = null
-      that.$element = null
-    })
-  }
-
-  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
-    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
-  }
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.tooltip')
-      var options = typeof option == 'object' && option
-
-      if (!data && /destroy|hide/.test(option)) return
-      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip             = Plugin
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#popovers
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.VERSION  = '3.4.1'
-
-  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right',
-    trigger: 'click',
-    content: '',
-    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    if (this.options.html) {
-      var typeContent = typeof content
-
-      if (this.options.sanitize) {
-        title = this.sanitizeHtml(title)
-
-        if (typeContent === 'string') {
-          content = this.sanitizeHtml(content)
-        }
-      }
-
-      $tip.find('.popover-title').html(title)
-      $tip.find('.popover-content').children().detach().end()[
-        typeContent === 'string' ? 'html' : 'append'
-      ](content)
-    } else {
-      $tip.find('.popover-title').text(title)
-      $tip.find('.popover-content').children().detach().end().text(content)
-    }
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-        o.content.call($e[0]) :
-        o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.popover')
-      var options = typeof option == 'object' && option
-
-      if (!data && /destroy|hide/.test(option)) return
-      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.popover
-
-  $.fn.popover             = Plugin
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    this.$body          = $(document.body)
-    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target || '') + ' .nav li > a'
-    this.offsets        = []
-    this.targets        = []
-    this.activeTarget   = null
-    this.scrollHeight   = 0
-
-    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.VERSION  = '3.4.1'
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.getScrollHeight = function () {
-    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var that          = this
-    var offsetMethod  = 'offset'
-    var offsetBase    = 0
-
-    this.offsets      = []
-    this.targets      = []
-    this.scrollHeight = this.getScrollHeight()
-
-    if (!$.isWindow(this.$scrollElement[0])) {
-      offsetMethod = 'position'
-      offsetBase   = this.$scrollElement.scrollTop()
-    }
-
-    this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#./.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && $href.is(':visible')
-          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        that.offsets.push(this[0])
-        that.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.getScrollHeight()
-    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (this.scrollHeight != scrollHeight) {
-      this.refresh()
-    }
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
-    }
-
-    if (activeTarget && scrollTop < offsets[0]) {
-      this.activeTarget = null
-      return this.clear()
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
-        && this.activate(targets[i])
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    this.clear()
-
-    var selector = this.selector +
-      '[data-target="' + target + '"],' +
-      this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length) {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate.bs.scrollspy')
-  }
-
-  ScrollSpy.prototype.clear = function () {
-    $(this.selector)
-      .parentsUntil(this.options.target, '.active')
-      .removeClass('active')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy             = Plugin
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load.bs.scrollspy.data-api', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      Plugin.call($spy, $spy.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#tabs
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    // jscs:disable requireDollarBeforejQueryAssignment
-    this.element = $(element)
-    // jscs:enable requireDollarBeforejQueryAssignment
-  }
-
-  Tab.VERSION = '3.4.1'
-
-  Tab.TRANSITION_DURATION = 150
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.data('target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var $previous = $ul.find('.active:last a')
-    var hideEvent = $.Event('hide.bs.tab', {
-      relatedTarget: $this[0]
-    })
-    var showEvent = $.Event('show.bs.tab', {
-      relatedTarget: $previous[0]
-    })
-
-    $previous.trigger(hideEvent)
-    $this.trigger(showEvent)
-
-    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
-
-    var $target = $(document).find(selector)
-
-    this.activate($this.closest('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $previous.trigger({
-        type: 'hidden.bs.tab',
-        relatedTarget: $this[0]
-      })
-      $this.trigger({
-        type: 'shown.bs.tab',
-        relatedTarget: $previous[0]
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-        .removeClass('active')
-        .end()
-        .find('[data-toggle="tab"]')
-        .attr('aria-expanded', false)
-
-      element
-        .addClass('active')
-        .find('[data-toggle="tab"]')
-        .attr('aria-expanded', true)
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu').length) {
-        element
-          .closest('li.dropdown')
-          .addClass('active')
-          .end()
-          .find('[data-toggle="tab"]')
-          .attr('aria-expanded', true)
-      }
-
-      callback && callback()
-    }
-
-    $active.length && transition ?
-      $active
-        .one('bsTransitionEnd', next)
-        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tab
-
-  $.fn.tab             = Plugin
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  var clickHandler = function (e) {
-    e.preventDefault()
-    Plugin.call($(this), 'show')
-  }
-
-  $(document)
-    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
-    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#affix
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-
-    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
-
-    this.$target = target
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element     = $(element)
-    this.affixed      = null
-    this.unpin        = null
-    this.pinnedOffset = null
-
-    this.checkPosition()
-  }
-
-  Affix.VERSION  = '3.4.1'
-
-  Affix.RESET    = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0,
-    target: window
-  }
-
-  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
-    var scrollTop    = this.$target.scrollTop()
-    var position     = this.$element.offset()
-    var targetHeight = this.$target.height()
-
-    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
-
-    if (this.affixed == 'bottom') {
-      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
-      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
-    }
-
-    var initializing   = this.affixed == null
-    var colliderTop    = initializing ? scrollTop : position.top
-    var colliderHeight = initializing ? targetHeight : height
-
-    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
-    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
-
-    return false
-  }
-
-  Affix.prototype.getPinnedOffset = function () {
-    if (this.pinnedOffset) return this.pinnedOffset
-    this.$element.removeClass(Affix.RESET).addClass('affix')
-    var scrollTop = this.$target.scrollTop()
-    var position  = this.$element.offset()
-    return (this.pinnedOffset = position.top - scrollTop)
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var height       = this.$element.height()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-    var scrollHeight = Math.max($(document).height(), $(document.body).height())
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
-
-    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
-
-    if (this.affixed != affix) {
-      if (this.unpin != null) this.$element.css('top', '')
-
-      var affixType = 'affix' + (affix ? '-' + affix : '')
-      var e         = $.Event(affixType + '.bs.affix')
-
-      this.$element.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      this.affixed = affix
-      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
-
-      this.$element
-        .removeClass(Affix.RESET)
-        .addClass(affixType)
-        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
-    }
-
-    if (affix == 'bottom') {
-      this.$element.offset({
-        top: scrollHeight - height - offsetBottom
-      })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.affix
-
-  $.fn.affix             = Plugin
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
-
-      Plugin.call($spy, data)
-    })
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/dist/js/bootstrap.min.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/js/bootstrap.min.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,6 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under the MIT license
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/dist/js/npm.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/dist/js/npm.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,13 +1,0 @@
-// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
-require('../../js/transition.js')
-require('../../js/alert.js')
-require('../../js/button.js')
-require('../../js/carousel.js')
-require('../../js/collapse.js')
-require('../../js/dropdown.js')
-require('../../js/modal.js')
-require('../../js/tooltip.js')
-require('../../js/popover.js')
-require('../../js/scrollspy.js')
-require('../../js/tab.js')
-require('../../js/affix.js')
Index: trip-planner-front/node_modules/bootstrap/fonts/glyphicons-halflings-regular.svg
===================================================================
--- trip-planner-front/node_modules/bootstrap/fonts/glyphicons-halflings-regular.svg	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,288 +1,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph horiz-adv-x="0" />
-<glyph horiz-adv-x="400" />
-<glyph unicode=" " />
-<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
-<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
-<glyph unicode="&#x2000;" horiz-adv-x="650" />
-<glyph unicode="&#x2001;" horiz-adv-x="1300" />
-<glyph unicode="&#x2002;" horiz-adv-x="650" />
-<glyph unicode="&#x2003;" horiz-adv-x="1300" />
-<glyph unicode="&#x2004;" horiz-adv-x="433" />
-<glyph unicode="&#x2005;" horiz-adv-x="325" />
-<glyph unicode="&#x2006;" horiz-adv-x="216" />
-<glyph unicode="&#x2007;" horiz-adv-x="216" />
-<glyph unicode="&#x2008;" horiz-adv-x="162" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="325" />
-<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
-<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
-<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
-<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
-<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
-<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
-<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
-<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
-<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
-<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
-<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
-<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
-<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
-<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
-<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
-<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
-<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
-<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
-<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
-<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
-<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
-<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
-<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
-<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
-<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
-<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
-<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
-<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
-<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
-<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
-<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
-<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
-<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
-<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
-<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
-<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
-<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
-<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
-<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
-<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
-<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
-<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
-<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
-<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
-<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
-<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
-<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
-<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
-<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
-<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
-<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
-<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
-<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
-<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
-<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
-<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
-<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
-<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
-<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
-<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
-<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
-<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
-<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
-<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
-<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
-<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
-<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
-<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
-<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
-<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
-<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
-<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
-<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
-<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
-<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
-<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
-<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
-<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
-<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
-<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
-<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
-<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
-<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
-<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
-<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
-<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
-<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
-<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
-<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
-<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
-<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
-<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
-<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
-<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
-<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
-<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
-<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
-<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
-<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
-<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
-<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
-<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
-<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
-<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
-<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
-<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
-<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
-<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
-<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
-<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
-<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
-<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
-<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
-<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
-<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
-<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
-<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
-<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
-<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
-<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
-<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
-<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
-<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
-<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
-<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
-<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
-<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
-<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
-<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
-<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
-<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
-<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
-<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
-<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
-<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
-<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
-<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
-<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
-<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
-<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
-<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
-<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
-<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
-<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
-<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
-<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
-<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
-<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
-<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
-<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
-<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
-<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
-<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
-<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
-<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
-<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
-<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
-<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
-<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
-<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
-<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
-<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
-<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
-<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
-<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
-<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
-<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
-<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
-<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
-<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
-<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
-<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
-<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
-<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
-<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
-<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
-<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
-<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
-<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
-<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
-<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
-<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
-<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
-<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
-<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
-<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
-</font>
-</defs></svg> 
Index: trip-planner-front/node_modules/bootstrap/grunt/.jshintrc
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/.jshintrc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "extends" : "../js/.jshintrc",
-  "asi"     : false,
-  "browser" : false,
-  "es3"     : false,
-  "node"    : true
-}
Index: trip-planner-front/node_modules/bootstrap/grunt/.stylelintrc
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/.stylelintrc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,289 +1,0 @@
-{
-  "extends": [
-    "stylelint-config-standard"
-  ],
-  "plugins": [
-    "stylelint-order"
-  ],
-  "rules": {
-    "at-rule-empty-line-before": null,
-    "at-rule-name-space-after": "always",
-    "at-rule-no-vendor-prefix": true,
-    "at-rule-semicolon-space-before": "never",
-    "block-closing-brace-empty-line-before": null,
-    "block-closing-brace-newline-after": null,
-    "block-opening-brace-space-before": null,
-    "color-named": "never",
-    "declaration-block-semicolon-newline-after": "always-multi-line",
-    "declaration-block-semicolon-newline-before": "never-multi-line",
-    "declaration-block-semicolon-space-after": "always-single-line",
-    "declaration-empty-line-before": null,
-    "declaration-no-important": true,
-    "font-family-name-quotes": "always-where-recommended",
-    "font-weight-notation": [
-      "numeric",
-      {
-        "ignore": [
-          "relative"
-        ]
-      }
-    ],
-    "function-url-no-scheme-relative": true,
-    "function-url-quotes": "always",
-    "length-zero-no-unit": true,
-    "max-empty-lines": 2,
-    "max-line-length": null,
-    "media-feature-name-no-unknown": [
-      true,
-      {
-        "ignoreMediaFeatureNames": [
-          "prefers-reduced-motion"
-        ]
-      }
-    ],
-    "media-feature-name-no-vendor-prefix": true,
-    "media-feature-parentheses-space-inside": "never",
-    "media-feature-range-operator-space-after": "always",
-    "media-feature-range-operator-space-before": "never",
-    "no-descending-specificity": null,
-    "no-duplicate-selectors": true,
-    "number-leading-zero": "never",
-    "order/properties-order": [
-      "position",
-      "top",
-      "right",
-      "bottom",
-      "left",
-      "z-index",
-      "box-sizing",
-      "display",
-      "flex",
-      "flex-align",
-      "flex-basis",
-      "flex-direction",
-      "flex-wrap",
-      "flex-flow",
-      "flex-shrink",
-      "flex-grow",
-      "flex-order",
-      "flex-pack",
-      "align-content",
-      "align-items",
-      "align-self",
-      "justify-content",
-      "order",
-      "float",
-      "width",
-      "min-width",
-      "max-width",
-      "height",
-      "min-height",
-      "max-height",
-      "padding",
-      "padding-top",
-      "padding-right",
-      "padding-bottom",
-      "padding-left",
-      "margin",
-      "margin-top",
-      "margin-right",
-      "margin-bottom",
-      "margin-left",
-      "overflow",
-      "overflow-x",
-      "overflow-y",
-      "-webkit-overflow-scrolling",
-      "-ms-overflow-x",
-      "-ms-overflow-y",
-      "-ms-overflow-style",
-      "columns",
-      "column-count",
-      "column-fill",
-      "column-gap",
-      "column-rule",
-      "column-rule-width",
-      "column-rule-style",
-      "column-rule-color",
-      "column-span",
-      "column-width",
-      "orphans",
-      "widows",
-      "clip",
-      "clear",
-      "font",
-      "font-family",
-      "font-size",
-      "font-style",
-      "font-weight",
-      "font-variant",
-      "font-size-adjust",
-      "font-stretch",
-      "font-effect",
-      "font-emphasize",
-      "font-emphasize-position",
-      "font-emphasize-style",
-      "font-smooth",
-      "src",
-      "hyphens",
-      "line-height",
-      "color",
-      "text-align",
-      "text-align-last",
-      "text-emphasis",
-      "text-emphasis-color",
-      "text-emphasis-style",
-      "text-emphasis-position",
-      "text-decoration",
-      "text-indent",
-      "text-justify",
-      "text-outline",
-      "-ms-text-overflow",
-      "text-overflow",
-      "text-overflow-ellipsis",
-      "text-overflow-mode",
-      "text-shadow",
-      "text-transform",
-      "text-wrap",
-      "-webkit-text-size-adjust",
-      "-ms-text-size-adjust",
-      "letter-spacing",
-      "-ms-word-break",
-      "word-break",
-      "word-spacing",
-      "-ms-word-wrap",
-      "word-wrap",
-      "overflow-wrap",
-      "tab-size",
-      "white-space",
-      "vertical-align",
-      "direction",
-      "unicode-bidi",
-      "list-style",
-      "list-style-position",
-      "list-style-type",
-      "list-style-image",
-      "pointer-events",
-      "-ms-touch-action",
-      "touch-action",
-      "cursor",
-      "visibility",
-      "zoom",
-      "table-layout",
-      "empty-cells",
-      "caption-side",
-      "border-spacing",
-      "border-collapse",
-      "content",
-      "quotes",
-      "counter-reset",
-      "counter-increment",
-      "resize",
-      "user-select",
-      "nav-index",
-      "nav-up",
-      "nav-right",
-      "nav-down",
-      "nav-left",
-      "background",
-      "background-color",
-      "background-image",
-      "filter",
-      "background-repeat",
-      "background-attachment",
-      "background-position",
-      "background-position-x",
-      "background-position-y",
-      "background-clip",
-      "background-origin",
-      "background-size",
-      "border",
-      "border-color",
-      "border-style",
-      "border-width",
-      "border-top",
-      "border-top-color",
-      "border-top-style",
-      "border-top-width",
-      "border-right",
-      "border-right-color",
-      "border-right-style",
-      "border-right-width",
-      "border-bottom",
-      "border-bottom-color",
-      "border-bottom-style",
-      "border-bottom-width",
-      "border-left",
-      "border-left-color",
-      "border-left-style",
-      "border-left-width",
-      "border-radius",
-      "border-top-left-radius",
-      "border-top-right-radius",
-      "border-bottom-right-radius",
-      "border-bottom-left-radius",
-      "border-image",
-      "border-image-source",
-      "border-image-slice",
-      "border-image-width",
-      "border-image-outset",
-      "border-image-repeat",
-      "outline",
-      "outline-width",
-      "outline-style",
-      "outline-color",
-      "outline-offset",
-      "box-shadow",
-      "opacity",
-      "-ms-interpolation-mode",
-      "page-break-after",
-      "page-break-before",
-      "page-break-inside",
-      "transition",
-      "transition-delay",
-      "transition-timing-function",
-      "transition-duration",
-      "transition-property",
-      "transform",
-      "transform-origin",
-      "perspective",
-      "appearance",
-      "animation",
-      "animation-name",
-      "animation-duration",
-      "animation-play-state",
-      "animation-timing-function",
-      "animation-delay",
-      "animation-iteration-count",
-      "animation-direction",
-      "animation-fill-mode",
-      "fill",
-      "stroke"
-    ],
-    "property-no-vendor-prefix": true,
-    "rule-empty-line-before": null,
-    "selector-attribute-quotes": "always",
-    "selector-pseudo-element-colon-notation": "single",
-    "selector-list-comma-newline-after": "always",
-    "selector-list-comma-newline-before": "never-multi-line",
-    "selector-list-comma-space-after": "always-single-line",
-    "selector-list-comma-space-before": "never-single-line",
-    "selector-max-attribute": 2,
-    "selector-max-class": 4,
-    "selector-max-combinators": 4,
-    "selector-max-compound-selectors": 4,
-    "selector-max-empty-lines": 1,
-    "selector-max-id": 0,
-    "selector-max-specificity": null,
-    "selector-max-type": 2,
-    "selector-max-universal": 1,
-    "selector-no-qualifying-type": true,
-    "selector-no-vendor-prefix": true,
-    "shorthand-property-no-redundant-values": true,
-    "string-quotes": "double",
-    "value-keyword-case": "lower",
-    "value-list-comma-newline-after": "never-multi-line",
-    "value-list-comma-newline-before": "never-multi-line",
-    "value-list-comma-space-after": "always",
-    "value-no-vendor-prefix": true
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/grunt/browsers.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/browsers.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,86 +1,0 @@
-// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
-
-var browsers = {
-  safariMac: {
-    base: 'BrowserStack',
-    os: 'OS X',
-    os_version: 'Yosemite',
-    browser: 'Safari',
-    browser_version: '8.0'
-  },
-  chromeMac: {
-    base: 'BrowserStack',
-    os: 'OS X',
-    os_version: 'Yosemite',
-    browser : 'Chrome',
-    browser_version : 'latest'
-  },
-  firefoxMac: {
-    base: 'BrowserStack',
-    os: 'OS X',
-    os_version: 'Yosemite',
-    browser: 'Firefox',
-    browser_version: 'latest'
-  },
-  'ie11Win8.1': {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '8.1',
-    browser: 'IE',
-    browser_version: '11.0'
-  },
-  ie10Win8: {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '8',
-    browser: 'IE',
-    browser_version: '10.0'
-  },
-  ie9Win7: {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '7',
-    browser: 'IE',
-    browser_version: '9.0'
-  },
-  ie8Win7: {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '7',
-    browser: 'IE',
-    browser_version: '8.0'
-  },
-  'chromeWin8.1': {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '8.1',
-    browser: 'Chrome',
-    browser_version: 'latest'
-  },
-  'firefoxWin8.1': {
-    base: 'BrowserStack',
-    os: 'Windows',
-    os_version: '8.1',
-    browser: 'Firefox',
-    browser_version: 'latest'
-  },
-  iphone6: {
-    base: 'BrowserStack',
-    os: 'ios',
-    os_version: '11.2',
-    device: 'iPhone 6',
-    real_mobile: true
-  },
-  nexus5: {
-    base: 'BrowserStack',
-    os: 'android',
-    os_version: '4.4',
-    device: 'Google Nexus 5',
-    real_mobile: true
-  }
-};
-
-module.exports = {
-  list: browsers,
-  keys: Object.keys(browsers)
-};
Index: trip-planner-front/node_modules/bootstrap/grunt/bs-commonjs-generator.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/bs-commonjs-generator.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,30 +1,0 @@
-/*!
- * Bootstrap Grunt task for the CommonJS module generation
- * https://getbootstrap.com/
- * Copyright 2014-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-'use strict';
-
-var fs = require('fs');
-var path = require('path');
-
-var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n';
-
-module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) {
-  var destDir = path.dirname(destFilepath);
-
-  function srcPathToDestRequire(srcFilepath) {
-    var requirePath = path.posix.relative(destDir, srcFilepath);
-    return 'require(\'' + requirePath + '\')';
-  }
-
-  var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
-  try {
-    fs.writeFileSync(destFilepath, moduleOutputJs);
-  } catch (err) {
-    grunt.fail.warn(err);
-  }
-  grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
-};
Index: trip-planner-front/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,42 +1,0 @@
-/*!
- * Bootstrap Grunt task for Glyphicons data generation
- * https://getbootstrap.com/
- * Copyright 2014-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-'use strict';
-
-var fs = require('fs');
-
-module.exports = function generateGlyphiconsData(grunt) {
-  // Pass encoding, utf8, so `readFileSync` will return a string instead of a
-  // buffer
-  var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
-  var glyphiconsLines = glyphiconsFile.split('\n');
-
-  // Use any line that starts with ".glyphicon-" and capture the class name
-  var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
-  var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
-                       '# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
-  var glyphiconsYml = 'docs/_data/glyphicons.yml';
-  for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
-    var match = glyphiconsLines[i].match(iconClassName);
-
-    if (match !== null) {
-      glyphiconsData += '- ' + match[1] + '\n';
-    }
-  }
-
-  // Create the `_data` directory if it doesn't already exist
-  if (!fs.existsSync('docs/_data')) {
-    fs.mkdirSync('docs/_data');
-  }
-
-  try {
-    fs.writeFileSync(glyphiconsYml, glyphiconsData);
-  } catch (err) {
-    grunt.fail.warn(err);
-  }
-  grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
-};
Index: trip-planner-front/node_modules/bootstrap/grunt/bs-lessdoc-parser.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/bs-lessdoc-parser.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,237 +1,0 @@
-/*!
- * Bootstrap Grunt task for parsing Less docstrings
- * https://getbootstrap.com/
- * Copyright 2014-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-'use strict';
-
-var Markdown = require('markdown-it');
-
-function markdown2html(markdownString) {
-  var md = new Markdown();
-
-  // the slice removes the <p>...</p> wrapper output by Markdown processor
-  return md.render(markdownString.trim()).slice(3, -5);
-}
-
-
-/*
-Mini-language:
-  //== This is a normal heading, which starts a section. Sections group variables together.
-  //## Optional description for the heading
-
-  //=== This is a subheading.
-
-  //** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff.
-  @foo: #fff;
-
-  //-- This is a heading for a section whose variables shouldn't be customizable
-
-  All other lines are ignored completely.
-*/
-
-
-var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/;
-var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/;
-var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/;
-var SECTION_DOCSTRING = /^[/]{2}#{2}(.+)$/;
-var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]*);[ ]*$/;
-var VAR_DOCSTRING = /^[/]{2}[*]{2}(.+)$/;
-
-function Section(heading, customizable) {
-  this.heading = heading.trim();
-  this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
-  this.customizable = customizable;
-  this.docstring = null;
-  this.subsections = [];
-}
-
-Section.prototype.addSubSection = function (subsection) {
-  this.subsections.push(subsection);
-};
-
-function SubSection(heading) {
-  this.heading = heading.trim();
-  this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
-  this.variables = [];
-}
-
-SubSection.prototype.addVar = function (variable) {
-  this.variables.push(variable);
-};
-
-function VarDocstring(markdownString) {
-  this.html = markdown2html(markdownString);
-}
-
-function SectionDocstring(markdownString) {
-  this.html = markdown2html(markdownString);
-}
-
-function Variable(name, defaultValue) {
-  this.name = name;
-  this.defaultValue = defaultValue;
-  this.docstring = null;
-}
-
-function Tokenizer(fileContent) {
-  this._lines = fileContent.split('\n');
-  this._next = undefined;
-}
-
-Tokenizer.prototype.unshift = function (token) {
-  if (this._next !== undefined) {
-    throw new Error('Attempted to unshift twice!');
-  }
-  this._next = token;
-};
-
-Tokenizer.prototype._shift = function () {
-  // returning null signals EOF
-  // returning undefined means the line was ignored
-  if (this._next !== undefined) {
-    var result = this._next;
-    this._next = undefined;
-    return result;
-  }
-  if (this._lines.length <= 0) {
-    return null;
-  }
-  var line = this._lines.shift();
-  var match = null;
-  match = SUBSECTION_HEADING.exec(line);
-  if (match !== null) {
-    return new SubSection(match[1]);
-  }
-  match = CUSTOMIZABLE_HEADING.exec(line);
-  if (match !== null) {
-    return new Section(match[1], true);
-  }
-  match = UNCUSTOMIZABLE_HEADING.exec(line);
-  if (match !== null) {
-    return new Section(match[1], false);
-  }
-  match = SECTION_DOCSTRING.exec(line);
-  if (match !== null) {
-    return new SectionDocstring(match[1]);
-  }
-  match = VAR_DOCSTRING.exec(line);
-  if (match !== null) {
-    return new VarDocstring(match[1]);
-  }
-  var commentStart = line.lastIndexOf('//');
-  var varLine = commentStart === -1 ? line : line.slice(0, commentStart);
-  match = VAR_ASSIGNMENT.exec(varLine);
-  if (match !== null) {
-    return new Variable(match[1], match[2]);
-  }
-  return undefined;
-};
-
-Tokenizer.prototype.shift = function () {
-  while (true) {
-    var result = this._shift();
-    if (result === undefined) {
-      continue;
-    }
-    return result;
-  }
-};
-
-function Parser(fileContent) {
-  this._tokenizer = new Tokenizer(fileContent);
-}
-
-Parser.prototype.parseFile = function () {
-  var sections = [];
-  while (true) {
-    var section = this.parseSection();
-    if (section === null) {
-      if (this._tokenizer.shift() !== null) {
-        throw new Error('Unexpected unparsed section of file remains!');
-      }
-      return sections;
-    }
-    sections.push(section);
-  }
-};
-
-Parser.prototype.parseSection = function () {
-  var section = this._tokenizer.shift();
-  if (section === null) {
-    return null;
-  }
-  if (!(section instanceof Section)) {
-    throw new Error('Expected section heading; got: ' + JSON.stringify(section));
-  }
-  var docstring = this._tokenizer.shift();
-  if (docstring instanceof SectionDocstring) {
-    section.docstring = docstring;
-  } else {
-    this._tokenizer.unshift(docstring);
-  }
-  this.parseSubSections(section);
-
-  return section;
-};
-
-Parser.prototype.parseSubSections = function (section) {
-  while (true) {
-    var subsection = this.parseSubSection();
-    if (subsection === null) {
-      if (section.subsections.length === 0) {
-        // Presume an implicit initial subsection
-        subsection = new SubSection('');
-        this.parseVars(subsection);
-      } else {
-        break;
-      }
-    }
-    section.addSubSection(subsection);
-  }
-
-  if (section.subsections.length === 1 && !section.subsections[0].heading && section.subsections[0].variables.length === 0) {
-    // Ignore lone empty implicit subsection
-    section.subsections = [];
-  }
-};
-
-Parser.prototype.parseSubSection = function () {
-  var subsection = this._tokenizer.shift();
-  if (subsection instanceof SubSection) {
-    this.parseVars(subsection);
-    return subsection;
-  }
-  this._tokenizer.unshift(subsection);
-  return null;
-};
-
-Parser.prototype.parseVars = function (subsection) {
-  while (true) {
-    var variable = this.parseVar();
-    if (variable === null) {
-      return;
-    }
-    subsection.addVar(variable);
-  }
-};
-
-Parser.prototype.parseVar = function () {
-  var docstring = this._tokenizer.shift();
-  if (!(docstring instanceof VarDocstring)) {
-    this._tokenizer.unshift(docstring);
-    docstring = null;
-  }
-  var variable = this._tokenizer.shift();
-  if (variable instanceof Variable) {
-    variable.docstring = docstring;
-    return variable;
-  }
-  this._tokenizer.unshift(variable);
-  return null;
-};
-
-
-module.exports = Parser;
Index: trip-planner-front/node_modules/bootstrap/grunt/bs-raw-files-generator.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/bs-raw-files-generator.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/*!
- * Bootstrap Grunt task for generating raw-files.min.js for the Customizer
- * https://getbootstrap.com/
- * Copyright 2014-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-'use strict';
-
-var fs = require('fs');
-var btoa = require('btoa');
-var glob = require('glob');
-
-function getFiles(type) {
-  var files = {};
-  var recursive = type === 'less';
-  var globExpr = recursive ? '/**/*' : '/*';
-  glob.sync(type + globExpr)
-    .filter(function (path) {
-      return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
-    })
-    .forEach(function (fullPath) {
-      var relativePath = fullPath.replace(/^[^/]+\//, '');
-      files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8');
-    });
-  return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
-}
-
-module.exports = function generateRawFilesJs(grunt, banner) {
-  if (!banner) {
-    banner = '';
-  }
-  var dirs = ['js', 'less', 'fonts'];
-  var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
-    return combined + file;
-  }, '');
-  var rawFilesJs = 'docs/assets/js/raw-files.min.js';
-  try {
-    fs.writeFileSync(rawFilesJs, files);
-  } catch (err) {
-    grunt.fail.warn(err);
-  }
-  grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
-};
Index: trip-planner-front/node_modules/bootstrap/grunt/change-version.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/change-version.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,109 +1,0 @@
-#!/usr/bin/env node
-'use strict';
-
-/* globals Set */
-/*!
- * Script to update version number references in the project.
- * Copyright 2015-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-var fs = require('fs');
-var path = require('path');
-var sh = require('shelljs');
-sh.config.fatal = true;
-var sed = sh.sed;
-
-// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
-RegExp.quote = function (string) {
-  return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
-};
-RegExp.quoteReplacement = function (string) {
-  return string.replace(/[$]/g, '$$');
-};
-
-var DRY_RUN = false;
-
-function walkAsync(directory, excludedDirectories, fileCallback, errback) {
-  if (excludedDirectories.has(path.parse(directory).base)) {
-    return;
-  }
-  fs.readdir(directory, function (err, names) {
-    if (err) {
-      errback(err);
-      return;
-    }
-    names.forEach(function (name) {
-      var filepath = path.join(directory, name);
-      fs.lstat(filepath, function (err, stats) {
-        if (err) {
-          process.nextTick(errback, err);
-          return;
-        }
-        if (stats.isSymbolicLink()) {
-          return;
-        }
-        else if (stats.isDirectory()) {
-          process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback);
-        }
-        else if (stats.isFile()) {
-          process.nextTick(fileCallback, filepath);
-        }
-      });
-    });
-  });
-}
-
-function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
-  original = new RegExp(RegExp.quote(original), 'g');
-  replacement = RegExp.quoteReplacement(replacement);
-  var updateFile = !DRY_RUN ? function (filepath) {
-    if (allowedExtensions.has(path.parse(filepath).ext)) {
-      sed('-i', original, replacement, filepath);
-    }
-  } : function (filepath) {
-    if (allowedExtensions.has(path.parse(filepath).ext)) {
-      console.log('FILE: ' + filepath);
-    }
-    else {
-      console.log('EXCLUDED:' + filepath);
-    }
-  };
-  walkAsync(directory, excludedDirectories, updateFile, function (err) {
-    console.error('ERROR while traversing directory!:');
-    console.error(err);
-    process.exit(1);
-  });
-}
-
-function main(args) {
-  if (args.length !== 2) {
-    console.error('USAGE: change-version old_version new_version');
-    console.error('Got arguments:', args);
-    process.exit(1);
-  }
-  var oldVersion = args[0];
-  var newVersion = args[1];
-  var EXCLUDED_DIRS = new Set([
-    '.git',
-    'node_modules',
-    'vendor'
-  ]);
-  var INCLUDED_EXTENSIONS = new Set([
-    // This extension whitelist is how we avoid modifying binary files
-    '',
-    '.css',
-    '.html',
-    '.js',
-    '.json',
-    '.less',
-    '.md',
-    '.nuspec',
-    '.ps1',
-    '.scss',
-    '.txt',
-    '.yml'
-  ]);
-  replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion);
-}
-
-main(process.argv.slice(2));
Index: trip-planner-front/node_modules/bootstrap/grunt/configBridge.json
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/configBridge.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,54 +1,0 @@
-{
-  "paths": {
-    "customizerJs": [
-      "../assets/js/vendor/autoprefixer.js",
-      "../assets/js/vendor/less.min.js",
-      "../assets/js/vendor/jszip.min.js",
-      "../assets/js/vendor/uglify.min.js",
-      "../assets/js/vendor/Blob.js",
-      "../assets/js/vendor/FileSaver.js",
-      "../assets/js/raw-files.min.js",
-      "../assets/js/src/customizer.js"
-    ],
-    "docsJs": [
-      "../assets/js/vendor/requestAnimationFrame-polyfill.js",
-      "../assets/js/vendor/base64.js",
-      "../assets/js/vendor/holder.min.js",
-      "../assets/js/vendor/clipboard.min.js",
-      "../assets/js/vendor/anchor.min.js",
-      "../assets/js/src/application.js",
-      "../assets/js/src/search.js",
-      "../assets/js/ie10-viewport-bug-workaround.js",
-      "../assets/js/ie-emulation-modes-warning.js"
-    ]
-  },
-  "config": {
-    "autoprefixer": {
-      "browsers": [
-        "Android 2.3",
-        "Android >= 4",
-        "Chrome >= 20",
-        "Firefox >= 24",
-        "Explorer >= 8",
-        "iOS >= 6",
-        "Opera >= 12",
-        "Safari >= 6"
-      ],
-      "cascade": false
-    },
-    "jqueryCheck": [
-      "if (typeof jQuery === 'undefined') {",
-      "  throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
-      "}\n"
-    ],
-    "jqueryVersionCheck": [
-      "+function ($) {",
-      "  'use strict';",
-      "  var version = $.fn.jquery.split(' ')[0].split('.')",
-      "  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {",
-      "    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')",
-      "  }",
-      "}(jQuery);\n\n"
-    ]
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/grunt/generate-sri.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/generate-sri.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,62 +1,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-/*!
- * Script to generate SRI hashes for use in our docs.
- * Remember to use the same vendor files as the CDN ones,
- * otherwise the hashes won't match!
- *
- * Copyright 2017-2019 The Bootstrap Authors
- * Copyright 2017-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-var crypto = require('crypto');
-var fs = require('fs');
-var path = require('path');
-var replace = require('replace-in-file');
-
-var configFile = path.join(__dirname, '../_config.yml');
-
-// Array of objects which holds the files to generate SRI hashes for.
-// `file` is the path from the root folder
-// `configPropertyName` is the _config.yml variable's name of the file
-var files = [
-  {
-    file: 'dist/css/bootstrap.min.css',
-    configPropertyName: 'css_hash'
-  },
-  {
-    file: 'dist/css/bootstrap-theme.min.css',
-    configPropertyName: 'css_theme_hash'
-  },
-  {
-    file: 'dist/js/bootstrap.min.js',
-    configPropertyName: 'js_hash'
-  }
-];
-
-files.forEach(function (file) {
-  fs.readFile(file.file, 'utf8', function (err, data) {
-    if (err) {
-      throw err;
-    }
-
-    var algo = 'sha384';
-    var hash = crypto.createHash(algo).update(data, 'utf8').digest('base64');
-    var integrity = algo + '-' + hash;
-
-    console.log(file.configPropertyName + ': ' + integrity);
-
-    try {
-      replace.sync({
-        files: configFile,
-        from: new RegExp('(\\s' + file.configPropertyName + ':\\s+"|\')(\\S+)("|\')'),
-        to: '$1' + integrity + '$3'
-      });
-    } catch (error) {
-      console.error('Error occurred:', error);
-    }
-  });
-});
Index: trip-planner-front/node_modules/bootstrap/grunt/karma.conf.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/grunt/karma.conf.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,79 +1,0 @@
-'use strict';
-
-var ip = require('ip');
-var browserConfig = require('./browsers');
-var browserStack = process.env.BROWSER === 'true';
-
-module.exports = function (config) {
-  var conf = {
-    basePath: '../',
-    frameworks: ['qunit'],
-    plugins: ['karma-qunit'],
-    // list of files / patterns to load in the browser
-    files: [
-      'js/tests/vendor/jquery.min.js',
-      'js/tooltip.js',
-      'js/!(tooltip).js',
-      'js/tests/unit/*.js'
-    ],
-    reporters: ['dots'],
-    port: 9876,
-    colors: true,
-    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
-    logLevel: config.LOG_ERROR || config.LOG_WARN,
-    autoWatch: false,
-    singleRun: true,
-    concurrency: Infinity,
-    client: {
-      qunit: {
-        showUI: true
-      }
-    }
-  };
-
-  if (browserStack) {
-    conf.hostname = ip.address();
-    conf.browserStack = {
-      username: process.env.BROWSER_STACK_USERNAME,
-      accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
-      build: 'bootstrap-v3-' + new Date().toISOString(),
-      project: 'Bootstrap v3',
-      retryLimit: 1
-    };
-    conf.plugins.push('karma-browserstack-launcher');
-    conf.customLaunchers = browserConfig.list;
-    conf.browsers = browserConfig.keys;
-    conf.reporters.push('BrowserStack');
-  } else {
-    conf.frameworks.push('detectBrowsers');
-    conf.plugins.push(
-      'karma-chrome-launcher',
-      'karma-firefox-launcher',
-      'karma-detect-browsers'
-    );
-
-    conf.detectBrowsers = {
-      usePhantomJS: false,
-      postDetection: function (availableBrowser) {
-        if (typeof process.env.TRAVIS_JOB_ID !== 'undefined' || availableBrowser.includes('Chrome')) {
-          return ['ChromeHeadless'];
-        }
-
-        if (availableBrowser.includes('Firefox')) {
-          return ['FirefoxHeadless'];
-        }
-
-        throw new Error('Please install Firefox or Chrome');
-      }
-    };
-
-    conf.customLaunchers = {
-      FirefoxHeadless: {
-        base: 'Firefox',
-        flags: ['-headless']
-      }
-    };
-  }
-
-  config.set(conf);
-};
Index: trip-planner-front/node_modules/bootstrap/js/affix.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/affix.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,164 +1,0 @@
-/* ========================================================================
- * Bootstrap: affix.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#affix
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-
-    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
-
-    this.$target = target
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element     = $(element)
-    this.affixed      = null
-    this.unpin        = null
-    this.pinnedOffset = null
-
-    this.checkPosition()
-  }
-
-  Affix.VERSION  = '3.4.1'
-
-  Affix.RESET    = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0,
-    target: window
-  }
-
-  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
-    var scrollTop    = this.$target.scrollTop()
-    var position     = this.$element.offset()
-    var targetHeight = this.$target.height()
-
-    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
-
-    if (this.affixed == 'bottom') {
-      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
-      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
-    }
-
-    var initializing   = this.affixed == null
-    var colliderTop    = initializing ? scrollTop : position.top
-    var colliderHeight = initializing ? targetHeight : height
-
-    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
-    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
-
-    return false
-  }
-
-  Affix.prototype.getPinnedOffset = function () {
-    if (this.pinnedOffset) return this.pinnedOffset
-    this.$element.removeClass(Affix.RESET).addClass('affix')
-    var scrollTop = this.$target.scrollTop()
-    var position  = this.$element.offset()
-    return (this.pinnedOffset = position.top - scrollTop)
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var height       = this.$element.height()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-    var scrollHeight = Math.max($(document).height(), $(document.body).height())
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
-
-    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
-
-    if (this.affixed != affix) {
-      if (this.unpin != null) this.$element.css('top', '')
-
-      var affixType = 'affix' + (affix ? '-' + affix : '')
-      var e         = $.Event(affixType + '.bs.affix')
-
-      this.$element.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      this.affixed = affix
-      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
-
-      this.$element
-        .removeClass(Affix.RESET)
-        .addClass(affixType)
-        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
-    }
-
-    if (affix == 'bottom') {
-      this.$element.offset({
-        top: scrollHeight - height - offsetBottom
-      })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.affix
-
-  $.fn.affix             = Plugin
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
-
-      Plugin.call($spy, data)
-    })
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/alert.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/alert.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,95 +1,0 @@
-/* ========================================================================
- * Bootstrap: alert.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#alerts
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.VERSION = '3.4.1'
-
-  Alert.TRANSITION_DURATION = 150
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    selector    = selector === '#' ? [] : selector
-    var $parent = $(document).find(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.closest('.alert')
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      // detach from parent, fire event then clean up data
-      $parent.detach().trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one('bsTransitionEnd', removeElement)
-        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.alert
-
-  $.fn.alert             = Plugin
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/button.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/button.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,125 +1,0 @@
-/* ========================================================================
- * Bootstrap: button.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#buttons
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element  = $(element)
-    this.options   = $.extend({}, Button.DEFAULTS, options)
-    this.isLoading = false
-  }
-
-  Button.VERSION  = '3.4.1'
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state += 'Text'
-
-    if (data.resetText == null) $el.data('resetText', $el[val]())
-
-    // push to event loop to allow forms to submit
-    setTimeout($.proxy(function () {
-      $el[val](data[state] == null ? this.options[state] : data[state])
-
-      if (state == 'loadingText') {
-        this.isLoading = true
-        $el.addClass(d).attr(d, d).prop(d, true)
-      } else if (this.isLoading) {
-        this.isLoading = false
-        $el.removeClass(d).removeAttr(d).prop(d, false)
-      }
-    }, this), 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var changed = true
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-      if ($input.prop('type') == 'radio') {
-        if ($input.prop('checked')) changed = false
-        $parent.find('.active').removeClass('active')
-        this.$element.addClass('active')
-      } else if ($input.prop('type') == 'checkbox') {
-        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
-        this.$element.toggleClass('active')
-      }
-      $input.prop('checked', this.$element.hasClass('active'))
-      if (changed) $input.trigger('change')
-    } else {
-      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
-      this.$element.toggleClass('active')
-    }
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  var old = $.fn.button
-
-  $.fn.button             = Plugin
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document)
-    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      var $btn = $(e.target).closest('.btn')
-      Plugin.call($btn, 'toggle')
-      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
-        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
-        e.preventDefault()
-        // The target component still receive the focus
-        if ($btn.is('input,button')) $btn.trigger('focus')
-        else $btn.find('input:visible,button:visible').first().trigger('focus')
-      }
-    })
-    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
-    })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/carousel.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/carousel.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,246 +1,0 @@
-/* ========================================================================
- * Bootstrap: carousel.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#carousel
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      = null
-    this.sliding     = null
-    this.interval    = null
-    this.$active     = null
-    this.$items      = null
-
-    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
-
-    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
-      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
-      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
-  }
-
-  Carousel.VERSION  = '3.4.1'
-
-  Carousel.TRANSITION_DURATION = 600
-
-  Carousel.DEFAULTS = {
-    interval: 5000,
-    pause: 'hover',
-    wrap: true,
-    keyboard: true
-  }
-
-  Carousel.prototype.keydown = function (e) {
-    if (/input|textarea/i.test(e.target.tagName)) return
-    switch (e.which) {
-      case 37: this.prev(); break
-      case 39: this.next(); break
-      default: return
-    }
-
-    e.preventDefault()
-  }
-
-  Carousel.prototype.cycle = function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getItemIndex = function (item) {
-    this.$items = item.parent().children('.item')
-    return this.$items.index(item || this.$active)
-  }
-
-  Carousel.prototype.getItemForDirection = function (direction, active) {
-    var activeIndex = this.getItemIndex(active)
-    var willWrap = (direction == 'prev' && activeIndex === 0)
-                || (direction == 'next' && activeIndex == (this.$items.length - 1))
-    if (willWrap && !this.options.wrap) return active
-    var delta = direction == 'prev' ? -1 : 1
-    var itemIndex = (activeIndex + delta) % this.$items.length
-    return this.$items.eq(itemIndex)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || this.getItemForDirection(type, $active)
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var that      = this
-
-    if ($next.hasClass('active')) return (this.sliding = false)
-
-    var relatedTarget = $next[0]
-    var slideEvent = $.Event('slide.bs.carousel', {
-      relatedTarget: relatedTarget,
-      direction: direction
-    })
-    this.$element.trigger(slideEvent)
-    if (slideEvent.isDefaultPrevented()) return
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
-      $nextIndicator && $nextIndicator.addClass('active')
-    }
-
-    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      $next.addClass(type)
-      if (typeof $next === 'object' && $next.length) {
-        $next[0].offsetWidth // force reflow
-      }
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one('bsTransitionEnd', function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () {
-            that.$element.trigger(slidEvent)
-          }, 0)
-        })
-        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
-    } else {
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger(slidEvent)
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  var old = $.fn.carousel
-
-  $.fn.carousel             = Plugin
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  var clickHandler = function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    if (href) {
-      href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-    }
-
-    var target  = $this.attr('data-target') || href
-    var $target = $(document).find(target)
-
-    if (!$target.hasClass('carousel')) return
-
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    Plugin.call($target, options)
-
-    if (slideIndex) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  }
-
-  $(document)
-    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
-    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      Plugin.call($carousel, $carousel.data())
-    })
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/collapse.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/collapse.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,212 +1,0 @@
-/* ========================================================================
- * Bootstrap: collapse.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#collapse
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-/* jshint latedef: false */
-
-+function ($) {
-  'use strict';
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
-                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
-    this.transitioning = null
-
-    if (this.options.parent) {
-      this.$parent = this.getParent()
-    } else {
-      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
-    }
-
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.VERSION  = '3.4.1'
-
-  Collapse.TRANSITION_DURATION = 350
-
-  Collapse.DEFAULTS = {
-    toggle: true
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var activesData
-    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
-
-    if (actives && actives.length) {
-      activesData = actives.data('bs.collapse')
-      if (activesData && activesData.transitioning) return
-    }
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    if (actives && actives.length) {
-      Plugin.call(actives, 'hide')
-      activesData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')[dimension](0)
-      .attr('aria-expanded', true)
-
-    this.$trigger
-      .removeClass('collapsed')
-      .attr('aria-expanded', true)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse in')[dimension]('')
-      this.transitioning = 0
-      this.$element
-        .trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse in')
-      .attr('aria-expanded', false)
-
-    this.$trigger
-      .addClass('collapsed')
-      .attr('aria-expanded', false)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse')
-        .trigger('hidden.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-  Collapse.prototype.getParent = function () {
-    return $(document).find(this.options.parent)
-      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
-      .each($.proxy(function (i, element) {
-        var $element = $(element)
-        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
-      }, this))
-      .end()
-  }
-
-  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
-    var isOpen = $element.hasClass('in')
-
-    $element.attr('aria-expanded', isOpen)
-    $trigger
-      .toggleClass('collapsed', !isOpen)
-      .attr('aria-expanded', isOpen)
-  }
-
-  function getTargetFromTrigger($trigger) {
-    var href
-    var target = $trigger.attr('data-target')
-      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-
-    return $(document).find(target)
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.collapse
-
-  $.fn.collapse             = Plugin
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
-    var $this   = $(this)
-
-    if (!$this.attr('data-target')) e.preventDefault()
-
-    var $target = getTargetFromTrigger($this)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $this.data()
-
-    Plugin.call($target, option)
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/dropdown.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/dropdown.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,165 +1,0 @@
-/* ========================================================================
- * Bootstrap: dropdown.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle="dropdown"]'
-  var Dropdown = function (element) {
-    $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.VERSION = '3.4.1'
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = selector !== '#' ? $(document).find(selector) : null
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-  function clearMenus(e) {
-    if (e && e.which === 3) return
-    $(backdrop).remove()
-    $(toggle).each(function () {
-      var $this         = $(this)
-      var $parent       = getParent($this)
-      var relatedTarget = { relatedTarget: this }
-
-      if (!$parent.hasClass('open')) return
-
-      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
-
-      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this.attr('aria-expanded', 'false')
-      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
-    })
-  }
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we use a backdrop because click events don't delegate
-        $(document.createElement('div'))
-          .addClass('dropdown-backdrop')
-          .insertAfter($(this))
-          .on('click', clearMenus)
-      }
-
-      var relatedTarget = { relatedTarget: this }
-      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this
-        .trigger('focus')
-        .attr('aria-expanded', 'true')
-
-      $parent
-        .toggleClass('open')
-        .trigger($.Event('shown.bs.dropdown', relatedTarget))
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if (!isActive && e.which != 27 || isActive && e.which == 27) {
-      if (e.which == 27) $parent.find(toggle).trigger('focus')
-      return $this.trigger('click')
-    }
-
-    var desc = ' li:not(.disabled):visible a'
-    var $items = $parent.find('.dropdown-menu' + desc)
-
-    if (!$items.length) return
-
-    var index = $items.index(e.target)
-
-    if (e.which == 38 && index > 0)                 index--         // up
-    if (e.which == 40 && index < $items.length - 1) index++         // down
-    if (!~index)                                    index = 0
-
-    $items.eq(index).trigger('focus')
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.dropdown')
-
-      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown             = Plugin
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
-    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/modal.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/modal.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,358 +1,0 @@
-/* ========================================================================
- * Bootstrap: modal.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#modals
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options = options
-    this.$body = $(document.body)
-    this.$element = $(element)
-    this.$dialog = this.$element.find('.modal-dialog')
-    this.$backdrop = null
-    this.isShown = null
-    this.originalBodyPad = null
-    this.scrollbarWidth = 0
-    this.ignoreBackdropClick = false
-    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
-
-    if (this.options.remote) {
-      this.$element
-        .find('.modal-content')
-        .load(this.options.remote, $.proxy(function () {
-          this.$element.trigger('loaded.bs.modal')
-        }, this))
-    }
-  }
-
-  Modal.VERSION = '3.4.1'
-
-  Modal.TRANSITION_DURATION = 300
-  Modal.BACKDROP_TRANSITION_DURATION = 150
-
-  Modal.DEFAULTS = {
-    backdrop: true,
-    keyboard: true,
-    show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this.isShown ? this.hide() : this.show(_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.checkScrollbar()
-    this.setScrollbar()
-    this.$body.addClass('modal-open')
-
-    this.escape()
-    this.resize()
-
-    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
-      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
-        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
-      })
-    })
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(that.$body) // don't move modals dom position
-      }
-
-      that.$element
-        .show()
-        .scrollTop(0)
-
-      that.adjustDialog()
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element.addClass('in')
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$dialog // wait for modal to slide in
-          .one('bsTransitionEnd', function () {
-            that.$element.trigger('focus').trigger(e)
-          })
-          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-        that.$element.trigger('focus').trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.escape()
-    this.resize()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .off('click.dismiss.bs.modal')
-      .off('mouseup.dismiss.bs.modal')
-
-    this.$dialog.off('mousedown.dismiss.bs.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (document !== e.target &&
-          this.$element[0] !== e.target &&
-          !this.$element.has(e.target).length) {
-          this.$element.trigger('focus')
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keydown.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.resize = function () {
-    if (this.isShown) {
-      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
-    } else {
-      $(window).off('resize.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.$body.removeClass('modal-open')
-      that.resetAdjustments()
-      that.resetScrollbar()
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $(document.createElement('div'))
-        .addClass('modal-backdrop ' + animate)
-        .appendTo(this.$body)
-
-      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
-        if (this.ignoreBackdropClick) {
-          this.ignoreBackdropClick = false
-          return
-        }
-        if (e.target !== e.currentTarget) return
-        this.options.backdrop == 'static'
-          ? this.$element[0].focus()
-          : this.hide()
-      }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one('bsTransitionEnd', callback)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      var callbackRemove = function () {
-        that.removeBackdrop()
-        callback && callback()
-      }
-      $.support.transition && this.$element.hasClass('fade') ?
-        this.$backdrop
-          .one('bsTransitionEnd', callbackRemove)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callbackRemove()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  // these following methods are used to handle overflowing modals
-
-  Modal.prototype.handleUpdate = function () {
-    this.adjustDialog()
-  }
-
-  Modal.prototype.adjustDialog = function () {
-    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
-
-    this.$element.css({
-      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
-      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
-    })
-  }
-
-  Modal.prototype.resetAdjustments = function () {
-    this.$element.css({
-      paddingLeft: '',
-      paddingRight: ''
-    })
-  }
-
-  Modal.prototype.checkScrollbar = function () {
-    var fullWindowWidth = window.innerWidth
-    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
-      var documentElementRect = document.documentElement.getBoundingClientRect()
-      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
-    }
-    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
-    this.scrollbarWidth = this.measureScrollbar()
-  }
-
-  Modal.prototype.setScrollbar = function () {
-    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
-    this.originalBodyPad = document.body.style.paddingRight || ''
-    var scrollbarWidth = this.scrollbarWidth
-    if (this.bodyIsOverflowing) {
-      this.$body.css('padding-right', bodyPad + scrollbarWidth)
-      $(this.fixedContent).each(function (index, element) {
-        var actualPadding = element.style.paddingRight
-        var calculatedPadding = $(element).css('padding-right')
-        $(element)
-          .data('padding-right', actualPadding)
-          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
-      })
-    }
-  }
-
-  Modal.prototype.resetScrollbar = function () {
-    this.$body.css('padding-right', this.originalBodyPad)
-    $(this.fixedContent).each(function (index, element) {
-      var padding = $(element).data('padding-right')
-      $(element).removeData('padding-right')
-      element.style.paddingRight = padding ? padding : ''
-    })
-  }
-
-  Modal.prototype.measureScrollbar = function () { // thx walsh
-    var scrollDiv = document.createElement('div')
-    scrollDiv.className = 'modal-scrollbar-measure'
-    this.$body.append(scrollDiv)
-    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
-    this.$body[0].removeChild(scrollDiv)
-    return scrollbarWidth
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option, _relatedTarget) {
-    return this.each(function () {
-      var $this = $(this)
-      var data = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  var old = $.fn.modal
-
-  $.fn.modal = Plugin
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this = $(this)
-    var href = $this.attr('href')
-    var target = $this.attr('data-target') ||
-      (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
-
-    var $target = $(document).find(target)
-    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    if ($this.is('a')) e.preventDefault()
-
-    $target.one('show.bs.modal', function (showEvent) {
-      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
-      $target.one('hidden.bs.modal', function () {
-        $this.is(':visible') && $this.trigger('focus')
-      })
-    })
-    Plugin.call($target, option, this)
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/popover.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/popover.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,123 +1,0 @@
-/* ========================================================================
- * Bootstrap: popover.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#popovers
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.VERSION  = '3.4.1'
-
-  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right',
-    trigger: 'click',
-    content: '',
-    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    if (this.options.html) {
-      var typeContent = typeof content
-
-      if (this.options.sanitize) {
-        title = this.sanitizeHtml(title)
-
-        if (typeContent === 'string') {
-          content = this.sanitizeHtml(content)
-        }
-      }
-
-      $tip.find('.popover-title').html(title)
-      $tip.find('.popover-content').children().detach().end()[
-        typeContent === 'string' ? 'html' : 'append'
-      ](content)
-    } else {
-      $tip.find('.popover-title').text(title)
-      $tip.find('.popover-content').children().detach().end().text(content)
-    }
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-        o.content.call($e[0]) :
-        o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.popover')
-      var options = typeof option == 'object' && option
-
-      if (!data && /destroy|hide/.test(option)) return
-      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.popover
-
-  $.fn.popover             = Plugin
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/scrollspy.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/scrollspy.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,172 +1,0 @@
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    this.$body          = $(document.body)
-    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target || '') + ' .nav li > a'
-    this.offsets        = []
-    this.targets        = []
-    this.activeTarget   = null
-    this.scrollHeight   = 0
-
-    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.VERSION  = '3.4.1'
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.getScrollHeight = function () {
-    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var that          = this
-    var offsetMethod  = 'offset'
-    var offsetBase    = 0
-
-    this.offsets      = []
-    this.targets      = []
-    this.scrollHeight = this.getScrollHeight()
-
-    if (!$.isWindow(this.$scrollElement[0])) {
-      offsetMethod = 'position'
-      offsetBase   = this.$scrollElement.scrollTop()
-    }
-
-    this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#./.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && $href.is(':visible')
-          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        that.offsets.push(this[0])
-        that.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.getScrollHeight()
-    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (this.scrollHeight != scrollHeight) {
-      this.refresh()
-    }
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
-    }
-
-    if (activeTarget && scrollTop < offsets[0]) {
-      this.activeTarget = null
-      return this.clear()
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
-        && this.activate(targets[i])
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    this.clear()
-
-    var selector = this.selector +
-      '[data-target="' + target + '"],' +
-      this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length) {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate.bs.scrollspy')
-  }
-
-  ScrollSpy.prototype.clear = function () {
-    $(this.selector)
-      .parentsUntil(this.options.target, '.active')
-      .removeClass('active')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy             = Plugin
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load.bs.scrollspy.data-api', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      Plugin.call($spy, $spy.data())
-    })
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/tab.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/tab.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,155 +1,0 @@
-/* ========================================================================
- * Bootstrap: tab.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#tabs
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    // jscs:disable requireDollarBeforejQueryAssignment
-    this.element = $(element)
-    // jscs:enable requireDollarBeforejQueryAssignment
-  }
-
-  Tab.VERSION = '3.4.1'
-
-  Tab.TRANSITION_DURATION = 150
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.data('target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var $previous = $ul.find('.active:last a')
-    var hideEvent = $.Event('hide.bs.tab', {
-      relatedTarget: $this[0]
-    })
-    var showEvent = $.Event('show.bs.tab', {
-      relatedTarget: $previous[0]
-    })
-
-    $previous.trigger(hideEvent)
-    $this.trigger(showEvent)
-
-    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
-
-    var $target = $(document).find(selector)
-
-    this.activate($this.closest('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $previous.trigger({
-        type: 'hidden.bs.tab',
-        relatedTarget: $this[0]
-      })
-      $this.trigger({
-        type: 'shown.bs.tab',
-        relatedTarget: $previous[0]
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-        .removeClass('active')
-        .end()
-        .find('[data-toggle="tab"]')
-        .attr('aria-expanded', false)
-
-      element
-        .addClass('active')
-        .find('[data-toggle="tab"]')
-        .attr('aria-expanded', true)
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu').length) {
-        element
-          .closest('li.dropdown')
-          .addClass('active')
-          .end()
-          .find('[data-toggle="tab"]')
-          .attr('aria-expanded', true)
-      }
-
-      callback && callback()
-    }
-
-    $active.length && transition ?
-      $active
-        .one('bsTransitionEnd', next)
-        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tab
-
-  $.fn.tab             = Plugin
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  var clickHandler = function (e) {
-    e.preventDefault()
-    Plugin.call($(this), 'show')
-  }
-
-  $(document)
-    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
-    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/tooltip.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/tooltip.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,677 +1,0 @@
-/* ========================================================================
- * Bootstrap: tooltip.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-+function ($) {
-  'use strict';
-
-  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
-
-  var uriAttrs = [
-    'background',
-    'cite',
-    'href',
-    'itemtype',
-    'longdesc',
-    'poster',
-    'src',
-    'xlink:href'
-  ]
-
-  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
-
-  var DefaultWhitelist = {
-    // Global attributes allowed on any supplied element below.
-    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-    a: ['target', 'href', 'title', 'rel'],
-    area: [],
-    b: [],
-    br: [],
-    col: [],
-    code: [],
-    div: [],
-    em: [],
-    hr: [],
-    h1: [],
-    h2: [],
-    h3: [],
-    h4: [],
-    h5: [],
-    h6: [],
-    i: [],
-    img: ['src', 'alt', 'title', 'width', 'height'],
-    li: [],
-    ol: [],
-    p: [],
-    pre: [],
-    s: [],
-    small: [],
-    span: [],
-    sub: [],
-    sup: [],
-    strong: [],
-    u: [],
-    ul: []
-  }
-
-  /**
-   * A pattern that recognizes a commonly useful subset of URLs that are safe.
-   *
-   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
-   */
-  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
-
-  /**
-   * A pattern that matches safe data URLs. Only matches image, video and audio types.
-   *
-   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
-   */
-  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
-
-  function allowedAttribute(attr, allowedAttributeList) {
-    var attrName = attr.nodeName.toLowerCase()
-
-    if ($.inArray(attrName, allowedAttributeList) !== -1) {
-      if ($.inArray(attrName, uriAttrs) !== -1) {
-        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
-      }
-
-      return true
-    }
-
-    var regExp = $(allowedAttributeList).filter(function (index, value) {
-      return value instanceof RegExp
-    })
-
-    // Check if a regular expression validates the attribute.
-    for (var i = 0, l = regExp.length; i < l; i++) {
-      if (attrName.match(regExp[i])) {
-        return true
-      }
-    }
-
-    return false
-  }
-
-  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
-    if (unsafeHtml.length === 0) {
-      return unsafeHtml
-    }
-
-    if (sanitizeFn && typeof sanitizeFn === 'function') {
-      return sanitizeFn(unsafeHtml)
-    }
-
-    // IE 8 and below don't support createHTMLDocument
-    if (!document.implementation || !document.implementation.createHTMLDocument) {
-      return unsafeHtml
-    }
-
-    var createdDocument = document.implementation.createHTMLDocument('sanitization')
-    createdDocument.body.innerHTML = unsafeHtml
-
-    var whitelistKeys = $.map(whiteList, function (el, i) { return i })
-    var elements = $(createdDocument.body).find('*')
-
-    for (var i = 0, len = elements.length; i < len; i++) {
-      var el = elements[i]
-      var elName = el.nodeName.toLowerCase()
-
-      if ($.inArray(elName, whitelistKeys) === -1) {
-        el.parentNode.removeChild(el)
-
-        continue
-      }
-
-      var attributeList = $.map(el.attributes, function (el) { return el })
-      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
-
-      for (var j = 0, len2 = attributeList.length; j < len2; j++) {
-        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
-          el.removeAttribute(attributeList[j].nodeName)
-        }
-      }
-    }
-
-    return createdDocument.body.innerHTML
-  }
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       = null
-    this.options    = null
-    this.enabled    = null
-    this.timeout    = null
-    this.hoverState = null
-    this.$element   = null
-    this.inState    = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.VERSION  = '3.4.1'
-
-  Tooltip.TRANSITION_DURATION = 150
-
-  Tooltip.DEFAULTS = {
-    animation: true,
-    placement: 'top',
-    selector: false,
-    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-    trigger: 'hover focus',
-    title: '',
-    delay: 0,
-    html: false,
-    container: false,
-    viewport: {
-      selector: 'body',
-      padding: 0
-    },
-    sanitize : true,
-    sanitizeFn : null,
-    whiteList : DefaultWhitelist
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled   = true
-    this.type      = type
-    this.$element  = $(element)
-    this.options   = this.getOptions(options)
-    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
-    this.inState   = { click: false, hover: false, focus: false }
-
-    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
-      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
-    }
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    var dataAttributes = this.$element.data()
-
-    for (var dataAttr in dataAttributes) {
-      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
-        delete dataAttributes[dataAttr]
-      }
-    }
-
-    options = $.extend({}, this.getDefaults(), dataAttributes, options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay,
-        hide: options.delay
-      }
-    }
-
-    if (options.sanitize) {
-      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    if (obj instanceof $.Event) {
-      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
-    }
-
-    if (self.tip().hasClass('in') || self.hoverState == 'in') {
-      self.hoverState = 'in'
-      return
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.isInStateTrue = function () {
-    for (var key in this.inState) {
-      if (this.inState[key]) return true
-    }
-
-    return false
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    if (obj instanceof $.Event) {
-      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
-    }
-
-    if (self.isInStateTrue()) return
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.' + this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
-      if (e.isDefaultPrevented() || !inDom) return
-      var that = this
-
-      var $tip = this.tip()
-
-      var tipId = this.getUID(this.type)
-
-      this.setContent()
-      $tip.attr('id', tipId)
-      this.$element.attr('aria-describedby', tipId)
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-        .data('bs.' + this.type, this)
-
-      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
-      this.$element.trigger('inserted.bs.' + this.type)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var orgPlacement = placement
-        var viewportDim = this.getPosition(this.$viewport)
-
-        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
-                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
-                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
-                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-
-      var complete = function () {
-        var prevHoverState = that.hoverState
-        that.$element.trigger('shown.bs.' + that.type)
-        that.hoverState = null
-
-        if (prevHoverState == 'out') that.leave(that)
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        $tip
-          .one('bsTransitionEnd', complete)
-          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-        complete()
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function (offset, placement) {
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  += marginTop
-    offset.left += marginLeft
-
-    // $.fn.offset doesn't round pixel values
-    // so we use setOffset directly with our own function B-0
-    $.offset.setOffset($tip[0], $.extend({
-      using: function (props) {
-        $tip.css({
-          top: Math.round(props.top),
-          left: Math.round(props.left)
-        })
-      }
-    }, offset), 0)
-
-    $tip.addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      offset.top = offset.top + height - actualHeight
-    }
-
-    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
-
-    if (delta.left) offset.left += delta.left
-    else offset.top += delta.top
-
-    var isVertical          = /top|bottom/.test(placement)
-    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
-    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
-
-    $tip.offset(offset)
-    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
-  }
-
-  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
-    this.arrow()
-      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
-      .css(isVertical ? 'top' : 'left', '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    if (this.options.html) {
-      if (this.options.sanitize) {
-        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
-      }
-
-      $tip.find('.tooltip-inner').html(title)
-    } else {
-      $tip.find('.tooltip-inner').text(title)
-    }
-
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function (callback) {
-    var that = this
-    var $tip = $(this.$tip)
-    var e    = $.Event('hide.bs.' + this.type)
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
-        that.$element
-          .removeAttr('aria-describedby')
-          .trigger('hidden.bs.' + that.type)
-      }
-      callback && callback()
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && $tip.hasClass('fade') ?
-      $tip
-        .one('bsTransitionEnd', complete)
-        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-      complete()
-
-    this.hoverState = null
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function ($element) {
-    $element   = $element || this.$element
-
-    var el     = $element[0]
-    var isBody = el.tagName == 'BODY'
-
-    var elRect    = el.getBoundingClientRect()
-    if (elRect.width == null) {
-      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
-      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
-    }
-    var isSvg = window.SVGElement && el instanceof window.SVGElement
-    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
-    // See https://github.com/twbs/bootstrap/issues/20280
-    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
-    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
-    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
-
-    return $.extend({}, elRect, scroll, outerDims, elOffset)
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
-
-  }
-
-  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
-    var delta = { top: 0, left: 0 }
-    if (!this.$viewport) return delta
-
-    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
-    var viewportDimensions = this.getPosition(this.$viewport)
-
-    if (/right|left/.test(placement)) {
-      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
-      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
-      if (topEdgeOffset < viewportDimensions.top) { // top overflow
-        delta.top = viewportDimensions.top - topEdgeOffset
-      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
-        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
-      }
-    } else {
-      var leftEdgeOffset  = pos.left - viewportPadding
-      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
-      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
-        delta.left = viewportDimensions.left - leftEdgeOffset
-      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
-        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
-      }
-    }
-
-    return delta
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.getUID = function (prefix) {
-    do prefix += ~~(Math.random() * 1000000)
-    while (document.getElementById(prefix))
-    return prefix
-  }
-
-  Tooltip.prototype.tip = function () {
-    if (!this.$tip) {
-      this.$tip = $(this.options.template)
-      if (this.$tip.length != 1) {
-        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
-      }
-    }
-    return this.$tip
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = this
-    if (e) {
-      self = $(e.currentTarget).data('bs.' + this.type)
-      if (!self) {
-        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
-        $(e.currentTarget).data('bs.' + this.type, self)
-      }
-    }
-
-    if (e) {
-      self.inState.click = !self.inState.click
-      if (self.isInStateTrue()) self.enter(self)
-      else self.leave(self)
-    } else {
-      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-    }
-  }
-
-  Tooltip.prototype.destroy = function () {
-    var that = this
-    clearTimeout(this.timeout)
-    this.hide(function () {
-      that.$element.off('.' + that.type).removeData('bs.' + that.type)
-      if (that.$tip) {
-        that.$tip.detach()
-      }
-      that.$tip = null
-      that.$arrow = null
-      that.$viewport = null
-      that.$element = null
-    })
-  }
-
-  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
-    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
-  }
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.tooltip')
-      var options = typeof option == 'object' && option
-
-      if (!data && /destroy|hide/.test(option)) return
-      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip             = Plugin
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/js/transition.js
===================================================================
--- trip-planner-front/node_modules/bootstrap/js/transition.js	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,59 +1,0 @@
-/* ========================================================================
- * Bootstrap: transition.js v3.4.1
- * https://getbootstrap.com/docs/3.4/javascript/#transitions
- * ========================================================================
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      WebkitTransition : 'webkitTransitionEnd',
-      MozTransition    : 'transitionend',
-      OTransition      : 'oTransitionEnd otransitionend',
-      transition       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-
-    return false // explicit for ie8 (  ._.)
-  }
-
-  // https://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false
-    var $el = this
-    $(this).one('bsTransitionEnd', function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-
-    if (!$.support.transition) return
-
-    $.event.special.bsTransitionEnd = {
-      bindType: $.support.transition.end,
-      delegateType: $.support.transition.end,
-      handle: function (e) {
-        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
-      }
-    }
-  })
-
-}(jQuery);
Index: trip-planner-front/node_modules/bootstrap/less/alerts.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/alerts.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,73 +1,0 @@
-//
-// Alerts
-// --------------------------------------------------
-
-
-// Base styles
-// -------------------------
-
-.alert {
-  padding: @alert-padding;
-  margin-bottom: @line-height-computed;
-  border: 1px solid transparent;
-  border-radius: @alert-border-radius;
-
-  // Headings for larger alerts
-  h4 {
-    margin-top: 0;
-    color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color
-  }
-
-  // Provide class for links that match alerts
-  .alert-link {
-    font-weight: @alert-link-font-weight;
-  }
-
-  // Improve alignment and spacing of inner content
-  > p,
-  > ul {
-    margin-bottom: 0;
-  }
-
-  > p + p {
-    margin-top: 5px;
-  }
-}
-
-// Dismissible alerts
-//
-// Expand the right padding and account for the close button's positioning.
-
-// The misspelled .alert-dismissable was deprecated in 3.2.0.
-.alert-dismissable,
-.alert-dismissible {
-  padding-right: (@alert-padding + 20);
-
-  // Adjust close link position
-  .close {
-    position: relative;
-    top: -2px;
-    right: -21px;
-    color: inherit;
-  }
-}
-
-// Alternate styles
-//
-// Generate contextual modifier classes for colorizing the alert.
-
-.alert-success {
-  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);
-}
-
-.alert-info {
-  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);
-}
-
-.alert-warning {
-  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);
-}
-
-.alert-danger {
-  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);
-}
Index: trip-planner-front/node_modules/bootstrap/less/badges.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/badges.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//
-// Badges
-// --------------------------------------------------
-
-
-// Base class
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: @font-size-small;
-  font-weight: @badge-font-weight;
-  line-height: @badge-line-height;
-  color: @badge-color;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  background-color: @badge-bg;
-  border-radius: @badge-border-radius;
-
-  // Empty badges collapse automatically (not available in IE8)
-  &:empty {
-    display: none;
-  }
-
-  // Quick fix for badges in buttons
-  .btn & {
-    position: relative;
-    top: -1px;
-  }
-
-  .btn-xs &,
-  .btn-group-xs > .btn & {
-    top: 0;
-    padding: 1px 5px;
-  }
-
-  // Hover state, but only for links
-  a& {
-    &:hover,
-    &:focus {
-      color: @badge-link-hover-color;
-      text-decoration: none;
-      cursor: pointer;
-    }
-  }
-
-  // Account for badges in navs
-  .list-group-item.active > &,
-  .nav-pills > .active > a > & {
-    color: @badge-active-color;
-    background-color: @badge-active-bg;
-  }
-
-  .list-group-item > & {
-    float: right;
-  }
-
-  .list-group-item > & + & {
-    margin-right: 5px;
-  }
-
-  .nav-pills > li > a > & {
-    margin-left: 3px;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/bootstrap.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/bootstrap.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-// Core variables and mixins
-@import "variables.less";
-@import "mixins.less";
-
-// Reset and dependencies
-@import "normalize.less";
-@import "print.less";
-@import "glyphicons.less";
-
-// Core CSS
-@import "scaffolding.less";
-@import "type.less";
-@import "code.less";
-@import "grid.less";
-@import "tables.less";
-@import "forms.less";
-@import "buttons.less";
-
-// Components
-@import "component-animations.less";
-@import "dropdowns.less";
-@import "button-groups.less";
-@import "input-groups.less";
-@import "navs.less";
-@import "navbar.less";
-@import "breadcrumbs.less";
-@import "pagination.less";
-@import "pager.less";
-@import "labels.less";
-@import "badges.less";
-@import "jumbotron.less";
-@import "thumbnails.less";
-@import "alerts.less";
-@import "progress-bars.less";
-@import "media.less";
-@import "list-group.less";
-@import "panels.less";
-@import "responsive-embed.less";
-@import "wells.less";
-@import "close.less";
-
-// Components w/ JavaScript
-@import "modals.less";
-@import "tooltip.less";
-@import "popovers.less";
-@import "carousel.less";
-
-// Utility classes
-@import "utilities.less";
-@import "responsive-utilities.less";
Index: trip-planner-front/node_modules/bootstrap/less/breadcrumbs.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/breadcrumbs.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,26 +1,0 @@
-//
-// Breadcrumbs
-// --------------------------------------------------
-
-
-.breadcrumb {
-  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
-  margin-bottom: @line-height-computed;
-  list-style: none;
-  background-color: @breadcrumb-bg;
-  border-radius: @border-radius-base;
-
-  > li {
-    display: inline-block;
-
-    + li:before {
-      padding: 0 5px;
-      color: @breadcrumb-color;
-      content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
-    }
-  }
-
-  > .active {
-    color: @breadcrumb-active-color;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/button-groups.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/button-groups.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,246 +1,0 @@
-// stylelint-disable selector-no-qualifying-type */
-
-//
-// Button groups
-// --------------------------------------------------
-
-// Make the div behave like a button
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle; // match .btn alignment given font-size hack above
-  > .btn {
-    position: relative;
-    float: left;
-    // Bring the "active" button to the front
-    &:hover,
-    &:focus,
-    &:active,
-    &.active {
-      z-index: 2;
-    }
-  }
-}
-
-// Prevent double borders when buttons are next to each other
-.btn-group {
-  .btn + .btn,
-  .btn + .btn-group,
-  .btn-group + .btn,
-  .btn-group + .btn-group {
-    margin-left: -1px;
-  }
-}
-
-// Optional: Group multiple button groups together for a toolbar
-.btn-toolbar {
-  margin-left: -5px; // Offset the first child's margin
-  &:extend(.clearfix all);
-
-  .btn,
-  .btn-group,
-  .input-group {
-    float: left;
-  }
-  > .btn,
-  > .btn-group,
-  > .input-group {
-    margin-left: 5px;
-  }
-}
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-
-// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  &:not(:last-child):not(.dropdown-toggle) {
-    .border-right-radius(0);
-  }
-}
-// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  .border-left-radius(0);
-}
-
-// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
-.btn-group > .btn-group {
-  float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group > .btn-group:first-child:not(:last-child) {
-  > .btn:last-child,
-  > .dropdown-toggle {
-    .border-right-radius(0);
-  }
-}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  .border-left-radius(0);
-}
-
-// On active and open, don't show outline
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-
-// Sizing
-//
-// Remix the default button sizing classes into new ones for easier manipulation.
-
-.btn-group-xs > .btn { &:extend(.btn-xs); }
-.btn-group-sm > .btn { &:extend(.btn-sm); }
-.btn-group-lg > .btn { &:extend(.btn-lg); }
-
-
-// Split button dropdowns
-// ----------------------
-
-// Give the line between buttons some depth
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-
-// The clickable button for toggling the menu
-// Remove the gradient and set the same inset shadow as the :active state
-.btn-group.open .dropdown-toggle {
-  .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
-
-  // Show no shadow for `.btn-link` since it has no other button styles.
-  &.btn-link {
-    .box-shadow(none);
-  }
-}
-
-
-// Reposition the caret
-.btn .caret {
-  margin-left: 0;
-}
-// Carets in other button sizes
-.btn-lg .caret {
-  border-width: @caret-width-large @caret-width-large 0;
-  border-bottom-width: 0;
-}
-// Upside down carets for .dropup
-.dropup .btn-lg .caret {
-  border-width: 0 @caret-width-large @caret-width-large;
-}
-
-
-// Vertical button groups
-// ----------------------
-
-.btn-group-vertical {
-  > .btn,
-  > .btn-group,
-  > .btn-group > .btn {
-    display: block;
-    float: none;
-    width: 100%;
-    max-width: 100%;
-  }
-
-  // Clear floats so dropdown menus can be properly placed
-  > .btn-group {
-    &:extend(.clearfix all);
-    > .btn {
-      float: none;
-    }
-  }
-
-  > .btn + .btn,
-  > .btn + .btn-group,
-  > .btn-group + .btn,
-  > .btn-group + .btn-group {
-    margin-top: -1px;
-    margin-left: 0;
-  }
-}
-
-.btn-group-vertical > .btn {
-  &:not(:first-child):not(:last-child) {
-    border-radius: 0;
-  }
-  &:first-child:not(:last-child) {
-    .border-top-radius(@btn-border-radius-base);
-    .border-bottom-radius(0);
-  }
-  &:last-child:not(:first-child) {
-    .border-top-radius(0);
-    .border-bottom-radius(@btn-border-radius-base);
-  }
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) {
-  > .btn:last-child,
-  > .dropdown-toggle {
-    .border-bottom-radius(0);
-  }
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  .border-top-radius(0);
-}
-
-
-// Justified button groups
-// ----------------------
-
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-  > .btn,
-  > .btn-group {
-    display: table-cell;
-    float: none;
-    width: 1%;
-  }
-  > .btn-group .btn {
-    width: 100%;
-  }
-
-  > .btn-group .dropdown-menu {
-    left: auto;
-  }
-}
-
-
-// Checkbox and radio options
-//
-// In order to support the browser's form validation feedback, powered by the
-// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
-// `display: none;` or `visibility: hidden;` as that also hides the popover.
-// Simply visually hiding the inputs via `opacity` would leave them clickable in
-// certain cases which is prevented by using `clip` and `pointer-events`.
-// This way, we ensure a DOM element is visible to position the popover from.
-//
-// See https://github.com/twbs/bootstrap/pull/12794 and
-// https://github.com/twbs/bootstrap/pull/14559 for more information.
-
-[data-toggle="buttons"] {
-  > .btn,
-  > .btn-group > .btn {
-    input[type="radio"],
-    input[type="checkbox"] {
-      position: absolute;
-      clip: rect(0, 0, 0, 0);
-      pointer-events: none;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/buttons.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/buttons.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,168 +1,0 @@
-// stylelint-disable selector-no-qualifying-type
-
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-.btn {
-  display: inline-block;
-  margin-bottom: 0; // For input.btn
-  font-weight: @btn-font-weight;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: 1px solid transparent;
-  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
-  .user-select(none);
-
-  &,
-  &:active,
-  &.active {
-    &:focus,
-    &.focus {
-      .tab-focus();
-    }
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    color: @btn-default-color;
-    text-decoration: none;
-  }
-
-  &:active,
-  &.active {
-    background-image: none;
-    outline: 0;
-    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    .opacity(.65);
-    .box-shadow(none);
-  }
-
-  a& {
-    &.disabled,
-    fieldset[disabled] & {
-      pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
-    }
-  }
-}
-
-
-// Alternate buttons
-// --------------------------------------------------
-
-.btn-default {
-  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);
-}
-.btn-primary {
-  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);
-}
-// Success appears as green
-.btn-success {
-  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);
-}
-// Info appears as blue-green
-.btn-info {
-  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);
-}
-// Warning appears as orange
-.btn-warning {
-  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);
-}
-// Danger and error appear as red
-.btn-danger {
-  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);
-}
-
-
-// Link buttons
-// -------------------------
-
-// Make a button look and behave like a link
-.btn-link {
-  font-weight: 400;
-  color: @link-color;
-  border-radius: 0;
-
-  &,
-  &:active,
-  &.active,
-  &[disabled],
-  fieldset[disabled] & {
-    background-color: transparent;
-    .box-shadow(none);
-  }
-  &,
-  &:hover,
-  &:focus,
-  &:active {
-    border-color: transparent;
-  }
-  &:hover,
-  &:focus {
-    color: @link-hover-color;
-    text-decoration: @link-hover-decoration;
-    background-color: transparent;
-  }
-  &[disabled],
-  fieldset[disabled] & {
-    &:hover,
-    &:focus {
-      color: @btn-link-disabled-color;
-      text-decoration: none;
-    }
-  }
-}
-
-
-// Button Sizes
-// --------------------------------------------------
-
-.btn-lg {
-  // line-height: ensure even-numbered height of button next to large input
-  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
-}
-.btn-sm {
-  // line-height: ensure proper height of button next to small input
-  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
-}
-.btn-xs {
-  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
-}
-
-
-// Block button
-// --------------------------------------------------
-
-.btn-block {
-  display: block;
-  width: 100%;
-}
-
-// Vertically space out multiple block buttons
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-// Specificity overrides
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
-  &.btn-block {
-    width: 100%;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/carousel.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/carousel.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,273 +1,0 @@
-// stylelint-disable media-feature-name-no-unknown
-
-//
-// Carousel
-// --------------------------------------------------
-
-
-// Wrapper for the slide container and indicators
-.carousel {
-  position: relative;
-}
-
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-
-  > .item {
-    position: relative;
-    display: none;
-    .transition(.6s ease-in-out left);
-
-    // Account for jankitude on images
-    > img,
-    > a > img {
-      &:extend(.img-responsive);
-      line-height: 1;
-    }
-
-    // WebKit CSS3 transforms for supported devices
-    @media all and (transform-3d), (-webkit-transform-3d) {
-      .transition-transform(~"0.6s ease-in-out");
-      .backface-visibility(~"hidden");
-      .perspective(1000px);
-
-      &.next,
-      &.active.right {
-        .translate3d(100%, 0, 0);
-        left: 0;
-      }
-      &.prev,
-      &.active.left {
-        .translate3d(-100%, 0, 0);
-        left: 0;
-      }
-      &.next.left,
-      &.prev.right,
-      &.active {
-        .translate3d(0, 0, 0);
-        left: 0;
-      }
-    }
-  }
-
-  > .active,
-  > .next,
-  > .prev {
-    display: block;
-  }
-
-  > .active {
-    left: 0;
-  }
-
-  > .next,
-  > .prev {
-    position: absolute;
-    top: 0;
-    width: 100%;
-  }
-
-  > .next {
-    left: 100%;
-  }
-  > .prev {
-    left: -100%;
-  }
-  > .next.left,
-  > .prev.right {
-    left: 0;
-  }
-
-  > .active.left {
-    left: -100%;
-  }
-  > .active.right {
-    left: 100%;
-  }
-
-}
-
-// Left/right controls for nav
-// ---------------------------
-
-.carousel-control {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: @carousel-control-width;
-  font-size: @carousel-control-font-size;
-  color: @carousel-control-color;
-  text-align: center;
-  text-shadow: @carousel-text-shadow;
-  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
-  .opacity(@carousel-control-opacity);
-  // We can't have this transition here because WebKit cancels the carousel
-  // animation if you trip this while in the middle of another animation.
-
-  // Set gradients for backgrounds
-  &.left {
-    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .5); @end-color: rgba(0, 0, 0, .0001));
-  }
-  &.right {
-    right: 0;
-    left: auto;
-    #gradient > .horizontal(@start-color: rgba(0, 0, 0, .0001); @end-color: rgba(0, 0, 0, .5));
-  }
-
-  // Hover/focus state
-  &:hover,
-  &:focus {
-    color: @carousel-control-color;
-    text-decoration: none;
-    outline: 0;
-    .opacity(.9);
-  }
-
-  // Toggles
-  .icon-prev,
-  .icon-next,
-  .glyphicon-chevron-left,
-  .glyphicon-chevron-right {
-    position: absolute;
-    top: 50%;
-    z-index: 5;
-    display: inline-block;
-    margin-top: -10px;
-  }
-  .icon-prev,
-  .glyphicon-chevron-left {
-    left: 50%;
-    margin-left: -10px;
-  }
-  .icon-next,
-  .glyphicon-chevron-right {
-    right: 50%;
-    margin-right: -10px;
-  }
-  .icon-prev,
-  .icon-next {
-    width: 20px;
-    height: 20px;
-    font-family: serif;
-    line-height: 1;
-  }
-
-  .icon-prev {
-    &:before {
-      content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
-    }
-  }
-  .icon-next {
-    &:before {
-      content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
-    }
-  }
-}
-
-// Optional indicator pips
-//
-// Add an unordered list with the following class and add a list item for each
-// slide your carousel holds.
-
-.carousel-indicators {
-  position: absolute;
-  bottom: 10px;
-  left: 50%;
-  z-index: 15;
-  width: 60%;
-  padding-left: 0;
-  margin-left: -30%;
-  text-align: center;
-  list-style: none;
-
-  li {
-    display: inline-block;
-    width: 10px;
-    height: 10px;
-    margin: 1px;
-    text-indent: -999px;
-    cursor: pointer;
-    // IE8-9 hack for event handling
-    //
-    // Internet Explorer 8-9 does not support clicks on elements without a set
-    // `background-color`. We cannot use `filter` since that's not viewed as a
-    // background color by the browser. Thus, a hack is needed.
-    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
-    //
-    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
-    // set alpha transparency for the best results possible.
-    background-color: #000 \9; // IE8
-    background-color: rgba(0, 0, 0, 0); // IE9
-
-    border: 1px solid @carousel-indicator-border-color;
-    border-radius: 10px;
-  }
-
-  .active {
-    width: 12px;
-    height: 12px;
-    margin: 0;
-    background-color: @carousel-indicator-active-bg;
-  }
-}
-
-// Optional captions
-// -----------------------------
-// Hidden by default for smaller viewports
-.carousel-caption {
-  position: absolute;
-  right: 15%;
-  bottom: 20px;
-  left: 15%;
-  z-index: 10;
-  padding-top: 20px;
-  padding-bottom: 20px;
-  color: @carousel-caption-color;
-  text-align: center;
-  text-shadow: @carousel-text-shadow;
-
-  & .btn {
-    text-shadow: none; // No shadow for button elements in carousel-caption
-  }
-}
-
-
-// Scale up controls for tablets and up
-@media screen and (min-width: @screen-sm-min) {
-
-  // Scale up the controls a smidge
-  .carousel-control {
-    .glyphicon-chevron-left,
-    .glyphicon-chevron-right,
-    .icon-prev,
-    .icon-next {
-      width: (@carousel-control-font-size * 1.5);
-      height: (@carousel-control-font-size * 1.5);
-      margin-top: (@carousel-control-font-size / -2);
-      font-size: (@carousel-control-font-size * 1.5);
-    }
-    .glyphicon-chevron-left,
-    .icon-prev {
-      margin-left: (@carousel-control-font-size / -2);
-    }
-    .glyphicon-chevron-right,
-    .icon-next {
-      margin-right: (@carousel-control-font-size / -2);
-    }
-  }
-
-  // Show and left align the captions
-  .carousel-caption {
-    right: 20%;
-    left: 20%;
-    padding-bottom: 30px;
-  }
-
-  // Move up the indicators
-  .carousel-indicators {
-    bottom: 20px;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/close.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/close.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,37 +1,0 @@
-// stylelint-disable property-no-vendor-prefix
-
-//
-// Close icons
-// --------------------------------------------------
-
-
-.close {
-  float: right;
-  font-size: (@font-size-base * 1.5);
-  font-weight: @close-font-weight;
-  line-height: 1;
-  color: @close-color;
-  text-shadow: @close-text-shadow;
-  .opacity(.2);
-
-  &:hover,
-  &:focus {
-    color: @close-color;
-    text-decoration: none;
-    cursor: pointer;
-    .opacity(.5);
-  }
-
-  // Additional properties for button version
-  // iOS requires the button element instead of an anchor tag.
-  // If you want the anchor version, it requires `href="#"`.
-  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
-  button& {
-    padding: 0;
-    cursor: pointer;
-    background: transparent;
-    border: 0;
-    -webkit-appearance: none;
-    appearance: none;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/code.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/code.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//
-// Code (inline and block)
-// --------------------------------------------------
-
-
-// Inline and block code styles
-code,
-kbd,
-pre,
-samp {
-  font-family: @font-family-monospace;
-}
-
-// Inline code
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: @code-color;
-  background-color: @code-bg;
-  border-radius: @border-radius-base;
-}
-
-// User input typically entered via keyboard
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: @kbd-color;
-  background-color: @kbd-bg;
-  border-radius: @border-radius-small;
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-
-  kbd {
-    padding: 0;
-    font-size: 100%;
-    font-weight: 700;
-    box-shadow: none;
-  }
-}
-
-// Blocks of code
-pre {
-  display: block;
-  padding: ((@line-height-computed - 1) / 2);
-  margin: 0 0 (@line-height-computed / 2);
-  font-size: (@font-size-base - 1); // 14px to 13px
-  line-height: @line-height-base;
-  color: @pre-color;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: @pre-bg;
-  border: 1px solid @pre-border-color;
-  border-radius: @border-radius-base;
-
-  // Account for some code outputs that place code tags in pre tags
-  code {
-    padding: 0;
-    font-size: inherit;
-    color: inherit;
-    white-space: pre-wrap;
-    background-color: transparent;
-    border-radius: 0;
-  }
-}
-
-// Enable scrollable blocks of code
-.pre-scrollable {
-  max-height: @pre-scrollable-max-height;
-  overflow-y: scroll;
-}
Index: trip-planner-front/node_modules/bootstrap/less/component-animations.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/component-animations.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,36 +1,0 @@
-// stylelint-disable selector-no-qualifying-type
-
-//
-// Component animations
-// --------------------------------------------------
-
-// Heads up!
-//
-// We don't use the `.opacity()` mixin here since it causes a bug with text
-// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
-
-.fade {
-  opacity: 0;
-  .transition(opacity .15s linear);
-
-  &.in {
-    opacity: 1;
-  }
-}
-
-.collapse {
-  display: none;
-
-  &.in      { display: block; }
-  tr&.in    { display: table-row; }
-  tbody&.in { display: table-row-group; }
-}
-
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  .transition-property(~"height, visibility");
-  .transition-duration(.35s);
-  .transition-timing-function(ease);
-}
Index: trip-planner-front/node_modules/bootstrap/less/dropdowns.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/dropdowns.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,213 +1,0 @@
-//
-// Dropdown menus
-// --------------------------------------------------
-
-
-// Dropdown arrow/caret
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: @caret-width-base dashed;
-  border-top: @caret-width-base solid ~"\9"; // IE8
-  border-right: @caret-width-base solid transparent;
-  border-left: @caret-width-base solid transparent;
-}
-
-// The dropdown wrapper (div)
-.dropup,
-.dropdown {
-  position: relative;
-}
-
-// Prevent the focus on the dropdown toggle when closing dropdowns
-.dropdown-toggle:focus {
-  outline: 0;
-}
-
-// The dropdown menu (ul)
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: @zindex-dropdown;
-  display: none; // none by default, but block on "open" of the menu
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0; // override default ul
-  font-size: @font-size-base;
-  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
-  list-style: none;
-  background-color: @dropdown-bg;
-  background-clip: padding-box;
-  border: 1px solid @dropdown-fallback-border; // IE8 fallback
-  border: 1px solid @dropdown-border;
-  border-radius: @border-radius-base;
-  .box-shadow(0 6px 12px rgba(0, 0, 0, .175));
-
-  // Aligns the dropdown menu to right
-  //
-  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
-  &.pull-right {
-    right: 0;
-    left: auto;
-  }
-
-  // Dividers (basically an hr) within the dropdown
-  .divider {
-    .nav-divider(@dropdown-divider-bg);
-  }
-
-  // Links within the dropdown menu
-  > li > a {
-    display: block;
-    padding: 3px 20px;
-    clear: both;
-    font-weight: 400;
-    line-height: @line-height-base;
-    color: @dropdown-link-color;
-    white-space: nowrap; // prevent links from randomly breaking onto new lines
-
-    &:hover,
-    &:focus {
-      color: @dropdown-link-hover-color;
-      text-decoration: none;
-      background-color: @dropdown-link-hover-bg;
-    }
-  }
-}
-
-// Active state
-.dropdown-menu > .active > a {
-  &,
-  &:hover,
-  &:focus {
-    color: @dropdown-link-active-color;
-    text-decoration: none;
-    background-color: @dropdown-link-active-bg;
-    outline: 0;
-  }
-}
-
-// Disabled state
-//
-// Gray out text and ensure the hover/focus state remains gray
-
-.dropdown-menu > .disabled > a {
-  &,
-  &:hover,
-  &:focus {
-    color: @dropdown-link-disabled-color;
-  }
-
-  // Nuke hover/focus effects
-  &:hover,
-  &:focus {
-    text-decoration: none;
-    cursor: @cursor-disabled;
-    background-color: transparent;
-    background-image: none; // Remove CSS gradient
-    .reset-filter();
-  }
-}
-
-// Open state for the dropdown
-.open {
-  // Show the menu
-  > .dropdown-menu {
-    display: block;
-  }
-
-  // Remove the outline when :focus is triggered
-  > a {
-    outline: 0;
-  }
-}
-
-// Menu positioning
-//
-// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
-// menu with the parent.
-.dropdown-menu-right {
-  right: 0;
-  left: auto; // Reset the default from `.dropdown-menu`
-}
-// With v3, we enabled auto-flipping if you have a dropdown within a right
-// aligned nav component. To enable the undoing of that, we provide an override
-// to restore the default dropdown menu alignment.
-//
-// This is only for left-aligning a dropdown menu within a `.navbar-right` or
-// `.pull-right` nav component.
-.dropdown-menu-left {
-  right: auto;
-  left: 0;
-}
-
-// Dropdown section headers
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: @font-size-small;
-  line-height: @line-height-base;
-  color: @dropdown-header-color;
-  white-space: nowrap; // as with > li > a
-}
-
-// Backdrop to catch body clicks on mobile, etc.
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: (@zindex-dropdown - 10);
-}
-
-// Right aligned dropdowns
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-//
-// Just add .dropup after the standard .dropdown class and you're set, bro.
-// TODO: abstract this so that the navbar fixed styles are not placed here?
-
-.dropup,
-.navbar-fixed-bottom .dropdown {
-  // Reverse the caret
-  .caret {
-    content: "";
-    border-top: 0;
-    border-bottom: @caret-width-base dashed;
-    border-bottom: @caret-width-base solid ~"\9"; // IE8
-  }
-  // Different positioning for bottom up menu
-  .dropdown-menu {
-    top: auto;
-    bottom: 100%;
-    margin-bottom: 2px;
-  }
-}
-
-
-// Component alignment
-//
-// Reiterate per navbar.less and the modified component alignment there.
-
-@media (min-width: @grid-float-breakpoint) {
-  .navbar-right {
-    .dropdown-menu {
-      .dropdown-menu-right();
-    }
-    // Necessary for overrides of the default right aligned menu.
-    // Will remove come v4 in all likelihood.
-    .dropdown-menu-left {
-      .dropdown-menu-left();
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/forms.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/forms.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,605 +1,0 @@
-// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix
-
-//
-// Forms
-// --------------------------------------------------
-
-
-// Normalize non-controls
-//
-// Restyle and baseline non-control form elements.
-
-fieldset {
-  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
-  // so we reset that to ensure it behaves more like a standard block element.
-  // See https://github.com/twbs/bootstrap/issues/12359.
-  min-width: 0;
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: @line-height-computed;
-  font-size: (@font-size-base * 1.5);
-  line-height: inherit;
-  color: @legend-color;
-  border: 0;
-  border-bottom: 1px solid @legend-border-color;
-}
-
-label {
-  display: inline-block;
-  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
-  margin-bottom: 5px;
-  font-weight: 700;
-}
-
-
-// Normalize form controls
-//
-// While most of our form styles require extra classes, some basic normalization
-// is required to ensure optimum display with or without those classes to better
-// address browser inconsistencies.
-
-input[type="search"] {
-  // Override content-box in Normalize (* isn't specific enough)
-  .box-sizing(border-box);
-
-  // Search inputs in iOS
-  //
-  // This overrides the extra rounded corners on search inputs in iOS so that our
-  // `.form-control` class can properly style them. Note that this cannot simply
-  // be added to `.form-control` as it's not specific enough. For details, see
-  // https://github.com/twbs/bootstrap/issues/11586.
-  -webkit-appearance: none;
-  appearance: none;
-}
-
-// Position radios and checkboxes better
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9; // IE8-9
-  line-height: normal;
-
-  // Apply same disabled cursor tweak as for inputs
-  // Some special care is needed because <label>s don't inherit their parent's `cursor`.
-  //
-  // Note: Neither radios nor checkboxes can be readonly.
-  &[disabled],
-  &.disabled,
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-  }
-}
-
-input[type="file"] {
-  display: block;
-}
-
-// Make range inputs behave like textual form controls
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-
-// Make multiple select elements height not fixed
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-// Focus for file, radio, and checkbox
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  .tab-focus();
-}
-
-// Adjust output element
-output {
-  display: block;
-  padding-top: (@padding-base-vertical + 1);
-  font-size: @font-size-base;
-  line-height: @line-height-base;
-  color: @input-color;
-}
-
-
-// Common form controls
-//
-// Shared size and type resets for form controls. Apply `.form-control` to any
-// of the following form controls:
-//
-// select
-// textarea
-// input[type="text"]
-// input[type="password"]
-// input[type="datetime"]
-// input[type="datetime-local"]
-// input[type="date"]
-// input[type="month"]
-// input[type="time"]
-// input[type="week"]
-// input[type="number"]
-// input[type="email"]
-// input[type="url"]
-// input[type="search"]
-// input[type="tel"]
-// input[type="color"]
-
-.form-control {
-  display: block;
-  width: 100%;
-  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
-  padding: @padding-base-vertical @padding-base-horizontal;
-  font-size: @font-size-base;
-  line-height: @line-height-base;
-  color: @input-color;
-  background-color: @input-bg;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: 1px solid @input-border;
-  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
-  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));
-  .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
-
-  // Customize the `:focus` state to imitate native WebKit styles.
-  .form-control-focus();
-
-  // Placeholder
-  .placeholder();
-
-  // Unstyle the caret on `<select>`s in IE10+.
-  &::-ms-expand {
-    background-color: transparent;
-    border: 0;
-  }
-
-  // Disabled and read-only inputs
-  //
-  // HTML5 says that controls under a fieldset > legend:first-child won't be
-  // disabled if the fieldset is disabled. Due to implementation difficulty, we
-  // don't honor that edge case; we style them as disabled anyway.
-  &[disabled],
-  &[readonly],
-  fieldset[disabled] & {
-    background-color: @input-bg-disabled;
-    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
-  }
-
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-  }
-
-  // Reset height for `textarea`s
-  textarea& {
-    height: auto;
-  }
-}
-
-
-// Special styles for iOS temporal inputs
-//
-// In Mobile Safari, setting `display: block` on temporal inputs causes the
-// text within the input to become vertically misaligned. As a workaround, we
-// set a pixel line-height that matches the given height of the input, but only
-// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
-//
-// Note that as of 9.3, iOS doesn't support `week`.
-
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
-  input[type="date"],
-  input[type="time"],
-  input[type="datetime-local"],
-  input[type="month"] {
-    &.form-control {
-      line-height: @input-height-base;
-    }
-
-    &.input-sm,
-    .input-group-sm & {
-      line-height: @input-height-small;
-    }
-
-    &.input-lg,
-    .input-group-lg & {
-      line-height: @input-height-large;
-    }
-  }
-}
-
-
-// Form groups
-//
-// Designed to help with the organization and spacing of vertical forms. For
-// horizontal forms, use the predefined grid classes.
-
-.form-group {
-  margin-bottom: @form-group-margin-bottom;
-}
-
-
-// Checkboxes and radios
-//
-// Indent the labels to position radios/checkboxes as hanging controls.
-
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  margin-top: 10px;
-  margin-bottom: 10px;
-
-  // These are used on elements with <label> descendants
-  &.disabled,
-  fieldset[disabled] & {
-    label {
-      cursor: @cursor-disabled;
-    }
-  }
-
-  label {
-    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text
-    padding-left: 20px;
-    margin-bottom: 0;
-    font-weight: 400;
-    cursor: pointer;
-  }
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 4px \9;
-  margin-left: -20px;
-}
-
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
-}
-
-// Radios and checkboxes on same line
-.radio-inline,
-.checkbox-inline {
-  position: relative;
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: 400;
-  vertical-align: middle;
-  cursor: pointer;
-
-  // These are used directly on <label>s
-  &.disabled,
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-  }
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px; // space out consecutive inline controls
-}
-
-
-// Static form control text
-//
-// Apply class to a `p` element to make any string of text align with labels in
-// a horizontal form layout.
-
-.form-control-static {
-  min-height: (@line-height-computed + @font-size-base);
-  // Size it appropriately next to real form controls
-  padding-top: (@padding-base-vertical + 1);
-  padding-bottom: (@padding-base-vertical + 1);
-  // Remove default margin from `p`
-  margin-bottom: 0;
-
-  &.input-lg,
-  &.input-sm {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-
-
-// Form control sizing
-//
-// Build on `.form-control` with modifier classes to decrease or increase the
-// height and font-size of form controls.
-//
-// The `.form-group-* form-control` variations are sadly duplicated to avoid the
-// issue documented in https://github.com/twbs/bootstrap/issues/15074.
-
-.input-sm {
-  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
-}
-.form-group-sm {
-  .form-control {
-    height: @input-height-small;
-    padding: @padding-small-vertical @padding-small-horizontal;
-    font-size: @font-size-small;
-    line-height: @line-height-small;
-    border-radius: @input-border-radius-small;
-  }
-  select.form-control {
-    height: @input-height-small;
-    line-height: @input-height-small;
-  }
-  textarea.form-control,
-  select[multiple].form-control {
-    height: auto;
-  }
-  .form-control-static {
-    height: @input-height-small;
-    min-height: (@line-height-computed + @font-size-small);
-    padding: (@padding-small-vertical + 1) @padding-small-horizontal;
-    font-size: @font-size-small;
-    line-height: @line-height-small;
-  }
-}
-
-.input-lg {
-  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
-}
-.form-group-lg {
-  .form-control {
-    height: @input-height-large;
-    padding: @padding-large-vertical @padding-large-horizontal;
-    font-size: @font-size-large;
-    line-height: @line-height-large;
-    border-radius: @input-border-radius-large;
-  }
-  select.form-control {
-    height: @input-height-large;
-    line-height: @input-height-large;
-  }
-  textarea.form-control,
-  select[multiple].form-control {
-    height: auto;
-  }
-  .form-control-static {
-    height: @input-height-large;
-    min-height: (@line-height-computed + @font-size-large);
-    padding: (@padding-large-vertical + 1) @padding-large-horizontal;
-    font-size: @font-size-large;
-    line-height: @line-height-large;
-  }
-}
-
-
-// Form control feedback states
-//
-// Apply contextual and semantic states to individual form controls.
-
-.has-feedback {
-  // Enable absolute positioning
-  position: relative;
-
-  // Ensure icons don't overlap text
-  .form-control {
-    padding-right: (@input-height-base * 1.25);
-  }
-}
-// Feedback icon (requires .glyphicon classes)
-.form-control-feedback {
-  position: absolute;
-  top: 0;
-  right: 0;
-  z-index: 2; // Ensure icon is above input groups
-  display: block;
-  width: @input-height-base;
-  height: @input-height-base;
-  line-height: @input-height-base;
-  text-align: center;
-  pointer-events: none;
-}
-.input-lg + .form-control-feedback,
-.input-group-lg + .form-control-feedback,
-.form-group-lg .form-control + .form-control-feedback {
-  width: @input-height-large;
-  height: @input-height-large;
-  line-height: @input-height-large;
-}
-.input-sm + .form-control-feedback,
-.input-group-sm + .form-control-feedback,
-.form-group-sm .form-control + .form-control-feedback {
-  width: @input-height-small;
-  height: @input-height-small;
-  line-height: @input-height-small;
-}
-
-// Feedback states
-.has-success {
-  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
-}
-.has-warning {
-  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
-}
-.has-error {
-  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
-}
-
-// Reposition feedback icon if input has visible label above
-.has-feedback label {
-
-  & ~ .form-control-feedback {
-    top: (@line-height-computed + 5); // Height of the `label` and its margin
-  }
-  &.sr-only ~ .form-control-feedback {
-    top: 0;
-  }
-}
-
-
-// Help text
-//
-// Apply to any element you wish to create light text for placement immediately
-// below a form control. Use for general help, formatting, or instructional text.
-
-.help-block {
-  display: block; // account for any element using help-block
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: lighten(@text-color, 25%); // lighten the text some for contrast
-}
-
-
-// Inline forms
-//
-// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
-// forms begin stacked on extra small (mobile) devices and then go inline when
-// viewports reach <768px.
-//
-// Requires wrapping inputs and labels with `.form-group` for proper display of
-// default HTML form controls and our custom form controls (e.g., input groups).
-//
-// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
-
-.form-inline {
-
-  // Kick in the inline
-  @media (min-width: @screen-sm-min) {
-    // Inline-block all the things for "inline"
-    .form-group {
-      display: inline-block;
-      margin-bottom: 0;
-      vertical-align: middle;
-    }
-
-    // In navbar-form, allow folks to *not* use `.form-group`
-    .form-control {
-      display: inline-block;
-      width: auto; // Prevent labels from stacking above inputs in `.form-group`
-      vertical-align: middle;
-    }
-
-    // Make static controls behave like regular ones
-    .form-control-static {
-      display: inline-block;
-    }
-
-    .input-group {
-      display: inline-table;
-      vertical-align: middle;
-
-      .input-group-addon,
-      .input-group-btn,
-      .form-control {
-        width: auto;
-      }
-    }
-
-    // Input groups need that 100% width though
-    .input-group > .form-control {
-      width: 100%;
-    }
-
-    .control-label {
-      margin-bottom: 0;
-      vertical-align: middle;
-    }
-
-    // Remove default margin on radios/checkboxes that were used for stacking, and
-    // then undo the floating of radios and checkboxes to match.
-    .radio,
-    .checkbox {
-      display: inline-block;
-      margin-top: 0;
-      margin-bottom: 0;
-      vertical-align: middle;
-
-      label {
-        padding-left: 0;
-      }
-    }
-    .radio input[type="radio"],
-    .checkbox input[type="checkbox"] {
-      position: relative;
-      margin-left: 0;
-    }
-
-    // Re-override the feedback icon.
-    .has-feedback .form-control-feedback {
-      top: 0;
-    }
-  }
-}
-
-
-// Horizontal forms
-//
-// Horizontal forms are built on grid classes and allow you to create forms with
-// labels on the left and inputs on the right.
-
-.form-horizontal {
-
-  // Consistent vertical alignment of radios and checkboxes
-  //
-  // Labels also get some reset styles, but that is scoped to a media query below.
-  .radio,
-  .checkbox,
-  .radio-inline,
-  .checkbox-inline {
-    padding-top: (@padding-base-vertical + 1); // Default padding plus a border
-    margin-top: 0;
-    margin-bottom: 0;
-  }
-  // Account for padding we're adding to ensure the alignment and of help text
-  // and other content below items
-  .radio,
-  .checkbox {
-    min-height: (@line-height-computed + (@padding-base-vertical + 1));
-  }
-
-  // Make form groups behave like rows
-  .form-group {
-    .make-row();
-  }
-
-  // Reset spacing and right align labels, but scope to media queries so that
-  // labels on narrow viewports stack the same as a default form example.
-  @media (min-width: @screen-sm-min) {
-    .control-label {
-      padding-top: (@padding-base-vertical + 1); // Default padding plus a border
-      margin-bottom: 0;
-      text-align: right;
-    }
-  }
-
-  // Validation states
-  //
-  // Reposition the icon because it's now within a grid column and columns have
-  // `position: relative;` on them. Also accounts for the grid gutter padding.
-  .has-feedback .form-control-feedback {
-    right: floor((@grid-gutter-width / 2));
-  }
-
-  // Form group sizes
-  //
-  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
-  // inputs and labels within a `.form-group`.
-  .form-group-lg {
-    @media (min-width: @screen-sm-min) {
-      .control-label {
-        padding-top: (@padding-large-vertical + 1);
-        font-size: @font-size-large;
-      }
-    }
-  }
-  .form-group-sm {
-    @media (min-width: @screen-sm-min) {
-      .control-label {
-        padding-top: (@padding-small-vertical + 1);
-        font-size: @font-size-small;
-      }
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/glyphicons.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/glyphicons.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,307 +1,0 @@
-// stylelint-disable value-list-comma-newline-after, value-list-comma-space-after, indentation, declaration-colon-newline-after, font-family-no-missing-generic-family-keyword
-
-//
-// Glyphicons for Bootstrap
-//
-// Since icons are fonts, they can be placed anywhere text is placed and are
-// thus automatically sized to match the surrounding child. To use, create an
-// inline element with the appropriate classes, like so:
-//
-// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
-
-// Import the fonts
-@font-face {
-  font-family: "Glyphicons Halflings";
-  src: url("@{icon-font-path}@{icon-font-name}.eot");
-  src: url("@{icon-font-path}@{icon-font-name}.eot?#iefix") format("embedded-opentype"),
-       url("@{icon-font-path}@{icon-font-name}.woff2") format("woff2"),
-       url("@{icon-font-path}@{icon-font-name}.woff") format("woff"),
-       url("@{icon-font-path}@{icon-font-name}.ttf") format("truetype"),
-       url("@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}") format("svg");
-}
-
-// Catchall baseclass
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: "Glyphicons Halflings";
-  font-style: normal;
-  font-weight: 400;
-  line-height: 1;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-// Individual icons
-.glyphicon-asterisk               { &:before { content: "\002a"; } }
-.glyphicon-plus                   { &:before { content: "\002b"; } }
-.glyphicon-euro,
-.glyphicon-eur                    { &:before { content: "\20ac"; } }
-.glyphicon-minus                  { &:before { content: "\2212"; } }
-.glyphicon-cloud                  { &:before { content: "\2601"; } }
-.glyphicon-envelope               { &:before { content: "\2709"; } }
-.glyphicon-pencil                 { &:before { content: "\270f"; } }
-.glyphicon-glass                  { &:before { content: "\e001"; } }
-.glyphicon-music                  { &:before { content: "\e002"; } }
-.glyphicon-search                 { &:before { content: "\e003"; } }
-.glyphicon-heart                  { &:before { content: "\e005"; } }
-.glyphicon-star                   { &:before { content: "\e006"; } }
-.glyphicon-star-empty             { &:before { content: "\e007"; } }
-.glyphicon-user                   { &:before { content: "\e008"; } }
-.glyphicon-film                   { &:before { content: "\e009"; } }
-.glyphicon-th-large               { &:before { content: "\e010"; } }
-.glyphicon-th                     { &:before { content: "\e011"; } }
-.glyphicon-th-list                { &:before { content: "\e012"; } }
-.glyphicon-ok                     { &:before { content: "\e013"; } }
-.glyphicon-remove                 { &:before { content: "\e014"; } }
-.glyphicon-zoom-in                { &:before { content: "\e015"; } }
-.glyphicon-zoom-out               { &:before { content: "\e016"; } }
-.glyphicon-off                    { &:before { content: "\e017"; } }
-.glyphicon-signal                 { &:before { content: "\e018"; } }
-.glyphicon-cog                    { &:before { content: "\e019"; } }
-.glyphicon-trash                  { &:before { content: "\e020"; } }
-.glyphicon-home                   { &:before { content: "\e021"; } }
-.glyphicon-file                   { &:before { content: "\e022"; } }
-.glyphicon-time                   { &:before { content: "\e023"; } }
-.glyphicon-road                   { &:before { content: "\e024"; } }
-.glyphicon-download-alt           { &:before { content: "\e025"; } }
-.glyphicon-download               { &:before { content: "\e026"; } }
-.glyphicon-upload                 { &:before { content: "\e027"; } }
-.glyphicon-inbox                  { &:before { content: "\e028"; } }
-.glyphicon-play-circle            { &:before { content: "\e029"; } }
-.glyphicon-repeat                 { &:before { content: "\e030"; } }
-.glyphicon-refresh                { &:before { content: "\e031"; } }
-.glyphicon-list-alt               { &:before { content: "\e032"; } }
-.glyphicon-lock                   { &:before { content: "\e033"; } }
-.glyphicon-flag                   { &:before { content: "\e034"; } }
-.glyphicon-headphones             { &:before { content: "\e035"; } }
-.glyphicon-volume-off             { &:before { content: "\e036"; } }
-.glyphicon-volume-down            { &:before { content: "\e037"; } }
-.glyphicon-volume-up              { &:before { content: "\e038"; } }
-.glyphicon-qrcode                 { &:before { content: "\e039"; } }
-.glyphicon-barcode                { &:before { content: "\e040"; } }
-.glyphicon-tag                    { &:before { content: "\e041"; } }
-.glyphicon-tags                   { &:before { content: "\e042"; } }
-.glyphicon-book                   { &:before { content: "\e043"; } }
-.glyphicon-bookmark               { &:before { content: "\e044"; } }
-.glyphicon-print                  { &:before { content: "\e045"; } }
-.glyphicon-camera                 { &:before { content: "\e046"; } }
-.glyphicon-font                   { &:before { content: "\e047"; } }
-.glyphicon-bold                   { &:before { content: "\e048"; } }
-.glyphicon-italic                 { &:before { content: "\e049"; } }
-.glyphicon-text-height            { &:before { content: "\e050"; } }
-.glyphicon-text-width             { &:before { content: "\e051"; } }
-.glyphicon-align-left             { &:before { content: "\e052"; } }
-.glyphicon-align-center           { &:before { content: "\e053"; } }
-.glyphicon-align-right            { &:before { content: "\e054"; } }
-.glyphicon-align-justify          { &:before { content: "\e055"; } }
-.glyphicon-list                   { &:before { content: "\e056"; } }
-.glyphicon-indent-left            { &:before { content: "\e057"; } }
-.glyphicon-indent-right           { &:before { content: "\e058"; } }
-.glyphicon-facetime-video         { &:before { content: "\e059"; } }
-.glyphicon-picture                { &:before { content: "\e060"; } }
-.glyphicon-map-marker             { &:before { content: "\e062"; } }
-.glyphicon-adjust                 { &:before { content: "\e063"; } }
-.glyphicon-tint                   { &:before { content: "\e064"; } }
-.glyphicon-edit                   { &:before { content: "\e065"; } }
-.glyphicon-share                  { &:before { content: "\e066"; } }
-.glyphicon-check                  { &:before { content: "\e067"; } }
-.glyphicon-move                   { &:before { content: "\e068"; } }
-.glyphicon-step-backward          { &:before { content: "\e069"; } }
-.glyphicon-fast-backward          { &:before { content: "\e070"; } }
-.glyphicon-backward               { &:before { content: "\e071"; } }
-.glyphicon-play                   { &:before { content: "\e072"; } }
-.glyphicon-pause                  { &:before { content: "\e073"; } }
-.glyphicon-stop                   { &:before { content: "\e074"; } }
-.glyphicon-forward                { &:before { content: "\e075"; } }
-.glyphicon-fast-forward           { &:before { content: "\e076"; } }
-.glyphicon-step-forward           { &:before { content: "\e077"; } }
-.glyphicon-eject                  { &:before { content: "\e078"; } }
-.glyphicon-chevron-left           { &:before { content: "\e079"; } }
-.glyphicon-chevron-right          { &:before { content: "\e080"; } }
-.glyphicon-plus-sign              { &:before { content: "\e081"; } }
-.glyphicon-minus-sign             { &:before { content: "\e082"; } }
-.glyphicon-remove-sign            { &:before { content: "\e083"; } }
-.glyphicon-ok-sign                { &:before { content: "\e084"; } }
-.glyphicon-question-sign          { &:before { content: "\e085"; } }
-.glyphicon-info-sign              { &:before { content: "\e086"; } }
-.glyphicon-screenshot             { &:before { content: "\e087"; } }
-.glyphicon-remove-circle          { &:before { content: "\e088"; } }
-.glyphicon-ok-circle              { &:before { content: "\e089"; } }
-.glyphicon-ban-circle             { &:before { content: "\e090"; } }
-.glyphicon-arrow-left             { &:before { content: "\e091"; } }
-.glyphicon-arrow-right            { &:before { content: "\e092"; } }
-.glyphicon-arrow-up               { &:before { content: "\e093"; } }
-.glyphicon-arrow-down             { &:before { content: "\e094"; } }
-.glyphicon-share-alt              { &:before { content: "\e095"; } }
-.glyphicon-resize-full            { &:before { content: "\e096"; } }
-.glyphicon-resize-small           { &:before { content: "\e097"; } }
-.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
-.glyphicon-gift                   { &:before { content: "\e102"; } }
-.glyphicon-leaf                   { &:before { content: "\e103"; } }
-.glyphicon-fire                   { &:before { content: "\e104"; } }
-.glyphicon-eye-open               { &:before { content: "\e105"; } }
-.glyphicon-eye-close              { &:before { content: "\e106"; } }
-.glyphicon-warning-sign           { &:before { content: "\e107"; } }
-.glyphicon-plane                  { &:before { content: "\e108"; } }
-.glyphicon-calendar               { &:before { content: "\e109"; } }
-.glyphicon-random                 { &:before { content: "\e110"; } }
-.glyphicon-comment                { &:before { content: "\e111"; } }
-.glyphicon-magnet                 { &:before { content: "\e112"; } }
-.glyphicon-chevron-up             { &:before { content: "\e113"; } }
-.glyphicon-chevron-down           { &:before { content: "\e114"; } }
-.glyphicon-retweet                { &:before { content: "\e115"; } }
-.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
-.glyphicon-folder-close           { &:before { content: "\e117"; } }
-.glyphicon-folder-open            { &:before { content: "\e118"; } }
-.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
-.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
-.glyphicon-hdd                    { &:before { content: "\e121"; } }
-.glyphicon-bullhorn               { &:before { content: "\e122"; } }
-.glyphicon-bell                   { &:before { content: "\e123"; } }
-.glyphicon-certificate            { &:before { content: "\e124"; } }
-.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
-.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
-.glyphicon-hand-right             { &:before { content: "\e127"; } }
-.glyphicon-hand-left              { &:before { content: "\e128"; } }
-.glyphicon-hand-up                { &:before { content: "\e129"; } }
-.glyphicon-hand-down              { &:before { content: "\e130"; } }
-.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
-.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
-.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
-.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
-.glyphicon-globe                  { &:before { content: "\e135"; } }
-.glyphicon-wrench                 { &:before { content: "\e136"; } }
-.glyphicon-tasks                  { &:before { content: "\e137"; } }
-.glyphicon-filter                 { &:before { content: "\e138"; } }
-.glyphicon-briefcase              { &:before { content: "\e139"; } }
-.glyphicon-fullscreen             { &:before { content: "\e140"; } }
-.glyphicon-dashboard              { &:before { content: "\e141"; } }
-.glyphicon-paperclip              { &:before { content: "\e142"; } }
-.glyphicon-heart-empty            { &:before { content: "\e143"; } }
-.glyphicon-link                   { &:before { content: "\e144"; } }
-.glyphicon-phone                  { &:before { content: "\e145"; } }
-.glyphicon-pushpin                { &:before { content: "\e146"; } }
-.glyphicon-usd                    { &:before { content: "\e148"; } }
-.glyphicon-gbp                    { &:before { content: "\e149"; } }
-.glyphicon-sort                   { &:before { content: "\e150"; } }
-.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
-.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
-.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
-.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
-.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
-.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
-.glyphicon-unchecked              { &:before { content: "\e157"; } }
-.glyphicon-expand                 { &:before { content: "\e158"; } }
-.glyphicon-collapse-down          { &:before { content: "\e159"; } }
-.glyphicon-collapse-up            { &:before { content: "\e160"; } }
-.glyphicon-log-in                 { &:before { content: "\e161"; } }
-.glyphicon-flash                  { &:before { content: "\e162"; } }
-.glyphicon-log-out                { &:before { content: "\e163"; } }
-.glyphicon-new-window             { &:before { content: "\e164"; } }
-.glyphicon-record                 { &:before { content: "\e165"; } }
-.glyphicon-save                   { &:before { content: "\e166"; } }
-.glyphicon-open                   { &:before { content: "\e167"; } }
-.glyphicon-saved                  { &:before { content: "\e168"; } }
-.glyphicon-import                 { &:before { content: "\e169"; } }
-.glyphicon-export                 { &:before { content: "\e170"; } }
-.glyphicon-send                   { &:before { content: "\e171"; } }
-.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
-.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
-.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
-.glyphicon-floppy-save            { &:before { content: "\e175"; } }
-.glyphicon-floppy-open            { &:before { content: "\e176"; } }
-.glyphicon-credit-card            { &:before { content: "\e177"; } }
-.glyphicon-transfer               { &:before { content: "\e178"; } }
-.glyphicon-cutlery                { &:before { content: "\e179"; } }
-.glyphicon-header                 { &:before { content: "\e180"; } }
-.glyphicon-compressed             { &:before { content: "\e181"; } }
-.glyphicon-earphone               { &:before { content: "\e182"; } }
-.glyphicon-phone-alt              { &:before { content: "\e183"; } }
-.glyphicon-tower                  { &:before { content: "\e184"; } }
-.glyphicon-stats                  { &:before { content: "\e185"; } }
-.glyphicon-sd-video               { &:before { content: "\e186"; } }
-.glyphicon-hd-video               { &:before { content: "\e187"; } }
-.glyphicon-subtitles              { &:before { content: "\e188"; } }
-.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
-.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
-.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
-.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
-.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
-.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
-.glyphicon-registration-mark      { &:before { content: "\e195"; } }
-.glyphicon-cloud-download         { &:before { content: "\e197"; } }
-.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
-.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
-.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
-.glyphicon-cd                     { &:before { content: "\e201"; } }
-.glyphicon-save-file              { &:before { content: "\e202"; } }
-.glyphicon-open-file              { &:before { content: "\e203"; } }
-.glyphicon-level-up               { &:before { content: "\e204"; } }
-.glyphicon-copy                   { &:before { content: "\e205"; } }
-.glyphicon-paste                  { &:before { content: "\e206"; } }
-// The following 2 Glyphicons are omitted for the time being because
-// they currently use Unicode codepoints that are outside the
-// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
-// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
-// Notably, the bug affects some older versions of the Android Browser.
-// More info: https://github.com/twbs/bootstrap/issues/10106
-// .glyphicon-door                   { &:before { content: "\1f6aa"; } }
-// .glyphicon-key                    { &:before { content: "\1f511"; } }
-.glyphicon-alert                  { &:before { content: "\e209"; } }
-.glyphicon-equalizer              { &:before { content: "\e210"; } }
-.glyphicon-king                   { &:before { content: "\e211"; } }
-.glyphicon-queen                  { &:before { content: "\e212"; } }
-.glyphicon-pawn                   { &:before { content: "\e213"; } }
-.glyphicon-bishop                 { &:before { content: "\e214"; } }
-.glyphicon-knight                 { &:before { content: "\e215"; } }
-.glyphicon-baby-formula           { &:before { content: "\e216"; } }
-.glyphicon-tent                   { &:before { content: "\26fa"; } }
-.glyphicon-blackboard             { &:before { content: "\e218"; } }
-.glyphicon-bed                    { &:before { content: "\e219"; } }
-.glyphicon-apple                  { &:before { content: "\f8ff"; } }
-.glyphicon-erase                  { &:before { content: "\e221"; } }
-.glyphicon-hourglass              { &:before { content: "\231b"; } }
-.glyphicon-lamp                   { &:before { content: "\e223"; } }
-.glyphicon-duplicate              { &:before { content: "\e224"; } }
-.glyphicon-piggy-bank             { &:before { content: "\e225"; } }
-.glyphicon-scissors               { &:before { content: "\e226"; } }
-.glyphicon-bitcoin                { &:before { content: "\e227"; } }
-.glyphicon-btc                    { &:before { content: "\e227"; } }
-.glyphicon-xbt                    { &:before { content: "\e227"; } }
-.glyphicon-yen                    { &:before { content: "\00a5"; } }
-.glyphicon-jpy                    { &:before { content: "\00a5"; } }
-.glyphicon-ruble                  { &:before { content: "\20bd"; } }
-.glyphicon-rub                    { &:before { content: "\20bd"; } }
-.glyphicon-scale                  { &:before { content: "\e230"; } }
-.glyphicon-ice-lolly              { &:before { content: "\e231"; } }
-.glyphicon-ice-lolly-tasted       { &:before { content: "\e232"; } }
-.glyphicon-education              { &:before { content: "\e233"; } }
-.glyphicon-option-horizontal      { &:before { content: "\e234"; } }
-.glyphicon-option-vertical        { &:before { content: "\e235"; } }
-.glyphicon-menu-hamburger         { &:before { content: "\e236"; } }
-.glyphicon-modal-window           { &:before { content: "\e237"; } }
-.glyphicon-oil                    { &:before { content: "\e238"; } }
-.glyphicon-grain                  { &:before { content: "\e239"; } }
-.glyphicon-sunglasses             { &:before { content: "\e240"; } }
-.glyphicon-text-size              { &:before { content: "\e241"; } }
-.glyphicon-text-color             { &:before { content: "\e242"; } }
-.glyphicon-text-background        { &:before { content: "\e243"; } }
-.glyphicon-object-align-top       { &:before { content: "\e244"; } }
-.glyphicon-object-align-bottom    { &:before { content: "\e245"; } }
-.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
-.glyphicon-object-align-left      { &:before { content: "\e247"; } }
-.glyphicon-object-align-vertical  { &:before { content: "\e248"; } }
-.glyphicon-object-align-right     { &:before { content: "\e249"; } }
-.glyphicon-triangle-right         { &:before { content: "\e250"; } }
-.glyphicon-triangle-left          { &:before { content: "\e251"; } }
-.glyphicon-triangle-bottom        { &:before { content: "\e252"; } }
-.glyphicon-triangle-top           { &:before { content: "\e253"; } }
-.glyphicon-console                { &:before { content: "\e254"; } }
-.glyphicon-superscript            { &:before { content: "\e255"; } }
-.glyphicon-subscript              { &:before { content: "\e256"; } }
-.glyphicon-menu-left              { &:before { content: "\e257"; } }
-.glyphicon-menu-right             { &:before { content: "\e258"; } }
-.glyphicon-menu-down              { &:before { content: "\e259"; } }
-.glyphicon-menu-up                { &:before { content: "\e260"; } }
Index: trip-planner-front/node_modules/bootstrap/less/grid.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/grid.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//
-// Grid system
-// --------------------------------------------------
-
-
-// Container widths
-//
-// Set the container width, and override it for fixed navbars in media queries.
-
-.container {
-  .container-fixed();
-
-  @media (min-width: @screen-sm-min) {
-    width: @container-sm;
-  }
-  @media (min-width: @screen-md-min) {
-    width: @container-md;
-  }
-  @media (min-width: @screen-lg-min) {
-    width: @container-lg;
-  }
-}
-
-
-// Fluid container
-//
-// Utilizes the mixin meant for fixed width containers, but without any defined
-// width for fluid, full width layouts.
-
-.container-fluid {
-  .container-fixed();
-}
-
-
-// Row
-//
-// Rows contain and clear the floats of your columns.
-
-.row {
-  .make-row();
-}
-
-.row-no-gutters {
-  margin-right: 0;
-  margin-left: 0;
-
-  [class*="col-"] {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-
-
-// Columns
-//
-// Common styles for small and large grid columns
-
-.make-grid-columns();
-
-
-// Extra small grid
-//
-// Columns, offsets, pushes, and pulls for extra small devices like
-// smartphones.
-
-.make-grid(xs);
-
-
-// Small grid
-//
-// Columns, offsets, pushes, and pulls for the small device range, from phones
-// to tablets.
-
-@media (min-width: @screen-sm-min) {
-  .make-grid(sm);
-}
-
-
-// Medium grid
-//
-// Columns, offsets, pushes, and pulls for the desktop device range.
-
-@media (min-width: @screen-md-min) {
-  .make-grid(md);
-}
-
-
-// Large grid
-//
-// Columns, offsets, pushes, and pulls for the large desktop device range.
-
-@media (min-width: @screen-lg-min) {
-  .make-grid(lg);
-}
Index: trip-planner-front/node_modules/bootstrap/less/input-groups.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/input-groups.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,173 +1,0 @@
-// stylelint-disable selector-no-qualifying-type
-
-//
-// Input groups
-// --------------------------------------------------
-
-// Base styles
-// -------------------------
-.input-group {
-  position: relative; // For dropdowns
-  display: table;
-  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
-
-  // Undo padding and float of grid classes
-  &[class*="col-"] {
-    float: none;
-    padding-right: 0;
-    padding-left: 0;
-  }
-
-  .form-control {
-    // Ensure that the input is always above the *appended* addon button for
-    // proper border colors.
-    position: relative;
-    z-index: 2;
-
-    // IE9 fubars the placeholder attribute in text inputs and the arrows on
-    // select elements in input groups. To fix it, we float the input. Details:
-    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
-    float: left;
-
-    width: 100%;
-    margin-bottom: 0;
-
-    &:focus {
-      z-index: 3;
-    }
-  }
-}
-
-// Sizing options
-//
-// Remix the default form control sizing classes into new ones for easier
-// manipulation.
-
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  .input-lg();
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  .input-sm();
-}
-
-
-// Display as table-cell
-// -------------------------
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-
-  &:not(:first-child):not(:last-child) {
-    border-radius: 0;
-  }
-}
-// Addon and addon wrapper for buttons
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle; // Match the inputs
-}
-
-// Text input groups
-// -------------------------
-.input-group-addon {
-  padding: @padding-base-vertical @padding-base-horizontal;
-  font-size: @font-size-base;
-  font-weight: 400;
-  line-height: 1;
-  color: @input-color;
-  text-align: center;
-  background-color: @input-group-addon-bg;
-  border: 1px solid @input-group-addon-border-color;
-  border-radius: @input-border-radius;
-
-  // Sizing
-  &.input-sm {
-    padding: @padding-small-vertical @padding-small-horizontal;
-    font-size: @font-size-small;
-    border-radius: @input-border-radius-small;
-  }
-  &.input-lg {
-    padding: @padding-large-vertical @padding-large-horizontal;
-    font-size: @font-size-large;
-    border-radius: @input-border-radius-large;
-  }
-
-  // Nuke default margins from checkboxes and radios to vertically center within.
-  input[type="radio"],
-  input[type="checkbox"] {
-    margin-top: 0;
-  }
-}
-
-// Reset rounded corners
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  .border-right-radius(0);
-}
-.input-group-addon:first-child {
-  border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  .border-left-radius(0);
-}
-.input-group-addon:last-child {
-  border-left: 0;
-}
-
-// Button input groups
-// -------------------------
-.input-group-btn {
-  position: relative;
-  // Jankily prevent input button groups from wrapping with `white-space` and
-  // `font-size` in combination with `inline-block` on buttons.
-  font-size: 0;
-  white-space: nowrap;
-
-  // Negative margin for spacing, position for bringing hovered/focused/actived
-  // element above the siblings.
-  > .btn {
-    position: relative;
-    + .btn {
-      margin-left: -1px;
-    }
-    // Bring the "active" button to the front
-    &:hover,
-    &:focus,
-    &:active {
-      z-index: 2;
-    }
-  }
-
-  // Negative margin to only have a 1px border between the two
-  &:first-child {
-    > .btn,
-    > .btn-group {
-      margin-right: -1px;
-    }
-  }
-  &:last-child {
-    > .btn,
-    > .btn-group {
-      z-index: 2;
-      margin-left: -1px;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/jumbotron.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/jumbotron.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//
-// Jumbotron
-// --------------------------------------------------
-
-
-.jumbotron {
-  padding-top: @jumbotron-padding;
-  padding-bottom: @jumbotron-padding;
-  margin-bottom: @jumbotron-padding;
-  color: @jumbotron-color;
-  background-color: @jumbotron-bg;
-
-  h1,
-  .h1 {
-    color: @jumbotron-heading-color;
-  }
-
-  p {
-    margin-bottom: (@jumbotron-padding / 2);
-    font-size: @jumbotron-font-size;
-    font-weight: 200;
-  }
-
-  > hr {
-    border-top-color: darken(@jumbotron-bg, 10%);
-  }
-
-  .container &,
-  .container-fluid & {
-    padding-right: (@grid-gutter-width / 2);
-    padding-left: (@grid-gutter-width / 2);
-    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
-  }
-
-  .container {
-    max-width: 100%;
-  }
-
-  @media screen and (min-width: @screen-sm-min) {
-    padding-top: (@jumbotron-padding * 1.6);
-    padding-bottom: (@jumbotron-padding * 1.6);
-
-    .container &,
-    .container-fluid & {
-      padding-right: (@jumbotron-padding * 2);
-      padding-left: (@jumbotron-padding * 2);
-    }
-
-    h1,
-    .h1 {
-      font-size: @jumbotron-heading-font-size;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/labels.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/labels.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//
-// Labels
-// --------------------------------------------------
-
-.label {
-  display: inline;
-  padding: .2em .6em .3em;
-  font-size: 75%;
-  font-weight: 700;
-  line-height: 1;
-  color: @label-color;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: .25em;
-
-  // Add hover effects, but only for links
-  a& {
-    &:hover,
-    &:focus {
-      color: @label-link-hover-color;
-      text-decoration: none;
-      cursor: pointer;
-    }
-  }
-
-  // Empty labels collapse automatically (not available in IE8)
-  &:empty {
-    display: none;
-  }
-
-  // Quick fix for labels in buttons
-  .btn & {
-    position: relative;
-    top: -1px;
-  }
-}
-
-// Colors
-// Contextual variations (linked labels get darker on :hover)
-
-.label-default {
-  .label-variant(@label-default-bg);
-}
-
-.label-primary {
-  .label-variant(@label-primary-bg);
-}
-
-.label-success {
-  .label-variant(@label-success-bg);
-}
-
-.label-info {
-  .label-variant(@label-info-bg);
-}
-
-.label-warning {
-  .label-variant(@label-warning-bg);
-}
-
-.label-danger {
-  .label-variant(@label-danger-bg);
-}
Index: trip-planner-front/node_modules/bootstrap/less/list-group.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/list-group.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,130 +1,0 @@
-// stylelint-disable selector-no-qualifying-type
-
-//
-// List groups
-// --------------------------------------------------
-
-
-// Base class
-//
-// Easily usable on <ul>, <ol>, or <div>.
-
-.list-group {
-  // No need to set list-style: none; since .list-group-item is block level
-  padding-left: 0; // reset padding because ul and ol
-  margin-bottom: 20px;
-}
-
-
-// Individual list items
-//
-// Use on `li`s or `div`s within the `.list-group` parent.
-
-.list-group-item {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-  // Place the border on the list items and negative margin up for better styling
-  margin-bottom: -1px;
-  background-color: @list-group-bg;
-  border: 1px solid @list-group-border;
-
-  // Round the first and last items
-  &:first-child {
-    .border-top-radius(@list-group-border-radius);
-  }
-  &:last-child {
-    margin-bottom: 0;
-    .border-bottom-radius(@list-group-border-radius);
-  }
-
-  // Disabled state
-  &.disabled,
-  &.disabled:hover,
-  &.disabled:focus {
-    color: @list-group-disabled-color;
-    cursor: @cursor-disabled;
-    background-color: @list-group-disabled-bg;
-
-    // Force color to inherit for custom content
-    .list-group-item-heading {
-      color: inherit;
-    }
-    .list-group-item-text {
-      color: @list-group-disabled-text-color;
-    }
-  }
-
-  // Active class on item itself, not parent
-  &.active,
-  &.active:hover,
-  &.active:focus {
-    z-index: 2; // Place active items above their siblings for proper border styling
-    color: @list-group-active-color;
-    background-color: @list-group-active-bg;
-    border-color: @list-group-active-border;
-
-    // Force color to inherit for custom content
-    .list-group-item-heading,
-    .list-group-item-heading > small,
-    .list-group-item-heading > .small {
-      color: inherit;
-    }
-    .list-group-item-text {
-      color: @list-group-active-text-color;
-    }
-  }
-}
-
-
-// Interactive list items
-//
-// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
-// Includes an extra `.active` modifier class for showing selected items.
-
-a.list-group-item,
-button.list-group-item {
-  color: @list-group-link-color;
-
-  .list-group-item-heading {
-    color: @list-group-link-heading-color;
-  }
-
-  // Hover state
-  &:hover,
-  &:focus {
-    color: @list-group-link-hover-color;
-    text-decoration: none;
-    background-color: @list-group-hover-bg;
-  }
-}
-
-button.list-group-item {
-  width: 100%;
-  text-align: left;
-}
-
-
-// Contextual variants
-//
-// Add modifier classes to change text and background color on individual items.
-// Organizationally, this must come after the `:hover` states.
-
-.list-group-item-variant(success; @state-success-bg; @state-success-text);
-.list-group-item-variant(info; @state-info-bg; @state-info-text);
-.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);
-.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);
-
-
-// Custom content options
-//
-// Extra classes for creating well-formatted content within `.list-group-item`s.
-
-.list-group-item-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-}
-.list-group-item-text {
-  margin-bottom: 0;
-  line-height: 1.3;
-}
Index: trip-planner-front/node_modules/bootstrap/less/media.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/media.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,66 +1,0 @@
-.media {
-  // Proper spacing between instances of .media
-  margin-top: 15px;
-
-  &:first-child {
-    margin-top: 0;
-  }
-}
-
-.media,
-.media-body {
-  overflow: hidden;
-  zoom: 1;
-}
-
-.media-body {
-  width: 10000px;
-}
-
-.media-object {
-  display: block;
-
-  // Fix collapse in webkit from max-width: 100% and display: table-cell.
-  &.img-thumbnail {
-    max-width: none;
-  }
-}
-
-.media-right,
-.media > .pull-right {
-  padding-left: 10px;
-}
-
-.media-left,
-.media > .pull-left {
-  padding-right: 10px;
-}
-
-.media-left,
-.media-right,
-.media-body {
-  display: table-cell;
-  vertical-align: top;
-}
-
-.media-middle {
-  vertical-align: middle;
-}
-
-.media-bottom {
-  vertical-align: bottom;
-}
-
-// Reset margins on headings for tighter default spacing
-.media-heading {
-  margin-top: 0;
-  margin-bottom: 5px;
-}
-
-// Media list variation
-//
-// Undo default ul/ol styles
-.media-list {
-  padding-left: 0;
-  list-style: none;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,40 +1,0 @@
-// Mixins
-// --------------------------------------------------
-
-// Utilities
-@import "mixins/hide-text.less";
-@import "mixins/opacity.less";
-@import "mixins/image.less";
-@import "mixins/labels.less";
-@import "mixins/reset-filter.less";
-@import "mixins/resize.less";
-@import "mixins/responsive-visibility.less";
-@import "mixins/size.less";
-@import "mixins/tab-focus.less";
-@import "mixins/reset-text.less";
-@import "mixins/text-emphasis.less";
-@import "mixins/text-overflow.less";
-@import "mixins/vendor-prefixes.less";
-
-// Components
-@import "mixins/alerts.less";
-@import "mixins/buttons.less";
-@import "mixins/panels.less";
-@import "mixins/pagination.less";
-@import "mixins/list-group.less";
-@import "mixins/nav-divider.less";
-@import "mixins/forms.less";
-@import "mixins/progress-bar.less";
-@import "mixins/table-row.less";
-
-// Skins
-@import "mixins/background-variant.less";
-@import "mixins/border-radius.less";
-@import "mixins/gradients.less";
-
-// Layout
-@import "mixins/clearfix.less";
-@import "mixins/center-block.less";
-@import "mixins/nav-vertical-align.less";
-@import "mixins/grid-framework.less";
-@import "mixins/grid.less";
Index: trip-planner-front/node_modules/bootstrap/less/mixins/alerts.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/alerts.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,15 +1,0 @@
-// Alerts
-
-.alert-variant(@background; @border; @text-color) {
-  color: @text-color;
-  background-color: @background;
-  border-color: @border;
-
-  hr {
-    border-top-color: darken(@border, 5%);
-  }
-
-  .alert-link {
-    color: darken(@text-color, 10%);
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/background-variant.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/background-variant.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-// Contextual backgrounds
-
-.bg-variant(@color) {
-  background-color: @color;
-  a&:hover,
-  a&:focus {
-    background-color: darken(@color, 10%);
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/border-radius.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/border-radius.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,18 +1,0 @@
-// Single side border-radius
-
-.border-top-radius(@radius) {
-  border-top-left-radius: @radius;
-  border-top-right-radius: @radius;
-}
-.border-right-radius(@radius) {
-  border-top-right-radius: @radius;
-  border-bottom-right-radius: @radius;
-}
-.border-bottom-radius(@radius) {
-  border-bottom-right-radius: @radius;
-  border-bottom-left-radius: @radius;
-}
-.border-left-radius(@radius) {
-  border-top-left-radius: @radius;
-  border-bottom-left-radius: @radius;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/buttons.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/buttons.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,61 +1,0 @@
-// Button variants
-//
-// Easily pump out default styles, as well as :hover, :focus, :active,
-// and disabled options for all buttons
-
-.button-variant(@color; @background; @border) {
-  color: @color;
-  background-color: @background;
-  border-color: @border;
-
-  &:focus,
-  &.focus {
-    color: @color;
-    background-color: darken(@background, 10%);
-    border-color: darken(@border, 25%);
-  }
-  &:hover {
-    color: @color;
-    background-color: darken(@background, 10%);
-    border-color: darken(@border, 12%);
-  }
-  &:active,
-  &.active,
-  .open > .dropdown-toggle& {
-    color: @color;
-    background-color: darken(@background, 10%);
-    background-image: none;
-    border-color: darken(@border, 12%);
-
-    &:hover,
-    &:focus,
-    &.focus {
-      color: @color;
-      background-color: darken(@background, 17%);
-      border-color: darken(@border, 25%);
-    }
-  }
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    &:hover,
-    &:focus,
-    &.focus {
-      background-color: @background;
-      border-color: @border;
-    }
-  }
-
-  .badge {
-    color: @background;
-    background-color: @color;
-  }
-}
-
-// Button sizes
-.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
-  padding: @padding-vertical @padding-horizontal;
-  font-size: @font-size;
-  line-height: @line-height;
-  border-radius: @border-radius;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/center-block.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/center-block.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,7 +1,0 @@
-// Center-align a block level element
-
-.center-block() {
-  display: block;
-  margin-right: auto;
-  margin-left: auto;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/clearfix.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/clearfix.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,22 +1,0 @@
-// Clearfix
-//
-// For modern browsers
-// 1. The space content is one way to avoid an Opera bug when the
-//    contenteditable attribute is included anywhere else in the document.
-//    Otherwise it causes space to appear at the top and bottom of elements
-//    that are clearfixed.
-// 2. The use of `table` rather than `block` is only necessary if using
-//    `:before` to contain the top-margins of child elements.
-//
-// Source: http://nicolasgallagher.com/micro-clearfix-hack/
-
-.clearfix() {
-  &:before,
-  &:after {
-    display: table; // 2
-    content: " "; // 1
-  }
-  &:after {
-    clear: both;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/forms.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/forms.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,85 +1,0 @@
-// Form validation states
-//
-// Used in forms.less to generate the form validation CSS for warnings, errors,
-// and successes.
-
-.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {
-  // Color the label and help text
-  .help-block,
-  .control-label,
-  .radio,
-  .checkbox,
-  .radio-inline,
-  .checkbox-inline,
-  &.radio label,
-  &.checkbox label,
-  &.radio-inline label,
-  &.checkbox-inline label  {
-    color: @text-color;
-  }
-  // Set the border and box shadow on specific inputs to match
-  .form-control {
-    border-color: @border-color;
-    .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work
-    &:focus {
-      border-color: darken(@border-color, 10%);
-      @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);
-      .box-shadow(@shadow);
-    }
-  }
-  // Set validation states also for addons
-  .input-group-addon {
-    color: @text-color;
-    background-color: @background-color;
-    border-color: @border-color;
-  }
-  // Optional feedback icon
-  .form-control-feedback {
-    color: @text-color;
-  }
-}
-
-
-// Form control focus state
-//
-// Generate a customized focus state and for any input with the specified color,
-// which defaults to the `@input-border-focus` variable.
-//
-// We highly encourage you to not customize the default value, but instead use
-// this to tweak colors on an as-needed basis. This aesthetic change is based on
-// WebKit's default styles, but applicable to a wider range of browsers. Its
-// usability and accessibility should be taken into account with any change.
-//
-// Example usage: change the default blue border and shadow to white for better
-// contrast against a dark gray background.
-.form-control-focus(@color: @input-border-focus) {
-  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);
-  &:focus {
-    border-color: @color;
-    outline: 0;
-    .box-shadow(~"inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px @{color-rgba}");
-  }
-}
-
-// Form control sizing
-//
-// Relative text size, padding, and border-radii changes for form controls. For
-// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
-// element gets special love because it's special, and that's a fact!
-.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
-  height: @input-height;
-  padding: @padding-vertical @padding-horizontal;
-  font-size: @font-size;
-  line-height: @line-height;
-  border-radius: @border-radius;
-
-  select& {
-    height: @input-height;
-    line-height: @input-height;
-  }
-
-  textarea&,
-  select[multiple]& {
-    height: auto;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/gradients.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/gradients.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,59 +1,0 @@
-// stylelint-disable value-no-vendor-prefix, selector-max-id
-
-#gradient {
-
-  // Horizontal gradient, from left to right
-  //
-  // Creates two color stops, start and end, by specifying a color and position for each color stop.
-  // Color stops are not available in IE9 and below.
-  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
-    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+
-    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12
-    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)", argb(@start-color), argb(@end-color))); // IE9 and down
-    background-repeat: repeat-x;
-  }
-
-  // Vertical gradient, from top to bottom
-  //
-  // Creates two color stops, start and end, by specifying a color and position for each color stop.
-  // Color stops are not available in IE9 and below.
-  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {
-    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+
-    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12
-    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@start-color), argb(@end-color))); // IE9 and down
-    background-repeat: repeat-x;
-  }
-
-  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {
-    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+
-    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12
-    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
-    background-repeat: repeat-x;
-  }
-  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
-    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
-    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);
-    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
-    background-repeat: no-repeat;
-  }
-  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {
-    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
-    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);
-    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);
-    filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback
-    background-repeat: no-repeat;
-  }
-  .radial(@inner-color: #555; @outer-color: #333) {
-    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);
-    background-image: radial-gradient(circle, @inner-color, @outer-color);
-    background-repeat: no-repeat;
-  }
-  .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {
-    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
-    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
-    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/grid-framework.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/grid-framework.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,91 +1,0 @@
-// Framework grid generation
-//
-// Used only by Bootstrap to generate the correct number of grid classes given
-// any value of `@grid-columns`.
-
-.make-grid-columns() {
-  // Common styles for all sizes of grid columns, widths 1-12
-  .col(@index) { // initial
-    @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
-    .col((@index + 1), @item);
-  }
-  .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo
-    @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}";
-    .col((@index + 1), ~"@{list}, @{item}");
-  }
-  .col(@index, @list) when (@index > @grid-columns) { // terminal
-    @{list} {
-      position: relative;
-      // Prevent columns from collapsing when empty
-      min-height: 1px;
-      // Inner gutter via padding
-      padding-right: floor((@grid-gutter-width / 2));
-      padding-left: ceil((@grid-gutter-width / 2));
-    }
-  }
-  .col(1); // kickstart it
-}
-
-.float-grid-columns(@class) {
-  .col(@index) { // initial
-    @item: ~".col-@{class}-@{index}";
-    .col((@index + 1), @item);
-  }
-  .col(@index, @list) when (@index =< @grid-columns) { // general
-    @item: ~".col-@{class}-@{index}";
-    .col((@index + 1), ~"@{list}, @{item}");
-  }
-  .col(@index, @list) when (@index > @grid-columns) { // terminal
-    @{list} {
-      float: left;
-    }
-  }
-  .col(1); // kickstart it
-}
-
-.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
-  .col-@{class}-@{index} {
-    width: percentage((@index / @grid-columns));
-  }
-}
-.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
-  .col-@{class}-push-@{index} {
-    left: percentage((@index / @grid-columns));
-  }
-}
-.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
-  .col-@{class}-push-0 {
-    left: auto;
-  }
-}
-.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
-  .col-@{class}-pull-@{index} {
-    right: percentage((@index / @grid-columns));
-  }
-}
-.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
-  .col-@{class}-pull-0 {
-    right: auto;
-  }
-}
-.calc-grid-column(@index, @class, @type) when (@type = offset) {
-  .col-@{class}-offset-@{index} {
-    margin-left: percentage((@index / @grid-columns));
-  }
-}
-
-// Basic looping in LESS
-.loop-grid-columns(@index, @class, @type) when (@index >= 0) {
-  .calc-grid-column(@index, @class, @type);
-  // next iteration
-  .loop-grid-columns((@index - 1), @class, @type);
-}
-
-// Create grid for specific class
-.make-grid(@class) {
-  .float-grid-columns(@class);
-  .loop-grid-columns(@grid-columns, @class, width);
-  .loop-grid-columns(@grid-columns, @class, pull);
-  .loop-grid-columns(@grid-columns, @class, push);
-  .loop-grid-columns(@grid-columns, @class, offset);
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/grid.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/grid.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,122 +1,0 @@
-// Grid system
-//
-// Generate semantic grid columns with these mixins.
-
-// Centered container element
-.container-fixed(@gutter: @grid-gutter-width) {
-  padding-right: ceil((@gutter / 2));
-  padding-left: floor((@gutter / 2));
-  margin-right: auto;
-  margin-left: auto;
-  &:extend(.clearfix all);
-}
-
-// Creates a wrapper for a series of columns
-.make-row(@gutter: @grid-gutter-width) {
-  margin-right: floor((@gutter / -2));
-  margin-left: ceil((@gutter / -2));
-  &:extend(.clearfix all);
-}
-
-// Generate the extra small columns
-.make-xs-column(@columns; @gutter: @grid-gutter-width) {
-  position: relative;
-  float: left;
-  width: percentage((@columns / @grid-columns));
-  min-height: 1px;
-  padding-right: (@gutter / 2);
-  padding-left: (@gutter / 2);
-}
-.make-xs-column-offset(@columns) {
-  margin-left: percentage((@columns / @grid-columns));
-}
-.make-xs-column-push(@columns) {
-  left: percentage((@columns / @grid-columns));
-}
-.make-xs-column-pull(@columns) {
-  right: percentage((@columns / @grid-columns));
-}
-
-// Generate the small columns
-.make-sm-column(@columns; @gutter: @grid-gutter-width) {
-  position: relative;
-  min-height: 1px;
-  padding-right: (@gutter / 2);
-  padding-left: (@gutter / 2);
-
-  @media (min-width: @screen-sm-min) {
-    float: left;
-    width: percentage((@columns / @grid-columns));
-  }
-}
-.make-sm-column-offset(@columns) {
-  @media (min-width: @screen-sm-min) {
-    margin-left: percentage((@columns / @grid-columns));
-  }
-}
-.make-sm-column-push(@columns) {
-  @media (min-width: @screen-sm-min) {
-    left: percentage((@columns / @grid-columns));
-  }
-}
-.make-sm-column-pull(@columns) {
-  @media (min-width: @screen-sm-min) {
-    right: percentage((@columns / @grid-columns));
-  }
-}
-
-// Generate the medium columns
-.make-md-column(@columns; @gutter: @grid-gutter-width) {
-  position: relative;
-  min-height: 1px;
-  padding-right: (@gutter / 2);
-  padding-left: (@gutter / 2);
-
-  @media (min-width: @screen-md-min) {
-    float: left;
-    width: percentage((@columns / @grid-columns));
-  }
-}
-.make-md-column-offset(@columns) {
-  @media (min-width: @screen-md-min) {
-    margin-left: percentage((@columns / @grid-columns));
-  }
-}
-.make-md-column-push(@columns) {
-  @media (min-width: @screen-md-min) {
-    left: percentage((@columns / @grid-columns));
-  }
-}
-.make-md-column-pull(@columns) {
-  @media (min-width: @screen-md-min) {
-    right: percentage((@columns / @grid-columns));
-  }
-}
-
-// Generate the large columns
-.make-lg-column(@columns; @gutter: @grid-gutter-width) {
-  position: relative;
-  min-height: 1px;
-  padding-right: (@gutter / 2);
-  padding-left: (@gutter / 2);
-
-  @media (min-width: @screen-lg-min) {
-    float: left;
-    width: percentage((@columns / @grid-columns));
-  }
-}
-.make-lg-column-offset(@columns) {
-  @media (min-width: @screen-lg-min) {
-    margin-left: percentage((@columns / @grid-columns));
-  }
-}
-.make-lg-column-push(@columns) {
-  @media (min-width: @screen-lg-min) {
-    left: percentage((@columns / @grid-columns));
-  }
-}
-.make-lg-column-pull(@columns) {
-  @media (min-width: @screen-lg-min) {
-    right: percentage((@columns / @grid-columns));
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/hide-text.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/hide-text.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,23 +1,0 @@
-// stylelint-disable font-family-name-quotes, font-family-no-missing-generic-family-keyword
-
-// CSS image replacement
-//
-// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
-// mixins being reused as classes with the same name, this doesn't hold up. As
-// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
-//
-// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
-
-// Deprecated as of v3.0.1 (has been removed in v4)
-.hide-text() {
-  font: ~"0/0" a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-// New mixin to use as of v3.0.1
-.text-hide() {
-  .hide-text();
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/image.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/image.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,30 +1,0 @@
-// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after
-
-// Responsive image
-//
-// Keep images from scaling beyond the width of their parents.
-.img-responsive(@display: block) {
-  display: @display;
-  max-width: 100%; // Part 1: Set a maximum relative to the parent
-  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
-}
-
-
-// Retina image
-//
-// Short retina mixin for setting background-image and -size. Note that the
-// spelling of `min--moz-device-pixel-ratio` is intentional.
-.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
-  background-image: url("@{file-1x}");
-
-  @media
-  only screen and (-webkit-min-device-pixel-ratio: 2),
-  only screen and ( min--moz-device-pixel-ratio: 2),
-  only screen and ( -o-min-device-pixel-ratio: 2/1),
-  only screen and ( min-device-pixel-ratio: 2),
-  only screen and ( min-resolution: 192dpi),
-  only screen and ( min-resolution: 2dppx) {
-    background-image: url("@{file-2x}");
-    background-size: @width-1x @height-1x;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/labels.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/labels.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,12 +1,0 @@
-// Labels
-
-.label-variant(@color) {
-  background-color: @color;
-
-  &[href] {
-    &:hover,
-    &:focus {
-      background-color: darken(@color, 10%);
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/list-group.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/list-group.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,30 +1,0 @@
-// List Groups
-
-.list-group-item-variant(@state; @background; @color) {
-  .list-group-item-@{state} {
-    color: @color;
-    background-color: @background;
-
-    a&,
-    button& {
-      color: @color;
-
-      .list-group-item-heading {
-        color: inherit;
-      }
-
-      &:hover,
-      &:focus {
-        color: @color;
-        background-color: darken(@background, 5%);
-      }
-      &.active,
-      &.active:hover,
-      &.active:focus {
-        color: #fff;
-        background-color: @color;
-        border-color: @color;
-      }
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/nav-divider.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/nav-divider.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,10 +1,0 @@
-// Horizontal dividers
-//
-// Dividers (basically an hr) within dropdowns and nav lists
-
-.nav-divider(@color: #e5e5e5) {
-  height: 1px;
-  margin: ((@line-height-computed / 2) - 1) 0;
-  overflow: hidden;
-  background-color: @color;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/nav-vertical-align.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/nav-vertical-align.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-// Navbar vertical align
-//
-// Vertically center elements in the navbar.
-// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
-
-.navbar-vertical-align(@element-height) {
-  margin-top: ((@navbar-height - @element-height) / 2);
-  margin-bottom: ((@navbar-height - @element-height) / 2);
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/opacity.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/opacity.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,7 +1,0 @@
-// Opacity
-
-.opacity(@opacity) {
-  @opacity-ie: (@opacity * 100);  // IE8 filter
-  filter: ~"alpha(opacity=@{opacity-ie})";
-  opacity: @opacity;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/pagination.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/pagination.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,24 +1,0 @@
-// Pagination
-
-.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
-  > li {
-    > a,
-    > span {
-      padding: @padding-vertical @padding-horizontal;
-      font-size: @font-size;
-      line-height: @line-height;
-    }
-    &:first-child {
-      > a,
-      > span {
-        .border-left-radius(@border-radius);
-      }
-    }
-    &:last-child {
-      > a,
-      > span {
-        .border-right-radius(@border-radius);
-      }
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/panels.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/panels.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,24 +1,0 @@
-// Panels
-
-.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
-  border-color: @border;
-
-  & > .panel-heading {
-    color: @heading-text-color;
-    background-color: @heading-bg-color;
-    border-color: @heading-border;
-
-    + .panel-collapse > .panel-body {
-      border-top-color: @border;
-    }
-    .badge {
-      color: @heading-bg-color;
-      background-color: @heading-text-color;
-    }
-  }
-  & > .panel-footer {
-    + .panel-collapse > .panel-body {
-      border-bottom-color: @border;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/progress-bar.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/progress-bar.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,10 +1,0 @@
-// Progress bars
-
-.progress-bar-variant(@color) {
-  background-color: @color;
-
-  // Deprecated parent class requirement as of v3.2.0
-  .progress-striped & {
-    #gradient > .striped();
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/reset-filter.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/reset-filter.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,8 +1,0 @@
-// Reset filters for IE
-//
-// When you need to remove a gradient background, do not forget to use this to reset
-// the IE filter for IE9 and below.
-
-.reset-filter() {
-  filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/reset-text.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/reset-text.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,18 +1,0 @@
-.reset-text() {
-  font-family: @font-family-base;
-  // We deliberately do NOT reset font-size.
-  font-style: normal;
-  font-weight: 400;
-  line-height: @line-height-base;
-  line-break: auto;
-  text-align: left; // Fallback for where `start` is not supported
-  text-align: start;
-  text-decoration: none;
-  text-shadow: none;
-  text-transform: none;
-  letter-spacing: normal;
-  word-break: normal;
-  word-spacing: normal;
-  word-wrap: normal;
-  white-space: normal;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/resize.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/resize.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,6 +1,0 @@
-// Resize anything
-
-.resizable(@direction) {
-  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
-  resize: @direction; // Options: horizontal, vertical, both
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/responsive-visibility.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/responsive-visibility.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,13 +1,0 @@
-// stylelint-disable declaration-no-important
-
-.responsive-visibility() {
-  display: block !important;
-  table&  { display: table !important; }
-  tr&     { display: table-row !important; }
-  th&,
-  td&     { display: table-cell !important; }
-}
-
-.responsive-invisibility() {
-  display: none !important;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/size.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/size.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,10 +1,0 @@
-// Sizing shortcuts
-
-.size(@width; @height) {
-  width: @width;
-  height: @height;
-}
-
-.square(@size) {
-  .size(@size; @size);
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/tab-focus.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/tab-focus.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-// WebKit-style focus
-
-.tab-focus() {
-  // WebKit-specific. Other browsers will keep their default outline style.
-  // (Initially tried to also force default via `outline: initial`,
-  // but that seems to erroneously remove the outline in Firefox altogether.)
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/table-row.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/table-row.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,28 +1,0 @@
-// Tables
-
-.table-row-variant(@state; @background) {
-  // Exact selectors below required to override `.table-striped` and prevent
-  // inheritance to nested tables.
-  .table > thead > tr,
-  .table > tbody > tr,
-  .table > tfoot > tr {
-    > td.@{state},
-    > th.@{state},
-    &.@{state} > td,
-    &.@{state} > th {
-      background-color: @background;
-    }
-  }
-
-  // Hover states for `.table-hover`
-  // Note: this is not available for cells or rows within `thead` or `tfoot`.
-  .table-hover > tbody > tr {
-    > td.@{state}:hover,
-    > th.@{state}:hover,
-    &.@{state}:hover > td,
-    &:hover > .@{state},
-    &.@{state}:hover > th {
-      background-color: darken(@background, 5%);
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/text-emphasis.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/text-emphasis.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,9 +1,0 @@
-// Typography
-
-.text-emphasis-variant(@color) {
-  color: @color;
-  a&:hover,
-  a&:focus {
-    color: darken(@color, 10%);
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/text-overflow.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/text-overflow.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,8 +1,0 @@
-// Text overflow
-// Requires inline-block or block for proper styling
-
-.text-overflow() {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
Index: trip-planner-front/node_modules/bootstrap/less/mixins/vendor-prefixes.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/mixins/vendor-prefixes.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,229 +1,0 @@
-// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix
-
-// Vendor Prefixes
-//
-// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
-// Autoprefixer in our Gruntfile. They have been removed in v4.
-
-// - Animations
-// - Backface visibility
-// - Box shadow
-// - Box sizing
-// - Content columns
-// - Hyphens
-// - Placeholder text
-// - Transformations
-// - Transitions
-// - User Select
-
-
-// Animations
-.animation(@animation) {
-  -webkit-animation: @animation;
-       -o-animation: @animation;
-          animation: @animation;
-}
-.animation-name(@name) {
-  -webkit-animation-name: @name;
-          animation-name: @name;
-}
-.animation-duration(@duration) {
-  -webkit-animation-duration: @duration;
-          animation-duration: @duration;
-}
-.animation-timing-function(@timing-function) {
-  -webkit-animation-timing-function: @timing-function;
-          animation-timing-function: @timing-function;
-}
-.animation-delay(@delay) {
-  -webkit-animation-delay: @delay;
-          animation-delay: @delay;
-}
-.animation-iteration-count(@iteration-count) {
-  -webkit-animation-iteration-count: @iteration-count;
-          animation-iteration-count: @iteration-count;
-}
-.animation-direction(@direction) {
-  -webkit-animation-direction: @direction;
-          animation-direction: @direction;
-}
-.animation-fill-mode(@fill-mode) {
-  -webkit-animation-fill-mode: @fill-mode;
-          animation-fill-mode: @fill-mode;
-}
-
-// Backface visibility
-// Prevent browsers from flickering when using CSS 3D transforms.
-// Default value is `visible`, but can be changed to `hidden`
-
-.backface-visibility(@visibility) {
-  -webkit-backface-visibility: @visibility;
-     -moz-backface-visibility: @visibility;
-          backface-visibility: @visibility;
-}
-
-// Drop shadows
-//
-// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
-// supported browsers that have box shadow capabilities now support it.
-
-.box-shadow(@shadow) {
-  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1
-          box-shadow: @shadow;
-}
-
-// Box sizing
-.box-sizing(@boxmodel) {
-  -webkit-box-sizing: @boxmodel;
-     -moz-box-sizing: @boxmodel;
-          box-sizing: @boxmodel;
-}
-
-// CSS3 Content Columns
-.content-columns(@column-count; @column-gap: @grid-gutter-width) {
-  -webkit-column-count: @column-count;
-     -moz-column-count: @column-count;
-          column-count: @column-count;
-  -webkit-column-gap: @column-gap;
-     -moz-column-gap: @column-gap;
-          column-gap: @column-gap;
-}
-
-// Optional hyphenation
-.hyphens(@mode: auto) {
-  -webkit-hyphens: @mode;
-     -moz-hyphens: @mode;
-      -ms-hyphens: @mode; // IE10+
-       -o-hyphens: @mode;
-          hyphens: @mode;
-  word-wrap: break-word;
-}
-
-// Placeholder text
-.placeholder(@color: @input-color-placeholder) {
-  // Firefox
-  &::-moz-placeholder {
-    color: @color;
-    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
-  }
-  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
-  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome
-}
-
-// Transformations
-.scale(@ratio) {
-  -webkit-transform: scale(@ratio);
-      -ms-transform: scale(@ratio); // IE9 only
-       -o-transform: scale(@ratio);
-          transform: scale(@ratio);
-}
-.scale(@ratioX; @ratioY) {
-  -webkit-transform: scale(@ratioX, @ratioY);
-      -ms-transform: scale(@ratioX, @ratioY); // IE9 only
-       -o-transform: scale(@ratioX, @ratioY);
-          transform: scale(@ratioX, @ratioY);
-}
-.scaleX(@ratio) {
-  -webkit-transform: scaleX(@ratio);
-      -ms-transform: scaleX(@ratio); // IE9 only
-       -o-transform: scaleX(@ratio);
-          transform: scaleX(@ratio);
-}
-.scaleY(@ratio) {
-  -webkit-transform: scaleY(@ratio);
-      -ms-transform: scaleY(@ratio); // IE9 only
-       -o-transform: scaleY(@ratio);
-          transform: scaleY(@ratio);
-}
-.skew(@x; @y) {
-  -webkit-transform: skewX(@x) skewY(@y);
-      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
-       -o-transform: skewX(@x) skewY(@y);
-          transform: skewX(@x) skewY(@y);
-}
-.translate(@x; @y) {
-  -webkit-transform: translate(@x, @y);
-      -ms-transform: translate(@x, @y); // IE9 only
-       -o-transform: translate(@x, @y);
-          transform: translate(@x, @y);
-}
-.translate3d(@x; @y; @z) {
-  -webkit-transform: translate3d(@x, @y, @z);
-          transform: translate3d(@x, @y, @z);
-}
-.rotate(@degrees) {
-  -webkit-transform: rotate(@degrees);
-      -ms-transform: rotate(@degrees); // IE9 only
-       -o-transform: rotate(@degrees);
-          transform: rotate(@degrees);
-}
-.rotateX(@degrees) {
-  -webkit-transform: rotateX(@degrees);
-      -ms-transform: rotateX(@degrees); // IE9 only
-       -o-transform: rotateX(@degrees);
-          transform: rotateX(@degrees);
-}
-.rotateY(@degrees) {
-  -webkit-transform: rotateY(@degrees);
-      -ms-transform: rotateY(@degrees); // IE9 only
-       -o-transform: rotateY(@degrees);
-          transform: rotateY(@degrees);
-}
-.perspective(@perspective) {
-  -webkit-perspective: @perspective;
-     -moz-perspective: @perspective;
-          perspective: @perspective;
-}
-.perspective-origin(@perspective) {
-  -webkit-perspective-origin: @perspective;
-     -moz-perspective-origin: @perspective;
-          perspective-origin: @perspective;
-}
-.transform-origin(@origin) {
-  -webkit-transform-origin: @origin;
-     -moz-transform-origin: @origin;
-      -ms-transform-origin: @origin; // IE9 only
-          transform-origin: @origin;
-}
-
-
-// Transitions
-
-.transition(@transition) {
-  -webkit-transition: @transition;
-       -o-transition: @transition;
-          transition: @transition;
-}
-.transition-property(@transition-property) {
-  -webkit-transition-property: @transition-property;
-          transition-property: @transition-property;
-}
-.transition-delay(@transition-delay) {
-  -webkit-transition-delay: @transition-delay;
-          transition-delay: @transition-delay;
-}
-.transition-duration(@transition-duration) {
-  -webkit-transition-duration: @transition-duration;
-          transition-duration: @transition-duration;
-}
-.transition-timing-function(@timing-function) {
-  -webkit-transition-timing-function: @timing-function;
-          transition-timing-function: @timing-function;
-}
-.transition-transform(@transition) {
-  -webkit-transition: -webkit-transform @transition;
-     -moz-transition: -moz-transform @transition;
-       -o-transition: -o-transform @transition;
-          transition: transform @transition;
-}
-
-
-// User select
-// For selecting text on the page
-
-.user-select(@select) {
-  -webkit-user-select: @select;
-     -moz-user-select: @select;
-      -ms-user-select: @select; // IE10+
-          user-select: @select;
-}
Index: trip-planner-front/node_modules/bootstrap/less/modals.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/modals.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,150 +1,0 @@
-//
-// Modals
-// --------------------------------------------------
-
-// .modal-open      - body class for killing the scroll
-// .modal           - container to scroll within
-// .modal-dialog    - positioning shell for the actual modal
-// .modal-content   - actual modal w/ bg and corners and shit
-
-// Kill the scroll on the body
-.modal-open {
-  overflow: hidden;
-}
-
-// Container that the modal scrolls within
-.modal {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: @zindex-modal;
-  display: none;
-  overflow: hidden;
-  -webkit-overflow-scrolling: touch;
-
-  // Prevent Chrome on Windows from adding a focus outline. For details, see
-  // https://github.com/twbs/bootstrap/pull/10951.
-  outline: 0;
-
-  // When fading in the modal, animate it to slide down
-  &.fade .modal-dialog {
-    .translate(0, -25%);
-    .transition-transform(~"0.3s ease-out");
-  }
-  &.in .modal-dialog { .translate(0, 0); }
-}
-.modal-open .modal {
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-// Shell div to position the modal with bottom padding
-.modal-dialog {
-  position: relative;
-  width: auto;
-  margin: 10px;
-}
-
-// Actual modal
-.modal-content {
-  position: relative;
-  background-color: @modal-content-bg;
-  background-clip: padding-box;
-  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
-  border: 1px solid @modal-content-border-color;
-  border-radius: @border-radius-large;
-  .box-shadow(0 3px 9px rgba(0, 0, 0, .5));
-  // Remove focus outline from opened modal
-  outline: 0;
-}
-
-// Modal background
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: @zindex-modal-background;
-  background-color: @modal-backdrop-bg;
-  // Fade for backdrop
-  &.fade { .opacity(0); }
-  &.in { .opacity(@modal-backdrop-opacity); }
-}
-
-// Modal header
-// Top section of the modal w/ title and dismiss
-.modal-header {
-  padding: @modal-title-padding;
-  border-bottom: 1px solid @modal-header-border-color;
-  &:extend(.clearfix all);
-}
-// Close icon
-.modal-header .close {
-  margin-top: -2px;
-}
-
-// Title text within header
-.modal-title {
-  margin: 0;
-  line-height: @modal-title-line-height;
-}
-
-// Modal body
-// Where all modal content resides (sibling of .modal-header and .modal-footer)
-.modal-body {
-  position: relative;
-  padding: @modal-inner-padding;
-}
-
-// Footer (for actions)
-.modal-footer {
-  padding: @modal-inner-padding;
-  text-align: right; // right align buttons
-  border-top: 1px solid @modal-footer-border-color;
-  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
-
-  // Properly space out buttons
-  .btn + .btn {
-    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
-    margin-left: 5px;
-  }
-  // but override that for button groups
-  .btn-group .btn + .btn {
-    margin-left: -1px;
-  }
-  // and override it for block buttons as well
-  .btn-block + .btn-block {
-    margin-left: 0;
-  }
-}
-
-// Measure scrollbar width for padding body during modal show/hide
-.modal-scrollbar-measure {
-  position: absolute;
-  top: -9999px;
-  width: 50px;
-  height: 50px;
-  overflow: scroll;
-}
-
-// Scale up the modal
-@media (min-width: @screen-sm-min) {
-  // Automatically set modal's width for larger viewports
-  .modal-dialog {
-    width: @modal-md;
-    margin: 30px auto;
-  }
-  .modal-content {
-    .box-shadow(0 5px 15px rgba(0, 0, 0, .5));
-  }
-
-  // Modal sizes
-  .modal-sm { width: @modal-sm; }
-}
-
-@media (min-width: @screen-md-min) {
-  .modal-lg { width: @modal-lg; }
-}
Index: trip-planner-front/node_modules/bootstrap/less/navbar.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/navbar.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,656 +1,0 @@
-// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, selector-max-class, declaration-no-important, selector-no-qualifying-type
-
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  position: relative;
-  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
-  margin-bottom: @navbar-margin-bottom;
-  border: 1px solid transparent;
-
-  // Prevent floats from breaking the navbar
-  &:extend(.clearfix all);
-
-  @media (min-width: @grid-float-breakpoint) {
-    border-radius: @navbar-border-radius;
-  }
-}
-
-
-// Navbar heading
-//
-// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
-// styling of responsive aspects.
-
-.navbar-header {
-  &:extend(.clearfix all);
-
-  @media (min-width: @grid-float-breakpoint) {
-    float: left;
-  }
-}
-
-
-// Navbar collapse (body)
-//
-// Group your navbar content into this for easy collapsing and expanding across
-// various device sizes. By default, this content is collapsed when <768px, but
-// will expand past that for a horizontal display.
-//
-// To start (on mobile devices) the navbar links, forms, and buttons are stacked
-// vertically and include a `max-height` to overflow in case you have too much
-// content for the user's viewport.
-
-.navbar-collapse {
-  padding-right: @navbar-padding-horizontal;
-  padding-left: @navbar-padding-horizontal;
-  overflow-x: visible;
-  border-top: 1px solid transparent;
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-  &:extend(.clearfix all);
-  -webkit-overflow-scrolling: touch;
-
-  &.in {
-    overflow-y: auto;
-  }
-
-  @media (min-width: @grid-float-breakpoint) {
-    width: auto;
-    border-top: 0;
-    box-shadow: none;
-
-    &.collapse {
-      display: block !important;
-      height: auto !important;
-      padding-bottom: 0; // Override default setting
-      overflow: visible !important;
-    }
-
-    &.in {
-      overflow-y: visible;
-    }
-
-    // Undo the collapse side padding for navbars with containers to ensure
-    // alignment of right-aligned contents.
-    .navbar-fixed-top &,
-    .navbar-static-top &,
-    .navbar-fixed-bottom & {
-      padding-right: 0;
-      padding-left: 0;
-    }
-  }
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  .navbar-collapse {
-    max-height: @navbar-collapse-max-height;
-
-    @media (max-device-width: @screen-xs-min) and (orientation: landscape) {
-      max-height: 200px;
-    }
-  }
-
-  // Fix the top/bottom navbars when screen real estate supports it
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: @zindex-navbar-fixed;
-
-  // Undo the rounded corners
-  @media (min-width: @grid-float-breakpoint) {
-    border-radius: 0;
-  }
-}
-
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0; // override .navbar defaults
-  border-width: 1px 0 0;
-}
-
-
-// Both navbar header and collapse
-//
-// When a container is present, change the behavior of the header and collapse.
-
-.container,
-.container-fluid {
-  > .navbar-header,
-  > .navbar-collapse {
-    margin-right: -@navbar-padding-horizontal;
-    margin-left: -@navbar-padding-horizontal;
-
-    @media (min-width: @grid-float-breakpoint) {
-      margin-right: 0;
-      margin-left: 0;
-    }
-  }
-}
-
-
-//
-// Navbar alignment options
-//
-// Display the navbar across the entirety of the page or fixed it to the top or
-// bottom of the page.
-
-// Static top (unfixed, but 100% wide) navbar
-.navbar-static-top {
-  z-index: @zindex-navbar;
-  border-width: 0 0 1px;
-
-  @media (min-width: @grid-float-breakpoint) {
-    border-radius: 0;
-  }
-}
-
-
-// Brand/project name
-
-.navbar-brand {
-  float: left;
-  height: @navbar-height;
-  padding: @navbar-padding-vertical @navbar-padding-horizontal;
-  font-size: @font-size-large;
-  line-height: @line-height-computed;
-
-  &:hover,
-  &:focus {
-    text-decoration: none;
-  }
-
-  > img {
-    display: block;
-  }
-
-  @media (min-width: @grid-float-breakpoint) {
-    .navbar > .container &,
-    .navbar > .container-fluid & {
-      margin-left: -@navbar-padding-horizontal;
-    }
-  }
-}
-
-
-// Navbar toggle
-//
-// Custom button for toggling the `.navbar-collapse`, powered by the collapse
-// JavaScript plugin.
-
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-right: @navbar-padding-horizontal;
-  .navbar-vertical-align(34px);
-  background-color: transparent;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: 1px solid transparent;
-  border-radius: @border-radius-base;
-
-  // We remove the `outline` here, but later compensate by attaching `:hover`
-  // styles to `:focus`.
-  &:focus {
-    outline: 0;
-  }
-
-  // Bars
-  .icon-bar {
-    display: block;
-    width: 22px;
-    height: 2px;
-    border-radius: 1px;
-  }
-  .icon-bar + .icon-bar {
-    margin-top: 4px;
-  }
-
-  @media (min-width: @grid-float-breakpoint) {
-    display: none;
-  }
-}
-
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with its own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;
-
-  > li > a {
-    padding-top: 10px;
-    padding-bottom: 10px;
-    line-height: @line-height-computed;
-  }
-
-  @media (max-width: @grid-float-breakpoint-max) {
-    // Dropdowns get custom display when collapsed
-    .open .dropdown-menu {
-      position: static;
-      float: none;
-      width: auto;
-      margin-top: 0;
-      background-color: transparent;
-      border: 0;
-      box-shadow: none;
-      > li > a,
-      .dropdown-header {
-        padding: 5px 15px 5px 25px;
-      }
-      > li > a {
-        line-height: @line-height-computed;
-        &:hover,
-        &:focus {
-          background-image: none;
-        }
-      }
-    }
-  }
-
-  // Uncollapse the nav
-  @media (min-width: @grid-float-breakpoint) {
-    float: left;
-    margin: 0;
-
-    > li {
-      float: left;
-      > a {
-        padding-top: @navbar-padding-vertical;
-        padding-bottom: @navbar-padding-vertical;
-      }
-    }
-  }
-}
-
-
-// Navbar form
-//
-// Extension of the `.form-inline` with some extra flavor for optimum display in
-// our navbars.
-
-.navbar-form {
-  padding: 10px @navbar-padding-horizontal;
-  margin-right: -@navbar-padding-horizontal;
-  margin-left: -@navbar-padding-horizontal;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  @shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-  .box-shadow(@shadow);
-
-  // Mixin behavior for optimum display
-  .form-inline();
-
-  .form-group {
-    @media (max-width: @grid-float-breakpoint-max) {
-      margin-bottom: 5px;
-
-      &:last-child {
-        margin-bottom: 0;
-      }
-    }
-  }
-
-  // Vertically center in expanded, horizontal navbar
-  .navbar-vertical-align(@input-height-base);
-
-  // Undo 100% width for pull classes
-  @media (min-width: @grid-float-breakpoint) {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    .box-shadow(none);
-  }
-}
-
-
-// Dropdown menus
-
-// Menu position and menu carets
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  .border-top-radius(0);
-}
-// Menu position and menu caret support for dropups via extra dropup class
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  margin-bottom: 0;
-  .border-top-radius(@navbar-border-radius);
-  .border-bottom-radius(0);
-}
-
-
-// Buttons in navbars
-//
-// Vertically center a button within a navbar (when *not* in a form).
-
-.navbar-btn {
-  .navbar-vertical-align(@input-height-base);
-
-  &.btn-sm {
-    .navbar-vertical-align(@input-height-small);
-  }
-  &.btn-xs {
-    .navbar-vertical-align(22);
-  }
-}
-
-
-// Text in navbars
-//
-// Add a class to make any element properly align itself vertically within the navbars.
-
-.navbar-text {
-  .navbar-vertical-align(@line-height-computed);
-
-  @media (min-width: @grid-float-breakpoint) {
-    float: left;
-    margin-right: @navbar-padding-horizontal;
-    margin-left: @navbar-padding-horizontal;
-  }
-}
-
-
-// Component alignment
-//
-// Repurpose the pull utilities as their own navbar utilities to avoid specificity
-// issues with parents and chaining. Only do this when the navbar is uncollapsed
-// though so that navbar contents properly stack and align in mobile.
-//
-// Declared after the navbar components to ensure more specificity on the margins.
-
-@media (min-width: @grid-float-breakpoint) {
-  .navbar-left  { .pull-left(); }
-  .navbar-right {
-    .pull-right();
-    margin-right: -@navbar-padding-horizontal;
-
-    ~ .navbar-right {
-      margin-right: 0;
-    }
-  }
-}
-
-
-// Alternate navbars
-// --------------------------------------------------
-
-// Default navbar
-.navbar-default {
-  background-color: @navbar-default-bg;
-  border-color: @navbar-default-border;
-
-  .navbar-brand {
-    color: @navbar-default-brand-color;
-    &:hover,
-    &:focus {
-      color: @navbar-default-brand-hover-color;
-      background-color: @navbar-default-brand-hover-bg;
-    }
-  }
-
-  .navbar-text {
-    color: @navbar-default-color;
-  }
-
-  .navbar-nav {
-    > li > a {
-      color: @navbar-default-link-color;
-
-      &:hover,
-      &:focus {
-        color: @navbar-default-link-hover-color;
-        background-color: @navbar-default-link-hover-bg;
-      }
-    }
-    > .active > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-default-link-active-color;
-        background-color: @navbar-default-link-active-bg;
-      }
-    }
-    > .disabled > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-default-link-disabled-color;
-        background-color: @navbar-default-link-disabled-bg;
-      }
-    }
-
-    // Dropdown menu items
-    // Remove background color from open dropdown
-    > .open > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-default-link-active-color;
-        background-color: @navbar-default-link-active-bg;
-      }
-    }
-
-    @media (max-width: @grid-float-breakpoint-max) {
-      // Dropdowns get custom display when collapsed
-      .open .dropdown-menu {
-        > li > a {
-          color: @navbar-default-link-color;
-          &:hover,
-          &:focus {
-            color: @navbar-default-link-hover-color;
-            background-color: @navbar-default-link-hover-bg;
-          }
-        }
-        > .active > a {
-          &,
-          &:hover,
-          &:focus {
-            color: @navbar-default-link-active-color;
-            background-color: @navbar-default-link-active-bg;
-          }
-        }
-        > .disabled > a {
-          &,
-          &:hover,
-          &:focus {
-            color: @navbar-default-link-disabled-color;
-            background-color: @navbar-default-link-disabled-bg;
-          }
-        }
-      }
-    }
-  }
-
-  .navbar-toggle {
-    border-color: @navbar-default-toggle-border-color;
-    &:hover,
-    &:focus {
-      background-color: @navbar-default-toggle-hover-bg;
-    }
-    .icon-bar {
-      background-color: @navbar-default-toggle-icon-bar-bg;
-    }
-  }
-
-  .navbar-collapse,
-  .navbar-form {
-    border-color: @navbar-default-border;
-  }
-
-
-  // Links in navbars
-  //
-  // Add a class to ensure links outside the navbar nav are colored correctly.
-
-  .navbar-link {
-    color: @navbar-default-link-color;
-    &:hover {
-      color: @navbar-default-link-hover-color;
-    }
-  }
-
-  .btn-link {
-    color: @navbar-default-link-color;
-    &:hover,
-    &:focus {
-      color: @navbar-default-link-hover-color;
-    }
-    &[disabled],
-    fieldset[disabled] & {
-      &:hover,
-      &:focus {
-        color: @navbar-default-link-disabled-color;
-      }
-    }
-  }
-}
-
-// Inverse navbar
-
-.navbar-inverse {
-  background-color: @navbar-inverse-bg;
-  border-color: @navbar-inverse-border;
-
-  .navbar-brand {
-    color: @navbar-inverse-brand-color;
-    &:hover,
-    &:focus {
-      color: @navbar-inverse-brand-hover-color;
-      background-color: @navbar-inverse-brand-hover-bg;
-    }
-  }
-
-  .navbar-text {
-    color: @navbar-inverse-color;
-  }
-
-  .navbar-nav {
-    > li > a {
-      color: @navbar-inverse-link-color;
-
-      &:hover,
-      &:focus {
-        color: @navbar-inverse-link-hover-color;
-        background-color: @navbar-inverse-link-hover-bg;
-      }
-    }
-    > .active > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-inverse-link-active-color;
-        background-color: @navbar-inverse-link-active-bg;
-      }
-    }
-    > .disabled > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-inverse-link-disabled-color;
-        background-color: @navbar-inverse-link-disabled-bg;
-      }
-    }
-
-    // Dropdowns
-    > .open > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @navbar-inverse-link-active-color;
-        background-color: @navbar-inverse-link-active-bg;
-      }
-    }
-
-    @media (max-width: @grid-float-breakpoint-max) {
-      // Dropdowns get custom display
-      .open .dropdown-menu {
-        > .dropdown-header {
-          border-color: @navbar-inverse-border;
-        }
-        .divider {
-          background-color: @navbar-inverse-border;
-        }
-        > li > a {
-          color: @navbar-inverse-link-color;
-          &:hover,
-          &:focus {
-            color: @navbar-inverse-link-hover-color;
-            background-color: @navbar-inverse-link-hover-bg;
-          }
-        }
-        > .active > a {
-          &,
-          &:hover,
-          &:focus {
-            color: @navbar-inverse-link-active-color;
-            background-color: @navbar-inverse-link-active-bg;
-          }
-        }
-        > .disabled > a {
-          &,
-          &:hover,
-          &:focus {
-            color: @navbar-inverse-link-disabled-color;
-            background-color: @navbar-inverse-link-disabled-bg;
-          }
-        }
-      }
-    }
-  }
-
-  // Darken the responsive nav toggle
-  .navbar-toggle {
-    border-color: @navbar-inverse-toggle-border-color;
-    &:hover,
-    &:focus {
-      background-color: @navbar-inverse-toggle-hover-bg;
-    }
-    .icon-bar {
-      background-color: @navbar-inverse-toggle-icon-bar-bg;
-    }
-  }
-
-  .navbar-collapse,
-  .navbar-form {
-    border-color: darken(@navbar-inverse-bg, 7%);
-  }
-
-  .navbar-link {
-    color: @navbar-inverse-link-color;
-    &:hover {
-      color: @navbar-inverse-link-hover-color;
-    }
-  }
-
-  .btn-link {
-    color: @navbar-inverse-link-color;
-    &:hover,
-    &:focus {
-      color: @navbar-inverse-link-hover-color;
-    }
-    &[disabled],
-    fieldset[disabled] & {
-      &:hover,
-      &:focus {
-        color: @navbar-inverse-link-disabled-color;
-      }
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/navs.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/navs.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,244 +1,0 @@
-// stylelint-disable selector-no-qualifying-type, selector-max-type
-
-//
-// Navs
-// --------------------------------------------------
-
-
-// Base class
-// --------------------------------------------------
-
-.nav {
-  padding-left: 0; // Override default ul/ol
-  margin-bottom: 0;
-  list-style: none;
-  &:extend(.clearfix all);
-
-  > li {
-    position: relative;
-    display: block;
-
-    > a {
-      position: relative;
-      display: block;
-      padding: @nav-link-padding;
-      &:hover,
-      &:focus {
-        text-decoration: none;
-        background-color: @nav-link-hover-bg;
-      }
-    }
-
-    // Disabled state sets text to gray and nukes hover/tab effects
-    &.disabled > a {
-      color: @nav-disabled-link-color;
-
-      &:hover,
-      &:focus {
-        color: @nav-disabled-link-hover-color;
-        text-decoration: none;
-        cursor: @cursor-disabled;
-        background-color: transparent;
-      }
-    }
-  }
-
-  // Open dropdowns
-  .open > a {
-    &,
-    &:hover,
-    &:focus {
-      background-color: @nav-link-hover-bg;
-      border-color: @link-color;
-    }
-  }
-
-  // Nav dividers (deprecated with v3.0.1)
-  //
-  // This should have been removed in v3 with the dropping of `.nav-list`, but
-  // we missed it. We don't currently support this anywhere, but in the interest
-  // of maintaining backward compatibility in case you use it, it's deprecated.
-  .nav-divider {
-    .nav-divider();
-  }
-
-  // Prevent IE8 from misplacing imgs
-  //
-  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
-  > li > a > img {
-    max-width: none;
-  }
-}
-
-
-// Tabs
-// -------------------------
-
-// Give the tabs something to sit on
-.nav-tabs {
-  border-bottom: 1px solid @nav-tabs-border-color;
-  > li {
-    float: left;
-    // Make the list-items overlay the bottom border
-    margin-bottom: -1px;
-
-    // Actual tabs (as links)
-    > a {
-      margin-right: 2px;
-      line-height: @line-height-base;
-      border: 1px solid transparent;
-      border-radius: @border-radius-base @border-radius-base 0 0;
-      &:hover {
-        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;
-      }
-    }
-
-    // Active state, and its :hover to override normal :hover
-    &.active > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @nav-tabs-active-link-hover-color;
-        cursor: default;
-        background-color: @nav-tabs-active-link-hover-bg;
-        border: 1px solid @nav-tabs-active-link-hover-border-color;
-        border-bottom-color: transparent;
-      }
-    }
-  }
-  // pulling this in mainly for less shorthand
-  &.nav-justified {
-    .nav-justified();
-    .nav-tabs-justified();
-  }
-}
-
-
-// Pills
-// -------------------------
-.nav-pills {
-  > li {
-    float: left;
-
-    // Links rendered as pills
-    > a {
-      border-radius: @nav-pills-border-radius;
-    }
-    + li {
-      margin-left: 2px;
-    }
-
-    // Active state
-    &.active > a {
-      &,
-      &:hover,
-      &:focus {
-        color: @nav-pills-active-link-hover-color;
-        background-color: @nav-pills-active-link-hover-bg;
-      }
-    }
-  }
-}
-
-
-// Stacked pills
-.nav-stacked {
-  > li {
-    float: none;
-    + li {
-      margin-top: 2px;
-      margin-left: 0; // no need for this gap between nav items
-    }
-  }
-}
-
-
-// Nav variations
-// --------------------------------------------------
-
-// Justified nav links
-// -------------------------
-
-.nav-justified {
-  width: 100%;
-
-  > li {
-    float: none;
-    > a {
-      margin-bottom: 5px;
-      text-align: center;
-    }
-  }
-
-  > .dropdown .dropdown-menu {
-    top: auto;
-    left: auto;
-  }
-
-  @media (min-width: @screen-sm-min) {
-    > li {
-      display: table-cell;
-      width: 1%;
-      > a {
-        margin-bottom: 0;
-      }
-    }
-  }
-}
-
-// Move borders to anchors instead of bottom of list
-//
-// Mixin for adding on top the shared `.nav-justified` styles for our tabs
-.nav-tabs-justified {
-  border-bottom: 0;
-
-  > li > a {
-    // Override margin from .nav-tabs
-    margin-right: 0;
-    border-radius: @border-radius-base;
-  }
-
-  > .active > a,
-  > .active > a:hover,
-  > .active > a:focus {
-    border: 1px solid @nav-tabs-justified-link-border-color;
-  }
-
-  @media (min-width: @screen-sm-min) {
-    > li > a {
-      border-bottom: 1px solid @nav-tabs-justified-link-border-color;
-      border-radius: @border-radius-base @border-radius-base 0 0;
-    }
-    > .active > a,
-    > .active > a:hover,
-    > .active > a:focus {
-      border-bottom-color: @nav-tabs-justified-active-link-border-color;
-    }
-  }
-}
-
-
-// Tabbable tabs
-// -------------------------
-
-// Hide tabbable panes to start, show them when `.active`
-.tab-content {
-  > .tab-pane {
-    display: none;
-  }
-  > .active {
-    display: block;
-  }
-}
-
-
-// Dropdowns
-// -------------------------
-
-// Specific dropdowns
-.nav-tabs .dropdown-menu {
-  // make dropdown border overlap tab border
-  margin-top: -1px;
-  // Remove the top rounded corners here since there is a hard edge above the menu
-  .border-top-radius(0);
-}
Index: trip-planner-front/node_modules/bootstrap/less/normalize.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/normalize.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,429 +1,0 @@
-// stylelint-disable
-
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-
-//
-// 1. Set default font family to sans-serif.
-// 2. Prevent iOS and IE text size adjust after device orientation change,
-//    without disabling user zoom.
-//
-
-html {
-  font-family: sans-serif; // 1
-  -ms-text-size-adjust: 100%; // 2
-  -webkit-text-size-adjust: 100%; // 2
-}
-
-//
-// Remove default margin.
-//
-
-body {
-  margin: 0;
-}
-
-// HTML5 display definitions
-// ==========================================================================
-
-//
-// Correct `block` display not defined for any HTML5 element in IE 8/9.
-// Correct `block` display not defined for `details` or `summary` in IE 10/11
-// and Firefox.
-// Correct `block` display not defined for `main` in IE 11.
-//
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
-  display: block;
-}
-
-//
-// 1. Correct `inline-block` display not defined in IE 8/9.
-// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
-//
-
-audio,
-canvas,
-progress,
-video {
-  display: inline-block; // 1
-  vertical-align: baseline; // 2
-}
-
-//
-// Prevent modern browsers from displaying `audio` without controls.
-// Remove excess height in iOS 5 devices.
-//
-
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-
-//
-// Address `[hidden]` styling not present in IE 8/9/10.
-// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
-//
-
-[hidden],
-template {
-  display: none;
-}
-
-// Links
-// ==========================================================================
-
-//
-// Remove the gray background color from active links in IE 10.
-//
-
-a {
-  background-color: transparent;
-}
-
-//
-// Improve readability of focused elements when they are also in an
-// active/hover state.
-//
-
-a:active,
-a:hover {
-  outline: 0;
-}
-
-// Text-level semantics
-// ==========================================================================
-
-//
-// 1. Remove the bottom border in Chrome 57- and Firefox 39-.
-// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
-//
-
-abbr[title] {
-  border-bottom: none; // 1
-  text-decoration: underline; // 2
-  text-decoration: underline dotted; // 2
-}
-
-//
-// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
-//
-
-b,
-strong {
-  font-weight: bold;
-}
-
-//
-// Address styling not present in Safari and Chrome.
-//
-
-dfn {
-  font-style: italic;
-}
-
-//
-// Address variable `h1` font-size and margin within `section` and `article`
-// contexts in Firefox 4+, Safari, and Chrome.
-//
-
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-
-//
-// Address styling not present in IE 8/9.
-//
-
-mark {
-  background: #ff0;
-  color: #000;
-}
-
-//
-// Address inconsistent and variable font size in all browsers.
-//
-
-small {
-  font-size: 80%;
-}
-
-//
-// Prevent `sub` and `sup` affecting `line-height` in all browsers.
-//
-
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-// Embedded content
-// ==========================================================================
-
-//
-// Remove border when inside `a` element in IE 8/9/10.
-//
-
-img {
-  border: 0;
-}
-
-//
-// Correct overflow not hidden in IE 9/10/11.
-//
-
-svg:not(:root) {
-  overflow: hidden;
-}
-
-// Grouping content
-// ==========================================================================
-
-//
-// Address margin not present in IE 8/9 and Safari.
-//
-
-figure {
-  margin: 1em 40px;
-}
-
-//
-// Address differences between Firefox and other browsers.
-//
-
-hr {
-  box-sizing: content-box;
-  height: 0;
-}
-
-//
-// Contain overflow in all browsers.
-//
-
-pre {
-  overflow: auto;
-}
-
-//
-// Address odd `em`-unit font size rendering in all browsers.
-//
-
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-
-// Forms
-// ==========================================================================
-
-//
-// Known limitation: by default, Chrome and Safari on OS X allow very limited
-// styling of `select`, unless a `border` property is set.
-//
-
-//
-// 1. Correct color not being inherited.
-//    Known issue: affects color of disabled elements.
-// 2. Correct font properties not being inherited.
-// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
-//
-
-button,
-input,
-optgroup,
-select,
-textarea {
-  color: inherit; // 1
-  font: inherit; // 2
-  margin: 0; // 3
-}
-
-//
-// Address `overflow` set to `hidden` in IE 8/9/10/11.
-//
-
-button {
-  overflow: visible;
-}
-
-//
-// Address inconsistent `text-transform` inheritance for `button` and `select`.
-// All other form control elements do not inherit `text-transform` values.
-// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
-// Correct `select` style inheritance in Firefox.
-//
-
-button,
-select {
-  text-transform: none;
-}
-
-//
-// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
-//    and `video` controls.
-// 2. Correct inability to style clickable `input` types in iOS.
-// 3. Improve usability and consistency of cursor style between image-type
-//    `input` and others.
-//
-
-button,
-html input[type="button"], // 1
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button; // 2
-  cursor: pointer; // 3
-}
-
-//
-// Re-set default cursor for disabled elements.
-//
-
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-
-//
-// Remove inner padding and border in Firefox 4+.
-//
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-
-//
-// Address Firefox 4+ setting `line-height` on `input` using `!important` in
-// the UA stylesheet.
-//
-
-input {
-  line-height: normal;
-}
-
-//
-// It's recommended that you don't attempt to style these elements.
-// Firefox's implementation doesn't respect box-sizing, padding, or width.
-//
-// 1. Address box sizing set to `content-box` in IE 8/9/10.
-// 2. Remove excess padding in IE 8/9/10.
-//
-
-input[type="checkbox"],
-input[type="radio"] {
-  box-sizing: border-box; // 1
-  padding: 0; // 2
-}
-
-//
-// Fix the cursor style for Chrome's increment/decrement buttons. For certain
-// `font-size` values of the `input`, it causes the cursor style of the
-// decrement button to change from `default` to `text`.
-//
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-
-//
-// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
-// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
-//
-
-input[type="search"] {
-  -webkit-appearance: textfield; // 1
-  box-sizing: content-box; //2
-}
-
-//
-// Remove inner padding and search cancel button in Safari and Chrome on OS X.
-// Safari (but not Chrome) clips the cancel button when the search input has
-// padding (and `textfield` appearance).
-//
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-//
-// Define consistent border, margin, and padding.
-//
-
-fieldset {
-  border: 1px solid #c0c0c0;
-  margin: 0 2px;
-  padding: 0.35em 0.625em 0.75em;
-}
-
-//
-// 1. Correct `color` not being inherited in IE 8/9/10/11.
-// 2. Remove padding so people aren't caught out if they zero out fieldsets.
-//
-
-legend {
-  border: 0; // 1
-  padding: 0; // 2
-}
-
-//
-// Remove default vertical scrollbar in IE 8/9/10/11.
-//
-
-textarea {
-  overflow: auto;
-}
-
-//
-// Don't inherit the `font-weight` (applied by a rule above).
-// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
-//
-
-optgroup {
-  font-weight: bold;
-}
-
-// Tables
-// ==========================================================================
-
-//
-// Remove most spacing between table cells.
-//
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-td,
-th {
-  padding: 0;
-}
Index: trip-planner-front/node_modules/bootstrap/less/pager.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/pager.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//
-// Pager pagination
-// --------------------------------------------------
-
-
-.pager {
-  padding-left: 0;
-  margin: @line-height-computed 0;
-  text-align: center;
-  list-style: none;
-  &:extend(.clearfix all);
-  li {
-    display: inline;
-    > a,
-    > span {
-      display: inline-block;
-      padding: 5px 14px;
-      background-color: @pager-bg;
-      border: 1px solid @pager-border;
-      border-radius: @pager-border-radius;
-    }
-
-    > a:hover,
-    > a:focus {
-      text-decoration: none;
-      background-color: @pager-hover-bg;
-    }
-  }
-
-  .next {
-    > a,
-    > span {
-      float: right;
-    }
-  }
-
-  .previous {
-    > a,
-    > span {
-      float: left;
-    }
-  }
-
-  .disabled {
-    > a,
-    > a:hover,
-    > a:focus,
-    > span {
-      color: @pager-disabled-color;
-      cursor: @cursor-disabled;
-      background-color: @pager-bg;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/pagination.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/pagination.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,86 +1,0 @@
-//
-// Pagination (multiple pages)
-// --------------------------------------------------
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: @line-height-computed 0;
-  border-radius: @border-radius-base;
-
-  > li {
-    display: inline; // Remove list-style and block-level defaults
-    > a,
-    > span {
-      position: relative;
-      float: left; // Collapse white-space
-      padding: @padding-base-vertical @padding-base-horizontal;
-      margin-left: -1px;
-      line-height: @line-height-base;
-      color: @pagination-color;
-      text-decoration: none;
-      background-color: @pagination-bg;
-      border: 1px solid @pagination-border;
-
-      &:hover,
-      &:focus {
-        z-index: 2;
-        color: @pagination-hover-color;
-        background-color: @pagination-hover-bg;
-        border-color: @pagination-hover-border;
-      }
-    }
-    &:first-child {
-      > a,
-      > span {
-        margin-left: 0;
-        .border-left-radius(@border-radius-base);
-      }
-    }
-    &:last-child {
-      > a,
-      > span {
-        .border-right-radius(@border-radius-base);
-      }
-    }
-  }
-
-  > .active > a,
-  > .active > span {
-    &,
-    &:hover,
-    &:focus {
-      z-index: 3;
-      color: @pagination-active-color;
-      cursor: default;
-      background-color: @pagination-active-bg;
-      border-color: @pagination-active-border;
-    }
-  }
-
-  > .disabled {
-    > span,
-    > span:hover,
-    > span:focus,
-    > a,
-    > a:hover,
-    > a:focus {
-      color: @pagination-disabled-color;
-      cursor: @cursor-disabled;
-      background-color: @pagination-disabled-bg;
-      border-color: @pagination-disabled-border;
-    }
-  }
-}
-
-// Sizing
-// --------------------------------------------------
-
-// Large
-.pagination-lg {
-  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
-}
-
-// Small
-.pagination-sm {
-  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
-}
Index: trip-planner-front/node_modules/bootstrap/less/panels.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/panels.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,273 +1,0 @@
-// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, no-duplicate-selectors
-
-//
-// Panels
-// --------------------------------------------------
-
-
-// Base class
-.panel {
-  margin-bottom: @line-height-computed;
-  background-color: @panel-bg;
-  border: 1px solid transparent;
-  border-radius: @panel-border-radius;
-  .box-shadow(0 1px 1px rgba(0, 0, 0, .05));
-}
-
-// Panel contents
-.panel-body {
-  padding: @panel-body-padding;
-  &:extend(.clearfix all);
-}
-
-// Optional heading
-.panel-heading {
-  padding: @panel-heading-padding;
-  border-bottom: 1px solid transparent;
-  .border-top-radius((@panel-border-radius - 1));
-
-  > .dropdown .dropdown-toggle {
-    color: inherit;
-  }
-}
-
-// Within heading, strip any `h*` tag of its default margins for spacing.
-.panel-title {
-  margin-top: 0;
-  margin-bottom: 0;
-  font-size: ceil((@font-size-base * 1.125));
-  color: inherit;
-
-  > a,
-  > small,
-  > .small,
-  > small > a,
-  > .small > a {
-    color: inherit;
-  }
-}
-
-// Optional footer (stays gray in every modifier class)
-.panel-footer {
-  padding: @panel-footer-padding;
-  background-color: @panel-footer-bg;
-  border-top: 1px solid @panel-inner-border;
-  .border-bottom-radius((@panel-border-radius - 1));
-}
-
-
-// List groups in panels
-//
-// By default, space out list group content from panel headings to account for
-// any kind of custom content between the two.
-
-.panel {
-  > .list-group,
-  > .panel-collapse > .list-group {
-    margin-bottom: 0;
-
-    .list-group-item {
-      border-width: 1px 0;
-      border-radius: 0;
-    }
-
-    // Add border top radius for first one
-    &:first-child {
-      .list-group-item:first-child {
-        border-top: 0;
-        .border-top-radius((@panel-border-radius - 1));
-      }
-    }
-
-    // Add border bottom radius for last one
-    &:last-child {
-      .list-group-item:last-child {
-        border-bottom: 0;
-        .border-bottom-radius((@panel-border-radius - 1));
-      }
-    }
-  }
-  > .panel-heading + .panel-collapse > .list-group {
-    .list-group-item:first-child {
-      .border-top-radius(0);
-    }
-  }
-}
-// Collapse space between when there's no additional content.
-.panel-heading + .list-group {
-  .list-group-item:first-child {
-    border-top-width: 0;
-  }
-}
-.list-group + .panel-footer {
-  border-top-width: 0;
-}
-
-// Tables in panels
-//
-// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
-// watch it go full width.
-
-.panel {
-  > .table,
-  > .table-responsive > .table,
-  > .panel-collapse > .table {
-    margin-bottom: 0;
-
-    caption {
-      padding-right: @panel-body-padding;
-      padding-left: @panel-body-padding;
-    }
-  }
-  // Add border top radius for first one
-  > .table:first-child,
-  > .table-responsive:first-child > .table:first-child {
-    .border-top-radius((@panel-border-radius - 1));
-
-    > thead:first-child,
-    > tbody:first-child {
-      > tr:first-child {
-        border-top-left-radius: (@panel-border-radius - 1);
-        border-top-right-radius: (@panel-border-radius - 1);
-
-        td:first-child,
-        th:first-child {
-          border-top-left-radius: (@panel-border-radius - 1);
-        }
-        td:last-child,
-        th:last-child {
-          border-top-right-radius: (@panel-border-radius - 1);
-        }
-      }
-    }
-  }
-  // Add border bottom radius for last one
-  > .table:last-child,
-  > .table-responsive:last-child > .table:last-child {
-    .border-bottom-radius((@panel-border-radius - 1));
-
-    > tbody:last-child,
-    > tfoot:last-child {
-      > tr:last-child {
-        border-bottom-right-radius: (@panel-border-radius - 1);
-        border-bottom-left-radius: (@panel-border-radius - 1);
-
-        td:first-child,
-        th:first-child {
-          border-bottom-left-radius: (@panel-border-radius - 1);
-        }
-        td:last-child,
-        th:last-child {
-          border-bottom-right-radius: (@panel-border-radius - 1);
-        }
-      }
-    }
-  }
-  > .panel-body + .table,
-  > .panel-body + .table-responsive,
-  > .table + .panel-body,
-  > .table-responsive + .panel-body {
-    border-top: 1px solid @table-border-color;
-  }
-  > .table > tbody:first-child > tr:first-child th,
-  > .table > tbody:first-child > tr:first-child td {
-    border-top: 0;
-  }
-  > .table-bordered,
-  > .table-responsive > .table-bordered {
-    border: 0;
-    > thead,
-    > tbody,
-    > tfoot {
-      > tr {
-        > th:first-child,
-        > td:first-child {
-          border-left: 0;
-        }
-        > th:last-child,
-        > td:last-child {
-          border-right: 0;
-        }
-      }
-    }
-    > thead,
-    > tbody {
-      > tr:first-child {
-        > td,
-        > th {
-          border-bottom: 0;
-        }
-      }
-    }
-    > tbody,
-    > tfoot {
-      > tr:last-child {
-        > td,
-        > th {
-          border-bottom: 0;
-        }
-      }
-    }
-  }
-  > .table-responsive {
-    margin-bottom: 0;
-    border: 0;
-  }
-}
-
-
-// Collapsible panels (aka, accordion)
-//
-// Wrap a series of panels in `.panel-group` to turn them into an accordion with
-// the help of our collapse JavaScript plugin.
-
-.panel-group {
-  margin-bottom: @line-height-computed;
-
-  // Tighten up margin so it's only between panels
-  .panel {
-    margin-bottom: 0;
-    border-radius: @panel-border-radius;
-
-    + .panel {
-      margin-top: 5px;
-    }
-  }
-
-  .panel-heading {
-    border-bottom: 0;
-
-    + .panel-collapse > .panel-body,
-    + .panel-collapse > .list-group {
-      border-top: 1px solid @panel-inner-border;
-    }
-  }
-
-  .panel-footer {
-    border-top: 0;
-    + .panel-collapse .panel-body {
-      border-bottom: 1px solid @panel-inner-border;
-    }
-  }
-}
-
-
-// Contextual variations
-.panel-default {
-  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);
-}
-.panel-primary {
-  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);
-}
-.panel-success {
-  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);
-}
-.panel-info {
-  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);
-}
-.panel-warning {
-  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);
-}
-.panel-danger {
-  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);
-}
Index: trip-planner-front/node_modules/bootstrap/less/popovers.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/popovers.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// Popovers
-// --------------------------------------------------
-
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: @zindex-popover;
-  display: none;
-  max-width: @popover-max-width;
-  padding: 1px;
-  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
-  // So reset our font and text properties to avoid inheriting weird values.
-  .reset-text();
-  font-size: @font-size-base;
-  background-color: @popover-bg;
-  background-clip: padding-box;
-  border: 1px solid @popover-fallback-border-color;
-  border: 1px solid @popover-border-color;
-  border-radius: @border-radius-large;
-  .box-shadow(0 5px 10px rgba(0, 0, 0, .2));
-
-  // Offset the popover to account for the popover arrow
-  &.top { margin-top: -@popover-arrow-width; }
-  &.right { margin-left: @popover-arrow-width; }
-  &.bottom { margin-top: @popover-arrow-width; }
-  &.left { margin-left: -@popover-arrow-width; }
-
-  // Arrows
-  // .arrow is outer, .arrow:after is inner
-  > .arrow {
-    border-width: @popover-arrow-outer-width;
-
-    &,
-    &:after {
-      position: absolute;
-      display: block;
-      width: 0;
-      height: 0;
-      border-color: transparent;
-      border-style: solid;
-    }
-
-    &:after {
-      content: "";
-      border-width: @popover-arrow-width;
-    }
-  }
-
-  &.top > .arrow {
-    bottom: -@popover-arrow-outer-width;
-    left: 50%;
-    margin-left: -@popover-arrow-outer-width;
-    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback
-    border-top-color: @popover-arrow-outer-color;
-    border-bottom-width: 0;
-    &:after {
-      bottom: 1px;
-      margin-left: -@popover-arrow-width;
-      content: " ";
-      border-top-color: @popover-arrow-color;
-      border-bottom-width: 0;
-    }
-  }
-  &.right > .arrow {
-    top: 50%;
-    left: -@popover-arrow-outer-width;
-    margin-top: -@popover-arrow-outer-width;
-    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback
-    border-right-color: @popover-arrow-outer-color;
-    border-left-width: 0;
-    &:after {
-      bottom: -@popover-arrow-width;
-      left: 1px;
-      content: " ";
-      border-right-color: @popover-arrow-color;
-      border-left-width: 0;
-    }
-  }
-  &.bottom > .arrow {
-    top: -@popover-arrow-outer-width;
-    left: 50%;
-    margin-left: -@popover-arrow-outer-width;
-    border-top-width: 0;
-    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback
-    border-bottom-color: @popover-arrow-outer-color;
-    &:after {
-      top: 1px;
-      margin-left: -@popover-arrow-width;
-      content: " ";
-      border-top-width: 0;
-      border-bottom-color: @popover-arrow-color;
-    }
-  }
-
-  &.left > .arrow {
-    top: 50%;
-    right: -@popover-arrow-outer-width;
-    margin-top: -@popover-arrow-outer-width;
-    border-right-width: 0;
-    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback
-    border-left-color: @popover-arrow-outer-color;
-    &:after {
-      right: 1px;
-      bottom: -@popover-arrow-width;
-      content: " ";
-      border-right-width: 0;
-      border-left-color: @popover-arrow-color;
-    }
-  }
-}
-
-.popover-title {
-  padding: 8px 14px;
-  margin: 0; // reset heading margin
-  font-size: @font-size-base;
-  background-color: @popover-title-bg;
-  border-bottom: 1px solid darken(@popover-title-bg, 5%);
-  border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
Index: trip-planner-front/node_modules/bootstrap/less/print.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/print.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,101 +1,0 @@
-// stylelint-disable declaration-no-important, selector-no-qualifying-type
-
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-
-// ==========================================================================
-// Print styles.
-// Inlined to avoid the additional HTTP request: h5bp.com/r
-// ==========================================================================
-
-@media print {
-  *,
-  *:before,
-  *:after {
-    color: #000 !important; // Black prints faster: h5bp.com/s
-    text-shadow: none !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-
-  // Don't show links that are fragment identifiers,
-  // or use the `javascript:` pseudo protocol
-  a[href^="#"]:after,
-  a[href^="javascript:"]:after {
-    content: "";
-  }
-
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-
-  thead {
-    display: table-header-group; // h5bp.com/t
-  }
-
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-
-  img {
-    max-width: 100% !important;
-  }
-
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-
-  // Bootstrap specific changes start
-
-  // Bootstrap components
-  .navbar {
-    display: none;
-  }
-  .btn,
-  .dropup > .btn {
-    > .caret {
-      border-top-color: #000 !important;
-    }
-  }
-  .label {
-    border: 1px solid #000;
-  }
-
-  .table {
-    border-collapse: collapse !important;
-
-    td,
-    th {
-      background-color: #fff !important;
-    }
-  }
-  .table-bordered {
-    th,
-    td {
-      border: 1px solid #ddd !important;
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/progress-bars.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/progress-bars.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,89 +1,0 @@
-// stylelint-disable at-rule-no-vendor-prefix
-
-//
-// Progress bars
-// --------------------------------------------------
-
-
-// Bar animations
-// -------------------------
-
-// WebKit
-@-webkit-keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-// Spec and IE10+
-@keyframes progress-bar-stripes {
-  from  { background-position: 40px 0; }
-  to    { background-position: 0 0; }
-}
-
-
-// Bar itself
-// -------------------------
-
-// Outer container
-.progress {
-  height: @line-height-computed;
-  margin-bottom: @line-height-computed;
-  overflow: hidden;
-  background-color: @progress-bg;
-  border-radius: @progress-border-radius;
-  .box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));
-}
-
-// Bar of progress
-.progress-bar {
-  float: left;
-  width: 0%;
-  height: 100%;
-  font-size: @font-size-small;
-  line-height: @line-height-computed;
-  color: @progress-bar-color;
-  text-align: center;
-  background-color: @progress-bar-bg;
-  .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));
-  .transition(width .6s ease);
-}
-
-// Striped bars
-//
-// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
-// `.progress-bar-striped` class, which you just add to an existing
-// `.progress-bar`.
-.progress-striped .progress-bar,
-.progress-bar-striped {
-  #gradient > .striped();
-  background-size: 40px 40px;
-}
-
-// Call animation for the active one
-//
-// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
-// `.progress-bar.active` approach.
-.progress.active .progress-bar,
-.progress-bar.active {
-  .animation(progress-bar-stripes 2s linear infinite);
-}
-
-
-// Variations
-// -------------------------
-
-.progress-bar-success {
-  .progress-bar-variant(@progress-bar-success-bg);
-}
-
-.progress-bar-info {
-  .progress-bar-variant(@progress-bar-info-bg);
-}
-
-.progress-bar-warning {
-  .progress-bar-variant(@progress-bar-warning-bg);
-}
-
-.progress-bar-danger {
-  .progress-bar-variant(@progress-bar-danger-bg);
-}
Index: trip-planner-front/node_modules/bootstrap/less/responsive-embed.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/responsive-embed.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,35 +1,0 @@
-// Embeds responsive
-//
-// Credit: Nicolas Gallagher and SUIT CSS.
-
-.embed-responsive {
-  position: relative;
-  display: block;
-  height: 0;
-  padding: 0;
-  overflow: hidden;
-
-  .embed-responsive-item,
-  iframe,
-  embed,
-  object,
-  video {
-    position: absolute;
-    top: 0;
-    bottom: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    border: 0;
-  }
-}
-
-// Modifier class for 16:9 aspect ratio
-.embed-responsive-16by9 {
-  padding-bottom: 56.25%;
-}
-
-// Modifier class for 4:3 aspect ratio
-.embed-responsive-4by3 {
-  padding-bottom: 75%;
-}
Index: trip-planner-front/node_modules/bootstrap/less/responsive-utilities.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/responsive-utilities.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,196 +1,0 @@
-// stylelint-disable declaration-no-important, at-rule-no-vendor-prefix
-
-//
-// Responsive: Utility classes
-// --------------------------------------------------
-
-
-// IE10 in Windows (Phone) 8
-//
-// Support for responsive views via media queries is kind of borked in IE10, for
-// Surface/desktop in split view and for Windows Phone 8. This particular fix
-// must be accompanied by a snippet of JavaScript to sniff the user agent and
-// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
-// our Getting Started page for more information on this bug.
-//
-// For more information, see the following:
-//
-// Issue: https://github.com/twbs/bootstrap/issues/10497
-// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width
-// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/
-// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
-
-@-ms-viewport {
-  width: device-width;
-}
-
-
-// Visibility utilities
-// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
-  .responsive-invisibility();
-}
-
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
-  display: none !important;
-}
-
-.visible-xs {
-  @media (max-width: @screen-xs-max) {
-    .responsive-visibility();
-  }
-}
-.visible-xs-block {
-  @media (max-width: @screen-xs-max) {
-    display: block !important;
-  }
-}
-.visible-xs-inline {
-  @media (max-width: @screen-xs-max) {
-    display: inline !important;
-  }
-}
-.visible-xs-inline-block {
-  @media (max-width: @screen-xs-max) {
-    display: inline-block !important;
-  }
-}
-
-.visible-sm {
-  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
-    .responsive-visibility();
-  }
-}
-.visible-sm-block {
-  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
-    display: block !important;
-  }
-}
-.visible-sm-inline {
-  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
-    display: inline !important;
-  }
-}
-.visible-sm-inline-block {
-  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
-    display: inline-block !important;
-  }
-}
-
-.visible-md {
-  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
-    .responsive-visibility();
-  }
-}
-.visible-md-block {
-  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
-    display: block !important;
-  }
-}
-.visible-md-inline {
-  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
-    display: inline !important;
-  }
-}
-.visible-md-inline-block {
-  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
-    display: inline-block !important;
-  }
-}
-
-.visible-lg {
-  @media (min-width: @screen-lg-min) {
-    .responsive-visibility();
-  }
-}
-.visible-lg-block {
-  @media (min-width: @screen-lg-min) {
-    display: block !important;
-  }
-}
-.visible-lg-inline {
-  @media (min-width: @screen-lg-min) {
-    display: inline !important;
-  }
-}
-.visible-lg-inline-block {
-  @media (min-width: @screen-lg-min) {
-    display: inline-block !important;
-  }
-}
-
-.hidden-xs {
-  @media (max-width: @screen-xs-max) {
-    .responsive-invisibility();
-  }
-}
-.hidden-sm {
-  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
-    .responsive-invisibility();
-  }
-}
-.hidden-md {
-  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
-    .responsive-invisibility();
-  }
-}
-.hidden-lg {
-  @media (min-width: @screen-lg-min) {
-    .responsive-invisibility();
-  }
-}
-
-
-// Print utilities
-//
-// Media queries are placed on the inside to be mixin-friendly.
-
-// Note: Deprecated .visible-print as of v3.2.0
-.visible-print {
-  .responsive-invisibility();
-
-  @media print {
-    .responsive-visibility();
-  }
-}
-.visible-print-block {
-  display: none !important;
-
-  @media print {
-    display: block !important;
-  }
-}
-.visible-print-inline {
-  display: none !important;
-
-  @media print {
-    display: inline !important;
-  }
-}
-.visible-print-inline-block {
-  display: none !important;
-
-  @media print {
-    display: inline-block !important;
-  }
-}
-
-.hidden-print {
-  @media print {
-    .responsive-invisibility();
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/scaffolding.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/scaffolding.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,161 +1,0 @@
-//
-// Scaffolding
-// --------------------------------------------------
-
-
-// Reset the box-sizing
-//
-// Heads up! This reset may cause conflicts with some third-party widgets.
-// For recommendations on resolving such conflicts, see
-// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing
-* {
-  .box-sizing(border-box);
-}
-*:before,
-*:after {
-  .box-sizing(border-box);
-}
-
-
-// Body reset
-
-html {
-  font-size: 10px;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-body {
-  font-family: @font-family-base;
-  font-size: @font-size-base;
-  line-height: @line-height-base;
-  color: @text-color;
-  background-color: @body-bg;
-}
-
-// Reset fonts for relevant elements
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-
-
-// Links
-
-a {
-  color: @link-color;
-  text-decoration: none;
-
-  &:hover,
-  &:focus {
-    color: @link-hover-color;
-    text-decoration: @link-hover-decoration;
-  }
-
-  &:focus {
-    .tab-focus();
-  }
-}
-
-
-// Figures
-//
-// We reset this here because previously Normalize had no `figure` margins. This
-// ensures we don't break anyone's use of the element.
-
-figure {
-  margin: 0;
-}
-
-
-// Images
-
-img {
-  vertical-align: middle;
-}
-
-// Responsive images (ensure images don't scale beyond their parents)
-.img-responsive {
-  .img-responsive();
-}
-
-// Rounded corners
-.img-rounded {
-  border-radius: @border-radius-large;
-}
-
-// Image thumbnails
-//
-// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
-.img-thumbnail {
-  padding: @thumbnail-padding;
-  line-height: @line-height-base;
-  background-color: @thumbnail-bg;
-  border: 1px solid @thumbnail-border;
-  border-radius: @thumbnail-border-radius;
-  .transition(all .2s ease-in-out);
-
-  // Keep them at most 100% wide
-  .img-responsive(inline-block);
-}
-
-// Perfect circle
-.img-circle {
-  border-radius: 50%; // set radius in percents
-}
-
-
-// Horizontal rules
-
-hr {
-  margin-top: @line-height-computed;
-  margin-bottom: @line-height-computed;
-  border: 0;
-  border-top: 1px solid @hr-border;
-}
-
-
-// Only display content to screen readers
-//
-// See: https://a11yproject.com/posts/how-to-hide-content
-
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-
-// Use in conjunction with .sr-only to only display content when it's focused.
-// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
-// Credit: HTML5 Boilerplate
-
-.sr-only-focusable {
-  &:active,
-  &:focus {
-    position: static;
-    width: auto;
-    height: auto;
-    margin: 0;
-    overflow: visible;
-    clip: auto;
-  }
-}
-
-
-// iOS "clickable elements" fix for role="button"
-//
-// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
-// for traditionally non-focusable elements with role="button"
-// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
-
-[role="button"] {
-  cursor: pointer;
-}
Index: trip-planner-front/node_modules/bootstrap/less/tables.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/tables.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,236 +1,0 @@
-// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type
-
-//
-// Tables
-// --------------------------------------------------
-
-
-table {
-  background-color: @table-bg;
-
-  // Table cell sizing
-  //
-  // Reset default table behavior
-
-  col[class*="col-"] {
-    position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
-    display: table-column;
-    float: none;
-  }
-
-  td,
-  th {
-    &[class*="col-"] {
-      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
-      display: table-cell;
-      float: none;
-    }
-  }
-}
-
-caption {
-  padding-top: @table-cell-padding;
-  padding-bottom: @table-cell-padding;
-  color: @text-muted;
-  text-align: left;
-}
-
-th {
-  text-align: left;
-}
-
-
-// Baseline styles
-
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: @line-height-computed;
-  // Cells
-  > thead,
-  > tbody,
-  > tfoot {
-    > tr {
-      > th,
-      > td {
-        padding: @table-cell-padding;
-        line-height: @line-height-base;
-        vertical-align: top;
-        border-top: 1px solid @table-border-color;
-      }
-    }
-  }
-  // Bottom align for column headings
-  > thead > tr > th {
-    vertical-align: bottom;
-    border-bottom: 2px solid @table-border-color;
-  }
-  // Remove top border from thead by default
-  > caption + thead,
-  > colgroup + thead,
-  > thead:first-child {
-    > tr:first-child {
-      > th,
-      > td {
-        border-top: 0;
-      }
-    }
-  }
-  // Account for multiple tbody instances
-  > tbody + tbody {
-    border-top: 2px solid @table-border-color;
-  }
-
-  // Nesting
-  .table {
-    background-color: @body-bg;
-  }
-}
-
-
-// Condensed table w/ half padding
-
-.table-condensed {
-  > thead,
-  > tbody,
-  > tfoot {
-    > tr {
-      > th,
-      > td {
-        padding: @table-condensed-cell-padding;
-      }
-    }
-  }
-}
-
-
-// Bordered version
-//
-// Add borders all around the table and between all the columns.
-
-.table-bordered {
-  border: 1px solid @table-border-color;
-  > thead,
-  > tbody,
-  > tfoot {
-    > tr {
-      > th,
-      > td {
-        border: 1px solid @table-border-color;
-      }
-    }
-  }
-  > thead > tr {
-    > th,
-    > td {
-      border-bottom-width: 2px;
-    }
-  }
-}
-
-
-// Zebra-striping
-//
-// Default zebra-stripe styles (alternating gray and transparent backgrounds)
-
-.table-striped {
-  > tbody > tr:nth-of-type(odd) {
-    background-color: @table-bg-accent;
-  }
-}
-
-
-// Hover effect
-//
-// Placed here since it has to come after the potential zebra striping
-
-.table-hover {
-  > tbody > tr:hover {
-    background-color: @table-bg-hover;
-  }
-}
-
-
-// Table backgrounds
-//
-// Exact selectors below required to override `.table-striped` and prevent
-// inheritance to nested tables.
-
-// Generate the contextual variants
-.table-row-variant(active; @table-bg-active);
-.table-row-variant(success; @state-success-bg);
-.table-row-variant(info; @state-info-bg);
-.table-row-variant(warning; @state-warning-bg);
-.table-row-variant(danger; @state-danger-bg);
-
-
-// Responsive tables
-//
-// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
-// by enabling horizontal scrolling. Only applies <768px. Everything above that
-// will display normally.
-
-.table-responsive {
-  min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
-  overflow-x: auto;
-
-  @media screen and (max-width: @screen-xs-max) {
-    width: 100%;
-    margin-bottom: (@line-height-computed * .75);
-    overflow-y: hidden;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid @table-border-color;
-
-    // Tighten up spacing
-    > .table {
-      margin-bottom: 0;
-
-      // Ensure the content doesn't wrap
-      > thead,
-      > tbody,
-      > tfoot {
-        > tr {
-          > th,
-          > td {
-            white-space: nowrap;
-          }
-        }
-      }
-    }
-
-    // Special overrides for the bordered tables
-    > .table-bordered {
-      border: 0;
-
-      // Nuke the appropriate borders so that the parent can handle them
-      > thead,
-      > tbody,
-      > tfoot {
-        > tr {
-          > th:first-child,
-          > td:first-child {
-            border-left: 0;
-          }
-          > th:last-child,
-          > td:last-child {
-            border-right: 0;
-          }
-        }
-      }
-
-      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
-      // chances are there will be only one `tr` in a `thead` and that would
-      // remove the border altogether.
-      > tbody,
-      > tfoot {
-        > tr:last-child {
-          > th,
-          > td {
-            border-bottom: 0;
-          }
-        }
-      }
-
-    }
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/theme.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/theme.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,297 +1,0 @@
-// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors
-
-/*!
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
- * Copyright 2011-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-//
-// Load core variables and mixins
-// --------------------------------------------------
-
-@import "variables.less";
-@import "mixins.less";
-
-
-//
-// Buttons
-// --------------------------------------------------
-
-// Common styles
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
-  .box-shadow(@shadow);
-
-  // Reset the shadow
-  &:active,
-  &.active {
-    .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    .box-shadow(none);
-  }
-
-  .badge {
-    text-shadow: none;
-  }
-}
-
-// Mixin for generating new styles
-.btn-styles(@btn-color: #555) {
-  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));
-  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
-  background-repeat: repeat-x;
-  border-color: darken(@btn-color, 14%);
-
-  &:hover,
-  &:focus  {
-    background-color: darken(@btn-color, 12%);
-    background-position: 0 -15px;
-  }
-
-  &:active,
-  &.active {
-    background-color: darken(@btn-color, 12%);
-    border-color: darken(@btn-color, 14%);
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    &,
-    &:hover,
-    &:focus,
-    &.focus,
-    &:active,
-    &.active {
-      background-color: darken(@btn-color, 12%);
-      background-image: none;
-    }
-  }
-}
-
-// Common styles
-.btn {
-  // Remove the gradient for the pressed/active state
-  &:active,
-  &.active {
-    background-image: none;
-  }
-}
-
-// Apply the mixin to the buttons
-.btn-default {
-  .btn-styles(@btn-default-bg);
-  text-shadow: 0 1px 0 #fff;
-  border-color: #ccc;
-}
-.btn-primary { .btn-styles(@btn-primary-bg); }
-.btn-success { .btn-styles(@btn-success-bg); }
-.btn-info    { .btn-styles(@btn-info-bg); }
-.btn-warning { .btn-styles(@btn-warning-bg); }
-.btn-danger  { .btn-styles(@btn-danger-bg); }
-
-
-//
-// Images
-// --------------------------------------------------
-
-.thumbnail,
-.img-thumbnail {
-  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));
-}
-
-
-//
-// Dropdowns
-// --------------------------------------------------
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
-  background-color: darken(@dropdown-link-hover-bg, 5%);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
-  background-color: darken(@dropdown-link-active-bg, 5%);
-}
-
-
-//
-// Navbar
-// --------------------------------------------------
-
-// Default navbar
-.navbar-default {
-  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);
-  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
-  border-radius: @navbar-border-radius;
-  @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
-  .box-shadow(@shadow);
-
-  .navbar-nav > .open > a,
-  .navbar-nav > .active > a {
-    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));
-    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));
-  }
-}
-.navbar-brand,
-.navbar-nav > li > a {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
-}
-
-// Inverted navbar
-.navbar-inverse {
-  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);
-  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
-  border-radius: @navbar-border-radius;
-  .navbar-nav > .open > a,
-  .navbar-nav > .active > a {
-    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));
-    .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));
-  }
-
-  .navbar-brand,
-  .navbar-nav > li > a {
-    text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
-  }
-}
-
-// Undo rounded corners in static and fixed navbars
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  border-radius: 0;
-}
-
-// Fix active state of dropdown items in collapsed mode
-@media (max-width: @grid-float-breakpoint-max) {
-  .navbar .navbar-nav .open .dropdown-menu > .active > a {
-    &,
-    &:hover,
-    &:focus {
-      color: #fff;
-      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));
-    }
-  }
-}
-
-
-//
-// Alerts
-// --------------------------------------------------
-
-// Common styles
-.alert {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-  @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
-  .box-shadow(@shadow);
-}
-
-// Mixin for generating new styles
-.alert-styles(@color) {
-  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
-  border-color: darken(@color, 15%);
-}
-
-// Apply the mixin to the alerts
-.alert-success    { .alert-styles(@alert-success-bg); }
-.alert-info       { .alert-styles(@alert-info-bg); }
-.alert-warning    { .alert-styles(@alert-warning-bg); }
-.alert-danger     { .alert-styles(@alert-danger-bg); }
-
-
-//
-// Progress bars
-// --------------------------------------------------
-
-// Give the progress background some depth
-.progress {
-  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)
-}
-
-// Mixin for generating new styles
-.progress-bar-styles(@color) {
-  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
-}
-
-// Apply the mixin to the progress bars
-.progress-bar            { .progress-bar-styles(@progress-bar-bg); }
-.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }
-.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }
-.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }
-.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }
-
-// Reset the striped class because our mixins don't do multiple gradients and
-// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
-.progress-bar-striped {
-  #gradient > .striped();
-}
-
-
-//
-// List groups
-// --------------------------------------------------
-
-.list-group {
-  border-radius: @border-radius-base;
-  .box-shadow(0 1px 2px rgba(0, 0, 0, .075));
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
-  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));
-  border-color: darken(@list-group-active-border, 7.5%);
-
-  .badge {
-    text-shadow: none;
-  }
-}
-
-
-//
-// Panels
-// --------------------------------------------------
-
-// Common styles
-.panel {
-  .box-shadow(0 1px 2px rgba(0, 0, 0, .05));
-}
-
-// Mixin for generating new styles
-.panel-heading-styles(@color) {
-  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
-}
-
-// Apply the mixin to the panel headings only
-.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }
-.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }
-.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }
-.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }
-.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }
-.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }
-
-
-//
-// Wells
-// --------------------------------------------------
-
-.well {
-  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);
-  border-color: darken(@well-bg, 10%);
-  @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
-  .box-shadow(@shadow);
-}
Index: trip-planner-front/node_modules/bootstrap/less/thumbnails.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/thumbnails.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,38 +1,0 @@
-// stylelint-disable selector-no-qualifying-type
-
-//
-// Thumbnails
-// --------------------------------------------------
-
-
-// Mixin and adjust the regular image class
-.thumbnail {
-  display: block;
-  padding: @thumbnail-padding;
-  margin-bottom: @line-height-computed;
-  line-height: @line-height-base;
-  background-color: @thumbnail-bg;
-  border: 1px solid @thumbnail-border;
-  border-radius: @thumbnail-border-radius;
-  .transition(border .2s ease-in-out);
-
-  > img,
-  a > img {
-    &:extend(.img-responsive);
-    margin-right: auto;
-    margin-left: auto;
-  }
-
-  // Add a hover state for linked versions only
-  a&:hover,
-  a&:focus,
-  a&.active {
-    border-color: @link-color;
-  }
-
-  // Image captions
-  .caption {
-    padding: @thumbnail-caption-padding;
-    color: @thumbnail-caption-color;
-  }
-}
Index: trip-planner-front/node_modules/bootstrap/less/tooltip.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/tooltip.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,112 +1,0 @@
-//
-// Tooltips
-// --------------------------------------------------
-
-
-// Base class
-.tooltip {
-  position: absolute;
-  z-index: @zindex-tooltip;
-  display: block;
-  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
-  // So reset our font and text properties to avoid inheriting weird values.
-  .reset-text();
-  font-size: @font-size-small;
-
-  .opacity(0);
-
-  &.in { .opacity(@tooltip-opacity); }
-  &.top {
-    padding: @tooltip-arrow-width 0;
-    margin-top: -3px;
-  }
-  &.right {
-    padding: 0 @tooltip-arrow-width;
-    margin-left: 3px;
-  }
-  &.bottom {
-    padding: @tooltip-arrow-width 0;
-    margin-top: 3px;
-  }
-  &.left {
-    padding: 0 @tooltip-arrow-width;
-    margin-left: -3px;
-  }
-
-  // Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
-  &.top .tooltip-arrow {
-    bottom: 0;
-    left: 50%;
-    margin-left: -@tooltip-arrow-width;
-    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
-    border-top-color: @tooltip-arrow-color;
-  }
-  &.top-left .tooltip-arrow {
-    right: @tooltip-arrow-width;
-    bottom: 0;
-    margin-bottom: -@tooltip-arrow-width;
-    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
-    border-top-color: @tooltip-arrow-color;
-  }
-  &.top-right .tooltip-arrow {
-    bottom: 0;
-    left: @tooltip-arrow-width;
-    margin-bottom: -@tooltip-arrow-width;
-    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;
-    border-top-color: @tooltip-arrow-color;
-  }
-  &.right .tooltip-arrow {
-    top: 50%;
-    left: 0;
-    margin-top: -@tooltip-arrow-width;
-    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;
-    border-right-color: @tooltip-arrow-color;
-  }
-  &.left .tooltip-arrow {
-    top: 50%;
-    right: 0;
-    margin-top: -@tooltip-arrow-width;
-    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;
-    border-left-color: @tooltip-arrow-color;
-  }
-  &.bottom .tooltip-arrow {
-    top: 0;
-    left: 50%;
-    margin-left: -@tooltip-arrow-width;
-    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
-    border-bottom-color: @tooltip-arrow-color;
-  }
-  &.bottom-left .tooltip-arrow {
-    top: 0;
-    right: @tooltip-arrow-width;
-    margin-top: -@tooltip-arrow-width;
-    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
-    border-bottom-color: @tooltip-arrow-color;
-  }
-  &.bottom-right .tooltip-arrow {
-    top: 0;
-    left: @tooltip-arrow-width;
-    margin-top: -@tooltip-arrow-width;
-    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;
-    border-bottom-color: @tooltip-arrow-color;
-  }
-}
-
-// Wrapper for the tooltip content
-.tooltip-inner {
-  max-width: @tooltip-max-width;
-  padding: 3px 8px;
-  color: @tooltip-color;
-  text-align: center;
-  background-color: @tooltip-bg;
-  border-radius: @border-radius-base;
-}
-
-// Arrows
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
Index: trip-planner-front/node_modules/bootstrap/less/type.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/type.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,304 +1,0 @@
-// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type
-
-//
-// Typography
-// --------------------------------------------------
-
-
-// Headings
-// -------------------------
-
-h1, h2, h3, h4, h5, h6,
-.h1, .h2, .h3, .h4, .h5, .h6 {
-  font-family: @headings-font-family;
-  font-weight: @headings-font-weight;
-  line-height: @headings-line-height;
-  color: @headings-color;
-
-  small,
-  .small {
-    font-weight: 400;
-    line-height: 1;
-    color: @headings-small-color;
-  }
-}
-
-h1, .h1,
-h2, .h2,
-h3, .h3 {
-  margin-top: @line-height-computed;
-  margin-bottom: (@line-height-computed / 2);
-
-  small,
-  .small {
-    font-size: 65%;
-  }
-}
-h4, .h4,
-h5, .h5,
-h6, .h6 {
-  margin-top: (@line-height-computed / 2);
-  margin-bottom: (@line-height-computed / 2);
-
-  small,
-  .small {
-    font-size: 75%;
-  }
-}
-
-h1, .h1 { font-size: @font-size-h1; }
-h2, .h2 { font-size: @font-size-h2; }
-h3, .h3 { font-size: @font-size-h3; }
-h4, .h4 { font-size: @font-size-h4; }
-h5, .h5 { font-size: @font-size-h5; }
-h6, .h6 { font-size: @font-size-h6; }
-
-
-// Body text
-// -------------------------
-
-p {
-  margin: 0 0 (@line-height-computed / 2);
-}
-
-.lead {
-  margin-bottom: @line-height-computed;
-  font-size: floor((@font-size-base * 1.15));
-  font-weight: 300;
-  line-height: 1.4;
-
-  @media (min-width: @screen-sm-min) {
-    font-size: (@font-size-base * 1.5);
-  }
-}
-
-
-// Emphasis & misc
-// -------------------------
-
-// Ex: (12px small font / 14px base font) * 100% = about 85%
-small,
-.small {
-  font-size: floor((100% * @font-size-small / @font-size-base));
-}
-
-mark,
-.mark {
-  padding: .2em;
-  background-color: @state-warning-bg;
-}
-
-// Alignment
-.text-left           { text-align: left; }
-.text-right          { text-align: right; }
-.text-center         { text-align: center; }
-.text-justify        { text-align: justify; }
-.text-nowrap         { white-space: nowrap; }
-
-// Transformation
-.text-lowercase      { text-transform: lowercase; }
-.text-uppercase      { text-transform: uppercase; }
-.text-capitalize     { text-transform: capitalize; }
-
-// Contextual colors
-.text-muted {
-  color: @text-muted;
-}
-.text-primary {
-  .text-emphasis-variant(@brand-primary);
-}
-.text-success {
-  .text-emphasis-variant(@state-success-text);
-}
-.text-info {
-  .text-emphasis-variant(@state-info-text);
-}
-.text-warning {
-  .text-emphasis-variant(@state-warning-text);
-}
-.text-danger {
-  .text-emphasis-variant(@state-danger-text);
-}
-
-// Contextual backgrounds
-// For now we'll leave these alongside the text classes until v4 when we can
-// safely shift things around (per SemVer rules).
-.bg-primary {
-  // Given the contrast here, this is the only class to have its color inverted
-  // automatically.
-  color: #fff;
-  .bg-variant(@brand-primary);
-}
-.bg-success {
-  .bg-variant(@state-success-bg);
-}
-.bg-info {
-  .bg-variant(@state-info-bg);
-}
-.bg-warning {
-  .bg-variant(@state-warning-bg);
-}
-.bg-danger {
-  .bg-variant(@state-danger-bg);
-}
-
-
-// Page header
-// -------------------------
-
-.page-header {
-  padding-bottom: ((@line-height-computed / 2) - 1);
-  margin: (@line-height-computed * 2) 0 @line-height-computed;
-  border-bottom: 1px solid @page-header-border-color;
-}
-
-
-// Lists
-// -------------------------
-
-// Unordered and Ordered lists
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: (@line-height-computed / 2);
-  ul,
-  ol {
-    margin-bottom: 0;
-  }
-}
-
-// List options
-
-// Unstyled keeps list items block level, just removes default browser padding and list-style
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-
-// Inline turns list items into inline-block
-.list-inline {
-  .list-unstyled();
-  margin-left: -5px;
-
-  > li {
-    display: inline-block;
-    padding-right: 5px;
-    padding-left: 5px;
-  }
-}
-
-// Description Lists
-dl {
-  margin-top: 0; // Remove browser default
-  margin-bottom: @line-height-computed;
-}
-dt,
-dd {
-  line-height: @line-height-base;
-}
-dt {
-  font-weight: 700;
-}
-dd {
-  margin-left: 0; // Undo browser default
-}
-
-// Horizontal description lists
-//
-// Defaults to being stacked without any of the below styles applied, until the
-// grid breakpoint is reached (default of ~768px).
-
-.dl-horizontal {
-  dd {
-    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
-  }
-
-  @media (min-width: @dl-horizontal-breakpoint) {
-    dt {
-      float: left;
-      width: (@dl-horizontal-offset - 20);
-      clear: left;
-      text-align: right;
-      .text-overflow();
-    }
-    dd {
-      margin-left: @dl-horizontal-offset;
-    }
-  }
-}
-
-
-// Misc
-// -------------------------
-
-// Abbreviations and acronyms
-// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-}
-
-.initialism {
-  font-size: 90%;
-  .text-uppercase();
-}
-
-// Blockquotes
-blockquote {
-  padding: (@line-height-computed / 2) @line-height-computed;
-  margin: 0 0 @line-height-computed;
-  font-size: @blockquote-font-size;
-  border-left: 5px solid @blockquote-border-color;
-
-  p,
-  ul,
-  ol {
-    &:last-child {
-      margin-bottom: 0;
-    }
-  }
-
-  // Note: Deprecated small and .small as of v3.1.0
-  // Context: https://github.com/twbs/bootstrap/issues/11660
-  footer,
-  small,
-  .small {
-    display: block;
-    font-size: 80%; // back to default font-size
-    line-height: @line-height-base;
-    color: @blockquote-small-color;
-
-    &:before {
-      content: "\2014 \00A0"; // em dash, nbsp
-    }
-  }
-}
-
-// Opposite alignment of blockquote
-//
-// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid @blockquote-border-color;
-  border-left: 0;
-
-  // Account for citation
-  footer,
-  small,
-  .small {
-    &:before { content: ""; }
-    &:after {
-      content: "\00A0 \2014"; // nbsp, em dash
-    }
-  }
-}
-
-// Addresses
-address {
-  margin-bottom: @line-height-computed;
-  font-style: normal;
-  line-height: @line-height-base;
-}
Index: trip-planner-front/node_modules/bootstrap/less/utilities.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/utilities.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,57 +1,0 @@
-// stylelint-disable declaration-no-important
-
-//
-// Utility classes
-// --------------------------------------------------
-
-
-// Floats
-// -------------------------
-
-.clearfix {
-  .clearfix();
-}
-.center-block {
-  .center-block();
-}
-.pull-right {
-  float: right !important;
-}
-.pull-left {
-  float: left !important;
-}
-
-
-// Toggling content
-// -------------------------
-
-// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
-.hide {
-  display: none !important;
-}
-.show {
-  display: block !important;
-}
-.invisible {
-  visibility: hidden;
-}
-.text-hide {
-  .text-hide();
-}
-
-
-// Hide from screenreaders and browsers
-//
-// Credit: HTML5 Boilerplate
-
-.hidden {
-  display: none !important;
-}
-
-
-// For Affix plugin
-// -------------------------
-
-.affix {
-  position: fixed;
-}
Index: trip-planner-front/node_modules/bootstrap/less/variables.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/variables.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,871 +1,0 @@
-// stylelint-disable value-keyword-case
-
-//
-// Variables
-// --------------------------------------------------
-
-
-//== Colors
-//
-//## Gray and brand colors for use across Bootstrap.
-
-@gray-base:              #000;
-@gray-darker:            lighten(@gray-base, 13.5%); // #222
-@gray-dark:              lighten(@gray-base, 20%);   // #333
-@gray:                   lighten(@gray-base, 33.5%); // #555
-@gray-light:             lighten(@gray-base, 46.7%); // #777
-@gray-lighter:           lighten(@gray-base, 93.5%); // #eee
-
-@brand-primary:         darken(#428bca, 6.5%); // #337ab7
-@brand-success:         #5cb85c;
-@brand-info:            #5bc0de;
-@brand-warning:         #f0ad4e;
-@brand-danger:          #d9534f;
-
-
-//== Scaffolding
-//
-//## Settings for some of the most global styles.
-
-//** Background color for `<body>`.
-@body-bg:               #fff;
-//** Global text color on `<body>`.
-@text-color:            @gray-dark;
-
-//** Global textual link color.
-@link-color:            @brand-primary;
-//** Link hover color set via `darken()` function.
-@link-hover-color:      darken(@link-color, 15%);
-//** Link hover decoration.
-@link-hover-decoration: underline;
-
-
-//== Typography
-//
-//## Font, line-height, and color for body text, headings, and more.
-
-@font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif;
-@font-family-serif:       Georgia, "Times New Roman", Times, serif;
-//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
-@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * .85)); // ~12px
-
-@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil((@font-size-base * .85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the `<body>`.
-@headings-font-family:    inherit;
-@headings-font-weight:    500;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     6px;
-@padding-base-horizontal:   12px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicate dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for `<th>`s and `<td>`s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 #fff;
-@btn-default-border:             #ccc;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base:         @border-radius-base;
-@btn-border-radius-large:        @border-radius-large;
-@btn-border-radius-small:        @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** `<input>` background color
-@input-bg:                       #fff;
-//** `<input disabled>` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for `<input>`s
-@input-color:                    @gray;
-//** `<input>` border color
-@input-border:                   #ccc;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #66afe9;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-//** `.form-group` margin
-@form-group-margin-bottom:       15px;
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0, 0, 0, .15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal-background:  1040;
-@zindex-modal:             1050;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    50px;
-@navbar-margin-bottom:             @line-height-computed;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             #777;
-@navbar-default-bg:                #f8f8f8;
-@navbar-default-border:            darken(@navbar-default-bg, 6.5%);
-
-// Navbar links
-@navbar-default-link-color:                #777;
-@navbar-default-link-hover-color:          #333;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         #555;
-@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        #888;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-//=== Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0, 0, 0, .2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0, 0, 0, .2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0, 0, 0, .6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint:    @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border:                   @gray-lighter;
Index: trip-planner-front/node_modules/bootstrap/less/wells.less
===================================================================
--- trip-planner-front/node_modules/bootstrap/less/wells.less	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: @well-bg;
-  border: 1px solid @well-border;
-  border-radius: @border-radius-base;
-  .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));
-  blockquote {
-    border-color: #ddd;
-    border-color: rgba(0, 0, 0, .15);
-  }
-}
-
-// Sizes
-.well-lg {
-  padding: 24px;
-  border-radius: @border-radius-large;
-}
-.well-sm {
-  padding: 9px;
-  border-radius: @border-radius-small;
-}
Index: trip-planner-front/node_modules/bootstrap/package.json
===================================================================
--- trip-planner-front/node_modules/bootstrap/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ 	(revision )
@@ -1,101 +1,0 @@
-{
-  "name": "bootstrap",
-  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
-  "version": "3.4.1",
-  "keywords": [
-    "css",
-    "less",
-    "mobile-first",
-    "responsive",
-    "front-end",
-    "framework",
-    "web"
-  ],
-  "homepage": "https://getbootstrap.com/",
-  "author": "Twitter, Inc.",
-  "scripts": {
-    "sri": "node grunt/generate-sri.js",
-    "release": "grunt prep-release && npm run sri && npm run release-zip",
-    "release-zip": "cross-env-shell \"shx rm -rf bootstrap-$npm_package_version-dist && shx cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && shx rm -rf bootstrap-$npm_package_version-dist\"",
-    "change-version": "node grunt/change-version.js",
-    "test": "grunt test"
-  },
-  "style": "dist/css/bootstrap.css",
-  "less": "less/bootstrap.less",
-  "main": "./dist/js/npm",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/twbs/bootstrap.git"
-  },
-  "bugs": {
-    "url": "https://github.com/twbs/bootstrap/issues"
-  },
-  "license": "MIT",
-  "dependencies": {},
-  "devDependencies": {
-    "autoprefixer": "^9.4.7",
-    "btoa": "^1.2.1",
-    "cross-env": "^5.2.0",
-    "glob": "^7.1.3",
-    "grunt": "^1.0.3",
-    "grunt-contrib-clean": "^2.0.0",
-    "grunt-contrib-concat": "^1.0.1",
-    "grunt-contrib-connect": "^2.0.0",
-    "grunt-contrib-copy": "^1.0.0",
-    "grunt-contrib-cssmin": "^3.0.0",
-    "grunt-contrib-jshint": "^2.0.0",
-    "grunt-contrib-less": "^2.0.0",
-    "grunt-contrib-pug": "^2.0.0",
-    "grunt-contrib-uglify": "^4.0.0",
-    "grunt-contrib-watch": "^1.1.0",
-    "grunt-exec": "^3.0.0",
-    "grunt-html": "^10.1.0",
-    "grunt-jekyll": "^1.0.0",
-    "grunt-jscs": "^3.0.1",
-    "grunt-postcss": "^0.9.0",
-    "grunt-stylelint": "^0.10.1",
-    "ip": "^1.1.5",
-    "karma": "^3.1.3",
-    "karma-browserstack-launcher": "^1.4.0",
-    "karma-chrome-launcher": "^2.2.0",
-    "karma-detect-browsers": "^2.3.3",
-    "karma-firefox-launcher": "^1.1.0",
-    "karma-qunit": "^1.2.1",
-    "load-grunt-tasks": "^4.0.0",
-    "markdown-it": "^8.4.2",
-    "qunitjs": "^1.23.1",
-    "replace-in-file": "^3.4.3",
-    "shelljs": "^0.8.3",
-    "shx": "^0.3.2",
-    "stylelint": "~9.6.0",
-    "stylelint-config-standard": "^18.2.0",
-    "stylelint-order": "^1.0.0",
-    "time-grunt": "^2.0.0"
-  },
-  "engines": {
-    "node": ">=6"
-  },
-  "files": [
-    "dist",
-    "fonts",
-    "grunt",
-    "js/*.js",
-    "less/**/*.less",
-    "Gruntfile.js",
-    "LICENSE"
-  ],
-  "jspm": {
-    "main": "js/bootstrap",
-    "shim": {
-      "js/bootstrap": {
-        "deps": "jquery",
-        "exports": "$"
-      }
-    },
-    "files": [
-      "css",
-      "fonts",
-      "js"
-    ]
-  }
-}
Index: trip-planner-front/node_modules/brace-expansion/package.json
===================================================================
--- trip-planner-front/node_modules/brace-expansion/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/brace-expansion/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,39 @@
 {
-  "name": "brace-expansion",
-  "description": "Brace expansion as known from sh/bash",
-  "version": "1.1.11",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/juliangruber/brace-expansion.git"
+  "_args": [
+    [
+      "brace-expansion@1.1.11",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "brace-expansion@1.1.11",
+  "_id": "brace-expansion@1.1.11",
+  "_inBundle": false,
+  "_integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+  "_location": "/brace-expansion",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "brace-expansion@1.1.11",
+    "name": "brace-expansion",
+    "escapedName": "brace-expansion",
+    "rawSpec": "1.1.11",
+    "saveSpec": null,
+    "fetchSpec": "1.1.11"
   },
-  "homepage": "https://github.com/juliangruber/brace-expansion",
-  "main": "index.js",
-  "scripts": {
-    "test": "tape test/*.js",
-    "gentest": "bash test/generate.sh",
-    "bench": "matcha test/perf/bench.js"
+  "_requiredBy": [
+    "/minimatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+  "_spec": "1.1.11",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Julian Gruber",
+    "email": "mail@juliangruber.com",
+    "url": "http://juliangruber.com"
+  },
+  "bugs": {
+    "url": "https://github.com/juliangruber/brace-expansion/issues"
   },
   "dependencies": {
@@ -18,15 +41,23 @@
     "concat-map": "0.0.1"
   },
+  "description": "Brace expansion as known from sh/bash",
   "devDependencies": {
     "matcha": "^0.7.0",
     "tape": "^4.6.0"
   },
+  "homepage": "https://github.com/juliangruber/brace-expansion",
   "keywords": [],
-  "author": {
-    "name": "Julian Gruber",
-    "email": "mail@juliangruber.com",
-    "url": "http://juliangruber.com"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "brace-expansion",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/brace-expansion.git"
   },
-  "license": "MIT",
+  "scripts": {
+    "bench": "matcha test/perf/bench.js",
+    "gentest": "bash test/generate.sh",
+    "test": "tape test/*.js"
+  },
   "testling": {
     "files": "test/*.js",
@@ -44,4 +75,5 @@
       "android-browser/4.2..latest"
     ]
-  }
+  },
+  "version": "1.1.11"
 }
Index: trip-planner-front/node_modules/braces/package.json
===================================================================
--- trip-planner-front/node_modules/braces/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/braces/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,67 @@
 {
-  "name": "braces",
-  "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.",
-  "version": "3.0.2",
-  "homepage": "https://github.com/micromatch/braces",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Elan Shanker (https://github.com/es128)",
-    "Eugene Sharygin (https://github.com/eush77)",
-    "hemanth.hm (http://h3manth.com)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "braces@3.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/braces",
+  "_development": true,
+  "_from": "braces@3.0.2",
+  "_id": "braces@3.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+  "_location": "/braces",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "braces@3.0.2",
+    "name": "braces",
+    "escapedName": "braces",
+    "rawSpec": "3.0.2",
+    "saveSpec": null,
+    "fetchSpec": "3.0.2"
+  },
+  "_requiredBy": [
+    "/chokidar",
+    "/karma",
+    "/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+  "_spec": "3.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/braces/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Eugene Sharygin",
+      "url": "https://github.com/eush77"
+    },
+    {
+      "name": "hemanth.hm",
+      "url": "http://h3manth.com"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=8"
-  },
-  "scripts": {
-    "test": "mocha",
-    "benchmark": "node benchmark"
-  },
   "dependencies": {
     "fill-range": "^7.0.1"
   },
+  "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.",
   "devDependencies": {
     "ansi-colors": "^3.2.4",
@@ -38,4 +70,12 @@
     "mocha": "^6.1.1"
   },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/micromatch/braces",
   "keywords": [
     "alpha",
@@ -62,4 +102,15 @@
     "sh"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "braces",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/braces.git"
+  },
+  "scripts": {
+    "benchmark": "node benchmark",
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -74,4 +125,5 @@
       "gulp-format-md"
     ]
-  }
+  },
+  "version": "3.0.2"
 }
Index: trip-planner-front/node_modules/browserslist/package.json
===================================================================
--- trip-planner-front/node_modules/browserslist/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/browserslist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,58 @@
 {
-  "name": "browserslist",
-  "version": "4.17.3",
-  "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
-  "keywords": [
-    "caniuse",
-    "browsers",
-    "target"
+  "_args": [
+    [
+      "browserslist@4.17.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/browserslist"
+  "_development": true,
+  "_from": "browserslist@4.17.3",
+  "_id": "browserslist@4.17.3",
+  "_inBundle": false,
+  "_integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==",
+  "_location": "/browserslist",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "browserslist@4.17.3",
+    "name": "browserslist",
+    "escapedName": "browserslist",
+    "rawSpec": "4.17.3",
+    "saveSpec": null,
+    "fetchSpec": "4.17.3"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "repository": "browserslist/browserslist",
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@babel/helper-compilation-targets",
+    "/autoprefixer",
+    "/caniuse-api",
+    "/core-js-compat",
+    "/postcss-colormin",
+    "/postcss-merge-rules",
+    "/postcss-minify-params",
+    "/postcss-normalize-unicode",
+    "/postcss-preset-env",
+    "/postcss-reduce-initial",
+    "/stylehacks",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz",
+  "_spec": "4.17.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "bin": {
+    "browserslist": "cli.js"
+  },
+  "browser": {
+    "./node.js": "./browser.js",
+    "path": false
+  },
+  "bugs": {
+    "url": "https://github.com/browserslist/browserslist/issues"
+  },
   "dependencies": {
     "caniuse-lite": "^1.0.30001264",
@@ -22,14 +62,25 @@
     "picocolors": "^0.2.1"
   },
+  "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
   "engines": {
     "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
   },
-  "bin": {
-    "browserslist": "cli.js"
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/browserslist"
+  },
+  "homepage": "https://github.com/browserslist/browserslist#readme",
+  "keywords": [
+    "caniuse",
+    "browsers",
+    "target"
+  ],
+  "license": "MIT",
+  "name": "browserslist",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/browserslist/browserslist.git"
   },
   "types": "./index.d.ts",
-  "browser": {
-    "./node.js": "./browser.js",
-    "path": false
-  }
+  "version": "4.17.3"
 }
Index: trip-planner-front/node_modules/buffer-from/package.json
===================================================================
--- trip-planner-front/node_modules/buffer-from/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/buffer-from/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,56 @@
 {
-  "name": "buffer-from",
-  "version": "1.1.2",
-  "license": "MIT",
-  "repository": "LinusU/buffer-from",
+  "_args": [
+    [
+      "buffer-from@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "buffer-from@1.1.2",
+  "_id": "buffer-from@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+  "_location": "/buffer-from",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "buffer-from@1.1.2",
+    "name": "buffer-from",
+    "escapedName": "buffer-from",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/source-map-support"
+  ],
+  "_resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/LinusU/buffer-from/issues"
+  },
+  "description": "A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available.",
+  "devDependencies": {
+    "standard": "^12.0.1"
+  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/LinusU/buffer-from#readme",
+  "keywords": [
+    "buffer",
+    "buffer from"
+  ],
+  "license": "MIT",
+  "name": "buffer-from",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/LinusU/buffer-from.git"
+  },
   "scripts": {
     "test": "standard && node test"
   },
-  "devDependencies": {
-    "standard": "^12.0.1"
-  },
-  "keywords": [
-    "buffer",
-    "buffer from"
-  ]
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/buffer-indexof/package.json
===================================================================
--- trip-planner-front/node_modules/buffer-indexof/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/buffer-indexof/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,54 @@
 {
+  "_args": [
+    [
+      "buffer-indexof@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "buffer-indexof@1.1.1",
+  "_id": "buffer-indexof@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+  "_location": "/buffer-indexof",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "buffer-indexof@1.1.1",
+    "name": "buffer-indexof",
+    "escapedName": "buffer-indexof",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/dns-txt"
+  ],
+  "_resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ryan Day"
+  },
+  "bugs": {
+    "url": "https://github.com/soldair/node-buffer-indexof/issues"
+  },
+  "dependencies": {},
+  "description": "find the index of a buffer in a buffer",
+  "devDependencies": {
+    "chalk": "^1.1.3",
+    "tape": "~1.1.0"
+  },
+  "homepage": "https://github.com/soldair/node-buffer-indexof#readme",
+  "license": "MIT",
+  "main": "index.js",
   "name": "buffer-indexof",
-  "description": "find the index of a buffer in a buffer",
-  "version": "1.1.1",
   "repository": {
     "url": "git://github.com/soldair/node-buffer-indexof.git"
   },
-  "main": "index.js",
   "scripts": {
     "test": "tape test/*.js"
   },
-  "author": "Ryan Day",
-  "license": "MIT",
-  "dependencies": {},
-  "devDependencies": {
-    "chalk": "^1.1.3",
-    "tape": "~1.1.0"
-  }
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/buffer/package.json
===================================================================
--- trip-planner-front/node_modules/buffer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/buffer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,32 @@
 {
-  "name": "buffer",
-  "description": "Node.js Buffer API, for the browser",
-  "version": "5.7.1",
+  "_args": [
+    [
+      "buffer@5.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "buffer@5.7.1",
+  "_id": "buffer@5.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+  "_location": "/buffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "buffer@5.7.1",
+    "name": "buffer",
+    "escapedName": "buffer",
+    "rawSpec": "5.7.1",
+    "saveSpec": null,
+    "fetchSpec": "5.7.1"
+  },
+  "_requiredBy": [
+    "/bl"
+  ],
+  "_resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+  "_spec": "5.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Feross Aboukhadijeh",
@@ -12,6 +38,12 @@
   },
   "contributors": [
-    "Romain Beauxis <toots@rastageeks.org>",
-    "James Halliday <mail@substack.net>"
+    {
+      "name": "Romain Beauxis",
+      "email": "toots@rastageeks.org"
+    },
+    {
+      "name": "James Halliday",
+      "email": "mail@substack.net"
+    }
   ],
   "dependencies": {
@@ -19,4 +51,5 @@
     "ieee754": "^1.1.13"
   },
+  "description": "Node.js Buffer API, for the browser",
   "devDependencies": {
     "airtap": "^3.0.0",
@@ -33,4 +66,18 @@
     "uglify-js": "^3.11.3"
   },
+  "funding": [
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/feross"
+    },
+    {
+      "type": "patreon",
+      "url": "https://www.patreon.com/feross"
+    },
+    {
+      "type": "consulting",
+      "url": "https://feross.org/support"
+    }
+  ],
   "homepage": "https://github.com/feross/buffer",
   "jspm": {
@@ -52,5 +99,5 @@
   "license": "MIT",
   "main": "index.js",
-  "types": "index.d.ts",
+  "name": "buffer",
   "repository": {
     "type": "git",
@@ -80,17 +127,5 @@
     ]
   },
-  "funding": [
-    {
-      "type": "github",
-      "url": "https://github.com/sponsors/feross"
-    },
-    {
-      "type": "patreon",
-      "url": "https://www.patreon.com/feross"
-    },
-    {
-      "type": "consulting",
-      "url": "https://feross.org/support"
-    }
-  ]
+  "types": "index.d.ts",
+  "version": "5.7.1"
 }
Index: trip-planner-front/node_modules/builtins/package.json
===================================================================
--- trip-planner-front/node_modules/builtins/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/builtins/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,50 @@
 {
-  "name": "builtins",
-  "version": "1.0.3",
+  "_args": [
+    [
+      "builtins@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "builtins@1.0.3",
+  "_id": "builtins@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
+  "_location": "/builtins",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "builtins@1.0.3",
+    "name": "builtins",
+    "escapedName": "builtins",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/validate-npm-package-name"
+  ],
+  "_resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/juliangruber/builtins/issues"
+  },
   "description": "List of node.js builtin modules",
-  "repository": "juliangruber/builtins",
+  "homepage": "https://github.com/juliangruber/builtins#readme",
   "license": "MIT",
   "main": "builtins.json",
+  "name": "builtins",
   "publishConfig": {
     "registry": "https://registry.npmjs.org"
   },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/juliangruber/builtins.git"
+  },
   "scripts": {
     "test": "node test.js"
-  }
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/bytes/package.json
===================================================================
--- trip-planner-front/node_modules/bytes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/bytes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,67 @@
 {
-  "name": "bytes",
+  "_args": [
+    [
+      "bytes@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "bytes@3.1.0",
+  "_id": "bytes@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+  "_location": "/bytes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "bytes@3.1.0",
+    "name": "bytes",
+    "escapedName": "bytes",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/raw-body"
+  ],
+  "_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca",
+    "url": "http://tjholowaychuk.com"
+  },
+  "bugs": {
+    "url": "https://github.com/visionmedia/bytes.js/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jed Watson",
+      "email": "jed.watson@me.com"
+    },
+    {
+      "name": "Théo FIDRY",
+      "email": "theo.fidry@gmail.com"
+    }
+  ],
   "description": "Utility to parse a string bytes to bytes and vice-versa",
-  "version": "3.1.0",
-  "author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
-  "contributors": [
-    "Jed Watson <jed.watson@me.com>",
-    "Théo FIDRY <theo.fidry@gmail.com>"
+  "devDependencies": {
+    "eslint": "5.12.1",
+    "mocha": "5.2.0",
+    "nyc": "13.1.0"
+  },
+  "engines": {
+    "node": ">= 0.8"
+  },
+  "files": [
+    "History.md",
+    "LICENSE",
+    "Readme.md",
+    "index.js"
   ],
-  "license": "MIT",
+  "homepage": "https://github.com/visionmedia/bytes.js#readme",
   "keywords": [
     "byte",
@@ -18,18 +73,9 @@
     "converter"
   ],
-  "repository": "visionmedia/bytes.js",
-  "devDependencies": {
-    "eslint": "5.12.1",
-    "mocha": "5.2.0",
-    "nyc": "13.1.0"
-  },
-  "files": [
-    "History.md",
-    "LICENSE",
-    "Readme.md",
-    "index.js"
-  ],
-  "engines": {
-    "node": ">= 0.8"
+  "license": "MIT",
+  "name": "bytes",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/visionmedia/bytes.js.git"
   },
   "scripts": {
@@ -38,4 +84,5 @@
     "test-ci": "nyc --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test"
-  }
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/cacache/package.json
===================================================================
--- trip-planner-front/node_modules/cacache/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cacache/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,41 @@
 {
-  "name": "cacache",
-  "version": "15.2.0",
+  "_args": [
+    [
+      "cacache@15.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cacache@15.2.0",
+  "_id": "cacache@15.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==",
+  "_location": "/cacache",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cacache@15.2.0",
+    "name": "cacache",
+    "escapedName": "cacache",
+    "rawSpec": "15.2.0",
+    "saveSpec": null,
+    "fetchSpec": "15.2.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/make-fetch-happen",
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz",
+  "_spec": "15.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/npm/cacache/issues"
+  },
   "cache-version": {
     "content": "2",
     "index": "5"
   },
-  "description": "Fast, fault-tolerant, cross-platform, disk-based, data-agnostic, content-addressable cache.",
-  "main": "index.js",
-  "files": [
-    "*.js",
-    "lib"
-  ],
-  "scripts": {
-    "benchmarks": "node test/benchmarks",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags",
-    "test": "tap",
-    "snap": "tap",
-    "coverage": "tap",
-    "test-docker": "docker run -it --rm --name pacotest -v \"$PWD\":/tmp -w /tmp node:latest npm test",
-    "lint": "npm run npmclilint -- \"*.*js\" \"lib/**/*.*js\" \"test/**/*.*js\"",
-    "npmclilint": "npmcli-lint",
-    "lintfix": "npm run lint -- --fix",
-    "postsnap": "npm run lintfix --"
-  },
-  "repository": "https://github.com/npm/cacache",
-  "keywords": [
-    "cache",
-    "caching",
-    "content-addressable",
-    "sri",
-    "sri hash",
-    "subresource integrity",
-    "cache",
-    "storage",
-    "store",
-    "file store",
-    "filesystem",
-    "disk cache",
-    "disk storage"
-  ],
-  "license": "ISC",
   "dependencies": {
     "@npmcli/move-file": "^1.0.1",
@@ -62,4 +57,5 @@
     "unique-filename": "^1.1.1"
   },
+  "description": "Fast, fault-tolerant, cross-platform, disk-based, data-agnostic, content-addressable cache.",
   "devDependencies": {
     "@npmcli/lint": "^1.0.1",
@@ -70,10 +66,52 @@
     "tap": "^15.0.9"
   },
+  "engines": {
+    "node": ">= 10"
+  },
+  "files": [
+    "*.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/npm/cacache#readme",
+  "keywords": [
+    "cache",
+    "caching",
+    "content-addressable",
+    "sri",
+    "sri hash",
+    "subresource integrity",
+    "cache",
+    "storage",
+    "store",
+    "file store",
+    "filesystem",
+    "disk cache",
+    "disk storage"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "cacache",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/cacache.git"
+  },
+  "scripts": {
+    "benchmarks": "node test/benchmarks",
+    "coverage": "tap",
+    "lint": "npm run npmclilint -- \"*.*js\" \"lib/**/*.*js\" \"test/**/*.*js\"",
+    "lintfix": "npm run lint -- --fix",
+    "npmclilint": "npmcli-lint",
+    "postsnap": "npm run lintfix --",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap",
+    "test-docker": "docker run -it --rm --name pacotest -v \"$PWD\":/tmp -w /tmp node:latest npm test"
+  },
   "tap": {
     "100": true,
     "test-regex": "test/[^/]*.js"
   },
-  "engines": {
-    "node": ">= 10"
-  }
+  "version": "15.2.0"
 }
Index: trip-planner-front/node_modules/cache-base/package.json
===================================================================
--- trip-planner-front/node_modules/cache-base/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cache-base/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,48 @@
 {
-  "name": "cache-base",
-  "description": "Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects.",
-  "version": "1.0.1",
-  "homepage": "https://github.com/jonschlinkert/cache-base",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "cache-base@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/cache-base",
+  "_development": true,
+  "_from": "cache-base@1.0.1",
+  "_id": "cache-base@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+  "_location": "/cache-base",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cache-base@1.0.1",
+    "name": "cache-base",
+    "escapedName": "cache-base",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/cache-base/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "collection-visit": "^1.0.0",
@@ -35,8 +56,16 @@
     "unset-value": "^1.0.0"
   },
+  "description": "Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.4.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/cache-base",
   "keywords": [
     "base",
@@ -52,4 +81,14 @@
     "store"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "cache-base",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/cache-base.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -79,4 +118,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/call-bind/package.json
===================================================================
--- trip-planner-front/node_modules/call-bind/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/call-bind/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,80 +1,116 @@
 {
-	"name": "call-bind",
-	"version": "1.0.2",
-	"description": "Robustly `.call.bind()` a function",
-	"main": "index.js",
-	"exports": {
-		".": [
-			{
-				"default": "./index.js"
-			},
-			"./index.js"
-		],
-		"./callBound": [
-			{
-				"default": "./callBound.js"
-			},
-			"./callBound.js"
-		],
-		"./package.json": "./package.json"
-	},
-	"scripts": {
-		"prepublish": "safe-publish-latest",
-		"lint": "eslint --ext=.js,.mjs .",
-		"pretest": "npm run lint",
-		"tests-only": "nyc tape 'test/*'",
-		"test": "npm run tests-only",
-		"posttest": "aud --production",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git+https://github.com/ljharb/call-bind.git"
-	},
-	"keywords": [
-		"javascript",
-		"ecmascript",
-		"es",
-		"js",
-		"callbind",
-		"callbound",
-		"call",
-		"bind",
-		"bound",
-		"call-bind",
-		"call-bound",
-		"function",
-		"es-abstract"
-	],
-	"author": "Jordan Harband <ljharb@gmail.com>",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"license": "MIT",
-	"bugs": {
-		"url": "https://github.com/ljharb/call-bind/issues"
-	},
-	"homepage": "https://github.com/ljharb/call-bind#readme",
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.3.0",
-		"aud": "^1.1.3",
-		"auto-changelog": "^2.2.1",
-		"eslint": "^7.17.0",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.1.1"
-	},
-	"dependencies": {
-		"function-bind": "^1.1.1",
-		"get-intrinsic": "^1.0.2"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "call-bind@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "call-bind@1.0.2",
+  "_id": "call-bind@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+  "_location": "/call-bind",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "call-bind@1.0.2",
+    "name": "call-bind",
+    "escapedName": "call-bind",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/is-arguments",
+    "/is-regex",
+    "/object-is",
+    "/object.assign",
+    "/regexp.prototype.flags"
+  ],
+  "_resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/ljharb/call-bind/issues"
+  },
+  "dependencies": {
+    "function-bind": "^1.1.1",
+    "get-intrinsic": "^1.0.2"
+  },
+  "description": "Robustly `.call.bind()` a function",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.3.0",
+    "aud": "^1.1.3",
+    "auto-changelog": "^2.2.1",
+    "eslint": "^7.17.0",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.1.1"
+  },
+  "exports": {
+    ".": [
+      {
+        "default": "./index.js"
+      },
+      "./index.js"
+    ],
+    "./callBound": [
+      {
+        "default": "./callBound.js"
+      },
+      "./callBound.js"
+    ],
+    "./package.json": "./package.json"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/ljharb/call-bind#readme",
+  "keywords": [
+    "javascript",
+    "ecmascript",
+    "es",
+    "js",
+    "callbind",
+    "callbound",
+    "call",
+    "bind",
+    "bound",
+    "call-bind",
+    "call-bound",
+    "function",
+    "es-abstract"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "call-bind",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ljharb/call-bind.git"
+  },
+  "scripts": {
+    "lint": "eslint --ext=.js,.mjs .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only",
+    "tests-only": "nyc tape 'test/*'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/callsites/package.json
===================================================================
--- trip-planner-front/node_modules/callsites/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/callsites/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,75 @@
 {
-	"name": "callsites",
-	"version": "3.1.0",
-	"description": "Get callsites from the V8 stack trace API",
-	"license": "MIT",
-	"repository": "sindresorhus/callsites",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"stacktrace",
-		"v8",
-		"callsite",
-		"callsites",
-		"stack",
-		"trace",
-		"function",
-		"file",
-		"line",
-		"debug"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "callsites@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "callsites@3.1.0",
+  "_id": "callsites@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+  "_location": "/callsites",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "callsites@3.1.0",
+    "name": "callsites",
+    "escapedName": "callsites",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/parent-module"
+  ],
+  "_resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/callsites/issues"
+  },
+  "description": "Get callsites from the V8 stack trace API",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/callsites#readme",
+  "keywords": [
+    "stacktrace",
+    "v8",
+    "callsite",
+    "callsites",
+    "stack",
+    "trace",
+    "function",
+    "file",
+    "line",
+    "debug"
+  ],
+  "license": "MIT",
+  "name": "callsites",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/callsites.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/camelcase/package.json
===================================================================
--- trip-planner-front/node_modules/camelcase/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/camelcase/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,79 @@
 {
-	"name": "camelcase",
-	"version": "5.3.1",
-	"description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`",
-	"license": "MIT",
-	"repository": "sindresorhus/camelcase",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"camelcase",
-		"camel-case",
-		"camel",
-		"case",
-		"dash",
-		"hyphen",
-		"dot",
-		"underscore",
-		"separator",
-		"string",
-		"text",
-		"convert",
-		"pascalcase",
-		"pascal-case"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "camelcase@5.3.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "camelcase@5.3.1",
+  "_id": "camelcase@5.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+  "_location": "/camelcase",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "camelcase@5.3.1",
+    "name": "camelcase",
+    "escapedName": "camelcase",
+    "rawSpec": "5.3.1",
+    "saveSpec": null,
+    "fetchSpec": "5.3.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/yargs-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+  "_spec": "5.3.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/camelcase/issues"
+  },
+  "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/camelcase#readme",
+  "keywords": [
+    "camelcase",
+    "camel-case",
+    "camel",
+    "case",
+    "dash",
+    "hyphen",
+    "dot",
+    "underscore",
+    "separator",
+    "string",
+    "text",
+    "convert",
+    "pascalcase",
+    "pascal-case"
+  ],
+  "license": "MIT",
+  "name": "camelcase",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/camelcase.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "5.3.1"
 }
Index: trip-planner-front/node_modules/caniuse-api/package.json
===================================================================
--- trip-planner-front/node_modules/caniuse-api/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/caniuse-api/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,46 @@
 {
-  "name": "caniuse-api",
-  "version": "3.0.0",
-  "description": "request the caniuse data to check browsers compatibilities",
-  "repository": "https://github.com/nyalab/caniuse-api.git",
-  "keywords": [
-    "caniuse",
-    "browserslist"
+  "_args": [
+    [
+      "caniuse-api@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "caniuse-api@3.0.0",
+  "_id": "caniuse-api@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+  "_location": "/caniuse-api",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "caniuse-api@3.0.0",
+    "name": "caniuse-api",
+    "escapedName": "caniuse-api",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-colormin",
+    "/postcss-merge-rules",
+    "/postcss-reduce-initial"
+  ],
+  "_resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "nyalab",
     "MoOx"
   ],
-  "license": "MIT",
-  "main": "dist/index.js",
-  "files": [
-    "dist"
-  ],
+  "babel": {
+    "presets": [
+      "babel-preset-latest"
+    ]
+  },
+  "bugs": {
+    "url": "https://github.com/nyalab/caniuse-api/issues"
+  },
   "dependencies": {
     "browserslist": "^4.0.0",
@@ -23,4 +49,5 @@
     "lodash.uniq": "^4.5.0"
   },
+  "description": "request the caniuse data to check browsers compatibilities",
   "devDependencies": {
     "babel-cli": "^6.22.2",
@@ -33,15 +60,26 @@
     "tape": "^4.6.0"
   },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/nyalab/caniuse-api#readme",
+  "keywords": [
+    "caniuse",
+    "browserslist"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "caniuse-api",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/nyalab/caniuse-api.git"
+  },
   "scripts": {
     "build": "babel src --out-dir dist",
     "lint": "jshint src",
     "prepublish": "npm run build",
-    "test": "npm run lint && babel-tape-runner test/*.js | tap-spec",
-    "release": "npmpub"
+    "release": "npmpub",
+    "test": "npm run lint && babel-tape-runner test/*.js | tap-spec"
   },
-  "babel": {
-    "presets": [
-      "babel-preset-latest"
-    ]
-  }
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/caniuse-lite/package.json
===================================================================
--- trip-planner-front/node_modules/caniuse-lite/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/caniuse-lite/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,54 @@
 {
-  "name": "caniuse-lite",
-  "version": "1.0.30001265",
+  "_args": [
+    [
+      "caniuse-lite@1.0.30001265",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "caniuse-lite@1.0.30001265",
+  "_id": "caniuse-lite@1.0.30001265",
+  "_inBundle": false,
+  "_integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==",
+  "_location": "/caniuse-lite",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "caniuse-lite@1.0.30001265",
+    "name": "caniuse-lite",
+    "escapedName": "caniuse-lite",
+    "rawSpec": "1.0.30001265",
+    "saveSpec": null,
+    "fetchSpec": "1.0.30001265"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/autoprefixer",
+    "/browserslist",
+    "/caniuse-api",
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz",
+  "_spec": "1.0.30001265",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/browserslist/caniuse-lite/issues"
+  },
   "description": "A smaller version of caniuse-db, with only the essentials!",
-  "main": "dist/unpacker/index.js",
   "files": [
     "data",
     "dist"
   ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/browserslist"
+  },
+  "homepage": "https://github.com/browserslist/caniuse-lite#readme",
   "keywords": [
     "support",
@@ -15,14 +58,11 @@
     "svg"
   ],
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
+  "license": "CC-BY-4.0",
+  "main": "dist/unpacker/index.js",
+  "name": "caniuse-lite",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/browserslist/caniuse-lite.git"
   },
-  "repository": "browserslist/caniuse-lite",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/browserslist"
-  },
-  "license": "CC-BY-4.0"
+  "version": "1.0.30001265"
 }
Index: trip-planner-front/node_modules/canonical-path/package.json
===================================================================
--- trip-planner-front/node_modules/canonical-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/canonical-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,43 @@
 {
-  "name": "canonical-path",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "canonical-path@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "canonical-path@1.0.0",
+  "_id": "canonical-path@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==",
+  "_location": "/canonical-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "canonical-path@1.0.0",
+    "name": "canonical-path",
+    "escapedName": "canonical-path",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Pete Bacon Darwin"
+  },
+  "bugs": {
+    "url": "https://github.com/petebacondarwin/node-canonical-path/issues"
+  },
   "description": "paths that always use forward slashes",
-  "main": "index.js",
-  "typings": "index.d.ts",
-  "scripts": {
-    "test": "jasmine index.spec.js"
+  "devDependencies": {
+    "jasmine": "^3.2.0"
   },
-  "repository": "https://github.com/petebacondarwin/node-canonical-path",
+  "homepage": "https://github.com/petebacondarwin/node-canonical-path#readme",
   "keywords": [
     "path",
@@ -16,8 +47,15 @@
     "windows"
   ],
-  "author": "Pete Bacon Darwin",
   "license": "MIT",
-  "devDependencies": {
-    "jasmine": "^3.2.0"
-  }
+  "main": "index.js",
+  "name": "canonical-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/petebacondarwin/node-canonical-path.git"
+  },
+  "scripts": {
+    "test": "jasmine index.spec.js"
+  },
+  "typings": "index.d.ts",
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/caseless/package.json
===================================================================
--- trip-planner-front/node_modules/caseless/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/caseless/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,44 @@
 {
-  "name": "caseless",
-  "version": "0.12.0",
+  "_args": [
+    [
+      "caseless@0.12.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "caseless@0.12.0",
+  "_id": "caseless@0.12.0",
+  "_inBundle": false,
+  "_integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+  "_location": "/caseless",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "caseless@0.12.0",
+    "name": "caseless",
+    "escapedName": "caseless",
+    "rawSpec": "0.12.0",
+    "saveSpec": null,
+    "fetchSpec": "0.12.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+  "_spec": "0.12.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mikeal Rogers",
+    "email": "mikeal.rogers@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mikeal/caseless/issues"
+  },
   "description": "Caseless object set/get/has, very useful when working with HTTP headers.",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test.js"
+  "devDependencies": {
+    "tape": "^2.10.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mikeal/caseless"
-  },
+  "homepage": "https://github.com/mikeal/caseless#readme",
   "keywords": [
     "headers",
@@ -16,12 +46,15 @@
     "caseless"
   ],
+  "license": "Apache-2.0",
+  "main": "index.js",
+  "name": "caseless",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mikeal/caseless.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
   "test": "node test.js",
-  "author": "Mikeal Rogers <mikeal.rogers@gmail.com>",
-  "license": "Apache-2.0",
-  "bugs": {
-    "url": "https://github.com/mikeal/caseless/issues"
-  },
-  "devDependencies": {
-    "tape": "^2.10.2"
-  }
+  "version": "0.12.0"
 }
Index: trip-planner-front/node_modules/chalk/package.json
===================================================================
--- trip-planner-front/node_modules/chalk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/chalk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,71 +1,107 @@
 {
-	"name": "chalk",
-	"version": "2.4.2",
-	"description": "Terminal string styling done right",
-	"license": "MIT",
-	"repository": "chalk/chalk",
-	"engines": {
-		"node": ">=4"
-	},
-	"scripts": {
-		"test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava",
-		"bench": "matcha benchmark.js",
-		"coveralls": "nyc report --reporter=text-lcov | coveralls"
-	},
-	"files": [
-		"index.js",
-		"templates.js",
-		"types/index.d.ts",
-		"index.js.flow"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"str",
-		"ansi",
-		"style",
-		"styles",
-		"tty",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"ansi-styles": "^3.2.1",
-		"escape-string-regexp": "^1.0.5",
-		"supports-color": "^5.3.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"coveralls": "^3.0.0",
-		"execa": "^0.9.0",
-		"flow-bin": "^0.68.0",
-		"import-fresh": "^2.0.0",
-		"matcha": "^0.7.0",
-		"nyc": "^11.0.2",
-		"resolve-from": "^4.0.0",
-		"typescript": "^2.5.3",
-		"xo": "*"
-	},
-	"types": "types/index.d.ts",
-	"xo": {
-		"envs": [
-			"node",
-			"mocha"
-		],
-		"ignores": [
-			"test/_flow.js"
-		]
-	}
+  "_args": [
+    [
+      "chalk@2.4.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chalk@2.4.2",
+  "_id": "chalk@2.4.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+  "_location": "/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chalk@2.4.2",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "2.4.2",
+    "saveSpec": null,
+    "fetchSpec": "2.4.2"
+  },
+  "_requiredBy": [
+    "/@babel/highlight"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+  "_spec": "2.4.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "^3.2.1",
+    "escape-string-regexp": "^1.0.5",
+    "supports-color": "^5.3.0"
+  },
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "*",
+    "coveralls": "^3.0.0",
+    "execa": "^0.9.0",
+    "flow-bin": "^0.68.0",
+    "import-fresh": "^2.0.0",
+    "matcha": "^0.7.0",
+    "nyc": "^11.0.2",
+    "resolve-from": "^4.0.0",
+    "typescript": "^2.5.3",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js",
+    "templates.js",
+    "types/index.d.ts",
+    "index.js.flow"
+  ],
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava"
+  },
+  "types": "types/index.d.ts",
+  "version": "2.4.2",
+  "xo": {
+    "envs": [
+      "node",
+      "mocha"
+    ],
+    "ignores": [
+      "test/_flow.js"
+    ]
+  }
 }
Index: trip-planner-front/node_modules/chardet/package.json
===================================================================
--- trip-planner-front/node_modules/chardet/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/chardet/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,68 @@
 {
-  "name": "chardet",
-  "version": "0.7.0",
+  "_args": [
+    [
+      "chardet@0.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chardet@0.7.0",
+  "_id": "chardet@0.7.0",
+  "_inBundle": false,
+  "_integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+  "_location": "/chardet",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chardet@0.7.0",
+    "name": "chardet",
+    "escapedName": "chardet",
+    "rawSpec": "0.7.0",
+    "saveSpec": null,
+    "fetchSpec": "0.7.0"
+  },
+  "_requiredBy": [
+    "/external-editor"
+  ],
+  "_resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+  "_spec": "0.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dmitry Shirokov",
+    "email": "deadrunk@gmail.com"
+  },
+  "bugs": {
+    "url": "http://github.com/runk/node-chardet/issues"
+  },
+  "contributors": [
+    {
+      "name": "@spikying"
+    },
+    {
+      "name": "@wtgtybhertgeghgtwtg"
+    },
+    {
+      "name": "@suisho"
+    },
+    {
+      "name": "@seangarner"
+    },
+    {
+      "name": "@zevanty"
+    }
+  ],
+  "description": "Character detector",
+  "devDependencies": {
+    "github-publish-release": "^5.0.0",
+    "mocha": "^5.2.0"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "engine": {
+    "node": ">=4"
+  },
   "homepage": "https://github.com/runk/node-chardet",
-  "description": "Character detector",
   "keywords": [
     "encoding",
@@ -12,36 +73,15 @@
     "icu"
   ],
-  "author": "Dmitry Shirokov <deadrunk@gmail.com>",
-  "contributors": [
-    "@spikying",
-    "@wtgtybhertgeghgtwtg",
-    "@suisho",
-    "@seangarner",
-    "@zevanty"
-  ],
-  "devDependencies": {
-    "github-publish-release": "^5.0.0",
-    "mocha": "^5.2.0"
-  },
+  "license": "MIT",
+  "main": "index.js",
+  "name": "chardet",
   "repository": {
     "type": "git",
-    "url": "git@github.com:runk/node-chardet.git"
-  },
-  "bugs": {
-    "mail": "deadrunk@gmail.com",
-    "url": "http://github.com/runk/node-chardet/issues"
+    "url": "git+ssh://git@github.com/runk/node-chardet.git"
   },
   "scripts": {
-    "test": "mocha -R spec --recursive --bail",
-    "release": "scripts/release"
+    "release": "scripts/release",
+    "test": "mocha -R spec --recursive --bail"
   },
-  "main": "index.js",
-  "engine": {
-    "node": ">=4"
-  },
-  "readmeFilename": "README.md",
-  "directories": {
-    "test": "test"
-  },
-  "license": "MIT"
+  "version": "0.7.0"
 }
Index: trip-planner-front/node_modules/chokidar/package.json
===================================================================
--- trip-planner-front/node_modules/chokidar/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/chokidar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,54 @@
 {
-  "name": "chokidar",
-  "description": "Minimal and efficient cross-platform file watching library",
-  "version": "3.5.2",
-  "homepage": "https://github.com/paulmillr/chokidar",
-  "author": "Paul Miller (https://paulmillr.com)",
+  "_args": [
+    [
+      "chokidar@3.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chokidar@3.5.2",
+  "_id": "chokidar@3.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+  "_location": "/chokidar",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chokidar@3.5.2",
+    "name": "chokidar",
+    "escapedName": "chokidar",
+    "rawSpec": "3.5.2",
+    "saveSpec": null,
+    "fetchSpec": "3.5.2"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli",
+    "/karma",
+    "/sass"
+  ],
+  "_resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+  "_spec": "3.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Paul Miller",
+    "url": "https://paulmillr.com"
+  },
+  "bugs": {
+    "url": "https://github.com/paulmillr/chokidar/issues"
+  },
   "contributors": [
-    "Paul Miller (https://paulmillr.com)",
-    "Elan Shanker"
+    {
+      "name": "Paul Miller",
+      "url": "https://paulmillr.com"
+    },
+    {
+      "name": "Elan Shanker"
+    }
   ],
-  "engines": {
-    "node": ">= 8.10.0"
-  },
-  "main": "index.js",
   "dependencies": {
     "anymatch": "~3.1.2",
     "braces": "~3.0.2",
+    "fsevents": "~2.3.2",
     "glob-parent": "~5.1.2",
     "is-binary-path": "~2.1.0",
@@ -22,7 +57,5 @@
     "readdirp": "~3.6.0"
   },
-  "optionalDependencies": {
-    "fsevents": "~2.3.2"
-  },
+  "description": "Minimal and efficient cross-platform file watching library",
   "devDependencies": {
     "@types/node": "^14",
@@ -37,4 +70,7 @@
     "upath": "^1.2.0"
   },
+  "engines": {
+    "node": ">= 8.10.0"
+  },
   "files": [
     "index.js",
@@ -42,18 +78,5 @@
     "types/index.d.ts"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/paulmillr/chokidar.git"
-  },
-  "bugs": {
-    "url": "https://github.com/paulmillr/chokidar/issues"
-  },
-  "license": "MIT",
-  "scripts": {
-    "dtslint": "dtslint types",
-    "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .",
-    "mocha": "mocha --exit --timeout 90000",
-    "test": "npm run lint && npm run mocha"
-  },
+  "homepage": "https://github.com/paulmillr/chokidar",
   "keywords": [
     "fs",
@@ -65,5 +88,7 @@
     "fsevents"
   ],
-  "types": "./types/index.d.ts",
+  "license": "MIT",
+  "main": "index.js",
+  "name": "chokidar",
   "nyc": {
     "include": [
@@ -75,4 +100,19 @@
       "text"
     ]
-  }
+  },
+  "optionalDependencies": {
+    "fsevents": "~2.3.2"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/paulmillr/chokidar.git"
+  },
+  "scripts": {
+    "dtslint": "dtslint types",
+    "lint": "eslint --report-unused-disable-directives --ignore-path .gitignore .",
+    "mocha": "mocha --exit --timeout 90000",
+    "test": "npm run lint && npm run mocha"
+  },
+  "types": "./types/index.d.ts",
+  "version": "3.5.2"
 }
Index: trip-planner-front/node_modules/chownr/package.json
===================================================================
--- trip-planner-front/node_modules/chownr/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/chownr/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,43 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "name": "chownr",
+  "_args": [
+    [
+      "chownr@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chownr@2.0.0",
+  "_id": "chownr@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+  "_location": "/chownr",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chownr@2.0.0",
+    "name": "chownr",
+    "escapedName": "chownr",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/cacache",
+    "/pacote",
+    "/tar"
+  ],
+  "_resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/chownr/issues"
+  },
   "description": "like `chown -R`",
-  "version": "2.0.0",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/chownr.git"
-  },
-  "main": "chownr.js",
-  "files": [
-    "chownr.js"
-  ],
   "devDependencies": {
     "mkdirp": "0.3",
@@ -17,16 +45,27 @@
     "tap": "^14.10.6"
   },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "chownr.js"
+  ],
+  "homepage": "https://github.com/isaacs/chownr#readme",
+  "license": "ISC",
+  "main": "chownr.js",
+  "name": "chownr",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/chownr.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
-  },
-  "license": "ISC",
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/chrome-trace-event/package.json
===================================================================
--- trip-planner-front/node_modules/chrome-trace-event/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/chrome-trace-event/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,40 @@
 {
-  "name": "chrome-trace-event",
+  "_args": [
+    [
+      "chrome-trace-event@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chrome-trace-event@1.0.3",
+  "_id": "chrome-trace-event@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+  "_location": "/chrome-trace-event",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chrome-trace-event@1.0.3",
+    "name": "chrome-trace-event",
+    "escapedName": "chrome-trace-event",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Trent Mick, Sam Saccone"
+  },
+  "bugs": {
+    "url": "https://github.com/samccone/chrome-trace-event/issues"
+  },
+  "dependencies": {},
   "description": "A library to create a trace of your node app per Google's Trace Event format.",
-  "license": "MIT",
-  "version": "1.0.3",
-  "author": "Trent Mick, Sam Saccone",
-  "keywords": [
-    "trace-event",
-    "trace",
-    "event",
-    "trace-viewer",
-    "google"
-  ],
-  "repository": {
-    "url": "github:samccone/chrome-trace-event"
-  },
-  "main": "./dist/trace-event.js",
-  "typings": "./dist/trace-event.d.ts",
-  "dependencies": {},
   "devDependencies": {
     "@types/node": "*",
@@ -31,8 +50,24 @@
     "CHANGES.md"
   ],
+  "homepage": "https://github.com/samccone/chrome-trace-event#readme",
+  "keywords": [
+    "trace-event",
+    "trace",
+    "event",
+    "trace-viewer",
+    "google"
+  ],
+  "license": "MIT",
+  "main": "./dist/trace-event.js",
+  "name": "chrome-trace-event",
+  "repository": {
+    "url": "git+https://github.com/samccone/chrome-trace-event.git"
+  },
   "scripts": {
     "build": "tsc",
     "check_format": "prettier -l lib/** test/** examples/**",
     "test": "tape test/*.test.js"
-  }
+  },
+  "typings": "./dist/trace-event.d.ts",
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/circular-dependency-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/circular-dependency-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/circular-dependency-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,37 @@
 {
-  "name": "circular-dependency-plugin",
-  "main": "index.js",
+  "_args": [
+    [
+      "circular-dependency-plugin@5.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "circular-dependency-plugin@5.2.2",
+  "_id": "circular-dependency-plugin@5.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
+  "_location": "/circular-dependency-plugin",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "circular-dependency-plugin@5.2.2",
+    "name": "circular-dependency-plugin",
+    "escapedName": "circular-dependency-plugin",
+    "rawSpec": "5.2.2",
+    "saveSpec": null,
+    "fetchSpec": "5.2.2"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
+  "_spec": "5.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": "",
+  "bugs": {
+    "url": "https://github.com/aackerman/circular-dependency-plugin/issues"
+  },
+  "description": "Detect modules with circular dependencies when bundling with webpack.",
   "devDependencies": {
     "jest": "^22.4.2",
@@ -10,27 +42,10 @@
     "webpack5": "npm:webpack@^5.0.0"
   },
-  "peerDependencies": {
-    "webpack": ">=4.0.1"
-  },
-  "description": "Detect modules with circular dependencies when bundling with webpack.",
-  "version": "5.2.2",
   "engines": {
     "node": ">=6.0.0"
-  },
-  "scripts": {
-    "test": "jest"
   },
   "files": [
     "index.js"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/aackerman/circular-dependency-plugin.git"
-  },
-  "author": "",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/aackerman/circular-dependency-plugin/issues"
-  },
   "homepage": "https://github.com/aackerman/circular-dependency-plugin#readme",
   "jest": {
@@ -38,4 +53,18 @@
       "**/?(*.)(spec|test).js?(x)"
     ]
-  }
+  },
+  "license": "ISC",
+  "main": "index.js",
+  "name": "circular-dependency-plugin",
+  "peerDependencies": {
+    "webpack": ">=4.0.1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/aackerman/circular-dependency-plugin.git"
+  },
+  "scripts": {
+    "test": "jest"
+  },
+  "version": "5.2.2"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object.",
-  "version": "0.2.5",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/define-property",
+  "_args": [
+    [
+      "define-property@0.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-property@0.2.5",
+  "_id": "define-property@0.2.5",
+  "_inBundle": false,
+  "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+  "_location": "/class-utils/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@0.2.5",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "0.2.5",
+    "saveSpec": null,
+    "fetchSpec": "0.2.5"
+  },
+  "_requiredBy": [
+    "/class-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+  "_spec": "0.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "dependencies": {
+    "is-descriptor": "^0.1.0"
   },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Define a non-enumerable property on an object.",
   "devDependencies": {
     "mocha": "*",
     "should": "^7.0.4"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -36,4 +63,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -46,6 +83,4 @@
     }
   },
-  "dependencies": {
-    "is-descriptor": "^0.1.0"
-  }
+  "version": "0.2.5"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/class-utils/is-accessor-descriptor/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/class-utils/is-accessor-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/is-accessor-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,56 @@
 {
-  "name": "is-accessor-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-accessor-descriptor",
+  "_args": [
+    [
+      "is-accessor-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-accessor-descriptor@0.1.6",
+  "_id": "is-accessor-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+  "_location": "/class-utils/is-accessor-descriptor",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-accessor-descriptor@0.1.6",
+    "name": "is-accessor-descriptor",
+    "escapedName": "is-accessor-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/class-utils/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +71,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-accessor-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -58,4 +94,5 @@
     ],
     "layout": "default"
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/class-utils/is-data-descriptor/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/class-utils/is-data-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/is-data-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,56 @@
 {
-  "name": "is-data-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
-  "version": "0.1.4",
-  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-data-descriptor",
+  "_args": [
+    [
+      "is-data-descriptor@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-data-descriptor@0.1.4",
+  "_id": "is-data-descriptor@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+  "_location": "/class-utils/is-data-descriptor",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-data-descriptor@0.1.4",
+    "name": "is-data-descriptor",
+    "escapedName": "is-data-descriptor",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/class-utils/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-data-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +71,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-data-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -57,4 +93,5 @@
       "gulp-format-md"
     ]
-  }
+  },
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/is-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/is-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/is-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,52 @@
 {
-  "name": "is-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "is-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-descriptor",
+  "_development": true,
+  "_from": "is-descriptor@0.1.6",
+  "_id": "is-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+  "_location": "/class-utils/is-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-descriptor@0.1.6",
+    "name": "is-descriptor",
+    "escapedName": "is-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/class-utils/define-property"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "is-accessor-descriptor": "^0.1.6",
@@ -30,8 +54,16 @@
     "kind-of": "^5.0.0"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.4.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-descriptor",
   "keywords": [
     "accessor",
@@ -52,4 +84,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -72,4 +114,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/class-utils/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,74 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "5.1.0",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "James (https://twitter.com/aretecode)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)",
-    "tunnckoCore (https://i.am.charlike.online)"
+  "_args": [
+    [
+      "kind-of@5.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@5.1.0",
+  "_id": "kind-of@5.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+  "_location": "/class-utils/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@5.1.0",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "5.1.0",
+    "saveSpec": null,
+    "fetchSpec": "5.1.0"
+  },
+  "_requiredBy": [
+    "/class-utils/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+  "_spec": "5.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "James",
+      "url": "https://twitter.com/aretecode"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    },
+    {
+      "name": "tunnckoCore",
+      "url": "https://i.am.charlike.online"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -41,4 +81,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -64,4 +111,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -88,4 +146,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "5.1.0"
 }
Index: trip-planner-front/node_modules/class-utils/package.json
===================================================================
--- trip-planner-front/node_modules/class-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/class-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,54 @@
 {
-  "name": "class-utils",
-  "description": "Utils for working with JavaScript classes and prototype methods.",
-  "version": "0.3.6",
-  "homepage": "https://github.com/jonschlinkert/class-utils",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "class-utils@0.3.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/class-utils",
+  "_development": true,
+  "_from": "class-utils@0.3.6",
+  "_id": "class-utils@0.3.6",
+  "_inBundle": false,
+  "_integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+  "_location": "/class-utils",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "class-utils@0.3.6",
+    "name": "class-utils",
+    "escapedName": "class-utils",
+    "rawSpec": "0.3.6",
+    "saveSpec": null,
+    "fetchSpec": "0.3.6"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+  "_spec": "0.3.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/class-utils/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "arr-union": "^3.1.0",
@@ -31,4 +57,5 @@
     "static-extend": "^0.1.1"
   },
+  "description": "Utils for working with JavaScript classes and prototype methods.",
   "devDependencies": {
     "gulp": "^3.9.1",
@@ -41,4 +68,11 @@
     "through2": "^2.0.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/class-utils",
   "keywords": [
     "array",
@@ -64,4 +98,14 @@
     "utils"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "class-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/class-utils.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -87,4 +131,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.3.6"
 }
Index: trip-planner-front/node_modules/clean-stack/package.json
===================================================================
--- trip-planner-front/node_modules/clean-stack/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/clean-stack/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,75 @@
 {
-	"name": "clean-stack",
-	"version": "2.2.0",
-	"description": "Clean up error stack traces",
-	"license": "MIT",
-	"repository": "sindresorhus/clean-stack",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"clean",
-		"stack",
-		"trace",
-		"traces",
-		"error",
-		"err",
-		"electron"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	},
-	"browser": {
-		"os": false
-	}
+  "_args": [
+    [
+      "clean-stack@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "clean-stack@2.2.0",
+  "_id": "clean-stack@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+  "_location": "/clean-stack",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "clean-stack@2.2.0",
+    "name": "clean-stack",
+    "escapedName": "clean-stack",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/aggregate-error"
+  ],
+  "_resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": {
+    "os": false
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/clean-stack/issues"
+  },
+  "description": "Clean up error stack traces",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/clean-stack#readme",
+  "keywords": [
+    "clean",
+    "stack",
+    "trace",
+    "traces",
+    "error",
+    "err",
+    "electron"
+  ],
+  "license": "MIT",
+  "name": "clean-stack",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/clean-stack.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/cli-cursor/package.json
===================================================================
--- trip-planner-front/node_modules/cli-cursor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cli-cursor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,83 @@
 {
-	"name": "cli-cursor",
-	"version": "3.1.0",
-	"description": "Toggle the CLI cursor",
-	"license": "MIT",
-	"repository": "sindresorhus/cli-cursor",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"cli",
-		"cursor",
-		"ansi",
-		"toggle",
-		"display",
-		"show",
-		"hide",
-		"term",
-		"terminal",
-		"console",
-		"tty",
-		"shell",
-		"command-line"
-	],
-	"dependencies": {
-		"restore-cursor": "^3.1.0"
-	},
-	"devDependencies": {
-		"@types/node": "^12.0.7",
-		"ava": "^2.1.0",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "cli-cursor@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cli-cursor@3.1.0",
+  "_id": "cli-cursor@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+  "_location": "/cli-cursor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cli-cursor@3.1.0",
+    "name": "cli-cursor",
+    "escapedName": "cli-cursor",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/inquirer",
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/cli-cursor/issues"
+  },
+  "dependencies": {
+    "restore-cursor": "^3.1.0"
+  },
+  "description": "Toggle the CLI cursor",
+  "devDependencies": {
+    "@types/node": "^12.0.7",
+    "ava": "^2.1.0",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/cli-cursor#readme",
+  "keywords": [
+    "cli",
+    "cursor",
+    "ansi",
+    "toggle",
+    "display",
+    "show",
+    "hide",
+    "term",
+    "terminal",
+    "console",
+    "tty",
+    "shell",
+    "command-line"
+  ],
+  "license": "MIT",
+  "name": "cli-cursor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/cli-cursor.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/cli-spinners/package.json
===================================================================
--- trip-planner-front/node_modules/cli-spinners/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cli-spinners/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,49 +1,85 @@
 {
-	"name": "cli-spinners",
-	"version": "2.6.1",
-	"description": "Spinners for use in the terminal",
-	"license": "MIT",
-	"repository": "sindresorhus/cli-spinners",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"asciicast": "asciinema rec --command='node example-all.js' --title='cli-spinner' --quiet"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"spinners.json"
-	],
-	"keywords": [
-		"cli",
-		"spinner",
-		"spinners",
-		"terminal",
-		"term",
-		"console",
-		"ascii",
-		"unicode",
-		"loading",
-		"indicator",
-		"progress",
-		"busy",
-		"wait",
-		"idle",
-		"json"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"log-update": "^3.2.0",
-		"string-length": "^4.0.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "cli-spinners@2.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cli-spinners@2.6.1",
+  "_id": "cli-spinners@2.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
+  "_location": "/cli-spinners",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cli-spinners@2.6.1",
+    "name": "cli-spinners",
+    "escapedName": "cli-spinners",
+    "rawSpec": "2.6.1",
+    "saveSpec": null,
+    "fetchSpec": "2.6.1"
+  },
+  "_requiredBy": [
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
+  "_spec": "2.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/cli-spinners/issues"
+  },
+  "description": "Spinners for use in the terminal",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "log-update": "^3.2.0",
+    "string-length": "^4.0.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "spinners.json"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/cli-spinners#readme",
+  "keywords": [
+    "cli",
+    "spinner",
+    "spinners",
+    "terminal",
+    "term",
+    "console",
+    "ascii",
+    "unicode",
+    "loading",
+    "indicator",
+    "progress",
+    "busy",
+    "wait",
+    "idle",
+    "json"
+  ],
+  "license": "MIT",
+  "name": "cli-spinners",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/cli-spinners.git"
+  },
+  "scripts": {
+    "asciicast": "asciinema rec --command='node example-all.js' --title='cli-spinner' --quiet",
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.6.1"
 }
Index: trip-planner-front/node_modules/cli-width/package.json
===================================================================
--- trip-planner-front/node_modules/cli-width/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cli-width/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,40 @@
 {
-  "name": "cli-width",
-  "version": "3.0.0",
-  "description": "Get stdout window width, with two fallbacks, tty and then a default.",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test | tspec",
-    "coverage": "nyc node test | tspec",
-    "coveralls": "npm run coverage -s && coveralls < coverage/lcov.info",
-    "release": "standard-version"
+  "_args": [
+    [
+      "cli-width@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cli-width@3.0.0",
+  "_id": "cli-width@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+  "_location": "/cli-width",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cli-width@3.0.0",
+    "name": "cli-width",
+    "escapedName": "cli-width",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:knownasilya/cli-width.git"
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ilya Radchenko",
+    "email": "knownasilya@gmail.com"
   },
-  "author": "Ilya Radchenko <knownasilya@gmail.com>",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/knownasilya/cli-width/issues"
   },
-  "homepage": "https://github.com/knownasilya/cli-width",
-  "engines": {
-    "node": ">= 10"
-  },
+  "description": "Get stdout window width, with two fallbacks, tty and then a default.",
   "devDependencies": {
     "coveralls": "^3.0.11",
@@ -29,4 +43,22 @@
     "tap-spec": "^5.0.0",
     "tape": "^4.13.2"
-  }
+  },
+  "engines": {
+    "node": ">= 10"
+  },
+  "homepage": "https://github.com/knownasilya/cli-width",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "cli-width",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/knownasilya/cli-width.git"
+  },
+  "scripts": {
+    "coverage": "nyc node test | tspec",
+    "coveralls": "npm run coverage -s && coveralls < coverage/lcov.info",
+    "release": "standard-version",
+    "test": "node test | tspec"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/cliui/package.json
===================================================================
--- trip-planner-front/node_modules/cliui/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cliui/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,52 +1,40 @@
 {
-  "name": "cliui",
-  "version": "7.0.4",
-  "description": "easily create complex multi-column command-line-interfaces",
-  "main": "build/index.cjs",
-  "exports": {
-    ".": [
-      {
-        "import": "./index.mjs",
-        "require": "./build/index.cjs"
-      },
-      "./build/index.cjs"
+  "_args": [
+    [
+      "cliui@7.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
     ]
+  ],
+  "_development": true,
+  "_from": "cliui@7.0.4",
+  "_id": "cliui@7.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+  "_location": "/cliui",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cliui@7.0.4",
+    "name": "cliui",
+    "escapedName": "cliui",
+    "rawSpec": "7.0.4",
+    "saveSpec": null,
+    "fetchSpec": "7.0.4"
   },
-  "type": "module",
-  "module": "./index.mjs",
-  "scripts": {
-    "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'",
-    "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'",
-    "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs",
-    "test": "c8 mocha ./test/*.cjs",
-    "test:esm": "c8 mocha ./test/esm/cliui-test.mjs",
-    "postest": "check",
-    "coverage": "c8 report --check-coverage",
-    "precompile": "rimraf build",
-    "compile": "tsc",
-    "postcompile": "npm run build:cjs",
-    "build:cjs": "rollup -c",
-    "prepare": "npm run compile"
+  "_requiredBy": [
+    "/karma/yargs",
+    "/yargs"
+  ],
+  "_resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+  "_spec": "7.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Coe",
+    "email": "ben@npmjs.com"
   },
-  "repository": "yargs/cliui",
-  "standard": {
-    "ignore": [
-      "**/example/**"
-    ],
-    "globals": [
-      "it"
-    ]
+  "bugs": {
+    "url": "https://github.com/yargs/cliui/issues"
   },
-  "keywords": [
-    "cli",
-    "command-line",
-    "layout",
-    "design",
-    "console",
-    "wrap",
-    "table"
-  ],
-  "author": "Ben Coe <ben@npmjs.com>",
-  "license": "ISC",
   "dependencies": {
     "string-width": "^4.2.0",
@@ -54,4 +42,5 @@
     "wrap-ansi": "^7.0.0"
   },
+  "description": "easily create complex multi-column command-line-interfaces",
   "devDependencies": {
     "@types/node": "^14.0.27",
@@ -73,4 +62,16 @@
     "typescript": "^4.0.0"
   },
+  "engine": {
+    "node": ">=10"
+  },
+  "exports": {
+    ".": [
+      {
+        "import": "./index.mjs",
+        "require": "./build/index.cjs"
+      },
+      "./build/index.cjs"
+    ]
+  },
   "files": [
     "build",
@@ -78,6 +79,45 @@
     "!*.d.ts"
   ],
-  "engine": {
-    "node": ">=10"
-  }
+  "homepage": "https://github.com/yargs/cliui#readme",
+  "keywords": [
+    "cli",
+    "command-line",
+    "layout",
+    "design",
+    "console",
+    "wrap",
+    "table"
+  ],
+  "license": "ISC",
+  "main": "build/index.cjs",
+  "module": "./index.mjs",
+  "name": "cliui",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/yargs/cliui.git"
+  },
+  "scripts": {
+    "build:cjs": "rollup -c",
+    "check": "standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'",
+    "compile": "tsc",
+    "coverage": "c8 report --check-coverage",
+    "fix": "standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'",
+    "postcompile": "npm run build:cjs",
+    "postest": "check",
+    "precompile": "rimraf build",
+    "prepare": "npm run compile",
+    "pretest": "rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs",
+    "test": "c8 mocha ./test/*.cjs",
+    "test:esm": "c8 mocha ./test/esm/cliui-test.mjs"
+  },
+  "standard": {
+    "ignore": [
+      "**/example/**"
+    ],
+    "globals": [
+      "it"
+    ]
+  },
+  "type": "module",
+  "version": "7.0.4"
 }
Index: trip-planner-front/node_modules/clone-deep/package.json
===================================================================
--- trip-planner-front/node_modules/clone-deep/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/clone-deep/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,38 @@
 {
-  "name": "clone-deep",
-  "description": "Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives.",
-  "version": "4.0.1",
-  "homepage": "https://github.com/jonschlinkert/clone-deep",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/clone-deep",
+  "_args": [
+    [
+      "clone-deep@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "clone-deep@4.0.1",
+  "_id": "clone-deep@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+  "_location": "/clone-deep",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "clone-deep@4.0.1",
+    "name": "clone-deep",
+    "escapedName": "clone-deep",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/webpack-merge"
+  ],
+  "_resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/clone-deep/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=6"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
@@ -25,8 +41,16 @@
     "shallow-clone": "^3.0.0"
   },
+  "description": "Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives.",
   "devDependencies": {
     "gulp-format-md": "^2.0.0",
     "mocha": "^5.2.0"
   },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/clone-deep",
   "keywords": [
     "array",
@@ -58,4 +82,14 @@
     "symbol"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "clone-deep",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/clone-deep.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -78,4 +112,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/clone/package.json
===================================================================
--- trip-planner-front/node_modules/clone/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/clone/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,134 @@
 {
+  "_args": [
+    [
+      "clone@1.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "clone@1.0.4",
+  "_id": "clone@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+  "_location": "/clone",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "clone@1.0.4",
+    "name": "clone",
+    "escapedName": "clone",
+    "rawSpec": "1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "1.0.4"
+  },
+  "_requiredBy": [
+    "/defaults"
+  ],
+  "_resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+  "_spec": "1.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Paul Vorbach",
+    "email": "paul@vorba.ch",
+    "url": "http://paul.vorba.ch/"
+  },
+  "bugs": {
+    "url": "https://github.com/pvorb/node-clone/issues"
+  },
+  "contributors": [
+    {
+      "name": "Blake Miner",
+      "email": "miner.blake@gmail.com",
+      "url": "http://www.blakeminer.com/"
+    },
+    {
+      "name": "Tian You",
+      "email": "axqd001@gmail.com",
+      "url": "http://blog.axqd.net/"
+    },
+    {
+      "name": "George Stagas",
+      "email": "gstagas@gmail.com",
+      "url": "http://stagas.com/"
+    },
+    {
+      "name": "Tobiasz Cudnik",
+      "email": "tobiasz.cudnik@gmail.com",
+      "url": "https://github.com/TobiaszCudnik"
+    },
+    {
+      "name": "Pavel Lang",
+      "email": "langpavel@phpskelet.org",
+      "url": "https://github.com/langpavel"
+    },
+    {
+      "name": "Dan MacTough",
+      "url": "http://yabfog.com/"
+    },
+    {
+      "name": "w1nk",
+      "url": "https://github.com/w1nk"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "url": "http://twitter.com/hughskennedy"
+    },
+    {
+      "name": "Dustin Diaz",
+      "url": "http://dustindiaz.com"
+    },
+    {
+      "name": "Ilya Shaisultanov",
+      "url": "https://github.com/diversario"
+    },
+    {
+      "name": "Nathan MacInnes",
+      "email": "nathan@macinn.es",
+      "url": "http://macinn.es/"
+    },
+    {
+      "name": "Benjamin E. Coe",
+      "email": "ben@npmjs.com",
+      "url": "https://twitter.com/benjamincoe"
+    },
+    {
+      "name": "Nathan Zadoks",
+      "url": "https://github.com/nathan7"
+    },
+    {
+      "name": "Róbert Oroszi",
+      "email": "robert+gh@oroszi.net",
+      "url": "https://github.com/oroce"
+    },
+    {
+      "name": "Aurélio A. Heckert",
+      "url": "http://softwarelivre.org/aurium"
+    },
+    {
+      "name": "Guy Ellis",
+      "url": "http://www.guyellisrocks.com/"
+    }
+  ],
+  "dependencies": {},
+  "description": "deep cloning of objects and arrays",
+  "devDependencies": {
+    "nodeunit": "~0.9.0"
+  },
+  "engines": {
+    "node": ">=0.8"
+  },
+  "homepage": "https://github.com/pvorb/node-clone#readme",
+  "license": "MIT",
+  "main": "clone.js",
   "name": "clone",
-  "description": "deep cloning of objects and arrays",
+  "optionalDependencies": {},
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/pvorb/node-clone.git"
+  },
+  "scripts": {
+    "test": "nodeunit test.js"
+  },
   "tags": [
     "clone",
@@ -9,43 +138,4 @@
     "date"
   ],
-  "version": "1.0.4",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/pvorb/node-clone.git"
-  },
-  "bugs": {
-    "url": "https://github.com/pvorb/node-clone/issues"
-  },
-  "main": "clone.js",
-  "author": "Paul Vorbach <paul@vorba.ch> (http://paul.vorba.ch/)",
-  "contributors": [
-    "Blake Miner <miner.blake@gmail.com> (http://www.blakeminer.com/)",
-    "Tian You <axqd001@gmail.com> (http://blog.axqd.net/)",
-    "George Stagas <gstagas@gmail.com> (http://stagas.com/)",
-    "Tobiasz Cudnik <tobiasz.cudnik@gmail.com> (https://github.com/TobiaszCudnik)",
-    "Pavel Lang <langpavel@phpskelet.org> (https://github.com/langpavel)",
-    "Dan MacTough (http://yabfog.com/)",
-    "w1nk (https://github.com/w1nk)",
-    "Hugh Kennedy (http://twitter.com/hughskennedy)",
-    "Dustin Diaz (http://dustindiaz.com)",
-    "Ilya Shaisultanov (https://github.com/diversario)",
-    "Nathan MacInnes <nathan@macinn.es> (http://macinn.es/)",
-    "Benjamin E. Coe <ben@npmjs.com> (https://twitter.com/benjamincoe)",
-    "Nathan Zadoks (https://github.com/nathan7)",
-    "Róbert Oroszi <robert+gh@oroszi.net> (https://github.com/oroce)",
-    "Aurélio A. Heckert (http://softwarelivre.org/aurium)",
-    "Guy Ellis (http://www.guyellisrocks.com/)"
-  ],
-  "license": "MIT",
-  "engines": {
-    "node": ">=0.8"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "nodeunit": "~0.9.0"
-  },
-  "optionalDependencies": {},
-  "scripts": {
-    "test": "nodeunit test.js"
-  }
+  "version": "1.0.4"
 }
Index: trip-planner-front/node_modules/code-point-at/package.json
===================================================================
--- trip-planner-front/node_modules/code-point-at/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/code-point-at/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "code-point-at",
-  "version": "1.1.0",
-  "description": "ES2015 `String#codePointAt()` ponyfill",
-  "license": "MIT",
-  "repository": "sindresorhus/code-point-at",
+  "_args": [
+    [
+      "code-point-at@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "code-point-at@1.1.0",
+  "_id": "code-point-at@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+  "_location": "/code-point-at",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "code-point-at@1.1.0",
+    "name": "code-point-at",
+    "escapedName": "code-point-at",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/gauge/string-width"
+  ],
+  "_resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/code-point-at/issues"
+  },
+  "description": "ES2015 `String#codePointAt()` ponyfill",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "^0.16.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/code-point-at#readme",
   "keywords": [
     "es2015",
@@ -32,7 +62,13 @@
     "unicode"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "^0.16.0"
-  }
+  "license": "MIT",
+  "name": "code-point-at",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/code-point-at.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/collection-visit/package.json
===================================================================
--- trip-planner-front/node_modules/collection-visit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/collection-visit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,56 @@
 {
-  "name": "collection-visit",
-  "description": "Visit a method over the items in an object, or map visit over the objects in an array.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/collection-visit",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward <brian.woodward@gmail.com> (https://twitter.com/doowb)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "collection-visit@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/collection-visit",
+  "_development": true,
+  "_from": "collection-visit@1.0.0",
+  "_id": "collection-visit@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+  "_location": "/collection-visit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "collection-visit@1.0.0",
+    "name": "collection-visit",
+    "escapedName": "collection-visit",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/cache-base"
+  ],
+  "_resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/collection-visit/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "email": "brian.woodward@gmail.com",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "map-visit": "^1.0.0",
     "object-visit": "^1.0.0"
   },
+  "description": "Visit a method over the items in an object, or map visit over the objects in an array.",
   "devDependencies": {
     "clone-deep": "^0.2.4",
@@ -37,4 +62,11 @@
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/collection-visit",
   "keywords": [
     "array",
@@ -54,4 +86,14 @@
     "visitor"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "collection-visit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/collection-visit.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -73,4 +115,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/color-convert/package.json
===================================================================
--- trip-planner-front/node_modules/color-convert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/color-convert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,54 @@
 {
-  "name": "color-convert",
+  "_args": [
+    [
+      "color-convert@1.9.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-convert@1.9.3",
+  "_id": "color-convert@1.9.3",
+  "_inBundle": false,
+  "_integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+  "_location": "/color-convert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-convert@1.9.3",
+    "name": "color-convert",
+    "escapedName": "color-convert",
+    "rawSpec": "1.9.3",
+    "saveSpec": null,
+    "fetchSpec": "1.9.3"
+  },
+  "_requiredBy": [
+    "/ansi-styles"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+  "_spec": "1.9.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Heather Arthur",
+    "email": "fayearthur@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Qix-/color-convert/issues"
+  },
+  "dependencies": {
+    "color-name": "1.1.3"
+  },
   "description": "Plain color conversion functions",
-  "version": "1.9.3",
-  "author": "Heather Arthur <fayearthur@gmail.com>",
-  "license": "MIT",
-  "repository": "Qix-/color-convert",
-  "scripts": {
-    "pretest": "xo",
-    "test": "node test/basic.js"
+  "devDependencies": {
+    "chalk": "1.1.1",
+    "xo": "0.11.2"
   },
+  "files": [
+    "index.js",
+    "conversions.js",
+    "css-keywords.js",
+    "route.js"
+  ],
+  "homepage": "https://github.com/Qix-/color-convert#readme",
   "keywords": [
     "color",
@@ -24,10 +65,15 @@
     "ansi16"
   ],
-  "files": [
-    "index.js",
-    "conversions.js",
-    "css-keywords.js",
-    "route.js"
-  ],
+  "license": "MIT",
+  "name": "color-convert",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Qix-/color-convert.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "test": "node test/basic.js"
+  },
+  "version": "1.9.3",
   "xo": {
     "rules": {
@@ -36,11 +82,4 @@
       "operator-linebreak": 0
     }
-  },
-  "devDependencies": {
-    "chalk": "1.1.1",
-    "xo": "0.11.2"
-  },
-  "dependencies": {
-    "color-name": "1.1.3"
   }
 }
Index: trip-planner-front/node_modules/color-name/package.json
===================================================================
--- trip-planner-front/node_modules/color-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/color-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,41 @@
 {
-  "name": "color-name",
-  "version": "1.1.3",
+  "_args": [
+    [
+      "color-name@1.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-name@1.1.3",
+  "_id": "color-name@1.1.3",
+  "_inBundle": false,
+  "_integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+  "_location": "/color-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-name@1.1.3",
+    "name": "color-name",
+    "escapedName": "color-name",
+    "rawSpec": "1.1.3",
+    "saveSpec": null,
+    "fetchSpec": "1.1.3"
+  },
+  "_requiredBy": [
+    "/color-convert"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+  "_spec": "1.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "DY",
+    "email": "dfcreative@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/dfcreative/color-name/issues"
+  },
   "description": "A list of color names and its values",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:dfcreative/color-name.git"
-  },
+  "homepage": "https://github.com/dfcreative/color-name",
   "keywords": [
     "color-name",
@@ -17,9 +44,14 @@
     "keyword"
   ],
-  "author": "DY <dfcreative@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/dfcreative/color-name/issues"
+  "main": "index.js",
+  "name": "color-name",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/dfcreative/color-name.git"
   },
-  "homepage": "https://github.com/dfcreative/color-name"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.1.3"
 }
Index: trip-planner-front/node_modules/colord/package.json
===================================================================
--- trip-planner-front/node_modules/colord/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/colord/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,100 +1,42 @@
 {
-  "name": "colord",
-  "version": "2.8.0",
+  "_args": [
+    [
+      "colord@2.8.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "colord@2.8.0",
+  "_id": "colord@2.8.0",
+  "_inBundle": false,
+  "_integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==",
+  "_location": "/colord",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "colord@2.8.0",
+    "name": "colord",
+    "escapedName": "colord",
+    "rawSpec": "2.8.0",
+    "saveSpec": null,
+    "fetchSpec": "2.8.0"
+  },
+  "_requiredBy": [
+    "/postcss-colormin",
+    "/postcss-minify-gradients"
+  ],
+  "_resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz",
+  "_spec": "2.8.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Vlad Shilov",
+    "email": "omgovich@ya.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/omgovich/colord/issues"
+  },
+  "dependencies": {},
   "description": "👑 A tiny yet powerful tool for high-performance color manipulations and conversions",
-  "keywords": [
-    "color",
-    "parser",
-    "convert",
-    "tiny",
-    "hex",
-    "rgb",
-    "hsl",
-    "hsv",
-    "hwb",
-    "lab",
-    "lch",
-    "xyz",
-    "css",
-    "color-names",
-    "a11y",
-    "cmyk",
-    "mix",
-    "harmonies"
-  ],
-  "repository": "omgovich/colord",
-  "author": "Vlad Shilov <omgovich@ya.ru>",
-  "license": "MIT",
-  "sideEffects": false,
-  "main": "./index.js",
-  "module": "./index.mjs",
-  "exports": {
-    ".": {
-      "import": "./index.mjs",
-      "require": "./index.js",
-      "default": "./index.mjs"
-    },
-    "./plugins/a11y": {
-      "import": "./plugins/a11y.mjs",
-      "require": "./plugins/a11y.js",
-      "default": "./plugins/a11y.mjs"
-    },
-    "./plugins/cmyk": {
-      "import": "./plugins/cmyk.mjs",
-      "require": "./plugins/cmyk.js",
-      "default": "./plugins/cmyk.mjs"
-    },
-    "./plugins/harmonies": {
-      "import": "./plugins/harmonies.mjs",
-      "require": "./plugins/harmonies.js",
-      "default": "./plugins/harmonies.mjs"
-    },
-    "./plugins/hwb": {
-      "import": "./plugins/hwb.mjs",
-      "require": "./plugins/hwb.js",
-      "default": "./plugins/hwb.mjs"
-    },
-    "./plugins/lab": {
-      "import": "./plugins/lab.mjs",
-      "require": "./plugins/lab.js",
-      "default": "./plugins/lab.mjs"
-    },
-    "./plugins/lch": {
-      "import": "./plugins/lch.mjs",
-      "require": "./plugins/lch.js",
-      "default": "./plugins/lch.mjs"
-    },
-    "./plugins/mix": {
-      "import": "./plugins/mix.mjs",
-      "require": "./plugins/mix.js",
-      "default": "./plugins/mix.mjs"
-    },
-    "./plugins/names": {
-      "import": "./plugins/names.mjs",
-      "require": "./plugins/names.js",
-      "default": "./plugins/names.mjs"
-    },
-    "./plugins/xyz": {
-      "import": "./plugins/xyz.mjs",
-      "require": "./plugins/xyz.js",
-      "default": "./plugins/xyz.mjs"
-    }
-  },
-  "files": [
-    "*.{js,mjs,ts,map}",
-    "plugins/*.{js,mjs,ts,map}"
-  ],
-  "types": "index.d.ts",
-  "scripts": {
-    "lint": "eslint src/**/*.ts",
-    "size": "npm run build && size-limit",
-    "check-types": "tsc --noEmit true",
-    "test": "jest tests --coverage",
-    "benchmark": "tsc --outDir bench --skipLibCheck --esModuleInterop ./tests/benchmark.ts && node ./bench/tests/benchmark.js && rm -rf ./bench",
-    "build": "rm -rf ./dist/* && rollup --config",
-    "release": "npm run build && cp *.json dist && cp *.md dist && npm publish dist",
-    "check-release": "npm run release -- --dry-run"
-  },
-  "dependencies": {},
   "devDependencies": {
     "@size-limit/preset-small-lib": "^4.10.1",
@@ -122,10 +64,4 @@
     "typescript": "^4.2.3"
   },
-  "jest": {
-    "verbose": true,
-    "transform": {
-      "^.+\\.ts$": "ts-jest"
-    }
-  },
   "eslintConfig": {
     "plugins": [
@@ -140,7 +76,109 @@
     ]
   },
+  "exports": {
+    ".": {
+      "import": "./index.mjs",
+      "require": "./index.js",
+      "default": "./index.mjs"
+    },
+    "./plugins/a11y": {
+      "import": "./plugins/a11y.mjs",
+      "require": "./plugins/a11y.js",
+      "default": "./plugins/a11y.mjs"
+    },
+    "./plugins/cmyk": {
+      "import": "./plugins/cmyk.mjs",
+      "require": "./plugins/cmyk.js",
+      "default": "./plugins/cmyk.mjs"
+    },
+    "./plugins/harmonies": {
+      "import": "./plugins/harmonies.mjs",
+      "require": "./plugins/harmonies.js",
+      "default": "./plugins/harmonies.mjs"
+    },
+    "./plugins/hwb": {
+      "import": "./plugins/hwb.mjs",
+      "require": "./plugins/hwb.js",
+      "default": "./plugins/hwb.mjs"
+    },
+    "./plugins/lab": {
+      "import": "./plugins/lab.mjs",
+      "require": "./plugins/lab.js",
+      "default": "./plugins/lab.mjs"
+    },
+    "./plugins/lch": {
+      "import": "./plugins/lch.mjs",
+      "require": "./plugins/lch.js",
+      "default": "./plugins/lch.mjs"
+    },
+    "./plugins/mix": {
+      "import": "./plugins/mix.mjs",
+      "require": "./plugins/mix.js",
+      "default": "./plugins/mix.mjs"
+    },
+    "./plugins/names": {
+      "import": "./plugins/names.mjs",
+      "require": "./plugins/names.js",
+      "default": "./plugins/names.mjs"
+    },
+    "./plugins/xyz": {
+      "import": "./plugins/xyz.mjs",
+      "require": "./plugins/xyz.js",
+      "default": "./plugins/xyz.mjs"
+    }
+  },
+  "files": [
+    "*.{js,mjs,ts,map}",
+    "plugins/*.{js,mjs,ts,map}"
+  ],
+  "homepage": "https://github.com/omgovich/colord#readme",
+  "jest": {
+    "verbose": true,
+    "transform": {
+      "^.+\\.ts$": "ts-jest"
+    }
+  },
+  "keywords": [
+    "color",
+    "parser",
+    "convert",
+    "tiny",
+    "hex",
+    "rgb",
+    "hsl",
+    "hsv",
+    "hwb",
+    "lab",
+    "lch",
+    "xyz",
+    "css",
+    "color-names",
+    "a11y",
+    "cmyk",
+    "mix",
+    "harmonies"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "module": "./index.mjs",
+  "name": "colord",
   "prettier": {
     "printWidth": 100
   },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/omgovich/colord.git"
+  },
+  "scripts": {
+    "benchmark": "tsc --outDir bench --skipLibCheck --esModuleInterop ./tests/benchmark.ts && node ./bench/tests/benchmark.js && rm -rf ./bench",
+    "build": "rm -rf ./dist/* && rollup --config",
+    "check-release": "npm run release -- --dry-run",
+    "check-types": "tsc --noEmit true",
+    "lint": "eslint src/**/*.ts",
+    "release": "npm run build && cp *.json dist && cp *.md dist && npm publish dist",
+    "size": "npm run build && size-limit",
+    "test": "jest tests --coverage"
+  },
+  "sideEffects": false,
   "size-limit": [
     {
@@ -185,4 +223,6 @@
       "limit": "1 KB"
     }
-  ]
+  ],
+  "types": "index.d.ts",
+  "version": "2.8.0"
 }
Index: trip-planner-front/node_modules/colorette/package.json
===================================================================
--- trip-planner-front/node_modules/colorette/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/colorette/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,44 @@
 {
-  "name": "colorette",
-  "version": "1.4.0",
-  "type": "module",
-  "main": "index.cjs",
-  "module": "index.js",
-  "types": "index.d.ts",
+  "_args": [
+    [
+      "colorette@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "colorette@1.4.0",
+  "_id": "colorette@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+  "_location": "/colorette",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "colorette@1.4.0",
+    "name": "colorette",
+    "escapedName": "colorette",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/postcss",
+    "/webpack-dev-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jorge Bucaran"
+  },
+  "bugs": {
+    "url": "https://github.com/jorgebucaran/colorette/issues"
+  },
   "description": "Easily set the text color and style in the terminal.",
-  "repository": "jorgebucaran/colorette",
-  "license": "MIT",
+  "devDependencies": {
+    "c8": "*",
+    "twist": "*"
+  },
   "exports": {
     "./package.json": "./package.json",
@@ -19,5 +51,5 @@
     "*.*(c)[tj]s*"
   ],
-  "author": "Jorge Bucaran",
+  "homepage": "https://github.com/jorgebucaran/colorette#readme",
   "keywords": [
     "terminal",
@@ -26,14 +58,21 @@
     "ansi"
   ],
+  "license": "MIT",
+  "main": "index.cjs",
+  "module": "index.js",
+  "name": "colorette",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jorgebucaran/colorette.git"
+  },
   "scripts": {
-    "test": "c8 twist tests/*.js",
     "build": "node -e \"fs.writeFileSync('index.cjs', fs.readFileSync('index.js', 'utf8').replace(/export const /g, 'exports.').replace(/import \\* as ([^ ]+) from \\\"(.+)\\\"/, 'const \\$1 = require(\\\"\\$2\\\")'), 'utf8')\"",
     "deploy": "npm test && git commit --all --message $tag && git tag --sign $tag --message $tag && git push && git push --tags",
+    "prepare": "npm run build",
     "release": "tag=$npm_package_version npm run deploy && npm publish --access public",
-    "prepare": "npm run build"
+    "test": "c8 twist tests/*.js"
   },
-  "devDependencies": {
-    "c8": "*",
-    "twist": "*"
-  }
+  "type": "module",
+  "types": "index.d.ts",
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/colors/package.json
===================================================================
--- trip-planner-front/node_modules/colors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/colors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,78 @@
 {
+  "_args": [
+    [
+      "colors@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "colors@1.4.0",
+  "_id": "colors@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+  "_location": "/colors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "colors@1.4.0",
     "name": "colors",
-    "description": "get colors in your node.js console",
-    "version": "1.4.0",
-    "author": "Marak Squires",
-    "contributors": [
-        {
-            "name": "DABH",
-            "url": "https://github.com/DABH"
-        }
-    ],
-    "homepage": "https://github.com/Marak/colors.js",
-    "bugs": "https://github.com/Marak/colors.js/issues",
-    "keywords": [
-        "ansi",
-        "terminal",
-        "colors"
-    ],
-    "repository": {
-        "type": "git",
-        "url": "http://github.com/Marak/colors.js.git"
-    },
-    "license": "MIT",
-    "scripts": {
-        "lint": "eslint . --fix",
-        "test": "node tests/basic-test.js && node tests/safe-test.js"
-    },
-    "engines": {
-        "node": ">=0.1.90"
-    },
-    "main": "lib/index.js",
-    "files": [
-        "examples",
-        "lib",
-        "LICENSE",
-        "safe.js",
-        "themes",
-        "index.d.ts",
-        "safe.d.ts"
-    ],
-    "devDependencies": {
-        "eslint": "^5.2.0",
-        "eslint-config-google": "^0.11.0"
+    "escapedName": "colors",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Marak Squires"
+  },
+  "bugs": {
+    "url": "https://github.com/Marak/colors.js/issues"
+  },
+  "contributors": [
+    {
+      "name": "DABH",
+      "url": "https://github.com/DABH"
     }
+  ],
+  "description": "get colors in your node.js console",
+  "devDependencies": {
+    "eslint": "^5.2.0",
+    "eslint-config-google": "^0.11.0"
+  },
+  "engines": {
+    "node": ">=0.1.90"
+  },
+  "files": [
+    "examples",
+    "lib",
+    "LICENSE",
+    "safe.js",
+    "themes",
+    "index.d.ts",
+    "safe.d.ts"
+  ],
+  "homepage": "https://github.com/Marak/colors.js",
+  "keywords": [
+    "ansi",
+    "terminal",
+    "colors"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "colors",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/Marak/colors.js.git"
+  },
+  "scripts": {
+    "lint": "eslint . --fix",
+    "test": "node tests/basic-test.js && node tests/safe-test.js"
+  },
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/combined-stream/package.json
===================================================================
--- trip-planner-front/node_modules/combined-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/combined-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,62 @@
 {
-  "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
+  "_args": [
+    [
+      "combined-stream@1.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "combined-stream@1.0.8",
+  "_id": "combined-stream@1.0.8",
+  "_inBundle": false,
+  "_integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+  "_location": "/combined-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "combined-stream@1.0.8",
+    "name": "combined-stream",
+    "escapedName": "combined-stream",
+    "rawSpec": "1.0.8",
+    "saveSpec": null,
+    "fetchSpec": "1.0.8"
+  },
+  "_requiredBy": [
+    "/form-data",
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+  "_spec": "1.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Geisendörfer",
+    "email": "felix@debuggable.com",
+    "url": "http://debuggable.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/felixge/node-combined-stream/issues"
+  },
+  "dependencies": {
+    "delayed-stream": "~1.0.0"
+  },
+  "description": "A stream that emits multiple other streams one after another.",
+  "devDependencies": {
+    "far": "~0.0.7"
+  },
+  "engines": {
+    "node": ">= 0.8"
+  },
+  "homepage": "https://github.com/felixge/node-combined-stream",
+  "license": "MIT",
+  "main": "./lib/combined_stream",
   "name": "combined-stream",
-  "description": "A stream that emits multiple other streams one after another.",
-  "version": "1.0.8",
-  "homepage": "https://github.com/felixge/node-combined-stream",
   "repository": {
     "type": "git",
     "url": "git://github.com/felixge/node-combined-stream.git"
   },
-  "main": "./lib/combined_stream",
   "scripts": {
     "test": "node test/run.js"
   },
-  "engines": {
-    "node": ">= 0.8"
-  },
-  "dependencies": {
-    "delayed-stream": "~1.0.0"
-  },
-  "devDependencies": {
-    "far": "~0.0.7"
-  },
-  "license": "MIT"
+  "version": "1.0.8"
 }
Index: trip-planner-front/node_modules/commander/package.json
===================================================================
--- trip-planner-front/node_modules/commander/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/commander/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,41 @@
 {
-  "name": "commander",
-  "version": "7.2.0",
+  "_args": [
+    [
+      "commander@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "commander@7.2.0",
+  "_id": "commander@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+  "_location": "/commander",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "commander@7.2.0",
+    "name": "commander",
+    "escapedName": "commander",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "bugs": {
+    "url": "https://github.com/tj/commander.js/issues"
+  },
+  "dependencies": {},
   "description": "the complete solution for node.js command-line programs",
-  "keywords": [
-    "commander",
-    "command",
-    "option",
-    "parser",
-    "cli",
-    "argument",
-    "args",
-    "argv"
-  ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/tj/commander.js.git"
-  },
-  "scripts": {
-    "lint": "eslint index.js esm.mjs \"tests/**/*.js\"",
-    "typescript-lint": "eslint typings/*.ts tests/*.ts",
-    "test": "jest && npm run test-typings",
-    "test-esm": "node --experimental-modules ./tests/esm-imports-test.mjs",
-    "test-typings": "tsd",
-    "typescript-checkJS": "tsc --allowJS --checkJS index.js --noEmit",
-    "test-all": "npm run test && npm run lint && npm run typescript-lint && npm run typescript-checkJS && npm run test-esm"
-  },
-  "main": "./index.js",
-  "files": [
-    "index.js",
-    "esm.mjs",
-    "typings/index.d.ts",
-    "package-support.json"
-  ],
-  "type": "commonjs",
-  "dependencies": {},
   "devDependencies": {
     "@types/jest": "^26.0.20",
@@ -51,5 +52,14 @@
     "typescript": "^4.1.2"
   },
-  "types": "typings/index.d.ts",
+  "engines": {
+    "node": ">= 10"
+  },
+  "files": [
+    "index.js",
+    "esm.mjs",
+    "typings/index.d.ts",
+    "package-support.json"
+  ],
+  "homepage": "https://github.com/tj/commander.js#readme",
   "jest": {
     "testEnvironment": "node",
@@ -62,7 +72,33 @@
     ]
   },
-  "engines": {
-    "node": ">= 10"
+  "keywords": [
+    "commander",
+    "command",
+    "option",
+    "parser",
+    "cli",
+    "argument",
+    "args",
+    "argv"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "commander",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/tj/commander.js.git"
   },
-  "support": true
+  "scripts": {
+    "lint": "eslint index.js esm.mjs \"tests/**/*.js\"",
+    "test": "jest && npm run test-typings",
+    "test-all": "npm run test && npm run lint && npm run typescript-lint && npm run typescript-checkJS && npm run test-esm",
+    "test-esm": "node --experimental-modules ./tests/esm-imports-test.mjs",
+    "test-typings": "tsd",
+    "typescript-checkJS": "tsc --allowJS --checkJS index.js --noEmit",
+    "typescript-lint": "eslint typings/*.ts tests/*.ts"
+  },
+  "support": true,
+  "type": "commonjs",
+  "types": "typings/index.d.ts",
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/commondir/package.json
===================================================================
--- trip-planner-front/node_modules/commondir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/commondir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,49 @@
 {
-  "name": "commondir",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "commondir@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "commondir@1.0.1",
+  "_id": "commondir@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+  "_location": "/commondir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "commondir@1.0.1",
+    "name": "commondir",
+    "escapedName": "commondir",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/find-cache-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-commondir/issues"
+  },
+  "dependencies": {},
   "description": "compute the closest common parent for file paths",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {
     "tape": "^3.5.0"
   },
-  "scripts": {
-    "test": "tape test/*.js"
+  "engine": {
+    "node": ">=0.4"
   },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-commondir.git"
-  },
+  "homepage": "https://github.com/substack/node-commondir#readme",
   "keywords": [
     "common",
@@ -23,12 +54,14 @@
     "root"
   ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "commondir",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/substack/node-commondir.git"
   },
-  "license": "MIT",
-  "engine": {
-    "node": ">=0.4"
-  }
+  "scripts": {
+    "test": "tape test/*.js"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/component-emitter/package.json
===================================================================
--- trip-planner-front/node_modules/component-emitter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/component-emitter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,36 @@
 {
-  "name": "component-emitter",
-  "description": "Event emitter",
-  "version": "1.3.0",
-  "license": "MIT",
-  "devDependencies": {
-    "mocha": "*",
-    "should": "*"
+  "_args": [
+    [
+      "component-emitter@1.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "component-emitter@1.3.0",
+  "_id": "component-emitter@1.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+  "_location": "/component-emitter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "component-emitter@1.3.0",
+    "name": "component-emitter",
+    "escapedName": "component-emitter",
+    "rawSpec": "1.3.0",
+    "saveSpec": null,
+    "fetchSpec": "1.3.0"
+  },
+  "_requiredBy": [
+    "/base",
+    "/cache-base",
+    "/socket.io-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+  "_spec": "1.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/component/emitter/issues"
   },
   "component": {
@@ -13,15 +39,24 @@
     }
   },
+  "description": "Event emitter",
+  "devDependencies": {
+    "mocha": "*",
+    "should": "*"
+  },
+  "files": [
+    "index.js",
+    "LICENSE"
+  ],
+  "homepage": "https://github.com/component/emitter#readme",
+  "license": "MIT",
   "main": "index.js",
+  "name": "component-emitter",
   "repository": {
     "type": "git",
-    "url": "https://github.com/component/emitter.git"
+    "url": "git+https://github.com/component/emitter.git"
   },
   "scripts": {
     "test": "make test"
   },
-  "files": [
-    "index.js",
-    "LICENSE"
-  ]
+  "version": "1.3.0"
 }
Index: trip-planner-front/node_modules/compressible/package.json
===================================================================
--- trip-planner-front/node_modules/compressible/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/compressible/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,55 @@
 {
-  "name": "compressible",
-  "description": "Compressible Content-Type / mime checking",
-  "version": "2.0.18",
+  "_args": [
+    [
+      "compressible@2.0.18",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "compressible@2.0.18",
+  "_id": "compressible@2.0.18",
+  "_inBundle": false,
+  "_integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+  "_location": "/compressible",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "compressible@2.0.18",
+    "name": "compressible",
+    "escapedName": "compressible",
+    "rawSpec": "2.0.18",
+    "saveSpec": null,
+    "fetchSpec": "2.0.18"
+  },
+  "_requiredBy": [
+    "/compression"
+  ],
+  "_resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+  "_spec": "2.0.18",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/compressible/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
-    "Jeremiah Senkpiel <fishrock123@rocketmail.com> (https://searchbeam.jit.su)"
-  ],
-  "license": "MIT",
-  "repository": "jshttp/compressible",
-  "keywords": [
-    "compress",
-    "gzip",
-    "mime",
-    "content-type"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    },
+    {
+      "name": "Jeremiah Senkpiel",
+      "email": "fishrock123@rocketmail.com",
+      "url": "https://searchbeam.jit.su"
+    }
   ],
   "dependencies": {
     "mime-db": ">= 1.43.0 < 2"
   },
+  "description": "Compressible Content-Type / mime checking",
   "devDependencies": {
     "eslint": "6.8.0",
@@ -39,4 +72,17 @@
     "index.js"
   ],
+  "homepage": "https://github.com/jshttp/compressible#readme",
+  "keywords": [
+    "compress",
+    "gzip",
+    "mime",
+    "content-type"
+  ],
+  "license": "MIT",
+  "name": "compressible",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/compressible.git"
+  },
   "scripts": {
     "lint": "eslint --plugin markdown --ext js,md .",
@@ -45,4 +91,5 @@
     "test-travis": "nyc --reporter=text npm test",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "2.0.18"
 }
Index: trip-planner-front/node_modules/compression/node_modules/bytes/package.json
===================================================================
--- trip-planner-front/node_modules/compression/node_modules/bytes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/compression/node_modules/bytes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,65 @@
 {
-  "name": "bytes",
+  "_args": [
+    [
+      "bytes@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "bytes@3.0.0",
+  "_id": "bytes@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+  "_location": "/compression/bytes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "bytes@3.0.0",
+    "name": "bytes",
+    "escapedName": "bytes",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/compression"
+  ],
+  "_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca",
+    "url": "http://tjholowaychuk.com"
+  },
+  "bugs": {
+    "url": "https://github.com/visionmedia/bytes.js/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jed Watson",
+      "email": "jed.watson@me.com"
+    },
+    {
+      "name": "Théo FIDRY",
+      "email": "theo.fidry@gmail.com"
+    }
+  ],
   "description": "Utility to parse a string bytes to bytes and vice-versa",
-  "version": "3.0.0",
-  "author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
-  "contributors": [
-    "Jed Watson <jed.watson@me.com>",
-    "Théo FIDRY <theo.fidry@gmail.com>"
+  "devDependencies": {
+    "mocha": "2.5.3",
+    "nyc": "10.3.2"
+  },
+  "engines": {
+    "node": ">= 0.8"
+  },
+  "files": [
+    "History.md",
+    "LICENSE",
+    "Readme.md",
+    "index.js"
   ],
-  "license": "MIT",
+  "homepage": "https://github.com/visionmedia/bytes.js#readme",
   "keywords": [
     "byte",
@@ -18,17 +71,9 @@
     "converter"
   ],
-  "repository": "visionmedia/bytes.js",
-  "devDependencies": {
-    "mocha": "2.5.3",
-    "nyc": "10.3.2"
-  },
-  "files": [
-    "History.md",
-    "LICENSE",
-    "Readme.md",
-    "index.js"
-  ],
-  "engines": {
-    "node": ">= 0.8"
+  "license": "MIT",
+  "name": "bytes",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/visionmedia/bytes.js.git"
   },
   "scripts": {
@@ -36,4 +81,5 @@
     "test-ci": "nyc --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test"
-  }
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/compression/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/compression/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/compression/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/compression/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/compression"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/compression/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/compression/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/compression/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/compression/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/compression/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/compression/package.json
===================================================================
--- trip-planner-front/node_modules/compression/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/compression/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,46 @@
 {
-  "name": "compression",
-  "description": "Node.js compression middleware",
-  "version": "1.7.4",
+  "_args": [
+    [
+      "compression@1.7.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "compression@1.7.4",
+  "_id": "compression@1.7.4",
+  "_inBundle": false,
+  "_integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+  "_location": "/compression",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "compression@1.7.4",
+    "name": "compression",
+    "escapedName": "compression",
+    "rawSpec": "1.7.4",
+    "saveSpec": null,
+    "fetchSpec": "1.7.4"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+  "_spec": "1.7.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/expressjs/compression/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "expressjs/compression",
   "dependencies": {
     "accepts": "~1.3.5",
@@ -18,4 +52,5 @@
     "vary": "~1.1.2"
   },
+  "description": "Node.js compression middleware",
   "devDependencies": {
     "after": "0.8.2",
@@ -31,4 +66,7 @@
     "supertest": "4.0.0"
   },
+  "engines": {
+    "node": ">= 0.8.0"
+  },
   "files": [
     "LICENSE",
@@ -36,6 +74,10 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8.0"
+  "homepage": "https://github.com/expressjs/compression#readme",
+  "license": "MIT",
+  "name": "compression",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/expressjs/compression.git"
   },
   "scripts": {
@@ -44,4 +86,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec"
-  }
+  },
+  "version": "1.7.4"
 }
Index: trip-planner-front/node_modules/concat-map/package.json
===================================================================
--- trip-planner-front/node_modules/concat-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/concat-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,92 @@
 {
-    "name" : "concat-map",
-    "description" : "concatenative mapdashery",
-    "version" : "0.0.1",
-    "repository" : {
-        "type" : "git",
-        "url" : "git://github.com/substack/node-concat-map.git"
-    },
-    "main" : "index.js",
-    "keywords" : [
-        "concat",
-        "concatMap",
-        "map",
-        "functional",
-        "higher-order"
-    ],
-    "directories" : {
-        "example" : "example",
-        "test" : "test"
-    },
-    "scripts" : {
-        "test" : "tape test/*.js"
-    },
-    "devDependencies" : {
-        "tape" : "~2.4.0"
-    },
-    "license" : "MIT",
-    "author" : {
-        "name" : "James Halliday",
-        "email" : "mail@substack.net",
-        "url" : "http://substack.net"
-    },
-    "testling" : {
-        "files" : "test/*.js",
-        "browsers" : {
-            "ie" : [ 6, 7, 8, 9 ],
-            "ff" : [ 3.5, 10, 15.0 ],
-            "chrome" : [ 10, 22 ],
-            "safari" : [ 5.1 ],
-            "opera" : [ 12 ]
-        }
+  "_args": [
+    [
+      "concat-map@0.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "concat-map@0.0.1",
+  "_id": "concat-map@0.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+  "_location": "/concat-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "concat-map@0.0.1",
+    "name": "concat-map",
+    "escapedName": "concat-map",
+    "rawSpec": "0.0.1",
+    "saveSpec": null,
+    "fetchSpec": "0.0.1"
+  },
+  "_requiredBy": [
+    "/brace-expansion"
+  ],
+  "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+  "_spec": "0.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-concat-map/issues"
+  },
+  "description": "concatenative mapdashery",
+  "devDependencies": {
+    "tape": "~2.4.0"
+  },
+  "directories": {
+    "example": "example",
+    "test": "test"
+  },
+  "homepage": "https://github.com/substack/node-concat-map#readme",
+  "keywords": [
+    "concat",
+    "concatMap",
+    "map",
+    "functional",
+    "higher-order"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "concat-map",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/substack/node-concat-map.git"
+  },
+  "scripts": {
+    "test": "tape test/*.js"
+  },
+  "testling": {
+    "files": "test/*.js",
+    "browsers": {
+      "ie": [
+        6,
+        7,
+        8,
+        9
+      ],
+      "ff": [
+        3.5,
+        10,
+        15
+      ],
+      "chrome": [
+        10,
+        22
+      ],
+      "safari": [
+        5.1
+      ],
+      "opera": [
+        12
+      ]
     }
+  },
+  "version": "0.0.1"
 }
Index: trip-planner-front/node_modules/connect-history-api-fallback/package.json
===================================================================
--- trip-planner-front/node_modules/connect-history-api-fallback/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/connect-history-api-fallback/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,60 @@
 {
-  "name": "connect-history-api-fallback",
-  "version": "1.6.0",
+  "_args": [
+    [
+      "connect-history-api-fallback@1.6.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "connect-history-api-fallback@1.6.0",
+  "_id": "connect-history-api-fallback@1.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+  "_location": "/connect-history-api-fallback",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "connect-history-api-fallback@1.6.0",
+    "name": "connect-history-api-fallback",
+    "escapedName": "connect-history-api-fallback",
+    "rawSpec": "1.6.0",
+    "saveSpec": null,
+    "fetchSpec": "1.6.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+  "_spec": "1.6.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Ripkens",
+    "email": "bripkens.dev@gmail.com",
+    "url": "http://bripkens.de"
+  },
+  "bugs": {
+    "url": "https://github.com/bripkens/connect-history-api-fallback/issues"
+  },
+  "contributors": [
+    {
+      "name": "Craig Myles",
+      "email": "cr@igmyles.com",
+      "url": "http://www.craigmyles.com"
+    }
+  ],
   "description": "Provides a fallback for non-existing directories so that the HTML 5 history API can be used.",
+  "devDependencies": {
+    "eslint": "^0.18.0",
+    "nodeunit": "^0.11.3",
+    "sinon": "^1.14.1"
+  },
+  "engines": {
+    "node": ">=0.8"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/bripkens/connect-history-api-fallback#readme",
   "keyswords": [
     "connect",
@@ -10,31 +64,14 @@
     "spa"
   ],
-  "engines": {
-    "node": ">=0.8"
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "connect-history-api-fallback",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/bripkens/connect-history-api-fallback.git"
   },
-  "main": "lib/index.js",
-  "files": [
-    "lib"
-  ],
   "scripts": {
     "test": "eslint lib/index.js test/index_test.js && nodeunit test/index_test.js"
   },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/bripkens/connect-history-api-fallback.git"
-  },
-  "author": {
-    "name": "Ben Ripkens",
-    "email": "bripkens.dev@gmail.com",
-    "url": "http://bripkens.de"
-  },
-  "contributors": [
-    "Craig Myles <cr@igmyles.com> (http://www.craigmyles.com)"
-  ],
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "^0.18.0",
-    "nodeunit": "^0.11.3",
-    "sinon": "^1.14.1"
-  }
+  "version": "1.6.0"
 }
Index: trip-planner-front/node_modules/connect/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/connect/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/connect/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/connect/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/connect"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/connect/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/connect/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/connect/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/connect/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/connect/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/connect/package.json
===================================================================
--- trip-planner-front/node_modules/connect/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/connect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,78 @@
 {
-  "name": "connect",
+  "_args": [
+    [
+      "connect@3.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "connect@3.7.0",
+  "_id": "connect@3.7.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+  "_location": "/connect",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "connect@3.7.0",
+    "name": "connect",
+    "escapedName": "connect",
+    "rawSpec": "3.7.0",
+    "saveSpec": null,
+    "fetchSpec": "3.7.0"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+  "_spec": "3.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca",
+    "url": "http://tjholowaychuk.com"
+  },
+  "bugs": {
+    "url": "https://github.com/senchalabs/connect/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com"
+    },
+    {
+      "name": "Tim Caswell",
+      "email": "tim@creationix.com"
+    }
+  ],
+  "dependencies": {
+    "debug": "2.6.9",
+    "finalhandler": "1.1.2",
+    "parseurl": "~1.3.3",
+    "utils-merge": "1.0.1"
+  },
   "description": "High performance middleware framework",
-  "version": "3.7.0",
-  "author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com>",
-    "Tim Caswell <tim@creationix.com>"
+  "devDependencies": {
+    "eslint": "4.19.1",
+    "mocha": "6.1.4",
+    "nyc": "14.1.1",
+    "supertest": "4.0.2"
+  },
+  "engines": {
+    "node": ">= 0.10.0"
+  },
+  "files": [
+    "LICENSE",
+    "HISTORY.md",
+    "README.md",
+    "SECURITY.md",
+    "index.js"
   ],
+  "homepage": "https://github.com/senchalabs/connect#readme",
   "keywords": [
     "framework",
@@ -16,27 +82,9 @@
     "rack"
   ],
-  "repository": "senchalabs/connect",
-  "dependencies": {
-    "debug": "2.6.9",
-    "finalhandler": "1.1.2",
-    "parseurl": "~1.3.3",
-    "utils-merge": "1.0.1"
-  },
-  "devDependencies": {
-    "eslint": "4.19.1",
-    "mocha": "6.1.4",
-    "nyc": "14.1.1",
-    "supertest": "4.0.2"
-  },
   "license": "MIT",
-  "files": [
-    "LICENSE",
-    "HISTORY.md",
-    "README.md",
-    "SECURITY.md",
-    "index.js"
-  ],
-  "engines": {
-    "node": ">= 0.10.0"
+  "name": "connect",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/senchalabs/connect.git"
   },
   "scripts": {
@@ -45,4 +93,5 @@
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "test-travis": "nyc --reporter=text npm test"
-  }
+  },
+  "version": "3.7.0"
 }
Index: trip-planner-front/node_modules/console-control-strings/package.json
===================================================================
--- trip-planner-front/node_modules/console-control-strings/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/console-control-strings/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,65 @@
 {
-  "name": "console-control-strings",
-  "version": "1.1.0",
+  "_args": [
+    [
+      "console-control-strings@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "console-control-strings@1.1.0",
+  "_id": "console-control-strings@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+  "_location": "/console-control-strings",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "console-control-strings@1.1.0",
+    "name": "console-control-strings",
+    "escapedName": "console-control-strings",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/gauge",
+    "/npmlog"
+  ],
+  "_resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "email": "me@re-becca.org",
+    "url": "http://re-becca.org/"
+  },
+  "bugs": {
+    "url": "https://github.com/iarna/console-control-strings/issues"
+  },
   "description": "A library of cross-platform tested terminal/console command strings for doing things like color and cursor positioning.  This is a subset of both ansi and vt100.  All control codes included work on both Windows & Unix-like OSes, except where noted.",
-  "main": "index.js",
+  "devDependencies": {
+    "standard": "^7.1.2",
+    "tap": "^5.7.2"
+  },
   "directories": {
     "test": "test"
+  },
+  "files": [
+    "LICENSE",
+    "index.js"
+  ],
+  "homepage": "https://github.com/iarna/console-control-strings#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "console-control-strings",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iarna/console-control-strings.git"
   },
   "scripts": {
     "test": "standard && tap test/*.js"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iarna/console-control-strings"
-  },
-  "keywords": [],
-  "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org/)",
-  "license": "ISC",
-  "files": [
-    "LICENSE",
-    "index.js"
-  ],
-  "devDependencies": {
-    "standard": "^7.1.2",
-    "tap": "^5.7.2"
-  }
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/content-disposition/package.json
===================================================================
--- trip-planner-front/node_modules/content-disposition/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/content-disposition/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,43 @@
 {
-  "name": "content-disposition",
-  "description": "Create and parse Content-Disposition header",
-  "version": "0.5.3",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "keywords": [
-    "content-disposition",
-    "http",
-    "rfc6266",
-    "res"
+  "_args": [
+    [
+      "content-disposition@0.5.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jshttp/content-disposition",
+  "_development": true,
+  "_from": "content-disposition@0.5.3",
+  "_id": "content-disposition@0.5.3",
+  "_inBundle": false,
+  "_integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+  "_location": "/content-disposition",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "content-disposition@0.5.3",
+    "name": "content-disposition",
+    "escapedName": "content-disposition",
+    "rawSpec": "0.5.3",
+    "saveSpec": null,
+    "fetchSpec": "0.5.3"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+  "_spec": "0.5.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/content-disposition/issues"
+  },
   "dependencies": {
     "safe-buffer": "5.1.2"
   },
+  "description": "Create and parse Content-Disposition header",
   "devDependencies": {
     "deep-equal": "1.0.1",
@@ -27,4 +52,7 @@
     "mocha": "5.2.0"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "LICENSE",
@@ -33,6 +61,16 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/content-disposition#readme",
+  "keywords": [
+    "content-disposition",
+    "http",
+    "rfc6266",
+    "res"
+  ],
+  "license": "MIT",
+  "name": "content-disposition",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/content-disposition.git"
   },
   "scripts": {
@@ -41,4 +79,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "0.5.3"
 }
Index: trip-planner-front/node_modules/content-type/package.json
===================================================================
--- trip-planner-front/node_modules/content-type/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/content-type/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,41 @@
 {
-  "name": "content-type",
+  "_args": [
+    [
+      "content-type@1.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "content-type@1.0.4",
+  "_id": "content-type@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+  "_location": "/content-type",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "content-type@1.0.4",
+    "name": "content-type",
+    "escapedName": "content-type",
+    "rawSpec": "1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "1.0.4"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+  "_spec": "1.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/content-type/issues"
+  },
   "description": "Create and parse HTTP Content-Type header",
-  "version": "1.0.4",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "keywords": [
-    "content-type",
-    "http",
-    "req",
-    "res",
-    "rfc7231"
-  ],
-  "repository": "jshttp/content-type",
   "devDependencies": {
     "eslint": "3.19.0",
@@ -23,4 +48,7 @@
     "mocha": "~1.21.5"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "LICENSE",
@@ -29,6 +57,17 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/content-type#readme",
+  "keywords": [
+    "content-type",
+    "http",
+    "req",
+    "res",
+    "rfc7231"
+  ],
+  "license": "MIT",
+  "name": "content-type",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/content-type.git"
   },
   "scripts": {
@@ -37,4 +76,5 @@
     "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
-  }
+  },
+  "version": "1.0.4"
 }
Index: trip-planner-front/node_modules/convert-source-map/package.json
===================================================================
--- trip-planner-front/node_modules/convert-source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/convert-source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,61 @@
 {
-  "name": "convert-source-map",
-  "version": "1.8.0",
-  "description": "Converts a source-map from/to  different formats and allows adding/changing properties.",
-  "main": "index.js",
-  "scripts": {
-    "test": "tap test/*.js --color"
+  "_args": [
+    [
+      "convert-source-map@1.8.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "convert-source-map@1.8.0",
+  "_id": "convert-source-map@1.8.0",
+  "_inBundle": false,
+  "_integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+  "_location": "/convert-source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "convert-source-map@1.8.0",
+    "name": "convert-source-map",
+    "escapedName": "convert-source-map",
+    "rawSpec": "1.8.0",
+    "saveSpec": null,
+    "fetchSpec": "1.8.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/thlorenz/convert-source-map.git"
+  "_requiredBy": [
+    "/@angular/compiler-cli",
+    "/@babel/core",
+    "/@jsdevtools/coverage-istanbul-loader",
+    "/resolve-url-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+  "_spec": "1.8.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Thorsten Lorenz",
+    "email": "thlorenz@gmx.de",
+    "url": "http://thlorenz.com"
   },
-  "homepage": "https://github.com/thlorenz/convert-source-map",
+  "browser": {
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/thlorenz/convert-source-map/issues"
+  },
   "dependencies": {
     "safe-buffer": "~5.1.1"
   },
+  "description": "Converts a source-map from/to  different formats and allows adding/changing properties.",
   "devDependencies": {
     "inline-source-map": "~0.6.2",
     "tap": "~9.0.0"
   },
+  "engine": {
+    "node": ">=0.6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/thlorenz/convert-source-map",
   "keywords": [
     "convert",
@@ -27,18 +66,14 @@
     "debug"
   ],
-  "author": {
-    "name": "Thorsten Lorenz",
-    "email": "thlorenz@gmx.de",
-    "url": "http://thlorenz.com"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "convert-source-map",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/thlorenz/convert-source-map.git"
   },
-  "license": "MIT",
-  "engine": {
-    "node": ">=0.6"
+  "scripts": {
+    "test": "tap test/*.js --color"
   },
-  "files": [
-    "index.js"
-  ],
-  "browser": {
-    "fs": false
-  }
+  "version": "1.8.0"
 }
Index: trip-planner-front/node_modules/cookie-signature/package.json
===================================================================
--- trip-planner-front/node_modules/cookie-signature/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cookie-signature/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,61 @@
 {
-  "name": "cookie-signature",
-  "version": "1.0.6",
+  "_args": [
+    [
+      "cookie-signature@1.0.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cookie-signature@1.0.6",
+  "_id": "cookie-signature@1.0.6",
+  "_inBundle": false,
+  "_integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+  "_location": "/cookie-signature",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cookie-signature@1.0.6",
+    "name": "cookie-signature",
+    "escapedName": "cookie-signature",
+    "rawSpec": "1.0.6",
+    "saveSpec": null,
+    "fetchSpec": "1.0.6"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+  "_spec": "1.0.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@learnboost.com"
+  },
+  "bugs": {
+    "url": "https://github.com/visionmedia/node-cookie-signature/issues"
+  },
+  "dependencies": {},
   "description": "Sign and unsign cookies",
-  "keywords": ["cookie", "sign", "unsign"],
-  "author": "TJ Holowaychuk <tj@learnboost.com>",
-  "license": "MIT",
-  "repository": { "type": "git", "url": "https://github.com/visionmedia/node-cookie-signature.git"},
-  "dependencies": {},
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "homepage": "https://github.com/visionmedia/node-cookie-signature#readme",
+  "keywords": [
+    "cookie",
+    "sign",
+    "unsign"
+  ],
+  "license": "MIT",
+  "main": "index",
+  "name": "cookie-signature",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/visionmedia/node-cookie-signature.git"
+  },
   "scripts": {
     "test": "mocha --require should --reporter spec"
   },
-  "main": "index"
+  "version": "1.0.6"
 }
Index: trip-planner-front/node_modules/cookie/package.json
===================================================================
--- trip-planner-front/node_modules/cookie/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cookie/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,46 @@
 {
-  "name": "cookie",
+  "_args": [
+    [
+      "cookie@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cookie@0.4.1",
+  "_id": "cookie@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+  "_location": "/cookie",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cookie@0.4.1",
+    "name": "cookie",
+    "escapedName": "cookie",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
+  },
+  "_requiredBy": [
+    "/engine.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Roman Shtylman",
+    "email": "shtylman@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/cookie/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
   "description": "HTTP server cookie parsing and serialization",
-  "version": "0.4.1",
-  "author": "Roman Shtylman <shtylman@gmail.com>",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "cookie",
-    "cookies"
-  ],
-  "repository": "jshttp/cookie",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -21,4 +51,7 @@
     "nyc": "15.0.1"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "HISTORY.md",
@@ -27,6 +60,14 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/cookie#readme",
+  "keywords": [
+    "cookie",
+    "cookies"
+  ],
+  "license": "MIT",
+  "name": "cookie",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/cookie.git"
   },
   "scripts": {
@@ -37,4 +78,5 @@
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/copy-anything/package.json
===================================================================
--- trip-planner-front/node_modules/copy-anything/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-anything/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,51 @@
 {
-  "name": "copy-anything",
-  "sideEffects": false,
-  "version": "2.0.3",
-  "description": "An optimised way to copy'ing an object. A small and simple integration",
-  "main": "dist/index.cjs.js",
-  "module": "dist/index.esm.js",
-  "typings": "types/index.d.ts",
-  "scripts": {
-    "test": "ava",
-    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
-    "rollup": "rollup -c build/rollup.js",
-    "build": "npm run lint && npm run test && npm run rollup"
+  "_args": [
+    [
+      "copy-anything@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "copy-anything@2.0.3",
+  "_id": "copy-anything@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==",
+  "_location": "/copy-anything",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "copy-anything@2.0.3",
+    "name": "copy-anything",
+    "escapedName": "copy-anything",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Luca Ban - Mesqueeb"
+  },
+  "ava": {
+    "extensions": [
+      "ts"
+    ],
+    "require": [
+      "tsconfig-paths/register",
+      "ts-node/register"
+    ]
+  },
+  "bugs": {
+    "url": "https://github.com/mesqueeb/copy-anything/issues"
   },
   "dependencies": {
     "is-what": "^3.12.0"
   },
+  "description": "An optimised way to copy'ing an object. A small and simple integration",
   "devDependencies": {
     "@typescript-eslint/eslint-plugin": "^4.14.2",
@@ -29,4 +61,5 @@
     "typescript": "^4.1.3"
   },
+  "homepage": "https://github.com/mesqueeb/copy-anything#readme",
   "keywords": [
     "copy",
@@ -43,22 +76,20 @@
     "ts"
   ],
-  "author": "Luca Ban - Mesqueeb",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mesqueeb/copy-anything/issues"
-  },
-  "homepage": "https://github.com/mesqueeb/copy-anything#readme",
+  "main": "dist/index.cjs.js",
+  "module": "dist/index.esm.js",
+  "name": "copy-anything",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/mesqueeb/copy-anything.git"
   },
-  "ava": {
-    "extensions": [
-      "ts"
-    ],
-    "require": [
-      "tsconfig-paths/register",
-      "ts-node/register"
-    ]
-  }
+  "scripts": {
+    "build": "npm run lint && npm run test && npm run rollup",
+    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
+    "rollup": "rollup -c build/rollup.js",
+    "test": "ava"
+  },
+  "sideEffects": false,
+  "typings": "types/index.d.ts",
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/copy-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/copy-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,65 @@
 {
-  "name": "copy-descriptor",
-  "description": "Copy a descriptor from object A to object B",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/copy-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/copy-descriptor",
+  "_args": [
+    [
+      "copy-descriptor@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "copy-descriptor@0.1.1",
+  "_id": "copy-descriptor@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+  "_location": "/copy-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "copy-descriptor@0.1.1",
+    "name": "copy-descriptor",
+    "escapedName": "copy-descriptor",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/object-copy"
+  ],
+  "_resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/copy-descriptor/issues"
   },
-  "license": "MIT",
+  "description": "Copy a descriptor from object A to object B",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.9",
+    "mocha": "^2.5.3"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/jonschlinkert/copy-descriptor",
+  "keywords": [
+    "copy",
+    "descriptor"
+  ],
+  "license": "MIT",
   "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "name": "copy-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/copy-descriptor.git"
   },
   "scripts": {
     "test": "mocha"
   },
-  "devDependencies": {
-    "gulp-format-md": "^0.1.9",
-    "mocha": "^2.5.3"
-  },
-  "keywords": [
-    "copy",
-    "descriptor"
-  ],
   "verb": {
     "toc": false,
@@ -53,4 +87,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv-keywords/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv-keywords/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv-keywords/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,39 @@
 {
-  "name": "ajv-keywords",
-  "version": "3.5.2",
-  "description": "Custom JSON-Schema keywords for Ajv validator",
-  "main": "index.js",
-  "typings": "ajv-keywords.d.ts",
-  "scripts": {
-    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
-    "prepublish": "npm run build",
-    "test": "npm run build && npm run eslint && npm run test-cov",
-    "eslint": "eslint index.js keywords/*.js spec",
-    "test-spec": "mocha spec/*.spec.js -R spec",
-    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec"
+  "_args": [
+    [
+      "ajv-keywords@3.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ajv-keywords@3.5.2",
+  "_id": "ajv-keywords@3.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+  "_location": "/copy-webpack-plugin/ajv-keywords",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv-keywords@3.5.2",
+    "name": "ajv-keywords",
+    "escapedName": "ajv-keywords",
+    "rawSpec": "3.5.2",
+    "saveSpec": null,
+    "fetchSpec": "3.5.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  "_requiredBy": [
+    "/copy-webpack-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+  "_spec": "3.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "ajv",
-    "keywords"
-  ],
-  "files": [
-    "index.js",
-    "ajv-keywords.d.ts",
-    "keywords"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/ajv-keywords/issues"
   },
-  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
-  "peerDependencies": {
-    "ajv": "^6.9.1"
-  },
+  "description": "Custom JSON-Schema keywords for Ajv validator",
   "devDependencies": {
     "ajv": "^6.9.1",
@@ -50,4 +50,35 @@
     "pre-commit": "^1.1.3",
     "uuid": "^8.1.0"
-  }
+  },
+  "files": [
+    "index.js",
+    "ajv-keywords.d.ts",
+    "keywords"
+  ],
+  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
+  "keywords": [
+    "JSON-Schema",
+    "ajv",
+    "keywords"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ajv-keywords",
+  "peerDependencies": {
+    "ajv": "^6.9.1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  },
+  "scripts": {
+    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
+    "eslint": "eslint index.js keywords/*.js spec",
+    "prepublish": "npm run build",
+    "test": "npm run build && npm run eslint && npm run test-cov",
+    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec",
+    "test-spec": "mocha spec/*.spec.js -R spec"
+  },
+  "typings": "ajv-keywords.d.ts",
+  "version": "3.5.2"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/node_modules/ajv/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,42 @@
 {
-  "name": "ajv",
-  "version": "6.12.6",
-  "description": "Another JSON Schema Validator",
-  "main": "lib/ajv.js",
-  "typings": "lib/ajv.d.ts",
-  "files": [
-    "lib/",
-    "dist/",
-    "scripts/",
-    "LICENSE",
-    ".tonic_example.js"
+  "_args": [
+    [
+      "ajv@6.12.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
-    "jshint": "jshint lib/{compile/,}*.js",
-    "lint": "npm run jshint && npm run eslint",
-    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
-    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
-    "test-debug": "npm run test-spec -- --inspect-brk",
-    "test-cov": "nyc npm run test-spec",
-    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
-    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
-    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
-    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
-    "test-karma": "karma start",
-    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
-    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
-    "test": "npm run lint && npm run build && npm run test-all",
-    "prepublish": "npm run build && npm run bundle",
-    "watch": "watch \"npm run build\" ./lib/dot"
+  "_development": true,
+  "_from": "ajv@6.12.6",
+  "_id": "ajv@6.12.6",
+  "_inBundle": false,
+  "_integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+  "_location": "/copy-webpack-plugin/ajv",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv@6.12.6",
+    "name": "ajv",
+    "escapedName": "ajv",
+    "rawSpec": "6.12.6",
+    "saveSpec": null,
+    "fetchSpec": "6.12.6"
   },
-  "nyc": {
-    "exclude": [
-      "**/spec/**",
-      "node_modules"
-    ],
-    "reporter": [
-      "lcov",
-      "text-summary"
-    ]
+  "_requiredBy": [
+    "/copy-webpack-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+  "_spec": "6.12.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ajv-validator/ajv.git"
-  },
-  "keywords": [
-    "JSON",
-    "schema",
-    "validator",
-    "validation",
-    "jsonschema",
-    "json-schema",
-    "json-schema-validator",
-    "json-schema-validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/ajv-validator/ajv/issues"
   },
-  "homepage": "https://github.com/ajv-validator/ajv",
-  "tonicExampleFilename": ".tonic_example.js",
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ajv"
+  },
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
@@ -68,4 +45,5 @@
     "uri-js": "^4.2.2"
   },
+  "description": "Another JSON Schema Validator",
   "devDependencies": {
     "ajv-async": "^1.0.0",
@@ -96,11 +74,64 @@
     "watch": "^1.0.0"
   },
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ajv"
-  },
+  "files": [
+    "lib/",
+    "dist/",
+    "scripts/",
+    "LICENSE",
+    ".tonic_example.js"
+  ],
   "funding": {
     "type": "github",
     "url": "https://github.com/sponsors/epoberezkin"
-  }
+  },
+  "homepage": "https://github.com/ajv-validator/ajv",
+  "keywords": [
+    "JSON",
+    "schema",
+    "validator",
+    "validation",
+    "jsonschema",
+    "json-schema",
+    "json-schema-validator",
+    "json-schema-validation"
+  ],
+  "license": "MIT",
+  "main": "lib/ajv.js",
+  "name": "ajv",
+  "nyc": {
+    "exclude": [
+      "**/spec/**",
+      "node_modules"
+    ],
+    "reporter": [
+      "lcov",
+      "text-summary"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv.git"
+  },
+  "scripts": {
+    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
+    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
+    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
+    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
+    "jshint": "jshint lib/{compile/,}*.js",
+    "lint": "npm run jshint && npm run eslint",
+    "prepublish": "npm run build && npm run bundle",
+    "test": "npm run lint && npm run build && npm run test-all",
+    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
+    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
+    "test-cov": "nyc npm run test-spec",
+    "test-debug": "npm run test-spec -- --inspect-brk",
+    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
+    "test-karma": "karma start",
+    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
+    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
+    "watch": "watch \"npm run build\" ./lib/dot"
+  },
+  "tonicExampleFilename": ".tonic_example.js",
+  "typings": "lib/ajv.d.ts",
+  "version": "6.12.6"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/node_modules/glob-parent/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/node_modules/glob-parent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/node_modules/glob-parent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,54 @@
 {
-  "name": "glob-parent",
-  "version": "6.0.2",
-  "description": "Extract the non-magic parent path from a glob string.",
-  "author": "Gulp Team <team@gulpjs.com> (https://gulpjs.com/)",
+  "_args": [
+    [
+      "glob-parent@6.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "glob-parent@6.0.2",
+  "_id": "glob-parent@6.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+  "_location": "/copy-webpack-plugin/glob-parent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "glob-parent@6.0.2",
+    "name": "glob-parent",
+    "escapedName": "glob-parent",
+    "rawSpec": "6.0.2",
+    "saveSpec": null,
+    "fetchSpec": "6.0.2"
+  },
+  "_requiredBy": [
+    "/copy-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+  "_spec": "6.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Gulp Team",
+    "email": "team@gulpjs.com",
+    "url": "https://gulpjs.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/gulpjs/glob-parent/issues"
+  },
   "contributors": [
-    "Elan Shanker (https://github.com/es128)",
-    "Blaine Bublitz <blaine.bublitz@gmail.com>"
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com"
+    }
   ],
-  "repository": "gulpjs/glob-parent",
-  "license": "ISC",
-  "engines": {
-    "node": ">=10.13.0"
-  },
-  "main": "index.js",
-  "files": [
-    "LICENSE",
-    "index.js"
-  ],
-  "scripts": {
-    "lint": "eslint .",
-    "pretest": "npm run lint",
-    "test": "nyc mocha --async-only"
-  },
   "dependencies": {
     "is-glob": "^4.0.3"
   },
+  "description": "Extract the non-magic parent path from a glob string.",
   "devDependencies": {
     "eslint": "^7.0.0",
@@ -33,4 +58,25 @@
     "nyc": "^15.0.1"
   },
+  "engines": {
+    "node": ">=10.13.0"
+  },
+  "files": [
+    "LICENSE",
+    "index.js"
+  ],
+  "homepage": "https://github.com/gulpjs/glob-parent#readme",
+  "keywords": [
+    "glob",
+    "parent",
+    "strip",
+    "path",
+    "dirname",
+    "directory",
+    "base",
+    "wildcard"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "glob-parent",
   "nyc": {
     "reporter": [
@@ -42,13 +88,13 @@
     "singleQuote": true
   },
-  "keywords": [
-    "glob",
-    "parent",
-    "strip",
-    "path",
-    "dirname",
-    "directory",
-    "base",
-    "wildcard"
-  ]
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gulpjs/glob-parent.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "pretest": "npm run lint",
+    "test": "nyc mocha --async-only"
+  },
+  "version": "6.0.2"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/node_modules/json-schema-traverse/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/node_modules/json-schema-traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/node_modules/json-schema-traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,39 @@
 {
-  "name": "json-schema-traverse",
-  "version": "0.4.1",
-  "description": "Traverse JSON Schema passing each schema object to callback",
-  "main": "index.js",
-  "scripts": {
-    "eslint": "eslint index.js spec",
-    "test-spec": "mocha spec -R spec",
-    "test": "npm run eslint && nyc npm run test-spec"
+  "_args": [
+    [
+      "json-schema-traverse@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema-traverse@0.4.1",
+  "_id": "json-schema-traverse@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+  "_location": "/copy-webpack-plugin/json-schema-traverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema-traverse@0.4.1",
+    "name": "json-schema-traverse",
+    "escapedName": "json-schema-traverse",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  "_requiredBy": [
+    "/copy-webpack-plugin/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "traverse",
-    "iterate"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
   },
-  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "description": "Traverse JSON Schema passing each schema object to callback",
   "devDependencies": {
     "coveralls": "^2.13.1",
@@ -31,4 +43,13 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "keywords": [
+    "JSON-Schema",
+    "traverse",
+    "iterate"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-schema-traverse",
   "nyc": {
     "exclude": [
@@ -40,4 +61,14 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js spec",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "mocha spec -R spec"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/node_modules/schema-utils/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/node_modules/schema-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/node_modules/schema-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,39 @@
 {
-  "name": "schema-utils",
-  "version": "3.1.1",
-  "description": "webpack Validation Utils",
-  "license": "MIT",
-  "repository": "webpack/schema-utils",
-  "author": "webpack Contrib (https://github.com/webpack-contrib)",
-  "homepage": "https://github.com/webpack/schema-utils",
-  "bugs": "https://github.com/webpack/schema-utils/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "schema-utils@3.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "schema-utils@3.1.1",
+  "_id": "schema-utils@3.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+  "_location": "/copy-webpack-plugin/schema-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "schema-utils@3.1.1",
+    "name": "schema-utils",
+    "escapedName": "schema-utils",
+    "rawSpec": "3.1.1",
+    "saveSpec": null,
+    "fetchSpec": "3.1.1"
   },
-  "main": "dist/index.js",
-  "types": "declarations/index.d.ts",
-  "engines": {
-    "node": ">= 10.13.0"
+  "_requiredBy": [
+    "/copy-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+  "_spec": "3.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "webpack Contrib",
+    "url": "https://github.com/webpack-contrib"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist declarations",
-    "prebuild": "npm run clean",
-    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
-    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "build": "npm-run-all -p \"build:**\"",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint:types": "tsc --pretty --noEmit",
-    "lint": "npm-run-all lint:js lint:types fmt:check",
-    "fmt": "npm run fmt:check -- --write",
-    "fix:js": "npm run lint:js -- --fix",
-    "fix": "npm-run-all fix:js fmt",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "npm run build && husky install",
-    "release": "standard-version"
+  "bugs": {
+    "url": "https://github.com/webpack/schema-utils/issues"
   },
-  "files": [
-    "dist",
-    "declarations"
-  ],
   "dependencies": {
     "@types/json-schema": "^7.0.8",
@@ -50,4 +41,5 @@
     "ajv-keywords": "^3.5.2"
   },
+  "description": "webpack Validation Utils",
   "devDependencies": {
     "@babel/cli": "^7.14.3",
@@ -73,6 +65,51 @@
     "webpack": "^5.45.1"
   },
+  "engines": {
+    "node": ">= 10.13.0"
+  },
+  "files": [
+    "dist",
+    "declarations"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack/schema-utils",
   "keywords": [
     "webpack"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "schema-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/schema-utils.git"
+  },
+  "scripts": {
+    "build": "npm-run-all -p \"build:**\"",
+    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
+    "clean": "del-cli dist declarations",
+    "commitlint": "commitlint --from=master",
+    "fix": "npm-run-all fix:js fmt",
+    "fix:js": "npm run lint:js -- --fix",
+    "fmt": "npm run fmt:check -- --write",
+    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "lint": "npm-run-all lint:js lint:types fmt:check",
+    "lint:js": "eslint --cache .",
+    "lint:types": "tsc --pretty --noEmit",
+    "prebuild": "npm run clean",
+    "prepare": "npm run build && husky install",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "types": "declarations/index.d.ts",
+  "version": "3.1.1"
 }
Index: trip-planner-front/node_modules/copy-webpack-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/copy-webpack-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/copy-webpack-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,43 @@
 {
-  "name": "copy-webpack-plugin",
-  "version": "9.0.1",
-  "description": "Copy files && directories with webpack",
-  "license": "MIT",
-  "repository": "webpack-contrib/copy-webpack-plugin",
-  "author": "Len Boyette",
-  "homepage": "https://github.com/webpack-contrib/copy-webpack-plugin",
-  "bugs": "https://github.com/webpack-contrib/copy-webpack-plugin/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "copy-webpack-plugin@9.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "copy-webpack-plugin@9.0.1",
+  "_id": "copy-webpack-plugin@9.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==",
+  "_location": "/copy-webpack-plugin",
+  "_phantomChildren": {
+    "@types/json-schema": "7.0.9",
+    "fast-deep-equal": "3.1.3",
+    "fast-json-stable-stringify": "2.1.0",
+    "is-glob": "4.0.3",
+    "uri-js": "4.4.1"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "copy-webpack-plugin@9.0.1",
+    "name": "copy-webpack-plugin",
+    "escapedName": "copy-webpack-plugin",
+    "rawSpec": "9.0.1",
+    "saveSpec": null,
+    "fetchSpec": "9.0.1"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "lint:prettier": "prettier --list-different .",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz",
+  "_spec": "9.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Len Boyette"
   },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "webpack": "^5.1.0"
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/copy-webpack-plugin/issues"
   },
   "dependencies": {
@@ -49,4 +50,5 @@
     "serialize-javascript": "^6.0.0"
   },
+  "description": "Copy files && directories with webpack",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -75,4 +77,15 @@
     "webpack": "^5.40.0"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/copy-webpack-plugin",
   "keywords": [
     "webpack",
@@ -81,4 +94,33 @@
     "move",
     "copy"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "copy-webpack-plugin",
+  "peerDependencies": {
+    "webpack": "^5.1.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/copy-webpack-plugin.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier --list-different .",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "version": "9.0.1"
 }
Index: trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js-compat/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/core-js-compat/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/core-js-compat/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js-compat/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,41 @@
 {
-  "name": "semver",
-  "version": "7.0.0",
+  "_args": [
+    [
+      "semver@7.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@7.0.0",
+  "_id": "semver@7.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+  "_location": "/core-js-compat/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@7.0.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "7.0.0",
+    "saveSpec": null,
+    "fetchSpec": "7.0.0"
+  },
+  "_requiredBy": [
+    "/core-js-compat"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+  "_spec": "7.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "index.js",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.10.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -28,7 +48,23 @@
     "index.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true,
     "coverage-map": "map.js"
-  }
+  },
+  "version": "7.0.0"
 }
Index: trip-planner-front/node_modules/core-js-compat/package.json
===================================================================
--- trip-planner-front/node_modules/core-js-compat/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js-compat/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,55 @@
 {
-  "name": "core-js-compat",
-  "description": "core-js compat",
-  "version": "3.18.2",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/zloirock/core-js.git",
-    "directory": "packages/core-js-compat"
+  "_args": [
+    [
+      "core-js-compat@3.18.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "core-js-compat@3.18.2",
+  "_id": "core-js-compat@3.18.2",
+  "_inBundle": false,
+  "_integrity": "sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==",
+  "_location": "/core-js-compat",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "core-js-compat@3.18.2",
+    "name": "core-js-compat",
+    "escapedName": "core-js-compat",
+    "rawSpec": "3.18.2",
+    "saveSpec": null,
+    "fetchSpec": "3.18.2"
   },
-  "main": "index.js",
+  "_requiredBy": [
+    "/@babel/preset-env",
+    "/babel-plugin-polyfill-corejs3"
+  ],
+  "_resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.2.tgz",
+  "_spec": "3.18.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zloirock/core-js/issues"
+  },
   "dependencies": {
     "browserslist": "^4.17.3",
     "semver": "7.0.0"
   },
+  "description": "core-js compat",
   "funding": {
     "type": "opencollective",
     "url": "https://opencollective.com/core-js"
   },
+  "gitHead": "ac4a27025eb557d7c7a94b928236fbcb6f21ba0e",
+  "homepage": "https://github.com/zloirock/core-js#readme",
   "license": "MIT",
-  "gitHead": "ac4a27025eb557d7c7a94b928236fbcb6f21ba0e"
+  "main": "index.js",
+  "name": "core-js-compat",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zloirock/core-js.git",
+    "directory": "packages/core-js-compat"
+  },
+  "version": "3.18.2"
 }
Index: trip-planner-front/node_modules/core-js/package.json
===================================================================
--- trip-planner-front/node_modules/core-js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,42 @@
 {
-  "name": "core-js",
+  "_args": [
+    [
+      "core-js@3.16.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "core-js@3.16.0",
+  "_id": "core-js@3.16.0",
+  "_inBundle": false,
+  "_integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==",
+  "_location": "/core-js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "core-js@3.16.0",
+    "name": "core-js",
+    "escapedName": "core-js",
+    "rawSpec": "3.16.0",
+    "saveSpec": null,
+    "fetchSpec": "3.16.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz",
+  "_spec": "3.16.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zloirock/core-js/issues"
+  },
   "description": "Standard library",
-  "version": "3.16.0",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/zloirock/core-js.git"
-  },
-  "main": "index.js",
   "funding": {
     "type": "opencollective",
     "url": "https://opencollective.com/core-js"
   },
-  "license": "MIT",
+  "gitHead": "89686ea7429ad46a05040269be44395e3760837d",
+  "homepage": "https://github.com/zloirock/core-js#readme",
   "keywords": [
     "ES3",
@@ -52,7 +78,14 @@
     "shim"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "core-js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zloirock/core-js.git"
+  },
   "scripts": {
     "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\""
   },
-  "gitHead": "89686ea7429ad46a05040269be44395e3760837d"
+  "version": "3.16.0"
 }
Index: trip-planner-front/node_modules/core-util-is/package.json
===================================================================
--- trip-planner-front/node_modules/core-util-is/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/core-util-is/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,49 @@
 {
-  "name": "core-util-is",
-  "version": "1.0.2",
+  "_args": [
+    [
+      "core-util-is@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "core-util-is@1.0.2",
+  "_id": "core-util-is@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+  "_location": "/core-util-is",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "core-util-is@1.0.2",
+    "name": "core-util-is",
+    "escapedName": "core-util-is",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet/readable-stream",
+    "/hpack.js/readable-stream",
+    "/memory-fs/readable-stream",
+    "/verror",
+    "/webpack-dev-server/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/core-util-is/issues"
+  },
   "description": "The `util.is*` functions introduced in Node v0.12.",
-  "main": "lib/util.js",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/core-util-is"
+  "devDependencies": {
+    "tap": "^2.3.0"
   },
+  "homepage": "https://github.com/isaacs/core-util-is#readme",
   "keywords": [
     "util",
@@ -19,14 +57,14 @@
     "polyfill"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/isaacs/core-util-is/issues"
+  "main": "lib/util.js",
+  "name": "core-util-is",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/core-util-is.git"
   },
   "scripts": {
     "test": "tap test.js"
   },
-  "devDependencies": {
-    "tap": "^2.3.0"
-  }
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/cors/package.json
===================================================================
--- trip-planner-front/node_modules/cors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,45 @@
 {
-  "name": "cors",
-  "description": "Node.js CORS middleware",
-  "version": "2.8.5",
-  "author": "Troy Goode <troygoode@gmail.com> (https://github.com/troygoode/)",
-  "license": "MIT",
-  "keywords": [
-    "cors",
-    "express",
-    "connect",
-    "middleware"
+  "_args": [
+    [
+      "cors@2.8.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "expressjs/cors",
-  "main": "./lib/index.js",
+  "_development": true,
+  "_from": "cors@2.8.5",
+  "_id": "cors@2.8.5",
+  "_inBundle": false,
+  "_integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+  "_location": "/cors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cors@2.8.5",
+    "name": "cors",
+    "escapedName": "cors",
+    "rawSpec": "2.8.5",
+    "saveSpec": null,
+    "fetchSpec": "2.8.5"
+  },
+  "_requiredBy": [
+    "/engine.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+  "_spec": "2.8.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Troy Goode",
+    "email": "troygoode@gmail.com",
+    "url": "https://github.com/troygoode/"
+  },
+  "bugs": {
+    "url": "https://github.com/expressjs/cors/issues"
+  },
   "dependencies": {
     "object-assign": "^4",
     "vary": "^1"
   },
+  "description": "Node.js CORS middleware",
   "devDependencies": {
     "after": "0.8.2",
@@ -25,4 +50,7 @@
     "supertest": "3.3.0"
   },
+  "engines": {
+    "node": ">= 0.10"
+  },
   "files": [
     "lib/index.js",
@@ -32,10 +60,22 @@
     "README.md"
   ],
-  "engines": {
-    "node": ">= 0.10"
+  "homepage": "https://github.com/expressjs/cors#readme",
+  "keywords": [
+    "cors",
+    "express",
+    "connect",
+    "middleware"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "cors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/expressjs/cors.git"
   },
   "scripts": {
-    "test": "npm run lint && nyc --reporter=html --reporter=text mocha --require test/support/env",
-    "lint": "eslint lib test"
-  }
+    "lint": "eslint lib test",
+    "test": "npm run lint && nyc --reporter=html --reporter=text mocha --require test/support/env"
+  },
+  "version": "2.8.5"
 }
Index: trip-planner-front/node_modules/cosmiconfig/package.json
===================================================================
--- trip-planner-front/node_modules/cosmiconfig/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cosmiconfig/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,95 +1,35 @@
 {
-  "name": "cosmiconfig",
-  "version": "7.0.1",
-  "description": "Find and load configuration from a package.json property, rc file, or CommonJS module",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "files": [
-    "dist"
+  "_args": [
+    [
+      "cosmiconfig@7.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "clean": "del-cli --dot=true \"./dist/**/*\"",
-    "build": "npm run clean && npm run build:compile && npm run build:types",
-    "build:compile": "cross-env NODE_ENV=production babel src -d dist --verbose --extensions .js,.ts --ignore \"**/**/*.test.js\",\"**/**/*.test.ts\" --source-maps",
-    "build:types": "cross-env NODE_ENV=production tsc --project tsconfig.types.json",
-    "dev": "npm run clean && npm run build:compile -- --watch",
-    "lint": "eslint --ext .js,.ts . && npm run lint:md",
-    "lint:fix": "eslint --ext .js,.ts . --fix",
-    "lint:md": "remark-preset-davidtheclark",
-    "format": "prettier \"**/*.{js,ts,json,yml,yaml}\" --write",
-    "format:md": "remark-preset-davidtheclark --format",
-    "format:check": "prettier \"**/*.{js,ts,json,yml,yaml}\" --check",
-    "typescript": "tsc",
-    "test": "jest --coverage",
-    "test:watch": "jest --watch",
-    "check:all": "npm run test && npm run typescript && npm run lint && npm run format:check",
-    "prepublishOnly": "npm run check:all && npm run build"
+  "_development": true,
+  "_from": "cosmiconfig@7.0.1",
+  "_id": "cosmiconfig@7.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
+  "_location": "/cosmiconfig",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cosmiconfig@7.0.1",
+    "name": "cosmiconfig",
+    "escapedName": "cosmiconfig",
+    "rawSpec": "7.0.1",
+    "saveSpec": null,
+    "fetchSpec": "7.0.1"
   },
-  "husky": {
-    "hooks": {
-      "pre-commit": "lint-staged && npm run typescript && npm run test",
-      "pre-push": "npm run check:all"
-    }
-  },
-  "lint-staged": {
-    "*.{js,ts}": [
-      "eslint --fix",
-      "prettier --write"
-    ],
-    "*.{json,yml,yaml}": [
-      "prettier --write"
-    ],
-    "*.md": [
-      "remark-preset-davidtheclark",
-      "remark-preset-davidtheclark --format"
-    ]
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/davidtheclark/cosmiconfig.git"
-  },
-  "keywords": [
-    "load",
-    "configuration",
-    "config"
+  "_requiredBy": [
+    "/postcss-loader"
   ],
-  "author": "David Clark <david.dave.clark@gmail.com>",
-  "contributors": [
-    "Bogdan Chadkin <trysound@yandex.ru>",
-    "Suhas Karanth <sudo.suhas@gmail.com>"
-  ],
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/davidtheclark/cosmiconfig/issues"
-  },
-  "homepage": "https://github.com/davidtheclark/cosmiconfig#readme",
-  "prettier": {
-    "trailingComma": "all",
-    "arrowParens": "always",
-    "singleQuote": true,
-    "printWidth": 80,
-    "tabWidth": 2
-  },
-  "jest": {
-    "testEnvironment": "node",
-    "collectCoverageFrom": [
-      "src/**/*.{js,ts}"
-    ],
-    "coverageReporters": [
-      "text",
-      "html",
-      "lcov"
-    ],
-    "coverageThreshold": {
-      "global": {
-        "branches": 100,
-        "functions": 100,
-        "lines": 100,
-        "statements": 100
-      }
-    },
-    "resetModules": true,
-    "resetMocks": true,
-    "restoreMocks": true
+  "_resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+  "_spec": "7.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "David Clark",
+    "email": "david.dave.clark@gmail.com"
   },
   "babel": {
@@ -106,4 +46,17 @@
     ]
   },
+  "bugs": {
+    "url": "https://github.com/davidtheclark/cosmiconfig/issues"
+  },
+  "contributors": [
+    {
+      "name": "Bogdan Chadkin",
+      "email": "trysound@yandex.ru"
+    },
+    {
+      "name": "Suhas Karanth",
+      "email": "sudo.suhas@gmail.com"
+    }
+  ],
   "dependencies": {
     "@types/parse-json": "^4.0.0",
@@ -113,4 +66,5 @@
     "yaml": "^1.10.0"
   },
+  "description": "Find and load configuration from a package.json property, rc file, or CommonJS module",
   "devDependencies": {
     "@babel/cli": "^7.10.4",
@@ -142,4 +96,88 @@
   "engines": {
     "node": ">=10"
-  }
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/davidtheclark/cosmiconfig#readme",
+  "husky": {
+    "hooks": {
+      "pre-commit": "lint-staged && npm run typescript && npm run test",
+      "pre-push": "npm run check:all"
+    }
+  },
+  "jest": {
+    "testEnvironment": "node",
+    "collectCoverageFrom": [
+      "src/**/*.{js,ts}"
+    ],
+    "coverageReporters": [
+      "text",
+      "html",
+      "lcov"
+    ],
+    "coverageThreshold": {
+      "global": {
+        "branches": 100,
+        "functions": 100,
+        "lines": 100,
+        "statements": 100
+      }
+    },
+    "resetModules": true,
+    "resetMocks": true,
+    "restoreMocks": true
+  },
+  "keywords": [
+    "load",
+    "configuration",
+    "config"
+  ],
+  "license": "MIT",
+  "lint-staged": {
+    "*.{js,ts}": [
+      "eslint --fix",
+      "prettier --write"
+    ],
+    "*.{json,yml,yaml}": [
+      "prettier --write"
+    ],
+    "*.md": [
+      "remark-preset-davidtheclark",
+      "remark-preset-davidtheclark --format"
+    ]
+  },
+  "main": "dist/index.js",
+  "name": "cosmiconfig",
+  "prettier": {
+    "trailingComma": "all",
+    "arrowParens": "always",
+    "singleQuote": true,
+    "printWidth": 80,
+    "tabWidth": 2
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/davidtheclark/cosmiconfig.git"
+  },
+  "scripts": {
+    "build": "npm run clean && npm run build:compile && npm run build:types",
+    "build:compile": "cross-env NODE_ENV=production babel src -d dist --verbose --extensions .js,.ts --ignore \"**/**/*.test.js\",\"**/**/*.test.ts\" --source-maps",
+    "build:types": "cross-env NODE_ENV=production tsc --project tsconfig.types.json",
+    "check:all": "npm run test && npm run typescript && npm run lint && npm run format:check",
+    "clean": "del-cli --dot=true \"./dist/**/*\"",
+    "dev": "npm run clean && npm run build:compile -- --watch",
+    "format": "prettier \"**/*.{js,ts,json,yml,yaml}\" --write",
+    "format:check": "prettier \"**/*.{js,ts,json,yml,yaml}\" --check",
+    "format:md": "remark-preset-davidtheclark --format",
+    "lint": "eslint --ext .js,.ts . && npm run lint:md",
+    "lint:fix": "eslint --ext .js,.ts . --fix",
+    "lint:md": "remark-preset-davidtheclark",
+    "prepublishOnly": "npm run check:all && npm run build",
+    "test": "jest --coverage",
+    "test:watch": "jest --watch",
+    "typescript": "tsc"
+  },
+  "types": "dist/index.d.ts",
+  "version": "7.0.1"
 }
Index: trip-planner-front/node_modules/critters/node_modules/ansi-styles/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/ansi-styles/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/ansi-styles/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "ansi-styles",
-	"version": "4.3.0",
-	"description": "ANSI escape codes for styling strings in the terminal",
-	"license": "MIT",
-	"repository": "chalk/ansi-styles",
-	"funding": "https://github.com/chalk/ansi-styles?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"color-convert": "^2.0.1"
-	},
-	"devDependencies": {
-		"@types/color-convert": "^1.9.0",
-		"ava": "^2.3.0",
-		"svg-term-cli": "^2.1.1",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-styles@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-styles@4.3.0",
+  "_id": "ansi-styles@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+  "_location": "/critters/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-styles@4.3.0",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/critters/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {
+    "color-convert": "^2.0.1"
+  },
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "@types/color-convert": "^1.9.0",
+    "ava": "^2.3.0",
+    "svg-term-cli": "^2.1.1",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/critters/node_modules/chalk/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/chalk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/chalk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,68 +1,104 @@
 {
-	"name": "chalk",
-	"version": "4.1.2",
-	"description": "Terminal string styling done right",
-	"license": "MIT",
-	"repository": "chalk/chalk",
-	"funding": "https://github.com/chalk/chalk?sponsor=1",
-	"main": "source",
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd",
-		"bench": "matcha benchmark.js"
-	},
-	"files": [
-		"source",
-		"index.d.ts"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"str",
-		"ansi",
-		"style",
-		"styles",
-		"tty",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"ansi-styles": "^4.1.0",
-		"supports-color": "^7.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"coveralls": "^3.0.7",
-		"execa": "^4.0.0",
-		"import-fresh": "^3.1.0",
-		"matcha": "^0.7.0",
-		"nyc": "^15.0.0",
-		"resolve-from": "^5.0.0",
-		"tsd": "^0.7.4",
-		"xo": "^0.28.2"
-	},
-	"xo": {
-		"rules": {
-			"unicorn/prefer-string-slice": "off",
-			"unicorn/prefer-includes": "off",
-			"@typescript-eslint/member-ordering": "off",
-			"no-redeclare": "off",
-			"unicorn/string-content": "off",
-			"unicorn/better-regex": "off"
-		}
-	}
+  "_args": [
+    [
+      "chalk@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chalk@4.1.2",
+  "_id": "chalk@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+  "_location": "/critters/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chalk@4.1.2",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/critters"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "^4.1.0",
+    "supports-color": "^7.1.0"
+  },
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "coveralls": "^3.0.7",
+    "execa": "^4.0.0",
+    "import-fresh": "^3.1.0",
+    "matcha": "^0.7.0",
+    "nyc": "^15.0.0",
+    "resolve-from": "^5.0.0",
+    "tsd": "^0.7.4",
+    "xo": "^0.28.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "source",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/chalk?sponsor=1",
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "main": "source",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "4.1.2",
+  "xo": {
+    "rules": {
+      "unicorn/prefer-string-slice": "off",
+      "unicorn/prefer-includes": "off",
+      "@typescript-eslint/member-ordering": "off",
+      "no-redeclare": "off",
+      "unicorn/string-content": "off",
+      "unicorn/better-regex": "off"
+    }
+  }
 }
Index: trip-planner-front/node_modules/critters/node_modules/color-convert/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/color-convert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/color-convert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "color-convert",
+  "_args": [
+    [
+      "color-convert@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-convert@2.0.1",
+  "_id": "color-convert@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+  "_location": "/critters/color-convert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-convert@2.0.1",
+    "name": "color-convert",
+    "escapedName": "color-convert",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/critters/ansi-styles"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Heather Arthur",
+    "email": "fayearthur@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Qix-/color-convert/issues"
+  },
+  "dependencies": {
+    "color-name": "~1.1.4"
+  },
   "description": "Plain color conversion functions",
-  "version": "2.0.1",
-  "author": "Heather Arthur <fayearthur@gmail.com>",
-  "license": "MIT",
-  "repository": "Qix-/color-convert",
-  "scripts": {
-    "pretest": "xo",
-    "test": "node test/basic.js"
+  "devDependencies": {
+    "chalk": "^2.4.2",
+    "xo": "^0.24.0"
   },
   "engines": {
     "node": ">=7.0.0"
   },
+  "files": [
+    "index.js",
+    "conversions.js",
+    "route.js"
+  ],
+  "homepage": "https://github.com/Qix-/color-convert#readme",
   "keywords": [
     "color",
@@ -27,9 +67,15 @@
     "ansi16"
   ],
-  "files": [
-    "index.js",
-    "conversions.js",
-    "route.js"
-  ],
+  "license": "MIT",
+  "name": "color-convert",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Qix-/color-convert.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "test": "node test/basic.js"
+  },
+  "version": "2.0.1",
   "xo": {
     "rules": {
@@ -38,11 +84,4 @@
       "operator-linebreak": 0
     }
-  },
-  "devDependencies": {
-    "chalk": "^2.4.2",
-    "xo": "^0.24.0"
-  },
-  "dependencies": {
-    "color-name": "~1.1.4"
   }
 }
Index: trip-planner-front/node_modules/critters/node_modules/color-name/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/color-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/color-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "color-name",
-  "version": "1.1.4",
+  "_args": [
+    [
+      "color-name@1.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-name@1.1.4",
+  "_id": "color-name@1.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+  "_location": "/critters/color-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-name@1.1.4",
+    "name": "color-name",
+    "escapedName": "color-name",
+    "rawSpec": "1.1.4",
+    "saveSpec": null,
+    "fetchSpec": "1.1.4"
+  },
+  "_requiredBy": [
+    "/critters/color-convert"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+  "_spec": "1.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "DY",
+    "email": "dfcreative@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/colorjs/color-name/issues"
+  },
   "description": "A list of color names and its values",
-  "main": "index.js",
   "files": [
     "index.js"
   ],
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:colorjs/color-name.git"
-  },
+  "homepage": "https://github.com/colorjs/color-name",
   "keywords": [
     "color-name",
@@ -20,9 +47,14 @@
     "keyword"
   ],
-  "author": "DY <dfcreative@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/colorjs/color-name/issues"
+  "main": "index.js",
+  "name": "color-name",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/colorjs/color-name.git"
   },
-  "homepage": "https://github.com/colorjs/color-name"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.1.4"
 }
Index: trip-planner-front/node_modules/critters/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/critters/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/critters/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/critters/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/critters/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "supports-color",
-	"version": "7.2.0",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"import-fresh": "^3.0.0",
-		"xo": "^0.24.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@7.2.0",
+  "_id": "supports-color@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+  "_location": "/critters/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@7.2.0",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/critters/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "import-fresh": "^3.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/critters/package.json
===================================================================
--- trip-planner-front/node_modules/critters/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/critters/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,38 @@
 {
-  "name": "critters",
-  "version": "0.0.10",
-  "description": "Plugin to inline critical CSS and lazy-load the rest.",
-  "main": "dist/critters.js",
-  "source": "src/index.js",
-  "typings": "src/index.d.ts",
-  "license": "Apache-2.0",
-  "author": "The Chromium Authors",
+  "_args": [
+    [
+      "critters@0.0.10",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "critters@0.0.10",
+  "_id": "critters@0.0.10",
+  "_inBundle": false,
+  "_integrity": "sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw==",
+  "_location": "/critters",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "critters@0.0.10",
+    "name": "critters",
+    "escapedName": "critters",
+    "rawSpec": "0.0.10",
+    "saveSpec": null,
+    "fetchSpec": "0.0.10"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/critters/-/critters-0.0.10.tgz",
+  "_spec": "0.0.10",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "The Chromium Authors"
+  },
+  "bugs": {
+    "url": "https://github.com/GoogleChromeLabs/critters/issues"
+  },
   "contributors": [
     {
@@ -18,40 +45,12 @@
     }
   ],
-  "files": [
-    "src",
-    "dist"
-  ],
-  "keywords": [
-    "critical css",
-    "inline css",
-    "critical",
-    "critters",
-    "webpack plugin",
-    "performance"
-  ],
-  "repository": "GoogleChromeLabs/critters",
-  "scripts": {
-    "build": "npm run -s build:main && npm run -s build:webpack",
-    "build:main": "microbundle --target node",
-    "build:webpack": "cd packages/critters-webpack-plugin && npm run -s build",
-    "docs": "documentation readme -q --no-markdown-toc -a public -s Usage --sort-order alpha src",
-    "prepare": "npm run -s build",
-    "release": "npm run build -s && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish",
-    "test": "jest --coverage"
+  "dependencies": {
+    "chalk": "^4.1.0",
+    "css": "^3.0.0",
+    "parse5": "^6.0.1",
+    "parse5-htmlparser2-tree-adapter": "^6.0.1",
+    "pretty-bytes": "^5.3.0"
   },
-  "jest": {
-    "testEnvironment": "jsdom",
-    "testURL": "http://localhost",
-    "coverageReporters": [
-      "text"
-    ],
-    "collectCoverageFrom": [
-      "src/**/*.js"
-    ],
-    "watchPathIgnorePatterns": [
-      "node_modules",
-      "dist"
-    ]
-  },
+  "description": "Plugin to inline critical CSS and lazy-load the rest.",
   "devDependencies": {
     "@babel/preset-env": "^7.11.0",
@@ -76,10 +75,49 @@
     "webpack-log": "^3.0.2"
   },
-  "dependencies": {
-    "chalk": "^4.1.0",
-    "css": "^3.0.0",
-    "parse5": "^6.0.1",
-    "parse5-htmlparser2-tree-adapter": "^6.0.1",
-    "pretty-bytes": "^5.3.0"
-  }
+  "files": [
+    "src",
+    "dist"
+  ],
+  "homepage": "https://github.com/GoogleChromeLabs/critters#readme",
+  "jest": {
+    "testEnvironment": "jsdom",
+    "testURL": "http://localhost",
+    "coverageReporters": [
+      "text"
+    ],
+    "collectCoverageFrom": [
+      "src/**/*.js"
+    ],
+    "watchPathIgnorePatterns": [
+      "node_modules",
+      "dist"
+    ]
+  },
+  "keywords": [
+    "critical css",
+    "inline css",
+    "critical",
+    "critters",
+    "webpack plugin",
+    "performance"
+  ],
+  "license": "Apache-2.0",
+  "main": "dist/critters.js",
+  "name": "critters",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/GoogleChromeLabs/critters.git"
+  },
+  "scripts": {
+    "build": "npm run -s build:main && npm run -s build:webpack",
+    "build:main": "microbundle --target node",
+    "build:webpack": "cd packages/critters-webpack-plugin && npm run -s build",
+    "docs": "documentation readme -q --no-markdown-toc -a public -s Usage --sort-order alpha src",
+    "prepare": "npm run -s build",
+    "release": "npm run build -s && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish",
+    "test": "jest --coverage"
+  },
+  "source": "src/index.js",
+  "typings": "src/index.d.ts",
+  "version": "0.0.10"
 }
Index: trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver" "$@"
+  node  "$basedir/../semver/bin/semver" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cross-spawn/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/cross-spawn/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/cross-spawn/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cross-spawn/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "5.7.1",
+  "_args": [
+    [
+      "semver@5.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@5.7.1",
+  "_id": "semver@5.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+  "_location": "/cross-spawn/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@5.7.1",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "5.7.1",
+    "saveSpec": null,
+    "fetchSpec": "5.7.1"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+  "_spec": "5.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
-  },
   "devDependencies": {
     "tap": "^13.0.0-rc.18"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "5.7.1"
 }
Index: trip-planner-front/node_modules/cross-spawn/package.json
===================================================================
--- trip-planner-front/node_modules/cross-spawn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cross-spawn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,38 @@
 {
-  "name": "cross-spawn",
-  "version": "6.0.5",
-  "description": "Cross platform child_process#spawn and child_process#spawnSync",
-  "keywords": [
-    "spawn",
-    "spawnSync",
-    "windows",
-    "cross-platform",
-    "path-ext",
-    "shebang",
-    "cmd",
-    "execute"
+  "_args": [
+    [
+      "cross-spawn@6.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "André Cruz <andre@moxy.studio>",
-  "homepage": "https://github.com/moxystudio/node-cross-spawn",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:moxystudio/node-cross-spawn.git"
+  "_development": true,
+  "_from": "cross-spawn@6.0.5",
+  "_id": "cross-spawn@6.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+  "_location": "/cross-spawn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cross-spawn@6.0.5",
+    "name": "cross-spawn",
+    "escapedName": "cross-spawn",
+    "rawSpec": "6.0.5",
+    "saveSpec": null,
+    "fetchSpec": "6.0.5"
   },
-  "license": "MIT",
-  "main": "index.js",
-  "files": [
-    "lib"
+  "_requiredBy": [
+    "/execa"
   ],
-  "scripts": {
-    "lint": "eslint .",
-    "test": "jest --env node --coverage",
-    "prerelease": "npm t && npm run lint",
-    "release": "standard-version",
-    "precommit": "lint-staged",
-    "commitmsg": "commitlint -e $GIT_PARAMS"
+  "_resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+  "_spec": "6.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "André Cruz",
+    "email": "andre@moxy.studio"
   },
-  "standard-version": {
-    "scripts": {
-      "posttag": "git push --follow-tags origin master && npm publish"
-    }
-  },
-  "lint-staged": {
-    "*.js": [
-      "eslint --fix",
-      "git add"
-    ]
+  "bugs": {
+    "url": "https://github.com/moxystudio/node-cross-spawn/issues"
   },
   "commitlint": {
@@ -55,4 +48,5 @@
     "which": "^1.2.9"
   },
+  "description": "Cross platform child_process#spawn and child_process#spawnSync",
   "devDependencies": {
     "@commitlint/cli": "^6.0.0",
@@ -73,4 +67,45 @@
   "engines": {
     "node": ">=4.8"
-  }
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/moxystudio/node-cross-spawn",
+  "keywords": [
+    "spawn",
+    "spawnSync",
+    "windows",
+    "cross-platform",
+    "path-ext",
+    "shebang",
+    "cmd",
+    "execute"
+  ],
+  "license": "MIT",
+  "lint-staged": {
+    "*.js": [
+      "eslint --fix",
+      "git add"
+    ]
+  },
+  "main": "index.js",
+  "name": "cross-spawn",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/moxystudio/node-cross-spawn.git"
+  },
+  "scripts": {
+    "commitmsg": "commitlint -e $GIT_PARAMS",
+    "lint": "eslint .",
+    "precommit": "lint-staged",
+    "prerelease": "npm t && npm run lint",
+    "release": "standard-version",
+    "test": "jest --env node --coverage"
+  },
+  "standard-version": {
+    "scripts": {
+      "posttag": "git push --follow-tags origin master && npm publish"
+    }
+  },
+  "version": "6.0.5"
 }
Index: trip-planner-front/node_modules/css-blank-pseudo/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/css-blank-pseudo/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-blank-pseudo/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/css-blank-pseudo/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/css-blank-pseudo"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/css-blank-pseudo/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-blank-pseudo/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-blank-pseudo/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-blank-pseudo/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-blank-pseudo/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-blank-pseudo/package.json
===================================================================
--- trip-planner-front/node_modules/css-blank-pseudo/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-blank-pseudo/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,67 @@
 {
-  "name": "css-blank-pseudo",
-  "version": "0.1.4",
-  "description": "Style form elements when they are empty",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "csstools/css-blank-pseudo",
-  "homepage": "https://github.com/csstools/css-blank-pseudo#readme",
-  "bugs": "https://github.com/csstools/css-blank-pseudo/issues",
-  "main": "index.js",
-  "module": "index.mjs",
+  "_args": [
+    [
+      "css-blank-pseudo@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-blank-pseudo@0.1.4",
+  "_id": "css-blank-pseudo@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
+  "_location": "/css-blank-pseudo",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-blank-pseudo@0.1.4",
+    "name": "css-blank-pseudo",
+    "escapedName": "css-blank-pseudo",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
   "bin": {
     "css-blank-pseudo": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/csstools/css-blank-pseudo/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.5"
+  },
+  "description": "Style form elements when they are empty",
+  "devDependencies": {
+    "@babel/core": "^7.1.6",
+    "@babel/preset-env": "^7.1.6",
+    "babel-eslint": "^10.0.1",
+    "cross-env": "^5.2.0",
+    "eslint": "^5.9.0",
+    "eslint-config-dev": "2.0.0",
+    "postcss-tape": "^2.2.0",
+    "pre-commit": "^1.2.2",
+    "rollup": "^0.67.3",
+    "rollup-plugin-babel": "^4.0.3",
+    "rollup-plugin-terser": "^3.0.0"
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "eslintConfig": {
+    "extends": "dev",
+    "parser": "babel-eslint"
   },
   "files": [
@@ -30,40 +82,5 @@
     "postcss.mjs.map"
   ],
-  "scripts": {
-    "build": "npm run build:browser && npm run build:cli && npm run build:node && npm run build:postcss",
-    "build:browser": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent && cross-env NODE_ENV=browser:legacy rollup -c .rollup.js --silent",
-    "build:cli": "cross-env NODE_ENV=cli rollup -c .rollup.js --silent",
-    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
-    "build:node": "rollup -c .rollup.js --silent && cross-env NODE_ENV=legacy rollup -c .rollup.js --silent",
-    "prepublishOnly": "npm run build && npm test",
-    "pretest": "npm run build:postcss",
-    "pretest:postcss": "npm run build:postcss",
-    "test": "npm run test:js && npm run test:postcss",
-    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
-    "test:postcss": "postcss-tape --plugin=postcss.js"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
-  "dependencies": {
-    "postcss": "^7.0.5"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.1.6",
-    "@babel/preset-env": "^7.1.6",
-    "babel-eslint": "^10.0.1",
-    "cross-env": "^5.2.0",
-    "eslint": "^5.9.0",
-    "eslint-config-dev": "2.0.0",
-    "postcss-tape": "^2.2.0",
-    "pre-commit": "^1.2.2",
-    "rollup": "^0.67.3",
-    "rollup-plugin-babel": "^4.0.3",
-    "rollup-plugin-terser": "^3.0.0"
-  },
-  "eslintConfig": {
-    "extends": "dev",
-    "parser": "babel-eslint"
-  },
+  "homepage": "https://github.com/csstools/css-blank-pseudo#readme",
   "keywords": [
     "postcss",
@@ -82,4 +99,26 @@
     "select",
     "textarea"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.js",
+  "module": "index.mjs",
+  "name": "css-blank-pseudo",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstools/css-blank-pseudo.git"
+  },
+  "scripts": {
+    "build": "npm run build:browser && npm run build:cli && npm run build:node && npm run build:postcss",
+    "build:browser": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent && cross-env NODE_ENV=browser:legacy rollup -c .rollup.js --silent",
+    "build:cli": "cross-env NODE_ENV=cli rollup -c .rollup.js --silent",
+    "build:node": "rollup -c .rollup.js --silent && cross-env NODE_ENV=legacy rollup -c .rollup.js --silent",
+    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
+    "prepublishOnly": "npm run build && npm test",
+    "pretest": "npm run build:postcss",
+    "pretest:postcss": "npm run build:postcss",
+    "test": "npm run test:js && npm run test:postcss",
+    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
+    "test:postcss": "postcss-tape --plugin=postcss.js"
+  },
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/css-color-names/package.json
===================================================================
--- trip-planner-front/node_modules/css-color-names/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-color-names/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,60 @@
 {
+  "_args": [
+    [
+      "css-color-names@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-color-names@1.0.1",
+  "_id": "css-color-names@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==",
+  "_location": "/css-color-names",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-color-names@1.0.1",
+    "name": "css-color-names",
+    "escapedName": "css-color-names",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-merge-longhand"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dave Eddy",
+    "email": "dave@daveeddy.com",
+    "url": "http://www.daveeddy.com"
+  },
+  "bugs": {
+    "url": "https://github.com/bahamas10/css-color-names/issues"
+  },
+  "contributors": [],
+  "dependencies": {},
+  "description": "A JSON Object of css color names mapped to their hex value",
+  "devDependencies": {},
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "css-color-names.json"
+  ],
+  "homepage": "https://github.com/bahamas10/css-color-names#readme",
+  "keywords": [
+    "css",
+    "colors",
+    "names"
+  ],
+  "license": "MIT",
+  "main": "./css-color-names.json",
   "name": "css-color-names",
-  "description": "A JSON Object of css color names mapped to their hex value",
-  "version": "1.0.1",
-  "author": "Dave Eddy <dave@daveeddy.com> (http://www.daveeddy.com)",
-  "contributors": [],
-  "main": "./css-color-names.json",
+  "optionalDependencies": {},
   "repository": {
     "type": "git",
@@ -13,16 +64,4 @@
     "test": "for f in tests/*.js; do echo \"$f\"; node \"$f\" || exit 1; done; echo 'Passed!'"
   },
-  "dependencies": {},
-  "devDependencies": {},
-  "optionalDependencies": {},
-  "engines": {
-    "node": "*"
-  },
-  "license": "MIT",
-  "keywords": [
-    "css", "colors", "names"
-  ],
-  "files": [
-    "css-color-names.json"
-  ]
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/css-declaration-sorter/package.json
===================================================================
--- trip-planner-front/node_modules/css-declaration-sorter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-declaration-sorter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,54 @@
 {
-  "name": "css-declaration-sorter",
-  "version": "6.1.3",
+  "_args": [
+    [
+      "css-declaration-sorter@6.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-declaration-sorter@6.1.3",
+  "_id": "css-declaration-sorter@6.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==",
+  "_location": "/css-declaration-sorter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-declaration-sorter@6.1.3",
+    "name": "css-declaration-sorter",
+    "escapedName": "css-declaration-sorter",
+    "rawSpec": "6.1.3",
+    "saveSpec": null,
+    "fetchSpec": "6.1.3"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz",
+  "_spec": "6.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Selwyn",
+    "email": "talk@selwyn.cc",
+    "url": "https://selwyn.cc/"
+  },
+  "bugs": {
+    "url": "https://github.com/Siilwyn/css-declaration-sorter/issues"
+  },
+  "dependencies": {
+    "timsort": "^0.3.0"
+  },
   "description": "Sorts CSS declarations fast and automatically in a certain order.",
-  "type": "module",
-  "main": "./src/main.cjs",
+  "devDependencies": {
+    "@mdn/browser-compat-data": "^3.3.10",
+    "eslint": "^7.30.0",
+    "postcss": "^8.3.6",
+    "rollup": "^2.53.2",
+    "uvu": "^0.5.1"
+  },
+  "engines": {
+    "node": ">= 10"
+  },
   "exports": {
     "import": "./src/main.mjs",
@@ -15,37 +61,5 @@
     "orders"
   ],
-  "scripts": {
-    "prebuild": "rollup orders/*.mjs --format cjs --dir orders; rename .js .cjs orders/*.js",
-    "build": "rollup src/main.mjs --exports default --format cjs --file src/main.cjs",
-    "postbuild": "sed -i 's/mjs/cjs/' src/main.cjs",
-    "preversion": "npm test",
-    "test": "uvu src .+\\.test\\.mjs",
-    "test:ci": "npm test && npm run lint -- --max-warnings 0",
-    "lint": "eslint src/*.mjs",
-    "scrape": "node src/property-scraper.mjs",
-    "prepack": "npm run build"
-  },
-  "dependencies": {
-    "timsort": "^0.3.0"
-  },
-  "devDependencies": {
-    "@mdn/browser-compat-data": "^3.3.10",
-    "eslint": "^7.30.0",
-    "postcss": "^8.3.6",
-    "rollup": "^2.53.2",
-    "uvu": "^0.5.1"
-  },
-  "peerDependencies": {
-    "postcss": "^8.0.9"
-  },
-  "engines": {
-    "node": ">= 10"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/Siilwyn/css-declaration-sorter.git"
-  },
-  "author": "Selwyn <talk@selwyn.cc> (https://selwyn.cc/)",
-  "license": "ISC",
+  "homepage": "https://github.com/Siilwyn/css-declaration-sorter#readme",
   "keywords": [
     "postcss",
@@ -56,4 +70,27 @@
     "property",
     "order"
-  ]
+  ],
+  "license": "ISC",
+  "main": "./src/main.cjs",
+  "name": "css-declaration-sorter",
+  "peerDependencies": {
+    "postcss": "^8.0.9"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Siilwyn/css-declaration-sorter.git"
+  },
+  "scripts": {
+    "build": "rollup src/main.mjs --exports default --format cjs --file src/main.cjs",
+    "lint": "eslint src/*.mjs",
+    "postbuild": "sed -i 's/mjs/cjs/' src/main.cjs",
+    "prebuild": "rollup orders/*.mjs --format cjs --dir orders; rename .js .cjs orders/*.js",
+    "prepack": "npm run build",
+    "preversion": "npm test",
+    "scrape": "node src/property-scraper.mjs",
+    "test": "uvu src .+\\.test\\.mjs",
+    "test:ci": "npm test && npm run lint -- --max-warnings 0"
+  },
+  "type": "module",
+  "version": "6.1.3"
 }
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../cssesc/bin/cssesc" "$@"
+  node  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.cmd
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+"%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.ps1
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/.bin/cssesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/cssesc/package.json
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/cssesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/cssesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,43 @@
 {
-  "name": "cssesc",
-  "version": "2.0.0",
-  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
-  "homepage": "https://mths.be/cssesc",
-  "engines": {
-    "node": ">=4"
+  "_args": [
+    [
+      "cssesc@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssesc@2.0.0",
+  "_id": "cssesc@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+  "_location": "/css-has-pseudo/cssesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssesc@2.0.0",
+    "name": "cssesc",
+    "escapedName": "cssesc",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
   },
-  "main": "cssesc.js",
-  "bin": "bin/cssesc",
-  "man": "man/cssesc.1",
-  "keywords": [
-    "css",
-    "escape",
-    "identifier",
-    "string",
-    "tool"
+  "_requiredBy": [
+    "/css-has-pseudo/postcss-selector-parser"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Mathias Bynens",
     "url": "https://mathiasbynens.be/"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/cssesc.git"
+  "bin": {
+    "cssesc": "bin/cssesc"
   },
-  "bugs": "https://github.com/mathiasbynens/cssesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "cssesc.js",
-    "bin/",
-    "man/"
-  ],
-  "scripts": {
-    "build": "grunt template && babel cssesc.js -o cssesc.js",
-    "test": "mocha tests",
-    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/cssesc/issues"
   },
+  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -48,4 +50,37 @@
     "regenerate": "^1.2.1",
     "requirejs": "^2.1.16"
-  }
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "cssesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/cssesc",
+  "keywords": [
+    "css",
+    "escape",
+    "identifier",
+    "string",
+    "tool"
+  ],
+  "license": "MIT",
+  "main": "cssesc.js",
+  "man": [
+    "man/cssesc.1"
+  ],
+  "name": "cssesc",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mathiasbynens/cssesc.git"
+  },
+  "scripts": {
+    "build": "grunt template && babel cssesc.js -o cssesc.js",
+    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec",
+    "test": "mocha tests"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss-selector-parser/package.json
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss-selector-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss-selector-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,57 @@
 {
-  "name": "postcss-selector-parser",
-  "version": "5.0.0",
+  "_args": [
+    [
+      "postcss-selector-parser@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-selector-parser@5.0.0",
+  "_id": "postcss-selector-parser@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+  "_location": "/css-has-pseudo/postcss-selector-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-parser@5.0.0",
+    "name": "postcss-selector-parser",
+    "escapedName": "postcss-selector-parser",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/css-has-pseudo"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "ava": {
+    "require": "babel-register",
+    "concurrency": 5
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-parser/issues"
+  },
+  "contributors": [
+    {
+      "name": "Ben Briggs",
+      "email": "beneb.info@gmail.com",
+      "url": "http://beneb.info"
+    },
+    {
+      "name": "Chris Eppstein",
+      "email": "chris@eppsteins.net",
+      "url": "http://twitter.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "cssesc": "^2.0.0",
+    "indexes-of": "^1.0.1",
+    "uniq": "^1.0.1"
+  },
+  "description": "> Selector parser with built in methods for working with selector strings.",
   "devDependencies": {
     "ava": "^0.25.0",
@@ -24,6 +76,7 @@
     "semver": "^5.6.0"
   },
-  "main": "dist/index.js",
-  "types": "postcss-selector-parser.d.ts",
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "API.md",
@@ -33,39 +86,8 @@
     "postcss-selector-parser.d.ts"
   ],
-  "scripts": {
-    "pretest": "eslint src",
-    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
-    "lintfix": "eslint --fix src",
-    "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js",
-    "testone": "ava"
-  },
-  "dependencies": {
-    "cssesc": "^2.0.0",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1"
-  },
+  "homepage": "https://github.com/postcss/postcss-selector-parser",
   "license": "MIT",
-  "engines": {
-    "node": ">=4"
-  },
-  "homepage": "https://github.com/postcss/postcss-selector-parser",
-  "contributors": [
-    {
-      "name": "Ben Briggs",
-      "email": "beneb.info@gmail.com",
-      "url": "http://beneb.info"
-    },
-    {
-      "name": "Chris Eppstein",
-      "email": "chris@eppsteins.net",
-      "url": "http://twitter.com/chriseppstein"
-    }
-  ],
-  "repository": "postcss/postcss-selector-parser",
-  "ava": {
-    "require": "babel-register",
-    "concurrency": 5
-  },
+  "main": "dist/index.js",
+  "name": "postcss-selector-parser",
   "nyc": {
     "exclude": [
@@ -73,4 +95,18 @@
       "**/__tests__"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-parser.git"
+  },
+  "scripts": {
+    "lintfix": "eslint --fix src",
+    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
+    "pretest": "eslint src",
+    "report": "nyc report --reporter=html",
+    "test": "nyc ava src/__tests__/*.js",
+    "testone": "ava"
+  },
+  "types": "postcss-selector-parser.d.ts",
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/css-has-pseudo/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/css-has-pseudo"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/css-has-pseudo/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-has-pseudo/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-has-pseudo/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-has-pseudo/package.json
===================================================================
--- trip-planner-front/node_modules/css-has-pseudo/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-has-pseudo/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,70 @@
 {
-  "name": "css-has-pseudo",
-  "version": "0.10.0",
-  "description": "Style elements relative to other elements in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "csstools/css-has-pseudo",
-  "homepage": "https://github.com/csstools/css-has-pseudo#readme",
-  "bugs": "https://github.com/csstools/css-has-pseudo/issues",
-  "main": "index.js",
-  "module": "index.mjs",
+  "_args": [
+    [
+      "css-has-pseudo@0.10.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-has-pseudo@0.10.0",
+  "_id": "css-has-pseudo@0.10.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
+  "_location": "/css-has-pseudo",
+  "_phantomChildren": {
+    "indexes-of": "1.0.1",
+    "picocolors": "0.2.1",
+    "uniq": "1.0.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-has-pseudo@0.10.0",
+    "name": "css-has-pseudo",
+    "escapedName": "css-has-pseudo",
+    "rawSpec": "0.10.0",
+    "saveSpec": null,
+    "fetchSpec": "0.10.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
+  "_spec": "0.10.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
   "bin": {
     "css-has-pseudo": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/csstools/css-has-pseudo/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.6",
+    "postcss-selector-parser": "^5.0.0-rc.4"
+  },
+  "description": "Style elements relative to other elements in CSS",
+  "devDependencies": {
+    "@babel/core": "^7.1.6",
+    "@babel/preset-env": "^7.1.6",
+    "babel-eslint": "^10.0.1",
+    "cross-env": "^5.2.0",
+    "eslint": "^5.9.0",
+    "eslint-config-dev": "2.0.0",
+    "postcss-tape": "^2.2.0",
+    "pre-commit": "^1.2.2",
+    "rollup": "^0.67.3",
+    "rollup-plugin-babel": "^4.0.3",
+    "rollup-plugin-terser": "^3.0.0"
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "eslintConfig": {
+    "extends": "dev",
+    "parser": "babel-eslint"
   },
   "files": [
@@ -25,41 +80,5 @@
     "postcss.mjs.map"
   ],
-  "scripts": {
-    "build": "npm run build:browser && npm run build:cli && npm run build:node && npm run build:postcss",
-    "build:browser": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent",
-    "build:cli": "cross-env NODE_ENV=cli rollup -c .rollup.js --silent",
-    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
-    "build:node": "rollup -c .rollup.js --silent",
-    "prepublishOnly": "npm run build && npm test",
-    "pretest": "npm run build:postcss",
-    "pretest:postcss": "npm run build:postcss",
-    "test": "npm run test:js && npm run test:postcss",
-    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
-    "test:postcss": "postcss-tape --plugin=postcss.js"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
-  "dependencies": {
-    "postcss": "^7.0.6",
-    "postcss-selector-parser": "^5.0.0-rc.4"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.1.6",
-    "@babel/preset-env": "^7.1.6",
-    "babel-eslint": "^10.0.1",
-    "cross-env": "^5.2.0",
-    "eslint": "^5.9.0",
-    "eslint-config-dev": "2.0.0",
-    "postcss-tape": "^2.2.0",
-    "pre-commit": "^1.2.2",
-    "rollup": "^0.67.3",
-    "rollup-plugin-babel": "^4.0.3",
-    "rollup-plugin-terser": "^3.0.0"
-  },
-  "eslintConfig": {
-    "extends": "dev",
-    "parser": "babel-eslint"
-  },
+  "homepage": "https://github.com/csstools/css-has-pseudo#readme",
   "keywords": [
     "postcss",
@@ -74,4 +93,26 @@
     "pseudo",
     "selector"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.js",
+  "module": "index.mjs",
+  "name": "css-has-pseudo",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstools/css-has-pseudo.git"
+  },
+  "scripts": {
+    "build": "npm run build:browser && npm run build:cli && npm run build:node && npm run build:postcss",
+    "build:browser": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent",
+    "build:cli": "cross-env NODE_ENV=cli rollup -c .rollup.js --silent",
+    "build:node": "rollup -c .rollup.js --silent",
+    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
+    "prepublishOnly": "npm run build && npm test",
+    "pretest": "npm run build:postcss",
+    "pretest:postcss": "npm run build:postcss",
+    "test": "npm run test:js && npm run test:postcss",
+    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
+    "test:postcss": "postcss-tape --plugin=postcss.js"
+  },
+  "version": "0.10.0"
 }
Index: trip-planner-front/node_modules/css-loader/package.json
===================================================================
--- trip-planner-front/node_modules/css-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,37 @@
 {
-  "name": "css-loader",
-  "version": "6.2.0",
-  "description": "css loader module for webpack",
-  "license": "MIT",
-  "repository": "webpack-contrib/css-loader",
-  "author": "Tobias Koppers @sokra",
-  "homepage": "https://github.com/webpack-contrib/css-loader",
-  "bugs": "https://github.com/webpack-contrib/css-loader/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "css-loader@6.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-loader@6.2.0",
+  "_id": "css-loader@6.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==",
+  "_location": "/css-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-loader@6.2.0",
+    "name": "css-loader",
+    "escapedName": "css-loader",
+    "rawSpec": "6.2.0",
+    "saveSpec": null,
+    "fetchSpec": "6.2.0"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz",
+  "_spec": "6.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist",
-    "validate:runtime": "es-check es5 \"dist/runtime/**/*.js\"",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "postbuild": "npm run validate:runtime",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "lint:prettier": "prettier --list-different .",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version"
-  },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "webpack": "^5.0.0"
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/css-loader/issues"
   },
   "dependencies": {
@@ -52,4 +45,5 @@
     "semver": "^7.3.5"
   },
+  "description": "css loader module for webpack",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -89,4 +83,15 @@
     "webpack": "^5.45.1"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/css-loader",
   "keywords": [
     "webpack",
@@ -95,4 +100,35 @@
     "url",
     "import"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "css-loader",
+  "peerDependencies": {
+    "webpack": "^5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/css-loader.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier --list-different .",
+    "postbuild": "npm run validate:runtime",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch",
+    "validate:runtime": "es-check es5 \"dist/runtime/**/*.js\""
+  },
+  "version": "6.2.0"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,39 @@
 {
-  "name": "ajv-keywords",
-  "version": "3.5.2",
-  "description": "Custom JSON-Schema keywords for Ajv validator",
-  "main": "index.js",
-  "typings": "ajv-keywords.d.ts",
-  "scripts": {
-    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
-    "prepublish": "npm run build",
-    "test": "npm run build && npm run eslint && npm run test-cov",
-    "eslint": "eslint index.js keywords/*.js spec",
-    "test-spec": "mocha spec/*.spec.js -R spec",
-    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec"
+  "_args": [
+    [
+      "ajv-keywords@3.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ajv-keywords@3.5.2",
+  "_id": "ajv-keywords@3.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+  "_location": "/css-minimizer-webpack-plugin/ajv-keywords",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv-keywords@3.5.2",
+    "name": "ajv-keywords",
+    "escapedName": "ajv-keywords",
+    "rawSpec": "3.5.2",
+    "saveSpec": null,
+    "fetchSpec": "3.5.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+  "_spec": "3.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "ajv",
-    "keywords"
-  ],
-  "files": [
-    "index.js",
-    "ajv-keywords.d.ts",
-    "keywords"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/ajv-keywords/issues"
   },
-  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
-  "peerDependencies": {
-    "ajv": "^6.9.1"
-  },
+  "description": "Custom JSON-Schema keywords for Ajv validator",
   "devDependencies": {
     "ajv": "^6.9.1",
@@ -50,4 +50,35 @@
     "pre-commit": "^1.1.3",
     "uuid": "^8.1.0"
-  }
+  },
+  "files": [
+    "index.js",
+    "ajv-keywords.d.ts",
+    "keywords"
+  ],
+  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
+  "keywords": [
+    "JSON-Schema",
+    "ajv",
+    "keywords"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ajv-keywords",
+  "peerDependencies": {
+    "ajv": "^6.9.1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  },
+  "scripts": {
+    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
+    "eslint": "eslint index.js keywords/*.js spec",
+    "prepublish": "npm run build",
+    "test": "npm run build && npm run eslint && npm run test-cov",
+    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec",
+    "test-spec": "mocha spec/*.spec.js -R spec"
+  },
+  "typings": "ajv-keywords.d.ts",
+  "version": "3.5.2"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/ajv/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,42 @@
 {
-  "name": "ajv",
-  "version": "6.12.6",
-  "description": "Another JSON Schema Validator",
-  "main": "lib/ajv.js",
-  "typings": "lib/ajv.d.ts",
-  "files": [
-    "lib/",
-    "dist/",
-    "scripts/",
-    "LICENSE",
-    ".tonic_example.js"
+  "_args": [
+    [
+      "ajv@6.12.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
-    "jshint": "jshint lib/{compile/,}*.js",
-    "lint": "npm run jshint && npm run eslint",
-    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
-    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
-    "test-debug": "npm run test-spec -- --inspect-brk",
-    "test-cov": "nyc npm run test-spec",
-    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
-    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
-    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
-    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
-    "test-karma": "karma start",
-    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
-    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
-    "test": "npm run lint && npm run build && npm run test-all",
-    "prepublish": "npm run build && npm run bundle",
-    "watch": "watch \"npm run build\" ./lib/dot"
+  "_development": true,
+  "_from": "ajv@6.12.6",
+  "_id": "ajv@6.12.6",
+  "_inBundle": false,
+  "_integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+  "_location": "/css-minimizer-webpack-plugin/ajv",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv@6.12.6",
+    "name": "ajv",
+    "escapedName": "ajv",
+    "rawSpec": "6.12.6",
+    "saveSpec": null,
+    "fetchSpec": "6.12.6"
   },
-  "nyc": {
-    "exclude": [
-      "**/spec/**",
-      "node_modules"
-    ],
-    "reporter": [
-      "lcov",
-      "text-summary"
-    ]
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+  "_spec": "6.12.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ajv-validator/ajv.git"
-  },
-  "keywords": [
-    "JSON",
-    "schema",
-    "validator",
-    "validation",
-    "jsonschema",
-    "json-schema",
-    "json-schema-validator",
-    "json-schema-validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/ajv-validator/ajv/issues"
   },
-  "homepage": "https://github.com/ajv-validator/ajv",
-  "tonicExampleFilename": ".tonic_example.js",
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ajv"
+  },
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
@@ -68,4 +45,5 @@
     "uri-js": "^4.2.2"
   },
+  "description": "Another JSON Schema Validator",
   "devDependencies": {
     "ajv-async": "^1.0.0",
@@ -96,11 +74,64 @@
     "watch": "^1.0.0"
   },
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ajv"
-  },
+  "files": [
+    "lib/",
+    "dist/",
+    "scripts/",
+    "LICENSE",
+    ".tonic_example.js"
+  ],
   "funding": {
     "type": "github",
     "url": "https://github.com/sponsors/epoberezkin"
-  }
+  },
+  "homepage": "https://github.com/ajv-validator/ajv",
+  "keywords": [
+    "JSON",
+    "schema",
+    "validator",
+    "validation",
+    "jsonschema",
+    "json-schema",
+    "json-schema-validator",
+    "json-schema-validation"
+  ],
+  "license": "MIT",
+  "main": "lib/ajv.js",
+  "name": "ajv",
+  "nyc": {
+    "exclude": [
+      "**/spec/**",
+      "node_modules"
+    ],
+    "reporter": [
+      "lcov",
+      "text-summary"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv.git"
+  },
+  "scripts": {
+    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
+    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
+    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
+    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
+    "jshint": "jshint lib/{compile/,}*.js",
+    "lint": "npm run jshint && npm run eslint",
+    "prepublish": "npm run build && npm run bundle",
+    "test": "npm run lint && npm run build && npm run test-all",
+    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
+    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
+    "test-cov": "nyc npm run test-spec",
+    "test-debug": "npm run test-spec -- --inspect-brk",
+    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
+    "test-karma": "karma start",
+    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
+    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
+    "watch": "watch \"npm run build\" ./lib/dot"
+  },
+  "tonicExampleFilename": ".tonic_example.js",
+  "typings": "lib/ajv.d.ts",
+  "version": "6.12.6"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,39 @@
 {
-  "name": "json-schema-traverse",
-  "version": "0.4.1",
-  "description": "Traverse JSON Schema passing each schema object to callback",
-  "main": "index.js",
-  "scripts": {
-    "eslint": "eslint index.js spec",
-    "test-spec": "mocha spec -R spec",
-    "test": "npm run eslint && nyc npm run test-spec"
+  "_args": [
+    [
+      "json-schema-traverse@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema-traverse@0.4.1",
+  "_id": "json-schema-traverse@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+  "_location": "/css-minimizer-webpack-plugin/json-schema-traverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema-traverse@0.4.1",
+    "name": "json-schema-traverse",
+    "escapedName": "json-schema-traverse",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "traverse",
-    "iterate"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
   },
-  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "description": "Traverse JSON Schema passing each schema object to callback",
   "devDependencies": {
     "coveralls": "^2.13.1",
@@ -31,4 +43,13 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "keywords": [
+    "JSON-Schema",
+    "traverse",
+    "iterate"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-schema-traverse",
   "nyc": {
     "exclude": [
@@ -40,4 +61,14 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js spec",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "mocha spec -R spec"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,39 @@
 {
-  "name": "schema-utils",
-  "version": "3.1.1",
-  "description": "webpack Validation Utils",
-  "license": "MIT",
-  "repository": "webpack/schema-utils",
-  "author": "webpack Contrib (https://github.com/webpack-contrib)",
-  "homepage": "https://github.com/webpack/schema-utils",
-  "bugs": "https://github.com/webpack/schema-utils/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "schema-utils@3.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "schema-utils@3.1.1",
+  "_id": "schema-utils@3.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+  "_location": "/css-minimizer-webpack-plugin/schema-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "schema-utils@3.1.1",
+    "name": "schema-utils",
+    "escapedName": "schema-utils",
+    "rawSpec": "3.1.1",
+    "saveSpec": null,
+    "fetchSpec": "3.1.1"
   },
-  "main": "dist/index.js",
-  "types": "declarations/index.d.ts",
-  "engines": {
-    "node": ">= 10.13.0"
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+  "_spec": "3.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "webpack Contrib",
+    "url": "https://github.com/webpack-contrib"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist declarations",
-    "prebuild": "npm run clean",
-    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
-    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "build": "npm-run-all -p \"build:**\"",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint:types": "tsc --pretty --noEmit",
-    "lint": "npm-run-all lint:js lint:types fmt:check",
-    "fmt": "npm run fmt:check -- --write",
-    "fix:js": "npm run lint:js -- --fix",
-    "fix": "npm-run-all fix:js fmt",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "npm run build && husky install",
-    "release": "standard-version"
+  "bugs": {
+    "url": "https://github.com/webpack/schema-utils/issues"
   },
-  "files": [
-    "dist",
-    "declarations"
-  ],
   "dependencies": {
     "@types/json-schema": "^7.0.8",
@@ -50,4 +41,5 @@
     "ajv-keywords": "^3.5.2"
   },
+  "description": "webpack Validation Utils",
   "devDependencies": {
     "@babel/cli": "^7.14.3",
@@ -73,6 +65,51 @@
     "webpack": "^5.45.1"
   },
+  "engines": {
+    "node": ">= 10.13.0"
+  },
+  "files": [
+    "dist",
+    "declarations"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack/schema-utils",
   "keywords": [
     "webpack"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "schema-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/schema-utils.git"
+  },
+  "scripts": {
+    "build": "npm-run-all -p \"build:**\"",
+    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
+    "clean": "del-cli dist declarations",
+    "commitlint": "commitlint --from=master",
+    "fix": "npm-run-all fix:js fmt",
+    "fix:js": "npm run lint:js -- --fix",
+    "fmt": "npm run fmt:check -- --write",
+    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "lint": "npm-run-all lint:js lint:types fmt:check",
+    "lint:js": "eslint --cache .",
+    "lint:types": "tsc --pretty --noEmit",
+    "prebuild": "npm run clean",
+    "prepare": "npm run build && husky install",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "types": "declarations/index.d.ts",
+  "version": "3.1.1"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-minimizer-webpack-plugin/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-minimizer-webpack-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/css-minimizer-webpack-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-minimizer-webpack-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,50 +1,42 @@
 {
-  "name": "css-minimizer-webpack-plugin",
-  "version": "3.0.2",
-  "description": "cssnano plugin for Webpack",
-  "license": "MIT",
-  "repository": "webpack-contrib/css-minimizer-webpack-plugin",
-  "author": "Loann Neveu",
-  "homepage": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin",
-  "bugs": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "css-minimizer-webpack-plugin@3.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-minimizer-webpack-plugin@3.0.2",
+  "_id": "css-minimizer-webpack-plugin@3.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==",
+  "_location": "/css-minimizer-webpack-plugin",
+  "_phantomChildren": {
+    "@types/json-schema": "7.0.9",
+    "fast-deep-equal": "3.1.3",
+    "fast-json-stable-stringify": "2.1.0",
+    "uri-js": "4.4.1"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-minimizer-webpack-plugin@3.0.2",
+    "name": "css-minimizer-webpack-plugin",
+    "escapedName": "css-minimizer-webpack-plugin",
+    "rawSpec": "3.0.2",
+    "saveSpec": null,
+    "fetchSpec": "3.0.2"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit",
-    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz",
+  "_spec": "3.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Loann Neveu"
   },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "webpack": "^5.0.0"
-  },
-  "peerDependenciesMeta": {
-    "clean-css": {
-      "optional": true
-    },
-    "csso": {
-      "optional": true
-    }
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin/issues"
   },
   "dependencies": {
@@ -57,4 +49,5 @@
     "source-map": "^0.6.1"
   },
+  "description": "cssnano plugin for Webpack",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -89,4 +82,15 @@
     "webpack": "^5.40.0"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/css-minimizer-webpack-plugin",
   "keywords": [
     "cssnano",
@@ -100,4 +104,41 @@
     "optimize",
     "optimizer"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "css-minimizer-webpack-plugin",
+  "peerDependencies": {
+    "webpack": "^5.0.0"
+  },
+  "peerDependenciesMeta": {
+    "clean-css": {
+      "optional": true
+    },
+    "csso": {
+      "optional": true
+    }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "version": "3.0.2"
 }
Index: trip-planner-front/node_modules/css-parse/node_modules/css/package.json
===================================================================
--- trip-planner-front/node_modules/css-parse/node_modules/css/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-parse/node_modules/css/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,39 @@
 {
-  "name": "css",
-  "version": "2.2.4",
-  "description": "CSS parser / stringifier",
-  "main": "index",
-  "files": [
-    "index.js",
-    "lib",
-    "Readme.md"
+  "_args": [
+    [
+      "css@2.2.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "css@2.2.4",
+  "_id": "css@2.2.4",
+  "_inBundle": false,
+  "_integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+  "_location": "/css-parse/css",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css@2.2.4",
+    "name": "css",
+    "escapedName": "css",
+    "rawSpec": "2.2.4",
+    "saveSpec": null,
+    "fetchSpec": "2.2.4"
+  },
+  "_requiredBy": [
+    "/css-parse"
+  ],
+  "_resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+  "_spec": "2.2.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "bugs": {
+    "url": "https://github.com/reworkcss/css/issues"
+  },
   "dependencies": {
     "inherits": "^2.0.3",
@@ -15,9 +42,29 @@
     "urix": "^0.1.0"
   },
+  "description": "CSS parser / stringifier",
   "devDependencies": {
+    "bytes": "^1.0.0",
+    "matcha": "^0.5.0",
     "mocha": "^1.21.3",
-    "should": "^4.0.4",
-    "matcha": "^0.5.0",
-    "bytes": "^1.0.0"
+    "should": "^4.0.4"
+  },
+  "files": [
+    "index.js",
+    "lib",
+    "Readme.md"
+  ],
+  "homepage": "https://github.com/reworkcss/css#readme",
+  "keywords": [
+    "css",
+    "parser",
+    "stringifier",
+    "stylesheet"
+  ],
+  "license": "MIT",
+  "main": "index",
+  "name": "css",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/reworkcss/css.git"
   },
   "scripts": {
@@ -25,15 +72,4 @@
     "test": "mocha --require should --reporter spec --bail test/*.js"
   },
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reworkcss/css.git"
-  },
-  "keywords": [
-    "css",
-    "parser",
-    "stringifier",
-    "stylesheet"
-  ]
+  "version": "2.2.4"
 }
Index: trip-planner-front/node_modules/css-parse/node_modules/source-map-resolve/package.json
===================================================================
--- trip-planner-front/node_modules/css-parse/node_modules/source-map-resolve/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-parse/node_modules/source-map-resolve/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,59 @@
 {
-  "name": "source-map-resolve",
-  "version": "0.5.3",
-  "author": "Simon Lydell",
-  "license": "MIT",
+  "_args": [
+    [
+      "source-map-resolve@0.5.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map-resolve@0.5.3",
+  "_id": "source-map-resolve@0.5.3",
+  "_inBundle": false,
+  "_integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+  "_location": "/css-parse/source-map-resolve",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map-resolve@0.5.3",
+    "name": "source-map-resolve",
+    "escapedName": "source-map-resolve",
+    "rawSpec": "0.5.3",
+    "saveSpec": null,
+    "fetchSpec": "0.5.3"
+  },
+  "_requiredBy": [
+    "/css-parse/css"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+  "_spec": "0.5.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Simon Lydell"
+  },
+  "browser": "source-map-resolve.js",
+  "bugs": {
+    "url": "https://github.com/lydell/source-map-resolve/issues"
+  },
+  "dependencies": {
+    "atob": "^2.1.2",
+    "decode-uri-component": "^0.2.0",
+    "resolve-url": "^0.2.1",
+    "source-map-url": "^0.4.0",
+    "urix": "^0.1.0"
+  },
   "description": "Resolve the source map and/or sources for a generated file.",
+  "devDependencies": {
+    "Base64": "1.1.0",
+    "jshint": "2.10.3",
+    "setimmediate": "1.0.5",
+    "simple-asyncify": "1.0.0",
+    "tape": "4.12.1"
+  },
+  "files": [
+    "lib",
+    "source-map-resolve.js"
+  ],
+  "homepage": "https://github.com/lydell/source-map-resolve#readme",
   "keywords": [
     "source map",
@@ -18,30 +69,17 @@
     "finder"
   ],
-  "repository": "lydell/source-map-resolve",
+  "license": "MIT",
   "main": "lib/source-map-resolve-node.js",
-  "browser": "source-map-resolve.js",
-  "files": [
-    "lib",
-    "source-map-resolve.js"
-  ],
+  "name": "source-map-resolve",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lydell/source-map-resolve.git"
+  },
   "scripts": {
+    "build": "node generate-source-map-resolve.js",
     "lint": "jshint lib/ test/",
-    "unit": "node test/source-map-resolve.js && node test/windows.js",
     "test": "npm run lint && npm run unit",
-    "build": "node generate-source-map-resolve.js"
+    "unit": "node test/source-map-resolve.js && node test/windows.js"
   },
-  "dependencies": {
-    "atob": "^2.1.2",
-    "decode-uri-component": "^0.2.0",
-    "resolve-url": "^0.2.1",
-    "source-map-url": "^0.4.0",
-    "urix": "^0.1.0"
-  },
-  "devDependencies": {
-    "Base64": "1.1.0",
-    "jshint": "2.10.3",
-    "setimmediate": "1.0.5",
-    "simple-asyncify": "1.0.0",
-    "tape": "4.12.1"
-  }
+  "version": "0.5.3"
 }
Index: trip-planner-front/node_modules/css-parse/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-parse/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-parse/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-parse/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-parse/css"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-parse/package.json
===================================================================
--- trip-planner-front/node_modules/css-parse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-parse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,66 @@
 {
-  "name": "css-parse",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "css-parse@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-parse@2.0.0",
+  "_id": "css-parse@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
+  "_location": "/css-parse",
+  "_phantomChildren": {
+    "atob": "2.1.2",
+    "decode-uri-component": "0.2.0",
+    "inherits": "2.0.4",
+    "resolve-url": "0.2.1",
+    "source-map-url": "0.4.1",
+    "urix": "0.1.0"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-parse@2.0.0",
+    "name": "css-parse",
+    "escapedName": "css-parse",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/stylus"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "bugs": {
+    "url": "https://github.com/reworkcss/css-parse/issues"
+  },
+  "dependencies": {
+    "css": "^2.0.0"
+  },
   "description": "CSS parser",
-  "main": "index",
   "files": [
     "index.js"
   ],
-  "dependencies": {
-    "css": "^2.0.0"
-  },
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reworkcss/css-parse.git"
-  },
+  "homepage": "https://github.com/reworkcss/css-parse#readme",
   "keywords": [
     "css",
     "parser",
     "stylesheet"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index",
+  "name": "css-parse",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/reworkcss/css-parse.git"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/css-prefers-color-scheme/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/css-prefers-color-scheme"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-prefers-color-scheme/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-prefers-color-scheme/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-prefers-color-scheme/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-prefers-color-scheme/package.json
===================================================================
--- trip-planner-front/node_modules/css-prefers-color-scheme/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-prefers-color-scheme/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,47 +1,48 @@
 {
-  "name": "css-prefers-color-scheme",
-  "version": "3.1.1",
-  "description": "Use light and dark color schemes in all browsers",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "csstools/css-prefers-color-scheme",
-  "homepage": "https://github.com/csstools/css-prefers-color-scheme#readme",
-  "bugs": "https://github.com/csstools/css-prefers-color-scheme/issues",
-  "main": "index.js",
-  "module": "index.mjs",
+  "_args": [
+    [
+      "css-prefers-color-scheme@3.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-prefers-color-scheme@3.1.1",
+  "_id": "css-prefers-color-scheme@3.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
+  "_location": "/css-prefers-color-scheme",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-prefers-color-scheme@3.1.1",
+    "name": "css-prefers-color-scheme",
+    "escapedName": "css-prefers-color-scheme",
+    "rawSpec": "3.1.1",
+    "saveSpec": null,
+    "fetchSpec": "3.1.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
+  "_spec": "3.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
   "bin": {
     "css-prefers-color-scheme": "cli.js"
   },
-  "files": [
-    "browser.js",
-    "browser.js.map",
-    "browser.min.js",
-    "cli.js",
-    "index.mjs",
-    "index.mjs.map",
-    "index.js",
-    "index.js.map",
-    "postcss.js",
-    "postcss.mjs"
-  ],
-  "scripts": {
-    "build": "npm run build:browser && npm run build:node && npm run build:postcss",
-    "build:browser": "npm run build:browser:dist && npm run build:browser:min",
-    "build:browser:dist": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent",
-    "build:browser:min": "cross-env NODE_ENV=browser:min rollup -c .rollup.js --silent",
-    "build:node": "rollup -c .rollup.js --silent",
-    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
-    "prepublishOnly": "npm test",
-    "pretest": "npm run build",
-    "test": "npm run test:js && npm run test:tape",
-    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape --plugin=postcss.js"
-  },
-  "engines": {
-    "node": ">=6.0.0"
+  "bugs": {
+    "url": "https://github.com/csstools/css-prefers-color-scheme/issues"
   },
   "dependencies": {
     "postcss": "^7.0.5"
   },
+  "description": "Use light and dark color schemes in all browsers",
   "devDependencies": {
     "@babel/core": "^7.1.5",
@@ -59,8 +60,24 @@
     "uglify-js": "^3.4.9"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "browser.js",
+    "browser.js.map",
+    "browser.min.js",
+    "cli.js",
+    "index.mjs",
+    "index.mjs.map",
+    "index.js",
+    "index.js.map",
+    "postcss.js",
+    "postcss.mjs"
+  ],
+  "homepage": "https://github.com/csstools/css-prefers-color-scheme#readme",
   "keywords": [
     "postcss",
@@ -78,4 +95,26 @@
     "queries",
     "interface"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.js",
+  "module": "index.mjs",
+  "name": "css-prefers-color-scheme",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstools/css-prefers-color-scheme.git"
+  },
+  "scripts": {
+    "build": "npm run build:browser && npm run build:node && npm run build:postcss",
+    "build:browser": "npm run build:browser:dist && npm run build:browser:min",
+    "build:browser:dist": "cross-env NODE_ENV=browser rollup -c .rollup.js --silent",
+    "build:browser:min": "cross-env NODE_ENV=browser:min rollup -c .rollup.js --silent",
+    "build:node": "rollup -c .rollup.js --silent",
+    "build:postcss": "cross-env NODE_ENV=postcss rollup -c .rollup.js --silent",
+    "prepublishOnly": "npm test",
+    "pretest": "npm run build",
+    "test": "npm run test:js && npm run test:tape",
+    "test:js": "eslint src/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape --plugin=postcss.js"
+  },
+  "version": "3.1.1"
 }
Index: trip-planner-front/node_modules/css-select/package.json
===================================================================
--- trip-planner-front/node_modules/css-select/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-select/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,71 +1,107 @@
 {
+  "_args": [
+    [
+      "css-select@4.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-select@4.1.3",
+  "_id": "css-select@4.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+  "_location": "/css-select",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-select@4.1.3",
     "name": "css-select",
-    "version": "4.1.3",
-    "description": "a CSS selector compiler/engine",
-    "author": "Felix Boehm <me@feedic.com>",
-    "funding": {
-        "url": "https://github.com/sponsors/fb55"
-    },
-    "keywords": [
-        "css",
-        "selector",
-        "sizzle"
-    ],
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/fb55/css-select.git"
-    },
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib"
-    ],
-    "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^5.0.0",
-        "domhandler": "^4.2.0",
-        "domutils": "^2.6.0",
-        "nth-check": "^2.0.0"
-    },
-    "devDependencies": {
-        "@types/boolbase": "^1.0.0",
-        "@types/jest": "^26.0.14",
-        "@types/node": "^15.0.2",
-        "@typescript-eslint/eslint-plugin": "^4.1.0",
-        "@typescript-eslint/parser": "^4.1.0",
-        "cheerio-soupselect": "^0.1.1",
-        "coveralls": "^3.0.2",
-        "eslint": "^7.9.0",
-        "eslint-config-prettier": "^8.1.0",
-        "htmlparser2": "^6.0.0",
-        "jest": "^27.0.3",
-        "prettier": "^2.1.2",
-        "ts-jest": "^27.0.1",
-        "typescript": "^4.0.2"
-    },
-    "scripts": {
-        "test": "jest --coverage && npm run lint",
-        "coverage": "cat coverage/lcov.info | coveralls",
-        "lint": "npm run lint:es && npm run lint:prettier",
-        "lint:es": "eslint src",
-        "lint:prettier": "npm run prettier -- --check",
-        "format": "npm run format:es && npm run format:prettier",
-        "format:es": "npm run lint:es -- --fix",
-        "format:prettier": "npm run prettier -- --write",
-        "prettier": "prettier '**/*.{ts,md,json,yml}'",
-        "build": "tsc",
-        "prepare": "npm run build"
-    },
-    "license": "BSD-2-Clause",
-    "prettier": {
-        "tabWidth": 4,
-        "proseWrap": "always"
-    },
-    "jest": {
-        "preset": "ts-jest",
-        "testEnvironment": "node",
-        "testMatch": [
-            "<rootDir>/test/*.ts"
-        ]
-    }
+    "escapedName": "css-select",
+    "rawSpec": "4.1.3",
+    "saveSpec": null,
+    "fetchSpec": "4.1.3"
+  },
+  "_requiredBy": [
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+  "_spec": "4.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/css-select/issues"
+  },
+  "dependencies": {
+    "boolbase": "^1.0.0",
+    "css-what": "^5.0.0",
+    "domhandler": "^4.2.0",
+    "domutils": "^2.6.0",
+    "nth-check": "^2.0.0"
+  },
+  "description": "a CSS selector compiler/engine",
+  "devDependencies": {
+    "@types/boolbase": "^1.0.0",
+    "@types/jest": "^26.0.14",
+    "@types/node": "^15.0.2",
+    "@typescript-eslint/eslint-plugin": "^4.1.0",
+    "@typescript-eslint/parser": "^4.1.0",
+    "cheerio-soupselect": "^0.1.1",
+    "coveralls": "^3.0.2",
+    "eslint": "^7.9.0",
+    "eslint-config-prettier": "^8.1.0",
+    "htmlparser2": "^6.0.0",
+    "jest": "^27.0.3",
+    "prettier": "^2.1.2",
+    "ts-jest": "^27.0.1",
+    "typescript": "^4.0.2"
+  },
+  "files": [
+    "lib"
+  ],
+  "funding": {
+    "url": "https://github.com/sponsors/fb55"
+  },
+  "homepage": "https://github.com/fb55/css-select#readme",
+  "jest": {
+    "preset": "ts-jest",
+    "testEnvironment": "node",
+    "testMatch": [
+      "<rootDir>/test/*.ts"
+    ]
+  },
+  "keywords": [
+    "css",
+    "selector",
+    "sizzle"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "css-select",
+  "prettier": {
+    "tabWidth": 4,
+    "proseWrap": "always"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/css-select.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "coverage": "cat coverage/lcov.info | coveralls",
+    "format": "npm run format:es && npm run format:prettier",
+    "format:es": "npm run lint:es -- --fix",
+    "format:prettier": "npm run prettier -- --write",
+    "lint": "npm run lint:es && npm run lint:prettier",
+    "lint:es": "eslint src",
+    "lint:prettier": "npm run prettier -- --check",
+    "prepare": "npm run build",
+    "prettier": "prettier '**/*.{ts,md,json,yml}'",
+    "test": "jest --coverage && npm run lint"
+  },
+  "types": "lib/index.d.ts",
+  "version": "4.1.3"
 }
Index: trip-planner-front/node_modules/css-tree/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css-tree/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-tree/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css-tree/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css-tree"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css-tree/package.json
===================================================================
--- trip-planner-front/node_modules/css-tree/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-tree/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,40 @@
 {
-  "name": "css-tree",
-  "version": "1.1.3",
-  "description": "A tool set for CSS: fast detailed parser (CSS → AST), walker (AST traversal), generator (AST → CSS) and lexer (validation and matching) based on specs and browser implementations",
-  "author": "Roman Dvornov <rdvornov@gmail.com> (https://github.com/lahmatiy)",
-  "license": "MIT",
-  "repository": "csstree/csstree",
-  "keywords": [
-    "css",
-    "ast",
-    "tokenizer",
-    "parser",
-    "walker",
-    "lexer",
-    "generator",
-    "utils",
-    "syntax",
-    "validation"
+  "_args": [
+    [
+      "css-tree@1.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "main": "lib/index.js",
-  "unpkg": "dist/csstree.min.js",
-  "jsdelivr": "dist/csstree.min.js",
-  "scripts": {
-    "build": "rollup --config",
-    "lint": "eslint data lib scripts test && node scripts/review-syntax-patch --lint && node scripts/update-docs --lint",
-    "lint-and-test": "npm run lint && npm test",
-    "update:docs": "node scripts/update-docs",
-    "review:syntax-patch": "node scripts/review-syntax-patch",
-    "test": "mocha --reporter progress",
-    "coverage": "nyc npm test",
-    "travis": "nyc npm run lint-and-test && npm run coveralls",
-    "coveralls": "nyc report --reporter=text-lcov | coveralls",
-    "prepublishOnly": "npm run build",
-    "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/parse --stat -o /dev/null"
+  "_development": true,
+  "_from": "css-tree@1.1.3",
+  "_id": "css-tree@1.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+  "_location": "/css-tree",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-tree@1.1.3",
+    "name": "css-tree",
+    "escapedName": "css-tree",
+    "rawSpec": "1.1.3",
+    "saveSpec": null,
+    "fetchSpec": "1.1.3"
+  },
+  "_requiredBy": [
+    "/csso",
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+  "_spec": "1.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Roman Dvornov",
+    "email": "rdvornov@gmail.com",
+    "url": "https://github.com/lahmatiy"
+  },
+  "bugs": {
+    "url": "https://github.com/csstree/csstree/issues"
   },
   "dependencies": {
@@ -38,4 +42,5 @@
     "source-map": "^0.6.1"
   },
+  "description": "A tool set for CSS: fast detailed parser (CSS → AST), walker (AST traversal), generator (AST → CSS) and lexer (validation and matching) based on specs and browser implementations",
   "devDependencies": {
     "@rollup/plugin-commonjs": "^11.0.2",
@@ -57,4 +62,40 @@
     "dist",
     "lib"
-  ]
+  ],
+  "homepage": "https://github.com/csstree/csstree#readme",
+  "jsdelivr": "dist/csstree.min.js",
+  "keywords": [
+    "css",
+    "ast",
+    "tokenizer",
+    "parser",
+    "walker",
+    "lexer",
+    "generator",
+    "utils",
+    "syntax",
+    "validation"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "css-tree",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstree/csstree.git"
+  },
+  "scripts": {
+    "build": "rollup --config",
+    "coverage": "nyc npm test",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/parse --stat -o /dev/null",
+    "lint": "eslint data lib scripts test && node scripts/review-syntax-patch --lint && node scripts/update-docs --lint",
+    "lint-and-test": "npm run lint && npm test",
+    "prepublishOnly": "npm run build",
+    "review:syntax-patch": "node scripts/review-syntax-patch",
+    "test": "mocha --reporter progress",
+    "travis": "nyc npm run lint-and-test && npm run coveralls",
+    "update:docs": "node scripts/update-docs"
+  },
+  "unpkg": "dist/csstree.min.js",
+  "version": "1.1.3"
 }
Index: trip-planner-front/node_modules/css-what/package.json
===================================================================
--- trip-planner-front/node_modules/css-what/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css-what/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,55 +1,93 @@
 {
-    "author": "Felix Böhm <me@feedic.com> (http://feedic.com)",
+  "_args": [
+    [
+      "css-what@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css-what@5.0.1",
+  "_id": "css-what@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
+  "_location": "/css-what",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css-what@5.0.1",
     "name": "css-what",
-    "description": "a CSS selector parser",
-    "version": "5.0.1",
-    "funding": {
-        "url": "https://github.com/sponsors/fb55"
-    },
-    "repository": {
-        "url": "https://github.com/fb55/css-what"
-    },
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib/**/*"
-    ],
-    "scripts": {
-        "test": "jest --coverage -u && npm run lint",
-        "coverage": "cat coverage/lcov.info | coveralls",
-        "lint": "npm run lint:es && npm run lint:prettier",
-        "lint:es": "eslint src",
-        "lint:prettier": "npm run prettier -- --check",
-        "format": "npm run format:es && npm run format:prettier",
-        "format:es": "npm run lint:es -- --fix",
-        "format:prettier": "npm run prettier -- --write",
-        "prettier": "prettier '**/*.{ts,md,json,yml}'",
-        "build": "tsc",
-        "prepare": "npm run build"
-    },
-    "devDependencies": {
-        "@types/jest": "^26.0.3",
-        "@types/node": "^15.0.1",
-        "@typescript-eslint/eslint-plugin": "^4.1.0",
-        "@typescript-eslint/parser": "^4.1.0",
-        "coveralls": "^3.0.5",
-        "eslint": "^7.0.0",
-        "eslint-config-prettier": "^8.1.0",
-        "eslint-plugin-node": "^11.1.0",
-        "jest": "^27.0.1",
-        "prettier": "^2.0.5",
-        "ts-jest": "^27.0.1",
-        "typescript": "^4.0.2"
-    },
-    "optionalDependencies": {},
-    "engines": {
-        "node": ">= 6"
-    },
-    "license": "BSD-2-Clause",
-    "jest": {
-        "preset": "ts-jest"
-    },
-    "prettier": {
-        "tabWidth": 4
-    }
+    "escapedName": "css-what",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/css-select"
+  ],
+  "_resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Böhm",
+    "email": "me@feedic.com",
+    "url": "http://feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/css-what/issues"
+  },
+  "dependencies": {},
+  "description": "a CSS selector parser",
+  "devDependencies": {
+    "@types/jest": "^26.0.3",
+    "@types/node": "^15.0.1",
+    "@typescript-eslint/eslint-plugin": "^4.1.0",
+    "@typescript-eslint/parser": "^4.1.0",
+    "coveralls": "^3.0.5",
+    "eslint": "^7.0.0",
+    "eslint-config-prettier": "^8.1.0",
+    "eslint-plugin-node": "^11.1.0",
+    "jest": "^27.0.1",
+    "prettier": "^2.0.5",
+    "ts-jest": "^27.0.1",
+    "typescript": "^4.0.2"
+  },
+  "engines": {
+    "node": ">= 6"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": {
+    "url": "https://github.com/sponsors/fb55"
+  },
+  "homepage": "https://github.com/fb55/css-what#readme",
+  "jest": {
+    "preset": "ts-jest"
+  },
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "css-what",
+  "optionalDependencies": {},
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "url": "git+https://github.com/fb55/css-what.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "coverage": "cat coverage/lcov.info | coveralls",
+    "format": "npm run format:es && npm run format:prettier",
+    "format:es": "npm run lint:es -- --fix",
+    "format:prettier": "npm run prettier -- --write",
+    "lint": "npm run lint:es && npm run lint:prettier",
+    "lint:es": "eslint src",
+    "lint:prettier": "npm run prettier -- --check",
+    "prepare": "npm run build",
+    "prettier": "prettier '**/*.{ts,md,json,yml}'",
+    "test": "jest --coverage -u && npm run lint"
+  },
+  "types": "lib/index.d.ts",
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/css/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/css/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/css/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/css"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/css/package.json
===================================================================
--- trip-planner-front/node_modules/css/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/css/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,51 @@
 {
-  "name": "css",
-  "version": "3.0.0",
+  "_args": [
+    [
+      "css@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "css@3.0.0",
+  "_id": "css@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
+  "_location": "/css",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "css@3.0.0",
+    "name": "css",
+    "escapedName": "css",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/critters"
+  ],
+  "_resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "bugs": {
+    "url": "https://github.com/reworkcss/css/issues"
+  },
+  "dependencies": {
+    "inherits": "^2.0.4",
+    "source-map": "^0.6.1",
+    "source-map-resolve": "^0.6.0"
+  },
   "description": "CSS parser / stringifier",
-  "main": "index",
+  "devDependencies": {
+    "bytes": "^3.1.0",
+    "matcha": "^0.7.0",
+    "mocha": "^8.0.1",
+    "should": "^13.2.3"
+  },
   "files": [
     "index.js",
@@ -9,14 +53,17 @@
     "Readme.md"
   ],
-  "dependencies": {
-    "inherits": "^2.0.4",
-    "source-map": "^0.6.1",
-    "source-map-resolve": "^0.6.0"
-  },
-  "devDependencies": {
-    "mocha": "^8.0.1",
-    "should": "^13.2.3",
-    "matcha": "^0.7.0",
-    "bytes": "^3.1.0"
+  "homepage": "https://github.com/reworkcss/css#readme",
+  "keywords": [
+    "css",
+    "parser",
+    "stringifier",
+    "stylesheet"
+  ],
+  "license": "MIT",
+  "main": "index",
+  "name": "css",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/reworkcss/css.git"
   },
   "scripts": {
@@ -24,15 +71,4 @@
     "test": "mocha --require should --reporter spec test/*.js"
   },
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reworkcss/css.git"
-  },
-  "keywords": [
-    "css",
-    "parser",
-    "stringifier",
-    "stylesheet"
-  ]
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/cssdb/package.json
===================================================================
--- trip-planner-front/node_modules/cssdb/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cssdb/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,40 @@
 {
-  "name": "cssdb",
-  "version": "4.4.0",
+  "_args": [
+    [
+      "cssdb@4.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssdb@4.4.0",
+  "_id": "cssdb@4.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==",
+  "_location": "/cssdb",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssdb@4.4.0",
+    "name": "cssdb",
+    "escapedName": "cssdb",
+    "rawSpec": "4.4.0",
+    "saveSpec": null,
+    "fetchSpec": "4.4.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
+  "_spec": "4.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/csstools/cssdb/issues"
+  },
   "description": "A comprehensive list of CSS features and their positions in the process of becoming implemented web standards",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "csstools/cssdb",
-  "homepage": "https://github.com/csstools/cssdb#readme",
-  "bugs": "https://github.com/csstools/cssdb/issues",
-  "main": "cssdb.json",
-  "files": [
-    "cssdb.json"
-  ],
-  "scripts": {
-    "start": "node tasks/start",
-    "start:nobadges": "node tasks/start --no-badges",
-    "test": "npm run test:css && npm run test:json",
-    "test:css": "stylelint tasks/style-template.css",
-    "test:json": "node tasks/test",
-    "watch": "http-server gh-pages"
-  },
   "devDependencies": {
     "browserslist": "^4.4.2",
@@ -35,7 +52,8 @@
     "stylelint-config-dev": "^4.0.0"
   },
-  "stylelint": {
-    "extends": "stylelint-config-dev"
-  },
+  "files": [
+    "cssdb.json"
+  ],
+  "homepage": "https://github.com/csstools/cssdb#readme",
   "keywords": [
     "css",
@@ -45,4 +63,23 @@
     "stages",
     "tc39"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "cssdb.json",
+  "name": "cssdb",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstools/cssdb.git"
+  },
+  "scripts": {
+    "start": "node tasks/start",
+    "start:nobadges": "node tasks/start --no-badges",
+    "test": "npm run test:css && npm run test:json",
+    "test:css": "stylelint tasks/style-template.css",
+    "test:json": "node tasks/test",
+    "watch": "http-server gh-pages"
+  },
+  "stylelint": {
+    "extends": "stylelint-config-dev"
+  },
+  "version": "4.4.0"
 }
Index: trip-planner-front/node_modules/cssesc/package.json
===================================================================
--- trip-planner-front/node_modules/cssesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cssesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,43 @@
 {
-  "name": "cssesc",
-  "version": "3.0.0",
-  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
-  "homepage": "https://mths.be/cssesc",
-  "engines": {
-    "node": ">=4"
+  "_args": [
+    [
+      "cssesc@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssesc@3.0.0",
+  "_id": "cssesc@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+  "_location": "/cssesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssesc@3.0.0",
+    "name": "cssesc",
+    "escapedName": "cssesc",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
   },
-  "main": "cssesc.js",
-  "bin": "bin/cssesc",
-  "man": "man/cssesc.1",
-  "keywords": [
-    "css",
-    "escape",
-    "identifier",
-    "string",
-    "tool"
+  "_requiredBy": [
+    "/postcss-selector-parser"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Mathias Bynens",
     "url": "https://mathiasbynens.be/"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/cssesc.git"
+  "bin": {
+    "cssesc": "bin/cssesc"
   },
-  "bugs": "https://github.com/mathiasbynens/cssesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "cssesc.js",
-    "bin/",
-    "man/"
-  ],
-  "scripts": {
-    "build": "grunt template && babel cssesc.js -o cssesc.js",
-    "test": "mocha tests",
-    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/cssesc/issues"
   },
+  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -48,4 +50,37 @@
     "regenerate": "^1.2.1",
     "requirejs": "^2.1.16"
-  }
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "cssesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/cssesc",
+  "keywords": [
+    "css",
+    "escape",
+    "identifier",
+    "string",
+    "tool"
+  ],
+  "license": "MIT",
+  "main": "cssesc.js",
+  "man": [
+    "man/cssesc.1"
+  ],
+  "name": "cssesc",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mathiasbynens/cssesc.git"
+  },
+  "scripts": {
+    "build": "grunt template && babel cssesc.js -o cssesc.js",
+    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec",
+    "test": "mocha tests"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/cssnano-preset-default/package.json
===================================================================
--- trip-planner-front/node_modules/cssnano-preset-default/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cssnano-preset-default/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,40 @@
 {
-  "name": "cssnano-preset-default",
-  "version": "5.1.4",
-  "main": "dist/index.js",
-  "description": "Safe defaults for cssnano which require minimal configuration.",
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepare": "yarn build"
+  "_args": [
+    [
+      "cssnano-preset-default@5.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssnano-preset-default@5.1.4",
+  "_id": "cssnano-preset-default@5.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==",
+  "_location": "/cssnano-preset-default",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssnano-preset-default@5.1.4",
+    "name": "cssnano-preset-default",
+    "escapedName": "cssnano-preset-default",
+    "rawSpec": "5.1.4",
+    "saveSpec": null,
+    "fetchSpec": "5.1.4"
   },
-  "files": [
-    "LICENSE-MIT",
-    "dist"
+  "_requiredBy": [
+    "/cssnano"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz",
+  "_spec": "5.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "dependencies": {
     "css-declaration-sorter": "^6.0.3",
@@ -45,23 +68,32 @@
     "postcss-unique-selectors": "^5.0.1"
   },
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
+  "description": "Safe defaults for cssnano which require minimal configuration.",
+  "devDependencies": {
+    "postcss": "^8.2.15"
   },
   "engines": {
     "node": "^10 || ^12 || >=14.0"
   },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "files": [
+    "LICENSE-MIT",
+    "dist"
+  ],
+  "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735",
+  "homepage": "https://github.com/cssnano/cssnano",
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "cssnano-preset-default",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "rimraf dist",
+    "prepare": "yarn build"
+  },
+  "version": "5.1.4"
 }
Index: trip-planner-front/node_modules/cssnano-utils/package.json
===================================================================
--- trip-planner-front/node_modules/cssnano-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cssnano-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,46 @@
 {
-  "name": "cssnano-utils",
-  "version": "2.0.1",
-  "repository": "cssnano/cssnano",
-  "main": "dist/index.js",
-  "description": "Utility methods and plugin for cssnano projects",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "_args": [
+    [
+      "cssnano-utils@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssnano-utils@2.0.1",
+  "_id": "cssnano-utils@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==",
+  "_location": "/cssnano-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssnano-utils@2.0.1",
+    "name": "cssnano-utils",
+    "escapedName": "cssnano-utils",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
   },
-  "homepage": "https://github.com/cssnano/cssnano",
+  "_requiredBy": [
+    "/cssnano-preset-default",
+    "/postcss-merge-rules",
+    "/postcss-minify-gradients",
+    "/postcss-minify-params",
+    "/postcss-normalize-display-values",
+    "/postcss-normalize-repeat-style",
+    "/postcss-normalize-timing-functions",
+    "/postcss-ordered-values",
+    "/postcss-reduce-transforms"
+  ],
+  "_resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "bugs": {
     "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "description": "Utility methods and plugin for cssnano projects",
+  "devDependencies": {
+    "postcss": "^8.2.15"
   },
   "engines": {
@@ -20,11 +50,21 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "license": "MIT",
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "cssnano-utils",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/cssnano/package.json
===================================================================
--- trip-planner-front/node_modules/cssnano/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/cssnano/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,59 +1,91 @@
 {
+  "_args": [
+    [
+      "cssnano@5.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssnano@5.0.8",
+  "_id": "cssnano@5.0.8",
+  "_inBundle": false,
+  "_integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==",
+  "_location": "/cssnano",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssnano@5.0.8",
     "name": "cssnano",
-    "version": "5.0.8",
-    "description": "A modular minifier, built on top of the PostCSS ecosystem.",
-    "main": "dist/index.js",
-    "scripts": {
-        "bundle-size": "webpack --json --config src/__tests__/_webpack.config.js | webpack-bundle-size-analyzer",
-        "prebuild": "rimraf dist",
-        "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-        "prepare": "yarn build"
-    },
-    "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/cssnano"
-    },
-    "keywords": [
-        "css",
-        "compress",
-        "minify",
-        "optimise",
-        "optimisation",
-        "postcss",
-        "postcss-plugin"
-    ],
-    "license": "MIT",
-    "dependencies": {
-        "cssnano-preset-default": "^5.1.4",
-        "is-resolvable": "^1.1.0",
-        "lilconfig": "^2.0.3",
-        "yaml": "^1.10.2"
-    },
-    "homepage": "https://github.com/cssnano/cssnano",
-    "author": {
-        "name": "Ben Briggs",
-        "email": "beneb.info@gmail.com",
-        "url": "http://beneb.info"
-    },
-    "repository": "cssnano/cssnano",
-    "files": [
-        "dist",
-        "LICENSE-MIT",
-        "quickstart.js"
-    ],
-    "tonicExampleFilename": "quickstart.js",
-    "bugs": {
-        "url": "https://github.com/cssnano/cssnano/issues"
-    },
-    "engines": {
-        "node": "^10 || ^12 || >=14.0"
-    },
-    "devDependencies": {
-        "autoprefixer": "^10.2.0",
-        "postcss": "^8.2.15"
-    },
-    "peerDependencies": {
-        "postcss": "^8.2.15"
-    },
-    "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735"
+    "escapedName": "cssnano",
+    "rawSpec": "5.0.8",
+    "saveSpec": null,
+    "fetchSpec": "5.0.8"
+  },
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz",
+  "_spec": "5.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-preset-default": "^5.1.4",
+    "is-resolvable": "^1.1.0",
+    "lilconfig": "^2.0.3",
+    "yaml": "^1.10.2"
+  },
+  "description": "A modular minifier, built on top of the PostCSS ecosystem.",
+  "devDependencies": {
+    "autoprefixer": "^10.2.0",
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
+  "files": [
+    "dist",
+    "LICENSE-MIT",
+    "quickstart.js"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/cssnano"
+  },
+  "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735",
+  "homepage": "https://github.com/cssnano/cssnano",
+  "keywords": [
+    "css",
+    "compress",
+    "minify",
+    "optimise",
+    "optimisation",
+    "postcss",
+    "postcss-plugin"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "cssnano",
+  "peerDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "bundle-size": "webpack --json --config src/__tests__/_webpack.config.js | webpack-bundle-size-analyzer",
+    "prebuild": "rimraf dist",
+    "prepare": "yarn build"
+  },
+  "tonicExampleFilename": "quickstart.js",
+  "version": "5.0.8"
 }
Index: trip-planner-front/node_modules/csso/package.json
===================================================================
--- trip-planner-front/node_modules/csso/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/csso/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,47 +1,47 @@
 {
-  "name": "csso",
-  "version": "4.2.0",
-  "description": "CSS minifier with structural optimisations",
-  "homepage": "https://github.com/css/csso",
-  "author": "Sergey Kryzhanovsky <skryzhanovsky@ya.ru> (https://github.com/afelix)",
-  "maintainers": [
-    {
-      "name": "Roman Dvornov",
-      "email": "rdvornov@gmail.com",
-      "github-username": "lahmatiy"
-    }
+  "_args": [
+    [
+      "csso@4.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "license": "MIT",
-  "repository": "css/csso",
+  "_development": true,
+  "_from": "csso@4.2.0",
+  "_id": "csso@4.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+  "_location": "/csso",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "csso@4.2.0",
+    "name": "csso",
+    "escapedName": "csso",
+    "rawSpec": "4.2.0",
+    "saveSpec": null,
+    "fetchSpec": "4.2.0"
+  },
+  "_requiredBy": [
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+  "_spec": "4.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sergey Kryzhanovsky",
+    "email": "skryzhanovsky@ya.ru",
+    "url": "https://github.com/afelix"
+  },
+  "browser": {
+    "css-tree": "css-tree/dist/csstree.min.js"
+  },
   "bugs": {
     "url": "https://github.com/css/csso/issues"
-  },
-  "keywords": [
-    "css",
-    "compress",
-    "minifier",
-    "minify",
-    "optimise",
-    "optimisation",
-    "csstree"
-  ],
-  "main": "./lib/index",
-  "scripts": {
-    "test": "mocha --reporter dot",
-    "lint": "eslint lib test",
-    "lint-and-test": "npm run lint && npm test",
-    "build": "rollup --config && terser dist/csso.js --compress --mangle -o dist/csso.min.js",
-    "coverage": "nyc npm test",
-    "coveralls": "nyc report --reporter=text-lcov | coveralls",
-    "travis": "nyc npm run lint-and-test && npm run coveralls",
-    "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null",
-    "prepublishOnly": "npm run build"
   },
   "dependencies": {
     "css-tree": "^1.1.2"
   },
-  "browser": {
-    "css-tree": "css-tree/dist/csstree.min.js"
-  },
+  "description": "CSS minifier with structural optimisations",
   "devDependencies": {
     "@rollup/plugin-commonjs": "^11.0.1",
@@ -62,4 +62,39 @@
     "dist",
     "lib"
-  ]
+  ],
+  "homepage": "https://github.com/css/csso",
+  "keywords": [
+    "css",
+    "compress",
+    "minifier",
+    "minify",
+    "optimise",
+    "optimisation",
+    "csstree"
+  ],
+  "license": "MIT",
+  "main": "./lib/index",
+  "maintainers": [
+    {
+      "name": "Roman Dvornov",
+      "email": "rdvornov@gmail.com"
+    }
+  ],
+  "name": "csso",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css/csso.git"
+  },
+  "scripts": {
+    "build": "rollup --config && terser dist/csso.js --compress --mangle -o dist/csso.min.js",
+    "coverage": "nyc npm test",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "hydrogen": "node --trace-hydrogen --trace-phase=Z --trace-deopt --code-comments --hydrogen-track-positions --redirect-code-traces --redirect-code-traces-to=code.asm --trace_hydrogen_file=code.cfg --print-opt-code bin/csso --stat -o /dev/null",
+    "lint": "eslint lib test",
+    "lint-and-test": "npm run lint && npm test",
+    "prepublishOnly": "npm run build",
+    "test": "mocha --reporter dot",
+    "travis": "nyc npm run lint-and-test && npm run coveralls"
+  },
+  "version": "4.2.0"
 }
Index: trip-planner-front/node_modules/custom-event/package.json
===================================================================
--- trip-planner-front/node_modules/custom-event/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/custom-event/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,45 @@
 {
-  "name": "custom-event",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "custom-event@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "custom-event@1.0.1",
+  "_id": "custom-event@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+  "_location": "/custom-event",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "custom-event@1.0.1",
+    "name": "custom-event",
+    "escapedName": "custom-event",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/dom-serialize"
+  ],
+  "_resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
+  },
+  "bugs": {
+    "url": "https://github.com/webmodules/custom-event/issues"
+  },
   "description": "Cross-browser `CustomEvent` constructor",
-  "main": "index.js",
-  "scripts": {
-    "test": "make test"
+  "devDependencies": {
+    "zuul": "~1.16.3"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/webmodules/custom-event.git"
-  },
+  "homepage": "https://github.com/webmodules/custom-event",
   "keywords": [
     "dom",
@@ -19,12 +50,14 @@
     "constructor"
   ],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/webmodules/custom-event/issues"
+  "main": "index.js",
+  "name": "custom-event",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/webmodules/custom-event.git"
   },
-  "homepage": "https://github.com/webmodules/custom-event",
-  "devDependencies": {
-    "zuul": "~1.16.3"
-  }
+  "scripts": {
+    "test": "make test"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/dashdash/package.json
===================================================================
--- trip-planner-front/node_modules/dashdash/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dashdash/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,71 @@
 {
+  "_args": [
+    [
+      "dashdash@1.14.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dashdash@1.14.1",
+  "_id": "dashdash@1.14.1",
+  "_inBundle": false,
+  "_integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+  "_location": "/dashdash",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dashdash@1.14.1",
     "name": "dashdash",
-    "description": "A light, featureful and explicit option parsing library.",
-    "version": "1.14.1",
-    "author": "Trent Mick <trentm@gmail.com> (http://trentm.com)",
-    "keywords": ["option", "parser", "parsing", "cli", "command", "args",
-        "bash", "completion"],
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/trentm/node-dashdash.git"
-    },
-    "main": "./lib/dashdash.js",
-    "dependencies": {
-        "assert-plus": "^1.0.0"
-    },
-    "devDependencies": {
-        "nodeunit": "0.9.x"
-    },
-    "engines": {
-        "node": ">=0.10"
-    },
-    "scripts": {
-        "test": "nodeunit test/*.test.js"
-    },
-    "license": "MIT"
+    "escapedName": "dashdash",
+    "rawSpec": "1.14.1",
+    "saveSpec": null,
+    "fetchSpec": "1.14.1"
+  },
+  "_requiredBy": [
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+  "_spec": "1.14.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Trent Mick",
+    "email": "trentm@gmail.com",
+    "url": "http://trentm.com"
+  },
+  "bugs": {
+    "url": "https://github.com/trentm/node-dashdash/issues"
+  },
+  "dependencies": {
+    "assert-plus": "^1.0.0"
+  },
+  "description": "A light, featureful and explicit option parsing library.",
+  "devDependencies": {
+    "nodeunit": "0.9.x"
+  },
+  "engines": {
+    "node": ">=0.10"
+  },
+  "homepage": "https://github.com/trentm/node-dashdash#readme",
+  "keywords": [
+    "option",
+    "parser",
+    "parsing",
+    "cli",
+    "command",
+    "args",
+    "bash",
+    "completion"
+  ],
+  "license": "MIT",
+  "main": "./lib/dashdash.js",
+  "name": "dashdash",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/trentm/node-dashdash.git"
+  },
+  "scripts": {
+    "test": "nodeunit test/*.test.js"
+  },
+  "version": "1.14.1"
 }
Index: trip-planner-front/node_modules/date-format/package.json
===================================================================
--- trip-planner-front/node_modules/date-format/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/date-format/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,62 @@
 {
-  "name": "date-format",
-  "version": "3.0.0",
+  "_args": [
+    [
+      "date-format@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "date-format@3.0.0",
+  "_id": "date-format@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==",
+  "_location": "/date-format",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "date-format@3.0.0",
+    "name": "date-format",
+    "escapedName": "date-format",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/log4js"
+  ],
+  "_resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Gareth Jones",
+    "email": "gareth.nomiddlename@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/nomiddlename/date-format/issues"
+  },
   "description": "Formatting Date objects as strings since 2013",
-  "main": "lib/index.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/nomiddlename/date-format.git"
+  "devDependencies": {
+    "eslint": "^5.16.0",
+    "eslint-plugin-mocha": "^5.3.0",
+    "mocha": "^5.2.0",
+    "should": "^13.2.3"
   },
   "engines": {
     "node": ">=4.0"
+  },
+  "gitHead": "bf59015ab6c9e86454b179374f29debbdb403522",
+  "homepage": "https://github.com/nomiddlename/date-format#readme",
+  "keywords": [
+    "date",
+    "format",
+    "string"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "date-format",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/nomiddlename/date-format.git"
   },
   "scripts": {
@@ -16,18 +65,4 @@
     "test": "mocha"
   },
-  "keywords": [
-    "date",
-    "format",
-    "string"
-  ],
-  "author": "Gareth Jones <gareth.nomiddlename@gmail.com>",
-  "license": "MIT",
-  "readmeFilename": "README.md",
-  "gitHead": "bf59015ab6c9e86454b179374f29debbdb403522",
-  "devDependencies": {
-    "eslint": "^5.16.0",
-    "eslint-plugin-mocha": "^5.3.0",
-    "mocha": "^5.2.0",
-    "should": "^13.2.3"
-  }
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,76 @@
 {
-  "name": "debug",
-  "version": "4.3.2",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@4.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@4.3.2",
+  "_id": "debug@4.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+  "_location": "/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@4.3.2",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "4.3.2",
+    "saveSpec": null,
+    "fetchSpec": "4.3.2"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/@angular/cli",
+    "/@babel/core",
+    "/@babel/helper-define-polyfill-provider",
+    "/@babel/traverse",
+    "/agent-base",
+    "/agentkeepalive",
+    "/engine.io",
+    "/http-proxy-agent",
+    "/https-proxy-agent",
+    "/istanbul-lib-source-maps",
+    "/log4js",
+    "/socket.io",
+    "/socket.io-parser",
+    "/socks-proxy-agent",
+    "/spdy",
+    "/spdy-transport",
+    "/streamroller",
+    "/webpack-dev-server"
   ],
-  "files": [
-    "src",
-    "LICENSE",
-    "README.md"
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+  "_spec": "4.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "contributors": [
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    },
+    {
+      "name": "Josh Junon",
+      "email": "josh@junon.me"
+    }
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>",
-    "Josh Junon <josh@junon.me>"
-  ],
-  "license": "MIT",
-  "scripts": {
-    "lint": "xo",
-    "test": "npm run test:node && npm run test:browser && npm run lint",
-    "test:node": "istanbul cover _mocha -- test.js",
-    "test:browser": "karma start --single-run",
-    "test:coverage": "cat ./coverage/lcov.info | coveralls"
-  },
   "dependencies": {
     "ms": "2.1.2"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "brfs": "^2.0.1",
@@ -47,4 +86,21 @@
     "xo": "^0.23.0"
   },
+  "engines": {
+    "node": ">=6.0"
+  },
+  "files": [
+    "src",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
+  "main": "./src/index.js",
+  "name": "debug",
   "peerDependenciesMeta": {
     "supports-color": {
@@ -52,8 +108,15 @@
     }
   },
-  "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "engines": {
-    "node": ">=6.0"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "scripts": {
+    "lint": "xo",
+    "test": "npm run test:node && npm run test:browser && npm run lint",
+    "test:browser": "karma start --single-run",
+    "test:coverage": "cat ./coverage/lcov.info | coveralls",
+    "test:node": "istanbul cover _mocha -- test.js"
+  },
+  "version": "4.3.2"
 }
Index: trip-planner-front/node_modules/decamelize/package.json
===================================================================
--- trip-planner-front/node_modules/decamelize/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/decamelize/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "decamelize",
-  "version": "1.2.0",
-  "description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow",
-  "license": "MIT",
-  "repository": "sindresorhus/decamelize",
+  "_args": [
+    [
+      "decamelize@1.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "decamelize@1.2.0",
+  "_id": "decamelize@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+  "_location": "/decamelize",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "decamelize@1.2.0",
+    "name": "decamelize",
+    "escapedName": "decamelize",
+    "rawSpec": "1.2.0",
+    "saveSpec": null,
+    "fetchSpec": "1.2.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/yargs-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+  "_spec": "1.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/decamelize/issues"
+  },
+  "description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/decamelize#readme",
   "keywords": [
     "decamelize",
@@ -32,7 +62,13 @@
     "convert"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "decamelize",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/decamelize.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.2.0"
 }
Index: trip-planner-front/node_modules/decode-uri-component/package.json
===================================================================
--- trip-planner-front/node_modules/decode-uri-component/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/decode-uri-component/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,34 @@
 {
-  "name": "decode-uri-component",
-  "version": "0.2.0",
-  "description": "A better decodeURIComponent",
-  "license": "MIT",
-  "repository": "SamVerschueren/decode-uri-component",
+  "_args": [
+    [
+      "decode-uri-component@0.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "decode-uri-component@0.2.0",
+  "_id": "decode-uri-component@0.2.0",
+  "_inBundle": false,
+  "_integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+  "_location": "/decode-uri-component",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "decode-uri-component@0.2.0",
+    "name": "decode-uri-component",
+    "escapedName": "decode-uri-component",
+    "rawSpec": "0.2.0",
+    "saveSpec": null,
+    "fetchSpec": "0.2.0"
+  },
+  "_requiredBy": [
+    "/css-parse/source-map-resolve",
+    "/snapdragon/source-map-resolve",
+    "/source-map-resolve"
+  ],
+  "_resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+  "_spec": "0.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sam Verschueren",
@@ -10,14 +36,21 @@
     "url": "github.com/SamVerschueren"
   },
+  "bugs": {
+    "url": "https://github.com/SamVerschueren/decode-uri-component/issues"
+  },
+  "description": "A better decodeURIComponent",
+  "devDependencies": {
+    "ava": "^0.17.0",
+    "coveralls": "^2.13.1",
+    "nyc": "^10.3.2",
+    "xo": "^0.16.0"
+  },
   "engines": {
     "node": ">=0.10"
-  },
-  "scripts": {
-    "test": "xo && nyc ava",
-    "coveralls": "nyc report --reporter=text-lcov | coveralls"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/SamVerschueren/decode-uri-component#readme",
   "keywords": [
     "decode",
@@ -29,9 +62,14 @@
     "url"
   ],
-  "devDependencies": {
-    "ava": "^0.17.0",
-    "coveralls": "^2.13.1",
-    "nyc": "^10.3.2",
-    "xo": "^0.16.0"
-  }
+  "license": "MIT",
+  "name": "decode-uri-component",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/SamVerschueren/decode-uri-component.git"
+  },
+  "scripts": {
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "test": "xo && nyc ava"
+  },
+  "version": "0.2.0"
 }
Index: trip-planner-front/node_modules/deep-equal/package.json
===================================================================
--- trip-planner-front/node_modules/deep-equal/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/deep-equal/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,46 @@
 {
-  "name": "deep-equal",
-  "version": "1.1.1",
-  "description": "node's assert.deepEqual algorithm",
-  "main": "index.js",
-  "directories": {
-    "lib": ".",
-    "example": "example",
-    "test": "test"
+  "_args": [
+    [
+      "deep-equal@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "deep-equal@1.1.1",
+  "_id": "deep-equal@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+  "_location": "/deep-equal",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "deep-equal@1.1.1",
+    "name": "deep-equal",
+    "escapedName": "deep-equal",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
   },
-  "scripts": {
-    "prepublish": "safe-publish-latest",
-    "pretest": "npm run lint",
-    "lint": "eslint .",
-    "tests-only": "tape test/*",
-    "test": "npm run tests-only",
-    "posttest": "npx aud",
-    "version": "auto-changelog && git add CHANGELOG.md",
-    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-deep-equal/issues"
   },
   "dependencies": {
@@ -27,4 +52,5 @@
     "regexp.prototype.flags": "^1.2.0"
   },
+  "description": "node's assert.deepEqual algorithm",
   "devDependencies": {
     "@ljharb/eslint-config": "^15.0.1",
@@ -34,8 +60,13 @@
     "tape": "^4.11.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/substack/node-deep-equal.git"
+  "directories": {
+    "lib": ".",
+    "example": "example",
+    "test": "test"
   },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/substack/node-deep-equal#readme",
   "keywords": [
     "equality",
@@ -43,13 +74,21 @@
     "compare"
   ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "deep-equal",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/substack/node-deep-equal.git"
   },
-  "funding": {
-    "url": "https://github.com/sponsors/ljharb"
+  "scripts": {
+    "lint": "eslint .",
+    "posttest": "npx aud",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only",
+    "tests-only": "tape test/*",
+    "version": "auto-changelog && git add CHANGELOG.md"
   },
-  "license": "MIT",
   "testling": {
     "files": "test/*.js",
@@ -78,10 +117,4 @@
     }
   },
-  "auto-changelog": {
-    "output": "CHANGELOG.md",
-    "template": "keepachangelog",
-    "unreleased": false,
-    "commitLimit": false,
-    "backfillLimit": false
-  }
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/default-gateway/package.json
===================================================================
--- trip-planner-front/node_modules/default-gateway/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/default-gateway/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,38 @@
 {
-  "name": "default-gateway",
-  "version": "4.2.0",
-  "description": "Get the default network gateway, cross-platform.",
-  "author": "silverwind <me@silverwind.io>",
-  "repository": "silverwind/default-gateway",
-  "license": "BSD-2-Clause",
-  "scripts": {
-    "test": "eslint *.js && node --pending-deprecation --trace-deprecation --throw-deprecation --trace-warnings test.js"
+  "_args": [
+    [
+      "default-gateway@4.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "default-gateway@4.2.0",
+  "_id": "default-gateway@4.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+  "_location": "/default-gateway",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "default-gateway@4.2.0",
+    "name": "default-gateway",
+    "escapedName": "default-gateway",
+    "rawSpec": "4.2.0",
+    "saveSpec": null,
+    "fetchSpec": "4.2.0"
   },
-  "engines": {
-    "node": ">=6"
+  "_requiredBy": [
+    "/internal-ip"
+  ],
+  "_resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+  "_spec": "4.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "silverwind",
+    "email": "me@silverwind.io"
+  },
+  "bugs": {
+    "url": "https://github.com/silverwind/default-gateway/issues"
   },
   "dependencies": {
@@ -16,4 +40,5 @@
     "ip-regex": "^2.1.0"
   },
+  "description": "Get the default network gateway, cross-platform.",
   "devDependencies": {
     "eslint": "^5.15.1",
@@ -21,4 +46,7 @@
     "updates": "^7.2.0",
     "ver": "4.0.1"
+  },
+  "engines": {
+    "node": ">=6"
   },
   "files": [
@@ -33,4 +61,5 @@
     "ibmi.js"
   ],
+  "homepage": "https://github.com/silverwind/default-gateway#readme",
   "keywords": [
     "default gateway",
@@ -40,4 +69,14 @@
     "routing",
     "route"
-  ]
+  ],
+  "license": "BSD-2-Clause",
+  "name": "default-gateway",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/silverwind/default-gateway.git"
+  },
+  "scripts": {
+    "test": "eslint *.js && node --pending-deprecation --trace-deprecation --throw-deprecation --trace-warnings test.js"
+  },
+  "version": "4.2.0"
 }
Index: trip-planner-front/node_modules/defaults/package.json
===================================================================
--- trip-planner-front/node_modules/defaults/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/defaults/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,61 @@
 {
+  "_args": [
+    [
+      "defaults@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "defaults@1.0.3",
+  "_id": "defaults@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+  "_location": "/defaults",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "defaults@1.0.3",
+    "name": "defaults",
+    "escapedName": "defaults",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/wcwidth"
+  ],
+  "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Elijah Insua",
+    "email": "tmpvar@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/tmpvar/defaults/issues"
+  },
+  "dependencies": {
+    "clone": "^1.0.2"
+  },
+  "description": "merge single level defaults over a config object",
+  "devDependencies": {
+    "tap": "^2.0.0"
+  },
+  "homepage": "https://github.com/tmpvar/defaults#readme",
+  "keywords": [
+    "config",
+    "defaults"
+  ],
+  "license": "MIT",
+  "main": "index.js",
   "name": "defaults",
-  "version": "1.0.3",
-  "description": "merge single level defaults over a config object",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test.js"
-  },
   "repository": {
     "type": "git",
     "url": "git://github.com/tmpvar/defaults.git"
   },
-  "keywords": [
-    "config",
-    "defaults"
-  ],
-  "author": "Elijah Insua <tmpvar@gmail.com>",
-  "license": "MIT",
-  "readmeFilename": "README.md",
-  "dependencies": {
-    "clone": "^1.0.2"
+  "scripts": {
+    "test": "node test.js"
   },
-  "devDependencies": {
-    "tap": "^2.0.0"
-  }
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/define-lazy-prop/package.json
===================================================================
--- trip-planner-front/node_modules/define-lazy-prop/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/define-lazy-prop/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,84 @@
 {
-	"name": "define-lazy-prop",
-	"version": "2.0.0",
-	"description": "Define a lazily evaluated property on an object",
-	"license": "MIT",
-	"repository": "sindresorhus/define-lazy-prop",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"lazy",
-		"property",
-		"properties",
-		"prop",
-		"define",
-		"object",
-		"value",
-		"lazily",
-		"laziness",
-		"evaluation",
-		"eval",
-		"execute",
-		"getter",
-		"function",
-		"fn",
-		"memoize",
-		"cache",
-		"defer",
-		"deferred"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "define-lazy-prop@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-lazy-prop@2.0.0",
+  "_id": "define-lazy-prop@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+  "_location": "/define-lazy-prop",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-lazy-prop@2.0.0",
+    "name": "define-lazy-prop",
+    "escapedName": "define-lazy-prop",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/open"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/define-lazy-prop/issues"
+  },
+  "description": "Define a lazily evaluated property on an object",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/define-lazy-prop#readme",
+  "keywords": [
+    "lazy",
+    "property",
+    "properties",
+    "prop",
+    "define",
+    "object",
+    "value",
+    "lazily",
+    "laziness",
+    "evaluation",
+    "eval",
+    "execute",
+    "getter",
+    "function",
+    "fn",
+    "memoize",
+    "cache",
+    "defer",
+    "deferred"
+  ],
+  "license": "MIT",
+  "name": "define-lazy-prop",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/define-lazy-prop.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/define-properties/package.json
===================================================================
--- trip-planner-front/node_modules/define-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/define-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,102 @@
 {
-	"name": "define-properties",
-	"version": "1.1.3",
-	"author": "Jordan Harband",
-	"description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"pretest": "npm run --silent lint",
-		"test": "npm run --silent tests-only",
-		"posttest": "npm run --silent security",
-		"tests-only": "node test/index.js",
-		"coverage": "covert test/*.js",
-		"coverage-quiet": "covert test/*.js --quiet",
-		"lint": "npm run --silent jscs && npm run --silent eslint",
-		"jscs": "jscs test/*.js *.js",
-		"eslint": "eslint test/*.js *.js",
-		"security": "nsp check"
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/ljharb/define-properties.git"
-	},
-	"keywords": [
-		"Object.defineProperty",
-		"Object.defineProperties",
-		"object",
-		"property descriptor",
-		"descriptor",
-		"define",
-		"ES5"
-	],
-	"dependencies": {
-		"object-keys": "^1.0.12"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^13.0.0",
-		"covert": "^1.1.0",
-		"eslint": "^5.3.0",
-		"jscs": "^3.0.7",
-		"nsp": "^3.2.1",
-		"tape": "^4.9.0"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	}
+  "_args": [
+    [
+      "define-properties@1.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-properties@1.1.3",
+  "_id": "define-properties@1.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+  "_location": "/define-properties",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-properties@1.1.3",
+    "name": "define-properties",
+    "escapedName": "define-properties",
+    "rawSpec": "1.1.3",
+    "saveSpec": null,
+    "fetchSpec": "1.1.3"
+  },
+  "_requiredBy": [
+    "/object-is",
+    "/object.assign",
+    "/regexp.prototype.flags"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+  "_spec": "1.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband"
+  },
+  "bugs": {
+    "url": "https://github.com/ljharb/define-properties/issues"
+  },
+  "dependencies": {
+    "object-keys": "^1.0.12"
+  },
+  "description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^13.0.0",
+    "covert": "^1.1.0",
+    "eslint": "^5.3.0",
+    "jscs": "^3.0.7",
+    "nsp": "^3.2.1",
+    "tape": "^4.9.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "homepage": "https://github.com/ljharb/define-properties#readme",
+  "keywords": [
+    "Object.defineProperty",
+    "Object.defineProperties",
+    "object",
+    "property descriptor",
+    "descriptor",
+    "define",
+    "ES5"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-properties",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/ljharb/define-properties.git"
+  },
+  "scripts": {
+    "coverage": "covert test/*.js",
+    "coverage-quiet": "covert test/*.js --quiet",
+    "eslint": "eslint test/*.js *.js",
+    "jscs": "jscs test/*.js *.js",
+    "lint": "npm run --silent jscs && npm run --silent eslint",
+    "posttest": "npm run --silent security",
+    "pretest": "npm run --silent lint",
+    "security": "nsp check",
+    "test": "npm run --silent tests-only",
+    "tests-only": "node test/index.js"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.1.3"
 }
Index: trip-planner-front/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,68 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.",
-  "version": "2.0.2",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "define-property@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/define-property",
+  "_development": true,
+  "_from": "define-property@2.0.2",
+  "_id": "define-property@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+  "_location": "/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@2.0.2",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/to-regex",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "is-descriptor": "^1.0.2",
     "isobject": "^3.0.1"
   },
+  "description": "Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -44,4 +77,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -64,4 +107,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/del/node_modules/.bin/rimraf
===================================================================
--- trip-planner-front/node_modules/del/node_modules/.bin/rimraf	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/.bin/rimraf	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../rimraf/bin.js" "$@"
+  "$basedir/node"  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../rimraf/bin.js" "$@"
+  node  "$basedir/../rimraf/bin.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/del/node_modules/.bin/rimraf.cmd
===================================================================
--- trip-planner-front/node_modules/del/node_modules/.bin/rimraf.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/.bin/rimraf.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\rimraf\bin.js" %*
+"%_prog%"  "%dp0%\..\rimraf\bin.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/del/node_modules/.bin/rimraf.ps1
===================================================================
--- trip-planner-front/node_modules/del/node_modules/.bin/rimraf.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/.bin/rimraf.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../rimraf/bin.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../rimraf/bin.js" $args
-  } else {
-    & "node$exe"  "$basedir/../rimraf/bin.js" $args
-  }
+  & "node$exe"  "$basedir/../rimraf/bin.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/del/node_modules/array-union/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/array-union/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/array-union/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "array-union",
-  "version": "1.0.2",
-  "description": "Create an array of unique values, in order, from the input arrays",
-  "license": "MIT",
-  "repository": "sindresorhus/array-union",
+  "_args": [
+    [
+      "array-union@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-union@1.0.2",
+  "_id": "array-union@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+  "_location": "/del/array-union",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-union@1.0.2",
+    "name": "array-union",
+    "escapedName": "array-union",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/del/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,22 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/array-union/issues"
+  },
+  "dependencies": {
+    "array-uniq": "^1.0.1"
+  },
+  "description": "Create an array of unique values, in order, from the input arrays",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/array-union#readme",
   "keywords": [
     "array",
@@ -31,10 +64,13 @@
     "merge"
   ],
-  "dependencies": {
-    "array-uniq": "^1.0.1"
+  "license": "MIT",
+  "name": "array-union",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/array-union.git"
   },
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/del/node_modules/globby/node_modules/pify/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/globby/node_modules/pify/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/globby/node_modules/pify/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "pify",
-  "version": "2.3.0",
-  "description": "Promisify a callback-style function",
-  "license": "MIT",
-  "repository": "sindresorhus/pify",
+  "_args": [
+    [
+      "pify@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pify@2.3.0",
+  "_id": "pify@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+  "_location": "/del/globby/pify",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pify@2.3.0",
+    "name": "pify",
+    "escapedName": "pify",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/del/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,14 +34,21 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pify/issues"
+  },
+  "description": "Promisify a callback-style function",
+  "devDependencies": {
+    "ava": "*",
+    "pinkie-promise": "^1.0.0",
+    "v8-natives": "0.0.2",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava && npm run optimization-test",
-    "optimization-test": "node --allow-natives-syntax optimization-test.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/pify#readme",
   "keywords": [
     "promise",
@@ -40,9 +71,14 @@
     "es2015"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "pinkie-promise": "^1.0.0",
-    "v8-natives": "0.0.2",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "pify",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pify.git"
+  },
+  "scripts": {
+    "optimization-test": "node --allow-natives-syntax optimization-test.js",
+    "test": "xo && ava && npm run optimization-test"
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/del/node_modules/globby/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/globby/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/globby/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,63 @@
 {
-  "name": "globby",
-  "version": "6.1.0",
+  "_args": [
+    [
+      "globby@6.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "globby@6.1.0",
+  "_id": "globby@6.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+  "_location": "/del/globby",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "globby@6.1.0",
+    "name": "globby",
+    "escapedName": "globby",
+    "rawSpec": "6.1.0",
+    "saveSpec": null,
+    "fetchSpec": "6.1.0"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+  "_spec": "6.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/globby/issues"
+  },
+  "dependencies": {
+    "array-union": "^1.0.1",
+    "glob": "^7.0.3",
+    "object-assign": "^4.0.1",
+    "pify": "^2.0.0",
+    "pinkie-promise": "^2.0.0"
+  },
   "description": "Extends `glob` with support for multiple patterns and exposes a Promise API",
-  "license": "MIT",
-  "repository": "sindresorhus/globby",
-  "author": {
-    "email": "sindresorhus@gmail.com",
-    "name": "Sindre Sorhus",
-    "url": "sindresorhus.com"
+  "devDependencies": {
+    "ava": "*",
+    "glob-stream": "github:gulpjs/glob-stream#master",
+    "globby": "github:sindresorhus/globby#master",
+    "matcha": "^0.7.0",
+    "rimraf": "^2.2.8",
+    "xo": "^0.16.0"
   },
   "engines": {
     "node": ">=0.10.0"
   },
-  "scripts": {
-    "bench": "npm update glob-stream && matcha bench.js",
-    "test": "xo && ava"
-  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/globby#readme",
   "keywords": [
     "all",
@@ -52,18 +92,14 @@
     "promise"
   ],
-  "dependencies": {
-    "array-union": "^1.0.1",
-    "glob": "^7.0.3",
-    "object-assign": "^4.0.1",
-    "pify": "^2.0.0",
-    "pinkie-promise": "^2.0.0"
+  "license": "MIT",
+  "name": "globby",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/globby.git"
   },
-  "devDependencies": {
-    "ava": "*",
-    "glob-stream": "gulpjs/glob-stream#master",
-    "globby": "sindresorhus/globby#master",
-    "matcha": "^0.7.0",
-    "rimraf": "^2.2.8",
-    "xo": "^0.16.0"
-  }
+  "scripts": {
+    "bench": "npm update glob-stream && matcha bench.js",
+    "test": "xo && ava"
+  },
+  "version": "6.1.0"
 }
Index: trip-planner-front/node_modules/del/node_modules/p-map/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/p-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/p-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,49 +1,85 @@
 {
-	"name": "p-map",
-	"version": "2.1.0",
-	"description": "Map over promises concurrently",
-	"license": "MIT",
-	"repository": "sindresorhus/p-map",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"map",
-		"resolved",
-		"wait",
-		"collection",
-		"iterable",
-		"iterator",
-		"race",
-		"fulfilled",
-		"async",
-		"await",
-		"promises",
-		"concurrently",
-		"concurrency",
-		"parallel",
-		"bluebird"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"delay": "^4.1.0",
-		"in-range": "^1.0.0",
-		"random-int": "^1.0.0",
-		"time-span": "^3.1.0",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-map@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-map@2.1.0",
+  "_id": "p-map@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+  "_location": "/del/p-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-map@2.1.0",
+    "name": "p-map",
+    "escapedName": "p-map",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-map/issues"
+  },
+  "description": "Map over promises concurrently",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "delay": "^4.1.0",
+    "in-range": "^1.0.0",
+    "random-int": "^1.0.0",
+    "time-span": "^3.1.0",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-map#readme",
+  "keywords": [
+    "promise",
+    "map",
+    "resolved",
+    "wait",
+    "collection",
+    "iterable",
+    "iterator",
+    "race",
+    "fulfilled",
+    "async",
+    "await",
+    "promises",
+    "concurrently",
+    "concurrency",
+    "parallel",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-map",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-map.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/del/node_modules/pify/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/pify/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/pify/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,87 @@
 {
-	"name": "pify",
-	"version": "4.0.1",
-	"description": "Promisify a callback-style function",
-	"license": "MIT",
-	"repository": "sindresorhus/pify",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava",
-		"optimization-test": "node --allow-natives-syntax optimization-test.js"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"promise",
-		"promises",
-		"promisify",
-		"all",
-		"denodify",
-		"denodeify",
-		"callback",
-		"cb",
-		"node",
-		"then",
-		"thenify",
-		"convert",
-		"transform",
-		"wrap",
-		"wrapper",
-		"bind",
-		"to",
-		"async",
-		"await",
-		"es2015",
-		"bluebird"
-	],
-	"devDependencies": {
-		"ava": "^0.25.0",
-		"pinkie-promise": "^2.0.0",
-		"v8-natives": "^1.1.0",
-		"xo": "^0.23.0"
-	}
+  "_args": [
+    [
+      "pify@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pify@4.0.1",
+  "_id": "pify@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+  "_location": "/del/pify",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pify@4.0.1",
+    "name": "pify",
+    "escapedName": "pify",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pify/issues"
+  },
+  "description": "Promisify a callback-style function",
+  "devDependencies": {
+    "ava": "^0.25.0",
+    "pinkie-promise": "^2.0.0",
+    "v8-natives": "^1.1.0",
+    "xo": "^0.23.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/pify#readme",
+  "keywords": [
+    "promise",
+    "promises",
+    "promisify",
+    "all",
+    "denodify",
+    "denodeify",
+    "callback",
+    "cb",
+    "node",
+    "then",
+    "thenify",
+    "convert",
+    "transform",
+    "wrap",
+    "wrapper",
+    "bind",
+    "to",
+    "async",
+    "await",
+    "es2015",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "pify",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pify.git"
+  },
+  "scripts": {
+    "optimization-test": "node --allow-natives-syntax optimization-test.js",
+    "test": "xo && ava"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/del/node_modules/rimraf/package.json
===================================================================
--- trip-planner-front/node_modules/del/node_modules/rimraf/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/node_modules/rimraf/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,50 @@
 {
-  "name": "rimraf",
-  "version": "2.7.1",
-  "main": "rimraf.js",
-  "description": "A deep deletion module for node (like `rm -rf`)",
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
-  "repository": "git://github.com/isaacs/rimraf.git",
-  "scripts": {
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags",
-    "test": "tap test/*.js"
+  "_args": [
+    [
+      "rimraf@2.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "rimraf@2.7.1",
+  "_id": "rimraf@2.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+  "_location": "/del/rimraf",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "rimraf@2.7.1",
+    "name": "rimraf",
+    "escapedName": "rimraf",
+    "rawSpec": "2.7.1",
+    "saveSpec": null,
+    "fetchSpec": "2.7.1"
   },
-  "bin": "./bin.js",
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+  "_spec": "2.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bin": {
+    "rimraf": "bin.js"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/rimraf/issues"
+  },
   "dependencies": {
     "glob": "^7.1.3"
+  },
+  "description": "A deep deletion module for node (like `rm -rf`)",
+  "devDependencies": {
+    "mkdirp": "^0.5.1",
+    "tap": "^12.1.1"
   },
   "files": [
@@ -23,7 +54,18 @@
     "rimraf.js"
   ],
-  "devDependencies": {
-    "mkdirp": "^0.5.1",
-    "tap": "^12.1.1"
-  }
+  "homepage": "https://github.com/isaacs/rimraf#readme",
+  "license": "ISC",
+  "main": "rimraf.js",
+  "name": "rimraf",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/rimraf.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js"
+  },
+  "version": "2.7.1"
 }
Index: trip-planner-front/node_modules/del/package.json
===================================================================
--- trip-planner-front/node_modules/del/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/del/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,64 +1,105 @@
 {
-	"name": "del",
-	"version": "4.1.1",
-	"description": "Delete files and folders",
-	"license": "MIT",
-	"repository": "sindresorhus/del",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"delete",
-		"files",
-		"folders",
-		"directories",
-		"del",
-		"remove",
-		"destroy",
-		"trash",
-		"unlink",
-		"clean",
-		"cleaning",
-		"cleanup",
-		"rm",
-		"rmrf",
-		"rimraf",
-		"rmdir",
-		"glob",
-		"gulpfriendly",
-		"file",
-		"folder",
-		"directory",
-		"dir",
-		"fs",
-		"filesystem"
-	],
-	"dependencies": {
-		"@types/glob": "^7.1.1",
-		"globby": "^6.1.0",
-		"is-path-cwd": "^2.0.0",
-		"is-path-in-cwd": "^2.0.0",
-		"p-map": "^2.0.0",
-		"pify": "^4.0.1",
-		"rimraf": "^2.6.3"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"make-dir": "^2.1.0",
-		"tempy": "^0.2.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "del@4.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "del@4.1.1",
+  "_id": "del@4.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+  "_location": "/del",
+  "_phantomChildren": {
+    "array-uniq": "1.0.3",
+    "glob": "7.1.7",
+    "object-assign": "4.1.1",
+    "pinkie-promise": "2.0.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "del@4.1.1",
+    "name": "del",
+    "escapedName": "del",
+    "rawSpec": "4.1.1",
+    "saveSpec": null,
+    "fetchSpec": "4.1.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+  "_spec": "4.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/del/issues"
+  },
+  "dependencies": {
+    "@types/glob": "^7.1.1",
+    "globby": "^6.1.0",
+    "is-path-cwd": "^2.0.0",
+    "is-path-in-cwd": "^2.0.0",
+    "p-map": "^2.0.0",
+    "pify": "^4.0.1",
+    "rimraf": "^2.6.3"
+  },
+  "description": "Delete files and folders",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "make-dir": "^2.1.0",
+    "tempy": "^0.2.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/del#readme",
+  "keywords": [
+    "delete",
+    "files",
+    "folders",
+    "directories",
+    "del",
+    "remove",
+    "destroy",
+    "trash",
+    "unlink",
+    "clean",
+    "cleaning",
+    "cleanup",
+    "rm",
+    "rmrf",
+    "rimraf",
+    "rmdir",
+    "glob",
+    "gulpfriendly",
+    "file",
+    "folder",
+    "directory",
+    "dir",
+    "fs",
+    "filesystem"
+  ],
+  "license": "MIT",
+  "name": "del",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/del.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.1.1"
 }
Index: trip-planner-front/node_modules/delayed-stream/package.json
===================================================================
--- trip-planner-front/node_modules/delayed-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/delayed-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,66 @@
 {
-  "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
+  "_args": [
+    [
+      "delayed-stream@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "delayed-stream@1.0.0",
+  "_id": "delayed-stream@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+  "_location": "/delayed-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "delayed-stream@1.0.0",
+    "name": "delayed-stream",
+    "escapedName": "delayed-stream",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/combined-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Geisendörfer",
+    "email": "felix@debuggable.com",
+    "url": "http://debuggable.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/felixge/node-delayed-stream/issues"
+  },
   "contributors": [
-    "Mike Atkins <apeherder@gmail.com>"
+    {
+      "name": "Mike Atkins",
+      "email": "apeherder@gmail.com"
+    }
   ],
+  "dependencies": {},
+  "description": "Buffers events from a stream until you are ready to handle them.",
+  "devDependencies": {
+    "fake": "0.2.0",
+    "far": "0.0.1"
+  },
+  "engines": {
+    "node": ">=0.4.0"
+  },
+  "homepage": "https://github.com/felixge/node-delayed-stream",
+  "license": "MIT",
+  "main": "./lib/delayed_stream",
   "name": "delayed-stream",
-  "description": "Buffers events from a stream until you are ready to handle them.",
-  "license": "MIT",
-  "version": "1.0.0",
-  "homepage": "https://github.com/felixge/node-delayed-stream",
   "repository": {
     "type": "git",
     "url": "git://github.com/felixge/node-delayed-stream.git"
   },
-  "main": "./lib/delayed_stream",
-  "engines": {
-    "node": ">=0.4.0"
-  },
   "scripts": {
     "test": "make test"
   },
-  "dependencies": {},
-  "devDependencies": {
-    "fake": "0.2.0",
-    "far": "0.0.1"
-  }
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/delegates/package.json
===================================================================
--- trip-planner-front/node_modules/delegates/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/delegates/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,52 @@
 {
-  "name": "delegates",
-  "version": "1.0.0",
-  "repository": "visionmedia/node-delegates",
+  "_args": [
+    [
+      "delegates@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "delegates@1.0.0",
+  "_id": "delegates@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+  "_location": "/delegates",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "delegates@1.0.0",
+    "name": "delegates",
+    "escapedName": "delegates",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet"
+  ],
+  "_resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/visionmedia/node-delegates/issues"
+  },
+  "dependencies": {},
   "description": "delegate methods and accessors to another property",
-  "keywords": ["delegate", "delegation"],
-  "dependencies": {},
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
-  "license": "MIT"
+  "homepage": "https://github.com/visionmedia/node-delegates#readme",
+  "keywords": [
+    "delegate",
+    "delegation"
+  ],
+  "license": "MIT",
+  "name": "delegates",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/visionmedia/node-delegates.git"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/depd/package.json
===================================================================
--- trip-planner-front/node_modules/depd/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/depd/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,49 @@
 {
-  "name": "depd",
+  "_args": [
+    [
+      "depd@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "depd@1.1.2",
+  "_id": "depd@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+  "_location": "/depd",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "depd@1.1.2",
+    "name": "depd",
+    "escapedName": "depd",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/agentkeepalive",
+    "/body-parser",
+    "/express",
+    "/http-errors",
+    "/send",
+    "/serve-index/http-errors"
+  ],
+  "_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "browser": "lib/browser/index.js",
+  "bugs": {
+    "url": "https://github.com/dougwilson/nodejs-depd/issues"
+  },
   "description": "Deprecate all the things",
-  "version": "1.1.2",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "keywords": [
-    "deprecate",
-    "deprecated"
-  ],
-  "repository": "dougwilson/nodejs-depd",
-  "browser": "lib/browser/index.js",
   "devDependencies": {
+    "beautify-benchmark": "0.2.4",
     "benchmark": "2.1.4",
-    "beautify-benchmark": "0.2.4",
     "eslint": "3.19.0",
     "eslint-config-standard": "7.1.0",
@@ -22,4 +54,7 @@
     "mocha": "~1.21.5"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "lib/",
@@ -29,6 +64,14 @@
     "Readme.md"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/dougwilson/nodejs-depd#readme",
+  "keywords": [
+    "deprecate",
+    "deprecated"
+  ],
+  "license": "MIT",
+  "name": "depd",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/dougwilson/nodejs-depd.git"
   },
   "scripts": {
@@ -38,4 +81,5 @@
     "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/"
-  }
+  },
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/dependency-graph/package.json
===================================================================
--- trip-planner-front/node_modules/dependency-graph/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dependency-graph/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,41 @@
 {
-  "name": "dependency-graph",
-  "description": "Simple dependency graph.",
-  "version": "0.11.0",
-  "author": "Jim Riecken <jriecken@gmail.com>",
-  "keywords": [
-    "dependency",
-    "graph"
+  "_args": [
+    [
+      "dependency-graph@0.11.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/jriecken/dependency-graph.git"
+  "_development": true,
+  "_from": "dependency-graph@0.11.0",
+  "_id": "dependency-graph@0.11.0",
+  "_inBundle": false,
+  "_integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+  "_location": "/dependency-graph",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dependency-graph@0.11.0",
+    "name": "dependency-graph",
+    "escapedName": "dependency-graph",
+    "rawSpec": "0.11.0",
+    "saveSpec": null,
+    "fetchSpec": "0.11.0"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+  "_spec": "0.11.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jim Riecken",
+    "email": "jriecken@gmail.com"
   },
   "bugs": {
     "url": "http://github.com/jriecken/dependency-graph/issues"
   },
-  "main": "./lib/dep_graph.js",
-  "scripts": {
-    "test": "jasmine specs/**/*.js"
-  },
   "dependencies": {},
-  "optionalDependencies": {},
+  "description": "Simple dependency graph.",
   "devDependencies": {
     "jasmine": "3.5.0"
@@ -28,4 +44,21 @@
     "node": ">= 0.6.0"
   },
-  "types": "./lib/index.d.ts"
+  "homepage": "https://github.com/jriecken/dependency-graph#readme",
+  "keywords": [
+    "dependency",
+    "graph"
+  ],
+  "license": "MIT",
+  "main": "./lib/dep_graph.js",
+  "name": "dependency-graph",
+  "optionalDependencies": {},
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jriecken/dependency-graph.git"
+  },
+  "scripts": {
+    "test": "jasmine specs/**/*.js"
+  },
+  "types": "./lib/index.d.ts",
+  "version": "0.11.0"
 }
Index: trip-planner-front/node_modules/destroy/package.json
===================================================================
--- trip-planner-front/node_modules/destroy/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/destroy/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,50 @@
 {
-  "name": "destroy",
-  "description": "destroy a stream if possible",
-  "version": "1.0.4",
+  "_args": [
+    [
+      "destroy@1.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "destroy@1.0.4",
+  "_id": "destroy@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+  "_location": "/destroy",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "destroy@1.0.4",
+    "name": "destroy",
+    "escapedName": "destroy",
+    "rawSpec": "1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "1.0.4"
+  },
+  "_requiredBy": [
+    "/send"
+  ],
+  "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+  "_spec": "1.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
-    "url": "http://jongleberry.com",
-    "twitter": "https://twitter.com/jongleberry"
+    "url": "http://jongleberry.com"
+  },
+  "bugs": {
+    "url": "https://github.com/stream-utils/destroy/issues"
   },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "stream-utils/destroy",
+  "description": "destroy a stream if possible",
   "devDependencies": {
     "istanbul": "0.4.2",
     "mocha": "2.3.4"
-  },
-  "scripts": {
-    "test": "mocha --reporter spec",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
   },
   "files": [
@@ -27,4 +52,5 @@
     "LICENSE"
   ],
+  "homepage": "https://github.com/stream-utils/destroy#readme",
   "keywords": [
     "stream",
@@ -34,4 +60,16 @@
     "leak",
     "fd"
-  ]
+  ],
+  "license": "MIT",
+  "name": "destroy",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/stream-utils/destroy.git"
+  },
+  "scripts": {
+    "test": "mocha --reporter spec",
+    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
+    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+  },
+  "version": "1.0.4"
 }
Index: trip-planner-front/node_modules/detect-node/package.json
===================================================================
--- trip-planner-front/node_modules/detect-node/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/detect-node/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,56 @@
 {
-  "name": "detect-node",
-  "version": "2.1.0",
+  "_args": [
+    [
+      "detect-node@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "detect-node@2.1.0",
+  "_id": "detect-node@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+  "_location": "/detect-node",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "detect-node@2.1.0",
+    "name": "detect-node",
+    "escapedName": "detect-node",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/spdy-transport"
+  ],
+  "_resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ilya Kantor"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/iliakan/detect-node/issues"
+  },
   "description": "Detect Node.JS (as opposite to browser environment) (reliable)",
-  "main": "index.js",
-  "module": "index.esm.js",
-  "browser": "browser.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iliakan/detect-node"
-  },
+  "homepage": "https://github.com/iliakan/detect-node",
   "keywords": [
     "detect",
     "node"
   ],
-  "author": "Ilya Kantor",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/iliakan/detect-node/issues"
+  "main": "index.js",
+  "module": "index.esm.js",
+  "name": "detect-node",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iliakan/detect-node.git"
   },
-  "homepage": "https://github.com/iliakan/detect-node"
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/di/package.json
===================================================================
--- trip-planner-front/node_modules/di/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/di/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,49 @@
 {
-  "name": "di",
-  "version": "0.0.1",
+  "_args": [
+    [
+      "di@0.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "di@0.0.1",
+  "_id": "di@0.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+  "_location": "/di",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "di@0.0.1",
+    "name": "di",
+    "escapedName": "di",
+    "rawSpec": "0.0.1",
+    "saveSpec": null,
+    "fetchSpec": "0.0.1"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+  "_spec": "0.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Vojta Jina",
+    "email": "vojta.jina@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/vojtajina/node-di/issues"
+  },
   "description": "Dependency Injection for Node.js. Heavily inspired by AngularJS.",
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "mocha --compilers coffee:coffee-script test/*"
+  "devDependencies": {
+    "chai": "1.4.2",
+    "coffee-script": "1.4.0",
+    "grunt": "~0.4.0rc5",
+    "grunt-contrib-jshint": "~0.1.1rc5",
+    "grunt-simple-mocha": "~0.3.2",
+    "mocha": "1.8.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/vojtajina/node-di.git"
-  },
+  "homepage": "https://github.com/vojtajina/node-di#readme",
   "keywords": [
     "di",
@@ -17,13 +52,14 @@
     "injector"
   ],
-  "devDependencies": {
-    "grunt": "~0.4.0rc5",
-    "grunt-simple-mocha": "~0.3.2",
-    "grunt-contrib-jshint": "~0.1.1rc5",
-    "mocha": "1.8.1",
-    "chai": "1.4.2",
-    "coffee-script": "1.4.0"
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "di",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/vojtajina/node-di.git"
   },
-  "author": "Vojta Jina <vojta.jina@gmail.com>",
-  "license": "MIT"
+  "scripts": {
+    "test": "mocha --compilers coffee:coffee-script test/*"
+  },
+  "version": "0.0.1"
 }
Index: trip-planner-front/node_modules/dir-glob/package.json
===================================================================
--- trip-planner-front/node_modules/dir-glob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dir-glob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,74 @@
 {
-	"name": "dir-glob",
-	"version": "3.0.1",
-	"description": "Convert directories to glob compatible strings",
-	"license": "MIT",
-	"repository": "kevva/dir-glob",
-	"author": {
-		"name": "Kevin Mårtensson",
-		"email": "kevinmartensson@gmail.com",
-		"url": "github.com/kevva"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"convert",
-		"directory",
-		"extensions",
-		"files",
-		"glob"
-	],
-	"dependencies": {
-		"path-type": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^2.1.0",
-		"del": "^4.1.1",
-		"make-dir": "^3.0.0",
-		"rimraf": "^2.5.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "dir-glob@3.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dir-glob@3.0.1",
+  "_id": "dir-glob@3.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+  "_location": "/dir-glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dir-glob@3.0.1",
+    "name": "dir-glob",
+    "escapedName": "dir-glob",
+    "rawSpec": "3.0.1",
+    "saveSpec": null,
+    "fetchSpec": "3.0.1"
+  },
+  "_requiredBy": [
+    "/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+  "_spec": "3.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kevin Mårtensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/kevva/dir-glob/issues"
+  },
+  "dependencies": {
+    "path-type": "^4.0.0"
+  },
+  "description": "Convert directories to glob compatible strings",
+  "devDependencies": {
+    "ava": "^2.1.0",
+    "del": "^4.1.1",
+    "make-dir": "^3.0.0",
+    "rimraf": "^2.5.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/kevva/dir-glob#readme",
+  "keywords": [
+    "convert",
+    "directory",
+    "extensions",
+    "files",
+    "glob"
+  ],
+  "license": "MIT",
+  "name": "dir-glob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevva/dir-glob.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.1"
 }
Index: trip-planner-front/node_modules/dns-equal/package.json
===================================================================
--- trip-planner-front/node_modules/dns-equal/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dns-equal/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,50 @@
 {
-  "name": "dns-equal",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "dns-equal@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dns-equal@1.0.0",
+  "_id": "dns-equal@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+  "_location": "/dns-equal",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dns-equal@1.0.0",
+    "name": "dns-equal",
+    "escapedName": "dns-equal",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Thomas Watson Steen",
+    "email": "w@tson.dk",
+    "url": "https://twitter.com/wa7son"
+  },
+  "bugs": {
+    "url": "https://github.com/watson/dns-equal/issues"
+  },
+  "coordinates": [
+    56.010004025953165,
+    11.961870541375674
+  ],
+  "dependencies": {},
   "description": "Compare DNS record strings for equality",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {
     "standard": "^5.4.1"
   },
-  "scripts": {
-    "test": "standard && node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/watson/dns-equal.git"
-  },
+  "homepage": "https://github.com/watson/dns-equal#readme",
   "keywords": [
     "dns",
@@ -26,13 +58,14 @@
     "case-insensitive"
   ],
-  "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/watson/dns-equal/issues"
+  "main": "index.js",
+  "name": "dns-equal",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/watson/dns-equal.git"
   },
-  "homepage": "https://github.com/watson/dns-equal#readme",
-  "coordinates": [
-    56.010004025953165,
-    11.961870541375674
-  ]
+  "scripts": {
+    "test": "standard && node test.js"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/dns-packet/package.json
===================================================================
--- trip-planner-front/node_modules/dns-packet/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dns-packet/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,37 @@
 {
-  "name": "dns-packet",
-  "version": "1.3.4",
-  "description": "An abstract-encoding compliant module for encoding / decoding DNS packets",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mafintosh/dns-packet"
+  "_args": [
+    [
+      "dns-packet@1.3.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dns-packet@1.3.4",
+  "_id": "dns-packet@1.3.4",
+  "_inBundle": false,
+  "_integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
+  "_location": "/dns-packet",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dns-packet@1.3.4",
+    "name": "dns-packet",
+    "escapedName": "dns-packet",
+    "rawSpec": "1.3.4",
+    "saveSpec": null,
+    "fetchSpec": "1.3.4"
+  },
+  "_requiredBy": [
+    "/multicast-dns"
+  ],
+  "_resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
+  "_spec": "1.3.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Buus"
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/dns-packet/issues"
   },
   "dependencies": {
@@ -11,4 +39,5 @@
     "safe-buffer": "^5.0.1"
   },
+  "description": "An abstract-encoding compliant module for encoding / decoding DNS packets",
   "devDependencies": {
     "eslint": "^4.15.0",
@@ -16,12 +45,11 @@
     "tape": "^4.4.0"
   },
-  "scripts": {
-    "test": "standard && eslint --color *.js && tape test.js"
-  },
-  "bugs": {
-    "url": "https://github.com/mafintosh/dns-packet/issues"
-  },
+  "files": [
+    "index.js",
+    "types.js",
+    "rcodes.js",
+    "opcodes.js"
+  ],
   "homepage": "https://github.com/mafintosh/dns-packet",
-  "main": "index.js",
   "keywords": [
     "dns",
@@ -32,11 +60,14 @@
     "abstract-encoding"
   ],
-  "files": [
-    "index.js",
-    "types.js",
-    "rcodes.js",
-    "opcodes.js"
-  ],
-  "author": "Mathias Buus",
-  "license": "MIT"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "dns-packet",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mafintosh/dns-packet.git"
+  },
+  "scripts": {
+    "test": "standard && eslint --color *.js && tape test.js"
+  },
+  "version": "1.3.4"
 }
Index: trip-planner-front/node_modules/dns-txt/package.json
===================================================================
--- trip-planner-front/node_modules/dns-txt/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dns-txt/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,53 @@
 {
-  "name": "dns-txt",
-  "version": "2.0.2",
-  "description": "Encode/decode DNS-SD TXT record RDATA fields",
-  "main": "index.js",
+  "_args": [
+    [
+      "dns-txt@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dns-txt@2.0.2",
+  "_id": "dns-txt@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+  "_location": "/dns-txt",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dns-txt@2.0.2",
+    "name": "dns-txt",
+    "escapedName": "dns-txt",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Thomas Watson Steen",
+    "email": "w@tson.dk",
+    "url": "https://twitter.com/wa7son"
+  },
+  "bugs": {
+    "url": "https://github.com/watson/dns-txt/issues"
+  },
+  "coordinates": [
+    55.6465696,
+    12.5491067
+  ],
   "dependencies": {
     "buffer-indexof": "^1.0.0"
   },
+  "description": "Encode/decode DNS-SD TXT record RDATA fields",
   "devDependencies": {
-    "tape": "^4.2.2",
-    "standard": "^5.3.1"
+    "standard": "^5.3.1",
+    "tape": "^4.2.2"
   },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/watson/dns-txt.git"
-  },
+  "homepage": "https://github.com/watson/dns-txt",
   "keywords": [
     "rfc6763",
@@ -38,13 +70,14 @@
     "discovery"
   ],
-  "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/watson/dns-txt/issues"
+  "main": "index.js",
+  "name": "dns-txt",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/watson/dns-txt.git"
   },
-  "homepage": "https://github.com/watson/dns-txt",
-  "coordinates": [
-    55.6465696,
-    12.5491067
-  ]
+  "scripts": {
+    "test": "standard && tape test.js"
+  },
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/dom-serialize/package.json
===================================================================
--- trip-planner-front/node_modules/dom-serialize/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dom-serialize/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,51 @@
 {
-  "name": "dom-serialize",
-  "version": "2.2.1",
+  "_args": [
+    [
+      "dom-serialize@2.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "dom-serialize@2.2.1",
+  "_id": "dom-serialize@2.2.1",
+  "_inBundle": false,
+  "_integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+  "_location": "/dom-serialize",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dom-serialize@2.2.1",
+    "name": "dom-serialize",
+    "escapedName": "dom-serialize",
+    "rawSpec": "2.2.1",
+    "saveSpec": null,
+    "fetchSpec": "2.2.1"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+  "_spec": "2.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
+  },
+  "bugs": {
+    "url": "https://github.com/webmodules/dom-serialize/issues"
+  },
+  "dependencies": {
+    "custom-event": "~1.0.0",
+    "ent": "~2.2.0",
+    "extend": "^3.0.0",
+    "void-elements": "^2.0.0"
+  },
   "description": "Serializes any DOM node into a String",
-  "main": "index.js",
-  "scripts": {
-    "test": "make test"
+  "devDependencies": {
+    "zuul": "1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/webmodules/dom-serialize.git"
-  },
+  "homepage": "https://github.com/webmodules/dom-serialize",
   "keywords": [
     "browser",
@@ -18,18 +55,14 @@
     "string"
   ],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/webmodules/dom-serialize/issues"
+  "main": "index.js",
+  "name": "dom-serialize",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/webmodules/dom-serialize.git"
   },
-  "homepage": "https://github.com/webmodules/dom-serialize",
-  "dependencies": {
-    "custom-event": "~1.0.0",
-    "ent": "~2.2.0",
-    "extend": "^3.0.0",
-    "void-elements": "^2.0.0"
+  "scripts": {
+    "test": "make test"
   },
-  "devDependencies": {
-    "zuul": "1"
-  }
+  "version": "2.2.1"
 }
Index: trip-planner-front/node_modules/dom-serializer/package.json
===================================================================
--- trip-planner-front/node_modules/dom-serializer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/dom-serializer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,39 @@
 {
-  "name": "dom-serializer",
-  "version": "1.3.2",
-  "description": "render domhandler DOM nodes to a string",
-  "author": "Felix Boehm <me@feedic.com>",
-  "sideEffects": false,
-  "keywords": [
-    "html",
-    "xml",
-    "render"
+  "_args": [
+    [
+      "dom-serializer@1.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/cheeriojs/dom-renderer.git"
+  "_development": true,
+  "_from": "dom-serializer@1.3.2",
+  "_id": "dom-serializer@1.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+  "_location": "/dom-serializer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "dom-serializer@1.3.2",
+    "name": "dom-serializer",
+    "escapedName": "dom-serializer",
+    "rawSpec": "1.3.2",
+    "saveSpec": null,
+    "fetchSpec": "1.3.2"
   },
-  "main": "lib/index.js",
-  "types": "lib/index.d.ts",
-  "files": [
-    "lib/**/*"
+  "_requiredBy": [
+    "/domutils"
   ],
+  "_resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+  "_spec": "1.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/cheeriojs/dom-renderer/issues"
+  },
   "dependencies": {
     "domelementtype": "^2.0.1",
@@ -24,4 +41,5 @@
     "entities": "^2.0.0"
   },
+  "description": "render domhandler DOM nodes to a string",
   "devDependencies": {
     "@types/jest": "^26.0.23",
@@ -39,17 +57,35 @@
     "typescript": "^4.0.2"
   },
-  "scripts": {
-    "test": "jest --coverage && npm run lint",
-    "coverage": "cat coverage/lcov.info | coveralls",
-    "lint": "eslint src",
-    "format": "prettier --write '**/*.{ts,md,json}'",
-    "build": "tsc",
-    "prepare": "npm run build"
-  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": "https://github.com/cheeriojs/dom-serializer?sponsor=1",
+  "homepage": "https://github.com/cheeriojs/dom-renderer#readme",
   "jest": {
     "preset": "ts-jest",
     "testEnvironment": "node"
   },
-  "funding": "https://github.com/cheeriojs/dom-serializer?sponsor=1",
-  "license": "MIT"
+  "keywords": [
+    "html",
+    "xml",
+    "render"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "dom-serializer",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/cheeriojs/dom-renderer.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "coverage": "cat coverage/lcov.info | coveralls",
+    "format": "prettier --write '**/*.{ts,md,json}'",
+    "lint": "eslint src",
+    "prepare": "npm run build",
+    "test": "jest --coverage && npm run lint"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "1.3.2"
 }
Index: trip-planner-front/node_modules/domelementtype/package.json
===================================================================
--- trip-planner-front/node_modules/domelementtype/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/domelementtype/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,83 @@
 {
+  "_args": [
+    [
+      "domelementtype@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "domelementtype@2.2.0",
+  "_id": "domelementtype@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+  "_location": "/domelementtype",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "domelementtype@2.2.0",
     "name": "domelementtype",
-    "version": "2.2.0",
-    "description": "all the types of nodes in htmlparser2's dom",
-    "author": "Felix Boehm <me@feedic.com>",
-    "license": "BSD-2-Clause",
-    "funding": [
-        {
-            "type": "github",
-            "url": "https://github.com/sponsors/fb55"
-        }
-    ],
-    "sideEffects": false,
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib/**/*"
-    ],
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/fb55/domelementtype.git"
-    },
-    "keywords": [
-        "dom",
-        "htmlparser2"
-    ],
-    "scripts": {
-        "test": "npm run lint && prettier --check **/*.{ts,json,md}",
-        "lint": "eslint src",
-        "format": "prettier --write **/*.{ts,json,md}",
-        "build": "tsc",
-        "prepare": "npm run build"
-    },
-    "prettier": {
-        "tabWidth": 4
-    },
-    "devDependencies": {
-        "@typescript-eslint/eslint-plugin": "^4.1.0",
-        "@typescript-eslint/parser": "^4.1.0",
-        "eslint": "^7.9.0",
-        "eslint-config-prettier": "^6.0.0",
-        "prettier": "^2.1.1",
-        "typescript": "^4.0.2"
+    "escapedName": "domelementtype",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/dom-serializer",
+    "/domhandler",
+    "/domutils"
+  ],
+  "_resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/domelementtype/issues"
+  },
+  "description": "all the types of nodes in htmlparser2's dom",
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^4.1.0",
+    "@typescript-eslint/parser": "^4.1.0",
+    "eslint": "^7.9.0",
+    "eslint-config-prettier": "^6.0.0",
+    "prettier": "^2.1.1",
+    "typescript": "^4.0.2"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": [
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/fb55"
     }
+  ],
+  "homepage": "https://github.com/fb55/domelementtype#readme",
+  "keywords": [
+    "dom",
+    "htmlparser2"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "domelementtype",
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/domelementtype.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "format": "prettier --write **/*.{ts,json,md}",
+    "lint": "eslint src",
+    "prepare": "npm run build",
+    "test": "npm run lint && prettier --check **/*.{ts,json,md}"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/domhandler/package.json
===================================================================
--- trip-planner-front/node_modules/domhandler/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/domhandler/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,58 +1,96 @@
 {
+  "_args": [
+    [
+      "domhandler@4.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "domhandler@4.2.2",
+  "_id": "domhandler@4.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+  "_location": "/domhandler",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "domhandler@4.2.2",
     "name": "domhandler",
-    "version": "4.2.2",
-    "description": "Handler for htmlparser2 that turns pages into a dom",
-    "author": "Felix Boehm <me@feedic.com>",
-    "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-    },
-    "license": "BSD-2-Clause",
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "sideEffects": false,
-    "files": [
-        "lib"
-    ],
-    "scripts": {
-        "test": "npm run test:jest && npm run lint",
-        "test:jest": "jest",
-        "lint": "eslint src",
-        "format": "prettier --write '**/*.{ts,md,json}'",
-        "build": "tsc",
-        "prepare": "npm run build"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/fb55/domhandler.git"
-    },
-    "keywords": [
-        "dom",
-        "htmlparser2"
-    ],
-    "engines": {
-        "node": ">= 4"
-    },
-    "dependencies": {
-        "domelementtype": "^2.2.0"
-    },
-    "devDependencies": {
-        "@types/jest": "^27.0.1",
-        "@types/node": "^16.7.2",
-        "@typescript-eslint/eslint-plugin": "^4.29.3",
-        "@typescript-eslint/parser": "^4.29.3",
-        "eslint": "^7.32.0",
-        "eslint-config-prettier": "^8.1.0",
-        "htmlparser2": "^7.1.1",
-        "jest": "^27.1.0",
-        "prettier": "^2.0.5",
-        "ts-jest": "^27.0.5",
-        "typescript": "^4.4.2"
-    },
-    "jest": {
-        "preset": "ts-jest",
-        "testEnvironment": "node"
-    },
-    "prettier": {
-        "tabWidth": 4
-    }
+    "escapedName": "domhandler",
+    "rawSpec": "4.2.2",
+    "saveSpec": null,
+    "fetchSpec": "4.2.2"
+  },
+  "_requiredBy": [
+    "/css-select",
+    "/dom-serializer",
+    "/domutils"
+  ],
+  "_resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+  "_spec": "4.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/domhandler/issues"
+  },
+  "dependencies": {
+    "domelementtype": "^2.2.0"
+  },
+  "description": "Handler for htmlparser2 that turns pages into a dom",
+  "devDependencies": {
+    "@types/jest": "^27.0.1",
+    "@types/node": "^16.7.2",
+    "@typescript-eslint/eslint-plugin": "^4.29.3",
+    "@typescript-eslint/parser": "^4.29.3",
+    "eslint": "^7.32.0",
+    "eslint-config-prettier": "^8.1.0",
+    "htmlparser2": "^7.1.1",
+    "jest": "^27.1.0",
+    "prettier": "^2.0.5",
+    "ts-jest": "^27.0.5",
+    "typescript": "^4.4.2"
+  },
+  "engines": {
+    "node": ">= 4"
+  },
+  "files": [
+    "lib"
+  ],
+  "funding": {
+    "url": "https://github.com/fb55/domhandler?sponsor=1"
+  },
+  "homepage": "https://github.com/fb55/domhandler#readme",
+  "jest": {
+    "preset": "ts-jest",
+    "testEnvironment": "node"
+  },
+  "keywords": [
+    "dom",
+    "htmlparser2"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "domhandler",
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/domhandler.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "format": "prettier --write '**/*.{ts,md,json}'",
+    "lint": "eslint src",
+    "prepare": "npm run build",
+    "test": "npm run test:jest && npm run lint",
+    "test:jest": "jest"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "4.2.2"
 }
Index: trip-planner-front/node_modules/domutils/package.json
===================================================================
--- trip-planner-front/node_modules/domutils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/domutils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,101 @@
 {
+  "_args": [
+    [
+      "domutils@2.8.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "domutils@2.8.0",
+  "_id": "domutils@2.8.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+  "_location": "/domutils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "domutils@2.8.0",
     "name": "domutils",
-    "version": "2.8.0",
-    "description": "Utilities for working with htmlparser2's dom",
-    "author": "Felix Boehm <me@feedic.com>",
-    "funding": {
-        "url": "https://github.com/fb55/domutils?sponsor=1"
-    },
-    "license": "BSD-2-Clause",
-    "sideEffects": false,
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib/**/*"
-    ],
-    "scripts": {
-        "test": "npm run test:jest && npm run lint",
-        "test:jest": "jest",
-        "lint": "npm run lint:es && npm run lint:prettier",
-        "lint:es": "eslint --ignore-path .gitignore .",
-        "lint:prettier": "npm run prettier -- --check",
-        "format": "npm run format:es && npm run format:prettier",
-        "format:es": "npm run lint:es -- --fix",
-        "format:prettier": "npm run prettier -- --write",
-        "prettier": "prettier \"**/*.{ts,md,json,yml}\" --ignore-path .gitignore",
-        "build": "tsc",
-        "build:docs": "typedoc --hideGenerator --exclude \"**/*+(index|.spec).ts\" src",
-        "prepare": "npm run build"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/fb55/domutils.git"
-    },
-    "keywords": [
-        "dom",
-        "htmlparser2"
-    ],
-    "dependencies": {
-        "dom-serializer": "^1.0.1",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.0"
-    },
-    "devDependencies": {
-        "@types/jest": "^27.0.1",
-        "@types/node": "^16.7.2",
-        "@typescript-eslint/eslint-plugin": "^4.29.3",
-        "@typescript-eslint/parser": "^4.29.3",
-        "eslint": "^7.32.0",
-        "eslint-config-prettier": "^8.1.0",
-        "eslint-plugin-jsdoc": "^36.0.8",
-        "htmlparser2": "~7.0.0",
-        "jest": "^27.1.0",
-        "prettier": "^2.0.5",
-        "ts-jest": "^27.0.5",
-        "typedoc": "^0.21.6",
-        "typescript": "^4.4.2"
-    },
-    "jest": {
-        "preset": "ts-jest",
-        "testEnvironment": "node"
-    },
-    "prettier": {
-        "tabWidth": 4
-    }
+    "escapedName": "domutils",
+    "rawSpec": "2.8.0",
+    "saveSpec": null,
+    "fetchSpec": "2.8.0"
+  },
+  "_requiredBy": [
+    "/css-select"
+  ],
+  "_resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+  "_spec": "2.8.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/domutils/issues"
+  },
+  "dependencies": {
+    "dom-serializer": "^1.0.1",
+    "domelementtype": "^2.2.0",
+    "domhandler": "^4.2.0"
+  },
+  "description": "Utilities for working with htmlparser2's dom",
+  "devDependencies": {
+    "@types/jest": "^27.0.1",
+    "@types/node": "^16.7.2",
+    "@typescript-eslint/eslint-plugin": "^4.29.3",
+    "@typescript-eslint/parser": "^4.29.3",
+    "eslint": "^7.32.0",
+    "eslint-config-prettier": "^8.1.0",
+    "eslint-plugin-jsdoc": "^36.0.8",
+    "htmlparser2": "~7.0.0",
+    "jest": "^27.1.0",
+    "prettier": "^2.0.5",
+    "ts-jest": "^27.0.5",
+    "typedoc": "^0.21.6",
+    "typescript": "^4.4.2"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": {
+    "url": "https://github.com/fb55/domutils?sponsor=1"
+  },
+  "homepage": "https://github.com/fb55/domutils#readme",
+  "jest": {
+    "preset": "ts-jest",
+    "testEnvironment": "node"
+  },
+  "keywords": [
+    "dom",
+    "htmlparser2"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "domutils",
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/domutils.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "build:docs": "typedoc --hideGenerator --exclude \"**/*+(index|.spec).ts\" src",
+    "format": "npm run format:es && npm run format:prettier",
+    "format:es": "npm run lint:es -- --fix",
+    "format:prettier": "npm run prettier -- --write",
+    "lint": "npm run lint:es && npm run lint:prettier",
+    "lint:es": "eslint --ignore-path .gitignore .",
+    "lint:prettier": "npm run prettier -- --check",
+    "prepare": "npm run build",
+    "prettier": "prettier \"**/*.{ts,md,json,yml}\" --ignore-path .gitignore",
+    "test": "npm run test:jest && npm run lint",
+    "test:jest": "jest"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "2.8.0"
 }
Index: trip-planner-front/node_modules/ecc-jsbn/package.json
===================================================================
--- trip-planner-front/node_modules/ecc-jsbn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ecc-jsbn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,46 @@
 {
-  "name": "ecc-jsbn",
-  "version": "0.1.2",
+  "_args": [
+    [
+      "ecc-jsbn@0.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ecc-jsbn@0.1.2",
+  "_id": "ecc-jsbn@0.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+  "_location": "/ecc-jsbn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ecc-jsbn@0.1.2",
+    "name": "ecc-jsbn",
+    "escapedName": "ecc-jsbn",
+    "rawSpec": "0.1.2",
+    "saveSpec": null,
+    "fetchSpec": "0.1.2"
+  },
+  "_requiredBy": [
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+  "_spec": "0.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jeremie Miller",
+    "email": "jeremie@jabber.org",
+    "url": "http://jeremie.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/quartzjer/ecc-jsbn/issues"
+  },
+  "dependencies": {
+    "jsbn": "~0.1.0",
+    "safer-buffer": "^2.1.0"
+  },
   "description": "ECC JS code based on JSBN",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/quartzjer/ecc-jsbn.git"
-  },
+  "homepage": "https://github.com/quartzjer/ecc-jsbn",
   "keywords": [
     "jsbn",
@@ -13,9 +48,6 @@
     "browserify"
   ],
-  "author": {
-    "name": "Jeremie Miller",
-    "email": "jeremie@jabber.org",
-    "url": "http://jeremie.com/"
-  },
+  "license": "MIT",
+  "main": "index.js",
   "maintainers": [
     {
@@ -29,12 +61,9 @@
     }
   ],
-  "dependencies": {
-    "jsbn": "~0.1.0",
-    "safer-buffer": "^2.1.0"
+  "name": "ecc-jsbn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/quartzjer/ecc-jsbn.git"
   },
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/quartzjer/ecc-jsbn/issues"
-  },
-  "homepage": "https://github.com/quartzjer/ecc-jsbn"
+  "version": "0.1.2"
 }
Index: trip-planner-front/node_modules/ee-first/package.json
===================================================================
--- trip-planner-front/node_modules/ee-first/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ee-first/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,47 @@
 {
-  "name": "ee-first",
-  "description": "return the first event in a set of ee/event pairs",
-  "version": "1.1.1",
+  "_args": [
+    [
+      "ee-first@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ee-first@1.1.1",
+  "_id": "ee-first@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+  "_location": "/ee-first",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ee-first@1.1.1",
+    "name": "ee-first",
+    "escapedName": "ee-first",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/on-finished"
+  ],
+  "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
-    "url": "http://jongleberry.com",
-    "twitter": "https://twitter.com/jongleberry"
+    "url": "http://jongleberry.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathanong/ee-first/issues"
   },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "jonathanong/ee-first",
+  "description": "return the first event in a set of ee/event pairs",
   "devDependencies": {
     "istanbul": "0.3.9",
@@ -22,8 +52,16 @@
     "LICENSE"
   ],
+  "homepage": "https://github.com/jonathanong/ee-first#readme",
+  "license": "MIT",
+  "name": "ee-first",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathanong/ee-first.git"
+  },
   "scripts": {
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/electron-to-chromium/package.json
===================================================================
--- trip-planner-front/node_modules/electron-to-chromium/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/electron-to-chromium/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,47 @@
 {
-  "name": "electron-to-chromium",
-  "version": "1.3.864",
+  "_args": [
+    [
+      "electron-to-chromium@1.3.864",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "electron-to-chromium@1.3.864",
+  "_id": "electron-to-chromium@1.3.864",
+  "_inBundle": false,
+  "_integrity": "sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw==",
+  "_location": "/electron-to-chromium",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "electron-to-chromium@1.3.864",
+    "name": "electron-to-chromium",
+    "escapedName": "electron-to-chromium",
+    "rawSpec": "1.3.864",
+    "saveSpec": null,
+    "fetchSpec": "1.3.864"
+  },
+  "_requiredBy": [
+    "/browserslist"
+  ],
+  "_resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz",
+  "_spec": "1.3.864",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kilian Valkhof"
+  },
+  "bugs": {
+    "url": "https://github.com/kilian/electron-to-chromium/issues"
+  },
   "description": "Provides a list of electron-to-chromium version mappings",
-  "main": "index.js",
+  "devDependencies": {
+    "ava": "^3.8.2",
+    "codecov": "^3.8.0",
+    "electron-releases": "^3.823.0",
+    "nyc": "^15.1.0",
+    "request": "^2.88.0",
+    "shelljs": "^0.8.4"
+  },
   "files": [
     "versions.js",
@@ -11,14 +51,5 @@
     "LICENSE"
   ],
-  "scripts": {
-    "build": "node build.js",
-    "update": "node automated-update.js",
-    "test": "nyc ava --verbose",
-    "report": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/kilian/electron-to-chromium/"
-  },
+  "homepage": "https://github.com/kilian/electron-to-chromium#readme",
   "keywords": [
     "electron",
@@ -26,13 +57,17 @@
     "browserlist"
   ],
-  "author": "Kilian Valkhof",
   "license": "ISC",
-  "devDependencies": {
-    "ava": "^3.8.2",
-    "codecov": "^3.8.0",
-    "electron-releases": "^3.823.0",
-    "nyc": "^15.1.0",
-    "request": "^2.88.0",
-    "shelljs": "^0.8.4"
-  }
+  "main": "index.js",
+  "name": "electron-to-chromium",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kilian/electron-to-chromium.git"
+  },
+  "scripts": {
+    "build": "node build.js",
+    "report": "nyc report --reporter=text-lcov > coverage.lcov && codecov",
+    "test": "nyc ava --verbose",
+    "update": "node automated-update.js"
+  },
+  "version": "1.3.864"
 }
Index: trip-planner-front/node_modules/emoji-regex/package.json
===================================================================
--- trip-planner-front/node_modules/emoji-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/emoji-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,58 @@
 {
-  "name": "emoji-regex",
-  "version": "8.0.0",
+  "_args": [
+    [
+      "emoji-regex@8.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "emoji-regex@8.0.0",
+  "_id": "emoji-regex@8.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+  "_location": "/emoji-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "emoji-regex@8.0.0",
+    "name": "emoji-regex",
+    "escapedName": "emoji-regex",
+    "rawSpec": "8.0.0",
+    "saveSpec": null,
+    "fetchSpec": "8.0.0"
+  },
+  "_requiredBy": [
+    "/string-width"
+  ],
+  "_resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+  "_spec": "8.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Bynens",
+    "url": "https://mathiasbynens.be/"
+  },
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/emoji-regex/issues"
+  },
   "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
+  "devDependencies": {
+    "@babel/cli": "^7.2.3",
+    "@babel/core": "^7.3.4",
+    "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+    "@babel/preset-env": "^7.3.4",
+    "mocha": "^6.0.2",
+    "regexgen": "^1.3.0",
+    "unicode-12.0.0": "^0.7.9"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "index.js",
+    "index.d.ts",
+    "text.js",
+    "es2015/index.js",
+    "es2015/text.js"
+  ],
   "homepage": "https://mths.be/emoji-regex",
-  "main": "index.js",
-  "types": "index.d.ts",
   "keywords": [
     "unicode",
@@ -17,21 +66,10 @@
   ],
   "license": "MIT",
-  "author": {
-    "name": "Mathias Bynens",
-    "url": "https://mathiasbynens.be/"
-  },
+  "main": "index.js",
+  "name": "emoji-regex",
   "repository": {
     "type": "git",
-    "url": "https://github.com/mathiasbynens/emoji-regex.git"
+    "url": "git+https://github.com/mathiasbynens/emoji-regex.git"
   },
-  "bugs": "https://github.com/mathiasbynens/emoji-regex/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "index.js",
-    "index.d.ts",
-    "text.js",
-    "es2015/index.js",
-    "es2015/text.js"
-  ],
   "scripts": {
     "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
@@ -39,12 +77,5 @@
     "test:watch": "npm run test -- --watch"
   },
-  "devDependencies": {
-    "@babel/cli": "^7.2.3",
-    "@babel/core": "^7.3.4",
-    "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
-    "@babel/preset-env": "^7.3.4",
-    "mocha": "^6.0.2",
-    "regexgen": "^1.3.0",
-    "unicode-12.0.0": "^0.7.9"
-  }
+  "types": "index.d.ts",
+  "version": "8.0.0"
 }
Index: trip-planner-front/node_modules/emojis-list/package.json
===================================================================
--- trip-planner-front/node_modules/emojis-list/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/emojis-list/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,42 @@
 {
-  "name": "emojis-list",
-  "description": "Complete list of standard emojis.",
-  "homepage": "https://nidecoc.io/Kikobeats/emojis-list",
-  "version": "3.0.0",
-  "main": "./index.js",
+  "_args": [
+    [
+      "emojis-list@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "emojis-list@3.0.0",
+  "_id": "emojis-list@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+  "_location": "/emojis-list",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "emojis-list@3.0.0",
+    "name": "emojis-list",
+    "escapedName": "emojis-list",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/babel-loader/loader-utils",
+    "/loader-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
+    "name": "Kiko Beats",
     "email": "josefrancisco.verdu@gmail.com",
-    "name": "Kiko Beats",
     "url": "https://github.com/Kikobeats"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/kikobeats/emojis-list.git"
   },
   "bugs": {
     "url": "https://github.com/Kikobeats/emojis-list/issues"
   },
-  "keywords": [
-    "archive",
-    "complete",
-    "emoji",
-    "list",
-    "standard"
-  ],
+  "description": "Complete list of standard emojis.",
   "devDependencies": {
     "acho": "latest",
@@ -37,4 +52,19 @@
     "index.js"
   ],
+  "homepage": "https://nidecoc.io/Kikobeats/emojis-list",
+  "keywords": [
+    "archive",
+    "complete",
+    "emoji",
+    "list",
+    "standard"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "emojis-list",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kikobeats/emojis-list.git"
+  },
   "scripts": {
     "pretest": "standard update.js",
@@ -42,4 +72,4 @@
     "update": "node update"
   },
-  "license": "MIT"
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/encodeurl/package.json
===================================================================
--- trip-planner-front/node_modules/encodeurl/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/encodeurl/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,45 @@
 {
-  "name": "encodeurl",
+  "_args": [
+    [
+      "encodeurl@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "encodeurl@1.0.2",
+  "_id": "encodeurl@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+  "_location": "/encodeurl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "encodeurl@1.0.2",
+    "name": "encodeurl",
+    "escapedName": "encodeurl",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/express",
+    "/finalhandler",
+    "/send",
+    "/serve-static"
+  ],
+  "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/pillarjs/encodeurl/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
   "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences",
-  "version": "1.0.2",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "encode",
-    "encodeurl",
-    "url"
-  ],
-  "repository": "pillarjs/encodeurl",
   "devDependencies": {
     "eslint": "3.19.0",
@@ -23,4 +52,7 @@
     "mocha": "2.5.3"
   },
+  "engines": {
+    "node": ">= 0.8"
+  },
   "files": [
     "LICENSE",
@@ -29,6 +61,15 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8"
+  "homepage": "https://github.com/pillarjs/encodeurl#readme",
+  "keywords": [
+    "encode",
+    "encodeurl",
+    "url"
+  ],
+  "license": "MIT",
+  "name": "encodeurl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/pillarjs/encodeurl.git"
   },
   "scripts": {
@@ -37,4 +78,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/encoding/node_modules/iconv-lite/package.json
===================================================================
--- trip-planner-front/node_modules/encoding/node_modules/iconv-lite/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/encoding/node_modules/iconv-lite/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,79 @@
 {
+  "_args": [
+    [
+      "iconv-lite@0.6.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "iconv-lite@0.6.3",
+  "_id": "iconv-lite@0.6.3",
+  "_inBundle": false,
+  "_integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+  "_location": "/encoding/iconv-lite",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "iconv-lite@0.6.3",
     "name": "iconv-lite",
-    "description": "Convert character encodings in pure javascript.",
-    "version": "0.6.3",
-    "license": "MIT",
-    "keywords": [
-        "iconv",
-        "convert",
-        "charset",
-        "icu"
-    ],
-    "author": "Alexander Shtuchkin <ashtuchkin@gmail.com>",
-    "main": "./lib/index.js",
-    "typings": "./lib/index.d.ts",
-    "homepage": "https://github.com/ashtuchkin/iconv-lite",
-    "bugs": "https://github.com/ashtuchkin/iconv-lite/issues",
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/ashtuchkin/iconv-lite.git"
-    },
-    "engines": {
-        "node": ">=0.10.0"
-    },
-    "scripts": {
-        "coverage": "c8 _mocha --grep .",
-        "test": "mocha --reporter spec --grep ."
-    },
-    "browser": {
-        "stream": false
-    },
-    "devDependencies": {
-        "async": "^3.2.0",
-        "c8": "^7.2.0",
-        "errto": "^0.2.1",
-        "iconv": "^2.3.5",
-        "mocha": "^3.5.3",
-        "request": "^2.88.2",
-        "semver": "^6.3.0",
-        "unorm": "^1.6.0"
-    },
-    "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-    }
+    "escapedName": "iconv-lite",
+    "rawSpec": "0.6.3",
+    "saveSpec": null,
+    "fetchSpec": "0.6.3"
+  },
+  "_requiredBy": [
+    "/encoding"
+  ],
+  "_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+  "_spec": "0.6.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alexander Shtuchkin",
+    "email": "ashtuchkin@gmail.com"
+  },
+  "browser": {
+    "stream": false
+  },
+  "bugs": {
+    "url": "https://github.com/ashtuchkin/iconv-lite/issues"
+  },
+  "dependencies": {
+    "safer-buffer": ">= 2.1.2 < 3.0.0"
+  },
+  "description": "Convert character encodings in pure javascript.",
+  "devDependencies": {
+    "async": "^3.2.0",
+    "c8": "^7.2.0",
+    "errto": "^0.2.1",
+    "iconv": "^2.3.5",
+    "mocha": "^3.5.3",
+    "request": "^2.88.2",
+    "semver": "^6.3.0",
+    "unorm": "^1.6.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "homepage": "https://github.com/ashtuchkin/iconv-lite",
+  "keywords": [
+    "iconv",
+    "convert",
+    "charset",
+    "icu"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "iconv-lite",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/ashtuchkin/iconv-lite.git"
+  },
+  "scripts": {
+    "coverage": "c8 _mocha --grep .",
+    "test": "mocha --reporter spec --grep ."
+  },
+  "typings": "./lib/index.d.ts",
+  "version": "0.6.3"
 }
Index: trip-planner-front/node_modules/encoding/package.json
===================================================================
--- trip-planner-front/node_modules/encoding/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/encoding/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,59 @@
 {
+  "_args": [
+    [
+      "encoding@0.1.13",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "encoding@0.1.13",
+  "_id": "encoding@0.1.13",
+  "_inBundle": false,
+  "_integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+  "_location": "/encoding",
+  "_optional": true,
+  "_phantomChildren": {
+    "safer-buffer": "2.1.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "encoding@0.1.13",
     "name": "encoding",
-    "version": "0.1.13",
-    "description": "Convert encodings, uses iconv-lite",
-    "main": "lib/encoding.js",
-    "scripts": {
-        "test": "nodeunit test"
-    },
-    "repository": "https://github.com/andris9/encoding.git",
-    "author": "Andris Reinman",
-    "license": "MIT",
-    "dependencies": {
-        "iconv-lite": "^0.6.2"
-    },
-    "devDependencies": {
-        "nodeunit": "0.11.3"
-    }
+    "escapedName": "encoding",
+    "rawSpec": "0.1.13",
+    "saveSpec": null,
+    "fetchSpec": "0.1.13"
+  },
+  "_requiredBy": [
+    "/minipass-fetch"
+  ],
+  "_resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+  "_spec": "0.1.13",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andris Reinman"
+  },
+  "bugs": {
+    "url": "https://github.com/andris9/encoding/issues"
+  },
+  "dependencies": {
+    "iconv-lite": "^0.6.2"
+  },
+  "description": "Convert encodings, uses iconv-lite",
+  "devDependencies": {
+    "nodeunit": "0.11.3"
+  },
+  "homepage": "https://github.com/andris9/encoding#readme",
+  "license": "MIT",
+  "main": "lib/encoding.js",
+  "name": "encoding",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/andris9/encoding.git"
+  },
+  "scripts": {
+    "test": "nodeunit test"
+  },
+  "version": "0.1.13"
 }
Index: trip-planner-front/node_modules/end-of-stream/package.json
===================================================================
--- trip-planner-front/node_modules/end-of-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/end-of-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,50 @@
 {
-  "name": "end-of-stream",
-  "version": "1.4.4",
-  "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mafintosh/end-of-stream.git"
+  "_args": [
+    [
+      "end-of-stream@1.4.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "end-of-stream@1.4.4",
+  "_id": "end-of-stream@1.4.4",
+  "_inBundle": false,
+  "_integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+  "_location": "/end-of-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "end-of-stream@1.4.4",
+    "name": "end-of-stream",
+    "escapedName": "end-of-stream",
+    "rawSpec": "1.4.4",
+    "saveSpec": null,
+    "fetchSpec": "1.4.4"
+  },
+  "_requiredBy": [
+    "/pump"
+  ],
+  "_resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+  "_spec": "1.4.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Buus",
+    "email": "mathiasbuus@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/end-of-stream/issues"
   },
   "dependencies": {
     "once": "^1.4.0"
   },
-  "scripts": {
-    "test": "node test.js"
+  "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
+  "devDependencies": {
+    "tape": "^4.11.0"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/mafintosh/end-of-stream",
   "keywords": [
     "stream",
@@ -25,13 +56,14 @@
     "wait"
   ],
-  "bugs": {
-    "url": "https://github.com/mafintosh/end-of-stream/issues"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "end-of-stream",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mafintosh/end-of-stream.git"
   },
-  "homepage": "https://github.com/mafintosh/end-of-stream",
-  "main": "index.js",
-  "author": "Mathias Buus <mathiasbuus@gmail.com>",
-  "license": "MIT",
-  "devDependencies": {
-    "tape": "^4.11.0"
-  }
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.4.4"
 }
Index: trip-planner-front/node_modules/engine.io-parser/package.json
===================================================================
--- trip-planner-front/node_modules/engine.io-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/engine.io-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,43 @@
 {
-  "name": "engine.io-parser",
+  "_args": [
+    [
+      "engine.io-parser@4.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "engine.io-parser@4.0.3",
+  "_id": "engine.io-parser@4.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==",
+  "_location": "/engine.io-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "engine.io-parser@4.0.3",
+    "name": "engine.io-parser",
+    "escapedName": "engine.io-parser",
+    "rawSpec": "4.0.3",
+    "saveSpec": null,
+    "fetchSpec": "4.0.3"
+  },
+  "_requiredBy": [
+    "/engine.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz",
+  "_spec": "4.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": {
+    "./lib/encodePacket.js": "./lib/encodePacket.browser.js",
+    "./lib/decodePacket.js": "./lib/decodePacket.browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/socketio/engine.io-parser/issues"
+  },
+  "dependencies": {
+    "base64-arraybuffer": "0.1.4"
+  },
   "description": "Parser for the client for the realtime Engine",
-  "license": "MIT",
-  "version": "4.0.3",
-  "main": "lib/index.js",
-  "homepage": "https://github.com/socketio/engine.io-parser",
   "devDependencies": {
     "@babel/core": "~7.9.6",
@@ -22,28 +56,26 @@
     "zuul-ngrok": "4.0.0"
   },
-  "dependencies": {
-    "base64-arraybuffer": "0.1.4"
-  },
-  "scripts": {
-    "test": "npm run lint && npm run format:check && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",
-    "test:node": "nyc mocha test/index.js",
-    "test:browser": "zuul test/index.js --no-coverage",
-    "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js'",
-    "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js'",
-    "lint": "eslint 'lib/**/*.js' 'test/**/*.js'"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:socketio/engine.io-parser.git"
+  "engines": {
+    "node": ">=8.0.0"
   },
   "files": [
     "lib/"
   ],
-  "browser": {
-    "./lib/encodePacket.js": "./lib/encodePacket.browser.js",
-    "./lib/decodePacket.js": "./lib/decodePacket.browser.js"
+  "homepage": "https://github.com/socketio/engine.io-parser",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "engine.io-parser",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/socketio/engine.io-parser.git"
   },
-  "engines": {
-    "node": ">=8.0.0"
-  }
+  "scripts": {
+    "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js'",
+    "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js'",
+    "lint": "eslint 'lib/**/*.js' 'test/**/*.js'",
+    "test": "npm run lint && npm run format:check && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",
+    "test:browser": "zuul test/index.js --no-coverage",
+    "test:node": "nyc mocha test/index.js"
+  },
+  "version": "4.0.3"
 }
Index: trip-planner-front/node_modules/engine.io/package.json
===================================================================
--- trip-planner-front/node_modules/engine.io/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/engine.io/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,51 @@
 {
-  "name": "engine.io",
-  "version": "4.1.1",
-  "description": "The realtime engine behind Socket.IO. Provides the foundation of a bidirectional connection between client and server",
-  "main": "lib/engine.io.js",
-  "author": "Guillermo Rauch <guillermo@learnboost.com>",
-  "homepage": "https://github.com/socketio/engine.io",
+  "_args": [
+    [
+      "engine.io@4.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "engine.io@4.1.1",
+  "_id": "engine.io@4.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==",
+  "_location": "/engine.io",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "engine.io@4.1.1",
+    "name": "engine.io",
+    "escapedName": "engine.io",
+    "rawSpec": "4.1.1",
+    "saveSpec": null,
+    "fetchSpec": "4.1.1"
+  },
+  "_requiredBy": [
+    "/socket.io"
+  ],
+  "_resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz",
+  "_spec": "4.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Guillermo Rauch",
+    "email": "guillermo@learnboost.com"
+  },
+  "bugs": {
+    "url": "https://github.com/socketio/engine.io/issues"
+  },
   "contributors": [
     {
       "name": "Eugen Dueck",
-      "web": "https://github.com/EugenDueck"
+      "url": "https://github.com/EugenDueck"
     },
     {
       "name": "Afshin Mehrabani",
-      "web": "https://github.com/afshinm"
+      "url": "https://github.com/afshinm"
     },
     {
       "name": "Christoph Dorn",
-      "web": "https://github.com/cadorn"
+      "url": "https://github.com/cadorn"
     },
     {
@@ -24,5 +54,4 @@
     }
   ],
-  "license": "MIT",
   "dependencies": {
     "accepts": "~1.3.4",
@@ -34,4 +63,5 @@
     "ws": "~7.4.2"
   },
+  "description": "The realtime engine behind Socket.IO. Provides the foundation of a bidirectional connection between client and server",
   "devDependencies": {
     "babel-eslint": "^8.0.2",
@@ -47,19 +77,24 @@
     "superagent": "^3.8.1"
   },
-  "scripts": {
-    "lint": "eslint lib/ test/ *.js",
-    "test": "npm run lint && npm run format:check && mocha && EIO_CLIENT=3 mocha && EIO_WS_ENGINE=eiows mocha",
-    "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js'",
-    "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js'"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:socketio/engine.io.git"
+  "engines": {
+    "node": ">=10.0.0"
   },
   "files": [
     "lib/"
   ],
-  "engines": {
-    "node": ">=10.0.0"
-  }
+  "homepage": "https://github.com/socketio/engine.io",
+  "license": "MIT",
+  "main": "lib/engine.io.js",
+  "name": "engine.io",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/socketio/engine.io.git"
+  },
+  "scripts": {
+    "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js'",
+    "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js'",
+    "lint": "eslint lib/ test/ *.js",
+    "test": "npm run lint && npm run format:check && mocha && EIO_CLIENT=3 mocha && EIO_WS_ENGINE=eiows mocha"
+  },
+  "version": "4.1.1"
 }
Index: trip-planner-front/node_modules/enhanced-resolve/package.json
===================================================================
--- trip-planner-front/node_modules/enhanced-resolve/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/enhanced-resolve/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,41 @@
 {
-  "name": "enhanced-resolve",
-  "version": "5.8.3",
-  "author": "Tobias Koppers @sokra",
-  "description": "Offers a async require.resolve function. It's highly configurable.",
-  "files": [
-    "lib",
-    "types.d.ts",
-    "LICENSE"
+  "_args": [
+    [
+      "enhanced-resolve@5.8.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "enhanced-resolve@5.8.3",
+  "_id": "enhanced-resolve@5.8.3",
+  "_inBundle": false,
+  "_integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
+  "_location": "/enhanced-resolve",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "enhanced-resolve@5.8.3",
+    "name": "enhanced-resolve",
+    "escapedName": "enhanced-resolve",
+    "rawSpec": "5.8.3",
+    "saveSpec": null,
+    "fetchSpec": "5.8.3"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
+  "_spec": "5.8.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
+  },
   "browser": {
     "pnpapi": false,
     "process": "./lib/util/process-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/webpack/enhanced-resolve/issues"
   },
   "dependencies": {
@@ -17,5 +43,5 @@
     "tapable": "^2.2.0"
   },
-  "license": "MIT",
+  "description": "Offers a async require.resolve function. It's highly configurable.",
   "devDependencies": {
     "@types/mocha": "^8.0.3",
@@ -33,5 +59,5 @@
     "prettier": "^2.1.2",
     "should": "^13.2.3",
-    "tooling": "webpack/tooling#v1.14.0",
+    "tooling": "github:webpack/tooling#v1.14.0",
     "typescript": "^4.2.0-beta"
   },
@@ -39,23 +65,10 @@
     "node": ">=10.13.0"
   },
-  "main": "lib/index.js",
-  "types": "types.d.ts",
+  "files": [
+    "lib",
+    "types.d.ts",
+    "LICENSE"
+  ],
   "homepage": "http://github.com/webpack/enhanced-resolve",
-  "scripts": {
-    "lint": "yarn run code-lint && yarn run type-lint && yarn run special-lint",
-    "fix": "yarn run code-lint-fix && yarn run special-lint-fix",
-    "code-lint": "eslint --cache lib test",
-    "code-lint-fix": "eslint --cache lib test --fix",
-    "type-lint": "tsc",
-    "special-lint": "node node_modules/tooling/lockfile-lint && node node_modules/tooling/inherit-types && node node_modules/tooling/format-file-header && node node_modules/tooling/generate-types",
-    "special-lint-fix": "node node_modules/tooling/inherit-types --write && node node_modules/tooling/format-file-header --write && node node_modules/tooling/generate-types --write",
-    "pretty": "prettier --loglevel warn --write \"lib/**/*.{js,json}\" \"test/*.js\"",
-    "pretest": "yarn lint",
-    "test": "mocha --full-trace --check-leaks",
-    "test:only": "mocha --full-trace --check-leaks",
-    "precover": "yarn lint",
-    "cover": "nyc --reporter=html node node_modules/mocha/bin/_mocha --full-trace --check-leaks",
-    "cover:ci": "nyc --reporter=lcovonly node node_modules/mocha/bin/_mocha --full-trace --check-leaks"
-  },
   "husky": {
     "hooks": {
@@ -63,4 +76,5 @@
     }
   },
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -68,7 +82,27 @@
     ]
   },
+  "main": "lib/index.js",
+  "name": "enhanced-resolve",
   "repository": {
     "type": "git",
     "url": "git://github.com/webpack/enhanced-resolve.git"
-  }
+  },
+  "scripts": {
+    "code-lint": "eslint --cache lib test",
+    "code-lint-fix": "eslint --cache lib test --fix",
+    "cover": "nyc --reporter=html node node_modules/mocha/bin/_mocha --full-trace --check-leaks",
+    "cover:ci": "nyc --reporter=lcovonly node node_modules/mocha/bin/_mocha --full-trace --check-leaks",
+    "fix": "yarn run code-lint-fix && yarn run special-lint-fix",
+    "lint": "yarn run code-lint && yarn run type-lint && yarn run special-lint",
+    "precover": "yarn lint",
+    "pretest": "yarn lint",
+    "pretty": "prettier --loglevel warn --write \"lib/**/*.{js,json}\" \"test/*.js\"",
+    "special-lint": "node node_modules/tooling/lockfile-lint && node node_modules/tooling/inherit-types && node node_modules/tooling/format-file-header && node node_modules/tooling/generate-types",
+    "special-lint-fix": "node node_modules/tooling/inherit-types --write && node node_modules/tooling/format-file-header --write && node node_modules/tooling/generate-types --write",
+    "test": "mocha --full-trace --check-leaks",
+    "test:only": "mocha --full-trace --check-leaks",
+    "type-lint": "tsc"
+  },
+  "types": "types.d.ts",
+  "version": "5.8.3"
 }
Index: trip-planner-front/node_modules/ent/package.json
===================================================================
--- trip-planner-front/node_modules/ent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,76 @@
 {
-    "name" : "ent",
-    "description" : "Encode and decode HTML entities",
-    "version" : "2.2.0",
-    "repository" : "https://github.com/substack/node-ent.git",
-    "author" : "James Halliday <mail@substack.net> (http://substack.net)",
-    "main" : "./index.js",
-    "keywords" : [
-        "entities",
-        "entitify",
-        "entity",
-        "html",
-        "encode",
-        "decode"
-    ],
-    "license" : "MIT",
-    "scripts" : {
-        "test" : "tape test/*.js",
-        "prepublish" : "node build/index.js"
-    },
-    "testling" : {
-        "files" : "test/*.js",
-        "browsers" : [
-          "ie/6..latest",
-          "ff/3.5", "ff/latest",
-          "chrome/10", "chrome/latest",
-          "safari/latest",
-          "opera/latest"
-        ]
-    },
-    "devDependencies" : {
-        "tape" : "~2.3.2"
-    }
+  "_args": [
+    [
+      "ent@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ent@2.2.0",
+  "_id": "ent@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+  "_location": "/ent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ent@2.2.0",
+    "name": "ent",
+    "escapedName": "ent",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/dom-serialize"
+  ],
+  "_resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-ent/issues"
+  },
+  "description": "Encode and decode HTML entities",
+  "devDependencies": {
+    "tape": "~2.3.2"
+  },
+  "homepage": "https://github.com/substack/node-ent#readme",
+  "keywords": [
+    "entities",
+    "entitify",
+    "entity",
+    "html",
+    "encode",
+    "decode"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "ent",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/substack/node-ent.git"
+  },
+  "scripts": {
+    "prepublish": "node build/index.js",
+    "test": "tape test/*.js"
+  },
+  "testling": {
+    "files": "test/*.js",
+    "browsers": [
+      "ie/6..latest",
+      "ff/3.5",
+      "ff/latest",
+      "chrome/10",
+      "chrome/latest",
+      "safari/latest",
+      "opera/latest"
+    ]
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/entities/package.json
===================================================================
--- trip-planner-front/node_modules/entities/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/entities/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,64 +1,100 @@
 {
+  "_args": [
+    [
+      "entities@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "entities@2.2.0",
+  "_id": "entities@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+  "_location": "/entities",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "entities@2.2.0",
     "name": "entities",
-    "version": "2.2.0",
-    "description": "Encode & decode XML and HTML entities with ease",
-    "author": "Felix Boehm <me@feedic.com>",
-    "funding": "https://github.com/fb55/entities?sponsor=1",
-    "sideEffects": false,
-    "keywords": [
-        "entity",
-        "decoding",
-        "encoding",
-        "html",
-        "xml",
-        "html entities"
-    ],
-    "directories": {
-        "lib": "lib/"
-    },
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib/**/*"
-    ],
-    "devDependencies": {
-        "@types/jest": "^26.0.0",
-        "@types/node": "^14.11.8",
-        "@typescript-eslint/eslint-plugin": "^4.4.1",
-        "@typescript-eslint/parser": "^4.4.1",
-        "coveralls": "*",
-        "eslint": "^7.11.0",
-        "eslint-config-prettier": "^7.0.0",
-        "eslint-plugin-node": "^11.1.0",
-        "jest": "^26.5.3",
-        "prettier": "^2.0.5",
-        "ts-jest": "^26.1.0",
-        "typescript": "^4.0.2"
-    },
-    "scripts": {
-        "test": "jest --coverage && npm run lint",
-        "coverage": "cat coverage/lcov.info | coveralls",
-        "lint": "npm run lint:es && npm run lint:prettier",
-        "lint:es": "eslint .",
-        "lint:prettier": "npm run prettier -- --check",
-        "format": "npm run format:es && npm run format:prettier",
-        "format:es": "npm run lint:es -- --fix",
-        "format:prettier": "npm run prettier -- --write",
-        "prettier": "prettier '**/*.{ts,md,json,yml}'",
-        "build": "tsc && cp -r src/maps lib",
-        "prepare": "npm run build"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/fb55/entities.git"
-    },
-    "license": "BSD-2-Clause",
-    "jest": {
-        "preset": "ts-jest",
-        "testEnvironment": "node"
-    },
-    "prettier": {
-        "tabWidth": 4,
-        "proseWrap": "always"
-    }
+    "escapedName": "entities",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/dom-serializer"
+  ],
+  "_resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/entities/issues"
+  },
+  "description": "Encode & decode XML and HTML entities with ease",
+  "devDependencies": {
+    "@types/jest": "^26.0.0",
+    "@types/node": "^14.11.8",
+    "@typescript-eslint/eslint-plugin": "^4.4.1",
+    "@typescript-eslint/parser": "^4.4.1",
+    "coveralls": "*",
+    "eslint": "^7.11.0",
+    "eslint-config-prettier": "^7.0.0",
+    "eslint-plugin-node": "^11.1.0",
+    "jest": "^26.5.3",
+    "prettier": "^2.0.5",
+    "ts-jest": "^26.1.0",
+    "typescript": "^4.0.2"
+  },
+  "directories": {
+    "lib": "lib/"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": "https://github.com/fb55/entities?sponsor=1",
+  "homepage": "https://github.com/fb55/entities#readme",
+  "jest": {
+    "preset": "ts-jest",
+    "testEnvironment": "node"
+  },
+  "keywords": [
+    "entity",
+    "decoding",
+    "encoding",
+    "html",
+    "xml",
+    "html entities"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "entities",
+  "prettier": {
+    "tabWidth": 4,
+    "proseWrap": "always"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/fb55/entities.git"
+  },
+  "scripts": {
+    "build": "tsc && cp -r src/maps lib",
+    "coverage": "cat coverage/lcov.info | coveralls",
+    "format": "npm run format:es && npm run format:prettier",
+    "format:es": "npm run lint:es -- --fix",
+    "format:prettier": "npm run prettier -- --write",
+    "lint": "npm run lint:es && npm run lint:prettier",
+    "lint:es": "eslint .",
+    "lint:prettier": "npm run prettier -- --check",
+    "prepare": "npm run build",
+    "prettier": "prettier '**/*.{ts,md,json,yml}'",
+    "test": "jest --coverage && npm run lint"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/env-paths/package.json
===================================================================
--- trip-planner-front/node_modules/env-paths/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/env-paths/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,81 @@
 {
-	"name": "env-paths",
-	"version": "2.2.1",
-	"description": "Get paths for storing things like data, config, cache, etc",
-	"license": "MIT",
-	"repository": "sindresorhus/env-paths",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"common",
-		"user",
-		"paths",
-		"env",
-		"environment",
-		"directory",
-		"dir",
-		"appdir",
-		"path",
-		"data",
-		"config",
-		"cache",
-		"logs",
-		"temp",
-		"linux",
-		"unix"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "env-paths@2.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "env-paths@2.2.1",
+  "_id": "env-paths@2.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+  "_location": "/env-paths",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "env-paths@2.2.1",
+    "name": "env-paths",
+    "escapedName": "env-paths",
+    "rawSpec": "2.2.1",
+    "saveSpec": null,
+    "fetchSpec": "2.2.1"
+  },
+  "_requiredBy": [
+    "/node-gyp"
+  ],
+  "_resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+  "_spec": "2.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/env-paths/issues"
+  },
+  "description": "Get paths for storing things like data, config, cache, etc",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/env-paths#readme",
+  "keywords": [
+    "common",
+    "user",
+    "paths",
+    "env",
+    "environment",
+    "directory",
+    "dir",
+    "appdir",
+    "path",
+    "data",
+    "config",
+    "cache",
+    "logs",
+    "temp",
+    "linux",
+    "unix"
+  ],
+  "license": "MIT",
+  "name": "env-paths",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/env-paths.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.1"
 }
Index: trip-planner-front/node_modules/err-code/package.json
===================================================================
--- trip-planner-front/node_modules/err-code/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/err-code/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,49 @@
 {
-  "name": "err-code",
-  "version": "2.0.3",
-  "description": "Create an error with a code",
-  "main": "index.js",
-  "scripts": {
-    "lint": "eslint '{*.js,test/**/*.js}' --ignore-pattern *.umd.js",
-    "test": "mocha --bail",
-    "browserify": "browserify -s err-code index.js > index.umd.js"
+  "_args": [
+    [
+      "err-code@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "err-code@2.0.3",
+  "_id": "err-code@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+  "_location": "/err-code",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "err-code@2.0.3",
+    "name": "err-code",
+    "escapedName": "err-code",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "/promise-retry"
+  ],
+  "_resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "IndigoUnited",
+    "email": "hello@indigounited.com",
+    "url": "http://indigounited.com"
   },
   "bugs": {
     "url": "https://github.com/IndigoUnited/js-err-code/issues/"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/IndigoUnited/js-err-code.git"
+  "description": "Create an error with a code",
+  "devDependencies": {
+    "@satazor/eslint-config": "^3.0.0",
+    "browserify": "^16.5.1",
+    "eslint": "^7.2.0",
+    "expect.js": "^0.3.1",
+    "mocha": "^8.0.1"
   },
+  "homepage": "https://github.com/IndigoUnited/js-err-code#readme",
   "keywords": [
     "error",
@@ -23,12 +53,16 @@
     "property"
   ],
-  "author": "IndigoUnited <hello@indigounited.com> (http://indigounited.com)",
   "license": "MIT",
-  "devDependencies": {
-    "@satazor/eslint-config": "^3.0.0",
-    "browserify": "^16.5.1",
-    "eslint": "^7.2.0",
-    "expect.js": "^0.3.1",
-    "mocha": "^8.0.1"
-  }
+  "main": "index.js",
+  "name": "err-code",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/IndigoUnited/js-err-code.git"
+  },
+  "scripts": {
+    "browserify": "browserify -s err-code index.js > index.umd.js",
+    "lint": "eslint '{*.js,test/**/*.js}' --ignore-pattern *.umd.js",
+    "test": "mocha --bail"
+  },
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/errno/package.json
===================================================================
--- trip-planner-front/node_modules/errno/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/errno/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,52 @@
 {
-  "name": "errno",
+  "_args": [
+    [
+      "errno@0.1.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "errno@0.1.8",
+  "_id": "errno@0.1.8",
+  "_inBundle": false,
+  "_integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+  "_location": "/errno",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "errno@0.1.8",
+    "name": "errno",
+    "escapedName": "errno",
+    "rawSpec": "0.1.8",
+    "saveSpec": null,
+    "fetchSpec": "0.1.8"
+  },
+  "_requiredBy": [
+    "/less",
+    "/memory-fs"
+  ],
+  "_resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+  "_spec": "0.1.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "Rod Vagg @rvagg <rod@vagg.org> (https://github.com/rvagg)"
   ],
+  "bin": {
+    "errno": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/rvagg/node-errno/issues"
+  },
+  "dependencies": {
+    "prr": "~1.0.1"
+  },
   "description": "libuv errno details exposed",
+  "devDependencies": {
+    "error-stack-parser": "^2.0.1",
+    "inherits": "^2.0.3",
+    "tape": "~4.8.0"
+  },
+  "homepage": "https://github.com/rvagg/node-errno#readme",
   "keywords": [
     "errors",
@@ -10,24 +54,14 @@
     "libuv"
   ],
-  "version": "0.1.8",
+  "license": "MIT",
   "main": "errno.js",
-  "dependencies": {
-    "prr": "~1.0.1"
-  },
-  "bin": {
-    "errno": "./cli.js"
-  },
-  "devDependencies": {
-    "error-stack-parser": "^2.0.1",
-    "inherits": "^2.0.3",
-    "tape": "~4.8.0"
-  },
+  "name": "errno",
   "repository": {
     "type": "git",
-    "url": "https://github.com/rvagg/node-errno.git"
+    "url": "git+https://github.com/rvagg/node-errno.git"
   },
-  "license": "MIT",
   "scripts": {
     "test": "node --use_strict test.js"
-  }
+  },
+  "version": "0.1.8"
 }
Index: trip-planner-front/node_modules/error-ex/package.json
===================================================================
--- trip-planner-front/node_modules/error-ex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/error-ex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,51 @@
 {
-  "name": "error-ex",
+  "_args": [
+    [
+      "error-ex@1.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "error-ex@1.3.2",
+  "_id": "error-ex@1.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+  "_location": "/error-ex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "error-ex@1.3.2",
+    "name": "error-ex",
+    "escapedName": "error-ex",
+    "rawSpec": "1.3.2",
+    "saveSpec": null,
+    "fetchSpec": "1.3.2"
+  },
+  "_requiredBy": [
+    "/parse-json"
+  ],
+  "_resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+  "_spec": "1.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/qix-/node-error-ex/issues"
+  },
+  "dependencies": {
+    "is-arrayish": "^0.2.1"
+  },
   "description": "Easy error subclassing and stack customization",
-  "version": "1.3.2",
-  "maintainers": [
-    "Josh Junon <i.am.qix@gmail.com> (github.com/qix-)",
-    "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)"
+  "devDependencies": {
+    "coffee-script": "^1.9.3",
+    "coveralls": "^2.11.2",
+    "istanbul": "^0.3.17",
+    "mocha": "^2.2.5",
+    "should": "^7.0.1",
+    "xo": "^0.7.1"
+  },
+  "files": [
+    "index.js"
   ],
+  "homepage": "https://github.com/qix-/node-error-ex#readme",
   "keywords": [
     "error",
@@ -18,8 +59,26 @@
   ],
   "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Josh Junon",
+      "email": "i.am.qix@gmail.com",
+      "url": "github.com/qix-"
+    },
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    }
+  ],
+  "name": "error-ex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/qix-/node-error-ex.git"
+  },
   "scripts": {
     "pretest": "xo",
     "test": "mocha --compilers coffee:coffee-script/register"
   },
+  "version": "1.3.2",
   "xo": {
     "rules": {
@@ -28,19 +87,4 @@
       ]
     }
-  },
-  "repository": "qix-/node-error-ex",
-  "files": [
-    "index.js"
-  ],
-  "devDependencies": {
-    "coffee-script": "^1.9.3",
-    "coveralls": "^2.11.2",
-    "istanbul": "^0.3.17",
-    "mocha": "^2.2.5",
-    "should": "^7.0.1",
-    "xo": "^0.7.1"
-  },
-  "dependencies": {
-    "is-arrayish": "^0.2.1"
   }
 }
Index: trip-planner-front/node_modules/es-module-lexer/package.json
===================================================================
--- trip-planner-front/node_modules/es-module-lexer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/es-module-lexer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,39 @@
 {
-  "name": "es-module-lexer",
-  "version": "0.7.1",
+  "_args": [
+    [
+      "es-module-lexer@0.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "es-module-lexer@0.7.1",
+  "_id": "es-module-lexer@0.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==",
+  "_location": "/es-module-lexer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "es-module-lexer@0.7.1",
+    "name": "es-module-lexer",
+    "escapedName": "es-module-lexer",
+    "rawSpec": "0.7.1",
+    "saveSpec": null,
+    "fetchSpec": "0.7.1"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz",
+  "_spec": "0.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Guy Bedford"
+  },
+  "bugs": {
+    "url": "https://github.com/guybedford/es-module-lexer/issues"
+  },
   "description": "Lexes ES modules returning their import/export metadata",
-  "main": "dist/lexer.cjs",
-  "module": "dist/lexer.js",
-  "types": "types/lexer.d.ts",
-  "exports": {
-    "module": "./dist/lexer.js",
-    "import": "./dist/lexer.js",
-    "require": "./dist/lexer.cjs"
-  },
-  "scripts": {
-    "test": "NODE_OPTIONS=\"--experimental-modules\" mocha -b -u tdd test/*.cjs",
-    "build": "node --experimental-modules build.js && babel dist/lexer.js | terser -o dist/lexer.cjs",
-    "build-wasm": "make lib/lexer.wasm && node build.js",
-    "bench": "node --experimental-modules --expose-gc bench/index.js",
-    "prepublishOnly": "npm run build",
-    "footprint": "npm run build && cat dist/lexer.js | gzip -9f | wc -c"
-  },
-  "author": "Guy Bedford",
-  "license": "MIT",
   "devDependencies": {
     "@babel/cli": "^7.5.5",
@@ -29,16 +44,32 @@
     "terser": "^4.1.4"
   },
+  "exports": {
+    "module": "./dist/lexer.js",
+    "import": "./dist/lexer.js",
+    "require": "./dist/lexer.cjs"
+  },
   "files": [
     "dist",
     "types"
   ],
-  "type": "module",
+  "homepage": "https://github.com/guybedford/es-module-lexer#readme",
+  "license": "MIT",
+  "main": "dist/lexer.cjs",
+  "module": "dist/lexer.js",
+  "name": "es-module-lexer",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/guybedford/es-module-lexer.git"
   },
-  "bugs": {
-    "url": "https://github.com/guybedford/es-module-lexer/issues"
+  "scripts": {
+    "bench": "node --experimental-modules --expose-gc bench/index.js",
+    "build": "node --experimental-modules build.js && babel dist/lexer.js | terser -o dist/lexer.cjs",
+    "build-wasm": "make lib/lexer.wasm && node build.js",
+    "footprint": "npm run build && cat dist/lexer.js | gzip -9f | wc -c",
+    "prepublishOnly": "npm run build",
+    "test": "NODE_OPTIONS=\"--experimental-modules\" mocha -b -u tdd test/*.cjs"
   },
-  "homepage": "https://github.com/guybedford/es-module-lexer#readme"
+  "type": "module",
+  "types": "types/lexer.d.ts",
+  "version": "0.7.1"
 }
Index: trip-planner-front/node_modules/esbuild-wasm/package.json
===================================================================
--- trip-planner-front/node_modules/esbuild-wasm/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esbuild-wasm/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,55 @@
 {
-  "name": "esbuild-wasm",
-  "version": "0.13.4",
+  "_args": [
+    [
+      "esbuild-wasm@0.13.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "esbuild-wasm@0.13.4",
+  "_id": "esbuild-wasm@0.13.4",
+  "_inBundle": false,
+  "_integrity": "sha512-2dN7njr9/2QzKLqbTEgXr73vDbSqffdJMv4EfaMQoy04cej0owbGHH5apPgED0wN9I5e7sBT0/Q81tVy3wQBlA==",
+  "_location": "/esbuild-wasm",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "esbuild-wasm@0.13.4",
+    "name": "esbuild-wasm",
+    "escapedName": "esbuild-wasm",
+    "rawSpec": "0.13.4",
+    "saveSpec": null,
+    "fetchSpec": "0.13.4"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.4.tgz",
+  "_spec": "0.13.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "esbuild": "bin/esbuild"
+  },
+  "browser": "lib/browser.js",
+  "bugs": {
+    "url": "https://github.com/evanw/esbuild/issues"
+  },
   "description": "The cross-platform WebAssembly binary for esbuild, a JavaScript bundler.",
-  "repository": "https://github.com/evanw/esbuild",
-  "license": "MIT",
+  "directories": {
+    "bin": "bin"
+  },
   "engines": {
     "node": ">=8"
   },
+  "homepage": "https://github.com/evanw/esbuild#readme",
+  "license": "MIT",
   "main": "lib/main.js",
-  "browser": "lib/browser.js",
+  "name": "esbuild-wasm",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/evanw/esbuild.git"
+  },
   "types": "lib/main.d.ts",
-  "directories": {
-    "bin": "bin"
-  }
+  "version": "0.13.4"
 }
Index: trip-planner-front/node_modules/esbuild-windows-64/package.json
===================================================================
--- trip-planner-front/node_modules/esbuild-windows-64/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esbuild-windows-64/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,51 @@
 {
+  "_args": [
+    [
+      "esbuild-windows-64@0.13.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "esbuild-windows-64@0.13.4",
+  "_id": "esbuild-windows-64@0.13.4",
+  "_inBundle": false,
+  "_integrity": "sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==",
+  "_location": "/esbuild-windows-64",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "esbuild-windows-64@0.13.4",
+    "name": "esbuild-windows-64",
+    "escapedName": "esbuild-windows-64",
+    "rawSpec": "0.13.4",
+    "saveSpec": null,
+    "fetchSpec": "0.13.4"
+  },
+  "_requiredBy": [
+    "/esbuild"
+  ],
+  "_resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz",
+  "_spec": "0.13.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/evanw/esbuild/issues"
+  },
+  "cpu": [
+    "x64"
+  ],
+  "description": "The Windows 64-bit binary for esbuild, a JavaScript bundler.",
+  "homepage": "https://github.com/evanw/esbuild#readme",
+  "license": "MIT",
   "name": "esbuild-windows-64",
-  "version": "0.13.4",
-  "description": "The Windows 64-bit binary for esbuild, a JavaScript bundler.",
-  "repository": "https://github.com/evanw/esbuild",
-  "license": "MIT",
-  "preferUnplugged": false,
   "os": [
     "win32"
   ],
-  "cpu": [
-    "x64"
-  ]
+  "preferUnplugged": false,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/evanw/esbuild.git"
+  },
+  "version": "0.13.4"
 }
Index: trip-planner-front/node_modules/esbuild/package.json
===================================================================
--- trip-planner-front/node_modules/esbuild/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esbuild/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,62 @@
 {
-  "name": "esbuild",
-  "version": "0.13.4",
-  "description": "An extremely fast JavaScript bundler and minifier.",
-  "repository": "https://github.com/evanw/esbuild",
-  "scripts": {
-    "postinstall": "node install.js"
+  "_args": [
+    [
+      "esbuild@0.13.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "esbuild@0.13.4",
+  "_id": "esbuild@0.13.4",
+  "_inBundle": false,
+  "_integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==",
+  "_location": "/esbuild",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "esbuild@0.13.4",
+    "name": "esbuild",
+    "escapedName": "esbuild",
+    "rawSpec": "0.13.4",
+    "saveSpec": null,
+    "fetchSpec": "0.13.4"
   },
-  "main": "lib/main.js",
-  "types": "lib/main.d.ts",
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz",
+  "_spec": "0.13.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "bin": {
     "esbuild": "bin/esbuild"
   },
+  "bugs": {
+    "url": "https://github.com/evanw/esbuild/issues"
+  },
+  "dependencies": {
+    "esbuild-android-arm64": "0.13.4",
+    "esbuild-darwin-64": "0.13.4",
+    "esbuild-darwin-arm64": "0.13.4",
+    "esbuild-freebsd-64": "0.13.4",
+    "esbuild-freebsd-arm64": "0.13.4",
+    "esbuild-linux-32": "0.13.4",
+    "esbuild-linux-64": "0.13.4",
+    "esbuild-linux-arm": "0.13.4",
+    "esbuild-linux-arm64": "0.13.4",
+    "esbuild-linux-mips64le": "0.13.4",
+    "esbuild-linux-ppc64le": "0.13.4",
+    "esbuild-openbsd-64": "0.13.4",
+    "esbuild-sunos-64": "0.13.4",
+    "esbuild-windows-32": "0.13.4",
+    "esbuild-windows-64": "0.13.4",
+    "esbuild-windows-arm64": "0.13.4"
+  },
+  "description": "An extremely fast JavaScript bundler and minifier.",
+  "homepage": "https://github.com/evanw/esbuild#readme",
+  "license": "MIT",
+  "main": "lib/main.js",
+  "name": "esbuild",
   "optionalDependencies": {
     "esbuild-android-arm64": "0.13.4",
@@ -30,4 +77,12 @@
     "esbuild-windows-arm64": "0.13.4"
   },
-  "license": "MIT"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/evanw/esbuild.git"
+  },
+  "scripts": {
+    "postinstall": "node install.js"
+  },
+  "types": "lib/main.d.ts",
+  "version": "0.13.4"
 }
Index: trip-planner-front/node_modules/escalade/package.json
===================================================================
--- trip-planner-front/node_modules/escalade/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/escalade/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,50 @@
 {
-  "name": "escalade",
-  "version": "3.1.1",
-  "repository": "lukeed/escalade",
-  "description": "A tiny (183B to 210B) and fast utility to ascend parent directories",
-  "module": "dist/index.mjs",
-  "main": "dist/index.js",
-  "types": "index.d.ts",
-  "license": "MIT",
+  "_args": [
+    [
+      "escalade@3.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "escalade@3.1.1",
+  "_id": "escalade@3.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+  "_location": "/escalade",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "escalade@3.1.1",
+    "name": "escalade",
+    "escapedName": "escalade",
+    "rawSpec": "3.1.1",
+    "saveSpec": null,
+    "fetchSpec": "3.1.1"
+  },
+  "_requiredBy": [
+    "/browserslist",
+    "/karma/yargs",
+    "/yargs"
+  ],
+  "_resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+  "_spec": "3.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Luke Edwards",
     "email": "luke.edwards05@gmail.com",
     "url": "https://lukeed.com"
+  },
+  "bugs": {
+    "url": "https://github.com/lukeed/escalade/issues"
+  },
+  "description": "A tiny (183B to 210B) and fast utility to ascend parent directories",
+  "devDependencies": {
+    "bundt": "1.1.1",
+    "esm": "3.2.25",
+    "uvu": "0.3.3"
+  },
+  "engines": {
+    "node": ">=6"
   },
   "exports": {
@@ -34,16 +69,5 @@
     "sync"
   ],
-  "modes": {
-    "sync": "src/sync.js",
-    "default": "src/async.js"
-  },
-  "engines": {
-    "node": ">=6"
-  },
-  "scripts": {
-    "build": "bundt",
-    "pretest": "npm run build",
-    "test": "uvu -r esm test -i fixtures"
-  },
+  "homepage": "https://github.com/lukeed/escalade#readme",
   "keywords": [
     "find",
@@ -54,8 +78,22 @@
     "walk"
   ],
-  "devDependencies": {
-    "bundt": "1.1.1",
-    "esm": "3.2.25",
-    "uvu": "0.3.3"
-  }
+  "license": "MIT",
+  "main": "dist/index.js",
+  "modes": {
+    "sync": "src/sync.js",
+    "default": "src/async.js"
+  },
+  "module": "dist/index.mjs",
+  "name": "escalade",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lukeed/escalade.git"
+  },
+  "scripts": {
+    "build": "bundt",
+    "pretest": "npm run build",
+    "test": "uvu -r esm test -i fixtures"
+  },
+  "types": "index.d.ts",
+  "version": "3.1.1"
 }
Index: trip-planner-front/node_modules/escape-html/package.json
===================================================================
--- trip-planner-front/node_modules/escape-html/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/escape-html/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,43 @@
 {
-  "name": "escape-html",
+  "_args": [
+    [
+      "escape-html@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "escape-html@1.0.3",
+  "_id": "escape-html@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+  "_location": "/escape-html",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "escape-html@1.0.3",
+    "name": "escape-html",
+    "escapedName": "escape-html",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/express",
+    "/finalhandler",
+    "/send",
+    "/serve-index",
+    "/serve-static"
+  ],
+  "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/component/escape-html/issues"
+  },
   "description": "Escape string for use in HTML",
-  "version": "1.0.3",
-  "license": "MIT",
-  "keywords": [
-    "escape",
-    "html",
-    "utility"
-  ],
-  "repository": "component/escape-html",
   "devDependencies": {
-    "benchmark": "1.0.0",
-    "beautify-benchmark": "0.2.4"
+    "beautify-benchmark": "0.2.4",
+    "benchmark": "1.0.0"
   },
   "files": [
@@ -19,6 +46,19 @@
     "index.js"
   ],
+  "homepage": "https://github.com/component/escape-html#readme",
+  "keywords": [
+    "escape",
+    "html",
+    "utility"
+  ],
+  "license": "MIT",
+  "name": "escape-html",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/component/escape-html.git"
+  },
   "scripts": {
     "bench": "node benchmark/index.js"
-  }
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/escape-string-regexp/package.json
===================================================================
--- trip-planner-front/node_modules/escape-string-regexp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/escape-string-regexp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,33 @@
 {
-  "name": "escape-string-regexp",
-  "version": "1.0.5",
-  "description": "Escape RegExp special characters",
-  "license": "MIT",
-  "repository": "sindresorhus/escape-string-regexp",
+  "_args": [
+    [
+      "escape-string-regexp@1.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "escape-string-regexp@1.0.5",
+  "_id": "escape-string-regexp@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+  "_location": "/escape-string-regexp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "escape-string-regexp@1.0.5",
+    "name": "escape-string-regexp",
+    "escapedName": "escape-string-regexp",
+    "rawSpec": "1.0.5",
+    "saveSpec": null,
+    "fetchSpec": "1.0.5"
+  },
+  "_requiredBy": [
+    "/chalk",
+    "/figures"
+  ],
+  "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+  "_spec": "1.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,17 +35,19 @@
     "url": "sindresorhus.com"
   },
-  "maintainers": [
-    "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)",
-    "Joshua Boy Nicolai Appelman <joshua@jbna.nl> (jbna.nl)"
-  ],
+  "bugs": {
+    "url": "https://github.com/sindresorhus/escape-string-regexp/issues"
+  },
+  "description": "Escape RegExp special characters",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.8.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/escape-string-regexp#readme",
   "keywords": [
     "escape",
@@ -35,7 +62,25 @@
     "characters"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    },
+    {
+      "name": "Joshua Boy Nicolai Appelman",
+      "email": "joshua@jbna.nl",
+      "url": "jbna.nl"
+    }
+  ],
+  "name": "escape-string-regexp",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/escape-string-regexp.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.5"
 }
Index: trip-planner-front/node_modules/eslint-scope/package.json
===================================================================
--- trip-planner-front/node_modules/eslint-scope/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/eslint-scope/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,40 @@
 {
-  "name": "eslint-scope",
-  "description": "ECMAScript scope analyzer for ESLint",
-  "homepage": "http://github.com/eslint/eslint-scope",
-  "main": "lib/index.js",
-  "version": "5.1.1",
-  "engines": {
-    "node": ">=8.0.0"
+  "_args": [
+    [
+      "eslint-scope@5.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "eslint-scope@5.1.1",
+  "_id": "eslint-scope@5.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+  "_location": "/eslint-scope",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "eslint-scope@5.1.1",
+    "name": "eslint-scope",
+    "escapedName": "eslint-scope",
+    "rawSpec": "5.1.1",
+    "saveSpec": null,
+    "fetchSpec": "5.1.1"
   },
-  "repository": "eslint/eslint-scope",
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+  "_spec": "5.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "bugs": {
     "url": "https://github.com/eslint/eslint-scope/issues"
   },
-  "license": "BSD-2-Clause",
-  "scripts": {
-    "test": "node Makefile.js test",
-    "lint": "node Makefile.js lint",
-    "generate-release": "eslint-generate-release",
-    "generate-alpharelease": "eslint-generate-prerelease alpha",
-    "generate-betarelease": "eslint-generate-prerelease beta",
-    "generate-rcrelease": "eslint-generate-prerelease rc",
-    "publish-release": "eslint-publish-release"
-  },
-  "files": [
-    "LICENSE",
-    "README.md",
-    "lib"
-  ],
   "dependencies": {
     "esrecurse": "^4.3.0",
     "estraverse": "^4.1.1"
   },
+  "description": "ECMAScript scope analyzer for ESLint",
   "devDependencies": {
     "@typescript-eslint/parser": "^1.11.0",
@@ -45,4 +51,30 @@
     "shelljs": "^0.8.3",
     "typescript": "^3.5.2"
-  }
+  },
+  "engines": {
+    "node": ">=8.0.0"
+  },
+  "files": [
+    "LICENSE",
+    "README.md",
+    "lib"
+  ],
+  "homepage": "http://github.com/eslint/eslint-scope",
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "eslint-scope",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/eslint/eslint-scope.git"
+  },
+  "scripts": {
+    "generate-alpharelease": "eslint-generate-prerelease alpha",
+    "generate-betarelease": "eslint-generate-prerelease beta",
+    "generate-rcrelease": "eslint-generate-prerelease rc",
+    "generate-release": "eslint-generate-release",
+    "lint": "node Makefile.js lint",
+    "publish-release": "eslint-publish-release",
+    "test": "node Makefile.js test"
+  },
+  "version": "5.1.1"
 }
Index: trip-planner-front/node_modules/esrecurse/node_modules/estraverse/package.json
===================================================================
--- trip-planner-front/node_modules/esrecurse/node_modules/estraverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esrecurse/node_modules/estraverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,36 @@
 {
-  "name": "estraverse",
+  "_args": [
+    [
+      "estraverse@5.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "estraverse@5.2.0",
+  "_id": "estraverse@5.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+  "_location": "/esrecurse/estraverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "estraverse@5.2.0",
+    "name": "estraverse",
+    "escapedName": "estraverse",
+    "rawSpec": "5.2.0",
+    "saveSpec": null,
+    "fetchSpec": "5.2.0"
+  },
+  "_requiredBy": [
+    "/esrecurse"
+  ],
+  "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+  "_spec": "5.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/estools/estraverse/issues"
+  },
   "description": "ECMAScript JS AST traversal functions",
-  "homepage": "https://github.com/estools/estraverse",
-  "main": "estraverse.js",
-  "version": "5.2.0",
-  "engines": {
-    "node": ">=4.0"
-  },
-  "maintainers": [
-    {
-      "name": "Yusuke Suzuki",
-      "email": "utatane.tea@gmail.com",
-      "web": "http://github.com/Constellation"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/estools/estraverse.git"
-  },
   "devDependencies": {
     "babel-preset-env": "^1.6.1",
@@ -32,9 +46,27 @@
     "mocha": "^2.1.0"
   },
+  "engines": {
+    "node": ">=4.0"
+  },
+  "homepage": "https://github.com/estools/estraverse",
   "license": "BSD-2-Clause",
+  "main": "estraverse.js",
+  "maintainers": [
+    {
+      "name": "Yusuke Suzuki",
+      "email": "utatane.tea@gmail.com",
+      "url": "http://github.com/Constellation"
+    }
+  ],
+  "name": "estraverse",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/estools/estraverse.git"
+  },
   "scripts": {
+    "lint": "jshint estraverse.js",
     "test": "npm run-script lint && npm run-script unit-test",
-    "lint": "jshint estraverse.js",
     "unit-test": "mocha --compilers js:babel-register"
-  }
+  },
+  "version": "5.2.0"
 }
Index: trip-planner-front/node_modules/esrecurse/package.json
===================================================================
--- trip-planner-front/node_modules/esrecurse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esrecurse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,44 @@
 {
-  "name": "esrecurse",
-  "description": "ECMAScript AST recursive visitor",
-  "homepage": "https://github.com/estools/esrecurse",
-  "main": "esrecurse.js",
-  "version": "4.3.0",
-  "engines": {
-    "node": ">=4.0"
+  "_args": [
+    [
+      "esrecurse@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "esrecurse@4.3.0",
+  "_id": "esrecurse@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+  "_location": "/esrecurse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "esrecurse@4.3.0",
+    "name": "esrecurse",
+    "escapedName": "esrecurse",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
   },
-  "maintainers": [
-    {
-      "name": "Yusuke Suzuki",
-      "email": "utatane.tea@gmail.com",
-      "web": "https://github.com/Constellation"
-    }
+  "_requiredBy": [
+    "/eslint-scope"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/estools/esrecurse.git"
+  "_resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "babel": {
+    "presets": [
+      "es2015"
+    ]
+  },
+  "bugs": {
+    "url": "https://github.com/estools/esrecurse/issues"
   },
   "dependencies": {
     "estraverse": "^5.2.0"
   },
+  "description": "ECMAScript AST recursive visitor",
   "devDependencies": {
     "babel-cli": "^6.24.1",
@@ -39,14 +58,27 @@
     "minimist": "^1.1.0"
   },
+  "engines": {
+    "node": ">=4.0"
+  },
+  "homepage": "https://github.com/estools/esrecurse",
   "license": "BSD-2-Clause",
+  "main": "esrecurse.js",
+  "maintainers": [
+    {
+      "name": "Yusuke Suzuki",
+      "email": "utatane.tea@gmail.com",
+      "url": "https://github.com/Constellation"
+    }
+  ],
+  "name": "esrecurse",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/estools/esrecurse.git"
+  },
   "scripts": {
+    "lint": "gulp lint",
     "test": "gulp travis",
-    "unit-test": "gulp test",
-    "lint": "gulp lint"
+    "unit-test": "gulp test"
   },
-  "babel": {
-    "presets": [
-      "es2015"
-    ]
-  }
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/estraverse/package.json
===================================================================
--- trip-planner-front/node_modules/estraverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/estraverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,36 @@
 {
-  "name": "estraverse",
+  "_args": [
+    [
+      "estraverse@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "estraverse@4.3.0",
+  "_id": "estraverse@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+  "_location": "/estraverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "estraverse@4.3.0",
+    "name": "estraverse",
+    "escapedName": "estraverse",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/eslint-scope"
+  ],
+  "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/estools/estraverse/issues"
+  },
   "description": "ECMAScript JS AST traversal functions",
-  "homepage": "https://github.com/estools/estraverse",
-  "main": "estraverse.js",
-  "version": "4.3.0",
-  "engines": {
-    "node": ">=4.0"
-  },
-  "maintainers": [
-    {
-      "name": "Yusuke Suzuki",
-      "email": "utatane.tea@gmail.com",
-      "web": "http://github.com/Constellation"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/estools/estraverse.git"
-  },
   "devDependencies": {
     "babel-preset-env": "^1.6.1",
@@ -32,9 +46,27 @@
     "mocha": "^2.1.0"
   },
+  "engines": {
+    "node": ">=4.0"
+  },
+  "homepage": "https://github.com/estools/estraverse",
   "license": "BSD-2-Clause",
+  "main": "estraverse.js",
+  "maintainers": [
+    {
+      "name": "Yusuke Suzuki",
+      "email": "utatane.tea@gmail.com",
+      "url": "http://github.com/Constellation"
+    }
+  ],
+  "name": "estraverse",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/estools/estraverse.git"
+  },
   "scripts": {
+    "lint": "jshint estraverse.js",
     "test": "npm run-script lint && npm run-script unit-test",
-    "lint": "jshint estraverse.js",
     "unit-test": "mocha --compilers js:babel-register"
-  }
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/esutils/package.json
===================================================================
--- trip-planner-front/node_modules/esutils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/esutils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,36 @@
 {
-  "name": "esutils",
+  "_args": [
+    [
+      "esutils@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "esutils@2.0.3",
+  "_id": "esutils@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+  "_location": "/esutils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "esutils@2.0.3",
+    "name": "esutils",
+    "escapedName": "esutils",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "/@babel/preset-modules"
+  ],
+  "_resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/estools/esutils/issues"
+  },
   "description": "utility box for ECMAScript language tools",
-  "homepage": "https://github.com/estools/esutils",
-  "main": "lib/utils.js",
-  "version": "2.0.3",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "files": [
-    "LICENSE.BSD",
-    "README.md",
-    "lib"
-  ],
-  "maintainers": [
-    {
-      "name": "Yusuke Suzuki",
-      "email": "utatane.tea@gmail.com",
-      "web": "http://github.com/Constellation"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/estools/esutils.git"
-  },
   "devDependencies": {
     "chai": "~1.7.2",
@@ -35,10 +41,36 @@
     "unicode-9.0.0": "~0.7.0"
   },
+  "directories": {
+    "lib": "./lib"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "LICENSE.BSD",
+    "README.md",
+    "lib"
+  ],
+  "homepage": "https://github.com/estools/esutils",
   "license": "BSD-2-Clause",
+  "main": "lib/utils.js",
+  "maintainers": [
+    {
+      "name": "Yusuke Suzuki",
+      "email": "utatane.tea@gmail.com",
+      "url": "http://github.com/Constellation"
+    }
+  ],
+  "name": "esutils",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/estools/esutils.git"
+  },
   "scripts": {
+    "generate-regex": "node tools/generate-identifier-regex.js",
+    "lint": "jshint lib/*.js",
     "test": "npm run-script lint && npm run-script unit-test",
-    "lint": "jshint lib/*.js",
-    "unit-test": "mocha --compilers coffee:coffee-script -R spec",
-    "generate-regex": "node tools/generate-identifier-regex.js"
-  }
+    "unit-test": "mocha --compilers coffee:coffee-script -R spec"
+  },
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/etag/package.json
===================================================================
--- trip-planner-front/node_modules/etag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/etag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,47 @@
 {
-  "name": "etag",
+  "_args": [
+    [
+      "etag@1.8.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "etag@1.8.1",
+  "_id": "etag@1.8.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+  "_location": "/etag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "etag@1.8.1",
+    "name": "etag",
+    "escapedName": "etag",
+    "rawSpec": "1.8.1",
+    "saveSpec": null,
+    "fetchSpec": "1.8.1"
+  },
+  "_requiredBy": [
+    "/express",
+    "/send"
+  ],
+  "_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+  "_spec": "1.8.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/etag/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "David Björklund",
+      "email": "david.bjorklund@gmail.com"
+    }
+  ],
   "description": "Create simple HTTP ETags",
-  "version": "1.8.1",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "David Björklund <david.bjorklund@gmail.com>"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "etag",
-    "http",
-    "res"
-  ],
-  "repository": "jshttp/etag",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -29,4 +59,7 @@
     "seedrandom": "2.4.3"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "LICENSE",
@@ -35,6 +68,15 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/etag#readme",
+  "keywords": [
+    "etag",
+    "http",
+    "res"
+  ],
+  "license": "MIT",
+  "name": "etag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/etag.git"
   },
   "scripts": {
@@ -44,4 +86,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "1.8.1"
 }
Index: trip-planner-front/node_modules/eventemitter-asyncresource/package.json
===================================================================
--- trip-planner-front/node_modules/eventemitter-asyncresource/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/eventemitter-asyncresource/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,40 @@
 {
-  "name": "eventemitter-asyncresource",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "eventemitter-asyncresource@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "eventemitter-asyncresource@1.0.0",
+  "_id": "eventemitter-asyncresource@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==",
+  "_location": "/eventemitter-asyncresource",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "eventemitter-asyncresource@1.0.0",
+    "name": "eventemitter-asyncresource",
+    "escapedName": "eventemitter-asyncresource",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/piscina"
+  ],
+  "_resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Anna Henningsen",
+    "email": "anna@addaleax.net"
+  },
+  "bugs": {
+    "url": "https://github.com/addaleax/eventemitter-asyncresource/issues"
+  },
   "description": "AsyncResource integration for EventEmitter",
-  "main": "./dist/src/index.js",
-  "exports": {
-    "import": "./dist/esm-wrapper.mjs",
-    "require": "./dist/src/index.js"
-  },
-  "types": "./dist/src/index.d.ts",
-  "scripts": {
-    "build": "tsc && gen-esm-wrapper . dist/esm-wrapper.mjs",
-    "lint": "standardx \"**/*.{ts,mjs,js,cjs}\" | snazzy",
-    "test": "npm run lint && npm run build && npm run test-only",
-    "test-only": "tap",
-    "prepack": "npm run build"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/addaleax/eventemitter-asyncresource"
-  },
-  "keywords": [
-    "EventEmitter",
-    "AsyncResource",
-    "async_hooks",
-    "events"
-  ],
-  "author": "Anna Henningsen <anna@addaleax.net>",
-  "license": "MIT",
   "devDependencies": {
     "@types/node": "^13.13.5",
@@ -48,4 +57,29 @@
     }
   },
+  "exports": {
+    "import": "./dist/esm-wrapper.mjs",
+    "require": "./dist/src/index.js"
+  },
+  "homepage": "https://github.com/addaleax/eventemitter-asyncresource#readme",
+  "keywords": [
+    "EventEmitter",
+    "AsyncResource",
+    "async_hooks",
+    "events"
+  ],
+  "license": "MIT",
+  "main": "./dist/src/index.js",
+  "name": "eventemitter-asyncresource",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/addaleax/eventemitter-asyncresource.git"
+  },
+  "scripts": {
+    "build": "tsc && gen-esm-wrapper . dist/esm-wrapper.mjs",
+    "lint": "standardx \"**/*.{ts,mjs,js,cjs}\" | snazzy",
+    "prepack": "npm run build",
+    "test": "npm run lint && npm run build && npm run test-only",
+    "test-only": "tap"
+  },
   "standardx": {
     "parser": "@typescript-eslint/parser",
@@ -53,4 +87,6 @@
       "@typescript-eslint/eslint-plugin"
     ]
-  }
+  },
+  "types": "./dist/src/index.d.ts",
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/eventemitter3/package.json
===================================================================
--- trip-planner-front/node_modules/eventemitter3/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/eventemitter3/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,48 @@
 {
-  "name": "eventemitter3",
-  "version": "4.0.7",
+  "_args": [
+    [
+      "eventemitter3@4.0.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "eventemitter3@4.0.7",
+  "_id": "eventemitter3@4.0.7",
+  "_inBundle": false,
+  "_integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+  "_location": "/eventemitter3",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "eventemitter3@4.0.7",
+    "name": "eventemitter3",
+    "escapedName": "eventemitter3",
+    "rawSpec": "4.0.7",
+    "saveSpec": null,
+    "fetchSpec": "4.0.7"
+  },
+  "_requiredBy": [
+    "/http-proxy"
+  ],
+  "_resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+  "_spec": "4.0.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Arnout Kazemier"
+  },
+  "bugs": {
+    "url": "https://github.com/primus/eventemitter3/issues"
+  },
   "description": "EventEmitter3 focuses on performance while maintaining a Node.js AND browser compatible interface.",
-  "main": "index.js",
-  "typings": "index.d.ts",
-  "scripts": {
-    "browserify": "rm -rf umd && mkdir umd && browserify index.js -s EventEmitter3 -o umd/eventemitter3.js",
-    "minify": "uglifyjs umd/eventemitter3.js --source-map -cm -o umd/eventemitter3.min.js",
-    "benchmark": "find benchmarks/run -name '*.js' -exec benchmarks/start.sh {} \\;",
-    "test": "nyc --reporter=html --reporter=text mocha test/test.js",
-    "prepublishOnly": "npm run browserify && npm run minify",
-    "test-browser": "node test/browser.js"
+  "devDependencies": {
+    "assume": "^2.2.0",
+    "browserify": "^16.5.0",
+    "mocha": "^8.0.1",
+    "nyc": "^15.1.0",
+    "pre-commit": "^1.2.0",
+    "sauce-browsers": "^2.0.0",
+    "sauce-test": "^1.3.3",
+    "uglify-js": "^3.9.0"
   },
   "files": [
@@ -18,8 +51,5 @@
     "umd"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/primus/eventemitter3.git"
-  },
+  "homepage": "https://github.com/primus/eventemitter3#readme",
   "keywords": [
     "EventEmitter",
@@ -39,18 +69,20 @@
     "subscribe"
   ],
-  "author": "Arnout Kazemier",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/primus/eventemitter3/issues"
+  "main": "index.js",
+  "name": "eventemitter3",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/primus/eventemitter3.git"
   },
-  "devDependencies": {
-    "assume": "^2.2.0",
-    "browserify": "^16.5.0",
-    "mocha": "^8.0.1",
-    "nyc": "^15.1.0",
-    "pre-commit": "^1.2.0",
-    "sauce-browsers": "^2.0.0",
-    "sauce-test": "^1.3.3",
-    "uglify-js": "^3.9.0"
-  }
+  "scripts": {
+    "benchmark": "find benchmarks/run -name '*.js' -exec benchmarks/start.sh {} \\;",
+    "browserify": "rm -rf umd && mkdir umd && browserify index.js -s EventEmitter3 -o umd/eventemitter3.js",
+    "minify": "uglifyjs umd/eventemitter3.js --source-map -cm -o umd/eventemitter3.min.js",
+    "prepublishOnly": "npm run browserify && npm run minify",
+    "test": "nyc --reporter=html --reporter=text mocha test/test.js",
+    "test-browser": "node test/browser.js"
+  },
+  "typings": "index.d.ts",
+  "version": "4.0.7"
 }
Index: trip-planner-front/node_modules/events/package.json
===================================================================
--- trip-planner-front/node_modules/events/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/events/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,41 @@
 {
-  "name": "events",
-  "version": "3.3.0",
-  "description": "Node's event emitter for all engines.",
-  "keywords": [
-    "events",
-    "eventEmitter",
-    "eventDispatcher",
-    "listeners"
+  "_args": [
+    [
+      "events@3.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com)",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/Gozala/events.git",
-    "web": "https://github.com/Gozala/events"
+  "_development": true,
+  "_from": "events@3.3.0",
+  "_id": "events@3.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+  "_location": "/events",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "events@3.3.0",
+    "name": "events",
+    "escapedName": "events",
+    "rawSpec": "3.3.0",
+    "saveSpec": null,
+    "fetchSpec": "3.3.0"
+  },
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+  "_spec": "3.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Irakli Gozalishvili",
+    "email": "rfobic@gmail.com",
+    "url": "http://jeditoolkit.com"
   },
   "bugs": {
     "url": "http://github.com/Gozala/events/issues/"
   },
-  "main": "./events.js",
-  "engines": {
-    "node": ">=0.8.x"
-  },
+  "description": "Node's event emitter for all engines.",
   "devDependencies": {
     "airtap": "^1.0.0",
@@ -30,8 +46,26 @@
     "tape": "^5.0.0"
   },
+  "engines": {
+    "node": ">=0.8.x"
+  },
+  "homepage": "https://github.com/Gozala/events#readme",
+  "keywords": [
+    "events",
+    "eventEmitter",
+    "eventDispatcher",
+    "listeners"
+  ],
+  "license": "MIT",
+  "main": "./events.js",
+  "name": "events",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/Gozala/events.git",
+    "web": "https://github.com/Gozala/events"
+  },
   "scripts": {
     "test": "node tests/index.js",
     "test:browsers": "airtap -- tests/index.js"
   },
-  "license": "MIT"
+  "version": "3.3.0"
 }
Index: trip-planner-front/node_modules/eventsource/package.json
===================================================================
--- trip-planner-front/node_modules/eventsource/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/eventsource/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,43 @@
 {
-  "name": "eventsource",
-  "version": "1.1.0",
-  "description": "W3C compliant EventSource client for Node.js and browser (polyfill)",
-  "keywords": [
-    "eventsource",
-    "http",
-    "streaming",
-    "sse",
-    "polyfill"
+  "_args": [
+    [
+      "eventsource@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "homepage": "http://github.com/EventSource/eventsource",
-  "author": "Aslak Hellesøy <aslak.hellesoy@gmail.com>",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/EventSource/eventsource.git"
+  "_development": true,
+  "_from": "eventsource@1.1.0",
+  "_id": "eventsource@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
+  "_location": "/eventsource",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "eventsource@1.1.0",
+    "name": "eventsource",
+    "escapedName": "eventsource",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/sockjs-client"
+  ],
+  "_resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Aslak Hellesøy",
+    "email": "aslak.hellesoy@gmail.com"
   },
   "bugs": {
     "url": "http://github.com/EventSource/eventsource/issues"
   },
-  "directories": {
-    "lib": "./lib"
+  "dependencies": {
+    "original": "^1.0.0"
   },
-  "main": "./lib/eventsource",
-  "license": "MIT",
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://github.com/EventSource/eventsource/raw/master/LICENSE"
-    }
-  ],
+  "description": "W3C compliant EventSource client for Node.js and browser (polyfill)",
   "devDependencies": {
     "buffer-from": "^1.1.1",
@@ -40,15 +50,36 @@
     "webpack": "^3.5.6"
   },
-  "scripts": {
-    "test": "mocha --reporter spec && standard",
-    "polyfill": "webpack lib/eventsource-polyfill.js example/eventsource-polyfill.js",
-    "postpublish": "git push && git push --tags",
-    "coverage": "nyc --reporter=html --reporter=text _mocha --reporter spec"
+  "directories": {
+    "lib": "./lib"
   },
   "engines": {
     "node": ">=0.12.0"
   },
-  "dependencies": {
-    "original": "^1.0.0"
+  "homepage": "http://github.com/EventSource/eventsource",
+  "keywords": [
+    "eventsource",
+    "http",
+    "streaming",
+    "sse",
+    "polyfill"
+  ],
+  "license": "MIT",
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "http://github.com/EventSource/eventsource/raw/master/LICENSE"
+    }
+  ],
+  "main": "./lib/eventsource",
+  "name": "eventsource",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/EventSource/eventsource.git"
+  },
+  "scripts": {
+    "coverage": "nyc --reporter=html --reporter=text _mocha --reporter spec",
+    "polyfill": "webpack lib/eventsource-polyfill.js example/eventsource-polyfill.js",
+    "postpublish": "git push && git push --tags",
+    "test": "mocha --reporter spec && standard"
   },
   "standard": {
@@ -56,4 +87,5 @@
       "example/eventsource-polyfill.js"
     ]
-  }
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/execa/package.json
===================================================================
--- trip-planner-front/node_modules/execa/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/execa/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,69 +1,105 @@
 {
-	"name": "execa",
-	"version": "1.0.0",
-	"description": "A better `child_process`",
-	"license": "MIT",
-	"repository": "sindresorhus/execa",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && nyc ava"
-	},
-	"files": [
-		"index.js",
-		"lib"
-	],
-	"keywords": [
-		"exec",
-		"child",
-		"process",
-		"execute",
-		"fork",
-		"execfile",
-		"spawn",
-		"file",
-		"shell",
-		"bin",
-		"binary",
-		"binaries",
-		"npm",
-		"path",
-		"local"
-	],
-	"dependencies": {
-		"cross-spawn": "^6.0.0",
-		"get-stream": "^4.0.0",
-		"is-stream": "^1.1.0",
-		"npm-run-path": "^2.0.0",
-		"p-finally": "^1.0.0",
-		"signal-exit": "^3.0.0",
-		"strip-eof": "^1.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"cat-names": "^1.0.2",
-		"coveralls": "^3.0.1",
-		"delay": "^3.0.0",
-		"is-running": "^2.0.0",
-		"nyc": "^13.0.1",
-		"tempfile": "^2.0.0",
-		"xo": "*"
-	},
-	"nyc": {
-		"reporter": [
-			"text",
-			"lcov"
-		],
-		"exclude": [
-			"**/fixtures/**",
-			"**/test.js",
-			"**/test/**"
-		]
-	}
+  "_args": [
+    [
+      "execa@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "execa@1.0.0",
+  "_id": "execa@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+  "_location": "/execa",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "execa@1.0.0",
+    "name": "execa",
+    "escapedName": "execa",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/default-gateway"
+  ],
+  "_resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/execa/issues"
+  },
+  "dependencies": {
+    "cross-spawn": "^6.0.0",
+    "get-stream": "^4.0.0",
+    "is-stream": "^1.1.0",
+    "npm-run-path": "^2.0.0",
+    "p-finally": "^1.0.0",
+    "signal-exit": "^3.0.0",
+    "strip-eof": "^1.0.0"
+  },
+  "description": "A better `child_process`",
+  "devDependencies": {
+    "ava": "*",
+    "cat-names": "^1.0.2",
+    "coveralls": "^3.0.1",
+    "delay": "^3.0.0",
+    "is-running": "^2.0.0",
+    "nyc": "^13.0.1",
+    "tempfile": "^2.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/sindresorhus/execa#readme",
+  "keywords": [
+    "exec",
+    "child",
+    "process",
+    "execute",
+    "fork",
+    "execfile",
+    "spawn",
+    "file",
+    "shell",
+    "bin",
+    "binary",
+    "binaries",
+    "npm",
+    "path",
+    "local"
+  ],
+  "license": "MIT",
+  "name": "execa",
+  "nyc": {
+    "reporter": [
+      "text",
+      "lcov"
+    ],
+    "exclude": [
+      "**/fixtures/**",
+      "**/test.js",
+      "**/test/**"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/execa.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/expand-brackets/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/expand-brackets"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object.",
-  "version": "0.2.5",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/define-property",
+  "_args": [
+    [
+      "define-property@0.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-property@0.2.5",
+  "_id": "define-property@0.2.5",
+  "_inBundle": false,
+  "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+  "_location": "/expand-brackets/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@0.2.5",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "0.2.5",
+    "saveSpec": null,
+    "fetchSpec": "0.2.5"
+  },
+  "_requiredBy": [
+    "/expand-brackets"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+  "_spec": "0.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "dependencies": {
+    "is-descriptor": "^0.1.0"
   },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Define a non-enumerable property on an object.",
   "devDependencies": {
     "mocha": "*",
     "should": "^7.0.4"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -36,4 +63,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -46,6 +83,4 @@
     }
   },
-  "dependencies": {
-    "is-descriptor": "^0.1.0"
-  }
+  "version": "0.2.5"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/extend-shallow/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/extend-shallow/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/extend-shallow/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,43 @@
 {
-  "name": "extend-shallow",
-  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
-  "version": "2.0.1",
-  "homepage": "https://github.com/jonschlinkert/extend-shallow",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/extend-shallow",
+  "_args": [
+    [
+      "extend-shallow@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extend-shallow@2.0.1",
+  "_id": "extend-shallow@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+  "_location": "/expand-brackets/extend-shallow",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend-shallow@2.0.1",
+    "name": "extend-shallow",
+    "escapedName": "extend-shallow",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/expand-brackets"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/extend-shallow/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-extendable": "^0.1.0"
   },
+  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
   "devDependencies": {
     "array-slice": "^0.2.3",
@@ -35,4 +52,11 @@
     "should": "^7.0.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/extend-shallow",
   "keywords": [
     "assign",
@@ -53,4 +77,15 @@
     "utils",
     "value"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "extend-shallow",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/extend-shallow.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/expand-brackets/is-accessor-descriptor/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/expand-brackets/is-accessor-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-accessor-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,56 @@
 {
-  "name": "is-accessor-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-accessor-descriptor",
+  "_args": [
+    [
+      "is-accessor-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-accessor-descriptor@0.1.6",
+  "_id": "is-accessor-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+  "_location": "/expand-brackets/is-accessor-descriptor",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-accessor-descriptor@0.1.6",
+    "name": "is-accessor-descriptor",
+    "escapedName": "is-accessor-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/expand-brackets/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +71,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-accessor-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -58,4 +94,5 @@
     ],
     "layout": "default"
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/expand-brackets/is-data-descriptor/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/expand-brackets/is-data-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-data-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,56 @@
 {
-  "name": "is-data-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
-  "version": "0.1.4",
-  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-data-descriptor",
+  "_args": [
+    [
+      "is-data-descriptor@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-data-descriptor@0.1.4",
+  "_id": "is-data-descriptor@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+  "_location": "/expand-brackets/is-data-descriptor",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-data-descriptor@0.1.4",
+    "name": "is-data-descriptor",
+    "escapedName": "is-data-descriptor",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/expand-brackets/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-data-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +71,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-data-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -57,4 +93,5 @@
       "gulp-format-md"
     ]
-  }
+  },
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,52 @@
 {
-  "name": "is-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "is-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-descriptor",
+  "_development": true,
+  "_from": "is-descriptor@0.1.6",
+  "_id": "is-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+  "_location": "/expand-brackets/is-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-descriptor@0.1.6",
+    "name": "is-descriptor",
+    "escapedName": "is-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/expand-brackets/define-property"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "is-accessor-descriptor": "^0.1.6",
@@ -30,8 +54,16 @@
     "kind-of": "^5.0.0"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.4.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-descriptor",
   "keywords": [
     "accessor",
@@ -52,4 +84,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -72,4 +114,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/is-extendable/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/is-extendable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/is-extendable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,50 @@
 {
-  "name": "is-extendable",
-  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/is-extendable",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-extendable",
+  "_args": [
+    [
+      "is-extendable@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-extendable@0.1.1",
+  "_id": "is-extendable@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+  "_location": "/expand-brackets/is-extendable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-extendable@0.1.1",
+    "name": "is-extendable",
+    "escapedName": "is-extendable",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/expand-brackets/extend-shallow"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-extendable/issues"
   },
-  "license": "MIT",
+  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
+  "devDependencies": {
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js"
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "devDependencies": {
-    "mocha": "*"
-  },
+  "homepage": "https://github.com/jonschlinkert/is-extendable",
   "keywords": [
     "array",
@@ -36,4 +60,14 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-extendable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-extendable.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verbiage": {
     "related": {
@@ -48,4 +82,5 @@
       ]
     }
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,74 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "5.1.0",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "James (https://twitter.com/aretecode)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)",
-    "tunnckoCore (https://i.am.charlike.online)"
+  "_args": [
+    [
+      "kind-of@5.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@5.1.0",
+  "_id": "kind-of@5.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+  "_location": "/expand-brackets/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@5.1.0",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "5.1.0",
+    "saveSpec": null,
+    "fetchSpec": "5.1.0"
+  },
+  "_requiredBy": [
+    "/expand-brackets/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+  "_spec": "5.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "James",
+      "url": "https://twitter.com/aretecode"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    },
+    {
+      "name": "tunnckoCore",
+      "url": "https://i.am.charlike.online"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -41,4 +81,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -64,4 +111,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -88,4 +146,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "5.1.0"
 }
Index: trip-planner-front/node_modules/expand-brackets/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/expand-brackets/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/expand-brackets/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/expand-brackets/package.json
===================================================================
--- trip-planner-front/node_modules/expand-brackets/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/expand-brackets/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,61 @@
 {
-  "name": "expand-brackets",
-  "description": "Expand POSIX bracket expressions (character classes) in glob patterns.",
-  "version": "2.1.4",
-  "homepage": "https://github.com/jonschlinkert/expand-brackets",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Elan Shanker (https://github.com/es128)",
-    "Eugene Sharygin (https://github.com/eush77)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)",
-    "Martin Kolárik <martin@kolarik.sk> (http://kolarik.sk)"
+  "_args": [
+    [
+      "expand-brackets@2.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/expand-brackets",
+  "_development": true,
+  "_from": "expand-brackets@2.1.4",
+  "_id": "expand-brackets@2.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+  "_location": "/expand-brackets",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "expand-brackets@2.1.4",
+    "name": "expand-brackets",
+    "escapedName": "expand-brackets",
+    "rawSpec": "2.1.4",
+    "saveSpec": null,
+    "fetchSpec": "2.1.4"
+  },
+  "_requiredBy": [
+    "/extglob"
+  ],
+  "_resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+  "_spec": "2.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/expand-brackets/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
+  "contributors": [
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Eugene Sharygin",
+      "url": "https://github.com/eush77"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Martin Kolárik",
+      "email": "martin@kolarik.sk",
+      "url": "http://kolarik.sk"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "debug": "^2.3.3",
@@ -36,4 +67,5 @@
     "to-regex": "^3.0.1"
   },
+  "description": "Expand POSIX bracket expressions (character classes) in glob patterns.",
   "devDependencies": {
     "bash-match": "^0.1.1",
@@ -45,4 +77,12 @@
     "yargs-parser": "^4.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/jonschlinkert/expand-brackets",
   "keywords": [
     "bracket",
@@ -53,4 +93,14 @@
     "posix"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "expand-brackets",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/expand-brackets.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -82,4 +132,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.1.4"
 }
Index: trip-planner-front/node_modules/express/node_modules/array-flatten/package.json
===================================================================
--- trip-planner-front/node_modules/express/node_modules/array-flatten/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/express/node_modules/array-flatten/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,52 @@
 {
-  "name": "array-flatten",
-  "version": "1.1.1",
+  "_args": [
+    [
+      "array-flatten@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "array-flatten@1.1.1",
+  "_id": "array-flatten@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+  "_location": "/express/array-flatten",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "array-flatten@1.1.1",
+    "name": "array-flatten",
+    "escapedName": "array-flatten",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Blake Embrey",
+    "email": "hello@blakeembrey.com",
+    "url": "http://blakeembrey.me"
+  },
+  "bugs": {
+    "url": "https://github.com/blakeembrey/array-flatten/issues"
+  },
   "description": "Flatten an array of nested arrays into a single flat array",
-  "main": "array-flatten.js",
+  "devDependencies": {
+    "istanbul": "^0.3.13",
+    "mocha": "^2.2.4",
+    "pre-commit": "^1.0.7",
+    "standard": "^3.7.3"
+  },
   "files": [
     "array-flatten.js",
     "LICENSE"
   ],
-  "scripts": {
-    "test": "istanbul cover _mocha -- -R spec"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/blakeembrey/array-flatten.git"
-  },
+  "homepage": "https://github.com/blakeembrey/array-flatten",
   "keywords": [
     "array",
@@ -21,19 +55,14 @@
     "depth"
   ],
-  "author": {
-    "name": "Blake Embrey",
-    "email": "hello@blakeembrey.com",
-    "url": "http://blakeembrey.me"
+  "license": "MIT",
+  "main": "array-flatten.js",
+  "name": "array-flatten",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/blakeembrey/array-flatten.git"
   },
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/blakeembrey/array-flatten/issues"
+  "scripts": {
+    "test": "istanbul cover _mocha -- -R spec"
   },
-  "homepage": "https://github.com/blakeembrey/array-flatten",
-  "devDependencies": {
-    "istanbul": "^0.3.13",
-    "mocha": "^2.2.4",
-    "pre-commit": "^1.0.7",
-    "standard": "^3.7.3"
-  }
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/express/node_modules/cookie/package.json
===================================================================
--- trip-planner-front/node_modules/express/node_modules/cookie/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/express/node_modules/cookie/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,46 @@
 {
-  "name": "cookie",
+  "_args": [
+    [
+      "cookie@0.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cookie@0.4.0",
+  "_id": "cookie@0.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+  "_location": "/express/cookie",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cookie@0.4.0",
+    "name": "cookie",
+    "escapedName": "cookie",
+    "rawSpec": "0.4.0",
+    "saveSpec": null,
+    "fetchSpec": "0.4.0"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+  "_spec": "0.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Roman Shtylman",
+    "email": "shtylman@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/cookie/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
   "description": "HTTP server cookie parsing and serialization",
-  "version": "0.4.0",
-  "author": "Roman Shtylman <shtylman@gmail.com>",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "cookie",
-    "cookies"
-  ],
-  "repository": "jshttp/cookie",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -21,4 +51,7 @@
     "mocha": "6.1.4"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "HISTORY.md",
@@ -27,6 +60,14 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/cookie#readme",
+  "keywords": [
+    "cookie",
+    "cookies"
+  ],
+  "license": "MIT",
+  "name": "cookie",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/cookie.git"
   },
   "scripts": {
@@ -37,4 +78,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "0.4.0"
 }
Index: trip-planner-front/node_modules/express/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/express/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/express/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/express/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/express"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/express/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/express/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/express/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/express/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/express/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/express/package.json
===================================================================
--- trip-planner-front/node_modules/express/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/express/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,68 @@
 {
-  "name": "express",
-  "description": "Fast, unopinionated, minimalist web framework",
-  "version": "4.17.1",
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_args": [
+    [
+      "express@4.17.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "express@4.17.1",
+  "_id": "express@4.17.1",
+  "_inBundle": false,
+  "_integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+  "_location": "/express",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "express@4.17.1",
+    "name": "express",
+    "escapedName": "express",
+    "rawSpec": "4.17.1",
+    "saveSpec": null,
+    "fetchSpec": "4.17.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+  "_spec": "4.17.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "bugs": {
+    "url": "https://github.com/expressjs/express/issues"
+  },
   "contributors": [
-    "Aaron Heckmann <aaron.heckmann+github@gmail.com>",
-    "Ciaran Jessup <ciaranj@gmail.com>",
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Guillermo Rauch <rauchg@gmail.com>",
-    "Jonathan Ong <me@jongleberry.com>",
-    "Roman Shtylman <shtylman+expressjs@gmail.com>",
-    "Young Jae Sim <hanul@hanul.me>"
-  ],
-  "license": "MIT",
-  "repository": "expressjs/express",
-  "homepage": "http://expressjs.com/",
-  "keywords": [
-    "express",
-    "framework",
-    "sinatra",
-    "web",
-    "rest",
-    "restful",
-    "router",
-    "app",
-    "api"
+    {
+      "name": "Aaron Heckmann",
+      "email": "aaron.heckmann+github@gmail.com"
+    },
+    {
+      "name": "Ciaran Jessup",
+      "email": "ciaranj@gmail.com"
+    },
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Guillermo Rauch",
+      "email": "rauchg@gmail.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com"
+    },
+    {
+      "name": "Roman Shtylman",
+      "email": "shtylman+expressjs@gmail.com"
+    },
+    {
+      "name": "Young Jae Sim",
+      "email": "hanul@hanul.me"
+    }
   ],
   "dependencies": {
@@ -59,4 +98,5 @@
     "vary": "~1.1.2"
   },
+  "description": "Fast, unopinionated, minimalist web framework",
   "devDependencies": {
     "after": "0.8.2",
@@ -89,4 +129,22 @@
     "lib/"
   ],
+  "homepage": "http://expressjs.com/",
+  "keywords": [
+    "express",
+    "framework",
+    "sinatra",
+    "web",
+    "rest",
+    "restful",
+    "router",
+    "app",
+    "api"
+  ],
+  "license": "MIT",
+  "name": "express",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/expressjs/express.git"
+  },
   "scripts": {
     "lint": "eslint .",
@@ -95,4 +153,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
     "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
-  }
+  },
+  "version": "4.17.1"
 }
Index: trip-planner-front/node_modules/extend-shallow/package.json
===================================================================
--- trip-planner-front/node_modules/extend-shallow/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extend-shallow/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,59 @@
 {
-  "name": "extend-shallow",
-  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
-  "version": "3.0.2",
-  "homepage": "https://github.com/jonschlinkert/extend-shallow",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "extend-shallow@3.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/extend-shallow",
+  "_development": true,
+  "_from": "extend-shallow@3.0.2",
+  "_id": "extend-shallow@3.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+  "_location": "/extend-shallow",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend-shallow@3.0.2",
+    "name": "extend-shallow",
+    "escapedName": "extend-shallow",
+    "rawSpec": "3.0.2",
+    "saveSpec": null,
+    "fetchSpec": "3.0.2"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/regex-not",
+    "/split-string",
+    "/to-regex",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+  "_spec": "3.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/extend-shallow/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "assign-symbols": "^1.0.0",
     "is-extendable": "^1.0.1"
   },
+  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
   "devDependencies": {
     "array-slice": "^1.0.0",
@@ -39,4 +67,11 @@
     "object-assign": "^4.1.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/extend-shallow",
   "keywords": [
     "assign",
@@ -58,4 +93,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "extend-shallow",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/extend-shallow.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -80,4 +125,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "3.0.2"
 }
Index: trip-planner-front/node_modules/extend/package.json
===================================================================
--- trip-planner-front/node_modules/extend/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extend/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,80 @@
 {
-	"name": "extend",
-	"author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)",
-	"version": "3.0.2",
-	"description": "Port of jQuery.extend for node.js and the browser",
-	"main": "index",
-	"scripts": {
-		"pretest": "npm run lint",
-		"test": "npm run tests-only",
-		"posttest": "npm run coverage-quiet",
-		"tests-only": "node test",
-		"coverage": "covert test/index.js",
-		"coverage-quiet": "covert test/index.js --quiet",
-		"lint": "npm run jscs && npm run eslint",
-		"jscs": "jscs *.js */*.js",
-		"eslint": "eslint *.js */*.js"
-	},
-	"contributors": [
-		{
-			"name": "Jordan Harband",
-			"url": "https://github.com/ljharb"
-		}
-	],
-	"keywords": [
-		"extend",
-		"clone",
-		"merge"
-	],
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/justmoon/node-extend.git"
-	},
-	"dependencies": {},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^12.2.1",
-		"covert": "^1.1.0",
-		"eslint": "^4.19.1",
-		"jscs": "^3.0.7",
-		"tape": "^4.9.1"
-	},
-	"license": "MIT"
+  "_args": [
+    [
+      "extend@3.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extend@3.0.2",
+  "_id": "extend@3.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+  "_location": "/extend",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend@3.0.2",
+    "name": "extend",
+    "escapedName": "extend",
+    "rawSpec": "3.0.2",
+    "saveSpec": null,
+    "fetchSpec": "3.0.2"
+  },
+  "_requiredBy": [
+    "/dom-serialize",
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+  "_spec": "3.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Stefan Thomas",
+    "email": "justmoon@members.fsf.org",
+    "url": "http://www.justmoon.net"
+  },
+  "bugs": {
+    "url": "https://github.com/justmoon/node-extend/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jordan Harband",
+      "url": "https://github.com/ljharb"
+    }
+  ],
+  "dependencies": {},
+  "description": "Port of jQuery.extend for node.js and the browser",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^12.2.1",
+    "covert": "^1.1.0",
+    "eslint": "^4.19.1",
+    "jscs": "^3.0.7",
+    "tape": "^4.9.1"
+  },
+  "homepage": "https://github.com/justmoon/node-extend#readme",
+  "keywords": [
+    "extend",
+    "clone",
+    "merge"
+  ],
+  "license": "MIT",
+  "main": "index",
+  "name": "extend",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/justmoon/node-extend.git"
+  },
+  "scripts": {
+    "coverage": "covert test/index.js",
+    "coverage-quiet": "covert test/index.js --quiet",
+    "eslint": "eslint *.js */*.js",
+    "jscs": "jscs *.js */*.js",
+    "lint": "npm run jscs && npm run eslint",
+    "posttest": "npm run coverage-quiet",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only",
+    "tests-only": "node test"
+  },
+  "version": "3.0.2"
 }
Index: trip-planner-front/node_modules/external-editor/package.json
===================================================================
--- trip-planner-front/node_modules/external-editor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/external-editor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,47 @@
 {
-  "name": "external-editor",
-  "version": "3.1.0",
-  "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT",
-  "main": "main/index.js",
-  "types": "main/index.d.ts",
-  "scripts": {
-    "test": "mocha --recursive --require ts-node/register --timeout 10000 ./test/spec 'test/spec/**/*.ts'",
-    "compile": "tsc -p tsconfig.json",
-    "lint": "tslint './src/**/*.ts' './test/**/*.ts'"
+  "_args": [
+    [
+      "external-editor@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "external-editor@3.1.0",
+  "_id": "external-editor@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+  "_location": "/external-editor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "external-editor@3.1.0",
+    "name": "external-editor",
+    "escapedName": "external-editor",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/mrkmg/node-external-editor.git"
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kevin Gravier",
+    "email": "kevin@mrkmg.com",
+    "url": "https://mrkmg.com"
   },
-  "keywords": [
-    "editor",
-    "external",
-    "user",
-    "visual"
-  ],
-  "author": "Kevin Gravier <kevin@mrkmg.com> (https://mrkmg.com)",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/mrkmg/node-external-editor/issues"
   },
-  "homepage": "https://github.com/mrkmg/node-external-editor#readme",
+  "config": {
+    "ndt": {
+      "versions": [
+        "major"
+      ]
+    }
+  },
   "dependencies": {
     "chardet": "^0.7.0",
@@ -31,7 +49,5 @@
     "tmp": "^0.0.33"
   },
-  "engines": {
-    "node": ">=4"
-  },
+  "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT",
   "devDependencies": {
     "@types/chai": "^4.1.4",
@@ -47,4 +63,7 @@
     "typescript": "^3.5.2"
   },
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "main",
@@ -52,10 +71,24 @@
     "example_async.js"
   ],
-  "config": {
-    "ndt": {
-      "versions": [
-        "major"
-      ]
-    }
-  }
+  "homepage": "https://github.com/mrkmg/node-external-editor#readme",
+  "keywords": [
+    "editor",
+    "external",
+    "user",
+    "visual"
+  ],
+  "license": "MIT",
+  "main": "main/index.js",
+  "name": "external-editor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mrkmg/node-external-editor.git"
+  },
+  "scripts": {
+    "compile": "tsc -p tsconfig.json",
+    "lint": "tslint './src/**/*.ts' './test/**/*.ts'",
+    "test": "mocha --recursive --require ts-node/register --timeout 10000 ./test/spec 'test/spec/**/*.ts'"
+  },
+  "types": "main/index.d.ts",
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/extglob/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/extglob/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extglob/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,54 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/define-property",
+  "_args": [
+    [
+      "define-property@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-property@1.0.0",
+  "_id": "define-property@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+  "_location": "/extglob/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@1.0.0",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/extglob"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-descriptor": "^1.0.0"
   },
+  "description": "Define a non-enumerable property on an object.",
   "devDependencies": {
     "gulp-format-md": "^0.1.12",
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -39,4 +63,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -59,4 +93,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/extglob/node_modules/extend-shallow/package.json
===================================================================
--- trip-planner-front/node_modules/extglob/node_modules/extend-shallow/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extglob/node_modules/extend-shallow/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,43 @@
 {
-  "name": "extend-shallow",
-  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
-  "version": "2.0.1",
-  "homepage": "https://github.com/jonschlinkert/extend-shallow",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/extend-shallow",
+  "_args": [
+    [
+      "extend-shallow@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extend-shallow@2.0.1",
+  "_id": "extend-shallow@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+  "_location": "/extglob/extend-shallow",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend-shallow@2.0.1",
+    "name": "extend-shallow",
+    "escapedName": "extend-shallow",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/extglob"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/extend-shallow/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-extendable": "^0.1.0"
   },
+  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
   "devDependencies": {
     "array-slice": "^0.2.3",
@@ -35,4 +52,11 @@
     "should": "^7.0.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/extend-shallow",
   "keywords": [
     "assign",
@@ -53,4 +77,15 @@
     "utils",
     "value"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "extend-shallow",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/extend-shallow.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/extglob/node_modules/is-extendable/package.json
===================================================================
--- trip-planner-front/node_modules/extglob/node_modules/is-extendable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extglob/node_modules/is-extendable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,50 @@
 {
-  "name": "is-extendable",
-  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/is-extendable",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-extendable",
+  "_args": [
+    [
+      "is-extendable@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-extendable@0.1.1",
+  "_id": "is-extendable@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+  "_location": "/extglob/is-extendable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-extendable@0.1.1",
+    "name": "is-extendable",
+    "escapedName": "is-extendable",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/extglob/extend-shallow"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-extendable/issues"
   },
-  "license": "MIT",
+  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
+  "devDependencies": {
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js"
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "devDependencies": {
-    "mocha": "*"
-  },
+  "homepage": "https://github.com/jonschlinkert/is-extendable",
   "keywords": [
     "array",
@@ -36,4 +60,14 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-extendable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-extendable.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verbiage": {
     "related": {
@@ -48,4 +82,5 @@
       ]
     }
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/extglob/package.json
===================================================================
--- trip-planner-front/node_modules/extglob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extglob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,68 @@
 {
-  "name": "extglob",
-  "description": "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.",
-  "version": "2.0.4",
-  "homepage": "https://github.com/micromatch/extglob",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Devon Govett (http://badassjs.com)",
-    "Isiah Meadows (https://www.isiahmeadows.com)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Matt Bierner (http://mattbierner.com)",
-    "Shinnosuke Watanabe (https://shinnn.github.io)"
+  "_args": [
+    [
+      "extglob@2.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/extglob",
+  "_development": true,
+  "_from": "extglob@2.0.4",
+  "_id": "extglob@2.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+  "_location": "/extglob",
+  "_phantomChildren": {
+    "is-descriptor": "1.0.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extglob@2.0.4",
+    "name": "extglob",
+    "escapedName": "extglob",
+    "rawSpec": "2.0.4",
+    "saveSpec": null,
+    "fetchSpec": "2.0.4"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+  "_spec": "2.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/extglob/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Devon Govett",
+      "url": "http://badassjs.com"
+    },
+    {
+      "name": "Isiah Meadows",
+      "url": "https://www.isiahmeadows.com"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Matt Bierner",
+      "url": "http://mattbierner.com"
+    },
+    {
+      "name": "Shinnosuke Watanabe",
+      "url": "https://shinnn.github.io"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "array-unique": "^0.3.2",
@@ -39,4 +75,5 @@
     "to-regex": "^3.0.1"
   },
+  "description": "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.",
   "devDependencies": {
     "bash-match": "^1.0.2",
@@ -56,4 +93,12 @@
     "multimatch": "^2.1.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/micromatch/extglob",
   "keywords": [
     "bash",
@@ -70,4 +115,5 @@
     "wildcard"
   ],
+  "license": "MIT",
   "lintDeps": {
     "devDependencies": {
@@ -80,4 +126,13 @@
       }
     }
+  },
+  "main": "index.js",
+  "name": "extglob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/extglob.git"
+  },
+  "scripts": {
+    "test": "mocha"
   },
   "verb": {
@@ -105,4 +160,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.0.4"
 }
Index: trip-planner-front/node_modules/extsprintf/package.json
===================================================================
--- trip-planner-front/node_modules/extsprintf/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/extsprintf/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,48 @@
 {
-	"name": "extsprintf",
-	"version": "1.3.0",
-	"description": "extended POSIX-style sprintf",
-	"main": "./lib/extsprintf.js",
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/davepacheco/node-extsprintf.git"
-	},
-	"engines": [
-		"node >=0.6.0"
-	],
-	"license": "MIT"
+  "_args": [
+    [
+      "extsprintf@1.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extsprintf@1.3.0",
+  "_id": "extsprintf@1.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+  "_location": "/extsprintf",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extsprintf@1.3.0",
+    "name": "extsprintf",
+    "escapedName": "extsprintf",
+    "rawSpec": "1.3.0",
+    "saveSpec": null,
+    "fetchSpec": "1.3.0"
+  },
+  "_requiredBy": [
+    "/jsprim",
+    "/verror"
+  ],
+  "_resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+  "_spec": "1.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/davepacheco/node-extsprintf/issues"
+  },
+  "description": "extended POSIX-style sprintf",
+  "engines": [
+    "node >=0.6.0"
+  ],
+  "homepage": "https://github.com/davepacheco/node-extsprintf#readme",
+  "license": "MIT",
+  "main": "./lib/extsprintf.js",
+  "name": "extsprintf",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/davepacheco/node-extsprintf.git"
+  },
+  "version": "1.3.0"
 }
Index: trip-planner-front/node_modules/fast-deep-equal/package.json
===================================================================
--- trip-planner-front/node_modules/fast-deep-equal/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fast-deep-equal/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,48 @@
 {
-  "name": "fast-deep-equal",
-  "version": "3.1.3",
-  "description": "Fast deep equal",
-  "main": "index.js",
-  "scripts": {
-    "eslint": "eslint *.js benchmark/*.js spec/*.js",
-    "build": "node build",
-    "benchmark": "npm i && npm run build && cd ./benchmark && npm i && node ./",
-    "test-spec": "mocha spec/*.spec.js -R spec",
-    "test-cov": "nyc npm run test-spec",
-    "test-ts": "tsc --target ES5 --noImplicitAny index.d.ts",
-    "test": "npm run build && npm run eslint && npm run test-ts && npm run test-cov",
-    "prepublish": "npm run build"
+  "_args": [
+    [
+      "fast-deep-equal@3.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fast-deep-equal@3.1.3",
+  "_id": "fast-deep-equal@3.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+  "_location": "/fast-deep-equal",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fast-deep-equal@3.1.3",
+    "name": "fast-deep-equal",
+    "escapedName": "fast-deep-equal",
+    "rawSpec": "3.1.3",
+    "saveSpec": null,
+    "fetchSpec": "3.1.3"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/fast-deep-equal.git"
+  "_requiredBy": [
+    "/ajv",
+    "/copy-webpack-plugin/ajv",
+    "/css-minimizer-webpack-plugin/ajv",
+    "/har-validator/ajv",
+    "/mini-css-extract-plugin/ajv",
+    "/schema-utils/ajv",
+    "/terser-webpack-plugin/ajv",
+    "/webpack-dev-middleware/ajv",
+    "/webpack-dev-server/ajv",
+    "/webpack/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+  "_spec": "3.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "fast",
-    "equal",
-    "deep-equal"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/fast-deep-equal/issues"
   },
-  "homepage": "https://github.com/epoberezkin/fast-deep-equal#readme",
+  "description": "Fast deep equal",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -41,4 +57,20 @@
     "typescript": "^3.9.5"
   },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "react.js",
+    "react.d.ts",
+    "es6/"
+  ],
+  "homepage": "https://github.com/epoberezkin/fast-deep-equal#readme",
+  "keywords": [
+    "fast",
+    "equal",
+    "deep-equal"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "fast-deep-equal",
   "nyc": {
     "exclude": [
@@ -51,11 +83,19 @@
     ]
   },
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "react.js",
-    "react.d.ts",
-    "es6/"
-  ],
-  "types": "index.d.ts"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/fast-deep-equal.git"
+  },
+  "scripts": {
+    "benchmark": "npm i && npm run build && cd ./benchmark && npm i && node ./",
+    "build": "node build",
+    "eslint": "eslint *.js benchmark/*.js spec/*.js",
+    "prepublish": "npm run build",
+    "test": "npm run build && npm run eslint && npm run test-ts && npm run test-cov",
+    "test-cov": "nyc npm run test-spec",
+    "test-spec": "mocha spec/*.spec.js -R spec",
+    "test-ts": "tsc --target ES5 --noImplicitAny index.d.ts"
+  },
+  "types": "index.d.ts",
+  "version": "3.1.3"
 }
Index: trip-planner-front/node_modules/fast-glob/package.json
===================================================================
--- trip-planner-front/node_modules/fast-glob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fast-glob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,49 @@
 {
-  "name": "fast-glob",
-  "version": "3.2.7",
-  "description": "It's a very fast and efficient glob library for Node.js",
-  "license": "MIT",
-  "repository": "mrmlnc/fast-glob",
+  "_args": [
+    [
+      "fast-glob@3.2.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fast-glob@3.2.7",
+  "_id": "fast-glob@3.2.7",
+  "_inBundle": false,
+  "_integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+  "_location": "/fast-glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fast-glob@3.2.7",
+    "name": "fast-glob",
+    "escapedName": "fast-glob",
+    "rawSpec": "3.2.7",
+    "saveSpec": null,
+    "fetchSpec": "3.2.7"
+  },
+  "_requiredBy": [
+    "/copy-webpack-plugin",
+    "/globby",
+    "/stylus-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+  "_spec": "3.2.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Denis Malinochkin",
     "url": "https://mrmlnc.com"
   },
-  "engines": {
-    "node": ">=8"
+  "bugs": {
+    "url": "https://github.com/mrmlnc/fast-glob/issues"
   },
-  "main": "out/index.js",
-  "typings": "out/index.d.ts",
-  "files": [
-    "out",
-    "!out/{benchmark,tests}",
-    "!out/**/*.map",
-    "!out/**/*.spec.*"
-  ],
-  "keywords": [
-    "glob",
-    "patterns",
-    "fast",
-    "implementation"
-  ],
+  "dependencies": {
+    "@nodelib/fs.stat": "^2.0.2",
+    "@nodelib/fs.walk": "^1.2.3",
+    "glob-parent": "^5.1.2",
+    "merge2": "^1.3.0",
+    "micromatch": "^4.0.4"
+  },
+  "description": "It's a very fast and efficient glob library for Node.js",
   "devDependencies": {
     "@nodelib/fs.macchiato": "^1.0.1",
@@ -57,38 +77,56 @@
     "typescript": "^3.6.3"
   },
-  "dependencies": {
-    "@nodelib/fs.stat": "^2.0.2",
-    "@nodelib/fs.walk": "^1.2.3",
-    "glob-parent": "^5.1.2",
-    "merge2": "^1.3.0",
-    "micromatch": "^4.0.4"
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "out",
+    "!out/{benchmark,tests}",
+    "!out/**/*.map",
+    "!out/**/*.spec.*"
+  ],
+  "homepage": "https://github.com/mrmlnc/fast-glob#readme",
+  "keywords": [
+    "glob",
+    "patterns",
+    "fast",
+    "implementation"
+  ],
+  "license": "MIT",
+  "main": "out/index.js",
+  "name": "fast-glob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mrmlnc/fast-glob.git"
   },
   "scripts": {
+    "bench": "npm run bench-async && npm run bench-stream && npm run bench-sync",
+    "bench-async": "npm run bench-async-flatten && npm run bench-async-deep && npm run bench-async-partial-flatten && npm run bench-async-partial-deep",
+    "bench-async-deep": "node ./out/benchmark --mode async --pattern \"**\"",
+    "bench-async-flatten": "node ./out/benchmark --mode async --pattern \"*\"",
+    "bench-async-partial-deep": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/**\"",
+    "bench-async-partial-flatten": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/{first,second}/*\"",
+    "bench-stream": "npm run bench-stream-flatten && npm run bench-stream-deep && npm run bench-stream-partial-flatten && npm run bench-stream-partial-deep",
+    "bench-stream-deep": "node ./out/benchmark --mode stream --pattern \"**\"",
+    "bench-stream-flatten": "node ./out/benchmark --mode stream --pattern \"*\"",
+    "bench-stream-partial-deep": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/**\"",
+    "bench-stream-partial-flatten": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/{first,second}/*\"",
+    "bench-sync": "npm run bench-sync-flatten && npm run bench-sync-deep && npm run bench-sync-partial-flatten && npm run bench-sync-partial-deep",
+    "bench-sync-deep": "node ./out/benchmark --mode sync --pattern \"**\"",
+    "bench-sync-flatten": "node ./out/benchmark --mode sync --pattern \"*\"",
+    "bench-sync-partial-deep": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/**\"",
+    "bench-sync-partial-flatten": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/{first,second}/*\"",
+    "build": "npm run clean && npm run compile && npm run lint && npm test",
     "clean": "rimraf out",
+    "compile": "tsc",
     "lint": "eslint \"src/**/*.ts\" --cache",
-    "compile": "tsc",
-    "test": "mocha \"out/**/*.spec.js\" -s 0",
     "smoke": "mocha \"out/**/*.smoke.js\" -s 0",
-    "smoke:sync": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(sync\\)\"",
     "smoke:async": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(async\\)\"",
     "smoke:stream": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(stream\\)\"",
-    "build": "npm run clean && npm run compile && npm run lint && npm test",
-    "watch": "npm run clean && npm run compile -- --sourceMap --watch",
-    "bench": "npm run bench-async && npm run bench-stream && npm run bench-sync",
-    "bench-async": "npm run bench-async-flatten && npm run bench-async-deep && npm run bench-async-partial-flatten && npm run bench-async-partial-deep",
-    "bench-stream": "npm run bench-stream-flatten && npm run bench-stream-deep && npm run bench-stream-partial-flatten && npm run bench-stream-partial-deep",
-    "bench-sync": "npm run bench-sync-flatten && npm run bench-sync-deep && npm run bench-sync-partial-flatten && npm run bench-sync-partial-deep",
-    "bench-async-flatten": "node ./out/benchmark --mode async --pattern \"*\"",
-    "bench-async-deep": "node ./out/benchmark --mode async --pattern \"**\"",
-    "bench-async-partial-flatten": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/{first,second}/*\"",
-    "bench-async-partial-deep": "node ./out/benchmark --mode async --pattern \"{fixtures,out}/**\"",
-    "bench-stream-flatten": "node ./out/benchmark --mode stream --pattern \"*\"",
-    "bench-stream-deep": "node ./out/benchmark --mode stream --pattern \"**\"",
-    "bench-stream-partial-flatten": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/{first,second}/*\"",
-    "bench-stream-partial-deep": "node ./out/benchmark --mode stream --pattern \"{fixtures,out}/**\"",
-    "bench-sync-flatten": "node ./out/benchmark --mode sync --pattern \"*\"",
-    "bench-sync-deep": "node ./out/benchmark --mode sync --pattern \"**\"",
-    "bench-sync-partial-flatten": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/{first,second}/*\"",
-    "bench-sync-partial-deep": "node ./out/benchmark --mode sync --pattern \"{fixtures,out}/**\""
-  }
+    "smoke:sync": "mocha \"out/**/*.smoke.js\" -s 0 --grep \"\\(sync\\)\"",
+    "test": "mocha \"out/**/*.spec.js\" -s 0",
+    "watch": "npm run clean && npm run compile -- --sourceMap --watch"
+  },
+  "typings": "out/index.d.ts",
+  "version": "3.2.7"
 }
Index: trip-planner-front/node_modules/fast-json-stable-stringify/package.json
===================================================================
--- trip-planner-front/node_modules/fast-json-stable-stringify/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fast-json-stable-stringify/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,51 @@
 {
-  "name": "fast-json-stable-stringify",
-  "version": "2.1.0",
+  "_args": [
+    [
+      "fast-json-stable-stringify@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fast-json-stable-stringify@2.1.0",
+  "_id": "fast-json-stable-stringify@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+  "_location": "/fast-json-stable-stringify",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fast-json-stable-stringify@2.1.0",
+    "name": "fast-json-stable-stringify",
+    "escapedName": "fast-json-stable-stringify",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/core",
+    "/copy-webpack-plugin/ajv",
+    "/css-minimizer-webpack-plugin/ajv",
+    "/har-validator/ajv",
+    "/mini-css-extract-plugin/ajv",
+    "/schema-utils/ajv",
+    "/terser-webpack-plugin/ajv",
+    "/webpack-dev-middleware/ajv",
+    "/webpack-dev-server/ajv",
+    "/webpack/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/epoberezkin/fast-json-stable-stringify/issues"
+  },
+  "dependencies": {},
   "description": "deterministic `JSON.stringify()` - a faster version of substack's json-stable-strigify without jsonify",
-  "main": "index.js",
-  "types": "index.d.ts",
-  "dependencies": {},
   "devDependencies": {
     "benchmark": "^2.1.4",
@@ -17,13 +59,4 @@
     "tape": "^4.11.0"
   },
-  "scripts": {
-    "eslint": "eslint index.js test",
-    "test-spec": "tape test/*.js",
-    "test": "npm run eslint && nyc npm run test-spec"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/epoberezkin/fast-json-stable-stringify.git"
-  },
   "homepage": "https://github.com/epoberezkin/fast-json-stable-stringify",
   "keywords": [
@@ -34,10 +67,7 @@
     "stable"
   ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
   "license": "MIT",
+  "main": "index.js",
+  "name": "fast-json-stable-stringify",
   "nyc": {
     "exclude": [
@@ -49,4 +79,15 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/epoberezkin/fast-json-stable-stringify.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js test",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "tape test/*.js"
+  },
+  "types": "index.d.ts",
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/fastq/package.json
===================================================================
--- trip-planner-front/node_modules/fastq/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fastq/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,43 @@
 {
-  "name": "fastq",
-  "version": "1.13.0",
-  "description": "Fast, in memory work queue",
-  "main": "queue.js",
-  "scripts": {
-    "lint": "standard --verbose | snazzy",
-    "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test/test.js test/promise.js",
-    "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js test/promise.js",
-    "test:report": "npm run lint && npm run unit:report",
-    "test": "npm run lint && npm run unit && npm run typescript",
-    "typescript": "tsc --project ./test/tsconfig.json",
-    "legacy": "tape test/test.js"
+  "_args": [
+    [
+      "fastq@1.13.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fastq@1.13.0",
+  "_id": "fastq@1.13.0",
+  "_inBundle": false,
+  "_integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+  "_location": "/fastq",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fastq@1.13.0",
+    "name": "fastq",
+    "escapedName": "fastq",
+    "rawSpec": "1.13.0",
+    "saveSpec": null,
+    "fetchSpec": "1.13.0"
   },
-  "pre-commit": [
-    "test"
+  "_requiredBy": [
+    "/@nodelib/fs.walk"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/mcollina/fastq.git"
+  "_resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+  "_spec": "1.13.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Matteo Collina",
+    "email": "hello@matteocollina.com"
   },
-  "keywords": [
-    "fast",
-    "queue",
-    "async",
-    "worker"
-  ],
-  "author": "Matteo Collina <hello@matteocollina.com>",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/mcollina/fastq/issues"
   },
-  "homepage": "https://github.com/mcollina/fastq#readme",
+  "dependencies": {
+    "reusify": "^1.0.4"
+  },
+  "description": "Fast, in memory work queue",
   "devDependencies": {
     "async": "^3.1.0",
@@ -42,6 +50,29 @@
     "typescript": "^4.0.2"
   },
-  "dependencies": {
-    "reusify": "^1.0.4"
+  "homepage": "https://github.com/mcollina/fastq#readme",
+  "keywords": [
+    "fast",
+    "queue",
+    "async",
+    "worker"
+  ],
+  "license": "ISC",
+  "main": "queue.js",
+  "name": "fastq",
+  "pre-commit": [
+    "test"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mcollina/fastq.git"
+  },
+  "scripts": {
+    "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js test/promise.js",
+    "legacy": "tape test/test.js",
+    "lint": "standard --verbose | snazzy",
+    "test": "npm run lint && npm run unit && npm run typescript",
+    "test:report": "npm run lint && npm run unit:report",
+    "typescript": "tsc --project ./test/tsconfig.json",
+    "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test/test.js test/promise.js"
   },
   "standard": {
@@ -49,4 +80,5 @@
       "example.mjs"
     ]
-  }
+  },
+  "version": "1.13.0"
 }
Index: trip-planner-front/node_modules/faye-websocket/package.json
===================================================================
--- trip-planner-front/node_modules/faye-websocket/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/faye-websocket/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,71 @@
 {
-          "name": "faye-websocket",
-          "description": "Standards-compliant WebSocket server and client",
-          "homepage": "https://github.com/faye/faye-websocket-node",
-          "author": "James Coglan <jcoglan@gmail.com> (http://jcoglan.com/)",
-          "keywords": [
-                    "websocket",
-                    "eventsource"
-          ],
-          "license": "Apache-2.0",
-          "version": "0.11.4",
-          "engines": {
-                    "node": ">=0.8.0"
-          },
-          "files": [
-                    "lib"
-          ],
-          "main": "./lib/faye/websocket",
-          "dependencies": {
-                    "websocket-driver": ">=0.5.1"
-          },
-          "devDependencies": {
-                    "jstest": "*",
-                    "pace": "*",
-                    "permessage-deflate": "*"
-          },
-          "scripts": {
-                    "test": "jstest spec/runner.js"
-          },
-          "repository": {
-                    "type": "git",
-                    "url": "git://github.com/faye/faye-websocket-node.git"
-          },
-          "bugs": "https://github.com/faye/faye-websocket-node/issues"
+  "_args": [
+    [
+      "faye-websocket@0.11.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "faye-websocket@0.11.4",
+  "_id": "faye-websocket@0.11.4",
+  "_inBundle": false,
+  "_integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+  "_location": "/faye-websocket",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "faye-websocket@0.11.4",
+    "name": "faye-websocket",
+    "escapedName": "faye-websocket",
+    "rawSpec": "0.11.4",
+    "saveSpec": null,
+    "fetchSpec": "0.11.4"
+  },
+  "_requiredBy": [
+    "/sockjs",
+    "/sockjs-client"
+  ],
+  "_resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+  "_spec": "0.11.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Coglan",
+    "email": "jcoglan@gmail.com",
+    "url": "http://jcoglan.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/faye/faye-websocket-node/issues"
+  },
+  "dependencies": {
+    "websocket-driver": ">=0.5.1"
+  },
+  "description": "Standards-compliant WebSocket server and client",
+  "devDependencies": {
+    "jstest": "*",
+    "pace": "*",
+    "permessage-deflate": "*"
+  },
+  "engines": {
+    "node": ">=0.8.0"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/faye/faye-websocket-node",
+  "keywords": [
+    "websocket",
+    "eventsource"
+  ],
+  "license": "Apache-2.0",
+  "main": "./lib/faye/websocket",
+  "name": "faye-websocket",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/faye/faye-websocket-node.git"
+  },
+  "scripts": {
+    "test": "jstest spec/runner.js"
+  },
+  "version": "0.11.4"
 }
Index: trip-planner-front/node_modules/figures/package.json
===================================================================
--- trip-planner-front/node_modules/figures/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/figures/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,81 @@
 {
-	"name": "figures",
-	"version": "3.2.0",
-	"description": "Unicode symbols with Windows CMD fallbacks",
-	"license": "MIT",
-	"repository": "sindresorhus/figures",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"make": "./makefile.js"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"unicode",
-		"cli",
-		"cmd",
-		"command-line",
-		"characters",
-		"symbol",
-		"symbols",
-		"figure",
-		"figures",
-		"fallback"
-	],
-	"dependencies": {
-		"escape-string-regexp": "^1.0.5"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"markdown-table": "^1.1.2",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "figures@3.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "figures@3.2.0",
+  "_id": "figures@3.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+  "_location": "/figures",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "figures@3.2.0",
+    "name": "figures",
+    "escapedName": "figures",
+    "rawSpec": "3.2.0",
+    "saveSpec": null,
+    "fetchSpec": "3.2.0"
+  },
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+  "_spec": "3.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/figures/issues"
+  },
+  "dependencies": {
+    "escape-string-regexp": "^1.0.5"
+  },
+  "description": "Unicode symbols with Windows CMD fallbacks",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "markdown-table": "^1.1.2",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/figures#readme",
+  "keywords": [
+    "unicode",
+    "cli",
+    "cmd",
+    "command-line",
+    "characters",
+    "symbol",
+    "symbols",
+    "figure",
+    "figures",
+    "fallback"
+  ],
+  "license": "MIT",
+  "name": "figures",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/figures.git"
+  },
+  "scripts": {
+    "make": "./makefile.js",
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.2.0"
 }
Index: trip-planner-front/node_modules/fill-range/package.json
===================================================================
--- trip-planner-front/node_modules/fill-range/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fill-range/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,75 @@
 {
-  "name": "fill-range",
-  "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`",
-  "version": "7.0.1",
-  "homepage": "https://github.com/jonschlinkert/fill-range",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Edo Rivai (edo.rivai.nl)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Paul Miller (paulmillr.com)",
-    "Rouven Weßling (www.rouvenwessling.de)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "fill-range@7.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/fill-range",
+  "_development": true,
+  "_from": "fill-range@7.0.1",
+  "_id": "fill-range@7.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+  "_location": "/fill-range",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fill-range@7.0.1",
+    "name": "fill-range",
+    "escapedName": "fill-range",
+    "rawSpec": "7.0.1",
+    "saveSpec": null,
+    "fetchSpec": "7.0.1"
+  },
+  "_requiredBy": [
+    "/braces"
+  ],
+  "_resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+  "_spec": "7.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/fill-range/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Edo Rivai",
+      "url": "edo.rivai.nl"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Paul Miller",
+      "url": "paulmillr.com"
+    },
+    {
+      "name": "Rouven Weßling",
+      "url": "www.rouvenwessling.de"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=8"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "to-regex-range": "^5.0.1"
   },
+  "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`",
   "devDependencies": {
     "gulp-format-md": "^2.0.0",
     "mocha": "^6.1.1"
   },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/fill-range",
   "keywords": [
     "alpha",
@@ -54,4 +92,14 @@
     "sh"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "fill-range",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/fill-range.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -66,4 +114,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "7.0.1"
 }
Index: trip-planner-front/node_modules/finalhandler/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/finalhandler/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/finalhandler/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,61 @@
 {
-  "name": "debug",
-  "version": "2.6.9",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@2.6.9",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@2.6.9",
+  "_id": "debug@2.6.9",
+  "_inBundle": false,
+  "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+  "_location": "/finalhandler/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@2.6.9",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "2.6.9",
+    "saveSpec": null,
+    "fetchSpec": "2.6.9"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/finalhandler"
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+  "_spec": "2.6.9",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "component": {
+    "scripts": {
+      "debug/index.js": "browser.js",
+      "debug/debug.js": "debug.js"
+    }
+  },
   "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "license": "MIT",
   "dependencies": {
     "ms": "2.0.0"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "browserify": "9.0.3",
@@ -39,11 +76,17 @@
     "sinon-chai": "^2.8.0"
   },
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "component": {
-    "scripts": {
-      "debug/index.js": "browser.js",
-      "debug/debug.js": "debug.js"
-    }
-  }
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "version": "2.6.9"
 }
Index: trip-planner-front/node_modules/finalhandler/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/finalhandler/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/finalhandler/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,42 @@
 {
-  "name": "ms",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "ms@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.0.0",
+  "_id": "ms@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_location": "/finalhandler/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.0.0",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/finalhandler/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny milisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "3.19.0",
+    "expect.js": "0.3.1",
+    "husky": "0.13.3",
+    "lint-staged": "3.4.1",
+    "mocha": "3.4.1"
   },
   "eslintConfig": {
@@ -20,4 +47,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +59,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "3.19.0",
-    "expect.js": "0.3.1",
-    "husky": "0.13.3",
-    "lint-staged": "3.4.1",
-    "mocha": "3.4.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/finalhandler/package.json
===================================================================
--- trip-planner-front/node_modules/finalhandler/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/finalhandler/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,40 @@
 {
-  "name": "finalhandler",
-  "description": "Node.js final http responder",
-  "version": "1.1.2",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "repository": "pillarjs/finalhandler",
+  "_args": [
+    [
+      "finalhandler@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "finalhandler@1.1.2",
+  "_id": "finalhandler@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+  "_location": "/finalhandler",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "finalhandler@1.1.2",
+    "name": "finalhandler",
+    "escapedName": "finalhandler",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/connect",
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/pillarjs/finalhandler/issues"
+  },
   "dependencies": {
     "debug": "2.6.9",
@@ -15,4 +46,5 @@
     "unpipe": "~1.0.0"
   },
+  "description": "Node.js final http responder",
   "devDependencies": {
     "eslint": "5.16.0",
@@ -29,4 +61,7 @@
     "supertest": "4.0.2"
   },
+  "engines": {
+    "node": ">= 0.8"
+  },
   "files": [
     "LICENSE",
@@ -34,6 +69,10 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8"
+  "homepage": "https://github.com/pillarjs/finalhandler#readme",
+  "license": "MIT",
+  "name": "finalhandler",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/pillarjs/finalhandler.git"
   },
   "scripts": {
@@ -42,4 +81,5 @@
     "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
-  }
+  },
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/find-cache-dir/package.json
===================================================================
--- trip-planner-front/node_modules/find-cache-dir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/find-cache-dir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,81 @@
 {
-	"name": "find-cache-dir",
-	"version": "3.3.1",
-	"description": "Finds the common standard cache directory",
-	"license": "MIT",
-	"repository": "avajs/find-cache-dir",
-	"funding": "https://github.com/avajs/find-cache-dir?sponsor=1",
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && nyc ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"cache",
-		"directory",
-		"dir",
-		"caching",
-		"find",
-		"search"
-	],
-	"dependencies": {
-		"commondir": "^1.0.1",
-		"make-dir": "^3.0.2",
-		"pkg-dir": "^4.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"coveralls": "^3.0.9",
-		"del": "^4.0.0",
-		"nyc": "^15.0.0",
-		"tempy": "^0.4.0",
-		"xo": "^0.25.3"
-	},
-	"nyc": {
-		"reporter": [
-			"lcov",
-			"text"
-		]
-	}
+  "_args": [
+    [
+      "find-cache-dir@3.3.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "find-cache-dir@3.3.1",
+  "_id": "find-cache-dir@3.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+  "_location": "/find-cache-dir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "find-cache-dir@3.3.1",
+    "name": "find-cache-dir",
+    "escapedName": "find-cache-dir",
+    "rawSpec": "3.3.1",
+    "saveSpec": null,
+    "fetchSpec": "3.3.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/babel-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
+  "_spec": "3.3.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/avajs/find-cache-dir/issues"
+  },
+  "dependencies": {
+    "commondir": "^1.0.1",
+    "make-dir": "^3.0.2",
+    "pkg-dir": "^4.1.0"
+  },
+  "description": "Finds the common standard cache directory",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "coveralls": "^3.0.9",
+    "del": "^4.0.0",
+    "nyc": "^15.0.0",
+    "tempy": "^0.4.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "funding": "https://github.com/avajs/find-cache-dir?sponsor=1",
+  "homepage": "https://github.com/avajs/find-cache-dir#readme",
+  "keywords": [
+    "cache",
+    "directory",
+    "dir",
+    "caching",
+    "find",
+    "search"
+  ],
+  "license": "MIT",
+  "name": "find-cache-dir",
+  "nyc": {
+    "reporter": [
+      "lcov",
+      "text"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/avajs/find-cache-dir.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava"
+  },
+  "version": "3.3.1"
 }
Index: trip-planner-front/node_modules/find-up/package.json
===================================================================
--- trip-planner-front/node_modules/find-up/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/find-up/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "find-up",
-	"version": "4.1.0",
-	"description": "Find a file or directory by walking up parent directories",
-	"license": "MIT",
-	"repository": "sindresorhus/find-up",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"find",
-		"up",
-		"find-up",
-		"findup",
-		"look-up",
-		"look",
-		"file",
-		"search",
-		"match",
-		"package",
-		"resolve",
-		"parent",
-		"parents",
-		"folder",
-		"directory",
-		"walk",
-		"walking",
-		"path"
-	],
-	"dependencies": {
-		"locate-path": "^5.0.0",
-		"path-exists": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^2.1.0",
-		"is-path-inside": "^2.1.0",
-		"tempy": "^0.3.0",
-		"tsd": "^0.7.3",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "find-up@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "find-up@4.1.0",
+  "_id": "find-up@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+  "_location": "/find-up",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "find-up@4.1.0",
+    "name": "find-up",
+    "escapedName": "find-up",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/pkg-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/find-up/issues"
+  },
+  "dependencies": {
+    "locate-path": "^5.0.0",
+    "path-exists": "^4.0.0"
+  },
+  "description": "Find a file or directory by walking up parent directories",
+  "devDependencies": {
+    "ava": "^2.1.0",
+    "is-path-inside": "^2.1.0",
+    "tempy": "^0.3.0",
+    "tsd": "^0.7.3",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/find-up#readme",
+  "keywords": [
+    "find",
+    "up",
+    "find-up",
+    "findup",
+    "look-up",
+    "look",
+    "file",
+    "search",
+    "match",
+    "package",
+    "resolve",
+    "parent",
+    "parents",
+    "folder",
+    "directory",
+    "walk",
+    "walking",
+    "path"
+  ],
+  "license": "MIT",
+  "name": "find-up",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/find-up.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/flatted/package.json
===================================================================
--- trip-planner-front/node_modules/flatted/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/flatted/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,48 @@
 {
-  "name": "flatted",
-  "version": "2.0.2",
+  "_args": [
+    [
+      "flatted@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "flatted@2.0.2",
+  "_id": "flatted@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+  "_location": "/flatted",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "flatted@2.0.2",
+    "name": "flatted",
+    "escapedName": "flatted",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/log4js"
+  ],
+  "_resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrea Giammarchi"
+  },
+  "bugs": {
+    "url": "https://github.com/WebReflection/flatted/issues"
+  },
   "description": "A super light and fast circular JSON parser.",
-  "unpkg": "min.js",
-  "main": "cjs/index.js",
-  "module": "esm/index.js",
-  "types": "types.d.ts",
-  "scripts": {
-    "bench": "node test/bench.js",
-    "build": "npm run cjs && npm test && npm run esm && npm run min && npm run size",
-    "cjs": "cp index.js cjs/index.js; echo 'module.exports = Flatted;' >> cjs/index.js",
-    "esm": "cp index.js esm/index.js; echo 'export default Flatted;' >> esm/index.js; echo 'export var parse = Flatted.parse;' >> esm/index.js; echo 'export var stringify = Flatted.stringify;' >> esm/index.js",
-    "min": "echo '/*! (c) 2018, Andrea Giammarchi, (ISC) */'>min.js && uglifyjs index.js --support-ie8 -c -m >> min.js",
-    "size": "cat index.js | wc -c;cat min.js | wc -c;gzip -c9 min.js | wc -c;cat min.js | brotli | wc -c",
-    "coveralls": "nyc report --reporter=text-lcov | coveralls",
-    "test": "nyc node test/index.js"
+  "devDependencies": {
+    "circular-json": "^0.5.9",
+    "circular-json-es6": "^2.0.2",
+    "coveralls": "^3.0.11",
+    "jsan": "^3.1.13",
+    "nyc": "^15.0.0",
+    "uglify-js": "^3.8.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/WebReflection/flatted.git"
-  },
+  "homepage": "https://github.com/WebReflection/flatted#readme",
   "keywords": [
     "circular",
@@ -28,17 +52,24 @@
     "minimal"
   ],
-  "author": "Andrea Giammarchi",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/WebReflection/flatted/issues"
+  "main": "cjs/index.js",
+  "module": "esm/index.js",
+  "name": "flatted",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/WebReflection/flatted.git"
   },
-  "homepage": "https://github.com/WebReflection/flatted#readme",
-  "devDependencies": {
-    "circular-json": "^0.5.9",
-    "circular-json-es6": "^2.0.2",
-    "coveralls": "^3.0.11",
-    "jsan": "^3.1.13",
-    "nyc": "^15.0.0",
-    "uglify-js": "^3.8.1"
-  }
+  "scripts": {
+    "bench": "node test/bench.js",
+    "build": "npm run cjs && npm test && npm run esm && npm run min && npm run size",
+    "cjs": "cp index.js cjs/index.js; echo 'module.exports = Flatted;' >> cjs/index.js",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "esm": "cp index.js esm/index.js; echo 'export default Flatted;' >> esm/index.js; echo 'export var parse = Flatted.parse;' >> esm/index.js; echo 'export var stringify = Flatted.stringify;' >> esm/index.js",
+    "min": "echo '/*! (c) 2018, Andrea Giammarchi, (ISC) */'>min.js && uglifyjs index.js --support-ie8 -c -m >> min.js",
+    "size": "cat index.js | wc -c;cat min.js | wc -c;gzip -c9 min.js | wc -c;cat min.js | brotli | wc -c",
+    "test": "nyc node test/index.js"
+  },
+  "types": "types.d.ts",
+  "unpkg": "min.js",
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/flatten/package.json
===================================================================
--- trip-planner-front/node_modules/flatten/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/flatten/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,36 @@
-{ "name": "flatten",
-  "version": "1.0.3",
-  "description": "Flatten arbitrarily nested arrays into a non-nested list of non-array items. Maintained for legacy compatibility.",
-  "keywords": [
-    "array",
-    "flatten"
+{
+  "_args": [
+    [
+      "flatten@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-
-  "author": "Joshua Holbrook <josh.holbrook@gmail.com> (http://jesusabdullah.net)",
-  "homepage": "https://github.com/mk-pmb/flatten-js/#readme",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/mk-pmb/flatten-js.git"
+  "_development": true,
+  "_from": "flatten@1.0.3",
+  "_id": "flatten@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==",
+  "_location": "/flatten",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "flatten@1.0.3",
+    "name": "flatten",
+    "escapedName": "flatten",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/postcss-values-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Joshua Holbrook",
+    "email": "josh.holbrook@gmail.com",
+    "url": "http://jesusabdullah.net"
   },
   "bugs": {
@@ -17,19 +38,32 @@
   },
   "contributors": [
-    "M.K. (https://github.com/mk-pmb)"
+    {
+      "name": "M.K.",
+      "url": "https://github.com/mk-pmb"
+    }
   ],
-
-  "private": false, "license": "MIT",
-
+  "dependencies": {},
+  "description": "Flatten arbitrarily nested arrays into a non-nested list of non-array items. Maintained for legacy compatibility.",
+  "devDependencies": {},
+  "directories": {
+    "test": "test"
+  },
+  "homepage": "https://github.com/mk-pmb/flatten-js/#readme",
+  "keywords": [
+    "array",
+    "flatten"
+  ],
+  "license": "MIT",
+  "name": "flatten",
+  "npm vs. BOM = Unexpected token": "-*- coding: UTF-8 -*-",
+  "optionalDependencies": {},
+  "private": false,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mk-pmb/flatten-js.git"
+  },
   "scripts": {
     "test": "node ./test.js"
   },
-  "directories": { "test": "test" },
-
-  "dependencies": {},
-  "devDependencies": {},
-  "optionalDependencies": {},
-
-
-  "npm vs. BOM = Unexpected token": "-*- coding: UTF-8 -*-"
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/follow-redirects/package.json
===================================================================
--- trip-planner-front/node_modules/follow-redirects/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/follow-redirects/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,73 @@
 {
-  "name": "follow-redirects",
-  "version": "1.14.4",
+  "_args": [
+    [
+      "follow-redirects@1.14.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "follow-redirects@1.14.4",
+  "_id": "follow-redirects@1.14.4",
+  "_inBundle": false,
+  "_integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==",
+  "_location": "/follow-redirects",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "follow-redirects@1.14.4",
+    "name": "follow-redirects",
+    "escapedName": "follow-redirects",
+    "rawSpec": "1.14.4",
+    "saveSpec": null,
+    "fetchSpec": "1.14.4"
+  },
+  "_requiredBy": [
+    "/http-proxy"
+  ],
+  "_resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
+  "_spec": "1.14.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ruben Verborgh",
+    "email": "ruben@verborgh.org",
+    "url": "https://ruben.verborgh.org/"
+  },
+  "bugs": {
+    "url": "https://github.com/follow-redirects/follow-redirects/issues"
+  },
+  "contributors": [
+    {
+      "name": "Olivier Lalonde",
+      "email": "olalonde@gmail.com",
+      "url": "http://www.syskall.com"
+    },
+    {
+      "name": "James Talmage",
+      "email": "james@talmage.io"
+    }
+  ],
   "description": "HTTP and HTTPS modules that follow redirects.",
-  "license": "MIT",
-  "main": "index.js",
+  "devDependencies": {
+    "concat-stream": "^2.0.0",
+    "eslint": "^5.16.0",
+    "express": "^4.16.4",
+    "lolex": "^3.1.0",
+    "mocha": "^6.0.2",
+    "nyc": "^14.1.1"
+  },
+  "engines": {
+    "node": ">=4.0"
+  },
   "files": [
     "*.js"
   ],
-  "engines": {
-    "node": ">=4.0"
-  },
-  "scripts": {
-    "test": "npm run lint && npm run mocha",
-    "lint": "eslint *.js test",
-    "mocha": "nyc mocha"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:follow-redirects/follow-redirects.git"
-  },
+  "funding": [
+    {
+      "type": "individual",
+      "url": "https://github.com/sponsors/RubenVerborgh"
+    }
+  ],
   "homepage": "https://github.com/follow-redirects/follow-redirects",
-  "bugs": {
-    "url": "https://github.com/follow-redirects/follow-redirects/issues"
-  },
   "keywords": [
     "http",
@@ -33,15 +79,7 @@
     "utility"
   ],
-  "author": "Ruben Verborgh <ruben@verborgh.org> (https://ruben.verborgh.org/)",
-  "contributors": [
-    "Olivier Lalonde <olalonde@gmail.com> (http://www.syskall.com)",
-    "James Talmage <james@talmage.io>"
-  ],
-  "funding": [
-    {
-      "type": "individual",
-      "url": "https://github.com/sponsors/RubenVerborgh"
-    }
-  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "follow-redirects",
   "peerDependenciesMeta": {
     "debug": {
@@ -49,11 +87,13 @@
     }
   },
-  "devDependencies": {
-    "concat-stream": "^2.0.0",
-    "eslint": "^5.16.0",
-    "express": "^4.16.4",
-    "lolex": "^3.1.0",
-    "mocha": "^6.0.2",
-    "nyc": "^14.1.1"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/follow-redirects/follow-redirects.git"
+  },
+  "scripts": {
+    "lint": "eslint *.js test",
+    "mocha": "nyc mocha",
+    "test": "npm run lint && npm run mocha"
+  },
+  "version": "1.14.4"
 }
Index: trip-planner-front/node_modules/for-in/package.json
===================================================================
--- trip-planner-front/node_modules/for-in/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/for-in/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,62 @@
 {
-  "name": "for-in",
-  "description": "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js",
-  "version": "1.0.2",
-  "homepage": "https://github.com/jonschlinkert/for-in",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)",
-    "Paul Irish (http://paulirish.com)"
+  "_args": [
+    [
+      "for-in@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/for-in",
+  "_development": true,
+  "_from": "for-in@1.0.2",
+  "_id": "for-in@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+  "_location": "/for-in",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "for-in@1.0.2",
+    "name": "for-in",
+    "escapedName": "for-in",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/mixin-deep"
+  ],
+  "_resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/for-in/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Paul Irish",
+      "url": "http://paulirish.com"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js",
   "devDependencies": {
     "gulp-format-md": "^0.1.11",
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/for-in",
   "keywords": [
     "for",
@@ -42,4 +73,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "for-in",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/for-in.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -65,4 +106,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/forever-agent/package.json
===================================================================
--- trip-planner-front/node_modules/forever-agent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/forever-agent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,54 @@
 {
-  "author": "Mikeal Rogers <mikeal.rogers@gmail.com> (http://www.futurealoof.com)",
-  "name": "forever-agent",
+  "_args": [
+    [
+      "forever-agent@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "forever-agent@0.6.1",
+  "_id": "forever-agent@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+  "_location": "/forever-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "forever-agent@0.6.1",
+    "name": "forever-agent",
+    "escapedName": "forever-agent",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mikeal Rogers",
+    "email": "mikeal.rogers@gmail.com",
+    "url": "http://www.futurealoof.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mikeal/forever-agent/issues"
+  },
+  "dependencies": {},
   "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.",
-  "version": "0.6.1",
-  "license": "Apache-2.0",
-  "repository": {
-    "url": "https://github.com/mikeal/forever-agent"
-  },
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {},
-  "optionalDependencies": {},
   "engines": {
     "node": "*"
-  }
+  },
+  "homepage": "https://github.com/mikeal/forever-agent#readme",
+  "license": "Apache-2.0",
+  "main": "index.js",
+  "name": "forever-agent",
+  "optionalDependencies": {},
+  "repository": {
+    "url": "git+https://github.com/mikeal/forever-agent.git"
+  },
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/form-data/package.json
===================================================================
--- trip-planner-front/node_modules/form-data/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/form-data/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,40 @@
 {
-  "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
-  "name": "form-data",
-  "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
-  "version": "2.3.3",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/form-data/form-data.git"
+  "_args": [
+    [
+      "form-data@2.3.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "form-data@2.3.3",
+  "_id": "form-data@2.3.3",
+  "_inBundle": false,
+  "_integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+  "_location": "/form-data",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "form-data@2.3.3",
+    "name": "form-data",
+    "escapedName": "form-data",
+    "rawSpec": "2.3.3",
+    "saveSpec": null,
+    "fetchSpec": "2.3.3"
   },
-  "main": "./lib/form_data",
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+  "_spec": "2.3.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Geisendörfer",
+    "email": "felix@debuggable.com",
+    "url": "http://debuggable.com/"
+  },
   "browser": "./lib/browser",
-  "scripts": {
-    "pretest": "rimraf coverage test/tmp",
-    "test": "istanbul cover test/run.js",
-    "posttest": "istanbul report lcov text",
-    "lint": "eslint lib/*.js test/*.js test/integration/*.js",
-    "report": "istanbul report lcov text",
-    "ci-lint": "is-node-modern 6 && npm run lint || is-node-not-modern 6",
-    "ci-test": "npm run test && npm run browser && npm run report",
-    "predebug": "rimraf coverage test/tmp",
-    "debug": "verbose=1 ./test/run.js",
-    "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage",
-    "check": "istanbul check-coverage coverage/coverage*.json",
-    "files": "pkgfiles --sort=name",
-    "get-version": "node -e \"console.log(require('./package.json').version)\"",
-    "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md",
-    "restore-readme": "mv README.md.bak README.md",
-    "prepublish": "in-publish && npm run update-readme || not-in-publish",
-    "postpublish": "npm run restore-readme"
-  },
-  "pre-commit": [
-    "lint",
-    "ci-test",
-    "check"
-  ],
-  "engines": {
-    "node": ">= 0.12"
+  "bugs": {
+    "url": "https://github.com/form-data/form-data/issues"
   },
   "dependencies": {
@@ -42,4 +43,5 @@
     "mime-types": "^2.1.12"
   },
+  "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
   "devDependencies": {
     "browserify": "^13.1.1",
@@ -62,4 +64,39 @@
     "tape": "^4.6.2"
   },
-  "license": "MIT"
+  "engines": {
+    "node": ">= 0.12"
+  },
+  "homepage": "https://github.com/form-data/form-data#readme",
+  "license": "MIT",
+  "main": "./lib/form_data",
+  "name": "form-data",
+  "pre-commit": [
+    "lint",
+    "ci-test",
+    "check"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/form-data/form-data.git"
+  },
+  "scripts": {
+    "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage",
+    "check": "istanbul check-coverage coverage/coverage*.json",
+    "ci-lint": "is-node-modern 6 && npm run lint || is-node-not-modern 6",
+    "ci-test": "npm run test && npm run browser && npm run report",
+    "debug": "verbose=1 ./test/run.js",
+    "files": "pkgfiles --sort=name",
+    "get-version": "node -e \"console.log(require('./package.json').version)\"",
+    "lint": "eslint lib/*.js test/*.js test/integration/*.js",
+    "postpublish": "npm run restore-readme",
+    "posttest": "istanbul report lcov text",
+    "predebug": "rimraf coverage test/tmp",
+    "prepublish": "in-publish && npm run update-readme || not-in-publish",
+    "pretest": "rimraf coverage test/tmp",
+    "report": "istanbul report lcov text",
+    "restore-readme": "mv README.md.bak README.md",
+    "test": "istanbul cover test/run.js",
+    "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md"
+  },
+  "version": "2.3.3"
 }
Index: trip-planner-front/node_modules/forwarded/package.json
===================================================================
--- trip-planner-front/node_modules/forwarded/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/forwarded/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,42 @@
 {
-  "name": "forwarded",
+  "_args": [
+    [
+      "forwarded@0.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "forwarded@0.2.0",
+  "_id": "forwarded@0.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+  "_location": "/forwarded",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "forwarded@0.2.0",
+    "name": "forwarded",
+    "escapedName": "forwarded",
+    "rawSpec": "0.2.0",
+    "saveSpec": null,
+    "fetchSpec": "0.2.0"
+  },
+  "_requiredBy": [
+    "/proxy-addr"
+  ],
+  "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+  "_spec": "0.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/forwarded/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
+  ],
   "description": "Parse HTTP X-Forwarded-For header",
-  "version": "0.2.0",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "x-forwarded-for",
-    "http",
-    "req"
-  ],
-  "repository": "jshttp/forwarded",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -26,4 +52,7 @@
     "nyc": "15.1.0"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "LICENSE",
@@ -32,6 +61,15 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/forwarded#readme",
+  "keywords": [
+    "x-forwarded-for",
+    "http",
+    "req"
+  ],
+  "license": "MIT",
+  "name": "forwarded",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/forwarded.git"
   },
   "scripts": {
@@ -42,4 +80,5 @@
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "0.2.0"
 }
Index: trip-planner-front/node_modules/fragment-cache/package.json
===================================================================
--- trip-planner-front/node_modules/fragment-cache/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fragment-cache/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,46 @@
 {
-  "name": "fragment-cache",
-  "description": "A cache for managing namespaced sub-caches",
-  "version": "0.2.1",
-  "homepage": "https://github.com/jonschlinkert/fragment-cache",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/fragment-cache",
+  "_args": [
+    [
+      "fragment-cache@0.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fragment-cache@0.2.1",
+  "_id": "fragment-cache@0.2.1",
+  "_inBundle": false,
+  "_integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+  "_location": "/fragment-cache",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fragment-cache@0.2.1",
+    "name": "fragment-cache",
+    "escapedName": "fragment-cache",
+    "rawSpec": "0.2.1",
+    "saveSpec": null,
+    "fetchSpec": "0.2.1"
+  },
+  "_requiredBy": [
+    "/extglob",
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+  "_spec": "0.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/fragment-cache/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "map-cache": "^0.2.2"
   },
+  "description": "A cache for managing namespaced sub-caches",
   "devDependencies": {
     "gulp": "^3.9.1",
@@ -31,8 +51,25 @@
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/fragment-cache",
   "keywords": [
     "cache",
     "fragment"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "fragment-cache",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/fragment-cache.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "plugins": [
@@ -57,4 +94,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.2.1"
 }
Index: trip-planner-front/node_modules/fresh/package.json
===================================================================
--- trip-planner-front/node_modules/fresh/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fresh/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,53 @@
 {
-  "name": "fresh",
+  "_args": [
+    [
+      "fresh@0.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fresh@0.5.2",
+  "_id": "fresh@0.5.2",
+  "_inBundle": false,
+  "_integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+  "_location": "/fresh",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fresh@0.5.2",
+    "name": "fresh",
+    "escapedName": "fresh",
+    "rawSpec": "0.5.2",
+    "saveSpec": null,
+    "fetchSpec": "0.5.2"
+  },
+  "_requiredBy": [
+    "/express",
+    "/send"
+  ],
+  "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+  "_spec": "0.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca",
+    "url": "http://tjholowaychuk.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/fresh/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
+  ],
   "description": "HTTP response freshness testing",
-  "version": "0.5.2",
-  "author": "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "fresh",
-    "http",
-    "conditional",
-    "cache"
-  ],
-  "repository": "jshttp/fresh",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -29,4 +63,7 @@
     "mocha": "1.21.5"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "HISTORY.md",
@@ -34,6 +71,16 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/fresh#readme",
+  "keywords": [
+    "fresh",
+    "http",
+    "conditional",
+    "cache"
+  ],
+  "license": "MIT",
+  "name": "fresh",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/fresh.git"
   },
   "scripts": {
@@ -43,4 +90,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "0.5.2"
 }
Index: trip-planner-front/node_modules/fs-extra/package.json
===================================================================
--- trip-planner-front/node_modules/fs-extra/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fs-extra/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,65 @@
 {
-  "name": "fs-extra",
-  "version": "8.1.0",
+  "_args": [
+    [
+      "fs-extra@8.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fs-extra@8.1.0",
+  "_id": "fs-extra@8.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+  "_location": "/fs-extra",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fs-extra@8.1.0",
+    "name": "fs-extra",
+    "escapedName": "fs-extra",
+    "rawSpec": "8.1.0",
+    "saveSpec": null,
+    "fetchSpec": "8.1.0"
+  },
+  "_requiredBy": [
+    "/streamroller"
+  ],
+  "_resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+  "_spec": "8.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "JP Richardson",
+    "email": "jprichardson@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jprichardson/node-fs-extra/issues"
+  },
+  "dependencies": {
+    "graceful-fs": "^4.2.0",
+    "jsonfile": "^4.0.0",
+    "universalify": "^0.1.0"
+  },
   "description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf.",
+  "devDependencies": {
+    "coveralls": "^3.0.0",
+    "istanbul": "^0.4.5",
+    "klaw": "^2.1.1",
+    "klaw-sync": "^3.0.2",
+    "minimist": "^1.1.1",
+    "mocha": "^5.0.5",
+    "proxyquire": "^2.0.1",
+    "read-dir-files": "^0.1.1",
+    "semver": "^5.3.0",
+    "standard": "^12.0.1"
+  },
   "engines": {
     "node": ">=6 <7 || >=8"
   },
+  "files": [
+    "lib/",
+    "!lib/**/__tests__/"
+  ],
   "homepage": "https://github.com/jprichardson/node-fs-extra",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jprichardson/node-fs-extra"
-  },
   "keywords": [
     "fs",
@@ -34,36 +85,20 @@
     "move"
   ],
-  "author": "JP Richardson <jprichardson@gmail.com>",
   "license": "MIT",
-  "dependencies": {
-    "graceful-fs": "^4.2.0",
-    "jsonfile": "^4.0.0",
-    "universalify": "^0.1.0"
+  "main": "./lib/index.js",
+  "name": "fs-extra",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jprichardson/node-fs-extra.git"
   },
-  "devDependencies": {
-    "coveralls": "^3.0.0",
-    "istanbul": "^0.4.5",
-    "klaw": "^2.1.1",
-    "klaw-sync": "^3.0.2",
-    "minimist": "^1.1.1",
-    "mocha": "^5.0.5",
-    "proxyquire": "^2.0.1",
-    "read-dir-files": "^0.1.1",
-    "semver": "^5.3.0",
-    "standard": "^12.0.1"
-  },
-  "main": "./lib/index.js",
-  "files": [
-    "lib/",
-    "!lib/**/__tests__/"
-  ],
   "scripts": {
-    "full-ci": "npm run lint && npm run coverage",
     "coverage": "istanbul cover -i 'lib/**' -x '**/__tests__/**' test.js",
     "coveralls": "coveralls < coverage/lcov.info",
+    "full-ci": "npm run lint && npm run coverage",
     "lint": "standard",
+    "test": "npm run lint && npm run unit",
     "test-find": "find ./lib/**/__tests__ -name *.test.js | xargs mocha",
-    "test": "npm run lint && npm run unit",
     "unit": "node test.js"
-  }
+  },
+  "version": "8.1.0"
 }
Index: trip-planner-front/node_modules/fs-minipass/package.json
===================================================================
--- trip-planner-front/node_modules/fs-minipass/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fs-minipass/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,74 @@
 {
+  "_args": [
+    [
+      "fs-minipass@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fs-minipass@2.1.0",
+  "_id": "fs-minipass@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+  "_location": "/fs-minipass",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fs-minipass@2.1.0",
+    "name": "fs-minipass",
+    "escapedName": "fs-minipass",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/cacache",
+    "/pacote",
+    "/tar"
+  ],
+  "_resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/fs-minipass/issues"
+  },
+  "dependencies": {
+    "minipass": "^3.0.0"
+  },
+  "description": "fs read and write streams based on minipass",
+  "devDependencies": {
+    "mutate-fs": "^2.0.1",
+    "tap": "^14.6.4"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/fs-minipass#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "index.js",
   "name": "fs-minipass",
-  "version": "2.1.0",
-  "main": "index.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
-  "keywords": [],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/npm/fs-minipass.git"
   },
-  "bugs": {
-    "url": "https://github.com/npm/fs-minipass/issues"
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
   },
-  "homepage": "https://github.com/npm/fs-minipass#readme",
-  "description": "fs read and write streams based on minipass",
-  "dependencies": {
-    "minipass": "^3.0.0"
-  },
-  "devDependencies": {
-    "mutate-fs": "^2.0.1",
-    "tap": "^14.6.4"
-  },
-  "files": [
-    "index.js"
-  ],
   "tap": {
     "check-coverage": true
   },
-  "engines": {
-    "node": ">= 8"
-  }
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/fs-monkey/package.json
===================================================================
--- trip-planner-front/node_modules/fs-monkey/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fs-monkey/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,37 @@
 {
-  "name": "fs-monkey",
-  "version": "1.0.3",
-  "description": "Monkey patches for file system related things.",
-  "main": "lib/index.js",
-  "license": "Unlicense",
-  "keywords": [
-    "fs",
-    "file",
-    "file system",
-    "monkey",
-    "fsmonkey",
-    "monkeyfs",
-    "monkeypatch",
-    "patch"
+  "_args": [
+    [
+      "fs-monkey@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "files": [
-    "lib",
-    "!lib/__tests__",
-    "docs"
+  "_development": true,
+  "_from": "fs-monkey@1.0.3",
+  "_id": "fs-monkey@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
+  "_location": "/fs-monkey",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fs-monkey@1.0.3",
+    "name": "fs-monkey",
+    "escapedName": "fs-monkey",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/memfs"
   ],
-  "directories": {
-    "doc": "docs"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/streamich/fs-monkey.git"
-  },
-  "scripts": {
-    "build": "babel src --out-dir lib",
-    "test": "jest"
+  "_resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/streamich/fs-monkey/issues"
   },
   "dependencies": {},
+  "description": "Monkey patches for file system related things.",
   "devDependencies": {
     "@babel/cli": "^7.13.14",
@@ -46,4 +48,35 @@
     "source-map-support": "0.5.19"
   },
+  "directories": {
+    "doc": "docs"
+  },
+  "files": [
+    "lib",
+    "!lib/__tests__",
+    "docs"
+  ],
+  "homepage": "https://github.com/streamich/fs-monkey#readme",
+  "jest": {
+    "collectCoverageFrom": [
+      "src/**/*.js"
+    ],
+    "transform": {
+      "^.+\\.jsx?$": "babel-jest"
+    },
+    "testRegex": ".*(__tests__/|/test/unit/).*(test|spec)\\.(t|j)sx?$"
+  },
+  "keywords": [
+    "fs",
+    "file",
+    "file system",
+    "monkey",
+    "fsmonkey",
+    "monkeyfs",
+    "monkeypatch",
+    "patch"
+  ],
+  "license": "Unlicense",
+  "main": "lib/index.js",
+  "name": "fs-monkey",
   "release": {
     "verifyConditions": [
@@ -58,12 +91,12 @@
     ]
   },
-  "jest": {
-    "collectCoverageFrom": [
-      "src/**/*.js"
-    ],
-    "transform": {
-      "^.+\\.jsx?$": "babel-jest"
-    },
-    "testRegex": ".*(__tests__/|/test/unit/).*(test|spec)\\.(t|j)sx?$"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/streamich/fs-monkey.git"
+  },
+  "scripts": {
+    "build": "babel src --out-dir lib",
+    "test": "jest"
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/fs.realpath/package.json
===================================================================
--- trip-planner-front/node_modules/fs.realpath/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/fs.realpath/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,48 @@
 {
-  "name": "fs.realpath",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "fs.realpath@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "fs.realpath@1.0.0",
+  "_id": "fs.realpath@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+  "_location": "/fs.realpath",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fs.realpath@1.0.0",
+    "name": "fs.realpath",
+    "escapedName": "fs.realpath",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/fs.realpath/issues"
+  },
+  "dependencies": {},
   "description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {},
-  "scripts": {
-    "test": "tap test/*.js --cov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/isaacs/fs.realpath.git"
-  },
+  "files": [
+    "old.js",
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/fs.realpath#readme",
   "keywords": [
     "realpath",
@@ -18,9 +50,14 @@
     "polyfill"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "license": "ISC",
-  "files": [
-    "old.js",
-    "index.js"
-  ]
+  "main": "index.js",
+  "name": "fs.realpath",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/fs.realpath.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js --cov"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/function-bind/package.json
===================================================================
--- trip-planner-front/node_modules/function-bind/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/function-bind/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,42 @@
 {
-  "name": "function-bind",
-  "version": "1.1.1",
-  "description": "Implementation of Function.prototype.bind",
-  "keywords": [
-    "function",
-    "bind",
-    "shim",
-    "es5"
+  "_args": [
+    [
+      "function-bind@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Raynos <raynos2@gmail.com>",
-  "repository": "git://github.com/Raynos/function-bind.git",
-  "main": "index",
-  "homepage": "https://github.com/Raynos/function-bind",
+  "_development": true,
+  "_from": "function-bind@1.1.1",
+  "_id": "function-bind@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+  "_location": "/function-bind",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "function-bind@1.1.1",
+    "name": "function-bind",
+    "escapedName": "function-bind",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/call-bind",
+    "/get-intrinsic",
+    "/has"
+  ],
+  "_resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Raynos",
+    "email": "raynos2@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Raynos/function-bind/issues",
+    "email": "raynos2@gmail.com"
+  },
   "contributors": [
     {
@@ -22,9 +48,6 @@
     }
   ],
-  "bugs": {
-    "url": "https://github.com/Raynos/function-bind/issues",
-    "email": "raynos2@gmail.com"
-  },
   "dependencies": {},
+  "description": "Implementation of Function.prototype.bind",
   "devDependencies": {
     "@ljharb/eslint-config": "^12.2.1",
@@ -34,14 +57,27 @@
     "tape": "^4.8.0"
   },
+  "homepage": "https://github.com/Raynos/function-bind",
+  "keywords": [
+    "function",
+    "bind",
+    "shim",
+    "es5"
+  ],
   "license": "MIT",
+  "main": "index",
+  "name": "function-bind",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/Raynos/function-bind.git"
+  },
   "scripts": {
+    "coverage": "covert test/*.js",
+    "eslint": "eslint *.js */*.js",
+    "jscs": "jscs *.js */*.js",
+    "lint": "npm run jscs && npm run eslint",
+    "posttest": "npm run coverage -- --quiet",
     "pretest": "npm run lint",
     "test": "npm run tests-only",
-    "posttest": "npm run coverage -- --quiet",
-    "tests-only": "node test",
-    "coverage": "covert test/*.js",
-    "lint": "npm run jscs && npm run eslint",
-    "jscs": "jscs *.js */*.js",
-    "eslint": "eslint *.js */*.js"
+    "tests-only": "node test"
   },
   "testling": {
@@ -60,4 +96,5 @@
       "android-browser/4.2..latest"
     ]
-  }
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/gauge/node_modules/ansi-regex/package.json
===================================================================
--- trip-planner-front/node_modules/gauge/node_modules/ansi-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gauge/node_modules/ansi-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "ansi-regex",
-  "version": "2.1.1",
-  "description": "Regular expression for matching ANSI escape codes",
-  "license": "MIT",
-  "repository": "chalk/ansi-regex",
+  "_args": [
+    [
+      "ansi-regex@2.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-regex@2.1.1",
+  "_id": "ansi-regex@2.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+  "_location": "/gauge/ansi-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-regex@2.1.1",
+    "name": "ansi-regex",
+    "escapedName": "ansi-regex",
+    "rawSpec": "2.1.1",
+    "saveSpec": null,
+    "fetchSpec": "2.1.1"
+  },
+  "_requiredBy": [
+    "/gauge/strip-ansi"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+  "_spec": "2.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,19 +34,19 @@
     "url": "sindresorhus.com"
   },
-  "maintainers": [
-    "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)",
-    "Joshua Appelman <jappelman@xebia.com> (jbnicolai.com)",
-    "JD Ballard <i.am.qix@gmail.com> (github.com/qix-)"
-  ],
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-regex/issues"
+  },
+  "description": "Regular expression for matching ANSI escape codes",
+  "devDependencies": {
+    "ava": "0.17.0",
+    "xo": "0.16.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava --verbose",
-    "view-supported": "node fixtures/view-codes.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/chalk/ansi-regex#readme",
   "keywords": [
     "ansi",
@@ -52,8 +76,32 @@
     "pattern"
   ],
-  "devDependencies": {
-    "ava": "0.17.0",
-    "xo": "0.16.0"
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    },
+    {
+      "name": "Joshua Appelman",
+      "email": "jappelman@xebia.com",
+      "url": "jbnicolai.com"
+    },
+    {
+      "name": "JD Ballard",
+      "email": "i.am.qix@gmail.com",
+      "url": "github.com/qix-"
+    }
+  ],
+  "name": "ansi-regex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-regex.git"
   },
+  "scripts": {
+    "test": "xo && ava --verbose",
+    "view-supported": "node fixtures/view-codes.js"
+  },
+  "version": "2.1.1",
   "xo": {
     "rules": {
Index: trip-planner-front/node_modules/gauge/node_modules/is-fullwidth-code-point/package.json
===================================================================
--- trip-planner-front/node_modules/gauge/node_modules/is-fullwidth-code-point/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gauge/node_modules/is-fullwidth-code-point/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "is-fullwidth-code-point",
-  "version": "1.0.0",
-  "description": "Check if the character represented by a given Unicode code point is fullwidth",
-  "license": "MIT",
-  "repository": "sindresorhus/is-fullwidth-code-point",
+  "_args": [
+    [
+      "is-fullwidth-code-point@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-fullwidth-code-point@1.0.0",
+  "_id": "is-fullwidth-code-point@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+  "_location": "/gauge/is-fullwidth-code-point",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-fullwidth-code-point@1.0.0",
+    "name": "is-fullwidth-code-point",
+    "escapedName": "is-fullwidth-code-point",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/gauge/string-width"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,22 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+  },
+  "dependencies": {
+    "number-is-nan": "^1.0.0"
+  },
+  "description": "Check if the character represented by a given Unicode code point is fullwidth",
+  "devDependencies": {
+    "ava": "0.0.4",
+    "code-point-at": "^1.0.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "node test.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
   "keywords": [
     "fullwidth",
@@ -36,10 +69,13 @@
     "check"
   ],
-  "dependencies": {
-    "number-is-nan": "^1.0.0"
+  "license": "MIT",
+  "name": "is-fullwidth-code-point",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
   },
-  "devDependencies": {
-    "ava": "0.0.4",
-    "code-point-at": "^1.0.0"
-  }
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/gauge/node_modules/string-width/package.json
===================================================================
--- trip-planner-front/node_modules/gauge/node_modules/string-width/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gauge/node_modules/string-width/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "string-width",
-  "version": "1.0.2",
-  "description": "Get the visual width of a string - the number of columns required to display it",
-  "license": "MIT",
-  "repository": "sindresorhus/string-width",
+  "_args": [
+    [
+      "string-width@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "string-width@1.0.2",
+  "_id": "string-width@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+  "_location": "/gauge/string-width",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "string-width@1.0.2",
+    "name": "string-width",
+    "escapedName": "string-width",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/gauge"
+  ],
+  "_resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,24 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/string-width/issues"
+  },
+  "dependencies": {
+    "code-point-at": "^1.0.0",
+    "is-fullwidth-code-point": "^1.0.0",
+    "strip-ansi": "^3.0.0"
+  },
+  "description": "Get the visual width of a string - the number of columns required to display it",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/string-width#readme",
   "keywords": [
     "string",
@@ -45,12 +80,13 @@
     "fixed-width"
   ],
-  "dependencies": {
-    "code-point-at": "^1.0.0",
-    "is-fullwidth-code-point": "^1.0.0",
-    "strip-ansi": "^3.0.0"
+  "license": "MIT",
+  "name": "string-width",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/string-width.git"
   },
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/gauge/node_modules/strip-ansi/package.json
===================================================================
--- trip-planner-front/node_modules/gauge/node_modules/strip-ansi/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gauge/node_modules/strip-ansi/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,33 @@
 {
-  "name": "strip-ansi",
-  "version": "3.0.1",
-  "description": "Strip ANSI escape codes",
-  "license": "MIT",
-  "repository": "chalk/strip-ansi",
+  "_args": [
+    [
+      "strip-ansi@3.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "strip-ansi@3.0.1",
+  "_id": "strip-ansi@3.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+  "_location": "/gauge/strip-ansi",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "strip-ansi@3.0.1",
+    "name": "strip-ansi",
+    "escapedName": "strip-ansi",
+    "rawSpec": "3.0.1",
+    "saveSpec": null,
+    "fetchSpec": "3.0.1"
+  },
+  "_requiredBy": [
+    "/gauge",
+    "/gauge/string-width"
+  ],
+  "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+  "_spec": "3.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,18 +35,22 @@
     "url": "sindresorhus.com"
   },
-  "maintainers": [
-    "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)",
-    "Joshua Boy Nicolai Appelman <joshua@jbna.nl> (jbna.nl)",
-    "JD Ballard <i.am.qix@gmail.com> (github.com/qix-)"
-  ],
+  "bugs": {
+    "url": "https://github.com/chalk/strip-ansi/issues"
+  },
+  "dependencies": {
+    "ansi-regex": "^2.0.0"
+  },
+  "description": "Strip ANSI escape codes",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/chalk/strip-ansi#readme",
   "keywords": [
     "strip",
@@ -48,10 +77,30 @@
     "text"
   ],
-  "dependencies": {
-    "ansi-regex": "^2.0.0"
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    },
+    {
+      "name": "Joshua Boy Nicolai Appelman",
+      "email": "joshua@jbna.nl",
+      "url": "jbna.nl"
+    },
+    {
+      "name": "JD Ballard",
+      "email": "i.am.qix@gmail.com",
+      "url": "github.com/qix-"
+    }
+  ],
+  "name": "strip-ansi",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/strip-ansi.git"
   },
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.1"
 }
Index: trip-planner-front/node_modules/gauge/package.json
===================================================================
--- trip-planner-front/node_modules/gauge/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gauge/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,42 @@
 {
-  "name": "gauge",
-  "version": "2.7.4",
-  "description": "A terminal based horizontal guage",
-  "main": "index.js",
-  "scripts": {
-    "test": "standard && tap test/*.js --coverage",
-    "prepublish": "rm -f *~"
+  "_args": [
+    [
+      "gauge@2.7.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "gauge@2.7.4",
+  "_id": "gauge@2.7.4",
+  "_inBundle": false,
+  "_integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+  "_location": "/gauge",
+  "_phantomChildren": {
+    "code-point-at": "1.1.0",
+    "number-is-nan": "1.0.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iarna/gauge"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "gauge@2.7.4",
+    "name": "gauge",
+    "escapedName": "gauge",
+    "rawSpec": "2.7.4",
+    "saveSpec": null,
+    "fetchSpec": "2.7.4"
   },
-  "keywords": [
-    "progressbar",
-    "progress",
-    "gauge"
+  "_requiredBy": [
+    "/npmlog"
   ],
-  "author": "Rebecca Turner <me@re-becca.org>",
-  "license": "ISC",
+  "_resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+  "_spec": "2.7.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "email": "me@re-becca.org"
+  },
   "bugs": {
     "url": "https://github.com/iarna/gauge/issues"
   },
-  "homepage": "https://github.com/iarna/gauge",
   "dependencies": {
     "aproba": "^1.0.3",
@@ -33,4 +49,5 @@
     "wide-align": "^1.1.0"
   },
+  "description": "A terminal based horizontal guage",
   "devDependencies": {
     "readable-stream": "^2.0.6",
@@ -60,4 +77,22 @@
     "themes.js",
     "wide-truncate.js"
-  ]
+  ],
+  "homepage": "https://github.com/iarna/gauge",
+  "keywords": [
+    "progressbar",
+    "progress",
+    "gauge"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "gauge",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iarna/gauge.git"
+  },
+  "scripts": {
+    "prepublish": "rm -f *~",
+    "test": "standard && tap test/*.js --coverage"
+  },
+  "version": "2.7.4"
 }
Index: trip-planner-front/node_modules/gensync/package.json
===================================================================
--- trip-planner-front/node_modules/gensync/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/gensync/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,40 @@
 {
-  "name": "gensync",
-  "version": "1.0.0-beta.2",
-  "license": "MIT",
+  "_args": [
+    [
+      "gensync@1.0.0-beta.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "gensync@1.0.0-beta.2",
+  "_id": "gensync@1.0.0-beta.2",
+  "_inBundle": false,
+  "_integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+  "_location": "/gensync",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "gensync@1.0.0-beta.2",
+    "name": "gensync",
+    "escapedName": "gensync",
+    "rawSpec": "1.0.0-beta.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0-beta.2"
+  },
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+  "_spec": "1.0.0-beta.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Logan Smyth",
+    "email": "loganfsmyth@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/loganfsmyth/gensync/issues"
+  },
   "description": "Allows users to use generators in order to write common functions that can be both sync or async.",
-  "main": "index.js",
-  "author": "Logan Smyth <loganfsmyth@gmail.com>",
-  "homepage": "https://github.com/loganfsmyth/gensync",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/loganfsmyth/gensync.git"
-  },
-  "scripts": {
-    "test": "jest"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "keywords": [
-    "async",
-    "sync",
-    "generators",
-    "async-await",
-    "callbacks"
-  ],
   "devDependencies": {
     "babel-core": "^6.26.3",
@@ -34,4 +47,26 @@
     "jest": "^22.4.3",
     "prettier": "^1.12.1"
-  }
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://github.com/loganfsmyth/gensync",
+  "keywords": [
+    "async",
+    "sync",
+    "generators",
+    "async-await",
+    "callbacks"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "gensync",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/loganfsmyth/gensync.git"
+  },
+  "scripts": {
+    "test": "jest"
+  },
+  "version": "1.0.0-beta.2"
 }
Index: trip-planner-front/node_modules/get-caller-file/package.json
===================================================================
--- trip-planner-front/node_modules/get-caller-file/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/get-caller-file/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,41 @@
 {
-  "name": "get-caller-file",
-  "version": "2.0.5",
-  "description": "",
-  "main": "index.js",
-  "directories": {
-    "test": "tests"
+  "_args": [
+    [
+      "get-caller-file@2.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "get-caller-file@2.0.5",
+  "_id": "get-caller-file@2.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+  "_location": "/get-caller-file",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "get-caller-file@2.0.5",
+    "name": "get-caller-file",
+    "escapedName": "get-caller-file",
+    "rawSpec": "2.0.5",
+    "saveSpec": null,
+    "fetchSpec": "2.0.5"
   },
-  "files": [
-    "index.js",
-    "index.js.map",
-    "index.d.ts"
+  "_requiredBy": [
+    "/karma/yargs",
+    "/webpack-dev-server/yargs",
+    "/yargs"
   ],
-  "scripts": {
-    "prepare": "tsc",
-    "test": "mocha test",
-    "test:debug": "mocha test"
+  "_resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+  "_spec": "2.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Stefan Penner"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/stefanpenner/get-caller-file.git"
-  },
-  "author": "Stefan Penner",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/stefanpenner/get-caller-file/issues"
   },
-  "homepage": "https://github.com/stefanpenner/get-caller-file#readme",
+  "description": "[![Build Status](https://travis-ci.org/stefanpenner/get-caller-file.svg?branch=master)](https://travis-ci.org/stefanpenner/get-caller-file) [![Build status](https://ci.appveyor.com/api/projects/status/ol2q94g1932cy14a/branch/master?svg=true)](https://ci.appveyor.com/project/embercli/get-caller-file/branch/master)",
   "devDependencies": {
     "@types/chai": "^4.1.7",
@@ -37,6 +48,28 @@
     "typescript": "^3.3.3333"
   },
+  "directories": {
+    "test": "tests"
+  },
   "engines": {
     "node": "6.* || 8.* || >= 10.*"
-  }
+  },
+  "files": [
+    "index.js",
+    "index.js.map",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/stefanpenner/get-caller-file#readme",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "get-caller-file",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/stefanpenner/get-caller-file.git"
+  },
+  "scripts": {
+    "prepare": "tsc",
+    "test": "mocha test",
+    "test:debug": "mocha test"
+  },
+  "version": "2.0.5"
 }
Index: trip-planner-front/node_modules/get-intrinsic/package.json
===================================================================
--- trip-planner-front/node_modules/get-intrinsic/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/get-intrinsic/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,78 +1,110 @@
 {
-	"name": "get-intrinsic",
-	"version": "1.1.1",
-	"description": "Get and robustly cache all JS language-level intrinsics at first require time",
-	"main": "index.js",
-	"exports": {
-		".": [
-			{
-				"default": "./index.js"
-			},
-			"./index.js"
-		],
-		"./package.json": "./package.json"
-	},
-	"scripts": {
-		"prelint": "evalmd README.md",
-		"lint": "eslint --ext=.js,.mjs .",
-		"pretest": "npm run lint",
-		"tests-only": "nyc tape 'test/**/*.js'",
-		"test": "npm run tests-only",
-		"posttest": "aud --production",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git+https://github.com/ljharb/get-intrinsic.git"
-	},
-	"keywords": [
-		"javascript",
-		"ecmascript",
-		"es",
-		"js",
-		"intrinsic",
-		"getintrinsic",
-		"es-abstract"
-	],
-	"author": "Jordan Harband <ljharb@gmail.com>",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"license": "MIT",
-	"bugs": {
-		"url": "https://github.com/ljharb/get-intrinsic/issues"
-	},
-	"homepage": "https://github.com/ljharb/get-intrinsic#readme",
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.5.0",
-		"aud": "^1.1.3",
-		"auto-changelog": "^2.2.1",
-		"call-bind": "^1.0.2",
-		"es-abstract": "^1.18.0-next.2",
-		"es-value-fixtures": "^1.0.0",
-		"eslint": "^7.19.0",
-		"evalmd": "^0.0.19",
-		"foreach": "^2.0.5",
-		"has-bigints": "^1.0.1",
-		"make-async-function": "^1.0.0",
-		"make-async-generator-function": "^1.0.0",
-		"make-generator-function": "^2.0.0",
-		"nyc": "^10.3.2",
-		"object-inspect": "^1.9.0",
-		"tape": "^5.1.1"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	},
-	"dependencies": {
-		"function-bind": "^1.1.1",
-		"has": "^1.0.3",
-		"has-symbols": "^1.0.1"
-	}
+  "_args": [
+    [
+      "get-intrinsic@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "get-intrinsic@1.1.1",
+  "_id": "get-intrinsic@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+  "_location": "/get-intrinsic",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "get-intrinsic@1.1.1",
+    "name": "get-intrinsic",
+    "escapedName": "get-intrinsic",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/call-bind"
+  ],
+  "_resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/ljharb/get-intrinsic/issues"
+  },
+  "dependencies": {
+    "function-bind": "^1.1.1",
+    "has": "^1.0.3",
+    "has-symbols": "^1.0.1"
+  },
+  "description": "Get and robustly cache all JS language-level intrinsics at first require time",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.5.0",
+    "aud": "^1.1.3",
+    "auto-changelog": "^2.2.1",
+    "call-bind": "^1.0.2",
+    "es-abstract": "^1.18.0-next.2",
+    "es-value-fixtures": "^1.0.0",
+    "eslint": "^7.19.0",
+    "evalmd": "^0.0.19",
+    "foreach": "^2.0.5",
+    "has-bigints": "^1.0.1",
+    "make-async-function": "^1.0.0",
+    "make-async-generator-function": "^1.0.0",
+    "make-generator-function": "^2.0.0",
+    "nyc": "^10.3.2",
+    "object-inspect": "^1.9.0",
+    "tape": "^5.1.1"
+  },
+  "exports": {
+    ".": [
+      {
+        "default": "./index.js"
+      },
+      "./index.js"
+    ],
+    "./package.json": "./package.json"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/ljharb/get-intrinsic#readme",
+  "keywords": [
+    "javascript",
+    "ecmascript",
+    "es",
+    "js",
+    "intrinsic",
+    "getintrinsic",
+    "es-abstract"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "get-intrinsic",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ljharb/get-intrinsic.git"
+  },
+  "scripts": {
+    "lint": "eslint --ext=.js,.mjs .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prelint": "evalmd README.md",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only",
+    "tests-only": "nyc tape 'test/**/*.js'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/get-stream/package.json
===================================================================
--- trip-planner-front/node_modules/get-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/get-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "get-stream",
-	"version": "4.1.0",
-	"description": "Get a stream as a string, buffer, or array",
-	"license": "MIT",
-	"repository": "sindresorhus/get-stream",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"buffer-stream.js"
-	],
-	"keywords": [
-		"get",
-		"stream",
-		"promise",
-		"concat",
-		"string",
-		"text",
-		"buffer",
-		"read",
-		"data",
-		"consume",
-		"readable",
-		"readablestream",
-		"array",
-		"object"
-	],
-	"dependencies": {
-		"pump": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"into-stream": "^3.0.0",
-		"xo": "*"
-	}
+  "_args": [
+    [
+      "get-stream@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "get-stream@4.1.0",
+  "_id": "get-stream@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+  "_location": "/get-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "get-stream@4.1.0",
+    "name": "get-stream",
+    "escapedName": "get-stream",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/get-stream/issues"
+  },
+  "dependencies": {
+    "pump": "^3.0.0"
+  },
+  "description": "Get a stream as a string, buffer, or array",
+  "devDependencies": {
+    "ava": "*",
+    "into-stream": "^3.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "buffer-stream.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/get-stream#readme",
+  "keywords": [
+    "get",
+    "stream",
+    "promise",
+    "concat",
+    "string",
+    "text",
+    "buffer",
+    "read",
+    "data",
+    "consume",
+    "readable",
+    "readablestream",
+    "array",
+    "object"
+  ],
+  "license": "MIT",
+  "name": "get-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/get-stream.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/get-value/package.json
===================================================================
--- trip-planner-front/node_modules/get-value/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/get-value/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,43 @@
 {
-  "name": "get-value",
-  "description": "Use property paths (`a.b.c`) to get a nested value from an object.",
-  "version": "2.0.6",
-  "homepage": "https://github.com/jonschlinkert/get-value",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/get-value",
+  "_args": [
+    [
+      "get-value@2.0.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "get-value@2.0.6",
+  "_id": "get-value@2.0.6",
+  "_inBundle": false,
+  "_integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+  "_location": "/get-value",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "get-value@2.0.6",
+    "name": "get-value",
+    "escapedName": "get-value",
+    "rawSpec": "2.0.6",
+    "saveSpec": null,
+    "fetchSpec": "2.0.6"
+  },
+  "_requiredBy": [
+    "/cache-base",
+    "/has-value",
+    "/union-value",
+    "/unset-value/has-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+  "_spec": "2.0.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/get-value/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Use property paths (`a.b.c`) to get a nested value from an object.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -35,4 +55,11 @@
     "minimist": "^1.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/get-value",
   "keywords": [
     "get",
@@ -50,4 +77,14 @@
     "values"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "get-value",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/get-value.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -76,4 +113,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.0.6"
 }
Index: trip-planner-front/node_modules/getpass/package.json
===================================================================
--- trip-planner-front/node_modules/getpass/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/getpass/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,54 @@
 {
-  "name": "getpass",
-  "version": "0.1.7",
-  "description": "getpass for node.js",
-  "main": "lib/index.js",
+  "_args": [
+    [
+      "getpass@0.1.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "getpass@0.1.7",
+  "_id": "getpass@0.1.7",
+  "_inBundle": false,
+  "_integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+  "_location": "/getpass",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "getpass@0.1.7",
+    "name": "getpass",
+    "escapedName": "getpass",
+    "rawSpec": "0.1.7",
+    "saveSpec": null,
+    "fetchSpec": "0.1.7"
+  },
+  "_requiredBy": [
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+  "_spec": "0.1.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alex Wilson",
+    "email": "alex.wilson@joyent.com"
+  },
+  "bugs": {
+    "url": "https://github.com/arekinath/node-getpass/issues"
+  },
   "dependencies": {
     "assert-plus": "^1.0.0"
   },
+  "description": "getpass for node.js",
+  "homepage": "https://github.com/arekinath/node-getpass#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "getpass",
   "repository": {
     "type": "git",
-    "url": "https://github.com/arekinath/node-getpass.git"
+    "url": "git+https://github.com/arekinath/node-getpass.git"
   },
   "scripts": {
     "test": "tape test/*.test.js"
   },
-  "author": "Alex Wilson <alex.wilson@joyent.com>",
-  "license": "MIT"
+  "version": "0.1.7"
 }
Index: trip-planner-front/node_modules/glob-parent/package.json
===================================================================
--- trip-planner-front/node_modules/glob-parent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/glob-parent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,55 @@
 {
-  "name": "glob-parent",
-  "version": "5.1.2",
-  "description": "Extract the non-magic parent path from a glob string.",
-  "author": "Gulp Team <team@gulpjs.com> (https://gulpjs.com/)",
+  "_args": [
+    [
+      "glob-parent@5.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "glob-parent@5.1.2",
+  "_id": "glob-parent@5.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+  "_location": "/glob-parent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "glob-parent@5.1.2",
+    "name": "glob-parent",
+    "escapedName": "glob-parent",
+    "rawSpec": "5.1.2",
+    "saveSpec": null,
+    "fetchSpec": "5.1.2"
+  },
+  "_requiredBy": [
+    "/chokidar",
+    "/fast-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+  "_spec": "5.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Gulp Team",
+    "email": "team@gulpjs.com",
+    "url": "https://gulpjs.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/gulpjs/glob-parent/issues"
+  },
   "contributors": [
-    "Elan Shanker (https://github.com/es128)",
-    "Blaine Bublitz <blaine.bublitz@gmail.com>"
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com"
+    }
   ],
-  "repository": "gulpjs/glob-parent",
-  "license": "ISC",
-  "engines": {
-    "node": ">= 6"
-  },
-  "main": "index.js",
-  "files": [
-    "LICENSE",
-    "index.js"
-  ],
-  "scripts": {
-    "lint": "eslint .",
-    "pretest": "npm run lint",
-    "test": "nyc mocha --async-only",
-    "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit",
-    "coveralls": "nyc report --reporter=text-lcov | coveralls"
-  },
   "dependencies": {
     "is-glob": "^4.0.1"
   },
+  "description": "Extract the non-magic parent path from a glob string.",
   "devDependencies": {
     "coveralls": "^3.0.11",
@@ -36,4 +60,12 @@
     "nyc": "^13.3.0"
   },
+  "engines": {
+    "node": ">= 6"
+  },
+  "files": [
+    "LICENSE",
+    "index.js"
+  ],
+  "homepage": "https://github.com/gulpjs/glob-parent#readme",
   "keywords": [
     "glob",
@@ -45,4 +77,19 @@
     "base",
     "wildcard"
-  ]
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "glob-parent",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gulpjs/glob-parent.git"
+  },
+  "scripts": {
+    "azure-pipelines": "nyc mocha --async-only --reporter xunit -O output=test.xunit",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "lint": "eslint .",
+    "pretest": "npm run lint",
+    "test": "nyc mocha --async-only"
+  },
+  "version": "5.1.2"
 }
Index: trip-planner-front/node_modules/glob-to-regexp/package.json
===================================================================
--- trip-planner-front/node_modules/glob-to-regexp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/glob-to-regexp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,42 @@
 {
-  "name": "glob-to-regexp",
-  "version": "0.4.1",
+  "_args": [
+    [
+      "glob-to-regexp@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "glob-to-regexp@0.4.1",
+  "_id": "glob-to-regexp@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+  "_location": "/glob-to-regexp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "glob-to-regexp@0.4.1",
+    "name": "glob-to-regexp",
+    "escapedName": "glob-to-regexp",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
+  },
+  "_requiredBy": [
+    "/watchpack",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "fitzgen@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fitzgen/glob-to-regexp/issues"
+  },
   "description": "Convert globs to regular expressions",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/fitzgen/glob-to-regexp.git"
-  },
+  "homepage": "https://github.com/fitzgen/glob-to-regexp#readme",
   "keywords": [
     "regexp",
@@ -19,5 +47,14 @@
     "wildcard"
   ],
-  "author": "Nick Fitzgerald <fitzgen@gmail.com>",
-  "license": "BSD-2-Clause"
+  "license": "BSD-2-Clause",
+  "main": "index.js",
+  "name": "glob-to-regexp",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/fitzgen/glob-to-regexp.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/glob/package.json
===================================================================
--- trip-planner-front/node_modules/glob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/glob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,47 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "name": "glob",
-  "description": "a little globber",
-  "version": "7.1.7",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/node-glob.git"
+  "_args": [
+    [
+      "glob@7.1.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "glob@7.1.7",
+  "_id": "glob@7.1.7",
+  "_inBundle": false,
+  "_integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+  "_location": "/glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "glob@7.1.7",
+    "name": "glob",
+    "escapedName": "glob",
+    "rawSpec": "7.1.7",
+    "saveSpec": null,
+    "fetchSpec": "7.1.7"
   },
-  "main": "glob.js",
-  "files": [
-    "glob.js",
-    "sync.js",
-    "common.js"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/cacache",
+    "/del/globby",
+    "/del/rimraf",
+    "/karma",
+    "/node-gyp",
+    "/npm-packlist",
+    "/rimraf",
+    "/stylus"
   ],
-  "engines": {
-    "node": "*"
+  "_resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+  "_spec": "7.1.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/node-glob/issues"
   },
   "dependencies": {
@@ -25,4 +53,5 @@
     "path-is-absolute": "^1.0.0"
   },
+  "description": "a little globber",
   "devDependencies": {
     "mkdirp": "0",
@@ -31,4 +60,32 @@
     "tick": "0.0.6"
   },
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "glob.js",
+    "sync.js",
+    "common.js"
+  ],
+  "funding": {
+    "url": "https://github.com/sponsors/isaacs"
+  },
+  "homepage": "https://github.com/isaacs/node-glob#readme",
+  "license": "ISC",
+  "main": "glob.js",
+  "name": "glob",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-glob.git"
+  },
+  "scripts": {
+    "bench": "bash benchmark.sh",
+    "benchclean": "node benchclean.js",
+    "prepublish": "npm run benchclean",
+    "prof": "bash prof.sh && cat profile.txt",
+    "profclean": "rm -f v8.log profile.txt",
+    "test": "tap",
+    "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js"
+  },
   "tap": {
     "before": "test/00-setup.js",
@@ -36,16 +93,4 @@
     "jobs": 1
   },
-  "scripts": {
-    "prepublish": "npm run benchclean",
-    "profclean": "rm -f v8.log profile.txt",
-    "test": "tap",
-    "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
-    "bench": "bash benchmark.sh",
-    "prof": "bash prof.sh && cat profile.txt",
-    "benchclean": "node benchclean.js"
-  },
-  "license": "ISC",
-  "funding": {
-    "url": "https://github.com/sponsors/isaacs"
-  }
+  "version": "7.1.7"
 }
Index: trip-planner-front/node_modules/globals/package.json
===================================================================
--- trip-planner-front/node_modules/globals/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/globals/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,78 @@
 {
-	"name": "globals",
-	"version": "11.12.0",
-	"description": "Global identifiers from different JavaScript environments",
-	"license": "MIT",
-	"repository": "sindresorhus/globals",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=4"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"globals.json"
-	],
-	"keywords": [
-		"globals",
-		"global",
-		"identifiers",
-		"variables",
-		"vars",
-		"jshint",
-		"eslint",
-		"environments"
-	],
-	"devDependencies": {
-		"ava": "0.21.0",
-		"xo": "0.18.0"
-	},
-	"xo": {
-		"ignores": [
-			"get-browser-globals.js"
-		]
-	}
+  "_args": [
+    [
+      "globals@11.12.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "globals@11.12.0",
+  "_id": "globals@11.12.0",
+  "_inBundle": false,
+  "_integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+  "_location": "/globals",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "globals@11.12.0",
+    "name": "globals",
+    "escapedName": "globals",
+    "rawSpec": "11.12.0",
+    "saveSpec": null,
+    "fetchSpec": "11.12.0"
+  },
+  "_requiredBy": [
+    "/@babel/plugin-transform-classes",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+  "_spec": "11.12.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/globals/issues"
+  },
+  "description": "Global identifiers from different JavaScript environments",
+  "devDependencies": {
+    "ava": "0.21.0",
+    "xo": "0.18.0"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js",
+    "globals.json"
+  ],
+  "homepage": "https://github.com/sindresorhus/globals#readme",
+  "keywords": [
+    "globals",
+    "global",
+    "identifiers",
+    "variables",
+    "vars",
+    "jshint",
+    "eslint",
+    "environments"
+  ],
+  "license": "MIT",
+  "name": "globals",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/globals.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "11.12.0",
+  "xo": {
+    "ignores": [
+      "get-browser-globals.js"
+    ]
+  }
 }
Index: trip-planner-front/node_modules/globby/package.json
===================================================================
--- trip-planner-front/node_modules/globby/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/globby/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,82 +1,118 @@
 {
-	"name": "globby",
-	"version": "11.0.4",
-	"description": "User-friendly glob matching",
-	"license": "MIT",
-	"repository": "sindresorhus/globby",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"email": "sindresorhus@gmail.com",
-		"name": "Sindre Sorhus",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"bench": "npm update glob-stream fast-glob && matcha bench.js",
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"gitignore.js",
-		"stream-utils.js"
-	],
-	"keywords": [
-		"all",
-		"array",
-		"directories",
-		"expand",
-		"files",
-		"filesystem",
-		"filter",
-		"find",
-		"fnmatch",
-		"folders",
-		"fs",
-		"glob",
-		"globbing",
-		"globs",
-		"gulpfriendly",
-		"match",
-		"matcher",
-		"minimatch",
-		"multi",
-		"multiple",
-		"paths",
-		"pattern",
-		"patterns",
-		"traverse",
-		"util",
-		"utility",
-		"wildcard",
-		"wildcards",
-		"promise",
-		"gitignore",
-		"git"
-	],
-	"dependencies": {
-		"array-union": "^2.1.0",
-		"dir-glob": "^3.0.1",
-		"fast-glob": "^3.1.1",
-		"ignore": "^5.1.4",
-		"merge2": "^1.3.0",
-		"slash": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "^3.13.0",
-		"get-stream": "^6.0.0",
-		"glob-stream": "^6.1.0",
-		"globby": "sindresorhus/globby#main",
-		"matcha": "^0.7.0",
-		"rimraf": "^3.0.2",
-		"tsd": "^0.13.1",
-		"xo": "^0.33.1"
-	},
-	"xo": {
-		"ignores": [
-			"fixtures"
-		]
-	}
+  "_args": [
+    [
+      "globby@11.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "globby@11.0.4",
+  "_id": "globby@11.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
+  "_location": "/globby",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "globby@11.0.4",
+    "name": "globby",
+    "escapedName": "globby",
+    "rawSpec": "11.0.4",
+    "saveSpec": null,
+    "fetchSpec": "11.0.4"
+  },
+  "_requiredBy": [
+    "/copy-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz",
+  "_spec": "11.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/globby/issues"
+  },
+  "dependencies": {
+    "array-union": "^2.1.0",
+    "dir-glob": "^3.0.1",
+    "fast-glob": "^3.1.1",
+    "ignore": "^5.1.4",
+    "merge2": "^1.3.0",
+    "slash": "^3.0.0"
+  },
+  "description": "User-friendly glob matching",
+  "devDependencies": {
+    "ava": "^3.13.0",
+    "get-stream": "^6.0.0",
+    "glob-stream": "^6.1.0",
+    "globby": "github:sindresorhus/globby#main",
+    "matcha": "^0.7.0",
+    "rimraf": "^3.0.2",
+    "tsd": "^0.13.1",
+    "xo": "^0.33.1"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "gitignore.js",
+    "stream-utils.js"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/globby#readme",
+  "keywords": [
+    "all",
+    "array",
+    "directories",
+    "expand",
+    "files",
+    "filesystem",
+    "filter",
+    "find",
+    "fnmatch",
+    "folders",
+    "fs",
+    "glob",
+    "globbing",
+    "globs",
+    "gulpfriendly",
+    "match",
+    "matcher",
+    "minimatch",
+    "multi",
+    "multiple",
+    "paths",
+    "pattern",
+    "patterns",
+    "traverse",
+    "util",
+    "utility",
+    "wildcard",
+    "wildcards",
+    "promise",
+    "gitignore",
+    "git"
+  ],
+  "license": "MIT",
+  "name": "globby",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/globby.git"
+  },
+  "scripts": {
+    "bench": "npm update glob-stream fast-glob && matcha bench.js",
+    "test": "xo && ava && tsd"
+  },
+  "version": "11.0.4",
+  "xo": {
+    "ignores": [
+      "fixtures"
+    ]
+  }
 }
Index: trip-planner-front/node_modules/graceful-fs/package.json
===================================================================
--- trip-planner-front/node_modules/graceful-fs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/graceful-fs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,61 @@
 {
-  "name": "graceful-fs",
+  "_args": [
+    [
+      "graceful-fs@4.2.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "graceful-fs@4.2.8",
+  "_id": "graceful-fs@4.2.8",
+  "_inBundle": false,
+  "_integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
+  "_location": "/graceful-fs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "graceful-fs@4.2.8",
+    "name": "graceful-fs",
+    "escapedName": "graceful-fs",
+    "rawSpec": "4.2.8",
+    "saveSpec": null,
+    "fetchSpec": "4.2.8"
+  },
+  "_requiredBy": [
+    "/enhanced-resolve",
+    "/fs-extra",
+    "/jsonfile",
+    "/karma",
+    "/less",
+    "/node-gyp",
+    "/watchpack",
+    "/webpack",
+    "/webpack-dev-server/readdirp"
+  ],
+  "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+  "_spec": "4.2.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/isaacs/node-graceful-fs/issues"
+  },
   "description": "A drop-in replacement for fs, making various improvements.",
-  "version": "4.2.8",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/isaacs/node-graceful-fs"
+  "devDependencies": {
+    "import-fresh": "^2.0.0",
+    "mkdirp": "^0.5.0",
+    "rimraf": "^2.2.8",
+    "tap": "^12.7.0"
   },
-  "main": "graceful-fs.js",
   "directories": {
     "test": "test"
   },
-  "scripts": {
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags",
-    "test": "nyc --silent node test.js | tap -c -",
-    "posttest": "nyc report"
-  },
+  "files": [
+    "fs.js",
+    "graceful-fs.js",
+    "legacy-streams.js",
+    "polyfills.js",
+    "clone.js"
+  ],
+  "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
   "keywords": [
     "fs",
@@ -35,16 +75,17 @@
   ],
   "license": "ISC",
-  "devDependencies": {
-    "import-fresh": "^2.0.0",
-    "mkdirp": "^0.5.0",
-    "rimraf": "^2.2.8",
-    "tap": "^12.7.0"
+  "main": "graceful-fs.js",
+  "name": "graceful-fs",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/node-graceful-fs.git"
   },
-  "files": [
-    "fs.js",
-    "graceful-fs.js",
-    "legacy-streams.js",
-    "polyfills.js",
-    "clone.js"
-  ]
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "posttest": "nyc report",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "nyc --silent node test.js | tap -c -"
+  },
+  "version": "4.2.8"
 }
Index: trip-planner-front/node_modules/handle-thing/package.json
===================================================================
--- trip-planner-front/node_modules/handle-thing/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/handle-thing/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,57 @@
 {
+  "_args": [
+    [
+      "handle-thing@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "handle-thing@2.0.1",
+  "_id": "handle-thing@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+  "_location": "/handle-thing",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "handle-thing@2.0.1",
+    "name": "handle-thing",
+    "escapedName": "handle-thing",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/spdy"
+  ],
+  "_resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Fedor Indutny",
+    "email": "fedor@indutny.com"
+  },
+  "bugs": {
+    "url": "https://github.com/spdy-http2/handle-thing/issues"
+  },
+  "description": "Wrap Streams2 instance into a HandleWrap",
+  "devDependencies": {
+    "istanbul": "^0.4.5",
+    "mocha": "^5.2.0",
+    "pre-commit": "^1.2.2",
+    "readable-stream": "^3.0.6",
+    "standard": "^12.0.1",
+    "stream-pair": "^1.0.3"
+  },
+  "homepage": "https://github.com/spdy-http2/handle-thing#readme",
+  "keywords": [
+    "handle",
+    "net",
+    "streams2"
+  ],
+  "license": "MIT",
+  "main": "lib/handle.js",
   "name": "handle-thing",
-  "version": "2.0.1",
-  "description": "Wrap Streams2 instance into a HandleWrap",
-  "main": "lib/handle.js",
-  "scripts": {
-    "lint": "standard",
-    "test": "mocha --reporter=spec test/*-test.js",
-    "coverage": "istanbul cover node_modules/.bin/_mocha -- --reporter=spec test/**/*-test.js"
-  },
   "pre-commit": [
     "lint",
@@ -17,22 +62,9 @@
     "url": "git+ssh://git@github.com/indutny/handle-thing.git"
   },
-  "keywords": [
-    "handle",
-    "net",
-    "streams2"
-  ],
-  "author": "Fedor Indutny <fedor@indutny.com>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/spdy-http2/handle-thing/issues"
+  "scripts": {
+    "coverage": "istanbul cover node_modules/.bin/_mocha -- --reporter=spec test/**/*-test.js",
+    "lint": "standard",
+    "test": "mocha --reporter=spec test/*-test.js"
   },
-  "homepage": "https://github.com/spdy-http2/handle-thing#readme",
-  "devDependencies": {
-    "istanbul": "^0.4.5",
-    "mocha": "^5.2.0",
-    "pre-commit": "^1.2.2",
-    "readable-stream": "^3.0.6",
-    "standard": "^12.0.1",
-    "stream-pair": "^1.0.3"
-  }
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/har-schema/package.json
===================================================================
--- trip-planner-front/node_modules/har-schema/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/har-schema/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,68 @@
 {
-  "version": "2.0.0",
-  "name": "har-schema",
+  "_args": [
+    [
+      "har-schema@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "har-schema@2.0.0",
+  "_id": "har-schema@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+  "_location": "/har-schema",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "har-schema@2.0.0",
+    "name": "har-schema",
+    "escapedName": "har-schema",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/har-validator"
+  ],
+  "_resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ahmad Nassri",
+    "email": "ahmad@ahmadnassri.com",
+    "url": "https://www.ahmadnassri.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/ahmadnassri/har-schema/issues"
+  },
+  "config": {
+    "commitizen": {
+      "path": "./node_modules/cz-conventional-changelog"
+    }
+  },
+  "contributors": [
+    {
+      "name": "Evgeny Poberezkin",
+      "email": "e.poberezkin@me.com"
+    }
+  ],
   "description": "JSON Schema for HTTP Archive (HAR)",
-  "author": "Ahmad Nassri <ahmad@ahmadnassri.com> (https://www.ahmadnassri.com/)",
-  "contributors": [
-    "Evgeny Poberezkin <e.poberezkin@me.com>"
+  "devDependencies": {
+    "ajv": "^5.0.0",
+    "codeclimate-test-reporter": "^0.4.0",
+    "cz-conventional-changelog": "^1.2.0",
+    "echint": "^2.1.0",
+    "semantic-release": "^6.3.2",
+    "snazzy": "^5.0.0",
+    "tap": "^8.0.1"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "lib"
   ],
   "homepage": "https://github.com/ahmadnassri/har-schema",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ahmadnassri/har-schema.git"
-  },
-  "license": "ISC",
-  "main": "lib/index.js",
   "keywords": [
     "har",
@@ -22,33 +73,18 @@
     "JSON-schema"
   ],
-  "engines": {
-    "node": ">=4"
-  },
-  "files": [
-    "lib"
-  ],
-  "bugs": {
-    "url": "https://github.com/ahmadnassri/har-schema/issues"
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "har-schema",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ahmadnassri/har-schema.git"
   },
   "scripts": {
-    "test": "tap test --reporter spec",
+    "codeclimate": "tap --coverage-report=text-lcov | codeclimate-test-reporter",
+    "coverage": "tap test --reporter silent --coverage",
     "pretest": "snazzy && echint",
-    "coverage": "tap test --reporter silent --coverage",
-    "codeclimate": "tap --coverage-report=text-lcov | codeclimate-test-reporter",
-    "semantic-release": "semantic-release pre && npm publish && semantic-release post"
+    "semantic-release": "semantic-release pre && npm publish && semantic-release post",
+    "test": "tap test --reporter spec"
   },
-  "config": {
-    "commitizen": {
-      "path": "./node_modules/cz-conventional-changelog"
-    }
-  },
-  "devDependencies": {
-    "ajv": "^5.0.0",
-    "codeclimate-test-reporter": "^0.4.0",
-    "cz-conventional-changelog": "^1.2.0",
-    "echint": "^2.1.0",
-    "semantic-release": "^6.3.2",
-    "snazzy": "^5.0.0",
-    "tap": "^8.0.1"
-  }
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/har-validator/node_modules/ajv/package.json
===================================================================
--- trip-planner-front/node_modules/har-validator/node_modules/ajv/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/har-validator/node_modules/ajv/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,42 @@
 {
-  "name": "ajv",
-  "version": "6.12.6",
-  "description": "Another JSON Schema Validator",
-  "main": "lib/ajv.js",
-  "typings": "lib/ajv.d.ts",
-  "files": [
-    "lib/",
-    "dist/",
-    "scripts/",
-    "LICENSE",
-    ".tonic_example.js"
+  "_args": [
+    [
+      "ajv@6.12.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
-    "jshint": "jshint lib/{compile/,}*.js",
-    "lint": "npm run jshint && npm run eslint",
-    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
-    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
-    "test-debug": "npm run test-spec -- --inspect-brk",
-    "test-cov": "nyc npm run test-spec",
-    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
-    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
-    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
-    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
-    "test-karma": "karma start",
-    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
-    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
-    "test": "npm run lint && npm run build && npm run test-all",
-    "prepublish": "npm run build && npm run bundle",
-    "watch": "watch \"npm run build\" ./lib/dot"
+  "_development": true,
+  "_from": "ajv@6.12.6",
+  "_id": "ajv@6.12.6",
+  "_inBundle": false,
+  "_integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+  "_location": "/har-validator/ajv",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv@6.12.6",
+    "name": "ajv",
+    "escapedName": "ajv",
+    "rawSpec": "6.12.6",
+    "saveSpec": null,
+    "fetchSpec": "6.12.6"
   },
-  "nyc": {
-    "exclude": [
-      "**/spec/**",
-      "node_modules"
-    ],
-    "reporter": [
-      "lcov",
-      "text-summary"
-    ]
+  "_requiredBy": [
+    "/har-validator"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+  "_spec": "6.12.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ajv-validator/ajv.git"
-  },
-  "keywords": [
-    "JSON",
-    "schema",
-    "validator",
-    "validation",
-    "jsonschema",
-    "json-schema",
-    "json-schema-validator",
-    "json-schema-validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/ajv-validator/ajv/issues"
   },
-  "homepage": "https://github.com/ajv-validator/ajv",
-  "tonicExampleFilename": ".tonic_example.js",
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ajv"
+  },
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
@@ -68,4 +45,5 @@
     "uri-js": "^4.2.2"
   },
+  "description": "Another JSON Schema Validator",
   "devDependencies": {
     "ajv-async": "^1.0.0",
@@ -96,11 +74,64 @@
     "watch": "^1.0.0"
   },
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ajv"
-  },
+  "files": [
+    "lib/",
+    "dist/",
+    "scripts/",
+    "LICENSE",
+    ".tonic_example.js"
+  ],
   "funding": {
     "type": "github",
     "url": "https://github.com/sponsors/epoberezkin"
-  }
+  },
+  "homepage": "https://github.com/ajv-validator/ajv",
+  "keywords": [
+    "JSON",
+    "schema",
+    "validator",
+    "validation",
+    "jsonschema",
+    "json-schema",
+    "json-schema-validator",
+    "json-schema-validation"
+  ],
+  "license": "MIT",
+  "main": "lib/ajv.js",
+  "name": "ajv",
+  "nyc": {
+    "exclude": [
+      "**/spec/**",
+      "node_modules"
+    ],
+    "reporter": [
+      "lcov",
+      "text-summary"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv.git"
+  },
+  "scripts": {
+    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
+    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
+    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
+    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
+    "jshint": "jshint lib/{compile/,}*.js",
+    "lint": "npm run jshint && npm run eslint",
+    "prepublish": "npm run build && npm run bundle",
+    "test": "npm run lint && npm run build && npm run test-all",
+    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
+    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
+    "test-cov": "nyc npm run test-spec",
+    "test-debug": "npm run test-spec -- --inspect-brk",
+    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
+    "test-karma": "karma start",
+    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
+    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
+    "watch": "watch \"npm run build\" ./lib/dot"
+  },
+  "tonicExampleFilename": ".tonic_example.js",
+  "typings": "lib/ajv.d.ts",
+  "version": "6.12.6"
 }
Index: trip-planner-front/node_modules/har-validator/node_modules/json-schema-traverse/package.json
===================================================================
--- trip-planner-front/node_modules/har-validator/node_modules/json-schema-traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/har-validator/node_modules/json-schema-traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,39 @@
 {
-  "name": "json-schema-traverse",
-  "version": "0.4.1",
-  "description": "Traverse JSON Schema passing each schema object to callback",
-  "main": "index.js",
-  "scripts": {
-    "eslint": "eslint index.js spec",
-    "test-spec": "mocha spec -R spec",
-    "test": "npm run eslint && nyc npm run test-spec"
+  "_args": [
+    [
+      "json-schema-traverse@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema-traverse@0.4.1",
+  "_id": "json-schema-traverse@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+  "_location": "/har-validator/json-schema-traverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema-traverse@0.4.1",
+    "name": "json-schema-traverse",
+    "escapedName": "json-schema-traverse",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  "_requiredBy": [
+    "/har-validator/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "traverse",
-    "iterate"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
   },
-  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "description": "Traverse JSON Schema passing each schema object to callback",
   "devDependencies": {
     "coveralls": "^2.13.1",
@@ -31,4 +43,13 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "keywords": [
+    "JSON-Schema",
+    "traverse",
+    "iterate"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-schema-traverse",
   "nyc": {
     "exclude": [
@@ -40,4 +61,14 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js spec",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "mocha spec -R spec"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/har-validator/package.json
===================================================================
--- trip-planner-front/node_modules/har-validator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/har-validator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,59 @@
 {
-  "version": "5.1.5",
-  "name": "har-validator",
+  "_args": [
+    [
+      "har-validator@5.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "har-validator@5.1.5",
+  "_id": "har-validator@5.1.5",
+  "_inBundle": false,
+  "_integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+  "_location": "/har-validator",
+  "_phantomChildren": {
+    "fast-deep-equal": "3.1.3",
+    "fast-json-stable-stringify": "2.1.0",
+    "uri-js": "4.4.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "har-validator@5.1.5",
+    "name": "har-validator",
+    "escapedName": "har-validator",
+    "rawSpec": "5.1.5",
+    "saveSpec": null,
+    "fetchSpec": "5.1.5"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+  "_spec": "5.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ahmad Nassri",
+    "email": "ahmad@ahmadnassri.com",
+    "url": "https://www.ahmadnassri.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/ahmadnassri/node-har-validator/issues"
+  },
+  "dependencies": {
+    "ajv": "^6.12.3",
+    "har-schema": "^2.0.0"
+  },
   "description": "Extremely fast HTTP Archive (HAR) validator using JSON Schema",
-  "author": "Ahmad Nassri <ahmad@ahmadnassri.com> (https://www.ahmadnassri.com/)",
+  "devDependencies": {
+    "tap": "^14.10.8"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "lib"
+  ],
   "homepage": "https://github.com/ahmadnassri/node-har-validator",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ahmadnassri/node-har-validator.git"
-  },
-  "license": "MIT",
-  "main": "lib/promise.js",
   "keywords": [
     "har",
@@ -20,12 +65,10 @@
     "validator"
   ],
-  "engines": {
-    "node": ">=6"
-  },
-  "files": [
-    "lib"
-  ],
-  "bugs": {
-    "url": "https://github.com/ahmadnassri/node-har-validator/issues"
+  "license": "MIT",
+  "main": "lib/promise.js",
+  "name": "har-validator",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ahmadnassri/node-har-validator.git"
   },
   "scripts": {
@@ -34,10 +77,4 @@
     "test:coverage": "tap test --coverage-report=lcov --no-browser"
   },
-  "devDependencies": {
-    "tap": "^14.10.8"
-  },
-  "dependencies": {
-    "ajv": "^6.12.3",
-    "har-schema": "^2.0.0"
-  }
+  "version": "5.1.5"
 }
Index: trip-planner-front/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,33 @@
 {
-  "name": "has-flag",
-  "version": "3.0.0",
-  "description": "Check if argv has a specific flag",
-  "license": "MIT",
-  "repository": "sindresorhus/has-flag",
+  "_args": [
+    [
+      "has-flag@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@3.0.0",
+  "_id": "has-flag@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+  "_location": "/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@3.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/supports-color",
+    "/webpack-dev-server/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +35,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
   "keywords": [
     "has",
@@ -38,7 +69,13 @@
     "optimist"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/has-symbols/package.json
===================================================================
--- trip-planner-front/node_modules/has-symbols/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-symbols/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,96 +1,131 @@
 {
-	"name": "has-symbols",
-	"version": "1.0.2",
-	"author": {
-		"name": "Jordan Harband",
-		"email": "ljharb@gmail.com",
-		"url": "http://ljharb.codes"
-	},
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"contributors": [
-		{
-			"name": "Jordan Harband",
-			"email": "ljharb@gmail.com",
-			"url": "http://ljharb.codes"
-		}
-	],
-	"description": "Determine if the JS environment has Symbol support. Supports spec, or shams.",
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"prepublish": "safe-publish-latest",
-		"pretest": "npm run --silent lint",
-		"test": "npm run tests-only",
-		"posttest": "aud --production",
-		"tests-only": "npm run test:stock && npm run test:staging && npm run test:shams",
-		"test:stock": "nyc node test",
-		"test:staging": "nyc node --harmony --es-staging test",
-		"test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs",
-		"test:shams:corejs": "nyc node test/shams/core-js.js",
-		"test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js",
-		"lint": "eslint --ext=js,mjs .",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/inspect-js/has-symbols.git"
-	},
-	"keywords": [
-		"Symbol",
-		"symbols",
-		"typeof",
-		"sham",
-		"polyfill",
-		"native",
-		"core-js",
-		"ES6"
-	],
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.5.1",
-		"aud": "^1.1.4",
-		"auto-changelog": "^2.2.1",
-		"core-js": "^2.6.12",
-		"eslint": "^7.20.0",
-		"get-own-property-symbols": "^0.9.5",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.2.0"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	},
-	"greenkeeper": {
-		"ignore": [
-			"core-js"
-		]
-	}
+  "_args": [
+    [
+      "has-symbols@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-symbols@1.0.2",
+  "_id": "has-symbols@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+  "_location": "/has-symbols",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-symbols@1.0.2",
+    "name": "has-symbols",
+    "escapedName": "has-symbols",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/get-intrinsic",
+    "/has-tostringtag",
+    "/object.assign"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com",
+    "url": "http://ljharb.codes"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/has-symbols/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jordan Harband",
+      "email": "ljharb@gmail.com",
+      "url": "http://ljharb.codes"
+    }
+  ],
+  "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.5.1",
+    "aud": "^1.1.4",
+    "auto-changelog": "^2.2.1",
+    "core-js": "^2.6.12",
+    "eslint": "^7.20.0",
+    "get-own-property-symbols": "^0.9.5",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.2.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "greenkeeper": {
+    "ignore": [
+      "core-js"
+    ]
+  },
+  "homepage": "https://github.com/inspect-js/has-symbols#readme",
+  "keywords": [
+    "Symbol",
+    "symbols",
+    "typeof",
+    "sham",
+    "polyfill",
+    "native",
+    "core-js",
+    "ES6"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-symbols",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inspect-js/has-symbols.git"
+  },
+  "scripts": {
+    "lint": "eslint --ext=js,mjs .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "safe-publish-latest",
+    "pretest": "npm run --silent lint",
+    "test": "npm run tests-only",
+    "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs",
+    "test:shams:corejs": "nyc node test/shams/core-js.js",
+    "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js",
+    "test:staging": "nyc node --harmony --es-staging test",
+    "test:stock": "nyc node test",
+    "tests-only": "npm run test:stock && npm run test:staging && npm run test:shams",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/has-tostringtag/package.json
===================================================================
--- trip-planner-front/node_modules/has-tostringtag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-tostringtag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,84 +1,115 @@
 {
-	"name": "has-tostringtag",
-	"version": "1.0.0",
-	"author": {
-		"name": "Jordan Harband",
-		"email": "ljharb@gmail.com",
-		"url": "http://ljharb.codes"
-	},
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"contributors": [
-		{
-			"name": "Jordan Harband",
-			"email": "ljharb@gmail.com",
-			"url": "http://ljharb.codes"
-		}
-	],
-	"description": "Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.",
-	"license": "MIT",
-	"main": "index.js",
-	"exports": {
-		".": "./index.js",
-		"./shams": "./shams.js",
-		"./package.json": "./package.json"
-	},
-	"scripts": {
-		"prepublishOnly": "safe-publish-latest",
-		"prepublish": "not-in-publish || npm run prepublishOnly",
-		"pretest": "npm run --silent lint",
-		"test": "npm run tests-only",
-		"posttest": "aud --production",
-		"tests-only": "npm run test:stock && npm run test:staging && npm run test:shams",
-		"test:stock": "nyc node test",
-		"test:staging": "nyc node --harmony --es-staging test",
-		"test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs",
-		"test:shams:corejs": "nyc node test/shams/core-js.js",
-		"test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js",
-		"lint": "eslint --ext=js,mjs .",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git+https://github.com/inspect-js/has-tostringtag.git"
-	},
-	"bugs": {
-		"url": "https://github.com/inspect-js/has-tostringtag/issues"
-	},
-	"homepage": "https://github.com/inspect-js/has-tostringtag#readme",
-	"keywords": [
-		"javascript",
-		"ecmascript",
-		"symbol",
-		"symbols",
-		"tostringtag",
-		"Symbol.toStringTag"
-	],
-	"dependencies": {
-		"has-symbols": "^1.0.2"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.6.0",
-		"aud": "^1.1.5",
-		"auto-changelog": "^2.3.0",
-		"core-js": "^2.6.12",
-		"eslint": "^7.32.0",
-		"get-own-property-symbols": "^0.9.5",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.3.0"
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "has-tostringtag@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-tostringtag@1.0.0",
+  "_id": "has-tostringtag@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+  "_location": "/has-tostringtag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-tostringtag@1.0.0",
+    "name": "has-tostringtag",
+    "escapedName": "has-tostringtag",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/is-arguments",
+    "/is-date-object",
+    "/is-regex"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com",
+    "url": "http://ljharb.codes"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/has-tostringtag/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jordan Harband",
+      "email": "ljharb@gmail.com",
+      "url": "http://ljharb.codes"
+    }
+  ],
+  "dependencies": {
+    "has-symbols": "^1.0.2"
+  },
+  "description": "Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.6.0",
+    "aud": "^1.1.5",
+    "auto-changelog": "^2.3.0",
+    "core-js": "^2.6.12",
+    "eslint": "^7.32.0",
+    "get-own-property-symbols": "^0.9.5",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.3.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "exports": {
+    ".": "./index.js",
+    "./shams": "./shams.js",
+    "./package.json": "./package.json"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/inspect-js/has-tostringtag#readme",
+  "keywords": [
+    "javascript",
+    "ecmascript",
+    "symbol",
+    "symbols",
+    "tostringtag",
+    "Symbol.toStringTag"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-tostringtag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/inspect-js/has-tostringtag.git"
+  },
+  "scripts": {
+    "lint": "eslint --ext=js,mjs .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "not-in-publish || npm run prepublishOnly",
+    "prepublishOnly": "safe-publish-latest",
+    "pretest": "npm run --silent lint",
+    "test": "npm run tests-only",
+    "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs",
+    "test:shams:corejs": "nyc node test/shams/core-js.js",
+    "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js",
+    "test:staging": "nyc node --harmony --es-staging test",
+    "test:stock": "nyc node test",
+    "tests-only": "npm run test:stock && npm run test:staging && npm run test:shams",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/has-unicode/package.json
===================================================================
--- trip-planner-front/node_modules/has-unicode/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-unicode/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,62 @@
 {
-  "name": "has-unicode",
-  "version": "2.0.1",
+  "_args": [
+    [
+      "has-unicode@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-unicode@2.0.1",
+  "_id": "has-unicode@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+  "_location": "/has-unicode",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-unicode@2.0.1",
+    "name": "has-unicode",
+    "escapedName": "has-unicode",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/gauge"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "email": "me@re-becca.org"
+  },
+  "bugs": {
+    "url": "https://github.com/iarna/has-unicode/issues"
+  },
   "description": "Try to guess if your terminal supports unicode",
-  "main": "index.js",
-  "scripts": {
-    "test": "tap test/*.js"
+  "devDependencies": {
+    "require-inject": "^1.3.0",
+    "tap": "^2.3.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/iarna/has-unicode"
-  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/iarna/has-unicode",
   "keywords": [
     "unicode",
     "terminal"
   ],
-  "files": [
-    "index.js"
-  ],
-  "author": "Rebecca Turner <me@re-becca.org>",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/iarna/has-unicode/issues"
+  "main": "index.js",
+  "name": "has-unicode",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/iarna/has-unicode.git"
   },
-  "homepage": "https://github.com/iarna/has-unicode",
-  "devDependencies": {
-    "require-inject": "^1.3.0",
-    "tap": "^2.3.1"
-  }
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/has-value/package.json
===================================================================
--- trip-planner-front/node_modules/has-value/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-value/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,49 @@
 {
-  "name": "has-value",
-  "description": "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/has-value",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ryan M Harrison (https://linkedin.com/in/harrisonrm)"
+  "_args": [
+    [
+      "has-value@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/has-value",
+  "_development": true,
+  "_from": "has-value@1.0.0",
+  "_id": "has-value@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+  "_location": "/has-value",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-value@1.0.0",
+    "name": "has-value",
+    "escapedName": "has-value",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/cache-base"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/has-value/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ryan M Harrison",
+      "url": "https://linkedin.com/in/harrisonrm"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "get-value": "^2.0.6",
@@ -29,8 +51,16 @@
     "isobject": "^3.0.0"
   },
+  "description": "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.",
   "devDependencies": {
     "gulp-format-md": "^0.1.12",
     "mocha": "^3.4.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/has-value",
   "keywords": [
     "array",
@@ -58,4 +88,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-value",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/has-value.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -80,4 +120,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/has-values/node_modules/is-number/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/has-values/node_modules/is-number/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-values/node_modules/is-number/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/has-values/is-number/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/has-values/is-number"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/has-values/node_modules/is-number/package.json
===================================================================
--- trip-planner-front/node_modules/has-values/node_modules/is-number/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-values/node_modules/is-number/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,56 @@
 {
-  "name": "is-number",
-  "description": "Returns true if the value is a number. comprehensive tests.",
-  "version": "3.0.0",
-  "homepage": "https://github.com/jonschlinkert/is-number",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Charlike Mike Reagent (http://www.tunnckocore.tk)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "is-number@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-number",
+  "_development": true,
+  "_from": "is-number@3.0.0",
+  "_id": "is-number@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+  "_location": "/has-values/is-number",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-number@3.0.0",
+    "name": "is-number",
+    "escapedName": "is-number",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/has-values"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-number/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Charlike Mike Reagent",
+      "url": "http://www.tunnckocore.tk"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if the value is a number. comprehensive tests.",
   "devDependencies": {
     "benchmarked": "^0.2.5",
@@ -33,4 +59,11 @@
     "mocha": "^3.0.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-number",
   "keywords": [
     "check",
@@ -54,4 +87,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-number",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-number.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -80,4 +123,5 @@
       "verb-generate-readme"
     ]
-  }
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/has-values/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/has-values/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-values/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "4.0.0",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@4.0.0",
+  "_id": "kind-of@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+  "_location": "/has-values/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@4.0.0",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/has-values"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/has-values/package.json
===================================================================
--- trip-planner-front/node_modules/has-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,40 @@
 {
-  "name": "has-values",
-  "description": "Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays. ",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/has-values",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/has-values",
+  "_args": [
+    [
+      "has-values@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-values@1.0.0",
+  "_id": "has-values@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+  "_location": "/has-values",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-values@1.0.0",
+    "name": "has-values",
+    "escapedName": "has-values",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/has-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/has-values/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
@@ -24,8 +42,16 @@
     "kind-of": "^4.0.0"
   },
+  "description": "Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays. ",
   "devDependencies": {
     "gulp-format-md": "^0.1.12",
     "mocha": "^3.4.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/has-values",
   "keywords": [
     "array",
@@ -54,4 +80,14 @@
     "values"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-values",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/has-values.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -79,4 +115,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/has/package.json
===================================================================
--- trip-planner-front/node_modules/has/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/has/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,41 @@
 {
-  "name": "has",
-  "description": "Object.prototype.hasOwnProperty.call shortcut",
-  "version": "1.0.3",
-  "homepage": "https://github.com/tarruda/has",
+  "_args": [
+    [
+      "has@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has@1.0.3",
+  "_id": "has@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+  "_location": "/has",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has@1.0.3",
+    "name": "has",
+    "escapedName": "has",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
+  },
+  "_requiredBy": [
+    "/get-intrinsic",
+    "/is-core-module"
+  ],
+  "_resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Thiago de Arruda",
     "email": "tpadilha84@gmail.com"
   },
- "contributors": [
+  "bugs": {
+    "url": "https://github.com/tarruda/has/issues"
+  },
+  "contributors": [
     {
       "name": "Jordan Harband",
@@ -15,11 +44,17 @@
     }
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/tarruda/has.git"
+  "dependencies": {
+    "function-bind": "^1.1.1"
   },
-  "bugs": {
-    "url": "https://github.com/tarruda/has/issues"
+  "description": "Object.prototype.hasOwnProperty.call shortcut",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^12.2.1",
+    "eslint": "^4.19.1",
+    "tape": "^4.9.0"
   },
+  "engines": {
+    "node": ">= 0.4.0"
+  },
+  "homepage": "https://github.com/tarruda/has",
   "license": "MIT",
   "licenses": [
@@ -30,14 +65,8 @@
   ],
   "main": "./src",
-  "dependencies": {
-    "function-bind": "^1.1.1"
-  },
-  "devDependencies": {
-    "@ljharb/eslint-config": "^12.2.1",
-    "eslint": "^4.19.1",
-    "tape": "^4.9.0"
-  },
-  "engines": {
-    "node": ">= 0.4.0"
+  "name": "has",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/tarruda/has.git"
   },
   "scripts": {
@@ -45,4 +74,5 @@
     "pretest": "npm run lint",
     "test": "tape test"
-  }
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/hdr-histogram-js/package.json
===================================================================
--- trip-planner-front/node_modules/hdr-histogram-js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hdr-histogram-js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,45 @@
 {
-  "name": "hdr-histogram-js",
-  "version": "2.0.1",
+  "_args": [
+    [
+      "hdr-histogram-js@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "hdr-histogram-js@2.0.1",
+  "_id": "hdr-histogram-js@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-uPZxl1dAFnjUFHWLZmt93vUUvtHeaBay9nVNHu38SdOjMSF/4KqJUqa1Seuj08ptU1rEb6AHvB41X8n/zFZ74Q==",
+  "_location": "/hdr-histogram-js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "hdr-histogram-js@2.0.1",
+    "name": "hdr-histogram-js",
+    "escapedName": "hdr-histogram-js",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/piscina"
+  ],
+  "_resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alexandre Victoor"
+  },
+  "browser": "dist/hdrhistogram.umd.js",
+  "bugs": {
+    "url": "https://github.com/HdrHistogram/HdrHistogramJS/issues"
+  },
+  "dependencies": {
+    "@assemblyscript/loader": "^0.10.1",
+    "base64-js": "^1.2.0",
+    "pako": "^1.0.3"
+  },
   "description": "TypeScript port of HdrHistogram",
-  "main": "dist/index.js",
-  "browser": "dist/hdrhistogram.umd.js",
-  "types": "dist/index.d.ts",
-  "keywords": [
-    "hdr-histogram",
-    "hdr-histogram-js",
-    "percentiles",
-    "monitoring",
-    "latency",
-    "performance"
-  ],
-  "scripts": {
-    "tsc": "tsc --skipLibCheck --outDir dist --declaration true --sourceMap true",
-    "test": "jest",
-    "build": "npm run tsc && npm run rollup",
-    "prettier": "prettier --parser typescript -l src/**/*.ts",
-    "prettier:fix": "prettier --write --parser typescript -l src/**/*.ts",
-    "astest": "asp --verbose",
-    "astest:ci": "asp --summary",
-    "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --sourceMap --debug",
-    "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --sourceMap -O3 --noAssert",
-    "asbuild:base64": "echo \"/** @internal */\nexport const BINARY = \\\"$(node ./base64.js build/optimized.wasm)\\\";\" > src/wasm/generated-wasm.ts",
-    "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized && npm run asbuild:base64",
-    "rollup": "rollup -c"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/HdrHistogram/HdrHistogramJS.git"
-  },
-  "author": "Alexandre Victoor",
-  "license": "BSD",
   "devDependencies": {
     "@as-pect/cli": "^4.0.0",
@@ -56,12 +64,39 @@
     "yargs": "^6.4.0"
   },
-  "dependencies": {
-    "@assemblyscript/loader": "^0.10.1",
-    "base64-js": "^1.2.0",
-    "pako": "^1.0.3"
-  },
   "files": [
     ".",
     "dist"
-  ]
+  ],
+  "homepage": "https://github.com/HdrHistogram/HdrHistogramJS#readme",
+  "keywords": [
+    "hdr-histogram",
+    "hdr-histogram-js",
+    "percentiles",
+    "monitoring",
+    "latency",
+    "performance"
+  ],
+  "license": "BSD",
+  "main": "dist/index.js",
+  "name": "hdr-histogram-js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/HdrHistogram/HdrHistogramJS.git"
+  },
+  "scripts": {
+    "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized && npm run asbuild:base64",
+    "asbuild:base64": "echo \"/** @internal */\nexport const BINARY = \\\"$(node ./base64.js build/optimized.wasm)\\\";\" > src/wasm/generated-wasm.ts",
+    "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --sourceMap -O3 --noAssert",
+    "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --sourceMap --debug",
+    "astest": "asp --verbose",
+    "astest:ci": "asp --summary",
+    "build": "npm run tsc && npm run rollup",
+    "prettier": "prettier --parser typescript -l src/**/*.ts",
+    "prettier:fix": "prettier --write --parser typescript -l src/**/*.ts",
+    "rollup": "rollup -c",
+    "test": "jest",
+    "tsc": "tsc --skipLibCheck --outDir dist --declaration true --sourceMap true"
+  },
+  "types": "dist/index.d.ts",
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/hdr-histogram-percentiles-obj/package.json
===================================================================
--- trip-planner-front/node_modules/hdr-histogram-percentiles-obj/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hdr-histogram-percentiles-obj/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,47 @@
 {
-  "name": "hdr-histogram-percentiles-obj",
-  "version": "3.0.0",
+  "_args": [
+    [
+      "hdr-histogram-percentiles-obj@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "hdr-histogram-percentiles-obj@3.0.0",
+  "_id": "hdr-histogram-percentiles-obj@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==",
+  "_location": "/hdr-histogram-percentiles-obj",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "hdr-histogram-percentiles-obj@3.0.0",
+    "name": "hdr-histogram-percentiles-obj",
+    "escapedName": "hdr-histogram-percentiles-obj",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/piscina"
+  ],
+  "_resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Glen Keane",
+    "email": "glenkeane.94@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/GlenTiki/hdr-histogram-percentiles-obj/issues"
+  },
   "description": "A little lib for turning hdr-histogram-js to objects",
-  "main": "index.js",
-  "scripts": {
-    "test": "standard && tap ./test/*.js"
+  "devDependencies": {
+    "hdr-histogram-js": "^2.0.0",
+    "pre-commit": "^1.1.3",
+    "standard": "^14.0.0",
+    "tap": "^14.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/GlenTiki/hdr-histogram-percentiles-obj.git"
-  },
+  "homepage": "https://github.com/GlenTiki/hdr-histogram-percentiles-obj#readme",
   "keywords": [
     "hdr-histogram",
@@ -16,18 +49,17 @@
     "percentiles"
   ],
-  "author": "Glen Keane <glenkeane.94@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/GlenTiki/hdr-histogram-percentiles-obj/issues"
-  },
+  "main": "index.js",
+  "name": "hdr-histogram-percentiles-obj",
   "pre-commit": [
     "test"
   ],
-  "homepage": "https://github.com/GlenTiki/hdr-histogram-percentiles-obj#readme",
-  "devDependencies": {
-    "pre-commit": "^1.1.3",
-    "standard": "^14.0.0",
-    "tap": "^14.0.0",
-    "hdr-histogram-js": "^2.0.0"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/GlenTiki/hdr-histogram-percentiles-obj.git"
+  },
+  "scripts": {
+    "test": "standard && tap ./test/*.js"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/hosted-git-info/package.json
===================================================================
--- trip-planner-front/node_modules/hosted-git-info/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hosted-git-info/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,58 @@
 {
-  "name": "hosted-git-info",
-  "version": "4.0.2",
+  "_args": [
+    [
+      "hosted-git-info@4.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "hosted-git-info@4.0.2",
+  "_id": "hosted-git-info@4.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
+  "_location": "/hosted-git-info",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "hosted-git-info@4.0.2",
+    "name": "hosted-git-info",
+    "escapedName": "hosted-git-info",
+    "rawSpec": "4.0.2",
+    "saveSpec": null,
+    "fetchSpec": "4.0.2"
+  },
+  "_requiredBy": [
+    "/npm-package-arg"
+  ],
+  "_resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
+  "_spec": "4.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rebecca Turner",
+    "email": "me@re-becca.org",
+    "url": "http://re-becca.org"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/hosted-git-info/issues"
+  },
+  "dependencies": {
+    "lru-cache": "^6.0.0"
+  },
   "description": "Provides metadata and conversions from repository urls for GitHub, Bitbucket and GitLab",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/hosted-git-info.git"
+  "devDependencies": {
+    "standard": "^16.0.3",
+    "standard-version": "^9.1.0",
+    "tap": "^14.11.0"
   },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "git-host.js",
+    "git-host-info.js"
+  ],
+  "homepage": "https://github.com/npm/hosted-git-info",
   "keywords": [
     "git",
@@ -14,10 +61,11 @@
     "gitlab"
   ],
-  "author": "Rebecca Turner <me@re-becca.org> (http://re-becca.org)",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/npm/hosted-git-info/issues"
+  "main": "index.js",
+  "name": "hosted-git-info",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/hosted-git-info.git"
   },
-  "homepage": "https://github.com/npm/hosted-git-info",
   "scripts": {
     "posttest": "standard",
@@ -29,24 +77,9 @@
     "test:coverage": "tap --coverage-report=html"
   },
-  "dependencies": {
-    "lru-cache": "^6.0.0"
-  },
-  "devDependencies": {
-    "standard": "^16.0.3",
-    "standard-version": "^9.1.0",
-    "tap": "^14.11.0"
-  },
-  "files": [
-    "index.js",
-    "git-host.js",
-    "git-host-info.js"
-  ],
-  "engines": {
-    "node": ">=10"
-  },
   "tap": {
     "color": 1,
     "coverage": true,
     "esm": false
-  }
+  },
+  "version": "4.0.2"
 }
Index: trip-planner-front/node_modules/hpack.js/node_modules/readable-stream/package.json
===================================================================
--- trip-planner-front/node_modules/hpack.js/node_modules/readable-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hpack.js/node_modules/readable-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,42 @@
 {
-  "name": "readable-stream",
-  "version": "2.3.7",
-  "description": "Streams3, a user-land copy of the stream library from Node.js",
-  "main": "readable.js",
+  "_args": [
+    [
+      "readable-stream@2.3.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "readable-stream@2.3.7",
+  "_id": "readable-stream@2.3.7",
+  "_inBundle": false,
+  "_integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+  "_location": "/hpack.js/readable-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "readable-stream@2.3.7",
+    "name": "readable-stream",
+    "escapedName": "readable-stream",
+    "rawSpec": "2.3.7",
+    "saveSpec": null,
+    "fetchSpec": "2.3.7"
+  },
+  "_requiredBy": [
+    "/hpack.js"
+  ],
+  "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+  "_spec": "2.3.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": {
+    "util": false,
+    "./readable.js": "./readable-browser.js",
+    "./writable.js": "./writable-browser.js",
+    "./duplex.js": "./duplex-browser.js",
+    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/nodejs/readable-stream/issues"
+  },
   "dependencies": {
     "core-util-is": "~1.0.0",
@@ -13,4 +48,5 @@
     "util-deprecate": "~1.0.1"
   },
+  "description": "Streams3, a user-land copy of the stream library from Node.js",
   "devDependencies": {
     "assert": "^1.4.0",
@@ -22,14 +58,5 @@
     "tape": "^4.8.0"
   },
-  "scripts": {
-    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
-    "cover": "nyc npm test",
-    "report": "nyc report --reporter=lcov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/readable-stream"
-  },
+  "homepage": "https://github.com/nodejs/readable-stream#readme",
   "keywords": [
     "readable",
@@ -37,11 +64,7 @@
     "pipe"
   ],
-  "browser": {
-    "util": false,
-    "./readable.js": "./readable-browser.js",
-    "./writable.js": "./writable-browser.js",
-    "./duplex.js": "./duplex-browser.js",
-    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
-  },
+  "license": "MIT",
+  "main": "readable.js",
+  "name": "readable-stream",
   "nyc": {
     "include": [
@@ -49,4 +72,14 @@
     ]
   },
-  "license": "MIT"
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/readable-stream.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "cover": "nyc npm test",
+    "report": "nyc report --reporter=lcov",
+    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js"
+  },
+  "version": "2.3.7"
 }
Index: trip-planner-front/node_modules/hpack.js/node_modules/string_decoder/package.json
===================================================================
--- trip-planner-front/node_modules/hpack.js/node_modules/string_decoder/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hpack.js/node_modules/string_decoder/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,39 @@
 {
-  "name": "string_decoder",
-  "version": "1.1.1",
-  "description": "The string_decoder module from Node core",
-  "main": "lib/string_decoder.js",
+  "_args": [
+    [
+      "string_decoder@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "string_decoder@1.1.1",
+  "_id": "string_decoder@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+  "_location": "/hpack.js/string_decoder",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "string_decoder@1.1.1",
+    "name": "string_decoder",
+    "escapedName": "string_decoder",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/hpack.js/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/nodejs/string_decoder/issues"
+  },
   "dependencies": {
     "safe-buffer": "~5.1.0"
   },
+  "description": "The string_decoder module from Node core",
   "devDependencies": {
     "babel-polyfill": "^6.23.0",
@@ -12,12 +41,4 @@
     "inherits": "^2.0.3",
     "tap": "~0.4.8"
-  },
-  "scripts": {
-    "test": "tap test/parallel/*.js && node test/verify-dependencies",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/string_decoder.git"
   },
   "homepage": "https://github.com/nodejs/string_decoder",
@@ -28,4 +49,15 @@
     "browserify"
   ],
-  "license": "MIT"
+  "license": "MIT",
+  "main": "lib/string_decoder.js",
+  "name": "string_decoder",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/string_decoder.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "test": "tap test/parallel/*.js && node test/verify-dependencies"
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/hpack.js/package.json
===================================================================
--- trip-planner-front/node_modules/hpack.js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/hpack.js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,57 @@
 {
-  "name": "hpack.js",
-  "version": "2.1.6",
+  "_args": [
+    [
+      "hpack.js@2.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "hpack.js@2.1.6",
+  "_id": "hpack.js@2.1.6",
+  "_inBundle": false,
+  "_integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+  "_location": "/hpack.js",
+  "_phantomChildren": {
+    "core-util-is": "1.0.2",
+    "inherits": "2.0.4",
+    "isarray": "1.0.0",
+    "process-nextick-args": "2.0.1",
+    "safe-buffer": "5.1.2",
+    "util-deprecate": "1.0.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "hpack.js@2.1.6",
+    "name": "hpack.js",
+    "escapedName": "hpack.js",
+    "rawSpec": "2.1.6",
+    "saveSpec": null,
+    "fetchSpec": "2.1.6"
+  },
+  "_requiredBy": [
+    "/spdy-transport"
+  ],
+  "_resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+  "_spec": "2.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Fedor Indutny",
+    "email": "fedor@indutny.com"
+  },
+  "bugs": {
+    "url": "https://github.com/indutny/hpack.js/issues"
+  },
+  "dependencies": {
+    "inherits": "^2.0.1",
+    "obuf": "^1.0.0",
+    "readable-stream": "^2.0.1",
+    "wbuf": "^1.1.0"
+  },
   "description": "HPACK implementation",
-  "main": "lib/hpack.js",
-  "scripts": {
-    "test": "mocha test/*-test.js"
+  "devDependencies": {
+    "mocha": "^2.2.5"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/indutny/hpack.js.git"
-  },
+  "homepage": "https://github.com/indutny/hpack.js#readme",
   "keywords": [
     "HPACK",
@@ -18,18 +61,14 @@
     "headers"
   ],
-  "author": "Fedor Indutny <fedor@indutny.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/indutny/hpack.js/issues"
+  "main": "lib/hpack.js",
+  "name": "hpack.js",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/indutny/hpack.js.git"
   },
-  "homepage": "https://github.com/indutny/hpack.js#readme",
-  "devDependencies": {
-    "mocha": "^2.2.5"
+  "scripts": {
+    "test": "mocha test/*-test.js"
   },
-  "dependencies": {
-    "inherits": "^2.0.1",
-    "obuf": "^1.0.0",
-    "readable-stream": "^2.0.1",
-    "wbuf": "^1.1.0"
-  }
+  "version": "2.1.6"
 }
Index: trip-planner-front/node_modules/html-entities/package.json
===================================================================
--- trip-planner-front/node_modules/html-entities/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/html-entities/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "html-entities",
-  "version": "1.4.0",
-  "description": "Faster HTML entities encode/decode library.",
-  "keywords": [
-    "html",
-    "html entities",
-    "html entities encode",
-    "html entities decode",
-    "entities",
-    "entities encode",
-    "entities decode"
+  "_args": [
+    [
+      "html-entities@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "html-entities@1.4.0",
+  "_id": "html-entities@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+  "_location": "/html-entities",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "html-entities@1.4.0",
+    "name": "html-entities",
+    "escapedName": "html-entities",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Marat Dulin",
     "email": "mdevils@yandex.ru"
   },
+  "bugs": {
+    "url": "https://github.com/mdevils/node-html-entities/issues"
+  },
   "dependencies": {},
+  "description": "Faster HTML entities encode/decode library.",
   "devDependencies": {
     "@types/benchmark": "^2.1.0",
@@ -31,18 +52,4 @@
     "typescript": "^3.8.3"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mdevils/node-html-entities.git"
-  },
-  "main": "./lib/index.js",
-  "typings": "./lib/index.d.ts",
-  "types": "./lib/index.d.ts",
-  "scripts": {
-    "test": "mocha --recursive -r ts-node/register test/**/*.ts",
-    "benchmark": "ts-node benchmark/benchmark",
-    "travis": "yarn test",
-    "build": "tsc",
-    "prepublishOnly": "yarn build"
-  },
   "files": [
     "index.js",
@@ -50,4 +57,30 @@
     "LICENSE"
   ],
-  "license": "MIT"
+  "homepage": "https://github.com/mdevils/node-html-entities#readme",
+  "keywords": [
+    "html",
+    "html entities",
+    "html entities encode",
+    "html entities decode",
+    "entities",
+    "entities encode",
+    "entities decode"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "html-entities",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mdevils/node-html-entities.git"
+  },
+  "scripts": {
+    "benchmark": "ts-node benchmark/benchmark",
+    "build": "tsc",
+    "prepublishOnly": "yarn build",
+    "test": "mocha --recursive -r ts-node/register test/**/*.ts",
+    "travis": "yarn test"
+  },
+  "types": "./lib/index.d.ts",
+  "typings": "./lib/index.d.ts",
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/html-escaper/package.json
===================================================================
--- trip-planner-front/node_modules/html-escaper/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/html-escaper/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,63 @@
 {
+  "_args": [
+    [
+      "html-escaper@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "html-escaper@2.0.2",
+  "_id": "html-escaper@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+  "_location": "/html-escaper",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "html-escaper@2.0.2",
+    "name": "html-escaper",
+    "escapedName": "html-escaper",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/istanbul-reports"
+  ],
+  "_resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrea Giammarchi"
+  },
+  "bugs": {
+    "url": "https://github.com/WebReflection/html-escaper/issues"
+  },
+  "description": "fast and safe way to escape and unescape &<>'\" chars",
+  "devDependencies": {
+    "ascjs": "^3.1.2",
+    "coveralls": "^3.0.11",
+    "istanbul": "^0.4.5",
+    "rollup": "^2.1.0",
+    "uglify-js": "^3.8.0"
+  },
+  "homepage": "https://github.com/WebReflection/html-escaper",
+  "keywords": [
+    "html",
+    "escape",
+    "encode",
+    "unescape",
+    "decode",
+    "entities"
+  ],
+  "license": "MIT",
+  "main": "./cjs/index.js",
+  "module": "./esm/index.js",
   "name": "html-escaper",
-  "version": "2.0.2",
-  "description": "fast and safe way to escape and unescape &<>'\" chars",
-  "main": "./cjs/index.js",
-  "unpkg": "min.js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/WebReflection/html-escaper.git"
+  },
   "scripts": {
     "build": "npm run cjs && npm run rollup && npm run minify && npm test && npm run size",
@@ -14,29 +69,5 @@
     "test": "istanbul cover ./test/index.js"
   },
-  "module": "./esm/index.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/WebReflection/html-escaper.git"
-  },
-  "keywords": [
-    "html",
-    "escape",
-    "encode",
-    "unescape",
-    "decode",
-    "entities"
-  ],
-  "author": "Andrea Giammarchi",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/WebReflection/html-escaper/issues"
-  },
-  "homepage": "https://github.com/WebReflection/html-escaper",
-  "devDependencies": {
-    "ascjs": "^3.1.2",
-    "coveralls": "^3.0.11",
-    "istanbul": "^0.4.5",
-    "rollup": "^2.1.0",
-    "uglify-js": "^3.8.0"
-  }
+  "unpkg": "min.js",
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/http-cache-semantics/package.json
===================================================================
--- trip-planner-front/node_modules/http-cache-semantics/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-cache-semantics/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,64 @@
 {
+  "_args": [
+    [
+      "http-cache-semantics@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-cache-semantics@4.1.0",
+  "_id": "http-cache-semantics@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+  "_location": "/http-cache-semantics",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-cache-semantics@4.1.0",
     "name": "http-cache-semantics",
-    "version": "4.1.0",
-    "description": "Parses Cache-Control and other headers. Helps building correct HTTP caches and proxies",
-    "repository": "https://github.com/kornelski/http-cache-semantics.git",
-    "main": "index.js",
-    "scripts": {
-        "test": "mocha"
-    },
-    "files": [
-        "index.js"
-    ],
-    "author": "Kornel Lesiński <kornel@geekhood.net> (https://kornel.ski/)",
-    "license": "BSD-2-Clause",
-    "devDependencies": {
-        "eslint": "^5.13.0",
-        "eslint-plugin-prettier": "^3.0.1",
-        "husky": "^0.14.3",
-        "lint-staged": "^8.1.3",
-        "mocha": "^5.1.0",
-        "prettier": "^1.14.3",
-        "prettier-eslint-cli": "^4.7.1"
-    }
+    "escapedName": "http-cache-semantics",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kornel Lesiński",
+    "email": "kornel@geekhood.net",
+    "url": "https://kornel.ski/"
+  },
+  "bugs": {
+    "url": "https://github.com/kornelski/http-cache-semantics/issues"
+  },
+  "description": "Parses Cache-Control and other headers. Helps building correct HTTP caches and proxies",
+  "devDependencies": {
+    "eslint": "^5.13.0",
+    "eslint-plugin-prettier": "^3.0.1",
+    "husky": "^0.14.3",
+    "lint-staged": "^8.1.3",
+    "mocha": "^5.1.0",
+    "prettier": "^1.14.3",
+    "prettier-eslint-cli": "^4.7.1"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/kornelski/http-cache-semantics#readme",
+  "license": "BSD-2-Clause",
+  "main": "index.js",
+  "name": "http-cache-semantics",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kornelski/http-cache-semantics.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/http-deceiver/package.json
===================================================================
--- trip-planner-front/node_modules/http-deceiver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-deceiver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,47 @@
 {
-  "name": "http-deceiver",
-  "version": "1.2.7",
+  "_args": [
+    [
+      "http-deceiver@1.2.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-deceiver@1.2.7",
+  "_id": "http-deceiver@1.2.7",
+  "_inBundle": false,
+  "_integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+  "_location": "/http-deceiver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-deceiver@1.2.7",
+    "name": "http-deceiver",
+    "escapedName": "http-deceiver",
+    "rawSpec": "1.2.7",
+    "saveSpec": null,
+    "fetchSpec": "1.2.7"
+  },
+  "_requiredBy": [
+    "/spdy"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+  "_spec": "1.2.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Fedor Indutny",
+    "email": "fedor@indutny.com"
+  },
+  "bugs": {
+    "url": "https://github.com/indutny/http-deceiver/issues"
+  },
   "description": "Deceive HTTP parser",
-  "main": "lib/deceiver.js",
-  "scripts": {
-    "test": "mocha --reporter=spec test/*-test.js"
+  "devDependencies": {
+    "handle-thing": "^1.0.1",
+    "mocha": "^2.2.5",
+    "readable-stream": "^2.0.1",
+    "stream-pair": "^1.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/indutny/http-deceiver.git"
-  },
+  "homepage": "https://github.com/indutny/http-deceiver#readme",
   "keywords": [
     "http",
@@ -16,15 +49,14 @@
     "deceive"
   ],
-  "author": "Fedor Indutny <fedor@indutny.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/indutny/http-deceiver/issues"
+  "main": "lib/deceiver.js",
+  "name": "http-deceiver",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/indutny/http-deceiver.git"
   },
-  "homepage": "https://github.com/indutny/http-deceiver#readme",
-  "devDependencies": {
-    "handle-thing": "^1.0.1",
-    "mocha": "^2.2.5",
-    "readable-stream": "^2.0.1",
-    "stream-pair": "^1.0.0"
-  }
+  "scripts": {
+    "test": "mocha --reporter=spec test/*-test.js"
+  },
+  "version": "1.2.7"
 }
Index: trip-planner-front/node_modules/http-errors/node_modules/inherits/package.json
===================================================================
--- trip-planner-front/node_modules/http-errors/node_modules/inherits/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-errors/node_modules/inherits/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,45 @@
 {
-  "name": "inherits",
+  "_args": [
+    [
+      "inherits@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "inherits@2.0.3",
+  "_id": "inherits@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+  "_location": "/http-errors/inherits",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "inherits@2.0.3",
+    "name": "inherits",
+    "escapedName": "inherits",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "/http-errors"
+  ],
+  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": "./inherits_browser.js",
+  "bugs": {
+    "url": "https://github.com/isaacs/inherits/issues"
+  },
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
-  "version": "2.0.3",
+  "devDependencies": {
+    "tap": "^7.1.0"
+  },
+  "files": [
+    "inherits.js",
+    "inherits_browser.js"
+  ],
+  "homepage": "https://github.com/isaacs/inherits#readme",
   "keywords": [
     "inheritance",
@@ -13,17 +52,14 @@
     "browserify"
   ],
+  "license": "ISC",
   "main": "./inherits.js",
-  "browser": "./inherits_browser.js",
-  "repository": "git://github.com/isaacs/inherits",
-  "license": "ISC",
+  "name": "inherits",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/inherits.git"
+  },
   "scripts": {
     "test": "node test"
   },
-  "devDependencies": {
-    "tap": "^7.1.0"
-  },
-  "files": [
-    "inherits.js",
-    "inherits_browser.js"
-  ]
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/http-errors/package.json
===================================================================
--- trip-planner-front/node_modules/http-errors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-errors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,52 @@
 {
-  "name": "http-errors",
-  "description": "Create HTTP error objects",
-  "version": "1.7.2",
-  "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
+  "_args": [
+    [
+      "http-errors@1.7.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-errors@1.7.2",
+  "_id": "http-errors@1.7.2",
+  "_inBundle": false,
+  "_integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+  "_location": "/http-errors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-errors@1.7.2",
+    "name": "http-errors",
+    "escapedName": "http-errors",
+    "rawSpec": "1.7.2",
+    "saveSpec": null,
+    "fetchSpec": "1.7.2"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/raw-body",
+    "/send"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+  "_spec": "1.7.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Ong",
+    "email": "me@jongleberry.com",
+    "url": "http://jongleberry.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/http-errors/issues"
+  },
   "contributors": [
-    "Alan Plum <me@pluma.io>",
-    "Douglas Christopher Wilson <doug@somethingdoug.com>"
+    {
+      "name": "Alan Plum",
+      "email": "me@pluma.io"
+    },
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "jshttp/http-errors",
   "dependencies": {
     "depd": "~1.1.2",
@@ -17,4 +56,5 @@
     "toidentifier": "1.0.0"
   },
+  "description": "Create HTTP error objects",
   "devDependencies": {
     "eslint": "5.13.0",
@@ -31,4 +71,21 @@
     "node": ">= 0.6"
   },
+  "files": [
+    "index.js",
+    "HISTORY.md",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/jshttp/http-errors#readme",
+  "keywords": [
+    "http",
+    "error"
+  ],
+  "license": "MIT",
+  "name": "http-errors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/http-errors.git"
+  },
   "scripts": {
     "lint": "eslint --plugin markdown --ext js,md . && node ./scripts/lint-readme-list.js",
@@ -37,13 +94,4 @@
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
   },
-  "keywords": [
-    "http",
-    "error"
-  ],
-  "files": [
-    "index.js",
-    "HISTORY.md",
-    "LICENSE",
-    "README.md"
-  ]
+  "version": "1.7.2"
 }
Index: trip-planner-front/node_modules/http-parser-js/package.json
===================================================================
--- trip-planner-front/node_modules/http-parser-js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-parser-js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,76 @@
 {
+  "_args": [
+    [
+      "http-parser-js@0.5.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-parser-js@0.5.3",
+  "_id": "http-parser-js@0.5.3",
+  "_inBundle": false,
+  "_integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==",
+  "_location": "/http-parser-js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-parser-js@0.5.3",
+    "name": "http-parser-js",
+    "escapedName": "http-parser-js",
+    "rawSpec": "0.5.3",
+    "saveSpec": null,
+    "fetchSpec": "0.5.3"
+  },
+  "_requiredBy": [
+    "/websocket-driver"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
+  "_spec": "0.5.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tim Caswell",
+    "url": "https://github.com/creationix"
+  },
+  "bugs": {
+    "url": "https://github.com/creationix/http-parser-js/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jimb Esser",
+      "url": "https://github.com/Jimbly"
+    },
+    {
+      "name": "Lawrence Rowe",
+      "url": "https://github.com/lrowe"
+    },
+    {
+      "name": "Jan Schär",
+      "url": "https://github.com/jscissr"
+    },
+    {
+      "name": "Paul Rütter",
+      "url": "https://github.com/paulrutter"
+    }
+  ],
+  "description": "A pure JS HTTP parser for node.",
+  "files": [
+    "http-parser.js"
+  ],
+  "homepage": "https://github.com/creationix/http-parser-js#readme",
+  "keywords": [
+    "http"
+  ],
+  "license": "MIT",
+  "main": "http-parser.js",
   "name": "http-parser-js",
-  "version": "0.5.3",
-  "description": "A pure JS HTTP parser for node.",
-  "main": "http-parser.js",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/creationix/http-parser-js.git"
+  },
   "scripts": {
     "test": "python tests/test.py && node tests/iojs/test-http-parser-durability.js",
     "testv12": "python tests/test.py --node-args=\"--http-parser=legacy\" && node --http-parser=legacy tests/iojs/test-http-parser-durability.js"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/creationix/http-parser-js.git"
-  },
-  "files": [
-    "http-parser.js"
-  ],
-  "keywords": [
-    "http"
-  ],
-  "author": "Tim Caswell (https://github.com/creationix)",
-  "contributors": [
-    "Jimb Esser (https://github.com/Jimbly)",
-    "Lawrence Rowe (https://github.com/lrowe)",
-    "Jan Schär (https://github.com/jscissr)",
-    "Paul Rütter (https://github.com/paulrutter)"
-  ],
-  "license": "MIT"
+  "version": "0.5.3"
 }
Index: trip-planner-front/node_modules/http-proxy-agent/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-agent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-agent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,37 @@
 {
-  "name": "http-proxy-agent",
-  "version": "4.0.1",
-  "description": "An HTTP(s) proxy `http.Agent` implementation for HTTP",
-  "main": "./dist/index.js",
-  "types": "./dist/index.d.ts",
-  "files": [
-    "dist"
+  "_args": [
+    [
+      "http-proxy-agent@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "tsc",
-    "test": "mocha",
-    "test-lint": "eslint src --ext .js,.ts",
-    "prepublishOnly": "npm run build"
+  "_development": true,
+  "_from": "http-proxy-agent@4.0.1",
+  "_id": "http-proxy-agent@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+  "_location": "/http-proxy-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-proxy-agent@4.0.1",
+    "name": "http-proxy-agent",
+    "escapedName": "http-proxy-agent",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/node-http-proxy-agent.git"
+  "_requiredBy": [
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
   },
-  "keywords": [
-    "http",
-    "proxy",
-    "endpoint",
-    "agent"
-  ],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/TooTallNate/node-http-proxy-agent/issues"
@@ -35,4 +42,5 @@
     "debug": "4"
   },
+  "description": "An HTTP(s) proxy `http.Agent` implementation for HTTP",
   "devDependencies": {
     "@types/debug": "4",
@@ -54,4 +62,30 @@
   "engines": {
     "node": ">= 6"
-  }
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/TooTallNate/node-http-proxy-agent#readme",
+  "keywords": [
+    "http",
+    "proxy",
+    "endpoint",
+    "agent"
+  ],
+  "license": "MIT",
+  "main": "./dist/index.js",
+  "name": "http-proxy-agent",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/node-http-proxy-agent.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "prebuild": "rimraf dist",
+    "prepublishOnly": "npm run build",
+    "test": "mocha",
+    "test-lint": "eslint src --ext .js,.ts"
+  },
+  "types": "./dist/index.d.ts",
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,43 @@
 {
-  "name": "extend-shallow",
-  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
-  "version": "2.0.1",
-  "homepage": "https://github.com/jonschlinkert/extend-shallow",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/extend-shallow",
+  "_args": [
+    [
+      "extend-shallow@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extend-shallow@2.0.1",
+  "_id": "extend-shallow@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+  "_location": "/http-proxy-middleware/braces/extend-shallow",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend-shallow@2.0.1",
+    "name": "extend-shallow",
+    "escapedName": "extend-shallow",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/braces"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/extend-shallow/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-extendable": "^0.1.0"
   },
+  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
   "devDependencies": {
     "array-slice": "^0.2.3",
@@ -35,4 +52,11 @@
     "should": "^7.0.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/extend-shallow",
   "keywords": [
     "assign",
@@ -53,4 +77,15 @@
     "utils",
     "value"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "extend-shallow",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/extend-shallow.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/braces/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,63 @@
 {
-  "name": "braces",
-  "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.",
-  "version": "2.3.2",
-  "homepage": "https://github.com/micromatch/braces",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Elan Shanker (https://github.com/es128)",
-    "Eugene Sharygin (https://github.com/eush77)",
-    "hemanth.hm (http://h3manth.com)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "braces@2.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/braces",
+  "_development": true,
+  "_from": "braces@2.3.2",
+  "_id": "braces@2.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+  "_location": "/http-proxy-middleware/braces",
+  "_phantomChildren": {
+    "is-extendable": "0.1.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "braces@2.3.2",
+    "name": "braces",
+    "escapedName": "braces",
+    "rawSpec": "2.3.2",
+    "saveSpec": null,
+    "fetchSpec": "2.3.2"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+  "_spec": "2.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/braces/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Eugene Sharygin",
+      "url": "https://github.com/eush77"
+    },
+    {
+      "name": "hemanth.hm",
+      "url": "http://h3manth.com"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "benchmark": "node benchmark"
-  },
   "dependencies": {
     "arr-flatten": "^1.1.0",
@@ -41,4 +72,5 @@
     "to-regex": "^3.0.1"
   },
+  "description": "Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.",
   "devDependencies": {
     "ansi-cyan": "^0.1.1",
@@ -60,4 +92,12 @@
     "yargs-parser": "^8.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/micromatch/braces",
   "keywords": [
     "alpha",
@@ -84,4 +124,15 @@
     "sh"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "braces",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/braces.git"
+  },
+  "scripts": {
+    "benchmark": "node benchmark",
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -105,4 +156,5 @@
       ]
     }
-  }
+  },
+  "version": "2.3.2"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,43 @@
 {
-  "name": "extend-shallow",
-  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
-  "version": "2.0.1",
-  "homepage": "https://github.com/jonschlinkert/extend-shallow",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/extend-shallow",
+  "_args": [
+    [
+      "extend-shallow@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "extend-shallow@2.0.1",
+  "_id": "extend-shallow@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+  "_location": "/http-proxy-middleware/fill-range/extend-shallow",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "extend-shallow@2.0.1",
+    "name": "extend-shallow",
+    "escapedName": "extend-shallow",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/fill-range"
+  ],
+  "_resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/extend-shallow/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "is-extendable": "^0.1.0"
   },
+  "description": "Extend an object with the properties of additional objects. node.js/javascript util.",
   "devDependencies": {
     "array-slice": "^0.2.3",
@@ -35,4 +52,11 @@
     "should": "^7.0.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/extend-shallow",
   "keywords": [
     "assign",
@@ -53,4 +77,15 @@
     "utils",
     "value"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "extend-shallow",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/extend-shallow.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/fill-range/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,62 @@
 {
-  "name": "fill-range",
-  "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`",
-  "version": "4.0.0",
-  "homepage": "https://github.com/jonschlinkert/fill-range",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "<wtgtybhertgeghgtwtg@gmail.com> (https://github.com/wtgtybhertgeghgtwtg)",
-    "Edo Rivai <edo.rivai@gmail.com> (edo.rivai.nl)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)",
-    "Paul Miller <paul+gh@paulmillr.com> (paulmillr.com)"
+  "_args": [
+    [
+      "fill-range@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/fill-range",
+  "_development": true,
+  "_from": "fill-range@4.0.0",
+  "_id": "fill-range@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+  "_location": "/http-proxy-middleware/fill-range",
+  "_phantomChildren": {
+    "is-extendable": "0.1.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "fill-range@4.0.0",
+    "name": "fill-range",
+    "escapedName": "fill-range",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/braces"
+  ],
+  "_resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/fill-range/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "email": "wtgtybhertgeghgtwtg@gmail.com",
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    },
+    {
+      "name": "Edo Rivai",
+      "email": "edo.rivai@gmail.com",
+      "url": "edo.rivai.nl"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Paul Miller",
+      "email": "paul+gh@paulmillr.com",
+      "url": "paulmillr.com"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "extend-shallow": "^2.0.1",
@@ -32,4 +65,5 @@
     "to-regex-range": "^2.1.0"
   },
+  "description": "Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`",
   "devDependencies": {
     "ansi-cyan": "^0.1.1",
@@ -39,4 +73,11 @@
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/fill-range",
   "keywords": [
     "alpha",
@@ -59,4 +100,14 @@
     "sh"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "fill-range",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/fill-range.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -79,4 +130,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-extendable/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-extendable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-extendable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,51 @@
 {
-  "name": "is-extendable",
-  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/is-extendable",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-extendable",
+  "_args": [
+    [
+      "is-extendable@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-extendable@0.1.1",
+  "_id": "is-extendable@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+  "_location": "/http-proxy-middleware/is-extendable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-extendable@0.1.1",
+    "name": "is-extendable",
+    "escapedName": "is-extendable",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/braces/extend-shallow",
+    "/http-proxy-middleware/fill-range/extend-shallow"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-extendable/issues"
   },
-  "license": "MIT",
+  "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"",
+  "devDependencies": {
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js"
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "devDependencies": {
-    "mocha": "*"
-  },
+  "homepage": "https://github.com/jonschlinkert/is-extendable",
   "keywords": [
     "array",
@@ -36,4 +61,14 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-extendable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-extendable.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verbiage": {
     "related": {
@@ -48,4 +83,5 @@
       ]
     }
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,69 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/http-proxy-middleware/is-number/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/is-number"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +76,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +106,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +139,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/is-number/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,57 @@
 {
-  "name": "is-number",
-  "description": "Returns true if the value is a number. comprehensive tests.",
-  "version": "3.0.0",
-  "homepage": "https://github.com/jonschlinkert/is-number",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Charlike Mike Reagent (http://www.tunnckocore.tk)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "is-number@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-number",
+  "_development": true,
+  "_from": "is-number@3.0.0",
+  "_id": "is-number@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+  "_location": "/http-proxy-middleware/is-number",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-number@3.0.0",
+    "name": "is-number",
+    "escapedName": "is-number",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/fill-range",
+    "/http-proxy-middleware/to-regex-range"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-number/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Charlike Mike Reagent",
+      "url": "http://www.tunnckocore.tk"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if the value is a number. comprehensive tests.",
   "devDependencies": {
     "benchmarked": "^0.2.5",
@@ -33,4 +60,11 @@
     "mocha": "^3.0.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-number",
   "keywords": [
     "check",
@@ -54,4 +88,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-number",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-number.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -80,4 +124,5 @@
       "verb-generate-readme"
     ]
-  }
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/micromatch/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/micromatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/micromatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,92 @@
 {
-  "name": "micromatch",
-  "description": "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.",
-  "version": "3.1.10",
-  "homepage": "https://github.com/micromatch/micromatch",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Amila Welihinda (amilajack.com)",
-    "Bogdan Chadkin (https://github.com/TrySound)",
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Devon Govett (http://badassjs.com)",
-    "Elan Shanker (https://github.com/es128)",
-    "Fabrício Matté (https://ultcombo.js.org)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Martin Kolárik (https://kolarik.sk)",
-    "Olsten Larck (https://i.am.charlike.online)",
-    "Paul Miller (paulmillr.com)",
-    "Tom Byrer (https://github.com/tomByrer)",
-    "Tyler Akins (http://rumkin.com)",
-    "(https://github.com/DianeLooney)"
-  ],
-  "repository": "micromatch/micromatch",
+  "_args": [
+    [
+      "micromatch@3.1.10",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "micromatch@3.1.10",
+  "_id": "micromatch@3.1.10",
+  "_inBundle": false,
+  "_integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+  "_location": "/http-proxy-middleware/micromatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "micromatch@3.1.10",
+    "name": "micromatch",
+    "escapedName": "micromatch",
+    "rawSpec": "3.1.10",
+    "saveSpec": null,
+    "fetchSpec": "3.1.10"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+  "_spec": "3.1.10",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/micromatch/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "contributors": [
+    {
+      "name": "Amila Welihinda",
+      "url": "amilajack.com"
+    },
+    {
+      "name": "Bogdan Chadkin",
+      "url": "https://github.com/TrySound"
+    },
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Devon Govett",
+      "url": "http://badassjs.com"
+    },
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Fabrício Matté",
+      "url": "https://ultcombo.js.org"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Martin Kolárik",
+      "url": "https://kolarik.sk"
+    },
+    {
+      "name": "Olsten Larck",
+      "url": "https://i.am.charlike.online"
+    },
+    {
+      "name": "Paul Miller",
+      "url": "paulmillr.com"
+    },
+    {
+      "name": "Tom Byrer",
+      "url": "https://github.com/tomByrer"
+    },
+    {
+      "name": "Tyler Akins",
+      "url": "http://rumkin.com"
+    },
+    {
+      "url": "https://github.com/DianeLooney"
+    }
+  ],
   "dependencies": {
     "arr-diff": "^4.0.0",
@@ -51,4 +104,5 @@
     "to-regex": "^3.0.2"
   },
+  "description": "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.",
   "devDependencies": {
     "bash-match": "^1.0.2",
@@ -65,4 +119,12 @@
     "multimatch": "^2.1.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/micromatch/micromatch",
   "keywords": [
     "bash",
@@ -94,4 +156,5 @@
     "wildcard"
   ],
+  "license": "MIT",
   "lintDeps": {
     "dependencies": {
@@ -111,4 +174,13 @@
       }
     }
+  },
+  "main": "index.js",
+  "name": "micromatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/micromatch.git"
+  },
+  "scripts": {
+    "test": "mocha"
   },
   "verb": {
@@ -144,4 +216,5 @@
       "snapdragon"
     ]
-  }
+  },
+  "version": "3.1.10"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/node_modules/to-regex-range/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/node_modules/to-regex-range/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/node_modules/to-regex-range/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,38 @@
 {
-  "name": "to-regex-range",
-  "description": "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.",
-  "version": "2.1.1",
-  "homepage": "https://github.com/micromatch/to-regex-range",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "micromatch/to-regex-range",
+  "_args": [
+    [
+      "to-regex-range@2.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "to-regex-range@2.1.1",
+  "_id": "to-regex-range@2.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+  "_location": "/http-proxy-middleware/to-regex-range",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "to-regex-range@2.1.1",
+    "name": "to-regex-range",
+    "escapedName": "to-regex-range",
+    "rawSpec": "2.1.1",
+    "saveSpec": null,
+    "fetchSpec": "2.1.1"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/fill-range"
+  ],
+  "_resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+  "_spec": "2.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/to-regex-range/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
@@ -24,4 +40,5 @@
     "repeat-string": "^1.6.1"
   },
+  "description": "Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.",
   "devDependencies": {
     "fill-range": "^3.1.1",
@@ -31,4 +48,11 @@
     "time-diff": "^0.3.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/micromatch/to-regex-range",
   "keywords": [
     "alpha",
@@ -53,4 +77,14 @@
     "year"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "to-regex-range",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/to-regex-range.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -83,4 +117,5 @@
       "1-9"
     ]
-  }
+  },
+  "version": "2.1.1"
 }
Index: trip-planner-front/node_modules/http-proxy-middleware/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy-middleware/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy-middleware/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,70 @@
 {
-  "name": "http-proxy-middleware",
-  "version": "0.19.1",
-  "description": "The one-liner node.js proxy middleware for connect, express and browser-sync",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "lib"
+  "_args": [
+    [
+      "http-proxy-middleware@0.19.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "clean": "rm -rf coverage",
-    "lint": "prettier \"**/*.{js,md}\" --list-different",
-    "lint:fix": "prettier \"**/*.{js,md}\" --write",
-    "test": "npm run lint && mocha --recursive --colors --reporter spec",
-    "cover": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive",
-    "coveralls": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --recursive --reporter spec && istanbul-coveralls && npm run clean"
+  "_development": true,
+  "_from": "http-proxy-middleware@0.19.1",
+  "_id": "http-proxy-middleware@0.19.1",
+  "_inBundle": false,
+  "_integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+  "_location": "/http-proxy-middleware",
+  "_phantomChildren": {
+    "arr-diff": "4.0.0",
+    "arr-flatten": "1.1.0",
+    "array-unique": "0.3.2",
+    "define-property": "2.0.2",
+    "extend-shallow": "3.0.2",
+    "extglob": "2.0.4",
+    "fragment-cache": "0.2.1",
+    "is-buffer": "1.1.6",
+    "isobject": "3.0.1",
+    "kind-of": "6.0.3",
+    "nanomatch": "1.2.13",
+    "object.pick": "1.3.0",
+    "regex-not": "1.0.2",
+    "repeat-element": "1.1.4",
+    "repeat-string": "1.6.1",
+    "snapdragon": "0.8.2",
+    "snapdragon-node": "2.1.1",
+    "split-string": "3.1.0",
+    "to-regex": "3.0.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/chimurai/http-proxy-middleware.git"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-proxy-middleware@0.19.1",
+    "name": "http-proxy-middleware",
+    "escapedName": "http-proxy-middleware",
+    "rawSpec": "0.19.1",
+    "saveSpec": null,
+    "fetchSpec": "0.19.1"
   },
-  "keywords": [
-    "reverse",
-    "proxy",
-    "middleware",
-    "http",
-    "https",
-    "connect",
-    "express",
-    "browser-sync",
-    "gulp",
-    "grunt-contrib-connect",
-    "websocket",
-    "ws",
-    "cors"
+  "_requiredBy": [
+    "/webpack-dev-server"
   ],
-  "author": "Steven Chim",
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+  "_spec": "0.19.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Steven Chim"
+  },
   "bugs": {
     "url": "https://github.com/chimurai/http-proxy-middleware/issues"
   },
-  "homepage": "https://github.com/chimurai/http-proxy-middleware",
+  "commitlint": {
+    "extends": [
+      "@commitlint/config-conventional"
+    ]
+  },
+  "dependencies": {
+    "http-proxy": "^1.17.0",
+    "is-glob": "^4.0.0",
+    "lodash": "^4.17.11",
+    "micromatch": "^3.1.10"
+  },
+  "description": "The one-liner node.js proxy middleware for connect, express and browser-sync",
   "devDependencies": {
     "@commitlint/cli": "^7.2.1",
@@ -59,13 +85,12 @@
     "ws": "^6.1.2"
   },
-  "dependencies": {
-    "http-proxy": "^1.17.0",
-    "is-glob": "^4.0.0",
-    "lodash": "^4.17.11",
-    "micromatch": "^3.1.10"
-  },
   "engines": {
     "node": ">=4.0.0"
   },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/chimurai/http-proxy-middleware",
   "husky": {
     "hooks": {
@@ -74,8 +99,34 @@
     }
   },
-  "commitlint": {
-    "extends": [
-      "@commitlint/config-conventional"
-    ]
-  }
+  "keywords": [
+    "reverse",
+    "proxy",
+    "middleware",
+    "http",
+    "https",
+    "connect",
+    "express",
+    "browser-sync",
+    "gulp",
+    "grunt-contrib-connect",
+    "websocket",
+    "ws",
+    "cors"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "http-proxy-middleware",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chimurai/http-proxy-middleware.git"
+  },
+  "scripts": {
+    "clean": "rm -rf coverage",
+    "cover": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha -- --recursive",
+    "coveralls": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --recursive --reporter spec && istanbul-coveralls && npm run clean",
+    "lint": "prettier \"**/*.{js,md}\" --list-different",
+    "lint:fix": "prettier \"**/*.{js,md}\" --write",
+    "test": "npm run lint && mocha --recursive --colors --reporter spec"
+  },
+  "version": "0.19.1"
 }
Index: trip-planner-front/node_modules/http-proxy/package.json
===================================================================
--- trip-planner-front/node_modules/http-proxy/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-proxy/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,46 @@
 {
-  "name": "http-proxy",
-  "version": "1.18.1",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/http-party/node-http-proxy.git"
+  "_args": [
+    [
+      "http-proxy@1.18.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-proxy@1.18.1",
+  "_id": "http-proxy@1.18.1",
+  "_inBundle": false,
+  "_integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+  "_location": "/http-proxy",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-proxy@1.18.1",
+    "name": "http-proxy",
+    "escapedName": "http-proxy",
+    "rawSpec": "1.18.1",
+    "saveSpec": null,
+    "fetchSpec": "1.18.1"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware",
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+  "_spec": "1.18.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Charlie Robbins",
+    "email": "charlie.robbins@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/http-party/node-http-proxy/issues"
+  },
+  "dependencies": {
+    "eventemitter3": "^4.0.0",
+    "follow-redirects": "^1.0.0",
+    "requires-port": "^1.0.0"
   },
   "description": "HTTP proxying for the masses",
-  "author": "Charlie Robbins <charlie.robbins@gmail.com>",
-  "maintainers": [
-    "jcrugzz <jcrugzz@gmail.com>"
-  ],
-  "main": "index.js",
-  "dependencies": {
-    "eventemitter3": "^4.0.0",
-    "requires-port": "^1.0.0",
-    "follow-redirects": "^1.0.0"
-  },
   "devDependencies": {
     "async": "^3.0.0",
@@ -30,4 +56,21 @@
     "ws": "^3.0.0"
   },
+  "engines": {
+    "node": ">=8.0.0"
+  },
+  "homepage": "https://github.com/http-party/node-http-proxy#readme",
+  "license": "MIT",
+  "main": "index.js",
+  "maintainers": [
+    {
+      "name": "jcrugzz",
+      "email": "jcrugzz@gmail.com"
+    }
+  ],
+  "name": "http-proxy",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/http-party/node-http-proxy.git"
+  },
   "scripts": {
     "mocha": "mocha test/*-test.js",
@@ -35,7 +78,4 @@
     "version": "auto-changelog -p && git add CHANGELOG.md"
   },
-  "engines": {
-    "node": ">=8.0.0"
-  },
-  "license": "MIT"
+  "version": "1.18.1"
 }
Index: trip-planner-front/node_modules/http-signature/package.json
===================================================================
--- trip-planner-front/node_modules/http-signature/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/http-signature/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,52 @@
 {
-  "name": "http-signature",
-  "description": "Reference implementation of Joyent's HTTP Signature scheme.",
-  "version": "1.2.0",
-  "license": "MIT",
-  "author": "Joyent, Inc",
+  "_args": [
+    [
+      "http-signature@1.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "http-signature@1.2.0",
+  "_id": "http-signature@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+  "_location": "/http-signature",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "http-signature@1.2.0",
+    "name": "http-signature",
+    "escapedName": "http-signature",
+    "rawSpec": "1.2.0",
+    "saveSpec": null,
+    "fetchSpec": "1.2.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+  "_spec": "1.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Joyent, Inc"
+  },
+  "bugs": {
+    "url": "https://github.com/joyent/node-http-signature/issues"
+  },
   "contributors": [
-    "Mark Cavage <mcavage@gmail.com>",
-    "David I. Lehn <dil@lehn.org>",
-    "Patrick Mooney <patrick.f.mooney@gmail.com>"
+    {
+      "name": "Mark Cavage",
+      "email": "mcavage@gmail.com"
+    },
+    {
+      "name": "David I. Lehn",
+      "email": "dil@lehn.org"
+    },
+    {
+      "name": "Patrick Mooney",
+      "email": "patrick.f.mooney@gmail.com"
+    }
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/joyent/node-http-signature.git"
-  },
-  "homepage": "https://github.com/joyent/node-http-signature/",
-  "bugs": "https://github.com/joyent/node-http-signature/issues",
-  "keywords": [
-    "https",
-    "request"
-  ],
-  "engines": {
-    "node": ">=0.8",
-    "npm": ">=1.3.7"
-  },
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "tap test/*.js"
-  },
   "dependencies": {
     "assert-plus": "^1.0.0",
@@ -33,7 +54,28 @@
     "sshpk": "^1.7.0"
   },
+  "description": "Reference implementation of Joyent's HTTP Signature scheme.",
   "devDependencies": {
     "tap": "0.4.2",
     "uuid": "^2.0.2"
-  }
+  },
+  "engines": {
+    "node": ">=0.8",
+    "npm": ">=1.3.7"
+  },
+  "homepage": "https://github.com/joyent/node-http-signature/",
+  "keywords": [
+    "https",
+    "request"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "http-signature",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/joyent/node-http-signature.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "1.2.0"
 }
Index: trip-planner-front/node_modules/https-proxy-agent/package.json
===================================================================
--- trip-planner-front/node_modules/https-proxy-agent/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/https-proxy-agent/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,38 @@
 {
-  "name": "https-proxy-agent",
-  "version": "5.0.0",
-  "description": "An HTTP(s) proxy `http.Agent` implementation for HTTPS",
-  "main": "dist/index",
-  "types": "dist/index",
-  "files": [
-    "dist"
+  "_args": [
+    [
+      "https-proxy-agent@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "tsc",
-    "test": "mocha --reporter spec",
-    "test-lint": "eslint src --ext .js,.ts",
-    "prepublishOnly": "npm run build"
+  "_development": true,
+  "_from": "https-proxy-agent@5.0.0",
+  "_id": "https-proxy-agent@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+  "_location": "/https-proxy-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "https-proxy-agent@5.0.0",
+    "name": "https-proxy-agent",
+    "escapedName": "https-proxy-agent",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TooTallNate/node-https-proxy-agent.git"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://n8.io/"
   },
-  "keywords": [
-    "https",
-    "proxy",
-    "endpoint",
-    "agent"
-  ],
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/TooTallNate/node-https-proxy-agent/issues"
@@ -34,4 +42,5 @@
     "debug": "4"
   },
+  "description": "An HTTP(s) proxy `http.Agent` implementation for HTTPS",
   "devDependencies": {
     "@types/debug": "4",
@@ -53,4 +62,30 @@
   "engines": {
     "node": ">= 6"
-  }
+  },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/TooTallNate/node-https-proxy-agent#readme",
+  "keywords": [
+    "https",
+    "proxy",
+    "endpoint",
+    "agent"
+  ],
+  "license": "MIT",
+  "main": "dist/index",
+  "name": "https-proxy-agent",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TooTallNate/node-https-proxy-agent.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "prebuild": "rimraf dist",
+    "prepublishOnly": "npm run build",
+    "test": "mocha --reporter spec",
+    "test-lint": "eslint src --ext .js,.ts"
+  },
+  "types": "dist/index",
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/humanize-ms/package.json
===================================================================
--- trip-planner-front/node_modules/humanize-ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/humanize-ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,32 @@
 {
-  "name": "humanize-ms",
-  "version": "1.2.1",
-  "description": "transform humanize time to ms",
-  "main": "index.js",
-  "files": [
-    "index.js"
+  "_args": [
+    [
+      "humanize-ms@1.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "test": "make test"
+  "_development": true,
+  "_from": "humanize-ms@1.2.1",
+  "_id": "humanize-ms@1.2.1",
+  "_inBundle": false,
+  "_integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
+  "_location": "/humanize-ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "humanize-ms@1.2.1",
+    "name": "humanize-ms",
+    "escapedName": "humanize-ms",
+    "rawSpec": "1.2.1",
+    "saveSpec": null,
+    "fetchSpec": "1.2.1"
   },
-  "keywords": [
-    "humanize",
-    "ms"
+  "_requiredBy": [
+    "/agentkeepalive"
   ],
+  "_resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+  "_spec": "1.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "dead-horse",
@@ -19,12 +34,11 @@
     "url": "http://deadhorse.me"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/node-modules/humanize-ms"
+  "bugs": {
+    "url": "https://github.com/node-modules/humanize-ms/issues"
   },
-  "license": "MIT",
   "dependencies": {
     "ms": "^2.0.0"
   },
+  "description": "transform humanize time to ms",
   "devDependencies": {
     "autod": "*",
@@ -34,4 +48,23 @@
     "mocha": "*",
     "should": "*"
-  }
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/node-modules/humanize-ms#readme",
+  "keywords": [
+    "humanize",
+    "ms"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "humanize-ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/node-modules/humanize-ms.git"
+  },
+  "scripts": {
+    "test": "make test"
+  },
+  "version": "1.2.1"
 }
Index: trip-planner-front/node_modules/iconv-lite/package.json
===================================================================
--- trip-planner-front/node_modules/iconv-lite/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/iconv-lite/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,83 @@
 {
+  "_args": [
+    [
+      "iconv-lite@0.4.24",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "iconv-lite@0.4.24",
+  "_id": "iconv-lite@0.4.24",
+  "_inBundle": false,
+  "_integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+  "_location": "/iconv-lite",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "iconv-lite@0.4.24",
     "name": "iconv-lite",
-    "description": "Convert character encodings in pure javascript.",
-    "version": "0.4.24",
-    "license": "MIT",
-    "keywords": [
-        "iconv",
-        "convert",
-        "charset",
-        "icu"
-    ],
-    "author": "Alexander Shtuchkin <ashtuchkin@gmail.com>",
-    "main": "./lib/index.js",
-    "typings": "./lib/index.d.ts",
-    "homepage": "https://github.com/ashtuchkin/iconv-lite",
-    "bugs": "https://github.com/ashtuchkin/iconv-lite/issues",
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/ashtuchkin/iconv-lite.git"
-    },
-    "engines": {
-        "node": ">=0.10.0"
-    },
-    "scripts": {
-        "coverage": "istanbul cover _mocha -- --grep .",
-        "coverage-open": "open coverage/lcov-report/index.html",
-        "test": "mocha --reporter spec --grep ."
-    },
-    "browser": {
-        "./lib/extend-node": false,
-        "./lib/streams": false
-    },
-    "devDependencies": {
-        "mocha": "^3.1.0",
-        "request": "~2.87.0",
-        "unorm": "*",
-        "errto": "*",
-        "async": "*",
-        "istanbul": "*",
-        "semver": "*",
-        "iconv": "*"
-    },
-    "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-    }
+    "escapedName": "iconv-lite",
+    "rawSpec": "0.4.24",
+    "saveSpec": null,
+    "fetchSpec": "0.4.24"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/external-editor",
+    "/needle",
+    "/raw-body"
+  ],
+  "_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+  "_spec": "0.4.24",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alexander Shtuchkin",
+    "email": "ashtuchkin@gmail.com"
+  },
+  "browser": {
+    "./lib/extend-node": false,
+    "./lib/streams": false
+  },
+  "bugs": {
+    "url": "https://github.com/ashtuchkin/iconv-lite/issues"
+  },
+  "dependencies": {
+    "safer-buffer": ">= 2.1.2 < 3"
+  },
+  "description": "Convert character encodings in pure javascript.",
+  "devDependencies": {
+    "async": "*",
+    "errto": "*",
+    "iconv": "*",
+    "istanbul": "*",
+    "mocha": "^3.1.0",
+    "request": "~2.87.0",
+    "semver": "*",
+    "unorm": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "homepage": "https://github.com/ashtuchkin/iconv-lite",
+  "keywords": [
+    "iconv",
+    "convert",
+    "charset",
+    "icu"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "iconv-lite",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/ashtuchkin/iconv-lite.git"
+  },
+  "scripts": {
+    "coverage": "istanbul cover _mocha -- --grep .",
+    "coverage-open": "open coverage/lcov-report/index.html",
+    "test": "mocha --reporter spec --grep ."
+  },
+  "typings": "./lib/index.d.ts",
+  "version": "0.4.24"
 }
Index: trip-planner-front/node_modules/icss-utils/package.json
===================================================================
--- trip-planner-front/node_modules/icss-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/icss-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,41 @@
 {
-  "name": "icss-utils",
-  "version": "5.1.0",
-  "description": "ICSS utils for postcss ast",
-  "main": "src/index.js",
-  "engines": {
-    "node": "^10 || ^12 || >= 14"
+  "_args": [
+    [
+      "icss-utils@5.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "icss-utils@5.1.0",
+  "_id": "icss-utils@5.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+  "_location": "/icss-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "icss-utils@5.1.0",
+    "name": "icss-utils",
+    "escapedName": "icss-utils",
+    "rawSpec": "5.1.0",
+    "saveSpec": null,
+    "fetchSpec": "5.1.0"
   },
-  "files": [
-    "src"
+  "_requiredBy": [
+    "/css-loader",
+    "/postcss-modules-local-by-default",
+    "/postcss-modules-values"
   ],
-  "scripts": {
-    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
-    "eslint": "eslint --ignore-path .gitignore .",
-    "lint": "yarn eslint && yarn prettier",
-    "test:only": "jest",
-    "test:watch": "jest --watch",
-    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
-    "pretest": "yarn lint",
-    "test": "yarn test:coverage",
-    "prepublishOnly": "yarn test"
+  "_resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+  "_spec": "5.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Glen Maddern"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/css-modules/icss-utils.git"
-  },
-  "keywords": [
-    "css",
-    "modules",
-    "icss",
-    "postcss"
-  ],
-  "author": "Glen Maddern",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/css-modules/icss-utils/issues"
   },
-  "homepage": "https://github.com/css-modules/icss-utils#readme",
+  "description": "ICSS utils for postcss ast",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -47,6 +48,38 @@
     "prettier": "^2.1.2"
   },
+  "engines": {
+    "node": "^10 || ^12 || >= 14"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/css-modules/icss-utils#readme",
+  "keywords": [
+    "css",
+    "modules",
+    "icss",
+    "postcss"
+  ],
+  "license": "ISC",
+  "main": "src/index.js",
+  "name": "icss-utils",
   "peerDependencies": {
     "postcss": "^8.1.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css-modules/icss-utils.git"
+  },
+  "scripts": {
+    "eslint": "eslint --ignore-path .gitignore .",
+    "lint": "yarn eslint && yarn prettier",
+    "prepublishOnly": "yarn test",
+    "pretest": "yarn lint",
+    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
+    "test": "yarn test:coverage",
+    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
+    "test:only": "jest",
+    "test:watch": "jest --watch"
+  },
+  "version": "5.1.0"
 }
Index: trip-planner-front/node_modules/ieee754/package.json
===================================================================
--- trip-planner-front/node_modules/ieee754/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ieee754/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,32 @@
 {
-  "name": "ieee754",
-  "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object",
-  "version": "1.2.1",
+  "_args": [
+    [
+      "ieee754@1.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ieee754@1.2.1",
+  "_id": "ieee754@1.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+  "_location": "/ieee754",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ieee754@1.2.1",
+    "name": "ieee754",
+    "escapedName": "ieee754",
+    "rawSpec": "1.2.1",
+    "saveSpec": null,
+    "fetchSpec": "1.2.1"
+  },
+  "_requiredBy": [
+    "/buffer"
+  ],
+  "_resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+  "_spec": "1.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Feross Aboukhadijeh",
@@ -8,31 +34,18 @@
     "url": "https://feross.org"
   },
+  "bugs": {
+    "url": "https://github.com/feross/ieee754/issues"
+  },
   "contributors": [
-    "Romain Beauxis <toots@rastageeks.org>"
+    {
+      "name": "Romain Beauxis",
+      "email": "toots@rastageeks.org"
+    }
   ],
+  "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object",
   "devDependencies": {
     "airtap": "^3.0.0",
     "standard": "*",
     "tape": "^5.0.1"
-  },
-  "keywords": [
-    "IEEE 754",
-    "buffer",
-    "convert",
-    "floating point",
-    "ieee754"
-  ],
-  "license": "BSD-3-Clause",
-  "main": "index.js",
-  "types": "index.d.ts",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/feross/ieee754.git"
-  },
-  "scripts": {
-    "test": "standard && npm run test-node && npm run test-browser",
-    "test-browser": "airtap -- test/*.js",
-    "test-browser-local": "airtap --local -- test/*.js",
-    "test-node": "tape test/*.js"
   },
   "funding": [
@@ -49,4 +62,27 @@
       "url": "https://feross.org/support"
     }
-  ]
+  ],
+  "homepage": "https://github.com/feross/ieee754#readme",
+  "keywords": [
+    "IEEE 754",
+    "buffer",
+    "convert",
+    "floating point",
+    "ieee754"
+  ],
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "name": "ieee754",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/feross/ieee754.git"
+  },
+  "scripts": {
+    "test": "standard && npm run test-node && npm run test-browser",
+    "test-browser": "airtap -- test/*.js",
+    "test-browser-local": "airtap --local -- test/*.js",
+    "test-node": "tape test/*.js"
+  },
+  "types": "index.d.ts",
+  "version": "1.2.1"
 }
Index: trip-planner-front/node_modules/ignore-walk/package.json
===================================================================
--- trip-planner-front/node_modules/ignore-walk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ignore-walk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,44 @@
 {
-  "name": "ignore-walk",
-  "version": "3.0.4",
+  "_args": [
+    [
+      "ignore-walk@3.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ignore-walk@3.0.4",
+  "_id": "ignore-walk@3.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
+  "_location": "/ignore-walk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ignore-walk@3.0.4",
+    "name": "ignore-walk",
+    "escapedName": "ignore-walk",
+    "rawSpec": "3.0.4",
+    "saveSpec": null,
+    "fetchSpec": "3.0.4"
+  },
+  "_requiredBy": [
+    "/npm-packlist"
+  ],
+  "_resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
+  "_spec": "3.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/ignore-walk/issues"
+  },
+  "dependencies": {
+    "minimatch": "^3.0.4"
+  },
   "description": "Nested/recursive `.gitignore`/`.npmignore` parsing and filtering.",
-  "main": "index.js",
   "devDependencies": {
     "mkdirp": "^0.5.1",
@@ -10,10 +47,8 @@
     "tap": "^15.0.6"
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
-  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/ignore-walk#readme",
   "keywords": [
     "ignorefile",
@@ -24,15 +59,16 @@
     "glob"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "license": "ISC",
+  "main": "index.js",
+  "name": "ignore-walk",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/isaacs/ignore-walk.git"
   },
-  "files": [
-    "index.js"
-  ],
-  "dependencies": {
-    "minimatch": "^3.0.4"
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
   },
   "tap": {
@@ -41,4 +77,5 @@
     "after": "test/zz-cleanup.js",
     "jobs": 1
-  }
+  },
+  "version": "3.0.4"
 }
Index: trip-planner-front/node_modules/ignore/package.json
===================================================================
--- trip-planner-front/node_modules/ignore/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ignore/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,39 @@
 {
-  "name": "ignore",
-  "version": "5.1.8",
-  "description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
-  "files": [
-    "legacy.js",
-    "index.js",
-    "index.d.ts",
-    "LICENSE-MIT"
+  "_args": [
+    [
+      "ignore@5.1.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm run build",
-    "build": "babel -o legacy.js index.js",
-    "test:lint": "eslint .",
-    "test:tsc": "tsc ./test/ts/simple.ts --lib ES6",
-    "test:ts": "node ./test/ts/simple.js",
-    "test:git": "tap test/git-check-ignore.js",
-    "test:ignore": "tap test/ignore.js",
-    "test:others": "tap test/others.js",
-    "test:cases": "tap test/*.js --coverage",
-    "test:only": "npm run test:lint && npm run test:tsc && npm run test:ts && npm run test:cases",
-    "test": "npm run test:only",
-    "test:win32": "IGNORE_TEST_WIN32=1 npm run test",
-    "posttest": "tap --coverage-report=html && codecov"
+  "_development": true,
+  "_from": "ignore@5.1.8",
+  "_id": "ignore@5.1.8",
+  "_inBundle": false,
+  "_integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+  "_location": "/ignore",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ignore@5.1.8",
+    "name": "ignore",
+    "escapedName": "ignore",
+    "rawSpec": "5.1.8",
+    "saveSpec": null,
+    "fetchSpec": "5.1.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:kaelzhang/node-ignore.git"
+  "_requiredBy": [
+    "/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+  "_spec": "5.1.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "kael"
   },
-  "keywords": [
-    "ignore",
-    ".gitignore",
-    "gitignore",
-    "npmignore",
-    "rules",
-    "manager",
-    "filter",
-    "regexp",
-    "regex",
-    "fnmatch",
-    "glob",
-    "asterisks",
-    "regular-expression"
-  ],
-  "author": "kael",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/kaelzhang/node-ignore/issues"
   },
+  "description": "Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others.",
   "devDependencies": {
     "@babel/cli": "^7.8.4",
@@ -67,4 +55,48 @@
   "engines": {
     "node": ">= 4"
-  }
+  },
+  "files": [
+    "legacy.js",
+    "index.js",
+    "index.d.ts",
+    "LICENSE-MIT"
+  ],
+  "homepage": "https://github.com/kaelzhang/node-ignore#readme",
+  "keywords": [
+    "ignore",
+    ".gitignore",
+    "gitignore",
+    "npmignore",
+    "rules",
+    "manager",
+    "filter",
+    "regexp",
+    "regex",
+    "fnmatch",
+    "glob",
+    "asterisks",
+    "regular-expression"
+  ],
+  "license": "MIT",
+  "name": "ignore",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/kaelzhang/node-ignore.git"
+  },
+  "scripts": {
+    "build": "babel -o legacy.js index.js",
+    "posttest": "tap --coverage-report=html && codecov",
+    "prepublishOnly": "npm run build",
+    "test": "npm run test:only",
+    "test:cases": "tap test/*.js --coverage",
+    "test:git": "tap test/git-check-ignore.js",
+    "test:ignore": "tap test/ignore.js",
+    "test:lint": "eslint .",
+    "test:only": "npm run test:lint && npm run test:tsc && npm run test:ts && npm run test:cases",
+    "test:others": "tap test/others.js",
+    "test:ts": "node ./test/ts/simple.js",
+    "test:tsc": "tsc ./test/ts/simple.ts --lib ES6",
+    "test:win32": "IGNORE_TEST_WIN32=1 npm run test"
+  },
+  "version": "5.1.8"
 }
Index: trip-planner-front/node_modules/image-size/package.json
===================================================================
--- trip-planner-front/node_modules/image-size/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/image-size/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,62 @@
 {
-  "name": "image-size",
-  "version": "0.5.5",
+  "_args": [
+    [
+      "image-size@0.5.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "image-size@0.5.5",
+  "_id": "image-size@0.5.5",
+  "_inBundle": false,
+  "_integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+  "_location": "/image-size",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "image-size@0.5.5",
+    "name": "image-size",
+    "escapedName": "image-size",
+    "rawSpec": "0.5.5",
+    "saveSpec": null,
+    "fetchSpec": "0.5.5"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+  "_spec": "0.5.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "netroy",
+    "email": "aditya@netroy.in",
+    "url": "http://netroy.in/"
+  },
+  "bin": {
+    "image-size": "bin/image-size.js"
+  },
+  "bugs": {
+    "url": "https://github.com/image-size/image-size/issues"
+  },
   "description": "get dimensions of any image file",
-  "main": "lib/index.js",
+  "devDependencies": {
+    "escomplex-js": "^1.2.0",
+    "expect.js": "^0.3.1",
+    "glob": "^7.1.1",
+    "istanbul": "^1.1.0-alpha.1",
+    "jshint": "^2.9.4",
+    "mocha": "^3.4.1",
+    "sinon": "^2.2.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "bin",
     "lib"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "bin": {
-    "image-size": "bin/image-size.js"
-  },
-  "scripts": {
-    "pretest": "jshint",
-    "test": "mocha specs",
-    "coverage": "istanbul cover _mocha specs"
-  },
-  "repository": "image-size/image-size",
+  "homepage": "https://github.com/image-size/image-size#readme",
   "keywords": [
     "image",
@@ -36,14 +75,16 @@
     "svg"
   ],
-  "author": "netroy <aditya@netroy.in> (http://netroy.in/)",
   "license": "MIT",
-  "devDependencies": {
-    "escomplex-js": "^1.2.0",
-    "expect.js": "^0.3.1",
-    "glob": "^7.1.1",
-    "istanbul": "^1.1.0-alpha.1",
-    "jshint": "^2.9.4",
-    "mocha": "^3.4.1",
-    "sinon": "^2.2.0"
-  }
+  "main": "lib/index.js",
+  "name": "image-size",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/image-size/image-size.git"
+  },
+  "scripts": {
+    "coverage": "istanbul cover _mocha specs",
+    "pretest": "jshint",
+    "test": "mocha specs"
+  },
+  "version": "0.5.5"
 }
Index: trip-planner-front/node_modules/import-fresh/package.json
===================================================================
--- trip-planner-front/node_modules/import-fresh/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-fresh/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,79 @@
 {
-	"name": "import-fresh",
-	"version": "3.3.0",
-	"description": "Import a module while bypassing the cache",
-	"license": "MIT",
-	"repository": "sindresorhus/import-fresh",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"heapdump": "node heapdump.js"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"require",
-		"cache",
-		"uncache",
-		"uncached",
-		"module",
-		"fresh",
-		"bypass"
-	],
-	"dependencies": {
-		"parent-module": "^1.0.0",
-		"resolve-from": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.0.1",
-		"heapdump": "^0.3.12",
-		"tsd": "^0.7.3",
-		"xo": "^0.23.0"
-	}
+  "_args": [
+    [
+      "import-fresh@3.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "import-fresh@3.3.0",
+  "_id": "import-fresh@3.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+  "_location": "/import-fresh",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "import-fresh@3.3.0",
+    "name": "import-fresh",
+    "escapedName": "import-fresh",
+    "rawSpec": "3.3.0",
+    "saveSpec": null,
+    "fetchSpec": "3.3.0"
+  },
+  "_requiredBy": [
+    "/cosmiconfig"
+  ],
+  "_resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+  "_spec": "3.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/import-fresh/issues"
+  },
+  "dependencies": {
+    "parent-module": "^1.0.0",
+    "resolve-from": "^4.0.0"
+  },
+  "description": "Import a module while bypassing the cache",
+  "devDependencies": {
+    "ava": "^1.0.1",
+    "heapdump": "^0.3.12",
+    "tsd": "^0.7.3",
+    "xo": "^0.23.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/import-fresh#readme",
+  "keywords": [
+    "require",
+    "cache",
+    "uncache",
+    "uncached",
+    "module",
+    "fresh",
+    "bypass"
+  ],
+  "license": "MIT",
+  "name": "import-fresh",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/import-fresh.git"
+  },
+  "scripts": {
+    "heapdump": "node heapdump.js",
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.3.0"
 }
Index: trip-planner-front/node_modules/import-local/node_modules/find-up/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/find-up/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/find-up/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,50 +1,86 @@
 {
-	"name": "find-up",
-	"version": "3.0.0",
-	"description": "Find a file or directory by walking up parent directories",
-	"license": "MIT",
-	"repository": "sindresorhus/find-up",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"find",
-		"up",
-		"find-up",
-		"findup",
-		"look-up",
-		"look",
-		"file",
-		"search",
-		"match",
-		"package",
-		"resolve",
-		"parent",
-		"parents",
-		"folder",
-		"directory",
-		"dir",
-		"walk",
-		"walking",
-		"path"
-	],
-	"dependencies": {
-		"locate-path": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"tempy": "^0.2.1",
-		"xo": "*"
-	}
+  "_args": [
+    [
+      "find-up@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "find-up@3.0.0",
+  "_id": "find-up@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+  "_location": "/import-local/find-up",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "find-up@3.0.0",
+    "name": "find-up",
+    "escapedName": "find-up",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/import-local/pkg-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/find-up/issues"
+  },
+  "dependencies": {
+    "locate-path": "^3.0.0"
+  },
+  "description": "Find a file or directory by walking up parent directories",
+  "devDependencies": {
+    "ava": "*",
+    "tempy": "^0.2.1",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/find-up#readme",
+  "keywords": [
+    "find",
+    "up",
+    "find-up",
+    "findup",
+    "look-up",
+    "look",
+    "file",
+    "search",
+    "match",
+    "package",
+    "resolve",
+    "parent",
+    "parents",
+    "folder",
+    "directory",
+    "dir",
+    "walk",
+    "walking",
+    "path"
+  ],
+  "license": "MIT",
+  "name": "find-up",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/find-up.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/import-local/node_modules/locate-path/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/locate-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/locate-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,80 @@
 {
-	"name": "locate-path",
-	"version": "3.0.0",
-	"description": "Get the first path that exists on disk of multiple paths",
-	"license": "MIT",
-	"repository": "sindresorhus/locate-path",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"locate",
-		"path",
-		"paths",
-		"file",
-		"files",
-		"exists",
-		"find",
-		"finder",
-		"search",
-		"searcher",
-		"array",
-		"iterable",
-		"iterator"
-	],
-	"dependencies": {
-		"p-locate": "^3.0.0",
-		"path-exists": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"xo": "*"
-	}
+  "_args": [
+    [
+      "locate-path@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "locate-path@3.0.0",
+  "_id": "locate-path@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+  "_location": "/import-local/locate-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "locate-path@3.0.0",
+    "name": "locate-path",
+    "escapedName": "locate-path",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/import-local/find-up"
+  ],
+  "_resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/locate-path/issues"
+  },
+  "dependencies": {
+    "p-locate": "^3.0.0",
+    "path-exists": "^3.0.0"
+  },
+  "description": "Get the first path that exists on disk of multiple paths",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/locate-path#readme",
+  "keywords": [
+    "locate",
+    "path",
+    "paths",
+    "file",
+    "files",
+    "exists",
+    "find",
+    "finder",
+    "search",
+    "searcher",
+    "array",
+    "iterable",
+    "iterator"
+  ],
+  "license": "MIT",
+  "name": "locate-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/locate-path.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/import-local/node_modules/p-limit/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/p-limit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/p-limit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,52 +1,88 @@
 {
-	"name": "p-limit",
-	"version": "2.3.0",
-	"description": "Run multiple promise-returning & async functions with limited concurrency",
-	"license": "MIT",
-	"repository": "sindresorhus/p-limit",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd-check"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"limit",
-		"limited",
-		"concurrency",
-		"throttle",
-		"throat",
-		"rate",
-		"batch",
-		"ratelimit",
-		"task",
-		"queue",
-		"async",
-		"await",
-		"promises",
-		"bluebird"
-	],
-	"dependencies": {
-		"p-try": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.2.1",
-		"delay": "^4.1.0",
-		"in-range": "^1.0.0",
-		"random-int": "^1.0.0",
-		"time-span": "^2.0.0",
-		"tsd-check": "^0.3.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-limit@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-limit@2.3.0",
+  "_id": "p-limit@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+  "_location": "/import-local/p-limit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-limit@2.3.0",
+    "name": "p-limit",
+    "escapedName": "p-limit",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/import-local/p-locate"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-limit/issues"
+  },
+  "dependencies": {
+    "p-try": "^2.0.0"
+  },
+  "description": "Run multiple promise-returning & async functions with limited concurrency",
+  "devDependencies": {
+    "ava": "^1.2.1",
+    "delay": "^4.1.0",
+    "in-range": "^1.0.0",
+    "random-int": "^1.0.0",
+    "time-span": "^2.0.0",
+    "tsd-check": "^0.3.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/p-limit#readme",
+  "keywords": [
+    "promise",
+    "limit",
+    "limited",
+    "concurrency",
+    "throttle",
+    "throat",
+    "rate",
+    "batch",
+    "ratelimit",
+    "task",
+    "queue",
+    "async",
+    "await",
+    "promises",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-limit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-limit.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd-check"
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/import-local/node_modules/p-locate/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/p-locate/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/p-locate/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,87 @@
 {
-	"name": "p-locate",
-	"version": "3.0.0",
-	"description": "Get the first fulfilled promise that satisfies the provided testing function",
-	"license": "MIT",
-	"repository": "sindresorhus/p-locate",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"promise",
-		"locate",
-		"find",
-		"finder",
-		"search",
-		"searcher",
-		"test",
-		"array",
-		"collection",
-		"iterable",
-		"iterator",
-		"race",
-		"fulfilled",
-		"fastest",
-		"async",
-		"await",
-		"promises",
-		"bluebird"
-	],
-	"dependencies": {
-		"p-limit": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"delay": "^3.0.0",
-		"in-range": "^1.0.0",
-		"time-span": "^2.0.0",
-		"xo": "*"
-	}
+  "_args": [
+    [
+      "p-locate@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-locate@3.0.0",
+  "_id": "p-locate@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+  "_location": "/import-local/p-locate",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-locate@3.0.0",
+    "name": "p-locate",
+    "escapedName": "p-locate",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/import-local/locate-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-locate/issues"
+  },
+  "dependencies": {
+    "p-limit": "^2.0.0"
+  },
+  "description": "Get the first fulfilled promise that satisfies the provided testing function",
+  "devDependencies": {
+    "ava": "*",
+    "delay": "^3.0.0",
+    "in-range": "^1.0.0",
+    "time-span": "^2.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-locate#readme",
+  "keywords": [
+    "promise",
+    "locate",
+    "find",
+    "finder",
+    "search",
+    "searcher",
+    "test",
+    "array",
+    "collection",
+    "iterable",
+    "iterator",
+    "race",
+    "fulfilled",
+    "fastest",
+    "async",
+    "await",
+    "promises",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-locate",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-locate.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/import-local/node_modules/path-exists/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/path-exists/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/path-exists/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "path-exists",
-  "version": "3.0.0",
-  "description": "Check if a path exists",
-  "license": "MIT",
-  "repository": "sindresorhus/path-exists",
+  "_args": [
+    [
+      "path-exists@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-exists@3.0.0",
+  "_id": "path-exists@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+  "_location": "/import-local/path-exists",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-exists@3.0.0",
+    "name": "path-exists",
+    "escapedName": "path-exists",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/import-local/locate-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-exists/issues"
+  },
+  "description": "Check if a path exists",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/path-exists#readme",
   "keywords": [
     "path",
@@ -31,8 +61,14 @@
     "stat"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "license": "MIT",
+  "name": "path-exists",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-exists.git"
   },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/import-local/node_modules/pkg-dir/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/node_modules/pkg-dir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/node_modules/pkg-dir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "pkg-dir",
-	"version": "3.0.0",
-	"description": "Find the root directory of a Node.js project or npm package",
-	"license": "MIT",
-	"repository": "sindresorhus/pkg-dir",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"package",
-		"json",
-		"root",
-		"npm",
-		"entry",
-		"find",
-		"up",
-		"find-up",
-		"findup",
-		"look-up",
-		"look",
-		"file",
-		"search",
-		"match",
-		"resolve",
-		"parent",
-		"parents",
-		"folder",
-		"directory",
-		"dir",
-		"walk",
-		"walking",
-		"path"
-	],
-	"dependencies": {
-		"find-up": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"xo": "*"
-	}
+  "_args": [
+    [
+      "pkg-dir@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pkg-dir@3.0.0",
+  "_id": "pkg-dir@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+  "_location": "/import-local/pkg-dir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pkg-dir@3.0.0",
+    "name": "pkg-dir",
+    "escapedName": "pkg-dir",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/import-local"
+  ],
+  "_resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pkg-dir/issues"
+  },
+  "dependencies": {
+    "find-up": "^3.0.0"
+  },
+  "description": "Find the root directory of a Node.js project or npm package",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/pkg-dir#readme",
+  "keywords": [
+    "package",
+    "json",
+    "root",
+    "npm",
+    "entry",
+    "find",
+    "up",
+    "find-up",
+    "findup",
+    "look-up",
+    "look",
+    "file",
+    "search",
+    "match",
+    "resolve",
+    "parent",
+    "parents",
+    "folder",
+    "directory",
+    "dir",
+    "walk",
+    "walking",
+    "path"
+  ],
+  "license": "MIT",
+  "name": "pkg-dir",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pkg-dir.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/import-local/package.json
===================================================================
--- trip-planner-front/node_modules/import-local/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/import-local/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,89 @@
 {
-	"name": "import-local",
-	"version": "2.0.0",
-	"description": "Let a globally installed package use a locally installed version of itself if available",
-	"license": "MIT",
-	"repository": "sindresorhus/import-local",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"bin": {
-		"import-local-fixture": "fixtures/cli.js"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"fixtures/cli.js"
-	],
-	"keywords": [
-		"import",
-		"local",
-		"require",
-		"resolve",
-		"global",
-		"version",
-		"prefer",
-		"cli"
-	],
-	"dependencies": {
-		"pkg-dir": "^3.0.0",
-		"resolve-cwd": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "*",
-		"cpy": "^7.0.1",
-		"del": "^3.0.0",
-		"execa": "^0.11.0",
-		"xo": "*"
-	},
-	"xo": {
-		"ignores": [
-			"fixtures"
-		]
-	}
+  "_args": [
+    [
+      "import-local@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "import-local@2.0.0",
+  "_id": "import-local@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+  "_location": "/import-local",
+  "_phantomChildren": {
+    "p-try": "2.2.0"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "import-local@2.0.0",
+    "name": "import-local",
+    "escapedName": "import-local",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bin": {
+    "import-local-fixture": "fixtures/cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/import-local/issues"
+  },
+  "dependencies": {
+    "pkg-dir": "^3.0.0",
+    "resolve-cwd": "^2.0.0"
+  },
+  "description": "Let a globally installed package use a locally installed version of itself if available",
+  "devDependencies": {
+    "ava": "*",
+    "cpy": "^7.0.1",
+    "del": "^3.0.0",
+    "execa": "^0.11.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "fixtures/cli.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/import-local#readme",
+  "keywords": [
+    "import",
+    "local",
+    "require",
+    "resolve",
+    "global",
+    "version",
+    "prefer",
+    "cli"
+  ],
+  "license": "MIT",
+  "name": "import-local",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/import-local.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.0.0",
+  "xo": {
+    "ignores": [
+      "fixtures"
+    ]
+  }
 }
Index: trip-planner-front/node_modules/imurmurhash/package.json
===================================================================
--- trip-planner-front/node_modules/imurmurhash/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/imurmurhash/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,46 @@
 {
-  "name": "imurmurhash",
-  "version": "0.1.4",
+  "_args": [
+    [
+      "imurmurhash@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "imurmurhash@0.1.4",
+  "_id": "imurmurhash@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+  "_location": "/imurmurhash",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "imurmurhash@0.1.4",
+    "name": "imurmurhash",
+    "escapedName": "imurmurhash",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/unique-slug"
+  ],
+  "_resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jens Taylor",
+    "email": "jensyt@gmail.com",
+    "url": "https://github.com/homebrewing"
+  },
+  "bugs": {
+    "url": "https://github.com/jensyt/imurmurhash-js/issues"
+  },
+  "dependencies": {},
   "description": "An incremental implementation of MurmurHash3",
-  "homepage": "https://github.com/jensyt/imurmurhash-js",
-  "main": "imurmurhash.js",
+  "devDependencies": {},
+  "engines": {
+    "node": ">=0.8.19"
+  },
   "files": [
     "imurmurhash.js",
@@ -11,11 +49,5 @@
     "README.md"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jensyt/imurmurhash-js"
-  },
-  "bugs": {
-    "url": "https://github.com/jensyt/imurmurhash-js/issues"
-  },
+  "homepage": "https://github.com/jensyt/imurmurhash-js",
   "keywords": [
     "murmur",
@@ -25,16 +57,11 @@
     "incremental"
   ],
-  "author": {
-    "name": "Jens Taylor",
-    "email": "jensyt@gmail.com",
-    "url": "https://github.com/homebrewing"
+  "license": "MIT",
+  "main": "imurmurhash.js",
+  "name": "imurmurhash",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jensyt/imurmurhash-js.git"
   },
-  "license": "MIT",
-  "dependencies": {
-  },
-  "devDependencies": {
-  },
-  "engines": {
-    "node": ">=0.8.19"
-  }
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/indent-string/package.json
===================================================================
--- trip-planner-front/node_modules/indent-string/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/indent-string/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,73 @@
 {
-	"name": "indent-string",
-	"version": "4.0.0",
-	"description": "Indent each line in a string",
-	"license": "MIT",
-	"repository": "sindresorhus/indent-string",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"indent",
-		"string",
-		"pad",
-		"align",
-		"line",
-		"text",
-		"each",
-		"every"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "indent-string@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "indent-string@4.0.0",
+  "_id": "indent-string@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+  "_location": "/indent-string",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "indent-string@4.0.0",
+    "name": "indent-string",
+    "escapedName": "indent-string",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/aggregate-error"
+  ],
+  "_resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/indent-string/issues"
+  },
+  "description": "Indent each line in a string",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/indent-string#readme",
+  "keywords": [
+    "indent",
+    "string",
+    "pad",
+    "align",
+    "line",
+    "text",
+    "each",
+    "every"
+  ],
+  "license": "MIT",
+  "name": "indent-string",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/indent-string.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/indexes-of/package.json
===================================================================
--- trip-planner-front/node_modules/indexes-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/indexes-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,51 @@
 {
+  "_args": [
+    [
+      "indexes-of@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "indexes-of@1.0.1",
+  "_id": "indexes-of@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+  "_location": "/indexes-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "indexes-of@1.0.1",
+    "name": "indexes-of",
+    "escapedName": "indexes-of",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/css-has-pseudo/postcss-selector-parser",
+    "/postcss-custom-selectors/postcss-selector-parser",
+    "/postcss-dir-pseudo-class/postcss-selector-parser",
+    "/postcss-pseudo-class-any-link/postcss-selector-parser",
+    "/postcss-values-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dominic Tarr",
+    "email": "dominic.tarr@gmail.com",
+    "url": "dominictarr.com"
+  },
+  "bugs": {
+    "url": "https://github.com/dominictarr/indexes-of/issues"
+  },
+  "description": "line String/Array#indexOf but return all the indexes in an array",
+  "devDependencies": {
+    "tape": "~2.1.0"
+  },
+  "homepage": "https://github.com/dominictarr/indexes-of",
+  "license": "MIT",
   "name": "indexes-of",
-  "description": "line String/Array#indexOf but return all the indexes in an array",
-  "version": "1.0.1",
-  "homepage": "https://github.com/dominictarr/indexes-of",
   "repository": {
     "type": "git",
@@ -11,8 +55,4 @@
     "test": "node test.js"
   },
-  "author": "Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)",
-  "license": "MIT",
-  "devDependencies": {
-    "tape": "~2.1.0"
-  }
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/infer-owner/package.json
===================================================================
--- trip-planner-front/node_modules/infer-owner/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/infer-owner/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,68 @@
 {
-  "name": "infer-owner",
-  "version": "1.0.4",
+  "_args": [
+    [
+      "infer-owner@1.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "infer-owner@1.0.4",
+  "_id": "infer-owner@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+  "_location": "/infer-owner",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "infer-owner@1.0.4",
+    "name": "infer-owner",
+    "escapedName": "infer-owner",
+    "rawSpec": "1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "1.0.4"
+  },
+  "_requiredBy": [
+    "/@npmcli/promise-spawn",
+    "/cacache",
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+  "_spec": "1.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/infer-owner/issues"
+  },
   "description": "Infer the owner of a path based on the owner of its nearest existing parent",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "test": "tap -J test/*.js --100",
-    "snap": "TAP_SNAPSHOT=1 tap -J test/*.js --100",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "mutate-fs": "^2.1.1",
     "tap": "^12.4.2"
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/infer-owner#readme",
+  "license": "ISC",
   "main": "index.js",
-  "repository": "https://github.com/npm/infer-owner",
+  "name": "infer-owner",
   "publishConfig": {
     "access": "public"
   },
-  "files": [
-    "index.js"
-  ]
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/infer-owner.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "TAP_SNAPSHOT=1 tap -J test/*.js --100",
+    "test": "tap -J test/*.js --100"
+  },
+  "version": "1.0.4"
 }
Index: trip-planner-front/node_modules/inflight/package.json
===================================================================
--- trip-planner-front/node_modules/inflight/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inflight/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,62 @@
 {
-  "name": "inflight",
-  "version": "1.0.6",
-  "description": "Add callbacks to requests in flight to avoid async duplication",
-  "main": "inflight.js",
-  "files": [
-    "inflight.js"
+  "_args": [
+    [
+      "inflight@1.0.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
+  "_development": true,
+  "_from": "inflight@1.0.6",
+  "_id": "inflight@1.0.6",
+  "_inBundle": false,
+  "_integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+  "_location": "/inflight",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "inflight@1.0.6",
+    "name": "inflight",
+    "escapedName": "inflight",
+    "rawSpec": "1.0.6",
+    "saveSpec": null,
+    "fetchSpec": "1.0.6"
+  },
+  "_requiredBy": [
+    "/glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+  "_spec": "1.0.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/inflight/issues"
+  },
   "dependencies": {
     "once": "^1.3.0",
     "wrappy": "1"
   },
+  "description": "Add callbacks to requests in flight to avoid async duplication",
   "devDependencies": {
     "tap": "^7.1.2"
+  },
+  "files": [
+    "inflight.js"
+  ],
+  "homepage": "https://github.com/isaacs/inflight",
+  "license": "ISC",
+  "main": "inflight.js",
+  "name": "inflight",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/inflight.git"
   },
   "scripts": {
     "test": "tap test.js --100"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/inflight.git"
-  },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "bugs": {
-    "url": "https://github.com/isaacs/inflight/issues"
-  },
-  "homepage": "https://github.com/isaacs/inflight",
-  "license": "ISC"
+  "version": "1.0.6"
 }
Index: trip-planner-front/node_modules/inherits/package.json
===================================================================
--- trip-planner-front/node_modules/inherits/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inherits/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,56 @@
 {
-  "name": "inherits",
+  "_args": [
+    [
+      "inherits@2.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "inherits@2.0.4",
+  "_id": "inherits@2.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+  "_location": "/inherits",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "inherits@2.0.4",
+    "name": "inherits",
+    "escapedName": "inherits",
+    "rawSpec": "2.0.4",
+    "saveSpec": null,
+    "fetchSpec": "2.0.4"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet/readable-stream",
+    "/bl",
+    "/css",
+    "/css-parse/css",
+    "/glob",
+    "/hpack.js",
+    "/hpack.js/readable-stream",
+    "/memory-fs/readable-stream",
+    "/readable-stream",
+    "/sockjs-client",
+    "/webpack-dev-server/chokidar",
+    "/webpack-dev-server/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+  "_spec": "2.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": "./inherits_browser.js",
+  "bugs": {
+    "url": "https://github.com/isaacs/inherits/issues"
+  },
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
-  "version": "2.0.4",
+  "devDependencies": {
+    "tap": "^14.2.4"
+  },
+  "files": [
+    "inherits.js",
+    "inherits_browser.js"
+  ],
+  "homepage": "https://github.com/isaacs/inherits#readme",
   "keywords": [
     "inheritance",
@@ -13,17 +63,14 @@
     "browserify"
   ],
+  "license": "ISC",
   "main": "./inherits.js",
-  "browser": "./inherits_browser.js",
-  "repository": "git://github.com/isaacs/inherits",
-  "license": "ISC",
+  "name": "inherits",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/inherits.git"
+  },
   "scripts": {
     "test": "tap"
   },
-  "devDependencies": {
-    "tap": "^14.2.4"
-  },
-  "files": [
-    "inherits.js",
-    "inherits_browser.js"
-  ]
+  "version": "2.0.4"
 }
Index: trip-planner-front/node_modules/ini/package.json
===================================================================
--- trip-planner-front/node_modules/ini/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ini/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,41 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "name": "ini",
+  "_args": [
+    [
+      "ini@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ini@2.0.0",
+  "_id": "ini@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+  "_location": "/ini",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ini@2.0.0",
+    "name": "ini",
+    "escapedName": "ini",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/ini/issues"
+  },
   "description": "An ini encoder/decoder for node",
-  "version": "2.0.0",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/ini.git"
-  },
-  "main": "ini.js",
-  "scripts": {
-    "eslint": "eslint",
-    "lint": "npm run eslint -- ini.js test/*.js",
-    "lintfix": "npm run lint -- --fix",
-    "test": "tap",
-    "posttest": "npm run lint",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "eslint": "^7.9.0",
@@ -27,10 +46,28 @@
     "tap": "14"
   },
-  "license": "ISC",
+  "engines": {
+    "node": ">=10"
+  },
   "files": [
     "ini.js"
   ],
-  "engines": {
-    "node": ">=10"
-  }
+  "homepage": "https://github.com/isaacs/ini#readme",
+  "license": "ISC",
+  "main": "ini.js",
+  "name": "ini",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/ini.git"
+  },
+  "scripts": {
+    "eslint": "eslint",
+    "lint": "npm run eslint -- ini.js test/*.js",
+    "lintfix": "npm run lint -- --fix",
+    "posttest": "npm run lint",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/ansi-styles/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/ansi-styles/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/ansi-styles/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "ansi-styles",
-	"version": "4.3.0",
-	"description": "ANSI escape codes for styling strings in the terminal",
-	"license": "MIT",
-	"repository": "chalk/ansi-styles",
-	"funding": "https://github.com/chalk/ansi-styles?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"color-convert": "^2.0.1"
-	},
-	"devDependencies": {
-		"@types/color-convert": "^1.9.0",
-		"ava": "^2.3.0",
-		"svg-term-cli": "^2.1.1",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-styles@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-styles@4.3.0",
+  "_id": "ansi-styles@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+  "_location": "/inquirer/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-styles@4.3.0",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/inquirer/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {
+    "color-convert": "^2.0.1"
+  },
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "@types/color-convert": "^1.9.0",
+    "ava": "^2.3.0",
+    "svg-term-cli": "^2.1.1",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/chalk/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/chalk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/chalk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,68 +1,104 @@
 {
-	"name": "chalk",
-	"version": "4.1.2",
-	"description": "Terminal string styling done right",
-	"license": "MIT",
-	"repository": "chalk/chalk",
-	"funding": "https://github.com/chalk/chalk?sponsor=1",
-	"main": "source",
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd",
-		"bench": "matcha benchmark.js"
-	},
-	"files": [
-		"source",
-		"index.d.ts"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"str",
-		"ansi",
-		"style",
-		"styles",
-		"tty",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"ansi-styles": "^4.1.0",
-		"supports-color": "^7.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"coveralls": "^3.0.7",
-		"execa": "^4.0.0",
-		"import-fresh": "^3.1.0",
-		"matcha": "^0.7.0",
-		"nyc": "^15.0.0",
-		"resolve-from": "^5.0.0",
-		"tsd": "^0.7.4",
-		"xo": "^0.28.2"
-	},
-	"xo": {
-		"rules": {
-			"unicorn/prefer-string-slice": "off",
-			"unicorn/prefer-includes": "off",
-			"@typescript-eslint/member-ordering": "off",
-			"no-redeclare": "off",
-			"unicorn/string-content": "off",
-			"unicorn/better-regex": "off"
-		}
-	}
+  "_args": [
+    [
+      "chalk@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chalk@4.1.2",
+  "_id": "chalk@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+  "_location": "/inquirer/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chalk@4.1.2",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "^4.1.0",
+    "supports-color": "^7.1.0"
+  },
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "coveralls": "^3.0.7",
+    "execa": "^4.0.0",
+    "import-fresh": "^3.1.0",
+    "matcha": "^0.7.0",
+    "nyc": "^15.0.0",
+    "resolve-from": "^5.0.0",
+    "tsd": "^0.7.4",
+    "xo": "^0.28.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "source",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/chalk?sponsor=1",
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "main": "source",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "4.1.2",
+  "xo": {
+    "rules": {
+      "unicorn/prefer-string-slice": "off",
+      "unicorn/prefer-includes": "off",
+      "@typescript-eslint/member-ordering": "off",
+      "no-redeclare": "off",
+      "unicorn/string-content": "off",
+      "unicorn/better-regex": "off"
+    }
+  }
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/color-convert/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/color-convert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/color-convert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "color-convert",
+  "_args": [
+    [
+      "color-convert@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-convert@2.0.1",
+  "_id": "color-convert@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+  "_location": "/inquirer/color-convert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-convert@2.0.1",
+    "name": "color-convert",
+    "escapedName": "color-convert",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/inquirer/ansi-styles"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Heather Arthur",
+    "email": "fayearthur@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Qix-/color-convert/issues"
+  },
+  "dependencies": {
+    "color-name": "~1.1.4"
+  },
   "description": "Plain color conversion functions",
-  "version": "2.0.1",
-  "author": "Heather Arthur <fayearthur@gmail.com>",
-  "license": "MIT",
-  "repository": "Qix-/color-convert",
-  "scripts": {
-    "pretest": "xo",
-    "test": "node test/basic.js"
+  "devDependencies": {
+    "chalk": "^2.4.2",
+    "xo": "^0.24.0"
   },
   "engines": {
     "node": ">=7.0.0"
   },
+  "files": [
+    "index.js",
+    "conversions.js",
+    "route.js"
+  ],
+  "homepage": "https://github.com/Qix-/color-convert#readme",
   "keywords": [
     "color",
@@ -27,9 +67,15 @@
     "ansi16"
   ],
-  "files": [
-    "index.js",
-    "conversions.js",
-    "route.js"
-  ],
+  "license": "MIT",
+  "name": "color-convert",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Qix-/color-convert.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "test": "node test/basic.js"
+  },
+  "version": "2.0.1",
   "xo": {
     "rules": {
@@ -38,11 +84,4 @@
       "operator-linebreak": 0
     }
-  },
-  "devDependencies": {
-    "chalk": "^2.4.2",
-    "xo": "^0.24.0"
-  },
-  "dependencies": {
-    "color-name": "~1.1.4"
   }
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/color-name/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/color-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/color-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "color-name",
-  "version": "1.1.4",
+  "_args": [
+    [
+      "color-name@1.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-name@1.1.4",
+  "_id": "color-name@1.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+  "_location": "/inquirer/color-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-name@1.1.4",
+    "name": "color-name",
+    "escapedName": "color-name",
+    "rawSpec": "1.1.4",
+    "saveSpec": null,
+    "fetchSpec": "1.1.4"
+  },
+  "_requiredBy": [
+    "/inquirer/color-convert"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+  "_spec": "1.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "DY",
+    "email": "dfcreative@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/colorjs/color-name/issues"
+  },
   "description": "A list of color names and its values",
-  "main": "index.js",
   "files": [
     "index.js"
   ],
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:colorjs/color-name.git"
-  },
+  "homepage": "https://github.com/colorjs/color-name",
   "keywords": [
     "color-name",
@@ -20,9 +47,14 @@
     "keyword"
   ],
-  "author": "DY <dfcreative@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/colorjs/color-name/issues"
+  "main": "index.js",
+  "name": "color-name",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/colorjs/color-name.git"
   },
-  "homepage": "https://github.com/colorjs/color-name"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.1.4"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/inquirer/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/inquirer/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/rxjs/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/rxjs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/rxjs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,55 +1,38 @@
 {
-  "name": "rxjs",
-  "version": "7.4.0",
-  "description": "Reactive Extensions for modern JavaScript",
-  "main": "./dist/cjs/index.js",
-  "module": "./dist/esm5/index.js",
-  "es2015": "./dist/esm/index.js",
-  "types": "index.d.ts",
-  "typesVersions": {
-    ">=4.2": {
-      "*": [
-        "dist/types/*"
-      ]
-    }
-  },
-  "sideEffects": false,
-  "exports": {
-    ".": {
-      "node": "./dist/cjs/index.js",
-      "es2015": "./dist/esm/index.js",
-      "default": "./dist/esm5/index.js"
-    },
-    "./ajax": {
-      "node": "./dist/cjs/ajax/index.js",
-      "es2015": "./dist/esm/ajax/index.js",
-      "default": "./dist/esm5/ajax/index.js"
-    },
-    "./fetch": {
-      "node": "./dist/cjs/fetch/index.js",
-      "es2015": "./dist/esm/fetch/index.js",
-      "default": "./dist/esm5/fetch/index.js"
-    },
-    "./operators": {
-      "node": "./dist/cjs/operators/index.js",
-      "es2015": "./dist/esm/operators/index.js",
-      "default": "./dist/esm5/operators/index.js"
-    },
-    "./testing": {
-      "node": "./dist/cjs/testing/index.js",
-      "es2015": "./dist/esm/testing/index.js",
-      "default": "./dist/esm5/testing/index.js"
-    },
-    "./webSocket": {
-      "node": "./dist/cjs/webSocket/index.js",
-      "es2015": "./dist/esm/webSocket/index.js",
-      "default": "./dist/esm5/webSocket/index.js"
-    },
-    "./internal/*": {
-      "node": "./dist/cjs/internal/*.js",
-      "es2015": "./dist/esm/internal/*.js",
-      "default": "./dist/esm5/internal/*.js"
-    },
-    "./package.json": "./package.json"
+  "_args": [
+    [
+      "rxjs@7.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "rxjs@7.4.0",
+  "_id": "rxjs@7.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==",
+  "_location": "/inquirer/rxjs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "rxjs@7.4.0",
+    "name": "rxjs",
+    "escapedName": "rxjs",
+    "rawSpec": "7.4.0",
+    "saveSpec": null,
+    "fetchSpec": "7.4.0"
+  },
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz",
+  "_spec": "7.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Lesh",
+    "email": "ben@benlesh.com"
+  },
+  "bugs": {
+    "url": "https://github.com/ReactiveX/RxJS/issues"
   },
   "config": {
@@ -58,55 +41,4 @@
     }
   },
-  "lint-staged": {
-    "*.js": "eslint --cache --fix",
-    "(src|spec)/**/*.ts": [
-      "tslint --fix",
-      "prettier --write"
-    ],
-    "*.{js,css,md}": "prettier --write"
-  },
-  "scripts": {
-    "changelog": "npx conventional-changelog-cli -p angular -i CHANGELOG.md -s",
-    "build:spec:browser": "echo \"Browser test is not working currently\" && exit -1 && webpack --config spec/support/webpack.mocha.config.js",
-    "lint_spec": "tslint -c spec/tslint.json -p spec/tsconfig.json \"spec/**/*.ts\"",
-    "lint_src": "tslint -c tslint.json -p src/tsconfig.base.json \"src/**/*.ts\"",
-    "lint": "npm-run-all --parallel lint_*",
-    "dtslint": "tsc -b ./src/tsconfig.types.json && tslint -c spec-dtslint/tslint.json -p spec-dtslint/tsconfig.json \"spec-dtslint/**/*.ts\"",
-    "prepublishOnly": "npm run build:package && npm run lint && npm run test && npm run test:circular && npm run dtslint && npm run test:side-effects && npm run api_guardian",
-    "publish_docs": "./publish_docs.sh",
-    "test": "npm run compile && mocha --config spec/support/.mocharc.js \"dist/spec/**/*-spec.js\"",
-    "test:esm": "node spec/module-test-spec.mjs",
-    "test:browser": "echo \"Browser test is not working currently\" && exit -1 && npm-run-all build:spec:browser && opn spec/support/mocha-browser-runner.html",
-    "test:circular": "dependency-cruiser --validate .dependency-cruiser.json -x \"^node_modules\" dist/esm5",
-    "test:systemjs": "node integration/systemjs/systemjs-compatibility-spec.js",
-    "test:side-effects": "check-side-effects --test integration/side-effects/side-effects.json",
-    "test:side-effects:update": "npm run test:side-effects -- --update",
-    "test:import": "ts-node ./integration/import/runner.ts",
-    "compile": "tsc -b ./src/tsconfig.cjs.json ./src/tsconfig.cjs.spec.json ./src/tsconfig.esm.json ./src/tsconfig.esm5.json ./src/tsconfig.esm5.rollup.json ./src/tsconfig.types.json ./src/tsconfig.types.spec.json ./spec/tsconfig.json",
-    "build:clean": "shx rm -rf ./dist",
-    "build:global": "node ./tools/make-umd-bundle.js && node ./tools/make-closure-core.js",
-    "build:package": "npm-run-all build:clean compile build:global && node ./tools/prepare-package.js && node ./tools/generate-alias.js",
-    "api_guardian:update": "tsc -b ./src/tsconfig.types.json && ts-api-guardian --outDir api_guard dist/types/index.d.ts dist/types/ajax/index.d.ts dist/types/fetch/index.d.ts dist/types/operators/index.d.ts dist/types/testing/index.d.ts dist/types/webSocket/index.d.ts",
-    "api_guardian": "ts-api-guardian --verifyDir api_guard dist/types/index.d.ts dist/types/ajax/index.d.ts dist/types/fetch/index.d.ts dist/types/operators/index.d.ts dist/types/testing/index.d.ts dist/types/webSocket/index.d.ts",
-    "watch": "nodemon -w \"src/\" -w \"spec/\" -e ts -x npm test",
-    "watch:dtslint": "nodemon -w \"src/\" -w \"spec-dtslint/\" -e ts -x npm run dtslint"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/reactivex/rxjs.git"
-  },
-  "keywords": [
-    "Rx",
-    "RxJS",
-    "ReactiveX",
-    "ReactiveExtensions",
-    "Streams",
-    "Observables",
-    "Observable",
-    "Stream",
-    "ES6",
-    "ES2015"
-  ],
-  "author": "Ben Lesh <ben@benlesh.com>",
   "contributors": [
     {
@@ -135,12 +67,8 @@
     }
   ],
-  "license": "Apache-2.0",
-  "bugs": {
-    "url": "https://github.com/ReactiveX/RxJS/issues"
-  },
-  "homepage": "https://rxjs.dev",
   "dependencies": {
     "tslib": "~2.1.0"
   },
+  "description": "Reactive Extensions for modern JavaScript",
   "devDependencies": {
     "@angular-devkit/build-optimizer": "0.4.6",
@@ -207,4 +135,43 @@
     "webpack": "^4.31.0"
   },
+  "es2015": "./dist/esm/index.js",
+  "exports": {
+    ".": {
+      "node": "./dist/cjs/index.js",
+      "es2015": "./dist/esm/index.js",
+      "default": "./dist/esm5/index.js"
+    },
+    "./ajax": {
+      "node": "./dist/cjs/ajax/index.js",
+      "es2015": "./dist/esm/ajax/index.js",
+      "default": "./dist/esm5/ajax/index.js"
+    },
+    "./fetch": {
+      "node": "./dist/cjs/fetch/index.js",
+      "es2015": "./dist/esm/fetch/index.js",
+      "default": "./dist/esm5/fetch/index.js"
+    },
+    "./operators": {
+      "node": "./dist/cjs/operators/index.js",
+      "es2015": "./dist/esm/operators/index.js",
+      "default": "./dist/esm5/operators/index.js"
+    },
+    "./testing": {
+      "node": "./dist/cjs/testing/index.js",
+      "es2015": "./dist/esm/testing/index.js",
+      "default": "./dist/esm5/testing/index.js"
+    },
+    "./webSocket": {
+      "node": "./dist/cjs/webSocket/index.js",
+      "es2015": "./dist/esm/webSocket/index.js",
+      "default": "./dist/esm5/webSocket/index.js"
+    },
+    "./internal/*": {
+      "node": "./dist/cjs/internal/*.js",
+      "es2015": "./dist/esm/internal/*.js",
+      "default": "./dist/esm5/internal/*.js"
+    },
+    "./package.json": "./package.json"
+  },
   "files": [
     "dist/bundles",
@@ -226,4 +193,5 @@
     "tsconfig.json"
   ],
+  "homepage": "https://rxjs.dev",
   "husky": {
     "hooks": {
@@ -231,4 +199,68 @@
       "commit-msg": "validate-commit-msg"
     }
-  }
+  },
+  "keywords": [
+    "Rx",
+    "RxJS",
+    "ReactiveX",
+    "ReactiveExtensions",
+    "Streams",
+    "Observables",
+    "Observable",
+    "Stream",
+    "ES6",
+    "ES2015"
+  ],
+  "license": "Apache-2.0",
+  "lint-staged": {
+    "*.js": "eslint --cache --fix",
+    "(src|spec)/**/*.ts": [
+      "tslint --fix",
+      "prettier --write"
+    ],
+    "*.{js,css,md}": "prettier --write"
+  },
+  "main": "./dist/cjs/index.js",
+  "module": "./dist/esm5/index.js",
+  "name": "rxjs",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/reactivex/rxjs.git"
+  },
+  "scripts": {
+    "api_guardian": "ts-api-guardian --verifyDir api_guard dist/types/index.d.ts dist/types/ajax/index.d.ts dist/types/fetch/index.d.ts dist/types/operators/index.d.ts dist/types/testing/index.d.ts dist/types/webSocket/index.d.ts",
+    "api_guardian:update": "tsc -b ./src/tsconfig.types.json && ts-api-guardian --outDir api_guard dist/types/index.d.ts dist/types/ajax/index.d.ts dist/types/fetch/index.d.ts dist/types/operators/index.d.ts dist/types/testing/index.d.ts dist/types/webSocket/index.d.ts",
+    "build:clean": "shx rm -rf ./dist",
+    "build:global": "node ./tools/make-umd-bundle.js && node ./tools/make-closure-core.js",
+    "build:package": "npm-run-all build:clean compile build:global && node ./tools/prepare-package.js && node ./tools/generate-alias.js",
+    "build:spec:browser": "echo \"Browser test is not working currently\" && exit -1 && webpack --config spec/support/webpack.mocha.config.js",
+    "changelog": "npx conventional-changelog-cli -p angular -i CHANGELOG.md -s",
+    "compile": "tsc -b ./src/tsconfig.cjs.json ./src/tsconfig.cjs.spec.json ./src/tsconfig.esm.json ./src/tsconfig.esm5.json ./src/tsconfig.esm5.rollup.json ./src/tsconfig.types.json ./src/tsconfig.types.spec.json ./spec/tsconfig.json",
+    "dtslint": "tsc -b ./src/tsconfig.types.json && tslint -c spec-dtslint/tslint.json -p spec-dtslint/tsconfig.json \"spec-dtslint/**/*.ts\"",
+    "lint": "npm-run-all --parallel lint_*",
+    "lint_spec": "tslint -c spec/tslint.json -p spec/tsconfig.json \"spec/**/*.ts\"",
+    "lint_src": "tslint -c tslint.json -p src/tsconfig.base.json \"src/**/*.ts\"",
+    "prepublishOnly": "npm run build:package && npm run lint && npm run test && npm run test:circular && npm run dtslint && npm run test:side-effects && npm run api_guardian",
+    "publish_docs": "./publish_docs.sh",
+    "test": "npm run compile && mocha --config spec/support/.mocharc.js \"dist/spec/**/*-spec.js\"",
+    "test:browser": "echo \"Browser test is not working currently\" && exit -1 && npm-run-all build:spec:browser && opn spec/support/mocha-browser-runner.html",
+    "test:circular": "dependency-cruiser --validate .dependency-cruiser.json -x \"^node_modules\" dist/esm5",
+    "test:esm": "node spec/module-test-spec.mjs",
+    "test:import": "ts-node ./integration/import/runner.ts",
+    "test:side-effects": "check-side-effects --test integration/side-effects/side-effects.json",
+    "test:side-effects:update": "npm run test:side-effects -- --update",
+    "test:systemjs": "node integration/systemjs/systemjs-compatibility-spec.js",
+    "watch": "nodemon -w \"src/\" -w \"spec/\" -e ts -x npm test",
+    "watch:dtslint": "nodemon -w \"src/\" -w \"spec-dtslint/\" -e ts -x npm run dtslint"
+  },
+  "sideEffects": false,
+  "types": "index.d.ts",
+  "typesVersions": {
+    ">=4.2": {
+      "*": [
+        "dist/types/*"
+      ]
+    }
+  },
+  "version": "7.4.0"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "supports-color",
-	"version": "7.2.0",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"import-fresh": "^3.0.0",
-		"xo": "^0.24.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@7.2.0",
+  "_id": "supports-color@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+  "_location": "/inquirer/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@7.2.0",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/inquirer/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "import-fresh": "^3.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/inquirer/node_modules/tslib/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/node_modules/tslib/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/node_modules/tslib/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,68 @@
 {
+  "_args": [
+    [
+      "tslib@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "tslib@2.1.0",
+  "_id": "tslib@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+  "_location": "/inquirer/tslib",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tslib@2.1.0",
     "name": "tslib",
-    "author": "Microsoft Corp.",
-    "homepage": "https://www.typescriptlang.org/",
-    "version": "2.1.0",
-    "license": "0BSD",
-    "description": "Runtime library for TypeScript helper functions",
-    "keywords": [
-        "TypeScript",
-        "Microsoft",
-        "compiler",
-        "language",
-        "javascript",
-        "tslib",
-        "runtime"
-    ],
-    "bugs": {
-        "url": "https://github.com/Microsoft/TypeScript/issues"
+    "escapedName": "tslib",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/inquirer/rxjs"
+  ],
+  "_resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Microsoft Corp."
+  },
+  "bugs": {
+    "url": "https://github.com/Microsoft/TypeScript/issues"
+  },
+  "description": "Runtime library for TypeScript helper functions",
+  "exports": {
+    ".": {
+      "module": "./tslib.es6.js",
+      "import": "./modules/index.js",
+      "default": "./tslib.js"
     },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/Microsoft/tslib.git"
-    },
-    "main": "tslib.js",
-    "module": "tslib.es6.js",
-    "jsnext:main": "tslib.es6.js",
-    "typings": "tslib.d.ts",
-    "sideEffects": false,
-    "exports": {
-        ".": {
-            "module": "./tslib.es6.js",
-            "import": "./modules/index.js",
-            "default": "./tslib.js"
-        },
-        "./": "./"
-    }
+    "./": "./"
+  },
+  "homepage": "https://www.typescriptlang.org/",
+  "jsnext:main": "tslib.es6.js",
+  "keywords": [
+    "TypeScript",
+    "Microsoft",
+    "compiler",
+    "language",
+    "javascript",
+    "tslib",
+    "runtime"
+  ],
+  "license": "0BSD",
+  "main": "tslib.js",
+  "module": "tslib.es6.js",
+  "name": "tslib",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Microsoft/tslib.git"
+  },
+  "sideEffects": false,
+  "typings": "tslib.d.ts",
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/inquirer/package.json
===================================================================
--- trip-planner-front/node_modules/inquirer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/inquirer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,40 @@
 {
-  "name": "inquirer",
-  "version": "8.1.2",
-  "description": "A collection of common interactive command line user interfaces.",
-  "author": "Simon Boudrias <admin@simonboudrias.com>",
-  "files": [
-    "lib",
-    "README.md"
+  "_args": [
+    [
+      "inquirer@8.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "main": "lib/inquirer.js",
-  "keywords": [
-    "command",
-    "prompt",
-    "stdin",
-    "cli",
-    "tty",
-    "menu"
+  "_development": true,
+  "_from": "inquirer@8.1.2",
+  "_id": "inquirer@8.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==",
+  "_location": "/inquirer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "inquirer@8.1.2",
+    "name": "inquirer",
+    "escapedName": "inquirer",
+    "rawSpec": "8.1.2",
+    "saveSpec": null,
+    "fetchSpec": "8.1.2"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular/cli"
   ],
-  "engines": {
-    "node": ">=8.0.0"
+  "_resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
+  "_spec": "8.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Simon Boudrias",
+    "email": "admin@simonboudrias.com"
   },
-  "devDependencies": {
-    "chai": "^4.3.4",
-    "chalk-pipe": "^5.1.1",
-    "cmdify": "^0.0.4",
-    "mocha": "^9.0.2",
-    "mockery": "^2.1.0",
-    "nyc": "^15.0.0",
-    "sinon": "^11.1.1"
+  "bugs": {
+    "url": "https://github.com/SBoudrias/Inquirer.js/issues"
   },
-  "scripts": {
-    "test": "nyc mocha test/**/* -r ./test/before",
-    "posttest": "nyc report --reporter=text-lcov > ../../coverage/nyc-report.lcov",
-    "prepublishOnly": "cp ../../README.md .",
-    "postpublish": "rm -f README.md"
-  },
-  "repository": "SBoudrias/Inquirer.js",
-  "license": "MIT",
   "dependencies": {
     "ansi-escapes": "^4.2.1",
@@ -53,4 +53,44 @@
     "through": "^2.3.6"
   },
-  "gitHead": "9bee59b98465656619e4ee563ddbc466dcf2b4f1"
+  "description": "A collection of common interactive command line user interfaces.",
+  "devDependencies": {
+    "chai": "^4.3.4",
+    "chalk-pipe": "^5.1.1",
+    "cmdify": "^0.0.4",
+    "mocha": "^9.0.2",
+    "mockery": "^2.1.0",
+    "nyc": "^15.0.0",
+    "sinon": "^11.1.1"
+  },
+  "engines": {
+    "node": ">=8.0.0"
+  },
+  "files": [
+    "lib",
+    "README.md"
+  ],
+  "gitHead": "9bee59b98465656619e4ee563ddbc466dcf2b4f1",
+  "homepage": "https://github.com/SBoudrias/Inquirer.js#readme",
+  "keywords": [
+    "command",
+    "prompt",
+    "stdin",
+    "cli",
+    "tty",
+    "menu"
+  ],
+  "license": "MIT",
+  "main": "lib/inquirer.js",
+  "name": "inquirer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/SBoudrias/Inquirer.js.git"
+  },
+  "scripts": {
+    "postpublish": "rm -f README.md",
+    "posttest": "nyc report --reporter=text-lcov > ../../coverage/nyc-report.lcov",
+    "prepublishOnly": "cp ../../README.md .",
+    "test": "nyc mocha test/**/* -r ./test/before"
+  },
+  "version": "8.1.2"
 }
Index: trip-planner-front/node_modules/internal-ip/package.json
===================================================================
--- trip-planner-front/node_modules/internal-ip/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/internal-ip/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,79 @@
 {
-	"name": "internal-ip",
-	"version": "4.3.0",
-	"description": "Get your internal IP address",
-	"license": "MIT",
-	"repository": "sindresorhus/internal-ip",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ip",
-		"ipv6",
-		"ipv4",
-		"address",
-		"internal",
-		"local",
-		"machine",
-		"system",
-		"net",
-		"gateway"
-	],
-	"dependencies": {
-		"default-gateway": "^4.2.0",
-		"ipaddr.js": "^1.9.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "internal-ip@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "internal-ip@4.3.0",
+  "_id": "internal-ip@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+  "_location": "/internal-ip",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "internal-ip@4.3.0",
+    "name": "internal-ip",
+    "escapedName": "internal-ip",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/internal-ip/issues"
+  },
+  "dependencies": {
+    "default-gateway": "^4.2.0",
+    "ipaddr.js": "^1.9.0"
+  },
+  "description": "Get your internal IP address",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/internal-ip#readme",
+  "keywords": [
+    "ip",
+    "ipv6",
+    "ipv4",
+    "address",
+    "internal",
+    "local",
+    "machine",
+    "system",
+    "net",
+    "gateway"
+  ],
+  "license": "MIT",
+  "name": "internal-ip",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/internal-ip.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/ip-regex/package.json
===================================================================
--- trip-planner-front/node_modules/ip-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ip-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "ip-regex",
-  "version": "2.1.0",
-  "description": "Regular expression for matching IP addresses (IPv4 & IPv6)",
-  "license": "MIT",
-  "repository": "sindresorhus/ip-regex",
+  "_args": [
+    [
+      "ip-regex@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ip-regex@2.1.0",
+  "_id": "ip-regex@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+  "_location": "/ip-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ip-regex@2.1.0",
+    "name": "ip-regex",
+    "escapedName": "ip-regex",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/default-gateway"
+  ],
+  "_resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/ip-regex/issues"
+  },
+  "description": "Regular expression for matching IP addresses (IPv4 & IPv6)",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/ip-regex#readme",
   "keywords": [
     "ip",
@@ -36,8 +66,14 @@
     "validate"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "license": "MIT",
+  "name": "ip-regex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/ip-regex.git"
   },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.1.0",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/ip/package.json
===================================================================
--- trip-planner-front/node_modules/ip/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ip/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,42 @@
 {
-  "name": "ip",
-  "version": "1.1.5",
-  "author": "Fedor Indutny <fedor@indutny.com>",
-  "homepage": "https://github.com/indutny/node-ip",
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/indutny/node-ip.git"
+  "_args": [
+    [
+      "ip@1.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ip@1.1.5",
+  "_id": "ip@1.1.5",
+  "_inBundle": false,
+  "_integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+  "_location": "/ip",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ip@1.1.5",
+    "name": "ip",
+    "escapedName": "ip",
+    "rawSpec": "1.1.5",
+    "saveSpec": null,
+    "fetchSpec": "1.1.5"
   },
-  "main": "lib/ip",
+  "_requiredBy": [
+    "/dns-packet",
+    "/socks",
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+  "_spec": "1.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Fedor Indutny",
+    "email": "fedor@indutny.com"
+  },
+  "bugs": {
+    "url": "https://github.com/indutny/node-ip/issues"
+  },
+  "description": "[![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)",
   "devDependencies": {
     "jscs": "^2.1.1",
@@ -14,8 +44,16 @@
     "mocha": "~1.3.2"
   },
+  "homepage": "https://github.com/indutny/node-ip",
+  "license": "MIT",
+  "main": "lib/ip",
+  "name": "ip",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/indutny/node-ip.git"
+  },
   "scripts": {
-    "test": "jscs lib/*.js test/*.js && jshint lib/*.js && mocha --reporter spec test/*-test.js",
-    "fix": "jscs lib/*.js test/*.js --fix"
+    "fix": "jscs lib/*.js test/*.js --fix",
+    "test": "jscs lib/*.js test/*.js && jshint lib/*.js && mocha --reporter spec test/*-test.js"
   },
-  "license": "MIT"
+  "version": "1.1.5"
 }
Index: trip-planner-front/node_modules/ipaddr.js/package.json
===================================================================
--- trip-planner-front/node_modules/ipaddr.js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ipaddr.js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,42 @@
 {
-  "name": "ipaddr.js",
-  "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.",
-  "version": "1.9.1",
-  "author": "whitequark <whitequark@whitequark.org>",
-  "directories": {
-    "lib": "./lib"
+  "_args": [
+    [
+      "ipaddr.js@1.9.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ipaddr.js@1.9.1",
+  "_id": "ipaddr.js@1.9.1",
+  "_inBundle": false,
+  "_integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+  "_location": "/ipaddr.js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ipaddr.js@1.9.1",
+    "name": "ipaddr.js",
+    "escapedName": "ipaddr.js",
+    "rawSpec": "1.9.1",
+    "saveSpec": null,
+    "fetchSpec": "1.9.1"
+  },
+  "_requiredBy": [
+    "/internal-ip",
+    "/proxy-addr"
+  ],
+  "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+  "_spec": "1.9.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "whitequark",
+    "email": "whitequark@whitequark.org"
+  },
+  "bugs": {
+    "url": "https://github.com/whitequark/ipaddr.js/issues"
   },
   "dependencies": {},
+  "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.",
   "devDependencies": {
     "coffee-script": "~1.12.6",
@@ -13,6 +44,9 @@
     "uglify-js": "~3.0.19"
   },
-  "scripts": {
-    "test": "cake build test"
+  "directories": {
+    "lib": "./lib"
+  },
+  "engines": {
+    "node": ">= 0.10"
   },
   "files": [
@@ -21,4 +55,5 @@
     "ipaddr.min.js"
   ],
+  "homepage": "https://github.com/whitequark/ipaddr.js#readme",
   "keywords": [
     "ip",
@@ -26,10 +61,15 @@
     "ipv6"
   ],
-  "repository": "git://github.com/whitequark/ipaddr.js",
+  "license": "MIT",
   "main": "./lib/ipaddr.js",
-  "engines": {
-    "node": ">= 0.10"
+  "name": "ipaddr.js",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/whitequark/ipaddr.js.git"
   },
-  "license": "MIT",
-  "types": "./lib/ipaddr.js.d.ts"
+  "scripts": {
+    "test": "cake build test"
+  },
+  "types": "./lib/ipaddr.js.d.ts",
+  "version": "1.9.1"
 }
Index: trip-planner-front/node_modules/is-absolute-url/package.json
===================================================================
--- trip-planner-front/node_modules/is-absolute-url/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-absolute-url/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,72 @@
 {
-	"name": "is-absolute-url",
-	"version": "3.0.3",
-	"description": "Check if a URL is absolute",
-	"license": "MIT",
-	"repository": "sindresorhus/is-absolute-url",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"url",
-		"absolute",
-		"relative",
-		"uri",
-		"is",
-		"check"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-absolute-url@3.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-absolute-url@3.0.3",
+  "_id": "is-absolute-url@3.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+  "_location": "/is-absolute-url",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-absolute-url@3.0.3",
+    "name": "is-absolute-url",
+    "escapedName": "is-absolute-url",
+    "rawSpec": "3.0.3",
+    "saveSpec": null,
+    "fetchSpec": "3.0.3"
+  },
+  "_requiredBy": [
+    "/postcss-normalize-url",
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+  "_spec": "3.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-absolute-url/issues"
+  },
+  "description": "Check if a URL is absolute",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-absolute-url#readme",
+  "keywords": [
+    "url",
+    "absolute",
+    "relative",
+    "uri",
+    "is",
+    "check"
+  ],
+  "license": "MIT",
+  "name": "is-absolute-url",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-absolute-url.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.0.3"
 }
Index: trip-planner-front/node_modules/is-accessor-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/is-accessor-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-accessor-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,64 @@
 {
-  "name": "is-accessor-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Rouven Weßling (www.rouvenwessling.de)"
+  "_args": [
+    [
+      "is-accessor-descriptor@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-accessor-descriptor",
+  "_development": true,
+  "_from": "is-accessor-descriptor@1.0.0",
+  "_id": "is-accessor-descriptor@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+  "_location": "/is-accessor-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-accessor-descriptor@1.0.0",
+    "name": "is-accessor-descriptor",
+    "escapedName": "is-accessor-descriptor",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Rouven Weßling",
+      "url": "www.rouvenwessling.de"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "kind-of": "^6.0.0"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
   "keywords": [
     "accessor",
@@ -49,4 +79,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-accessor-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -70,4 +110,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/is-arguments/package.json
===================================================================
--- trip-planner-front/node_modules/is-arguments/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-arguments/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,91 +1,120 @@
 {
-	"name": "is-arguments",
-	"version": "1.1.1",
-	"description": "Is this an arguments object? It's a harder question than you think.",
-	"author": {
-		"name": "Jordan Harband",
-		"email": "ljharb@gmail.com",
-		"url": "http://ljharb.codes"
-	},
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"contributors": [
-		{
-			"name": "Jordan Harband",
-			"email": "ljharb@gmail.com",
-			"url": "http://ljharb.codes"
-		}
-	],
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"prepublishOnly": "safe-publish-latest",
-		"prepublish": "not-in-publish || npm run prepublishOnly",
-		"pretest": "npm run --silent lint",
-		"test": "npm run tests-only",
-		"tests-only": "nyc tape 'test/**/*.js'",
-		"posttest": "npx aud --production",
-		"lint": "eslint .",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/inspect-js/is-arguments.git"
-	},
-	"bugs": {
-		"url": "https://github.com/inspect-js/is-arguments/issues"
-	},
-	"homepage": "https://github.com/inspect-js/is-arguments",
-	"keywords": [
-		"arguments",
-		"js",
-		"javascript",
-		"is-arguments",
-		"is",
-		"object"
-	],
-	"dependencies": {
-		"call-bind": "^1.0.2",
-		"has-tostringtag": "^1.0.0"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.6.0",
-		"aud": "^1.1.5",
-		"auto-changelog": "^2.3.0",
-		"eslint": "^7.32.0",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.3.0"
-	},
-	"testling": {
-		"files": "test.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "is-arguments@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-arguments@1.1.1",
+  "_id": "is-arguments@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+  "_location": "/is-arguments",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-arguments@1.1.1",
+    "name": "is-arguments",
+    "escapedName": "is-arguments",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/deep-equal"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com",
+    "url": "http://ljharb.codes"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/is-arguments/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jordan Harband",
+      "email": "ljharb@gmail.com",
+      "url": "http://ljharb.codes"
+    }
+  ],
+  "dependencies": {
+    "call-bind": "^1.0.2",
+    "has-tostringtag": "^1.0.0"
+  },
+  "description": "Is this an arguments object? It's a harder question than you think.",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.6.0",
+    "aud": "^1.1.5",
+    "auto-changelog": "^2.3.0",
+    "eslint": "^7.32.0",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.3.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/inspect-js/is-arguments",
+  "keywords": [
+    "arguments",
+    "js",
+    "javascript",
+    "is-arguments",
+    "is",
+    "object"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-arguments",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inspect-js/is-arguments.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "posttest": "npx aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "not-in-publish || npm run prepublishOnly",
+    "prepublishOnly": "safe-publish-latest",
+    "pretest": "npm run --silent lint",
+    "test": "npm run tests-only",
+    "tests-only": "nyc tape 'test/**/*.js'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "testling": {
+    "files": "test.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/is-arrayish/package.json
===================================================================
--- trip-planner-front/node_modules/is-arrayish/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-arrayish/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,49 @@
 {
-  "name": "is-arrayish",
+  "_args": [
+    [
+      "is-arrayish@0.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-arrayish@0.2.1",
+  "_id": "is-arrayish@0.2.1",
+  "_inBundle": false,
+  "_integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+  "_location": "/is-arrayish",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-arrayish@0.2.1",
+    "name": "is-arrayish",
+    "escapedName": "is-arrayish",
+    "rawSpec": "0.2.1",
+    "saveSpec": null,
+    "fetchSpec": "0.2.1"
+  },
+  "_requiredBy": [
+    "/error-ex"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+  "_spec": "0.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Qix",
+    "url": "http://github.com/qix-"
+  },
+  "bugs": {
+    "url": "https://github.com/qix-/node-is-arrayish/issues"
+  },
   "description": "Determines if an object can be used as an array",
-  "version": "0.2.1",
-  "author": "Qix (http://github.com/qix-)",
+  "devDependencies": {
+    "coffee-script": "^1.9.3",
+    "coveralls": "^2.11.2",
+    "istanbul": "^0.3.17",
+    "mocha": "^2.2.5",
+    "should": "^7.0.1",
+    "xo": "^0.6.1"
+  },
+  "homepage": "https://github.com/qix-/node-is-arrayish#readme",
   "keywords": [
     "is",
@@ -16,19 +58,13 @@
   ],
   "license": "MIT",
+  "name": "is-arrayish",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/qix-/node-is-arrayish.git"
+  },
   "scripts": {
     "pretest": "xo",
     "test": "mocha --compilers coffee:coffee-script/register"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/qix-/node-is-arrayish.git"
-  },
-  "devDependencies": {
-    "coffee-script": "^1.9.3",
-    "coveralls": "^2.11.2",
-    "istanbul": "^0.3.17",
-    "mocha": "^2.2.5",
-    "should": "^7.0.1",
-    "xo": "^0.6.1"
-  }
+  "version": "0.2.1"
 }
Index: trip-planner-front/node_modules/is-binary-path/package.json
===================================================================
--- trip-planner-front/node_modules/is-binary-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-binary-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,76 @@
 {
-	"name": "is-binary-path",
-	"version": "2.1.0",
-	"description": "Check if a file path is a binary file",
-	"license": "MIT",
-	"repository": "sindresorhus/is-binary-path",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"binary",
-		"extensions",
-		"extension",
-		"file",
-		"path",
-		"check",
-		"detect",
-		"is"
-	],
-	"dependencies": {
-		"binary-extensions": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-binary-path@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-binary-path@2.1.0",
+  "_id": "is-binary-path@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+  "_location": "/is-binary-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-binary-path@2.1.0",
+    "name": "is-binary-path",
+    "escapedName": "is-binary-path",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-binary-path/issues"
+  },
+  "dependencies": {
+    "binary-extensions": "^2.0.0"
+  },
+  "description": "Check if a file path is a binary file",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-binary-path#readme",
+  "keywords": [
+    "binary",
+    "extensions",
+    "extension",
+    "file",
+    "path",
+    "check",
+    "detect",
+    "is"
+  ],
+  "license": "MIT",
+  "name": "is-binary-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-binary-path.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/is-buffer/package.json
===================================================================
--- trip-planner-front/node_modules/is-buffer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-buffer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,46 @@
 {
-  "name": "is-buffer",
-  "description": "Determine if an object is a Buffer",
-  "version": "1.1.6",
+  "_args": [
+    [
+      "is-buffer@1.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-buffer@1.1.6",
+  "_id": "is-buffer@1.1.6",
+  "_inBundle": false,
+  "_integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+  "_location": "/is-buffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-buffer@1.1.6",
+    "name": "is-buffer",
+    "escapedName": "is-buffer",
+    "rawSpec": "1.1.6",
+    "saveSpec": null,
+    "fetchSpec": "1.1.6"
+  },
+  "_requiredBy": [
+    "/class-utils/is-accessor-descriptor/kind-of",
+    "/class-utils/is-data-descriptor/kind-of",
+    "/expand-brackets/is-accessor-descriptor/kind-of",
+    "/expand-brackets/is-data-descriptor/kind-of",
+    "/has-values/is-number/kind-of",
+    "/has-values/kind-of",
+    "/http-proxy-middleware/is-number/kind-of",
+    "/object-copy/kind-of",
+    "/snapdragon-util/kind-of",
+    "/snapdragon/is-accessor-descriptor/kind-of",
+    "/snapdragon/is-data-descriptor/kind-of",
+    "/static-extend/is-accessor-descriptor/kind-of",
+    "/static-extend/is-data-descriptor/kind-of",
+    "/to-object-path/kind-of",
+    "/webpack-dev-server/is-number/kind-of"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+  "_spec": "1.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Feross Aboukhadijeh",
@@ -12,4 +52,5 @@
   },
   "dependencies": {},
+  "description": "Determine if an object is a Buffer",
   "devDependencies": {
     "standard": "*",
@@ -17,4 +58,5 @@
     "zuul": "^3.0.0"
   },
+  "homepage": "https://github.com/feross/is-buffer#readme",
   "keywords": [
     "buffer",
@@ -36,4 +78,5 @@
   "license": "MIT",
   "main": "index.js",
+  "name": "is-buffer",
   "repository": {
     "type": "git",
@@ -48,4 +91,5 @@
   "testling": {
     "files": "test/*.js"
-  }
+  },
+  "version": "1.1.6"
 }
Index: trip-planner-front/node_modules/is-core-module/package.json
===================================================================
--- trip-planner-front/node_modules/is-core-module/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-core-module/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,69 +1,101 @@
 {
-	"name": "is-core-module",
-	"version": "2.7.0",
-	"description": "Is this specifier a node.js core module?",
-	"main": "index.js",
-	"sideEffects": false,
-	"exports": {
-		".": [
-			{
-				"default": "./index.js"
-			},
-			"./index.js"
-		],
-		"./package.json": "./package.json"
-	},
-	"scripts": {
-		"prepublish": "not-in-publish || npm run prepublishOnly",
-		"prepublishOnly": "safe-publish-latest",
-		"lint": "eslint .",
-		"pretest": "npm run lint",
-		"tests-only": "tape 'test/**/*.js'",
-		"test": "nyc npm run tests-only",
-		"posttest": "aud --production",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git+https://github.com/inspect-js/is-core-module.git"
-	},
-	"keywords": [
-		"core",
-		"modules",
-		"module",
-		"npm",
-		"node",
-		"dependencies"
-	],
-	"author": "Jordan Harband <ljharb@gmail.com>",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"license": "MIT",
-	"bugs": {
-		"url": "https://github.com/inspect-js/is-core-module/issues"
-	},
-	"homepage": "https://github.com/inspect-js/is-core-module",
-	"dependencies": {
-		"has": "^1.0.3"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^18.0.0",
-		"aud": "^1.1.5",
-		"auto-changelog": "^2.3.0",
-		"eslint": "^7.32.0",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"semver": "^6.3.0",
-		"tape": "^5.3.1"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "is-core-module@2.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-core-module@2.7.0",
+  "_id": "is-core-module@2.7.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==",
+  "_location": "/is-core-module",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-core-module@2.7.0",
+    "name": "is-core-module",
+    "escapedName": "is-core-module",
+    "rawSpec": "2.7.0",
+    "saveSpec": null,
+    "fetchSpec": "2.7.0"
+  },
+  "_requiredBy": [
+    "/resolve"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz",
+  "_spec": "2.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/is-core-module/issues"
+  },
+  "dependencies": {
+    "has": "^1.0.3"
+  },
+  "description": "Is this specifier a node.js core module?",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^18.0.0",
+    "aud": "^1.1.5",
+    "auto-changelog": "^2.3.0",
+    "eslint": "^7.32.0",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "semver": "^6.3.0",
+    "tape": "^5.3.1"
+  },
+  "exports": {
+    ".": [
+      {
+        "default": "./index.js"
+      },
+      "./index.js"
+    ],
+    "./package.json": "./package.json"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/inspect-js/is-core-module",
+  "keywords": [
+    "core",
+    "modules",
+    "module",
+    "npm",
+    "node",
+    "dependencies"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-core-module",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/inspect-js/is-core-module.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "not-in-publish || npm run prepublishOnly",
+    "prepublishOnly": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "nyc npm run tests-only",
+    "tests-only": "tape 'test/**/*.js'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "sideEffects": false,
+  "version": "2.7.0"
 }
Index: trip-planner-front/node_modules/is-data-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/is-data-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-data-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,64 @@
 {
-  "name": "is-data-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Rouven Weßling (www.rouvenwessling.de)"
+  "_args": [
+    [
+      "is-data-descriptor@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-data-descriptor",
+  "_development": true,
+  "_from": "is-data-descriptor@1.0.0",
+  "_id": "is-data-descriptor@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+  "_location": "/is-data-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-data-descriptor@1.0.0",
+    "name": "is-data-descriptor",
+    "escapedName": "is-data-descriptor",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-data-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Rouven Weßling",
+      "url": "www.rouvenwessling.de"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "kind-of": "^6.0.0"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
   "keywords": [
     "accessor",
@@ -49,4 +79,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-data-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -69,4 +109,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/is-date-object/package.json
===================================================================
--- trip-planner-front/node_modules/is-date-object/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-date-object/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,79 +1,114 @@
 {
-	"name": "is-date-object",
-	"version": "1.0.5",
-	"author": "Jordan Harband",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"description": "Is this value a JS Date object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.",
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"prepublishOnly": "safe-publish-latest",
-		"prepublish": "not-in-publish || npm run prepublishOnly",
-		"pretest": "npm run lint",
-		"test": "npm run tests-only && npm run test:corejs",
-		"tests-only": "nyc tape 'test/**/*.js'",
-		"test:corejs": "nyc tape test-corejs.js",
-		"posttest": "aud --production",
-		"lint": "eslint .",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/inspect-js/is-date-object.git"
-	},
-	"keywords": [
-		"Date",
-		"ES6",
-		"toStringTag",
-		"@@toStringTag",
-		"Date object"
-	],
-	"dependencies": {
-		"has-tostringtag": "^1.0.0"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.6.0",
-		"aud": "^1.1.5",
-		"auto-changelog": "^2.3.0",
-		"core-js": "^3.12.0",
-		"eslint": "^7.32.0",
-		"foreach": "^2.0.5",
-		"indexof": "^0.0.1",
-		"is": "^3.3.0",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.3.0"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "is-date-object@1.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-date-object@1.0.5",
+  "_id": "is-date-object@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+  "_location": "/is-date-object",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-date-object@1.0.5",
+    "name": "is-date-object",
+    "escapedName": "is-date-object",
+    "rawSpec": "1.0.5",
+    "saveSpec": null,
+    "fetchSpec": "1.0.5"
+  },
+  "_requiredBy": [
+    "/deep-equal"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+  "_spec": "1.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/is-date-object/issues"
+  },
+  "dependencies": {
+    "has-tostringtag": "^1.0.0"
+  },
+  "description": "Is this value a JS Date object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.6.0",
+    "aud": "^1.1.5",
+    "auto-changelog": "^2.3.0",
+    "core-js": "^3.12.0",
+    "eslint": "^7.32.0",
+    "foreach": "^2.0.5",
+    "indexof": "^0.0.1",
+    "is": "^3.3.0",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.3.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/inspect-js/is-date-object#readme",
+  "keywords": [
+    "Date",
+    "ES6",
+    "toStringTag",
+    "@@toStringTag",
+    "Date object"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-date-object",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inspect-js/is-date-object.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "not-in-publish || npm run prepublishOnly",
+    "prepublishOnly": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only && npm run test:corejs",
+    "test:corejs": "nyc tape test-corejs.js",
+    "tests-only": "nyc tape 'test/**/*.js'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.0.5"
 }
Index: trip-planner-front/node_modules/is-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/is-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,55 @@
 {
-  "name": "is-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
-  "version": "1.0.2",
-  "homepage": "https://github.com/jonschlinkert/is-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "is-descriptor@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-descriptor",
+  "_development": true,
+  "_from": "is-descriptor@1.0.2",
+  "_id": "is-descriptor@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+  "_location": "/is-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-descriptor@1.0.2",
+    "name": "is-descriptor",
+    "escapedName": "is-descriptor",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/base/define-property",
+    "/define-property",
+    "/extglob/define-property",
+    "/snapdragon-node/define-property"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "is-accessor-descriptor": "^1.0.0",
@@ -30,8 +57,16 @@
     "kind-of": "^6.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-descriptor",
   "keywords": [
     "accessor",
@@ -52,4 +87,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -72,4 +117,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/is-docker/package.json
===================================================================
--- trip-planner-front/node_modules/is-docker/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-docker/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,81 @@
 {
-	"name": "is-docker",
-	"version": "2.2.1",
-	"description": "Check if the process is running inside a Docker container",
-	"license": "MIT",
-	"repository": "sindresorhus/is-docker",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"bin": "cli.js",
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"cli.js"
-	],
-	"keywords": [
-		"detect",
-		"docker",
-		"dockerized",
-		"container",
-		"inside",
-		"is",
-		"env",
-		"environment",
-		"process"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"sinon": "^7.3.2",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-docker@2.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-docker@2.2.1",
+  "_id": "is-docker@2.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+  "_location": "/is-docker",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-docker@2.2.1",
+    "name": "is-docker",
+    "escapedName": "is-docker",
+    "rawSpec": "2.2.1",
+    "saveSpec": null,
+    "fetchSpec": "2.2.1"
+  },
+  "_requiredBy": [
+    "/is-wsl",
+    "/open"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+  "_spec": "2.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bin": {
+    "is-docker": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-docker/issues"
+  },
+  "description": "Check if the process is running inside a Docker container",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "sinon": "^7.3.2",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "cli.js"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/is-docker#readme",
+  "keywords": [
+    "detect",
+    "docker",
+    "dockerized",
+    "container",
+    "inside",
+    "is",
+    "env",
+    "environment",
+    "process"
+  ],
+  "license": "MIT",
+  "name": "is-docker",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-docker.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.1"
 }
Index: trip-planner-front/node_modules/is-extendable/package.json
===================================================================
--- trip-planner-front/node_modules/is-extendable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-extendable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,56 @@
 {
-  "name": "is-extendable",
-  "description": "Returns true if a value is a plain object, array or function.",
-  "version": "1.0.1",
-  "homepage": "https://github.com/jonschlinkert/is-extendable",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-extendable",
+  "_args": [
+    [
+      "is-extendable@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-extendable@1.0.1",
+  "_id": "is-extendable@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+  "_location": "/is-extendable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-extendable@1.0.1",
+    "name": "is-extendable",
+    "escapedName": "is-extendable",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/extend-shallow",
+    "/mixin-deep"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-extendable/issues"
   },
-  "license": "MIT",
+  "dependencies": {
+    "is-plain-object": "^2.0.4"
+  },
+  "description": "Returns true if a value is a plain object, array or function.",
+  "devDependencies": {
+    "gulp-format-md": "^1.0.0",
+    "mocha": "^3.4.2"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.js",
     "index.d.ts"
   ],
-  "main": "index.js",
-  "types": "index.d.ts",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "dependencies": {
-    "is-plain-object": "^2.0.4"
-  },
-  "devDependencies": {
-    "gulp-format-md": "^1.0.0",
-    "mocha": "^3.4.2"
-  },
+  "homepage": "https://github.com/jonschlinkert/is-extendable",
   "keywords": [
     "array",
@@ -43,4 +67,15 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-extendable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-extendable.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "types": "index.d.ts",
   "verb": {
     "related": {
@@ -64,4 +99,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/is-extglob/package.json
===================================================================
--- trip-planner-front/node_modules/is-extglob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-extglob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,52 @@
 {
-  "name": "is-extglob",
-  "description": "Returns true if a string has an extglob.",
-  "version": "2.1.1",
-  "homepage": "https://github.com/jonschlinkert/is-extglob",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-extglob",
+  "_args": [
+    [
+      "is-extglob@2.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-extglob@2.1.1",
+  "_id": "is-extglob@2.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+  "_location": "/is-extglob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-extglob@2.1.1",
+    "name": "is-extglob",
+    "escapedName": "is-extglob",
+    "rawSpec": "2.1.1",
+    "saveSpec": null,
+    "fetchSpec": "2.1.1"
+  },
+  "_requiredBy": [
+    "/is-glob",
+    "/webpack-dev-server/glob-parent/is-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+  "_spec": "2.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-extglob/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Returns true if a string has an extglob.",
   "devDependencies": {
     "gulp-format-md": "^0.1.10",
     "mocha": "^3.0.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-extglob",
   "keywords": [
     "bash",
@@ -43,4 +68,14 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-extglob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-extglob.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -66,4 +101,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.1.1"
 }
Index: trip-planner-front/node_modules/is-fullwidth-code-point/package.json
===================================================================
--- trip-planner-front/node_modules/is-fullwidth-code-point/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-fullwidth-code-point/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,78 @@
 {
-	"name": "is-fullwidth-code-point",
-	"version": "3.0.0",
-	"description": "Check if the character represented by a given Unicode code point is fullwidth",
-	"license": "MIT",
-	"repository": "sindresorhus/is-fullwidth-code-point",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd-check"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"fullwidth",
-		"full-width",
-		"full",
-		"width",
-		"unicode",
-		"character",
-		"string",
-		"codepoint",
-		"code",
-		"point",
-		"is",
-		"detect",
-		"check"
-	],
-	"devDependencies": {
-		"ava": "^1.3.1",
-		"tsd-check": "^0.5.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-fullwidth-code-point@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-fullwidth-code-point@3.0.0",
+  "_id": "is-fullwidth-code-point@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+  "_location": "/is-fullwidth-code-point",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-fullwidth-code-point@3.0.0",
+    "name": "is-fullwidth-code-point",
+    "escapedName": "is-fullwidth-code-point",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/string-width"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+  },
+  "description": "Check if the character represented by a given Unicode code point is fullwidth",
+  "devDependencies": {
+    "ava": "^1.3.1",
+    "tsd-check": "^0.5.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+  "keywords": [
+    "fullwidth",
+    "full-width",
+    "full",
+    "width",
+    "unicode",
+    "character",
+    "string",
+    "codepoint",
+    "code",
+    "point",
+    "is",
+    "detect",
+    "check"
+  ],
+  "license": "MIT",
+  "name": "is-fullwidth-code-point",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd-check"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/is-glob/package.json
===================================================================
--- trip-planner-front/node_modules/is-glob/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-glob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,72 @@
 {
-  "name": "is-glob",
-  "description": "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.",
-  "version": "4.0.3",
-  "homepage": "https://github.com/micromatch/is-glob",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Daniel Perez (https://tuvistavie.com)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "is-glob@4.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/is-glob",
+  "_development": true,
+  "_from": "is-glob@4.0.3",
+  "_id": "is-glob@4.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+  "_location": "/is-glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-glob@4.0.3",
+    "name": "is-glob",
+    "escapedName": "is-glob",
+    "rawSpec": "4.0.3",
+    "saveSpec": null,
+    "fetchSpec": "4.0.3"
+  },
+  "_requiredBy": [
+    "/chokidar",
+    "/copy-webpack-plugin/glob-parent",
+    "/glob-parent",
+    "/http-proxy-middleware",
+    "/webpack-dev-server/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+  "_spec": "4.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/is-glob/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Daniel Perez",
+      "url": "https://tuvistavie.com"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha && node benchmark.js"
-  },
   "dependencies": {
     "is-extglob": "^2.1.1"
   },
+  "description": "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a better user experience.",
   "devDependencies": {
     "gulp-format-md": "^0.1.10",
     "mocha": "^3.0.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/micromatch/is-glob",
   "keywords": [
     "bash",
@@ -51,4 +88,14 @@
     "test"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-glob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/is-glob.git"
+  },
+  "scripts": {
+    "test": "mocha && node benchmark.js"
+  },
   "verb": {
     "layout": "default",
@@ -78,4 +125,5 @@
       "vinyl"
     ]
-  }
+  },
+  "version": "4.0.3"
 }
Index: trip-planner-front/node_modules/is-interactive/package.json
===================================================================
--- trip-planner-front/node_modules/is-interactive/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-interactive/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,38 +1,74 @@
 {
-	"name": "is-interactive",
-	"version": "1.0.0",
-	"description": "Check if stdout or stderr is interactive",
-	"license": "MIT",
-	"repository": "sindresorhus/is-interactive",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"interactive",
-		"stdout",
-		"stderr",
-		"detect",
-		"is",
-		"terminal",
-		"shell",
-		"tty"
-	],
-	"devDependencies": {
-		"@types/node": "^12.0.12",
-		"ava": "^2.1.0",
-		"tsd": "^0.7.3",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-interactive@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-interactive@1.0.0",
+  "_id": "is-interactive@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+  "_location": "/is-interactive",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-interactive@1.0.0",
+    "name": "is-interactive",
+    "escapedName": "is-interactive",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-interactive/issues"
+  },
+  "description": "Check if stdout or stderr is interactive",
+  "devDependencies": {
+    "@types/node": "^12.0.12",
+    "ava": "^2.1.0",
+    "tsd": "^0.7.3",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-interactive#readme",
+  "keywords": [
+    "interactive",
+    "stdout",
+    "stderr",
+    "detect",
+    "is",
+    "terminal",
+    "shell",
+    "tty"
+  ],
+  "license": "MIT",
+  "name": "is-interactive",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-interactive.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/is-lambda/package.json
===================================================================
--- trip-planner-front/node_modules/is-lambda/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-lambda/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,51 @@
 {
-  "name": "is-lambda",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "is-lambda@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-lambda@1.0.1",
+  "_id": "is-lambda@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=",
+  "_location": "/is-lambda",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-lambda@1.0.1",
+    "name": "is-lambda",
+    "escapedName": "is-lambda",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Thomas Watson Steen",
+    "email": "w@tson.dk",
+    "url": "https://twitter.com/wa7son"
+  },
+  "bugs": {
+    "url": "https://github.com/watson/is-lambda/issues"
+  },
+  "coordinates": [
+    37.3859955,
+    -122.0838831
+  ],
+  "dependencies": {},
   "description": "Detect if your code is running on an AWS Lambda server",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {
     "clear-require": "^1.0.1",
     "standard": "^10.0.2"
   },
-  "scripts": {
-    "test": "standard && node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/watson/is-lambda.git"
-  },
+  "homepage": "https://github.com/watson/is-lambda",
   "keywords": [
     "aws",
@@ -23,13 +55,14 @@
     "detect"
   ],
-  "author": "Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/watson/is-lambda/issues"
+  "main": "index.js",
+  "name": "is-lambda",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/watson/is-lambda.git"
   },
-  "homepage": "https://github.com/watson/is-lambda",
-  "coordinates": [
-    37.3859955,
-    -122.0838831
-  ]
+  "scripts": {
+    "test": "standard && node test.js"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/is-number/package.json
===================================================================
--- trip-planner-front/node_modules/is-number/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-number/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,54 @@
 {
-  "name": "is-number",
-  "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.",
-  "version": "7.0.0",
-  "homepage": "https://github.com/jonschlinkert/is-number",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Olsten Larck (https://i.am.charlike.online)",
-    "Rouven Weßling (www.rouvenwessling.de)"
+  "_args": [
+    [
+      "is-number@7.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-number",
+  "_development": true,
+  "_from": "is-number@7.0.0",
+  "_id": "is-number@7.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+  "_location": "/is-number",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-number@7.0.0",
+    "name": "is-number",
+    "escapedName": "is-number",
+    "rawSpec": "7.0.0",
+    "saveSpec": null,
+    "fetchSpec": "7.0.0"
+  },
+  "_requiredBy": [
+    "/to-regex-range"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+  "_spec": "7.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-number/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Olsten Larck",
+      "url": "https://i.am.charlike.online"
+    },
+    {
+      "name": "Rouven Weßling",
+      "url": "www.rouvenwessling.de"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.12.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.",
   "devDependencies": {
     "ansi": "^0.3.1",
@@ -31,4 +57,11 @@
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.12.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-number",
   "keywords": [
     "cast",
@@ -59,4 +92,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-number",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-number.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -79,4 +122,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "7.0.0"
 }
Index: trip-planner-front/node_modules/is-path-cwd/package.json
===================================================================
--- trip-planner-front/node_modules/is-path-cwd/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-path-cwd/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,72 @@
 {
-	"name": "is-path-cwd",
-	"version": "2.2.0",
-	"description": "Check if a path is the current working directory",
-	"license": "MIT",
-	"repository": "sindresorhus/is-path-cwd",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"path",
-		"cwd",
-		"pwd",
-		"check",
-		"filepath",
-		"file",
-		"folder"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-path-cwd@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-path-cwd@2.2.0",
+  "_id": "is-path-cwd@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+  "_location": "/is-path-cwd",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-path-cwd@2.2.0",
+    "name": "is-path-cwd",
+    "escapedName": "is-path-cwd",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-path-cwd/issues"
+  },
+  "description": "Check if a path is the current working directory",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-path-cwd#readme",
+  "keywords": [
+    "path",
+    "cwd",
+    "pwd",
+    "check",
+    "filepath",
+    "file",
+    "folder"
+  ],
+  "license": "MIT",
+  "name": "is-path-cwd",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-path-cwd.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/is-path-in-cwd/package.json
===================================================================
--- trip-planner-front/node_modules/is-path-in-cwd/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-path-in-cwd/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,77 @@
 {
-	"name": "is-path-in-cwd",
-	"version": "2.1.0",
-	"description": "Check if a path is in the current working directory",
-	"license": "MIT",
-	"repository": "sindresorhus/is-path-in-cwd",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"path",
-		"cwd",
-		"pwd",
-		"check",
-		"filepath",
-		"file",
-		"folder",
-		"in",
-		"inside"
-	],
-	"dependencies": {
-		"is-path-inside": "^2.1.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-path-in-cwd@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-path-in-cwd@2.1.0",
+  "_id": "is-path-in-cwd@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+  "_location": "/is-path-in-cwd",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-path-in-cwd@2.1.0",
+    "name": "is-path-in-cwd",
+    "escapedName": "is-path-in-cwd",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/del"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-path-in-cwd/issues"
+  },
+  "dependencies": {
+    "is-path-inside": "^2.1.0"
+  },
+  "description": "Check if a path is in the current working directory",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-path-in-cwd#readme",
+  "keywords": [
+    "path",
+    "cwd",
+    "pwd",
+    "check",
+    "filepath",
+    "file",
+    "folder",
+    "in",
+    "inside"
+  ],
+  "license": "MIT",
+  "name": "is-path-in-cwd",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-path-in-cwd.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/is-path-inside/package.json
===================================================================
--- trip-planner-front/node_modules/is-path-inside/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-path-inside/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,75 @@
 {
-	"name": "is-path-inside",
-	"version": "2.1.0",
-	"description": "Check if a path is inside another path",
-	"license": "MIT",
-	"repository": "sindresorhus/is-path-inside",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"path",
-		"inside",
-		"folder",
-		"directory",
-		"dir",
-		"file",
-		"resolve"
-	],
-	"dependencies": {
-		"path-is-inside": "^1.0.2"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-path-inside@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-path-inside@2.1.0",
+  "_id": "is-path-inside@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+  "_location": "/is-path-inside",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-path-inside@2.1.0",
+    "name": "is-path-inside",
+    "escapedName": "is-path-inside",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/is-path-in-cwd"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-path-inside/issues"
+  },
+  "dependencies": {
+    "path-is-inside": "^1.0.2"
+  },
+  "description": "Check if a path is inside another path",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-path-inside#readme",
+  "keywords": [
+    "path",
+    "inside",
+    "folder",
+    "directory",
+    "dir",
+    "file",
+    "resolve"
+  ],
+  "license": "MIT",
+  "name": "is-path-inside",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-path-inside.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/is-plain-object/package.json
===================================================================
--- trip-planner-front/node_modules/is-plain-object/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-plain-object/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,62 @@
 {
-  "name": "is-plain-object",
-  "description": "Returns true if an object was created by the `Object` constructor.",
-  "version": "2.0.4",
-  "homepage": "https://github.com/jonschlinkert/is-plain-object",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Osman Nuri Okumuş (http://onokumus.com)",
-    "Steven Vachon (https://svachon.com)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "is-plain-object@2.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-plain-object",
+  "_development": true,
+  "_from": "is-plain-object@2.0.4",
+  "_id": "is-plain-object@2.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+  "_location": "/is-plain-object",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-plain-object@2.0.4",
+    "name": "is-plain-object",
+    "escapedName": "is-plain-object",
+    "rawSpec": "2.0.4",
+    "saveSpec": null,
+    "fetchSpec": "2.0.4"
+  },
+  "_requiredBy": [
+    "/clone-deep",
+    "/is-extendable",
+    "/set-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+  "_spec": "2.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-plain-object/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.d.ts",
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Osman Nuri Okumuş",
+      "url": "http://onokumus.com"
+    },
+    {
+      "name": "Steven Vachon",
+      "url": "https://svachon.com"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "browserify": "browserify index.js --standalone isPlainObject | uglifyjs --compress --mangle -o browser/is-plain-object.js",
-    "test_browser": "mocha-phantomjs test/browser.html",
-    "test_node": "mocha",
-    "test": "npm run test_node && npm run browserify && npm run test_browser"
-  },
   "dependencies": {
     "isobject": "^3.0.1"
   },
+  "description": "Returns true if an object was created by the `Object` constructor.",
   "devDependencies": {
     "browserify": "^14.4.0",
@@ -42,4 +68,12 @@
     "uglify-js": "^3.0.24"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.d.ts",
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-plain-object",
   "keywords": [
     "check",
@@ -56,4 +90,17 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-plain-object",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-plain-object.git"
+  },
+  "scripts": {
+    "browserify": "browserify index.js --standalone isPlainObject | uglifyjs --compress --mangle -o browser/is-plain-object.js",
+    "test": "npm run test_node && npm run browserify && npm run test_browser",
+    "test_browser": "mocha-phantomjs test/browser.html",
+    "test_node": "mocha"
+  },
   "types": "index.d.ts",
   "verb": {
@@ -76,4 +123,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "2.0.4"
 }
Index: trip-planner-front/node_modules/is-regex/package.json
===================================================================
--- trip-planner-front/node_modules/is-regex/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-regex/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,86 +1,118 @@
 {
-	"name": "is-regex",
-	"version": "1.1.4",
-	"description": "Is this value a JS regex? Works cross-realm/iframe, and despite ES6 @@toStringTag",
-	"author": "Jordan Harband <ljharb@gmail.com>",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"prepublishOnly": "safe-publish-latest",
-		"prepublish": "not-in-publish || npm run prepublishOnly",
-		"pretest": "npm run lint",
-		"test": "npm run tests-only && npm run test:harmony",
-		"tests-only": "nyc node test",
-		"test:harmony": "nyc node --harmony --es-staging test",
-		"test:corejs": "nyc tape test-corejs.js",
-		"posttest": "npx aud --production",
-		"lint": "eslint .",
-		"eccheck": "eclint check *.js **/*.js > /dev/null",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/inspect-js/is-regex.git"
-	},
-	"bugs": {
-		"url": "https://github.com/inspect-js/is-regex/issues"
-	},
-	"homepage": "https://github.com/inspect-js/is-regex",
-	"keywords": [
-		"regex",
-		"regexp",
-		"is",
-		"regular expression",
-		"regular",
-		"expression"
-	],
-	"dependencies": {
-		"call-bind": "^1.0.2",
-		"has-tostringtag": "^1.0.0"
-	},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^17.6.0",
-		"aud": "^1.1.5",
-		"auto-changelog": "^2.3.0",
-		"core-js": "^3.16.0",
-		"eclint": "^2.8.1",
-		"eslint": "^7.32.0",
-		"foreach": "^2.0.5",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.3.0"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "is-regex@1.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-regex@1.1.4",
+  "_id": "is-regex@1.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+  "_location": "/is-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-regex@1.1.4",
+    "name": "is-regex",
+    "escapedName": "is-regex",
+    "rawSpec": "1.1.4",
+    "saveSpec": null,
+    "fetchSpec": "1.1.4"
+  },
+  "_requiredBy": [
+    "/deep-equal"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+  "_spec": "1.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/inspect-js/is-regex/issues"
+  },
+  "dependencies": {
+    "call-bind": "^1.0.2",
+    "has-tostringtag": "^1.0.0"
+  },
+  "description": "Is this value a JS regex? Works cross-realm/iframe, and despite ES6 @@toStringTag",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^17.6.0",
+    "aud": "^1.1.5",
+    "auto-changelog": "^2.3.0",
+    "core-js": "^3.16.0",
+    "eclint": "^2.8.1",
+    "eslint": "^7.32.0",
+    "foreach": "^2.0.5",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.3.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/inspect-js/is-regex",
+  "keywords": [
+    "regex",
+    "regexp",
+    "is",
+    "regular expression",
+    "regular",
+    "expression"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-regex",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inspect-js/is-regex.git"
+  },
+  "scripts": {
+    "eccheck": "eclint check *.js **/*.js > /dev/null",
+    "lint": "eslint .",
+    "posttest": "npx aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "not-in-publish || npm run prepublishOnly",
+    "prepublishOnly": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only && npm run test:harmony",
+    "test:corejs": "nyc tape test-corejs.js",
+    "test:harmony": "nyc node --harmony --es-staging test",
+    "tests-only": "nyc node test",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.1.4"
 }
Index: trip-planner-front/node_modules/is-resolvable/package.json
===================================================================
--- trip-planner-front/node_modules/is-resolvable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-resolvable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,76 @@
 {
-	"name": "is-resolvable",
-	"version": "1.1.0",
-	"description": "Check if a module ID is resolvable with require()",
-	"repository": "shinnn/is-resolvable",
-	"author": "Shinnosuke Watanabe (https://github.com/shinnn)",
-	"scripts": {
-		"pretest": "eslint --fix --format=codeframe index.js test.js",
-		"test": "node --throw-deprecation --track-heap-objects test.js",
-		"coverage": "istanbul cover --print=both test.js"
-	},
-	"license": "ISC",
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"file",
-		"path",
-		"resolve",
-		"resolvable",
-		"check",
-		"module"
-	],
-	"devDependencies": {
-		"@shinnn/eslint-config-node": "^5.0.0",
-		"eslint": "^4.16.0",
-		"istanbul": "^0.4.5",
-		"tape": "^4.8.0"
-	},
-	"eslintConfig": {
-		"extends": "@shinnn/node",
-		"rules": {
-			"no-var": "off",
-			"prefer-template": "off"
-		}
-	}
+  "_args": [
+    [
+      "is-resolvable@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-resolvable@1.1.0",
+  "_id": "is-resolvable@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+  "_location": "/is-resolvable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-resolvable@1.1.0",
+    "name": "is-resolvable",
+    "escapedName": "is-resolvable",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/cssnano"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Shinnosuke Watanabe",
+    "url": "https://github.com/shinnn"
+  },
+  "bugs": {
+    "url": "https://github.com/shinnn/is-resolvable/issues"
+  },
+  "description": "Check if a module ID is resolvable with require()",
+  "devDependencies": {
+    "@shinnn/eslint-config-node": "^5.0.0",
+    "eslint": "^4.16.0",
+    "istanbul": "^0.4.5",
+    "tape": "^4.8.0"
+  },
+  "eslintConfig": {
+    "extends": "@shinnn/node",
+    "rules": {
+      "no-var": "off",
+      "prefer-template": "off"
+    }
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/shinnn/is-resolvable#readme",
+  "keywords": [
+    "file",
+    "path",
+    "resolve",
+    "resolvable",
+    "check",
+    "module"
+  ],
+  "license": "ISC",
+  "name": "is-resolvable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/shinnn/is-resolvable.git"
+  },
+  "scripts": {
+    "coverage": "istanbul cover --print=both test.js",
+    "pretest": "eslint --fix --format=codeframe index.js test.js",
+    "test": "node --throw-deprecation --track-heap-objects test.js"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/is-stream/package.json
===================================================================
--- trip-planner-front/node_modules/is-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "is-stream",
-  "version": "1.1.0",
-  "description": "Check if something is a Node.js stream",
-  "license": "MIT",
-  "repository": "sindresorhus/is-stream",
+  "_args": [
+    [
+      "is-stream@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-stream@1.1.0",
+  "_id": "is-stream@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+  "_location": "/is-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-stream@1.1.0",
+    "name": "is-stream",
+    "escapedName": "is-stream",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,20 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-stream/issues"
+  },
+  "description": "Check if something is a Node.js stream",
+  "devDependencies": {
+    "ava": "*",
+    "tempfile": "^1.1.0",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/is-stream#readme",
   "keywords": [
     "stream",
@@ -31,8 +62,13 @@
     "is"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "tempfile": "^1.1.0",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "is-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-stream.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/is-typedarray/package.json
===================================================================
--- trip-planner-front/node_modules/is-typedarray/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-typedarray/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,46 @@
 {
-  "name": "is-typedarray",
-  "version": "1.0.0",
+  "_args": [
+    [
+      "is-typedarray@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-typedarray@1.0.0",
+  "_id": "is-typedarray@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+  "_location": "/is-typedarray",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-typedarray@1.0.0",
+    "name": "is-typedarray",
+    "escapedName": "is-typedarray",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Hugh Kennedy",
+    "email": "hughskennedy@gmail.com",
+    "url": "http://hughsk.io/"
+  },
+  "bugs": {
+    "url": "https://github.com/hughsk/is-typedarray/issues"
+  },
+  "dependencies": {},
   "description": "Detect whether or not an object is a Typed Array",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test"
-  },
-  "author": "Hugh Kennedy <hughskennedy@gmail.com> (http://hughsk.io/)",
-  "license": "MIT",
-  "dependencies": {},
   "devDependencies": {
     "tape": "^2.13.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/hughsk/is-typedarray.git"
-  },
+  "homepage": "https://github.com/hughsk/is-typedarray",
   "keywords": [
     "typed",
@@ -24,7 +50,14 @@
     "util"
   ],
-  "bugs": {
-    "url": "https://github.com/hughsk/is-typedarray/issues"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-typedarray",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/hughsk/is-typedarray.git"
   },
-  "homepage": "https://github.com/hughsk/is-typedarray"
+  "scripts": {
+    "test": "node test"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/is-unicode-supported/package.json
===================================================================
--- trip-planner-front/node_modules/is-unicode-supported/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-unicode-supported/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,78 @@
 {
-	"name": "is-unicode-supported",
-	"version": "0.1.0",
-	"description": "Detect whether the terminal supports Unicode",
-	"license": "MIT",
-	"repository": "sindresorhus/is-unicode-supported",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"terminal",
-		"unicode",
-		"detect",
-		"utf8",
-		"console",
-		"shell",
-		"support",
-		"supports",
-		"supported",
-		"check",
-		"detection"
-	],
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"tsd": "^0.14.0",
-		"xo": "^0.38.2"
-	}
+  "_args": [
+    [
+      "is-unicode-supported@0.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-unicode-supported@0.1.0",
+  "_id": "is-unicode-supported@0.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+  "_location": "/is-unicode-supported",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-unicode-supported@0.1.0",
+    "name": "is-unicode-supported",
+    "escapedName": "is-unicode-supported",
+    "rawSpec": "0.1.0",
+    "saveSpec": null,
+    "fetchSpec": "0.1.0"
+  },
+  "_requiredBy": [
+    "/log-symbols",
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+  "_spec": "0.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-unicode-supported/issues"
+  },
+  "description": "Detect whether the terminal supports Unicode",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.38.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/is-unicode-supported#readme",
+  "keywords": [
+    "terminal",
+    "unicode",
+    "detect",
+    "utf8",
+    "console",
+    "shell",
+    "support",
+    "supports",
+    "supported",
+    "check",
+    "detection"
+  ],
+  "license": "MIT",
+  "name": "is-unicode-supported",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-unicode-supported.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "0.1.0"
 }
Index: trip-planner-front/node_modules/is-what/package.json
===================================================================
--- trip-planner-front/node_modules/is-what/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-what/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,50 +1,48 @@
 {
-  "name": "is-what",
-  "sideEffects": false,
-  "version": "3.14.1",
-  "description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
-  "main": "dist/index.cjs.js",
-  "module": "dist/index.esm.js",
-  "typings": "types/index.d.ts",
-  "scripts": {
-    "test": "ava",
-    "jest": "jest",
-    "jest-w": "jest --watchAll",
-    "lint": "tsc --noEmit src/index.ts && eslint . --ext .js,.jsx,.ts,.tsx",
-    "rollup": "rollup -c ./build.js",
-    "build": "rimraf types && rimraf dist && npm run lint && npm run rollup && npm run test && npm run jest",
-    "release": "npm run build && np"
+  "_args": [
+    [
+      "is-what@3.14.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-what@3.14.1",
+  "_id": "is-what@3.14.1",
+  "_inBundle": false,
+  "_integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+  "_location": "/is-what",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-what@3.14.1",
+    "name": "is-what",
+    "escapedName": "is-what",
+    "rawSpec": "3.14.1",
+    "saveSpec": null,
+    "fetchSpec": "3.14.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/mesqueeb/is-what.git"
+  "_requiredBy": [
+    "/copy-anything"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+  "_spec": "3.14.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Luca Ban - Mesqueeb"
   },
-  "keywords": [
-    "javascript",
-    "typescript",
-    "typechecker",
-    "check-type",
-    "javascript-type",
-    "primitive-types",
-    "plain-object",
-    "plain-objects",
-    "class-instance",
-    "class-identifier",
-    "type-checking",
-    "type-checker",
-    "type-check",
-    "define-type",
-    "get-type",
-    "what-type",
-    "is-object",
-    "is-plain-obj",
-    "is-plain-object"
-  ],
-  "author": "Luca Ban - Mesqueeb",
-  "license": "MIT",
+  "ava": {
+    "extensions": [
+      "ts"
+    ],
+    "require": [
+      "tsconfig-paths/register",
+      "ts-node/register"
+    ]
+  },
   "bugs": {
     "url": "https://github.com/mesqueeb/is-what/issues"
   },
-  "homepage": "https://github.com/mesqueeb/is-what#readme",
+  "description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
   "devDependencies": {
     "@babel/core": "^7.12.17",
@@ -71,16 +69,49 @@
     "typescript": "^4.1.5"
   },
-  "ava": {
-    "extensions": [
-      "ts"
-    ],
-    "require": [
-      "tsconfig-paths/register",
-      "ts-node/register"
-    ]
-  },
+  "homepage": "https://github.com/mesqueeb/is-what#readme",
+  "keywords": [
+    "javascript",
+    "typescript",
+    "typechecker",
+    "check-type",
+    "javascript-type",
+    "primitive-types",
+    "plain-object",
+    "plain-objects",
+    "class-instance",
+    "class-identifier",
+    "type-checking",
+    "type-checker",
+    "type-check",
+    "define-type",
+    "get-type",
+    "what-type",
+    "is-object",
+    "is-plain-obj",
+    "is-plain-object"
+  ],
+  "license": "MIT",
+  "main": "dist/index.cjs.js",
+  "module": "dist/index.esm.js",
+  "name": "is-what",
   "np": {
     "yarn": false,
     "branch": "production"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mesqueeb/is-what.git"
+  },
+  "scripts": {
+    "build": "rimraf types && rimraf dist && npm run lint && npm run rollup && npm run test && npm run jest",
+    "jest": "jest",
+    "jest-w": "jest --watchAll",
+    "lint": "tsc --noEmit src/index.ts && eslint . --ext .js,.jsx,.ts,.tsx",
+    "release": "npm run build && np",
+    "rollup": "rollup -c ./build.js",
+    "test": "ava"
+  },
+  "sideEffects": false,
+  "typings": "types/index.d.ts",
+  "version": "3.14.1"
 }
Index: trip-planner-front/node_modules/is-windows/package.json
===================================================================
--- trip-planner-front/node_modules/is-windows/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-windows/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,65 @@
 {
-  "name": "is-windows",
-  "description": "Returns true if the platform is windows. UMD module, works with node.js, commonjs, browser, AMD, electron, etc.",
-  "version": "1.0.2",
-  "homepage": "https://github.com/jonschlinkert/is-windows",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Simen Bekkhus (https://github.com/SimenB)",
-    "刘祺 (gucong.co.cc)"
+  "_args": [
+    [
+      "is-windows@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-windows",
+  "_development": true,
+  "_from": "is-windows@1.0.2",
+  "_id": "is-windows@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+  "_location": "/is-windows",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-windows@1.0.2",
+    "name": "is-windows",
+    "escapedName": "is-windows",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/nanomatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-windows/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Simen Bekkhus",
+      "url": "https://github.com/SimenB"
+    },
+    {
+      "name": "刘祺",
+      "url": "gucong.co.cc"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Returns true if the platform is windows. UMD module, works with node.js, commonjs, browser, AMD, electron, etc.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-windows",
   "keywords": [
     "check",
@@ -44,4 +77,14 @@
     "windows"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-windows",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-windows.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -68,4 +111,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/is-wsl/package.json
===================================================================
--- trip-planner-front/node_modules/is-wsl/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/is-wsl/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,81 @@
 {
-	"name": "is-wsl",
-	"version": "2.2.0",
-	"description": "Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)",
-	"license": "MIT",
-	"repository": "sindresorhus/is-wsl",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"check",
-		"wsl",
-		"windows",
-		"subsystem",
-		"linux",
-		"detect",
-		"bash",
-		"process",
-		"console",
-		"terminal",
-		"is"
-	],
-	"dependencies": {
-		"is-docker": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"clear-module": "^3.2.0",
-		"proxyquire": "^2.1.0",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "is-wsl@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-wsl@2.2.0",
+  "_id": "is-wsl@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+  "_location": "/is-wsl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-wsl@2.2.0",
+    "name": "is-wsl",
+    "escapedName": "is-wsl",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/open"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-wsl/issues"
+  },
+  "dependencies": {
+    "is-docker": "^2.0.0"
+  },
+  "description": "Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "clear-module": "^3.2.0",
+    "proxyquire": "^2.1.0",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-wsl#readme",
+  "keywords": [
+    "check",
+    "wsl",
+    "windows",
+    "subsystem",
+    "linux",
+    "detect",
+    "bash",
+    "process",
+    "console",
+    "terminal",
+    "is"
+  ],
+  "license": "MIT",
+  "name": "is-wsl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-wsl.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/isarray/package.json
===================================================================
--- trip-planner-front/node_modules/isarray/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/isarray/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,50 @@
 {
-  "name": "isarray",
+  "_args": [
+    [
+      "isarray@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "isarray@1.0.0",
+  "_id": "isarray@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+  "_location": "/isarray",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "isarray@1.0.0",
+    "name": "isarray",
+    "escapedName": "isarray",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/are-we-there-yet/readable-stream",
+    "/hpack.js/readable-stream",
+    "/memory-fs/readable-stream",
+    "/unset-value/has-value/isobject",
+    "/webpack-dev-server/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Julian Gruber",
+    "email": "mail@juliangruber.com",
+    "url": "http://juliangruber.com"
+  },
+  "bugs": {
+    "url": "https://github.com/juliangruber/isarray/issues"
+  },
+  "dependencies": {},
   "description": "Array#isArray for older browsers",
-  "version": "1.0.0",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/juliangruber/isarray.git"
-  },
-  "homepage": "https://github.com/juliangruber/isarray",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {
     "tape": "~2.13.4"
   },
+  "homepage": "https://github.com/juliangruber/isarray",
   "keywords": [
     "browser",
@@ -18,10 +52,14 @@
     "array"
   ],
-  "author": {
-    "name": "Julian Gruber",
-    "email": "mail@juliangruber.com",
-    "url": "http://juliangruber.com"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "isarray",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/juliangruber/isarray.git"
   },
-  "license": "MIT",
+  "scripts": {
+    "test": "tape test.js"
+  },
   "testling": {
     "files": "test.js",
@@ -40,6 +78,4 @@
     ]
   },
-  "scripts": {
-    "test": "tape test.js"
-  }
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/isbinaryfile/package.json
===================================================================
--- trip-planner-front/node_modules/isbinaryfile/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/isbinaryfile/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,37 @@
 {
-  "name": "isbinaryfile",
+  "_args": [
+    [
+      "isbinaryfile@4.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "isbinaryfile@4.0.8",
+  "_id": "isbinaryfile@4.0.8",
+  "_inBundle": false,
+  "_integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==",
+  "_location": "/isbinaryfile",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "isbinaryfile@4.0.8",
+    "name": "isbinaryfile",
+    "escapedName": "isbinaryfile",
+    "rawSpec": "4.0.8",
+    "saveSpec": null,
+    "fetchSpec": "4.0.8"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz",
+  "_spec": "4.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/gjtorikian/isBinaryFile/issues"
+  },
+  "dependencies": {},
   "description": "Detects if a file is binary in Node.js. Similar to Perl's -B.",
-  "version": "4.0.8",
-  "keywords": [
-    "text",
-    "binary",
-    "encoding",
-    "istext",
-    "is text",
-    "isbinary",
-    "is binary",
-    "is text or binary",
-    "is text or binary file",
-    "isbinaryfile",
-    "is binary file",
-    "istextfile",
-    "is text file"
-  ],
-  "dependencies": {},
   "devDependencies": {
     "@types/jest": "^23.3.14",
@@ -36,7 +51,23 @@
     "lib/**/*"
   ],
+  "funding": "https://github.com/sponsors/gjtorikian/",
+  "homepage": "https://github.com/gjtorikian/isBinaryFile#readme",
+  "keywords": [
+    "text",
+    "binary",
+    "encoding",
+    "istext",
+    "is text",
+    "isbinary",
+    "is binary",
+    "is text or binary",
+    "is text or binary file",
+    "isbinaryfile",
+    "is binary file",
+    "istextfile",
+    "is text file"
+  ],
   "license": "MIT",
   "main": "lib/index.js",
-  "types": "lib/index.d.ts",
   "maintainers": [
     {
@@ -45,8 +76,8 @@
     }
   ],
-  "funding": "https://github.com/sponsors/gjtorikian/",
+  "name": "isbinaryfile",
   "repository": {
     "type": "git",
-    "url": "https://github.com/gjtorikian/isBinaryFile"
+    "url": "git+https://github.com/gjtorikian/isBinaryFile.git"
   },
   "scripts": {
@@ -54,12 +85,14 @@
     "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
     "lint": "tslint -p tsconfig.json",
+    "postversion": "git push && git push --tags",
     "prepare": "npm run build",
-    "release": "release-it",
     "prepublishOnly": "npm test && npm run lint",
     "preversion": "npm run lint",
+    "release": "release-it",
+    "test": "jest --config jestconfig.json",
     "version": "npm run format && git add -A src",
-    "postversion": "git push && git push --tags",
-    "test": "jest --config jestconfig.json",
     "watch": "tsc -w"
-  }
+  },
+  "types": "lib/index.d.ts",
+  "version": "4.0.8"
 }
Index: trip-planner-front/node_modules/isexe/package.json
===================================================================
--- trip-planner-front/node_modules/isexe/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/isexe/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,43 @@
 {
-  "name": "isexe",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "isexe@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "isexe@2.0.0",
+  "_id": "isexe@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+  "_location": "/isexe",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "isexe@2.0.0",
+    "name": "isexe",
+    "escapedName": "isexe",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/@npmcli/git/which",
+    "/node-gyp/which",
+    "/which"
+  ],
+  "_resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/isexe/issues"
+  },
   "description": "Minimal module to check if a file is executable.",
-  "main": "index.js",
-  "directories": {
-    "test": "test"
-  },
   "devDependencies": {
     "mkdirp": "^0.5.1",
@@ -12,20 +45,22 @@
     "tap": "^10.3.0"
   },
-  "scripts": {
-    "test": "tap test/*.js --100",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
+  "directories": {
+    "test": "test"
   },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+  "homepage": "https://github.com/isaacs/isexe#readme",
+  "keywords": [],
   "license": "ISC",
+  "main": "index.js",
+  "name": "isexe",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/isaacs/isexe.git"
   },
-  "keywords": [],
-  "bugs": {
-    "url": "https://github.com/isaacs/isexe/issues"
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js --100"
   },
-  "homepage": "https://github.com/isaacs/isexe#readme"
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/isobject/package.json
===================================================================
--- trip-planner-front/node_modules/isobject/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/isobject/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,85 @@
 {
-  "name": "isobject",
-  "description": "Returns true if the value is an object and not an array or null.",
-  "version": "3.0.1",
-  "homepage": "https://github.com/jonschlinkert/isobject",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "(https://github.com/LeSuisse)",
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Magnús Dæhlen (https://github.com/magnudae)",
-    "Tom MacWright (https://macwright.org)"
+  "_args": [
+    [
+      "isobject@3.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/isobject",
+  "_development": true,
+  "_from": "isobject@3.0.1",
+  "_id": "isobject@3.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+  "_location": "/isobject",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "isobject@3.0.1",
+    "name": "isobject",
+    "escapedName": "isobject",
+    "rawSpec": "3.0.1",
+    "saveSpec": null,
+    "fetchSpec": "3.0.1"
+  },
+  "_requiredBy": [
+    "/base",
+    "/cache-base",
+    "/class-utils",
+    "/define-property",
+    "/has-value",
+    "/http-proxy-middleware/braces",
+    "/is-plain-object",
+    "/object-visit",
+    "/object.pick",
+    "/snapdragon-node",
+    "/unset-value",
+    "/webpack-dev-server/braces"
+  ],
+  "_resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+  "_spec": "3.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/isobject/issues"
   },
-  "license": "MIT",
+  "contributors": [
+    {
+      "url": "https://github.com/LeSuisse"
+    },
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Magnús Dæhlen",
+      "url": "https://github.com/magnudae"
+    },
+    {
+      "name": "Tom MacWright",
+      "url": "https://macwright.org"
+    }
+  ],
+  "dependencies": {},
+  "description": "Returns true if the value is an object and not an array or null.",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.9",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "index.d.ts",
     "index.js"
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "gulp-format-md": "^0.1.9",
-    "mocha": "^2.4.5"
-  },
+  "homepage": "https://github.com/jonschlinkert/isobject",
   "keywords": [
     "check",
@@ -47,4 +96,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "isobject",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/isobject.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "types": "index.d.ts",
   "verb": {
@@ -71,4 +130,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.0.1"
 }
Index: trip-planner-front/node_modules/isstream/package.json
===================================================================
--- trip-planner-front/node_modules/isstream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/isstream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,48 @@
 {
-  "name": "isstream",
-  "version": "0.1.2",
+  "_args": [
+    [
+      "isstream@0.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "isstream@0.1.2",
+  "_id": "isstream@0.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+  "_location": "/isstream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "isstream@0.1.2",
+    "name": "isstream",
+    "escapedName": "isstream",
+    "rawSpec": "0.1.2",
+    "saveSpec": null,
+    "fetchSpec": "0.1.2"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+  "_spec": "0.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rod Vagg",
+    "email": "rod@vagg.org"
+  },
+  "bugs": {
+    "url": "https://github.com/rvagg/isstream/issues"
+  },
   "description": "Determine if an object is a Stream",
-  "main": "isstream.js",
-  "scripts": {
-    "test": "tar --xform 's/^package/readable-stream-1.0/' -zxf readable-stream-1.0.*.tgz && tar --xform 's/^package/readable-stream-1.1/' -zxf readable-stream-1.1.*.tgz && node test.js; rm -rf readable-stream-1.?/"
+  "devDependencies": {
+    "core-util-is": "~1.0.0",
+    "inherits": "~2.0.1",
+    "isarray": "0.0.1",
+    "string_decoder": "~0.10.x",
+    "tape": "~2.12.3"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/rvagg/isstream.git"
-  },
+  "homepage": "https://github.com/rvagg/isstream",
   "keywords": [
     "stream",
@@ -18,16 +52,14 @@
     "hippo"
   ],
-  "devDependencies": {
-    "tape": "~2.12.3",
-    "core-util-is": "~1.0.0",
-    "isarray": "0.0.1",
-    "string_decoder": "~0.10.x",
-    "inherits": "~2.0.1"
+  "license": "MIT",
+  "main": "isstream.js",
+  "name": "isstream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/rvagg/isstream.git"
   },
-  "author": "Rod Vagg <rod@vagg.org>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/rvagg/isstream/issues"
+  "scripts": {
+    "test": "tar --xform 's/^package/readable-stream-1.0/' -zxf readable-stream-1.0.*.tgz && tar --xform 's/^package/readable-stream-1.1/' -zxf readable-stream-1.1.*.tgz && node test.js; rm -rf readable-stream-1.?/"
   },
-  "homepage": "https://github.com/rvagg/isstream"
+  "version": "0.1.2"
 }
Index: trip-planner-front/node_modules/istanbul-lib-coverage/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-coverage/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-coverage/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,43 @@
 {
-  "name": "istanbul-lib-coverage",
-  "version": "3.0.0",
+  "_args": [
+    [
+      "istanbul-lib-coverage@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "istanbul-lib-coverage@3.0.0",
+  "_id": "istanbul-lib-coverage@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
+  "_location": "/istanbul-lib-coverage",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "istanbul-lib-coverage@3.0.0",
+    "name": "istanbul-lib-coverage",
+    "escapedName": "istanbul-lib-coverage",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-instrument",
+    "/istanbul-lib-report",
+    "/istanbul-lib-source-maps",
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Krishnan Anantheswaran",
+    "email": "kananthmail-github@yahoo.com"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/istanbuljs/issues"
+  },
   "description": "Data library for istanbul coverage objects",
-  "author": "Krishnan Anantheswaran <kananthmail-github@yahoo.com>",
-  "main": "index.js",
-  "files": [
-    "lib",
-    "index.js"
-  ],
-  "scripts": {
-    "test": "nyc --nycrc-path=../../monorepo-per-package-full.js mocha"
-  },
   "devDependencies": {
     "chai": "^4.2.0",
@@ -17,4 +45,13 @@
     "nyc": "^15.0.0-beta.2"
   },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "lib",
+    "index.js"
+  ],
+  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b",
+  "homepage": "https://istanbul.js.org/",
   "karmaDeps": {
     "browserify-istanbul": "^0.2.1",
@@ -27,9 +64,4 @@
     "phantomjs": "^1.9.17"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
-    "directory": "packages/istanbul-lib-coverage"
-  },
   "keywords": [
     "istanbul",
@@ -38,11 +70,14 @@
   ],
   "license": "BSD-3-Clause",
-  "bugs": {
-    "url": "https://github.com/istanbuljs/istanbuljs/issues"
+  "main": "index.js",
+  "name": "istanbul-lib-coverage",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
+    "directory": "packages/istanbul-lib-coverage"
   },
-  "homepage": "https://istanbul.js.org/",
-  "engines": {
-    "node": ">=8"
+  "scripts": {
+    "test": "nyc --nycrc-path=../../monorepo-per-package-full.js mocha"
   },
-  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b"
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-instrument/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/istanbul-lib-instrument/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-instrument"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/istanbul-lib-instrument/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-instrument/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-instrument/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,39 @@
 {
-  "name": "istanbul-lib-instrument",
-  "version": "4.0.3",
-  "description": "Core istanbul API for JS code coverage",
-  "author": "Krishnan Anantheswaran <kananthmail-github@yahoo.com>",
-  "main": "dist/index.js",
-  "files": [
-    "dist"
+  "_args": [
+    [
+      "istanbul-lib-instrument@4.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "release": "babel src --out-dir dist && documentation build -f md -o api.md src",
-    "test": "nyc --nycrc-path=../../monorepo-per-package-nycrc.json --require=@babel/register --include=src mocha",
-    "prepublish": "npm run release"
+  "_development": true,
+  "_from": "istanbul-lib-instrument@4.0.3",
+  "_id": "istanbul-lib-instrument@4.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+  "_location": "/istanbul-lib-instrument",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "istanbul-lib-instrument@4.0.3",
+    "name": "istanbul-lib-instrument",
+    "escapedName": "istanbul-lib-instrument",
+    "rawSpec": "4.0.3",
+    "saveSpec": null,
+    "fetchSpec": "4.0.3"
+  },
+  "_requiredBy": [
+    "/@jsdevtools/coverage-istanbul-loader",
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+  "_spec": "4.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Krishnan Anantheswaran",
+    "email": "kananthmail-github@yahoo.com"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/istanbuljs/issues"
   },
   "dependencies": {
@@ -19,4 +43,5 @@
     "semver": "^6.3.0"
   },
+  "description": "Core istanbul API for JS code coverage",
   "devDependencies": {
     "@babel/cli": "^7.7.5",
@@ -32,14 +57,12 @@
     "nyc": "^15.0.0-beta.2"
   },
-  "license": "BSD-3-Clause",
-  "bugs": {
-    "url": "https://github.com/istanbuljs/istanbuljs/issues"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "dist"
+  ],
+  "gitHead": "2c6f0e24680d050503d404de0ebff53467fefbff",
   "homepage": "https://istanbul.js.org/",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
-    "directory": "packages/istanbul-lib-instrument"
-  },
   "keywords": [
     "coverage",
@@ -48,7 +71,17 @@
     "instrumentation"
   ],
-  "engines": {
-    "node": ">=8"
+  "license": "BSD-3-Clause",
+  "main": "dist/index.js",
+  "name": "istanbul-lib-instrument",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
+    "directory": "packages/istanbul-lib-instrument"
   },
-  "gitHead": "2c6f0e24680d050503d404de0ebff53467fefbff"
+  "scripts": {
+    "prepublish": "npm run release",
+    "release": "babel src --out-dir dist && documentation build -f md -o api.md src",
+    "test": "nyc --nycrc-path=../../monorepo-per-package-nycrc.json --require=@babel/register --include=src mocha"
+  },
+  "version": "4.0.3"
 }
Index: trip-planner-front/node_modules/istanbul-lib-report/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-report/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-report/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/istanbul-lib-report/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-report/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/istanbul-lib-report/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-report/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-report/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "supports-color",
-	"version": "7.2.0",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"import-fresh": "^3.0.0",
-		"xo": "^0.24.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@7.2.0",
+  "_id": "supports-color@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+  "_location": "/istanbul-lib-report/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@7.2.0",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-report"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "import-fresh": "^3.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/istanbul-lib-report/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-report/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-report/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,39 @@
 {
-  "name": "istanbul-lib-report",
-  "version": "3.0.0",
-  "description": "Base reporting library for istanbul",
-  "author": "Krishnan Anantheswaran <kananthmail-github@yahoo.com>",
-  "main": "index.js",
-  "files": [
-    "lib",
-    "index.js"
+  "_args": [
+    [
+      "istanbul-lib-report@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "test": "nyc --nycrc-path=../../monorepo-per-package-full.js mocha"
+  "_development": true,
+  "_from": "istanbul-lib-report@3.0.0",
+  "_id": "istanbul-lib-report@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+  "_location": "/istanbul-lib-report",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "istanbul-lib-report@3.0.0",
+    "name": "istanbul-lib-report",
+    "escapedName": "istanbul-lib-report",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/istanbul-reports",
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Krishnan Anantheswaran",
+    "email": "kananthmail-github@yahoo.com"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/istanbuljs/issues"
   },
   "dependencies": {
@@ -17,4 +42,5 @@
     "supports-color": "^7.1.0"
   },
+  "description": "Base reporting library for istanbul",
   "devDependencies": {
     "chai": "^4.2.0",
@@ -23,14 +49,13 @@
     "rimraf": "^3.0.0"
   },
-  "license": "BSD-3-Clause",
-  "bugs": {
-    "url": "https://github.com/istanbuljs/istanbuljs/issues"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "lib",
+    "index.js"
+  ],
+  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b",
   "homepage": "https://istanbul.js.org/",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
-    "directory": "packages/istanbul-lib-report"
-  },
   "keywords": [
     "istanbul",
@@ -39,7 +64,15 @@
     "lib"
   ],
-  "engines": {
-    "node": ">=8"
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "name": "istanbul-lib-report",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
+    "directory": "packages/istanbul-lib-report"
   },
-  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b"
+  "scripts": {
+    "test": "nyc --nycrc-path=../../monorepo-per-package-full.js mocha"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/istanbul-lib-source-maps/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-source-maps/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-source-maps/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/istanbul-lib-source-maps/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/istanbul-lib-source-maps"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/istanbul-lib-source-maps/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-lib-source-maps/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-lib-source-maps/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,38 @@
 {
-  "name": "istanbul-lib-source-maps",
-  "version": "4.0.0",
-  "description": "Source maps support for istanbul",
-  "author": "Krishnan Anantheswaran <kananthmail-github@yahoo.com>",
-  "main": "index.js",
-  "files": [
-    "lib",
-    "index.js"
+  "_args": [
+    [
+      "istanbul-lib-source-maps@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "test": "nyc --nycrc-path=../../monorepo-per-package-nycrc.json mocha"
+  "_development": true,
+  "_from": "istanbul-lib-source-maps@4.0.0",
+  "_id": "istanbul-lib-source-maps@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==",
+  "_location": "/istanbul-lib-source-maps",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "istanbul-lib-source-maps@4.0.0",
+    "name": "istanbul-lib-source-maps",
+    "escapedName": "istanbul-lib-source-maps",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Krishnan Anantheswaran",
+    "email": "kananthmail-github@yahoo.com"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/istanbuljs/issues"
   },
   "dependencies": {
@@ -17,4 +41,5 @@
     "source-map": "^0.6.1"
   },
+  "description": "Source maps support for istanbul",
   "devDependencies": {
     "chai": "^4.2.0",
@@ -23,14 +48,13 @@
     "ts-node": "^8.5.4"
   },
-  "license": "BSD-3-Clause",
-  "bugs": {
-    "url": "https://github.com/istanbuljs/istanbuljs/issues"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "lib",
+    "index.js"
+  ],
+  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b",
   "homepage": "https://istanbul.js.org/",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
-    "directory": "packages/istanbul-lib-source-maps"
-  },
   "keywords": [
     "istanbul",
@@ -40,7 +64,15 @@
     "maps"
   ],
-  "engines": {
-    "node": ">=8"
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "name": "istanbul-lib-source-maps",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
+    "directory": "packages/istanbul-lib-source-maps"
   },
-  "gitHead": "5319df684b508ff6fb19fe8b9a6147a3c5924e4b"
+  "scripts": {
+    "test": "nyc --nycrc-path=../../monorepo-per-package-nycrc.json mocha"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/istanbul-reports/package.json
===================================================================
--- trip-planner-front/node_modules/istanbul-reports/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/istanbul-reports/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,38 @@
 {
-  "name": "istanbul-reports",
-  "version": "3.0.3",
-  "description": "istanbul reports",
-  "author": "Krishnan Anantheswaran <kananthmail-github@yahoo.com>",
-  "main": "index.js",
-  "files": [
-    "index.js",
-    "lib"
+  "_args": [
+    [
+      "istanbul-reports@3.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "test": "nyc mocha --recursive",
-    "prepare": "webpack --config lib/html-spa/webpack.config.js --mode production",
-    "prepare:watch": "webpack --config lib/html-spa/webpack.config.js --watch --mode development"
+  "_development": true,
+  "_from": "istanbul-reports@3.0.3",
+  "_id": "istanbul-reports@3.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==",
+  "_location": "/istanbul-reports",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "istanbul-reports@3.0.3",
+    "name": "istanbul-reports",
+    "escapedName": "istanbul-reports",
+    "rawSpec": "3.0.3",
+    "saveSpec": null,
+    "fetchSpec": "3.0.3"
+  },
+  "_requiredBy": [
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz",
+  "_spec": "3.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Krishnan Anantheswaran",
+    "email": "kananthmail-github@yahoo.com"
+  },
+  "bugs": {
+    "url": "https://github.com/istanbuljs/istanbuljs/issues"
   },
   "dependencies": {
@@ -18,4 +40,5 @@
     "istanbul-lib-report": "^3.0.0"
   },
+  "description": "istanbul reports",
   "devDependencies": {
     "@babel/core": "^7.7.5",
@@ -33,18 +56,19 @@
     "webpack-cli": "^3.3.10"
   },
-  "license": "BSD-3-Clause",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
-    "directory": "packages/istanbul-reports"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://istanbul.js.org/",
   "keywords": [
     "istanbul",
     "reports"
   ],
-  "bugs": {
-    "url": "https://github.com/istanbuljs/istanbuljs/issues"
-  },
-  "homepage": "https://istanbul.js.org/",
+  "license": "BSD-3-Clause",
+  "main": "index.js",
+  "name": "istanbul-reports",
   "nyc": {
     "exclude": [
@@ -55,6 +79,14 @@
     ]
   },
-  "engines": {
-    "node": ">=8"
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/istanbuljs/istanbuljs.git",
+    "directory": "packages/istanbul-reports"
+  },
+  "scripts": {
+    "prepare": "webpack --config lib/html-spa/webpack.config.js --mode production",
+    "prepare:watch": "webpack --config lib/html-spa/webpack.config.js --watch --mode development",
+    "test": "nyc mocha --recursive"
+  },
+  "version": "3.0.3"
 }
Index: trip-planner-front/node_modules/jasmine-core/package.json
===================================================================
--- trip-planner-front/node_modules/jasmine-core/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jasmine-core/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,45 @@
 {
-  "name": "jasmine-core",
-  "license": "MIT",
-  "version": "3.8.0",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jasmine/jasmine.git"
+  "_args": [
+    [
+      "jasmine-core@3.8.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jasmine-core@3.8.0",
+  "_id": "jasmine-core@3.8.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg==",
+  "_location": "/jasmine-core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jasmine-core@3.8.0",
+    "name": "jasmine-core",
+    "escapedName": "jasmine-core",
+    "rawSpec": "3.8.0",
+    "saveSpec": null,
+    "fetchSpec": "3.8.0"
   },
-  "keywords": [
-    "test",
-    "testing",
-    "jasmine",
-    "tdd",
-    "bdd"
+  "_requiredBy": [
+    "#DEV:/",
+    "/karma-jasmine"
   ],
-  "scripts": {
-    "posttest": "eslint \"src/**/*.js\" \"spec/**/*.js\" && prettier --check \"src/**/*.js\" \"spec/**/*.js\"",
-    "test": "grunt --stack execSpecsInNode",
-    "cleanup": "prettier --write \"src/**/*.js\" \"spec/**/*.js\"",
-    "build": "grunt buildDistribution",
-    "serve": "node spec/support/localJasmineBrowser.js",
-    "serve:performance": "node spec/support/localJasmineBrowser.js jasmine-browser-performance.json",
-    "ci": "node spec/support/ci.js",
-    "ci:performance": "node spec/support/ci.js jasmine-browser-performance.json"
+  "_resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.8.0.tgz",
+  "_spec": "3.8.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browserslist": [
+    "Safari >= 8",
+    "last 2 Chrome versions",
+    "last 2 Firefox versions",
+    "Firefox 68",
+    "last 2 Edge versions",
+    "IE >= 10"
+  ],
+  "bugs": {
+    "url": "https://github.com/jasmine/jasmine/issues"
   },
   "description": "Simple JavaScript testing framework for browsers and node.js",
-  "homepage": "https://jasmine.github.io",
-  "main": "./lib/jasmine-core.js",
-  "files": [
-    "MIT.LICENSE",
-    "README.md",
-    "images/*.{png,svg}",
-    "lib/**/*.{js,css}",
-    "package.json"
-  ],
   "devDependencies": {
     "ejs": "^2.5.5",
@@ -54,7 +62,4 @@
     "shelljs": "^0.8.3",
     "temp": "^0.9.0"
-  },
-  "prettier": {
-    "singleQuote": true
   },
   "eslintConfig": {
@@ -95,11 +100,39 @@
     }
   },
-  "browserslist": [
-    "Safari >= 8",
-    "last 2 Chrome versions",
-    "last 2 Firefox versions",
-    "Firefox 68",
-    "last 2 Edge versions",
-    "IE >= 10"
-  ]
+  "files": [
+    "MIT.LICENSE",
+    "README.md",
+    "images/*.{png,svg}",
+    "lib/**/*.{js,css}",
+    "package.json"
+  ],
+  "homepage": "https://jasmine.github.io",
+  "keywords": [
+    "test",
+    "testing",
+    "jasmine",
+    "tdd",
+    "bdd"
+  ],
+  "license": "MIT",
+  "main": "./lib/jasmine-core.js",
+  "name": "jasmine-core",
+  "prettier": {
+    "singleQuote": true
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jasmine/jasmine.git"
+  },
+  "scripts": {
+    "build": "grunt buildDistribution",
+    "ci": "node spec/support/ci.js",
+    "ci:performance": "node spec/support/ci.js jasmine-browser-performance.json",
+    "cleanup": "prettier --write \"src/**/*.js\" \"spec/**/*.js\"",
+    "posttest": "eslint \"src/**/*.js\" \"spec/**/*.js\" && prettier --check \"src/**/*.js\" \"spec/**/*.js\"",
+    "serve": "node spec/support/localJasmineBrowser.js",
+    "serve:performance": "node spec/support/localJasmineBrowser.js jasmine-browser-performance.json",
+    "test": "grunt --stack execSpecsInNode"
+  },
+  "version": "3.8.0"
 }
Index: trip-planner-front/node_modules/jest-worker/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/jest-worker/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jest-worker/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/jest-worker/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/jest-worker/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/jest-worker/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/jest-worker/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jest-worker/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,58 +1,94 @@
 {
-	"name": "supports-color",
-	"version": "8.1.1",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"funding": "https://github.com/chalk/supports-color?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"exports": {
-		"node": "./index.js",
-		"default": "./browser.js"
-	},
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"import-fresh": "^3.2.2",
-		"xo": "^0.35.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@8.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@8.1.1",
+  "_id": "supports-color@8.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+  "_location": "/jest-worker/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@8.1.1",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "8.1.1",
+    "saveSpec": null,
+    "fetchSpec": "8.1.1"
+  },
+  "_requiredBy": [
+    "/jest-worker"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+  "_spec": "8.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "import-fresh": "^3.2.2",
+    "xo": "^0.35.0"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "exports": {
+    "node": "./index.js",
+    "default": "./browser.js"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "funding": "https://github.com/chalk/supports-color?sponsor=1",
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "8.1.1"
 }
Index: trip-planner-front/node_modules/jest-worker/package.json
===================================================================
--- trip-planner-front/node_modules/jest-worker/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jest-worker/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,35 @@
 {
-  "name": "jest-worker",
-  "version": "27.2.5",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/facebook/jest.git",
-    "directory": "packages/jest-worker"
+  "_args": [
+    [
+      "jest-worker@27.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jest-worker@27.2.5",
+  "_id": "jest-worker@27.2.5",
+  "_inBundle": false,
+  "_integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==",
+  "_location": "/jest-worker",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jest-worker@27.2.5",
+    "name": "jest-worker",
+    "escapedName": "jest-worker",
+    "rawSpec": "27.2.5",
+    "saveSpec": null,
+    "fetchSpec": "27.2.5"
   },
-  "license": "MIT",
-  "main": "./build/index.js",
-  "types": "./build/index.d.ts",
-  "exports": {
-    ".": "./build/index.js",
-    "./package.json": "./package.json"
+  "_requiredBy": [
+    "/css-minimizer-webpack-plugin",
+    "/terser-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz",
+  "_spec": "27.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/facebook/jest/issues"
   },
   "dependencies": {
@@ -19,4 +38,5 @@
     "supports-color": "^8.0.0"
   },
+  "description": "Module for executing heavy tasks under forked processes in parallel, by providing a `Promise` based interface, minimum overhead, and bound workers.",
   "devDependencies": {
     "@types/merge-stream": "^1.1.2",
@@ -29,7 +49,22 @@
     "node": ">= 10.13.0"
   },
+  "exports": {
+    ".": "./build/index.js",
+    "./package.json": "./package.json"
+  },
+  "gitHead": "251b8014e8e3ac8da2fca88b5a1bc401f3b92326",
+  "homepage": "https://github.com/facebook/jest#readme",
+  "license": "MIT",
+  "main": "./build/index.js",
+  "name": "jest-worker",
   "publishConfig": {
     "access": "public"
   },
-  "gitHead": "251b8014e8e3ac8da2fca88b5a1bc401f3b92326"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/facebook/jest.git",
+    "directory": "packages/jest-worker"
+  },
+  "types": "./build/index.d.ts",
+  "version": "27.2.5"
 }
Index: trip-planner-front/node_modules/js-tokens/package.json
===================================================================
--- trip-planner-front/node_modules/js-tokens/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/js-tokens/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,49 @@
 {
-  "name": "js-tokens",
-  "version": "4.0.0",
-  "author": "Simon Lydell",
-  "license": "MIT",
+  "_args": [
+    [
+      "js-tokens@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "js-tokens@4.0.0",
+  "_id": "js-tokens@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+  "_location": "/js-tokens",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "js-tokens@4.0.0",
+    "name": "js-tokens",
+    "escapedName": "js-tokens",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/@babel/highlight"
+  ],
+  "_resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Simon Lydell"
+  },
+  "bugs": {
+    "url": "https://github.com/lydell/js-tokens/issues"
+  },
   "description": "A regex that tokenizes JavaScript.",
+  "devDependencies": {
+    "coffeescript": "2.1.1",
+    "esprima": "4.0.0",
+    "everything.js": "1.0.3",
+    "mocha": "5.0.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/lydell/js-tokens#readme",
   "keywords": [
     "JavaScript",
@@ -12,19 +53,16 @@
     "regex"
   ],
-  "files": [
-    "index.js"
-  ],
-  "repository": "lydell/js-tokens",
+  "license": "MIT",
+  "name": "js-tokens",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lydell/js-tokens.git"
+  },
   "scripts": {
-    "test": "mocha --ui tdd",
+    "build": "node generate-index.js",
+    "dev": "npm run build && npm test",
     "esprima-compare": "node esprima-compare ./index.js everything.js/es5.js",
-    "build": "node generate-index.js",
-    "dev": "npm run build && npm test"
+    "test": "mocha --ui tdd"
   },
-  "devDependencies": {
-    "coffeescript": "2.1.1",
-    "esprima": "4.0.0",
-    "everything.js": "1.0.3",
-    "mocha": "5.0.0"
-  }
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/jsbn/package.json
===================================================================
--- trip-planner-front/node_modules/jsbn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsbn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,41 @@
 {
-  "name": "jsbn",
-  "version": "0.1.1",
+  "_args": [
+    [
+      "jsbn@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsbn@0.1.1",
+  "_id": "jsbn@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+  "_location": "/jsbn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsbn@0.1.1",
+    "name": "jsbn",
+    "escapedName": "jsbn",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/ecc-jsbn",
+    "/sshpk"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tom Wu"
+  },
+  "bugs": {
+    "url": "https://github.com/andyperlitch/jsbn/issues"
+  },
   "description": "The jsbn library is a fast, portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.",
-  "main": "index.js",
-  "scripts": {
-    "test": "mocha test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/andyperlitch/jsbn.git"
-  },
+  "homepage": "https://github.com/andyperlitch/jsbn#readme",
   "keywords": [
     "biginteger",
@@ -17,5 +44,14 @@
     "integer"
   ],
-  "author": "Tom Wu",
-  "license": "MIT"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "jsbn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/andyperlitch/jsbn.git"
+  },
+  "scripts": {
+    "test": "mocha test.js"
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/jsesc/package.json
===================================================================
--- trip-planner-front/node_modules/jsesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,63 @@
 {
-  "name": "jsesc",
-  "version": "2.5.2",
+  "_args": [
+    [
+      "jsesc@2.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsesc@2.5.2",
+  "_id": "jsesc@2.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+  "_location": "/jsesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsesc@2.5.2",
+    "name": "jsesc",
+    "escapedName": "jsesc",
+    "rawSpec": "2.5.2",
+    "saveSpec": null,
+    "fetchSpec": "2.5.2"
+  },
+  "_requiredBy": [
+    "/@babel/generator",
+    "/@babel/traverse/@babel/generator"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+  "_spec": "2.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Bynens",
+    "url": "https://mathiasbynens.be/"
+  },
+  "bin": {
+    "jsesc": "bin/jsesc"
+  },
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/jsesc/issues"
+  },
   "description": "Given some data, jsesc returns the shortest possible stringified & ASCII-safe representation of that data.",
-  "homepage": "https://mths.be/jsesc",
+  "devDependencies": {
+    "coveralls": "^2.11.6",
+    "grunt": "^0.4.5",
+    "grunt-template": "^0.2.3",
+    "istanbul": "^0.4.2",
+    "mocha": "*",
+    "regenerate": "^1.3.0",
+    "requirejs": "^2.1.22"
+  },
   "engines": {
     "node": ">=4"
   },
-  "main": "jsesc.js",
-  "bin": "bin/jsesc",
-  "man": "man/jsesc.1",
+  "files": [
+    "LICENSE-MIT.txt",
+    "jsesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/jsesc",
   "keywords": [
     "buffer",
@@ -22,33 +72,19 @@
   ],
   "license": "MIT",
-  "author": {
-    "name": "Mathias Bynens",
-    "url": "https://mathiasbynens.be/"
-  },
+  "main": "jsesc.js",
+  "man": [
+    "man/jsesc.1"
+  ],
+  "name": "jsesc",
   "repository": {
     "type": "git",
-    "url": "https://github.com/mathiasbynens/jsesc.git"
+    "url": "git+https://github.com/mathiasbynens/jsesc.git"
   },
-  "bugs": "https://github.com/mathiasbynens/jsesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "jsesc.js",
-    "bin/",
-    "man/"
-  ],
   "scripts": {
     "build": "grunt template",
+    "cover": "istanbul cover --report 'html' --verbose --dir 'coverage' 'tests/tests.js'",
     "coveralls": "istanbul cover --verbose --dir 'coverage' 'tests/tests.js' && coveralls < coverage/lcov.info'",
-    "cover": "istanbul cover --report 'html' --verbose --dir 'coverage' 'tests/tests.js'",
     "test": "mocha tests"
   },
-  "devDependencies": {
-    "coveralls": "^2.11.6",
-    "grunt": "^0.4.5",
-    "grunt-template": "^0.2.3",
-    "istanbul": "^0.4.2",
-    "mocha": "*",
-    "regenerate": "^1.3.0",
-    "requirejs": "^2.1.22"
-  }
+  "version": "2.5.2"
 }
Index: trip-planner-front/node_modules/json-parse-better-errors/package.json
===================================================================
--- trip-planner-front/node_modules/json-parse-better-errors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json-parse-better-errors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,48 @@
 {
-  "name": "json-parse-better-errors",
-  "version": "1.0.2",
-  "description": "JSON.parse with context information on error",
-  "main": "index.js",
-  "files": [
-    "*.js"
+  "_args": [
+    [
+      "json-parse-better-errors@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prerelease": "npm t",
-    "postrelease": "npm publish && git push --follow-tags",
-    "pretest": "standard",
-    "release": "standard-version -s",
-    "test": "tap -J --coverage test/*.js",
-    "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
-    "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
+  "_development": true,
+  "_from": "json-parse-better-errors@1.0.2",
+  "_id": "json-parse-better-errors@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+  "_location": "/json-parse-better-errors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-parse-better-errors@1.0.2",
+    "name": "json-parse-better-errors",
+    "escapedName": "json-parse-better-errors",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
   },
-  "repository": "https://github.com/zkat/json-parse-better-errors",
-  "keywords": [
-    "JSON",
-    "parser"
+  "_requiredBy": [
+    "/webpack"
   ],
+  "_resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Kat Marchán",
-    "email": "kzm@zkat.tech",
-    "twitter": "maybekatz"
+    "email": "kzm@zkat.tech"
   },
-  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/zkat/json-parse-better-errors/issues"
+  },
+  "config": {
+    "nyc": {
+      "exclude": [
+        "node_modules/**",
+        "test/**"
+      ]
+    }
+  },
+  "description": "JSON.parse with context information on error",
   "devDependencies": {
     "nyc": "^10.3.2",
@@ -35,11 +53,28 @@
     "weallcontribute": "^1.0.8"
   },
-  "config": {
-    "nyc": {
-      "exclude": [
-        "node_modules/**",
-        "test/**"
-      ]
-    }
-  }
+  "files": [
+    "*.js"
+  ],
+  "homepage": "https://github.com/zkat/json-parse-better-errors#readme",
+  "keywords": [
+    "JSON",
+    "parser"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-parse-better-errors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zkat/json-parse-better-errors.git"
+  },
+  "scripts": {
+    "postrelease": "npm publish && git push --follow-tags",
+    "prerelease": "npm t",
+    "pretest": "standard",
+    "release": "standard-version -s",
+    "test": "tap -J --coverage test/*.js",
+    "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
+    "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/json-parse-even-better-errors/package.json
===================================================================
--- trip-planner-front/node_modules/json-parse-even-better-errors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json-parse-even-better-errors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,69 @@
 {
-  "name": "json-parse-even-better-errors",
-  "version": "2.3.1",
+  "_args": [
+    [
+      "json-parse-even-better-errors@2.3.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-parse-even-better-errors@2.3.1",
+  "_id": "json-parse-even-better-errors@2.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+  "_location": "/json-parse-even-better-errors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-parse-even-better-errors@2.3.1",
+    "name": "json-parse-even-better-errors",
+    "escapedName": "json-parse-even-better-errors",
+    "rawSpec": "2.3.1",
+    "saveSpec": null,
+    "fetchSpec": "2.3.1"
+  },
+  "_requiredBy": [
+    "/parse-json",
+    "/read-package-json-fast"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+  "_spec": "2.3.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kat Marchán",
+    "email": "kzm@zkat.tech"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/json-parse-even-better-errors/issues"
+  },
   "description": "JSON.parse with context information on error",
-  "main": "index.js",
+  "devDependencies": {
+    "tap": "^14.6.5"
+  },
   "files": [
     "*.js"
   ],
-  "scripts": {
-    "preversion": "npm t",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push --follow-tags",
-    "test": "tap",
-    "snap": "tap"
-  },
-  "repository": "https://github.com/npm/json-parse-even-better-errors",
+  "homepage": "https://github.com/npm/json-parse-even-better-errors#readme",
   "keywords": [
     "JSON",
     "parser"
   ],
-  "author": {
-    "name": "Kat Marchán",
-    "email": "kzm@zkat.tech",
-    "twitter": "maybekatz"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-parse-even-better-errors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/json-parse-even-better-errors.git"
   },
-  "license": "MIT",
-  "devDependencies": {
-    "tap": "^14.6.5"
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push --follow-tags",
+    "preversion": "npm t",
+    "snap": "tap",
+    "test": "tap"
   },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "2.3.1"
 }
Index: trip-planner-front/node_modules/json-schema-traverse/package.json
===================================================================
--- trip-planner-front/node_modules/json-schema-traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json-schema-traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,39 @@
 {
-  "name": "json-schema-traverse",
-  "version": "1.0.0",
-  "description": "Traverse JSON Schema passing each schema object to callback",
-  "main": "index.js",
-  "types": "index.d.ts",
-  "scripts": {
-    "eslint": "eslint index.js spec",
-    "test-spec": "mocha spec -R spec",
-    "test": "npm run eslint && nyc npm run test-spec"
+  "_args": [
+    [
+      "json-schema-traverse@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema-traverse@1.0.0",
+  "_id": "json-schema-traverse@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+  "_location": "/json-schema-traverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema-traverse@1.0.0",
+    "name": "json-schema-traverse",
+    "escapedName": "json-schema-traverse",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  "_requiredBy": [
+    "/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "traverse",
-    "iterate"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
   },
-  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "description": "Traverse JSON Schema passing each schema object to callback",
   "devDependencies": {
     "eslint": "^7.3.1",
@@ -31,4 +42,13 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "keywords": [
+    "JSON-Schema",
+    "traverse",
+    "iterate"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-schema-traverse",
   "nyc": {
     "exclude": [
@@ -40,4 +60,15 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js spec",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "mocha spec -R spec"
+  },
+  "types": "index.d.ts",
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/json-schema/package.json
===================================================================
--- trip-planner-front/node_modules/json-schema/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json-schema/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,46 @@
 {
-  "name": "json-schema",
-  "version": "0.2.3",
-  "author": "Kris Zyp",
+  "_args": [
+    [
+      "json-schema@0.2.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema@0.2.3",
+  "_id": "json-schema@0.2.3",
+  "_inBundle": false,
+  "_integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+  "_location": "/json-schema",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema@0.2.3",
+    "name": "json-schema",
+    "escapedName": "json-schema",
+    "rawSpec": "0.2.3",
+    "saveSpec": null,
+    "fetchSpec": "0.2.3"
+  },
+  "_requiredBy": [
+    "/jsprim"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+  "_spec": "0.2.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kris Zyp"
+  },
+  "bugs": {
+    "url": "https://github.com/kriszyp/json-schema/issues"
+  },
   "description": "JSON Schema validation and specifications",
-  "maintainers":[
-  	{"name": "Kris Zyp", "email": "kriszyp@gmail.com"}],
+  "devDependencies": {
+    "vows": "*"
+  },
+  "directories": {
+    "lib": "./lib"
+  },
+  "homepage": "https://github.com/kriszyp/json-schema#readme",
   "keywords": [
     "json",
@@ -11,21 +48,28 @@
   ],
   "licenses": [
-     {
-         "type": "AFLv2.1",
-         "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L43"
-     },
-     {
-         "type": "BSD",
-         "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L13"
-     }
+    {
+      "type": "AFLv2.1",
+      "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L43"
+    },
+    {
+      "type": "BSD",
+      "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L13"
+    }
   ],
+  "main": "./lib/validate.js",
+  "maintainers": [
+    {
+      "name": "Kris Zyp",
+      "email": "kriszyp@gmail.com"
+    }
+  ],
+  "name": "json-schema",
   "repository": {
-    "type":"git",
-    "url":"http://github.com/kriszyp/json-schema"
+    "type": "git",
+    "url": "git+ssh://git@github.com/kriszyp/json-schema.git"
   },
-  "directories": { "lib": "./lib" },
-  "main": "./lib/validate.js",
-  "devDependencies": { "vows": "*" },
-  "scripts": { "test": "echo TESTS DISABLED vows --spec test/*.js" }
+  "scripts": {
+    "test": "echo TESTS DISABLED vows --spec test/*.js"
+  },
+  "version": "0.2.3"
 }
-
Index: trip-planner-front/node_modules/json-stringify-safe/package.json
===================================================================
--- trip-planner-front/node_modules/json-stringify-safe/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json-stringify-safe/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,54 @@
 {
-  "name": "json-stringify-safe",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "json-stringify-safe@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-stringify-safe@5.0.1",
+  "_id": "json-stringify-safe@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+  "_location": "/json-stringify-safe",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-stringify-safe@5.0.1",
+    "name": "json-stringify-safe",
+    "escapedName": "json-stringify-safe",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/json-stringify-safe/issues"
+  },
+  "contributors": [
+    {
+      "name": "Andri Möll",
+      "email": "andri@dot.ee",
+      "url": "http://themoll.com"
+    }
+  ],
   "description": "Like JSON.stringify, but doesn't blow up on circular refs.",
+  "devDependencies": {
+    "mocha": ">= 2.1.0 < 3",
+    "must": ">= 0.12 < 0.13",
+    "sinon": ">= 1.12.2 < 2"
+  },
+  "homepage": "https://github.com/isaacs/json-stringify-safe",
   "keywords": [
     "json",
@@ -9,23 +57,14 @@
     "safe"
   ],
-  "homepage": "https://github.com/isaacs/json-stringify-safe",
-  "bugs": "https://github.com/isaacs/json-stringify-safe/issues",
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
-  "contributors": [
-    "Andri Möll <andri@dot.ee> (http://themoll.com)"
-  ],
   "license": "ISC",
+  "main": "stringify.js",
+  "name": "json-stringify-safe",
   "repository": {
     "type": "git",
-    "url": "git://github.com/isaacs/json-stringify-safe"
+    "url": "git://github.com/isaacs/json-stringify-safe.git"
   },
-  "main": "stringify.js",
   "scripts": {
     "test": "node test.js"
   },
-  "devDependencies": {
-    "mocha": ">= 2.1.0 < 3",
-    "must": ">= 0.12 < 0.13",
-    "sinon": ">= 1.12.2 < 2"
-  }
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/json3/package.json
===================================================================
--- trip-planner-front/node_modules/json3/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json3/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,87 @@
 {
-  "name": "json3",
-  "version": "3.3.3",
+  "_args": [
+    [
+      "json3@3.3.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json3@3.3.3",
+  "_id": "json3@3.3.3",
+  "_inBundle": false,
+  "_integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+  "_location": "/json3",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json3@3.3.3",
+    "name": "json3",
+    "escapedName": "json3",
+    "rawSpec": "3.3.3",
+    "saveSpec": null,
+    "fetchSpec": "3.3.3"
+  },
+  "_requiredBy": [
+    "/sockjs-client"
+  ],
+  "_resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+  "_spec": "3.3.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Kit Cambridge",
+    "email": "github@kitcambridge.be",
+    "url": "http://kitcambridge.be/"
+  },
+  "bugs": {
+    "url": "https://github.com/bestiejs/json3/issues"
+  },
+  "contributors": [
+    {
+      "name": "Mangled Deutz",
+      "email": "olivier@webitup.fr",
+      "url": "http://tech.roxee.tv/"
+    },
+    {
+      "name": "Øyvind Sean Kinsey",
+      "email": "oyvind@kinsey.no",
+      "url": "http://fb.me/ok"
+    },
+    {
+      "name": "Oskar Schöldström",
+      "email": "public@oxy.fi",
+      "url": "http://oxy.fi/"
+    },
+    {
+      "name": "Kiryl Yermakou",
+      "email": "rma4ok@gmail.com",
+      "url": "https://github.com/rma4ok"
+    }
+  ],
   "description": "A JSON polyfill for older JavaScript platforms.",
+  "devDependencies": {
+    "curl-amd": "~0.8.12",
+    "highlight.js": "~8.3.0",
+    "marked": "~0.3.2",
+    "requirejs": "~2.1.15",
+    "spec": "~1.0.1",
+    "tar": "~1.0.2"
+  },
+  "files": [
+    "README.md",
+    "LICENSE",
+    "lib/json3.js",
+    "lib/json3.min.js"
+  ],
   "homepage": "https://bestiejs.github.io/json3",
-  "main": "./lib/json3",
+  "jam": {
+    "main": "./lib/json3.js",
+    "includes": [
+      "README.md",
+      "LICENSE",
+      "lib/json3.js",
+      "lib/json3.min.js"
+    ]
+  },
   "keywords": [
     "json",
@@ -15,68 +94,26 @@
   ],
   "license": "MIT",
-  "author": {
-    "name": "Kit Cambridge",
-    "email": "github@kitcambridge.be",
-    "web": "http://kitcambridge.be/"
-  },
+  "main": "./lib/json3",
   "maintainers": [
     {
       "name": "Kit Cambridge",
       "email": "github@kitcambridge.be",
-      "web": "http://kitcambridge.be/"
+      "url": "http://kitcambridge.be/"
     },
     {
       "name": "Benjamin Tan",
       "email": "demoneaux@gmail.com",
-      "web": "https://d10.github.io/"
+      "url": "https://d10.github.io/"
     }
   ],
-  "contributors": [
-    {
-      "name": "Mangled Deutz",
-      "email": "olivier@webitup.fr",
-      "web": "http://tech.roxee.tv/"
-    },
-    {
-      "name": "Øyvind Sean Kinsey",
-      "email": "oyvind@kinsey.no",
-      "web": "http://fb.me/ok"
-    },
-    {
-      "name": "Oskar Schöldström",
-      "email": "public@oxy.fi",
-      "web": "http://oxy.fi/"
-    },
-    {
-      "name": "Kiryl Yermakou",
-      "email": "rma4ok@gmail.com",
-      "web": "https://github.com/rma4ok"
-    }
-  ],
-  "bugs": {
-    "url": "https://github.com/bestiejs/json3/issues"
+  "name": "json3",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/bestiejs/json3.git"
   },
   "scripts": {
     "test": "node test/test_*.js"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/bestiejs/json3.git"
-  },
-  "files": [
-    "README.md",
-    "LICENSE",
-    "lib/json3.js",
-    "lib/json3.min.js"
-  ],
-  "jam": {
-    "main": "./lib/json3.js",
-    "includes": [
-      "README.md",
-      "LICENSE",
-      "lib/json3.js",
-      "lib/json3.min.js"
-    ]
-  },
+  "version": "3.3.3",
   "volo": {
     "type": "directory",
@@ -92,12 +129,4 @@
       "vendor"
     ]
-  },
-  "devDependencies": {
-    "curl-amd": "~0.8.12",
-    "highlight.js": "~8.3.0",
-    "marked": "~0.3.2",
-    "requirejs": "~2.1.15",
-    "spec": "~1.0.1",
-    "tar": "~1.0.2"
   }
 }
Index: trip-planner-front/node_modules/json5/package.json
===================================================================
--- trip-planner-front/node_modules/json5/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/json5/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,55 +1,62 @@
 {
-  "name": "json5",
-  "version": "2.2.0",
-  "description": "JSON for humans.",
-  "main": "lib/index.js",
-  "module": "dist/index.mjs",
-  "bin": "lib/cli.js",
+  "_args": [
+    [
+      "json5@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json5@2.2.0",
+  "_id": "json5@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+  "_location": "/json5",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json5@2.2.0",
+    "name": "json5",
+    "escapedName": "json5",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/@babel/core",
+    "/loader-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Aseem Kishore",
+    "email": "aseem.kishore@gmail.com"
+  },
+  "bin": {
+    "json5": "lib/cli.js"
+  },
   "browser": "dist/index.js",
-  "types": "lib/index.d.ts",
-  "files": [
-    "lib/",
-    "dist/"
-  ],
-  "engines": {
-    "node": ">=6"
-  },
-  "scripts": {
-    "build": "rollup -c",
-    "build-package": "node build/package.js",
-    "build-unicode": "node build/unicode.js",
-    "coverage": "tap --coverage-report html test",
-    "lint": "eslint --fix .",
-    "prepublishOnly": "npm run production",
-    "preversion": "npm run production",
-    "production": "npm run lint && npm test && npm run build",
-    "test": "tap -Rspec --100 test",
-    "version": "npm run build-package && git add package.json5"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/json5/json5.git"
-  },
-  "keywords": [
-    "json",
-    "json5",
-    "es5",
-    "es2015",
-    "ecmascript"
-  ],
-  "author": "Aseem Kishore <aseem.kishore@gmail.com>",
-  "contributors": [
-    "Max Nanasy <max.nanasy@gmail.com>",
-    "Andrew Eisenberg <andrew@eisenberg.as>",
-    "Jordan Tucker <jordanbtucker@gmail.com>"
-  ],
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/json5/json5/issues"
   },
-  "homepage": "http://json5.org/",
+  "contributors": [
+    {
+      "name": "Max Nanasy",
+      "email": "max.nanasy@gmail.com"
+    },
+    {
+      "name": "Andrew Eisenberg",
+      "email": "andrew@eisenberg.as"
+    },
+    {
+      "name": "Jordan Tucker",
+      "email": "jordanbtucker@gmail.com"
+    }
+  ],
   "dependencies": {
     "minimist": "^1.2.5"
   },
+  "description": "JSON for humans.",
   "devDependencies": {
     "core-js": "^2.6.5",
@@ -69,4 +76,41 @@
     "tap": "^12.6.0",
     "unicode-10.0.0": "^0.7.5"
-  }
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "lib/",
+    "dist/"
+  ],
+  "homepage": "http://json5.org/",
+  "keywords": [
+    "json",
+    "json5",
+    "es5",
+    "es2015",
+    "ecmascript"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "module": "dist/index.mjs",
+  "name": "json5",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/json5/json5.git"
+  },
+  "scripts": {
+    "build": "rollup -c",
+    "build-package": "node build/package.js",
+    "build-unicode": "node build/unicode.js",
+    "coverage": "tap --coverage-report html test",
+    "lint": "eslint --fix .",
+    "prepublishOnly": "npm run production",
+    "preversion": "npm run production",
+    "production": "npm run lint && npm test && npm run build",
+    "test": "tap -Rspec --100 test",
+    "version": "npm run build-package && git add package.json5"
+  },
+  "types": "lib/index.d.ts",
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/jsonc-parser/package.json
===================================================================
--- trip-planner-front/node_modules/jsonc-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsonc-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,73 @@
 {
-  "name": "jsonc-parser",
-  "version": "3.0.0",
-  "description": "Scanner and parser for JSON with comments.",
-  "main": "./lib/umd/main.js",
-  "typings": "./lib/umd/main",
-  "module": "./lib/esm/main.js",
-  "author": "Microsoft Corporation",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/microsoft/node-jsonc-parser"
+  "_args": [
+    [
+      "jsonc-parser@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsonc-parser@3.0.0",
+  "_id": "jsonc-parser@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
+  "_location": "/jsonc-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsonc-parser@3.0.0",
+    "name": "jsonc-parser",
+    "escapedName": "jsonc-parser",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
   },
-  "license": "MIT",
+  "_requiredBy": [
+    "/@angular/cli",
+    "/@schematics/angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Microsoft Corporation"
+  },
   "bugs": {
     "url": "https://github.com/microsoft/node-jsonc-parser/issues"
   },
+  "description": "Scanner and parser for JSON with comments.",
   "devDependencies": {
-    "mocha": "^8.2.1",
-    "typescript": "^4.0.5",
+    "@types/mocha": "^5.2.7",
     "@types/node": "^10.12.12",
-    "@types/mocha": "^5.2.7",
     "@typescript-eslint/eslint-plugin": "^4.7.0",
     "@typescript-eslint/parser": "^4.7.0",
     "eslint": "^7.13.0",
-    "rimraf": "^3.0.2"
+    "mocha": "^8.2.1",
+    "rimraf": "^3.0.2",
+    "typescript": "^4.0.5"
+  },
+  "homepage": "https://github.com/microsoft/node-jsonc-parser#readme",
+  "license": "MIT",
+  "main": "./lib/umd/main.js",
+  "module": "./lib/esm/main.js",
+  "name": "jsonc-parser",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/microsoft/node-jsonc-parser.git"
   },
   "scripts": {
-    "prepublishOnly": "npm run clean && npm run compile-esm && npm run test && npm run remove-sourcemap-refs",
-    "postpublish": "node ./build/post-publish.js",
+    "clean": "rimraf lib",
     "compile": "tsc -p ./src && npm run lint",
     "compile-esm": "tsc -p ./src/tsconfig.esm.json",
+    "lint": "eslint src/**/*.ts",
+    "postpublish": "node ./build/post-publish.js",
+    "postversion": "git push && git push --tags",
+    "prepublishOnly": "npm run clean && npm run compile-esm && npm run test && npm run remove-sourcemap-refs",
+    "preversion": "npm test",
     "remove-sourcemap-refs": "node ./build/remove-sourcemap-refs.js",
-    "clean": "rimraf lib",
-    "watch": "tsc -w -p ./src",
     "test": "npm run compile && mocha ./lib/umd/test",
-    "lint": "eslint src/**/*.ts",
-    "preversion": "npm test",
-    "postversion": "git push && git push --tags"
-  }
+    "watch": "tsc -w -p ./src"
+  },
+  "typings": "./lib/umd/main",
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/jsonfile/package.json
===================================================================
--- trip-planner-front/node_modules/jsonfile/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsonfile/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,52 @@
 {
-  "name": "jsonfile",
-  "version": "4.0.0",
+  "_args": [
+    [
+      "jsonfile@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsonfile@4.0.0",
+  "_id": "jsonfile@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+  "_location": "/jsonfile",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsonfile@4.0.0",
+    "name": "jsonfile",
+    "escapedName": "jsonfile",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/fs-extra"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "JP Richardson",
+    "email": "jprichardson@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jprichardson/node-jsonfile/issues"
+  },
+  "dependencies": {
+    "graceful-fs": "^4.1.6"
+  },
   "description": "Easily read/write JSON files.",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:jprichardson/node-jsonfile.git"
+  "devDependencies": {
+    "mocha": "2.x",
+    "rimraf": "^2.4.0",
+    "standard": "^10.0.3"
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jprichardson/node-jsonfile#readme",
   "keywords": [
     "read",
@@ -15,23 +57,19 @@
     "fs-extra"
   ],
-  "author": "JP Richardson <jprichardson@gmail.com>",
   "license": "MIT",
-  "dependencies": {},
+  "main": "index.js",
+  "name": "jsonfile",
   "optionalDependencies": {
     "graceful-fs": "^4.1.6"
   },
-  "devDependencies": {
-    "mocha": "2.x",
-    "rimraf": "^2.4.0",
-    "standard": "^10.0.3"
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/jprichardson/node-jsonfile.git"
   },
-  "main": "index.js",
-  "files": [
-    "index.js"
-  ],
   "scripts": {
     "lint": "standard",
     "test": "npm run lint && npm run unit",
     "unit": "mocha"
-  }
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/jsonparse/package.json
===================================================================
--- trip-planner-front/node_modules/jsonparse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsonparse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,62 @@
 {
+  "_args": [
+    [
+      "jsonparse@1.3.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsonparse@1.3.1",
+  "_id": "jsonparse@1.3.1",
+  "_inBundle": false,
+  "_integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+  "_location": "/jsonparse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsonparse@1.3.1",
+    "name": "jsonparse",
+    "escapedName": "jsonparse",
+    "rawSpec": "1.3.1",
+    "saveSpec": null,
+    "fetchSpec": "1.3.1"
+  },
+  "_requiredBy": [
+    "/minipass-json-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+  "_spec": "1.3.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tim Caswell",
+    "email": "tim@creationix.com"
+  },
+  "bugs": {
+    "url": "http://github.com/creationix/jsonparse/issues"
+  },
+  "description": "This is a pure-js JSON streaming parser for node.js",
+  "devDependencies": {
+    "tap": "~0.3.3",
+    "tape": "~0.1.1"
+  },
+  "engines": [
+    "node >= 0.2.0"
+  ],
+  "homepage": "https://github.com/creationix/jsonparse#readme",
+  "license": "MIT",
+  "main": "jsonparse.js",
   "name": "jsonparse",
-  "description": "This is a pure-js JSON streaming parser for node.js",
-  "tags": ["json", "stream"],
-  "version": "1.3.1",
-  "author": "Tim Caswell <tim@creationix.com>",
   "repository": {
     "type": "git",
-    "url": "http://github.com/creationix/jsonparse.git"
-  },
-  "devDependencies": {
-    "tape": "~0.1.1",
-    "tap": "~0.3.3"
+    "url": "git+ssh://git@github.com/creationix/jsonparse.git"
   },
   "scripts": {
     "test": "tap test/*.js"
   },
-  "bugs": "http://github.com/creationix/jsonparse/issues",
-  "engines": ["node >= 0.2.0"],
-  "license": "MIT",
-  "main": "jsonparse.js"
+  "tags": [
+    "json",
+    "stream"
+  ],
+  "version": "1.3.1"
 }
Index: trip-planner-front/node_modules/jsprim/package.json
===================================================================
--- trip-planner-front/node_modules/jsprim/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/jsprim/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,53 @@
 {
-	"name": "jsprim",
-	"version": "1.4.1",
-	"description": "utilities for primitive JavaScript types",
-	"main": "./lib/jsprim.js",
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/joyent/node-jsprim.git"
-	},
-	"dependencies": {
-		"assert-plus": "1.0.0",
-		"extsprintf": "1.3.0",
-		"json-schema": "0.2.3",
-		"verror": "1.10.0"
-	},
-	"engines": [
-		"node >=0.6.0"
-	],
-	"license": "MIT"
+  "_args": [
+    [
+      "jsprim@1.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "jsprim@1.4.1",
+  "_id": "jsprim@1.4.1",
+  "_inBundle": false,
+  "_integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+  "_location": "/jsprim",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "jsprim@1.4.1",
+    "name": "jsprim",
+    "escapedName": "jsprim",
+    "rawSpec": "1.4.1",
+    "saveSpec": null,
+    "fetchSpec": "1.4.1"
+  },
+  "_requiredBy": [
+    "/http-signature"
+  ],
+  "_resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+  "_spec": "1.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/joyent/node-jsprim/issues"
+  },
+  "dependencies": {
+    "assert-plus": "1.0.0",
+    "extsprintf": "1.3.0",
+    "json-schema": "0.2.3",
+    "verror": "1.10.0"
+  },
+  "description": "utilities for primitive JavaScript types",
+  "engines": [
+    "node >=0.6.0"
+  ],
+  "homepage": "https://github.com/joyent/node-jsprim#readme",
+  "license": "MIT",
+  "main": "./lib/jsprim.js",
+  "name": "jsprim",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/joyent/node-jsprim.git"
+  },
+  "version": "1.4.1"
 }
Index: trip-planner-front/node_modules/karma-chrome-launcher/package.json
===================================================================
--- trip-planner-front/node_modules/karma-chrome-launcher/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma-chrome-launcher/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,185 @@
 {
-  "name": "karma-chrome-launcher",
-  "version": "3.1.0",
-  "description": "A Karma plugin. Launcher for Chrome and Chrome Canary.",
-  "main": "index.js",
-  "scripts": {
-    "lint": "standard",
-    "pretest": "npm run lint",
-    "test": "grunt test"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/karma-runner/karma-chrome-launcher.git"
-  },
-  "keywords": [
-    "karma-plugin",
-    "karma-launcher",
-    "chrome"
-  ],
-  "author": "Vojta Jina <vojta.jina@gmail.com>",
+  "_args": [
+    [
+      "karma-chrome-launcher@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "karma-chrome-launcher@3.1.0",
+  "_id": "karma-chrome-launcher@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==",
+  "_location": "/karma-chrome-launcher",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma-chrome-launcher@3.1.0",
+    "name": "karma-chrome-launcher",
+    "escapedName": "karma-chrome-launcher",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Vojta Jina",
+    "email": "vojta.jina@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/karma-runner/karma-chrome-launcher/issues"
+  },
+  "contributors": [
+    {
+      "name": "Mark Ethan Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Rogério Vicente",
+      "email": "rogeriopvl@gmail.com"
+    },
+    {
+      "name": "dignifiedquire",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "rogeriopvl",
+      "email": "rogeriopvl@gmail.com"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "greenkeeperio-bot",
+      "email": "support@greenkeeper.io"
+    },
+    {
+      "name": "Mark Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Michał Gołębiowski-Owczarek",
+      "email": "m.goleb@gmail.com"
+    },
+    {
+      "name": "johnjbarton",
+      "email": "johnjbarton@johnjbarton.com"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "friedel.ziegelmayer@gmail.com"
+    },
+    {
+      "name": "Filipe Guerra",
+      "email": "alias.mac@gmail.com"
+    },
+    {
+      "name": "Andrey Taranov",
+      "email": "andrey.taranov@nordea.com"
+    },
+    {
+      "name": "Aymeric Beaumet",
+      "email": "aymeric@beaumet.me"
+    },
+    {
+      "name": "J. Abbott",
+      "email": "abbotto@users.noreply.github.com"
+    },
+    {
+      "name": "Joe Doyle",
+      "email": "valdain@gmail.com"
+    },
+    {
+      "name": "Julien Sanchez",
+      "email": "julien.sanchez@lim.eu"
+    },
+    {
+      "name": "Florian Richter",
+      "email": "florian@lkr24.de"
+    },
+    {
+      "name": "Alexander Fedyashov",
+      "email": "af@e42.guru"
+    },
+    {
+      "name": "Marko Vuksanovic",
+      "email": "markovuksanovic@gmail.com"
+    },
+    {
+      "name": "François SIMOND",
+      "email": "frsimond@users.noreply.github.com"
+    },
+    {
+      "name": "Nicholas Mitchell",
+      "email": "mitchellnicholasl@gmail.com"
+    },
+    {
+      "name": "Parashuram N",
+      "email": "code@r.nparashuram.com"
+    },
+    {
+      "name": "Hai Feng Kao",
+      "email": "haifeng@cocoaspice.in"
+    },
+    {
+      "name": "Tatsuyuki Ishi",
+      "email": "ishitatsuyuki@gmail.com"
+    },
+    {
+      "name": "Timo Tijhof",
+      "email": "krinklemail@gmail.com"
+    },
+    {
+      "name": "Vincent Voyer",
+      "email": "vincent.voyer@algolia.com"
+    },
+    {
+      "name": "David",
+      "email": "davidsu@wix.com"
+    },
+    {
+      "name": "brutalcrozt",
+      "email": "goendoell49@gmail.com"
+    },
+    {
+      "name": "cexbrayat",
+      "email": "cedric@ninja-squad.com"
+    },
+    {
+      "name": "daniel rodriguez",
+      "email": "maieutiquer@users.noreply.github.com"
+    },
+    {
+      "name": "Darryl Pogue",
+      "email": "dvpdiner2@gmail.com"
+    },
+    {
+      "name": "gkostov",
+      "email": "p_e_a@gbg.bg"
+    },
+    {
+      "name": "Florian-R",
+      "email": "florian.r.dev@gmail.com"
+    },
+    {
+      "name": "J Rob Gant",
+      "email": "rgant@alum.wpi.edu"
+    },
+    {
+      "name": "Jeff Cross",
+      "email": "middlefloor@gmail.com"
+    }
+  ],
   "dependencies": {
     "which": "^1.2.1"
   },
-  "license": "MIT",
+  "description": "A Karma plugin. Launcher for Chrome and Chrome Canary.",
   "devDependencies": {
     "chai": "^4.2.0",
@@ -41,40 +200,22 @@
     "standard": "^12.0.0"
   },
-  "contributors": [
-    "Mark Ethan Trostler <mark@zzo.com>",
-    "Rogério Vicente <rogeriopvl@gmail.com>",
-    "dignifiedquire <dignifiedquire@gmail.com>",
-    "rogeriopvl <rogeriopvl@gmail.com>",
-    "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
-    "greenkeeperio-bot <support@greenkeeper.io>",
-    "Mark Trostler <mark@zzo.com>",
-    "Michał Gołębiowski-Owczarek <m.goleb@gmail.com>",
-    "johnjbarton <johnjbarton@johnjbarton.com>",
-    "Friedel Ziegelmayer <friedel.ziegelmayer@gmail.com>",
-    "Filipe Guerra <alias.mac@gmail.com>",
-    "Andrey Taranov <andrey.taranov@nordea.com>",
-    "Aymeric Beaumet <aymeric@beaumet.me>",
-    "J. Abbott <abbotto@users.noreply.github.com>",
-    "Joe Doyle <valdain@gmail.com>",
-    "Julien Sanchez <julien.sanchez@lim.eu>",
-    "Florian Richter <florian@lkr24.de>",
-    "Alexander Fedyashov <af@e42.guru>",
-    "Marko Vuksanovic <markovuksanovic@gmail.com>",
-    "François SIMOND <frsimond@users.noreply.github.com>",
-    "Nicholas Mitchell <mitchellnicholasl@gmail.com>",
-    "Parashuram N <code@r.nparashuram.com>",
-    "Hai Feng Kao <haifeng@cocoaspice.in>",
-    "Tatsuyuki Ishi <ishitatsuyuki@gmail.com>",
-    "Timo Tijhof <krinklemail@gmail.com>",
-    "Vincent Voyer <vincent.voyer@algolia.com>",
-    "David <davidsu@wix.com>",
-    "brutalcrozt <goendoell49@gmail.com>",
-    "cexbrayat <cedric@ninja-squad.com>",
-    "daniel rodriguez <maieutiquer@users.noreply.github.com>",
-    "Darryl Pogue <dvpdiner2@gmail.com>",
-    "gkostov <p_e_a@gbg.bg>",
-    "Florian-R <florian.r.dev@gmail.com>",
-    "J Rob Gant <rgant@alum.wpi.edu>",
-    "Jeff Cross <middlefloor@gmail.com>"
-  ]
+  "homepage": "https://github.com/karma-runner/karma-chrome-launcher#readme",
+  "keywords": [
+    "karma-plugin",
+    "karma-launcher",
+    "chrome"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "karma-chrome-launcher",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/karma-runner/karma-chrome-launcher.git"
+  },
+  "scripts": {
+    "lint": "standard",
+    "pretest": "npm run lint",
+    "test": "grunt test"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/karma-coverage/package.json
===================================================================
--- trip-planner-front/node_modules/karma-coverage/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma-coverage/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,274 @@
 {
-  "name": "karma-coverage",
-  "version": "2.0.3",
-  "description": "A Karma plugin. Generate code coverage.",
-  "main": "lib/index.js",
-  "scripts": {
-    "lint": "eslint **/*.js",
-    "test": "grunt"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/karma-runner/karma-coverage.git"
-  },
-  "keywords": [
-    "karma-plugin",
-    "karma-preprocessor",
-    "karma-reporter",
-    "coverage",
-    "istanbul"
+  "_args": [
+    [
+      "karma-coverage@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "SATO taichi <ryushi@gmail.com>",
+  "_development": true,
+  "_from": "karma-coverage@2.0.3",
+  "_id": "karma-coverage@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==",
+  "_location": "/karma-coverage",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma-coverage@2.0.3",
+    "name": "karma-coverage",
+    "escapedName": "karma-coverage",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "SATO taichi",
+    "email": "ryushi@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/karma-runner/karma-coverage/issues"
+  },
+  "commitlint": {
+    "extends": [
+      "@commitlint/config-conventional"
+    ]
+  },
+  "contributors": [
+    {
+      "name": "dignifiedquire",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "Aymeric Beaumet",
+      "email": "aymeric@beaumet.me"
+    },
+    {
+      "name": "johnjbarton",
+      "email": "johnjbarton@johnjbarton.com"
+    },
+    {
+      "name": "Mark Ethan Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Tim Kang",
+      "email": "timkang@ucla.edu"
+    },
+    {
+      "name": "hicom150",
+      "email": "hicom150@gmail.com"
+    },
+    {
+      "name": "Nick Malaguti",
+      "email": "nmalaguti@palantir.com"
+    },
+    {
+      "name": "Maksim Ryzhikov",
+      "email": "rv.maksim@gmail.com"
+    },
+    {
+      "name": "Mark Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "nicojs",
+      "email": "jansennico@gmail.com"
+    },
+    {
+      "name": "Tanguy Krotoff",
+      "email": "tkrotoff@gmail.com"
+    },
+    {
+      "name": "Wei Kin Huang",
+      "email": "weikin.huang04@gmail.com"
+    },
+    {
+      "name": "Douglas Duteil",
+      "email": "douglasduteil@gmail.com"
+    },
+    {
+      "name": "Matt Winchester",
+      "email": "m_winche@yahoo.com"
+    },
+    {
+      "name": "Julen Garcia Leunda",
+      "email": "hicom150@gmail.com"
+    },
+    {
+      "name": "Allen Bierbaum",
+      "email": "abierbaum@gmail.com"
+    },
+    {
+      "name": "Michael Noack",
+      "email": "michael.noack@sealink.com.au"
+    },
+    {
+      "name": "Michael Stramel",
+      "email": "m.stramel89@gmail.com"
+    },
+    {
+      "name": "Nick Matantsev",
+      "email": "nick.matantsev@gmail.com"
+    },
+    {
+      "name": "Petar Manev",
+      "email": "petar.manev2010@gmail.com"
+    },
+    {
+      "name": "Robin Böhm",
+      "email": "robinboehm@googlemail.com"
+    },
+    {
+      "name": "Ron Derksen",
+      "email": "ron.derksen@informaat.nl"
+    },
+    {
+      "name": "Ruben Bridgewater",
+      "email": "ruben.bridgewater@fintura.de"
+    },
+    {
+      "name": "Sahat Yalkabov",
+      "email": "sakhat@gmail.com"
+    },
+    {
+      "name": "Srinivas Dhanwada",
+      "email": "dhanwada.dev@gmail.com"
+    },
+    {
+      "name": "Tanjo, Hiroyuki",
+      "email": "expheno@gmail.com"
+    },
+    {
+      "name": "Taylor Hakes",
+      "email": "taylor@taylorhakes.com"
+    },
+    {
+      "name": "Taylor McGann",
+      "email": "tmcgann@users.noreply.github.com"
+    },
+    {
+      "name": "Timo Tijhof",
+      "email": "krinklemail@gmail.com"
+    },
+    {
+      "name": "Tom Kirkpatrick",
+      "email": "tom@systemseed.com"
+    },
+    {
+      "name": "Tyler Waters",
+      "email": "tyler.waters@gmail.com"
+    },
+    {
+      "name": "Vincent Lemeunier",
+      "email": "vincent.lemeunier+git@gmail.com"
+    },
+    {
+      "name": "Yusuke Suzuki",
+      "email": "utatane.tea@gmail.com"
+    },
+    {
+      "name": "aprooks",
+      "email": "alexander.prooks@gmail.com"
+    },
+    {
+      "name": "carlos",
+      "email": "cafesanu@gmail.com"
+    },
+    {
+      "name": "fbergr",
+      "email": "fbergr@gmail.com"
+    },
+    {
+      "name": "piecyk",
+      "email": "piecyk@gmail.com"
+    },
+    {
+      "name": "Adam Heath",
+      "email": "adam-h@users.noreply.github.com"
+    },
+    {
+      "name": "terussell85",
+      "email": "terussell85@gmail.com"
+    },
+    {
+      "name": "Andrew Lane",
+      "email": "AndrewLane@users.noreply.github.com"
+    },
+    {
+      "name": "Chris Gladd",
+      "email": "chris.m.gladd@gmail.com"
+    },
+    {
+      "name": "Clayton Watts",
+      "email": "cletusw@gmail.com"
+    },
+    {
+      "name": "Dan Watling",
+      "email": "dan@synaptik.com"
+    },
+    {
+      "name": "Diogo Nicoleti",
+      "email": "diogo.nicoleti@gmail.com"
+    },
+    {
+      "name": "Dmitry Petrov",
+      "email": "dpetroff@gmail.com"
+    },
+    {
+      "name": "Greg Varsanyi",
+      "email": "gvarsanyi@gmail.com"
+    },
+    {
+      "name": "Ian Rufus",
+      "email": "ian.j.rufus@gmail.com"
+    },
+    {
+      "name": "James Talmage",
+      "email": "james@talmage.io"
+    },
+    {
+      "name": "Joseph Connolly",
+      "email": "joec@avinetworks.com"
+    },
+    {
+      "name": "Joshua Appelman",
+      "email": "jappelman@xebia.com"
+    },
+    {
+      "name": "Julie",
+      "email": "ju.ralph@gmail.com"
+    },
+    {
+      "name": "Kyle Welsby",
+      "email": "kyle@mekyle.com"
+    },
+    {
+      "name": "Lloyd Smith II",
+      "email": "lloyd@trove.com"
+    },
+    {
+      "name": "Maciej Rzepiński",
+      "email": "maciej.rzepinski@gmail.com"
+    },
+    {
+      "name": "Marceli.no",
+      "email": "me@marceli.no"
+    },
+    {
+      "name": "Matt Lewis",
+      "email": "matthew.lewis@socialsignin.co.uk"
+    }
+  ],
   "dependencies": {
     "istanbul-lib-coverage": "^3.0.0",
@@ -28,9 +279,9 @@
     "minimatch": "^3.0.4"
   },
-  "license": "MIT",
+  "description": "A Karma plugin. Generate code coverage.",
   "devDependencies": {
     "@commitlint/cli": "^8.3.5",
+    "@commitlint/config-conventional": "^8.3.4",
     "@commitlint/travis-cli": "^8.3.5",
-    "@commitlint/config-conventional": "^8.3.4",
     "@semantic-release/changelog": "5.0.1",
     "@semantic-release/git": "9.0.0",
@@ -69,9 +320,5 @@
     "node": ">=10.0.0"
   },
-  "commitlint": {
-    "extends": [
-      "@commitlint/config-conventional"
-    ]
-  },
+  "homepage": "https://github.com/karma-runner/karma-coverage#readme",
   "husky": {
     "hooks": {
@@ -79,62 +326,22 @@
     }
   },
-  "contributors": [
-    "dignifiedquire <dignifiedquire@gmail.com>",
-    "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
-    "Aymeric Beaumet <aymeric@beaumet.me>",
-    "johnjbarton <johnjbarton@johnjbarton.com>",
-    "Mark Ethan Trostler <mark@zzo.com>",
-    "Tim Kang <timkang@ucla.edu>",
-    "hicom150 <hicom150@gmail.com>",
-    "Nick Malaguti <nmalaguti@palantir.com>",
-    "Maksim Ryzhikov <rv.maksim@gmail.com>",
-    "Mark Trostler <mark@zzo.com>",
-    "nicojs <jansennico@gmail.com>",
-    "Tanguy Krotoff <tkrotoff@gmail.com>",
-    "Wei Kin Huang <weikin.huang04@gmail.com>",
-    "Douglas Duteil <douglasduteil@gmail.com>",
-    "Matt Winchester <m_winche@yahoo.com>",
-    "Julen Garcia Leunda <hicom150@gmail.com>",
-    "Allen Bierbaum <abierbaum@gmail.com>",
-    "Michael Noack <michael.noack@sealink.com.au>",
-    "Michael Stramel <m.stramel89@gmail.com>",
-    "Nick Matantsev <nick.matantsev@gmail.com>",
-    "Petar Manev <petar.manev2010@gmail.com>",
-    "Robin Böhm <robinboehm@googlemail.com>",
-    "Ron Derksen <ron.derksen@informaat.nl>",
-    "Ruben Bridgewater <ruben.bridgewater@fintura.de>",
-    "Sahat Yalkabov <sakhat@gmail.com>",
-    "Srinivas Dhanwada <dhanwada.dev@gmail.com>",
-    "Tanjo, Hiroyuki <expheno@gmail.com>",
-    "Taylor Hakes <taylor@taylorhakes.com>",
-    "Taylor McGann <tmcgann@users.noreply.github.com>",
-    "Timo Tijhof <krinklemail@gmail.com>",
-    "Tom Kirkpatrick <tom@systemseed.com>",
-    "Tyler Waters <tyler.waters@gmail.com>",
-    "Vincent Lemeunier <vincent.lemeunier+git@gmail.com>",
-    "Yusuke Suzuki <utatane.tea@gmail.com>",
-    "aprooks <alexander.prooks@gmail.com>",
-    "carlos <cafesanu@gmail.com>",
-    "fbergr <fbergr@gmail.com>",
-    "piecyk <piecyk@gmail.com>",
-    "Adam Heath <adam-h@users.noreply.github.com>",
-    "terussell85 <terussell85@gmail.com>",
-    "Andrew Lane <AndrewLane@users.noreply.github.com>",
-    "Chris Gladd <chris.m.gladd@gmail.com>",
-    "Clayton Watts <cletusw@gmail.com>",
-    "Dan Watling <dan@synaptik.com>",
-    "Diogo Nicoleti <diogo.nicoleti@gmail.com>",
-    "Dmitry Petrov <dpetroff@gmail.com>",
-    "Greg Varsanyi <gvarsanyi@gmail.com>",
-    "Ian Rufus <ian.j.rufus@gmail.com>",
-    "James Talmage <james@talmage.io>",
-    "Joseph Connolly <joec@avinetworks.com>",
-    "Joshua Appelman <jappelman@xebia.com>",
-    "Julie <ju.ralph@gmail.com>",
-    "Kyle Welsby <kyle@mekyle.com>",
-    "Lloyd Smith II <lloyd@trove.com>",
-    "Maciej Rzepiński <maciej.rzepinski@gmail.com>",
-    "Marceli.no <me@marceli.no>",
-    "Matt Lewis <matthew.lewis@socialsignin.co.uk>"
-  ]
+  "keywords": [
+    "karma-plugin",
+    "karma-preprocessor",
+    "karma-reporter",
+    "coverage",
+    "istanbul"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "karma-coverage",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/karma-runner/karma-coverage.git"
+  },
+  "scripts": {
+    "lint": "eslint **/*.js",
+    "test": "grunt"
+  },
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/karma-jasmine-html-reporter/package.json
===================================================================
--- trip-planner-front/node_modules/karma-jasmine-html-reporter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma-jasmine-html-reporter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,36 @@
 {
-  "name": "karma-jasmine-html-reporter",
-  "version": "1.7.0",
-  "description": "A Karma plugin. Dynamically displays tests results at debug.html page",
-  "main": "./src/index.js",
-  "keywords": [
-    "karma-plugin",
-    "karma-reporter",
-    "html"
+  "_args": [
+    [
+      "karma-jasmine-html-reporter@1.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "build": "node build/build.js"
+  "_development": true,
+  "_from": "karma-jasmine-html-reporter@1.7.0",
+  "_id": "karma-jasmine-html-reporter@1.7.0",
+  "_inBundle": false,
+  "_integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==",
+  "_location": "/karma-jasmine-html-reporter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma-jasmine-html-reporter@1.7.0",
+    "name": "karma-jasmine-html-reporter",
+    "escapedName": "karma-jasmine-html-reporter",
+    "rawSpec": "1.7.0",
+    "saveSpec": null,
+    "fetchSpec": "1.7.0"
   },
-  "repository": {
-    "url": "https://github.com/dfederm/karma-jasmine-html-reporter"
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz",
+  "_spec": "1.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": "",
+  "bugs": {
+    "url": "https://github.com/dfederm/karma-jasmine-html-reporter/issues"
   },
-  "author": "",
   "contributors": [
     {
@@ -42,4 +59,18 @@
     }
   ],
+  "description": "A Karma plugin. Dynamically displays tests results at debug.html page",
+  "devDependencies": {
+    "chalk": "*",
+    "jasmine-core": ">=3.8"
+  },
+  "homepage": "https://github.com/dfederm/karma-jasmine-html-reporter#readme",
+  "keywords": [
+    "karma-plugin",
+    "karma-reporter",
+    "html"
+  ],
+  "license": "MIT",
+  "main": "./src/index.js",
+  "name": "karma-jasmine-html-reporter",
   "peerDependencies": {
     "jasmine-core": ">=3.8",
@@ -47,9 +78,10 @@
     "karma-jasmine": ">=1.1"
   },
-  "license": "MIT",
-  "devDependencies": {
-    "chalk": "*",
-    "jasmine-core": ">=3.8"
+  "repository": {
+    "url": "git+https://github.com/dfederm/karma-jasmine-html-reporter.git"
   },
-  "readmeFilename": "README.md"
+  "scripts": {
+    "build": "node build/build.js"
+  },
+  "version": "1.7.0"
 }
Index: trip-planner-front/node_modules/karma-jasmine/package.json
===================================================================
--- trip-planner-front/node_modules/karma-jasmine/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma-jasmine/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,201 @@
 {
-  "name": "karma-jasmine",
-  "version": "4.0.1",
-  "description": "A Karma plugin - adapter for Jasmine testing framework.",
-  "main": "lib/index.js",
-  "files": [
-    "lib/*.js"
-  ],
-  "scripts": {
-    "test": "jasmine && grunt"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/karma-runner/karma-jasmine.git"
-  },
-  "keywords": [
-    "karma-plugin",
-    "karma-adapter",
-    "jasmine"
-  ],
-  "author": "Vojta Jina <vojta.jina@gmail.com>",
+  "_args": [
+    [
+      "karma-jasmine@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "karma-jasmine@4.0.1",
+  "_id": "karma-jasmine@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==",
+  "_location": "/karma-jasmine",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma-jasmine@4.0.1",
+    "name": "karma-jasmine",
+    "escapedName": "karma-jasmine",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Vojta Jina",
+    "email": "vojta.jina@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/karma-runner/karma-jasmine/issues"
+  },
+  "contributors": [
+    {
+      "name": "Maksim Ryzhikov",
+      "email": "rv.maksim@gmail.com"
+    },
+    {
+      "name": "johnjbarton",
+      "email": "johnjbarton@johnjbarton.com"
+    },
+    {
+      "name": "Mark Ethan Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "olegskl",
+      "email": "sklyanchuk@gmail.com"
+    },
+    {
+      "name": "dignifiedquire",
+      "email": "dignifiedquire@gmail.com"
+    },
+    {
+      "name": "Cornelius Schmale",
+      "email": "github@cschmale.de"
+    },
+    {
+      "name": "Arthur Thornton",
+      "email": "arthur@thestorefront.com"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "friedel.ziegelmayer@gmail.com"
+    },
+    {
+      "name": "Patrick McGuckin",
+      "email": "patrick@gskinner.com"
+    },
+    {
+      "name": "Richard Park",
+      "email": "objectiv@gmail.com"
+    },
+    {
+      "name": "XhmikosR",
+      "email": "xhmikosr@gmail.com"
+    },
+    {
+      "name": "Fernando Costa",
+      "email": "fadc80@gmail.com"
+    },
+    {
+      "name": "Nico Jansen",
+      "email": "jansennico@gmail.com"
+    },
+    {
+      "name": "Niels Dequeker",
+      "email": "niels.dequeker@gmail.com"
+    },
+    {
+      "name": "Robin Gloster",
+      "email": "robin@loc-com.de"
+    },
+    {
+      "name": "Sahat Yalkabov",
+      "email": "sakhat@gmail.com"
+    },
+    {
+      "name": "Schaaf, Martin",
+      "email": "703355+mschaaf@users.noreply.github.com"
+    },
+    {
+      "name": "Sergey Tatarintsev",
+      "email": "sevinf@yandex-team.ru"
+    },
+    {
+      "name": "Stefan Dragnev",
+      "email": "dragnev@telerik.com"
+    },
+    {
+      "name": "Vladimir Belov",
+      "email": "Vladimir.Belov@hotmail.com"
+    },
+    {
+      "name": "Yusuke Iinuma",
+      "email": "yinm@users.noreply.github.com"
+    },
+    {
+      "name": "jiverson",
+      "email": "jiverson222@gmail.com"
+    },
+    {
+      "name": "rpark",
+      "email": "objectiv@gmail.com"
+    },
+    {
+      "name": "Aaron Hartwig",
+      "email": "aaron.hartwig@whyhigh.com"
+    },
+    {
+      "name": "strille",
+      "email": "strille@users.noreply.github.com"
+    },
+    {
+      "name": "Alesei N",
+      "email": "github.com@bzik.net"
+    },
+    {
+      "name": "Barry Fitzgerald",
+      "email": "barfitzgerald@gmail.com"
+    },
+    {
+      "name": "Dirk T",
+      "email": "DirkToewe@GoogleMail.com"
+    },
+    {
+      "name": "Dmitriy Tychshenko",
+      "email": "dtychshenko@users.noreply.github.com"
+    },
+    {
+      "name": "Georgii Dolzhykov",
+      "email": "thorn.mailbox@gmail.com"
+    },
+    {
+      "name": "Gregg Van Hove",
+      "email": "gvanhove@pivotal.io"
+    },
+    {
+      "name": "Jacob Trimble",
+      "email": "modmaker@google.com"
+    },
+    {
+      "name": "João Pereira",
+      "email": "joaopapereira@gmail.com"
+    },
+    {
+      "name": "Keen Yee Liau",
+      "email": "kyliau@google.com"
+    },
+    {
+      "name": "Luis Aleman",
+      "email": "Lalem001@users.noreply.github.com"
+    },
+    {
+      "name": "Marek Vavrecan",
+      "email": "vavrecan@gmail.com"
+    },
+    {
+      "name": "Matthew Hill",
+      "email": "Matthew.Hill4@bskyb.com"
+    },
+    {
+      "name": "Milan Lempera",
+      "email": "milanlempera@gmail.com"
+    }
+  ],
   "dependencies": {
     "jasmine-core": "^3.6.0"
   },
+  "description": "A Karma plugin - adapter for Jasmine testing framework.",
   "devDependencies": {
     "@commitlint/cli": "^9.1.1",
@@ -47,10 +222,11 @@
     "load-grunt-tasks": "^5.1.0"
   },
-  "peerDependencies": {
-    "karma": "*"
-  },
   "engines": {
     "node": ">= 10"
   },
+  "files": [
+    "lib/*.js"
+  ],
+  "homepage": "https://github.com/karma-runner/karma-jasmine#readme",
   "husky": {
     "hooks": {
@@ -58,45 +234,22 @@
     }
   },
+  "keywords": [
+    "karma-plugin",
+    "karma-adapter",
+    "jasmine"
+  ],
   "license": "MIT",
-  "contributors": [
-    "Maksim Ryzhikov <rv.maksim@gmail.com>",
-    "johnjbarton <johnjbarton@johnjbarton.com>",
-    "Mark Ethan Trostler <mark@zzo.com>",
-    "Friedel Ziegelmayer <dignifiedquire@gmail.com>",
-    "olegskl <sklyanchuk@gmail.com>",
-    "dignifiedquire <dignifiedquire@gmail.com>",
-    "Cornelius Schmale <github@cschmale.de>",
-    "Arthur Thornton <arthur@thestorefront.com>",
-    "Friedel Ziegelmayer <friedel.ziegelmayer@gmail.com>",
-    "Patrick McGuckin <patrick@gskinner.com>",
-    "Richard Park <objectiv@gmail.com>",
-    "XhmikosR <xhmikosr@gmail.com>",
-    "Fernando Costa <fadc80@gmail.com>",
-    "Nico Jansen <jansennico@gmail.com>",
-    "Niels Dequeker <niels.dequeker@gmail.com>",
-    "Robin Gloster <robin@loc-com.de>",
-    "Sahat Yalkabov <sakhat@gmail.com>",
-    "Schaaf, Martin <703355+mschaaf@users.noreply.github.com>",
-    "Sergey Tatarintsev <sevinf@yandex-team.ru>",
-    "Stefan Dragnev <dragnev@telerik.com>",
-    "Vladimir Belov <Vladimir.Belov@hotmail.com>",
-    "Yusuke Iinuma <yinm@users.noreply.github.com>",
-    "jiverson <jiverson222@gmail.com>",
-    "rpark <objectiv@gmail.com>",
-    "Aaron Hartwig <aaron.hartwig@whyhigh.com>",
-    "strille <strille@users.noreply.github.com>",
-    "Alesei N <github.com@bzik.net>",
-    "Barry Fitzgerald <barfitzgerald@gmail.com>",
-    "Dirk T <DirkToewe@GoogleMail.com>",
-    "Dmitriy Tychshenko <dtychshenko@users.noreply.github.com>",
-    "Georgii Dolzhykov <thorn.mailbox@gmail.com>",
-    "Gregg Van Hove <gvanhove@pivotal.io>",
-    "Jacob Trimble <modmaker@google.com>",
-    "João Pereira <joaopapereira@gmail.com>",
-    "Keen Yee Liau <kyliau@google.com>",
-    "Luis Aleman <Lalem001@users.noreply.github.com>",
-    "Marek Vavrecan <vavrecan@gmail.com>",
-    "Matthew Hill <Matthew.Hill4@bskyb.com>",
-    "Milan Lempera <milanlempera@gmail.com>"
-  ]
+  "main": "lib/index.js",
+  "name": "karma-jasmine",
+  "peerDependencies": {
+    "karma": "*"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/karma-runner/karma-jasmine.git"
+  },
+  "scripts": {
+    "test": "jasmine && grunt"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/karma-source-map-support/package.json
===================================================================
--- trip-planner-front/node_modules/karma-source-map-support/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma-source-map-support/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,54 @@
 {
-  "name": "karma-source-map-support",
-  "version": "1.4.0",
-  "description": "Karma plugin for inline sourcemap support",
-  "main": "lib/index.js",
-  "dependencies": {
-    "source-map-support": "^0.5.5"
+  "_args": [
+    [
+      "karma-source-map-support@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "karma-source-map-support@1.4.0",
+  "_id": "karma-source-map-support@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==",
+  "_location": "/karma-source-map-support",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma-source-map-support@1.4.0",
+    "name": "karma-source-map-support",
+    "escapedName": "karma-source-map-support",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
   },
-  "homepage": "https://github.com/tschaub/karma-source-map-support",
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Tim Schaub",
     "url": "http://tschaub.net/"
   },
+  "bugs": {
+    "url": "https://github.com/tschaub/karma-source-map-support/issues"
+  },
+  "dependencies": {
+    "source-map-support": "^0.5.5"
+  },
+  "description": "Karma plugin for inline sourcemap support",
+  "devDependencies": {
+    "eslint": "^5.13.0",
+    "eslint-config-tschaub": "^12.0.1"
+  },
+  "eslintConfig": {
+    "extends": "tschaub",
+    "globals": {
+      "sourceMapSupport": false
+    }
+  },
+  "homepage": "https://github.com/tschaub/karma-source-map-support",
   "keywords": [
     "karma-plugin",
@@ -19,24 +58,14 @@
     "sourcemap"
   ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "karma-source-map-support",
   "repository": {
     "type": "git",
     "url": "git://github.com/tschaub/karma-source-map-support.git"
   },
-  "bugs": {
-    "url": "https://github.com/tschaub/karma-source-map-support/issues"
-  },
-  "license": "MIT",
   "scripts": {
     "test": "eslint lib"
   },
-  "eslintConfig": {
-    "extends": "tschaub",
-    "globals": {
-      "sourceMapSupport": false
-    }
-  },
-  "devDependencies": {
-    "eslint": "^5.13.0",
-    "eslint-config-tschaub": "^12.0.1"
-  }
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/karma/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/karma/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/karma/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/karma/node_modules/tmp/package.json
===================================================================
--- trip-planner-front/node_modules/karma/node_modules/tmp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma/node_modules/tmp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,75 @@
 {
-  "name": "tmp",
-  "version": "0.2.1",
+  "_args": [
+    [
+      "tmp@0.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "tmp@0.2.1",
+  "_id": "tmp@0.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+  "_location": "/karma/tmp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tmp@0.2.1",
+    "name": "tmp",
+    "escapedName": "tmp",
+    "rawSpec": "0.2.1",
+    "saveSpec": null,
+    "fetchSpec": "0.2.1"
+  },
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+  "_spec": "0.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "KARASZI István",
+    "email": "github@spam.raszi.hu",
+    "url": "http://raszi.hu/"
+  },
+  "bugs": {
+    "url": "http://github.com/raszi/node-tmp/issues"
+  },
+  "changelog": {
+    "labels": {
+      "breaking": ":boom: Breaking Change",
+      "enhancement": ":rocket: Enhancement",
+      "bug": ":bug: Bug Fix",
+      "documentation": ":memo: Documentation",
+      "internal": ":house: Internal"
+    },
+    "cacheDir": ".changelog"
+  },
+  "contributors": [
+    {
+      "name": "Carsten Klein",
+      "email": "trancesilken@gmail.com",
+      "url": "https://github.com/silkentrance"
+    }
+  ],
+  "dependencies": {
+    "rimraf": "^3.0.0"
+  },
   "description": "Temporary file and directory creator",
-  "author": "KARASZI István <github@spam.raszi.hu> (http://raszi.hu/)",
-  "contributors": [
-    "Carsten Klein <trancesilken@gmail.com> (https://github.com/silkentrance)"
+  "devDependencies": {
+    "eslint": "^6.3.0",
+    "eslint-plugin-mocha": "^6.1.1",
+    "istanbul": "^0.4.5",
+    "lerna-changelog": "^1.0.1",
+    "mocha": "^6.2.0"
+  },
+  "engines": {
+    "node": ">=8.17.0"
+  },
+  "files": [
+    "lib/"
   ],
+  "homepage": "http://github.com/raszi/node-tmp",
   "keywords": [
     "temporary",
@@ -17,42 +82,17 @@
   ],
   "license": "MIT",
-  "repository": "https://github.com/raszi/node-tmp.git",
-  "homepage": "http://github.com/raszi/node-tmp",
-  "bugs": {
-    "url": "http://github.com/raszi/node-tmp/issues"
-  },
-  "engines": {
-    "node": ">=8.17.0"
-  },
-  "dependencies": {
-    "rimraf": "^3.0.0"
-  },
-  "devDependencies": {
-    "eslint": "^6.3.0",
-    "eslint-plugin-mocha": "^6.1.1",
-    "istanbul": "^0.4.5",
-    "lerna-changelog": "^1.0.1",
-    "mocha": "^6.2.0"
-  },
   "main": "lib/tmp.js",
-  "files": [
-    "lib/"
-  ],
-  "changelog": {
-    "labels": {
-      "breaking": ":boom: Breaking Change",
-      "enhancement": ":rocket: Enhancement",
-      "bug": ":bug: Bug Fix",
-      "documentation": ":memo: Documentation",
-      "internal": ":house: Internal"
-    },
-    "cacheDir": ".changelog"
+  "name": "tmp",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/raszi/node-tmp.git"
   },
   "scripts": {
     "changelog": "lerna-changelog",
+    "clean": "rm -Rf ./coverage",
+    "doc": "jsdoc -c .jsdoc.json",
     "lint": "eslint lib --env mocha test",
-    "clean": "rm -Rf ./coverage",
-    "test": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha --report none --print none --dir ./coverage/json -u exports -R test/*-test.js && istanbul report --root ./coverage/json html && istanbul report text-summary",
-    "doc": "jsdoc -c .jsdoc.json"
-  }
+    "test": "npm run clean && istanbul cover ./node_modules/mocha/bin/_mocha --report none --print none --dir ./coverage/json -u exports -R test/*-test.js && istanbul report --root ./coverage/json html && istanbul report text-summary"
+  },
+  "version": "0.2.1"
 }
Index: trip-planner-front/node_modules/karma/node_modules/yargs/package.json
===================================================================
--- trip-planner-front/node_modules/karma/node_modules/yargs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma/node_modules/yargs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,35 @@
 {
-  "name": "yargs",
-  "version": "16.2.0",
-  "description": "yargs the modern, pirate-themed, successor to optimist.",
-  "main": "./index.cjs",
-  "exports": {
-    "./package.json": "./package.json",
-    ".": [
-      {
-        "import": "./index.mjs",
-        "require": "./index.cjs"
-      },
-      "./index.cjs"
-    ],
-    "./helpers": {
-      "import": "./helpers/helpers.mjs",
-      "require": "./helpers/index.js"
-    },
-    "./yargs": [
-      {
-        "require": "./yargs"
-      },
-      "./yargs"
+  "_args": [
+    [
+      "yargs@16.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
     ]
+  ],
+  "_development": true,
+  "_from": "yargs@16.2.0",
+  "_id": "yargs@16.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+  "_location": "/karma/yargs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "yargs@16.2.0",
+    "name": "yargs",
+    "escapedName": "yargs",
+    "rawSpec": "16.2.0",
+    "saveSpec": null,
+    "fetchSpec": "16.2.0"
   },
-  "type": "module",
-  "module": "./index.mjs",
+  "_requiredBy": [
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+  "_spec": "16.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/yargs/yargs/issues"
+  },
   "contributors": [
     {
@@ -31,17 +37,4 @@
       "url": "https://github.com/yargs/yargs/graphs/contributors"
     }
-  ],
-  "files": [
-    "browser.mjs",
-    "index.cjs",
-    "helpers/*.js",
-    "helpers/*",
-    "index.mjs",
-    "yargs",
-    "build",
-    "locales",
-    "LICENSE",
-    "lib/platform-shims/*.mjs",
-    "!*.d.ts"
   ],
   "dependencies": {
@@ -54,4 +47,5 @@
     "yargs-parser": "^20.2.2"
   },
+  "description": "yargs the modern, pirate-themed, successor to optimist.",
   "devDependencies": {
     "@types/chai": "^4.2.11",
@@ -77,34 +71,41 @@
     "yargs-test-extends": "^1.0.1"
   },
-  "scripts": {
-    "fix": "gts fix && npm run fix:js",
-    "fix:js": "standardx --fix '**/*.mjs' && standardx --fix '**/*.cjs' && standardx --fix './*.mjs' && standardx --fix './*.cjs'",
-    "posttest": "npm run check",
-    "test": "c8 mocha ./test/*.cjs --require ./test/before.cjs --timeout=12000 --check-leaks",
-    "test:esm": "c8 mocha ./test/esm/*.mjs --check-leaks",
-    "coverage": "c8 report --check-coverage",
-    "prepare": "npm run compile",
-    "pretest": "npm run compile -- -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs",
-    "compile": "rimraf build && tsc",
-    "postcompile": "npm run build:cjs",
-    "build:cjs": "rollup -c rollup.config.cjs",
-    "postbuild:cjs": "rimraf ./build/index.cjs.d.ts",
-    "check": "gts lint && npm run check:js",
-    "check:js": "standardx '**/*.mjs' && standardx '**/*.cjs' && standardx './*.mjs' && standardx './*.cjs'",
-    "clean": "gts clean"
+  "engines": {
+    "node": ">=10"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/yargs/yargs.git"
-  },
-  "homepage": "https://yargs.js.org/",
-  "standardx": {
-    "ignore": [
-      "build",
-      "helpers",
-      "**/example/**",
-      "**/platform-shims/esm.mjs"
+  "exports": {
+    "./package.json": "./package.json",
+    ".": [
+      {
+        "import": "./index.mjs",
+        "require": "./index.cjs"
+      },
+      "./index.cjs"
+    ],
+    "./helpers": {
+      "import": "./helpers/helpers.mjs",
+      "require": "./helpers/index.js"
+    },
+    "./yargs": [
+      {
+        "require": "./yargs"
+      },
+      "./yargs"
     ]
   },
+  "files": [
+    "browser.mjs",
+    "index.cjs",
+    "helpers/*.js",
+    "helpers/*",
+    "index.mjs",
+    "yargs",
+    "build",
+    "locales",
+    "LICENSE",
+    "lib/platform-shims/*.mjs",
+    "!*.d.ts"
+  ],
+  "homepage": "https://yargs.js.org/",
   "keywords": [
     "argument",
@@ -117,6 +118,37 @@
   ],
   "license": "MIT",
-  "engines": {
-    "node": ">=10"
-  }
+  "main": "./index.cjs",
+  "module": "./index.mjs",
+  "name": "yargs",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/yargs/yargs.git"
+  },
+  "scripts": {
+    "build:cjs": "rollup -c rollup.config.cjs",
+    "check": "gts lint && npm run check:js",
+    "check:js": "standardx '**/*.mjs' && standardx '**/*.cjs' && standardx './*.mjs' && standardx './*.cjs'",
+    "clean": "gts clean",
+    "compile": "rimraf build && tsc",
+    "coverage": "c8 report --check-coverage",
+    "fix": "gts fix && npm run fix:js",
+    "fix:js": "standardx --fix '**/*.mjs' && standardx --fix '**/*.cjs' && standardx --fix './*.mjs' && standardx --fix './*.cjs'",
+    "postbuild:cjs": "rimraf ./build/index.cjs.d.ts",
+    "postcompile": "npm run build:cjs",
+    "posttest": "npm run check",
+    "prepare": "npm run compile",
+    "pretest": "npm run compile -- -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs",
+    "test": "c8 mocha ./test/*.cjs --require ./test/before.cjs --timeout=12000 --check-leaks",
+    "test:esm": "c8 mocha ./test/esm/*.mjs --check-leaks"
+  },
+  "standardx": {
+    "ignore": [
+      "build",
+      "helpers",
+      "**/example/**",
+      "**/platform-shims/esm.mjs"
+    ]
+  },
+  "type": "module",
+  "version": "16.2.0"
 }
Index: trip-planner-front/node_modules/karma/package.json
===================================================================
--- trip-planner-front/node_modules/karma/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/karma/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,419 +1,1621 @@
 {
-  "name": "karma",
-  "description": "Spectacular Test Runner for JavaScript.",
-  "homepage": "https://karma-runner.github.io/",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/karma-runner/karma.git"
+  "_args": [
+    [
+      "karma@6.3.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "karma@6.3.4",
+  "_id": "karma@6.3.4",
+  "_inBundle": false,
+  "_integrity": "sha512-hbhRogUYIulfkBTZT7xoPrCYhRBnBoqbbL4fszWD0ReFGUxU+LYBr3dwKdAluaDQ/ynT9/7C+Lf7pPNW4gSx4Q==",
+  "_location": "/karma",
+  "_phantomChildren": {
+    "cliui": "7.0.4",
+    "escalade": "3.1.1",
+    "get-caller-file": "2.0.5",
+    "require-directory": "2.1.1",
+    "rimraf": "3.0.2",
+    "string-width": "4.2.3",
+    "y18n": "5.0.8",
+    "yargs-parser": "20.2.9"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "karma@6.3.4",
+    "name": "karma",
+    "escapedName": "karma",
+    "rawSpec": "6.3.4",
+    "saveSpec": null,
+    "fetchSpec": "6.3.4"
+  },
+  "_requiredBy": [
+    "#DEV:/"
+  ],
+  "_resolved": "https://registry.npmjs.org/karma/-/karma-6.3.4.tgz",
+  "_spec": "6.3.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Vojta Jína",
+    "email": "vojta.jina@gmail.com"
+  },
+  "bin": {
+    "karma": "bin/karma"
   },
   "bugs": {
     "url": "https://github.com/karma-runner/karma/issues"
   },
-  "keywords": [
-    "karma",
-    "spectacular",
-    "runner",
-    "karma",
-    "js",
-    "javascript",
-    "testing",
-    "test",
-    "remote",
-    "execution"
-  ],
-  "author": "Vojta Jína <vojta.jina@gmail.com>",
   "contributors": [
-    "Friedel Ziegelmayer <friedel.ziegelmayer@gmail.com>",
-    "dignifiedquire <friedel.ziegelmayer@gmail.com>",
-    "johnjbarton <johnjbarton@johnjbarton.com>",
-    "Yaroslav Admin <devoto13@gmail.com>",
-    "greenkeeperio-bot <support@greenkeeper.io>",
-    "Karma Bot <karmarunnerbot@gmail.com>",
-    "Maksim Ryzhikov <rv.maksim@gmail.com>",
-    "ukasz Usarz <lukasz.usarz@gmail.com>",
-    "semantic-release-bot <semantic-release-bot@martynus.net>",
-    "Christian Budde Christensen <budde377@gmail.com>",
-    "Wesley Cho <wesley.cho@gmail.com>",
-    "taichi <ryushi@gmail.com>",
-    "Liam Newman <bitwiseman@gmail.com>",
-    "lukasz <lukasz.usarz@gmail.com>",
-    "Anton <anton.redfox@gmail.com>",
-    "Michał Gołębiowski-Owczarek <m.goleb@gmail.com>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Mark Trostler <mark@zzo.com>",
-    "Ciro Nunes <ciroanunes@gmail.com>",
-    "Christian Budde Christensen <christi@n-bud.de>",
-    "Pawel Kozlowski <pkozlowski.opensource@gmail.com>",
-    "Robo <hop2deep@gmail.com>",
-    "Shyam Seshadri <shyamseshadri@gmail.com>",
-    "Tim Cuthbertson <tim@gfxmonk.net>",
-    "Daniel Compton <desk@danielcompton.net>",
-    "Mark Ethan Trostler <mark@zzo.com>",
-    "Mourad <mourad@elmaouchi.com>",
-    "Brian Di Palma <offler@gmail.com>",
-    "Georgii Dolzhykov <thorn.mailbox@gmail.com>",
-    "Kim Joar Bekkelund <kjbekkelund@gmail.com>",
-    "Matthias Oßwald <1410947+matz3@users.noreply.github.com>",
-    "Nick Malaguti <nmalaguti@palantir.com>",
-    "joshjb84 <joshjb84@hotmail.com>",
-    "vivganes <vivek@vivekganesan.com>",
-    "Andrew Martin <sublimino@gmail.com>",
-    "Aymeric Beaumet <aymeric@beaumet.me>",
-    "Brian Ford <btford@umich.edu>",
-    "Chris Casola <chriscasola@gmail.com>",
-    "Chris Hunt <chrahunt@gmail.com>",
-    "Daniel Aleksandersen <code@daniel.priv.no>",
-    "David Souther <davidsouther@gmail.com>",
-    "Ilya Volodin <ivolodin@vistaprint.com>",
-    "Iristyle <Iristyle@github>",
-    "Jake Champion <jakechampion.jake2@googlemail.com>",
-    "Jeff Jewiss <jeffjewiss@gmail.com>",
-    "Jérémy Judéaux <jeremy.judeaux@volune.net>",
-    "Marcello Nuccio <marcello.nuccio@gmail.com>",
-    "Pieter Mees <pietermees@users.noreply.github.com>",
-    "pavelgj <pavelgj@gmail.com>",
-    "sylvain-hamel <sylvainhamel0@gmail.com>",
-    "ywong <wongyok@gmail.com>",
-    "Andrew Morris <voltrevo@gmail.com>",
-    "Aseem Bansal <aseembansal@live.com>",
-    "Bryan Smith <bryanrsmith@gmail.com>",
-    "Bulat Shakirzyanov <mallluhuct@gmail.com>",
-    "ChangZhuo Chen (陳昌倬) <czchen@gmail.com>",
-    "Chris Bottin <chrisbottin@users.noreply.github.com>",
-    "Cyrus Chan <chan1cyrus2@gmail.com>",
-    "DarthCharles <carlos.darth@gmail.com>",
-    "David Herges <dherges@users.noreply.github.com>",
-    "David Pärsson <david@parsson.se>",
-    "Ethan J. Brown <ethan_j_brown@hotmail.com>",
-    "Ezra Brooks <ezra.m.brooks@gmail.com>",
-    "Filipe Guerra <alias.mac@gmail.com>",
-    "Greenkeeper <support@greenkeeper.io>",
-    "Hugues Malphettes <hmalphettes@gmail.com>",
-    "Igor Minar <igor@angularjs.org>",
-    "Igor Minar <iiminar@gmail.com>",
-    "Ilya Goncharov <ilgonmic@gmail.com>",
-    "James Ford <jford@psyked.co.uk>",
-    "James Talmage <james@talmage.io>",
-    "Janderson Constantino <jandersonconstantino@gmail.com>",
-    "Jonas Pommerening <jonas.pommerening@aixigo.de>",
-    "Jonathan Freeman <freethejazz@gmail.com>",
-    "Jonathan Ginsburg <jon@than.ml>",
-    "Josh <joshhunt180@gmail.com>",
-    "KJ Tsanaktsidis <kjtsanaktsidis@gmail.com>",
-    "Keen Yee Liau <kyliau@google.com>",
-    "Kelly Jensen <kellyrayj@gmail.com>",
-    "Kevin Huang <kevinziwenhuang@gmail.com>",
-    "Kevin WENNER <kevin.wenner@massmotionmedia.com>",
-    "Levi Thomason <me@levithomason.com>",
-    "Luke Page <luke.a.page@gmail.com>",
-    "Matt Lewis <matthew.lewis@socialsignin.co.uk>",
-    "Nico Jansen <jansennico@gmail.com>",
-    "Parashuram <code@r.nparashuram.com>",
-    "Pat Tullmann <pt@bebop.co>",
-    "PatrickJS <github@gdi2290.com>",
-    "Richard Harrington <rwharrington87@gmail.com>",
-    "Roarke Gaskill <roarke.gaskill@gmail.com>",
-    "Robert Stein <SteinRobert@users.noreply.github.com>",
-    "Robin Liang <robin.gnail@gmail.com>",
-    "Ruben Bridgewater <ruben.bridgewater@fintura.de>",
-    "Réda Housni Alaoui <reda.housnialaoui@gmail.com>",
-    "Sammy Jelin <sjelin@gmail.com>",
-    "Sergei Startsev <ai@programist.ru>",
-    "Sergey Simonchik <sergey.simonchik@gmail.com>",
-    "Sergey Simonchik <sergey.simonchik@jetbrains.com>",
-    "Shane Russell <shane1337@gmail.com>",
-    "Stefan Dragnev <dragnev@telerik.com>",
-    "Steve Mao <maochenyan@gmail.com>",
-    "Steve Mao <steve.mao@healthinteract.com.au>",
-    "Steve Van Opstal <stevevanopstal@gmail.com>",
-    "Sylvain Hamel <sylvainhamel0@gmail.com>",
-    "SymbioticKilla <59652865+SymbioticKilla@users.noreply.github.com>",
-    "Terry <zhangwenlp@vip.qq.com>",
-    "Thomas Parisot <thomas@oncle-tom.net>",
-    "Tom Erik Støwer <tomerik@getkahoot.com>",
-    "Vivek Ganesan <caliberoviv@gmail.com>",
-    "Vladimir Starkov <iamstarkov@users.noreply.github.com>",
-    "comdiv <fagim.sadykov@gmail.com>",
-    "karmarunnerbot <karmarunnerbot@gmail.com>",
-    "ngiebel <ngiebel@starkinvestments.com>",
-    "rdodev <rubenoz@gmail.com>",
-    "u812 <0u812@github.com>",
-    "Aaron Powell <me@aaron-powell.com>",
-    "Adrien Crivelli <adrien.crivelli@gmail.com>",
-    "Alan Agius <alan.agius4@gmail.com>",
-    "Alejandro Mantecon Guillen <alemangui@gmail.com>",
-    "Ales Rosina <alesrosina@users.noreply.github.com>",
-    "Alexander Pepper <alexander.pepper@infopark.de>",
-    "Alexander Shtuchkin <ashtuchkin@gmail.com>",
-    "Alexei <solo@solo.md>",
-    "Ameer Jhan <ameerjhanprof@gmail.com>",
-    "Anders Ekdahl <anders.ekdahl@gmail.com>",
-    "Anders Janmyr <anders.janmyr@sonymobile.com>",
-    "Andreas Krummsdorf <a.krummsdorf@litixsoft.de>",
-    "Andreas Pålsson <a.palsson@gmail.com>",
-    "Andrew Fischer <afischer@shutterfly.com>",
-    "Andrew Marcinkevičius <andrew.web@ifdattic.com>",
-    "Andrey Chalkin <L2jLiga@gmail.com>",
-    "Andy Joslin <andytjoslin@gmail.com>",
-    "Anton Usmansky <cody0@yandex-team.ru>",
-    "Athur Ming <mingguobin@live.com>",
-    "Atul Bhosale <atul1bhosale@gmail.com>",
-    "AugustinLF <augustin.public@gmail.com>",
-    "AvnerCohen <israbirding@gmail.com>",
-    "Awad Mackie <firesock.serwalek@gmail.com>",
-    "Basemm <BAsM.Egy@gmail.com>",
-    "Benoit Charbonnier <benoit.charbonnier@gmail.com>",
-    "Bhavesh Kakadiya <bhavesh@superhuman.com>",
-    "Borewit <Borewit@users.noreply.github.com>",
-    "Brady Wied <brady@bswtechconsulting.com>",
-    "Bram Borggreve <borggreve@gmail.com>",
-    "Breno Calazans <breno@vtex.com.br>",
-    "Brian Donovan <donovan@squareup.com>",
-    "Brian Donovan <me@brian-donovan.com>",
-    "Brian M Hunt <brianmhunt@gmail.com>",
-    "Cagdas Bayram <cbayram@cloudera.com>",
-    "Carl Goldberg <carlgoldberg1236@gmail.com>",
-    "Chad Smith <chad@configit.com>",
-    "Chang Wang <cheapsteak@gmail.com>",
-    "Charles Suh <charlessuh@users.noreply.github.com>",
-    "Chelsea Urquhart <curquhart@users.noreply.github.com>",
-    "Chris <camargo.cac@gmail.com>",
-    "Chris Chua <chris.sirhc@gmail.com>",
-    "Chris Dawson <xrdawson@gmail.com>",
-    "Christian Weiss <cweiss@stripe.com>",
-    "Christopher Hiller <chiller@badwing.com>",
-    "Chuf <42591821+GChuf@users.noreply.github.com>",
-    "Ciro S. Costa <ciro.costa@usp.br>",
-    "Daan Stolp <mail@daanstolp.nl>",
-    "Damien Choizit <damien.choizit@gmail.com>",
-    "Dan Siwiec <daniel.siwiec@gmail.com>",
-    "Dan Thareja <danthareja@gmail.com>",
-    "Danny Croft <danny.croft@yahoo.co.uk>",
-    "Danny Tuppeny <danny@tuppeny.com>",
-    "David Jensen <david@frode.(none)>",
-    "David M. Karr <dk068x@att.com>",
-    "Derek Gould <dgould@birst.com>",
-    "Derek Schaller <dschaller@lyft.com>",
-    "Dieter Oberkofler <doberkofler@users.noreply.github.com>",
-    "Dillon <mdillon@reachmail.com>",
-    "Dmitrii Abramov <dabramov@yahoo-inc.com>",
-    "Dmitriy Ryajov <dryajov@gmail.com>",
-    "Donovan Hutchinson <donovanh@gmail.com>",
-    "Douglas Blumeyer <DougBlumeyer@users.noreply.github.com>",
-    "Douglas Blumeyer <pair+dblumeyer@vmware.com>",
-    "Dunja Radulov <dradulov@renderedtext.com>",
-    "ERt <ert.wroc@gmail.com>",
-    "Ed Rooth <ed.rooth@rackspace.com>",
-    "Eddie Monge <eddie@eddiemonge.com>",
-    "Eden <mazzolaeden@gmail.com>",
-    "Edward Hutchins <eahutchins@gmail.com>",
-    "Eldar Jafarov <djkojb@gmail.com>",
-    "Eric Baer <me@ericbaer.com>",
-    "Esteban Marin <estebanmarin@gmx.ch>",
-    "Fabian Beuke <mail@beuke.org>",
-    "Filipe Silva <filipematossilva@gmail.com>",
-    "Franck Garcia <garcia.franck@gmail.com>",
-    "Fred Sauer <fredsa@google.com>",
-    "Frederic Hemberger <mail@frederic-hemberger.de>",
-    "Fredrik Bonander <carl.fredrik.bonander@gmail.com>",
-    "Gavin Aiken <gavin@aiken.org.uk>",
-    "Geert Van Laethem <geert.van.laethem@pandora.be>",
-    "Glenn Anderson <ondoher@gmail.com>",
-    "Greg Thornton <xdissent@me.com>",
-    "Gregory Cowan <g.cowan@amnzero.nl>",
-    "Hendrik Purmann <h.purmann@googlemail.com>",
-    "Homa Wong <homawong@gmail.com>",
-    "Igor Lima <lima.igorribeiro@gmail.com>",
-    "Islam Sharabash <islam.sharabash@gmail.com>",
-    "Jack Tarantino <jacopo.tarantino@gmail.com>",
-    "Jacob Trimble <modmaker@google.com>",
-    "Jakub Z <jakzale@gmail.com>",
-    "James Shore <jshore@jamesshore.com>",
-    "Jan Molak <jan.molak@smartcodeltd.co.uk>",
-    "Jeff Froom <jeff@jfroom.com>",
-    "Jeff Lage <jefflage@me.com>",
-    "Jeff Yates <jeff.yates@alumni.manchester.ac.uk>",
-    "Jeremy Axelrod <axelrod.jeremy@gmail.com>",
-    "Jerry Reptak <jreptak@gmail.com>",
-    "Jesse M. Holmes <wolfhoundjesse@gmail.com>",
-    "Joe Lencioni <joe.lencioni@brigade.com>",
-    "Johannes Gorset <jgorset@gmail.com>",
-    "John Wehr <johnwehr@gmail.com>",
-    "Jon Bretman <jon.bretman@gmail.com>",
-    "Jonathan ES Lin <ernsheong@gmail.com>",
-    "Jonathan Felchlin <jonathan@xgecko.com>",
-    "Jonathan Niles <jniles@users.noreply.github.com>",
-    "Josh Lory <josh.lory@code.org>",
-    "João Marcos Duarte <joumd86@gmail.com>",
-    "Julian Connor <julian.connor@venmo.com>",
-    "Jurko Gospodnetić <jurko.gospodnetic@pke.hr>",
-    "Justin Ridgewell <jridgewell@users.noreply.github.com>",
-    "KahWee Teng <t@kw.sg>",
-    "Karl Lindmark <karl.lindmark@ninetwozero.com>",
-    "Karol Fabjańczuk <karol.fabjanczuk@lemondemon.pl>",
-    "Karolis Narkevicius <karolis.n@gmail.com>",
-    "Keats <balthek@gmail.com>",
-    "Keith Cirkel <github@keithcirkel.co.uk>",
-    "Kent C. Dodds <kent@doddsfamily.us>",
-    "Kevin Ortman <kevin_ortman@msn.com>",
-    "Kostiantyn Kahanskyi <kostiantyn.kahanskyi@googlemail.com>",
-    "Kris Kowal <kris@cixar.com>",
-    "Lenny Urbanowski <lenny@itslennysfault.com>",
-    "Long Ho <longlho@users.noreply.github.com>",
-    "LoveIsGrief <just.another.michaelv@gmail.com>",
-    "Lucas Theisen <lucastheisen@pastdev.com>",
-    "Lukasz Zatorski <lzatorski@gmail.com>",
-    "M1xA <AnyCPU@users.noreply.github.com>",
-    "Magnus Markling <github@markling.com>",
-    "Manfred Stock <m@nfred.ch>",
-    "Manoel <manoel.lobo@gmail.com>",
-    "Marko Anastasov <marko@renderedtext.com>",
-    "Martin Geisler <martin@geisler.net>",
-    "Martin Jul <martin@mjul.com>",
-    "Martin Lemanski <martin.lemanski@gmx.at>",
-    "Martin Probst <martin@probst.io>",
-    "Marvin Heilemann <m.heilemann@protonmail.com>",
-    "Matias Niemelä <matias@yearofmoo.com>",
-    "Matthew Amato <matt.amato@gmail.com>",
-    "Matthew Cale <mattc41190@gmail.com>",
-    "Matthew Machuga <machuga@gmail.com>",
-    "Matthias Oßwald <matz3@users.noreply.github.com>",
-    "Matti Paksula <matti.paksula@iki.fi>",
-    "Mattijs Kneppers <mattijs@arttech.nl>",
-    "Max Waterman <davidmaxwaterman@fastmail.co.uk>",
-    "Merott Movahedi <merott@merott.com>",
-    "Merrick Christensen <merrick.christensen@gmail.com>",
-    "Michael Krotscheck <krotscheck@gmail.com>",
-    "Michał Siwek <mike21@aol.pl>",
-    "Milan Aleksic <milanaleksic@gmail.com>",
-    "Milana Stojadinov <mstojadinov@renderedtext.com>",
-    "Mohamed Eltuhamy <tuhamy@gmail.com>",
-    "Nathan Cornelius <ndcornelius@users.noreply.github.com>",
-    "Nathan Hunzaker <nate.hunzaker@gmail.com>",
-    "NeverwinterMoon <manni.calavera@gmail.com>",
-    "Nick Carter <thynctank@thynctank.com>",
-    "Nick McCurdy <nick@nickmccurdy.com>",
-    "Nick Payne <nick@kurai.co.uk>",
-    "Nick Petruzzelli <code.npetruzzelli@gmail.com>",
-    "Nick Petruzzelli <npetruzzelli@users.noreply.github.com>",
-    "Nick Williams <mr.nicksta@gmail.com>",
-    "Nicolas Artman <nicolasartman@users.noreply.github.com>",
-    "Nicolas Ferrero <ferrero.nicolas@gmail.com>",
-    "Nikita Balakirev <balakirevnikita@yandex.ru>",
-    "Nir Moav <nirmoav@users.noreply.github.com>",
-    "Nish <nishantpatel611@gmail.com>",
-    "Nuno Job <nunojobpinto@gmail.com>",
-    "Oleg Gomozov <blackswanny@gmail.com>",
-    "Olivier Yiptong <olivier@olivieryiptong.com>",
-    "OniOni <mathieu.c.sabourin@gmail.com>",
-    "OpenShift guest <mrpatan@gmail.com>",
-    "Outsider <outsideris@gmail.com>",
-    "Parashuram <code@nparashuram.com>",
-    "Pascal Hartig <phartig@rdrei.net>",
-    "Patrick Lussan <patrick.lussan@componize.com>",
-    "Patrick Neschkudla <neschkudla@gmail.com>",
-    "Patrik Henningsson <patrik.henningsson@gmail.com>",
-    "Paul Gschwendtner <paulgschwendtner@gmail.com>",
-    "Paweł Kapalla <pkapalla@xesenix.pl>",
-    "Pedro Araujo <pedrotcaraujo@gmail.com>",
-    "Pete Bacon Darwin <pete@bacondarwin.com>",
-    "Pete Swan <pete@indabamusic.com>",
-    "Peter Burns <rictic@gmail.com>",
-    "Peter Halliday <pghalliday@gmail.com>",
-    "Peter McAlpine <peter.mcalpine@arcticwolf.com>",
-    "Peter Newman <peternewman@users.noreply.github.com>",
-    "Peter Yates <pd.yates@gmail.com>",
-    "Philip Harrison <philip@mailharrison.com>",
-    "Pierre Vanduynslager <pierre.denis.vanduynslager@gmail.com>",
-    "Piotr Błażejewicz (Peter Blazejewicz) <peterblazejewicz@users.noreply.github.com>",
-    "Piper Chester <piperchester@users.noreply.github.com>",
-    "Rafal Lindemann <rl@stamina.pl>",
-    "Remy Sharp <remy@remysharp.com>",
-    "Ricardo Melo Joia <ricardo.joia@gmail.com>",
-    "Rich Kuzsma <rkuzsma@gmail.com>",
-    "Rich Trott <rtrott@gmail.com>",
-    "Richard Herrera <richard.herrera@nfl.com>",
-    "Roarke Gaskill <rgaskill@nexvex.com>",
-    "Rob Cherry <rcherry@reverbnation.com>",
-    "Rob Dodson <lets.email.rob@gmail.com>",
-    "Rogério Vicente <rogeriopvl@gmail.com>",
-    "Ruben Bridgewater <ruben@bridgewater.de>",
-    "Rémi <r3mi@users.sourceforge.net>",
-    "Sahat Yalkabov <sakhat@gmail.com>",
-    "Sam Rawlins <sam.rawlins@gmail.com>",
-    "Sam Rawlins <srawlins@google.com>",
-    "Samuel Marks <samuelmarks@gmail.com>",
-    "Saugat Acharya <mesaugat@gmail.com>",
-    "Schmulik Raskin <schmuli@gmail.com>",
-    "Sergey Kruk <sergey.kruk@gmail.com>",
-    "Seth Rhodes <seth@thinkpixbit.com>",
-    "Shahar Mor <shaharmor1@gmail.com>",
-    "Shane Osbourne <shane.osbourne8@gmail.com>",
-    "Sho Ikeda <suicaicoca@gmail.com>",
-    "Sibiraj <20282546+Sibiraj-S@users.noreply.github.com>",
-    "Simen Bekkhus <sbekkhus91@gmail.com>",
-    "Simon Warta <2603011+webmaster128@users.noreply.github.com>",
-    "Simone Gentili <sensorario@gmail.com>",
-    "Slava Kotiya <sk@nexttuesday.de>",
-    "Sophie Cooper <scooper91@users.noreply.github.com>",
-    "Stephen Hazleton <shazleto@gmail.com>",
-    "Stuart Memo <stuartmemo@gmail.com>",
-    "Taylor Buley <buley@outlook.com>",
-    "Taylor Hakes <taylor.hakes@gmail.com>",
-    "Terin Stock <terinjokes@gmail.com>",
-    "Thai Pangsakulyanont @ Taskworld <thai.p@taskworld.com>",
-    "Thijs Triemstra <info@collab.nl>",
-    "Thomas Parisot <thomas.parisot@bbc.co.uk>",
-    "Tim Gates <tim.gates@iress.com>",
-    "Tim Hartman <tbhartman@gmail.com>",
-    "Tim Olshansky <tim.olshansky@gmail.com>",
-    "Timo Tijhof <krinklemail@gmail.com>",
-    "Tom MacWright <tom@macwright.org>",
-    "TrevDev <trevor@kareo.com>",
-    "Tyler Akins <fidian@rumkin.com>",
-    "Vasily Ostanin <bazilio91@gmail.com>",
-    "Veronica Lynn <veronica.lynn@redjack.com>",
-    "Vincent Taverna <vinnymac@gmail.com>",
-    "Vitor Buzinaro <funny.hc@gmail.com>",
-    "Volune <jeremy.judeaux@volune.net>",
-    "Vova Bilonenko <bilonenko.v@gmail.com>",
-    "Wizek <123.wizek@gmail.com>",
-    "XhmikosR <xhmikosr@gmail.com>",
-    "Yaniv Efraim <yaniv.efraim@gmail.com>",
-    "Yi Wang <e@yi-wang.me>",
-    "Yvonne Yip <ykyyip@google.com>",
-    "Zhang zhengzheng <code@tychio.net>",
-    "adamnation <arowe@illumina.com>",
-    "ahaurw01 <ahaurwitz@gmail.com>",
-    "ashaffer <darawk@gmail.com>",
-    "cexbrayat <cedric@ninja-squad.com>",
-    "coderaiser <mnemonic.enemy@gmail.com>",
-    "compact <compact@users.noreply.github.com>",
-    "coridrew <coridrew@gmail.com>",
-    "cy6erskunk <cyberskunk@gmail.com>",
-    "david-garcia-nete <david.garcia.nete@gmail.com>",
-    "deepak1556 <hop2deep@gmail.com>",
-    "dorey <dorey415@gmail.com>",
-    "grifball <scottgriffy@gmail.com>",
-    "hdmr14 <58992133+hdmr14@users.noreply.github.com>",
-    "hrgdavor <hrgdavor@gmail.com>",
-    "ianjobling <ijobling@codio.com>",
-    "inf3rno <laszlo.janszky@gmail.com>",
-    "is-already-taken <1771602+is-already-taken@users.noreply.github.com>",
-    "jjoos <jan@deelstra.org>",
-    "jvalkeejarvi <jvalkeejarvi@gmail.com>",
-    "kyo_ago <kyo.ago@gmail.com>",
-    "lanshunfang <lanshunfang@gmail.com>",
-    "lusarz <lukasz.usarz@gmail.com>",
-    "maik <mauk@gulli.com>",
-    "mdemo <mengdesen09@qq.com>",
-    "nathanfaucett <nathanfaucett@gmail.com>",
-    "pardoman <pardo.medina@gmail.com>",
-    "thetrevdev <thetrevdev@gmail.com>",
-    "thorn0 <thorn.mailbox@gmail.com>",
-    "toran billups <toranb@gmail.com>",
-    "xel23 <sawqe1@yandex.ru>",
-    "chalkerx@gmail.com>",
-    "weiran.zsd@outlook.com>"
+    {
+      "name": "Friedel Ziegelmayer",
+      "email": "friedel.ziegelmayer@gmail.com"
+    },
+    {
+      "name": "dignifiedquire",
+      "email": "friedel.ziegelmayer@gmail.com"
+    },
+    {
+      "name": "johnjbarton",
+      "email": "johnjbarton@johnjbarton.com"
+    },
+    {
+      "name": "Yaroslav Admin",
+      "email": "devoto13@gmail.com"
+    },
+    {
+      "name": "greenkeeperio-bot",
+      "email": "support@greenkeeper.io"
+    },
+    {
+      "name": "Karma Bot",
+      "email": "karmarunnerbot@gmail.com"
+    },
+    {
+      "name": "Maksim Ryzhikov",
+      "email": "rv.maksim@gmail.com"
+    },
+    {
+      "name": "ukasz Usarz",
+      "email": "lukasz.usarz@gmail.com"
+    },
+    {
+      "name": "semantic-release-bot",
+      "email": "semantic-release-bot@martynus.net"
+    },
+    {
+      "name": "Christian Budde Christensen",
+      "email": "budde377@gmail.com"
+    },
+    {
+      "name": "Wesley Cho",
+      "email": "wesley.cho@gmail.com"
+    },
+    {
+      "name": "taichi",
+      "email": "ryushi@gmail.com"
+    },
+    {
+      "name": "Liam Newman",
+      "email": "bitwiseman@gmail.com"
+    },
+    {
+      "name": "lukasz",
+      "email": "lukasz.usarz@gmail.com"
+    },
+    {
+      "name": "Anton",
+      "email": "anton.redfox@gmail.com"
+    },
+    {
+      "name": "Michał Gołębiowski-Owczarek",
+      "email": "m.goleb@gmail.com"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Mark Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Ciro Nunes",
+      "email": "ciroanunes@gmail.com"
+    },
+    {
+      "name": "Christian Budde Christensen",
+      "email": "christi@n-bud.de"
+    },
+    {
+      "name": "Pawel Kozlowski",
+      "email": "pkozlowski.opensource@gmail.com"
+    },
+    {
+      "name": "Robo",
+      "email": "hop2deep@gmail.com"
+    },
+    {
+      "name": "Shyam Seshadri",
+      "email": "shyamseshadri@gmail.com"
+    },
+    {
+      "name": "Tim Cuthbertson",
+      "email": "tim@gfxmonk.net"
+    },
+    {
+      "name": "Daniel Compton",
+      "email": "desk@danielcompton.net"
+    },
+    {
+      "name": "Mark Ethan Trostler",
+      "email": "mark@zzo.com"
+    },
+    {
+      "name": "Mourad",
+      "email": "mourad@elmaouchi.com"
+    },
+    {
+      "name": "Brian Di Palma",
+      "email": "offler@gmail.com"
+    },
+    {
+      "name": "Georgii Dolzhykov",
+      "email": "thorn.mailbox@gmail.com"
+    },
+    {
+      "name": "Kim Joar Bekkelund",
+      "email": "kjbekkelund@gmail.com"
+    },
+    {
+      "name": "Matthias Oßwald",
+      "email": "1410947+matz3@users.noreply.github.com"
+    },
+    {
+      "name": "Nick Malaguti",
+      "email": "nmalaguti@palantir.com"
+    },
+    {
+      "name": "joshjb84",
+      "email": "joshjb84@hotmail.com"
+    },
+    {
+      "name": "vivganes",
+      "email": "vivek@vivekganesan.com"
+    },
+    {
+      "name": "Andrew Martin",
+      "email": "sublimino@gmail.com"
+    },
+    {
+      "name": "Aymeric Beaumet",
+      "email": "aymeric@beaumet.me"
+    },
+    {
+      "name": "Brian Ford",
+      "email": "btford@umich.edu"
+    },
+    {
+      "name": "Chris Casola",
+      "email": "chriscasola@gmail.com"
+    },
+    {
+      "name": "Chris Hunt",
+      "email": "chrahunt@gmail.com"
+    },
+    {
+      "name": "Daniel Aleksandersen",
+      "email": "code@daniel.priv.no"
+    },
+    {
+      "name": "David Souther",
+      "email": "davidsouther@gmail.com"
+    },
+    {
+      "name": "Ilya Volodin",
+      "email": "ivolodin@vistaprint.com"
+    },
+    {
+      "name": "Iristyle",
+      "email": "Iristyle@github"
+    },
+    {
+      "name": "Jake Champion",
+      "email": "jakechampion.jake2@googlemail.com"
+    },
+    {
+      "name": "Jeff Jewiss",
+      "email": "jeffjewiss@gmail.com"
+    },
+    {
+      "name": "Jérémy Judéaux",
+      "email": "jeremy.judeaux@volune.net"
+    },
+    {
+      "name": "Marcello Nuccio",
+      "email": "marcello.nuccio@gmail.com"
+    },
+    {
+      "name": "Pieter Mees",
+      "email": "pietermees@users.noreply.github.com"
+    },
+    {
+      "name": "pavelgj",
+      "email": "pavelgj@gmail.com"
+    },
+    {
+      "name": "sylvain-hamel",
+      "email": "sylvainhamel0@gmail.com"
+    },
+    {
+      "name": "ywong",
+      "email": "wongyok@gmail.com"
+    },
+    {
+      "name": "Andrew Morris",
+      "email": "voltrevo@gmail.com"
+    },
+    {
+      "name": "Aseem Bansal",
+      "email": "aseembansal@live.com"
+    },
+    {
+      "name": "Bryan Smith",
+      "email": "bryanrsmith@gmail.com"
+    },
+    {
+      "name": "Bulat Shakirzyanov",
+      "email": "mallluhuct@gmail.com"
+    },
+    {
+      "name": "ChangZhuo Chen",
+      "email": "czchen@gmail.com",
+      "url": "陳昌倬"
+    },
+    {
+      "name": "Chris Bottin",
+      "email": "chrisbottin@users.noreply.github.com"
+    },
+    {
+      "name": "Cyrus Chan",
+      "email": "chan1cyrus2@gmail.com"
+    },
+    {
+      "name": "DarthCharles",
+      "email": "carlos.darth@gmail.com"
+    },
+    {
+      "name": "David Herges",
+      "email": "dherges@users.noreply.github.com"
+    },
+    {
+      "name": "David Pärsson",
+      "email": "david@parsson.se"
+    },
+    {
+      "name": "Ethan J. Brown",
+      "email": "ethan_j_brown@hotmail.com"
+    },
+    {
+      "name": "Ezra Brooks",
+      "email": "ezra.m.brooks@gmail.com"
+    },
+    {
+      "name": "Filipe Guerra",
+      "email": "alias.mac@gmail.com"
+    },
+    {
+      "name": "Greenkeeper",
+      "email": "support@greenkeeper.io"
+    },
+    {
+      "name": "Hugues Malphettes",
+      "email": "hmalphettes@gmail.com"
+    },
+    {
+      "name": "Igor Minar",
+      "email": "igor@angularjs.org"
+    },
+    {
+      "name": "Igor Minar",
+      "email": "iiminar@gmail.com"
+    },
+    {
+      "name": "Ilya Goncharov",
+      "email": "ilgonmic@gmail.com"
+    },
+    {
+      "name": "James Ford",
+      "email": "jford@psyked.co.uk"
+    },
+    {
+      "name": "James Talmage",
+      "email": "james@talmage.io"
+    },
+    {
+      "name": "Janderson Constantino",
+      "email": "jandersonconstantino@gmail.com"
+    },
+    {
+      "name": "Jonas Pommerening",
+      "email": "jonas.pommerening@aixigo.de"
+    },
+    {
+      "name": "Jonathan Freeman",
+      "email": "freethejazz@gmail.com"
+    },
+    {
+      "name": "Jonathan Ginsburg",
+      "email": "jon@than.ml"
+    },
+    {
+      "name": "Josh",
+      "email": "joshhunt180@gmail.com"
+    },
+    {
+      "name": "KJ Tsanaktsidis",
+      "email": "kjtsanaktsidis@gmail.com"
+    },
+    {
+      "name": "Keen Yee Liau",
+      "email": "kyliau@google.com"
+    },
+    {
+      "name": "Kelly Jensen",
+      "email": "kellyrayj@gmail.com"
+    },
+    {
+      "name": "Kevin Huang",
+      "email": "kevinziwenhuang@gmail.com"
+    },
+    {
+      "name": "Kevin WENNER",
+      "email": "kevin.wenner@massmotionmedia.com"
+    },
+    {
+      "name": "Levi Thomason",
+      "email": "me@levithomason.com"
+    },
+    {
+      "name": "Luke Page",
+      "email": "luke.a.page@gmail.com"
+    },
+    {
+      "name": "Matt Lewis",
+      "email": "matthew.lewis@socialsignin.co.uk"
+    },
+    {
+      "name": "Nico Jansen",
+      "email": "jansennico@gmail.com"
+    },
+    {
+      "name": "Parashuram",
+      "email": "code@r.nparashuram.com"
+    },
+    {
+      "name": "Pat Tullmann",
+      "email": "pt@bebop.co"
+    },
+    {
+      "name": "PatrickJS",
+      "email": "github@gdi2290.com"
+    },
+    {
+      "name": "Richard Harrington",
+      "email": "rwharrington87@gmail.com"
+    },
+    {
+      "name": "Roarke Gaskill",
+      "email": "roarke.gaskill@gmail.com"
+    },
+    {
+      "name": "Robert Stein",
+      "email": "SteinRobert@users.noreply.github.com"
+    },
+    {
+      "name": "Robin Liang",
+      "email": "robin.gnail@gmail.com"
+    },
+    {
+      "name": "Ruben Bridgewater",
+      "email": "ruben.bridgewater@fintura.de"
+    },
+    {
+      "name": "Réda Housni Alaoui",
+      "email": "reda.housnialaoui@gmail.com"
+    },
+    {
+      "name": "Sammy Jelin",
+      "email": "sjelin@gmail.com"
+    },
+    {
+      "name": "Sergei Startsev",
+      "email": "ai@programist.ru"
+    },
+    {
+      "name": "Sergey Simonchik",
+      "email": "sergey.simonchik@gmail.com"
+    },
+    {
+      "name": "Sergey Simonchik",
+      "email": "sergey.simonchik@jetbrains.com"
+    },
+    {
+      "name": "Shane Russell",
+      "email": "shane1337@gmail.com"
+    },
+    {
+      "name": "Stefan Dragnev",
+      "email": "dragnev@telerik.com"
+    },
+    {
+      "name": "Steve Mao",
+      "email": "maochenyan@gmail.com"
+    },
+    {
+      "name": "Steve Mao",
+      "email": "steve.mao@healthinteract.com.au"
+    },
+    {
+      "name": "Steve Van Opstal",
+      "email": "stevevanopstal@gmail.com"
+    },
+    {
+      "name": "Sylvain Hamel",
+      "email": "sylvainhamel0@gmail.com"
+    },
+    {
+      "name": "SymbioticKilla",
+      "email": "59652865+SymbioticKilla@users.noreply.github.com"
+    },
+    {
+      "name": "Terry",
+      "email": "zhangwenlp@vip.qq.com"
+    },
+    {
+      "name": "Thomas Parisot",
+      "email": "thomas@oncle-tom.net"
+    },
+    {
+      "name": "Tom Erik Støwer",
+      "email": "tomerik@getkahoot.com"
+    },
+    {
+      "name": "Vivek Ganesan",
+      "email": "caliberoviv@gmail.com"
+    },
+    {
+      "name": "Vladimir Starkov",
+      "email": "iamstarkov@users.noreply.github.com"
+    },
+    {
+      "name": "comdiv",
+      "email": "fagim.sadykov@gmail.com"
+    },
+    {
+      "name": "karmarunnerbot",
+      "email": "karmarunnerbot@gmail.com"
+    },
+    {
+      "name": "ngiebel",
+      "email": "ngiebel@starkinvestments.com"
+    },
+    {
+      "name": "rdodev",
+      "email": "rubenoz@gmail.com"
+    },
+    {
+      "name": "u812",
+      "email": "0u812@github.com"
+    },
+    {
+      "name": "Aaron Powell",
+      "email": "me@aaron-powell.com"
+    },
+    {
+      "name": "Adrien Crivelli",
+      "email": "adrien.crivelli@gmail.com"
+    },
+    {
+      "name": "Alan Agius",
+      "email": "alan.agius4@gmail.com"
+    },
+    {
+      "name": "Alejandro Mantecon Guillen",
+      "email": "alemangui@gmail.com"
+    },
+    {
+      "name": "Ales Rosina",
+      "email": "alesrosina@users.noreply.github.com"
+    },
+    {
+      "name": "Alexander Pepper",
+      "email": "alexander.pepper@infopark.de"
+    },
+    {
+      "name": "Alexander Shtuchkin",
+      "email": "ashtuchkin@gmail.com"
+    },
+    {
+      "name": "Alexei",
+      "email": "solo@solo.md"
+    },
+    {
+      "name": "Ameer Jhan",
+      "email": "ameerjhanprof@gmail.com"
+    },
+    {
+      "name": "Anders Ekdahl",
+      "email": "anders.ekdahl@gmail.com"
+    },
+    {
+      "name": "Anders Janmyr",
+      "email": "anders.janmyr@sonymobile.com"
+    },
+    {
+      "name": "Andreas Krummsdorf",
+      "email": "a.krummsdorf@litixsoft.de"
+    },
+    {
+      "name": "Andreas Pålsson",
+      "email": "a.palsson@gmail.com"
+    },
+    {
+      "name": "Andrew Fischer",
+      "email": "afischer@shutterfly.com"
+    },
+    {
+      "name": "Andrew Marcinkevičius",
+      "email": "andrew.web@ifdattic.com"
+    },
+    {
+      "name": "Andrey Chalkin",
+      "email": "L2jLiga@gmail.com"
+    },
+    {
+      "name": "Andy Joslin",
+      "email": "andytjoslin@gmail.com"
+    },
+    {
+      "name": "Anton Usmansky",
+      "email": "cody0@yandex-team.ru"
+    },
+    {
+      "name": "Athur Ming",
+      "email": "mingguobin@live.com"
+    },
+    {
+      "name": "Atul Bhosale",
+      "email": "atul1bhosale@gmail.com"
+    },
+    {
+      "name": "AugustinLF",
+      "email": "augustin.public@gmail.com"
+    },
+    {
+      "name": "AvnerCohen",
+      "email": "israbirding@gmail.com"
+    },
+    {
+      "name": "Awad Mackie",
+      "email": "firesock.serwalek@gmail.com"
+    },
+    {
+      "name": "Basemm",
+      "email": "BAsM.Egy@gmail.com"
+    },
+    {
+      "name": "Benoit Charbonnier",
+      "email": "benoit.charbonnier@gmail.com"
+    },
+    {
+      "name": "Bhavesh Kakadiya",
+      "email": "bhavesh@superhuman.com"
+    },
+    {
+      "name": "Borewit",
+      "email": "Borewit@users.noreply.github.com"
+    },
+    {
+      "name": "Brady Wied",
+      "email": "brady@bswtechconsulting.com"
+    },
+    {
+      "name": "Bram Borggreve",
+      "email": "borggreve@gmail.com"
+    },
+    {
+      "name": "Breno Calazans",
+      "email": "breno@vtex.com.br"
+    },
+    {
+      "name": "Brian Donovan",
+      "email": "donovan@squareup.com"
+    },
+    {
+      "name": "Brian Donovan",
+      "email": "me@brian-donovan.com"
+    },
+    {
+      "name": "Brian M Hunt",
+      "email": "brianmhunt@gmail.com"
+    },
+    {
+      "name": "Cagdas Bayram",
+      "email": "cbayram@cloudera.com"
+    },
+    {
+      "name": "Carl Goldberg",
+      "email": "carlgoldberg1236@gmail.com"
+    },
+    {
+      "name": "Chad Smith",
+      "email": "chad@configit.com"
+    },
+    {
+      "name": "Chang Wang",
+      "email": "cheapsteak@gmail.com"
+    },
+    {
+      "name": "Charles Suh",
+      "email": "charlessuh@users.noreply.github.com"
+    },
+    {
+      "name": "Chelsea Urquhart",
+      "email": "curquhart@users.noreply.github.com"
+    },
+    {
+      "name": "Chris",
+      "email": "camargo.cac@gmail.com"
+    },
+    {
+      "name": "Chris Chua",
+      "email": "chris.sirhc@gmail.com"
+    },
+    {
+      "name": "Chris Dawson",
+      "email": "xrdawson@gmail.com"
+    },
+    {
+      "name": "Christian Weiss",
+      "email": "cweiss@stripe.com"
+    },
+    {
+      "name": "Christopher Hiller",
+      "email": "chiller@badwing.com"
+    },
+    {
+      "name": "Chuf",
+      "email": "42591821+GChuf@users.noreply.github.com"
+    },
+    {
+      "name": "Ciro S. Costa",
+      "email": "ciro.costa@usp.br"
+    },
+    {
+      "name": "Daan Stolp",
+      "email": "mail@daanstolp.nl"
+    },
+    {
+      "name": "Damien Choizit",
+      "email": "damien.choizit@gmail.com"
+    },
+    {
+      "name": "Dan Siwiec",
+      "email": "daniel.siwiec@gmail.com"
+    },
+    {
+      "name": "Dan Thareja",
+      "email": "danthareja@gmail.com"
+    },
+    {
+      "name": "Danny Croft",
+      "email": "danny.croft@yahoo.co.uk"
+    },
+    {
+      "name": "Danny Tuppeny",
+      "email": "danny@tuppeny.com"
+    },
+    {
+      "name": "David Jensen",
+      "email": "david@frode.(none)",
+      "url": "none"
+    },
+    {
+      "name": "David M. Karr",
+      "email": "dk068x@att.com"
+    },
+    {
+      "name": "Derek Gould",
+      "email": "dgould@birst.com"
+    },
+    {
+      "name": "Derek Schaller",
+      "email": "dschaller@lyft.com"
+    },
+    {
+      "name": "Dieter Oberkofler",
+      "email": "doberkofler@users.noreply.github.com"
+    },
+    {
+      "name": "Dillon",
+      "email": "mdillon@reachmail.com"
+    },
+    {
+      "name": "Dmitrii Abramov",
+      "email": "dabramov@yahoo-inc.com"
+    },
+    {
+      "name": "Dmitriy Ryajov",
+      "email": "dryajov@gmail.com"
+    },
+    {
+      "name": "Donovan Hutchinson",
+      "email": "donovanh@gmail.com"
+    },
+    {
+      "name": "Douglas Blumeyer",
+      "email": "DougBlumeyer@users.noreply.github.com"
+    },
+    {
+      "name": "Douglas Blumeyer",
+      "email": "pair+dblumeyer@vmware.com"
+    },
+    {
+      "name": "Dunja Radulov",
+      "email": "dradulov@renderedtext.com"
+    },
+    {
+      "name": "ERt",
+      "email": "ert.wroc@gmail.com"
+    },
+    {
+      "name": "Ed Rooth",
+      "email": "ed.rooth@rackspace.com"
+    },
+    {
+      "name": "Eddie Monge",
+      "email": "eddie@eddiemonge.com"
+    },
+    {
+      "name": "Eden",
+      "email": "mazzolaeden@gmail.com"
+    },
+    {
+      "name": "Edward Hutchins",
+      "email": "eahutchins@gmail.com"
+    },
+    {
+      "name": "Eldar Jafarov",
+      "email": "djkojb@gmail.com"
+    },
+    {
+      "name": "Eric Baer",
+      "email": "me@ericbaer.com"
+    },
+    {
+      "name": "Esteban Marin",
+      "email": "estebanmarin@gmx.ch"
+    },
+    {
+      "name": "Fabian Beuke",
+      "email": "mail@beuke.org"
+    },
+    {
+      "name": "Filipe Silva",
+      "email": "filipematossilva@gmail.com"
+    },
+    {
+      "name": "Franck Garcia",
+      "email": "garcia.franck@gmail.com"
+    },
+    {
+      "name": "Fred Sauer",
+      "email": "fredsa@google.com"
+    },
+    {
+      "name": "Frederic Hemberger",
+      "email": "mail@frederic-hemberger.de"
+    },
+    {
+      "name": "Fredrik Bonander",
+      "email": "carl.fredrik.bonander@gmail.com"
+    },
+    {
+      "name": "Gavin Aiken",
+      "email": "gavin@aiken.org.uk"
+    },
+    {
+      "name": "Geert Van Laethem",
+      "email": "geert.van.laethem@pandora.be"
+    },
+    {
+      "name": "Glenn Anderson",
+      "email": "ondoher@gmail.com"
+    },
+    {
+      "name": "Greg Thornton",
+      "email": "xdissent@me.com"
+    },
+    {
+      "name": "Gregory Cowan",
+      "email": "g.cowan@amnzero.nl"
+    },
+    {
+      "name": "Hendrik Purmann",
+      "email": "h.purmann@googlemail.com"
+    },
+    {
+      "name": "Homa Wong",
+      "email": "homawong@gmail.com"
+    },
+    {
+      "name": "Igor Lima",
+      "email": "lima.igorribeiro@gmail.com"
+    },
+    {
+      "name": "Islam Sharabash",
+      "email": "islam.sharabash@gmail.com"
+    },
+    {
+      "name": "Jack Tarantino",
+      "email": "jacopo.tarantino@gmail.com"
+    },
+    {
+      "name": "Jacob Trimble",
+      "email": "modmaker@google.com"
+    },
+    {
+      "name": "Jakub Z",
+      "email": "jakzale@gmail.com"
+    },
+    {
+      "name": "James Shore",
+      "email": "jshore@jamesshore.com"
+    },
+    {
+      "name": "Jan Molak",
+      "email": "jan.molak@smartcodeltd.co.uk"
+    },
+    {
+      "name": "Jeff Froom",
+      "email": "jeff@jfroom.com"
+    },
+    {
+      "name": "Jeff Lage",
+      "email": "jefflage@me.com"
+    },
+    {
+      "name": "Jeff Yates",
+      "email": "jeff.yates@alumni.manchester.ac.uk"
+    },
+    {
+      "name": "Jeremy Axelrod",
+      "email": "axelrod.jeremy@gmail.com"
+    },
+    {
+      "name": "Jerry Reptak",
+      "email": "jreptak@gmail.com"
+    },
+    {
+      "name": "Jesse M. Holmes",
+      "email": "wolfhoundjesse@gmail.com"
+    },
+    {
+      "name": "Joe Lencioni",
+      "email": "joe.lencioni@brigade.com"
+    },
+    {
+      "name": "Johannes Gorset",
+      "email": "jgorset@gmail.com"
+    },
+    {
+      "name": "John Wehr",
+      "email": "johnwehr@gmail.com"
+    },
+    {
+      "name": "Jon Bretman",
+      "email": "jon.bretman@gmail.com"
+    },
+    {
+      "name": "Jonathan ES Lin",
+      "email": "ernsheong@gmail.com"
+    },
+    {
+      "name": "Jonathan Felchlin",
+      "email": "jonathan@xgecko.com"
+    },
+    {
+      "name": "Jonathan Niles",
+      "email": "jniles@users.noreply.github.com"
+    },
+    {
+      "name": "Josh Lory",
+      "email": "josh.lory@code.org"
+    },
+    {
+      "name": "João Marcos Duarte",
+      "email": "joumd86@gmail.com"
+    },
+    {
+      "name": "Julian Connor",
+      "email": "julian.connor@venmo.com"
+    },
+    {
+      "name": "Jurko Gospodnetić",
+      "email": "jurko.gospodnetic@pke.hr"
+    },
+    {
+      "name": "Justin Ridgewell",
+      "email": "jridgewell@users.noreply.github.com"
+    },
+    {
+      "name": "KahWee Teng",
+      "email": "t@kw.sg"
+    },
+    {
+      "name": "Karl Lindmark",
+      "email": "karl.lindmark@ninetwozero.com"
+    },
+    {
+      "name": "Karol Fabjańczuk",
+      "email": "karol.fabjanczuk@lemondemon.pl"
+    },
+    {
+      "name": "Karolis Narkevicius",
+      "email": "karolis.n@gmail.com"
+    },
+    {
+      "name": "Keats",
+      "email": "balthek@gmail.com"
+    },
+    {
+      "name": "Keith Cirkel",
+      "email": "github@keithcirkel.co.uk"
+    },
+    {
+      "name": "Kent C. Dodds",
+      "email": "kent@doddsfamily.us"
+    },
+    {
+      "name": "Kevin Ortman",
+      "email": "kevin_ortman@msn.com"
+    },
+    {
+      "name": "Kostiantyn Kahanskyi",
+      "email": "kostiantyn.kahanskyi@googlemail.com"
+    },
+    {
+      "name": "Kris Kowal",
+      "email": "kris@cixar.com"
+    },
+    {
+      "name": "Lenny Urbanowski",
+      "email": "lenny@itslennysfault.com"
+    },
+    {
+      "name": "Long Ho",
+      "email": "longlho@users.noreply.github.com"
+    },
+    {
+      "name": "LoveIsGrief",
+      "email": "just.another.michaelv@gmail.com"
+    },
+    {
+      "name": "Lucas Theisen",
+      "email": "lucastheisen@pastdev.com"
+    },
+    {
+      "name": "Lukasz Zatorski",
+      "email": "lzatorski@gmail.com"
+    },
+    {
+      "name": "M1xA",
+      "email": "AnyCPU@users.noreply.github.com"
+    },
+    {
+      "name": "Magnus Markling",
+      "email": "github@markling.com"
+    },
+    {
+      "name": "Manfred Stock",
+      "email": "m@nfred.ch"
+    },
+    {
+      "name": "Manoel",
+      "email": "manoel.lobo@gmail.com"
+    },
+    {
+      "name": "Marko Anastasov",
+      "email": "marko@renderedtext.com"
+    },
+    {
+      "name": "Martin Geisler",
+      "email": "martin@geisler.net"
+    },
+    {
+      "name": "Martin Jul",
+      "email": "martin@mjul.com"
+    },
+    {
+      "name": "Martin Lemanski",
+      "email": "martin.lemanski@gmx.at"
+    },
+    {
+      "name": "Martin Probst",
+      "email": "martin@probst.io"
+    },
+    {
+      "name": "Marvin Heilemann",
+      "email": "m.heilemann@protonmail.com"
+    },
+    {
+      "name": "Matias Niemelä",
+      "email": "matias@yearofmoo.com"
+    },
+    {
+      "name": "Matthew Amato",
+      "email": "matt.amato@gmail.com"
+    },
+    {
+      "name": "Matthew Cale",
+      "email": "mattc41190@gmail.com"
+    },
+    {
+      "name": "Matthew Machuga",
+      "email": "machuga@gmail.com"
+    },
+    {
+      "name": "Matthias Oßwald",
+      "email": "matz3@users.noreply.github.com"
+    },
+    {
+      "name": "Matti Paksula",
+      "email": "matti.paksula@iki.fi"
+    },
+    {
+      "name": "Mattijs Kneppers",
+      "email": "mattijs@arttech.nl"
+    },
+    {
+      "name": "Max Waterman",
+      "email": "davidmaxwaterman@fastmail.co.uk"
+    },
+    {
+      "name": "Merott Movahedi",
+      "email": "merott@merott.com"
+    },
+    {
+      "name": "Merrick Christensen",
+      "email": "merrick.christensen@gmail.com"
+    },
+    {
+      "name": "Michael Krotscheck",
+      "email": "krotscheck@gmail.com"
+    },
+    {
+      "name": "Michał Siwek",
+      "email": "mike21@aol.pl"
+    },
+    {
+      "name": "Milan Aleksic",
+      "email": "milanaleksic@gmail.com"
+    },
+    {
+      "name": "Milana Stojadinov",
+      "email": "mstojadinov@renderedtext.com"
+    },
+    {
+      "name": "Mohamed Eltuhamy",
+      "email": "tuhamy@gmail.com"
+    },
+    {
+      "name": "Nathan Cornelius",
+      "email": "ndcornelius@users.noreply.github.com"
+    },
+    {
+      "name": "Nathan Hunzaker",
+      "email": "nate.hunzaker@gmail.com"
+    },
+    {
+      "name": "NeverwinterMoon",
+      "email": "manni.calavera@gmail.com"
+    },
+    {
+      "name": "Nick Carter",
+      "email": "thynctank@thynctank.com"
+    },
+    {
+      "name": "Nick McCurdy",
+      "email": "nick@nickmccurdy.com"
+    },
+    {
+      "name": "Nick Payne",
+      "email": "nick@kurai.co.uk"
+    },
+    {
+      "name": "Nick Petruzzelli",
+      "email": "code.npetruzzelli@gmail.com"
+    },
+    {
+      "name": "Nick Petruzzelli",
+      "email": "npetruzzelli@users.noreply.github.com"
+    },
+    {
+      "name": "Nick Williams",
+      "email": "mr.nicksta@gmail.com"
+    },
+    {
+      "name": "Nicolas Artman",
+      "email": "nicolasartman@users.noreply.github.com"
+    },
+    {
+      "name": "Nicolas Ferrero",
+      "email": "ferrero.nicolas@gmail.com"
+    },
+    {
+      "name": "Nikita Balakirev",
+      "email": "balakirevnikita@yandex.ru"
+    },
+    {
+      "name": "Nir Moav",
+      "email": "nirmoav@users.noreply.github.com"
+    },
+    {
+      "name": "Nish",
+      "email": "nishantpatel611@gmail.com"
+    },
+    {
+      "name": "Nuno Job",
+      "email": "nunojobpinto@gmail.com"
+    },
+    {
+      "name": "Oleg Gomozov",
+      "email": "blackswanny@gmail.com"
+    },
+    {
+      "name": "Olivier Yiptong",
+      "email": "olivier@olivieryiptong.com"
+    },
+    {
+      "name": "OniOni",
+      "email": "mathieu.c.sabourin@gmail.com"
+    },
+    {
+      "name": "OpenShift guest",
+      "email": "mrpatan@gmail.com"
+    },
+    {
+      "name": "Outsider",
+      "email": "outsideris@gmail.com"
+    },
+    {
+      "name": "Parashuram",
+      "email": "code@nparashuram.com"
+    },
+    {
+      "name": "Pascal Hartig",
+      "email": "phartig@rdrei.net"
+    },
+    {
+      "name": "Patrick Lussan",
+      "email": "patrick.lussan@componize.com"
+    },
+    {
+      "name": "Patrick Neschkudla",
+      "email": "neschkudla@gmail.com"
+    },
+    {
+      "name": "Patrik Henningsson",
+      "email": "patrik.henningsson@gmail.com"
+    },
+    {
+      "name": "Paul Gschwendtner",
+      "email": "paulgschwendtner@gmail.com"
+    },
+    {
+      "name": "Paweł Kapalla",
+      "email": "pkapalla@xesenix.pl"
+    },
+    {
+      "name": "Pedro Araujo",
+      "email": "pedrotcaraujo@gmail.com"
+    },
+    {
+      "name": "Pete Bacon Darwin",
+      "email": "pete@bacondarwin.com"
+    },
+    {
+      "name": "Pete Swan",
+      "email": "pete@indabamusic.com"
+    },
+    {
+      "name": "Peter Burns",
+      "email": "rictic@gmail.com"
+    },
+    {
+      "name": "Peter Halliday",
+      "email": "pghalliday@gmail.com"
+    },
+    {
+      "name": "Peter McAlpine",
+      "email": "peter.mcalpine@arcticwolf.com"
+    },
+    {
+      "name": "Peter Newman",
+      "email": "peternewman@users.noreply.github.com"
+    },
+    {
+      "name": "Peter Yates",
+      "email": "pd.yates@gmail.com"
+    },
+    {
+      "name": "Philip Harrison",
+      "email": "philip@mailharrison.com"
+    },
+    {
+      "name": "Pierre Vanduynslager",
+      "email": "pierre.denis.vanduynslager@gmail.com"
+    },
+    {
+      "name": "Piotr Błażejewicz",
+      "email": "peterblazejewicz@users.noreply.github.com",
+      "url": "Peter Blazejewicz"
+    },
+    {
+      "name": "Piper Chester",
+      "email": "piperchester@users.noreply.github.com"
+    },
+    {
+      "name": "Rafal Lindemann",
+      "email": "rl@stamina.pl"
+    },
+    {
+      "name": "Remy Sharp",
+      "email": "remy@remysharp.com"
+    },
+    {
+      "name": "Ricardo Melo Joia",
+      "email": "ricardo.joia@gmail.com"
+    },
+    {
+      "name": "Rich Kuzsma",
+      "email": "rkuzsma@gmail.com"
+    },
+    {
+      "name": "Rich Trott",
+      "email": "rtrott@gmail.com"
+    },
+    {
+      "name": "Richard Herrera",
+      "email": "richard.herrera@nfl.com"
+    },
+    {
+      "name": "Roarke Gaskill",
+      "email": "rgaskill@nexvex.com"
+    },
+    {
+      "name": "Rob Cherry",
+      "email": "rcherry@reverbnation.com"
+    },
+    {
+      "name": "Rob Dodson",
+      "email": "lets.email.rob@gmail.com"
+    },
+    {
+      "name": "Rogério Vicente",
+      "email": "rogeriopvl@gmail.com"
+    },
+    {
+      "name": "Ruben Bridgewater",
+      "email": "ruben@bridgewater.de"
+    },
+    {
+      "name": "Rémi",
+      "email": "r3mi@users.sourceforge.net"
+    },
+    {
+      "name": "Sahat Yalkabov",
+      "email": "sakhat@gmail.com"
+    },
+    {
+      "name": "Sam Rawlins",
+      "email": "sam.rawlins@gmail.com"
+    },
+    {
+      "name": "Sam Rawlins",
+      "email": "srawlins@google.com"
+    },
+    {
+      "name": "Samuel Marks",
+      "email": "samuelmarks@gmail.com"
+    },
+    {
+      "name": "Saugat Acharya",
+      "email": "mesaugat@gmail.com"
+    },
+    {
+      "name": "Schmulik Raskin",
+      "email": "schmuli@gmail.com"
+    },
+    {
+      "name": "Sergey Kruk",
+      "email": "sergey.kruk@gmail.com"
+    },
+    {
+      "name": "Seth Rhodes",
+      "email": "seth@thinkpixbit.com"
+    },
+    {
+      "name": "Shahar Mor",
+      "email": "shaharmor1@gmail.com"
+    },
+    {
+      "name": "Shane Osbourne",
+      "email": "shane.osbourne8@gmail.com"
+    },
+    {
+      "name": "Sho Ikeda",
+      "email": "suicaicoca@gmail.com"
+    },
+    {
+      "name": "Sibiraj",
+      "email": "20282546+Sibiraj-S@users.noreply.github.com"
+    },
+    {
+      "name": "Simen Bekkhus",
+      "email": "sbekkhus91@gmail.com"
+    },
+    {
+      "name": "Simon Warta",
+      "email": "2603011+webmaster128@users.noreply.github.com"
+    },
+    {
+      "name": "Simone Gentili",
+      "email": "sensorario@gmail.com"
+    },
+    {
+      "name": "Slava Kotiya",
+      "email": "sk@nexttuesday.de"
+    },
+    {
+      "name": "Sophie Cooper",
+      "email": "scooper91@users.noreply.github.com"
+    },
+    {
+      "name": "Stephen Hazleton",
+      "email": "shazleto@gmail.com"
+    },
+    {
+      "name": "Stuart Memo",
+      "email": "stuartmemo@gmail.com"
+    },
+    {
+      "name": "Taylor Buley",
+      "email": "buley@outlook.com"
+    },
+    {
+      "name": "Taylor Hakes",
+      "email": "taylor.hakes@gmail.com"
+    },
+    {
+      "name": "Terin Stock",
+      "email": "terinjokes@gmail.com"
+    },
+    {
+      "name": "Thai Pangsakulyanont @ Taskworld",
+      "email": "thai.p@taskworld.com"
+    },
+    {
+      "name": "Thijs Triemstra",
+      "email": "info@collab.nl"
+    },
+    {
+      "name": "Thomas Parisot",
+      "email": "thomas.parisot@bbc.co.uk"
+    },
+    {
+      "name": "Tim Gates",
+      "email": "tim.gates@iress.com"
+    },
+    {
+      "name": "Tim Hartman",
+      "email": "tbhartman@gmail.com"
+    },
+    {
+      "name": "Tim Olshansky",
+      "email": "tim.olshansky@gmail.com"
+    },
+    {
+      "name": "Timo Tijhof",
+      "email": "krinklemail@gmail.com"
+    },
+    {
+      "name": "Tom MacWright",
+      "email": "tom@macwright.org"
+    },
+    {
+      "name": "TrevDev",
+      "email": "trevor@kareo.com"
+    },
+    {
+      "name": "Tyler Akins",
+      "email": "fidian@rumkin.com"
+    },
+    {
+      "name": "Vasily Ostanin",
+      "email": "bazilio91@gmail.com"
+    },
+    {
+      "name": "Veronica Lynn",
+      "email": "veronica.lynn@redjack.com"
+    },
+    {
+      "name": "Vincent Taverna",
+      "email": "vinnymac@gmail.com"
+    },
+    {
+      "name": "Vitor Buzinaro",
+      "email": "funny.hc@gmail.com"
+    },
+    {
+      "name": "Volune",
+      "email": "jeremy.judeaux@volune.net"
+    },
+    {
+      "name": "Vova Bilonenko",
+      "email": "bilonenko.v@gmail.com"
+    },
+    {
+      "name": "Wizek",
+      "email": "123.wizek@gmail.com"
+    },
+    {
+      "name": "XhmikosR",
+      "email": "xhmikosr@gmail.com"
+    },
+    {
+      "name": "Yaniv Efraim",
+      "email": "yaniv.efraim@gmail.com"
+    },
+    {
+      "name": "Yi Wang",
+      "email": "e@yi-wang.me"
+    },
+    {
+      "name": "Yvonne Yip",
+      "email": "ykyyip@google.com"
+    },
+    {
+      "name": "Zhang zhengzheng",
+      "email": "code@tychio.net"
+    },
+    {
+      "name": "adamnation",
+      "email": "arowe@illumina.com"
+    },
+    {
+      "name": "ahaurw01",
+      "email": "ahaurwitz@gmail.com"
+    },
+    {
+      "name": "ashaffer",
+      "email": "darawk@gmail.com"
+    },
+    {
+      "name": "cexbrayat",
+      "email": "cedric@ninja-squad.com"
+    },
+    {
+      "name": "coderaiser",
+      "email": "mnemonic.enemy@gmail.com"
+    },
+    {
+      "name": "compact",
+      "email": "compact@users.noreply.github.com"
+    },
+    {
+      "name": "coridrew",
+      "email": "coridrew@gmail.com"
+    },
+    {
+      "name": "cy6erskunk",
+      "email": "cyberskunk@gmail.com"
+    },
+    {
+      "name": "david-garcia-nete",
+      "email": "david.garcia.nete@gmail.com"
+    },
+    {
+      "name": "deepak1556",
+      "email": "hop2deep@gmail.com"
+    },
+    {
+      "name": "dorey",
+      "email": "dorey415@gmail.com"
+    },
+    {
+      "name": "grifball",
+      "email": "scottgriffy@gmail.com"
+    },
+    {
+      "name": "hdmr14",
+      "email": "58992133+hdmr14@users.noreply.github.com"
+    },
+    {
+      "name": "hrgdavor",
+      "email": "hrgdavor@gmail.com"
+    },
+    {
+      "name": "ianjobling",
+      "email": "ijobling@codio.com"
+    },
+    {
+      "name": "inf3rno",
+      "email": "laszlo.janszky@gmail.com"
+    },
+    {
+      "name": "is-already-taken",
+      "email": "1771602+is-already-taken@users.noreply.github.com"
+    },
+    {
+      "name": "jjoos",
+      "email": "jan@deelstra.org"
+    },
+    {
+      "name": "jvalkeejarvi",
+      "email": "jvalkeejarvi@gmail.com"
+    },
+    {
+      "name": "kyo_ago",
+      "email": "kyo.ago@gmail.com"
+    },
+    {
+      "name": "lanshunfang",
+      "email": "lanshunfang@gmail.com"
+    },
+    {
+      "name": "lusarz",
+      "email": "lukasz.usarz@gmail.com"
+    },
+    {
+      "name": "maik",
+      "email": "mauk@gulli.com"
+    },
+    {
+      "name": "mdemo",
+      "email": "mengdesen09@qq.com"
+    },
+    {
+      "name": "nathanfaucett",
+      "email": "nathanfaucett@gmail.com"
+    },
+    {
+      "name": "pardoman",
+      "email": "pardo.medina@gmail.com"
+    },
+    {
+      "name": "thetrevdev",
+      "email": "thetrevdev@gmail.com"
+    },
+    {
+      "name": "thorn0",
+      "email": "thorn.mailbox@gmail.com"
+    },
+    {
+      "name": "toran billups",
+      "email": "toranb@gmail.com"
+    },
+    {
+      "name": "xel23",
+      "email": "sawqe1@yandex.ru"
+    },
+    {
+      "name": "chalkerx@gmail.com>"
+    },
+    {
+      "name": "weiran.zsd@outlook.com>"
+    }
   ],
   "dependencies": {
@@ -442,4 +1644,5 @@
     "yargs": "^16.1.1"
   },
+  "description": "Spectacular Test Runner for JavaScript.",
   "devDependencies": {
     "@commitlint/cli": "^8.3.4",
@@ -486,13 +1689,8 @@
     "which": "^1.3.1"
   },
-  "main": "./lib/index",
-  "bin": {
-    "karma": "./bin/karma"
-  },
   "engines": {
     "node": ">= 10"
   },
-  "version": "6.3.4",
-  "license": "MIT",
+  "homepage": "https://karma-runner.github.io/",
   "husky": {
     "hooks": {
@@ -501,16 +1699,36 @@
     }
   },
+  "keywords": [
+    "karma",
+    "spectacular",
+    "runner",
+    "karma",
+    "js",
+    "javascript",
+    "testing",
+    "test",
+    "remote",
+    "execution"
+  ],
+  "license": "MIT",
+  "main": "./lib/index",
+  "name": "karma",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/karma-runner/karma.git"
+  },
   "scripts": {
-    "lint": "eslint . --ext js --ignore-pattern *.tpl.js",
-    "lint:fix": "eslint . --ext js --ignore-pattern *.tpl.js --fix",
-    "test:unit": "mocha \"test/unit/**/*.spec.js\"",
-    "test:e2e": "cucumber-js test/e2e/*.feature",
-    "test:client": "node bin/karma start test/client/karma.conf.js",
-    "test": "npm run test:unit && npm run test:e2e && npm run test:client",
     "build": "node scripts/client.js build",
     "build:check": "node scripts/client.js check",
     "build:watch": "node scripts/client.js watch",
+    "lint": "eslint . --ext js --ignore-pattern *.tpl.js",
+    "lint:fix": "eslint . --ext js --ignore-pattern *.tpl.js --fix",
+    "semantic-release": "semantic-release",
+    "test": "npm run test:unit && npm run test:e2e && npm run test:client",
+    "test:client": "node bin/karma start test/client/karma.conf.js",
+    "test:e2e": "cucumber-js test/e2e/*.feature",
     "test:integration": "./scripts/integration-tests.sh",
-    "semantic-release": "semantic-release"
-  }
+    "test:unit": "mocha \"test/unit/**/*.spec.js\""
+  },
+  "version": "6.3.4"
 }
Index: trip-planner-front/node_modules/killable/package.json
===================================================================
--- trip-planner-front/node_modules/killable/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/killable/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,40 @@
 {
-  "name": "killable",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "killable@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "killable@1.0.1",
+  "_id": "killable@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+  "_location": "/killable",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "killable@1.0.1",
+    "name": "killable",
+    "escapedName": "killable",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Marten de Vries"
+  },
+  "bugs": {
+    "url": "https://github.com/marten-de-vries/killable/issues"
+  },
   "description": "Keeps track of a server's open sockets so they can be destroyed at a moment's notice.",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/marten-de-vries/killable.git"
-  },
+  "homepage": "https://github.com/marten-de-vries/killable#readme",
   "keywords": [
     "express",
@@ -20,8 +49,11 @@
     "immeadiately"
   ],
-  "author": "Marten de Vries",
   "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/marten-de-vries/killable/issues"
-  }
+  "main": "index.js",
+  "name": "killable",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/marten-de-vries/killable.git"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,81 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "6.0.3",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "James (https://twitter.com/aretecode)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)",
-    "tunnckoCore (https://i.am.charlike.online)"
+  "_args": [
+    [
+      "kind-of@6.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@6.0.3",
+  "_id": "kind-of@6.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+  "_location": "/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@6.0.3",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "6.0.3",
+    "saveSpec": null,
+    "fetchSpec": "6.0.3"
+  },
+  "_requiredBy": [
+    "/clone-deep",
+    "/http-proxy-middleware/micromatch",
+    "/is-accessor-descriptor",
+    "/is-data-descriptor",
+    "/is-descriptor",
+    "/nanomatch",
+    "/shallow-clone",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+  "_spec": "6.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "James",
+      "url": "https://twitter.com/aretecode"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    },
+    {
+      "name": "tunnckoCore",
+      "url": "https://i.am.charlike.online"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "benchmarked": "^2.0.0",
@@ -38,4 +85,11 @@
     "write": "^1.0.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -61,4 +115,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -85,4 +150,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "6.0.3"
 }
Index: trip-planner-front/node_modules/klona/package.json
===================================================================
--- trip-planner-front/node_modules/klona/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/klona/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,35 @@
 {
-  "name": "klona",
-  "version": "2.0.4",
-  "repository": "lukeed/klona",
-  "description": "A tiny (240B to 501B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!",
-  "module": "dist/index.mjs",
-  "unpkg": "dist/index.min.js",
-  "main": "dist/index.js",
-  "types": "index.d.ts",
-  "license": "MIT",
+  "_args": [
+    [
+      "klona@2.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "klona@2.0.4",
+  "_id": "klona@2.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==",
+  "_location": "/klona",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "klona@2.0.4",
+    "name": "klona",
+    "escapedName": "klona",
+    "rawSpec": "2.0.4",
+    "saveSpec": null,
+    "fetchSpec": "2.0.4"
+  },
+  "_requiredBy": [
+    "/less-loader",
+    "/postcss-loader",
+    "/sass-loader",
+    "/stylus-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
+  "_spec": "2.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Luke Edwards",
@@ -14,11 +37,16 @@
     "url": "https://lukeed.com"
   },
-  "files": [
-    "*.d.ts",
-    "dist",
-    "full",
-    "json",
-    "lite"
-  ],
+  "bugs": {
+    "url": "https://github.com/lukeed/klona/issues"
+  },
+  "description": "A tiny (240B to 501B) and fast utility to \"deep clone\" Objects, Arrays, Dates, RegExps, and more!",
+  "devDependencies": {
+    "bundt": "1.0.2",
+    "esm": "3.2.25",
+    "uvu": "0.3.3"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
   "exports": {
     ".": {
@@ -40,19 +68,12 @@
     "./package.json": "./package.json"
   },
-  "modes": {
-    "json": "src/json.js",
-    "lite": "src/lite.js",
-    "default": "src/index.js",
-    "full": "src/full.js"
-  },
-  "engines": {
-    "node": ">= 8"
-  },
-  "scripts": {
-    "build": "bundt",
-    "pretest": "npm run build",
-    "postbuild": "echo \"lite full json\" | xargs -n1 cp -v index.d.ts",
-    "test": "uvu -r esm test -i suites"
-  },
+  "files": [
+    "*.d.ts",
+    "dist",
+    "full",
+    "json",
+    "lite"
+  ],
+  "homepage": "https://github.com/lukeed/klona#readme",
   "keywords": [
     "clone",
@@ -63,8 +84,26 @@
     "object"
   ],
-  "devDependencies": {
-    "bundt": "1.0.2",
-    "esm": "3.2.25",
-    "uvu": "0.3.3"
-  }
+  "license": "MIT",
+  "main": "dist/index.js",
+  "modes": {
+    "json": "src/json.js",
+    "lite": "src/lite.js",
+    "default": "src/index.js",
+    "full": "src/full.js"
+  },
+  "module": "dist/index.mjs",
+  "name": "klona",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lukeed/klona.git"
+  },
+  "scripts": {
+    "build": "bundt",
+    "postbuild": "echo \"lite full json\" | xargs -n1 cp -v index.d.ts",
+    "pretest": "npm run build",
+    "test": "uvu -r esm test -i suites"
+  },
+  "types": "index.d.ts",
+  "unpkg": "dist/index.min.js",
+  "version": "2.0.4"
 }
Index: trip-planner-front/node_modules/less-loader/package.json
===================================================================
--- trip-planner-front/node_modules/less-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,47 +1,42 @@
 {
-  "name": "less-loader",
-  "version": "10.0.1",
-  "description": "A Less loader for webpack. Compiles Less to CSS.",
-  "license": "MIT",
-  "repository": "webpack-contrib/less-loader",
-  "author": "Johannes Ewald @jhnns",
-  "homepage": "https://github.com/webpack-contrib/less-loader",
-  "bugs": "https://github.com/webpack-contrib/less-loader/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "less-loader@10.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "less-loader@10.0.1",
+  "_id": "less-loader@10.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==",
+  "_location": "/less-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "less-loader@10.0.1",
+    "name": "less-loader",
+    "escapedName": "less-loader",
+    "rawSpec": "10.0.1",
+    "saveSpec": null,
+    "fetchSpec": "10.0.1"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz",
+  "_spec": "10.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Johannes Ewald @jhnns"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "lint:prettier": "prettier --list-different .",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version"
-  },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "less": "^3.5.0 || ^4.0.0",
-    "webpack": "^5.0.0"
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/less-loader/issues"
   },
   "dependencies": {
     "klona": "^2.0.4"
   },
+  "description": "A Less loader for webpack. Compiles Less to CSS.",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -69,4 +64,15 @@
     "webpack": "^5.39.1"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/less-loader",
   "keywords": [
     "webpack",
@@ -77,4 +83,34 @@
     "css",
     "preprocessor"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "less-loader",
+  "peerDependencies": {
+    "less": "^3.5.0 || ^4.0.0",
+    "webpack": "^5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/less-loader.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier --list-different .",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "version": "10.0.1"
 }
Index: trip-planner-front/node_modules/less/node_modules/.bin/mime
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/mime	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/mime	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../mime/cli.js" "$@"
+  "$basedir/node"  "$basedir/../mime/cli.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../mime/cli.js" "$@"
+  node  "$basedir/../mime/cli.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/less/node_modules/.bin/mime.cmd
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/mime.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/mime.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\mime\cli.js" %*
+"%_prog%"  "%dp0%\..\mime\cli.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/less/node_modules/.bin/mime.ps1
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/mime.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/mime.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../mime/cli.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../mime/cli.js" $args
-  } else {
-    & "node$exe"  "$basedir/../mime/cli.js" $args
-  }
+  & "node$exe"  "$basedir/../mime/cli.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/less/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver" "$@"
+  node  "$basedir/../semver/bin/semver" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/less/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/less/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/less/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/less/node_modules/make-dir/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/make-dir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/make-dir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,59 +1,96 @@
 {
-	"name": "make-dir",
-	"version": "2.1.0",
-	"description": "Make a directory and its parents if needed - Think `mkdir -p`",
-	"license": "MIT",
-	"repository": "sindresorhus/make-dir",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd-check"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"mkdir",
-		"mkdirp",
-		"make",
-		"directories",
-		"dir",
-		"dirs",
-		"folders",
-		"directory",
-		"folder",
-		"path",
-		"parent",
-		"parents",
-		"intermediate",
-		"recursively",
-		"recursive",
-		"create",
-		"fs",
-		"filesystem",
-		"file-system"
-	],
-	"dependencies": {
-		"pify": "^4.0.1",
-		"semver": "^5.6.0"
-	},
-	"devDependencies": {
-		"@types/graceful-fs": "^4.1.3",
-		"@types/node": "^11.10.4",
-		"ava": "^1.2.0",
-		"codecov": "^3.0.0",
-		"graceful-fs": "^4.1.11",
-		"nyc": "^13.1.0",
-		"path-type": "^3.0.0",
-		"tempy": "^0.2.1",
-		"tsd-check": "^0.3.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "make-dir@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "make-dir@2.1.0",
+  "_id": "make-dir@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+  "_location": "/less/make-dir",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "make-dir@2.1.0",
+    "name": "make-dir",
+    "escapedName": "make-dir",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/make-dir/issues"
+  },
+  "dependencies": {
+    "pify": "^4.0.1",
+    "semver": "^5.6.0"
+  },
+  "description": "Make a directory and its parents if needed - Think `mkdir -p`",
+  "devDependencies": {
+    "@types/graceful-fs": "^4.1.3",
+    "@types/node": "^11.10.4",
+    "ava": "^1.2.0",
+    "codecov": "^3.0.0",
+    "graceful-fs": "^4.1.11",
+    "nyc": "^13.1.0",
+    "path-type": "^3.0.0",
+    "tempy": "^0.2.1",
+    "tsd-check": "^0.3.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/make-dir#readme",
+  "keywords": [
+    "mkdir",
+    "mkdirp",
+    "make",
+    "directories",
+    "dir",
+    "dirs",
+    "folders",
+    "directory",
+    "folder",
+    "path",
+    "parent",
+    "parents",
+    "intermediate",
+    "recursively",
+    "recursive",
+    "create",
+    "fs",
+    "filesystem",
+    "file-system"
+  ],
+  "license": "MIT",
+  "name": "make-dir",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/make-dir.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava && tsd-check"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/less/node_modules/mime/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/mime/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/mime/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,53 @@
 {
+  "_args": [
+    [
+      "mime@1.6.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mime@1.6.0",
+  "_id": "mime@1.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+  "_location": "/less/mime",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mime@1.6.0",
+    "name": "mime",
+    "escapedName": "mime",
+    "rawSpec": "1.6.0",
+    "saveSpec": null,
+    "fetchSpec": "1.6.0"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+  "_spec": "1.6.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Robert Kieffer",
-    "url": "http://github.com/broofa",
-    "email": "robert@broofa.com"
+    "email": "robert@broofa.com",
+    "url": "http://github.com/broofa"
   },
   "bin": {
     "mime": "cli.js"
   },
-  "engines": {
-    "node": ">=4"
+  "bugs": {
+    "url": "https://github.com/broofa/node-mime/issues"
   },
   "contributors": [
     {
       "name": "Benjamin Thomas",
-      "url": "http://github.com/bentomas",
-      "email": "benjamin@benjaminthomas.org"
+      "email": "benjamin@benjaminthomas.org",
+      "url": "http://github.com/bentomas"
     }
   ],
+  "dependencies": {},
   "description": "A comprehensive library for mime-type mapping",
-  "license": "MIT",
-  "dependencies": {},
   "devDependencies": {
     "github-release-notes": "0.13.1",
@@ -26,18 +55,23 @@
     "mime-score": "1.1.0"
   },
-  "scripts": {
-    "prepare": "node src/build.js",
-    "changelog": "gren changelog --tags=all --generate --override",
-    "test": "node src/test.js"
+  "engines": {
+    "node": ">=4"
   },
+  "homepage": "https://github.com/broofa/node-mime#readme",
   "keywords": [
     "util",
     "mime"
   ],
+  "license": "MIT",
   "main": "mime.js",
   "name": "mime",
   "repository": {
-    "url": "https://github.com/broofa/node-mime",
+    "url": "git+https://github.com/broofa/node-mime.git",
     "type": "git"
+  },
+  "scripts": {
+    "changelog": "gren changelog --tags=all --generate --override",
+    "prepare": "node src/build.js",
+    "test": "node src/test.js"
   },
   "version": "1.6.0"
Index: trip-planner-front/node_modules/less/node_modules/pify/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/pify/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/pify/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,88 @@
 {
-	"name": "pify",
-	"version": "4.0.1",
-	"description": "Promisify a callback-style function",
-	"license": "MIT",
-	"repository": "sindresorhus/pify",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava",
-		"optimization-test": "node --allow-natives-syntax optimization-test.js"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"promise",
-		"promises",
-		"promisify",
-		"all",
-		"denodify",
-		"denodeify",
-		"callback",
-		"cb",
-		"node",
-		"then",
-		"thenify",
-		"convert",
-		"transform",
-		"wrap",
-		"wrapper",
-		"bind",
-		"to",
-		"async",
-		"await",
-		"es2015",
-		"bluebird"
-	],
-	"devDependencies": {
-		"ava": "^0.25.0",
-		"pinkie-promise": "^2.0.0",
-		"v8-natives": "^1.1.0",
-		"xo": "^0.23.0"
-	}
+  "_args": [
+    [
+      "pify@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pify@4.0.1",
+  "_id": "pify@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+  "_location": "/less/pify",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pify@4.0.1",
+    "name": "pify",
+    "escapedName": "pify",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/less/make-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pify/issues"
+  },
+  "description": "Promisify a callback-style function",
+  "devDependencies": {
+    "ava": "^0.25.0",
+    "pinkie-promise": "^2.0.0",
+    "v8-natives": "^1.1.0",
+    "xo": "^0.23.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/pify#readme",
+  "keywords": [
+    "promise",
+    "promises",
+    "promisify",
+    "all",
+    "denodify",
+    "denodeify",
+    "callback",
+    "cb",
+    "node",
+    "then",
+    "thenify",
+    "convert",
+    "transform",
+    "wrap",
+    "wrapper",
+    "bind",
+    "to",
+    "async",
+    "await",
+    "es2015",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "pify",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pify.git"
+  },
+  "scripts": {
+    "optimization-test": "node --allow-natives-syntax optimization-test.js",
+    "test": "xo && ava"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/less/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,42 @@
 {
-  "name": "semver",
-  "version": "5.7.1",
+  "_args": [
+    [
+      "semver@5.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@5.7.1",
+  "_id": "semver@5.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+  "_location": "/less/semver",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@5.7.1",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "5.7.1",
+    "saveSpec": null,
+    "fetchSpec": "5.7.1"
+  },
+  "_requiredBy": [
+    "/less/make-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+  "_spec": "5.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
-  },
   "devDependencies": {
     "tap": "^13.0.0-rc.18"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver"
   },
   "files": [
@@ -23,6 +45,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "5.7.1"
 }
Index: trip-planner-front/node_modules/less/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,194 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/less/source-map",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +200,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/less/node_modules/tslib/package.json
===================================================================
--- trip-planner-front/node_modules/less/node_modules/tslib/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/node_modules/tslib/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,68 @@
 {
+  "_args": [
+    [
+      "tslib@1.14.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "tslib@1.14.1",
+  "_id": "tslib@1.14.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+  "_location": "/less/tslib",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tslib@1.14.1",
     "name": "tslib",
-    "author": "Microsoft Corp.",
-    "homepage": "https://www.typescriptlang.org/",
-    "version": "1.14.1",
-    "license": "0BSD",
-    "description": "Runtime library for TypeScript helper functions",
-    "keywords": [
-        "TypeScript",
-        "Microsoft",
-        "compiler",
-        "language",
-        "javascript",
-        "tslib",
-        "runtime"
-    ],
-    "bugs": {
-        "url": "https://github.com/Microsoft/TypeScript/issues"
+    "escapedName": "tslib",
+    "rawSpec": "1.14.1",
+    "saveSpec": null,
+    "fetchSpec": "1.14.1"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+  "_spec": "1.14.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Microsoft Corp."
+  },
+  "bugs": {
+    "url": "https://github.com/Microsoft/TypeScript/issues"
+  },
+  "description": "Runtime library for TypeScript helper functions",
+  "exports": {
+    ".": {
+      "module": "./tslib.es6.js",
+      "import": "./modules/index.js",
+      "default": "./tslib.js"
     },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/Microsoft/tslib.git"
-    },
-    "main": "tslib.js",
-    "module": "tslib.es6.js",
-    "jsnext:main": "tslib.es6.js",
-    "typings": "tslib.d.ts",
-    "sideEffects": false,
-    "exports": {
-        ".": {
-            "module": "./tslib.es6.js",
-            "import": "./modules/index.js",
-            "default": "./tslib.js"
-        },
-        "./": "./"
-    }
+    "./": "./"
+  },
+  "homepage": "https://www.typescriptlang.org/",
+  "jsnext:main": "tslib.es6.js",
+  "keywords": [
+    "TypeScript",
+    "Microsoft",
+    "compiler",
+    "language",
+    "javascript",
+    "tslib",
+    "runtime"
+  ],
+  "license": "0BSD",
+  "main": "tslib.js",
+  "module": "tslib.es6.js",
+  "name": "tslib",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Microsoft/tslib.git"
+  },
+  "sideEffects": false,
+  "typings": "tslib.d.ts",
+  "version": "1.14.1"
 }
Index: trip-planner-front/node_modules/less/package.json
===================================================================
--- trip-planner-front/node_modules/less/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/less/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,136 +1,174 @@
 {
-	"name": "less",
-	"version": "4.1.1",
-	"description": "Leaner CSS",
-	"homepage": "http://lesscss.org",
-	"author": {
-		"name": "Alexis Sellier",
-		"email": "self@cloudhead.net"
-	},
-	"contributors": [
-		"The Core Less Team"
-	],
-	"bugs": {
-		"url": "https://github.com/less/less.js/issues"
-	},
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/less/less.js.git"
-	},
-	"master": {
-		"url": "https://github.com/less/less.js/blob/master/",
-		"raw": "https://raw.githubusercontent.com/less/less.js/master/"
-	},
-	"license": "Apache-2.0",
-	"bin": {
-		"lessc": "./bin/lessc"
-	},
-	"main": "index",
-	"module": "./lib/less-node/index",
-	"directories": {
-		"test": "./test"
-	},
-	"browser": "./dist/less.js",
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "grunt test",
-		"grunt": "grunt",
-		"build": "npm-run-all clean compile",
-		"clean": "shx rm -rf ./lib tsconfig.tsbuildinfo",
-		"compile": "tsc -p tsconfig.json",
-		"copy:root": "shx cp -rf ./dist ../../",
-		"dev": "tsc -p tsconfig.json -w",
-		"prepublishOnly": "grunt dist"
-	},
-	"optionalDependencies": {
-		"errno": "^0.1.1",
-		"graceful-fs": "^4.1.2",
-		"image-size": "~0.5.0",
-		"make-dir": "^2.1.0",
-		"mime": "^1.4.1",
-		"needle": "^2.5.2",
-		"source-map": "~0.6.0"
-	},
-	"devDependencies": {
-		"@less/test-data": "^4.1.0",
-		"@less/test-import-module": "^4.0.0",
-		"@rollup/plugin-commonjs": "^17.0.0",
-		"@rollup/plugin-json": "^4.1.0",
-		"@rollup/plugin-node-resolve": "^11.0.0",
-		"@typescript-eslint/eslint-plugin": "^3.3.0",
-		"@typescript-eslint/parser": "^3.3.0",
-		"benny": "^3.6.12",
-		"bootstrap-less-port": "0.3.0",
-		"chai": "^4.2.0",
-		"diff": "^3.2.0",
-		"eslint": "^6.8.0",
-		"fs-extra": "^8.1.0",
-		"git-rev": "^0.2.1",
-		"globby": "^10.0.1",
-		"grunt": "^1.0.4",
-		"grunt-cli": "^1.3.2",
-		"grunt-contrib-clean": "^1.0.0",
-		"grunt-contrib-connect": "^1.0.2",
-		"grunt-eslint": "^21.1.0",
-		"grunt-saucelabs": "^9.0.1",
-		"grunt-shell": "^1.3.0",
-		"html-template-tag": "^3.2.0",
-		"jit-grunt": "^0.10.0",
-		"less-plugin-autoprefix": "^1.5.1",
-		"less-plugin-clean-css": "^1.5.1",
-		"minimist": "^1.2.0",
-		"mocha": "^6.2.1",
-		"mocha-headless-chrome": "^2.0.3",
-		"mocha-teamcity-reporter": "^3.0.0",
-		"nock": "^11.8.2",
-		"npm-run-all": "^4.1.5",
-		"performance-now": "^0.2.0",
-		"phin": "^2.2.3",
-		"promise": "^7.1.1",
-		"read-glob": "^3.0.0",
-		"resolve": "^1.17.0",
-		"rollup": "^2.34.1",
-		"rollup-plugin-terser": "^5.1.1",
-		"rollup-plugin-typescript2": "^0.29.0",
-		"semver": "^6.3.0",
-		"shx": "^0.3.2",
-		"time-grunt": "^1.3.0",
-		"ts-node": "^8.4.1",
-		"typescript": "^4.1.3",
-		"uikit": "2.27.4"
-	},
-	"keywords": [
-		"compile less",
-		"css nesting",
-		"css variable",
-		"css",
-		"gradients css",
-		"gradients css3",
-		"less compiler",
-		"less css",
-		"less mixins",
-		"less",
-		"less.js",
-		"lesscss",
-		"mixins",
-		"nested css",
-		"parser",
-		"preprocessor",
-		"bootstrap css",
-		"bootstrap less",
-		"style",
-		"styles",
-		"stylesheet",
-		"variables in css",
-		"css less"
-	],
-	"rawcurrent": "https://raw.github.com/less/less.js/v",
-	"sourcearchive": "https://github.com/less/less.js/archive/v",
-	"dependencies": {
-		"copy-anything": "^2.0.1",
-		"parse-node-version": "^1.0.1",
-		"tslib": "^1.10.0"
-	}
+  "_args": [
+    [
+      "less@4.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "less@4.1.1",
+  "_id": "less@4.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==",
+  "_location": "/less",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "less@4.1.1",
+    "name": "less",
+    "escapedName": "less",
+    "rawSpec": "4.1.1",
+    "saveSpec": null,
+    "fetchSpec": "4.1.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
+  "_spec": "4.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alexis Sellier",
+    "email": "self@cloudhead.net"
+  },
+  "bin": {
+    "lessc": "bin/lessc"
+  },
+  "browser": "./dist/less.js",
+  "bugs": {
+    "url": "https://github.com/less/less.js/issues"
+  },
+  "contributors": [
+    {
+      "name": "The Core Less Team"
+    }
+  ],
+  "dependencies": {
+    "copy-anything": "^2.0.1",
+    "errno": "^0.1.1",
+    "graceful-fs": "^4.1.2",
+    "image-size": "~0.5.0",
+    "make-dir": "^2.1.0",
+    "mime": "^1.4.1",
+    "needle": "^2.5.2",
+    "parse-node-version": "^1.0.1",
+    "source-map": "~0.6.0",
+    "tslib": "^1.10.0"
+  },
+  "description": "Leaner CSS",
+  "devDependencies": {
+    "@less/test-data": "^4.1.0",
+    "@less/test-import-module": "^4.0.0",
+    "@rollup/plugin-commonjs": "^17.0.0",
+    "@rollup/plugin-json": "^4.1.0",
+    "@rollup/plugin-node-resolve": "^11.0.0",
+    "@typescript-eslint/eslint-plugin": "^3.3.0",
+    "@typescript-eslint/parser": "^3.3.0",
+    "benny": "^3.6.12",
+    "bootstrap-less-port": "0.3.0",
+    "chai": "^4.2.0",
+    "diff": "^3.2.0",
+    "eslint": "^6.8.0",
+    "fs-extra": "^8.1.0",
+    "git-rev": "^0.2.1",
+    "globby": "^10.0.1",
+    "grunt": "^1.0.4",
+    "grunt-cli": "^1.3.2",
+    "grunt-contrib-clean": "^1.0.0",
+    "grunt-contrib-connect": "^1.0.2",
+    "grunt-eslint": "^21.1.0",
+    "grunt-saucelabs": "^9.0.1",
+    "grunt-shell": "^1.3.0",
+    "html-template-tag": "^3.2.0",
+    "jit-grunt": "^0.10.0",
+    "less-plugin-autoprefix": "^1.5.1",
+    "less-plugin-clean-css": "^1.5.1",
+    "minimist": "^1.2.0",
+    "mocha": "^6.2.1",
+    "mocha-headless-chrome": "^2.0.3",
+    "mocha-teamcity-reporter": "^3.0.0",
+    "nock": "^11.8.2",
+    "npm-run-all": "^4.1.5",
+    "performance-now": "^0.2.0",
+    "phin": "^2.2.3",
+    "promise": "^7.1.1",
+    "read-glob": "^3.0.0",
+    "resolve": "^1.17.0",
+    "rollup": "^2.34.1",
+    "rollup-plugin-terser": "^5.1.1",
+    "rollup-plugin-typescript2": "^0.29.0",
+    "semver": "^6.3.0",
+    "shx": "^0.3.2",
+    "time-grunt": "^1.3.0",
+    "ts-node": "^8.4.1",
+    "typescript": "^4.1.3",
+    "uikit": "2.27.4"
+  },
+  "directories": {
+    "test": "./test"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "homepage": "http://lesscss.org",
+  "keywords": [
+    "compile less",
+    "css nesting",
+    "css variable",
+    "css",
+    "gradients css",
+    "gradients css3",
+    "less compiler",
+    "less css",
+    "less mixins",
+    "less",
+    "less.js",
+    "lesscss",
+    "mixins",
+    "nested css",
+    "parser",
+    "preprocessor",
+    "bootstrap css",
+    "bootstrap less",
+    "style",
+    "styles",
+    "stylesheet",
+    "variables in css",
+    "css less"
+  ],
+  "license": "Apache-2.0",
+  "main": "index",
+  "master": {
+    "url": "https://github.com/less/less.js/blob/master/",
+    "raw": "https://raw.githubusercontent.com/less/less.js/master/"
+  },
+  "module": "./lib/less-node/index",
+  "name": "less",
+  "optionalDependencies": {
+    "errno": "^0.1.1",
+    "graceful-fs": "^4.1.2",
+    "image-size": "~0.5.0",
+    "make-dir": "^2.1.0",
+    "mime": "^1.4.1",
+    "needle": "^2.5.2",
+    "source-map": "~0.6.0"
+  },
+  "rawcurrent": "https://raw.github.com/less/less.js/v",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/less/less.js.git"
+  },
+  "scripts": {
+    "build": "npm-run-all clean compile",
+    "clean": "shx rm -rf ./lib tsconfig.tsbuildinfo",
+    "compile": "tsc -p tsconfig.json",
+    "copy:root": "shx cp -rf ./dist ../../",
+    "dev": "tsc -p tsconfig.json -w",
+    "grunt": "grunt",
+    "prepublishOnly": "grunt dist",
+    "test": "grunt test"
+  },
+  "sourcearchive": "https://github.com/less/less.js/archive/v",
+  "version": "4.1.1"
 }
Index: trip-planner-front/node_modules/license-webpack-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/license-webpack-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/license-webpack-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,40 +1,44 @@
 {
-  "name": "license-webpack-plugin",
-  "version": "2.3.20",
-  "description": "Outputs licenses from 3rd party libraries to a file",
-  "main": "dist/index.js",
-  "typings": "dist/index.d.ts",
-  "files": [
-    "/dist/**/*",
-    "/MIGRATION.md",
-    "/DOCUMENTATION.md"
+  "_args": [
+    [
+      "license-webpack-plugin@2.3.20",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "clean": "rimraf dist",
-    "format": "cross-env prettier --single-quote --write 'src/**/*.ts'",
-    "format:e2e": "cross-env prettier --ignore-path .gitignore --single-quote --write 'e2e/**/*.js'",
-    "lint": "cross-env tslint 'src/**/*.ts' --project tsconfig.json",
-    "build": "yarn run format && yarn run lint && yarn run clean && tsc",
-    "prepublishOnly": "yarn run build",
-    "jest": "jest",
-    "test:unit": "yarn run build && yarn run jest",
-    "test:e2e": "yarn run format:e2e && yarn --cwd e2e/webpack-v4 && yarn --cwd e2e/webpack-v5 && jest --config jest.config.e2e.js --runInBand",
-    "test": "yarn run test:unit && yarn run test:e2e"
+  "_development": true,
+  "_from": "license-webpack-plugin@2.3.20",
+  "_id": "license-webpack-plugin@2.3.20",
+  "_inBundle": false,
+  "_integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==",
+  "_location": "/license-webpack-plugin",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "license-webpack-plugin@2.3.20",
+    "name": "license-webpack-plugin",
+    "escapedName": "license-webpack-plugin",
+    "rawSpec": "2.3.20",
+    "saveSpec": null,
+    "fetchSpec": "2.3.20"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/xz64/license-webpack-plugin.git"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz",
+  "_spec": "2.3.20",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "S K",
+    "url": "xz64"
   },
-  "keywords": [
-    "license",
-    "plugin",
-    "webpack"
-  ],
-  "author": "S K (xz64)",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/xz64/license-webpack-plugin/issues"
   },
-  "homepage": "https://github.com/xz64/license-webpack-plugin#readme",
+  "dependencies": {
+    "@types/webpack-sources": "^0.1.5",
+    "webpack-sources": "^1.2.0"
+  },
+  "description": "Outputs licenses from 3rd party libraries to a file",
   "devDependencies": {
     "@types/jest": "^22.2.2",
@@ -49,12 +53,40 @@
     "typescript": "^3.8.0"
   },
-  "dependencies": {
-    "@types/webpack-sources": "^0.1.5",
-    "webpack-sources": "^1.2.0"
-  },
+  "files": [
+    "/dist/**/*",
+    "/MIGRATION.md",
+    "/DOCUMENTATION.md"
+  ],
+  "homepage": "https://github.com/xz64/license-webpack-plugin#readme",
+  "keywords": [
+    "license",
+    "plugin",
+    "webpack"
+  ],
+  "license": "ISC",
+  "main": "dist/index.js",
+  "name": "license-webpack-plugin",
   "peerDependenciesMeta": {
     "webpack": {
       "optional": true
     }
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/xz64/license-webpack-plugin.git"
+  },
+  "scripts": {
+    "build": "yarn run format && yarn run lint && yarn run clean && tsc",
+    "clean": "rimraf dist",
+    "format": "cross-env prettier --single-quote --write 'src/**/*.ts'",
+    "format:e2e": "cross-env prettier --ignore-path .gitignore --single-quote --write 'e2e/**/*.js'",
+    "jest": "jest",
+    "lint": "cross-env tslint 'src/**/*.ts' --project tsconfig.json",
+    "prepublishOnly": "yarn run build",
+    "test": "yarn run test:unit && yarn run test:e2e",
+    "test:e2e": "yarn run format:e2e && yarn --cwd e2e/webpack-v4 && yarn --cwd e2e/webpack-v5 && jest --config jest.config.e2e.js --runInBand",
+    "test:unit": "yarn run build && yarn run jest"
+  },
+  "typings": "dist/index.d.ts",
+  "version": "2.3.20"
 }
Index: trip-planner-front/node_modules/lilconfig/package.json
===================================================================
--- trip-planner-front/node_modules/lilconfig/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lilconfig/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,82 @@
 {
+  "_args": [
+    [
+      "lilconfig@2.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lilconfig@2.0.3",
+  "_id": "lilconfig@2.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==",
+  "_location": "/lilconfig",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lilconfig@2.0.3",
     "name": "lilconfig",
-    "version": "2.0.3",
-    "description": "A zero-dependency alternative to cosmiconfig",
-    "main": "dist/index.js",
-    "types": "dist/index.d.ts",
-    "scripts": {
-        "prebuild": "npm run clean",
-        "build": "tsc --declaration",
-        "postbuild": "du -h ./dist/*",
-        "clean": "rm -rf ./dist",
-        "test": "jest --coverage",
-        "lint": "eslint ./src/*.ts"
-    },
-    "keywords": [
-        "cosmiconfig",
-        "config",
-        "configuration",
-        "search"
-    ],
-    "files": [
-        "dist/*"
-    ],
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/antonk52/lilconfig"
-    },
-    "bugs": "https://github.com/antonk52/lilconfig/issues",
-    "author": "antonk52",
-    "license": "MIT",
-    "devDependencies": {
-        "@types/jest": "^26.0.23",
-        "@types/node": "^14.17.2",
-        "@typescript-eslint/eslint-plugin": "^4.26.0",
-        "@typescript-eslint/parser": "^4.26.0",
-        "cosmiconfig": "7.0.0",
-        "eslint": "^7.28.0",
-        "eslint-config-prettier": "^8.3.0",
-        "eslint-plugin-prettier": "^3.4.0",
-        "jest": "^26.6.3",
-        "prettier": "^2.3.1",
-        "ts-jest": "^26.5.6",
-        "typescript": "^4.3.2"
-    },
-    "engines": {
-        "node": ">=10"
-    }
+    "escapedName": "lilconfig",
+    "rawSpec": "2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "2.0.3"
+  },
+  "_requiredBy": [
+    "/cssnano"
+  ],
+  "_resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz",
+  "_spec": "2.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "antonk52"
+  },
+  "bugs": {
+    "url": "https://github.com/antonk52/lilconfig/issues"
+  },
+  "description": "A zero-dependency alternative to cosmiconfig",
+  "devDependencies": {
+    "@types/jest": "^26.0.23",
+    "@types/node": "^14.17.2",
+    "@typescript-eslint/eslint-plugin": "^4.26.0",
+    "@typescript-eslint/parser": "^4.26.0",
+    "cosmiconfig": "7.0.0",
+    "eslint": "^7.28.0",
+    "eslint-config-prettier": "^8.3.0",
+    "eslint-plugin-prettier": "^3.4.0",
+    "jest": "^26.6.3",
+    "prettier": "^2.3.1",
+    "ts-jest": "^26.5.6",
+    "typescript": "^4.3.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "dist/*"
+  ],
+  "homepage": "https://github.com/antonk52/lilconfig#readme",
+  "keywords": [
+    "cosmiconfig",
+    "config",
+    "configuration",
+    "search"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "lilconfig",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/antonk52/lilconfig.git"
+  },
+  "scripts": {
+    "build": "tsc --declaration",
+    "clean": "rm -rf ./dist",
+    "lint": "eslint ./src/*.ts",
+    "postbuild": "du -h ./dist/*",
+    "prebuild": "npm run clean",
+    "test": "jest --coverage"
+  },
+  "types": "dist/index.d.ts",
+  "version": "2.0.3"
 }
Index: trip-planner-front/node_modules/lines-and-columns/package.json
===================================================================
--- trip-planner-front/node_modules/lines-and-columns/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lines-and-columns/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,40 @@
 {
-  "name": "lines-and-columns",
-  "description": "Maps lines and columns to character offsets and back.",
-  "main": "dist/index.js",
-  "module": "dist/index.mjs",
-  "types": "dist/index.d.ts",
-  "scripts": {
-    "lint": "tslint --config tslint.json --project tsconfig.json --type-check",
-    "lint-fix": "tslint --config tslint.json --project tsconfig.json --type-check --fix",
-    "prebuild": "rm -rf dist",
-    "build": "./script/build",
-    "pretest": "npm run build",
-    "test": "mocha",
-    "prepublish": "npm run lint && npm run build",
-    "semantic-release": "semantic-release pre && npm publish && semantic-release post"
+  "_args": [
+    [
+      "lines-and-columns@1.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lines-and-columns@1.1.6",
+  "_id": "lines-and-columns@1.1.6",
+  "_inBundle": false,
+  "_integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+  "_location": "/lines-and-columns",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lines-and-columns@1.1.6",
+    "name": "lines-and-columns",
+    "escapedName": "lines-and-columns",
+    "rawSpec": "1.1.6",
+    "saveSpec": null,
+    "fetchSpec": "1.1.6"
   },
-  "files": [
-    "dist"
+  "_requiredBy": [
+    "/parse-json"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/eventualbuddha/lines-and-columns.git"
+  "_resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+  "_spec": "1.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Brian Donovan",
+    "email": "me@brian-donovan.com"
   },
-  "keywords": [
-    "lines",
-    "columns",
-    "parser"
-  ],
-  "author": "Brian Donovan <me@brian-donovan.com>",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/eventualbuddha/lines-and-columns/issues"
   },
-  "homepage": "https://github.com/eventualbuddha/lines-and-columns#readme",
+  "description": "Maps lines and columns to character offsets and back.",
   "devDependencies": {
     "@types/mocha": "^2.2.34",
@@ -42,4 +46,32 @@
     "typescript": "^2.1.4"
   },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/eventualbuddha/lines-and-columns#readme",
+  "keywords": [
+    "lines",
+    "columns",
+    "parser"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "module": "dist/index.mjs",
+  "name": "lines-and-columns",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/eventualbuddha/lines-and-columns.git"
+  },
+  "scripts": {
+    "build": "./script/build",
+    "lint": "tslint --config tslint.json --project tsconfig.json --type-check",
+    "lint-fix": "tslint --config tslint.json --project tsconfig.json --type-check --fix",
+    "prebuild": "rm -rf dist",
+    "prepublish": "npm run lint && npm run build",
+    "pretest": "npm run build",
+    "semantic-release": "semantic-release pre && npm publish && semantic-release post",
+    "test": "mocha"
+  },
+  "types": "dist/index.d.ts",
   "version": "1.1.6"
 }
Index: trip-planner-front/node_modules/loader-runner/package.json
===================================================================
--- trip-planner-front/node_modules/loader-runner/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/loader-runner/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,47 @@
 {
-  "name": "loader-runner",
-  "version": "4.2.0",
-  "description": "Runs (webpack) loaders",
-  "main": "lib/LoaderRunner.js",
-  "scripts": {
-    "lint": "eslint lib test",
-    "pretest": "npm run lint",
-    "test": "mocha --reporter spec",
-    "precover": "npm run lint",
-    "cover": "istanbul cover node_modules/mocha/bin/_mocha"
+  "_args": [
+    [
+      "loader-runner@4.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "loader-runner@4.2.0",
+  "_id": "loader-runner@4.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
+  "_location": "/loader-runner",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "loader-runner@4.2.0",
+    "name": "loader-runner",
+    "escapedName": "loader-runner",
+    "rawSpec": "4.2.0",
+    "saveSpec": null,
+    "fetchSpec": "4.2.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/webpack/loader-runner.git"
+  "_requiredBy": [
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
+  "_spec": "4.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
   },
-  "keywords": [
-    "webpack",
-    "loader"
-  ],
-  "author": "Tobias Koppers @sokra",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/webpack/loader-runner/issues"
   },
-  "homepage": "https://github.com/webpack/loader-runner#readme",
+  "description": "Runs (webpack) loaders",
+  "devDependencies": {
+    "eslint": "^3.12.2",
+    "eslint-plugin-node": "^3.0.5",
+    "eslint-plugin-nodeca": "^1.0.3",
+    "istanbul": "^0.4.1",
+    "mocha": "^3.2.0",
+    "should": "^8.0.2"
+  },
   "engines": {
     "node": ">=6.11.5"
@@ -35,11 +54,23 @@
     "schemas/"
   ],
-  "devDependencies": {
-    "eslint": "^3.12.2",
-    "eslint-plugin-node": "^3.0.5",
-    "eslint-plugin-nodeca": "^1.0.3",
-    "istanbul": "^0.4.1",
-    "mocha": "^3.2.0",
-    "should": "^8.0.2"
-  }
+  "homepage": "https://github.com/webpack/loader-runner#readme",
+  "keywords": [
+    "webpack",
+    "loader"
+  ],
+  "license": "MIT",
+  "main": "lib/LoaderRunner.js",
+  "name": "loader-runner",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/loader-runner.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover node_modules/mocha/bin/_mocha",
+    "lint": "eslint lib test",
+    "precover": "npm run lint",
+    "pretest": "npm run lint",
+    "test": "mocha --reporter spec"
+  },
+  "version": "4.2.0"
 }
Index: trip-planner-front/node_modules/loader-utils/package.json
===================================================================
--- trip-planner-front/node_modules/loader-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/loader-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,41 @@
 {
-  "name": "loader-utils",
-  "version": "2.0.0",
-  "author": "Tobias Koppers @sokra",
-  "description": "utils for webpack loaders",
+  "_args": [
+    [
+      "loader-utils@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "loader-utils@2.0.0",
+  "_id": "loader-utils@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+  "_location": "/loader-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "loader-utils@2.0.0",
+    "name": "loader-utils",
+    "escapedName": "loader-utils",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@jsdevtools/coverage-istanbul-loader",
+    "/adjust-sourcemap-loader",
+    "/resolve-url-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
+  },
+  "bugs": {
+    "url": "https://github.com/webpack/loader-utils/issues"
+  },
   "dependencies": {
     "big.js": "^5.2.2",
@@ -9,19 +43,5 @@
     "json5": "^2.1.2"
   },
-  "scripts": {
-    "lint": "eslint lib test",
-    "pretest": "yarn lint",
-    "test": "jest",
-    "test:ci": "jest --coverage",
-    "release": "yarn test && standard-version"
-  },
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/webpack/loader-utils.git"
-  },
-  "engines": {
-    "node": ">=8.9.0"
-  },
+  "description": "utils for webpack loaders",
   "devDependencies": {
     "coveralls": "^3.0.9",
@@ -33,7 +53,25 @@
     "standard-version": "^7.1.0"
   },
-  "main": "lib/index.js",
+  "engines": {
+    "node": ">=8.9.0"
+  },
   "files": [
     "lib"
-  ]
+  ],
+  "homepage": "https://github.com/webpack/loader-utils#readme",
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "loader-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/loader-utils.git"
+  },
+  "scripts": {
+    "lint": "eslint lib test",
+    "pretest": "yarn lint",
+    "release": "yarn test && standard-version",
+    "test": "jest",
+    "test:ci": "jest --coverage"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/locate-path/package.json
===================================================================
--- trip-planner-front/node_modules/locate-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/locate-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,81 @@
 {
-	"name": "locate-path",
-	"version": "5.0.0",
-	"description": "Get the first path that exists on disk of multiple paths",
-	"license": "MIT",
-	"repository": "sindresorhus/locate-path",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"locate",
-		"path",
-		"paths",
-		"file",
-		"files",
-		"exists",
-		"find",
-		"finder",
-		"search",
-		"searcher",
-		"array",
-		"iterable",
-		"iterator"
-	],
-	"dependencies": {
-		"p-locate": "^4.1.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "locate-path@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "locate-path@5.0.0",
+  "_id": "locate-path@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+  "_location": "/locate-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "locate-path@5.0.0",
+    "name": "locate-path",
+    "escapedName": "locate-path",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/find-up"
+  ],
+  "_resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/locate-path/issues"
+  },
+  "dependencies": {
+    "p-locate": "^4.1.0"
+  },
+  "description": "Get the first path that exists on disk of multiple paths",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/locate-path#readme",
+  "keywords": [
+    "locate",
+    "path",
+    "paths",
+    "file",
+    "files",
+    "exists",
+    "find",
+    "finder",
+    "search",
+    "searcher",
+    "array",
+    "iterable",
+    "iterator"
+  ],
+  "license": "MIT",
+  "name": "locate-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/locate-path.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/lodash.debounce/package.json
===================================================================
--- trip-planner-front/node_modules/lodash.debounce/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lodash.debounce/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,73 @@
 {
-  "name": "lodash.debounce",
-  "version": "4.0.8",
+  "_args": [
+    [
+      "lodash.debounce@4.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lodash.debounce@4.0.8",
+  "_id": "lodash.debounce@4.0.8",
+  "_inBundle": false,
+  "_integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+  "_location": "/lodash.debounce",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lodash.debounce@4.0.8",
+    "name": "lodash.debounce",
+    "escapedName": "lodash.debounce",
+    "rawSpec": "4.0.8",
+    "saveSpec": null,
+    "fetchSpec": "4.0.8"
+  },
+  "_requiredBy": [
+    "/@babel/helper-define-polyfill-provider"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+  "_spec": "4.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
   "description": "The lodash method `_.debounce` exported as a module.",
   "homepage": "https://lodash.com/",
   "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "debounce"
+  ],
   "license": "MIT",
-  "keywords": "lodash-modularized, debounce",
-  "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-  "contributors": [
-    "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-    "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
-    "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
-  ],
-  "repository": "lodash/lodash",
-  "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
+  "name": "lodash.debounce",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.0.8"
 }
Index: trip-planner-front/node_modules/lodash.memoize/package.json
===================================================================
--- trip-planner-front/node_modules/lodash.memoize/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lodash.memoize/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,73 @@
 {
-  "name": "lodash.memoize",
-  "version": "4.1.2",
+  "_args": [
+    [
+      "lodash.memoize@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lodash.memoize@4.1.2",
+  "_id": "lodash.memoize@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+  "_location": "/lodash.memoize",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lodash.memoize@4.1.2",
+    "name": "lodash.memoize",
+    "escapedName": "lodash.memoize",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/caniuse-api"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
   "description": "The lodash method `_.memoize` exported as a module.",
   "homepage": "https://lodash.com/",
   "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "memoize"
+  ],
   "license": "MIT",
-  "keywords": "lodash-modularized, memoize",
-  "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-  "contributors": [
-    "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-    "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
-    "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
-  ],
-  "repository": "lodash/lodash",
-  "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
+  "name": "lodash.memoize",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.1.2"
 }
Index: trip-planner-front/node_modules/lodash.uniq/package.json
===================================================================
--- trip-planner-front/node_modules/lodash.uniq/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lodash.uniq/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,73 @@
 {
-  "name": "lodash.uniq",
-  "version": "4.5.0",
+  "_args": [
+    [
+      "lodash.uniq@4.5.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lodash.uniq@4.5.0",
+  "_id": "lodash.uniq@4.5.0",
+  "_inBundle": false,
+  "_integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+  "_location": "/lodash.uniq",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lodash.uniq@4.5.0",
+    "name": "lodash.uniq",
+    "escapedName": "lodash.uniq",
+    "rawSpec": "4.5.0",
+    "saveSpec": null,
+    "fetchSpec": "4.5.0"
+  },
+  "_requiredBy": [
+    "/caniuse-api"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+  "_spec": "4.5.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
   "description": "The lodash method `_.uniq` exported as a module.",
   "homepage": "https://lodash.com/",
   "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "uniq"
+  ],
   "license": "MIT",
-  "keywords": "lodash-modularized, uniq",
-  "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-  "contributors": [
-    "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
-    "Blaine Bublitz <blaine.bublitz@gmail.com> (https://github.com/phated)",
-    "Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)"
-  ],
-  "repository": "lodash/lodash",
-  "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }
+  "name": "lodash.uniq",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.5.0"
 }
Index: trip-planner-front/node_modules/lodash/package.json
===================================================================
--- trip-planner-front/node_modules/lodash/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lodash/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,70 @@
 {
-  "name": "lodash",
-  "version": "4.17.21",
+  "_args": [
+    [
+      "lodash@4.17.21",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lodash@4.17.21",
+  "_id": "lodash@4.17.21",
+  "_inBundle": false,
+  "_integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+  "_location": "/lodash",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lodash@4.17.21",
+    "name": "lodash",
+    "escapedName": "lodash",
+    "rawSpec": "4.17.21",
+    "saveSpec": null,
+    "fetchSpec": "4.17.21"
+  },
+  "_requiredBy": [
+    "/async",
+    "/http-proxy-middleware",
+    "/inquirer",
+    "/karma"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+  "_spec": "4.17.21",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be"
+    }
+  ],
   "description": "Lodash modular utilities.",
-  "keywords": "modules, stdlib, util",
   "homepage": "https://lodash.com/",
-  "repository": "lodash/lodash",
   "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "modules",
+    "stdlib",
+    "util"
+  ],
   "license": "MIT",
   "main": "lodash.js",
-  "author": "John-David Dalton <john.david.dalton@gmail.com>",
-  "contributors": [
-    "John-David Dalton <john.david.dalton@gmail.com>",
-    "Mathias Bynens <mathias@qiwi.be>"
-  ],
-  "scripts": { "test": "echo \"See https://travis-ci.org/lodash-archive/lodash-cli for testing details.\"" }
+  "name": "lodash",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash-archive/lodash-cli for testing details.\""
+  },
+  "version": "4.17.21"
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/ansi-styles/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/ansi-styles/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/ansi-styles/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "ansi-styles",
-	"version": "4.3.0",
-	"description": "ANSI escape codes for styling strings in the terminal",
-	"license": "MIT",
-	"repository": "chalk/ansi-styles",
-	"funding": "https://github.com/chalk/ansi-styles?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"color-convert": "^2.0.1"
-	},
-	"devDependencies": {
-		"@types/color-convert": "^1.9.0",
-		"ava": "^2.3.0",
-		"svg-term-cli": "^2.1.1",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-styles@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-styles@4.3.0",
+  "_id": "ansi-styles@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+  "_location": "/log-symbols/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-styles@4.3.0",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/log-symbols/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {
+    "color-convert": "^2.0.1"
+  },
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "@types/color-convert": "^1.9.0",
+    "ava": "^2.3.0",
+    "svg-term-cli": "^2.1.1",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/chalk/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/chalk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/chalk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,68 +1,104 @@
 {
-	"name": "chalk",
-	"version": "4.1.2",
-	"description": "Terminal string styling done right",
-	"license": "MIT",
-	"repository": "chalk/chalk",
-	"funding": "https://github.com/chalk/chalk?sponsor=1",
-	"main": "source",
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd",
-		"bench": "matcha benchmark.js"
-	},
-	"files": [
-		"source",
-		"index.d.ts"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"str",
-		"ansi",
-		"style",
-		"styles",
-		"tty",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"ansi-styles": "^4.1.0",
-		"supports-color": "^7.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"coveralls": "^3.0.7",
-		"execa": "^4.0.0",
-		"import-fresh": "^3.1.0",
-		"matcha": "^0.7.0",
-		"nyc": "^15.0.0",
-		"resolve-from": "^5.0.0",
-		"tsd": "^0.7.4",
-		"xo": "^0.28.2"
-	},
-	"xo": {
-		"rules": {
-			"unicorn/prefer-string-slice": "off",
-			"unicorn/prefer-includes": "off",
-			"@typescript-eslint/member-ordering": "off",
-			"no-redeclare": "off",
-			"unicorn/string-content": "off",
-			"unicorn/better-regex": "off"
-		}
-	}
+  "_args": [
+    [
+      "chalk@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chalk@4.1.2",
+  "_id": "chalk@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+  "_location": "/log-symbols/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chalk@4.1.2",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/log-symbols"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "^4.1.0",
+    "supports-color": "^7.1.0"
+  },
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "coveralls": "^3.0.7",
+    "execa": "^4.0.0",
+    "import-fresh": "^3.1.0",
+    "matcha": "^0.7.0",
+    "nyc": "^15.0.0",
+    "resolve-from": "^5.0.0",
+    "tsd": "^0.7.4",
+    "xo": "^0.28.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "source",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/chalk?sponsor=1",
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "main": "source",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "4.1.2",
+  "xo": {
+    "rules": {
+      "unicorn/prefer-string-slice": "off",
+      "unicorn/prefer-includes": "off",
+      "@typescript-eslint/member-ordering": "off",
+      "no-redeclare": "off",
+      "unicorn/string-content": "off",
+      "unicorn/better-regex": "off"
+    }
+  }
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/color-convert/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/color-convert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/color-convert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "color-convert",
+  "_args": [
+    [
+      "color-convert@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-convert@2.0.1",
+  "_id": "color-convert@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+  "_location": "/log-symbols/color-convert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-convert@2.0.1",
+    "name": "color-convert",
+    "escapedName": "color-convert",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/log-symbols/ansi-styles"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Heather Arthur",
+    "email": "fayearthur@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Qix-/color-convert/issues"
+  },
+  "dependencies": {
+    "color-name": "~1.1.4"
+  },
   "description": "Plain color conversion functions",
-  "version": "2.0.1",
-  "author": "Heather Arthur <fayearthur@gmail.com>",
-  "license": "MIT",
-  "repository": "Qix-/color-convert",
-  "scripts": {
-    "pretest": "xo",
-    "test": "node test/basic.js"
+  "devDependencies": {
+    "chalk": "^2.4.2",
+    "xo": "^0.24.0"
   },
   "engines": {
     "node": ">=7.0.0"
   },
+  "files": [
+    "index.js",
+    "conversions.js",
+    "route.js"
+  ],
+  "homepage": "https://github.com/Qix-/color-convert#readme",
   "keywords": [
     "color",
@@ -27,9 +67,15 @@
     "ansi16"
   ],
-  "files": [
-    "index.js",
-    "conversions.js",
-    "route.js"
-  ],
+  "license": "MIT",
+  "name": "color-convert",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Qix-/color-convert.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "test": "node test/basic.js"
+  },
+  "version": "2.0.1",
   "xo": {
     "rules": {
@@ -38,11 +84,4 @@
       "operator-linebreak": 0
     }
-  },
-  "devDependencies": {
-    "chalk": "^2.4.2",
-    "xo": "^0.24.0"
-  },
-  "dependencies": {
-    "color-name": "~1.1.4"
   }
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/color-name/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/color-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/color-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "color-name",
-  "version": "1.1.4",
+  "_args": [
+    [
+      "color-name@1.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-name@1.1.4",
+  "_id": "color-name@1.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+  "_location": "/log-symbols/color-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-name@1.1.4",
+    "name": "color-name",
+    "escapedName": "color-name",
+    "rawSpec": "1.1.4",
+    "saveSpec": null,
+    "fetchSpec": "1.1.4"
+  },
+  "_requiredBy": [
+    "/log-symbols/color-convert"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+  "_spec": "1.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "DY",
+    "email": "dfcreative@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/colorjs/color-name/issues"
+  },
   "description": "A list of color names and its values",
-  "main": "index.js",
   "files": [
     "index.js"
   ],
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:colorjs/color-name.git"
-  },
+  "homepage": "https://github.com/colorjs/color-name",
   "keywords": [
     "color-name",
@@ -20,9 +47,14 @@
     "keyword"
   ],
-  "author": "DY <dfcreative@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/colorjs/color-name/issues"
+  "main": "index.js",
+  "name": "color-name",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/colorjs/color-name.git"
   },
-  "homepage": "https://github.com/colorjs/color-name"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.1.4"
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/log-symbols/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/log-symbols/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/log-symbols/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "supports-color",
-	"version": "7.2.0",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"import-fresh": "^3.0.0",
-		"xo": "^0.24.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@7.2.0",
+  "_id": "supports-color@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+  "_location": "/log-symbols/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@7.2.0",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/log-symbols/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "import-fresh": "^3.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/log-symbols/package.json
===================================================================
--- trip-planner-front/node_modules/log-symbols/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log-symbols/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,52 +1,88 @@
 {
-	"name": "log-symbols",
-	"version": "4.1.0",
-	"description": "Colored symbols for various log levels. Example: `✔︎ Success`",
-	"license": "MIT",
-	"repository": "sindresorhus/log-symbols",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"browser.js"
-	],
-	"keywords": [
-		"unicode",
-		"cli",
-		"cmd",
-		"command-line",
-		"characters",
-		"symbol",
-		"symbols",
-		"figure",
-		"figures",
-		"fallback",
-		"windows",
-		"log",
-		"logging",
-		"terminal",
-		"stdout"
-	],
-	"dependencies": {
-		"chalk": "^4.1.0",
-		"is-unicode-supported": "^0.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"strip-ansi": "^6.0.0",
-		"tsd": "^0.14.0",
-		"xo": "^0.38.2"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "log-symbols@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "log-symbols@4.1.0",
+  "_id": "log-symbols@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+  "_location": "/log-symbols",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "log-symbols@4.1.0",
+    "name": "log-symbols",
+    "escapedName": "log-symbols",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/sindresorhus/log-symbols/issues"
+  },
+  "dependencies": {
+    "chalk": "^4.1.0",
+    "is-unicode-supported": "^0.1.0"
+  },
+  "description": "Colored symbols for various log levels. Example: `✔︎ Success`",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "strip-ansi": "^6.0.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.38.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "browser.js"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/log-symbols#readme",
+  "keywords": [
+    "unicode",
+    "cli",
+    "cmd",
+    "command-line",
+    "characters",
+    "symbol",
+    "symbols",
+    "figure",
+    "figures",
+    "fallback",
+    "windows",
+    "log",
+    "logging",
+    "terminal",
+    "stdout"
+  ],
+  "license": "MIT",
+  "name": "log-symbols",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/log-symbols.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/log4js/package.json
===================================================================
--- trip-planner-front/node_modules/log4js/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/log4js/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,70 +1,41 @@
 {
-  "name": "log4js",
-  "version": "6.3.0",
-  "description": "Port of Log4js to work with node.",
-  "homepage": "https://log4js-node.github.io/log4js-node/",
-  "files": [
-    "lib",
-    "types"
+  "_args": [
+    [
+      "log4js@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "keywords": [
-    "logging",
-    "log",
-    "log4j",
-    "node"
+  "_development": true,
+  "_from": "log4js@6.3.0",
+  "_id": "log4js@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
+  "_location": "/log4js",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "log4js@6.3.0",
+    "name": "log4js",
+    "escapedName": "log4js",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/karma"
   ],
-  "license": "Apache-2.0",
-  "main": "./lib/log4js",
-  "types": "./types/log4js.d.ts",
-  "author": "Gareth Jones <gareth.nomiddlename@gmail.com>",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/log4js-node/log4js-node.git"
+  "_resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Gareth Jones",
+    "email": "gareth.nomiddlename@gmail.com"
+  },
+  "browser": {
+    "os": false
   },
   "bugs": {
     "url": "http://github.com/log4js-node/log4js-node/issues"
-  },
-  "engines": {
-    "node": ">=8.0"
-  },
-  "scripts": {
-    "pretest": "eslint \"lib/**/*.js\" \"test/**/*.js\"",
-    "test": "tap \"test/tap/**/*.js\" --cov",
-    "typings": "tsc -p types/tsconfig.json",
-    "codecov": "tap \"test/tap/**/*.js\" --cov --coverage-report=lcov && codecov"
-  },
-  "directories": {
-    "test": "test",
-    "lib": "lib"
-  },
-  "dependencies": {
-    "date-format": "^3.0.0",
-    "debug": "^4.1.1",
-    "flatted": "^2.0.1",
-    "rfdc": "^1.1.4",
-    "streamroller": "^2.2.4"
-  },
-  "devDependencies": {
-    "@log4js-node/sandboxed-module": "^2.2.1",
-    "callsites": "^3.1.0",
-    "codecov": "^3.6.1",
-    "deep-freeze": "0.0.1",
-    "eslint": "^5.16.0",
-    "eslint-config-airbnb-base": "^13.2.0",
-    "eslint-config-prettier": "^6.5.0",
-    "eslint-import-resolver-node": "^0.3.2",
-    "eslint-plugin-import": "^2.18.2",
-    "eslint-plugin-prettier": "^3.1.1",
-    "fs-extra": "^8.1.0",
-    "husky": "^3.0.9",
-    "nyc": "^14.1.1",
-    "prettier": "^1.18.2",
-    "proxyquire": "^2.1.3",
-    "tap": "^14.10.7",
-    "typescript": "^3.7.2",
-    "validate-commit-msg": "^2.14.0"
-  },
-  "browser": {
-    "os": false
   },
   "config": {
@@ -89,4 +60,59 @@
     }
   },
+  "dependencies": {
+    "date-format": "^3.0.0",
+    "debug": "^4.1.1",
+    "flatted": "^2.0.1",
+    "rfdc": "^1.1.4",
+    "streamroller": "^2.2.4"
+  },
+  "description": "Port of Log4js to work with node.",
+  "devDependencies": {
+    "@log4js-node/sandboxed-module": "^2.2.1",
+    "callsites": "^3.1.0",
+    "codecov": "^3.6.1",
+    "deep-freeze": "0.0.1",
+    "eslint": "^5.16.0",
+    "eslint-config-airbnb-base": "^13.2.0",
+    "eslint-config-prettier": "^6.5.0",
+    "eslint-import-resolver-node": "^0.3.2",
+    "eslint-plugin-import": "^2.18.2",
+    "eslint-plugin-prettier": "^3.1.1",
+    "fs-extra": "^8.1.0",
+    "husky": "^3.0.9",
+    "nyc": "^14.1.1",
+    "prettier": "^1.18.2",
+    "proxyquire": "^2.1.3",
+    "tap": "^14.10.7",
+    "typescript": "^3.7.2",
+    "validate-commit-msg": "^2.14.0"
+  },
+  "directories": {
+    "test": "test",
+    "lib": "lib"
+  },
+  "engines": {
+    "node": ">=8.0"
+  },
+  "files": [
+    "lib",
+    "types"
+  ],
+  "homepage": "https://log4js-node.github.io/log4js-node/",
+  "husky": {
+    "hooks": {
+      "commit-msg": "validate-commit-msg",
+      "pre-push": "npm test && npm run typings"
+    }
+  },
+  "keywords": [
+    "logging",
+    "log",
+    "log4j",
+    "node"
+  ],
+  "license": "Apache-2.0",
+  "main": "./lib/log4js",
+  "name": "log4js",
   "nyc": {
     "all": true,
@@ -98,9 +124,15 @@
     ]
   },
-  "husky": {
-    "hooks": {
-      "commit-msg": "validate-commit-msg",
-      "pre-push": "npm test && npm run typings"
-    }
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/log4js-node/log4js-node.git"
+  },
+  "scripts": {
+    "codecov": "tap \"test/tap/**/*.js\" --cov --coverage-report=lcov && codecov",
+    "pretest": "eslint \"lib/**/*.js\" \"test/**/*.js\"",
+    "test": "tap \"test/tap/**/*.js\" --cov",
+    "typings": "tsc -p types/tsconfig.json"
+  },
+  "types": "./types/log4js.d.ts",
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/loglevel/package.json
===================================================================
--- trip-planner-front/node_modules/loglevel/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/loglevel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,32 @@
 {
-  "name": "loglevel",
-  "description": "Minimal lightweight logging for JavaScript, adding reliable log level methods to any available console.log methods",
-  "version": "1.7.1",
-  "homepage": "https://github.com/pimterry/loglevel",
+  "_args": [
+    [
+      "loglevel@1.7.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "loglevel@1.7.1",
+  "_id": "loglevel@1.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+  "_location": "/loglevel",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "loglevel@1.7.1",
+    "name": "loglevel",
+    "escapedName": "loglevel",
+    "rawSpec": "1.7.1",
+    "saveSpec": null,
+    "fetchSpec": "1.7.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
+  "_spec": "1.7.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Tim Perry",
@@ -9,28 +34,9 @@
     "url": "http://tim-perry.co.uk"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/pimterry/loglevel.git"
-  },
   "bugs": {
     "url": "https://github.com/pimterry/loglevel/issues"
   },
-  "funding": {
-    "type": "tidelift",
-    "url": "https://tidelift.com/funding/github/npm/loglevel"
-  },
-  "license": "MIT",
-  "main": "lib/loglevel.js",
-  "types": "./index.d.ts",
-  "engines": {
-    "node": ">= 0.6.0"
-  },
-  "scripts": {
-    "test": "grunt test && tsc --noEmit ./test/type-test.ts",
-    "ci": "grunt ci",
-    "dist": "grunt dist",
-    "watch": "grunt watch"
-  },
   "dependencies": {},
+  "description": "Minimal lightweight logging for JavaScript, adding reliable log level methods to any available console.log methods",
   "devDependencies": {
     "@types/core-js": "2.5.0",
@@ -56,4 +62,12 @@
     "typescript": "^3.5.1"
   },
+  "engines": {
+    "node": ">= 0.6.0"
+  },
+  "funding": {
+    "type": "tidelift",
+    "url": "https://tidelift.com/funding/github/npm/loglevel"
+  },
+  "homepage": "https://github.com/pimterry/loglevel",
   "keywords": [
     "log",
@@ -61,4 +75,19 @@
     "logging",
     "browser"
-  ]
+  ],
+  "license": "MIT",
+  "main": "lib/loglevel.js",
+  "name": "loglevel",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/pimterry/loglevel.git"
+  },
+  "scripts": {
+    "ci": "grunt ci",
+    "dist": "grunt dist",
+    "test": "grunt test && tsc --noEmit ./test/type-test.ts",
+    "watch": "grunt watch"
+  },
+  "types": "./index.d.ts",
+  "version": "1.7.1"
 }
Index: trip-planner-front/node_modules/lru-cache/package.json
===================================================================
--- trip-planner-front/node_modules/lru-cache/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/lru-cache/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,58 @@
 {
-  "name": "lru-cache",
+  "_args": [
+    [
+      "lru-cache@6.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "lru-cache@6.0.0",
+  "_id": "lru-cache@6.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+  "_location": "/lru-cache",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "lru-cache@6.0.0",
+    "name": "lru-cache",
+    "escapedName": "lru-cache",
+    "rawSpec": "6.0.0",
+    "saveSpec": null,
+    "fetchSpec": "6.0.0"
+  },
+  "_requiredBy": [
+    "/@npmcli/git",
+    "/cacache",
+    "/hosted-git-info",
+    "/make-fetch-happen",
+    "/semver"
+  ],
+  "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+  "_spec": "6.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/node-lru-cache/issues"
+  },
+  "dependencies": {
+    "yallist": "^4.0.0"
+  },
   "description": "A cache object that deletes the least-recently-used items.",
-  "version": "6.0.0",
-  "author": "Isaac Z. Schlueter <i@izs.me>",
+  "devDependencies": {
+    "benchmark": "^2.1.4",
+    "tap": "^14.10.7"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/node-lru-cache#readme",
   "keywords": [
     "mru",
@@ -9,26 +60,18 @@
     "cache"
   ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "lru-cache",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-lru-cache.git"
+  },
   "scripts": {
-    "test": "tap",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
+    "test": "tap"
   },
-  "main": "index.js",
-  "repository": "git://github.com/isaacs/node-lru-cache.git",
-  "devDependencies": {
-    "benchmark": "^2.1.4",
-    "tap": "^14.10.7"
-  },
-  "license": "ISC",
-  "dependencies": {
-    "yallist": "^4.0.0"
-  },
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "6.0.0"
 }
Index: trip-planner-front/node_modules/magic-string/package.json
===================================================================
--- trip-planner-front/node_modules/magic-string/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/magic-string/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,43 @@
 {
-  "name": "magic-string",
-  "description": "Modify strings, generate sourcemaps",
-  "author": "Rich Harris",
-  "version": "0.25.7",
-  "repository": "https://github.com/rich-harris/magic-string",
-  "main": "dist/magic-string.cjs.js",
-  "module": "dist/magic-string.es.js",
-  "jsnext:main": "dist/magic-string.es.js",
-  "typings": "index.d.ts",
-  "license": "MIT",
+  "_args": [
+    [
+      "magic-string@0.25.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "magic-string@0.25.7",
+  "_id": "magic-string@0.25.7",
+  "_inBundle": false,
+  "_integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+  "_location": "/magic-string",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "magic-string@0.25.7",
+    "name": "magic-string",
+    "escapedName": "magic-string",
+    "rawSpec": "0.25.7",
+    "saveSpec": null,
+    "fetchSpec": "0.25.7"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/core",
+    "/@angular/compiler-cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+  "_spec": "0.25.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Rich Harris"
+  },
+  "bugs": {
+    "url": "https://github.com/rich-harris/magic-string/issues"
+  },
   "dependencies": {
     "sourcemap-codec": "^1.4.4"
   },
+  "description": "Modify strings, generate sourcemaps",
   "devDependencies": {
     "eslint": "^5.16.0",
@@ -24,4 +51,11 @@
     "source-map-support": "^0.5.12"
   },
+  "files": [
+    "dist/*",
+    "index.d.ts",
+    "README.md"
+  ],
+  "homepage": "https://github.com/rich-harris/magic-string#readme",
+  "jsnext:main": "dist/magic-string.es.js",
   "keywords": [
     "string",
@@ -31,18 +65,23 @@
     "transpilation"
   ],
+  "license": "MIT",
+  "main": "dist/magic-string.cjs.js",
+  "module": "dist/magic-string.es.js",
+  "name": "magic-string",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/rich-harris/magic-string.git"
+  },
   "scripts": {
-    "test": "mocha",
-    "pretest": "npm run lint && npm run build",
+    "build": "rollup -c",
     "format": "prettier --single-quote --print-width 100 --use-tabs --write src/*.js src/**/*.js",
-    "build": "rollup -c",
+    "lint": "eslint src test",
     "prepare": "npm run build",
     "prepublishOnly": "rm -rf dist && npm test",
-    "lint": "eslint src test",
+    "pretest": "npm run lint && npm run build",
+    "test": "mocha",
     "watch": "rollup -cw"
   },
-  "files": [
-    "dist/*",
-    "index.d.ts",
-    "README.md"
-  ]
+  "typings": "index.d.ts",
+  "version": "0.25.7"
 }
Index: trip-planner-front/node_modules/make-dir/node_modules/.bin/semver
===================================================================
--- trip-planner-front/node_modules/make-dir/node_modules/.bin/semver	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-dir/node_modules/.bin/semver	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
+  node  "$basedir/../semver/bin/semver.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.cmd
===================================================================
--- trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+"%_prog%"  "%dp0%\..\semver\bin\semver.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.ps1
===================================================================
--- trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-dir/node_modules/.bin/semver.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  } else {
-    & "node$exe"  "$basedir/../semver/bin/semver.js" $args
-  }
+  & "node$exe"  "$basedir/../semver/bin/semver.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/make-dir/node_modules/semver/package.json
===================================================================
--- trip-planner-front/node_modules/make-dir/node_modules/semver/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-dir/node_modules/semver/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,41 @@
 {
-  "name": "semver",
-  "version": "6.3.0",
+  "_args": [
+    [
+      "semver@6.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "semver@6.3.0",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/make-dir/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "semver@6.3.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "6.3.0",
+    "saveSpec": null,
+    "fetchSpec": "6.3.0"
+  },
+  "_requiredBy": [
+    "/make-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_spec": "6.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "semver": "bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
   "description": "The semantic version parser used by npm.",
-  "main": "semver.js",
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
   "devDependencies": {
     "tap": "^14.3.1"
-  },
-  "license": "ISC",
-  "repository": "https://github.com/npm/node-semver",
-  "bin": {
-    "semver": "./bin/semver.js"
   },
   "files": [
@@ -23,6 +44,21 @@
     "semver.js"
   ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.3.0"
 }
Index: trip-planner-front/node_modules/make-dir/package.json
===================================================================
--- trip-planner-front/node_modules/make-dir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-dir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,59 +1,97 @@
 {
-	"name": "make-dir",
-	"version": "3.1.0",
-	"description": "Make a directory and its parents if needed - Think `mkdir -p`",
-	"license": "MIT",
-	"repository": "sindresorhus/make-dir",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"mkdir",
-		"mkdirp",
-		"make",
-		"directories",
-		"dir",
-		"dirs",
-		"folders",
-		"directory",
-		"folder",
-		"path",
-		"parent",
-		"parents",
-		"intermediate",
-		"recursively",
-		"recursive",
-		"create",
-		"fs",
-		"filesystem",
-		"file-system"
-	],
-	"dependencies": {
-		"semver": "^6.0.0"
-	},
-	"devDependencies": {
-		"@types/graceful-fs": "^4.1.3",
-		"@types/node": "^13.7.1",
-		"ava": "^1.4.0",
-		"codecov": "^3.2.0",
-		"graceful-fs": "^4.1.15",
-		"nyc": "^15.0.0",
-		"path-type": "^4.0.0",
-		"tempy": "^0.2.1",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.4"
-	}
+  "_args": [
+    [
+      "make-dir@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "make-dir@3.1.0",
+  "_id": "make-dir@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+  "_location": "/make-dir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "make-dir@3.1.0",
+    "name": "make-dir",
+    "escapedName": "make-dir",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/babel-loader",
+    "/find-cache-dir",
+    "/istanbul-lib-report"
+  ],
+  "_resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/make-dir/issues"
+  },
+  "dependencies": {
+    "semver": "^6.0.0"
+  },
+  "description": "Make a directory and its parents if needed - Think `mkdir -p`",
+  "devDependencies": {
+    "@types/graceful-fs": "^4.1.3",
+    "@types/node": "^13.7.1",
+    "ava": "^1.4.0",
+    "codecov": "^3.2.0",
+    "graceful-fs": "^4.1.15",
+    "nyc": "^15.0.0",
+    "path-type": "^4.0.0",
+    "tempy": "^0.2.1",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.4"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/make-dir#readme",
+  "keywords": [
+    "mkdir",
+    "mkdirp",
+    "make",
+    "directories",
+    "dir",
+    "dirs",
+    "folders",
+    "directory",
+    "folder",
+    "path",
+    "parent",
+    "parents",
+    "intermediate",
+    "recursively",
+    "recursive",
+    "create",
+    "fs",
+    "filesystem",
+    "file-system"
+  ],
+  "license": "MIT",
+  "name": "make-dir",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/make-dir.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/make-fetch-happen/package.json
===================================================================
--- trip-planner-front/node_modules/make-fetch-happen/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/make-fetch-happen/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,39 @@
 {
-  "name": "make-fetch-happen",
-  "version": "9.1.0",
-  "description": "Opinionated, caching, retrying fetch client",
-  "main": "lib/index.js",
-  "files": [
-    "lib"
+  "_args": [
+    [
+      "make-fetch-happen@9.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "preversion": "npm t",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push --follow-tags",
-    "test": "tap",
-    "posttest": "npm run lint",
-    "eslint": "eslint",
-    "lint": "npm run eslint -- lib test",
-    "lintfix": "npm run lint -- --fix"
+  "_development": true,
+  "_from": "make-fetch-happen@9.1.0",
+  "_id": "make-fetch-happen@9.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
+  "_location": "/make-fetch-happen",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "make-fetch-happen@9.1.0",
+    "name": "make-fetch-happen",
+    "escapedName": "make-fetch-happen",
+    "rawSpec": "9.1.0",
+    "saveSpec": null,
+    "fetchSpec": "9.1.0"
   },
-  "repository": "https://github.com/npm/make-fetch-happen",
-  "keywords": [
-    "http",
-    "request",
-    "fetch",
-    "mean girls",
-    "caching",
-    "cache",
-    "subresource integrity"
+  "_requiredBy": [
+    "/npm-registry-fetch"
   ],
+  "_resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
+  "_spec": "9.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Kat Marchán",
-    "email": "kzm@zkat.tech",
-    "twitter": "maybekatz"
+    "email": "kzm@zkat.tech"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/npm/make-fetch-happen/issues"
+  },
   "dependencies": {
     "agentkeepalive": "^4.1.3",
@@ -51,4 +54,5 @@
     "ssri": "^8.0.0"
   },
+  "description": "Opinionated, caching, retrying fetch client",
   "devDependencies": {
     "eslint": "^7.26.0",
@@ -69,8 +73,39 @@
     "node": ">= 10"
   },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/npm/make-fetch-happen#readme",
+  "keywords": [
+    "http",
+    "request",
+    "fetch",
+    "mean girls",
+    "caching",
+    "cache",
+    "subresource integrity"
+  ],
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "make-fetch-happen",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/make-fetch-happen.git"
+  },
+  "scripts": {
+    "eslint": "eslint",
+    "lint": "npm run eslint -- lib test",
+    "lintfix": "npm run lint -- --fix",
+    "posttest": "npm run lint",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push --follow-tags",
+    "preversion": "npm t",
+    "test": "tap"
+  },
   "tap": {
     "color": 1,
     "files": "test/*.js",
     "check-coverage": true
-  }
+  },
+  "version": "9.1.0"
 }
Index: trip-planner-front/node_modules/map-age-cleaner/package.json
===================================================================
--- trip-planner-front/node_modules/map-age-cleaner/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/map-age-cleaner/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,59 +1,95 @@
 {
-	"name": "map-age-cleaner",
-	"version": "0.1.3",
-	"description": "Automatically cleanup expired items in a Map",
-	"license": "MIT",
-	"repository": "SamVerschueren/map-age-cleaner",
-	"author": {
-		"name": "Sam Verschueren",
-		"email": "sam.verschueren@gmail.com",
-		"url": "github.com/SamVerschueren"
-	},
-	"main": "dist/index.js",
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"prepublishOnly": "npm run build",
-		"pretest": "npm run build -- --sourceMap",
-		"test": "npm run lint && nyc ava dist/test.js",
-		"lint": "tslint --format stylish --project .",
-		"build": "npm run clean && tsc",
-		"clean": "del-cli dist"
-	},
-	"files": [
-		"dist/index.js",
-		"dist/index.d.ts"
-	],
-	"keywords": [
-		"map",
-		"age",
-		"cleaner",
-		"maxage",
-		"expire",
-		"expiration",
-		"expiring"
-	],
-	"dependencies": {
-		"p-defer": "^1.0.0"
-	},
-	"devDependencies": {
-		"@types/delay": "^2.0.1",
-		"@types/node": "^10.7.1",
-		"ava": "^0.25.0",
-		"codecov": "^3.0.0",
-		"del-cli": "^1.1.0",
-		"delay": "^3.0.0",
-		"nyc": "^12.0.0",
-		"tslint": "^5.11.0",
-		"tslint-xo": "^0.9.0",
-		"typescript": "^3.0.1"
-	},
-	"typings": "dist/index.d.ts",
-	"sideEffects": false,
-	"nyc": {
-		"exclude": [
-			"dist/test.js"
-		]
-	}
+  "_args": [
+    [
+      "map-age-cleaner@0.1.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "map-age-cleaner@0.1.3",
+  "_id": "map-age-cleaner@0.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+  "_location": "/map-age-cleaner",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "map-age-cleaner@0.1.3",
+    "name": "map-age-cleaner",
+    "escapedName": "map-age-cleaner",
+    "rawSpec": "0.1.3",
+    "saveSpec": null,
+    "fetchSpec": "0.1.3"
+  },
+  "_requiredBy": [
+    "/mem"
+  ],
+  "_resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+  "_spec": "0.1.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sam Verschueren",
+    "email": "sam.verschueren@gmail.com",
+    "url": "github.com/SamVerschueren"
+  },
+  "bugs": {
+    "url": "https://github.com/SamVerschueren/map-age-cleaner/issues"
+  },
+  "dependencies": {
+    "p-defer": "^1.0.0"
+  },
+  "description": "Automatically cleanup expired items in a Map",
+  "devDependencies": {
+    "@types/delay": "^2.0.1",
+    "@types/node": "^10.7.1",
+    "ava": "^0.25.0",
+    "codecov": "^3.0.0",
+    "del-cli": "^1.1.0",
+    "delay": "^3.0.0",
+    "nyc": "^12.0.0",
+    "tslint": "^5.11.0",
+    "tslint-xo": "^0.9.0",
+    "typescript": "^3.0.1"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "dist/index.js",
+    "dist/index.d.ts"
+  ],
+  "homepage": "https://github.com/SamVerschueren/map-age-cleaner#readme",
+  "keywords": [
+    "map",
+    "age",
+    "cleaner",
+    "maxage",
+    "expire",
+    "expiration",
+    "expiring"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "map-age-cleaner",
+  "nyc": {
+    "exclude": [
+      "dist/test.js"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/SamVerschueren/map-age-cleaner.git"
+  },
+  "scripts": {
+    "build": "npm run clean && tsc",
+    "clean": "del-cli dist",
+    "lint": "tslint --format stylish --project .",
+    "prepublishOnly": "npm run build",
+    "pretest": "npm run build -- --sourceMap",
+    "test": "npm run lint && nyc ava dist/test.js"
+  },
+  "sideEffects": false,
+  "typings": "dist/index.d.ts",
+  "version": "0.1.3"
 }
Index: trip-planner-front/node_modules/map-cache/package.json
===================================================================
--- trip-planner-front/node_modules/map-cache/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/map-cache/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,52 @@
 {
-  "name": "map-cache",
-  "description": "Basic cache object for storing key-value pairs.",
-  "version": "0.2.2",
-  "homepage": "https://github.com/jonschlinkert/map-cache",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/map-cache",
+  "_args": [
+    [
+      "map-cache@0.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "map-cache@0.2.2",
+  "_id": "map-cache@0.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+  "_location": "/map-cache",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "map-cache@0.2.2",
+    "name": "map-cache",
+    "escapedName": "map-cache",
+    "rawSpec": "0.2.2",
+    "saveSpec": null,
+    "fetchSpec": "0.2.2"
+  },
+  "_requiredBy": [
+    "/fragment-cache",
+    "/snapdragon"
+  ],
+  "_resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+  "_spec": "0.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/map-cache/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Basic cache object for storing key-value pairs.",
   "devDependencies": {
     "gulp-format-md": "^0.1.9",
     "should": "^8.3.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/map-cache",
   "keywords": [
     "cache",
@@ -33,4 +58,14 @@
     "store"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "map-cache",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/map-cache.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -56,4 +91,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.2.2"
 }
Index: trip-planner-front/node_modules/map-visit/package.json
===================================================================
--- trip-planner-front/node_modules/map-visit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/map-visit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,55 @@
 {
-  "name": "map-visit",
-  "description": "Map `visit` over an array of objects.",
-  "version": "1.0.0",
-  "homepage": "https://github.com/jonschlinkert/map-visit",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward <brian.woodward@gmail.com> (https://twitter.com/doowb)",
-    "Jon Schlinkert <jon.schlinkert@sellside.com> (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "map-visit@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/map-visit",
+  "_development": true,
+  "_from": "map-visit@1.0.0",
+  "_id": "map-visit@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+  "_location": "/map-visit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "map-visit@1.0.0",
+    "name": "map-visit",
+    "escapedName": "map-visit",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/collection-visit"
+  ],
+  "_resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/map-visit/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "email": "brian.woodward@gmail.com",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "object-visit": "^1.0.0"
   },
+  "description": "Map `visit` over an array of objects.",
   "devDependencies": {
     "clone-deep": "^0.2.4",
@@ -34,4 +59,11 @@
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/map-visit",
   "keywords": [
     "array",
@@ -49,4 +81,14 @@
     "visitor"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "map-visit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/map-visit.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -71,4 +113,5 @@
       "verb-generate-readme"
     ]
-  }
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/mdn-data/package.json
===================================================================
--- trip-planner-front/node_modules/mdn-data/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mdn-data/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,43 @@
 {
-  "name": "mdn-data",
-  "version": "2.0.14",
+  "_args": [
+    [
+      "mdn-data@2.0.14",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mdn-data@2.0.14",
+  "_id": "mdn-data@2.0.14",
+  "_inBundle": false,
+  "_integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+  "_location": "/mdn-data",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mdn-data@2.0.14",
+    "name": "mdn-data",
+    "escapedName": "mdn-data",
+    "rawSpec": "2.0.14",
+    "saveSpec": null,
+    "fetchSpec": "2.0.14"
+  },
+  "_requiredBy": [
+    "/css-tree"
+  ],
+  "_resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+  "_spec": "2.0.14",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mozilla Developer Network"
+  },
+  "bugs": {
+    "url": "https://github.com/mdn/data/issues"
+  },
   "description": "Open Web data by the Mozilla Developer Network",
-  "main": "index.js",
+  "devDependencies": {
+    "ajv": "^5.0.1",
+    "better-ajv-errors": "^0.5.1"
+  },
   "files": [
     "api/index.js",
@@ -12,8 +48,5 @@
     "l10n/*.json"
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mdn/data.git"
-  },
+  "homepage": "https://developer.mozilla.org",
   "keywords": [
     "data",
@@ -22,18 +55,16 @@
     "css"
   ],
-  "author": "Mozilla Developer Network",
   "license": "CC0-1.0",
-  "bugs": {
-    "url": "https://github.com/mdn/data/issues"
-  },
-  "homepage": "https://developer.mozilla.org",
-  "devDependencies": {
-    "ajv": "^5.0.1",
-    "better-ajv-errors": "^0.5.1"
+  "main": "index.js",
+  "name": "mdn-data",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mdn/data.git"
   },
   "scripts": {
     "lint": "node test/lint",
-    "travis": "npm test",
-    "test": "npm run lint"
-  }
+    "test": "npm run lint",
+    "travis": "npm test"
+  },
+  "version": "2.0.14"
 }
Index: trip-planner-front/node_modules/media-typer/package.json
===================================================================
--- trip-planner-front/node_modules/media-typer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/media-typer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,47 @@
 {
-  "name": "media-typer",
+  "_args": [
+    [
+      "media-typer@0.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "media-typer@0.3.0",
+  "_id": "media-typer@0.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+  "_location": "/media-typer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "media-typer@0.3.0",
+    "name": "media-typer",
+    "escapedName": "media-typer",
+    "rawSpec": "0.3.0",
+    "saveSpec": null,
+    "fetchSpec": "0.3.0"
+  },
+  "_requiredBy": [
+    "/type-is"
+  ],
+  "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+  "_spec": "0.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/media-typer/issues"
+  },
   "description": "Simple RFC 6838 media type parser and formatter",
-  "version": "0.3.0",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "repository": "jshttp/media-typer",
   "devDependencies": {
     "istanbul": "0.3.2",
     "mocha": "~1.21.4",
     "should": "~4.0.4"
+  },
+  "engines": {
+    "node": ">= 0.6"
   },
   "files": [
@@ -16,6 +50,10 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/media-typer#readme",
+  "license": "MIT",
+  "name": "media-typer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/media-typer.git"
   },
   "scripts": {
@@ -23,4 +61,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "0.3.0"
 }
Index: trip-planner-front/node_modules/mem/node_modules/mimic-fn/package.json
===================================================================
--- trip-planner-front/node_modules/mem/node_modules/mimic-fn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mem/node_modules/mimic-fn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,78 @@
 {
-	"name": "mimic-fn",
-	"version": "3.1.0",
-	"description": "Make a function mimic another one",
-	"license": "MIT",
-	"repository": "sindresorhus/mimic-fn",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"function",
-		"mimic",
-		"imitate",
-		"rename",
-		"copy",
-		"inherit",
-		"properties",
-		"name",
-		"func",
-		"fn",
-		"set",
-		"infer",
-		"change"
-	],
-	"devDependencies": {
-		"ava": "^2.1.0",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "mimic-fn@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mimic-fn@3.1.0",
+  "_id": "mimic-fn@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
+  "_location": "/mem/mimic-fn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mimic-fn@3.1.0",
+    "name": "mimic-fn",
+    "escapedName": "mimic-fn",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/mem"
+  ],
+  "_resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/mimic-fn/issues"
+  },
+  "description": "Make a function mimic another one",
+  "devDependencies": {
+    "ava": "^2.1.0",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/mimic-fn#readme",
+  "keywords": [
+    "function",
+    "mimic",
+    "imitate",
+    "rename",
+    "copy",
+    "inherit",
+    "properties",
+    "name",
+    "func",
+    "fn",
+    "set",
+    "infer",
+    "change"
+  ],
+  "license": "MIT",
+  "name": "mimic-fn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/mimic-fn.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/mem/package.json
===================================================================
--- trip-planner-front/node_modules/mem/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mem/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,74 +1,110 @@
 {
-	"name": "mem",
-	"version": "8.1.1",
-	"description": "Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input",
-	"license": "MIT",
-	"repository": "sindresorhus/mem",
-	"funding": "https://github.com/sindresorhus/mem?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && npm run build && tsd && ava",
-		"build": "del-cli dist && tsc",
-		"prepack": "npm run build"
-	},
-	"main": "dist",
-	"types": "dist/index.d.ts",
-	"files": [
-		"dist/index.js",
-		"dist/index.d.ts"
-	],
-	"keywords": [
-		"memoize",
-		"function",
-		"mem",
-		"memoization",
-		"cache",
-		"caching",
-		"optimize",
-		"performance",
-		"ttl",
-		"expire",
-		"promise"
-	],
-	"dependencies": {
-		"map-age-cleaner": "^0.1.3",
-		"mimic-fn": "^3.1.0"
-	},
-	"devDependencies": {
-		"@ava/typescript": "^1.1.1",
-		"@sindresorhus/tsconfig": "^0.7.0",
-		"@types/serialize-javascript": "^4.0.0",
-		"ava": "^3.15.0",
-		"del-cli": "^3.0.1",
-		"delay": "^4.4.0",
-		"serialize-javascript": "^5.0.1",
-		"tsd": "^0.13.1",
-		"typescript": "^4.0.3",
-		"xo": "^0.38.2"
-	},
-	"ava": {
-		"files": [
-			"test.ts"
-		],
-		"timeout": "1m",
-		"typescript": {
-			"rewritePaths": {
-				"./": "dist/"
-			}
-		}
-	},
-	"xo": {
-		"rules": {
-			"@typescript-eslint/member-ordering": "off",
-			"@typescript-eslint/no-var-requires": "off",
-			"@typescript-eslint/no-empty-function": "off"
-		}
-	}
+  "_args": [
+    [
+      "mem@8.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mem@8.1.1",
+  "_id": "mem@8.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
+  "_location": "/mem",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mem@8.1.1",
+    "name": "mem",
+    "escapedName": "mem",
+    "rawSpec": "8.1.1",
+    "saveSpec": null,
+    "fetchSpec": "8.1.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
+  "_spec": "8.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "ava": {
+    "files": [
+      "test.ts"
+    ],
+    "timeout": "1m",
+    "typescript": {
+      "rewritePaths": {
+        "./": "dist/"
+      }
+    }
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/mem/issues"
+  },
+  "dependencies": {
+    "map-age-cleaner": "^0.1.3",
+    "mimic-fn": "^3.1.0"
+  },
+  "description": "Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input",
+  "devDependencies": {
+    "@ava/typescript": "^1.1.1",
+    "@sindresorhus/tsconfig": "^0.7.0",
+    "@types/serialize-javascript": "^4.0.0",
+    "ava": "^3.15.0",
+    "del-cli": "^3.0.1",
+    "delay": "^4.4.0",
+    "serialize-javascript": "^5.0.1",
+    "tsd": "^0.13.1",
+    "typescript": "^4.0.3",
+    "xo": "^0.38.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "dist/index.js",
+    "dist/index.d.ts"
+  ],
+  "funding": "https://github.com/sindresorhus/mem?sponsor=1",
+  "homepage": "https://github.com/sindresorhus/mem#readme",
+  "keywords": [
+    "memoize",
+    "function",
+    "mem",
+    "memoization",
+    "cache",
+    "caching",
+    "optimize",
+    "performance",
+    "ttl",
+    "expire",
+    "promise"
+  ],
+  "license": "MIT",
+  "main": "dist",
+  "name": "mem",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/mem.git"
+  },
+  "scripts": {
+    "build": "del-cli dist && tsc",
+    "prepack": "npm run build",
+    "test": "xo && npm run build && tsd && ava"
+  },
+  "types": "dist/index.d.ts",
+  "version": "8.1.1",
+  "xo": {
+    "rules": {
+      "@typescript-eslint/member-ordering": "off",
+      "@typescript-eslint/no-var-requires": "off",
+      "@typescript-eslint/no-empty-function": "off"
+    }
+  }
 }
Index: trip-planner-front/node_modules/memfs/package.json
===================================================================
--- trip-planner-front/node_modules/memfs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/memfs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,48 @@
 {
-  "name": "memfs",
-  "version": "3.3.0",
-  "description": "In-memory file-system with Node's fs API.",
-  "main": "lib/index.js",
-  "types": "lib/index.d.ts",
-  "files": [
-    "lib"
+  "_args": [
+    [
+      "memfs@3.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "clean": "rimraf lib types",
-    "build": "tsc -p . && cpy src/*.js lib",
-    "test": "jest --maxWorkers 2",
-    "test:coverage": "jest --coverage",
-    "test:watch": "jest --watch",
-    "watch": "watch \"npm run build\" ./src",
-    "prettier": "prettier --ignore-path .gitignore --write \"src/**/*.{ts,js}\"",
-    "prettier:diff": "prettier -l \"src/**/*.{ts,js}\"",
-    "tslint": "tslint \"src/**/*.ts\" -t verbose"
+  "_development": true,
+  "_from": "memfs@3.3.0",
+  "_id": "memfs@3.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==",
+  "_location": "/memfs",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "memfs@3.3.0",
+    "name": "memfs",
+    "escapedName": "memfs",
+    "rawSpec": "3.3.0",
+    "saveSpec": null,
+    "fetchSpec": "3.3.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/streamich/memfs.git"
+  "_requiredBy": [
+    "/webpack-dev-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz",
+  "_spec": "3.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/streamich/memfs/issues"
+  },
+  "config": {
+    "commitizen": {
+      "path": "git-cz"
+    }
   },
   "dependencies": {
     "fs-monkey": "1.0.3"
   },
+  "description": "In-memory file-system with Node's fs API.",
   "devDependencies": {
+    "@semantic-release/changelog": "5.0.1",
+    "@semantic-release/git": "9.0.1",
+    "@semantic-release/npm": "8.0.0",
     "@types/jest": "27.0.1",
     "@types/node": "10.17.60",
@@ -35,19 +53,18 @@
     "pretty-quick": "3.1.1",
     "rimraf": "3.0.2",
+    "semantic-release": "18.0.0",
     "ts-jest": "27.0.5",
     "ts-node": "10.2.1",
     "tslint": "5.20.1",
     "tslint-config-common": "1.6.0",
-    "typescript": "4.4.3",
-    "semantic-release": "18.0.0",
-    "@semantic-release/changelog": "5.0.1",
-    "@semantic-release/git": "9.0.1",
-    "@semantic-release/npm": "8.0.0"
+    "typescript": "4.4.3"
   },
-  "config": {
-    "commitizen": {
-      "path": "git-cz"
-    }
+  "engines": {
+    "node": ">= 4.0.0"
   },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/streamich/memfs#readme",
   "jest": {
     "moduleFileExtensions": [
@@ -63,20 +80,4 @@
     "testRegex": ".*/__tests__/.*\\.(test|spec)\\.(jsx?|tsx?)$"
   },
-  "engines": {
-    "node": ">= 4.0.0"
-  },
-  "release": {
-    "verifyConditions": [
-      "@semantic-release/changelog",
-      "@semantic-release/npm",
-      "@semantic-release/git"
-    ],
-    "prepare": [
-      "@semantic-release/changelog",
-      "@semantic-release/npm",
-      "@semantic-release/git"
-    ]
-  },
-  "license": "Unlicense",
   "keywords": [
     "fs",
@@ -94,4 +95,36 @@
     "testing",
     "mock"
-  ]
+  ],
+  "license": "Unlicense",
+  "main": "lib/index.js",
+  "name": "memfs",
+  "release": {
+    "verifyConditions": [
+      "@semantic-release/changelog",
+      "@semantic-release/npm",
+      "@semantic-release/git"
+    ],
+    "prepare": [
+      "@semantic-release/changelog",
+      "@semantic-release/npm",
+      "@semantic-release/git"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/streamich/memfs.git"
+  },
+  "scripts": {
+    "build": "tsc -p . && cpy src/*.js lib",
+    "clean": "rimraf lib types",
+    "prettier": "prettier --ignore-path .gitignore --write \"src/**/*.{ts,js}\"",
+    "prettier:diff": "prettier -l \"src/**/*.{ts,js}\"",
+    "test": "jest --maxWorkers 2",
+    "test:coverage": "jest --coverage",
+    "test:watch": "jest --watch",
+    "tslint": "tslint \"src/**/*.ts\" -t verbose",
+    "watch": "watch \"npm run build\" ./src"
+  },
+  "types": "lib/index.d.ts",
+  "version": "3.3.0"
 }
Index: trip-planner-front/node_modules/memory-fs/node_modules/readable-stream/package.json
===================================================================
--- trip-planner-front/node_modules/memory-fs/node_modules/readable-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/memory-fs/node_modules/readable-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,42 @@
 {
-  "name": "readable-stream",
-  "version": "2.3.7",
-  "description": "Streams3, a user-land copy of the stream library from Node.js",
-  "main": "readable.js",
+  "_args": [
+    [
+      "readable-stream@2.3.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "readable-stream@2.3.7",
+  "_id": "readable-stream@2.3.7",
+  "_inBundle": false,
+  "_integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+  "_location": "/memory-fs/readable-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "readable-stream@2.3.7",
+    "name": "readable-stream",
+    "escapedName": "readable-stream",
+    "rawSpec": "2.3.7",
+    "saveSpec": null,
+    "fetchSpec": "2.3.7"
+  },
+  "_requiredBy": [
+    "/memory-fs"
+  ],
+  "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+  "_spec": "2.3.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": {
+    "util": false,
+    "./readable.js": "./readable-browser.js",
+    "./writable.js": "./writable-browser.js",
+    "./duplex.js": "./duplex-browser.js",
+    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/nodejs/readable-stream/issues"
+  },
   "dependencies": {
     "core-util-is": "~1.0.0",
@@ -13,4 +48,5 @@
     "util-deprecate": "~1.0.1"
   },
+  "description": "Streams3, a user-land copy of the stream library from Node.js",
   "devDependencies": {
     "assert": "^1.4.0",
@@ -22,14 +58,5 @@
     "tape": "^4.8.0"
   },
-  "scripts": {
-    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
-    "cover": "nyc npm test",
-    "report": "nyc report --reporter=lcov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/readable-stream"
-  },
+  "homepage": "https://github.com/nodejs/readable-stream#readme",
   "keywords": [
     "readable",
@@ -37,11 +64,7 @@
     "pipe"
   ],
-  "browser": {
-    "util": false,
-    "./readable.js": "./readable-browser.js",
-    "./writable.js": "./writable-browser.js",
-    "./duplex.js": "./duplex-browser.js",
-    "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
-  },
+  "license": "MIT",
+  "main": "readable.js",
+  "name": "readable-stream",
   "nyc": {
     "include": [
@@ -49,4 +72,14 @@
     ]
   },
-  "license": "MIT"
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/readable-stream.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "cover": "nyc npm test",
+    "report": "nyc report --reporter=lcov",
+    "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js"
+  },
+  "version": "2.3.7"
 }
Index: trip-planner-front/node_modules/memory-fs/node_modules/string_decoder/package.json
===================================================================
--- trip-planner-front/node_modules/memory-fs/node_modules/string_decoder/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/memory-fs/node_modules/string_decoder/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,39 @@
 {
-  "name": "string_decoder",
-  "version": "1.1.1",
-  "description": "The string_decoder module from Node core",
-  "main": "lib/string_decoder.js",
+  "_args": [
+    [
+      "string_decoder@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "string_decoder@1.1.1",
+  "_id": "string_decoder@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+  "_location": "/memory-fs/string_decoder",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "string_decoder@1.1.1",
+    "name": "string_decoder",
+    "escapedName": "string_decoder",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/memory-fs/readable-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/nodejs/string_decoder/issues"
+  },
   "dependencies": {
     "safe-buffer": "~5.1.0"
   },
+  "description": "The string_decoder module from Node core",
   "devDependencies": {
     "babel-polyfill": "^6.23.0",
@@ -12,12 +41,4 @@
     "inherits": "^2.0.3",
     "tap": "~0.4.8"
-  },
-  "scripts": {
-    "test": "tap test/parallel/*.js && node test/verify-dependencies",
-    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/string_decoder.git"
   },
   "homepage": "https://github.com/nodejs/string_decoder",
@@ -28,4 +49,15 @@
     "browserify"
   ],
-  "license": "MIT"
+  "license": "MIT",
+  "main": "lib/string_decoder.js",
+  "name": "string_decoder",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/string_decoder.git"
+  },
+  "scripts": {
+    "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
+    "test": "tap test/parallel/*.js && node test/verify-dependencies"
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/memory-fs/package.json
===================================================================
--- trip-planner-front/node_modules/memory-fs/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/memory-fs/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,50 @@
 {
-  "name": "memory-fs",
-  "version": "0.4.1",
-  "description": "A simple in-memory filesystem. Holds data in a javascript object.",
-  "main": "lib/MemoryFileSystem.js",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "memory-fs@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "memory-fs@0.4.1",
+  "_id": "memory-fs@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+  "_location": "/memory-fs",
+  "_phantomChildren": {
+    "core-util-is": "1.0.2",
+    "inherits": "2.0.4",
+    "isarray": "1.0.0",
+    "process-nextick-args": "2.0.1",
+    "safe-buffer": "5.1.2",
+    "util-deprecate": "1.0.2"
   },
-  "files": [
-    "lib/"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "memory-fs@0.4.1",
+    "name": "memory-fs",
+    "escapedName": "memory-fs",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/webpack-dev-middleware"
   ],
-  "scripts": {
-    "test": "mocha",
-    "cover": "istanbul cover node_modules/mocha/bin/_mocha",
-    "travis": "npm run cover -- --report lcovonly"
+  "_resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/webpack/memory-fs.git"
-  },
-  "keywords": [
-    "fs",
-    "memory"
-  ],
-  "author": "Tobias Koppers @sokra",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/webpack/memory-fs/issues"
   },
-  "homepage": "https://github.com/webpack/memory-fs",
+  "dependencies": {
+    "errno": "^0.1.3",
+    "readable-stream": "^2.0.1"
+  },
+  "description": "A simple in-memory filesystem. Holds data in a javascript object.",
   "devDependencies": {
     "bl": "^1.0.0",
@@ -37,7 +55,27 @@
     "should": "^4.0.4"
   },
-  "dependencies": {
-    "errno": "^0.1.3",
-    "readable-stream": "^2.0.1"
-  }
+  "directories": {
+    "test": "test"
+  },
+  "files": [
+    "lib/"
+  ],
+  "homepage": "https://github.com/webpack/memory-fs",
+  "keywords": [
+    "fs",
+    "memory"
+  ],
+  "license": "MIT",
+  "main": "lib/MemoryFileSystem.js",
+  "name": "memory-fs",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/memory-fs.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover node_modules/mocha/bin/_mocha",
+    "test": "mocha",
+    "travis": "npm run cover -- --report lcovonly"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/merge-descriptors/package.json
===================================================================
--- trip-planner-front/node_modules/merge-descriptors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/merge-descriptors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,51 @@
 {
-  "name": "merge-descriptors",
-  "description": "Merge objects using descriptors",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "merge-descriptors@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "merge-descriptors@1.0.1",
+  "_id": "merge-descriptors@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+  "_location": "/merge-descriptors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "merge-descriptors@1.0.1",
+    "name": "merge-descriptors",
+    "escapedName": "merge-descriptors",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
-    "url": "http://jongleberry.com",
-    "twitter": "https://twitter.com/jongleberry"
+    "url": "http://jongleberry.com"
+  },
+  "bugs": {
+    "url": "https://github.com/component/merge-descriptors/issues"
   },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Mike Grabowski <grabbou@gmail.com>"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Mike Grabowski",
+      "email": "grabbou@gmail.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "component/merge-descriptors",
+  "description": "Merge objects using descriptors",
   "devDependencies": {
     "istanbul": "0.4.1",
@@ -25,8 +58,16 @@
     "index.js"
   ],
+  "homepage": "https://github.com/component/merge-descriptors#readme",
+  "license": "MIT",
+  "name": "merge-descriptors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/component/merge-descriptors.git"
+  },
   "scripts": {
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/"
-  }
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/merge-source-map/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/merge-source-map/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/merge-source-map/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/merge-source-map/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/merge-source-map"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/merge-source-map/package.json
===================================================================
--- trip-planner-front/node_modules/merge-source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/merge-source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,43 @@
 {
-  "name": "merge-source-map",
-  "version": "1.1.0",
-  "description": "Merge old source map and new source map in multi-transform flow",
-  "main": "index.js",
-  "scripts": {
-    "test": "nyc tape test/*.js",
-    "lint": "eslint index.js 'test/**/*.js'",
-    "version": "npm run lint && npm run test"
+  "_args": [
+    [
+      "merge-source-map@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "merge-source-map@1.1.0",
+  "_id": "merge-source-map@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+  "_location": "/merge-source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "merge-source-map@1.1.0",
+    "name": "merge-source-map",
+    "escapedName": "merge-source-map",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/keik/merge-source-map.git"
+  "_requiredBy": [
+    "/@jsdevtools/coverage-istanbul-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "keik",
+    "email": "k4t0.kei@gmail.com"
   },
-  "author": "keik <k4t0.kei@gmail.com>",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/keik/merge-source-map/issues"
   },
-  "keywords": [
-    "sourcemap",
-    "source-map"
-  ],
   "dependencies": {
     "source-map": "^0.6.1"
   },
+  "description": "Merge old source map and new source map in multi-transform flow",
   "devDependencies": {
     "babel-core": "^6.25.0",
@@ -39,4 +54,22 @@
     "tape": "^4.6.3"
   },
-  "files": []
+  "files": [],
+  "homepage": "https://github.com/keik/merge-source-map#readme",
+  "keywords": [
+    "sourcemap",
+    "source-map"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "merge-source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/keik/merge-source-map.git"
+  },
+  "scripts": {
+    "lint": "eslint index.js 'test/**/*.js'",
+    "test": "nyc tape test/*.js",
+    "version": "npm run lint && npm run test"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/merge-stream/package.json
===================================================================
--- trip-planner-front/node_modules/merge-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/merge-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,58 @@
 {
-  "name": "merge-stream",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "merge-stream@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "merge-stream@2.0.0",
+  "_id": "merge-stream@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+  "_location": "/merge-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "merge-stream@2.0.0",
+    "name": "merge-stream",
+    "escapedName": "merge-stream",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/jest-worker"
+  ],
+  "_resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Stephen Sugden",
+    "email": "me@stephensugden.com"
+  },
+  "bugs": {
+    "url": "https://github.com/grncdr/merge-stream/issues"
+  },
+  "dependencies": {},
   "description": "Create a stream that emits events from multiple other streams",
+  "devDependencies": {
+    "from2": "^2.0.3",
+    "istanbul": "^0.4.5"
+  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/grncdr/merge-stream#readme",
+  "license": "MIT",
+  "name": "merge-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/grncdr/merge-stream.git"
+  },
   "scripts": {
     "test": "istanbul cover test.js && istanbul check-cover --statements 100 --branches 100"
   },
-  "repository": "grncdr/merge-stream",
-  "author": "Stephen Sugden <me@stephensugden.com>",
-  "license": "MIT",
-  "dependencies": {},
-  "devDependencies": {
-    "from2": "^2.0.3",
-    "istanbul": "^0.4.5"
-  }
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/merge2/package.json
===================================================================
--- trip-planner-front/node_modules/merge2/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/merge2/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,55 @@
 {
-  "name": "merge2",
-  "description": "Merge multiple streams into one stream in sequence or parallel.",
+  "_args": [
+    [
+      "merge2@1.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "merge2@1.4.1",
+  "_id": "merge2@1.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+  "_location": "/merge2",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "merge2@1.4.1",
+    "name": "merge2",
+    "escapedName": "merge2",
+    "rawSpec": "1.4.1",
+    "saveSpec": null,
+    "fetchSpec": "1.4.1"
+  },
+  "_requiredBy": [
+    "/fast-glob",
+    "/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+  "_spec": "1.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "Yan Qing <admin@zensh.com>"
   ],
-  "license": "MIT",
-  "version": "1.4.1",
-  "main": "./index.js",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:teambition/merge2.git"
+  "bugs": {
+    "url": "https://github.com/teambition/merge2/issues"
   },
+  "dependencies": {},
+  "description": "Merge multiple streams into one stream in sequence or parallel.",
+  "devDependencies": {
+    "standard": "^14.3.4",
+    "through2": "^3.0.1",
+    "thunks": "^4.9.6",
+    "tman": "^1.10.0",
+    "to-through": "^2.0.0"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
+  "files": [
+    "README.md",
+    "index.js"
+  ],
   "homepage": "https://github.com/teambition/merge2",
   "keywords": [
@@ -23,21 +63,14 @@
     "sync"
   ],
-  "engines": {
-    "node": ">= 8"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "standard": "^14.3.4",
-    "through2": "^3.0.1",
-    "thunks": "^4.9.6",
-    "tman": "^1.10.0",
-    "to-through": "^2.0.0"
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "merge2",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/teambition/merge2.git"
   },
   "scripts": {
     "test": "standard && tman"
   },
-  "files": [
-    "README.md",
-    "index.js"
-  ]
+  "version": "1.4.1"
 }
Index: trip-planner-front/node_modules/methods/package.json
===================================================================
--- trip-planner-front/node_modules/methods/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/methods/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,61 @@
 {
-  "name": "methods",
+  "_args": [
+    [
+      "methods@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "methods@1.1.2",
+  "_id": "methods@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+  "_location": "/methods",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "methods@1.1.2",
+    "name": "methods",
+    "escapedName": "methods",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": {
+    "http": false
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/methods/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    },
+    {
+      "name": "TJ Holowaychuk",
+      "email": "tj@vision-media.ca",
+      "url": "http://tjholowaychuk.com"
+    }
+  ],
   "description": "HTTP methods that node supports",
-  "version": "1.1.2",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
-    "TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)"
-  ],
-  "license": "MIT",
-  "repository": "jshttp/methods",
   "devDependencies": {
     "istanbul": "0.4.1",
     "mocha": "1.21.5"
+  },
+  "engines": {
+    "node": ">= 0.6"
   },
   "files": [
@@ -19,6 +64,14 @@
     "LICENSE"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/methods#readme",
+  "keywords": [
+    "http",
+    "methods"
+  ],
+  "license": "MIT",
+  "name": "methods",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/methods.git"
   },
   "scripts": {
@@ -27,10 +80,4 @@
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
   },
-  "browser": {
-    "http": false
-  },
-  "keywords": [
-    "http",
-    "methods"
-  ]
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/micromatch/package.json
===================================================================
--- trip-planner-front/node_modules/micromatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/micromatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,106 @@
 {
-  "name": "micromatch",
-  "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.",
-  "version": "4.0.4",
-  "homepage": "https://github.com/micromatch/micromatch",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "(https://github.com/DianeLooney)",
-    "Amila Welihinda (amilajack.com)",
-    "Bogdan Chadkin (https://github.com/TrySound)",
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Devon Govett (http://badassjs.com)",
-    "Elan Shanker (https://github.com/es128)",
-    "Fabrício Matté (https://ultcombo.js.org)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Martin Kolárik (https://kolarik.sk)",
-    "Olsten Larck (https://i.am.charlike.online)",
-    "Paul Miller (paulmillr.com)",
-    "Tom Byrer (https://github.com/tomByrer)",
-    "Tyler Akins (http://rumkin.com)",
-    "Peter Bright <drpizza@quiscalusmexicanus.org> (https://github.com/drpizza)",
-    "Kuba Juszczyk (https://github.com/ku8ar)"
+  "_args": [
+    [
+      "micromatch@4.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/micromatch",
+  "_development": true,
+  "_from": "micromatch@4.0.4",
+  "_id": "micromatch@4.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+  "_location": "/micromatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "micromatch@4.0.4",
+    "name": "micromatch",
+    "escapedName": "micromatch",
+    "rawSpec": "4.0.4",
+    "saveSpec": null,
+    "fetchSpec": "4.0.4"
+  },
+  "_requiredBy": [
+    "/fast-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+  "_spec": "4.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/micromatch/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "url": "https://github.com/DianeLooney"
+    },
+    {
+      "name": "Amila Welihinda",
+      "url": "amilajack.com"
+    },
+    {
+      "name": "Bogdan Chadkin",
+      "url": "https://github.com/TrySound"
+    },
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Devon Govett",
+      "url": "http://badassjs.com"
+    },
+    {
+      "name": "Elan Shanker",
+      "url": "https://github.com/es128"
+    },
+    {
+      "name": "Fabrício Matté",
+      "url": "https://ultcombo.js.org"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Martin Kolárik",
+      "url": "https://kolarik.sk"
+    },
+    {
+      "name": "Olsten Larck",
+      "url": "https://i.am.charlike.online"
+    },
+    {
+      "name": "Paul Miller",
+      "url": "paulmillr.com"
+    },
+    {
+      "name": "Tom Byrer",
+      "url": "https://github.com/tomByrer"
+    },
+    {
+      "name": "Tyler Akins",
+      "url": "http://rumkin.com"
+    },
+    {
+      "name": "Peter Bright",
+      "email": "drpizza@quiscalusmexicanus.org",
+      "url": "https://github.com/drpizza"
+    },
+    {
+      "name": "Kuba Juszczyk",
+      "url": "https://github.com/ku8ar"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=8.6"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "braces": "^3.0.1",
     "picomatch": "^2.2.3"
   },
+  "description": "Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch.",
   "devDependencies": {
     "fill-range": "^7.0.1",
@@ -48,4 +110,11 @@
     "time-require": "github:jonschlinkert/time-require"
   },
+  "engines": {
+    "node": ">=8.6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/micromatch/micromatch",
   "keywords": [
     "bash",
@@ -88,4 +157,14 @@
     "wildcard"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "micromatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/micromatch.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": "collapsible",
@@ -116,4 +195,5 @@
       "multimatch"
     ]
-  }
+  },
+  "version": "4.0.4"
 }
Index: trip-planner-front/node_modules/mime-db/package.json
===================================================================
--- trip-planner-front/node_modules/mime-db/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mime-db/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,53 @@
 {
-  "name": "mime-db",
+  "_args": [
+    [
+      "mime-db@1.50.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mime-db@1.50.0",
+  "_id": "mime-db@1.50.0",
+  "_inBundle": false,
+  "_integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
+  "_location": "/mime-db",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mime-db@1.50.0",
+    "name": "mime-db",
+    "escapedName": "mime-db",
+    "rawSpec": "1.50.0",
+    "saveSpec": null,
+    "fetchSpec": "1.50.0"
+  },
+  "_requiredBy": [
+    "/compressible",
+    "/mime-types"
+  ],
+  "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
+  "_spec": "1.50.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/mime-db/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    },
+    {
+      "name": "Robert Kieffer",
+      "email": "robert@broofa.com",
+      "url": "http://github.com/broofa"
+    }
+  ],
   "description": "Media Type Database",
-  "version": "1.50.0",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
-    "Robert Kieffer <robert@broofa.com> (http://github.com/broofa)"
-  ],
-  "license": "MIT",
-  "keywords": [
-    "mime",
-    "db",
-    "type",
-    "types",
-    "database",
-    "charset",
-    "charsets"
-  ],
-  "repository": "jshttp/mime-db",
   "devDependencies": {
     "bluebird": "3.7.2",
@@ -37,4 +68,7 @@
     "stream-to-array": "2.3.0"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "HISTORY.md",
@@ -44,6 +78,19 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/mime-db#readme",
+  "keywords": [
+    "mime",
+    "db",
+    "type",
+    "types",
+    "database",
+    "charset",
+    "charsets"
+  ],
+  "license": "MIT",
+  "name": "mime-db",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/mime-db.git"
   },
   "scripts": {
@@ -56,4 +103,5 @@
     "update": "npm run fetch && npm run build",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "1.50.0"
 }
Index: trip-planner-front/node_modules/mime-types/package.json
===================================================================
--- trip-planner-front/node_modules/mime-types/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mime-types/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,61 @@
 {
-  "name": "mime-types",
-  "description": "The ultimate javascript content-type utility.",
-  "version": "2.1.33",
+  "_args": [
+    [
+      "mime-types@2.1.33",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mime-types@2.1.33",
+  "_id": "mime-types@2.1.33",
+  "_inBundle": false,
+  "_integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
+  "_location": "/mime-types",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mime-types@2.1.33",
+    "name": "mime-types",
+    "escapedName": "mime-types",
+    "rawSpec": "2.1.33",
+    "saveSpec": null,
+    "fetchSpec": "2.1.33"
+  },
+  "_requiredBy": [
+    "/accepts",
+    "/form-data",
+    "/request",
+    "/serve-index",
+    "/type-is",
+    "/webpack",
+    "/webpack-dev-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
+  "_spec": "2.1.33",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/mime-types/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jeremiah Senkpiel <fishrock123@rocketmail.com> (https://searchbeam.jit.su)",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jeremiah Senkpiel",
+      "email": "fishrock123@rocketmail.com",
+      "url": "https://searchbeam.jit.su"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
-  "license": "MIT",
-  "keywords": [
-    "mime",
-    "types"
-  ],
-  "repository": "jshttp/mime-types",
   "dependencies": {
     "mime-db": "1.50.0"
   },
+  "description": "The ultimate javascript content-type utility.",
   "devDependencies": {
     "eslint": "7.32.0",
@@ -28,4 +69,7 @@
     "nyc": "15.1.0"
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
     "HISTORY.md",
@@ -33,6 +77,14 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/mime-types#readme",
+  "keywords": [
+    "mime",
+    "types"
+  ],
+  "license": "MIT",
+  "name": "mime-types",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/mime-types.git"
   },
   "scripts": {
@@ -41,4 +93,5 @@
     "test-ci": "nyc --reporter=lcov --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test"
-  }
+  },
+  "version": "2.1.33"
 }
Index: trip-planner-front/node_modules/mime/package.json
===================================================================
--- trip-planner-front/node_modules/mime/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mime/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,47 @@
 {
+  "_args": [
+    [
+      "mime@2.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mime@2.5.2",
+  "_id": "mime@2.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
+  "_location": "/mime",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mime@2.5.2",
+    "name": "mime",
+    "escapedName": "mime",
+    "rawSpec": "2.5.2",
+    "saveSpec": null,
+    "fetchSpec": "2.5.2"
+  },
+  "_requiredBy": [
+    "/karma",
+    "/webpack-dev-server/webpack-dev-middleware"
+  ],
+  "_resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
+  "_spec": "2.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Robert Kieffer",
-    "url": "http://github.com/broofa",
-    "email": "robert@broofa.com"
-  },
-  "engines": {
-    "node": ">=4.0.0"
+    "email": "robert@broofa.com",
+    "url": "http://github.com/broofa"
   },
   "bin": {
     "mime": "cli.js"
   },
+  "bugs": {
+    "url": "https://github.com/broofa/mime/issues"
+  },
   "contributors": [],
+  "dependencies": {},
   "description": "A comprehensive library for mime-type mapping",
-  "license": "MIT",
-  "dependencies": {},
   "devDependencies": {
     "benchmark": "*",
@@ -26,4 +55,7 @@
     "standard-version": "9.1.0"
   },
+  "engines": {
+    "node": ">=4.0.0"
+  },
   "files": [
     "index.js",
@@ -33,19 +65,21 @@
     "/types"
   ],
-  "scripts": {
-    "prepare": "node src/build.js && runmd --output README.md src/README_js.md",
-    "release": "standard-version",
-    "benchmark": "node src/benchmark.js",
-    "md": "runmd --watch --output README.md src/README_js.md",
-    "test": "mocha src/test.js"
-  },
+  "homepage": "https://github.com/broofa/mime#readme",
   "keywords": [
     "util",
     "mime"
   ],
+  "license": "MIT",
   "name": "mime",
   "repository": {
-    "url": "https://github.com/broofa/mime",
+    "url": "git+https://github.com/broofa/mime.git",
     "type": "git"
+  },
+  "scripts": {
+    "benchmark": "node src/benchmark.js",
+    "md": "runmd --watch --output README.md src/README_js.md",
+    "prepare": "node src/build.js && runmd --output README.md src/README_js.md",
+    "release": "standard-version",
+    "test": "mocha src/test.js"
   },
   "version": "2.5.2"
Index: trip-planner-front/node_modules/mimic-fn/package.json
===================================================================
--- trip-planner-front/node_modules/mimic-fn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mimic-fn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,78 @@
 {
-	"name": "mimic-fn",
-	"version": "2.1.0",
-	"description": "Make a function mimic another one",
-	"license": "MIT",
-	"repository": "sindresorhus/mimic-fn",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"function",
-		"mimic",
-		"imitate",
-		"rename",
-		"copy",
-		"inherit",
-		"properties",
-		"name",
-		"func",
-		"fn",
-		"set",
-		"infer",
-		"change"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "mimic-fn@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mimic-fn@2.1.0",
+  "_id": "mimic-fn@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+  "_location": "/mimic-fn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mimic-fn@2.1.0",
+    "name": "mimic-fn",
+    "escapedName": "mimic-fn",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/onetime"
+  ],
+  "_resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/mimic-fn/issues"
+  },
+  "description": "Make a function mimic another one",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/mimic-fn#readme",
+  "keywords": [
+    "function",
+    "mimic",
+    "imitate",
+    "rename",
+    "copy",
+    "inherit",
+    "properties",
+    "name",
+    "func",
+    "fn",
+    "set",
+    "infer",
+    "change"
+  ],
+  "license": "MIT",
+  "name": "mimic-fn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/mimic-fn.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv-keywords/package.json
===================================================================
--- trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv-keywords/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv-keywords/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,39 @@
 {
-  "name": "ajv-keywords",
-  "version": "3.5.2",
-  "description": "Custom JSON-Schema keywords for Ajv validator",
-  "main": "index.js",
-  "typings": "ajv-keywords.d.ts",
-  "scripts": {
-    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
-    "prepublish": "npm run build",
-    "test": "npm run build && npm run eslint && npm run test-cov",
-    "eslint": "eslint index.js keywords/*.js spec",
-    "test-spec": "mocha spec/*.spec.js -R spec",
-    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec"
+  "_args": [
+    [
+      "ajv-keywords@3.5.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ajv-keywords@3.5.2",
+  "_id": "ajv-keywords@3.5.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+  "_location": "/mini-css-extract-plugin/ajv-keywords",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv-keywords@3.5.2",
+    "name": "ajv-keywords",
+    "escapedName": "ajv-keywords",
+    "rawSpec": "3.5.2",
+    "saveSpec": null,
+    "fetchSpec": "3.5.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  "_requiredBy": [
+    "/mini-css-extract-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+  "_spec": "3.5.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "ajv",
-    "keywords"
-  ],
-  "files": [
-    "index.js",
-    "ajv-keywords.d.ts",
-    "keywords"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/ajv-keywords/issues"
   },
-  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
-  "peerDependencies": {
-    "ajv": "^6.9.1"
-  },
+  "description": "Custom JSON-Schema keywords for Ajv validator",
   "devDependencies": {
     "ajv": "^6.9.1",
@@ -50,4 +50,35 @@
     "pre-commit": "^1.1.3",
     "uuid": "^8.1.0"
-  }
+  },
+  "files": [
+    "index.js",
+    "ajv-keywords.d.ts",
+    "keywords"
+  ],
+  "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
+  "keywords": [
+    "JSON-Schema",
+    "ajv",
+    "keywords"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ajv-keywords",
+  "peerDependencies": {
+    "ajv": "^6.9.1"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/ajv-keywords.git"
+  },
+  "scripts": {
+    "build": "node node_modules/ajv/scripts/compile-dots.js node_modules/ajv/lib keywords",
+    "eslint": "eslint index.js keywords/*.js spec",
+    "prepublish": "npm run build",
+    "test": "npm run build && npm run eslint && npm run test-cov",
+    "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec",
+    "test-spec": "mocha spec/*.spec.js -R spec"
+  },
+  "typings": "ajv-keywords.d.ts",
+  "version": "3.5.2"
 }
Index: trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv/package.json
===================================================================
--- trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/ajv/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,65 +1,42 @@
 {
-  "name": "ajv",
-  "version": "6.12.6",
-  "description": "Another JSON Schema Validator",
-  "main": "lib/ajv.js",
-  "typings": "lib/ajv.d.ts",
-  "files": [
-    "lib/",
-    "dist/",
-    "scripts/",
-    "LICENSE",
-    ".tonic_example.js"
+  "_args": [
+    [
+      "ajv@6.12.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
-    "jshint": "jshint lib/{compile/,}*.js",
-    "lint": "npm run jshint && npm run eslint",
-    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
-    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
-    "test-debug": "npm run test-spec -- --inspect-brk",
-    "test-cov": "nyc npm run test-spec",
-    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
-    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
-    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
-    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
-    "test-karma": "karma start",
-    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
-    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
-    "test": "npm run lint && npm run build && npm run test-all",
-    "prepublish": "npm run build && npm run bundle",
-    "watch": "watch \"npm run build\" ./lib/dot"
+  "_development": true,
+  "_from": "ajv@6.12.6",
+  "_id": "ajv@6.12.6",
+  "_inBundle": false,
+  "_integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+  "_location": "/mini-css-extract-plugin/ajv",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ajv@6.12.6",
+    "name": "ajv",
+    "escapedName": "ajv",
+    "rawSpec": "6.12.6",
+    "saveSpec": null,
+    "fetchSpec": "6.12.6"
   },
-  "nyc": {
-    "exclude": [
-      "**/spec/**",
-      "node_modules"
-    ],
-    "reporter": [
-      "lcov",
-      "text-summary"
-    ]
+  "_requiredBy": [
+    "/mini-css-extract-plugin/schema-utils"
+  ],
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+  "_spec": "6.12.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ajv-validator/ajv.git"
-  },
-  "keywords": [
-    "JSON",
-    "schema",
-    "validator",
-    "validation",
-    "jsonschema",
-    "json-schema",
-    "json-schema-validator",
-    "json-schema-validation"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/ajv-validator/ajv/issues"
   },
-  "homepage": "https://github.com/ajv-validator/ajv",
-  "tonicExampleFilename": ".tonic_example.js",
+  "collective": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/ajv"
+  },
   "dependencies": {
     "fast-deep-equal": "^3.1.1",
@@ -68,4 +45,5 @@
     "uri-js": "^4.2.2"
   },
+  "description": "Another JSON Schema Validator",
   "devDependencies": {
     "ajv-async": "^1.0.0",
@@ -96,11 +74,64 @@
     "watch": "^1.0.0"
   },
-  "collective": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/ajv"
-  },
+  "files": [
+    "lib/",
+    "dist/",
+    "scripts/",
+    "LICENSE",
+    ".tonic_example.js"
+  ],
   "funding": {
     "type": "github",
     "url": "https://github.com/sponsors/epoberezkin"
-  }
+  },
+  "homepage": "https://github.com/ajv-validator/ajv",
+  "keywords": [
+    "JSON",
+    "schema",
+    "validator",
+    "validation",
+    "jsonschema",
+    "json-schema",
+    "json-schema-validator",
+    "json-schema-validation"
+  ],
+  "license": "MIT",
+  "main": "lib/ajv.js",
+  "name": "ajv",
+  "nyc": {
+    "exclude": [
+      "**/spec/**",
+      "node_modules"
+    ],
+    "reporter": [
+      "lcov",
+      "text-summary"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ajv-validator/ajv.git"
+  },
+  "scripts": {
+    "build": "del-cli lib/dotjs/*.js \"!lib/dotjs/index.js\" && node scripts/compile-dots.js",
+    "bundle": "del-cli dist && node ./scripts/bundle.js . Ajv pure_getters",
+    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
+    "eslint": "eslint lib/{compile/,}*.js spec/{**/,}*.js scripts --ignore-pattern spec/JSON-Schema-Test-Suite",
+    "jshint": "jshint lib/{compile/,}*.js",
+    "lint": "npm run jshint && npm run eslint",
+    "prepublish": "npm run build && npm run bundle",
+    "test": "npm run lint && npm run build && npm run test-all",
+    "test-all": "npm run test-cov && if-node-version 10 npm run test-browser",
+    "test-browser": "del-cli .browser && npm run bundle && scripts/prepare-tests && npm run test-karma",
+    "test-cov": "nyc npm run test-spec",
+    "test-debug": "npm run test-spec -- --inspect-brk",
+    "test-fast": "AJV_FAST_TEST=true npm run test-spec",
+    "test-karma": "karma start",
+    "test-spec": "mocha spec/{**/,}*.spec.js -R spec",
+    "test-ts": "tsc --target ES5 --noImplicitAny --noEmit spec/typescript/index.ts",
+    "watch": "watch \"npm run build\" ./lib/dot"
+  },
+  "tonicExampleFilename": ".tonic_example.js",
+  "typings": "lib/ajv.d.ts",
+  "version": "6.12.6"
 }
Index: trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse/package.json
===================================================================
--- trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,39 @@
 {
-  "name": "json-schema-traverse",
-  "version": "0.4.1",
-  "description": "Traverse JSON Schema passing each schema object to callback",
-  "main": "index.js",
-  "scripts": {
-    "eslint": "eslint index.js spec",
-    "test-spec": "mocha spec -R spec",
-    "test": "npm run eslint && nyc npm run test-spec"
+  "_args": [
+    [
+      "json-schema-traverse@0.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "json-schema-traverse@0.4.1",
+  "_id": "json-schema-traverse@0.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+  "_location": "/mini-css-extract-plugin/json-schema-traverse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-schema-traverse@0.4.1",
+    "name": "json-schema-traverse",
+    "escapedName": "json-schema-traverse",
+    "rawSpec": "0.4.1",
+    "saveSpec": null,
+    "fetchSpec": "0.4.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  "_requiredBy": [
+    "/mini-css-extract-plugin/ajv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+  "_spec": "0.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Evgeny Poberezkin"
   },
-  "keywords": [
-    "JSON-Schema",
-    "traverse",
-    "iterate"
-  ],
-  "author": "Evgeny Poberezkin",
-  "license": "MIT",
   "bugs": {
     "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
   },
-  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "description": "Traverse JSON Schema passing each schema object to callback",
   "devDependencies": {
     "coveralls": "^2.13.1",
@@ -31,4 +43,13 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+  "keywords": [
+    "JSON-Schema",
+    "traverse",
+    "iterate"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "json-schema-traverse",
   "nyc": {
     "exclude": [
@@ -40,4 +61,14 @@
       "text-summary"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+  },
+  "scripts": {
+    "eslint": "eslint index.js spec",
+    "test": "npm run eslint && nyc npm run test-spec",
+    "test-spec": "mocha spec -R spec"
+  },
+  "version": "0.4.1"
 }
Index: trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/schema-utils/package.json
===================================================================
--- trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/schema-utils/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mini-css-extract-plugin/node_modules/schema-utils/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,39 @@
 {
-  "name": "schema-utils",
-  "version": "3.1.1",
-  "description": "webpack Validation Utils",
-  "license": "MIT",
-  "repository": "webpack/schema-utils",
-  "author": "webpack Contrib (https://github.com/webpack-contrib)",
-  "homepage": "https://github.com/webpack/schema-utils",
-  "bugs": "https://github.com/webpack/schema-utils/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "schema-utils@3.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "schema-utils@3.1.1",
+  "_id": "schema-utils@3.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+  "_location": "/mini-css-extract-plugin/schema-utils",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "schema-utils@3.1.1",
+    "name": "schema-utils",
+    "escapedName": "schema-utils",
+    "rawSpec": "3.1.1",
+    "saveSpec": null,
+    "fetchSpec": "3.1.1"
   },
-  "main": "dist/index.js",
-  "types": "declarations/index.d.ts",
-  "engines": {
-    "node": ">= 10.13.0"
+  "_requiredBy": [
+    "/mini-css-extract-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+  "_spec": "3.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "webpack Contrib",
+    "url": "https://github.com/webpack-contrib"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist declarations",
-    "prebuild": "npm run clean",
-    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
-    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "build": "npm-run-all -p \"build:**\"",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint:types": "tsc --pretty --noEmit",
-    "lint": "npm-run-all lint:js lint:types fmt:check",
-    "fmt": "npm run fmt:check -- --write",
-    "fix:js": "npm run lint:js -- --fix",
-    "fix": "npm-run-all fix:js fmt",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "npm run build && husky install",
-    "release": "standard-version"
+  "bugs": {
+    "url": "https://github.com/webpack/schema-utils/issues"
   },
-  "files": [
-    "dist",
-    "declarations"
-  ],
   "dependencies": {
     "@types/json-schema": "^7.0.8",
@@ -50,4 +41,5 @@
     "ajv-keywords": "^3.5.2"
   },
+  "description": "webpack Validation Utils",
   "devDependencies": {
     "@babel/cli": "^7.14.3",
@@ -73,6 +65,51 @@
     "webpack": "^5.45.1"
   },
+  "engines": {
+    "node": ">= 10.13.0"
+  },
+  "files": [
+    "dist",
+    "declarations"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack/schema-utils",
   "keywords": [
     "webpack"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "schema-utils",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack/schema-utils.git"
+  },
+  "scripts": {
+    "build": "npm-run-all -p \"build:**\"",
+    "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
+    "clean": "del-cli dist declarations",
+    "commitlint": "commitlint --from=master",
+    "fix": "npm-run-all fix:js fmt",
+    "fix:js": "npm run lint:js -- --fix",
+    "fmt": "npm run fmt:check -- --write",
+    "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "lint": "npm-run-all lint:js lint:types fmt:check",
+    "lint:js": "eslint --cache .",
+    "lint:types": "tsc --pretty --noEmit",
+    "prebuild": "npm run clean",
+    "prepare": "npm run build && husky install",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "types": "declarations/index.d.ts",
+  "version": "3.1.1"
 }
Index: trip-planner-front/node_modules/mini-css-extract-plugin/package.json
===================================================================
--- trip-planner-front/node_modules/mini-css-extract-plugin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mini-css-extract-plugin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,49 +1,47 @@
 {
-  "name": "mini-css-extract-plugin",
-  "version": "2.2.1",
-  "description": "extracts CSS into separate files",
-  "license": "MIT",
-  "repository": "webpack-contrib/mini-css-extract-plugin",
-  "author": "Tobias Koppers @sokra",
-  "homepage": "https://github.com/webpack-contrib/mini-css-extract-plugin",
-  "bugs": "https://github.com/webpack-contrib/mini-css-extract-plugin/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "mini-css-extract-plugin@2.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mini-css-extract-plugin@2.2.1",
+  "_id": "mini-css-extract-plugin@2.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-A0GBXpz8WIPgh2HfASJ0EeY8grd2dGxmC4R8uTujFJXZY7zFy0nvYSYW6SKCLKlz7y45BdHONfaxZQMIZpeF/w==",
+  "_location": "/mini-css-extract-plugin",
+  "_phantomChildren": {
+    "@types/json-schema": "7.0.9",
+    "fast-deep-equal": "3.1.3",
+    "fast-json-stable-stringify": "2.1.0",
+    "uri-js": "4.4.1"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mini-css-extract-plugin@2.2.1",
+    "name": "mini-css-extract-plugin",
+    "escapedName": "mini-css-extract-plugin",
+    "rawSpec": "2.2.1",
+    "saveSpec": null,
+    "fetchSpec": "2.2.1"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --ignore \"src/**/*.test.js\" --copy-files",
-    "postbuild": "es-check es5 dist/hmr/hotModuleReplacement.js",
-    "clean": "del-cli dist",
-    "commitlint": "commitlint --from=master",
-    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version",
-    "security": "npm audit --production",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:only:experimental": "EXPERIMENTAL_USE_IMPORT_MODULE=true cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "test:manual": "npm run build && webpack serve ./test/manual/src/index.js --open --config ./test/manual/webpack.config.js",
-    "pretest": "npm run lint",
-    "test": "cross-env NODE_ENV=test npm run test:coverage"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.1.tgz",
+  "_spec": "2.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tobias Koppers @sokra"
   },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "webpack": "^5.0.0"
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/mini-css-extract-plugin/issues"
   },
   "dependencies": {
     "schema-utils": "^3.1.0"
   },
+  "description": "extracts CSS into separate files",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -77,4 +75,15 @@
     "webpack-dev-server": "^4.0.0"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/mini-css-extract-plugin",
   "keywords": [
     "webpack",
@@ -82,4 +91,36 @@
     "extract",
     "hmr"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "mini-css-extract-plugin",
+  "peerDependencies": {
+    "webpack": "^5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/mini-css-extract-plugin.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --ignore \"src/**/*.test.js\" --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "postbuild": "es-check es5 dist/hmr/hotModuleReplacement.js",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "cross-env NODE_ENV=test npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:manual": "npm run build && webpack serve ./test/manual/src/index.js --open --config ./test/manual/webpack.config.js",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:only:experimental": "EXPERIMENTAL_USE_IMPORT_MODULE=true cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "version": "2.2.1"
 }
Index: trip-planner-front/node_modules/minimalistic-assert/package.json
===================================================================
--- trip-planner-front/node_modules/minimalistic-assert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minimalistic-assert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,48 @@
 {
+  "_args": [
+    [
+      "minimalistic-assert@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minimalistic-assert@1.0.1",
+  "_id": "minimalistic-assert@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+  "_location": "/minimalistic-assert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minimalistic-assert@1.0.1",
+    "name": "minimalistic-assert",
+    "escapedName": "minimalistic-assert",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/wbuf"
+  ],
+  "_resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": "",
+  "bugs": {
+    "url": "https://github.com/calvinmetcalf/minimalistic-assert/issues"
+  },
+  "description": "minimalistic-assert ===",
+  "homepage": "https://github.com/calvinmetcalf/minimalistic-assert",
+  "license": "ISC",
+  "main": "index.js",
   "name": "minimalistic-assert",
-  "version": "1.0.1",
-  "description": "minimalistic-assert ===",
-  "main": "index.js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/calvinmetcalf/minimalistic-assert.git"
+  },
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/calvinmetcalf/minimalistic-assert.git"
-  },
-  "author": "",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/calvinmetcalf/minimalistic-assert/issues"
-  },
-  "homepage": "https://github.com/calvinmetcalf/minimalistic-assert"
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/minimatch/package.json
===================================================================
--- trip-planner-front/node_modules/minimatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minimatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,71 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
+  "_args": [
+    [
+      "minimatch@3.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minimatch@3.0.4",
+  "_id": "minimatch@3.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+  "_location": "/minimatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minimatch@3.0.4",
+    "name": "minimatch",
+    "escapedName": "minimatch",
+    "rawSpec": "3.0.4",
+    "saveSpec": null,
+    "fetchSpec": "3.0.4"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/glob",
+    "/ignore-walk",
+    "/karma",
+    "/karma-coverage"
+  ],
+  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+  "_spec": "3.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/minimatch/issues"
+  },
+  "dependencies": {
+    "brace-expansion": "^1.1.7"
+  },
+  "description": "a glob matcher in javascript",
+  "devDependencies": {
+    "tap": "^10.3.2"
+  },
+  "engines": {
+    "node": "*"
+  },
+  "files": [
+    "minimatch.js"
+  ],
+  "homepage": "https://github.com/isaacs/minimatch#readme",
+  "license": "ISC",
+  "main": "minimatch.js",
   "name": "minimatch",
-  "description": "a glob matcher in javascript",
-  "version": "3.0.4",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/minimatch.git"
   },
-  "main": "minimatch.js",
   "scripts": {
-    "test": "tap test/*.js --cov",
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
     "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
+    "test": "tap test/*.js --cov"
   },
-  "engines": {
-    "node": "*"
-  },
-  "dependencies": {
-    "brace-expansion": "^1.1.7"
-  },
-  "devDependencies": {
-    "tap": "^10.3.2"
-  },
-  "license": "ISC",
-  "files": [
-    "minimatch.js"
-  ]
+  "version": "3.0.4"
 }
Index: trip-planner-front/node_modules/minimist/package.json
===================================================================
--- trip-planner-front/node_modules/minimist/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minimist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,45 @@
 {
-  "name": "minimist",
-  "version": "1.2.5",
+  "_args": [
+    [
+      "minimist@1.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minimist@1.2.5",
+  "_id": "minimist@1.2.5",
+  "_inBundle": false,
+  "_integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+  "_location": "/minimist",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minimist@1.2.5",
+    "name": "minimist",
+    "escapedName": "minimist",
+    "rawSpec": "1.2.5",
+    "saveSpec": null,
+    "fetchSpec": "1.2.5"
+  },
+  "_requiredBy": [
+    "/@angular/compiler-cli",
+    "/babel-loader/json5",
+    "/json5",
+    "/portfinder/mkdirp",
+    "/webpack-dev-server/mkdirp"
+  ],
+  "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+  "_spec": "1.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/minimist/issues"
+  },
   "description": "parse argument options",
-  "main": "index.js",
   "devDependencies": {
     "covert": "^1.0.0",
@@ -9,7 +47,21 @@
     "tape": "^3.5.0"
   },
+  "homepage": "https://github.com/substack/minimist",
+  "keywords": [
+    "argv",
+    "getopt",
+    "parser",
+    "optimist"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "minimist",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/substack/minimist.git"
+  },
   "scripts": {
-    "test": "tap test/*.js",
-    "coverage": "covert test/*.js"
+    "coverage": "covert test/*.js",
+    "test": "tap test/*.js"
   },
   "testling": {
@@ -26,20 +78,4 @@
     ]
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/substack/minimist.git"
-  },
-  "homepage": "https://github.com/substack/minimist",
-  "keywords": [
-    "argv",
-    "getopt",
-    "parser",
-    "optimist"
-  ],
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "license": "MIT"
+  "version": "1.2.5"
 }
Index: trip-planner-front/node_modules/minipass-collect/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-collect/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-collect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,63 @@
 {
+  "_args": [
+    [
+      "minipass-collect@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-collect@1.0.2",
+  "_id": "minipass-collect@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+  "_location": "/minipass-collect",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-collect@1.0.2",
+    "name": "minipass-collect",
+    "escapedName": "minipass-collect",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/cacache",
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "dependencies": {
+    "minipass": "^3.0.0"
+  },
+  "description": "A Minipass stream that collects all the data into a single chunk",
+  "devDependencies": {
+    "tap": "^14.6.9"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "license": "ISC",
   "name": "minipass-collect",
-  "version": "1.0.2",
-  "description": "A Minipass stream that collects all the data into a single chunk",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
   "scripts": {
-    "test": "tap",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+    "test": "tap"
   },
   "tap": {
     "check-coverage": true
   },
-  "devDependencies": {
-    "tap": "^14.6.9"
-  },
-  "dependencies": {
-    "minipass": "^3.0.0"
-  },
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">= 8"
-  }
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/minipass-fetch/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-fetch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-fetch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,43 @@
 {
-  "name": "minipass-fetch",
-  "version": "1.4.1",
+  "_args": [
+    [
+      "minipass-fetch@1.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-fetch@1.4.1",
+  "_id": "minipass-fetch@1.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+  "_location": "/minipass-fetch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-fetch@1.4.1",
+    "name": "minipass-fetch",
+    "escapedName": "minipass-fetch",
+    "rawSpec": "1.4.1",
+    "saveSpec": null,
+    "fetchSpec": "1.4.1"
+  },
+  "_requiredBy": [
+    "/make-fetch-happen",
+    "/npm-registry-fetch"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
+  "_spec": "1.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/npm/minipass-fetch/issues"
+  },
+  "dependencies": {
+    "encoding": "^0.1.12",
+    "minipass": "^3.1.0",
+    "minipass-sized": "^1.0.3",
+    "minizlib": "^2.0.0"
+  },
   "description": "An implementation of window.fetch in Node.js using Minipass streams",
-  "license": "MIT",
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
-  },
-  "tap": {
-    "coverage-map": "map.js",
-    "check-coverage": true
-  },
   "devDependencies": {
     "@ungap/url-search-params": "^0.1.2",
@@ -26,9 +50,21 @@
     "whatwg-url": "^7.0.0"
   },
-  "dependencies": {
-    "minipass": "^3.1.0",
-    "minipass-sized": "^1.0.3",
-    "minizlib": "^2.0.0"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "index.js",
+    "lib/*.js"
+  ],
+  "homepage": "https://github.com/npm/minipass-fetch#readme",
+  "keywords": [
+    "fetch",
+    "minipass",
+    "node-fetch",
+    "window.fetch"
+  ],
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "minipass-fetch",
   "optionalDependencies": {
     "encoding": "^0.1.12"
@@ -38,16 +74,15 @@
     "url": "git+https://github.com/npm/minipass-fetch.git"
   },
-  "keywords": [
-    "fetch",
-    "minipass",
-    "node-fetch",
-    "window.fetch"
-  ],
-  "files": [
-    "index.js",
-    "lib/*.js"
-  ],
-  "engines": {
-    "node": ">=8"
-  }
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "coverage-map": "map.js",
+    "check-coverage": true
+  },
+  "version": "1.4.1"
 }
Index: trip-planner-front/node_modules/minipass-flush/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-flush/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-flush/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,55 @@
 {
-  "name": "minipass-flush",
-  "version": "1.0.5",
-  "description": "A Minipass stream that calls a flush function before emitting 'end'",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+  "_args": [
+    [
+      "minipass-flush@1.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-flush@1.0.5",
+  "_id": "minipass-flush@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+  "_location": "/minipass-flush",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-flush@1.0.5",
+    "name": "minipass-flush",
+    "escapedName": "minipass-flush",
+    "rawSpec": "1.0.5",
+    "saveSpec": null,
+    "fetchSpec": "1.0.5"
   },
-  "tap": {
-    "check-coverage": true
+  "_requiredBy": [
+    "/cacache",
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+  "_spec": "1.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
   },
-  "devDependencies": {
-    "tap": "^14.6.9"
+  "bugs": {
+    "url": "https://github.com/isaacs/minipass-flush/issues"
   },
   "dependencies": {
     "minipass": "^3.0.0"
   },
+  "description": "A Minipass stream that calls a flush function before emitting 'end'",
+  "devDependencies": {
+    "tap": "^14.6.9"
+  },
+  "engines": {
+    "node": ">= 8"
+  },
   "files": [
     "index.js"
   ],
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/isaacs/minipass-flush.git"
-  },
+  "homepage": "https://github.com/isaacs/minipass-flush#readme",
   "keywords": [
     "minipass",
@@ -34,6 +57,21 @@
     "stream"
   ],
-  "engines": {
-    "node": ">= 8"
-  }
+  "license": "ISC",
+  "main": "index.js",
+  "name": "minipass-flush",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/minipass-flush.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "1.0.5"
 }
Index: trip-planner-front/node_modules/minipass-json-stream/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-json-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-json-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,39 @@
 {
-  "name": "minipass-json-stream",
-  "version": "1.0.1",
-  "description": "Like JSONStream, but using Minipass streams",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "MIT",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+  "_args": [
+    [
+      "minipass-json-stream@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-json-stream@1.0.1",
+  "_id": "minipass-json-stream@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
+  "_location": "/minipass-json-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-json-stream@1.0.1",
+    "name": "minipass-json-stream",
+    "escapedName": "minipass-json-stream",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
   },
-  "tap": {
-    "check-coverage": true
+  "_requiredBy": [
+    "/npm-registry-fetch"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
   },
-  "devDependencies": {
-    "JSONStream": "^1.3.5",
-    "tap": "^14.6.9"
+  "bugs": {
+    "url": "https://github.com/npm/minipass-json-stream/issues"
   },
   "dependencies": {
@@ -23,8 +41,13 @@
     "minipass": "^3.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/minipass-json-stream.git"
+  "description": "Like JSONStream, but using Minipass streams",
+  "devDependencies": {
+    "JSONStream": "^1.3.5",
+    "tap": "^14.6.9"
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/minipass-json-stream#readme",
   "keywords": [
     "stream",
@@ -34,6 +57,20 @@
     "JSONStream"
   ],
-  "files": [
-    "index.js"
-  ]
+  "license": "MIT",
+  "name": "minipass-json-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/minipass-json-stream.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/minipass-pipeline/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-pipeline/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-pipeline/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,63 @@
 {
+  "_args": [
+    [
+      "minipass-pipeline@1.2.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-pipeline@1.2.4",
+  "_id": "minipass-pipeline@1.2.4",
+  "_inBundle": false,
+  "_integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+  "_location": "/minipass-pipeline",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-pipeline@1.2.4",
+    "name": "minipass-pipeline",
+    "escapedName": "minipass-pipeline",
+    "rawSpec": "1.2.4",
+    "saveSpec": null,
+    "fetchSpec": "1.2.4"
+  },
+  "_requiredBy": [
+    "/cacache",
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+  "_spec": "1.2.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "dependencies": {
+    "minipass": "^3.0.0"
+  },
+  "description": "create a pipeline of streams using Minipass",
+  "devDependencies": {
+    "tap": "^14.6.9"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js"
+  ],
+  "license": "ISC",
   "name": "minipass-pipeline",
-  "version": "1.2.4",
-  "description": "create a pipeline of streams using Minipass",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
   "scripts": {
-    "test": "tap",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+    "test": "tap"
   },
   "tap": {
     "check-coverage": true
   },
-  "devDependencies": {
-    "tap": "^14.6.9"
-  },
-  "dependencies": {
-    "minipass": "^3.0.0"
-  },
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">=8"
-  }
+  "version": "1.2.4"
 }
Index: trip-planner-front/node_modules/minipass-sized/package.json
===================================================================
--- trip-planner-front/node_modules/minipass-sized/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass-sized/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,54 @@
 {
-  "name": "minipass-sized",
-  "version": "1.0.3",
-  "description": "A Minipass stream that raises an error if you get a different number of bytes than expected",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+  "_args": [
+    [
+      "minipass-sized@1.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass-sized@1.0.3",
+  "_id": "minipass-sized@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+  "_location": "/minipass-sized",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass-sized@1.0.3",
+    "name": "minipass-sized",
+    "escapedName": "minipass-sized",
+    "rawSpec": "1.0.3",
+    "saveSpec": null,
+    "fetchSpec": "1.0.3"
   },
-  "tap": {
-    "check-coverage": true
+  "_requiredBy": [
+    "/minipass-fetch"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+  "_spec": "1.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
   },
-  "devDependencies": {
-    "tap": "^14.6.4"
+  "bugs": {
+    "url": "https://github.com/isaacs/minipass-sized/issues"
   },
   "dependencies": {
     "minipass": "^3.0.0"
   },
-  "main": "index.js",
+  "description": "A Minipass stream that raises an error if you get a different number of bytes than expected",
+  "devDependencies": {
+    "tap": "^14.6.4"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "homepage": "https://github.com/isaacs/minipass-sized#readme",
   "keywords": [
     "minipass",
@@ -27,13 +56,21 @@
     "length"
   ],
-  "directories": {
-    "test": "test"
-  },
+  "license": "ISC",
+  "main": "index.js",
+  "name": "minipass-sized",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/isaacs/minipass-sized.git"
   },
-  "engines": {
-    "node": ">=8"
-  }
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "1.0.3"
 }
Index: trip-planner-front/node_modules/minipass/package.json
===================================================================
--- trip-planner-front/node_modules/minipass/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minipass/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,57 @@
 {
-  "name": "minipass",
-  "version": "3.1.5",
-  "description": "minimal implementation of a PassThrough stream",
-  "main": "index.js",
+  "_args": [
+    [
+      "minipass@3.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minipass@3.1.5",
+  "_id": "minipass@3.1.5",
+  "_inBundle": false,
+  "_integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==",
+  "_location": "/minipass",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minipass@3.1.5",
+    "name": "minipass",
+    "escapedName": "minipass",
+    "rawSpec": "3.1.5",
+    "saveSpec": null,
+    "fetchSpec": "3.1.5"
+  },
+  "_requiredBy": [
+    "/cacache",
+    "/fs-minipass",
+    "/make-fetch-happen",
+    "/minipass-collect",
+    "/minipass-fetch",
+    "/minipass-flush",
+    "/minipass-json-stream",
+    "/minipass-pipeline",
+    "/minipass-sized",
+    "/minizlib",
+    "/npm-registry-fetch",
+    "/pacote",
+    "/ssri",
+    "/tar"
+  ],
+  "_resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz",
+  "_spec": "3.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/minipass/issues"
+  },
   "dependencies": {
     "yallist": "^4.0.0"
   },
+  "description": "minimal implementation of a PassThrough stream",
   "devDependencies": {
     "end-of-stream": "^1.4.0",
@@ -12,28 +59,31 @@
     "through2": "^2.0.3"
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish --tag=next",
-    "postpublish": "git push origin --follow-tags"
+  "engines": {
+    "node": ">=8"
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/minipass#readme",
+  "keywords": [
+    "passthrough",
+    "stream"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "minipass",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/isaacs/minipass.git"
   },
-  "keywords": [
-    "passthrough",
-    "stream"
-  ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
-  "files": [
-    "index.js"
-  ],
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish --tag=next",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
   },
-  "engines": {
-    "node": ">=8"
-  }
+  "version": "3.1.5"
 }
Index: trip-planner-front/node_modules/minizlib/package.json
===================================================================
--- trip-planner-front/node_modules/minizlib/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/minizlib/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,58 @@
 {
-  "name": "minizlib",
-  "version": "2.1.2",
-  "description": "A small fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding.",
-  "main": "index.js",
+  "_args": [
+    [
+      "minizlib@2.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "minizlib@2.1.2",
+  "_id": "minizlib@2.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+  "_location": "/minizlib",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "minizlib@2.1.2",
+    "name": "minizlib",
+    "escapedName": "minizlib",
+    "rawSpec": "2.1.2",
+    "saveSpec": null,
+    "fetchSpec": "2.1.2"
+  },
+  "_requiredBy": [
+    "/minipass-fetch",
+    "/npm-registry-fetch",
+    "/tar"
+  ],
+  "_resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+  "_spec": "2.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/minizlib/issues"
+  },
   "dependencies": {
     "minipass": "^3.0.0",
     "yallist": "^4.0.0"
   },
-  "scripts": {
-    "test": "tap test/*.js --100 -J",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
+  "description": "A small fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding.",
+  "devDependencies": {
+    "tap": "^14.6.9"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/isaacs/minizlib.git"
+  "engines": {
+    "node": ">= 8"
   },
+  "files": [
+    "index.js",
+    "constants.js"
+  ],
+  "homepage": "https://github.com/isaacs/minizlib#readme",
   "keywords": [
     "zlib",
@@ -28,15 +65,17 @@
     "unzip"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "license": "MIT",
-  "devDependencies": {
-    "tap": "^14.6.9"
+  "main": "index.js",
+  "name": "minizlib",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/minizlib.git"
   },
-  "files": [
-    "index.js",
-    "constants.js"
-  ],
-  "engines": {
-    "node": ">= 8"
-  }
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js --100 -J"
+  },
+  "version": "2.1.2"
 }
Index: trip-planner-front/node_modules/mixin-deep/package.json
===================================================================
--- trip-planner-front/node_modules/mixin-deep/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mixin-deep/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,38 @@
 {
-  "name": "mixin-deep",
-  "description": "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.",
-  "version": "1.3.2",
-  "homepage": "https://github.com/jonschlinkert/mixin-deep",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/mixin-deep",
+  "_args": [
+    [
+      "mixin-deep@1.3.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mixin-deep@1.3.2",
+  "_id": "mixin-deep@1.3.2",
+  "_inBundle": false,
+  "_integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+  "_location": "/mixin-deep",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mixin-deep@1.3.2",
+    "name": "mixin-deep",
+    "escapedName": "mixin-deep",
+    "rawSpec": "1.3.2",
+    "saveSpec": null,
+    "fetchSpec": "1.3.2"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+  "_spec": "1.3.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/mixin-deep/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
@@ -24,4 +40,5 @@
     "is-extendable": "^1.0.1"
   },
+  "description": "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
@@ -29,4 +46,11 @@
     "should": "^13.1.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/mixin-deep",
   "keywords": [
     "deep",
@@ -42,4 +66,14 @@
     "values"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "mixin-deep",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/mixin-deep.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -62,4 +96,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.3.2"
 }
Index: trip-planner-front/node_modules/mkdirp/package.json
===================================================================
--- trip-planner-front/node_modules/mkdirp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mkdirp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,57 @@
 {
-  "name": "mkdirp",
+  "_args": [
+    [
+      "mkdirp@1.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mkdirp@1.0.4",
+  "_id": "mkdirp@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+  "_location": "/mkdirp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mkdirp@1.0.4",
+    "name": "mkdirp",
+    "escapedName": "mkdirp",
+    "rawSpec": "1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "1.0.4"
+  },
+  "_requiredBy": [
+    "/@npmcli/git",
+    "/@npmcli/move-file",
+    "/cacache",
+    "/pacote",
+    "/stylus",
+    "/tar"
+  ],
+  "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+  "_spec": "1.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bin": {
+    "mkdirp": "bin/cmd.js"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/node-mkdirp/issues"
+  },
   "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "1.0.4",
-  "main": "index.js",
+  "devDependencies": {
+    "require-inject": "^1.4.4",
+    "tap": "^14.10.7"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "bin",
+    "lib",
+    "index.js"
+  ],
+  "homepage": "https://github.com/isaacs/node-mkdirp#readme",
   "keywords": [
     "mkdir",
@@ -13,14 +63,17 @@
     "native"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "mkdirp",
   "repository": {
     "type": "git",
-    "url": "https://github.com/isaacs/node-mkdirp.git"
+    "url": "git+https://github.com/isaacs/node-mkdirp.git"
   },
   "scripts": {
-    "test": "tap",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+    "test": "tap"
   },
   "tap": {
@@ -28,17 +81,4 @@
     "coverage-map": "map.js"
   },
-  "devDependencies": {
-    "require-inject": "^1.4.4",
-    "tap": "^14.10.7"
-  },
-  "bin": "bin/cmd.js",
-  "license": "MIT",
-  "engines": {
-    "node": ">=10"
-  },
-  "files": [
-    "bin",
-    "lib",
-    "index.js"
-  ]
+  "version": "1.0.4"
 }
Index: trip-planner-front/node_modules/ms/package.json
===================================================================
--- trip-planner-front/node_modules/ms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,46 @@
 {
-  "name": "ms",
-  "version": "2.1.2",
+  "_args": [
+    [
+      "ms@2.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ms@2.1.2",
+  "_id": "ms@2.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+  "_location": "/ms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ms@2.1.2",
+    "name": "ms",
+    "escapedName": "ms",
+    "rawSpec": "2.1.2",
+    "saveSpec": null,
+    "fetchSpec": "2.1.2"
+  },
+  "_requiredBy": [
+    "/debug",
+    "/humanize-ms",
+    "/needle/debug",
+    "/portfinder/debug",
+    "/sockjs-client/debug"
+  ],
+  "_resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+  "_spec": "2.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/zeit/ms/issues"
+  },
   "description": "Tiny millisecond conversion utility",
-  "repository": "zeit/ms",
-  "main": "./index",
-  "files": [
-    "index.js"
-  ],
-  "scripts": {
-    "precommit": "lint-staged",
-    "lint": "eslint lib/* bin/*",
-    "test": "mocha tests.js"
+  "devDependencies": {
+    "eslint": "4.12.1",
+    "expect.js": "0.3.1",
+    "husky": "0.14.3",
+    "lint-staged": "5.0.0",
+    "mocha": "4.0.1"
   },
   "eslintConfig": {
@@ -20,4 +51,9 @@
     }
   },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/zeit/ms#readme",
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -27,11 +63,15 @@
     ]
   },
-  "license": "MIT",
-  "devDependencies": {
-    "eslint": "4.12.1",
-    "expect.js": "0.3.1",
-    "husky": "0.14.3",
-    "lint-staged": "5.0.0",
-    "mocha": "4.0.1"
-  }
+  "main": "./index",
+  "name": "ms",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zeit/ms.git"
+  },
+  "scripts": {
+    "lint": "eslint lib/* bin/*",
+    "precommit": "lint-staged",
+    "test": "mocha tests.js"
+  },
+  "version": "2.1.2"
 }
Index: trip-planner-front/node_modules/multicast-dns-service-types/package.json
===================================================================
--- trip-planner-front/node_modules/multicast-dns-service-types/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/multicast-dns-service-types/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,46 @@
 {
-  "name": "multicast-dns-service-types",
-  "version": "1.1.0",
+  "_args": [
+    [
+      "multicast-dns-service-types@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "multicast-dns-service-types@1.1.0",
+  "_id": "multicast-dns-service-types@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+  "_location": "/multicast-dns-service-types",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "multicast-dns-service-types@1.1.0",
+    "name": "multicast-dns-service-types",
+    "escapedName": "multicast-dns-service-types",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Buus",
+    "url": "@mafintosh"
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/multicast-dns-service-types/issues"
+  },
+  "dependencies": {},
   "description": "Parse and stringify mdns service types",
-  "main": "index.js",
-  "dependencies": {},
   "devDependencies": {
     "standard": "^3.5.0",
     "tape": "^4.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mafintosh/multicast-dns-service-types.git"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "author": "Mathias Buus (@mafintosh)",
-  "license": "MIT",
+  "homepage": "https://github.com/mafintosh/multicast-dns-service-types",
   "keywords": [
     "mdns",
@@ -24,7 +49,14 @@
     "conf"
   ],
-  "bugs": {
-    "url": "https://github.com/mafintosh/multicast-dns-service-types/issues"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "multicast-dns-service-types",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mafintosh/multicast-dns-service-types.git"
   },
-  "homepage": "https://github.com/mafintosh/multicast-dns-service-types"
+  "scripts": {
+    "test": "standard && tape test.js"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/multicast-dns/package.json
===================================================================
--- trip-planner-front/node_modules/multicast-dns/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/multicast-dns/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "multicast-dns",
-  "version": "6.2.3",
-  "description": "Low level multicast-dns implementation in pure javascript",
-  "main": "index.js",
-  "scripts": {
-    "test": "standard && tape test.js"
+  "_args": [
+    [
+      "multicast-dns@6.2.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "multicast-dns@6.2.3",
+  "_id": "multicast-dns@6.2.3",
+  "_inBundle": false,
+  "_integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+  "_location": "/multicast-dns",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "multicast-dns@6.2.3",
+    "name": "multicast-dns",
+    "escapedName": "multicast-dns",
+    "rawSpec": "6.2.3",
+    "saveSpec": null,
+    "fetchSpec": "6.2.3"
   },
-  "bin": "cli.js",
+  "_requiredBy": [
+    "/bonjour"
+  ],
+  "_resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+  "_spec": "6.2.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mathias Buus",
+    "url": "@mafintosh"
+  },
+  "bin": {
+    "multicast-dns": "cli.js"
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/multicast-dns/issues"
+  },
+  "coordinates": [
+    55.6465878,
+    12.5492251
+  ],
   "dependencies": {
     "dns-packet": "^1.3.1",
     "thunky": "^1.0.2"
   },
+  "description": "Low level multicast-dns implementation in pure javascript",
   "devDependencies": {
     "standard": "^10.0.3",
     "tape": "^4.8.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mafintosh/multicast-dns.git"
-  },
-  "author": "Mathias Buus (@mafintosh)",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mafintosh/multicast-dns/issues"
   },
   "homepage": "https://github.com/mafintosh/multicast-dns",
@@ -37,7 +64,14 @@
     "avahi"
   ],
-  "coordinates": [
-    55.6465878,
-    12.5492251
-  ]
+  "license": "MIT",
+  "main": "index.js",
+  "name": "multicast-dns",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mafintosh/multicast-dns.git"
+  },
+  "scripts": {
+    "test": "standard && tape test.js"
+  },
+  "version": "6.2.3"
 }
Index: trip-planner-front/node_modules/mute-stream/package.json
===================================================================
--- trip-planner-front/node_modules/mute-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/mute-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,51 @@
 {
-  "name": "mute-stream",
-  "version": "0.0.8",
-  "main": "mute.js",
+  "_args": [
+    [
+      "mute-stream@0.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mute-stream@0.0.8",
+  "_id": "mute-stream@0.0.8",
+  "_inBundle": false,
+  "_integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+  "_location": "/mute-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mute-stream@0.0.8",
+    "name": "mute-stream",
+    "escapedName": "mute-stream",
+    "rawSpec": "0.0.8",
+    "saveSpec": null,
+    "fetchSpec": "0.0.8"
+  },
+  "_requiredBy": [
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+  "_spec": "0.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/mute-stream/issues"
+  },
+  "description": "Bytes go in, but they don't come out (when muted).",
+  "devDependencies": {
+    "tap": "^12.1.1"
+  },
   "directories": {
     "test": "test"
   },
-  "devDependencies": {
-    "tap": "^12.1.1"
-  },
-  "scripts": {
-    "test": "tap test/*.js --cov"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/mute-stream"
-  },
+  "files": [
+    "mute.js"
+  ],
+  "homepage": "https://github.com/isaacs/mute-stream#readme",
   "keywords": [
     "mute",
@@ -21,9 +53,14 @@
     "pipe"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "license": "ISC",
-  "description": "Bytes go in, but they don't come out (when muted).",
-  "files": [
-    "mute.js"
-  ]
+  "main": "mute.js",
+  "name": "mute-stream",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/mute-stream.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js --cov"
+  },
+  "version": "0.0.8"
 }
Index: trip-planner-front/node_modules/nanocolors/package.json
===================================================================
--- trip-planner-front/node_modules/nanocolors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nanocolors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,54 @@
 {
-  "name": "nanocolors",
-  "version": "0.1.12",
+  "_args": [
+    [
+      "nanocolors@0.1.12",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "nanocolors@0.1.12",
+  "_id": "nanocolors@0.1.12",
+  "_inBundle": false,
+  "_integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==",
+  "_location": "/nanocolors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nanocolors@0.1.12",
+    "name": "nanocolors",
+    "escapedName": "nanocolors",
+    "rawSpec": "0.1.12",
+    "saveSpec": null,
+    "fetchSpec": "0.1.12"
+  },
+  "_requiredBy": [
+    "/svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz",
+  "_spec": "0.1.12",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./index.js": "./index.browser.js",
+    "./index.cjs": "./index.browser.cjs"
+  },
+  "bugs": {
+    "url": "https://github.com/ai/nanocolors/issues"
+  },
   "description": "2x times faster than chalk and use 5x less space in node_modules",
+  "exports": {
+    ".": {
+      "browser": "./index.browser.js",
+      "require": "./index.cjs",
+      "import": "./index.js",
+      "default": "./index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "homepage": "https://github.com/ai/nanocolors#readme",
   "keywords": [
     "color",
@@ -12,24 +60,15 @@
     "chalk"
   ],
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
   "license": "MIT",
-  "repository": "ai/nanocolors",
+  "main": "index.cjs",
+  "module": "index.js",
+  "name": "nanocolors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ai/nanocolors.git"
+  },
   "sideEffects": false,
   "type": "module",
   "types": "./index.d.ts",
-  "browser": {
-    "./index.js": "./index.browser.js",
-    "./index.cjs": "./index.browser.cjs"
-  },
-  "main": "index.cjs",
-  "module": "index.js",
-  "exports": {
-    ".": {
-      "browser": "./index.browser.js",
-      "require": "./index.cjs",
-      "import": "./index.js",
-      "default": "./index.js"
-    },
-    "./package.json": "./package.json"
-  }
+  "version": "0.1.12"
 }
Index: trip-planner-front/node_modules/nanoid/package.json
===================================================================
--- trip-planner-front/node_modules/nanoid/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nanoid/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,39 @@
 {
-  "name": "nanoid",
-  "version": "3.1.29",
-  "description": "A tiny (108 bytes), secure URL-friendly unique string ID generator",
-  "keywords": [
-    "uuid",
-    "random",
-    "id",
-    "url"
+  "_args": [
+    [
+      "nanoid@3.1.29",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "engines": {
-    "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+  "_development": true,
+  "_from": "nanoid@3.1.29",
+  "_id": "nanoid@3.1.29",
+  "_inBundle": false,
+  "_integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==",
+  "_location": "/nanoid",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nanoid@3.1.29",
+    "name": "nanoid",
+    "escapedName": "nanoid",
+    "rawSpec": "3.1.29",
+    "saveSpec": null,
+    "fetchSpec": "3.1.29"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "repository": "ai/nanoid",
+  "_requiredBy": [
+    "/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz",
+  "_spec": "3.1.29",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "bin": {
+    "nanoid": "bin/nanoid.cjs"
+  },
   "browser": {
     "./index.js": "./index.browser.js",
@@ -21,11 +42,11 @@
     "./index.cjs": "./index.browser.cjs"
   },
-  "react-native": "index.js",
-  "bin": "./bin/nanoid.cjs",
-  "sideEffects": false,
-  "types": "./index.d.ts",
-  "type": "module",
-  "main": "index.cjs",
-  "module": "index.js",
+  "bugs": {
+    "url": "https://github.com/ai/nanoid/issues"
+  },
+  "description": "A tiny (108 bytes), secure URL-friendly unique string ID generator",
+  "engines": {
+    "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+  },
   "exports": {
     ".": {
@@ -61,4 +82,24 @@
     },
     "./index.d.ts": "./index.d.ts"
-  }
+  },
+  "homepage": "https://github.com/ai/nanoid#readme",
+  "keywords": [
+    "uuid",
+    "random",
+    "id",
+    "url"
+  ],
+  "license": "MIT",
+  "main": "index.cjs",
+  "module": "index.js",
+  "name": "nanoid",
+  "react-native": "index.js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/ai/nanoid.git"
+  },
+  "sideEffects": false,
+  "type": "module",
+  "types": "./index.d.ts",
+  "version": "3.1.29"
 }
Index: trip-planner-front/node_modules/nanomatch/package.json
===================================================================
--- trip-planner-front/node_modules/nanomatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nanomatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,50 @@
 {
-  "name": "nanomatch",
-  "description": "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)",
-  "version": "1.2.13",
-  "homepage": "https://github.com/micromatch/nanomatch",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Devon Govett (http://badassjs.com)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "nanomatch@1.2.13",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "micromatch/nanomatch",
+  "_development": true,
+  "_from": "nanomatch@1.2.13",
+  "_id": "nanomatch@1.2.13",
+  "_inBundle": false,
+  "_integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+  "_location": "/nanomatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nanomatch@1.2.13",
+    "name": "nanomatch",
+    "escapedName": "nanomatch",
+    "rawSpec": "1.2.13",
+    "saveSpec": null,
+    "fetchSpec": "1.2.13"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+  "_spec": "1.2.13",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/nanomatch/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
+  "contributors": [
+    {
+      "name": "Devon Govett",
+      "url": "http://badassjs.com"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "arr-diff": "^4.0.0",
@@ -38,4 +60,5 @@
     "to-regex": "^3.0.1"
   },
+  "description": "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)",
   "devDependencies": {
     "bash-match": "^1.0.2",
@@ -51,4 +74,12 @@
     "multimatch": "^2.1.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/micromatch/nanomatch",
   "keywords": [
     "bash",
@@ -81,4 +112,5 @@
     "wildcard"
   ],
+  "license": "MIT",
   "lintDeps": {
     "dependencies": {
@@ -98,4 +130,13 @@
       }
     }
+  },
+  "main": "index.js",
+  "name": "nanomatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/nanomatch.git"
+  },
+  "scripts": {
+    "test": "mocha"
   },
   "verb": {
@@ -131,4 +172,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.2.13"
 }
Index: trip-planner-front/node_modules/needle/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/needle/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/needle/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,56 @@
 {
-  "name": "debug",
-  "version": "3.2.7",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@3.2.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@3.2.7",
+  "_id": "debug@3.2.7",
+  "_inBundle": false,
+  "_integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+  "_location": "/needle/debug",
+  "_optional": true,
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@3.2.7",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "3.2.7",
+    "saveSpec": null,
+    "fetchSpec": "3.2.7"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/needle"
   ],
-  "files": [
-    "src",
-    "node.js",
-    "dist/debug.js",
-    "LICENSE",
-    "README.md"
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+  "_spec": "3.2.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "contributors": [
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
-  ],
-  "license": "MIT",
   "dependencies": {
     "ms": "^2.1.1"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "@babel/cli": "^7.0.0",
@@ -46,6 +71,25 @@
     "xo": "^0.23.0"
   },
+  "files": [
+    "src",
+    "node.js",
+    "dist/debug.js",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "unpkg": "./dist/debug.js"
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "unpkg": "./dist/debug.js",
+  "version": "3.2.7"
 }
Index: trip-planner-front/node_modules/needle/package.json
===================================================================
--- trip-planner-front/node_modules/needle/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/needle/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,68 @@
 {
-  "name": "needle",
-  "version": "2.9.1",
+  "_args": [
+    [
+      "needle@2.9.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "needle@2.9.1",
+  "_id": "needle@2.9.1",
+  "_inBundle": false,
+  "_integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==",
+  "_location": "/needle",
+  "_optional": true,
+  "_phantomChildren": {
+    "ms": "2.1.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "needle@2.9.1",
+    "name": "needle",
+    "escapedName": "needle",
+    "rawSpec": "2.9.1",
+    "saveSpec": null,
+    "fetchSpec": "2.9.1"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz",
+  "_spec": "2.9.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Tomás Pollak",
+    "email": "tomas@forkhq.com"
+  },
+  "bin": {
+    "needle": "bin/needle"
+  },
+  "bugs": {
+    "url": "https://github.com/tomas/needle/issues"
+  },
+  "dependencies": {
+    "debug": "^3.2.6",
+    "iconv-lite": "^0.4.4",
+    "sax": "^1.2.4"
+  },
   "description": "The leanest and most handsome HTTP client in the Nodelands.",
+  "devDependencies": {
+    "JSONStream": "^1.3.5",
+    "jschardet": "^1.6.0",
+    "mocha": "^5.2.0",
+    "pump": "^3.0.0",
+    "q": "^1.5.1",
+    "should": "^13.2.3",
+    "sinon": "^2.3.0",
+    "xml2js": "^0.4.19"
+  },
+  "directories": {
+    "lib": "./lib"
+  },
+  "engines": {
+    "node": ">= 4.4.x"
+  },
+  "homepage": "https://github.com/tomas/needle#readme",
   "keywords": [
     "http",
@@ -19,4 +81,14 @@
     "redirect"
   ],
+  "license": "MIT",
+  "main": "./lib/needle",
+  "name": "needle",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/tomas/needle.git"
+  },
+  "scripts": {
+    "test": "mocha test"
+  },
   "tags": [
     "http",
@@ -35,37 +107,4 @@
     "redirect"
   ],
-  "author": "Tomás Pollak <tomas@forkhq.com>",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/tomas/needle.git"
-  },
-  "dependencies": {
-    "debug": "^3.2.6",
-    "iconv-lite": "^0.4.4",
-    "sax": "^1.2.4"
-  },
-  "devDependencies": {
-    "JSONStream": "^1.3.5",
-    "jschardet": "^1.6.0",
-    "mocha": "^5.2.0",
-    "pump": "^3.0.0",
-    "q": "^1.5.1",
-    "should": "^13.2.3",
-    "sinon": "^2.3.0",
-    "xml2js": "^0.4.19"
-  },
-  "scripts": {
-    "test": "mocha test"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "main": "./lib/needle",
-  "bin": {
-    "needle": "./bin/needle"
-  },
-  "license": "MIT",
-  "engines": {
-    "node": ">= 4.4.x"
-  }
+  "version": "2.9.1"
 }
Index: trip-planner-front/node_modules/negotiator/package.json
===================================================================
--- trip-planner-front/node_modules/negotiator/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/negotiator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,69 @@
 {
-  "name": "negotiator",
+  "_args": [
+    [
+      "negotiator@0.6.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "negotiator@0.6.2",
+  "_id": "negotiator@0.6.2",
+  "_inBundle": false,
+  "_integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+  "_location": "/negotiator",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "negotiator@0.6.2",
+    "name": "negotiator",
+    "escapedName": "negotiator",
+    "rawSpec": "0.6.2",
+    "saveSpec": null,
+    "fetchSpec": "0.6.2"
+  },
+  "_requiredBy": [
+    "/accepts",
+    "/make-fetch-happen"
+  ],
+  "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+  "_spec": "0.6.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/negotiator/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Federico Romero",
+      "email": "federico.romero@outboxlabs.com"
+    },
+    {
+      "name": "Isaac Z. Schlueter",
+      "email": "i@izs.me",
+      "url": "http://blog.izs.me/"
+    }
+  ],
   "description": "HTTP content negotiation",
-  "version": "0.6.2",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Federico Romero <federico.romero@outboxlabs.com>",
-    "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)"
+  "devDependencies": {
+    "eslint": "5.16.0",
+    "eslint-plugin-markdown": "1.0.0",
+    "mocha": "6.1.4",
+    "nyc": "14.0.0"
+  },
+  "engines": {
+    "node": ">= 0.6"
+  },
+  "files": [
+    "lib/",
+    "HISTORY.md",
+    "LICENSE",
+    "index.js",
+    "README.md"
   ],
-  "license": "MIT",
+  "homepage": "https://github.com/jshttp/negotiator#readme",
   "keywords": [
     "http",
@@ -17,20 +74,9 @@
     "accept-charset"
   ],
-  "repository": "jshttp/negotiator",
-  "devDependencies": {
-    "eslint": "5.16.0",
-    "eslint-plugin-markdown": "1.0.0",
-    "mocha": "6.1.4",
-    "nyc": "14.0.0"
-  },
-  "files": [
-    "lib/",
-    "HISTORY.md",
-    "LICENSE",
-    "index.js",
-    "README.md"
-  ],
-  "engines": {
-    "node": ">= 0.6"
+  "license": "MIT",
+  "name": "negotiator",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/negotiator.git"
   },
   "scripts": {
@@ -39,4 +85,5 @@
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "test-travis": "nyc --reporter=text npm test"
-  }
+  },
+  "version": "0.6.2"
 }
Index: trip-planner-front/node_modules/neo-async/package.json
===================================================================
--- trip-planner-front/node_modules/neo-async/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/neo-async/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,39 @@
 {
-  "name": "neo-async",
-  "version": "2.6.2",
+  "_args": [
+    [
+      "neo-async@2.6.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "neo-async@2.6.2",
+  "_id": "neo-async@2.6.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+  "_location": "/neo-async",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "neo-async@2.6.2",
+    "name": "neo-async",
+    "escapedName": "neo-async",
+    "rawSpec": "2.6.2",
+    "saveSpec": null,
+    "fetchSpec": "2.6.2"
+  },
+  "_requiredBy": [
+    "/sass-loader",
+    "/webpack"
+  ],
+  "_resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+  "_spec": "2.6.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "browser": "async.min.js",
+  "bugs": {
+    "url": "https://github.com/suguru03/neo-async/issues"
+  },
+  "dependencies": {},
   "description": "Neo-Async is a drop-in replacement for Async, it almost fully covers its functionality and runs faster ",
-  "main": "async.js",
-  "license": "MIT",
-  "keywords": [
-    "async",
-    "util"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:suguru03/neo-async.git"
-  },
-  "homepage": "https://github.com/suguru03/neo-async",
-  "dependencies": {},
   "devDependencies": {
     "aigle": "^1.14.0",
@@ -44,4 +65,10 @@
     "require-dir": "^0.3.0"
   },
+  "homepage": "https://github.com/suguru03/neo-async",
+  "keywords": [
+    "async",
+    "util"
+  ],
+  "license": "MIT",
   "lint-staged": {
     "*.{js,ts}": [
@@ -50,8 +77,14 @@
     ]
   },
+  "main": "async.js",
+  "name": "neo-async",
   "prettier": {
     "printWidth": 100,
     "singleQuote": true
   },
-  "browser": "async.min.js"
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/suguru03/neo-async.git"
+  },
+  "version": "2.6.2"
 }
Index: trip-planner-front/node_modules/nice-try/package.json
===================================================================
--- trip-planner-front/node_modules/nice-try/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nice-try/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,49 @@
 {
-  "name": "nice-try",
-  "version": "1.0.5",
+  "_args": [
+    [
+      "nice-try@1.0.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "nice-try@1.0.5",
+  "_id": "nice-try@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+  "_location": "/nice-try",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nice-try@1.0.5",
+    "name": "nice-try",
+    "escapedName": "nice-try",
+    "rawSpec": "1.0.5",
+    "saveSpec": null,
+    "fetchSpec": "1.0.5"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+  "_spec": "1.0.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "authors": [
     "Tobias Reich <tobias@electerious.com>"
   ],
+  "bugs": {
+    "url": "https://github.com/electerious/nice-try/issues"
+  },
   "description": "Tries to execute a function and discards any error that occurs",
-  "main": "src/index.js",
+  "devDependencies": {
+    "chai": "^4.1.2",
+    "coveralls": "^3.0.0",
+    "mocha": "^5.1.1",
+    "nyc": "^12.0.1"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/electerious/nice-try",
   "keywords": [
     "try",
@@ -13,21 +52,14 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/electerious/nice-try",
+  "main": "src/index.js",
+  "name": "nice-try",
   "repository": {
     "type": "git",
-    "url": "https://github.com/electerious/nice-try.git"
+    "url": "git+https://github.com/electerious/nice-try.git"
   },
-  "files": [
-    "src"
-  ],
   "scripts": {
     "coveralls": "nyc report --reporter=text-lcov | coveralls",
     "test": "nyc node_modules/mocha/bin/_mocha"
   },
-  "devDependencies": {
-    "chai": "^4.1.2",
-    "coveralls": "^3.0.0",
-    "nyc": "^12.0.1",
-    "mocha": "^5.1.1"
-  }
+  "version": "1.0.5"
 }
Index: trip-planner-front/node_modules/node-forge/package.json
===================================================================
--- trip-planner-front/node_modules/node-forge/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-forge/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,32 @@
 {
-  "name": "node-forge",
-  "version": "0.10.0",
-  "description": "JavaScript implementations of network transports, cryptography, ciphers, PKI, message digests, and various utilities.",
-  "homepage": "https://github.com/digitalbazaar/forge",
+  "_args": [
+    [
+      "node-forge@0.10.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "node-forge@0.10.0",
+  "_id": "node-forge@0.10.0",
+  "_inBundle": false,
+  "_integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+  "_location": "/node-forge",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "node-forge@0.10.0",
+    "name": "node-forge",
+    "escapedName": "node-forge",
+    "rawSpec": "0.10.0",
+    "saveSpec": null,
+    "fetchSpec": "0.10.0"
+  },
+  "_requiredBy": [
+    "/selfsigned"
+  ],
+  "_resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+  "_spec": "0.10.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Digital Bazaar, Inc.",
@@ -9,10 +34,32 @@
     "url": "http://digitalbazaar.com/"
   },
+  "browser": {
+    "buffer": false,
+    "crypto": false,
+    "process": false
+  },
+  "bugs": {
+    "url": "https://github.com/digitalbazaar/forge/issues",
+    "email": "support@digitalbazaar.com"
+  },
   "contributors": [
-    "Dave Longley <dlongley@digitalbazaar.com>",
-    "David I. Lehn <dlehn@digitalbazaar.com>",
-    "Stefan Siegl <stesie@brokenpipe.de>",
-    "Christoph Dorn <christoph@christophdorn.com>"
+    {
+      "name": "Dave Longley",
+      "email": "dlongley@digitalbazaar.com"
+    },
+    {
+      "name": "David I. Lehn",
+      "email": "dlehn@digitalbazaar.com"
+    },
+    {
+      "name": "Stefan Siegl",
+      "email": "stesie@brokenpipe.de"
+    },
+    {
+      "name": "Christoph Dorn",
+      "email": "christoph@christophdorn.com"
+    }
   ],
+  "description": "JavaScript implementations of network transports, cryptography, ciphers, PKI, message digests, and various utilities.",
   "devDependencies": {
     "browserify": "^16.5.2",
@@ -44,14 +91,7 @@
     "worker-loader": "^2.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/digitalbazaar/forge"
+  "engines": {
+    "node": ">= 6.0.0"
   },
-  "bugs": {
-    "url": "https://github.com/digitalbazaar/forge/issues",
-    "email": "support@digitalbazaar.com"
-  },
-  "license": "(BSD-3-Clause OR GPL-2.0)",
-  "main": "lib/index.js",
   "files": [
     "lib/*.js",
@@ -60,6 +100,7 @@
     "dist/*.min.js.map"
   ],
-  "engines": {
-    "node": ">= 6.0.0"
+  "homepage": "https://github.com/digitalbazaar/forge",
+  "jspm": {
+    "format": "amd"
   },
   "keywords": [
@@ -92,18 +133,7 @@
     "x509"
   ],
-  "scripts": {
-    "prepublish": "npm run build",
-    "build": "webpack",
-    "test-build": "webpack --config webpack-tests.config.js",
-    "test": "cross-env NODE_ENV=test mocha -t 30000 -R ${REPORTER:-spec} tests/unit/index.js",
-    "test-karma": "karma start",
-    "test-karma-sauce": "karma start karma-sauce.conf",
-    "test-server": "node tests/server.js",
-    "test-server-ws": "node tests/websockets/server-ws.js",
-    "test-server-webid": "node tests/websockets/server-webid.js",
-    "coverage": "rm -rf coverage && nyc --reporter=lcov --reporter=text-summary npm test",
-    "coverage-report": "nyc report",
-    "lint": "eslint *.js lib/*.js tests/*.js tests/**/*.js examples/*.js flash/*.js"
-  },
+  "license": "(BSD-3-Clause OR GPL-2.0)",
+  "main": "lib/index.js",
+  "name": "node-forge",
   "nyc": {
     "exclude": [
@@ -111,11 +141,22 @@
     ]
   },
-  "jspm": {
-    "format": "amd"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/digitalbazaar/forge.git"
   },
-  "browser": {
-    "buffer": false,
-    "crypto": false,
-    "process": false
-  }
+  "scripts": {
+    "build": "webpack",
+    "coverage": "rm -rf coverage && nyc --reporter=lcov --reporter=text-summary npm test",
+    "coverage-report": "nyc report",
+    "lint": "eslint *.js lib/*.js tests/*.js tests/**/*.js examples/*.js flash/*.js",
+    "prepublish": "npm run build",
+    "test": "cross-env NODE_ENV=test mocha -t 30000 -R ${REPORTER:-spec} tests/unit/index.js",
+    "test-build": "webpack --config webpack-tests.config.js",
+    "test-karma": "karma start",
+    "test-karma-sauce": "karma start karma-sauce.conf",
+    "test-server": "node tests/server.js",
+    "test-server-webid": "node tests/websockets/server-webid.js",
+    "test-server-ws": "node tests/websockets/server-ws.js"
+  },
+  "version": "0.10.0"
 }
Index: trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which
===================================================================
--- trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../which/bin/node-which" "$@"
+  "$basedir/node"  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../which/bin/node-which" "$@"
+  node  "$basedir/../which/bin/node-which" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.cmd
===================================================================
--- trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\which\bin\node-which" %*
+"%_prog%"  "%dp0%\..\which\bin\node-which" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.ps1
===================================================================
--- trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-gyp/node_modules/.bin/node-which.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../which/bin/node-which" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../which/bin/node-which" $args
-  } else {
-    & "node$exe"  "$basedir/../which/bin/node-which" $args
-  }
+  & "node$exe"  "$basedir/../which/bin/node-which" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/node-gyp/node_modules/which/package.json
===================================================================
--- trip-planner-front/node_modules/node-gyp/node_modules/which/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-gyp/node_modules/which/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,19 +1,47 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
-  "name": "which",
-  "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
-  "version": "2.0.2",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/node-which.git"
+  "_args": [
+    [
+      "which@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "which@2.0.2",
+  "_id": "which@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+  "_location": "/node-gyp/which",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "which@2.0.2",
+    "name": "which",
+    "escapedName": "which",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
   },
-  "main": "which.js",
+  "_requiredBy": [
+    "/node-gyp"
+  ],
+  "_resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me"
+  },
   "bin": {
-    "node-which": "./bin/node-which"
+    "node-which": "bin/node-which"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/isaacs/node-which/issues"
+  },
   "dependencies": {
     "isexe": "^2.0.0"
   },
+  "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
   "devDependencies": {
     "mkdirp": "^0.5.0",
@@ -21,13 +49,6 @@
     "tap": "^14.6.9"
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublish": "npm run changelog",
-    "prechangelog": "bash gen-changelog.sh",
-    "changelog": "git add CHANGELOG.md",
-    "postchangelog": "git commit -m 'update changelog - '${npm_package_version}",
-    "postpublish": "git push origin --follow-tags"
+  "engines": {
+    "node": ">= 8"
   },
   "files": [
@@ -35,9 +56,25 @@
     "bin/node-which"
   ],
+  "homepage": "https://github.com/isaacs/node-which#readme",
+  "license": "ISC",
+  "main": "which.js",
+  "name": "which",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-which.git"
+  },
+  "scripts": {
+    "changelog": "git add CHANGELOG.md",
+    "postchangelog": "git commit -m 'update changelog - '${npm_package_version}",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "prechangelog": "bash gen-changelog.sh",
+    "prepublish": "npm run changelog",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
   },
-  "engines": {
-    "node": ">= 8"
-  }
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/node-gyp/package.json
===================================================================
--- trip-planner-front/node_modules/node-gyp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-gyp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,25 +1,45 @@
 {
-  "name": "node-gyp",
-  "description": "Node.js native addon build tool",
-  "license": "MIT",
-  "keywords": [
-    "native",
-    "addon",
-    "module",
-    "c",
-    "c++",
-    "bindings",
-    "gyp"
+  "_args": [
+    [
+      "node-gyp@7.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "version": "7.1.2",
-  "installVersion": 9,
-  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://tootallnate.net)",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/nodejs/node-gyp.git"
+  "_development": true,
+  "_from": "node-gyp@7.1.2",
+  "_id": "node-gyp@7.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
+  "_location": "/node-gyp",
+  "_phantomChildren": {
+    "isexe": "2.0.0"
   },
-  "preferGlobal": true,
-  "bin": "./bin/node-gyp.js",
-  "main": "./lib/node-gyp.js",
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "node-gyp@7.1.2",
+    "name": "node-gyp",
+    "escapedName": "node-gyp",
+    "rawSpec": "7.1.2",
+    "saveSpec": null,
+    "fetchSpec": "7.1.2"
+  },
+  "_requiredBy": [
+    "/@npmcli/run-script"
+  ],
+  "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
+  "_spec": "7.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nathan Rajlich",
+    "email": "nathan@tootallnate.net",
+    "url": "http://tootallnate.net"
+  },
+  "bin": {
+    "node-gyp": "bin/node-gyp.js"
+  },
+  "bugs": {
+    "url": "https://github.com/nodejs/node-gyp/issues"
+  },
   "dependencies": {
     "env-paths": "^2.2.0",
@@ -34,7 +54,5 @@
     "which": "^2.0.2"
   },
-  "engines": {
-    "node": ">= 10.12.0"
-  },
+  "description": "Node.js native addon build tool",
   "devDependencies": {
     "bindings": "^1.5.0",
@@ -44,7 +62,30 @@
     "tap": "^12.7.0"
   },
+  "engines": {
+    "node": ">= 10.12.0"
+  },
+  "homepage": "https://github.com/nodejs/node-gyp#readme",
+  "installVersion": 9,
+  "keywords": [
+    "native",
+    "addon",
+    "module",
+    "c",
+    "c++",
+    "bindings",
+    "gyp"
+  ],
+  "license": "MIT",
+  "main": "./lib/node-gyp.js",
+  "name": "node-gyp",
+  "preferGlobal": true,
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/nodejs/node-gyp.git"
+  },
   "scripts": {
     "lint": "standard */*.js test/**/*.js",
     "test": "npm run lint && tap --timeout=120 test/test-*"
-  }
+  },
+  "version": "7.1.2"
 }
Index: trip-planner-front/node_modules/node-releases/package.json
===================================================================
--- trip-planner-front/node_modules/node-releases/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/node-releases/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,55 @@
 {
+  "_args": [
+    [
+      "node-releases@1.1.77",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "node-releases@1.1.77",
+  "_id": "node-releases@1.1.77",
+  "_inBundle": false,
+  "_integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==",
+  "_location": "/node-releases",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "node-releases@1.1.77",
+    "name": "node-releases",
+    "escapedName": "node-releases",
+    "rawSpec": "1.1.77",
+    "saveSpec": null,
+    "fetchSpec": "1.1.77"
+  },
+  "_requiredBy": [
+    "/browserslist"
+  ],
+  "_resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz",
+  "_spec": "1.1.77",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sergey Rubanov",
+    "email": "chi187@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chicoxyzzy/node-releases/issues"
+  },
+  "dependencies": {},
+  "description": "Node.js releases data",
+  "devDependencies": {
+    "semver": "^6.3.0"
+  },
+  "homepage": "https://github.com/chicoxyzzy/node-releases#readme",
+  "keywords": [
+    "nodejs",
+    "releases"
+  ],
+  "license": "MIT",
   "name": "node-releases",
-  "version": "1.1.77",
-  "description": "Node.js releases data",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chicoxyzzy/node-releases.git"
+  },
   "scripts": {
     "build": "npm run fetch && npm run process",
@@ -8,17 +57,4 @@
     "process": "node scripts/process.js"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/chicoxyzzy/node-releases.git"
-  },
-  "keywords": [
-    "nodejs",
-    "releases"
-  ],
-  "author": "Sergey Rubanov <chi187@gmail.com>",
-  "license": "MIT",
-  "dependencies": {},
-  "devDependencies": {
-    "semver": "^6.3.0"
-  }
+  "version": "1.1.77"
 }
Index: trip-planner-front/node_modules/nopt/package.json
===================================================================
--- trip-planner-front/node_modules/nopt/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nopt/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,52 @@
 {
-  "name": "nopt",
-  "version": "5.0.0",
-  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "main": "lib/nopt.js",
-  "scripts": {
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags",
-    "test": "tap test/*.js"
+  "_args": [
+    [
+      "nopt@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "nopt@5.0.0",
+  "_id": "nopt@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+  "_location": "/nopt",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nopt@5.0.0",
+    "name": "nopt",
+    "escapedName": "nopt",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/nopt.git"
+  "_requiredBy": [
+    "/node-gyp"
+  ],
+  "_resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
   },
   "bin": {
     "nopt": "bin/nopt.js"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/npm/nopt/issues"
+  },
   "dependencies": {
     "abbrev": "1"
   },
+  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
   "devDependencies": {
     "tap": "^14.10.6"
+  },
+  "engines": {
+    "node": ">=6"
   },
   "files": [
@@ -29,6 +54,18 @@
     "lib"
   ],
-  "engines": {
-    "node": ">=6"
-  }
+  "homepage": "https://github.com/npm/nopt#readme",
+  "license": "ISC",
+  "main": "lib/nopt.js",
+  "name": "nopt",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/nopt.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap test/*.js"
+  },
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/normalize-path/package.json
===================================================================
--- trip-planner-front/node_modules/normalize-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/normalize-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "normalize-path",
-  "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.",
-  "version": "3.0.0",
-  "homepage": "https://github.com/jonschlinkert/normalize-path",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Blaine Bublitz (https://twitter.com/BlaineBublitz)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)"
+  "_args": [
+    [
+      "normalize-path@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/normalize-path",
+  "_development": true,
+  "_from": "normalize-path@3.0.0",
+  "_id": "normalize-path@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+  "_location": "/normalize-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "normalize-path@3.0.0",
+    "name": "normalize-path",
+    "escapedName": "normalize-path",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/anymatch",
+    "/chokidar",
+    "/copy-webpack-plugin",
+    "/stylus-loader",
+    "/webpack-dev-server/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/normalize-path/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Blaine Bublitz",
+      "url": "https://twitter.com/BlaineBublitz"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
@@ -29,4 +56,11 @@
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/normalize-path",
   "keywords": [
     "absolute",
@@ -50,4 +84,14 @@
     "urix"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "normalize-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/normalize-path.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -74,4 +118,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/normalize-range/package.json
===================================================================
--- trip-planner-front/node_modules/normalize-range/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/normalize-range/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "normalize-range",
-  "version": "0.1.2",
-  "description": "Utility for normalizing a numeric range, with a wrapping function useful for polar coordinates",
-  "license": "MIT",
-  "repository": "jamestalmage/normalize-range",
+  "_args": [
+    [
+      "normalize-range@0.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "normalize-range@0.1.2",
+  "_id": "normalize-range@0.1.2",
+  "_inBundle": false,
+  "_integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+  "_location": "/normalize-range",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "normalize-range@0.1.2",
+    "name": "normalize-range",
+    "escapedName": "normalize-range",
+    "rawSpec": "0.1.2",
+    "saveSpec": null,
+    "fetchSpec": "0.1.2"
+  },
+  "_requiredBy": [
+    "/autoprefixer"
+  ],
+  "_resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+  "_spec": "0.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "James Talmage",
@@ -10,27 +34,9 @@
     "url": "github.com/jamestalmage"
   },
-  "engines": {
-    "node": ">=0.10.0"
+  "bugs": {
+    "url": "https://github.com/jamestalmage/normalize-range/issues"
   },
-  "scripts": {
-    "test": "npm run cover && npm run lint && npm run style",
-    "cover": "istanbul cover ./node_modules/.bin/_mocha",
-    "lint": "jshint --reporter=node_modules/jshint-stylish *.js test/*.js",
-    "debug": "mocha",
-    "watch": "mocha -w",
-    "style": "jscs *.js ./**/*.js && jscs ./test/** --config=./test/.jscsrc"
-  },
-  "files": [
-    "index.js"
-  ],
-  "keywords": [
-    "range",
-    "normalize",
-    "utility",
-    "angle",
-    "degrees",
-    "polar"
-  ],
   "dependencies": {},
+  "description": "Utility for normalizing a numeric range, with a wrapping function useful for polar coordinates",
   "devDependencies": {
     "almost-equal": "^1.0.0",
@@ -43,4 +49,34 @@
     "mocha": "^2.2.5",
     "stringify-pi": "0.0.3"
-  }
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jamestalmage/normalize-range#readme",
+  "keywords": [
+    "range",
+    "normalize",
+    "utility",
+    "angle",
+    "degrees",
+    "polar"
+  ],
+  "license": "MIT",
+  "name": "normalize-range",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jamestalmage/normalize-range.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover ./node_modules/.bin/_mocha",
+    "debug": "mocha",
+    "lint": "jshint --reporter=node_modules/jshint-stylish *.js test/*.js",
+    "style": "jscs *.js ./**/*.js && jscs ./test/** --config=./test/.jscsrc",
+    "test": "npm run cover && npm run lint && npm run style",
+    "watch": "mocha -w"
+  },
+  "version": "0.1.2"
 }
Index: trip-planner-front/node_modules/normalize-url/package.json
===================================================================
--- trip-planner-front/node_modules/normalize-url/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/normalize-url/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,50 +1,86 @@
 {
-	"name": "normalize-url",
-	"version": "6.1.0",
-	"description": "Normalize a URL",
-	"license": "MIT",
-	"repository": "sindresorhus/normalize-url",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"normalize",
-		"url",
-		"uri",
-		"address",
-		"string",
-		"normalization",
-		"normalisation",
-		"query",
-		"querystring",
-		"simplify",
-		"strip",
-		"trim",
-		"canonical"
-	],
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"nyc": "^15.0.0",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.3"
-	},
-	"nyc": {
-		"reporter": [
-			"text",
-			"lcov"
-		]
-	}
+  "_args": [
+    [
+      "normalize-url@6.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "normalize-url@6.1.0",
+  "_id": "normalize-url@6.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+  "_location": "/normalize-url",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "normalize-url@6.1.0",
+    "name": "normalize-url",
+    "escapedName": "normalize-url",
+    "rawSpec": "6.1.0",
+    "saveSpec": null,
+    "fetchSpec": "6.1.0"
+  },
+  "_requiredBy": [
+    "/postcss-normalize-url"
+  ],
+  "_resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+  "_spec": "6.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/normalize-url/issues"
+  },
+  "description": "Normalize a URL",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "nyc": "^15.0.0",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/normalize-url#readme",
+  "keywords": [
+    "normalize",
+    "url",
+    "uri",
+    "address",
+    "string",
+    "normalization",
+    "normalisation",
+    "query",
+    "querystring",
+    "simplify",
+    "strip",
+    "trim",
+    "canonical"
+  ],
+  "license": "MIT",
+  "name": "normalize-url",
+  "nyc": {
+    "reporter": [
+      "text",
+      "lcov"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/normalize-url.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "6.1.0"
 }
Index: trip-planner-front/node_modules/npm-bundled/package.json
===================================================================
--- trip-planner-front/node_modules/npm-bundled/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-bundled/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,45 @@
 {
-  "name": "npm-bundled",
-  "version": "1.1.2",
+  "_args": [
+    [
+      "npm-bundled@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-bundled@1.1.2",
+  "_id": "npm-bundled@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
+  "_location": "/npm-bundled",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-bundled@1.1.2",
+    "name": "npm-bundled",
+    "escapedName": "npm-bundled",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
+  },
+  "_requiredBy": [
+    "/@npmcli/installed-package-contents",
+    "/npm-packlist"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/npm-bundled/issues"
+  },
+  "dependencies": {
+    "npm-normalize-package-bin": "^1.0.1"
+  },
   "description": "list things in node_modules that are bundledDependencies, or transitive dependencies thereof",
-  "main": "index.js",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/npm/npm-bundled.git"
-  },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
   "devDependencies": {
     "mkdirp": "^0.5.1",
@@ -16,15 +48,21 @@
     "tap": "^12.0.1"
   },
-  "scripts": {
-    "test": "tap test/*.js -J --100",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --all; git push origin --tags"
-  },
   "files": [
     "index.js"
   ],
-  "dependencies": {
-    "npm-normalize-package-bin": "^1.0.1"
-  }
+  "homepage": "https://github.com/npm/npm-bundled#readme",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "npm-bundled",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npm-bundled.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js -J --100"
+  },
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/npm-install-checks/package.json
===================================================================
--- trip-planner-front/node_modules/npm-install-checks/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-install-checks/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,49 @@
 {
-  "name": "npm-install-checks",
-  "version": "4.0.0",
-  "description": "Check the engines and platform fields in package.json",
-  "main": "index.js",
+  "_args": [
+    [
+      "npm-install-checks@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-install-checks@4.0.0",
+  "_id": "npm-install-checks@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
+  "_location": "/npm-install-checks",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-install-checks@4.0.0",
+    "name": "npm-install-checks",
+    "escapedName": "npm-install-checks",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/npm-pick-manifest"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/npm/npm-install-checks/issues"
+  },
   "dependencies": {
     "semver": "^7.1.1"
   },
+  "description": "Check the engines and platform fields in package.json",
   "devDependencies": {
     "tap": "^14.10.6"
   },
-  "scripts": {
-    "test": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+  "engines": {
+    "node": ">=10"
   },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/npm/npm-install-checks.git"
-  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/npm-install-checks#readme",
   "keywords": [
     "npm,",
@@ -25,9 +51,16 @@
   ],
   "license": "BSD-2-Clause",
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">=10"
-  }
+  "main": "index.js",
+  "name": "npm-install-checks",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/npm/npm-install-checks.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/npm-normalize-package-bin/package.json
===================================================================
--- trip-planner-front/node_modules/npm-normalize-package-bin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-normalize-package-bin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,65 @@
 {
+  "_args": [
+    [
+      "npm-normalize-package-bin@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-normalize-package-bin@1.0.1",
+  "_id": "npm-normalize-package-bin@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
+  "_location": "/npm-normalize-package-bin",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-normalize-package-bin@1.0.1",
+    "name": "npm-normalize-package-bin",
+    "escapedName": "npm-normalize-package-bin",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/@npmcli/installed-package-contents",
+    "/npm-bundled",
+    "/npm-packlist",
+    "/npm-pick-manifest",
+    "/read-package-json-fast"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/npm-normalize-package-bin/issues"
+  },
+  "description": "Turn any flavor of allowable package.json bin into a normalized object",
+  "devDependencies": {
+    "tap": "^14.10.2"
+  },
+  "homepage": "https://github.com/npm/npm-normalize-package-bin#readme",
+  "license": "ISC",
   "name": "npm-normalize-package-bin",
-  "version": "1.0.1",
-  "description": "Turn any flavor of allowable package.json bin into a normalized object",
-  "repository": "git+https://github.com/npm/npm-normalize-package-bin",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
-  "license": "ISC",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npm-normalize-package-bin.git"
+  },
   "scripts": {
-    "test": "tap",
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
     "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "postpublish": "git push origin --follow-tags"
+    "test": "tap"
   },
   "tap": {
     "check-coverage": true
   },
-  "devDependencies": {
-    "tap": "^14.10.2"
-  }
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/npm-package-arg/package.json
===================================================================
--- trip-planner-front/node_modules/npm-package-arg/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-package-arg/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,13 +1,43 @@
 {
-  "name": "npm-package-arg",
-  "version": "8.1.5",
-  "description": "Parse the things that can be arguments to `npm install`",
-  "main": "npa.js",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "npm-package-arg@8.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-package-arg@8.1.5",
+  "_id": "npm-package-arg@8.1.5",
+  "_inBundle": false,
+  "_integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+  "_location": "/npm-package-arg",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-package-arg@8.1.5",
+    "name": "npm-package-arg",
+    "escapedName": "npm-package-arg",
+    "rawSpec": "8.1.5",
+    "saveSpec": null,
+    "fetchSpec": "8.1.5"
   },
-  "files": [
-    "npa.js"
+  "_requiredBy": [
+    "/@angular/cli",
+    "/npm-pick-manifest",
+    "/npm-registry-fetch",
+    "/pacote"
   ],
+  "_resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
+  "_spec": "8.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/npm-package-arg/issues"
+  },
   "dependencies": {
     "hosted-git-info": "^4.0.1",
@@ -15,32 +45,38 @@
     "validate-npm-package-name": "^3.0.0"
   },
+  "description": "Parse the things that can be arguments to `npm install`",
   "devDependencies": {
     "@npmcli/lint": "^1.0.1",
     "tap": "^15.0.9"
   },
+  "directories": {
+    "test": "test"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "npa.js"
+  ],
+  "homepage": "https://github.com/npm/npm-package-arg",
+  "license": "ISC",
+  "main": "npa.js",
+  "name": "npm-package-arg",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npm-package-arg.git"
+  },
   "scripts": {
-    "preversion": "npm test",
+    "lint": "npm run npmclilint -- \"*.*js\" \"test/**/*.*js\"",
+    "lintfix": "npm run lint -- --fix",
+    "npmclilint": "npmcli-lint",
+    "postsnap": "npm run lintfix --",
+    "posttest": "npm run lint --",
     "postversion": "npm publish",
     "prepublishOnly": "git push origin --follow-tags",
-    "test": "tap",
+    "preversion": "npm test",
     "snap": "tap",
-    "npmclilint": "npmcli-lint",
-    "lint": "npm run npmclilint -- \"*.*js\" \"test/**/*.*js\"",
-    "lintfix": "npm run lint -- --fix",
-    "posttest": "npm run lint --",
-    "postsnap": "npm run lintfix --"
+    "test": "tap"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/npm-package-arg"
-  },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/npm/npm-package-arg/issues"
-  },
-  "homepage": "https://github.com/npm/npm-package-arg",
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "8.1.5"
 }
Index: trip-planner-front/node_modules/npm-packlist/package.json
===================================================================
--- trip-planner-front/node_modules/npm-packlist/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-packlist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,43 @@
 {
-  "name": "npm-packlist",
-  "version": "2.2.2",
-  "description": "Get a list of the files to add from a folder into an npm package",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "npm-packlist@2.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-packlist@2.2.2",
+  "_id": "npm-packlist@2.2.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
+  "_location": "/npm-packlist",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-packlist@2.2.2",
+    "name": "npm-packlist",
+    "escapedName": "npm-packlist",
+    "rawSpec": "2.2.2",
+    "saveSpec": null,
+    "fetchSpec": "2.2.2"
   },
-  "main": "index.js",
+  "_requiredBy": [
+    "/pacote"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
+  "_spec": "2.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bin": {
+    "npm-packlist": "bin/index.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/npm-packlist/issues"
+  },
   "dependencies": {
     "glob": "^7.1.6",
@@ -13,10 +46,5 @@
     "npm-normalize-package-bin": "^1.0.1"
   },
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC",
-  "files": [
-    "bin/index.js",
-    "index.js"
-  ],
+  "description": "Get a list of the files to add from a folder into an npm package",
   "devDependencies": {
     "eslint": "^7.25.0",
@@ -28,19 +56,33 @@
     "tap": "^15.0.6"
   },
-  "scripts": {
-    "test": "tap",
-    "posttest": "npm run lint",
-    "snap": "tap",
-    "postsnap": "npm run lintfix",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags",
-    "eslint": "eslint",
-    "lint": "npm run eslint -- index.js bin/index.js \"test/**/*.js\"",
-    "lintfix": "npm run lint -- --fix"
+  "directories": {
+    "test": "test"
   },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "bin/index.js",
+    "index.js"
+  ],
+  "homepage": "https://github.com/npm/npm-packlist#readme",
+  "license": "ISC",
+  "main": "index.js",
+  "name": "npm-packlist",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/npm/npm-packlist.git"
+  },
+  "scripts": {
+    "eslint": "eslint",
+    "lint": "npm run eslint -- index.js bin/index.js \"test/**/*.js\"",
+    "lintfix": "npm run lint -- --fix",
+    "postsnap": "npm run lintfix",
+    "posttest": "npm run lint",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
   },
   "tap": {
@@ -54,9 +96,4 @@
     ]
   },
-  "bin": {
-    "npm-packlist": "bin/index.js"
-  },
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "2.2.2"
 }
Index: trip-planner-front/node_modules/npm-pick-manifest/package.json
===================================================================
--- trip-planner-front/node_modules/npm-pick-manifest/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-pick-manifest/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,41 @@
 {
-  "name": "npm-pick-manifest",
-  "version": "6.1.1",
-  "description": "Resolves a matching manifest from a package metadata document according to standard npm semver resolution rules.",
-  "main": "index.js",
-  "files": [
-    "*.js"
+  "_args": [
+    [
+      "npm-pick-manifest@6.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "coverage": "tap",
-    "lint": "standard",
-    "test": "tap",
-    "posttest": "npm run lint",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
+  "_development": true,
+  "_from": "npm-pick-manifest@6.1.1",
+  "_id": "npm-pick-manifest@6.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
+  "_location": "/npm-pick-manifest",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-pick-manifest@6.1.1",
+    "name": "npm-pick-manifest",
+    "escapedName": "npm-pick-manifest",
+    "rawSpec": "6.1.1",
+    "saveSpec": null,
+    "fetchSpec": "6.1.1"
   },
-  "repository": "https://github.com/npm/npm-pick-manifest",
-  "keywords": [
-    "npm",
-    "semver",
-    "package manager"
+  "_requiredBy": [
+    "/@angular/cli",
+    "/@npmcli/git",
+    "/pacote"
   ],
+  "_resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
+  "_spec": "6.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Kat Marchán",
-    "email": "kzm@sykosomatic.org",
-    "twitter": "maybekatz"
+    "email": "kzm@sykosomatic.org"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/npm/npm-pick-manifest/issues"
+  },
   "dependencies": {
     "npm-install-checks": "^4.0.0",
@@ -34,10 +44,37 @@
     "semver": "^7.3.4"
   },
+  "description": "Resolves a matching manifest from a package metadata document according to standard npm semver resolution rules.",
   "devDependencies": {
     "standard": "^14.3.1",
     "tap": "^14.11.0"
   },
+  "files": [
+    "*.js"
+  ],
+  "homepage": "https://github.com/npm/npm-pick-manifest#readme",
+  "keywords": [
+    "npm",
+    "semver",
+    "package manager"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "npm-pick-manifest",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npm-pick-manifest.git"
+  },
+  "scripts": {
+    "coverage": "tap",
+    "lint": "standard",
+    "posttest": "npm run lint",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true
-  }
+  },
+  "version": "6.1.1"
 }
Index: trip-planner-front/node_modules/npm-registry-fetch/package.json
===================================================================
--- trip-planner-front/node_modules/npm-registry-fetch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-registry-fetch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,39 @@
 {
-  "name": "npm-registry-fetch",
-  "version": "11.0.0",
-  "description": "Fetch-based http client for use with npm registry APIs",
-  "main": "index.js",
-  "files": [
-    "*.js"
+  "_args": [
+    [
+      "npm-registry-fetch@11.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "eslint": "eslint",
-    "lint": "npm run npmclilint -- \"*.*js\" \"test/**/*.*js\"",
-    "lintfix": "npm run lint -- --fix",
-    "prepublishOnly": "git push origin --follow-tags",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "test": "tap",
-    "posttest": "npm run lint --",
-    "npmclilint": "npmcli-lint",
-    "postsnap": "npm run lintfix --"
+  "_development": true,
+  "_from": "npm-registry-fetch@11.0.0",
+  "_id": "npm-registry-fetch@11.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==",
+  "_location": "/npm-registry-fetch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-registry-fetch@11.0.0",
+    "name": "npm-registry-fetch",
+    "escapedName": "npm-registry-fetch",
+    "rawSpec": "11.0.0",
+    "saveSpec": null,
+    "fetchSpec": "11.0.0"
   },
-  "repository": "https://github.com/npm/npm-registry-fetch",
-  "keywords": [
-    "npm",
-    "registry",
-    "fetch"
+  "_requiredBy": [
+    "/pacote"
   ],
+  "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz",
+  "_spec": "11.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Kat Marchán",
-    "email": "kzm@sykosomatic.org",
-    "twitter": "maybekatz"
+    "email": "kzm@sykosomatic.org"
   },
-  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/npm/npm-registry-fetch/issues"
+  },
   "dependencies": {
     "make-fetch-happen": "^9.0.1",
@@ -39,4 +44,5 @@
     "npm-package-arg": "^8.0.0"
   },
+  "description": "Fetch-based http client for use with npm registry APIs",
   "devDependencies": {
     "@npmcli/lint": "^1.0.1",
@@ -48,10 +54,39 @@
     "tap": "^15.0.4"
   },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "*.js"
+  ],
+  "homepage": "https://github.com/npm/npm-registry-fetch#readme",
+  "keywords": [
+    "npm",
+    "registry",
+    "fetch"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "npm-registry-fetch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npm-registry-fetch.git"
+  },
+  "scripts": {
+    "eslint": "eslint",
+    "lint": "npm run npmclilint -- \"*.*js\" \"test/**/*.*js\"",
+    "lintfix": "npm run lint -- --fix",
+    "npmclilint": "npmcli-lint",
+    "postsnap": "npm run lintfix --",
+    "posttest": "npm run lint --",
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "test": "tap"
+  },
   "tap": {
     "check-coverage": true,
     "test-ignore": "test[\\\\/](util|cache)[\\\\/]"
   },
-  "engines": {
-    "node": ">=10"
-  }
+  "version": "11.0.0"
 }
Index: trip-planner-front/node_modules/npm-run-path/package.json
===================================================================
--- trip-planner-front/node_modules/npm-run-path/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npm-run-path/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "npm-run-path",
-  "version": "2.0.2",
-  "description": "Get your PATH prepended with locally installed binaries",
-  "license": "MIT",
-  "repository": "sindresorhus/npm-run-path",
+  "_args": [
+    [
+      "npm-run-path@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npm-run-path@2.0.2",
+  "_id": "npm-run-path@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+  "_location": "/npm-run-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npm-run-path@2.0.2",
+    "name": "npm-run-path",
+    "escapedName": "npm-run-path",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,22 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/npm-run-path/issues"
+  },
+  "dependencies": {
+    "path-key": "^2.0.0"
+  },
+  "description": "Get your PATH prepended with locally installed binaries",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/npm-run-path#readme",
   "keywords": [
     "npm",
@@ -33,11 +66,14 @@
     "executable"
   ],
-  "dependencies": {
-    "path-key": "^2.0.0"
+  "license": "MIT",
+  "name": "npm-run-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/npm-run-path.git"
   },
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "scripts": {
+    "test": "xo && ava"
   },
+  "version": "2.0.2",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/npmlog/package.json
===================================================================
--- trip-planner-front/node_modules/npmlog/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/npmlog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,39 @@
 {
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "name": "npmlog",
-  "description": "logger for npm",
-  "version": "4.1.2",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/npm/npmlog.git"
+  "_args": [
+    [
+      "npmlog@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "npmlog@4.1.2",
+  "_id": "npmlog@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+  "_location": "/npmlog",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "npmlog@4.1.2",
+    "name": "npmlog",
+    "escapedName": "npmlog",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
   },
-  "main": "log.js",
-  "files": [
-    "log.js"
+  "_requiredBy": [
+    "/node-gyp"
   ],
-  "scripts": {
-    "test": "standard && tap test/*.js"
+  "_resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/npmlog/issues"
   },
   "dependencies": {
@@ -21,8 +43,23 @@
     "set-blocking": "~2.0.0"
   },
+  "description": "logger for npm",
   "devDependencies": {
     "standard": "~7.1.2",
     "tap": "~5.7.3"
   },
-  "license": "ISC"
+  "files": [
+    "log.js"
+  ],
+  "homepage": "https://github.com/npm/npmlog#readme",
+  "license": "ISC",
+  "main": "log.js",
+  "name": "npmlog",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/npmlog.git"
+  },
+  "scripts": {
+    "test": "standard && tap test/*.js"
+  },
+  "version": "4.1.2"
 }
Index: trip-planner-front/node_modules/nth-check/package.json
===================================================================
--- trip-planner-front/node_modules/nth-check/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/nth-check/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,67 +1,99 @@
 {
+  "_args": [
+    [
+      "nth-check@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "nth-check@2.0.1",
+  "_id": "nth-check@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+  "_location": "/nth-check",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "nth-check@2.0.1",
     "name": "nth-check",
-    "version": "2.0.1",
-    "description": "Parses and compiles CSS nth-checks to highly optimized functions.",
-    "author": "Felix Boehm <me@feedic.com>",
-    "license": "BSD-2-Clause",
-    "sideEffects": false,
-    "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-    },
-    "directories": {
-        "lib": "lib/"
-    },
-    "main": "lib/index.js",
-    "types": "lib/index.d.ts",
-    "files": [
-        "lib/**/*"
-    ],
-    "scripts": {
-        "test": "npm run test:jest && npm run lint",
-        "test:jest": "jest",
-        "lint": "npm run lint:es && npm run lint:prettier",
-        "lint:es": "eslint .",
-        "lint:prettier": "npm run prettier -- --check",
-        "format": "npm run format:es && npm run format:prettier",
-        "format:es": "npm run lint:es -- --fix",
-        "format:prettier": "npm run prettier -- --write",
-        "prettier": "prettier '**/*.{ts,md,json,yml}'",
-        "build": "tsc",
-        "prepare": "npm run build"
-    },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/fb55/nth-check"
-    },
-    "keywords": [
-        "nth-child",
-        "nth",
-        "css"
-    ],
-    "bugs": {
-        "url": "https://github.com/fb55/nth-check/issues"
-    },
-    "homepage": "https://github.com/fb55/nth-check",
-    "dependencies": {
-        "boolbase": "^1.0.0"
-    },
-    "devDependencies": {
-        "@types/jest": "^27.0.1",
-        "@types/node": "^16.9.1",
-        "@typescript-eslint/eslint-plugin": "^4.31.1",
-        "@typescript-eslint/parser": "^4.31.1",
-        "eslint": "^7.32.0",
-        "eslint-config-prettier": "^8.3.0",
-        "jest": "^27.2.0",
-        "prettier": "^2.4.1",
-        "ts-jest": "^27.0.5",
-        "typescript": "^4.4.3"
-    },
-    "jest": {
-        "preset": "ts-jest",
-        "testEnvironment": "node"
-    },
-    "prettier": {
-        "tabWidth": 4
-    }
+    "escapedName": "nth-check",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/css-select"
+  ],
+  "_resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Felix Boehm",
+    "email": "me@feedic.com"
+  },
+  "bugs": {
+    "url": "https://github.com/fb55/nth-check/issues"
+  },
+  "dependencies": {
+    "boolbase": "^1.0.0"
+  },
+  "description": "Parses and compiles CSS nth-checks to highly optimized functions.",
+  "devDependencies": {
+    "@types/jest": "^27.0.1",
+    "@types/node": "^16.9.1",
+    "@typescript-eslint/eslint-plugin": "^4.31.1",
+    "@typescript-eslint/parser": "^4.31.1",
+    "eslint": "^7.32.0",
+    "eslint-config-prettier": "^8.3.0",
+    "jest": "^27.2.0",
+    "prettier": "^2.4.1",
+    "ts-jest": "^27.0.5",
+    "typescript": "^4.4.3"
+  },
+  "directories": {
+    "lib": "lib/"
+  },
+  "files": [
+    "lib/**/*"
+  ],
+  "funding": {
+    "url": "https://github.com/fb55/nth-check?sponsor=1"
+  },
+  "homepage": "https://github.com/fb55/nth-check",
+  "jest": {
+    "preset": "ts-jest",
+    "testEnvironment": "node"
+  },
+  "keywords": [
+    "nth-child",
+    "nth",
+    "css"
+  ],
+  "license": "BSD-2-Clause",
+  "main": "lib/index.js",
+  "name": "nth-check",
+  "prettier": {
+    "tabWidth": 4
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/fb55/nth-check.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "format": "npm run format:es && npm run format:prettier",
+    "format:es": "npm run lint:es -- --fix",
+    "format:prettier": "npm run prettier -- --write",
+    "lint": "npm run lint:es && npm run lint:prettier",
+    "lint:es": "eslint .",
+    "lint:prettier": "npm run prettier -- --check",
+    "prepare": "npm run build",
+    "prettier": "prettier '**/*.{ts,md,json,yml}'",
+    "test": "npm run test:jest && npm run lint",
+    "test:jest": "jest"
+  },
+  "sideEffects": false,
+  "types": "lib/index.d.ts",
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/num2fraction/package.json
===================================================================
--- trip-planner-front/node_modules/num2fraction/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/num2fraction/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,32 @@
 {
-  "name": "num2fraction",
-  "version": "1.2.2",
-  "description": "Convert number to fraction",
-  "main": "index.js",
+  "_args": [
+    [
+      "num2fraction@1.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "num2fraction@1.2.2",
+  "_id": "num2fraction@1.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+  "_location": "/num2fraction",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "num2fraction@1.2.2",
+    "name": "num2fraction",
+    "escapedName": "num2fraction",
+    "rawSpec": "1.2.2",
+    "saveSpec": null,
+    "fetchSpec": "1.2.2"
+  },
+  "_requiredBy": [
+    "/autoprefixer"
+  ],
+  "_resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+  "_spec": "1.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "yisi",
@@ -9,9 +34,12 @@
     "url": "http://iyunlu.com/view"
   },
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:yisibl/num2fraction.git"
+  "bugs": {
+    "url": "https://github.com/yisibl/num2fraction/issues"
   },
+  "description": "Convert number to fraction",
+  "devDependencies": {
+    "tape": "^3.0.0"
+  },
+  "homepage": "https://github.com/yisibl/num2fraction#readme",
   "keywords": [
     "fraction",
@@ -23,9 +51,14 @@
     "rational"
   ],
-  "devDependencies": {
-    "tape": "^3.0.0"
+  "license": "MIT",
+  "main": "index.js",
+  "name": "num2fraction",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/yisibl/num2fraction.git"
   },
   "scripts": {
     "test": "tape test/*.js"
-  }
+  },
+  "version": "1.2.2"
 }
Index: trip-planner-front/node_modules/number-is-nan/package.json
===================================================================
--- trip-planner-front/node_modules/number-is-nan/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/number-is-nan/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "number-is-nan",
-  "version": "1.0.1",
-  "description": "ES2015 Number.isNaN() ponyfill",
-  "license": "MIT",
-  "repository": "sindresorhus/number-is-nan",
+  "_args": [
+    [
+      "number-is-nan@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "number-is-nan@1.0.1",
+  "_id": "number-is-nan@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+  "_location": "/number-is-nan",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "number-is-nan@1.0.1",
+    "name": "number-is-nan",
+    "escapedName": "number-is-nan",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/gauge/is-fullwidth-code-point"
+  ],
+  "_resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,18 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/number-is-nan/issues"
+  },
+  "description": "ES2015 Number.isNaN() ponyfill",
+  "devDependencies": {
+    "ava": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/number-is-nan#readme",
   "keywords": [
     "es2015",
@@ -30,6 +59,13 @@
     "not"
   ],
-  "devDependencies": {
-    "ava": "*"
-  }
+  "license": "MIT",
+  "name": "number-is-nan",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/number-is-nan.git"
+  },
+  "scripts": {
+    "test": "ava"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/oauth-sign/package.json
===================================================================
--- trip-planner-front/node_modules/oauth-sign/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/oauth-sign/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,60 @@
 {
-  "author": "Mikeal Rogers <mikeal.rogers@gmail.com> (http://www.futurealoof.com)",
-  "name": "oauth-sign",
+  "_args": [
+    [
+      "oauth-sign@0.9.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "oauth-sign@0.9.0",
+  "_id": "oauth-sign@0.9.0",
+  "_inBundle": false,
+  "_integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+  "_location": "/oauth-sign",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "oauth-sign@0.9.0",
+    "name": "oauth-sign",
+    "escapedName": "oauth-sign",
+    "rawSpec": "0.9.0",
+    "saveSpec": null,
+    "fetchSpec": "0.9.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+  "_spec": "0.9.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mikeal Rogers",
+    "email": "mikeal.rogers@gmail.com",
+    "url": "http://www.futurealoof.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mikeal/oauth-sign/issues"
+  },
+  "dependencies": {},
   "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.",
-  "version": "0.9.0",
-  "license": "Apache-2.0",
-  "repository": {
-    "url": "https://github.com/mikeal/oauth-sign"
+  "devDependencies": {},
+  "engines": {
+    "node": "*"
   },
-  "main": "index.js",
   "files": [
     "index.js"
   ],
-  "dependencies": {},
-  "devDependencies": {},
+  "homepage": "https://github.com/mikeal/oauth-sign#readme",
+  "license": "Apache-2.0",
+  "main": "index.js",
+  "name": "oauth-sign",
   "optionalDependencies": {},
-  "engines": {
-    "node": "*"
+  "repository": {
+    "url": "git+https://github.com/mikeal/oauth-sign.git"
   },
   "scripts": {
     "test": "node test.js"
-  }
+  },
+  "version": "0.9.0"
 }
Index: trip-planner-front/node_modules/object-assign/package.json
===================================================================
--- trip-planner-front/node_modules/object-assign/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-assign/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,34 @@
 {
-  "name": "object-assign",
-  "version": "4.1.1",
-  "description": "ES2015 `Object.assign()` ponyfill",
-  "license": "MIT",
-  "repository": "sindresorhus/object-assign",
+  "_args": [
+    [
+      "object-assign@4.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object-assign@4.1.1",
+  "_id": "object-assign@4.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+  "_location": "/object-assign",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object-assign@4.1.1",
+    "name": "object-assign",
+    "escapedName": "object-assign",
+    "rawSpec": "4.1.1",
+    "saveSpec": null,
+    "fetchSpec": "4.1.1"
+  },
+  "_requiredBy": [
+    "/cors",
+    "/del/globby",
+    "/gauge"
+  ],
+  "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+  "_spec": "4.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,14 +36,21 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/object-assign/issues"
+  },
+  "description": "ES2015 `Object.assign()` ponyfill",
+  "devDependencies": {
+    "ava": "^0.16.0",
+    "lodash": "^4.16.4",
+    "matcha": "^0.7.0",
+    "xo": "^0.16.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava",
-    "bench": "matcha bench.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/object-assign#readme",
   "keywords": [
     "object",
@@ -34,9 +67,14 @@
     "browser"
   ],
-  "devDependencies": {
-    "ava": "^0.16.0",
-    "lodash": "^4.16.4",
-    "matcha": "^0.7.0",
-    "xo": "^0.16.0"
-  }
+  "license": "MIT",
+  "name": "object-assign",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/object-assign.git"
+  },
+  "scripts": {
+    "bench": "matcha bench.js",
+    "test": "xo && ava"
+  },
+  "version": "4.1.1"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/define-property/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/define-property/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/define-property/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,54 @@
 {
-  "name": "define-property",
-  "description": "Define a non-enumerable property on an object.",
-  "version": "0.2.5",
-  "homepage": "https://github.com/jonschlinkert/define-property",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/define-property",
+  "_args": [
+    [
+      "define-property@0.2.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "define-property@0.2.5",
+  "_id": "define-property@0.2.5",
+  "_inBundle": false,
+  "_integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+  "_location": "/object-copy/define-property",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "define-property@0.2.5",
+    "name": "define-property",
+    "escapedName": "define-property",
+    "rawSpec": "0.2.5",
+    "saveSpec": null,
+    "fetchSpec": "0.2.5"
+  },
+  "_requiredBy": [
+    "/object-copy"
+  ],
+  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+  "_spec": "0.2.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/define-property/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "dependencies": {
+    "is-descriptor": "^0.1.0"
   },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Define a non-enumerable property on an object.",
   "devDependencies": {
     "mocha": "*",
     "should": "^7.0.4"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/define-property",
   "keywords": [
     "define",
@@ -36,4 +63,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "define-property",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/define-property.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -46,6 +83,4 @@
     }
   },
-  "dependencies": {
-    "is-descriptor": "^0.1.0"
-  }
+  "version": "0.2.5"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,54 @@
 {
-  "name": "is-accessor-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-accessor-descriptor",
+  "_args": [
+    [
+      "is-accessor-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-accessor-descriptor@0.1.6",
+  "_id": "is-accessor-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+  "_location": "/object-copy/is-accessor-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-accessor-descriptor@0.1.6",
+    "name": "is-accessor-descriptor",
+    "escapedName": "is-accessor-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/object-copy/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +69,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-accessor-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -58,4 +92,5 @@
     ],
     "layout": "default"
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/is-data-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/is-data-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/is-data-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,54 @@
 {
-  "name": "is-data-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
-  "version": "0.1.4",
-  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/is-data-descriptor",
+  "_args": [
+    [
+      "is-data-descriptor@0.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-data-descriptor@0.1.4",
+  "_id": "is-data-descriptor@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+  "_location": "/object-copy/is-data-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-data-descriptor@0.1.4",
+    "name": "is-data-descriptor",
+    "escapedName": "is-data-descriptor",
+    "rawSpec": "0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "0.1.4"
+  },
+  "_requiredBy": [
+    "/object-copy/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+  "_spec": "0.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-data-descriptor/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "kind-of": "^3.0.2"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-data-descriptor",
   "keywords": [
     "accessor",
@@ -45,4 +69,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-data-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -57,4 +91,5 @@
       "gulp-format-md"
     ]
-  }
+  },
+  "version": "0.1.4"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,74 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "5.1.0",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "James (https://twitter.com/aretecode)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)",
-    "tunnckoCore (https://i.am.charlike.online)"
+  "_args": [
+    [
+      "kind-of@5.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@5.1.0",
+  "_id": "kind-of@5.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+  "_location": "/object-copy/is-descriptor/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@5.1.0",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "5.1.0",
+    "saveSpec": null,
+    "fetchSpec": "5.1.0"
+  },
+  "_requiredBy": [
+    "/object-copy/is-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+  "_spec": "5.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "James",
+      "url": "https://twitter.com/aretecode"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    },
+    {
+      "name": "tunnckoCore",
+      "url": "https://i.am.charlike.online"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -41,4 +81,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -64,4 +111,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -88,4 +146,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "5.1.0"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/is-descriptor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,52 @@
 {
-  "name": "is-descriptor",
-  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
-  "version": "0.1.6",
-  "homepage": "https://github.com/jonschlinkert/is-descriptor",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "Brian Woodward (https://twitter.com/doowb)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "(https://github.com/wtgtybhertgeghgtwtg)"
+  "_args": [
+    [
+      "is-descriptor@0.1.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/is-descriptor",
+  "_development": true,
+  "_from": "is-descriptor@0.1.6",
+  "_id": "is-descriptor@0.1.6",
+  "_inBundle": false,
+  "_integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+  "_location": "/object-copy/is-descriptor",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-descriptor@0.1.6",
+    "name": "is-descriptor",
+    "escapedName": "is-descriptor",
+    "rawSpec": "0.1.6",
+    "saveSpec": null,
+    "fetchSpec": "0.1.6"
+  },
+  "_requiredBy": [
+    "/object-copy/define-property"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+  "_spec": "0.1.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/is-descriptor/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
   "dependencies": {
     "is-accessor-descriptor": "^0.1.6",
@@ -30,8 +54,16 @@
     "kind-of": "^5.0.0"
   },
+  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
     "mocha": "^3.4.2"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-descriptor",
   "keywords": [
     "accessor",
@@ -52,4 +84,14 @@
     "value"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-descriptor",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-descriptor.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -72,4 +114,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "0.1.6"
 }
Index: trip-planner-front/node_modules/object-copy/node_modules/kind-of/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/node_modules/kind-of/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/node_modules/kind-of/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,71 @@
 {
-  "name": "kind-of",
-  "description": "Get the native type of a value.",
-  "version": "3.2.2",
-  "homepage": "https://github.com/jonschlinkert/kind-of",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "contributors": [
-    "David Fox-Powell (https://dtothefp.github.io/me)",
-    "Jon Schlinkert (http://twitter.com/jonschlinkert)",
-    "Ken Sheedlo (kensheedlo.com)",
-    "laggingreflex (https://github.com/laggingreflex)",
-    "Miguel Mota (https://miguelmota.com)",
-    "Peter deHaan (http://about.me/peterdehaan)"
+  "_args": [
+    [
+      "kind-of@3.2.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": "jonschlinkert/kind-of",
+  "_development": true,
+  "_from": "kind-of@3.2.2",
+  "_id": "kind-of@3.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+  "_location": "/object-copy/kind-of",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "kind-of@3.2.2",
+    "name": "kind-of",
+    "escapedName": "kind-of",
+    "rawSpec": "3.2.2",
+    "saveSpec": null,
+    "fetchSpec": "3.2.2"
+  },
+  "_requiredBy": [
+    "/object-copy",
+    "/object-copy/is-accessor-descriptor",
+    "/object-copy/is-data-descriptor"
+  ],
+  "_resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+  "_spec": "3.2.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/kind-of/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
+  "contributors": [
+    {
+      "name": "David Fox-Powell",
+      "url": "https://dtothefp.github.io/me"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Ken Sheedlo",
+      "url": "kensheedlo.com"
+    },
+    {
+      "name": "laggingreflex",
+      "url": "https://github.com/laggingreflex"
+    },
+    {
+      "name": "Miguel Mota",
+      "url": "https://miguelmota.com"
+    },
+    {
+      "name": "Peter deHaan",
+      "url": "http://about.me/peterdehaan"
+    }
   ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha",
-    "prepublish": "browserify -o browser.js -e index.js -s index --bare"
-  },
   "dependencies": {
     "is-buffer": "^1.1.5"
   },
+  "description": "Get the native type of a value.",
   "devDependencies": {
     "ansi-bold": "^0.1.1",
@@ -42,4 +78,11 @@
     "typeof": "^1.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/kind-of",
   "keywords": [
     "arguments",
@@ -65,4 +108,15 @@
     "types"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "kind-of",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/kind-of.git"
+  },
+  "scripts": {
+    "prepublish": "browserify -o browser.js -e index.js -s index --bare",
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -87,4 +141,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "3.2.2"
 }
Index: trip-planner-front/node_modules/object-copy/package.json
===================================================================
--- trip-planner-front/node_modules/object-copy/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-copy/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,22 +1,40 @@
 {
-  "name": "object-copy",
-  "description": "Copy static properties, prototype properties, and descriptors from one object to another.",
-  "version": "0.1.0",
-  "homepage": "https://github.com/jonschlinkert/object-copy",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/object-copy",
+  "_args": [
+    [
+      "object-copy@0.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object-copy@0.1.0",
+  "_id": "object-copy@0.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+  "_location": "/object-copy",
+  "_phantomChildren": {
+    "is-buffer": "1.1.6"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object-copy@0.1.0",
+    "name": "object-copy",
+    "escapedName": "object-copy",
+    "rawSpec": "0.1.0",
+    "saveSpec": null,
+    "fetchSpec": "0.1.0"
+  },
+  "_requiredBy": [
+    "/static-extend"
+  ],
+  "_resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+  "_spec": "0.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/object-copy/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
@@ -25,12 +43,30 @@
     "kind-of": "^3.0.3"
   },
+  "description": "Copy static properties, prototype properties, and descriptors from one object to another.",
   "devDependencies": {
     "gulp-format-md": "*",
     "mocha": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/object-copy",
   "keywords": [
     "copy",
     "object"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object-copy",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/object-copy.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "layout": "default",
@@ -44,4 +80,5 @@
       "verb"
     ]
-  }
+  },
+  "version": "0.1.0"
 }
Index: trip-planner-front/node_modules/object-is/package.json
===================================================================
--- trip-planner-front/node_modules/object-is/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-is/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,87 +1,118 @@
 {
-	"name": "object-is",
-	"version": "1.1.5",
-	"description": "ES2015-compliant shim for Object.is - differentiates between -0 and +0",
-	"author": "Jordan Harband",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"prepublish": "safe-publish-latest",
-		"pretest": "npm run lint",
-		"tests-only": "nyc tape 'test/**/*.js'",
-		"test": "npm run tests-only",
-		"posttest": "aud --production",
-		"lint": "eslint .",
-		"postlint": "es-shim-api --bound",
-		"version": "auto-changelog && git add CHANGELOG.md",
-		"postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/es-shims/object-is.git"
-	},
-	"bugs": {
-		"url": "https://github.com/es-shims/object-is/issues"
-	},
-	"homepage": "https://github.com/es-shims/object-is",
-	"keywords": [
-		"is",
-		"Object.is",
-		"equality",
-		"sameValueZero",
-		"ES6",
-		"ES2015",
-		"shim",
-		"polyfill",
-		"es-shim API"
-	],
-	"dependencies": {
-		"call-bind": "^1.0.2",
-		"define-properties": "^1.1.3"
-	},
-	"devDependencies": {
-		"@es-shims/api": "^2.1.2",
-		"@ljharb/eslint-config": "^17.5.1",
-		"aud": "^1.1.4",
-		"auto-changelog": "^2.2.1",
-		"eslint": "^7.20.0",
-		"functions-have-names": "^1.2.2",
-		"has-symbols": "^1.0.1",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"tape": "^5.2.0"
-	},
-	"testling": {
-		"files": "test.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..12.0",
-			"opera/15.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	},
-	"auto-changelog": {
-		"output": "CHANGELOG.md",
-		"template": "keepachangelog",
-		"unreleased": false,
-		"commitLimit": false,
-		"backfillLimit": false,
-		"hideCredit": true
-	}
+  "_args": [
+    [
+      "object-is@1.1.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object-is@1.1.5",
+  "_id": "object-is@1.1.5",
+  "_inBundle": false,
+  "_integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+  "_location": "/object-is",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object-is@1.1.5",
+    "name": "object-is",
+    "escapedName": "object-is",
+    "rawSpec": "1.1.5",
+    "saveSpec": null,
+    "fetchSpec": "1.1.5"
+  },
+  "_requiredBy": [
+    "/deep-equal"
+  ],
+  "_resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+  "_spec": "1.1.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband"
+  },
+  "auto-changelog": {
+    "output": "CHANGELOG.md",
+    "template": "keepachangelog",
+    "unreleased": false,
+    "commitLimit": false,
+    "backfillLimit": false,
+    "hideCredit": true
+  },
+  "bugs": {
+    "url": "https://github.com/es-shims/object-is/issues"
+  },
+  "dependencies": {
+    "call-bind": "^1.0.2",
+    "define-properties": "^1.1.3"
+  },
+  "description": "ES2015-compliant shim for Object.is - differentiates between -0 and +0",
+  "devDependencies": {
+    "@es-shims/api": "^2.1.2",
+    "@ljharb/eslint-config": "^17.5.1",
+    "aud": "^1.1.4",
+    "auto-changelog": "^2.2.1",
+    "eslint": "^7.20.0",
+    "functions-have-names": "^1.2.2",
+    "has-symbols": "^1.0.1",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "tape": "^5.2.0"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/es-shims/object-is",
+  "keywords": [
+    "is",
+    "Object.is",
+    "equality",
+    "sameValueZero",
+    "ES6",
+    "ES2015",
+    "shim",
+    "polyfill",
+    "es-shim API"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object-is",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/es-shims/object-is.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "postlint": "es-shim-api --bound",
+    "posttest": "aud --production",
+    "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"",
+    "prepublish": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run tests-only",
+    "tests-only": "nyc tape 'test/**/*.js'",
+    "version": "auto-changelog && git add CHANGELOG.md"
+  },
+  "testling": {
+    "files": "test.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..12.0",
+      "opera/15.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.1.5"
 }
Index: trip-planner-front/node_modules/object-keys/package.json
===================================================================
--- trip-planner-front/node_modules/object-keys/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-keys/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,88 +1,123 @@
 {
-	"name": "object-keys",
-	"version": "1.1.1",
-	"author": {
-		"name": "Jordan Harband",
-		"email": "ljharb@gmail.com",
-		"url": "http://ljharb.codes"
-	},
-	"contributors": [
-		{
-			"name": "Jordan Harband",
-			"email": "ljharb@gmail.com",
-			"url": "http://ljharb.codes"
-		},
-		{
-			"name": "Raynos",
-			"email": "raynos2@gmail.com"
-		},
-		{
-			"name": "Nathan Rajlich",
-			"email": "nathan@tootallnate.net"
-		},
-		{
-			"name": "Ivan Starkov",
-			"email": "istarkov@gmail.com"
-		},
-		{
-			"name": "Gary Katsevman",
-			"email": "git@gkatsev.com"
-		}
-	],
-	"description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/es-shims/es5-shim",
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"pretest": "npm run --silent lint",
-		"test": "npm run --silent tests-only",
-		"posttest": "npm run --silent audit",
-		"tests-only": "node test/index.js",
-		"coverage": "covert test/*.js",
-		"coverage-quiet": "covert test/*.js --quiet",
-		"lint": "eslint .",
-		"preaudit": "npm install --package-lock --package-lock-only",
-		"audit": "npm audit",
-		"postaudit": "rm package-lock.json"
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/ljharb/object-keys.git"
-	},
-	"keywords": [
-		"Object.keys",
-		"keys",
-		"ES5",
-		"shim"
-	],
-	"dependencies": {},
-	"devDependencies": {
-		"@ljharb/eslint-config": "^13.1.1",
-		"covert": "^1.1.1",
-		"eslint": "^5.13.0",
-		"foreach": "^2.0.5",
-		"indexof": "^0.0.1",
-		"is": "^3.3.0",
-		"tape": "^4.9.2"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	}
+  "_args": [
+    [
+      "object-keys@1.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object-keys@1.1.1",
+  "_id": "object-keys@1.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+  "_location": "/object-keys",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object-keys@1.1.1",
+    "name": "object-keys",
+    "escapedName": "object-keys",
+    "rawSpec": "1.1.1",
+    "saveSpec": null,
+    "fetchSpec": "1.1.1"
+  },
+  "_requiredBy": [
+    "/deep-equal",
+    "/define-properties",
+    "/object.assign"
+  ],
+  "_resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+  "_spec": "1.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband",
+    "email": "ljharb@gmail.com",
+    "url": "http://ljharb.codes"
+  },
+  "bugs": {
+    "url": "https://github.com/ljharb/object-keys/issues"
+  },
+  "contributors": [
+    {
+      "name": "Jordan Harband",
+      "email": "ljharb@gmail.com",
+      "url": "http://ljharb.codes"
+    },
+    {
+      "name": "Raynos",
+      "email": "raynos2@gmail.com"
+    },
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net"
+    },
+    {
+      "name": "Ivan Starkov",
+      "email": "istarkov@gmail.com"
+    },
+    {
+      "name": "Gary Katsevman",
+      "email": "git@gkatsev.com"
+    }
+  ],
+  "dependencies": {},
+  "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/es-shims/es5-shim",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^13.1.1",
+    "covert": "^1.1.1",
+    "eslint": "^5.13.0",
+    "foreach": "^2.0.5",
+    "indexof": "^0.0.1",
+    "is": "^3.3.0",
+    "tape": "^4.9.2"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "homepage": "https://github.com/ljharb/object-keys#readme",
+  "keywords": [
+    "Object.keys",
+    "keys",
+    "ES5",
+    "shim"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object-keys",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/ljharb/object-keys.git"
+  },
+  "scripts": {
+    "audit": "npm audit",
+    "coverage": "covert test/*.js",
+    "coverage-quiet": "covert test/*.js --quiet",
+    "lint": "eslint .",
+    "postaudit": "rm package-lock.json",
+    "posttest": "npm run --silent audit",
+    "preaudit": "npm install --package-lock --package-lock-only",
+    "pretest": "npm run --silent lint",
+    "test": "npm run --silent tests-only",
+    "tests-only": "node test/index.js"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "1.1.1"
 }
Index: trip-planner-front/node_modules/object-visit/package.json
===================================================================
--- trip-planner-front/node_modules/object-visit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object-visit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,44 @@
 {
-  "name": "object-visit",
-  "description": "Call a specified method on each value in the given object.",
-  "version": "1.0.1",
-  "homepage": "https://github.com/jonschlinkert/object-visit",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/object-visit",
+  "_args": [
+    [
+      "object-visit@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object-visit@1.0.1",
+  "_id": "object-visit@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+  "_location": "/object-visit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object-visit@1.0.1",
+    "name": "object-visit",
+    "escapedName": "object-visit",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/collection-visit",
+    "/map-visit"
+  ],
+  "_resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/object-visit/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "isobject": "^3.0.0"
   },
+  "description": "Call a specified method on each value in the given object.",
   "devDependencies": {
     "gulp": "^3.9.1",
@@ -31,4 +49,11 @@
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/object-visit",
   "keywords": [
     "context",
@@ -42,4 +67,14 @@
     "visitor"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object-visit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/object-visit.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -62,4 +97,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/object.assign/package.json
===================================================================
--- trip-planner-front/node_modules/object.assign/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object.assign/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,83 +1,118 @@
 {
-	"name": "object.assign",
-	"version": "4.1.2",
-	"author": "Jordan Harband",
-	"funding": {
-		"url": "https://github.com/sponsors/ljharb"
-	},
-	"description": "ES6 spec-compliant Object.assign shim. From https://github.com/es-shims/es6-shim",
-	"license": "MIT",
-	"main": "index.js",
-	"scripts": {
-		"pretest": "npm run lint && es-shim-api --bound",
-		"test": "npm run tests-only && npm run test:ses",
-		"posttest": "aud --production",
-		"tests-only": "npm run test:implementation && npm run test:shim",
-		"test:native": "nyc node test/native",
-		"test:shim": "nyc node test/shimmed",
-		"test:implementation": "nyc node test",
-		"test:ses": "node test/ses-compat",
-		"lint": "eslint .",
-		"build": "mkdir -p dist && browserify browserShim.js > dist/browser.js",
-		"prepublish": "safe-publish-latest && npm run build"
-	},
-	"repository": {
-		"type": "git",
-		"url": "git://github.com/ljharb/object.assign.git"
-	},
-	"keywords": [
-		"Object.assign",
-		"assign",
-		"ES6",
-		"extend",
-		"$.extend",
-		"jQuery",
-		"_.extend",
-		"Underscore",
-		"es-shim API",
-		"polyfill",
-		"shim"
-	],
-	"dependencies": {
-		"call-bind": "^1.0.0",
-		"define-properties": "^1.1.3",
-		"has-symbols": "^1.0.1",
-		"object-keys": "^1.1.1"
-	},
-	"devDependencies": {
-		"@es-shims/api": "^2.1.2",
-		"@ljharb/eslint-config": "^17.2.0",
-		"aud": "^1.1.2",
-		"browserify": "^16.5.2",
-		"eslint": "^7.12.1",
-		"for-each": "^0.3.3",
-		"functions-have-names": "^1.2.1",
-		"has": "^1.0.3",
-		"is": "^3.3.0",
-		"nyc": "^10.3.2",
-		"safe-publish-latest": "^1.1.4",
-		"ses": "^0.10.4",
-		"tape": "^5.0.1"
-	},
-	"testling": {
-		"files": "test/index.js",
-		"browsers": [
-			"iexplore/6.0..latest",
-			"firefox/3.0..6.0",
-			"firefox/15.0..latest",
-			"firefox/nightly",
-			"chrome/4.0..10.0",
-			"chrome/20.0..latest",
-			"chrome/canary",
-			"opera/10.0..latest",
-			"opera/next",
-			"safari/4.0..latest",
-			"ipad/6.0..latest",
-			"iphone/6.0..latest",
-			"android-browser/4.2"
-		]
-	},
-	"engines": {
-		"node": ">= 0.4"
-	}
+  "_args": [
+    [
+      "object.assign@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object.assign@4.1.2",
+  "_id": "object.assign@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+  "_location": "/object.assign",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object.assign@4.1.2",
+    "name": "object.assign",
+    "escapedName": "object.assign",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/babel-plugin-dynamic-import-node"
+  ],
+  "_resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jordan Harband"
+  },
+  "bugs": {
+    "url": "https://github.com/ljharb/object.assign/issues"
+  },
+  "dependencies": {
+    "call-bind": "^1.0.0",
+    "define-properties": "^1.1.3",
+    "has-symbols": "^1.0.1",
+    "object-keys": "^1.1.1"
+  },
+  "description": "ES6 spec-compliant Object.assign shim. From https://github.com/es-shims/es6-shim",
+  "devDependencies": {
+    "@es-shims/api": "^2.1.2",
+    "@ljharb/eslint-config": "^17.2.0",
+    "aud": "^1.1.2",
+    "browserify": "^16.5.2",
+    "eslint": "^7.12.1",
+    "for-each": "^0.3.3",
+    "functions-have-names": "^1.2.1",
+    "has": "^1.0.3",
+    "is": "^3.3.0",
+    "nyc": "^10.3.2",
+    "safe-publish-latest": "^1.1.4",
+    "ses": "^0.10.4",
+    "tape": "^5.0.1"
+  },
+  "engines": {
+    "node": ">= 0.4"
+  },
+  "funding": {
+    "url": "https://github.com/sponsors/ljharb"
+  },
+  "homepage": "https://github.com/ljharb/object.assign#readme",
+  "keywords": [
+    "Object.assign",
+    "assign",
+    "ES6",
+    "extend",
+    "$.extend",
+    "jQuery",
+    "_.extend",
+    "Underscore",
+    "es-shim API",
+    "polyfill",
+    "shim"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object.assign",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/ljharb/object.assign.git"
+  },
+  "scripts": {
+    "build": "mkdir -p dist && browserify browserShim.js > dist/browser.js",
+    "lint": "eslint .",
+    "posttest": "aud --production",
+    "prepublish": "safe-publish-latest && npm run build",
+    "pretest": "npm run lint && es-shim-api --bound",
+    "test": "npm run tests-only && npm run test:ses",
+    "test:implementation": "nyc node test",
+    "test:native": "nyc node test/native",
+    "test:ses": "node test/ses-compat",
+    "test:shim": "nyc node test/shimmed",
+    "tests-only": "npm run test:implementation && npm run test:shim"
+  },
+  "testling": {
+    "files": "test/index.js",
+    "browsers": [
+      "iexplore/6.0..latest",
+      "firefox/3.0..6.0",
+      "firefox/15.0..latest",
+      "firefox/nightly",
+      "chrome/4.0..10.0",
+      "chrome/20.0..latest",
+      "chrome/canary",
+      "opera/10.0..latest",
+      "opera/next",
+      "safari/4.0..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2"
+    ]
+  },
+  "version": "4.1.2"
 }
Index: trip-planner-front/node_modules/object.pick/package.json
===================================================================
--- trip-planner-front/node_modules/object.pick/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/object.pick/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,45 @@
 {
-  "name": "object.pick",
-  "description": "Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore.",
-  "version": "1.3.0",
-  "homepage": "https://github.com/jonschlinkert/object.pick",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/object.pick",
+  "_args": [
+    [
+      "object.pick@1.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "object.pick@1.3.0",
+  "_id": "object.pick@1.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+  "_location": "/object.pick",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "object.pick@1.3.0",
+    "name": "object.pick",
+    "escapedName": "object.pick",
+    "rawSpec": "1.3.0",
+    "saveSpec": null,
+    "fetchSpec": "1.3.0"
+  },
+  "_requiredBy": [
+    "/http-proxy-middleware/micromatch",
+    "/nanomatch",
+    "/webpack-dev-server/micromatch"
+  ],
+  "_resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+  "_spec": "1.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/object.pick/issues"
-  },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "dependencies": {
     "isobject": "^3.0.1"
   },
+  "description": "Returns a filtered copy of an object with only the specified keys, similar to `_.pick` from lodash / underscore.",
   "devDependencies": {
     "gulp-format-md": "^1.0.0",
@@ -28,8 +47,25 @@
     "vinyl": "^2.0.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/object.pick",
   "keywords": [
     "object",
     "pick"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "object.pick",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/object.pick.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "run": true,
@@ -57,4 +93,5 @@
       "reflinks": true
     }
-  }
+  },
+  "version": "1.3.0"
 }
Index: trip-planner-front/node_modules/obuf/package.json
===================================================================
--- trip-planner-front/node_modules/obuf/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/obuf/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,45 @@
 {
-  "name": "obuf",
-  "version": "1.1.2",
-  "description": "",
-  "main": "index.js",
-  "scripts": {
-    "test": "mocha test/**/*-test.js"
+  "_args": [
+    [
+      "obuf@1.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "obuf@1.1.2",
+  "_id": "obuf@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+  "_location": "/obuf",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "obuf@1.1.2",
+    "name": "obuf",
+    "escapedName": "obuf",
+    "rawSpec": "1.1.2",
+    "saveSpec": null,
+    "fetchSpec": "1.1.2"
   },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:indutny/offset-buffer"
+  "_requiredBy": [
+    "/hpack.js",
+    "/spdy-transport"
+  ],
+  "_resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+  "_spec": "1.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Fedor Indutny",
+    "email": "fedor@indutny.com"
   },
+  "bugs": {
+    "url": "https://github.com/indutny/offset-buffer/issues"
+  },
+  "description": "Byte buffer specialized for data in chunks with special cases for dropping bytes in the front, merging bytes in to various integer types and abandoning buffer without penalty for previous chunk merges.",
+  "devDependencies": {
+    "mocha": "^1.21.4"
+  },
+  "homepage": "https://github.com/indutny/offset-buffer",
   "keywords": [
     "Offset",
@@ -16,12 +47,14 @@
     "reader"
   ],
-  "author": "Fedor Indutny <fedor@indutny.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/indutny/offset-buffer/issues"
+  "main": "index.js",
+  "name": "obuf",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/indutny/offset-buffer.git"
   },
-  "homepage": "https://github.com/indutny/offset-buffer",
-  "devDependencies": {
-    "mocha": "^1.21.4"
-  }
+  "scripts": {
+    "test": "mocha test/**/*-test.js"
+  },
+  "version": "1.1.2"
 }
Index: trip-planner-front/node_modules/on-finished/package.json
===================================================================
--- trip-planner-front/node_modules/on-finished/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/on-finished/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,53 @@
 {
-  "name": "on-finished",
-  "description": "Execute a callback when a request closes, finishes, or errors",
-  "version": "2.3.0",
+  "_args": [
+    [
+      "on-finished@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "on-finished@2.3.0",
+  "_id": "on-finished@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+  "_location": "/on-finished",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "on-finished@2.3.0",
+    "name": "on-finished",
+    "escapedName": "on-finished",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/express",
+    "/finalhandler",
+    "/send"
+  ],
+  "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/jshttp/on-finished/issues"
+  },
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
-  "license": "MIT",
-  "repository": "jshttp/on-finished",
   "dependencies": {
     "ee-first": "1.1.1"
   },
+  "description": "Execute a callback when a request closes, finishes, or errors",
   "devDependencies": {
     "istanbul": "0.3.9",
@@ -24,8 +62,16 @@
     "index.js"
   ],
+  "homepage": "https://github.com/jshttp/on-finished#readme",
+  "license": "MIT",
+  "name": "on-finished",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/on-finished.git"
+  },
   "scripts": {
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
-  }
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/on-headers/package.json
===================================================================
--- trip-planner-front/node_modules/on-headers/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/on-headers/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,40 @@
 {
-  "name": "on-headers",
+  "_args": [
+    [
+      "on-headers@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "on-headers@1.0.2",
+  "_id": "on-headers@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+  "_location": "/on-headers",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "on-headers@1.0.2",
+    "name": "on-headers",
+    "escapedName": "on-headers",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/compression"
+  ],
+  "_resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/on-headers/issues"
+  },
   "description": "Execute a listener when a response is about to write headers",
-  "version": "1.0.2",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "keywords": [
-    "event",
-    "headers",
-    "http",
-    "onheaders"
-  ],
-  "repository": "jshttp/on-headers",
   "devDependencies": {
     "eslint": "5.14.1",
@@ -24,4 +49,7 @@
     "supertest": "3.4.2"
   },
+  "engines": {
+    "node": ">= 0.8"
+  },
   "files": [
     "LICENSE",
@@ -30,6 +58,16 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8"
+  "homepage": "https://github.com/jshttp/on-headers#readme",
+  "keywords": [
+    "event",
+    "headers",
+    "http",
+    "onheaders"
+  ],
+  "license": "MIT",
+  "name": "on-headers",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/on-headers.git"
   },
   "scripts": {
@@ -39,4 +77,5 @@
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/once/package.json
===================================================================
--- trip-planner-front/node_modules/once/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/once/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,57 @@
 {
-  "name": "once",
-  "version": "1.4.0",
-  "description": "Run a function exactly one time",
-  "main": "once.js",
-  "directories": {
-    "test": "test"
+  "_args": [
+    [
+      "once@1.4.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "once@1.4.0",
+  "_id": "once@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+  "_location": "/once",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "once@1.4.0",
+    "name": "once",
+    "escapedName": "once",
+    "rawSpec": "1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "1.4.0"
+  },
+  "_requiredBy": [
+    "/end-of-stream",
+    "/glob",
+    "/inflight",
+    "/pump"
+  ],
+  "_resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+  "_spec": "1.4.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/once/issues"
   },
   "dependencies": {
     "wrappy": "1"
   },
+  "description": "Run a function exactly one time",
   "devDependencies": {
     "tap": "^7.0.1"
   },
-  "scripts": {
-    "test": "tap test/*.js"
+  "directories": {
+    "test": "test"
   },
   "files": [
     "once.js"
   ],
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/isaacs/once"
-  },
+  "homepage": "https://github.com/isaacs/once#readme",
   "keywords": [
     "once",
@@ -29,5 +60,14 @@
     "single"
   ],
-  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
-  "license": "ISC"
+  "license": "ISC",
+  "main": "once.js",
+  "name": "once",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/once.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "1.4.0"
 }
Index: trip-planner-front/node_modules/onetime/package.json
===================================================================
--- trip-planner-front/node_modules/onetime/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/onetime/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,79 @@
 {
-	"name": "onetime",
-	"version": "5.1.2",
-	"description": "Ensure a function is only called once",
-	"license": "MIT",
-	"repository": "sindresorhus/onetime",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"once",
-		"function",
-		"one",
-		"onetime",
-		"func",
-		"fn",
-		"single",
-		"call",
-		"called",
-		"prevent"
-	],
-	"dependencies": {
-		"mimic-fn": "^2.1.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "onetime@5.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "onetime@5.1.2",
+  "_id": "onetime@5.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+  "_location": "/onetime",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "onetime@5.1.2",
+    "name": "onetime",
+    "escapedName": "onetime",
+    "rawSpec": "5.1.2",
+    "saveSpec": null,
+    "fetchSpec": "5.1.2"
+  },
+  "_requiredBy": [
+    "/restore-cursor"
+  ],
+  "_resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+  "_spec": "5.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/onetime/issues"
+  },
+  "dependencies": {
+    "mimic-fn": "^2.1.0"
+  },
+  "description": "Ensure a function is only called once",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/onetime#readme",
+  "keywords": [
+    "once",
+    "function",
+    "one",
+    "onetime",
+    "func",
+    "fn",
+    "single",
+    "call",
+    "called",
+    "prevent"
+  ],
+  "license": "MIT",
+  "name": "onetime",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/onetime.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "5.1.2"
 }
Index: trip-planner-front/node_modules/open/package.json
===================================================================
--- trip-planner-front/node_modules/open/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/open/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,61 +1,98 @@
 {
-	"name": "open",
-	"version": "8.2.1",
-	"description": "Open stuff like URLs, files, executables. Cross-platform.",
-	"license": "MIT",
-	"repository": "sindresorhus/open",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=12"
-	},
-	"scripts": {
-		"test": "xo && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts",
-		"xdg-open"
-	],
-	"keywords": [
-		"app",
-		"open",
-		"opener",
-		"opens",
-		"launch",
-		"start",
-		"xdg-open",
-		"xdg",
-		"default",
-		"cmd",
-		"browser",
-		"editor",
-		"executable",
-		"exe",
-		"url",
-		"urls",
-		"arguments",
-		"args",
-		"spawn",
-		"exec",
-		"child",
-		"process",
-		"website",
-		"file"
-	],
-	"dependencies": {
-		"define-lazy-prop": "^2.0.0",
-		"is-docker": "^2.1.1",
-		"is-wsl": "^2.2.0"
-	},
-	"devDependencies": {
-		"@types/node": "^15.0.0",
-		"ava": "^3.15.0",
-		"tsd": "^0.14.0",
-		"xo": "^0.39.1"
-	}
+  "_args": [
+    [
+      "open@8.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "open@8.2.1",
+  "_id": "open@8.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
+  "_location": "/open",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "open@8.2.1",
+    "name": "open",
+    "escapedName": "open",
+    "rawSpec": "8.2.1",
+    "saveSpec": null,
+    "fetchSpec": "8.2.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
+  "_spec": "8.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/open/issues"
+  },
+  "dependencies": {
+    "define-lazy-prop": "^2.0.0",
+    "is-docker": "^2.1.1",
+    "is-wsl": "^2.2.0"
+  },
+  "description": "Open stuff like URLs, files, executables. Cross-platform.",
+  "devDependencies": {
+    "@types/node": "^15.0.0",
+    "ava": "^3.15.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.39.1"
+  },
+  "engines": {
+    "node": ">=12"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "xdg-open"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/open#readme",
+  "keywords": [
+    "app",
+    "open",
+    "opener",
+    "opens",
+    "launch",
+    "start",
+    "xdg-open",
+    "xdg",
+    "default",
+    "cmd",
+    "browser",
+    "editor",
+    "executable",
+    "exe",
+    "url",
+    "urls",
+    "arguments",
+    "args",
+    "spawn",
+    "exec",
+    "child",
+    "process",
+    "website",
+    "file"
+  ],
+  "license": "MIT",
+  "name": "open",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/open.git"
+  },
+  "scripts": {
+    "test": "xo && tsd"
+  },
+  "version": "8.2.1"
 }
Index: trip-planner-front/node_modules/opn/node_modules/is-wsl/package.json
===================================================================
--- trip-planner-front/node_modules/opn/node_modules/is-wsl/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/opn/node_modules/is-wsl/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "is-wsl",
-  "version": "1.1.0",
-  "description": "Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)",
-  "license": "MIT",
-  "repository": "sindresorhus/is-wsl",
+  "_args": [
+    [
+      "is-wsl@1.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "is-wsl@1.1.0",
+  "_id": "is-wsl@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+  "_location": "/opn/is-wsl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "is-wsl@1.1.0",
+    "name": "is-wsl",
+    "escapedName": "is-wsl",
+    "rawSpec": "1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "1.1.0"
+  },
+  "_requiredBy": [
+    "/opn"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+  "_spec": "1.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,21 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-wsl/issues"
+  },
+  "description": "Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)",
+  "devDependencies": {
+    "ava": "*",
+    "clear-require": "^2.0.0",
+    "proxyquire": "^1.7.11",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/is-wsl#readme",
   "keywords": [
     "check",
@@ -32,9 +64,13 @@
     "is"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "clear-require": "^2.0.0",
-    "proxyquire": "^1.7.11",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "is-wsl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-wsl.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.1.0"
 }
Index: trip-planner-front/node_modules/opn/package.json
===================================================================
--- trip-planner-front/node_modules/opn/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/opn/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "opn",
-	"version": "5.5.0",
-	"description": "A better node-open. Opens stuff like websites, files, executables. Cross-platform.",
-	"license": "MIT",
-	"repository": "sindresorhus/opn",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=4"
-	},
-	"scripts": {
-		"test": "xo"
-	},
-	"files": [
-		"index.js",
-		"xdg-open"
-	],
-	"keywords": [
-		"app",
-		"open",
-		"opn",
-		"opener",
-		"opens",
-		"launch",
-		"start",
-		"xdg-open",
-		"xdg",
-		"default",
-		"cmd",
-		"browser",
-		"editor",
-		"executable",
-		"exe",
-		"url",
-		"urls",
-		"arguments",
-		"args",
-		"spawn",
-		"exec",
-		"child",
-		"process",
-		"website",
-		"file"
-	],
-	"dependencies": {
-		"is-wsl": "^1.1.0"
-	},
-	"devDependencies": {
-		"ava": "^0.25.0",
-		"xo": "^0.20.0"
-	}
+  "_args": [
+    [
+      "opn@5.5.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "opn@5.5.0",
+  "_id": "opn@5.5.0",
+  "_inBundle": false,
+  "_integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+  "_location": "/opn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "opn@5.5.0",
+    "name": "opn",
+    "escapedName": "opn",
+    "rawSpec": "5.5.0",
+    "saveSpec": null,
+    "fetchSpec": "5.5.0"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+  "_spec": "5.5.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/opn/issues"
+  },
+  "dependencies": {
+    "is-wsl": "^1.1.0"
+  },
+  "description": "A better node-open. Opens stuff like websites, files, executables. Cross-platform.",
+  "devDependencies": {
+    "ava": "^0.25.0",
+    "xo": "^0.20.0"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js",
+    "xdg-open"
+  ],
+  "homepage": "https://github.com/sindresorhus/opn#readme",
+  "keywords": [
+    "app",
+    "open",
+    "opn",
+    "opener",
+    "opens",
+    "launch",
+    "start",
+    "xdg-open",
+    "xdg",
+    "default",
+    "cmd",
+    "browser",
+    "editor",
+    "executable",
+    "exe",
+    "url",
+    "urls",
+    "arguments",
+    "args",
+    "spawn",
+    "exec",
+    "child",
+    "process",
+    "website",
+    "file"
+  ],
+  "license": "MIT",
+  "name": "opn",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/opn.git"
+  },
+  "scripts": {
+    "test": "xo"
+  },
+  "version": "5.5.0"
 }
Index: trip-planner-front/node_modules/ora/node_modules/ansi-styles/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/ansi-styles/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/ansi-styles/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "ansi-styles",
-	"version": "4.3.0",
-	"description": "ANSI escape codes for styling strings in the terminal",
-	"license": "MIT",
-	"repository": "chalk/ansi-styles",
-	"funding": "https://github.com/chalk/ansi-styles?sponsor=1",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd",
-		"screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"ansi",
-		"styles",
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"tty",
-		"escape",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"color-convert": "^2.0.1"
-	},
-	"devDependencies": {
-		"@types/color-convert": "^1.9.0",
-		"ava": "^2.3.0",
-		"svg-term-cli": "^2.1.1",
-		"tsd": "^0.11.0",
-		"xo": "^0.25.3"
-	}
+  "_args": [
+    [
+      "ansi-styles@4.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ansi-styles@4.3.0",
+  "_id": "ansi-styles@4.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+  "_location": "/ora/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ansi-styles@4.3.0",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "4.3.0",
+    "saveSpec": null,
+    "fetchSpec": "4.3.0"
+  },
+  "_requiredBy": [
+    "/ora/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+  "_spec": "4.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "dependencies": {
+    "color-convert": "^2.0.1"
+  },
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "@types/color-convert": "^1.9.0",
+    "ava": "^2.3.0",
+    "svg-term-cli": "^2.1.1",
+    "tsd": "^0.11.0",
+    "xo": "^0.25.3"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.3.0"
 }
Index: trip-planner-front/node_modules/ora/node_modules/chalk/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/chalk/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/chalk/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,68 +1,104 @@
 {
-	"name": "chalk",
-	"version": "4.1.2",
-	"description": "Terminal string styling done right",
-	"license": "MIT",
-	"repository": "chalk/chalk",
-	"funding": "https://github.com/chalk/chalk?sponsor=1",
-	"main": "source",
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd",
-		"bench": "matcha benchmark.js"
-	},
-	"files": [
-		"source",
-		"index.d.ts"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"string",
-		"str",
-		"ansi",
-		"style",
-		"styles",
-		"tty",
-		"formatting",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"log",
-		"logging",
-		"command-line",
-		"text"
-	],
-	"dependencies": {
-		"ansi-styles": "^4.1.0",
-		"supports-color": "^7.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"coveralls": "^3.0.7",
-		"execa": "^4.0.0",
-		"import-fresh": "^3.1.0",
-		"matcha": "^0.7.0",
-		"nyc": "^15.0.0",
-		"resolve-from": "^5.0.0",
-		"tsd": "^0.7.4",
-		"xo": "^0.28.2"
-	},
-	"xo": {
-		"rules": {
-			"unicorn/prefer-string-slice": "off",
-			"unicorn/prefer-includes": "off",
-			"@typescript-eslint/member-ordering": "off",
-			"no-redeclare": "off",
-			"unicorn/string-content": "off",
-			"unicorn/better-regex": "off"
-		}
-	}
+  "_args": [
+    [
+      "chalk@4.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "chalk@4.1.2",
+  "_id": "chalk@4.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+  "_location": "/ora/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "chalk@4.1.2",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "4.1.2",
+    "saveSpec": null,
+    "fetchSpec": "4.1.2"
+  },
+  "_requiredBy": [
+    "/ora"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+  "_spec": "4.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "dependencies": {
+    "ansi-styles": "^4.1.0",
+    "supports-color": "^7.1.0"
+  },
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "coveralls": "^3.0.7",
+    "execa": "^4.0.0",
+    "import-fresh": "^3.1.0",
+    "matcha": "^0.7.0",
+    "nyc": "^15.0.0",
+    "resolve-from": "^5.0.0",
+    "tsd": "^0.7.4",
+    "xo": "^0.28.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "source",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/chalk/chalk?sponsor=1",
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "main": "source",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "test": "xo && nyc ava && tsd"
+  },
+  "version": "4.1.2",
+  "xo": {
+    "rules": {
+      "unicorn/prefer-string-slice": "off",
+      "unicorn/prefer-includes": "off",
+      "@typescript-eslint/member-ordering": "off",
+      "no-redeclare": "off",
+      "unicorn/string-content": "off",
+      "unicorn/better-regex": "off"
+    }
+  }
 }
Index: trip-planner-front/node_modules/ora/node_modules/color-convert/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/color-convert/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/color-convert/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "color-convert",
+  "_args": [
+    [
+      "color-convert@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-convert@2.0.1",
+  "_id": "color-convert@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+  "_location": "/ora/color-convert",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-convert@2.0.1",
+    "name": "color-convert",
+    "escapedName": "color-convert",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/ora/ansi-styles"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Heather Arthur",
+    "email": "fayearthur@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/Qix-/color-convert/issues"
+  },
+  "dependencies": {
+    "color-name": "~1.1.4"
+  },
   "description": "Plain color conversion functions",
-  "version": "2.0.1",
-  "author": "Heather Arthur <fayearthur@gmail.com>",
-  "license": "MIT",
-  "repository": "Qix-/color-convert",
-  "scripts": {
-    "pretest": "xo",
-    "test": "node test/basic.js"
+  "devDependencies": {
+    "chalk": "^2.4.2",
+    "xo": "^0.24.0"
   },
   "engines": {
     "node": ">=7.0.0"
   },
+  "files": [
+    "index.js",
+    "conversions.js",
+    "route.js"
+  ],
+  "homepage": "https://github.com/Qix-/color-convert#readme",
   "keywords": [
     "color",
@@ -27,9 +67,15 @@
     "ansi16"
   ],
-  "files": [
-    "index.js",
-    "conversions.js",
-    "route.js"
-  ],
+  "license": "MIT",
+  "name": "color-convert",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Qix-/color-convert.git"
+  },
+  "scripts": {
+    "pretest": "xo",
+    "test": "node test/basic.js"
+  },
+  "version": "2.0.1",
   "xo": {
     "rules": {
@@ -38,11 +84,4 @@
       "operator-linebreak": 0
     }
-  },
-  "devDependencies": {
-    "chalk": "^2.4.2",
-    "xo": "^0.24.0"
-  },
-  "dependencies": {
-    "color-name": "~1.1.4"
   }
 }
Index: trip-planner-front/node_modules/ora/node_modules/color-name/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/color-name/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/color-name/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,44 @@
 {
-  "name": "color-name",
-  "version": "1.1.4",
+  "_args": [
+    [
+      "color-name@1.1.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "color-name@1.1.4",
+  "_id": "color-name@1.1.4",
+  "_inBundle": false,
+  "_integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+  "_location": "/ora/color-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "color-name@1.1.4",
+    "name": "color-name",
+    "escapedName": "color-name",
+    "rawSpec": "1.1.4",
+    "saveSpec": null,
+    "fetchSpec": "1.1.4"
+  },
+  "_requiredBy": [
+    "/ora/color-convert"
+  ],
+  "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+  "_spec": "1.1.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "DY",
+    "email": "dfcreative@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/colorjs/color-name/issues"
+  },
   "description": "A list of color names and its values",
-  "main": "index.js",
   "files": [
     "index.js"
   ],
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:colorjs/color-name.git"
-  },
+  "homepage": "https://github.com/colorjs/color-name",
   "keywords": [
     "color-name",
@@ -20,9 +47,14 @@
     "keyword"
   ],
-  "author": "DY <dfcreative@gmail.com>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/colorjs/color-name/issues"
+  "main": "index.js",
+  "name": "color-name",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/colorjs/color-name.git"
   },
-  "homepage": "https://github.com/colorjs/color-name"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.1.4"
 }
Index: trip-planner-front/node_modules/ora/node_modules/has-flag/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/has-flag/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/has-flag/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "has-flag",
-	"version": "4.0.0",
-	"description": "Check if argv has a specific flag",
-	"license": "MIT",
-	"repository": "sindresorhus/has-flag",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"has",
-		"check",
-		"detect",
-		"contains",
-		"find",
-		"flag",
-		"cli",
-		"command-line",
-		"argv",
-		"process",
-		"arg",
-		"args",
-		"argument",
-		"arguments",
-		"getopt",
-		"minimist",
-		"optimist"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "has-flag@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "has-flag@4.0.0",
+  "_id": "has-flag@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+  "_location": "/ora/has-flag",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "has-flag@4.0.0",
+    "name": "has-flag",
+    "escapedName": "has-flag",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/ora/supports-color"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/has-flag/issues"
+  },
+  "description": "Check if argv has a specific flag",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/has-flag#readme",
+  "keywords": [
+    "has",
+    "check",
+    "detect",
+    "contains",
+    "find",
+    "flag",
+    "cli",
+    "command-line",
+    "argv",
+    "process",
+    "arg",
+    "args",
+    "argument",
+    "arguments",
+    "getopt",
+    "minimist",
+    "optimist"
+  ],
+  "license": "MIT",
+  "name": "has-flag",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/has-flag.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/ora/node_modules/supports-color/package.json
===================================================================
--- trip-planner-front/node_modules/ora/node_modules/supports-color/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/node_modules/supports-color/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "supports-color",
-	"version": "7.2.0",
-	"description": "Detect whether a terminal supports color",
-	"license": "MIT",
-	"repository": "chalk/supports-color",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js",
-		"browser.js"
-	],
-	"keywords": [
-		"color",
-		"colour",
-		"colors",
-		"terminal",
-		"console",
-		"cli",
-		"ansi",
-		"styles",
-		"tty",
-		"rgb",
-		"256",
-		"shell",
-		"xterm",
-		"command-line",
-		"support",
-		"supports",
-		"capability",
-		"detect",
-		"truecolor",
-		"16m"
-	],
-	"dependencies": {
-		"has-flag": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"import-fresh": "^3.0.0",
-		"xo": "^0.24.0"
-	},
-	"browser": "browser.js"
+  "_args": [
+    [
+      "supports-color@7.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "supports-color@7.2.0",
+  "_id": "supports-color@7.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+  "_location": "/ora/supports-color",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "supports-color@7.2.0",
+    "name": "supports-color",
+    "escapedName": "supports-color",
+    "rawSpec": "7.2.0",
+    "saveSpec": null,
+    "fetchSpec": "7.2.0"
+  },
+  "_requiredBy": [
+    "/ora/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+  "_spec": "7.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/chalk/supports-color/issues"
+  },
+  "dependencies": {
+    "has-flag": "^4.0.0"
+  },
+  "description": "Detect whether a terminal supports color",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "import-fresh": "^3.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/chalk/supports-color#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "ansi",
+    "styles",
+    "tty",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "support",
+    "supports",
+    "capability",
+    "detect",
+    "truecolor",
+    "16m"
+  ],
+  "license": "MIT",
+  "name": "supports-color",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/supports-color.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "7.2.0"
 }
Index: trip-planner-front/node_modules/ora/package.json
===================================================================
--- trip-planner-front/node_modules/ora/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/ora/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,57 +1,96 @@
 {
-	"name": "ora",
-	"version": "5.4.1",
-	"description": "Elegant terminal spinner",
-	"license": "MIT",
-	"repository": "sindresorhus/ora",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"cli",
-		"spinner",
-		"spinners",
-		"terminal",
-		"term",
-		"console",
-		"ascii",
-		"unicode",
-		"loading",
-		"indicator",
-		"progress",
-		"busy",
-		"wait",
-		"idle"
-	],
-	"dependencies": {
-		"bl": "^4.1.0",
-		"chalk": "^4.1.0",
-		"cli-cursor": "^3.1.0",
-		"cli-spinners": "^2.5.0",
-		"is-interactive": "^1.0.0",
-		"is-unicode-supported": "^0.1.0",
-		"log-symbols": "^4.1.0",
-		"strip-ansi": "^6.0.0",
-		"wcwidth": "^1.0.1"
-	},
-	"devDependencies": {
-		"@types/node": "^14.14.35",
-		"ava": "^2.4.0",
-		"get-stream": "^6.0.0",
-		"tsd": "^0.14.0",
-		"xo": "^0.38.2"
-	}
+  "_args": [
+    [
+      "ora@5.4.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "ora@5.4.1",
+  "_id": "ora@5.4.1",
+  "_inBundle": false,
+  "_integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+  "_location": "/ora",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "ora@5.4.1",
+    "name": "ora",
+    "escapedName": "ora",
+    "rawSpec": "5.4.1",
+    "saveSpec": null,
+    "fetchSpec": "5.4.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/@angular-devkit/schematics",
+    "/@angular/cli",
+    "/inquirer"
+  ],
+  "_resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+  "_spec": "5.4.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/ora/issues"
+  },
+  "dependencies": {
+    "bl": "^4.1.0",
+    "chalk": "^4.1.0",
+    "cli-cursor": "^3.1.0",
+    "cli-spinners": "^2.5.0",
+    "is-interactive": "^1.0.0",
+    "is-unicode-supported": "^0.1.0",
+    "log-symbols": "^4.1.0",
+    "strip-ansi": "^6.0.0",
+    "wcwidth": "^1.0.1"
+  },
+  "description": "Elegant terminal spinner",
+  "devDependencies": {
+    "@types/node": "^14.14.35",
+    "ava": "^2.4.0",
+    "get-stream": "^6.0.0",
+    "tsd": "^0.14.0",
+    "xo": "^0.38.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/ora#readme",
+  "keywords": [
+    "cli",
+    "spinner",
+    "spinners",
+    "terminal",
+    "term",
+    "console",
+    "ascii",
+    "unicode",
+    "loading",
+    "indicator",
+    "progress",
+    "busy",
+    "wait",
+    "idle"
+  ],
+  "license": "MIT",
+  "name": "ora",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/ora.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "5.4.1"
 }
Index: trip-planner-front/node_modules/original/package.json
===================================================================
--- trip-planner-front/node_modules/original/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/original/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,18 +1,49 @@
 {
-  "name": "original",
-  "version": "1.0.2",
+  "_args": [
+    [
+      "original@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "original@1.0.2",
+  "_id": "original@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+  "_location": "/original",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "original@1.0.2",
+    "name": "original",
+    "escapedName": "original",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/eventsource"
+  ],
+  "_resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Arnout Kazemier"
+  },
+  "bugs": {
+    "url": "https://github.com/unshiftio/original/issues"
+  },
+  "dependencies": {
+    "url-parse": "^1.4.3"
+  },
   "description": "Generate the origin from an URL or check if two URL/Origins are the same",
-  "main": "index.js",
-  "scripts": {
-    "100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
-    "test-travis": "istanbul cover _mocha --report lcovonly -- test.js",
-    "coverage": "istanbul cover _mocha -- test.js",
-    "watch": "mocha --watch test.js",
-    "test": "mocha test.js"
+  "devDependencies": {
+    "assume": "~2.1.0",
+    "istanbul": "0.4.x",
+    "mocha": "~3.5.0",
+    "pre-commit": "~1.2.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/unshiftio/original"
-  },
+  "homepage": "https://github.com/unshiftio/original#readme",
   "keywords": [
     "origin",
@@ -20,14 +51,18 @@
     "parse"
   ],
-  "author": "Arnout Kazemier",
   "license": "MIT",
-  "dependencies": {
-    "url-parse": "^1.4.3"
+  "main": "index.js",
+  "name": "original",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/unshiftio/original.git"
   },
-  "devDependencies": {
-    "assume": "~2.1.0",
-    "istanbul": "0.4.x",
-    "mocha": "~3.5.0",
-    "pre-commit": "~1.2.0"
-  }
+  "scripts": {
+    "100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
+    "coverage": "istanbul cover _mocha -- test.js",
+    "test": "mocha test.js",
+    "test-travis": "istanbul cover _mocha --report lcovonly -- test.js",
+    "watch": "mocha --watch test.js"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/os-tmpdir/package.json
===================================================================
--- trip-planner-front/node_modules/os-tmpdir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/os-tmpdir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "os-tmpdir",
-  "version": "1.0.2",
-  "description": "Node.js os.tmpdir() ponyfill",
-  "license": "MIT",
-  "repository": "sindresorhus/os-tmpdir",
+  "_args": [
+    [
+      "os-tmpdir@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "os-tmpdir@1.0.2",
+  "_id": "os-tmpdir@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+  "_location": "/os-tmpdir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "os-tmpdir@1.0.2",
+    "name": "os-tmpdir",
+    "escapedName": "os-tmpdir",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/tmp"
+  ],
+  "_resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/os-tmpdir/issues"
+  },
+  "description": "Node.js os.tmpdir() ponyfill",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "^0.16.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/os-tmpdir#readme",
   "keywords": [
     "built-in",
@@ -35,7 +65,13 @@
     "environment"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "^0.16.0"
-  }
+  "license": "MIT",
+  "name": "os-tmpdir",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/os-tmpdir.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/p-defer/package.json
===================================================================
--- trip-planner-front/node_modules/p-defer/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-defer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "p-defer",
-  "version": "1.0.0",
-  "description": "Create a deferred promise",
-  "license": "MIT",
-  "repository": "sindresorhus/p-defer",
+  "_args": [
+    [
+      "p-defer@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-defer@1.0.0",
+  "_id": "p-defer@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+  "_location": "/p-defer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-defer@1.0.0",
+    "name": "p-defer",
+    "escapedName": "p-defer",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/map-age-cleaner"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-defer/issues"
+  },
+  "description": "Create a deferred promise",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/p-defer#readme",
   "keywords": [
     "promise",
@@ -32,8 +62,14 @@
     "bluebird"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "license": "MIT",
+  "name": "p-defer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-defer.git"
   },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.0",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/p-finally/package.json
===================================================================
--- trip-planner-front/node_modules/p-finally/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-finally/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "p-finally",
-  "version": "1.0.0",
-  "description": "`Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome",
-  "license": "MIT",
-  "repository": "sindresorhus/p-finally",
+  "_args": [
+    [
+      "p-finally@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-finally@1.0.0",
+  "_id": "p-finally@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+  "_location": "/p-finally",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-finally@1.0.0",
+    "name": "p-finally",
+    "escapedName": "p-finally",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +34,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-finally/issues"
+  },
+  "description": "`Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/p-finally#readme",
   "keywords": [
     "promise",
@@ -33,8 +63,14 @@
     "bluebird"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "license": "MIT",
+  "name": "p-finally",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-finally.git"
   },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.0",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/p-limit/package.json
===================================================================
--- trip-planner-front/node_modules/p-limit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-limit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,52 +1,90 @@
 {
-	"name": "p-limit",
-	"version": "3.1.0",
-	"description": "Run multiple promise-returning & async functions with limited concurrency",
-	"license": "MIT",
-	"repository": "sindresorhus/p-limit",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"limit",
-		"limited",
-		"concurrency",
-		"throttle",
-		"throat",
-		"rate",
-		"batch",
-		"ratelimit",
-		"task",
-		"queue",
-		"async",
-		"await",
-		"promises",
-		"bluebird"
-	],
-	"dependencies": {
-		"yocto-queue": "^0.1.0"
-	},
-	"devDependencies": {
-		"ava": "^2.4.0",
-		"delay": "^4.4.0",
-		"in-range": "^2.0.0",
-		"random-int": "^2.0.1",
-		"time-span": "^4.0.0",
-		"tsd": "^0.13.1",
-		"xo": "^0.35.0"
-	}
+  "_args": [
+    [
+      "p-limit@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-limit@3.1.0",
+  "_id": "p-limit@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+  "_location": "/p-limit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-limit@3.1.0",
+    "name": "p-limit",
+    "escapedName": "p-limit",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/copy-webpack-plugin",
+    "/css-minimizer-webpack-plugin",
+    "/terser-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-limit/issues"
+  },
+  "dependencies": {
+    "yocto-queue": "^0.1.0"
+  },
+  "description": "Run multiple promise-returning & async functions with limited concurrency",
+  "devDependencies": {
+    "ava": "^2.4.0",
+    "delay": "^4.4.0",
+    "in-range": "^2.0.0",
+    "random-int": "^2.0.1",
+    "time-span": "^4.0.0",
+    "tsd": "^0.13.1",
+    "xo": "^0.35.0"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/p-limit#readme",
+  "keywords": [
+    "promise",
+    "limit",
+    "limited",
+    "concurrency",
+    "throttle",
+    "throat",
+    "rate",
+    "batch",
+    "ratelimit",
+    "task",
+    "queue",
+    "async",
+    "await",
+    "promises",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-limit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-limit.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/p-locate/node_modules/p-limit/package.json
===================================================================
--- trip-planner-front/node_modules/p-locate/node_modules/p-limit/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-locate/node_modules/p-limit/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,52 +1,88 @@
 {
-	"name": "p-limit",
-	"version": "2.3.0",
-	"description": "Run multiple promise-returning & async functions with limited concurrency",
-	"license": "MIT",
-	"repository": "sindresorhus/p-limit",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd-check"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"limit",
-		"limited",
-		"concurrency",
-		"throttle",
-		"throat",
-		"rate",
-		"batch",
-		"ratelimit",
-		"task",
-		"queue",
-		"async",
-		"await",
-		"promises",
-		"bluebird"
-	],
-	"dependencies": {
-		"p-try": "^2.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.2.1",
-		"delay": "^4.1.0",
-		"in-range": "^1.0.0",
-		"random-int": "^1.0.0",
-		"time-span": "^2.0.0",
-		"tsd-check": "^0.3.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-limit@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-limit@2.3.0",
+  "_id": "p-limit@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+  "_location": "/p-locate/p-limit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-limit@2.3.0",
+    "name": "p-limit",
+    "escapedName": "p-limit",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/p-locate"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-limit/issues"
+  },
+  "dependencies": {
+    "p-try": "^2.0.0"
+  },
+  "description": "Run multiple promise-returning & async functions with limited concurrency",
+  "devDependencies": {
+    "ava": "^1.2.1",
+    "delay": "^4.1.0",
+    "in-range": "^1.0.0",
+    "random-int": "^1.0.0",
+    "time-span": "^2.0.0",
+    "tsd-check": "^0.3.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/p-limit#readme",
+  "keywords": [
+    "promise",
+    "limit",
+    "limited",
+    "concurrency",
+    "throttle",
+    "throat",
+    "rate",
+    "batch",
+    "ratelimit",
+    "task",
+    "queue",
+    "async",
+    "await",
+    "promises",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-limit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-limit.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd-check"
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/p-locate/package.json
===================================================================
--- trip-planner-front/node_modules/p-locate/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-locate/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,91 @@
 {
-	"name": "p-locate",
-	"version": "4.1.0",
-	"description": "Get the first fulfilled promise that satisfies the provided testing function",
-	"license": "MIT",
-	"repository": "sindresorhus/p-locate",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"locate",
-		"find",
-		"finder",
-		"search",
-		"searcher",
-		"test",
-		"array",
-		"collection",
-		"iterable",
-		"iterator",
-		"race",
-		"fulfilled",
-		"fastest",
-		"async",
-		"await",
-		"promises",
-		"bluebird"
-	],
-	"dependencies": {
-		"p-limit": "^2.2.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"delay": "^4.1.0",
-		"in-range": "^1.0.0",
-		"time-span": "^3.0.0",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-locate@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-locate@4.1.0",
+  "_id": "p-locate@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+  "_location": "/p-locate",
+  "_phantomChildren": {
+    "p-try": "2.2.0"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-locate@4.1.0",
+    "name": "p-locate",
+    "escapedName": "p-locate",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/locate-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-locate/issues"
+  },
+  "dependencies": {
+    "p-limit": "^2.2.0"
+  },
+  "description": "Get the first fulfilled promise that satisfies the provided testing function",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "delay": "^4.1.0",
+    "in-range": "^1.0.0",
+    "time-span": "^3.0.0",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-locate#readme",
+  "keywords": [
+    "promise",
+    "locate",
+    "find",
+    "finder",
+    "search",
+    "searcher",
+    "test",
+    "array",
+    "collection",
+    "iterable",
+    "iterator",
+    "race",
+    "fulfilled",
+    "fastest",
+    "async",
+    "await",
+    "promises",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-locate",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-locate.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/p-map/package.json
===================================================================
--- trip-planner-front/node_modules/p-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,53 +1,89 @@
 {
-	"name": "p-map",
-	"version": "4.0.0",
-	"description": "Map over promises concurrently",
-	"license": "MIT",
-	"repository": "sindresorhus/p-map",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=10"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"map",
-		"resolved",
-		"wait",
-		"collection",
-		"iterable",
-		"iterator",
-		"race",
-		"fulfilled",
-		"async",
-		"await",
-		"promises",
-		"concurrently",
-		"concurrency",
-		"parallel",
-		"bluebird"
-	],
-	"dependencies": {
-		"aggregate-error": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "^2.2.0",
-		"delay": "^4.1.0",
-		"in-range": "^2.0.0",
-		"random-int": "^2.0.0",
-		"time-span": "^3.1.0",
-		"tsd": "^0.7.4",
-		"xo": "^0.27.2"
-	}
+  "_args": [
+    [
+      "p-map@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-map@4.0.0",
+  "_id": "p-map@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+  "_location": "/p-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-map@4.0.0",
+    "name": "p-map",
+    "escapedName": "p-map",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/cacache"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-map/issues"
+  },
+  "dependencies": {
+    "aggregate-error": "^3.0.0"
+  },
+  "description": "Map over promises concurrently",
+  "devDependencies": {
+    "ava": "^2.2.0",
+    "delay": "^4.1.0",
+    "in-range": "^2.0.0",
+    "random-int": "^2.0.0",
+    "time-span": "^3.1.0",
+    "tsd": "^0.7.4",
+    "xo": "^0.27.2"
+  },
+  "engines": {
+    "node": ">=10"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/p-map#readme",
+  "keywords": [
+    "promise",
+    "map",
+    "resolved",
+    "wait",
+    "collection",
+    "iterable",
+    "iterator",
+    "race",
+    "fulfilled",
+    "async",
+    "await",
+    "promises",
+    "concurrently",
+    "concurrency",
+    "parallel",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-map",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-map.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/p-retry/package.json
===================================================================
--- trip-planner-front/node_modules/p-retry/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-retry/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,48 +1,84 @@
 {
-	"name": "p-retry",
-	"version": "3.0.1",
-	"description": "Retry a promise-returning or async function",
-	"license": "MIT",
-	"repository": "sindresorhus/p-retry",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"promise",
-		"retry",
-		"retries",
-		"operation",
-		"failed",
-		"rejected",
-		"try",
-		"exponential",
-		"backoff",
-		"attempt",
-		"async",
-		"await",
-		"promises",
-		"concurrently",
-		"concurrency",
-		"parallel",
-		"bluebird"
-	],
-	"dependencies": {
-		"retry": "^0.12.0"
-	},
-	"devDependencies": {
-		"ava": "^1.1.0",
-		"delay": "^4.1.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-retry@3.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-retry@3.0.1",
+  "_id": "p-retry@3.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+  "_location": "/p-retry",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-retry@3.0.1",
+    "name": "p-retry",
+    "escapedName": "p-retry",
+    "rawSpec": "3.0.1",
+    "saveSpec": null,
+    "fetchSpec": "3.0.1"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+  "_spec": "3.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-retry/issues"
+  },
+  "dependencies": {
+    "retry": "^0.12.0"
+  },
+  "description": "Retry a promise-returning or async function",
+  "devDependencies": {
+    "ava": "^1.1.0",
+    "delay": "^4.1.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-retry#readme",
+  "keywords": [
+    "promise",
+    "retry",
+    "retries",
+    "operation",
+    "failed",
+    "rejected",
+    "try",
+    "exponential",
+    "backoff",
+    "attempt",
+    "async",
+    "await",
+    "promises",
+    "concurrently",
+    "concurrency",
+    "parallel",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-retry",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-retry.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "3.0.1"
 }
Index: trip-planner-front/node_modules/p-try/package.json
===================================================================
--- trip-planner-front/node_modules/p-try/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/p-try/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,80 @@
 {
-	"name": "p-try",
-	"version": "2.2.0",
-	"description": "`Start a promise chain",
-	"license": "MIT",
-	"repository": "sindresorhus/p-try",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"promise",
-		"try",
-		"resolve",
-		"function",
-		"catch",
-		"async",
-		"await",
-		"promises",
-		"settled",
-		"ponyfill",
-		"polyfill",
-		"shim",
-		"bluebird"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "p-try@2.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "p-try@2.2.0",
+  "_id": "p-try@2.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+  "_location": "/p-try",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "p-try@2.2.0",
+    "name": "p-try",
+    "escapedName": "p-try",
+    "rawSpec": "2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "2.2.0"
+  },
+  "_requiredBy": [
+    "/import-local/p-limit",
+    "/p-locate/p-limit",
+    "/webpack-dev-server/p-limit"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+  "_spec": "2.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-try/issues"
+  },
+  "description": "`Start a promise chain",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-try#readme",
+  "keywords": [
+    "promise",
+    "try",
+    "resolve",
+    "function",
+    "catch",
+    "async",
+    "await",
+    "promises",
+    "settled",
+    "ponyfill",
+    "polyfill",
+    "shim",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-try",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-try.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.2.0"
 }
Index: trip-planner-front/node_modules/pacote/package.json
===================================================================
--- trip-planner-front/node_modules/pacote/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pacote/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,43 @@
 {
-  "name": "pacote",
-  "version": "11.3.5",
-  "description": "JavaScript package downloader",
-  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
+  "_args": [
+    [
+      "pacote@11.3.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pacote@11.3.5",
+  "_id": "pacote@11.3.5",
+  "_inBundle": false,
+  "_integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==",
+  "_location": "/pacote",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pacote@11.3.5",
+    "name": "pacote",
+    "escapedName": "pacote",
+    "rawSpec": "11.3.5",
+    "saveSpec": null,
+    "fetchSpec": "11.3.5"
+  },
+  "_requiredBy": [
+    "/@angular/cli"
+  ],
+  "_resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz",
+  "_spec": "11.3.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "https://izs.me"
+  },
   "bin": {
     "pacote": "lib/bin.js"
   },
-  "license": "ISC",
-  "main": "lib/index.js",
-  "scripts": {
-    "test": "tap",
-    "snap": "tap",
-    "preversion": "npm test",
-    "postversion": "npm publish",
-    "prepublishOnly": "git push origin --follow-tags"
+  "bugs": {
+    "url": "https://github.com/npm/pacote/issues"
   },
-  "tap": {
-    "timeout": 300,
-    "coverage-map": "map.js"
-  },
-  "devDependencies": {
-    "mutate-fs": "^2.1.1",
-    "npm-registry-mock": "^1.3.1",
-    "tap": "^15.0.4"
-  },
-  "files": [
-    "lib/**/*.js"
-  ],
-  "keywords": [
-    "packages",
-    "npm",
-    "git"
-  ],
   "dependencies": {
     "@npmcli/git": "^2.1.0",
@@ -54,7 +61,40 @@
     "tar": "^6.1.0"
   },
+  "description": "JavaScript package downloader",
+  "devDependencies": {
+    "mutate-fs": "^2.1.1",
+    "npm-registry-mock": "^1.3.1",
+    "tap": "^15.0.4"
+  },
   "engines": {
     "node": ">=10"
   },
-  "repository": "git@github.com:npm/pacote"
+  "files": [
+    "lib/**/*.js"
+  ],
+  "homepage": "https://github.com/npm/pacote#readme",
+  "keywords": [
+    "packages",
+    "npm",
+    "git"
+  ],
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "pacote",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/npm/pacote.git"
+  },
+  "scripts": {
+    "postversion": "npm publish",
+    "prepublishOnly": "git push origin --follow-tags",
+    "preversion": "npm test",
+    "snap": "tap",
+    "test": "tap"
+  },
+  "tap": {
+    "timeout": 300,
+    "coverage-map": "map.js"
+  },
+  "version": "11.3.5"
 }
Index: trip-planner-front/node_modules/pako/package.json
===================================================================
--- trip-planner-front/node_modules/pako/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pako/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,61 @@
 {
-  "name": "pako",
+  "_args": [
+    [
+      "pako@1.0.11",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pako@1.0.11",
+  "_id": "pako@1.0.11",
+  "_inBundle": false,
+  "_integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+  "_location": "/pako",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pako@1.0.11",
+    "name": "pako",
+    "escapedName": "pako",
+    "rawSpec": "1.0.11",
+    "saveSpec": null,
+    "fetchSpec": "1.0.11"
+  },
+  "_requiredBy": [
+    "/hdr-histogram-js"
+  ],
+  "_resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+  "_spec": "1.0.11",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/nodeca/pako/issues"
+  },
+  "contributors": [
+    {
+      "name": "Andrei Tuputcyn",
+      "url": "https://github.com/andr83"
+    },
+    {
+      "name": "Vitaly Puzrin",
+      "url": "https://github.com/puzrin"
+    },
+    {
+      "name": "Friedel Ziegelmayer",
+      "url": "https://github.com/dignifiedquire"
+    },
+    {
+      "name": "Kirill Efimov",
+      "url": "https://github.com/Kirill89"
+    },
+    {
+      "name": "Jean-loup Gailly"
+    },
+    {
+      "name": "Mark Adler"
+    }
+  ],
+  "dependencies": {},
   "description": "zlib port to javascript - fast, modularized, with browser support",
-  "version": "1.0.11",
-  "keywords": [
-    "zlib",
-    "deflate",
-    "inflate",
-    "gzip"
-  ],
-  "homepage": "https://github.com/nodeca/pako",
-  "contributors": [
-    "Andrei Tuputcyn (https://github.com/andr83)",
-    "Vitaly Puzrin (https://github.com/puzrin)",
-    "Friedel Ziegelmayer (https://github.com/dignifiedquire)",
-    "Kirill Efimov (https://github.com/Kirill89)",
-    "Jean-loup Gailly",
-    "Mark Adler"
-  ],
-  "files": [
-    "index.js",
-    "dist/",
-    "lib/"
-  ],
-  "license": "(MIT AND Zlib)",
-  "repository": "nodeca/pako",
-  "scripts": {
-    "test": "make test"
-  },
   "devDependencies": {
     "ansi": "^0.3.1",
@@ -41,4 +71,25 @@
     "zlibjs": "^0.3.1"
   },
-  "dependencies": {}
+  "files": [
+    "index.js",
+    "dist/",
+    "lib/"
+  ],
+  "homepage": "https://github.com/nodeca/pako",
+  "keywords": [
+    "zlib",
+    "deflate",
+    "inflate",
+    "gzip"
+  ],
+  "license": "(MIT AND Zlib)",
+  "name": "pako",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/nodeca/pako.git"
+  },
+  "scripts": {
+    "test": "make test"
+  },
+  "version": "1.0.11"
 }
Index: trip-planner-front/node_modules/parent-module/package.json
===================================================================
--- trip-planner-front/node_modules/parent-module/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parent-module/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,46 +1,82 @@
 {
-	"name": "parent-module",
-	"version": "1.0.1",
-	"description": "Get the path of the parent module",
-	"license": "MIT",
-	"repository": "sindresorhus/parent-module",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava"
-	},
-	"files": [
-		"index.js"
-	],
-	"keywords": [
-		"parent",
-		"module",
-		"package",
-		"pkg",
-		"caller",
-		"calling",
-		"module",
-		"path",
-		"callsites",
-		"callsite",
-		"stacktrace",
-		"stack",
-		"trace",
-		"function",
-		"file"
-	],
-	"dependencies": {
-		"callsites": "^3.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"execa": "^1.0.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "parent-module@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parent-module@1.0.1",
+  "_id": "parent-module@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+  "_location": "/parent-module",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parent-module@1.0.1",
+    "name": "parent-module",
+    "escapedName": "parent-module",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/import-fresh"
+  ],
+  "_resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/parent-module/issues"
+  },
+  "dependencies": {
+    "callsites": "^3.0.0"
+  },
+  "description": "Get the path of the parent module",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "execa": "^1.0.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/parent-module#readme",
+  "keywords": [
+    "parent",
+    "module",
+    "package",
+    "pkg",
+    "caller",
+    "calling",
+    "module",
+    "path",
+    "callsites",
+    "callsite",
+    "stacktrace",
+    "stack",
+    "trace",
+    "function",
+    "file"
+  ],
+  "license": "MIT",
+  "name": "parent-module",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/parent-module.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/parse-json/package.json
===================================================================
--- trip-planner-front/node_modules/parse-json/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse-json/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,81 @@
 {
-	"name": "parse-json",
-	"version": "5.2.0",
-	"description": "Parse JSON with more helpful errors",
-	"license": "MIT",
-	"repository": "sindresorhus/parse-json",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && nyc ava"
-	},
-	"files": [
-		"index.js",
-		"vendor"
-	],
-	"keywords": [
-		"parse",
-		"json",
-		"graceful",
-		"error",
-		"message",
-		"humanize",
-		"friendly",
-		"helpful",
-		"string"
-	],
-	"dependencies": {
-		"@babel/code-frame": "^7.0.0",
-		"error-ex": "^1.3.1",
-		"json-parse-even-better-errors": "^2.3.0",
-		"lines-and-columns": "^1.1.6"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"nyc": "^14.1.1",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "parse-json@5.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse-json@5.2.0",
+  "_id": "parse-json@5.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+  "_location": "/parse-json",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse-json@5.2.0",
+    "name": "parse-json",
+    "escapedName": "parse-json",
+    "rawSpec": "5.2.0",
+    "saveSpec": null,
+    "fetchSpec": "5.2.0"
+  },
+  "_requiredBy": [
+    "/cosmiconfig"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+  "_spec": "5.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/parse-json/issues"
+  },
+  "dependencies": {
+    "@babel/code-frame": "^7.0.0",
+    "error-ex": "^1.3.1",
+    "json-parse-even-better-errors": "^2.3.0",
+    "lines-and-columns": "^1.1.6"
+  },
+  "description": "Parse JSON with more helpful errors",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "nyc": "^14.1.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "vendor"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/parse-json#readme",
+  "keywords": [
+    "parse",
+    "json",
+    "graceful",
+    "error",
+    "message",
+    "humanize",
+    "friendly",
+    "helpful",
+    "string"
+  ],
+  "license": "MIT",
+  "name": "parse-json",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/parse-json.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava"
+  },
+  "version": "5.2.0"
 }
Index: trip-planner-front/node_modules/parse-node-version/package.json
===================================================================
--- trip-planner-front/node_modules/parse-node-version/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse-node-version/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,48 @@
 {
-  "name": "parse-node-version",
-  "version": "1.0.1",
+  "_args": [
+    [
+      "parse-node-version@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse-node-version@1.0.1",
+  "_id": "parse-node-version@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+  "_location": "/parse-node-version",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse-node-version@1.0.1",
+    "name": "parse-node-version",
+    "escapedName": "parse-node-version",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/less"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Gulp Team",
+    "email": "team@gulpjs.com",
+    "url": "http://gulpjs.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/gulpjs/parse-node-version/issues"
+  },
+  "contributors": [
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com"
+    }
+  ],
+  "dependencies": {},
   "description": "Turn node's process.version into something useful.",
-  "author": "Gulp Team <team@gulpjs.com> (http://gulpjs.com/)",
-  "contributors": [
-    "Blaine Bublitz <blaine.bublitz@gmail.com>"
-  ],
-  "repository": "gulpjs/parse-node-version",
-  "license": "MIT",
-  "engines": {
-    "node": ">= 0.10"
-  },
-  "main": "index.js",
-  "files": [
-    "LICENSE",
-    "index.js"
-  ],
-  "scripts": {
-    "lint": "eslint .",
-    "pretest": "npm run lint",
-    "test": "mocha --async-only",
-    "cover": "istanbul cover _mocha --report lcovonly",
-    "coveralls": "npm run cover && istanbul-coveralls"
-  },
-  "dependencies": {},
   "devDependencies": {
     "eslint": "^2.13.0",
@@ -33,8 +53,31 @@
     "mocha": "^3.5.3"
   },
+  "engines": {
+    "node": ">= 0.10"
+  },
+  "files": [
+    "LICENSE",
+    "index.js"
+  ],
+  "homepage": "https://github.com/gulpjs/parse-node-version#readme",
   "keywords": [
     "process.version",
     "node version",
     "version parse"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "parse-node-version",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gulpjs/parse-node-version.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover _mocha --report lcovonly",
+    "coveralls": "npm run cover && istanbul-coveralls",
+    "lint": "eslint .",
+    "pretest": "npm run lint",
+    "test": "mocha --async-only"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/parse5-html-rewriting-stream/package.json
===================================================================
--- trip-planner-front/node_modules/parse5-html-rewriting-stream/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse5-html-rewriting-stream/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,67 @@
 {
+  "_args": [
+    [
+      "parse5-html-rewriting-stream@6.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse5-html-rewriting-stream@6.0.1",
+  "_id": "parse5-html-rewriting-stream@6.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==",
+  "_location": "/parse5-html-rewriting-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse5-html-rewriting-stream@6.0.1",
     "name": "parse5-html-rewriting-stream",
-    "description": "Streaming HTML rewriter.",
-    "version": "6.0.1",
-    "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
-    "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
-    "homepage": "https://github.com/inikulin/parse5",
-    "keywords": [
-        "parse5",
-        "parser",
-        "stream",
-        "streaming",
-        "rewritter",
-        "rewrite",
-        "HTML"
-    ],
-    "license": "MIT",
-    "main": "./lib/index.js",
-    "dependencies": {
-        "parse5": "^6.0.1",
-        "parse5-sax-parser": "^6.0.1"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/inikulin/parse5.git"
-    },
-    "files": [
-        "lib"
-    ],
-    "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6"
+    "escapedName": "parse5-html-rewriting-stream",
+    "rawSpec": "6.0.1",
+    "saveSpec": null,
+    "fetchSpec": "6.0.1"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz",
+  "_spec": "6.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ivan Nikulin",
+    "email": "ifaaan@gmail.com",
+    "url": "https://github.com/inikulin"
+  },
+  "bugs": {
+    "url": "https://github.com/inikulin/parse5/issues"
+  },
+  "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
+  "dependencies": {
+    "parse5": "^6.0.1",
+    "parse5-sax-parser": "^6.0.1"
+  },
+  "description": "Streaming HTML rewriter.",
+  "files": [
+    "lib"
+  ],
+  "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6",
+  "homepage": "https://github.com/inikulin/parse5",
+  "keywords": [
+    "parse5",
+    "parser",
+    "stream",
+    "streaming",
+    "rewritter",
+    "rewrite",
+    "HTML"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "parse5-html-rewriting-stream",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inikulin/parse5.git"
+  },
+  "version": "6.0.1"
 }
Index: trip-planner-front/node_modules/parse5-htmlparser2-tree-adapter/package.json
===================================================================
--- trip-planner-front/node_modules/parse5-htmlparser2-tree-adapter/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse5-htmlparser2-tree-adapter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,63 @@
 {
+  "_args": [
+    [
+      "parse5-htmlparser2-tree-adapter@6.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse5-htmlparser2-tree-adapter@6.0.1",
+  "_id": "parse5-htmlparser2-tree-adapter@6.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+  "_location": "/parse5-htmlparser2-tree-adapter",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse5-htmlparser2-tree-adapter@6.0.1",
     "name": "parse5-htmlparser2-tree-adapter",
-    "description": "htmlparser2 tree adapter for parse5.",
-    "version": "6.0.1",
-    "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
-    "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
-    "homepage": "https://github.com/inikulin/parse5",
-    "keywords": [
-        "parse5",
-        "parser",
-        "tree adapter",
-        "htmlparser2"
-    ],
-    "license": "MIT",
-    "main": "./lib/index.js",
-    "dependencies": {
-        "parse5": "^6.0.1"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/inikulin/parse5.git"
-    },
-    "files": [
-        "lib"
-    ],
-    "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6"
+    "escapedName": "parse5-htmlparser2-tree-adapter",
+    "rawSpec": "6.0.1",
+    "saveSpec": null,
+    "fetchSpec": "6.0.1"
+  },
+  "_requiredBy": [
+    "/critters"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+  "_spec": "6.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ivan Nikulin",
+    "email": "ifaaan@gmail.com",
+    "url": "https://github.com/inikulin"
+  },
+  "bugs": {
+    "url": "https://github.com/inikulin/parse5/issues"
+  },
+  "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
+  "dependencies": {
+    "parse5": "^6.0.1"
+  },
+  "description": "htmlparser2 tree adapter for parse5.",
+  "files": [
+    "lib"
+  ],
+  "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6",
+  "homepage": "https://github.com/inikulin/parse5",
+  "keywords": [
+    "parse5",
+    "parser",
+    "tree adapter",
+    "htmlparser2"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "parse5-htmlparser2-tree-adapter",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inikulin/parse5.git"
+  },
+  "version": "6.0.1"
 }
Index: trip-planner-front/node_modules/parse5-sax-parser/package.json
===================================================================
--- trip-planner-front/node_modules/parse5-sax-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse5-sax-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,64 @@
 {
+  "_args": [
+    [
+      "parse5-sax-parser@6.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse5-sax-parser@6.0.1",
+  "_id": "parse5-sax-parser@6.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==",
+  "_location": "/parse5-sax-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse5-sax-parser@6.0.1",
     "name": "parse5-sax-parser",
-    "description": "Streaming SAX-style HTML parser.",
-    "version": "6.0.1",
-    "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
-    "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
-    "homepage": "https://github.com/inikulin/parse5",
-    "keywords": [
-        "parse5",
-        "parser",
-        "stream",
-        "streaming",
-        "SAX"
-    ],
-    "license": "MIT",
-    "main": "./lib/index.js",
-    "dependencies": {
-        "parse5": "^6.0.1"
-    },
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/inikulin/parse5.git"
-    },
-    "files": [
-        "lib"
-    ],
-    "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6"
+    "escapedName": "parse5-sax-parser",
+    "rawSpec": "6.0.1",
+    "saveSpec": null,
+    "fetchSpec": "6.0.1"
+  },
+  "_requiredBy": [
+    "/parse5-html-rewriting-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz",
+  "_spec": "6.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ivan Nikulin",
+    "email": "ifaaan@gmail.com",
+    "url": "https://github.com/inikulin"
+  },
+  "bugs": {
+    "url": "https://github.com/inikulin/parse5/issues"
+  },
+  "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
+  "dependencies": {
+    "parse5": "^6.0.1"
+  },
+  "description": "Streaming SAX-style HTML parser.",
+  "files": [
+    "lib"
+  ],
+  "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6",
+  "homepage": "https://github.com/inikulin/parse5",
+  "keywords": [
+    "parse5",
+    "parser",
+    "stream",
+    "streaming",
+    "SAX"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "parse5-sax-parser",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inikulin/parse5.git"
+  },
+  "version": "6.0.1"
 }
Index: trip-planner-front/node_modules/parse5/package.json
===================================================================
--- trip-planner-front/node_modules/parse5/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parse5/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,74 @@
 {
+  "_args": [
+    [
+      "parse5@6.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parse5@6.0.1",
+  "_id": "parse5@6.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+  "_location": "/parse5",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parse5@6.0.1",
     "name": "parse5",
-    "description": "HTML parser and serializer.",
-    "version": "6.0.1",
-    "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
-    "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
-    "homepage": "https://github.com/inikulin/parse5",
-    "keywords": [
-        "html",
-        "parser",
-        "html5",
-        "WHATWG",
-        "specification",
-        "fast",
-        "html parser",
-        "html5 parser",
-        "htmlparser",
-        "parse5",
-        "serializer",
-        "html serializer",
-        "htmlserializer",
-        "parse",
-        "serialize"
-    ],
-    "license": "MIT",
-    "main": "./lib/index.js",
-    "repository": {
-        "type": "git",
-        "url": "git://github.com/inikulin/parse5.git"
-    },
-    "files": [
-        "lib"
-    ],
-    "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6"
+    "escapedName": "parse5",
+    "rawSpec": "6.0.1",
+    "saveSpec": null,
+    "fetchSpec": "6.0.1"
+  },
+  "_requiredBy": [
+    "/critters",
+    "/parse5-html-rewriting-stream",
+    "/parse5-htmlparser2-tree-adapter",
+    "/parse5-sax-parser"
+  ],
+  "_resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+  "_spec": "6.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ivan Nikulin",
+    "email": "ifaaan@gmail.com",
+    "url": "https://github.com/inikulin"
+  },
+  "bugs": {
+    "url": "https://github.com/inikulin/parse5/issues"
+  },
+  "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
+  "description": "HTML parser and serializer.",
+  "files": [
+    "lib"
+  ],
+  "gitHead": "37227a3429584903cbd1799dade995266fc2dbe6",
+  "homepage": "https://github.com/inikulin/parse5",
+  "keywords": [
+    "html",
+    "parser",
+    "html5",
+    "WHATWG",
+    "specification",
+    "fast",
+    "html parser",
+    "html5 parser",
+    "htmlparser",
+    "parse5",
+    "serializer",
+    "html serializer",
+    "htmlserializer",
+    "parse",
+    "serialize"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "parse5",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/inikulin/parse5.git"
+  },
+  "version": "6.0.1"
 }
Index: trip-planner-front/node_modules/parseurl/package.json
===================================================================
--- trip-planner-front/node_modules/parseurl/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/parseurl/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,51 @@
 {
-  "name": "parseurl",
+  "_args": [
+    [
+      "parseurl@1.3.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "parseurl@1.3.3",
+  "_id": "parseurl@1.3.3",
+  "_inBundle": false,
+  "_integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+  "_location": "/parseurl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "parseurl@1.3.3",
+    "name": "parseurl",
+    "escapedName": "parseurl",
+    "rawSpec": "1.3.3",
+    "saveSpec": null,
+    "fetchSpec": "1.3.3"
+  },
+  "_requiredBy": [
+    "/connect",
+    "/express",
+    "/finalhandler",
+    "/serve-index",
+    "/serve-static"
+  ],
+  "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+  "_spec": "1.3.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/pillarjs/parseurl/issues"
+  },
+  "contributors": [
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
+  ],
   "description": "parse a url with memoization",
-  "version": "1.3.3",
-  "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
-  ],
-  "repository": "pillarjs/parseurl",
-  "license": "MIT",
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
@@ -22,4 +61,7 @@
     "mocha": "6.1.3"
   },
+  "engines": {
+    "node": ">= 0.8"
+  },
   "files": [
     "LICENSE",
@@ -28,6 +70,10 @@
     "index.js"
   ],
-  "engines": {
-    "node": ">= 0.8"
+  "homepage": "https://github.com/pillarjs/parseurl#readme",
+  "license": "MIT",
+  "name": "parseurl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/pillarjs/parseurl.git"
   },
   "scripts": {
@@ -37,4 +83,5 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"
-  }
+  },
+  "version": "1.3.3"
 }
Index: trip-planner-front/node_modules/pascalcase/package.json
===================================================================
--- trip-planner-front/node_modules/pascalcase/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pascalcase/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,51 @@
 {
-  "name": "pascalcase",
-  "description": "Convert a string to pascal-case.",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/pascalcase",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/pascalcase",
+  "_args": [
+    [
+      "pascalcase@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pascalcase@0.1.1",
+  "_id": "pascalcase@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+  "_location": "/pascalcase",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pascalcase@0.1.1",
+    "name": "pascalcase",
+    "escapedName": "pascalcase",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/pascalcase/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "Convert a string to pascal-case.",
   "devDependencies": {
     "mocha": "*",
     "should": "*"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/pascalcase",
   "keywords": [
     "camelcase",
@@ -33,4 +57,14 @@
     "string"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "pascalcase",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/pascalcase.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "related": {
@@ -43,4 +77,5 @@
       ]
     }
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/path-dirname/package.json
===================================================================
--- trip-planner-front/node_modules/path-dirname/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-dirname/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,15 +1,43 @@
 {
-  "name": "path-dirname",
-  "version": "1.0.2",
+  "_args": [
+    [
+      "path-dirname@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-dirname@1.0.2",
+  "_id": "path-dirname@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+  "_location": "/path-dirname",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-dirname@1.0.2",
+    "name": "path-dirname",
+    "escapedName": "path-dirname",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server/glob-parent"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Elan Shanker"
+  },
+  "bugs": {
+    "url": "https://github.com/es128/path-dirname/issues"
+  },
   "description": "Node.js path.dirname() ponyfill",
-  "license": "MIT",
-  "repository": "es128/path-dirname",
-  "author": "Elan Shanker",
-  "scripts": {
-    "test": "node test.js"
-  },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/es128/path-dirname#readme",
   "keywords": [
     "dirname",
@@ -26,4 +54,14 @@
     "polyfill",
     "shim"
-  ]
+  ],
+  "license": "MIT",
+  "name": "path-dirname",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/es128/path-dirname.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/path-exists/package.json
===================================================================
--- trip-planner-front/node_modules/path-exists/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-exists/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,75 @@
 {
-	"name": "path-exists",
-	"version": "4.0.0",
-	"description": "Check if a path exists",
-	"license": "MIT",
-	"repository": "sindresorhus/path-exists",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"path",
-		"exists",
-		"exist",
-		"file",
-		"filepath",
-		"fs",
-		"filesystem",
-		"file-system",
-		"access",
-		"stat"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "path-exists@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-exists@4.0.0",
+  "_id": "path-exists@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+  "_location": "/path-exists",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-exists@4.0.0",
+    "name": "path-exists",
+    "escapedName": "path-exists",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/find-up"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-exists/issues"
+  },
+  "description": "Check if a path exists",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/path-exists#readme",
+  "keywords": [
+    "path",
+    "exists",
+    "exist",
+    "file",
+    "filepath",
+    "fs",
+    "filesystem",
+    "file-system",
+    "access",
+    "stat"
+  ],
+  "license": "MIT",
+  "name": "path-exists",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-exists.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/path-is-absolute/package.json
===================================================================
--- trip-planner-front/node_modules/path-is-absolute/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-is-absolute/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,33 @@
 {
-  "name": "path-is-absolute",
-  "version": "1.0.1",
-  "description": "Node.js 0.12 path.isAbsolute() ponyfill",
-  "license": "MIT",
-  "repository": "sindresorhus/path-is-absolute",
+  "_args": [
+    [
+      "path-is-absolute@1.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-is-absolute@1.0.1",
+  "_id": "path-is-absolute@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+  "_location": "/path-is-absolute",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-is-absolute@1.0.1",
+    "name": "path-is-absolute",
+    "escapedName": "path-is-absolute",
+    "rawSpec": "1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "1.0.1"
+  },
+  "_requiredBy": [
+    "/glob",
+    "/webpack-dev-server/chokidar"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+  "_spec": "1.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +35,18 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-is-absolute/issues"
+  },
+  "description": "Node.js 0.12 path.isAbsolute() ponyfill",
+  "devDependencies": {
+    "xo": "^0.16.0"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && node test.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/path-is-absolute#readme",
   "keywords": [
     "path",
@@ -38,6 +68,13 @@
     "check"
   ],
-  "devDependencies": {
-    "xo": "^0.16.0"
-  }
+  "license": "MIT",
+  "name": "path-is-absolute",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-is-absolute.git"
+  },
+  "scripts": {
+    "test": "xo && node test.js"
+  },
+  "version": "1.0.1"
 }
Index: trip-planner-front/node_modules/path-is-inside/package.json
===================================================================
--- trip-planner-front/node_modules/path-is-inside/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-is-inside/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,67 @@
 {
+  "_args": [
+    [
+      "path-is-inside@1.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-is-inside@1.0.2",
+  "_id": "path-is-inside@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+  "_location": "/path-is-inside",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-is-inside@1.0.2",
     "name": "path-is-inside",
-    "description": "Tests whether one path is inside another path",
-    "keywords": ["path", "directory", "folder", "inside", "relative"],
-    "version": "1.0.2",
-    "author": "Domenic Denicola <d@domenic.me> (https://domenic.me)",
-    "license": "(WTFPL OR MIT)",
-    "repository": "domenic/path-is-inside",
-    "main": "lib/path-is-inside.js",
-    "files": [
-        "lib"
-    ],
-    "scripts": {
-        "test": "mocha",
-        "lint": "jshint lib"
-    },
-    "devDependencies": {
-        "jshint": "~2.3.0",
-        "mocha": "~1.15.1"
-    }
+    "escapedName": "path-is-inside",
+    "rawSpec": "1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "1.0.2"
+  },
+  "_requiredBy": [
+    "/is-path-inside"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+  "_spec": "1.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Domenic Denicola",
+    "email": "d@domenic.me",
+    "url": "https://domenic.me"
+  },
+  "bugs": {
+    "url": "https://github.com/domenic/path-is-inside/issues"
+  },
+  "description": "Tests whether one path is inside another path",
+  "devDependencies": {
+    "jshint": "~2.3.0",
+    "mocha": "~1.15.1"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/domenic/path-is-inside#readme",
+  "keywords": [
+    "path",
+    "directory",
+    "folder",
+    "inside",
+    "relative"
+  ],
+  "license": "(WTFPL OR MIT)",
+  "main": "lib/path-is-inside.js",
+  "name": "path-is-inside",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/domenic/path-is-inside.git"
+  },
+  "scripts": {
+    "lint": "jshint lib",
+    "test": "mocha"
+  },
+  "version": "1.0.2"
 }
Index: trip-planner-front/node_modules/path-key/package.json
===================================================================
--- trip-planner-front/node_modules/path-key/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-key/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,33 @@
 {
-  "name": "path-key",
-  "version": "2.0.1",
-  "description": "Get the PATH environment variable key cross-platform",
-  "license": "MIT",
-  "repository": "sindresorhus/path-key",
+  "_args": [
+    [
+      "path-key@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-key@2.0.1",
+  "_id": "path-key@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+  "_location": "/path-key",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-key@2.0.1",
+    "name": "path-key",
+    "escapedName": "path-key",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/cross-spawn",
+    "/npm-run-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,13 +35,19 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-key/issues"
+  },
+  "description": "Get the PATH environment variable key cross-platform",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=4"
-  },
-  "scripts": {
-    "test": "xo && ava"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/path-key#readme",
   "keywords": [
     "path",
@@ -30,8 +61,14 @@
     "windows"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
+  "license": "MIT",
+  "name": "path-key",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-key.git"
   },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.0.1",
   "xo": {
     "esnext": true
Index: trip-planner-front/node_modules/path-parse/package.json
===================================================================
--- trip-planner-front/node_modules/path-parse/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-parse/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,14 +1,41 @@
 {
-  "name": "path-parse",
-  "version": "1.0.7",
+  "_args": [
+    [
+      "path-parse@1.0.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-parse@1.0.7",
+  "_id": "path-parse@1.0.7",
+  "_inBundle": false,
+  "_integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+  "_location": "/path-parse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-parse@1.0.7",
+    "name": "path-parse",
+    "escapedName": "path-parse",
+    "rawSpec": "1.0.7",
+    "saveSpec": null,
+    "fetchSpec": "1.0.7"
+  },
+  "_requiredBy": [
+    "/resolve"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+  "_spec": "1.0.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Javier Blanco",
+    "email": "http://jbgutierrez.info"
+  },
+  "bugs": {
+    "url": "https://github.com/jbgutierrez/path-parse/issues"
+  },
   "description": "Node.js path.parse() ponyfill",
-  "main": "index.js",
-  "scripts": {
-    "test": "node test.js"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/jbgutierrez/path-parse.git"
-  },
+  "homepage": "https://github.com/jbgutierrez/path-parse#readme",
   "keywords": [
     "path",
@@ -25,9 +52,14 @@
     "shim"
   ],
-  "author": "Javier Blanco <http://jbgutierrez.info>",
   "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/jbgutierrez/path-parse/issues"
+  "main": "index.js",
+  "name": "path-parse",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jbgutierrez/path-parse.git"
   },
-  "homepage": "https://github.com/jbgutierrez/path-parse#readme"
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.0.7"
 }
Index: trip-planner-front/node_modules/path-to-regexp/package.json
===================================================================
--- trip-planner-front/node_modules/path-to-regexp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-to-regexp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,35 @@
 {
-  "name": "path-to-regexp",
-  "description": "Express style path to RegExp utility",
-  "version": "0.1.7",
-  "files": [
-    "index.js",
-    "LICENSE"
+  "_args": [
+    [
+      "path-to-regexp@0.1.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "test": "istanbul cover _mocha -- -R spec"
+  "_development": true,
+  "_from": "path-to-regexp@0.1.7",
+  "_id": "path-to-regexp@0.1.7",
+  "_inBundle": false,
+  "_integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+  "_location": "/path-to-regexp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-to-regexp@0.1.7",
+    "name": "path-to-regexp",
+    "escapedName": "path-to-regexp",
+    "rawSpec": "0.1.7",
+    "saveSpec": null,
+    "fetchSpec": "0.1.7"
   },
-  "keywords": [
-    "express",
-    "regexp"
+  "_requiredBy": [
+    "/express"
   ],
+  "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+  "_spec": "0.1.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/component/path-to-regexp/issues"
+  },
   "component": {
     "scripts": {
@@ -19,12 +37,27 @@
     }
   },
+  "description": "Express style path to RegExp utility",
+  "devDependencies": {
+    "istanbul": "^0.2.6",
+    "mocha": "^1.17.1"
+  },
+  "files": [
+    "index.js",
+    "LICENSE"
+  ],
+  "homepage": "https://github.com/component/path-to-regexp#readme",
+  "keywords": [
+    "express",
+    "regexp"
+  ],
   "license": "MIT",
+  "name": "path-to-regexp",
   "repository": {
     "type": "git",
-    "url": "https://github.com/component/path-to-regexp.git"
+    "url": "git+https://github.com/component/path-to-regexp.git"
   },
-  "devDependencies": {
-    "mocha": "^1.17.1",
-    "istanbul": "^0.2.6"
-  }
+  "scripts": {
+    "test": "istanbul cover _mocha -- -R spec"
+  },
+  "version": "0.1.7"
 }
Index: trip-planner-front/node_modules/path-type/package.json
===================================================================
--- trip-planner-front/node_modules/path-type/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/path-type/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,45 +1,82 @@
 {
-	"name": "path-type",
-	"version": "4.0.0",
-	"description": "Check if a path is a file, directory, or symlink",
-	"license": "MIT",
-	"repository": "sindresorhus/path-type",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && nyc ava && tsd-check"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"path",
-		"fs",
-		"type",
-		"is",
-		"check",
-		"directory",
-		"dir",
-		"file",
-		"filepath",
-		"symlink",
-		"symbolic",
-		"link",
-		"stat",
-		"stats",
-		"filesystem"
-	],
-	"devDependencies": {
-		"ava": "^1.3.1",
-		"nyc": "^13.3.0",
-		"tsd-check": "^0.3.0",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "path-type@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-type@4.0.0",
+  "_id": "path-type@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+  "_location": "/path-type",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-type@4.0.0",
+    "name": "path-type",
+    "escapedName": "path-type",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/cosmiconfig",
+    "/dir-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-type/issues"
+  },
+  "description": "Check if a path is a file, directory, or symlink",
+  "devDependencies": {
+    "ava": "^1.3.1",
+    "nyc": "^13.3.0",
+    "tsd-check": "^0.3.0",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/path-type#readme",
+  "keywords": [
+    "path",
+    "fs",
+    "type",
+    "is",
+    "check",
+    "directory",
+    "dir",
+    "file",
+    "filepath",
+    "symlink",
+    "symbolic",
+    "link",
+    "stat",
+    "stats",
+    "filesystem"
+  ],
+  "license": "MIT",
+  "name": "path-type",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-type.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava && tsd-check"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/performance-now/package.json
===================================================================
--- trip-planner-front/node_modules/performance-now/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/performance-now/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,17 +1,41 @@
 {
-  "name": "performance-now",
+  "_args": [
+    [
+      "performance-now@2.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "performance-now@2.1.0",
+  "_id": "performance-now@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+  "_location": "/performance-now",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "performance-now@2.1.0",
+    "name": "performance-now",
+    "escapedName": "performance-now",
+    "rawSpec": "2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "2.1.0"
+  },
+  "_requiredBy": [
+    "/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+  "_spec": "2.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Braveg1rl",
+    "email": "braveg1rl@outlook.com"
+  },
+  "bugs": {
+    "url": "https://github.com/braveg1rl/performance-now/issues"
+  },
+  "dependencies": {},
   "description": "Implements performance.now (based on process.hrtime).",
-  "keywords": [],
-  "version": "2.1.0",
-  "author": "Braveg1rl <braveg1rl@outlook.com>",
-  "license": "MIT",
-  "homepage": "https://github.com/braveg1rl/performance-now",
-  "bugs": "https://github.com/braveg1rl/performance-now/issues",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/braveg1rl/performance-now.git"
-  },
-  "private": false,
-  "dependencies": {},
   "devDependencies": {
     "bluebird": "^3.4.7",
@@ -23,13 +47,23 @@
     "pre-commit": "^1.2.2"
   },
+  "homepage": "https://github.com/braveg1rl/performance-now",
+  "keywords": [],
+  "license": "MIT",
+  "main": "lib/performance-now.js",
+  "name": "performance-now",
   "optionalDependencies": {},
-  "main": "lib/performance-now.js",
+  "private": false,
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/braveg1rl/performance-now.git"
+  },
   "scripts": {
     "build": "mkdir -p lib && rm -rf lib/* && node_modules/.bin/coffee --compile -m --output lib/ src/",
     "prepublish": "npm test",
     "pretest": "npm run build",
-    "test": "node_modules/.bin/mocha",
-    "watch": "node_modules/.bin/coffee --watch --compile --output lib/ src/"
+    "test": "mocha",
+    "watch": "coffee --watch --compile --output lib/ src/"
   },
-  "typings": "src/index.d.ts"
+  "typings": "src/index.d.ts",
+  "version": "2.1.0"
 }
Index: trip-planner-front/node_modules/picocolors/package.json
===================================================================
--- trip-planner-front/node_modules/picocolors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/picocolors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,77 @@
 {
-  "name": "picocolors",
-  "version": "0.2.1",
-  "main": "./picocolors.js",
-  "types": "./picocolors.d.ts",
+  "_args": [
+    [
+      "picocolors@0.2.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "picocolors@0.2.1",
+  "_id": "picocolors@0.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+  "_location": "/picocolors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "picocolors@0.2.1",
+    "name": "picocolors",
+    "escapedName": "picocolors",
+    "rawSpec": "0.2.1",
+    "saveSpec": null,
+    "fetchSpec": "0.2.1"
+  },
+  "_requiredBy": [
+    "/autoprefixer",
+    "/autoprefixer/postcss",
+    "/browserslist",
+    "/css-blank-pseudo/postcss",
+    "/css-has-pseudo/postcss",
+    "/css-prefers-color-scheme/postcss",
+    "/postcss-attribute-case-insensitive/postcss",
+    "/postcss-color-functional-notation/postcss",
+    "/postcss-color-gray/postcss",
+    "/postcss-color-hex-alpha/postcss",
+    "/postcss-color-mod-function/postcss",
+    "/postcss-color-rebeccapurple/postcss",
+    "/postcss-custom-media/postcss",
+    "/postcss-custom-properties/postcss",
+    "/postcss-custom-selectors/postcss",
+    "/postcss-dir-pseudo-class/postcss",
+    "/postcss-double-position-gradients/postcss",
+    "/postcss-env-function/postcss",
+    "/postcss-focus-visible/postcss",
+    "/postcss-focus-within/postcss",
+    "/postcss-font-variant/postcss",
+    "/postcss-gap-properties/postcss",
+    "/postcss-image-set-function/postcss",
+    "/postcss-initial/postcss",
+    "/postcss-lab-function/postcss",
+    "/postcss-logical/postcss",
+    "/postcss-media-minmax/postcss",
+    "/postcss-nesting/postcss",
+    "/postcss-overflow-shorthand/postcss",
+    "/postcss-page-break/postcss",
+    "/postcss-place/postcss",
+    "/postcss-preset-env/postcss",
+    "/postcss-pseudo-class-any-link/postcss",
+    "/postcss-replace-overflow-wrap/postcss",
+    "/postcss-selector-matches/postcss",
+    "/postcss-selector-not/postcss",
+    "/resolve-url-loader/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+  "_spec": "0.2.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Alexey Raspopov"
+  },
   "browser": {
     "./picocolors.js": "./picocolors.browser.js"
   },
-  "sideEffects": false,
+  "bugs": {
+    "url": "https://github.com/alexeyraspopov/picocolors/issues"
+  },
   "description": "The tiniest and the fastest coloring library ever",
   "files": [
@@ -13,4 +79,5 @@
     "types.ts"
   ],
+  "homepage": "https://github.com/alexeyraspopov/picocolors#readme",
   "keywords": [
     "terminal",
@@ -20,6 +87,13 @@
     "console"
   ],
-  "author": "Alexey Raspopov",
-  "repository": "alexeyraspopov/picocolors",
-  "license": "ISC"
+  "license": "ISC",
+  "main": "./picocolors.js",
+  "name": "picocolors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/alexeyraspopov/picocolors.git"
+  },
+  "sideEffects": false,
+  "types": "./picocolors.d.ts",
+  "version": "0.2.1"
 }
Index: trip-planner-front/node_modules/picomatch/package.json
===================================================================
--- trip-planner-front/node_modules/picomatch/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/picomatch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,42 @@
 {
-  "name": "picomatch",
-  "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.",
-  "version": "2.3.0",
-  "homepage": "https://github.com/micromatch/picomatch",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "funding": "https://github.com/sponsors/jonschlinkert",
-  "repository": "micromatch/picomatch",
+  "_args": [
+    [
+      "picomatch@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "picomatch@2.3.0",
+  "_id": "picomatch@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+  "_location": "/picomatch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "picomatch@2.3.0",
+    "name": "picomatch",
+    "escapedName": "picomatch",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/anymatch",
+    "/micromatch",
+    "/readdirp"
+  ],
+  "_resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/micromatch/picomatch/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js",
-    "lib"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=8.6"
-  },
-  "scripts": {
-    "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .",
-    "mocha": "mocha --reporter dot",
-    "test": "npm run lint && npm run mocha",
-    "test:ci": "npm run test:cover",
-    "test:cover": "nyc npm run mocha"
-  },
+  "description": "Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.",
   "devDependencies": {
     "eslint": "^6.8.0",
@@ -34,4 +47,13 @@
     "time-require": "github:jonschlinkert/time-require"
   },
+  "engines": {
+    "node": ">=8.6"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "funding": "https://github.com/sponsors/jonschlinkert",
+  "homepage": "https://github.com/micromatch/picomatch",
   "keywords": [
     "glob",
@@ -39,4 +61,7 @@
     "picomatch"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "picomatch",
   "nyc": {
     "reporter": [
@@ -45,4 +70,15 @@
       "text-summary"
     ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/picomatch.git"
+  },
+  "scripts": {
+    "lint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives --ignore-path .gitignore .",
+    "mocha": "mocha --reporter dot",
+    "test": "npm run lint && npm run mocha",
+    "test:ci": "npm run test:cover",
+    "test:cover": "nyc npm run mocha"
   },
   "verb": {
@@ -78,4 +114,5 @@
       "picomatch"
     ]
-  }
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/pify/package.json
===================================================================
--- trip-planner-front/node_modules/pify/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pify/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "pify",
-  "version": "2.3.0",
-  "description": "Promisify a callback-style function",
-  "license": "MIT",
-  "repository": "sindresorhus/pify",
+  "_args": [
+    [
+      "pify@2.3.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pify@2.3.0",
+  "_id": "pify@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+  "_location": "/pify",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pify@2.3.0",
+    "name": "pify",
+    "escapedName": "pify",
+    "rawSpec": "2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "2.3.0"
+  },
+  "_requiredBy": [
+    "/read-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+  "_spec": "2.3.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Sindre Sorhus",
@@ -10,14 +34,21 @@
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pify/issues"
+  },
+  "description": "Promisify a callback-style function",
+  "devDependencies": {
+    "ava": "*",
+    "pinkie-promise": "^1.0.0",
+    "v8-natives": "0.0.2",
+    "xo": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "xo && ava && npm run optimization-test",
-    "optimization-test": "node --allow-natives-syntax optimization-test.js"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/sindresorhus/pify#readme",
   "keywords": [
     "promise",
@@ -40,9 +71,14 @@
     "es2015"
   ],
-  "devDependencies": {
-    "ava": "*",
-    "pinkie-promise": "^1.0.0",
-    "v8-natives": "0.0.2",
-    "xo": "*"
-  }
+  "license": "MIT",
+  "name": "pify",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pify.git"
+  },
+  "scripts": {
+    "optimization-test": "node --allow-natives-syntax optimization-test.js",
+    "test": "xo && ava && npm run optimization-test"
+  },
+  "version": "2.3.0"
 }
Index: trip-planner-front/node_modules/pinkie-promise/package.json
===================================================================
--- trip-planner-front/node_modules/pinkie-promise/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pinkie-promise/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "pinkie-promise",
-  "version": "2.0.1",
-  "description": "ES2015 Promise ponyfill",
-  "license": "MIT",
-  "repository": "floatdrop/pinkie-promise",
+  "_args": [
+    [
+      "pinkie-promise@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pinkie-promise@2.0.1",
+  "_id": "pinkie-promise@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+  "_location": "/pinkie-promise",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pinkie-promise@2.0.1",
+    "name": "pinkie-promise",
+    "escapedName": "pinkie-promise",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/del/globby"
+  ],
+  "_resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Vsevolod Strukchinsky",
@@ -10,13 +34,21 @@
     "url": "github.com/floatdrop"
   },
+  "bugs": {
+    "url": "https://github.com/floatdrop/pinkie-promise/issues"
+  },
+  "dependencies": {
+    "pinkie": "^2.0.0"
+  },
+  "description": "ES2015 Promise ponyfill",
+  "devDependencies": {
+    "mocha": "*"
+  },
   "engines": {
     "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
   },
   "files": [
     "index.js"
   ],
+  "homepage": "https://github.com/floatdrop/pinkie-promise#readme",
   "keywords": [
     "promise",
@@ -27,9 +59,13 @@
     "ponyfill"
   ],
-  "dependencies": {
-    "pinkie": "^2.0.0"
+  "license": "MIT",
+  "name": "pinkie-promise",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/floatdrop/pinkie-promise.git"
   },
-  "devDependencies": {
-    "mocha": "*"
-  }
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/pinkie/package.json
===================================================================
--- trip-planner-front/node_modules/pinkie/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pinkie/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,32 @@
 {
-  "name": "pinkie",
-  "version": "2.0.4",
-  "description": "Itty bitty little widdle twinkie pinkie ES2015 Promise implementation",
-  "license": "MIT",
-  "repository": "floatdrop/pinkie",
+  "_args": [
+    [
+      "pinkie@2.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pinkie@2.0.4",
+  "_id": "pinkie@2.0.4",
+  "_inBundle": false,
+  "_integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+  "_location": "/pinkie",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pinkie@2.0.4",
+    "name": "pinkie",
+    "escapedName": "pinkie",
+    "rawSpec": "2.0.4",
+    "saveSpec": null,
+    "fetchSpec": "2.0.4"
+  },
+  "_requiredBy": [
+    "/pinkie-promise"
+  ],
+  "_resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+  "_spec": "2.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Vsevolod Strukchinsky",
@@ -10,20 +34,8 @@
     "url": "github.com/floatdrop"
   },
-  "engines": {
-    "node": ">=0.10.0"
+  "bugs": {
+    "url": "https://github.com/floatdrop/pinkie/issues"
   },
-  "scripts": {
-    "test": "xo && nyc mocha",
-    "coverage": "nyc report --reporter=text-lcov | coveralls"
-  },
-  "files": [
-    "index.js"
-  ],
-  "keywords": [
-    "promise",
-    "promises",
-    "es2015",
-    "es6"
-  ],
+  "description": "Itty bitty little widdle twinkie pinkie ES2015 Promise implementation",
   "devDependencies": {
     "core-assert": "^0.1.1",
@@ -33,4 +45,28 @@
     "promises-aplus-tests": "*",
     "xo": "^0.10.1"
-  }
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/floatdrop/pinkie#readme",
+  "keywords": [
+    "promise",
+    "promises",
+    "es2015",
+    "es6"
+  ],
+  "license": "MIT",
+  "name": "pinkie",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/floatdrop/pinkie.git"
+  },
+  "scripts": {
+    "coverage": "nyc report --reporter=text-lcov | coveralls",
+    "test": "xo && nyc mocha"
+  },
+  "version": "2.0.4"
 }
Index: trip-planner-front/node_modules/piscina/package.json
===================================================================
--- trip-planner-front/node_modules/piscina/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/piscina/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,56 @@
 {
-  "name": "piscina",
-  "version": "3.1.0",
+  "_args": [
+    [
+      "piscina@3.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "piscina@3.1.0",
+  "_id": "piscina@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==",
+  "_location": "/piscina",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "piscina@3.1.0",
+    "name": "piscina",
+    "escapedName": "piscina",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James M Snell",
+    "email": "jasnell@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/piscinajs/piscina/issues"
+  },
+  "contributors": [
+    {
+      "name": "Anna Henningsen",
+      "email": "anna@addaleax.net"
+    },
+    {
+      "name": "Matteo Collina",
+      "email": "matteo.collina@gmail.com"
+    }
+  ],
+  "dependencies": {
+    "eventemitter-asyncresource": "^1.0.0",
+    "hdr-histogram-js": "^2.0.1",
+    "hdr-histogram-percentiles-obj": "^3.0.0",
+    "nice-napi": "^1.0.2"
+  },
   "description": "A fast, efficient Node.js Worker Thread Pool implementation",
-  "main": "./dist/src/index.js",
-  "exports": {
-    "import": "./dist/esm-wrapper.mjs",
-    "require": "./dist/src/index.js"
-  },
-  "types": "./dist/src/index.d.ts",
-  "scripts": {
-    "build": "tsc && gen-esm-wrapper . dist/esm-wrapper.mjs",
-    "lint": "standardx \"**/*.{ts,mjs,js,cjs}\" | snazzy",
-    "test": "npm run lint && npm run build && npm run test-only",
-    "test-only": "tap --ts",
-    "prepack": "npm run build"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/piscinajs/piscina.git"
-  },
-  "keywords": [
-    "fast",
-    "worker threads",
-    "thread pool",
-    "wade wilson"
-  ],
-  "author": "James M Snell <jasnell@gmail.com>",
-  "contributors": [
-    "Anna Henningsen <anna@addaleax.net>",
-    "Matteo Collina <matteo.collina@gmail.com>"
-  ],
-  "license": "MIT",
   "devDependencies": {
     "@types/node": "^15.0.1",
@@ -45,11 +66,7 @@
     "typescript": "^4.2.4"
   },
-  "dependencies": {
-    "eventemitter-asyncresource": "^1.0.0",
-    "hdr-histogram-js": "^2.0.1",
-    "hdr-histogram-percentiles-obj": "^3.0.0"
-  },
-  "optionalDependencies": {
-    "nice-napi": "^1.0.2"
+  "directories": {
+    "example": "examples",
+    "test": "test"
   },
   "eslintConfig": {
@@ -72,4 +89,32 @@
     }
   },
+  "exports": {
+    "import": "./dist/esm-wrapper.mjs",
+    "require": "./dist/src/index.js"
+  },
+  "homepage": "https://github.com/piscinajs/piscina#readme",
+  "keywords": [
+    "fast",
+    "worker threads",
+    "thread pool",
+    "wade wilson"
+  ],
+  "license": "MIT",
+  "main": "./dist/src/index.js",
+  "name": "piscina",
+  "optionalDependencies": {
+    "nice-napi": "^1.0.2"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/piscinajs/piscina.git"
+  },
+  "scripts": {
+    "build": "tsc && gen-esm-wrapper . dist/esm-wrapper.mjs",
+    "lint": "standardx \"**/*.{ts,mjs,js,cjs}\" | snazzy",
+    "prepack": "npm run build",
+    "test": "npm run lint && npm run build && npm run test-only",
+    "test-only": "tap --ts"
+  },
   "standardx": {
     "parser": "@typescript-eslint/parser",
@@ -78,11 +123,5 @@
     ]
   },
-  "bugs": {
-    "url": "https://github.com/piscinajs/piscina/issues"
-  },
-  "homepage": "https://github.com/piscinajs/piscina#readme",
-  "directories": {
-    "example": "examples",
-    "test": "test"
-  }
+  "types": "./dist/src/index.d.ts",
+  "version": "3.1.0"
 }
Index: trip-planner-front/node_modules/pkg-dir/package.json
===================================================================
--- trip-planner-front/node_modules/pkg-dir/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pkg-dir/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,56 +1,92 @@
 {
-	"name": "pkg-dir",
-	"version": "4.2.0",
-	"description": "Find the root directory of a Node.js project or npm package",
-	"license": "MIT",
-	"repository": "sindresorhus/pkg-dir",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=8"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"package",
-		"json",
-		"root",
-		"npm",
-		"entry",
-		"find",
-		"up",
-		"find-up",
-		"findup",
-		"look-up",
-		"look",
-		"file",
-		"search",
-		"match",
-		"resolve",
-		"parent",
-		"parents",
-		"folder",
-		"directory",
-		"dir",
-		"walk",
-		"walking",
-		"path"
-	],
-	"dependencies": {
-		"find-up": "^4.0.0"
-	},
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tempy": "^0.3.0",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "pkg-dir@4.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pkg-dir@4.2.0",
+  "_id": "pkg-dir@4.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+  "_location": "/pkg-dir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pkg-dir@4.2.0",
+    "name": "pkg-dir",
+    "escapedName": "pkg-dir",
+    "rawSpec": "4.2.0",
+    "saveSpec": null,
+    "fetchSpec": "4.2.0"
+  },
+  "_requiredBy": [
+    "/find-cache-dir"
+  ],
+  "_resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+  "_spec": "4.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pkg-dir/issues"
+  },
+  "dependencies": {
+    "find-up": "^4.0.0"
+  },
+  "description": "Find the root directory of a Node.js project or npm package",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tempy": "^0.3.0",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=8"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/pkg-dir#readme",
+  "keywords": [
+    "package",
+    "json",
+    "root",
+    "npm",
+    "entry",
+    "find",
+    "up",
+    "find-up",
+    "findup",
+    "look-up",
+    "look",
+    "file",
+    "search",
+    "match",
+    "resolve",
+    "parent",
+    "parents",
+    "folder",
+    "directory",
+    "dir",
+    "walk",
+    "walking",
+    "path"
+  ],
+  "license": "MIT",
+  "name": "pkg-dir",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pkg-dir.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "4.2.0"
 }
Index: trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp
===================================================================
--- trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  "$basedir/node"  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  node  "$basedir/../mkdirp/bin/cmd.js" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.cmd
===================================================================
--- trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\mkdirp\bin\cmd.js" %*
+"%_prog%"  "%dp0%\..\mkdirp\bin\cmd.js" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.ps1
===================================================================
--- trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/node_modules/.bin/mkdirp.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  } else {
-    & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
-  }
+  & "node$exe"  "$basedir/../mkdirp/bin/cmd.js" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/portfinder/node_modules/debug/package.json
===================================================================
--- trip-planner-front/node_modules/portfinder/node_modules/debug/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/node_modules/debug/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,31 +1,55 @@
 {
-  "name": "debug",
-  "version": "3.2.7",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/visionmedia/debug.git"
+  "_args": [
+    [
+      "debug@3.2.7",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "debug@3.2.7",
+  "_id": "debug@3.2.7",
+  "_inBundle": false,
+  "_integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+  "_location": "/portfinder/debug",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "debug@3.2.7",
+    "name": "debug",
+    "escapedName": "debug",
+    "rawSpec": "3.2.7",
+    "saveSpec": null,
+    "fetchSpec": "3.2.7"
   },
-  "description": "small debugging utility",
-  "keywords": [
-    "debug",
-    "log",
-    "debugger"
+  "_requiredBy": [
+    "/portfinder"
   ],
-  "files": [
-    "src",
-    "node.js",
-    "dist/debug.js",
-    "LICENSE",
-    "README.md"
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+  "_spec": "3.2.7",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "TJ Holowaychuk",
+    "email": "tj@vision-media.ca"
+  },
+  "browser": "./src/browser.js",
+  "bugs": {
+    "url": "https://github.com/visionmedia/debug/issues"
+  },
+  "contributors": [
+    {
+      "name": "Nathan Rajlich",
+      "email": "nathan@tootallnate.net",
+      "url": "http://n8.io"
+    },
+    {
+      "name": "Andrew Rhyne",
+      "email": "rhyneandrew@gmail.com"
+    }
   ],
-  "author": "TJ Holowaychuk <tj@vision-media.ca>",
-  "contributors": [
-    "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)",
-    "Andrew Rhyne <rhyneandrew@gmail.com>"
-  ],
-  "license": "MIT",
   "dependencies": {
     "ms": "^2.1.1"
   },
+  "description": "small debugging utility",
   "devDependencies": {
     "@babel/cli": "^7.0.0",
@@ -46,6 +70,25 @@
     "xo": "^0.23.0"
   },
+  "files": [
+    "src",
+    "node.js",
+    "dist/debug.js",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/visionmedia/debug#readme",
+  "keywords": [
+    "debug",
+    "log",
+    "debugger"
+  ],
+  "license": "MIT",
   "main": "./src/index.js",
-  "browser": "./src/browser.js",
-  "unpkg": "./dist/debug.js"
+  "name": "debug",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/visionmedia/debug.git"
+  },
+  "unpkg": "./dist/debug.js",
+  "version": "3.2.7"
 }
Index: trip-planner-front/node_modules/portfinder/node_modules/mkdirp/package.json
===================================================================
--- trip-planner-front/node_modules/portfinder/node_modules/mkdirp/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/node_modules/mkdirp/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,73 @@
 {
-  "name": "mkdirp",
+  "_args": [
+    [
+      "mkdirp@0.5.5",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "mkdirp@0.5.5",
+  "_id": "mkdirp@0.5.5",
+  "_inBundle": false,
+  "_integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+  "_location": "/portfinder/mkdirp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "mkdirp@0.5.5",
+    "name": "mkdirp",
+    "escapedName": "mkdirp",
+    "rawSpec": "0.5.5",
+    "saveSpec": null,
+    "fetchSpec": "0.5.5"
+  },
+  "_requiredBy": [
+    "/portfinder"
+  ],
+  "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+  "_spec": "0.5.5",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bin": {
+    "mkdirp": "bin/cmd.js"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-mkdirp/issues"
+  },
+  "dependencies": {
+    "minimist": "^1.2.5"
+  },
   "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "0.5.5",
-  "publishConfig": {
-    "tag": "legacy"
+  "devDependencies": {
+    "mock-fs": "^3.7.0",
+    "tap": "^5.4.2"
   },
-  "author": "James Halliday <mail@substack.net> (http://substack.net)",
-  "main": "index.js",
+  "files": [
+    "bin",
+    "index.js"
+  ],
+  "homepage": "https://github.com/substack/node-mkdirp#readme",
   "keywords": [
     "mkdir",
     "directory"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "mkdirp",
+  "publishConfig": {
+    "tag": "legacy"
+  },
   "repository": {
     "type": "git",
-    "url": "https://github.com/substack/node-mkdirp.git"
+    "url": "git+https://github.com/substack/node-mkdirp.git"
   },
   "scripts": {
     "test": "tap test/*.js"
   },
-  "dependencies": {
-    "minimist": "^1.2.5"
-  },
-  "devDependencies": {
-    "mock-fs": "^3.7.0",
-    "tap": "^5.4.2"
-  },
-  "bin": "bin/cmd.js",
-  "license": "MIT",
-  "files": [
-    "bin",
-    "index.js"
-  ]
+  "version": "0.5.5"
 }
Index: trip-planner-front/node_modules/portfinder/package.json
===================================================================
--- trip-planner-front/node_modules/portfinder/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/portfinder/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,59 @@
 {
-  "name": "portfinder",
+  "_args": [
+    [
+      "portfinder@1.0.28",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "portfinder@1.0.28",
+  "_id": "portfinder@1.0.28",
+  "_inBundle": false,
+  "_integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+  "_location": "/portfinder",
+  "_phantomChildren": {
+    "minimist": "1.2.5",
+    "ms": "2.1.2"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "portfinder@1.0.28",
+    "name": "portfinder",
+    "escapedName": "portfinder",
+    "rawSpec": "1.0.28",
+    "saveSpec": null,
+    "fetchSpec": "1.0.28"
+  },
+  "_requiredBy": [
+    "/webpack-dev-server"
+  ],
+  "_resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+  "_spec": "1.0.28",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Charlie Robbins",
+    "email": "charlie.robbins@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/http-party/node-portfinder/issues"
+  },
+  "dependencies": {
+    "async": "^2.6.2",
+    "debug": "^3.1.1",
+    "mkdirp": "^0.5.5"
+  },
   "description": "A simple tool to find an open port on the current machine",
-  "version": "1.0.28",
-  "author": "Charlie Robbins <charlie.robbins@gmail.com>",
-  "repository": {
-    "type": "git",
-    "url": "git@github.com:http-party/node-portfinder.git"
+  "devDependencies": {
+    "glob": "^7.1.4",
+    "vows": "^0.8.2"
   },
+  "engines": {
+    "node": ">= 0.12.0"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/http-party/node-portfinder#readme",
   "keywords": [
     "http",
@@ -13,24 +61,15 @@
     "utilities"
   ],
-  "files": [
-    "lib"
-  ],
-  "dependencies": {
-    "async": "^2.6.2",
-    "debug": "^3.1.1",
-    "mkdirp": "^0.5.5"
+  "license": "MIT",
+  "main": "./lib/portfinder",
+  "name": "portfinder",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/http-party/node-portfinder.git"
   },
-  "devDependencies": {
-    "glob": "^7.1.4",
-    "vows": "^0.8.2"
-  },
-  "main": "./lib/portfinder",
-  "types": "./lib/portfinder.d.ts",
   "scripts": {
     "test": "vows test/*-test.js --spec"
   },
-  "engines": {
-    "node": ">= 0.12.0"
-  },
-  "license": "MIT"
+  "types": "./lib/portfinder.d.ts",
+  "version": "1.0.28"
 }
Index: trip-planner-front/node_modules/posix-character-classes/package.json
===================================================================
--- trip-planner-front/node_modules/posix-character-classes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/posix-character-classes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,51 @@
 {
-  "name": "posix-character-classes",
-  "description": "POSIX character classes for creating regular expressions.",
-  "version": "0.1.1",
-  "homepage": "https://github.com/jonschlinkert/posix-character-classes",
-  "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
-  "repository": "jonschlinkert/posix-character-classes",
+  "_args": [
+    [
+      "posix-character-classes@0.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "posix-character-classes@0.1.1",
+  "_id": "posix-character-classes@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+  "_location": "/posix-character-classes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "posix-character-classes@0.1.1",
+    "name": "posix-character-classes",
+    "escapedName": "posix-character-classes",
+    "rawSpec": "0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "0.1.1"
+  },
+  "_requiredBy": [
+    "/expand-brackets"
+  ],
+  "_resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+  "_spec": "0.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
   "bugs": {
     "url": "https://github.com/jonschlinkert/posix-character-classes/issues"
   },
-  "license": "MIT",
-  "files": [
-    "index.js"
-  ],
-  "main": "index.js",
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "mocha"
-  },
+  "description": "POSIX character classes for creating regular expressions.",
   "devDependencies": {
     "gulp-format-md": "^0.1.12",
     "mocha": "^3.2.0"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/posix-character-classes",
   "keywords": [
     "character",
@@ -29,4 +53,14 @@
     "posix"
   ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "posix-character-classes",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/posix-character-classes.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
   "verb": {
     "toc": false,
@@ -51,4 +85,5 @@
       "expand-brackets"
     ]
-  }
+  },
+  "version": "0.1.1"
 }
Index: trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-attribute-case-insensitive/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-attribute-case-insensitive"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-attribute-case-insensitive/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-attribute-case-insensitive/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-attribute-case-insensitive/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-attribute-case-insensitive/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-attribute-case-insensitive/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-attribute-case-insensitive/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,45 @@
 {
-  "name": "postcss-attribute-case-insensitive",
-  "version": "4.0.2",
-  "description": "PostCSS plugin to support case insensitive attributes",
-  "main": "dist/index.js",
-  "scripts": {
-    "test": "eslint src && npm run prepublish && mocha --require @babel/register",
-    "prepublish": "babel src --out-dir dist"
+  "_args": [
+    [
+      "postcss-attribute-case-insensitive@4.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-attribute-case-insensitive@4.0.2",
+  "_id": "postcss-attribute-case-insensitive@4.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==",
+  "_location": "/postcss-attribute-case-insensitive",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/Semigradsky/postcss-attribute-case-insensitive.git"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-attribute-case-insensitive@4.0.2",
+    "name": "postcss-attribute-case-insensitive",
+    "escapedName": "postcss-attribute-case-insensitive",
+    "rawSpec": "4.0.2",
+    "saveSpec": null,
+    "fetchSpec": "4.0.2"
   },
-  "keywords": [
-    "postcss",
-    "css",
-    "postcss-plugin",
-    "attribute",
-    "insensitive",
-    "sensitive",
-    "CSS4"
+  "_requiredBy": [
+    "/postcss-preset-env"
   ],
-  "author": "Dmitry Semigradsky",
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz",
+  "_spec": "4.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Dmitry Semigradsky"
+  },
   "bugs": {
     "url": "https://github.com/Semigradsky/postcss-attribute-case-insensitive/issues"
   },
-  "homepage": "https://github.com/Semigradsky/postcss-attribute-case-insensitive#readme",
+  "dependencies": {
+    "postcss": "^7.0.2",
+    "postcss-selector-parser": "^6.0.2"
+  },
+  "description": "PostCSS plugin to support case insensitive attributes",
   "devDependencies": {
     "@babel/cli": "^7.8.3",
@@ -39,7 +54,25 @@
     "mocha": "^5.2.0"
   },
-  "dependencies": {
-    "postcss": "^7.0.2",
-    "postcss-selector-parser": "^6.0.2"
-  }
+  "homepage": "https://github.com/Semigradsky/postcss-attribute-case-insensitive#readme",
+  "keywords": [
+    "postcss",
+    "css",
+    "postcss-plugin",
+    "attribute",
+    "insensitive",
+    "sensitive",
+    "CSS4"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "postcss-attribute-case-insensitive",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Semigradsky/postcss-attribute-case-insensitive.git"
+  },
+  "scripts": {
+    "prepublish": "babel src --out-dir dist",
+    "test": "eslint src && npm run prepublish && mocha --require @babel/register"
+  },
+  "version": "4.0.2"
 }
Index: trip-planner-front/node_modules/postcss-calc/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-calc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-calc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,34 +1,49 @@
 {
-  "name": "postcss-calc",
-  "version": "8.0.0",
+  "_args": [
+    [
+      "postcss-calc@8.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-calc@8.0.0",
+  "_id": "postcss-calc@8.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==",
+  "_location": "/postcss-calc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-calc@8.0.0",
+    "name": "postcss-calc",
+    "escapedName": "postcss-calc",
+    "rawSpec": "8.0.0",
+    "saveSpec": null,
+    "fetchSpec": "8.0.0"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz",
+  "_spec": "8.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andy Jansson"
+  },
+  "ava": {
+    "require": [
+      "@babel/register",
+      "@babel/polyfill"
+    ]
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-calc/issues"
+  },
+  "dependencies": {
+    "postcss-selector-parser": "^6.0.2",
+    "postcss-value-parser": "^4.0.2"
+  },
   "description": "PostCSS plugin to reduce calc()",
-  "keywords": [
-    "css",
-    "postcss",
-    "postcss-plugin",
-    "calculation",
-    "calc"
-  ],
-  "main": "dist/index.js",
-  "files": [
-    "dist",
-    "LICENSE"
-  ],
-  "scripts": {
-    "prepublish": "npm run build",
-    "build": "del-cli dist && cross-env BABEL_ENV=publish babel src --out-dir dist --ignore src/__tests__/**/*.js && jison src/parser.jison -o dist/parser.js",
-    "pretest": "npm run build && eslint src",
-    "test": "ava"
-  },
-  "author": "Andy Jansson",
-  "license": "MIT",
-  "repository": "https://github.com/postcss/postcss-calc.git",
-  "eslintConfig": {
-    "parser": "babel-eslint",
-    "extends": "eslint-config-i-am-meticulous",
-    "rules": {
-      "curly": "error"
-    }
-  },
   "devDependencies": {
     "@babel/cli": "^7.1.2",
@@ -49,16 +64,39 @@
     "postcss": "^8.2.2"
   },
-  "dependencies": {
-    "postcss-selector-parser": "^6.0.2",
-    "postcss-value-parser": "^4.0.2"
+  "eslintConfig": {
+    "parser": "babel-eslint",
+    "extends": "eslint-config-i-am-meticulous",
+    "rules": {
+      "curly": "error"
+    }
   },
+  "files": [
+    "dist",
+    "LICENSE"
+  ],
+  "homepage": "https://github.com/postcss/postcss-calc#readme",
+  "keywords": [
+    "css",
+    "postcss",
+    "postcss-plugin",
+    "calculation",
+    "calc"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "postcss-calc",
   "peerDependencies": {
     "postcss": "^8.2.2"
   },
-  "ava": {
-    "require": [
-      "@babel/register",
-      "@babel/polyfill"
-    ]
-  }
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-calc.git"
+  },
+  "scripts": {
+    "build": "del-cli dist && cross-env BABEL_ENV=publish babel src --out-dir dist --ignore src/__tests__/**/*.js && jison src/parser.jison -o dist/parser.js",
+    "prepublish": "npm run build",
+    "pretest": "npm run build && eslint src",
+    "test": "ava"
+  },
+  "version": "8.0.0"
 }
Index: trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-color-functional-notation/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-color-functional-notation"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-functional-notation/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-color-functional-notation/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-functional-notation/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-color-functional-notation/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-functional-notation/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-functional-notation/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-color-functional-notation",
-  "version": "2.0.1",
-  "description": "Use space and slash separated color notation in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-color-functional-notation",
-  "homepage": "https://github.com/jonathantneal/postcss-color-functional-notation#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-color-functional-notation/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-color-functional-notation@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-color-functional-notation@2.0.1",
+  "_id": "postcss-color-functional-notation@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
+  "_location": "/postcss-color-functional-notation",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-color-functional-notation@2.0.1",
+    "name": "postcss-color-functional-notation",
+    "escapedName": "postcss-color-functional-notation",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-color-functional-notation/issues"
   },
   "dependencies": {
@@ -31,4 +42,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use space and slash separated color notation in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -42,8 +54,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-color-functional-notation#readme",
   "keywords": [
     "postcss",
@@ -63,4 +85,21 @@
     "space",
     "comma"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-color-functional-notation",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-color-functional-notation.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/postcss-color-gray/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-gray/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-gray/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-color-gray/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-color-gray"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-color-gray/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-gray/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-gray/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-color-gray/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-gray/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-color-gray/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-gray/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-gray/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,40 @@
 {
-  "name": "postcss-color-gray",
-  "version": "5.0.0",
-  "description": "Use the gray() color function in CSS",
-  "author": "Shinnosuke Watanabe (https://github.com/shinnn)",
-  "license": "ISC",
-  "repository": "postcss/postcss-color-gray",
-  "homepage": "https://github.com/postcss/postcss-color-gray#readme",
-  "bugs": "https://github.com/postcss/postcss-color-gray/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.js",
-  "files": [
-    "index.cjs.js",
-    "index.es.js"
+  "_args": [
+    [
+      "postcss-color-gray@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-color-gray@5.0.0",
+  "_id": "postcss-color-gray@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
+  "_location": "/postcss-color-gray",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-color-gray@5.0.0",
+    "name": "postcss-color-gray",
+    "escapedName": "postcss-color-gray",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Shinnosuke Watanabe",
+    "url": "https://github.com/shinnn"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-color-gray/issues"
   },
   "dependencies": {
@@ -30,4 +43,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use the gray() color function in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -41,8 +55,16 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.es.js"
+  ],
+  "homepage": "https://github.com/postcss/postcss-color-gray#readme",
   "keywords": [
     "postcss",
@@ -57,4 +79,21 @@
     "w3c",
     "specification"
-  ]
+  ],
+  "license": "ISC",
+  "main": "index.cjs.js",
+  "module": "index.es.js",
+  "name": "postcss-color-gray",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-color-gray.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-color-hex-alpha/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-color-hex-alpha"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-hex-alpha/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-color-hex-alpha/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-hex-alpha/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-color-hex-alpha/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-hex-alpha/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-hex-alpha/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,51 @@
 {
-  "name": "postcss-color-hex-alpha",
-  "version": "5.0.3",
-  "description": "Use 4 & 8 character hex color notation in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
+  "_args": [
+    [
+      "postcss-color-hex-alpha@5.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-color-hex-alpha@5.0.3",
+  "_id": "postcss-color-hex-alpha@5.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
+  "_location": "/postcss-color-hex-alpha",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-color-hex-alpha@5.0.3",
+    "name": "postcss-color-hex-alpha",
+    "escapedName": "postcss-color-hex-alpha",
+    "rawSpec": "5.0.3",
+    "saveSpec": null,
+    "fetchSpec": "5.0.3"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
+  "_spec": "5.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-color-hex-alpha/issues"
+  },
   "contributors": [
-    "Maxime Thirouin"
+    {
+      "name": "Maxime Thirouin"
+    }
   ],
-  "license": "MIT",
-  "repository": "postcss/postcss-color-hex-alpha",
-  "homepage": "https://github.com/postcss/postcss-color-hex-alpha#readme",
-  "bugs": "https://github.com/postcss/postcss-color-hex-alpha/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
-  ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
   "dependencies": {
     "postcss": "^7.0.14",
     "postcss-values-parser": "^2.0.1"
   },
+  "description": "Use 4 & 8 character hex color notation in CSS",
   "devDependencies": {
     "@babel/core": "^7.4.0",
@@ -45,8 +60,18 @@
     "rollup-plugin-babel": "^4.3.2"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/postcss/postcss-color-hex-alpha#readme",
   "keywords": [
     "postcss",
@@ -64,4 +89,20 @@
     "specification",
     "spec"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-color-hex-alpha",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-color-hex-alpha.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "5.0.3"
 }
Index: trip-planner-front/node_modules/postcss-color-mod-function/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-mod-function/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-mod-function/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-color-mod-function/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-color-mod-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-color-mod-function/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-mod-function/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-mod-function/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-color-mod-function/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-mod-function/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-color-mod-function/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-mod-function/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-mod-function/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,40 @@
 {
-  "name": "postcss-color-mod-function",
-  "version": "3.0.3",
-  "description": "Modify colors using the color-mod() function in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-color-mod-function",
-  "homepage": "https://github.com/jonathantneal/postcss-color-mod-function#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-color-mod-function/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-color-mod-function@3.0.3",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-color-mod-function@3.0.3",
+  "_id": "postcss-color-mod-function@3.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
+  "_location": "/postcss-color-mod-function",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-color-mod-function@3.0.3",
+    "name": "postcss-color-mod-function",
+    "escapedName": "postcss-color-mod-function",
+    "rawSpec": "3.0.3",
+    "saveSpec": null,
+    "fetchSpec": "3.0.3"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
+  "_spec": "3.0.3",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-color-mod-function/issues"
   },
   "dependencies": {
@@ -31,4 +43,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Modify colors using the color-mod() function in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -43,4 +56,7 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
@@ -53,4 +69,11 @@
     }
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-color-mod-function#readme",
   "keywords": [
     "postcss",
@@ -81,4 +104,20 @@
     "blenda",
     "contrast"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-color-mod-function",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-color-mod-function.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "3.0.3"
 }
Index: trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-color-rebeccapurple/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-color-rebeccapurple"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-rebeccapurple/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-color-rebeccapurple/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-rebeccapurple/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-color-rebeccapurple/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-color-rebeccapurple/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-color-rebeccapurple/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,58 @@
 {
-  "name": "postcss-color-rebeccapurple",
-  "version": "4.0.1",
+  "_args": [
+    [
+      "postcss-color-rebeccapurple@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-color-rebeccapurple@4.0.1",
+  "_id": "postcss-color-rebeccapurple@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
+  "_location": "/postcss-color-rebeccapurple",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-color-rebeccapurple@4.0.1",
+    "name": "postcss-color-rebeccapurple",
+    "escapedName": "postcss-color-rebeccapurple",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maxime Thirouin"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-color-rebeccapurple/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.2",
+    "postcss-values-parser": "^2.0.0"
+  },
   "description": "PostCSS plugin to transform W3C CSS rebeccapurple color to more compatible CSS (rgb())",
+  "devDependencies": {
+    "jscs": "^3.0.7",
+    "jshint": "^2.9.6",
+    "npmpub": "^4.1.0",
+    "tape": "^4.9.1"
+  },
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/postcss/postcss-color-rebeccapurple#readme",
   "keywords": [
     "css",
@@ -12,32 +64,17 @@
     "rebeccapurple"
   ],
-  "author": "Maxime Thirouin",
   "license": "MIT",
+  "name": "postcss-color-rebeccapurple",
   "repository": {
     "type": "git",
-    "url": "https://github.com/postcss/postcss-color-rebeccapurple.git"
-  },
-  "files": [
-    "index.js"
-  ],
-  "engines": {
-    "node": ">=6.0.0"
-  },
-  "dependencies": {
-    "postcss": "^7.0.2",
-    "postcss-values-parser": "^2.0.0"
-  },
-  "devDependencies": {
-    "jscs": "^3.0.7",
-    "jshint": "^2.9.6",
-    "npmpub": "^4.1.0",
-    "tape": "^4.9.1"
+    "url": "git+https://github.com/postcss/postcss-color-rebeccapurple.git"
   },
   "scripts": {
-    "lint": "npm run jscs && npm run jshint",
     "jscs": "jscs index.js test/index.js",
     "jshint": "jshint . --exclude-path .gitignore",
-    "test": "npm run lint && tape test",
-    "release": "npmpub"
-  }
+    "lint": "npm run jscs && npm run jshint",
+    "release": "npmpub",
+    "test": "npm run lint && tape test"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/postcss-colormin/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-colormin/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-colormin/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,59 @@
 {
-  "name": "postcss-colormin",
-  "version": "5.2.0",
+  "_args": [
+    [
+      "postcss-colormin@5.2.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-colormin@5.2.0",
+  "_id": "postcss-colormin@5.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==",
+  "_location": "/postcss-colormin",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-colormin@5.2.0",
+    "name": "postcss-colormin",
+    "escapedName": "postcss-colormin",
+    "rawSpec": "5.2.0",
+    "saveSpec": null,
+    "fetchSpec": "5.2.0"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz",
+  "_spec": "5.2.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "browserslist": "^4.16.6",
+    "caniuse-api": "^3.0.0",
+    "colord": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Minify colors in your CSS files with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "color",
@@ -23,29 +66,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "browserslist": "^4.16.6",
-    "caniuse-api": "^3.0.0",
-    "colord": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-colormin",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.2.0"
 }
Index: trip-planner-front/node_modules/postcss-convert-values/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-convert-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-convert-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "postcss-convert-values",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-convert-values@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-convert-values@5.0.1",
+  "_id": "postcss-convert-values@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==",
+  "_location": "/postcss-convert-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-convert-values@5.0.1",
+    "name": "postcss-convert-values",
+    "escapedName": "postcss-convert-values",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Convert values with PostCSS (e.g. ms -> s)",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "LICENSE-MIT",
     "dist"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -20,26 +60,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-convert-values",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-custom-media/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-media/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-media/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-custom-media/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-custom-media"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-custom-media/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-media/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-media/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-custom-media/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-custom-media/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-custom-media/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-media/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-media/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,50 @@
 {
-  "name": "postcss-custom-media",
-  "version": "7.0.8",
-  "description": "Use Custom Media Queries in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
+  "_args": [
+    [
+      "postcss-custom-media@7.0.8",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-custom-media@7.0.8",
+  "_id": "postcss-custom-media@7.0.8",
+  "_inBundle": false,
+  "_integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
+  "_location": "/postcss-custom-media",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-custom-media@7.0.8",
+    "name": "postcss-custom-media",
+    "escapedName": "postcss-custom-media",
+    "rawSpec": "7.0.8",
+    "saveSpec": null,
+    "fetchSpec": "7.0.8"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
+  "_spec": "7.0.8",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-custom-media/issues"
+  },
   "contributors": [
-    "Maxime Thirouin"
+    {
+      "name": "Maxime Thirouin"
+    }
   ],
-  "license": "MIT",
-  "repository": "postcss/postcss-custom-media",
-  "homepage": "https://github.com/postcss/postcss-custom-media#readme",
-  "bugs": "https://github.com/postcss/postcss-custom-media/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.es.mjs"
-  ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
   "dependencies": {
     "postcss": "^7.0.14"
   },
+  "description": "Use Custom Media Queries in CSS",
   "devDependencies": {
     "@babel/core": "^7.4.0",
@@ -42,8 +59,16 @@
     "rollup-plugin-babel": "^4.3.2"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.es.mjs"
+  ],
+  "homepage": "https://github.com/postcss/postcss-custom-media#readme",
   "keywords": [
     "postcss",
@@ -59,4 +84,20 @@
     "at-rule",
     "specification"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-custom-media",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-custom-media.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "7.0.8"
 }
Index: trip-planner-front/node_modules/postcss-custom-properties/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-properties/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-properties/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-custom-properties/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-custom-properties"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-custom-properties/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-properties/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-properties/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-custom-properties/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-custom-properties/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-custom-properties/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,36 +1,51 @@
 {
-  "name": "postcss-custom-properties",
-  "version": "8.0.11",
-  "description": "Use Custom Properties Queries in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
+  "_args": [
+    [
+      "postcss-custom-properties@8.0.11",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-custom-properties@8.0.11",
+  "_id": "postcss-custom-properties@8.0.11",
+  "_inBundle": false,
+  "_integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
+  "_location": "/postcss-custom-properties",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-custom-properties@8.0.11",
+    "name": "postcss-custom-properties",
+    "escapedName": "postcss-custom-properties",
+    "rawSpec": "8.0.11",
+    "saveSpec": null,
+    "fetchSpec": "8.0.11"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
+  "_spec": "8.0.11",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-custom-properties/issues"
+  },
   "contributors": [
-    "Maxime Thirouin"
+    {
+      "name": "Maxime Thirouin"
+    }
   ],
-  "license": "MIT",
-  "repository": "postcss/postcss-custom-properties",
-  "homepage": "https://github.com/postcss/postcss-custom-properties#readme",
-  "bugs": "https://github.com/postcss/postcss-custom-properties/issues",
-  "main": "index.cjs.js",
-  "module": "index.esm.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.esm.mjs",
-    "index.esm.mjs.map"
-  ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest:tape": "rollup -c .rollup.js --silent",
-    "test": "npm run test:js && npm run test:tape",
-    "test:js": "eslint src/{*,**/*}.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
   "dependencies": {
     "postcss": "^7.0.17",
     "postcss-values-parser": "^2.0.1"
   },
+  "description": "Use Custom Properties Queries in CSS",
   "devDependencies": {
     "@babel/core": "^7.4.5",
@@ -43,4 +58,7 @@
     "rollup": "^1.15.6",
     "rollup-plugin-babel": "^4.3.2"
+  },
+  "engines": {
+    "node": ">=6.0.0"
   },
   "eslintConfig": {
@@ -59,4 +77,11 @@
     "root": true
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.esm.mjs",
+    "index.esm.mjs.map"
+  ],
+  "homepage": "https://github.com/postcss/postcss-custom-properties#readme",
   "keywords": [
     "postcss",
@@ -71,4 +96,20 @@
     "csswg",
     "specification"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.esm.mjs",
+  "name": "postcss-custom-properties",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-custom-properties.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest:tape": "rollup -c .rollup.js --silent",
+    "test": "npm run test:js && npm run test:tape",
+    "test:js": "eslint src/{*,**/*}.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "8.0.11"
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../cssesc/bin/cssesc" "$@"
+  node  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.cmd
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+"%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.ps1
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/.bin/cssesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/cssesc/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/cssesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/cssesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,43 @@
 {
-  "name": "cssesc",
-  "version": "2.0.0",
-  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
-  "homepage": "https://mths.be/cssesc",
-  "engines": {
-    "node": ">=4"
+  "_args": [
+    [
+      "cssesc@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssesc@2.0.0",
+  "_id": "cssesc@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+  "_location": "/postcss-custom-selectors/cssesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssesc@2.0.0",
+    "name": "cssesc",
+    "escapedName": "cssesc",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
   },
-  "main": "cssesc.js",
-  "bin": "bin/cssesc",
-  "man": "man/cssesc.1",
-  "keywords": [
-    "css",
-    "escape",
-    "identifier",
-    "string",
-    "tool"
+  "_requiredBy": [
+    "/postcss-custom-selectors/postcss-selector-parser"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Mathias Bynens",
     "url": "https://mathiasbynens.be/"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/cssesc.git"
+  "bin": {
+    "cssesc": "bin/cssesc"
   },
-  "bugs": "https://github.com/mathiasbynens/cssesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "cssesc.js",
-    "bin/",
-    "man/"
-  ],
-  "scripts": {
-    "build": "grunt template && babel cssesc.js -o cssesc.js",
-    "test": "mocha tests",
-    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/cssesc/issues"
   },
+  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -48,4 +50,37 @@
     "regenerate": "^1.2.1",
     "requirejs": "^2.1.16"
-  }
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "cssesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/cssesc",
+  "keywords": [
+    "css",
+    "escape",
+    "identifier",
+    "string",
+    "tool"
+  ],
+  "license": "MIT",
+  "main": "cssesc.js",
+  "man": [
+    "man/cssesc.1"
+  ],
+  "name": "cssesc",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mathiasbynens/cssesc.git"
+  },
+  "scripts": {
+    "build": "grunt template && babel cssesc.js -o cssesc.js",
+    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec",
+    "test": "mocha tests"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,57 @@
 {
-  "name": "postcss-selector-parser",
-  "version": "5.0.0",
+  "_args": [
+    [
+      "postcss-selector-parser@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-selector-parser@5.0.0",
+  "_id": "postcss-selector-parser@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+  "_location": "/postcss-custom-selectors/postcss-selector-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-parser@5.0.0",
+    "name": "postcss-selector-parser",
+    "escapedName": "postcss-selector-parser",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-custom-selectors"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "ava": {
+    "require": "babel-register",
+    "concurrency": 5
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-parser/issues"
+  },
+  "contributors": [
+    {
+      "name": "Ben Briggs",
+      "email": "beneb.info@gmail.com",
+      "url": "http://beneb.info"
+    },
+    {
+      "name": "Chris Eppstein",
+      "email": "chris@eppsteins.net",
+      "url": "http://twitter.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "cssesc": "^2.0.0",
+    "indexes-of": "^1.0.1",
+    "uniq": "^1.0.1"
+  },
+  "description": "> Selector parser with built in methods for working with selector strings.",
   "devDependencies": {
     "ava": "^0.25.0",
@@ -24,6 +76,7 @@
     "semver": "^5.6.0"
   },
-  "main": "dist/index.js",
-  "types": "postcss-selector-parser.d.ts",
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "API.md",
@@ -33,39 +86,8 @@
     "postcss-selector-parser.d.ts"
   ],
-  "scripts": {
-    "pretest": "eslint src",
-    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
-    "lintfix": "eslint --fix src",
-    "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js",
-    "testone": "ava"
-  },
-  "dependencies": {
-    "cssesc": "^2.0.0",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1"
-  },
+  "homepage": "https://github.com/postcss/postcss-selector-parser",
   "license": "MIT",
-  "engines": {
-    "node": ">=4"
-  },
-  "homepage": "https://github.com/postcss/postcss-selector-parser",
-  "contributors": [
-    {
-      "name": "Ben Briggs",
-      "email": "beneb.info@gmail.com",
-      "url": "http://beneb.info"
-    },
-    {
-      "name": "Chris Eppstein",
-      "email": "chris@eppsteins.net",
-      "url": "http://twitter.com/chriseppstein"
-    }
-  ],
-  "repository": "postcss/postcss-selector-parser",
-  "ava": {
-    "require": "babel-register",
-    "concurrency": 5
-  },
+  "main": "dist/index.js",
+  "name": "postcss-selector-parser",
   "nyc": {
     "exclude": [
@@ -73,4 +95,18 @@
       "**/__tests__"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-parser.git"
+  },
+  "scripts": {
+    "lintfix": "eslint --fix src",
+    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
+    "pretest": "eslint src",
+    "report": "nyc report --reporter=html",
+    "test": "nyc ava src/__tests__/*.js",
+    "testone": "ava"
+  },
+  "types": "postcss-selector-parser.d.ts",
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-custom-selectors/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-custom-selectors"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-custom-selectors/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-custom-selectors/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-custom-selectors/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-custom-selectors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-custom-selectors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,37 +1,56 @@
 {
-  "name": "postcss-custom-selectors",
-  "version": "5.1.2",
-  "description": "Use Custom Selectors in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
+  "_args": [
+    [
+      "postcss-custom-selectors@5.1.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-custom-selectors@5.1.2",
+  "_id": "postcss-custom-selectors@5.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
+  "_location": "/postcss-custom-selectors",
+  "_phantomChildren": {
+    "indexes-of": "1.0.1",
+    "picocolors": "0.2.1",
+    "uniq": "1.0.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-custom-selectors@5.1.2",
+    "name": "postcss-custom-selectors",
+    "escapedName": "postcss-custom-selectors",
+    "rawSpec": "5.1.2",
+    "saveSpec": null,
+    "fetchSpec": "5.1.2"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
+  "_spec": "5.1.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-custom-selectors/issues"
+  },
   "contributors": [
-    "yisi",
-    "Maxime Thirouin"
+    {
+      "name": "yisi"
+    },
+    {
+      "name": "Maxime Thirouin"
+    }
   ],
-  "license": "MIT",
-  "repository": "postcss/postcss-custom-selectors",
-  "homepage": "https://github.com/postcss/postcss-custom-selectors#readme",
-  "bugs": "https://github.com/postcss/postcss-custom-selectors/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
-  ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
-  },
-  "engines": {
-    "node": ">=6.0.0"
-  },
   "dependencies": {
     "postcss": "^7.0.2",
     "postcss-selector-parser": "^5.0.0-rc.3"
   },
+  "description": "Use Custom Selectors in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -46,8 +65,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/postcss/postcss-custom-selectors#readme",
   "keywords": [
     "postcss",
@@ -64,4 +93,20 @@
     "at-rule",
     "specification"
-  ]
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-custom-selectors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-custom-selectors.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "5.1.2"
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../cssesc/bin/cssesc" "$@"
+  node  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.cmd
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+"%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.ps1
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/.bin/cssesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/cssesc/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/cssesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/cssesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,43 @@
 {
-  "name": "cssesc",
-  "version": "2.0.0",
-  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
-  "homepage": "https://mths.be/cssesc",
-  "engines": {
-    "node": ">=4"
+  "_args": [
+    [
+      "cssesc@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssesc@2.0.0",
+  "_id": "cssesc@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+  "_location": "/postcss-dir-pseudo-class/cssesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssesc@2.0.0",
+    "name": "cssesc",
+    "escapedName": "cssesc",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
   },
-  "main": "cssesc.js",
-  "bin": "bin/cssesc",
-  "man": "man/cssesc.1",
-  "keywords": [
-    "css",
-    "escape",
-    "identifier",
-    "string",
-    "tool"
+  "_requiredBy": [
+    "/postcss-dir-pseudo-class/postcss-selector-parser"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Mathias Bynens",
     "url": "https://mathiasbynens.be/"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/cssesc.git"
+  "bin": {
+    "cssesc": "bin/cssesc"
   },
-  "bugs": "https://github.com/mathiasbynens/cssesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "cssesc.js",
-    "bin/",
-    "man/"
-  ],
-  "scripts": {
-    "build": "grunt template && babel cssesc.js -o cssesc.js",
-    "test": "mocha tests",
-    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/cssesc/issues"
   },
+  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -48,4 +50,37 @@
     "regenerate": "^1.2.1",
     "requirejs": "^2.1.16"
-  }
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "cssesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/cssesc",
+  "keywords": [
+    "css",
+    "escape",
+    "identifier",
+    "string",
+    "tool"
+  ],
+  "license": "MIT",
+  "main": "cssesc.js",
+  "man": [
+    "man/cssesc.1"
+  ],
+  "name": "cssesc",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mathiasbynens/cssesc.git"
+  },
+  "scripts": {
+    "build": "grunt template && babel cssesc.js -o cssesc.js",
+    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec",
+    "test": "mocha tests"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,57 @@
 {
-  "name": "postcss-selector-parser",
-  "version": "5.0.0",
+  "_args": [
+    [
+      "postcss-selector-parser@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-selector-parser@5.0.0",
+  "_id": "postcss-selector-parser@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+  "_location": "/postcss-dir-pseudo-class/postcss-selector-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-parser@5.0.0",
+    "name": "postcss-selector-parser",
+    "escapedName": "postcss-selector-parser",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-dir-pseudo-class"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "ava": {
+    "require": "babel-register",
+    "concurrency": 5
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-parser/issues"
+  },
+  "contributors": [
+    {
+      "name": "Ben Briggs",
+      "email": "beneb.info@gmail.com",
+      "url": "http://beneb.info"
+    },
+    {
+      "name": "Chris Eppstein",
+      "email": "chris@eppsteins.net",
+      "url": "http://twitter.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "cssesc": "^2.0.0",
+    "indexes-of": "^1.0.1",
+    "uniq": "^1.0.1"
+  },
+  "description": "> Selector parser with built in methods for working with selector strings.",
   "devDependencies": {
     "ava": "^0.25.0",
@@ -24,6 +76,7 @@
     "semver": "^5.6.0"
   },
-  "main": "dist/index.js",
-  "types": "postcss-selector-parser.d.ts",
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "API.md",
@@ -33,39 +86,8 @@
     "postcss-selector-parser.d.ts"
   ],
-  "scripts": {
-    "pretest": "eslint src",
-    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
-    "lintfix": "eslint --fix src",
-    "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js",
-    "testone": "ava"
-  },
-  "dependencies": {
-    "cssesc": "^2.0.0",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1"
-  },
+  "homepage": "https://github.com/postcss/postcss-selector-parser",
   "license": "MIT",
-  "engines": {
-    "node": ">=4"
-  },
-  "homepage": "https://github.com/postcss/postcss-selector-parser",
-  "contributors": [
-    {
-      "name": "Ben Briggs",
-      "email": "beneb.info@gmail.com",
-      "url": "http://beneb.info"
-    },
-    {
-      "name": "Chris Eppstein",
-      "email": "chris@eppsteins.net",
-      "url": "http://twitter.com/chriseppstein"
-    }
-  ],
-  "repository": "postcss/postcss-selector-parser",
-  "ava": {
-    "require": "babel-register",
-    "concurrency": 5
-  },
+  "main": "dist/index.js",
+  "name": "postcss-selector-parser",
   "nyc": {
     "exclude": [
@@ -73,4 +95,18 @@
       "**/__tests__"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-parser.git"
+  },
+  "scripts": {
+    "lintfix": "eslint --fix src",
+    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
+    "pretest": "eslint src",
+    "report": "nyc report --reporter=html",
+    "test": "nyc ava src/__tests__/*.js",
+    "testone": "ava"
+  },
+  "types": "postcss-selector-parser.d.ts",
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-dir-pseudo-class/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-dir-pseudo-class"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-dir-pseudo-class/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-dir-pseudo-class/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-dir-pseudo-class/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-dir-pseudo-class/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-dir-pseudo-class/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,42 @@
 {
-  "name": "postcss-dir-pseudo-class",
-  "version": "5.0.0",
-  "description": "Use the :dir pseudo-class in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-dir-pseudo-class",
-  "homepage": "https://github.com/jonathantneal/postcss-dir-pseudo-class#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-dir-pseudo-class/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-dir-pseudo-class@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-dir-pseudo-class@5.0.0",
+  "_id": "postcss-dir-pseudo-class@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
+  "_location": "/postcss-dir-pseudo-class",
+  "_phantomChildren": {
+    "indexes-of": "1.0.1",
+    "picocolors": "0.2.1",
+    "uniq": "1.0.1"
   },
-  "engines": {
-    "node": ">=4.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-dir-pseudo-class@5.0.0",
+    "name": "postcss-dir-pseudo-class",
+    "escapedName": "postcss-dir-pseudo-class",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-dir-pseudo-class/issues"
   },
   "dependencies": {
@@ -31,4 +44,5 @@
     "postcss-selector-parser": "^5.0.0-rc.3"
   },
+  "description": "Use the :dir pseudo-class in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -41,4 +55,7 @@
     "rollup": "^0.66.0",
     "rollup-plugin-babel": "^4.0.1"
+  },
+  "engines": {
+    "node": ">=4.0.0"
   },
   "eslintConfig": {
@@ -54,4 +71,11 @@
     }
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-dir-pseudo-class#readme",
   "keywords": [
     "postcss",
@@ -69,4 +93,21 @@
     "right-to-left",
     "rtl"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-dir-pseudo-class",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-dir-pseudo-class.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/postcss-discard-comments/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-discard-comments/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-discard-comments/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,53 @@
 {
-  "name": "postcss-discard-comments",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-discard-comments@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-discard-comments@5.0.1",
+  "_id": "postcss-discard-comments@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==",
+  "_location": "/postcss-discard-comments",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-discard-comments@5.0.1",
+    "name": "postcss-discard-comments",
+    "escapedName": "postcss-discard-comments",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "description": "Discard comments in your CSS files with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -20,23 +57,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-discard-comments",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-discard-duplicates/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-discard-duplicates/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-discard-duplicates/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,53 @@
 {
-  "name": "postcss-discard-duplicates",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-discard-duplicates@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-discard-duplicates@5.0.1",
+  "_id": "postcss-discard-duplicates@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==",
+  "_location": "/postcss-discard-duplicates",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-discard-duplicates@5.0.1",
+    "name": "postcss-discard-duplicates",
+    "escapedName": "postcss-discard-duplicates",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "description": "Discard duplicate rules in your CSS files with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -21,23 +58,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-discard-duplicates",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-discard-empty/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-discard-empty/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-discard-empty/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,53 @@
 {
-  "name": "postcss-discard-empty",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-discard-empty@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-discard-empty@5.0.1",
+  "_id": "postcss-discard-empty@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==",
+  "_location": "/postcss-discard-empty",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-discard-empty@5.0.1",
+    "name": "postcss-discard-empty",
+    "escapedName": "postcss-discard-empty",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "description": "Discard empty rules and values with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "compress",
@@ -23,23 +60,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-discard-empty",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-discard-overridden/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-discard-overridden/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-discard-overridden/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,52 @@
 {
-  "name": "postcss-discard-overridden",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-discard-overridden@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-discard-overridden@5.0.1",
+  "_id": "postcss-discard-overridden@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==",
+  "_location": "/postcss-discard-overridden",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-discard-overridden@5.0.1",
+    "name": "postcss-discard-overridden",
+    "escapedName": "postcss-discard-overridden",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Justineo",
+    "email": "justice360@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "description": "PostCSS plugin to discard overridden @keyframes or @counter-style.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "LICENSE",
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "postcss",
@@ -16,25 +57,19 @@
     "@counter-style"
   ],
-  "author": "Justineo <justice360@gmail.com>",
   "license": "MIT",
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-discard-overridden",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-double-position-gradients/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-double-position-gradients"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-double-position-gradients/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-double-position-gradients/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-double-position-gradients/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-double-position-gradients/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-double-position-gradients/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-double-position-gradients/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,28 +1,40 @@
 {
-  "name": "postcss-double-position-gradients",
-  "version": "1.0.0",
-  "description": "Use double-position gradients in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-double-position-gradients",
-  "homepage": "https://github.com/jonathantneal/postcss-double-position-gradients#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-double-position-gradients/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-double-position-gradients@1.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-double-position-gradients@1.0.0",
+  "_id": "postcss-double-position-gradients@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
+  "_location": "/postcss-double-position-gradients",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-double-position-gradients@1.0.0",
+    "name": "postcss-double-position-gradients",
+    "escapedName": "postcss-double-position-gradients",
+    "rawSpec": "1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "1.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
+  "_spec": "1.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-double-position-gradients/issues"
   },
   "dependencies": {
@@ -30,4 +42,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use double-position gradients in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.2",
@@ -42,8 +55,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-double-position-gradients#readme",
   "keywords": [
     "postcss",
@@ -60,4 +83,20 @@
     "syntax",
     "repeating"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-double-position-gradients",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-double-position-gradients.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "1.0.0"
 }
Index: trip-planner-front/node_modules/postcss-env-function/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-env-function/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-env-function/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-env-function/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-env-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-env-function/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-env-function/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-env-function/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-env-function/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-env-function/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-env-function/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-env-function/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-env-function/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-env-function",
-  "version": "2.0.2",
-  "description": "Use env() variables in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-env-function",
-  "homepage": "https://github.com/jonathantneal/postcss-env-function#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-env-function/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-env-function@2.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-env-function@2.0.2",
+  "_id": "postcss-env-function@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
+  "_location": "/postcss-env-function",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-env-function@2.0.2",
+    "name": "postcss-env-function",
+    "escapedName": "postcss-env-function",
+    "rawSpec": "2.0.2",
+    "saveSpec": null,
+    "fetchSpec": "2.0.2"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
+  "_spec": "2.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-env-function/issues"
   },
   "dependencies": {
@@ -31,4 +42,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use env() variables in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -43,8 +55,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-env-function#readme",
   "keywords": [
     "postcss",
@@ -56,4 +78,21 @@
     "constants",
     "functions"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-env-function",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-env-function.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "2.0.2"
 }
Index: trip-planner-front/node_modules/postcss-focus-visible/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-visible/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-visible/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-focus-visible/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-focus-visible"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-focus-visible/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-visible/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-visible/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-focus-visible/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-focus-visible/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-focus-visible/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-visible/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-visible/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,45 @@
 {
-  "name": "postcss-focus-visible",
-  "version": "4.0.0",
-  "description": "Use the :focus-visible pseudo-selector in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-focus-visible",
-  "homepage": "https://github.com/jonathantneal/postcss-focus-visible#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-focus-visible/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-focus-visible@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-focus-visible@4.0.0",
+  "_id": "postcss-focus-visible@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
+  "_location": "/postcss-focus-visible",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-focus-visible@4.0.0",
+    "name": "postcss-focus-visible",
+    "escapedName": "postcss-focus-visible",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-focus-visible/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Use the :focus-visible pseudo-selector in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -40,8 +53,18 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-focus-visible#readme",
   "keywords": [
     "postcss",
@@ -70,4 +93,20 @@
     "javascript",
     "js"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-focus-visible",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-focus-visible.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/postcss-focus-within/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-within/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-within/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-focus-within/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-focus-within"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-focus-within/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-within/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-within/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-focus-within/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-focus-within/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-focus-within/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-focus-within/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-focus-within/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,32 +1,45 @@
 {
-  "name": "postcss-focus-within",
-  "version": "3.0.0",
-  "description": "Use the :focus-within pseudo-selector in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-focus-within",
-  "homepage": "https://github.com/jonathantneal/postcss-focus-within#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-focus-within/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-focus-within@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-focus-within@3.0.0",
+  "_id": "postcss-focus-within@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
+  "_location": "/postcss-focus-within",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-focus-within@3.0.0",
+    "name": "postcss-focus-within",
+    "escapedName": "postcss-focus-within",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-focus-within/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Use the :focus-within pseudo-selector in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -40,8 +53,18 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-focus-within#readme",
   "keywords": [
     "postcss",
@@ -57,4 +80,20 @@
     "descendants",
     "ancestors"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-focus-within",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-focus-within.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/postcss-font-variant/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-font-variant/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-font-variant/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-font-variant/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-font-variant"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-font-variant/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-font-variant/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-font-variant/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-font-variant/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-font-variant/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-font-variant/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-font-variant/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-font-variant/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,54 @@
 {
-  "name": "postcss-font-variant",
-  "version": "4.0.1",
+  "_args": [
+    [
+      "postcss-font-variant@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-font-variant@4.0.1",
+  "_id": "postcss-font-variant@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==",
+  "_location": "/postcss-font-variant",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-font-variant@4.0.1",
+    "name": "postcss-font-variant",
+    "escapedName": "postcss-font-variant",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maxime Thirouin"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-font-variant/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.2"
+  },
   "description": "PostCSS plugin to transform W3C font-variant properties to more compatible CSS  (font-feature-settings)",
+  "devDependencies": {
+    "jscs": "^3.0.7",
+    "jshint": "^2.9.6",
+    "npmpub": "^4.1.0",
+    "tape": "^4.9.1"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/postcss/postcss-font-variant#readme",
   "keywords": [
     "css",
@@ -11,25 +59,17 @@
     "font-variant"
   ],
-  "author": "Maxime Thirouin",
   "license": "MIT",
-  "repository": "https://github.com/postcss/postcss-font-variant.git",
-  "files": [
-    "index.js"
-  ],
-  "dependencies": {
-    "postcss": "^7.0.2"
-  },
-  "devDependencies": {
-    "jscs": "^3.0.7",
-    "jshint": "^2.9.6",
-    "npmpub": "^4.1.0",
-    "tape": "^4.9.1"
+  "name": "postcss-font-variant",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-font-variant.git"
   },
   "scripts": {
-    "lint": "npm run jscs && npm run jshint",
     "jscs": "jscs index.js test/index.js",
     "jshint": "jshint . --exclude-path .gitignore",
-    "test": "npm run lint && tape test",
-    "release": "npmpub"
-  }
+    "lint": "npm run jscs && npm run jshint",
+    "release": "npmpub",
+    "test": "npm run lint && tape test"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/postcss-gap-properties/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-gap-properties/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-gap-properties/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-gap-properties/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-gap-properties"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-gap-properties/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-gap-properties/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-gap-properties/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-gap-properties/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-gap-properties/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-gap-properties/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-gap-properties/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-gap-properties/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,45 @@
 {
-  "name": "postcss-gap-properties",
-  "version": "2.0.0",
-  "description": "Use the gap, column-gap, and row-gap shorthand properties in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-gap-properties",
-  "homepage": "https://github.com/jonathantneal/postcss-gap-properties#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-gap-properties/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-gap-properties@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-gap-properties@2.0.0",
+  "_id": "postcss-gap-properties@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
+  "_location": "/postcss-gap-properties",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-gap-properties@2.0.0",
+    "name": "postcss-gap-properties",
+    "escapedName": "postcss-gap-properties",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-gap-properties/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Use the gap, column-gap, and row-gap shorthand properties in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -41,8 +53,18 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-gap-properties#readme",
   "keywords": [
     "postcss",
@@ -56,4 +78,21 @@
     "shorthands",
     "prefixes"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-gap-properties",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-gap-properties.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-image-set-function/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-image-set-function/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-image-set-function/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-image-set-function/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-image-set-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-image-set-function/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-image-set-function/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-image-set-function/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-image-set-function/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-image-set-function/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-image-set-function/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-image-set-function/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-image-set-function/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-image-set-function",
-  "version": "3.0.1",
-  "description": "Display resolution-dependent images using the image-set() function in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-image-set-function",
-  "homepage": "https://github.com/jonathantneal/postcss-image-set-function#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-image-set-function/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-image-set-function@3.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-image-set-function@3.0.1",
+  "_id": "postcss-image-set-function@3.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
+  "_location": "/postcss-image-set-function",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-image-set-function@3.0.1",
+    "name": "postcss-image-set-function",
+    "escapedName": "postcss-image-set-function",
+    "rawSpec": "3.0.1",
+    "saveSpec": null,
+    "fetchSpec": "3.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
+  "_spec": "3.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-image-set-function/issues"
   },
   "dependencies": {
@@ -31,4 +42,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Display resolution-dependent images using the image-set() function in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -42,8 +54,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-image-set-function#readme",
   "keywords": [
     "postcss",
@@ -57,4 +79,21 @@
     "negotiation",
     "optimization"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-image-set-function",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-image-set-function.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "3.0.1"
 }
Index: trip-planner-front/node_modules/postcss-import/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-import/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-import/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,23 +1,37 @@
 {
-  "name": "postcss-import",
-  "version": "14.0.2",
-  "description": "PostCSS plugin to import CSS files",
-  "keywords": [
-    "css",
-    "postcss",
-    "postcss-plugin",
-    "import",
-    "node modules",
-    "npm"
+  "_args": [
+    [
+      "postcss-import@14.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Maxime Thirouin",
-  "license": "MIT",
-  "repository": "https://github.com/postcss/postcss-import.git",
-  "files": [
-    "index.js",
-    "lib"
+  "_development": true,
+  "_from": "postcss-import@14.0.2",
+  "_id": "postcss-import@14.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==",
+  "_location": "/postcss-import",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-import@14.0.2",
+    "name": "postcss-import",
+    "escapedName": "postcss-import",
+    "rawSpec": "14.0.2",
+    "saveSpec": null,
+    "fetchSpec": "14.0.2"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
   ],
-  "engines": {
-    "node": ">=10.0.0"
+  "_resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz",
+  "_spec": "14.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maxime Thirouin"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-import/issues"
   },
   "dependencies": {
@@ -26,4 +40,5 @@
     "resolve": "^1.1.7"
   },
+  "description": "PostCSS plugin to import CSS files",
   "devDependencies": {
     "ava": "^3.0.0",
@@ -36,12 +51,6 @@
     "sugarss": "^3.0.0"
   },
-  "peerDependencies": {
-    "postcss": "^8.0.0"
-  },
-  "scripts": {
-    "ci": "eslint . && ava",
-    "lint": "eslint . --fix",
-    "pretest": "npm run lint",
-    "test": "ava"
+  "engines": {
+    "node": ">=10.0.0"
   },
   "eslintConfig": {
@@ -62,4 +71,33 @@
       ]
     }
-  }
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/postcss/postcss-import#readme",
+  "keywords": [
+    "css",
+    "postcss",
+    "postcss-plugin",
+    "import",
+    "node modules",
+    "npm"
+  ],
+  "license": "MIT",
+  "name": "postcss-import",
+  "peerDependencies": {
+    "postcss": "^8.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-import.git"
+  },
+  "scripts": {
+    "ci": "eslint . && ava",
+    "lint": "eslint . --fix",
+    "pretest": "npm run lint",
+    "test": "ava"
+  },
+  "version": "14.0.2"
 }
Index: trip-planner-front/node_modules/postcss-initial/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-initial/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-initial/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-initial/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-initial"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-initial/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-initial/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-initial/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-initial/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-initial/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-initial/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-initial/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-initial/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,21 +1,45 @@
 {
-  "name": "postcss-initial",
-  "version": "3.0.4",
-  "description": "PostCSS plugin to fallback initial keyword.",
-  "keywords": [
-    "postcss",
-    "css",
-    "postcss-plugin",
-    "reset"
+  "_args": [
+    [
+      "postcss-initial@3.0.4",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Maksim Koretskiy <mr.green.tv@gmail.com>",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/maximkoretskiy/postcss-initial.git"
+  "_development": true,
+  "_from": "postcss-initial@3.0.4",
+  "_id": "postcss-initial@3.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
+  "_location": "/postcss-initial",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-initial@3.0.4",
+    "name": "postcss-initial",
+    "escapedName": "postcss-initial",
+    "rawSpec": "3.0.4",
+    "saveSpec": null,
+    "fetchSpec": "3.0.4"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
+  "_spec": "3.0.4",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maksim Koretskiy",
+    "email": "mr.green.tv@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/maximkoretskiy/postcss-initial/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "PostCSS plugin to fallback initial keyword.",
   "devDependencies": {
     "chai": "3.5.0",
@@ -25,10 +49,5 @@
     "standard-version": "^8.0.1"
   },
-  "scripts": {
-    "lint": "eslint *.js ./lib/ ./test/",
-    "test": "npm run lint && mocha",
-    "tdd": "mocha -w --watch-extensions js,json,css",
-    "release": "standard-version"
-  },
+  "homepage": "https://github.com/maximkoretskiy/postcss-initial#readme",
   "husky": {
     "hooks": {
@@ -37,8 +56,27 @@
     }
   },
+  "keywords": [
+    "postcss",
+    "css",
+    "postcss-plugin",
+    "reset"
+  ],
+  "license": "MIT",
+  "name": "postcss-initial",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/maximkoretskiy/postcss-initial.git"
+  },
+  "scripts": {
+    "lint": "eslint *.js ./lib/ ./test/",
+    "release": "standard-version",
+    "tdd": "mocha -w --watch-extensions js,json,css",
+    "test": "npm run lint && mocha"
+  },
   "standard-version": {
     "scripts": {
       "prerelease": "npm test"
     }
-  }
+  },
+  "version": "3.0.4"
 }
Index: trip-planner-front/node_modules/postcss-lab-function/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-lab-function/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-lab-function/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-lab-function/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-lab-function"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-lab-function/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-lab-function/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-lab-function/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-lab-function/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-lab-function/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-lab-function/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-lab-function/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-lab-function/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-lab-function",
-  "version": "2.0.1",
-  "description": "Use lab() and lch() color functions in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-lab-function",
-  "homepage": "https://github.com/jonathantneal/postcss-lab-function#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-lab-function/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-lab-function@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-lab-function@2.0.1",
+  "_id": "postcss-lab-function@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
+  "_location": "/postcss-lab-function",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-lab-function@2.0.1",
+    "name": "postcss-lab-function",
+    "escapedName": "postcss-lab-function",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-lab-function/issues"
   },
   "dependencies": {
@@ -32,4 +43,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use lab() and lch() color functions in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -43,8 +55,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-lab-function#readme",
   "keywords": [
     "postcss",
@@ -64,4 +86,21 @@
     "space",
     "comma"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-lab-function",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-lab-function.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/postcss-loader/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-loader/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-loader/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,43 +1,38 @@
 {
-  "name": "postcss-loader",
-  "version": "6.1.1",
-  "description": "PostCSS loader for webpack",
-  "license": "MIT",
-  "repository": "webpack-contrib/postcss-loader",
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "homepage": "https://github.com/webpack-contrib/postcss-loader",
-  "bugs": "https://github.com/webpack-contrib/postcss-loader/issues",
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/webpack"
+  "_args": [
+    [
+      "postcss-loader@6.1.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-loader@6.1.1",
+  "_id": "postcss-loader@6.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==",
+  "_location": "/postcss-loader",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-loader@6.1.1",
+    "name": "postcss-loader",
+    "escapedName": "postcss-loader",
+    "rawSpec": "6.1.1",
+    "saveSpec": null,
+    "fetchSpec": "6.1.1"
   },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">= 12.13.0"
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz",
+  "_spec": "6.1.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
   },
-  "scripts": {
-    "start": "npm run build -- -w",
-    "clean": "del-cli dist",
-    "prebuild": "npm run clean",
-    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
-    "commitlint": "commitlint --from=master",
-    "security": "npm audit --production",
-    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
-    "lint:js": "eslint --cache .",
-    "lint": "npm-run-all -l -p \"lint:**\"",
-    "test:only": "cross-env NODE_ENV=test jest",
-    "test:watch": "npm run test:only -- --watch",
-    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
-    "pretest": "npm run lint",
-    "test": "npm run test:coverage",
-    "prepare": "husky install && npm run build",
-    "release": "standard-version"
-  },
-  "files": [
-    "dist"
-  ],
-  "peerDependencies": {
-    "postcss": "^7.0.0 || ^8.0.1",
-    "webpack": "^5.0.0"
+  "bugs": {
+    "url": "https://github.com/webpack-contrib/postcss-loader/issues"
   },
   "dependencies": {
@@ -46,4 +41,5 @@
     "semver": "^7.3.5"
   },
+  "description": "PostCSS loader for webpack",
   "devDependencies": {
     "@babel/cli": "^7.14.5",
@@ -83,4 +79,15 @@
     "webpack": "^5.39.0"
   },
+  "engines": {
+    "node": ">= 12.13.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/webpack"
+  },
+  "homepage": "https://github.com/webpack-contrib/postcss-loader",
   "keywords": [
     "css",
@@ -89,4 +96,34 @@
     "webpack",
     "webpack-loader"
-  ]
+  ],
+  "license": "MIT",
+  "main": "dist/cjs.js",
+  "name": "postcss-loader",
+  "peerDependencies": {
+    "postcss": "^7.0.0 || ^8.0.1",
+    "webpack": "^5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/webpack-contrib/postcss-loader.git"
+  },
+  "scripts": {
+    "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+    "clean": "del-cli dist",
+    "commitlint": "commitlint --from=master",
+    "lint": "npm-run-all -l -p \"lint:**\"",
+    "lint:js": "eslint --cache .",
+    "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+    "prebuild": "npm run clean",
+    "prepare": "husky install && npm run build",
+    "pretest": "npm run lint",
+    "release": "standard-version",
+    "security": "npm audit --production",
+    "start": "npm run build -- -w",
+    "test": "npm run test:coverage",
+    "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+    "test:only": "cross-env NODE_ENV=test jest",
+    "test:watch": "npm run test:only -- --watch"
+  },
+  "version": "6.1.1"
 }
Index: trip-planner-front/node_modules/postcss-logical/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-logical/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-logical/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-logical/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-logical"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-logical/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-logical/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-logical/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-logical/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-logical/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-logical/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-logical/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-logical/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,45 @@
 {
-  "name": "postcss-logical",
-  "version": "3.0.0",
-  "description": "Use logical properties and values in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-logical",
-  "homepage": "https://github.com/jonathantneal/postcss-logical#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-logical/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-logical@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:ec && npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-logical@3.0.0",
+  "_id": "postcss-logical@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
+  "_location": "/postcss-logical",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-logical@3.0.0",
+    "name": "postcss-logical",
+    "escapedName": "postcss-logical",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-logical/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Use logical properties and values in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -42,8 +54,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-logical#readme",
   "keywords": [
     "postcss",
@@ -73,4 +95,21 @@
     "size",
     "text"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-logical",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-logical.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:ec && npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/postcss-media-minmax/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-media-minmax/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-media-minmax/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-media-minmax/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-media-minmax"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-media-minmax/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-media-minmax/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-media-minmax/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-media-minmax/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-media-minmax/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-media-minmax/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-media-minmax/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-media-minmax/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,59 @@
 {
-  "name": "postcss-media-minmax",
-  "version": "4.0.0",
+  "_args": [
+    [
+      "postcss-media-minmax@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-media-minmax@4.0.0",
+  "_id": "postcss-media-minmax@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
+  "_location": "/postcss-media-minmax",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-media-minmax@4.0.0",
+    "name": "postcss-media-minmax",
+    "escapedName": "postcss-media-minmax",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "yisi"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-media-minmax/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.2"
+  },
   "description": "Using more intuitive `>=`, `<=`, `>`, `<` instead of media queries min/max prefix.",
-  "scripts": {
-    "test": "tape test",
-    "release": "npmpub"
+  "devDependencies": {
+    "npmpub": "^4.1.0",
+    "tape": "^4.9.1"
   },
-  "repository": "https://github.com/postcss/postcss-media-minmax.git",
+  "engines": {
+    "node": ">=6.0.0"
+  },
+  "files": [
+    "CHANGELOG.md",
+    "README.md",
+    "README-zh.md",
+    "LICENSE",
+    "index.js"
+  ],
+  "homepage": "https://github.com/postcss/postcss-media-minmax#readme",
   "keywords": [
     "css",
@@ -16,22 +64,14 @@
     "media queries"
   ],
-  "author": "yisi",
   "license": "MIT",
-  "files": [
-    "CHANGELOG.md",
-    "README.md",
-    "README-zh.md",
-    "LICENSE",
-    "index.js"
-  ],
-  "engines": {
-    "node": ">=6.0.0"
+  "name": "postcss-media-minmax",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-media-minmax.git"
   },
-  "dependencies": {
-    "postcss": "^7.0.2"
+  "scripts": {
+    "release": "npmpub",
+    "test": "tape test"
   },
-  "devDependencies": {
-    "npmpub": "^4.1.0",
-    "tape": "^4.9.1"
-  }
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/postcss-merge-longhand/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-merge-longhand/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-merge-longhand/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,58 @@
 {
-  "name": "postcss-merge-longhand",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-merge-longhand@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-merge-longhand@5.0.2",
+  "_id": "postcss-merge-longhand@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==",
+  "_location": "/postcss-merge-longhand",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-merge-longhand@5.0.2",
+    "name": "postcss-merge-longhand",
+    "escapedName": "postcss-merge-longhand",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "css-color-names": "^1.0.1",
+    "postcss-value-parser": "^4.1.0",
+    "stylehacks": "^5.0.1"
+  },
   "description": "Merge longhand properties into shorthand with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "LICENSE-MIT",
     "dist"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -21,28 +63,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "css-color-names": "^1.0.1",
-    "postcss-value-parser": "^4.1.0",
-    "stylehacks": "^5.0.1"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-merge-longhand",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-merge-rules/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-merge-rules/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-merge-rules/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,60 @@
 {
-  "name": "postcss-merge-rules",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-merge-rules@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-merge-rules@5.0.2",
+  "_id": "postcss-merge-rules@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==",
+  "_location": "/postcss-merge-rules",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-merge-rules@5.0.2",
+    "name": "postcss-merge-rules",
+    "escapedName": "postcss-merge-rules",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "browserslist": "^4.16.6",
+    "caniuse-api": "^3.0.0",
+    "cssnano-utils": "^2.0.1",
+    "postcss-selector-parser": "^6.0.5",
+    "vendors": "^1.0.3"
+  },
   "description": "Merge CSS rules with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "LICENSE-MIT",
     "dist"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -20,30 +64,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "browserslist": "^4.16.6",
-    "caniuse-api": "^3.0.0",
-    "cssnano-utils": "^2.0.1",
-    "postcss-selector-parser": "^6.0.5",
-    "vendors": "^1.0.3"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-merge-rules",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-minify-font-values/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-minify-font-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-minify-font-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,12 +1,54 @@
 {
-  "name": "postcss-minify-font-values",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-minify-font-values@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-minify-font-values@5.0.1",
+  "_id": "postcss-minify-font-values@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==",
+  "_location": "/postcss-minify-font-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-minify-font-values@5.0.1",
+    "name": "postcss-minify-font-values",
+    "escapedName": "postcss-minify-font-values",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Bogdan Chadkin",
+    "email": "trysound@yandex.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Minify font declarations with PostCSS",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist"
   ],
-  "author": "Bogdan Chadkin <trysound@yandex.ru>",
-  "license": "MIT",
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -17,26 +59,19 @@
     "postcss-plugin"
   ],
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "postcss-minify-font-values",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-minify-gradients/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-minify-gradients/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-minify-gradients/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,51 @@
 {
-  "name": "postcss-minify-gradients",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-minify-gradients@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-minify-gradients@5.0.2",
+  "_id": "postcss-minify-gradients@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==",
+  "_location": "/postcss-minify-gradients",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-minify-gradients@5.0.2",
+    "name": "postcss-minify-gradients",
+    "escapedName": "postcss-minify-gradients",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "colord": "^2.6",
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Minify gradient parameters with PostCSS.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepare": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,4 +53,6 @@
     "dist"
   ],
+  "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,28 +61,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "colord": "^2.6",
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-minify-gradients",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "3ffd3a0f178d60b68eeb84d75353b6decc6ef735"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "rimraf dist",
+    "prepare": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-minify-params/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-minify-params/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-minify-params/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,58 @@
 {
-  "name": "postcss-minify-params",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-minify-params@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-minify-params@5.0.1",
+  "_id": "postcss-minify-params@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==",
+  "_location": "/postcss-minify-params",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-minify-params@5.0.1",
+    "name": "postcss-minify-params",
+    "escapedName": "postcss-minify-params",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Bogdan Chadkin",
+    "email": "trysound@yandex.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "alphanum-sort": "^1.0.2",
+    "browserslist": "^4.16.0",
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0",
+    "uniqs": "^2.0.0"
+  },
   "description": "Minify at-rule params with PostCSS",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "postcss",
@@ -11,36 +63,19 @@
     "params"
   ],
+  "license": "MIT",
   "main": "dist/index.js",
-  "files": [
-    "dist"
-  ],
-  "author": "Bogdan Chadkin <trysound@yandex.ru>",
-  "license": "MIT",
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "dependencies": {
-    "alphanum-sort": "^1.0.2",
-    "browserslist": "^4.16.0",
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0",
-    "uniqs": "^2.0.0"
-  },
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "name": "postcss-minify-params",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-minify-selectors/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-minify-selectors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-minify-selectors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,57 @@
 {
-  "name": "postcss-minify-selectors",
-  "version": "5.1.0",
+  "_args": [
+    [
+      "postcss-minify-selectors@5.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-minify-selectors@5.1.0",
+  "_id": "postcss-minify-selectors@5.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==",
+  "_location": "/postcss-minify-selectors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-minify-selectors@5.1.0",
+    "name": "postcss-minify-selectors",
+    "escapedName": "postcss-minify-selectors",
+    "rawSpec": "5.1.0",
+    "saveSpec": null,
+    "fetchSpec": "5.1.0"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz",
+  "_spec": "5.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "alphanum-sort": "^1.0.2",
+    "postcss-selector-parser": "^6.0.5"
+  },
   "description": "Minify selectors with PostCSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -22,27 +63,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "alphanum-sort": "^1.0.2",
-    "postcss-selector-parser": "^6.0.5"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-minify-selectors",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.1.0"
 }
Index: trip-planner-front/node_modules/postcss-modules-extract-imports/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-modules-extract-imports/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-modules-extract-imports/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,39 @@
 {
-  "name": "postcss-modules-extract-imports",
-  "version": "3.0.0",
-  "description": "A CSS Modules transform to extract local aliases for inline imports",
-  "main": "src/index.js",
-  "engines": {
-    "node": "^10 || ^12 || >= 14"
+  "_args": [
+    [
+      "postcss-modules-extract-imports@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-modules-extract-imports@3.0.0",
+  "_id": "postcss-modules-extract-imports@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+  "_location": "/postcss-modules-extract-imports",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-modules-extract-imports@3.0.0",
+    "name": "postcss-modules-extract-imports",
+    "escapedName": "postcss-modules-extract-imports",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
   },
-  "files": [
-    "src"
+  "_requiredBy": [
+    "/css-loader"
   ],
-  "scripts": {
-    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
-    "eslint": "eslint --ignore-path .gitignore .",
-    "lint": "yarn eslint && yarn prettier",
-    "test:only": "jest",
-    "test:watch": "jest --watch",
-    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
-    "pretest": "yarn lint",
-    "test": "yarn test:coverage",
-    "prepublishOnly": "yarn test"
+  "_resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Glen Maddern"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/css-modules/postcss-modules-extract-imports.git"
-  },
-  "keywords": [
-    "css-modules",
-    "postcss",
-    "plugin"
-  ],
-  "author": "Glen Maddern",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/css-modules/postcss-modules-extract-imports/issues"
   },
-  "homepage": "https://github.com/css-modules/postcss-modules-extract-imports",
+  "description": "A CSS Modules transform to extract local aliases for inline imports",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -46,6 +46,37 @@
     "prettier": "^2.1.2"
   },
+  "engines": {
+    "node": "^10 || ^12 || >= 14"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/css-modules/postcss-modules-extract-imports",
+  "keywords": [
+    "css-modules",
+    "postcss",
+    "plugin"
+  ],
+  "license": "ISC",
+  "main": "src/index.js",
+  "name": "postcss-modules-extract-imports",
   "peerDependencies": {
     "postcss": "^8.1.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css-modules/postcss-modules-extract-imports.git"
+  },
+  "scripts": {
+    "eslint": "eslint --ignore-path .gitignore .",
+    "lint": "yarn eslint && yarn prettier",
+    "prepublishOnly": "yarn test",
+    "pretest": "yarn lint",
+    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
+    "test": "yarn test:coverage",
+    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
+    "test:only": "jest",
+    "test:watch": "jest --watch"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/postcss-modules-local-by-default/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-modules-local-by-default/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-modules-local-by-default/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,35 +1,37 @@
 {
-  "name": "postcss-modules-local-by-default",
-  "version": "4.0.0",
-  "description": "A CSS Modules transform to make local scope the default",
-  "main": "src/index.js",
-  "author": "Mark Dalgleish",
-  "license": "MIT",
-  "files": [
-    "src"
+  "_args": [
+    [
+      "postcss-modules-local-by-default@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/css-modules/postcss-modules-local-by-default.git"
+  "_development": true,
+  "_from": "postcss-modules-local-by-default@4.0.0",
+  "_id": "postcss-modules-local-by-default@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
+  "_location": "/postcss-modules-local-by-default",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-modules-local-by-default@4.0.0",
+    "name": "postcss-modules-local-by-default",
+    "escapedName": "postcss-modules-local-by-default",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
   },
-  "engines": {
-    "node": "^10 || ^12 || >= 14"
+  "_requiredBy": [
+    "/css-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Mark Dalgleish"
   },
-  "keywords": [
-    "css-modules",
-    "postcss",
-    "css",
-    "postcss-plugin"
-  ],
-  "scripts": {
-    "prettier": "prettier -l --ignore-path .gitignore .",
-    "eslint": "eslint --ignore-path .gitignore .",
-    "lint": "yarn eslint && yarn prettier",
-    "test:only": "jest",
-    "test:watch": "jest --watch",
-    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
-    "pretest": "yarn lint",
-    "test": "yarn test:coverage",
-    "prepublishOnly": "yarn test"
+  "bugs": {
+    "url": "https://github.com/css-modules/postcss-modules-local-by-default/issues"
   },
   "dependencies": {
@@ -38,4 +40,5 @@
     "postcss-value-parser": "^4.1.0"
   },
+  "description": "A CSS Modules transform to make local scope the default",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -48,6 +51,38 @@
     "prettier": "^2.1.2"
   },
+  "engines": {
+    "node": "^10 || ^12 || >= 14"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/css-modules/postcss-modules-local-by-default#readme",
+  "keywords": [
+    "css-modules",
+    "postcss",
+    "css",
+    "postcss-plugin"
+  ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "postcss-modules-local-by-default",
   "peerDependencies": {
     "postcss": "^8.1.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css-modules/postcss-modules-local-by-default.git"
+  },
+  "scripts": {
+    "eslint": "eslint --ignore-path .gitignore .",
+    "lint": "yarn eslint && yarn prettier",
+    "prepublishOnly": "yarn test",
+    "pretest": "yarn lint",
+    "prettier": "prettier -l --ignore-path .gitignore .",
+    "test": "yarn test:coverage",
+    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
+    "test:only": "jest",
+    "test:watch": "jest --watch"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/postcss-modules-scope/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-modules-scope/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-modules-scope/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,42 +1,42 @@
 {
-  "name": "postcss-modules-scope",
-  "version": "3.0.0",
-  "description": "A CSS Modules transform to extract export statements from local-scope classes",
-  "main": "src/index.js",
-  "engines": {
-    "node": "^10 || ^12 || >= 14"
+  "_args": [
+    [
+      "postcss-modules-scope@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-modules-scope@3.0.0",
+  "_id": "postcss-modules-scope@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+  "_location": "/postcss-modules-scope",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-modules-scope@3.0.0",
+    "name": "postcss-modules-scope",
+    "escapedName": "postcss-modules-scope",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
   },
-  "scripts": {
-    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
-    "eslint": "eslint --ignore-path .gitignore .",
-    "lint": "yarn eslint && yarn prettier",
-    "test:only": "jest",
-    "test:watch": "jest --watch",
-    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
-    "pretest": "yarn lint",
-    "test": "yarn test:coverage",
-    "prepublishOnly": "yarn test"
+  "_requiredBy": [
+    "/css-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Glen Maddern"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/css-modules/postcss-modules-scope.git"
-  },
-  "keywords": [
-    "css-modules",
-    "postcss",
-    "plugin"
-  ],
-  "files": [
-    "src"
-  ],
-  "author": "Glen Maddern",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/css-modules/postcss-modules-scope/issues"
   },
-  "homepage": "https://github.com/css-modules/postcss-modules-scope",
   "dependencies": {
     "postcss-selector-parser": "^6.0.4"
   },
+  "description": "A CSS Modules transform to extract export statements from local-scope classes",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -49,6 +49,37 @@
     "prettier": "^2.1.2"
   },
+  "engines": {
+    "node": "^10 || ^12 || >= 14"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/css-modules/postcss-modules-scope",
+  "keywords": [
+    "css-modules",
+    "postcss",
+    "plugin"
+  ],
+  "license": "ISC",
+  "main": "src/index.js",
+  "name": "postcss-modules-scope",
   "peerDependencies": {
     "postcss": "^8.1.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css-modules/postcss-modules-scope.git"
+  },
+  "scripts": {
+    "eslint": "eslint --ignore-path .gitignore .",
+    "lint": "yarn eslint && yarn prettier",
+    "prepublishOnly": "yarn test",
+    "pretest": "yarn lint",
+    "prettier": "prettier -l --ignore-path .gitignore . \"!test/test-cases\"",
+    "test": "yarn test:coverage",
+    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
+    "test:only": "jest",
+    "test:watch": "jest --watch"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/postcss-modules-values/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-modules-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-modules-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,39 +1,42 @@
 {
-  "name": "postcss-modules-values",
-  "version": "4.0.0",
-  "description": "PostCSS plugin for CSS Modules to pass arbitrary values between your module files",
-  "main": "src/index.js",
-  "files": [
-    "src"
+  "_args": [
+    [
+      "postcss-modules-values@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "engines": {
-    "node": "^10 || ^12 || >= 14"
+  "_development": true,
+  "_from": "postcss-modules-values@4.0.0",
+  "_id": "postcss-modules-values@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+  "_location": "/postcss-modules-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-modules-values@4.0.0",
+    "name": "postcss-modules-values",
+    "escapedName": "postcss-modules-values",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
   },
-  "scripts": {
-    "prettier": "prettier -l --ignore-path .gitignore .",
-    "eslint": "eslint --ignore-path .gitignore .",
-    "lint": "yarn eslint && yarn prettier",
-    "test:only": "jest",
-    "test:watch": "jest --watch",
-    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
-    "pretest": "yarn lint",
-    "test": "yarn test:coverage",
-    "prepublishOnly": "yarn test"
+  "_requiredBy": [
+    "/css-loader"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Glen Maddern"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/css-modules/postcss-modules-values.git"
-  },
-  "keywords": [
-    "css",
-    "modules",
-    "postcss"
-  ],
-  "author": "Glen Maddern",
-  "license": "ISC",
   "bugs": {
     "url": "https://github.com/css-modules/postcss-modules-values/issues"
   },
-  "homepage": "https://github.com/css-modules/postcss-modules-values#readme",
+  "dependencies": {
+    "icss-utils": "^5.0.0"
+  },
+  "description": "PostCSS plugin for CSS Modules to pass arbitrary values between your module files",
   "devDependencies": {
     "coveralls": "^3.1.0",
@@ -46,9 +49,37 @@
     "prettier": "^2.1.2"
   },
-  "dependencies": {
-    "icss-utils": "^5.0.0"
+  "engines": {
+    "node": "^10 || ^12 || >= 14"
   },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/css-modules/postcss-modules-values#readme",
+  "keywords": [
+    "css",
+    "modules",
+    "postcss"
+  ],
+  "license": "ISC",
+  "main": "src/index.js",
+  "name": "postcss-modules-values",
   "peerDependencies": {
     "postcss": "^8.1.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/css-modules/postcss-modules-values.git"
+  },
+  "scripts": {
+    "eslint": "eslint --ignore-path .gitignore .",
+    "lint": "yarn eslint && yarn prettier",
+    "prepublishOnly": "yarn test",
+    "pretest": "yarn lint",
+    "prettier": "prettier -l --ignore-path .gitignore .",
+    "test": "yarn test:coverage",
+    "test:coverage": "jest --coverage --collectCoverageFrom=\"src/**/*\"",
+    "test:only": "jest",
+    "test:watch": "jest --watch"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/postcss-nesting/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-nesting/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-nesting/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-nesting/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-nesting"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-nesting/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-nesting/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-nesting/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-nesting/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-nesting/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-nesting/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-nesting/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-nesting/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,30 +1,45 @@
 {
-  "name": "postcss-nesting",
-  "version": "7.0.1",
-  "description": "Nest style rules inside each other",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-nesting",
-  "homepage": "https://github.com/jonathantneal/postcss-nesting#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-nesting/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.js",
-  "files": [
-    "index.cjs.js",
-    "index.es.js"
+  "_args": [
+    [
+      "postcss-nesting@7.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-nesting@7.0.1",
+  "_id": "postcss-nesting@7.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
+  "_location": "/postcss-nesting",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-nesting@7.0.1",
+    "name": "postcss-nesting",
+    "escapedName": "postcss-nesting",
+    "rawSpec": "7.0.1",
+    "saveSpec": null,
+    "fetchSpec": "7.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
+  "_spec": "7.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-nesting/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Nest style rules inside each other",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -39,8 +54,16 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.es.js"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-nesting#readme",
   "keywords": [
     "postcss",
@@ -60,4 +83,20 @@
     "w3c",
     "csswg"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.js",
+  "name": "postcss-nesting",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-nesting.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:js": "eslint *.js lib/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "7.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-charset/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-charset/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-charset/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,51 @@
 {
-  "name": "postcss-normalize-charset",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-charset@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-charset@5.0.1",
+  "_id": "postcss-normalize-charset@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==",
+  "_location": "/postcss-normalize-charset",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-charset@5.0.1",
+    "name": "postcss-normalize-charset",
+    "escapedName": "postcss-normalize-charset",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Bogdan Chadkin",
+    "email": "trysound@yandex.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
   "description": "Add necessary or remove extra charset with PostCSS",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
+  "files": [
+    "dist"
+  ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "postcss",
@@ -9,29 +54,19 @@
     "charset"
   ],
-  "author": "Bogdan Chadkin <trysound@yandex.ru>",
-  "files": [
-    "dist"
-  ],
   "license": "MIT",
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
   "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "name": "postcss-normalize-charset",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-display-values/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-display-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-display-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,50 @@
 {
-  "name": "postcss-normalize-display-values",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-display-values@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-display-values@5.0.1",
+  "_id": "postcss-normalize-display-values@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==",
+  "_location": "/postcss-normalize-display-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-display-values@5.0.1",
+    "name": "postcss-normalize-display-values",
+    "escapedName": "postcss-normalize-display-values",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize multiple value display syntaxes into single values.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,28 +52,21 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "license": "MIT",
-  "dependencies": {
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-display-values",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-positions/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-positions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-positions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "postcss-normalize-positions",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-positions@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-positions@5.0.1",
+  "_id": "postcss-normalize-positions@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==",
+  "_location": "/postcss-normalize-positions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-positions@5.0.1",
+    "name": "postcss-normalize-positions",
+    "escapedName": "postcss-normalize-positions",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize keyword values for position into length values.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,26 +59,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-positions",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-repeat-style/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-repeat-style/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-repeat-style/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,50 @@
 {
-  "name": "postcss-normalize-repeat-style",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-repeat-style@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-repeat-style@5.0.1",
+  "_id": "postcss-normalize-repeat-style@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==",
+  "_location": "/postcss-normalize-repeat-style",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-repeat-style@5.0.1",
+    "name": "postcss-normalize-repeat-style",
+    "escapedName": "postcss-normalize-repeat-style",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Convert two value syntax for repeat-style into one value.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,28 +52,21 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "license": "MIT",
-  "dependencies": {
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-repeat-style",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-string/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-string/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-string/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "postcss-normalize-string",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-string@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-string@5.0.1",
+  "_id": "postcss-normalize-string@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==",
+  "_location": "/postcss-normalize-string",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-string@5.0.1",
+    "name": "postcss-normalize-string",
+    "escapedName": "postcss-normalize-string",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize wrapping quotes for CSS string literals.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,26 +59,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-string",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-timing-functions/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-timing-functions/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-timing-functions/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,50 @@
 {
-  "name": "postcss-normalize-timing-functions",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-timing-functions@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-timing-functions@5.0.1",
+  "_id": "postcss-normalize-timing-functions@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==",
+  "_location": "/postcss-normalize-timing-functions",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-timing-functions@5.0.1",
+    "name": "postcss-normalize-timing-functions",
+    "escapedName": "postcss-normalize-timing-functions",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize CSS animation/transition timing functions.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,28 +52,21 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "license": "MIT",
-  "dependencies": {
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-timing-functions",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-unicode/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-unicode/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-unicode/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,57 @@
 {
-  "name": "postcss-normalize-unicode",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-unicode@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-unicode@5.0.1",
+  "_id": "postcss-normalize-unicode@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==",
+  "_location": "/postcss-normalize-unicode",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-unicode@5.0.1",
+    "name": "postcss-normalize-unicode",
+    "escapedName": "postcss-normalize-unicode",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "browserslist": "^4.16.0",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize unicode-range descriptors, and can convert to wildcard ranges.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,27 +60,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "browserslist": "^4.16.0",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-unicode",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-normalize-url/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-url/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-url/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,58 @@
 {
-  "name": "postcss-normalize-url",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-normalize-url@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-url@5.0.2",
+  "_id": "postcss-normalize-url@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==",
+  "_location": "/postcss-normalize-url",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-url@5.0.2",
+    "name": "postcss-normalize-url",
+    "escapedName": "postcss-normalize-url",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "is-absolute-url": "^3.0.3",
+    "normalize-url": "^6.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Normalize URLs with PostCSS",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepare": "yarn build"
-  },
+  "gitHead": "39b4cc089e8825d308df1fa8a7313d38d8f1f2f7",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -23,28 +65,18 @@
   ],
   "license": "MIT",
-  "dependencies": {
-    "is-absolute-url": "^3.0.3",
-    "normalize-url": "^6.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-url",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "39b4cc089e8825d308df1fa8a7313d38d8f1f2f7"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "rimraf dist",
+    "prepare": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-normalize-whitespace/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-normalize-whitespace/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-normalize-whitespace/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,56 @@
 {
-  "name": "postcss-normalize-whitespace",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-normalize-whitespace@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-normalize-whitespace@5.0.1",
+  "_id": "postcss-normalize-whitespace@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==",
+  "_location": "/postcss-normalize-whitespace",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-normalize-whitespace@5.0.1",
+    "name": "postcss-normalize-whitespace",
+    "escapedName": "postcss-normalize-whitespace",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Trim whitespace inside and around CSS rules & declarations.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,26 +59,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-normalize-whitespace",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-ordered-values/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-ordered-values/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-ordered-values/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,16 +1,58 @@
 {
-  "name": "postcss-ordered-values",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-ordered-values@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-ordered-values@5.0.2",
+  "_id": "postcss-ordered-values@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==",
+  "_location": "/postcss-ordered-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-ordered-values@5.0.2",
+    "name": "postcss-ordered-values",
+    "escapedName": "postcss-ordered-values",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Ensure values are ordered consistently in your CSS.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "node-fetch": "^2.6.0",
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "dist",
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "prebuild": "rimraf dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\" && node script/buildListStyleType.js",
-    "prepare": "yarn build"
-  },
+  "gitHead": "39b4cc089e8825d308df1fa8a7313d38d8f1f2f7",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,28 +61,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "node-fetch": "^2.6.0",
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-ordered-values",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "39b4cc089e8825d308df1fa8a7313d38d8f1f2f7"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\" && node script/buildListStyleType.js",
+    "prebuild": "rimraf dist",
+    "prepare": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-overflow-shorthand/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-overflow-shorthand"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-overflow-shorthand/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-overflow-shorthand/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-overflow-shorthand/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-overflow-shorthand/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-overflow-shorthand/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-overflow-shorthand/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,33 +1,45 @@
 {
-  "name": "postcss-overflow-shorthand",
-  "version": "2.0.0",
-  "description": "Use the overflow shorthand in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-overflow-shorthand",
-  "homepage": "https://github.com/jonathantneal/postcss-overflow-shorthand#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-overflow-shorthand/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-overflow-shorthand@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-overflow-shorthand@2.0.0",
+  "_id": "postcss-overflow-shorthand@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
+  "_location": "/postcss-overflow-shorthand",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-overflow-shorthand@2.0.0",
+    "name": "postcss-overflow-shorthand",
+    "escapedName": "postcss-overflow-shorthand",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-overflow-shorthand/issues"
   },
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "Use the overflow shorthand in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -41,8 +53,18 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-overflow-shorthand#readme",
   "keywords": [
     "postcss",
@@ -53,4 +75,21 @@
     "shorthands",
     "values"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-overflow-shorthand",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-overflow-shorthand.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-page-break/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-page-break/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-page-break/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-page-break/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-page-break"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-page-break/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-page-break/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-page-break/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-page-break/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-page-break/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-page-break/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-page-break/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-page-break/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,6 +1,69 @@
 {
-  "name": "postcss-page-break",
-  "version": "2.0.0",
+  "_args": [
+    [
+      "postcss-page-break@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-page-break@2.0.0",
+  "_id": "postcss-page-break@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
+  "_location": "/postcss-page-break",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-page-break@2.0.0",
+    "name": "postcss-page-break",
+    "escapedName": "postcss-page-break",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "shrpne",
+    "email": "shrpne@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/shrpne/postcss-page-break/issues"
+  },
+  "dependencies": {
+    "postcss": "^7.0.2"
+  },
   "description": "PostCSS plugin postcss-page-break to fallback `break-` properties with `page-break-` alias",
+  "devDependencies": {
+    "eslint": "^4.15.0",
+    "eslint-config-postcss": "^2.0.2",
+    "jest": "^21.0.0"
+  },
+  "eslintConfig": {
+    "extends": "eslint-config-postcss/es5",
+    "rules": {
+      "indent": [
+        "error",
+        4,
+        {
+          "SwitchCase": 1
+        }
+      ],
+      "max-len": [
+        "off"
+      ]
+    },
+    "env": {
+      "jest": true
+    }
+  },
+  "homepage": "https://github.com/shrpne/postcss-page-break",
   "keywords": [
     "postcss",
@@ -12,31 +75,13 @@
     "avoid"
   ],
-  "author": "shrpne <shrpne@gmail.com>",
   "license": "MIT",
-  "repository": "shrpne/postcss-page-break",
-  "bugs": {
-    "url": "https://github.com/shrpne/postcss-page-break/issues"
-  },
-  "homepage": "https://github.com/shrpne/postcss-page-break",
-  "dependencies": {
-    "postcss": "^7.0.2"
-  },
-  "devDependencies": {
-    "eslint": "^4.15.0",
-    "eslint-config-postcss": "^2.0.2",
-    "jest": "^21.0.0"
+  "name": "postcss-page-break",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/shrpne/postcss-page-break.git"
   },
   "scripts": {
     "test": "jest && eslint *.js"
   },
-  "eslintConfig": {
-    "extends": "eslint-config-postcss/es5",
-    "rules": {
-      "indent": ["error", 4, { "SwitchCase": 1 }],
-      "max-len": ["off"]
-    },
-    "env": {
-      "jest": true
-    }
-  }
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-place/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-place/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-place/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-place/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-place"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-place/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-place/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-place/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-place/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-place/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-place/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-place/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-place/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-place",
-  "version": "4.0.1",
-  "description": "Use a place-* shorthand for align-* and justify-* in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-place",
-  "homepage": "https://github.com/jonathantneal/postcss-place#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-place/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-place@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-place@4.0.1",
+  "_id": "postcss-place@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
+  "_location": "/postcss-place",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-place@4.0.1",
+    "name": "postcss-place",
+    "escapedName": "postcss-place",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-place/issues"
   },
   "dependencies": {
@@ -31,4 +42,5 @@
     "postcss-values-parser": "^2.0.0"
   },
+  "description": "Use a place-* shorthand for align-* and justify-* in CSS",
   "devDependencies": {
     "@babel/core": "^7.1.0",
@@ -42,8 +54,18 @@
     "rollup-plugin-babel": "^4.0.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-place#readme",
   "keywords": [
     "postcss",
@@ -57,4 +79,21 @@
     "contents",
     "selfs"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-place",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-place.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/postcss-preset-env/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-preset-env/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-preset-env/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-preset-env/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-preset-env/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-preset-env/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-preset-env/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-preset-env/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-preset-env/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-preset-env/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-preset-env/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,40 @@
 {
-  "name": "postcss-preset-env",
-  "version": "6.7.0",
-  "description": "Convert modern CSS into something browsers understand",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "csstools/postcss-preset-env",
-  "homepage": "https://github.com/csstools/postcss-preset-env#readme",
-  "bugs": "https://github.com/csstools/postcss-preset-env/issues",
-  "main": "index.js",
-  "module": "index.mjs",
-  "files": [
-    "index.js",
-    "index.js.map",
-    "index.mjs",
-    "index.mjs.map"
+  "_args": [
+    [
+      "postcss-preset-env@6.7.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "build": "rollup -c .rollup.js --silent",
-    "prepublishOnly": "npm test",
-    "pretest:tape": "npm run build",
-    "test": "npm run test:js && npm run test:tape",
-    "test:js": "eslint src/*.js src/lib/*.js src/patch/*.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-preset-env@6.7.0",
+  "_id": "postcss-preset-env@6.7.0",
+  "_inBundle": false,
+  "_integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
+  "_location": "/postcss-preset-env",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-preset-env@6.7.0",
+    "name": "postcss-preset-env",
+    "escapedName": "postcss-preset-env",
+    "rawSpec": "6.7.0",
+    "saveSpec": null,
+    "fetchSpec": "6.7.0"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
+  "_spec": "6.7.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/csstools/postcss-preset-env/issues"
   },
   "dependencies": {
@@ -66,4 +77,5 @@
     "postcss-selector-not": "^4.0.0"
   },
+  "description": "Convert modern CSS into something browsers understand",
   "devDependencies": {
     "@babel/core": "^7.5.0",
@@ -78,8 +90,18 @@
     "rollup-plugin-babel": "^4.3.3"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.js",
+    "index.js.map",
+    "index.mjs",
+    "index.mjs.map"
+  ],
+  "homepage": "https://github.com/csstools/postcss-preset-env#readme",
   "keywords": [
     "postcss",
@@ -95,4 +117,21 @@
     "future",
     "next"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.js",
+  "module": "index.mjs",
+  "name": "postcss-preset-env",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/csstools/postcss-preset-env.git"
+  },
+  "scripts": {
+    "build": "rollup -c .rollup.js --silent",
+    "prepublishOnly": "npm test",
+    "pretest:tape": "npm run build",
+    "test": "npm run test:js && npm run test:tape",
+    "test:js": "eslint src/*.js src/lib/*.js src/patch/*.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "6.7.0"
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -7,6 +7,9 @@
 
 if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  "$basedir/node"  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 else 
-  exec node  "$basedir/../cssesc/bin/cssesc" "$@"
+  node  "$basedir/../cssesc/bin/cssesc" "$@"
+  ret=$?
 fi
+exit $ret
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.cmd
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.cmd	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.cmd	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,8 +1,3 @@
 @ECHO off
-GOTO start
-:find_dp0
-SET dp0=%~dp0
-EXIT /b
-:start
 SETLOCAL
 CALL :find_dp0
@@ -15,3 +10,8 @@
 )
 
-endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+"%_prog%"  "%dp0%\..\cssesc\bin\cssesc" %*
+ENDLOCAL
+EXIT /b %errorlevel%
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.ps1
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.ps1	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/.bin/cssesc.ps1	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -10,18 +10,8 @@
 $ret=0
 if (Test-Path "$basedir/node$exe") {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "$basedir/node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 } else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  } else {
-    & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
-  }
+  & "node$exe"  "$basedir/../cssesc/bin/cssesc" $args
   $ret=$LASTEXITCODE
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/cssesc/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/cssesc/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/cssesc/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,41 +1,43 @@
 {
-  "name": "cssesc",
-  "version": "2.0.0",
-  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
-  "homepage": "https://mths.be/cssesc",
-  "engines": {
-    "node": ">=4"
+  "_args": [
+    [
+      "cssesc@2.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "cssesc@2.0.0",
+  "_id": "cssesc@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+  "_location": "/postcss-pseudo-class-any-link/cssesc",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "cssesc@2.0.0",
+    "name": "cssesc",
+    "escapedName": "cssesc",
+    "rawSpec": "2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "2.0.0"
   },
-  "main": "cssesc.js",
-  "bin": "bin/cssesc",
-  "man": "man/cssesc.1",
-  "keywords": [
-    "css",
-    "escape",
-    "identifier",
-    "string",
-    "tool"
+  "_requiredBy": [
+    "/postcss-pseudo-class-any-link/postcss-selector-parser"
   ],
-  "license": "MIT",
+  "_resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+  "_spec": "2.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
   "author": {
     "name": "Mathias Bynens",
     "url": "https://mathiasbynens.be/"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mathiasbynens/cssesc.git"
+  "bin": {
+    "cssesc": "bin/cssesc"
   },
-  "bugs": "https://github.com/mathiasbynens/cssesc/issues",
-  "files": [
-    "LICENSE-MIT.txt",
-    "cssesc.js",
-    "bin/",
-    "man/"
-  ],
-  "scripts": {
-    "build": "grunt template && babel cssesc.js -o cssesc.js",
-    "test": "mocha tests",
-    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec"
+  "bugs": {
+    "url": "https://github.com/mathiasbynens/cssesc/issues"
   },
+  "description": "A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -48,4 +50,37 @@
     "regenerate": "^1.2.1",
     "requirejs": "^2.1.16"
-  }
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "LICENSE-MIT.txt",
+    "cssesc.js",
+    "bin/",
+    "man/"
+  ],
+  "homepage": "https://mths.be/cssesc",
+  "keywords": [
+    "css",
+    "escape",
+    "identifier",
+    "string",
+    "tool"
+  ],
+  "license": "MIT",
+  "main": "cssesc.js",
+  "man": [
+    "man/cssesc.1"
+  ],
+  "name": "cssesc",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mathiasbynens/cssesc.git"
+  },
+  "scripts": {
+    "build": "grunt template && babel cssesc.js -o cssesc.js",
+    "cover": "istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec",
+    "test": "mocha tests"
+  },
+  "version": "2.0.0"
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,57 @@
 {
-  "name": "postcss-selector-parser",
-  "version": "5.0.0",
+  "_args": [
+    [
+      "postcss-selector-parser@5.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-selector-parser@5.0.0",
+  "_id": "postcss-selector-parser@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+  "_location": "/postcss-pseudo-class-any-link/postcss-selector-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-parser@5.0.0",
+    "name": "postcss-selector-parser",
+    "escapedName": "postcss-selector-parser",
+    "rawSpec": "5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "5.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-pseudo-class-any-link"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+  "_spec": "5.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "ava": {
+    "require": "babel-register",
+    "concurrency": 5
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-parser/issues"
+  },
+  "contributors": [
+    {
+      "name": "Ben Briggs",
+      "email": "beneb.info@gmail.com",
+      "url": "http://beneb.info"
+    },
+    {
+      "name": "Chris Eppstein",
+      "email": "chris@eppsteins.net",
+      "url": "http://twitter.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "cssesc": "^2.0.0",
+    "indexes-of": "^1.0.1",
+    "uniq": "^1.0.1"
+  },
+  "description": "> Selector parser with built in methods for working with selector strings.",
   "devDependencies": {
     "ava": "^0.25.0",
@@ -24,6 +76,7 @@
     "semver": "^5.6.0"
   },
-  "main": "dist/index.js",
-  "types": "postcss-selector-parser.d.ts",
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "API.md",
@@ -33,39 +86,8 @@
     "postcss-selector-parser.d.ts"
   ],
-  "scripts": {
-    "pretest": "eslint src",
-    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
-    "lintfix": "eslint --fix src",
-    "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js",
-    "testone": "ava"
-  },
-  "dependencies": {
-    "cssesc": "^2.0.0",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1"
-  },
+  "homepage": "https://github.com/postcss/postcss-selector-parser",
   "license": "MIT",
-  "engines": {
-    "node": ">=4"
-  },
-  "homepage": "https://github.com/postcss/postcss-selector-parser",
-  "contributors": [
-    {
-      "name": "Ben Briggs",
-      "email": "beneb.info@gmail.com",
-      "url": "http://beneb.info"
-    },
-    {
-      "name": "Chris Eppstein",
-      "email": "chris@eppsteins.net",
-      "url": "http://twitter.com/chriseppstein"
-    }
-  ],
-  "repository": "postcss/postcss-selector-parser",
-  "ava": {
-    "require": "babel-register",
-    "concurrency": 5
-  },
+  "main": "dist/index.js",
+  "name": "postcss-selector-parser",
   "nyc": {
     "exclude": [
@@ -73,4 +95,18 @@
       "**/__tests__"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-parser.git"
+  },
+  "scripts": {
+    "lintfix": "eslint --fix src",
+    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
+    "pretest": "eslint src",
+    "report": "nyc report --reporter=html",
+    "test": "nyc ava src/__tests__/*.js",
+    "testone": "ava"
+  },
+  "types": "postcss-selector-parser.d.ts",
+  "version": "5.0.0"
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-pseudo-class-any-link/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-pseudo-class-any-link"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-pseudo-class-any-link/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-pseudo-class-any-link/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-pseudo-class-any-link/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-pseudo-class-any-link/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-pseudo-class-any-link/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,29 +1,42 @@
 {
-  "name": "postcss-pseudo-class-any-link",
-  "version": "6.0.0",
-  "description": "Use the :any-link pseudo-class in CSS",
-  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
-  "license": "CC0-1.0",
-  "repository": "jonathantneal/postcss-pseudo-class-any-link",
-  "homepage": "https://github.com/jonathantneal/postcss-pseudo-class-any-link#readme",
-  "bugs": "https://github.com/jonathantneal/postcss-pseudo-class-any-link/issues",
-  "main": "index.cjs.js",
-  "module": "index.es.mjs",
-  "files": [
-    "index.cjs.js",
-    "index.cjs.js.map",
-    "index.es.mjs",
-    "index.es.mjs.map"
+  "_args": [
+    [
+      "postcss-pseudo-class-any-link@6.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "scripts": {
-    "prepublishOnly": "npm test",
-    "pretest": "rollup -c .rollup.js --silent",
-    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
-    "test:ec": "echint --ignore index.*.js test",
-    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
-    "test:tape": "postcss-tape"
+  "_development": true,
+  "_from": "postcss-pseudo-class-any-link@6.0.0",
+  "_id": "postcss-pseudo-class-any-link@6.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
+  "_location": "/postcss-pseudo-class-any-link",
+  "_phantomChildren": {
+    "indexes-of": "1.0.1",
+    "picocolors": "0.2.1",
+    "uniq": "1.0.1"
   },
-  "engines": {
-    "node": ">=6.0.0"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-pseudo-class-any-link@6.0.0",
+    "name": "postcss-pseudo-class-any-link",
+    "escapedName": "postcss-pseudo-class-any-link",
+    "rawSpec": "6.0.0",
+    "saveSpec": null,
+    "fetchSpec": "6.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
+  "_spec": "6.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Jonathan Neal",
+    "email": "jonathantneal@hotmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jonathantneal/postcss-pseudo-class-any-link/issues"
   },
   "dependencies": {
@@ -31,4 +44,5 @@
     "postcss-selector-parser": "^5.0.0-rc.3"
   },
+  "description": "Use the :any-link pseudo-class in CSS",
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -42,8 +56,18 @@
     "rollup-plugin-babel": "^4.0.1"
   },
+  "engines": {
+    "node": ">=6.0.0"
+  },
   "eslintConfig": {
     "extends": "dev",
     "parser": "babel-eslint"
   },
+  "files": [
+    "index.cjs.js",
+    "index.cjs.js.map",
+    "index.es.mjs",
+    "index.es.mjs.map"
+  ],
+  "homepage": "https://github.com/jonathantneal/postcss-pseudo-class-any-link#readme",
   "keywords": [
     "postcss",
@@ -57,4 +81,21 @@
     "hyperlink",
     "href"
-  ]
+  ],
+  "license": "CC0-1.0",
+  "main": "index.cjs.js",
+  "module": "index.es.mjs",
+  "name": "postcss-pseudo-class-any-link",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonathantneal/postcss-pseudo-class-any-link.git"
+  },
+  "scripts": {
+    "prepublishOnly": "npm test",
+    "pretest": "rollup -c .rollup.js --silent",
+    "test": "echo 'Running tests...'; npm run test:js && npm run test:tape",
+    "test:ec": "echint --ignore index.*.js test",
+    "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
+    "test:tape": "postcss-tape"
+  },
+  "version": "6.0.0"
 }
Index: trip-planner-front/node_modules/postcss-reduce-initial/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-reduce-initial/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-reduce-initial/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,7 +1,51 @@
 {
-  "name": "postcss-reduce-initial",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-reduce-initial@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-reduce-initial@5.0.1",
+  "_id": "postcss-reduce-initial@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==",
+  "_location": "/postcss-reduce-initial",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-reduce-initial@5.0.1",
+    "name": "postcss-reduce-initial",
+    "escapedName": "postcss-reduce-initial",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "browserslist": "^4.16.0",
+    "caniuse-api": "^3.0.0"
+  },
   "description": "Reduce initial definitions to the actual initial value, where possible.",
-  "main": "dist/index.js",
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
+  },
   "files": [
     "data",
@@ -9,10 +53,6 @@
     "LICENSE-MIT"
   ],
-  "scripts": {
-    "acquire": "node ./src/acquire.mjs",
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore '**/__tests__/,src/acquire.mjs'",
-    "prepublish": "yarn build"
-  },
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -21,27 +61,19 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "browserslist": "^4.16.0",
-    "caniuse-api": "^3.0.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-reduce-initial",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "acquire": "node ./src/acquire.mjs",
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore '**/__tests__/,src/acquire.mjs'",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-reduce-transforms/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-reduce-transforms/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-reduce-transforms/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,50 @@
 {
-  "name": "postcss-reduce-transforms",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-reduce-transforms@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-reduce-transforms@5.0.1",
+  "_id": "postcss-reduce-transforms@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==",
+  "_location": "/postcss-reduce-transforms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-reduce-transforms@5.0.1",
+    "name": "postcss-reduce-transforms",
+    "escapedName": "postcss-reduce-transforms",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "cssnano-utils": "^2.0.1",
+    "postcss-value-parser": "^4.1.0"
+  },
   "description": "Reduce transform functions with PostCSS.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,28 +52,21 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "cssnano-utils": "^2.0.1",
-    "postcss-value-parser": "^4.1.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-reduce-transforms",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-replace-overflow-wrap/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-replace-overflow-wrap"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-replace-overflow-wrap/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-replace-overflow-wrap/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-replace-overflow-wrap/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-replace-overflow-wrap/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-replace-overflow-wrap/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-replace-overflow-wrap/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,26 +1,45 @@
 {
-  "name": "postcss-replace-overflow-wrap",
-  "version": "3.0.0",
-  "description": "PostCSS plugin to replace overflow-wrap with word-wrap or optionally retain both declarations.",
-  "keywords": [
-    "postcss",
-    "css",
-    "postcss-plugin",
-    "overflow-wrap",
-    "word-wrap"
+  "_args": [
+    [
+      "postcss-replace-overflow-wrap@3.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Matthias Müller <MattDiMu@users.noreply.github.com>",
-  "license": "MIT",
-  "repository": "MattDiMu/postcss-replace-overflow-wrap",
+  "_development": true,
+  "_from": "postcss-replace-overflow-wrap@3.0.0",
+  "_id": "postcss-replace-overflow-wrap@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
+  "_location": "/postcss-replace-overflow-wrap",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-replace-overflow-wrap@3.0.0",
+    "name": "postcss-replace-overflow-wrap",
+    "escapedName": "postcss-replace-overflow-wrap",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
+  "_spec": "3.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Matthias Müller",
+    "email": "MattDiMu@users.noreply.github.com"
+  },
   "bugs": {
     "url": "https://github.com/MattDiMu/postcss-replace-overflow-wrap/issues"
   },
-  "homepage": "https://github.com/MattDiMu/postcss-replace-overflow-wrap",
-  "files": [
-    "index.js"
-  ],
   "dependencies": {
     "postcss": "^7.0.2"
   },
+  "description": "PostCSS plugin to replace overflow-wrap with word-wrap or optionally retain both declarations.",
   "devDependencies": {
     "ava": "^0.25.0",
@@ -37,7 +56,4 @@
     "eslint-plugin-standard": "^3.1.0"
   },
-  "scripts": {
-    "test": "ava && eslint *.js"
-  },
   "eslintConfig": {
     "extends": "eslint-config-postcss/es5",
@@ -46,4 +62,25 @@
       "es5/no-modules": false
     }
-  }
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/MattDiMu/postcss-replace-overflow-wrap",
+  "keywords": [
+    "postcss",
+    "css",
+    "postcss-plugin",
+    "overflow-wrap",
+    "word-wrap"
+  ],
+  "license": "MIT",
+  "name": "postcss-replace-overflow-wrap",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/MattDiMu/postcss-replace-overflow-wrap.git"
+  },
+  "scripts": {
+    "test": "ava && eslint *.js"
+  },
+  "version": "3.0.0"
 }
Index: trip-planner-front/node_modules/postcss-selector-matches/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-matches/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-matches/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-selector-matches/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-selector-matches"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-selector-matches/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-matches/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-matches/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-selector-matches/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-selector-matches/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-selector-matches/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-matches/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-matches/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,24 +1,45 @@
 {
-  "name": "postcss-selector-matches",
-  "version": "4.0.0",
-  "description": "PostCSS plugin to transform :matches() W3C CSS pseudo class to more compatible CSS selectors",
-  "keywords": [
-    "postcss",
-    "postcss-plugin",
-    "selectors",
-    "selector",
-    "matches"
+  "_args": [
+    [
+      "postcss-selector-matches@4.0.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Maxime Thirouin",
-  "license": "MIT",
-  "repository": "https://github.com/postcss/postcss-selector-matches.git",
-  "main": "dist/index.js",
-  "files": [
-    "dist"
+  "_development": true,
+  "_from": "postcss-selector-matches@4.0.0",
+  "_id": "postcss-selector-matches@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
+  "_location": "/postcss-selector-matches",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
+  },
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-matches@4.0.0",
+    "name": "postcss-selector-matches",
+    "escapedName": "postcss-selector-matches",
+    "rawSpec": "4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "4.0.0"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
   ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
+  "_spec": "4.0.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maxime Thirouin"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-matches/issues"
+  },
   "dependencies": {
     "balanced-match": "^1.0.0",
     "postcss": "^7.0.2"
   },
+  "description": "PostCSS plugin to transform :matches() W3C CSS pseudo class to more compatible CSS selectors",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -32,11 +53,30 @@
     "tape": "^4.9.1"
   },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/postcss/postcss-selector-matches#readme",
+  "keywords": [
+    "postcss",
+    "postcss-plugin",
+    "selectors",
+    "selector",
+    "matches"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "postcss-selector-matches",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-matches.git"
+  },
   "scripts": {
+    "babelify": "babel src --out-dir dist",
     "lint": "eslint ./src/*.js ./test/*.js",
+    "prepublish": "npm run babelify",
+    "release": "npmpub",
     "tape": "tape -r babel-register test/*.js",
-    "test": "npm run lint && npm run babelify && npm run tape",
-    "babelify": "babel src --out-dir dist",
-    "prepublish": "npm run babelify",
-    "release": "npmpub"
-  }
+    "test": "npm run lint && npm run babelify && npm run tape"
+  },
+  "version": "4.0.0"
 }
Index: trip-planner-front/node_modules/postcss-selector-not/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-not/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-not/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,9 +1,56 @@
 {
-  "name": "postcss",
-  "version": "7.0.39",
+  "_args": [
+    [
+      "postcss@7.0.39",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@7.0.39",
+  "_id": "postcss@7.0.39",
+  "_inBundle": false,
+  "_integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+  "_location": "/postcss-selector-not/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@7.0.39",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "7.0.39",
+    "saveSpec": null,
+    "fetchSpec": "7.0.39"
+  },
+  "_requiredBy": [
+    "/postcss-selector-not"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+  "_spec": "7.0.39",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "picocolors": "^0.2.1",
+    "source-map": "^0.6.1"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
     "node": ">=6.0.0"
   },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -17,21 +64,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "lib/postcss",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "picocolors": "^0.2.1",
-    "source-map": "^0.6.1"
-  },
-  "main": "lib/postcss",
   "types": "lib/postcss.d.ts",
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "fs": false
-  }
+  "version": "7.0.39"
 }
Index: trip-planner-front/node_modules/postcss-selector-not/node_modules/source-map/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-not/node_modules/source-map/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-not/node_modules/source-map/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,51 +1,193 @@
 {
-  "name": "source-map",
+  "_args": [
+    [
+      "source-map@0.6.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "source-map@0.6.1",
+  "_id": "source-map@0.6.1",
+  "_inBundle": false,
+  "_integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+  "_location": "/postcss-selector-not/source-map",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "source-map@0.6.1",
+    "name": "source-map",
+    "escapedName": "source-map",
+    "rawSpec": "0.6.1",
+    "saveSpec": null,
+    "fetchSpec": "0.6.1"
+  },
+  "_requiredBy": [
+    "/postcss-selector-not/postcss"
+  ],
+  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+  "_spec": "0.6.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Nick Fitzgerald",
+    "email": "nfitzgerald@mozilla.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mozilla/source-map/issues"
+  },
+  "contributors": [
+    {
+      "name": "Tobias Koppers",
+      "email": "tobias.koppers@googlemail.com"
+    },
+    {
+      "name": "Duncan Beevers",
+      "email": "duncan@dweebd.com"
+    },
+    {
+      "name": "Stephen Crane",
+      "email": "scrane@mozilla.com"
+    },
+    {
+      "name": "Ryan Seddon",
+      "email": "seddon.ryan@gmail.com"
+    },
+    {
+      "name": "Miles Elam",
+      "email": "miles.elam@deem.com"
+    },
+    {
+      "name": "Mihai Bazon",
+      "email": "mihai.bazon@gmail.com"
+    },
+    {
+      "name": "Michael Ficarra",
+      "email": "github.public.email@michael.ficarra.me"
+    },
+    {
+      "name": "Todd Wolfson",
+      "email": "todd@twolfson.com"
+    },
+    {
+      "name": "Alexander Solovyov",
+      "email": "alexander@solovyov.net"
+    },
+    {
+      "name": "Felix Gnass",
+      "email": "fgnass@gmail.com"
+    },
+    {
+      "name": "Conrad Irwin",
+      "email": "conrad.irwin@gmail.com"
+    },
+    {
+      "name": "usrbincc",
+      "email": "usrbincc@yahoo.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Chase Douglas",
+      "email": "chase@newrelic.com"
+    },
+    {
+      "name": "Evan Wallace",
+      "email": "evan.exe@gmail.com"
+    },
+    {
+      "name": "Heather Arthur",
+      "email": "fayearthur@gmail.com"
+    },
+    {
+      "name": "Hugh Kennedy",
+      "email": "hughskennedy@gmail.com"
+    },
+    {
+      "name": "David Glasser",
+      "email": "glasser@davidglasser.net"
+    },
+    {
+      "name": "Simon Lydell",
+      "email": "simon.lydell@gmail.com"
+    },
+    {
+      "name": "Jmeas Smith",
+      "email": "jellyes2@gmail.com"
+    },
+    {
+      "name": "Michael Z Goddard",
+      "email": "mzgoddard@gmail.com"
+    },
+    {
+      "name": "azu",
+      "email": "azu@users.noreply.github.com"
+    },
+    {
+      "name": "John Gozde",
+      "email": "john@gozde.ca"
+    },
+    {
+      "name": "Adam Kirkton",
+      "email": "akirkton@truefitinnovation.com"
+    },
+    {
+      "name": "Chris Montgomery",
+      "email": "christopher.montgomery@dowjones.com"
+    },
+    {
+      "name": "J. Ryan Stinnett",
+      "email": "jryans@gmail.com"
+    },
+    {
+      "name": "Jack Herrington",
+      "email": "jherrington@walmartlabs.com"
+    },
+    {
+      "name": "Chris Truter",
+      "email": "jeffpalentine@gmail.com"
+    },
+    {
+      "name": "Daniel Espeset",
+      "email": "daniel@danielespeset.com"
+    },
+    {
+      "name": "Jamie Wong",
+      "email": "jamie.lf.wong@gmail.com"
+    },
+    {
+      "name": "Eddy Bruël",
+      "email": "ejpbruel@mozilla.com"
+    },
+    {
+      "name": "Hawken Rives",
+      "email": "hawkrives@gmail.com"
+    },
+    {
+      "name": "Gilad Peleg",
+      "email": "giladp007@gmail.com"
+    },
+    {
+      "name": "djchie",
+      "email": "djchie.dev@gmail.com"
+    },
+    {
+      "name": "Gary Ye",
+      "email": "garysye@gmail.com"
+    },
+    {
+      "name": "Nicolas Lalevée",
+      "email": "nicolas.lalevee@hibnet.org"
+    }
+  ],
   "description": "Generates and consumes source maps",
-  "version": "0.6.1",
-  "homepage": "https://github.com/mozilla/source-map",
-  "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
-  "contributors": [
-    "Tobias Koppers <tobias.koppers@googlemail.com>",
-    "Duncan Beevers <duncan@dweebd.com>",
-    "Stephen Crane <scrane@mozilla.com>",
-    "Ryan Seddon <seddon.ryan@gmail.com>",
-    "Miles Elam <miles.elam@deem.com>",
-    "Mihai Bazon <mihai.bazon@gmail.com>",
-    "Michael Ficarra <github.public.email@michael.ficarra.me>",
-    "Todd Wolfson <todd@twolfson.com>",
-    "Alexander Solovyov <alexander@solovyov.net>",
-    "Felix Gnass <fgnass@gmail.com>",
-    "Conrad Irwin <conrad.irwin@gmail.com>",
-    "usrbincc <usrbincc@yahoo.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Chase Douglas <chase@newrelic.com>",
-    "Evan Wallace <evan.exe@gmail.com>",
-    "Heather Arthur <fayearthur@gmail.com>",
-    "Hugh Kennedy <hughskennedy@gmail.com>",
-    "David Glasser <glasser@davidglasser.net>",
-    "Simon Lydell <simon.lydell@gmail.com>",
-    "Jmeas Smith <jellyes2@gmail.com>",
-    "Michael Z Goddard <mzgoddard@gmail.com>",
-    "azu <azu@users.noreply.github.com>",
-    "John Gozde <john@gozde.ca>",
-    "Adam Kirkton <akirkton@truefitinnovation.com>",
-    "Chris Montgomery <christopher.montgomery@dowjones.com>",
-    "J. Ryan Stinnett <jryans@gmail.com>",
-    "Jack Herrington <jherrington@walmartlabs.com>",
-    "Chris Truter <jeffpalentine@gmail.com>",
-    "Daniel Espeset <daniel@danielespeset.com>",
-    "Jamie Wong <jamie.lf.wong@gmail.com>",
-    "Eddy Bruël <ejpbruel@mozilla.com>",
-    "Hawken Rives <hawkrives@gmail.com>",
-    "Gilad Peleg <giladp007@gmail.com>",
-    "djchie <djchie.dev@gmail.com>",
-    "Gary Ye <garysye@gmail.com>",
-    "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
-  ],
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/mozilla/source-map.git"
-  },
-  "main": "./source-map.js",
+  "devDependencies": {
+    "doctoc": "^0.15.0",
+    "webpack": "^1.12.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
   "files": [
     "source-map.js",
@@ -57,17 +199,18 @@
     "dist/source-map.min.js.map"
   ],
-  "engines": {
-    "node": ">=0.10.0"
-  },
+  "homepage": "https://github.com/mozilla/source-map",
   "license": "BSD-3-Clause",
+  "main": "./source-map.js",
+  "name": "source-map",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/mozilla/source-map.git"
+  },
   "scripts": {
+    "build": "webpack --color",
     "test": "npm run build && node test/run-tests.js",
-    "build": "webpack --color",
     "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
   },
-  "devDependencies": {
-    "doctoc": "^0.15.0",
-    "webpack": "^1.12.0"
-  },
-  "typings": "source-map"
+  "typings": "source-map",
+  "version": "0.6.1"
 }
Index: trip-planner-front/node_modules/postcss-selector-not/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-not/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-not/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,27 +1,45 @@
 {
-  "name": "postcss-selector-not",
-  "version": "4.0.1",
-  "description": "PostCSS plugin to transform :not() W3C CSS level 4 pseudo class to :not() CSS level 3 selectors",
-  "keywords": [
-    "postcss",
-    "postcss-plugin",
-    "selectors",
-    "selector",
-    "Not"
+  "_args": [
+    [
+      "postcss-selector-not@4.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
   ],
-  "author": "Maxime Thirouin",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/postcss/postcss-selector-not.git"
+  "_development": true,
+  "_from": "postcss-selector-not@4.0.1",
+  "_id": "postcss-selector-not@4.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==",
+  "_location": "/postcss-selector-not",
+  "_phantomChildren": {
+    "picocolors": "0.2.1"
   },
-  "main": "dist/index.js",
-  "files": [
-    "dist"
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-not@4.0.1",
+    "name": "postcss-selector-not",
+    "escapedName": "postcss-selector-not",
+    "rawSpec": "4.0.1",
+    "saveSpec": null,
+    "fetchSpec": "4.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-preset-env"
   ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz",
+  "_spec": "4.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Maxime Thirouin"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-not/issues"
+  },
   "dependencies": {
     "balanced-match": "^1.0.0",
     "postcss": "^7.0.2"
   },
+  "description": "PostCSS plugin to transform :not() W3C CSS level 4 pseudo class to :not() CSS level 3 selectors",
   "devDependencies": {
     "babel-cli": "^6.26.0",
@@ -32,10 +50,29 @@
     "tape": "^4.9.1"
   },
+  "files": [
+    "dist"
+  ],
+  "homepage": "https://github.com/postcss/postcss-selector-not#readme",
+  "keywords": [
+    "postcss",
+    "postcss-plugin",
+    "selectors",
+    "selector",
+    "Not"
+  ],
+  "license": "MIT",
+  "main": "dist/index.js",
+  "name": "postcss-selector-not",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-not.git"
+  },
   "scripts": {
+    "babelify": "babel src --out-dir dist",
     "lint": "eslint ./src/*.js ./test/*.js",
+    "prepublish": "npm run babelify",
     "tape": "tape -r babel-register test/*.js",
-    "test": "npm run lint && npm run babelify && npm run tape",
-    "babelify": "babel src --out-dir dist",
-    "prepublish": "npm run babelify"
-  }
+    "test": "npm run lint && npm run babelify && npm run tape"
+  },
+  "version": "4.0.1"
 }
Index: trip-planner-front/node_modules/postcss-selector-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-selector-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-selector-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,66 @@
 {
-  "name": "postcss-selector-parser",
-  "version": "6.0.6",
+  "_args": [
+    [
+      "postcss-selector-parser@6.0.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-selector-parser@6.0.6",
+  "_id": "postcss-selector-parser@6.0.6",
+  "_inBundle": false,
+  "_integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
+  "_location": "/postcss-selector-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-selector-parser@6.0.6",
+    "name": "postcss-selector-parser",
+    "escapedName": "postcss-selector-parser",
+    "rawSpec": "6.0.6",
+    "saveSpec": null,
+    "fetchSpec": "6.0.6"
+  },
+  "_requiredBy": [
+    "/postcss-attribute-case-insensitive",
+    "/postcss-calc",
+    "/postcss-merge-rules",
+    "/postcss-minify-selectors",
+    "/postcss-modules-local-by-default",
+    "/postcss-modules-scope",
+    "/postcss-unique-selectors",
+    "/stylehacks"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
+  "_spec": "6.0.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "ava": {
+    "require": [
+      "@babel/register"
+    ],
+    "concurrency": 5,
+    "timeout": "25s"
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss-selector-parser/issues"
+  },
+  "contributors": [
+    {
+      "name": "Ben Briggs",
+      "email": "beneb.info@gmail.com",
+      "url": "http://beneb.info"
+    },
+    {
+      "name": "Chris Eppstein",
+      "email": "chris@eppsteins.net",
+      "url": "http://twitter.com/chriseppstein"
+    }
+  ],
+  "dependencies": {
+    "cssesc": "^3.0.0",
+    "util-deprecate": "^1.0.2"
+  },
+  "description": "> Selector parser with built in methods for working with selector strings.",
   "devDependencies": {
     "@babel/cli": "^7.11.6",
@@ -23,6 +84,7 @@
     "typescript": "^4.0.3"
   },
-  "main": "dist/index.js",
-  "types": "postcss-selector-parser.d.ts",
+  "engines": {
+    "node": ">=4"
+  },
   "files": [
     "API.md",
@@ -32,41 +94,8 @@
     "postcss-selector-parser.d.ts"
   ],
-  "scripts": {
-    "pretest": "eslint src && tsc --noEmit postcss-selector-parser.d.ts",
-    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
-    "lintfix": "eslint --fix src",
-    "report": "nyc report --reporter=html",
-    "test": "nyc ava src/__tests__/*.js ",
-    "testone": "ava"
-  },
-  "dependencies": {
-    "cssesc": "^3.0.0",
-    "util-deprecate": "^1.0.2"
-  },
+  "homepage": "https://github.com/postcss/postcss-selector-parser",
   "license": "MIT",
-  "engines": {
-    "node": ">=4"
-  },
-  "homepage": "https://github.com/postcss/postcss-selector-parser",
-  "contributors": [
-    {
-      "name": "Ben Briggs",
-      "email": "beneb.info@gmail.com",
-      "url": "http://beneb.info"
-    },
-    {
-      "name": "Chris Eppstein",
-      "email": "chris@eppsteins.net",
-      "url": "http://twitter.com/chriseppstein"
-    }
-  ],
-  "repository": "postcss/postcss-selector-parser",
-  "ava": {
-    "require": [
-      "@babel/register"
-    ],
-    "concurrency": 5,
-    "timeout": "25s"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-selector-parser",
   "nyc": {
     "exclude": [
@@ -74,4 +103,18 @@
       "**/__tests__"
     ]
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss-selector-parser.git"
+  },
+  "scripts": {
+    "lintfix": "eslint --fix src",
+    "prepare": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
+    "pretest": "eslint src && tsc --noEmit postcss-selector-parser.d.ts",
+    "report": "nyc report --reporter=html",
+    "test": "nyc ava src/__tests__/*.js ",
+    "testone": "ava"
+  },
+  "types": "postcss-selector-parser.d.ts",
+  "version": "6.0.6"
 }
Index: trip-planner-front/node_modules/postcss-svgo/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-svgo/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-svgo/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,50 @@
 {
-  "name": "postcss-svgo",
-  "version": "5.0.2",
+  "_args": [
+    [
+      "postcss-svgo@5.0.2",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-svgo@5.0.2",
+  "_id": "postcss-svgo@5.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==",
+  "_location": "/postcss-svgo",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-svgo@5.0.2",
+    "name": "postcss-svgo",
+    "escapedName": "postcss-svgo",
+    "rawSpec": "5.0.2",
+    "saveSpec": null,
+    "fetchSpec": "5.0.2"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz",
+  "_spec": "5.0.2",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "postcss-value-parser": "^4.1.0",
+    "svgo": "^2.3.0"
+  },
   "description": "Optimise inline SVG with PostCSS.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,4 +52,6 @@
     "dist"
   ],
+  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -23,27 +64,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "postcss-value-parser": "^4.1.0",
-    "svgo": "^2.3.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-svgo",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "9b3c54fd94f3e2bdb503d1e21f171d7fe02f33ca"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.2"
 }
Index: trip-planner-front/node_modules/postcss-unique-selectors/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-unique-selectors/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-unique-selectors/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,11 +1,51 @@
 {
-  "name": "postcss-unique-selectors",
-  "version": "5.0.1",
+  "_args": [
+    [
+      "postcss-unique-selectors@5.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-unique-selectors@5.0.1",
+  "_id": "postcss-unique-selectors@5.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==",
+  "_location": "/postcss-unique-selectors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-unique-selectors@5.0.1",
+    "name": "postcss-unique-selectors",
+    "escapedName": "postcss-unique-selectors",
+    "rawSpec": "5.0.1",
+    "saveSpec": null,
+    "fetchSpec": "5.0.1"
+  },
+  "_requiredBy": [
+    "/cssnano-preset-default"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz",
+  "_spec": "5.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Ben Briggs",
+    "email": "beneb.info@gmail.com",
+    "url": "http://beneb.info"
+  },
+  "bugs": {
+    "url": "https://github.com/cssnano/cssnano/issues"
+  },
+  "dependencies": {
+    "alphanum-sort": "^1.0.2",
+    "postcss-selector-parser": "^6.0.5",
+    "uniqs": "^2.0.0"
+  },
   "description": "Ensure CSS selectors are unique.",
-  "main": "dist/index.js",
-  "scripts": {
-    "prebuild": "del-cli dist",
-    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
-    "prepublish": "yarn build"
+  "devDependencies": {
+    "postcss": "^8.2.15"
+  },
+  "engines": {
+    "node": "^10 || ^12 || >=14.0"
   },
   "files": [
@@ -13,4 +53,6 @@
     "dist"
   ],
+  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc",
+  "homepage": "https://github.com/cssnano/cssnano",
   "keywords": [
     "css",
@@ -19,28 +61,18 @@
   ],
   "license": "MIT",
-  "homepage": "https://github.com/cssnano/cssnano",
-  "author": {
-    "name": "Ben Briggs",
-    "email": "beneb.info@gmail.com",
-    "url": "http://beneb.info"
-  },
-  "repository": "cssnano/cssnano",
-  "dependencies": {
-    "alphanum-sort": "^1.0.2",
-    "postcss-selector-parser": "^6.0.5",
-    "uniqs": "^2.0.0"
-  },
-  "bugs": {
-    "url": "https://github.com/cssnano/cssnano/issues"
-  },
-  "engines": {
-    "node": "^10 || ^12 || >=14.0"
-  },
-  "devDependencies": {
-    "postcss": "^8.2.15"
-  },
+  "main": "dist/index.js",
+  "name": "postcss-unique-selectors",
   "peerDependencies": {
     "postcss": "^8.2.15"
   },
-  "gitHead": "28c247175032fa03f04911cde56ad82d74d211cc"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/cssnano/cssnano.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=publish babel src --config-file ../../babel.config.json --out-dir dist --ignore \"**/__tests__/\"",
+    "prebuild": "del-cli dist",
+    "prepublish": "yarn build"
+  },
+  "version": "5.0.1"
 }
Index: trip-planner-front/node_modules/postcss-value-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-value-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-value-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,10 +1,61 @@
 {
-  "name": "postcss-value-parser",
-  "version": "4.1.0",
+  "_args": [
+    [
+      "postcss-value-parser@4.1.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-value-parser@4.1.0",
+  "_id": "postcss-value-parser@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
+  "_location": "/postcss-value-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-value-parser@4.1.0",
+    "name": "postcss-value-parser",
+    "escapedName": "postcss-value-parser",
+    "rawSpec": "4.1.0",
+    "saveSpec": null,
+    "fetchSpec": "4.1.0"
+  },
+  "_requiredBy": [
+    "/autoprefixer",
+    "/css-loader",
+    "/postcss-calc",
+    "/postcss-colormin",
+    "/postcss-convert-values",
+    "/postcss-import",
+    "/postcss-merge-longhand",
+    "/postcss-minify-font-values",
+    "/postcss-minify-gradients",
+    "/postcss-minify-params",
+    "/postcss-modules-local-by-default",
+    "/postcss-normalize-display-values",
+    "/postcss-normalize-positions",
+    "/postcss-normalize-repeat-style",
+    "/postcss-normalize-string",
+    "/postcss-normalize-timing-functions",
+    "/postcss-normalize-unicode",
+    "/postcss-normalize-url",
+    "/postcss-normalize-whitespace",
+    "/postcss-ordered-values",
+    "/postcss-reduce-transforms",
+    "/postcss-svgo"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+  "_spec": "4.1.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Bogdan Chadkin",
+    "email": "trysound@yandex.ru"
+  },
+  "bugs": {
+    "url": "https://github.com/TrySound/postcss-value-parser/issues"
+  },
   "description": "Transforms css values and at-rule params into the tree",
-  "main": "lib/index.js",
-  "files": [
-    "lib"
-  ],
   "devDependencies": {
     "eslint": "^5.16.0",
@@ -15,11 +66,4 @@
     "tape": "^4.10.2"
   },
-  "scripts": {
-    "lint:prettier": "prettier '**/*.js' '**/*.ts' --list-different",
-    "lint:js": "eslint . --cache",
-    "lint": "yarn lint:js && yarn lint:prettier",
-    "pretest": "yarn lint",
-    "test": "tape test/*.js | tap-spec"
-  },
   "eslintConfig": {
     "env": {
@@ -29,4 +73,19 @@
     "extends": "eslint:recommended"
   },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/TrySound/postcss-value-parser",
+  "husky": {
+    "hooks": {
+      "pre-commit": "lint-staged"
+    }
+  },
+  "keywords": [
+    "postcss",
+    "value",
+    "parser"
+  ],
+  "license": "MIT",
   "lint-staged": {
     "*.js": [
@@ -36,23 +95,17 @@
     ]
   },
-  "husky": {
-    "hooks": {
-      "pre-commit": "lint-staged"
-    }
-  },
-  "author": "Bogdan Chadkin <trysound@yandex.ru>",
-  "license": "MIT",
-  "homepage": "https://github.com/TrySound/postcss-value-parser",
+  "main": "lib/index.js",
+  "name": "postcss-value-parser",
   "repository": {
     "type": "git",
-    "url": "https://github.com/TrySound/postcss-value-parser.git"
+    "url": "git+https://github.com/TrySound/postcss-value-parser.git"
   },
-  "keywords": [
-    "postcss",
-    "value",
-    "parser"
-  ],
-  "bugs": {
-    "url": "https://github.com/TrySound/postcss-value-parser/issues"
-  }
+  "scripts": {
+    "lint": "yarn lint:js && yarn lint:prettier",
+    "lint:js": "eslint . --cache",
+    "lint:prettier": "prettier '**/*.js' '**/*.ts' --list-different",
+    "pretest": "yarn lint",
+    "test": "tape test/*.js | tap-spec"
+  },
+  "version": "4.1.0"
 }
Index: trip-planner-front/node_modules/postcss-values-parser/package.json
===================================================================
--- trip-planner-front/node_modules/postcss-values-parser/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss-values-parser/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,20 +1,68 @@
 {
-  "name": "postcss-values-parser",
-  "version": "2.0.1",
+  "_args": [
+    [
+      "postcss-values-parser@2.0.1",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss-values-parser@2.0.1",
+  "_id": "postcss-values-parser@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
+  "_location": "/postcss-values-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss-values-parser@2.0.1",
+    "name": "postcss-values-parser",
+    "escapedName": "postcss-values-parser",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/postcss-color-functional-notation",
+    "/postcss-color-gray",
+    "/postcss-color-hex-alpha",
+    "/postcss-color-mod-function",
+    "/postcss-color-rebeccapurple",
+    "/postcss-custom-properties",
+    "/postcss-double-position-gradients",
+    "/postcss-env-function",
+    "/postcss-image-set-function",
+    "/postcss-lab-function",
+    "/postcss-place"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrew Powell",
+    "email": "andrew@shellscape.org",
+    "url": "shellscape"
+  },
+  "bugs": {
+    "url": "https://github.com/lesshint/postcss-values-parser/issues"
+  },
+  "dependencies": {
+    "flatten": "^1.0.2",
+    "indexes-of": "^1.0.1",
+    "uniq": "^1.0.1"
+  },
   "description": "A CSS property value parser for use with PostCSS",
-  "main": "lib/index.js",
-  "repository": "lesshint/postcss-values-parser",
-  "author": {
-    "name": "Andrew Powell (shellscape)",
-    "email": "andrew@shellscape.org",
-    "url": "http://shellscape.org"
+  "devDependencies": {
+    "chai": "^4.1.2",
+    "chai-shallow-deep-equal": "^1.4.0",
+    "eslint": "^5.6.0",
+    "gulp": "^3.9.1",
+    "gulp-eslint": "^5.0.0",
+    "gulp-mocha": "^6.0.0"
   },
-  "license": "MIT",
   "engines": {
     "node": ">=6.14.4"
   },
-  "scripts": {
-    "test": "gulp"
-  },
+  "homepage": "https://github.com/lesshint/postcss-values-parser#readme",
   "keywords": [
     "css",
@@ -28,16 +76,14 @@
     "properties"
   ],
-  "dependencies": {
-    "flatten": "^1.0.2",
-    "indexes-of": "^1.0.1",
-    "uniq": "^1.0.1"
+  "license": "MIT",
+  "main": "lib/index.js",
+  "name": "postcss-values-parser",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lesshint/postcss-values-parser.git"
   },
-  "devDependencies": {
-    "chai": "^4.1.2",
-    "chai-shallow-deep-equal": "^1.4.0",
-    "eslint": "^5.6.0",
-    "gulp": "^3.9.1",
-    "gulp-eslint": "^5.0.0",
-    "gulp-mocha": "^6.0.0"
-  }
+  "scripts": {
+    "test": "gulp"
+  },
+  "version": "2.0.1"
 }
Index: trip-planner-front/node_modules/postcss/package.json
===================================================================
--- trip-planner-front/node_modules/postcss/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/postcss/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,5 +1,54 @@
 {
-  "name": "postcss",
-  "version": "8.3.6",
+  "_args": [
+    [
+      "postcss@8.3.6",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "postcss@8.3.6",
+  "_id": "postcss@8.3.6",
+  "_inBundle": false,
+  "_integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
+  "_location": "/postcss",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "postcss@8.3.6",
+    "name": "postcss",
+    "escapedName": "postcss",
+    "rawSpec": "8.3.6",
+    "saveSpec": null,
+    "fetchSpec": "8.3.6"
+  },
+  "_requiredBy": [
+    "/@angular-devkit/build-angular",
+    "/css-loader",
+    "/css-minimizer-webpack-plugin"
+  ],
+  "_resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
+  "_spec": "8.3.6",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Andrey Sitnik",
+    "email": "andrey@sitnik.ru"
+  },
+  "browser": {
+    "./lib/terminal-highlight": false,
+    "source-map-js": false,
+    "colorette": false,
+    "path": false,
+    "url": false,
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/postcss/postcss/issues"
+  },
+  "dependencies": {
+    "colorette": "^1.2.2",
+    "nanoid": "^3.1.23",
+    "source-map-js": "^0.6.2"
+  },
   "description": "Tool for transforming styles with JS plugins",
   "engines": {
@@ -40,6 +89,9 @@
     "./package.json": "./package.json"
   },
-  "main": "./lib/postcss.js",
-  "types": "./lib/postcss.d.ts",
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/postcss/"
+  },
+  "homepage": "https://postcss.org/",
   "keywords": [
     "css",
@@ -53,24 +105,12 @@
     "transpiler"
   ],
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/postcss/"
+  "license": "MIT",
+  "main": "./lib/postcss.js",
+  "name": "postcss",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/postcss/postcss.git"
   },
-  "author": "Andrey Sitnik <andrey@sitnik.ru>",
-  "license": "MIT",
-  "homepage": "https://postcss.org/",
-  "repository": "postcss/postcss",
-  "dependencies": {
-    "colorette": "^1.2.2",
-    "nanoid": "^3.1.23",
-    "source-map-js": "^0.6.2"
-  },
-  "browser": {
-    "./lib/terminal-highlight": false,
-    "source-map-js": false,
-    "colorette": false,
-    "path": false,
-    "url": false,
-    "fs": false
-  }
+  "types": "./lib/postcss.d.ts",
+  "version": "8.3.6"
 }
Index: trip-planner-front/node_modules/pretty-bytes/package.json
===================================================================
--- trip-planner-front/node_modules/pretty-bytes/package.json	(revision 188ee53d7e92cd841a2f812afa7a47793c1280f2)
+++ trip-planner-front/node_modules/pretty-bytes/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -1,44 +1,80 @@
 {
-	"name": "pretty-bytes",
-	"version": "5.6.0",
-	"description": "Convert bytes to a human readable string: 1337 → 1.34 kB",
-	"license": "MIT",
-	"repository": "sindresorhus/pretty-bytes",
-	"funding": "https://github.com/sponsors/sindresorhus",
-	"author": {
-		"name": "Sindre Sorhus",
-		"email": "sindresorhus@gmail.com",
-		"url": "https://sindresorhus.com"
-	},
-	"engines": {
-		"node": ">=6"
-	},
-	"scripts": {
-		"test": "xo && ava && tsd"
-	},
-	"files": [
-		"index.js",
-		"index.d.ts"
-	],
-	"keywords": [
-		"pretty",
-		"bytes",
-		"byte",
-		"filesize",
-		"size",
-		"file",
-		"human",
-		"humanized",
-		"readable",
-		"si",
-		"data",
-		"locale",
-		"localization",
-		"localized"
-	],
-	"devDependencies": {
-		"ava": "^1.4.1",
-		"tsd": "^0.7.2",
-		"xo": "^0.24.0"
-	}
+  "_args": [
+    [
+      "pretty-bytes@5.6.0",
+      "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front"
+    ]
+  ],
+  "_development": true,
+  "_from": "pretty-bytes@5.6.0",
+  "_id": "pretty-bytes@5.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+  "_location": "/pretty-bytes",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "pretty-bytes@5.6.0",
+    "name": "pretty-bytes",
+    "escapedName": "pretty-bytes",
+    "rawSpec": "5.6.0",
+    "saveSpec": null,
+    "fetchSpec": "5.6.0"
+  },
+  "_requiredBy": [
+    "/critters"
+  ],
+  "_resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+  "_spec": "5.6.0",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "https://sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/pretty-bytes/issues"
+  },
+  "description": "Convert bytes to a human readable string: 1337 → 1.34 kB",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "funding": "https://github.com/sponsors/sindresorhus",
+  "homepage": "https://github.com/sindresorhus/pretty-bytes#readme",
+  "keywords": [
+    "pretty",
+    "bytes",
+    "byte",
+    "filesize",
+    "size",
+    "file",
+    "human",
+    "humanized",
+    "readable",
+    "si",
+    "data",
+    "locale",
+    "localization",
+    "localized"
+  ],
+  "license": "MIT",
+  "name": "pretty-bytes",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/pretty-bytes.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "5.6.0"
 }
Index: trip-planner-front/node_modules/primeicons/CHANGELOG.md
===================================================================
--- trip-planner-front/node_modules/primeicons/CHANGELOG.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/CHANGELOG.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,184 @@
+# Changelog
+
+## [4.1.0](https://github.com/primefaces/primeicons/tree/4.1.0) (2020-11-18)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/4.0.0...4.1.0)
+
+**New Icons:**
+
+- Add "slack" icon [\#294](https://github.com/primefaces/primeicons/issues/294)
+- Add "youtube" icon [\#288](https://github.com/primefaces/primeicons/issues/288)
+- Add "vimeo" icon [\#276](https://github.com/primefaces/primeicons/issues/276)
+- Add "discord" icon [\#273](https://github.com/primefaces/primeicons/issues/273)
+- Add "Sun/Moon/Cloud" icons to represent "Light/Dark/Dim" modes [\#256](https://github.com/primefaces/primeicons/issues/256)
+- Add "map" icon [\#253](https://github.com/primefaces/primeicons/issues/253)
+- Add "paypal" icon [\#235](https://github.com/primefaces/primeicons/issues/235)
+- Add "amazon" icon [\#234](https://github.com/primefaces/primeicons/issues/234)
+- Add "filter-slash" icon  [\#220](https://github.com/primefaces/primeicons/issues/220)
+- Add "percentage" icon [\#209](https://github.com/primefaces/primeicons/issues/209)
+- Add "wallet" icon [\#192](https://github.com/primefaces/primeicons/issues/192)
+- Add "chain link" icon  [\#190](https://github.com/primefaces/primeicons/issues/190)
+- Add "credit card" icon [\#187](https://github.com/primefaces/primeicons/issues/187)
+- Add "flag" icon [\#180](https://github.com/primefaces/primeicons/issues/180)
+- Add "paper-plane" icon [\#141](https://github.com/primefaces/primeicons/issues/141)
+- Add "shield" icon [\#99](https://github.com/primefaces/primeicons/issues/99)
+- Add "book" icon [\#97](https://github.com/primefaces/primeicons/issues/97)
+- Add "phone" icon [\#77](https://github.com/primefaces/primeicons/issues/77)
+
+**Fixed bugs:**
+
+- Rename exclamation-triangle .svg \(remove the space in the name\) [\#286](https://github.com/primefaces/primeicons/issues/286)
+
+## [4.0.0](https://github.com/primefaces/primeicons/tree/4.0.0) (2020-06-15)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/4.0.0-rc.2...4.0.0)
+
+## [4.0.0-rc.2](https://github.com/primefaces/primeicons/tree/4.0.0-rc.2) (2020-05-26)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/4.0.0-rc.1...4.0.0-rc.2)
+
+## [4.0.0-rc.1](https://github.com/primefaces/primeicons/tree/4.0.0-rc.1) (2020-05-23)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/3.0.0...4.0.0-rc.1)
+
+## [3.0.0](https://github.com/primefaces/primeicons/tree/3.0.0) (2020-05-23)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/3.0.0-rc.1...3.0.0)
+
+## [3.0.0-rc.1](https://github.com/primefaces/primeicons/tree/3.0.0-rc.1) (2020-05-07)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/2.0.0...3.0.0-rc.1)
+
+**New Icons:**
+
+- Fix issues of arrow, chevron and angle icon families [\#227](https://github.com/primefaces/primeicons/issues/227)
+
+## [2.0.0](https://github.com/primefaces/primeicons/tree/2.0.0) (2019-07-25)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/1.0.0...2.0.0)
+
+**New Icons:**
+
+- Controlling Font Performance with font-display [\#164](https://github.com/primefaces/primeicons/issues/164)
+- Add "apple" icon [\#125](https://github.com/primefaces/primeicons/issues/125)
+- Add "android" icon [\#124](https://github.com/primefaces/primeicons/issues/124)
+- Add "google" icon [\#123](https://github.com/primefaces/primeicons/issues/123)
+- Add "microsoft" icon [\#122](https://github.com/primefaces/primeicons/issues/122)
+- Update PrimeNG documentation to show newer icons [\#185](https://github.com/primefaces/primeicons/issues/185)
+- Add "compass" Icon [\#184](https://github.com/primefaces/primeicons/issues/184)
+- Add "file-excel" icon [\#181](https://github.com/primefaces/primeicons/issues/181)
+- Add "undo" icon [\#179](https://github.com/primefaces/primeicons/issues/179)
+- Add sort type icons [\#177](https://github.com/primefaces/primeicons/issues/177)
+- Add "directions" icon  [\#176](https://github.com/primefaces/primeicons/issues/176)
+- Add "edit user" icon [\#175](https://github.com/primefaces/primeicons/issues/175)
+- Add "exclamation circle" icon [\#174](https://github.com/primefaces/primeicons/issues/174)
+- Add "sliders" icon [\#173](https://github.com/primefaces/primeicons/issues/173)
+- Add play, stop, pause, rew, ffw icons [\#163](https://github.com/primefaces/primeicons/issues/163)
+- Add "search-minus" and "search-plus" icons [\#162](https://github.com/primefaces/primeicons/issues/162)
+- Add "file-pdf" icon [\#161](https://github.com/primefaces/primeicons/issues/161)
+- Add "check-square" icon [\#160](https://github.com/primefaces/primeicons/issues/160)
+- Add "ticket" icon [\#153](https://github.com/primefaces/primeicons/issues/153)
+- Refresh icons on readme [\#150](https://github.com/primefaces/primeicons/issues/150)
+- Add "reply" icon [\#147](https://github.com/primefaces/primeicons/issues/147)
+- Add "desktop" icon [\#144](https://github.com/primefaces/primeicons/issues/144)
+- Add "file-o" icon [\#140](https://github.com/primefaces/primeicons/issues/140)
+- Add "chart-line" icon [\#137](https://github.com/primefaces/primeicons/issues/137)
+- Add "thumbs-up & down" icons [\#116](https://github.com/primefaces/primeicons/issues/116)
+- Add "id-card" icon [\#111](https://github.com/primefaces/primeicons/issues/111)
+- Add "palette" icon [\#83](https://github.com/primefaces/primeicons/issues/83)
+
+**Fixed bugs:**
+
+- Delete file icon for p-fileupload is missing [\#121](https://github.com/primefaces/primeicons/issues/121)
+- Angular CLI font path unresolved when deployed [\#169](https://github.com/primefaces/primeicons/issues/169)
+
+## [1.0.0](https://github.com/primefaces/primeicons/tree/1.0.0) (2018-10-16)
+
+[Full Changelog](https://github.com/primefaces/primeicons/compare/705daae329840f6e935a2dde0ea7d5b2705de5c4...1.0.0)
+
+**New Icons:**
+
+- Add "smartphone" icon [\#127](https://github.com/primefaces/primeicons/issues/127)
+- Add "tablet" icon [\#126](https://github.com/primefaces/primeicons/issues/126)
+- Add "folder" icon [\#102](https://github.com/primefaces/primeicons/issues/102)
+- Add "money" icon [\#88](https://github.com/primefaces/primeicons/issues/88)
+- Add "volume-down" icon [\#74](https://github.com/primefaces/primeicons/issues/74)
+- Add "volume-up" icon [\#73](https://github.com/primefaces/primeicons/issues/73)
+- Add "volume-off" icon [\#72](https://github.com/primefaces/primeicons/issues/72)
+- Add "video" icon [\#71](https://github.com/primefaces/primeicons/issues/71)
+- Add "lock-open" icon [\#66](https://github.com/primefaces/primeicons/issues/66)
+- Add "eject" icon [\#58](https://github.com/primefaces/primeicons/issues/58)
+- Add "briefcase" icon [\#47](https://github.com/primefaces/primeicons/issues/47)
+- Add "floppy-o" icon [\#33](https://github.com/primefaces/primeicons/issues/33)
+- Add "cloud download" icon [\#25](https://github.com/primefaces/primeicons/issues/25)
+- Add "cloud upload" icon [\#24](https://github.com/primefaces/primeicons/issues/24)
+- Add "replay" icon [\#21](https://github.com/primefaces/primeicons/issues/21)
+- Add "window-maximize" icon [\#16](https://github.com/primefaces/primeicons/issues/16)
+- Add "window-minimize" icon [\#15](https://github.com/primefaces/primeicons/issues/15)
+- Add "pencil" icon [\#7](https://github.com/primefaces/primeicons/issues/7)
+- Add a  business icons pack [\#6](https://github.com/primefaces/primeicons/issues/6)
+- Add "trash" icon [\#5](https://github.com/primefaces/primeicons/issues/5)
+- Add "cog" icon [\#3](https://github.com/primefaces/primeicons/issues/3)
+- Add "images" icon [\#133](https://github.com/primefaces/primeicons/issues/133)
+- Add "bell" icon [\#128](https://github.com/primefaces/primeicons/issues/128)
+- Add "dollar" icon [\#119](https://github.com/primefaces/primeicons/issues/119)
+- Add "sitemap" icon [\#115](https://github.com/primefaces/primeicons/issues/115)
+- Add "table" icon [\#114](https://github.com/primefaces/primeicons/issues/114)
+- Add "share" icon [\#112](https://github.com/primefaces/primeicons/issues/112)
+- Add "login" icon [\#110](https://github.com/primefaces/primeicons/issues/110)
+- Add "list" icon  [\#107](https://github.com/primefaces/primeicons/issues/107)
+- Add "eye" icon [\#105](https://github.com/primefaces/primeicons/issues/105)
+- Add "map-marker" icon [\#103](https://github.com/primefaces/primeicons/issues/103)
+- Add "unlock" icon [\#87](https://github.com/primefaces/primeicons/issues/87)
+- Add "question" icon [\#85](https://github.com/primefaces/primeicons/issues/85)
+- Add "key" icon [\#80](https://github.com/primefaces/primeicons/issues/80)
+- Add "logout" icon [\#79](https://github.com/primefaces/primeicons/issues/79)
+- Add "wifi" icon [\#75](https://github.com/primefaces/primeicons/issues/75)
+- Add "tags" icon [\#70](https://github.com/primefaces/primeicons/issues/70)
+- Add "tag" icon [\#69](https://github.com/primefaces/primeicons/issues/69)
+- Add "shopping-cart" icon [\#68](https://github.com/primefaces/primeicons/issues/68)
+- Add "power-off" icon [\#67](https://github.com/primefaces/primeicons/issues/67)
+- Add "lock" icon [\#65](https://github.com/primefaces/primeicons/issues/65)
+- Add "inbox" icon [\#64](https://github.com/primefaces/primeicons/issues/64)
+- Add "image" icon [\#63](https://github.com/primefaces/primeicons/issues/63)
+- Add "folder-open" icon [\#62](https://github.com/primefaces/primeicons/issues/62)
+- Add "folder" icon [\#61](https://github.com/primefaces/primeicons/issues/61)
+- Add "ellipsis-v" icon [\#60](https://github.com/primefaces/primeicons/issues/60)
+- Add "ellipsis-h" icon [\#59](https://github.com/primefaces/primeicons/issues/59)
+- Add "copy "icon [\#57](https://github.com/primefaces/primeicons/issues/57)
+- Add "comments" icon [\#56](https://github.com/primefaces/primeicons/issues/56)
+- Add "comment" icon [\#55](https://github.com/primefaces/primeicons/issues/55)
+- Add "clone" icon [\#53](https://github.com/primefaces/primeicons/issues/53)
+- Add "chart-bar" icon [\#52](https://github.com/primefaces/primeicons/issues/52)
+- Add "calendar-times" icon [\#51](https://github.com/primefaces/primeicons/issues/51)
+- Add "calendar-minus" icon [\#50](https://github.com/primefaces/primeicons/issues/50)
+- Add "calendar-plus" icon [\#49](https://github.com/primefaces/primeicons/issues/49)
+- Add "camera" icon [\#48](https://github.com/primefaces/primeicons/issues/48)
+- Add "document" icon [\#45](https://github.com/primefaces/primeicons/issues/45)
+- Add "filter" icon [\#40](https://github.com/primefaces/primeicons/issues/40)
+- Add "bookmark" icon [\#39](https://github.com/primefaces/primeicons/issues/39)
+- Add "align-right" icon [\#38](https://github.com/primefaces/primeicons/issues/38)
+- Add "align-left" icon [\#37](https://github.com/primefaces/primeicons/issues/37)
+- Add "align-center" icon [\#36](https://github.com/primefaces/primeicons/issues/36)
+- Add "align-justify" icon [\#35](https://github.com/primefaces/primeicons/issues/35)
+- Add "question-circle" icon [\#32](https://github.com/primefaces/primeicons/issues/32)
+- Add "globe" icon [\#28](https://github.com/primefaces/primeicons/issues/28)
+- Add "save" icon [\#26](https://github.com/primefaces/primeicons/issues/26)
+- Add "print" icon [\#22](https://github.com/primefaces/primeicons/issues/22)
+- Add "visibility off" Icon [\#20](https://github.com/primefaces/primeicons/issues/20)
+- Add "envelope" icon [\#19](https://github.com/primefaces/primeicons/issues/19)
+- Add "clock" icon [\#17](https://github.com/primefaces/primeicons/issues/17)
+- Add "user remove" icon [\#13](https://github.com/primefaces/primeicons/issues/13)
+- Add "user add" icon [\#12](https://github.com/primefaces/primeicons/issues/12)
+- Add "paperclip" icon [\#9](https://github.com/primefaces/primeicons/issues/9)
+- Add "users" icon [\#8](https://github.com/primefaces/primeicons/issues/8)
+- Add "external-link" icon [\#4](https://github.com/primefaces/primeicons/issues/4)
+- Add "user" icon [\#2](https://github.com/primefaces/primeicons/issues/2)
+- Add "refresh" icon [\#1](https://github.com/primefaces/primeicons/issues/1)
+
+**Fixed bugs:**
+
+- Shows square instead of icons [\#46](https://github.com/primefaces/primeicons/issues/46)
+- pi-minus and pi-minus-circle do not correspont  [\#23](https://github.com/primefaces/primeicons/issues/23)
+- Demo is Not working on chrome & firefox \(not tested on rest of browsers\) [\#10](https://github.com/primefaces/primeicons/issues/10)
+- Fix readonly values of old icons [\#54](https://github.com/primefaces/primeicons/issues/54)
Index: trip-planner-front/node_modules/primeicons/LICENSE
===================================================================
--- trip-planner-front/node_modules/primeicons/LICENSE	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/LICENSE	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018-2021 PrimeTek
+
+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.
Index: trip-planner-front/node_modules/primeicons/README.md
===================================================================
--- trip-planner-front/node_modules/primeicons/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![npm version](https://badge.fury.io/js/primeicons.svg)](https://badge.fury.io/js/primeicons)
+
+---
+
+![PrimeIcons Logo](https://www.primefaces.org/wp-content/uploads/2018/07/primeicons-logo.svg "PrimeIcons")
+
+Font Icon Library for Prime UI Libraries: [PrimeNG](https://www.primefaces.org/primeng/#/icons/) | [PrimeReact](https://www.primefaces.org/primereact/#/icons/) | [PrimeFaces](https://primefaces.org/showcase/icons.xhtml) | [PrimeVue](https://primefaces.org/primevue/#/icons) 
+
+---
+
+![Icons Preview](https://www.primefaces.org/wp-content/uploads/2020/05/primeicons-40-1.png "PrimeIcons")
Index: trip-planner-front/node_modules/primeicons/fonts/primeicons.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/fonts/primeicons.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/fonts/primeicons.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,270 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+<json>
+<![CDATA[
+{
+	"fontFamily": "primeicons",
+	"majorVersion": 1,
+	"minorVersion": 0,
+	"copyright": "PrimeTek Informatics",
+	"designer": "",
+	"description": "Icon Library for Prime UI Libraries\nFont generated by IcoMoon.",
+	"fontURL": "https://github.com/primefaces/primeicons",
+	"license": "MIT",
+	"licenseURL": "https://opensource.org/licenses/MIT",
+	"version": "Version 1.0",
+	"fontId": "primeicons",
+	"psName": "primeicons",
+	"subFamily": "Regular",
+	"fullName": "primeicons"
+}
+]]>
+</json>
+</metadata>
+<defs>
+<font id="primeicons" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="chevron-left" data-tags="chevron-left" d="M679.213-32.738c-0.086 0-0.19 0-0.292 0-17.22 0-32.796 7.035-44.013 18.388l-418.039 418.039c-11.33 11.344-18.339 27.010-18.339 44.311s7.007 32.967 18.339 44.313v0l418.033 418.033c11.167 10.427 26.211 16.828 42.747 16.828 34.631 0 62.705-28.074 62.705-62.705 0-16.538-6.402-31.58-16.864-42.785l0.034 0.037-373.722-373.722 373.722-373.722c11.33-11.344 18.339-27.010 18.339-44.311s-7.007-32.967-18.339-44.313v0c-11.222-11.36-26.798-18.394-44.019-18.394-0.102 0-0.205 0-0.307 0h0.016z" />
+<glyph unicode="&#xe901;" glyph-name="chevron-right" data-tags="chevron-right" d="M344.779-32.761c-0.086 0-0.19 0-0.292 0-17.221 0-32.798 7.035-44.016 18.389l-0.006 0.006c-11.331 11.345-18.34 27.011-18.34 44.313s7.008 32.969 18.34 44.315v0l373.739 373.739-373.739 373.739c-10.427 11.167-16.829 26.212-16.829 42.749 0 34.632 28.075 62.708 62.708 62.708 16.539 0 31.582-6.402 42.787-16.865l-0.037 0.034 418.053-418.053c11.331-11.345 18.34-27.011 18.34-44.313s-7.008-32.969-18.34-44.315v0l-418.053-418.053c-11.223-11.36-26.8-18.395-44.021-18.395-0.102 0-0.205 0-0.307 0h0.016z" />
+<glyph unicode="&#xe902;" glyph-name="chevron-down" data-tags="chevron-down" d="M512 185.734c-0.084 0-0.183 0-0.282 0-16.621 0-31.655 6.79-42.481 17.748l-403.49 403.49c-6.608 9.557-10.557 21.395-10.557 34.153 0 33.426 27.098 60.522 60.522 60.522 13.37 0 25.728-4.335 35.742-11.677l-0.17 0.119 360.715-358.295 360.715 358.295c9.294 6.106 20.686 9.741 32.927 9.741 33.426 0 60.522-27.098 60.522-60.522 0-11.002-2.935-21.318-8.065-30.207l0.155 0.294-403.485-403.485c-10.561-11.928-25.717-19.583-42.668-20.171l-0.102-0.002z" />
+<glyph unicode="&#xe903;" glyph-name="chevron-up" data-tags="chevron-up" d="M912.529 187.655c-0.083 0-0.182 0-0.279 0-16.5 0-31.424 6.74-42.17 17.619l-358.079 358.079-358.074-355.671c-9.226-6.061-20.534-9.669-32.685-9.669-33.181 0-60.080 26.899-60.080 60.080 0 10.921 2.914 21.161 8.005 29.985l-0.154-0.291 400.529 400.529c10.869 10.856 25.879 17.571 42.456 17.571s31.587-6.714 42.457-17.571v0l400.529-400.529c10.856-10.869 17.571-25.879 17.571-42.456s-6.714-31.587-17.571-42.457v0c-10.467-9.481-24.421-15.283-39.728-15.283-0.96 0-1.913 0.022-2.862 0.068l0.134-0.005z" />
+<glyph unicode="&#xe904;" glyph-name="caret-left" data-tags="caret-left" d="M777.445 0.063c-0.065 0-0.144 0-0.22 0-11.19 0-21.502 3.743-29.759 10.044l0.119-0.088-530.888 398.166c-12.143 9.177-19.908 23.59-19.908 39.817s7.765 30.639 19.784 39.726l0.124 0.091 530.888 398.166c8.229 6.251 18.645 10.014 29.941 10.014 8.203 0 15.94-1.984 22.762-5.498l-0.278 0.131c16.203-8.535 27.088-25.214 27.208-44.445v-796.35c-0.121-19.249-11.006-35.927-26.932-44.329l-0.275-0.133c-6.602-3.186-14.334-5.125-22.5-5.309l-0.063-0.002zM329.508 448l398.166-298.625v597.249z" />
+<glyph unicode="&#xe905;" glyph-name="caret-right" data-tags="caret-right" d="M246.514-0.008c-8.001 0.105-15.52 2.052-22.189 5.441l0.287-0.133c-16.574 8.253-27.783 25.040-27.876 44.458v796.469c0.092 19.426 11.302 36.213 27.587 44.339l0.287 0.132c6.449 3.33 14.077 5.284 22.158 5.284 11.175 0 21.478-3.731 29.729-10.017l-0.119 0.089 530.972-398.228c12.145-9.177 19.912-23.594 19.912-39.823s-7.766-30.645-19.789-39.733l-0.124-0.091-530.972-398.228c-8.14-6.214-18.456-9.957-29.645-9.957-0.077 0-0.156 0-0.232 0h0.012zM296.292 746.672v-597.343l398.228 298.672z" />
+<glyph unicode="&#xe906;" glyph-name="caret-down" data-tags="caret-down" d="M512 151.758c-0.092 0-0.203-0.002-0.311-0.002-15.157 0-28.607 7.307-37.020 18.589l-0.088 0.122-374.2 498.935c-5.874 7.735-9.411 17.522-9.411 28.14 0 7.708 1.865 14.982 5.168 21.391l-0.124-0.263c8.022 15.226 23.696 25.457 41.77 25.57h748.419c18.091-0.116 33.765-10.344 41.662-25.311l0.125-0.259c3.18-6.151 5.044-13.42 5.044-21.131 0-10.614-3.536-20.406-9.494-28.255l0.085 0.116-374.2-498.935c-8.503-11.404-21.951-18.712-37.108-18.712-0.109 0-0.218 0-0.329 0.002h0.017zM231.349 650.693l280.651-374.2 280.651 374.2z" />
+<glyph unicode="&#xe907;" glyph-name="caret-up" data-tags="caret-up" d="M886.087 151.847h-748.175c-18.084 0.115-33.754 10.339-41.649 25.303l-0.125 0.259c-3.18 6.148-5.042 13.416-5.042 21.125 0 10.612 3.535 20.4 9.492 28.247l-0.085-0.116 374.087 498.782c8.871 10.966 22.328 17.919 37.409 17.919s28.537-6.953 37.338-17.828l0.069-0.090 374.087-498.782c5.874-7.732 9.407-17.518 9.407-28.131 0-7.706-1.864-14.977-5.165-21.386l0.123 0.262c-8.019-15.222-23.689-25.45-41.757-25.562h-0.016zM231.436 245.369h561.131l-280.564 374.087z" />
+<glyph unicode="&#xe908;" glyph-name="search" data-tags="search" d="M440.071 79.585c-243.195 0-440.344 197.149-440.344 440.344s197.149 440.344 440.344 440.344c243.195 0 440.344-197.149 440.344-440.344v0c0-243.195-197.149-440.344-440.344-440.344v0zM440.071 871.969c-193.781 0-350.872-157.090-350.872-350.872s157.090-350.872 350.872-350.872c193.781 0 350.872 157.090 350.872 350.872v0c0 193.781-157.090 350.872-350.872 350.872v0zM979.828-63.687c-0.060 0-0.133 0-0.204 0-12.045 0-22.94 4.92-30.785 12.862l-241.52 241.52c-7.293 7.811-11.771 18.333-11.771 29.899 0 24.222 19.636 43.859 43.859 43.859 11.568 0 22.088-4.478 29.926-11.795l-0.026 0.023 241.516-241.516c7.925-7.934 12.827-18.892 12.827-30.993s-4.901-23.059-12.827-30.995v0c-7.849-7.945-18.744-12.866-30.789-12.866-0.071 0-0.144 0-0.215 0h0.011z" />
+<glyph unicode="&#xe909;" glyph-name="check" data-tags="check" horiz-adv-x="1088" d="M367.973 82.291c-12.364 0.429-23.354 5.979-30.973 14.583l-0.039 0.045-292.569 292.569c-12.118 7.943-20.011 21.462-20.011 36.822 0 24.237 19.649 43.886 43.886 43.886 16.258 0 30.454-8.843 38.038-21.983l0.112-0.213 261.556-259.802 612.637 610.884c6.739 4.429 14.999 7.063 23.874 7.063 24.237 0 43.886-19.649 43.886-43.886 0-7.977-2.129-15.457-5.848-21.903l0.112 0.213-643.651-643.651c-7.658-8.649-18.646-14.2-30.94-14.626l-0.073-0.001z" />
+<glyph unicode="&#xe90a;" glyph-name="check-circle" data-tags="check-circle" d="M426.842 263.49c-11.361 0.894-21.337 6.182-28.346 14.147l-0.040 0.047-170.317 170.317c-2.623 5.368-4.157 11.68-4.157 18.35 0 23.516 19.064 42.579 42.579 42.579 6.67 0 12.983-1.534 18.603-4.269l-0.253 0.11 140.228-140.228 484.268 480.861c5.368 2.623 11.68 4.157 18.35 4.157 23.516 0 42.579-19.064 42.579-42.579 0-6.67-1.534-12.983-4.269-18.603l0.11 0.253-510.95-510.95c-7.048-8.010-17.025-13.299-28.241-14.184l-0.146-0.009zM512-62.95c-191.476 0.317-358.217 105.908-445.47 261.972l-1.328 2.587c-31.938 55.832-53.595 121.525-60.581 191.54l-0.166 2.053c-1.75 15.87-2.746 34.274-2.746 52.91 0 191.528 105.381 358.444 261.324 445.927l2.575 1.327c55.832 31.938 121.525 53.595 191.54 60.581l2.053 0.166c16.139 1.838 34.846 2.885 53.796 2.885 52.724 0 103.554-8.111 151.308-23.156l-3.563 0.969c19.66-4.032 34.236-21.19 34.236-41.754 0-23.516-19.064-42.579-42.579-42.579-5.793 0-11.317 1.158-16.352 3.253l0.282-0.104c-37.278 11.625-80.141 18.322-124.567 18.322-16.116 0-32.026-0.881-47.685-2.599l1.933 0.172c-60.018-6.3-114.675-24.271-163.354-51.622l2.121 1.095c-49.065-27.393-90.495-62.305-124.293-103.695l-0.607-0.765c-59.499-72.093-95.584-165.431-95.584-267.195 0-16.071 0.899-31.933 2.652-47.536l-0.174 1.916c6.3-60.018 24.271-114.675 51.622-163.354l-1.095 2.121c27.393-49.065 62.305-90.495 103.695-124.293l0.765-0.607c72.093-59.499 165.431-95.584 267.195-95.584 16.071 0 31.933 0.899 47.536 2.652l-1.916-0.174c60.018 6.3 114.675 24.271 163.354 51.622l-2.121-1.095c49.065 27.393 90.495 62.305 124.293 103.695l0.607 0.765c59.499 72.093 95.584 165.431 95.584 267.195 0 16.071-0.899 31.933-2.652 47.536l0.174-1.916c-0.129 1.276-0.204 2.758-0.204 4.258 0 24.725 20.044 44.769 44.769 44.769 23.226 0 42.321-17.686 44.551-40.326l0.015-0.185c1.73-15.781 2.716-34.082 2.716-52.613 0-191.743-105.619-358.82-261.851-446.222l-2.584-1.328c-56.511-33.262-123.144-55.912-194.296-63.403l-2.137-0.182c-17.6 0-35.767 0-52.798 0z" />
+<glyph unicode="&#xe90b;" glyph-name="times" data-tags="times" d="M586.932 448l312.455 312.455c10.394 9.708 16.875 23.488 16.875 38.79 0 29.283-23.737 53.020-53.020 53.020-15.299 0-29.084-6.481-38.759-16.841l-0.027-0.029-312.455-312.455-312.455 312.455c-9.444 8.816-22.161 14.228-36.145 14.228-29.283 0-53.020-23.737-53.020-53.020 0-13.985 5.412-26.701 14.261-36.174l-0.027 0.029 312.455-312.455-312.455-312.455c-9.582-9.589-15.504-22.839-15.504-37.468s5.926-27.874 15.504-37.469v0c9.589-9.582 22.839-15.504 37.468-15.504s27.874 5.926 37.469 15.504v0l312.455 312.455 312.455-312.455c9.589-9.582 22.839-15.504 37.468-15.504s27.874 5.926 37.469 15.504v0c9.582 9.589 15.504 22.839 15.504 37.468s-5.926 27.874-15.504 37.469v0z" />
+<glyph unicode="&#xe90c;" glyph-name="times-circle" data-tags="times-circle" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM341.333 234.667c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-0.004 0.004c-7.709 7.719-12.479 18.379-12.479 30.151s4.768 22.432 12.479 30.152v0l341.333 341.333c7.599 7.095 17.835 11.451 29.087 11.451 23.564 0 42.667-19.103 42.667-42.667 0-11.253-4.356-21.488-11.475-29.112l0.023 0.025-341.333-341.333c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011zM682.667 234.667c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-341.337 341.337c-7.095 7.599-11.451 17.835-11.451 29.087 0 23.564 19.103 42.667 42.667 42.667 11.253 0 21.488-4.356 29.112-11.475l-0.025 0.023 341.333-341.333c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011z" />
+<glyph unicode="&#xe90d;" glyph-name="plus" data-tags="plus" d="M559.485 495.485v395.695c0 26.223-21.257 47.485-47.485 47.485s-47.485-21.257-47.485-47.485v0-395.695h-395.695c-26.223 0-47.485-21.257-47.485-47.485s21.257-47.485 47.485-47.485v0h395.695v-395.695c0.352-26.082 21.403-47.133 47.447-47.485h0.033c26.223 0 47.485 21.257 47.485 47.485v0 395.695h395.695c26.223 0 47.485 21.257 47.485 47.485v0c-0.352 26.082-21.403 47.133-47.447 47.485h-0.033z" />
+<glyph unicode="&#xe90e;" glyph-name="plus-circle" data-tags="plus-circle" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 177.777c-23.436 0.316-42.351 19.231-42.667 42.636v455.141c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-455.111c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031zM739.556 405.333h-455.111c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667v0h455.111c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z" />
+<glyph unicode="&#xe90f;" glyph-name="minus" data-tags="minus" d="M967.085 391.114h-910.171c-31.417 0-56.886 25.469-56.886 56.886s25.469 56.886 56.886 56.886v0h910.171c31.417 0 56.886-25.469 56.886-56.886s-25.469-56.886-56.886-56.886v0z" />
+<glyph unicode="&#xe910;" glyph-name="minus-circle" data-tags="minus-circle" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM739.556 405.333h-455.111c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667v0h455.111c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z" />
+<glyph unicode="&#xe911;" glyph-name="circle-on" data-tags="circle-on" d="M1024 448c0-282.769-229.231-512-512-512s-512 229.231-512 512c0 282.769 229.231 512 512 512s512-229.231 512-512z" />
+<glyph unicode="&#xe912;" glyph-name="circle-off" data-tags="circle-off" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0z" />
+<glyph unicode="&#xe913;" glyph-name="sort-down" data-tags="sort-down" d="M512 198.703c-0.059 0-0.133 0-0.206 0-12.080 0-23.010 4.935-30.879 12.901l-410.613 410.613c-7.95 7.958-12.867 18.951-12.867 31.089 0 24.283 19.676 43.971 43.952 43.993h821.216c23.565-0.924 42.321-20.252 42.321-43.961 0-11.301-4.262-21.608-11.268-29.401l0.035 0.040-410.607-410.607c-7.678-8.671-18.694-14.235-31.015-14.662l-0.074-0.003zM207.563 609.309l304.437-304.437 304.437 304.437z" />
+<glyph unicode="&#xe914;" glyph-name="sort-up" data-tags="sort-up" d="M921.888 199.141h-819.773c-0.088 0-0.19-0.002-0.294-0.002-18.019 0-33.47 11-40.004 26.651l-0.105 0.287c-1.856 4.68-2.932 10.103-2.932 15.777 0 11.845 4.689 22.595 12.313 30.495l409.875 409.875c7.945 7.935 18.917 12.844 31.034 12.844s23.089-4.908 31.035-12.844v0l409.888-409.888c7.91-7.94 12.801-18.896 12.801-30.993 0-6.145-1.262-11.997-3.542-17.308l0.108 0.285c-7.032-14.993-22.001-25.192-39.352-25.192-0.369 0-0.739 0.004-1.106 0.013l0.055-0.002zM208.099 286.973h607.804l-303.901 303.901z" />
+<glyph unicode="&#xe915;" glyph-name="sort" data-tags="sort" d="M841.149 516.572h-658.298c-0.083 0-0.179-0.001-0.275-0.001-16.883 0-31.357 10.305-37.478 24.968l-0.099 0.269c-2.034 4.708-3.217 10.189-3.217 15.949 0 11.333 4.583 21.597 11.994 29.037l329.147 329.147c7.443 7.433 17.723 12.033 29.075 12.033s21.632-4.598 29.076-12.033v0l329.149-329.149c7.411-7.439 11.993-17.704 11.993-29.036 0-5.757-1.183-11.24-3.319-16.216l0.101 0.267c-6.22-14.932-20.695-25.236-37.577-25.236-0.097 0-0.193 0-0.29 0.001h0.015zM282.145 598.859h459.712l-229.855 229.855zM512-32.009c-0.056 0-0.125 0-0.191 0-11.299 0-21.519 4.615-28.879 12.065l-329.153 329.153c-7.411 7.439-11.993 17.704-11.993 29.036 0 5.757 1.183 11.24 3.319 16.216l-0.101-0.267c6.22 14.932 20.695 25.236 37.577 25.236 0.097 0 0.193 0 0.29-0.001h658.283c0.083 0 0.179 0.001 0.275 0.001 16.883 0 31.357-10.305 37.478-24.968l0.099-0.269c2.034-4.708 3.217-10.189 3.217-15.949 0-11.333-4.583-21.597-11.994-29.037l-329.147-329.147c-7.363-7.453-17.584-12.068-28.883-12.068-0.067 0-0.135 0-0.202 0h0.010zM282.145 297.141l229.855-229.855 229.855 229.855z" />
+<glyph unicode="&#xe916;" glyph-name="step-backward" data-tags="step-backward" d="M776.253-63.989c-13.652 0.164-25.983 5.679-35.022 14.542l-462.434 462.434c-8.953 8.963-14.491 21.342-14.491 35.013s5.537 26.049 14.491 35.014v0l462.442 462.442c8.959 8.925 21.319 14.443 34.966 14.443 6.933 0 13.536-1.424 19.529-3.996l-0.322 0.122c17.981-7.491 30.389-24.922 30.389-45.252 0-0.116 0-0.233-0.002-0.348v0.019-924.882c0-0.099 0.002-0.215 0.002-0.331 0-20.33-12.41-37.761-30.067-45.132l-0.324-0.119c-5.648-2.471-12.229-3.927-19.143-3.964h-0.014zM383.839 448l342.867-342.867v685.734zM247.747-63.989c-27.215 0.367-49.181 22.332-49.548 49.511v924.917c0 27.364 22.183 49.548 49.548 49.548s49.548-22.183 49.548-49.548v0-924.882c-0.367-27.215-22.332-49.181-49.511-49.548h-0.036z" />
+<glyph unicode="&#xe917;" glyph-name="step-forward" data-tags="step-forward" d="M247.747-63.989c-6.929 0.037-13.509 1.493-19.478 4.087l0.321-0.124c-17.981 7.491-30.389 24.922-30.389 45.252 0 0.116 0 0.231 0.002 0.348v-0.019 924.882c0 0.099-0.002 0.215-0.002 0.331 0 20.33 12.41 37.761 30.067 45.132l0.324 0.119c5.67 2.449 12.271 3.874 19.206 3.874 13.649 0 26.007-5.518 34.967-14.444l462.441-462.441c8.953-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0l-462.442-462.442c-9.030-8.855-21.362-14.37-34.982-14.533h-0.031zM297.295 790.867v-685.734l342.867 342.867zM776.253-63.989c-27.215 0.367-49.181 22.332-49.548 49.511v924.917c0 27.364 22.183 49.548 49.548 49.548s49.548-22.183 49.548-49.548v0-924.882c-0.367-27.215-22.332-49.181-49.513-49.548h-0.036z" />
+<glyph unicode="&#xe918;" glyph-name="th-large" data-tags="th-large" d="M325.818 494.545h-186.182c-77.119 0-139.636 62.518-139.636 139.636v0 186.182c0 77.119 62.518 139.636 139.636 139.636v0h186.182c77.119 0 139.636-62.518 139.636-139.636v0-186.182c0-77.119-62.518-139.636-139.636-139.636v0zM139.636 866.909c-25.567-0.345-46.201-20.979-46.545-46.512v-186.215c0.345-25.567 20.979-46.201 46.512-46.545h186.215c25.567 0.345 46.201 20.979 46.545 46.512v186.215c-0.345 25.567-20.979 46.201-46.512 46.545h-0.033zM325.818-64h-186.182c-77.119 0-139.636 62.518-139.636 139.636v0 186.182c0 77.119 62.518 139.636 139.636 139.636v0h186.182c77.119 0 139.636-62.518 139.636-139.636v0-186.182c0-77.119-62.518-139.636-139.636-139.636v0zM139.636 308.364c-25.567-0.345-46.201-20.979-46.545-46.512v-186.215c0.345-25.567 20.979-46.201 46.512-46.545h186.215c25.567 0.345 46.201 20.979 46.545 46.512v186.215c-0.345 25.567-20.979 46.201-46.512 46.545h-0.033zM884.364 494.545h-186.182c-77.119 0-139.636 62.518-139.636 139.636v0 186.182c0 77.119 62.518 139.636 139.636 139.636v0h186.182c77.119 0 139.636-62.518 139.636-139.636v0-186.182c0-77.119-62.518-139.636-139.636-139.636v0zM698.182 866.909c-25.567-0.345-46.201-20.979-46.545-46.512v-186.215c0.345-25.567 20.979-46.201 46.512-46.545h186.215c25.567 0.345 46.201 20.979 46.545 46.512v186.215c-0.345 25.567-20.979 46.201-46.512 46.545h-0.033zM884.364-64h-186.182c-77.119 0-139.636 62.518-139.636 139.636v0 186.182c0 77.119 62.518 139.636 139.636 139.636v0h186.182c77.119 0 139.636-62.518 139.636-139.636v0-186.182c0-77.119-62.518-139.636-139.636-139.636v0zM698.182 308.364c-25.567-0.345-46.201-20.979-46.545-46.512v-186.215c0.345-25.567 20.979-46.201 46.512-46.545h186.215c25.567 0.345 46.201 20.979 46.545 46.512v186.215c-0.345 25.567-20.979 46.201-46.512 46.545h-0.033z" />
+<glyph unicode="&#xe919;" glyph-name="arrow-down" data-tags="arrow-down" d="M512-63.983c-0.068 0-0.15 0-0.231 0-13.607 0-25.914 5.559-34.777 14.53l-396.378 396.378c-8.239 8.824-13.297 20.711-13.297 33.777 0 27.364 22.183 49.547 49.547 49.547 13.068 0 24.953-5.058 33.806-13.325l-0.029 0.026 361.361-361.361 361.361 361.361c8.824 8.239 20.711 13.297 33.777 13.297 27.364 0 49.547-22.183 49.547-49.547 0-13.068-5.058-24.953-13.325-33.806l0.026 0.029-396.374-396.374c-8.867-8.976-21.175-14.534-34.782-14.534-0.081 0-0.163 0-0.243 0h0.012zM512-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036z" />
+<glyph unicode="&#xe91a;" glyph-name="arrow-left" data-tags="arrow-left" d="M445.937 2.079c-0.068 0-0.15 0-0.231 0-13.607 0-25.914 5.559-34.777 14.53l-396.378 396.378c-8.952 8.963-14.491 21.342-14.491 35.013s5.537 26.049 14.491 35.014v0l396.374 396.374c8.824 8.239 20.711 13.297 33.777 13.297 27.364 0 49.547-22.183 49.547-49.547 0-13.068-5.058-24.953-13.325-33.806l0.026 0.029-361.361-361.361 361.361-361.361c8.952-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0c-8.867-8.976-21.175-14.534-34.782-14.534-0.081 0-0.163 0-0.243 0h0.012zM974.437 398.453h-924.872c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h924.872c27.364 0 49.547-22.183 49.547-49.547s-22.183-49.547-49.547-49.547v0z" />
+<glyph unicode="&#xe91b;" glyph-name="arrow-right" data-tags="arrow-right" d="M578.063 2.079c-0.068 0-0.15 0-0.231 0-13.607 0-25.914 5.559-34.777 14.53l-0.005 0.005c-8.952 8.963-14.491 21.342-14.491 35.013s5.537 26.049 14.491 35.014v0l361.361 361.361-361.361 361.361c-8.239 8.824-13.297 20.711-13.297 33.777 0 27.364 22.183 49.547 49.547 49.547 13.068 0 24.953-5.058 33.806-13.325l-0.029 0.026 396.374-396.374c8.952-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0l-396.374-396.374c-8.867-8.976-21.175-14.534-34.782-14.534-0.081 0-0.163 0-0.243 0h0.012zM974.437 398.453h-924.872c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h924.872c27.364 0 49.547-22.183 49.547-49.547s-22.183-49.547-49.547-49.547v0z" />
+<glyph unicode="&#xe91c;" glyph-name="arrow-up" data-tags="arrow-up" d="M908.374 464.516c-0.068 0-0.15 0-0.231 0-13.607 0-25.914 5.559-34.777 14.53l-361.366 361.366-361.361-361.361c-8.824-8.239-20.711-13.297-33.777-13.297-27.364 0-49.547 22.183-49.547 49.547 0 13.068 5.058 24.953 13.325 33.806l-0.026-0.029 396.374 396.374c8.963 8.952 21.342 14.491 35.013 14.491s26.049-5.537 35.014-14.491v0l396.374-396.374c8.952-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0c-8.867-8.976-21.175-14.534-34.782-14.534-0.081 0-0.163 0-0.243 0h0.012zM512-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036z" />
+<glyph unicode="&#xe91d;" glyph-name="bars" data-tags="bars" d="M974.438 398.453h-924.874c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h924.874c27.364 0 49.547-22.183 49.547-49.547s-22.183-49.547-49.547-49.547v0zM974.438 695.735h-924.874c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h924.874c27.364 0 49.547-22.183 49.547-49.547s-22.183-49.547-49.547-49.547v0zM974.438 101.171h-924.874c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h924.874c27.364 0 49.547-22.183 49.547-49.547s-22.183-49.547-49.547-49.547v0z" />
+<glyph unicode="&#xe91e;" glyph-name="arrow-circle-down" data-tags="arrow-circle-down" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 177.777c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-227.56 227.56c-7.095 7.599-11.451 17.835-11.451 29.087 0 23.564 19.103 42.667 42.667 42.667 11.253 0 21.488-4.356 29.112-11.475l-0.025 0.023 197.404-197.404 197.404 197.404c7.599 7.095 17.835 11.451 29.087 11.451 23.564 0 42.667-19.103 42.667-42.667 0-11.253-4.356-21.488-11.475-29.112l0.023 0.025-227.556-227.556c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011zM512 177.777c-23.436 0.316-42.351 19.231-42.667 42.636v455.141c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-455.111c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031z" />
+<glyph unicode="&#xe91f;" glyph-name="arrow-circle-left" data-tags="arrow-circle-left" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 177.777c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-227.56 227.56c-7.709 7.719-12.479 18.379-12.479 30.151s4.768 22.432 12.479 30.152v0l227.556 227.556c7.599 7.095 17.835 11.451 29.087 11.451 23.564 0 42.667-19.103 42.667-42.667 0-11.253-4.356-21.488-11.475-29.112l0.023 0.025-197.404-197.404 197.404-197.404c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011zM739.556 405.333h-455.111c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667v0h455.111c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z" />
+<glyph unicode="&#xe920;" glyph-name="arrow-circle-right" data-tags="arrow-circle-right" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 177.777c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-0.004 0.004c-7.709 7.719-12.479 18.379-12.479 30.151s4.768 22.432 12.479 30.152v0l197.404 197.404-197.404 197.404c-7.095 7.599-11.451 17.835-11.451 29.087 0 23.564 19.103 42.667 42.667 42.667 11.253 0 21.488-4.356 29.112-11.475l-0.025 0.023 227.556-227.556c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0l-227.556-227.556c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011zM739.556 405.333h-455.111c-23.564 0-42.667 19.103-42.667 42.667s19.103 42.667 42.667 42.667v0h455.111c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z" />
+<glyph unicode="&#xe921;" glyph-name="arrow-circle-up" data-tags="arrow-circle-up" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM739.556 405.333c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-197.408 197.408-197.404-197.404c-7.599-7.095-17.835-11.451-29.087-11.451-23.564 0-42.667 19.103-42.667 42.667 0 11.253 4.356 21.488 11.475 29.112l-0.023-0.025 227.556 227.556c7.719 7.709 18.379 12.479 30.151 12.479s22.432-4.768 30.152-12.479v0l227.556-227.556c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011zM512 177.777c-23.436 0.316-42.351 19.231-42.667 42.636v455.141c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-455.111c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031z" />
+<glyph unicode="&#xe922;" glyph-name="exclamation-triangle" data-tags="exclamation-triangle" d="M980.232 52.929h-936.466c-16.087 0.051-30.158 8.633-37.932 21.457l-0.111 0.198c-3.59 6.323-5.705 13.888-5.705 21.948s2.115 15.626 5.823 22.172l-0.117-0.224 468.232 819.407c8.296 12.379 22.231 20.418 38.043 20.418s29.747-8.039 37.941-20.253l0.104-0.165 468.232-819.407c3.59-6.323 5.705-13.888 5.705-21.948s-2.115-15.626-5.823-22.172l0.117 0.224c-7.885-13.022-21.957-21.605-38.037-21.656h-0.007zM119.27 140.722h785.461l-392.73 687.132zM512 374.839c-24.112 0.325-43.572 19.785-43.897 43.865v204.883c0 24.243 19.653 43.897 43.897 43.897s43.897-19.653 43.897-43.897v0-204.851c-0.325-24.112-19.785-43.572-43.865-43.897h-0.032zM512 199.252c-24.112 0.325-43.572 19.785-43.897 43.865v29.296c0 24.243 19.653 43.897 43.897 43.897s43.897-19.653 43.897-43.897v0-29.264c-0.325-24.112-19.785-43.572-43.865-43.897h-0.032z" />
+<glyph unicode="&#xe923;" glyph-name="info" data-tags="info" d="M512-63.999c-36.682 0.495-66.288 30.1-66.783 66.735v623.353c0 36.883 29.9 66.783 66.783 66.783s66.783-29.9 66.783-66.783v0-623.305c-0.495-36.682-30.1-66.288-66.735-66.783h-0.048zM512 781.913c-36.682 0.495-66.288 30.1-66.783 66.735v44.569c0 36.883 29.9 66.783 66.783 66.783s66.783-29.9 66.783-66.783v0-44.521c-0.495-36.682-30.1-66.288-66.735-66.783h-0.048z" />
+<glyph unicode="&#xe924;" glyph-name="info-circle" data-tags="info-circle" d="M512 177.777c-23.436 0.316-42.351 19.231-42.667 42.636v284.475c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-284.444c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031zM512 604.444c-23.436 0.316-42.351 19.231-42.667 42.636v28.475c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-28.444c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031zM512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0z" />
+<glyph unicode="&#xe925;" glyph-name="home" data-tags="home" d="M980.714 462.648c-0.058 0-0.126 0-0.195 0-9.879 0-18.984 3.304-26.275 8.867l0.106-0.077-442.349 331.615-442.349-331.615c-7.252-5.487-16.423-8.788-26.365-8.788-24.268 0-43.942 19.674-43.942 43.942 0 14.326 6.856 27.052 17.467 35.074l0.11 0.080 468.714 351.536c7.252 5.487 16.423 8.788 26.365 8.788s19.113-3.301 26.475-8.868l-0.11 0.080 468.714-351.536c9.942-8.121 16.239-20.379 16.239-34.109 0-9.129-2.783-17.608-7.548-24.634l0.099 0.154c-7.474-11.934-20.322-19.902-35.068-20.503l-0.085-0.003zM863.536-6.067h-703.071c-24.136 0.325-43.617 19.805-43.942 43.91v556.629c0 24.268 19.674 43.942 43.942 43.942s43.942-19.674 43.942-43.942v0-512.656h615.187v512.656c0 24.268 19.674 43.942 43.942 43.942s43.942-19.674 43.942-43.942v0-556.598c-0.325-24.136-19.805-43.617-43.91-43.942h-0.032zM629.178-6.067c-24.136 0.325-43.617 19.805-43.942 43.91v366.215h-146.474v-366.183c0-24.268-19.674-43.942-43.942-43.942s-43.942 19.674-43.942 43.942v0 410.125c0.325 24.136 19.805 43.617 43.91 43.942h234.389c24.136-0.325 43.617-19.805 43.942-43.91v-410.157c-0.325-24.136-19.805-43.617-43.91-43.942h-0.032z" />
+<glyph unicode="&#xe926;" glyph-name="spinner" data-tags="spinner" d="M512-63.985c-282.573 0.249-511.548 229.377-511.548 511.985 0 282.761 229.224 511.985 511.985 511.985 136.039 0 259.684-53.057 351.374-139.607l-0.248 0.232c7.709-7.718 12.478-18.378 12.478-30.15s-4.768-22.431-12.478-30.151v0c-7.654-7.849-18.334-12.718-30.15-12.718s-22.495 4.869-30.142 12.709l-0.008 0.009c-76.159 71.371-178.876 115.207-291.832 115.207-235.949 0-427.224-191.274-427.224-427.224s191.274-427.224 427.224-427.224c235.845 0 427.056 191.106 427.224 426.913v0.016c0 23.563 19.102 42.665 42.665 42.665s42.665-19.102 42.665-42.665v0c0-282.761-229.224-511.985-511.985-511.985v0z" />
+<glyph unicode="&#xe927;" glyph-name="calendar" data-tags="calendar" d="M788.745 876.955h-69.186v69.186c0 22.926-18.586 41.512-41.512 41.512s-41.512-18.586-41.512-41.512v0-69.186h-249.071v69.186c0 22.926-18.586 41.512-41.512 41.512s-41.512-18.586-41.512-41.512v0-69.186h-69.186c-84.063 0-152.209-68.147-152.209-152.209v0-608.839c0-84.063 68.147-152.209 152.209-152.209v0h553.491c84.063 0 152.209 68.147 152.209 152.209v0 608.839c0 84.063-68.147 152.209-152.209 152.209v0zM235.255 793.932h69.186v-69.186c0-22.926 18.586-41.512 41.512-41.512s41.512 18.586 41.512 41.512v0 69.186h249.071v-69.186c0-22.926 18.586-41.512 41.512-41.512s41.512 18.586 41.512 41.512v0 69.186h69.186c38.21 0 69.186-30.976 69.186-69.186v0-152.209h-691.862v152.209c0 38.21 30.976 69.186 69.186 69.186v0zM788.745 46.72h-553.491c-38.21 0-69.186 30.976-69.186 69.186v0 373.606h691.862v-373.606c0-38.21-30.976-69.186-69.186-69.186v0z" />
+<glyph unicode="&#xe928;" glyph-name="chevron-circle-left" data-tags="chevron-circle-left" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM625.777 177.777c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-227.56 227.56c-7.709 7.719-12.479 18.379-12.479 30.151s4.768 22.432 12.479 30.152v0l227.556 227.556c7.599 7.095 17.835 11.451 29.087 11.451 23.564 0 42.667-19.103 42.667-42.667 0-11.253-4.356-21.488-11.475-29.112l0.023 0.025-197.404-197.404 197.404-197.404c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011z" />
+<glyph unicode="&#xe929;" glyph-name="chevron-circle-down" data-tags="chevron-circle-down" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 291.556c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-227.56 227.56c-7.095 7.599-11.451 17.835-11.451 29.087 0 23.564 19.103 42.667 42.667 42.667 11.253 0 21.488-4.356 29.112-11.475l-0.025 0.023 197.404-197.404 197.404 197.404c7.599 7.095 17.835 11.451 29.087 11.451 23.564 0 42.667-19.103 42.667-42.667 0-11.253-4.356-21.488-11.475-29.112l0.023 0.025-227.556-227.556c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011z" />
+<glyph unicode="&#xe92a;" glyph-name="chevron-circle-right" data-tags="chevron-circle-right" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM398.223 177.777c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-0.004 0.004c-7.709 7.719-12.479 18.379-12.479 30.151s4.768 22.432 12.479 30.152v0l197.404 197.404-197.404 197.404c-7.095 7.599-11.451 17.835-11.451 29.087 0 23.564 19.103 42.667 42.667 42.667 11.253 0 21.488-4.356 29.112-11.475l-0.025 0.023 227.556-227.556c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0l-227.556-227.556c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011z" />
+<glyph unicode="&#xe92b;" glyph-name="chevron-circle-up" data-tags="chevron-circle-up" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM739.556 291.556c-0.059 0-0.129 0-0.199 0-11.717 0-22.316 4.787-29.948 12.512l-197.408 197.408-197.404-197.404c-7.599-7.095-17.835-11.451-29.087-11.451-23.564 0-42.667 19.103-42.667 42.667 0 11.253 4.356 21.488 11.475 29.112l-0.023-0.025 227.556 227.556c7.719 7.709 18.379 12.479 30.151 12.479s22.432-4.768 30.152-12.479v0l227.556-227.556c7.709-7.719 12.479-18.379 12.479-30.151s-4.768-22.432-12.479-30.152v0c-7.636-7.729-18.235-12.516-29.952-12.516-0.069 0-0.14 0-0.209 0h0.011z" />
+<glyph unicode="&#xe92c;" glyph-name="angle-double-down" data-tags="angle-double-down" d="M512 57.451c-0.077 0-0.172 0-0.257 0-15.319 0-29.178 6.257-39.16 16.361l-0.005 0.005-258.132 260.364c-5.628 8.568-8.981 19.073-8.981 30.354 0 30.81 24.977 55.792 55.792 55.792 10.145 0 19.649-2.705 27.846-7.433l-0.269 0.143 223.173-223.173 223.173 223.173c7.925 4.589 17.434 7.289 27.577 7.289 30.81 0 55.792-24.977 55.792-55.792 0-11.285-3.353-21.785-9.108-30.566l0.128 0.209-258.132-258.132c-9.737-10.997-23.705-18.053-39.331-18.593l-0.092-0.004zM512 466.595c-0.077 0-0.172 0-0.257 0-15.319 0-29.178 6.257-39.16 16.361l-0.005 0.005-258.132 262.596c-3.437 7.037-5.446 15.305-5.446 24.041 0 30.81 24.977 55.792 55.792 55.792 8.741 0 17.009-2.009 24.377-5.597l-0.329 0.145 223.173-223.173 223.173 223.173c7.037 3.437 15.305 5.446 24.041 5.446 30.81 0 55.792-24.977 55.792-55.792 0-8.741-2.009-17.009-5.597-24.377l0.145 0.329-260.364-260.364c-9.233-10.493-22.31-17.429-37.002-18.583l-0.192-0.012z" />
+<glyph unicode="&#xe92d;" glyph-name="angle-double-left" data-tags="angle-double-left" d="M436.578 127.456c-0.073 0-0.172 0-0.262 0-15.535 0-29.584 6.348-39.707 16.591l-0.004 0.004-261.716 263.977c-10.22 10.237-16.542 24.365-16.542 39.973s6.32 29.742 16.542 39.973v0l261.716 261.716c8.688 5.708 19.333 9.102 30.778 9.102 31.242 0 56.568-25.327 56.568-56.568 0-10.286-2.746-19.925-7.538-28.233l0.144 0.272-226.267-226.267 226.267-226.267c10.22-10.237 16.542-24.365 16.542-39.973s-6.32-29.742-16.542-39.973v0c-9.854-8.923-22.994-14.389-37.408-14.389-0.902 0-1.8 0.024-2.694 0.065l0.124-0.004zM851.399 127.456c-15.091 1.188-28.351 8.214-37.656 18.795l-0.055 0.065-263.977 263.977c-10.22 10.237-16.542 24.365-16.542 39.973s6.32 29.742 16.542 39.973v0l263.977 259.453c7.129 3.487 15.515 5.521 24.379 5.521 31.242 0 56.568-25.327 56.568-56.568 0-8.864-2.038-17.25-5.669-24.715l0.144 0.336-226.267-226.267 226.267-226.267c8.942-9.959 14.408-23.201 14.408-37.714s-5.466-27.749-14.45-37.763l0.045 0.055c-9.366-10.641-22.619-17.666-37.517-18.843l-0.193-0.014z" />
+<glyph unicode="&#xe92e;" glyph-name="angle-double-right" data-tags="angle-double-right" d="M587.102 128.818c-0.073 0-0.171 0-0.259 0-15.47 0-29.463 6.321-39.534 16.519l-0.004 0.004c-10.173 10.194-16.472 24.266-16.472 39.803s6.29 29.611 16.472 39.809v0l225.304 225.304-225.304 225.304c-3.536 7.161-5.605 15.588-5.605 24.492 0 31.111 25.217 56.325 56.325 56.325 10.665 0 20.638-2.967 29.14-8.115l-0.251 0.143 262.858-262.858c10.173-10.194 16.472-24.266 16.472-39.803s-6.29-29.611-16.472-39.809v0l-262.858-258.35c-9.83-11.106-23.933-18.225-39.711-18.775l-0.094-0.004zM174.042 128.818c-15.029 1.181-28.228 8.178-37.495 18.716l-0.053 0.063c-8.9 9.92-14.342 23.099-14.342 37.554s5.442 27.63 14.391 37.603l-0.045-0.053 225.304 225.304-225.304 225.304c-3.467 7.105-5.497 15.45-5.497 24.276 0 31.111 25.217 56.325 56.325 56.325 8.82 0 17.176-2.028 24.609-5.644l-0.339 0.145 262.858-262.858c10.173-10.194 16.472-24.266 16.472-39.803s-6.29-29.611-16.472-39.809v0l-262.858-258.35c-9.32-10.596-22.521-17.598-37.357-18.765l-0.192-0.014z" />
+<glyph unicode="&#xe92f;" glyph-name="angle-double-up" data-tags="angle-double-up" d="M768.744 466.343c-0.079 0-0.163 0-0.259 0-15.11 0-28.77 6.175-38.616 16.135l-220.071 220.071-220.067-220.067c-6.991-3.451-15.223-5.479-23.923-5.479-30.385 0-55.016 24.631-55.016 55.016 0 10.412 2.899 20.155 7.927 28.458l-0.139-0.247 254.542 254.542c9.955 9.943 23.695 16.087 38.874 16.087s28.926-6.151 38.877-16.087v0l256.744-256.744c9.943-9.955 16.087-23.695 16.087-38.874s-6.151-28.926-16.087-38.877v0c-9.583-8.683-22.363-13.999-36.378-13.999-0.883 0-1.752 0.019-2.623 0.067l0.127-0.007zM768.744 62.882c-14.683 1.159-27.57 7.987-36.629 18.283l-0.055 0.060-220.067 220.067-220.067-220.067c-6.935-3.391-15.091-5.371-23.707-5.371-30.385 0-55.016 24.631-55.016 55.016 0 8.623 1.987 16.772 5.515 24.038l-0.139-0.331 256.744 256.744c9.955 9.943 23.695 16.087 38.874 16.087s28.926-6.151 38.877-16.087v0l252.342-256.744c8.695-9.691 14.011-22.565 14.011-36.678s-5.316-26.99-14.059-36.726l0.043 0.055c-9.104-10.351-22.001-17.184-36.486-18.331l-0.187-0.012z" />
+<glyph unicode="&#xe930;" glyph-name="angle-down" data-tags="angle-down" d="M512 235.79c-0.086 0-0.192 0-0.293 0-17.487 0-33.3 7.139-44.687 18.671l-0.006 0.006-294.549 297.097c-6.421 9.779-10.246 21.757-10.246 34.639 0 35.163 28.506 63.662 63.662 63.662 11.573 0 22.424-3.091 31.773-8.485l-0.306 0.164 254.656-254.656 254.656 254.656c9.044 5.23 19.894 8.318 31.469 8.318 35.163 0 63.662-28.506 63.662-63.662 0-12.88-3.82-24.863-10.395-34.879l0.149 0.244-297.097-297.097c-10.874-11.029-25.782-18.050-42.325-18.671l-0.112-0.002z" />
+<glyph unicode="&#xe931;" glyph-name="angle-left" data-tags="angle-left" d="M645.785 123.096c-0.077 0-0.174 0-0.264 0-15.744 0-29.987 6.434-40.247 16.814l-267.57 267.57c-10.36 10.374-16.768 24.697-16.768 40.517s6.404 30.147 16.768 40.517v0l267.566 265.27c8.804 5.784 19.594 9.224 31.197 9.224 31.667 0 57.335-25.671 57.335-57.335 0-10.424-2.782-20.194-7.64-28.617l0.144 0.274-229.343-229.343 229.343-229.343c10.36-10.374 16.768-24.697 16.768-40.517s-6.404-30.147-16.768-40.517v0c-9.987-9.044-23.307-14.584-37.917-14.584-0.914 0-1.824 0.023-2.732 0.064l0.124-0.004z" />
+<glyph unicode="&#xe932;" glyph-name="angle-right" data-tags="angle-right" d="M377.809 122.106c-16.204 0.566-30.605 7.836-40.589 19.11l-0.054 0.059c-10.396 10.404-16.822 24.776-16.822 40.643s6.424 30.235 16.822 40.645v0l230.044 230.044-230.044 230.044c-2.746 6.474-4.334 14.004-4.334 21.905 0 31.765 25.748 57.513 57.513 57.513 10.324 0 20.016-2.723 28.392-7.484l-0.286 0.149 268.384-268.384c10.396-10.406 16.822-24.773 16.822-40.643s-6.424-30.236-16.822-40.645v0l-268.384-263.783c-10.036-11.334-24.433-18.607-40.543-19.164l-0.096-0.006z" />
+<glyph unicode="&#xe933;" glyph-name="angle-up" data-tags="angle-up" d="M804.999 238.714c-0.087 0-0.194 0-0.29 0-17.244 0-32.838 7.040-44.069 18.415l-251.149 251.149-251.143-251.143c-7.978-3.94-17.369-6.249-27.304-6.249-34.676 0-62.787 28.109-62.787 62.787 0 11.887 3.305 23 9.042 32.478l-0.157-0.277 292.999 292.999c11.357 11.344 27.043 18.363 44.37 18.363s33.008-7.014 44.37-18.363v0l292.999-292.999c11.344-11.357 18.363-27.043 18.363-44.37s-7.014-33.008-18.363-44.37v0c-11.24-11.41-26.866-18.481-44.134-18.481-0.966 0-1.925 0.024-2.88 0.070l0.133-0.002z" />
+<glyph unicode="&#xe934;" glyph-name="upload" data-tags="upload" d="M875.959-64h-727.917c-82.563 3.472-148.18 71.248-148.18 154.349 0 2.309 0.051 4.607 0.151 6.89l-0.011-0.325v175.543c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-175.543c-0.162-1.762-0.255-3.81-0.255-5.881 0-34.276 25.406-62.617 58.412-67.222l0.357-0.041h729.673c33.364 4.645 58.77 32.987 58.77 67.263 0 2.069-0.093 4.118-0.274 6.141l0.019-0.261v175.543c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-175.543c0.091-1.983 0.143-4.309 0.143-6.646 0-82.485-64.648-149.87-146.039-154.251l-0.389-0.016zM746.058 638.172c-0.060 0-0.133 0-0.204 0-12.052 0-22.954 4.923-30.804 12.869l-203.048 203.048-203.044-203.044c-7.816-7.297-18.344-11.778-29.918-11.778-24.237 0-43.886 19.648-43.886 43.886 0 11.575 4.48 22.102 11.803 29.944l-0.023-0.026 234.058 234.058c7.939 7.93 18.904 12.835 31.012 12.835s23.073-4.904 31.013-12.835v0l234.058-234.058c7.93-7.939 12.835-18.904 12.835-31.012s-4.904-23.073-12.835-31.013v0c-7.854-7.95-18.756-12.874-30.808-12.874-0.071 0-0.144 0-0.215 0h0.011zM512 228.571c-24.106 0.325-43.561 19.78-43.886 43.854v643.688c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-643.657c-0.325-24.106-19.78-43.561-43.854-43.886h-0.032z" />
+<glyph unicode="&#xe935;" glyph-name="ban" data-tags="ban" d="M512 960c-282.769 0-512-229.231-512-512s229.231-512 512-512c282.769 0 512 229.231 512 512v0c0 282.769-229.231 512-512 512v0zM85.333 448c0 0.111 0 0.24 0 0.369 0 102.621 36.521 196.712 97.276 269.985l-0.565-0.701 599.609-599.609c-72.916-60.16-167.308-96.645-270.223-96.645-235.327 0-426.097 190.771-426.097 426.097 0 0.177 0 0.353 0 0.531v-0.028zM841.956 178.347l-599.609 599.609c72.855 59.977 167.108 96.344 269.855 96.344 235.327 0 426.097-190.771 426.097-426.097 0-102.747-36.367-197-96.931-270.591l0.587 0.735z" />
+<glyph unicode="&#xe936;" glyph-name="star-fill" data-tags="star-fill" d="M1021.85 566.517c-4.841 15.030-17.644 26.152-33.316 28.484l-0.227 0.028-303.002 44.165-135.848 274.491c-7.746 12.831-21.614 21.279-37.457 21.279s-29.71-8.447-37.346-21.083l-0.11-0.195-135.848-274.491-303.002-44.165c-15.899-2.36-28.701-13.481-33.462-28.219l-0.081-0.292c-1.397-4-2.204-8.612-2.204-13.413 0-11.571 4.687-22.048 12.267-29.634v0l220.265-213.556-51.991-301.885c-0.38-2.136-0.597-4.594-0.597-7.102 0-14.016 6.787-26.448 17.254-34.186l0.115-0.081c6.76-4.866 15.204-7.783 24.332-7.783 7.263 0 14.096 1.847 20.052 5.097l-0.219-0.11 270.579 142.557 271.137-142.557c5.647-3.156 12.387-5.020 19.564-5.031h0.004c9.211 0.109 17.721 3.021 24.742 7.922l-0.143-0.094c10.582 7.821 17.369 20.251 17.369 34.267 0 2.509-0.218 4.967-0.634 7.356l0.037-0.254-52.551 301.885 219.705 213.556c7.83 7.626 12.687 18.27 12.687 30.050 0 4.646-0.756 9.117-2.151 13.294l0.085-0.296z" />
+<glyph unicode="&#xe937;" glyph-name="star" data-tags="star" d="M802.661-41.092c-7.178 0.012-13.918 1.875-19.772 5.137l0.207-0.106-271.096 142.535-271.096-142.535c-5.737-3.14-12.567-4.986-19.829-4.986-9.126 0-17.571 2.916-24.452 7.867l0.124-0.085c-10.58 7.82-17.366 20.248-17.366 34.262 0 2.509 0.217 4.966 0.634 7.355l-0.037-0.254 52.543 301.84-220.232 213.524c-7.577 7.585-12.265 18.059-12.265 29.629 0 4.8 0.807 9.412 2.291 13.706l-0.089-0.295c4.841 15.028 17.641 26.148 33.311 28.48l0.227 0.028 302.957 44.158 135.828 274.45c7.745 12.829 21.611 21.276 37.451 21.276s29.706-8.446 37.341-21.080l0.11-0.195 135.828-274.45 302.957-44.158c15.896-2.359 28.697-13.479 33.457-28.215l0.081-0.292c1.397-4 2.204-8.611 2.204-13.411 0-11.569-4.686-22.045-12.265-29.63v0l-220.232-213.524 51.984-301.84c0.38-2.135 0.597-4.593 0.597-7.101 0-14.014-6.786-26.444-17.251-34.181l-0.115-0.081c-6.725-4.703-15.021-7.598-23.979-7.824l-0.056-0.001zM512 195.349c7.119-0.088 13.834-1.727 19.85-4.594l-0.287 0.123 215.201-111.792-40.805 239.795c-0.368 2.129-0.579 4.58-0.579 7.081 0 11.813 4.698 22.528 12.328 30.38l-0.010-0.010 174.396 167.689-240.912 35.774c-13.783 2.252-25.168 10.868-31.19 22.677l-0.111 0.241-107.88 217.995-107.88-218.555c-6.135-12.049-17.52-20.666-31.056-22.884l-0.246-0.033-240.912-35.215 174.396-167.689c7.619-7.842 12.317-18.557 12.317-30.37 0-2.501-0.211-4.952-0.614-7.338l0.035 0.257-40.805-241.472 215.201 111.792c5.628 3.296 12.279 5.497 19.381 6.135l0.183 0.013z" />
+<glyph unicode="&#xe938;" glyph-name="refresh" data-tags="refresh" d="M512-63.452c-234.044 0-423.774 189.73-423.774 423.774s189.73 423.774 423.774 423.774v0h146.13c24.211 0 43.839-19.627 43.839-43.839s-19.627-43.839-43.839-43.839v0h-146.13c-185.621 0-336.097-150.475-336.097-336.097s150.475-336.097 336.097-336.097c185.621 0 336.097 150.475 336.097 336.097v0c0 24.211 19.627 43.839 43.839 43.839s43.839-19.627 43.839-43.839v0c-0.333-233.911-189.864-423.443-423.743-423.774h-0.032zM512 521.064c-0.060 0-0.133 0-0.204 0-12.039 0-22.929 4.918-30.771 12.856l-0.004 0.004c-7.921 7.931-12.821 18.884-12.821 30.979s4.899 23.048 12.821 30.98v0l144.376 144.376-144.376 144.376c-8.595 8.025-13.953 19.423-13.953 32.074 0 24.211 19.627 43.839 43.839 43.839 12.65 0 24.048-5.358 32.049-13.927l0.023-0.026 175.355-175.355c7.921-7.931 12.821-18.884 12.821-30.979s-4.899-23.048-12.821-30.98v0l-175.355-175.355c-7.846-7.942-18.736-12.86-30.775-12.86-0.071 0-0.144 0-0.215 0h0.011z" />
+<glyph unicode="&#xe939;" glyph-name="user" data-tags="user" d="M512 431.484c-136.816 0-247.725 110.91-247.725 247.725s110.91 247.725 247.725 247.725c136.816 0 247.725-110.91 247.725-247.725v0c0-136.816-110.91-247.725-247.725-247.725v0zM512 827.845c-82.088 0-148.635-66.547-148.635-148.635s66.547-148.635 148.635-148.635c82.088 0 148.635 66.547 148.635 148.635v0c0 82.088-66.547 148.635-148.635 148.635v0zM974.421-30.935c-27.214 0.367-49.178 22.331-49.545 49.509v0.036c0 128.817-70.024 214.696-412.876 214.696s-412.876-85.879-412.876-214.696c0-27.363-22.182-49.545-49.545-49.545s-49.545 22.182-49.545 49.545v0c0 313.786 358.706 313.786 511.966 313.786s511.966 0 511.966-313.786c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036z" />
+<glyph unicode="&#xe93a;" glyph-name="window-minimize" data-tags="window-minimize" d="M863.070 959.977h-702.14c-88.866 0-160.907-72.041-160.907-160.907v0-351.070c0-24.236 19.648-43.884 43.884-43.884s43.884 19.648 43.884 43.884v0 351.070c0 40.394 32.746 73.139 73.139 73.139v0h702.14c40.394 0 73.139-32.746 73.139-73.139v0-702.14c0-40.394-32.746-73.139-73.139-73.139v0h-351.070c-24.236 0-43.884-19.648-43.884-43.884s19.648-43.884 43.884-43.884v0h351.070c88.866 0 160.907 72.041 160.907 160.907v0 702.14c0 88.866-72.041 160.907-160.907 160.907v0zM465.775 378.372c5.003-2.189 10.831-3.478 16.956-3.511h234.059c24.236 0 43.884 19.648 43.884 43.884s-19.648 43.884-43.884 43.884v0h-128.141l188.408 188.408c7.297 7.815 11.777 18.343 11.777 29.916 0 24.236-19.648 43.884-43.884 43.884-11.574 0-22.101-4.48-29.942-11.802l0.026 0.023-188.408-188.408v128.141c0 24.236-19.648 43.884-43.884 43.884s-43.884-19.648-43.884-43.884v0-234.047c0.033-6.137 1.322-11.965 3.62-17.252l-0.11 0.284c4.316-10.739 12.665-19.089 23.125-23.305l0.28-0.099zM277.953 316.349h-175.535c-56.418-0.33-102.065-45.976-102.396-102.364v-175.567c0.33-56.418 45.976-102.065 102.364-102.396h175.567c56.418 0.33 102.065 45.976 102.396 102.364v175.567c-0.33 56.418-45.976 102.065-102.364 102.396h-0.032zM292.581 38.418c0-8.079-6.55-14.628-14.628-14.628v0h-175.535c-8.079 0-14.628 6.55-14.628 14.628v0 175.535c0 8.079 6.55 14.628 14.628 14.628v0h175.535c8.079 0 14.628-6.55 14.628-14.628v0z" />
+<glyph unicode="&#xe93b;" glyph-name="window-maximize" data-tags="window-maximize" d="M863.070-63.977h-351.070c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h351.070c40.394 0 73.139 32.746 73.139 73.139v0 702.14c0 40.394-32.746 73.139-73.139 73.139v0h-702.14c-40.394 0-73.139-32.746-73.139-73.139v0-351.070c0-24.236-19.648-43.884-43.884-43.884s-43.884 19.648-43.884 43.884v0 351.070c0 88.866 72.041 160.907 160.907 160.907v0h702.14c88.866 0 160.907-72.041 160.907-160.907v0-702.14c0-88.866-72.041-160.907-160.907-160.907v0zM746.047 404.116c-24.105 0.325-43.559 19.779-43.884 43.852v190.195h-190.163c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h234.047c24.105-0.325 43.559-19.779 43.884-43.852v-234.079c-0.325-24.105-19.779-43.559-43.852-43.884h-0.032zM482.745 374.861c-11.709 0.922-21.991 6.371-29.214 14.58l-0.041 0.048c-6.935 7.728-11.175 17.996-11.175 29.255s4.24 21.528 11.211 29.297l-0.036-0.041 263.303 263.303c7.815 7.297 18.343 11.777 29.916 11.777 24.236 0 43.884-19.648 43.884-43.884 0-11.574-4.48-22.101-11.802-29.942l0.023 0.026-266.813-259.792c-7.264-8.256-17.547-13.707-29.106-14.619l-0.151-0.010zM277.953-63.977h-175.535c-56.418 0.33-102.065 45.976-102.396 102.364v175.567c0.33 56.418 45.976 102.065 102.364 102.396h175.567c56.418-0.33 102.065-45.976 102.396-102.364v-175.567c-0.33-56.418-45.976-102.065-102.364-102.396h-0.032zM102.418 228.581c-8.079 0-14.628-6.55-14.628-14.628v0-175.535c0-8.079 6.55-14.628 14.628-14.628v0h175.535c8.079 0 14.628 6.55 14.628 14.628v0 175.535c0 8.079-6.55 14.628-14.628 14.628v0z" />
+<glyph unicode="&#xe93c;" glyph-name="external-link" data-tags="external-link" d="M862.106-62.571h-700.213c-88.622 0-160.465 71.843-160.465 160.465v0 700.213c0 88.622 71.843 160.465 160.465 160.465v0h350.106c24.17 0 43.763-19.594 43.763-43.763s-19.594-43.763-43.763-43.763v0h-350.106c-40.283 0-72.938-32.656-72.938-72.938v0-700.213c0-40.283 32.656-72.938 72.938-72.938v0h700.213c40.283 0 72.938 32.656 72.938 72.938v0 350.106c0 24.17 19.594 43.763 43.763 43.763s43.763-19.594 43.763-43.763v0-350.106c0-88.622-71.843-160.465-160.465-160.465v0zM978.808 637.641c-24.038 0.324-43.439 19.725-43.763 43.732v189.673h-189.641c-24.17 0-43.763 19.594-43.763 43.763s19.594 43.763 43.763 43.763v0h233.405c24.038-0.324 43.439-19.725 43.763-43.732v-233.436c-0.324-24.038-19.725-43.439-43.732-43.763h-0.031zM599.527 491.763c-11.677 0.919-21.931 6.354-29.134 14.54l-0.041 0.048c-6.916 7.706-11.145 17.947-11.145 29.175s4.229 21.469 11.18 29.216l-0.036-0.041 379.281 379.281c8.011 8.58 19.39 13.929 32.018 13.929 24.17 0 43.763-19.594 43.763-43.763 0-12.628-5.349-24.007-13.903-31.994l-0.026-0.023-382.782-375.78c-7.244-8.233-17.498-13.669-29.026-14.579l-0.15-0.010z" />
+<glyph unicode="&#xe93d;" glyph-name="trash" data-tags="trash" d="M979.856 640.991h-935.714c-24.224 0-43.862 19.638-43.862 43.862s19.638 43.862 43.862 43.862h935.714c24.224 0 43.862-19.638 43.862-43.862s-19.638-43.862-43.862-43.862v0zM771.66-63.718h-519.321c-2.865-0.208-6.208-0.328-9.577-0.328-74.752 0-135.856 58.437-140.12 132.119l-0.018 0.377v613.477c0 24.224 19.638 43.862 43.862 43.862s43.862-19.638 43.862-43.862v0-613.477c0-23.977 27.486-44.447 58.483-44.447h519.321c32.75 0 58.483 20.468 58.483 44.447v613.477c0 26.162 21.208 47.37 47.37 47.37s47.37-21.208 47.37-47.37v0-613.477c-4.282-74.060-65.385-132.496-140.136-132.496-3.37 0-6.712 0.119-10.022 0.352l0.445-0.025zM778.678 696.548c-0.175-0.003-0.382-0.004-0.589-0.004-23.9 0-43.276 19.376-43.276 43.276 0 0.207 0.001 0.414 0.004 0.62v-0.032 87.138c0 23.977-28.071 44.447-58.483 44.447h-326.915c-32.166 0-58.483-20.468-58.483-44.447v-87.138c0-24.224-19.638-43.862-43.862-43.862s-43.862 19.638-43.862 43.862v0 87.138c4.697 74.022 65.883 132.278 140.675 132.278 1.945 0 3.88-0.040 5.806-0.118l-0.276 0.008h325.161c2.174 0.119 4.719 0.188 7.28 0.188 74.82 0 136.023-58.3 140.66-131.951l0.021-0.407v-87.138c0.003-0.174 0.004-0.38 0.004-0.585 0-24.224-19.638-43.862-43.862-43.862-0.001 0-0.003 0-0.004 0v0zM407.901 155.59c-24.092 0.325-43.537 19.769-43.862 43.83v264.955c0 24.224 19.638 43.862 43.862 43.862s43.862-19.638 43.862-43.862v0-264.339c0.003-0.174 0.004-0.38 0.004-0.585 0-24.224-19.638-43.862-43.862-43.862-0.001 0-0.003 0-0.004 0v0zM616.099 155.59c-24.224 0-43.862 19.638-43.862 43.862v0 264.924c0 24.224 19.638 43.862 43.862 43.862s43.862-19.638 43.862-43.862v0-264.339c0-0.001 0-0.003 0-0.004 0-24.342-19.568-44.112-43.83-44.443h-0.032z" />
+<glyph unicode="&#xe93e;" glyph-name="user-minus" data-tags="user-minus" d="M512 403.48c-122.938 0-222.599 99.66-222.599 222.599s99.66 222.599 222.599 222.599c122.938 0 222.599-99.66 222.599-222.599v0c0-122.938-99.66-222.599-222.599-222.599v0zM512 759.638c-73.762 0-133.559-59.797-133.559-133.559s59.797-133.559 133.559-133.559c73.762 0 133.559 59.797 133.559 133.559v0c0 73.762-59.797 133.559-133.559 133.559v0zM927.518-12.038c-24.454 0.33-44.19 20.066-44.52 44.488v0.032c0 115.751-62.922 192.919-370.998 192.919s-370.998-77.168-370.998-192.919c0-24.587-19.932-44.52-44.52-44.52s-44.52 19.932-44.52 44.52v0c0 281.959 322.323 281.959 460.038 281.959s460.038 0 460.038-281.959c-0.33-24.454-20.066-44.19-44.488-44.52h-0.032zM1031.396 403.48h-207.758c-24.587 0-44.52 19.932-44.52 44.52s19.932 44.52 44.52 44.52v0h207.758c24.587 0 44.52-19.932 44.52-44.52s-19.932-44.52-44.52-44.52v0z" />
+<glyph unicode="&#xe93f;" glyph-name="user-plus" data-tags="user-plus" d="M512 403.48c-122.938 0-222.599 99.66-222.599 222.599s99.66 222.599 222.599 222.599c122.938 0 222.599-99.66 222.599-222.599v0c0-122.938-99.66-222.599-222.599-222.599v0zM512 759.638c-73.762 0-133.559-59.797-133.559-133.559s59.797-133.559 133.559-133.559c73.762 0 133.559 59.797 133.559 133.559v0c0 73.762-59.797 133.559-133.559 133.559v0zM927.518-12.038c-24.454 0.33-44.19 20.066-44.52 44.488v0.032c0 115.751-62.922 192.919-370.998 192.919s-370.998-77.168-370.998-192.919c0-24.587-19.932-44.52-44.52-44.52s-44.52 19.932-44.52 44.52v0c0 281.959 322.323 281.959 460.038 281.959s460.038 0 460.038-281.959c-0.33-24.454-20.066-44.19-44.488-44.52h-0.032zM927.518 299.6c-24.454 0.33-44.19 20.066-44.52 44.488v207.79c0 24.587 19.932 44.52 44.52 44.52s44.52-19.932 44.52-44.52v0-207.758c-0.33-24.454-20.066-44.19-44.488-44.52h-0.032zM1031.396 403.48h-207.758c-24.587 0-44.52 19.932-44.52 44.52s19.932 44.52 44.52 44.52v0h207.758c24.587 0 44.52-19.932 44.52-44.52s-19.932-44.52-44.52-44.52v0z" />
+<glyph unicode="&#xe940;" glyph-name="clock" data-tags="clock" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM682.667 405.333h-170.667c-23.436 0.316-42.351 19.231-42.667 42.636v284.475c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-241.777h128c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0z" />
+<glyph unicode="&#xe941;" glyph-name="users" data-tags="users" d="M617.025 434.871c-108.758 0-196.923 88.165-196.923 196.923s88.165 196.923 196.923 196.923c108.758 0 196.923-88.165 196.923-196.923v0c0-108.758-88.165-196.923-196.923-196.923v0zM617.025 749.948c-65.254 0-118.154-52.9-118.154-118.154s52.9-118.154 118.154-118.154c65.254 0 118.154 52.9 118.154 118.154v0c0 65.254-52.9 118.154-118.154 118.154v0zM984.615 67.282c-21.633 0.292-39.093 17.751-39.385 39.356v0.028c0 102.4-55.664 170.667-328.206 170.667s-328.206-68.267-328.206-170.667c0-21.751-17.633-39.385-39.385-39.385s-39.385 17.633-39.385 39.385v0c0 249.436 285.145 249.436 406.975 249.436s406.975 0 406.975-249.436c-0.292-21.633-17.751-39.093-39.356-39.385h-0.028zM318.753 392.336h-16.804c-80.61 8.022-143.044 75.489-143.044 157.538 0 87.412 70.862 158.273 158.273 158.273 5.362 0 10.663-0.267 15.888-0.788l-0.66 0.053c21.012-0.932 37.694-18.192 37.694-39.348 0-21.751-17.633-39.385-39.385-39.385-2.183 0-4.326 0.177-6.414 0.519l0.228-0.031c-2.281 0.241-4.928 0.378-7.607 0.378-18.98 0-36.35-6.897-49.738-18.321l0.107 0.089c-15.663-12.706-26.198-31.205-28.33-52.186l-0.027-0.326c-0.273-2.455-0.43-5.301-0.43-8.183 0-40.775 31.191-74.267 71.015-77.915l0.306-0.022c2.052-0.186 4.437-0.293 6.848-0.293 15.535 0 30.039 4.409 42.331 12.043l-0.342-0.198c5.898 3.695 13.065 5.886 20.742 5.886 21.812 0 39.494-17.682 39.494-39.494 0-14.133-7.424-26.533-18.586-33.511l-0.166-0.097c-23.058-14.912-51.098-24.022-81.222-24.678l-0.174-0.002zM39.385 106.667c-21.633 0.292-39.093 17.751-39.385 39.356v0.028c0 141.785 37.809 236.308 223.179 236.308 21.751 0 39.385-17.633 39.385-39.385s-17.633-39.385-39.385-39.385v0c-123.406 0-144.41-39.385-144.41-157.538-0.292-21.633-17.751-39.093-39.356-39.385h-0.028z" />
+<glyph unicode="&#xe942;" glyph-name="pencil" data-tags="pencil" d="M45.313-62.421c-0.136-0.001-0.296-0.003-0.456-0.003-11.964 0-22.806 4.803-30.702 12.588l0.006-0.006c-8.248 8.149-13.356 19.461-13.356 31.966 0 1.401 0.065 2.787 0.19 4.155l-0.013-0.176 18.572 230.049c0.852 11.108 5.734 20.935 13.169 28.147l662.6 662.6c34.079 31.973 80.059 51.615 130.628 51.615 2.096 0 4.186-0.034 6.267-0.101l-0.303 0.008c52.335-0.418 99.758-21.108 134.873-54.592l-0.079 0.074c34.783-35.688 56.235-84.513 56.235-138.348 0-50.427-18.822-96.457-49.825-131.448l0.181 0.208-663.188-665.585c-7.185-7.16-16.72-11.966-27.348-13.161l-0.211-0.020-233.044-20.968zM105.22 192.789l-12.581-164.15 164.15 14.978 653.004 654.202c15.132 17.82 24.333 41.087 24.333 66.503 0 56.908-46.133 103.043-103.043 103.043-0.341 0-0.681-0.001-1.021-0.006h0.052c-1.828 0.124-3.962 0.194-6.112 0.194-25.163 0-48.075-9.635-65.249-25.419l0.069 0.063zM727.071 875.148v0z" />
+<glyph unicode="&#xe943;" glyph-name="cloud-download" data-tags="cloud-download" d="M815.587 103.015c-22.863 0-41.398 18.535-41.398 41.398s18.535 41.398 41.398 41.398v0c91.628 0 124.194 45.813 124.194 175.528-8.48 95.471-83.922 170.912-178.638 179.338l-0.753 0.054c-19.914-0.52-38.817-4.118-56.489-10.331l1.291 0.396c-4.655-2-10.071-3.163-15.761-3.163-18.775 0-34.592 12.668-39.37 29.923l-0.067 0.287c-38.556 117.836-147.511 201.455-275.996 201.455-159.262 0-288.519-128.478-289.778-287.443l-0.001-0.119c0-177.736 8.28-285.923 124.194-285.923 22.863 0 41.398-18.535 41.398-41.398s-18.535-41.398-41.398-41.398v0c-206.991 0-206.991 213.062-206.991 368.719-0.047 2.197-0.074 4.787-0.074 7.382 0 205.772 166.811 372.583 372.583 372.583 155.102 0 288.069-94.773 344.148-229.569l0.909-2.466c12.977 2.459 27.905 3.866 43.161 3.866 0.351 0 0.701-0.001 1.052-0.003h-0.054c141.071-8.919 253.269-121.118 262.147-261.377l0.041-0.811c-2.759-70.652-2.759-258.324-209.75-258.324zM512 51.681c-0.057 0-0.125 0-0.193 0-11.369 0-21.653 4.644-29.058 12.14l-156.213 156.213c-6.884 7.373-11.11 17.304-11.11 28.222 0 22.863 18.535 41.398 41.398 41.398 10.919 0 20.849-4.226 28.246-11.134l-0.025 0.022 126.954-126.954 126.954 126.954c7.373 6.884 17.304 11.11 28.222 11.11 22.863 0 41.398-18.535 41.398-41.398 0-10.919-4.226-20.849-11.134-28.246l0.022 0.025-156.209-158.416c-7.128-6.219-16.515-10.011-26.787-10.011-0.868 0-1.73 0.027-2.585 0.080l0.116-0.006zM512 51.681c-22.863 0-41.398 18.535-41.398 41.398v0 351.056c0 22.863 18.535 41.398 41.398 41.398s41.398-18.535 41.398-41.398v0-351.056c0-22.863-18.535-41.398-41.398-41.398v0z" />
+<glyph unicode="&#xe944;" glyph-name="cloud-upload" data-tags="cloud-upload" d="M815.587 103.015c-22.863 0-41.398 18.535-41.398 41.398s18.535 41.398 41.398 41.398v0c91.628 0 124.194 45.813 124.194 175.528-8.48 95.471-83.922 170.912-178.638 179.338l-0.753 0.054c-19.914-0.52-38.817-4.118-56.489-10.331l1.291 0.396c-4.655-2-10.071-3.163-15.761-3.163-18.775 0-34.592 12.668-39.37 29.923l-0.067 0.287c-38.556 117.836-147.511 201.455-275.996 201.455-159.262 0-288.519-128.478-289.778-287.443l-0.001-0.119c0-189.879 41.951-285.923 124.194-285.923 22.863 0 41.398-18.535 41.398-41.398s-18.535-41.398-41.398-41.398v0c-137.994 0-206.991 124.194-206.991 368.719-0.047 2.197-0.074 4.787-0.074 7.382 0 205.772 166.811 372.583 372.583 372.583 155.102 0 288.069-94.773 344.148-229.569l0.909-2.466c12.977 2.459 27.905 3.866 43.161 3.866 0.351 0 0.701-0.001 1.052-0.003h-0.054c141.071-8.919 253.269-121.118 262.147-261.377l0.041-0.811c-2.759-70.652-2.759-258.324-209.75-258.324zM668.209 246.53c-11.406 0.137-21.709 4.745-29.262 12.15l-126.947 126.947-126.954-126.954c-7.373-6.884-17.304-11.11-28.222-11.11-22.863 0-41.398 18.535-41.398 41.398 0 10.919 4.226 20.849 11.134 28.246l-0.022-0.025 156.209 156.209c7.427 7.616 17.79 12.341 29.254 12.341s21.827-4.725 29.246-12.331l0.008-0.009 156.209-156.209c7.48-7.489 12.108-17.832 12.108-29.254s-4.626-21.765-12.108-29.256v0c-7.6-7.307-17.868-11.888-29.205-12.143l-0.049-0.001zM512 51.681c-22.863 0-41.398 18.535-41.398 41.398v0 351.056c0 22.863 18.535 41.398 41.398 41.398s41.398-18.535 41.398-41.398v0-351.056c0-22.863-18.535-41.398-41.398-41.398v0z" />
+<glyph unicode="&#xe945;" glyph-name="cloud" data-tags="cloud" d="M761.085 74.373h-387.465c-206.337 0.017-373.598 167.289-373.598 373.627 0 206.348 167.278 373.627 373.627 373.627 152.926 0 284.392-91.876 342.215-223.439l0.939-2.397c13.246 2.68 28.531 4.285 44.166 4.428l0.115 0.001c141.466-8.944 253.978-121.457 262.882-262.11l0.042-0.813c0-145.209-117.715-262.923-262.923-262.923v0zM373.619 738.599c-160.494 0-290.599-130.105-290.599-290.599s130.105-290.599 290.599-290.599v0h387.465c99.226 0.314 179.581 80.668 179.895 179.864v0.030c-8.504 95.738-84.157 171.391-179.139 179.84l-0.755 0.054c-19.989-0.459-38.949-4.276-56.529-10.907l1.178 0.389c-4.752-1.958-10.27-3.095-16.052-3.095s-11.3 1.136-16.34 3.199l0.288-0.104c-9.801 5.017-17.16 13.636-20.404 24.069l-0.077 0.287c-36.721 121.012-147.288 207.574-278.073 207.574-0.511 0-1.022-0.001-1.533-0.004h0.079z" />
+<glyph unicode="&#xe946;" glyph-name="align-right" data-tags="align-right" d="M980.093 521.139h-585.117c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h585.117c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM984.189 755.186h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM984.189 287.093h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 53.046h-585.117c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h585.117c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe947;" glyph-name="align-left" data-tags="align-left" d="M624.033 506.048h-580.479c-24.044 0-43.536 19.492-43.536 43.536s19.492 43.536 43.536 43.536v0h580.479c24.044 0 43.536-19.492 43.536-43.536s-19.492-43.536-43.536-43.536v0zM980.446 738.239h-928.766c-24.044 0-43.536 19.492-43.536 43.536s19.492 43.536 43.536 43.536v0h928.766c24.044 0 43.536-19.492 43.536-43.536s-19.492-43.536-43.536-43.536v0zM980.446 273.857h-928.766c-24.044 0-43.536 19.492-43.536 43.536s19.492 43.536 43.536 43.536v0h928.766c24.044 0 43.536-19.492 43.536-43.536s-19.492-43.536-43.536-43.536v0zM624.033 41.665h-580.479c-24.044 0-43.536 19.492-43.536 43.536s19.492 43.536 43.536 43.536v0h580.479c24.044 0 43.536-19.492 43.536-43.536s-19.492-43.536-43.536-43.536v0z" />
+<glyph unicode="&#xe948;" glyph-name="align-center" data-tags="align-center" d="M804.558 521.139h-585.117c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h585.117c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 755.186h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 287.093h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM804.558 53.046h-585.117c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h585.117c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe949;" glyph-name="align-justify" data-tags="align-justify" d="M980.093 521.139h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 755.186h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 287.093h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM980.093 53.046h-936.187c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h936.187c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe94a;" glyph-name="cog" data-tags="cog" d="M512 276.561c-94.683 0-171.439 76.755-171.439 171.439s76.755 171.439 171.439 171.439c94.683 0 171.439-76.755 171.439-171.439v0c0-94.683-76.755-171.439-171.439-171.439v0zM512 531.671c-46.211 0-83.671-37.462-83.671-83.671s37.462-83.671 83.671-83.671c46.211 0 83.671 37.462 83.671 83.671v0c0 46.211-37.462 83.671-83.671 83.671v0zM515.511-63.977c-71.489 0.329-129.316 58.359-129.316 129.895 0 0.411 0.001 0.823 0.005 1.234v-0.063c-0.496 11.009-7.26 20.325-16.788 24.505l-0.181 0.070c-3.653 1.718-7.933 2.721-12.448 2.721-7.858 0-15.007-3.038-20.337-8.003l0.018 0.016c-23.441-23.268-55.642-37.739-91.222-38.032h-0.056c-0.252-0.001-0.55-0.003-0.848-0.003-35.579 0-67.876 14.051-91.644 36.906l0.043-0.041c-23.515 23.508-38.058 55.987-38.058 91.864s14.545 68.356 38.058 91.864v0c5.876 5.37 9.547 13.066 9.547 21.622 0 3.145-0.496 6.173-1.414 9.011l0.058-0.207c-5.723 9.782-16.134 16.274-28.071 16.384h-0.015c-71.692 0.291-129.966 57.335-132.231 128.518l-0.005 0.208c0.332 71.488 58.36 129.312 129.895 129.312 0.206 0 0.413 0 0.618-0.001h-0.032c11.009 0.496 20.325 7.26 24.505 16.788l0.070 0.181c1.718 3.653 2.721 7.933 2.721 12.448 0 7.858-3.038 15.007-8.003 20.337l0.016-0.018c-23.268 23.441-37.739 55.642-38.032 91.222v0.056c-0.012 0.671-0.019 1.462-0.019 2.255 0 35.137 14.077 66.986 36.901 90.213l-0.018-0.019c23.508 23.515 55.987 38.058 91.864 38.058s68.356-14.545 91.864-38.058v0c6.075-5.789 14.317-9.35 23.391-9.35 3.125 0 6.153 0.422 9.028 1.214l-0.239-0.056c10.177 5.653 17.174 15.957 18.131 27.962l0.008 0.123c0 0.019 0 0.041 0 0.063 0 71.915 57.154 130.481 128.518 132.752l0.208 0.005c71.237-0.66 128.732-58.56 128.732-129.89 0-0.413-0.001-0.826-0.005-1.238v0.063c0.477-11.185 6.924-20.76 16.218-25.665l0.166-0.080c2.998-1.135 6.465-1.792 10.084-1.792 7.909 0 15.084 3.138 20.35 8.236l-0.008-0.007c23.441 23.268 55.642 37.739 91.222 38.032h0.056c1.163 0.038 2.53 0.062 3.903 0.062 34.624 0 65.95-14.12 88.535-36.914l0.010-0.010c23.515-23.508 38.058-55.987 38.058-91.864s-14.545-68.356-38.058-91.864v0c-4.99-5.871-8.027-13.54-8.027-21.916 0-3.667 0.581-7.197 1.657-10.505l-0.067 0.24c5.653-10.177 15.957-17.174 27.962-18.131l0.123-0.008c71.192-0.937 128.814-57.74 131.062-128.518l0.005-0.208c-0.66-71.237-58.56-128.732-129.89-128.732-0.413 0-0.826 0.001-1.238 0.005h0.063c-11.185-0.477-20.76-6.924-25.665-16.218l-0.080-0.166c-1.135-2.998-1.792-6.465-1.792-10.084 0-7.909 3.138-15.084 8.236-20.35l-0.007 0.008c23.268-23.441 37.739-55.642 38.032-91.222v-0.056c0.012-0.671 0.019-1.462 0.019-2.255 0-35.137-14.077-66.986-36.901-90.213l0.018 0.019c-23.508-23.515-55.987-38.058-91.864-38.058s-68.356 14.545-91.864 38.058v0c-5.258 5.092-12.433 8.23-20.341 8.23-3.62 0-7.086-0.657-10.287-1.86l0.202 0.066c-9.782-5.723-16.274-16.134-16.384-28.071v-0.015c-0.937-71.192-57.74-128.814-128.518-131.062l-0.208-0.005zM356.944 182.357c0.372 0.004 0.812 0.007 1.252 0.007 15.867 0 30.927-3.45 44.471-9.643l-0.669 0.274c41.82-17.762 70.846-58.017 71.967-105.181l0.003-0.14c-0.003-0.185-0.004-0.402-0.004-0.62 0-23.297 18.4-42.297 41.461-43.26l0.088-0.003c23.005 1.873 40.964 21.005 40.964 44.331 0 0.254-0.003 0.509-0.007 0.761v-0.038c0.3 47.575 28.116 88.582 68.322 107.933l0.723 0.313c13.278 5.676 28.727 8.976 44.947 8.976 32.246 0 61.445-13.042 82.611-34.139l-0.003 0.003c7.488-7.488 17.831-12.119 29.255-12.119 22.85 0 41.374 18.524 41.374 41.374 0 11.425-4.631 21.769-12.119 29.255v0c-20.848 21.12-33.725 50.154-33.725 82.193 0 16.378 3.364 31.971 9.44 46.123l-0.291-0.761c18.745 40.97 59.339 68.943 106.478 69.044h0.014c0.185-0.003 0.403-0.004 0.621-0.004 22.975 0 41.712 18.138 42.674 40.875l0.003 0.088c-1.57 22.953-20.575 40.976-43.788 40.976-0.446 0-0.889-0.007-1.332-0.019l0.064 0.001c-47.872 1.343-88.773 29.867-107.929 70.632l-0.317 0.752c-5.566 13.342-8.8 28.841-8.8 45.097 0 32.536 12.954 62.046 33.987 83.655l-0.026-0.027c7.488 7.488 12.119 17.831 12.119 29.255 0 22.85-18.524 41.374-41.374 41.374-11.425 0-21.769-4.631-29.255-12.119v0c-20.824-19.383-48.841-31.278-79.638-31.278-63.284 0-114.836 50.233-116.956 113.001l-0.005 0.195c0.003 0.185 0.004 0.403 0.004 0.621 0 22.975-18.138 41.712-40.875 42.674l-0.088 0.003c-22.953-1.57-40.976-20.575-40.976-43.788 0-0.446 0.007-0.889 0.019-1.332l-0.001 0.064c-1.343-47.872-29.867-88.773-70.632-107.929l-0.752-0.317c-13.342-5.566-28.841-8.8-45.097-8.8-32.536 0-62.046 12.954-83.655 33.987l0.027-0.026c-7.488 7.488-17.831 12.119-29.255 12.119-22.85 0-41.374-18.524-41.374-41.374 0-11.425 4.631-21.769 12.119-29.255v0c20.603-21.075 33.316-49.942 33.316-81.777 0-16.537-3.43-32.274-9.617-46.535l0.292 0.757c-17.762-41.82-58.017-70.846-105.181-71.967l-0.14-0.003c-0.185 0.003-0.402 0.004-0.62 0.004-23.297 0-42.297-18.4-43.26-41.461l-0.003-0.088c1.873-23.005 21.005-40.964 44.331-40.964 0.254 0 0.509 0.003 0.761 0.007h-0.038c47.575-0.3 88.582-28.116 107.933-68.322l0.313-0.723c5.676-13.278 8.976-28.727 8.976-44.947 0-32.246-13.042-61.445-34.139-82.611l0.003 0.003c-7.488-7.488-12.119-17.831-12.119-29.255 0-22.85 18.524-41.374 41.374-41.374 11.425 0 21.769 4.631 29.255 12.119v0c21.423 20.481 50.464 33.15 82.462 33.352h0.040zM825.038 320.445v0z" />
+<glyph unicode="&#xe94b;" glyph-name="print" data-tags="print" d="M863.086 170.057h-117.028c-24.237 0-43.886 19.648-43.886 43.886s19.648 43.886 43.886 43.886v0h117.028c40.395 0 73.142 32.747 73.142 73.142v0 234.058c0 40.395-32.747 73.142-73.142 73.142v0h-702.171c-40.395 0-73.142-32.747-73.142-73.142v0-234.058c0-40.395 32.747-73.142 73.142-73.142v0h117.028c24.237 0 43.886-19.648 43.886-43.886s-19.648-43.886-43.886-43.886v0h-117.028c-88.87 0-160.914 72.044-160.914 160.914v0 234.058c0 88.87 72.044 160.914 160.914 160.914v0h702.171c88.87 0 160.914-72.044 160.914-160.914v0-234.058c0-88.87-72.044-160.914-160.914-160.914v0zM746.058 638.172c-24.106 0.325-43.561 19.78-43.886 43.854v190.203h-380.342v-190.172c0-24.237-19.648-43.886-43.886-43.886s-43.886 19.648-43.886 43.886v0 204.8c0 40.395 32.747 73.142 73.142 73.142v0h409.6c40.395 0 73.142-32.747 73.142-73.142v0-204.8c-0.325-24.106-19.78-43.561-43.854-43.886h-0.032zM716.8-64h-409.6c-40.395 0-73.142 32.747-73.142 73.142v0 409.6c0 40.395 32.747 73.142 73.142 73.142v0h409.6c40.395 0 73.142-32.747 73.142-73.142v0-409.6c0-40.395-32.747-73.142-73.142-73.142v0zM321.828 23.772h380.342v380.342h-380.342z" />
+<glyph unicode="&#xe94c;" glyph-name="filter" data-tags="filter" d="M632.463-63.971h-240.928c-24.813 0.335-44.839 20.361-45.174 45.141v466.83l-322.241 440.294c-5.688 7.337-9.117 16.671-9.117 26.808 0 7.369 1.813 14.314 5.016 20.414l-0.116-0.241c7.747 14.706 22.885 24.586 40.34 24.695h903.493c17.471-0.11 32.608-9.989 40.236-24.445l0.12-0.25c3.089-5.86 4.901-12.805 4.901-20.173 0-10.136-3.43-19.471-9.191-26.908l0.075 0.1-322.241-440.294v-466.797c-0.335-24.813-20.361-44.839-45.141-45.174h-0.032zM436.711 26.377h150.58v436.68c0 0.064 0 0.138 0 0.212 0 9.955 3.401 19.116 9.105 26.383l-0.071-0.093 277.067 380.063h-722.782l278.271-380.063c5.634-7.174 9.035-16.335 9.035-26.29 0-0.075 0-0.15 0-0.224v0.011z" />
+<glyph unicode="&#xe94d;" glyph-name="replay" data-tags="replay" d="M512-63.452c-233.911 0.333-423.443 189.864-423.774 423.743v0.032c0 24.211 19.627 43.839 43.839 43.839s43.839-19.627 43.839-43.839v0c0-185.621 150.475-336.097 336.097-336.097s336.097 150.475 336.097 336.097c0 185.621-150.475 336.097-336.097 336.097v0h-146.13c-24.211 0-43.839 19.627-43.839 43.839s19.627 43.839 43.839 43.839v0h146.13c234.044 0 423.774-189.73 423.774-423.774s-189.73-423.774-423.774-423.774v0zM512 521.064c-0.060 0-0.133 0-0.204 0-12.039 0-22.929 4.918-30.771 12.856l-175.359 175.359c-7.921 7.931-12.821 18.884-12.821 30.979s4.899 23.048 12.821 30.98v0l175.355 175.355c8.025 8.595 19.423 13.953 32.074 13.953 24.211 0 43.839-19.627 43.839-43.839 0-12.65-5.358-24.048-13.927-32.049l-0.026-0.023-144.376-144.376 144.376-144.376c7.921-7.931 12.821-18.884 12.821-30.979s-4.899-23.048-12.821-30.98v0c-7.846-7.942-18.736-12.86-30.775-12.86-0.071 0-0.144 0-0.215 0h0.011z" />
+<glyph unicode="&#xe94e;" glyph-name="bookmark" data-tags="bookmark" d="M848.457-64c-9.363 0.189-18.033 2.998-25.352 7.723l0.191-0.115-311.296 217.088-311.296-217.088c-6.501-4.018-14.382-6.4-22.821-6.4s-16.32 2.381-23.010 6.509l0.189-0.108c-13.4 7.013-22.574 20.486-23.401 36.171l-0.004 0.107v819.2c0 88.87 72.044 160.914 160.914 160.914v0h438.857c88.87 0 160.914-72.044 160.914-160.914v0-819.2c0-0.048 0-0.104 0-0.159 0-16.646-9.393-31.099-23.169-38.347l-0.237-0.114c-5.911-3.304-12.965-5.254-20.477-5.266h-0.004zM512 257.828c0.137 0.001 0.3 0.003 0.464 0.003 9.223 0 17.782-2.846 24.846-7.706l-0.148 0.096 267.411-186.075v734.939c0 40.395-32.747 73.142-73.142 73.142v0h-438.857c-40.395 0-73.142-32.747-73.142-73.142v0-734.939l267.411 186.075c6.916 4.764 15.475 7.609 24.698 7.609 0.163 0 0.325-0.001 0.488-0.003h-0.025z" />
+<glyph unicode="&#xe94f;" glyph-name="globe" data-tags="globe" d="M512 960c-282.769 0-512-229.231-512-512s229.231-512 512-512c282.769 0 512 229.231 512 512v0c0 282.769-229.231 512-512 512v0zM936.391 490.667h-157.013c-21.309 143.377-80.98 269.999-168.128 372.54l0.875-1.056c174.421-43.539 304.877-189.937 324.104-369.605l0.163-1.879zM330.524 405.333h362.951c-28.064-140.685-92.065-263.297-182.001-361.829l0.527 0.585c-89.411 97.947-153.411 220.56-180.673 356.452l-0.803 4.792zM330.524 490.667c28.064 140.685 92.065 263.297 182.001 361.829l-0.527-0.585c89.411-97.947 153.411-220.56 180.673-356.452l0.803-4.792zM411.876 862.151c-86.273-101.485-145.944-228.107-166.755-367.427l-0.499-4.057h-157.013c19.389 181.548 149.845 327.945 321.319 370.86l2.948 0.625zM87.609 407.040h157.013c21.309-143.377 80.98-269.999 168.128-372.54l-0.875 1.056c-173.937 43.335-304.18 188.936-324.092 367.845l-0.175 1.933zM612.124 35.556c86.273 101.485 145.944 228.107 166.755 367.427l0.499 4.057h157.013c-18.688-182.253-149.359-329.449-321.317-372.565l-2.949-0.627z" />
+<glyph unicode="&#xe950;" glyph-name="ellipsis-v" data-tags="ellipsis-v" d="M614.393 448c0-56.549-45.842-102.393-102.393-102.393s-102.393 45.842-102.393 102.393c0 56.549 45.842 102.393 102.393 102.393s102.393-45.842 102.393-102.393zM614.393 857.569c0-56.549-45.842-102.393-102.393-102.393s-102.393 45.842-102.393 102.393c0 56.549 45.842 102.393 102.393 102.393s102.393-45.842 102.393-102.393zM614.393 38.431c0-56.549-45.842-102.393-102.393-102.393s-102.393 45.842-102.393 102.393c0 56.549 45.842 102.393 102.393 102.393s102.393-45.842 102.393-102.393z" />
+<glyph unicode="&#xe951;" glyph-name="ellipsis-h" data-tags="ellipsis-h" d="M614.379 448c0-56.54-45.835-102.379-102.379-102.379s-102.379 45.835-102.379 102.379c0 56.54 45.835 102.379 102.379 102.379s102.379-45.835 102.379-102.379zM1023.886 448c0-56.54-45.835-102.379-102.379-102.379s-102.379 45.835-102.379 102.379c0 56.54 45.835 102.379 102.379 102.379s102.379-45.835 102.379-102.379zM204.868 448c0-56.54-45.835-102.379-102.379-102.379s-102.379 45.835-102.379 102.379c0 56.54 45.835 102.379 102.379 102.379s102.379-45.835 102.379-102.379z" />
+<glyph unicode="&#xe952;" glyph-name="calendar-times" data-tags="calendar-times" d="M788.756 849.297h-69.189v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-249.081v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-69.189c-84.066 0-152.216-68.15-152.216-152.216v0-608.864c0-84.066 68.15-152.216 152.216-152.216v0h553.514c84.066 0 152.216 68.15 152.216 152.216v0 608.864c0 84.066-68.15 152.216-152.216 152.216v0zM235.244 766.27h69.189v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h249.081v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h69.189c38.212 0 69.189-30.977 69.189-69.189v0-152.216h-691.891v152.216c0 38.212 30.977 69.189 69.189 69.189v0zM788.756 19.027h-553.514c-38.212 0-69.189 30.977-69.189 69.189v0 373.622h691.891v-373.622c0-38.212-30.977-69.189-69.189-69.189v0zM619.381 333.977c-7.448 7.637-17.839 12.375-29.336 12.375s-21.888-4.738-29.328-12.366l-0.008-0.009-48.71-48.71-48.71 48.71c-7.393 6.903-17.353 11.141-28.301 11.141-22.927 0-41.514-18.586-41.514-41.514 0-10.949 4.238-20.907 11.165-28.325l-0.022 0.025 48.71-48.71-48.71-48.71c-7.637-7.448-12.375-17.839-12.375-29.336s4.738-21.888 12.366-29.328l0.009-0.008c7.171-7.515 17.264-12.187 28.45-12.187 0.311 0 0.623 0.004 0.933 0.010l-0.047-0.001c0.057 0 0.126 0 0.193 0 11.401 0 21.713 4.657 29.139 12.174l48.714 48.714 48.71-48.71c7.43-7.52 17.742-12.178 29.142-12.178 0.067 0 0.136 0 0.204 0h-0.010c0.263-0.006 0.575-0.010 0.886-0.010 11.185 0 21.278 4.673 28.435 12.173l0.014 0.016c7.637 7.448 12.375 17.839 12.375 29.336s-4.738 21.888-12.366 29.328l-0.009 0.008-48.71 48.71 48.71 48.71c7.637 7.448 12.375 17.839 12.375 29.336s-4.738 21.888-12.366 29.328l-0.009 0.008z" />
+<glyph unicode="&#xe953;" glyph-name="calendar-minus" data-tags="calendar-minus" d="M788.756 849.297h-69.189v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-249.081v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-69.189c-84.066 0-152.216-68.15-152.216-152.216v0-608.864c0-84.066 68.15-152.216 152.216-152.216v0h553.514c84.066 0 152.216 68.15 152.216 152.216v0 608.864c0 84.066-68.15 152.216-152.216 152.216v0zM235.244 766.27h69.189v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h249.081v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h69.189c38.212 0 69.189-30.977 69.189-69.189v0-152.216h-691.891v152.216c0 38.212 30.977 69.189 69.189 69.189v0zM788.756 19.027h-553.514c-38.212 0-69.189 30.977-69.189 69.189v0 373.622h691.891v-373.622c0-38.212-30.977-69.189-69.189-69.189v0zM622.702 265.341h-221.406c-22.927 0-41.514-18.586-41.514-41.514s18.586-41.514 41.514-41.514v0h221.406c22.927 0 41.514 18.586 41.514 41.514s-18.586 41.514-41.514 41.514v0z" />
+<glyph unicode="&#xe954;" glyph-name="calendar-plus" data-tags="calendar-plus" d="M788.756 849.297h-69.189v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-249.081v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-69.189c-84.066 0-152.216-68.15-152.216-152.216v0-608.864c0-84.066 68.15-152.216 152.216-152.216v0h553.514c84.066 0 152.216 68.15 152.216 152.216v0 608.864c0 84.066-68.15 152.216-152.216 152.216v0zM235.244 766.27h69.189v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h249.081v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h69.189c38.212 0 69.189-30.977 69.189-69.189v0-152.216h-691.891v152.216c0 38.212 30.977 69.189 69.189 69.189v0zM788.756 19.027h-553.514c-38.212 0-69.189 30.977-69.189 69.189v0 373.622h691.891v-373.622c0-38.212-30.977-69.189-69.189-69.189v0zM622.702 268.108h-69.189v69.189c0 22.927-18.586 41.514-41.514 41.514s-41.514-18.586-41.514-41.514v0-69.189h-69.189c-22.927 0-41.514-18.586-41.514-41.514s18.586-41.514 41.514-41.514v0h69.189v-69.189c0-22.927 18.586-41.514 41.514-41.514s41.514 18.586 41.514 41.514v0 69.189h69.189c22.927 0 41.514 18.586 41.514 41.514s-18.586 41.514-41.514 41.514v0z" />
+<glyph unicode="&#xe955;" glyph-name="clone" data-tags="clone" d="M629.028 170.057h-468.114c-88.87 0-160.914 72.044-160.914 160.914v0 468.114c0 88.87 72.044 160.914 160.914 160.914v0h468.114c88.87 0 160.914-72.044 160.914-160.914v0-468.114c0-88.87-72.044-160.914-160.914-160.914v0zM160.914 872.228c-40.395 0-73.142-32.747-73.142-73.142v0-468.114c0-40.395 32.747-73.142 73.142-73.142v0h468.114c40.395 0 73.142 32.747 73.142 73.142v0 468.114c0 40.395-32.747 73.142-73.142 73.142v0zM863.086-64h-468.114c-88.87 0-160.914 72.044-160.914 160.914v0 117.028h87.771v-117.028c0-40.395 32.747-73.142 73.142-73.142v0h468.114c40.395 0 73.142 32.747 73.142 73.142v0 468.114c0 40.395-32.747 73.142-73.142 73.142v0h-117.028v87.771h117.028c88.87 0 160.914-72.044 160.914-160.914v0-468.114c0-88.87-72.044-160.914-160.914-160.914v0z" />
+<glyph unicode="&#xe956;" glyph-name="download" data-tags="download" d="M875.959-64h-727.917c-82.563 3.472-148.18 71.248-148.18 154.349 0 2.309 0.051 4.607 0.151 6.89l-0.011-0.325v175.543c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-175.543c-0.162-1.762-0.255-3.81-0.255-5.881 0-34.276 25.406-62.617 58.412-67.222l0.357-0.041h729.673c33.364 4.645 58.77 32.987 58.77 67.263 0 2.069-0.093 4.118-0.274 6.141l0.019-0.261v175.543c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-175.543c0.091-1.983 0.143-4.309 0.143-6.646 0-82.485-64.648-149.87-146.039-154.251l-0.389-0.016zM512 228.571c-0.060 0-0.133 0-0.204 0-12.052 0-22.954 4.923-30.804 12.869l-234.062 234.062c-7.297 7.816-11.778 18.344-11.778 29.918 0 24.237 19.648 43.886 43.886 43.886 11.575 0 22.102-4.48 29.944-11.803l-0.026 0.023 203.044-203.044 203.044 203.044c7.816 7.297 18.344 11.778 29.918 11.778 24.237 0 43.886-19.648 43.886-43.886 0-11.575-4.48-22.102-11.803-29.944l0.023 0.026-234.058-234.058c-7.854-7.95-18.756-12.874-30.808-12.874-0.071 0-0.144 0-0.215 0h0.011zM512 228.571c-24.106 0.325-43.561 19.78-43.886 43.854v643.688c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-643.657c-0.325-24.106-19.78-43.561-43.854-43.886h-0.032z" />
+<glyph unicode="&#xe957;" glyph-name="copy" data-tags="copy" d="M907.406 658.043l-290.385 290.385c-7.121 7.13-16.959 11.543-27.829 11.553h-129.703c-79.752 0-144.404-64.652-144.404-144.404v0-65.638h-65.638c-79.752 0-144.404-64.652-144.404-144.404v0-525.108c0-79.752 64.652-144.404 144.404-144.404v0h367.575c79.752 0 144.404 64.652 144.404 144.404v0 65.638h13.128c79.752 0 144.404 64.652 144.404 144.404v0 341.319c-0.443 10.296-4.774 19.502-11.552 26.254l-0.001 0.001zM630.149 825.552l154.382-154.382h-154.382zM682.66 80.425c0-36.251-29.387-65.638-65.638-65.638v0h-367.575c-36.251 0-65.638 29.387-65.638 65.638v0 525.108c0 36.251 29.387 65.638 65.638 65.638v0h65.638v-380.702c0-79.752 64.652-144.404 144.404-144.404v0h223.17zM774.553 224.83h-315.064c-36.251 0-65.638 29.387-65.638 65.638v0 525.108c0 36.251 29.387 65.638 65.638 65.638v0h91.894v-249.426c0.292-21.632 17.751-39.091 39.355-39.383h249.455v-301.936c0-36.251-29.387-65.638-65.638-65.638v0z" />
+<glyph unicode="&#xe958;" glyph-name="file" data-tags="file" d="M894.081 623.535l-323.57 323.57c-7.935 7.944-18.897 12.862-31.009 12.873h-261.55c-88.866 0-160.907-72.041-160.907-160.907v0-702.14c0-88.866 72.041-160.907 160.907-160.907v0h468.093c88.866 0 160.907 72.041 160.907 160.907v0 497.35c-0.494 11.473-5.32 21.731-12.872 29.254l-0.001 0.001zM585.139 810.188l172.024-172.024h-172.024zM746.047 23.791h-468.093c-40.394 0-73.139 32.746-73.139 73.139v0 702.14c0 40.394 32.746 73.139 73.139 73.139v0h219.419v-277.931c0.325-24.105 19.779-43.559 43.852-43.884h277.962v-453.466c0-40.394-32.746-73.139-73.139-73.139v0z" />
+<glyph unicode="&#xe959;" glyph-name="question-circle" data-tags="question-circle" d="M512 960c-282.769 0-512-229.231-512-512s229.231-512 512-512c282.769 0 512 229.231 512 512v0c0 282.769-229.231 512-512 512v0zM512 21.333c-235.641 0-426.667 191.025-426.667 426.667s191.025 426.667 426.667 426.667c235.641 0 426.667-191.025 426.667-426.667v0c0-235.641-191.025-426.667-426.667-426.667v0zM381.156 692.623c-33.393-33.448-54.044-79.627-54.044-130.628 0-0.076 0-0.152 0-0.228v0.012c0-23.564 19.103-42.667 42.667-42.667s42.667 19.103 42.667 42.667v0c-0.001 0.156-0.001 0.341-0.001 0.525 0 27.345 11.088 52.101 29.015 70.016v0c18.327 17.443 43.181 28.173 70.543 28.173s52.216-10.731 70.585-28.213l-0.043 0.040c18.449-18.085 29.885-43.264 29.885-71.115 0-54.983-44.572-99.556-99.556-99.556-0.307 0-0.613 0.001-0.919 0.004h0.047c-23.436-0.316-42.351-19.231-42.667-42.636v-56.92c0-23.564 19.103-42.667 42.667-42.667s42.667 19.103 42.667 42.667v0 19.343c34.751 8.129 64.687 25.311 88.169 48.916l0.008 0.008c33.387 33.532 54.025 79.777 54.025 130.844s-20.64 97.313-54.032 130.851l0.007-0.007c-34.036 32.508-80.253 52.515-131.144 52.515-50.6 0-96.58-19.779-130.632-52.028l0.087 0.081zM583.111 206.223c0-39.273-31.837-71.111-71.111-71.111s-71.111 31.837-71.111 71.111c0 39.273 31.837 71.111 71.111 71.111s71.111-31.837 71.111-71.111z" />
+<glyph unicode="&#xe95a;" glyph-name="question" data-tags="question" d="M750.032 861.486c-60.88 61-145.050 98.738-238.034 98.738-185.726 0-336.287-150.56-336.287-336.287 0-0.17 0-0.34 0-0.511v0.026c0-24.225 19.639-43.864 43.864-43.864s43.864 19.639 43.864 43.864v0c0 0.174 0 0.378 0 0.584 0 137.598 111.546 249.145 249.145 249.145s249.145-111.546 249.145-249.145c0-137.598-111.546-249.145-249.145-249.145-0.206 0-0.411 0-0.617 0.001h0.032c-24.093-0.325-43.539-19.77-43.864-43.832v-117c0-24.225 19.639-43.864 43.864-43.864s43.864 19.639 43.864 43.864v0 76.031c165.808 22.845 292.141 163.614 292.141 333.889 0 92.678-37.425 176.615-97.988 237.522l0.016-0.016zM585.105 9.365c0-40.375-32.73-73.105-73.105-73.105s-73.105 32.73-73.105 73.105c0 40.375 32.73 73.105 73.105 73.105s73.105-32.73 73.105-73.105z" />
+<glyph unicode="&#xe95b;" glyph-name="save" data-tags="save" d="M804.571-64h-585.143c-88.87 0-160.914 72.044-160.914 160.914v0 702.171c0 88.87 72.044 160.914 160.914 160.914v0h438.857c12.114-0.011 23.078-4.929 31.012-12.872v0l263.314-265.070c7.945-7.935 12.863-18.898 12.874-31.011v-554.133c0-88.87-72.044-160.914-160.914-160.914v0zM219.429 872.228c-40.395 0-73.142-32.747-73.142-73.142v0-702.171c0-40.395 32.747-73.142 73.142-73.142v0h585.143c40.395 0 73.142 32.747 73.142 73.142v0 537.747l-237.568 237.568zM789.943-20.114h-87.771v365.715h-380.342v-365.715h-87.771v380.342c0 40.395 32.747 73.142 73.142 73.142v0h409.6c40.395 0 73.142-32.747 73.142-73.142v0zM539.501 638.172h-230.547c-41.436 0.331-74.901 33.998-74.901 75.481 0 0.207 0.001 0.413 0.003 0.619v-0.032 201.874h87.771v-190.172h204.8v190.172h87.771v-201.874c0.001-0.174 0.003-0.381 0.003-0.587 0-41.483-33.464-75.152-74.869-75.481h-0.032z" />
+<glyph unicode="&#xe95c;" glyph-name="power-off" data-tags="power-off" d="M512-64.445c-282.822 0.256-511.994 229.587-511.994 512.445 0 141.396 57.267 269.417 149.871 362.133l-0.005-0.005c7.661 7.856 18.351 12.73 30.177 12.73s22.516-4.874 30.169-12.72l0.008-0.009c7.716-7.725 12.49-18.395 12.49-30.177s-4.772-22.451-12.49-30.178v0c-83.727-78.173-135.917-189.204-135.917-312.426 0-235.846 191.191-427.037 427.037-427.037 123.22 0 234.253 52.189 312.196 135.668l0.23 0.248c77.442 77.134 125.361 183.857 125.361 301.773s-47.919 224.639-125.347 301.759l-0.015 0.015c-7.716 7.725-12.49 18.395-12.49 30.177s4.772 22.451 12.49 30.178v0c7.661 7.856 18.351 12.73 30.177 12.73s22.516-4.874 30.169-12.72l0.008-0.009c92.6-92.711 149.866-220.732 149.866-362.128 0-282.858-229.172-512.187-511.97-512.445h-0.024zM512 405.296c-23.456 0.316-42.387 19.247-42.704 42.673v455.537c0 23.584 19.119 42.704 42.704 42.704s42.704-19.119 42.704-42.704v0-455.506c-0.316-23.456-19.247-42.387-42.673-42.704h-0.031z" />
+<glyph unicode="&#xe95d;" glyph-name="tags" data-tags="tags" d="M988.279 537.269l-315.069 315.069c-7.121 7.13-16.96 11.543-27.829 11.553h-605.984c-21.633-0.292-39.092-17.751-39.384-39.355v-413.818c0.010-10.871 4.423-20.711 11.552-27.831v0l315.069-315.069c21.969-22.060 52.368-35.71 85.955-35.71 0.242 0 0.485 0.001 0.727 0.002h-0.037c33.615 0.138 64.023 13.751 86.126 35.714l12.597 12.597c2.288-4.6 4.911-8.566 7.951-12.167l-0.074 0.090c22.127-22.061 52.662-35.701 86.382-35.701s64.253 13.64 86.384 35.705l-0.002-0.002 296.69 297.214c21.438 22.017 34.66 52.125 34.66 85.323 0 33.723-13.644 64.26-35.712 86.393l0.002-0.002zM443.735 124.005c-7.756-8.088-18.651-13.115-30.719-13.115s-22.963 5.026-30.704 13.1l-0.015 0.015-303.516 302.991v358.128h358.128l303.516-303.516c7.827-7.877 12.667-18.733 12.667-30.719s-4.838-22.842-12.668-30.722l0.002 0.002zM932.091 420.694l-296.69-296.69c-7.819-7.955-18.692-12.886-30.719-12.886s-22.9 4.93-30.713 12.88l-0.006 0.006c-2.444 3.674-5.612 6.673-9.319 8.855l-0.133 0.073 233.151 233.676c21.906 22.102 35.44 52.529 35.44 86.118s-13.536 64.018-35.45 86.128l0.009-0.009-249.43 246.279h80.868l302.991-303.516c7.798-7.793 12.621-18.562 12.621-30.457s-4.823-22.664-12.621-30.457v0zM315.082 631.79c0-36.251-29.388-65.639-65.639-65.639s-65.639 29.388-65.639 65.639c0 36.251 29.388 65.639 65.639 65.639s65.639-29.388 65.639-65.639z" />
+<glyph unicode="&#xe95e;" glyph-name="tag" data-tags="tag" d="M981.076 530.024l-415.247 415.247c-8.517 9.174-20.525 15.007-33.897 15.378l-0.066 0.002h-483.174c-0.192 0.003-0.419 0.005-0.646 0.005-26.898 0-48.702-21.805-48.702-48.702 0-0.227 0.002-0.454 0.005-0.679v0.035-483.174c0.123-13.451 5.473-25.629 14.113-34.62l-0.017 0.017 415.247-414.606c26.189-26.091 62.316-42.222 102.209-42.222s76.022 16.13 102.214 42.226l346.676 346.676c26.476 26.252 42.867 62.639 42.867 102.854 0 39.577-15.875 75.445-41.604 101.586l0.018-0.020zM913.149 393.53l-346.681-346.681c-8.864-8.573-20.958-13.855-34.284-13.855s-25.418 5.282-34.298 13.869l-401.135 401.135v415.247h415.247l401.149-401.149c8.573-8.864 13.855-20.958 13.855-34.284s-5.282-25.418-13.869-34.298l0.014 0.014zM367.817 672.284c0-44.239-35.863-80.101-80.101-80.101s-80.101 35.863-80.101 80.101c0 44.239 35.863 80.101 80.101 80.101s80.101-35.863 80.101-80.101z" />
+<glyph unicode="&#xe95f;" glyph-name="lock" data-tags="lock" d="M804.555 550.395h-14.628v131.65c0 153.495-124.432 277.928-277.928 277.928s-277.928-124.432-277.928-277.928v0-131.65h-14.628c-88.865 0-160.905-72.040-160.905-160.905v0-292.555c0-88.865 72.040-160.905 160.905-160.905v0h585.111c88.865 0 160.905 72.040 160.905 160.905v0 292.555c0 88.865-72.040 160.905-160.905 160.905v0zM321.839 682.045c0 105.022 85.138 190.161 190.161 190.161s190.161-85.138 190.161-190.161v0-131.65h-380.321zM877.694 96.934c0-40.393-32.745-73.138-73.138-73.138v0h-585.111c-40.393 0-73.138 32.745-73.138 73.138v0 292.555c0 40.393 32.745 73.138 73.138 73.138v0h585.111c40.393 0 73.138-32.745 73.138-73.138v0z" />
+<glyph unicode="&#xe960;" glyph-name="unlock" data-tags="unlock" d="M804.555 550.395h-482.716v131.65c0 105.022 85.138 190.161 190.161 190.161s190.161-85.138 190.161-190.161v0c0-24.236 19.647-43.883 43.883-43.883s43.883 19.647 43.883 43.883v0c0 153.495-124.432 277.928-277.928 277.928s-277.928-124.432-277.928-277.928v0-131.65h-14.628c-88.865 0-160.905-72.040-160.905-160.905v0-292.555c0-88.865 72.040-160.905 160.905-160.905v0h585.111c88.865 0 160.905 72.040 160.905 160.905v0 292.555c0 88.865-72.040 160.905-160.905 160.905v0zM877.694 96.934c0-40.393-32.745-73.138-73.138-73.138v0h-585.111c-40.393 0-73.138 32.745-73.138 73.138v0 292.555c0 40.393 32.745 73.138 73.138 73.138v0h585.111c40.393 0 73.138-32.745 73.138-73.138v0z" />
+<glyph unicode="&#xe961;" glyph-name="inbox" data-tags="inbox" d="M862.966-19.954h-701.931c-88.84 0-160.859 72.019-160.859 160.859v0 350.966c0 24.229 19.642 43.871 43.871 43.871s43.871-19.642 43.871-43.871v0-350.966c-0.014-0.522-0.021-1.138-0.021-1.755 0-40.382 32.736-73.117 73.117-73.117 0.007 0 0.015 0 0.022 0h701.93c40.382 0 73.117 32.736 73.117 73.117v0 350.966c0 24.229 19.642 43.871 43.871 43.871s43.871-19.642 43.871-43.871v0-350.966c-0.991-88.083-72.627-159.104-160.849-159.104-0.004 0-0.007 0-0.011 0h0.001zM512 257.893c-0.038 0-0.085 0-0.13 0-110.716 0-202.222 82.245-216.757 188.973l-0.126 1.134h-250.94c-0.097-0.001-0.211-0.001-0.326-0.001-24.229 0-43.871 19.642-43.871 43.871 0 8.677 2.52 16.767 6.867 23.575l-0.106-0.177 218.184 350.966c17.362 29.96 49.275 49.789 85.818 49.789 1.293 0 2.582-0.025 3.862-0.074l-0.185 0.005h395.422c40.382-0.115 75.22-23.729 91.572-57.882l0.265-0.613 215.844-347.456c2.498-5.344 3.955-11.604 3.955-18.204 0-23.357-18.253-42.45-41.273-43.795l-0.119-0.005h-250.94c-14.66-107.862-106.167-190.107-216.883-190.107-0.047 0-0.092 0-0.138 0h0.007zM123.014 533.987h213.504c24.229 0 43.871-19.642 43.871-43.871v0-12.869c0-72.687 58.925-131.612 131.612-131.612s131.612 58.925 131.612 131.612v0 12.869c0 24.229 19.642 43.871 43.871 43.871v0h213.504l-175.483 284.282c-4.679 8.189-9.36 11.698-15.208 11.698h-396.006c-5.783-0.148-10.777-3.381-13.412-8.109l-0.041-0.081z" />
+<glyph unicode="&#xe962;" glyph-name="video" data-tags="video" d="M570.515 53.029h-409.6c-88.87 0-160.914 72.044-160.914 160.914v0 468.114c0 88.87 72.044 160.914 160.914 160.914v0h409.6c88.87 0 160.914-72.044 160.914-160.914v0-468.114c0-88.87-72.044-160.914-160.914-160.914v0zM160.914 755.2c-40.395 0-73.142-32.747-73.142-73.142v0-468.114c0-40.395 32.747-73.142 73.142-73.142v0h409.6c40.395 0 73.142 32.747 73.142 73.142v0 468.114c0 40.395-32.747 73.142-73.142 73.142v0zM980.114 170.057c-8.437 0.136-16.291 2.51-23.030 6.553l0.21-0.117-292.571 175.543c-12.706 7.831-21.051 21.663-21.065 37.447v117.029c0.014 15.785 8.359 29.619 20.876 37.34l0.189 0.108 292.571 175.543c6.348 3.861 14.026 6.145 22.235 6.145s15.887-2.285 22.428-6.254l-0.192 0.108c13.334-7.666 22.183-21.811 22.235-38.027v-468.122c-0.053-16.223-8.901-30.368-22.022-37.921l-0.213-0.112c-5.841-3.327-12.834-5.288-20.285-5.288-0.48 0-0.959 0.008-1.435 0.025l0.069-0.001zM731.429 414.061l204.8-122.88v313.636l-204.8-122.88z" />
+<glyph unicode="&#xe963;" glyph-name="folder" data-tags="folder" d="M853.323-1.925h-682.645c-94.253 0-170.661 76.408-170.661 170.661v0 558.528c0 94.253 76.408 170.661 170.661 170.661v0h155.147c0.039 0 0.084 0 0.131 0 13.934 0 26.476-5.965 35.211-15.48l0.032-0.035 171.903-201.070h320.223c0 0 0 0 0.001 0 94.253 0 170.661-76.408 170.661-170.661 0-0.218 0-0.436-0.001-0.655v0.033-341.323c0-94.253-76.408-170.661-170.661-170.661v0zM170.677 804.837c-42.842 0-77.573-34.731-77.573-77.573v0-558.528c0-42.842 34.731-77.573 77.573-77.573v0h682.645c42.842 0 77.573 34.731 77.573 77.573v0 341.323c0 42.842-34.731 77.573-77.573 77.573v0h-341.323c-14.071 0.131-26.67 6.321-35.33 16.085l-0.044 0.049-171.903 201.070z" />
+<glyph unicode="&#xe964;" glyph-name="folder-open" data-tags="folder-open" d="M82.761 87.994h-83.078v609.242c-0.010 0.662-0.017 1.442-0.017 2.225 0 82.317 66.265 149.157 148.363 150.085l0.088 0.001h133.48c0.27 0.006 0.588 0.010 0.906 0.010 12.364 0 23.485-5.331 31.186-13.821l0.031-0.035 147.88-178.895h271.943c0.175 0.001 0.383 0.001 0.591 0.001 82.895 0 150.096-67.2 150.096-150.096 0-1.168-0.013-2.335-0.040-3.497l0.003 0.173v-27.692h-83.078v27.692c0.013 0.495 0.021 1.077 0.021 1.662 0 37.318-30.252 67.57-67.57 67.57-0.008 0-0.014 0-0.022 0h-291.881c-12.686 0.029-24.015 5.815-31.514 14.885l-0.056 0.069-147.88 178.895h-114.094c-36.362-1.219-65.376-30.988-65.376-67.535 0-0.597 0.008-1.192 0.023-1.785l-0.001 0.088zM795.574 46.454h-754.353c-14.913 0.126-27.961 7.987-35.343 19.762l-0.103 0.177c-3.401 5.891-5.407 12.958-5.407 20.493s2.007 14.601 5.513 20.694l-0.106-0.201 187.203 360.006c7.347 13.219 21.185 22.042 37.092 22.155h752.707c14.913-0.126 27.961-7.987 35.343-19.762l0.103-0.177c3.401-5.891 5.407-12.958 5.407-20.493s-2.007-14.601-5.513-20.694l0.106 0.201-187.203-360.006c-7.071-12.759-20.17-21.423-35.35-22.151l-0.097-0.004zM109.346 129.533h661.305l144.002 276.928h-661.305z" />
+<glyph unicode="&#xe965;" glyph-name="eye-slash" data-tags="eye-slash" d="M1020.3 465.548c-7.019 15.208-167.289 377.277-508.3 377.277-0.14 0-0.306 0-0.472 0-34.241 0-67.586-3.836-99.63-11.102l3.004 0.573c-18.045-5.713-30.896-22.309-30.896-41.908 0-24.228 19.641-43.869 43.869-43.869 2.026 0 4.020 0.137 5.972 0.403l-0.228-0.025c23.536 5.148 50.592 8.127 78.334 8.188h0.045c244.499 0 384.881-239.819 419.391-307.086-23.064-44.686-47.534-82.99-75.058-118.824l1.357 1.84c-5.75-7.348-9.221-16.722-9.221-26.907 0-24.18 19.562-43.79 43.724-43.869h0.007c13.993 0.045 26.437 6.635 34.437 16.866l0.073 0.096c34.924 43.997 66.128 93.737 91.55 146.775l2.039 4.721c2.455 5.422 3.887 11.757 3.887 18.425s-1.431 13.003-4.002 18.713l0.117-0.288zM192.045 829.956c-7.813 7.295-18.337 11.773-29.907 11.773-24.228 0-43.869-19.641-43.869-43.869 0-11.571 4.479-22.094 11.798-29.933l-0.023 0.026 53.813-53.813c-74.699-68.875-135.393-151.659-178.181-244.402l-1.975-4.776c-2.203-5.093-3.485-11.025-3.485-17.256s1.282-12.161 3.596-17.545l-0.111 0.289c7.019-15.208 167.289-377.277 508.3-377.277 0.681-0.004 1.487-0.005 2.294-0.005 94.711 0 182.793 28.386 256.201 77.116l-1.714-1.069 63.172-63.172c7.936-7.927 18.897-12.83 31.001-12.83s23.064 4.902 31.002 12.83v0c7.927 7.936 12.83 18.897 12.83 31.001s-4.902 23.064-12.83 31.002v0zM416.073 479.001l129.268-129.853c-9.942-3.409-21.397-5.378-33.312-5.378-28.107 0-53.656 10.952-72.612 28.824l0.052-0.049c-18.724 18.468-30.323 44.118-30.323 72.478 0 13.277 2.543 25.962 7.167 37.592l-0.241-0.688zM512 140.914c-245.083 0-384.881 240.404-419.391 307.086 39.962 79.399 91.284 146.975 152.768 203.701l0.481 0.439 104.701-104.701c-17.797-28.341-28.353-62.795-28.353-99.714 0-104.667 84.849-189.516 189.516-189.516 36.919 0 71.373 10.557 100.508 28.817l-0.792-0.463 94.173-94.173c-54.756-32.362-120.666-51.482-191.042-51.482-0.903 0-1.805 0.003-2.708 0.010l0.138-0.001z" />
+<glyph unicode="&#xe966;" glyph-name="eye" data-tags="eye" d="M512 53.029c-341.139 0-501.467 362.204-508.489 377.417-2.22 5.185-3.511 11.22-3.511 17.554s1.291 12.369 3.623 17.853l-0.112-0.299c7.022 15.213 167.351 377.417 508.489 377.417s501.467-362.204 508.489-377.417c2.22-5.185 3.511-11.22 3.511-17.554s-1.291-12.369-3.623-17.853l0.112 0.299c-7.022-15.213-167.351-377.417-508.489-377.417zM92.453 448c34.523-67.292 175.543-307.2 419.547-307.2s385.024 239.908 419.547 307.2c-34.523 67.292-175.543 307.2-419.547 307.2s-385.024-239.908-419.547-307.2zM512 257.828c-105.028 0-190.172 85.142-190.172 190.172s85.142 190.172 190.172 190.172c105.028 0 190.172-85.142 190.172-190.172v0c-0.332-104.895-85.277-189.84-190.139-190.172h-0.032zM512 550.4c-56.554 0-102.4-45.845-102.4-102.4s45.845-102.4 102.4-102.4c56.554 0 102.4 45.845 102.4 102.4v0c-0.331 56.421-45.979 102.070-102.369 102.4h-0.032z" />
+<glyph unicode="&#xe967;" glyph-name="list" data-tags="list" d="M967.082 399.241h-715.127c-26.929 0-48.759 21.83-48.759 48.759s21.83 48.759 48.759 48.759v0h715.127c26.929 0 48.759-21.83 48.759-48.759s-21.83-48.759-48.759-48.759v0zM967.082 691.793h-715.127c-26.929 0-48.759 21.83-48.759 48.759s21.83 48.759 48.759 48.759v0h715.127c26.929 0 48.759-21.83 48.759-48.759s-21.83-48.759-48.759-48.759v0zM967.082 106.689h-715.127c-26.929 0-48.759 21.83-48.759 48.759s21.83 48.759 48.759 48.759v0h715.127c26.929 0 48.759-21.83 48.759-48.759s-21.83-48.759-48.759-48.759v0zM56.918 675.54c-0.236-0.003-0.517-0.005-0.797-0.005-8.607 0-16.825 1.673-24.344 4.711l0.436-0.155c-8.191 4.021-15.246 8.79-21.551 14.388l0.098-0.085c-11.653 11.746-18.854 27.923-18.854 45.783 0 0.133 0 0.264 0.002 0.396v-0.020c0.258 17.936 7.392 34.155 18.879 46.185l-0.024-0.026c5.935 5.857 13.086 10.5 21.038 13.514l0.416 0.139c7.303 3.084 15.795 4.877 24.704 4.877s17.401-1.792 25.134-5.036l-0.428 0.16c8.326-3.279 15.455-7.903 21.477-13.674l-0.023 0.021c11.461-12.002 18.595-28.224 18.853-46.107v-0.050c0-0.111 0.002-0.244 0.002-0.376 0-17.859-7.201-34.037-18.859-45.786l0.005 0.005c-6.208-5.511-13.262-10.282-20.899-14.055l-0.555-0.248c-7.082-2.883-15.3-4.556-23.909-4.556-0.28 0-0.559 0.002-0.84 0.005h0.043zM56.918 382.988c-8.949 0.111-17.424 2.014-25.124 5.363l0.419-0.163c-8.262 3.501-15.357 8.097-21.513 13.706l0.059-0.053c-11.653 11.746-18.854 27.923-18.854 45.783 0 0.133 0 0.264 0.002 0.396v-0.020c0.258 17.936 7.392 34.155 18.879 46.185l-0.024-0.026c6.096 5.555 13.192 10.151 20.966 13.467l0.488 0.186c8.019 3.808 17.424 6.032 27.348 6.032 3.658 0 7.245-0.302 10.739-0.882l-0.379 0.052 11.702-3.901 11.702-5.851c3.642-2.58 6.822-5.141 9.837-7.878l-0.085 0.076c11.672-12.226 18.854-28.826 18.854-47.102 0-0.125 0-0.251-0.002-0.376v0.020c0-35.905-29.107-65.012-65.012-65.012v0zM56.918 90.436c-0.236-0.003-0.517-0.005-0.797-0.005-8.607 0-16.825 1.673-24.344 4.711l0.436-0.155c-8.191 4.021-15.246 8.79-21.551 14.388l0.098-0.085c-5.555 6.096-10.151 13.192-13.467 20.966l-0.186 0.488c-3.296 7.27-5.216 15.763-5.216 24.704s1.92 17.436 5.371 25.089l-0.155-0.385c3.501 8.262 8.097 15.357 13.706 21.513l-0.053-0.059c11.733 11.582 27.863 18.736 45.663 18.736 9.098 0 17.76-1.87 25.624-5.245l-0.424 0.162c8.326-3.279 15.455-7.903 21.477-13.674l-0.023 0.021c5.555-6.096 10.151-13.192 13.467-20.966l0.186-0.488c3.296-7.27 5.216-15.763 5.216-24.704s-1.92-17.436-5.371-25.089l0.155 0.385c-3.501-8.262-8.097-15.357-13.706-21.513l0.053 0.059c-11.746-11.653-27.923-18.854-45.783-18.854-0.133 0-0.264 0-0.396 0.002h0.020z" />
+<glyph unicode="&#xe968;" glyph-name="map-marker" data-tags="map-marker" d="M512-62.599c-0.113-0.001-0.245-0.001-0.378-0.001-8.356 0-16.084 2.691-22.364 7.254l0.11-0.076c-16.56 10.488-405.166 271.583-405.166 588.982 0 236.266 191.533 427.799 427.799 427.799s427.799-191.533 427.799-427.799v0c0-317.399-386.399-578.495-405.166-588.982-6.17-4.487-13.897-7.178-22.254-7.178-0.133 0-0.265 0.001-0.397 0.003h0.021zM512 875.799c-0.329 0.001-0.718 0.001-1.107 0.001-189.346 0-342.951-153.026-343.891-342.151v-0.089c0-232.392 264.407-444.91 344.999-503.975 80.591 59.063 344.999 271.583 344.999 503.975-0.939 189.216-154.544 342.241-343.891 342.241-0.389 0-0.779-0.001-1.168-0.003h0.061zM512 406.6c-83.836 0-151.799 67.963-151.799 151.799s67.963 151.799 151.799 151.799c83.836 0 151.799-67.963 151.799-151.799v0c0-83.836-67.963-151.799-151.799-151.799v0zM512 627.4c-38.107 0-68.999-30.892-68.999-68.999s30.892-68.999 68.999-68.999c38.107 0 68.999 30.892 68.999 68.999v0c0 38.107-30.892 68.999-68.999 68.999v0z" />
+<glyph unicode="&#xe969;" glyph-name="table" data-tags="table" d="M863.086 901.486h-702.171c-88.87 0-160.914-72.044-160.914-160.914v0-585.143c0-88.87 72.044-160.914 160.914-160.914v0h702.171c88.87 0 160.914 72.044 160.914 160.914v0 585.143c0 88.87-72.044 160.914-160.914 160.914v0zM936.228 740.571v-248.685h-380.342v321.829h307.2c40.395 0 73.142-32.747 73.142-73.142v0zM160.914 813.715h307.2v-321.829h-380.342v248.685c0 40.395 32.747 73.142 73.142 73.142v0zM87.772 155.429v248.685h380.342v-321.829h-307.2c-40.395 0-73.142 32.747-73.142 73.142v0zM863.086 82.285h-307.2v321.829h380.342v-248.685c0-40.395-32.747-73.142-73.142-73.142v0z" />
+<glyph unicode="&#xe96a;" glyph-name="lock-open" data-tags="lock-open" d="M746.049 959.981c-153.498 0-277.933-124.435-277.933-277.933v0-131.652h-307.189c-88.867 0-160.908-72.041-160.908-160.908v0-292.56c0-88.867 72.041-160.908 160.908-160.908v0h409.585c88.867 0 160.908 72.041 160.908 160.908v0 292.56c0 88.867-72.041 160.908-160.908 160.908v0h-14.628v131.652c0 105.024 85.139 190.165 190.165 190.165s190.165-85.139 190.165-190.165v0c0-24.236 19.648-43.884 43.884-43.884s43.884 19.648 43.884 43.884v0c0 153.498-124.435 277.933-277.933 277.933v0zM643.652 389.487v-292.56c0-40.394-32.746-73.14-73.14-73.14v0h-409.585c-40.394 0-73.14 32.746-73.14 73.14v0 292.56c0 40.394 32.746 73.14 73.14 73.14v0h409.585c40.394 0 73.14-32.746 73.14-73.14v0z" />
+<glyph unicode="&#xe96b;" glyph-name="dollar" data-tags="dollar" d="M512-63.977c-24.105 0.325-43.559 19.779-43.884 43.852v936.219c0 24.236 19.648 43.884 43.884 43.884s43.884-19.648 43.884-43.884v0-936.187c-0.325-24.105-19.779-43.559-43.852-43.884h-0.032zM599.768 53.046h-380.325c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h380.325c3.954-0.373 8.548-0.587 13.193-0.587 76.308 0 139.186 57.511 147.651 131.554l0.063 0.684c-8.529 74.727-71.406 132.238-147.714 132.238-4.645 0-9.24-0.213-13.775-0.629l0.583 0.044h-175.535c-4.502-0.309-9.759-0.484-15.056-0.484-124.284 0-225.944 96.875-233.585 219.234l-0.033 0.671c7.676 123.029 109.334 219.903 233.619 219.903 5.298 0 10.553-0.176 15.762-0.522l-0.706 0.037h321.815c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0h-321.815c-3.954 0.373-8.548 0.587-13.193 0.587-76.308 0-139.186-57.511-147.651-131.554l-0.063-0.684c8.529-74.727 71.406-132.238 147.714-132.238 4.645 0 9.24 0.213 13.775 0.629l-0.583-0.044h175.535c4.502 0.309 9.759 0.484 15.056 0.484 124.284 0 225.944-96.875 233.585-219.234l0.033-0.671c-7.676-123.029-109.334-219.903-233.619-219.903-5.298 0-10.553 0.176-15.762 0.522l0.706-0.037z" />
+<glyph unicode="&#xe96c;" glyph-name="camera" data-tags="camera" d="M863.086 23.772h-702.171c-88.87 0-160.914 72.044-160.914 160.914v0 351.086c0 88.87 72.044 160.914 160.914 160.914v0h35.109l69.047 102.4c29.412 43.303 78.425 71.379 133.997 71.387h225.866c55.573-0.008 104.587-28.085 133.636-70.825l0.361-0.562 69.047-102.4h35.109c88.87 0 160.914-72.044 160.914-160.914v0-351.086c0-88.87-72.044-160.914-160.914-160.914v0zM160.914 608.914c-40.395 0-73.142-32.747-73.142-73.142v0-351.086c0-40.395 32.747-73.142 73.142-73.142v0h702.171c40.395 0 73.142 32.747 73.142 73.142v0 351.086c0 40.395-32.747 73.142-73.142 73.142v0h-58.515c-15.035 0.029-28.294 7.614-36.181 19.159l-0.097 0.151-80.75 123.466c-12.764 19.278-34.075 32.011-58.402 32.765l-0.111 0.003h-229.961c-24.44-0.758-45.751-13.489-58.346-32.499l-0.167-0.269-84.846-123.466c-7.986-11.696-21.243-19.281-36.274-19.31h-0.004zM512 199.315c-105.028 0-190.172 85.142-190.172 190.172s85.142 190.172 190.172 190.172c105.028 0 190.172-85.142 190.172-190.172v0c-0.332-104.895-85.277-189.84-190.139-190.172h-0.032zM512 491.886c-56.554 0-102.4-45.845-102.4-102.4s45.845-102.4 102.4-102.4c56.554 0 102.4 45.845 102.4 102.4v0c-0.331 56.421-45.979 102.070-102.369 102.4h-0.032z" />
+<glyph unicode="&#xe96d;" glyph-name="chart-bar" data-tags="chart-bar" d="M46.545-64c-25.567 0.345-46.201 20.979-46.545 46.512v930.943c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-930.909c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033zM977.455-64h-930.909c-25.706 0-46.545 20.839-46.545 46.545s20.839 46.545 46.545 46.545v0h930.909c25.706 0 46.545-20.839 46.545-46.545s-20.839-46.545-46.545-46.545v0zM263.757 153.212c-25.567 0.345-46.201 20.979-46.545 46.512v248.276c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-248.243c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033zM480.97 153.212c-25.567 0.345-46.201 20.979-46.545 46.512v496.518c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-496.484c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033zM698.182 153.212c-25.567 0.345-46.201 20.979-46.545 46.512v248.276c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-248.243c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033zM915.393 153.212c-25.567 0.345-46.201 20.979-46.545 46.512v496.518c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-496.484c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033z" />
+<glyph unicode="&#xe96e;" glyph-name="sitemap" data-tags="sitemap" d="M590.766 566.149h-157.532c-50.632 0.297-91.598 41.261-91.894 91.866v157.56c0.297 50.632 41.261 91.598 91.866 91.894h157.56c50.632-0.297 91.598-41.261 91.894-91.866v-157.56c-0.297-50.632-41.261-91.598-91.866-91.894h-0.028zM433.234 828.702c-7.25 0-13.128-5.878-13.128-13.128v0-157.532c0-7.25 5.878-13.128 13.128-13.128v0h157.532c7.25 0 13.128 5.878 13.128 13.128v0 157.532c0 7.25-5.878 13.128-13.128 13.128v0zM196.936 41.042h-105.021c-50.632 0.297-91.598 41.261-91.894 91.866v105.049c0.297 50.632 41.261 91.598 91.866 91.894h105.049c50.632-0.297 91.598-41.261 91.894-91.866v-105.049c-0.297-50.632-41.261-91.598-91.866-91.894h-0.028zM91.915 251.085c-7.25 0-13.128-5.878-13.128-13.128v0-105.021c0-7.25 5.878-13.128 13.128-13.128v0h105.021c7.25 0 13.128 5.878 13.128 13.128v0 105.021c0 7.25-5.878 13.128-13.128 13.128v0zM564.511 41.042h-105.021c-50.632 0.297-91.598 41.261-91.894 91.866v105.049c0.297 50.632 41.261 91.598 91.866 91.894h105.049c50.632-0.297 91.598-41.261 91.894-91.866v-105.049c-0.297-50.632-41.261-91.598-91.866-91.894h-0.028zM459.489 251.085c-7.25 0-13.128-5.878-13.128-13.128v0-105.021c0-7.25 5.878-13.128 13.128-13.128v0h105.021c7.25 0 13.128 5.878 13.128 13.128v0 105.021c0 7.25-5.878 13.128-13.128 13.128v0zM932.085 41.042h-105.021c-50.632 0.297-91.598 41.261-91.894 91.866v105.049c0.297 50.632 41.261 91.598 91.866 91.894h105.049c50.632-0.297 91.598-41.261 91.894-91.866v-105.049c-0.297-50.632-41.261-91.598-91.866-91.894h-0.028zM827.064 251.085c-7.25 0-13.128-5.878-13.128-13.128v0-105.021c0-7.25 5.878-13.128 13.128-13.128v0h105.021c7.25 0 13.128 5.878 13.128 13.128v0 105.021c0 7.25-5.878 13.128-13.128 13.128v0zM879.575 251.085c-21.632 0.292-39.091 17.751-39.383 39.355v105.049c0 7.25-5.878 13.128-13.128 13.128v0h-630.129c-7.25 0-13.128-5.878-13.128-13.128v0-105.021c0-21.751-17.633-39.383-39.383-39.383s-39.383 17.633-39.383 39.383v0 105.021c0.297 50.632 41.261 91.598 91.866 91.894h630.157c50.632-0.297 91.598-41.261 91.894-91.866v-105.049c-0.292-21.632-17.751-39.091-39.355-39.383h-0.028zM512 251.085c-21.632 0.292-39.091 17.751-39.383 39.355v315.093c0 21.751 17.633 39.383 39.383 39.383s39.383-17.633 39.383-39.383v0-315.064c-0.292-21.632-17.751-39.091-39.355-39.383h-0.028z" />
+<glyph unicode="&#xe96f;" glyph-name="wifi" data-tags="wifi" d="M823.892 401.945c-0.046 0-0.1 0-0.154 0-10.973 0-20.961 4.21-28.44 11.103l0.029-0.026c-74.352 66.801-173.194 107.653-281.576 107.653s-207.224-40.851-281.966-107.996l0.389 0.344c-7.699-6.911-17.932-11.137-29.152-11.137-12.958 0-24.6 5.638-32.606 14.593l-0.037 0.042c-6.617 7.695-10.645 17.782-10.645 28.809 0 13.081 5.67 24.84 14.685 32.949l0.041 0.036c89.475 80.776 208.611 130.198 339.291 130.198s249.814-49.422 339.736-130.594l-0.445 0.396c9.056-8.146 14.726-19.904 14.726-32.986 0-11.028-4.029-21.114-10.694-28.868l0.049 0.059c-8.339-8.889-20.122-14.46-33.209-14.575h-0.020zM978.379 564.594c-11.486 0.060-21.927 4.48-29.763 11.688l0.031-0.029c-113.494 108.335-267.577 175.003-437.231 175.003s-323.736-66.669-437.478-175.238l0.247 0.234c-8.074-9.555-20.065-15.58-33.462-15.58-24.147 0-43.723 19.576-43.723 43.723 0 14.862 7.414 27.991 18.746 35.891l0.142 0.094c128.857 122.252 303.412 197.437 495.528 197.437s366.671-75.186 495.847-197.738l-0.318 0.301c8.63-8.010 14.013-19.416 14.013-32.079 0-23.746-18.928-43.070-42.521-43.707l-0.059-0.001zM359.26 235.797c-14.255 0-26.917 6.822-34.899 17.38l-0.079 0.109c-5.603 7.207-8.984 16.384-8.984 26.351 0 14.271 6.93 26.924 17.608 34.778l0.12 0.083c49.111 37.883 111.521 60.719 179.265 60.719s130.154-22.836 179.953-61.23l-0.689 0.51c10.667-8.061 17.489-20.723 17.489-34.978 0-9.892-3.285-19.018-8.824-26.343l0.079 0.109c-8.18-10.541-20.853-17.261-35.095-17.261-9.821 0-18.895 3.195-26.241 8.603l0.123-0.086c-34.771 26.697-78.905 42.783-126.797 42.783s-92.026-16.086-127.294-43.149l0.497 0.366c-7.262-5.353-16.355-8.615-26.202-8.745h-0.031zM512 54.492c-24.147 0-43.723 19.576-43.723 43.723s19.576 43.723 43.723 43.723v0 0c24.147 0 43.723-19.576 43.723-43.723s-19.576-43.723-43.723-43.723v0z" />
+<glyph unicode="&#xe970;" glyph-name="sign-in" data-tags="sign-in" d="M863.075-63.984h-175.538c-24.237 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h175.538c1.762-0.162 3.81-0.255 5.881-0.255 34.275 0 62.615 25.405 67.22 58.41l0.041 0.357v729.651c-4.645 33.363-32.986 58.768-67.261 58.768-2.069 0-4.118-0.093-6.141-0.274l0.261 0.019h-175.538c-24.237 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h175.538c1.958 0.089 4.255 0.14 6.565 0.14 83.099 0 150.872-65.615 154.335-147.863l0.011-0.313v-726.14c-3.472-82.56-71.246-148.176-154.344-148.176-2.309 0-4.606 0.051-6.89 0.151l0.325-0.011zM453.487 170.065c-0.060 0-0.133 0-0.204 0-12.052 0-22.953 4.923-30.803 12.869l-0.004 0.004c-7.929 7.939-12.835 18.903-12.835 31.011s4.904 23.072 12.835 31.013v0l203.038 203.038-203.038 203.038c-7.297 7.816-11.777 18.344-11.777 29.917 0 24.237 19.648 43.884 43.884 43.884 11.575 0 22.101-4.48 29.943-11.802l-0.026 0.023 234.051-234.051c7.929-7.939 12.835-18.903 12.835-31.011s-4.904-23.072-12.835-31.013v0l-234.051-234.051c-7.854-7.95-18.755-12.873-30.807-12.873-0.071 0-0.144 0-0.215 0h0.011zM687.538 404.116h-643.638c-24.237 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h643.638c24.237 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe971;" glyph-name="sign-out" data-tags="sign-out" d="M336.515-63.832h-175.485c-1.958-0.089-4.254-0.14-6.563-0.14-83.075 0-150.827 65.596-154.289 147.819l-0.011 0.313v727.679c3.471 82.536 71.225 148.132 154.298 148.132 2.309 0 4.605-0.051 6.888-0.151l-0.325 0.011h175.485c24.229 0 43.871-19.642 43.871-43.871s-19.642-43.871-43.871-43.871v0h-175.485c-1.762 0.162-3.809 0.255-5.879 0.255-34.265 0-62.596-25.397-67.2-58.393l-0.041-0.356v-729.434c4.644-33.353 32.976-58.751 67.241-58.751 2.069 0 4.117 0.093 6.139 0.274l-0.26-0.019h175.485c24.229 0 43.871-19.642 43.871-43.871s-19.642-43.871-43.871-43.871v0zM745.981 170.148c-0.060 0-0.133 0-0.204 0-12.048 0-22.946 4.922-30.794 12.865l-0.004 0.004c-7.927 7.937-12.831 18.898-12.831 31.002s4.903 23.065 12.831 31.003v0l202.978 202.978-202.978 202.978c-8.602 8.031-13.963 19.438-13.963 32.097 0 24.229 19.642 43.871 43.871 43.871 12.66 0 24.066-5.362 32.073-13.937l0.023-0.026 233.981-233.981c7.927-7.937 12.831-18.898 12.831-31.002s-4.903-23.065-12.831-31.003v0l-233.981-233.981c-7.852-7.948-18.75-12.869-30.798-12.869-0.071 0-0.144 0-0.215 0h0.011zM979.961 404.129h-643.446c-24.229 0-43.871 19.642-43.871 43.871s19.642 43.871 43.871 43.871v0h643.446c24.229 0 43.871-19.642 43.871-43.871s-19.642-43.871-43.871-43.871v0z" />
+<glyph unicode="&#xe972;" glyph-name="image" data-tags="image" d="M863.086 901.486h-702.171c-88.87 0-160.914-72.044-160.914-160.914v0-585.143c0-88.87 72.044-160.914 160.914-160.914v0h702.171c88.87 0 160.914 72.044 160.914 160.914v0 585.143c0 88.87-72.044 160.914-160.914 160.914v0zM160.914 813.715h702.171c40.395 0 73.142-32.747 73.142-73.142v0-479.232l-159.158 159.158c-7.493 7.993-18.119 12.974-29.908 12.974-1.007 0-2.005-0.036-2.992-0.108l0.133 0.008c-12.88-0.772-24.239-6.708-32.137-15.744l-0.047-0.055-75.483-90.697-269.166 269.166c-7.488 7.945-18.081 12.89-29.83 12.89-0.416 0-0.831-0.007-1.244-0.018l0.060 0.001c-12.88-0.772-24.239-6.708-32.137-15.744l-0.047-0.055-216.503-258.048v405.504c0 40.395 32.747 73.142 73.142 73.142v0zM87.772 155.429v42.716l251.612 301.934 241.079-241.079-147.456-175.543h-272.091c-0.003 0-0.005 0-0.010 0-39.984 0-72.475 32.083-73.133 71.911l-0.001 0.062zM863.086 82.285h-315.977l201.874 242.249 184.32-184.32c-6.765-33.136-35.591-57.744-70.197-57.929h-0.021z" />
+<glyph unicode="&#xe973;" glyph-name="images" data-tags="images" d="M871.768 904.629h-553.491c-84.063 0-152.209-68.147-152.209-152.209v0-13.838h-13.838c-84.063 0-152.209-68.147-152.209-152.209v0-442.792c0-84.063 68.147-152.209 152.209-152.209v0h553.491c84.063 0 152.209 68.147 152.209 152.209v0 13.838h13.838c84.063 0 152.209 68.147 152.209 152.209v0 442.792c0 84.063-68.147 152.209-152.209 152.209v0zM249.092 752.42c0 38.21 30.976 69.186 69.186 69.186v0h553.491c38.21 0 69.186-30.976 69.186-69.186v0-343.163l-125.642 105.716c-7.15 6.241-16.567 10.047-26.872 10.047-12.495 0-23.684-5.595-31.196-14.418l-0.048-0.058-59.223-69.74-221.396 214.755c-6.965 8.265-17.229 13.559-28.735 13.836l-0.047 0.001c-11.963-0.464-22.566-5.925-29.844-14.338l-0.044-0.052-168.814-200.917zM318.279 240.441c-38.21 0-69.186 30.976-69.186 69.186v0 16.605l203.131 239.108 191.508-187.633-116.233-137.265zM774.908 143.58c0-38.21-30.976-69.186-69.186-69.186v0h-553.491c-38.21 0-69.186 30.976-69.186 69.186v0 442.792c0 38.21 30.976 69.186 69.186 69.186v0h13.838v-345.932c0-84.063 68.147-152.209 152.209-152.209v0h456.629zM871.768 240.441h-235.233l157.191 184.866 145.567-123.429c-3.487-34.553-32.362-61.315-67.514-61.437h-0.013z" />
+<glyph unicode="&#xe974;" glyph-name="money-bill" data-tags="money-bill" d="M921.588 842.96h-819.175c-56.419-0.331-102.067-45.977-102.397-102.366v-585.157c0.331-56.419 45.977-102.067 102.366-102.397h819.207c56.419 0.331 102.067 45.977 102.397 102.366v585.157c-0.331 56.419-45.977 102.067-102.366 102.397h-0.032zM936.215 740.562v-97.715h-12.288c-3.162-0.418-6.82-0.657-10.532-0.657s-7.37 0.239-10.956 0.701l0.424-0.045h-7.607c-7.377 1.502-13.839 3.52-20.003 6.11l0.694-0.259h-7.022c-8.645 4.243-16.008 9.735-22.196 16.341l-0.038 0.041c-16.923 16.712-27.426 39.89-27.5 65.521v0.014c0.016 8.559 1.299 16.812 3.668 24.592l-0.158-0.601h98.887c0.004 0 0.008 0 0.012 0 7.873 0 14.294-6.219 14.615-14.014l0.001-0.029zM102.412 755.191h98.887c2.212-7.178 3.494-15.431 3.511-23.981v-0.010c-0.074-25.645-10.578-48.823-27.491-65.525l-0.010-0.010c-6.348-6.456-13.68-11.92-21.756-16.155l-0.479-0.229h-7.607c-5.25-2.652-11.34-4.689-17.749-5.795l-0.389-0.056h-8.191c-3.162-0.418-6.82-0.657-10.532-0.657s-7.37 0.239-10.956 0.701l0.424-0.045h-12.288v97.131c0 8.079 6.55 14.629 14.629 14.629v0zM87.785 155.438v97.715h12.288c3.162 0.418 6.82 0.657 10.532 0.657s7.37-0.239 10.956-0.701l-0.424 0.045h7.607c7.229-1.166 13.718-3.206 19.76-6.041l-0.451 0.191h7.022c8.556-4.464 15.886-9.927 22.223-16.372l0.012-0.012c16.923-16.712 27.426-39.89 27.5-65.521v-0.014c-0.016-8.559-1.299-16.812-3.668-24.592l0.158 0.601h-98.887c-0.004 0-0.008 0-0.012 0-7.873 0-14.294 6.219-14.615 14.014l-0.001 0.029zM290.823 140.809c0.287 3.59 0.451 7.773 0.451 11.996s-0.163 8.405-0.485 12.544l0.034-0.549c0.004 0.481 0.007 1.050 0.007 1.62 0 49.382-20.391 94-53.213 125.896l-0.041 0.040c-8.427 8.529-17.825 16.067-28.024 22.443l-0.647 0.377-9.947 6.436c-5.625 3.003-12.567 6.153-19.707 8.903l-1.358 0.459-11.702 4.681c-8.77 2.704-19.269 4.96-30.044 6.336l-0.968 0.101c-2.719 0.288-5.875 0.451-9.069 0.451s-6.35-0.165-9.458-0.484l0.389 0.033h-29.256v210.060h49.736c9.036 1.557 16.909 3.588 24.522 6.182l-1.116-0.331 12.873 4.096c9.915 3.42 18.418 7.374 26.429 12.074l-0.683-0.37 9.362 5.266c11.406 7.555 21.355 15.646 30.453 24.6l-0.026-0.025c32.863 31.937 53.254 76.555 53.254 125.937 0 0.569-0.003 1.138-0.008 1.707v-0.086c0.287 3.59 0.451 7.773 0.451 11.996s-0.163 8.405-0.485 12.544l0.034-0.549h442.355c-0.287-3.59-0.451-7.773-0.451-11.996s0.163-8.405 0.485-12.544l-0.034 0.549c-0.004-0.481-0.007-1.050-0.007-1.62 0-49.382 20.391-94 53.213-125.896l0.041-0.040c8.973-9.14 18.943-17.251 29.747-24.168l0.679-0.407 9.362-5.266c7.327-4.329 15.83-8.282 24.727-11.392l1.018-0.31 12.873-4.096c6.721-2.133 14.826-3.972 23.141-5.166l0.85-0.1h49.151v-208.304h-29.256c-2.719 0.277-5.876 0.435-9.069 0.435s-6.351-0.158-9.463-0.466l0.394 0.032c-11.742-1.477-22.241-3.733-32.391-6.794l1.38 0.358-11.702-4.681c-9.096-3.533-16.61-7.072-23.848-11.051l1.029 0.518-9.947-6.436c-10.846-6.753-20.244-14.291-28.657-22.805l-0.015-0.015c-32.863-31.937-53.254-76.555-53.254-125.937 0-0.569 0.003-1.138 0.008-1.707v0.086c-0.287-3.59-0.451-7.773-0.451-11.996s0.163-8.405 0.485-12.544l-0.034 0.549zM921.588 140.809h-98.887c-2.212 7.178-3.494 15.431-3.511 23.981v0.010c0.074 25.645 10.578 48.823 27.491 65.525l0.010 0.010c6.226 6.647 13.589 12.14 21.793 16.186l0.443 0.197h7.022c5.388 2.223 11.845 4.236 18.507 5.704l0.802 0.148h7.607c3.162 0.418 6.82 0.657 10.532 0.657s7.37-0.239 10.956-0.701l-0.424 0.045h12.288v-97.131c0-8.079-6.55-14.629-14.629-14.629v0zM512 652.793c-113.105 0-204.793-91.69-204.793-204.793s91.69-204.793 204.793-204.793c113.105 0 204.793 91.69 204.793 204.793v0c0 113.105-91.69 204.793-204.793 204.793v0zM512 330.975c-64.631 0-117.025 52.394-117.025 117.025s52.394 117.025 117.025 117.025c64.631 0 117.025-52.394 117.025-117.025v0c0-64.631-52.394-117.025-117.025-117.025v0z" />
+<glyph unicode="&#xe975;" glyph-name="eject" data-tags="eject" d="M974.421 398.455h-924.841c-27.344 0.025-49.502 22.198-49.502 49.545 0 13.671 5.537 26.048 14.49 35.013v0l462.421 462.421c8.963 8.952 21.342 14.49 35.011 14.49s26.048-5.537 35.013-14.49v0l462.421-462.421c8.952-8.963 14.49-21.342 14.49-35.011 0-27.347-22.157-49.52-49.499-49.545h-0.003zM169.148 497.545h685.704l-342.852 342.852zM908.36-63.966h-792.721c-63.696 0.373-115.233 51.908-115.606 115.57v132.155c0.373 63.696 51.908 115.233 115.57 115.606h792.757c63.696-0.373 115.233-51.908 115.606-115.57v-132.155c-0.373-63.696-51.908-115.233-115.57-115.606h-0.036zM115.64 200.275c-9.121 0-16.516-7.395-16.516-16.516v0-132.12c0-9.121 7.395-16.516 16.516-16.516v0h792.721c9.121 0 16.516 7.395 16.516 16.516v0 132.12c0 9.121-7.395 16.516-16.516 16.516v0z" />
+<glyph unicode="&#xe976;" glyph-name="volume-down" data-tags="volume-down" d="M710.11-63.786c-11.715 0.201-22.473 4.137-31.176 10.665l0.138-0.099-316.316 253.581h-313.014c-27.205 0.367-49.161 22.323-49.528 49.492v396.256c0.367 27.205 22.323 49.161 49.492 49.528h313.050l316.316 253.581c8.413 6.81 19.245 10.933 31.038 10.933 27.353 0 49.528-22.174 49.528-49.528 0-0.128 0-0.257-0.002-0.387v0.020-924.514c-0.124-19.673-11.546-36.649-28.101-44.774l-0.296-0.132c-5.939-2.921-12.928-4.629-20.316-4.629-0.288 0-0.574 0.003-0.859 0.008h0.043zM99.27 299.417h280.656c11.732-0.051 22.527-4.016 31.159-10.656l-0.121 0.090 249.619-198.11v716.499l-249.619-198.11c-8.511-6.55-19.306-10.515-31.026-10.566h-280.668zM915.484 224.796c-11.19 0.147-21.49 3.841-29.859 10.006l0.142-0.101c-12.083 9.132-19.811 23.475-19.811 39.622 0 11.206 3.721 21.543 9.995 29.84l-0.090-0.124c30.292 39.484 48.545 89.591 48.545 143.96s-18.251 104.477-48.961 144.528l0.418-0.566c-6.185 8.174-9.906 18.511-9.906 29.717 0 27.353 22.174 49.528 49.528 49.528 16.148 0 30.49-7.728 39.532-19.687l0.090-0.124c42.965-55.728 68.862-126.535 68.862-203.393s-25.897-147.666-69.442-204.176l0.58 0.783c-9.257-11.932-23.523-19.596-39.586-19.811h-0.036z" />
+<glyph unicode="&#xe977;" glyph-name="volume-up" data-tags="volume-up" d="M565.883 30.407c-9.559 0.164-18.337 3.376-25.438 8.703l0.112-0.081-258.099 206.91h-255.405c-22.198 0.299-40.113 18.215-40.412 40.383v323.327c0.299 22.198 18.215 40.113 40.383 40.412h255.434l258.099 206.91c6.865 5.557 15.703 8.921 25.326 8.921 22.319 0 40.412-18.093 40.412-40.412 0-0.105 0-0.21-0.001-0.316v0.016-754.361c-0.101-16.052-9.421-29.904-22.929-36.534l-0.241-0.107c-4.846-2.383-10.549-3.777-16.577-3.777-0.235 0-0.469 0.003-0.701 0.006h0.035zM67.466 326.763h229.002c9.573-0.042 18.381-3.277 25.424-8.695l-0.099 0.073 203.677-161.649v584.629l-203.677-161.649c-6.785-5.918-15.568-9.703-25.217-10.233l-0.107-0.005h-229.002zM860.084 120.93c-10.094 0.015-19.331 3.681-26.461 9.747l0.058-0.048c-8.624 7.36-14.057 18.239-14.057 30.387 0 10.3 3.905 19.687 10.315 26.762l-0.030-0.034c61.742 68.722 99.501 160.079 99.501 260.255s-37.758 191.532-99.818 260.614l0.318-0.36c-6.378 7.12-10.277 16.575-10.277 26.941 0 22.34 18.111 40.451 40.451 40.451 11.975 0 22.734-5.203 30.141-13.472l0.034-0.038c74.659-82.7 120.339-192.814 120.339-313.599s-45.68-230.898-120.705-314.010l0.366 0.412c-7.167-8.586-17.874-14.010-29.847-14.010-0.115 0-0.23 0-0.345 0.001h0.018zM733.459 265.876c-9.131 0.12-17.535 3.134-24.364 8.165l0.116-0.082c-9.859 7.451-16.165 19.154-16.165 32.33 0 9.143 3.036 17.578 8.156 24.348l-0.073-0.101c24.717 32.217 39.61 73.102 39.61 117.464s-14.892 85.248-39.95 117.928l0.341-0.462c-5.046 6.669-8.082 15.104-8.082 24.247 0 22.319 18.093 40.412 40.412 40.412 13.176 0 24.879-6.306 32.257-16.064l0.073-0.101c35.058-45.471 56.188-103.247 56.188-165.959s-21.131-120.489-56.662-166.598l0.474 0.639c-7.553-9.736-19.193-15.989-32.301-16.165h-0.029z" />
+<glyph unicode="&#xe978;" glyph-name="volume-off" data-tags="volume-off" d="M842.183-63.786c-11.715 0.201-22.473 4.137-31.176 10.665l0.138-0.099-316.316 253.581h-313.014c-27.205 0.367-49.161 22.323-49.528 49.492v396.256c0.367 27.205 22.323 49.161 49.492 49.528h313.050l316.316 253.581c8.413 6.81 19.245 10.933 31.038 10.933 27.353 0 49.528-22.174 49.528-49.528 0-0.128 0-0.257-0.002-0.387v0.020-924.514c-0.153-19.495-11.255-36.364-27.452-44.771l-0.283-0.133c-6.264-2.921-13.598-4.625-21.331-4.625-0.163 0-0.323 0-0.486 0.002h0.025zM231.344 299.417h280.656c11.732-0.051 22.527-4.016 31.159-10.656l-0.121 0.090 249.619-198.11v716.499l-249.619-198.11c-8.511-6.55-19.306-10.515-31.026-10.566h-280.668z" />
+<glyph unicode="&#xe979;" glyph-name="envelope" data-tags="envelope" d="M921.588 901.473h-819.175c-56.419-0.331-102.067-45.977-102.397-102.366v-702.182c0.331-56.419 45.977-102.067 102.366-102.397h819.207c56.419 0.331 102.067 45.977 102.397 102.366v702.182c-0.331 56.419-45.977 102.067-102.366 102.397h-0.032zM102.412 813.704h819.175c8.079 0 14.629-6.55 14.629-14.629v0-90.11l-424.215-211.815-424.215 211.815v90.11c0 8.079 6.55 14.629 14.629 14.629v0zM921.588 82.296h-819.175c-8.079 0-14.629 6.55-14.629 14.629v0 514.325l404.322-202.454c5.795-2.962 12.643-4.698 19.895-4.698s14.098 1.736 20.147 4.815l-0.252-0.117 404.322 202.454v-514.325c0-8.079-6.55-14.629-14.629-14.629v0z" />
+<glyph unicode="&#xe97a;" glyph-name="share-alt" data-tags="share-alt" d="M833.7 316.396c-62.907-0.233-118.56-31.082-152.865-78.411l-0.38-0.551-309.417 152.076c5.76 17.446 9.17 37.537 9.358 58.398v0.093c-0.189 20.954-3.597 41.044-9.755 59.892l0.396-1.402 309.417 152.076c34.79-46.82 89.928-76.825 152.074-76.825 104.34 0 188.925 84.585 188.925 188.925s-84.585 188.925-188.925 188.925c-104.34 0-188.925-84.585-188.925-188.925 0-0.34 0.001-0.68 0.003-1.020v0.052c0.152-10.439 1.209-20.53 3.098-30.325l-0.173 1.080-319.945-160.849c-34.095 36.053-82.261 58.491-135.669 58.491-0.217 0-0.432 0-0.647-0.001h0.033c-104.986 0-190.096-85.108-190.096-190.096s85.108-190.096 190.096-190.096v0c0.182 0 0.399-0.001 0.614-0.001 53.408 0 101.575 22.439 135.587 58.404l0.082 0.088 319.945-160.849c-1.751-8.911-2.81-19.209-2.924-29.734l-0.001-0.096c0-104.986 85.108-190.096 190.096-190.096s190.096 85.108 190.096 190.096c0 104.986-85.108 190.096-190.096 190.096v0zM833.7 872.058c56.531 0 102.359-45.827 102.359-102.359s-45.827-102.359-102.359-102.359c-56.531 0-102.359 45.827-102.359 102.359v0c0.33 56.398 45.96 102.029 102.328 102.359h0.032zM190.3 345.641c-56.531 0-102.359 45.827-102.359 102.359s45.827 102.359 102.359 102.359c56.531 0 102.359-45.827 102.359-102.359v0c-0.33-56.398-45.96-102.029-102.328-102.359h-0.032zM833.7 23.942c-56.531 0-102.359 45.827-102.359 102.359s45.827 102.359 102.359 102.359c56.531 0 102.359-45.827 102.359-102.359v0c-0.33-56.398-45.96-102.029-102.328-102.359h-0.032z" />
+<glyph unicode="&#xe97b;" glyph-name="paperclip" data-tags="paperclip" d="M333.040-63.149c-0.395-0.001-0.861-0.003-1.328-0.003-89.93 0-171.755 34.697-232.82 91.434l0.214-0.196c-60.481 56.047-98.213 135.906-98.213 224.578s37.732 168.531 98.016 224.397l0.197 0.181 442.138 417.574c43.713 40.007 102.187 64.52 166.387 64.52s122.673-24.512 166.573-64.688l-0.186 0.169c46.303-43.075 75.506-103.992 76.611-171.742l0.003-0.2c0.003-0.343 0.003-0.748 0.003-1.154 0-58.355-24.702-110.942-64.219-147.873l-0.117-0.107-442.723-418.16c-25.698-23.896-60.263-38.561-98.253-38.561s-72.555 14.665-98.342 38.643l0.089-0.082c-25.889 23.908-42.047 58.024-42.047 95.913s16.158 72.005 41.958 95.834l0.088 0.081 409.387 385.408c7.935 7.925 18.894 12.829 30.996 12.829s23.061-4.902 30.997-12.829v0c7.925-7.935 12.829-18.894 12.829-30.996s-4.902-23.061-12.829-30.997v0l-409.387-385.408c-8.981-7.868-14.621-19.359-14.621-32.167s5.64-24.299 14.572-32.124l0.049-0.042c10.156-8.727 23.465-14.040 38.014-14.040s27.858 5.313 38.092 14.105l-0.078-0.066 442.723 416.989c21.667 21.246 35.097 50.823 35.097 83.538 0 0.444-0.003 0.888-0.007 1.331v-0.067c-1.049 42.681-19.73 80.802-49.009 107.504l-0.118 0.107c-27.771 25.797-65.112 41.627-106.148 41.627s-78.377-15.83-106.245-41.716l0.097 0.090-440.383-416.989c-43.561-40.015-70.766-97.247-70.766-160.83s27.203-120.815 70.608-160.688l0.158-0.143c45.833-42.805 107.572-69.087 175.451-69.087s129.619 26.282 175.601 69.225l-0.149-0.137 438.043 414.651c7.869 8.069 18.849 13.075 30.996 13.075s23.127-5.006 30.988-13.066l0.008-0.010c7.925-7.935 12.829-18.894 12.829-30.996s-4.902-23.061-12.829-30.997v0l-441.552-416.405c-60.773-56.558-142.541-91.272-232.414-91.272-1.768 0-3.534 0.014-5.296 0.040l0.267-0.003z" />
+<glyph unicode="&#xe97c;" glyph-name="bell" data-tags="bell" d="M983.875 212.893c-4.979 0-116.724 19.915-116.724 345.747 0 230.128-133.873 373.406-355.151 373.406s-355.151-143.278-355.151-373.406c0-331.917-115.617-345.747-115.065-345.747-22.914 0-41.49-18.576-41.49-41.49s18.576-41.49 41.49-41.49v0h267.193c19.311-95.868 102.854-167.053 203.023-167.053s183.711 71.186 202.798 165.727l0.223 1.325h267.746c22.914 0 41.49 18.576 41.49 41.49s-18.576 41.49-41.49 41.49v0zM512 46.935c-53.673 0.105-99.33 34.318-116.453 82.114l-0.271 0.865h233.448c-17.395-48.661-63.050-82.874-116.711-82.979h-0.013zM166.807 212.893c39.83 60.299 73.022 165.958 73.022 345.747s99.575 290.427 272.172 290.427 272.172-105.66 272.172-290.427 33.192-285.448 73.022-345.747z" />
+<glyph unicode="&#xe97d;" glyph-name="briefcase" data-tags="briefcase" d="M921.588 784.447h-219.422v73.14c-4.292 57.542-52.035 102.602-110.299 102.602-2.366 0-4.715-0.074-7.043-0.221l0.318 0.016h-146.282c-2.010 0.13-4.36 0.204-6.725 0.204-58.266 0-106.007-45.060-110.277-102.234l-0.022-0.368v-73.14h-219.422c-56.419-0.331-102.067-45.977-102.397-102.366v-585.157c0.331-56.419 45.977-102.067 102.366-102.397h819.207c56.419 0.331 102.067 45.977 102.397 102.366v585.157c-0.331 56.419-45.977 102.067-102.366 102.397h-0.032zM409.603 857.588c0 4.681 11.118 14.629 29.256 14.629h146.282c18.139 0 29.256-9.947 29.256-14.629v-73.14h-204.793zM102.412 696.678h819.175c8.079 0 14.629-6.55 14.629-14.629v0-190.166h-848.432v190.166c0 8.079 6.55 14.629 14.629 14.629v0zM321.834 404.116h380.331v-87.769h-380.331zM921.588 82.296h-819.175c-8.079 0-14.629 6.55-14.629 14.629v0 307.191h146.282v-131.653c0.325-24.105 19.78-43.559 43.853-43.884h468.131c24.105 0.325 43.559 19.78 43.884 43.853v131.685h146.282v-307.191c0-8.079-6.55-14.629-14.629-14.629v0z" />
+<glyph unicode="&#xe97e;" glyph-name="comments" data-tags="comments" d="M46.723 129.21c-0.231-0.004-0.504-0.007-0.777-0.007-24.867 0-45.027 20.159-45.027 45.027 0 5.382 0.944 10.545 2.676 15.329l-0.098-0.314 75.044 247.348c-14.665 39.037-23.418 84.145-24.012 131.219l-0.003 0.259c0 0.259-0.001 0.566-0.001 0.874 0 54.129 11.264 105.629 31.575 152.281l-0.955-2.464c60.427 141.25 198.214 238.423 358.696 238.423 106.632 0 203.244-42.901 273.517-112.384l-0.037 0.035c34.184-34.714 62.103-75.715 81.849-121.093l1-2.581c19.107-44.313 30.22-95.904 30.22-150.090s-11.112-105.775-31.182-152.616l0.962 2.526c-20.746-47.959-48.666-88.96-82.9-123.725l0.051 0.051c-70.377-70.256-167.536-113.703-274.844-113.703-48.549 0-95.021 8.893-137.875 25.139l2.675-0.889-247.348-76.845c-3.958-1.137-8.504-1.794-13.204-1.801h-0.004zM442.359 868.251c-0.253 0.001-0.554 0.001-0.856 0.001-41.547 0-81.081-8.613-116.916-24.15l1.904 0.734c-71.28-30.615-127.108-85.859-157.736-154.781l-0.758-1.912c-14.788-34.299-23.39-74.229-23.39-116.169s8.602-81.87 24.134-118.125l-0.744 1.956c1.7-4.555 2.682-9.817 2.682-15.309s-0.984-10.754-2.783-15.621l0.101 0.312-55.232-180.107 180.107 55.232c4.555 1.7 9.817 2.682 15.309 2.682s10.754-0.984 15.621-2.783l-0.312 0.101c34.014-14.517 73.588-22.957 115.132-22.957 122.867 0 228.493 73.819 274.946 179.525l0.754 1.926c13.056 32.416 20.631 70.004 20.631 109.36 0 163.117-130.105 295.846-292.2 300.074l-0.391 0.008zM977.277-62.304c-1.984-0.28-4.275-0.439-6.603-0.439s-4.621 0.16-6.864 0.469l0.26-0.030-247.348 75.044c-40.428-15.733-87.225-24.849-136.153-24.849-158.064 0-293.904 95.147-353.373 231.291l-0.967 2.482c-2.862 5.665-4.539 12.349-4.539 19.423 0 18.267 11.175 33.923 27.063 40.506l0.291 0.107c5.517 2.599 11.984 4.116 18.806 4.116 18.319 0 34.084-10.94 41.115-26.643l0.114-0.286c15.121-35.516 35.349-65.946 60.152-91.977l-0.117 0.122c54.202-53.624 128.774-86.753 211.084-86.753 41.688 0 81.392 8.499 117.473 23.857l-1.963-0.743c4.555 1.7 9.817 2.682 15.309 2.682s10.754-0.984 15.621-2.783l-0.312 0.101 180.107-55.232-55.232 180.107c-1.7 4.555-2.682 9.817-2.682 15.309s0.984 10.754 2.783 15.621l-0.101-0.312c14.803 33.932 23.415 73.467 23.415 115.014 0 0.301 0 0.602-0.001 0.902v-0.046c0.001 0.319 0.001 0.697 0.001 1.075 0 81.912-33.275 156.053-87.045 209.642l-0.008 0.008c-12.456 15.658-25.63 29.595-39.895 42.336l-0.328 0.288c-13.187 8.012-21.861 22.298-21.861 38.61 0 24.867 20.159 45.027 45.027 45.027 10.297 0 19.786-3.456 27.372-9.273l-0.107 0.079c22.529-14.653 42.156-30.276 60.175-47.561l-0.139 0.132c34.393-34.592 62.347-75.63 81.881-121.138l0.968-2.536c19.357-44.266 30.62-95.849 30.62-150.064 0-0.431-0.001-0.863-0.003-1.293v0.066c-0.136-48.508-8.929-94.919-24.912-137.831l0.898 2.751 75.044-247.348c1.634-4.472 2.578-9.633 2.578-15.015 0-24.867-20.159-45.027-45.027-45.027-0.273 0-0.546 0.003-0.818 0.007h0.041z" />
+<glyph unicode="&#xe97f;" glyph-name="comment" data-tags="comment" d="M89.22-17.058c-0.217-0.004-0.473-0.007-0.729-0.007-23.349 0-42.278 18.929-42.278 42.278 0 5.053 0.887 9.901 2.513 14.393l-0.093-0.294 90.193 295.946c-18.558 46.704-29.318 100.819-29.318 157.447 0 0.732 0.001 1.463 0.006 2.195v-0.113c0 0.201 0 0.439 0 0.677 0 62.834 12.85 122.668 36.068 177.015l-1.118-2.942c23.991 55.124 56.28 102.224 95.856 142.080l-0.026-0.026c39.776 39.941 87.133 72.3 139.735 94.736l2.882 1.092c51.475 22.443 111.446 35.5 174.466 35.5s122.993-13.057 177.355-36.615l-2.889 1.115c161.557-70.486 272.594-228.494 273.398-412.529v-0.103c-0.378-123.676-50.484-235.576-131.361-316.819l0.016 0.016c-39.83-39.549-86.93-71.841-139.11-94.681l-2.944-1.149c-51.439-22.133-111.317-35.003-174.201-35.003-57.536 0-112.557 10.776-163.152 30.417l3.076-1.050-295.946-90.193c-3.604-1.586-7.788-2.774-12.162-3.355l-0.239-0.026zM557.097 856.686c-149.484-0.668-277.735-90.884-333.925-219.741l-0.917-2.358c-17.678-41.648-27.953-90.087-27.953-140.927s10.274-99.278 28.861-143.354l-0.909 2.427c1.596-4.277 2.518-9.218 2.518-14.374s-0.923-10.098-2.613-14.668l0.095 0.293-69.336-235.065 233.938 71.027c4.277 1.596 9.218 2.518 14.374 2.518s10.098-0.923 14.668-2.613l-0.293 0.095c41.635-17.765 90.074-28.091 140.927-28.091s99.291 10.328 143.335 28.999l-2.408-0.907c131.638 56.462 222.168 184.951 222.168 334.586 0 51.2-10.598 99.924-29.723 144.098l0.907-2.35c-56.972 130.557-184.848 220.199-333.686 220.41h-0.028z" />
+<glyph unicode="&#xe980;" glyph-name="shopping-cart" data-tags="shopping-cart" d="M380.345-63.992c-48.474 0-87.77 39.296-87.77 87.77s39.296 87.77 87.77 87.77c48.474 0 87.77-39.296 87.77-87.77v0c0-48.474-39.296-87.77-87.77-87.77v0zM760.682-63.992c-48.474 0-87.77 39.296-87.77 87.77s39.296 87.77 87.77 87.77c48.474 0 87.77-39.296 87.77-87.77v0c0-48.474-39.296-87.77-87.77-87.77v0zM863.081 170.061h-585.135c-21.494 0.204-39.327 15.626-43.256 35.999l-0.045 0.28-110.59 607.369h-80.163c-24.237 0-43.885 19.648-43.885 43.885s19.648 43.885 43.885 43.885v0h117.026c21.494-0.204 39.327-15.626 43.256-35.999l0.045-0.28 25.161-139.262h750.727c13.998-0.045 26.446-6.638 34.45-16.872l0.073-0.096c5.813-7.511 9.319-17.066 9.319-27.438 0-3.549-0.41-7.002-1.186-10.316l0.060 0.304-117.026-468.107c-5.084-19.222-22.246-33.189-42.696-33.353h-0.019zM314.809 257.831h513.747l93.036 380.337h-676.416z" />
+<glyph unicode="&#xe981;" glyph-name="key" data-tags="key" d="M687.134 287.461c-0.215 0-0.469-0.001-0.724-0.001-92.498 0-176.242 37.479-236.875 98.078l0.001-0.001c-61.305 61.014-99.243 145.459-99.243 238.766 0 186.032 150.809 336.841 336.841 336.841s336.841-150.809 336.841-336.841c0-186.032-150.808-336.84-336.84-336.841v0zM687.134 871.239c-136.764-0.345-247.499-111.293-247.499-248.106 0-68.362 27.648-130.267 72.373-175.141l-0.007 0.007c44.929-45.079 107.076-72.972 175.74-72.972 137.026 0 248.106 111.081 248.106 248.106s-111.081 248.106-248.106 248.106c-0.213 0-0.427 0-0.639-0.001h0.033zM74.166-33.618c-11.682 0.919-21.941 6.357-29.147 14.547l-0.041 0.048c-6.919 7.71-11.15 17.955-11.15 29.188s4.231 21.479 11.185 29.23l-0.036-0.041 377.122 377.705c7.941 7.869 18.873 12.731 30.94 12.731 24.281 0 43.963-19.683 43.963-43.963 0-12.213-4.98-23.263-13.020-31.229l-0.003-0.003-380.624-373.619c-7.248-8.237-17.507-13.675-29.039-14.585l-0.151-0.010zM278.488-62.806c-0.060 0-0.133 0-0.204 0-12.024 0-22.9 4.912-30.732 12.839l-116.759 116.759c-7.28 7.798-11.75 18.301-11.75 29.848 0 24.181 19.603 43.783 43.783 43.783 11.548 0 22.050-4.47 29.874-11.775l-0.026 0.023 116.755-116.755c7.911-7.921 12.805-18.86 12.805-30.94s-4.893-23.019-12.805-30.941v0c-7.836-7.932-18.712-12.844-30.736-12.844-0.071 0-0.144 0-0.215 0h0.011zM395.245 53.949c-0.060 0-0.133 0-0.204 0-12.024 0-22.9 4.912-30.732 12.839l-116.759 116.759c-8.584 8.015-13.935 19.399-13.935 32.033 0 24.181 19.603 43.783 43.783 43.783 12.634 0 24.018-5.351 32.008-13.909l0.023-0.026 116.755-116.755c7.911-7.921 12.805-18.86 12.805-30.94s-4.893-23.019-12.805-30.941v0c-7.836-7.932-18.712-12.844-30.736-12.844-0.071 0-0.144 0-0.215 0h0.011z" />
+<glyph unicode="&#xe982;" glyph-name="mobile" data-tags="mobile" d="M746.051 959.984h-468.1c-56.419-0.331-102.067-45.977-102.397-102.366v-819.207c0.331-56.419 45.977-102.067 102.366-102.397h468.131c56.419 0.331 102.067 45.977 102.397 102.366v819.207c-0.331 56.419-45.977 102.067-102.366 102.397h-0.032zM760.678 38.412c0-8.079-6.55-14.629-14.629-14.629v0h-468.1c-8.079 0-14.629 6.55-14.629 14.629v0 819.175c0 8.079 6.55 14.629 14.629 14.629v0h468.1c8.079 0 14.629-6.55 14.629-14.629v0zM512 301.718c-48.473 0-87.769-39.296-87.769-87.769s39.296-87.769 87.769-87.769c48.473 0 87.769 39.296 87.769 87.769v0c0 48.473-39.296 87.769-87.769 87.769v0zM512 213.949v0z" />
+<glyph unicode="&#xe983;" glyph-name="tablet" data-tags="tablet" d="M863.075 959.984h-702.151c-56.419-0.331-102.067-45.977-102.397-102.366v-819.207c0.331-56.419 45.977-102.067 102.366-102.397h702.182c56.419 0.331 102.067 45.977 102.397 102.366v819.207c-0.331 56.419-45.977 102.067-102.366 102.397h-0.032zM877.704 38.412c0-8.079-6.55-14.629-14.629-14.629v0h-702.151c-8.079 0-14.629 6.55-14.629 14.629v0 819.175c0 8.079 6.55 14.629 14.629 14.629v0h702.151c8.079 0 14.629-6.55 14.629-14.629v0zM512 301.718c-48.473 0-87.769-39.296-87.769-87.769s39.296-87.769 87.769-87.769c48.473 0 87.769 39.296 87.769 87.769v0c0 48.473-39.296 87.769-87.769 87.769v0zM512 213.949v0z" />
+<glyph unicode="&#xe984;" glyph-name="heart" data-tags="heart" d="M512-6.541c-12.142 0.011-23.132 4.94-31.084 12.902v0l-397.063 398.237c-51.836 52.853-83.828 125.328-83.828 205.276s31.993 152.425 83.874 205.324l-0.045-0.047c52.537 52.531 125.112 85.022 205.276 85.022s152.739-32.491 205.277-85.023v0l17.595-15.249 16.423 16.423c52.328 52.883 124.914 85.631 205.15 85.631 0.25 0 0.502 0 0.752-0.001h-0.038c0.384 0.001 0.839 0.003 1.294 0.003 79.947 0 152.3-32.511 204.559-85.034l0.012-0.012c51.836-52.853 83.828-125.328 83.828-205.276s-31.993-152.425-83.874-205.324l0.045 0.047-397.063-398.237c-7.714-8.616-18.706-14.16-30.998-14.66l-0.087-0.003zM289.714 814.566c-0.436 0.003-0.953 0.005-1.468 0.005-55.496 0-105.759-22.406-142.235-58.666l0.010 0.010c-36.735-36.902-59.445-87.793-59.445-143.987s22.71-107.086 59.452-143.994l-0.007 0.007 365.979-368.325 365.392 367.151c36.877 36.837 59.687 87.747 59.687 143.987s-22.81 107.15-59.686 143.985l-0.001 0.001c-36.111 36.238-86.066 58.659-141.257 58.659-0.65 0-1.3-0.003-1.949-0.010l0.099 0.001c-0.436 0.003-0.953 0.005-1.468 0.005-55.496 0-105.759-22.406-142.235-58.666l-47.497-47.497c-8.080-7.677-19.030-12.4-31.084-12.4s-23.006 4.723-31.104 12.418l0.019-0.018-47.507 47.507c-36.581 36.947-87.314 59.823-143.391 59.823-0.107 0-0.213 0-0.32 0h0.016z" />
+<glyph unicode="&#xe985;" glyph-name="android" data-tags="android" d="M897.818 617.989c-33.052 0-59.847-26.794-59.847-59.847v0-271.219c0-33.052 26.794-59.847 59.847-59.847s59.847 26.794 59.847 59.847v0 271.219c0 33.052-26.794 59.847-59.847 59.847v0zM126.182 617.989c-33.052 0-59.847-26.794-59.847-59.847v0-271.219c0-33.052 26.794-59.847 59.847-59.847s59.847 26.794 59.847 59.847v0 271.219c0 33.052-26.794 59.847-59.847 59.847v0zM229.321 617.989v-407.465c0-37.624 30.5-68.122 68.122-68.122v0h43.293v-144.522c0-33.052 26.794-59.847 59.847-59.847s59.847 26.794 59.847 59.847v0 0 144.522h103.139v-144.522c0-33.052 26.794-59.847 59.847-59.847s59.847 26.794 59.847 59.847v0 144.522h43.293c37.624 0 68.122 30.5 68.122 68.122v0 407.465zM787.039 702.666c-19.494 64.041-60.923 116.427-115.35 149.595l-1.159 0.657-9.55 5.73-10.187 5.093 11.46 19.737 33.743 63.667c0.321 0.883 0.507 1.901 0.507 2.963 0 2.96-1.443 5.584-3.665 7.206l-0.025 0.018h-4.457c-3.404-0.157-6.379-1.864-8.255-4.426l-0.021-0.030-34.38-59.21-10.823-19.737-10.187 4.457-10.823 3.82c-30.354 10.882-65.375 17.173-101.867 17.173s-71.511-6.291-104.038-17.846l2.171 0.673-10.187-3.82-10.823-4.457-10.823 19.737-34.38 63.667c-1.592 2.804-4.559 4.665-7.958 4.665-5.038 0-9.122-4.084-9.122-9.122 0-1.637 0.431-3.174 1.186-4.502l-0.024 0.045 33.743-63.667 11.46-19.737-10.187-5.093-9.55-5.73c-55.806-33.938-97.174-86.897-115.417-149.695l-0.455-1.831c-4.717-15.122-7.703-32.57-8.27-50.627l-0.007-0.307h565.357c-0.686 18.4-3.432 35.851-8.017 52.541l0.378-1.609zM384.668 736.408c-14.065 0-25.467 11.402-25.467 25.467s11.402 25.467 25.467 25.467c14.065 0 25.467-11.402 25.467-25.467v0c0-14.065-11.402-25.467-25.467-25.467v0zM639.332 736.408c-14.065 0-25.467 11.402-25.467 25.467s11.402 25.467 25.467 25.467c14.065 0 25.467-11.402 25.467-25.467v0c0-14.065-11.402-25.467-25.467-25.467v0z" />
+<glyph unicode="&#xe986;" glyph-name="google" data-tags="google" d="M1008.591 526.712l-5.759 22.397h-476.114v-202.221h284.773c-32.683-123.892-143.735-213.758-275.775-213.758-1.138 0-2.275 0.006-3.409 0.019l0.172-0.001c-86.669 0.738-165.327 34.432-224.185 89.141l0.207-0.19c-58.421 57.606-94.785 137.451-95.35 225.791v0.106c1.039 88.017 36.49 167.558 93.495 225.963l-0.064-0.066c57.221 54.292 134.738 87.683 220.053 87.683 0.93 0 1.86-0.004 2.788-0.012l-0.142 0.001c73.95-0.586 141.235-28.652 192.25-74.471l-0.268 0.238 140.787 144.626c-88.734 79.432-206.552 127.99-335.711 127.99-0.54 0-1.080-0.001-1.62-0.003h0.084c-0.919 0.006-2.007 0.009-3.094 0.009-142.761 0-272.106-57.428-366.198-150.443l0.049 0.049c-90.236-93.627-145.825-221.183-145.825-361.724 0-137.597 53.284-262.749 140.344-355.947l-0.279 0.301c96.859-96.51 230.481-156.177 378.041-156.177 2.082 0 4.162 0.012 6.238 0.036l-0.316-0.003c1.053-0.009 2.296-0.013 3.543-0.013 134.433 0 255.872 55.642 342.541 145.151l0.123 0.127c82.61 90.584 133.206 211.608 133.206 344.45 0 3.543-0.036 7.076-0.108 10.602l0.009-0.526c0.105 4.284 0.163 9.328 0.163 14.387 0 26.957-1.687 53.521-4.962 79.591l0.318-3.106z" />
+<glyph unicode="&#xe987;" glyph-name="apple" data-tags="apple" d="M800.988 418.589c-0.025 1.227-0.040 2.673-0.040 4.124 0 81.14 45.665 151.616 112.697 187.127l1.149 0.554c-43.688 60.224-112.883 99.642-191.399 102.285l-0.408 0.010c-81.199 6.394-169.43-47.312-202.037-47.312s-113.166 44.755-174.544 44.755c-127.87 0-262.775-101.657-262.775-304.332 0.671-66.632 12.562-130.276 33.869-189.424l-1.262 4.011c28.131-81.837 133.625-287.070 243.594-283.874 57.542 0 98.461 40.919 173.266 40.919s109.97-40.919 174.544-40.919c110.608 0 206.511 188.61 234.004 272.365-83.223 34.69-140.659 115.384-140.659 209.49 0 0.076 0 0.154 0 0.231v-0.012zM673.117 793.891c33.682 37.846 54.259 88 54.259 142.959 0 7.972-0.433 15.844-1.277 23.592l0.085-0.959c-61.9-6.974-115.875-36.341-154.514-79.679l-0.211-0.24c-37.077-39.007-59.884-91.883-59.884-150.086 0-4.782 0.154-9.526 0.457-14.231l-0.033 0.641c1.605-0.048 3.493-0.075 5.387-0.075 63.128 0 119.134 30.497 154.087 77.563l0.366 0.514z" />
+<glyph unicode="&#xe988;" glyph-name="microsoft" data-tags="microsoft" d="M0.001 959.999h480v-480h-480zM543.999 959.999h480v-480h-480zM0.001 416.001h480v-480h-480zM543.999 416.001h480v-480h-480z" />
+<glyph unicode="&#xe989;" glyph-name="exclamation-circle" data-tags="exclamation-circle" d="M512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0zM512 391.111c-23.436 0.316-42.351 19.231-42.667 42.636v199.141c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-199.111c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031zM512 220.444c-23.436 0.316-42.351 19.231-42.667 42.636v28.475c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667v0-28.444c-0.316-23.436-19.231-42.351-42.636-42.667h-0.031z" />
+<glyph unicode="&#xe98a;" glyph-name="user-edit" data-tags="user-edit" d="M431.778 455.243c-115.379 0-208.912 93.532-208.912 208.912s93.532 208.912 208.912 208.912c115.379 0 208.912-93.532 208.912-208.912v0c-0.316-115.251-93.66-208.596-208.881-208.912h-0.030zM431.778 789.501c-69.227 0-125.347-56.12-125.347-125.347s56.12-125.347 125.347-125.347c69.227 0 125.347 56.12 125.347 125.347v0c0 69.227-56.12 125.347-125.347 125.347v0zM41.809 65.274c-23.076 0-41.782 18.707-41.782 41.782v0c0 264.622 302.504 264.622 431.751 264.622 40.111 0 75.766 0 108.076-3.9 21.638-1.734 38.542-19.721 38.542-41.657 0-1.025-0.037-2.041-0.11-3.046l0.008 0.134c-2.011-21.692-20.122-38.543-42.169-38.543-1.041 0-2.072 0.038-3.093 0.111l0.137-0.008c-30.083 0-63.509 3.343-101.391 3.343-288.576 0-348.186-72.423-348.186-181.057 0.003-0.167 0.004-0.364 0.004-0.561 0-22.767-18.457-41.225-41.225-41.225-0.197 0-0.394 0.001-0.59 0.004h0.030zM549.326 22.934c-11.533 0.010-21.972 4.693-29.526 12.255v0c-7.671 7.32-12.439 17.622-12.439 29.037 0 1.349 0.067 2.683 0.197 3.998l-0.013-0.166 8.914 106.963c0.738 10.242 5.062 19.352 11.708 26.194l-0.009-0.010 307.518 307.518c20.408 18.948 47.843 30.576 77.993 30.576s57.585-11.627 78.066-30.642l-0.072 0.067c19.978-20.131 32.325-47.862 32.325-78.475 0-0.614-0.005-1.227-0.014-1.838l0.001 0.093c0.008-0.488 0.013-1.065 0.013-1.643 0-28.208-11.272-53.784-29.557-72.47l-307.499-307.499c-6.609-6.771-15.516-11.272-25.457-12.242l-0.17-0.013-108.076-10.028zM657.402 74.744v0zM598.35 153.295l-3.343-42.34 43.454 3.9 296.932 296.932c3.138 3.741 5.043 8.607 5.043 13.917 0 0.396-0.010 0.789-0.031 1.178l0.003-0.055c-0.022 8.097-2.969 15.5-7.838 21.216l0.038-0.046c-5.22 3.914-11.806 6.267-18.942 6.267s-13.722-2.354-19.024-6.327l0.082 0.059z" />
+<glyph unicode="&#xe98b;" glyph-name="chart-line" data-tags="chart-line" d="M46.545-64c-25.567 0.345-46.201 20.979-46.545 46.512v930.943c0 25.706 20.839 46.545 46.545 46.545s46.545-20.839 46.545-46.545v0-930.909c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033zM977.455-64h-930.909c-25.706 0-46.545 20.839-46.545 46.545s20.839 46.545 46.545 46.545v0h930.909c25.706 0 46.545-20.839 46.545-46.545s-20.839-46.545-46.545-46.545v0zM636.121 277.334c-0.064 0-0.141 0-0.217 0-12.783 0-24.345 5.222-32.671 13.649l-153.295 153.295-153.29-153.29c-8.289-7.74-19.456-12.492-31.731-12.492-25.706 0-46.545 20.839-46.545 46.545 0 12.276 4.752 23.441 12.518 31.759l-0.025-0.028 186.182 186.182c8.42 8.41 20.049 13.613 32.892 13.613s24.471-5.201 32.893-13.613v0l153.29-153.29 215.35 215.35c8.289 7.74 19.456 12.492 31.731 12.492 25.706 0 46.545-20.839 46.545-46.545 0-12.276-4.752-23.441-12.518-31.759l0.025 0.028-248.243-248.243c-8.33-8.432-19.892-13.654-32.675-13.654-0.076 0-0.153 0-0.228 0h0.012zM915.393 333.808c-25.567 0.345-46.201 20.979-46.545 46.512v176.285h-170.666c-25.706 0-46.545 20.839-46.545 46.545s20.839 46.545 46.545 46.545v0h217.212c25.567-0.345 46.201-20.979 46.545-46.512v-222.831c-0.345-25.567-20.979-46.201-46.512-46.545h-0.033z" />
+<glyph unicode="&#xe98c;" glyph-name="check-square" data-tags="check-square" d="M863.086-64h-702.171c-88.87 0-160.914 72.044-160.914 160.914v0 702.171c0 88.87 72.044 160.914 160.914 160.914v0h518.437c24.237 0 43.886-19.648 43.886-43.886s-19.648-43.886-43.886-43.886v0h-518.437c-40.395 0-73.142-32.747-73.142-73.142v0-702.171c0-40.395 32.747-73.142 73.142-73.142v0h702.171c40.395 0 73.142 32.747 73.142 73.142v0 451.145c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-451.145c0-88.87-72.044-160.914-160.914-160.914v0zM424.229 257.828c-11.709 0.922-21.992 6.372-29.216 14.581l-0.041 0.048-175.543 175.543c-2.703 5.532-4.284 12.038-4.284 18.913 0 24.237 19.648 43.886 43.886 43.886 6.875 0 13.381-1.581 19.174-4.4l-0.261 0.114 144.531-144.531 499.127 495.616c5.532 2.703 12.038 4.284 18.913 4.284 24.237 0 43.886-19.648 43.886-43.886 0-6.875-1.581-13.381-4.4-19.174l0.114 0.261-526.629-526.629c-7.264-8.256-17.547-13.707-29.107-14.619l-0.151-0.010z" />
+<glyph unicode="&#xe98d;" glyph-name="file-pdf" data-tags="file-pdf" d="M894.081 623.535l-323.57 323.57c-7.935 7.944-18.897 12.862-31.009 12.873h-261.55c-88.866 0-160.907-72.041-160.907-160.907v0-702.14c0-88.866 72.041-160.907 160.907-160.907v0h468.093c88.866 0 160.907 72.041 160.907 160.907v0 497.35c-0.494 11.473-5.32 21.731-12.872 29.254l-0.001 0.001zM585.139 810.188l172.024-172.024h-172.024zM746.047 23.791h-468.093c-40.394 0-73.139 32.746-73.139 73.139v0 702.14c0 40.394 32.746 73.139 73.139 73.139v0h219.419v-277.931c0.325-24.105 19.779-43.559 43.852-43.884h277.962v-453.466c0-40.394-32.746-73.139-73.139-73.139v0zM599.182 281.242c-35.612 22.599-62.527 56.14-76.26 95.834l-0.389 1.295c8.513 24.598 13.428 52.947 13.428 82.444 0 12.194-0.841 24.192-2.466 35.938l0.154-1.359c-3.892 22.255-23.068 38.954-46.145 38.954-18.984 0-35.328-11.301-42.673-27.543l-0.119-0.295c-1.82-12.259-2.859-26.407-2.859-40.798 0-35.745 6.41-69.992 18.145-101.654l-0.657 2.026c-26.663-62.22-51.535-112.192-78.718-160.691l4.409 8.561c-41.543-23.405-98.3-58.512-107.076-98.885-7.021-32.766 54.416-117.023 159.151 65.534 38.752 15.060 86.483 29.549 135.472 40.728l7.296 1.4c33.675-19.598 73.544-32.44 116.101-35.636l0.922-0.056c0.37-0.010 0.806-0.016 1.244-0.016 26.499 0 47.98 21.481 47.98 47.98 0 12.689-4.926 24.228-12.97 32.809l0.025-0.026c-24.575 25.16-97.714 18.139-133.992 13.457zM319.497 105.707c16.89 28.581 38.169 52.658 63.208 72.128l0.569 0.426c-39.787-63.193-63.778-74.31-63.778-73.139zM490.35 504.171c15.213 0 14.043-67.289 3.511-85.427-4.439 14.87-6.994 31.954-6.994 49.637 0 12.459 1.269 24.62 3.683 36.365l-0.199-1.16zM439.445 218.635c17.504 31.081 34.829 68.095 49.5 106.424l1.99 5.919c15.998-29.397 37.215-53.976 62.634-73.317l0.558-0.407c-44.504-11.253-82.688-24.668-119.265-41.035l4.582 1.832zM714.451 229.167s-10.532-12.873-77.821 16.384c73.139 4.68 85.427-12.287 77.821-16.968z" />
+<glyph unicode="&#xe98e;" glyph-name="file-excel" data-tags="file-excel" d="M894.081 623.535l-323.57 323.57c-7.935 7.944-18.897 12.862-31.009 12.873h-261.55c-88.866 0-160.907-72.041-160.907-160.907v0-702.14c0-88.866 72.041-160.907 160.907-160.907v0h468.093c88.866 0 160.907 72.041 160.907 160.907v0 497.35c-0.494 11.473-5.32 21.731-12.872 29.254l-0.001 0.001zM585.139 810.188l172.024-172.024h-172.024zM746.047 23.791h-468.093c-40.394 0-73.139 32.746-73.139 73.139v0 702.14c0 40.394 32.746 73.139 73.139 73.139v0h219.419v-277.931c0.325-24.105 19.779-43.559 43.852-43.884h277.962v-453.466c0-40.394-32.746-73.139-73.139-73.139v0zM656.524 453.266c-7.496 5.775-17.020 9.255-27.356 9.255-13.907 0-26.344-6.301-34.608-16.205l-0.059-0.071-82.501-103.566-82.501 105.321c-8.353 9.812-20.716 15.996-34.521 15.996-24.992 0-45.251-20.259-45.251-45.251 0-11.185 4.058-21.422 10.782-29.32l-0.053 0.064 93.034-117.023-93.034-117.023c-5.992-7.47-9.615-17.061-9.615-27.5 0-24.376 19.76-44.136 44.136-44.136 13.937 0 26.366 6.461 34.454 16.55l0.067 0.086 82.501 101.81 82.501-105.321c8.276-9.979 20.653-16.31 34.509-16.384h0.012c1.085-0.096 2.348-0.149 3.622-0.149 24.236 0 43.884 19.648 43.884 43.884 0 12.183-4.964 23.206-12.981 31.157l-0.003 0.003-93.034 117.023 95.374 117.023c5.757 7.489 9.225 16.998 9.225 27.316 0 14.937-7.268 28.175-18.461 36.373l-0.126 0.088z" />
+<glyph unicode="&#xe98f;" glyph-name="search-plus" data-tags="search-plus" d="M440.071 79.585c-243.195 0-440.344 197.149-440.344 440.344s197.149 440.344 440.344 440.344c243.195 0 440.344-197.149 440.344-440.344v0c0-243.195-197.149-440.344-440.344-440.344v0zM440.071 871.969c-193.781 0-350.872-157.090-350.872-350.872s157.090-350.872 350.872-350.872c193.781 0 350.872 157.090 350.872 350.872v0c0 193.781-157.090 350.872-350.872 350.872v0zM979.828-63.687c-0.060 0-0.133 0-0.204 0-12.045 0-22.94 4.92-30.785 12.862l-241.52 241.52c-7.293 7.811-11.771 18.333-11.771 29.899 0 24.222 19.636 43.859 43.859 43.859 11.568 0 22.088-4.478 29.926-11.795l-0.026 0.023 241.516-241.516c7.925-7.934 12.827-18.892 12.827-30.993s-4.901-23.059-12.827-30.995v0c-7.849-7.945-18.744-12.866-30.789-12.866-0.071 0-0.144 0-0.215 0h0.011zM438.902 331.043c-24.091 0.325-43.534 19.768-43.859 43.827v292.424c0 24.222 19.636 43.859 43.859 43.859s43.859-19.636 43.859-43.859v0-292.393c-0.325-24.091-19.768-43.534-43.827-43.859h-0.032zM585.098 477.239h-292.393c-24.222 0-43.859 19.636-43.859 43.859s19.636 43.859 43.859 43.859v0h292.393c24.222 0 43.859-19.636 43.859-43.859s-19.636-43.859-43.859-43.859v0z" />
+<glyph unicode="&#xe990;" glyph-name="search-minus" data-tags="search-minus" d="M440.071 79.585c-243.195 0-440.344 197.149-440.344 440.344s197.149 440.344 440.344 440.344c243.195 0 440.344-197.149 440.344-440.344v0c-0.332-243.061-197.282-440.011-440.311-440.344h-0.033zM440.071 871.969c-193.781 0-350.872-157.090-350.872-350.872s157.090-350.872 350.872-350.872c193.781 0 350.872 157.090 350.872 350.872v0c0 193.781-157.090 350.872-350.872 350.872v0zM979.828-63.687c-0.060 0-0.133 0-0.204 0-12.045 0-22.94 4.92-30.785 12.862l-241.52 241.52c-7.293 7.811-11.771 18.333-11.771 29.899 0 24.222 19.636 43.859 43.859 43.859 11.568 0 22.088-4.478 29.926-11.795l-0.026 0.023 241.516-241.516c7.925-7.934 12.827-18.892 12.827-30.993s-4.901-23.059-12.827-30.995v0c-7.849-7.945-18.744-12.866-30.789-12.866-0.071 0-0.144 0-0.215 0h0.011zM585.098 477.239h-292.393c-24.222 0-43.859 19.636-43.859 43.859s19.636 43.859 43.859 43.859v0h292.393c24.222 0 43.859-19.636 43.859-43.859s-19.636-43.859-43.859-43.859v0z" />
+<glyph unicode="&#xe991;" glyph-name="sliders-v" data-tags="sliders-v" d="M809.27-63.966c-27.214 0.367-49.178 22.331-49.545 49.509v462.457c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-462.421c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM809.27 530.575c-27.214 0.367-49.178 22.331-49.545 49.509v330.335c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-330.3c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM908.36 530.575h-198.18c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h198.18c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM214.73-63.966c-27.214 0.367-49.178 22.331-49.545 49.509v462.457c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-462.421c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM214.73 530.575c-27.214 0.367-49.178 22.331-49.545 49.509v330.335c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-330.3c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM313.82 530.575h-198.18c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h198.18c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM512-63.966c-27.214 0.367-49.178 22.331-49.545 49.509v198.216c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-198.18c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM512 266.335c-27.214 0.367-49.178 22.331-49.545 49.509v594.576c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-594.541c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM611.090 266.335h-198.18c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h198.18c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0z" />
+<glyph unicode="&#xe992;" glyph-name="sliders-h" data-tags="sliders-h" d="M974.421 695.725h-462.421c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h462.421c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM379.88 695.725h-330.3c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h330.3c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM379.88 596.635c-27.214 0.367-49.178 22.331-49.545 49.509v198.216c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-198.18c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM974.421 101.185h-462.421c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h462.421c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM379.88 101.185h-330.3c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h330.3c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM379.88 2.094c-27.214 0.367-49.178 22.331-49.545 49.509v198.216c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-198.18c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036zM974.421 398.455h-198.18c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h198.18c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM644.12 398.455h-594.541c-27.363 0-49.545 22.182-49.545 49.545s22.182 49.545 49.545 49.545v0h594.541c27.363 0 49.545-22.182 49.545-49.545s-22.182-49.545-49.545-49.545v0zM644.12 299.365c-27.214 0.367-49.178 22.331-49.545 49.509v198.216c0 27.363 22.182 49.545 49.545 49.545s49.545-22.182 49.545-49.545v0-198.18c-0.367-27.214-22.331-49.178-49.509-49.545h-0.036z" />
+<glyph unicode="&#xe993;" glyph-name="desktop" data-tags="desktop" d="M921.582 170.069h-819.163c-56.418 0.33-102.065 45.976-102.396 102.364v585.149c0.33 56.418 45.976 102.065 102.364 102.396h819.194c56.418-0.33 102.065-45.976 102.396-102.364v-585.149c-0.33-56.418-45.976-102.065-102.364-102.396h-0.032zM102.418 872.209c-8.079 0-14.628-6.55-14.628-14.628v0-585.117c0-8.079 6.55-14.628 14.628-14.628v0h819.163c8.079 0 14.628 6.55 14.628 14.628v0 585.117c0 8.079-6.55 14.628-14.628 14.628v0zM687.535-63.977h-175.535c-24.105 0.325-43.559 19.779-43.884 43.852v234.079c0 24.236 19.648 43.884 43.884 43.884s43.884-19.648 43.884-43.884v0-190.163h131.651c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM512-63.977h-175.535c-24.236 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h175.535c24.236 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe994;" glyph-name="undo" data-tags="undo" d="M512-63.452c-233.911 0.333-423.443 189.864-423.774 423.743v0.032c0 24.211 19.627 43.839 43.839 43.839s43.839-19.627 43.839-43.839v0c0-185.621 150.475-336.097 336.097-336.097s336.097 150.475 336.097 336.097c0 185.621-150.475 336.097-336.097 336.097v0h-146.13c-24.211 0-43.839 19.627-43.839 43.839s19.627 43.839 43.839 43.839v0h146.13c234.044 0 423.774-189.73 423.774-423.774s-189.73-423.774-423.774-423.774v0zM512 521.064c-0.060 0-0.133 0-0.204 0-12.039 0-22.929 4.918-30.771 12.856l-175.359 175.359c-7.921 7.931-12.821 18.884-12.821 30.979s4.899 23.048 12.821 30.98v0l175.355 175.355c8.025 8.595 19.423 13.953 32.074 13.953 24.211 0 43.839-19.627 43.839-43.839 0-12.65-5.358-24.048-13.927-32.049l-0.026-0.023-144.376-144.376 144.376-144.376c7.921-7.931 12.821-18.884 12.821-30.979s-4.899-23.048-12.821-30.98v0c-7.846-7.942-18.736-12.86-30.775-12.86-0.071 0-0.144 0-0.215 0h0.011z" />
+<glyph unicode="&#xe995;" glyph-name="palette" data-tags="palette" d="M519.277 960.715h-7.277c-253.778-1.147-464.149-185.545-505.665-427.624l-0.434-3.056c-0.937-5.467-1.471-11.766-1.471-18.188 0-28.561 10.584-54.651 28.045-74.56l-0.11 0.129c19.956-23.925 49.43-39.33 82.525-40.351l0.171-0.005h6.616c9.699 0.958 20.962 1.504 32.354 1.504 86.293 0 165.264-31.351 226.143-83.282l-0.485 0.405c51.878-60.585 83.452-139.894 83.452-226.576 0-13.406-0.755-26.634-2.225-39.648l0.146 1.596c-0.009-0.532-0.014-1.16-0.014-1.788 0-33.821 15.38-64.049 39.528-84.071l0.181-0.146c19.667-17.259 45.613-27.789 74.015-27.789 0.26 0 0.521 0.002 0.781 0.003h-0.040c2.779-0.313 5.999-0.493 9.261-0.493s6.483 0.178 9.654 0.527l-0.391-0.036c245.807 40.82 430.915 251.867 430.915 506.147 0 280.688-225.554 508.696-505.299 512.663l-0.374 0.005zM578.157 39.813c-0.69-0.102-1.487-0.16-2.298-0.16-4.2 0-8.035 1.566-10.952 4.145l0.017-0.016c-2.836 2.323-4.631 5.825-4.631 9.747 0 0.062 0 0.124 0.002 0.186v-0.009c0.605 8.692 0.95 18.839 0.95 29.067 0 115.297-43.825 220.358-115.725 299.434l0.326-0.363c-77.886 70.432-181.648 113.534-295.479 113.534-10.793 0-21.497-0.388-32.096-1.149l1.422 0.082h-4.631c-4.019 0.386-7.516 2.355-9.903 5.267l-0.020 0.025c-2.565 2.9-4.129 6.734-4.129 10.934 0 0.811 0.059 1.608 0.171 2.386l-0.011-0.088c33.597 198.974 204.629 348.646 410.618 348.646 0.076 0 0.15 0 0.226 0h5.943c221.877-7.764 399.763-185.647 407.506-406.802l0.020-0.724c0.011-1.112 0.017-2.425 0.017-3.74 0-205.524-148.995-376.247-344.865-410.047l-2.475-0.354zM313.53 729.166c-45.671 0-82.695-37.024-82.695-82.695s37.024-82.695 82.695-82.695c45.671 0 82.695 37.024 82.695 82.695v0c0 45.671-37.024 82.695-82.695 82.695v0zM313.53 629.931c-9.134 0-16.54 7.405-16.54 16.54s7.405 16.54 16.54 16.54c9.134 0 16.54-7.405 16.54-16.54v0c0-9.134-7.405-16.54-16.54-16.54v0zM512 811.863c-45.671 0-82.695-37.024-82.695-82.695s37.024-82.695 82.695-82.695c45.671 0 82.695 37.024 82.695 82.695v0c0 45.671-37.024 82.695-82.695 82.695v0zM512 712.628c-9.134 0-16.54 7.405-16.54 16.54s7.405 16.54 16.54 16.54c9.134 0 16.54-7.405 16.54-16.54v0c0-9.134-7.405-16.54-16.54-16.54v0zM710.47 563.775c45.671 0 82.695 37.024 82.695 82.695s-37.024 82.695-82.695 82.695c-45.671 0-82.695-37.024-82.695-82.695v0c0-45.671 37.024-82.695 82.695-82.695v0zM710.47 629.931c-9.134 0-16.54 7.405-16.54 16.54s7.405 16.54 16.54 16.54c9.134 0 16.54-7.405 16.54-16.54v0c0-9.134-7.405-16.54-16.54-16.54v0zM793.166 530.695c-45.671 0-82.695-37.024-82.695-82.695s37.024-82.695 82.695-82.695c45.671 0 82.695 37.024 82.695 82.695v0c0 45.671-37.024 82.695-82.695 82.695v0zM793.166 431.46c-9.134 0-16.54 7.405-16.54 16.54s7.405 16.54 16.54 16.54c9.134 0 16.54-7.405 16.54-16.54v0c0-9.134-7.405-16.54-16.54-16.54v0zM710.47 332.225c-45.671 0-82.695-37.024-82.695-82.695s37.024-82.695 82.695-82.695c45.671 0 82.695 37.024 82.695 82.695v0c0 45.671-37.024 82.695-82.695 82.695v0zM710.47 232.99c-9.134 0-16.54 7.405-16.54 16.54s7.405 16.54 16.54 16.54c9.134 0 16.54-7.405 16.54-16.54v0c0-9.134-7.405-16.54-16.54-16.54v0z" />
+<glyph unicode="&#xe996;" glyph-name="sort-numeric-down-alt" data-tags="sort-numeric-down-alt" d="M272.871-63.949c-0.183-0.003-0.398-0.003-0.613-0.003-13.694 0-26.089 5.555-35.058 14.536v0l-165.145 167.127c-8.952 8.963-14.49 21.341-14.49 35.010s5.536 26.047 14.49 35.012v0c9.138 8.837 21.604 14.282 35.341 14.282s26.202-5.445 35.355-14.296l132.101-132.101 132.115 132.115c9.138 8.837 21.604 14.282 35.341 14.282s26.202-5.445 35.355-14.296l-0.014 0.014c8.952-8.963 14.49-21.341 14.49-35.010s-5.536-26.047-14.49-35.012v0l-165.145-165.145c-9.003-10.201-22.109-16.602-36.709-16.602-1.030 0-2.051 0.033-3.065 0.094l0.139-0.006zM272.871-63.949c-0.002 0-0.003 0-0.005 0-27.495 0-49.827 22.103-50.2 49.508v924.845c0.373 27.441 22.705 49.543 50.2 49.543 0.002 0 0.003 0 0.005 0v0c27.077-0.373 48.882-22.409 48.882-49.539 0-0.002 0-0.003 0-0.005v0-924.81c0-0.002 0-0.003 0-0.005 0-27.13-21.807-49.167-48.848-49.539h-0.036zM850.216-30.919c-27.077 0.373-48.882 22.409-48.882 49.539 0 0.002 0 0.003 0 0.005v0 268.195l-25.763-14.533c-6.952-3.915-15.262-6.222-24.111-6.222-27.515 0-49.821 22.305-49.821 49.821 0 18.667 10.266 34.936 25.459 43.468l0.251 0.13 43.598 23.781c12.816 9.446 28.919 15.117 46.348 15.117 12.457 0 24.238-2.898 34.704-8.055l-0.461 0.206c29.13-13.962 48.887-43.216 48.887-77.083 0-0.303-0.002-0.608-0.005-0.91v0.046-293.958c-0.373-27.441-22.705-49.543-50.2-49.543-0.002 0-0.003 0-0.005 0v0zM817.187 629.659c-81.802 0.375-147.969 66.775-147.969 148.629 0 82.086 66.545 148.63 148.63 148.63s148.629-66.543 148.63-148.629v0c0.002-0.198 0.002-0.432 0.002-0.666 0-81.722-66.249-147.969-147.969-147.969-0.464 0-0.929 0.002-1.393 0.006h0.071zM817.187 827.832c-27.362 0-49.543-22.182-49.543-49.543s22.182-49.543 49.543-49.543v0c27.362 0 49.543 22.182 49.543 49.543s-22.182 49.543-49.543 49.543v0zM783.498 497.543h-32.369c-27.362 0-49.543 22.182-49.543 49.543s22.182 49.543 49.543 49.543v0h32.369c43.854 0.949 79.426 35.145 82.556 78.334l0.015 0.274c0 19.156 0 42.278 0 70.022v33.028c0 0.002 0 0.003 0 0.005 0 27.13 21.807 49.167 48.848 49.539h0.036c0.002 0 0.003 0 0.005 0 27.495 0 49.827-22.103 50.2-49.508v-33.064c0-29.726 0-54.168 0-75.306-6.052-95.91-84.883-171.519-181.572-172.411h-0.088z" />
+<glyph unicode="&#xe997;" glyph-name="sort-numeric-up-alt" data-tags="sort-numeric-up-alt" d="M438.010 695.734c-14.187 0.375-26.837 6.658-35.632 16.47l-0.042 0.046-132.124 132.124-132.124-132.124c-8.829-7.573-20.392-12.184-33.031-12.184s-24.204 4.609-33.099 12.241l0.068-0.057c-7.83 8.725-12.617 20.319-12.617 33.031s4.787 24.306 12.658 33.077l-0.040-0.046 165.156 165.156c9.138 8.838 21.605 14.283 35.344 14.283s26.204-5.445 35.358-14.297l165.142-165.142c8.952-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0c-8.632-7.819-20.139-12.603-32.763-12.603-0.791 0-1.578 0.019-2.36 0.056l0.11-0.005zM272.855-63.983c-0.002 0-0.003 0-0.005 0-27.497 0-49.83 22.104-50.203 49.511v924.907c0.373 27.443 22.706 49.547 50.203 49.547 0.002 0 0.003 0 0.005 0v0c27.079-0.373 48.886-22.411 48.886-49.542 0-0.002 0-0.003 0-0.005v0-924.872c0-0.002 0-0.003 0-0.005 0-27.131-21.808-49.17-48.852-49.542h-0.036zM850.238-30.951c-27.079 0.373-48.886 22.411-48.886 49.542 0 0.002 0 0.003 0 0.005v0 268.213l-25.764-14.534c-6.952-3.916-15.263-6.223-24.112-6.223-27.517 0-49.824 22.307-49.824 49.824 0 18.668 10.267 34.938 25.461 43.471l0.251 0.13 43.601 23.782c12.817 9.446 28.921 15.118 46.351 15.118 12.458 0 24.239-2.898 34.706-8.056l-0.461 0.206c29.132-13.963 48.89-43.219 48.89-77.089 0-0.303-0.002-0.608-0.005-0.91v0.046-293.978c-0.373-27.443-22.706-49.547-50.203-49.547-0.002 0-0.003 0-0.005 0v0zM817.208 629.671c-81.808 0.375-147.979 66.78-147.979 148.639 0 82.091 66.549 148.64 148.64 148.64s148.639-66.547 148.64-148.639v0c0.002-0.198 0.002-0.432 0.002-0.666 0-81.727-66.253-147.979-147.979-147.979-0.465 0-0.929 0.002-1.394 0.006h0.071zM817.208 827.858c-27.364 0-49.547-22.183-49.547-49.547s22.183-49.547 49.547-49.547v0c27.364 0 49.547 22.183 49.547 49.547s-22.183 49.547-49.547 49.547v0zM783.516 497.547h-32.371c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h32.371c43.857 0.949 79.431 35.147 82.562 78.34l0.015 0.274c0 19.158 0 42.28 0 70.027v33.031c0 0.002 0 0.003 0 0.005 0 27.131 21.808 49.17 48.852 49.542h0.036c0.002 0 0.003 0 0.005 0 27.497 0 49.83-22.104 50.203-49.511v-33.066c0-29.728 0-54.172 0-75.311-6.052-95.916-84.889-171.531-181.584-172.423h-0.088z" />
+<glyph unicode="&#xe998;" glyph-name="sort-alpha-down-alt" data-tags="sort-alpha-down-alt" d="M394.185 183.248l-80.749-78.763v806.832c0 27.416-22.225 49.641-49.641 49.641s-49.641-22.225-49.641-49.641v0-806.832l-80.749 78.763c-8.704 15.102-24.762 25.106-43.154 25.106-27.416 0-49.641-22.225-49.641-49.641 0-17.376 8.928-32.667 22.447-41.537l0.188-0.116 165.47-165.47c4.463-4.365 9.73-7.935 15.552-10.46l0.334-0.129c5.656-2.513 12.255-3.976 19.194-3.976s13.538 1.463 19.504 4.098l-0.309-0.123c6.155 2.656 11.422 6.224 15.894 10.6l165.461 165.461c13.707 8.985 22.635 24.276 22.635 41.652 0 27.416-22.225 49.641-49.641 49.641-18.392 0-34.449-10.003-43.026-24.865l-0.127-0.24zM975.316 34.325l-113.181 317.040c-9.249 28.257-35.377 48.307-66.188 48.307s-56.94-20.050-66.049-47.815l-0.14-0.492-113.181-315.717c-1.792-4.928-2.828-10.617-2.828-16.548 0-27.515 22.306-49.821 49.821-49.821 21.585 0 39.964 13.727 46.884 32.927l0.109 0.347 17.871 50.964h132.375l17.871-50.964c7.021-19.445 25.317-33.095 46.802-33.095 0.067 0 0.135 0 0.202 0h-0.011c2.488-0.455 5.35-0.714 8.273-0.714s5.786 0.259 8.566 0.757l-0.293-0.043c21.021 6.086 36.131 25.162 36.131 47.767 0 6.137-1.114 12.013-3.149 17.439l0.113-0.343zM764.176 151.477l31.77 89.354 31.77-89.354zM633.124 544.634c10.629-27.020 36.072-45.995 66.067-46.99l0.119-0.003h209.815c27.416 0 49.641 22.225 49.641 49.641s-22.225 49.641-49.641 49.641v0h-158.189l186.65 193.93c13.893 15.043 22.413 35.23 22.413 57.405 0 11.77-2.4 22.979-6.737 33.165l0.209-0.554c-11.72 27.771-38.694 46.923-70.15 46.993h-205.853c-27.416 0-49.641-22.225-49.641-49.641s22.225-49.641 49.641-49.641v0h158.189l-187.312-195.255c-13.789-14.459-22.275-34.083-22.275-55.689 0-11.954 2.597-23.3 7.258-33.508l-0.206 0.504z" />
+<glyph unicode="&#xe999;" glyph-name="sort-alpha-up-alt" data-tags="sort-alpha-up-alt" d="M299.286 945.432c-4.454 4.357-9.711 7.919-15.522 10.44l-0.333 0.129c-5.645 2.508-12.231 3.968-19.157 3.968s-13.512-1.46-19.467-4.091l0.308 0.122c-6.144-2.651-11.4-6.212-15.864-10.579l0.009 0.009-165.151-167.133c-13.681-8.968-22.591-24.229-22.591-41.571 0-27.363 22.182-49.545 49.545-49.545 18.356 0 34.383 9.983 42.943 24.817l0.127 0.24 80.593 78.611v-805.273c0-27.363 22.182-49.545 49.545-49.545s49.545 22.182 49.545 49.545v0 805.273l80.593-78.611c8.963-8.952 21.342-14.49 35.011-14.49s26.048 5.537 35.013 14.49v0c8.952 8.963 14.49 21.342 14.49 35.011s-5.537 26.048-14.49 35.013v0zM974.421 35.124l-112.963 316.427c-9.231 28.202-35.309 48.214-66.061 48.214s-56.83-20.012-65.921-47.723l-0.139-0.491-112.963-315.107c-1.788-4.919-2.823-10.596-2.823-16.516 0-27.462 22.263-49.725 49.725-49.725 21.543 0 39.887 13.701 46.794 32.864l0.108 0.347 17.836 50.866h132.12l17.836-50.866c7.008-19.408 25.268-33.031 46.712-33.031 0.067 0 0.135 0 0.201 0h-0.011c2.483-0.454 5.34-0.712 8.257-0.712s5.775 0.259 8.55 0.756l-0.293-0.043c20.981 6.074 36.061 25.113 36.061 47.675 0 6.125-1.112 11.99-3.143 17.406l0.113-0.342zM763.689 152.050l31.709 89.181 31.709-89.181zM632.89 544.447c10.609-26.968 36.002-45.907 65.94-46.899l0.119-0.003h209.41c27.363 0 49.545 22.182 49.545 49.545s-22.182 49.545-49.545 49.545v0h-157.883l186.289 193.556c13.866 15.014 22.37 35.162 22.37 57.294 0 11.747-2.395 22.935-6.724 33.101l0.209-0.553c-11.697 27.717-38.619 46.832-70.015 46.902h-205.456c-27.363 0-49.545-22.182-49.545-49.545s22.182-49.545 49.545-49.545v0h157.883l-186.951-194.878c-13.763-14.432-22.232-34.017-22.232-55.582 0-11.931 2.592-23.255 7.244-33.443l-0.206 0.503z" />
+<glyph unicode="&#xe99a;" glyph-name="sort-numeric-down" data-tags="sort-numeric-down" d="M272.871-63.949c-0.183-0.003-0.398-0.003-0.613-0.003-13.694 0-26.089 5.555-35.058 14.536v0l-165.145 167.127c-8.952 8.963-14.49 21.341-14.49 35.010s5.536 26.047 14.49 35.012v0c9.138 8.837 21.604 14.282 35.341 14.282s26.202-5.445 35.355-14.296l132.101-132.101 132.115 132.115c9.138 8.837 21.604 14.282 35.341 14.282s26.202-5.445 35.355-14.296l-0.014 0.014c8.952-8.963 14.49-21.341 14.49-35.010s-5.536-26.047-14.49-35.012v0l-165.145-165.145c-9.003-10.201-22.109-16.602-36.709-16.602-1.030 0-2.051 0.033-3.065 0.094l0.139-0.006zM272.871-63.949c-0.002 0-0.003 0-0.005 0-27.495 0-49.827 22.103-50.2 49.508v924.845c0.373 27.441 22.705 49.543 50.2 49.543 0.002 0 0.003 0 0.005 0v0c27.077-0.373 48.882-22.409 48.882-49.539 0-0.002 0-0.003 0-0.005v0-924.81c0-0.002 0-0.003 0-0.005 0-27.13-21.807-49.167-48.848-49.539h-0.036zM850.216 497.543c-27.077 0.373-48.882 22.409-48.882 49.539 0 0.002 0 0.003 0 0.005v0 268.195l-25.101-14.533c-6.952-3.915-15.262-6.222-24.111-6.222-27.515 0-49.821 22.305-49.821 49.821 0 18.667 10.266 34.936 25.459 43.468l0.251 0.13 42.937 22.46c12.816 9.446 28.919 15.117 46.348 15.117 12.457 0 24.238-2.898 34.704-8.055l-0.461 0.206c29.13-13.962 48.887-43.216 48.887-77.083 0-0.303-0.002-0.608-0.005-0.91v0.046-292.636c-0.373-27.441-22.705-49.543-50.2-49.543-0.002 0-0.003 0-0.005 0v0zM817.187 101.196c-81.802 0.375-147.969 66.775-147.969 148.629 0 82.086 66.545 148.63 148.63 148.63s148.629-66.543 148.63-148.629v0c0.002-0.198 0.002-0.432 0.002-0.666 0-81.722-66.249-147.969-147.969-147.969-0.464 0-0.929 0.002-1.393 0.006h0.071zM817.187 299.37c-27.362 0-49.543-22.182-49.543-49.543s22.182-49.543 49.543-49.543v0c27.362 0 49.543 22.182 49.543 49.543s-22.182 49.543-49.543 49.543v0zM783.498-30.919h-32.369c-27.362 0-49.543 22.182-49.543 49.543s22.182 49.543 49.543 49.543v0h32.369c43.854 0.949 79.426 35.145 82.556 78.334l0.015 0.274c0 19.156 0 42.278 0 70.022v33.028c0 0.002 0 0.003 0 0.005 0 27.13 21.807 49.167 48.848 49.539h0.036c0.002 0 0.003 0 0.005 0 27.495 0 49.827-22.103 50.2-49.508v-33.064c0-29.726 0-54.168 0-75.306-6.373-95.766-85.015-171.188-181.539-172.409l-0.121-0.002z" />
+<glyph unicode="&#xe99b;" glyph-name="sort-numeric-up" data-tags="sort-numeric-up" d="M429.423 695.734c-13.96 0.485-26.367 6.751-34.968 16.463l-0.045 0.051-132.124 132.124-132.124-132.124c-8.164-16.81-25.108-28.194-44.71-28.194-27.364 0-49.547 22.183-49.547 49.547 0 19.602 11.383 36.545 27.899 44.58l0.294 0.129 165.156 165.156c8.963 8.952 21.342 14.491 35.013 14.491s26.049-5.537 35.014-14.491v0l165.156-165.156c8.952-8.963 14.491-21.342 14.491-35.013s-5.537-26.049-14.491-35.014v0c-8.632-7.819-20.139-12.603-32.763-12.603-0.791 0-1.578 0.019-2.36 0.056l0.11-0.005zM264.266-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036zM842.311 497.547c-27.215 0.367-49.18 22.332-49.547 49.511v268.249l-25.764-14.534c-6.565-3.371-14.325-5.346-22.545-5.346-18.51 0-34.683 10.018-43.387 24.927l-0.129 0.238c-3.505 6.622-5.562 14.475-5.562 22.809 0 18.489 10.126 34.611 25.136 43.126l0.246 0.129 41.619 23.782c12.978 9.823 29.39 15.736 47.184 15.736 11.877 0 23.14-2.634 33.233-7.35l-0.483 0.203c29.101-13.59 48.903-42.609 48.903-76.252 0-0.598-0.006-1.195-0.019-1.79l0.002 0.088v-293.978c-0.356-26.989-21.954-48.817-48.819-49.545l-0.068-0.002zM809.28 101.173c-82.091 0-148.64 66.549-148.64 148.64s66.549 148.64 148.64 148.64c82.091 0 148.64-66.549 148.64-148.64v0c0-82.091-66.549-148.64-148.64-148.64v0zM809.28 299.36c-27.364 0-49.547-22.183-49.547-49.547s22.183-49.547 49.547-49.547c27.364 0 49.547 22.183 49.547 49.547v0c-0.367 27.215-22.332 49.18-49.511 49.547h-0.036zM776.25-30.951h-33.031c-27.364 0-49.547 22.183-49.547 49.547s22.183 49.547 49.547 49.547v0h33.031c44.010 0.92 79.759 35.065 83.22 78.315l0.019 0.299c0 19.158 0 42.28 0 70.027v33.031c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-33.031c0-29.728 0-54.172 0-75.311-6.069-96.142-85.27-171.89-182.279-172.423h-0.053z" />
+<glyph unicode="&#xe99c;" glyph-name="sort-alpha-down" data-tags="sort-alpha-down" d="M394.185 183.248l-80.749-78.763v806.832c0 27.416-22.225 49.641-49.641 49.641s-49.641-22.225-49.641-49.641v0-806.832l-80.749 78.763c-8.704 15.102-24.762 25.106-43.154 25.106-27.416 0-49.641-22.225-49.641-49.641 0-17.376 8.928-32.667 22.447-41.537l0.188-0.116 165.47-165.47c4.463-4.365 9.73-7.935 15.552-10.46l0.334-0.129c5.656-2.513 12.255-3.976 19.194-3.976s13.538 1.463 19.504 4.098l-0.309-0.123c6.155 2.656 11.422 6.224 15.894 10.6l165.461 165.461c13.707 8.985 22.635 24.276 22.635 41.652 0 27.416-22.225 49.641-49.641 49.641-18.392 0-34.449-10.003-43.026-24.865l-0.127-0.24zM644.375 500.289c5.507-2.256 11.9-3.563 18.597-3.563 21.948 0 40.613 14.056 47.483 33.658l0.107 0.352 17.871 50.964h132.375l17.871-50.964c7.021-19.445 25.317-33.095 46.802-33.095 0.067 0 0.135 0 0.202 0h-0.011c2.488-0.455 5.35-0.714 8.273-0.714s5.786 0.259 8.566 0.757l-0.293-0.043c20.038 6.691 34.227 25.281 34.227 47.187 0 6.855-1.39 13.386-3.903 19.326l0.123-0.326-113.181 317.040c-9.249 28.257-35.377 48.307-66.188 48.307s-56.94-20.050-66.049-47.815l-0.14-0.492-113.181-315.717c-2.097-5.29-3.314-11.419-3.314-17.832 0-21.732 13.965-40.203 33.411-46.928l0.349-0.105zM825.068 680.982h-66.188l31.77 89.354zM953.474 351.366c-11.72 27.771-38.694 46.923-70.15 46.993h-205.853c-27.416 0-49.641-22.225-49.641-49.641s22.225-49.641 49.641-49.641v0h158.189l-187.312-195.255c-13.789-14.459-22.275-34.083-22.275-55.689 0-11.954 2.597-23.3 7.258-33.508l-0.206 0.504c10.629-27.020 36.072-45.995 66.067-46.99l0.119-0.003h209.815c27.416 0 49.641 22.225 49.641 49.641s-22.225 49.641-49.641 49.641v0h-158.189l185.988 193.93c14.298 14.945 23.099 35.251 23.099 57.613 0 11.701-2.409 22.839-6.76 32.945l0.208-0.541z" />
+<glyph unicode="&#xe99d;" glyph-name="sort-alpha-up" data-tags="sort-alpha-up" d="M299.286 945.432c-4.454 4.357-9.711 7.919-15.522 10.44l-0.333 0.129c-5.645 2.508-12.231 3.968-19.157 3.968s-13.512-1.46-19.467-4.091l0.308 0.122c-6.144-2.651-11.4-6.212-15.864-10.579l0.009 0.009-165.151-167.133c-13.681-8.968-22.591-24.229-22.591-41.571 0-27.363 22.182-49.545 49.545-49.545 18.356 0 34.383 9.983 42.943 24.817l0.127 0.24 80.593 78.611v-805.273c0-27.363 22.182-49.545 49.545-49.545s49.545 22.182 49.545 49.545v0 805.273l80.593-78.611c8.963-8.952 21.342-14.49 35.011-14.49s26.048 5.537 35.013 14.49v0c8.952 8.963 14.49 21.342 14.49 35.011s-5.537 26.048-14.49 35.013v0zM644.12 500.188c5.496-2.251 11.877-3.556 18.561-3.556 21.905 0 40.534 14.029 47.391 33.593l0.107 0.351 17.836 50.866h132.12l17.836-50.866c7.008-19.408 25.268-33.031 46.712-33.031 0.067 0 0.135 0 0.201 0h-0.011c2.483-0.454 5.34-0.712 8.257-0.712s5.775 0.259 8.55 0.756l-0.293-0.043c19.999 6.678 34.161 25.232 34.161 47.096 0 6.842-1.387 13.36-3.895 19.289l0.122-0.325-112.963 316.427c-9.231 28.202-35.309 48.214-66.061 48.214s-56.83-20.012-65.921-47.723l-0.139-0.491-112.963-315.107c-2.093-5.28-3.307-11.397-3.307-17.798 0-21.69 13.938-40.125 33.347-46.837l0.348-0.105zM824.464 680.532h-66.061l31.709 89.181zM952.621 351.553c-11.697 27.717-38.619 46.832-70.015 46.902h-205.456c-27.363 0-49.545-22.182-49.545-49.545s22.182-49.545 49.545-49.545v0h157.883l-186.951-194.878c-13.763-14.432-22.232-34.017-22.232-55.582 0-11.931 2.592-23.255 7.244-33.443l-0.206 0.503c10.609-26.968 36.002-45.907 65.94-46.899l0.119-0.003h209.41c27.363 0 49.545 22.182 49.545 49.545s-22.182 49.545-49.545 49.545v0h-157.883l185.628 193.556c14.271 14.916 23.054 35.183 23.054 57.502 0 11.679-2.404 22.795-6.747 32.881l0.207-0.54z" />
+<glyph unicode="&#xe99e;" glyph-name="sort-alt" data-tags="sort-alt" d="M412.907 695.734c-13.22 1.040-24.829 7.194-32.984 16.462l-0.046 0.054-132.124 132.124-132.124-132.124c-8.164-16.81-25.108-28.194-44.71-28.194-27.364 0-49.547 22.183-49.547 49.547 0 19.602 11.383 36.545 27.899 44.58l0.294 0.129 165.156 165.156c8.963 8.952 21.342 14.491 35.013 14.491s26.049-5.537 35.014-14.491v0l161.193-165.156c7.83-8.725 12.617-20.319 12.617-33.031s-4.787-24.306-12.658-33.077l0.040 0.046c-8.202-9.321-19.811-15.476-32.862-16.505l-0.17-0.011zM247.75-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036zM776.25-63.983c-0.068 0-0.15 0-0.231 0-13.607 0-25.914 5.559-34.777 14.53l-0.005 0.005-163.174 167.138c-16.81 8.164-28.194 25.108-28.194 44.71 0 27.364 22.183 49.547 49.547 49.547 19.602 0 36.545-11.383 44.58-27.899l0.129-0.294 132.124-132.124 132.124 132.124c8.164 16.81 25.108 28.194 44.71 28.194 27.364 0 49.547-22.183 49.547-49.547 0-19.602-11.383-36.545-27.899-44.58l-0.294-0.129-165.156-165.156c-8.202-9.321-19.811-15.476-32.862-16.505l-0.17-0.011zM776.25-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036z" />
+<glyph unicode="&#xe99f;" glyph-name="sort-amount-up" data-tags="sort-amount-up" d="M338.51 664.863c-12.22 0.424-23.081 5.91-30.61 14.412l-0.039 0.045-115.66 115.66-115.66-115.66c-7.147-14.716-21.979-24.68-39.138-24.68-23.954 0-43.373 19.419-43.373 43.373 0 17.159 9.965 31.991 24.423 39.024l0.258 0.112 146.311 146.311c7.638 6.854 17.787 11.045 28.915 11.045s21.277-4.191 28.955-11.080l-0.041 0.035 146.311-146.311c6.854-7.638 11.045-17.787 11.045-28.915s-4.191-21.277-11.080-28.955l0.035 0.041c-7.569-8.548-18.429-14.034-30.578-14.455l-0.073-0.001zM193.934-0.184c-23.824 0.321-43.051 19.549-43.373 43.341v809.653c0 23.954 19.419 43.373 43.373 43.373s43.373-19.419 43.373-43.373v0-809.621c-0.321-23.824-19.549-43.051-43.341-43.373h-0.031zM974.641 664.863h-462.641c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h462.641c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM743.321 317.882h-231.321c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h231.321c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM627.66 144.392h-115.66c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h115.66c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM858.981 491.373h-346.981c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h346.981c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0z" />
+<glyph unicode="&#xe9a0;" glyph-name="sort-amount-down" data-tags="sort-amount-down" d="M192.406-2.336c-11.405 0.429-21.611 5.237-29.049 12.779l-147.019 147.019c-12.034 7.888-19.872 21.312-19.872 36.567 0 24.069 19.512 43.581 43.581 43.581 16.147 0 30.244-8.782 37.774-21.83l0.112-0.211 116.215-116.215 116.215 116.215c7.181 14.786 22.085 24.799 39.326 24.799 24.069 0 43.581-19.512 43.581-43.581 0-17.242-10.013-32.145-24.54-39.212l-0.259-0.113-147.013-147.013c-7.444-7.548-17.649-12.355-28.974-12.781l-0.079-0.003zM192.406-2.336c-23.938 0.323-43.258 19.643-43.581 43.55v813.541c0 24.069 19.512 43.581 43.581 43.581s43.581-19.512 43.581-43.581v0-813.51c-0.323-23.938-19.643-43.258-43.55-43.581h-0.031zM976.863 665.905h-464.863c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h464.863c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM744.432 317.257h-232.432c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h232.432c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM628.215 142.934h-116.215c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h116.215c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM860.647 491.581h-348.647c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h348.647c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0z" />
+<glyph unicode="&#xe9a1;" glyph-name="sort-amount-down-alt" data-tags="sort-amount-down-alt" d="M192.406-2.336c-11.405 0.429-21.611 5.237-29.049 12.779l-147.019 147.019c-12.034 7.888-19.872 21.312-19.872 36.567 0 24.069 19.512 43.581 43.581 43.581 16.147 0 30.244-8.782 37.774-21.83l0.112-0.211 116.215-116.215 116.215 116.215c7.181 14.786 22.085 24.799 39.326 24.799 24.069 0 43.581-19.512 43.581-43.581 0-17.242-10.013-32.145-24.54-39.212l-0.259-0.113-147.013-147.013c-7.444-7.548-17.649-12.355-28.974-12.781l-0.079-0.003zM192.406-2.336c-23.938 0.323-43.258 19.643-43.581 43.55v813.541c0 24.069 19.512 43.581 43.581 43.581s43.581-19.512 43.581-43.581v0-813.51c-0.323-23.938-19.643-43.258-43.55-43.581h-0.031zM976.863 142.934h-464.863c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h464.863c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM744.432 491.581h-232.432c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h232.432c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM628.215 665.905h-116.215c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h116.215c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0zM860.647 317.257h-348.647c-24.069 0-43.581 19.512-43.581 43.581s19.512 43.581 43.581 43.581v0h348.647c24.069 0 43.581-19.512 43.581-43.581s-19.512-43.581-43.581-43.581v0z" />
+<glyph unicode="&#xe9a2;" glyph-name="sort-amount-up-alt" data-tags="sort-amount-up-alt" d="M338.51 664.863c-12.22 0.424-23.081 5.91-30.61 14.412l-0.039 0.045-115.66 115.66-115.66-115.66c-7.147-14.716-21.979-24.68-39.138-24.68-23.954 0-43.373 19.419-43.373 43.373 0 17.159 9.965 31.991 24.423 39.024l0.258 0.112 146.311 146.311c7.638 6.854 17.787 11.045 28.915 11.045s21.277-4.191 28.955-11.080l-0.041 0.035 146.311-146.311c6.854-7.638 11.045-17.787 11.045-28.915s-4.191-21.277-11.080-28.955l0.035 0.041c-7.569-8.548-18.429-14.034-30.578-14.455l-0.073-0.001zM193.934-0.184c-23.824 0.321-43.051 19.549-43.373 43.341v809.653c0 23.954 19.419 43.373 43.373 43.373s43.373-19.419 43.373-43.373v0-809.621c-0.321-23.824-19.549-43.051-43.341-43.373h-0.031zM974.641 144.392h-462.641c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h462.641c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM743.321 491.373h-231.321c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h231.321c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM627.66 664.863h-115.66c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h115.66c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0zM858.981 317.882h-346.981c-23.954 0-43.373 19.419-43.373 43.373s19.419 43.373 43.373 43.373v0h346.981c23.954 0 43.373-19.419 43.373-43.373s-19.419-43.373-43.373-43.373v0z" />
+<glyph unicode="&#xe9a3;" glyph-name="thumbs-up" data-tags="thumbs-up" d="M819.278-64.129h-680.109c-0.001 0-0.003 0-0.005 0-76.522 0-138.632 61.701-139.294 138.065v330.167c0.332 76.681 62.571 138.714 139.298 138.714 0 0 0.001 0 0.001 0h117.058l159.784 356.442c16.411 35.989 52.074 60.552 93.476 60.552 14.214 0 27.752-2.896 40.056-8.129l-0.669 0.254c65.364-29.479 110.038-94.074 110.038-169.102 0-0.428-0.001-0.856-0.004-1.284v0.066-144.567h234.117c1.495 0.266 3.218 0.417 4.975 0.417s3.479-0.152 5.154-0.443l-0.178 0.026c38.175-7.539 70.435-28.71 92.189-58.122l0.288-0.407c16.797-22.213 26.906-50.3 26.906-80.747 0-6.199-0.418-12.301-1.23-18.278l0.077 0.695-64.382-426.677c-10.843-67.036-68.282-117.612-137.54-117.643h-0.003zM325.877 23.665h493.4c0.198-0.003 0.429-0.004 0.663-0.004 25.231 0 46.175 18.35 50.217 42.432l0.041 0.299 65.553 424.921c0.255 1.742 0.401 3.755 0.401 5.8 0 10.292-3.69 19.723-9.819 27.042l0.053-0.066c-9.369 12.303-22.765 21.121-38.196 24.503l-0.433 0.080h-273.33c-0.178-0.003-0.39-0.004-0.601-0.004-23.92 0-43.311 19.391-43.311 43.311 0 0.413 0.005 0.824 0.018 1.235l-0.001-0.060v188.464c0 0.119 0.001 0.259 0.001 0.401 0 39.691-23.8 73.823-57.91 88.905l-0.621 0.246c-1.538 0.63-3.324 0.996-5.195 0.996-5.793 0-10.767-3.506-12.915-8.513l-0.034-0.092-167.978-374.001zM139.169 455.023c-0.174 0.003-0.38 0.003-0.586 0.003-28.123 0-50.92-22.798-50.92-50.92 0-0.001 0-0.003 0-0.004v0-330.104c0.329-27.872 22.999-50.339 50.918-50.339 0.207 0 0.414 0.001 0.62 0.004h98.883v431.359z" />
+<glyph unicode="&#xe9a4;" glyph-name="thumbs-down" data-tags="thumbs-down" d="M517.269-64.266c-0.449-0.008-0.98-0.012-1.509-0.012-13.675 0-26.644 3.026-38.273 8.443l0.558-0.233c-66.947 28.82-112.971 94.215-112.992 170.363v144.609h-234.18c-1.496-0.266-3.219-0.417-4.977-0.417s-3.48 0.152-5.155 0.443l0.178-0.026c-38.185 7.541-70.454 28.718-92.214 58.138l-0.288 0.408c-16.817 22.159-26.939 50.201-26.939 80.608 0 6.258 0.428 12.417 1.258 18.446l-0.078-0.698 64.399 426.791c11.101 66.793 68.451 117.089 137.549 117.089 0.011 0 0.022 0 0.033 0h680.288c0.001 0 0.003 0 0.005 0 76.542 0 138.669-61.718 139.332-138.102v-330.256c-0.332-76.701-62.588-138.751-139.336-138.751 0 0-0.001 0-0.001 0h-114.162l-159.827-356.538c-16.74-35.75-52.338-60.111-93.646-60.302h-0.025zM136.143 345.546h273.404c0.001 0 0.003 0 0.004 0 23.926 0 43.323-19.397 43.323-43.323 0-0.206-0.001-0.412-0.004-0.616v0.032-187.343c0-0.119-0.001-0.259-0.001-0.401 0-39.702 23.807-73.843 57.925-88.929l0.622-0.246c1.538-0.63 3.325-0.996 5.196-0.996 5.795 0 10.77 3.507 12.919 8.516l0.034 0.092 168.023 374.101v468.358h-492.947c-0.198 0.003-0.429 0.004-0.663 0.004-25.238 0-46.188-18.355-50.23-42.443l-0.041-0.299-65.571-427.377c-0.255-1.743-0.401-3.756-0.401-5.801 0-10.295 3.691-19.729 9.822-27.049l-0.054 0.066c9.372-12.307 22.771-21.127 38.206-24.509l0.434-0.080zM786.575 439.218h98.355c0.174-0.003 0.38-0.003 0.586-0.003 28.13 0 50.934 22.804 50.934 50.934 0 0.001 0 0.003 0 0.004v0 331.949c-0.329 27.879-23.005 50.352-50.931 50.352-0.207 0-0.414-0.001-0.62-0.004h-98.324z" />
+<glyph unicode="&#xe9a5;" glyph-name="directions-alt" data-tags="directions-alt" d="M512-63.972c-0.004 0-0.010 0-0.016 0-27.661 0-52.702 11.211-70.831 29.334l-411.791 411.791c-18.134 18.13-29.35 43.178-29.35 70.845s11.216 52.715 29.35 70.845l411.791 411.791c18.415 17.494 43.374 28.255 70.845 28.255s52.43-10.76 70.891-28.296l-0.044 0.042 411.791-411.791c18.134-18.13 29.35-43.178 29.35-70.845s-11.216-52.715-29.35-70.845l-411.791-411.791c-18.129-18.125-43.17-29.334-70.831-29.334-0.005 0-0.010 0-0.016 0h0.001zM512 876.949c-0.143 0.005-0.31 0.008-0.477 0.008-4.422 0-8.397-1.921-11.133-4.975l-0.013-0.014-412.345-412.345c-3.072-2.929-4.981-7.053-4.981-11.623s1.91-8.694 4.975-11.617l412.351-412.351c2.502-3.832 6.772-6.329 11.623-6.329s9.121 2.497 11.591 6.276l0.032 0.053 412.345 412.345c3.072 2.929 4.981 7.053 4.981 11.623s-1.91 8.694-4.975 11.617l-412.351 412.351c-2.749 3.068-6.722 4.989-11.146 4.989-0.167 0-0.335-0.003-0.502-0.008h0.025zM441.707 314.058c-0.057 0-0.126 0-0.193 0-11.4 0-21.712 4.657-29.137 12.173l-121.77 121.77c-7.501 7.51-12.141 17.881-12.141 29.334s4.639 21.825 12.141 29.335v0l121.767 122.873c7.51 7.501 17.881 12.141 29.334 12.141s21.825-4.639 29.335-12.141v0c7.501-7.51 12.141-17.881 12.141-29.334s-4.639-21.825-12.141-29.335v0l-94.092-92.985 94.092-92.985c7.501-7.51 12.141-17.881 12.141-29.334s-4.639-21.825-12.141-29.335v0c-7.429-7.52-17.741-12.177-29.141-12.177-0.067 0-0.136 0-0.204 0h0.010zM705.718 281.955c-22.801 0.307-41.204 18.71-41.511 41.481v110.726h-345.927c-22.926 0-41.511 18.585-41.511 41.511s18.585 41.511 41.511 41.511v0h387.438c22.801-0.307 41.204-18.71 41.511-41.481v-154.451c-1.483-21.852-19.449-39.046-41.487-39.297h-0.025z" />
+<glyph unicode="&#xe9a6;" glyph-name="directions" data-tags="directions" d="M512-63.972c-0.004 0-0.010 0-0.016 0-27.661 0-52.702 11.211-70.831 29.334l-411.791 411.791c-18.134 18.13-29.35 43.178-29.35 70.845s11.216 52.715 29.35 70.845l411.791 411.791c18.415 17.494 43.374 28.255 70.845 28.255s52.43-10.76 70.891-28.296l-0.044 0.042 411.791-411.791c18.134-18.13 29.35-43.178 29.35-70.845s-11.216-52.715-29.35-70.845l-411.791-411.791c-18.129-18.125-43.17-29.334-70.831-29.334-0.005 0-0.010 0-0.016 0h0.001zM512 876.949c-0.143 0.005-0.31 0.008-0.477 0.008-4.422 0-8.397-1.921-11.133-4.975l-0.013-0.014-412.345-412.345c-3.072-2.929-4.981-7.053-4.981-11.623s1.91-8.694 4.975-11.617l412.351-412.351c2.502-3.832 6.772-6.329 11.623-6.329s9.121 2.497 11.591 6.276l0.032 0.053 412.345 412.345c3.072 2.929 4.981 7.053 4.981 11.623s-1.91 8.694-4.975 11.617l-412.351 412.351c-2.749 3.068-6.722 4.989-11.146 4.989-0.167 0-0.335-0.003-0.502-0.008h0.025zM582.293 314.058c-0.057 0-0.126 0-0.193 0-11.4 0-21.712 4.657-29.137 12.173l-0.004 0.004c-7.501 7.51-12.141 17.881-12.141 29.334s4.639 21.825 12.141 29.335v0l94.092 92.985-94.092 92.985c-8.139 7.599-13.212 18.392-13.212 30.371 0 22.926 18.585 41.511 41.511 41.511 11.979 0 22.771-5.073 30.347-13.188l0.022-0.025 121.767-122.319c7.668-7.537 12.42-18.020 12.42-29.612s-4.752-22.075-12.413-29.605l-0.006-0.005-121.767-121.767c-7.429-7.52-17.741-12.177-29.141-12.177-0.067 0-0.136 0-0.204 0h0.010zM318.282 281.955c-22.801 0.307-41.204 18.71-41.511 41.481v154.451c0.307 22.801 18.71 41.204 41.481 41.511h387.468c22.926 0 41.511-18.585 41.511-41.511s-18.585-41.511-41.511-41.511v0h-345.927v-110.696c0.021-0.497 0.032-1.078 0.032-1.663 0-23.049-18.537-41.768-41.516-42.061h-0.027z" />
+<glyph unicode="&#xe9a7;" glyph-name="reply" data-tags="reply" d="M680.456 210.841c-0.386-0.011-0.839-0.017-1.294-0.017-27.363 0-49.546 22.183-49.546 49.546 0 13.679 5.543 26.064 14.506 35.029v0l258.959 256.978-258.959 256.978c-8.952 8.963-14.491 21.342-14.491 35.012s5.537 26.049 14.491 35.013v0c8.963 8.952 21.342 14.491 35.012 14.491s26.049-5.537 35.013-14.491v0l294.632-291.991c8.952-8.963 14.491-21.342 14.491-35.012s-5.537-26.049-14.491-35.013v0l-294.632-291.991c-8.452-8.957-20.405-14.534-33.659-14.534-0.011 0-0.023 0-0.034 0h0.002zM49.571 2.087c-27.215 0.367-49.179 22.331-49.546 49.51v500.779c0.367 27.215 22.331 49.179 49.51 49.546h924.892c27.363 0 49.546-22.183 49.546-49.546s-22.183-49.546-49.546-49.546v0h-875.31v-451.197c-0.367-27.215-22.331-49.179-49.51-49.546h-0.036z" />
+<glyph unicode="&#xe9a8;" glyph-name="file-o" data-tags="file-o" d="M894.081 623.535l-323.57 323.57c-7.935 7.944-18.897 12.862-31.009 12.873h-261.55c-88.866 0-160.907-72.041-160.907-160.907v0-702.14c0-88.866 72.041-160.907 160.907-160.907v0h468.093c88.866 0 160.907 72.041 160.907 160.907v0 497.35c-0.494 11.473-5.32 21.731-12.872 29.254l-0.001 0.001zM585.139 810.188l172.024-172.024h-172.024zM746.047 23.791h-468.093c-40.394 0-73.139 32.746-73.139 73.139v0 702.14c0 40.394 32.746 73.139 73.139 73.139v0h219.419v-277.931c0.325-24.105 19.779-43.559 43.852-43.884h277.962v-453.466c0-40.394-32.746-73.139-73.139-73.139v0z" />
+<glyph unicode="&#xe9a9;" glyph-name="ticket" data-tags="ticket" d="M921.588 53.040h-819.175c-56.419 0.331-102.067 45.977-102.397 102.366v146.313c0.325 24.105 19.78 43.559 43.853 43.884h0.032c56.552 0 102.397 45.844 102.397 102.397s-45.844 102.397-102.397 102.397v0c-24.105 0.325-43.559 19.78-43.884 43.853v146.313c0.331 56.419 45.977 102.067 102.366 102.397h819.207c56.419-0.331 102.067-45.977 102.397-102.366v-146.313c-0.325-24.105-19.78-43.559-43.853-43.884h-0.032c-56.552 0-102.397-45.844-102.397-102.397s45.844-102.397 102.397-102.397v0c24.105-0.325 43.559-19.78 43.884-43.853v-146.313c-0.331-56.419-45.977-102.067-102.366-102.397h-0.032zM87.785 263.1v-107.664c0-8.079 6.55-14.629 14.629-14.629v0h819.175c8.079 0 14.629 6.55 14.629 14.629v0 107.664c-84.233 20.753-145.724 95.646-145.724 184.9s61.489 164.147 144.417 184.627l1.306 0.273v107.664c0 8.079-6.55 14.629-14.629 14.629v0h-819.175c-8.079 0-14.629-6.55-14.629-14.629v0-107.664c84.233-20.753 145.724-95.646 145.724-184.9s-61.489-164.147-144.417-184.627l-1.306-0.273z" />
+<glyph unicode="&#xe9aa;" glyph-name="id-card" data-tags="id-card" d="M921.588 53.040h-819.175c-56.419 0.331-102.067 45.977-102.397 102.366v585.157c0.331 56.419 45.977 102.067 102.366 102.397h819.207c56.419-0.331 102.067-45.977 102.397-102.366v-585.157c-0.331-56.419-45.977-102.067-102.366-102.397h-0.032zM102.412 755.191c-8.079 0-14.629-6.55-14.629-14.629v0-585.126c0-8.079 6.55-14.629 14.629-14.629v0h819.175c8.079 0 14.629 6.55 14.629 14.629v0 585.126c0 8.079-6.55 14.629-14.629 14.629v0zM336.462 462.629c-64.631 0-117.025 52.394-117.025 117.025s52.394 117.025 117.025 117.025c64.631 0 117.025-52.394 117.025-117.025v0c0-64.631-52.394-117.025-117.025-117.025v0zM336.462 608.909c-16.158 0-29.256-13.098-29.256-29.256s13.098-29.256 29.256-29.256c16.158 0 29.256 13.098 29.256 29.256v0c0 16.158-13.098 29.256-29.256 29.256v0zM512 228.578c-24.105 0.325-43.559 19.78-43.884 43.853v0.032c0 39.788-9.947 73.14-131.653 73.14s-131.653-33.352-131.653-73.14c0-24.237-19.648-43.884-43.884-43.884s-43.884 19.648-43.884 43.884v0c0 160.909 165.005 160.909 219.422 160.909s219.422 0 219.422-160.909c-0.325-24.105-19.78-43.559-43.853-43.884h-0.032zM804.562 521.14h-175.538c-24.237 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h175.538c24.237 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0zM746.051 345.603h-117.025c-24.237 0-43.884 19.648-43.884 43.884s19.648 43.884 43.884 43.884v0h117.025c24.237 0 43.884-19.648 43.884-43.884s-19.648-43.884-43.884-43.884v0z" />
+<glyph unicode="&#xe9ab;" glyph-name="compass" data-tags="compass" d="M736.143 697.173l-277.617-113.777c-38.623-15.541-68.655-45.573-83.837-83.191l-0.359-1.004-113.777-277.617c-0.848-2.097-1.341-4.529-1.341-7.076 0-8.091 4.968-15.023 12.020-17.908l0.129-0.047c2.113-0.807 4.557-1.275 7.111-1.275s4.997 0.467 7.252 1.321l-0.141-0.047 277.617 113.777c38.623 15.541 68.655 45.573 83.837 83.191l0.359 1.004 113.777 277.617c0.848 2.097 1.341 4.529 1.341 7.076 0 8.091-4.968 15.023-12.020 17.908l-0.129 0.047c-2.113 0.807-4.557 1.275-7.111 1.275s-4.997-0.467-7.252-1.321l0.141 0.047zM512 391.111c-31.419 0-56.889 25.471-56.889 56.889s25.471 56.889 56.889 56.889c31.419 0 56.889-25.471 56.889-56.889v0c0-31.419-25.471-56.889-56.889-56.889v0zM512-64c-282.769 0-512 229.231-512 512s229.231 512 512 512c282.769 0 512-229.231 512-512v0c0-282.769-229.231-512-512-512v0zM512 874.667c-235.641 0-426.667-191.025-426.667-426.667s191.025-426.667 426.667-426.667c235.641 0 426.667 191.025 426.667 426.667v0c0 235.641-191.025 426.667-426.667 426.667v0z" />
+<glyph unicode="&#xe9ac;" glyph-name="step-backward-alt" data-tags="step-backward-alt" d="M256-32c-26.365 0.355-47.643 21.635-48 47.966v896.034c0 26.51 21.49 48 48 48s48-21.49 48-48v0-895.999c-0.357-26.365-21.635-47.645-47.965-48h-0.035zM768.001-63.999c-13.225 0.159-25.171 5.502-33.928 14.088l-447.992 447.992c-8.673 8.682-14.039 20.677-14.039 33.92s5.365 25.237 14.039 33.921v0l448 448c8.682 8.673 20.677 14.040 33.919 14.040 26.495 0 47.976-21.466 48-47.955v-896.002c0-0.096 0.001-0.209 0.001-0.321 0-19.695-12.024-36.583-29.128-43.723l-0.312-0.115c-5.472-2.393-11.848-3.803-18.546-3.84h-0.014zM387.84 431.999l332.16-332.16v664.32z" />
+<glyph unicode="&#xe9ad;" glyph-name="step-forward-alt" data-tags="step-forward-alt" d="M767.992-31.984c-26.365 0.355-47.643 21.634-47.998 47.964v896.005c0 26.509 21.49 47.998 47.998 47.998s47.998-21.49 47.998-47.998v0-895.97c-0.355-26.365-21.634-47.643-47.964-47.998h-0.034zM256.008-63.983c-6.712 0.036-13.087 1.446-18.869 3.96l0.31-0.12c-17.419 7.257-29.44 24.143-29.44 43.838 0 0.112 0 0.225 0.001 0.337v-0.018 895.97c0 0.096-0.001 0.208-0.001 0.321 0 19.694 12.022 36.581 29.128 43.722l0.313 0.115c5.493 2.373 11.887 3.753 18.605 3.753 13.222 0 25.195-5.346 33.875-13.993l447.984-447.984c8.673-8.683 14.038-20.675 14.038-33.918s-5.364-25.235-14.038-33.92v0l-447.986-447.986c-8.679-8.689-20.669-14.068-33.917-14.080h-0.003zM304.006 764.149v-664.298l332.149 332.149z" />
+<glyph unicode="&#xe9ae;" glyph-name="forward" data-tags="forward" d="M43.9-5.473c-6.339 0.033-12.367 1.319-17.862 3.626l0.309-0.115c-15.579 7.085-26.236 22.473-26.331 40.361v819.188c0 0.001 0 0.004 0 0.005 0 24.237 19.648 43.884 43.884 43.884 11.537 0 22.035-4.453 29.869-11.732l-0.027 0.025 437.089-409.588c8.652-8.039 14.048-19.481 14.048-32.182s-5.396-24.143-14.021-32.156l-0.027-0.025-437.089-409.588c-7.722-7.249-18.143-11.703-29.606-11.703-0.082 0-0.166 0-0.248 0.001h0.012zM87.785 755.191v-615.552l328.841 308.361zM543.011-5.473c-0.038 0-0.085 0-0.132 0-6.090 0-11.879 1.292-17.105 3.618l0.269-0.107c-15.915 6.799-26.874 22.302-26.916 40.368v819.181c0.439 24.221 20.177 43.687 44.463 43.687 11.505 0 21.99-4.369 29.885-11.539l-0.037 0.033 436.503-409.588c8.652-8.039 14.048-19.481 14.048-32.182s-5.396-24.143-14.021-32.156l-0.027-0.025-436.503-409.588c-8.053-7.196-18.715-11.62-30.409-11.702h-0.016zM586.896 755.191v-615.552l328.841 308.361z" />
+<glyph unicode="&#xe9af;" glyph-name="backward" data-tags="backward" d="M980.63-20.63c-0.070 0-0.152 0-0.236 0-11.475 0-21.908 4.458-29.662 11.737l0.023-0.022-438.755 410.052c-8.662 8.048-14.064 19.503-14.064 32.219s5.403 24.171 14.037 32.193l0.027 0.025 437.584 410.052c7.815 7.264 18.325 11.721 29.875 11.721 24.264 0 43.934-19.67 43.934-43.934 0-0.001 0-0.004 0-0.005v0-820.103c-0.095-17.921-10.764-33.327-26.082-40.305l-0.279-0.114c-4.834-2.050-10.444-3.324-16.328-3.513l-0.074-0.001zM607.484 433.355l329.213-308.71v616.248zM480.954-20.63c-11.725 0.082-22.4 4.511-30.505 11.755l0.045-0.040-436.997 410.052c-8.662 8.048-14.064 19.503-14.064 32.219s5.403 24.171 14.037 32.193l0.027 0.025 439.927 410.052c7.867 7.145 18.364 11.519 29.882 11.519 24.312 0 44.073-19.489 44.512-43.695v-820.144c-0.041-18.093-11.012-33.612-26.66-40.311l-0.287-0.108c-5.024-2.282-10.894-3.611-17.074-3.611-1 0-1.992 0.034-2.975 0.103l0.133-0.007zM107.806 433.355l329.213-308.71v616.248z" />
+<glyph unicode="&#xe9b0;" glyph-name="fast-backward" data-tags="fast-backward" d="M980.1-20.1c-12.113 0.011-23.078 4.929-31.011 12.872v0l-409.588 409.588c-7.929 7.939-12.835 18.903-12.835 31.011s4.904 23.072 12.835 31.013v0l409.588 409.588c7.935 7.905 18.883 12.792 30.97 12.792 6.141 0 11.989-1.262 17.296-3.54l-0.285 0.108c15.926-6.635 26.916-22.074 26.916-40.080 0-0.103 0-0.206-0.001-0.309v0.016-819.175c0-0.088 0.001-0.191 0.001-0.293 0-18.006-10.992-33.445-26.631-39.975l-0.287-0.106c-5.003-2.189-10.831-3.478-16.956-3.511h-0.012zM632.535 433.371l303.68-303.68v607.36zM43.9 9.156c-24.105 0.325-43.559 19.78-43.884 43.853v819.207c0 24.237 19.648 43.884 43.884 43.884s43.884-19.648 43.884-43.884v0-819.175c-0.325-24.105-19.78-43.559-43.853-43.884h-0.032zM512-20.1c-12.113 0.011-23.078 4.929-31.011 12.872v0l-409.588 409.588c-7.929 7.939-12.835 18.903-12.835 31.011s4.904 23.072 12.835 31.013v0l409.588 409.588c7.935 7.905 18.883 12.792 30.97 12.792 6.141 0 11.989-1.262 17.296-3.54l-0.285 0.108c15.926-6.635 26.916-22.074 26.916-40.080 0-0.103 0-0.206-0.001-0.309v0.016-819.175c0-0.088 0.001-0.191 0.001-0.293 0-18.006-10.992-33.445-26.631-39.975l-0.287-0.106c-5.003-2.189-10.831-3.478-16.956-3.511h-0.012zM164.435 433.371l303.68-303.68v607.36z" />
+<glyph unicode="&#xe9b1;" glyph-name="fast-forward" data-tags="fast-forward" d="M43.886-5.486c-6.137 0.033-11.966 1.322-17.253 3.621l0.284-0.11c-15.926 6.635-26.917 22.075-26.917 40.081 0 0.103 0 0.206 0.001 0.309v-0.016 819.2c0.022 24.221 19.662 43.847 43.886 43.847 12.11 0 23.073-4.904 31.013-12.835v0l409.6-409.6c7.93-7.939 12.835-18.904 12.835-31.012s-4.904-23.073-12.835-31.013v0l-409.6-409.6c-7.935-7.945-18.898-12.863-31.011-12.874h-0.003zM87.772 751.689v-607.378l303.689 303.689zM980.114 23.772c-24.106 0.325-43.561 19.78-43.886 43.854v819.231c0 24.237 19.648 43.886 43.886 43.886s43.886-19.648 43.886-43.886v0-819.2c-0.325-24.106-19.78-43.561-43.854-43.886h-0.032zM512-5.486c-6.137 0.033-11.966 1.322-17.253 3.621l0.284-0.11c-15.926 6.635-26.917 22.075-26.917 40.081 0 0.103 0 0.206 0.001 0.309v-0.016 819.2c0.022 24.221 19.662 43.847 43.886 43.847 12.11 0 23.073-4.904 31.013-12.835v0l409.6-409.6c7.93-7.939 12.835-18.904 12.835-31.012s-4.904-23.073-12.835-31.013v0l-409.6-409.6c-7.935-7.945-18.898-12.863-31.011-12.874h-0.003zM555.886 751.689v-607.378l303.689 303.689z" />
+<glyph unicode="&#xe9b2;" glyph-name="pause" data-tags="pause" d="M313.813-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036zM710.187-63.983c-27.215 0.367-49.18 22.332-49.547 49.511v924.907c0 27.364 22.183 49.547 49.547 49.547s49.547-22.183 49.547-49.547v0-924.872c-0.367-27.215-22.332-49.18-49.511-49.547h-0.036z" />
+<glyph unicode="&#xe9b3;" glyph-name="play" data-tags="play" d="M280.358-64.923c-6.942 0.037-13.534 1.495-19.514 4.095l0.321-0.124c-18.014 7.505-30.445 24.968-30.445 45.335 0 0.116 0 0.233 0.002 0.349v-0.019 926.568c1.044 26.589 22.852 47.75 49.602 47.75 12.752 0 24.381-4.809 33.173-12.712l-0.045 0.040 463.285-463.285c8.969-8.98 14.517-21.381 14.517-35.077s-5.547-26.097-14.517-35.078v0l-463.285-463.285c-8.576-8.44-20.14-13.868-32.964-14.555l-0.127-0.006zM329.996 791.492v-686.985l343.492 343.492z" />
+<glyph unicode="&#xe9b4;" glyph-name="facebook" data-tags="facebook" d="M1023.989 444.801c-3.553 280.043-231.4 505.695-511.951 505.695-282.764 0-511.989-229.225-511.989-511.989 0-254.507 185.702-465.641 428.999-505.297l2.953-0.397v362.872h-127.997v149.116h127.997v113.278c-0.721 6.073-1.134 13.108-1.134 20.239 0 100.028 81.088 181.117 181.117 181.117 4.227 0 8.421-0.145 12.576-0.43l-0.561 0.031c40.895-0.576 80.479-4.278 119.075-10.879l-4.516 0.639v-127.997h-63.999c-2.79 0.372-6.015 0.583-9.289 0.583-41 0-74.238-33.238-74.238-74.238 0-2.458 0.12-4.89 0.352-7.287l-0.024 0.304v-96.638h142.077l-23.040-149.116h-118.397v-358.392c246.274 40.033 432 251.177 432 505.702 0 1.084-0.003 2.169-0.010 3.253l0.001-0.166z" />
+<glyph unicode="&#xe9b5;" glyph-name="github" data-tags="github" d="M342.537 135.934c0-4.477-4.477-7.674-10.871-7.674s-11.511 0-11.511 7.674 5.115 7.674 10.871 7.674 11.511-3.197 11.511-7.674zM278.59 145.526c0-4.477 0-9.592 8.952-10.871 1.214-0.597 2.642-0.946 4.152-0.946 3.78 0 7.050 2.187 8.614 5.366l0.025 0.057c0 4.477 0 8.952-8.952 10.871s-11.511 0-12.789-4.477zM369.395 148.723c-5.755 0-9.592-5.115-8.952-10.232s5.755-7.034 12.151-5.755 9.592 5.755 8.952 10.232-5.755 6.395-12.151 5.755zM505.605 959.584c-1.401 0.013-3.056 0.022-4.712 0.022-276.536 0-500.713-224.177-500.713-500.713 0-5.405 0.085-10.79 0.256-16.152l-0.019 0.784c-0.043-2.548-0.069-5.556-0.069-8.569 0-228.113 144.076-422.574 346.195-497.35l3.671-1.189c26.218-4.477 35.81 12.151 35.81 25.58s0 85.69 0 127.896c0 0-144.523-31.974-175.218 63.949 0 0-23.021 63.949-56.913 77.378 0 0-47.321 33.253 3.197 32.614 34.33-4.756 63.049-25.238 79.017-53.815l0.277-0.541c18.278-35.272 54.506-58.959 96.268-58.959 20.145 0 39.003 5.513 55.146 15.109l-0.498-0.274c2.59 27.799 14.547 52.403 32.64 71.009l-0.027-0.027c-115.106 13.429-231.491 30.055-231.491 234.050-0.145 2.57-0.228 5.577-0.228 8.605 0 45.473 18.687 86.583 48.8 116.067l0.028 0.028c-6.646 19.325-10.482 41.593-10.482 64.756 0 28.316 5.734 55.295 16.103 79.836l-0.505-1.347c43.484 14.069 142.605-56.913 142.605-56.913 38.806 11.37 83.386 17.912 129.495 17.912s90.69-6.541 132.864-18.747l-3.369 0.835s99.119 70.982 142.605 56.913c10.054-23.11 15.902-50.029 15.902-78.316 0-23.246-3.951-45.569-11.215-66.335l0.429 1.407c32.709-30.551 53.097-73.938 53.097-122.086 0-0.919-0.007-1.836-0.022-2.75l0.001 0.138c0-204.633-121.502-220.621-236.608-234.050 20.129-22.501 32.432-52.369 32.432-85.111 0-3.805-0.166-7.572-0.492-11.293l0.034 0.483c0-71.622 0-159.871 0-177.137-0.001-0.076-0.001-0.166-0.001-0.258 0-14.833 12.025-26.858 26.858-26.858 3.209 0 6.287 0.564 9.141 1.596l-0.187-0.058c204.623 75.025 347.995 268.129 347.995 494.721 0 3.906-0.042 7.803-0.127 11.688l0.010-0.579c0.012 1.343 0.019 2.929 0.019 4.517 0 282.54-229.044 511.584-511.584 511.584-2.256 0-4.508-0.015-6.757-0.043l0.342 0.003zM201.213 229.938s0-7.034 0-10.871c1.389-1.394 3.312-2.257 5.436-2.257s4.047 0.863 5.436 2.257v0s0 7.034 0 11.511-8.314 1.918-10.871-0.64zM178.831 247.204s0-6.395 4.477-8.314c1.064-1.308 2.674-2.137 4.477-2.137s3.413 0.829 4.468 2.127l0.009 0.010s0 6.395-4.477 8.314-7.674 1.918-8.952 0zM242.778 171.744s0-8.952 0-13.429 10.871-5.115 13.429 0 0 8.952 0 13.429-8.314 3.197-10.871 0zM219.118 203.080s0-7.674 0-12.789 8.952-7.034 12.151-5.115c1.56 1.787 2.512 4.14 2.512 6.715s-0.952 4.928-2.522 6.727l0.010-0.012c-3.197 5.115-8.314 7.034-12.151 4.477z" />
+<glyph unicode="&#xe9b6;" glyph-name="twitter" data-tags="twitter" d="M916.838 654.813c0-8.789 0-18.096 0-26.886 0.007-1.078 0.011-2.355 0.011-3.631 0-325.813-264.124-589.936-589.936-589.936-1.276 0-2.552 0.004-3.827 0.012l0.196-0.001c-0.51-0.001-1.114-0.002-1.717-0.002-118.435 0-228.719 34.901-321.128 94.979l2.284-1.392c17.062 0 33.091 0 51.704 0 0.002 0 0.005 0 0.007 0 97.98 0 188.092 33.688 259.382 90.114l-0.874-0.667c-91.316 0.843-168.422 60.74-195.032 143.307l-0.407 1.464c11.773-1.974 25.336-3.103 39.164-3.103 0.228 0 0.456 0 0.683 0.001h-0.035c19.516 0.144 38.393 2.587 56.462 7.070l-1.657-0.348c-95.075 19.916-165.451 103.058-165.451 202.636 0 0.015 0 0.030 0 0.046v-0.002c27.158-15.264 59.356-24.854 93.652-26.353l0.448-0.016c-57.044 38.132-94.103 102.278-94.103 175.078 0 0.433 0.001 0.865 0.004 1.298v-0.067c0.070 38.098 10.43 73.76 28.447 104.376l-0.527-0.968c103.206-126.555 255.913-209.348 428.158-218.642l1.498-0.064c-3.124 14.226-4.998 30.628-5.17 47.438l-0.001 0.128c-0.065 1.95-0.103 4.241-0.103 6.541 0 114.221 92.594 206.813 206.813 206.813 61.722 0 117.127-27.038 155.021-69.915l0.191-0.222c49.972 10.236 94.309 28.167 134.131 52.719l-1.769-1.015c-16.162-49.068-48.731-89.016-91.083-114.259l-0.949-0.523c44.586 4.928 85.337 16.248 123.076 33.095l-2.607-1.040c-28.94-41.915-63.161-77.617-102.256-107.223l-1.151-0.837z" />
+<glyph unicode="&#xe9b7;" glyph-name="filter-slash" data-tags="filter-slash" d="M1004.108 935.288c-7.747 14.706-22.886 24.587-40.341 24.696h-421.65c-24.95 0-45.175-20.226-45.175-45.175s20.226-45.175 45.175-45.175v0h331.285l-111.431-154.198c-5.421-7.322-8.676-16.532-8.676-26.503 0-24.752 20.065-44.816 44.816-44.816 14.78 0 27.892 7.156 36.054 18.191l0.086 0.121 165.641 225.875c5.688 7.337 9.117 16.671 9.117 26.809 0 7.369-1.813 14.314-5.016 20.415l0.116-0.241zM310.219 946.734s0 0-3.011 0c-3.291 2.852-7.063 5.273-11.155 7.112l-0.289 0.116c-3.885 1.54-8.385 2.612-13.079 3l-0.172 0.011h-222.261c-17.471-0.11-32.609-9.989-40.237-24.446l-0.12-0.25c-3.089-5.86-4.901-12.805-4.901-20.174 0-10.136 3.43-19.472 9.191-26.909l-0.075 0.1 322.25-437.295v-466.81c0.335-24.814 20.362-44.84 45.142-45.175h240.967c24.814 0.335 44.84 20.362 45.175 45.142v466.843l3.614 5.421 220.455-218.045c8.085-8.184 19.307-13.251 31.713-13.251 0.073 0 0.148 0 0.222 0h-0.011c0.137-0.001 0.299-0.003 0.462-0.003 12.327 0 23.47 5.072 31.455 13.244l0.008 0.008c8.162 8.172 13.212 19.46 13.212 31.923s-5.048 23.751-13.212 31.925v0zM596.326 489.561c-5.634-7.174-9.035-16.335-9.035-26.291 0-0.075 0-0.15 0-0.224v0.011-436.692h-150.584v436.692c0 0.064 0 0.138 0 0.212 0 9.955-3.401 19.117-9.105 26.384l0.071-0.093-277.075 380.073h109.624l355.98-352.366z" />
+<glyph unicode="&#xe9b8;" glyph-name="phone" data-tags="phone" d="M886.693-64.275h-13.467c-160.026 17.856-304.577 71.747-429.374 153.346l3.746-2.3c-119.858 77.12-218.914 175.988-293.94 291.862l-2.302 3.793c-79.488 121.374-133.409 266.357-150.654 422.398l-0.396 4.402c-0.449 4.129-0.705 8.915-0.705 13.764 0 33.499 12.23 64.138 32.468 87.698l-0.148-0.178c22.748 27.565 55.792 45.921 93.167 49.141l0.507 0.035h152.22c68.811-0.070 125.838-50.433 136.308-116.306l0.101-0.786c6.186-45.698 17.046-86.978 32.301-126.063l-1.274 3.701c5.445-14.293 8.602-30.826 8.602-48.093 0-38.102-15.36-72.621-40.225-97.697l-35.702-35.702c57.148-89.292 131.053-162.822 217.85-217.845l2.869-1.699 35.713 35.126c25.068 24.854 59.584 40.214 97.686 40.214 17.267 0 33.797-3.154 49.045-8.917l-0.956 0.318c35.315-13.822 76.581-24.675 119.402-30.688l2.96-0.339c66.678-10.304 117.132-67.286 117.132-136.053 0-1.155-0.014-2.306-0.044-3.455l0.002 0.171v-140.51c0 0 0-0.001 0-0.001 0-76.101-61.525-137.836-137.551-138.165h-0.032zM277.818 872.459h-139.923c-14.387-0.979-27.011-7.794-35.649-18.070l-0.063-0.079c-7.402-8.481-11.91-19.649-11.91-31.87 0-1.557 0.075-3.102 0.218-4.622l-0.015 0.194c15.36-145.534 63.692-277.249 137.347-391.045l-2.107 3.473c70.038-108.811 159.916-198.686 265.265-266.637l3.46-2.091c110.418-72.299 242.202-121.557 384.020-137.782l4.14-0.385c0.876-0.051 1.901-0.082 2.931-0.082 14.116 0 26.923 5.614 36.306 14.733l-0.013-0.013c8.993 9.216 14.563 21.807 14.638 35.698v139.938c0.005 0.32 0.012 0.7 0.012 1.075 0 25.332-18.708 46.298-43.066 49.826l-0.272 0.033c-53.039 7.261-100.842 19.551-146.288 36.646l4.608-1.52c-5.299 2.044-11.429 3.227-17.839 3.227-13.78 0-26.284-5.472-35.452-14.364l0.014 0.013-58.546-58.546c-8.012-7.814-18.974-12.637-31.061-12.637-7.941 0-15.396 2.080-21.853 5.726l0.223-0.115c-125.62 71.885-227.060 173.136-297.132 294.748l-2.038 3.837c-3.709 6.254-5.9 13.781-5.9 21.824 0 12.079 4.944 23.005 12.918 30.863l58.55 58.55c8.886 8.986 14.38 21.346 14.38 34.991 0 6.364-1.195 12.447-3.371 18.038l0.116-0.338c-15.651 40.876-27.948 88.685-34.741 138.244l-0.385 3.437c-3.034 25.502-24.528 45.088-50.597 45.088-0.323 0-0.646-0.002-0.971-0.011l0.048 0.001z" />
+<glyph unicode="&#xe9b9;" glyph-name="shield" data-tags="shield" d="M512-63.233c-5.884 0.076-11.5 1.139-16.713 3.034l0.353-0.112c-294.424 132.986-495.622 424.049-495.622 762.108 0 25.218 1.12 50.181 3.311 74.828l-0.228-3.185c1.091 20.259 15.977 36.738 35.376 40.276l0.266 0.038c170.071 26.272 323.191 75.689 464.402 145.534l-9.257-4.14c5.319 2.475 11.548 3.917 18.114 3.917s12.794-1.442 18.385-4.030l-0.271 0.112c131.953-65.702 285.069-115.119 446.231-140.248l8.916-1.146c19.665-3.576 34.547-20.055 35.634-40.204l0.003-0.11c1.964-21.462 3.084-46.42 3.084-71.642 0-338.056-201.194-629.119-490.377-759.984l-5.245-2.124c-4.86-1.783-10.476-2.845-16.326-2.921h-0.034zM88.991 733.707c-0.817-12.916-1.282-28.011-1.282-43.216 0-292.016 171.793-543.905 419.826-660.115l4.464-1.881c252.498 118.092 424.293 369.981 424.293 661.997 0 15.204-0.465 30.297-1.384 45.268l0.1-2.056c-158.673 27.438-300.659 73.974-432.589 137.992l9.58-4.192c-122.352-59.822-264.337-106.359-413.369-132.403l-9.639-1.394z" />
+<glyph unicode="&#xe9ba;" glyph-name="book" data-tags="book" d="M921.533 959.915h-716.682c-1.243 0.037-2.704 0.062-4.171 0.062-76.892 0-139.525-61.042-142.084-137.312l-0.005-0.236v-725.456c3.196-89.572 76.578-160.974 166.638-160.974 1.887 0 3.764 0.032 5.636 0.094l-0.273-0.005h690.939c24.1 0.324 43.553 19.777 43.877 43.845v936.102c-0.324 24.1-19.777 43.553-43.845 43.877h-0.032zM877.652 23.842h-647.059c-1.635-0.122-3.546-0.19-5.469-0.19-41.629 0-75.733 32.206-78.764 73.058l-0.015 0.26c3.043 41.116 37.15 73.322 78.779 73.322 1.923 0 3.834-0.068 5.723-0.205l-0.254 0.015h647.059zM877.652 257.859h-647.059c-30.908-0.035-59.934-8.052-85.138-22.102l0.893 0.458v586.214c2.714 28.081 26.19 49.857 54.753 49.857 1.322 0 2.628-0.047 3.925-0.14l-0.175 0.011h672.802zM321.859 638.141h380.277c24.235 0 43.877 19.646 43.877 43.877s-19.646 43.877-43.877 43.877v0h-380.277c-24.235 0-43.877-19.646-43.877-43.877s19.646-43.877 43.877-43.877v0zM321.859 433.374h380.277c24.235 0 43.877 19.646 43.877 43.877s-19.646 43.877-43.877 43.877v0h-380.277c-24.235 0-43.877-19.646-43.877-43.877s19.646-43.877 43.877-43.877v0z" />
+<glyph unicode="&#xe9bb;" glyph-name="paypal" data-tags="paypal" d="M330.174 357.727c-7.682-42.896-39.055-245.207-48.017-302.191 0-4.482 0-5.762-7.042-5.762h-167.743c-0.080-0.001-0.175-0.001-0.271-0.001-15.204 0-27.532 12.324-27.532 27.532 0 1.356 0.097 2.688 0.287 3.989l-0.017-0.147 131.888 839.984c3.692 21.668 21.877 38.101 44.080 39.052l0.096 0.002c342.523 0 371.334 8.323 459.046-26.251 135.089-52.499 147.892-179.266 99.235-316.915s-163.261-201.671-315.635-203.593c-97.314 0-156.215 15.364-169.663-55.059zM883.334 682.965c-3.841 3.2-5.121 3.841-6.402 0-5.355-29.455-12.228-55.051-20.948-79.774l1.103 3.586c-89.632-256.095-338.682-234.965-460.326-234.965-0.779 0.096-1.678 0.148-2.591 0.148-11.979 0-21.761-9.396-22.379-21.221l-0.002-0.053c-50.578-320.115-64.022-384.138-64.022-384.138-0.348-1.539-0.545-3.309-0.545-5.121 0-13.404 10.837-24.274 24.228-24.326h143.414c19.695 0.387 35.904 14.834 39.022 33.697l0.032 0.236c0 12.164 0-14.084 32.653 206.154 10.243 49.297 32.013 44.176 64.022 44.176 159.417 0 284.262 64.022 320.115 256.095 6.318 18.661 9.965 40.158 9.965 62.502 0 57.89-24.469 110.067-63.632 146.751l-0.111 0.101z" />
+<glyph unicode="&#xe9bc;" glyph-name="amazon" data-tags="amazon" d="M590.061 661.069c-114.531-3.839-397.983-35.193-397.983-268.094 0-250.818 326.32-261.056 433.175-99.176 33.603-38.347 68.51-73.249 105.572-105.755l1.281-1.101 133.727 127.968s-76.142 58.226-76.142 120.93v335.917c0 57.586-57.586 188.114-264.895 188.114s-319.921-127.968-319.921-238.663l174.038-17.277c14.203 60.869 64.928 106.62 127.331 113.199l0.637 0.053c95.977 0 83.181-67.824 83.181-158.042zM590.061 462.717c0-182.995-198.352-155.482-198.352-39.029s119.010 127.968 198.352 131.807zM909.983 89.047c-103.709-94.959-242.457-153.142-394.795-153.142-5.62 0-11.222 0.080-16.805 0.238l0.821-0.018c-195.949 7.842-370.074 95.152-492.135 230.369l-0.545 0.613c-15.997 17.277 0 25.596 12.797 18.556 172.759-101.736 443.413-268.735 876.588-69.103 19.837 8.319 33.91-4.48 15.357-27.515zM1004.041 83.928c-11.535-27.968-28.737-51.536-50.314-70.185l-0.235-0.197c-12.797-10.238-22.395-6.399-15.357 8.319s46.068 106.215 30.074 127.968-87.020 9.598-113.251 7.038-30.714-4.48-32.634 0 51.186 35.829 88.3 40.309 96.617 0 108.772-13.437c1.186-7.461 1.861-16.066 1.861-24.83 0-26.848-6.362-52.211-17.654-74.664l0.435 0.957z" />
+<glyph unicode="&#xe9bd;" glyph-name="euro" data-tags="euro" d="M634.635-65.058h-8.795c-278.481 6.291-501.825 233.529-501.825 512.936 0 143.581 58.979 273.384 154.031 366.506l0.087 0.085c90.386 89.279 214.664 144.424 351.826 144.424 4.737 0 9.461-0.066 14.166-0.197l-0.694 0.015c137.202-2.016 261.047-57.579 351.895-146.67l-0.082 0.081c7.946-7.955 12.862-18.943 12.862-31.077s-4.914-23.121-12.862-31.078v0c-7.955-7.946-18.943-12.862-31.077-12.862s-23.121 4.914-31.078 12.862v0c-76.784 75.59-182.227 122.264-298.57 122.264-235.104 0-425.69-190.589-425.69-425.69s190.589-425.69 425.69-425.69c110.943 0 211.975 42.441 287.744 111.973l-0.312-0.283 12.901 12.313c8.295 7.915 19.557 12.787 31.955 12.787s23.661-4.872 31.975-12.806l-0.018 0.018c8.518-7.555 13.858-18.529 13.858-30.751 0-10.778-4.154-20.587-10.95-27.911l0.023 0.026-2.931-2.931-17.003-16.418c-90.306-81.848-210.707-131.947-342.808-131.947-1.515 0-3.029 0.007-4.542 0.019l0.232-0.001zM869.176 491.976h-820.891c-24.287 0-43.976 19.689-43.976 43.976s19.689 43.976 43.976 43.976v0h820.891c24.287 0 43.976-19.689 43.976-43.976s-19.689-43.976-43.976-43.976v0zM781.223 316.072h-732.939c-24.287 0-43.976 19.689-43.976 43.976s19.689 43.976 43.976 43.976v0h732.939c24.287 0 43.976-19.689 43.976-43.976s-19.689-43.976-43.976-43.976v0z" />
+<glyph unicode="&#xe9be;" glyph-name="percentage" data-tags="percentage" d="M71.252-59.529c-0.094 0-0.205 0-0.308 0-18.338 0-34.928 7.49-46.876 19.583l-0.004 0.004c-12.065 12.080-19.533 28.766-19.533 47.194s7.46 35.107 19.533 47.195v0l881.496 881.496c12.224 13.091 29.586 21.252 48.86 21.252 36.88 0 66.781-29.901 66.781-66.781 0-19.267-8.161-36.636-21.215-48.818l-0.036-0.034-881.496-881.496c-11.952-12.097-28.542-19.587-46.879-19.587-0.11 0-0.221 0-0.324 0h0.016zM200.36 559.297c-110.644 0-200.343 89.695-200.343 200.343s89.695 200.343 200.343 200.343c110.644 0 200.343-89.695 200.343-200.343v0c0-110.644-89.695-200.343-200.343-200.343v0zM200.36 826.421c-36.88 0-66.781-29.901-66.781-66.781s29.901-66.781 66.781-66.781c36.88 0 66.781 29.901 66.781 66.781v0c-0.495 36.684-30.097 66.286-66.733 66.781h-0.048zM823.64-63.979c-110.644 0-200.343 89.695-200.343 200.343s89.695 200.343 200.343 200.343c110.644 0 200.343-89.695 200.343-200.343v0c0-110.644-89.695-200.343-200.343-200.343v0zM823.64 203.141c-36.88 0-66.781-29.901-66.781-66.781s29.901-66.781 66.781-66.781c36.88 0 66.781 29.901 66.781 66.781v0c-0.495 36.684-30.097 66.286-66.733 66.781h-0.048z" />
+<glyph unicode="&#xe9bf;" glyph-name="credit-card" data-tags="credit-card" d="M921.589 842.96h-819.178c-56.419-0.331-102.067-45.977-102.398-102.366v-585.16c0.331-56.419 45.977-102.067 102.366-102.398h819.209c56.419 0.331 102.067 45.977 102.398 102.366v585.16c-0.331 56.419-45.977 102.067-102.366 102.398h-0.033zM102.411 755.192h819.178c8.080 0 14.628-6.551 14.628-14.628v0-131.653h-848.434v131.653c0 8.080 6.551 14.628 14.628 14.628v0zM921.589 140.808h-819.178c-8.080 0-14.628 6.551-14.628 14.628v0 365.705h848.434v-365.705c0-8.080-6.551-14.628-14.628-14.628v0zM336.461 389.486h-117.025c-32.315 0-58.514-26.197-58.514-58.514s26.197-58.514 58.514-58.514v0h117.025c32.315 0 58.514 26.197 58.514 58.514s-26.197 58.514-58.514 58.514v0z" />
+<glyph unicode="&#xe9c0;" glyph-name="discord" data-tags="discord" d="M658.556 473.6c-2.382-26.99-24.881-47.998-52.287-47.998-28.982 0-52.479 23.493-52.479 52.479 0 28.915 23.387 52.369 52.275 52.478h0.012c29.232-1.029 52.541-24.977 52.541-54.367 0-0.912-0.021-1.819-0.066-2.718l0.004 0.128zM419.203 530.557c-1.342 0.112-2.901 0.177-4.479 0.177-31.457 0-56.958-25.501-56.958-56.958s25.501-56.958 56.958-56.958c31.395 0 56.858 25.398 56.958 56.77v0.011c0.037 0.773 0.062 1.68 0.062 2.592 0 29.39-23.309 53.338-52.446 54.365l-0.095 0.002zM959.983 854.383v-918.365c-127.996 113.917-87.677 76.157-237.43 215.672l26.879-94.717h-580.458c0 0-0.001 0-0.001 0-57.966 0-104.956 46.991-104.956 104.956 0 0.225 0 0.45 0.001 0.674v-0.034 691.813c0 0 0 0.001 0 0.001 0 58.095 46.912 105.231 104.922 105.595h686.087c58.044-0.364 104.956-47.501 104.956-105.595 0 0 0-0.001 0-0.001v0zM814.068 369.282c-1.842 109.078-28.833 211.438-75.397 302.091l1.803-3.86c-39.34 31.405-89.131 51.252-143.451 53.74l-0.544 0.019-7.039-8.32c49.203-12.758 92.082-34.867 128.622-64.491l-0.626 0.493c-59.841 32.916-131.148 52.284-206.976 52.284-64.089 0-124.944-13.834-179.746-38.675l2.738 1.11-30.079-14.719c38.027 29.514 83.314 51.694 132.634 63.513l2.402 0.485-5.119 5.76c-54.865-2.506-104.655-22.353-144.496-54.145l0.501 0.386c-44.765-86.788-71.757-189.15-73.588-297.634l-0.006-0.592c34.053-47.534 89.116-78.14 151.324-78.14 1.699 0 3.393 0.021 5.082 0.067l-0.251-0.005 33.919 42.879c-35.698 10.994-65.253 33.087-85.408 62.187l-0.349 0.53 21.119-12.799c51.636-28.735 113.26-45.65 178.833-45.65 50.896 0 99.412 10.191 143.618 28.643l-2.465-0.912c22.545 8.651 41.948 18.767 59.985 30.772l-1.107-0.693c-22.155-31.125-54.285-53.899-91.661-63.743l-1.137-0.255 33.919-41.598c1.338-0.034 2.912-0.053 4.491-0.053 62.498 0 117.855 30.576 151.928 77.585l0.378 0.544z" />
+<glyph unicode="&#xe9c1;" glyph-name="link" data-tags="link" d="M232.89 82.291c-0.229-0.001-0.5-0.001-0.772-0.001-64.296 0-122.536 25.926-164.839 67.892l0.014-0.014c-41.67 44.195-67.28 103.927-67.28 169.644 0 70.104 29.144 133.401 75.978 178.432l0.081 0.077 220.011 221.767c46.236 47.686 110.48 77.679 181.734 78.989l0.242 0.003c64.887-0.446 123.436-27.23 165.557-70.178l0.036-0.036c42.26-44.485 68.256-104.777 68.256-171.139 0-70.733-29.531-134.567-76.936-179.85l-0.095-0.091-73.728-73.728c-8.035-8.605-19.444-13.968-32.108-13.968-24.236 0-43.886 19.648-43.886 43.886 0 12.665 5.363 24.073 13.943 32.084l0.025 0.023 71.384 76.068c31.073 29.214 50.426 70.586 50.426 116.481 0 41.8-16.055 79.851-42.334 108.318l0.099-0.109c-28.323 24.799-65.659 39.923-106.527 39.923-45.364 0-86.377-18.637-115.797-48.671l-0.027-0.027-218.256-221.181c-30.617-29.25-49.65-70.402-49.65-115.998 0-41.161 15.51-78.698 41.005-107.085l-0.133 0.148c26.409-26.109 62.734-42.236 102.824-42.236 5.002 0 9.944 0.251 14.816 0.741l-0.615-0.049c1.28 0.135 2.767 0.212 4.272 0.212 22.546 0 41.068-17.231 43.113-39.245l0.012-0.171c0.136-1.297 0.214-2.802 0.214-4.324 0-22.665-17.181-41.315-39.226-43.641l-0.191-0.015zM545.938 96.919c-64.887 0.446-123.436 27.23-165.557 70.178l-0.036 0.036c-42.26 44.485-68.256 104.777-68.256 171.139 0 70.733 29.531 134.567 76.936 179.85l0.095 0.091 73.728 73.728c8.035 8.605 19.444 13.968 32.108 13.968 24.236 0 43.886-19.648 43.886-43.886 0-12.665-5.363-24.073-13.943-32.084l-0.025-0.023-71.384-76.068c-31.073-29.214-50.426-70.586-50.426-116.481 0-41.8 16.055-79.851 42.334-108.318l-0.099 0.109c28.323-24.799 65.659-39.923 106.527-39.923 45.364 0 86.377 18.637 115.797 48.671l0.027 0.027 220.596 221.181c29.874 29.148 48.402 69.807 48.402 114.793 0 41.733-15.944 79.74-42.074 108.264l0.109-0.122c-26.409 26.109-62.734 42.236-102.824 42.236-5.002 0-9.944-0.251-14.816-0.741l0.615 0.049c-1.28-0.135-2.767-0.212-4.272-0.212-22.546 0-41.068 17.231-43.113 39.245l-0.012 0.171c-0.136 1.297-0.214 2.802-0.214 4.324 0 22.665 17.181 41.315 39.226 43.641l0.191 0.015c7.239 0.795 15.632 1.247 24.131 1.247 63.452 0 121.008-25.25 163.166-66.25l-0.054 0.053c41.67-44.195 67.28-103.927 67.28-169.644 0-70.104-29.144-133.401-75.978-178.432l-0.081-0.077-220.011-221.767c-46.236-47.686-110.48-77.679-181.734-78.989l-0.242-0.003z" />
+<glyph unicode="&#xe9c2;" glyph-name="map" data-tags="map" d="M974.245 910.829c-15.932 10.721-35.555 17.111-56.669 17.111-14.627 0-28.534-3.067-41.12-8.59l0.658 0.257-208.887-89.524-277.931 117.023c-10.185 4.441-22.051 7.024-34.522 7.024s-24.338-2.583-35.094-7.244l0.571 0.221-255.112-107.663c-39.245-17.382-66.129-55.99-66.129-100.873 0-0.535 0.003-1.071 0.012-1.601l-0.001 0.081v-658.259c-0.001-0.193-0.001-0.422-0.001-0.65 0-38.606 19.576-72.638 49.339-92.718l0.396-0.252c15.932-10.721 35.555-17.111 56.669-17.111 14.627 0 28.534 3.067 41.12 8.59l-0.658-0.257 208.887 89.524 277.931-117.023c9.959-4.44 21.578-7.024 33.803-7.024 0.254 0 0.506 0.001 0.759 0.002h-0.037c12.47 0.016 24.335 2.597 35.099 7.244l-0.579-0.222 255.112 109.419c39.245 17.382 66.129 55.99 66.129 100.873 0 0.535-0.003 1.071-0.012 1.601l0.001-0.081v656.503c0.001 0.193 0.001 0.422 0.001 0.65 0 38.606-19.576 72.638-49.339 92.718l-0.396 0.252zM399.657 852.317l224.685-95.96v-709.749l-224.685 95.96zM112.365 57.141c-2.099-1.232-4.621-1.96-7.312-1.96s-5.216 0.728-7.384 1.996l0.067-0.036c-6.069 4.287-9.983 11.275-9.983 19.174 0 0.459 0.014 0.915 0.041 1.366l-0.002-0.063v659.428c-0.001 0.106-0.002 0.225-0.002 0.349 0 9.66 5.999 17.916 14.475 21.246l0.156 0.052 209.473 90.694v-706.823zM936.211 158.952c0.016-0.329 0.027-0.713 0.027-1.097 0-8.996-5.204-16.772-12.765-20.489l-0.133-0.060-211.228-90.694v706.823l199.525 85.427c2.099 1.232 4.621 1.96 7.312 1.96s5.216-0.728 7.384-1.996l-0.067 0.036c6.069-4.287 9.983-11.275 9.983-19.174 0-0.459-0.014-0.915-0.041-1.366l0.002 0.063z" />
+<glyph unicode="&#xe9c3;" glyph-name="wallet" data-tags="wallet" d="M921.328 725.758h-14.62v131.569c-0.331 56.383-45.949 102.001-102.301 102.333h-0.032c-2.11 0.402-4.538 0.635-7.018 0.635s-4.909-0.229-7.26-0.672l0.242 0.037-695.856-233.902h-15.789l-9.939-3.508h-8.187l-9.357-5.263-7.018-9.939-8.187-7.018-6.432-5.85-7.018-8.771c-1.843-1.659-3.402-3.587-4.62-5.733l-0.060-0.112c-1.923-2.94-3.872-6.386-5.601-9.962l-0.245-0.564-3.508-6.432c-1.391-3.423-2.79-7.711-3.925-12.107l-0.165-0.758c0.126-0.965 0.196-2.083 0.196-3.216s-0.070-2.252-0.21-3.346l0.014 0.13c-0.288-2.979-0.451-6.443-0.451-9.939s0.164-6.961 0.485-10.379l-0.033 0.436v-584.754c0.266-54.991 43.614-99.77 98.010-102.322l0.229-0.010h818.656c56.383 0.331 102.001 45.949 102.333 102.301v584.786c-0.331 56.383-45.949 102.001-102.301 102.333h-0.032zM809.056 871.363c5.781-2.176 9.84-7.618 9.939-14.021v-131.582h-446.167zM935.946 38.672c0-8.075-6.545-14.62-14.62-14.62v0h-818.656c-8.075 0-14.62 6.545-14.62 14.62v0 584.754c0 8.075 6.545 14.62 14.62 14.62v0h818.656c8.075 0 14.62-6.545 14.62-14.62v0zM848.233 331.050c0-40.368-32.724-73.092-73.092-73.092s-73.092 32.724-73.092 73.092c0 40.368 32.724 73.092 73.092 73.092s73.092-32.724 73.092-73.092z" />
+<glyph unicode="&#xe9c4;" glyph-name="flag" data-tags="flag" d="M945.168 888.756c-6.854 4.784-15.36 7.644-24.533 7.644-5.667 0-11.082-1.091-16.037-3.075l0.291 0.101c-63.362-27.754-136.884-48.272-213.777-57.97l-3.973-0.411c-50.991 13.859-95.65 33.834-136.292 59.573l2.021-1.197c-50.286 31.459-109.055 55.026-171.889 67.197l-3.247 0.525c-107.474-9.724-206.538-32.466-299.99-66.82l8.098 2.606c-17.445-6.019-29.758-22.294-29.774-41.446v-874.511c0-24.18 19.602-43.782 43.782-43.782s43.782 19.602 43.782 43.782v0 341.516c65.758 24.646 142.15 42.595 221.505 50.481l3.835 0.307c53.105-13.33 99.794-33.376 142.252-59.613l-2.143 1.233c47.34-29.414 102.383-52.211 161.087-65.302l3.54-0.662h13.426c91.375 11.776 174.319 34.938 251.841 68.29l-6.068-2.323c16.532 6.508 28.021 22.337 28.021 40.848 0 0.004 0 0.013 0 0.017v-0.001 496.801c0.058 0.822 0.086 1.787 0.086 2.754 0 13.445-6.144 25.457-15.776 33.379l-0.076 0.061zM876.865 384.95c-55.28-23.59-119.414-40.863-186.43-48.723l-3.3-0.316c-50.991 13.859-95.65 33.834-136.292 59.573l2.021-1.197c-50.286 31.459-109.055 55.026-171.889 67.197l-3.247 0.525h-11.676c-81.373-7.491-156.277-24.016-227.356-48.724l6.685 2.021v408.651c65.758 24.646 142.15 42.595 221.505 50.481l3.835 0.307c53.105-13.33 99.794-33.376 142.252-59.613l-2.143 1.233c47.34-29.414 102.383-52.211 161.087-65.302l3.54-0.662c72.593 2.928 140.796 18.315 203.651 44.065l-3.998-1.45z" />
+<glyph unicode="&#xe9c5;" glyph-name="youtube" data-tags="youtube" d="M1002.843 695.021c-11.885 44.735-46.258 79.32-89.974 91.303l-0.899 0.211c-108.991 13.585-235.136 21.338-363.093 21.338-12.967 0-25.913-0.079-38.842-0.238l1.964 0.020c-10.965 0.138-23.912 0.217-36.878 0.217-127.957 0-254.101-7.753-377.993-22.812l14.9 1.475c-44.618-12.192-78.989-46.777-90.67-90.619l-0.202-0.895c-13.45-71.849-21.144-154.515-21.144-238.976 0-2.83 0.010-5.654 0.025-8.48l-0.001 0.435c-0.015-2.515-0.025-5.487-0.025-8.463 0-84.76 7.694-167.728 22.419-248.235l-1.273 8.397c12.473-43.944 46.687-77.735 89.978-89.387l0.896-0.205c108.991-13.585 235.136-21.338 363.093-21.338 12.967 0 25.913 0.079 38.842 0.238l-1.964-0.020c10.965-0.138 23.912-0.217 36.878-0.217 127.957 0 254.101 7.753 377.993 22.812l-14.9-1.475c44.184 11.858 78.4 45.649 90.654 88.691l0.222 0.902c13.451 72.109 21.145 155.075 21.145 239.836 0 2.976-0.010 5.952-0.030 8.921l0.002-0.458c0.014 2.39 0.024 5.216 0.024 8.045 0 84.461-7.694 167.123-22.415 247.326l1.272-8.351zM407.049 295.052v304.617l268.139-151.669-268.139-152.31z" />
+<glyph unicode="&#xe9c6;" glyph-name="vimeo" data-tags="vimeo" d="M921.584 959.98h-819.169c-56.554 0-102.397-45.843-102.397-102.397v0-819.169c0-56.554 45.843-102.397 102.397-102.397h819.169c56.554 0 102.397 45.843 102.397 102.397v0 819.169c0 56.554-45.843 102.397-102.397 102.397v0zM861.428 620.154q-5.119-108.157-150.396-296.31c-100.477-127.996-186.234-195.834-255.991-195.834-43.518 0-79.358 39.678-109.437 119.677-58.239 213.112-83.198 337.908-127.996 337.908-22.288-9.156-41.514-20.78-58.626-34.868l0.387 0.309-34.559 44.799c85.118 74.878 166.394 158.075 217.592 162.554s90.237-33.919 105.597-118.396c47.358-300.15 68.477-345.588 154.236-209.272 23.167 31.534 40.499 68.894 49.548 109.38l0.37 1.973c8.32 76.157-58.878 71.038-104.956 51.198q53.118 179.195 206.712 174.714 113.917-3.84 107.517-147.835z" />
+<glyph unicode="&#xe9c7;" glyph-name="moon" data-tags="moon" d="M517.309-62.789c-22.691 0.029-45.007 1.526-66.885 4.41l2.595-0.278c-233.58 31.279-416.401 214.099-447.387 445.014l-0.291 2.662c-2.859 20.354-4.49 43.869-4.49 67.761 0 246.048 172.971 451.698 403.948 501.981l3.392 0.62c4.828 1.146 10.369 1.803 16.065 1.803 24.13 0 45.508-11.78 58.7-29.904l0.144-0.209c8.716-12.084 13.937-27.19 13.937-43.519 0-14.447-4.091-27.937-11.173-39.378l0.187 0.321c-26.726-45.102-42.523-99.41-42.523-157.408 0-16.683 1.308-33.056 3.823-49.030l-0.228 1.77c21.13-133.311 125.031-237.216 256.587-258.114l1.758-0.228c14.358-2.386 30.902-3.749 47.766-3.749 57.921 0 112.086 16.086 158.27 44.036l-1.366-0.768c10.914 6.566 24.086 10.453 38.167 10.453 16.715 0 32.146-5.473 44.609-14.724l-0.202 0.143c18.334-13.090 30.142-34.293 30.142-58.257 0-5.696-0.669-11.235-1.926-16.546l0.097 0.484c-49.878-235.319-255.888-409.342-502.54-409.342-0.413 0-0.822 0-1.235 0.001h0.064zM394.034 860.88c-178.936-53.807-307.056-217.078-307.056-410.275 0-236.171 191.454-427.623 427.623-427.623 193.197 0 356.468 128.116 409.491 304.027l0.784 3.028c-50.869-25.361-110.807-40.205-174.212-40.205-197.518 0-361.392 144.047-392.301 332.818l-0.31 2.3c-2.962 18.244-4.655 39.278-4.655 60.703 0 63.794 15.005 124.084 41.678 177.535l-1.042-2.307z" />
+<glyph unicode="&#xe9c8;" glyph-name="sun" data-tags="sun" d="M512 153.605c-162.589 0-294.395 131.804-294.395 294.395s131.804 294.395 294.395 294.395c162.589 0 294.395-131.804 294.395-294.395v0c-0.29-162.471-131.922-294.103-294.366-294.395h-0.028zM512 665.596c-120.176 0-217.596-97.422-217.596-217.596s97.422-217.596 217.596-217.596c120.176 0 217.596 97.422 217.596 217.596v0c-0.29 120.058-97.538 217.306-217.567 217.596h-0.028zM512 806.395c-21.092 0.285-38.115 17.308-38.399 38.371v76.826c0 21.206 17.191 38.399 38.399 38.399s38.399-17.191 38.399-38.399v0-76.799c-0.285-21.092-17.308-38.115-38.371-38.399h-0.028zM512-63.99c-21.092 0.285-38.115 17.308-38.399 38.371v76.826c0 21.206 17.191 38.399 38.399 38.399s38.399-17.191 38.399-38.399v0-76.799c-0.285-21.092-17.308-38.115-38.371-38.399h-0.028zM985.591 409.601h-76.799c-21.206 0-38.399 17.191-38.399 38.399s17.191 38.399 38.399 38.399v0h76.799c21.206 0 38.399-17.191 38.399-38.399s-17.191-38.399-38.399-38.399v0zM115.206 409.601h-76.799c-21.206 0-38.399 17.191-38.399 38.399s17.191 38.399 38.399 38.399v0h76.799c21.206 0 38.399-17.191 38.399-38.399s-17.191-38.399-38.399-38.399v0zM230.404 691.196c-10.245 0.806-19.244 5.574-25.564 12.757l-0.035 0.043-55.808 51.2c-7.14 7.14-11.557 17.006-11.557 27.903 0 21.794 17.667 39.461 39.461 39.461 10.897 0 20.763-4.417 27.903-11.557v0l51.2-55.808c6.068-6.763 9.778-15.747 9.778-25.599s-3.711-18.837-9.81-25.635l0.031 0.035c-6.356-7.223-15.355-11.995-25.469-12.791l-0.131-0.009zM847.867 73.737c-0.052 0-0.116 0-0.178 0-10.545 0-20.084 4.307-26.953 11.261l-0.003 0.003-52.736 55.808c-2.366 4.842-3.748 10.533-3.748 16.548 0 21.206 17.191 38.399 38.399 38.399 6.016 0 11.709-1.383 16.778-3.85l-0.227 0.099 55.808-51.2c6.939-6.946 11.231-16.541 11.231-27.135s-4.291-20.189-11.231-27.136v0c-6.701-7.568-16.317-12.423-27.072-12.798l-0.065-0.001zM793.596 691.196c-10.245 0.806-19.244 5.574-25.564 12.757l-0.035 0.043c-6.068 6.763-9.778 15.747-9.778 25.599s3.711 18.837 9.81 25.635l-0.031-0.035 51.2 55.808c7.14 7.14 17.006 11.557 27.903 11.557 21.794 0 39.461-17.667 39.461-39.461 0-10.897-4.417-20.763-11.557-27.903v0l-55.808-51.2c-6.356-7.223-15.355-11.995-25.469-12.791l-0.131-0.009zM176.133 73.737c-0.052 0-0.116 0-0.178 0-10.545 0-20.084 4.307-26.953 11.261l-0.003 0.003c-6.939 6.946-11.231 16.541-11.231 27.135s4.291 20.189 11.231 27.136v0l55.808 52.736c4.842 2.366 10.533 3.748 16.548 3.748 21.206 0 38.399-17.191 38.399-38.399 0-6.016-1.383-11.709-3.85-16.778l0.099 0.227-51.2-55.808c-6.876-6.978-16.43-11.301-26.992-11.301-0.591 0-1.178 0.014-1.761 0.042l0.082-0.003z" />
+<glyph unicode="&#xe9c9;" glyph-name="slack" data-tags="slack" d="M215.050 312.963c0-59.379-48.138-107.517-107.517-107.517s-107.517 48.138-107.517 107.517c0 59.379 48.138 107.517 107.517 107.517v0h107.517zM269.445 312.963c0 59.379 48.138 107.517 107.517 107.517s107.517-48.138 107.517-107.517v0-269.434c0-59.379-48.138-107.517-107.517-107.517s-107.517 48.138-107.517 107.517v0zM376.963 744.95c-59.379 0-107.517 48.138-107.517 107.517s48.138 107.517 107.517 107.517c59.379 0 107.517-48.138 107.517-107.517v0-107.517zM376.963 690.555c59.379 0 107.517-48.138 107.517-107.517s-48.138-107.517-107.517-107.517h-269.434c-59.379 0-107.517 48.138-107.517 107.517s48.138 107.517 107.517 107.517v0zM808.95 583.037c0 59.379 48.138 107.517 107.517 107.517s107.517-48.138 107.517-107.517c0-59.379-48.138-107.517-107.517-107.517v0h-107.517v107.517zM754.555 583.037c0-59.379-48.138-107.517-107.517-107.517s-107.517 48.138-107.517 107.517v0 269.434c0 59.379 48.138 107.517 107.517 107.517s107.517-48.138 107.517-107.517v0-269.434zM647.037 151.050c59.379 0 107.517-48.138 107.517-107.517s-48.138-107.517-107.517-107.517c-59.379 0-107.517 48.138-107.517 107.517v0 107.517zM647.037 205.445c-59.379 0-107.517 48.138-107.517 107.517s48.138 107.517 107.517 107.517h269.434c59.379 0 107.517-48.138 107.517-107.517s-48.138-107.517-107.517-107.517v0z" />
+<glyph unicode="&#xe9ca;" glyph-name="send" data-tags="send" d="M998.721 934.721c-15.31 15.206-36.405 24.601-59.695 24.601-9.365 0-18.373-1.518-26.795-4.325l0.597 0.173-854.831-285.138c-34.333-11.124-58.722-42.818-58.722-80.21 0-32.269 18.165-60.295 44.829-74.41l0.459-0.221 354.67-175.29 175.29-355.84c14.186-27.601 42.466-46.16 75.080-46.16 0.106 0 0.207 0 0.309 0h5.827c34.71 2.632 63.306 26.111 73.46 57.839l0.162 0.591 289.228 852.494c2.939 8.121 4.642 17.492 4.642 27.261 0 22.937-9.373 43.685-24.499 58.622l-0.010 0.010zM94.226 589.401l746.151 248.912-414.27-414.27zM653.984 30.226l-165.94 331.884 414.27 414.27z" />
+<glyph unicode="&#xe9cb;" glyph-name="linkedin" data-tags="linkedin" d="M942.030 959.94h-854.301c-1.171 0.058-2.544 0.091-3.924 0.091-44.98 0-81.687-35.426-83.74-79.897l-0.007-0.184v-856.22c1.381-47.853 39.817-86.288 87.54-87.666l0.129-0.003h854.301c45.688 2.098 81.934 39.649 81.934 85.666 0 0.705-0.009 1.408-0.025 2.109l0.001-0.103v856.22c0.007 0.4 0.012 0.873 0.012 1.345 0 43.471-35.24 78.711-78.711 78.711-1.129 0-2.253-0.024-3.37-0.070l0.159 0.006zM320.022 106.28h-149.102v456.266h149.102zM248.991 631.658v0c-0.784-0.028-1.705-0.046-2.629-0.046-41.704 0-75.512 33.808-75.512 75.512 0 1.141 0.025 2.277 0.075 3.406l-0.006-0.16c-0.046 0.985-0.072 2.14-0.072 3.301 0 41.704 33.808 75.512 75.512 75.512 1.375 0 2.743-0.037 4.101-0.109l-0.189 0.007c0.784 0.028 1.705 0.046 2.629 0.046 41.704 0 75.512-33.808 75.512-75.512 0-1.141-0.025-2.277-0.075-3.406l0.006 0.16c0.046-0.985 0.072-2.14 0.072-3.301 0-41.704-33.808-75.512-75.512-75.512-1.375 0-2.743 0.037-4.101 0.109l0.189-0.007zM853.72 106.28h-149.743v249.571c0 59.513-21.118 100.469-74.231 100.469-34.5-0.309-63.758-22.412-74.697-53.194l-0.174-0.559c-3.36-9.138-5.302-19.69-5.302-30.697 0-2.034 0.066-4.051 0.196-6.052l-0.013 0.271v-259.81h-147.182v456.266h147.182v-63.993c25.685 46.508 74.423 77.484 130.396 77.484 1.402 0 2.8-0.019 4.194-0.058l-0.205 0.004c96.629 0 169.581-63.993 169.581-200.297z" />
+<glyph unicode="&#xe9cc;" glyph-name="instagram" data-tags="instagram" d="M512 710.635c-145.049 0-262.635-117.585-262.635-262.635s117.585-262.635 262.635-262.635c145.049 0 262.635 117.585 262.635 262.635v0c0 0.191 0.002 0.416 0.002 0.641 0 144.695-117.299 261.995-261.995 261.995-0.225 0-0.45 0-0.676-0.002h0.035zM512 276.967c-94.459 0-171.033 76.575-171.033 171.033s76.575 171.033 171.033 171.033c94.459 0 171.033-76.575 171.033-171.033v0c0-94.459-76.575-171.033-171.033-171.033v0zM847.020 721.525c0-35.378-28.68-64.058-64.058-64.058s-64.058 28.68-64.058 64.058c0 35.378 28.68 64.058 64.058 64.058v0c35.378 0 64.058-28.68 64.058-64.058v0zM1020.615 657.468c0.053 2.1 0.083 4.576 0.083 7.056 0 80.466-31.5 153.574-82.841 207.667l0.125-0.132c-54.19 52.344-128.080 84.599-209.504 84.599-1.79 0-3.575-0.015-5.357-0.047l0.267 0.003c-83.275 3.843-339.503 3.843-422.778 0-1.952 0.045-4.253 0.071-6.559 0.071-80.622 0-153.889-31.489-208.175-82.838l0.141 0.134c-51.217-53.961-82.717-127.069-82.717-207.535 0-2.482 0.030-4.956 0.090-7.423l-0.008 0.366c-3.843-83.275-3.843-339.503 0-422.778-0.053-2.1-0.083-4.576-0.083-7.056 0-80.466 31.5-153.574 82.841-207.667l-0.125 0.132c54.143-51.217 127.412-82.705 208.032-82.705 2.306 0 4.608 0.026 6.902 0.077l-0.342-0.006c84.556-5.124 338.223-5.124 422.778 0 2.1-0.053 4.576-0.083 7.056-0.083 80.466 0 153.574 31.5 207.667 82.841l-0.132-0.125c51.217 53.961 82.717 127.069 82.717 207.535 0 2.482-0.030 4.956-0.090 7.423l0.008-0.366c3.843 83.275 3.843 339.503 0 422.778zM911.718 145.009c-17.965-44.669-52.697-79.402-96.206-96.954l-1.162-0.414c-68.692-14.541-147.62-22.867-228.491-22.867-25.987 0-51.772 0.86-77.33 2.552l3.471-0.185c-22.061-1.512-47.813-2.374-73.767-2.374-80.681 0-159.416 8.328-235.394 24.172l7.451-1.3c-44.669 17.965-79.402 52.697-96.954 96.206l-0.414 1.162c-26.904 67.901-21.139 228.044-21.139 302.351s-5.765 235.091 21.139 302.351c17.48 45.144 52.371 80.244 96.218 97.607l1.149 0.401c68.527 14.544 147.262 22.873 227.943 22.873 25.954 0 51.706-0.862 77.231-2.558l-3.464 0.185c22.086 1.509 47.872 2.368 73.859 2.368 80.871 0 159.799-8.326 235.971-24.167l-7.48 1.3c44.669-17.965 79.402-52.697 96.954-96.206l0.414-1.162c26.904-67.901 20.498-228.044 20.498-302.351s6.406-235.091-20.498-302.351z" />
+<glyph unicode="&#xe9cd;" glyph-name="car" data-tags="car" d="M966.767 552.495l-107.415 291.887c-13.941 40.405-51.44 68.998-95.682 69.469h-502.102c-43.76-0.101-81.048-27.7-95.509-66.429l-0.231-0.706-107.415-291.887c-34.342-16.711-57.732-51.084-58.377-90.984l-0.001-0.085v-262.699c-0.012-0.59-0.019-1.285-0.019-1.983 0-35.143 17.95-66.093 45.181-84.184l0.372-0.233s0-3.503 0-3.503v-116.754c0-32.241 26.137-58.378 58.378-58.378v0h58.378c32.241 0 58.378 26.137 58.378 58.378v0 102.161h583.775v-102.161c0-32.241 26.137-58.378 58.378-58.378v0h58.378c32.241 0 58.378 26.137 58.378 58.378v0 116.754s0 0 0 3.503c26.927 18.415 44.367 48.984 44.367 83.626 0 0.155 0 0.308-0.001 0.462v-0.023 262.699c-0.415 39.752-23.34 74.055-56.62 90.799l-0.59 0.27zM935.826 198.727c0-8.060-6.535-14.595-14.595-14.595v0h-817.284c-8.060 0-14.595 6.535-14.595 14.595v0 262.699c0 8.060 6.535 14.595 14.595 14.595v0h817.284c8.060 0 14.595-6.535 14.595-14.595v0zM248.14 816.945c2.145 5.454 7.332 9.259 13.417 9.341h502.055c6.095-0.082 11.281-3.887 13.392-9.241l0.034-0.099 81.728-224.169h-692.357zM366.646 330.077c0-48.361-39.205-87.566-87.566-87.566s-87.566 39.205-87.566 87.566c0 48.361 39.205 87.566 87.566 87.566s87.566-39.205 87.566-87.566zM833.667 330.077c0-48.361-39.205-87.566-87.566-87.566s-87.566 39.205-87.566 87.566c0 48.361 39.205 87.566 87.566 87.566s87.566-39.205 87.566-87.566z" />
+<glyph unicode="&#xe9ce;" glyph-name="qrcode" data-tags="qrcode" d="M561.547 959.977v-462.433h462.433v462.433zM924.887 596.638h-264.247v264.247h264.247zM0.023 497.546h462.433v462.433h-462.433zM99.116 860.884h264.247v-264.247h-264.247zM0.023-63.98h462.433v462.433h-462.433zM99.116 299.36h264.247v-264.247h-264.247zM561.547 398.453h115.609v-115.609h-115.609v115.609zM792.764 398.453h115.609v-115.609h-115.609v115.609zM677.156 282.844h115.609v-115.609h-115.609v115.609zM908.371 282.844h115.609v-115.609h-115.609v115.609zM561.547 167.236h115.609v-115.609h-115.609v115.609zM792.764 167.236h115.609v-115.609h-115.609v115.609zM677.156 51.629h115.609v-115.609h-115.609v115.609zM908.371 51.629h115.609v-115.609h-115.609v115.609z" />
+<glyph unicode="&#xe9cf;" glyph-name="building" data-tags="building" d="M365.722 799.066h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM599.767 799.066h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM365.722 594.278h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM599.767 594.278h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM365.722 389.489h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM599.767 389.489h58.511c16.157 0 29.255-13.098 29.255-29.255v-58.511c0-16.157-13.098-29.255-29.255-29.255h-58.511c-16.157 0-29.255 13.098-29.255 29.255v58.511c0 16.157 13.098 29.255 29.255 29.255zM877.694 23.796h-29.255v892.294c-0.325 24.104-19.779 43.558-43.852 43.883h-585.142c-24.104-0.325-43.558-19.779-43.883-43.852v-892.325h-29.255c-24.236 0-43.883-19.647-43.883-43.883s19.647-43.883 43.883-43.883v0h731.387c24.236 0 43.883 19.647 43.883 43.883s-19.647 43.883-43.883 43.883v0zM760.671 23.796h-307.183v131.65c0 16.157-13.098 29.255-29.255 29.255v0h-58.511c-16.157 0-29.255-13.098-29.255-29.255v0-131.65h-73.138v848.41h497.344z" />
+<glyph unicode="&#xe9d0;" glyph-name="whatsapp" data-tags="whatsapp" d="M870.378 811.498c-91.041 91.707-217.17 148.474-356.557 148.474-0.64 0-1.281-0.001-1.92-0.003h0.099c-280.418-0.282-507.634-227.671-507.634-508.129 0-93.024 24.997-180.211 68.642-255.208l-1.302 2.422-71.676-263.024 268.784 70.395c69.896-39.602 153.381-63.238 242.321-63.995l0.223-0.001c0.006 0 0.012 0 0.019 0 281.177 0 509.412 226.669 511.947 507.248l0.001 0.241c-0.978 141.618-59.303 269.426-152.883 361.512l-0.067 0.066zM512 30.106c-0.081 0-0.178 0-0.274 0-79.234 0-153.358 21.884-216.656 59.938l1.903-1.060-15.359 9.599-159.35-42.237 42.237 155.511-10.24 16c-39.739 63.209-63.313 140.066-63.313 222.43 0 233.27 189.104 422.374 422.374 422.374 115.76 0 220.644-46.569 296.938-121.995l-0.040 0.039c77.623-75.954 126.276-181.243 127.989-297.901l0.003-0.321c-2.173-233.734-192.155-422.374-426.196-422.374-0.006 0-0.012 0-0.018 0h0.001zM743.026 346.246c-12.799 6.4-74.875 37.118-86.395 40.958s-20.478 6.4-28.798-6.4c-13.451-18.342-26.668-34.402-40.702-49.701l0.384 0.424c-7.039-8.959-14.719-9.599-27.519 0-73.887 29.731-133.426 82.24-171.269 148.708l-0.882 1.681c-13.439 22.398 12.799 21.119 37.118 69.116 1.722 3.252 2.733 7.107 2.733 11.2s-1.011 7.948-2.796 11.332l0.064-0.132c0 6.4-28.798 69.116-39.038 94.074s-20.478 21.119-28.798 21.759h-24.958c-13.577-0.214-25.68-6.352-33.865-15.937l-0.052-0.063c-26.196-25.492-42.447-61.088-42.447-100.48 0-2.698 0.076-5.38 0.226-8.041l-0.016 0.369c4.318-50.122 23.15-95.162 52.219-131.69l-0.382 0.498c54.892-81.39 128.004-146.508 213.743-190.496l3.204-1.492c35.584-21.122 78.444-33.605 124.218-33.605 9.899 0 19.661 0.583 29.254 1.719l-1.162-0.112c36.419 7.408 66.636 29.449 84.793 59.581l0.322 0.576c5.793 12.526 9.172 27.184 9.172 42.632 0 6.192-0.543 12.256-1.582 18.147l0.091-0.624c-5.76 6.4-14.080 9.599-26.878 16z" />
+<glyph unicode="&#xe9d1;" glyph-name="stop" data-tags="stop" d="M842.308-63.979h-660.618c-100.333 0-181.669 81.336-181.669 181.669v0 660.618c0 100.333 81.336 181.669 181.669 181.669v0h660.618c100.333 0 181.669-81.336 181.669-181.669v0-660.618c0-100.333-81.336-181.669-181.669-181.669v0zM181.692 860.886c-45.606 0-82.577-36.971-82.577-82.577v0-660.618c0-45.606 36.971-82.577 82.577-82.577v0h660.618c45.606 0 82.577 36.971 82.577 82.577v0 660.618c0 45.606-36.971 82.577-82.577 82.577v0z" />
+<glyph unicode="&#xe9d2;" glyph-name="stop-circle" data-tags="stop-circle" d="M512-63.991c-282.764 0-511.991 229.227-511.991 511.991s229.227 511.991 511.991 511.991c282.764 0 511.991-229.227 511.991-511.991v0c0-282.764-229.227-511.991-511.991-511.991v0zM512 874.659c-235.637 0-426.659-191.022-426.659-426.659s191.022-426.659 426.659-426.659c235.637 0 426.659 191.022 426.659 426.659v0c0 235.637-191.022 426.659-426.659 426.659v0zM369.78 675.552h284.439c47.127 0 85.332-38.205 85.332-85.332v-284.439c0-47.127-38.205-85.332-85.332-85.332h-284.439c-47.127 0-85.332 38.205-85.332 85.332v284.439c0 47.127 38.205 85.332 85.332 85.332z" />
+<glyph unicode="&#xe9d3;" glyph-name="telegram" data-tags="telegram" d="M512 959.989c-282.764 0-511.989-229.225-511.989-511.989s229.225-511.989 511.989-511.989c282.764 0 511.989 229.225 511.989 511.989v0c0 282.764-229.225 511.989-511.989 511.989v0zM763.515 609.277l-83.838-396.152c-6.4-28.159-23.040-34.559-46.72-21.76l-127.997 94.719-63.999-59.519c-5.961-7.732-15.19-12.694-25.582-12.799h-0.016l8.959 127.997 236.796 214.395c10.879 8.959 0 14.080-15.36 5.119l-290.555-182.396-127.997 39.679c-27.52 8.32-28.159 27.52 5.76 40.319l493.43 191.996c24.319 7.039 44.8-7.039 37.12-41.599z" />
+<glyph unicode="&#xe9d4;" glyph-name="arrow-up-right" data-tags="arrow-up-right" d="M273.927 831.337c-27.857 0-50.44-22.582-50.44-50.44s22.582-50.44 50.44-50.44v0h449.244l-579.714-579.714c-9.89-9.234-16.053-22.349-16.053-36.904 0-27.857 22.582-50.44 50.44-50.44 14.555 0 27.668 6.164 36.874 16.025l0.028 0.030 579.714 579.714v-449.244c0-27.857 22.582-50.44 50.44-50.44s50.44 22.582 50.44 50.44v0 570.97c-0.038 7.053-1.518 13.753-4.16 19.829l0.126-0.327c-7.47 17.225-23.668 29.376-42.86 30.924l-0.182 0.011z" />
+<glyph unicode="&#xe9d5;" glyph-name="arrow-up-left" data-tags="arrow-up-left" d="M128.665 209.929c0-27.856 22.582-50.438 50.438-50.438s50.438 22.582 50.438 50.438v0 449.241l579.71-579.71c9.233-9.89 22.348-16.053 36.903-16.053 27.856 0 50.438 22.582 50.438 50.438 0 14.555-6.164 27.668-16.025 36.874l-0.030 0.028-579.71 579.71h449.241c27.856 0 50.438 22.582 50.438 50.438s-22.582 50.438-50.438 50.438v0h-570.968c-7.053-0.038-13.753-1.518-19.829-4.16l0.327 0.126c-18.183-7.953-30.702-25.689-30.935-46.373v-0.030z" />
+<glyph unicode="&#xe9d6;" glyph-name="arrow-down-left" data-tags="arrow-down-left" d="M749.048 66.312c27.738 0 50.223 22.484 50.223 50.223s-22.484 50.223-50.223 50.223v0h-447.31l577.218 577.218c9.846 9.194 15.985 22.253 15.985 36.744 0 27.738-22.484 50.223-50.223 50.223-14.491 0-27.549-6.138-36.714-15.954l-0.028-0.030-577.218-577.218v447.31c0 27.738-22.484 50.223-50.223 50.223s-50.223-22.484-50.223-50.223v0-571.861c0.038-7.024 1.513-13.694 4.144-19.745l-0.126 0.325c7.919-18.102 25.578-30.57 46.174-30.801h0.030z" />
+<glyph unicode="&#xe9d7;" glyph-name="arrow-down-right" data-tags="arrow-down-right" d="M896.598 686.855c0 27.949-22.657 50.606-50.606 50.606s-50.606-22.657-50.606-50.606v0-450.722l-581.62 581.62c-9.013 8.416-21.152 13.58-34.498 13.58-27.949 0-50.606-22.657-50.606-50.606 0-13.348 5.166-25.486 13.61-34.529l-0.028 0.030 581.62-581.62h-450.722c-27.949 0-50.606-22.657-50.606-50.606s22.657-50.606 50.606-50.606v0h576.221c7.076 0.039 13.797 1.525 19.894 4.175l-0.328-0.126c15.905 8.356 26.772 24.403 27.661 43.066l0.006 0.114z" />
+<glyph unicode="&#xe9d8;" glyph-name="at" data-tags="at" d="M512 959.973c-282.755 0-511.973-229.218-511.973-511.973v0c-0.022-1.75-0.034-3.816-0.034-5.886 0-279.524 226.599-506.123 506.123-506.123 2.069 0 4.135 0.012 6.199 0.037l-0.313-0.003c24.236 0 43.883 19.647 43.883 43.883s-19.647 43.883-43.883 43.883v0c-1.399-0.016-3.053-0.026-4.708-0.026-231.698 0-419.526 187.828-419.526 419.526 0 1.655 0.010 3.308 0.029 4.959l-0.003-0.251c0.333 234.15 190.058 423.874 424.174 424.206h0.032c281.439 0 424.206-142.768 424.206-424.206v-80.745c0.187-2.116 0.292-4.578 0.292-7.064 0-47.18-38.247-85.426-85.426-85.426s-85.426 38.247-85.426 85.426c0 2.486 0.106 4.948 0.314 7.381l-0.022-0.317v292.556c0 24.236-19.647 43.883-43.883 43.883s-43.883-19.647-43.883-43.883v0-19.894c-44.051 38.526-102.099 62.022-165.637 62.022-0.188 0-0.377 0-0.565 0h0.029c-140.246 0-253.938-113.692-253.938-253.938s113.692-253.938 253.938-253.938v0c75.633 0.27 143.364 33.87 189.31 86.869l0.266 0.313c30.329-52.256 86.021-86.836 149.789-86.836 95.329 0 172.609 77.279 172.609 172.609 0 0.084 0 0.169 0 0.252v-0.014 80.745c0 330.003-181.969 511.973-511.973 511.973zM512 281.829c-91.774 0-166.171 74.397-166.171 166.171s74.397 166.171 166.171 166.171c91.774 0 166.171-74.397 166.171-166.171v0c-0.332-91.641-74.532-165.841-166.14-166.171h-0.032z" />
+<glyph unicode="&#xe9d9;" glyph-name="box" data-tags="box" d="M1022.811 183.526s0 4.096 0 6.436v516.077c-0.023 7.052-1.751 13.696-4.793 19.546l0.112-0.237c-4.397 9.329-11.736 16.668-20.801 20.952l-0.263 0.112-468.096 209.474c-5.326 2.478-11.563 3.924-18.139 3.924s-12.811-1.445-18.411-4.037l0.272 0.112-468.096-209.474c-14.982-7.661-25.187-22.762-25.744-40.299l-0.001-0.074v-516.077c0.941-17.495 11.005-32.44 25.487-40.246l0.258-0.128 468.096-209.474c5.306-2.591 11.546-4.105 18.139-4.105s12.832 1.514 18.389 4.214l-0.251-0.11 468.096 209.474c13.538 6.306 23.285 18.763 25.711 33.677l0.034 0.259zM86.616 638.749l380.328-170.856v-420.117l-380.328 170.27zM554.714 467.895l380.328 170.856v-420.702l-380.328-170.27zM512 868.117l361.019-162.079-361.019-161.493-361.019 161.493z" />
+<glyph unicode="&#xe9da;" glyph-name="history" data-tags="history" d="M876.353 804.525c-91.36 90.984-217.374 147.233-356.525 147.233s-265.163-56.249-356.542-147.25l-72.854-72.854v175.251c0 24.945-20.222 45.168-45.168 45.168s-45.168-20.222-45.168-45.168v0-285.461c0-0.001 0-0.003 0-0.004 0-25.067 20.15-45.426 45.135-45.766h286.096c24.945 0 45.168 20.222 45.168 45.168s-20.222 45.168-45.168 45.168v0h-180.671l76.485 74.678c74.952 74.805 178.417 121.062 292.688 121.062s217.736-46.257 292.695-121.070l-0.007 0.007c372.786-402.897-180.671-958.161-585.375-585.375-8.171 8.161-19.456 13.21-31.918 13.21s-23.747-5.048-31.92-13.21v0c-8.309-8.103-13.464-19.409-13.464-31.918s5.155-23.815 13.454-31.91l0.010-0.008c91.243-91.243 217.293-147.678 356.525-147.678 278.462 0 504.201 225.739 504.201 504.201 0 139.231-56.434 265.282-147.678 356.525v0zM512 703.951c-24.81-0.335-44.833-20.358-45.168-45.135v-210.815c0.011-12.468 5.073-23.753 13.248-31.918v0l152.367-148.753c8.084-8.182 19.304-13.25 31.708-13.25 0.073 0 0.148 0 0.222 0h-0.011c21.988 3.292 38.658 22.048 38.658 44.696 0 10.97-3.91 21.026-10.413 28.851l0.059-0.073-137.31 137.31v193.921c-0.294 24.201-19.326 43.864-43.245 45.162l-0.116 0.006z" />
+<glyph unicode="&#xe9db;" glyph-name="bolt" data-tags="bolt" d="M462.875-64.834c-1.947-0.372-4.188-0.585-6.478-0.585s-4.531 0.213-6.702 0.62l0.224-0.035c-18.586 5.739-31.857 22.766-31.857 42.893 0 0.292 0.003 0.585 0.009 0.876l-0.001-0.044v5.938l48.584 342.789h-234.284c-0.011 0-0.024 0-0.038 0-16.55 0-30.926 9.309-38.177 22.979l-0.114 0.234c-3.963 6.646-6.305 14.655-6.305 23.213s2.342 16.567 6.421 23.424l-0.116-0.211 107.965 188.4 221.328 351.967c7.563 12.608 21.158 20.914 36.694 20.914 4.633 0 9.094-0.739 13.272-2.105l-0.301 0.085c18.586-5.739 31.857-22.766 31.857-42.893 0-0.292-0.003-0.585-0.009-0.876l0.001 0.044v-5.938l-48.584-342.789h234.824c0.011 0 0.024 0 0.038 0 16.55 0 30.926-9.309 38.177-22.979l0.114-0.234c3.963-6.646 6.305-14.655 6.305-23.213s-2.342-16.567-6.421-23.424l0.116 0.211-107.965-188.4-221.328-351.967c-7.762-11.483-20.733-18.931-35.445-18.931-0.634 0-1.265 0.014-1.893 0.042l0.090-0.003zM434.265 0.484v0zM292.291 410.752h215.931c24.812-0.302 44.809-20.488 44.809-45.342 0-0.191-0.001-0.382-0.004-0.572v0.029-5.938l-31.849-223.488 134.957 215.931 77.735 133.876h-215.931c-24.812 0.302-44.809 20.488-44.809 45.342 0 0.191 0.001 0.382 0.004 0.572v-0.029 5.938l31.849 223.488-134.957-215.931zM589.735 896.055v0z" />
+<glyph unicode="&#xe9dc;" glyph-name="circle" data-tags="circle" d="M512-63.989c-282.763 0-511.989 229.226-511.989 511.989s229.226 511.989 511.989 511.989c282.763 0 511.989-229.226 511.989-511.989v0c0-282.763-229.226-511.989-511.989-511.989v0zM512 874.657c-235.636 0-426.657-191.021-426.657-426.657s191.021-426.657 426.657-426.657c235.636 0 426.657 191.021 426.657 426.657v0c0 235.636-191.021 426.657-426.657 426.657v0z" />
+<glyph unicode="&#xe9dd;" glyph-name="circle-fill" data-tags="circle-fill" d="M1023.989 448c0-282.763-229.226-511.989-511.989-511.989s-511.989 229.226-511.989 511.989c0 282.763 229.226 511.989 511.989 511.989s511.989-229.226 511.989-511.989z" />
+<glyph unicode="&#xe9de;" glyph-name="flag-fill" data-tags="flag-fill" d="M944.92 888.504c-6.851 4.781-15.351 7.639-24.52 7.639-5.664 0-11.074-1.091-16.029-3.074l0.291 0.103c-63.404-28.272-136.947-48.827-213.986-57.993l-3.642-0.353c-50.961 13.852-95.595 33.813-136.214 59.541l2.021-1.195c-50.241 31.546-108.991 55.111-171.832 67.168l-3.203 0.511c-75.265 7.001-254.385-51.927-291.724-64.179-17.436-6.017-29.741-22.283-29.756-41.423v-874.010c0-24.167 19.592-43.759 43.759-43.759s43.759 19.592 43.759 43.759v0 341.902c65.742 24.141 142.134 41.68 221.425 49.3l3.786 0.294c53.070-13.251 99.74-33.289 142.139-59.564l-2.111 1.218c47.311-29.399 102.324-52.182 160.994-65.266l3.539-0.663h13.419c91.412 12.072 174.279 35.196 251.871 68.295l-6.238-2.366c16.429 6.638 27.841 22.387 28.006 40.821v497.12c0.056 0.823 0.088 1.785 0.088 2.753 0 13.438-6.14 25.443-15.767 33.361l-0.075 0.060z" />
+<glyph unicode="&#xe9df;" glyph-name="bookmark-fill" data-tags="bookmark-fill" d="M731.351 959.819h-438.702c-88.839 0-160.857-72.018-160.857-160.857v0-818.91c-0.001-0.096-0.001-0.21-0.001-0.324 0-24.229 19.642-43.87 43.87-43.87 9.418 0 18.143 2.968 25.291 8.020l-0.137-0.092 311.186 217.011 311.186-217.011c6.914-4.763 15.47-7.606 24.689-7.606 0.163 0 0.325 0.001 0.488 0.003h-0.025c7.45 0.092 14.477 1.807 20.773 4.808l-0.3-0.129c13.96 7.76 23.279 22.374 23.398 39.173v818.927c0 88.839-72.018 160.857-160.857 160.857v0z" />
+<glyph unicode="&#xe9e0;" glyph-name="filter-fill" data-tags="filter-fill" d="M1004.095 935.275c-7.747 14.706-22.885 24.586-40.34 24.695h-903.493c-17.471-0.11-32.608-9.989-40.236-24.445l-0.12-0.25c-3.089-5.86-4.901-12.805-4.901-20.173 0-10.136 3.43-19.471 9.191-26.908l-0.075 0.1 322.241-440.294v-466.797c0.335-24.813 20.361-44.839 45.141-45.174h240.96c24.813 0.335 44.839 20.361 45.174 45.141v466.83l322.241 440.294c5.688 7.337 9.117 16.671 9.117 26.808 0 7.369-1.813 14.314-5.016 20.414l0.116-0.241z" />
+<glyph unicode="&#xe9e1;" glyph-name="heart-fill" data-tags="heart-fill" d="M940.27 817.015v0c-52.342 52.898-124.95 85.655-205.208 85.655-0.25 0-0.502 0-0.752-0.001h0.039c-0.212 0-0.462 0.001-0.714 0.001-80.258 0-152.867-32.757-205.183-85.63l-0.025-0.025-16.427-17.013-16.427 16.427c-52.551 52.546-125.148 85.046-205.334 85.046s-152.783-32.5-205.336-85.047v0c-51.85-52.868-83.852-125.364-83.852-205.334s32.002-152.468 83.898-205.382l-0.045 0.047 397.176-398.35c7.96-7.95 18.953-12.869 31.093-12.869s23.133 4.917 31.094 12.869v0l397.176 398.35c51.673 52.835 83.555 125.21 83.555 205.032 0 80.411-32.354 153.263-84.754 206.251l0.026-0.026z" />
+<glyph unicode="&#xe9e2;" glyph-name="hashtag" data-tags="hashtag" d="M984.598 697.427h-157.533l40.433 161.209c0.73 2.838 1.148 6.096 1.148 9.452 0 21.805-17.677 39.482-39.482 39.482-18.449 0-33.942-12.654-38.274-29.756l-0.059-0.273-45.159-180.113h-338.696l40.433 161.209c0.73 2.838 1.148 6.096 1.148 9.452 0 21.805-17.677 39.482-39.482 39.482-18.449 0-33.942-12.654-38.274-29.756l-0.059-0.273-47.26-180.113h-179.062c-21.751 0-39.383-17.633-39.383-39.383s17.633-39.383 39.383-39.383v0h157.533l-85.593-341.321h-176.962c-21.751 0-39.383-17.633-39.383-39.383s17.633-39.383 39.383-39.383v0h157.533l-40.433-161.209c-0.73-2.838-1.148-6.096-1.148-9.452 0-21.805 17.677-39.482 39.482-39.482 18.449 0 33.942 12.654 38.274 29.756l0.059 0.273 45.159 180.113h338.696l-40.433-161.209c-0.73-2.838-1.148-6.096-1.148-9.452 0-21.805 17.677-39.482 39.482-39.482 18.449 0 33.942 12.654 38.274 29.756l0.059 0.273 45.159 180.113h181.163c21.751 0 39.383 17.633 39.383 39.383s-17.633 39.383-39.383 39.383v0h-157.533l85.593 341.321h176.962c21.751 0 39.383 17.633 39.383 39.383s-17.633 39.383-39.383 39.383v0zM722.044 618.661l-85.593-341.321h-334.495l85.593 341.321z" />
+<glyph unicode="&#xe9e3;" glyph-name="database" data-tags="database" d="M926.005 860.897c-121.161 57.959-262.777 93.948-412.236 99.026l-1.769 0.048c-151.228-5.125-292.843-41.116-420.425-101.823l6.42 2.75c-32.977-15.76-55.351-48.848-55.351-87.164 0-0.296 0.001-0.59 0.004-0.885v0.045-649.789c-0.003-0.249-0.004-0.545-0.004-0.839 0-38.315 22.376-71.404 54.773-86.914l0.58-0.25c121.161-57.959 262.777-93.948 412.236-99.026l1.769-0.048c151.228 5.125 292.843 41.116 420.425 101.823l-6.42-2.75c32.977 15.76 55.351 48.848 55.351 87.164 0 0.296-0.001 0.59-0.004 0.885v-0.045 649.789c0.003 0.249 0.004 0.545 0.004 0.839 0 38.315-22.376 71.404-54.773 86.914l-0.58 0.25zM899.438 418.112c-113.2-55.308-245.67-89.857-385.631-95.145l-1.807-0.054c-141.767 5.341-274.238 39.89-393.276 97.76l5.838-2.561v213.644c113.851-51.38 246.465-82.977 386.006-86.865l1.431-0.031c140.973 3.92 273.587 35.517 393.967 89.515l-6.53-2.618zM132.864 785.625c110.92 53.263 240.582 86.42 377.448 91.277l1.688 0.048c138.75-5.006 268.584-38.151 385.604-93.859l-5.915 2.535c4.63-2.445 7.734-7.224 7.748-12.728v-48.156c-113.2-55.308-245.67-89.857-385.631-95.145l-1.807-0.054c-141.767 5.341-274.238 39.89-393.276 97.76l5.838-2.561v49.813c0.619 4.997 3.823 9.121 8.213 11.035l0.090 0.035zM891.136 110.375c-110.92-53.263-240.582-86.42-377.448-91.277l-1.688-0.048c-138.75 5.006-268.584 38.151-385.604 93.859l5.915-2.535c-4.63 2.445-7.734 7.224-7.748 12.728v204.238c113.851-51.38 246.465-82.977 386.006-86.865l1.431-0.031c140.973 3.92 273.587 35.517 393.967 89.515l-6.53-2.618v-204.235c0-0.014 0-0.031 0-0.048 0-5.64-3.374-10.492-8.214-12.647l-0.088-0.035z" />
+<glyph unicode="&#xe9e4;" glyph-name="server" data-tags="server" d="M1023.969 658.81v180.695c0 33.265-26.967 60.232-60.232 60.232v0h-903.474c-33.265 0-60.232-26.967-60.232-60.232v0-180.695c0-33.265 26.967-60.232 60.232-60.232v0c-33.265 0-60.232-26.967-60.232-60.232v0-180.695c0-33.265 26.967-60.232 60.232-60.232v0c-33.265 0-60.232-26.967-60.232-60.232v0-180.695c0-33.265 26.967-60.232 60.232-60.232v0h903.474c33.265 0 60.232 26.967 60.232 60.232v0 180.695c0 33.265-26.967 60.232-60.232 60.232v0c33.265 0 60.232 26.967 60.232 60.232v0 180.695c0 33.265-26.967 60.232-60.232 60.232v0c33.265 0 60.232 26.967 60.232 60.232v0zM963.737 56.495h-903.474v180.695h903.474zM963.737 357.653h-903.474v180.695h903.474zM963.737 658.81h-903.474v180.695h903.474zM210.842 749.158c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174zM361.421 749.158c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174zM210.842 448c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174zM361.421 448c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174zM210.842 146.842c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174zM361.421 146.842c0-24.949-20.225-45.174-45.174-45.174s-45.174 20.225-45.174 45.174c0 24.949 20.225 45.174 45.174 45.174s45.174-20.225 45.174-45.174z" />
+<glyph unicode="&#xe9e5;" glyph-name="shopping-bag" data-tags="shopping-bag" d="M950.857 667.429h-175.543v29.257c0 145.425-117.889 263.314-263.314 263.314s-263.314-117.889-263.314-263.314v0-29.257h-175.543c-40.395 0-73.142-32.747-73.142-73.142v0-497.372c0-88.87 72.044-160.914 160.914-160.914v0h702.171c88.87 0 160.914 72.044 160.914 160.914v0 497.372c0 40.395-32.747 73.142-73.142 73.142v0zM336.457 696.685c0 96.949 78.594 175.543 175.543 175.543s175.543-78.594 175.543-175.543v0-29.257h-351.086zM936.228 96.914c0-40.395-32.747-73.142-73.142-73.142v0h-702.171c-40.395 0-73.142 32.747-73.142 73.142v0 482.743h160.914v-131.657c0-24.237 19.648-43.886 43.886-43.886s43.886 19.648 43.886 43.886v0 131.657h351.086v-131.657c0-24.237 19.648-43.886 43.886-43.886s43.886 19.648 43.886 43.886v0 131.657h160.914z" />
+<glyph unicode="&#xe9e6;" glyph-name="sync" data-tags="sync" d="M936.767 959.966c-27.214-0.367-49.178-22.331-49.545-49.509v-160.562l-55.49 55.49c-86.69 87.405-206.835 141.515-339.617 141.515-209.345 0-387.277-134.501-452.092-321.801l-1.011-3.36c-2.53-5.71-4.002-12.369-4.002-19.374 0-21.825 14.301-40.308 34.044-46.591l0.347-0.094c2.483-0.454 5.34-0.712 8.257-0.712s5.775 0.259 8.55 0.756l-0.293-0.043c21.606 0.226 39.922 14.066 46.794 33.339l0.108 0.351c19.528 56.988 50.528 105.653 90.48 145.309l0.022 0.022c68.806 68.546 163.72 110.925 268.534 110.925s199.729-42.378 268.547-110.936l55.478-55.478h-159.205c-27.363 0-49.545-22.182-49.545-49.545s22.182-49.545 49.545-49.545v0h280.095c0.198-0.003 0.432-0.005 0.666-0.005 26.997 0 48.884 21.887 48.884 48.884 0 0.234-0.002 0.468-0.005 0.7v-0.036 280.755c0 27.363-22.182 49.545-49.545 49.545v0zM953.281 337.019c-5.442 2.202-11.755 3.479-18.366 3.479-22.122 0-40.903-14.308-47.591-34.174l-0.104-0.355c-19.528-56.988-50.528-105.653-90.48-145.309l-0.022-0.022c-68.806-68.546-163.72-110.925-268.534-110.925s-199.729 42.378-268.547 110.936l-55.478 55.478h163.169c27.363 0 49.545 22.182 49.545 49.545s-22.182 49.545-49.545 49.545v0h-280.095c-0.198 0.003-0.432 0.005-0.666 0.005-26.997 0-48.884-21.887-48.884-48.884 0-0.234 0.002-0.468 0.005-0.7v0.036-280.095c0-27.363 22.182-49.545 49.545-49.545s49.545 22.182 49.545 49.545v0 160.526l55.49-55.49c86.69-87.405 206.835-141.515 339.617-141.515 209.345 0 387.277 134.501 452.092 321.801l1.011 3.36c1.72 4.786 2.714 10.307 2.714 16.060 0 21.835-14.317 40.328-34.076 46.602l-0.347 0.094z" />
+<glyph unicode="&#xe9e7;" glyph-name="code" data-tags="code" d="M367.461 771.603c-7.939 7.93-18.905 12.836-31.014 12.836s-23.074-4.905-31.015-12.836v0l-292.589-292.589c-7.93-7.939-12.836-18.905-12.836-31.014s4.905-23.074 12.836-31.015v0l292.589-292.589c7.939-7.93 18.905-12.836 31.014-12.836s23.074 4.905 31.015 12.836v0c7.93 7.939 12.836 18.905 12.836 31.014s-4.905 23.074-12.836 31.015v0l-261.574 261.574 261.574 261.574c7.93 7.939 12.836 18.905 12.836 31.014s-4.905 23.074-12.836 31.015v0zM1011.156 479.014l-292.589 292.589c-7.817 7.298-18.345 11.779-29.92 11.779-24.239 0-43.889-19.649-43.889-43.889 0-11.575 4.481-22.104 11.803-29.946l-0.023 0.027 261.574-261.574-261.574-261.574c-7.93-7.939-12.836-18.905-12.836-31.014s4.905-23.074 12.836-31.015v0c7.939-7.93 18.905-12.836 31.014-12.836s23.074 4.905 31.015 12.836v0l292.589 292.589c7.93 7.939 12.836 18.905 12.836 31.014s-4.905 23.074-12.836 31.015v0z" />
+<glyph unicode="&#xe9e8;" glyph-name="reddit" data-tags="reddit" d="M399.361 345.599c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c28.276 0 51.199-22.923 51.199-51.2v0c0-28.276-22.923-51.2-51.199-51.2v0zM1023.999 448c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 282.77 229.23 512 512 512v0c282.769 0 512-229.23 512-512v0zM750.721 533.12c-18.359-1.113-34.69-8.976-46.715-21.114l-0.006-0.006c-49.923 33.418-111.167 53.62-177.080 54.397l-0.199 0.001 35.84 161.921 114.56-25.601c-0.003-0.191-0.005-0.416-0.005-0.641 0-27.924 22.636-50.56 50.56-50.56 0.002 0 0.003 0 0.005 0v0c28.355 0.361 51.2 23.43 51.2 51.836 0 0.001 0 0.003 0 0.004v0c0.016 0.492 0.027 1.071 0.027 1.653 0 27.924-22.637 50.56-50.561 50.56-20.408 0-37.99-12.090-45.978-29.498l-0.129-0.315-128 28.16c-0.688 0.138-1.481 0.217-2.292 0.217-5.656 0-10.412-3.862-11.77-9.093l-0.018-0.084-39.679-178.56c-66.101-0.974-127.301-21.143-178.501-55.164l1.221 0.764c-12.464 12.858-29.895 20.838-49.191 20.838-37.821 0-68.48-30.66-68.48-68.48 0-26.584 15.148-49.632 37.286-60.978l0.386-0.18c-0.468-4.795-0.733-10.366-0.733-16.001s0.267-11.205 0.787-16.701l-0.054 0.702c0-108.16 122.239-196.48 272.64-196.48s272.64 88.32 272.64 196.48c0 0.084 0 0.183 0 0.282 0 11.484-1.399 22.639-4.039 33.308l0.2-0.95c20.889 11.994 34.732 34.174 34.732 59.588 0 36.756-28.957 66.749-65.302 68.408l-0.15 0.006zM608.64 293.12c-27.226-17.349-60.409-27.649-96-27.649s-68.773 10.302-96.732 28.086l0.732-0.435c-2.268 2.080-5.305 3.355-8.64 3.355s-6.372-1.275-8.649-3.365l0.009 0.009c-2.426-2.23-3.939-5.418-3.939-8.959s1.514-6.729 3.93-8.952l0.009-0.008c31.918-21.918 71.391-35.004 113.921-35.004s82.002 13.086 114.611 35.451l-0.692-0.447c2.426 2.231 3.939 5.418 3.939 8.959s-1.514 6.729-3.93 8.952l-0.009 0.007c-2.337 2.457-5.63 3.984-9.28 3.984s-6.943-1.527-9.274-3.978l-0.005-0.006zM624.639 448c-28.277 0-51.2-22.923-51.2-51.2s22.923-51.2 51.2-51.2c28.276 0 51.199 22.923 51.199 51.2v0c0 28.277-22.923 51.2-51.199 51.2v0z" />
+<glyph unicode="&#xe9e9;" glyph-name="chart-pie" data-tags="chart-pie" d="M589.605 895.627v18.004c-0.345 25.576-20.987 46.218-46.53 46.563h-0.033c-300.373-1.794-543.179-245.708-543.179-546.331 0-98.823 26.237-191.517 72.126-271.496l-1.409 2.663c8.24-13.842 23.126-22.972 40.145-22.972 0.074 0 0.148 0 0.221 0h-0.012c8.464 0.017 16.386 2.321 23.186 6.325l-0.215-0.116 18.004 9.313c88.223-122.529 230.468-201.375 391.129-201.375 265.391 0 480.531 215.14 480.531 480.531 0 248.992-189.376 453.753-431.953 478.105l-2.014 0.163zM496.478 864.584v-420.93l-365.676-209.844c-24.009 53.406-37.995 115.765-37.995 181.391 0 232.603 175.709 424.166 401.636 449.201l2.036 0.183zM543.042 28.932c-126.56 0.365-238.867 61.070-309.71 154.848l-0.712 0.982 333.392 191.84c14.165 7.849 23.596 22.711 23.596 39.775 0 0.204-0.001 0.407-0.004 0.611v-0.031 384.921c192.214-25.131 339.099-187.876 339.099-384.928 0-213.47-172.379-386.677-385.534-388.018h-0.128z" />
+<glyph unicode="&#xe9ea;" glyph-name="prime" data-tags="prime" d="M727.036 490.88l-70.398 16 55.038-78.078v-242.556l187.516 156.157v265.595l-86.398-30.719-85.758-86.398zM289.285 490.88l-86.398 86.398-85.758 30.719v-265.595l187.516-156.157v242.556l55.038 78.078-70.398-16zM586.238 483.2h-156.157l-39.040 23.68-62.718-94.078v-351.993l46.72-69.759 55.038-55.038h156.157l55.038 55.038 46.72 69.759v351.993l-62.718 94.078-39.040-23.68zM711.676 37.769l101.117 101.758v101.117l-101.117-85.758v-117.118zM202.886 139.527l101.758-101.758v117.118l-101.758 85.758v-101.117zM453.122 514.558h39.679v445.431h-86.398l-62.079-147.837-282.234 23.040 47.359-195.836 335.993-124.797h7.68zM671.997 812.152l-62.079 147.837h-86.398v-447.991h52.479l335.993 127.997 47.999 191.996zM852.474 850.551l-110.078 109.438h-109.438l55.038-124.797 164.476 15.36zM382.722 959.989h-109.438l-109.438-109.438 164.476-15.36 54.399 124.797z" />
+<glyph unicode="&#xe9eb;" glyph-name="pound" data-tags="pound" d="M836.060 23.914h-552.19l116.989 164.955c5.016 7 8.065 15.709 8.189 25.123v190.138h190.108c24.229 0 43.871 19.642 43.871 43.871s-19.642 43.871-43.871 43.871v0h-191.863v190.108c-0.156 2.816-0.245 6.11-0.245 9.427 0 99.824 80.924 180.749 180.749 180.749 1.732 0 3.459-0.025 5.178-0.073l-0.254 0.005c3.537 0.243 7.666 0.381 11.827 0.381 101.439 0 183.673-82.233 183.673-183.673 0-5.695-0.259-11.328-0.766-16.89l0.052 0.716v-58.495c0-24.229 19.642-43.871 43.871-43.871s43.871 19.642 43.871 43.871v0 58.495c0.352 5.164 0.553 11.193 0.553 17.269 0 149.252-120.994 270.246-270.246 270.246-4.515 0-9.003-0.111-13.464-0.329l0.628 0.025c-1.804 0.044-3.929 0.069-6.060 0.069-147.637 0-267.321-119.684-267.321-267.321 0-3.728 0.077-7.436 0.228-11.127l-0.018 0.528v-190.108h-131.613c-24.229 0-43.871-19.642-43.871-43.871s19.642-43.871 43.871-43.871v0h131.613v-175.484l-155.595-223.45c-3.958-6.515-6.3-14.39-6.3-22.813s2.343-16.298 6.411-23.010l-0.111 0.197c7.358-14.007 21.805-23.398 38.447-23.398 0.056 0 0.112 0 0.169 0h633.489c24.229 0 43.871 19.642 43.871 43.871s-19.642 43.871-43.871 43.871v0z" />
+<glyph unicode="&#xe9ec;" glyph-name="arrows-h" data-tags="arrows-h" d="M1020.451 464.967c-2.348 5.441-5.502 10.097-9.37 14.051l-234.032 234.032c-8.033 8.604-19.443 13.967-32.105 13.967-24.235 0-43.882-19.647-43.882-43.882 0-12.663 5.363-24.072 13.941-32.081l0.026-0.023 159.147-159.147h-724.353l159.147 159.147c7.297 7.815 11.777 18.343 11.777 29.915 0 24.235-19.647 43.882-43.882 43.882-11.574 0-22.1-4.48-29.942-11.802l0.026 0.023-234.040-234.040c-3.859-3.945-7.014-8.601-9.247-13.748l-0.114-0.295c-2.222-5-3.515-10.833-3.515-16.967s1.293-11.968 3.623-17.242l-0.108 0.273c2.348-5.441 5.502-10.097 9.37-14.051l234.032-234.032c7.939-7.929 18.902-12.834 31.010-12.834s23.071 4.904 31.011 12.834v0c7.929 7.939 12.834 18.902 12.834 31.010s-4.904 23.071-12.834 31.011v0l-159.147 159.147h724.353l-159.147-159.147c-7.929-7.939-12.834-18.902-12.834-31.010s4.904-23.071 12.834-31.011v0c7.939-7.929 18.902-12.834 31.010-12.834s23.071 4.904 31.011 12.834v0l234.040 234.040c3.859 3.945 7.014 8.601 9.247 13.748l0.114 0.295c2.222 5 3.515 10.833 3.515 16.967s-1.293 11.968-3.623 17.242l0.108-0.273z" />
+<glyph unicode="&#xe9ed;" glyph-name="arrows-v" data-tags="arrows-v" d="M528.967-60.451c5.441 2.348 10.097 5.502 14.051 9.37l234.032 234.032c7.297 7.815 11.777 18.343 11.777 29.915 0 24.235-19.647 43.882-43.882 43.882-11.574 0-22.1-4.48-29.942-11.802l0.026 0.023-159.147-159.147v724.353l159.147-159.147c7.815-7.297 18.343-11.777 29.915-11.777 24.235 0 43.882 19.647 43.882 43.882 0 11.574-4.48 22.1-11.802 29.942l0.023-0.026-234.040 234.040c-3.945 3.859-8.601 7.014-13.748 9.247l-0.295 0.114c-5 2.222-10.833 3.515-16.967 3.515s-11.968-1.293-17.242-3.623l0.273 0.108c-5.441-2.348-10.097-5.502-14.051-9.37l-234.032-234.032c-7.929-7.939-12.834-18.902-12.834-31.010s4.904-23.071 12.834-31.011v0c7.939-7.929 18.902-12.834 31.010-12.834s23.071 4.904 31.011 12.834v0l159.147 159.147v-724.353l-159.147 159.147c-7.939 7.929-18.902 12.834-31.010 12.834s-23.071-4.904-31.011-12.834v0c-7.929-7.939-12.834-18.902-12.834-31.010s4.904-23.071 12.834-31.011v0l234.040-234.040c3.945-3.859 8.601-7.014 13.748-9.247l0.295-0.114c5-2.222 10.833-3.515 16.967-3.515s11.968 1.293 17.242 3.623l-0.273-0.108z" />
+<glyph unicode="&#xe9ee;" glyph-name="sort-alt-slash" data-tags="sort-alt-slash" d="M115.613 712.259l82.58 78.616v-375.907c0-27.365 22.184-49.548 49.548-49.548s49.548 22.184 49.548 49.548v0 375.907l82.58-78.616c8.725-7.83 20.319-12.618 33.032-12.618s24.307 4.788 33.078 12.658l-0.046-0.040c7.83 8.725 12.618 20.319 12.618 33.032s-4.788 24.307-12.658 33.078l0.040-0.046-165.162 165.162c-4.455 4.357-9.711 7.92-15.523 10.441l-0.333 0.129c-5.645 2.508-12.232 3.969-19.158 3.969s-13.513-1.46-19.468-4.091l0.308 0.122c-6.144-2.651-11.401-6.212-15.865-10.58l0.009 0.009-161.198-165.162c-16.811-8.165-28.195-25.109-28.195-44.711 0-27.365 22.184-49.548 49.548-49.548 19.603 0 36.547 11.384 44.581 27.9l0.129 0.294zM908.387 183.741l-80.598-80.598v377.889c0 27.365-22.184 49.548-49.548 49.548s-49.548-22.184-49.548-49.548v0-375.907l-84.562 78.616c-8.165 16.811-25.109 28.195-44.711 28.195-27.365 0-49.548-22.184-49.548-49.548 0-19.603 11.384-36.547 27.9-44.581l0.294-0.129 165.162-165.162c4.455-4.357 9.711-7.92 15.523-10.441l0.333-0.129c5.645-2.508 12.232-3.969 19.158-3.969s13.513 1.46 19.468 4.091l-0.308-0.122c6.144 2.651 11.401 6.212 15.865 10.58l-0.009-0.009 161.198 165.162c16.811 8.165 28.195 25.109 28.195 44.711 0 27.365-22.184 49.548-49.548 49.548-19.603 0-36.547-11.384-44.581-27.9l-0.129-0.294zM974.452 844.387c3.052 6.246 4.837 13.592 4.837 21.354 0 27.365-22.184 49.548-49.548 49.548-7.762 0-15.108-1.785-21.648-4.967l0.294 0.129-82.58-78.616v78.616c0 27.365-22.184 49.548-49.548 49.548s-49.548-22.184-49.548-49.548v0-177.713l-677.161-681.125c-7.83-8.725-12.618-20.319-12.618-33.032s4.788-24.307 12.658-33.078l-0.040 0.046c8.725-7.83 20.319-12.618 33.032-12.618s24.307 4.788 33.078 12.658l-0.046-0.040 80.598 80.598v-80.598c0-27.365 22.184-49.548 49.548-49.548s49.548 22.184 49.548 49.548v0 177.713z" />
+</font></defs></svg>
Index: trip-planner-front/node_modules/primeicons/package.json
===================================================================
--- trip-planner-front/node_modules/primeicons/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,46 @@
+{
+  "_from": "primeicons",
+  "_id": "primeicons@5.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-heygWF0X5HFI1otlZE62pp6ye7sZ8om78J9au2BRkg8O7Y8AHTZ9qKMRzchZUHLe8zUAvdi6hZzzm9XxgwIExw==",
+  "_location": "/primeicons",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "primeicons",
+    "name": "primeicons",
+    "escapedName": "primeicons",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/primeicons/-/primeicons-5.0.0.tgz",
+  "_shasum": "73a0b6028a77c58a9eeb331ad13aaf085e8451ee",
+  "_spec": "primeicons",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "author": {
+    "name": "PrimeTek"
+  },
+  "bugs": {
+    "url": "https://github.com/primefaces/primeicons/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Font Icon Library for Prime UI Libraries",
+  "homepage": "https://github.com/primefaces/primeicons#readme",
+  "keywords": [
+    "Icon"
+  ],
+  "license": "MIT",
+  "name": "primeicons",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/primefaces/primeicons.git"
+  },
+  "version": "5.0.0"
+}
Index: trip-planner-front/node_modules/primeicons/primeicons.css
===================================================================
--- trip-planner-front/node_modules/primeicons/primeicons.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/primeicons.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1014 @@
+@font-face {
+    font-family: 'primeicons';
+    font-display: block;
+    src: url('./fonts/primeicons.eot');
+    src: url('./fonts/primeicons.eot?#iefix') format('embedded-opentype'), url('./fonts/primeicons.ttf') format('truetype'), url('./fonts/primeicons.woff') format('woff'), url('./fonts/primeicons.svg?#primeicons') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+.pi {
+    font-family: 'primeicons';
+    speak: none;
+    font-style: normal;
+    font-weight: normal;
+    font-variant: normal;
+    text-transform: none;
+    line-height: 1;
+    display: inline-block;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.pi:before {
+    --webkit-backface-visibility:hidden;
+    backface-visibility: hidden;
+}
+
+.pi-fw {
+    width: 1.28571429em;
+    text-align: center;
+}
+
+.pi-spin {
+    -webkit-animation: fa-spin 2s infinite linear;
+    animation: fa-spin 2s infinite linear;
+}
+
+@-webkit-keyframes fa-spin {
+    0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg);
+    }
+    100% {
+        -webkit-transform: rotate(359deg);
+        transform: rotate(359deg);
+    }
+}
+
+@keyframes fa-spin {
+    0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg);
+    }
+    100% {
+        -webkit-transform: rotate(359deg);
+        transform: rotate(359deg);
+    }
+}
+
+.pi-sort-alt-slash:before {
+    content: "\e9ee";
+}
+
+.pi-arrows-h:before {
+    content: "\e9ec";
+}
+
+.pi-arrows-v:before {
+    content: "\e9ed";
+}
+
+.pi-pound:before {
+    content: "\e9eb";
+}
+
+.pi-prime:before {
+    content: "\e9ea";
+}
+
+.pi-chart-pie:before {
+    content: "\e9e9";
+}
+
+.pi-reddit:before {
+    content: "\e9e8";
+}
+
+.pi-code:before {
+    content: "\e9e7";
+}
+
+.pi-sync:before {
+    content: "\e9e6";
+}
+
+.pi-shopping-bag:before {
+    content: "\e9e5";
+}
+
+.pi-server:before {
+    content: "\e9e4";
+}
+
+.pi-database:before {
+    content: "\e9e3";
+}
+
+.pi-hashtag:before {
+    content: "\e9e2";
+}
+
+.pi-bookmark-fill:before {
+    content: "\e9df";
+}
+
+.pi-filter-fill:before {
+    content: "\e9e0";
+}
+
+.pi-heart-fill:before {
+    content: "\e9e1";
+}
+
+.pi-flag-fill:before {
+    content: "\e9de";
+}
+
+.pi-circle:before {
+    content: "\e9dc";
+}
+
+.pi-circle-fill:before {
+    content: "\e9dd";
+}
+
+.pi-bolt:before {
+    content: "\e9db";
+}
+
+.pi-history:before {
+    content: "\e9da";
+}
+
+.pi-box:before {
+    content: "\e9d9";
+}
+
+.pi-at:before {
+    content: "\e9d8";
+}
+
+.pi-arrow-up-right:before {
+    content: "\e9d4";
+}
+
+.pi-arrow-up-left:before {
+    content: "\e9d5";
+}
+
+.pi-arrow-down-left:before {
+    content: "\e9d6";
+}
+
+.pi-arrow-down-right:before {
+    content: "\e9d7";
+}
+
+.pi-telegram:before {
+    content: "\e9d3";
+}
+
+.pi-stop-circle:before {
+    content: "\e9d2";
+}
+
+.pi-stop:before {
+    content: "\e9d1";
+}
+
+.pi-whatsapp:before {
+    content: "\e9d0";
+}
+
+.pi-building:before {
+    content: "\e9cf";
+}
+
+.pi-qrcode:before {
+    content: "\e9ce";
+}
+
+.pi-car:before {
+    content: "\e9cd";
+}
+
+.pi-instagram:before {
+    content: "\e9cc";
+}
+
+.pi-linkedin:before {
+    content: "\e9cb";
+}
+
+.pi-send:before {
+    content: "\e9ca";
+}
+
+.pi-slack:before {
+    content: "\e9c9";
+}
+
+.pi-sun:before {
+    content: "\e9c8";
+}
+
+.pi-moon:before {
+    content: "\e9c7";
+}
+
+.pi-vimeo:before {
+    content: "\e9c6";
+}
+
+.pi-youtube:before {
+    content: "\e9c5";
+}
+
+.pi-flag:before {
+    content: "\e9c4";
+}
+
+.pi-wallet:before {
+    content: "\e9c3";
+}
+
+.pi-map:before {
+    content: "\e9c2";
+}
+
+.pi-link:before {
+    content: "\e9c1";
+}
+
+.pi-credit-card:before {
+    content: "\e9bf";
+}
+
+.pi-discord:before {
+    content: "\e9c0";
+}
+
+.pi-percentage:before {
+    content: "\e9be";
+}
+
+.pi-euro:before {
+    content: "\e9bd";
+}
+
+.pi-book:before {
+    content: "\e9ba";
+}
+
+.pi-shield:before {
+    content: "\e9b9";
+}
+
+.pi-paypal:before {
+    content: "\e9bb";
+}
+
+.pi-amazon:before {
+    content: "\e9bc";
+}
+
+.pi-phone:before {
+    content: "\e9b8";
+}
+
+.pi-filter-slash:before {
+    content: "\e9b7";
+}
+
+.pi-facebook:before {
+    content: "\e9b4";
+}
+
+.pi-github:before {
+    content: "\e9b5";
+}
+
+.pi-twitter:before {
+    content: "\e9b6";
+}
+
+.pi-step-backward-alt:before {
+    content: "\e9ac";
+}
+
+.pi-step-forward-alt:before {
+    content: "\e9ad";
+}
+
+.pi-forward:before {
+    content: "\e9ae";
+}
+
+.pi-backward:before {
+    content: "\e9af";
+}
+
+.pi-fast-backward:before {
+    content: "\e9b0";
+}
+
+.pi-fast-forward:before {
+    content: "\e9b1";
+}
+
+.pi-pause:before {
+    content: "\e9b2";
+}
+
+.pi-play:before {
+    content: "\e9b3";
+}
+
+.pi-compass:before {
+    content: "\e9ab";
+}
+
+.pi-id-card:before {
+    content: "\e9aa";
+}
+
+.pi-ticket:before {
+    content: "\e9a9";
+}
+
+.pi-file-o:before {
+    content: "\e9a8";
+}
+
+.pi-reply:before {
+    content: "\e9a7";
+}
+
+.pi-directions-alt:before {
+    content: "\e9a5";
+}
+
+.pi-directions:before {
+    content: "\e9a6";
+}
+
+.pi-thumbs-up:before {
+    content: "\e9a3";
+}
+
+.pi-thumbs-down:before {
+    content: "\e9a4";
+}
+
+.pi-sort-numeric-down-alt:before {
+    content: "\e996";
+}
+
+.pi-sort-numeric-up-alt:before {
+    content: "\e997";
+}
+
+.pi-sort-alpha-down-alt:before {
+    content: "\e998";
+}
+
+.pi-sort-alpha-up-alt:before {
+    content: "\e999";
+}
+
+.pi-sort-numeric-down:before {
+    content: "\e99a";
+}
+
+.pi-sort-numeric-up:before {
+    content: "\e99b";
+}
+
+.pi-sort-alpha-down:before {
+    content: "\e99c";
+}
+
+.pi-sort-alpha-up:before {
+    content: "\e99d";
+}
+
+.pi-sort-alt:before {
+    content: "\e99e";
+}
+
+.pi-sort-amount-up:before {
+    content: "\e99f";
+}
+
+.pi-sort-amount-down:before {
+    content: "\e9a0";
+}
+
+.pi-sort-amount-down-alt:before {
+    content: "\e9a1";
+}
+
+.pi-sort-amount-up-alt:before {
+    content: "\e9a2";
+}
+
+.pi-palette:before {
+    content: "\e995";
+}
+
+.pi-undo:before {
+    content: "\e994";
+}
+
+.pi-desktop:before {
+    content: "\e993";
+}
+
+.pi-sliders-v:before {
+    content: "\e991";
+}
+
+.pi-sliders-h:before {
+    content: "\e992";
+}
+
+.pi-search-plus:before {
+    content: "\e98f";
+}
+
+.pi-search-minus:before {
+    content: "\e990";
+}
+
+.pi-file-excel:before {
+    content: "\e98e";
+}
+
+.pi-file-pdf:before {
+    content: "\e98d";
+}
+
+.pi-check-square:before {
+    content: "\e98c";
+}
+
+.pi-chart-line:before {
+    content: "\e98b";
+}
+
+.pi-user-edit:before {
+    content: "\e98a";
+}
+
+.pi-exclamation-circle:before {
+    content: "\e989";
+}
+
+.pi-android:before {
+    content: "\e985";
+}
+
+.pi-google:before {
+    content: "\e986";
+}
+
+.pi-apple:before {
+    content: "\e987";
+}
+
+.pi-microsoft:before {
+    content: "\e988";
+}
+
+.pi-heart:before {
+    content: "\e984";
+}
+
+.pi-mobile:before {
+    content: "\e982";
+}
+
+.pi-tablet:before {
+    content: "\e983";
+}
+
+.pi-key:before {
+    content: "\e981";
+}
+
+.pi-shopping-cart:before {
+    content: "\e980";
+}
+
+.pi-comments:before {
+    content: "\e97e";
+}
+
+.pi-comment:before {
+    content: "\e97f";
+}
+
+.pi-briefcase:before {
+    content: "\e97d";
+}
+
+.pi-bell:before {
+    content: "\e97c";
+}
+
+.pi-paperclip:before {
+    content: "\e97b";
+}
+
+.pi-share-alt:before {
+    content: "\e97a";
+}
+
+.pi-envelope:before {
+    content: "\e979";
+}
+
+.pi-volume-down:before {
+    content: "\e976";
+}
+
+.pi-volume-up:before {
+    content: "\e977";
+}
+
+.pi-volume-off:before {
+    content: "\e978";
+}
+
+.pi-eject:before {
+    content: "\e975";
+}
+
+.pi-money-bill:before {
+    content: "\e974";
+}
+
+.pi-images:before {
+    content: "\e973";
+}
+
+.pi-image:before {
+    content: "\e972";
+}
+
+.pi-sign-in:before {
+    content: "\e970";
+}
+
+.pi-sign-out:before {
+    content: "\e971";
+}
+
+.pi-wifi:before {
+    content: "\e96f";
+}
+
+.pi-sitemap:before {
+    content: "\e96e";
+}
+
+.pi-chart-bar:before {
+    content: "\e96d";
+}
+
+.pi-camera:before {
+    content: "\e96c";
+}
+
+.pi-dollar:before {
+    content: "\e96b";
+}
+
+.pi-lock-open:before {
+    content: "\e96a";
+}
+
+.pi-table:before {
+    content: "\e969";
+}
+
+.pi-map-marker:before {
+    content: "\e968";
+}
+
+.pi-list:before {
+    content: "\e967";
+}
+
+.pi-eye-slash:before {
+    content: "\e965";
+}
+
+.pi-eye:before {
+    content: "\e966";
+}
+
+.pi-folder-open:before {
+    content: "\e964";
+}
+
+.pi-folder:before {
+    content: "\e963";
+}
+
+.pi-video:before {
+    content: "\e962";
+}
+
+.pi-inbox:before {
+    content: "\e961";
+}
+
+.pi-lock:before {
+    content: "\e95f";
+}
+
+.pi-unlock:before {
+    content: "\e960";
+}
+
+.pi-tags:before {
+    content: "\e95d";
+}
+
+.pi-tag:before {
+    content: "\e95e";
+}
+
+.pi-power-off:before {
+    content: "\e95c";
+}
+
+.pi-save:before {
+    content: "\e95b";
+}
+
+.pi-question-circle:before {
+    content: "\e959";
+}
+
+.pi-question:before {
+    content: "\e95a";
+}
+
+.pi-copy:before {
+    content: "\e957";
+}
+
+.pi-file:before {
+    content: "\e958";
+}
+
+.pi-clone:before {
+    content: "\e955";
+}
+
+.pi-calendar-times:before {
+    content: "\e952";
+}
+
+.pi-calendar-minus:before {
+    content: "\e953";
+}
+
+.pi-calendar-plus:before {
+    content: "\e954";
+}
+
+.pi-ellipsis-v:before {
+    content: "\e950";
+}
+
+.pi-ellipsis-h:before {
+    content: "\e951";
+}
+
+.pi-bookmark:before {
+    content: "\e94e";
+}
+
+.pi-globe:before {
+    content: "\e94f";
+}
+
+.pi-replay:before {
+    content: "\e94d";
+}
+
+.pi-filter:before {
+    content: "\e94c";
+}
+
+.pi-print:before {
+    content: "\e94b";
+}
+
+.pi-align-right:before {
+    content: "\e946";
+}
+
+.pi-align-left:before {
+    content: "\e947";
+}
+
+.pi-align-center:before {
+    content: "\e948";
+}
+
+.pi-align-justify:before {
+    content: "\e949";
+}
+
+.pi-cog:before {
+    content: "\e94a";
+}
+
+.pi-cloud-download:before {
+    content: "\e943";
+}
+
+.pi-cloud-upload:before {
+    content: "\e944";
+}
+
+.pi-cloud:before {
+    content: "\e945";
+}
+
+.pi-pencil:before {
+    content: "\e942";
+}
+
+.pi-users:before {
+    content: "\e941";
+}
+
+.pi-clock:before {
+    content: "\e940";
+}
+
+.pi-user-minus:before {
+    content: "\e93e";
+}
+
+.pi-user-plus:before {
+    content: "\e93f";
+}
+
+.pi-trash:before {
+    content: "\e93d";
+}
+
+.pi-external-link:before {
+    content: "\e93c";
+}
+
+.pi-window-maximize:before {
+    content: "\e93b";
+}
+
+.pi-window-minimize:before {
+    content: "\e93a";
+}
+
+.pi-refresh:before {
+    content: "\e938";
+}
+  
+.pi-user:before {
+    content: "\e939";
+}
+
+.pi-exclamation-triangle:before {
+    content: "\e922";
+}
+
+.pi-calendar:before {
+    content: "\e927";
+}
+
+.pi-chevron-circle-left:before {
+    content: "\e928";
+}
+
+.pi-chevron-circle-down:before {
+    content: "\e929";
+}
+
+.pi-chevron-circle-right:before {
+    content: "\e92a";
+}
+
+.pi-chevron-circle-up:before {
+    content: "\e92b";
+}
+
+.pi-angle-double-down:before {
+    content: "\e92c";
+}
+
+.pi-angle-double-left:before {
+    content: "\e92d";
+}
+
+.pi-angle-double-right:before {
+    content: "\e92e";
+}
+
+.pi-angle-double-up:before {
+    content: "\e92f";
+}
+
+.pi-angle-down:before {
+    content: "\e930";
+}
+
+.pi-angle-left:before {
+    content: "\e931";
+}
+
+.pi-angle-right:before {
+    content: "\e932";
+}
+
+.pi-angle-up:before {
+    content: "\e933";
+}
+
+.pi-upload:before {
+    content: "\e934";
+}
+
+.pi-download:before {
+    content: "\e956";
+}
+
+.pi-ban:before {
+    content: "\e935";
+}
+
+.pi-star-fill:before {
+    content: "\e936";
+}
+
+.pi-star:before {
+    content: "\e937";
+}
+
+.pi-chevron-left:before {
+    content: "\e900";
+}
+
+.pi-chevron-right:before {
+    content: "\e901";
+}
+
+.pi-chevron-down:before {
+    content: "\e902";
+}
+
+.pi-chevron-up:before {
+    content: "\e903";
+}
+
+.pi-caret-left:before {
+    content: "\e904";
+}
+
+.pi-caret-right:before {
+    content: "\e905";
+}
+
+.pi-caret-down:before {
+    content: "\e906";
+}
+
+.pi-caret-up:before {
+    content: "\e907";
+}
+
+.pi-search:before {
+    content: "\e908";
+}
+
+.pi-check:before {
+    content: "\e909";
+}
+
+.pi-check-circle:before {
+    content: "\e90a";
+}
+
+.pi-times:before {
+    content: "\e90b";
+}
+
+.pi-times-circle:before {
+    content: "\e90c";
+}
+
+.pi-plus:before {
+    content: "\e90d";
+}
+
+.pi-plus-circle:before {
+    content: "\e90e";
+}
+
+.pi-minus:before {
+    content: "\e90f";
+}
+
+.pi-minus-circle:before {
+    content: "\e910";
+}
+
+.pi-circle-on:before {
+    content: "\e911";
+}
+
+.pi-circle-off:before {
+    content: "\e912";
+}
+
+.pi-sort-down:before {
+    content: "\e913";
+}
+
+.pi-sort-up:before {
+    content: "\e914";
+}
+
+.pi-sort:before {
+    content: "\e915";
+}
+
+.pi-step-backward:before {
+    content: "\e916";
+}
+
+.pi-step-forward:before {
+    content: "\e917";
+}
+
+.pi-th-large:before {
+    content: "\e918";
+}
+
+.pi-arrow-down:before {
+    content: "\e919";
+}
+
+.pi-arrow-left:before {
+    content: "\e91a";
+}
+
+.pi-arrow-right:before {
+    content: "\e91b";
+}
+
+.pi-arrow-up:before {
+    content: "\e91c";
+}
+
+.pi-bars:before {
+    content: "\e91d";
+}
+
+.pi-arrow-circle-down:before {
+    content: "\e91e";
+}
+
+.pi-arrow-circle-left:before {
+    content: "\e91f";
+}
+
+.pi-arrow-circle-right:before {
+    content: "\e920";
+}
+
+.pi-arrow-circle-up:before {
+    content: "\e921";
+}
+
+.pi-info:before {
+    content: "\e923";
+}
+
+.pi-info-circle:before {
+    content: "\e924";
+}
+
+.pi-home:before {
+    content: "\e925";
+}
+
+.pi-spinner:before {
+    content: "\e926";
+}
Index: trip-planner-front/node_modules/primeicons/raw-svg/align-center.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/align-center.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/align-center.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="align-center"><path d="M17,10.75H7a.75.75,0,0,1,0-1.5H17a.75.75,0,0,1,0,1.5Z"/><path d="M20,6.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M20,14.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M17,18.75H7a.75.75,0,0,1,0-1.5H17a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/align-justify.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/align-justify.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/align-justify.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="align-justify"><path d="M20,10.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M20,6.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M20,14.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M20,18.75H4a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/align-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/align-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/align-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="align-left"><path d="M13.93,11h-10a.75.75,0,1,1,0-1.5h10a.75.75,0,0,1,0,1.5Z"/><path d="M20.07,7h-16a.75.75,0,0,1,0-1.5h16a.75.75,0,0,1,0,1.5Z"/><path d="M20.07,15h-16a.75.75,0,0,1,0-1.5h16a.75.75,0,0,1,0,1.5Z"/><path d="M13.93,19h-10a.75.75,0,1,1,0-1.5h10a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/align-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/align-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/align-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="align-right"><path d="M20,10.75H10a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/><path d="M20.07,6.75h-16a.75.75,0,0,1,0-1.5h16a.75.75,0,0,1,0,1.5Z"/><path d="M20.07,14.75h-16a.75.75,0,0,1,0-1.5h16a.75.75,0,0,1,0,1.5Z"/><path d="M20,18.75H10a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/android.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/android.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/android.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.cls-1{fill:none;}</style></defs><g id="android"><path d="M18.06,9.33a.94.94,0,0,0-.94.94v4.26a.94.94,0,0,0,1.88,0V10.27A.94.94,0,0,0,18.06,9.33Z"/><path d="M5.94,9.33a.94.94,0,0,0-.94.94v4.26a.94.94,0,0,0,1.88,0V10.27A.94.94,0,0,0,5.94,9.33Z"/><path d="M7.56,9.33v6.4A1.07,1.07,0,0,0,8.63,16.8h.68v2.27a.94.94,0,0,0,1.88,0h0V16.8h1.62v2.27a.94.94,0,0,0,1.88,0h0V16.8h.68a1.07,1.07,0,0,0,1.07-1.07V9.33Z"/><circle class="cls-1" cx="9.98" cy="7.07" r="0.4"/><circle class="cls-1" cx="14.02" cy="7.07" r="0.4"/><path d="M16.32,8a4.13,4.13,0,0,0-1.83-2.36l-.15-.09-.16-.08.18-.31.53-1A.14.14,0,0,0,14.84,4h0l-.07,0a.17.17,0,0,0-.13.07L14.1,5l-.17.31-.16-.07-.17-.06a4.88,4.88,0,0,0-3.2,0l-.16.06-.17.07L9.9,5l-.54-1a.14.14,0,0,0-.25.14l.53,1,.18.31-.16.08-.15.09A4.07,4.07,0,0,0,7.69,8a3.11,3.11,0,0,0-.13.8h8.88A3.6,3.6,0,0,0,16.32,8ZM10,7.47a.4.4,0,1,1,.4-.4A.4.4,0,0,1,10,7.47Zm4,0a.4.4,0,1,1,.4-.4A.4.4,0,0,1,14,7.47Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-double-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-double-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-double-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-double-down"><path d="M12,17.25a.74.74,0,0,1-.53-.22L8,13.53A.75.75,0,0,1,9,12.47l3,3,3-3A.75.75,0,0,1,16,13.53L12.53,17A.74.74,0,0,1,12,17.25Z"/><path d="M12,11.75a.74.74,0,0,1-.53-.22L8,8A.75.75,0,0,1,9,7l3,3,3-3A.75.75,0,0,1,16,8l-3.5,3.5A.74.74,0,0,1,12,11.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-double-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-double-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-double-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-double-left"><path d="M11,16.25a.74.74,0,0,1-.53-.22L7,12.53a.75.75,0,0,1,0-1.06L10.47,8A.75.75,0,0,1,11.53,9l-3,3,3,3a.75.75,0,0,1,0,1.06A.74.74,0,0,1,11,16.25Z"/><path d="M16.5,16.25A.74.74,0,0,1,16,16l-3.5-3.5a.75.75,0,0,1,0-1.06L16,8A.75.75,0,0,1,17,9l-3,3,3,3A.75.75,0,0,1,17,16,.74.74,0,0,1,16.5,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-double-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-double-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-double-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-double-right"><path d="M13,16.25a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06l3-3-3-3A.75.75,0,0,1,13.53,8l3.5,3.5a.75.75,0,0,1,0,1.06L13.53,16A.74.74,0,0,1,13,16.25Z"/><path d="M7.5,16.25A.74.74,0,0,1,7,16,.75.75,0,0,1,7,15l3-3L7,9A.75.75,0,0,1,8,8l3.5,3.5a.75.75,0,0,1,0,1.06L8,16A.74.74,0,0,1,7.5,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-double-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-double-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-double-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-double-up"><path d="M15.5,11.75a.74.74,0,0,1-.53-.22l-3-3-3,3A.75.75,0,0,1,8,10.47L11.47,7a.75.75,0,0,1,1.06,0l3.5,3.5a.75.75,0,0,1,0,1.06A.74.74,0,0,1,15.5,11.75Z"/><path d="M15.5,17.25A.74.74,0,0,1,15,17l-3-3L9,17A.75.75,0,0,1,8,16l3.5-3.5a.75.75,0,0,1,1.06,0L16,16A.75.75,0,0,1,16,17,.74.74,0,0,1,15.5,17.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-down"><path d="M12,14.5a.74.74,0,0,1-.53-.22L8,10.78A.75.75,0,0,1,9,9.72l3,3,3-3A.75.75,0,0,1,16,10.78l-3.5,3.5A.74.74,0,0,1,12,14.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-left"><path d="M13.75,16.25a.74.74,0,0,1-.53-.22l-3.5-3.5a.75.75,0,0,1,0-1.06L13.22,8A.75.75,0,0,1,14.28,9l-3,3,3,3a.75.75,0,0,1,0,1.06A.74.74,0,0,1,13.75,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-right"><path d="M10.25,16.25A.74.74,0,0,1,9.72,16a.75.75,0,0,1,0-1.06l3-3-3-3A.75.75,0,0,1,10.78,8l3.5,3.5a.75.75,0,0,1,0,1.06L10.78,16A.74.74,0,0,1,10.25,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/angle-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/angle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/angle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="angle-up"><path d="M15.5,14.5a.74.74,0,0,1-.53-.22l-3-3-3,3A.75.75,0,0,1,8,13.22l3.5-3.5a.75.75,0,0,1,1.06,0l3.5,3.5a.75.75,0,0,1,0,1.06A.74.74,0,0,1,15.5,14.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/apple.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/apple.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/apple.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="apple"><path d="M16.52,12.46a3.31,3.31,0,0,1,1.78-3,3.85,3.85,0,0,0-3-1.6c-1.27-.1-2.65.74-3.16.74s-1.77-.7-2.73-.7c-2,0-4.11,1.59-4.11,4.76a9,9,0,0,0,.51,2.9C6.25,16.84,7.9,20.05,9.62,20c.9,0,1.54-.64,2.71-.64s1.72.64,2.73.64c1.73,0,3.23-2.95,3.66-4.26a3.54,3.54,0,0,1-2.2-3.28Zm-2-5.87A3.37,3.37,0,0,0,15.35,4a3.79,3.79,0,0,0-2.42,1.25A3.41,3.41,0,0,0,12,7.81,3,3,0,0,0,14.5,6.59Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-circle-down"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,16.75a.74.74,0,0,1-.53-.22l-4-4a.75.75,0,0,1,1.06-1.06L12,14.94l3.47-3.47a.75.75,0,0,1,1.06,1.06l-4,4A.74.74,0,0,1,12,16.75Z"/><path d="M12,16.75a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,12,16.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-circle-left"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,16.75a.74.74,0,0,1-.53-.22l-4-4a.75.75,0,0,1,0-1.06l4-4a.75.75,0,0,1,1.06,1.06L9.06,12l3.47,3.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,12,16.75Z"/><path d="M16,12.75H8a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-circle-right"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,16.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L14.94,12,11.47,8.53a.75.75,0,0,1,1.06-1.06l4,4a.75.75,0,0,1,0,1.06l-4,4A.74.74,0,0,1,12,16.75Z"/><path d="M16,12.75H8a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-circle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-circle-up"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M16,12.75a.74.74,0,0,1-.53-.22L12,9.06,8.53,12.53a.75.75,0,0,1-1.06-1.06l4-4a.75.75,0,0,1,1.06,0l4,4a.75.75,0,0,1,0,1.06A.74.74,0,0,1,16,12.75Z"/><path d="M12,16.75a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,12,16.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-down-left"><path d="M15.54,17.7a.75.75,0,0,0,0-1.5H8.86l8.62-8.62a.75.75,0,1,0-1.06-1.06L7.8,15.14V8.46a.75.75,0,0,0-1.5,0V17a.75.75,0,0,0,.06.29.76.76,0,0,0,.69.46Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-down-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-down-right"><path d="M17.7,8.46a.75.75,0,1,0-1.5,0v6.68L7.58,6.52A.75.75,0,0,0,6.52,7.58l8.62,8.62H8.46a.75.75,0,0,0,0,1.5H17a.75.75,0,0,0,.29-.06A.76.76,0,0,0,17.7,17Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-down"><path d="M12,19.75a.74.74,0,0,1-.53-.22l-6-6a.75.75,0,0,1,1.06-1.06L12,17.94l5.47-5.47a.75.75,0,0,1,1.06,1.06l-6,6A.74.74,0,0,1,12,19.75Z"/><path d="M12,19.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,12,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-left"><path d="M11,18.75a.74.74,0,0,1-.53-.22l-6-6a.75.75,0,0,1,0-1.06l6-6a.75.75,0,0,1,1.06,1.06L6.06,12l5.47,5.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,11,18.75Z"/><path d="M19,12.75H5a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-right"><path d="M13,18.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L17.94,12,12.47,6.53a.75.75,0,0,1,1.06-1.06l6,6a.75.75,0,0,1,0,1.06l-6,6A.74.74,0,0,1,13,18.75Z"/><path d="M19,12.75H5a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-up-left"><path d="M6.3,15.54a.75.75,0,0,0,1.5,0V8.86l8.62,8.62a.75.75,0,1,0,1.06-1.06L8.86,7.8h6.68a.75.75,0,0,0,0-1.5H7.05a.75.75,0,0,0-.29.06.76.76,0,0,0-.46.69Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-up-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-up-right"><path d="M8.46,6.3a.75.75,0,1,0,0,1.5h6.68L6.52,16.42a.75.75,0,1,0,1.06,1.06L16.2,8.86v6.68a.75.75,0,0,0,1.5,0V7.05a.75.75,0,0,0-.06-.29A.76.76,0,0,0,17,6.3Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrow-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrow-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrow-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrow-up"><path d="M18,11.75a.74.74,0,0,1-.53-.22L12,6.06,6.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,18,11.75Z"/><path d="M12,19.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,12,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrows-h.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrows-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrows-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrows-h"><path d="M20.69,11.71a.78.78,0,0,0-.16-.24l-4-4a.75.75,0,1,0-1.06,1.06l2.72,2.72H5.81L8.53,8.53A.75.75,0,0,0,7.47,7.47l-4,4a.78.78,0,0,0-.16.24.73.73,0,0,0,0,.58.78.78,0,0,0,.16.24l4,4a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06L5.81,12.75H18.19l-2.72,2.72a.75.75,0,0,0,0,1.06.75.75,0,0,0,1.06,0l4-4a.78.78,0,0,0,.16-.24A.73.73,0,0,0,20.69,11.71Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/arrows-v.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/arrows-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/arrows-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="arrows-v"><path d="M12.29,20.69a.78.78,0,0,0,.24-.16l4-4a.75.75,0,0,0-1.06-1.06l-2.72,2.72V5.81l2.72,2.72a.75.75,0,0,0,1.06-1.06l-4-4a.78.78,0,0,0-.24-.16.73.73,0,0,0-.58,0,.78.78,0,0,0-.24.16l-4,4a.75.75,0,0,0,0,1.06.75.75,0,0,0,1.06,0l2.72-2.72V18.19L8.53,15.47a.75.75,0,0,0-1.06,0,.75.75,0,0,0,0,1.06l4,4a.78.78,0,0,0,.24.16A.73.73,0,0,0,12.29,20.69Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/at.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/at.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/at.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="at"><path d="M12,3.25A8.75,8.75,0,0,0,3.25,12,8.65,8.65,0,0,0,12,20.75a.75.75,0,0,0,0-1.5A7.17,7.17,0,0,1,4.75,12,7.26,7.26,0,0,1,12,4.75c4.81,0,7.25,2.44,7.25,7.25v1.38a1.46,1.46,0,1,1-2.91,0v-5a.75.75,0,0,0-1.5,0v.34A4.31,4.31,0,0,0,12,7.66a4.34,4.34,0,0,0,0,8.68,4.3,4.3,0,0,0,3.24-1.49,2.95,2.95,0,0,0,5.51-1.47V12C20.75,6.36,17.64,3.25,12,3.25Zm0,11.59A2.84,2.84,0,1,1,14.84,12,2.85,2.85,0,0,1,12,14.84Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/backward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="backward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M20,20a.74.74,0,0,1-.51-.2L12,12.8a.75.75,0,0,1,0-1.1l7.47-7a.75.75,0,0,1,1.26.55v14a.76.76,0,0,1-.45.69A.8.8,0,0,1,20,20Zm-6.37-7.75,5.62,5.27V7Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M11.47,20a.79.79,0,0,1-.52-.2l-7.46-7a.75.75,0,0,1,0-1.1L11,4.7a.76.76,0,0,1,1.27.55v14a.75.75,0,0,1-.46.69A.72.72,0,0,1,11.47,20ZM5.1,12.25l5.62,5.27V7Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/ban.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/ban.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/ban.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="ban"><path d="M12,3a9,9,0,1,0,9,9A9,9,0,0,0,12,3ZM4.5,12A7.44,7.44,0,0,1,6.2,7.26L16.74,17.8A7.49,7.49,0,0,1,4.5,12Zm13.3,4.74L7.26,6.2A7.49,7.49,0,0,1,17.8,16.74Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/bars.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/bars.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/bars.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="bars"><path d="M19,12.75H5a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/><path d="M19,8.25H5a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/><path d="M19,17.25H5a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/bell.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/bell.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/bell.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="bell"><path d="M20.53,16.25c-.09,0-2.11-.36-2.11-6.25C18.42,5.84,16,3.25,12,3.25S5.58,5.84,5.58,10c0,6-2.09,6.25-2.08,6.25a.75.75,0,0,0,0,1.5H8.33a3.74,3.74,0,0,0,7.34,0h4.84a.75.75,0,0,0,0-1.5Zm-8.53,3a2.24,2.24,0,0,1-2.11-1.5h4.22A2.24,2.24,0,0,1,12,19.25Zm-6.24-3c.72-1.09,1.32-3,1.32-6.25S8.88,4.75,12,4.75,16.92,6.66,16.92,10s.6,5.16,1.32,6.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/bolt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/bolt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/bolt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="bolt"><path d="M11.09,21.5a.67.67,0,0,1-.24,0,.83.83,0,0,1-.59-.81v-.11l.9-6.35H6.82a.8.8,0,0,1-.71-.43.85.85,0,0,1,0-.86l2-3.49,4.1-6.52a.79.79,0,0,1,.92-.35.83.83,0,0,1,.59.81v.11l-.9,6.35h4.35a.8.8,0,0,1,.71.43.85.85,0,0,1,0,.86l-2,3.49-4.1,6.52A.79.79,0,0,1,11.09,21.5Zm-.53-1.21h0Zm-2.63-7.6h4a.84.84,0,0,1,.83.85v.11l-.59,4.14,2.5-4,1.44-2.48h-4a.84.84,0,0,1-.83-.85v-.11l.59-4.14-2.5,4Zm-.57,1Zm9.28-3.34ZM13.44,3.7h0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/book.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/book.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/book.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="book"><path d="M19,3.25H6.75A2.43,2.43,0,0,0,4.25,5.6V18a2.85,2.85,0,0,0,2.94,2.75H19a.76.76,0,0,0,.75-.75V4A.76.76,0,0,0,19,3.25Zm-.75,16H7.19A1.35,1.35,0,0,1,5.75,18a1.35,1.35,0,0,1,1.44-1.25H18.25Zm0-4H7.19a3,3,0,0,0-1.44.37V5.6a.94.94,0,0,1,1-.85h11.5Z"/><path d="M8.75,8.75h6.5a.75.75,0,0,0,0-1.5H8.75a.75.75,0,0,0,0,1.5Z"/><path d="M8.75,12.25h6.5a.75.75,0,0,0,0-1.5H8.75a.75.75,0,0,0,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/bookmark-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/bookmark-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/bookmark-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="bookmark-fill"><path d="M15.75,3.25H8.25A2.75,2.75,0,0,0,5.5,6V20a.75.75,0,0,0,1.18.62L12,16.91l5.32,3.71a.75.75,0,0,0,.43.13.85.85,0,0,0,.35-.08.77.77,0,0,0,.4-.67V6A2.75,2.75,0,0,0,15.75,3.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/bookmark.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/bookmark.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/bookmark.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="bookmark"><path d="M17.75,20.75a.83.83,0,0,1-.43-.13L12,16.91,6.68,20.62a.75.75,0,0,1-.78,0A.74.74,0,0,1,5.5,20V6A2.75,2.75,0,0,1,8.25,3.25h7.5A2.75,2.75,0,0,1,18.5,6V20a.74.74,0,0,1-.4.66A.73.73,0,0,1,17.75,20.75ZM12,15.25a.75.75,0,0,1,.43.13L17,18.56V6a1.25,1.25,0,0,0-1.25-1.25H8.25A1.25,1.25,0,0,0,7,6V18.56l4.57-3.18A.75.75,0,0,1,12,15.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/box.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/box.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/box.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="box"><path d="M20.73,16.52s0-.07,0-.11V7.59a.73.73,0,0,0-.08-.33.74.74,0,0,0-.36-.36l-8-3.58a.75.75,0,0,0-.62,0l-8,3.58a.8.8,0,0,0-.44.69v8.82a.83.83,0,0,0,.44.69l8,3.58a.72.72,0,0,0,.62,0l8-3.58A.77.77,0,0,0,20.73,16.52Zm-16-7.78,6.5,2.92v7.18l-6.5-2.91Zm8,2.92,6.5-2.92v7.19l-6.5,2.91ZM12,4.82l6.17,2.77L12,10.35,5.83,7.59Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/briefcase.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/briefcase.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/briefcase.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="briefcase"><path d="M19,6.25H15.25V5a1.89,1.89,0,0,0-2-1.75h-2.5A1.89,1.89,0,0,0,8.75,5V6.25H5A1.76,1.76,0,0,0,3.25,8V18A1.76,1.76,0,0,0,5,19.75H19A1.76,1.76,0,0,0,20.75,18V8A1.76,1.76,0,0,0,19,6.25ZM10.25,5c0-.08.19-.25.5-.25h2.5c.31,0,.5.17.5.25V6.25h-3.5ZM5,7.75H19a.25.25,0,0,1,.25.25v3.25H4.75V8A.25.25,0,0,1,5,7.75Zm3.75,5h6.5v1.5H8.75ZM19,18.25H5A.25.25,0,0,1,4.75,18V12.75h2.5V15a.76.76,0,0,0,.75.75h8a.76.76,0,0,0,.75-.75V12.75h2.5V18A.25.25,0,0,1,19,18.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/building.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/building.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/building.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="building"><rect x="9" y="6" width="2" height="2" rx="0.5"/><rect x="13" y="6" width="2" height="2" rx="0.5"/><rect x="9" y="9.5" width="2" height="2" rx="0.5"/><rect x="13" y="9.5" width="2" height="2" rx="0.5"/><rect x="9" y="13" width="2" height="2" rx="0.5"/><rect x="13" y="13" width="2" height="2" rx="0.5"/><path d="M18.25,19.25h-.5V4A.76.76,0,0,0,17,3.25H7A.76.76,0,0,0,6.25,4V19.25h-.5a.75.75,0,0,0,0,1.5h12.5a.75.75,0,0,0,0-1.5Zm-2,0H11V17a.5.5,0,0,0-.5-.5h-1A.5.5,0,0,0,9,17v2.25H7.75V4.75h8.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/calendar-minus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/calendar-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/calendar-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="calendar-minus"><path d="M17,4.75H15.75V3.5a.75.75,0,0,0-1.5,0V4.75H9.75V3.5a.75.75,0,0,0-1.5,0V4.75H7A2.75,2.75,0,0,0,4.25,7.5v11A2.75,2.75,0,0,0,7,21.25H17a2.75,2.75,0,0,0,2.75-2.75V7.5A2.75,2.75,0,0,0,17,4.75ZM7,6.25H8.25V7.5a.75.75,0,0,0,1.5,0V6.25h4.5V7.5a.75.75,0,0,0,1.5,0V6.25H17A1.25,1.25,0,0,1,18.25,7.5v2.75H5.75V7.5A1.25,1.25,0,0,1,7,6.25Zm10,13.5H7A1.25,1.25,0,0,1,5.75,18.5V11.75h12.5V18.5A1.25,1.25,0,0,1,17,19.75Z"/><path d="M14,15.3H10a.75.75,0,0,0,0,1.5h4a.75.75,0,0,0,0-1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/calendar-plus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/calendar-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/calendar-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="calendar-plus"><path d="M17,4.75H15.75V3.5a.75.75,0,0,0-1.5,0V4.75H9.75V3.5a.75.75,0,0,0-1.5,0V4.75H7A2.75,2.75,0,0,0,4.25,7.5v11A2.75,2.75,0,0,0,7,21.25H17a2.75,2.75,0,0,0,2.75-2.75V7.5A2.75,2.75,0,0,0,17,4.75ZM7,6.25H8.25V7.5a.75.75,0,0,0,1.5,0V6.25h4.5V7.5a.75.75,0,0,0,1.5,0V6.25H17A1.25,1.25,0,0,1,18.25,7.5v2.75H5.75V7.5A1.25,1.25,0,0,1,7,6.25Zm10,13.5H7A1.25,1.25,0,0,1,5.75,18.5V11.75h12.5V18.5A1.25,1.25,0,0,1,17,19.75Z"/><path d="M14,15.25H12.75V14a.75.75,0,0,0-1.5,0v1.25H10a.75.75,0,0,0,0,1.5h1.25V18a.75.75,0,0,0,1.5,0V16.75H14a.75.75,0,0,0,0-1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/calendar-times.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/calendar-times.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/calendar-times.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="calendar-times"><path d="M17,4.75H15.75V3.5a.75.75,0,0,0-1.5,0V4.75H9.75V3.5a.75.75,0,0,0-1.5,0V4.75H7A2.75,2.75,0,0,0,4.25,7.5v11A2.75,2.75,0,0,0,7,21.25H17a2.75,2.75,0,0,0,2.75-2.75V7.5A2.75,2.75,0,0,0,17,4.75ZM7,6.25H8.25V7.5a.75.75,0,0,0,1.5,0V6.25h4.5V7.5a.75.75,0,0,0,1.5,0V6.25H17A1.25,1.25,0,0,1,18.25,7.5v2.75H5.75V7.5A1.25,1.25,0,0,1,7,6.25Zm10,13.5H7A1.25,1.25,0,0,1,5.75,18.5V11.75h12.5V18.5A1.25,1.25,0,0,1,17,19.75Z"/><path d="M13.94,14.06a.74.74,0,0,0-1.06,0l-.88.88-.88-.88a.75.75,0,0,0-1.06,1.06l.88.88-.88.88a.74.74,0,0,0,0,1.06.71.71,0,0,0,.53.22.74.74,0,0,0,.53-.22l.88-.88.88.88a.74.74,0,0,0,.53.22.71.71,0,0,0,.53-.22.74.74,0,0,0,0-1.06L13.06,16l.88-.88A.74.74,0,0,0,13.94,14.06Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/calendar.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/calendar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/calendar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="celandar"><path d="M17,4.25H15.75V3a.75.75,0,0,0-1.5,0V4.25H9.75V3a.75.75,0,0,0-1.5,0V4.25H7A2.75,2.75,0,0,0,4.25,7V18A2.75,2.75,0,0,0,7,20.75H17A2.75,2.75,0,0,0,19.75,18V7A2.75,2.75,0,0,0,17,4.25ZM7,5.75H8.25V7a.75.75,0,0,0,1.5,0V5.75h4.5V7a.75.75,0,0,0,1.5,0V5.75H17A1.25,1.25,0,0,1,18.25,7V9.75H5.75V7A1.25,1.25,0,0,1,7,5.75Zm10,13.5H7A1.25,1.25,0,0,1,5.75,18V11.25h12.5V18A1.25,1.25,0,0,1,17,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/camera.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/camera.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/camera.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="camera"><path d="M18,19.25H6A2.75,2.75,0,0,1,3.25,16.5v-6A2.75,2.75,0,0,1,6,7.75h.6L7.78,6a2.76,2.76,0,0,1,2.29-1.22h3.86A2.76,2.76,0,0,1,16.22,6L17.4,7.75H18a2.75,2.75,0,0,1,2.75,2.75v6A2.75,2.75,0,0,1,18,19.25ZM6,9.25A1.25,1.25,0,0,0,4.75,10.5v6A1.25,1.25,0,0,0,6,17.75H18a1.25,1.25,0,0,0,1.25-1.25v-6A1.25,1.25,0,0,0,18,9.25H17a.75.75,0,0,1-.62-.33L15,6.81a1.24,1.24,0,0,0-1-.56H10.07a1.24,1.24,0,0,0-1,.56L7.62,8.92A.75.75,0,0,1,7,9.25Z"/><path d="M12,16.25A3.25,3.25,0,1,1,15.25,13,3.26,3.26,0,0,1,12,16.25Zm0-5A1.75,1.75,0,1,0,13.75,13,1.76,1.76,0,0,0,12,11.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/car.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/car.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/car.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="car"><path d="M19.78,9.44l-1.84-5A1.75,1.75,0,0,0,16.3,3.25H7.7A1.75,1.75,0,0,0,6.06,4.4l-1.84,5a1.76,1.76,0,0,0-1,1.56v4.5A1.73,1.73,0,0,0,4,16.94S4,17,4,17v2a1,1,0,0,0,1,1H6a1,1,0,0,0,1-1V17.25H17V19a1,1,0,0,0,1,1h1a1,1,0,0,0,1-1V17s0,0,0-.06a1.73,1.73,0,0,0,.76-1.44V11A1.76,1.76,0,0,0,19.78,9.44Zm-.53,6.06a.25.25,0,0,1-.25.25H5a.25.25,0,0,1-.25-.25V11A.25.25,0,0,1,5,10.75H19a.25.25,0,0,1,.25.25ZM7.47,4.91a.25.25,0,0,1,.23-.16h8.6a.25.25,0,0,1,.23.16l1.4,3.84H6.07Z"/><circle cx="8" cy="13.25" r="1.5"/><circle cx="16" cy="13.25" r="1.5"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/caret-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/caret-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/caret-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="caret-down"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M12,16.75a.74.74,0,0,1-.6-.3l-6-8a.75.75,0,0,1-.07-.79A.76.76,0,0,1,6,7.25H18a.76.76,0,0,1,.67.41.75.75,0,0,1-.07.79l-6,8A.74.74,0,0,1,12,16.75Zm-4.5-8,4.5,6,4.5-6Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/caret-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/caret-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/caret-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="caret-left"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M16,18.75a.74.74,0,0,1-.45-.15l-8-6a.75.75,0,0,1,0-1.2l8-6a.75.75,0,0,1,.79-.07.76.76,0,0,1,.41.67V18a.76.76,0,0,1-.41.67A.84.84,0,0,1,16,18.75ZM9.25,12l6,4.5v-9Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/caret-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/caret-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/caret-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="caret-right"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M8,18.75a.76.76,0,0,1-.33-.08A.75.75,0,0,1,7.25,18V6a.75.75,0,0,1,.42-.67.74.74,0,0,1,.78.07l8,6a.75.75,0,0,1,0,1.2l-8,6A.74.74,0,0,1,8,18.75ZM8.75,7.5v9l6-4.5Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/caret-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/caret-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/caret-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="caret-up"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M18,16.75H6a.76.76,0,0,1-.67-.41.75.75,0,0,1,.07-.79l6-8a.77.77,0,0,1,1.2,0l6,8a.75.75,0,0,1,.07.79A.76.76,0,0,1,18,16.75ZM7.5,15.25h9l-4.5-6Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chart-bar.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chart-bar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chart-bar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chart-bar"><path d="M4.5,20.25a.76.76,0,0,1-.75-.75V4.5a.75.75,0,0,1,1.5,0v15A.76.76,0,0,1,4.5,20.25Z"/><path d="M19.5,20.25H4.5a.75.75,0,0,1,0-1.5h15a.75.75,0,0,1,0,1.5Z"/><path d="M8,16.75A.76.76,0,0,1,7.25,16V12a.75.75,0,0,1,1.5,0v4A.76.76,0,0,1,8,16.75Z"/><path d="M11.5,16.75a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,11.5,16.75Z"/><path d="M15,16.75a.76.76,0,0,1-.75-.75V12a.75.75,0,0,1,1.5,0v4A.76.76,0,0,1,15,16.75Z"/><path d="M18.5,16.75a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,18.5,16.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chart-line.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chart-line.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chart-line.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chart-line"><path d="M4.5,20.25a.76.76,0,0,1-.75-.75V4.5a.75.75,0,0,1,1.5,0v15A.76.76,0,0,1,4.5,20.25Z"/><path d="M19.5,20.25H4.5a.75.75,0,0,1,0-1.5h15a.75.75,0,0,1,0,1.5Z"/><path d="M14,14.75a.74.74,0,0,1-.53-.22L11,12.06,8.53,14.53a.75.75,0,0,1-1.06-1.06l3-3a.75.75,0,0,1,1.06,0L14,12.94l3.47-3.47a.75.75,0,0,1,1.06,1.06l-4,4A.74.74,0,0,1,14,14.75Z"/><path d="M18.5,13.84a.76.76,0,0,1-.75-.75V10.25H15a.75.75,0,0,1,0-1.5h3.5a.76.76,0,0,1,.75.75v3.59A.76.76,0,0,1,18.5,13.84Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chart-pie.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chart-pie.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chart-pie.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chart-pie"><path d="M13.25,4.79V4.5a.76.76,0,0,0-.75-.75A8.8,8.8,0,0,0,4.89,16.88h0a.75.75,0,0,0,.65.37.74.74,0,0,0,.37-.1L6.2,17a7.74,7.74,0,1,0,7.05-12.2Zm-1.5.5v6.78L5.86,15.45A7.28,7.28,0,0,1,11.75,5.29Zm.75,13.46a6.27,6.27,0,0,1-5-2.51l5.37-3.09a.73.73,0,0,0,.38-.65V6.3a6.25,6.25,0,0,1-.75,12.45Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/check-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/check-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/check-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="check-circle"><path d="M10.5,15.25A.74.74,0,0,1,10,15L7,12A.75.75,0,0,1,8,11l2.47,2.47L19,5A.75.75,0,0,1,20,6l-9,9A.74.74,0,0,1,10.5,15.25Z"/><path d="M12,21a9,9,0,0,1-7.87-4.66,8.67,8.67,0,0,1-1.07-3.41A9,9,0,0,1,7.66,4.12a8.67,8.67,0,0,1,3.41-1.07,8.86,8.86,0,0,1,3.55.34.75.75,0,1,1-.43,1.43,7.62,7.62,0,0,0-3-.28,7.43,7.43,0,0,0-2.84.89,7.5,7.5,0,0,0-2.2,1.84,7.42,7.42,0,0,0-1.64,5.51,7.43,7.43,0,0,0,.89,2.84,7.5,7.5,0,0,0,1.84,2.2,7.42,7.42,0,0,0,5.51,1.64,7.43,7.43,0,0,0,2.84-.89,7.5,7.5,0,0,0,2.2-1.84,7.42,7.42,0,0,0,1.64-5.51A.75.75,0,1,1,21,11.07a9,9,0,0,1-4.61,8.81A8.67,8.67,0,0,1,12.93,21C12.62,21,12.3,21,12,21Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/check-square.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/check-square.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/check-square.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="check-square"><path d="M18,20.75H6A2.75,2.75,0,0,1,3.25,18V6A2.75,2.75,0,0,1,6,3.25h8.86a.75.75,0,0,1,0,1.5H6A1.25,1.25,0,0,0,4.75,6V18A1.25,1.25,0,0,0,6,19.25H18A1.25,1.25,0,0,0,19.25,18V10.29a.75.75,0,0,1,1.5,0V18A2.75,2.75,0,0,1,18,20.75Z"/><path d="M10.5,15.25A.74.74,0,0,1,10,15L7,12A.75.75,0,0,1,8,11l2.47,2.47L19,5A.75.75,0,0,1,20,6l-9,9A.74.74,0,0,1,10.5,15.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/check.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/check.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/check.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="check"><path d="M9,18.25A.74.74,0,0,1,8.47,18l-5-5A.75.75,0,1,1,4.53,12L9,16.44,19.47,6A.75.75,0,0,1,20.53,7l-11,11A.74.74,0,0,1,9,18.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-circle-down"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,14.75a.74.74,0,0,1-.53-.22l-4-4A.75.75,0,0,1,8.53,9.47L12,12.94l3.47-3.47a.75.75,0,0,1,1.06,1.06l-4,4A.74.74,0,0,1,12,14.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-circle-left"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M14,16.75a.74.74,0,0,1-.53-.22l-4-4a.75.75,0,0,1,0-1.06l4-4a.75.75,0,0,1,1.06,1.06L11.06,12l3.47,3.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,16.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-circle-right"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M10,16.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L12.94,12,9.47,8.53a.75.75,0,0,1,1.06-1.06l4,4a.75.75,0,0,1,0,1.06l-4,4A.74.74,0,0,1,10,16.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-circle-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-circle-up"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M16,14.75a.74.74,0,0,1-.53-.22L12,11.06,8.53,14.53a.75.75,0,0,1-1.06-1.06l4-4a.75.75,0,0,1,1.06,0l4,4a.75.75,0,0,1,0,1.06A.74.74,0,0,1,16,14.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-down"><path d="M12,15.25a.74.74,0,0,1-.53-.22l-5-5A.75.75,0,0,1,7.53,9L12,13.44,16.47,9A.75.75,0,0,1,17.53,10l-5,5A.74.74,0,0,1,12,15.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-left.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-left.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg id="chevron-left" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14,17.75a.74.74,0,0,1-.53-.22l-5-5a.75.75,0,0,1,0-1.06l5-5a.75.75,0,0,1,1.06,1.06L10.06,12l4.47,4.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,17.75Z"/></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-right.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-right.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-right"><path d="M10,17.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L13.94,12,9.47,7.53a.75.75,0,0,1,1.06-1.06l5,5a.75.75,0,0,1,0,1.06l-5,5A.74.74,0,0,1,10,17.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/chevron-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/chevron-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/chevron-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="chevron-up"><path d="M17,15.25a.74.74,0,0,1-.53-.22L12,10.56,7.53,15A.75.75,0,0,1,6.47,14l5-5a.75.75,0,0,1,1.06,0l5,5a.75.75,0,0,1,0,1.06A.74.74,0,0,1,17,15.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/circle-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/circle-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/circle-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="radio-on"><circle cx="12" cy="12" r="9"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/circle-off.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/circle-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/circle-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="radio-off"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/circle-on.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/circle-on.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/circle-on.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="radio-on"><circle cx="12" cy="12" r="9"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="radio-off"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/clock.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/clock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/clock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="clock"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M15,12.75H12a.76.76,0,0,1-.75-.75V7a.75.75,0,0,1,1.5,0v4.25H15a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/clone.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/clone.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/clone.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="clone"><path d="M14,16.75H6A2.75,2.75,0,0,1,3.25,14V6A2.75,2.75,0,0,1,6,3.25h8A2.75,2.75,0,0,1,16.75,6v8A2.75,2.75,0,0,1,14,16.75Zm-8-12A1.25,1.25,0,0,0,4.75,6v8A1.25,1.25,0,0,0,6,15.25h8A1.25,1.25,0,0,0,15.25,14V6A1.25,1.25,0,0,0,14,4.75Z"/><path d="M18,20.75H10A2.75,2.75,0,0,1,7.25,18V16h1.5v2A1.25,1.25,0,0,0,10,19.25h8A1.25,1.25,0,0,0,19.25,18V10A1.25,1.25,0,0,0,18,8.75H16V7.25h2A2.75,2.75,0,0,1,20.75,10v8A2.75,2.75,0,0,1,18,20.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/cloud-download.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/cloud-download.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/cloud-download.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="cloud-download"><path d="M17.5,18.25a.75.75,0,0,1,0-1.5c1.66,0,2.25-.83,2.25-3.18a3.57,3.57,0,0,0-3.25-3.25,3.34,3.34,0,0,0-1,.18.74.74,0,0,1-1-.49A5.25,5.25,0,0,0,4.25,11.57c0,3.22.15,5.18,2.25,5.18a.75.75,0,0,1,0,1.5c-3.75,0-3.75-3.86-3.75-6.68a6.75,6.75,0,0,1,13-2.68,4.4,4.4,0,0,1,.8-.07,5.07,5.07,0,0,1,4.75,4.75C21.25,14.85,21.25,18.25,17.5,18.25Z"/><path d="M12,19.18a.74.74,0,0,1-.53-.22L8.64,16.13A.75.75,0,0,1,9.7,15.07l2.3,2.3,2.3-2.3a.75.75,0,0,1,1.06,1.06L12.53,19A.74.74,0,0,1,12,19.18Z"/><path d="M12,19.18a.75.75,0,0,1-.75-.75V12.07a.75.75,0,0,1,1.5,0v6.36A.75.75,0,0,1,12,19.18Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/cloud-upload.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/cloud-upload.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/cloud-upload.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="cloud-upload"><path d="M17.5,18.25a.75.75,0,0,1,0-1.5c1.66,0,2.25-.83,2.25-3.18a3.57,3.57,0,0,0-3.25-3.25,3.34,3.34,0,0,0-1,.18.74.74,0,0,1-1-.49A5.25,5.25,0,0,0,4.25,11.57c0,3.44.76,5.18,2.25,5.18a.75.75,0,0,1,0,1.5C4,18.25,2.75,16,2.75,11.57a6.75,6.75,0,0,1,13-2.68,4.4,4.4,0,0,1,.8-.07,5.07,5.07,0,0,1,4.75,4.75C21.25,14.85,21.25,18.25,17.5,18.25Z"/><path d="M14.83,15.65a.77.77,0,0,1-.53-.22L12,13.13l-2.3,2.3a.75.75,0,0,1-1.06-1.06l2.83-2.83a.74.74,0,0,1,1.06,0l2.83,2.83a.75.75,0,0,1,0,1.06A.79.79,0,0,1,14.83,15.65Z"/><path d="M12,19.18a.75.75,0,0,1-.75-.75V12.07a.75.75,0,0,1,1.5,0v6.36A.75.75,0,0,1,12,19.18Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/cloud.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/cloud.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/cloud.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="cloud"><path d="M16.5,18.75h-7a6.75,6.75,0,1,1,6.2-9.42,4.43,4.43,0,0,1,.8-.08A5.07,5.07,0,0,1,21.25,14,4.75,4.75,0,0,1,16.5,18.75Zm-7-12a5.25,5.25,0,0,0,0,10.5h7A3.26,3.26,0,0,0,19.75,14a3.57,3.57,0,0,0-3.25-3.25,3.09,3.09,0,0,0-1,.19.78.78,0,0,1-.58,0,.73.73,0,0,1-.37-.44A5.24,5.24,0,0,0,9.5,6.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/code.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/code.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/code.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="code"><path d="M9.53,6.47a.75.75,0,0,0-1.06,0l-5,5a.75.75,0,0,0,0,1.06l5,5a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06L5.06,12,9.53,7.53A.75.75,0,0,0,9.53,6.47Z"/><path d="M20.53,11.47l-5-5a.75.75,0,0,0-1.06,1.06L18.94,12l-4.47,4.47a.75.75,0,0,0,0,1.06.75.75,0,0,0,1.06,0l5-5A.75.75,0,0,0,20.53,11.47Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/cog.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/cog.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/cog.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="cog"><path d="M12,14.93A2.93,2.93,0,1,1,14.93,12,2.93,2.93,0,0,1,12,14.93Zm0-4.36A1.43,1.43,0,1,0,13.43,12,1.43,1.43,0,0,0,12,10.57Z"/><path d="M12.06,20.75a2.22,2.22,0,0,1-2.21-2.24.48.48,0,0,0-.29-.42.51.51,0,0,0-.56.09,2.24,2.24,0,0,1-1.56.65,2.26,2.26,0,0,1-1.58-.63,2.22,2.22,0,0,1,0-3.14A.5.5,0,0,0,6,14.54a.56.56,0,0,0-.48-.28,2.27,2.27,0,0,1-2.26-2.2A2.22,2.22,0,0,1,5.49,9.85a.48.48,0,0,0,.42-.29A.51.51,0,0,0,5.82,9a2.24,2.24,0,0,1-.65-1.56A2.2,2.2,0,0,1,5.8,5.86a2.22,2.22,0,0,1,3.14,0A.58.58,0,0,0,9.49,6a.6.6,0,0,0,.31-.48A2.27,2.27,0,0,1,12,3.25a2.22,2.22,0,0,1,2.2,2.24.52.52,0,0,0,.28.44A.5.5,0,0,0,15,5.82a2.24,2.24,0,0,1,1.56-.65,2.13,2.13,0,0,1,1.58.63,2.22,2.22,0,0,1,0,3.14.58.58,0,0,0-.11.55.6.6,0,0,0,.48.31A2.27,2.27,0,0,1,20.75,12a2.22,2.22,0,0,1-2.24,2.2.52.52,0,0,0-.44.28h0a.5.5,0,0,0,.11.52,2.24,2.24,0,0,1,.65,1.56,2.2,2.2,0,0,1-.63,1.58,2.22,2.22,0,0,1-3.14,0,.5.5,0,0,0-.52-.11.56.56,0,0,0-.28.48A2.27,2.27,0,0,1,12.06,20.75ZM9.35,16.54a1.83,1.83,0,0,1,.77.16,2,2,0,0,1,1.23,1.8.74.74,0,0,0,.71.75.76.76,0,0,0,.7-.77,2.06,2.06,0,0,1,1.18-1.85,2,2,0,0,1,2.18.43.7.7,0,1,0,1-1,2,2,0,0,1-.42-2.18,2,2,0,0,1,1.82-1.18.73.73,0,0,0,.74-.7.75.75,0,0,0-.77-.7,2.1,2.1,0,0,1-1.85-1.22,2.05,2.05,0,0,1,.43-2.2.7.7,0,1,0-1-1,2,2,0,0,1-3.36-1.4.73.73,0,0,0-.7-.74.75.75,0,0,0-.7.77,2.1,2.1,0,0,1-1.22,1.85,2.05,2.05,0,0,1-2.2-.43.7.7,0,1,0-1,1,2,2,0,0,1,.41,2.18,2,2,0,0,1-1.8,1.23.74.74,0,0,0-.75.71.76.76,0,0,0,.77.7,2.06,2.06,0,0,1,1.85,1.18,2,2,0,0,1-.43,2.18.7.7,0,1,0,1,1A2.06,2.06,0,0,1,9.35,16.54Zm8-2.36h0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/comment.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/comment.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/comment.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="comment"><path d="M4.5,20.25a.75.75,0,0,1-.72-1L5.38,14a7.76,7.76,0,0,1-.52-2.83,8,8,0,0,1,.62-3.1,8.12,8.12,0,0,1,1.7-2.52,7.83,7.83,0,0,1,2.53-1.7,7.92,7.92,0,0,1,6.19,0,8,8,0,0,1,4.85,7.32,8,8,0,0,1-2.33,5.62,8.12,8.12,0,0,1-2.52,1.7,8,8,0,0,1-5.93.1l-5.25,1.6A.83.83,0,0,1,4.5,20.25Zm8.3-15.5A6.49,6.49,0,0,0,6.86,8.69a6.55,6.55,0,0,0,0,5,.75.75,0,0,1,0,.51L5.63,18.37l4.15-1.26a.75.75,0,0,1,.51,0,6.52,6.52,0,0,0,5,0,6.44,6.44,0,0,0,3.43-8.45A6.45,6.45,0,0,0,12.8,4.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/comments.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/comments.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/comments.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="comments"><path d="M4.25,17.31a.75.75,0,0,1-.72-1l1.25-4.12A6.64,6.64,0,0,1,4.38,10a6.36,6.36,0,0,1,.51-2.51A6.48,6.48,0,0,1,15.42,5.39,6.66,6.66,0,0,1,16.8,7.45a6.46,6.46,0,0,1,0,5,6.66,6.66,0,0,1-1.38,2.06A6.48,6.48,0,0,1,8.59,16L4.47,17.28A.83.83,0,0,1,4.25,17.31ZM10.84,5a4.9,4.9,0,0,0-1.93.39A5,5,0,0,0,6.27,8a5,5,0,0,0,0,3.87.75.75,0,0,1,0,.51l-.92,3,3-.92a.75.75,0,0,1,.51,0,5,5,0,0,0,6.51-2.64A5,5,0,0,0,10.84,5Z"/><path d="M19.75,20.5a.83.83,0,0,1-.22,0l-4.12-1.25a6.42,6.42,0,0,1-8.17-3.48.73.73,0,0,1,.38-1,.75.75,0,0,1,1,.38,5.06,5.06,0,0,0,1,1.53,5,5,0,0,0,5.44,1.06.75.75,0,0,1,.51,0l3,.92-.92-3a.75.75,0,0,1,0-.51,4.9,4.9,0,0,0,.39-1.93,4.93,4.93,0,0,0-1.45-3.51A5.62,5.62,0,0,0,15.92,9a.75.75,0,1,1,.84-1.24,6.69,6.69,0,0,1,1,.79,6.49,6.49,0,0,1,1.38,2.06,6.38,6.38,0,0,1,.51,2.52,6.63,6.63,0,0,1-.4,2.25l1.25,4.12a.75.75,0,0,1-.72,1Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/compass.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/compass.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/compass.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="compass"><path d="M15.94,7.62l-4.88,2a2.63,2.63,0,0,0-1.48,1.48l-2,4.88a.34.34,0,0,0,.19.44.36.36,0,0,0,.25,0l4.88-2a2.63,2.63,0,0,0,1.48-1.48l2-4.88a.34.34,0,0,0-.19-.44A.36.36,0,0,0,15.94,7.62ZM12,13a1,1,0,1,1,1-1A1,1,0,0,1,12,13Z"/><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/copy.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/copy.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/copy.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="copy"><path d="M19.53,8,14,2.47a.75.75,0,0,0-.53-.22H11A2.75,2.75,0,0,0,8.25,5V6.25H7A2.75,2.75,0,0,0,4.25,9V19A2.75,2.75,0,0,0,7,21.75h7A2.75,2.75,0,0,0,16.75,19V17.75H17A2.75,2.75,0,0,0,19.75,15V8.5A.75.75,0,0,0,19.53,8ZM14.25,4.81l2.94,2.94H14.25Zm1,14.19A1.25,1.25,0,0,1,14,20.25H7A1.25,1.25,0,0,1,5.75,19V9A1.25,1.25,0,0,1,7,7.75H8.25V15A2.75,2.75,0,0,0,11,17.75h4.25ZM17,16.25H11A1.25,1.25,0,0,1,9.75,15V5A1.25,1.25,0,0,1,11,3.75h1.75V8.5a.76.76,0,0,0,.75.75h4.75V15A1.25,1.25,0,0,1,17,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/credit-card.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/credit-card.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/credit-card.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="credit-card"><path d="M19,5.25H5A1.76,1.76,0,0,0,3.25,7V17A1.76,1.76,0,0,0,5,18.75H19A1.76,1.76,0,0,0,20.75,17V7A1.76,1.76,0,0,0,19,5.25ZM5,6.75H19a.25.25,0,0,1,.25.25V9.25H4.75V7A.25.25,0,0,1,5,6.75Zm14,10.5H5A.25.25,0,0,1,4.75,17V10.75h14.5V17A.25.25,0,0,1,19,17.25Z"/><path d="M9,13H7a1,1,0,0,0,0,2H9a1,1,0,0,0,0-2Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/database.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/database.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/database.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="database"><path d="M19.48,4.54A19.17,19.17,0,0,0,12,2.75,19.17,19.17,0,0,0,4.52,4.54a1.74,1.74,0,0,0-1,1.59V17.87a1.74,1.74,0,0,0,1,1.59A19.17,19.17,0,0,0,12,21.25a19.17,19.17,0,0,0,7.48-1.79,1.74,1.74,0,0,0,1-1.59V6.13A1.74,1.74,0,0,0,19.48,4.54Zm-.48,8a17.76,17.76,0,0,1-7,1.72,17.76,17.76,0,0,1-7-1.72V8.68a18.64,18.64,0,0,0,7,1.57,18.64,18.64,0,0,0,7-1.57ZM5.15,5.9A17.56,17.56,0,0,1,12,4.25,17.67,17.67,0,0,1,18.86,5.9a.26.26,0,0,1,.14.23V7a17.76,17.76,0,0,1-7,1.72A17.76,17.76,0,0,1,5,7v-.9A.25.25,0,0,1,5.15,5.9Zm13.7,12.2A17.56,17.56,0,0,1,12,19.75,17.67,17.67,0,0,1,5.14,18.1.26.26,0,0,1,5,17.87V14.18a18.64,18.64,0,0,0,7,1.57,18.64,18.64,0,0,0,7-1.57v3.69A.25.25,0,0,1,18.85,18.1Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/desktop.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/desktop.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/desktop.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="desktop"><path d="M19,16.75H5A1.76,1.76,0,0,1,3.25,15V5A1.76,1.76,0,0,1,5,3.25H19A1.76,1.76,0,0,1,20.75,5V15A1.76,1.76,0,0,1,19,16.75ZM5,4.75A.25.25,0,0,0,4.75,5V15a.25.25,0,0,0,.25.25H19a.25.25,0,0,0,.25-.25V5A.25.25,0,0,0,19,4.75Z"/><path d="M15,20.75H12a.76.76,0,0,1-.75-.75V16a.75.75,0,0,1,1.5,0v3.25H15a.75.75,0,0,1,0,1.5Z"/><path d="M12,20.75H9a.75.75,0,0,1,0-1.5h3a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/directions-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/directions-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/directions-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="directions-alt"><path d="M12,21.25a1.81,1.81,0,0,1-1.28-.53L3.28,13.28a1.81,1.81,0,0,1,0-2.56l7.44-7.44a1.86,1.86,0,0,1,2.56,0l7.44,7.44a1.81,1.81,0,0,1,0,2.56l-7.44,7.44A1.81,1.81,0,0,1,12,21.25Zm0-17a.27.27,0,0,0-.21.09L4.34,11.79a.29.29,0,0,0,0,.42l7.45,7.45a.25.25,0,0,0,.42,0l7.45-7.45a.29.29,0,0,0,0-.42L12.21,4.34A.27.27,0,0,0,12,4.25Z"/><path d="M10.73,14.42a.74.74,0,0,1-.53-.22L8,12a.75.75,0,0,1,0-1.06L10.2,8.72a.75.75,0,0,1,1.06,0,.75.75,0,0,1,0,1.06l-1.7,1.68,1.7,1.68a.75.75,0,0,1,0,1.06A.74.74,0,0,1,10.73,14.42Z"/><path d="M15.5,15a.76.76,0,0,1-.75-.75v-2H8.5a.75.75,0,0,1,0-1.5h7a.76.76,0,0,1,.75.75v2.79A.76.76,0,0,1,15.5,15Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/directions.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/directions.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/directions.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="directions"><path d="M12,21.25a1.81,1.81,0,0,1-1.28-.53L3.28,13.28a1.81,1.81,0,0,1,0-2.56l7.44-7.44a1.86,1.86,0,0,1,2.56,0l7.44,7.44a1.81,1.81,0,0,1,0,2.56l-7.44,7.44A1.81,1.81,0,0,1,12,21.25Zm0-17a.27.27,0,0,0-.21.09L4.34,11.79a.29.29,0,0,0,0,.42l7.45,7.45a.25.25,0,0,0,.42,0l7.45-7.45a.29.29,0,0,0,0-.42L12.21,4.34A.27.27,0,0,0,12,4.25Z"/><path d="M13.27,14.42a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06l1.7-1.68-1.7-1.68A.75.75,0,1,1,13.8,8.72L16,10.93A.75.75,0,0,1,16,12L13.8,14.2A.74.74,0,0,1,13.27,14.42Z"/><path d="M8.5,15a.76.76,0,0,1-.75-.75V11.46a.76.76,0,0,1,.75-.75h7a.75.75,0,0,1,0,1.5H9.25v2A.76.76,0,0,1,8.5,15Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/discord.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/discord.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/discord.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="discord"><path d="M14.29,11.6a.82.82,0,1,1-.82-.89A.85.85,0,0,1,14.29,11.6Zm-3.74-.89a.89.89,0,1,0,.82.89A.85.85,0,0,0,10.55,10.71ZM19,5.65V20c-2-1.78-1.37-1.19-3.71-3.37l.42,1.48H6.64A1.64,1.64,0,0,1,5,16.46V5.65A1.65,1.65,0,0,1,6.64,4H17.36A1.65,1.65,0,0,1,19,5.65Zm-2.28,7.58a10.73,10.73,0,0,0-1.15-4.66,3.9,3.9,0,0,0-2.25-.84l-.11.13a5.25,5.25,0,0,1,2,1,6.81,6.81,0,0,0-6-.23l-.47.23a5.51,5.51,0,0,1,2.11-1l-.08-.09a3.9,3.9,0,0,0-2.25.84,10.73,10.73,0,0,0-1.15,4.66,2.9,2.9,0,0,0,2.44,1.22l.53-.67A2.5,2.5,0,0,1,9,12.84l.33.2a5.83,5.83,0,0,0,5,.28,4.72,4.72,0,0,0,.92-.47,2.55,2.55,0,0,1-1.45,1l.53.65a2.93,2.93,0,0,0,2.45-1.22Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/dollar.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/dollar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/dollar.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="dollar"><path d="M12,20.75a.76.76,0,0,1-.75-.75V4a.75.75,0,0,1,1.5,0V20A.76.76,0,0,1,12,20.75Z"/><path d="M13.5,18.75H7a.75.75,0,0,1,0-1.5h6.5A2.54,2.54,0,0,0,16.25,15a2.54,2.54,0,0,0-2.75-2.25h-3A4,4,0,0,1,6.25,9,4,4,0,0,1,10.5,5.25H16a.75.75,0,0,1,0,1.5H10.5A2.54,2.54,0,0,0,7.75,9a2.54,2.54,0,0,0,2.75,2.25h3A4,4,0,0,1,17.75,15,4,4,0,0,1,13.5,18.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/download.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/download.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/download.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="download"><path d="M18.22,20.75H5.78A2.64,2.64,0,0,1,3.25,18V15a.75.75,0,0,1,1.5,0v3a1.16,1.16,0,0,0,1,1.25H18.22a1.16,1.16,0,0,0,1-1.25V15a.75.75,0,0,1,1.5,0v3A2.64,2.64,0,0,1,18.22,20.75Z"/><path d="M12,15.75a.74.74,0,0,1-.53-.22l-4-4a.75.75,0,0,1,1.06-1.06L12,13.94l3.47-3.47a.75.75,0,0,1,1.06,1.06l-4,4A.74.74,0,0,1,12,15.75Z"/><path d="M12,15.75a.76.76,0,0,1-.75-.75V4a.75.75,0,0,1,1.5,0V15A.76.76,0,0,1,12,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/eject.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/eject.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/eject.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="eject"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M19,12.75H5a.75.75,0,0,1-.53-1.28l7-7a.75.75,0,0,1,1.06,0l7,7A.75.75,0,0,1,19,12.75ZM6.81,11.25H17.19L12,6.06Z"/></g><path d="M18,19.75H6A1.76,1.76,0,0,1,4.25,18V16A1.76,1.76,0,0,1,6,14.25H18A1.76,1.76,0,0,1,19.75,16v2A1.76,1.76,0,0,1,18,19.75Zm-12-4a.25.25,0,0,0-.25.25v2a.25.25,0,0,0,.25.25H18a.25.25,0,0,0,.25-.25V16a.25.25,0,0,0-.25-.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-h.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="ellipses-v"><circle cx="12" cy="12" r="1.75"/><circle cx="19" cy="12" r="1.75"/><circle cx="5" cy="12" r="1.75"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-v.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/ellipsis-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="ellipses-h"><circle cx="12" cy="12" r="1.75"/><circle cx="12" cy="5" r="1.75"/><circle cx="12" cy="19" r="1.75"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/envelope.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/envelope.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/envelope.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="envelope"><path d="M19,4.25H5A1.76,1.76,0,0,0,3.25,6V18A1.76,1.76,0,0,0,5,19.75H19A1.76,1.76,0,0,0,20.75,18V6A1.76,1.76,0,0,0,19,4.25ZM5,5.75H19a.25.25,0,0,1,.25.25V7.54L12,11.16,4.75,7.54V6A.25.25,0,0,1,5,5.75Zm14,12.5H5A.25.25,0,0,1,4.75,18V9.21l6.91,3.46a.76.76,0,0,0,.68,0l6.91-3.46V18A.25.25,0,0,1,19,18.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/euro.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/euro.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/euro.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="euro"><path d="M13,20.75h-.15a8.75,8.75,0,0,1-5.93-15,8.54,8.54,0,0,1,6.23-2.46,8.75,8.75,0,0,1,6,2.5.75.75,0,0,1,0,1.06.75.75,0,0,1-1.06,0,7.26,7.26,0,1,0-.19,10.53l.22-.21a.79.79,0,0,1,1.09,0,.7.7,0,0,1,.05,1l-.05.05-.29.28A8.72,8.72,0,0,1,13,20.75Z"/><path d="M17,11.25H3a.75.75,0,0,1,0-1.5H17a.75.75,0,0,1,0,1.5Z"/><path d="M15.5,14.25H3a.75.75,0,0,1,0-1.5H15.5a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/exclamation-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/exclamation-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/exclamation-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="exclemation-circle"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,13a.76.76,0,0,1-.75-.75V8.75a.75.75,0,0,1,1.5,0v3.5A.76.76,0,0,1,12,13Z"/><path d="M12,16a.76.76,0,0,1-.75-.75v-.5a.75.75,0,0,1,1.5,0v.5A.76.76,0,0,1,12,16Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/exclamation-triangle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/exclamation-triangle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/exclamation-triangle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="exclamation-triangle"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M20,18.75H4a.76.76,0,0,1-.65-.37.77.77,0,0,1,0-.75l8-14a.78.78,0,0,1,1.3,0l8,14a.77.77,0,0,1,0,.75A.76.76,0,0,1,20,18.75ZM5.29,17.25H18.71L12,5.51Z"/></g><path d="M12,13.25a.76.76,0,0,1-.75-.75V9a.75.75,0,0,1,1.5,0v3.5A.76.76,0,0,1,12,13.25Z"/><path d="M12,16.25a.76.76,0,0,1-.75-.75V15a.75.75,0,0,1,1.5,0v.5A.76.76,0,0,1,12,16.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/external-link.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/external-link.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/external-link.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="external-link"><path d="M18,20.75H6A2.75,2.75,0,0,1,3.25,18V6A2.75,2.75,0,0,1,6,3.25h6a.75.75,0,0,1,0,1.5H6A1.25,1.25,0,0,0,4.75,6V18A1.25,1.25,0,0,0,6,19.25H18A1.25,1.25,0,0,0,19.25,18V12a.75.75,0,0,1,1.5,0v6A2.75,2.75,0,0,1,18,20.75Z"/><path d="M20,8.75A.76.76,0,0,1,19.25,8V4.75H16a.75.75,0,0,1,0-1.5h4a.76.76,0,0,1,.75.75V8A.76.76,0,0,1,20,8.75Z"/><path d="M13.5,11.25A.74.74,0,0,1,13,11,.75.75,0,0,1,13,10l6.5-6.5a.75.75,0,1,1,1.06,1.06L14,11A.74.74,0,0,1,13.5,11.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/eye-slash.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/eye-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/eye-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="eye-slash"><path d="M20.69,11.7c-.12-.26-2.86-6.45-8.69-6.45a7.67,7.67,0,0,0-1.66.18.75.75,0,0,0,.32,1.46A6.62,6.62,0,0,1,12,6.75c4.18,0,6.58,4.1,7.17,5.25a13.28,13.28,0,0,1-1.26,2,.75.75,0,0,0,.59,1.21.75.75,0,0,0,.59-.29,13.42,13.42,0,0,0,1.6-2.59A.78.78,0,0,0,20.69,11.7Z"/><path d="M6.53,5.47A.75.75,0,0,0,5.47,6.53l.92.92a13.16,13.16,0,0,0-3.08,4.26.76.76,0,0,0,0,.59c.12.26,2.86,6.45,8.69,6.45a7.93,7.93,0,0,0,4.39-1.3l1.08,1.08a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06Zm3.83,6,2.21,2.22a1.81,1.81,0,0,1-1.81-.4A1.74,1.74,0,0,1,10.36,11.42ZM12,17.25c-4.19,0-6.58-4.11-7.17-5.25A12,12,0,0,1,7.45,8.51L9.24,10.3a3.24,3.24,0,0,0,4.46,4.46l1.61,1.61A6.5,6.5,0,0,1,12,17.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/eye.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/eye.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/eye.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="eye"><path d="M12,18.75c-5.83,0-8.57-6.19-8.69-6.45a.78.78,0,0,1,0-.6c.12-.26,2.86-6.45,8.69-6.45s8.57,6.19,8.69,6.45a.78.78,0,0,1,0,.6C20.57,12.56,17.83,18.75,12,18.75ZM4.83,12c.59,1.15,3,5.25,7.17,5.25s6.58-4.1,7.17-5.25c-.59-1.15-3-5.25-7.17-5.25S5.42,10.85,4.83,12Z"/><path d="M12,15.25A3.25,3.25,0,1,1,15.25,12,3.26,3.26,0,0,1,12,15.25Zm0-5A1.75,1.75,0,1,0,13.75,12,1.76,1.76,0,0,0,12,10.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/facebook.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/facebook.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/facebook.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="facebook"><path d="M20,12.05a8,8,0,1,0-9.25,8V14.38h-2V12.05h2V10.28a2.83,2.83,0,0,1,3-3.14,11.92,11.92,0,0,1,1.79.16v2h-1a1.16,1.16,0,0,0-1.3,1.26v1.51h2.22l-.36,2.33H13.25V20A8,8,0,0,0,20,12.05Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/fast-backward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/fast-backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/fast-backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="fast-backward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M20,20a.75.75,0,0,1-.53-.22l-7-7a.75.75,0,0,1,0-1.06l7-7a.75.75,0,0,1,.82-.16.74.74,0,0,1,.46.69v14a.74.74,0,0,1-.46.69A.75.75,0,0,1,20,20Zm-5.94-7.75,5.19,5.19V7.06Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M4,19.5a.76.76,0,0,1-.75-.75v-14a.75.75,0,0,1,1.5,0v14A.76.76,0,0,1,4,19.5Z"/></g><g id="_Path_3" data-name="&lt;Path&gt;"><path d="M12,20a.75.75,0,0,1-.53-.22l-7-7a.75.75,0,0,1,0-1.06l7-7a.75.75,0,0,1,.82-.16.74.74,0,0,1,.46.69v14a.74.74,0,0,1-.46.69A.75.75,0,0,1,12,20ZM6.06,12.25l5.19,5.19V7.06Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/fast-forward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/fast-forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/fast-forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="fast-forward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M4,19.75a.75.75,0,0,1-.29-.06A.74.74,0,0,1,3.25,19V5a.75.75,0,0,1,1.28-.53l7,7a.75.75,0,0,1,0,1.06l-7,7A.75.75,0,0,1,4,19.75ZM4.75,6.81V17.19L9.94,12Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M20,19.25a.76.76,0,0,1-.75-.75V4.5a.75.75,0,0,1,1.5,0v14A.76.76,0,0,1,20,19.25Z"/></g><g id="_Path_3" data-name="&lt;Path&gt;"><path d="M12,19.75a.75.75,0,0,1-.29-.06.74.74,0,0,1-.46-.69V5a.75.75,0,0,1,1.28-.53l7,7a.75.75,0,0,1,0,1.06l-7,7A.75.75,0,0,1,12,19.75Zm.75-12.94V17.19L17.94,12Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/file-excel.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/file-excel.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/file-excel.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="file-excel"><path d="M18.53,9,13,3.47a.75.75,0,0,0-.53-.22H8A2.75,2.75,0,0,0,5.25,6V18A2.75,2.75,0,0,0,8,20.75h8A2.75,2.75,0,0,0,18.75,18V9.5A.75.75,0,0,0,18.53,9ZM13.25,5.81l2.94,2.94H13.25ZM16,19.25H8A1.25,1.25,0,0,1,6.75,18V6A1.25,1.25,0,0,1,8,4.75h3.75V9.5a.76.76,0,0,0,.75.75h4.75V18A1.25,1.25,0,0,1,16,19.25Z"/><path d="M14.47,11.91a.77.77,0,0,0-1.06.12L12,13.8,10.59,12A.75.75,0,1,0,9.41,13L11,15,9.41,17a.75.75,0,0,0,1.18.94L12,16.2,13.41,18a.77.77,0,0,0,.59.28A.75.75,0,0,0,14.59,17L13,15l1.63-2A.77.77,0,0,0,14.47,11.91Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/file-o.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/file-o.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/file-o.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="file-o"><path d="M18.53,9,13,3.47a.75.75,0,0,0-.53-.22H8A2.75,2.75,0,0,0,5.25,6V18A2.75,2.75,0,0,0,8,20.75h8A2.75,2.75,0,0,0,18.75,18V9.5A.75.75,0,0,0,18.53,9ZM13.25,5.81l2.94,2.94H13.25ZM16,19.25H8A1.25,1.25,0,0,1,6.75,18V6A1.25,1.25,0,0,1,8,4.75h3.75V9.5a.76.76,0,0,0,.75.75h4.75V18A1.25,1.25,0,0,1,16,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/file-pdf.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/file-pdf.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/file-pdf.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="file-pdf"><path d="M18.53,9,13,3.47a.75.75,0,0,0-.53-.22H8A2.75,2.75,0,0,0,5.25,6V18A2.75,2.75,0,0,0,8,20.75h8A2.75,2.75,0,0,0,18.75,18V9.5A.75.75,0,0,0,18.53,9ZM13.25,5.81l2.94,2.94H13.25ZM16,19.25H8A1.25,1.25,0,0,1,6.75,18V6A1.25,1.25,0,0,1,8,4.75h3.75V9.5a.76.76,0,0,0,.75.75h4.75V18A1.25,1.25,0,0,1,16,19.25Z"/><path d="M13.49,14.85a3.15,3.15,0,0,1-1.31-1.66,4.44,4.44,0,0,0,.19-2A.8.8,0,0,0,10.85,11a5,5,0,0,0,.25,2.4A29,29,0,0,1,9.83,16C9.12,16.4,8.15,17,8,17.69c-.12.56.93,2,2.72-1.12a18.58,18.58,0,0,1,2.44-.72,4.72,4.72,0,0,0,2,.61.82.82,0,0,0,.62-1.38C15.36,14.65,14.11,14.77,13.49,14.85Zm-4.78,3A4.32,4.32,0,0,1,9.8,16.61C9.12,17.69,8.71,17.88,8.71,17.86Zm2.92-6.81c.26,0,.24,1.15.06,1.46A3.07,3.07,0,0,1,11.63,11.05Zm-.87,4.88A14.76,14.76,0,0,0,11.64,14a3.88,3.88,0,0,0,1.08,1.26A12.35,12.35,0,0,0,10.76,15.93Zm4.7-.18s-.18.22-1.33-.28C15.38,15.38,15.59,15.67,15.46,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/file.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/file.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/file.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="file"><path d="M18.53,9,13,3.47a.75.75,0,0,0-.53-.22H8A2.75,2.75,0,0,0,5.25,6V18A2.75,2.75,0,0,0,8,20.75h8A2.75,2.75,0,0,0,18.75,18V9.5A.75.75,0,0,0,18.53,9ZM13.25,5.81l2.94,2.94H13.25ZM16,19.25H8A1.25,1.25,0,0,1,6.75,18V6A1.25,1.25,0,0,1,8,4.75h3.75V9.5a.76.76,0,0,0,.75.75h4.75V18A1.25,1.25,0,0,1,16,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/filter-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/filter-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/filter-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="filter-fill"><path d="M20.17,3.91a.76.76,0,0,0-.67-.41H4.5a.76.76,0,0,0-.67.41.73.73,0,0,0,.07.78L9.25,12v7.75a.76.76,0,0,0,.75.75h4a.76.76,0,0,0,.75-.75V12L20.1,4.69A.73.73,0,0,0,20.17,3.91Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/filter-slash.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/filter-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/filter-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="filter-slash"><path d="M20.17,3.91a.76.76,0,0,0-.67-.41h-7a.75.75,0,0,0,0,1.5H18L16.15,7.56a.74.74,0,1,0,1.2.88L20.1,4.69A.73.73,0,0,0,20.17,3.91Z"/><path d="M8.65,3.72s0,0-.05,0a.76.76,0,0,0-.19-.12.79.79,0,0,0-.22-.05H4.5a.76.76,0,0,0-.67.41.73.73,0,0,0,.07.78L9.25,12v7.75a.76.76,0,0,0,.75.75h4a.76.76,0,0,0,.75-.75V12l.06-.09,3.66,3.62a.74.74,0,0,0,.53.22.73.73,0,0,0,.53-.22.75.75,0,0,0,0-1.06Zm4.75,7.59a.71.71,0,0,0-.15.44V19h-2.5V11.75a.71.71,0,0,0-.15-.44L6,5H7.82l5.91,5.85Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/filter.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/filter.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/filter.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="filter"><path d="M14,20.5H10a.76.76,0,0,1-.75-.75V12L3.9,4.69a.73.73,0,0,1-.07-.78A.76.76,0,0,1,4.5,3.5h15a.76.76,0,0,1,.67.41.73.73,0,0,1-.07.78L14.75,12v7.75A.76.76,0,0,1,14,20.5ZM10.75,19h2.5V11.75a.71.71,0,0,1,.15-.44L18,5H6l4.62,6.31a.71.71,0,0,1,.15.44Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/flag-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/flag-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/flag-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="flag-fill"><path d="M19.42,4.45a.74.74,0,0,0-.69-.08,13.18,13.18,0,0,1-3.73,1,8.46,8.46,0,0,1-2.3-1,8.76,8.76,0,0,0-3-1.16c-1.29-.12-4.36.89-5,1.1a.75.75,0,0,0-.51.71V20a.75.75,0,0,0,1.5,0V14.14a16,16,0,0,1,3.86-.85,8.47,8.47,0,0,1,2.4,1,9.11,9.11,0,0,0,2.82,1.13l.23,0a16.37,16.37,0,0,0,4.21-1.13.76.76,0,0,0,.48-.7V5.07A.74.74,0,0,0,19.42,4.45Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/flag.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/flag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/flag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="flag"><path d="M19.42,4.45a.74.74,0,0,0-.69-.08,13.82,13.82,0,0,1-3.73,1,8.46,8.46,0,0,1-2.3-1,8.84,8.84,0,0,0-3-1.16,20,20,0,0,0-5,1.1.75.75,0,0,0-.51.71V20a.75.75,0,0,0,1.5,0V14.15a15.79,15.79,0,0,1,3.86-.87,8.54,8.54,0,0,1,2.4,1,9.11,9.11,0,0,0,2.82,1.13l.23,0a16,16,0,0,0,4.21-1.13.75.75,0,0,0,.48-.7V5.07A.74.74,0,0,0,19.42,4.45Zm-1.17,8.63a12.06,12.06,0,0,1-3.25.84,8.46,8.46,0,0,1-2.3-1,8.84,8.84,0,0,0-3-1.16h-.2a16.31,16.31,0,0,0-3.78.8v-7a15.79,15.79,0,0,1,3.86-.87,8.54,8.54,0,0,1,2.4,1,9.11,9.11,0,0,0,2.82,1.13,10.27,10.27,0,0,0,3.42-.73Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/folder-open.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/folder-open.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/folder-open.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="folder-open"><path d="M4.25,18.5H2.75V7.5A2.71,2.71,0,0,1,5.43,4.75H7.84A.76.76,0,0,1,8.42,5l2.67,3.23H16A2.71,2.71,0,0,1,18.72,11v.5h-1.5V11A1.22,1.22,0,0,0,16,9.75H10.73a.74.74,0,0,1-.57-.27L7.49,6.25H5.43A1.22,1.22,0,0,0,4.25,7.5Z"/><path d="M17.12,19.25H3.5a.76.76,0,0,1-.64-.36.75.75,0,0,1,0-.74l3.38-6.5a.77.77,0,0,1,.67-.4H20.5a.76.76,0,0,1,.64.36.75.75,0,0,1,0,.74l-3.38,6.5A.77.77,0,0,1,17.12,19.25ZM4.73,17.75H16.67l2.6-5H7.33Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/folder.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/folder.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/folder.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="folder"><path d="M17.5,19.25H6.5A2.75,2.75,0,0,1,3.75,16.5v-9A2.75,2.75,0,0,1,6.5,4.75H9A.77.77,0,0,1,9.57,5l2.77,3.24H17.5A2.75,2.75,0,0,1,20.25,11v5.5A2.75,2.75,0,0,1,17.5,19.25Zm-11-13A1.25,1.25,0,0,0,5.25,7.5v9A1.25,1.25,0,0,0,6.5,17.75h11a1.25,1.25,0,0,0,1.25-1.25V11A1.25,1.25,0,0,0,17.5,9.75H12a.77.77,0,0,1-.57-.26L8.66,6.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/forward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="forward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M4,19.75a.8.8,0,0,1-.3-.06A.76.76,0,0,1,3.25,19V5a.75.75,0,0,1,1.26-.55l7.47,7a.75.75,0,0,1,0,1.1l-7.47,7A.74.74,0,0,1,4,19.75Zm.75-13V17.27L10.37,12Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M12.53,19.75a.72.72,0,0,1-.29-.06.75.75,0,0,1-.46-.69V5a.76.76,0,0,1,1.27-.55l7.46,7a.75.75,0,0,1,0,1.1l-7.46,7A.79.79,0,0,1,12.53,19.75Zm.75-13V17.27L18.9,12Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/github.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/github.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/github.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="github"><path d="M9.35,16.88c0,.07-.07.12-.17.12S9,17,9,16.88s.08-.12.17-.12S9.35,16.81,9.35,16.88Zm-1-.15c0,.07,0,.15.14.17a.15.15,0,0,0,.2-.07c0-.07,0-.14-.14-.17s-.18,0-.2.07Zm1.42-.05c-.09,0-.15.08-.14.16s.09.11.19.09.15-.09.14-.16S9.87,16.67,9.77,16.68ZM11.9,4A7.83,7.83,0,0,0,4,12.07,8.29,8.29,0,0,0,9.47,20c.41.07.56-.19.56-.4s0-1.34,0-2c0,0-2.26.5-2.74-1,0,0-.36-1-.89-1.21,0,0-.74-.52.05-.51a1.67,1.67,0,0,1,1.24.85,1.69,1.69,0,0,0,2.36.69,1.83,1.83,0,0,1,.51-1.11c-1.8-.21-3.62-.47-3.62-3.66a2.54,2.54,0,0,1,.76-1.95,3.21,3.21,0,0,1,.08-2.24c.68-.22,2.23.89,2.23.89a7.46,7.46,0,0,1,4.05,0s1.55-1.11,2.23-.89a3.14,3.14,0,0,1,.08,2.24,2.61,2.61,0,0,1,.83,1.95c0,3.2-1.9,3.45-3.7,3.66A2,2,0,0,1,14,16.81c0,1.12,0,2.5,0,2.77a.42.42,0,0,0,.56.4A8.22,8.22,0,0,0,20,12.07,8,8,0,0,0,11.9,4ZM7.14,15.41s0,.11,0,.17a.12.12,0,0,0,.17,0s0-.11,0-.18S7.18,15.37,7.14,15.41Zm-.35-.27s0,.1.07.13a.09.09,0,0,0,.14,0s0-.1-.07-.13S6.81,15.11,6.79,15.14Zm1,1.18s0,.14,0,.21.17.08.21,0,0-.14,0-.21S7.87,16.27,7.83,16.32Zm-.37-.49s0,.12,0,.2.14.11.19.08a.16.16,0,0,0,0-.21c-.05-.08-.13-.11-.19-.07Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/globe.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/globe.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/globe.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="globe"><path d="M12,3a9,9,0,1,0,9,9A9,9,0,0,0,12,3Zm7.46,8.25H16.7a13,13,0,0,0-2.94-6.53A7.52,7.52,0,0,1,19.46,11.25ZM8.81,12.75h6.38A13.18,13.18,0,0,1,12,19.1,13.18,13.18,0,0,1,8.81,12.75Zm0-1.5A13.18,13.18,0,0,1,12,4.9a13.18,13.18,0,0,1,3.19,6.35Zm1.43-6.53A13,13,0,0,0,7.3,11.25H4.54A7.52,7.52,0,0,1,10.24,4.72Zm-5.7,8H7.3a13,13,0,0,0,2.94,6.53A7.52,7.52,0,0,1,4.54,12.75Zm9.22,6.53a13,13,0,0,0,2.94-6.53h2.76A7.52,7.52,0,0,1,13.76,19.28Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/google.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/google.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/google.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="google"><path d="M19.76,10.77l-.09-.35H12.23v3.16h4.45a4.45,4.45,0,0,1-4.36,3.34,5.21,5.21,0,0,1-3.5-1.39A5,5,0,0,1,7.33,12,5.14,5.14,0,0,1,8.79,8.47,5,5,0,0,1,12.27,7.1a4.55,4.55,0,0,1,3,1.16L17.47,6A7.88,7.88,0,0,0,12.2,4h0A8.14,8.14,0,0,0,6.43,6.35a8.15,8.15,0,0,0-.09,11.21,8.37,8.37,0,0,0,6,2.44,7.45,7.45,0,0,0,5.41-2.27,8,8,0,0,0,2.08-5.54A9.88,9.88,0,0,0,19.76,10.77Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/hashtag.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/hashtag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/hashtag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="hashtag"><path d="M21,7.25H18l.77-3.07a.75.75,0,0,0-1.46-.36l-.86,3.43H10l.77-3.07a.75.75,0,0,0-1.46-.36L8.41,7.25H5a.75.75,0,0,0,0,1.5H8l-1.63,6.5H3a.75.75,0,0,0,0,1.5H6l-.77,3.07a.75.75,0,0,0,1.46.36l.86-3.43H14l-.77,3.07a.75.75,0,0,0,1.46.36l.86-3.43H19a.75.75,0,0,0,0-1.5H16l1.63-6.5H21A.75.75,0,0,0,21,7.25Zm-5,1.5-1.63,6.5H8l1.63-6.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/heart-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/heart-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/heart-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="heart-fill"><path d="M19.3,5.71h0a4.92,4.92,0,0,0-3.51-1.46h0a4.92,4.92,0,0,0-3.51,1.46L12,6l-.28-.28a4.95,4.95,0,0,0-7,0,5,5,0,0,0,0,7l6.77,6.79a.75.75,0,0,0,1.06,0l6.77-6.79A5,5,0,0,0,19.3,5.71Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/heart.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/heart.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/heart.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="heart"><path d="M12,19.75a.75.75,0,0,1-.53-.22L4.7,12.74a5,5,0,0,1,0-7,4.95,4.95,0,0,1,7,0L12,6l.28-.28a4.92,4.92,0,0,1,3.51-1.46h0A4.92,4.92,0,0,1,19.3,5.71h0a5,5,0,0,1,0,7l-6.77,6.79A.75.75,0,0,1,12,19.75Zm-3.79-14a3.44,3.44,0,0,0-2.45,1,3.48,3.48,0,0,0,0,4.91L12,17.94l6.23-6.26a3.47,3.47,0,0,0,0-4.91h0a3.4,3.4,0,0,0-2.44-1h0a3.44,3.44,0,0,0-2.45,1l-.81.81a.77.77,0,0,1-1.06,0l-.81-.81A3.44,3.44,0,0,0,8.21,5.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/history.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/history.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/history.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="history"><path d="M18.05,6.08a8.39,8.39,0,0,0-11.84,0L5,7.29V4.38a.75.75,0,0,0-1.5,0V9.12a.76.76,0,0,0,.75.76H9a.75.75,0,0,0,0-1.5H6L7.27,7.14a6.88,6.88,0,0,1,9.72,0c6.19,6.69-3,15.91-9.72,9.72a.75.75,0,0,0-1.06,0,.74.74,0,0,0,0,1.06A8.37,8.37,0,0,0,18.05,6.08Z"/><path d="M12,7.75a.76.76,0,0,0-.75.75V12a.75.75,0,0,0,.22.53L14,15a.74.74,0,0,0,.53.22A.75.75,0,0,0,15,14l-2.28-2.28V8.5A.76.76,0,0,0,12,7.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/home.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/home.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/home.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="home"><path d="M20,11.75a.74.74,0,0,1-.45-.15L12,5.94,4.45,11.6a.75.75,0,0,1-.9-1.2l8-6a.75.75,0,0,1,.9,0l8,6a.75.75,0,0,1,.15,1A.74.74,0,0,1,20,11.75Z"/><path d="M18,19.75H6A.76.76,0,0,1,5.25,19V9.5a.75.75,0,0,1,1.5,0v8.75h10.5V9.5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,18,19.75Z"/><path d="M14,19.75a.76.76,0,0,1-.75-.75V12.75h-2.5V19a.75.75,0,0,1-1.5,0V12a.76.76,0,0,1,.75-.75h4a.76.76,0,0,1,.75.75v7A.76.76,0,0,1,14,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/id-card.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/id-card.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/id-card.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="id-card"><path d="M19,18.75H5A1.76,1.76,0,0,1,3.25,17V7A1.76,1.76,0,0,1,5,5.25H19A1.76,1.76,0,0,1,20.75,7V17A1.76,1.76,0,0,1,19,18.75ZM5,6.75A.25.25,0,0,0,4.75,7V17a.25.25,0,0,0,.25.25H19a.25.25,0,0,0,.25-.25V7A.25.25,0,0,0,19,6.75Z"/><path d="M9,11.75a2,2,0,1,1,2-2A2,2,0,0,1,9,11.75Zm0-2.5a.5.5,0,1,0,.5.5A.5.5,0,0,0,9,9.25Z"/><path d="M12,15.75a.76.76,0,0,1-.75-.75c0-.68-.17-1.25-2.25-1.25S6.75,14.32,6.75,15a.75.75,0,0,1-1.5,0c0-2.75,2.82-2.75,3.75-2.75s3.75,0,3.75,2.75A.76.76,0,0,1,12,15.75Z"/><path d="M17,10.75H14a.75.75,0,0,1,0-1.5h3a.75.75,0,0,1,0,1.5Z"/><path d="M16,13.75H14a.75.75,0,0,1,0-1.5h2a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/image.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/image.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/image.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="image"><path d="M18,4.25H6A2.75,2.75,0,0,0,3.25,7V17A2.75,2.75,0,0,0,6,19.75H18A2.75,2.75,0,0,0,20.75,17V7A2.75,2.75,0,0,0,18,4.25ZM6,5.75H18A1.25,1.25,0,0,1,19.25,7v8.19l-2.72-2.72a.7.7,0,0,0-.56-.22.79.79,0,0,0-.55.27l-1.29,1.55-4.6-4.6A.7.7,0,0,0,9,9.25a.79.79,0,0,0-.55.27L4.75,13.93V7A1.25,1.25,0,0,1,6,5.75ZM4.75,17v-.73l4.3-5.16,4.12,4.12-2.52,3H6A1.25,1.25,0,0,1,4.75,17ZM18,18.25H12.6l3.45-4.14,3.15,3.15A1.23,1.23,0,0,1,18,18.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/images.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/images.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/images.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="images"><path d="M18.5,3.75H8.5A2.75,2.75,0,0,0,5.75,6.5v.25H5.5A2.75,2.75,0,0,0,2.75,9.5v8A2.75,2.75,0,0,0,5.5,20.25h10a2.75,2.75,0,0,0,2.75-2.75v-.25h.25a2.75,2.75,0,0,0,2.75-2.75v-8A2.75,2.75,0,0,0,18.5,3.75ZM7.25,6.5A1.25,1.25,0,0,1,8.5,5.25h10A1.25,1.25,0,0,1,19.75,6.5v6.2l-2.27-1.91a.74.74,0,0,0-1.05.08l-1.07,1.26-4-3.88A.7.7,0,0,0,10.84,8a.75.75,0,0,0-.54.26L7.25,11.89ZM8.5,15.75A1.25,1.25,0,0,1,7.25,14.5v-.3l3.67-4.32,3.46,3.39-2.1,2.48Zm8.25,1.75a1.25,1.25,0,0,1-1.25,1.25H5.5A1.25,1.25,0,0,1,4.25,17.5v-8A1.25,1.25,0,0,1,5.5,8.25h.25V14.5A2.75,2.75,0,0,0,8.5,17.25h8.25Zm1.75-1.75H14.25l2.84-3.34,2.63,2.23A1.23,1.23,0,0,1,18.5,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/inbox.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/inbox.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/inbox.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="inbox"><path d="M18,20H6a2.75,2.75,0,0,1-2.75-2.75v-6a.75.75,0,0,1,1.5,0v6A1.25,1.25,0,0,0,6,18.53H18a1.25,1.25,0,0,0,1.25-1.25v-6a.75.75,0,0,1,1.5,0v6A2.75,2.75,0,0,1,18,20Z"/><path d="M12,15.25A3.74,3.74,0,0,1,8.29,12H4a.75.75,0,0,1-.64-1.15l3.73-6A1.69,1.69,0,0,1,8.62,4h6.76a1.74,1.74,0,0,1,1.57,1l3.69,5.94A.75.75,0,0,1,20,12H15.71A3.74,3.74,0,0,1,12,15.25ZM5.35,10.53H9a.75.75,0,0,1,.75.75v.22a2.25,2.25,0,0,0,4.5,0v-.22a.75.75,0,0,1,.75-.75h3.65l-3-4.86c-.08-.14-.16-.2-.26-.2H8.62a.27.27,0,0,0-.23.14Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/info-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/info-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/info-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="info-circle"><path d="M12,16.75a.76.76,0,0,1-.75-.75V11a.75.75,0,0,1,1.5,0v5A.76.76,0,0,1,12,16.75Z"/><path d="M12,9.25a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v.5A.76.76,0,0,1,12,9.25Z"/><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/info.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/info.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/info.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="info"><path d="M12,17.75a.76.76,0,0,1-.75-.75V10a.75.75,0,0,1,1.5,0v7A.76.76,0,0,1,12,17.75Z"/><path d="M12,8.25a.76.76,0,0,1-.75-.75V7a.75.75,0,0,1,1.5,0v.5A.76.76,0,0,1,12,8.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/instagram.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/instagram.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/instagram.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="instagram"><path d="M12,7.9A4.1,4.1,0,1,0,16.1,12,4.09,4.09,0,0,0,12,7.9Zm0,6.77A2.67,2.67,0,1,1,14.67,12,2.67,2.67,0,0,1,12,14.67Zm5.23-6.94a1,1,0,1,1-1-1A1,1,0,0,1,17.23,7.73Zm2.71,1a4.71,4.71,0,0,0-1.29-3.35A4.71,4.71,0,0,0,15.3,4.06C14,4,10,4,8.7,4.06A4.73,4.73,0,0,0,5.35,5.35,4.71,4.71,0,0,0,4.06,8.7C4,10,4,14,4.06,15.3a4.71,4.71,0,0,0,1.29,3.35A4.73,4.73,0,0,0,8.7,19.94c1.32.08,5.28.08,6.6,0a4.71,4.71,0,0,0,3.35-1.29,4.71,4.71,0,0,0,1.29-3.35C20,14,20,10,19.94,8.7Zm-1.7,8a2.7,2.7,0,0,1-1.52,1.52,18,18,0,0,1-4.72.32,17.91,17.91,0,0,1-4.71-.32,2.7,2.7,0,0,1-1.52-1.52c-.42-1.06-.33-3.56-.33-4.72s-.09-3.67.33-4.72A2.65,2.65,0,0,1,7.29,5.76,17.91,17.91,0,0,1,12,5.44a18,18,0,0,1,4.72.32,2.7,2.7,0,0,1,1.52,1.52c.42,1.06.32,3.56.32,4.72S18.66,15.67,18.24,16.72Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/key.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/key.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/key.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="key"><path d="M15,14.75a5.74,5.74,0,0,1-4.07-1.68h0A5.77,5.77,0,1,1,15,14.75Zm0-10A4.25,4.25,0,0,0,12,12h0a4.25,4.25,0,1,0,3-7.25Z"/><path d="M4.5,20.25A.74.74,0,0,1,4,20,.75.75,0,0,1,4,19l6.46-6.47a.75.75,0,1,1,1.06,1.07L5,20A.74.74,0,0,1,4.5,20.25Z"/><path d="M8,20.75a.74.74,0,0,1-.53-.22l-2-2a.75.75,0,0,1,1.06-1.06l2,2a.75.75,0,0,1,0,1.06A.74.74,0,0,1,8,20.75Z"/><path d="M10,18.75a.74.74,0,0,1-.53-.22l-2-2a.75.75,0,1,1,1.06-1.06l2,2a.75.75,0,0,1,0,1.06A.74.74,0,0,1,10,18.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/link.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/link.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/link.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="link"><path d="M7.23,18.25A4,4,0,0,1,4.4,17.09a4.23,4.23,0,0,1,.15-5.95L8.31,7.35A4.44,4.44,0,0,1,11.42,6,4,4,0,0,1,14.25,7.2a4.25,4.25,0,0,1-.15,6l-1.26,1.26a.75.75,0,1,1-1.06-1.06L13,12.1a2.73,2.73,0,0,0,.14-3.84,2.77,2.77,0,0,0-3.8.15L5.61,12.19A2.74,2.74,0,0,0,5.46,16a2.5,2.5,0,0,0,2,.71.74.74,0,0,1,.81.67.75.75,0,0,1-.67.82Z"/><path d="M12.58,18A4,4,0,0,1,9.75,16.8a4.25,4.25,0,0,1,.15-6l1.26-1.26a.75.75,0,1,1,1.06,1.06L11,11.9a2.73,2.73,0,0,0-.14,3.84,2.77,2.77,0,0,0,3.8-.15l3.77-3.78A2.74,2.74,0,0,0,18.54,8a2.5,2.5,0,0,0-2-.71.74.74,0,0,1-.81-.67.75.75,0,0,1,.67-.82A4,4,0,0,1,19.6,6.91a4.23,4.23,0,0,1-.15,5.95l-3.76,3.79A4.44,4.44,0,0,1,12.58,18Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/linkedin.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/linkedin.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/linkedin.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="linkedin"><path d="M18.72,4H5.37A1.31,1.31,0,0,0,4,5.25V18.63A1.41,1.41,0,0,0,5.37,20H18.72A1.34,1.34,0,0,0,20,18.63V5.25A1.23,1.23,0,0,0,18.72,4ZM9,17.34H6.67V10.21H9ZM7.89,9.13h0A1.18,1.18,0,0,1,6.67,7.9,1.18,1.18,0,0,1,7.91,6.67,1.18,1.18,0,0,1,9.13,7.9,1.18,1.18,0,0,1,7.89,9.13Zm9.45,8.21H15v-3.9c0-.93-.33-1.57-1.16-1.57a1.25,1.25,0,0,0-1.17.84,1.43,1.43,0,0,0-.08.57v4.06h-2.3V10.21h2.3v1A2.32,2.32,0,0,1,14.69,10c1.51,0,2.65,1,2.65,3.13Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/list.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/list.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/list.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="list"><path d="M19,12.75H8a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/><path d="M19,8.25H8a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/><path d="M19,17.25H8a.75.75,0,0,1,0-1.5H19a.75.75,0,0,1,0,1.5Z"/><path d="M5,8.5a1,1,0,0,1-.38-.07,1.46,1.46,0,0,1-.33-.22A1,1,0,0,1,4,7.5a1.05,1.05,0,0,1,.29-.71.93.93,0,0,1,.33-.21,1,1,0,0,1,.76,0,1,1,0,0,1,.33.21A1.05,1.05,0,0,1,6,7.5a1,1,0,0,1-.29.71,1.46,1.46,0,0,1-.33.22A1,1,0,0,1,5,8.5Z"/><path d="M5,13a1,1,0,0,1-.38-.08,1.15,1.15,0,0,1-.33-.21A1,1,0,0,1,4,12a1.05,1.05,0,0,1,.29-.71,1.15,1.15,0,0,1,.33-.21A1,1,0,0,1,5.2,11l.18.06.18.09a1.58,1.58,0,0,1,.15.12A1.05,1.05,0,0,1,6,12a1,1,0,0,1-1,1Z"/><path d="M5,17.5a1,1,0,0,1-.38-.07,1.46,1.46,0,0,1-.33-.22,1.15,1.15,0,0,1-.21-.33.94.94,0,0,1,0-.76,1.15,1.15,0,0,1,.21-.33,1,1,0,0,1,1.09-.21,1,1,0,0,1,.33.21,1.15,1.15,0,0,1,.21.33.94.94,0,0,1,0,.76,1.15,1.15,0,0,1-.21.33A1,1,0,0,1,5,17.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/lock-open.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/lock-open.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/lock-open.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="lock-open"><path d="M16,3.25A4.75,4.75,0,0,0,11.25,8v2.25H6A2.75,2.75,0,0,0,3.25,13v5A2.75,2.75,0,0,0,6,20.75h7A2.75,2.75,0,0,0,15.75,18V13A2.75,2.75,0,0,0,13,10.25h-.25V8a3.25,3.25,0,0,1,6.5,0,.75.75,0,0,0,1.5,0A4.75,4.75,0,0,0,16,3.25ZM14.25,13v5A1.25,1.25,0,0,1,13,19.25H6A1.25,1.25,0,0,1,4.75,18V13A1.25,1.25,0,0,1,6,11.75h7A1.25,1.25,0,0,1,14.25,13Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/lock.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/lock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/lock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="lock"><path d="M17,10.25h-.25V8a4.75,4.75,0,0,0-9.5,0v2.25H7A2.75,2.75,0,0,0,4.25,13v5A2.75,2.75,0,0,0,7,20.75H17A2.75,2.75,0,0,0,19.75,18V13A2.75,2.75,0,0,0,17,10.25ZM8.75,8a3.25,3.25,0,0,1,6.5,0v2.25H8.75Zm9.5,10A1.25,1.25,0,0,1,17,19.25H7A1.25,1.25,0,0,1,5.75,18V13A1.25,1.25,0,0,1,7,11.75H17A1.25,1.25,0,0,1,18.25,13Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/map-marker.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/map-marker.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/map-marker.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="map-marker"><path d="M12,21.25a.69.69,0,0,1-.41-.13c-.3-.19-7.34-4.92-7.34-10.67a7.75,7.75,0,0,1,15.5,0c0,5.75-7,10.48-7.34,10.67A.69.69,0,0,1,12,21.25Zm0-17a6.23,6.23,0,0,0-6.25,6.2c0,4.21,4.79,8.06,6.25,9.13,1.46-1.07,6.25-4.92,6.25-9.13A6.23,6.23,0,0,0,12,4.25Z"/><path d="M12,12.75A2.75,2.75,0,1,1,14.75,10,2.75,2.75,0,0,1,12,12.75Zm0-4A1.25,1.25,0,1,0,13.25,10,1.25,1.25,0,0,0,12,8.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/map.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/map.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/map.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="map"><path d="M19.9,4.09a1.75,1.75,0,0,0-1.66-.15L14.67,5.47h0l-4.75-2a1.51,1.51,0,0,0-1.18,0L4.38,5.31A1.88,1.88,0,0,0,3.25,7.06V18.31a1.91,1.91,0,0,0,.85,1.6,1.75,1.75,0,0,0,1.66.15l3.57-1.53,4.75,2a1.45,1.45,0,0,0,.59.12,1.52,1.52,0,0,0,.59-.12l4.36-1.87a1.88,1.88,0,0,0,1.13-1.75V5.69A1.91,1.91,0,0,0,19.9,4.09Zm-9.82,1,3.84,1.64V18.86l-3.84-1.64ZM5.17,18.68a.25.25,0,0,1-.25,0,.4.4,0,0,1-.17-.35V7.06A.39.39,0,0,1,5,6.69L8.58,5.14V17.22Zm14.08-1.74a.39.39,0,0,1-.22.37l-3.61,1.55V6.78l3.41-1.46a.25.25,0,0,1,.25,0,.4.4,0,0,1,.17.35Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/microsoft.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/microsoft.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/microsoft.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="microsoft"><path d="M4,4h7.5v7.5H4Zm8.5,0H20v7.5H12.5ZM4,12.5h7.5V20H4Zm8.5,0H20V20H12.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/minus-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/minus-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/minus-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="minus-circle"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M16,12.75H8a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/minus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="minus"><path d="M20,13H4a1,1,0,0,1,0-2H20a1,1,0,0,1,0,2Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/mobile.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/mobile.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/mobile.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="mobile"><path d="M16,3.25H8A1.76,1.76,0,0,0,6.25,5V19A1.76,1.76,0,0,0,8,20.75h8A1.76,1.76,0,0,0,17.75,19V5A1.76,1.76,0,0,0,16,3.25ZM16.25,19a.25.25,0,0,1-.25.25H8A.25.25,0,0,1,7.75,19V5A.25.25,0,0,1,8,4.75h8a.25.25,0,0,1,.25.25Z"/><path d="M12,14.5A1.5,1.5,0,1,0,13.5,16,1.5,1.5,0,0,0,12,14.5ZM12,16v0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/money-bill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/money-bill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/money-bill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="money-bill"><path d="M19,5.25H5A1.76,1.76,0,0,0,3.25,7V17A1.76,1.76,0,0,0,5,18.75H19A1.76,1.76,0,0,0,20.75,17V7A1.76,1.76,0,0,0,19,5.25ZM19.25,7V8.67l-.09,0-.12,0a1.45,1.45,0,0,1-.36,0l-.13,0a1.8,1.8,0,0,1-.33-.1l-.12,0a1.29,1.29,0,0,1-.38-.28,1.58,1.58,0,0,1-.47-1.12,1.45,1.45,0,0,1,.06-.41H19A.25.25,0,0,1,19.25,7ZM5,6.75H6.69a1.45,1.45,0,0,1,.06.41,1.58,1.58,0,0,1-.47,1.12,1.49,1.49,0,0,1-.38.28l-.13,0a1.12,1.12,0,0,1-.31.1l-.14,0a1.45,1.45,0,0,1-.36,0l-.12,0-.09,0V7A.25.25,0,0,1,5,6.75ZM4.75,17V15.33l.09,0,.12,0a1.45,1.45,0,0,1,.36,0l.13,0a1.26,1.26,0,0,1,.33.1l.12,0a1.49,1.49,0,0,1,.38.28,1.58,1.58,0,0,1,.47,1.12,1.45,1.45,0,0,1-.06.41H5A.25.25,0,0,1,4.75,17Zm3.47.25a2.73,2.73,0,0,0,0-.41,3,3,0,0,0-.91-2.18,2.63,2.63,0,0,0-.49-.39l-.17-.11A3.39,3.39,0,0,0,6.29,14l-.2-.08a3.33,3.33,0,0,0-.53-.11,1.56,1.56,0,0,0-.31,0h-.5V10.22H5l.17,0,.17,0,.26,0A2.71,2.71,0,0,0,6,10.12l.22-.07a2.48,2.48,0,0,0,.44-.2l.16-.09a3.42,3.42,0,0,0,.52-.42,3,3,0,0,0,.91-2.18,2.73,2.73,0,0,0,0-.41h7.56a2.73,2.73,0,0,0,0,.41,3,3,0,0,0,.91,2.18,2.9,2.9,0,0,0,.52.42l.16.09a2.48,2.48,0,0,0,.44.2l.22.07a2.71,2.71,0,0,0,.41.09l.26,0,.17,0,.17,0h.24v3.56h-.5a1.62,1.62,0,0,0-.31,0,3.33,3.33,0,0,0-.53.11l-.2.08a3.39,3.39,0,0,0-.39.18l-.17.11a2.63,2.63,0,0,0-.49.39,3,3,0,0,0-.91,2.18,2.73,2.73,0,0,0,0,.41Zm10.78,0H17.31a1.45,1.45,0,0,1-.06-.41,1.58,1.58,0,0,1,.47-1.12,1.29,1.29,0,0,1,.38-.28l.12,0a2.07,2.07,0,0,1,.33-.1l.13,0a1.45,1.45,0,0,1,.36,0l.12,0,.09,0V17A.25.25,0,0,1,19,17.25Z"/><path d="M12,8.5A3.5,3.5,0,1,0,15.5,12,3.5,3.5,0,0,0,12,8.5ZM12,14a2,2,0,1,1,2-2A2,2,0,0,1,12,14Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/moon.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/moon.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/moon.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="moon"><path d="M12.09,20.66A8.68,8.68,0,0,1,11,20.59,8.8,8.8,0,0,1,3.41,13a8.71,8.71,0,0,1,6.83-9.67,1.23,1.23,0,0,1,1.27.48,1.27,1.27,0,0,1,.05,1.4,5.3,5.3,0,0,0-.66,3.47,5.24,5.24,0,0,0,4.38,4.38h0a5.19,5.19,0,0,0,3.47-.67,1.27,1.27,0,0,1,1.4.07,1.21,1.21,0,0,1,.48,1.26A8.7,8.7,0,0,1,12.09,20.66ZM10,5a7.25,7.25,0,1,0,9,9,6.74,6.74,0,0,1-9.61-5A6.75,6.75,0,0,1,10,5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/palette.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/palette.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/palette.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="palette"><path d="M12.11,4.25H12a7.79,7.79,0,0,0-7.65,6.51,1.71,1.71,0,0,0,.4,1.4A1.69,1.69,0,0,0,6,12.77H6.1A5.27,5.27,0,0,1,10,14,5.28,5.28,0,0,1,11.23,18a1.65,1.65,0,0,0,.6,1.3,1.7,1.7,0,0,0,1.13.42,1.32,1.32,0,0,0,.28,0,7.75,7.75,0,0,0-1.13-15.4ZM13,18.17a.25.25,0,0,1-.2-.06.19.19,0,0,1-.07-.15A6.73,6.73,0,0,0,11,13a6.67,6.67,0,0,0-4.93-1.7H6a.22.22,0,0,1-.15-.08.25.25,0,0,1-.06-.2A6.29,6.29,0,0,1,12,5.75h.09a6.38,6.38,0,0,1,6.16,6.16A6.29,6.29,0,0,1,13,18.17Z"/><path d="M9,7.75A1.25,1.25,0,1,0,10.25,9,1.25,1.25,0,0,0,9,7.75Zm0,1.5A.25.25,0,1,1,9.25,9,.25.25,0,0,1,9,9.25Z"/><path d="M12,6.5a1.25,1.25,0,1,0,1.25,1.25A1.25,1.25,0,0,0,12,6.5ZM12,8a.25.25,0,1,1,.25-.25A.25.25,0,0,1,12,8Z"/><path d="M15,10.25A1.25,1.25,0,1,0,13.75,9,1.25,1.25,0,0,0,15,10.25Zm0-1A.25.25,0,1,1,15.25,9,.25.25,0,0,1,15,9.25Z"/><path d="M16.25,10.75A1.25,1.25,0,1,0,17.5,12,1.25,1.25,0,0,0,16.25,10.75Zm0,1.5A.25.25,0,1,1,16.5,12,.25.25,0,0,1,16.25,12.25Z"/><path d="M15,13.75A1.25,1.25,0,1,0,16.25,15,1.25,1.25,0,0,0,15,13.75Zm0,1.5a.25.25,0,1,1,.25-.25A.25.25,0,0,1,15,15.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/paperclip.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/paperclip.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/paperclip.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="paperclip"><path d="M8.94,20.74a5.85,5.85,0,0,1-4-1.56,5.23,5.23,0,0,1,0-7.68L12.5,4.36a4.22,4.22,0,0,1,5.69,0A4.1,4.1,0,0,1,19.5,7.3a3.46,3.46,0,0,1-1.1,2.55L10.83,17a2.47,2.47,0,0,1-3.36,0,2.23,2.23,0,0,1,0-3.28l7-6.59a.75.75,0,0,1,1.06,0,.75.75,0,0,1,0,1.06l-7,6.59a.73.73,0,0,0,0,1.1,1,1,0,0,0,1.3,0l7.57-7.13A2,2,0,0,0,18,7.3a2.57,2.57,0,0,0-.84-1.84,2.67,2.67,0,0,0-3.63,0L6,12.59a3.73,3.73,0,0,0,0,5.5,4.4,4.4,0,0,0,6,0L19.49,11a.74.74,0,0,1,1.06,0,.75.75,0,0,1,0,1.06L13,19.18A5.84,5.84,0,0,1,8.94,20.74Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/pause.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/pause.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/pause.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="pause"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M9,19.75A.76.76,0,0,1,8.25,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,9,19.75Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M15,19.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,15,19.75Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/paypal.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/paypal.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/paypal.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="paypal"><path d="M9.16,13.41c-.12.67-.61,3.83-.75,4.72,0,.07,0,.09-.11.09H5.68a.43.43,0,0,1-.43-.49L7.31,4.61A.73.73,0,0,1,8,4c5.35,0,5.8-.13,7.17.41,2.11.82,2.31,2.8,1.55,4.95s-2.55,3.15-4.93,3.18c-1.52,0-2.44-.24-2.65.86ZM17.8,8.33c-.06-.05-.08-.06-.1,0a8,8,0,0,1-.31,1.19c-1.4,4-5.29,3.67-7.19,3.67a.35.35,0,0,0-.39.33c-.79,5-1,6-1,6a.38.38,0,0,0,.37.46h2.24a.63.63,0,0,0,.61-.53c0-.19,0,.22.51-3.22.16-.77.5-.69,1-.69,2.49,0,4.44-1,5-4a3.14,3.14,0,0,0-.84-3.27Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/pencil.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/pencil.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/pencil.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="pencil"><path d="M4.21,20.52a.73.73,0,0,1-.52-.21.75.75,0,0,1-.22-.6l.31-3.84A.73.73,0,0,1,4,15.4L15.06,4.34a3.19,3.19,0,0,1,2.28-.86,3.3,3.3,0,0,1,2.25.91,3.31,3.31,0,0,1,.11,4.5L8.63,20a.77.77,0,0,1-.46.22l-3.89.35Zm1-4.26L5,19l2.74-.25L18.64,7.83A1.72,1.72,0,0,0,17.31,5a1.61,1.61,0,0,0-1.19.42h0ZM15.59,4.87h0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/percentage.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/percentage.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/percentage.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="percentage"><path d="M7.05,17.7a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06l9.9-9.9a.75.75,0,1,1,1.06,1.06l-9.9,9.9A.74.74,0,0,1,7.05,17.7Z"/><path d="M8.5,10.75A2.25,2.25,0,1,1,10.75,8.5,2.25,2.25,0,0,1,8.5,10.75Zm0-3a.75.75,0,1,0,.75.75A.76.76,0,0,0,8.5,7.75Z"/><path d="M15.5,17.75a2.25,2.25,0,1,1,2.25-2.25A2.25,2.25,0,0,1,15.5,17.75Zm0-3a.75.75,0,1,0,.75.75A.76.76,0,0,0,15.5,14.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/phone.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/phone.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/phone.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="phone"><path d="M18.4,20.75h-.23a16.73,16.73,0,0,1-7.27-2.58,16.58,16.58,0,0,1-5.06-5.05A16.72,16.72,0,0,1,3.26,5.83,2.3,2.3,0,0,1,3.8,4.1a2.32,2.32,0,0,1,1.6-.84H8a2.36,2.36,0,0,1,2.33,2,9.29,9.29,0,0,0,.53,2.09,2.37,2.37,0,0,1-.54,2.49l-.61.61a12,12,0,0,0,3.77,3.75l.61-.6a2.37,2.37,0,0,1,2.49-.54,9.57,9.57,0,0,0,2.09.53,2.35,2.35,0,0,1,2,2.38v2.4a2.36,2.36,0,0,1-2.35,2.36ZM8,4.75H5.61A.87.87,0,0,0,5,5.06a.83.83,0,0,0-.2.62A15.17,15.17,0,0,0,7.11,12.3a15,15,0,0,0,4.59,4.59,15.34,15.34,0,0,0,6.63,2.36h0A.89.89,0,0,0,19,19a.88.88,0,0,0,.25-.61V16a.86.86,0,0,0-.74-.87,11.42,11.42,0,0,1-2.42-.6.87.87,0,0,0-.91.19l-1,1a.76.76,0,0,1-.9.12,13.53,13.53,0,0,1-5.11-5.1.74.74,0,0,1,.12-.9l1-1a.85.85,0,0,0,.19-.9,11.28,11.28,0,0,1-.6-2.42A.87.87,0,0,0,8,4.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/play.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/play.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/play.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="play"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M8.5,19.75a.75.75,0,0,1-.29-.06A.74.74,0,0,1,7.75,19V5A.75.75,0,0,1,9,4.47l7,7a.75.75,0,0,1,0,1.06l-7,7A.77.77,0,0,1,8.5,19.75ZM9.25,6.81V17.19L14.44,12Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/plus-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/plus-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/plus-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="plus-circle"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M12,16.75a.76.76,0,0,1-.75-.75V8a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,12,16.75Z"/><path d="M16,12.75H8a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/plus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="plus"><path d="M12.75,11.25V5a.75.75,0,0,0-1.5,0v6.25H5a.75.75,0,0,0,0,1.5h6.25V19a.76.76,0,0,0,.75.75.75.75,0,0,0,.75-.75V12.75H19a.75.75,0,0,0,.75-.75.76.76,0,0,0-.75-.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/pound.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/pound.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/pound.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="pound"><path d="M17.54,19.25H8.1l2-2.82a.76.76,0,0,0,.14-.43V12.75h3.25a.75.75,0,0,0,0-1.5H10.21V8a3.09,3.09,0,0,1,3.17-3.25,3.14,3.14,0,0,1,3.33,3.41v1a.75.75,0,0,0,1.5,0v-1a4.62,4.62,0,0,0-4.83-4.91A4.57,4.57,0,0,0,8.71,8v3.25H6.46a.75.75,0,0,0,0,1.5H8.71v3L6.05,19.57a.76.76,0,0,0,0,.78.74.74,0,0,0,.66.4H17.54a.75.75,0,0,0,0-1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/power-off.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/power-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/power-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="power-off"><path d="M12,21A9,9,0,0,1,5.64,5.64a.74.74,0,0,1,1.06,0,.75.75,0,0,1,0,1.06A7.5,7.5,0,1,0,17.3,17.3a7.48,7.48,0,0,0,0-10.6.75.75,0,0,1,0-1.06.74.74,0,0,1,1.06,0A9,9,0,0,1,12,21Z"/><path d="M12,12.75a.76.76,0,0,1-.75-.75V4a.75.75,0,0,1,1.5,0v8A.76.76,0,0,1,12,12.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/prime.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/prime.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/prime.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="prime"><polygon points="15.36 11.33 14.26 11.08 15.12 12.3 15.12 16.09 18.05 13.65 18.05 9.5 16.7 9.98 15.36 11.33"/><polygon points="8.52 11.33 7.17 9.98 5.83 9.5 5.83 13.65 8.76 16.09 8.76 12.3 9.62 11.08 8.52 11.33"/><polygon points="13.16 11.45 10.72 11.45 10.11 11.08 9.13 12.55 9.13 18.05 9.86 19.14 10.72 20 13.16 20 14.02 19.14 14.75 18.05 14.75 12.55 13.77 11.08 13.16 11.45"/><polygon points="15.12 18.41 16.7 16.82 16.7 15.24 15.12 16.58 15.12 18.41"/><polygon points="7.17 16.82 8.76 18.41 8.76 16.58 7.17 15.24 7.17 16.82"/><polygon points="11.08 10.96 11.7 10.96 11.7 4 10.35 4 9.38 6.31 4.97 5.95 5.71 9.01 10.96 10.96 11.08 10.96"/><path d="M14.5,6.31,13.53,4H12.18v7H13l5.25-2L19,6Z"/><polygon points="17.32 5.71 15.6 4 13.89 4 14.75 5.95 17.32 5.71"/><polygon points="9.98 4 8.27 4 6.56 5.71 9.13 5.95 9.98 4"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/print.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/print.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/print.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="print"><path d="M18,16.75H16a.75.75,0,0,1,0-1.5h2A1.25,1.25,0,0,0,19.25,14V10A1.25,1.25,0,0,0,18,8.75H6A1.25,1.25,0,0,0,4.75,10v4A1.25,1.25,0,0,0,6,15.25H8a.75.75,0,0,1,0,1.5H6A2.75,2.75,0,0,1,3.25,14V10A2.75,2.75,0,0,1,6,7.25H18A2.75,2.75,0,0,1,20.75,10v4A2.75,2.75,0,0,1,18,16.75Z"/><path d="M16,8.75A.76.76,0,0,1,15.25,8V4.75H8.75V8a.75.75,0,0,1-1.5,0V4.5A1.25,1.25,0,0,1,8.5,3.25h7A1.25,1.25,0,0,1,16.75,4.5V8A.76.76,0,0,1,16,8.75Z"/><path d="M15.5,20.75h-7A1.25,1.25,0,0,1,7.25,19.5v-7A1.25,1.25,0,0,1,8.5,11.25h7a1.25,1.25,0,0,1,1.25,1.25v7A1.25,1.25,0,0,1,15.5,20.75Zm-6.75-1.5h6.5v-6.5H8.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/qrcode.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/qrcode.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/qrcode.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="qrcode"><path d="M12.38,3.88v7h7v-7Zm5.5,5.5h-4v-4h4Z"/><path d="M3.88,10.88h7v-7h-7Zm1.5-5.5h4v4h-4Z"/><path d="M3.88,19.38h7v-7h-7Zm1.5-5.5h4v4h-4Z"/><rect x="12.38" y="12.38" width="1.75" height="1.75"/><rect x="15.88" y="12.38" width="1.75" height="1.75"/><rect x="14.13" y="14.13" width="1.75" height="1.75"/><rect x="17.63" y="14.13" width="1.75" height="1.75"/><rect x="12.38" y="15.88" width="1.75" height="1.75"/><rect x="15.88" y="15.88" width="1.75" height="1.75"/><rect x="14.13" y="17.63" width="1.75" height="1.75"/><rect x="17.63" y="17.63" width="1.75" height="1.75"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/question-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/question-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/question-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="question-circle"><path d="M12,3a9,9,0,1,0,9,9A9,9,0,0,0,12,3Zm0,16.5A7.5,7.5,0,1,1,19.5,12,7.5,7.5,0,0,1,12,19.5Z"/><path d="M9.7,7.7A3.25,3.25,0,0,0,8.75,10a.75.75,0,0,0,1.5,0,1.74,1.74,0,0,1,.51-1.24,1.8,1.8,0,0,1,2.48,0,1.75,1.75,0,0,1-1.24,3,.76.76,0,0,0-.75.75v1a.75.75,0,0,0,1.5,0v-.34a3.19,3.19,0,0,0,1.55-.86,3.26,3.26,0,0,0,0-4.6A3.34,3.34,0,0,0,9.7,7.7Z"/><circle cx="12" cy="16.25" r="1.25"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/question.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/question.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/question.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="question"><path d="M16.07,4.93A5.75,5.75,0,0,0,6.25,9a.75.75,0,0,0,1.5,0A4.26,4.26,0,1,1,12,13.25a.76.76,0,0,0-.75.75v2a.75.75,0,0,0,1.5,0V14.7a5.76,5.76,0,0,0,3.32-9.77Z"/><circle cx="12" cy="19.5" r="1.25"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/reddit.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/reddit.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/reddit.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="reddit"><path d="M10.24,13.6a.8.8,0,1,1,.8-.8A.8.8,0,0,1,10.24,13.6ZM20,12a8,8,0,1,1-8-8A8,8,0,0,1,20,12Zm-4.27-1.33A1.12,1.12,0,0,0,15,11a5.13,5.13,0,0,0-2.77-.85l.56-2.53,1.79.4a.79.79,0,0,0,.79.8.81.81,0,0,0,.8-.81.79.79,0,0,0-1.51-.35l-2-.44a.19.19,0,0,0-.22.14l-.62,2.79A5.18,5.18,0,0,0,9.05,11,1.07,1.07,0,1,0,7.8,12.7a2.73,2.73,0,0,0,0,.5c0,1.69,1.91,3.07,4.26,3.07s4.26-1.38,4.26-3.07a2.16,2.16,0,0,0-.06-.51,1.07,1.07,0,0,0-.48-2Zm-2.22,3.75a2.82,2.82,0,0,1-3,0,.2.2,0,0,0-.27,0,.19.19,0,0,0,0,.28,3.17,3.17,0,0,0,3.56,0,.19.19,0,0,0,0-.28A.2.2,0,0,0,13.51,14.42ZM13.76,12a.8.8,0,1,0,.8.8A.8.8,0,0,0,13.76,12Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/refresh.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/refresh.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/refresh.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="refresh"><path d="M12,20.75a7.25,7.25,0,0,1,0-14.5h2.5a.75.75,0,0,1,0,1.5H12a5.75,5.75,0,1,0,5.75,5.75.75.75,0,0,1,1.5,0A7.26,7.26,0,0,1,12,20.75Z"/><path d="M12,10.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L13.94,7,11.47,4.53a.75.75,0,1,1,1.06-1.06l3,3a.75.75,0,0,1,0,1.06l-3,3A.74.74,0,0,1,12,10.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/replay.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/replay.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/replay.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="replay"><path d="M12,20.75A7.26,7.26,0,0,1,4.75,13.5a.75.75,0,0,1,1.5,0A5.75,5.75,0,1,0,12,7.75H9.5a.75.75,0,0,1,0-1.5H12a7.25,7.25,0,0,1,0,14.5Z"/><path d="M12,10.75a.74.74,0,0,1-.53-.22l-3-3a.75.75,0,0,1,0-1.06l3-3a.75.75,0,1,1,1.06,1.06L10.06,7l2.47,2.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,12,10.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/reply.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/reply.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/reply.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="reply"><path d="M14.55,15.59A.75.75,0,0,1,14,14.31l3.92-3.89L14,6.53a.75.75,0,0,1,0-1.06.75.75,0,0,1,1.06,0l4.46,4.42a.75.75,0,0,1,0,1.06l-4.46,4.42A.7.7,0,0,1,14.55,15.59Z"/><path d="M5,18.75A.76.76,0,0,1,4.25,18V10.42A.76.76,0,0,1,5,9.67H19a.75.75,0,0,1,0,1.5H5.75V18A.76.76,0,0,1,5,18.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/save.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/save.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/save.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="save"><path d="M17,20.75H7A2.75,2.75,0,0,1,4.25,18V6A2.75,2.75,0,0,1,7,3.25h7.5a.75.75,0,0,1,.53.22L19.53,8a.75.75,0,0,1,.22.53V18A2.75,2.75,0,0,1,17,20.75ZM7,4.75A1.25,1.25,0,0,0,5.75,6V18A1.25,1.25,0,0,0,7,19.25H17A1.25,1.25,0,0,0,18.25,18V8.81L14.19,4.75Z"/><path d="M16.75,20h-1.5V13.75H8.75V20H7.25V13.5A1.25,1.25,0,0,1,8.5,12.25h7a1.25,1.25,0,0,1,1.25,1.25Z"/><path d="M12.47,8.75H8.53a1.29,1.29,0,0,1-1.28-1.3V4h1.5V7.25h3.5V4h1.5V7.45A1.29,1.29,0,0,1,12.47,8.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/search-minus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/search-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/search-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="search-minus"><path d="M10.77,18.3a7.53,7.53,0,1,1,7.53-7.53A7.54,7.54,0,0,1,10.77,18.3Zm0-13.55a6,6,0,1,0,6,6A6,6,0,0,0,10.77,4.75Z"/><path d="M20,20.75a.74.74,0,0,1-.53-.22L15.34,16.4a.75.75,0,0,1,1.06-1.06l4.13,4.13a.75.75,0,0,1,0,1.06A.74.74,0,0,1,20,20.75Z"/><path d="M13.25,11.5h-5a.75.75,0,0,1,0-1.5h5a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/search-plus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/search-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/search-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="search-plus"><path d="M10.77,18.3a7.53,7.53,0,1,1,7.53-7.53A7.53,7.53,0,0,1,10.77,18.3Zm0-13.55a6,6,0,1,0,6,6A6,6,0,0,0,10.77,4.75Z"/><path d="M20,20.75a.74.74,0,0,1-.53-.22L15.34,16.4a.75.75,0,0,1,1.06-1.06l4.13,4.13a.75.75,0,0,1,0,1.06A.74.74,0,0,1,20,20.75Z"/><path d="M10.75,14a.76.76,0,0,1-.75-.75v-5a.75.75,0,0,1,1.5,0v5A.76.76,0,0,1,10.75,14Z"/><path d="M13.25,11.5h-5a.75.75,0,0,1,0-1.5h5a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/search.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/search.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/search.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="search"><path d="M10.77,18.3a7.53,7.53,0,1,1,7.53-7.53A7.53,7.53,0,0,1,10.77,18.3Zm0-13.55a6,6,0,1,0,6,6A6,6,0,0,0,10.77,4.75Z"/><path d="M20,20.75a.74.74,0,0,1-.53-.22L15.34,16.4a.75.75,0,0,1,1.06-1.06l4.13,4.13a.75.75,0,0,1,0,1.06A.74.74,0,0,1,20,20.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/send.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/send.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/send.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="send"><path d="M20.33,3.67a1.45,1.45,0,0,0-1.47-.35L4.23,8.2A1.44,1.44,0,0,0,4,10.85l6.07,3,3,6.09a1.44,1.44,0,0,0,1.29.79h.1a1.43,1.43,0,0,0,1.26-1L20.67,5.14A1.41,1.41,0,0,0,20.33,3.67ZM4.85,9.58,17.62,5.32l-7.09,7.09Zm9.58,9.57-2.84-5.68,7.09-7.09Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/server.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/server.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/server.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="server"><path d="M20.5,8.5v-3a1,1,0,0,0-1-1H4.5a1,1,0,0,0-1,1v3a1,1,0,0,0,1,1,1,1,0,0,0-1,1v3a1,1,0,0,0,1,1,1,1,0,0,0-1,1v3a1,1,0,0,0,1,1h15a1,1,0,0,0,1-1v-3a1,1,0,0,0-1-1,1,1,0,0,0,1-1v-3a1,1,0,0,0-1-1A1,1,0,0,0,20.5,8.5Zm-1,10H4.5v-3h15Zm0-5H4.5v-3h15Zm0-5H4.5v-3h15Z"/><circle cx="6.25" cy="7" r="0.75"/><circle cx="8.75" cy="7" r="0.75"/><circle cx="6.25" cy="12" r="0.75"/><circle cx="8.75" cy="12" r="0.75"/><circle cx="6.25" cy="17" r="0.75"/><circle cx="8.75" cy="17" r="0.75"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/share-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/share-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/share-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="share-alt"><path d="M17.5,14.25a3.24,3.24,0,0,0-2.62,1.35L9.59,13a3.39,3.39,0,0,0,.16-1,3.39,3.39,0,0,0-.16-1L14.88,8.4a3.23,3.23,0,1,0-.63-1.9A2.94,2.94,0,0,0,14.3,7L8.83,9.75a3.19,3.19,0,0,0-2.33-1,3.25,3.25,0,0,0,0,6.5,3.19,3.19,0,0,0,2.33-1L14.3,17a2.94,2.94,0,0,0-.05.51,3.25,3.25,0,1,0,3.25-3.25Zm0-9.5A1.75,1.75,0,1,1,15.75,6.5,1.76,1.76,0,0,1,17.5,4.75Zm-11,9A1.75,1.75,0,1,1,8.25,12,1.76,1.76,0,0,1,6.5,13.75Zm11,5.5a1.75,1.75,0,1,1,1.75-1.75A1.76,1.76,0,0,1,17.5,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/shield.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/shield.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/shield.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="shield"><path d="M12,20.75a.87.87,0,0,1-.28-.05A14.27,14.27,0,0,1,3.29,6.43a.74.74,0,0,1,.61-.69,27.12,27.12,0,0,0,7.79-2.42.75.75,0,0,1,.62,0A27.12,27.12,0,0,0,20.1,5.74a.74.74,0,0,1,.61.69A14.27,14.27,0,0,1,12.28,20.7.87.87,0,0,1,12,20.75ZM4.76,7.11A12.47,12.47,0,0,0,12,19.18,12.47,12.47,0,0,0,19.24,7.11,27.56,27.56,0,0,1,12,4.82,27.56,27.56,0,0,1,4.76,7.11Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/shopping-bag.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/shopping-bag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/shopping-bag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="shopping-bag"><path d="M19.5,8.25h-3v-.5a4.5,4.5,0,0,0-9,0v.5h-3A1.25,1.25,0,0,0,3.25,9.5V18A2.75,2.75,0,0,0,6,20.75H18A2.75,2.75,0,0,0,20.75,18V9.5A1.25,1.25,0,0,0,19.5,8.25ZM9,7.75a3,3,0,0,1,6,0v.5H9ZM19.25,18A1.25,1.25,0,0,1,18,19.25H6A1.25,1.25,0,0,1,4.75,18V9.75H7.5V12A.75.75,0,0,0,9,12V9.75h6V12a.75.75,0,0,0,1.5,0V9.75h2.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/shopping-cart.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/shopping-cart.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/shopping-cart.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="shopping-cart"><path d="M9.75,20.75a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,9.75,20.75Zm0-1.5Z"/><path d="M16.25,20.75a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,16.25,20.75Zm0-1.5Z"/><path d="M18,16.75H8a.76.76,0,0,1-.74-.62L5.37,5.75H4a.75.75,0,0,1,0-1.5H6a.76.76,0,0,1,.74.62l.43,2.38H20a.75.75,0,0,1,.59.29.77.77,0,0,1,.14.64l-2,8A.76.76,0,0,1,18,16.75Zm-9.37-1.5h8.78L19,8.75H7.44Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sign-in.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sign-in.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sign-in.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sign-in"><path d="M18,20.75H15a.75.75,0,0,1,0-1.5h3a1.16,1.16,0,0,0,1.25-1V5.78a1.16,1.16,0,0,0-1.25-1H15a.75.75,0,0,1,0-1.5h3a2.64,2.64,0,0,1,2.75,2.53V18.22A2.64,2.64,0,0,1,18,20.75Z"/><path d="M11,16.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L13.94,12,10.47,8.53a.75.75,0,0,1,1.06-1.06l4,4a.75.75,0,0,1,0,1.06l-4,4A.74.74,0,0,1,11,16.75Z"/><path d="M15,12.75H4a.75.75,0,0,1,0-1.5H15a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sign-out.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sign-out.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sign-out.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sign-out"><path d="M9,20.75H6a2.64,2.64,0,0,1-2.75-2.53V5.78A2.64,2.64,0,0,1,6,3.25H9a.75.75,0,0,1,0,1.5H6a1.16,1.16,0,0,0-1.25,1V18.22a1.16,1.16,0,0,0,1.25,1H9a.75.75,0,0,1,0,1.5Z"/><path d="M16,16.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L18.94,12,15.47,8.53a.75.75,0,1,1,1.06-1.06l4,4a.75.75,0,0,1,0,1.06l-4,4A.74.74,0,0,1,16,16.75Z"/><path d="M20,12.75H9a.75.75,0,0,1,0-1.5H20a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sitemap.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sitemap.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sitemap.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sitemap"><path d="M13.5,9.75h-3A1.76,1.76,0,0,1,8.75,8V5A1.76,1.76,0,0,1,10.5,3.25h3A1.76,1.76,0,0,1,15.25,5V8A1.76,1.76,0,0,1,13.5,9.75Zm-3-5a.25.25,0,0,0-.25.25V8a.25.25,0,0,0,.25.25h3A.25.25,0,0,0,13.75,8V5a.25.25,0,0,0-.25-.25Z"/><path d="M6,19.75H4A1.76,1.76,0,0,1,2.25,18V16A1.76,1.76,0,0,1,4,14.25H6A1.76,1.76,0,0,1,7.75,16v2A1.76,1.76,0,0,1,6,19.75Zm-2-4a.25.25,0,0,0-.25.25v2a.25.25,0,0,0,.25.25H6A.25.25,0,0,0,6.25,18V16A.25.25,0,0,0,6,15.75Z"/><path d="M13,19.75H11A1.76,1.76,0,0,1,9.25,18V16A1.76,1.76,0,0,1,11,14.25h2A1.76,1.76,0,0,1,14.75,16v2A1.76,1.76,0,0,1,13,19.75Zm-2-4a.25.25,0,0,0-.25.25v2a.25.25,0,0,0,.25.25h2a.25.25,0,0,0,.25-.25V16a.25.25,0,0,0-.25-.25Z"/><path d="M20,19.75H18A1.76,1.76,0,0,1,16.25,18V16A1.76,1.76,0,0,1,18,14.25h2A1.76,1.76,0,0,1,21.75,16v2A1.76,1.76,0,0,1,20,19.75Zm-2-4a.25.25,0,0,0-.25.25v2a.25.25,0,0,0,.25.25h2a.25.25,0,0,0,.25-.25V16a.25.25,0,0,0-.25-.25Z"/><path d="M19,15.75a.76.76,0,0,1-.75-.75V13a.25.25,0,0,0-.25-.25H6a.25.25,0,0,0-.25.25v2a.75.75,0,0,1-1.5,0V13A1.76,1.76,0,0,1,6,11.25H18A1.76,1.76,0,0,1,19.75,13v2A.76.76,0,0,1,19,15.75Z"/><path d="M12,15.75a.76.76,0,0,1-.75-.75V9a.75.75,0,0,1,1.5,0v6A.76.76,0,0,1,12,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/slack.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/slack.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/slack.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="slack"><path d="M7.36,14.11a1.68,1.68,0,1,1-1.68-1.68H7.36Zm.85,0a1.68,1.68,0,0,1,3.36,0v4.21a1.68,1.68,0,0,1-3.36,0ZM9.89,7.36a1.68,1.68,0,1,1,1.68-1.68V7.36Zm0,.85a1.68,1.68,0,0,1,0,3.36H5.68a1.68,1.68,0,0,1,0-3.36Zm6.75,1.68a1.68,1.68,0,1,1,1.68,1.68H16.64V9.89Zm-.85,0a1.68,1.68,0,0,1-3.36,0V5.68a1.68,1.68,0,0,1,3.36,0V9.89Zm-1.68,6.75a1.68,1.68,0,1,1-1.68,1.68V16.64Zm0-.85a1.68,1.68,0,0,1,0-3.36h4.21a1.68,1.68,0,0,1,0,3.36Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sliders-h.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sliders-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sliders-h.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sliders-h"><path d="M19,8.25H12a.75.75,0,0,1,0-1.5h7a.75.75,0,0,1,0,1.5Z"/><path d="M10,8.25H5a.75.75,0,0,1,0-1.5h5a.75.75,0,0,1,0,1.5Z"/><path d="M10,9.75A.76.76,0,0,1,9.25,9V6a.75.75,0,0,1,1.5,0V9A.76.76,0,0,1,10,9.75Z"/><path d="M19,17.25H12a.75.75,0,0,1,0-1.5h7a.75.75,0,0,1,0,1.5Z"/><path d="M10,17.25H5a.75.75,0,0,1,0-1.5h5a.75.75,0,0,1,0,1.5Z"/><path d="M10,18.75A.76.76,0,0,1,9.25,18V15a.75.75,0,0,1,1.5,0v3A.76.76,0,0,1,10,18.75Z"/><path d="M19,12.75H16a.75.75,0,0,1,0-1.5h3a.75.75,0,0,1,0,1.5Z"/><path d="M14,12.75H5a.75.75,0,0,1,0-1.5h9a.75.75,0,0,1,0,1.5Z"/><path d="M14,14.25a.76.76,0,0,1-.75-.75v-3a.75.75,0,0,1,1.5,0v3A.76.76,0,0,1,14,14.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sliders-v.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sliders-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sliders-v.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sliders-v"><path d="M16.5,19.75a.76.76,0,0,1-.75-.75V12a.75.75,0,0,1,1.5,0v7A.76.76,0,0,1,16.5,19.75Z"/><path d="M16.5,10.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0v5A.76.76,0,0,1,16.5,10.75Z"/><path d="M18,10.75H15a.75.75,0,0,1,0-1.5h3a.75.75,0,0,1,0,1.5Z"/><path d="M7.5,19.75A.76.76,0,0,1,6.75,19V12a.75.75,0,0,1,1.5,0v7A.76.76,0,0,1,7.5,19.75Z"/><path d="M7.5,10.75A.76.76,0,0,1,6.75,10V5a.75.75,0,0,1,1.5,0v5A.76.76,0,0,1,7.5,10.75Z"/><path d="M9,10.75H6a.75.75,0,0,1,0-1.5H9a.75.75,0,0,1,0,1.5Z"/><path d="M12,19.75a.76.76,0,0,1-.75-.75V16a.75.75,0,0,1,1.5,0v3A.76.76,0,0,1,12,19.75Z"/><path d="M12,14.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0v9A.76.76,0,0,1,12,14.75Z"/><path d="M13.5,14.75h-3a.75.75,0,0,1,0-1.5h3a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alpha-alt-down"><path d="M10.22,16,9,17.19V5A.75.75,0,0,0,7.5,5V17.19L6.28,16A.75.75,0,1,0,5.22,17l2.5,2.5a.78.78,0,0,0,.24.16.73.73,0,0,0,.58,0,.78.78,0,0,0,.24-.16l2.5-2.5A.75.75,0,1,0,10.22,16Z"/><path d="M19,18.25l-1.71-4.79a1.05,1.05,0,0,0-2,0l-1.71,4.77a.75.75,0,0,0,1.42.5l.27-.77h2l.27.77a.75.75,0,0,0,.71.5.73.73,0,0,0,.25,0A.75.75,0,0,0,19,18.25Zm-3.19-1.77.48-1.35.48,1.35Z"/><path d="M13.83,10.54a1.11,1.11,0,0,0,1,.71H18a.75.75,0,0,0,0-1.5H15.61l2.82-2.93a1.28,1.28,0,0,0,.24-1.36,1.15,1.15,0,0,0-1.06-.71H14.5a.75.75,0,0,0,0,1.5h2.39L14.06,9.2A1.22,1.22,0,0,0,13.83,10.54Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-alt-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alpha-alt-up"><path d="M8.78,4.47a.78.78,0,0,0-.24-.16.73.73,0,0,0-.58,0,.78.78,0,0,0-.24.16L5.22,7A.75.75,0,1,0,6.28,8L7.5,6.81V19A.75.75,0,0,0,9,19V6.81L10.22,8a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06Z"/><path d="M19,18.25l-1.71-4.79a1.05,1.05,0,0,0-2,0l-1.71,4.77a.75.75,0,0,0,1.42.5l.27-.77h2l.27.77a.75.75,0,0,0,.71.5.73.73,0,0,0,.25,0A.75.75,0,0,0,19,18.25Zm-3.19-1.77.48-1.35.48,1.35Z"/><path d="M13.83,10.54a1.11,1.11,0,0,0,1,.71H18a.75.75,0,0,0,0-1.5H15.61l2.82-2.93a1.28,1.28,0,0,0,.24-1.36,1.15,1.15,0,0,0-1.06-.71H14.5a.75.75,0,0,0,0,1.5h2.39L14.06,9.2A1.22,1.22,0,0,0,13.83,10.54Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alpha-down"><path d="M10.22,16,9,17.19V5A.75.75,0,0,0,7.5,5V17.19L6.28,16A.75.75,0,1,0,5.22,17l2.5,2.5a.78.78,0,0,0,.24.16.73.73,0,0,0,.58,0,.78.78,0,0,0,.24-.16l2.5-2.5A.75.75,0,1,0,10.22,16Z"/><path d="M14,11.21a.76.76,0,0,0,1-.46l.27-.77h2l.27.77a.75.75,0,0,0,.71.5.73.73,0,0,0,.25,0,.75.75,0,0,0,.46-1L17.25,5.46a1.05,1.05,0,0,0-2,0l-1.71,4.77A.75.75,0,0,0,14,11.21Zm2.73-2.73h-1l.48-1.35Z"/><path d="M18.67,13.46a1.15,1.15,0,0,0-1.06-.71H14.5a.75.75,0,0,0,0,1.5h2.39L14.06,17.2a1.22,1.22,0,0,0-.23,1.34,1.11,1.11,0,0,0,1,.71H18a.75.75,0,0,0,0-1.5H15.61l2.81-2.93A1.26,1.26,0,0,0,18.67,13.46Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alpha-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alpha-up"><path d="M8.78,4.47a.78.78,0,0,0-.24-.16.73.73,0,0,0-.58,0,.78.78,0,0,0-.24.16L5.22,7A.75.75,0,1,0,6.28,8L7.5,6.81V19A.75.75,0,0,0,9,19V6.81L10.22,8a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06Z"/><path d="M14,11.21a.76.76,0,0,0,1-.46l.27-.77h2l.27.77a.75.75,0,0,0,.71.5.73.73,0,0,0,.25,0,.75.75,0,0,0,.46-1L17.25,5.46a1.05,1.05,0,0,0-2,0l-1.71,4.77A.75.75,0,0,0,14,11.21Zm2.73-2.73h-1l.48-1.35Z"/><path d="M18.67,13.46a1.15,1.15,0,0,0-1.06-.71H14.5a.75.75,0,0,0,0,1.5h2.39L14.06,17.2a1.22,1.22,0,0,0-.23,1.34,1.11,1.11,0,0,0,1,.71H18a.75.75,0,0,0,0-1.5H15.61l2.81-2.93A1.26,1.26,0,0,0,18.67,13.46Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alt-slash.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alt-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alt-slash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alt-slash"><path d="M6,8,7.25,6.81V12.5a.75.75,0,0,0,1.5,0V6.81L10,8A.75.75,0,0,0,11,8,.75.75,0,0,0,11,7l-2.5-2.5a.78.78,0,0,0-.24-.16.73.73,0,0,0-.58,0,.78.78,0,0,0-.24.16L5,7A.75.75,0,1,0,6,8Z"/><path d="M18,16l-1.22,1.22V11.5a.75.75,0,0,0-1.5,0v5.69L14,16A.75.75,0,1,0,13,17l2.5,2.5a.78.78,0,0,0,.24.16.73.73,0,0,0,.58,0,.78.78,0,0,0,.24-.16L19,17A.75.75,0,1,0,18,16Z"/><path d="M19,6A.75.75,0,0,0,18,5L16.75,6.19V5a.75.75,0,0,0-1.5,0V7.69L5,18A.75.75,0,0,0,5,19,.75.75,0,0,0,6,19l1.22-1.22V19a.75.75,0,0,0,1.5,0V16.31Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-alt"><path d="M10.5,8.25A.74.74,0,0,1,10,8l-2-2L6,8A.75.75,0,1,1,5,7l2.5-2.5a.75.75,0,0,1,1.06,0L11,7A.75.75,0,0,1,11,8,.74.74,0,0,1,10.5,8.25Z"/><path d="M8,19.75A.76.76,0,0,1,7.25,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,8,19.75Z"/><path d="M16,19.75a.74.74,0,0,1-.53-.22L13,17A.75.75,0,1,1,14,16l2,2,2-2A.75.75,0,1,1,19,17l-2.5,2.5A.74.74,0,0,1,16,19.75Z"/><path d="M16,19.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,16,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-amount-down-alt"><path d="M6.5,19.75A.74.74,0,0,1,6,19.53L3.47,17A.75.75,0,1,1,4.53,16l2,2,2-2A.75.75,0,1,1,9.53,17L7,19.53A.74.74,0,0,1,6.5,19.75Z"/><path d="M6.5,19.75A.76.76,0,0,1,5.75,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,6.5,19.75Z"/><path d="M20,17.25H12a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/><path d="M16,11.25H12a.75.75,0,0,1,0-1.5h4a.75.75,0,0,1,0,1.5Z"/><path d="M14,8.25H12a.75.75,0,0,1,0-1.5h2a.75.75,0,0,1,0,1.5Z"/><path d="M18,14.25H12a.75.75,0,0,1,0-1.5h6a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-amount-down"><path d="M6.5,19.75A.74.74,0,0,1,6,19.53L3.47,17A.75.75,0,1,1,4.53,16l2,2,2-2A.75.75,0,1,1,9.53,17L7,19.53A.74.74,0,0,1,6.5,19.75Z"/><path d="M6.5,19.75A.76.76,0,0,1,5.75,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,6.5,19.75Z"/><path d="M20,8.25H12a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/><path d="M16,14.25H12a.75.75,0,0,1,0-1.5h4a.75.75,0,0,1,0,1.5Z"/><path d="M14,17.25H12a.75.75,0,0,1,0-1.5h2a.75.75,0,0,1,0,1.5Z"/><path d="M18,11.25H12a.75.75,0,0,1,0-1.5h6a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-amount-up-alt"><path d="M9,8.25A.74.74,0,0,1,8.47,8l-2-2-2,2A.75.75,0,1,1,3.47,7L6,4.47A.75.75,0,0,1,7,4.47L9.53,7A.75.75,0,0,1,9.53,8,.74.74,0,0,1,9,8.25Z"/><path d="M6.5,19.75A.76.76,0,0,1,5.75,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,6.5,19.75Z"/><path d="M20,17.25H12a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/><path d="M16,11.25H12a.75.75,0,0,1,0-1.5h4a.75.75,0,0,1,0,1.5Z"/><path d="M14,8.25H12a.75.75,0,0,1,0-1.5h2a.75.75,0,0,1,0,1.5Z"/><path d="M18,14.25H12a.75.75,0,0,1,0-1.5h6a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-amount-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-amount-up"><path d="M9,8.25A.74.74,0,0,1,8.47,8l-2-2-2,2A.75.75,0,1,1,3.47,7L6,4.47A.75.75,0,0,1,7,4.47L9.53,7A.75.75,0,0,1,9.53,8,.74.74,0,0,1,9,8.25Z"/><path d="M6.5,19.75A.76.76,0,0,1,5.75,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,6.5,19.75Z"/><path d="M20,8.25H12a.75.75,0,0,1,0-1.5h8a.75.75,0,0,1,0,1.5Z"/><path d="M16,14.25H12a.75.75,0,0,1,0-1.5h4a.75.75,0,0,1,0,1.5Z"/><path d="M14,17.25H12a.75.75,0,0,1,0-1.5h2a.75.75,0,0,1,0,1.5Z"/><path d="M18,11.25H12a.75.75,0,0,1,0-1.5h6a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-down"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M12,16.25a.74.74,0,0,1-.53-.22l-7-7A.75.75,0,0,1,5,7.75H19A.75.75,0,0,1,19.53,9l-7,7A.74.74,0,0,1,12,16.25Zm-5.19-7L12,14.44l5.19-5.19Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-numeric-alt-down"><path d="M8.38,19.75a.75.75,0,0,1-.54-.22L5.34,17a.75.75,0,0,1,0-1.06.77.77,0,0,1,1.07,0l2,2,2-2a.77.77,0,0,1,1.07,0,.75.75,0,0,1,0,1.06l-2.5,2.5A.74.74,0,0,1,8.38,19.75Z"/><path d="M8.38,19.75A.76.76,0,0,1,7.62,19V5a.76.76,0,0,1,.76-.75A.75.75,0,0,1,9.12,5V19A.75.75,0,0,1,8.38,19.75Z"/><path d="M17.12,19.25a.75.75,0,0,1-.74-.75V14.44l-.39.22a.75.75,0,0,1-.73-1.32l.66-.36a1.19,1.19,0,0,1,1.22-.11,1.29,1.29,0,0,1,.74,1.18V18.5A.76.76,0,0,1,17.12,19.25Z"/><path d="M16.62,9.25A2.25,2.25,0,1,1,18.88,7,2.24,2.24,0,0,1,16.62,9.25Zm0-3a.75.75,0,0,0,0,1.5.75.75,0,1,0,0-1.5Z"/><path d="M16.11,11.25h-.49a.75.75,0,0,1,0-1.5h.49a1.28,1.28,0,0,0,1.25-1.19c0-.29,0-.64,0-1.06V7a.75.75,0,0,1,.74-.75.76.76,0,0,1,.76.75v.5c0,.45,0,.82,0,1.14A2.78,2.78,0,0,1,16.11,11.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-alt-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-numeric-alt-up"><path d="M10.88,8.25A.75.75,0,0,1,10.34,8l-2-2-2,2A.77.77,0,0,1,5.34,8,.75.75,0,0,1,5.34,7l2.5-2.5a.77.77,0,0,1,1.07,0L11.41,7a.75.75,0,0,1,0,1.06A.74.74,0,0,1,10.88,8.25Z"/><path d="M8.38,19.75A.76.76,0,0,1,7.62,19V5a.76.76,0,0,1,.76-.75A.75.75,0,0,1,9.12,5V19A.75.75,0,0,1,8.38,19.75Z"/><path d="M17.12,19.25a.75.75,0,0,1-.74-.75V14.44l-.39.22a.75.75,0,0,1-.73-1.32l.66-.36a1.19,1.19,0,0,1,1.22-.11,1.29,1.29,0,0,1,.74,1.18V18.5A.76.76,0,0,1,17.12,19.25Z"/><path d="M16.62,9.25A2.25,2.25,0,1,1,18.88,7,2.24,2.24,0,0,1,16.62,9.25Zm0-3a.75.75,0,0,0,0,1.5.75.75,0,1,0,0-1.5Z"/><path d="M16.11,11.25h-.49a.75.75,0,0,1,0-1.5h.49a1.28,1.28,0,0,0,1.25-1.19c0-.29,0-.64,0-1.06V7a.75.75,0,0,1,.74-.75.76.76,0,0,1,.76.75v.5c0,.45,0,.82,0,1.14A2.78,2.78,0,0,1,16.11,11.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-numeric-down"><path d="M8.38,19.75a.75.75,0,0,1-.54-.22L5.34,17a.75.75,0,0,1,0-1.06.77.77,0,0,1,1.07,0l2,2,2-2a.77.77,0,0,1,1.07,0,.75.75,0,0,1,0,1.06l-2.5,2.5A.74.74,0,0,1,8.38,19.75Z"/><path d="M8.38,19.75A.76.76,0,0,1,7.62,19V5a.76.76,0,0,1,.76-.75A.75.75,0,0,1,9.12,5V19A.75.75,0,0,1,8.38,19.75Z"/><path d="M17.12,11.25a.75.75,0,0,1-.74-.75V6.44L16,6.66a.75.75,0,0,1-.73-1.32L15.92,5a1.19,1.19,0,0,1,1.22-.11,1.29,1.29,0,0,1,.74,1.18V10.5A.76.76,0,0,1,17.12,11.25Z"/><path d="M16.62,17.25A2.25,2.25,0,1,1,18.88,15,2.24,2.24,0,0,1,16.62,17.25Zm0-3a.75.75,0,0,0,0,1.5.75.75,0,1,0,0-1.5Z"/><path d="M16.11,19.25h-.49a.75.75,0,0,1,0-1.5h.49a1.28,1.28,0,0,0,1.25-1.19c0-.29,0-.64,0-1.06V15a.75.75,0,0,1,.74-.75.76.76,0,0,1,.76.75v.5c0,.45,0,.82,0,1.14A2.79,2.79,0,0,1,16.11,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-numeric-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-numeric-up"><path d="M10.75,8.25A.74.74,0,0,1,10.22,8l-2-2-2,2A.75.75,0,1,1,5.22,7l2.5-2.5a.75.75,0,0,1,1.06,0L11.28,7a.75.75,0,0,1,0,1.06A.74.74,0,0,1,10.75,8.25Z"/><path d="M8.25,19.75A.76.76,0,0,1,7.5,19V5A.75.75,0,0,1,9,5V19A.76.76,0,0,1,8.25,19.75Z"/><path d="M17,11.25a.76.76,0,0,1-.75-.75V6.44l-.39.22a.76.76,0,0,1-1-.3.75.75,0,0,1,.3-1L15.79,5A1.19,1.19,0,0,1,17,4.87a1.27,1.27,0,0,1,.74,1.18V10.5A.76.76,0,0,1,17,11.25Z"/><path d="M16.5,17.25A2.25,2.25,0,1,1,18.75,15,2.25,2.25,0,0,1,16.5,17.25Zm0-3a.75.75,0,1,0,.75.75A.76.76,0,0,0,16.5,14.25Z"/><path d="M16,19.25H15.5a.75.75,0,0,1,0-1.5H16a1.29,1.29,0,0,0,1.26-1.19c0-.29,0-.64,0-1.06V15a.75.75,0,0,1,1.5,0v.5c0,.45,0,.82,0,1.14A2.78,2.78,0,0,1,16,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort-up"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M19,16.25H5a.74.74,0,0,1-.69-.46A.75.75,0,0,1,4.47,15l7-7a.75.75,0,0,1,1.06,0l7,7a.75.75,0,0,1,.16.82A.74.74,0,0,1,19,16.25ZM6.81,14.75H17.19L12,9.56Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sort.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sort.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sort.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sort"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M18,10.75H6a.74.74,0,0,1-.69-.46.75.75,0,0,1,.16-.82l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,.16.82A.74.74,0,0,1,18,10.75ZM7.81,9.25h8.38L12,5.06Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M12,20.75a.74.74,0,0,1-.53-.22l-6-6a.75.75,0,0,1-.16-.82A.74.74,0,0,1,6,13.25H18a.74.74,0,0,1,.69.46.75.75,0,0,1-.16.82l-6,6A.74.74,0,0,1,12,20.75Zm-4.19-6L12,18.94l4.19-4.19Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/spinner.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/spinner.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/spinner.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="spinner"><path d="M12,21A9,9,0,1,1,18.18,5.45a.75.75,0,0,1,0,1.06.74.74,0,0,1-1.06,0A7.51,7.51,0,1,0,19.5,12,.75.75,0,0,1,21,12,9,9,0,0,1,12,21Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/star-fill.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/star-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/star-fill.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="star"><path d="M21.12,9.88a.74.74,0,0,0-.6-.51L15.1,8.58,12.67,3.67a.78.78,0,0,0-1.34,0L8.9,8.58l-5.42.79a.74.74,0,0,0-.6.51.75.75,0,0,0,.18.77L7,14.47l-.93,5.4a.76.76,0,0,0,.3.74.75.75,0,0,0,.79.05L12,18.11l4.85,2.55a.73.73,0,0,0,.35.09.79.79,0,0,0,.44-.14.76.76,0,0,0,.3-.74L17,14.47l3.93-3.82A.75.75,0,0,0,21.12,9.88Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/star.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/star.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/star.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="star-o"><path d="M17.2,20.75a.73.73,0,0,1-.35-.09L12,18.11,7.15,20.66a.75.75,0,0,1-.79-.05.76.76,0,0,1-.3-.74L7,14.47,3.06,10.65a.75.75,0,0,1-.18-.77.74.74,0,0,1,.6-.51L8.9,8.58l2.43-4.91a.78.78,0,0,1,1.34,0L15.1,8.58l5.42.79a.74.74,0,0,1,.6.51.75.75,0,0,1-.18.77L17,14.47l.93,5.4a.76.76,0,0,1-.3.74A.79.79,0,0,1,17.2,20.75ZM12,16.52a.85.85,0,0,1,.35.08l3.85,2-.73-4.29a.78.78,0,0,1,.21-.67l3.12-3L14.49,10a.76.76,0,0,1-.56-.41L12,5.69,10.07,9.6a.76.76,0,0,1-.56.41l-4.31.63,3.12,3a.78.78,0,0,1,.21.67L7.8,18.63l3.85-2A.85.85,0,0,1,12,16.52Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/step-backward-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/step-backward-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/step-backward-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="step-backward-alt"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M8,19.5a.76.76,0,0,1-.75-.75v-14a.75.75,0,0,1,1.5,0v14A.76.76,0,0,1,8,19.5Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M16,20a.77.77,0,0,1-.53-.22l-7-7a.75.75,0,0,1,0-1.06l7-7a.75.75,0,0,1,1.28.53v14a.74.74,0,0,1-.46.69A.75.75,0,0,1,16,20Zm-5.94-7.75,5.19,5.19V7.06Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/step-backward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/step-backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/step-backward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="step-backward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M16,19.75a.77.77,0,0,1-.53-.22l-7-7a.75.75,0,0,1,0-1.06l7-7a.75.75,0,0,1,.82-.16.74.74,0,0,1,.46.69V19a.74.74,0,0,1-.46.69A.75.75,0,0,1,16,19.75ZM10.06,12l5.19,5.19V6.81Z"/></g><path d="M8,19.75A.76.76,0,0,1,7.25,19V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,8,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/step-forward-alt.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/step-forward-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/step-forward-alt.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="step-forward-alt"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M16,19.5a.76.76,0,0,1-.75-.75v-14a.75.75,0,0,1,1.5,0v14A.76.76,0,0,1,16,19.5Z"/></g><g id="_Path_2" data-name="&lt;Path&gt;"><path d="M8,20a.75.75,0,0,1-.29-.06.74.74,0,0,1-.46-.69v-14a.74.74,0,0,1,.46-.69.75.75,0,0,1,.82.16l7,7a.75.75,0,0,1,0,1.06l-7,7A.75.75,0,0,1,8,20ZM8.75,7.06V17.44l5.19-5.19Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/step-forward.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/step-forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/step-forward.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="step-forward"><g id="_Path_" data-name="&lt;Path&gt;"><path d="M8,19.75a.75.75,0,0,1-.29-.06A.74.74,0,0,1,7.25,19V5a.74.74,0,0,1,.46-.69.75.75,0,0,1,.82.16l7,7a.75.75,0,0,1,0,1.06l-7,7A.77.77,0,0,1,8,19.75ZM8.75,6.81V17.19L13.94,12Z"/></g><path d="M16,19.75a.76.76,0,0,1-.75-.75V5a.75.75,0,0,1,1.5,0V19A.76.76,0,0,1,16,19.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/stop-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/stop-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/stop-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="stop-circle"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><rect x="8" y="8" width="8" height="8" rx="1.5"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/stop.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/stop.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/stop.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="stop"><path d="M17,19.75H7A2.75,2.75,0,0,1,4.25,17V7A2.75,2.75,0,0,1,7,4.25H17A2.75,2.75,0,0,1,19.75,7V17A2.75,2.75,0,0,1,17,19.75ZM7,5.75A1.25,1.25,0,0,0,5.75,7V17A1.25,1.25,0,0,0,7,18.25H17A1.25,1.25,0,0,0,18.25,17V7A1.25,1.25,0,0,0,17,5.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sun.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sun.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sun.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sun"><path d="M12,17.75A5.75,5.75,0,1,1,17.75,12,5.76,5.76,0,0,1,12,17.75Zm0-10A4.25,4.25,0,1,0,16.25,12,4.26,4.26,0,0,0,12,7.75Z"/><path d="M12,5a.76.76,0,0,1-.75-.75V2.75a.75.75,0,0,1,1.5,0v1.5A.76.76,0,0,1,12,5Z"/><path d="M12,22a.76.76,0,0,1-.75-.75v-1.5a.75.75,0,0,1,1.5,0v1.5A.76.76,0,0,1,12,22Z"/><path d="M21.25,12.75h-1.5a.75.75,0,0,1,0-1.5h1.5a.75.75,0,0,1,0,1.5Z"/><path d="M4.25,12.75H2.75a.75.75,0,0,1,0-1.5h1.5a.75.75,0,0,1,0,1.5Z"/><path d="M6.5,7.25A.74.74,0,0,1,6,7L4.91,6A.75.75,0,1,1,6,4.91L7,6A.75.75,0,0,1,7,7,.74.74,0,0,1,6.5,7.25Z"/><path d="M18.56,19.31a.74.74,0,0,1-.53-.22L17,18A.75.75,0,0,1,18,17L19.09,18a.75.75,0,0,1,0,1.06A.74.74,0,0,1,18.56,19.31Z"/><path d="M17.5,7.25A.74.74,0,0,1,17,7,.75.75,0,0,1,17,6L18,4.91A.75.75,0,1,1,19.09,6L18,7A.74.74,0,0,1,17.5,7.25Z"/><path d="M5.44,19.31a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06L6,17A.75.75,0,0,1,7,18L6,19.09A.74.74,0,0,1,5.44,19.31Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/sync.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/sync.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/sync.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="sync"><path d="M18.43,4.25a.76.76,0,0,0-.75.75V7.43l-.84-.84a7.24,7.24,0,0,0-12,2.78.74.74,0,0,0,.46,1,.73.73,0,0,0,.25,0,.76.76,0,0,0,.71-.51,5.63,5.63,0,0,1,1.37-2.2,5.76,5.76,0,0,1,8.13,0l.84.84H14.19a.75.75,0,0,0,0,1.5h4.24a.74.74,0,0,0,.75-.75V5A.75.75,0,0,0,18.43,4.25Z"/><path d="M18.68,13.68a.76.76,0,0,0-1,.47,5.63,5.63,0,0,1-1.37,2.2,5.76,5.76,0,0,1-8.13,0l-.84-.84H9.81a.75.75,0,0,0,0-1.5H5.57a.74.74,0,0,0-.75.75V19a.75.75,0,0,0,1.5,0V16.57l.84.84a7.24,7.24,0,0,0,12-2.78A.74.74,0,0,0,18.68,13.68Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/table.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/table.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/table.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="table"><path d="M18,4.25H6A2.75,2.75,0,0,0,3.25,7V17A2.75,2.75,0,0,0,6,19.75H18A2.75,2.75,0,0,0,20.75,17V7A2.75,2.75,0,0,0,18,4.25ZM19.25,7v4.25h-6.5V5.75H18A1.25,1.25,0,0,1,19.25,7ZM6,5.75h5.25v5.5H4.75V7A1.25,1.25,0,0,1,6,5.75ZM4.75,17V12.75h6.5v5.5H6A1.25,1.25,0,0,1,4.75,17ZM18,18.25H12.75v-5.5h6.5V17A1.25,1.25,0,0,1,18,18.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/tablet.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/tablet.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/tablet.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="tablet"><path d="M18,3.25H6A1.76,1.76,0,0,0,4.25,5V19A1.76,1.76,0,0,0,6,20.75H18A1.76,1.76,0,0,0,19.75,19V5A1.76,1.76,0,0,0,18,3.25ZM18.25,19a.25.25,0,0,1-.25.25H6A.25.25,0,0,1,5.75,19V5A.25.25,0,0,1,6,4.75H18a.25.25,0,0,1,.25.25Z"/><path d="M12,14.5A1.5,1.5,0,1,0,13.5,16,1.5,1.5,0,0,0,12,14.5ZM12,16v0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/tag.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/tag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/tag.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="tag"><path d="M19.32,10.72,12.84,4.24A.75.75,0,0,0,12.31,4H4.77A.76.76,0,0,0,4,4.77v7.54a.79.79,0,0,0,.22.54l6.48,6.47a2.26,2.26,0,0,0,3.19,0l5.41-5.41h0A2.26,2.26,0,0,0,19.32,10.72Zm-1.06,2.13-5.41,5.41a.77.77,0,0,1-1.07,0L5.52,12V5.52H12l6.26,6.26A.77.77,0,0,1,18.26,12.85Z"/><circle cx="8.5" cy="8.5" r="1.25"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/tags.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/tags.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/tags.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="tags"><path d="M21.07,10.3l-6-6a.75.75,0,0,0-.53-.22H3a.76.76,0,0,0-.75.75v7.88a.75.75,0,0,0,.22.53l6,6a2.31,2.31,0,0,0,1.65.68h0a2.34,2.34,0,0,0,1.64-.68L12,19a1.14,1.14,0,0,0,.15.23,2.33,2.33,0,0,0,3.29,0l5.65-5.66A2.33,2.33,0,0,0,21.07,10.3ZM10.7,18.17a.81.81,0,0,1-1.17,0L3.75,12.4V5.58h6.82l5.78,5.78a.83.83,0,0,1,0,1.17ZM20,12.52l-5.65,5.65a.82.82,0,0,1-1.17,0A.54.54,0,0,0,13,18l4.44-4.45h0a2.33,2.33,0,0,0,0-3.28L12.69,5.58h1.54L20,11.36A.82.82,0,0,1,20,12.52Z"/><circle cx="7" cy="8.5" r="1.25"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/telegram.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/telegram.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/telegram.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="telegram"><path d="M12,4a8,8,0,1,0,8,8A8,8,0,0,0,12,4Zm3.93,5.48-1.31,6.19c-.1.44-.36.54-.73.34l-2-1.48-1,.93a.51.51,0,0,1-.4.2l.14-2,3.7-3.35c.17-.14,0-.22-.24-.08L9.55,13.08l-2-.62c-.43-.13-.44-.43.09-.63l7.71-3C15.73,8.72,16.05,8.94,15.93,9.48Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/th-large.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/th-large.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/th-large.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="th-large"><path d="M9,11.25H6A2.25,2.25,0,0,1,3.75,9V6A2.25,2.25,0,0,1,6,3.75H9A2.25,2.25,0,0,1,11.25,6V9A2.25,2.25,0,0,1,9,11.25Zm-3-6A.76.76,0,0,0,5.25,6V9A.76.76,0,0,0,6,9.75H9A.76.76,0,0,0,9.75,9V6A.76.76,0,0,0,9,5.25Z"/><path d="M9,20.25H6A2.25,2.25,0,0,1,3.75,18V15A2.25,2.25,0,0,1,6,12.75H9A2.25,2.25,0,0,1,11.25,15v3A2.25,2.25,0,0,1,9,20.25Zm-3-6a.76.76,0,0,0-.75.75v3a.76.76,0,0,0,.75.75H9A.76.76,0,0,0,9.75,18V15A.76.76,0,0,0,9,14.25Z"/><path d="M18,11.25H15A2.25,2.25,0,0,1,12.75,9V6A2.25,2.25,0,0,1,15,3.75h3A2.25,2.25,0,0,1,20.25,6V9A2.25,2.25,0,0,1,18,11.25Zm-3-6a.76.76,0,0,0-.75.75V9a.76.76,0,0,0,.75.75h3A.76.76,0,0,0,18.75,9V6A.76.76,0,0,0,18,5.25Z"/><path d="M18,20.25H15A2.25,2.25,0,0,1,12.75,18V15A2.25,2.25,0,0,1,15,12.75h3A2.25,2.25,0,0,1,20.25,15v3A2.25,2.25,0,0,1,18,20.25Zm-3-6a.76.76,0,0,0-.75.75v3a.76.76,0,0,0,.75.75h3a.76.76,0,0,0,.75-.75V15a.76.76,0,0,0-.75-.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/thumbs-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/thumbs-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/thumbs-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="thumbs-down"><path d="M12.09,20.75a1.55,1.55,0,0,1-.67-.14A3.16,3.16,0,0,1,9.49,17.7V15.23h-4a.51.51,0,0,1-.17,0,2.56,2.56,0,0,1-1.58-1,2.29,2.29,0,0,1-.44-1.68L4.4,5.26a2.38,2.38,0,0,1,2.35-2H18.37a2.38,2.38,0,0,1,2.38,2.36v5.64a2.38,2.38,0,0,1-2.38,2.37H16.42l-2.73,6.09A1.77,1.77,0,0,1,12.09,20.75Zm-6.51-7h4.67a.74.74,0,0,1,.74.75V17.7a1.66,1.66,0,0,0,1,1.53.24.24,0,0,0,.31-.13l2.87-6.39v-8H6.75a.87.87,0,0,0-.87.73L4.76,12.74a.72.72,0,0,0,.16.56A1.12,1.12,0,0,0,5.58,13.72Zm11.11-1.6h1.68a.87.87,0,0,0,.88-.87V5.61a.87.87,0,0,0-.88-.86H16.69Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/thumbs-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/thumbs-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/thumbs-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="thumbs-up"><path d="M17.25,20.75H5.63a2.38,2.38,0,0,1-2.38-2.36V12.75a2.38,2.38,0,0,1,2.38-2.37h2l2.73-6.09a1.75,1.75,0,0,1,2.27-.9A3.16,3.16,0,0,1,14.51,6.3V8.77h4a.51.51,0,0,1,.17,0,2.56,2.56,0,0,1,1.58,1,2.3,2.3,0,0,1,.44,1.68L19.6,18.74A2.38,2.38,0,0,1,17.25,20.75Zm-8.43-1.5h8.43a.87.87,0,0,0,.87-.73l1.12-7.26a.72.72,0,0,0-.16-.56,1.12,1.12,0,0,0-.66-.42H13.75A.74.74,0,0,1,13,9.52V6.3a1.66,1.66,0,0,0-1-1.53.24.24,0,0,0-.31.13L8.82,11.29ZM5.63,11.88a.87.87,0,0,0-.88.87v5.64a.87.87,0,0,0,.88.86H7.32V11.88Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/ticket.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/ticket.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/ticket.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="ticket"><path d="M19,18.75H5A1.76,1.76,0,0,1,3.25,17V14.5A.76.76,0,0,1,4,13.75a1.75,1.75,0,0,0,0-3.5.76.76,0,0,1-.75-.75V7A1.76,1.76,0,0,1,5,5.25H19A1.76,1.76,0,0,1,20.75,7V9.5a.76.76,0,0,1-.75.75,1.75,1.75,0,0,0,0,3.5.76.76,0,0,1,.75.75V17A1.76,1.76,0,0,1,19,18.75ZM4.75,15.16V17a.25.25,0,0,0,.25.25H19a.25.25,0,0,0,.25-.25V15.16a3.25,3.25,0,0,1,0-6.32V7A.25.25,0,0,0,19,6.75H5A.25.25,0,0,0,4.75,7V8.84a3.25,3.25,0,0,1,0,6.32Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/times-circle.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/times-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/times-circle.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="times-circle"><path d="M12,21a9,9,0,1,1,9-9A9,9,0,0,1,12,21ZM12,4.5A7.5,7.5,0,1,0,19.5,12,7.5,7.5,0,0,0,12,4.5Z"/><path d="M9,15.75a.74.74,0,0,1-.53-.22.75.75,0,0,1,0-1.06l6-6a.75.75,0,0,1,1.06,1.06l-6,6A.74.74,0,0,1,9,15.75Z"/><path d="M15,15.75a.74.74,0,0,1-.53-.22l-6-6A.75.75,0,0,1,9.53,8.47l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,15,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/times.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/times.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/times.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="times"><path d="M13.06,12l4.42-4.42a.75.75,0,1,0-1.06-1.06L12,10.94,7.58,6.52A.75.75,0,0,0,6.52,7.58L10.94,12,6.52,16.42a.75.75,0,0,0,0,1.06.75.75,0,0,0,1.06,0L12,13.06l4.42,4.42a.75.75,0,0,0,1.06,0,.75.75,0,0,0,0-1.06Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/trash.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/trash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/trash.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="trash"><path d="M20,8.7H4A.75.75,0,1,1,4,7.2H20a.75.75,0,0,1,0,1.5Z"/><path d="M16.44,20.75H7.56A2.4,2.4,0,0,1,5,18.49V8a.75.75,0,0,1,1.5,0V18.49c0,.41.47.76,1,.76h8.88c.56,0,1-.35,1-.76V8A.75.75,0,1,1,19,8V18.49A2.4,2.4,0,0,1,16.44,20.75Zm.12-13A.74.74,0,0,1,15.81,7V5.51c0-.41-.48-.76-1-.76H9.22c-.55,0-1,.35-1,.76V7a.75.75,0,1,1-1.5,0V5.51A2.41,2.41,0,0,1,9.22,3.25h5.56a2.41,2.41,0,0,1,2.53,2.26V7A.75.75,0,0,1,16.56,7.76Z"/><path d="M10.22,17a.76.76,0,0,1-.75-.75V11.72a.75.75,0,0,1,1.5,0v4.52A.75.75,0,0,1,10.22,17Z"/><path d="M13.78,17a.75.75,0,0,1-.75-.75V11.72a.75.75,0,0,1,1.5,0v4.52A.76.76,0,0,1,13.78,17Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/twitter.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/twitter.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/twitter.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="twitter"><path d="M19.83,8c0,.17,0,.35,0,.52A11.41,11.41,0,0,1,8.35,20a11.41,11.41,0,0,1-6.2-1.81c.33,0,.64,0,1,0a8.09,8.09,0,0,0,5-1.73,4,4,0,0,1-3.78-2.8,4.81,4.81,0,0,0,.77.06,4.66,4.66,0,0,0,1.06-.13A4,4,0,0,1,3,9.67v0a4.13,4.13,0,0,0,1.82.51A4.06,4.06,0,0,1,3,6.77a4,4,0,0,1,.54-2A11.47,11.47,0,0,0,11.85,9a4.71,4.71,0,0,1-.1-.92,4,4,0,0,1,7-2.77,7.93,7.93,0,0,0,2.56-1,4,4,0,0,1-1.78,2.22,7.94,7.94,0,0,0,2.33-.62,8.91,8.91,0,0,1-2,2.09Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/undo.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/undo.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/undo.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="undo"><path d="M12,20.75A7.26,7.26,0,0,1,4.75,13.5a.75.75,0,0,1,1.5,0A5.75,5.75,0,1,0,12,7.75H9.5a.75.75,0,0,1,0-1.5H12a7.25,7.25,0,0,1,0,14.5Z"/><path d="M12,10.75a.74.74,0,0,1-.53-.22l-3-3a.75.75,0,0,1,0-1.06l3-3a.75.75,0,1,1,1.06,1.06L10.06,7l2.47,2.47a.75.75,0,0,1,0,1.06A.74.74,0,0,1,12,10.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/unlock.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/unlock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/unlock.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="unlock"><path d="M17,10.25H8.75V8a3.25,3.25,0,0,1,6.5,0,.75.75,0,0,0,1.5,0,4.75,4.75,0,0,0-9.5,0v2.25H7A2.75,2.75,0,0,0,4.25,13v5A2.75,2.75,0,0,0,7,20.75H17A2.75,2.75,0,0,0,19.75,18V13A2.75,2.75,0,0,0,17,10.25ZM18.25,18A1.25,1.25,0,0,1,17,19.25H7A1.25,1.25,0,0,1,5.75,18V13A1.25,1.25,0,0,1,7,11.75H17A1.25,1.25,0,0,1,18.25,13Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/upload.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/upload.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/upload.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="upload"><path d="M18.22,20.75H5.78A2.64,2.64,0,0,1,3.25,18V15a.75.75,0,0,1,1.5,0v3a1.16,1.16,0,0,0,1,1.25H18.22a1.16,1.16,0,0,0,1-1.25V15a.75.75,0,0,1,1.5,0v3A2.64,2.64,0,0,1,18.22,20.75Z"/><path d="M16,8.75a.74.74,0,0,1-.53-.22L12,5.06,8.53,8.53A.75.75,0,0,1,7.47,7.47l4-4a.75.75,0,0,1,1.06,0l4,4a.75.75,0,0,1,0,1.06A.74.74,0,0,1,16,8.75Z"/><path d="M12,15.75a.76.76,0,0,1-.75-.75V4a.75.75,0,0,1,1.5,0V15A.76.76,0,0,1,12,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/user-edit.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/user-edit.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/user-edit.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="user-edit"><path d="M10.56,11.87a3.75,3.75,0,1,1,3.75-3.75A3.76,3.76,0,0,1,10.56,11.87Zm0-6a2.25,2.25,0,1,0,2.25,2.25A2.25,2.25,0,0,0,10.56,5.87Z"/><path d="M3.56,18.87a.75.75,0,0,1-.75-.75c0-4.75,5.43-4.75,7.75-4.75.72,0,1.36,0,1.94.07a.75.75,0,0,1,.69.8.76.76,0,0,1-.81.69c-.54,0-1.14-.06-1.82-.06-5.18,0-6.25,1.3-6.25,3.25A.74.74,0,0,1,3.56,18.87Z"/><path d="M12.67,19.63a.75.75,0,0,1-.53-.22.72.72,0,0,1-.22-.59l.16-1.92a.75.75,0,0,1,.21-.47l5.52-5.52a2.06,2.06,0,0,1,2.8,0,2,2,0,0,1,.58,1.44,1.86,1.86,0,0,1-.53,1.33l-5.52,5.52a.74.74,0,0,1-.46.22l-1.94.18Zm1.94-.93h0Zm-1.06-1.41-.06.76.78-.07,5.33-5.33a.39.39,0,0,0,.09-.27.59.59,0,0,0-.14-.38.57.57,0,0,0-.68,0Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/user-minus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/user-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/user-minus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="user-minus"><path d="M12,12.75A3.75,3.75,0,1,1,15.75,9,3.75,3.75,0,0,1,12,12.75Zm0-6A2.25,2.25,0,1,0,14.25,9,2.25,2.25,0,0,0,12,6.75Z"/><path d="M19,19.75a.76.76,0,0,1-.75-.75c0-1.95-1.06-3.25-6.25-3.25S5.75,17.05,5.75,19a.75.75,0,0,1-1.5,0c0-4.75,5.43-4.75,7.75-4.75s7.75,0,7.75,4.75A.76.76,0,0,1,19,19.75Z"/><path d="M20.75,12.75h-3.5a.75.75,0,0,1,0-1.5h3.5a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/user-plus.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/user-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/user-plus.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="user-plus"><path d="M12,12.75A3.75,3.75,0,1,1,15.75,9,3.75,3.75,0,0,1,12,12.75Zm0-6A2.25,2.25,0,1,0,14.25,9,2.25,2.25,0,0,0,12,6.75Z"/><path d="M19,19.75a.76.76,0,0,1-.75-.75c0-1.95-1.06-3.25-6.25-3.25S5.75,17.05,5.75,19a.75.75,0,0,1-1.5,0c0-4.75,5.43-4.75,7.75-4.75s7.75,0,7.75,4.75A.76.76,0,0,1,19,19.75Z"/><path d="M19,14.5a.76.76,0,0,1-.75-.75v-3.5a.75.75,0,0,1,1.5,0v3.5A.76.76,0,0,1,19,14.5Z"/><path d="M20.75,12.75h-3.5a.75.75,0,0,1,0-1.5h3.5a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/user.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/user.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/user.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="user"><path d="M12,12.25A3.75,3.75,0,1,1,15.75,8.5,3.75,3.75,0,0,1,12,12.25Zm0-6A2.25,2.25,0,1,0,14.25,8.5,2.25,2.25,0,0,0,12,6.25Z"/><path d="M19,19.25a.76.76,0,0,1-.75-.75c0-1.95-1.06-3.25-6.25-3.25s-6.25,1.3-6.25,3.25a.75.75,0,0,1-1.5,0c0-4.75,5.43-4.75,7.75-4.75s7.75,0,7.75,4.75A.76.76,0,0,1,19,19.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/users.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/users.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/users.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="users"><path d="M14,12.25A3.75,3.75,0,1,1,17.75,8.5,3.75,3.75,0,0,1,14,12.25Zm0-6A2.25,2.25,0,1,0,16.25,8.5,2.25,2.25,0,0,0,14,6.25Z"/><path d="M21,19.25a.76.76,0,0,1-.75-.75c0-1.95-1.06-3.25-6.25-3.25s-6.25,1.3-6.25,3.25a.75.75,0,0,1-1.5,0c0-4.75,5.43-4.75,7.75-4.75s7.75,0,7.75,4.75A.76.76,0,0,1,21,19.25Z"/><path d="M8.32,13.06H8a3,3,0,1,1,.58-6,.75.75,0,1,1-.15,1.49,1.46,1.46,0,0,0-1.09.34,1.47,1.47,0,0,0-.54,1,1.49,1.49,0,0,0,1.35,1.64,1.53,1.53,0,0,0,.93-.22.75.75,0,0,1,.79,1.28A3,3,0,0,1,8.32,13.06Z"/><path d="M3,18.5a.76.76,0,0,1-.75-.75c0-2.7.72-4.5,4.25-4.5a.75.75,0,0,1,0,1.5c-2.35,0-2.75.75-2.75,3A.76.76,0,0,1,3,18.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/video.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/video.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/video.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="video"><path d="M13,18.75H6A2.75,2.75,0,0,1,3.25,16V8A2.75,2.75,0,0,1,6,5.25h7A2.75,2.75,0,0,1,15.75,8v8A2.75,2.75,0,0,1,13,18.75Zm-7-12A1.25,1.25,0,0,0,4.75,8v8A1.25,1.25,0,0,0,6,17.25h7A1.25,1.25,0,0,0,14.25,16V8A1.25,1.25,0,0,0,13,6.75Z"/><g id="_Path_" data-name="&lt;Path&gt;"><path d="M20,16.75a.79.79,0,0,1-.39-.11l-5-3a.75.75,0,0,1-.36-.64V11a.75.75,0,0,1,.36-.64l5-3a.74.74,0,0,1,.76,0,.75.75,0,0,1,.38.65v8a.75.75,0,0,1-.38.65A.71.71,0,0,1,20,16.75Zm-4.25-4.17,3.5,2.1V9.32l-3.5,2.1Z"/></g></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/vimeo.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/vimeo.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/vimeo.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="vimeo"><path d="M18.4,4H5.6A1.6,1.6,0,0,0,4,5.6V18.4A1.6,1.6,0,0,0,5.6,20H18.4A1.6,1.6,0,0,0,20,18.4V5.6A1.6,1.6,0,0,0,18.4,4Zm-.94,5.31q-.08,1.69-2.35,4.63c-1.57,2-2.91,3.06-4,3.06-.68,0-1.24-.62-1.71-1.87-.91-3.33-1.3-5.28-2-5.28a3.53,3.53,0,0,0-.91.54l-.54-.7c1.33-1.17,2.6-2.47,3.4-2.54S10.76,7.68,11,9c.74,4.69,1.07,5.4,2.41,3.27a4.63,4.63,0,0,0,.78-1.74c.13-1.19-.92-1.11-1.64-.8Q13.38,6.93,15.78,7q1.78.06,1.68,2.31Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/volume-down.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/volume-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/volume-down.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="volume-down"><path d="M15,19.75a.81.81,0,0,1-.47-.16L9.74,15.75H5A.76.76,0,0,1,4.25,15V9A.76.76,0,0,1,5,8.25H9.74l4.79-3.84A.75.75,0,0,1,15.75,5V19a.76.76,0,0,1-.43.68A.71.71,0,0,1,15,19.75Zm-9.25-5.5H10a.78.78,0,0,1,.47.16l3.78,3V6.56l-3.78,3a.78.78,0,0,1-.47.16H5.75Z"/><path d="M18.11,15.38a.78.78,0,0,1-.45-.15.75.75,0,0,1-.15-1.05,3.6,3.6,0,0,0,0-4.36.75.75,0,1,1,1.2-.9,5.07,5.07,0,0,1,0,6.16A.77.77,0,0,1,18.11,15.38Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/volume-off.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/volume-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/volume-off.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="volume-off"><path d="M17,19.75a.81.81,0,0,1-.47-.16l-4.79-3.84H7A.76.76,0,0,1,6.25,15V9A.76.76,0,0,1,7,8.25h4.74l4.79-3.84A.75.75,0,0,1,17.75,5V19a.77.77,0,0,1-.42.68A.78.78,0,0,1,17,19.75Zm-9.25-5.5H12a.78.78,0,0,1,.47.16l3.78,3V6.56l-3.78,3a.78.78,0,0,1-.47.16H7.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/volume-up.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/volume-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/volume-up.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="volume-up"><path d="M13,19.75a.81.81,0,0,1-.47-.16L7.74,15.75H3A.76.76,0,0,1,2.25,15V9A.76.76,0,0,1,3,8.25H7.74l4.79-3.84A.75.75,0,0,1,13.75,5V19a.76.76,0,0,1-.43.68A.71.71,0,0,1,13,19.75Zm-9.25-5.5H8a.78.78,0,0,1,.47.16l3.78,3V6.56l-3.78,3A.78.78,0,0,1,8,9.75H3.75Z"/><path d="M18.46,18.07a.76.76,0,0,1-.49-.18.74.74,0,0,1-.07-1.06,7.24,7.24,0,0,0,0-9.66.75.75,0,1,1,1.12-1,8.7,8.7,0,0,1,0,11.64A.72.72,0,0,1,18.46,18.07Z"/><path d="M16.11,15.38a.78.78,0,0,1-.45-.15.75.75,0,0,1-.15-1.05,3.6,3.6,0,0,0,0-4.36.75.75,0,0,1,1.2-.9,5.07,5.07,0,0,1,0,6.16A.77.77,0,0,1,16.11,15.38Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/wallet.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/wallet.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/wallet.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="wallet"><path d="M19,7.25h-.25V5A1.76,1.76,0,0,0,17,3.25a.67.67,0,0,0-.24,0l-11.9,4-.11,0-.16,0-.17.06-.14,0-.16.09L4,7.57l-.14.12-.11.1-.12.15a.39.39,0,0,0-.08.1,1.62,1.62,0,0,0-.1.18l-.06.11a1.87,1.87,0,0,0-.07.22.45.45,0,0,1,0,.11,1.87,1.87,0,0,0,0,.34V19A1.76,1.76,0,0,0,5,20.75H19A1.76,1.76,0,0,0,20.75,19V9A1.76,1.76,0,0,0,19,7.25ZM17.08,4.76a.26.26,0,0,1,.17.24V7.25H9.62ZM19.25,19a.25.25,0,0,1-.25.25H5A.25.25,0,0,1,4.75,19V9A.25.25,0,0,1,5,8.75H19a.25.25,0,0,1,.25.25Z"/><circle cx="16.5" cy="14" r="1.25"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/whatsapp.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/whatsapp.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/whatsapp.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="whatsapp"><path d="M17.6,6.32A7.85,7.85,0,0,0,12,4,7.94,7.94,0,0,0,5.12,15.89L4,20l4.2-1.1a7.93,7.93,0,0,0,3.79,1h0a8,8,0,0,0,8-7.93A8,8,0,0,0,17.6,6.32ZM12,18.53a6.58,6.58,0,0,1-3.36-.92l-.24-.15-2.49.66.66-2.43-.16-.25A6.6,6.6,0,0,1,16.66,7.27a6.65,6.65,0,0,1,2,4.66A6.66,6.66,0,0,1,12,18.53Zm3.61-4.94c-.2-.1-1.17-.58-1.35-.64s-.32-.1-.45.1a9,9,0,0,1-.63.77c-.11.14-.23.15-.43,0a5.33,5.33,0,0,1-2.69-2.35c-.21-.35.2-.33.58-1.08a.38.38,0,0,0,0-.35c0-.1-.45-1.08-.61-1.47s-.32-.33-.45-.34H9.19a.71.71,0,0,0-.53.25A2.19,2.19,0,0,0,8,10.17a3.82,3.82,0,0,0,.81,2.05,8.89,8.89,0,0,0,3.39,3,3.85,3.85,0,0,0,2.38.5,2,2,0,0,0,1.33-.94,1.62,1.62,0,0,0,.12-.94C15.94,13.74,15.81,13.69,15.61,13.59Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/wifi.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/wifi.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/wifi.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="wifi"><path d="M17.35,12.79a.72.72,0,0,1-.49-.19,7.24,7.24,0,0,0-9.66,0,.75.75,0,0,1-1.06-.06.76.76,0,0,1,.07-1.06,8.7,8.7,0,0,1,11.64,0,.76.76,0,0,1,.07,1.06A.79.79,0,0,1,17.35,12.79Z"/><path d="M20,10a.76.76,0,0,1-.51-.2,10.87,10.87,0,0,0-15,0,.75.75,0,1,1-1-1.1,12.36,12.36,0,0,1,17,0A.75.75,0,0,1,20,10Z"/><path d="M9.38,15.64a.75.75,0,0,1-.6-.3.74.74,0,0,1,.15-1.05,5.06,5.06,0,0,1,6.15,0,.75.75,0,0,1,.15,1.05.76.76,0,0,1-1.05.15,3.59,3.59,0,0,0-4.35,0A.78.78,0,0,1,9.38,15.64Z"/><path d="M12,18.75a.75.75,0,1,1,0-1.5h0a.75.75,0,0,1,0,1.5Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/window-maximize.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/window-maximize.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/window-maximize.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="window-maximize"><path d="M18,20.75H12a.75.75,0,0,1,0-1.5h6A1.25,1.25,0,0,0,19.25,18V6A1.25,1.25,0,0,0,18,4.75H6A1.25,1.25,0,0,0,4.75,6v6a.75.75,0,0,1-1.5,0V6A2.75,2.75,0,0,1,6,3.25H18A2.75,2.75,0,0,1,20.75,6V18A2.75,2.75,0,0,1,18,20.75Z"/><path d="M16,12.75a.76.76,0,0,1-.75-.75V8.75H12a.75.75,0,0,1,0-1.5h4a.76.76,0,0,1,.75.75v4A.76.76,0,0,1,16,12.75Z"/><path d="M11.5,13.25A.74.74,0,0,1,11,13,.75.75,0,0,1,11,12l4.5-4.5a.75.75,0,0,1,1.06,1.06L12,13A.74.74,0,0,1,11.5,13.25Z"/><path d="M8,20.75H5A1.76,1.76,0,0,1,3.25,19V16A1.76,1.76,0,0,1,5,14.25H8A1.76,1.76,0,0,1,9.75,16v3A1.76,1.76,0,0,1,8,20.75Zm-3-5a.25.25,0,0,0-.25.25v3a.25.25,0,0,0,.25.25H8A.25.25,0,0,0,8.25,19V16A.25.25,0,0,0,8,15.75Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/window-minimize.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/window-minimize.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/window-minimize.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="window-minimize"><path d="M18,3.25H6A2.75,2.75,0,0,0,3.25,6v6a.75.75,0,0,0,1.5,0V6A1.25,1.25,0,0,1,6,4.75H18A1.25,1.25,0,0,1,19.25,6V18A1.25,1.25,0,0,1,18,19.25H12a.75.75,0,0,0,0,1.5h6A2.75,2.75,0,0,0,20.75,18V6A2.75,2.75,0,0,0,18,3.25Z"/><path d="M11.21,13.19a.75.75,0,0,0,.29.06h4a.75.75,0,0,0,0-1.5H13.31l3.22-3.22a.75.75,0,0,0-1.06-1.06l-3.22,3.22V8.5a.75.75,0,0,0-1.5,0v4a.75.75,0,0,0,.06.29A.71.71,0,0,0,11.21,13.19Z"/><path d="M8,14.25H5A1.76,1.76,0,0,0,3.25,16v3A1.76,1.76,0,0,0,5,20.75H8A1.76,1.76,0,0,0,9.75,19V16A1.76,1.76,0,0,0,8,14.25ZM8.25,19a.25.25,0,0,1-.25.25H5A.25.25,0,0,1,4.75,19V16A.25.25,0,0,1,5,15.75H8a.25.25,0,0,1,.25.25Z"/></g></svg>
Index: trip-planner-front/node_modules/primeicons/raw-svg/youtube.svg
===================================================================
--- trip-planner-front/node_modules/primeicons/raw-svg/youtube.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeicons/raw-svg/youtube.svg	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g id="youtube"><path d="M19.67,8.14a2,2,0,0,0-1.42-1.43A48.44,48.44,0,0,0,12,6.38a48.44,48.44,0,0,0-6.25.33A2,2,0,0,0,4.33,8.14,21.27,21.27,0,0,0,4,12a21.42,21.42,0,0,0,.33,3.88,2,2,0,0,0,1.42,1.4,48.44,48.44,0,0,0,6.25.33,48.44,48.44,0,0,0,6.25-.33,2,2,0,0,0,1.42-1.4A21.42,21.42,0,0,0,20,12,21.27,21.27,0,0,0,19.67,8.14Zm-9.31,6.25V9.63L14.55,12l-4.19,2.38Z"/></g></svg>
Index: trip-planner-front/node_modules/primeng/README.md
===================================================================
--- trip-planner-front/node_modules/primeng/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/README.md	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+[![npm version](https://badge.fury.io/js/primeng.svg)](https://badge.fury.io/js/primeng)
+[![npm downloads](https://img.shields.io/npm/dm/primeng.svg)](https://www.npmjs.com/package/primeng)
+[![Build Status](https://travis-ci.org/primefaces/primeng.svg?branch=master)](https://travis-ci.org/primefaces/primeng)
+[![Discord Chat](https://img.shields.io/discord/557940238991753223.svg?color=7289da&label=chat&logo=discord)](https://discord.gg/gzKFYnpmCY)
+
+[![PrimeNG Hero](https://www.primefaces.org/wp-content/uploads/2021/06/primeng-release-12-1.jpg)](https://www.primefaces.org/primeng)
+
+### Website
+
+Visit the [PrimeNG Website](https://www.primefaces.org/primeng/) for general information, demos and documentation.
Index: trip-planner-front/node_modules/primeng/accordion/accordion.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/accordion/accordion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/accordion/accordion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,66 @@
+import { ElementRef, AfterContentInit, OnDestroy, EventEmitter, QueryList, ChangeDetectorRef, TemplateRef } from '@angular/core';
+import { Header, BlockableUI } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare class AccordionTab implements AfterContentInit, OnDestroy {
+    changeDetector: ChangeDetectorRef;
+    header: string;
+    disabled: boolean;
+    cache: boolean;
+    selectedChange: EventEmitter<any>;
+    transitionOptions: string;
+    headerFacet: QueryList<Header>;
+    templates: QueryList<any>;
+    private _selected;
+    get selected(): any;
+    set selected(val: any);
+    contentTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    id: string;
+    loaded: boolean;
+    accordion: Accordion;
+    constructor(accordion: any, changeDetector: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    toggle(event: any): boolean;
+    findTabIndex(): number;
+    get hasHeaderFacet(): boolean;
+    onKeydown(event: KeyboardEvent): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<AccordionTab, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<AccordionTab, "p-accordionTab", never, { "header": "header"; "disabled": "disabled"; "cache": "cache"; "transitionOptions": "transitionOptions"; "selected": "selected"; }, { "selectedChange": "selectedChange"; }, ["headerFacet", "templates"], ["p-header", "*"]>;
+}
+export declare class Accordion implements BlockableUI, AfterContentInit, OnDestroy {
+    el: ElementRef;
+    changeDetector: ChangeDetectorRef;
+    multiple: boolean;
+    onClose: EventEmitter<any>;
+    onOpen: EventEmitter<any>;
+    style: any;
+    styleClass: string;
+    expandIcon: string;
+    collapseIcon: string;
+    activeIndexChange: EventEmitter<any>;
+    tabList: QueryList<AccordionTab>;
+    tabListSubscription: Subscription;
+    private _activeIndex;
+    preventActiveIndexPropagation: boolean;
+    tabs: AccordionTab[];
+    constructor(el: ElementRef, changeDetector: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    initTabs(): any;
+    getBlockableElement(): HTMLElement;
+    get activeIndex(): any;
+    set activeIndex(val: any);
+    updateSelectionState(): void;
+    updateActiveIndex(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Accordion, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Accordion, "p-accordion", never, { "multiple": "multiple"; "style": "style"; "styleClass": "styleClass"; "expandIcon": "expandIcon"; "collapseIcon": "collapseIcon"; "activeIndex": "activeIndex"; }, { "onClose": "onClose"; "onOpen": "onOpen"; "activeIndexChange": "activeIndexChange"; }, ["tabList"], ["*"]>;
+}
+export declare class AccordionModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<AccordionModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<AccordionModule, [typeof Accordion, typeof AccordionTab], [typeof i1.CommonModule], [typeof Accordion, typeof AccordionTab, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<AccordionModule>;
+}
Index: trip-planner-front/node_modules/primeng/accordion/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/accordion/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/accordion/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-accordion.mjs",
+  "es2020": "../fesm2020/primeng-accordion.mjs",
+  "esm2020": "../esm2020/accordion/primeng-accordion.mjs",
+  "fesm2020": "../fesm2020/primeng-accordion.mjs",
+  "fesm2015": "../fesm2015/primeng-accordion.mjs",
+  "typings": "primeng-accordion.d.ts",
+  "sideEffects": false,
+  "name": "primeng/accordion"
+}
Index: trip-planner-front/node_modules/primeng/accordion/primeng-accordion.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/accordion/primeng-accordion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/accordion/primeng-accordion.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/accordion" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/accordion/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/accordion/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/accordion/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './accordion';
Index: trip-planner-front/node_modules/primeng/api/blockableui.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/blockableui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/blockableui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+export interface BlockableUI {
+    getBlockableElement(): HTMLElement;
+}
Index: trip-planner-front/node_modules/primeng/api/confirmaeventtype.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/confirmaeventtype.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/confirmaeventtype.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+export declare enum ConfirmEventType {
+    ACCEPT = 0,
+    REJECT = 1,
+    CANCEL = 2
+}
Index: trip-planner-front/node_modules/primeng/api/confirmation.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/confirmation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/confirmation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,24 @@
+import { EventEmitter } from '@angular/core';
+export interface Confirmation {
+    message?: string;
+    key?: string;
+    icon?: string;
+    header?: string;
+    accept?: Function;
+    reject?: Function;
+    acceptLabel?: string;
+    rejectLabel?: string;
+    acceptIcon?: string;
+    rejectIcon?: string;
+    acceptVisible?: boolean;
+    rejectVisible?: boolean;
+    blockScroll?: boolean;
+    closeOnEscape?: boolean;
+    dismissableMask?: boolean;
+    defaultFocus?: string;
+    acceptButtonStyleClass?: string;
+    rejectButtonStyleClass?: string;
+    target?: EventTarget;
+    acceptEvent?: EventEmitter<any>;
+    rejectEvent?: EventEmitter<any>;
+}
Index: trip-planner-front/node_modules/primeng/api/confirmationservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/confirmationservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/confirmationservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,13 @@
+import { Confirmation } from './confirmation';
+import * as i0 from "@angular/core";
+export declare class ConfirmationService {
+    private requireConfirmationSource;
+    private acceptConfirmationSource;
+    requireConfirmation$: import("rxjs").Observable<Confirmation>;
+    accept: import("rxjs").Observable<Confirmation>;
+    confirm(confirmation: Confirmation): this;
+    close(): this;
+    onAccept(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<ConfirmationService>;
+}
Index: trip-planner-front/node_modules/primeng/api/contextmenuservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/contextmenuservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/contextmenuservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import * as i0 from "@angular/core";
+export declare class ContextMenuService {
+    private activeItemKeyChange;
+    activeItemKeyChange$: import("rxjs").Observable<string>;
+    activeItemKey: string;
+    changeKey(key: any): void;
+    reset(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<ContextMenuService>;
+}
Index: trip-planner-front/node_modules/primeng/api/filtermatchmode.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/filtermatchmode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/filtermatchmode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,22 @@
+export declare class FilterMatchMode {
+    static readonly STARTS_WITH = "startsWith";
+    static readonly CONTAINS = "contains";
+    static readonly NOT_CONTAINS = "notContains";
+    static readonly ENDS_WITH = "endsWith";
+    static readonly EQUALS = "equals";
+    static readonly NOT_EQUALS = "notEquals";
+    static readonly IN = "in";
+    static readonly LESS_THAN = "lt";
+    static readonly LESS_THAN_OR_EQUAL_TO = "lte";
+    static readonly GREATER_THAN = "gt";
+    static readonly GREATER_THAN_OR_EQUAL_TO = "gte";
+    static readonly BETWEEN = "between";
+    static readonly IS = "is";
+    static readonly IS_NOT = "isNot";
+    static readonly BEFORE = "before";
+    static readonly AFTER = "after";
+    static readonly DATE_IS = "dateIs";
+    static readonly DATE_IS_NOT = "dateIsNot";
+    static readonly DATE_BEFORE = "dateBefore";
+    static readonly DATE_AFTER = "dateAfter";
+}
Index: trip-planner-front/node_modules/primeng/api/filtermetadata.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/filtermetadata.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/filtermetadata.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+export interface FilterMetadata {
+    value?: any;
+    matchMode?: string;
+    operator?: string;
+}
Index: trip-planner-front/node_modules/primeng/api/filteroperator.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/filteroperator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/filteroperator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+export declare class FilterOperator {
+    static readonly AND = "and";
+    static readonly OR = "or";
+}
Index: trip-planner-front/node_modules/primeng/api/filterservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/filterservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/filterservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+import * as i0 from "@angular/core";
+export declare class FilterService {
+    filter(value: any[], fields: any[], filterValue: any, filterMatchMode: string, filterLocale?: string): any[];
+    filters: {
+        startsWith: (value: any, filter: any, filterLocale?: any) => boolean;
+        contains: (value: any, filter: any, filterLocale?: any) => boolean;
+        notContains: (value: any, filter: any, filterLocale?: any) => boolean;
+        endsWith: (value: any, filter: any, filterLocale?: any) => boolean;
+        equals: (value: any, filter: any, filterLocale?: any) => boolean;
+        notEquals: (value: any, filter: any, filterLocale?: any) => boolean;
+        in: (value: any, filter: any[]) => boolean;
+        between: (value: any, filter: any[]) => boolean;
+        lt: (value: any, filter: any, filterLocale?: any) => boolean;
+        lte: (value: any, filter: any, filterLocale?: any) => boolean;
+        gt: (value: any, filter: any, filterLocale?: any) => boolean;
+        gte: (value: any, filter: any, filterLocale?: any) => boolean;
+        is: (value: any, filter: any, filterLocale?: any) => boolean;
+        isNot: (value: any, filter: any, filterLocale?: any) => boolean;
+        before: (value: any, filter: any, filterLocale?: any) => boolean;
+        after: (value: any, filter: any, filterLocale?: any) => boolean;
+        dateIs: (value: any, filter: any) => boolean;
+        dateIsNot: (value: any, filter: any) => boolean;
+        dateBefore: (value: any, filter: any) => boolean;
+        dateAfter: (value: any, filter: any) => boolean;
+    };
+    register(rule: string, fn: Function): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<FilterService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<FilterService>;
+}
Index: trip-planner-front/node_modules/primeng/api/lazyloadevent.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/lazyloadevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/lazyloadevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,13 @@
+import { SortMeta } from './sortmeta';
+import { FilterMetadata } from './filtermetadata';
+export interface LazyLoadEvent {
+    first?: number;
+    rows?: number;
+    sortField?: string;
+    sortOrder?: number;
+    multiSortMeta?: SortMeta[];
+    filters?: {
+        [s: string]: FilterMetadata;
+    };
+    globalFilter?: any;
+}
Index: trip-planner-front/node_modules/primeng/api/megamenuitem.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/megamenuitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/megamenuitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,35 @@
+import { QueryParamsHandling } from '@angular/router';
+import { MenuItem } from './menuitem';
+export interface MegaMenuItem {
+    label?: string;
+    icon?: string;
+    command?: (event?: any) => void;
+    url?: string;
+    items?: MenuItem[][];
+    expanded?: boolean;
+    disabled?: boolean;
+    visible?: boolean;
+    target?: string;
+    routerLinkActiveOptions?: any;
+    separator?: boolean;
+    badge?: string;
+    badgeStyleClass?: string;
+    style?: any;
+    styleClass?: string;
+    title?: string;
+    id?: string;
+    automationId?: any;
+    tabindex?: string;
+    routerLink?: any;
+    queryParams?: {
+        [k: string]: any;
+    };
+    fragment?: string;
+    queryParamsHandling?: QueryParamsHandling;
+    preserveFragment?: boolean;
+    skipLocationChange?: boolean;
+    replaceUrl?: boolean;
+    state?: {
+        [k: string]: any;
+    };
+}
Index: trip-planner-front/node_modules/primeng/api/menuitem.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/menuitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/menuitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,53 @@
+import { QueryParamsHandling } from '@angular/router';
+export interface MenuItem {
+    label?: string;
+    icon?: string;
+    command?: (event?: any) => void;
+    url?: string;
+    items?: MenuItem[];
+    expanded?: boolean;
+    disabled?: boolean;
+    visible?: boolean;
+    target?: string;
+    escape?: boolean;
+    routerLinkActiveOptions?: any;
+    separator?: boolean;
+    badge?: string;
+    tooltip?: string;
+    tooltipPosition?: string;
+    badgeStyleClass?: string;
+    style?: any;
+    styleClass?: string;
+    title?: string;
+    id?: string;
+    automationId?: any;
+    tabindex?: string;
+    routerLink?: any;
+    queryParams?: {
+        [k: string]: any;
+    };
+    fragment?: string;
+    queryParamsHandling?: QueryParamsHandling;
+    preserveFragment?: boolean;
+    skipLocationChange?: boolean;
+    replaceUrl?: boolean;
+    state?: {
+        [k: string]: any;
+    };
+    tooltipOptions?: {
+        tooltipLabel?: string;
+        tooltipPosition?: string;
+        tooltipEvent?: string;
+        appendTo?: any;
+        positionStyle?: string;
+        tooltipStyleClass?: string;
+        tooltipZIndex?: string;
+        escape?: boolean;
+        disabled?: boolean;
+        positionTop?: number;
+        positionLeft?: number;
+        showDelay?: number;
+        hideDelay?: number;
+        life?: number;
+    };
+}
Index: trip-planner-front/node_modules/primeng/api/message.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,14 @@
+export interface Message {
+    severity?: string;
+    summary?: string;
+    detail?: string;
+    id?: any;
+    key?: string;
+    life?: number;
+    sticky?: boolean;
+    closable?: boolean;
+    data?: any;
+    icon?: string;
+    contentStyleClass?: string;
+    styleClass?: string;
+}
Index: trip-planner-front/node_modules/primeng/api/messageservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/messageservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/messageservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,13 @@
+import { Message } from './message';
+import * as i0 from "@angular/core";
+export declare class MessageService {
+    private messageSource;
+    private clearSource;
+    messageObserver: import("rxjs").Observable<Message | Message[]>;
+    clearObserver: import("rxjs").Observable<string>;
+    add(message: Message): void;
+    addAll(messages: Message[]): void;
+    clear(key?: string): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MessageService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<MessageService>;
+}
Index: trip-planner-front/node_modules/primeng/api/overlayservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/overlayservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/overlayservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,9 @@
+import { Message } from './message';
+import * as i0 from "@angular/core";
+export declare class OverlayService {
+    private clickSource;
+    clickObservable: import("rxjs").Observable<Message | Message[]>;
+    add(event: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<OverlayService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<OverlayService>;
+}
Index: trip-planner-front/node_modules/primeng/api/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/api/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-api.mjs",
+  "es2020": "../fesm2020/primeng-api.mjs",
+  "esm2020": "../esm2020/api/primeng-api.mjs",
+  "fesm2020": "../fesm2020/primeng-api.mjs",
+  "fesm2015": "../fesm2015/primeng-api.mjs",
+  "typings": "primeng-api.d.ts",
+  "sideEffects": false,
+  "name": "primeng/api"
+}
Index: trip-planner-front/node_modules/primeng/api/primeicons.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/primeicons.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/primeicons.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,238 @@
+export declare class PrimeIcons {
+    static readonly ALIGN_CENTER = "pi pi-align-center";
+    static readonly ALIGN_JUSTIFY = "pi pi-align-justify";
+    static readonly ALIGN_LEFT = "pi pi-align-left";
+    static readonly ALIGN_RIGHT = "pi pi-align-right";
+    static readonly AMAZON = "pi pi-amazon";
+    static readonly ANDROID = "pi pi-android";
+    static readonly ANGLE_DOUBLE_DOWN = "pi pi-angle-double-down";
+    static readonly ANGLE_DOUBLE_LEFT = "pi pi-angle-double-left";
+    static readonly ANGLE_DOUBLE_RIGHT = "pi pi-angle-double-right";
+    static readonly ANGLE_DOUBLE_UP = "pi pi-angle-double-up";
+    static readonly ANGLE_DOWN = "pi pi-angle-down";
+    static readonly ANGLE_LEFT = "pi pi-angle-left";
+    static readonly ANGLE_RIGHT = "pi pi-angle-right";
+    static readonly ANGLE_UP = "pi pi-angle-up";
+    static readonly APPLE = "pi pi-apple";
+    static readonly ARROW_CIRCLE_DOWN = "pi pi-arrow-circle-down";
+    static readonly ARROW_CIRCLE_LEFT = "pi pi-arrow-circle-left";
+    static readonly ARROW_CIRCLE_RIGHT = "pi pi-arrow-circle-right";
+    static readonly ARROW_CIRCLE_UP = "pi pi-arrow-circle-up";
+    static readonly ARROW_DOWN = "pi pi-arrow-down";
+    static readonly ARROW_DOWN_LEFT = "pi pi-arrow-down-left";
+    static readonly ARROW_DOWN_RIGHT = "pi pi-arrow-down-right";
+    static readonly ARROW_LEFT = "pi pi-arrow-left";
+    static readonly ARROW_RIGHT = "pi pi-arrow-right";
+    static readonly ARROW_UP = "pi pi-arrow-up";
+    static readonly ARROW_UP_LEFT = "pi pi-arrow-up-left";
+    static readonly ARROW_UP_RIGHT = "pi pi-arrow-up-right";
+    static readonly ARROW_H = "pi pi-arrow-h";
+    static readonly ARROW_V = "pi pi-arrow-v";
+    static readonly AT = "pi pi-at";
+    static readonly BACKWARD = "pi pi-backward";
+    static readonly BAN = "pi pi-ban";
+    static readonly BARS = "pi pi-bars";
+    static readonly BELL = "pi pi-bell";
+    static readonly BOLT = "pi pi-bolt";
+    static readonly BOOK = "pi pi-book";
+    static readonly BOOKMARK = "pi pi-bookmark";
+    static readonly BOOKMARK_FILL = "pi pi-bookmark-fill";
+    static readonly BOX = "pi pi-box";
+    static readonly BRIEFCASE = "pi pi-briefcase";
+    static readonly BUILDING = "pi pi-building";
+    static readonly CALENDAR = "pi pi-calendar";
+    static readonly CALENDAR_MINUS = "pi pi-calendar-minus";
+    static readonly CALENDAR_PLUS = "pi pi-calendar-plus";
+    static readonly CALENDAR_TIMES = "pi pi-calendar-times";
+    static readonly CAMERA = "pi pi-camera";
+    static readonly CAR = "pi pi-car";
+    static readonly CARET_DOWN = "pi pi-caret-down";
+    static readonly CARET_LEFT = "pi pi-caret-left";
+    static readonly CARET_RIGHT = "pi pi-caret-right";
+    static readonly CARET_UP = "pi pi-caret-up";
+    static readonly CHART_BAR = "pi pi-chart-bar";
+    static readonly CHART_LINE = "pi pi-chart-line";
+    static readonly CHART_PIE = "pi pi-chart-pie";
+    static readonly CHECK = "pi pi-check";
+    static readonly CHECK_CIRCLE = "pi pi-check-circle";
+    static readonly CHECK_SQUARE = "pi pi-check-square";
+    static readonly CHEVRON_CIRCLE_DOWN = "pi pi-chevron-circle-down";
+    static readonly CHEVRON_CIRCLE_LEFT = "pi pi-chevron-circle-left";
+    static readonly CHEVRON_CIRCLE_RIGHT = "pi pi-chevron-circle-right";
+    static readonly CHEVRON_CIRCLE_UP = "pi pi-chevron-circle-up";
+    static readonly CHEVRON_DOWN = "pi pi-chevron-down";
+    static readonly CHEVRON_LEFT = "pi pi-chevron-left";
+    static readonly CHEVRON_RIGHT = "pi pi-chevron-right";
+    static readonly CHEVRON_UP = "pi pi-chevron-up";
+    static readonly CIRCLE = "pi pi-circle";
+    static readonly CIRCLE_FILL = "pi pi-circle-fill";
+    static readonly CLOCK = "pi pi-clock";
+    static readonly CLONE = "pi pi-clone";
+    static readonly CLOUD = "pi pi-cloud";
+    static readonly CLOUD_DOWNLOAD = "pi pi-cloud-download";
+    static readonly CLOUD_UPLOAD = "pi pi-cloud-upload";
+    static readonly CODE = "pi pi-code";
+    static readonly COG = "pi pi-cog";
+    static readonly COMMENT = "pi pi-comment";
+    static readonly COMMENTS = "pi pi-comments";
+    static readonly COMPASS = "pi pi-compass";
+    static readonly COPY = "pi pi-copy";
+    static readonly CREDIT_CARD = "pi pi-credit-card";
+    static readonly DATABASE = "pi pi-database";
+    static readonly DESKTOP = "pi pi-desktop";
+    static readonly DIRECTIONS = "pi pi-directions";
+    static readonly DIRECTIONS_ALT = "pi pi-directions-alt";
+    static readonly DISCORD = "pi pi-discord";
+    static readonly DOLLAR = "pi pi-dollar";
+    static readonly DOWNLOAD = "pi pi-download";
+    static readonly EJECT = "pi pi-eject";
+    static readonly ELLIPSIS_H = "pi pi-ellipsis-h";
+    static readonly ELLIPSIS_V = "pi pi-ellipsis-v";
+    static readonly ENVELOPE = "pi pi-envelope";
+    static readonly EURO = "pi pi-euro";
+    static readonly EXCLAMATION_CIRCLE = "pi pi-exclamation-circle";
+    static readonly EXCLAMATION_TRIANGLE = "pi pi-exclamation-triangle";
+    static readonly EXTERNAL_LINK = "pi pi-external-link";
+    static readonly EYE = "pi pi-eye";
+    static readonly EYE_SLASH = "pi pi-eye-slash";
+    static readonly FACEBOOK = "pi pi-facebook";
+    static readonly FAST_BACKWARD = "pi pi-fast-backward";
+    static readonly FAST_FORWARD = "pi pi-fast-forward";
+    static readonly FILE = "pi pi-file";
+    static readonly FILE_EXCEL = "pi pi-file-excel";
+    static readonly FILE_PDF = "pi pi-file-pdf";
+    static readonly FILTER = "pi pi-filter";
+    static readonly FILTER_FILL = "pi pi-filter-fill";
+    static readonly FILTER_SLASH = "pi pi-filter-slash";
+    static readonly FLAG = "pi pi-flag";
+    static readonly FLAG_FILL = "pi pi-flag-fill";
+    static readonly FOLDER = "pi pi-folder";
+    static readonly FOLDER_OPEN = "pi pi-folder-open";
+    static readonly FORWARD = "pi pi-forward";
+    static readonly GITHUB = "pi pi-github";
+    static readonly GLOBE = "pi pi-globe";
+    static readonly GOOGLE = "pi pi-google";
+    static readonly HASHTAG = "pi pi-hashtag";
+    static readonly HEART = "pi pi-heart";
+    static readonly HEART_FILL = "pi pi-heart-fill";
+    static readonly HISTORY = "pi pi-history";
+    static readonly HOME = "pi pi-home";
+    static readonly ID_CARD = "pi pi-id-card";
+    static readonly IMAGE = "pi pi-image";
+    static readonly IMAGES = "pi pi-images";
+    static readonly INBOX = "pi pi-inbox";
+    static readonly INFO = "pi pi-info";
+    static readonly INFO_CIRCLE = "pi pi-info-circle";
+    static readonly INSTAGRAM = "pi pi-instagram";
+    static readonly KEY = "pi pi-key";
+    static readonly LINK = "pi pi-link";
+    static readonly LINKEDIN = "pi pi-linkedin";
+    static readonly LIST = "pi pi-list";
+    static readonly LOCK = "pi pi-lock";
+    static readonly LOCK_OPEN = "pi pi-lock-open";
+    static readonly MAP = "pi pi-map";
+    static readonly MAP_MARKER = "pi pi-map-marker";
+    static readonly MICROSOFT = "pi pi-microsoft";
+    static readonly MINUS = "pi pi-minus";
+    static readonly MINUS_CIRCLE = "pi pi-minus-circle";
+    static readonly MOBILE = "pi pi-mobile";
+    static readonly MONEY_BILL = "pi pi-money-bill";
+    static readonly MOON = "pi pi-moon";
+    static readonly PALETTE = "pi pi-palette";
+    static readonly PAPERCLIP = "pi pi-paperclip";
+    static readonly PAUSE = "pi pi-pause";
+    static readonly PAYPAL = "pi pi-paypal";
+    static readonly PENCIL = "pi pi-pencil";
+    static readonly PERCENTAGE = "pi pi-percentage";
+    static readonly PHONE = "pi pi-phone";
+    static readonly PLAY = "pi pi-play";
+    static readonly PLUS = "pi pi-plus";
+    static readonly PLUS_CIRCLE = "pi pi-plus-circle";
+    static readonly POUND = "pi pi-pound";
+    static readonly POWER_OFF = "pi pi-power-off";
+    static readonly PRIME = "pi pi-prime";
+    static readonly PRINT = "pi pi-print";
+    static readonly QRCODE = "pi pi-qrcode";
+    static readonly QUESTION = "pi pi-question";
+    static readonly QUESTION_CIRCLE = "pi pi-question-circle";
+    static readonly REDDIT = "pi pi-reddit";
+    static readonly REFRESH = "pi pi-refresh";
+    static readonly REPLAY = "pi pi-replay";
+    static readonly REPLY = "pi pi-reply";
+    static readonly SAVE = "pi pi-save";
+    static readonly SEARCH = "pi pi-search";
+    static readonly SEARCH_MINUS = "pi pi-search-minus";
+    static readonly SEARCH_PLUS = "pi pi-search-plus";
+    static readonly SEND = "pi pi-send";
+    static readonly SERVER = "pi pi-server";
+    static readonly SHARE_ALT = "pi pi-share-alt";
+    static readonly SHIELD = "pi pi-shield";
+    static readonly SHOPPING_BAG = "pi pi-shopping-bag";
+    static readonly SHOPPING_CART = "pi pi-shopping-cart";
+    static readonly SIGN_IN = "pi pi-sign-in";
+    static readonly SIGN_OUT = "pi pi-sign-out";
+    static readonly SITEMAP = "pi pi-sitemap";
+    static readonly SLACK = "pi pi-slack";
+    static readonly SLIDERS_H = "pi pi-sliders-h";
+    static readonly SLIDERS_V = "pi pi-sliders-v";
+    static readonly SORT = "pi pi-sort";
+    static readonly SORT_ALPHA_DOWN = "pi pi-sort-alpha-down";
+    static readonly SORT_ALPHA_ALT_DOWN = "pi pi-sort-alpha-alt-down";
+    static readonly SORT_ALPHA_UP = "pi pi-sort-alpha-up";
+    static readonly SORT_ALPHA_ALT_UP = "pi pi-sort-alpha-alt-up";
+    static readonly SORT_ALT = "pi pi-sort-alt";
+    static readonly SORT_ALT_SLASH = "pi pi-sort-slash";
+    static readonly SORT_AMOUNT_DOWN = "pi pi-sort-amount-down";
+    static readonly SORT_AMOUNT_DOWN_ALT = "pi pi-sort-amount-down-alt";
+    static readonly SORT_AMOUNT_UP = "pi pi-sort-amount-up";
+    static readonly SORT_AMOUNT_UP_ALT = "pi pi-sort-amount-up-alt";
+    static readonly SORT_DOWN = "pi pi-sort-down";
+    static readonly SORT_NUMERIC_DOWN = "pi pi-sort-numeric-down";
+    static readonly SORT_NUMERIC_ALT_DOWN = "pi pi-sort-numeric-alt-down";
+    static readonly SORT_NUMERIC_UP = "pi pi-sort-numeric-up";
+    static readonly SORT_NUMERIC_ALT_UP = "pi pi-sort-numeric-alt-up";
+    static readonly SORT_UP = "pi pi-sort-up";
+    static readonly SPINNER = "pi pi-spinner";
+    static readonly STAR = "pi pi-star";
+    static readonly STAR_FILL = "pi pi-star-fill";
+    static readonly STEP_BACKWARD = "pi pi-step-backward";
+    static readonly STEP_BACKWARD_ALT = "pi pi-step-backward-alt";
+    static readonly STEP_FORWARD = "pi pi-step-forward";
+    static readonly STEP_FORWARD_ALT = "pi pi-step-forward-alt";
+    static readonly STOP = "pi pi-stop";
+    static readonly STOP_CIRCLE = "pi pi-stop-circle";
+    static readonly SUN = "pi pi-sun";
+    static readonly SYNC = "pi pi-sync";
+    static readonly TABLE = "pi pi-table";
+    static readonly TABLET = "pi pi-tablet";
+    static readonly TAG = "pi pi-tag";
+    static readonly TAGS = "pi pi-tags";
+    static readonly TELEGRAM = "pi pi-telegram";
+    static readonly TH_LARGE = "pi pi-th-large";
+    static readonly THUMBS_DOWN = "pi pi-thumbs-down";
+    static readonly THUMBS_UP = "pi pi-thumbs-up";
+    static readonly TICKET = "pi pi-ticket";
+    static readonly TIMES = "pi pi-times";
+    static readonly TIMES_CIRCLE = "pi pi-times-circle";
+    static readonly TRASH = "pi pi-trash";
+    static readonly TWITTER = "pi pi-twitter";
+    static readonly UNDO = "pi pi-undo";
+    static readonly UNLOCK = "pi pi-unlock";
+    static readonly UPLOAD = "pi pi-upload";
+    static readonly USER = "pi pi-user";
+    static readonly USER_EDIT = "pi pi-user-edit";
+    static readonly USER_MINUS = "pi pi-user-minus";
+    static readonly USER_PLUS = "pi pi-user-plus";
+    static readonly USERS = "pi pi-users";
+    static readonly VIDEO = "pi pi-video";
+    static readonly VIMEO = "pi pi-vimeo";
+    static readonly VOLUME_DOWN = "pi pi-volume-down";
+    static readonly VOLUME_OFF = "pi pi-volume-off";
+    static readonly VOLUME_UP = "pi pi-volume-up";
+    static readonly WALLET = "pi pi-wallet";
+    static readonly WHATSAPP = "pi pi-whatsapp";
+    static readonly WIFI = "pi pi-wifi";
+    static readonly WINDOW_MAXIMIZE = "pi pi-window-maximize";
+    static readonly WINDOW_MINIMIZE = "pi pi-window-minimize";
+    static readonly YOUTUBE = "pi pi-youtube";
+}
Index: trip-planner-front/node_modules/primeng/api/primeng-api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/primeng-api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/primeng-api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/api" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/api/primengconfig.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/primengconfig.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/primengconfig.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,23 @@
+import { Translation } from './translation';
+import * as i0 from "@angular/core";
+export declare class PrimeNGConfig {
+    ripple: boolean;
+    filterMatchModeOptions: {
+        text: string[];
+        numeric: string[];
+        date: string[];
+    };
+    private translation;
+    zIndex: {
+        modal: number;
+        overlay: number;
+        menu: number;
+        tooltip: number;
+    };
+    private translationSource;
+    translationObserver: import("rxjs").Observable<any>;
+    getTranslation(key: string): any;
+    setTranslation(value: Translation): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PrimeNGConfig, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<PrimeNGConfig>;
+}
Index: trip-planner-front/node_modules/primeng/api/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,28 @@
+export * from './primengconfig';
+export * from './translation';
+export * from './translationkeys';
+export * from './blockableui';
+export * from './confirmation';
+export * from './confirmaeventtype';
+export * from './confirmationservice';
+export * from './filtermetadata';
+export * from './filterservice';
+export * from './contextmenuservice';
+export * from './lazyloadevent';
+export * from './megamenuitem';
+export * from './menuitem';
+export * from './message';
+export * from './messageservice';
+export * from './overlayservice';
+export * from './primeicons';
+export * from './filtermatchmode';
+export * from './filteroperator';
+export * from './selectitem';
+export * from './selectitemgroup';
+export * from './shared';
+export * from './sortevent';
+export * from './sortmeta';
+export * from './tablestate';
+export * from './treedragdropservice';
+export * from './treenode';
+export * from './treenodedragevent';
Index: trip-planner-front/node_modules/primeng/api/selectitem.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/selectitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/selectitem.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+export interface SelectItem<T = any> {
+    label?: string;
+    value: T;
+    styleClass?: string;
+    icon?: string;
+    title?: string;
+    disabled?: boolean;
+}
Index: trip-planner-front/node_modules/primeng/api/selectitemgroup.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/selectitemgroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/selectitemgroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6 @@
+import { SelectItem } from './selectitem';
+export interface SelectItemGroup {
+    label: string;
+    value?: any;
+    items: SelectItem[];
+}
Index: trip-planner-front/node_modules/primeng/api/shared.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/shared.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/shared.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,25 @@
+import { TemplateRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Header {
+    static ɵfac: i0.ɵɵFactoryDeclaration<Header, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Header, "p-header", never, {}, {}, never, ["*"]>;
+}
+export declare class Footer {
+    static ɵfac: i0.ɵɵFactoryDeclaration<Footer, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Footer, "p-footer", never, {}, {}, never, ["*"]>;
+}
+export declare class PrimeTemplate {
+    template: TemplateRef<any>;
+    type: string;
+    name: string;
+    constructor(template: TemplateRef<any>);
+    getType(): string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PrimeTemplate, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<PrimeTemplate, "[pTemplate]", never, { "type": "type"; "name": "pTemplate"; }, {}, never>;
+}
+export declare class SharedModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<SharedModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<SharedModule, [typeof Header, typeof Footer, typeof PrimeTemplate], [typeof i1.CommonModule], [typeof Header, typeof Footer, typeof PrimeTemplate]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<SharedModule>;
+}
Index: trip-planner-front/node_modules/primeng/api/sortevent.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/sortevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/sortevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+import { SortMeta } from './sortmeta';
+export interface SortEvent {
+    data?: any[];
+    mode?: string;
+    field?: string;
+    order?: number;
+    multiSortMeta?: SortMeta[];
+}
Index: trip-planner-front/node_modules/primeng/api/sortmeta.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/sortmeta.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/sortmeta.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+export interface SortMeta {
+    field: string;
+    order: number;
+}
Index: trip-planner-front/node_modules/primeng/api/tablestate.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/tablestate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/tablestate.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,20 @@
+import { SortMeta } from './sortmeta';
+import { FilterMetadata } from './filtermetadata';
+export interface TableState {
+    first?: number;
+    rows?: number;
+    sortField?: string;
+    sortOrder?: number;
+    multiSortMeta?: SortMeta[];
+    filters?: {
+        [s: string]: FilterMetadata | FilterMetadata[];
+    };
+    columnWidths?: string;
+    tableWidth?: string;
+    wrapperWidth?: string;
+    selection?: any;
+    columnOrder?: string[];
+    expandedRowKeys?: {
+        [s: string]: boolean;
+    };
+}
Index: trip-planner-front/node_modules/primeng/api/translation.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/translation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/translation.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,46 @@
+export interface Translation {
+    startsWith?: string;
+    contains?: string;
+    notContains?: string;
+    endsWith?: string;
+    equals?: string;
+    notEquals?: string;
+    noFilter?: string;
+    lt?: string;
+    lte?: string;
+    gt?: string;
+    gte?: string;
+    is?: string;
+    isNot?: string;
+    before?: string;
+    after?: string;
+    dateIs?: string;
+    dateIsNot?: string;
+    dateBefore?: string;
+    dateAfter?: string;
+    clear?: string;
+    apply?: string;
+    matchAll?: string;
+    matchAny?: string;
+    addRule?: string;
+    removeRule?: string;
+    accept?: string;
+    reject?: string;
+    choose?: string;
+    upload?: string;
+    cancel?: string;
+    dayNames?: string[];
+    dayNamesShort?: string[];
+    dayNamesMin?: string[];
+    monthNames?: string[];
+    monthNamesShort?: string[];
+    dateFormat?: string;
+    today?: string;
+    weekHeader?: string;
+    weak?: string;
+    medium?: string;
+    strong?: string;
+    passwordPrompt?: string;
+    emptyMessage?: string;
+    emptyFilterMessage?: string;
+}
Index: trip-planner-front/node_modules/primeng/api/translationkeys.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/translationkeys.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/translationkeys.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,41 @@
+export declare class TranslationKeys {
+    static readonly STARTS_WITH = "startsWith";
+    static readonly CONTAINS = "contains";
+    static readonly NOT_CONTAINS = "notContains";
+    static readonly ENDS_WITH = "endsWith";
+    static readonly EQUALS = "equals";
+    static readonly NOT_EQUALS = "notEquals";
+    static readonly NO_FILTER = "noFilter";
+    static readonly LT = "lt";
+    static readonly LTE = "lte";
+    static readonly GT = "gt";
+    static readonly GTE = "gte";
+    static readonly IS = "is";
+    static readonly IS_NOT = "isNot";
+    static readonly BEFORE = "before";
+    static readonly AFTER = "after";
+    static readonly CLEAR = "clear";
+    static readonly APPLY = "apply";
+    static readonly MATCH_ALL = "matchAll";
+    static readonly MATCH_ANY = "matchAny";
+    static readonly ADD_RULE = "addRule";
+    static readonly REMOVE_RULE = "removeRule";
+    static readonly ACCEPT = "accept";
+    static readonly REJECT = "reject";
+    static readonly CHOOSE = "choose";
+    static readonly UPLOAD = "upload";
+    static readonly CANCEL = "cancel";
+    static readonly DAY_NAMES = "dayNames";
+    static readonly DAY_NAMES_SHORT = "dayNamesShort";
+    static readonly DAY_NAMES_MIN = "dayNamesMin";
+    static readonly MONTH_NAMES = "monthNames";
+    static readonly MONTH_NAMES_SHORT = "monthNamesShort";
+    static readonly TODAY = "today";
+    static readonly WEEK_HEADER = "weekHeader";
+    static readonly WEAK = "weak";
+    static readonly MEDIUM = "medium";
+    static readonly STRONG = "strong";
+    static readonly PASSWORD_PROMPT = "passwordPrompt";
+    static readonly EMPTY_MESSAGE = "emptyMessage";
+    static readonly EMPTY_FILTER_MESSAGE = "emptyFilterMessage";
+}
Index: trip-planner-front/node_modules/primeng/api/treedragdropservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/treedragdropservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/treedragdropservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+import { TreeNodeDragEvent } from './treenodedragevent';
+import * as i0 from "@angular/core";
+export declare class TreeDragDropService {
+    private dragStartSource;
+    private dragStopSource;
+    dragStart$: import("rxjs").Observable<TreeNodeDragEvent>;
+    dragStop$: import("rxjs").Observable<TreeNodeDragEvent>;
+    startDrag(event: TreeNodeDragEvent): void;
+    stopDrag(event: TreeNodeDragEvent): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<TreeDragDropService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<TreeDragDropService>;
+}
Index: trip-planner-front/node_modules/primeng/api/treenode.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/treenode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/treenode.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,18 @@
+export interface TreeNode<T = any> {
+    label?: string;
+    data?: T;
+    icon?: string;
+    expandedIcon?: any;
+    collapsedIcon?: any;
+    children?: TreeNode<T>[];
+    leaf?: boolean;
+    expanded?: boolean;
+    type?: string;
+    parent?: TreeNode<T>;
+    partialSelected?: boolean;
+    styleClass?: string;
+    draggable?: boolean;
+    droppable?: boolean;
+    selectable?: boolean;
+    key?: string;
+}
Index: trip-planner-front/node_modules/primeng/api/treenodedragevent.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/api/treenodedragevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/api/treenodedragevent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+import { TreeNode } from './treenode';
+export interface TreeNodeDragEvent {
+    tree?: any;
+    node?: TreeNode;
+    subNodes?: TreeNode[];
+    index?: number;
+    scope?: any;
+}
Index: trip-planner-front/node_modules/primeng/autocomplete/autocomplete.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/autocomplete/autocomplete.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/autocomplete/autocomplete.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,174 @@
+import { ElementRef, AfterViewChecked, AfterContentInit, OnDestroy, EventEmitter, QueryList, TemplateRef, Renderer2, ChangeDetectorRef, IterableDiffers } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { PrimeNGConfig, OverlayService } from 'primeng/api';
+import { ControlValueAccessor } from '@angular/forms';
+import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+import * as i3 from "primeng/button";
+import * as i4 from "primeng/api";
+import * as i5 from "primeng/ripple";
+import * as i6 from "@angular/cdk/scrolling";
+export declare const AUTOCOMPLETE_VALUE_ACCESSOR: any;
+export declare class AutoComplete implements AfterViewChecked, AfterContentInit, OnDestroy, ControlValueAccessor {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    differs: IterableDiffers;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    minLength: number;
+    delay: number;
+    style: any;
+    panelStyle: any;
+    styleClass: string;
+    panelStyleClass: string;
+    inputStyle: any;
+    inputId: string;
+    inputStyleClass: string;
+    placeholder: string;
+    readonly: boolean;
+    disabled: boolean;
+    virtualScroll: boolean;
+    itemSize: number;
+    maxlength: number;
+    name: string;
+    required: boolean;
+    size: number;
+    appendTo: any;
+    autoHighlight: boolean;
+    forceSelection: boolean;
+    type: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    ariaLabel: string;
+    dropdownAriaLabel: string;
+    ariaLabelledBy: string;
+    dropdownIcon: string;
+    unique: boolean;
+    group: boolean;
+    completeOnFocus: boolean;
+    completeMethod: EventEmitter<any>;
+    onSelect: EventEmitter<any>;
+    onUnselect: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onDropdownClick: EventEmitter<any>;
+    onClear: EventEmitter<any>;
+    onKeyUp: EventEmitter<any>;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    field: string;
+    scrollHeight: string;
+    dropdown: boolean;
+    showEmptyMessage: boolean;
+    dropdownMode: string;
+    multiple: boolean;
+    tabindex: number;
+    dataKey: string;
+    emptyMessage: string;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    autofocus: boolean;
+    autocomplete: string;
+    optionGroupChildren: string;
+    optionGroupLabel: string;
+    containerEL: ElementRef;
+    inputEL: ElementRef;
+    multiInputEL: ElementRef;
+    multiContainerEL: ElementRef;
+    dropdownButton: ElementRef;
+    viewPort: CdkVirtualScrollViewport;
+    templates: QueryList<any>;
+    overlay: HTMLDivElement;
+    itemsWrapper: HTMLDivElement;
+    itemTemplate: TemplateRef<any>;
+    emptyTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    selectedItemTemplate: TemplateRef<any>;
+    groupTemplate: TemplateRef<any>;
+    value: any;
+    _suggestions: any[];
+    onModelChange: Function;
+    onModelTouched: Function;
+    timeout: any;
+    overlayVisible: boolean;
+    documentClickListener: any;
+    suggestionsUpdated: boolean;
+    highlightOption: any;
+    highlightOptionChanged: boolean;
+    focus: boolean;
+    filled: boolean;
+    inputClick: boolean;
+    inputKeyDown: boolean;
+    noResults: boolean;
+    differ: any;
+    inputFieldValue: string;
+    loading: boolean;
+    scrollHandler: any;
+    documentResizeListener: any;
+    forceSelectionUpdateModelTimeout: any;
+    listId: string;
+    itemClicked: boolean;
+    virtualScrollSelectedIndex: number;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, differs: IterableDiffers, config: PrimeNGConfig, overlayService: OverlayService);
+    get suggestions(): any[];
+    set suggestions(val: any[]);
+    ngAfterViewChecked(): void;
+    handleSuggestionsChange(): void;
+    ngAfterContentInit(): void;
+    updateVirtualScrollSelectedIndex(): void;
+    writeValue(value: any): void;
+    getOptionGroupChildren(optionGroup: any): any;
+    getOptionGroupLabel(optionGroup: any): any;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    onInput(event: Event): void;
+    onInputClick(event: MouseEvent): void;
+    search(event: any, query: string): void;
+    selectItem(option: any, focus?: boolean): void;
+    show(): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationEnd(event: AnimationEvent): void;
+    onOverlayClick(event: any): void;
+    appendOverlay(): void;
+    resolveFieldData(value: any): any;
+    restoreOverlayAppend(): void;
+    alignOverlay(): void;
+    hide(): void;
+    handleDropdownClick(event: any): void;
+    focusInput(): void;
+    get emptyMessageLabel(): string;
+    removeItem(item: any): void;
+    onKeydown(event: any): void;
+    onKeyup(event: any): void;
+    onInputFocus(event: any): void;
+    onInputBlur(event: any): void;
+    onInputChange(event: any): void;
+    onInputPaste(event: ClipboardEvent): void;
+    isSelected(val: any): boolean;
+    findOptionIndex(option: any, suggestions: any): number;
+    findOptionGroupIndex(val: any, opts: any[]): any;
+    updateFilledState(): void;
+    updateInputField(): void;
+    bindDocumentClickListener(): void;
+    isDropdownClick(event: any): boolean;
+    unbindDocumentClickListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    onWindowResize(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<AutoComplete, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<AutoComplete, "p-autoComplete", never, { "minLength": "minLength"; "delay": "delay"; "style": "style"; "panelStyle": "panelStyle"; "styleClass": "styleClass"; "panelStyleClass": "panelStyleClass"; "inputStyle": "inputStyle"; "inputId": "inputId"; "inputStyleClass": "inputStyleClass"; "placeholder": "placeholder"; "readonly": "readonly"; "disabled": "disabled"; "virtualScroll": "virtualScroll"; "itemSize": "itemSize"; "maxlength": "maxlength"; "name": "name"; "required": "required"; "size": "size"; "appendTo": "appendTo"; "autoHighlight": "autoHighlight"; "forceSelection": "forceSelection"; "type": "type"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "ariaLabel": "ariaLabel"; "dropdownAriaLabel": "dropdownAriaLabel"; "ariaLabelledBy": "ariaLabelledBy"; "dropdownIcon": "dropdownIcon"; "unique": "unique"; "group": "group"; "completeOnFocus": "completeOnFocus"; "field": "field"; "scrollHeight": "scrollHeight"; "dropdown": "dropdown"; "showEmptyMessage": "showEmptyMessage"; "dropdownMode": "dropdownMode"; "multiple": "multiple"; "tabindex": "tabindex"; "dataKey": "dataKey"; "emptyMessage": "emptyMessage"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "autofocus": "autofocus"; "autocomplete": "autocomplete"; "optionGroupChildren": "optionGroupChildren"; "optionGroupLabel": "optionGroupLabel"; "suggestions": "suggestions"; }, { "completeMethod": "completeMethod"; "onSelect": "onSelect"; "onUnselect": "onUnselect"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onDropdownClick": "onDropdownClick"; "onClear": "onClear"; "onKeyUp": "onKeyUp"; "onShow": "onShow"; "onHide": "onHide"; }, ["templates"], never>;
+}
+export declare class AutoCompleteModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<AutoCompleteModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<AutoCompleteModule, [typeof AutoComplete], [typeof i1.CommonModule, typeof i2.InputTextModule, typeof i3.ButtonModule, typeof i4.SharedModule, typeof i5.RippleModule, typeof i6.ScrollingModule], [typeof AutoComplete, typeof i4.SharedModule, typeof i6.ScrollingModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<AutoCompleteModule>;
+}
Index: trip-planner-front/node_modules/primeng/autocomplete/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/autocomplete/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/autocomplete/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-autocomplete.mjs",
+  "es2020": "../fesm2020/primeng-autocomplete.mjs",
+  "esm2020": "../esm2020/autocomplete/primeng-autocomplete.mjs",
+  "fesm2020": "../fesm2020/primeng-autocomplete.mjs",
+  "fesm2015": "../fesm2015/primeng-autocomplete.mjs",
+  "typings": "primeng-autocomplete.d.ts",
+  "sideEffects": false,
+  "name": "primeng/autocomplete"
+}
Index: trip-planner-front/node_modules/primeng/autocomplete/primeng-autocomplete.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/autocomplete/primeng-autocomplete.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/autocomplete/primeng-autocomplete.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/autocomplete" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/autocomplete/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/autocomplete/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/autocomplete/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './autocomplete';
Index: trip-planner-front/node_modules/primeng/avatar/avatar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatar/avatar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatar/avatar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,25 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Avatar {
+    label: string;
+    icon: string;
+    image: string;
+    size: string;
+    shape: string;
+    style: any;
+    styleClass: string;
+    containerClass(): {
+        'p-avatar p-component': boolean;
+        'p-avatar-image': boolean;
+        'p-avatar-circle': boolean;
+        'p-avatar-lg': boolean;
+        'p-avatar-xl': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Avatar, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Avatar, "p-avatar", never, { "label": "label"; "icon": "icon"; "image": "image"; "size": "size"; "shape": "shape"; "style": "style"; "styleClass": "styleClass"; }, {}, never, ["*"]>;
+}
+export declare class AvatarModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<AvatarModule, [typeof Avatar], [typeof i1.CommonModule], [typeof Avatar]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<AvatarModule>;
+}
Index: trip-planner-front/node_modules/primeng/avatar/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/avatar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-avatar.mjs",
+  "es2020": "../fesm2020/primeng-avatar.mjs",
+  "esm2020": "../esm2020/avatar/primeng-avatar.mjs",
+  "fesm2020": "../fesm2020/primeng-avatar.mjs",
+  "fesm2015": "../fesm2015/primeng-avatar.mjs",
+  "typings": "primeng-avatar.d.ts",
+  "sideEffects": false,
+  "name": "primeng/avatar"
+}
Index: trip-planner-front/node_modules/primeng/avatar/primeng-avatar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatar/primeng-avatar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatar/primeng-avatar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/avatar" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/avatar/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './avatar';
Index: trip-planner-front/node_modules/primeng/avatargroup/avatargroup.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatargroup/avatargroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatargroup/avatargroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,13 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class AvatarGroup {
+    styleClass: string;
+    style: any;
+    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroup, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<AvatarGroup, "p-avatarGroup", never, { "styleClass": "styleClass"; "style": "style"; }, {}, never, ["*"]>;
+}
+export declare class AvatarGroupModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<AvatarGroupModule, [typeof AvatarGroup], [typeof i1.CommonModule], [typeof AvatarGroup]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<AvatarGroupModule>;
+}
Index: trip-planner-front/node_modules/primeng/avatargroup/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/avatargroup/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatargroup/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-avatargroup.mjs",
+  "es2020": "../fesm2020/primeng-avatargroup.mjs",
+  "esm2020": "../esm2020/avatargroup/primeng-avatargroup.mjs",
+  "fesm2020": "../fesm2020/primeng-avatargroup.mjs",
+  "fesm2015": "../fesm2015/primeng-avatargroup.mjs",
+  "typings": "primeng-avatargroup.d.ts",
+  "sideEffects": false,
+  "name": "primeng/avatargroup"
+}
Index: trip-planner-front/node_modules/primeng/avatargroup/primeng-avatargroup.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatargroup/primeng-avatargroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatargroup/primeng-avatargroup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/avatargroup" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/avatargroup/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/avatargroup/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/avatargroup/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './avatargroup';
Index: trip-planner-front/node_modules/primeng/badge/badge.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/badge/badge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/badge/badge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,43 @@
+import { OnDestroy, AfterViewInit, ElementRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare class BadgeDirective implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    iconPos: 'left' | 'right' | 'top' | 'bottom';
+    _value: string;
+    initialized: boolean;
+    private id;
+    constructor(el: ElementRef);
+    ngAfterViewInit(): void;
+    get value(): string;
+    set value(val: string);
+    severity: string;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<BadgeDirective, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<BadgeDirective, "[pBadge]", never, { "iconPos": "iconPos"; "value": "value"; "severity": "severity"; }, {}, never>;
+}
+export declare class Badge {
+    styleClass: string;
+    style: any;
+    size: string;
+    severity: string;
+    value: string;
+    containerClass(): {
+        'p-badge p-component': boolean;
+        'p-badge-no-gutter': boolean;
+        'p-badge-lg': boolean;
+        'p-badge-xl': boolean;
+        'p-badge-info': boolean;
+        'p-badge-success': boolean;
+        'p-badge-warning': boolean;
+        'p-badge-danger': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Badge, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Badge, "p-badge", never, { "styleClass": "styleClass"; "style": "style"; "size": "size"; "severity": "severity"; "value": "value"; }, {}, never, never>;
+}
+export declare class BadgeModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<BadgeModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<BadgeModule, [typeof Badge, typeof BadgeDirective], [typeof i1.CommonModule], [typeof Badge, typeof BadgeDirective, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<BadgeModule>;
+}
Index: trip-planner-front/node_modules/primeng/badge/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/badge/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/badge/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-badge.mjs",
+  "es2020": "../fesm2020/primeng-badge.mjs",
+  "esm2020": "../esm2020/badge/primeng-badge.mjs",
+  "fesm2020": "../fesm2020/primeng-badge.mjs",
+  "fesm2015": "../fesm2015/primeng-badge.mjs",
+  "typings": "primeng-badge.d.ts",
+  "sideEffects": false,
+  "name": "primeng/badge"
+}
Index: trip-planner-front/node_modules/primeng/badge/primeng-badge.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/badge/primeng-badge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/badge/primeng-badge.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/badge" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/badge/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/badge/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/badge/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './badge';
Index: trip-planner-front/node_modules/primeng/blockui/blockui.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/blockui/blockui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/blockui/blockui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,35 @@
+import { AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef, QueryList, TemplateRef } from '@angular/core';
+import { PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class BlockUI implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    config: PrimeNGConfig;
+    target: any;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    styleClass: string;
+    templates: QueryList<any>;
+    mask: ElementRef;
+    _blocked: boolean;
+    animationEndListener: any;
+    contentTemplate: TemplateRef<any>;
+    constructor(el: ElementRef, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    get blocked(): boolean;
+    set blocked(val: boolean);
+    ngAfterViewInit(): void;
+    ngAfterContentInit(): void;
+    block(): void;
+    unblock(): void;
+    destroyModal(): void;
+    unbindAnimationEndListener(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<BlockUI, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<BlockUI, "p-blockUI", never, { "target": "target"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "styleClass": "styleClass"; "blocked": "blocked"; }, {}, ["templates"], ["*"]>;
+}
+export declare class BlockUIModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<BlockUIModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<BlockUIModule, [typeof BlockUI], [typeof i1.CommonModule], [typeof BlockUI]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<BlockUIModule>;
+}
Index: trip-planner-front/node_modules/primeng/blockui/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/blockui/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/blockui/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-blockui.mjs",
+  "es2020": "../fesm2020/primeng-blockui.mjs",
+  "esm2020": "../esm2020/blockui/primeng-blockui.mjs",
+  "fesm2020": "../fesm2020/primeng-blockui.mjs",
+  "fesm2015": "../fesm2015/primeng-blockui.mjs",
+  "typings": "primeng-blockui.d.ts",
+  "sideEffects": false,
+  "name": "primeng/blockui"
+}
Index: trip-planner-front/node_modules/primeng/blockui/primeng-blockui.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/blockui/primeng-blockui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/blockui/primeng-blockui.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/blockui" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/blockui/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/blockui/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/blockui/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './blockui';
Index: trip-planner-front/node_modules/primeng/breadcrumb/breadcrumb.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/breadcrumb/breadcrumb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/breadcrumb/breadcrumb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,23 @@
+import { EventEmitter } from '@angular/core';
+import { MenuItem } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/tooltip";
+export declare class Breadcrumb {
+    model: MenuItem[];
+    style: any;
+    styleClass: string;
+    home: MenuItem;
+    homeAriaLabel: string;
+    onItemClick: EventEmitter<any>;
+    itemClick(event: any, item: MenuItem): void;
+    onHomeClick(event: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Breadcrumb, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Breadcrumb, "p-breadcrumb", never, { "model": "model"; "style": "style"; "styleClass": "styleClass"; "home": "home"; "homeAriaLabel": "homeAriaLabel"; }, { "onItemClick": "onItemClick"; }, never, never>;
+}
+export declare class BreadcrumbModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<BreadcrumbModule, [typeof Breadcrumb], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.TooltipModule], [typeof Breadcrumb, typeof i2.RouterModule, typeof i3.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<BreadcrumbModule>;
+}
Index: trip-planner-front/node_modules/primeng/breadcrumb/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/breadcrumb/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/breadcrumb/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-breadcrumb.mjs",
+  "es2020": "../fesm2020/primeng-breadcrumb.mjs",
+  "esm2020": "../esm2020/breadcrumb/primeng-breadcrumb.mjs",
+  "fesm2020": "../fesm2020/primeng-breadcrumb.mjs",
+  "fesm2015": "../fesm2015/primeng-breadcrumb.mjs",
+  "typings": "primeng-breadcrumb.d.ts",
+  "sideEffects": false,
+  "name": "primeng/breadcrumb"
+}
Index: trip-planner-front/node_modules/primeng/breadcrumb/primeng-breadcrumb.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/breadcrumb/primeng-breadcrumb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/breadcrumb/primeng-breadcrumb.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/breadcrumb" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/breadcrumb/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/breadcrumb/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/breadcrumb/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './breadcrumb';
Index: trip-planner-front/node_modules/primeng/button/button.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/button/button.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/button/button.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+import { ElementRef, EventEmitter, AfterViewInit, OnDestroy, AfterContentInit, TemplateRef, QueryList } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+export declare class ButtonDirective implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    iconPos: 'left' | 'right' | 'top' | 'bottom';
+    loadingIcon: string;
+    _label: string;
+    _icon: string;
+    _loading: boolean;
+    initialized: boolean;
+    _initialStyleClass: string;
+    constructor(el: ElementRef);
+    ngAfterViewInit(): void;
+    getStyleClass(): string;
+    setStyleClass(): void;
+    createIconEl(): void;
+    getIconClass(): string;
+    setIconClass(): void;
+    removeIconElement(): void;
+    get label(): string;
+    set label(val: string);
+    get icon(): string;
+    set icon(val: string);
+    get loading(): boolean;
+    set loading(val: boolean);
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ButtonDirective, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<ButtonDirective, "[pButton]", never, { "iconPos": "iconPos"; "loadingIcon": "loadingIcon"; "label": "label"; "icon": "icon"; "loading": "loading"; }, {}, never>;
+}
+export declare class Button implements AfterContentInit {
+    type: string;
+    iconPos: string;
+    icon: string;
+    badge: string;
+    label: string;
+    disabled: boolean;
+    loading: boolean;
+    loadingIcon: string;
+    style: any;
+    styleClass: string;
+    badgeClass: string;
+    contentTemplate: TemplateRef<any>;
+    templates: QueryList<any>;
+    onClick: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    ngAfterContentInit(): void;
+    badgeStyleClass(): {
+        'p-badge p-component': boolean;
+        'p-badge-no-gutter': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Button, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Button, "p-button", never, { "type": "type"; "iconPos": "iconPos"; "icon": "icon"; "badge": "badge"; "label": "label"; "disabled": "disabled"; "loading": "loading"; "loadingIcon": "loadingIcon"; "style": "style"; "styleClass": "styleClass"; "badgeClass": "badgeClass"; }, { "onClick": "onClick"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["templates"], ["*"]>;
+}
+export declare class ButtonModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ButtonModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ButtonModule, [typeof ButtonDirective, typeof Button], [typeof i1.CommonModule, typeof i2.RippleModule], [typeof ButtonDirective, typeof Button]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ButtonModule>;
+}
Index: trip-planner-front/node_modules/primeng/button/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/button/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/button/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-button.mjs",
+  "es2020": "../fesm2020/primeng-button.mjs",
+  "esm2020": "../esm2020/button/primeng-button.mjs",
+  "fesm2020": "../fesm2020/primeng-button.mjs",
+  "fesm2015": "../fesm2015/primeng-button.mjs",
+  "typings": "primeng-button.d.ts",
+  "sideEffects": false,
+  "name": "primeng/button"
+}
Index: trip-planner-front/node_modules/primeng/button/primeng-button.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/button/primeng-button.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/button/primeng-button.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/button" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/button/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/button/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/button/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './button';
Index: trip-planner-front/node_modules/primeng/calendar/calendar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/calendar/calendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/calendar/calendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,302 @@
+import { ElementRef, OnDestroy, OnInit, EventEmitter, Renderer2, ChangeDetectorRef, TemplateRef, QueryList, NgZone } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { PrimeNGConfig, OverlayService } from 'primeng/api';
+import { ControlValueAccessor } from '@angular/forms';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+import * as i3 from "primeng/api";
+import * as i4 from "primeng/ripple";
+export declare const CALENDAR_VALUE_ACCESSOR: any;
+export interface LocaleSettings {
+    firstDayOfWeek?: number;
+    dayNames?: string[];
+    dayNamesShort?: string[];
+    dayNamesMin?: string[];
+    monthNames?: string[];
+    monthNamesShort?: string[];
+    today?: string;
+    clear?: string;
+    dateFormat?: string;
+    weekHeader?: string;
+}
+export declare class Calendar implements OnInit, OnDestroy, ControlValueAccessor {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    private zone;
+    private config;
+    overlayService: OverlayService;
+    style: any;
+    styleClass: string;
+    inputStyle: any;
+    inputId: string;
+    name: string;
+    inputStyleClass: string;
+    placeholder: string;
+    ariaLabelledBy: string;
+    iconAriaLabel: string;
+    disabled: any;
+    dateFormat: string;
+    multipleSeparator: string;
+    rangeSeparator: string;
+    inline: boolean;
+    showOtherMonths: boolean;
+    selectOtherMonths: boolean;
+    showIcon: boolean;
+    icon: string;
+    appendTo: any;
+    readonlyInput: boolean;
+    shortYearCutoff: any;
+    monthNavigator: boolean;
+    yearNavigator: boolean;
+    hourFormat: string;
+    timeOnly: boolean;
+    stepHour: number;
+    stepMinute: number;
+    stepSecond: number;
+    showSeconds: boolean;
+    required: boolean;
+    showOnFocus: boolean;
+    showWeek: boolean;
+    dataType: string;
+    selectionMode: string;
+    maxDateCount: number;
+    showButtonBar: boolean;
+    todayButtonStyleClass: string;
+    clearButtonStyleClass: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    panelStyleClass: string;
+    panelStyle: any;
+    keepInvalid: boolean;
+    hideOnDateTimeSelect: boolean;
+    numberOfMonths: number;
+    view: string;
+    touchUI: boolean;
+    timeSeparator: string;
+    focusTrap: boolean;
+    firstDayOfWeek: number;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onClose: EventEmitter<any>;
+    onSelect: EventEmitter<any>;
+    onInput: EventEmitter<any>;
+    onTodayClick: EventEmitter<any>;
+    onClearClick: EventEmitter<any>;
+    onMonthChange: EventEmitter<any>;
+    onYearChange: EventEmitter<any>;
+    onClickOutside: EventEmitter<any>;
+    onShow: EventEmitter<any>;
+    templates: QueryList<any>;
+    tabindex: number;
+    containerViewChild: ElementRef;
+    inputfieldViewChild: ElementRef;
+    set content(content: ElementRef);
+    contentViewChild: ElementRef;
+    value: any;
+    dates: any[];
+    months: any[];
+    monthPickerValues: any[];
+    weekDays: string[];
+    currentMonth: number;
+    currentYear: number;
+    currentHour: number;
+    currentMinute: number;
+    currentSecond: number;
+    pm: boolean;
+    mask: HTMLDivElement;
+    maskClickListener: Function;
+    overlay: HTMLDivElement;
+    overlayVisible: boolean;
+    onModelChange: Function;
+    onModelTouched: Function;
+    calendarElement: any;
+    timePickerTimer: any;
+    documentClickListener: any;
+    animationEndListener: any;
+    ticksTo1970: number;
+    yearOptions: number[];
+    focus: boolean;
+    isKeydown: boolean;
+    filled: boolean;
+    inputFieldValue: string;
+    _minDate: Date;
+    _maxDate: Date;
+    _showTime: boolean;
+    _yearRange: string;
+    preventDocumentListener: boolean;
+    dateTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    disabledDateTemplate: TemplateRef<any>;
+    _disabledDates: Array<Date>;
+    _disabledDays: Array<number>;
+    selectElement: any;
+    todayElement: any;
+    focusElement: any;
+    scrollHandler: any;
+    documentResizeListener: any;
+    navigationState: any;
+    isMonthNavigate: boolean;
+    initialized: boolean;
+    translationSubscription: Subscription;
+    _locale: LocaleSettings;
+    get defaultDate(): Date;
+    set defaultDate(defaultDate: Date);
+    _defaultDate: Date;
+    get minDate(): Date;
+    set minDate(date: Date);
+    get maxDate(): Date;
+    set maxDate(date: Date);
+    get disabledDates(): Date[];
+    set disabledDates(disabledDates: Date[]);
+    get disabledDays(): number[];
+    set disabledDays(disabledDays: number[]);
+    get yearRange(): string;
+    set yearRange(yearRange: string);
+    get showTime(): boolean;
+    set showTime(showTime: boolean);
+    get locale(): LocaleSettings;
+    set locale(newLocale: LocaleSettings);
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, zone: NgZone, config: PrimeNGConfig, overlayService: OverlayService);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    getTranslation(option: string): any;
+    populateYearOptions(start: any, end: any): void;
+    createWeekDays(): void;
+    createMonthPickerValues(): void;
+    createMonths(month: number, year: number): void;
+    getWeekNumber(date: Date): number;
+    createMonth(month: number, year: number): {
+        month: number;
+        year: number;
+        dates: any[];
+        weekNumbers: any[];
+    };
+    initTime(date: Date): void;
+    navBackward(event: any): void;
+    navForward(event: any): void;
+    decrementYear(): void;
+    incrementYear(): void;
+    onDateSelect(event: any, dateMeta: any): void;
+    shouldSelectDate(dateMeta: any): boolean;
+    onMonthSelect(event: any, index: any): void;
+    updateInputfield(): void;
+    formatDateTime(date: any): any;
+    setCurrentHourPM(hours: number): void;
+    selectDate(dateMeta: any): void;
+    updateModel(value: any): void;
+    getFirstDayOfMonthIndex(month: number, year: number): number;
+    getDaysCountInMonth(month: number, year: number): number;
+    getDaysCountInPrevMonth(month: number, year: number): number;
+    getPreviousMonthAndYear(month: number, year: number): {
+        month: any;
+        year: any;
+    };
+    getNextMonthAndYear(month: number, year: number): {
+        month: any;
+        year: any;
+    };
+    getSundayIndex(): number;
+    isSelected(dateMeta: any): boolean;
+    isMonthSelected(month: number): boolean;
+    isDateEquals(value: any, dateMeta: any): boolean;
+    isDateBetween(start: any, end: any, dateMeta: any): boolean;
+    isSingleSelection(): boolean;
+    isRangeSelection(): boolean;
+    isMultipleSelection(): boolean;
+    isToday(today: any, day: any, month: any, year: any): boolean;
+    isSelectable(day: any, month: any, year: any, otherMonth: any): boolean;
+    isDateDisabled(day: number, month: number, year: number): boolean;
+    isDayDisabled(day: number, month: number, year: number): boolean;
+    onInputFocus(event: Event): void;
+    onInputClick(): void;
+    onInputBlur(event: Event): void;
+    onButtonClick(event: any, inputfield: any): void;
+    onOverlayClick(event: any): void;
+    onPrevButtonClick(event: any): void;
+    onNextButtonClick(event: any): void;
+    onContainerButtonKeydown(event: any): void;
+    onInputKeydown(event: any): void;
+    onDateCellKeydown(event: any, date: any, groupIndex: any): void;
+    onMonthCellKeydown(event: any, index: any): void;
+    navigateToMonth(prev: any, groupIndex: any): void;
+    updateFocus(): void;
+    initFocusableCell(): void;
+    trapFocus(event: any): void;
+    onMonthDropdownChange(m: string): void;
+    onYearDropdownChange(y: string): void;
+    convertTo24Hour: (hours: number, pm: boolean) => number;
+    validateTime(hour: number, minute: number, second: number, pm: boolean): boolean;
+    incrementHour(event: any): void;
+    onTimePickerElementMouseDown(event: Event, type: number, direction: number): void;
+    onTimePickerElementMouseUp(event: Event): void;
+    onTimePickerElementMouseLeave(): void;
+    repeat(event: Event, interval: number, type: number, direction: number): void;
+    clearTimePickerTimer(): void;
+    decrementHour(event: any): void;
+    incrementMinute(event: any): void;
+    decrementMinute(event: any): void;
+    incrementSecond(event: any): void;
+    decrementSecond(event: any): void;
+    updateTime(): void;
+    toggleAMPM(event: any): void;
+    onUserInput(event: any): void;
+    isValidSelection(value: any): boolean;
+    parseValueFromString(text: string): Date | Date[];
+    parseDateTime(text: any): Date;
+    populateTime(value: any, timeString: any, ampm: any): void;
+    updateUI(): void;
+    showOverlay(): void;
+    hideOverlay(): void;
+    toggle(): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationDone(event: AnimationEvent): void;
+    appendOverlay(): void;
+    restoreOverlayAppend(): void;
+    alignOverlay(): void;
+    enableModality(element: any): void;
+    disableModality(): void;
+    destroyMask(): void;
+    unbindMaskClickListener(): void;
+    unbindAnimationEndListener(): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    getDateFormat(): any;
+    formatDate(date: any, format: any): string;
+    formatTime(date: any): string;
+    parseTime(value: any): {
+        hour: number;
+        minute: number;
+        second: number;
+    };
+    parseDate(value: any, format: any): any;
+    daylightSavingAdjust(date: any): any;
+    updateFilledState(): void;
+    onTodayButtonClick(event: any): void;
+    onClearButtonClick(event: any): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    isOutsideClicked(event: Event): boolean;
+    isNavIconClicked(event: Event): boolean;
+    onWindowResize(): void;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Calendar, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Calendar, "p-calendar", never, { "style": "style"; "styleClass": "styleClass"; "inputStyle": "inputStyle"; "inputId": "inputId"; "name": "name"; "inputStyleClass": "inputStyleClass"; "placeholder": "placeholder"; "ariaLabelledBy": "ariaLabelledBy"; "iconAriaLabel": "iconAriaLabel"; "disabled": "disabled"; "dateFormat": "dateFormat"; "multipleSeparator": "multipleSeparator"; "rangeSeparator": "rangeSeparator"; "inline": "inline"; "showOtherMonths": "showOtherMonths"; "selectOtherMonths": "selectOtherMonths"; "showIcon": "showIcon"; "icon": "icon"; "appendTo": "appendTo"; "readonlyInput": "readonlyInput"; "shortYearCutoff": "shortYearCutoff"; "monthNavigator": "monthNavigator"; "yearNavigator": "yearNavigator"; "hourFormat": "hourFormat"; "timeOnly": "timeOnly"; "stepHour": "stepHour"; "stepMinute": "stepMinute"; "stepSecond": "stepSecond"; "showSeconds": "showSeconds"; "required": "required"; "showOnFocus": "showOnFocus"; "showWeek": "showWeek"; "dataType": "dataType"; "selectionMode": "selectionMode"; "maxDateCount": "maxDateCount"; "showButtonBar": "showButtonBar"; "todayButtonStyleClass": "todayButtonStyleClass"; "clearButtonStyleClass": "clearButtonStyleClass"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "panelStyleClass": "panelStyleClass"; "panelStyle": "panelStyle"; "keepInvalid": "keepInvalid"; "hideOnDateTimeSelect": "hideOnDateTimeSelect"; "numberOfMonths": "numberOfMonths"; "view": "view"; "touchUI": "touchUI"; "timeSeparator": "timeSeparator"; "focusTrap": "focusTrap"; "firstDayOfWeek": "firstDayOfWeek"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "tabindex": "tabindex"; "defaultDate": "defaultDate"; "minDate": "minDate"; "maxDate": "maxDate"; "disabledDates": "disabledDates"; "disabledDays": "disabledDays"; "yearRange": "yearRange"; "showTime": "showTime"; "locale": "locale"; }, { "onFocus": "onFocus"; "onBlur": "onBlur"; "onClose": "onClose"; "onSelect": "onSelect"; "onInput": "onInput"; "onTodayClick": "onTodayClick"; "onClearClick": "onClearClick"; "onMonthChange": "onMonthChange"; "onYearChange": "onYearChange"; "onClickOutside": "onClickOutside"; "onShow": "onShow"; }, ["templates"], ["p-header", "p-footer"]>;
+}
+export declare class CalendarModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CalendarModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CalendarModule, [typeof Calendar], [typeof i1.CommonModule, typeof i2.ButtonModule, typeof i3.SharedModule, typeof i4.RippleModule], [typeof Calendar, typeof i2.ButtonModule, typeof i3.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CalendarModule>;
+}
Index: trip-planner-front/node_modules/primeng/calendar/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/calendar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/calendar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-calendar.mjs",
+  "es2020": "../fesm2020/primeng-calendar.mjs",
+  "esm2020": "../esm2020/calendar/primeng-calendar.mjs",
+  "fesm2020": "../fesm2020/primeng-calendar.mjs",
+  "fesm2015": "../fesm2015/primeng-calendar.mjs",
+  "typings": "primeng-calendar.d.ts",
+  "sideEffects": false,
+  "name": "primeng/calendar"
+}
Index: trip-planner-front/node_modules/primeng/calendar/primeng-calendar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/calendar/primeng-calendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/calendar/primeng-calendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/calendar" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/calendar/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/calendar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/calendar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './calendar';
Index: trip-planner-front/node_modules/primeng/captcha/captcha.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/captcha/captcha.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/captcha/captcha.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,35 @@
+import { AfterViewInit, EventEmitter, NgZone, OnDestroy, ElementRef, ChangeDetectorRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Captcha implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    _zone: NgZone;
+    cd: ChangeDetectorRef;
+    siteKey: string;
+    theme: string;
+    type: string;
+    size: string;
+    tabindex: number;
+    initCallback: string;
+    onResponse: EventEmitter<any>;
+    onExpire: EventEmitter<any>;
+    private _instance;
+    private _language;
+    get language(): string;
+    set language(language: string);
+    constructor(el: ElementRef, _zone: NgZone, cd: ChangeDetectorRef);
+    ngAfterViewInit(): void;
+    init(): void;
+    reset(): void;
+    getResponse(): String;
+    recaptchaCallback(response: string): void;
+    recaptchaExpiredCallback(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Captcha, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Captcha, "p-captcha", never, { "siteKey": "siteKey"; "theme": "theme"; "type": "type"; "size": "size"; "tabindex": "tabindex"; "initCallback": "initCallback"; "language": "language"; }, { "onResponse": "onResponse"; "onExpire": "onExpire"; }, never, never>;
+}
+export declare class CaptchaModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CaptchaModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CaptchaModule, [typeof Captcha], [typeof i1.CommonModule], [typeof Captcha]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CaptchaModule>;
+}
Index: trip-planner-front/node_modules/primeng/captcha/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/captcha/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/captcha/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-captcha.mjs",
+  "es2020": "../fesm2020/primeng-captcha.mjs",
+  "esm2020": "../esm2020/captcha/primeng-captcha.mjs",
+  "fesm2020": "../fesm2020/primeng-captcha.mjs",
+  "fesm2015": "../fesm2015/primeng-captcha.mjs",
+  "typings": "primeng-captcha.d.ts",
+  "sideEffects": false,
+  "name": "primeng/captcha"
+}
Index: trip-planner-front/node_modules/primeng/captcha/primeng-captcha.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/captcha/primeng-captcha.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/captcha/primeng-captcha.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/captcha" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/captcha/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/captcha/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/captcha/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './captcha';
Index: trip-planner-front/node_modules/primeng/card/card.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/card/card.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/card/card.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,30 @@
+import { ElementRef, TemplateRef, AfterContentInit, QueryList } from '@angular/core';
+import { BlockableUI } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare class Card implements AfterContentInit, BlockableUI {
+    private el;
+    header: string;
+    subheader: string;
+    style: any;
+    styleClass: string;
+    headerFacet: any;
+    footerFacet: any;
+    templates: QueryList<any>;
+    headerTemplate: TemplateRef<any>;
+    titleTemplate: TemplateRef<any>;
+    subtitleTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    constructor(el: ElementRef);
+    ngAfterContentInit(): void;
+    getBlockableElement(): HTMLElement;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Card, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Card, "p-card", never, { "header": "header"; "subheader": "subheader"; "style": "style"; "styleClass": "styleClass"; }, {}, ["headerFacet", "footerFacet", "templates"], ["p-header", "*", "p-footer"]>;
+}
+export declare class CardModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CardModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CardModule, [typeof Card], [typeof i1.CommonModule], [typeof Card, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CardModule>;
+}
Index: trip-planner-front/node_modules/primeng/card/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/card/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/card/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-card.mjs",
+  "es2020": "../fesm2020/primeng-card.mjs",
+  "esm2020": "../esm2020/card/primeng-card.mjs",
+  "fesm2020": "../fesm2020/primeng-card.mjs",
+  "fesm2015": "../fesm2015/primeng-card.mjs",
+  "typings": "primeng-card.d.ts",
+  "sideEffects": false,
+  "name": "primeng/card"
+}
Index: trip-planner-front/node_modules/primeng/card/primeng-card.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/card/primeng-card.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/card/primeng-card.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/card" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/card/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/card/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/card/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './card';
Index: trip-planner-front/node_modules/primeng/carousel/carousel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/carousel/carousel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/carousel/carousel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,102 @@
+import { ElementRef, AfterContentInit, TemplateRef, QueryList, NgZone, EventEmitter, ChangeDetectorRef, SimpleChanges } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/ripple";
+export declare class Carousel implements AfterContentInit {
+    el: ElementRef;
+    zone: NgZone;
+    cd: ChangeDetectorRef;
+    get page(): number;
+    set page(val: number);
+    get numVisible(): number;
+    set numVisible(val: number);
+    get numScroll(): number;
+    set numScroll(val: number);
+    responsiveOptions: any[];
+    orientation: string;
+    verticalViewPortHeight: string;
+    contentClass: string;
+    indicatorsContentClass: string;
+    indicatorsContentStyle: any;
+    indicatorStyleClass: string;
+    indicatorStyle: any;
+    get value(): any[];
+    set value(val: any[]);
+    circular: boolean;
+    showIndicators: boolean;
+    showNavigators: boolean;
+    autoplayInterval: number;
+    style: any;
+    styleClass: string;
+    onPage: EventEmitter<any>;
+    itemsContainer: ElementRef;
+    headerFacet: any;
+    footerFacet: any;
+    templates: QueryList<any>;
+    _numVisible: number;
+    _numScroll: number;
+    _oldNumScroll: number;
+    prevState: any;
+    defaultNumScroll: number;
+    defaultNumVisible: number;
+    _page: number;
+    _value: any[];
+    carouselStyle: any;
+    id: string;
+    totalShiftedItems: any;
+    isRemainingItemsAdded: boolean;
+    animationTimeout: any;
+    translateTimeout: any;
+    remainingItems: number;
+    _items: any[];
+    startPos: any;
+    documentResizeListener: any;
+    clonedItemsForStarting: any[];
+    clonedItemsForFinishing: any[];
+    allowAutoplay: boolean;
+    interval: any;
+    isCreated: boolean;
+    swipeThreshold: number;
+    itemTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    constructor(el: ElementRef, zone: NgZone, cd: ChangeDetectorRef);
+    ngOnChanges(simpleChange: SimpleChanges): void;
+    ngAfterContentInit(): void;
+    ngAfterContentChecked(): void;
+    createStyle(): void;
+    calculatePosition(): void;
+    setCloneItems(): void;
+    firstIndex(): number;
+    lastIndex(): number;
+    totalDots(): number;
+    totalDotsArray(): any[];
+    isVertical(): boolean;
+    isCircular(): boolean;
+    isAutoplay(): boolean;
+    isForwardNavDisabled(): boolean;
+    isBackwardNavDisabled(): boolean;
+    isEmpty(): boolean;
+    navForward(e: any, index?: any): void;
+    navBackward(e: any, index?: any): void;
+    onDotClick(e: any, index: any): void;
+    step(dir: any, page: any): void;
+    startAutoplay(): void;
+    stopAutoplay(): void;
+    onTransitionEnd(): void;
+    onTouchStart(e: any): void;
+    onTouchMove(e: any): void;
+    onTouchEnd(e: any): void;
+    changePageOnTouch(e: any, diff: any): void;
+    bindDocumentListeners(): void;
+    unbindDocumentListeners(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Carousel, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Carousel, "p-carousel", never, { "page": "page"; "numVisible": "numVisible"; "numScroll": "numScroll"; "responsiveOptions": "responsiveOptions"; "orientation": "orientation"; "verticalViewPortHeight": "verticalViewPortHeight"; "contentClass": "contentClass"; "indicatorsContentClass": "indicatorsContentClass"; "indicatorsContentStyle": "indicatorsContentStyle"; "indicatorStyleClass": "indicatorStyleClass"; "indicatorStyle": "indicatorStyle"; "value": "value"; "circular": "circular"; "showIndicators": "showIndicators"; "showNavigators": "showNavigators"; "autoplayInterval": "autoplayInterval"; "style": "style"; "styleClass": "styleClass"; }, { "onPage": "onPage"; }, ["headerFacet", "footerFacet", "templates"], ["p-header", "p-footer"]>;
+}
+export declare class CarouselModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CarouselModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CarouselModule, [typeof Carousel], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.RippleModule], [typeof i1.CommonModule, typeof Carousel, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CarouselModule>;
+}
Index: trip-planner-front/node_modules/primeng/carousel/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/carousel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/carousel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-carousel.mjs",
+  "es2020": "../fesm2020/primeng-carousel.mjs",
+  "esm2020": "../esm2020/carousel/primeng-carousel.mjs",
+  "fesm2020": "../fesm2020/primeng-carousel.mjs",
+  "fesm2015": "../fesm2015/primeng-carousel.mjs",
+  "typings": "primeng-carousel.d.ts",
+  "sideEffects": false,
+  "name": "primeng/carousel"
+}
Index: trip-planner-front/node_modules/primeng/carousel/primeng-carousel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/carousel/primeng-carousel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/carousel/primeng-carousel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/carousel" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/carousel/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/carousel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/carousel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './carousel';
Index: trip-planner-front/node_modules/primeng/cascadeselect/cascadeselect.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/cascadeselect/cascadeselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/cascadeselect/cascadeselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,150 @@
+import { TemplateRef, QueryList, ElementRef, EventEmitter, ChangeDetectorRef, OnDestroy, OnInit, AfterContentInit } from '@angular/core';
+import { PrimeNGConfig, OverlayService } from 'primeng/api';
+import { AnimationEvent } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/ripple";
+export declare const CASCADESELECT_VALUE_ACCESSOR: any;
+export declare class CascadeSelectSub implements OnInit {
+    private el;
+    selectionPath: any[];
+    options: any[];
+    optionGroupChildren: any[];
+    optionTemplate: TemplateRef<any>;
+    level: number;
+    optionLabel: string;
+    optionValue: string;
+    optionGroupLabel: string;
+    dirty: boolean;
+    root: boolean;
+    onSelect: EventEmitter<any>;
+    onGroupSelect: EventEmitter<any>;
+    get parentActive(): boolean;
+    set parentActive(val: boolean);
+    activeOption: any;
+    _parentActive: boolean;
+    cascadeSelect: CascadeSelect;
+    constructor(cascadeSelect: any, el: ElementRef);
+    ngOnInit(): void;
+    onOptionClick(event: any, option: any): void;
+    onOptionSelect(event: any): void;
+    onOptionGroupSelect(event: any): void;
+    getOptionLabel(option: any): any;
+    getOptionValue(option: any): any;
+    getOptionGroupLabel(optionGroup: any): any;
+    getOptionGroupChildren(optionGroup: any): any;
+    isOptionGroup(option: any): any;
+    getOptionLabelToRender(option: any): any;
+    getItemClass(option: any): {
+        'p-cascadeselect-item': boolean;
+        'p-cascadeselect-item-group': any;
+        'p-cascadeselect-item-active p-highlight': boolean;
+    };
+    isOptionActive(option: any): boolean;
+    onKeyDown(event: any, option: any, index: any): void;
+    position(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<CascadeSelectSub, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<CascadeSelectSub, "p-cascadeSelectSub", never, { "selectionPath": "selectionPath"; "options": "options"; "optionGroupChildren": "optionGroupChildren"; "optionTemplate": "optionTemplate"; "level": "level"; "optionLabel": "optionLabel"; "optionValue": "optionValue"; "optionGroupLabel": "optionGroupLabel"; "dirty": "dirty"; "root": "root"; "parentActive": "parentActive"; }, { "onSelect": "onSelect"; "onGroupSelect": "onGroupSelect"; }, never, never>;
+}
+export declare class CascadeSelect implements OnInit, AfterContentInit, OnDestroy {
+    private el;
+    private cd;
+    private config;
+    overlayService: OverlayService;
+    styleClass: string;
+    style: any;
+    options: any[];
+    optionLabel: string;
+    optionValue: string;
+    optionGroupLabel: string;
+    optionGroupChildren: any[];
+    placeholder: string;
+    value: string;
+    dataKey: string;
+    inputId: string;
+    tabindex: string;
+    ariaLabelledBy: string;
+    appendTo: any;
+    disabled: boolean;
+    rounded: boolean;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    focusInputEl: ElementRef;
+    containerEl: ElementRef;
+    onChange: EventEmitter<any>;
+    onGroupChange: EventEmitter<any>;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    onBeforeShow: EventEmitter<any>;
+    onBeforeHide: EventEmitter<any>;
+    templates: QueryList<any>;
+    selectionPath: any;
+    focused: boolean;
+    filled: boolean;
+    overlayVisible: boolean;
+    dirty: boolean;
+    valueTemplate: TemplateRef<any>;
+    optionTemplate: TemplateRef<any>;
+    outsideClickListener: any;
+    scrollHandler: any;
+    resizeListener: any;
+    overlayEl: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    constructor(el: ElementRef, cd: ChangeDetectorRef, config: PrimeNGConfig, overlayService: OverlayService);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    onOptionSelect(event: any): void;
+    onOptionGroupSelect(event: any): void;
+    getOptionLabel(option: any): any;
+    getOptionValue(option: any): any;
+    getOptionGroupChildren(optionGroup: any, level: any): any;
+    isOptionGroup(option: any, level: any): any;
+    updateSelectionPath(): void;
+    updateFilledState(): void;
+    findModelOptionInGroup(option: any, level: any): any;
+    show(): void;
+    hide(): void;
+    onClick(event: any): void;
+    onFocus(): void;
+    onBlur(): void;
+    onOverlayClick(event: any): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationDone(event: AnimationEvent): void;
+    onOverlayEnter(): void;
+    onOverlayLeave(): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    alignOverlay(): void;
+    bindOutsideClickListener(): void;
+    unbindOutsideClickListener(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    bindResizeListener(): void;
+    unbindResizeListener(): void;
+    appendContainer(): void;
+    restoreAppend(): void;
+    label(): any;
+    onKeyDown(event: any): void;
+    containerClass(): {
+        'p-cascadeselect p-component p-inputwrapper': boolean;
+        'p-disabled': boolean;
+        'p-focus': boolean;
+    };
+    labelClass(): {
+        'p-cascadeselect-label': boolean;
+        'p-placeholder': boolean;
+        'p-cascadeselect-label-empty': boolean;
+    };
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<CascadeSelect, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<CascadeSelect, "p-cascadeSelect", never, { "styleClass": "styleClass"; "style": "style"; "options": "options"; "optionLabel": "optionLabel"; "optionValue": "optionValue"; "optionGroupLabel": "optionGroupLabel"; "optionGroupChildren": "optionGroupChildren"; "placeholder": "placeholder"; "value": "value"; "dataKey": "dataKey"; "inputId": "inputId"; "tabindex": "tabindex"; "ariaLabelledBy": "ariaLabelledBy"; "appendTo": "appendTo"; "disabled": "disabled"; "rounded": "rounded"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "onChange": "onChange"; "onGroupChange": "onGroupChange"; "onShow": "onShow"; "onHide": "onHide"; "onBeforeShow": "onBeforeShow"; "onBeforeHide": "onBeforeHide"; }, ["templates"], never>;
+}
+export declare class CascadeSelectModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CascadeSelectModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CascadeSelectModule, [typeof CascadeSelect, typeof CascadeSelectSub], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.RippleModule], [typeof CascadeSelect, typeof CascadeSelectSub, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CascadeSelectModule>;
+}
Index: trip-planner-front/node_modules/primeng/cascadeselect/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/cascadeselect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/cascadeselect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-cascadeselect.mjs",
+  "es2020": "../fesm2020/primeng-cascadeselect.mjs",
+  "esm2020": "../esm2020/cascadeselect/primeng-cascadeselect.mjs",
+  "fesm2020": "../fesm2020/primeng-cascadeselect.mjs",
+  "fesm2015": "../fesm2015/primeng-cascadeselect.mjs",
+  "typings": "primeng-cascadeselect.d.ts",
+  "sideEffects": false,
+  "name": "primeng/cascadeselect"
+}
Index: trip-planner-front/node_modules/primeng/cascadeselect/primeng-cascadeselect.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/cascadeselect/primeng-cascadeselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/cascadeselect/primeng-cascadeselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/cascadeselect" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/cascadeselect/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/cascadeselect/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/cascadeselect/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './cascadeselect';
Index: trip-planner-front/node_modules/primeng/chart/chart.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chart/chart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chart/chart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,37 @@
+import { ElementRef, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class UIChart implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    type: string;
+    plugins: any[];
+    width: string;
+    height: string;
+    responsive: boolean;
+    onDataSelect: EventEmitter<any>;
+    initialized: boolean;
+    _data: any;
+    _options: any;
+    chart: any;
+    constructor(el: ElementRef);
+    get data(): any;
+    set data(val: any);
+    get options(): any;
+    set options(val: any);
+    ngAfterViewInit(): void;
+    onCanvasClick(event: any): void;
+    initChart(): void;
+    getCanvas(): any;
+    getBase64Image(): any;
+    generateLegend(): any;
+    refresh(): void;
+    reinit(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<UIChart, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<UIChart, "p-chart", never, { "type": "type"; "plugins": "plugins"; "width": "width"; "height": "height"; "responsive": "responsive"; "data": "data"; "options": "options"; }, { "onDataSelect": "onDataSelect"; }, never, never>;
+}
+export declare class ChartModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ChartModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof UIChart], [typeof i1.CommonModule], [typeof UIChart]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ChartModule>;
+}
Index: trip-planner-front/node_modules/primeng/chart/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/chart/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chart/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-chart.mjs",
+  "es2020": "../fesm2020/primeng-chart.mjs",
+  "esm2020": "../esm2020/chart/primeng-chart.mjs",
+  "fesm2020": "../fesm2020/primeng-chart.mjs",
+  "fesm2015": "../fesm2015/primeng-chart.mjs",
+  "typings": "primeng-chart.d.ts",
+  "sideEffects": false,
+  "name": "primeng/chart"
+}
Index: trip-planner-front/node_modules/primeng/chart/primeng-chart.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chart/primeng-chart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chart/primeng-chart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/chart" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/chart/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chart/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chart/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './chart';
Index: trip-planner-front/node_modules/primeng/checkbox/checkbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/checkbox/checkbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/checkbox/checkbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,51 @@
+import { EventEmitter, ChangeDetectorRef, ElementRef } from '@angular/core';
+import { ControlValueAccessor, FormControl } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const CHECKBOX_VALUE_ACCESSOR: any;
+export declare class Checkbox implements ControlValueAccessor {
+    private cd;
+    value: any;
+    name: string;
+    disabled: boolean;
+    binary: boolean;
+    label: string;
+    ariaLabelledBy: string;
+    ariaLabel: string;
+    tabindex: number;
+    inputId: string;
+    style: any;
+    styleClass: string;
+    labelStyleClass: string;
+    formControl: FormControl;
+    checkboxIcon: string;
+    readonly: boolean;
+    required: boolean;
+    trueValue: any;
+    falseValue: any;
+    inputViewChild: ElementRef;
+    onChange: EventEmitter<any>;
+    model: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    focused: boolean;
+    constructor(cd: ChangeDetectorRef);
+    onClick(event: any, checkbox: any, focus: boolean): void;
+    updateModel(event: any): void;
+    handleChange(event: any): void;
+    onFocus(): void;
+    onBlur(): void;
+    focus(): void;
+    writeValue(model: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    checked(): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Checkbox, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Checkbox, "p-checkbox", never, { "value": "value"; "name": "name"; "disabled": "disabled"; "binary": "binary"; "label": "label"; "ariaLabelledBy": "ariaLabelledBy"; "ariaLabel": "ariaLabel"; "tabindex": "tabindex"; "inputId": "inputId"; "style": "style"; "styleClass": "styleClass"; "labelStyleClass": "labelStyleClass"; "formControl": "formControl"; "checkboxIcon": "checkboxIcon"; "readonly": "readonly"; "required": "required"; "trueValue": "trueValue"; "falseValue": "falseValue"; }, { "onChange": "onChange"; }, never, never>;
+}
+export declare class CheckboxModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CheckboxModule, [typeof Checkbox], [typeof i1.CommonModule], [typeof Checkbox]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CheckboxModule>;
+}
Index: trip-planner-front/node_modules/primeng/checkbox/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/checkbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/checkbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-checkbox.mjs",
+  "es2020": "../fesm2020/primeng-checkbox.mjs",
+  "esm2020": "../esm2020/checkbox/primeng-checkbox.mjs",
+  "fesm2020": "../fesm2020/primeng-checkbox.mjs",
+  "fesm2015": "../fesm2015/primeng-checkbox.mjs",
+  "typings": "primeng-checkbox.d.ts",
+  "sideEffects": false,
+  "name": "primeng/checkbox"
+}
Index: trip-planner-front/node_modules/primeng/checkbox/primeng-checkbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/checkbox/primeng-checkbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/checkbox/primeng-checkbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/checkbox" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/checkbox/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/checkbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/checkbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './checkbox';
Index: trip-planner-front/node_modules/primeng/chip/chip.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chip/chip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chip/chip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,26 @@
+import { EventEmitter } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Chip {
+    label: string;
+    icon: string;
+    image: string;
+    style: any;
+    styleClass: string;
+    removable: boolean;
+    removeIcon: string;
+    onRemove: EventEmitter<any>;
+    visible: boolean;
+    containerClass(): {
+        'p-chip p-component': boolean;
+        'p-chip-image': boolean;
+    };
+    close(event: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Chip, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Chip, "p-chip", never, { "label": "label"; "icon": "icon"; "image": "image"; "style": "style"; "styleClass": "styleClass"; "removable": "removable"; "removeIcon": "removeIcon"; }, { "onRemove": "onRemove"; }, never, ["*"]>;
+}
+export declare class ChipModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ChipModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ChipModule, [typeof Chip], [typeof i1.CommonModule], [typeof Chip]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ChipModule>;
+}
Index: trip-planner-front/node_modules/primeng/chip/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/chip/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chip/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-chip.mjs",
+  "es2020": "../fesm2020/primeng-chip.mjs",
+  "esm2020": "../esm2020/chip/primeng-chip.mjs",
+  "fesm2020": "../fesm2020/primeng-chip.mjs",
+  "fesm2015": "../fesm2015/primeng-chip.mjs",
+  "typings": "primeng-chip.d.ts",
+  "sideEffects": false,
+  "name": "primeng/chip"
+}
Index: trip-planner-front/node_modules/primeng/chip/primeng-chip.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chip/primeng-chip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chip/primeng-chip.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/chip" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/chip/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chip/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chip/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './chip';
Index: trip-planner-front/node_modules/primeng/chips/chips.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chips/chips.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chips/chips.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,65 @@
+import { ElementRef, EventEmitter, AfterContentInit, QueryList, TemplateRef, ChangeDetectorRef } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+import * as i3 from "primeng/api";
+export declare const CHIPS_VALUE_ACCESSOR: any;
+export declare class Chips implements AfterContentInit, ControlValueAccessor {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    style: any;
+    styleClass: string;
+    disabled: boolean;
+    field: string;
+    placeholder: string;
+    max: number;
+    ariaLabelledBy: string;
+    tabindex: number;
+    inputId: string;
+    allowDuplicate: boolean;
+    inputStyle: any;
+    inputStyleClass: any;
+    addOnTab: boolean;
+    addOnBlur: boolean;
+    separator: string;
+    onAdd: EventEmitter<any>;
+    onRemove: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onChipClick: EventEmitter<any>;
+    inputViewChild: ElementRef;
+    templates: QueryList<any>;
+    itemTemplate: TemplateRef<any>;
+    value: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    valueChanged: boolean;
+    focus: boolean;
+    filled: boolean;
+    constructor(el: ElementRef, cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    onClick(): void;
+    onInput(): void;
+    onPaste(event: any): void;
+    updateFilledState(): void;
+    onItemClick(event: Event, item: any): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    resolveFieldData(data: any, field: string): any;
+    onInputFocus(event: FocusEvent): void;
+    onInputBlur(event: FocusEvent): void;
+    removeItem(event: Event, index: number): void;
+    addItem(event: Event, item: string, preventDefault: boolean): void;
+    onKeydown(event: KeyboardEvent): void;
+    updateMaxedOut(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Chips, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Chips, "p-chips", never, { "style": "style"; "styleClass": "styleClass"; "disabled": "disabled"; "field": "field"; "placeholder": "placeholder"; "max": "max"; "ariaLabelledBy": "ariaLabelledBy"; "tabindex": "tabindex"; "inputId": "inputId"; "allowDuplicate": "allowDuplicate"; "inputStyle": "inputStyle"; "inputStyleClass": "inputStyleClass"; "addOnTab": "addOnTab"; "addOnBlur": "addOnBlur"; "separator": "separator"; }, { "onAdd": "onAdd"; "onRemove": "onRemove"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onChipClick": "onChipClick"; }, ["templates"], never>;
+}
+export declare class ChipsModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ChipsModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ChipsModule, [typeof Chips], [typeof i1.CommonModule, typeof i2.InputTextModule, typeof i3.SharedModule], [typeof Chips, typeof i2.InputTextModule, typeof i3.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ChipsModule>;
+}
Index: trip-planner-front/node_modules/primeng/chips/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/chips/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chips/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-chips.mjs",
+  "es2020": "../fesm2020/primeng-chips.mjs",
+  "esm2020": "../esm2020/chips/primeng-chips.mjs",
+  "fesm2020": "../fesm2020/primeng-chips.mjs",
+  "fesm2015": "../fesm2015/primeng-chips.mjs",
+  "typings": "primeng-chips.d.ts",
+  "sideEffects": false,
+  "name": "primeng/chips"
+}
Index: trip-planner-front/node_modules/primeng/chips/primeng-chips.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chips/primeng-chips.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chips/primeng-chips.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/chips" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/chips/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/chips/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/chips/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './chips';
Index: trip-planner-front/node_modules/primeng/codehighlighter/codehighlighter.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/codehighlighter/codehighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/codehighlighter/codehighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,15 @@
+import { ElementRef, AfterViewInit } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class CodeHighlighter implements AfterViewInit {
+    el: ElementRef;
+    constructor(el: ElementRef);
+    ngAfterViewInit(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<CodeHighlighter, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<CodeHighlighter, "[pCode]", never, {}, {}, never>;
+}
+export declare class CodeHighlighterModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<CodeHighlighterModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<CodeHighlighterModule, [typeof CodeHighlighter], [typeof i1.CommonModule], [typeof CodeHighlighter]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<CodeHighlighterModule>;
+}
Index: trip-planner-front/node_modules/primeng/codehighlighter/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/codehighlighter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/codehighlighter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-codehighlighter.mjs",
+  "es2020": "../fesm2020/primeng-codehighlighter.mjs",
+  "esm2020": "../esm2020/codehighlighter/primeng-codehighlighter.mjs",
+  "fesm2020": "../fesm2020/primeng-codehighlighter.mjs",
+  "fesm2015": "../fesm2015/primeng-codehighlighter.mjs",
+  "typings": "primeng-codehighlighter.d.ts",
+  "sideEffects": false,
+  "name": "primeng/codehighlighter"
+}
Index: trip-planner-front/node_modules/primeng/codehighlighter/primeng-codehighlighter.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/codehighlighter/primeng-codehighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/codehighlighter/primeng-codehighlighter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/codehighlighter" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/codehighlighter/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/codehighlighter/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/codehighlighter/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './codehighlighter';
Index: trip-planner-front/node_modules/primeng/colorpicker/colorpicker.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/colorpicker/colorpicker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/colorpicker/colorpicker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import { ElementRef, OnDestroy, EventEmitter, Renderer2, ChangeDetectorRef } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { ControlValueAccessor } from '@angular/forms';
+import { OverlayService, PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const COLORPICKER_VALUE_ACCESSOR: any;
+export declare class ColorPicker implements ControlValueAccessor, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    style: any;
+    styleClass: string;
+    inline: boolean;
+    format: string;
+    appendTo: any;
+    disabled: boolean;
+    tabindex: string;
+    inputId: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    onChange: EventEmitter<any>;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    containerViewChild: ElementRef;
+    inputViewChild: ElementRef;
+    value: any;
+    inputBgColor: string;
+    shown: boolean;
+    overlayVisible: boolean;
+    defaultColor: string;
+    onModelChange: Function;
+    onModelTouched: Function;
+    documentClickListener: Function;
+    documentResizeListener: any;
+    documentMousemoveListener: Function;
+    documentMouseupListener: Function;
+    documentHueMoveListener: Function;
+    scrollHandler: any;
+    selfClick: boolean;
+    colorDragging: boolean;
+    hueDragging: boolean;
+    overlay: HTMLDivElement;
+    colorSelectorViewChild: ElementRef;
+    colorHandleViewChild: ElementRef;
+    hueViewChild: ElementRef;
+    hueHandleViewChild: ElementRef;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, config: PrimeNGConfig, overlayService: OverlayService);
+    set colorSelector(element: ElementRef);
+    set colorHandle(element: ElementRef);
+    set hue(element: ElementRef);
+    set hueHandle(element: ElementRef);
+    onHueMousedown(event: MouseEvent): void;
+    onHueTouchStart(event: any): void;
+    onColorTouchStart(event: any): void;
+    pickHue(event: any, position?: any): void;
+    onColorMousedown(event: MouseEvent): void;
+    onMove(event: any): void;
+    onDragEnd(): void;
+    pickColor(event: any, position?: any): void;
+    getValueToUpdate(): any;
+    updateModel(): void;
+    writeValue(value: any): void;
+    updateColorSelector(): void;
+    updateUI(): void;
+    onInputFocus(): void;
+    show(): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationEnd(event: AnimationEvent): void;
+    appendOverlay(): void;
+    restoreOverlayAppend(): void;
+    alignOverlay(): void;
+    hide(): void;
+    onInputClick(): void;
+    togglePanel(): void;
+    onInputKeydown(event: KeyboardEvent): void;
+    onOverlayClick(event: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    bindDocumentMousemoveListener(): void;
+    unbindDocumentMousemoveListener(): void;
+    bindDocumentMouseupListener(): void;
+    unbindDocumentMouseupListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    onWindowResize(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    validateHSB(hsb: any): {
+        h: number;
+        s: number;
+        b: number;
+    };
+    validateRGB(rgb: any): {
+        r: number;
+        g: number;
+        b: number;
+    };
+    validateHEX(hex: any): any;
+    HEXtoRGB(hex: any): {
+        r: number;
+        g: number;
+        b: number;
+    };
+    HEXtoHSB(hex: any): {
+        h: number;
+        s: number;
+        b: number;
+    };
+    RGBtoHSB(rgb: any): {
+        h: number;
+        s: number;
+        b: number;
+    };
+    HSBtoRGB(hsb: any): {
+        r: number;
+        g: number;
+        b: number;
+    };
+    RGBtoHEX(rgb: any): string;
+    HSBtoHEX(hsb: any): string;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ColorPicker, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ColorPicker, "p-colorPicker", never, { "style": "style"; "styleClass": "styleClass"; "inline": "inline"; "format": "format"; "appendTo": "appendTo"; "disabled": "disabled"; "tabindex": "tabindex"; "inputId": "inputId"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "onChange": "onChange"; "onShow": "onShow"; "onHide": "onHide"; }, never, never>;
+}
+export declare class ColorPickerModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ColorPickerModule, [typeof ColorPicker], [typeof i1.CommonModule], [typeof ColorPicker]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ColorPickerModule>;
+}
Index: trip-planner-front/node_modules/primeng/colorpicker/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/colorpicker/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/colorpicker/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-colorpicker.mjs",
+  "es2020": "../fesm2020/primeng-colorpicker.mjs",
+  "esm2020": "../esm2020/colorpicker/primeng-colorpicker.mjs",
+  "fesm2020": "../fesm2020/primeng-colorpicker.mjs",
+  "fesm2015": "../fesm2015/primeng-colorpicker.mjs",
+  "typings": "primeng-colorpicker.d.ts",
+  "sideEffects": false,
+  "name": "primeng/colorpicker"
+}
Index: trip-planner-front/node_modules/primeng/colorpicker/primeng-colorpicker.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/colorpicker/primeng-colorpicker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/colorpicker/primeng-colorpicker.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/colorpicker" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/colorpicker/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/colorpicker/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/colorpicker/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './colorpicker';
Index: trip-planner-front/node_modules/primeng/confirmdialog/confirmdialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmdialog/confirmdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmdialog/confirmdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,111 @@
+import { ElementRef, OnDestroy, EventEmitter, Renderer2, NgZone, ChangeDetectorRef, QueryList, TemplateRef, AfterContentInit, OnInit } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { PrimeNGConfig } from 'primeng/api';
+import { Confirmation } from 'primeng/api';
+import { ConfirmationService } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/api";
+export declare class ConfirmDialog implements AfterContentInit, OnInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    private confirmationService;
+    zone: NgZone;
+    private cd;
+    config: PrimeNGConfig;
+    header: string;
+    icon: string;
+    message: string;
+    style: any;
+    styleClass: string;
+    maskStyleClass: string;
+    acceptIcon: string;
+    acceptLabel: string;
+    acceptAriaLabel: string;
+    acceptVisible: boolean;
+    rejectIcon: string;
+    rejectLabel: string;
+    rejectAriaLabel: string;
+    rejectVisible: boolean;
+    acceptButtonStyleClass: string;
+    rejectButtonStyleClass: string;
+    closeOnEscape: boolean;
+    dismissableMask: boolean;
+    blockScroll: boolean;
+    rtl: boolean;
+    closable: boolean;
+    appendTo: any;
+    key: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    transitionOptions: string;
+    focusTrap: boolean;
+    defaultFocus: string;
+    breakpoints: any;
+    get visible(): any;
+    set visible(value: any);
+    get position(): string;
+    set position(value: string);
+    onHide: EventEmitter<any>;
+    footer: any;
+    contentViewChild: ElementRef;
+    templates: QueryList<any>;
+    ngAfterContentInit(): void;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    confirmation: Confirmation;
+    _visible: boolean;
+    maskVisible: boolean;
+    documentEscapeListener: any;
+    container: HTMLDivElement;
+    wrapper: HTMLElement;
+    contentContainer: HTMLDivElement;
+    subscription: Subscription;
+    maskClickListener: Function;
+    preWidth: number;
+    _position: string;
+    transformOptions: any;
+    styleElement: any;
+    id: string;
+    confirmationOptions: Confirmation;
+    translationSubscription: Subscription;
+    constructor(el: ElementRef, renderer: Renderer2, confirmationService: ConfirmationService, zone: NgZone, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    ngOnInit(): void;
+    option(name: string): any;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    getElementToFocus(): any;
+    appendContainer(): void;
+    restoreAppend(): void;
+    enableModality(): void;
+    disableModality(): void;
+    createStyle(): void;
+    close(event: Event): void;
+    hide(type?: any): void;
+    moveOnTop(): void;
+    getMaskClass(): {
+        'p-dialog-mask p-component-overlay': boolean;
+        'p-dialog-mask-scrollblocker': boolean;
+    };
+    getPositionClass(): string;
+    bindGlobalListeners(): void;
+    unbindGlobalListeners(): void;
+    unbindMaskClickListener(): void;
+    onOverlayHide(): void;
+    destroyStyle(): void;
+    ngOnDestroy(): void;
+    accept(): void;
+    reject(): void;
+    get acceptButtonLabel(): string;
+    get rejectButtonLabel(): string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmDialog, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmDialog, "p-confirmDialog", never, { "header": "header"; "icon": "icon"; "message": "message"; "style": "style"; "styleClass": "styleClass"; "maskStyleClass": "maskStyleClass"; "acceptIcon": "acceptIcon"; "acceptLabel": "acceptLabel"; "acceptAriaLabel": "acceptAriaLabel"; "acceptVisible": "acceptVisible"; "rejectIcon": "rejectIcon"; "rejectLabel": "rejectLabel"; "rejectAriaLabel": "rejectAriaLabel"; "rejectVisible": "rejectVisible"; "acceptButtonStyleClass": "acceptButtonStyleClass"; "rejectButtonStyleClass": "rejectButtonStyleClass"; "closeOnEscape": "closeOnEscape"; "dismissableMask": "dismissableMask"; "blockScroll": "blockScroll"; "rtl": "rtl"; "closable": "closable"; "appendTo": "appendTo"; "key": "key"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "transitionOptions": "transitionOptions"; "focusTrap": "focusTrap"; "defaultFocus": "defaultFocus"; "breakpoints": "breakpoints"; "visible": "visible"; "position": "position"; }, { "onHide": "onHide"; }, ["footer", "templates"], ["p-footer"]>;
+}
+export declare class ConfirmDialogModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmDialogModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ConfirmDialogModule, [typeof ConfirmDialog], [typeof i1.CommonModule, typeof i2.ButtonModule, typeof i3.RippleModule], [typeof ConfirmDialog, typeof i2.ButtonModule, typeof i4.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ConfirmDialogModule>;
+}
Index: trip-planner-front/node_modules/primeng/confirmdialog/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/confirmdialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmdialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-confirmdialog.mjs",
+  "es2020": "../fesm2020/primeng-confirmdialog.mjs",
+  "esm2020": "../esm2020/confirmdialog/primeng-confirmdialog.mjs",
+  "fesm2020": "../fesm2020/primeng-confirmdialog.mjs",
+  "fesm2015": "../fesm2015/primeng-confirmdialog.mjs",
+  "typings": "primeng-confirmdialog.d.ts",
+  "sideEffects": false,
+  "name": "primeng/confirmdialog"
+}
Index: trip-planner-front/node_modules/primeng/confirmdialog/primeng-confirmdialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmdialog/primeng-confirmdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmdialog/primeng-confirmdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/confirmdialog" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/confirmdialog/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmdialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmdialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './confirmdialog';
Index: trip-planner-front/node_modules/primeng/confirmpopup/confirmpopup.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmpopup/confirmpopup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmpopup/confirmpopup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,63 @@
+import { ElementRef, ChangeDetectorRef, OnDestroy, Renderer2 } from '@angular/core';
+import { Confirmation, ConfirmationService, OverlayService, PrimeNGConfig } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import { AnimationEvent } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+export declare class ConfirmPopup implements OnDestroy {
+    el: ElementRef;
+    private confirmationService;
+    renderer: Renderer2;
+    private cd;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    key: string;
+    defaultFocus: string;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    style: any;
+    styleClass: string;
+    container: HTMLDivElement;
+    subscription: Subscription;
+    confirmation: Confirmation;
+    _visible: boolean;
+    documentClickListener: any;
+    documentResizeListener: any;
+    scrollHandler: any;
+    get visible(): any;
+    set visible(value: any);
+    constructor(el: ElementRef, confirmationService: ConfirmationService, renderer: Renderer2, cd: ChangeDetectorRef, config: PrimeNGConfig, overlayService: OverlayService);
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    getElementToFocus(): any;
+    align(): void;
+    hide(): void;
+    accept(): void;
+    reject(): void;
+    onOverlayClick(event: any): void;
+    bindListeners(): void;
+    unbindListeners(): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    onWindowResize(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    unsubscribeConfirmationSubscriptions(): void;
+    onContainerDestroy(): void;
+    restoreAppend(): void;
+    get acceptButtonLabel(): string;
+    get rejectButtonLabel(): string;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmPopup, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmPopup, "p-confirmPopup", never, { "key": "key"; "defaultFocus": "defaultFocus"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "style": "style"; "styleClass": "styleClass"; "visible": "visible"; }, {}, never, never>;
+}
+export declare class ConfirmPopupModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmPopupModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ConfirmPopupModule, [typeof ConfirmPopup], [typeof i1.CommonModule, typeof i2.ButtonModule], [typeof ConfirmPopup]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ConfirmPopupModule>;
+}
Index: trip-planner-front/node_modules/primeng/confirmpopup/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/confirmpopup/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmpopup/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-confirmpopup.mjs",
+  "es2020": "../fesm2020/primeng-confirmpopup.mjs",
+  "esm2020": "../esm2020/confirmpopup/primeng-confirmpopup.mjs",
+  "fesm2020": "../fesm2020/primeng-confirmpopup.mjs",
+  "fesm2015": "../fesm2015/primeng-confirmpopup.mjs",
+  "typings": "primeng-confirmpopup.d.ts",
+  "sideEffects": false,
+  "name": "primeng/confirmpopup"
+}
Index: trip-planner-front/node_modules/primeng/confirmpopup/primeng-confirmpopup.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmpopup/primeng-confirmpopup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmpopup/primeng-confirmpopup.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/confirmpopup" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/confirmpopup/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/confirmpopup/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/confirmpopup/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './confirmpopup';
Index: trip-planner-front/node_modules/primeng/contextmenu/contextmenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/contextmenu/contextmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/contextmenu/contextmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,84 @@
+import { ElementRef, AfterViewInit, OnDestroy, Renderer2, NgZone, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { MenuItem, ContextMenuService, PrimeNGConfig } from 'primeng/api';
+import { Subject, Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+export declare class ContextMenuSub {
+    item: MenuItem;
+    root: boolean;
+    parentItemKey: any;
+    leafClick: EventEmitter<any>;
+    sublistViewChild: ElementRef;
+    menuitemViewChild: ElementRef;
+    contextMenu: ContextMenu;
+    activeItemKey: string;
+    hideTimeout: any;
+    activeItemKeyChangeSubscription: Subscription;
+    constructor(contextMenu: any);
+    ngOnInit(): void;
+    onItemMouseEnter(event: any, item: any, key: any): void;
+    onItemMouseLeave(event: any, item: any): void;
+    onItemClick(event: any, item: any, menuitem: any, key: any): void;
+    onLeafClick(): void;
+    getKey(index: any): string;
+    isActive(key: any): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuSub, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenuSub, "p-contextMenuSub", never, { "item": "item"; "root": "root"; "parentItemKey": "parentItemKey"; }, { "leafClick": "leafClick"; }, never, never>;
+}
+export declare class ContextMenu implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    zone: NgZone;
+    contextMenuService: ContextMenuService;
+    private config;
+    model: MenuItem[];
+    global: boolean;
+    target: any;
+    style: any;
+    styleClass: string;
+    appendTo: any;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    triggerEvent: string;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    containerViewChild: ElementRef;
+    documentClickListener: any;
+    documentKeydownListener: any;
+    windowResizeListener: any;
+    triggerEventListener: any;
+    ngDestroy$: Subject<unknown>;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, zone: NgZone, contextMenuService: ContextMenuService, config: PrimeNGConfig);
+    ngAfterViewInit(): void;
+    show(event?: MouseEvent): void;
+    hide(): void;
+    moveOnTop(): void;
+    toggle(event?: MouseEvent): void;
+    position(event?: MouseEvent): void;
+    positionSubmenu(sublist: any): void;
+    isItemMatched(menuitem: any): boolean;
+    findNextItem(menuitem: any, isRepeated?: any): any;
+    findPrevItem(menuitem: any, isRepeated?: any): any;
+    getActiveItem(): any;
+    clearActiveItem(): void;
+    removeActiveFromSubLists(el: any): void;
+    removeActiveFromSublist(menuitem: any): void;
+    bindGlobalListeners(): void;
+    findModelItemFromKey(key: any): any;
+    handleItemClick(event: any, item: any, menuitem: any): void;
+    unbindGlobalListeners(): void;
+    onWindowResize(event: any): void;
+    isOutsideClicked(event: Event): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenu, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenu, "p-contextMenu", never, { "model": "model"; "global": "global"; "target": "target"; "style": "style"; "styleClass": "styleClass"; "appendTo": "appendTo"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "triggerEvent": "triggerEvent"; }, { "onShow": "onShow"; "onHide": "onHide"; }, never, never>;
+}
+export declare class ContextMenuModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ContextMenuModule, [typeof ContextMenu, typeof ContextMenuSub], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.RippleModule, typeof i4.TooltipModule], [typeof ContextMenu, typeof i2.RouterModule, typeof i4.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ContextMenuModule>;
+}
Index: trip-planner-front/node_modules/primeng/contextmenu/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/contextmenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/contextmenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-contextmenu.mjs",
+  "es2020": "../fesm2020/primeng-contextmenu.mjs",
+  "esm2020": "../esm2020/contextmenu/primeng-contextmenu.mjs",
+  "fesm2020": "../fesm2020/primeng-contextmenu.mjs",
+  "fesm2015": "../fesm2015/primeng-contextmenu.mjs",
+  "typings": "primeng-contextmenu.d.ts",
+  "sideEffects": false,
+  "name": "primeng/contextmenu"
+}
Index: trip-planner-front/node_modules/primeng/contextmenu/primeng-contextmenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/contextmenu/primeng-contextmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/contextmenu/primeng-contextmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/contextmenu" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/contextmenu/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/contextmenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/contextmenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './contextmenu';
Index: trip-planner-front/node_modules/primeng/dataview/dataview.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dataview/dataview.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dataview/dataview.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,97 @@
+import { ElementRef, OnInit, AfterContentInit, EventEmitter, QueryList, TemplateRef, OnChanges, SimpleChanges, ChangeDetectorRef, OnDestroy } from '@angular/core';
+import { FilterService, PrimeNGConfig } from 'primeng/api';
+import { BlockableUI } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/paginator";
+export declare class DataView implements OnInit, AfterContentInit, OnDestroy, BlockableUI, OnChanges {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    filterService: FilterService;
+    config: PrimeNGConfig;
+    paginator: boolean;
+    rows: number;
+    totalRecords: number;
+    pageLinks: number;
+    rowsPerPageOptions: any[];
+    paginatorPosition: string;
+    alwaysShowPaginator: boolean;
+    paginatorDropdownAppendTo: any;
+    paginatorDropdownScrollHeight: string;
+    currentPageReportTemplate: string;
+    showCurrentPageReport: boolean;
+    showJumpToPageDropdown: boolean;
+    showFirstLastIcon: boolean;
+    showPageLinks: boolean;
+    lazy: boolean;
+    emptyMessage: string;
+    onLazyLoad: EventEmitter<any>;
+    style: any;
+    styleClass: string;
+    trackBy: Function;
+    filterBy: string;
+    filterLocale: string;
+    loading: boolean;
+    loadingIcon: string;
+    first: number;
+    sortField: string;
+    sortOrder: number;
+    value: any[];
+    onPage: EventEmitter<any>;
+    onSort: EventEmitter<any>;
+    onChangeLayout: EventEmitter<any>;
+    header: any;
+    footer: any;
+    templates: QueryList<any>;
+    _value: any[];
+    listItemTemplate: TemplateRef<any>;
+    gridItemTemplate: TemplateRef<any>;
+    itemTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    emptyMessageTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    paginatorLeftTemplate: TemplateRef<any>;
+    paginatorRightTemplate: TemplateRef<any>;
+    paginatorDropdownItemTemplate: TemplateRef<any>;
+    filteredValue: any[];
+    filterValue: string;
+    initialized: boolean;
+    _layout: string;
+    translationSubscription: Subscription;
+    get layout(): string;
+    set layout(layout: string);
+    constructor(el: ElementRef, cd: ChangeDetectorRef, filterService: FilterService, config: PrimeNGConfig);
+    ngOnInit(): void;
+    ngOnChanges(simpleChanges: SimpleChanges): void;
+    ngAfterContentInit(): void;
+    updateItemTemplate(): void;
+    changeLayout(layout: string): void;
+    updateTotalRecords(): void;
+    paginate(event: any): void;
+    sort(): void;
+    isEmpty(): boolean;
+    createLazyLoadMetadata(): any;
+    getBlockableElement(): HTMLElement;
+    get emptyMessageLabel(): string;
+    filter(filter: string, filterMatchMode?: string): void;
+    hasFilter(): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DataView, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<DataView, "p-dataView", never, { "paginator": "paginator"; "rows": "rows"; "totalRecords": "totalRecords"; "pageLinks": "pageLinks"; "rowsPerPageOptions": "rowsPerPageOptions"; "paginatorPosition": "paginatorPosition"; "alwaysShowPaginator": "alwaysShowPaginator"; "paginatorDropdownAppendTo": "paginatorDropdownAppendTo"; "paginatorDropdownScrollHeight": "paginatorDropdownScrollHeight"; "currentPageReportTemplate": "currentPageReportTemplate"; "showCurrentPageReport": "showCurrentPageReport"; "showJumpToPageDropdown": "showJumpToPageDropdown"; "showFirstLastIcon": "showFirstLastIcon"; "showPageLinks": "showPageLinks"; "lazy": "lazy"; "emptyMessage": "emptyMessage"; "style": "style"; "styleClass": "styleClass"; "trackBy": "trackBy"; "filterBy": "filterBy"; "filterLocale": "filterLocale"; "loading": "loading"; "loadingIcon": "loadingIcon"; "first": "first"; "sortField": "sortField"; "sortOrder": "sortOrder"; "value": "value"; "layout": "layout"; }, { "onLazyLoad": "onLazyLoad"; "onPage": "onPage"; "onSort": "onSort"; "onChangeLayout": "onChangeLayout"; }, ["header", "footer", "templates"], ["p-header", "p-footer"]>;
+}
+export declare class DataViewLayoutOptions {
+    dv: DataView;
+    style: any;
+    styleClass: string;
+    constructor(dv: DataView);
+    changeLayout(event: Event, layout: string): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DataViewLayoutOptions, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<DataViewLayoutOptions, "p-dataViewLayoutOptions", never, { "style": "style"; "styleClass": "styleClass"; }, {}, never, never>;
+}
+export declare class DataViewModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DataViewModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DataViewModule, [typeof DataView, typeof DataViewLayoutOptions], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.PaginatorModule], [typeof DataView, typeof i2.SharedModule, typeof DataViewLayoutOptions]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DataViewModule>;
+}
Index: trip-planner-front/node_modules/primeng/dataview/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dataview/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dataview/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dataview.mjs",
+  "es2020": "../fesm2020/primeng-dataview.mjs",
+  "esm2020": "../esm2020/dataview/primeng-dataview.mjs",
+  "fesm2020": "../fesm2020/primeng-dataview.mjs",
+  "fesm2015": "../fesm2015/primeng-dataview.mjs",
+  "typings": "primeng-dataview.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dataview"
+}
Index: trip-planner-front/node_modules/primeng/dataview/primeng-dataview.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dataview/primeng-dataview.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dataview/primeng-dataview.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dataview" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dataview/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dataview/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dataview/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './dataview';
Index: trip-planner-front/node_modules/primeng/defer/defer.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/defer/defer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/defer/defer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,26 @@
+import { ElementRef, AfterViewInit, OnDestroy, TemplateRef, EmbeddedViewRef, ViewContainerRef, Renderer2, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class DeferredLoader implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    viewContainer: ViewContainerRef;
+    private cd;
+    onLoad: EventEmitter<any>;
+    template: TemplateRef<any>;
+    documentScrollListener: Function;
+    view: EmbeddedViewRef<any>;
+    constructor(el: ElementRef, renderer: Renderer2, viewContainer: ViewContainerRef, cd: ChangeDetectorRef);
+    ngAfterViewInit(): void;
+    shouldLoad(): boolean;
+    load(): void;
+    isLoaded(): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DeferredLoader, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<DeferredLoader, "[pDefer]", never, {}, { "onLoad": "onLoad"; }, ["template"]>;
+}
+export declare class DeferModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DeferModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DeferModule, [typeof DeferredLoader], [typeof i1.CommonModule], [typeof DeferredLoader]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DeferModule>;
+}
Index: trip-planner-front/node_modules/primeng/defer/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/defer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/defer/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-defer.mjs",
+  "es2020": "../fesm2020/primeng-defer.mjs",
+  "esm2020": "../esm2020/defer/primeng-defer.mjs",
+  "fesm2020": "../fesm2020/primeng-defer.mjs",
+  "fesm2015": "../fesm2015/primeng-defer.mjs",
+  "typings": "primeng-defer.d.ts",
+  "sideEffects": false,
+  "name": "primeng/defer"
+}
Index: trip-planner-front/node_modules/primeng/defer/primeng-defer.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/defer/primeng-defer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/defer/primeng-defer.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/defer" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/defer/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/defer/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/defer/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './defer';
Index: trip-planner-front/node_modules/primeng/dialog/dialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dialog/dialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dialog/dialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,146 @@
+import { ElementRef, OnDestroy, EventEmitter, Renderer2, QueryList, NgZone, ChangeDetectorRef, AfterContentInit, TemplateRef, OnInit } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { Header, Footer, PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/focustrap";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/api";
+export declare class Dialog implements AfterContentInit, OnInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    zone: NgZone;
+    private cd;
+    config: PrimeNGConfig;
+    header: string;
+    draggable: boolean;
+    resizable: boolean;
+    get positionLeft(): number;
+    set positionLeft(_positionLeft: number);
+    get positionTop(): number;
+    set positionTop(_positionTop: number);
+    contentStyle: any;
+    contentStyleClass: string;
+    modal: boolean;
+    closeOnEscape: boolean;
+    dismissableMask: boolean;
+    rtl: boolean;
+    closable: boolean;
+    get responsive(): boolean;
+    set responsive(_responsive: boolean);
+    appendTo: any;
+    breakpoints: any;
+    styleClass: string;
+    maskStyleClass: string;
+    showHeader: boolean;
+    get breakpoint(): number;
+    set breakpoint(_breakpoint: number);
+    blockScroll: boolean;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    minX: number;
+    minY: number;
+    focusOnShow: boolean;
+    maximizable: boolean;
+    keepInViewport: boolean;
+    focusTrap: boolean;
+    transitionOptions: string;
+    closeIcon: string;
+    closeAriaLabel: string;
+    closeTabindex: string;
+    minimizeIcon: string;
+    maximizeIcon: string;
+    headerFacet: QueryList<Header>;
+    footerFacet: QueryList<Footer>;
+    templates: QueryList<any>;
+    headerViewChild: ElementRef;
+    contentViewChild: ElementRef;
+    footerViewChild: ElementRef;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    visibleChange: EventEmitter<any>;
+    onResizeInit: EventEmitter<any>;
+    onResizeEnd: EventEmitter<any>;
+    onDragEnd: EventEmitter<any>;
+    onMaximize: EventEmitter<any>;
+    headerTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    _visible: boolean;
+    maskVisible: boolean;
+    container: HTMLDivElement;
+    wrapper: HTMLElement;
+    dragging: boolean;
+    documentDragListener: any;
+    documentDragEndListener: any;
+    resizing: boolean;
+    documentResizeListener: any;
+    documentResizeEndListener: any;
+    documentEscapeListener: Function;
+    maskClickListener: Function;
+    lastPageX: number;
+    lastPageY: number;
+    preventVisibleChangePropagation: boolean;
+    maximized: boolean;
+    preMaximizeContentHeight: number;
+    preMaximizeContainerWidth: number;
+    preMaximizeContainerHeight: number;
+    preMaximizePageX: number;
+    preMaximizePageY: number;
+    id: string;
+    _style: any;
+    _position: string;
+    originalStyle: any;
+    transformOptions: any;
+    styleElement: any;
+    constructor(el: ElementRef, renderer: Renderer2, zone: NgZone, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    ngAfterContentInit(): void;
+    ngOnInit(): void;
+    get visible(): any;
+    set visible(value: any);
+    get style(): any;
+    set style(value: any);
+    get position(): string;
+    set position(value: string);
+    focus(): void;
+    close(event: Event): void;
+    enableModality(): void;
+    disableModality(): void;
+    maximize(): void;
+    unbindMaskClickListener(): void;
+    moveOnTop(): void;
+    createStyle(): void;
+    initDrag(event: MouseEvent): void;
+    onKeydown(event: KeyboardEvent): void;
+    onDrag(event: MouseEvent): void;
+    endDrag(event: MouseEvent): void;
+    resetPosition(): void;
+    center(): void;
+    initResize(event: MouseEvent): void;
+    onResize(event: MouseEvent): void;
+    resizeEnd(event: any): void;
+    bindGlobalListeners(): void;
+    unbindGlobalListeners(): void;
+    bindDocumentDragListener(): void;
+    unbindDocumentDragListener(): void;
+    bindDocumentDragEndListener(): void;
+    unbindDocumentDragEndListener(): void;
+    bindDocumentResizeListeners(): void;
+    unbindDocumentResizeListeners(): void;
+    bindDocumentEscapeListener(): void;
+    unbindDocumentEscapeListener(): void;
+    appendContainer(): void;
+    restoreAppend(): void;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    onContainerDestroy(): void;
+    destroyStyle(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Dialog, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Dialog, "p-dialog", never, { "header": "header"; "draggable": "draggable"; "resizable": "resizable"; "positionLeft": "positionLeft"; "positionTop": "positionTop"; "contentStyle": "contentStyle"; "contentStyleClass": "contentStyleClass"; "modal": "modal"; "closeOnEscape": "closeOnEscape"; "dismissableMask": "dismissableMask"; "rtl": "rtl"; "closable": "closable"; "responsive": "responsive"; "appendTo": "appendTo"; "breakpoints": "breakpoints"; "styleClass": "styleClass"; "maskStyleClass": "maskStyleClass"; "showHeader": "showHeader"; "breakpoint": "breakpoint"; "blockScroll": "blockScroll"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "minX": "minX"; "minY": "minY"; "focusOnShow": "focusOnShow"; "maximizable": "maximizable"; "keepInViewport": "keepInViewport"; "focusTrap": "focusTrap"; "transitionOptions": "transitionOptions"; "closeIcon": "closeIcon"; "closeAriaLabel": "closeAriaLabel"; "closeTabindex": "closeTabindex"; "minimizeIcon": "minimizeIcon"; "maximizeIcon": "maximizeIcon"; "visible": "visible"; "style": "style"; "position": "position"; }, { "onShow": "onShow"; "onHide": "onHide"; "visibleChange": "visibleChange"; "onResizeInit": "onResizeInit"; "onResizeEnd": "onResizeEnd"; "onDragEnd": "onDragEnd"; "onMaximize": "onMaximize"; }, ["headerFacet", "footerFacet", "templates"], ["p-header", "*", "p-footer"]>;
+}
+export declare class DialogModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DialogModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DialogModule, [typeof Dialog], [typeof i1.CommonModule, typeof i2.FocusTrapModule, typeof i3.RippleModule], [typeof Dialog, typeof i4.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DialogModule>;
+}
Index: trip-planner-front/node_modules/primeng/dialog/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dialog.mjs",
+  "es2020": "../fesm2020/primeng-dialog.mjs",
+  "esm2020": "../esm2020/dialog/primeng-dialog.mjs",
+  "fesm2020": "../fesm2020/primeng-dialog.mjs",
+  "fesm2015": "../fesm2015/primeng-dialog.mjs",
+  "typings": "primeng-dialog.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dialog"
+}
Index: trip-planner-front/node_modules/primeng/dialog/primeng-dialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dialog/primeng-dialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dialog/primeng-dialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dialog" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dialog/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './dialog';
Index: trip-planner-front/node_modules/primeng/divider/divider.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/divider/divider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/divider/divider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Divider {
+    styleClass: string;
+    style: any;
+    layout: string;
+    type: string;
+    align: string;
+    containerClass(): {
+        'p-divider p-component': boolean;
+        'p-divider-horizontal': boolean;
+        'p-divider-vertical': boolean;
+        'p-divider-solid': boolean;
+        'p-divider-dashed': boolean;
+        'p-divider-dotted': boolean;
+        'p-divider-left': boolean;
+        'p-divider-center': boolean;
+        'p-divider-right': boolean;
+        'p-divider-top': boolean;
+        'p-divider-bottom': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Divider, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Divider, "p-divider", never, { "styleClass": "styleClass"; "style": "style"; "layout": "layout"; "type": "type"; "align": "align"; }, {}, never, ["*"]>;
+}
+export declare class DividerModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DividerModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DividerModule, [typeof Divider], [typeof i1.CommonModule], [typeof Divider]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DividerModule>;
+}
Index: trip-planner-front/node_modules/primeng/divider/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/divider/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/divider/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-divider.mjs",
+  "es2020": "../fesm2020/primeng-divider.mjs",
+  "esm2020": "../esm2020/divider/primeng-divider.mjs",
+  "fesm2020": "../fesm2020/primeng-divider.mjs",
+  "fesm2015": "../fesm2015/primeng-divider.mjs",
+  "typings": "primeng-divider.d.ts",
+  "sideEffects": false,
+  "name": "primeng/divider"
+}
Index: trip-planner-front/node_modules/primeng/divider/primeng-divider.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/divider/primeng-divider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/divider/primeng-divider.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/divider" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/divider/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/divider/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/divider/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './divider';
Index: trip-planner-front/node_modules/primeng/dock/dock.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dock/dock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dock/dock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,43 @@
+import { ElementRef, TemplateRef, AfterContentInit, QueryList, ChangeDetectorRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+import * as i5 from "primeng/api";
+export declare class Dock implements AfterContentInit {
+    private el;
+    cd: ChangeDetectorRef;
+    id: string;
+    style: any;
+    styleClass: string;
+    model: any[];
+    position: string;
+    templates: QueryList<any>;
+    itemTemplate: TemplateRef<any>;
+    currentIndex: number;
+    constructor(el: ElementRef, cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    onListMouseLeave(): void;
+    onItemMouseEnter(index: any): void;
+    onItemClick(e: any, item: any): void;
+    get containerClass(): {
+        [x: string]: boolean;
+    };
+    isClickableRouterLink(item: any): boolean;
+    itemClass(index: any): {
+        'p-dock-item': boolean;
+        'p-dock-item-second-prev': boolean;
+        'p-dock-item-prev': boolean;
+        'p-dock-item-current': boolean;
+        'p-dock-item-next': boolean;
+        'p-dock-item-second-next': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Dock, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Dock, "p-dock", never, { "id": "id"; "style": "style"; "styleClass": "styleClass"; "model": "model"; "position": "position"; }, {}, ["templates"], never>;
+}
+export declare class DockModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DockModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DockModule, [typeof Dock], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.RippleModule, typeof i4.TooltipModule], [typeof Dock, typeof i5.SharedModule, typeof i4.TooltipModule, typeof i2.RouterModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DockModule>;
+}
Index: trip-planner-front/node_modules/primeng/dock/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dock/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dock/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dock.mjs",
+  "es2020": "../fesm2020/primeng-dock.mjs",
+  "esm2020": "../esm2020/dock/primeng-dock.mjs",
+  "fesm2020": "../fesm2020/primeng-dock.mjs",
+  "fesm2015": "../fesm2015/primeng-dock.mjs",
+  "typings": "primeng-dock.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dock"
+}
Index: trip-planner-front/node_modules/primeng/dock/primeng-dock.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dock/primeng-dock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dock/primeng-dock.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dock" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dock/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dock/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dock/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './dock';
Index: trip-planner-front/node_modules/primeng/dom/connectedoverlayscrollhandler.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dom/connectedoverlayscrollhandler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dom/connectedoverlayscrollhandler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,9 @@
+export declare class ConnectedOverlayScrollHandler {
+    element: any;
+    listener: any;
+    scrollableParents: any;
+    constructor(element: any, listener?: any);
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    destroy(): void;
+}
Index: trip-planner-front/node_modules/primeng/dom/domhandler.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dom/domhandler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dom/domhandler.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,73 @@
+/**
+ * @dynamic is for runtime initializing DomHandler.browser
+ *
+ * If delete below comment, we can see this error message:
+ *  Metadata collected contains an error that will be reported at runtime:
+ *  Only initialized variables and constants can be referenced
+ *  because the value of this variable is needed by the template compiler.
+ */
+export declare class DomHandler {
+    static zindex: number;
+    private static calculatedScrollbarWidth;
+    private static calculatedScrollbarHeight;
+    private static browser;
+    static addClass(element: any, className: string): void;
+    static addMultipleClasses(element: any, className: string): void;
+    static removeClass(element: any, className: string): void;
+    static hasClass(element: any, className: string): boolean;
+    static siblings(element: any): any;
+    static find(element: any, selector: string): any[];
+    static findSingle(element: any, selector: string): any;
+    static index(element: any): number;
+    static indexWithinGroup(element: any, attributeName: string): number;
+    static relativePosition(element: any, target: any): void;
+    static absolutePosition(element: any, target: any): void;
+    static getParents(element: any, parents?: any): any;
+    static getScrollableParents(element: any): any[];
+    static getHiddenElementOuterHeight(element: any): number;
+    static getHiddenElementOuterWidth(element: any): number;
+    static getHiddenElementDimensions(element: any): any;
+    static scrollInView(container: any, item: any): void;
+    static fadeIn(element: any, duration: number): void;
+    static fadeOut(element: any, ms: any): void;
+    static getWindowScrollTop(): number;
+    static getWindowScrollLeft(): number;
+    static matches(element: any, selector: string): boolean;
+    static getOuterWidth(el: any, margin?: any): any;
+    static getHorizontalPadding(el: any): number;
+    static getHorizontalMargin(el: any): number;
+    static innerWidth(el: any): any;
+    static width(el: any): any;
+    static getInnerHeight(el: any): any;
+    static getOuterHeight(el: any, margin?: any): any;
+    static getHeight(el: any): number;
+    static getWidth(el: any): number;
+    static getViewport(): any;
+    static getOffset(el: any): {
+        top: any;
+        left: any;
+    };
+    static replaceElementWith(element: any, replacementElement: any): any;
+    static getUserAgent(): string;
+    static isIE(): boolean;
+    static isIOS(): boolean;
+    static isAndroid(): boolean;
+    static isTouchDevice(): boolean;
+    static appendChild(element: any, target: any): void;
+    static removeChild(element: any, target: any): void;
+    static removeElement(element: Element): void;
+    static isElement(obj: any): boolean;
+    static calculateScrollbarWidth(el?: HTMLElement): number;
+    static calculateScrollbarHeight(): number;
+    static invokeElementMethod(element: any, methodName: string, args?: any[]): void;
+    static clearSelection(): void;
+    static getBrowser(): any;
+    static resolveUserAgent(): {
+        browser: any;
+        version: any;
+    };
+    static isInteger(value: any): boolean;
+    static isHidden(element: HTMLElement): boolean;
+    static getFocusableElements(element: HTMLElement): any[];
+    static generateZIndex(): number;
+}
Index: trip-planner-front/node_modules/primeng/dom/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dom/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dom/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dom.mjs",
+  "es2020": "../fesm2020/primeng-dom.mjs",
+  "esm2020": "../esm2020/dom/primeng-dom.mjs",
+  "fesm2020": "../fesm2020/primeng-dom.mjs",
+  "fesm2015": "../fesm2015/primeng-dom.mjs",
+  "typings": "primeng-dom.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dom"
+}
Index: trip-planner-front/node_modules/primeng/dom/primeng-dom.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dom/primeng-dom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dom/primeng-dom.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dom" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dom/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dom/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dom/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './domhandler';
+export * from './connectedoverlayscrollhandler';
Index: trip-planner-front/node_modules/primeng/dragdrop/dragdrop.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dragdrop/dragdrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dragdrop/dragdrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,63 @@
+import { OnDestroy, AfterViewInit, ElementRef, EventEmitter, NgZone } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Draggable implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    zone: NgZone;
+    scope: string;
+    dragEffect: string;
+    dragHandle: string;
+    onDragStart: EventEmitter<any>;
+    onDragEnd: EventEmitter<any>;
+    onDrag: EventEmitter<any>;
+    handle: any;
+    dragListener: any;
+    mouseDownListener: any;
+    mouseUpListener: any;
+    _pDraggableDisabled: boolean;
+    constructor(el: ElementRef, zone: NgZone);
+    get pDraggableDisabled(): boolean;
+    set pDraggableDisabled(_pDraggableDisabled: boolean);
+    ngAfterViewInit(): void;
+    bindDragListener(): void;
+    unbindDragListener(): void;
+    bindMouseListeners(): void;
+    unbindMouseListeners(): void;
+    drag(event: any): void;
+    dragStart(event: any): void;
+    dragEnd(event: any): void;
+    mousedown(event: any): void;
+    mouseup(event: any): void;
+    allowDrag(): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Draggable, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<Draggable, "[pDraggable]", never, { "scope": "pDraggable"; "dragEffect": "dragEffect"; "dragHandle": "dragHandle"; "pDraggableDisabled": "pDraggableDisabled"; }, { "onDragStart": "onDragStart"; "onDragEnd": "onDragEnd"; "onDrag": "onDrag"; }, never>;
+}
+export declare class Droppable implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    zone: NgZone;
+    scope: string | string[];
+    pDroppableDisabled: boolean;
+    dropEffect: string;
+    onDragEnter: EventEmitter<any>;
+    onDragLeave: EventEmitter<any>;
+    onDrop: EventEmitter<any>;
+    constructor(el: ElementRef, zone: NgZone);
+    dragOverListener: any;
+    ngAfterViewInit(): void;
+    bindDragOverListener(): void;
+    unbindDragOverListener(): void;
+    dragOver(event: any): void;
+    drop(event: any): void;
+    dragEnter(event: any): void;
+    dragLeave(event: any): void;
+    allowDrop(event: any): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Droppable, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<Droppable, "[pDroppable]", never, { "scope": "pDroppable"; "pDroppableDisabled": "pDroppableDisabled"; "dropEffect": "dropEffect"; }, { "onDragEnter": "onDragEnter"; "onDragLeave": "onDragLeave"; "onDrop": "onDrop"; }, never>;
+}
+export declare class DragDropModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DragDropModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DragDropModule, [typeof Draggable, typeof Droppable], [typeof i1.CommonModule], [typeof Draggable, typeof Droppable]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DragDropModule>;
+}
Index: trip-planner-front/node_modules/primeng/dragdrop/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dragdrop/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dragdrop/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dragdrop.mjs",
+  "es2020": "../fesm2020/primeng-dragdrop.mjs",
+  "esm2020": "../esm2020/dragdrop/primeng-dragdrop.mjs",
+  "fesm2020": "../fesm2020/primeng-dragdrop.mjs",
+  "fesm2015": "../fesm2015/primeng-dragdrop.mjs",
+  "typings": "primeng-dragdrop.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dragdrop"
+}
Index: trip-planner-front/node_modules/primeng/dragdrop/primeng-dragdrop.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dragdrop/primeng-dragdrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dragdrop/primeng-dragdrop.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dragdrop" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dragdrop/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dragdrop/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dragdrop/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './dragdrop';
Index: trip-planner-front/node_modules/primeng/dropdown/dropdown.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dropdown/dropdown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dropdown/dropdown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,215 @@
+import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import { ElementRef, OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, Renderer2, EventEmitter, QueryList, TemplateRef, ChangeDetectorRef, NgZone } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { OverlayService, PrimeNGConfig, SelectItem } from 'primeng/api';
+import { FilterService } from 'primeng/api';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "@angular/cdk/scrolling";
+import * as i4 from "primeng/tooltip";
+import * as i5 from "primeng/ripple";
+export declare const DROPDOWN_VALUE_ACCESSOR: any;
+export declare class DropdownItem {
+    option: SelectItem;
+    selected: boolean;
+    label: string;
+    disabled: boolean;
+    visible: boolean;
+    itemSize: number;
+    template: TemplateRef<any>;
+    onClick: EventEmitter<any>;
+    onOptionClick(event: Event): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownItem, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<DropdownItem, "p-dropdownItem", never, { "option": "option"; "selected": "selected"; "label": "label"; "disabled": "disabled"; "visible": "visible"; "itemSize": "itemSize"; "template": "template"; }, { "onClick": "onClick"; }, never, never>;
+}
+export declare class Dropdown implements OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, ControlValueAccessor {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    zone: NgZone;
+    filterService: FilterService;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    scrollHeight: string;
+    filter: boolean;
+    name: string;
+    style: any;
+    panelStyle: any;
+    styleClass: string;
+    panelStyleClass: string;
+    readonly: boolean;
+    required: boolean;
+    editable: boolean;
+    appendTo: any;
+    tabindex: number;
+    placeholder: string;
+    filterPlaceholder: string;
+    filterLocale: string;
+    inputId: string;
+    selectId: string;
+    dataKey: string;
+    filterBy: string;
+    autofocus: boolean;
+    resetFilterOnHide: boolean;
+    dropdownIcon: string;
+    optionLabel: string;
+    optionValue: string;
+    optionDisabled: string;
+    optionGroupLabel: string;
+    optionGroupChildren: string;
+    autoDisplayFirst: boolean;
+    group: boolean;
+    showClear: boolean;
+    emptyFilterMessage: string;
+    emptyMessage: string;
+    virtualScroll: boolean;
+    itemSize: number;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    ariaFilterLabel: string;
+    ariaLabelledBy: string;
+    filterMatchMode: string;
+    maxlength: number;
+    tooltip: string;
+    tooltipPosition: string;
+    tooltipPositionStyle: string;
+    tooltipStyleClass: string;
+    autofocusFilter: boolean;
+    onChange: EventEmitter<any>;
+    onFilter: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onClick: EventEmitter<any>;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    onClear: EventEmitter<any>;
+    containerViewChild: ElementRef;
+    filterViewChild: ElementRef;
+    accessibleViewChild: ElementRef;
+    viewPort: CdkVirtualScrollViewport;
+    editableInputViewChild: ElementRef;
+    templates: QueryList<any>;
+    private _disabled;
+    get disabled(): boolean;
+    set disabled(_disabled: boolean);
+    overlay: HTMLDivElement;
+    itemsWrapper: HTMLDivElement;
+    itemTemplate: TemplateRef<any>;
+    groupTemplate: TemplateRef<any>;
+    selectedItemTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    emptyFilterTemplate: TemplateRef<any>;
+    emptyTemplate: TemplateRef<any>;
+    selectedOption: any;
+    _options: any[];
+    value: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    optionsToDisplay: any[];
+    hover: boolean;
+    focused: boolean;
+    overlayVisible: boolean;
+    documentClickListener: any;
+    scrollHandler: any;
+    optionsChanged: boolean;
+    panel: HTMLDivElement;
+    dimensionsUpdated: boolean;
+    hoveredItem: any;
+    selectedOptionUpdated: boolean;
+    _filterValue: string;
+    searchValue: string;
+    searchIndex: number;
+    searchTimeout: any;
+    previousSearchChar: string;
+    currentSearchChar: string;
+    documentResizeListener: any;
+    virtualAutoScrolled: boolean;
+    virtualScrollSelectedIndex: number;
+    viewPortOffsetTop: number;
+    preventModelTouched: boolean;
+    id: string;
+    labelId: string;
+    listId: string;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, zone: NgZone, filterService: FilterService, config: PrimeNGConfig, overlayService: OverlayService);
+    ngAfterContentInit(): void;
+    ngOnInit(): void;
+    get options(): any[];
+    set options(val: any[]);
+    get filterValue(): string;
+    set filterValue(val: string);
+    ngAfterViewInit(): void;
+    get label(): string;
+    get emptyMessageLabel(): string;
+    get emptyFilterMessageLabel(): string;
+    get filled(): any;
+    updateEditableLabel(): void;
+    getOptionLabel(option: any): any;
+    getOptionValue(option: any): any;
+    isOptionDisabled(option: any): any;
+    getOptionGroupLabel(optionGroup: any): any;
+    getOptionGroupChildren(optionGroup: any): any;
+    onItemClick(event: any): void;
+    selectItem(event: any, option: any): void;
+    ngAfterViewChecked(): void;
+    writeValue(value: any): void;
+    resetFilter(): void;
+    updateSelectedOption(val: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    onMouseclick(event: any): void;
+    onOverlayClick(event: any): void;
+    isInputClick(event: any): boolean;
+    isOutsideClicked(event: Event): boolean;
+    isEmpty(): boolean;
+    onEditableInputClick(): void;
+    onEditableInputFocus(event: any): void;
+    onEditableInputChange(event: any): void;
+    show(): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationEnd(event: AnimationEvent): void;
+    scrollToSelectedVirtualScrollElement(): void;
+    updateVirtualScrollSelectedIndex(resetOffset: any): void;
+    appendOverlay(): void;
+    restoreOverlayAppend(): void;
+    hide(): void;
+    alignOverlay(): void;
+    onInputFocus(event: any): void;
+    onInputBlur(event: any): void;
+    findPrevEnabledOption(index: any): any;
+    findNextEnabledOption(index: any): any;
+    onKeydown(event: KeyboardEvent, search: boolean): void;
+    search(event: KeyboardEvent): void;
+    searchOption(index: any): any;
+    searchOptionInRange(start: any, end: any): any;
+    searchOptionWithinGroup(index: any): any;
+    findOptionIndex(val: any, opts: any[]): number;
+    findOptionGroupIndex(val: any, opts: any[]): any;
+    findOption(val: any, opts: any[], inGroup?: boolean): SelectItem;
+    onFilterInputChange(event: any): void;
+    activateFilter(): void;
+    applyFocus(): void;
+    focus(): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    onWindowResize(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    clear(event: Event): void;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Dropdown, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Dropdown, "p-dropdown", never, { "scrollHeight": "scrollHeight"; "filter": "filter"; "name": "name"; "style": "style"; "panelStyle": "panelStyle"; "styleClass": "styleClass"; "panelStyleClass": "panelStyleClass"; "readonly": "readonly"; "required": "required"; "editable": "editable"; "appendTo": "appendTo"; "tabindex": "tabindex"; "placeholder": "placeholder"; "filterPlaceholder": "filterPlaceholder"; "filterLocale": "filterLocale"; "inputId": "inputId"; "selectId": "selectId"; "dataKey": "dataKey"; "filterBy": "filterBy"; "autofocus": "autofocus"; "resetFilterOnHide": "resetFilterOnHide"; "dropdownIcon": "dropdownIcon"; "optionLabel": "optionLabel"; "optionValue": "optionValue"; "optionDisabled": "optionDisabled"; "optionGroupLabel": "optionGroupLabel"; "optionGroupChildren": "optionGroupChildren"; "autoDisplayFirst": "autoDisplayFirst"; "group": "group"; "showClear": "showClear"; "emptyFilterMessage": "emptyFilterMessage"; "emptyMessage": "emptyMessage"; "virtualScroll": "virtualScroll"; "itemSize": "itemSize"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "ariaFilterLabel": "ariaFilterLabel"; "ariaLabelledBy": "ariaLabelledBy"; "filterMatchMode": "filterMatchMode"; "maxlength": "maxlength"; "tooltip": "tooltip"; "tooltipPosition": "tooltipPosition"; "tooltipPositionStyle": "tooltipPositionStyle"; "tooltipStyleClass": "tooltipStyleClass"; "autofocusFilter": "autofocusFilter"; "disabled": "disabled"; "options": "options"; "filterValue": "filterValue"; }, { "onChange": "onChange"; "onFilter": "onFilter"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onClick": "onClick"; "onShow": "onShow"; "onHide": "onHide"; "onClear": "onClear"; }, ["templates"], never>;
+}
+export declare class DropdownModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DropdownModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DropdownModule, [typeof Dropdown, typeof DropdownItem], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.ScrollingModule, typeof i4.TooltipModule, typeof i5.RippleModule], [typeof Dropdown, typeof i2.SharedModule, typeof i3.ScrollingModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DropdownModule>;
+}
Index: trip-planner-front/node_modules/primeng/dropdown/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dropdown/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dropdown/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dropdown.mjs",
+  "es2020": "../fesm2020/primeng-dropdown.mjs",
+  "esm2020": "../esm2020/dropdown/primeng-dropdown.mjs",
+  "fesm2020": "../fesm2020/primeng-dropdown.mjs",
+  "fesm2015": "../fesm2015/primeng-dropdown.mjs",
+  "typings": "primeng-dropdown.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dropdown"
+}
Index: trip-planner-front/node_modules/primeng/dropdown/primeng-dropdown.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dropdown/primeng-dropdown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dropdown/primeng-dropdown.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dropdown" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dropdown/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dropdown/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dropdown/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './dropdown';
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dialogservice.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dialogservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dialogservice.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+import { ComponentFactoryResolver, ApplicationRef, Injector, Type, ComponentRef } from '@angular/core';
+import { DynamicDialogComponent } from './dynamicdialog';
+import { DynamicDialogConfig } from './dynamicdialog-config';
+import { DynamicDialogRef } from './dynamicdialog-ref';
+import * as i0 from "@angular/core";
+export declare class DialogService {
+    private componentFactoryResolver;
+    private appRef;
+    private injector;
+    dialogComponentRefMap: Map<DynamicDialogRef, ComponentRef<DynamicDialogComponent>>;
+    constructor(componentFactoryResolver: ComponentFactoryResolver, appRef: ApplicationRef, injector: Injector);
+    open(componentType: Type<any>, config: DynamicDialogConfig): DynamicDialogRef;
+    private appendDialogComponentToBody;
+    private removeDialogComponentFromBody;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DialogService, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<DialogService>;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-config.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-config.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-config.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,19 @@
+export declare class DynamicDialogConfig {
+    data?: any;
+    header?: string;
+    footer?: string;
+    width?: string;
+    height?: string;
+    closeOnEscape?: boolean;
+    baseZIndex?: number;
+    autoZIndex?: boolean;
+    dismissableMask?: boolean;
+    rtl?: boolean;
+    style?: any;
+    contentStyle?: any;
+    styleClass?: string;
+    transitionOptions?: string;
+    closable?: boolean;
+    showHeader?: boolean;
+    modal?: boolean;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-injector.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-injector.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-injector.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';
+export declare class DynamicDialogInjector implements Injector {
+    private _parentInjector;
+    private _additionalTokens;
+    constructor(_parentInjector: Injector, _additionalTokens: WeakMap<any, any>);
+    get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
+    get(token: any, notFoundValue?: any): any;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-ref.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-ref.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog-ref.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+export declare class DynamicDialogRef {
+    constructor();
+    close(result?: any): void;
+    destroy(): void;
+    private readonly _onClose;
+    onClose: Observable<any>;
+    private readonly _onDestroy;
+    onDestroy: Observable<any>;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,58 @@
+import { Type, ComponentFactoryResolver, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, Renderer2, NgZone, ElementRef } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { DynamicDialogContent } from './dynamicdialogcontent';
+import { DynamicDialogConfig } from './dynamicdialog-config';
+import { DynamicDialogRef } from './dynamicdialog-ref';
+import { PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "./dynamicdialogcontent";
+import * as i2 from "@angular/common";
+export declare class DynamicDialogComponent implements AfterViewInit, OnDestroy {
+    private componentFactoryResolver;
+    private cd;
+    renderer: Renderer2;
+    config: DynamicDialogConfig;
+    private dialogRef;
+    zone: NgZone;
+    primeNGConfig: PrimeNGConfig;
+    visible: boolean;
+    componentRef: ComponentRef<any>;
+    mask: HTMLDivElement;
+    insertionPoint: DynamicDialogContent;
+    maskViewChild: ElementRef;
+    childComponentType: Type<any>;
+    container: HTMLDivElement;
+    wrapper: HTMLElement;
+    documentKeydownListener: any;
+    documentEscapeListener: Function;
+    maskClickListener: Function;
+    transformOptions: string;
+    constructor(componentFactoryResolver: ComponentFactoryResolver, cd: ChangeDetectorRef, renderer: Renderer2, config: DynamicDialogConfig, dialogRef: DynamicDialogRef, zone: NgZone, primeNGConfig: PrimeNGConfig);
+    ngAfterViewInit(): void;
+    loadChildComponent(componentType: Type<any>): void;
+    moveOnTop(): void;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    onContainerDestroy(): void;
+    close(): void;
+    hide(): void;
+    enableModality(): void;
+    disableModality(): void;
+    onKeydown(event: KeyboardEvent): void;
+    focus(): void;
+    bindGlobalListeners(): void;
+    unbindGlobalListeners(): void;
+    bindDocumentKeydownListener(): void;
+    unbindDocumentKeydownListener(): void;
+    bindDocumentEscapeListener(): void;
+    unbindDocumentEscapeListener(): void;
+    unbindMaskClickListener(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicDialogComponent, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<DynamicDialogComponent, "p-dynamicDialog", never, {}, {}, never, never>;
+}
+export declare class DynamicDialogModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicDialogModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<DynamicDialogModule, [typeof DynamicDialogComponent, typeof i1.DynamicDialogContent], [typeof i2.CommonModule], never>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<DynamicDialogModule>;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialogcontent.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialogcontent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/dynamicdialogcontent.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+import { ViewContainerRef } from '@angular/core';
+import * as i0 from "@angular/core";
+export declare class DynamicDialogContent {
+    viewContainerRef: ViewContainerRef;
+    constructor(viewContainerRef: ViewContainerRef);
+    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicDialogContent, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<DynamicDialogContent, "[pDynamicDialogContent]", never, {}, {}, never>;
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-dynamicdialog.mjs",
+  "es2020": "../fesm2020/primeng-dynamicdialog.mjs",
+  "esm2020": "../esm2020/dynamicdialog/primeng-dynamicdialog.mjs",
+  "fesm2020": "../fesm2020/primeng-dynamicdialog.mjs",
+  "fesm2015": "../fesm2015/primeng-dynamicdialog.mjs",
+  "typings": "primeng-dynamicdialog.d.ts",
+  "sideEffects": false,
+  "name": "primeng/dynamicdialog"
+}
Index: trip-planner-front/node_modules/primeng/dynamicdialog/primeng-dynamicdialog.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/primeng-dynamicdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/primeng-dynamicdialog.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/dynamicdialog" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/dynamicdialog/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/dynamicdialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/dynamicdialog/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,6 @@
+export * from './dialogservice';
+export * from './dynamicdialog';
+export * from './dynamicdialog-config';
+export * from './dynamicdialog-injector';
+export * from './dynamicdialog-ref';
+export * from './dynamicdialog';
Index: trip-planner-front/node_modules/primeng/editor/editor.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/editor/editor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/editor/editor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,44 @@
+import { ElementRef, AfterViewInit, EventEmitter, QueryList, AfterContentInit, TemplateRef } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare const EDITOR_VALUE_ACCESSOR: any;
+export declare class Editor implements AfterViewInit, AfterContentInit, ControlValueAccessor {
+    el: ElementRef;
+    onTextChange: EventEmitter<any>;
+    onSelectionChange: EventEmitter<any>;
+    toolbar: any;
+    style: any;
+    styleClass: string;
+    placeholder: string;
+    formats: string[];
+    modules: any;
+    bounds: any;
+    scrollingContainer: any;
+    debug: string;
+    onInit: EventEmitter<any>;
+    templates: QueryList<any>;
+    value: string;
+    _readonly: boolean;
+    onModelChange: Function;
+    onModelTouched: Function;
+    quill: any;
+    headerTemplate: TemplateRef<any>;
+    constructor(el: ElementRef);
+    ngAfterViewInit(): void;
+    ngAfterContentInit(): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    getQuill(): any;
+    get readonly(): boolean;
+    set readonly(val: boolean);
+    static ɵfac: i0.ɵɵFactoryDeclaration<Editor, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Editor, "p-editor", never, { "style": "style"; "styleClass": "styleClass"; "placeholder": "placeholder"; "formats": "formats"; "modules": "modules"; "bounds": "bounds"; "scrollingContainer": "scrollingContainer"; "debug": "debug"; "readonly": "readonly"; }, { "onTextChange": "onTextChange"; "onSelectionChange": "onSelectionChange"; "onInit": "onInit"; }, ["toolbar", "templates"], ["p-header"]>;
+}
+export declare class EditorModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<EditorModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<EditorModule, [typeof Editor], [typeof i1.CommonModule], [typeof Editor, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<EditorModule>;
+}
Index: trip-planner-front/node_modules/primeng/editor/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/editor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/editor/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-editor.mjs",
+  "es2020": "../fesm2020/primeng-editor.mjs",
+  "esm2020": "../esm2020/editor/primeng-editor.mjs",
+  "fesm2020": "../fesm2020/primeng-editor.mjs",
+  "fesm2015": "../fesm2015/primeng-editor.mjs",
+  "typings": "primeng-editor.d.ts",
+  "sideEffects": false,
+  "name": "primeng/editor"
+}
Index: trip-planner-front/node_modules/primeng/editor/primeng-editor.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/editor/primeng-editor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/editor/primeng-editor.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/editor" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/editor/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/editor/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/editor/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './editor';
Index: trip-planner-front/node_modules/primeng/esm2020/accordion/accordion.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/accordion/accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/accordion/accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,318 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, Inject, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { SharedModule, Header, PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+let idx = 0;
+export class AccordionTab {
+    constructor(accordion, changeDetector) {
+        this.changeDetector = changeDetector;
+        this.cache = true;
+        this.selectedChange = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-accordiontab-${idx++}`;
+        this.accordion = accordion;
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            if (this._selected && this.cache) {
+                this.loaded = true;
+            }
+            this.changeDetector.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.disabled) {
+            return false;
+        }
+        let index = this.findTabIndex();
+        if (this.selected) {
+            this.selected = false;
+            this.accordion.onClose.emit({ originalEvent: event, index: index });
+        }
+        else {
+            if (!this.accordion.multiple) {
+                for (var i = 0; i < this.accordion.tabs.length; i++) {
+                    this.accordion.tabs[i].selected = false;
+                    this.accordion.tabs[i].selectedChange.emit(false);
+                    this.accordion.tabs[i].changeDetector.markForCheck();
+                }
+            }
+            this.selected = true;
+            this.loaded = true;
+            this.accordion.onOpen.emit({ originalEvent: event, index: index });
+        }
+        this.selectedChange.emit(this.selected);
+        this.accordion.updateActiveIndex();
+        this.changeDetector.markForCheck();
+        event.preventDefault();
+    }
+    findTabIndex() {
+        let index = -1;
+        for (var i = 0; i < this.accordion.tabs.length; i++) {
+            if (this.accordion.tabs[i] == this) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    get hasHeaderFacet() {
+        return this.headerFacet && this.headerFacet.length > 0;
+    }
+    onKeydown(event) {
+        if (event.which === 32 || event.which === 13) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    ngOnDestroy() {
+        this.accordion.tabs.splice(this.findTabIndex(), 1);
+    }
+}
+AccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+AccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AccordionTab, selector: "p-accordionTab", inputs: { header: "header", disabled: "disabled", cache: "cache", transitionOptions: "transitionOptions", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", predicate: Header }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('tabContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-accordionTab', template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('tabContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Accordion)]
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], selectedChange: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChildren,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }] } });
+export class Accordion {
+    constructor(el, changeDetector) {
+        this.el = el;
+        this.changeDetector = changeDetector;
+        this.onClose = new EventEmitter();
+        this.onOpen = new EventEmitter();
+        this.expandIcon = 'pi pi-fw pi-chevron-right';
+        this.collapseIcon = 'pi pi-fw pi-chevron-down';
+        this.activeIndexChange = new EventEmitter();
+        this.tabs = [];
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabListSubscription = this.tabList.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    initTabs() {
+        this.tabs = this.tabList.toArray();
+        this.updateSelectionState();
+        this.changeDetector.markForCheck();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        this.updateSelectionState();
+    }
+    updateSelectionState() {
+        if (this.tabs && this.tabs.length && this._activeIndex != null) {
+            for (let i = 0; i < this.tabs.length; i++) {
+                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);
+                let changed = selected !== this.tabs[i].selected;
+                if (changed) {
+                    this.tabs[i].selected = selected;
+                    this.tabs[i].selectedChange.emit(selected);
+                    this.tabs[i].changeDetector.markForCheck();
+                }
+            }
+        }
+    }
+    updateActiveIndex() {
+        let index = this.multiple ? [] : null;
+        this.tabs.forEach((tab, i) => {
+            if (tab.selected) {
+                if (this.multiple) {
+                    index.push(i);
+                }
+                else {
+                    index = i;
+                    return;
+                }
+            }
+        });
+        this.preventActiveIndexPropagation = true;
+        this.activeIndexChange.emit(index);
+    }
+    ngOnDestroy() {
+        if (this.tabListSubscription) {
+            this.tabListSubscription.unsubscribe();
+        }
+    }
+}
+Accordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Accordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Accordion, selector: "p-accordion", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", activeIndex: "activeIndex" }, outputs: { onClose: "onClose", onOpen: "onOpen", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabList", predicate: AccordionTab }], ngImport: i0, template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-accordion',
+                    template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], onOpen: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], tabList: [{
+                type: ContentChildren,
+                args: [AccordionTab]
+            }], activeIndex: [{
+                type: Input
+            }] } });
+export class AccordionModule {
+}
+AccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });
+AccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Accordion, AccordionTab, SharedModule],
+                    declarations: [Accordion, AccordionTab]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQTJDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUM5RixlQUFlLEVBQWdDLE1BQU0sRUFBRSxVQUFVLEVBQXdCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBZSxNQUFNLGFBQWEsQ0FBQzs7O0FBRy9FLElBQUksR0FBRyxHQUFXLENBQUMsQ0FBQztBQWdEcEIsTUFBTSxPQUFPLFlBQVk7SUE0Q3JCLFlBQWlELFNBQVMsRUFBUyxjQUFpQztRQUFqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUF0QzNGLFVBQUssR0FBWSxJQUFJLENBQUM7UUFFckIsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCxzQkFBaUIsR0FBVyxzQ0FBc0MsQ0FBQztRQTRCNUUsT0FBRSxHQUFXLGtCQUFrQixHQUFHLEVBQUUsRUFBRSxDQUFDO1FBT25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBc0IsQ0FBQztJQUM1QyxDQUFDO0lBNUJELElBQWEsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEdBQVE7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFFckIsSUFBSSxDQUFDLElB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UyxFQXpJVCxZQUFZLEVBaVBZLFlBQVk7NkdBR3BDLGVBQWUsWUFKZixDQUFDLFlBQVksQ0FBQyxFQUNVLFlBQVk7MkZBR3BDLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDOUMsWUFBWSxFQUFFLENBQUMsU0FBUyxFQUFDLFlBQVksQ0FBQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcbiAgICBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCwgZm9yd2FyZFJlZiwgVGVtcGxhdGVSZWYsIFZpZXdSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIEhlYWRlciwgUHJpbWVUZW1wbGF0ZSwgQmxvY2thYmxlVUkgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxubGV0IGlkeDogbnVtYmVyID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWFjY29yZGlvblRhYicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtYWNjb3JkaW9uLXRhYlwiIFtuZ0NsYXNzXT1cInsncC1hY2NvcmRpb24tdGFiLWFjdGl2ZSc6IHNlbGVjdGVkfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtYWNjb3JkaW9uLWhlYWRlclwiIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOiBzZWxlY3RlZCwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cbiAgICAgICAgICAgICAgICA8YSByb2xlPVwidGFiXCIgY2xhc3M9XCJwLWFjY29yZGlvbi1oZWFkZXItbGlua1wiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCIgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyBudWxsIDogMFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZCArICctY29udGVudCdcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1hY2NvcmRpb24tdG9nZ2xlLWljb25cIiBbbmdDbGFzc109XCJzZWxlY3RlZCA/IGFjY29yZGlvbi5jb2xsYXBzZUljb24gOiBhY2NvcmRpb24uZXhwYW5kSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWFjY29yZGlvbi1oZWFkZXItdGV4dFwiICpuZ0lmPVwiIWhhc0hlYWRlckZhY2V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2hlYWRlcn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtaGVhZGVyXCIgKm5nSWY9XCJoYXNIZWFkZXJGYWNldFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWQgKyAnLWNvbnRlbnQnXCIgY2xhc3M9XCJwLXRvZ2dsZWFibGUtY29udGVudFwiIFtAdGFiQ29udGVudF09XCJzZWxlY3RlZCA/IHt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHt0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9uc319IDoge3ZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7dHJhbnNpdGlvblBhcmFtczogdHJhbnNpdGlvbk9wdGlvbnN9fVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInJlZ2lvblwiIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzZWxlY3RlZFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWFjY29yZGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRUZW1wbGF0ZSAmJiAoY2FjaGUgPyBsb2FkZWQgOiBzZWxlY3RlZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3RhYkNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnaGlkZGVuJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ3Zpc2libGUnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPD0+IGhpZGRlbicsIFtzdHlsZSh7b3ZlcmZsb3c6ICdoaWRkZW4nfSksIGFuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoMCkpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2FjY29yZGlvbi5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25UYWIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oSGVhZGVyKSBoZWFkZXJGYWNldDogUXVlcnlMaXN0PEhlYWRlcj47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGdldCBzZWxlY3RlZCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2FkZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaWQ6IHN0cmluZyA9IGBwLWFjY29yZGlvbnRhYi0ke2lkeCsrfWA7XG5cbiAgICBsb2FkZWQ6IGJvb2xlYW47XG5cbiAgICBhY2NvcmRpb246IEFjY29yZGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBBY2NvcmRpb24pKSBhY2NvcmRpb24sIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hY2NvcmRpb24gPSBhY2NvcmRpb24gYXMgQWNjb3JkaW9uO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZmluZFRhYkluZGV4KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uLm9uQ2xvc2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpbmRleDogaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWNjb3JkaW9uLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFjY29yZGlvbi50YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uLnRhYnNbaV0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udGFic1tpXS5zZWxlY3RlZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udGFic1tpXS5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24ub25PcGVuLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgaW5kZXg6IGluZGV4IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLmFjY29yZGlvbi51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZmluZFRhYkluZGV4KCkge1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFjY29yZGlvbi50YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY2NvcmRpb24udGFic1tpXSA9PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXQgaGFzSGVhZGVyRmFjZXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYWRlckZhY2V0ICYmIHRoaXMuaGVhZGVyRmFjZXQubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSAzMiB8fCBldmVudC53aGljaCA9PT0gMTMpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5hY2NvcmRpb24udGFicy5zcGxpY2UodGhpcy5maW5kVGFiSW5kZXgoKSwgMSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtYWNjb3JkaW9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLWFjY29yZGlvbiBwLWNvbXBvbmVudCdcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb24gaW1wbGVtZW50cyBCbG9ja2FibGVVSSwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uT3BlbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZXhwYW5kSWNvbjogc3RyaW5nID0gJ3BpIHBpLWZ3IHBpLWNoZXZyb24tcmlnaHQnO1xuXG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmcgPSAncGkgcGktZncgcGktY2hldnJvbi1kb3duJztcblxuICAgIEBPdXRwdXQoKSBhY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEFjY29yZGlvblRhYikgdGFiTGlzdDogUXVlcnlMaXN0PEFjY29yZGlvblRhYj47XG5cbiAgICB0YWJMaXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9hY3RpdmVJbmRleDogYW55O1xuXG4gICAgcHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgdGFiczogQWNjb3JkaW9uVGFiW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0VGFicygpO1xuXG4gICAgICAgIHRoaXMudGFiTGlzdFN1YnNjcmlwdGlvbiA9IHRoaXMudGFiTGlzdC5jaGFuZ2VzLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFRhYnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdFRhYnMoKTogYW55IHtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJMaXN0LnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25TdGF0ZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldEJsb2NrYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnTCoHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgYWN0aXZlSW5kZXgoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUluZGV4O1xuICAgIH1cblxuICAgIHNldCBhY3RpdmVJbmRleCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl9hY3RpdmVJbmRleCA9IHZhbDtcbiAgICAgICAgaWYgKHRoaXMucHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uU3RhdGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTZWxlY3Rpb25TdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFicyAmJiB0aGlzLnRhYnMubGVuZ3RoICYmIHRoaXMuX2FjdGl2ZUluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5tdWx0aXBsZSA/IHRoaXMuX2FjdGl2ZUluZGV4LmluY2x1ZGVzKGkpIDogKGkgPT09IHRoaXMuX2FjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgY2hhbmdlZCA9IHNlbGVjdGVkICE9PSB0aGlzLnRhYnNbaV0uc2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNbaV0uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzW2ldLnNlbGVjdGVkQ2hhbmdlLmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNbaV0uY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWN0aXZlSW5kZXgoKSB7XG4gICAgICAgIGxldCBpbmRleDogYW55ID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRhYi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4LnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy50YWJMaXN0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkxpc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQWNjb3JkaW9uLEFjY29yZGlvblRhYixTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0FjY29yZGlvbixBY2NvcmRpb25UYWJdXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbk1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/accordion/primeng-accordion.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/accordion/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/accordion/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1hY2NvcmRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYWNjb3JkaW9uL3ByaW1lbmctYWNjb3JkaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/accordion/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/accordion/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/accordion/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './accordion';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2NvcmRpb24vcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/blockableui.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/blockableui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/blockableui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2thYmxldWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL2Jsb2NrYWJsZXVpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJsb2NrYWJsZVVJIHtcbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50O1xufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/confirmaeventtype.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/confirmaeventtype.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/confirmaeventtype.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+export var ConfirmEventType;
+(function (ConfirmEventType) {
+    ConfirmEventType[ConfirmEventType["ACCEPT"] = 0] = "ACCEPT";
+    ConfirmEventType[ConfirmEventType["REJECT"] = 1] = "REJECT";
+    ConfirmEventType[ConfirmEventType["CANCEL"] = 2] = "CANCEL";
+})(ConfirmEventType || (ConfirmEventType = {}));
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWFldmVudHR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL2NvbmZpcm1hZXZlbnR0eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDeEIsMkRBQU0sQ0FBQTtJQUNOLDJEQUFNLENBQUE7SUFDTiwyREFBTSxDQUFBO0FBQ1YsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb25maXJtRXZlbnRUeXBlIHtcbiAgICBBQ0NFUFQsIFxuICAgIFJFSkVDVCwgXG4gICAgQ0FOQ0VMXG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/confirmation.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/confirmation.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/confirmation.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9jb25maXJtYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvbiB7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBoZWFkZXI/OiBzdHJpbmc7XG4gICAgYWNjZXB0PzogRnVuY3Rpb247XG4gICAgcmVqZWN0PzogRnVuY3Rpb247XG4gICAgYWNjZXB0TGFiZWw/OiBzdHJpbmc7XG4gICAgcmVqZWN0TGFiZWw/OiBzdHJpbmc7XG4gICAgYWNjZXB0SWNvbj86IHN0cmluZztcbiAgICByZWplY3RJY29uPzogc3RyaW5nO1xuICAgIGFjY2VwdFZpc2libGU/OiBib29sZWFuO1xuICAgIHJlamVjdFZpc2libGU/OiBib29sZWFuO1xuICAgIGJsb2NrU2Nyb2xsPzogYm9vbGVhbjtcbiAgICBjbG9zZU9uRXNjYXBlPzogYm9vbGVhbjtcbiAgICBkaXNtaXNzYWJsZU1hc2s/OiBib29sZWFuO1xuICAgIGRlZmF1bHRGb2N1cz86IHN0cmluZztcbiAgICBhY2NlcHRCdXR0b25TdHlsZUNsYXNzPzogc3RyaW5nO1xuICAgIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgdGFyZ2V0PzogRXZlbnRUYXJnZXQ7XG4gICAgYWNjZXB0RXZlbnQ/OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICByZWplY3RFdmVudD86IEV2ZW50RW1pdHRlcjxhbnk+O1xufVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/api/confirmationservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/confirmationservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/confirmationservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,28 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class ConfirmationService {
+    constructor() {
+        this.requireConfirmationSource = new Subject();
+        this.acceptConfirmationSource = new Subject();
+        this.requireConfirmation$ = this.requireConfirmationSource.asObservable();
+        this.accept = this.acceptConfirmationSource.asObservable();
+    }
+    confirm(confirmation) {
+        this.requireConfirmationSource.next(confirmation);
+        return this;
+    }
+    close() {
+        this.requireConfirmationSource.next(null);
+        return this;
+    }
+    onAccept() {
+        this.acceptConfirmationSource.next(null);
+    }
+}
+ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, decorators: [{
+            type: Injectable
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvY29uZmlybWF0aW9uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFHWSw4QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUN4RCw2QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUUvRCx5QkFBb0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckUsV0FBTSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQWV6RDtJQWJHLE9BQU8sQ0FBQyxZQUEwQjtRQUM5QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7Z0hBcEJRLG1CQUFtQjtvSEFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuL2NvbmZpcm1hdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgcmVxdWlyZUNvbmZpcm1hdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PENvbmZpcm1hdGlvbj4oKTtcbiAgICBwcml2YXRlIGFjY2VwdENvbmZpcm1hdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PENvbmZpcm1hdGlvbj4oKTtcblxuICAgIHJlcXVpcmVDb25maXJtYXRpb24kID0gdGhpcy5yZXF1aXJlQ29uZmlybWF0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGFjY2VwdCA9IHRoaXMuYWNjZXB0Q29uZmlybWF0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uZmlybShjb25maXJtYXRpb246IENvbmZpcm1hdGlvbikge1xuICAgICAgICB0aGlzLnJlcXVpcmVDb25maXJtYXRpb25Tb3VyY2UubmV4dChjb25maXJtYXRpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlQ29uZmlybWF0aW9uU291cmNlLm5leHQobnVsbCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG9uQWNjZXB0KCkge1xuICAgICAgICB0aGlzLmFjY2VwdENvbmZpcm1hdGlvblNvdXJjZS5uZXh0KG51bGwpO1xuICAgIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/contextmenuservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/contextmenuservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/contextmenuservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,23 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class ContextMenuService {
+    constructor() {
+        this.activeItemKeyChange = new Subject();
+        this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();
+    }
+    changeKey(key) {
+        this.activeItemKey = key;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+    reset() {
+        this.activeItemKey = null;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+}
+ContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, decorators: [{
+            type: Injectable
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVzZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9jb250ZXh0bWVudXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQixNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBR1ksd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUVwRCx5QkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7S0FhbEU7SUFURyxTQUFTLENBQUMsR0FBRztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7K0dBaEJRLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBhY3RpdmVJdGVtS2V5Q2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgYWN0aXZlSXRlbUtleUNoYW5nZSQgPSB0aGlzLmFjdGl2ZUl0ZW1LZXlDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBhY3RpdmVJdGVtS2V5OiBzdHJpbmc7XG5cbiAgICBjaGFuZ2VLZXkoa2V5KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUtleSA9IGtleTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtS2V5Q2hhbmdlLm5leHQodGhpcy5hY3RpdmVJdGVtS2V5KTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtS2V5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtS2V5Q2hhbmdlLm5leHQodGhpcy5hY3RpdmVJdGVtS2V5KTtcbiAgICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/filtermatchmode.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/filtermatchmode.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/filtermatchmode.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,23 @@
+export class FilterMatchMode {
+}
+FilterMatchMode.STARTS_WITH = 'startsWith';
+FilterMatchMode.CONTAINS = 'contains';
+FilterMatchMode.NOT_CONTAINS = 'notContains';
+FilterMatchMode.ENDS_WITH = 'endsWith';
+FilterMatchMode.EQUALS = 'equals';
+FilterMatchMode.NOT_EQUALS = 'notEquals';
+FilterMatchMode.IN = 'in';
+FilterMatchMode.LESS_THAN = 'lt';
+FilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';
+FilterMatchMode.GREATER_THAN = 'gt';
+FilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';
+FilterMatchMode.BETWEEN = 'between';
+FilterMatchMode.IS = 'is';
+FilterMatchMode.IS_NOT = 'isNot';
+FilterMatchMode.BEFORE = 'before';
+FilterMatchMode.AFTER = 'after';
+FilterMatchMode.DATE_IS = 'dateIs';
+FilterMatchMode.DATE_IS_NOT = 'dateIsNot';
+FilterMatchMode.DATE_BEFORE = 'dateBefore';
+FilterMatchMode.DATE_AFTER = 'dateAfter';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVybWF0Y2htb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9maWx0ZXJtYXRjaG1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGVBQWU7O0FBQ0QsMkJBQVcsR0FBRyxZQUFZLENBQUM7QUFDM0Isd0JBQVEsR0FBRyxVQUFVLENBQUM7QUFDdEIsNEJBQVksR0FBRyxhQUFhLENBQUM7QUFDN0IseUJBQVMsR0FBRyxVQUFVLENBQUM7QUFDdkIsc0JBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsMEJBQVUsR0FBRyxXQUFXLENBQUM7QUFDekIsa0JBQUUsR0FBRyxJQUFJLENBQUM7QUFDVix5QkFBUyxHQUFHLElBQUksQ0FBQztBQUNqQixxQ0FBcUIsR0FBRyxLQUFLLENBQUM7QUFDOUIsNEJBQVksR0FBRyxJQUFJLENBQUM7QUFDcEIsd0NBQXdCLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLHVCQUFPLEdBQUcsU0FBUyxDQUFDO0FBQ3BCLGtCQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ1Ysc0JBQU0sR0FBRyxPQUFPLENBQUM7QUFDakIsc0JBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIscUJBQUssR0FBRyxPQUFPLENBQUM7QUFDaEIsdUJBQU8sR0FBRyxRQUFRLENBQUM7QUFDbkIsMkJBQVcsR0FBRyxXQUFXLENBQUM7QUFDMUIsMkJBQVcsR0FBRyxZQUFZLENBQUM7QUFDM0IsMEJBQVUsR0FBRyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsdGVyTWF0Y2hNb2RlIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUQVJUU19XSVRIID0gJ3N0YXJ0c1dpdGgnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09OVEFJTlMgPSAnY29udGFpbnMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9UX0NPTlRBSU5TID0gJ25vdENvbnRhaW5zJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVORFNfV0lUSCA9ICdlbmRzV2l0aCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFUVVBTFMgPSAnZXF1YWxzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PVF9FUVVBTFMgPSAnbm90RXF1YWxzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElOID0gJ2luJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExFU1NfVEhBTiA9ICdsdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBMRVNTX1RIQU5fT1JfRVFVQUxfVE8gPSAnbHRlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdSRUFURVJfVEhBTiA9ICdndCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBHUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE8gPSAnZ3RlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJFVFdFRU4gPSAnYmV0d2Vlbic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJUyA9ICdpcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJU19OT1QgPSAnaXNOb3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQkVGT1JFID0gJ2JlZm9yZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBRlRFUiA9ICdhZnRlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFX0lTID0gJ2RhdGVJcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFX0lTX05PVCA9ICdkYXRlSXNOb3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFURV9CRUZPUkUgPSAnZGF0ZUJlZm9yZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRFX0FGVEVSID0gJ2RhdGVBZnRlcic7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/filtermetadata.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/filtermetadata.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/filtermetadata.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVybWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL2ZpbHRlcm1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbHRlck1ldGFkYXRhIHtcbiAgICB2YWx1ZT86IGFueTtcbiAgICBtYXRjaE1vZGU/OiBzdHJpbmc7XG4gICAgb3BlcmF0b3I/OiBzdHJpbmc7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/filteroperator.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/filteroperator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/filteroperator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+export class FilterOperator {
+}
+FilterOperator.AND = 'and';
+FilterOperator.OR = 'or';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyb3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL2ZpbHRlcm9wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjOztBQUNBLGtCQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ1osaUJBQUUsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsdGVyT3BlcmF0b3Ige1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQU5EID0gJ2FuZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUiA9ICdvcic7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/filterservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/filterservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/filterservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,221 @@
+import { Injectable } from '@angular/core';
+import { ObjectUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+export class FilterService {
+    constructor() {
+        this.filters = {
+            startsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.slice(0, filterValue.length) === filterValue;
+            },
+            contains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) !== -1;
+            },
+            notContains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) === -1;
+            },
+            endsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;
+            },
+            equals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() === filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            notEquals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return false;
+                }
+                if (value === undefined || value === null) {
+                    return true;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() !== filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            in: (value, filter) => {
+                if (filter === undefined || filter === null || filter.length === 0) {
+                    return true;
+                }
+                for (let i = 0; i < filter.length; i++) {
+                    if (ObjectUtils.equals(value, filter[i])) {
+                        return true;
+                    }
+                }
+                return false;
+            },
+            between: (value, filter) => {
+                if (filter == null || filter[0] == null || filter[1] == null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime)
+                    return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();
+                else
+                    return filter[0] <= value && value <= filter[1];
+            },
+            lt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() < filter.getTime();
+                else
+                    return value < filter;
+            },
+            lte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() <= filter.getTime();
+                else
+                    return value <= filter;
+            },
+            gt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() > filter.getTime();
+                else
+                    return value > filter;
+            },
+            gte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() >= filter.getTime();
+                else
+                    return value >= filter;
+            },
+            is: (value, filter, filterLocale) => {
+                return this.filters.equals(value, filter, filterLocale);
+            },
+            isNot: (value, filter, filterLocale) => {
+                return this.filters.notEquals(value, filter, filterLocale);
+            },
+            before: (value, filter, filterLocale) => {
+                return this.filters.lt(value, filter, filterLocale);
+            },
+            after: (value, filter, filterLocale) => {
+                return this.filters.gt(value, filter, filterLocale);
+            },
+            dateIs: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() === filter.toDateString();
+            },
+            dateIsNot: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() !== filter.toDateString();
+            },
+            dateBefore: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() < filter.getTime();
+            },
+            dateAfter: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() > filter.getTime();
+            }
+        };
+    }
+    filter(value, fields, filterValue, filterMatchMode, filterLocale) {
+        let filteredItems = [];
+        if (value) {
+            for (let item of value) {
+                for (let field of fields) {
+                    let fieldValue = ObjectUtils.resolveFieldData(item, field);
+                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {
+                        filteredItems.push(item);
+                        break;
+                    }
+                }
+            }
+        }
+        return filteredItems;
+    }
+    register(rule, fn) {
+        this.filters[rule] = fn;
+    }
+}
+FilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+FilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvZmlsdGVyc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBc0JXLFlBQU8sR0FBRztZQUNiLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBYSxFQUFVLEVBQUU7Z0JBQ2pELElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ2pFLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2dCQUVELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUN2QyxPQUFPLEtBQUssQ0FBQztpQkFDaEI7Z0JBRUQsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0YsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFOUYsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQWEsRUFBVSxFQUFFO2dCQUMvQyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElB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QztJQUN6QixDQUFDO0lBd1BELFFBQVEsQ0FBQyxJQUFZLEVBQUUsRUFBWTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDOzswR0E3UVEsYUFBYTs4R0FBYixhQUFhLGNBREQsTUFBTTsyRkFDbEIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZXJ2aWNlIHtcblxuICAgIGZpbHRlcih2YWx1ZTogYW55W10sIGZpZWxkczogYW55W10sIGZpbHRlclZhbHVlOiBhbnksIGZpbHRlck1hdGNoTW9kZTogc3RyaW5nLCBmaWx0ZXJMb2NhbGU/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGZpbHRlcmVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZFZhbHVlID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBmaWVsZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyc1tmaWx0ZXJNYXRjaE1vZGVdKGZpZWxkVmFsdWUsIGZpbHRlclZhbHVlLCBmaWx0ZXJMb2NhbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zO1xuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZmlsdGVycyA9IHtcbiAgICAgICAgc3RhcnRzV2l0aDogKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZT8pOmJvb2xlYW4gPT4gIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXIudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHModmFsdWUudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICBcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZS5zbGljZSgwLCBmaWx0ZXJWYWx1ZS5sZW5ndGgpID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluczogKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZT8pOmJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlciA9PT0gbnVsbCB8fCAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLnRyaW0oKSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGxldCBmaWx0ZXJWYWx1ZSA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHMoZmlsdGVyLnRvU3RyaW5nKCkpLnRvTG9jYWxlTG93ZXJDYXNlKGZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSBPYmplY3RVdGlscy5yZW1vdmVBY2NlbnRzKHZhbHVlLnRvU3RyaW5nKCkpLnRvTG9jYWxlTG93ZXJDYXNlKGZpbHRlckxvY2FsZSk7XG4gICAgXG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgIT09IC0xO1xuICAgICAgICB9LFxuXG4gICAgICAgIG5vdENvbnRhaW5zOiAodmFsdWUsIGZpbHRlciwgZmlsdGVyTG9jYWxlPyk6Ym9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsIHx8ICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJyAmJiBmaWx0ZXIudHJpbSgpID09PSAnJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXIudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHModmFsdWUudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICBcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gLTE7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZW5kc1dpdGg6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXIudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IE9iamVjdFV0aWxzLnJlbW92ZUFjY2VudHModmFsdWUudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICBcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlLCBzdHJpbmdWYWx1ZS5sZW5ndGggLSBmaWx0ZXJWYWx1ZS5sZW5ndGgpICE9PSAtMTtcbiAgICAgICAgfSxcblxuICAgICAgICBlcXVhbHM6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnICYmIGZpbHRlci50cmltKCkgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUuZ2V0VGltZSAmJiBmaWx0ZXIuZ2V0VGltZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpID09PSBmaWx0ZXIuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5yZW1vdmVBY2NlbnRzKHZhbHVlLnRvU3RyaW5nKCkpLnRvTG9jYWxlTG93ZXJDYXNlKGZpbHRlckxvY2FsZSkgPT0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXIudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBub3RFcXVhbHM6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnICYmIGZpbHRlci50cmltKCkgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUuZ2V0VGltZSAmJiBmaWx0ZXIuZ2V0VGltZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpICE9PSBmaWx0ZXIuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5yZW1vdmVBY2NlbnRzKHZhbHVlLnRvU3RyaW5nKCkpLnRvTG9jYWxlTG93ZXJDYXNlKGZpbHRlckxvY2FsZSkgIT0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXIudG9TdHJpbmcoKSkudG9Mb2NhbGVMb3dlckNhc2UoZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpbjogKHZhbHVlLCBmaWx0ZXI6IGFueVtdKTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuZXF1YWxzKHZhbHVlLCBmaWx0ZXJbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICBiZXR3ZWVuOiAodmFsdWUsIGZpbHRlcjogYW55W10pOmJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlclswXSA9PSBudWxsIHx8wqBmaWx0ZXJbMV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUuZ2V0VGltZSlcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJbMF0uZ2V0VGltZSgpIDw9IHZhbHVlLmdldFRpbWUoKSAmJiB2YWx1ZS5nZXRUaW1lKCkgPD0gZmlsdGVyWzFdLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyWzBdIDw9IHZhbHVlICYmIHZhbHVlIDw9IGZpbHRlclsxXTtcbiAgICAgICAgfSxcblxuICAgICAgICBsdDogKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZT8pOmJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUuZ2V0VGltZSAmJiBmaWx0ZXIuZ2V0VGltZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpIDwgZmlsdGVyLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPCBmaWx0ZXI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbHRlOiAodmFsdWUsIGZpbHRlciwgZmlsdGVyTG9jYWxlPyk6Ym9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZS5nZXRUaW1lICYmIGZpbHRlci5nZXRUaW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCkgPD0gZmlsdGVyLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPD0gZmlsdGVyO1xuICAgICAgICB9LFxuXG4gICAgICAgIGd0OiAodmFsdWUsIGZpbHRlciwgZmlsdGVyTG9jYWxlPyk6Ym9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZS5nZXRUaW1lICYmIGZpbHRlci5nZXRUaW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCkgPiBmaWx0ZXIuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+IGZpbHRlcjtcbiAgICAgICAgfSxcblxuICAgICAgICBndGU6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlLmdldFRpbWUgJiYgZmlsdGVyLmdldFRpbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKSA+PSBmaWx0ZXIuZ2V0VGltZSgpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBmaWx0ZXI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXM6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTpib29sZWFuID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZXF1YWxzKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXNOb3Q6ICh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGU/KTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzLm5vdEVxdWFscyh2YWx1ZSwgZmlsdGVyLCBmaWx0ZXJMb2NhbGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZTogKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZT8pOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMubHQodmFsdWUsIGZpbHRlciwgZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBhZnRlcjogKHZhbHVlLCBmaWx0ZXIsIGZpbHRlckxvY2FsZT8pOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZ3QodmFsdWUsIGZpbHRlciwgZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRlSXM6ICh2YWx1ZSwgZmlsdGVyKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRGF0ZVN0cmluZygpID09PSBmaWx0ZXIudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0ZUlzTm90OiAodmFsdWUsIGZpbHRlcik6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b0RhdGVTdHJpbmcoKSAhPT0gZmlsdGVyLnRvRGF0ZVN0cmluZygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGVCZWZvcmU6ICh2YWx1ZSwgZmlsdGVyKTogYm9vbGVhbiA9PiAge1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCkgPCBmaWx0ZXIuZ2V0VGltZSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGVBZnRlcjogKHZhbHVlLCBmaWx0ZXIpOiBib29sZWFuID0+ICB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKSA+IGZpbHRlci5nZXRUaW1lKCk7XG4gICAgICAgIH1cbiAgICBcbiAgICB9XG5cbiAgICByZWdpc3RlcihydWxlOiBzdHJpbmcsIGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmZpbHRlcnNbcnVsZV0gPSBmbjtcbiAgICB9XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/lazyloadevent.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/lazyloadevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/lazyloadevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eWxvYWRldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvbGF6eWxvYWRldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ydE1ldGEgfSBmcm9tICcuL3NvcnRtZXRhJztcbmltcG9ydCB7IEZpbHRlck1ldGFkYXRhIH0gZnJvbSAnLi9maWx0ZXJtZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUxvYWRFdmVudCB7XG4gICAgZmlyc3Q/OiBudW1iZXI7XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzb3J0RmllbGQ/OiBzdHJpbmc7XG4gICAgc29ydE9yZGVyPzogbnVtYmVyO1xuICAgIG11bHRpU29ydE1ldGE/OiBTb3J0TWV0YVtdO1xuICAgIGZpbHRlcnM/OiB7W3M6IHN0cmluZ106IEZpbHRlck1ldGFkYXRhO307XG4gICAgZ2xvYmFsRmlsdGVyPzogYW55O1xufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/megamenuitem.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/megamenuitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/megamenuitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYW1lbnVpdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9tZWdhbWVudWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuL21lbnVpdGVtJztcblxuZXhwb3J0IGludGVyZmFjZSBNZWdhTWVudUl0ZW0ge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgY29tbWFuZD86IChldmVudD86IGFueSkgPT4gdm9pZDtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgaXRlbXM/OiBNZW51SXRlbVtdW107XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM/OiBhbnk7XG4gICAgc2VwYXJhdG9yPzogYm9vbGVhbjtcbiAgICBiYWRnZT86IHN0cmluZztcbiAgICBiYWRnZVN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgc3R5bGU/OmFueTtcbiAgICBzdHlsZUNsYXNzPzpzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgYXV0b21hdGlvbklkPzogYW55O1xuICAgIHRhYmluZGV4Pzogc3RyaW5nO1xuICAgIHJvdXRlckxpbms/OiBhbnk7XG4gICAgcXVlcnlQYXJhbXM/OiB7IFtrOiBzdHJpbmddOiBhbnkgfTtcbiAgICBmcmFnbWVudD86IHN0cmluZztcbiAgICBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcmVzZXJ2ZUZyYWdtZW50PzogYm9vbGVhbjtcbiAgICBza2lwTG9jYXRpb25DaGFuZ2U/OiBib29sZWFuO1xuICAgIHJlcGxhY2VVcmw/OiBib29sZWFuO1xuICAgIHN0YXRlPzoge1xuICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/menuitem.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/menuitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/menuitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL21lbnVpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBjb21tYW5kPzogKGV2ZW50PzogYW55KSA9PiB2b2lkO1xuICAgIHVybD86IHN0cmluZztcbiAgICBpdGVtcz86IE1lbnVJdGVtW107XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgZXNjYXBlPzogYm9vbGVhbjtcbiAgICByb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucz86IGFueTtcbiAgICBzZXBhcmF0b3I/OiBib29sZWFuO1xuICAgIGJhZGdlPzogc3RyaW5nO1xuICAgIHRvb2x0aXA/OiBzdHJpbmc7XG4gICAgdG9vbHRpcFBvc2l0aW9uPzogc3RyaW5nO1xuICAgIGJhZGdlU3R5bGVDbGFzcz86IHN0cmluZztcbiAgICBzdHlsZT86YW55O1xuICAgIHN0eWxlQ2xhc3M/OnN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpZD86IHN0cmluZztcbiAgICBhdXRvbWF0aW9uSWQ/OiBhbnk7XG4gICAgdGFiaW5kZXg/OiBzdHJpbmc7XG4gICAgcm91dGVyTGluaz86IGFueTtcbiAgICBxdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9O1xuICAgIGZyYWdtZW50Pzogc3RyaW5nO1xuICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIHByZXNlcnZlRnJhZ21lbnQ/OiBib29sZWFuO1xuICAgIHNraXBMb2NhdGlvbkNoYW5nZT86IGJvb2xlYW47XG4gICAgcmVwbGFjZVVybD86IGJvb2xlYW47XG4gICAgc3RhdGU/OiB7XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfVxuICAgIHRvb2x0aXBPcHRpb25zPzoge1xuICAgICAgICB0b29sdGlwTGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj86IHN0cmluZztcbiAgICAgICAgdG9vbHRpcEV2ZW50Pzogc3RyaW5nO1xuICAgICAgICBhcHBlbmRUbz86IGFueTtcbiAgICAgICAgcG9zaXRpb25TdHlsZT86IHN0cmluZztcbiAgICAgICAgdG9vbHRpcFN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgICAgIHRvb2x0aXBaSW5kZXg/OiBzdHJpbmc7XG4gICAgICAgIGVzY2FwZT86IGJvb2xlYW47XG4gICAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgcG9zaXRpb25Ub3A/OiBudW1iZXI7XG4gICAgICAgIHBvc2l0aW9uTGVmdD86IG51bWJlcjtcbiAgICAgICAgc2hvd0RlbGF5PzogbnVtYmVyO1xuICAgICAgICBoaWRlRGVsYXk/OiBudW1iZXI7XG4gICAgICAgIGxpZmU/OiBudW1iZXI7XG4gICAgfVxufVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/api/message.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgICBzZXZlcml0eT86IHN0cmluZztcbiAgICBzdW1tYXJ5Pzogc3RyaW5nO1xuICAgIGRldGFpbD86IHN0cmluZztcbiAgICBpZD86IGFueTtcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgbGlmZT86IG51bWJlcjtcbiAgICBzdGlja3k/OiBib29sZWFuO1xuICAgIGNsb3NhYmxlPzogYm9vbGVhbjtcbiAgICBkYXRhPzogYW55O1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgY29udGVudFN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgc3R5bGVDbGFzcz86IHN0cmluZztcbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/messageservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/messageservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/messageservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,30 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class MessageService {
+    constructor() {
+        this.messageSource = new Subject();
+        this.clearSource = new Subject();
+        this.messageObserver = this.messageSource.asObservable();
+        this.clearObserver = this.clearSource.asObservable();
+    }
+    add(message) {
+        if (message) {
+            this.messageSource.next(message);
+        }
+    }
+    addAll(messages) {
+        if (messages && messages.length) {
+            this.messageSource.next(messages);
+        }
+    }
+    clear(key) {
+        this.clearSource.next(key || null);
+    }
+}
+MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, decorators: [{
+            type: Injectable
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL21lc3NhZ2VzZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJL0IsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFHWSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBQ2pELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEQsa0JBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBa0JuRDtJQWhCRyxHQUFHLENBQUMsT0FBZ0I7UUFDaEIsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBbUI7UUFDdEIsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBWTtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDOzsyR0F0QlEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VTZXJ2aWNlIHtcbiAgICBcbiAgICBwcml2YXRlIG1lc3NhZ2VTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXNzYWdlfE1lc3NhZ2VbXT4oKTtcbiAgICBwcml2YXRlIGNsZWFyU291cmNlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIFxuICAgIG1lc3NhZ2VPYnNlcnZlciA9IHRoaXMubWVzc2FnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBjbGVhck9ic2VydmVyID0gdGhpcy5jbGVhclNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBcbiAgICBhZGQobWVzc2FnZTogTWVzc2FnZSkge1xuICAgICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU291cmNlLm5leHQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgYWRkQWxsKG1lc3NhZ2VzOiBNZXNzYWdlW10pIHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzICYmIG1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU291cmNlLm5leHQobWVzc2FnZXMpO1xuICAgICAgICB9IFxuICAgIH1cbiAgICBcbiAgICBjbGVhcihrZXk/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jbGVhclNvdXJjZS5uZXh0KGtleXx8bnVsbCk7XG4gICAgfVxuICAgIFxufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/overlayservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/overlayservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/overlayservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,21 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class OverlayService {
+    constructor() {
+        this.clickSource = new Subject();
+        this.clickObservable = this.clickSource.asObservable();
+    }
+    add(event) {
+        if (event) {
+            this.clickSource.next(event);
+        }
+    }
+}
+OverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+OverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL292ZXJsYXlzZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJL0IsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFHWSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBRXZELG9CQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQU9yRDtJQUxHLEdBQUcsQ0FBQyxLQUFLO1FBQ0wsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7OzJHQVZRLGNBQWM7K0dBQWQsY0FBYyxjQURGLE1BQU07MkZBQ2xCLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4vbWVzc2FnZSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgY2xpY2tTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXNzYWdlfE1lc3NhZ2VbXT4oKTtcblxuICAgIGNsaWNrT2JzZXJ2YWJsZSA9IHRoaXMuY2xpY2tTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBhZGQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrU291cmNlLm5leHQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/api/primeicons.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/primeicons.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/primeicons.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,239 @@
+export class PrimeIcons {
+}
+PrimeIcons.ALIGN_CENTER = 'pi pi-align-center';
+PrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';
+PrimeIcons.ALIGN_LEFT = 'pi pi-align-left';
+PrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';
+PrimeIcons.AMAZON = 'pi pi-amazon';
+PrimeIcons.ANDROID = 'pi pi-android';
+PrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';
+PrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';
+PrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';
+PrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';
+PrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';
+PrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';
+PrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';
+PrimeIcons.ANGLE_UP = 'pi pi-angle-up';
+PrimeIcons.APPLE = 'pi pi-apple';
+PrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';
+PrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';
+PrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';
+PrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';
+PrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';
+PrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';
+PrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';
+PrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';
+PrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';
+PrimeIcons.ARROW_UP = 'pi pi-arrow-up';
+PrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';
+PrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';
+PrimeIcons.ARROW_H = 'pi pi-arrow-h';
+PrimeIcons.ARROW_V = 'pi pi-arrow-v';
+PrimeIcons.AT = 'pi pi-at';
+PrimeIcons.BACKWARD = 'pi pi-backward';
+PrimeIcons.BAN = 'pi pi-ban';
+PrimeIcons.BARS = 'pi pi-bars';
+PrimeIcons.BELL = 'pi pi-bell';
+PrimeIcons.BOLT = 'pi pi-bolt';
+PrimeIcons.BOOK = 'pi pi-book';
+PrimeIcons.BOOKMARK = 'pi pi-bookmark';
+PrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';
+PrimeIcons.BOX = 'pi pi-box';
+PrimeIcons.BRIEFCASE = 'pi pi-briefcase';
+PrimeIcons.BUILDING = 'pi pi-building';
+PrimeIcons.CALENDAR = 'pi pi-calendar';
+PrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';
+PrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';
+PrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';
+PrimeIcons.CAMERA = 'pi pi-camera';
+PrimeIcons.CAR = 'pi pi-car';
+PrimeIcons.CARET_DOWN = 'pi pi-caret-down';
+PrimeIcons.CARET_LEFT = 'pi pi-caret-left';
+PrimeIcons.CARET_RIGHT = 'pi pi-caret-right';
+PrimeIcons.CARET_UP = 'pi pi-caret-up';
+PrimeIcons.CHART_BAR = 'pi pi-chart-bar';
+PrimeIcons.CHART_LINE = 'pi pi-chart-line';
+PrimeIcons.CHART_PIE = 'pi pi-chart-pie';
+PrimeIcons.CHECK = 'pi pi-check';
+PrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';
+PrimeIcons.CHECK_SQUARE = 'pi pi-check-square';
+PrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';
+PrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';
+PrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';
+PrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';
+PrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';
+PrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';
+PrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';
+PrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';
+PrimeIcons.CIRCLE = 'pi pi-circle';
+PrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';
+PrimeIcons.CLOCK = 'pi pi-clock';
+PrimeIcons.CLONE = 'pi pi-clone';
+PrimeIcons.CLOUD = 'pi pi-cloud';
+PrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';
+PrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';
+PrimeIcons.CODE = 'pi pi-code';
+PrimeIcons.COG = 'pi pi-cog';
+PrimeIcons.COMMENT = 'pi pi-comment';
+PrimeIcons.COMMENTS = 'pi pi-comments';
+PrimeIcons.COMPASS = 'pi pi-compass';
+PrimeIcons.COPY = 'pi pi-copy';
+PrimeIcons.CREDIT_CARD = 'pi pi-credit-card';
+PrimeIcons.DATABASE = 'pi pi-database';
+PrimeIcons.DESKTOP = 'pi pi-desktop';
+PrimeIcons.DIRECTIONS = 'pi pi-directions';
+PrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';
+PrimeIcons.DISCORD = 'pi pi-discord';
+PrimeIcons.DOLLAR = 'pi pi-dollar';
+PrimeIcons.DOWNLOAD = 'pi pi-download';
+PrimeIcons.EJECT = 'pi pi-eject';
+PrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';
+PrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';
+PrimeIcons.ENVELOPE = 'pi pi-envelope';
+PrimeIcons.EURO = 'pi pi-euro';
+PrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';
+PrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';
+PrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';
+PrimeIcons.EYE = 'pi pi-eye';
+PrimeIcons.EYE_SLASH = 'pi pi-eye-slash';
+PrimeIcons.FACEBOOK = 'pi pi-facebook';
+PrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';
+PrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';
+PrimeIcons.FILE = 'pi pi-file';
+PrimeIcons.FILE_EXCEL = 'pi pi-file-excel';
+PrimeIcons.FILE_PDF = 'pi pi-file-pdf';
+PrimeIcons.FILTER = 'pi pi-filter';
+PrimeIcons.FILTER_FILL = 'pi pi-filter-fill';
+PrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';
+PrimeIcons.FLAG = 'pi pi-flag';
+PrimeIcons.FLAG_FILL = 'pi pi-flag-fill';
+PrimeIcons.FOLDER = 'pi pi-folder';
+PrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';
+PrimeIcons.FORWARD = 'pi pi-forward';
+PrimeIcons.GITHUB = 'pi pi-github';
+PrimeIcons.GLOBE = 'pi pi-globe';
+PrimeIcons.GOOGLE = 'pi pi-google';
+PrimeIcons.HASHTAG = 'pi pi-hashtag';
+PrimeIcons.HEART = 'pi pi-heart';
+PrimeIcons.HEART_FILL = 'pi pi-heart-fill';
+PrimeIcons.HISTORY = 'pi pi-history';
+PrimeIcons.HOME = 'pi pi-home';
+PrimeIcons.ID_CARD = 'pi pi-id-card';
+PrimeIcons.IMAGE = 'pi pi-image';
+PrimeIcons.IMAGES = 'pi pi-images';
+PrimeIcons.INBOX = 'pi pi-inbox';
+PrimeIcons.INFO = 'pi pi-info';
+PrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';
+PrimeIcons.INSTAGRAM = 'pi pi-instagram';
+PrimeIcons.KEY = 'pi pi-key';
+PrimeIcons.LINK = 'pi pi-link';
+PrimeIcons.LINKEDIN = 'pi pi-linkedin';
+PrimeIcons.LIST = 'pi pi-list';
+PrimeIcons.LOCK = 'pi pi-lock';
+PrimeIcons.LOCK_OPEN = 'pi pi-lock-open';
+PrimeIcons.MAP = 'pi pi-map';
+PrimeIcons.MAP_MARKER = 'pi pi-map-marker';
+PrimeIcons.MICROSOFT = 'pi pi-microsoft';
+PrimeIcons.MINUS = 'pi pi-minus';
+PrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';
+PrimeIcons.MOBILE = 'pi pi-mobile';
+PrimeIcons.MONEY_BILL = 'pi pi-money-bill';
+PrimeIcons.MOON = 'pi pi-moon';
+PrimeIcons.PALETTE = 'pi pi-palette';
+PrimeIcons.PAPERCLIP = 'pi pi-paperclip';
+PrimeIcons.PAUSE = 'pi pi-pause';
+PrimeIcons.PAYPAL = 'pi pi-paypal';
+PrimeIcons.PENCIL = 'pi pi-pencil';
+PrimeIcons.PERCENTAGE = 'pi pi-percentage';
+PrimeIcons.PHONE = 'pi pi-phone';
+PrimeIcons.PLAY = 'pi pi-play';
+PrimeIcons.PLUS = 'pi pi-plus';
+PrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';
+PrimeIcons.POUND = 'pi pi-pound';
+PrimeIcons.POWER_OFF = 'pi pi-power-off';
+PrimeIcons.PRIME = 'pi pi-prime';
+PrimeIcons.PRINT = 'pi pi-print';
+PrimeIcons.QRCODE = 'pi pi-qrcode';
+PrimeIcons.QUESTION = 'pi pi-question';
+PrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';
+PrimeIcons.REDDIT = 'pi pi-reddit';
+PrimeIcons.REFRESH = 'pi pi-refresh';
+PrimeIcons.REPLAY = 'pi pi-replay';
+PrimeIcons.REPLY = 'pi pi-reply';
+PrimeIcons.SAVE = 'pi pi-save';
+PrimeIcons.SEARCH = 'pi pi-search';
+PrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';
+PrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';
+PrimeIcons.SEND = 'pi pi-send';
+PrimeIcons.SERVER = 'pi pi-server';
+PrimeIcons.SHARE_ALT = 'pi pi-share-alt';
+PrimeIcons.SHIELD = 'pi pi-shield';
+PrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';
+PrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';
+PrimeIcons.SIGN_IN = 'pi pi-sign-in';
+PrimeIcons.SIGN_OUT = 'pi pi-sign-out';
+PrimeIcons.SITEMAP = 'pi pi-sitemap';
+PrimeIcons.SLACK = 'pi pi-slack';
+PrimeIcons.SLIDERS_H = 'pi pi-sliders-h';
+PrimeIcons.SLIDERS_V = 'pi pi-sliders-v';
+PrimeIcons.SORT = 'pi pi-sort';
+PrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';
+PrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';
+PrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';
+PrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';
+PrimeIcons.SORT_ALT = 'pi pi-sort-alt';
+PrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';
+PrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';
+PrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';
+PrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';
+PrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';
+PrimeIcons.SORT_DOWN = 'pi pi-sort-down';
+PrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';
+PrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';
+PrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';
+PrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';
+PrimeIcons.SORT_UP = 'pi pi-sort-up';
+PrimeIcons.SPINNER = 'pi pi-spinner';
+PrimeIcons.STAR = 'pi pi-star';
+PrimeIcons.STAR_FILL = 'pi pi-star-fill';
+PrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';
+PrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';
+PrimeIcons.STEP_FORWARD = 'pi pi-step-forward';
+PrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';
+PrimeIcons.STOP = 'pi pi-stop';
+PrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';
+PrimeIcons.SUN = 'pi pi-sun';
+PrimeIcons.SYNC = 'pi pi-sync';
+PrimeIcons.TABLE = 'pi pi-table';
+PrimeIcons.TABLET = 'pi pi-tablet';
+PrimeIcons.TAG = 'pi pi-tag';
+PrimeIcons.TAGS = 'pi pi-tags';
+PrimeIcons.TELEGRAM = 'pi pi-telegram';
+PrimeIcons.TH_LARGE = 'pi pi-th-large';
+PrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';
+PrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';
+PrimeIcons.TICKET = 'pi pi-ticket';
+PrimeIcons.TIMES = 'pi pi-times';
+PrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';
+PrimeIcons.TRASH = 'pi pi-trash';
+PrimeIcons.TWITTER = 'pi pi-twitter';
+PrimeIcons.UNDO = 'pi pi-undo';
+PrimeIcons.UNLOCK = 'pi pi-unlock';
+PrimeIcons.UPLOAD = 'pi pi-upload';
+PrimeIcons.USER = 'pi pi-user';
+PrimeIcons.USER_EDIT = 'pi pi-user-edit';
+PrimeIcons.USER_MINUS = 'pi pi-user-minus';
+PrimeIcons.USER_PLUS = 'pi pi-user-plus';
+PrimeIcons.USERS = 'pi pi-users';
+PrimeIcons.VIDEO = 'pi pi-video';
+PrimeIcons.VIMEO = 'pi pi-vimeo';
+PrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';
+PrimeIcons.VOLUME_OFF = 'pi pi-volume-off';
+PrimeIcons.VOLUME_UP = 'pi pi-volume-up';
+PrimeIcons.WALLET = 'pi pi-wallet';
+PrimeIcons.WHATSAPP = 'pi pi-whatsapp';
+PrimeIcons.WIFI = 'pi pi-wifi';
+PrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';
+PrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';
+PrimeIcons.YOUTUBE = 'pi pi-youtube';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVpY29ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvcHJpbWVpY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTs7QUFDSSx1QkFBWSxHQUFHLG9CQUFvQixDQUFDO0FBQ3BDLHdCQUFhLEdBQUcscUJBQXFCLENBQUM7QUFDdEMscUJBQVUsR0FBRyxrQkFBa0IsQ0FBQztBQUNoQyxzQkFBVyxHQUFHLG1CQUFtQixDQUFDO0FBQ2xDLGlCQUFNLEdBQUcsY0FBYyxDQUFDO0FBQ3hCLGtCQUFPLEdBQUcsZUFBZSxDQUFDO0FBQzFCLDRCQUFpQixHQUFHLHlCQUF5QixDQUFDO0FBQzlDLDRCQUFpQixHQUFHLHlCQUF5QixDQUFDO0FBQzlDLDZCQUFrQixHQUFHLDBCQUEwQixDQUFDO0FBQ2hELDBCQUFlLEdBQUcsdUJBQXVCLENBQUM7QUFDMUMscUJBQVUsR0FBRyxrQkFBa0IsQ0FBQztBQUNoQyxxQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hDLHNCQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFDbEMsbUJBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QixnQkFBSyxHQUFHLGFBQWEsQ0FBQztBQUN0Qiw0QkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztBQUM5Qyw0QkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztBQUM5Qyw2QkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUNoRCwwQkFBZSxHQUFHLHVCQUF1QixDQUFDO0FBQzFDLHFCQUFVLEdBQUcsa0JBQWtCLENBQUM7QUFDaEMsMEJBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQUMxQywyQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQztBQUM1QyxxQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hDLHNCQUFXLEdBQUcsbUJBQW1CLENBQUM7QUFDbEMsbUJBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1Qix3QkFBYSxHQUFHLHFC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QUFDO0FBQ3hCLGlCQUFNLEdBQUcsY0FBYyxDQUFDO0FBQ3hCLGVBQUksR0FBRyxZQUFZLENBQUM7QUFDcEIsb0JBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QixxQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hDLG9CQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFDOUIsZ0JBQUssR0FBRyxhQUFhLENBQUM7QUFDdEIsZ0JBQUssR0FBRyxhQUFhLENBQUM7QUFDdEIsZ0JBQUssR0FBRyxhQUFhLENBQUM7QUFDdEIsc0JBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQUNsQyxxQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hDLG9CQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFDOUIsaUJBQU0sR0FBRyxjQUFjLENBQUM7QUFDeEIsbUJBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QixlQUFJLEdBQUcsWUFBWSxDQUFDO0FBQ3BCLDBCQUFlLEdBQUcsdUJBQXVCLENBQUM7QUFDMUMsMEJBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQUMxQyxrQkFBTyxHQUFHLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBQcmltZUljb25zIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMSUdOX0NFTlRFUiA9ICdwaSBwaS1hbGlnbi1jZW50ZXInO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxJR05fSlVTVElGWSA9ICdwaSBwaS1hbGlnbi1qdXN0aWZ5JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMSUdOX0xFRlQgPSAncGkgcGktYWxpZ24tbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTElHTl9SSUdIVCA9ICdwaSBwaS1hbGlnbi1yaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTUFaT04gPSAncGkgcGktYW1hem9uJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFORFJPSUQgPSAncGkgcGktYW5kcm9pZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTkdMRV9ET1VCTEVfRE9XTiA9ICdwaSBwaS1hbmdsZS1kb3VibGUtZG93bic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTkdMRV9ET1VCTEVfTEVGVCA9ICdwaSBwaS1hbmdsZS1kb3VibGUtbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTkdMRV9ET1VCTEVfUklHSFQgPSAncGkgcGktYW5nbGUtZG91YmxlLXJpZ2h0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFOR0xFX0RPVUJMRV9VUCA9ICdwaSBwaS1hbmdsZS1kb3VibGUtdXAnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQU5HTEVfRE9XTiA9ICdwaSBwaS1hbmdsZS1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFOR0xFX0xFRlQgPSAncGkgcGktYW5nbGUtbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTkdMRV9SSUdIVCA9ICdwaSBwaS1hbmdsZS1yaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTkdMRV9VUCA9ICdwaSBwaS1hbmdsZS11cCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUFBMRSA9ICdwaSBwaS1hcHBsZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19DSVJDTEVfRE9XTiA9ICdwaSBwaS1hcnJvdy1jaXJjbGUtZG93bic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19DSVJDTEVfTEVGVCA9ICdwaSBwaS1hcnJvdy1jaXJjbGUtbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19DSVJDTEVfUklHSFQgPSAncGkgcGktYXJyb3ctY2lyY2xlLXJpZ2h0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFSUk9XX0NJUkNMRV9VUCA9ICdwaSBwaS1hcnJvdy1jaXJjbGUtdXAnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVJST1dfRE9XTiA9ICdwaSBwaS1hcnJvdy1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFSUk9XX0RPV05fTEVGVCA9ICdwaSBwaS1hcnJvdy1kb3duLWxlZnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVJST1dfRE9XTl9SSUdIVCA9ICdwaSBwaS1hcnJvdy1kb3duLXJpZ2h0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFSUk9XX0xFRlQgPSAncGkgcGktYXJyb3ctbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19SSUdIVCA9ICdwaSBwaS1hcnJvdy1yaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19VUCA9ICdwaSBwaS1hcnJvdy11cCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUlJPV19VUF9MRUZUID0gJ3BpIHBpLWFycm93LXVwLWxlZnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVJST1dfVVBfUklHSFQgPSAncGkgcGktYXJyb3ctdXAtcmlnaHQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVJST1dfSCA9ICdwaSBwaS1hcnJvdy1oJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFSUk9XX1YgPSAncGkgcGktYXJyb3ctdic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBVCA9ICdwaSBwaS1hdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQUNLV0FSRCA9ICdwaSBwaS1iYWNrd2FyZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQU4gPSAncGkgcGktYmFuJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJBUlMgPSAncGkgcGktYmFycyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCRUxMID0gJ3BpIHBpLWJlbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQk9MVCA9ICdwaSBwaS1ib2x0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0sgPSAncGkgcGktYm9vayc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09LTUFSSyA9ICdwaSBwaS1ib29rbWFyayc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT09LTUFSS19GSUxMID0gJ3BpIHBpLWJvb2ttYXJrLWZpbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQk9YID0gJ3BpIHBpLWJveCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBCUklFRkNBU0UgPSAncGkgcGktYnJpZWZjYXNlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJVSUxESU5HID0gJ3BpIHBpLWJ1aWxkaW5nJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBTEVOREFSID0gJ3BpIHBpLWNhbGVuZGFyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBTEVOREFSX01JTlVTID0gJ3BpIHBpLWNhbGVuZGFyLW1pbnVzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBTEVOREFSX1BMVVMgPSAncGkgcGktY2FsZW5kYXItcGx1cyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUxFTkRBUl9USU1FUyA9ICdwaSBwaS1jYWxlbmRhci10aW1lcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQU1FUkEgPSAncGkgcGktY2FtZXJhJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBUiA9ICdwaSBwaS1jYXInO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FSRVRfRE9XTiA9ICdwaSBwaS1jYXJldC1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBUkVUX0xFRlQgPSAncGkgcGktY2FyZXQtbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQVJFVF9SSUdIVCA9ICdwaSBwaS1jYXJldC1yaWdodCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQVJFVF9VUCA9ICdwaSBwaS1jYXJldC11cCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDSEFSVF9CQVIgPSAncGkgcGktY2hhcnQtYmFyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIQVJUX0xJTkUgPSAncGkgcGktY2hhcnQtbGluZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDSEFSVF9QSUUgPSAncGkgcGktY2hhcnQtcGllJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRUNLID0gJ3BpIHBpLWNoZWNrJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRUNLX0NJUkNMRSA9ICdwaSBwaS1jaGVjay1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hFQ0tfU1FVQVJFID0gJ3BpIHBpLWNoZWNrLXNxdWFyZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDSEVWUk9OX0NJUkNMRV9ET1dOID0gJ3BpIHBpLWNoZXZyb24tY2lyY2xlLWRvd24nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hFVlJPTl9DSVJDTEVfTEVGVCA9ICdwaSBwaS1jaGV2cm9uLWNpcmNsZS1sZWZ0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRVZST05fQ0lSQ0xFX1JJR0hUID0gJ3BpIHBpLWNoZXZyb24tY2lyY2xlLXJpZ2h0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRVZST05fQ0lSQ0xFX1VQID0gJ3BpIHBpLWNoZXZyb24tY2lyY2xlLXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRVZST05fRE9XTiA9ICdwaSBwaS1jaGV2cm9uLWRvd24nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hFVlJPTl9MRUZUID0gJ3BpIHBpLWNoZXZyb24tbGVmdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDSEVWUk9OX1JJR0hUID0gJ3BpIHBpLWNoZXZyb24tcmlnaHQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hFVlJPTl9VUCA9ICdwaSBwaS1jaGV2cm9uLXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENJUkNMRSA9ICdwaSBwaS1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0lSQ0xFX0ZJTEwgPSAncGkgcGktY2lyY2xlLWZpbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xPQ0sgPSAncGkgcGktY2xvY2snO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xPTkUgPSAncGkgcGktY2xvbmUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xPVUQgPSAncGkgcGktY2xvdWQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xPVURfRE9XTkxPQUQgPSAncGkgcGktY2xvdWQtZG93bmxvYWQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0xPVURfVVBMT0FEID0gJ3BpIHBpLWNsb3VkLXVwbG9hZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RFID0gJ3BpIHBpLWNvZGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09HID0gJ3BpIHBpLWNvZyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT01NRU5UID0gJ3BpIHBpLWNvbW1lbnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NTUVOVFMgPSAncGkgcGktY29tbWVudHMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NUEFTUyA9ICdwaSBwaS1jb21wYXNzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPUFkgPSAncGkgcGktY29weSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDUkVESVRfQ0FSRCA9ICdwaSBwaS1jcmVkaXQtY2FyZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQVRBQkFTRSA9ICdwaSBwaS1kYXRhYmFzZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERVNLVE9QID0gJ3BpIHBpLWRlc2t0b3AnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRElSRUNUSU9OUyA9ICdwaSBwaS1kaXJlY3Rpb25zJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJUkVDVElPTlNfQUxUID0gJ3BpIHBpLWRpcmVjdGlvbnMtYWx0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJU0NPUkQgPSAncGkgcGktZGlzY29yZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBET0xMQVIgPSAncGkgcGktZG9sbGFyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPV05MT0FEID0gJ3BpIHBpLWRvd25sb2FkJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVKRUNUID0gJ3BpIHBpLWVqZWN0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVMTElQU0lTX0ggPSAncGkgcGktZWxsaXBzaXMtaCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTExJUFNJU19WID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5WRUxPUEUgPSAncGkgcGktZW52ZWxvcGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVVSTyA9ICdwaSBwaS1ldXJvJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVYQ0xBTUFUSU9OX0NJUkNMRSA9ICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVhDTEFNQVRJT05fVFJJQU5HTEUgID0gJ3BpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVYVEVSTkFMX0xJTksgPSAncGkgcGktZXh0ZXJuYWwtbGluayc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFWUUgPSAncGkgcGktZXllJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVZRV9TTEFTSCA9ICdwaSBwaS1leWUtc2xhc2gnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkFDRUJPT0sgPSAncGkgcGktZmFjZWJvb2snO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkFTVF9CQUNLV0FSRCA9ICdwaSBwaS1mYXN0LWJhY2t3YXJkJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZBU1RfRk9SV0FSRCA9ICdwaSBwaS1mYXN0LWZvcndhcmQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMRSA9ICdwaSBwaS1maWxlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTEVfRVhDRUwgPSAncGkgcGktZmlsZS1leGNlbCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxFX1BERiA9ICdwaSBwaS1maWxlLXBkZic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxURVIgPSAncGkgcGktZmlsdGVyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTFRFUl9GSUxMID0gJ3BpIHBpLWZpbHRlci1maWxsJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTFRFUl9TTEFTSCA9ICdwaSBwaS1maWx0ZXItc2xhc2gnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkxBRyA9ICdwaSBwaS1mbGFnJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZMQUdfRklMTCA9ICdwaSBwaS1mbGFnLWZpbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRk9MREVSID0gJ3BpIHBpLWZvbGRlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGT0xERVJfT1BFTiA9ICdwaSBwaS1mb2xkZXItb3Blbic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGT1JXQVJEID0gJ3BpIHBpLWZvcndhcmQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR0lUSFVCID0gJ3BpIHBpLWdpdGh1Yic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBHTE9CRSA9ICdwaSBwaS1nbG9iZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBHT09HTEUgPSAncGkgcGktZ29vZ2xlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhBU0hUQUcgPSAncGkgcGktaGFzaHRhZyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRUFSVCA9ICdwaSBwaS1oZWFydCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRUFSVF9GSUxMID0gJ3BpIHBpLWhlYXJ0LWZpbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSElTVE9SWSA9ICdwaSBwaS1oaXN0b3J5JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhPTUUgPSAncGkgcGktaG9tZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJRF9DQVJEID0gJ3BpIHBpLWlkLWNhcmQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU1BR0UgPSAncGkgcGktaW1hZ2UnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU1BR0VTID0gJ3BpIHBpLWltYWdlcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkJPWCA9ICdwaSBwaS1pbmJveCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkZPID0gJ3BpIHBpLWluZm8nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5GT19DSVJDTEUgPSAncGkgcGktaW5mby1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSU5TVEFHUkFNID0gJ3BpIHBpLWluc3RhZ3JhbSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBLRVkgPSAncGkgcGkta2V5JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJTksgPSAncGkgcGktbGluayc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSU5LRURJTiA9ICdwaSBwaS1saW5rZWRpbic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUID0gJ3BpIHBpLWxpc3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9DSyA9ICdwaSBwaS1sb2NrJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExPQ0tfT1BFTiA9ICdwaSBwaS1sb2NrLW9wZW4nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQID0gJ3BpIHBpLW1hcCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfTUFSS0VSID0gJ3BpIHBpLW1hcC1tYXJrZXInO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUlDUk9TT0ZUID0gJ3BpIHBpLW1pY3Jvc29mdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNSU5VUyA9ICdwaSBwaS1taW51cyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNSU5VU19DSVJDTEUgPSAncGkgcGktbWludXMtY2lyY2xlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PQklMRSA9ICdwaSBwaS1tb2JpbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTU9ORVlfQklMTCA9ICdwaSBwaS1tb25leS1iaWxsJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1PT04gPSAncGkgcGktbW9vbic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQUxFVFRFID0gJ3BpIHBpLXBhbGV0dGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEFQRVJDTElQID0gJ3BpIHBpLXBhcGVyY2xpcCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVVTRSA9ICdwaSBwaS1wYXVzZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVlQQUwgPSAncGkgcGktcGF5cGFsJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBFTkNJTCA9ICdwaSBwaS1wZW5jaWwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEVSQ0VOVEFHRSA9ICdwaSBwaS1wZXJjZW50YWdlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBIT05FID0gJ3BpIHBpLXBob25lJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBMQVkgPSAncGkgcGktcGxheSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQTFVTID0gJ3BpIHBpLXBsdXMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUExVU19DSVJDTEUgPSAncGkgcGktcGx1cy1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUE9VTkQgPSAncGkgcGktcG91bmQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUE9XRVJfT0ZGID0gJ3BpIHBpLXBvd2VyLW9mZic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUklNRSA9ICdwaSBwaS1wcmltZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUklOVCA9ICdwaSBwaS1wcmludCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBRUkNPREUgPSAncGkgcGktcXJjb2RlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFFVRVNUSU9OID0gJ3BpIHBpLXF1ZXN0aW9uJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFFVRVNUSU9OX0NJUkNMRSA9ICdwaSBwaS1xdWVzdGlvbi1jaXJjbGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVERElUID0gJ3BpIHBpLXJlZGRpdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRUZSRVNIID0gJ3BpIHBpLXJlZnJlc2gnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVQTEFZID0gJ3BpIHBpLXJlcGxheSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRVBMWSA9ICdwaSBwaS1yZXBseSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTQVZFID0gJ3BpIHBpLXNhdmUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VBUkNIID0gJ3BpIHBpLXNlYXJjaCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRUFSQ0hfTUlOVVMgPSAncGkgcGktc2VhcmNoLW1pbnVzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFQVJDSF9QTFVTID0gJ3BpIHBpLXNlYXJjaC1wbHVzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFTkQgPSAncGkgcGktc2VuZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVJWRVIgPSAncGkgcGktc2VydmVyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIQVJFX0FMVCA9ICdwaSBwaS1zaGFyZS1hbHQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0hJRUxEID0gJ3BpIHBpLXNoaWVsZCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSE9QUElOR19CQUcgPSAncGkgcGktc2hvcHBpbmctYmFnJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1BQSU5HX0NBUlQgPSAncGkgcGktc2hvcHBpbmctY2FydCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSUdOX0lOID0gJ3BpIHBpLXNpZ24taW4nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0lHTl9PVVQgPSAncGkgcGktc2lnbi1vdXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0lURU1BUCA9ICdwaSBwaS1zaXRlbWFwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNMQUNLID0gJ3BpIHBpLXNsYWNrJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNMSURFUlNfSCA9ICdwaSBwaS1zbGlkZXJzLWgnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0xJREVSU19WID0gJ3BpIHBpLXNsaWRlcnMtdic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTT1JUID0gJ3BpIHBpLXNvcnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09SVF9BTFBIQV9ET1dOID0gJ3BpIHBpLXNvcnQtYWxwaGEtZG93bic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTT1JUX0FMUEhBX0FMVF9ET1dOID0gJ3BpIHBpLXNvcnQtYWxwaGEtYWx0LWRvd24nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09SVF9BTFBIQV9VUCA9ICdwaSBwaS1zb3J0LWFscGhhLXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQUxQSEFfQUxUX1VQID0gJ3BpIHBpLXNvcnQtYWxwaGEtYWx0LXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQUxUID0gJ3BpIHBpLXNvcnQtYWx0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQUxUX1NMQVNIID0gJ3BpIHBpLXNvcnQtc2xhc2gnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09SVF9BTU9VTlRfRE9XTiA9ICdwaSBwaS1zb3J0LWFtb3VudC1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQU1PVU5UX0RPV05fQUxUID0gJ3BpIHBpLXNvcnQtYW1vdW50LWRvd24tYWx0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQU1PVU5UX1VQID0gJ3BpIHBpLXNvcnQtYW1vdW50LXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfQU1PVU5UX1VQX0FMVCA9ICdwaSBwaS1zb3J0LWFtb3VudC11cC1hbHQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09SVF9ET1dOID0gJ3BpIHBpLXNvcnQtZG93bic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTT1JUX05VTUVSSUNfRE9XTiA9ICdwaSBwaS1zb3J0LW51bWVyaWMtZG93bic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTT1JUX05VTUVSSUNfQUxUX0RPV04gPSAncGkgcGktc29ydC1udW1lcmljLWFsdC1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfTlVNRVJJQ19VUCA9ICdwaSBwaS1zb3J0LW51bWVyaWMtdXAnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09SVF9OVU1FUklDX0FMVF9VUCA9ICdwaSBwaS1zb3J0LW51bWVyaWMtYWx0LXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNPUlRfVVAgPSAncGkgcGktc29ydC11cCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUElOTkVSID0gJ3BpIHBpLXNwaW5uZXInO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RBUiA9ICdwaSBwaS1zdGFyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUQVJfRklMTCA9ICdwaSBwaS1zdGFyLWZpbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RFUF9CQUNLV0FSRCA9ICdwaSBwaS1zdGVwLWJhY2t3YXJkJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNURVBfQkFDS1dBUkRfQUxUID0gJ3BpIHBpLXN0ZXAtYmFja3dhcmQtYWx0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNURVBfRk9SV0FSRCA9ICdwaSBwaS1zdGVwLWZvcndhcmQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RFUF9GT1JXQVJEX0FMVCA9ICdwaSBwaS1zdGVwLWZvcndhcmQtYWx0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNUT1AgPSAncGkgcGktc3RvcCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVE9QX0NJUkNMRSA9ICdwaSBwaS1zdG9wLWNpcmNsZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVU4gPSAncGkgcGktc3VuJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNZTkMgPSAncGkgcGktc3luYyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRSA9ICdwaSBwaS10YWJsZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQUJMRVQgPSAncGkgcGktdGFibGV0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRBRyA9ICdwaSBwaS10YWcnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFHUyA9ICdwaSBwaS10YWdzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRFTEVHUkFNID0gJ3BpIHBpLXRlbGVncmFtJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRIX0xBUkdFID0gJ3BpIHBpLXRoLWxhcmdlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRIVU1CU19ET1dOID0gJ3BpIHBpLXRodW1icy1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRIVU1CU19VUCA9ICdwaSBwaS10aHVtYnMtdXAnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVElDS0VUID0gJ3BpIHBpLXRpY2tldCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU1FUyA9ICdwaSBwaS10aW1lcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU1FU19DSVJDTEUgPSAncGkgcGktdGltZXMtY2lyY2xlJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSQVNIID0gJ3BpIHBpLXRyYXNoJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRXSVRURVIgPSAncGkgcGktdHdpdHRlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTkRPID0gJ3BpIHBpLXVuZG8nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVU5MT0NLID0gJ3BpIHBpLXVubG9jayc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQUQgPSAncGkgcGktdXBsb2FkJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRVIgPSAncGkgcGktdXNlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBVU0VSX0VESVQgPSAncGkgcGktdXNlci1lZGl0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRVJfTUlOVVMgPSAncGkgcGktdXNlci1taW51cyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBVU0VSX1BMVVMgPSAncGkgcGktdXNlci1wbHVzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRVJTID0gJ3BpIHBpLXVzZXJzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJREVPID0gJ3BpIHBpLXZpZGVvJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJTUVPID0gJ3BpIHBpLXZpbWVvJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZPTFVNRV9ET1dOID0gJ3BpIHBpLXZvbHVtZS1kb3duJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZPTFVNRV9PRkYgPSAncGkgcGktdm9sdW1lLW9mZic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBWT0xVTUVfVVAgPSAncGkgcGktdm9sdW1lLXVwJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdBTExFVCA9ICdwaSBwaS13YWxsZXQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgV0hBVFNBUFAgPSAncGkgcGktd2hhdHNhcHAnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgV0lGSSA9ICdwaSBwaS13aWZpJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdJTkRPV19NQVhJTUlaRSA9ICdwaSBwaS13aW5kb3ctbWF4aW1pemUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgV0lORE9XX01JTklNSVpFID0gJ3BpIHBpLXdpbmRvdy1taW5pbWl6ZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBZT1VUVUJFID0gJ3BpIHBpLXlvdXR1YmUnXG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/primeng-api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL3ByaW1lbmctYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/primengconfig.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/primengconfig.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/primengconfig.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,101 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import { FilterMatchMode } from './filtermatchmode';
+import * as i0 from "@angular/core";
+export class PrimeNGConfig {
+    constructor() {
+        this.ripple = false;
+        this.filterMatchModeOptions = {
+            text: [
+                FilterMatchMode.STARTS_WITH,
+                FilterMatchMode.CONTAINS,
+                FilterMatchMode.NOT_CONTAINS,
+                FilterMatchMode.ENDS_WITH,
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS
+            ],
+            numeric: [
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS,
+                FilterMatchMode.LESS_THAN,
+                FilterMatchMode.LESS_THAN_OR_EQUAL_TO,
+                FilterMatchMode.GREATER_THAN,
+                FilterMatchMode.GREATER_THAN_OR_EQUAL_TO
+            ],
+            date: [
+                FilterMatchMode.DATE_IS,
+                FilterMatchMode.DATE_IS_NOT,
+                FilterMatchMode.DATE_BEFORE,
+                FilterMatchMode.DATE_AFTER
+            ]
+        };
+        this.translation = {
+            startsWith: 'Starts with',
+            contains: 'Contains',
+            notContains: 'Not contains',
+            endsWith: 'Ends with',
+            equals: 'Equals',
+            notEquals: 'Not equals',
+            noFilter: 'No Filter',
+            lt: 'Less than',
+            lte: 'Less than or equal to',
+            gt: 'Greater than',
+            gte: 'Greater than or equal to',
+            is: 'Is',
+            isNot: 'Is not',
+            before: 'Before',
+            after: 'After',
+            dateIs: 'Date is',
+            dateIsNot: 'Date is not',
+            dateBefore: 'Date is before',
+            dateAfter: 'Date is after',
+            clear: 'Clear',
+            apply: 'Apply',
+            matchAll: 'Match All',
+            matchAny: 'Match Any',
+            addRule: 'Add Rule',
+            removeRule: 'Remove Rule',
+            accept: 'Yes',
+            reject: 'No',
+            choose: 'Choose',
+            upload: 'Upload',
+            cancel: 'Cancel',
+            dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+            dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+            dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+            monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+            monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+            dateFormat: 'mm/dd/yy',
+            today: 'Today',
+            weekHeader: 'Wk',
+            weak: 'Weak',
+            medium: 'Medium',
+            strong: 'Strong',
+            passwordPrompt: 'Enter a password',
+            emptyMessage: 'No results found',
+            emptyFilterMessage: 'No results found'
+        };
+        this.zIndex = {
+            modal: 1100,
+            overlay: 1000,
+            menu: 1000,
+            tooltip: 1100
+        };
+        this.translationSource = new Subject();
+        this.translationObserver = this.translationSource.asObservable();
+    }
+    getTranslation(key) {
+        return this.translation[key];
+    }
+    setTranslation(value) {
+        this.translation = { ...this.translation, ...value };
+        this.translationSource.next(this.translation);
+    }
+}
+PrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+PrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZ2NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvcHJpbWVuZ2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUlwRCxNQUFNLE9BQU8sYUFBYTtJQUQxQjtRQUdJLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsMkJBQXNCLEdBQUc7WUFDckIsSUFBSSxFQUFFO2dCQUNGLGVBQWUsQ0FBQyxXQUFXO2dCQUMzQixlQUFlLENBQUMsUUFBUTtnQkFDeEIsZUFBZSxDQUFDLFlBQVk7Z0JBQzVCLGVBQWUsQ0FBQyxTQUFTO2dCQUN6QixlQUFlLENBQUMsTUFBTTtnQkFDdEIsZUFBZSxDQUFDLFVBQVU7YUFDN0I7WUFDRCxPQUFPLEVBQUU7Z0JBQ0wsZUFBZSxDQUFDLE1BQU07Z0JBQ3RCLGVBQWUsQ0FBQyxVQUFVO2dCQUMxQixlQUFlLENBQUMsU0FBUztnQkFDekIsZUFBZSxDQUFDLHFCQUFxQjtnQkFDckMsZUFBZSxDQUFDLFlBQVk7Z0JBQzVCLGVBQWUsQ0FBQyx3QkFBd0I7YUFDM0M7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsZUFBZSxDQUFDLE9BQU87Z0JBQ3ZCLGVBQWUsQ0FBQyxXQUFXO2dCQUMzQixlQUFlLENBQUMsV0FBVztnQkFDM0IsZUFBZSxDQUFDLFVBQVU7YUFDN0I7U0FDSixDQUFDO1FBRU0sZ0JBQVcsR0FBZ0I7WUFDL0IsVUFBVSxFQUFFLGFBQWE7WUFDekIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsV0FBVyxFQUFFLGNBQWM7WUFDM0IsUUFBUSxFQUFFLFdBQVc7WUFDckIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsU0FBUyxFQUFFLFlBQVk7WUFDdkIsUUFBUSxFQUFFLFdBQVc7WUFDckIsRUFBRSxFQUFFLFdBQVc7WUFDZixHQUFHLEVBQUUsdUJBQXVCO1lBQzVCLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLEdBQUcsRUFBRSwwQkFBMEI7WUFDL0IsRUFBRSxFQUFFLElBQUk7WUFDUixLQUFLLEVBQUUsUUFBUTtZQUNmLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLFNBQVM7WUFDakIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsVUFBVSxFQUFFLGdCQUFnQjtZQUM1QixTQUFTLEVBQUUsZUFBZTtZQUMxQixLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsUUFBUSxFQUFFLFdBQVc7WUFDckIsUUFBUSxFQUFFLFdBQVc7WUFDckIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsVUFBVSxFQUFFLGFBQWE7WUFDekIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztZQUN4RixhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDaEUsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDO1lBQ2pELFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxRQUFRLEVBQUMsV0FBVyxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsVUFBVSxDQUFDO1lBQzNILGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3BHLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLElBQUk7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFlBQVksRUFBRSxrQkFBa0I7WUFDaEMsa0JBQWtCLEVBQUUsa0JBQWtCO1NBQ3pDLENBQUE7UUFFRCxXQUFNLEdBQUc7WUFDTCxLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxJQUFJO1lBQ2IsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFBO1FBRU8sc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUUvQyx3QkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FVL0Q7SUFSRyxjQUFjLENBQUMsR0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFrQjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7MEdBOUZRLGFBQWE7OEdBQWIsYUFBYSxjQURELE1BQU07MkZBQ2xCLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyTWF0Y2hNb2RlIH0gZnJvbSAnLi9maWx0ZXJtYXRjaG1vZGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbGF0aW9uJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUHJpbWVOR0NvbmZpZyB7XG5cbiAgICByaXBwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZpbHRlck1hdGNoTW9kZU9wdGlvbnMgPSB7XG4gICAgICAgIHRleHQ6IFtcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5TVEFSVFNfV0lUSCxcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5DT05UQUlOUyxcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5OT1RfQ09OVEFJTlMsXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuRU5EU19XSVRILFxuICAgICAgICAgICAgRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUyxcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTXG4gICAgICAgIF0sXG4gICAgICAgIG51bWVyaWM6IFtcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5FUVVBTFMsXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuTk9UX0VRVUFMUyxcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU4sXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuTEVTU19USEFOX09SX0VRVUFMX1RPLFxuICAgICAgICAgICAgRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTixcbiAgICAgICAgICAgIEZpbHRlck1hdGNoTW9kZS5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9cbiAgICAgICAgXSxcbiAgICAgICAgZGF0ZTogW1xuICAgICAgICAgICAgRmlsdGVyTWF0Y2hNb2RlLkRBVEVfSVMsXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1QsXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuREFURV9CRUZPUkUsXG4gICAgICAgICAgICBGaWx0ZXJNYXRjaE1vZGUuREFURV9BRlRFUlxuICAgICAgICBdXG4gICAgfTtcblxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uID0ge1xuICAgICAgICBzdGFydHNXaXRoOiAnU3RhcnRzIHdpdGgnLFxuICAgICAgICBjb250YWluczogJ0NvbnRhaW5zJyxcbiAgICAgICAgbm90Q29udGFpbnM6ICdOb3QgY29udGFpbnMnLFxuICAgICAgICBlbmRzV2l0aDogJ0VuZHMgd2l0aCcsXG4gICAgICAgIGVxdWFsczogJ0VxdWFscycsXG4gICAgICAgIG5vdEVxdWFsczogJ05vdCBlcXVhbHMnLFxuICAgICAgICBub0ZpbHRlcjogJ05vIEZpbHRlcicsXG4gICAgICAgIGx0OiAnTGVzcyB0aGFuJyxcbiAgICAgICAgbHRlOiAnTGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICAgICAgZ3Q6ICdHcmVhdGVyIHRoYW4nLFxuICAgICAgICBndGU6ICdHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgICAgICBpczogJ0lzJyxcbiAgICAgICAgaXNOb3Q6ICdJcyBub3QnLFxuICAgICAgICBiZWZvcmU6ICdCZWZvcmUnLFxuICAgICAgICBhZnRlcjogJ0FmdGVyJyxcbiAgICAgICAgZGF0ZUlzOiAnRGF0ZSBpcycsXG4gICAgICAgIGRhdGVJc05vdDogJ0RhdGUgaXMgbm90JyxcbiAgICAgICAgZGF0ZUJlZm9yZTogJ0RhdGUgaXMgYmVmb3JlJyxcbiAgICAgICAgZGF0ZUFmdGVyOiAnRGF0ZSBpcyBhZnRlcicsXG4gICAgICAgIGNsZWFyOiAnQ2xlYXInLFxuICAgICAgICBhcHBseTogJ0FwcGx5JyxcbiAgICAgICAgbWF0Y2hBbGw6ICdNYXRjaCBBbGwnLFxuICAgICAgICBtYXRjaEFueTogJ01hdGNoIEFueScsXG4gICAgICAgIGFkZFJ1bGU6ICdBZGQgUnVsZScsXG4gICAgICAgIHJlbW92ZVJ1bGU6ICdSZW1vdmUgUnVsZScsXG4gICAgICAgIGFjY2VwdDogJ1llcycsXG4gICAgICAgIHJlamVjdDogJ05vJyxcbiAgICAgICAgY2hvb3NlOiAnQ2hvb3NlJyxcbiAgICAgICAgdXBsb2FkOiAnVXBsb2FkJyxcbiAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAgICAgZGF5TmFtZXM6IFtcIlN1bmRheVwiLCBcIk1vbmRheVwiLCBcIlR1ZXNkYXlcIiwgXCJXZWRuZXNkYXlcIiwgXCJUaHVyc2RheVwiLCBcIkZyaWRheVwiLCBcIlNhdHVyZGF5XCJdLFxuICAgICAgICBkYXlOYW1lc1Nob3J0OiBbXCJTdW5cIiwgXCJNb25cIiwgXCJUdWVcIiwgXCJXZWRcIiwgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIl0sXG4gICAgICAgIGRheU5hbWVzTWluOiBbXCJTdVwiLFwiTW9cIixcIlR1XCIsXCJXZVwiLFwiVGhcIixcIkZyXCIsXCJTYVwiXSxcbiAgICAgICAgbW9udGhOYW1lczogW1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLFxuICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFtcIkphblwiLCBcIkZlYlwiLCBcIk1hclwiLCBcIkFwclwiLCBcIk1heVwiLCBcIkp1blwiLFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdLFxuICAgICAgICBkYXRlRm9ybWF0OiAnbW0vZGQveXknLFxuICAgICAgICB0b2RheTogJ1RvZGF5JyxcbiAgICAgICAgd2Vla0hlYWRlcjogJ1drJyxcbiAgICAgICAgd2VhazogJ1dlYWsnLFxuICAgICAgICBtZWRpdW06ICdNZWRpdW0nLFxuICAgICAgICBzdHJvbmc6ICdTdHJvbmcnLFxuICAgICAgICBwYXNzd29yZFByb21wdDogJ0VudGVyIGEgcGFzc3dvcmQnLFxuICAgICAgICBlbXB0eU1lc3NhZ2U6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgICAgZW1wdHlGaWx0ZXJNZXNzYWdlOiAnTm8gcmVzdWx0cyBmb3VuZCdcbiAgICB9XG5cbiAgICB6SW5kZXggPSB7XG4gICAgICAgIG1vZGFsOiAxMTAwLFxuICAgICAgICBvdmVybGF5OiAxMDAwLFxuICAgICAgICBtZW51OiAxMDAwLFxuICAgICAgICB0b29sdGlwOiAxMTAwXG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIHRyYW5zbGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLnRyYW5zbGF0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25ba2V5XTtcbiAgICB9XG5cbiAgICBzZXRUcmFuc2xhdGlvbih2YWx1ZTogVHJhbnNsYXRpb24pIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHsuLi50aGlzLnRyYW5zbGF0aW9uLCAuLi52YWx1ZX07XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25Tb3VyY2UubmV4dCh0aGlzLnRyYW5zbGF0aW9uKTtcbiAgICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,29 @@
+export * from './primengconfig';
+export * from './translation';
+export * from './translationkeys';
+export * from './blockableui';
+export * from './confirmation';
+export * from './confirmaeventtype';
+export * from './confirmationservice';
+export * from './filtermetadata';
+export * from './filterservice';
+export * from './contextmenuservice';
+export * from './lazyloadevent';
+export * from './megamenuitem';
+export * from './menuitem';
+export * from './message';
+export * from './messageservice';
+export * from './overlayservice';
+export * from './primeicons';
+export * from './filtermatchmode';
+export * from './filteroperator';
+export * from './selectitem';
+export * from './selectitemgroup';
+export * from './shared';
+export * from './sortevent';
+export * from './sortmeta';
+export * from './tablestate';
+export * from './treedragdropservice';
+export * from './treenode';
+export * from './treenodedragevent';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3ByaW1lbmdjb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0aW9ua2V5cyc7XG5leHBvcnQgKiBmcm9tICcuL2Jsb2NrYWJsZXVpJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlybWFldmVudHR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtYXRpb25zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVybWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dG1lbnVzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGF6eWxvYWRldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lZ2FtZW51aXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnVpdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZSc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmltZWljb25zJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVybWF0Y2htb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyb3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RpdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aXRlbWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkJztcbmV4cG9ydCAqIGZyb20gJy4vc29ydGV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc29ydG1ldGEnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZWRyYWdkcm9wc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWVub2RlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZW5vZGVkcmFnZXZlbnQnO1xuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/api/selectitem.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/selectitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/selectitem.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvc2VsZWN0aXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJdGVtPFQgPSBhbnk+IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICB2YWx1ZTogVDtcbiAgICBzdHlsZUNsYXNzPzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/selectitemgroup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/selectitemgroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/selectitemgroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aXRlbWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9zZWxlY3RpdGVtZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuL3NlbGVjdGl0ZW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEl0ZW1Hcm91cCB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZT86IGFueTtcbiAgICBpdGVtczogU2VsZWN0SXRlbVtdO1xufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/shared.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/shared.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/shared.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+import { NgModule, Directive, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Component } from '@angular/core';
+import * as i0 from "@angular/core";
+export class Header {
+}
+Header.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Header.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Header, selector: "p-header", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-header',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+export class Footer {
+}
+Footer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Footer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Footer, selector: "p-footer", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-footer',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+export class PrimeTemplate {
+    constructor(template) {
+        this.template = template;
+    }
+    getType() {
+        return this.name;
+    }
+}
+PrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
+PrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PrimeTemplate, selector: "[pTemplate]", inputs: { type: "type", name: ["pTemplate", "name"] }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTemplate]',
+                    host: {}
+                }]
+        }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], name: [{
+                type: Input,
+                args: ['pTemplate']
+            }] } });
+export class SharedModule {
+}
+SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });
+SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Header, Footer, PrimeTemplate],
+                    declarations: [Header, Footer, PrimeTemplate]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBYyxTQUFTLEVBQUMsS0FBSyxFQUE0RSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFNeEMsTUFBTSxPQUFPLE1BQU07O21HQUFOLE1BQU07dUZBQU4sTUFBTSxnREFGTCwyQkFBMkI7MkZBRTVCLE1BQU07a0JBSmxCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3hDOztBQU9ELE1BQU0sT0FBTyxNQUFNOzttR0FBTixNQUFNO3VGQUFOLE1BQU0sZ0RBRkwsMkJBQTJCOzJGQUU1QixNQUFNO2tCQUpsQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsMkJBQTJCO2lCQUN4Qzs7QUFRRCxNQUFNLE9BQU8sYUFBYTtJQU10QixZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUFHLENBQUM7SUFFakQsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDOzswR0FWUSxhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsSUFBSSxFQUFFLEVBQ0w7aUJBQ0o7a0dBR1ksSUFBSTtzQkFBWixLQUFLO2dCQUVjLElBQUk7c0JBQXZCLEtBQUs7dUJBQUMsV0FBVzs7QUFjdEIsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxpQkEvQlosTUFBTSxFQU1OLE1BQU0sRUFPTixhQUFhLGFBY1osWUFBWSxhQTNCYixNQUFNLEVBTU4sTUFBTSxFQU9OLGFBQWE7MEdBa0JiLFlBQVksWUFKWixDQUFDLFlBQVksQ0FBQzsyRkFJZCxZQUFZO2tCQUx4QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxhQUFhLENBQUM7b0JBQ3RDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsYUFBYSxDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsRXZlbnRFbWl0dGVyLERpcmVjdGl2ZSxJbnB1dCxPdXRwdXQsQ29udGVudENoaWxkcmVuLENvbnRlbnRDaGlsZCxUZW1wbGF0ZVJlZixBZnRlckNvbnRlbnRJbml0LFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWhlYWRlcicsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXIge31cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWZvb3RlcicsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBGb290ZXIge31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFRlbXBsYXRlXScsXG4gICAgaG9zdDoge1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUHJpbWVUZW1wbGF0ZSB7XG4gICAgXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuICAgIFxuICAgIEBJbnB1dCgncFRlbXBsYXRlJykgbmFtZTogc3RyaW5nO1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cbiAgICBcbiAgICBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtIZWFkZXIsRm9vdGVyLFByaW1lVGVtcGxhdGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0hlYWRlcixGb290ZXIsUHJpbWVUZW1wbGF0ZV1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/api/sortevent.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/sortevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/sortevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS9zb3J0ZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnRNZXRhIH0gZnJvbSAnLi9zb3J0bWV0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydEV2ZW50IHtcbiAgICBkYXRhPzogYW55W107XG4gICAgbW9kZT86IHN0cmluZztcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBtdWx0aVNvcnRNZXRhPzogU29ydE1ldGFbXTtcbn0iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/sortmeta.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/sortmeta.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/sortmeta.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydG1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL3NvcnRtZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNvcnRNZXRhIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/tablestate.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/tablestate.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/tablestate.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVzdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvdGFibGVzdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ydE1ldGEgfSBmcm9tICcuL3NvcnRtZXRhJztcbmltcG9ydCB7IEZpbHRlck1ldGFkYXRhIH0gZnJvbSAnLi9maWx0ZXJtZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTdGF0ZSB7XG4gICAgZmlyc3Q/OiBudW1iZXI7XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzb3J0RmllbGQ/OiBzdHJpbmc7XG4gICAgc29ydE9yZGVyPzogbnVtYmVyO1xuICAgIG11bHRpU29ydE1ldGE/OiBTb3J0TWV0YVtdO1xuICAgIGZpbHRlcnM/OiB7W3M6IHN0cmluZ106IEZpbHRlck1ldGFkYXRhIHzCoEZpbHRlck1ldGFkYXRhW107fTtcbiAgICBjb2x1bW5XaWR0aHM/OiBzdHJpbmc7XG4gICAgdGFibGVXaWR0aD86IHN0cmluZztcbiAgICB3cmFwcGVyV2lkdGg/OiBzdHJpbmc7XG4gICAgc2VsZWN0aW9uPzogYW55O1xuICAgIGNvbHVtbk9yZGVyPzogc3RyaW5nW107XG4gICAgZXhwYW5kZWRSb3dLZXlzPzoge1tzOiBzdHJpbmddOiBib29sZWFuO307XG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/translation.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/translation.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/translation.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL3RyYW5zbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uIHtcbiAgICBzdGFydHNXaXRoPzogc3RyaW5nO1xuICAgIGNvbnRhaW5zPzogc3RyaW5nO1xuICAgIG5vdENvbnRhaW5zPzogc3RyaW5nO1xuICAgIGVuZHNXaXRoPzogc3RyaW5nO1xuICAgIGVxdWFscz86IHN0cmluZztcbiAgICBub3RFcXVhbHM/OiBzdHJpbmc7XG4gICAgbm9GaWx0ZXI/OiBzdHJpbmc7XG4gICAgbHQ/OiBzdHJpbmc7XG4gICAgbHRlPzogc3RyaW5nO1xuICAgIGd0Pzogc3RyaW5nO1xuICAgIGd0ZT86IHN0cmluZztcbiAgICBpcz86IHN0cmluZztcbiAgICBpc05vdD86IHN0cmluZztcbiAgICBiZWZvcmU/OiBzdHJpbmc7XG4gICAgYWZ0ZXI/OiBzdHJpbmc7XG4gICAgZGF0ZUlzPzogc3RyaW5nO1xuICAgIGRhdGVJc05vdD86IHN0cmluZztcbiAgICBkYXRlQmVmb3JlPzogc3RyaW5nO1xuICAgIGRhdGVBZnRlcj86IHN0cmluZztcbiAgICBjbGVhcj86IHN0cmluZztcbiAgICBhcHBseT86IHN0cmluZztcbiAgICBtYXRjaEFsbD86IHN0cmluZztcbiAgICBtYXRjaEFueT86IHN0cmluZztcbiAgICBhZGRSdWxlPzogc3RyaW5nO1xuICAgIHJlbW92ZVJ1bGU/OiBzdHJpbmc7XG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIHJlamVjdD86IHN0cmluZztcbiAgICBjaG9vc2U/OiBzdHJpbmc7XG4gICAgdXBsb2FkPzogc3RyaW5nO1xuICAgIGNhbmNlbD86IHN0cmluZztcbiAgICBkYXlOYW1lcz86IHN0cmluZ1tdO1xuICAgIGRheU5hbWVzU2hvcnQ/OiBzdHJpbmdbXTtcbiAgICBkYXlOYW1lc01pbj86IHN0cmluZ1tdO1xuICAgIG1vbnRoTmFtZXM/OiBzdHJpbmdbXTtcbiAgICBtb250aE5hbWVzU2hvcnQ/OiBzdHJpbmdbXTtcbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nO1xuICAgIHRvZGF5Pzogc3RyaW5nO1xuICAgIHdlZWtIZWFkZXI/OiBzdHJpbmc7XG4gICAgd2Vhaz86IHN0cmluZztcbiAgICBtZWRpdW0/OiBzdHJpbmc7XG4gICAgc3Ryb25nPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkUHJvbXB0Pzogc3RyaW5nO1xuICAgIGVtcHR5TWVzc2FnZT86IHN0cmluZztcbiAgICBlbXB0eUZpbHRlck1lc3NhZ2U/OiBzdHJpbmc7XG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/translationkeys.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/translationkeys.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/translationkeys.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+export class TranslationKeys {
+}
+TranslationKeys.STARTS_WITH = 'startsWith';
+TranslationKeys.CONTAINS = 'contains';
+TranslationKeys.NOT_CONTAINS = 'notContains';
+TranslationKeys.ENDS_WITH = 'endsWith';
+TranslationKeys.EQUALS = 'equals';
+TranslationKeys.NOT_EQUALS = 'notEquals';
+TranslationKeys.NO_FILTER = 'noFilter';
+TranslationKeys.LT = 'lt';
+TranslationKeys.LTE = 'lte';
+TranslationKeys.GT = 'gt';
+TranslationKeys.GTE = 'gte';
+TranslationKeys.IS = 'is';
+TranslationKeys.IS_NOT = 'isNot';
+TranslationKeys.BEFORE = 'before';
+TranslationKeys.AFTER = 'after';
+TranslationKeys.CLEAR = 'clear';
+TranslationKeys.APPLY = 'apply';
+TranslationKeys.MATCH_ALL = 'matchAll';
+TranslationKeys.MATCH_ANY = 'matchAny';
+TranslationKeys.ADD_RULE = 'addRule';
+TranslationKeys.REMOVE_RULE = 'removeRule';
+TranslationKeys.ACCEPT = 'accept';
+TranslationKeys.REJECT = 'reject';
+TranslationKeys.CHOOSE = 'choose';
+TranslationKeys.UPLOAD = 'upload';
+TranslationKeys.CANCEL = 'cancel';
+TranslationKeys.DAY_NAMES = 'dayNames';
+TranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';
+TranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';
+TranslationKeys.MONTH_NAMES = 'monthNames';
+TranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';
+TranslationKeys.TODAY = 'today';
+TranslationKeys.WEEK_HEADER = 'weekHeader';
+TranslationKeys.WEAK = 'weak';
+TranslationKeys.MEDIUM = 'medium';
+TranslationKeys.STRONG = 'strong';
+TranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';
+TranslationKeys.EMPTY_MESSAGE = 'emptyMessage';
+TranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FwaS90cmFuc2xhdGlvbmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGVBQWU7O0FBQ0QsMkJBQVcsR0FBRyxZQUFZLENBQUM7QUFDM0Isd0JBQVEsR0FBRyxVQUFVLENBQUM7QUFDdEIsNEJBQVksR0FBRyxhQUFhLENBQUM7QUFDN0IseUJBQVMsR0FBRyxVQUFVLENBQUM7QUFDdkIsc0JBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsMEJBQVUsR0FBRyxXQUFXLENBQUM7QUFDekIseUJBQVMsR0FBRyxVQUFVLENBQUM7QUFDdkIsa0JBQUUsR0FBRyxJQUFJLENBQUM7QUFDVixtQkFBRyxHQUFHLEtBQUssQ0FBQztBQUNaLGtCQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ1YsbUJBQUcsR0FBRyxLQUFLLENBQUM7QUFDWixrQkFBRSxHQUFHLElBQUksQ0FBQztBQUNWLHNCQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHFCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLHFCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLHFCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLHlCQUFTLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLHlCQUFTLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLHdCQUFRLEdBQUcsU0FBUyxDQUFDO0FBQ3JCLDJCQUFXLEdBQUcsWUFBWSxDQUFDO0FBQzNCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHNCQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLHlCQUFTLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLCtCQUFlLEdBQUcsZUFBZSxDQUFDO0FBQ2xDLDZCQUFhLEdBQUcsYUFBYSxDQUFDO0FBQzlCLDJCQUFXLEdBQUcsWUFBWSxDQUFDO0FBQzNCLGlDQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBQ3RDLHFCQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ2hCLDJCQUFXLEdBQUcsWUFBWSxDQUFDO0FBQzNCLG9CQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2Qsc0JBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsc0JBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsK0JBQWUsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuQyw2QkFBYSxHQUFHLGNBQWMsQ0FBQztBQUMvQixvQ0FBb0IsR0FBRyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvbktleXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RBUlRTX1dJVEggPSAnc3RhcnRzV2l0aCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT05UQUlOUyA9ICdjb250YWlucyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT1RfQ09OVEFJTlMgPSAnbm90Q29udGFpbnMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5EU19XSVRIID0gJ2VuZHNXaXRoJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVRVUFMUyA9ICdlcXVhbHMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9UX0VRVUFMUyA9ICdub3RFcXVhbHMnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9fRklMVEVSID0gJ25vRmlsdGVyJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExUID0gJ2x0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExURSA9ICdsdGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1QgPSAnZ3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1RFID0gJ2d0ZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJUyA9ICdpcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBJU19OT1QgPSAnaXNOb3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQkVGT1JFID0gJ2JlZm9yZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBRlRFUiA9ICdhZnRlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBDTEVBUiA9ICdjbGVhcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBUFBMWSA9ICdhcHBseSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVRDSF9BTEwgPSAnbWF0Y2hBbGwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFUQ0hfQU5ZID0gJ21hdGNoQW55JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFERF9SVUxFID0gJ2FkZFJ1bGUnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVNT1ZFX1JVTEUgPSAncmVtb3ZlUnVsZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ0NFUFQgPSAnYWNjZXB0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFSkVDVCA9ICdyZWplY3QnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hPT1NFID0gJ2Nob29zZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQUQgPSAndXBsb2FkJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBTkNFTCA9ICdjYW5jZWwnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFZX05BTUVTID0gJ2RheU5hbWVzJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBWV9OQU1FU19TSE9SVCA9ICdkYXlOYW1lc1Nob3J0JztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBWV9OQU1FU19NSU4gPSAnZGF5TmFtZXNNaW4nO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTU9OVEhfTkFNRVMgPSAnbW9udGhOYW1lcyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNT05USF9OQU1FU19TSE9SVCA9ICdtb250aE5hbWVzU2hvcnQnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVE9EQVkgPSAndG9kYXknO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgV0VFS19IRUFERVIgPSAnd2Vla0hlYWRlcic7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBXRUFLID0gJ3dlYWsnO1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUVESVVNID0gJ21lZGl1bSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJPTkcgPSAnc3Ryb25nJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBU1NXT1JEX1BST01QVCA9ICdwYXNzd29yZFByb21wdCc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTVBUWV9NRVNTQUdFID0gJ2VtcHR5TWVzc2FnZSc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTVBUWV9GSUxURVJfTUVTU0FHRSA9ICdlbXB0eUZpbHRlck1lc3NhZ2UnO1xufSJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/api/treedragdropservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/treedragdropservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/treedragdropservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,23 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class TreeDragDropService {
+    constructor() {
+        this.dragStartSource = new Subject();
+        this.dragStopSource = new Subject();
+        this.dragStart$ = this.dragStartSource.asObservable();
+        this.dragStop$ = this.dragStopSource.asObservable();
+    }
+    startDrag(event) {
+        this.dragStartSource.next(event);
+    }
+    stopDrag(event) {
+        this.dragStopSource.next(event);
+    }
+}
+TreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, decorators: [{
+            type: Injectable
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZWRyYWdkcm9wc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hcGkvdHJlZWRyYWdkcm9wc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9CLE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFHWSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO1FBQ25ELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7UUFFMUQsZUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakQsY0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0FTbEQ7SUFQRyxTQUFTLENBQUMsS0FBd0I7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUF3QjtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOztnSEFkUSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJlZU5vZGVEcmFnRXZlbnQgfSBmcm9tICcuL3RyZWVub2RlZHJhZ2V2ZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRyZWVEcmFnRHJvcFNlcnZpY2Uge1xuICAgIFxuICAgIHByaXZhdGUgZHJhZ1N0YXJ0U291cmNlID0gbmV3IFN1YmplY3Q8VHJlZU5vZGVEcmFnRXZlbnQ+KCk7XG4gICAgcHJpdmF0ZSBkcmFnU3RvcFNvdXJjZSA9IG5ldyBTdWJqZWN0PFRyZWVOb2RlRHJhZ0V2ZW50PigpO1xuICAgIFxuICAgIGRyYWdTdGFydCQgPSB0aGlzLmRyYWdTdGFydFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBkcmFnU3RvcCQgPSB0aGlzLmRyYWdTdG9wU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIFxuICAgIHN0YXJ0RHJhZyhldmVudDogVHJlZU5vZGVEcmFnRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRTb3VyY2UubmV4dChldmVudCk7XG4gICAgfVxuICAgIFxuICAgIHN0b3BEcmFnKGV2ZW50OiBUcmVlTm9kZURyYWdFdmVudCkge1xuICAgICAgICB0aGlzLmRyYWdTdG9wU291cmNlLm5leHQoZXZlbnQpO1xuICAgIH1cbn0iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/api/treenode.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/treenode.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/treenode.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL3RyZWVub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRyZWVOb2RlPFQgPSBhbnk+wqB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0YT86IFQ7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBleHBhbmRlZEljb24/OiBhbnk7XG4gICAgY29sbGFwc2VkSWNvbj86IGFueTtcbiAgICBjaGlsZHJlbj86IFRyZWVOb2RlPFQ+W107XG4gICAgbGVhZj86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgcGFyZW50PzogVHJlZU5vZGU8VD47XG4gICAgcGFydGlhbFNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBzdHlsZUNsYXNzPzogc3RyaW5nO1xuICAgIGRyYWdnYWJsZT86IGJvb2xlYW47XG4gICAgZHJvcHBhYmxlPzogYm9vbGVhbjtcbiAgICBzZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgICBrZXk/OiBzdHJpbmc7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/api/treenodedragevent.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/api/treenodedragevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/api/treenodedragevent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZW5vZGVkcmFnZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXBpL3RyZWVub2RlZHJhZ2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4vdHJlZW5vZGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVOb2RlRHJhZ0V2ZW50IHtcbiAgICB0cmVlPzogYW55O1xuICAgIG5vZGU/OiBUcmVlTm9kZTtcbiAgICBzdWJOb2Rlcz86IFRyZWVOb2RlW107XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gICAgc2NvcGU/OiBhbnk7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/autocomplete/autocomplete.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/autocomplete/autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/autocomplete/autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,959 @@
+import { NgModule, Component, ViewChild, Input, Output, EventEmitter, ContentChildren, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { InputTextModule } from 'primeng/inputtext';
+import { ButtonModule } from 'primeng/button';
+import { RippleModule } from 'primeng/ripple';
+import { SharedModule, PrimeTemplate, TranslationKeys } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/cdk/scrolling";
+import * as i3 from "@angular/common";
+import * as i4 from "primeng/button";
+import * as i5 from "primeng/ripple";
+export const AUTOCOMPLETE_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => AutoComplete),
+    multi: true
+};
+export class AutoComplete {
+    constructor(el, renderer, cd, differs, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.differs = differs;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.minLength = 1;
+        this.delay = 300;
+        this.type = 'text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.dropdownIcon = "pi pi-chevron-down";
+        this.unique = true;
+        this.completeOnFocus = false;
+        this.completeMethod = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onUnselect = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onKeyUp = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.dropdownMode = 'blank';
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autocomplete = 'off';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.overlayVisible = false;
+        this.focus = false;
+        this.inputFieldValue = null;
+        this.differ = differs.find([]).create(null);
+        this.listId = UniqueComponentId() + '_list';
+    }
+    get suggestions() {
+        return this._suggestions;
+    }
+    set suggestions(val) {
+        this._suggestions = val;
+        this.handleSuggestionsChange();
+    }
+    ngAfterViewChecked() {
+        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated
+        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {
+            setTimeout(() => {
+                if (this.overlay) {
+                    this.alignOverlay();
+                }
+            }, 1);
+            this.suggestionsUpdated = false;
+        }
+        if (this.highlightOptionChanged) {
+            setTimeout(() => {
+                if (this.overlay && this.itemsWrapper) {
+                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+                    if (listItem) {
+                        DomHandler.scrollInView(this.itemsWrapper, listItem);
+                    }
+                    if (this.virtualScroll && this.viewPort) {
+                        let range = this.viewPort.getRenderedRange();
+                        this.updateVirtualScrollSelectedIndex();
+                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                        }
+                    }
+                }
+            }, 1);
+            this.highlightOptionChanged = false;
+        }
+    }
+    handleSuggestionsChange() {
+        if (this._suggestions != null && this.loading) {
+            this.highlightOption = null;
+            if (this._suggestions.length) {
+                this.noResults = false;
+                this.show();
+                this.suggestionsUpdated = true;
+                if (this.autoHighlight) {
+                    this.highlightOption = this._suggestions[0];
+                }
+            }
+            else {
+                this.noResults = true;
+                if (this.showEmptyMessage) {
+                    this.show();
+                    this.suggestionsUpdated = true;
+                }
+                else {
+                    this.hide();
+                }
+            }
+            this.loading = false;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    updateVirtualScrollSelectedIndex() {
+        if (this.highlightOption && this.suggestions && this.suggestions.length) {
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.filled = this.value && this.value != '';
+        this.updateInputField();
+        this.cd.markForCheck();
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInput(event) {
+        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.
+        if (!this.inputKeyDown && DomHandler.isIE()) {
+            return;
+        }
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+        }
+        let value = event.target.value;
+        if (!this.multiple && !this.forceSelection) {
+            this.onModelChange(value);
+        }
+        if (value.length === 0 && !this.multiple) {
+            this.hide();
+            this.onClear.emit(event);
+            this.onModelChange(value);
+        }
+        if (value.length >= this.minLength) {
+            this.timeout = setTimeout(() => {
+                this.search(event, value);
+            }, this.delay);
+        }
+        else {
+            this.hide();
+        }
+        this.updateFilledState();
+        this.inputKeyDown = false;
+    }
+    onInputClick(event) {
+        if (this.documentClickListener) {
+            this.inputClick = true;
+        }
+    }
+    search(event, query) {
+        //allow empty string but not undefined or null
+        if (query === undefined || query === null) {
+            return;
+        }
+        this.loading = true;
+        this.completeMethod.emit({
+            originalEvent: event,
+            query: query
+        });
+    }
+    selectItem(option, focus = true) {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.multiple) {
+            this.multiInputEL.nativeElement.value = '';
+            this.value = this.value || [];
+            if (!this.isSelected(option) || !this.unique) {
+                this.value = [...this.value, option];
+                this.onModelChange(this.value);
+            }
+        }
+        else {
+            this.inputEL.nativeElement.value = this.resolveFieldData(option);
+            this.value = option;
+            this.onModelChange(this.value);
+        }
+        this.onSelect.emit(option);
+        this.updateFilledState();
+        if (focus) {
+            this.itemClicked = true;
+            this.focusInput();
+        }
+    }
+    show() {
+        if (this.multiInputEL || this.inputEL) {
+            let hasFocus = this.multiple ?
+                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :
+                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;
+            if (!this.overlayVisible && hasFocus) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';
+            }
+        }
+    }
+    resolveFieldData(value) {
+        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;
+        return data !== (null || undefined) ? data : '';
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+        else
+            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    handleDropdownClick(event) {
+        if (!this.overlayVisible) {
+            this.focusInput();
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            if (this.dropdownMode === 'blank')
+                this.search(event, '');
+            else if (this.dropdownMode === 'current')
+                this.search(event, queryValue);
+            this.onDropdownClick.emit({
+                originalEvent: event,
+                query: queryValue
+            });
+        }
+        else {
+            this.hide();
+        }
+    }
+    focusInput() {
+        if (this.multiple)
+            this.multiInputEL.nativeElement.focus();
+        else
+            this.inputEL.nativeElement.focus();
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    removeItem(item) {
+        let itemIndex = DomHandler.index(item);
+        let removedValue = this.value[itemIndex];
+        this.value = this.value.filter((val, i) => i != itemIndex);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+        this.onUnselect.emit(removedValue);
+    }
+    onKeydown(event) {
+        if (this.overlayVisible) {
+            switch (event.which) {
+                //down
+                case 40:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let nextItemIndex = highlightItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex != -1) {
+                            var nextItemIndex = highlightItemIndex + 1;
+                            if (nextItemIndex != (this.suggestions.length)) {
+                                this.highlightOption = this.suggestions[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.suggestions[0];
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //up
+                case 38:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let prevItemIndex = highlightItemIndex.itemIndex - 1;
+                            if (prevItemIndex >= 0) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (prevItemIndex < 0) {
+                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];
+                                if (prevGroup) {
+                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];
+                                    this.highlightOptionChanged = true;
+                                }
+                            }
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex > 0) {
+                            let prevItemIndex = highlightItemIndex - 1;
+                            this.highlightOption = this.suggestions[prevItemIndex];
+                            this.highlightOptionChanged = true;
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //enter
+                case 13:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                        this.hide();
+                    }
+                    event.preventDefault();
+                    break;
+                //escape
+                case 27:
+                    this.hide();
+                    event.preventDefault();
+                    break;
+                //tab
+                case 9:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                    }
+                    this.hide();
+                    break;
+            }
+        }
+        else {
+            if (event.which === 40 && this.suggestions) {
+                this.search(event, event.target.value);
+            }
+        }
+        if (this.multiple) {
+            switch (event.which) {
+                //backspace
+                case 8:
+                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {
+                        this.value = [...this.value];
+                        const removedValue = this.value.pop();
+                        this.onModelChange(this.value);
+                        this.updateFilledState();
+                        this.onUnselect.emit(removedValue);
+                    }
+                    break;
+            }
+        }
+        this.inputKeyDown = true;
+    }
+    onKeyup(event) {
+        this.onKeyUp.emit(event);
+    }
+    onInputFocus(event) {
+        if (!this.itemClicked && this.completeOnFocus) {
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            this.search(event, queryValue);
+        }
+        this.focus = true;
+        this.onFocus.emit(event);
+        this.itemClicked = false;
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputChange(event) {
+        if (this.forceSelection) {
+            let valid = false;
+            let inputValue = event.target.value.trim();
+            if (this.suggestions) {
+                for (let suggestion of this.suggestions) {
+                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;
+                    if (itemValue && inputValue === itemValue.trim()) {
+                        valid = true;
+                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {
+                            this.selectItem(suggestion, false);
+                        }, 250);
+                        break;
+                    }
+                }
+            }
+            if (!valid) {
+                if (this.multiple) {
+                    this.multiInputEL.nativeElement.value = '';
+                }
+                else {
+                    this.value = null;
+                    this.inputEL.nativeElement.value = '';
+                }
+                this.onClear.emit(event);
+                this.onModelChange(this.value);
+                this.updateFilledState();
+            }
+        }
+    }
+    onInputPaste(event) {
+        this.onKeydown(event);
+    }
+    isSelected(val) {
+        let selected = false;
+        if (this.value && this.value.length) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    selected = true;
+                    break;
+                }
+            }
+        }
+        return selected;
+    }
+    findOptionIndex(option, suggestions) {
+        let index = -1;
+        if (suggestions) {
+            for (let i = 0; i < suggestions.length; i++) {
+                if (ObjectUtils.equals(option, suggestions[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    updateFilledState() {
+        if (this.multiple)
+            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');
+        else
+            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');
+        ;
+    }
+    updateInputField() {
+        let formattedValue = this.resolveFieldData(this.value);
+        this.inputFieldValue = formattedValue;
+        if (this.inputEL && this.inputEL.nativeElement) {
+            this.inputEL.nativeElement.value = formattedValue;
+        }
+        this.updateFilledState();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (event.which === 3) {
+                    return;
+                }
+                if (!this.inputClick && !this.isDropdownClick(event)) {
+                    this.hide();
+                }
+                this.inputClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    isDropdownClick(event) {
+        if (this.dropdown) {
+            let target = event.target;
+            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);
+        }
+        else {
+            return false;
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onHide.emit();
+    }
+    ngOnDestroy() {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+AutoComplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+AutoComplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AutoComplete, selector: "p-autoComplete", inputs: { minLength: "minLength", delay: "delay", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", inputStyle: "inputStyle", inputId: "inputId", inputStyleClass: "inputStyleClass", placeholder: "placeholder", readonly: "readonly", disabled: "disabled", virtualScroll: "virtualScroll", itemSize: "itemSize", maxlength: "maxlength", name: "name", required: "required", size: "size", appendTo: "appendTo", autoHighlight: "autoHighlight", forceSelection: "forceSelection", type: "type", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", ariaLabel: "ariaLabel", dropdownAriaLabel: "dropdownAriaLabel", ariaLabelledBy: "ariaLabelledBy", dropdownIcon: "dropdownIcon", unique: "unique", group: "group", completeOnFocus: "completeOnFocus", field: "field", scrollHeight: "scrollHeight", dropdown: "dropdown", showEmptyMessage: "showEmptyMessage", dropdownMode: "dropdownMode", multiple: "multiple", tabindex: "tabindex", dataKey: "dataKey", emptyMessage: "emptyMessage", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autofocus: "autofocus", autocomplete: "autocomplete", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", suggestions: "suggestions" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "(focus && !disabled) ||\u00A0overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEL", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputEL", first: true, predicate: ["in"], descendants: true }, { propertyName: "multiInputEL", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"], components: [{ type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-autoComplete', template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'
+                    }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { minLength: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoHighlight: [{
+                type: Input
+            }], forceSelection: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], dropdownAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], unique: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], completeOnFocus: [{
+                type: Input
+            }], completeMethod: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onUnselect: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onKeyUp: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], field: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], dropdown: [{
+                type: Input
+            }], showEmptyMessage: [{
+                type: Input
+            }], dropdownMode: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], containerEL: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputEL: [{
+                type: ViewChild,
+                args: ['in']
+            }], multiInputEL: [{
+                type: ViewChild,
+                args: ['multiIn']
+            }], multiContainerEL: [{
+                type: ViewChild,
+                args: ['multiContainer']
+            }], dropdownButton: [{
+                type: ViewChild,
+                args: ['ddBtn']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], suggestions: [{
+                type: Input
+            }] } });
+export class AutoCompleteModule {
+}
+AutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], exports: [AutoComplete, SharedModule, ScrollingModule] });
+AutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],
+                    exports: [AutoComplete, SharedModule, ScrollingModule],
+                    declarations: [AutoComplete]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUF3RCxLQUFLLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQWlDLFVBQVUsRUFBbUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcFIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxhQUFhLEVBQUUsZUFBZSxFQUFnQyxNQUFNLGFBQWEsQ0FBQztBQUN2RyxPQUFPLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFFakYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQVE7SUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdB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WSxFQUFDLFlBQVksRUFBQyxlQUFlLENBQUM7b0JBQ3BELFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxWaWV3Q2hpbGQsRWxlbWVudFJlZixBZnRlclZpZXdDaGVja2VkLEFmdGVyQ29udGVudEluaXQsT25EZXN0cm95LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsQ29udGVudENoaWxkcmVuLFF1ZXJ5TGlzdCxUZW1wbGF0ZVJlZixSZW5kZXJlcjIsZm9yd2FyZFJlZixDaGFuZ2VEZXRlY3RvclJlZixJdGVyYWJsZURpZmZlcnMsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHt0cmlnZ2VyLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZSxBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZSxQcmltZVRlbXBsYXRlLCBUcmFuc2xhdGlvbktleXMsIFByaW1lTkdDb25maWcsIE92ZXJsYXlTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RvbUhhbmRsZXIsIENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge09iamVjdFV0aWxzLCBVbmlxdWVDb21wb25lbnRJZCwgWkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBTY3JvbGxpbmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvQ29tcGxldGUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWF1dG9Db21wbGV0ZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gI2NvbnRhaW5lciBbbmdDbGFzc109XCJ7J3AtYXV0b2NvbXBsZXRlIHAtY29tcG9uZW50Jzp0cnVlLCdwLWF1dG9jb21wbGV0ZS1kZCc6ZHJvcGRvd24sJ3AtYXV0b2NvbXBsZXRlLW11bHRpcGxlJzptdWx0aXBsZX1cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhbXVsdGlwbGVcIiAjaW4gW2F0dHIudHlwZV09XCJ0eXBlXCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIiBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCIgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYXV0b2NvbXBsZXRlLWlucHV0IHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCIgW25nQ2xhc3NdPVwieydwLWF1dG9jb21wbGV0ZS1kZC1pbnB1dCc6ZHJvcGRvd24sJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiBbdmFsdWVdPVwiaW5wdXRGaWVsZFZhbHVlXCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJsaXN0SWRcIiByb2xlPVwic2VhcmNoYm94XCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidwLWhpZ2hsaWdodGVkLW9wdGlvbidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCIgKGtleXVwKT1cIm9uS2V5dXAoJGV2ZW50KVwiIFthdHRyLmF1dG9mb2N1c109XCJhdXRvZm9jdXNcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCIgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIiAocGFzdGUpPVwib25JbnB1dFBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci5zaXplXT1cInNpemVcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgPjx1bCAqbmdJZj1cIm11bHRpcGxlXCIgI211bHRpQ29udGFpbmVyIGNsYXNzPVwicC1hdXRvY29tcGxldGUtbXVsdGlwbGUtY29udGFpbmVyIHAtY29tcG9uZW50IHAtaW5wdXR0ZXh0XCIgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzpkaXNhYmxlZCwncC1mb2N1cyc6Zm9jdXN9XCIgKGNsaWNrKT1cIm11bHRpSW4uZm9jdXMoKVwiPlxuICAgICAgICAgICAgICAgIDxsaSAjdG9rZW4gKm5nRm9yPVwibGV0IHZhbCBvZiB2YWx1ZVwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtdG9rZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlbGVjdGVkSXRlbVRlbXBsYXRlXCIgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS10b2tlbi1sYWJlbFwiPnt7cmVzb2x2ZUZpZWxkRGF0YSh2YWwpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cInAtYXV0b2NvbXBsZXRlLXRva2VuLWljb24gcGkgcGktdGltZXMtY2lyY2xlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0odG9rZW4pXCIgKm5nSWY9XCIhZGlzYWJsZWQgJiYgIXJlYWRvbmx5XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1hdXRvY29tcGxldGUtaW5wdXQtdG9rZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNtdWx0aUluIFthdHRyLnR5cGVdPVwidHlwZVwiIFthdHRyLmlkXT1cImlucHV0SWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCIodmFsdWUmJnZhbHVlLmxlbmd0aCA/IG51bGwgOiBwbGFjZWhvbGRlcilcIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCIgW2F0dHIuYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIiAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIChwYXN0ZSk9XCJvbklucHV0UGFzdGUoJGV2ZW50KVwiIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCIgW2NsYXNzXT1cImlucHV0U3R5bGVDbGFzc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCIgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJsaXN0SWRcIiByb2xlPVwic2VhcmNoYm94XCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZVwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIidwLWhpZ2hsaWdodGVkLW9wdGlvbidcIj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtbG9hZGVyIHBpIHBpLXNwaW5uZXIgcGktc3BpblwiPjwvaT48YnV0dG9uICNkZEJ0biB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBbaWNvbl09XCJkcm9wZG93bkljb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImRyb3Bkb3duQXJpYUxhYmVsXCIgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1kcm9wZG93blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRHJvcGRvd25DbGljaygkZXZlbnQpXCIgKm5nSWY9XCJkcm9wZG93blwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCI+PC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2ICNwYW5lbCAqbmdJZj1cIm92ZXJsYXlWaXNpYmxlXCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIiBbbmdDbGFzc109XCJbJ3AtYXV0b2NvbXBsZXRlLXBhbmVsIHAtY29tcG9uZW50J11cIiBbc3R5bGUubWF4LWhlaWdodF09XCJ2aXJ0dWFsU2Nyb2xsID8gJ2F1dG8nIDogc2Nyb2xsSGVpZ2h0XCIgW25nU3R5bGVdPVwicGFuZWxTdHlsZVwiIFtjbGFzc109XCJwYW5lbFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25FbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDx1bCByb2xlPVwibGlzdGJveFwiIFthdHRyLmlkXT1cImxpc3RJZFwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtaXRlbXNcIiBbbmdDbGFzc109XCJ7J3AtYXV0b2NvbXBsZXRlLXZpcnR1YWxzY3JvbGwnOiB2aXJ0dWFsU2Nyb2xsfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0Z3JvdXAgW25nRm9yT2ZdPVwic3VnZ2VzdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1pdGVtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWdyb3VwVGVtcGxhdGVcIj57e2dldE9wdGlvbkdyb3VwTGFiZWwob3B0Z3JvdXApfHwnZW1wdHknfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtc2xpc3Q7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0Z3JvdXApfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXNsaXN0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBzdWdnZXN0aW9uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbXNsaXN0IGxldC1zdWdnZXN0aW9uc1RvRGlzcGxheT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbDsgZWxzZSB2aXJ0dWFsU2Nyb2xsTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwib3B0aW9uXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzdWdnZXN0aW9uc1RvRGlzcGxheTsgbGV0IGlkeCA9IGluZGV4XCIgY2xhc3M9XCJwLWF1dG9jb21wbGV0ZS1pdGVtXCIgcFJpcHBsZSBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0JzogKG9wdGlvbiA9PT0gaGlnaGxpZ2h0T3B0aW9uKX1cIiBbaWRdPVwiaGlnaGxpZ2h0T3B0aW9uID09IG9wdGlvbiA/ICdwLWhpZ2hsaWdodGVkLW9wdGlvbic6JydcIiAoY2xpY2spPVwic2VsZWN0SXRlbShvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPnt7cmVzb2x2ZUZpZWxkRGF0YShvcHRpb24pfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGlkeH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZpcnR1YWxTY3JvbGxMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgW25nU3R5bGVdPVwieydoZWlnaHQnOiBzY3JvbGxIZWlnaHR9XCIgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCIgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsICYmICFub1Jlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2Ygc3VnZ2VzdGlvbnNUb0Rpc3BsYXk7IGxldCBpID0gaW5kZXg7IGxldCBjID0gY291bnQ7IGxldCBmID0gZmlyc3Q7IGxldCBsID0gbGFzdDsgbGV0IGUgPSBldmVuOyBsZXQgbyA9IG9kZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJvcHRpb25cIiBjbGFzcz1cInAtYXV0b2NvbXBsZXRlLWl0ZW1cIiBwUmlwcGxlIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOiAob3B0aW9uID09PSBoaWdobGlnaHRPcHRpb24pfVwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogaXRlbVNpemUgKyAncHgnfVwiIFtpZF09XCJoaWdobGlnaHRPcHRpb24gPT0gb3B0aW9uID8gJ3AtaGlnaGxpZ2h0ZWQtb3B0aW9uJzonJ1wiIChjbGljayk9XCJzZWxlY3RJdGVtKG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj57e3Jlc29sdmVGaWVsZERhdGEob3B0aW9uKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJub1Jlc3VsdHMgJiYgc2hvd0VtcHR5TWVzc2FnZVwiIGNsYXNzPVwicC1hdXRvY29tcGxldGUtZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VtcHR5TWVzc2FnZUxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNlbXB0eSAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50IHAtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1maWxsZWRdJzogJ2ZpbGxlZCcsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHdyYXBwZXItZm9jdXNdJzogJyhmb2N1cyAmJiAhZGlzYWJsZWQpIHx8wqBvdmVybGF5VmlzaWJsZSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0FVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCxBZnRlckNvbnRlbnRJbml0LE9uRGVzdHJveSxDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBASW5wdXQoKSBtaW5MZW5ndGg6IG51bWJlciA9IDE7XG5cbiAgICBASW5wdXQoKSBkZWxheTogbnVtYmVyID0gMzAwO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGw6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBpdGVtU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBhdXRvSGlnaGxpZ2h0OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZm9yY2VTZWxlY3Rpb246IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRyb3Bkb3duQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZHJvcGRvd25JY29uOiBzdHJpbmcgPSBcInBpIHBpLWNoZXZyb24tZG93blwiO1xuXG4gICAgQElucHV0KCkgdW5pcXVlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGdyb3VwOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY29tcGxldGVPbkZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgY29tcGxldGVNZXRob2Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QE91dHB1dCgpIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uS2V5VXA6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgICBASW5wdXQoKSBkcm9wZG93bjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dFbXB0eU1lc3NhZ2U6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkcm9wZG93bk1vZGU6IHN0cmluZyA9ICdibGFuayc7XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBlbXB0eU1lc3NhZ2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG5cbiAgICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyRUw6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbicpIGlucHV0RUw6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdtdWx0aUluJykgbXVsdGlJbnB1dEVMOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbXVsdGlDb250YWluZXInKSBtdWx0aUNvbnRhaW5lckVMOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZGRCdG4nKSBkcm9wZG93bkJ1dHRvbjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSB2aWV3UG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgb3ZlcmxheTogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBpdGVtc1dyYXBwZXI6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICB2YWx1ZTogYW55O1xuXG4gICAgX3N1Z2dlc3Rpb25zOiBhbnlbXTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHRpbWVvdXQ6IGFueTtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IGFueTtcblxuICAgIHN1Z2dlc3Rpb25zVXBkYXRlZDogYm9vbGVhbjtcblxuICAgIGhpZ2hsaWdodE9wdGlvbjogYW55O1xuXG4gICAgaGlnaGxpZ2h0T3B0aW9uQ2hhbmdlZDogYm9vbGVhbjtcblxuICAgIGZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmaWxsZWQ6IGJvb2xlYW47XG5cbiAgICBpbnB1dENsaWNrOiBib29sZWFuO1xuXG4gICAgaW5wdXRLZXlEb3duOiBib29sZWFuO1xuXG4gICAgbm9SZXN1bHRzOiBib29sZWFuO1xuXG4gICAgZGlmZmVyOiBhbnk7XG5cbiAgICBpbnB1dEZpZWxkVmFsdWU6IHN0cmluZyA9IG51bGw7XG5cbiAgICBsb2FkaW5nOiBib29sZWFuO1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgZm9yY2VTZWxlY3Rpb25VcGRhdGVNb2RlbFRpbWVvdXQ6IGFueTtcblxuICAgIGxpc3RJZDogc3RyaW5nO1xuXG4gICAgaXRlbUNsaWNrZWQ6IGJvb2xlYW47XG5cbiAgICB2aXJ0dWFsU2Nyb2xsU2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkge1xuICAgICAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLmxpc3RJZCA9IFVuaXF1ZUNvbXBvbmVudElkKCkgKyAnX2xpc3QnO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBzdWdnZXN0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICBzZXQgc3VnZ2VzdGlvbnModmFsOmFueVtdKSB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdmFsO1xuICAgICAgICB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICAvL1VzZSB0aW1lb3V0cyBhcyBzaW5jZSBBbmd1bGFyIDQuMiwgQWZ0ZXJWaWV3Q2hlY2tlZCBpcyBicm9rZW4gYW5kIG5vdCBjYWxsZWQgYWZ0ZXIgcGFuZWwgaXMgdXBkYXRlZFxuICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9uc1VwZGF0ZWQgJiYgdGhpcy5vdmVybGF5ICYmIHRoaXMub3ZlcmxheS5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNVcGRhdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRPcHRpb25DaGFuZ2VkKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuaXRlbXNXcmFwcGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0SXRlbSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLm92ZXJsYXksICdsaS5wLWhpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5zY3JvbGxJblZpZXcodGhpcy5pdGVtc1dyYXBwZXIsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy52aWV3UG9ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJhbmdlID0gdGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpcnR1YWxTY3JvbGxTZWxlY3RlZEluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZS5zdGFydCA+IHRoaXMudmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXggfHwgcmFuZ2UuZW5kIDwgdGhpcy52aXJ0dWFsU2Nyb2xsU2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsVG9JbmRleCh0aGlzLnZpcnR1YWxTY3JvbGxTZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb25DaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVTdWdnZXN0aW9uc0NoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25zICE9IG51bGwgJiYgdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbiA9IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zVXBkYXRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvSGlnaGxpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0T3B0aW9uID0gdGhpcy5fc3VnZ2VzdGlvbnNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0VtcHR5TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uc1VwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdGVkSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXgoKSB7XG4gICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodE9wdGlvbiAmJiB0aGlzLnN1Z2dlc3Rpb25zICYmIHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxTZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kT3B0aW9uSW5kZXgodGhpcy5oaWdobGlnaHRPcHRpb24sIHRoaXMuc3VnZ2VzdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZmlsbGVkID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9ICcnO1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0RmllbGQoKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbikgOiBvcHRpb25Hcm91cC5pdGVtcztcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBMYWJlbCkgOiAob3B0aW9uR3JvdXAubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uR3JvdXAubGFiZWwgOiBvcHRpb25Hcm91cCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdoZW4gYW4gaW5wdXQgZWxlbWVudCB3aXRoIGEgcGxhY2Vob2xkZXIgaXMgY2xpY2tlZCwgdGhlIG9uSW5wdXQgZXZlbnQgaXMgaW52b2tlZCBpbiBJRS5cbiAgICAgICAgaWYgKCF0aGlzLmlucHV0S2V5RG93biAmJiBEb21IYW5kbGVyLmlzSUUoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+IGV2ZW50LnRhcmdldCkudmFsdWU7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5mb3JjZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgdGhpcy5vbkNsZWFyLmVtaXQoZXZlbnQpO1xuXHQgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaChldmVudCwgdmFsdWUpO1xuICAgICAgICAgICAgfSwgdGhpcy5kZWxheSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuaW5wdXRLZXlEb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25JbnB1dENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dENsaWNrID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaChldmVudDogYW55LCBxdWVyeTogc3RyaW5nKSB7XG4gICAgICAgIC8vYWxsb3cgZW1wdHkgc3RyaW5nIGJ1dCBub3QgdW5kZWZpbmVkIG9yIG51bGxcbiAgICAgICBpZiAocXVlcnkgPT09IHVuZGVmaW5lZCB8fCBxdWVyeSA9PT0gbnVsbCkge1xuICAgICAgICAgICByZXR1cm47XG4gICAgICAgfVxuXG4gICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgIHRoaXMuY29tcGxldGVNZXRob2QuZW1pdCh7XG4gICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICBxdWVyeTogcXVlcnlcbiAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3RJdGVtKG9wdGlvbjogYW55LCBmb2N1czogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9yY2VTZWxlY3Rpb25VcGRhdGVNb2RlbFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZvcmNlU2VsZWN0aW9uVXBkYXRlTW9kZWxUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuZm9yY2VTZWxlY3Rpb25VcGRhdGVNb2RlbFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlJbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlfHxbXTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgfHwgIXRoaXMudW5pcXVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLG9wdGlvbl07XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAgdGhpcy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbik7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KG9wdGlvbik7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93KCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aUlucHV0RUwgfHwgdGhpcy5pbnB1dEVMKSB7XG4gICAgICAgICAgICBsZXQgaGFzRm9jdXMgPSB0aGlzLm11bHRpcGxlID9cbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50IDpcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSAmJiBoYXNGb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zV3JhcHBlciA9IHRoaXMudmlydHVhbFNjcm9sbCA/IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLm92ZXJsYXksICcuY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0JykgOiB0aGlzLm92ZXJsYXk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRPdmVybGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnb3ZlcmxheScsIHRoaXMub3ZlcmxheSwgdGhpcy5iYXNlWkluZGV4ICsgdGhpcy5jb25maWcuekluZGV4Lm92ZXJsYXkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3cuZW1pdChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIoZXZlbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFwcGVuZE92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSwgdGhpcy5hcHBlbmRUbyk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5LnN0eWxlLm1pbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5LnN0eWxlLm1pbldpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0pICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc29sdmVGaWVsZERhdGEodmFsdWUpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmZpZWxkID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YSh2YWx1ZSwgdGhpcy5maWVsZCkgOiB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGRhdGEgIT09IChudWxsIHx8IHVuZGVmaW5lZCkgPyBkYXRhIDogJyc7XG4gICAgfVxuXG4gICAgcmVzdG9yZU92ZXJsYXlBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXkgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKVxuICAgICAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKHRoaXMub3ZlcmxheSwgKHRoaXMubXVsdGlwbGUgPyB0aGlzLm11bHRpQ29udGFpbmVyRUwubmF0aXZlRWxlbWVudCA6IHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVsYXRpdmVQb3NpdGlvbih0aGlzLm92ZXJsYXksICh0aGlzLm11bHRpcGxlID8gdGhpcy5tdWx0aUNvbnRhaW5lckVMLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmlucHV0RUwubmF0aXZlRWxlbWVudCkpO1xuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBoYW5kbGVEcm9wZG93bkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgICAgICBsZXQgcXVlcnlWYWx1ZSA9IHRoaXMubXVsdGlwbGUgPyB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlIDogdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3Bkb3duTW9kZSA9PT0gJ2JsYW5rJylcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaChldmVudCwgJycpO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcm9wZG93bk1vZGUgPT09ICdjdXJyZW50JylcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaChldmVudCwgcXVlcnlWYWx1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMub25Ecm9wZG93bkNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeVZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXNJbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpXG4gICAgICAgICAgICB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5TWVzc2FnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5TWVzc2FnZSB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuRU1QVFlfTUVTU0FHRSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSXRlbShpdGVtOiBhbnkpIHtcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IERvbUhhbmRsZXIuaW5kZXgoaXRlbSk7XG4gICAgICAgIGxldCByZW1vdmVkVmFsdWUgPSB0aGlzLnZhbHVlW2l0ZW1JbmRleF07XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodmFsLCBpKSA9PiBpIT1pdGVtSW5kZXgpO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy5vblVuc2VsZWN0LmVtaXQocmVtb3ZlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHN3aXRjaChldmVudC53aGljaCkge1xuICAgICAgICAgICAgICAgIC8vZG93blxuICAgICAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGlnaGxpZ2h0SXRlbUluZGV4ID0gdGhpcy5maW5kT3B0aW9uR3JvdXBJbmRleCh0aGlzLmhpZ2hsaWdodE9wdGlvbiwgdGhpcy5zdWdnZXN0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRJdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRJdGVtSW5kZXggPSBoaWdobGlnaHRJdGVtSW5kZXguaXRlbUluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW1JbmRleCA8ICh0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5zdWdnZXN0aW9uc1toaWdobGlnaHRJdGVtSW5kZXguZ3JvdXBJbmRleF0pLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb24gPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5zdWdnZXN0aW9uc1toaWdobGlnaHRJdGVtSW5kZXguZ3JvdXBJbmRleF0pW25leHRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbkNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnN1Z2dlc3Rpb25zW2hpZ2hsaWdodEl0ZW1JbmRleC5ncm91cEluZGV4ICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb24gPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5zdWdnZXN0aW9uc1toaWdobGlnaHRJdGVtSW5kZXguZ3JvdXBJbmRleCArIDFdKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbih0aGlzLnN1Z2dlc3Rpb25zWzBdKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWdobGlnaHRJdGVtSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh0aGlzLmhpZ2hsaWdodE9wdGlvbiwgdGhpcy5zdWdnZXN0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRJdGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dEl0ZW1JbmRleCA9IGhpZ2hsaWdodEl0ZW1JbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRJdGVtSW5kZXggIT0gKHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbiA9IHRoaXMuc3VnZ2VzdGlvbnNbbmV4dEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0T3B0aW9uQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb24gPSB0aGlzLnN1Z2dlc3Rpb25zWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIC8vdXBcbiAgICAgICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhpZ2hsaWdodEl0ZW1JbmRleCA9IHRoaXMuZmluZE9wdGlvbkdyb3VwSW5kZXgodGhpcy5oaWdobGlnaHRPcHRpb24sIHRoaXMuc3VnZ2VzdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhpZ2hsaWdodEl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldkl0ZW1JbmRleCA9IGhpZ2hsaWdodEl0ZW1JbmRleC5pdGVtSW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2SXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb24gPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5zdWdnZXN0aW9uc1toaWdobGlnaHRJdGVtSW5kZXguZ3JvdXBJbmRleF0pW3ByZXZJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbkNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmV2SXRlbUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldkdyb3VwID0gdGhpcy5zdWdnZXN0aW9uc1toaWdobGlnaHRJdGVtSW5kZXguZ3JvdXBJbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihwcmV2R3JvdXApW3RoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihwcmV2R3JvdXApLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWdobGlnaHRJdGVtSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh0aGlzLmhpZ2hsaWdodE9wdGlvbiwgdGhpcy5zdWdnZXN0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaWdobGlnaHRJdGVtSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZJdGVtSW5kZXggPSBoaWdobGlnaHRJdGVtSW5kZXggLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0T3B0aW9uID0gdGhpcy5zdWdnZXN0aW9uc1twcmV2SXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE9wdGlvbkNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbSh0aGlzLmhpZ2hsaWdodE9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgLy9lc2NhcGVcbiAgICAgICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgICAgICAgICAgLy90YWJcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHRoaXMuaGlnaGxpZ2h0T3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChldmVudC53aGljaCA9PT0gNDAgJiYgdGhpcy5zdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKGV2ZW50LGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgc3dpdGNoKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAgICAgLy9iYWNrc3BhY2VcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoICYmICF0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZFZhbHVlID0gdGhpcy52YWx1ZS5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25VbnNlbGVjdC5lbWl0KHJlbW92ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRLZXlEb3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbktleXVwKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25LZXlVcC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1DbGlja2VkICYmIHRoaXMuY29tcGxldGVPbkZvY3VzICkge1xuICAgICAgICAgICAgbGV0IHF1ZXJ5VmFsdWUgPSB0aGlzLm11bHRpcGxlID8gdGhpcy5tdWx0aUlucHV0RUwubmF0aXZlRWxlbWVudC52YWx1ZSA6IHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2goZXZlbnQsIHF1ZXJ5VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnMpICB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc3VnZ2VzdGlvbiBvZiB0aGlzLnN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtVmFsdWUgPSB0aGlzLmZpZWxkID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShzdWdnZXN0aW9uLCB0aGlzLmZpZWxkKSA6IHN1Z2dlc3Rpb247XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmFsdWUgJiYgaW5wdXRWYWx1ZSA9PT0gaXRlbVZhbHVlLnRyaW0oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JjZVNlbGVjdGlvblVwZGF0ZU1vZGVsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShzdWdnZXN0aW9uLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbktleWRvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuZXF1YWxzKHRoaXMudmFsdWVbaV0sIHZhbCwgdGhpcy5kYXRhS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgZmluZE9wdGlvbkluZGV4KG9wdGlvbiwgc3VnZ2VzdGlvbnMpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IC0xO1xuICAgICAgICBpZiAoc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuZXF1YWxzKG9wdGlvbiwgc3VnZ2VzdGlvbnNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGZpbmRPcHRpb25Hcm91cEluZGV4KHZhbDogYW55LCBvcHRzOiBhbnlbXSk6IGFueSB7XG4gICAgICAgIGxldCBncm91cEluZGV4LCBpdGVtSW5kZXg7XG5cbiAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGdyb3VwSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IHRoaXMuZmluZE9wdGlvbkluZGV4KHZhbCwgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdHNbaV0pKTtcblxuICAgICAgICAgICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4ge2dyb3VwSW5kZXg6IGdyb3VwSW5kZXgsIGl0ZW1JbmRleDogaXRlbUluZGV4fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSlcbiAgICAgICAgICAgIHRoaXMuZmlsbGVkID0gKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHx8wqAodGhpcy5tdWx0aUlucHV0RUwgJiYgdGhpcy5tdWx0aUlucHV0RUwubmF0aXZlRWxlbWVudCAmJiB0aGlzLm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlICE9ICcnKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5maWxsZWQgPSAodGhpcy5pbnB1dEZpZWxkVmFsdWUgJiYgdGhpcy5pbnB1dEZpZWxkVmFsdWUgIT0gJycpIHx8wqAodGhpcy5pbnB1dEVMICYmIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50ICYmIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlICE9ICcnKTs7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5wdXRGaWVsZCgpIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5yZXNvbHZlRmllbGREYXRhKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0RUwgJiYgdGhpcy5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFTC5uYXRpdmVFbGVtZW50LnZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC53aGljaCA9PT0gMykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlucHV0Q2xpY2sgJiYgIXRoaXMuaXNEcm9wZG93bkNsaWNrKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0Ryb3Bkb3duQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICByZXR1cm4gKHRhcmdldCA9PT0gdGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50IHx8IHRhcmdldC5wYXJlbnROb2RlID09PSB0aGlzLmRyb3Bkb3duQnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuY29udGFpbmVyRUwubmF0aXZlRWxlbWVudCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUhpZGUoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9yY2VTZWxlY3Rpb25VcGRhdGVNb2RlbFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZvcmNlU2VsZWN0aW9uVXBkYXRlTW9kZWxUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuZm9yY2VTZWxlY3Rpb25VcGRhdGVNb2RlbFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLm92ZXJsYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXN0b3JlT3ZlcmxheUFwcGVuZCgpO1xuICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxJbnB1dFRleHRNb2R1bGUsQnV0dG9uTW9kdWxlLFNoYXJlZE1vZHVsZSxSaXBwbGVNb2R1bGUsU2Nyb2xsaW5nTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQXV0b0NvbXBsZXRlLFNoYXJlZE1vZHVsZSxTY3JvbGxpbmdNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0F1dG9Db21wbGV0ZV1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/autocomplete/primeng-autocomplete.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/autocomplete/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/autocomplete/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1hdXRvY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL3ByaW1lbmctYXV0b2NvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/autocomplete/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/autocomplete/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/autocomplete/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './autocomplete';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hdXRvY29tcGxldGUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvY29tcGxldGUnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/avatar/avatar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatar/avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatar/avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Avatar {
+    constructor() {
+        this.size = "normal";
+        this.shape = "square";
+    }
+    containerClass() {
+        return {
+            'p-avatar p-component': true,
+            'p-avatar-image': this.image != null,
+            'p-avatar-circle': this.shape === 'circle',
+            'p-avatar-lg': this.size === 'large',
+            'p-avatar-xl': this.size === 'xlarge'
+        };
+    }
+}
+Avatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Avatar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Avatar, selector: "p-avatar", inputs: { label: "label", icon: "icon", image: "image", size: "size", shape: "shape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, isInline: true, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatar', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+export class AvatarModule {
+}
+AvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, declarations: [Avatar], imports: [CommonModule], exports: [Avatar] });
+AvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Avatar],
+                    declarations: [Avatar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBbUIvQyxNQUFNLE9BQU8sTUFBTTtJQWpCbkI7UUF5QmEsU0FBSSxHQUFXLFFBQVEsQ0FBQztRQUV4QixVQUFLLEdBQVcsUUFBUSxDQUFDO0tBZXJDO0lBVEcsY0FBYztRQUNWLE9BQU87WUFDSCxzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNwQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7WUFDMUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTztZQUNwQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO1NBQ3hDLENBQUM7SUFDTixDQUFDOzttR0F4QlEsTUFBTTt1RkFBTixNQUFNLHlOQWZMOzs7Ozs7O0tBT1Q7MkZBUVEsTUFBTTtrQkFqQmxCLFNBQVM7K0JBQ0ksVUFBVSxZQUNWOzs7Ozs7O0tBT1QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCOzhCQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7O0FBa0JWLE1BQU0sT0FBTyxZQUFZOzt5R0FBWixZQUFZOzBHQUFaLFlBQVksaUJBaENaLE1BQU0sYUE0QkwsWUFBWSxhQTVCYixNQUFNOzBHQWdDTixZQUFZLFlBSlosQ0FBQyxZQUFZLENBQUM7MkZBSWQsWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztvQkFDakIsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1hdmF0YXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1hdmF0YXItdGV4dFwiICpuZ0lmPVwibGFiZWw7IGVsc2UgaWNvblRlbXBsYXRlXCI+e3tsYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGU+PHNwYW4gW2NsYXNzXT1cImljb25cIiBbbmdDbGFzc109XCIncC1hdmF0YXItaWNvbidcIiAqbmdJZj1cImljb247IGVsc2UgaW1hZ2VUZW1wbGF0ZVwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVRlbXBsYXRlPjxpbWcgW3NyY109XCJpbWFnZVwiICpuZ0lmPVwiaW1hZ2VcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhciB7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW1hZ2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNpemU6IHN0cmluZyA9IFwibm9ybWFsXCI7XG5cbiAgICBASW5wdXQoKSBzaGFwZTogc3RyaW5nID0gXCJzcXVhcmVcIjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLWF2YXRhciBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1hdmF0YXItaW1hZ2UnOiB0aGlzLmltYWdlICE9IG51bGwsXG4gICAgICAgICAgICAncC1hdmF0YXItY2lyY2xlJzogdGhpcy5zaGFwZSA9PT0gJ2NpcmNsZScsXG4gICAgICAgICAgICAncC1hdmF0YXItbGcnOiB0aGlzLnNpemUgPT09ICdsYXJnZScsXG4gICAgICAgICAgICAncC1hdmF0YXIteGwnOiB0aGlzLnNpemUgPT09ICd4bGFyZ2UnXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtBdmF0YXJdLFxuICAgIGRlY2xhcmF0aW9uczogW0F2YXRhcl1cbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/avatar/primeng-avatar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatar/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatar/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1hdmF0YXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXZhdGFyL3ByaW1lbmctYXZhdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/avatar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './avatar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hdmF0YXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXZhdGFyJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/avatargroup/avatargroup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatargroup/avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatargroup/avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,40 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class AvatarGroup {
+}
+AvatarGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
+AvatarGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AvatarGroup, selector: "p-avatarGroup", inputs: { styleClass: "styleClass", style: "style" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatarGroup', template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }] } });
+export class AvatarGroupModule {
+}
+AvatarGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, declarations: [AvatarGroup], imports: [CommonModule], exports: [AvatarGroup] });
+AvatarGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [AvatarGroup],
+                    declarations: [AvatarGroup]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYXZhdGFyZ3JvdXAvYXZhdGFyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBZ0IvQyxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzs0RkFBWCxXQUFXLGtKQVpWOzs7O0tBSVQ7MkZBUVEsV0FBVztrQkFkdkIsU0FBUzsrQkFDSSxlQUFlLFlBQ2Y7Ozs7S0FJVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7OEJBSVEsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7O0FBUVYsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQVpqQixXQUFXLGFBUVYsWUFBWSxhQVJiLFdBQVc7K0dBWVgsaUJBQWlCLFlBSmpCLENBQUMsWUFBWSxDQUFDOzJGQUlkLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1hdmF0YXJHcm91cCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCIncC1hdmF0YXItZ3JvdXAgcC1jb21wb25lbnQnXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyZ3JvdXAuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyR3JvdXAge1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQXZhdGFyR3JvdXBdLFxuICAgIGRlY2xhcmF0aW9uczogW0F2YXRhckdyb3VwXVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJHcm91cE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/avatargroup/primeng-avatargroup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatargroup/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatargroup/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1hdmF0YXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hdmF0YXJncm91cC9wcmltZW5nLWF2YXRhcmdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/avatargroup/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/avatargroup/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/avatargroup/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './avatargroup';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hdmF0YXJncm91cC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdmF0YXJncm91cCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/badge/badge.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/badge/badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/badge/badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,135 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Directive } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { UniqueComponentId } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class BadgeDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+    }
+    ngAfterViewInit() {
+        this.id = UniqueComponentId() + '_badge';
+        let el = this.el.nativeElement.nodeName.indexOf("-") != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;
+        let badge = document.createElement('span');
+        badge.id = this.id;
+        badge.className = 'p-badge p-component';
+        if (this.severity) {
+            DomHandler.addClass(badge, 'p-badge-' + this.severity);
+        }
+        if (this.value != null) {
+            badge.appendChild(document.createTextNode(this.value));
+            if (String(this.value).length === 1) {
+                DomHandler.addClass(badge, 'p-badge-no-gutter');
+            }
+        }
+        else {
+            DomHandler.addClass(badge, 'p-badge-dot');
+        }
+        DomHandler.addClass(el, 'p-overlay-badge');
+        el.appendChild(badge);
+        this.initialized = true;
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        if (val !== this._value) {
+            this._value = val;
+            if (this.initialized) {
+                let badge = document.getElementById(this.id);
+                if (this._value) {
+                    if (DomHandler.hasClass(badge, 'p-badge-dot'))
+                        DomHandler.removeClass(badge, 'p-badge-dot');
+                    if (String(this._value).length === 1) {
+                        DomHandler.addClass(badge, 'p-badge-no-gutter');
+                    }
+                    else {
+                        DomHandler.removeClass(badge, 'p-badge-no-gutter');
+                    }
+                }
+                else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {
+                    DomHandler.addClass(badge, 'p-badge-dot');
+                }
+                badge.innerHTML = '';
+                badge.appendChild(document.createTextNode(this._value));
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+BadgeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: BadgeDirective, selector: "[pBadge]", inputs: { iconPos: "iconPos", value: "value", severity: "severity" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pBadge]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }] } });
+export class Badge {
+    containerClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,
+            'p-badge-lg': this.size === 'large',
+            'p-badge-xl': this.size === 'xlarge',
+            'p-badge-info': this.severity === 'info',
+            'p-badge-success': this.severity === 'success',
+            'p-badge-warning': this.severity === 'warning',
+            'p-badge-danger': this.severity === 'danger'
+        };
+    }
+}
+Badge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Badge.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Badge, selector: "p-badge", inputs: { styleClass: "styleClass", style: "style", size: "size", severity: "severity", value: "value" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, isInline: true, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-badge', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+export class BadgeModule {
+}
+BadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, declarations: [Badge, BadgeDirective], imports: [CommonModule], exports: [Badge, BadgeDirective, SharedModule] });
+BadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Badge, BadgeDirective, SharedModule],
+                    declarations: [Badge, BadgeDirective]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUEyQyxTQUFTLEVBQXdDLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRbEQsTUFBTSxPQUFPLGNBQWM7SUFVdkIsWUFBbUIsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFSeEIsWUFBTyxHQUF3QyxNQUFNLENBQUM7SUFRM0IsQ0FBQztJQUVyQyxlQUFlO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLFFBQVEsQ0FBQztRQUN6QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRXRILElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFFO1FBQ3BCLEtBQUssQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUM7UUFFeEMsSUFBSSxJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBRdWVyeUxpc3QsIENvbnRlbnRDaGlsZHJlbiwgVGVtcGxhdGVSZWYsIERpcmVjdGl2ZSwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFVuaXF1ZUNvbXBvbmVudElkIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BCYWRnZV0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGljb25Qb3M6ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nID0gJ2xlZnQnO1xuXG4gICAgcHVibGljIF92YWx1ZTogc3RyaW5nO1xuXG4gICAgcHVibGljIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmlkID0gVW5pcXVlQ29tcG9uZW50SWQoKSArICdfYmFkZ2UnO1xuICAgICAgICBsZXQgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUuaW5kZXhPZihcIi1cIikgIT0gLTEgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCA6IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBsZXQgYmFkZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIGJhZGdlLmlkID0gdGhpcy5pZCA7XG4gICAgICAgIGJhZGdlLmNsYXNzTmFtZSA9ICdwLWJhZGdlIHAtY29tcG9uZW50JztcblxuICAgICAgICBpZiAodGhpcy5zZXZlcml0eSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhiYWRnZSwgJ3AtYmFkZ2UtJyArIHRoaXMuc2V2ZXJpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgYmFkZ2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy52YWx1ZSkpO1xuXG4gICAgICAgICAgICBpZiAoU3RyaW5nKHRoaXMudmFsdWUpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3MoYmFkZ2UsICdwLWJhZGdlLW5vLWd1dHRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhiYWRnZSwgJ3AtYmFkZ2UtZG90Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGVsLCAncC1vdmVybGF5LWJhZGdlJyk7XG4gICAgICAgIGVsLmFwcGVuZENoaWxkKGJhZGdlKTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGJhZGdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MoYmFkZ2UsICdwLWJhZGdlLWRvdCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhiYWRnZSwgJ3AtYmFkZ2UtZG90Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFN0cmluZyh0aGlzLl92YWx1ZSkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGJhZGdlLCAncC1iYWRnZS1uby1ndXR0ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoYmFkZ2UsICdwLWJhZGdlLW5vLWd1dHRlcicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl92YWx1ZSAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhiYWRnZSwgJ3AtYmFkZ2UtZG90JykpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhiYWRnZSwgJ3AtYmFkZ2UtZG90Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYmFkZ2UuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgYmFkZ2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fdmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldmVyaXR5OiBzdHJpbmc7XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWJhZGdlJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICAgICAgICAgIHt7dmFsdWV9fVxuICAgICAgICA8L3NwYW4+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2JhZGdlLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlIHtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzaXplOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZXZlcml0eTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtYmFkZ2UgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtYmFkZ2Utbm8tZ3V0dGVyJzogdGhpcy52YWx1ZSAhPSB1bmRlZmluZWQgJiYgU3RyaW5nKHRoaXMudmFsdWUpLmxlbmd0aCA9PT0gMSxcbiAgICAgICAgICAgICdwLWJhZGdlLWxnJzogdGhpcy5zaXplID09PSAnbGFyZ2UnLFxuICAgICAgICAgICAgJ3AtYmFkZ2UteGwnOiB0aGlzLnNpemUgPT09ICd4bGFyZ2UnLFxuICAgICAgICAgICAgJ3AtYmFkZ2UtaW5mbyc6IHRoaXMuc2V2ZXJpdHkgPT09ICdpbmZvJyxcbiAgICAgICAgICAgICdwLWJhZGdlLXN1Y2Nlc3MnOiB0aGlzLnNldmVyaXR5ID09PSAnc3VjY2VzcycsXG4gICAgICAgICAgICAncC1iYWRnZS13YXJuaW5nJzogdGhpcy5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAgICAgJ3AtYmFkZ2UtZGFuZ2VyJzogdGhpcy5zZXZlcml0eSA9PT0gJ2RhbmdlcidcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0JhZGdlLCBCYWRnZURpcmVjdGl2ZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtCYWRnZSwgQmFkZ2VEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/badge/primeng-badge.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/badge/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/badge/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1iYWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9iYWRnZS9wcmltZW5nLWJhZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/badge/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/badge/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/badge/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './badge';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9iYWRnZS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYWRnZSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/blockui/blockui.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/blockui/blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/blockui/blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import { NgModule, Component, Input, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+export class BlockUI {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    get blocked() {
+        return this._blocked;
+    }
+    set blocked(val) {
+        if (this.mask && this.mask.nativeElement) {
+            if (val)
+                this.block();
+            else
+                this.unblock();
+        }
+        else {
+            this._blocked = val;
+        }
+    }
+    ngAfterViewInit() {
+        if (this.target && !this.target.getBlockableElement) {
+            throw 'Target of BlockUI must implement BlockableUI interface';
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    block() {
+        this._blocked = true;
+        if (this.target) {
+            this.target.getBlockableElement().appendChild(this.mask.nativeElement);
+            this.target.getBlockableElement().style.position = 'relative';
+        }
+        else {
+            document.body.appendChild(this.mask.nativeElement);
+        }
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex + this.config.zIndex.modal);
+        }
+    }
+    unblock() {
+        this.animationEndListener = this.destroyModal.bind(this);
+        this.mask.nativeElement.addEventListener('animationend', this.animationEndListener);
+        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+    }
+    destroyModal() {
+        this._blocked = false;
+        DomHandler.removeClass(this.mask.nativeElement, 'p-component-overlay-leave');
+        ZIndexUtils.clear(this.mask.nativeElement);
+        this.el.nativeElement.appendChild(this.mask.nativeElement);
+        this.unbindAnimationEndListener();
+        this.cd.markForCheck();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.nativeElement.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unblock();
+        this.destroyModal();
+    }
+}
+BlockUI.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+BlockUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: BlockUI, selector: "p-blockUI", inputs: { target: "target", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", styleClass: "styleClass", blocked: "blocked" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-blockUI', template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { target: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], blocked: [{
+                type: Input
+            }] } });
+export class BlockUIModule {
+}
+BlockUIModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BlockUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, declarations: [BlockUI], imports: [CommonModule], exports: [BlockUI] });
+BlockUIModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [BlockUI],
+                    declarations: [BlockUI]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2t1aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ibG9ja3VpL2Jsb2NrdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFvQyxTQUFTLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQXFCLGVBQWUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDM00sT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBZ0IsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQWlCekMsTUFBTSxPQUFPLE9BQU87SUFvQmhCLFlBQW1CLEVBQWMsRUFBUyxFQUFxQixFQUFTLE1BQXFCO1FBQTFFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWU7UUFoQnBGLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFFM0IsZUFBVSxHQUFXLENBQUMsQ0FBQztJQWNnRSxDQUFDO0lBRWpHLElBQWEsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RDLElBQUksR0FBRztnQkFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7O2dCQUViLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QjthQUNJO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lB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QyxhQUFhLDJIQXZCcEI7Ozs7O0tBS1Q7MkZBUVEsT0FBTztrQkFmbkIsU0FBUzsrQkFDSSxXQUFXLFlBQ1g7Ozs7O0tBS1QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCOzZKQUlRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhO2dCQUVYLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTtnQkFVSixPQUFPO3NCQUFuQixLQUFLOztBQXFGVixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQTNHYixPQUFPLGFBdUdOLFlBQVksYUF2R2IsT0FBTzsyR0EyR1AsYUFBYSxZQUpiLENBQUMsWUFBWSxDQUFDOzJGQUlkLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxJbnB1dCxBZnRlclZpZXdJbml0LE9uRGVzdHJveSxFbGVtZW50UmVmLFZpZXdDaGlsZCxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1ByaW1lTkdDb25maWcsIFByaW1lVGVtcGxhdGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7WkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWJsb2NrVUknLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI21hc2sgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdDbGFzc109XCJ7J3AtYmxvY2t1aS1kb2N1bWVudCc6IXRhcmdldCwgJ3AtYmxvY2t1aSBwLWNvbXBvbmVudC1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXktZW50ZXInOiB0cnVlfVwiIFtuZ1N0eWxlXT1cIntkaXNwbGF5OiBibG9ja2VkID8gJ2ZsZXgnIDogJ25vbmUnfVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmxvY2t1aS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja1VJIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCxPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgdGFyZ2V0OiBhbnk7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdtYXNrJykgbWFzazogRWxlbWVudFJlZjtcblxuICAgIF9ibG9ja2VkOiBib29sZWFuO1xuXG4gICAgYW5pbWF0aW9uRW5kTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZykge31cblxuICAgIEBJbnB1dCgpIGdldCBibG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmxvY2tlZDtcbiAgICB9XG5cbiAgICBzZXQgYmxvY2tlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMubWFzayAmJiB0aGlzLm1hc2submF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHZhbClcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrKCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy51bmJsb2NrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9ibG9ja2VkID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQgJiYgIXRoaXMudGFyZ2V0LmdldEJsb2NrYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93ICdUYXJnZXQgb2YgQmxvY2tVSSBtdXN0IGltcGxlbWVudCBCbG9ja2FibGVVSSBpbnRlcmZhY2UnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBibG9jaygpIHtcbiAgICAgICAgdGhpcy5fYmxvY2tlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5nZXRCbG9ja2FibGVFbGVtZW50KCkuYXBwZW5kQ2hpbGQodGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZ2V0QmxvY2thYmxlRWxlbWVudCgpLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtb2RhbCcsIHRoaXMubWFzay5uYXRpdmVFbGVtZW50LCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgubW9kYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5ibG9jaygpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpb25FbmRMaXN0ZW5lciA9IHRoaXMuZGVzdHJveU1vZGFsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMubWFzay5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kTGlzdGVuZXIpO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMubWFzay5uYXRpdmVFbGVtZW50LCAncC1jb21wb25lbnQtb3ZlcmxheS1sZWF2ZScpXG4gICAgfVxuXG4gICAgZGVzdHJveU1vZGFsKCkge1xuICAgICAgICB0aGlzLl9ibG9ja2VkID0gZmFsc2U7XG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMubWFzay5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMubWFzay5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy51bmJpbmRBbmltYXRpb25FbmRMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHVuYmluZEFuaW1hdGlvbkVuZExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5hbmltYXRpb25FbmRMaXN0ZW5lciAmJiB0aGlzLm1hc2spIHtcbiAgICAgICAgICAgIHRoaXMubWFzay5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJsb2NrKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vZGFsKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtCbG9ja1VJXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtCbG9ja1VJXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja1VJTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/blockui/primeng-blockui.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/blockui/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/blockui/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1ibG9ja3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Jsb2NrdWkvcHJpbWVuZy1ibG9ja3VpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/blockui/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/blockui/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/blockui/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './blockui';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ibG9ja3VpL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jsb2NrdWknOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/breadcrumb/breadcrumb.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/breadcrumb/breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/breadcrumb/breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,165 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "@angular/router";
+export class Breadcrumb {
+    constructor() {
+        this.onItemClick = new EventEmitter();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.onItemClick.emit({
+            originalEvent: event,
+            item: item
+        });
+    }
+    onHomeClick(event) {
+        if (this.home) {
+            this.itemClick(event, this.home);
+        }
+    }
+}
+Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Breadcrumb, selector: "p-breadcrumb", inputs: { model: "model", style: "style", styleClass: "styleClass", home: "home", homeAriaLabel: "homeAriaLabel" }, outputs: { onItemClick: "onItemClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-breadcrumb', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], home: [{
+                type: Input
+            }], homeAriaLabel: [{
+                type: Input
+            }], onItemClick: [{
+                type: Output
+            }] } });
+export class BreadcrumbModule {
+}
+BreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, declarations: [Breadcrumb], imports: [CommonModule, RouterModule, TooltipModule], exports: [Breadcrumb, RouterModule, TooltipModule] });
+BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Breadcrumb, RouterModule, TooltipModule],
+                    declarations: [Breadcrumb]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBMkQ5QyxNQUFNLE9BQU8sVUFBVTtJQXpEdkI7UUFxRWMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQThCakU7SUE1QkcsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFjO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQixhQUFhLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNiLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7O3VHQXpDUSxVQUFVOzJGQUFWLFVBQVUsd1BBdkRUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQStDVDsyRkFRUSxVQUFVO2tCQXpEdEIsU0FBUzsrQkFDSSxjQUFjLFlBQ2Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBK0NULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjs4QkFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTs7QUFxQ1gsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQWpEaEIsVUFBVSxhQTZDVCxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsYUE3Q3hDLFVBQVUsRUE4Q0UsWUFBWSxFQUFDLGFBQWE7OEdBR3RDLGdCQUFnQixZQUpoQixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDLEVBQzdCLFlBQVksRUFBQyxhQUFhOzJGQUd0QyxnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUNoRCxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWVudUl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtYnJlYWRjcnVtYicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwiJ3AtYnJlYWRjcnVtYiBwLWNvbXBvbmVudCdcIj5cbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzXT1cImhvbWUuc3R5bGVDbGFzc1wiIFtuZ0NsYXNzXT1cInsncC1icmVhZGNydW1iLWhvbWUnOiB0cnVlLCAncC1kaXNhYmxlZCc6aG9tZS5kaXNhYmxlZH1cIiBbbmdTdHlsZV09XCJob21lLnN0eWxlXCIgKm5nSWY9XCJob21lXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cImhvbWUudG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhaG9tZS5yb3V0ZXJMaW5rXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJob21lQXJpYUxhYmVsXCIgW2hyZWZdPVwiaG9tZS51cmwgPyBob21lLnVybCA6IG51bGxcIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LCBob21lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaG9tZS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJob21lLnRpdGxlXCIgW2F0dHIuaWRdPVwiaG9tZS5pZFwiIFthdHRyLnRhYmluZGV4XT1cImhvbWUuZGlzYWJsZWQgPyBudWxsIDogJzAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhvbWUuaWNvblwiIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiaG9tZS5pY29ufHwncGkgcGktaG9tZSdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaG9tZS5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaG9tZS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxIb21lTGFiZWxcIiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiPnt7aG9tZS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbEhvbWVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaG9tZS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJob21lLnJvdXRlckxpbmtcIiBbcm91dGVyTGlua109XCJob21lLnJvdXRlckxpbmtcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImhvbWVBcmlhTGFiZWxcIiBbcXVlcnlQYXJhbXNdPVwiaG9tZS5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJob21lLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIiAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudCwgaG9tZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cImhvbWUudGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiaG9tZS50aXRsZVwiIFthdHRyLmlkXT1cImhvbWUuaWRcIiBbYXR0ci50YWJpbmRleF09XCJob21lLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaG9tZS5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImhvbWUucXVlcnlQYXJhbXNIYW5kbGluZ1wiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cImhvbWUucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaG9tZS5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJob21lLnJlcGxhY2VVcmxcIiBbc3RhdGVdPVwiaG9tZS5zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJob21lLmljb25cIiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cImhvbWUuaWNvbnx8J3BpIHBpLWhvbWUnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhvbWUubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhvbWUuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sSG9tZVJvdXRlTGFiZWxcIiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiPnt7aG9tZS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbEhvbWVSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJob21lLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1icmVhZGNydW1iLWNoZXZyb24gcGkgcGktY2hldnJvbi1yaWdodFwiICpuZ0lmPVwibW9kZWwmJmhvbWVcIj48L2xpPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBsZXQtZW5kPVwibGFzdFwiIFtuZ0Zvck9mXT1cIm1vZGVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwiaXRlbS5zdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwiaXRlbS5zdHlsZVwiIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIWl0ZW0ucm91dGVyTGlua1wiIFthdHRyLmhyZWZdPVwiaXRlbS51cmwgPyBpdGVtLnVybCA6IG51bGxcIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiIHBUb29sdGlwIFt0b29sdGlwT3B0aW9uc109XCJpdGVtLnRvb2x0aXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIiBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiaXRlbS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiIGNsYXNzPVwicC1tZW51aXRlbS1saW5rXCIgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cIml0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZ1wiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cIml0ZW0ucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbS5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJpdGVtLnJlcGxhY2VVcmxcIiBbc3RhdGVdPVwiaXRlbS5zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtYnJlYWRjcnVtYi1jaGV2cm9uIHBpIHBpLWNoZXZyb24tcmlnaHRcIiAqbmdJZj1cIiFlbmRcIj48L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iIHtcblxuICAgIEBJbnB1dCgpIG1vZGVsOiBNZW51SXRlbVtdO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGhvbWU6IE1lbnVJdGVtO1xuXG4gICAgQElucHV0KCkgaG9tZUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGl0ZW1DbGljayhldmVudCwgaXRlbTogTWVudUl0ZW0pwqB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLnVybCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSG9tZUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmhvbWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrKGV2ZW50LCB0aGlzLmhvbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUm91dGVyTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtCcmVhZGNydW1iLFJvdXRlck1vZHVsZSxUb29sdGlwTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtCcmVhZGNydW1iXVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/breadcrumb/primeng-breadcrumb.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/breadcrumb/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/breadcrumb/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1icmVhZGNydW1iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JyZWFkY3J1bWIvcHJpbWVuZy1icmVhZGNydW1iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/breadcrumb/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/breadcrumb/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/breadcrumb/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './breadcrumb';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9icmVhZGNydW1iL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/button/button.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/button/button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/button/button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,275 @@
+import { NgModule, Directive, Component, EventEmitter, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/ripple";
+import * as i2 from "@angular/common";
+export class ButtonDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this._loading = false;
+    }
+    ngAfterViewInit() {
+        this._initialStyleClass = this.el.nativeElement.className;
+        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());
+        if (this.icon || this.loading) {
+            this.createIconEl();
+        }
+        let labelElement = document.createElement("span");
+        if (this.icon && !this.label) {
+            labelElement.setAttribute('aria-hidden', 'true');
+        }
+        labelElement.className = 'p-button-label';
+        if (this.label)
+            labelElement.appendChild(document.createTextNode(this.label));
+        else
+            labelElement.innerHTML = '&nbsp;';
+        this.el.nativeElement.appendChild(labelElement);
+        this.initialized = true;
+    }
+    getStyleClass() {
+        let styleClass = 'p-button p-component';
+        if (this.icon && !this.label) {
+            styleClass = styleClass + ' p-button-icon-only';
+        }
+        if (this.loading) {
+            styleClass = styleClass + ' p-disabled p-button-loading';
+            if (!this.icon && this.label)
+                styleClass = styleClass + ' p-button-loading-label-only';
+        }
+        return styleClass;
+    }
+    setStyleClass() {
+        let styleClass = this.getStyleClass();
+        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;
+    }
+    createIconEl() {
+        let iconElement = document.createElement("span");
+        iconElement.className = 'p-button-icon';
+        iconElement.setAttribute("aria-hidden", "true");
+        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;
+        if (iconPosClass) {
+            DomHandler.addClass(iconElement, iconPosClass);
+        }
+        let iconClass = this.getIconClass();
+        if (iconClass) {
+            DomHandler.addMultipleClasses(iconElement, iconClass);
+        }
+        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');
+        if (labelEl)
+            this.el.nativeElement.insertBefore(iconElement, labelEl);
+        else
+            this.el.nativeElement.appendChild(iconElement);
+    }
+    getIconClass() {
+        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;
+    }
+    setIconClass() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        if (iconElement) {
+            if (this.iconPos)
+                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();
+            else
+                iconElement.className = 'p-button-icon ' + this.getIconClass();
+        }
+        else {
+            this.createIconEl();
+        }
+    }
+    removeIconElement() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        this.el.nativeElement.removeChild(iconElement);
+    }
+    get label() {
+        return this._label;
+    }
+    set label(val) {
+        this._label = val;
+        if (this.initialized) {
+            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';
+            if (this.loading || this.icon) {
+                this.setIconClass();
+            }
+            this.setStyleClass();
+        }
+    }
+    get icon() {
+        return this._icon;
+    }
+    set icon(val) {
+        this._icon = val;
+        if (this.initialized) {
+            this.setIconClass();
+            this.setStyleClass();
+        }
+    }
+    get loading() {
+        return this._loading;
+    }
+    set loading(val) {
+        this._loading = val;
+        if (this.initialized) {
+            if (this.loading || this.icon)
+                this.setIconClass();
+            else
+                this.removeIconElement();
+            this.setStyleClass();
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+ButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ButtonDirective, selector: "[pButton]", inputs: { iconPos: "iconPos", loadingIcon: "loadingIcon", label: "label", icon: "icon", loading: "loading" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pButton]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }] } });
+export class Button {
+    constructor() {
+        this.type = "button";
+        this.iconPos = 'left';
+        this.loading = false;
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    badgeStyleClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.badge && String(this.badge).length === 1
+        };
+    }
+}
+Button.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Button.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Button, selector: "p-button", inputs: { type: "type", iconPos: "iconPos", icon: "icon", badge: "badge", label: "label", disabled: "disabled", loading: "loading", loadingIcon: "loadingIcon", style: "style", styleClass: "styleClass", badgeClass: "badgeClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-button',
+                    template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { type: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], badge: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], badgeClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }] } });
+export class ButtonModule {
+}
+ButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });
+ButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ButtonDirective, Button],
+                    declarations: [ButtonDirective, Button]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2J1dHRvbi9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFZLFlBQVksRUFBZSxNQUFNLEVBQVcsS0FBSyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBMkMsTUFBTSxlQUFlLENBQUM7QUFDOU4sT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7QUFRMUMsTUFBTSxPQUFPLGVBQWU7SUFnQnhCLFlBQW1CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBZHhCLFlBQU8sR0FBd0MsTUFBTSxDQUFDO1FBRXRELGdCQUFXLEdBQVcsdUJBQXVCLENBQUM7UUFNaEQsYUFBUSxHQUFZLEtBQUssQ0FBQztJQU1HLENBQUM7SUFFckMsZUFBZTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDMUQsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsSUFB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QkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSTBCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTtnQkFFcEIsT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTs7QUE2QlgsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxpQkF6UFosZUFBZSxFQTRMZixNQUFNLGFBeURMLFlBQVksRUFBQyxZQUFZLGFBclAxQixlQUFlLEVBNExmLE1BQU07MEdBNkROLFlBQVksWUFKWixDQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7MkZBSTNCLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFDLE1BQU0sQ0FBQztvQkFDakMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFDLE1BQU0sQ0FBQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLERpcmVjdGl2ZSxDb21wb25lbnQsRWxlbWVudFJlZixFdmVudEVtaXR0ZXIsQWZ0ZXJWaWV3SW5pdCxPdXRwdXQsT25EZXN0cm95LElucHV0LENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ29udGVudENoaWxkcmVuLCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BCdXR0b25dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaWNvblBvczogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScgPSAnbGVmdCc7XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nSWNvbjogc3RyaW5nID0gXCJwaSBwaS1zcGlubmVyIHBpLXNwaW5cIjtcblxuICAgIHB1YmxpYyBfbGFiZWw6IHN0cmluZztcblxuICAgIHB1YmxpYyBfaWNvbjogc3RyaW5nO1xuXG4gICAgcHVibGljIF9sb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgX2luaXRpYWxTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxTdHlsZUNsYXNzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZTtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRNdWx0aXBsZUNsYXNzZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmdldFN0eWxlQ2xhc3MoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaWNvbiB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSWNvbkVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgIGlmICh0aGlzLmljb24gJiYgIXRoaXMubGFiZWwpIHtcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBsYWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gJ3AtYnV0dG9uLWxhYmVsJztcblxuICAgICAgICBpZiAodGhpcy5sYWJlbClcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLmxhYmVsKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudC5pbm5lckhUTUwgPSAnJm5ic3A7JztcblxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZ2V0U3R5bGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBsZXQgc3R5bGVDbGFzcyA9ICdwLWJ1dHRvbiBwLWNvbXBvbmVudCc7XG4gICAgICAgIGlmICh0aGlzLmljb24gJiYgIXRoaXMubGFiZWwpIHtcbiAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSBzdHlsZUNsYXNzICsgJyBwLWJ1dHRvbi1pY29uLW9ubHknO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHN0eWxlQ2xhc3MgKyAnIHAtZGlzYWJsZWQgcC1idXR0b24tbG9hZGluZyc7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaWNvbiAmJiB0aGlzLmxhYmVsKVxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3MgPSBzdHlsZUNsYXNzICsgJyBwLWJ1dHRvbi1sb2FkaW5nLWxhYmVsLW9ubHknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XG4gICAgfVxuXG4gICAgc2V0U3R5bGVDbGFzcygpIHtcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB0aGlzLmdldFN0eWxlQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9IHN0eWxlQ2xhc3MgKyAnICcgKyB0aGlzLl9pbml0aWFsU3R5bGVDbGFzcztcbiAgICB9XG5cbiAgICBjcmVhdGVJY29uRWwoKSB7XG4gICAgICAgIGxldCBpY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICBpY29uRWxlbWVudC5jbGFzc05hbWUgPSAncC1idXR0b24taWNvbic7XG4gICAgICAgIGljb25FbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgbGV0IGljb25Qb3NDbGFzcyA9IHRoaXMubGFiZWwgPyAncC1idXR0b24taWNvbi0nICsgdGhpcy5pY29uUG9zIDogbnVsbDtcblxuICAgICAgICBpZiAoaWNvblBvc0NsYXNzKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGljb25FbGVtZW50LCBpY29uUG9zQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGljb25DbGFzcyA9IHRoaXMuZ2V0SWNvbkNsYXNzKCk7XG5cbiAgICAgICAgaWYoaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZE11bHRpcGxlQ2xhc3NlcyhpY29uRWxlbWVudCwgaWNvbkNsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYWJlbEVsID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJy5wLWJ1dHRvbi1sYWJlbCcpXG5cbiAgICAgICAgaWYgKGxhYmVsRWwpXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGljb25FbGVtZW50LCBsYWJlbEVsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGljb25FbGVtZW50KVxuICAgIH1cblxuICAgIGdldEljb25DbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZyA/ICdwLWJ1dHRvbi1sb2FkaW5nLWljb24gJyArIHRoaXMubG9hZGluZ0ljb24gOiB0aGlzLl9pY29uO1xuICAgIH1cblxuICAgIHNldEljb25DbGFzcygpIHtcbiAgICAgICAgbGV0IGljb25FbGVtZW50ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJy5wLWJ1dHRvbi1pY29uJyk7XG4gICAgICAgIGlmIChpY29uRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaWNvblBvcylcbiAgICAgICAgICAgICAgICBpY29uRWxlbWVudC5jbGFzc05hbWUgPSAncC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLScgKyB0aGlzLmljb25Qb3MgKyAnICcgKyB0aGlzLmdldEljb25DbGFzcygpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGljb25FbGVtZW50LmNsYXNzTmFtZSA9ICdwLWJ1dHRvbi1pY29uICcgKyB0aGlzLmdldEljb25DbGFzcygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVJY29uRWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUljb25FbGVtZW50KCkge1xuICAgICAgICBsZXQgaWNvbkVsZW1lbnQgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnLnAtYnV0dG9uLWljb24nKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKGljb25FbGVtZW50KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICAgIH1cblxuICAgIHNldCBsYWJlbCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbDtcblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJy5wLWJ1dHRvbi1sYWJlbCcpLnRleHRDb250ZW50ID0gdGhpcy5fbGFiZWwgfHwgJyZuYnNwOyc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgdGhpcy5pY29uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJY29uQ2xhc3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3R5bGVDbGFzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGljb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ljb247XG4gICAgfVxuXG4gICAgc2V0IGljb24odmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faWNvbiA9IHZhbDtcblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJY29uQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3R5bGVDbGFzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICAgIH1cblxuICAgIHNldCBsb2FkaW5nKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gdmFsO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuaWNvbilcbiAgICAgICAgICAgICAgICB0aGlzLnNldEljb25DbGFzcygpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSWNvbkVsZW1lbnQoKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRTdHlsZUNsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWJ1dHRvbicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGJ1dHRvbiBbYXR0ci50eXBlXT1cInR5cGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWJ1dHRvbiBwLWNvbXBvbmVudCc6dHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwLWJ1dHRvbi1pY29uLW9ubHknOiAoaWNvbiAmJiAhbGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3AtYnV0dG9uLXZlcnRpY2FsJzogKGljb25Qb3MgPT09ICd0b3AnIHx8IGljb25Qb3MgPT09ICdib3R0b20nKSAmJiBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncC1idXR0b24tbG9hZGluZyc6IHRoaXMubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwLWJ1dHRvbi1sb2FkaW5nLWxhYmVsLW9ubHknOiB0aGlzLmxvYWRpbmcgJiYgIXRoaXMuaWNvbiAmJiB0aGlzLmxhYmVsfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljay5lbWl0KCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIuZW1pdCgkZXZlbnQpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsncC1idXR0b24taWNvbic6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAncC1idXR0b24taWNvbi1sZWZ0JzogaWNvblBvcyA9PT0gJ2xlZnQnICYmIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3AtYnV0dG9uLWljb24tcmlnaHQnOiBpY29uUG9zID09PSAncmlnaHQnICYmIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3AtYnV0dG9uLWljb24tdG9wJzogaWNvblBvcyA9PT0gJ3RvcCcgJiYgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAncC1idXR0b24taWNvbi1ib3R0b20nOiBpY29uUG9zID09PSAnYm90dG9tJyAmJiBsYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImxvYWRpbmcgPyAncC1idXR0b24tbG9hZGluZy1pY29uICcgKyBsb2FkaW5nSWNvbiA6IGljb25cIiAqbmdJZj1cIiFjb250ZW50VGVtcGxhdGUgJiYgKGljb258fGxvYWRpbmcpXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1idXR0b24tbGFiZWxcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJpY29uICYmICFsYWJlbFwiICpuZ0lmPVwiIWNvbnRlbnRUZW1wbGF0ZVwiPnt7bGFiZWx8fCcmbmJzcDsnfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJiYWRnZVN0eWxlQ2xhc3MoKVwiIFtjbGFzc109XCJiYWRnZUNsYXNzXCIgKm5nSWY9XCIhY29udGVudFRlbXBsYXRlICYmIGJhZGdlXCI+e3tiYWRnZX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSBcImJ1dHRvblwiO1xuXG4gICAgQElucHV0KCkgaWNvblBvczogc3RyaW5nID0gJ2xlZnQnO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYmFkZ2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmdJY29uOiBzdHJpbmcgPSBcInBpIHBpLXNwaW5uZXIgcGktc3BpblwiO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGJhZGdlQ2xhc3M6IHN0cmluZztcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBiYWRnZVN0eWxlQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1iYWRnZSBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1iYWRnZS1uby1ndXR0ZXInOiB0aGlzLmJhZGdlICYmIFN0cmluZyh0aGlzLmJhZGdlKS5sZW5ndGggPT09IDFcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0J1dHRvbkRpcmVjdGl2ZSxCdXR0b25dLFxuICAgIGRlY2xhcmF0aW9uczogW0J1dHRvbkRpcmVjdGl2ZSxCdXR0b25dXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/button/primeng-button.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/button/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/button/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYnV0dG9uL3ByaW1lbmctYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/button/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/button/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/button/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './button';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9idXR0b24vcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnV0dG9uJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/calendar/calendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/calendar/calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/calendar/calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2450 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { SharedModule, PrimeTemplate, TranslationKeys } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/button";
+import * as i4 from "primeng/ripple";
+export const CALENDAR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Calendar),
+    multi: true
+};
+export class Calendar {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.multipleSeparator = ',';
+        this.rangeSeparator = '-';
+        this.inline = false;
+        this.showOtherMonths = true;
+        this.icon = 'pi pi-calendar';
+        this.shortYearCutoff = '+10';
+        this.hourFormat = '24';
+        this.stepHour = 1;
+        this.stepMinute = 1;
+        this.stepSecond = 1;
+        this.showSeconds = false;
+        this.showOnFocus = true;
+        this.showWeek = false;
+        this.dataType = 'date';
+        this.selectionMode = 'single';
+        this.todayButtonStyleClass = 'p-button-text';
+        this.clearButtonStyleClass = 'p-button-text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.keepInvalid = false;
+        this.hideOnDateTimeSelect = true;
+        this.numberOfMonths = 1;
+        this.view = 'date';
+        this.timeSeparator = ":";
+        this.focusTrap = true;
+        this.firstDayOfWeek = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onTodayClick = new EventEmitter();
+        this.onClearClick = new EventEmitter();
+        this.onMonthChange = new EventEmitter();
+        this.onYearChange = new EventEmitter();
+        this.onClickOutside = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.inputFieldValue = null;
+        this.navigationState = null;
+        this.convertTo24Hour = function (hours, pm) {
+            if (this.hourFormat == '12') {
+                if (hours === 12) {
+                    return (pm ? 12 : 0);
+                }
+                else {
+                    return (pm ? hours + 12 : hours);
+                }
+            }
+            return hours;
+        };
+    }
+    set content(content) {
+        this.contentViewChild = content;
+        if (this.contentViewChild) {
+            if (this.isMonthNavigate) {
+                Promise.resolve(null).then(() => this.updateFocus());
+                this.isMonthNavigate = false;
+            }
+            else {
+                this.initFocusableCell();
+            }
+        }
+    }
+    ;
+    get defaultDate() {
+        return this._defaultDate;
+    }
+    ;
+    set defaultDate(defaultDate) {
+        this._defaultDate = defaultDate;
+        if (this.initialized) {
+            const date = defaultDate || new Date();
+            this.currentMonth = date.getMonth();
+            this.currentYear = date.getFullYear();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get minDate() {
+        return this._minDate;
+    }
+    set minDate(date) {
+        this._minDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get maxDate() {
+        return this._maxDate;
+    }
+    set maxDate(date) {
+        this._maxDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDates() {
+        return this._disabledDates;
+    }
+    set disabledDates(disabledDates) {
+        this._disabledDates = disabledDates;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDays() {
+        return this._disabledDays;
+    }
+    set disabledDays(disabledDays) {
+        this._disabledDays = disabledDays;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get yearRange() {
+        return this._yearRange;
+    }
+    set yearRange(yearRange) {
+        this._yearRange = yearRange;
+        if (yearRange) {
+            const years = yearRange.split(':');
+            const yearStart = parseInt(years[0]);
+            const yearEnd = parseInt(years[1]);
+            this.populateYearOptions(yearStart, yearEnd);
+        }
+    }
+    get showTime() {
+        return this._showTime;
+    }
+    set showTime(showTime) {
+        this._showTime = showTime;
+        if (this.currentHour === undefined) {
+            this.initTime(this.value || new Date());
+        }
+        this.updateInputfield();
+    }
+    get locale() {
+        return this._locale;
+    }
+    set locale(newLocale) {
+        console.warn("Locale property has no effect, use new i18n API instead.");
+    }
+    ngOnInit() {
+        const date = this.defaultDate || new Date();
+        this.currentMonth = date.getMonth();
+        this.currentYear = date.getFullYear();
+        if (this.view === 'date') {
+            this.createWeekDays();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+            this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);
+        }
+        else if (this.view === 'month') {
+            this.createMonthPickerValues();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.createWeekDays();
+        });
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'date':
+                    this.dateTemplate = item.template;
+                    break;
+                case 'disabledDate':
+                    this.disabledDateTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.dateTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    populateYearOptions(start, end) {
+        this.yearOptions = [];
+        for (let i = start; i <= end; i++) {
+            this.yearOptions.push(i);
+        }
+    }
+    createWeekDays() {
+        this.weekDays = [];
+        let dayIndex = this.firstDayOfWeek;
+        let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);
+        for (let i = 0; i < 7; i++) {
+            this.weekDays.push(dayLabels[dayIndex]);
+            dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;
+        }
+    }
+    createMonthPickerValues() {
+        this.monthPickerValues = [];
+        let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);
+        for (let i = 0; i <= 11; i++) {
+            this.monthPickerValues.push(monthLabels[i]);
+        }
+    }
+    createMonths(month, year) {
+        this.months = this.months = [];
+        for (let i = 0; i < this.numberOfMonths; i++) {
+            let m = month + i;
+            let y = year;
+            if (m > 11) {
+                m = m % 11 - 1;
+                y = year + 1;
+            }
+            this.months.push(this.createMonth(m, y));
+        }
+    }
+    getWeekNumber(date) {
+        let checkDate = new Date(date.getTime());
+        checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+        let time = checkDate.getTime();
+        checkDate.setMonth(0);
+        checkDate.setDate(1);
+        return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;
+    }
+    createMonth(month, year) {
+        let dates = [];
+        let firstDay = this.getFirstDayOfMonthIndex(month, year);
+        let daysLength = this.getDaysCountInMonth(month, year);
+        let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);
+        let dayNo = 1;
+        let today = new Date();
+        let weekNumbers = [];
+        let monthRows = Math.ceil((daysLength + firstDay) / 7);
+        for (let i = 0; i < monthRows; i++) {
+            let week = [];
+            if (i == 0) {
+                for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {
+                    let prev = this.getPreviousMonthAndYear(month, year);
+                    week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true,
+                        today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });
+                }
+                let remainingDaysLength = 7 - week.length;
+                for (let j = 0; j < remainingDaysLength; j++) {
+                    week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                        selectable: this.isSelectable(dayNo, month, year, false) });
+                    dayNo++;
+                }
+            }
+            else {
+                for (let j = 0; j < 7; j++) {
+                    if (dayNo > daysLength) {
+                        let next = this.getNextMonthAndYear(month, year);
+                        week.push({ day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,
+                            today: this.isToday(today, dayNo - daysLength, next.month, next.year),
+                            selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true) });
+                    }
+                    else {
+                        week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                            selectable: this.isSelectable(dayNo, month, year, false) });
+                    }
+                    dayNo++;
+                }
+            }
+            if (this.showWeek) {
+                weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));
+            }
+            dates.push(week);
+        }
+        return {
+            month: month,
+            year: year,
+            dates: dates,
+            weekNumbers: weekNumbers
+        };
+    }
+    initTime(date) {
+        this.pm = date.getHours() > 11;
+        if (this.showTime) {
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+            this.setCurrentHourPM(date.getHours());
+        }
+        else if (this.timeOnly) {
+            this.currentMinute = 0;
+            this.currentHour = 0;
+            this.currentSecond = 0;
+        }
+    }
+    navBackward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.decrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 0) {
+                this.currentMonth = 11;
+                this.decrementYear();
+            }
+            else {
+                this.currentMonth--;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    navForward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.incrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 11) {
+                this.currentMonth = 0;
+                this.incrementYear();
+            }
+            else {
+                this.currentMonth++;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    decrementYear() {
+        this.currentYear--;
+        if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);
+        }
+    }
+    incrementYear() {
+        this.currentYear++;
+        if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);
+        }
+    }
+    onDateSelect(event, dateMeta) {
+        if (this.disabled || !dateMeta.selectable) {
+            event.preventDefault();
+            return;
+        }
+        if (this.isMultipleSelection() && this.isSelected(dateMeta)) {
+            this.value = this.value.filter((date, i) => {
+                return !this.isDateEquals(date, dateMeta);
+            });
+            if (this.value.length === 0) {
+                this.value = null;
+            }
+            this.updateModel(this.value);
+        }
+        else {
+            if (this.shouldSelectDate(dateMeta)) {
+                this.selectDate(dateMeta);
+            }
+        }
+        if (this.isSingleSelection() && this.hideOnDateTimeSelect) {
+            setTimeout(() => {
+                event.preventDefault();
+                this.hideOverlay();
+                if (this.mask) {
+                    this.disableModality();
+                }
+                this.cd.markForCheck();
+            }, 150);
+        }
+        this.updateInputfield();
+        event.preventDefault();
+    }
+    shouldSelectDate(dateMeta) {
+        if (this.isMultipleSelection())
+            return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;
+        else
+            return true;
+    }
+    onMonthSelect(event, index) {
+        if (!DomHandler.hasClass(event.target, 'p-disabled')) {
+            this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });
+        }
+    }
+    updateInputfield() {
+        let formattedValue = '';
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                formattedValue = this.formatDateTime(this.value);
+            }
+            else if (this.isMultipleSelection()) {
+                for (let i = 0; i < this.value.length; i++) {
+                    let dateAsString = this.formatDateTime(this.value[i]);
+                    formattedValue += dateAsString;
+                    if (i !== (this.value.length - 1)) {
+                        formattedValue += this.multipleSeparator + ' ';
+                    }
+                }
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value && this.value.length) {
+                    let startDate = this.value[0];
+                    let endDate = this.value[1];
+                    formattedValue = this.formatDateTime(startDate);
+                    if (endDate) {
+                        formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);
+                    }
+                }
+            }
+        }
+        this.inputFieldValue = formattedValue;
+        this.updateFilledState();
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;
+        }
+    }
+    formatDateTime(date) {
+        let formattedValue = null;
+        if (date) {
+            if (this.timeOnly) {
+                formattedValue = this.formatTime(date);
+            }
+            else {
+                formattedValue = this.formatDate(date, this.getDateFormat());
+                if (this.showTime) {
+                    formattedValue += ' ' + this.formatTime(date);
+                }
+            }
+        }
+        return formattedValue;
+    }
+    setCurrentHourPM(hours) {
+        if (this.hourFormat == '12') {
+            this.pm = hours > 11;
+            if (hours >= 12) {
+                this.currentHour = (hours == 12) ? 12 : hours - 12;
+            }
+            else {
+                this.currentHour = (hours == 0) ? 12 : hours;
+            }
+        }
+        else {
+            this.currentHour = hours;
+        }
+    }
+    selectDate(dateMeta) {
+        let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+        if (this.showTime) {
+            if (this.hourFormat == '12') {
+                if (this.currentHour === 12)
+                    date.setHours(this.pm ? 12 : 0);
+                else
+                    date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+            }
+            else {
+                date.setHours(this.currentHour);
+            }
+            date.setMinutes(this.currentMinute);
+            date.setSeconds(this.currentSecond);
+        }
+        if (this.minDate && this.minDate > date) {
+            date = this.minDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.maxDate && this.maxDate < date) {
+            date = this.maxDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.isSingleSelection()) {
+            this.updateModel(date);
+        }
+        else if (this.isMultipleSelection()) {
+            this.updateModel(this.value ? [...this.value, date] : [date]);
+        }
+        else if (this.isRangeSelection()) {
+            if (this.value && this.value.length) {
+                let startDate = this.value[0];
+                let endDate = this.value[1];
+                if (!endDate && date.getTime() >= startDate.getTime()) {
+                    endDate = date;
+                }
+                else {
+                    startDate = date;
+                    endDate = null;
+                }
+                this.updateModel([startDate, endDate]);
+            }
+            else {
+                this.updateModel([date, null]);
+            }
+        }
+        this.onSelect.emit(date);
+    }
+    updateModel(value) {
+        this.value = value;
+        if (this.dataType == 'date') {
+            this.onModelChange(this.value);
+        }
+        else if (this.dataType == 'string') {
+            if (this.isSingleSelection()) {
+                this.onModelChange(this.formatDateTime(this.value));
+            }
+            else {
+                let stringArrValue = null;
+                if (this.value) {
+                    stringArrValue = this.value.map(date => this.formatDateTime(date));
+                }
+                this.onModelChange(stringArrValue);
+            }
+        }
+    }
+    getFirstDayOfMonthIndex(month, year) {
+        let day = new Date();
+        day.setDate(1);
+        day.setMonth(month);
+        day.setFullYear(year);
+        let dayIndex = day.getDay() + this.getSundayIndex();
+        return dayIndex >= 7 ? dayIndex - 7 : dayIndex;
+    }
+    getDaysCountInMonth(month, year) {
+        return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();
+    }
+    getDaysCountInPrevMonth(month, year) {
+        let prev = this.getPreviousMonthAndYear(month, year);
+        return this.getDaysCountInMonth(prev.month, prev.year);
+    }
+    getPreviousMonthAndYear(month, year) {
+        let m, y;
+        if (month === 0) {
+            m = 11;
+            y = year - 1;
+        }
+        else {
+            m = month - 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getNextMonthAndYear(month, year) {
+        let m, y;
+        if (month === 11) {
+            m = 0;
+            y = year + 1;
+        }
+        else {
+            m = month + 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getSundayIndex() {
+        return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;
+    }
+    isSelected(dateMeta) {
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                return this.isDateEquals(this.value, dateMeta);
+            }
+            else if (this.isMultipleSelection()) {
+                let selected = false;
+                for (let date of this.value) {
+                    selected = this.isDateEquals(date, dateMeta);
+                    if (selected) {
+                        break;
+                    }
+                }
+                return selected;
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value[1])
+                    return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);
+                else
+                    return this.isDateEquals(this.value[0], dateMeta);
+            }
+        }
+        else {
+            return false;
+        }
+    }
+    isMonthSelected(month) {
+        let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;
+        return this.isSelected({ year: this.currentYear, month: month, day: day, selectable: true });
+    }
+    isDateEquals(value, dateMeta) {
+        if (value)
+            return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;
+        else
+            return false;
+    }
+    isDateBetween(start, end, dateMeta) {
+        let between = false;
+        if (start && end) {
+            let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+            return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();
+        }
+        return between;
+    }
+    isSingleSelection() {
+        return this.selectionMode === 'single';
+    }
+    isRangeSelection() {
+        return this.selectionMode === 'range';
+    }
+    isMultipleSelection() {
+        return this.selectionMode === 'multiple';
+    }
+    isToday(today, day, month, year) {
+        return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
+    }
+    isSelectable(day, month, year, otherMonth) {
+        let validMin = true;
+        let validMax = true;
+        let validDate = true;
+        let validDay = true;
+        if (otherMonth && !this.selectOtherMonths) {
+            return false;
+        }
+        if (this.minDate) {
+            if (this.minDate.getFullYear() > year) {
+                validMin = false;
+            }
+            else if (this.minDate.getFullYear() === year) {
+                if (this.minDate.getMonth() > month) {
+                    validMin = false;
+                }
+                else if (this.minDate.getMonth() === month) {
+                    if (this.minDate.getDate() > day) {
+                        validMin = false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate) {
+            if (this.maxDate.getFullYear() < year) {
+                validMax = false;
+            }
+            else if (this.maxDate.getFullYear() === year) {
+                if (this.maxDate.getMonth() < month) {
+                    validMax = false;
+                }
+                else if (this.maxDate.getMonth() === month) {
+                    if (this.maxDate.getDate() < day) {
+                        validMax = false;
+                    }
+                }
+            }
+        }
+        if (this.disabledDates) {
+            validDate = !this.isDateDisabled(day, month, year);
+        }
+        if (this.disabledDays) {
+            validDay = !this.isDayDisabled(day, month, year);
+        }
+        return validMin && validMax && validDate && validDay;
+    }
+    isDateDisabled(day, month, year) {
+        if (this.disabledDates) {
+            for (let disabledDate of this.disabledDates) {
+                if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    isDayDisabled(day, month, year) {
+        if (this.disabledDays) {
+            let weekday = new Date(year, month, day);
+            let weekdayNumber = weekday.getDay();
+            return this.disabledDays.indexOf(weekdayNumber) !== -1;
+        }
+        return false;
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        if (this.showOnFocus) {
+            this.showOverlay();
+        }
+        this.onFocus.emit(event);
+    }
+    onInputClick() {
+        if (this.showOnFocus && !this.overlayVisible) {
+            this.showOverlay();
+        }
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit(event);
+        if (!this.keepInvalid) {
+            this.updateInputfield();
+        }
+        this.onModelTouched();
+    }
+    onButtonClick(event, inputfield) {
+        if (!this.overlayVisible) {
+            inputfield.focus();
+            this.showOverlay();
+        }
+        else {
+            this.hideOverlay();
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onPrevButtonClick(event) {
+        this.navigationState = { backward: true, button: true };
+        this.navBackward(event);
+    }
+    onNextButtonClick(event) {
+        this.navigationState = { backward: false, button: true };
+        this.navForward(event);
+    }
+    onContainerButtonKeydown(event) {
+        switch (event.which) {
+            //tab
+            case 9:
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            //escape
+            case 27:
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            default:
+                //Noop
+                break;
+        }
+    }
+    onInputKeydown(event) {
+        this.isKeydown = true;
+        if (event.keyCode === 40 && this.contentViewChild) {
+            this.trapFocus(event);
+        }
+        else if (event.keyCode === 27) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 13) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 9 && this.contentViewChild) {
+            DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+            }
+        }
+    }
+    onDateCellKeydown(event, date, groupIndex) {
+        const cellContent = event.currentTarget;
+        const cell = cellContent.parentElement;
+        switch (event.which) {
+            //down arrow
+            case 40: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let nextRow = cell.parentElement.nextElementSibling;
+                if (nextRow) {
+                    let focusCell = nextRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: false };
+                        this.navForward(event);
+                    }
+                    else {
+                        nextRow.children[cellIndex].children[0].tabIndex = '0';
+                        nextRow.children[cellIndex].children[0].focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: false };
+                    this.navForward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //up arrow
+            case 38: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let prevRow = cell.parentElement.previousElementSibling;
+                if (prevRow) {
+                    let focusCell = prevRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: true };
+                        this.navBackward(event);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: true };
+                    this.navBackward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cellContent.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    let focusCell = prevCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {
+                        this.navigateToMonth(true, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(true, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cellContent.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    let focusCell = nextCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigateToMonth(false, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(false, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onDateSelect(event, date);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    onMonthCellKeydown(event, index) {
+        const cell = event.currentTarget;
+        switch (event.which) {
+            //arrows
+            case 38:
+            case 40: {
+                cell.tabIndex = '-1';
+                var cells = cell.parentElement.children;
+                var cellIndex = DomHandler.index(cell);
+                let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cell.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    prevCell.tabIndex = '0';
+                    prevCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cell.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onMonthSelect(event, index);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    navigateToMonth(prev, groupIndex) {
+        if (prev) {
+            if (this.numberOfMonths === 1 || (groupIndex === 0)) {
+                this.navigationState = { backward: true };
+                this.navBackward(event);
+            }
+            else {
+                let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];
+                let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                let focusCell = cells[cells.length - 1];
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+        else {
+            if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {
+                this.navigationState = { backward: false };
+                this.navForward(event);
+            }
+            else {
+                let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];
+                let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+    }
+    updateFocus() {
+        let cell;
+        if (this.navigationState) {
+            if (this.navigationState.button) {
+                this.initFocusableCell();
+                if (this.navigationState.backward)
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();
+                else
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();
+            }
+            else {
+                if (this.navigationState.backward) {
+                    let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                    cell = cells[cells.length - 1];
+                }
+                else {
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                }
+                if (cell) {
+                    cell.tabIndex = '0';
+                    cell.focus();
+                }
+            }
+            this.navigationState = null;
+        }
+        else {
+            this.initFocusableCell();
+        }
+    }
+    initFocusableCell() {
+        let cell;
+        if (this.view === 'month') {
+            let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');
+            let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');
+            cells.forEach(cell => cell.tabIndex = -1);
+            cell = selectedCell || cells[0];
+            if (cells.length === 0) {
+                let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = "0"]');
+                disabledCells.forEach(cell => cell.tabIndex = -1);
+            }
+        }
+        else {
+            cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');
+            if (!cell) {
+                let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');
+                if (todayCell)
+                    cell = todayCell;
+                else
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+            }
+        }
+        if (cell) {
+            cell.tabIndex = '0';
+        }
+    }
+    trapFocus(event) {
+        let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);
+        if (focusableElements && focusableElements.length > 0) {
+            if (!focusableElements[0].ownerDocument.activeElement) {
+                focusableElements[0].focus();
+            }
+            else {
+                let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                if (event.shiftKey) {
+                    if (focusedIndex == -1 || focusedIndex === 0) {
+                        if (this.focusTrap) {
+                            focusableElements[focusableElements.length - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex === -1)
+                                return this.hideOverlay();
+                            else if (focusedIndex === 0)
+                                return;
+                        }
+                    }
+                    else {
+                        focusableElements[focusedIndex - 1].focus();
+                    }
+                }
+                else {
+                    if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {
+                        if (!this.focusTrap && focusedIndex != -1)
+                            return this.hideOverlay();
+                        else
+                            focusableElements[0].focus();
+                    }
+                    else {
+                        focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+        event.preventDefault();
+    }
+    onMonthDropdownChange(m) {
+        this.currentMonth = parseInt(m);
+        this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    onYearDropdownChange(y) {
+        this.currentYear = parseInt(y);
+        this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    validateTime(hour, minute, second, pm) {
+        let value = this.value;
+        const convertedHour = this.convertTo24Hour(hour, pm);
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        const valueDateString = value ? value.toDateString() : null;
+        if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {
+            if (this.minDate.getHours() > convertedHour) {
+                return false;
+            }
+            if (this.minDate.getHours() === convertedHour) {
+                if (this.minDate.getMinutes() > minute) {
+                    return false;
+                }
+                if (this.minDate.getMinutes() === minute) {
+                    if (this.minDate.getSeconds() > second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {
+            if (this.maxDate.getHours() < convertedHour) {
+                return false;
+            }
+            if (this.maxDate.getHours() === convertedHour) {
+                if (this.maxDate.getMinutes() < minute) {
+                    return false;
+                }
+                if (this.maxDate.getMinutes() === minute) {
+                    if (this.maxDate.getSeconds() < second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    incrementHour(event) {
+        const prevHour = this.currentHour;
+        let newHour = this.currentHour + this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour >= 24) ? (newHour - 24) : newHour;
+        else if (this.hourFormat == '12') {
+            // Before the AM/PM break, now after
+            if (prevHour < 12 && newHour > 11) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour >= 13) ? (newHour - 12) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    onTimePickerElementMouseDown(event, type, direction) {
+        if (!this.disabled) {
+            this.repeat(event, null, type, direction);
+            event.preventDefault();
+        }
+    }
+    onTimePickerElementMouseUp(event) {
+        if (!this.disabled) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    onTimePickerElementMouseLeave() {
+        if (!this.disabled && this.timePickerTimer) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    repeat(event, interval, type, direction) {
+        let i = interval || 500;
+        this.clearTimePickerTimer();
+        this.timePickerTimer = setTimeout(() => {
+            this.repeat(event, 100, type, direction);
+            this.cd.markForCheck();
+        }, i);
+        switch (type) {
+            case 0:
+                if (direction === 1)
+                    this.incrementHour(event);
+                else
+                    this.decrementHour(event);
+                break;
+            case 1:
+                if (direction === 1)
+                    this.incrementMinute(event);
+                else
+                    this.decrementMinute(event);
+                break;
+            case 2:
+                if (direction === 1)
+                    this.incrementSecond(event);
+                else
+                    this.decrementSecond(event);
+                break;
+        }
+        this.updateInputfield();
+    }
+    clearTimePickerTimer() {
+        if (this.timePickerTimer) {
+            clearTimeout(this.timePickerTimer);
+            this.timePickerTimer = null;
+        }
+    }
+    decrementHour(event) {
+        let newHour = this.currentHour - this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour < 0) ? (24 + newHour) : newHour;
+        else if (this.hourFormat == '12') {
+            // If we were at noon/midnight, then switch
+            if (this.currentHour === 12) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour <= 0) ? (12 + newHour) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    incrementMinute(event) {
+        let newMinute = this.currentMinute + this.stepMinute;
+        newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    decrementMinute(event) {
+        let newMinute = this.currentMinute - this.stepMinute;
+        newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    incrementSecond(event) {
+        let newSecond = this.currentSecond + this.stepSecond;
+        newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    decrementSecond(event) {
+        let newSecond = this.currentSecond - this.stepSecond;
+        newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    updateTime() {
+        let value = this.value;
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        value = value ? new Date(value.getTime()) : new Date();
+        if (this.hourFormat == '12') {
+            if (this.currentHour === 12)
+                value.setHours(this.pm ? 12 : 0);
+            else
+                value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+        }
+        else {
+            value.setHours(this.currentHour);
+        }
+        value.setMinutes(this.currentMinute);
+        value.setSeconds(this.currentSecond);
+        if (this.isRangeSelection()) {
+            if (this.value[1])
+                value = [this.value[0], value];
+            else
+                value = [value, null];
+        }
+        if (this.isMultipleSelection()) {
+            value = [...this.value.slice(0, -1), value];
+        }
+        this.updateModel(value);
+        this.onSelect.emit(value);
+        this.updateInputfield();
+    }
+    toggleAMPM(event) {
+        const newPM = !this.pm;
+        if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.pm = newPM;
+            this.updateTime();
+        }
+        event.preventDefault();
+    }
+    onUserInput(event) {
+        // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026
+        if (!this.isKeydown) {
+            return;
+        }
+        this.isKeydown = false;
+        let val = event.target.value;
+        try {
+            let value = this.parseValueFromString(val);
+            if (this.isValidSelection(value)) {
+                this.updateModel(value);
+                this.updateUI();
+            }
+        }
+        catch (err) {
+            //invalid date
+            this.updateModel(null);
+        }
+        this.filled = val != null && val.length;
+        this.onInput.emit(event);
+    }
+    isValidSelection(value) {
+        let isValid = true;
+        if (this.isSingleSelection()) {
+            if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {
+                isValid = false;
+            }
+        }
+        else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {
+            if (this.isRangeSelection()) {
+                isValid = value.length > 1 && value[1] > value[0] ? true : false;
+            }
+        }
+        return isValid;
+    }
+    parseValueFromString(text) {
+        if (!text || text.trim().length === 0) {
+            return null;
+        }
+        let value;
+        if (this.isSingleSelection()) {
+            value = this.parseDateTime(text);
+        }
+        else if (this.isMultipleSelection()) {
+            let tokens = text.split(this.multipleSeparator);
+            value = [];
+            for (let token of tokens) {
+                value.push(this.parseDateTime(token.trim()));
+            }
+        }
+        else if (this.isRangeSelection()) {
+            let tokens = text.split(' ' + this.rangeSeparator + ' ');
+            value = [];
+            for (let i = 0; i < tokens.length; i++) {
+                value[i] = this.parseDateTime(tokens[i].trim());
+            }
+        }
+        return value;
+    }
+    parseDateTime(text) {
+        let date;
+        let parts = text.split(' ');
+        if (this.timeOnly) {
+            date = new Date();
+            this.populateTime(date, parts[0], parts[1]);
+        }
+        else {
+            const dateFormat = this.getDateFormat();
+            if (this.showTime) {
+                let ampm = this.hourFormat == '12' ? parts.pop() : null;
+                let timeString = parts.pop();
+                date = this.parseDate(parts.join(' '), dateFormat);
+                this.populateTime(date, timeString, ampm);
+            }
+            else {
+                date = this.parseDate(text, dateFormat);
+            }
+        }
+        return date;
+    }
+    populateTime(value, timeString, ampm) {
+        if (this.hourFormat == '12' && !ampm) {
+            throw 'Invalid Time';
+        }
+        this.pm = (ampm === 'PM' || ampm === 'pm');
+        let time = this.parseTime(timeString);
+        value.setHours(time.hour);
+        value.setMinutes(time.minute);
+        value.setSeconds(time.second);
+    }
+    updateUI() {
+        let val = this.value || this.defaultDate || new Date();
+        if (Array.isArray(val)) {
+            val = val[0];
+        }
+        this.currentMonth = val.getMonth();
+        this.currentYear = val.getFullYear();
+        this.createMonths(this.currentMonth, this.currentYear);
+        if (this.showTime || this.timeOnly) {
+            this.setCurrentHourPM(val.getHours());
+            this.currentMinute = val.getMinutes();
+            this.currentSecond = val.getSeconds();
+        }
+    }
+    showOverlay() {
+        if (!this.overlayVisible) {
+            this.updateUI();
+            this.overlayVisible = true;
+        }
+    }
+    hideOverlay() {
+        this.overlayVisible = false;
+        this.clearTimePickerTimer();
+        if (this.touchUI) {
+            this.disableModality();
+        }
+        this.cd.markForCheck();
+    }
+    toggle() {
+        if (!this.inline) {
+            if (!this.overlayVisible) {
+                this.showOverlay();
+                this.inputfieldViewChild.nativeElement.focus();
+            }
+            else {
+                this.hideOverlay();
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        if (this.touchUI)
+                            ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);
+                        else
+                            ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.onShow.emit(event);
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onClose.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.touchUI) {
+            this.enableModality(this.overlay);
+        }
+        else {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+        }
+    }
+    enableModality(element) {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);
+            let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';
+            DomHandler.addMultipleClasses(this.mask, maskStyleClass);
+            this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                this.disableModality();
+            });
+            document.body.appendChild(this.mask);
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyMask.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyMask() {
+        document.body.removeChild(this.mask);
+        let bodyChildren = document.body.children;
+        let hasBlockerMasks;
+        for (let i = 0; i < bodyChildren.length; i++) {
+            let bodyChild = bodyChildren[i];
+            if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {
+                hasBlockerMasks = true;
+                break;
+            }
+        }
+        if (!hasBlockerMasks) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.unbindMaskClickListener();
+        this.mask = null;
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.value && typeof this.value === 'string') {
+            this.value = this.parseValueFromString(this.value);
+        }
+        this.updateInputfield();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    getDateFormat() {
+        return this.dateFormat || this.getTranslation('dateFormat');
+    }
+    // Ported from jquery-ui datepicker formatDate
+    formatDate(date, format) {
+        if (!date) {
+            return '';
+        }
+        let iFormat;
+        const lookAhead = (match) => {
+            const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, formatNumber = (match, value, len) => {
+            let num = '' + value;
+            if (lookAhead(match)) {
+                while (num.length < len) {
+                    num = '0' + num;
+                }
+            }
+            return num;
+        }, formatName = (match, value, shortNames, longNames) => {
+            return (lookAhead(match) ? longNames[value] : shortNames[value]);
+        };
+        let output = '';
+        let literal = false;
+        if (date) {
+            for (iFormat = 0; iFormat < format.length; iFormat++) {
+                if (literal) {
+                    if (format.charAt(iFormat) === '\'' && !lookAhead('\'')) {
+                        literal = false;
+                    }
+                    else {
+                        output += format.charAt(iFormat);
+                    }
+                }
+                else {
+                    switch (format.charAt(iFormat)) {
+                        case 'd':
+                            output += formatNumber('d', date.getDate(), 2);
+                            break;
+                        case 'D':
+                            output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                            break;
+                        case 'o':
+                            output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -
+                                new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+                            break;
+                        case 'm':
+                            output += formatNumber('m', date.getMonth() + 1, 2);
+                            break;
+                        case 'M':
+                            output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                            break;
+                        case 'y':
+                            output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);
+                            break;
+                        case '@':
+                            output += date.getTime();
+                            break;
+                        case '!':
+                            output += date.getTime() * 10000 + this.ticksTo1970;
+                            break;
+                        case '\'':
+                            if (lookAhead('\'')) {
+                                output += '\'';
+                            }
+                            else {
+                                literal = true;
+                            }
+                            break;
+                        default:
+                            output += format.charAt(iFormat);
+                    }
+                }
+            }
+        }
+        return output;
+    }
+    formatTime(date) {
+        if (!date) {
+            return '';
+        }
+        let output = '';
+        let hours = date.getHours();
+        let minutes = date.getMinutes();
+        let seconds = date.getSeconds();
+        if (this.hourFormat == '12' && hours > 11 && hours != 12) {
+            hours -= 12;
+        }
+        if (this.hourFormat == '12') {
+            output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;
+        }
+        else {
+            output += (hours < 10) ? '0' + hours : hours;
+        }
+        output += ':';
+        output += (minutes < 10) ? '0' + minutes : minutes;
+        if (this.showSeconds) {
+            output += ':';
+            output += (seconds < 10) ? '0' + seconds : seconds;
+        }
+        if (this.hourFormat == '12') {
+            output += date.getHours() > 11 ? ' PM' : ' AM';
+        }
+        return output;
+    }
+    parseTime(value) {
+        let tokens = value.split(':');
+        let validTokenLength = this.showSeconds ? 3 : 2;
+        if (tokens.length !== validTokenLength) {
+            throw "Invalid time";
+        }
+        let h = parseInt(tokens[0]);
+        let m = parseInt(tokens[1]);
+        let s = this.showSeconds ? parseInt(tokens[2]) : null;
+        if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {
+            throw "Invalid time";
+        }
+        else {
+            if (this.hourFormat == '12') {
+                if (h !== 12 && this.pm) {
+                    h += 12;
+                }
+                else if (!this.pm && h === 12) {
+                    h -= 12;
+                }
+            }
+            return { hour: h, minute: m, second: s };
+        }
+    }
+    // Ported from jquery-ui datepicker parseDate
+    parseDate(value, format) {
+        if (format == null || value == null) {
+            throw "Invalid arguments";
+        }
+        value = (typeof value === "object" ? value.toString() : value + "");
+        if (value === "") {
+            return null;
+        }
+        let iFormat, dim, extra, iValue = 0, shortYearCutoff = (typeof this.shortYearCutoff !== "string" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {
+            let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, getNumber = (match) => {
+            let isDoubled = lookAhead(match), size = (match === "@" ? 14 : (match === "!" ? 20 :
+                (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), minSize = (match === "y" ? size : 1), digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits);
+            if (!num) {
+                throw "Missing number at position " + iValue;
+            }
+            iValue += num[0].length;
+            return parseInt(num[0], 10);
+        }, getName = (match, shortNames, longNames) => {
+            let index = -1;
+            let arr = lookAhead(match) ? longNames : shortNames;
+            let names = [];
+            for (let i = 0; i < arr.length; i++) {
+                names.push([i, arr[i]]);
+            }
+            names.sort((a, b) => {
+                return -(a[1].length - b[1].length);
+            });
+            for (let i = 0; i < names.length; i++) {
+                let name = names[i][1];
+                if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+                    index = names[i][0];
+                    iValue += name.length;
+                    break;
+                }
+            }
+            if (index !== -1) {
+                return index + 1;
+            }
+            else {
+                throw "Unknown name at position " + iValue;
+            }
+        }, checkLiteral = () => {
+            if (value.charAt(iValue) !== format.charAt(iFormat)) {
+                throw "Unexpected literal at position " + iValue;
+            }
+            iValue++;
+        };
+        if (this.view === 'month') {
+            day = 1;
+        }
+        for (iFormat = 0; iFormat < format.length; iFormat++) {
+            if (literal) {
+                if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+                    literal = false;
+                }
+                else {
+                    checkLiteral();
+                }
+            }
+            else {
+                switch (format.charAt(iFormat)) {
+                    case "d":
+                        day = getNumber("d");
+                        break;
+                    case "D":
+                        getName("D", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                        break;
+                    case "o":
+                        doy = getNumber("o");
+                        break;
+                    case "m":
+                        month = getNumber("m");
+                        break;
+                    case "M":
+                        month = getName("M", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                        break;
+                    case "y":
+                        year = getNumber("y");
+                        break;
+                    case "@":
+                        date = new Date(getNumber("@"));
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "!":
+                        date = new Date((getNumber("!") - this.ticksTo1970) / 10000);
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "'":
+                        if (lookAhead("'")) {
+                            checkLiteral();
+                        }
+                        else {
+                            literal = true;
+                        }
+                        break;
+                    default:
+                        checkLiteral();
+                }
+            }
+        }
+        if (iValue < value.length) {
+            extra = value.substr(iValue);
+            if (!/^\s+/.test(extra)) {
+                throw "Extra/unparsed characters found in date: " + extra;
+            }
+        }
+        if (year === -1) {
+            year = new Date().getFullYear();
+        }
+        else if (year < 100) {
+            year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+                (year <= shortYearCutoff ? 0 : -100);
+        }
+        if (doy > -1) {
+            month = 1;
+            day = doy;
+            do {
+                dim = this.getDaysCountInMonth(year, month - 1);
+                if (day <= dim) {
+                    break;
+                }
+                month++;
+                day -= dim;
+            } while (true);
+        }
+        date = this.daylightSavingAdjust(new Date(year, month - 1, day));
+        if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+            throw "Invalid date"; // E.g. 31/02/00
+        }
+        return date;
+    }
+    daylightSavingAdjust(date) {
+        if (!date) {
+            return null;
+        }
+        date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+        return date;
+    }
+    updateFilledState() {
+        this.filled = this.inputFieldValue && this.inputFieldValue != '';
+    }
+    onTodayButtonClick(event) {
+        let date = new Date();
+        let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };
+        this.onDateSelect(event, dateMeta);
+        this.onTodayClick.emit(event);
+    }
+    onClearButtonClick(event) {
+        this.updateModel(null);
+        this.updateInputfield();
+        this.hideOverlay();
+        this.onClearClick.emit(event);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.zone.runOutsideAngular(() => {
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                    if (this.isOutsideClicked(event) && this.overlayVisible) {
+                        this.zone.run(() => {
+                            this.hideOverlay();
+                            this.onClickOutside.emit(event);
+                            this.cd.markForCheck();
+                        });
+                    }
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        if (!this.documentResizeListener && !this.touchUI) {
+            this.documentResizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) ||
+            this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isNavIconClicked(event) {
+        return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')
+            || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isAndroid()) {
+            this.hideOverlay();
+        }
+    }
+    onOverlayHide() {
+        if (this.mask) {
+            this.destroyMask();
+        }
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.clearTimePickerTimer();
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Calendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Calendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Calendar, selector: "p-calendar", inputs: { style: "style", styleClass: "styleClass", inputStyle: "inputStyle", inputId: "inputId", name: "name", inputStyleClass: "inputStyleClass", placeholder: "placeholder", ariaLabelledBy: "ariaLabelledBy", iconAriaLabel: "iconAriaLabel", disabled: "disabled", dateFormat: "dateFormat", multipleSeparator: "multipleSeparator", rangeSeparator: "rangeSeparator", inline: "inline", showOtherMonths: "showOtherMonths", selectOtherMonths: "selectOtherMonths", showIcon: "showIcon", icon: "icon", appendTo: "appendTo", readonlyInput: "readonlyInput", shortYearCutoff: "shortYearCutoff", monthNavigator: "monthNavigator", yearNavigator: "yearNavigator", hourFormat: "hourFormat", timeOnly: "timeOnly", stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond", showSeconds: "showSeconds", required: "required", showOnFocus: "showOnFocus", showWeek: "showWeek", dataType: "dataType", selectionMode: "selectionMode", maxDateCount: "maxDateCount", showButtonBar: "showButtonBar", todayButtonStyleClass: "todayButtonStyleClass", clearButtonStyleClass: "clearButtonStyleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", panelStyleClass: "panelStyleClass", panelStyle: "panelStyle", keepInvalid: "keepInvalid", hideOnDateTimeSelect: "hideOnDateTimeSelect", numberOfMonths: "numberOfMonths", view: "view", touchUI: "touchUI", timeSeparator: "timeSeparator", focusTrap: "focusTrap", firstDayOfWeek: "firstDayOfWeek", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", tabindex: "tabindex", defaultDate: "defaultDate", minDate: "minDate", maxDate: "maxDate", disabledDates: "disabledDates", disabledDays: "disabledDays", yearRange: "yearRange", showTime: "showTime", locale: "locale" }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onClose: "onClose", onSelect: "onSelect", onInput: "onInput", onTodayClick: "onTodayClick", onClearClick: "onClearClick", onMonthChange: "onMonthChange", onYearChange: "onYearChange", onClickOutside: "onClickOutside", onShow: "onShow" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "content", first: true, predicate: ["contentWrapper"], descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('overlayAnimation', [
+            state('visibleTouchUI', style({
+                transform: 'translate(-50%,-50%)',
+                opacity: 1
+            })),
+            transition('void => visible', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ]),
+            transition('void => visibleTouchUI', [
+                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visibleTouchUI => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    opacity: 0,
+                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-calendar', template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            state('visibleTouchUI', style({
+                                transform: 'translate(-50%,-50%)',
+                                opacity: 1
+                            })),
+                            transition('void => visible', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ]),
+                            transition('void => visibleTouchUI', [
+                                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visibleTouchUI => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    opacity: 0,
+                                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                                }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], iconAriaLabel: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dateFormat: [{
+                type: Input
+            }], multipleSeparator: [{
+                type: Input
+            }], rangeSeparator: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], showOtherMonths: [{
+                type: Input
+            }], selectOtherMonths: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], readonlyInput: [{
+                type: Input
+            }], shortYearCutoff: [{
+                type: Input
+            }], monthNavigator: [{
+                type: Input
+            }], yearNavigator: [{
+                type: Input
+            }], hourFormat: [{
+                type: Input
+            }], timeOnly: [{
+                type: Input
+            }], stepHour: [{
+                type: Input
+            }], stepMinute: [{
+                type: Input
+            }], stepSecond: [{
+                type: Input
+            }], showSeconds: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], showOnFocus: [{
+                type: Input
+            }], showWeek: [{
+                type: Input
+            }], dataType: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], maxDateCount: [{
+                type: Input
+            }], showButtonBar: [{
+                type: Input
+            }], todayButtonStyleClass: [{
+                type: Input
+            }], clearButtonStyleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], keepInvalid: [{
+                type: Input
+            }], hideOnDateTimeSelect: [{
+                type: Input
+            }], numberOfMonths: [{
+                type: Input
+            }], view: [{
+                type: Input
+            }], touchUI: [{
+                type: Input
+            }], timeSeparator: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], firstDayOfWeek: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onTodayClick: [{
+                type: Output
+            }], onClearClick: [{
+                type: Output
+            }], onMonthChange: [{
+                type: Output
+            }], onYearChange: [{
+                type: Output
+            }], onClickOutside: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], tabindex: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield', { static: false }]
+            }], content: [{
+                type: ViewChild,
+                args: ['contentWrapper', { static: false }]
+            }], defaultDate: [{
+                type: Input
+            }], minDate: [{
+                type: Input
+            }], maxDate: [{
+                type: Input
+            }], disabledDates: [{
+                type: Input
+            }], disabledDays: [{
+                type: Input
+            }], yearRange: [{
+                type: Input
+            }], showTime: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }] } });
+export class CalendarModule {
+}
+CalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });
+CalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule],
+                    exports: [Calendar, ButtonModule, SharedModule],
+                    declarations: [Calendar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQTZCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLFVBQVUsRUFDbkYsU0FBUyxFQUErQixlQUFlLEVBQWtCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xKLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxVQUFVLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxhQUFhLEVBQWUsZUFBZSxFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUNyRyxPQUFPLEVBQUMsaUJBQWlCLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFRO0lBQ3hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBdUxGLE1BQU0sT0FBTyxRQUFRO0lBZ1dqQixZQUFtQixFQUFjLEVBQVMsUUFBbUIsRUFBUyxFQUFxQixFQUFVLElB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QUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUNsQztRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JELFNBQVMsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUNsQztRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JELFNBQVMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUNsQztR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LEVBQUMsWUFBWTs0R0FHbkMsY0FBYyxZQUpkLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxDQUFDLEVBQzNDLFlBQVksRUFBQyxZQUFZOzJGQUduQyxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDOUQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7b0JBQzdDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxFbGVtZW50UmVmLE9uRGVzdHJveSxPbkluaXQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixmb3J3YXJkUmVmLFJlbmRlcmVyMixcbiAgICAgICAgVmlld0NoaWxkLENoYW5nZURldGVjdG9yUmVmLFRlbXBsYXRlUmVmLENvbnRlbnRDaGlsZHJlbixRdWVyeUxpc3QsTmdab25lLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge0RvbUhhbmRsZXIsIENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZSxQcmltZVRlbXBsYXRlLFByaW1lTkdDb25maWcsVHJhbnNsYXRpb25LZXlzLCBPdmVybGF5U2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7WkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgQ0FMRU5EQVJfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDYWxlbmRhciksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxlU2V0dGluZ3Mge1xuICAgIGZpcnN0RGF5T2ZXZWVrPzogbnVtYmVyO1xuICAgIGRheU5hbWVzPzogc3RyaW5nW107XG4gICAgZGF5TmFtZXNTaG9ydD86IHN0cmluZ1tdO1xuICAgIGRheU5hbWVzTWluPzogc3RyaW5nW107XG4gICAgbW9udGhOYW1lcz86IHN0cmluZ1tdO1xuICAgIG1vbnRoTmFtZXNTaG9ydD86IHN0cmluZ1tdO1xuICAgIHRvZGF5Pzogc3RyaW5nO1xuICAgIGNsZWFyPzogc3RyaW5nO1xuICAgIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG4gICAgd2Vla0hlYWRlcj86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZTogIGBcbiAgICAgICAgPHNwYW4gI2NvbnRhaW5lciBbbmdDbGFzc109XCJ7J3AtY2FsZW5kYXInOnRydWUsICdwLWNhbGVuZGFyLXctYnRuJzogc2hvd0ljb24sICdwLWNhbGVuZGFyLXRpbWVvbmx5JzogdGltZU9ubHksICdwLWNhbGVuZGFyLWRpc2FibGVkJzpkaXNhYmxlZCwgJ3AtZm9jdXMnOiBmb2N1c31cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWlubGluZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaW5wdXRmaWVsZCB0eXBlPVwidGV4dFwiIFthdHRyLmlkXT1cImlucHV0SWRcIiBbYXR0ci5uYW1lXT1cIm5hbWVcIiBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbdmFsdWVdPVwiaW5wdXRGaWVsZFZhbHVlXCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCIgKGtleWRvd24pPVwib25JbnB1dEtleWRvd24oJGV2ZW50KVwiIChjbGljayk9XCJvbklucHV0Q2xpY2soKVwiIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiIChpbnB1dCk9XCJvblVzZXJJbnB1dCgkZXZlbnQpXCIgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiIFtjbGFzc109XCJpbnB1dFN0eWxlQ2xhc3NcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJ8fCcnXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbYXR0ci5pbnB1dG1vZGVdPVwidG91Y2hVSSA/ICdvZmYnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidwLWlucHV0dGV4dCBwLWNvbXBvbmVudCdcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICA+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpY29uQXJpYUxhYmVsXCIgW2ljb25dPVwiaWNvblwiIHBCdXR0b24gcFJpcHBsZSAqbmdJZj1cInNob3dJY29uXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50LGlucHV0ZmllbGQpXCIgY2xhc3M9XCJwLWRhdGVwaWNrZXItdHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHRhYmluZGV4PVwiMFwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgI2NvbnRlbnRXcmFwcGVyIFtjbGFzc109XCJwYW5lbFN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJwYW5lbFN0eWxlXCIgW25nQ2xhc3NdPVwieydwLWRhdGVwaWNrZXIgcC1jb21wb25lbnQnOiB0cnVlLCAncC1kYXRlcGlja2VyLWlubGluZSc6aW5saW5lLFxuICAgICAgICAgICAgICAgICdwLWRpc2FibGVkJzpkaXNhYmxlZCwncC1kYXRlcGlja2VyLXRpbWVvbmx5Jzp0aW1lT25seSwncC1kYXRlcGlja2VyLW11bHRpcGxlLW1vbnRoJzogdGhpcy5udW1iZXJPZk1vbnRocyA+IDEsICdwLWRhdGVwaWNrZXItbW9udGhwaWNrZXInOiAodmlldyA9PT0gJ21vbnRoJyksICdwLWRhdGVwaWNrZXItdG91Y2gtdWknOiB0b3VjaFVJfVwiXG4gICAgICAgICAgICAgICAgW0BvdmVybGF5QW5pbWF0aW9uXT1cInRvdWNoVUkgPyB7dmFsdWU6ICd2aXNpYmxlVG91Y2hVSScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtALmRpc2FibGVkXT1cImlubGluZSA9PT0gdHJ1ZVwiIChAb3ZlcmxheUFuaW1hdGlvbi5zdGFydCk9XCJvbk92ZXJsYXlBbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBvdmVybGF5QW5pbWF0aW9uLmRvbmUpPVwib25PdmVybGF5QW5pbWF0aW9uRG9uZSgkZXZlbnQpXCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIiAqbmdJZj1cImlubGluZSB8fCBvdmVybGF5VmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGltZU9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGF0ZXBpY2tlci1ncm91cC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRhdGVwaWNrZXItZ3JvdXBcIiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRhdGVwaWNrZXItaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGtleWRvd24pPVwib25Db250YWluZXJCdXR0b25LZXlkb3duKCRldmVudClcIiBjbGFzcz1cInAtZGF0ZXBpY2tlci1wcmV2IHAtbGlua1wiIChjbGljayk9XCJvblByZXZCdXR0b25DbGljaygkZXZlbnQpXCIgKm5nSWY9XCJpID09PSAwXCIgdHlwZT1cImJ1dHRvblwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZGF0ZXBpY2tlci1wcmV2LWljb24gcGkgcGktY2hldnJvbi1sZWZ0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGF0ZXBpY2tlci10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRhdGVwaWNrZXItbW9udGhcIiAqbmdJZj1cIiFtb250aE5hdmlnYXRvciAmJiAodmlldyAhPT0gJ21vbnRoJylcIj57e2dldFRyYW5zbGF0aW9uKCdtb250aE5hbWVzJylbbW9udGgubW9udGhdfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicC1kYXRlcGlja2VyLW1vbnRoXCIgKm5nSWY9XCJtb250aE5hdmlnYXRvciAmJiAodmlldyAhPT0gJ21vbnRoJykgJiYgbnVtYmVyT2ZNb250aHMgPT09IDFcIiAoY2hhbmdlKT1cIm9uTW9udGhEcm9wZG93bkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImlcIiAqbmdGb3I9XCJsZXQgbW9udGhOYW1lIG9mIGdldFRyYW5zbGF0aW9uKCdtb250aE5hbWVzJyk7bGV0IGkgPSBpbmRleFwiIFtzZWxlY3RlZF09XCJpID09PSBtb250aC5tb250aFwiPnt7bW9udGhOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB0YWJpbmRleD1cIjBcIiBjbGFzcz1cInAtZGF0ZXBpY2tlci15ZWFyXCIgKm5nSWY9XCJ5ZWFyTmF2aWdhdG9yICYmIG51bWJlck9mTW9udGhzID09PSAxXCIgKGNoYW5nZSk9XCJvblllYXJEcm9wZG93bkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInllYXJcIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyT3B0aW9uc1wiIFtzZWxlY3RlZF09XCJ5ZWFyID09PSBjdXJyZW50WWVhclwiPnt7eWVhcn19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1kYXRlcGlja2VyLXllYXJcIiAqbmdJZj1cIiF5ZWFyTmF2aWdhdG9yXCI+e3t2aWV3ID09PSAnbW9udGgnID8gY3VycmVudFllYXIgOiBtb250aC55ZWFyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgY2xhc3M9XCJwLWRhdGVwaWNrZXItbmV4dCBwLWxpbmtcIiAoY2xpY2spPVwib25OZXh0QnV0dG9uQ2xpY2soJGV2ZW50KVwiICpuZ0lmPVwibnVtYmVyT2ZNb250aHMgPT09IDEgPyB0cnVlIDogKGkgPT09IG51bWJlck9mTW9udGhzIC0xKVwiIHR5cGU9XCJidXR0b25cIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRhdGVwaWNrZXItbmV4dC1pY29uIHBpIHBpLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRhdGVwaWNrZXItY2FsZW5kYXItY29udGFpbmVyXCIgKm5nSWY9XCJ2aWV3ID09PSdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJwLWRhdGVwaWNrZXItY2FsZW5kYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInNob3dXZWVrXCIgY2xhc3M9XCJwLWRhdGVwaWNrZXItd2Vla2hlYWRlciBwLWRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2dldFRyYW5zbGF0aW9uKCd3ZWVrSGVhZGVyJyl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7bGV0IGJlZ2luID0gZmlyc3Q7IGxldCBlbmQgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3dlZWtEYXl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2YgbW9udGguZGF0ZXM7IGxldCBqID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dXZWVrXCIgY2xhc3M9XCJwLWRhdGVwaWNrZXItd2Vla251bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttb250aC53ZWVrTnVtYmVyc1tqXX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF0ZSBvZiB3ZWVrXCIgW25nQ2xhc3NdPVwieydwLWRhdGVwaWNrZXItb3RoZXItbW9udGgnOiBkYXRlLm90aGVyTW9udGgsJ3AtZGF0ZXBpY2tlci10b2RheSc6ZGF0ZS50b2RheX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRlLm90aGVyTW9udGggPyBzaG93T3RoZXJNb250aHMgOiB0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6aXNTZWxlY3RlZChkYXRlKSwgJ3AtZGlzYWJsZWQnOiAhZGF0ZS5zZWxlY3RhYmxlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRhdGVTZWxlY3QoJGV2ZW50LGRhdGUpXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAoa2V5ZG93bik9XCJvbkRhdGVDZWxsS2V5ZG93bigkZXZlbnQsZGF0ZSxpKVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0ZVRlbXBsYXRlXCI+e3tkYXRlLmRheX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1vbnRocGlja2VyXCIgKm5nSWY9XCJ2aWV3ID09PSAnbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbSBvZiBtb250aFBpY2tlclZhbHVlczsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJvbk1vbnRoU2VsZWN0KCRldmVudCwgaSlcIiAoa2V5ZG93bik9XCJvbk1vbnRoQ2VsbEtleWRvd24oJGV2ZW50LGkpXCIgY2xhc3M9XCJwLW1vbnRocGlja2VyLW1vbnRoXCIgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IGlzTW9udGhTZWxlY3RlZChpKSwgJ3AtZGlzYWJsZWQnOiFpc1NlbGVjdGFibGUoMSwgaSwgdGhpcy5jdXJyZW50WWVhciwgZmFsc2UpfVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGltZXBpY2tlclwiICpuZ0lmPVwic2hvd1RpbWV8fHRpbWVPbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhvdXItcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1saW5rXCIgdHlwZT1cImJ1dHRvblwiIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiaW5jcmVtZW50SG91cigkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VEb3duKCRldmVudCwgMCwgMSlcIiAobW91c2V1cCk9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VVcCgkZXZlbnQpXCIgKG1vdXNlbGVhdmUpPVwib25UaW1lUGlja2VyRWxlbWVudE1vdXNlTGVhdmUoKVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXVwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudEhvdXIgPCAxMFwiPjA8L25nLWNvbnRhaW5lcj57e2N1cnJlbnRIb3VyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1saW5rXCIgdHlwZT1cImJ1dHRvblwiIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiZGVjcmVtZW50SG91cigkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VEb3duKCRldmVudCwgMCwgLTEpXCIgKG1vdXNldXApPVwib25UaW1lUGlja2VyRWxlbWVudE1vdXNlVXAoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cIm9uVGltZVBpY2tlckVsZW1lbnRNb3VzZUxlYXZlKClcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1zZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dGltZVNlcGFyYXRvcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWludXRlLXBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtbGlua1wiIHR5cGU9XCJidXR0b25cIiAoa2V5ZG93bik9XCJvbkNvbnRhaW5lckJ1dHRvbktleWRvd24oJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImluY3JlbWVudE1pbnV0ZSgkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VEb3duKCRldmVudCwgMSwgMSlcIiAobW91c2V1cCk9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VVcCgkZXZlbnQpXCIgKG1vdXNlbGVhdmUpPVwib25UaW1lUGlja2VyRWxlbWVudE1vdXNlTGVhdmUoKVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXVwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudE1pbnV0ZSA8IDEwXCI+MDwvbmctY29udGFpbmVyPnt7Y3VycmVudE1pbnV0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInAtbGlua1wiIHR5cGU9XCJidXR0b25cIiAoa2V5ZG93bik9XCJvbkNvbnRhaW5lckJ1dHRvbktleWRvd24oJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImRlY3JlbWVudE1pbnV0ZSgkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VEb3duKCRldmVudCwgMSwgLTEpXCIgKG1vdXNldXApPVwib25UaW1lUGlja2VyRWxlbWVudE1vdXNlVXAoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cIm9uVGltZVBpY2tlckVsZW1lbnRNb3VzZUxlYXZlKClcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1zZXBhcmF0b3JcIiAqbmdJZj1cInNob3dTZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3RpbWVTZXBhcmF0b3J9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXNlY29uZC1waWNrZXJcIiAqbmdJZj1cInNob3dTZWNvbmRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1saW5rXCIgdHlwZT1cImJ1dHRvblwiIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiaW5jcmVtZW50U2Vjb25kKCRldmVudClcIiAobW91c2Vkb3duKT1cIm9uVGltZVBpY2tlckVsZW1lbnRNb3VzZURvd24oJGV2ZW50LCAyLCAxKVwiIChtb3VzZXVwKT1cIm9uVGltZVBpY2tlckVsZW1lbnRNb3VzZVVwKCRldmVudClcIiAobW91c2VsZWF2ZSk9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VMZWF2ZSgpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLWNoZXZyb24tdXBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U2Vjb25kIDwgMTBcIj4wPC9uZy1jb250YWluZXI+e3tjdXJyZW50U2Vjb25kfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1saW5rXCIgdHlwZT1cImJ1dHRvblwiIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiZGVjcmVtZW50U2Vjb25kKCRldmVudClcIiAobW91c2Vkb3duKT1cIm9uVGltZVBpY2tlckVsZW1lbnRNb3VzZURvd24oJGV2ZW50LCAyLCAtMSlcIiAobW91c2V1cCk9XCJvblRpbWVQaWNrZXJFbGVtZW50TW91c2VVcCgkZXZlbnQpXCIgKG1vdXNlbGVhdmUpPVwib25UaW1lUGlja2VyRWxlbWVudE1vdXNlTGVhdmUoKVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1jaGV2cm9uLWRvd25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWFtcG0tcGlja2VyXCIgKm5nSWY9XCJob3VyRm9ybWF0PT0nMTInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1saW5rXCIgdHlwZT1cImJ1dHRvblwiIChrZXlkb3duKT1cIm9uQ29udGFpbmVyQnV0dG9uS2V5ZG93bigkZXZlbnQpXCIgKGNsaWNrKT1cInRvZ2dsZUFNUE0oJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZUFNUE0oJGV2ZW50KVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXVwXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3BtID8gJ1BNJyA6ICdBTSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwLWxpbmtcIiB0eXBlPVwiYnV0dG9uXCIgKGtleWRvd24pPVwib25Db250YWluZXJCdXR0b25LZXlkb3duKCRldmVudClcIiAoY2xpY2spPVwidG9nZ2xlQU1QTSgkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwidG9nZ2xlQU1QTSgkZXZlbnQpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kYXRlcGlja2VyLWJ1dHRvbmJhclwiICpuZ0lmPVwic2hvd0J1dHRvbkJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbGFiZWxdPVwiZ2V0VHJhbnNsYXRpb24oJ3RvZGF5JylcIiAoa2V5ZG93bik9XCJvbkNvbnRhaW5lckJ1dHRvbktleWRvd24oJGV2ZW50KVwiIChjbGljayk9XCJvblRvZGF5QnV0dG9uQ2xpY2soJGV2ZW50KVwiIHBCdXR0b24gcFJpcHBsZSBbbmdDbGFzc109XCJbdG9kYXlCdXR0b25TdHlsZUNsYXNzXVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbGFiZWxdPVwiZ2V0VHJhbnNsYXRpb24oJ2NsZWFyJylcIiAoa2V5ZG93bik9XCJvbkNvbnRhaW5lckJ1dHRvbktleWRvd24oJGV2ZW50KVwiIChjbGljayk9XCJvbkNsZWFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiIHBCdXR0b24gcFJpcHBsZSBbbmdDbGFzc109XCJbY2xlYXJCdXR0b25TdHlsZUNsYXNzXVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlVG91Y2hVSScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoLTUwJSwtNTAlKScsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiB2aXNpYmxlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KSd9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJyonIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IHZpc2libGVUb3VjaFVJJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgtNTAlLCAtNDAlLCAwKSBzY2FsZSgwLjkpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGVUb3VjaFVJID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScpLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoLTUwJSwgLTQwJSwgMCkgc2NhbGUoMC45KSdcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQgcC1pbnB1dHdyYXBwZXInLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXMnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtDQUxFTkRBUl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhciBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3ksQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpY29uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYW55O1xuXG4gICAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGVTZXBhcmF0b3I6IHN0cmluZyA9ICcsJztcblxuICAgIEBJbnB1dCgpIHJhbmdlU2VwYXJhdG9yOiBzdHJpbmcgPSAnLSc7XG5cbiAgICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dPdGhlck1vbnRoczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzZWxlY3RPdGhlck1vbnRoczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dJY29uOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nID0gJ3BpIHBpLWNhbGVuZGFyJztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSByZWFkb25seUlucHV0OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvcnRZZWFyQ3V0b2ZmOiBhbnkgPSAnKzEwJztcblxuICAgIEBJbnB1dCgpIG1vbnRoTmF2aWdhdG9yOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgeWVhck5hdmlnYXRvcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGhvdXJGb3JtYXQ6IHN0cmluZyA9ICcyNCc7XG5cbiAgICBASW5wdXQoKSB0aW1lT25seTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0ZXBIb3VyOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgc3RlcE1pbnV0ZTogbnVtYmVyID0gMTtcblxuICAgIEBJbnB1dCgpIHN0ZXBTZWNvbmQ6IG51bWJlciA9IDE7XG5cbiAgICBASW5wdXQoKSBzaG93U2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93T25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93V2VlazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGF0YVR5cGU6IHN0cmluZyA9ICdkYXRlJztcblxuICAgIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6IHN0cmluZyA9ICdzaW5nbGUnO1xuXG4gICAgQElucHV0KCkgbWF4RGF0ZUNvdW50OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBzaG93QnV0dG9uQmFyOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdG9kYXlCdXR0b25TdHlsZUNsYXNzOiBzdHJpbmcgPSAncC1idXR0b24tdGV4dCc7XG5cbiAgICBASW5wdXQoKSBjbGVhckJ1dHRvblN0eWxlQ2xhc3M6IHN0cmluZyA9ICdwLWJ1dHRvbi10ZXh0JztcblxuICAgIEBJbnB1dCgpIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkga2VlcEludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZGVPbkRhdGVUaW1lU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIG51bWJlck9mTW9udGhzOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgdmlldzogc3RyaW5nID0gJ2RhdGUnO1xuXG4gICAgQElucHV0KCkgdG91Y2hVSTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRpbWVTZXBhcmF0b3I6IHN0cmluZyA9IFwiOlwiO1xuXG4gICAgQElucHV0KCkgZm9jdXNUcmFwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbklucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblRvZGF5Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xlYXJDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Nb250aENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25ZZWFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrT3V0c2lkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRmaWVsZCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dGZpZWxkVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudFdyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IGNvbnRlbnQgKGNvbnRlbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Vmlld0NoaWxkID0gY29udGVudDtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50Vmlld0NoaWxkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc01vbnRoTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKSA9PiB0aGlzLnVwZGF0ZUZvY3VzKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb250aE5hdmlnYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGb2N1c2FibGVDZWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29udGVudFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBkYXRlczogYW55W107XG5cbiAgICBtb250aHM6IGFueVtdO1xuXG4gICAgbW9udGhQaWNrZXJWYWx1ZXM6IGFueVtdO1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdO1xuXG4gICAgY3VycmVudE1vbnRoOiBudW1iZXI7XG5cbiAgICBjdXJyZW50WWVhcjogbnVtYmVyO1xuXG4gICAgY3VycmVudEhvdXI6IG51bWJlcjtcblxuICAgIGN1cnJlbnRNaW51dGU6IG51bWJlcjtcblxuICAgIGN1cnJlbnRTZWNvbmQ6IG51bWJlcjtcblxuICAgIHBtOiBib29sZWFuO1xuXG4gICAgbWFzazogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBvdmVybGF5OiBIVE1MRGl2RWxlbWVudDtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgY2FsZW5kYXJFbGVtZW50OiBhbnk7XG5cbiAgICB0aW1lUGlja2VyVGltZXI6YW55O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBhbmltYXRpb25FbmRMaXN0ZW5lcjogYW55O1xuXG4gICAgdGlja3NUbzE5NzA6IG51bWJlcjtcblxuICAgIHllYXJPcHRpb25zOiBudW1iZXJbXTtcblxuICAgIGZvY3VzOiBib29sZWFuO1xuXG4gICAgaXNLZXlkb3duOiBib29sZWFuO1xuXG4gICAgZmlsbGVkOiBib29sZWFuO1xuXG4gICAgaW5wdXRGaWVsZFZhbHVlOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgX21pbkRhdGU6IERhdGU7XG5cbiAgICBfbWF4RGF0ZTogRGF0ZTtcblxuICAgIF9zaG93VGltZTogYm9vbGVhbjtcblxuICAgIF95ZWFyUmFuZ2U6IHN0cmluZztcblxuICAgIHByZXZlbnREb2N1bWVudExpc3RlbmVyOiBib29sZWFuO1xuXG4gICAgZGF0ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGRpc2FibGVkRGF0ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgX2Rpc2FibGVkRGF0ZXM6IEFycmF5PERhdGU+O1xuXG4gICAgX2Rpc2FibGVkRGF5czogQXJyYXk8bnVtYmVyPjtcblxuICAgIHNlbGVjdEVsZW1lbnQ6IGFueTtcblxuICAgIHRvZGF5RWxlbWVudDogYW55O1xuXG4gICAgZm9jdXNFbGVtZW50OiBhbnk7XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBhbnk7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBuYXZpZ2F0aW9uU3RhdGU6IGFueSA9IG51bGw7XG5cbiAgICBpc01vbnRoTmF2aWdhdGU6IGJvb2xlYW47XG5cbiAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBfbG9jYWxlOiBMb2NhbGVTZXR0aW5ncztcblxuICAgIEBJbnB1dCgpIGdldCBkZWZhdWx0RGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHREYXRlO1xuICAgIH07XG5cbiAgICBzZXQgZGVmYXVsdERhdGUoZGVmYXVsdERhdGU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdERhdGUgPSBkZWZhdWx0RGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGRlZmF1bHREYXRlfHxuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgdGhpcy5pbml0VGltZShkYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9udGhzKHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLmN1cnJlbnRZZWFyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9kZWZhdWx0RGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpIGdldCBtaW5EYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgICB9XG5cbiAgICBzZXQgbWluRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX21pbkRhdGUgPSBkYXRlO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCAhPSB1bmRlZmluZWQgJiYgdGhpcy5jdXJyZW50TW9udGggIT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRZZWFyKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gICAgfVxuXG4gICAgc2V0IG1heERhdGUoZGF0ZTogRGF0ZSkge1xuICAgICAgICB0aGlzLl9tYXhEYXRlID0gZGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TW9udGggIT0gdW5kZWZpbmVkICYmIHRoaXMuY3VycmVudE1vbnRoICE9IG51bGwgICYmIHRoaXMuY3VycmVudFllYXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9udGhzKHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLmN1cnJlbnRZZWFyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZERhdGVzKGRpc2FibGVkRGF0ZXM6IERhdGVbXSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZERhdGVzID0gZGlzYWJsZWREYXRlcztcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnRNb250aCAhPSBudWxsICAmJiB0aGlzLmN1cnJlbnRZZWFyKSB7XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9udGhzKHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLmN1cnJlbnRZZWFyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZERheXMoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXlzO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZERheXMoZGlzYWJsZWREYXlzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZERheXMgPSBkaXNhYmxlZERheXM7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoICE9IHVuZGVmaW5lZCAmJiB0aGlzLmN1cnJlbnRNb250aCAhPSBudWxsICAmJiB0aGlzLmN1cnJlbnRZZWFyKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgeWVhclJhbmdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl95ZWFyUmFuZ2U7XG4gICAgfVxuXG4gICAgc2V0IHllYXJSYW5nZSh5ZWFyUmFuZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLl95ZWFyUmFuZ2UgPSB5ZWFyUmFuZ2U7XG5cbiAgICAgICAgaWYgKHllYXJSYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgeWVhcnMgPSB5ZWFyUmFuZ2Uuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGNvbnN0IHllYXJTdGFydCA9IHBhcnNlSW50KHllYXJzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHllYXJFbmQgPSBwYXJzZUludCh5ZWFyc1sxXSk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVZZWFyT3B0aW9ucyh5ZWFyU3RhcnQsIHllYXJFbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHNob3dUaW1lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd1RpbWU7XG4gICAgfVxuXG4gICAgc2V0IHNob3dUaW1lKHNob3dUaW1lOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dUaW1lID0gc2hvd1RpbWU7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEhvdXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0VGltZSh0aGlzLnZhbHVlfHxuZXcgRGF0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0ZmllbGQoKTtcbiAgICB9XG5cbiAgICBnZXQgbG9jYWxlKCkge1xuICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbG9jYWxlKG5ld0xvY2FsZTogTG9jYWxlU2V0dGluZ3MpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiTG9jYWxlIHByb3BlcnR5IGhhcyBubyBlZmZlY3QsIHVzZSBuZXcgaTE4biBBUEkgaW5zdGVhZC5cIik7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgY29uZmlnOiBQcmltZU5HQ29uZmlnLCBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRlZmF1bHREYXRlfHxuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3ID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlV2Vla0RheXMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdFRpbWUoZGF0ZSk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgICAgICAgICB0aGlzLnRpY2tzVG8xOTcwID0gKCgoMTk3MCAtIDEpICogMzY1ICsgTWF0aC5mbG9vcigxOTcwIC8gNCkgLSBNYXRoLmZsb29yKDE5NzAgLyAxMDApICsgTWF0aC5mbG9vcigxOTcwIC8gNDAwKSkgKiAyNCAqIDYwICogNjAgKiAxMDAwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRoUGlja2VyVmFsdWVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5jb25maWcudHJhbnNsYXRpb25PYnNlcnZlci5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVXZWVrRGF5cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzYWJsZWREYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZERhdGVUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRUcmFuc2xhdGlvbihvcHRpb246IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24ob3B0aW9uKTtcbiAgICB9XG5cbiAgICBwb3B1bGF0ZVllYXJPcHRpb25zKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgdGhpcy55ZWFyT3B0aW9ucyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgdGhpcy55ZWFyT3B0aW9ucy5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlV2Vla0RheXMoKSB7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSBbXTtcbiAgICAgICAgbGV0IGRheUluZGV4ID0gdGhpcy5maXJzdERheU9mV2VlaztcbiAgICAgICAgbGV0IGRheUxhYmVscyA9IHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkRBWV9OQU1FU19NSU4pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53ZWVrRGF5cy5wdXNoKGRheUxhYmVsc1tkYXlJbmRleF0pO1xuICAgICAgICAgICAgZGF5SW5kZXggPSAoZGF5SW5kZXggPT0gNikgPyAwIDogKytkYXlJbmRleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZU1vbnRoUGlja2VyVmFsdWVzKCkge1xuICAgICAgICB0aGlzLm1vbnRoUGlja2VyVmFsdWVzID0gW107XG4gICAgICAgIGxldCBtb250aExhYmVscyA9IHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLk1PTlRIX05BTUVTX1NIT1JUKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5tb250aFBpY2tlclZhbHVlcy5wdXNoKG1vbnRoTGFiZWxzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZU1vbnRocyhtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5tb250aHMgPSB0aGlzLm1vbnRocyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMCA7IGkgPCB0aGlzLm51bWJlck9mTW9udGhzOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtID0gbW9udGggKyBpO1xuICAgICAgICAgICAgbGV0IHkgPSB5ZWFyO1xuICAgICAgICAgICAgaWYgKG0gPiAxMSkge1xuICAgICAgICAgICAgICAgIG0gPSBtICUgMTEgLSAxO1xuICAgICAgICAgICAgICAgIHkgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tb250aHMucHVzaCh0aGlzLmNyZWF0ZU1vbnRoKG0sIHkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFdlZWtOdW1iZXIoZGF0ZTogRGF0ZSkge1xuICAgICAgICBsZXQgY2hlY2tEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuXHRcdGNoZWNrRGF0ZS5zZXREYXRlKGNoZWNrRGF0ZS5nZXREYXRlKCkgKyA0IC0gKCBjaGVja0RhdGUuZ2V0RGF5KCkgfHwgNyApKTtcblx0XHRsZXQgdGltZSA9IGNoZWNrRGF0ZS5nZXRUaW1lKCk7XG5cdFx0Y2hlY2tEYXRlLnNldE1vbnRoKCAwICk7XG5cdFx0Y2hlY2tEYXRlLnNldERhdGUoIDEgKTtcblx0XHRyZXR1cm4gTWF0aC5mbG9vciggTWF0aC5yb3VuZCgodGltZSAtIGNoZWNrRGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKSAvIDcgKSArIDE7XG4gICAgfVxuXG4gICAgY3JlYXRlTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIGxldCBkYXRlcyA9IFtdO1xuICAgICAgICBsZXQgZmlyc3REYXkgPSB0aGlzLmdldEZpcnN0RGF5T2ZNb250aEluZGV4KG1vbnRoLCB5ZWFyKTtcbiAgICAgICAgbGV0IGRheXNMZW5ndGggPSB0aGlzLmdldERheXNDb3VudEluTW9udGgobW9udGgsIHllYXIpO1xuICAgICAgICBsZXQgcHJldk1vbnRoRGF5c0xlbmd0aCA9IHRoaXMuZ2V0RGF5c0NvdW50SW5QcmV2TW9udGgobW9udGgsIHllYXIpO1xuICAgICAgICBsZXQgZGF5Tm8gPSAxO1xuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBsZXQgd2Vla051bWJlcnMgPSBbXTtcbiAgICAgICAgbGV0IG1vbnRoUm93cyA9IE1hdGguY2VpbCgoZGF5c0xlbmd0aCArIGZpcnN0RGF5KSAvIDcpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9udGhSb3dzOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB3ZWVrID0gW107XG5cbiAgICAgICAgICAgIGlmIChpID09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gKHByZXZNb250aERheXNMZW5ndGggLSBmaXJzdERheSArIDEpOyBqIDw9IHByZXZNb250aERheXNMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuZ2V0UHJldmlvdXNNb250aEFuZFllYXIobW9udGgsIHllYXIpO1xuICAgICAgICAgICAgICAgICAgICB3ZWVrLnB1c2goe2RheTogaiwgbW9udGg6IHByZXYubW9udGgsIHllYXI6IHByZXYueWVhciwgb3RoZXJNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheTogdGhpcy5pc1RvZGF5KHRvZGF5LCBqLCBwcmV2Lm1vbnRoLCBwcmV2LnllYXIpLCBzZWxlY3RhYmxlOiB0aGlzLmlzU2VsZWN0YWJsZShqLCBwcmV2Lm1vbnRoLCBwcmV2LnllYXIsIHRydWUpfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHJlbWFpbmluZ0RheXNMZW5ndGggPSA3IC0gd2Vlay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZW1haW5pbmdEYXlzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vlay5wdXNoKHtkYXk6IGRheU5vLCBtb250aDogbW9udGgsIHllYXI6IHllYXIsIHRvZGF5OiB0aGlzLmlzVG9kYXkodG9kYXksIGRheU5vLCBtb250aCwgeWVhciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZTogdGhpcy5pc1NlbGVjdGFibGUoZGF5Tm8sIG1vbnRoLCB5ZWFyLCBmYWxzZSl9KTtcbiAgICAgICAgICAgICAgICAgICAgZGF5Tm8rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF5Tm8gPiBkYXlzTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMuZ2V0TmV4dE1vbnRoQW5kWWVhcihtb250aCwgeWVhcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWVrLnB1c2goe2RheTogZGF5Tm8gLSBkYXlzTGVuZ3RoLCBtb250aDogbmV4dC5tb250aCwgeWVhcjogbmV4dC55ZWFyLCBvdGhlck1vbnRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXk6IHRoaXMuaXNUb2RheSh0b2RheSwgZGF5Tm8gLSBkYXlzTGVuZ3RoLCBuZXh0Lm1vbnRoLCBuZXh0LnllYXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZTogdGhpcy5pc1NlbGVjdGFibGUoKGRheU5vIC0gZGF5c0xlbmd0aCksIG5leHQubW9udGgsIG5leHQueWVhciwgdHJ1ZSl9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlZWsucHVzaCh7ZGF5OiBkYXlObywgbW9udGg6IG1vbnRoLCB5ZWFyOiB5ZWFyLCB0b2RheTogdGhpcy5pc1RvZGF5KHRvZGF5LCBkYXlObywgbW9udGgsIHllYXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU6IHRoaXMuaXNTZWxlY3RhYmxlKGRheU5vLCBtb250aCwgeWVhciwgZmFsc2UpfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXlObysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1dlZWspIHtcbiAgICAgICAgICAgICAgICB3ZWVrTnVtYmVycy5wdXNoKHRoaXMuZ2V0V2Vla051bWJlcihuZXcgRGF0ZSh3ZWVrWzBdLnllYXIsIHdlZWtbMF0ubW9udGgsIHdlZWtbMF0uZGF5KSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlcy5wdXNoKHdlZWspO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vbnRoOiBtb250aCxcbiAgICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgICBkYXRlczogZGF0ZXMsXG4gICAgICAgICAgICB3ZWVrTnVtYmVyczogd2Vla051bWJlcnNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbml0VGltZShkYXRlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMucG0gPSBkYXRlLmdldEhvdXJzKCkgPiAxMTtcblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWludXRlID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWNvbmQgPSBkYXRlLmdldFNlY29uZHMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudEhvdXJQTShkYXRlLmdldEhvdXJzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudGltZU9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pbnV0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3VyID0gMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlY29uZCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNNb250aE5hdmlnYXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICB0aGlzLmRlY3JlbWVudFllYXIoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGb2N1cygpO1xuICAgICAgICAgICAgfSwxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZW1lbnRZZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aC0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW9udGhDaGFuZ2UuZW1pdCh7IG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aCArIDEsIHllYXI6IHRoaXMuY3VycmVudFllYXIgfSk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc01vbnRoTmF2aWdhdGUgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50WWVhcigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzKCk7XG4gICAgICAgICAgICB9LDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAxMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudFllYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoKys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Nb250aENoYW5nZS5lbWl0KHttb250aDogdGhpcy5jdXJyZW50TW9udGggKyAxLCB5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyfSk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWNyZW1lbnRZZWFyKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyLS07XG5cbiAgICAgICAgaWYgKHRoaXMueWVhck5hdmlnYXRvciAmJiB0aGlzLmN1cnJlbnRZZWFyIDwgdGhpcy55ZWFyT3B0aW9uc1swXSkge1xuICAgICAgICAgICAgbGV0IGRpZmZlcmVuY2UgPSB0aGlzLnllYXJPcHRpb25zW3RoaXMueWVhck9wdGlvbnMubGVuZ3RoIC0gMV0gLSB0aGlzLnllYXJPcHRpb25zWzBdO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZVllYXJPcHRpb25zKHRoaXMueWVhck9wdGlvbnNbMF0gLSBkaWZmZXJlbmNlLCB0aGlzLnllYXJPcHRpb25zW3RoaXMueWVhck9wdGlvbnMubGVuZ3RoIC0gMV0gLSBkaWZmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluY3JlbWVudFllYXIoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFllYXIrKztcblxuICAgICAgICBpZiAodGhpcy55ZWFyTmF2aWdhdG9yICYmIHRoaXMuY3VycmVudFllYXIgPiB0aGlzLnllYXJPcHRpb25zW3RoaXMueWVhck9wdGlvbnMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgIGxldCBkaWZmZXJlbmNlID0gdGhpcy55ZWFyT3B0aW9uc1t0aGlzLnllYXJPcHRpb25zLmxlbmd0aCAtIDFdIC0gdGhpcy55ZWFyT3B0aW9uc1swXTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVZZWFyT3B0aW9ucyh0aGlzLnllYXJPcHRpb25zWzBdICsgZGlmZmVyZW5jZSwgdGhpcy55ZWFyT3B0aW9uc1t0aGlzLnllYXJPcHRpb25zLmxlbmd0aCAtIDFdICsgZGlmZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRhdGVTZWxlY3QoZXZlbnQsIGRhdGVNZXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICFkYXRlTWV0YS5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbigpICYmIHRoaXMuaXNTZWxlY3RlZChkYXRlTWV0YSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigoZGF0ZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0RhdGVFcXVhbHMoZGF0ZSwgZGF0ZU1ldGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRTZWxlY3REYXRlKGRhdGVNZXRhKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZShkYXRlTWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbigpICYmIHRoaXMuaGlkZU9uRGF0ZVRpbWVTZWxlY3QpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dGZpZWxkKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgc2hvdWxkU2VsZWN0RGF0ZShkYXRlTWV0YSkge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uKCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhEYXRlQ291bnQgIT0gbnVsbCA/wqB0aGlzLm1heERhdGVDb3VudCA+ICh0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5sZW5ndGggOiAwKSA6IHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG9uTW9udGhTZWxlY3QoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICghRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC50YXJnZXQsICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgIHRoaXMub25EYXRlU2VsZWN0KGV2ZW50LCB7eWVhcjogdGhpcy5jdXJyZW50WWVhciwgbW9udGg6IGluZGV4LCBkYXk6IDEsIHNlbGVjdGFibGU6IHRydWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUlucHV0ZmllbGQoKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVBc1N0cmluZyA9IHRoaXMuZm9ybWF0RGF0ZVRpbWUodGhpcy52YWx1ZVtpXSk7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlICs9IGRhdGVBc1N0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09ICh0aGlzLnZhbHVlLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSArPSB0aGlzLm11bHRpcGxlU2VwYXJhdG9yKycgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNSYW5nZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0RGF0ZSA9IHRoaXMudmFsdWVbMF07XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbmREYXRlID0gdGhpcy52YWx1ZVsxXTtcblxuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZVRpbWUoc3RhcnREYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlICs9ICcgJyt0aGlzLnJhbmdlU2VwYXJhdG9yICsnICcgKyB0aGlzLmZvcm1hdERhdGVUaW1lKGVuZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dGZpZWxkVmlld0NoaWxkICYmIHRoaXMuaW5wdXRmaWVsZFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXRGaWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZVRpbWUoZGF0ZSkge1xuICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBudWxsO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGltZU9ubHkpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0VGltZShkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXREYXRlKGRhdGUsIHRoaXMuZ2V0RGF0ZUZvcm1hdCgpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSArPSAnICcgKyB0aGlzLmZvcm1hdFRpbWUoZGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRIb3VyUE0oaG91cnM6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5ob3VyRm9ybWF0ID09ICcxMicpIHtcbiAgICAgICAgICAgIHRoaXMucG0gPSBob3VycyA+IDExO1xuICAgICAgICAgICAgaWYgKGhvdXJzID49IDEyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SG91ciA9IChob3VycyA9PSAxMikgPyAxMiA6IGhvdXJzIC0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3VyID0gKGhvdXJzID09IDApID8gMTIgOiBob3VycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEhvdXIgPSBob3VycztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdERhdGUoZGF0ZU1ldGEpIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlTWV0YS55ZWFyLCBkYXRlTWV0YS5tb250aCwgZGF0ZU1ldGEuZGF5KTtcblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMTInKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEhvdXIgPT09IDEyKVxuICAgICAgICAgICAgICAgICAgICBkYXRlLnNldEhvdXJzKHRoaXMucG0gPyAxMiA6IDApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5zZXRIb3Vycyh0aGlzLnBtID8gdGhpcy5jdXJyZW50SG91ciArIDEyIDogdGhpcy5jdXJyZW50SG91cik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRlLnNldEhvdXJzKHRoaXMuY3VycmVudEhvdXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlLnNldE1pbnV0ZXModGhpcy5jdXJyZW50TWludXRlKTtcbiAgICAgICAgICAgIGRhdGUuc2V0U2Vjb25kcyh0aGlzLmN1cnJlbnRTZWNvbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiB0aGlzLm1pbkRhdGUgPiBkYXRlKSB7XG4gICAgICAgICAgICBkYXRlID0gdGhpcy5taW5EYXRlO1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50SG91clBNKGRhdGUuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlY29uZCA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiB0aGlzLm1heERhdGUgPCBkYXRlKSB7XG4gICAgICAgICAgICBkYXRlID0gdGhpcy5tYXhEYXRlO1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50SG91clBNKGRhdGUuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaW51dGUgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlY29uZCA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChkYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLnZhbHVlID8gWy4uLnRoaXMudmFsdWUsIGRhdGVdIDogW2RhdGVdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmlzUmFuZ2VTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnREYXRlID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgICAgICAgICBsZXQgZW5kRGF0ZSA9IHRoaXMudmFsdWVbMV07XG5cbiAgICAgICAgICAgICAgICBpZiAoIWVuZERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnREYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gZGF0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IGRhdGU7XG4gICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoW3N0YXJ0RGF0ZSwgZW5kRGF0ZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChbZGF0ZSwgbnVsbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGRhdGUpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5kYXRhVHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFUeXBlID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuZm9ybWF0RGF0ZVRpbWUodGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHN0cmluZ0FyclZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdBcnJWYWx1ZSA9IHRoaXMudmFsdWUubWFwKGRhdGUgPT4gdGhpcy5mb3JtYXREYXRlVGltZShkYXRlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShzdHJpbmdBcnJWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaXJzdERheU9mTW9udGhJbmRleChtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGRheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGRheS5zZXREYXRlKDEpO1xuICAgICAgICBkYXkuc2V0TW9udGgobW9udGgpO1xuICAgICAgICBkYXkuc2V0RnVsbFllYXIoeWVhcik7XG5cbiAgICAgICAgbGV0IGRheUluZGV4ID0gZGF5LmdldERheSgpICsgdGhpcy5nZXRTdW5kYXlJbmRleCgpO1xuICAgICAgICByZXR1cm4gZGF5SW5kZXggPj0gNyA/IGRheUluZGV4IC0gNyA6IGRheUluZGV4O1xuICAgIH1cblxuICAgIGdldERheXNDb3VudEluTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiAzMiAtIHRoaXMuZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoeWVhciwgbW9udGgsIDMyKSkuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGdldERheXNDb3VudEluUHJldk1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICAgICAgICBsZXQgcHJldiA9IHRoaXMuZ2V0UHJldmlvdXNNb250aEFuZFllYXIobW9udGgsIHllYXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXlzQ291bnRJbk1vbnRoKHByZXYubW9udGgsIHByZXYueWVhcik7XG4gICAgfVxuXG4gICAgZ2V0UHJldmlvdXNNb250aEFuZFllYXIobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIGxldCBtLCB5O1xuXG4gICAgICAgIGlmIChtb250aCA9PT0gMCkge1xuICAgICAgICAgICAgbSA9IDExO1xuICAgICAgICAgICAgeSA9IHllYXIgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbSA9IG1vbnRoIC0gMTtcbiAgICAgICAgICAgIHkgPSB5ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsnbW9udGgnOm0sJ3llYXInOnl9O1xuICAgIH1cblxuICAgIGdldE5leHRNb250aEFuZFllYXIobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIGxldCBtLCB5O1xuXG4gICAgICAgIGlmIChtb250aCA9PT0gMTEpIHtcbiAgICAgICAgICAgIG0gPSAwO1xuICAgICAgICAgICAgeSA9IHllYXIgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbSA9IG1vbnRoICsgMTtcbiAgICAgICAgICAgIHkgPSB5ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsnbW9udGgnOm0sJ3llYXInOnl9O1xuICAgIH1cblxuICAgIGdldFN1bmRheUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdERheU9mV2VlayA+IDAgPyA3IC0gdGhpcy5maXJzdERheU9mV2VlayA6IDA7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlTWV0YSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRGF0ZUVxdWFscyh0aGlzLnZhbHVlLCBkYXRlTWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGRhdGUgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRoaXMuaXNEYXRlRXF1YWxzKGRhdGUsIGRhdGVNZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNSYW5nZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRGF0ZUVxdWFscyh0aGlzLnZhbHVlWzBdLCBkYXRlTWV0YSkgfHwgdGhpcy5pc0RhdGVFcXVhbHModGhpcy52YWx1ZVsxXSwgZGF0ZU1ldGEpIHx8IHRoaXMuaXNEYXRlQmV0d2Vlbih0aGlzLnZhbHVlWzBdLCB0aGlzLnZhbHVlWzFdLCBkYXRlTWV0YSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0RhdGVFcXVhbHModGhpcy52YWx1ZVswXSwgZGF0ZU1ldGEpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc01vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZGF5ID0gdGhpcy52YWx1ZSA/IChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZVswXS5nZXREYXRlKCkgOiB0aGlzLnZhbHVlLmdldERhdGUoKSkgOiAxO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGVkKHt5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyLCBtb250aDogbW9udGgsIGRheTogZGF5LCBzZWxlY3RhYmxlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaXNEYXRlRXF1YWxzKHZhbHVlLCBkYXRlTWV0YSkge1xuICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuZ2V0RGF0ZSgpID09PSBkYXRlTWV0YS5kYXkgJiYgdmFsdWUuZ2V0TW9udGgoKSA9PT0gZGF0ZU1ldGEubW9udGggJiYgdmFsdWUuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZU1ldGEueWVhcjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRGF0ZUJldHdlZW4oc3RhcnQsIGVuZCwgZGF0ZU1ldGEpIHtcbiAgICAgICAgbGV0IGJldHdlZW4gOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgIGxldCBkYXRlOiBEYXRlID0gbmV3IERhdGUoZGF0ZU1ldGEueWVhciwgZGF0ZU1ldGEubW9udGgsIGRhdGVNZXRhLmRheSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhcnQuZ2V0VGltZSgpIDw9IGRhdGUuZ2V0VGltZSgpICYmIGVuZC5nZXRUaW1lKCkgPj0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmV0d2VlbjtcbiAgICB9XG5cbiAgICBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgaXNSYW5nZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3JhbmdlJztcbiAgICB9XG5cbiAgICBpc011bHRpcGxlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnO1xuICAgIH1cblxuICAgIGlzVG9kYXkodG9kYXksIGRheSwgbW9udGgsIHllYXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRvZGF5LmdldERhdGUoKSA9PT0gZGF5ICYmIHRvZGF5LmdldE1vbnRoKCkgPT09IG1vbnRoICYmIHRvZGF5LmdldEZ1bGxZZWFyKCkgPT09IHllYXI7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RhYmxlKGRheSwgbW9udGgsIHllYXIsIG90aGVyTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHZhbGlkTWluID0gdHJ1ZTtcbiAgICAgICAgbGV0IHZhbGlkTWF4ID0gdHJ1ZTtcbiAgICAgICAgbGV0IHZhbGlkRGF0ZSA9IHRydWU7XG4gICAgICAgIGxldCB2YWxpZERheSA9IHRydWU7XG5cbiAgICAgICAgaWYgKG90aGVyTW9udGggJiYgIXRoaXMuc2VsZWN0T3RoZXJNb250aHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICAgICBpZiAodGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgPiB5ZWFyKSB7XG4gICAgICAgICAgICAgICAgIHZhbGlkTWluID0gZmFsc2U7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWluRGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyKSB7XG4gICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUuZ2V0TW9udGgoKSA+IG1vbnRoKSB7XG4gICAgICAgICAgICAgICAgICAgICB2YWxpZE1pbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWluRGF0ZS5nZXRNb250aCgpID09PSBtb250aCkge1xuICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWluRGF0ZS5nZXREYXRlKCkgPiBkYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZE1pbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgICAgICAgIGlmICh0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKSA8IHllYXIpIHtcbiAgICAgICAgICAgICAgICAgdmFsaWRNYXggPSBmYWxzZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIpIHtcbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZS5nZXRNb250aCgpIDwgbW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgIHZhbGlkTWF4ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXhEYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoKSB7XG4gICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXhEYXRlLmdldERhdGUoKSA8IGRheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkTWF4ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzKSB7XG4gICAgICAgICAgIHZhbGlkRGF0ZSA9ICF0aGlzLmlzRGF0ZURpc2FibGVkKGRheSxtb250aCx5ZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkRGF5cykge1xuICAgICAgICAgICB2YWxpZERheSA9ICF0aGlzLmlzRGF5RGlzYWJsZWQoZGF5LG1vbnRoLHllYXIpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRNaW4gJiYgdmFsaWRNYXggJiYgdmFsaWREYXRlICYmIHZhbGlkRGF5O1xuICAgIH1cblxuICAgIGlzRGF0ZURpc2FibGVkKGRheTpudW1iZXIsIG1vbnRoOm51bWJlciwgeWVhcjpudW1iZXIpOmJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkaXNhYmxlZERhdGUgb2YgdGhpcy5kaXNhYmxlZERhdGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkRGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRpc2FibGVkRGF0ZS5nZXRNb250aCgpID09PSBtb250aCAmJiBkaXNhYmxlZERhdGUuZ2V0RGF0ZSgpID09PSBkYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRGF5RGlzYWJsZWQoZGF5Om51bWJlciwgbW9udGg6bnVtYmVyLCB5ZWFyOm51bWJlcik6Ym9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkRGF5cykge1xuICAgICAgICAgICAgbGV0IHdlZWtkYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgICAgICAgIGxldCB3ZWVrZGF5TnVtYmVyID0gd2Vla2RheS5nZXREYXkoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF5cy5pbmRleE9mKHdlZWtkYXlOdW1iZXIpICE9PSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd09uRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dENsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5zaG93T25Gb2N1cyAmJiAhdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgICAgIGlmICghdGhpcy5rZWVwSW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dGZpZWxkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2soZXZlbnQsIGlucHV0ZmllbGQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICBpbnB1dGZpZWxkLmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUHJldkJ1dHRvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiB0cnVlLCBidXR0b246IHRydWV9O1xuICAgICAgICB0aGlzLm5hdkJhY2t3YXJkKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5leHRCdXR0b25DbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TdGF0ZSA9IHtiYWNrd2FyZDogZmFsc2UsIGJ1dHRvbjogdHJ1ZX07XG4gICAgICAgIHRoaXMubmF2Rm9yd2FyZChldmVudCk7XG4gICAgfVxuXG4gICAgb25Db250YWluZXJCdXR0b25LZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgICAgICAgLy90YWJcbiAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFwRm9jdXMoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgLy9lc2NhcGVcbiAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAvL05vb3BcbiAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgIH1cblxuICAgIG9uSW5wdXRLZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNLZXlkb3duID0gdHJ1ZTtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDQwICYmIHRoaXMuY29udGVudFZpZXdDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXMoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDkgJiYgdGhpcy5jb250ZW50Vmlld0NoaWxkKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS5mb3JFYWNoKGVsID0+IGVsLnRhYkluZGV4ID0gJy0xJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGF0ZUNlbGxLZXlkb3duKGV2ZW50LCBkYXRlLCBncm91cEluZGV4KSB7XG4gICAgICAgIGNvbnN0IGNlbGxDb250ZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxDb250ZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy9kb3duIGFycm93XG4gICAgICAgICAgICBjYXNlIDQwOiB7XG4gICAgICAgICAgICAgICAgY2VsbENvbnRlbnQudGFiSW5kZXggPSAnLTEnO1xuICAgICAgICAgICAgICAgIGxldCBjZWxsSW5kZXggPSBEb21IYW5kbGVyLmluZGV4KGNlbGwpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0Um93ID0gY2VsbC5wYXJlbnRFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAobmV4dFJvdykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNDZWxsID0gbmV4dFJvdy5jaGlsZHJlbltjZWxsSW5kZXhdLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhmb2N1c0NlbGwsICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiBmYWxzZX07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdkZvcndhcmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFJvdy5jaGlsZHJlbltjZWxsSW5kZXhdLmNoaWxkcmVuWzBdLnRhYkluZGV4ID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFJvdy5jaGlsZHJlbltjZWxsSW5kZXhdLmNoaWxkcmVuWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiBmYWxzZX07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Rm9yd2FyZChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vdXAgYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzg6IHtcbiAgICAgICAgICAgICAgICBjZWxsQ29udGVudC50YWJJbmRleCA9ICctMSc7XG4gICAgICAgICAgICAgICAgbGV0IGNlbGxJbmRleCA9IERvbUhhbmRsZXIuaW5kZXgoY2VsbCk7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZSb3cgPSBjZWxsLnBhcmVudEVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAocHJldlJvdykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNDZWxsID0gcHJldlJvdy5jaGlsZHJlbltjZWxsSW5kZXhdLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhmb2N1c0NlbGwsICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiB0cnVlfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2QmFja3dhcmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNDZWxsLnRhYkluZGV4ID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiB0cnVlfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZCYWNrd2FyZChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vbGVmdCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzNzoge1xuICAgICAgICAgICAgICAgIGNlbGxDb250ZW50LnRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgICAgICAgICBsZXQgcHJldkNlbGwgPSBjZWxsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZDZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb2N1c0NlbGwgPSBwcmV2Q2VsbC5jaGlsZHJlblswXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MoZm9jdXNDZWxsLCAncC1kaXNhYmxlZCcpIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MoZm9jdXNDZWxsLnBhcmVudEVsZW1lbnQsICdwLWRhdGVwaWNrZXItd2Vla251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9Nb250aCh0cnVlLCBncm91cEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQ2VsbC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQ2VsbC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9Nb250aCh0cnVlLCBncm91cEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9yaWdodCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzOToge1xuICAgICAgICAgICAgICAgIGNlbGxDb250ZW50LnRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgICAgICAgICBsZXQgbmV4dENlbGwgPSBjZWxsLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzQ2VsbCA9IG5leHRDZWxsLmNoaWxkcmVuWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhmb2N1c0NlbGwsICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb01vbnRoKGZhbHNlLCBncm91cEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQ2VsbC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQ2VsbC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9Nb250aChmYWxzZSwgZ3JvdXBJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0ZVNlbGVjdChldmVudCwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9lc2NhcGVcbiAgICAgICAgICAgIGNhc2UgMjc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy90YWJcbiAgICAgICAgICAgIGNhc2UgOToge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFwRm9jdXMoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvL25vIG9wXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9udGhDZWxsS2V5ZG93bihldmVudCwgaW5kZXgpIHtcbiAgICAgICAgY29uc3QgY2VsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQud2hpY2gpIHtcbiAgICAgICAgICAgIC8vYXJyb3dzXG4gICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgY2FzZSA0MDoge1xuICAgICAgICAgICAgICAgIGNlbGwudGFiSW5kZXggPSAnLTEnO1xuICAgICAgICAgICAgICAgIHZhciBjZWxscyA9IGNlbGwucGFyZW50RWxlbWVudC5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB2YXIgY2VsbEluZGV4ID0gRG9tSGFuZGxlci5pbmRleChjZWxsKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dENlbGwgPSBjZWxsc1tldmVudC53aGljaCA9PT0gNDAgPyBjZWxsSW5kZXggKyAzIDogY2VsbEluZGV4IC0zXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dENlbGwudGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgIG5leHRDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vbGVmdCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzNzoge1xuICAgICAgICAgICAgICAgIGNlbGwudGFiSW5kZXggPSAnLTEnO1xuICAgICAgICAgICAgICAgIGxldCBwcmV2Q2VsbCA9IGNlbGwucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAocHJldkNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldkNlbGwudGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgIHByZXZDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vcmlnaHQgYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzk6IHtcbiAgICAgICAgICAgICAgICBjZWxsLnRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgICAgICAgICBsZXQgbmV4dENlbGwgPSBjZWxsLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dENlbGwudGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgIG5leHRDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9udGhTZWxlY3QoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2VzY2FwZVxuICAgICAgICAgICAgY2FzZSAyNzoge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL3RhYlxuICAgICAgICAgICAgY2FzZSA5OiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXBGb2N1cyhldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vbm8gb3BcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2aWdhdGVUb01vbnRoKHByZXYsIGdyb3VwSW5kZXgpIHtcbiAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlck9mTW9udGhzID09PSAxIHx8IChncm91cEluZGV4ID09PSAwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblN0YXRlID0ge2JhY2t3YXJkOiB0cnVlfTtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdkJhY2t3YXJkKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBwcmV2TW9udGhDb250YWluZXIgPSB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5jaGlsZHJlbltncm91cEluZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGNlbGxzID0gRG9tSGFuZGxlci5maW5kKHByZXZNb250aENvbnRhaW5lciwgJy5wLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgc3Bhbjpub3QoLnAtZGlzYWJsZWQpOm5vdCgucC1pbmspJyk7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzQ2VsbCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGZvY3VzQ2VsbC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgICAgICAgICBmb2N1c0NlbGwuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlck9mTW9udGhzID09PSAxIHx8IChncm91cEluZGV4ID09PSB0aGlzLm51bWJlck9mTW9udGhzIC0gMSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25TdGF0ZSA9IHtiYWNrd2FyZDogZmFsc2V9O1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Rm9yd2FyZChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dE1vbnRoQ29udGFpbmVyID0gdGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bZ3JvdXBJbmRleCArIDFdO1xuICAgICAgICAgICAgICAgIGxldCBmb2N1c0NlbGwgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUobmV4dE1vbnRoQ29udGFpbmVyLCAnLnAtZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCBzcGFuOm5vdCgucC1kaXNhYmxlZCk6bm90KC5wLWluayknKTtcbiAgICAgICAgICAgICAgICBmb2N1c0NlbGwudGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICAgICAgZm9jdXNDZWxsLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVGb2N1cygpIHtcbiAgICAgICAgbGV0IGNlbGw7XG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25TdGF0ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblN0YXRlLmJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZvY3VzYWJsZUNlbGwoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25TdGF0ZS5iYWNrd2FyZClcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnLnAtZGF0ZXBpY2tlci1wcmV2JykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJy5wLWRhdGVwaWNrZXItbmV4dCcpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU3RhdGUuYmFja3dhcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNlbGxzID0gRG9tSGFuZGxlci5maW5kKHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnLnAtZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCBzcGFuOm5vdCgucC1kaXNhYmxlZCk6bm90KC5wLWluayknKTtcbiAgICAgICAgICAgICAgICAgICAgY2VsbCA9IGNlbGxzW2NlbGxzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2VsbCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJy5wLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgc3Bhbjpub3QoLnAtZGlzYWJsZWQpOm5vdCgucC1pbmspJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2VsbC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgICAgICAgICAgICAgY2VsbC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU3RhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0Rm9jdXNhYmxlQ2VsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEZvY3VzYWJsZUNlbGwoKSB7XG4gICAgICAgIGxldCBjZWxsO1xuICAgICAgICBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICBsZXQgY2VsbHMgPSBEb21IYW5kbGVyLmZpbmQodGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICcucC1tb250aHBpY2tlciAucC1tb250aHBpY2tlci1tb250aDpub3QoLnAtZGlzYWJsZWQpJyk7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRDZWxsPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICcucC1tb250aHBpY2tlciAucC1tb250aHBpY2tlci1tb250aC5wLWhpZ2hsaWdodCcpO1xuICAgICAgICAgICAgY2VsbHMuZm9yRWFjaChjZWxsID0+IGNlbGwudGFiSW5kZXggPSAtMSk7XG4gICAgICAgICAgICBjZWxsID0gc2VsZWN0ZWRDZWxsIHx8IGNlbGxzWzBdO1xuXG4gICAgICAgICAgICBpZiAoY2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkQ2VsbHMgPSBEb21IYW5kbGVyLmZpbmQodGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICcucC1tb250aHBpY2tlciAucC1tb250aHBpY2tlci1tb250aC5wLWRpc2FibGVkW3RhYmluZGV4ID0gXCIwXCJdJyk7XG4gICAgICAgICAgICAgICAgZGlzYWJsZWRDZWxscy5mb3JFYWNoKGNlbGwgPT4gY2VsbC50YWJJbmRleCA9IC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNlbGwgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdzcGFuLnAtaGlnaGxpZ2h0Jyk7XG4gICAgICAgICAgICBpZiAoIWNlbGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgdG9kYXlDZWxsID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAndGQucC1kYXRlcGlja2VyLXRvZGF5IHNwYW46bm90KC5wLWRpc2FibGVkKTpub3QoLnAtaW5rKScpO1xuICAgICAgICAgICAgICAgIGlmICh0b2RheUNlbGwpXG4gICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0b2RheUNlbGw7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBjZWxsID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnLnAtZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCBzcGFuOm5vdCgucC1kaXNhYmxlZCk6bm90KC5wLWluayknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICBjZWxsLnRhYkluZGV4ID0gJzAnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhcEZvY3VzKGV2ZW50KSB7XG4gICAgICAgIGxldCBmb2N1c2FibGVFbGVtZW50cyA9IERvbUhhbmRsZXIuZ2V0Rm9jdXNhYmxlRWxlbWVudHModGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50cyAmJiBmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzYWJsZUVsZW1lbnRzWzBdLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9jdXNlZEluZGV4ID0gZm9jdXNhYmxlRWxlbWVudHMuaW5kZXhPZihmb2N1c2FibGVFbGVtZW50c1swXS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT0gLTEgfHwgZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c1RyYXApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb2N1c2VkSW5kZXggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT0gLTEgfHwgZm9jdXNlZEluZGV4ID09PSAoZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb2N1c1RyYXAgJiYgZm9jdXNlZEluZGV4ICE9IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uTW9udGhEcm9wZG93bkNoYW5nZShtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBwYXJzZUludChtKTtcbiAgICAgICAgdGhpcy5vbk1vbnRoQ2hhbmdlLmVtaXQoeyBtb250aDogdGhpcy5jdXJyZW50TW9udGggKyAxLCB5ZWFyOiB0aGlzLmN1cnJlbnRZZWFyIH0pO1xuICAgICAgICB0aGlzLmNyZWF0ZU1vbnRocyh0aGlzLmN1cnJlbnRNb250aCwgdGhpcy5jdXJyZW50WWVhcik7XG4gICAgfVxuXG4gICAgb25ZZWFyRHJvcGRvd25DaGFuZ2UoeTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFllYXIgPSBwYXJzZUludCh5KTtcbiAgICAgICAgdGhpcy5vblllYXJDaGFuZ2UuZW1pdCh7IG1vbnRoOiB0aGlzLmN1cnJlbnRNb250aCArIDEsIHllYXI6IHRoaXMuY3VycmVudFllYXIgfSk7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9udGhzKHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLmN1cnJlbnRZZWFyKTtcbiAgICB9XG5cbiAgICBjb252ZXJ0VG8yNEhvdXIgPSBmdW5jdGlvbiAoaG91cnM6IG51bWJlciwgcG06IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMTInKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChwbSA/IDEyIDogMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAocG0gPyBob3VycyArIDEyIDogaG91cnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBob3VycztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVRpbWUoaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlciwgc2Vjb25kOiBudW1iZXIsIHBtOiBib29sZWFuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEhvdXIgPSB0aGlzLmNvbnZlcnRUbzI0SG91cihob3VyLCBwbSk7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2VTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlWzFdIHx8IHRoaXMudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMudmFsdWVbdGhpcy52YWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZURhdGVTdHJpbmcgPSB2YWx1ZSA/IHZhbHVlLnRvRGF0ZVN0cmluZygpIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiB2YWx1ZURhdGVTdHJpbmcgJiYgdGhpcy5taW5EYXRlLnRvRGF0ZVN0cmluZygpID09PSB2YWx1ZURhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUuZ2V0SG91cnMoKSA+IGNvbnZlcnRlZEhvdXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5taW5EYXRlLmdldEhvdXJzKCkgPT09IGNvbnZlcnRlZEhvdXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5EYXRlLmdldE1pbnV0ZXMoKSA+IG1pbnV0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpID09PSBtaW51dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWluRGF0ZS5nZXRTZWNvbmRzKCkgPiBzZWNvbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tYXhEYXRlICYmIHZhbHVlRGF0ZVN0cmluZyAmJiB0aGlzLm1heERhdGUudG9EYXRlU3RyaW5nKCkgPT09IHZhbHVlRGF0ZVN0cmluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZS5nZXRIb3VycygpIDwgY29udmVydGVkSG91cikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1heERhdGUuZ2V0SG91cnMoKSA9PT0gY29udmVydGVkSG91cikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heERhdGUuZ2V0TWludXRlcygpIDwgbWludXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZS5nZXRNaW51dGVzKCkgPT09IG1pbnV0ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZS5nZXRTZWNvbmRzKCkgPCBzZWNvbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaW5jcmVtZW50SG91cihldmVudCkge1xuICAgICAgICBjb25zdCBwcmV2SG91ciA9IHRoaXMuY3VycmVudEhvdXI7XG4gICAgICAgIGxldCBuZXdIb3VyID0gdGhpcy5jdXJyZW50SG91ciArIHRoaXMuc3RlcEhvdXI7XG4gICAgICAgIGxldCBuZXdQTSA9IHRoaXMucG07XG5cbiAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMjQnKVxuICAgICAgICAgICAgbmV3SG91ciA9IChuZXdIb3VyID49IDI0KSA/IChuZXdIb3VyIC0gMjQpIDogbmV3SG91cjtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5ob3VyRm9ybWF0ID09ICcxMicpIHtcbiAgICAgICAgICAgIC8vIEJlZm9yZSB0aGUgQU0vUE0gYnJlYWssIG5vdyBhZnRlclxuICAgICAgICAgICAgaWYgKHByZXZIb3VyIDwgMTIgJiYgbmV3SG91ciA+IDExKSB7XG4gICAgICAgICAgICAgICAgbmV3UE09ICF0aGlzLnBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3SG91ciA9IChuZXdIb3VyID49IDEzKSA/IChuZXdIb3VyIC0gMTIpIDogbmV3SG91cjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlVGltZShuZXdIb3VyLCB0aGlzLmN1cnJlbnRNaW51dGUsIHRoaXMuY3VycmVudFNlY29uZCwgbmV3UE0pKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SG91ciA9IG5ld0hvdXI7XG4gICAgICAgICAgdGhpcy5wbSA9IG5ld1BNO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25UaW1lUGlja2VyRWxlbWVudE1vdXNlRG93bihldmVudDogRXZlbnQsIHR5cGU6IG51bWJlciwgZGlyZWN0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgdHlwZSwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRpbWVQaWNrZXJFbGVtZW50TW91c2VVcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZVBpY2tlclRpbWVyKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZVBpY2tlckVsZW1lbnRNb3VzZUxlYXZlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy50aW1lUGlja2VyVGltZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lUGlja2VyVGltZXIoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVwZWF0KGV2ZW50OiBFdmVudCwgaW50ZXJ2YWw6IG51bWJlciwgdHlwZTogbnVtYmVyLCBkaXJlY3Rpb246IG51bWJlcikge1xuICAgICAgICBsZXQgaSA9IGludGVydmFsfHw1MDA7XG5cbiAgICAgICAgdGhpcy5jbGVhclRpbWVQaWNrZXJUaW1lcigpO1xuICAgICAgICB0aGlzLnRpbWVQaWNrZXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIDEwMCwgdHlwZSwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0sIGkpO1xuXG4gICAgICAgIHN3aXRjaCh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnRIb3VyKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50SG91cihldmVudCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZW1lbnRTZWNvbmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNyZW1lbnRTZWNvbmQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0ZmllbGQoKTtcbiAgICB9XG5cbiAgICBjbGVhclRpbWVQaWNrZXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlclRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lUGlja2VyVGltZXIpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VyVGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVjcmVtZW50SG91cihldmVudCkge1xuICAgICAgICBsZXQgbmV3SG91ciA9IHRoaXMuY3VycmVudEhvdXIgLSB0aGlzLnN0ZXBIb3VyO1xuICAgICAgICBsZXQgbmV3UE0gPSB0aGlzLnBtXG5cbiAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMjQnKVxuICAgICAgICAgICAgbmV3SG91ciA9IChuZXdIb3VyIDwgMCkgPyAoMjQgKyBuZXdIb3VyKSA6IG5ld0hvdXI7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMTInKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGF0IG5vb24vbWlkbmlnaHQsIHRoZW4gc3dpdGNoXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBuZXdQTSA9ICF0aGlzLnBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3SG91ciA9IChuZXdIb3VyIDw9IDApID8gKDEyICsgbmV3SG91cikgOiBuZXdIb3VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVUaW1lKG5ld0hvdXIsIHRoaXMuY3VycmVudE1pbnV0ZSwgdGhpcy5jdXJyZW50U2Vjb25kLCBuZXdQTSkpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRIb3VyID0gbmV3SG91cjtcbiAgICAgICAgICB0aGlzLnBtID0gbmV3UE07XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGluY3JlbWVudE1pbnV0ZShldmVudCkge1xuICAgICAgICBsZXQgbmV3TWludXRlID0gdGhpcy5jdXJyZW50TWludXRlICsgdGhpcy5zdGVwTWludXRlO1xuICAgICAgICBuZXdNaW51dGUgPSAobmV3TWludXRlID4gNTkpID8gbmV3TWludXRlIC0gNjAgOiBuZXdNaW51dGU7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlVGltZSh0aGlzLmN1cnJlbnRIb3VyLCBuZXdNaW51dGUsIHRoaXMuY3VycmVudFNlY29uZCwgdGhpcy5wbSkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pbnV0ZSA9IG5ld01pbnV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZGVjcmVtZW50TWludXRlKGV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdNaW51dGUgPSB0aGlzLmN1cnJlbnRNaW51dGUgLSB0aGlzLnN0ZXBNaW51dGU7XG4gICAgICAgIG5ld01pbnV0ZSA9IChuZXdNaW51dGUgPCAwKSA/IDYwICsgbmV3TWludXRlIDogbmV3TWludXRlO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVRpbWUodGhpcy5jdXJyZW50SG91ciwgbmV3TWludXRlLCB0aGlzLmN1cnJlbnRTZWNvbmQsIHRoaXMucG0pKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaW51dGUgPSBuZXdNaW51dGU7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGluY3JlbWVudFNlY29uZChldmVudCkge1xuICAgICAgICBsZXQgbmV3U2Vjb25kID0gdGhpcy5jdXJyZW50U2Vjb25kICsgdGhpcy5zdGVwU2Vjb25kO1xuICAgICAgICBuZXdTZWNvbmQgPSAobmV3U2Vjb25kID4gNTkpID8gbmV3U2Vjb25kIC0gNjAgOiBuZXdTZWNvbmQ7XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlVGltZSh0aGlzLmN1cnJlbnRIb3VyLCB0aGlzLmN1cnJlbnRNaW51dGUsIG5ld1NlY29uZCwgdGhpcy5wbSkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNlY29uZCA9IG5ld1NlY29uZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZGVjcmVtZW50U2Vjb25kKGV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdTZWNvbmQgPSB0aGlzLmN1cnJlbnRTZWNvbmQgLSB0aGlzLnN0ZXBTZWNvbmQ7XG4gICAgICAgIG5ld1NlY29uZCA9IChuZXdTZWNvbmQgPCAwKSA/IDYwICsgbmV3U2Vjb25kIDogbmV3U2Vjb25kO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVRpbWUodGhpcy5jdXJyZW50SG91ciwgdGhpcy5jdXJyZW50TWludXRlLCBuZXdTZWNvbmQsIHRoaXMucG0pKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWNvbmQgPSBuZXdTZWNvbmQ7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRpbWUoKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmlzUmFuZ2VTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlWzFdIHx8IHRoaXMudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMudmFsdWVbdGhpcy52YWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSA6IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMTInKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SG91ciA9PT0gMTIpXG4gICAgICAgICAgICAgICAgdmFsdWUuc2V0SG91cnModGhpcy5wbSA/IDEyIDogMCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdmFsdWUuc2V0SG91cnModGhpcy5wbSA/IHRoaXMuY3VycmVudEhvdXIgKyAxMiA6IHRoaXMuY3VycmVudEhvdXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUuc2V0SG91cnModGhpcy5jdXJyZW50SG91cik7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZS5zZXRNaW51dGVzKHRoaXMuY3VycmVudE1pbnV0ZSk7XG4gICAgICAgIHZhbHVlLnNldFNlY29uZHModGhpcy5jdXJyZW50U2Vjb25kKTtcbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZVsxXSlcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFt0aGlzLnZhbHVlWzBdLCB2YWx1ZV07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWUsIG51bGxdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbigpKXtcbiAgICAgICAgICAgIHZhbHVlID0gWy4uLnRoaXMudmFsdWUuc2xpY2UoMCwgLTEpLCB2YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dGZpZWxkKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlQU1QTShldmVudCkge1xuICAgICAgICBjb25zdCBuZXdQTSA9ICF0aGlzLnBtO1xuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVRpbWUodGhpcy5jdXJyZW50SG91ciwgdGhpcy5jdXJyZW50TWludXRlLCB0aGlzLmN1cnJlbnRTZWNvbmQsIG5ld1BNKSkge1xuICAgICAgICAgIHRoaXMucG0gPSBuZXdQTTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVXNlcklucHV0KGV2ZW50KSB7XG4gICAgICAgIC8vIElFIDExIFdvcmthcm91bmQgZm9yIGlucHV0IHBsYWNlaG9sZGVyIDogaHR0cHM6Ly9naXRodWIuY29tL3ByaW1lZmFjZXMvcHJpbWVuZy9pc3N1ZXMvMjAyNlxuICAgICAgICBpZiAoIXRoaXMuaXNLZXlkb3duKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0tleWRvd24gPSBmYWxzZTtcblxuICAgICAgICBsZXQgdmFsID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wYXJzZVZhbHVlRnJvbVN0cmluZyh2YWwpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZFNlbGVjdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVVJKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2goZXJyKSB7XG4gICAgICAgICAgICAvL2ludmFsaWQgZGF0ZVxuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsbGVkID0gdmFsICE9IG51bGwgJiYgdmFsLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vbklucHV0LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTZWxlY3Rpb24odmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlKHZhbHVlLmdldERhdGUoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RnVsbFllYXIoKSwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmV2ZXJ5KHYgPT4gdGhpcy5pc1NlbGVjdGFibGUodi5nZXREYXRlKCksIHYuZ2V0TW9udGgoKSwgdi5nZXRGdWxsWWVhcigpLCBmYWxzZSkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JhbmdlU2VsZWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdmFsdWUubGVuZ3RoID4gMSAmJiB2YWx1ZVsxXSA+IHZhbHVlWzBdID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIHBhcnNlVmFsdWVGcm9tU3RyaW5nKHRleHQ6IHN0cmluZyk6IERhdGUgfCBEYXRlW117XG4gICAgICAgIGlmICghdGV4dCB8fCB0ZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlOiBhbnk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlRGF0ZVRpbWUodGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uKCkpIHtcbiAgICAgICAgICAgIGxldCB0b2tlbnMgPSB0ZXh0LnNwbGl0KHRoaXMubXVsdGlwbGVTZXBhcmF0b3IpO1xuICAgICAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICAgICAgICAgIHZhbHVlLnB1c2godGhpcy5wYXJzZURhdGVUaW1lKHRva2VuLnRyaW0oKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNSYW5nZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICBsZXQgdG9rZW5zID0gdGV4dC5zcGxpdCgnICcrdGhpcy5yYW5nZVNlcGFyYXRvciArJyAnKTtcbiAgICAgICAgICAgIHZhbHVlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhbHVlW2ldID0gdGhpcy5wYXJzZURhdGVUaW1lKHRva2Vuc1tpXS50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHBhcnNlRGF0ZVRpbWUodGV4dCk6IERhdGUge1xuICAgICAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICAgICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IHRleHQuc3BsaXQoJyAnKTtcblxuICAgICAgICBpZiAodGhpcy50aW1lT25seSkge1xuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlVGltZShkYXRlLCBwYXJ0c1swXSwgcGFydHNbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRoaXMuZ2V0RGF0ZUZvcm1hdCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgYW1wbSA9IHRoaXMuaG91ckZvcm1hdCA9PSAnMTInID8gcGFydHMucG9wKCkgOiBudWxsO1xuICAgICAgICAgICAgICAgIGxldCB0aW1lU3RyaW5nID0gcGFydHMucG9wKCk7XG5cbiAgICAgICAgICAgICAgICBkYXRlID0gdGhpcy5wYXJzZURhdGUocGFydHMuam9pbignICcpLCBkYXRlRm9ybWF0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlVGltZShkYXRlLCB0aW1lU3RyaW5nLCBhbXBtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICBkYXRlID0gdGhpcy5wYXJzZURhdGUodGV4dCwgZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBwb3B1bGF0ZVRpbWUodmFsdWUsIHRpbWVTdHJpbmcsIGFtcG0pIHtcbiAgICAgICAgaWYgKHRoaXMuaG91ckZvcm1hdCA9PSAnMTInICYmICFhbXBtKSB7XG4gICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBUaW1lJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG0gPSAoYW1wbSA9PT0gJ1BNJyB8fCBhbXBtID09PSAncG0nKTtcbiAgICAgICAgbGV0IHRpbWUgPSB0aGlzLnBhcnNlVGltZSh0aW1lU3RyaW5nKTtcbiAgICAgICAgdmFsdWUuc2V0SG91cnModGltZS5ob3VyKTtcbiAgICAgICAgdmFsdWUuc2V0TWludXRlcyh0aW1lLm1pbnV0ZSk7XG4gICAgICAgIHZhbHVlLnNldFNlY29uZHModGltZS5zZWNvbmQpO1xuICAgIH1cblxuICAgIHVwZGF0ZVVJKCkge1xuICAgICAgICBsZXQgdmFsID0gdGhpcy52YWx1ZXx8dGhpcy5kZWZhdWx0RGF0ZXx8bmV3IERhdGUoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSl7XG4gICAgICAgICAgICB2YWwgPSB2YWxbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHZhbC5nZXRNb250aCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gdmFsLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9udGhzKHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLmN1cnJlbnRZZWFyKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZXx8dGhpcy50aW1lT25seSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50SG91clBNKHZhbC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pbnV0ZSA9IHZhbC5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWNvbmQgPSB2YWwuZ2V0U2Vjb25kcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd092ZXJsYXkoKSB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVVSSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlT3ZlcmxheSgpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsZWFyVGltZVBpY2tlclRpbWVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudG91Y2hVSSkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTW9kYWxpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5saW5lKXtcbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlVG91Y2hVSSc6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZE92ZXJsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG91Y2hVSSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5vdmVybGF5LCB0aGlzLmJhc2VaSW5kZXggfHwgdGhpcy5jb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ292ZXJsYXknLCB0aGlzLm92ZXJsYXksIHRoaXMuYmFzZVpJbmRleCB8fCB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsaWduT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgY2FzZSAndmlzaWJsZVRvdWNoVUknOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5LCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ25PdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy50b3VjaFVJKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZU1vZGFsaXR5KHRoaXMub3ZlcmxheSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbylcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZWxhdGl2ZVBvc2l0aW9uKHRoaXMub3ZlcmxheSwgdGhpcy5pbnB1dGZpZWxkVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTW9kYWxpdHkoZWxlbWVudCkge1xuICAgICAgICBpZiAoIXRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICB0aGlzLm1hc2suc3R5bGUuekluZGV4ID0gU3RyaW5nKHBhcnNlSW50KGVsZW1lbnQuc3R5bGUuekluZGV4KSAtIDEpO1xuICAgICAgICAgICAgbGV0IG1hc2tTdHlsZUNsYXNzID0gJ3AtY29tcG9uZW50LW92ZXJsYXkgcC1kYXRlcGlja2VyLW1hc2sgcC1kYXRlcGlja2VyLW1hc2stc2Nyb2xsYmxvY2tlciBwLWNvbXBvbmVudC1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXktZW50ZXInO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRNdWx0aXBsZUNsYXNzZXModGhpcy5tYXNrLCBtYXNrU3R5bGVDbGFzcyk7XG5cblx0XHRcdHRoaXMubWFza0NsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm1hc2ssICdjbGljaycsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlTW9kYWxpdHkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm1hc2spO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc2FibGVNb2RhbGl0eSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLm1hc2ssICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZExpc3RlbmVyID0gdGhpcy5kZXN0cm95TWFzay5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5tYXNrLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveU1hc2soKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tYXNrKTtcbiAgICAgICAgbGV0IGJvZHlDaGlsZHJlbiA9IGRvY3VtZW50LmJvZHkuY2hpbGRyZW47XG4gICAgICAgIGxldCBoYXNCbG9ja2VyTWFza3M6IGJvb2xlYW47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm9keUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYm9keUNoaWxkID0gYm9keUNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MoYm9keUNoaWxkLCAncC1kYXRlcGlja2VyLW1hc2stc2Nyb2xsYmxvY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgaGFzQmxvY2tlck1hc2tzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzQmxvY2tlck1hc2tzKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmRBbmltYXRpb25FbmRMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZE1hc2tDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMubWFzayA9IG51bGw7XG4gICAgfVxuXG4gICAgdW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyID0gbnVsbDtcblx0XHR9XG4gICAgfVxuXG4gICAgdW5iaW5kQW5pbWF0aW9uRW5kTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkVuZExpc3RlbmVyICYmIHRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZVZhbHVlRnJvbVN0cmluZyh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRmaWVsZCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVVJKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldERhdGVGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXR8fHRoaXMuZ2V0VHJhbnNsYXRpb24oJ2RhdGVGb3JtYXQnKTtcbiAgICB9XG5cbiAgICAvLyBQb3J0ZWQgZnJvbSBqcXVlcnktdWkgZGF0ZXBpY2tlciBmb3JtYXREYXRlXG4gICAgZm9ybWF0RGF0ZShkYXRlLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaUZvcm1hdDtcbiAgICAgICAgY29uc3QgbG9va0FoZWFkID0gKG1hdGNoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gKGlGb3JtYXQgKyAxIDwgZm9ybWF0Lmxlbmd0aCAmJiBmb3JtYXQuY2hhckF0KGlGb3JtYXQgKyAxKSA9PT0gbWF0Y2gpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICBpRm9ybWF0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICAgICAgfSxcbiAgICAgICAgICAgIGZvcm1hdE51bWJlciA9IChtYXRjaCwgdmFsdWUsIGxlbikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBudW0gPSAnJyArIHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChsb29rQWhlYWQobWF0Y2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChudW0ubGVuZ3RoIDwgbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBudW0gPSAnMCcgKyBudW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb3JtYXROYW1lID0gKG1hdGNoLCB2YWx1ZSwgc2hvcnROYW1lcywgbG9uZ05hbWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChsb29rQWhlYWQobWF0Y2gpID8gbG9uZ05hbWVzW3ZhbHVlXSA6IHNob3J0TmFtZXNbdmFsdWVdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICAgICAgbGV0IGxpdGVyYWwgPSBmYWxzZTtcblxuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgZm9yIChpRm9ybWF0ID0gMDsgaUZvcm1hdCA8IGZvcm1hdC5sZW5ndGg7IGlGb3JtYXQrKykge1xuICAgICAgICAgICAgICAgIGlmIChsaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXQuY2hhckF0KGlGb3JtYXQpID09PSAnXFwnJyAmJiAhbG9va0FoZWFkKCdcXCcnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGZvcm1hdC5jaGFyQXQoaUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdC5jaGFyQXQoaUZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBmb3JtYXROdW1iZXIoJ2QnLCBkYXRlLmdldERhdGUoKSwgMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZm9ybWF0TmFtZSgnRCcsIGRhdGUuZ2V0RGF5KCksIHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkRBWV9OQU1FU19TSE9SVCksIHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkRBWV9OQU1FUykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGZvcm1hdE51bWJlcignbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZCgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkuZ2V0VGltZSgpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAwKS5nZXRUaW1lKCkpIC8gODY0MDAwMDApLCAzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBmb3JtYXROdW1iZXIoJ20nLCBkYXRlLmdldE1vbnRoKCkgKyAxLCAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBmb3JtYXROYW1lKCdNJyxkYXRlLmdldE1vbnRoKCksIHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLk1PTlRIX05BTUVTX1NIT1JUKSwgdGhpcy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuTU9OVEhfTkFNRVMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBsb29rQWhlYWQoJ3knKSA/IGRhdGUuZ2V0RnVsbFllYXIoKSA6IChkYXRlLmdldEZ1bGxZZWFyKCkgJSAxMDAgPCAxMCA/ICcwJyA6ICcnKSArIChkYXRlLmdldEZ1bGxZZWFyKCkgJSAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnISc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGRhdGUuZ2V0VGltZSgpICogMTAwMDAgKyB0aGlzLnRpY2tzVG8xOTcwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXFwnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9va0FoZWFkKCdcXCcnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1xcJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZm9ybWF0LmNoYXJBdChpRm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIGZvcm1hdFRpbWUoZGF0ZSkge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICAgICAgbGV0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICBsZXQgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBsZXQgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xuXG4gICAgICAgIGlmICh0aGlzLmhvdXJGb3JtYXQgPT0gJzEyJyAmJiBob3VycyA+IDExICYmIGhvdXJzICE9IDEyKSB7XG4gICAgICAgICAgICBob3Vycy09MTI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ob3VyRm9ybWF0ID09ICcxMicpIHtcbiAgICAgICAgICAgIG91dHB1dCArPSBob3VycyA9PT0gMCA/IDEyIDogKGhvdXJzIDwgMTApID8gJzAnICsgaG91cnMgOiBob3VycztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dCArPSAoaG91cnMgPCAxMCkgPyAnMCcgKyBob3VycyA6IGhvdXJzO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dCArPSAnOic7XG4gICAgICAgIG91dHB1dCArPSAobWludXRlcyA8IDEwKSA/ICcwJyArIG1pbnV0ZXMgOiBtaW51dGVzO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dTZWNvbmRzKSB7XG4gICAgICAgICAgICBvdXRwdXQgKz0gJzonO1xuICAgICAgICAgICAgb3V0cHV0ICs9IChzZWNvbmRzIDwgMTApID8gJzAnICsgc2Vjb25kcyA6IHNlY29uZHM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ob3VyRm9ybWF0ID09ICcxMicpIHtcbiAgICAgICAgICAgIG91dHB1dCArPSBkYXRlLmdldEhvdXJzKCkgPiAxMSA/ICcgUE0nIDogJyBBTSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHBhcnNlVGltZSh2YWx1ZSkge1xuICAgICAgICBsZXQgdG9rZW5zOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgIGxldCB2YWxpZFRva2VuTGVuZ3RoID0gdGhpcy5zaG93U2Vjb25kcyA/IDMgOiAyO1xuXG4gICAgICAgIGlmICh0b2tlbnMubGVuZ3RoICE9PSB2YWxpZFRva2VuTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBcIkludmFsaWQgdGltZVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGggPSBwYXJzZUludCh0b2tlbnNbMF0pO1xuICAgICAgICBsZXQgbSA9IHBhcnNlSW50KHRva2Vuc1sxXSk7XG4gICAgICAgIGxldCBzID0gdGhpcy5zaG93U2Vjb25kcyA/IHBhcnNlSW50KHRva2Vuc1syXSkgOiBudWxsO1xuXG4gICAgICAgIGlmIChpc05hTihoKSB8fCBpc05hTihtKSB8fCBoID4gMjMgfHwgbSA+IDU5IHx8ICh0aGlzLmhvdXJGb3JtYXQgPT0gJzEyJyAmJiBoID4gMTIpIHx8ICh0aGlzLnNob3dTZWNvbmRzICYmIChpc05hTihzKSB8fCBzID4gNTkpKSkge1xuICAgICAgICAgICAgdGhyb3cgXCJJbnZhbGlkIHRpbWVcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhvdXJGb3JtYXQgPT0gJzEyJykge1xuICAgICAgICAgICAgICAgIGlmIChoICE9PSAxMiAmJiB0aGlzLnBtKSB7XG4gICAgICAgICAgICAgICAgICAgIGggKz0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnBtICYmIGggPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgICAgIGggLT0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge2hvdXI6IGgsIG1pbnV0ZTogbSwgc2Vjb25kOiBzfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBvcnRlZCBmcm9tIGpxdWVyeS11aSBkYXRlcGlja2VyIHBhcnNlRGF0ZVxuICAgIHBhcnNlRGF0ZSh2YWx1ZSwgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT0gbnVsbCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBcIkludmFsaWQgYXJndW1lbnRzXCI7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSA9ICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgPyB2YWx1ZS50b1N0cmluZygpIDogdmFsdWUgKyBcIlwiKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpRm9ybWF0LCBkaW0sIGV4dHJhLFxuICAgICAgICBpVmFsdWUgPSAwLFxuICAgICAgICBzaG9ydFllYXJDdXRvZmYgPSAodHlwZW9mIHRoaXMuc2hvcnRZZWFyQ3V0b2ZmICE9PSBcInN0cmluZ1wiID8gdGhpcy5zaG9ydFllYXJDdXRvZmYgOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgJSAxMDAgKyBwYXJzZUludCh0aGlzLnNob3J0WWVhckN1dG9mZiwgMTApKSxcbiAgICAgICAgeWVhciA9IC0xLFxuICAgICAgICBtb250aCA9IC0xLFxuICAgICAgICBkYXkgPSAtMSxcbiAgICAgICAgZG95ID0gLTEsXG4gICAgICAgIGxpdGVyYWwgPSBmYWxzZSxcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgbG9va0FoZWFkID0gKG1hdGNoKSA9PiB7XG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IChpRm9ybWF0ICsgMSA8IGZvcm1hdC5sZW5ndGggJiYgZm9ybWF0LmNoYXJBdChpRm9ybWF0ICsgMSkgPT09IG1hdGNoKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgaUZvcm1hdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldE51bWJlciA9IChtYXRjaCkgPT4ge1xuICAgICAgICAgICAgbGV0IGlzRG91YmxlZCA9IGxvb2tBaGVhZChtYXRjaCksXG4gICAgICAgICAgICAgICAgc2l6ZSA9IChtYXRjaCA9PT0gXCJAXCIgPyAxNCA6IChtYXRjaCA9PT0gXCIhXCIgPyAyMCA6XG4gICAgICAgICAgICAgICAgKG1hdGNoID09PSBcInlcIiAmJiBpc0RvdWJsZWQgPyA0IDogKG1hdGNoID09PSBcIm9cIiA/IDMgOiAyKSkpKSxcbiAgICAgICAgICAgICAgICBtaW5TaXplID0gKG1hdGNoID09PSBcInlcIiA/IHNpemUgOiAxKSxcbiAgICAgICAgICAgICAgICBkaWdpdHMgPSBuZXcgUmVnRXhwKFwiXlxcXFxke1wiICsgbWluU2l6ZSArIFwiLFwiICsgc2l6ZSArIFwifVwiKSxcbiAgICAgICAgICAgICAgICBudW0gPSB2YWx1ZS5zdWJzdHJpbmcoaVZhbHVlKS5tYXRjaChkaWdpdHMpO1xuICAgICAgICAgICAgaWYgKCFudW0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIk1pc3NpbmcgbnVtYmVyIGF0IHBvc2l0aW9uIFwiICsgaVZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaVZhbHVlICs9IG51bVsgMCBdLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChudW1bIDAgXSwgMTApO1xuICAgICAgICB9LFxuICAgICAgICBnZXROYW1lID0gKG1hdGNoLCBzaG9ydE5hbWVzLCBsb25nTmFtZXMpID0+IHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICAgICAgbGV0IGFyciA9IGxvb2tBaGVhZChtYXRjaCkgPyBsb25nTmFtZXMgOiBzaG9ydE5hbWVzO1xuICAgICAgICAgICAgbGV0IG5hbWVzID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbmFtZXMucHVzaChbaSxhcnJbaV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5hbWVzLnNvcnQoKGEsYikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAtKGFbIDEgXS5sZW5ndGggLSBiWyAxIF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXVsxXTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuc3Vic3RyKGlWYWx1ZSwgbmFtZS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG5hbWVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBpVmFsdWUgKz0gbmFtZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IFwiVW5rbm93biBuYW1lIGF0IHBvc2l0aW9uIFwiICsgaVZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjaGVja0xpdGVyYWwgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUuY2hhckF0KGlWYWx1ZSkgIT09IGZvcm1hdC5jaGFyQXQoaUZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIlVuZXhwZWN0ZWQgbGl0ZXJhbCBhdCBwb3NpdGlvbiBcIiArIGlWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlWYWx1ZSsrO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIGRheSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGlGb3JtYXQgPSAwOyBpRm9ybWF0IDwgZm9ybWF0Lmxlbmd0aDsgaUZvcm1hdCsrKSB7XG4gICAgICAgICAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtYXQuY2hhckF0KGlGb3JtYXQpID09PSBcIidcIiAmJiAhbG9va0FoZWFkKFwiJ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBsaXRlcmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tMaXRlcmFsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdC5jaGFyQXQoaUZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRheSA9IGdldE51bWJlcihcImRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldE5hbWUoXCJEXCIsIHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkRBWV9OQU1FU19TSE9SVCksIHRoaXMuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkRBWV9OQU1FUykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJvXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkb3kgPSBnZXROdW1iZXIoXCJvXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aCA9IGdldE51bWJlcihcIm1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gZ2V0TmFtZShcIk1cIiwgdGhpcy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuTU9OVEhfTkFNRVNfU0hPUlQpLCB0aGlzLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5NT05USF9OQU1FUykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB5ZWFyID0gZ2V0TnVtYmVyKFwieVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiQFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGdldE51bWJlcihcIkBcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCIhXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoKGdldE51bWJlcihcIiFcIikgLSB0aGlzLnRpY2tzVG8xOTcwKSAvIDEwMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvb2tBaGVhZChcIidcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xpdGVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTGl0ZXJhbCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpVmFsdWUgPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV4dHJhID0gdmFsdWUuc3Vic3RyKGlWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoIS9eXFxzKy8udGVzdChleHRyYSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIkV4dHJhL3VucGFyc2VkIGNoYXJhY3RlcnMgZm91bmQgaW4gZGF0ZTogXCIgKyBleHRyYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh5ZWFyID09PSAtMSkge1xuICAgICAgICAgICAgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDwgMTAwKSB7XG4gICAgICAgICAgICB5ZWFyICs9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAlIDEwMCArXG4gICAgICAgICAgICAgICAgKHllYXIgPD0gc2hvcnRZZWFyQ3V0b2ZmID8gMCA6IC0xMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRveSA+IC0xKSB7XG4gICAgICAgICAgICBtb250aCA9IDE7XG4gICAgICAgICAgICBkYXkgPSBkb3k7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZGltID0gdGhpcy5nZXREYXlzQ291bnRJbk1vbnRoKHllYXIsIG1vbnRoIC0gMSk7XG4gICAgICAgICAgICAgICAgaWYgKGRheSA8PSBkaW0pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vbnRoKys7XG4gICAgICAgICAgICAgICAgZGF5IC09IGRpbTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0ZSA9IHRoaXMuZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpICE9PSB5ZWFyIHx8IGRhdGUuZ2V0TW9udGgoKSArIDEgIT09IG1vbnRoIHx8IGRhdGUuZ2V0RGF0ZSgpICE9PSBkYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgXCJJbnZhbGlkIGRhdGVcIjsgLy8gRS5nLiAzMS8wMi8wMFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBkYXlsaWdodFNhdmluZ0FkanVzdChkYXRlKSB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSA+IDEyID8gZGF0ZS5nZXRIb3VycygpICsgMiA6IDApO1xuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbGxlZCA9IHRoaXMuaW5wdXRGaWVsZFZhbHVlICYmIHRoaXMuaW5wdXRGaWVsZFZhbHVlICE9ICcnO1xuICAgIH1cblxuICAgIG9uVG9kYXlCdXR0b25DbGljayhldmVudCkge1xuICAgICAgICBsZXQgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGxldCBkYXRlTWV0YSA9IHtkYXk6IGRhdGUuZ2V0RGF0ZSgpLCBtb250aDogZGF0ZS5nZXRNb250aCgpLCB5ZWFyOiBkYXRlLmdldEZ1bGxZZWFyKCksIG90aGVyTW9udGg6IGRhdGUuZ2V0TW9udGgoKSAhPT0gdGhpcy5jdXJyZW50TW9udGggfHwgZGF0ZS5nZXRGdWxsWWVhcigpICE9PSB0aGlzLmN1cnJlbnRZZWFyLCB0b2RheTogdHJ1ZSwgc2VsZWN0YWJsZTogdHJ1ZX07XG5cbiAgICAgICAgdGhpcy5vbkRhdGVTZWxlY3QoZXZlbnQsIGRhdGVNZXRhKTtcbiAgICAgICAgdGhpcy5vblRvZGF5Q2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25DbGVhckJ1dHRvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwobnVsbCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRmaWVsZCgpO1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgIHRoaXMub25DbGVhckNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPdXRzaWRlQ2xpY2tlZChldmVudCkgJiYgdGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbGlja091dHNpZGUuZW1pdChldmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciAmJiAhdGhpcy50b3VjaFVJKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcih0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzT3V0c2lkZUNsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuZWwubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5pc05hdkljb25DbGlja2VkKGV2ZW50KSB8fMKgXG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHwgKHRoaXMub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXkuY29udGFpbnMoPE5vZGU+IGV2ZW50LnRhcmdldCkpKTtcbiAgICB9XG5cbiAgICBpc05hdkljb25DbGlja2VkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICByZXR1cm4gKERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1kYXRlcGlja2VyLXByZXYnKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtZGF0ZXBpY2tlci1wcmV2LWljb24nKVxuICAgICAgICAgICAgICAgIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1kYXRlcGlja2VyLW5leHQnKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtZGF0ZXBpY2tlci1uZXh0LWljb24nKSk7XG4gICAgfVxuXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlICYmICFEb21IYW5kbGVyLmlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlIaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lUGlja2VyVGltZXIoKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlT3ZlcmxheUFwcGVuZCgpO1xuICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxCdXR0b25Nb2R1bGUsU2hhcmVkTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0NhbGVuZGFyLEJ1dHRvbk1vZHVsZSxTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0NhbGVuZGFyXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/calendar/primeng-calendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/calendar/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/calendar/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYWxlbmRhci9wcmltZW5nLWNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/calendar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/calendar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/calendar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './calendar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYWxlbmRhci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYWxlbmRhcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/captcha/captcha.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/captcha/captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/captcha/captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,126 @@
+import { NgModule, Component, EventEmitter, Input, Output, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+export class Captcha {
+    constructor(el, _zone, cd) {
+        this.el = el;
+        this._zone = _zone;
+        this.cd = cd;
+        this.siteKey = null;
+        this.theme = 'light';
+        this.type = 'image';
+        this.size = 'normal';
+        this.tabindex = 0;
+        this.initCallback = "initRecaptcha";
+        this.onResponse = new EventEmitter();
+        this.onExpire = new EventEmitter();
+        this._instance = null;
+        this._language = null;
+    }
+    get language() {
+        return this._language;
+    }
+    set language(language) {
+        this._language = language;
+        this.init();
+    }
+    ngAfterViewInit() {
+        if (window.grecaptcha) {
+            if (!window.grecaptcha.render) {
+                setTimeout(() => {
+                    this.init();
+                }, 100);
+            }
+            else {
+                this.init();
+            }
+        }
+        else {
+            window[this.initCallback] = () => {
+                this.init();
+            };
+        }
+    }
+    init() {
+        this._instance = window.grecaptcha.render(this.el.nativeElement.children[0], {
+            'sitekey': this.siteKey,
+            'theme': this.theme,
+            'type': this.type,
+            'size': this.size,
+            'tabindex': this.tabindex,
+            'hl': this.language,
+            'callback': (response) => { this._zone.run(() => this.recaptchaCallback(response)); },
+            'expired-callback': () => { this._zone.run(() => this.recaptchaExpiredCallback()); }
+        });
+    }
+    reset() {
+        if (this._instance === null)
+            return;
+        window.grecaptcha.reset(this._instance);
+        this.cd.markForCheck();
+    }
+    getResponse() {
+        if (this._instance === null)
+            return null;
+        return window.grecaptcha.getResponse(this._instance);
+    }
+    recaptchaCallback(response) {
+        this.onResponse.emit({
+            response: response
+        });
+    }
+    recaptchaExpiredCallback() {
+        this.onExpire.emit();
+    }
+    ngOnDestroy() {
+        if (this._instance != null) {
+            window.grecaptcha.reset(this._instance);
+        }
+    }
+}
+Captcha.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Captcha.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Captcha, selector: "p-captcha", inputs: { siteKey: "siteKey", theme: "theme", type: "type", size: "size", tabindex: "tabindex", initCallback: "initCallback", language: "language" }, outputs: { onResponse: "onResponse", onExpire: "onExpire" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-captcha',
+                    template: `<div></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { siteKey: [{
+                type: Input
+            }], theme: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], initCallback: [{
+                type: Input
+            }], onResponse: [{
+                type: Output
+            }], onExpire: [{
+                type: Output
+            }], language: [{
+                type: Input
+            }] } });
+export class CaptchaModule {
+}
+CaptchaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CaptchaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, declarations: [Captcha], imports: [CommonModule], exports: [Captcha] });
+CaptchaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Captcha],
+                    declarations: [Captcha]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGNoYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXB0Y2hhL2NhcHRjaGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBZSxTQUFTLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBa0IsTUFBTSxFQUFZLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNuTCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBVzdDLE1BQU0sT0FBTyxPQUFPO0lBZ0NoQixZQUFtQixFQUFjLEVBQVMsS0FBYSxFQUFTLEVBQXFCO1FBQWxFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUE5QjVFLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFFdkIsVUFBSyxHQUFHLE9BQU8sQ0FBQztRQUVoQixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBRWYsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUVoQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWIsaUJBQVksR0FBRyxlQUFlLENBQUM7UUFFOUIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5ELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuRCxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRXRCLGNBQVMsR0FBUSxJQUFJLENBQUM7SUFZMEQsQ0FBQztJQVR6RixJQUFhLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFnQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUlELGVBQWU7UUFDWCxJQUFVLE1BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDMUIsSUFBSSxDQUFPLE1BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDO2dCQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ1Q7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2Y7U0FDSjthQUNJO1lBQ0ssTUFBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQTtTQUNKO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsU0FBUyxHQUFTLE1BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixVQUFVLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsR0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUM7WUFDMUYsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLEdBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUM7U0FDcEYsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN2QixPQUFPO1FBRUwsTUFBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN2QixPQUFPLElBQUksQ0FBQztRQUVoQixPQUFhLE1BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHdCQUF3QjtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUNwQixNQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDOztvR0E5RlEsT0FBTzt3RkFBUCxPQUFPLDJTQVBOLGFBQWE7MkZBT2QsT0FBTztrQkFUbkIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjtzSkFHWSxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFPTSxRQUFRO3NCQUFwQixLQUFLOztBQStFVixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQXRHYixPQUFPLGFBa0dOLFlBQVksYUFsR2IsT0FBTzsyR0FzR1AsYUFBYSxZQUpiLENBQUMsWUFBWSxDQUFDOzJGQUlkLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLEFmdGVyVmlld0luaXQsQ29tcG9uZW50LEV2ZW50RW1pdHRlcixJbnB1dCxOZ1pvbmUsT25EZXN0cm95LE91dHB1dCxFbGVtZW50UmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jYXB0Y2hhJyxcbiAgICB0ZW1wbGF0ZTogYDxkaXY+PC9kaXY+YCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENhcHRjaGEgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBzaXRlS2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KCkgdGhlbWUgPSAnbGlnaHQnO1xuXG4gICAgQElucHV0KCkgdHlwZSA9ICdpbWFnZSc7XG5cbiAgICBASW5wdXQoKSBzaXplID0gJ25vcm1hbCc7XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleCA9IDA7XG5cbiAgICBASW5wdXQoKSBpbml0Q2FsbGJhY2sgPSBcImluaXRSZWNhcHRjaGFcIjtcblxuICAgIEBPdXRwdXQoKSBvblJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkV4cGlyZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIF9pbnN0YW5jZTogYW55ID0gbnVsbDtcblxuICAgIHByaXZhdGUgX2xhbmd1YWdlOiBhbnkgPSBudWxsO1xuXG5cbiAgICBASW5wdXQoKSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xuICAgIH1cblxuICAgIHNldCBsYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIF96b25lOiBOZ1pvbmUsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICgoPGFueT53aW5kb3cpLmdyZWNhcHRjaGEpIHtcbiAgICAgICAgICAgIGlmICghKDxhbnk+d2luZG93KS5ncmVjYXB0Y2hhLnJlbmRlcil7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PntcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgICAgICAgICAgfSwxMDApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICg8YW55PndpbmRvdylbdGhpcy5pbml0Q2FsbGJhY2tdID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXQoKcKge1xuICAgICAgICB0aGlzLl9pbnN0YW5jZSA9ICg8YW55PndpbmRvdykuZ3JlY2FwdGNoYS5yZW5kZXIodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLCB7XG4gICAgICAgICAgICAnc2l0ZWtleSc6IHRoaXMuc2l0ZUtleSxcbiAgICAgICAgICAgICd0aGVtZSc6IHRoaXMudGhlbWUsXG4gICAgICAgICAgICAndHlwZSc6IHRoaXMudHlwZSxcbiAgICAgICAgICAgICdzaXplJzogdGhpcy5zaXplLFxuICAgICAgICAgICAgJ3RhYmluZGV4JzogdGhpcy50YWJpbmRleCxcbiAgICAgICAgICAgICdobCc6IHRoaXMubGFuZ3VhZ2UsXG4gICAgICAgICAgICAnY2FsbGJhY2snOiAocmVzcG9uc2U6IHN0cmluZykgPT4ge3RoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMucmVjYXB0Y2hhQ2FsbGJhY2socmVzcG9uc2UpKX0sXG4gICAgICAgICAgICAnZXhwaXJlZC1jYWxsYmFjayc6ICgpID0+IHt0aGlzLl96b25lLnJ1bigoKSA9PiB0aGlzLnJlY2FwdGNoYUV4cGlyZWRDYWxsYmFjaygpKX1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pbnN0YW5jZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAoPGFueT53aW5kb3cpLmdyZWNhcHRjaGEucmVzZXQodGhpcy5faW5zdGFuY2UpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldFJlc3BvbnNlKCk6IFN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9pbnN0YW5jZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHJldHVybiAoPGFueT53aW5kb3cpLmdyZWNhcHRjaGEuZ2V0UmVzcG9uc2UodGhpcy5faW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHJlY2FwdGNoYUNhbGxiYWNrKHJlc3BvbnNlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vblJlc3BvbnNlLmVtaXQoe1xuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlY2FwdGNoYUV4cGlyZWRDYWxsYmFjaygpIHtcbiAgICAgICAgdGhpcy5vbkV4cGlyZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLl9pbnN0YW5jZSAhPSBudWxsKSB7XG4gICAgICAgICAgKDxhbnk+d2luZG93KS5ncmVjYXB0Y2hhLnJlc2V0KHRoaXMuX2luc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ2FwdGNoYV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2FwdGNoYV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FwdGNoYU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/captcha/primeng-captcha.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/captcha/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/captcha/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYXB0Y2hhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NhcHRjaGEvcHJpbWVuZy1jYXB0Y2hhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/captcha/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/captcha/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/captcha/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './captcha';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXB0Y2hhL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhcHRjaGEnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/card/card.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/card/card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/card/card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,126 @@
+import { NgModule, Component, Input, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, Header, Footer, PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Card {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'title':
+                    this.titleTemplate = item.template;
+                    break;
+                case 'subtitle':
+                    this.subtitleTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+}
+Card.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Card.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Card, selector: "p-card", inputs: { header: "header", subheader: "subheader", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-card-header img{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-card', template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-card-header img{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { header: [{
+                type: Input
+            }], subheader: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class CardModule {
+}
+CardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, declarations: [Card], imports: [CommonModule], exports: [Card, SharedModule] });
+CardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Card, SharedModule],
+                    declarations: [Card]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJkL2NhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBaUMsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzVMLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFzQzFFLE1BQU0sT0FBTyxJQUFJO0lBMEJiLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUksQ0FBQztJQUV2QyxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLFFBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQixLQUFLLFFBQVE7b0JBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN4QyxNQUFNO2dCQUVOLEtBQUssT0FBTztvQkFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3ZDLE1BQU07Z0JBRU4sS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUMxQyxNQUFNO2dCQUVOLEtBQUssU0FBUztvQkFDVixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3pDLE1BQU07Z0JBRU4sS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsTUFBTTtnQkFFTjtvQkFDSSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3pDLE1BQU07YUFDVDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2lHQTVEUSxJQUFJO3FGQUFKLElBQUksOE5BVUMsTUFBTSw4RUFFTixNQUFNLCtEQUVILGFBQWEsNkJBL0NwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVDsyRkFRUSxJQUFJO2tCQW5DaEIsU0FBUzsrQkFDSSxRQUFRLFlBQ1I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F5QlQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lHQUlRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVnQixXQUFXO3NCQUFoQyxZQUFZO3VCQUFDLE1BQU07Z0JBRUUsV0FBVztzQkFBaEMsWUFBWTt1QkFBQyxNQUFNO2dCQUVZLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUF1RGxDLE1BQU0sT0FBTyxVQUFVOzt1R0FBVixVQUFVO3dHQUFWLFVBQVUsaUJBckVWLElBQUksYUFpRUgsWUFBWSxhQWpFYixJQUFJLEVBa0VHLFlBQVk7d0dBR25CLFVBQVUsWUFKVixDQUFDLFlBQVksQ0FBQyxFQUNQLFlBQVk7MkZBR25CLFVBQVU7a0JBTHRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDO29CQUM3QixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIENvbnRlbnRDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIEhlYWRlciwgRm9vdGVyLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmxvY2thYmxlVUkgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jYXJkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLWNhcmQgcC1jb21wb25lbnQnXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2FyZC1oZWFkZXJcIiAqbmdJZj1cImhlYWRlckZhY2V0IHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhcmQtdGl0bGVcIiAqbmdJZj1cImhlYWRlciB8fCB0aXRsZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aGVhZGVyfX1cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXJkLXN1YnRpdGxlXCIgKm5nSWY9XCJzdWJoZWFkZXIgfHwgc3VidGl0bGVUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e3N1YmhlYWRlcn19XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhcmQtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2NhcmQuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2FyZCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsQmxvY2thYmxlVUkge1xuXG4gICAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdWJoZWFkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBAQ29udGVudENoaWxkKEhlYWRlcikgaGVhZGVyRmFjZXQ7XG5cbiAgICBAQ29udGVudENoaWxkKEZvb3RlcikgZm9vdGVyRmFjZXQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBzdWJ0aXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGl0bGVUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzdWJ0aXRsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEJsb2NrYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgwqB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0NhcmQsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2FyZF1cbn0pXG5leHBvcnQgY2xhc3MgQ2FyZE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/card/primeng-card.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/card/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/card/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NhcmQvcHJpbWVuZy1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/card/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/card/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/card/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './card';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJkL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhcmQnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/carousel/carousel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/carousel/carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/carousel/carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,628 @@
+import { Component, Input, ViewChild, ContentChildren, NgModule, EventEmitter, Output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { PrimeTemplate, SharedModule, Header, Footer } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import { CommonModule } from '@angular/common';
+import { UniqueComponentId } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+export class Carousel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.orientation = "horizontal";
+        this.verticalViewPortHeight = "300px";
+        this.contentClass = "";
+        this.indicatorsContentClass = "";
+        this.indicatorStyleClass = "";
+        this.circular = false;
+        this.showIndicators = true;
+        this.showNavigators = true;
+        this.autoplayInterval = 0;
+        this.onPage = new EventEmitter();
+        this._numVisible = 1;
+        this._numScroll = 1;
+        this._oldNumScroll = 0;
+        this.prevState = {
+            numScroll: 0,
+            numVisible: 0,
+            value: []
+        };
+        this.defaultNumScroll = 1;
+        this.defaultNumVisible = 1;
+        this._page = 0;
+        this.isRemainingItemsAdded = false;
+        this.remainingItems = 0;
+        this.swipeThreshold = 20;
+        this.totalShiftedItems = this.page * this.numScroll * -1;
+    }
+    get page() {
+        return this._page;
+    }
+    set page(val) {
+        if (this.isCreated && val !== this._page) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+                this.allowAutoplay = false;
+            }
+            if (val > this._page && val <= (this.totalDots() - 1)) {
+                this.step(-1, val);
+            }
+            else if (val < this._page) {
+                this.step(1, val);
+            }
+        }
+        this._page = val;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    set numVisible(val) {
+        this._numVisible = val;
+    }
+    get numScroll() {
+        return this._numVisible;
+    }
+    set numScroll(val) {
+        this._numScroll = val;
+    }
+    get value() {
+        return this._value;
+    }
+    ;
+    set value(val) {
+        this._value = val;
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.circular && this._value) {
+                this.setCloneItems();
+            }
+        }
+        if (this.isCreated) {
+            if (simpleChange.numVisible) {
+                if (this.responsiveOptions) {
+                    this.defaultNumVisible = this.numVisible;
+                }
+                if (this.isCircular()) {
+                    this.setCloneItems();
+                }
+                this.createStyle();
+                this.calculatePosition();
+            }
+            if (simpleChange.numScroll) {
+                if (this.responsiveOptions) {
+                    this.defaultNumScroll = this.numScroll;
+                }
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.id = UniqueComponentId();
+        this.allowAutoplay = !!this.autoplayInterval;
+        if (this.circular) {
+            this.setCloneItems();
+        }
+        if (this.responsiveOptions) {
+            this.defaultNumScroll = this._numScroll;
+            this.defaultNumVisible = this._numVisible;
+        }
+        this.createStyle();
+        this.calculatePosition();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterContentChecked() {
+        const isCircular = this.isCircular();
+        let totalShiftedItems = this.totalShiftedItems;
+        if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+            }
+            this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;
+            let page = this._page;
+            if (this.totalDots() !== 0 && page >= this.totalDots()) {
+                page = this.totalDots() - 1;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            totalShiftedItems = (page * this._numScroll) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+                totalShiftedItems += (-1 * this.remainingItems) + this._numScroll;
+                this.isRemainingItemsAdded = true;
+            }
+            else {
+                this.isRemainingItemsAdded = false;
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            this._oldNumScroll = this._numScroll;
+            this.prevState.numScroll = this._numScroll;
+            this.prevState.numVisible = this._numVisible;
+            this.prevState.value = [...this._value];
+            if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+            this.isCreated = true;
+            if (this.autoplayInterval && this.isAutoplay()) {
+                this.startAutoplay();
+            }
+        }
+        if (isCircular) {
+            if (this.page === 0) {
+                totalShiftedItems = -1 * this._numVisible;
+            }
+            else if (totalShiftedItems === 0) {
+                totalShiftedItems = -1 * this.value.length;
+                if (this.remainingItems > 0) {
+                    this.isRemainingItemsAdded = true;
+                }
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+        }
+    }
+    createStyle() {
+        if (!this.carouselStyle) {
+            this.carouselStyle = document.createElement('style');
+            this.carouselStyle.type = 'text/css';
+            document.body.appendChild(this.carouselStyle);
+        }
+        let innerHTML = `
+            #${this.id} .p-carousel-item {
+				flex: 1 0 ${(100 / this.numVisible)}%
+			}
+        `;
+        if (this.responsiveOptions) {
+            this.responsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.id} .p-carousel-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.carouselStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.responsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this.defaultNumVisible,
+                numScroll: this.defaultNumScroll
+            };
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this._numScroll !== matchedResponsiveData.numScroll) {
+                let page = this._page;
+                page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);
+                let totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;
+                if (this.isCircular()) {
+                    totalShiftedItems -= matchedResponsiveData.numVisible;
+                }
+                this.totalShiftedItems = totalShiftedItems;
+                this._numScroll = matchedResponsiveData.numScroll;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            if (this._numVisible !== matchedResponsiveData.numVisible) {
+                this._numVisible = matchedResponsiveData.numVisible;
+                this.setCloneItems();
+            }
+            this.cd.markForCheck();
+        }
+    }
+    setCloneItems() {
+        this.clonedItemsForStarting = [];
+        this.clonedItemsForFinishing = [];
+        if (this.isCircular()) {
+            this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));
+            this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));
+        }
+    }
+    firstIndex() {
+        return this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);
+    }
+    lastIndex() {
+        return this.firstIndex() + this.numVisible - 1;
+    }
+    totalDots() {
+        return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;
+    }
+    totalDotsArray() {
+        const totalDots = this.totalDots();
+        return totalDots <= 0 ? [] : Array(totalDots).fill(0);
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    isCircular() {
+        return this.circular && this.value && this.value.length >= this.numVisible;
+    }
+    isAutoplay() {
+        return this.autoplayInterval && this.allowAutoplay;
+    }
+    isForwardNavDisabled() {
+        return this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());
+    }
+    isBackwardNavDisabled() {
+        return this.isEmpty() || (this._page <= 0 && !this.isCircular());
+    }
+    isEmpty() {
+        return !this.value || this.value.length === 0;
+    }
+    navForward(e, index) {
+        if (this.isCircular() || this._page < (this.totalDots() - 1)) {
+            this.step(-1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e, index) {
+        if (this.isCircular() || this._page !== 0) {
+            this.step(1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onDotClick(e, index) {
+        let page = this._page;
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (index > page) {
+            this.navForward(e, index);
+        }
+        else if (index < page) {
+            this.navBackward(e, index);
+        }
+    }
+    step(dir, page) {
+        let totalShiftedItems = this.totalShiftedItems;
+        const isCircular = this.isCircular();
+        if (page != null) {
+            totalShiftedItems = (this._numScroll * page) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            this.isRemainingItemsAdded = false;
+        }
+        else {
+            totalShiftedItems += (this._numScroll * dir);
+            if (this.isRemainingItemsAdded) {
+                totalShiftedItems += this.remainingItems - (this._numScroll * dir);
+                this.isRemainingItemsAdded = false;
+            }
+            let originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;
+            page = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));
+        }
+        if (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {
+            totalShiftedItems = -1 * (this.value.length + this._numVisible);
+            page = 0;
+        }
+        else if (isCircular && this.page === 0 && dir === 1) {
+            totalShiftedItems = 0;
+            page = (this.totalDots() - 1);
+        }
+        else if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+            totalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));
+            this.isRemainingItemsAdded = true;
+        }
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+        this._page = page;
+        this.onPage.emit({
+            page: this.page
+        });
+    }
+    startAutoplay() {
+        this.interval = setInterval(() => {
+            if (this.totalDots() > 0) {
+                if (this.page === (this.totalDots() - 1)) {
+                    this.step(-1, 0);
+                }
+                else {
+                    this.step(-1, this.page + 1);
+                }
+            }
+        }, this.autoplayInterval);
+    }
+    stopAutoplay() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transition = '';
+            if ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical()) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (Math.abs(diff) > this.swipeThreshold) {
+            if (diff < 0) {
+                this.navForward(e);
+            }
+            else {
+                this.navBackward(e);
+            }
+        }
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = (e) => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+        }
+    }
+}
+Carousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Carousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Carousel, selector: "p-carousel", inputs: { page: "page", numVisible: "numVisible", numScroll: "numScroll", responsiveOptions: "responsiveOptions", orientation: "orientation", verticalViewPortHeight: "verticalViewPortHeight", contentClass: "contentClass", indicatorsContentClass: "indicatorsContentClass", indicatorsContentStyle: "indicatorsContentStyle", indicatorStyleClass: "indicatorStyleClass", indicatorStyle: "indicatorStyle", value: "value", circular: "circular", showIndicators: "showIndicators", showNavigators: "showNavigators", autoplayInterval: "autoplayInterval", style: "style", styleClass: "styleClass" }, outputs: { onPage: "onPage" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, isInline: true, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-carousel', template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], numScroll: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], verticalViewPortHeight: [{
+                type: Input
+            }], contentClass: [{
+                type: Input
+            }], indicatorsContentClass: [{
+                type: Input
+            }], indicatorsContentStyle: [{
+                type: Input
+            }], indicatorStyleClass: [{
+                type: Input
+            }], indicatorStyle: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showNavigators: [{
+                type: Input
+            }], autoplayInterval: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class CarouselModule {
+}
+CarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Carousel, SharedModule] });
+CarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Carousel, SharedModule],
+                    declarations: [Carousel]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsU0FBUyxFQUFpQyxlQUFlLEVBQWEsUUFBUSxFQUFVLFlBQVksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN2USxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBNERsRCxNQUFNLE9BQU8sUUFBUTtJQTRJcEIsWUFBbUIsRUFBYyxFQUFTLElBQVksRUFBUyxFQUFxQjtRQUFqRSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBckczRSxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUUzQiwyQkFBc0IsR0FBRyxPQUFPLENBQUM7UUFFakMsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFFMUIsMkJBQXNCLEdBQVcsRUFBRSxDQUFDO1FBSXBDLHdCQUFtQixHQUFXLEVBQUUsQ0FBQztRQVdqQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRS9CLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRS9CLHFCQUFnQixHQUFVLENBQUMsQ0FBQztRQU14QixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFV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QVksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDO29CQUMvQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIE5nTW9kdWxlLCBOZ1pvbmUsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBDb250ZW50Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSwgSGVhZGVyLCBGb290ZXIgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVW5pcXVlQ29tcG9uZW50SWQgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAncC1jYXJvdXNlbCcsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGRpdiBbYXR0ci5pZF09XCJpZFwiIFtuZ0NsYXNzXT1cInsncC1jYXJvdXNlbCBwLWNvbXBvbmVudCc6dHJ1ZSwgJ3AtY2Fyb3VzZWwtdmVydGljYWwnOiBpc1ZlcnRpY2FsKCksICdwLWNhcm91c2VsLWhvcml6b250YWwnOiAhaXNWZXJ0aWNhbCgpfVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJwLWNhcm91c2VsLWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyRmFjZXQgfHwgaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBbY2xhc3NdPVwiY29udGVudENsYXNzXCIgW25nQ2xhc3NdPVwiJ3AtY2Fyb3VzZWwtY29udGVudCdcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInAtY2Fyb3VzZWwtY29udGFpbmVyXCI+XG5cdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93TmF2aWdhdG9yc1wiIFtuZ0NsYXNzXT1cInsncC1jYXJvdXNlbC1wcmV2IHAtbGluayc6dHJ1ZSwgJ3AtZGlzYWJsZWQnOiBpc0JhY2t3YXJkTmF2RGlzYWJsZWQoKX1cIiBbZGlzYWJsZWRdPVwiaXNCYWNrd2FyZE5hdkRpc2FibGVkKClcIiAoY2xpY2spPVwibmF2QmFja3dhcmQoJGV2ZW50KVwiIHBSaXBwbGU+XG5cdFx0XHRcdFx0XHQ8c3BhbiBbbmdDbGFzc109XCJ7J3AtY2Fyb3VzZWwtcHJldi1pY29uIHBpJzogdHJ1ZSwgJ3BpLWNoZXZyb24tbGVmdCc6ICFpc1ZlcnRpY2FsKCksICdwaS1jaGV2cm9uLXVwJzogaXNWZXJ0aWNhbCgpfVwiPjwvc3Bhbj5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicC1jYXJvdXNlbC1pdGVtcy1jb250ZW50XCIgW25nU3R5bGVdPVwieydoZWlnaHQnOiBpc1ZlcnRpY2FsKCkgPyB2ZXJ0aWNhbFZpZXdQb3J0SGVpZ2h0IDogJ2F1dG8nfVwiPlxuXHRcdFx0XHRcdFx0PGRpdiAjaXRlbXNDb250YWluZXIgY2xhc3M9XCJwLWNhcm91c2VsLWl0ZW1zLWNvbnRhaW5lclwiICh0cmFuc2l0aW9uZW5kKT1cIm9uVHJhbnNpdGlvbkVuZCgpXCIgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCIgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjbG9uZWRJdGVtc0ZvclN0YXJ0aW5nOyBsZXQgaW5kZXggPSBpbmRleFwiIFtuZ0NsYXNzXT0gXCJ7J3AtY2Fyb3VzZWwtaXRlbSBwLWNhcm91c2VsLWl0ZW0tY2xvbmVkJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1hY3RpdmUnOiAodG90YWxTaGlmdGVkSXRlbXMgKiAtMSkgPT09ICh2YWx1ZS5sZW5ndGgpLFxuXHRcdFx0XHRcdFx0XHQgICAgJ3AtY2Fyb3VzZWwtaXRlbS1zdGFydCc6IDAgPT09IGluZGV4LFxuXHRcdFx0XHRcdFx0XHQgICAgJ3AtY2Fyb3VzZWwtaXRlbS1lbmQnOiAoY2xvbmVkSXRlbXNGb3JTdGFydGluZy5sZW5ndGggLSAxKSA9PT0gaW5kZXh9XCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIiBbbmdDbGFzc109IFwieydwLWNhcm91c2VsLWl0ZW0nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1jYXJvdXNlbC1pdGVtLWFjdGl2ZSc6IChmaXJzdEluZGV4KCkgPD0gaW5kZXggJiYgbGFzdEluZGV4KCkgPj0gaW5kZXgpLFxuXHRcdFx0XHRcdFx0XHQgICAgJ3AtY2Fyb3VzZWwtaXRlbS1zdGFydCc6IGZpcnN0SW5kZXgoKSA9PT0gaW5kZXgsXG5cdFx0XHRcdFx0XHRcdCAgICAncC1jYXJvdXNlbC1pdGVtLWVuZCc6IGxhc3RJbmRleCgpID09PSBpbmRleH1cIj5cblx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNsb25lZEl0ZW1zRm9yRmluaXNoaW5nOyBsZXQgaW5kZXggPSBpbmRleFwiIFtuZ0NsYXNzXT0gXCJ7J3AtY2Fyb3VzZWwtaXRlbSBwLWNhcm91c2VsLWl0ZW0tY2xvbmVkJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtY2Fyb3VzZWwtaXRlbS1hY3RpdmUnOiAoKHRvdGFsU2hpZnRlZEl0ZW1zICotMSkgPT09IG51bVZpc2libGUpLFxuXHRcdFx0XHRcdFx0XHQgICAgJ3AtY2Fyb3VzZWwtaXRlbS1zdGFydCc6IDAgPT09IGluZGV4LFxuXHRcdFx0XHRcdFx0XHQgICAgJ3AtY2Fyb3VzZWwtaXRlbS1lbmQnOiAoY2xvbmVkSXRlbXNGb3JGaW5pc2hpbmcubGVuZ3RoIC0gMSkgPT09IGluZGV4fVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93TmF2aWdhdG9yc1wiIFtuZ0NsYXNzXT1cInsncC1jYXJvdXNlbC1uZXh0IHAtbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogaXNGb3J3YXJkTmF2RGlzYWJsZWQoKX1cIiBbZGlzYWJsZWRdPVwiaXNGb3J3YXJkTmF2RGlzYWJsZWQoKVwiIChjbGljayk9XCJuYXZGb3J3YXJkKCRldmVudClcIiBwUmlwcGxlPlxuXHRcdFx0XHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwieydwLWNhcm91c2VsLXByZXYtaWNvbiBwaSc6IHRydWUsICdwaS1jaGV2cm9uLXJpZ2h0JzogIWlzVmVydGljYWwoKSwgJ3BpLWNoZXZyb24tZG93bic6IGlzVmVydGljYWwoKX1cIj48L3NwYW4+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8dWwgW25nQ2xhc3NdPVwiJ3AtY2Fyb3VzZWwtaW5kaWNhdG9ycyBwLXJlc2V0J1wiIFtjbGFzc109XCJpbmRpY2F0b3JzQ29udGVudENsYXNzXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yc0NvbnRlbnRTdHlsZVwiICpuZ0lmPVwic2hvd0luZGljYXRvcnNcIj5cblx0XHRcdFx0XHQ8bGkgKm5nRm9yPVwibGV0IHRvdGFsRG90IG9mIHRvdGFsRG90c0FycmF5KCk7IGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7J3AtY2Fyb3VzZWwtaW5kaWNhdG9yJzp0cnVlLCdwLWhpZ2hsaWdodCc6IF9wYWdlID09PSBpfVwiPlxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiJ3AtbGluaydcIiAoY2xpY2spPVwib25Eb3RDbGljaygkZXZlbnQsIGkpXCIgW2NsYXNzXT1cImluZGljYXRvclN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJpbmRpY2F0b3JTdHlsZVwiPjwvYnV0dG9uPlxuXHRcdFx0XHRcdDwvbGk+XG5cdFx0XHRcdDwvdWw+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJwLWNhcm91c2VsLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyRmFjZXQgfHwgZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXG5cdEBJbnB1dCgpIGdldCBwYWdlKCk6bnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fcGFnZTtcblx0fVxuXHRzZXQgcGFnZSh2YWw6bnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuaXNDcmVhdGVkICYmIHZhbCAhPT0gdGhpcy5fcGFnZSkge1xuXHRcdFx0aWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuXHRcdFx0XHR0aGlzLnN0b3BBdXRvcGxheSgpO1xuXHRcdFx0XHR0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbCA+IHRoaXMuX3BhZ2UgJiYgdmFsIDw9ICh0aGlzLnRvdGFsRG90cygpIC0gMSkpIHtcblx0XHRcdFx0dGhpcy5zdGVwKC0xLCB2YWwpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAodmFsIDwgdGhpcy5fcGFnZSApIHtcblx0XHRcdFx0dGhpcy5zdGVwKDEsIHZhbCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5fcGFnZSA9IHZhbDtcblx0fVxuXG5cdEBJbnB1dCgpIGdldCBudW1WaXNpYmxlKCk6bnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fbnVtVmlzaWJsZTtcblx0fVxuXHRzZXQgbnVtVmlzaWJsZSh2YWw6bnVtYmVyKSB7XG5cdFx0dGhpcy5fbnVtVmlzaWJsZSA9IHZhbDtcblx0fVxuXG5cdEBJbnB1dCgpIGdldCBudW1TY3JvbGwoKTpudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9udW1WaXNpYmxlO1xuXHR9XG5cdHNldCBudW1TY3JvbGwodmFsOm51bWJlcikge1xuXHRcdHRoaXMuX251bVNjcm9sbCA9IHZhbDtcblx0fVxuXG5cdEBJbnB1dCgpIHJlc3BvbnNpdmVPcHRpb25zOiBhbnlbXTtcblxuXHRASW5wdXQoKSBvcmllbnRhdGlvbiA9IFwiaG9yaXpvbnRhbFwiO1xuXG5cdEBJbnB1dCgpIHZlcnRpY2FsVmlld1BvcnRIZWlnaHQgPSBcIjMwMHB4XCI7XG5cblx0QElucHV0KCkgY29udGVudENsYXNzOiBzdHJpbmcgPSBcIlwiO1xuXG5cdEBJbnB1dCgpIGluZGljYXRvcnNDb250ZW50Q2xhc3M6IHN0cmluZyA9IFwiXCI7XG5cblx0QElucHV0KCkgaW5kaWNhdG9yc0NvbnRlbnRTdHlsZTogYW55O1xuXG5cdEBJbnB1dCgpIGluZGljYXRvclN0eWxlQ2xhc3M6IHN0cmluZyA9IFwiXCI7XG5cblx0QElucHV0KCkgaW5kaWNhdG9yU3R5bGU6IGFueTtcblxuXHRASW5wdXQoKSBnZXQgdmFsdWUoKSA6YW55W10ge1xuXHRcdHJldHVybiB0aGlzLl92YWx1ZTtcblx0fTtcblx0c2V0IHZhbHVlKHZhbCkge1xuXHRcdHRoaXMuX3ZhbHVlID0gdmFsO1xuXHR9XG5cblx0QElucHV0KCkgY2lyY3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRASW5wdXQoKSBzaG93SW5kaWNhdG9yczogYm9vbGVhbiA9IHRydWU7XG5cblx0QElucHV0KCkgc2hvd05hdmlnYXRvcnM6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdEBJbnB1dCgpIGF1dG9wbGF5SW50ZXJ2YWw6bnVtYmVyID0gMDtcblxuXHRASW5wdXQoKSBzdHlsZTogYW55O1xuXG5cdEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBvblBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBWaWV3Q2hpbGQoJ2l0ZW1zQ29udGFpbmVyJykgaXRlbXNDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cblx0QENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXIpIGZvb3RlckZhY2V0O1xuXG5cdEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuXHRfbnVtVmlzaWJsZTogbnVtYmVyID0gMTtcblxuXHRfbnVtU2Nyb2xsOiBudW1iZXIgPSAxO1xuXG5cdF9vbGROdW1TY3JvbGw6IG51bWJlciA9IDA7XG5cblx0cHJldlN0YXRlOiBhbnkgPSB7XG5cdFx0bnVtU2Nyb2xsOjAsXG5cdFx0bnVtVmlzaWJsZTowLFxuXHRcdHZhbHVlOiBbXVxuXHR9O1xuXG5cdGRlZmF1bHROdW1TY3JvbGw6bnVtYmVyID0gMTtcblxuXHRkZWZhdWx0TnVtVmlzaWJsZTpudW1iZXIgPSAxO1xuXG5cdF9wYWdlOiBudW1iZXIgPSAwO1xuXG5cdF92YWx1ZTogYW55W107XG5cblx0Y2Fyb3VzZWxTdHlsZTphbnk7XG5cblx0aWQ6c3RyaW5nO1xuXG5cdHRvdGFsU2hpZnRlZEl0ZW1zO1xuXG5cdGlzUmVtYWluaW5nSXRlbXNBZGRlZDpib29sZWFuID0gZmFsc2U7XG5cblx0YW5pbWF0aW9uVGltZW91dDphbnk7XG5cblx0dHJhbnNsYXRlVGltZW91dDphbnk7XG5cblx0cmVtYWluaW5nSXRlbXM6IG51bWJlciA9IDA7XG5cblx0X2l0ZW1zOiBhbnlbXTtcblxuXHRzdGFydFBvczogYW55O1xuXG5cdGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuXHRjbG9uZWRJdGVtc0ZvclN0YXJ0aW5nOiBhbnlbXTtcblxuXHRjbG9uZWRJdGVtc0ZvckZpbmlzaGluZzogYW55W107XG5cblx0YWxsb3dBdXRvcGxheTogYm9vbGVhbjtcblxuXHRpbnRlcnZhbDogYW55O1xuXG5cdGlzQ3JlYXRlZDogYm9vbGVhbjtcblxuXHRzd2lwZVRocmVzaG9sZDogbnVtYmVyID0gMjA7XG5cbiAgICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuXHRcdHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnBhZ2UgKiB0aGlzLm51bVNjcm9sbCAqIC0xO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG5cdFx0aWYgKHNpbXBsZUNoYW5nZS52YWx1ZSkge1xuXHRcdFx0aWYgKHRoaXMuY2lyY3VsYXIgJiYgdGhpcy5fdmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zZXRDbG9uZUl0ZW1zKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaXNDcmVhdGVkKSB7XG5cblx0XHRcdGlmIChzaW1wbGVDaGFuZ2UubnVtVmlzaWJsZSkge1xuXHRcdFx0XHRpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuXHRcdFx0XHRcdHRoaXMuZGVmYXVsdE51bVZpc2libGUgPSB0aGlzLm51bVZpc2libGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5pc0NpcmN1bGFyKCkpIHtcblx0XHRcdFx0XHR0aGlzLnNldENsb25lSXRlbXMoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuY3JlYXRlU3R5bGUoKTtcblx0XHRcdFx0dGhpcy5jYWxjdWxhdGVQb3NpdGlvbigpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2ltcGxlQ2hhbmdlLm51bVNjcm9sbCkge1xuXHRcdFx0XHRpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuXHRcdFx0XHRcdHRoaXMuZGVmYXVsdE51bVNjcm9sbCA9IHRoaXMubnVtU2Nyb2xsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0bmdBZnRlckNvbnRlbnRJbml0KCkge1xuXHRcdHRoaXMuaWQgPSBVbmlxdWVDb21wb25lbnRJZCgpO1xuXHRcdHRoaXMuYWxsb3dBdXRvcGxheSA9ICEhdGhpcy5hdXRvcGxheUludGVydmFsO1xuXG5cdFx0aWYgKHRoaXMuY2lyY3VsYXIpIHtcblx0XHRcdHRoaXMuc2V0Q2xvbmVJdGVtcygpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zKSB7XG5cdFx0XHR0aGlzLmRlZmF1bHROdW1TY3JvbGwgPSB0aGlzLl9udW1TY3JvbGw7XG5cdFx0XHR0aGlzLmRlZmF1bHROdW1WaXNpYmxlID0gdGhpcy5fbnVtVmlzaWJsZTtcblx0XHR9XG5cblx0XHR0aGlzLmNyZWF0ZVN0eWxlKCk7XG5cdFx0dGhpcy5jYWxjdWxhdGVQb3NpdGlvbigpO1xuXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcblx0XHRcdHRoaXMuYmluZERvY3VtZW50TGlzdGVuZXJzKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0c3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuXHRcdFx0XHRjYXNlICdpdGVtJzpcblx0XHRcdFx0XHR0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuXHRcdGNvbnN0IGlzQ2lyY3VsYXIgPSB0aGlzLmlzQ2lyY3VsYXIoKTtcblx0XHRsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zO1xuXG5cdFx0aWYgKHRoaXMudmFsdWUgJiYgdGhpcy5pdGVtc0NvbnRhaW5lciAmJiAodGhpcy5wcmV2U3RhdGUubnVtU2Nyb2xsICE9PSB0aGlzLl9udW1TY3JvbGwgfHwgdGhpcy5wcmV2U3RhdGUubnVtVmlzaWJsZSAhPT0gdGhpcy5fbnVtVmlzaWJsZSB8fCB0aGlzLnByZXZTdGF0ZS52YWx1ZS5sZW5ndGggIT09IHRoaXMudmFsdWUubGVuZ3RoKSkge1xuXHRcdFx0aWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuXHRcdFx0XHR0aGlzLnN0b3BBdXRvcGxheSgpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnJlbWFpbmluZ0l0ZW1zID0gKHRoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy5fbnVtVmlzaWJsZSkgJSB0aGlzLl9udW1TY3JvbGw7XG5cblx0XHRcdGxldCBwYWdlID0gdGhpcy5fcGFnZTtcblx0XHRcdGlmICh0aGlzLnRvdGFsRG90cygpICE9PSAwICYmIHBhZ2UgPj0gdGhpcy50b3RhbERvdHMoKSkge1xuICAgICAgICAgICAgICAgIHBhZ2UgPSB0aGlzLnRvdGFsRG90cygpIC0gMTtcblx0XHRcdFx0dGhpcy5fcGFnZSA9IHBhZ2U7XG5cdFx0XHRcdHRoaXMub25QYWdlLmVtaXQoe1xuXHRcdFx0XHRcdHBhZ2U6IHRoaXMucGFnZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgPSAocGFnZSAqIHRoaXMuX251bVNjcm9sbCkgKiAtMTtcbiAgICAgICAgICAgIGlmIChpc0NpcmN1bGFyKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgLT0gdGhpcy5fbnVtVmlzaWJsZTtcbiAgICAgICAgICAgIH1cblxuXHRcdFx0aWYgKHBhZ2UgPT09ICh0aGlzLnRvdGFsRG90cygpIC0gMSkgJiYgdGhpcy5yZW1haW5pbmdJdGVtcyA+IDApIHtcblx0XHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgKz0gKC0xICogdGhpcy5yZW1haW5pbmdJdGVtcykgKyB0aGlzLl9udW1TY3JvbGw7XG5cdFx0XHRcdHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodG90YWxTaGlmdGVkSXRlbXMgIT09IHRoaXMudG90YWxTaGlmdGVkSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICB9XG5cblx0XHRcdHRoaXMuX29sZE51bVNjcm9sbCA9IHRoaXMuX251bVNjcm9sbDtcblx0XHRcdHRoaXMucHJldlN0YXRlLm51bVNjcm9sbCA9IHRoaXMuX251bVNjcm9sbDtcblx0XHRcdHRoaXMucHJldlN0YXRlLm51bVZpc2libGUgPSB0aGlzLl9udW1WaXNpYmxlO1xuXHRcdFx0dGhpcy5wcmV2U3RhdGUudmFsdWUgPSBbLi4udGhpcy5fdmFsdWVdO1xuXG5cdFx0XHRpZiAodGhpcy50b3RhbERvdHMoKSA+IDAgICYmIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCkge1xuXHRcdFx0XHR0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyBgdHJhbnNsYXRlM2QoMCwgJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAvIHRoaXMuX251bVZpc2libGUpfSUsIDApYCA6IGB0cmFuc2xhdGUzZCgke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMC8gdGhpcy5fbnVtVmlzaWJsZSl9JSwgMCwgMClgO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmlzQ3JlYXRlZCA9IHRydWU7XG5cblx0XHRcdGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwgJiYgdGhpcy5pc0F1dG9wbGF5KCkpIHtcblx0XHRcdFx0dGhpcy5zdGFydEF1dG9wbGF5KCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGlzQ2lyY3VsYXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IC0xICogdGhpcy5fbnVtVmlzaWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRvdGFsU2hpZnRlZEl0ZW1zID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSAtMSAqIHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbWFpbmluZ0l0ZW1zID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG90YWxTaGlmdGVkSXRlbXMgIT09IHRoaXMudG90YWxTaGlmdGVkSXRlbXMpIHtcblx0XHRcdFx0dGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICAgICAgfVxuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZVN0eWxlKCkge1xuXHRcdFx0aWYgKCF0aGlzLmNhcm91c2VsU3R5bGUpIHtcblx0XHRcdFx0dGhpcy5jYXJvdXNlbFN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblx0XHRcdFx0dGhpcy5jYXJvdXNlbFN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY2Fyb3VzZWxTdHlsZSk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBpbm5lckhUTUwgPSBgXG4gICAgICAgICAgICAjJHt0aGlzLmlkfSAucC1jYXJvdXNlbC1pdGVtIHtcblx0XHRcdFx0ZmxleDogMSAwICR7ICgxMDAvIHRoaXMubnVtVmlzaWJsZSkgfSVcblx0XHRcdH1cbiAgICAgICAgYDtcblxuXHRcdFx0aWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcblx0XHRcdFx0dGhpcy5yZXNwb25zaXZlT3B0aW9ucy5zb3J0KChkYXRhMSwgZGF0YTIpID0+IHtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZTEgPSBkYXRhMS5icmVha3BvaW50O1xuXHRcdFx0XHRcdGNvbnN0IHZhbHVlMiA9IGRhdGEyLmJyZWFrcG9pbnQ7XG5cdFx0XHRcdFx0bGV0IHJlc3VsdCA9IG51bGw7XG5cblx0XHRcdFx0XHRpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpXG5cdFx0XHRcdFx0XHRyZXN1bHQgPSAtMTtcblx0XHRcdFx0XHRlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcblx0XHRcdFx0XHRcdHJlc3VsdCA9IDE7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG5cdFx0XHRcdFx0XHRyZXN1bHQgPSAwO1xuXHRcdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKVxuXHRcdFx0XHRcdFx0cmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRyZXN1bHQgPSAodmFsdWUxIDwgdmFsdWUyKSA/IC0xIDogKHZhbHVlMSA+IHZhbHVlMikgPyAxIDogMDtcblxuXHRcdFx0XHRcdHJldHVybiAtMSAqIHJlc3VsdDtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3BvbnNpdmVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0bGV0IHJlcyA9IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV07XG5cblx0XHRcdFx0XHRpbm5lckhUTUwgKz0gYFxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAke3Jlcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgIyR7dGhpcy5pZH0gLnAtY2Fyb3VzZWwtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMSAwICR7ICgxMDAvIHJlcy5udW1WaXNpYmxlKSB9JVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuY2Fyb3VzZWxTdHlsZS5pbm5lckhUTUwgPSBpbm5lckhUTUw7XG5cdFx0fVxuXG5cdGNhbGN1bGF0ZVBvc2l0aW9uKCkge1xuXHRcdGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zKSB7XG5cdFx0XHRsZXQgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcblx0XHRcdGxldCBtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSB7XG5cdFx0XHRcdG51bVZpc2libGU6IHRoaXMuZGVmYXVsdE51bVZpc2libGUsXG5cdFx0XHRcdG51bVNjcm9sbDogdGhpcy5kZWZhdWx0TnVtU2Nyb2xsXG5cdFx0XHR9O1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IHJlcyA9IHRoaXMucmVzcG9uc2l2ZU9wdGlvbnNbaV07XG5cblx0XHRcdFx0aWYgKHBhcnNlSW50KHJlcy5icmVha3BvaW50LCAxMCkgPj0gd2luZG93V2lkdGgpIHtcblx0XHRcdFx0XHRtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSByZXM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuX251bVNjcm9sbCAhPT0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVNjcm9sbCkge1xuXHRcdFx0XHRsZXQgcGFnZSA9IHRoaXMuX3BhZ2U7XG5cdFx0XHRcdHBhZ2UgPSBNYXRoLmZsb29yKChwYWdlICogdGhpcy5fbnVtU2Nyb2xsKSAvIG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1TY3JvbGwpO1xuXG5cdFx0XHRcdGxldCB0b3RhbFNoaWZ0ZWRJdGVtcyA9IChtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtU2Nyb2xsICogdGhpcy5wYWdlKSAqIC0xO1xuXG5cdFx0XHRcdGlmICh0aGlzLmlzQ2lyY3VsYXIoKSkge1xuXHRcdFx0XHRcdHRvdGFsU2hpZnRlZEl0ZW1zIC09IG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1WaXNpYmxlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyA9IHRvdGFsU2hpZnRlZEl0ZW1zO1xuXHRcdFx0XHR0aGlzLl9udW1TY3JvbGwgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtU2Nyb2xsO1xuXG5cdFx0XHRcdHRoaXMuX3BhZ2UgPSBwYWdlO1xuXHRcdFx0XHR0aGlzLm9uUGFnZS5lbWl0KHtcblx0XHRcdFx0XHRwYWdlOiB0aGlzLnBhZ2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLl9udW1WaXNpYmxlICE9PSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtVmlzaWJsZSkge1xuXHRcdFx0XHR0aGlzLl9udW1WaXNpYmxlID0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVZpc2libGU7XG5cdFx0XHRcdHRoaXMuc2V0Q2xvbmVJdGVtcygpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXHRcdH1cblx0fVxuXG5cdHNldENsb25lSXRlbXMoKSB7XG5cdFx0dGhpcy5jbG9uZWRJdGVtc0ZvclN0YXJ0aW5nID0gW107XG5cdFx0dGhpcy5jbG9uZWRJdGVtc0ZvckZpbmlzaGluZyA9IFtdO1xuXHRcdGlmICh0aGlzLmlzQ2lyY3VsYXIoKSkge1xuXHRcdFx0dGhpcy5jbG9uZWRJdGVtc0ZvclN0YXJ0aW5nLnB1c2goLi4udGhpcy52YWx1ZS5zbGljZSgtMSAqIHRoaXMuX251bVZpc2libGUpKTtcblx0XHRcdHRoaXMuY2xvbmVkSXRlbXNGb3JGaW5pc2hpbmcucHVzaCguLi50aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuX251bVZpc2libGUpKTtcblx0XHR9XG5cdH1cblxuXHRmaXJzdEluZGV4KCkge1xuXHRcdHJldHVybiB0aGlzLmlzQ2lyY3VsYXIoKSA/ICgtMSAqICh0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICsgdGhpcy5udW1WaXNpYmxlKSkgOiAodGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqIC0xKTtcblx0fVxuXG5cdGxhc3RJbmRleCgpIHtcblx0XHRyZXR1cm4gdGhpcy5maXJzdEluZGV4KCkgKyB0aGlzLm51bVZpc2libGUgLSAxO1xuXHR9XG5cblx0dG90YWxEb3RzKCkge1xuXHRcdHJldHVybiB0aGlzLnZhbHVlID8gTWF0aC5jZWlsKCh0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMuX251bVZpc2libGUpIC8gdGhpcy5fbnVtU2Nyb2xsKSArIDEgOiAwO1xuXHR9XG5cblx0dG90YWxEb3RzQXJyYXkoKSB7XG5cdFx0Y29uc3QgdG90YWxEb3RzID0gdGhpcy50b3RhbERvdHMoKTtcblx0XHRyZXR1cm4gdG90YWxEb3RzIDw9IDAgPyBbXSA6IEFycmF5KHRvdGFsRG90cykuZmlsbCgwKTtcblx0fVxuXG5cdGlzVmVydGljYWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG5cdH1cblxuXHRpc0NpcmN1bGFyKCkge1xuXHRcdHJldHVybiB0aGlzLmNpcmN1bGFyICYmIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPj0gdGhpcy5udW1WaXNpYmxlO1xuXHR9XG5cblx0aXNBdXRvcGxheSgpIHtcblx0XHRyZXR1cm4gdGhpcy5hdXRvcGxheUludGVydmFsICYmIHRoaXMuYWxsb3dBdXRvcGxheTtcblx0fVxuXG5cdGlzRm9yd2FyZE5hdkRpc2FibGVkKCkge1xuXHRcdHJldHVybiB0aGlzLmlzRW1wdHkoKSB8fCAodGhpcy5fcGFnZSA+PSAodGhpcy50b3RhbERvdHMoKSAtIDEpICYmICF0aGlzLmlzQ2lyY3VsYXIoKSk7XG5cdH1cblxuXHRpc0JhY2t3YXJkTmF2RGlzYWJsZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXNFbXB0eSgpIHx8ICh0aGlzLl9wYWdlIDw9IDAgICYmICF0aGlzLmlzQ2lyY3VsYXIoKSk7XG5cdH1cblxuXHRpc0VtcHR5KCkge1xuXHRcdHJldHVybiAhdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMDtcblx0fVxuXG5cdG5hdkZvcndhcmQoZSxpbmRleD8pIHtcblx0XHRpZiAodGhpcy5pc0NpcmN1bGFyKCkgfHwgdGhpcy5fcGFnZSA8ICh0aGlzLnRvdGFsRG90cygpIC0gMSkpIHtcblx0XHRcdHRoaXMuc3RlcCgtMSwgaW5kZXgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcblx0XHRcdHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cdFx0XHR0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZSAmJiBlLmNhbmNlbGFibGUpIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH1cblxuXHRuYXZCYWNrd2FyZChlLGluZGV4Pykge1xuXHRcdGlmICh0aGlzLmlzQ2lyY3VsYXIoKSB8fCB0aGlzLl9wYWdlICE9PSAwKSB7XG5cdFx0XHR0aGlzLnN0ZXAoMSwgaW5kZXgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcblx0XHRcdHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cdFx0XHR0aGlzLmFsbG93QXV0b3BsYXkgPSBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZSAmJiBlLmNhbmNlbGFibGUpIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH1cblxuXHRvbkRvdENsaWNrKGUsIGluZGV4KSB7XG5cdFx0bGV0IHBhZ2UgPSB0aGlzLl9wYWdlO1xuXG5cdFx0aWYgKHRoaXMuYXV0b3BsYXlJbnRlcnZhbCkge1xuXHRcdFx0dGhpcy5zdG9wQXV0b3BsYXkoKTtcblx0XHRcdHRoaXMuYWxsb3dBdXRvcGxheSA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChpbmRleCA+IHBhZ2UpIHtcblx0XHRcdHRoaXMubmF2Rm9yd2FyZChlLCBpbmRleCk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKGluZGV4IDwgcGFnZSkge1xuXHRcdFx0dGhpcy5uYXZCYWNrd2FyZChlLCBpbmRleCk7XG5cdFx0fVxuXHR9XG5cblx0c3RlcChkaXIsIHBhZ2UpIHtcblx0XHRsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zO1xuXHRcdGNvbnN0IGlzQ2lyY3VsYXIgPSB0aGlzLmlzQ2lyY3VsYXIoKTtcblxuXHRcdGlmIChwYWdlICE9IG51bGwpIHtcblx0XHRcdHRvdGFsU2hpZnRlZEl0ZW1zID0gKHRoaXMuX251bVNjcm9sbCAqIHBhZ2UpICogLTE7XG5cblx0XHRcdGlmIChpc0NpcmN1bGFyKSB7XG5cdFx0XHRcdHRvdGFsU2hpZnRlZEl0ZW1zIC09IHRoaXMuX251bVZpc2libGU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gZmFsc2U7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgKz0gKHRoaXMuX251bVNjcm9sbCAqIGRpcik7XG5cdFx0XHRpZiAodGhpcy5pc1JlbWFpbmluZ0l0ZW1zQWRkZWQpIHtcblx0XHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgKz0gdGhpcy5yZW1haW5pbmdJdGVtcyAtICh0aGlzLl9udW1TY3JvbGwgKiBkaXIpO1xuXHRcdFx0XHR0aGlzLmlzUmVtYWluaW5nSXRlbXNBZGRlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgb3JpZ2luYWxTaGlmdGVkSXRlbXMgPSBpc0NpcmN1bGFyID8gKHRvdGFsU2hpZnRlZEl0ZW1zICsgdGhpcy5fbnVtVmlzaWJsZSkgOiB0b3RhbFNoaWZ0ZWRJdGVtcztcblx0XHRcdHBhZ2UgPSBNYXRoLmFicyhNYXRoLmZsb29yKChvcmlnaW5hbFNoaWZ0ZWRJdGVtcyAvIHRoaXMuX251bVNjcm9sbCkpKTtcblx0XHR9XG5cblx0XHRpZiAoaXNDaXJjdWxhciAmJiB0aGlzLnBhZ2UgPT09ICh0aGlzLnRvdGFsRG90cygpIC0gMSkgJiYgZGlyID09PSAtMSkge1xuXHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgPSAtMSAqICh0aGlzLnZhbHVlLmxlbmd0aCArIHRoaXMuX251bVZpc2libGUpO1xuXHRcdFx0cGFnZSA9IDA7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKGlzQ2lyY3VsYXIgJiYgdGhpcy5wYWdlID09PSAwICYmIGRpciA9PT0gMSkge1xuXHRcdFx0dG90YWxTaGlmdGVkSXRlbXMgPSAwO1xuXHRcdFx0cGFnZSA9ICh0aGlzLnRvdGFsRG90cygpIC0gMSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHBhZ2UgPT09ICh0aGlzLnRvdGFsRG90cygpIC0gMSkgJiYgdGhpcy5yZW1haW5pbmdJdGVtcyA+IDApIHtcblx0XHRcdHRvdGFsU2hpZnRlZEl0ZW1zICs9ICgodGhpcy5yZW1haW5pbmdJdGVtcyAqIC0xKSAtICh0aGlzLl9udW1TY3JvbGwgKiBkaXIpKTtcblx0XHRcdHRoaXMuaXNSZW1haW5pbmdJdGVtc0FkZGVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pdGVtc0NvbnRhaW5lcikge1xuXHRcdFx0dGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IHRoaXMuaXNWZXJ0aWNhbCgpID8gYHRyYW5zbGF0ZTNkKDAsICR7dG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwLyB0aGlzLl9udW1WaXNpYmxlKX0lLCAwKWAgOiBgdHJhbnNsYXRlM2QoJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAvIHRoaXMuX251bVZpc2libGUpfSUsIDAsIDApYDtcblx0XHRcdHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSA1MDBtcyBlYXNlIDBzJztcblx0XHR9XG5cblx0XHR0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG5cdFx0dGhpcy5fcGFnZSA9IHBhZ2U7XG5cdFx0dGhpcy5vblBhZ2UuZW1pdCh7XG5cdFx0XHRwYWdlOiB0aGlzLnBhZ2Vcblx0XHR9KTtcblx0fVxuXG5cdHN0YXJ0QXV0b3BsYXkoKSB7XG5cdFx0dGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdGlmICh0aGlzLnRvdGFsRG90cygpID4gMCkge1xuXHRcdFx0XHRpZiAodGhpcy5wYWdlID09PSAodGhpcy50b3RhbERvdHMoKSAtIDEpKSB7XG5cdFx0XHRcdFx0dGhpcy5zdGVwKC0xLCAwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnN0ZXAoLTEsIHRoaXMucGFnZSArIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpO1xuXHR9XG5cblx0c3RvcEF1dG9wbGF5KCkge1xuXHRcdGlmICh0aGlzLmludGVydmFsKSB7XG5cdFx0XHRjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuXHRcdH1cblx0fVxuXG5cdG9uVHJhbnNpdGlvbkVuZCgpIHtcblx0XHRpZiAodGhpcy5pdGVtc0NvbnRhaW5lcikge1xuXHRcdFx0dGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnJztcblxuXHRcdFx0aWYgKCh0aGlzLnBhZ2UgPT09IDAgfHwgdGhpcy5wYWdlID09PSAodGhpcy50b3RhbERvdHMoKSAtIDEpKSAmJiB0aGlzLmlzQ2lyY3VsYXIoKSkge1xuXHRcdFx0XHR0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyBgdHJhbnNsYXRlM2QoMCwgJHt0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICogKDEwMC8gdGhpcy5fbnVtVmlzaWJsZSl9JSwgMClgIDogYHRyYW5zbGF0ZTNkKCR7dGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAvIHRoaXMuX251bVZpc2libGUpfSUsIDAsIDApYDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRvblRvdWNoU3RhcnQoZSkge1xuXHRcdGxldCB0b3VjaG9iaiA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XG5cblx0XHR0aGlzLnN0YXJ0UG9zID0ge1xuXHRcdFx0eDogdG91Y2hvYmoucGFnZVgsXG5cdFx0XHR5OiB0b3VjaG9iai5wYWdlWVxuXHRcdH07XG5cdH1cblxuXHRvblRvdWNoTW92ZShlKSB7XG5cdFx0aWYgKGUuY2FuY2VsYWJsZSkge1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fVxuXHRvblRvdWNoRW5kKGUpIHtcblx0XHRsZXQgdG91Y2hvYmogPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xuXG5cdFx0aWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG5cdFx0XHR0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsICh0b3VjaG9iai5wYWdlWSAtIHRoaXMuc3RhcnRQb3MueSkpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHRoaXMuY2hhbmdlUGFnZU9uVG91Y2goZSwgKHRvdWNob2JqLnBhZ2VYIC0gdGhpcy5zdGFydFBvcy54KSk7XG5cdFx0fVxuXHR9XG5cblx0Y2hhbmdlUGFnZU9uVG91Y2goZSwgZGlmZikge1xuXHRcdGlmIChNYXRoLmFicyhkaWZmKSA+IHRoaXMuc3dpcGVUaHJlc2hvbGQpIHtcblx0XHRcdGlmIChkaWZmIDwgMCkge1xuXHRcdFx0XHR0aGlzLm5hdkZvcndhcmQoZSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5uYXZCYWNrd2FyZChlKTtcblxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGJpbmREb2N1bWVudExpc3RlbmVycygpIHtcblx0XHRpZiAoIXRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuXHRcdFx0dGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gKGUpID0+IHtcblx0XHRcdFx0dGhpcy5jYWxjdWxhdGVQb3NpdGlvbigpO1xuXHRcdFx0fTtcblxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG5cdFx0fVxuXHR9XG5cblx0dW5iaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKSB7XG5cdFx0aWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuXHRcdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG5cdFx0XHR0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICh0aGlzLnJlc3BvbnNpdmVPcHRpb25zKSB7XG5cdFx0XHR0aGlzLnVuYmluZERvY3VtZW50TGlzdGVuZXJzKCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpIHtcblx0XHRcdHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cdFx0fVxuICAgIH1cblxufVxuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJpcHBsZU1vZHVsZV0sXG5cdGV4cG9ydHM6IFtDb21tb25Nb2R1bGUsIENhcm91c2VsLCBTaGFyZWRNb2R1bGVdLFxuXHRkZWNsYXJhdGlvbnM6IFtDYXJvdXNlbF1cbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/carousel/primeng-carousel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/carousel/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/carousel/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYXJvdXNlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJvdXNlbC9wcmltZW5nLWNhcm91c2VsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/carousel/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/carousel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/carousel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './carousel';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXJvdXNlbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYXJvdXNlbCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/cascadeselect/cascadeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/cascadeselect/cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/cascadeselect/cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,706 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, Output, EventEmitter, ViewChild, forwardRef, Inject } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/api";
+export const CASCADESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => CascadeSelect),
+    multi: true
+};
+export class CascadeSelectSub {
+    constructor(cascadeSelect, el) {
+        this.el = el;
+        this.level = 0;
+        this.onSelect = new EventEmitter();
+        this.onGroupSelect = new EventEmitter();
+        this.activeOption = null;
+        this.cascadeSelect = cascadeSelect;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    ;
+    set parentActive(val) {
+        if (!val) {
+            this.activeOption = null;
+        }
+        this._parentActive = val;
+    }
+    ngOnInit() {
+        if (this.selectionPath && this.options && !this.dirty) {
+            for (let option of this.options) {
+                if (this.selectionPath.includes(option)) {
+                    this.activeOption = option;
+                    break;
+                }
+            }
+        }
+        if (!this.root) {
+            this.position();
+        }
+    }
+    onOptionClick(event, option) {
+        if (this.isOptionGroup(option)) {
+            this.activeOption = (this.activeOption === option) ? null : option;
+            this.onGroupSelect.emit({
+                originalEvent: event,
+                value: option
+            });
+        }
+        else {
+            this.onSelect.emit({
+                originalEvent: event,
+                value: this.getOptionValue(option)
+            });
+        }
+    }
+    onOptionSelect(event) {
+        this.onSelect.emit(event);
+    }
+    onOptionGroupSelect(event) {
+        this.onGroupSelect.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;
+    }
+    getOptionGroupChildren(optionGroup) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);
+    }
+    isOptionGroup(option) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);
+    }
+    getOptionLabelToRender(option) {
+        return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);
+    }
+    getItemClass(option) {
+        return {
+            'p-cascadeselect-item': true,
+            'p-cascadeselect-item-group': this.isOptionGroup(option),
+            'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)
+        };
+    }
+    isOptionActive(option) {
+        return this.activeOption === option;
+    }
+    onKeyDown(event, option, index) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'Down':
+            case 'ArrowDown':
+                var nextItem = this.el.nativeElement.children[0].children[index + 1];
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Up':
+            case 'ArrowUp':
+                var prevItem = this.el.nativeElement.children[0].children[index - 1];
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Right':
+            case 'ArrowRight':
+                if (this.isOptionGroup(option)) {
+                    if (this.isOptionActive(option)) {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }
+                    else {
+                        this.activeOption = option;
+                    }
+                }
+                event.preventDefault();
+                break;
+            case 'Left':
+            case 'ArrowLeft':
+                this.activeOption = null;
+                var parentList = listItem.parentElement.parentElement.parentElement;
+                if (parentList) {
+                    parentList.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Enter':
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                this.cascadeSelect.hide();
+                event.preventDefault();
+                break;
+        }
+    }
+    position() {
+        const parentItem = this.el.nativeElement.parentElement;
+        const containerOffset = DomHandler.getOffset(parentItem);
+        const viewport = DomHandler.getViewport();
+        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);
+        const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
+        if ((parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            this.el.nativeElement.children[0].style.left = '-200%';
+        }
+    }
+}
+CascadeSelectSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, deps: [{ token: forwardRef(() => CascadeSelect) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelectSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: { selectionPath: "selectionPath", options: "options", optionGroupChildren: "optionGroupChildren", optionTemplate: "optionTemplate", level: "level", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", dirty: "dirty", root: "root", parentActive: "parentActive" }, outputs: { onSelect: "onSelect", onGroupSelect: "onGroupSelect" }, ngImport: i0, template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cascadeSelectSub',
+                    template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => CascadeSelect)]
+                }] }, { type: i0.ElementRef }]; }, propDecorators: { selectionPath: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionTemplate: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], dirty: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], onSelect: [{
+                type: Output
+            }], onGroupSelect: [{
+                type: Output
+            }], parentActive: [{
+                type: Input
+            }] } });
+export class CascadeSelect {
+    constructor(el, cd, config, overlayService) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onGroupChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onBeforeShow = new EventEmitter();
+        this.onBeforeHide = new EventEmitter();
+        this.selectionPath = null;
+        this.focused = false;
+        this.filled = false;
+        this.overlayVisible = false;
+        this.dirty = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.updateSelectionPath();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'option':
+                    this.optionTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOptionSelect(event) {
+        this.value = event.value;
+        this.updateSelectionPath();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+        this.hide();
+        this.focusInputEl.nativeElement.focus();
+    }
+    onOptionGroupSelect(event) {
+        this.dirty = true;
+        this.onGroupChange.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupChildren(optionGroup, level) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);
+    }
+    isOptionGroup(option, level) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);
+    }
+    updateSelectionPath() {
+        let path;
+        if (this.value != null && this.options) {
+            for (let option of this.options) {
+                path = this.findModelOptionInGroup(option, 0);
+                if (path) {
+                    break;
+                }
+            }
+        }
+        this.selectionPath = path;
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);
+    }
+    findModelOptionInGroup(option, level) {
+        if (this.isOptionGroup(option, level)) {
+            let selectedOption;
+            for (let childOption of this.getOptionGroupChildren(option, level)) {
+                selectedOption = this.findModelOptionInGroup(childOption, level + 1);
+                if (selectedOption) {
+                    selectedOption.unshift(option);
+                    return selectedOption;
+                }
+            }
+        }
+        else if ((ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey))) {
+            return [option];
+        }
+        return null;
+    }
+    show() {
+        this.onBeforeShow.emit();
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.onBeforeHide.emit();
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.overlayEl || !this.overlayEl || !this.overlayEl.contains(event.target)) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                this.show();
+            }
+            this.focusInputEl.nativeElement.focus();
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        this.onHide.emit();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.dirty = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateSelectionPath();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    label() {
+        if (this.selectionPath)
+            return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);
+        else
+            return this.placeholder || 'p-emptylabel';
+    }
+    onKeyDown(event) {
+        switch (event.code) {
+            case 'Down':
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    DomHandler.findSingle(this.overlayEl, '.p-cascadeselect-item').children[0].focus();
+                }
+                else if (event.altKey && this.options && this.options.length) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (!this.overlayVisible)
+                    this.show();
+                else
+                    this.hide();
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    containerClass() {
+        return {
+            'p-cascadeselect p-component p-inputwrapper': true,
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-cascadeselect-label': true,
+            'p-placeholder': this.label() === this.placeholder,
+            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)
+        };
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        this.overlayEl = null;
+    }
+}
+CascadeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelect, selector: "p-cascadeSelect", inputs: { styleClass: "styleClass", style: "style", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", placeholder: "placeholder", value: "value", dataKey: "dataKey", inputId: "inputId", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", appendTo: "appendTo", disabled: "disabled", rounded: "rounded", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onGroupChange: "onGroupChange", onShow: "onShow", onHide: "onHide", onBeforeShow: "onBeforeShow", onBeforeHide: "onBeforeHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [CASCADESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "focusInputEl", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"], components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-cascadeSelect', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [CASCADESELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], focusInputEl: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], onChange: [{
+                type: Output
+            }], onGroupChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onBeforeShow: [{
+                type: Output
+            }], onBeforeHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class CascadeSelectModule {
+}
+CascadeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CascadeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, declarations: [CascadeSelect, CascadeSelectSub], imports: [CommonModule, SharedModule, RippleModule], exports: [CascadeSelect, CascadeSelectSub, SharedModule] });
+CascadeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CascadeSelect, CascadeSelectSub, SharedModule],
+                    declarations: [CascadeSelect, CascadeSelectSub]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXNjYWRlc2VsZWN0L2Nhc2NhZGVzZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFlLGVBQWUsRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDblIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFpQyxNQUFNLGFBQWEsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFOUMsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQVE7SUFDN0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUM1QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUE0QkYsTUFBTSxPQUFPLGdCQUFnQjtJQTJDekIsWUFBcUQsYUFBYSxFQUFVLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFB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QUFFLFlBQVksQ0FBQztvQkFDbkQsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztvQkFDeEQsWUFBWSxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFJlbmRlcmVyMiwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlLCBQcmltZVRlbXBsYXRlLCBQcmltZU5HQ29uZmlnLCBPdmVybGF5U2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IE9iamVjdFV0aWxzLCBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IHRyaWdnZXIsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5cbmV4cG9ydCBjb25zdCBDQVNDQURFU0VMRUNUX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2FzY2FkZVNlbGVjdCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jYXNjYWRlU2VsZWN0U3ViJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8dWwgY2xhc3M9XCJwLWNhc2NhZGVzZWxlY3QtcGFuZWwgcC1jYXNjYWRlc2VsZWN0LWl0ZW1zXCIgW25nQ2xhc3NdPVwieydwLWNhc2NhZGVzZWxlY3QtcGFuZWwtcm9vdCc6IHJvb3R9XCIgcm9sZT1cImxpc3Rib3hcIiBhcmlhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1vcHRpb24gW25nRm9yT2ZdPVwib3B0aW9uc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwiZ2V0SXRlbUNsYXNzKG9wdGlvbilcIiByb2xlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXNjYWRlc2VsZWN0LWl0ZW0tY29udGVudFwiIChjbGljayk9XCJvbk9wdGlvbkNsaWNrKCRldmVudCwgb3B0aW9uKVwiIHRhYmluZGV4PVwiMFwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIG9wdGlvbiwgaSlcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlO2Vsc2UgZGVmYXVsdE9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jYXNjYWRlc2VsZWN0LWl0ZW0tdGV4dFwiPnt7Z2V0T3B0aW9uTGFiZWxUb1JlbmRlcihvcHRpb24pfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNhc2NhZGVzZWxlY3QtZ3JvdXAtaWNvbiBwaSBwaS1hbmdsZS1yaWdodFwiICpuZ0lmPVwiaXNPcHRpb25Hcm91cChvcHRpb24pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAtY2FzY2FkZVNlbGVjdFN1YiAqbmdJZj1cImlzT3B0aW9uR3JvdXAob3B0aW9uKSAmJiBpc09wdGlvbkFjdGl2ZShvcHRpb24pXCIgY2xhc3M9XCJwLWNhc2NhZGVzZWxlY3Qtc3VibGlzdFwiIFtzZWxlY3Rpb25QYXRoXT1cInNlbGVjdGlvblBhdGhcIiBbb3B0aW9uc109XCJnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlXCIgW2xldmVsXT1cImxldmVsICsgMVwiIChvblNlbGVjdCk9XCJvbk9wdGlvblNlbGVjdCgkZXZlbnQpXCIgKG9uT3B0aW9uR3JvdXBTZWxlY3QpPVwib25PcHRpb25Hcm91cFNlbGVjdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cExhYmVsXT1cIm9wdGlvbkdyb3VwTGFiZWxcIiBbb3B0aW9uR3JvdXBDaGlsZHJlbl09XCJvcHRpb25Hcm91cENoaWxkcmVuXCIgW3BhcmVudEFjdGl2ZV09XCJpc09wdGlvbkFjdGl2ZShvcHRpb24pXCIgW2RpcnR5XT1cImRpcnR5XCIgW29wdGlvblRlbXBsYXRlXT1cIm9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1jYXNjYWRlU2VsZWN0U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYXNjYWRlU2VsZWN0U3ViIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHNlbGVjdGlvblBhdGg6IGFueVtdO1xuXG4gICAgQElucHV0KCkgb3B0aW9uczogYW55W107XG5cbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cENoaWxkcmVuOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIG9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBvcHRpb25MYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpcnR5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcm9vdDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Hcm91cFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBnZXQgcGFyZW50QWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50QWN0aXZlO1xuICAgIH07XG4gICAgc2V0IHBhcmVudEFjdGl2ZSh2YWwpIHtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BhcmVudEFjdGl2ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBhY3RpdmVPcHRpb246IGFueSA9IG51bGw7XG5cbiAgICBfcGFyZW50QWN0aXZlOiBib29sZWFuO1xuXG4gICAgY2FzY2FkZVNlbGVjdDogQ2FzY2FkZVNlbGVjdDtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBDYXNjYWRlU2VsZWN0KSkgY2FzY2FkZVNlbGVjdCwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmNhc2NhZGVTZWxlY3QgPSBjYXNjYWRlU2VsZWN0IGFzIENhc2NhZGVTZWxlY3Q7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblBhdGggJiYgdGhpcy5vcHRpb25zICYmICF0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uUGF0aC5pbmNsdWRlcyhvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcHRpb25DbGljayhldmVudCwgb3B0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSAodGhpcy5hY3RpdmVPcHRpb24gPT09IG9wdGlvbikgPyBudWxsIDogb3B0aW9uO1xuXG4gICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWxlY3QuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcHRpb25TZWxlY3QoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbkdyb3VwU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Hcm91cFNlbGVjdC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiBvcHRpb247XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkdyb3VwTGFiZWwob3B0aW9uR3JvdXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBMYWJlbCkgOiBudWxsO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0aW9uR3JvdXApIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlblt0aGlzLmxldmVsXSk7XG4gICAgfVxuXG4gICAgaXNPcHRpb25Hcm91cChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb24sIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlblt0aGlzLmxldmVsXSk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWxUb1JlbmRlcihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pID8gdGhpcy5nZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbikgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUNsYXNzKG9wdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtY2FzY2FkZXNlbGVjdC1pdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLWNhc2NhZGVzZWxlY3QtaXRlbS1ncm91cCc6IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pLFxuICAgICAgICAgICAgJ3AtY2FzY2FkZXNlbGVjdC1pdGVtLWFjdGl2ZSBwLWhpZ2hsaWdodCc6IHRoaXMuaXNPcHRpb25BY3RpdmUob3B0aW9uKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNPcHRpb25BY3RpdmUob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU9wdGlvbiA9PT0gb3B0aW9uO1xuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudCwgb3B0aW9uLCBpbmRleCkge1xuICAgICAgICBsZXQgbGlzdEl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEl0ZW0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHZhciBwcmV2SXRlbSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbltpbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2SXRlbS5jaGlsZHJlblswXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uQWN0aXZlKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmNoaWxkcmVuWzFdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHZhciBwYXJlbnRMaXN0ID0gbGlzdEl0ZW0ucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50TGlzdC5jaGlsZHJlblswXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25DbGljayhldmVudCwgb3B0aW9uKTtcblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYXNjYWRlU2VsZWN0LmhpZGUoKTtcblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBwYXJlbnRJdGVtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHBhcmVudEl0ZW0pO1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IERvbUhhbmRsZXIuZ2V0Vmlld3BvcnQoKTtcbiAgICAgICAgY29uc3Qgc3VibGlzdFdpZHRoID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFBhcmVudCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRXaWR0aCA6IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgY29uc3QgaXRlbU91dGVyV2lkdGggPSBEb21IYW5kbGVyLmdldE91dGVyV2lkdGgocGFyZW50SXRlbS5jaGlsZHJlblswXSk7XG5cbiAgICAgICAgaWYgKChwYXJzZUludChjb250YWluZXJPZmZzZXQubGVmdCwgMTApICsgaXRlbU91dGVyV2lkdGggKyBzdWJsaXN0V2lkdGgpID4gKHZpZXdwb3J0LndpZHRoIC0gRG9tSGFuZGxlci5jYWxjdWxhdGVTY3JvbGxiYXJXaWR0aCgpKSkge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLnN0eWxlLmxlZnQgPSAnLTIwMCUnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY2FzY2FkZVNlbGVjdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzKClcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI2ZvY3VzSW5wdXQgdHlwZT1cInRleHRcIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgcmVhZG9ubHkgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGVcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwibGFiZWxDbGFzcygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlVGVtcGxhdGU7ZWxzZSBkZWZhdWx0VmFsdWVUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXJ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VmFsdWVUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAge3tsYWJlbCgpfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2FzY2FkZXNlbGVjdC10cmlnZ2VyXCIgcm9sZT1cImJ1dHRvblwiIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jYXNjYWRlc2VsZWN0LXRyaWdnZXItaWNvbiBwaSBwaS1jaGV2cm9uLWRvd25cIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNhc2NhZGVzZWxlY3QtcGFuZWwgcC1jb21wb25lbnRcIiAqbmdJZj1cIm92ZXJsYXlWaXNpYmxlXCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25Eb25lKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jYXNjYWRlc2VsZWN0LWl0ZW1zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtY2FzY2FkZVNlbGVjdFN1YiBbb3B0aW9uc109XCJvcHRpb25zXCIgW3NlbGVjdGlvblBhdGhdPVwic2VsZWN0aW9uUGF0aFwiIGNsYXNzPVwicC1jYXNjYWRlc2VsZWN0LWl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiIFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZVwiIFtsZXZlbF09XCIwXCIgW29wdGlvblRlbXBsYXRlXT1cIm9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cExhYmVsXT1cIm9wdGlvbkdyb3VwTGFiZWxcIiBbb3B0aW9uR3JvdXBDaGlsZHJlbl09XCJvcHRpb25Hcm91cENoaWxkcmVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbk9wdGlvblNlbGVjdCgkZXZlbnQpXCIgKG9uR3JvdXBTZWxlY3QpPVwib25PcHRpb25Hcm91cFNlbGVjdCgkZXZlbnQpXCIgW2RpcnR5XT1cImRpcnR5XCIgW3Jvb3RdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtY2FzY2FkZVNlbGVjdFN1Yj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQgcC1pbnB1dHdyYXBwZXInLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXNlZCB8fCBvdmVybGF5VmlzaWJsZSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0NBU0NBREVTRUxFQ1RfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FzY2FkZXNlbGVjdC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNjYWRlU2VsZWN0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIG9wdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cENoaWxkcmVuOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSByb3VuZGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzSW5wdXQnKSBmb2N1c0lucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJFbDogRWxlbWVudFJlZjtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Hcm91cENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmVmb3JlU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVIaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHNlbGVjdGlvblBhdGg6IGFueSA9IG51bGw7XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmaWxsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBkaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgb3V0c2lkZUNsaWNrTGlzdGVuZXI6IGFueTtcblxuICAgIHNjcm9sbEhhbmRsZXI6IGFueTtcblxuICAgIHJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBvdmVybGF5RWw6IGFueTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25QYXRoKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25QYXRoKCk7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbkdyb3VwU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uR3JvdXBDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkxhYmVsID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uTGFiZWwpIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldE9wdGlvblZhbHVlKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKSA6IG9wdGlvbjtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbkdyb3VwLCBsZXZlbCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb25Hcm91cCwgdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuW2xldmVsXSk7XG4gICAgfVxuXG4gICAgaXNPcHRpb25Hcm91cChvcHRpb24sIGxldmVsKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9uLCB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW5bbGV2ZWxdKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTZWxlY3Rpb25QYXRoKCkge1xuICAgICAgICBsZXQgcGF0aDtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBwYXRoID0gdGhpcy5maW5kTW9kZWxPcHRpb25Jbkdyb3VwKG9wdGlvbiwgMCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25QYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbGxlZCA9ICEodGhpcy5zZWxlY3Rpb25QYXRoID09IG51bGwgfHwgdGhpcy5zZWxlY3Rpb25QYXRoLmxlbmd0aCA9PSAwKTtcbiAgICB9XG5cbiAgICBmaW5kTW9kZWxPcHRpb25Jbkdyb3VwKG9wdGlvbiwgbGV2ZWwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24sIGxldmVsKSkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9uO1xuICAgICAgICAgICAgZm9yIChsZXQgY2hpbGRPcHRpb24gb2YgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbiwgbGV2ZWwpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmZpbmRNb2RlbE9wdGlvbkluR3JvdXAoY2hpbGRPcHRpb24sIGxldmVsICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLnVuc2hpZnQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoT2JqZWN0VXRpbHMuZXF1YWxzKHRoaXMudmFsdWUsIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy5kYXRhS2V5KSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbb3B0aW9uXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMub25CZWZvcmVTaG93LmVtaXQoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgdGhpcy5vbkJlZm9yZUhpZGUuZW1pdCgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DbGljayhldmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlFbCB8fCAhdGhpcy5vdmVybGF5RWwgfHwgIXRoaXMub3ZlcmxheUVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKXtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZm9jdXNJbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheUVsID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUVudGVyKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlMZWF2ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlFbnRlcigpIHtcbiAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdvdmVybGF5JywgdGhpcy5vdmVybGF5RWwsIHRoaXMuY29uZmlnLnpJbmRleC5vdmVybGF5KTtcbiAgICAgICAgdGhpcy5hcHBlbmRDb250YWluZXIoKTtcbiAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcbiAgICAgICAgdGhpcy5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5iaW5kUmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5vblNob3cuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUxlYXZlKCkge1xuICAgICAgICB0aGlzLnVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KCk7XG4gICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWwgPSBudWxsO1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uUGF0aCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5vdmVybGF5RWwsIHRoaXMuY29udGFpbmVyRWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlFbC5zdHlsZS5taW5XaWR0aCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQpICsgJ3B4JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVsYXRpdmVQb3NpdGlvbih0aGlzLm92ZXJsYXlFbCwgdGhpcy5jb250YWluZXJFbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUgJiYgdGhpcy5vdmVybGF5RWwgJiYgIXRoaXMuY29udGFpbmVyRWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLm92ZXJsYXlFbC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBuZXcgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIodGhpcy5jb250YWluZXJFbC5uYXRpdmVFbGVtZW50LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdW5iaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYXBwZW5kVG8pLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlFbCAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYXBwZW5kVG8pLnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhYmVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25QYXRoKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5zZWxlY3Rpb25QYXRoW3RoaXMuc2VsZWN0aW9uUGF0aC5sZW5ndGggLSAxXSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyfHwncC1lbXB0eWxhYmVsJztcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5vdmVybGF5RWwsICcucC1jYXNjYWRlc2VsZWN0LWl0ZW0nKS5jaGlsZHJlblswXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChldmVudC5hbHRLZXkgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5VmlzaWJsZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLWNhc2NhZGVzZWxlY3QgcC1jb21wb25lbnQgcC1pbnB1dHdyYXBwZXInOiB0cnVlLFxuICAgICAgICAgICAgJ3AtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgJ3AtZm9jdXMnOiB0aGlzLmZvY3VzZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBsYWJlbENsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtY2FzY2FkZXNlbGVjdC1sYWJlbCc6IHRydWUsXG4gICAgICAgICAgICAncC1wbGFjZWhvbGRlcic6IHRoaXMubGFiZWwoKSA9PT0gdGhpcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICdwLWNhc2NhZGVzZWxlY3QtbGFiZWwtZW1wdHknOiAhdGhpcy52YWx1ZSAmJiAodGhpcy5sYWJlbCgpID09PSAncC1lbXB0eWxhYmVsJyB8fCB0aGlzLmxhYmVsKCkubGVuZ3RoID09PSAwKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBcHBlbmQoKTtcbiAgICAgICAgdGhpcy51bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdmVybGF5RWwgPSBudWxsO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0Nhc2NhZGVTZWxlY3QsIENhc2NhZGVTZWxlY3RTdWIsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2FzY2FkZVNlbGVjdCwgQ2FzY2FkZVNlbGVjdFN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgQ2FzY2FkZVNlbGVjdE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/cascadeselect/primeng-cascadeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/cascadeselect/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/cascadeselect/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jYXNjYWRlc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Nhc2NhZGVzZWxlY3QvcHJpbWVuZy1jYXNjYWRlc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/cascadeselect/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/cascadeselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/cascadeselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './cascadeselect';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jYXNjYWRlc2VsZWN0L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FzY2FkZXNlbGVjdCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/chart/chart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chart/chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chart/chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,135 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import Chart from 'chart.js/auto';
+import * as i0 from "@angular/core";
+export class UIChart {
+    constructor(el) {
+        this.el = el;
+        this.plugins = [];
+        this.responsive = true;
+        this.onDataSelect = new EventEmitter();
+        this._options = {};
+    }
+    get data() {
+        return this._data;
+    }
+    set data(val) {
+        this._data = val;
+        this.reinit();
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.reinit();
+    }
+    ngAfterViewInit() {
+        this.initChart();
+        this.initialized = true;
+    }
+    onCanvasClick(event) {
+        if (this.chart) {
+            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
+            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);
+            if (element && element[0] && dataset) {
+                this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });
+            }
+        }
+    }
+    initChart() {
+        let opts = this.options || {};
+        opts.responsive = this.responsive;
+        // allows chart to resize in responsive mode
+        if (opts.responsive && (this.height || this.width)) {
+            opts.maintainAspectRatio = false;
+        }
+        this.chart = new Chart(this.el.nativeElement.children[0].children[0], {
+            type: this.type,
+            data: this.data,
+            options: this.options,
+            plugins: this.plugins
+        });
+    }
+    getCanvas() {
+        return this.el.nativeElement.children[0].children[0];
+    }
+    getBase64Image() {
+        return this.chart.toBase64Image();
+    }
+    generateLegend() {
+        if (this.chart) {
+            return this.chart.generateLegend();
+        }
+    }
+    refresh() {
+        if (this.chart) {
+            this.chart.update();
+        }
+    }
+    reinit() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initChart();
+        }
+    }
+    ngOnDestroy() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initialized = false;
+            this.chart = null;
+        }
+    }
+}
+UIChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+UIChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIChart, selector: "p-chart", inputs: { type: "type", plugins: "plugins", width: "width", height: "height", responsive: "responsive", data: "data", options: "options" }, outputs: { onDataSelect: "onDataSelect" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-chart',
+                    template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], plugins: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], onDataSelect: [{
+                type: Output
+            }], data: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+export class ChartModule {
+}
+ChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, declarations: [UIChart], imports: [CommonModule], exports: [UIChart] });
+ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIChart],
+                    declarations: [UIChart]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hhcnQvY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQW9DLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pKLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxlQUFlLENBQUM7O0FBZWxDLE1BQU0sT0FBTyxPQUFPO0lBc0JoQixZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWxCeEIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQU1wQixlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTFCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNL0QsYUFBUSxHQUFRLEVBQUUsQ0FBQztJQUlpQixDQUFDO0lBRXJDLElBQWEsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsR0FBTztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBYSxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsR0FBTztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixD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QUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0o7aUdBR1ksSUFBSTtzQkFBWixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFZTSxJQUFJO3NCQUFoQixLQUFLO2dCQVNPLE9BQU87c0JBQW5CLEtBQUs7O0FBbUZWLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBcEhYLE9BQU8sYUFnSE4sWUFBWSxhQWhIYixPQUFPO3lHQW9IUCxXQUFXLFlBSlgsQ0FBQyxZQUFZLENBQUM7MkZBSWQsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsQWZ0ZXJWaWV3SW5pdCxPbkRlc3Ryb3ksSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgQ2hhcnQgZnJvbSAnY2hhcnQuanMvYXV0byc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jaGFydCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlXCIgW3N0eWxlLndpZHRoXT1cInJlc3BvbnNpdmUgJiYgIXdpZHRoID8gbnVsbCA6IHdpZHRoXCIgW3N0eWxlLmhlaWdodF09XCJyZXNwb25zaXZlICYmICFoZWlnaHQgPyBudWxsIDogaGVpZ2h0XCI+XG4gICAgICAgICAgICA8Y2FudmFzIFthdHRyLndpZHRoXT1cInJlc3BvbnNpdmUgJiYgIXdpZHRoID8gbnVsbCA6IHdpZHRoXCIgW2F0dHIuaGVpZ2h0XT1cInJlc3BvbnNpdmUgJiYgIWhlaWdodCA/IG51bGwgOiBoZWlnaHRcIiAoY2xpY2spPVwib25DYW52YXNDbGljaygkZXZlbnQpXCI+PC9jYW52YXM+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBVSUNoYXJ0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsdWdpbnM6IGFueVtdID0gW107XG5cbiAgICBASW5wdXQoKSB3aWR0aDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZXNwb25zaXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSBvbkRhdGFTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBfZGF0YTogYW55O1xuXG4gICAgX29wdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgY2hhcnQ6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cblxuICAgIEBJbnB1dCgpIGdldCBkYXRhKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cblxuICAgIHNldCBkYXRhKHZhbDphbnkpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHZhbDtcbiAgICAgICAgdGhpcy5yZWluaXQoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgb3B0aW9ucygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG5cbiAgICBzZXQgb3B0aW9ucyh2YWw6YW55KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgICAgIHRoaXMucmVpbml0KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkNhbnZhc0NsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGV2ZW50LCAnbmVhcmVzdCcsIHsgaW50ZXJzZWN0OiB0cnVlIH0sIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFzZXQgPSB0aGlzLmNoYXJ0LmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZXZlbnQsICdkYXRhc2V0JywgeyBpbnRlcnNlY3Q6IHRydWUgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50WzBdICYmIGRhdGFzZXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgZWxlbWVudDogZWxlbWVudFswXSwgZGF0YXNldDogZGF0YXNldH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdENoYXJ0KCkge1xuICAgICAgICBsZXQgb3B0cyA9IHRoaXMub3B0aW9uc3x8e307XG4gICAgICAgIG9wdHMucmVzcG9uc2l2ZSA9IHRoaXMucmVzcG9uc2l2ZTtcblxuICAgICAgICAvLyBhbGxvd3MgY2hhcnQgdG8gcmVzaXplIGluIHJlc3BvbnNpdmUgbW9kZVxuICAgICAgICBpZiAob3B0cy5yZXNwb25zaXZlJiYodGhpcy5oZWlnaHR8fHRoaXMud2lkdGgpKSB7XG4gICAgICAgICAgICBvcHRzLm1haW50YWluQXNwZWN0UmF0aW8gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLCB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiB0aGlzLnBsdWdpbnNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0Q2FudmFzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIGdldEJhc2U2NEltYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFydC50b0Jhc2U2NEltYWdlKCk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVMZWdlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5nZW5lcmF0ZUxlZ2VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGFydCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1VJQ2hhcnRdLFxuICAgIGRlY2xhcmF0aW9uczogW1VJQ2hhcnRdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/chart/primeng-chart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chart/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chart/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGFydC9wcmltZW5nLWNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/chart/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chart/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chart/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './chart';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGFydC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGFydCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/checkbox/checkbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/checkbox/checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/checkbox/checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,176 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ObjectUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const CHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Checkbox),
+    multi: true
+};
+export class Checkbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxIcon = 'pi pi-check';
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.focused = false;
+    }
+    onClick(event, checkbox, focus) {
+        event.preventDefault();
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        this.updateModel(event);
+        if (focus) {
+            checkbox.focus();
+        }
+    }
+    updateModel(event) {
+        let newModelValue;
+        if (!this.binary) {
+            if (this.checked())
+                newModelValue = this.model.filter(val => !ObjectUtils.equals(val, this.value));
+            else
+                newModelValue = this.model ? [...this.model, this.value] : [this.value];
+            this.onModelChange(newModelValue);
+            this.model = newModelValue;
+            if (this.formControl) {
+                this.formControl.setValue(newModelValue);
+            }
+        }
+        else {
+            newModelValue = this.checked() ? this.falseValue : this.trueValue;
+            this.model = newModelValue;
+            this.onModelChange(newModelValue);
+        }
+        this.onChange.emit({ checked: newModelValue, originalEvent: event });
+    }
+    handleChange(event) {
+        if (!this.readonly) {
+            this.updateModel(event);
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    writeValue(model) {
+        this.model = model;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);
+    }
+}
+Checkbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Checkbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Checkbox, selector: "p-checkbox", inputs: { value: "value", name: "name", disabled: "disabled", binary: "binary", label: "label", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", formControl: "formControl", checkboxIcon: "checkboxIcon", readonly: "readonly", required: "required", trueValue: "trueValue", falseValue: "falseValue" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [CHECKBOX_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["cb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-checkbox', template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, providers: [CHECKBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], binary: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], formControl: [{
+                type: Input
+            }], checkboxIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['cb']
+            }], onChange: [{
+                type: Output
+            }] } });
+export class CheckboxModule {
+}
+CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, declarations: [Checkbox], imports: [CommonModule], exports: [Checkbox] });
+CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Checkbox],
+                    declarations: [Checkbox]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hlY2tib3gvY2hlY2tib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFtQixTQUFTLEVBQVksdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEssT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxpQkFBaUIsRUFBb0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFNUMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQVE7SUFDMUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN2QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUEyQkYsTUFBTSxPQUFPLFFBQVE7SUFrRGpCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBdEJoQyxpQkFBWSxHQUFXLGFBQWEsQ0FBQztRQU1yQyxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRXRCLGVBQVUsR0FBUSxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTNELGtCQUFhLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRW5DLG1CQUFjLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXBDLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFFbUIsQ0FBQztJQUU3QyxPQUFPLENBQUMsS0FBSyxFQUFDLFFBQVEsRUFBQyxLQUFhO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVB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YztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsZm9yd2FyZFJlZixDaGFuZ2VEZXRlY3RvclJlZixWaWV3Q2hpbGQsRWxlbWVudFJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3gpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNoZWNrYm94JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwieydwLWNoZWNrYm94IHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtY2hlY2tib3gtY2hlY2tlZCc6IGNoZWNrZWQoKSwgJ3AtY2hlY2tib3gtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ3AtY2hlY2tib3gtZm9jdXNlZCc6IGZvY3VzZWR9XCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0ICNjYiB0eXBlPVwiY2hlY2tib3hcIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgW2F0dHIubmFtZV09XCJuYW1lXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW3ZhbHVlXT1cInZhbHVlXCIgW2NoZWNrZWRdPVwiY2hlY2tlZCgpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkKClcIiBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveC1ib3hcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsY2IsdHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IGNoZWNrZWQoKSwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ3AtZm9jdXMnOiBmb2N1c2VkfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jaGVja2JveC1pY29uXCIgW25nQ2xhc3NdPVwiY2hlY2tlZCgpID8gY2hlY2tib3hJY29uIDogbnVsbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIChjbGljayk9XCJvbkNsaWNrKCRldmVudCxjYix0cnVlKVwiIFtjbGFzc109XCJsYWJlbFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1sYWJlbCc6IHRydWUsICdwLWNoZWNrYm94LWxhYmVsLWFjdGl2ZSc6Y2hlY2tlZCgpLCAncC1kaXNhYmxlZCc6ZGlzYWJsZWQsICdwLWNoZWNrYm94LWxhYmVsLWZvY3VzJzpmb2N1c2VkfVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsYWJlbFwiIFthdHRyLmZvcl09XCJpbnB1dElkXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW0NIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcblxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYmluYXJ5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGFiZWxTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgICBASW5wdXQoKSBjaGVja2JveEljb246IHN0cmluZyA9ICdwaSBwaS1jaGVjayc7XG5cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdHJ1ZVZhbHVlOiBhbnkgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZmFsc2VWYWx1ZTogYW55ID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdjYicpIGlucHV0Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIG1vZGVsOiBhbnk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uQ2xpY2soZXZlbnQsY2hlY2tib3gsZm9jdXM6Ym9vbGVhbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQpO1xuXG4gICAgICAgIGlmIChmb2N1cykge1xuICAgICAgICAgICAgY2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKGV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdNb2RlbFZhbHVlO1xuXG4gICAgICAgIGlmICghdGhpcy5iaW5hcnkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrZWQoKSlcbiAgICAgICAgICAgICAgICBuZXdNb2RlbFZhbHVlID0gdGhpcy5tb2RlbC5maWx0ZXIodmFsID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCB0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbmV3TW9kZWxWYWx1ZSA9IHRoaXMubW9kZWwgPyBbLi4udGhpcy5tb2RlbCwgdGhpcy52YWx1ZV0gOiBbdGhpcy52YWx1ZV07XG5cbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShuZXdNb2RlbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3TW9kZWxWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdNb2RlbFZhbHVlID0gdGhpcy5jaGVja2VkKCkgPyB0aGlzLmZhbHNlVmFsdWUgOiB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKG5ld01vZGVsVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtjaGVja2VkOm5ld01vZGVsVmFsdWUsIG9yaWdpbmFsRXZlbnQ6IGV2ZW50fSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2ZW50KcKge1xuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUobW9kZWw6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBjaGVja2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaW5hcnkgPyB0aGlzLm1vZGVsID09PSB0aGlzLnRydWVWYWx1ZSA6IE9iamVjdFV0aWxzLmNvbnRhaW5zKHRoaXMudmFsdWUsIHRoaXMubW9kZWwpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ2hlY2tib3hdLFxuICAgIGRlY2xhcmF0aW9uczogW0NoZWNrYm94XVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/checkbox/primeng-checkbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/checkbox/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/checkbox/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jaGVja2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGVja2JveC9wcmltZW5nLWNoZWNrYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/checkbox/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/checkbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/checkbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './checkbox';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGVja2JveC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/chip/chip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chip/chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chip/chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Chip {
+    constructor() {
+        this.removeIcon = "pi pi-times-circle";
+        this.onRemove = new EventEmitter();
+        this.visible = true;
+    }
+    containerClass() {
+        return {
+            'p-chip p-component': true,
+            'p-chip-image': this.image != null
+        };
+    }
+    close(event) {
+        this.visible = false;
+        this.onRemove.emit(event);
+    }
+}
+Chip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Chip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chip, selector: "p-chip", inputs: { label: "label", icon: "icon", image: "image", style: "style", styleClass: "styleClass", removable: "removable", removeIcon: "removeIcon" }, outputs: { onRemove: "onRemove" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, isInline: true, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chip', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], removable: [{
+                type: Input
+            }], removeIcon: [{
+                type: Input
+            }], onRemove: [{
+                type: Output
+            }] } });
+export class ChipModule {
+}
+ChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, declarations: [Chip], imports: [CommonModule], exports: [Chip] });
+ChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Chip],
+                    declarations: [Chip]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFvQi9DLE1BQU0sT0FBTyxJQUFJO0lBbEJqQjtRQWdDYSxlQUFVLEdBQVcsb0JBQW9CLENBQUM7UUFFekMsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNELFlBQU8sR0FBWSxJQUFJLENBQUM7S0FhM0I7SUFYRyxjQUFjO1FBQ1YsT0FBTztZQUNILG9CQUFvQixFQUFFLElBQUk7WUFDMUIsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtTQUNyQyxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQzs7aUdBOUJRLElBQUk7cUZBQUosSUFBSSw4UUFoQkg7Ozs7Ozs7O0tBUVQ7MkZBUVEsSUFBSTtrQkFsQmhCLFNBQVM7K0JBQ0ksUUFBUSxZQUNSOzs7Ozs7OztLQVFULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjs4QkFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTs7QUFzQlgsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkF0Q1YsSUFBSSxhQWtDSCxZQUFZLGFBbENiLElBQUk7d0dBc0NKLFVBQVUsWUFKVixDQUFDLFlBQVksQ0FBQzsyRkFJZCxVQUFVO2tCQUx0QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO29CQUNmLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQztpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNoaXAnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiAqbmdJZj1cInZpc2libGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVwiICpuZ0lmPVwiaW1hZ2U7ZWxzZSBpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlPjxzcGFuICpuZ0lmPVwiaWNvblwiIFtjbGFzc109XCJpY29uXCIgW25nQ2xhc3NdPVwiJ3AtY2hpcC1pY29uJ1wiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hpcC10ZXh0XCIgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZW1vdmFibGVcIiB0YWJpbmRleD1cIjBcIiBbY2xhc3NdPVwicmVtb3ZlSWNvblwiIFtuZ0NsYXNzXT1cIidwaS1jaGlwLXJlbW92ZS1pY29uJ1wiIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiY2xvc2UoJGV2ZW50KVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2NoaXAuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2hpcCB7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW1hZ2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZW1vdmFibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSByZW1vdmVJY29uOiBzdHJpbmcgPSBcInBpIHBpLXRpbWVzLWNpcmNsZVwiO1xuXG4gICAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1jaGlwIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLWNoaXAtaW1hZ2UnOiB0aGlzLmltYWdlICE9IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjbG9zZShldmVudCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KGV2ZW50KVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ2hpcF0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ2hpcF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hpcE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/chip/primeng-chip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chip/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chip/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NoaXAvcHJpbWVuZy1jaGlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/chip/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chip/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chip/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './chip';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoaXAnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/chips/chips.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chips/chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chips/chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,291 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const CHIPS_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Chips),
+    multi: true
+};
+export class Chips {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.allowDuplicate = true;
+        this.onAdd = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onChipClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateFilledState();
+    }
+    onClick() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    onInput() {
+        this.updateFilledState();
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            if (this.separator) {
+                let pastedData = (event.clipboardData || window['clipboardData']).getData('Text');
+                pastedData.split(this.separator).forEach(val => {
+                    this.addItem(event, val, true);
+                });
+                this.inputViewChild.nativeElement.value = '';
+            }
+            this.updateFilledState();
+        }
+    }
+    updateFilledState() {
+        if (!this.value || this.value.length === 0) {
+            this.filled = (this.inputViewChild && this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '');
+        }
+        else {
+            this.filled = true;
+        }
+    }
+    onItemClick(event, item) {
+        this.onChipClick.emit({
+            originalEvent: event,
+            value: item
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateMaxedOut();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    resolveFieldData(data, field) {
+        if (data && field) {
+            if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (var i = 0, len = fields.length; i < len; ++i) {
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        if (this.addOnBlur && this.inputViewChild.nativeElement.value) {
+            this.addItem(event, this.inputViewChild.nativeElement.value, false);
+        }
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    removeItem(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        let removedItem = this.value[index];
+        this.value = this.value.filter((val, i) => i != index);
+        this.onModelChange(this.value);
+        this.onRemove.emit({
+            originalEvent: event,
+            value: removedItem
+        });
+        this.updateFilledState();
+        this.updateMaxedOut();
+    }
+    addItem(event, item, preventDefault) {
+        this.value = this.value || [];
+        if (item && item.trim().length) {
+            if (this.allowDuplicate || this.value.indexOf(item) === -1) {
+                this.value = [...this.value, item];
+                this.onModelChange(this.value);
+                this.onAdd.emit({
+                    originalEvent: event,
+                    value: item
+                });
+            }
+        }
+        this.updateFilledState();
+        this.updateMaxedOut();
+        this.inputViewChild.nativeElement.value = '';
+        if (preventDefault) {
+            event.preventDefault();
+        }
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //backspace
+            case 8:
+                if (this.inputViewChild.nativeElement.value.length === 0 && this.value && this.value.length > 0) {
+                    this.value = [...this.value];
+                    let removedItem = this.value.pop();
+                    this.onModelChange(this.value);
+                    this.onRemove.emit({
+                        originalEvent: event,
+                        value: removedItem
+                    });
+                    this.updateFilledState();
+                }
+                break;
+            //enter
+            case 13:
+                this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                break;
+            case 9:
+                if (this.addOnTab && this.inputViewChild.nativeElement.value !== '') {
+                    this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                }
+                break;
+            default:
+                if (this.max && this.value && this.max === this.value.length) {
+                    event.preventDefault();
+                }
+                else if (this.separator) {
+                    if (this.separator === ',' && event.which === 188) {
+                        this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                    }
+                }
+                break;
+        }
+    }
+    updateMaxedOut() {
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.max && this.value && this.max === this.value.length)
+                this.inputViewChild.nativeElement.disabled = true;
+            else
+                this.inputViewChild.nativeElement.disabled = this.disabled || false;
+        }
+    }
+}
+Chips.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Chips.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chips, selector: "p-chips", inputs: { style: "style", styleClass: "styleClass", disabled: "disabled", field: "field", placeholder: "placeholder", max: "max", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", allowDuplicate: "allowDuplicate", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", addOnTab: "addOnTab", addOnBlur: "addOnBlur", separator: "separator" }, outputs: { onAdd: "onAdd", onRemove: "onRemove", onFocus: "onFocus", onBlur: "onBlur", onChipClick: "onChipClick" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CHIPS_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["inputtext"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chips', template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CHIPS_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], field: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], allowDuplicate: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], addOnTab: [{
+                type: Input
+            }], addOnBlur: [{
+                type: Input
+            }], separator: [{
+                type: Input
+            }], onAdd: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onChipClick: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['inputtext']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ChipsModule {
+}
+ChipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, declarations: [Chips], imports: [CommonModule, InputTextModule, SharedModule], exports: [Chips, InputTextModule, SharedModule] });
+ChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, imports: [[CommonModule, InputTextModule, SharedModule], InputTextModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, SharedModule],
+                    exports: [Chips, InputTextModule, SharedModule],
+                    declarations: [Chips]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hpcHMvY2hpcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQWtCLGVBQWUsRUFBdUIsVUFBVSxFQUFDLFNBQVMsRUFBQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaE8sT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV2RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBUTtJQUN2QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3BDLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQTZCRixNQUFNLE9BQU8sS0FBSztJQTREZCxZQUFtQixFQUFjLEVBQVMsRUFBcUI7UUFBNUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBeEN0RCxtQkFBYyxHQUFZLElBQUksQ0FBQztRQVk5QixVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUMsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0MsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FB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WUFBWSxFQUFDLGVBQWUsRUFBQyxZQUFZLGFBaFExQyxLQUFLLEVBaVFFLGVBQWUsRUFBQyxZQUFZO3lHQUduQyxXQUFXLFlBSlgsQ0FBQyxZQUFZLEVBQUMsZUFBZSxFQUFDLFlBQVksQ0FBQyxFQUNwQyxlQUFlLEVBQUMsWUFBWTsyRkFHbkMsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsZUFBZSxFQUFDLFlBQVksQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFDLGVBQWUsRUFBQyxZQUFZLENBQUM7b0JBQzdDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxFbGVtZW50UmVmLElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsQWZ0ZXJDb250ZW50SW5pdCxDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFRlbXBsYXRlUmVmLGZvcndhcmRSZWYsVmlld0NoaWxkLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1NoYXJlZE1vZHVsZSxQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IENISVBTX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGlwcyksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY2hpcHMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiJ3AtY2hpcHMgcC1jb21wb25lbnQnXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIChjbGljayk9XCJvbkNsaWNrKClcIj5cbiAgICAgICAgICAgIDx1bCBbbmdDbGFzc109XCJ7J3AtaW5wdXR0ZXh0IHAtY2hpcHMtbXVsdGlwbGUtY29udGFpbmVyJzp0cnVlLCdwLWZvY3VzJzpmb2N1cywncC1kaXNhYmxlZCc6ZGlzYWJsZWR9XCI+XG4gICAgICAgICAgICAgICAgPGxpICN0b2tlbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cInAtY2hpcHMtdG9rZW5cIiAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIiBjbGFzcz1cInAtY2hpcHMtdG9rZW4tbGFiZWxcIj57e2ZpZWxkID8gcmVzb2x2ZUZpZWxkRGF0YShpdGVtLGZpZWxkKSA6IGl0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cInAtY2hpcHMtdG9rZW4taWNvbiBwaSBwaS10aW1lcy1jaXJjbGVcIiAoY2xpY2spPVwicmVtb3ZlSXRlbSgkZXZlbnQsaSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLWNoaXBzLWlucHV0LXRva2VuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAjaW5wdXR0ZXh0IHR5cGU9XCJ0ZXh0XCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cIih2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPyBudWxsIDogcGxhY2Vob2xkZXIpXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCIgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIiBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50IHAtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1maWxsZWRdJzogJ2ZpbGxlZCcsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHdyYXBwZXItZm9jdXNdJzogJ2ZvY3VzJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbQ0hJUFNfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hpcHMuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hpcHMgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFsbG93RHVwbGljYXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGVDbGFzczogYW55O1xuXG4gICAgQElucHV0KCkgYWRkT25UYWI6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBhZGRPbkJsdXI6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzZXBhcmF0b3I6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBvbkFkZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25DaGlwQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXR0ZXh0JykgaW5wdXRWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgdmFsdWU6IGFueTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHZhbHVlQ2hhbmdlZDogYm9vbGVhbjtcblxuICAgIGZvY3VzOiBib29sZWFuO1xuXG4gICAgZmlsbGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgfVxuXG4gICAgb25DbGljaygpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgIH1cblxuICAgIG9uUGFzdGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFzdGVkRGF0YSA9IChldmVudC5jbGlwYm9hcmREYXRhIHx8IHdpbmRvd1snY2xpcGJvYXJkRGF0YSddKS5nZXREYXRhKCdUZXh0Jyk7XG4gICAgICAgICAgICAgICAgcGFzdGVkRGF0YS5zcGxpdCh0aGlzLnNlcGFyYXRvcikuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oZXZlbnQsIHZhbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmlsbGVkID0gKHRoaXMuaW5wdXRWaWV3Q2hpbGQgJiYgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50ICYmIHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSAhPSAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudDogRXZlbnQsIGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hpcENsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVNYXhlZE91dCgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZXNvbHZlRmllbGREYXRhKGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChkYXRhICYmIGZpZWxkKSB7XG4gICAgICAgICAgICBpZiAoZmllbGQuaW5kZXhPZignLicpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbZmllbGRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkczogc3RyaW5nW10gPSBmaWVsZC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgZm9yKHZhciBpID0gMCwgbGVuID0gZmllbGRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbZmllbGRzW2ldXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmFkZE9uQmx1ciAmJiB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkSXRlbShldmVudCwgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICByZW1vdmVJdGVtKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlbW92ZWRJdGVtID0gdGhpcy52YWx1ZVtpbmRleF07XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigodmFsLCBpKSA9PiBpIT1pbmRleCk7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdmFsdWU6IHJlbW92ZWRJdGVtXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlTWF4ZWRPdXQoKTtcbiAgICB9XG5cbiAgICBhZGRJdGVtKGV2ZW50OiBFdmVudCwgaXRlbTogc3RyaW5nLCBwcmV2ZW50RGVmYXVsdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZXx8W107XG4gICAgICAgIGlmIChpdGVtICYmIGl0ZW0udHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEdXBsaWNhdGUgfHwgdGhpcy52YWx1ZS5pbmRleE9mKGl0ZW0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgaXRlbV07XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMub25BZGQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVNYXhlZE91dCgpO1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcblxuICAgICAgICBpZiAocHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL2JhY2tzcGFjZVxuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUubGVuZ3RoID09PSAwICYmIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkSXRlbSA9IHRoaXMudmFsdWUucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlbW92ZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGV2ZW50LCB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hZGRPblRhYiAmJiB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShldmVudCwgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXggJiYgdGhpcy52YWx1ZSAmJiB0aGlzLm1heCA9PT0gdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VwYXJhdG9yID09PSAnLCcgJiYgZXZlbnQud2hpY2ggPT09IDE4OCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGV2ZW50LCB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVNYXhlZE91dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRWaWV3Q2hpbGQgJiYgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXggJiYgdGhpcy52YWx1ZSAmJiB0aGlzLm1heCA9PT0gdGhpcy52YWx1ZS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsSW5wdXRUZXh0TW9kdWxlLFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW0NoaXBzLElucHV0VGV4dE1vZHVsZSxTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0NoaXBzXVxufSlcbmV4cG9ydCBjbGFzcyBDaGlwc01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/chips/primeng-chips.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chips/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chips/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jaGlwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9wcmltZW5nLWNoaXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/chips/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/chips/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/chips/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './chips';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGlwcyc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/codehighlighter/codehighlighter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/codehighlighter/codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/codehighlighter/codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,38 @@
+import { NgModule, Directive } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+export class CodeHighlighter {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        if (window['Prism']) {
+            window['Prism'].highlightElement(this.el.nativeElement);
+        }
+    }
+}
+CodeHighlighter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+CodeHighlighter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CodeHighlighter, selector: "[pCode]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCode]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
+export class CodeHighlighterModule {
+}
+CodeHighlighterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CodeHighlighterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, declarations: [CodeHighlighter], imports: [CommonModule], exports: [CodeHighlighter] });
+CodeHighlighterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [CodeHighlighter],
+                    declarations: [CodeHighlighter]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWhpZ2hsaWdodGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NvZGVoaWdobGlnaHRlci9jb2RlaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFRL0MsTUFBTSxPQUFPLGVBQWU7SUFFeEIsWUFBbUIsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBSSxDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7OzRHQVJRLGVBQWU7Z0dBQWYsZUFBZTsyRkFBZixlQUFlO2tCQU4zQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxTQUFTO29CQUNuQixJQUFJLEVBQUU7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNKOztBQWlCRCxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBaEJyQixlQUFlLGFBWWQsWUFBWSxhQVpiLGVBQWU7bUhBZ0JmLHFCQUFxQixZQUpyQixDQUFDLFlBQVksQ0FBQzsyRkFJZCxxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twQ29kZV0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENvZGVIaWdobGlnaHRlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHdpbmRvd1snUHJpc20nXSkge1xuICAgICAgICAgICAgd2luZG93WydQcmlzbSddLmhpZ2hsaWdodEVsZW1lbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ29kZUhpZ2hsaWdodGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtDb2RlSGlnaGxpZ2h0ZXJdXG59KVxuZXhwb3J0IGNsYXNzIENvZGVIaWdobGlnaHRlck1vZHVsZSB7IH1cblxuXG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/codehighlighter/primeng-codehighlighter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/codehighlighter/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/codehighlighter/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jb2RlaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY29kZWhpZ2hsaWdodGVyL3ByaW1lbmctY29kZWhpZ2hsaWdodGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/codehighlighter/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/codehighlighter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/codehighlighter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './codehighlighter';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb2RlaGlnaGxpZ2h0ZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2RlaGlnaGxpZ2h0ZXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/colorpicker/colorpicker.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/colorpicker/colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/colorpicker/colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,658 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+export const COLORPICKER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ColorPicker),
+    multi: true
+};
+export class ColorPicker {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.format = 'hex';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.value = { h: 0, s: 100, b: 100 };
+        this.defaultColor = 'ff0000';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set colorSelector(element) {
+        this.colorSelectorViewChild = element;
+    }
+    set colorHandle(element) {
+        this.colorHandleViewChild = element;
+    }
+    set hue(element) {
+        this.hueViewChild = element;
+    }
+    set hueHandle(element) {
+        this.hueHandleViewChild = element;
+    }
+    onHueMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.hueDragging = true;
+        this.pickHue(event);
+    }
+    onHueTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.hueDragging = true;
+        this.pickHue(event, event.changedTouches[0]);
+    }
+    onColorTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.colorDragging = true;
+        this.pickColor(event, event.changedTouches[0]);
+    }
+    pickHue(event, position) {
+        let pageY = position ? position.pageY : event.pageY;
+        let top = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        this.value = this.validateHSB({
+            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, (pageY - top)))) / 150),
+            s: this.value.s,
+            b: this.value.b
+        });
+        this.updateColorSelector();
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    onColorMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.colorDragging = true;
+        this.pickColor(event);
+    }
+    onMove(event) {
+        if (this.colorDragging) {
+            this.pickColor(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+        if (this.hueDragging) {
+            this.pickHue(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+    }
+    onDragEnd() {
+        this.colorDragging = false;
+        this.hueDragging = false;
+        this.unbindDocumentMousemoveListener();
+        this.unbindDocumentMouseupListener();
+    }
+    pickColor(event, position) {
+        let pageX = position ? position.pageX : event.pageX;
+        let pageY = position ? position.pageY : event.pageY;
+        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();
+        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        let left = rect.left + document.body.scrollLeft;
+        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((pageX) - left)))) / 150);
+        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((pageY) - top)))) / 150);
+        this.value = this.validateHSB({
+            h: this.value.h,
+            s: saturation,
+            b: brightness
+        });
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    getValueToUpdate() {
+        let val;
+        switch (this.format) {
+            case 'hex':
+                val = '#' + this.HSBtoHEX(this.value);
+                break;
+            case 'rgb':
+                val = this.HSBtoRGB(this.value);
+                break;
+            case 'hsb':
+                val = this.value;
+                break;
+        }
+        return val;
+    }
+    updateModel() {
+        this.onModelChange(this.getValueToUpdate());
+    }
+    writeValue(value) {
+        if (value) {
+            switch (this.format) {
+                case 'hex':
+                    this.value = this.HEXtoHSB(value);
+                    break;
+                case 'rgb':
+                    this.value = this.RGBtoHSB(value);
+                    break;
+                case 'hsb':
+                    this.value = value;
+                    break;
+            }
+        }
+        else {
+            this.value = this.HEXtoHSB(this.defaultColor);
+        }
+        this.updateColorSelector();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    updateColorSelector() {
+        if (this.colorSelectorViewChild) {
+            const hsb = {};
+            hsb.s = 100;
+            hsb.b = 100;
+            hsb.h = this.value.h;
+            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);
+        }
+    }
+    updateUI() {
+        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {
+            this.colorHandleViewChild.nativeElement.style.left = Math.floor(150 * this.value.s / 100) + 'px';
+            this.colorHandleViewChild.nativeElement.style.top = Math.floor(150 * (100 - this.value.b) / 100) + 'px';
+            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';
+        }
+        this.inputBgColor = '#' + this.HSBtoHEX(this.value);
+    }
+    onInputFocus() {
+        this.onModelTouched();
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                    this.updateColorSelector();
+                    this.updateUI();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.onShow.emit({});
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                this.onHide.emit({});
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);
+        else
+            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onInputClick() {
+        this.selfClick = true;
+        this.togglePanel();
+    }
+    togglePanel() {
+        if (!this.overlayVisible)
+            this.show();
+        else
+            this.hide();
+    }
+    onInputKeydown(event) {
+        switch (event.which) {
+            //space
+            case 32:
+                this.togglePanel();
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.selfClick) {
+                    this.overlayVisible = false;
+                    this.unbindDocumentClickListener();
+                }
+                this.selfClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentMousemoveListener() {
+        if (!this.documentMousemoveListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                if (this.colorDragging) {
+                    this.pickColor(event);
+                }
+                if (this.hueDragging) {
+                    this.pickHue(event);
+                }
+            });
+        }
+    }
+    unbindDocumentMousemoveListener() {
+        if (this.documentMousemoveListener) {
+            this.documentMousemoveListener();
+            this.documentMousemoveListener = null;
+        }
+    }
+    bindDocumentMouseupListener() {
+        if (!this.documentMouseupListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {
+                this.colorDragging = false;
+                this.hueDragging = false;
+                this.unbindDocumentMousemoveListener();
+                this.unbindDocumentMouseupListener();
+            });
+        }
+    }
+    unbindDocumentMouseupListener() {
+        if (this.documentMouseupListener) {
+            this.documentMouseupListener();
+            this.documentMouseupListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    validateHSB(hsb) {
+        return {
+            h: Math.min(360, Math.max(0, hsb.h)),
+            s: Math.min(100, Math.max(0, hsb.s)),
+            b: Math.min(100, Math.max(0, hsb.b))
+        };
+    }
+    validateRGB(rgb) {
+        return {
+            r: Math.min(255, Math.max(0, rgb.r)),
+            g: Math.min(255, Math.max(0, rgb.g)),
+            b: Math.min(255, Math.max(0, rgb.b))
+        };
+    }
+    validateHEX(hex) {
+        var len = 6 - hex.length;
+        if (len > 0) {
+            var o = [];
+            for (var i = 0; i < len; i++) {
+                o.push('0');
+            }
+            o.push(hex);
+            hex = o.join('');
+        }
+        return hex;
+    }
+    HEXtoRGB(hex) {
+        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+        return { r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF) };
+    }
+    HEXtoHSB(hex) {
+        return this.RGBtoHSB(this.HEXtoRGB(hex));
+    }
+    RGBtoHSB(rgb) {
+        var hsb = {
+            h: 0,
+            s: 0,
+            b: 0
+        };
+        var min = Math.min(rgb.r, rgb.g, rgb.b);
+        var max = Math.max(rgb.r, rgb.g, rgb.b);
+        var delta = max - min;
+        hsb.b = max;
+        hsb.s = max != 0 ? 255 * delta / max : 0;
+        if (hsb.s != 0) {
+            if (rgb.r == max) {
+                hsb.h = (rgb.g - rgb.b) / delta;
+            }
+            else if (rgb.g == max) {
+                hsb.h = 2 + (rgb.b - rgb.r) / delta;
+            }
+            else {
+                hsb.h = 4 + (rgb.r - rgb.g) / delta;
+            }
+        }
+        else {
+            hsb.h = -1;
+        }
+        hsb.h *= 60;
+        if (hsb.h < 0) {
+            hsb.h += 360;
+        }
+        hsb.s *= 100 / 255;
+        hsb.b *= 100 / 255;
+        return hsb;
+    }
+    HSBtoRGB(hsb) {
+        var rgb = {
+            r: null, g: null, b: null
+        };
+        let h = hsb.h;
+        let s = hsb.s * 255 / 100;
+        let v = hsb.b * 255 / 100;
+        if (s == 0) {
+            rgb = {
+                r: v,
+                g: v,
+                b: v
+            };
+        }
+        else {
+            let t1 = v;
+            let t2 = (255 - s) * v / 255;
+            let t3 = (t1 - t2) * (h % 60) / 60;
+            if (h == 360)
+                h = 0;
+            if (h < 60) {
+                rgb.r = t1;
+                rgb.b = t2;
+                rgb.g = t2 + t3;
+            }
+            else if (h < 120) {
+                rgb.g = t1;
+                rgb.b = t2;
+                rgb.r = t1 - t3;
+            }
+            else if (h < 180) {
+                rgb.g = t1;
+                rgb.r = t2;
+                rgb.b = t2 + t3;
+            }
+            else if (h < 240) {
+                rgb.b = t1;
+                rgb.r = t2;
+                rgb.g = t1 - t3;
+            }
+            else if (h < 300) {
+                rgb.b = t1;
+                rgb.g = t2;
+                rgb.r = t2 + t3;
+            }
+            else if (h < 360) {
+                rgb.r = t1;
+                rgb.g = t2;
+                rgb.b = t1 - t3;
+            }
+            else {
+                rgb.r = 0;
+                rgb.g = 0;
+                rgb.b = 0;
+            }
+        }
+        return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };
+    }
+    RGBtoHEX(rgb) {
+        var hex = [
+            rgb.r.toString(16),
+            rgb.g.toString(16),
+            rgb.b.toString(16)
+        ];
+        for (var key in hex) {
+            if (hex[key].length == 1) {
+                hex[key] = '0' + hex[key];
+            }
+        }
+        return hex.join('');
+    }
+    HSBtoHEX(hsb) {
+        return this.RGBtoHEX(this.HSBtoRGB(hsb));
+    }
+    onOverlayHide() {
+        this.unbindScrollListener();
+        this.unbindDocumentResizeListener();
+        this.unbindDocumentClickListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColorPicker, selector: "p-colorPicker", inputs: { style: "style", styleClass: "styleClass", inline: "inline", format: "format", appendTo: "appendTo", disabled: "disabled", tabindex: "tabindex", inputId: "inputId", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, providers: [COLORPICKER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }, { propertyName: "colorSelector", first: true, predicate: ["colorSelector"], descendants: true }, { propertyName: "colorHandle", first: true, predicate: ["colorHandle"], descendants: true }, { propertyName: "hue", first: true, predicate: ["hue"], descendants: true }, { propertyName: "hueHandle", first: true, predicate: ["hueHandle"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-colorPicker', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], providers: [COLORPICKER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input']
+            }], colorSelector: [{
+                type: ViewChild,
+                args: ['colorSelector']
+            }], colorHandle: [{
+                type: ViewChild,
+                args: ['colorHandle']
+            }], hue: [{
+                type: ViewChild,
+                args: ['hue']
+            }], hueHandle: [{
+                type: ViewChild,
+                args: ['hueHandle']
+            }] } });
+export class ColorPickerModule {
+}
+ColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, declarations: [ColorPicker], imports: [CommonModule], exports: [ColorPicker] });
+ColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ColorPicker],
+                    declarations: [ColorPicker]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY29sb3JwaWNrZXIvY29sb3JwaWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsVUFBVSxFQUFhLFNBQVMsRUFBcUIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDek0sT0FBTyxFQUFFLE9BQU8sRUFBUyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUU1QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBUTtJQUMzQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQzFDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQTRDRixNQUFNLE9BQU8sV0FBVztJQThFcEIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CLEVBQVMsRUFBcUIsRUFBUyxNQUFxQixFQUFTLGNBQThCO1FBQTdJLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdEV2SixXQUFNLEdBQVcsS0FB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QUFJLEVBQUUsR0FBVyxDQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLElBQUUsR0FBRztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFDLEVBQUUsRUFBRTtnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQztnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQztnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsR0FBQyxFQUFFLENBQUE7YUFBQztpQkFDdEMsSUFBSSxDQUFDLEdBQUMsR0FBRyxFQUFFO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQTthQUFDO2lCQUM1QyxJQUFJLENBQUMsR0FBQyxHQUFHLEVBQUU7Z0JBQUMsR0FBRyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUM7Z0JBQUMsR0FBRyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUM7Z0JBQUMsR0FBRyxDQUFDLENBQUMsR0FBQyxFQUFFLEdBQUMsRUFBRSxDQUFBO2FBQUM7aUJBQzVDLElBQUksQ0FBQyxHQUFDLEdBQUcsRUFBRTtnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQztnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQztnQkFBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsR0FBQyxFQUFFLENBQUE7YUFBQztpQkFDNUMsSUFBSSxDQUFDLEdBQUMsR0FBRyxFQUFFO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDO2dCQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxHQUFDLEVBQUUs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QVM7dUJBQUMsT0FBTztnQkE4Q2MsYUFBYTtzQkFBNUMsU0FBUzt1QkFBQyxlQUFlO2dCQUlJLFdBQVc7c0JBQXhDLFNBQVM7dUJBQUMsYUFBYTtnQkFJRixHQUFHO3NCQUF4QixTQUFTO3VCQUFDLEtBQUs7Z0JBSVksU0FBUztzQkFBcEMsU0FBUzt1QkFBQyxXQUFXOztBQWtpQjFCLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkE5bkJqQixXQUFXLGFBMG5CVixZQUFZLGFBMW5CYixXQUFXOytHQThuQlgsaUJBQWlCLFlBSmpCLENBQUMsWUFBWSxDQUFDOzJGQUlkLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlLCBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERvbUhhbmRsZXIsIENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgQ09MT1JQSUNLRVJfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2xvclBpY2tlciksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jb2xvclBpY2tlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdDbGFzc109XCJ7J3AtY29sb3JwaWNrZXIgcC1jb21wb25lbnQnOnRydWUsJ3AtY29sb3JwaWNrZXItb3ZlcmxheSc6IWlubGluZSwncC1jb2xvcnBpY2tlci1kcmFnZ2luZyc6Y29sb3JEcmFnZ2luZ3x8aHVlRHJhZ2dpbmd9XCI+XG4gICAgICAgICAgICA8aW5wdXQgI2lucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhaW5saW5lXCIgY2xhc3M9XCJwLWNvbG9ycGlja2VyLXByZXZpZXcgcC1pbnB1dHRleHRcIiByZWFkb25seT1cInJlYWRvbmx5XCIgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzogZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIiAoY2xpY2spPVwib25JbnB1dENsaWNrKClcIiAoa2V5ZG93bik9XCJvbklucHV0S2V5ZG93bigkZXZlbnQpXCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImlucHV0QmdDb2xvclwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlubGluZSB8fCBvdmVybGF5VmlzaWJsZVwiIFtuZ0NsYXNzXT1cInsncC1jb2xvcnBpY2tlci1wYW5lbCc6IHRydWUsICdwLWNvbG9ycGlja2VyLW92ZXJsYXktcGFuZWwnOiFpbmxpbmUsICdwLWRpc2FibGVkJzogZGlzYWJsZWR9XCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgW0AuZGlzYWJsZWRdPVwiaW5saW5lID09PSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25FbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbG9ycGlja2VyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjY29sb3JTZWxlY3RvciBjbGFzcz1cInAtY29sb3JwaWNrZXItY29sb3Itc2VsZWN0b3JcIiAodG91Y2hzdGFydCk9XCJvbkNvbG9yVG91Y2hTdGFydCgkZXZlbnQpXCIgKHRvdWNobW92ZSk9XCJvbk1vdmUoJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvbkRyYWdFbmQoKVwiIChtb3VzZWRvd24pPVwib25Db2xvck1vdXNlZG93bigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2xvcnBpY2tlci1jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2NvbG9ySGFuZGxlIGNsYXNzPVwicC1jb2xvcnBpY2tlci1jb2xvci1oYW5kbGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjaHVlIGNsYXNzPVwicC1jb2xvcnBpY2tlci1odWVcIiAobW91c2Vkb3duKT1cIm9uSHVlTW91c2Vkb3duKCRldmVudClcIiAodG91Y2hzdGFydCk9XCJvbkh1ZVRvdWNoU3RhcnQoJGV2ZW50KVwiICh0b3VjaG1vdmUpPVwib25Nb3ZlKCRldmVudClcIiAodG91Y2hlbmQpPVwib25EcmFnRW5kKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2h1ZUhhbmRsZSBjbGFzcz1cInAtY29sb3JwaWNrZXItaHVlLWhhbmRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtDT0xPUlBJQ0tFUl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xvcnBpY2tlci5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlubGluZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZvcm1hdDogc3RyaW5nID0gJ2hleCc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIHZhbHVlOiBhbnkgPSB7aDowLCBzOiAxMDAsIGI6IDEwMH07XG5cbiAgICBpbnB1dEJnQ29sb3I6IHN0cmluZztcblxuICAgIHNob3duOiBib29sZWFuO1xuXG4gICAgb3ZlcmxheVZpc2libGU6IGJvb2xlYW47XG5cbiAgICBkZWZhdWx0Q29sb3I6IHN0cmluZyA9ICdmZjAwMDAnO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIGRvY3VtZW50TW91c2Vtb3ZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgZG9jdW1lbnRNb3VzZXVwTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgZG9jdW1lbnRIdWVNb3ZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgc2VsZkNsaWNrOiBib29sZWFuO1xuXG4gICAgY29sb3JEcmFnZ2luZzogYm9vbGVhbjtcblxuICAgIGh1ZURyYWdnaW5nOiBib29sZWFuO1xuXG4gICAgb3ZlcmxheTogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBjb2xvclNlbGVjdG9yVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgY29sb3JIYW5kbGVWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBodWVWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBodWVIYW5kbGVWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLCBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlKSB7fVxuXG4gICAgQFZpZXdDaGlsZCgnY29sb3JTZWxlY3RvcicpIHNldCBjb2xvclNlbGVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdG9yVmlld0NoaWxkID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdjb2xvckhhbmRsZScpIHNldCBjb2xvckhhbmRsZShlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuY29sb3JIYW5kbGVWaWV3Q2hpbGQgPSBlbGVtZW50O1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2h1ZScpIHNldCBodWUoZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmh1ZVZpZXdDaGlsZCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaHVlSGFuZGxlJykgc2V0IGh1ZUhhbmRsZShlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaHVlSGFuZGxlVmlld0NoaWxkID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICBvbkh1ZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRNb3VzZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudE1vdXNldXBMaXN0ZW5lcigpO1xuXG4gICAgICAgIHRoaXMuaHVlRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnBpY2tIdWUoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSHVlVG91Y2hTdGFydChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5odWVEcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGlja0h1ZShldmVudCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgIH1cblxuICAgIG9uQ29sb3JUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbG9yRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnBpY2tDb2xvcihldmVudCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgIH1cblxuICAgIHBpY2tIdWUoZXZlbnQsIHBvc2l0aW9uPykge1xuICAgICAgICBsZXQgcGFnZVkgPSBwb3NpdGlvbiA/IHBvc2l0aW9uLnBhZ2VZIDogZXZlbnQucGFnZVk7XG4gICAgICAgIGxldCB0b3A6IG51bWJlciA9IHRoaXMuaHVlVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDApO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWxpZGF0ZUhTQih7XG4gICAgICAgICAgICBoOiBNYXRoLmZsb29yKDM2MCAqICgxNTAgLSBNYXRoLm1heCgwLCBNYXRoLm1pbigxNTAsIChwYWdlWSAtIHRvcCkpKSkgLyAxNTApLFxuICAgICAgICAgICAgczogdGhpcy52YWx1ZS5zLFxuICAgICAgICAgICAgYjogdGhpcy52YWx1ZS5iXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3JTZWxlY3RvcigpO1xuICAgICAgICB0aGlzLnVwZGF0ZVVJKCk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuZ2V0VmFsdWVUb1VwZGF0ZSgpfSk7XG4gICAgfVxuXG4gICAgb25Db2xvck1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRNb3VzZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudE1vdXNldXBMaXN0ZW5lcigpO1xuXG4gICAgICAgIHRoaXMuY29sb3JEcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGlja0NvbG9yKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk1vdmUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sb3JEcmFnZ2luZykge1xuICAgICAgICAgICAgdGhpcy5waWNrQ29sb3IoZXZlbnQsIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5odWVEcmFnZ2luZykge1xuICAgICAgICAgICAgdGhpcy5waWNrSHVlKGV2ZW50LCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnRW5kKCkge1xuICAgICAgICB0aGlzLmNvbG9yRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5odWVEcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRNb3VzZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50TW91c2V1cExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcGlja0NvbG9yKGV2ZW50LCBwb3NpdGlvbj8pIHtcbiAgICAgICAgbGV0IHBhZ2VYID0gcG9zaXRpb24gPyBwb3NpdGlvbi5wYWdlWCA6IGV2ZW50LnBhZ2VYO1xuICAgICAgICBsZXQgcGFnZVkgPSBwb3NpdGlvbiA/IHBvc2l0aW9uLnBhZ2VZIDogZXZlbnQucGFnZVk7XG4gICAgICAgIGxldCByZWN0ID0gdGhpcy5jb2xvclNlbGVjdG9yVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCB0b3AgPSByZWN0LnRvcCArICh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCAwKTtcbiAgICAgICAgbGV0IGxlZnQgPSByZWN0LmxlZnQgKyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7XG4gICAgICAgIGxldCBzYXR1cmF0aW9uID0gTWF0aC5mbG9vcigxMDAgKiAoTWF0aC5tYXgoMCwgTWF0aC5taW4oMTUwLCAoKHBhZ2VYKS0gbGVmdCkpKSkgLyAxNTApO1xuICAgICAgICBsZXQgYnJpZ2h0bmVzcyA9IE1hdGguZmxvb3IoMTAwICogKDE1MCAtIE1hdGgubWF4KDAsIE1hdGgubWluKDE1MCwgKChwYWdlWSkgLSB0b3ApKSkpIC8gMTUwKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsaWRhdGVIU0Ioe1xuICAgICAgICAgICAgaDogdGhpcy52YWx1ZS5oLFxuICAgICAgICAgICAgczogc2F0dXJhdGlvbixcbiAgICAgICAgICAgIGI6IGJyaWdodG5lc3NcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVVSSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLmdldFZhbHVlVG9VcGRhdGUoKX0pO1xuICAgIH1cblxuICAgIGdldFZhbHVlVG9VcGRhdGUoKSB7XG4gICAgICAgIGxldCB2YWw6IGFueTtcbiAgICAgICAgc3dpdGNoKHRoaXMuZm9ybWF0KSB7XG4gICAgICAgICAgICBjYXNlICdoZXgnOlxuICAgICAgICAgICAgICAgIHZhbCA9ICcjJyArIHRoaXMuSFNCdG9IRVgodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAncmdiJzpcbiAgICAgICAgICAgICAgICB2YWwgPSB0aGlzLkhTQnRvUkdCKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2hzYic6XG4gICAgICAgICAgICAgICAgdmFsID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuZ2V0VmFsdWVUb1VwZGF0ZSgpKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBzd2l0Y2godGhpcy5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZXgnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5IRVh0b0hTQih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyZ2InOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5SR0J0b0hTQih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoc2InOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5IRVh0b0hTQih0aGlzLmRlZmF1bHRDb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yU2VsZWN0b3IoKTtcbiAgICAgICAgdGhpcy51cGRhdGVVSSgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNvbG9yU2VsZWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yU2VsZWN0b3JWaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhzYjogYW55ID0ge307XG4gICAgICAgICAgICBoc2IucyA9IDEwMDtcbiAgICAgICAgICAgIGhzYi5iID0gMTAwO1xuICAgICAgICAgICAgaHNiLmggPSB0aGlzLnZhbHVlLmg7XG5cbiAgICAgICAgICAgIHRoaXMuY29sb3JTZWxlY3RvclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjJyArIHRoaXMuSFNCdG9IRVgoaHNiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVVJKCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvckhhbmRsZVZpZXdDaGlsZCAmJiB0aGlzLmh1ZUhhbmRsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbG9ySGFuZGxlVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICBNYXRoLmZsb29yKDE1MCAqIHRoaXMudmFsdWUucyAvIDEwMCkgKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5jb2xvckhhbmRsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICBNYXRoLmZsb29yKDE1MCAqICgxMDAgLSB0aGlzLnZhbHVlLmIpIC8gMTAwKSArICdweCc7XG4gICAgICAgICAgICB0aGlzLmh1ZUhhbmRsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IE1hdGguZmxvb3IoMTUwIC0gKDE1MCAqIHRoaXMudmFsdWUuaCAvIDM2MCkpICsgJ3B4JztcblxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dEJnQ29sb3IgPSAnIycgKyB0aGlzLkhTQnRvSEVYKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cygpIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZE92ZXJsYXkoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ292ZXJsYXknLCB0aGlzLm92ZXJsYXksIHRoaXMuY29uZmlnLnpJbmRleC5vdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvclNlbGVjdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVUkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNob3cuZW1pdCh7fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHt9KVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBlbmRPdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXksIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzdG9yZU92ZXJsYXlBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXkgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKVxuICAgICAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKHRoaXMub3ZlcmxheSwgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgRG9tSGFuZGxlci5yZWxhdGl2ZVBvc2l0aW9uKHRoaXMub3ZlcmxheSwgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dENsaWNrKCkge1xuICAgICAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgICAgIHRoaXMudG9nZ2xlUGFuZWwoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVQYW5lbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKVxuICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uSW5wdXRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy9zcGFjZVxuICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhbmVsKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VzY2FwZSBhbmQgdGFiXG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VsZkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZDbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50TW91c2Vtb3ZlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudE1vdXNlbW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlbW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdtb3VzZW1vdmUnLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvckRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGlja0NvbG9yKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5odWVEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpY2tIdWUoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRNb3VzZW1vdmVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZW1vdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlbW92ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2Vtb3ZlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50TW91c2V1cExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRNb3VzZXVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2V1cExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sb3JEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaHVlRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50TW91c2Vtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50TW91c2V1cExpc3RlbmVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50TW91c2V1cExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudE1vdXNldXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNldXBMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNldXBMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZUhTQihoc2IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgubWluKDM2MCwgTWF0aC5tYXgoMCwgaHNiLmgpKSxcbiAgICAgICAgICAgIHM6IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgaHNiLnMpKSxcbiAgICAgICAgICAgIGI6IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgaHNiLmIpKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhbGlkYXRlUkdCKHJnYikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcjogTWF0aC5taW4oMjU1LCBNYXRoLm1heCgwLCByZ2IucikpLFxuICAgICAgICAgICAgZzogTWF0aC5taW4oMjU1LCBNYXRoLm1heCgwLCByZ2IuZykpLFxuICAgICAgICAgICAgYjogTWF0aC5taW4oMjU1LCBNYXRoLm1heCgwLCByZ2IuYikpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFsaWRhdGVIRVgoaGV4KSB7XG4gICAgICAgIHZhciBsZW4gPSA2IC0gaGV4Lmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbiA+IDApIHtcbiAgICAgICAgICAgIHZhciBvID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBvLnB1c2goJzAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG8ucHVzaChoZXgpO1xuICAgICAgICAgICAgaGV4ID0gby5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGV4O1xuICAgIH1cblxuICAgIEhFWHRvUkdCKGhleCkge1xuICAgICAgICBsZXQgaGV4VmFsdWUgPSBwYXJzZUludCgoKGhleC5pbmRleE9mKCcjJykgPiAtMSkgPyBoZXguc3Vic3RyaW5nKDEpIDogaGV4KSwgMTYpO1xuICAgICAgICByZXR1cm4ge3I6IGhleFZhbHVlID4+IDE2LCBnOiAoaGV4VmFsdWUgJiAweDAwRkYwMCkgPj4gOCwgYjogKGhleFZhbHVlICYgMHgwMDAwRkYpfTtcbiAgICB9XG5cbiAgICBIRVh0b0hTQihoZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUkdCdG9IU0IodGhpcy5IRVh0b1JHQihoZXgpKTtcbiAgICB9XG5cbiAgICBSR0J0b0hTQihyZ2IpIHtcbiAgICAgICAgdmFyIGhzYiA9IHtcbiAgICAgICAgICAgIGg6IDAsXG4gICAgICAgICAgICBzOiAwLFxuICAgICAgICAgICAgYjogMFxuICAgICAgICB9O1xuICAgICAgICB2YXIgbWluID0gTWF0aC5taW4ocmdiLnIsIHJnYi5nLCByZ2IuYik7XG4gICAgICAgIHZhciBtYXggPSBNYXRoLm1heChyZ2IuciwgcmdiLmcsIHJnYi5iKTtcbiAgICAgICAgdmFyIGRlbHRhID0gbWF4IC0gbWluO1xuICAgICAgICBoc2IuYiA9IG1heDtcbiAgICAgICAgaHNiLnMgPSBtYXggIT0gMCA/IDI1NSAqIGRlbHRhIC8gbWF4IDogMDtcbiAgICAgICAgaWYgKGhzYi5zICE9IDApIHtcbiAgICAgICAgICAgIGlmIChyZ2IuciA9PSBtYXgpIHtcbiAgICAgICAgICAgICAgICBoc2IuaCA9IChyZ2IuZyAtIHJnYi5iKSAvIGRlbHRhO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZ2IuZyA9PSBtYXgpIHtcbiAgICAgICAgICAgICAgICBoc2IuaCA9IDIgKyAocmdiLmIgLSByZ2IucikgLyBkZWx0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaHNiLmggPSA0ICsgKHJnYi5yIC0gcmdiLmcpIC8gZGVsdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoc2IuaCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIGhzYi5oICo9IDYwO1xuICAgICAgICBpZiAoaHNiLmggPCAwKSB7XG4gICAgICAgICAgICBoc2IuaCArPSAzNjA7XG4gICAgICAgIH1cbiAgICAgICAgaHNiLnMgKj0gMTAwLzI1NTtcbiAgICAgICAgaHNiLmIgKj0gMTAwLzI1NTtcbiAgICAgICAgcmV0dXJuIGhzYjtcbiAgICB9XG5cbiAgICBIU0J0b1JHQihoc2IpIHtcbiAgICAgICAgdmFyIHJnYiA9IHtcbiAgICAgICAgICAgIHI6IG51bGwsIGc6IG51bGwsIGI6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGg6IG51bWJlciA9IGhzYi5oO1xuICAgICAgICBsZXQgczogbnVtYmVyID0gaHNiLnMqMjU1LzEwMDtcbiAgICAgICAgbGV0IHY6IG51bWJlciA9IGhzYi5iKjI1NS8xMDA7XG4gICAgICAgIGlmIChzID09IDApIHtcbiAgICAgICAgICAgIHJnYiA9IHtcbiAgICAgICAgICAgICAgICByOiB2LFxuICAgICAgICAgICAgICAgIGc6IHYsXG4gICAgICAgICAgICAgICAgYjogdlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHQxOiBudW1iZXIgPSB2O1xuICAgICAgICAgICAgbGV0IHQyOiBudW1iZXIgPSAoMjU1LXMpKnYvMjU1O1xuICAgICAgICAgICAgbGV0IHQzOiBudW1iZXIgPSAodDEtdDIpKihoJTYwKS82MDtcbiAgICAgICAgICAgIGlmIChoPT0zNjApIGggPSAwO1xuICAgICAgICAgICAgaWYgKGg8NjApIHtyZ2Iucj10MTtcdHJnYi5iPXQyOyByZ2IuZz10Mit0M31cbiAgICAgICAgICAgIGVsc2UgaWYgKGg8MTIwKSB7cmdiLmc9dDE7IHJnYi5iPXQyO1x0cmdiLnI9dDEtdDN9XG4gICAgICAgICAgICBlbHNlIGlmIChoPDE4MCkge3JnYi5nPXQxOyByZ2Iucj10MjtcdHJnYi5iPXQyK3QzfVxuICAgICAgICAgICAgZWxzZSBpZiAoaDwyNDApIHtyZ2IuYj10MTsgcmdiLnI9dDI7XHRyZ2IuZz10MS10M31cbiAgICAgICAgICAgIGVsc2UgaWYgKGg8MzAwKSB7cmdiLmI9dDE7IHJnYi5nPXQyO1x0cmdiLnI9dDIrdDN9XG4gICAgICAgICAgICBlbHNlIGlmIChoPDM2MCkge3JnYi5yPXQxOyByZ2IuZz10MjtcdHJnYi5iPXQxLXQzfVxuICAgICAgICAgICAgZWxzZSB7cmdiLnI9MDsgcmdiLmc9MDtcdHJnYi5iPTB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtyOk1hdGgucm91bmQocmdiLnIpLCBnOk1hdGgucm91bmQocmdiLmcpLCBiOk1hdGgucm91bmQocmdiLmIpfTtcbiAgICB9XG5cbiAgICBSR0J0b0hFWChyZ2IpIHtcbiAgICAgICAgdmFyIGhleCA9IFtcbiAgICAgICAgICAgIHJnYi5yLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICAgIHJnYi5nLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICAgIHJnYi5iLnRvU3RyaW5nKDE2KVxuICAgICAgICBdO1xuXG4gICAgICAgIGZvcih2YXIga2V5IGluIGhleCkge1xuICAgICAgICAgICAgaWYgKGhleFtrZXldLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgaGV4W2tleV0gPSAnMCcgKyBoZXhba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoZXguam9pbignJyk7XG4gICAgfVxuXG4gICAgSFNCdG9IRVgoaHNiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlJHQnRvSEVYKHRoaXMuSFNCdG9SR0IoaHNiKSk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5SGlkZSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZU92ZXJsYXlBcHBlbmQoKTtcbiAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtDb2xvclBpY2tlcl0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ29sb3JQaWNrZXJdXG59KVxuZXhwb3J0IGNsYXNzIENvbG9yUGlja2VyTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/colorpicker/primeng-colorpicker.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/colorpicker/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/colorpicker/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jb2xvcnBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb2xvcnBpY2tlci9wcmltZW5nLWNvbG9ycGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/colorpicker/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/colorpicker/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/colorpicker/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './colorpicker';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb2xvcnBpY2tlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2xvcnBpY2tlcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/confirmdialog/confirmdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmdialog/confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmdialog/confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,532 @@
+import { NgModule, Component, Input, EventEmitter, ContentChild, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output } from '@angular/core';
+import { trigger, style, transition, animate, useAnimation, animation } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { Footer, SharedModule, PrimeTemplate, TranslationKeys, ConfirmEventType } from 'primeng/api';
+import { ButtonModule } from 'primeng/button';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/button";
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+export class ConfirmDialog {
+    constructor(el, renderer, confirmationService, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.confirmationService = confirmationService;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.acceptIcon = 'pi pi-check';
+        this.acceptVisible = true;
+        this.rejectIcon = 'pi pi-times';
+        this.rejectVisible = true;
+        this.closeOnEscape = true;
+        this.blockScroll = true;
+        this.closable = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.focusTrap = true;
+        this.defaultFocus = 'accept';
+        this.onHide = new EventEmitter();
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+        this.id = UniqueComponentId();
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                this.confirmationOptions = {
+                    message: this.confirmation.message || this.message,
+                    icon: this.confirmation.icon || this.icon,
+                    header: this.confirmation.header || this.header,
+                    rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,
+                    acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,
+                    acceptLabel: this.confirmation.acceptLabel || this.acceptLabel,
+                    rejectLabel: this.confirmation.rejectLabel || this.rejectLabel,
+                    acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,
+                    rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,
+                    acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,
+                    rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,
+                    defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,
+                    blockScroll: (this.confirmation.blockScroll === false || this.confirmation.blockScroll === true) ? this.confirmation.blockScroll : this.blockScroll,
+                    closeOnEscape: (this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true) ? this.confirmation.closeOnEscape : this.closeOnEscape,
+                    dismissableMask: (this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true) ? this.confirmation.dismissableMask : this.dismissableMask
+                };
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+        this.cd.markForCheck();
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'top-left':
+            case 'bottom-left':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'top-right':
+            case 'bottom-right':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            if (this.visible) {
+                this.cd.markForCheck();
+            }
+        });
+    }
+    option(name) {
+        const source = this.confirmationOptions || this;
+        if (source.hasOwnProperty(name)) {
+            return source[name];
+        }
+        return undefined;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');
+                this.container.setAttribute(this.id, '');
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.enableModality();
+                const element = this.getElementToFocus();
+                if (element) {
+                    element.focus();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.option('defaultFocus')) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');
+            case 'close':
+                return DomHandler.findSingle(this.container, '.p-dialog-header-close');
+            case 'none':
+                return null;
+            //backward compatibility
+            default:
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.wrapper && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    enableModality() {
+        if (this.option('blockScroll')) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.option('dismissableMask')) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+    }
+    disableModality() {
+        this.maskVisible = false;
+        if (this.option('blockScroll')) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.dismissableMask) {
+            this.unbindMaskClickListener();
+        }
+        if (this.container && !this.cd['destroyed']) {
+            this.cd.detectChanges();
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    close(event) {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);
+        }
+        this.hide(ConfirmEventType.CANCEL);
+        event.preventDefault();
+    }
+    hide(type) {
+        this.onHide.emit(type);
+        this.visible = false;
+        this.confirmation = null;
+        this.confirmationOptions = null;
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    getMaskClass() {
+        let maskClass = { 'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll };
+        maskClass[this.getPositionClass().toString()] = true;
+        return maskClass;
+    }
+    getPositionClass() {
+        const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];
+        const pos = positions.find(item => item === this.position);
+        return pos ? `p-dialog-${pos}` : '';
+    }
+    bindGlobalListeners() {
+        if ((this.option('closeOnEscape') && this.closable) || this.focusTrap && !this.documentEscapeListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27 && (this.option('closeOnEscape') && this.closable)) {
+                    if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {
+                        this.close(event);
+                    }
+                }
+                if (event.which === 9 && this.focusTrap) {
+                    event.preventDefault();
+                    let focusableElements = DomHandler.getFocusableElements(this.container);
+                    if (focusableElements && focusableElements.length > 0) {
+                        if (!focusableElements[0].ownerDocument.activeElement) {
+                            focusableElements[0].focus();
+                        }
+                        else {
+                            let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                            if (event.shiftKey) {
+                                if (focusedIndex == -1 || focusedIndex === 0)
+                                    focusableElements[focusableElements.length - 1].focus();
+                                else
+                                    focusableElements[focusedIndex - 1].focus();
+                            }
+                            else {
+                                if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                    focusableElements[0].focus();
+                                else
+                                    focusableElements[focusedIndex + 1].focus();
+                            }
+                        }
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    onOverlayHide() {
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.disableModality();
+        this.unbindGlobalListeners();
+        this.container = null;
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.onOverlayHide();
+        this.subscription.unsubscribe();
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+    accept() {
+        if (this.confirmation && this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide(ConfirmEventType.ACCEPT);
+    }
+    reject() {
+        if (this.confirmation && this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);
+        }
+        this.hide(ConfirmEventType.REJECT);
+    }
+    get acceptButtonLabel() {
+        return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+}
+ConfirmDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ConfirmationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmDialog, selector: "p-confirmDialog", inputs: { header: "header", icon: "icon", message: "message", style: "style", styleClass: "styleClass", maskStyleClass: "maskStyleClass", acceptIcon: "acceptIcon", acceptLabel: "acceptLabel", acceptAriaLabel: "acceptAriaLabel", acceptVisible: "acceptVisible", rejectIcon: "rejectIcon", rejectLabel: "rejectLabel", rejectAriaLabel: "rejectAriaLabel", rejectVisible: "rejectVisible", acceptButtonStyleClass: "acceptButtonStyleClass", rejectButtonStyleClass: "rejectButtonStyleClass", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", blockScroll: "blockScroll", rtl: "rtl", closable: "closable", appendTo: "appendTo", key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", transitionOptions: "transitionOptions", focusTrap: "focusTrap", defaultFocus: "defaultFocus", breakpoints: "breakpoints", visible: "visible", position: "position" }, outputs: { onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmDialog', template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ConfirmationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], message: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], acceptIcon: [{
+                type: Input
+            }], acceptLabel: [{
+                type: Input
+            }], acceptAriaLabel: [{
+                type: Input
+            }], acceptVisible: [{
+                type: Input
+            }], rejectIcon: [{
+                type: Input
+            }], rejectLabel: [{
+                type: Input
+            }], rejectAriaLabel: [{
+                type: Input
+            }], rejectVisible: [{
+                type: Input
+            }], acceptButtonStyleClass: [{
+                type: Input
+            }], rejectButtonStyleClass: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], onHide: [{
+                type: Output
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ConfirmDialogModule {
+}
+ConfirmDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, declarations: [ConfirmDialog], imports: [CommonModule, ButtonModule, RippleModule], exports: [ConfirmDialog, ButtonModule, SharedModule] });
+ConfirmDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, imports: [[CommonModule, ButtonModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule],
+                    exports: [ConfirmDialog, ButtonModule, SharedModule],
+                    declarations: [ConfirmDialog]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWRpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb25maXJtZGlhbG9nL2NvbmZpcm1kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBQyxZQUFZLEVBQVcsWUFBWSxFQUFRLFNBQVMsRUFBbUIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUE0QyxNQUFNLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDelEsT0FBTyxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBaUIsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2pILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUk1QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRTlDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUM1QixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqRCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN0RSxDQUFDLENBQUM7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QUFhLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixPbkRlc3Ryb3ksSW5wdXQsRXZlbnRFbWl0dGVyLFJlbmRlcmVyMixDb250ZW50Q2hpbGQsTmdab25lLFZpZXdDaGlsZCxDaGFuZ2VEZXRlY3RvclJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgT3V0cHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0cmlnZ2VyLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZSxBbmltYXRpb25FdmVudCwgdXNlQW5pbWF0aW9uLCBhbmltYXRpb259IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7Rm9vdGVyLFNoYXJlZE1vZHVsZSwgUHJpbWVUZW1wbGF0ZSwgUHJpbWVOR0NvbmZpZywgVHJhbnNsYXRpb25LZXlzLCBDb25maXJtRXZlbnRUeXBlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtDb25maXJtYXRpb259IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Q29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtVbmlxdWVDb21wb25lbnRJZCwgWkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgUmlwcGxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuXG5jb25zdCBzaG93QW5pbWF0aW9uID0gYW5pbWF0aW9uKFtcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pLFxuICAgIGFuaW1hdGUoJ3t7dHJhbnNpdGlvbn19Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICdub25lJywgb3BhY2l0eTogMSB9KSlcbl0pO1xuXG5jb25zdCBoaWRlQW5pbWF0aW9uID0gYW5pbWF0aW9uKFtcbiAgICBhbmltYXRlKCd7e3RyYW5zaXRpb259fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAne3t0cmFuc2Zvcm19fScsIG9wYWNpdHk6IDAgfSkpXG5dKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNvbmZpcm1EaWFsb2cnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cIm1hc2tTdHlsZUNsYXNzXCIgW25nQ2xhc3NdPVwiZ2V0TWFza0NsYXNzKClcIiAqbmdJZj1cIm1hc2tWaXNpYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC1kaWFsb2cgcC1jb25maXJtLWRpYWxvZyBwLWNvbXBvbmVudCc6dHJ1ZSwncC1kaWFsb2ctcnRsJzpydGx9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIChtb3VzZWRvd24pPVwibW92ZU9uVG9wKClcIlxuICAgICAgICAgICAgICAgIFtAYW5pbWF0aW9uXT1cInt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHt0cmFuc2Zvcm06IHRyYW5zZm9ybU9wdGlvbnMsIHRyYW5zaXRpb246IHRyYW5zaXRpb25PcHRpb25zfX1cIiAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQGFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIiAqbmdJZj1cInZpc2libGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaWFsb2ctaGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaWFsb2ctaGVhZGVyXCIgKm5nSWY9XCIhaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRpYWxvZy10aXRsZVwiICpuZ0lmPVwib3B0aW9uKCdoZWFkZXInKVwiPnt7b3B0aW9uKCdoZWFkZXInKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaWFsb2ctaGVhZGVyLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2xvc2FibGVcIiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwieydwLWRpYWxvZy1oZWFkZXItaWNvbiBwLWRpYWxvZy1oZWFkZXItY2xvc2UgcC1saW5rJzp0cnVlfVwiIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiY2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktdGltZXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAjY29udGVudCBjbGFzcz1cInAtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiJ3AtY29uZmlybS1kaWFsb2ctaWNvbidcIiBbY2xhc3NdPVwib3B0aW9uKCdpY29uJylcIiAqbmdJZj1cIm9wdGlvbignaWNvbicpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29uZmlybS1kaWFsb2ctbWVzc2FnZVwiIFtpbm5lckhUTUxdPVwib3B0aW9uKCdtZXNzYWdlJylcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGlhbG9nLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyIHx8IGZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaWFsb2ctZm9vdGVyXCIgKm5nSWY9XCIhZm9vdGVyICYmICFmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwUmlwcGxlIHBCdXR0b24gW2ljb25dPVwib3B0aW9uKCdyZWplY3RJY29uJylcIiBbbGFiZWxdPVwicmVqZWN0QnV0dG9uTGFiZWxcIiAoY2xpY2spPVwicmVqZWN0KClcIiBbbmdDbGFzc109XCIncC1jb25maXJtLWRpYWxvZy1yZWplY3QnXCIgW2NsYXNzXT1cIm9wdGlvbigncmVqZWN0QnV0dG9uU3R5bGVDbGFzcycpXCIgKm5nSWY9XCJvcHRpb24oJ3JlamVjdFZpc2libGUnKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicmVqZWN0QXJpYUxhYmVsXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBSaXBwbGUgcEJ1dHRvbiBbaWNvbl09XCJvcHRpb24oJ2FjY2VwdEljb24nKVwiIFtsYWJlbF09XCJhY2NlcHRCdXR0b25MYWJlbFwiIChjbGljayk9XCJhY2NlcHQoKVwiIFtuZ0NsYXNzXT1cIidwLWNvbmZpcm0tZGlhbG9nLWFjY2VwdCdcIiBbY2xhc3NdPVwib3B0aW9uKCdhY2NlcHRCdXR0b25TdHlsZUNsYXNzJylcIiAqbmdJZj1cIm9wdGlvbignYWNjZXB0VmlzaWJsZScpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhY2NlcHRBcmlhTGFiZWxcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiB2aXNpYmxlJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihzaG93QW5pbWF0aW9uKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKGhpZGVBbmltYXRpb24pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi4vZGlhbG9nL2RpYWxvZy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtRGlhbG9nIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxPbkluaXQsT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1hc2tTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhY2NlcHRJY29uOiBzdHJpbmcgPSAncGkgcGktY2hlY2snO1xuXG4gICAgQElucHV0KCkgYWNjZXB0TGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFjY2VwdEFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYWNjZXB0VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSByZWplY3RJY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnO1xuXG4gICAgQElucHV0KCkgcmVqZWN0TGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHJlamVjdEFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVqZWN0VmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZWplY3RCdXR0b25TdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjbG9zZU9uRXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRpc21pc3NhYmxlTWFzazogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGJsb2NrU2Nyb2xsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNsb3NhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBrZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gICAgQElucHV0KCkgZm9jdXNUcmFwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRlZmF1bHRGb2N1czogc3RyaW5nID0gJ2FjY2VwdCc7XG5cbiAgICBASW5wdXQoKSBicmVha3BvaW50czogYW55O1xuXG4gICAgQElucHV0KCkgZ2V0IHZpc2libGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuICAgIHNldCB2aXNpYmxlKHZhbHVlOmFueSkge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3Zpc2libGUgJiYgIXRoaXMubWFza1Zpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubWFza1Zpc2libGUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgcG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH07XG5cbiAgICBzZXQgcG9zaXRpb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHZhbHVlO1xuXG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtT3B0aW9ucyA9IFwidHJhbnNsYXRlM2QoLTEwMCUsIDBweCwgMHB4KVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKDEwMCUsIDBweCwgMHB4KVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtT3B0aW9ucyA9IFwidHJhbnNsYXRlM2QoMHB4LCAxMDAlLCAwcHgpXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1PcHRpb25zID0gXCJ0cmFuc2xhdGUzZCgwcHgsIC0xMDAlLCAwcHgpXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1PcHRpb25zID0gXCJzY2FsZSgwLjcpXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXIpIGZvb3RlcjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uO1xuXG4gICAgX3Zpc2libGU6IGJvb2xlYW47XG5cbiAgICBtYXNrVmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGRvY3VtZW50RXNjYXBlTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICB3cmFwcGVyOiBIVE1MRWxlbWVudDtcblxuICAgIGNvbnRlbnRDb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBwcmVXaWR0aDogbnVtYmVyO1xuXG4gICAgX3Bvc2l0aW9uOiBzdHJpbmcgPSBcImNlbnRlclwiO1xuXG4gICAgdHJhbnNmb3JtT3B0aW9uczogYW55ID0gXCJzY2FsZSgwLjcpXCI7XG5cbiAgICBzdHlsZUVsZW1lbnQ6IGFueTtcblxuICAgIGlkID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIGNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbjtcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHB1YmxpYyB6b25lOiBOZ1pvbmUsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLnJlcXVpcmVDb25maXJtYXRpb24kLnN1YnNjcmliZShjb25maXJtYXRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKCFjb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb25maXJtYXRpb24ua2V5ID09PSB0aGlzLmtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uID0gY29uZmlybWF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5jb25maXJtYXRpb24ubWVzc2FnZXx8dGhpcy5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiB0aGlzLmNvbmZpcm1hdGlvbi5pY29ufHx0aGlzLmljb24sXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5jb25maXJtYXRpb24uaGVhZGVyfHx0aGlzLmhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0VmlzaWJsZTogdGhpcy5jb25maXJtYXRpb24ucmVqZWN0VmlzaWJsZSA9PSBudWxsID8gdGhpcy5yZWplY3RWaXNpYmxlIDogdGhpcy5jb25maXJtYXRpb24ucmVqZWN0VmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0VmlzaWJsZTogdGhpcy5jb25maXJtYXRpb24uYWNjZXB0VmlzaWJsZSA9PSBudWxsID8gdGhpcy5hY2NlcHRWaXNpYmxlIDogdGhpcy5jb25maXJtYXRpb24uYWNjZXB0VmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdExhYmVsfHx0aGlzLmFjY2VwdExhYmVsLFxuICAgICAgICAgICAgICAgICAgICByZWplY3RMYWJlbDogdGhpcy5jb25maXJtYXRpb24ucmVqZWN0TGFiZWx8fHRoaXMucmVqZWN0TGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGFjY2VwdEljb246IHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdEljb24gfHwgdGhpcy5hY2NlcHRJY29uLFxuICAgICAgICAgICAgICAgICAgICByZWplY3RJY29uOiB0aGlzLmNvbmZpcm1hdGlvbi5yZWplY3RJY29uIHx8IHRoaXMucmVqZWN0SWNvbixcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzczogdGhpcy5jb25maXJtYXRpb24uYWNjZXB0QnV0dG9uU3R5bGVDbGFzcyB8fCB0aGlzLmFjY2VwdEJ1dHRvblN0eWxlQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M6IHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEJ1dHRvblN0eWxlQ2xhc3MgfHwgdGhpcy5yZWplY3RCdXR0b25TdHlsZUNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Rm9jdXM6IHRoaXMuY29uZmlybWF0aW9uLmRlZmF1bHRGb2N1cyB8fCB0aGlzLmRlZmF1bHRGb2N1cyxcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tTY3JvbGw6ICh0aGlzLmNvbmZpcm1hdGlvbi5ibG9ja1Njcm9sbCA9PT0gZmFsc2UgfHwgdGhpcy5jb25maXJtYXRpb24uYmxvY2tTY3JvbGwgPT09IHRydWUpID8gdGhpcy5jb25maXJtYXRpb24uYmxvY2tTY3JvbGwgOiB0aGlzLmJsb2NrU2Nyb2xsLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiAodGhpcy5jb25maXJtYXRpb24uY2xvc2VPbkVzY2FwZSA9PT0gZmFsc2UgfHwgdGhpcy5jb25maXJtYXRpb24uY2xvc2VPbkVzY2FwZSA9PT0gdHJ1ZSkgPyB0aGlzLmNvbmZpcm1hdGlvbi5jbG9zZU9uRXNjYXBlIDogdGhpcy5jbG9zZU9uRXNjYXBlLFxuICAgICAgICAgICAgICAgICAgICBkaXNtaXNzYWJsZU1hc2s6ICh0aGlzLmNvbmZpcm1hdGlvbi5kaXNtaXNzYWJsZU1hc2sgPT09IGZhbHNlIHx8IHRoaXMuY29uZmlybWF0aW9uLmRpc21pc3NhYmxlTWFzayA9PT0gdHJ1ZSkgPyB0aGlzLmNvbmZpcm1hdGlvbi5kaXNtaXNzYWJsZU1hc2sgOiB0aGlzLmRpc21pc3NhYmxlTWFza1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24uYWNjZXB0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRFdmVudC5zdWJzY3JpYmUodGhpcy5jb25maXJtYXRpb24uYWNjZXB0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24ucmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5yZWplY3RFdmVudC5zdWJzY3JpYmUodGhpcy5jb25maXJtYXRpb24ucmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3B0aW9uKG5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmNvbmZpcm1hdGlvbk9wdGlvbnMgfHwgdGhpcztcbiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyID0gdGhpcy5jb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRDb250YWluZXIgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICcucC1kaWFsb2ctY29udGVudCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlkLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVPblRvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdsb2JhbExpc3RlbmVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTW9kYWxpdHkoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnRUb0ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RWxlbWVudFRvRm9jdXMoKSB7XG4gICAgICAgIHN3aXRjaCh0aGlzLm9wdGlvbignZGVmYXVsdEZvY3VzJykpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FjY2VwdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lciwgJy5wLWNvbmZpcm0tZGlhbG9nLWFjY2VwdCcpO1xuXG4gICAgICAgICAgICBjYXNlICdyZWplY3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICcucC1jb25maXJtLWRpYWxvZy1yZWplY3QnKTtcblxuICAgICAgICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICcucC1kaWFsb2ctaGVhZGVyLWNsb3NlJyk7XG5cbiAgICAgICAgICAgIGNhc2UgJ25vbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvL2JhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lciwgJy5wLWNvbmZpcm0tZGlhbG9nLWFjY2VwdCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kQ29udGFpbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMud3JhcHBlcik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzdG9yZUFwcGVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlciAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuYWJsZU1vZGFsaXR5KCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb24oJ2Jsb2NrU2Nyb2xsJykpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb24oJ2Rpc21pc3NhYmxlTWFzaycpKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy53cmFwcGVyLCAnbW91c2Vkb3duJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53cmFwcGVyICYmIHRoaXMud3JhcHBlci5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNhYmxlTW9kYWxpdHkoKSB7XG4gICAgICAgIHRoaXMubWFza1Zpc2libGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb24oJ2Jsb2NrU2Nyb2xsJykpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kaXNtaXNzYWJsZU1hc2spIHtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiAhdGhpcy5jZFsnZGVzdHJveWVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IGluIHRoaXMuYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBpbm5lckhUTUwgKz0gYFxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAke2JyZWFrcG9pbnR9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAucC1kaWFsb2dbJHt0aGlzLmlkfV0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAke3RoaXMuYnJlYWtwb2ludHNbYnJlYWtwb2ludF19ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LmlubmVySFRNTCA9IGlubmVySFRNTDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24ucmVqZWN0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50LmVtaXQoQ29uZmlybUV2ZW50VHlwZS5DQU5DRUwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKENvbmZpcm1FdmVudFR5cGUuQ0FOQ0VMKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBoaWRlKHR5cGU/KSB7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQodHlwZSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uT3B0aW9ucyA9IG51bGw7XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5jb250YWluZXIsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5tb2RhbCk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKHBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCwgMTApIC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNYXNrQ2xhc3MoKSB7XG4gICAgICAgIGxldCBtYXNrQ2xhc3MgPSB7J3AtZGlhbG9nLW1hc2sgcC1jb21wb25lbnQtb3ZlcmxheSc6IHRydWUsICdwLWRpYWxvZy1tYXNrLXNjcm9sbGJsb2NrZXInOiB0aGlzLmJsb2NrU2Nyb2xsfTtcbiAgICAgICAgbWFza0NsYXNzW3RoaXMuZ2V0UG9zaXRpb25DbGFzcygpLnRvU3RyaW5nKCldID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG1hc2tDbGFzcztcbiAgICB9XG5cbiAgICBnZXRQb3NpdGlvbkNsYXNzKCkge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCcsICdib3R0b20nLCAnYm90dG9tLWxlZnQnLCAnYm90dG9tLXJpZ2h0J107XG4gICAgICAgIGNvbnN0IHBvcyA9IHBvc2l0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5wb3NpdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHBvcyA/IGBwLWRpYWxvZy0ke3Bvc31gIDogJyc7XG4gICAgfVxuXG4gICAgYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKCh0aGlzLm9wdGlvbignY2xvc2VPbkVzY2FwZScpICYmIHRoaXMuY2xvc2FibGUpIHx8IHRoaXMuZm9jdXNUcmFwICYmICF0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMjcgJiYgKHRoaXMub3B0aW9uKCdjbG9zZU9uRXNjYXBlJykgJiYgdGhpcy5jbG9zYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCkgPT09IFpJbmRleFV0aWxzLmdldCh0aGlzLmNvbnRhaW5lcikgJiYgdGhpcy52aXNpYmxlKcKge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDkgJiYgdGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlRWxlbWVudHMgPSBEb21IYW5kbGVyLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMuY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudHMgJiYgZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb2N1c2FibGVFbGVtZW50c1swXS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZvY3VzYWJsZUVsZW1lbnRzLmluZGV4T2YoZm9jdXNhYmxlRWxlbWVudHNbMF0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09IC0xIHx8IGZvY3VzZWRJbmRleCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09IC0xIHx8IGZvY3VzZWRJbmRleCA9PT0gKGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbZm9jdXNlZEluZGV4ICsgMV0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzYWJsZU1vZGFsaXR5KCk7XG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBkZXN0cm95U3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlQXBwZW5kKCk7XG4gICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgIH1cblxuICAgIGFjY2VwdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlybWF0aW9uICYmIHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRFdmVudC5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGUoQ29uZmlybUV2ZW50VHlwZS5BQ0NFUFQpO1xuICAgIH1cblxuICAgIHJlamVjdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlybWF0aW9uICYmIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5yZWplY3RFdmVudC5lbWl0KENvbmZpcm1FdmVudFR5cGUuUkVKRUNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZShDb25maXJtRXZlbnRUeXBlLlJFSkVDVCk7XG4gICAgfVxuXG4gICAgZ2V0IGFjY2VwdEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbignYWNjZXB0TGFiZWwnKSB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQUNDRVBUKTtcbiAgICB9XG5cbiAgICBnZXQgcmVqZWN0QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uKCdyZWplY3RMYWJlbCcpIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5SRUpFQ1QpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLEJ1dHRvbk1vZHVsZSxSaXBwbGVNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtDb25maXJtRGlhbG9nLEJ1dHRvbk1vZHVsZSxTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0NvbmZpcm1EaWFsb2ddXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/confirmdialog/primeng-confirmdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmdialog/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmdialog/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jb25maXJtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NvbmZpcm1kaWFsb2cvcHJpbWVuZy1jb25maXJtZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/confirmdialog/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmdialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmdialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './confirmdialog';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb25maXJtZGlhbG9nL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlybWRpYWxvZyc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/confirmpopup/confirmpopup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmpopup/confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmpopup/confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,307 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { TranslationKeys } from 'primeng/api';
+import { ButtonModule } from 'primeng/button';
+import { ZIndexUtils } from 'primeng/utils';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/button";
+export class ConfirmPopup {
+    constructor(el, confirmationService, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.confirmationService = confirmationService;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.defaultFocus = "accept";
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        this.cd.markForCheck();
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            document.body.appendChild(this.container);
+            this.align();
+            this.bindListeners();
+            const element = this.getElementToFocus();
+            if (element) {
+                element.focus();
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.defaultFocus) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');
+            case 'none':
+                return null;
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.confirmation.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.confirmation.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-confirm-popup-flipped');
+        }
+    }
+    hide() {
+        this.visible = false;
+    }
+    accept() {
+        if (this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide();
+    }
+    reject() {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit();
+        }
+        this.hide();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    bindListeners() {
+        this.bindDocumentClickListener();
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    unbindListeners() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : document;
+            this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                let targetElement = this.confirmation.target;
+                if (this.container !== event.target && !this.container.contains(event.target) &&
+                    targetElement !== event.target && !targetElement.contains(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unsubscribeConfirmationSubscriptions() {
+        if (this.confirmation) {
+            if (this.confirmation.acceptEvent) {
+                this.confirmation.acceptEvent.unsubscribe();
+            }
+            if (this.confirmation.rejectEvent) {
+                this.confirmation.rejectEvent.unsubscribe();
+            }
+        }
+    }
+    onContainerDestroy() {
+        this.unbindListeners();
+        this.unsubscribeConfirmationSubscriptions();
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.confirmation = null;
+        this.container = null;
+    }
+    restoreAppend() {
+        if (this.container) {
+            document.body.removeChild(this.container);
+        }
+        this.onContainerDestroy();
+    }
+    get acceptButtonLabel() {
+        return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ConfirmPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, deps: [{ token: i0.ElementRef }, { token: i1.ConfirmationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmPopup, selector: "p-confirmPopup", inputs: { key: "key", defaultFocus: "defaultFocus", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", visible: "visible" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmPopup', template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfirmationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { key: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }] } });
+export class ConfirmPopupModule {
+}
+ConfirmPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, declarations: [ConfirmPopup], imports: [CommonModule, ButtonModule], exports: [ConfirmPopup] });
+ConfirmPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, imports: [[CommonModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [ConfirmPopup],
+                    declarations: [ConfirmPopup]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybXBvcHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NvbmZpcm1wb3B1cC9jb25maXJtcG9wdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQTRDLEtBQUssRUFBRSxZQUFZLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEssT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBbUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRTlHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBQyxVQUFVLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7O0FBeUN0RSxNQUFNLE9BQU8sWUFBWTtJQXdDckIsWUFBbUIsRUFBYyxFQUFVLG1CQUF3QyxFQUFTLFFBQW1CLEVBQVUsRUFBcUIsRUFBUyxNQUFxQixFQUFTLGNBQThCO1FBQWhNLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXBDMU0saUJBQVksR0FBVyxRQUFRLENBQUM7UUFFaEMsMEJBQXFCLEdBQVcsaUNBQWlDLENBQUM7UUFFbEUsMEJBQXFCLEdBQVcsWUFBWSxDQUFDO1FBRTdD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QUUsS0FBSyxDQUFDO2dDQUNoQixTQUFTLEVBQUUsZUFBZTtnQ0FDMUIsT0FBTyxFQUFFLENBQUM7NkJBQ2IsQ0FBQyxDQUFDOzRCQUNILFVBQVUsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7NEJBQy9ELFVBQVUsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7eUJBQ2xFLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO29QQUlRLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQWdCTyxPQUFPO3NCQUFuQixLQUFLOztBQTZPVixNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBN1FsQixZQUFZLGFBeVFYLFlBQVksRUFBQyxZQUFZLGFBelExQixZQUFZO2dIQTZRWixrQkFBa0IsWUFKbEIsQ0FBQyxZQUFZLEVBQUMsWUFBWSxDQUFDOzJGQUkzQixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSAsQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIElucHV0LCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBPdmVybGF5U2VydmljZSwgUHJpbWVOR0NvbmZpZywgVHJhbnNsYXRpb25LZXlzfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtaSW5kZXhVdGlsc30gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7RG9tSGFuZGxlciwgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWNvbmZpcm1Qb3B1cCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAqbmdJZj1cInZpc2libGVcIiBbbmdDbGFzc109XCIncC1jb25maXJtLXBvcHVwIHAtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbQGFuaW1hdGlvbl09XCJ7dmFsdWU6ICdvcGVuJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCJcbiAgICAgICAgICAgIChAYW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiIChAYW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25FbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdiAjY29udGVudCBjbGFzcz1cInAtY29uZmlybS1wb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiJ3AtY29uZmlybS1wb3B1cC1pY29uJ1wiIFtjbGFzc109XCJjb25maXJtYXRpb24uaWNvblwiICpuZ0lmPVwiY29uZmlybWF0aW9uLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbmZpcm0tcG9wdXAtbWVzc2FnZVwiPnt7Y29uZmlybWF0aW9uLm1lc3NhZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29uZmlybS1wb3B1cC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFtpY29uXT1cImNvbmZpcm1hdGlvbi5yZWplY3RJY29uXCIgW2xhYmVsXT1cInJlamVjdEJ1dHRvbkxhYmVsXCIgKGNsaWNrKT1cInJlamVjdCgpXCIgW25nQ2xhc3NdPVwiJ3AtY29uZmlybS1wb3B1cC1yZWplY3QgcC1idXR0b24tc20nXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbmZpcm1hdGlvbi5yZWplY3RCdXR0b25TdHlsZUNsYXNzIHx8ICdwLWJ1dHRvbi10ZXh0J1wiICpuZ0lmPVwiY29uZmlybWF0aW9uLnJlamVjdFZpc2libGUgIT09IGZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyZWplY3RCdXR0b25MYWJlbFwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gW2ljb25dPVwiY29uZmlybWF0aW9uLmFjY2VwdEljb25cIiBbbGFiZWxdPVwiYWNjZXB0QnV0dG9uTGFiZWxcIiAoY2xpY2spPVwiYWNjZXB0KClcIiBbbmdDbGFzc109XCIncC1jb25maXJtLXBvcHVwLWFjY2VwdCBwLWJ1dHRvbi1zbSdcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29uZmlybWF0aW9uLmFjY2VwdEJ1dHRvblN0eWxlQ2xhc3NcIiAqbmdJZj1cImNvbmZpcm1hdGlvbi5hY2NlcHRWaXNpYmxlICE9PSBmYWxzZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXB0QnV0dG9uTGFiZWxcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gb3BlbicsIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gdm9pZCcsIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZmlybXBvcHVwLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1Qb3B1cCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBrZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRlZmF1bHRGb2N1czogc3RyaW5nID0gXCJhY2NlcHRcIjtcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcblxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb247XG5cbiAgICBfdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgQElucHV0KCkgZ2V0IHZpc2libGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuICAgIHNldCB2aXNpYmxlKHZhbHVlOmFueSkge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5yZXF1aXJlQ29uZmlybWF0aW9uJC5zdWJzY3JpYmUoY29uZmlybWF0aW9uID0+IHtcbiAgICAgICAgICAgIGlmICghY29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29uZmlybWF0aW9uLmtleSA9PT0gdGhpcy5rZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbiA9IGNvbmZpcm1hdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24uYWNjZXB0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRFdmVudC5zdWJzY3JpYmUodGhpcy5jb25maXJtYXRpb24uYWNjZXB0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24ucmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5yZWplY3RFdmVudC5zdWJzY3JpYmUodGhpcy5jb25maXJtYXRpb24ucmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIHRoaXMuYWxpZ24oKTtcbiAgICAgICAgICAgIHRoaXMuYmluZExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50VG9Gb2N1cygpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29udGFpbmVyRGVzdHJveSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFbGVtZW50VG9Gb2N1cygpIHtcbiAgICAgICAgc3dpdGNoKHRoaXMuZGVmYXVsdEZvY3VzKSB7XG4gICAgICAgICAgICBjYXNlICdhY2NlcHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICcucC1jb25maXJtLXBvcHVwLWFjY2VwdCcpO1xuXG4gICAgICAgICAgICBjYXNlICdyZWplY3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICcucC1jb25maXJtLXBvcHVwLXJlamVjdCcpO1xuXG4gICAgICAgICAgICBjYXNlICdub25lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsaWduKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ292ZXJsYXknLCB0aGlzLmNvbnRhaW5lciwgdGhpcy5jb25maWcuekluZGV4Lm92ZXJsYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKHRoaXMuY29udGFpbmVyLCB0aGlzLmNvbmZpcm1hdGlvbi50YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5jb25maXJtYXRpb24udGFyZ2V0KTtcbiAgICAgICAgbGV0IGFycm93TGVmdCA9IDA7XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lck9mZnNldC5sZWZ0IDwgdGFyZ2V0T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgICAgIGFycm93TGVmdCA9IHRhcmdldE9mZnNldC5sZWZ0IC0gY29udGFpbmVyT2Zmc2V0LmxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoJy0tb3ZlcmxheUFycm93TGVmdCcsIGAke2Fycm93TGVmdH1weGApO1xuXG4gICAgICAgIGlmIChjb250YWluZXJPZmZzZXQudG9wIDwgdGFyZ2V0T2Zmc2V0LnRvcCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRhaW5lciwgJ3AtY29uZmlybS1wb3B1cC1mbGlwcGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhY2NlcHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uYWNjZXB0RXZlbnQuZW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgcmVqZWN0KCkge1xuICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24ucmVqZWN0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50LmVtaXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYmluZExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgbGV0IGRvY3VtZW50RXZlbnQgPSBEb21IYW5kbGVyLmlzSU9TKCkgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xuXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCBkb2N1bWVudEV2ZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0RWxlbWVudCA9IDxIVE1MRWxlbWVudD4gdGhpcy5jb25maXJtYXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAhPT0gZXZlbnQudGFyZ2V0ICYmICF0aGlzLmNvbnRhaW5lci5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnQgIT09IGV2ZW50LnRhcmdldCAmJiAhdGFyZ2V0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuY29uZmlybWF0aW9uLnRhcmdldCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdW5iaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5zdWJzY3JpYmVDb25maXJtYXRpb25TdWJzY3JpcHRpb25zKCkge1xuICAgICAgICBpZiAodGhpcy5jb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmFjY2VwdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpcm1hdGlvbi5yZWplY3RFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRhaW5lckRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVDb25maXJtYXRpb25TdWJzY3JpcHRpb25zKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuXG4gICAgcmVzdG9yZUFwcGVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgfVxuXG4gICAgZ2V0IGFjY2VwdEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvbi5hY2NlcHRMYWJlbCB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQUNDRVBUKTtcbiAgICB9XG5cbiAgICBnZXQgcmVqZWN0QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uLnJlamVjdExhYmVsIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5SRUpFQ1QpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBcHBlbmQoKTtcblxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxCdXR0b25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtDb25maXJtUG9wdXBdLFxuICAgIGRlY2xhcmF0aW9uczogW0NvbmZpcm1Qb3B1cF1cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybVBvcHVwTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/confirmpopup/primeng-confirmpopup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmpopup/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmpopup/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jb25maXJtcG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY29uZmlybXBvcHVwL3ByaW1lbmctY29uZmlybXBvcHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/confirmpopup/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/confirmpopup/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/confirmpopup/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './confirmpopup';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb25maXJtcG9wdXAvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtcG9wdXAnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/contextmenu/contextmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/contextmenu/contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/contextmenu/contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,569 @@
+import { NgModule, Component, Input, Output, Inject, forwardRef, ViewChild, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { ContextMenuService } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import { ZIndexUtils } from 'primeng/utils';
+import { RouterModule } from '@angular/router';
+import { Subject } from 'rxjs';
+import { takeUntil } from 'rxjs/operators';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "primeng/ripple";
+import * as i4 from "@angular/router";
+import * as i5 from "primeng/api";
+export class ContextMenuSub {
+    constructor(contextMenu) {
+        this.leafClick = new EventEmitter();
+        this.contextMenu = contextMenu;
+    }
+    ngOnInit() {
+        this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {
+            this.activeItemKey = activeItemKey;
+            if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {
+                this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);
+            }
+            this.contextMenu.cd.markForCheck();
+        });
+    }
+    onItemMouseEnter(event, item, key) {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+        if (item.disabled) {
+            return;
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');
+            DomHandler.addClass(childSublist, 'p-submenu-list-active');
+        }
+        this.contextMenu.contextMenuService.changeKey(key);
+    }
+    onItemMouseLeave(event, item) {
+        if (item.disabled) {
+            return;
+        }
+        if (this.contextMenu.el.nativeElement.contains(event.toElement)) {
+            if (item.items) {
+                this.contextMenu.removeActiveFromSubLists(event.currentTarget);
+            }
+            if (!this.root) {
+                this.contextMenu.contextMenuService.changeKey(this.parentItemKey);
+            }
+        }
+    }
+    onItemClick(event, item, menuitem, key) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.contextMenu.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                }
+                this.contextMenu.contextMenuService.changeKey(key);
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onLeafClick() {
+        if (this.root) {
+            this.contextMenu.hide();
+        }
+        this.leafClick.emit();
+    }
+    getKey(index) {
+        return this.root ? String(index) : this.parentItemKey + '_' + index;
+    }
+    isActive(key) {
+        return (this.activeItemKey && (this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key));
+    }
+}
+ContextMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, deps: [{ token: forwardRef(() => ContextMenu) }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { item: "item", root: "root", parentItemKey: "parentItemKey" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }, { propertyName: "menuitemViewChild", first: true, predicate: ["menuitem"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-contextMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => ContextMenu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], parentItemKey: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }], menuitemViewChild: [{
+                type: ViewChild,
+                args: ['menuitem']
+            }] } });
+export class ContextMenu {
+    constructor(el, renderer, cd, zone, contextMenuService, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.contextMenuService = contextMenuService;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.triggerEvent = 'contextmenu';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.ngDestroy$ = new Subject();
+    }
+    ngAfterViewInit() {
+        if (this.global) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+            });
+        }
+        else if (this.target) {
+            this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+                event.stopPropagation();
+            });
+        }
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    show(event) {
+        this.clearActiveItem();
+        this.position(event);
+        this.moveOnTop();
+        this.containerViewChild.nativeElement.style.display = 'block';
+        DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);
+        this.bindGlobalListeners();
+        if (event) {
+            event.preventDefault();
+        }
+        this.onShow.emit();
+    }
+    hide() {
+        this.containerViewChild.nativeElement.style.display = 'none';
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        this.unbindGlobalListeners();
+        this.onHide.emit();
+    }
+    moveOnTop() {
+        if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    toggle(event) {
+        if (this.containerViewChild.nativeElement.offsetParent)
+            this.hide();
+        else
+            this.show(event);
+    }
+    position(event) {
+        if (event) {
+            let left = event.pageX + 1;
+            let top = event.pageY + 1;
+            let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);
+            let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);
+            let viewport = DomHandler.getViewport();
+            //flip
+            if (left + width - document.body.scrollLeft > viewport.width) {
+                left -= width;
+            }
+            //flip
+            if (top + height - document.body.scrollTop > viewport.height) {
+                top -= height;
+            }
+            //fit
+            if (left < document.body.scrollLeft) {
+                left = document.body.scrollLeft;
+            }
+            //fit
+            if (top < document.body.scrollTop) {
+                top = document.body.scrollTop;
+            }
+            this.containerViewChild.nativeElement.style.left = left + 'px';
+            this.containerViewChild.nativeElement.style.top = top + 'px';
+        }
+    }
+    positionSubmenu(sublist) {
+        let parentMenuItem = sublist.parentElement.parentElement;
+        let viewport = DomHandler.getViewport();
+        let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);
+        let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);
+        let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);
+        let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);
+        let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);
+        sublist.style.zIndex = ++DomHandler.zindex;
+        if ((parseInt(containerOffset.top) + itemOuterHeight + sublistHeight) > (viewport.height - DomHandler.calculateScrollbarHeight())) {
+            sublist.style.removeProperty('top');
+            sublist.style.bottom = '0px';
+        }
+        else {
+            sublist.style.removeProperty('bottom');
+            sublist.style.top = '0px';
+        }
+        if ((parseInt(containerOffset.left) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            sublist.style.left = -sublistWidth + 'px';
+        }
+        else {
+            sublist.style.left = itemOuterWidth + 'px';
+        }
+    }
+    isItemMatched(menuitem) {
+        return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');
+    }
+    findNextItem(menuitem, isRepeated) {
+        let nextMenuitem = menuitem.nextElementSibling;
+        if (nextMenuitem) {
+            return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);
+        }
+        else {
+            let firstItem = menuitem.parentElement.children[0];
+            return this.isItemMatched(firstItem) ? firstItem : (!isRepeated ? this.findNextItem(firstItem, true) : null);
+        }
+    }
+    findPrevItem(menuitem, isRepeated) {
+        let prevMenuitem = menuitem.previousElementSibling;
+        if (prevMenuitem) {
+            return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);
+        }
+        else {
+            let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];
+            return this.isItemMatched(lastItem) ? lastItem : (!isRepeated ? this.findPrevItem(lastItem, true) : null);
+        }
+    }
+    getActiveItem() {
+        let activeItemKey = this.contextMenuService.activeItemKey;
+        return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik="' + activeItemKey + '"]');
+    }
+    clearActiveItem() {
+        if (this.contextMenuService.activeItemKey) {
+            this.removeActiveFromSubLists(this.containerViewChild.nativeElement);
+            this.contextMenuService.reset();
+        }
+    }
+    removeActiveFromSubLists(el) {
+        let sublists = DomHandler.find(el, '.p-submenu-list-active');
+        for (let sublist of sublists) {
+            DomHandler.removeClass(sublist, 'p-submenu-list-active');
+        }
+    }
+    removeActiveFromSublist(menuitem) {
+        if (menuitem) {
+            let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {
+                DomHandler.removeClass(menuitem, 'p-submenu-list-active');
+            }
+        }
+    }
+    bindGlobalListeners() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2) {
+                    this.hide();
+                }
+            });
+        }
+        this.zone.runOutsideAngular(() => {
+            if (!this.windowResizeListener) {
+                this.windowResizeListener = this.onWindowResize.bind(this);
+                window.addEventListener('resize', this.windowResizeListener);
+            }
+        });
+        if (!this.documentKeydownListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                let activeItem = this.getActiveItem();
+                switch (event.key) {
+                    case 'ArrowDown':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findNextItem(activeItem);
+                        }
+                        else {
+                            let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;
+                            activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowUp':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findPrevItem(activeItem);
+                        }
+                        else {
+                            let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');
+                            let lastItem = sublist.children[sublist.children.length - 1];
+                            activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowRight':
+                        if (activeItem) {
+                            let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');
+                            if (sublist) {
+                                DomHandler.addClass(sublist, 'p-submenu-list-active');
+                                activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowLeft':
+                        if (activeItem) {
+                            let sublist = activeItem.parentElement;
+                            if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {
+                                DomHandler.removeClass(sublist, 'p-submenu-list-active');
+                                activeItem = sublist.parentElement.parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'Escape':
+                        this.hide();
+                        event.preventDefault();
+                        break;
+                    case 'Enter':
+                        if (activeItem) {
+                            this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);
+                        }
+                        event.preventDefault();
+                        break;
+                    default:
+                        break;
+                }
+            });
+        }
+    }
+    findModelItemFromKey(key) {
+        if (key == null || !this.model) {
+            return null;
+        }
+        let indexes = key.split('_');
+        return indexes.reduce((item, currentIndex) => {
+            return item ? item.items[currentIndex] : this.model[currentIndex];
+        }, null);
+    }
+    handleItemClick(event, item, menuitem) {
+        if (!item || item.disabled) {
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                    this.positionSubmenu(childSublist);
+                }
+            }
+        }
+        if (!item.items) {
+            this.hide();
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+        if (this.windowResizeListener) {
+            window.removeEventListener('resize', this.windowResizeListener);
+            this.windowResizeListener = null;
+        }
+        if (this.documentKeydownListener) {
+            this.documentKeydownListener();
+            this.documentKeydownListener = null;
+        }
+    }
+    onWindowResize(event) {
+        if (this.containerViewChild.nativeElement.offsetParent) {
+            this.hide();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.triggerEventListener) {
+            this.triggerEventListener();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+        this.ngDestroy$.next(true);
+        this.ngDestroy$.complete();
+    }
+}
+ContextMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i5.ContextMenuService }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenu, selector: "p-contextMenu", inputs: { model: "model", global: "global", target: "target", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", triggerEvent: "triggerEvent" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"], components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-contextMenu', template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i5.ContextMenuService }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], global: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], triggerEvent: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+export class ContextMenuModule {
+}
+ContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [ContextMenu, RouterModule, TooltipModule] });
+ContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, providers: [ContextMenuService], imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [ContextMenu, RouterModule, TooltipModule],
+                    declarations: [ContextMenu, ContextMenuSub],
+                    providers: [ContextMenuService]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBQyxTQUFTLEVBQW9DLEtBQUssRUFBQyxNQUFNLEVBQVcsTUFBTSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQVEsWUFBWSxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUMzTixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQVksa0JBQWtCLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBcUNoRCxNQUFNLE9BQU8sY0FBYztJQXNCdkIsWUFBbUQsV0FBVztRQWRwRCxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFleEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUEwQixDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJ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WSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDakQsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFDLGNBQWMsQ0FBQztvQkFDMUMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsQWZ0ZXJWaWV3SW5pdCxPbkRlc3Ryb3ksSW5wdXQsT3V0cHV0LFJlbmRlcmVyMixJbmplY3QsZm9yd2FyZFJlZixWaWV3Q2hpbGQsTmdab25lLEV2ZW50RW1pdHRlcixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE1lbnVJdGVtLCBDb250ZXh0TWVudVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jb250ZXh0TWVudVN1YicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsICNzdWJsaXN0IFtuZ0NsYXNzXT1cInsncC1zdWJtZW51LWxpc3QnOiFyb290fVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jaGlsZCBsZXQtaW5kZXg9XCJpbmRleFwiIFtuZ0Zvck9mXT1cIihyb290ID8gaXRlbSA6IGl0ZW0uaXRlbXMpXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY2hpbGQuc2VwYXJhdG9yXCIgI21lbnVpdGVtIGNsYXNzPVwicC1tZW51LXNlcGFyYXRvclwiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4nOiBjaGlsZC52aXNpYmxlID09PSBmYWxzZX1cIiByb2xlPVwic2VwYXJhdG9yXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWNoaWxkLnNlcGFyYXRvclwiICNtZW51aXRlbSBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0nOnRydWUsJ3AtbWVudWl0ZW0tYWN0aXZlJzogaXNBY3RpdmUoZ2V0S2V5KGluZGV4KSksJ3AtaGlkZGVuJzogY2hpbGQudmlzaWJsZSA9PT0gZmFsc2V9XCIgW25nU3R5bGVdPVwiY2hpbGQuc3R5bGVcIiBbY2xhc3NdPVwiY2hpbGQuc3R5bGVDbGFzc1wiIHBUb29sdGlwIFt0b29sdGlwT3B0aW9uc109XCJjaGlsZC50b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50LGNoaWxkLGdldEtleShpbmRleCkpXCIgKG1vdXNlbGVhdmUpPVwib25JdGVtTW91c2VMZWF2ZSgkZXZlbnQsY2hpbGQpXCIgcm9sZT1cIm5vbmVcIiBbYXR0ci5kYXRhLWlrXT1cImdldEtleShpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY2hpbGQucm91dGVyTGlua1wiIFthdHRyLmhyZWZdPVwiY2hpbGQudXJsID8gY2hpbGQudXJsIDogbnVsbFwiIFthdHRyLnRhcmdldF09XCJjaGlsZC50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiIFthdHRyLmlkXT1cImNoaWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImNoaWxkLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGNoaWxkLCBtZW51aXRlbSwgZ2V0S2V5KGluZGV4KSlcIiBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0tbGluayc6dHJ1ZSwncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpdGVtLml0ZW1zICE9IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzQWN0aXZlKGdldEtleShpbmRleCkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiIFtuZ0NsYXNzXT1cImNoaWxkLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2hpbGQuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57e2NoaWxkLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2hpbGQubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zdWJtZW51LWljb24gcGkgcGktYW5nbGUtcmlnaHRcIiAqbmdJZj1cImNoaWxkLml0ZW1zXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiY2hpbGQucm91dGVyTGlua1wiIFtyb3V0ZXJMaW5rXT1cImNoaWxkLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiY2hpbGQucXVlcnlQYXJhbXNcIiBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIiByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImNoaWxkLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCIgW2F0dHIudGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNoaWxkLnRpdGxlXCIgW2F0dHIuaWRdPVwiY2hpbGQuaWRcIiBbYXR0ci50YWJpbmRleF09XCJjaGlsZC5kaXNhYmxlZCA/IG51bGwgOiAnMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgY2hpbGQsIG1lbnVpdGVtLCBnZXRLZXkoaW5kZXgpKVwiIFtuZ0NsYXNzXT1cInsncC1tZW51aXRlbS1saW5rJzp0cnVlLCdwLWRpc2FibGVkJzpjaGlsZC5kaXNhYmxlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGUgW2ZyYWdtZW50XT1cImNoaWxkLmZyYWdtZW50XCIgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiY2hpbGQucXVlcnlQYXJhbXNIYW5kbGluZ1wiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cImNoaWxkLnByZXNlcnZlRnJhZ21lbnRcIiBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cImNoaWxkLnNraXBMb2NhdGlvbkNoYW5nZVwiIFtyZXBsYWNlVXJsXT1cImNoaWxkLnJlcGxhY2VVcmxcIiBbc3RhdGVdPVwiY2hpbGQuc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uXCIgW25nQ2xhc3NdPVwiY2hpbGQuaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJjaGlsZC5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3tjaGlsZC5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2hpbGQubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zdWJtZW51LWljb24gcGkgcGktYW5nbGUtcmlnaHRcIiAqbmdJZj1cImNoaWxkLml0ZW1zXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxwLWNvbnRleHRNZW51U3ViIFtwYXJlbnRJdGVtS2V5XT1cImdldEtleShpbmRleClcIiBbaXRlbV09XCJjaGlsZFwiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiAobGVhZkNsaWNrKT1cIm9uTGVhZkNsaWNrKClcIj48L3AtY29udGV4dE1lbnVTdWI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdWw+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51U3ViIHtcblxuICAgIEBJbnB1dCgpIGl0ZW06IE1lbnVJdGVtO1xuXG4gICAgQElucHV0KCkgcm9vdDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHBhcmVudEl0ZW1LZXk6IGFueTtcblxuICAgIEBPdXRwdXQoKSBsZWFmQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnc3VibGlzdCcpIHN1Ymxpc3RWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdtZW51aXRlbScpIG1lbnVpdGVtVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgY29udGV4dE1lbnU6IENvbnRleHRNZW51O1xuXG4gICAgYWN0aXZlSXRlbUtleTogc3RyaW5nO1xuXG4gICAgaGlkZVRpbWVvdXQ6IGFueTtcblxuICAgIGFjdGl2ZUl0ZW1LZXlDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBDb250ZXh0TWVudSkpIGNvbnRleHRNZW51KSB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUgPSBjb250ZXh0TWVudSBhcyBDb250ZXh0TWVudTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtS2V5Q2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5jb250ZXh0TWVudS5jb250ZXh0TWVudVNlcnZpY2UuYWN0aXZlSXRlbUtleUNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5jb250ZXh0TWVudS5uZ0Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChhY3RpdmVJdGVtS2V5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1LZXkgPSBhY3RpdmVJdGVtS2V5O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSh0aGlzLnBhcmVudEl0ZW1LZXkpICYmIERvbUhhbmRsZXIuaGFzQ2xhc3ModGhpcy5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLXN1Ym1lbnUtbGlzdC1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUucG9zaXRpb25TdWJtZW51KHRoaXMuc3VibGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudS5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudCwgaXRlbSwga2V5KSB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmhpZGVUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgbGV0IGNoaWxkU3VibGlzdCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZShldmVudC5jdXJyZW50VGFyZ2V0LCAnLnAtc3VibWVudS1saXN0Jyk7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGNoaWxkU3VibGlzdCwgJ3Atc3VibWVudS1saXN0LWFjdGl2ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZXh0TWVudS5jb250ZXh0TWVudVNlcnZpY2UuY2hhbmdlS2V5KGtleSk7XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VMZWF2ZShldmVudCwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnUuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyg8Tm9kZT4gZXZlbnQudG9FbGVtZW50KSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51LnJlbW92ZUFjdGl2ZUZyb21TdWJMaXN0cyhldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51LmNvbnRleHRNZW51U2VydmljZS5jaGFuZ2VLZXkodGhpcy5wYXJlbnRJdGVtS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2ZW50LCBpdGVtLCBtZW51aXRlbSwga2V5KSB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLnVybCAmJiAhaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgaXRlbS5jb21tYW5kKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRTdWJsaXN0ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKG1lbnVpdGVtLCAnLnAtc3VibWVudS1saXN0Jyk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZFN1Ymxpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZShrZXkpICYmIERvbUhhbmRsZXIuaGFzQ2xhc3MoY2hpbGRTdWJsaXN0LCAncC1zdWJtZW51LWxpc3QtYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudS5yZW1vdmVBY3RpdmVGcm9tU3ViTGlzdHMobWVudWl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhjaGlsZFN1Ymxpc3QsICdwLXN1Ym1lbnUtbGlzdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51LmNvbnRleHRNZW51U2VydmljZS5jaGFuZ2VLZXkoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5vbkxlYWZDbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25MZWFmQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sZWFmQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIGdldEtleShpbmRleCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb290ID8gU3RyaW5nKGluZGV4KSA6IHRoaXMucGFyZW50SXRlbUtleSArICdfJyArIGluZGV4O1xuICAgIH1cblxuICAgIGlzQWN0aXZlKGtleSkge1xuICAgICAgICByZXR1cm4gKHRoaXMuYWN0aXZlSXRlbUtleSAmJih0aGlzLmFjdGl2ZUl0ZW1LZXkuc3RhcnRzV2l0aChrZXkgKyAnXycpIHx8IHRoaXMuYWN0aXZlSXRlbUtleSA9PT0ga2V5KSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY29udGV4dE1lbnUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciBbbmdDbGFzc109XCIncC1jb250ZXh0bWVudSBwLWNvbXBvbmVudCdcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCI+XG4gICAgICAgICAgICA8cC1jb250ZXh0TWVudVN1YiBbaXRlbV09XCJtb2RlbFwiIFtyb290XT1cInRydWVcIj48L3AtY29udGV4dE1lbnVTdWI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZXh0bWVudS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBtb2RlbDogTWVudUl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIGdsb2JhbDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRhcmdldDogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSB0cmlnZ2VyRXZlbnQ6IHN0cmluZyA9ICdjb250ZXh0bWVudSc7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBkb2N1bWVudEtleWRvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgd2luZG93UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIHRyaWdnZXJFdmVudExpc3RlbmVyOiBhbnk7XG5cbiAgICBuZ0Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUsIHB1YmxpYyBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSwgcHJpdmF0ZSBjb25maWc6IFByaW1lTkdDb25maWcpIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5nbG9iYWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsIHRoaXMudHJpZ2dlckV2ZW50LCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coZXZlbnQpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudGFyZ2V0LCB0aGlzLnRyaWdnZXJFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93KGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlSXRlbSgpO1xuICAgICAgICB0aGlzLnBvc2l0aW9uKGV2ZW50KTtcbiAgICAgICAgdGhpcy5tb3ZlT25Ub3AoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgRG9tSGFuZGxlci5mYWRlSW4odGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgMjUwKTtcbiAgICAgICAgdGhpcy5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblNob3cuZW1pdCgpO1xuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMub25IaWRlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBtb3ZlT25Ub3AoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXggJiYgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQgJiYgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ICE9PSAnYmxvY2snKSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21lbnUnLCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgubWVudSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudClcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNob3coZXZlbnQpO1xuICAgIH1cblxuICAgIHBvc2l0aW9uKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCBsZWZ0ID0gZXZlbnQucGFnZVggKyAxO1xuICAgICAgICAgICAgbGV0IHRvcCA9IGV2ZW50LnBhZ2VZICsgMTtcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50ID8gdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA6IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQgPyB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVySGVpZ2h0KHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IHZpZXdwb3J0ID0gRG9tSGFuZGxlci5nZXRWaWV3cG9ydCgpO1xuXG4gICAgICAgICAgICAvL2ZsaXBcbiAgICAgICAgICAgIGlmIChsZWZ0ICsgd2lkdGggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgPiB2aWV3cG9ydC53aWR0aCkge1xuICAgICAgICAgICAgICAgIGxlZnQgLT0gd2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vZmxpcFxuICAgICAgICAgICAgaWYgKHRvcCArIGhlaWdodCAtIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID4gdmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdG9wIC09IGhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9maXRcbiAgICAgICAgICAgIGlmIChsZWZ0IDwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgbGVmdCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9maXRcbiAgICAgICAgICAgIGlmICh0b3AgPCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICAgIHRvcCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBvc2l0aW9uU3VibWVudShzdWJsaXN0KSB7XG4gICAgICAgIGxldCBwYXJlbnRNZW51SXRlbSA9IHN1Ymxpc3QucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgdmlld3BvcnQgPSBEb21IYW5kbGVyLmdldFZpZXdwb3J0KCk7XG4gICAgICAgIGxldCBzdWJsaXN0V2lkdGggPSBzdWJsaXN0Lm9mZnNldFBhcmVudCA/IHN1Ymxpc3Qub2Zmc2V0V2lkdGggOiBEb21IYW5kbGVyLmdldEhpZGRlbkVsZW1lbnRPdXRlcldpZHRoKHN1Ymxpc3QpO1xuICAgICAgICBsZXQgc3VibGlzdEhlaWdodCA9IHN1Ymxpc3Qub2Zmc2V0SGVpZ2h0ID8gc3VibGlzdC5vZmZzZXRIZWlnaHQgOiBEb21IYW5kbGVyLmdldEhpZGRlbkVsZW1lbnRPdXRlckhlaWdodChzdWJsaXN0KTtcbiAgICAgICAgbGV0IGl0ZW1PdXRlcldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHBhcmVudE1lbnVJdGVtLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgbGV0IGl0ZW1PdXRlckhlaWdodCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQocGFyZW50TWVudUl0ZW0uY2hpbGRyZW5bMF0pO1xuICAgICAgICBsZXQgY29udGFpbmVyT2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQocGFyZW50TWVudUl0ZW0ucGFyZW50RWxlbWVudCk7XG5cbiAgICAgICAgc3VibGlzdC5zdHlsZS56SW5kZXggPSArK0RvbUhhbmRsZXIuemluZGV4O1xuXG4gICAgICAgIGlmICgocGFyc2VJbnQoY29udGFpbmVyT2Zmc2V0LnRvcCkgKyBpdGVtT3V0ZXJIZWlnaHQgKyBzdWJsaXN0SGVpZ2h0KSA+ICh2aWV3cG9ydC5oZWlnaHQgLSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhckhlaWdodCgpKSkge1xuICAgICAgICAgICAgc3VibGlzdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndG9wJyk7XG4gICAgICAgICAgICBzdWJsaXN0LnN0eWxlLmJvdHRvbSA9ICcwcHgnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3VibGlzdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYm90dG9tJyk7XG4gICAgICAgICAgICBzdWJsaXN0LnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChwYXJzZUludChjb250YWluZXJPZmZzZXQubGVmdCkgKyBpdGVtT3V0ZXJXaWR0aCArIHN1Ymxpc3RXaWR0aCkgPiAodmlld3BvcnQud2lkdGggLSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhcldpZHRoKCkpKSB7XG4gICAgICAgICAgICBzdWJsaXN0LnN0eWxlLmxlZnQgPSAtc3VibGlzdFdpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN1Ymxpc3Quc3R5bGUubGVmdCA9IGl0ZW1PdXRlcldpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbU1hdGNoZWQobWVudWl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MobWVudWl0ZW0sICdwLW1lbnVpdGVtJykgJiYgIURvbUhhbmRsZXIuaGFzQ2xhc3MobWVudWl0ZW0uY2hpbGRyZW5bMF0sICdwLWRpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgZmluZE5leHRJdGVtKG1lbnVpdGVtLCBpc1JlcGVhdGVkPykge1xuICAgICAgICBsZXQgbmV4dE1lbnVpdGVtID0gbWVudWl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChuZXh0TWVudWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzSXRlbU1hdGNoZWQobmV4dE1lbnVpdGVtKSA/IG5leHRNZW51aXRlbSA6IHRoaXMuZmluZE5leHRJdGVtKG5leHRNZW51aXRlbSwgaXNSZXBlYXRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZmlyc3RJdGVtID0gbWVudWl0ZW0ucGFyZW50RWxlbWVudC5jaGlsZHJlblswXTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNJdGVtTWF0Y2hlZChmaXJzdEl0ZW0pID8gZmlyc3RJdGVtIDogKCFpc1JlcGVhdGVkID8gdGhpcy5maW5kTmV4dEl0ZW0oZmlyc3RJdGVtLCB0cnVlKSA6IG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByZXZJdGVtKG1lbnVpdGVtLCBpc1JlcGVhdGVkPykge1xuICAgICAgICBsZXQgcHJldk1lbnVpdGVtID0gbWVudWl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldk1lbnVpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0l0ZW1NYXRjaGVkKHByZXZNZW51aXRlbSkgPyBwcmV2TWVudWl0ZW0gOiB0aGlzLmZpbmRQcmV2SXRlbShwcmV2TWVudWl0ZW0sIGlzUmVwZWF0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGxhc3RJdGVtID0gbWVudWl0ZW0ucGFyZW50RWxlbWVudC5jaGlsZHJlblttZW51aXRlbS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0l0ZW1NYXRjaGVkKGxhc3RJdGVtKSA/IGxhc3RJdGVtIDogKCFpc1JlcGVhdGVkID8gdGhpcy5maW5kUHJldkl0ZW0obGFzdEl0ZW0sIHRydWUpIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBY3RpdmVJdGVtKCkge1xuICAgICAgICBsZXQgYWN0aXZlSXRlbUtleSA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmFjdGl2ZUl0ZW1LZXk7XG5cbiAgICAgICAgcmV0dXJuIGFjdGl2ZUl0ZW1LZXkgPT0gbnVsbCA/IG51bGwgOiBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJy5wLW1lbnVpdGVtW2RhdGEtaWs9XCInICsgYWN0aXZlSXRlbUtleSArICdcIl0nKTtcbiAgICB9XG5cbiAgICBjbGVhckFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRleHRNZW51U2VydmljZS5hY3RpdmVJdGVtS2V5KSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUFjdGl2ZUZyb21TdWJMaXN0cyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVBY3RpdmVGcm9tU3ViTGlzdHMoZWwpIHtcbiAgICAgICAgbGV0IHN1Ymxpc3RzID0gRG9tSGFuZGxlci5maW5kKGVsLCAnLnAtc3VibWVudS1saXN0LWFjdGl2ZScpO1xuXG4gICAgICAgIGZvciAobGV0IHN1Ymxpc3Qgb2Ygc3VibGlzdHMpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3Moc3VibGlzdCwgJ3Atc3VibWVudS1saXN0LWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlQWN0aXZlRnJvbVN1Ymxpc3QobWVudWl0ZW0pIHtcbiAgICAgICAgaWYgKG1lbnVpdGVtKSB7XG4gICAgICAgICAgICBsZXQgc3VibGlzdCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZShtZW51aXRlbSwgJy5wLXN1Ym1lbnUtbGlzdCcpO1xuXG4gICAgICAgICAgICBpZiAoc3VibGlzdCAmJiBEb21IYW5kbGVyLmhhc0NsYXNzKG1lbnVpdGVtLCAncC1zdWJtZW51LWxpc3QtYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKG1lbnVpdGVtLCAncC1zdWJtZW51LWxpc3QtYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kR2xvYmFsTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50ICYmIHRoaXMuaXNPdXRzaWRlQ2xpY2tlZChldmVudCkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuYnV0dG9uICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy53aW5kb3dSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy53aW5kb3dSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy53aW5kb3dSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYWN0aXZlSXRlbSA9IHRoaXMuZ2V0QWN0aXZlSXRlbSgpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBY3RpdmVGcm9tU3VibGlzdChhY3RpdmVJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtID0gdGhpcy5maW5kTmV4dEl0ZW0oYWN0aXZlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICcucC1tZW51aXRlbS1saW5rJykucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtID0gdGhpcy5pc0l0ZW1NYXRjaGVkKGZpcnN0SXRlbSkgPyBmaXJzdEl0ZW0gOiB0aGlzLmZpbmROZXh0SXRlbShmaXJzdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNoYW5nZUtleShhY3RpdmVJdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1paycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUFjdGl2ZUZyb21TdWJsaXN0KGFjdGl2ZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0gPSB0aGlzLmZpbmRQcmV2SXRlbShhY3RpdmVJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICd1bCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsYXN0SXRlbSA9IHN1Ymxpc3QuY2hpbGRyZW5bc3VibGlzdC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtID0gdGhpcy5pc0l0ZW1NYXRjaGVkKGxhc3RJdGVtKSA/IGxhc3RJdGVtIDogdGhpcy5maW5kUHJldkl0ZW0obGFzdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNoYW5nZUtleShhY3RpdmVJdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1paycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZShhY3RpdmVJdGVtLCAnLnAtc3VibWVudS1saXN0Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VibGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHN1Ymxpc3QsICdwLXN1Ym1lbnUtbGlzdC1hY3RpdmUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHN1Ymxpc3QsICcucC1tZW51aXRlbS1saW5rOm5vdCgucC1kaXNhYmxlZCknKS5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5jaGFuZ2VLZXkoYWN0aXZlSXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWsnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCA9IGFjdGl2ZUl0ZW0ucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJsaXN0ICYmIERvbUhhbmRsZXIuaGFzQ2xhc3Moc3VibGlzdCwgJ3Atc3VibWVudS1saXN0LWFjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3Moc3VibGlzdCwgJ3Atc3VibWVudS1saXN0LWFjdGl2ZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0gPSBzdWJsaXN0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY2hhbmdlS2V5KGFjdGl2ZUl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWlrJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1DbGljayhldmVudCwgdGhpcy5maW5kTW9kZWxJdGVtRnJvbUtleSh0aGlzLmNvbnRleHRNZW51U2VydmljZS5hY3RpdmVJdGVtS2V5KSwgYWN0aXZlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTW9kZWxJdGVtRnJvbUtleShrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSBudWxsIHx8ICF0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbmRleGVzID0ga2V5LnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBpbmRleGVzLnJlZHVjZSgoaXRlbSwgY3VycmVudEluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0uaXRlbXNbY3VycmVudEluZGV4XSA6IHRoaXMubW9kZWxbY3VycmVudEluZGV4XTtcbiAgICAgICAgfSwgbnVsbCk7XG4gICAgfVxuXG4gICAgaGFuZGxlSXRlbUNsaWNrKGV2ZW50LCBpdGVtLCBtZW51aXRlbSkge1xuICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgaXRlbS5jb21tYW5kKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRTdWJsaXN0ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKG1lbnVpdGVtLCAnLnAtc3VibWVudS1saXN0Jyk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZFN1Ymxpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhjaGlsZFN1Ymxpc3QsICdwLXN1Ym1lbnUtbGlzdC1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUFjdGl2ZUZyb21TdWJMaXN0cyhtZW51aXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGNoaWxkU3VibGlzdCwgJ3Atc3VibWVudS1saXN0LWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uU3VibWVudShjaGlsZFN1Ymxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRHbG9iYWxMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLndpbmRvd1Jlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy53aW5kb3dSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLndpbmRvd1Jlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc091dHNpZGVDbGlja2VkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICByZXR1cm4gISh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZEdsb2JhbExpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXJWaWV3Q2hpbGQgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5nRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5uZ0Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsUmlwcGxlTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtDb250ZXh0TWVudSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQ29udGV4dE1lbnUsQ29udGV4dE1lbnVTdWJdLFxuICAgIHByb3ZpZGVyczogW0NvbnRleHRNZW51U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/contextmenu/primeng-contextmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/contextmenu/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/contextmenu/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1jb250ZXh0bWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb250ZXh0bWVudS9wcmltZW5nLWNvbnRleHRtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/contextmenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/contextmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/contextmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './contextmenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jb250ZXh0bWVudS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0bWVudSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/dataview/dataview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dataview/dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dataview/dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,416 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChild, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import { Header, Footer, PrimeTemplate, SharedModule, TranslationKeys } from 'primeng/api';
+import { PaginatorModule } from 'primeng/paginator';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "primeng/paginator";
+import * as i3 from "@angular/common";
+export class DataView {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.pageLinks = 5;
+        this.paginatorPosition = 'bottom';
+        this.alwaysShowPaginator = true;
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.emptyMessage = '';
+        this.onLazyLoad = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.loadingIcon = 'pi pi-spinner';
+        this.first = 0;
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onChangeLayout = new EventEmitter();
+        this._layout = 'list';
+    }
+    get layout() {
+        return this._layout;
+    }
+    set layout(layout) {
+        this._layout = layout;
+        if (this.initialized) {
+            this.changeLayout(layout);
+        }
+    }
+    ngOnInit() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+        this.initialized = true;
+    }
+    ngOnChanges(simpleChanges) {
+        if (simpleChanges.value) {
+            this._value = simpleChanges.value.currentValue;
+            this.updateTotalRecords();
+            if (!this.lazy && this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        if (simpleChanges.sortField || simpleChanges.sortOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                this.sort();
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'listItem':
+                    this.listItemTemplate = item.template;
+                    break;
+                case 'gridItem':
+                    this.gridItemTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateItemTemplate();
+    }
+    updateItemTemplate() {
+        switch (this.layout) {
+            case 'list':
+                this.itemTemplate = this.listItemTemplate;
+                break;
+            case 'grid':
+                this.itemTemplate = this.gridItemTemplate;
+                break;
+        }
+    }
+    changeLayout(layout) {
+        this._layout = layout;
+        this.onChangeLayout.emit({
+            layout: this.layout
+        });
+        this.updateItemTemplate();
+        this.cd.markForCheck();
+    }
+    updateTotalRecords() {
+        this.totalRecords = this.lazy ? this.totalRecords : (this._value ? this._value.length : 0);
+    }
+    paginate(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+    }
+    sort() {
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else if (this.value) {
+            this.value.sort((data1, data2) => {
+                let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2);
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+            if (this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        this.onSort.emit({
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        });
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        };
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    filter(filter, filterMatchMode = "contains") {
+        this.filterValue = filter;
+        if (this.value && this.value.length) {
+            let searchFields = this.filterBy.split(',');
+            this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);
+            if (this.filteredValue.length === this.value.length) {
+                this.filteredValue = null;
+            }
+            if (this.paginator) {
+                this.first = 0;
+                this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+            }
+            this.cd.markForCheck();
+        }
+    }
+    hasFilter() {
+        return this.filterValue && this.filterValue.trim().length > 0;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+DataView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DataView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataView, selector: "p-dataView", inputs: { paginator: "paginator", rows: "rows", totalRecords: "totalRecords", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", paginatorPosition: "paginatorPosition", alwaysShowPaginator: "alwaysShowPaginator", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", lazy: "lazy", emptyMessage: "emptyMessage", style: "style", styleClass: "styleClass", trackBy: "trackBy", filterBy: "filterBy", filterLocale: "filterLocale", loading: "loading", loadingIcon: "loadingIcon", first: "first", sortField: "sortField", sortOrder: "sortOrder", value: "value", layout: "layout" }, outputs: { onLazyLoad: "onLazyLoad", onPage: "onPage", onSort: "onSort", onChangeLayout: "onChangeLayout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "slice": i3.SlicePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dataView', template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], onLazyLoad: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onChangeLayout: [{
+                type: Output
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], layout: [{
+                type: Input
+            }] } });
+export class DataViewLayoutOptions {
+    constructor(dv) {
+        this.dv = dv;
+    }
+    changeLayout(event, layout) {
+        this.dv.changeLayout(layout);
+        event.preventDefault();
+    }
+}
+DataViewLayoutOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, deps: [{ token: DataView }], target: i0.ɵɵFactoryTarget.Component });
+DataViewLayoutOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataViewLayoutOptions, selector: "p-dataViewLayoutOptions", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dataViewLayoutOptions',
+                    template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: DataView }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+export class DataViewModule {
+}
+DataViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DataViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, declarations: [DataView, DataViewLayoutOptions], imports: [CommonModule, SharedModule, PaginatorModule], exports: [DataView, SharedModule, DataViewLayoutOptions] });
+DataViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, imports: [[CommonModule, SharedModule, PaginatorModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, PaginatorModule],
+                    exports: [DataView, SharedModule, DataViewLayoutOptions],
+                    declarations: [DataView, DataViewLayoutOptions]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZGF0YXZpZXcvZGF0YXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQW9DLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQStDLHVCQUF1QixFQUFvQixpQkFBaUIsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNqUSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsWUFBWSxFQUFnQixlQUFlLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFxRGxELE1BQU0sT0FBTyxRQUFRO0lBZ0hqQixZQUFtQixFQUFjLEVBQVMsRUFBcUIsRUFBUyxhQUE0QixFQUFTLE1BQXFCO1FBQS9HLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQXhHekgsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUl0QixzQkFBaUIsR0FBVyxRQUFRLENBQUM7UUFFckMsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBSXBDLGtDQUE2QixHQUFXLE9BQU8sQ0FBQztRQUVoRCw4QkFBeUIsR0FBVywrQkFBK0IsQ0FBQztRQU1wRSxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFbEMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFJOUIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFFekIsZUFBVSxHQUFzQixJQUFJLFlB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OzBEQU8wQixRQUFRLDBCQUp0QixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSzs7QUFjVixNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQTdWZCxRQUFRLEVBMlVSLHFCQUFxQixhQWNwQixZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsYUF6VjFDLFFBQVEsRUEwVkUsWUFBWSxFQWZ0QixxQkFBcUI7NEdBa0JyQixjQUFjLFlBSmQsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsQ0FBQyxFQUNqQyxZQUFZOzJGQUd0QixjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsZUFBZSxDQUFDO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUMsWUFBWSxFQUFDLHFCQUFxQixDQUFDO29CQUN0RCxZQUFZLEVBQUUsQ0FBQyxRQUFRLEVBQUMscUJBQXFCLENBQUM7aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixPbkluaXQsQWZ0ZXJDb250ZW50SW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLENvbnRlbnRDaGlsZCxDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFRlbXBsYXRlUmVmLE9uQ2hhbmdlcyxTaW1wbGVDaGFuZ2VzLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LENoYW5nZURldGVjdG9yUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQge0hlYWRlcixGb290ZXIsUHJpbWVUZW1wbGF0ZSxTaGFyZWRNb2R1bGUsRmlsdGVyU2VydmljZSwgVHJhbnNsYXRpb25LZXlzLCBQcmltZU5HQ29uZmlnfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1BhZ2luYXRvck1vZHVsZX0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xuaW1wb3J0IHtCbG9ja2FibGVVSX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1kYXRhVmlldycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3AtZGF0YXZpZXcgcC1jb21wb25lbnQnOiB0cnVlLCAncC1kYXRhdmlldy1saXN0JzogKGxheW91dCA9PT0gJ2xpc3QnKSwgJ3AtZGF0YXZpZXctZ3JpZCc6IChsYXlvdXQgPT09ICdncmlkJyl9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGF0YXZpZXctbG9hZGluZ1wiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRhdGF2aWV3LWxvYWRpbmctb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncC1kYXRhdmlldy1sb2FkaW5nLWljb24gcGktc3BpbiAnICsgbG9hZGluZ0ljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRhdGF2aWV3LWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyIHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIFthbHdheXNTaG93XT1cImFsd2F5c1Nob3dQYWdpbmF0b3JcIlxuICAgICAgICAgICAgICAgIChvblBhZ2VDaGFuZ2UpPVwicGFnaW5hdGUoJGV2ZW50KVwiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci10b3BcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9uc1wiICpuZ0lmPVwicGFnaW5hdG9yICYmIChwYWdpbmF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcGFnaW5hdG9yUG9zaXRpb24gPT0nYm90aCcpXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25BcHBlbmRUb109XCJwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvXCIgW2Ryb3Bkb3duU2Nyb2xsSGVpZ2h0XT1cInBhZ2luYXRvckRyb3Bkb3duU2Nyb2xsSGVpZ2h0XCIgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXCIgW3Nob3dGaXJzdExhc3RJY29uXT1cInNob3dGaXJzdExhc3RJY29uXCIgW2Ryb3Bkb3duSXRlbVRlbXBsYXRlXT1cInBhZ2luYXRvckRyb3Bkb3duSXRlbVRlbXBsYXRlXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJzaG93Q3VycmVudFBhZ2VSZXBvcnRcIiBbc2hvd0p1bXBUb1BhZ2VEcm9wZG93bl09XCJzaG93SnVtcFRvUGFnZURyb3Bkb3duXCIgW3Nob3dQYWdlTGlua3NdPVwic2hvd1BhZ2VMaW5rc1wiPjwvcC1wYWdpbmF0b3I+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kYXRhdmlldy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLW5vZ3V0dGVyIGdyaWQgZ3JpZC1ub2d1dHRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXJvd0RhdGEgbGV0LXJvd0luZGV4PVwiaW5kZXhcIiBbbmdGb3JPZl09XCJwYWdpbmF0b3IgPyAoKGZpbHRlcmVkVmFsdWV8fHZhbHVlKSB8IHNsaWNlOihsYXp5ID8gMCA6IGZpcnN0KTooKGxhenkgPyAwIDogZmlyc3QpICsgcm93cykpIDogKGZpbHRlcmVkVmFsdWV8fHZhbHVlKVwiIFtuZ0ZvclRyYWNrQnldPVwidHJhY2tCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcm93RGF0YSwgcm93SW5kZXg6IHJvd0luZGV4fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFbXB0eSgpXCIgY2xhc3M9XCJwLWNvbCBjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kYXRhdmlldy1lbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5TWVzc2FnZVRlbXBsYXRlOyBlbHNlIGVtcHR5RmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VtcHR5TWVzc2FnZUxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNlbXB0eUZpbHRlciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TWVzc2FnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIFthbHdheXNTaG93XT1cImFsd2F5c1Nob3dQYWdpbmF0b3JcIlxuICAgICAgICAgICAgICAgIChvblBhZ2VDaGFuZ2UpPVwicGFnaW5hdGUoJGV2ZW50KVwiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci1ib3R0b21cIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9uc1wiICpuZ0lmPVwicGFnaW5hdG9yICYmIChwYWdpbmF0b3JQb3NpdGlvbiA9PT0gJ2JvdHRvbScgfHwgcGFnaW5hdG9yUG9zaXRpb24gPT0nYm90aCcpXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25BcHBlbmRUb109XCJwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvXCIgW2Ryb3Bkb3duU2Nyb2xsSGVpZ2h0XT1cInBhZ2luYXRvckRyb3Bkb3duU2Nyb2xsSGVpZ2h0XCIgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXCIgW3Nob3dGaXJzdExhc3RJY29uXT1cInNob3dGaXJzdExhc3RJY29uXCIgW2Ryb3Bkb3duSXRlbVRlbXBsYXRlXT1cInBhZ2luYXRvckRyb3Bkb3duSXRlbVRlbXBsYXRlXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJzaG93Q3VycmVudFBhZ2VSZXBvcnRcIiBbc2hvd0p1bXBUb1BhZ2VEcm9wZG93bl09XCJzaG93SnVtcFRvUGFnZURyb3Bkb3duXCIgW3Nob3dQYWdlTGlua3NdPVwic2hvd1BhZ2VMaW5rc1wiPjwvcC1wYWdpbmF0b3I+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kYXRhdmlldy1mb290ZXJcIiAqbmdJZj1cImZvb3RlciB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRhdmlldy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlldyBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlckNvbnRlbnRJbml0LE9uRGVzdHJveSxCbG9ja2FibGVVSSxPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcm93czogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdG90YWxSZWNvcmRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwYWdlTGlua3M6IG51bWJlciA9IDU7XG5cbiAgICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yUG9zaXRpb246IHN0cmluZyA9ICdib3R0b20nO1xuXG4gICAgQElucHV0KCkgYWx3YXlzU2hvd1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3JEcm9wZG93blNjcm9sbEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcblxuICAgIEBJbnB1dCgpIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU6IHN0cmluZyA9ICd7Y3VycmVudFBhZ2V9IG9mIHt0b3RhbFBhZ2VzfSc7XG5cbiAgICBASW5wdXQoKSBzaG93Q3VycmVudFBhZ2VSZXBvcnQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93SnVtcFRvUGFnZURyb3Bkb3duOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEljb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1BhZ2VMaW5rczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBsYXp5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmcgPSAnJztcblxuICAgIEBPdXRwdXQoKSBvbkxhenlMb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0cmFja0J5OiBGdW5jdGlvbiA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IGl0ZW07XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTG9jYWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbG9hZGluZ0ljb246IHN0cmluZyA9ICdwaSBwaS1zcGlubmVyJztcblxuICAgIEBJbnB1dCgpIGZpcnN0OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgc29ydEZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzb3J0T3JkZXI6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXTtcblxuICAgIEBPdXRwdXQoKSBvblBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU29ydDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VMYXlvdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlcjtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXI7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBfdmFsdWU6IGFueVtdO1xuXG4gICAgbGlzdEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGdyaWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwYWdpbmF0b3JMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwYWdpbmF0b3JSaWdodFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnaW5hdG9yRHJvcGRvd25JdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmaWx0ZXJlZFZhbHVlOiBhbnlbXTtcblxuICAgIGZpbHRlclZhbHVlOiBzdHJpbmc7XG5cbiAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcblxuICAgIF9sYXlvdXQ6IHN0cmluZyA9ICdsaXN0JztcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKSBnZXQgbGF5b3V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXQ7XG4gICAgfVxuXG4gICAgc2V0IGxheW91dChsYXlvdXQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYXlvdXQgPSBsYXlvdXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTGF5b3V0KGxheW91dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBzaW1wbGVDaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVG90YWxSZWNvcmRzKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5sYXp5ICYmIHRoaXMuaGFzRmlsdGVyKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcih0aGlzLmZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnNvcnRGaWVsZCB8fCBzaW1wbGVDaGFuZ2VzLnNvcnRPcmRlcikge1xuICAgICAgICAgICAgLy9hdm9pZCB0cmlnZ2VyaW5nIGxhenkgbG9hZCBwcmlvciB0byBsYXp5IGluaXRpYWxpemF0aW9uIGF0IG9uSW5pdFxuICAgICAgICAgICAgaWYgKCF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsaXN0SXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncmlkSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZEl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdwYWdpbmF0b3JsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3JMZWZ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncGFnaW5hdG9ycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvclJpZ2h0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncGFnaW5hdG9yZHJvcGRvd25pdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVJdGVtVGVtcGxhdGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVJdGVtVGVtcGxhdGUoKSB7XG4gICAgICAgIHN3aXRjaCh0aGlzLmxheW91dCkge1xuICAgICAgICAgICAgY2FzZSAnbGlzdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0aGlzLmxpc3RJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZ3JpZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0aGlzLmdyaWRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUxheW91dChsYXlvdXQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMub25DaGFuZ2VMYXlvdXQuZW1pdCh7XG4gICAgICAgICAgICBsYXlvdXQ6IHRoaXMubGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1UZW1wbGF0ZSgpO1xuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVG90YWxSZWNvcmRzKCkge1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMubGF6eSA/IHRoaXMudG90YWxSZWNvcmRzIDogKHRoaXMuX3ZhbHVlID8gdGhpcy5fdmFsdWUubGVuZ3RoIDogMCk7XG4gICAgfVxuXG4gICAgcGFnaW5hdGUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGV2ZW50LmZpcnN0O1xuICAgICAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoe1xuICAgICAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3QsXG4gICAgICAgICAgICByb3dzOiB0aGlzLnJvd3NcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc29ydCgpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlMSA9IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZGF0YTEsIHRoaXMuc29ydEZpZWxkKTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUyID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhMiwgdGhpcy5zb3J0RmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNvcnRPcmRlciAqIHJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRmlsdGVyKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcih0aGlzLmZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Tb3J0LmVtaXQoe1xuICAgICAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXJcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmZpbHRlcmVkVmFsdWV8fHRoaXMudmFsdWU7XG4gICAgICAgIHJldHVybiBkYXRhID09IG51bGwgfHwgZGF0YS5sZW5ndGggPT0gMDtcbiAgICB9XG5cbiAgICBjcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cyxcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5zb3J0RmllbGQsXG4gICAgICAgICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuXG5cbiAgICBnZXQgZW1wdHlNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBmaWx0ZXIoZmlsdGVyOiBzdHJpbmcsIGZpbHRlck1hdGNoTW9kZTpzdHJpbmcgPVwiY29udGFpbnNcIikge1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gZmlsdGVyO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc2VhcmNoRmllbGRzID0gdGhpcy5maWx0ZXJCeS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih0aGlzLnZhbHVlLCBzZWFyY2hGaWVsZHMsIGZpbHRlciwgZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcmVkVmFsdWUubGVuZ3RoID09PSB0aGlzLnZhbHVlLmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcnN0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMuZmlsdGVyZWRWYWx1ZSA/IHRoaXMuZmlsdGVyZWRWYWx1ZS5sZW5ndGggOiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5sZW5ndGggOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzRmlsdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJWYWx1ZSAmJiB0aGlzLmZpbHRlclZhbHVlLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZGF0YVZpZXdMYXlvdXRPcHRpb25zJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLWRhdGF2aWV3LWxheW91dC1vcHRpb25zIHAtc2VsZWN0YnV0dG9uIHAtYnV0dG9uc2V0J1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24taWNvbi1vbmx5XCIgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IGR2LmxheW91dCA9PT0gJ2xpc3QnfVwiIChjbGljayk9XCJjaGFuZ2VMYXlvdXQoJGV2ZW50LCAnbGlzdCcpXCIgKGtleWRvd24uZW50ZXIpPVwiY2hhbmdlTGF5b3V0KCRldmVudCwgJ2xpc3QnKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24taWNvbi1vbmx5XCIgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IGR2LmxheW91dCA9PT0gJ2dyaWQnfVwiIChjbGljayk9XCJjaGFuZ2VMYXlvdXQoJGV2ZW50LCAnZ3JpZCcpXCIgKGtleWRvd24uZW50ZXIpPVwiY2hhbmdlTGF5b3V0KCRldmVudCwgJ2dyaWQnKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdGgtbGFyZ2VcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3TGF5b3V0T3B0aW9ucyAge1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdjogRGF0YVZpZXcpIHt9XG5cbiAgICBjaGFuZ2VMYXlvdXQoZXZlbnQ6IEV2ZW50LCBsYXlvdXQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmR2LmNoYW5nZUxheW91dChsYXlvdXQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxTaGFyZWRNb2R1bGUsUGFnaW5hdG9yTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRGF0YVZpZXcsU2hhcmVkTW9kdWxlLERhdGFWaWV3TGF5b3V0T3B0aW9uc10sXG4gICAgZGVjbGFyYXRpb25zOiBbRGF0YVZpZXcsRGF0YVZpZXdMYXlvdXRPcHRpb25zXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dataview/primeng-dataview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dataview/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dataview/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kYXRhdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kYXRhdmlldy9wcmltZW5nLWRhdGF2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dataview/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dataview/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dataview/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './dataview';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kYXRhdmlldy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhdmlldyc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/defer/defer.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/defer/defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/defer/defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,81 @@
+import { NgModule, Directive, TemplateRef, EventEmitter, Output, ContentChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+export class DeferredLoader {
+    constructor(el, renderer, viewContainer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.onLoad = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (this.shouldLoad()) {
+            this.load();
+        }
+        if (!this.isLoaded()) {
+            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {
+                if (this.shouldLoad()) {
+                    this.load();
+                    this.documentScrollListener();
+                    this.documentScrollListener = null;
+                }
+            });
+        }
+    }
+    shouldLoad() {
+        if (this.isLoaded()) {
+            return false;
+        }
+        else {
+            let rect = this.el.nativeElement.getBoundingClientRect();
+            let docElement = document.documentElement;
+            let winHeight = docElement.clientHeight;
+            return (winHeight >= rect.top);
+        }
+    }
+    load() {
+        this.view = this.viewContainer.createEmbeddedView(this.template);
+        this.onLoad.emit();
+        this.cd.detectChanges();
+    }
+    isLoaded() {
+        return this.view != null;
+    }
+    ngOnDestroy() {
+        this.view = null;
+        if (this.documentScrollListener) {
+            this.documentScrollListener();
+        }
+    }
+}
+DeferredLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+DeferredLoader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DeferredLoader, selector: "[pDefer]", outputs: { onLoad: "onLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDefer]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onLoad: [{
+                type: Output
+            }], template: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+export class DeferModule {
+}
+DeferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DeferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, declarations: [DeferredLoader], imports: [CommonModule], exports: [DeferredLoader] });
+DeferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [DeferredLoader],
+                    declarations: [DeferredLoader]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZGVmZXIvZGVmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQW9DLFdBQVcsRUFDdEMsWUFBWSxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFRN0MsTUFBTSxPQUFPLGNBQWM7SUFVdkIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CLEVBQVMsYUFBK0IsRUFBVSxFQUFxQjtRQUFqSCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBUjFILFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVE4RSxDQUFDO0lBRXhJLGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN4RSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2lCQUN0QztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQ0k7WUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3pELElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDMUMsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztZQUV4QyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDOzsyR0F6RFEsY0FBYzsrRkFBZCxjQUFjLDRKQUlULFdBQVc7MkZBSmhCLGNBQWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0o7d0xBR2EsTUFBTTtzQkFBZixNQUFNO2dCQUVvQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7O0FBNkQ3QixNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQWpFWCxjQUFjLGFBNkRiLFlBQVksYUE3RGIsY0FBYzt5R0FpRWQsV0FBVyxZQUpYLENBQUMsWUFBWSxDQUFDOzJGQUlkLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLERpcmVjdGl2ZSxFbGVtZW50UmVmLEFmdGVyVmlld0luaXQsT25EZXN0cm95LFRlbXBsYXRlUmVmLEVtYmVkZGVkVmlld1JlZixcbiAgICAgICAgVmlld0NvbnRhaW5lclJlZixSZW5kZXJlcjIsRXZlbnRFbWl0dGVyLE91dHB1dCxDb250ZW50Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twRGVmZXJdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEZWZlcnJlZExvYWRlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsT25EZXN0cm95IHtcblxuICAgIEBPdXRwdXQoKSBvbkxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBkb2N1bWVudFNjcm9sbExpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRMb2FkKCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTY3JvbGxMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZExvYWQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTY3JvbGxMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG91bGRMb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGxldCBkb2NFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHdpbkhlaWdodCA9IGRvY0VsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgICByZXR1cm4gKHdpbkhlaWdodCA+PSByZWN0LnRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXcgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpO1xuICAgICAgICB0aGlzLm9uTG9hZC5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGlzTG9hZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3ICE9IG51bGw7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudmlldyA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRTY3JvbGxMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0RlZmVycmVkTG9hZGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtEZWZlcnJlZExvYWRlcl1cbn0pXG5leHBvcnQgY2xhc3MgRGVmZXJNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/defer/primeng-defer.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/defer/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/defer/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kZWZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kZWZlci9wcmltZW5nLWRlZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/defer/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/defer/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/defer/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './defer';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kZWZlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZlcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/dialog/dialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dialog/dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dialog/dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,752 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChild } from '@angular/core';
+import { trigger, style, transition, animate, animation, useAnimation } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { Header, Footer, SharedModule, PrimeTemplate } from 'primeng/api';
+import { FocusTrapModule } from 'primeng/focustrap';
+import { RippleModule } from 'primeng/ripple';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/focustrap";
+import * as i4 from "primeng/ripple";
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+export class Dialog {
+    constructor(el, renderer, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.draggable = true;
+        this.resizable = true;
+        this.closeOnEscape = true;
+        this.closable = true;
+        this.showHeader = true;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.minX = 0;
+        this.minY = 0;
+        this.focusOnShow = true;
+        this.keepInViewport = true;
+        this.focusTrap = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.closeIcon = 'pi pi-times';
+        this.closeTabindex = "-1";
+        this.minimizeIcon = 'pi pi-window-minimize';
+        this.maximizeIcon = 'pi pi-window-maximize';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onResizeInit = new EventEmitter();
+        this.onResizeEnd = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onMaximize = new EventEmitter();
+        this.id = UniqueComponentId();
+        this._style = {};
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+    }
+    get positionLeft() {
+        return 0;
+    }
+    ;
+    set positionLeft(_positionLeft) {
+        console.log("positionLeft property is deprecated.");
+    }
+    get positionTop() {
+        return 0;
+    }
+    ;
+    set positionTop(_positionTop) {
+        console.log("positionTop property is deprecated.");
+    }
+    get responsive() {
+        return false;
+    }
+    ;
+    set responsive(_responsive) {
+        console.log("Responsive property is deprecated.");
+    }
+    get breakpoint() {
+        return 649;
+    }
+    ;
+    set breakpoint(_breakpoint) {
+        console.log("Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    get style() {
+        return this._style;
+    }
+    set style(value) {
+        if (value) {
+            this._style = { ...value };
+            this.originalStyle = value;
+        }
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'topleft':
+            case 'bottomleft':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'topright':
+            case 'bottomright':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    close(event) {
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (this.closable && this.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+        if (this.modal) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.modal) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    maximize() {
+        this.maximized = !this.maximized;
+        if (!this.modal && !this.blockScroll) {
+            if (this.maximized)
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            else
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.onMaximize.emit({ 'maximized': this.maximized });
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    initDrag(event) {
+        if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass(event.target.parentElement, 'p-dialog-header-icon')) {
+            return;
+        }
+        if (this.draggable) {
+            this.dragging = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            this.container.style.margin = '0';
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+        }
+    }
+    onKeydown(event) {
+        if (this.focusTrap) {
+            if (event.which === 9) {
+                event.preventDefault();
+                let focusableElements = DomHandler.getFocusableElements(this.container);
+                if (focusableElements && focusableElements.length > 0) {
+                    if (!focusableElements[0].ownerDocument.activeElement) {
+                        focusableElements[0].focus();
+                    }
+                    else {
+                        let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                        if (event.shiftKey) {
+                            if (focusedIndex == -1 || focusedIndex === 0)
+                                focusableElements[focusableElements.length - 1].focus();
+                            else
+                                focusableElements[focusedIndex - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                focusableElements[0].focus();
+                            else
+                                focusableElements[focusedIndex + 1].focus();
+                        }
+                    }
+                }
+            }
+        }
+    }
+    onDrag(event) {
+        if (this.dragging) {
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let offset = DomHandler.getOffset(this.container);
+            let leftPos = offset.left + deltaX;
+            let topPos = offset.top + deltaY;
+            let viewport = DomHandler.getViewport();
+            this.container.style.position = 'fixed';
+            if (this.keepInViewport) {
+                if (leftPos >= this.minX && (leftPos + containerWidth) < viewport.width) {
+                    this._style.left = leftPos + 'px';
+                    this.lastPageX = event.pageX;
+                    this.container.style.left = leftPos + 'px';
+                }
+                if (topPos >= this.minY && (topPos + containerHeight) < viewport.height) {
+                    this._style.top = topPos + 'px';
+                    this.lastPageY = event.pageY;
+                    this.container.style.top = topPos + 'px';
+                }
+            }
+            else {
+                this.lastPageX = event.pageX;
+                this.container.style.left = leftPos + 'px';
+                this.lastPageY = event.pageY;
+                this.container.style.top = topPos + 'px';
+            }
+        }
+    }
+    endDrag(event) {
+        if (this.dragging) {
+            this.dragging = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.cd.detectChanges();
+            this.onDragEnd.emit(event);
+        }
+    }
+    resetPosition() {
+        this.container.style.position = '';
+        this.container.style.left = '';
+        this.container.style.top = '';
+        this.container.style.margin = '';
+    }
+    //backward compatibility
+    center() {
+        this.resetPosition();
+    }
+    initResize(event) {
+        if (this.resizable) {
+            this.resizing = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+            this.onResizeInit.emit(event);
+        }
+    }
+    onResize(event) {
+        if (this.resizing) {
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);
+            let newWidth = containerWidth + deltaX;
+            let newHeight = containerHeight + deltaY;
+            let minWidth = this.container.style.minWidth;
+            let minHeight = this.container.style.minHeight;
+            let offset = DomHandler.getOffset(this.container);
+            let viewport = DomHandler.getViewport();
+            let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);
+            if (hasBeenDragged) {
+                newWidth += deltaX;
+                newHeight += deltaY;
+            }
+            if ((!minWidth || newWidth > parseInt(minWidth)) && (offset.left + newWidth) < viewport.width) {
+                this._style.width = newWidth + 'px';
+                this.container.style.width = this._style.width;
+            }
+            if ((!minHeight || newHeight > parseInt(minHeight)) && (offset.top + newHeight) < viewport.height) {
+                this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';
+                if (this._style.height) {
+                    this._style.height = newHeight + 'px';
+                    this.container.style.height = this._style.height;
+                }
+            }
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+        }
+    }
+    resizeEnd(event) {
+        if (this.resizing) {
+            this.resizing = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.onResizeEnd.emit(event);
+        }
+    }
+    bindGlobalListeners() {
+        if (this.draggable) {
+            this.bindDocumentDragListener();
+            this.bindDocumentDragEndListener();
+        }
+        if (this.resizable) {
+            this.bindDocumentResizeListeners();
+        }
+        if (this.closeOnEscape && this.closable) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentDragListener();
+        this.unbindDocumentDragEndListener();
+        this.unbindDocumentResizeListeners();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentDragListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragListener = this.onDrag.bind(this);
+            window.document.addEventListener('mousemove', this.documentDragListener);
+        });
+    }
+    unbindDocumentDragListener() {
+        if (this.documentDragListener) {
+            window.document.removeEventListener('mousemove', this.documentDragListener);
+            this.documentDragListener = null;
+        }
+    }
+    bindDocumentDragEndListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragEndListener = this.endDrag.bind(this);
+            window.document.addEventListener('mouseup', this.documentDragEndListener);
+        });
+    }
+    unbindDocumentDragEndListener() {
+        if (this.documentDragEndListener) {
+            window.document.removeEventListener('mouseup', this.documentDragEndListener);
+            this.documentDragEndListener = null;
+        }
+    }
+    bindDocumentResizeListeners() {
+        this.zone.runOutsideAngular(() => {
+            this.documentResizeListener = this.onResize.bind(this);
+            this.documentResizeEndListener = this.resizeEnd.bind(this);
+            window.document.addEventListener('mousemove', this.documentResizeListener);
+            window.document.addEventListener('mouseup', this.documentResizeEndListener);
+        });
+    }
+    unbindDocumentResizeListeners() {
+        if (this.documentResizeListener && this.documentResizeEndListener) {
+            window.document.removeEventListener('mousemove', this.documentResizeListener);
+            window.document.removeEventListener('mouseup', this.documentResizeEndListener);
+            this.documentResizeListener = null;
+            this.documentResizeEndListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                this.close(event);
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.container.setAttribute(this.id, '');
+                if (this.modal) {
+                    this.enableModality();
+                }
+                if (!this.modal && this.blockScroll) {
+                    DomHandler.addClass(document.body, 'p-overflow-hidden');
+                }
+                if (this.focusOnShow) {
+                    this.focus();
+                }
+                break;
+            case 'void':
+                if (this.modal) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        this.dragging = false;
+        this.maskVisible = false;
+        if (this.maximized) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            this.maximized = false;
+        }
+        if (this.modal) {
+            this.disableModality();
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.wrapper = null;
+        this._style = this.originalStyle ? { ...this.originalStyle } : {};
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        this.destroyStyle();
+    }
+}
+Dialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Dialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dialog, selector: "p-dialog", inputs: { header: "header", draggable: "draggable", resizable: "resizable", positionLeft: "positionLeft", positionTop: "positionTop", contentStyle: "contentStyle", contentStyleClass: "contentStyleClass", modal: "modal", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", rtl: "rtl", closable: "closable", responsive: "responsive", appendTo: "appendTo", breakpoints: "breakpoints", styleClass: "styleClass", maskStyleClass: "maskStyleClass", showHeader: "showHeader", breakpoint: "breakpoint", blockScroll: "blockScroll", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", minX: "minX", minY: "minY", focusOnShow: "focusOnShow", maximizable: "maximizable", keepInViewport: "keepInViewport", focusTrap: "focusTrap", transitionOptions: "transitionOptions", closeIcon: "closeIcon", closeAriaLabel: "closeAriaLabel", closeTabindex: "closeTabindex", minimizeIcon: "minimizeIcon", maximizeIcon: "maximizeIcon", visible: "visible", style: "style", position: "position" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange", onResizeInit: "onResizeInit", onResizeEnd: "onResizeEnd", onDragEnd: "onDragEnd", onMaximize: "onMaximize" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerViewChild", first: true, predicate: ["titlebar"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "footerViewChild", first: true, predicate: ["footer"], descendants: true }], ngImport: i0, template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.FocusTrap, selector: "[pFocusTrap]", inputs: ["pFocusTrapDisabled"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dialog', template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], draggable: [{
+                type: Input
+            }], resizable: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], contentStyle: [{
+                type: Input
+            }], contentStyleClass: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], minX: [{
+                type: Input
+            }], minY: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], maximizable: [{
+                type: Input
+            }], keepInViewport: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], closeAriaLabel: [{
+                type: Input
+            }], closeTabindex: [{
+                type: Input
+            }], minimizeIcon: [{
+                type: Input
+            }], maximizeIcon: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], headerViewChild: [{
+                type: ViewChild,
+                args: ['titlebar']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], footerViewChild: [{
+                type: ViewChild,
+                args: ['footer']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onResizeInit: [{
+                type: Output
+            }], onResizeEnd: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onMaximize: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }] } });
+export class DialogModule {
+}
+DialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, declarations: [Dialog], imports: [CommonModule, FocusTrapModule, RippleModule], exports: [Dialog, SharedModule] });
+DialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, imports: [[CommonModule, FocusTrapModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FocusTrapModule, RippleModule],
+                    exports: [Dialog, SharedModule],
+                    declarations: [Dialog]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUNyRSxlQUFlLEVBQVcsU0FBUyxFQUFtQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBaUMsWUFBWSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hNLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQWtCLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUU3RCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDNUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDakQsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0NBQzVCLENBQUMsQ0FBQztBQUVILE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUM1QixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFP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QWdzQkUsWUFBWTswR0FHcEIsWUFBWSxZQUpaLENBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxZQUFZLENBQUMsRUFDbkMsWUFBWTsyRkFHcEIsWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsZUFBZSxFQUFDLFlBQVksQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFDLFlBQVksQ0FBQztvQkFDOUIsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsT25EZXN0cm95LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsUmVuZGVyZXIyLFxuICAgIENvbnRlbnRDaGlsZHJlbixRdWVyeUxpc3QsVmlld0NoaWxkLE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsVmlld1JlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIEFmdGVyQ29udGVudEluaXQsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RyaWdnZXIsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLCBBbmltYXRpb25FdmVudCwgYW5pbWF0aW9uLCB1c2VBbmltYXRpb259IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7SGVhZGVyLEZvb3RlcixTaGFyZWRNb2R1bGUsIFByaW1lVGVtcGxhdGUsIFByaW1lTkdDb25maWd9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Rm9jdXNUcmFwTW9kdWxlfSBmcm9tICdwcmltZW5nL2ZvY3VzdHJhcCc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtVbmlxdWVDb21wb25lbnRJZCwgWkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5jb25zdCBzaG93QW5pbWF0aW9uID0gYW5pbWF0aW9uKFtcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pLFxuICAgIGFuaW1hdGUoJ3t7dHJhbnNpdGlvbn19Jylcbl0pO1xuXG5jb25zdCBoaWRlQW5pbWF0aW9uID0gYW5pbWF0aW9uKFtcbiAgICBhbmltYXRlKCd7e3RyYW5zaXRpb259fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAne3t0cmFuc2Zvcm19fScsIG9wYWNpdHk6IDAgfSkpXG5dKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWRpYWxvZycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAqbmdJZj1cIm1hc2tWaXNpYmxlXCIgW2NsYXNzXT1cIm1hc2tTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaWFsb2ctbWFzayc6IHRydWUsICdwLWNvbXBvbmVudC1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXktZW50ZXInOiB0aGlzLm1vZGFsLCAncC1kaWFsb2ctbWFzay1zY3JvbGxibG9ja2VyJzogdGhpcy5tb2RhbCB8fCB0aGlzLmJsb2NrU2Nyb2xsLFxuICAgICAgICAgICAgICAgICdwLWRpYWxvZy1sZWZ0JzogcG9zaXRpb24gPT09ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAncC1kaWFsb2ctcmlnaHQnOiBwb3NpdGlvbiA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAncC1kaWFsb2ctdG9wJzogcG9zaXRpb24gPT09ICd0b3AnLFxuICAgICAgICAgICAgICAgICdwLWRpYWxvZy10b3AtbGVmdCc6IHBvc2l0aW9uID09PSAndG9wbGVmdCcgfHwgcG9zaXRpb24gPT09ICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgJ3AtZGlhbG9nLXRvcC1yaWdodCc6IHBvc2l0aW9uID09PSAndG9wcmlnaHQnIHx8IHBvc2l0aW9uID09PSAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAncC1kaWFsb2ctYm90dG9tJzogcG9zaXRpb24gPT09ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICdwLWRpYWxvZy1ib3R0b20tbGVmdCc6IHBvc2l0aW9uID09PSAnYm90dG9tbGVmdCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgJ3AtZGlhbG9nLWJvdHRvbS1yaWdodCc6IHBvc2l0aW9uID09PSAnYm90dG9tcmlnaHQnIHx8IHBvc2l0aW9uID09PSAnYm90dG9tLXJpZ2h0J31cIj5cbiAgICAgICAgICAgIDxkaXYgI2NvbnRhaW5lciBbbmdDbGFzc109XCJ7J3AtZGlhbG9nIHAtY29tcG9uZW50Jzp0cnVlLCAncC1kaWFsb2ctcnRsJzpydGwsJ3AtZGlhbG9nLWRyYWdnYWJsZSc6ZHJhZ2dhYmxlLCdwLWRpYWxvZy1yZXNpemFibGUnOnJlc2l6YWJsZSwgJ3AtZGlhbG9nLW1heGltaXplZCc6IG1heGltaXplZH1cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAqbmdJZj1cInZpc2libGVcIiBwRm9jdXNUcmFwIFtwRm9jdXNUcmFwRGlzYWJsZWRdPVwiZm9jdXNUcmFwID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgW0BhbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zZm9ybTogdHJhbnNmb3JtT3B0aW9ucywgdHJhbnNpdGlvbjogdHJhbnNpdGlvbk9wdGlvbnN9fVwiIChAYW5pbWF0aW9uLnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiIChAYW5pbWF0aW9uLmRvbmUpPVwib25BbmltYXRpb25FbmQoJGV2ZW50KVwiIHJvbGU9XCJkaWFsb2dcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaWQgKyAnLWxhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgI3RpdGxlYmFyIGNsYXNzPVwicC1kaWFsb2ctaGVhZGVyXCIgKG1vdXNlZG93bik9XCJpbml0RHJhZygkZXZlbnQpXCIgKm5nSWY9XCJzaG93SGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cImlkICsgJy1sYWJlbCdcIiBjbGFzcz1cInAtZGlhbG9nLXRpdGxlXCIgKm5nSWY9XCIhaGVhZGVyRmFjZXQgJiYgIWhlYWRlclRlbXBsYXRlXCI+e3toZWFkZXJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiaWQgKyAnLWxhYmVsJ1wiIGNsYXNzPVwicC1kaWFsb2ctdGl0bGVcIiAqbmdJZj1cImhlYWRlckZhY2V0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGlhbG9nLWhlYWRlci1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm1heGltaXphYmxlXCIgdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cInsncC1kaWFsb2ctaGVhZGVyLWljb24gcC1kaWFsb2ctaGVhZGVyLW1heGltaXplIHAtbGluayc6dHJ1ZX1cIiAoY2xpY2spPVwibWF4aW1pemUoKVwiIChrZXlkb3duLmVudGVyKT1cIm1heGltaXplKClcIiB0YWJpbmRleD1cIi0xXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZGlhbG9nLWhlYWRlci1tYXhpbWl6ZS1pY29uXCIgW25nQ2xhc3NdPVwibWF4aW1pemVkID8gbWluaW1pemVJY29uIDogbWF4aW1pemVJY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2xvc2FibGVcIiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwieydwLWRpYWxvZy1oZWFkZXItaWNvbiBwLWRpYWxvZy1oZWFkZXItY2xvc2UgcC1saW5rJzp0cnVlfVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY2xvc2VBcmlhTGFiZWxcIiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImNsb3NlKCRldmVudClcIiBbYXR0ci50YWJpbmRleF09XCJjbG9zZVRhYmluZGV4XCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZGlhbG9nLWhlYWRlci1jbG9zZS1pY29uXCIgW25nQ2xhc3NdPVwiY2xvc2VJY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgI2NvbnRlbnQgW25nQ2xhc3NdPVwiJ3AtZGlhbG9nLWNvbnRlbnQnXCIgW25nU3R5bGVdPVwiY29udGVudFN0eWxlXCIgW2NsYXNzXT1cImNvbnRlbnRTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgI2Zvb3RlciBjbGFzcz1cInAtZGlhbG9nLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyRmFjZXQgfHwgZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXNpemFibGVcIiBjbGFzcz1cInAtcmVzaXphYmxlLWhhbmRsZVwiIHN0eWxlPVwiei1pbmRleDogOTA7XCIgKG1vdXNlZG93bik9XCJpbml0UmVzaXplKCRldmVudClcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiB2aXNpYmxlJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihzaG93QW5pbWF0aW9uKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKGhpZGVBbmltYXRpb24pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi4vZGlhbG9nL2RpYWxvZy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2cgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LE9uSW5pdCxPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkcmFnZ2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgcmVzaXphYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGdldCBwb3NpdGlvbkxlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfTtcblxuICAgIHNldCBwb3NpdGlvbkxlZnQoX3Bvc2l0aW9uTGVmdDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwicG9zaXRpb25MZWZ0IHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQuXCIpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBwb3NpdGlvblRvcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9O1xuXG4gICAgc2V0IHBvc2l0aW9uVG9wKF9wb3NpdGlvblRvcDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwicG9zaXRpb25Ub3AgcHJvcGVydHkgaXMgZGVwcmVjYXRlZC5cIik7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY29udGVudFN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBjb250ZW50U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbW9kYWw6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBjbG9zZU9uRXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRpc21pc3NhYmxlTWFzazogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNsb3NhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGdldCByZXNwb25zaXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIHNldCByZXNwb25zaXZlKF9yZXNwb25zaXZlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiUmVzcG9uc2l2ZSBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLlwiKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgYnJlYWtwb2ludHM6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1hc2tTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGdldCBicmVha3BvaW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiA2NDk7XG4gICAgfTtcblxuICAgIHNldCBicmVha3BvaW50KF9icmVha3BvaW50OiBudW1iZXIpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJCcmVha3BvaW50IHByb3BlcnR5IGlzIG5vdCB1dGlsaXplZCBhbmQgZGVwcmVjYXRlZCwgdXNlIGJyZWFrcG9pbnRzIG9yIENTUyBtZWRpYSBxdWVyaWVzIGluc3RlYWQuXCIpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGJsb2NrU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBtaW5YOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbWluWTogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIGZvY3VzT25TaG93OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIG1heGltaXphYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkga2VlcEluVmlld3BvcnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZm9jdXNUcmFwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnO1xuXG4gICAgQElucHV0KCkgY2xvc2VBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNsb3NlVGFiaW5kZXg6IHN0cmluZyA9IFwiLTFcIjtcblxuICAgIEBJbnB1dCgpIG1pbmltaXplSWNvbjogc3RyaW5nID0gJ3BpIHBpLXdpbmRvdy1taW5pbWl6ZSc7XG5cbiAgICBASW5wdXQoKSBtYXhpbWl6ZUljb246IHN0cmluZyA9ICdwaSBwaS13aW5kb3ctbWF4aW1pemUnO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0OiBRdWVyeUxpc3Q8SGVhZGVyPjtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXJGYWNldDogUXVlcnlMaXN0PEZvb3Rlcj47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0aXRsZWJhcicpIGhlYWRlclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZm9vdGVyJykgZm9vdGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUmVzaXplSW5pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25SZXNpemVFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRHJhZ0VuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25NYXhpbWl6ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgX3Zpc2libGU6IGJvb2xlYW47XG5cbiAgICBtYXNrVmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICB3cmFwcGVyOiBIVE1MRWxlbWVudDtcblxuICAgIGRyYWdnaW5nOiBib29sZWFuO1xuXG4gICAgZG9jdW1lbnREcmFnTGlzdGVuZXI6IGFueTtcblxuICAgIGRvY3VtZW50RHJhZ0VuZExpc3RlbmVyOiBhbnk7XG5cbiAgICByZXNpemluZzogYm9vbGVhbjtcblxuICAgIGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIGRvY3VtZW50UmVzaXplRW5kTGlzdGVuZXI6IGFueTtcblxuICAgIGRvY3VtZW50RXNjYXBlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgbWFza0NsaWNrTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgbGFzdFBhZ2VYOiBudW1iZXI7XG5cbiAgICBsYXN0UGFnZVk6IG51bWJlcjtcblxuICAgIHByZXZlbnRWaXNpYmxlQ2hhbmdlUHJvcGFnYXRpb246IGJvb2xlYW47XG5cbiAgICBtYXhpbWl6ZWQ6IGJvb2xlYW47XG5cbiAgICBwcmVNYXhpbWl6ZUNvbnRlbnRIZWlnaHQ6IG51bWJlcjtcblxuICAgIHByZU1heGltaXplQ29udGFpbmVyV2lkdGg6IG51bWJlcjtcblxuICAgIHByZU1heGltaXplQ29udGFpbmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICBwcmVNYXhpbWl6ZVBhZ2VYOiBudW1iZXI7XG5cbiAgICBwcmVNYXhpbWl6ZVBhZ2VZOiBudW1iZXI7XG5cbiAgICBpZDogc3RyaW5nID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIF9zdHlsZTogYW55ID0ge307XG5cbiAgICBfcG9zaXRpb246IHN0cmluZyA9IFwiY2VudGVyXCI7XG5cbiAgICBvcmlnaW5hbFN0eWxlOiBhbnk7XG5cbiAgICB0cmFuc2Zvcm1PcHRpb25zOiBhbnkgPSBcInNjYWxlKDAuNylcIjtcblxuICAgIHN0eWxlRWxlbWVudDogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcpIHsgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVN0eWxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgdmlzaWJsZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG4gICAgc2V0IHZpc2libGUodmFsdWU6YW55KSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSAmJiAhdGhpcy5tYXNrVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYXNrVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgc3R5bGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlO1xuICAgIH1cbiAgICBzZXQgc3R5bGUodmFsdWU6YW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc3R5bGUgPSB7Li4udmFsdWV9O1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFN0eWxlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgcG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH07XG5cbiAgICBzZXQgcG9zaXRpb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHZhbHVlO1xuXG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcGxlZnQnOlxuICAgICAgICAgICAgY2FzZSAnYm90dG9tbGVmdCc6XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKC0xMDAlLCAwcHgsIDBweClcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndG9wcmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnYm90dG9tcmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtT3B0aW9ucyA9IFwidHJhbnNsYXRlM2QoMTAwJSwgMHB4LCAwcHgpXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1PcHRpb25zID0gXCJ0cmFuc2xhdGUzZCgwcHgsIDEwMCUsIDBweClcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKDBweCwgLTEwMCUsIDBweClcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInNjYWxlKDAuNylcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIGxldCBmb2N1c2FibGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICdbYXV0b2ZvY3VzXScpO1xuICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZm9jdXNhYmxlLmZvY3VzKCksIDUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGVuYWJsZU1vZGFsaXR5KCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zYWJsZSAmJiB0aGlzLmRpc21pc3NhYmxlTWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMud3JhcHBlciwgJ21vdXNlZG93bicsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud3JhcHBlciAmJiB0aGlzLndyYXBwZXIuaXNTYW1lTm9kZShldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9kYWwpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNhYmxlTW9kYWxpdHkoKSB7XG4gICAgICAgIGlmICh0aGlzLndyYXBwZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc21pc3NhYmxlTWFzaykge1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMubW9kYWwpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISh0aGlzLmNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWF4aW1pemUoKSB7XG4gICAgICAgIHRoaXMubWF4aW1pemVkID0gIXRoaXMubWF4aW1pemVkO1xuXG4gICAgICAgIGlmICghdGhpcy5tb2RhbCAmJiAhdGhpcy5ibG9ja1Njcm9sbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF4aW1pemVkKVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25NYXhpbWl6ZS5lbWl0KHsnbWF4aW1pemVkJzogdGhpcy5tYXhpbWl6ZWR9KTtcbiAgICB9XG5cbiAgICB1bmJpbmRNYXNrQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0NsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5jb250YWluZXIsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5tb2RhbCk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKHBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCwgMTApIC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVTdHlsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBpbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wLWRpYWxvZ1ske3RoaXMuaWR9XSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICR7dGhpcy5icmVha3BvaW50c1ticmVha3BvaW50XX0gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1kaWFsb2ctaGVhZGVyLWljb24nKSB8fMKgRG9tSGFuZGxlci5oYXNDbGFzcygoPEhUTUxFbGVtZW50PiBldmVudC50YXJnZXQpLnBhcmVudEVsZW1lbnQsICdwLWRpYWxvZy1oZWFkZXItaWNvbicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnZ2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVggPSBldmVudC5wYWdlWDtcbiAgICAgICAgICAgIHRoaXMubGFzdFBhZ2VZID0gZXZlbnQucGFnZVk7XG5cbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLm1hcmdpbiA9ICcwJztcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3AtdW5zZWxlY3RhYmxlLXRleHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c1RyYXApIHtcbiAgICAgICAgICAgIGlmIChldmVudC53aGljaCA9PT0gOSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlRWxlbWVudHMgPSBEb21IYW5kbGVyLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMuY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50cyAmJiBmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZm9jdXNhYmxlRWxlbWVudHNbMF0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZvY3VzYWJsZUVsZW1lbnRzLmluZGV4T2YoZm9jdXNhYmxlRWxlbWVudHNbMF0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1tmb2N1c2VkSW5kZXggLSAxXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IChmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIGxldCBjb250YWluZXJXaWR0aCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICBsZXQgY29udGFpbmVySGVpZ2h0ID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICBsZXQgZGVsdGFYID0gZXZlbnQucGFnZVggLSB0aGlzLmxhc3RQYWdlWDtcbiAgICAgICAgICAgIGxldCBkZWx0YVkgPSBldmVudC5wYWdlWSAtIHRoaXMubGFzdFBhZ2VZO1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGxldCBsZWZ0UG9zID0gb2Zmc2V0LmxlZnQgKyBkZWx0YVg7XG4gICAgICAgICAgICBsZXQgdG9wUG9zID0gb2Zmc2V0LnRvcCArIGRlbHRhWTtcbiAgICAgICAgICAgIGxldCB2aWV3cG9ydCA9IERvbUhhbmRsZXIuZ2V0Vmlld3BvcnQoKTtcblxuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwSW5WaWV3cG9ydCkge1xuICAgICAgICAgICAgICAgIGlmIChsZWZ0UG9zID49IHRoaXMubWluWCAmJiAobGVmdFBvcyArIGNvbnRhaW5lcldpZHRoKSA8IHZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLmxlZnQgPSBsZWZ0UG9zICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVggPSBldmVudC5wYWdlWDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUubGVmdCA9IGxlZnRQb3MgKyAncHgnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0b3BQb3MgPj0gdGhpcy5taW5ZICYmICh0b3BQb3MgKyBjb250YWluZXJIZWlnaHQpIDwgdmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0eWxlLnRvcCA9IHRvcFBvcyArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFBhZ2VZID0gZXZlbnQucGFnZVk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLnRvcCA9IHRvcFBvcyArICdweCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVggPSBldmVudC5wYWdlWDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gbGVmdFBvcyArICdweCc7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVkgPSBldmVudC5wYWdlWTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS50b3AgPSB0b3BQb3MgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kRHJhZyhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAncC11bnNlbGVjdGFibGUtdGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnJztcbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUudG9wID0gJyc7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLm1hcmdpbiA9ICcnO1xuICAgIH1cblxuICAgIC8vYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgIGNlbnRlcigpIHtcbiAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgaW5pdFJlc2l6ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXppbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVggPSBldmVudC5wYWdlWDtcbiAgICAgICAgICAgIHRoaXMubGFzdFBhZ2VZID0gZXZlbnQucGFnZVk7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdwLXVuc2VsZWN0YWJsZS10ZXh0Jyk7XG4gICAgICAgICAgICB0aGlzLm9uUmVzaXplSW5pdC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6aW5nKSB7XG4gICAgICAgICAgICBsZXQgZGVsdGFYID0gZXZlbnQucGFnZVggLSB0aGlzLmxhc3RQYWdlWDtcbiAgICAgICAgICAgIGxldCBkZWx0YVkgPSBldmVudC5wYWdlWSAtIHRoaXMubGFzdFBhZ2VZO1xuICAgICAgICAgICAgbGV0IGNvbnRhaW5lcldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGxldCBjb250YWluZXJIZWlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGxldCBjb250ZW50SGVpZ2h0ID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgbmV3V2lkdGggPSBjb250YWluZXJXaWR0aCArIGRlbHRhWDtcbiAgICAgICAgICAgIGxldCBuZXdIZWlnaHQgPSBjb250YWluZXJIZWlnaHQgKyBkZWx0YVk7XG4gICAgICAgICAgICBsZXQgbWluV2lkdGggPSB0aGlzLmNvbnRhaW5lci5zdHlsZS5taW5XaWR0aDtcbiAgICAgICAgICAgIGxldCBtaW5IZWlnaHQgPSB0aGlzLmNvbnRhaW5lci5zdHlsZS5taW5IZWlnaHQ7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgbGV0IHZpZXdwb3J0ID0gRG9tSGFuZGxlci5nZXRWaWV3cG9ydCgpO1xuICAgICAgICAgICAgbGV0IGhhc0JlZW5EcmFnZ2VkID0gIXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnRvcCkgfHwgIXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQpO1xuXG4gICAgICAgICAgICBpZiAoaGFzQmVlbkRyYWdnZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdXaWR0aCArPSBkZWx0YVg7XG4gICAgICAgICAgICAgICAgbmV3SGVpZ2h0ICs9IGRlbHRhWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCghbWluV2lkdGggfHwgbmV3V2lkdGggPiBwYXJzZUludChtaW5XaWR0aCkpICYmIChvZmZzZXQubGVmdCArIG5ld1dpZHRoKSA8IHZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3R5bGUud2lkdGggPSBuZXdXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUud2lkdGggPSB0aGlzLl9zdHlsZS53aWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCghbWluSGVpZ2h0IHx8IG5ld0hlaWdodCA+IHBhcnNlSW50KG1pbkhlaWdodCkpICYmIChvZmZzZXQudG9wICsgbmV3SGVpZ2h0KSA8IHZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGNvbnRlbnRIZWlnaHQgKyBuZXdIZWlnaHQgLSBjb250YWluZXJIZWlnaHQgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0eWxlLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZS5oZWlnaHQgPSBuZXdIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zdHlsZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxhc3RQYWdlWCA9IGV2ZW50LnBhZ2VYO1xuICAgICAgICAgICAgdGhpcy5sYXN0UGFnZVkgPSBldmVudC5wYWdlWTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZUVuZChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemluZykge1xuICAgICAgICAgICAgdGhpcy5yZXNpemluZyA9IGZhbHNlO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAncC11bnNlbGVjdGFibGUtdGV4dCcpO1xuICAgICAgICAgICAgdGhpcy5vblJlc2l6ZUVuZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRHbG9iYWxMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdnYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnREcmFnTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50RHJhZ0VuZExpc3RlbmVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXJzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jbG9zZU9uRXNjYXBlICYmIHRoaXMuY2xvc2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudERyYWdMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RHJhZ0VuZExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEVzY2FwZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50RHJhZ0xpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERyYWdMaXN0ZW5lciA9IHRoaXMub25EcmFnLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5kb2N1bWVudERyYWdMaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50RHJhZ0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudERyYWdMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuZG9jdW1lbnREcmFnTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERyYWdMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnREcmFnRW5kTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RHJhZ0VuZExpc3RlbmVyID0gdGhpcy5lbmREcmFnLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuZG9jdW1lbnREcmFnRW5kTGlzdGVuZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudERyYWdFbmRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnREcmFnRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5kb2N1bWVudERyYWdFbmRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RHJhZ0VuZExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25SZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVFbmRMaXN0ZW5lciA9IHRoaXMucmVzaXplRW5kLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5kb2N1bWVudFJlc2l6ZUVuZExpc3RlbmVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgJiYgdGhpcy5kb2N1bWVudFJlc2l6ZUVuZExpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5kb2N1bWVudFJlc2l6ZUVuZExpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplRW5kTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LndoaWNoID09IDI3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZENvbnRhaW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyID0gdGhpcy5jb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uVG9wKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc2V0QXR0cmlidXRlKHRoaXMuaWQsICcnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTW9kYWxpdHkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kYWwgJiYgdGhpcy5ibG9ja1Njcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzT25TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLndyYXBwZXIsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUuZW1pdCh7fSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TaG93LmVtaXQoe30pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRhaW5lckRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMubWF4aW1pemVkKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5tYXhpbWl6ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vZGFsKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmxvY2tTY3JvbGwpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgICAgIHRoaXMud3JhcHBlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fc3R5bGUgPSB0aGlzLm9yaWdpbmFsU3R5bGUgPyB7Li4udGhpcy5vcmlnaW5hbFN0eWxlfSA6IHt9O1xuICAgIH1cblxuICAgIGRlc3Ryb3lTdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZUFwcGVuZCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbnRhaW5lckRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVzdHJveVN0eWxlKCk7XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxGb2N1c1RyYXBNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRGlhbG9nLFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRGlhbG9nXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dialog/primeng-dialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dialog/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dialog/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZGlhbG9nL3ByaW1lbmctZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dialog/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './dialog';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kaWFsb2cvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlhbG9nJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/divider/divider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/divider/divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/divider/divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Divider {
+    constructor() {
+        this.layout = "horizontal";
+        this.type = "solid";
+    }
+    containerClass() {
+        return {
+            'p-divider p-component': true,
+            'p-divider-horizontal': this.layout === "horizontal",
+            'p-divider-vertical': this.layout === "vertical",
+            'p-divider-solid': this.type === "solid",
+            'p-divider-dashed': this.type === "dashed",
+            'p-divider-dotted': this.type === "dotted",
+            'p-divider-left': this.layout === 'horizontal' && (!this.align || this.align === 'left'),
+            'p-divider-center': (this.layout === 'horizontal' && this.align === 'center') || (this.layout === 'vertical' && (!this.align || this.align === 'center')),
+            'p-divider-right': this.layout === 'horizontal' && this.align === 'right',
+            'p-divider-top': this.layout === 'vertical' && (this.align === 'top'),
+            'p-divider-bottom': this.layout === 'vertical' && this.align === 'bottom'
+        };
+    }
+}
+Divider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Divider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Divider, selector: "p-divider", inputs: { styleClass: "styleClass", style: "style", layout: "layout", type: "type", align: "align" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-divider', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }] } });
+export class DividerModule {
+}
+DividerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DividerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, declarations: [Divider], imports: [CommonModule], exports: [Divider] });
+DividerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Divider],
+                    declarations: [Divider]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kaXZpZGVyL2RpdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBa0IvQyxNQUFNLE9BQU8sT0FBTztJQWhCcEI7UUFzQmEsV0FBTSxHQUFXLFlBQVksQ0FBQztRQUU5QixTQUFJLEdBQVcsT0FBTyxDQUFDO0tBbUJuQztJQWZHLGNBQWM7UUFDVixPQUFPO1lBQ0gsdUJBQXVCLEVBQUUsSUFBSTtZQUM3QixzQkFBc0IsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVk7WUFDcEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVO1lBQ2hELGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTztZQUN4QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDMUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO1lBQzFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1lBQ3hGLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDekosaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPO1lBQ3pFLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDO1lBQ3JFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUTtTQUM1RSxDQUFDO0lBQ04sQ0FBQzs7b0dBMUJRLE9BQU87d0ZBQVAsT0FBTyw4TEFkTjs7Ozs7O0tBTVQ7MkZBUVEsT0FBTztrQkFoQm5CLFNBQVM7K0JBQ0ksV0FBVyxZQUNYOzs7Ozs7S0FNVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7OEJBSVEsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7O0FBd0JWLE1BQU0sT0FBTyxhQUFhOzswR0FBYixhQUFhOzJHQUFiLGFBQWEsaUJBbENiLE9BQU8sYUE4Qk4sWUFBWSxhQTlCYixPQUFPOzJHQWtDUCxhQUFhLFlBSmIsQ0FBQyxZQUFZLENBQUM7MkZBSWQsYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWRpdmlkZXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiByb2xlPVwic2VwYXJhdG9yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaXZpZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2RpdmlkZXIuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRGl2aWRlciB7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgbGF5b3V0OiBzdHJpbmcgPSBcImhvcml6b250YWxcIjtcblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9IFwic29saWRcIjtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBzdHJpbmc7XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLWRpdmlkZXIgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtZGl2aWRlci1ob3Jpem9udGFsJzogdGhpcy5sYXlvdXQgPT09IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgICAgICAgJ3AtZGl2aWRlci12ZXJ0aWNhbCc6IHRoaXMubGF5b3V0ID09PSBcInZlcnRpY2FsXCIsXG4gICAgICAgICAgICAncC1kaXZpZGVyLXNvbGlkJzogdGhpcy50eXBlID09PSBcInNvbGlkXCIsXG4gICAgICAgICAgICAncC1kaXZpZGVyLWRhc2hlZCc6IHRoaXMudHlwZSA9PT0gXCJkYXNoZWRcIixcbiAgICAgICAgICAgICdwLWRpdmlkZXItZG90dGVkJzogdGhpcy50eXBlID09PSBcImRvdHRlZFwiLFxuICAgICAgICAgICAgJ3AtZGl2aWRlci1sZWZ0JzogdGhpcy5sYXlvdXQgPT09ICdob3Jpem9udGFsJyAmJiAoIXRoaXMuYWxpZ24gfHwgdGhpcy5hbGlnbiA9PT0gJ2xlZnQnKSxcbiAgICAgICAgICAgICdwLWRpdmlkZXItY2VudGVyJzogKHRoaXMubGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgJiYgdGhpcy5hbGlnbiA9PT0gJ2NlbnRlcicpIHx8ICh0aGlzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJyAmJiAoIXRoaXMuYWxpZ24gfHwgdGhpcy5hbGlnbiA9PT0gJ2NlbnRlcicpKSxcbiAgICAgICAgICAgICdwLWRpdmlkZXItcmlnaHQnOiB0aGlzLmxheW91dCA9PT0gJ2hvcml6b250YWwnICYmIHRoaXMuYWxpZ24gPT09ICdyaWdodCcsXG4gICAgICAgICAgICAncC1kaXZpZGVyLXRvcCc6IHRoaXMubGF5b3V0ID09PSAndmVydGljYWwnICYmICh0aGlzLmFsaWduID09PSAndG9wJyksXG4gICAgICAgICAgICAncC1kaXZpZGVyLWJvdHRvbSc6IHRoaXMubGF5b3V0ID09PSAndmVydGljYWwnICYmIHRoaXMuYWxpZ24gPT09ICdib3R0b20nXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtEaXZpZGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtEaXZpZGVyXVxufSlcbmV4cG9ydCBjbGFzcyBEaXZpZGVyTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/divider/primeng-divider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/divider/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/divider/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kaXZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2RpdmlkZXIvcHJpbWVuZy1kaXZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/divider/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/divider/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/divider/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './divider';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kaXZpZGVyL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpdmlkZXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dock/dock.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dock/dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dock/dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,146 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { RouterModule } from '@angular/router';
+import { RippleModule } from 'primeng/ripple';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+export class Dock {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.position = "bottom";
+        this.currentIndex = -3;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onListMouseLeave() {
+        this.currentIndex = -3;
+        this.cd.markForCheck();
+    }
+    onItemMouseEnter(index) {
+        this.currentIndex = index;
+        if (index === 1) {
+        }
+        this.cd.markForCheck();
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+    }
+    get containerClass() {
+        return {
+            ['p-dock p-component ' + ` p-dock-${this.position}`]: true
+        };
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !item.disabled;
+    }
+    itemClass(index) {
+        return {
+            'p-dock-item': true,
+            'p-dock-item-second-prev': (this.currentIndex - 2) === index,
+            'p-dock-item-prev': (this.currentIndex - 1) === index,
+            'p-dock-item-current': this.currentIndex === index,
+            'p-dock-item-next': (this.currentIndex + 1) === index,
+            'p-dock-item-second-next': (this.currentIndex + 2) === index
+        };
+    }
+}
+Dock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Dock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dock, selector: "p-dock", inputs: { id: "id", style: "style", styleClass: "styleClass", model: "model", position: "position" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dock', template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class DockModule {
+}
+DockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, declarations: [Dock], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Dock, SharedModule, TooltipModule, RouterModule] });
+DockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], SharedModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Dock, SharedModule, TooltipModule, RouterModule],
+                    declarations: [Dock]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kb2NrL2RvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBaUMsZUFBZSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMvTSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQW1DaEQsTUFBTSxPQUFPLElBQUk7SUFrQmIsWUFBb0IsRUFBYyxFQUFTLEVBQXFCO1FBQTVDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQVZ2RCxVQUFLLEdBQVUsSUFBSSxDQUFDO1FBRXBCLGFBQVEsR0FBVyxRQUFRLENBQUM7UUFTakMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDbkIsS0FBSyxNQUFNO29CQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDdEMsTUFBTTtnQkFFTjtvQkFDSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3RDLE1BQU07YUFD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bnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIENvbnRlbnRDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZG9jaycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJpZFwiIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZG9jay1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDx1bCAjbGlzdCBjbGFzcz1cInAtZG9jay1saXN0XCIgcm9sZT1cIm1lbnVcIiAobW91c2VsZWF2ZSk9XCJvbkxpc3RNb3VzZUxlYXZlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCIgW25nQ2xhc3NdPVwiaXRlbUNsYXNzKGkpXCIgKG1vdXNlZW50ZXIpPVwib25JdGVtTW91c2VFbnRlcihpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpc0NsaWNrYWJsZVJvdXRlckxpbmsoaXRlbSk7IGVsc2UgZWxzZUJsb2NrXCIgcFJpcHBsZSBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzppdGVtLmRpc2FibGVkfVwiIGNsYXNzPVwicC1kb2NrLWFjdGlvblwiICByb2xlPVwibWVudWl0ZW1cIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiaXRlbS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCIgKGtleWRvd24uZW50ZXIpPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgfHwgcmVhZG9ubHkgPyBudWxsIDogKGl0ZW0udGFiaW5kZXggPyBpdGVtLnRhYmluZGV4IDogJzAnKVwiICBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnRcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIiBbcHJlc2VydmVGcmFnbWVudF09XCJpdGVtLnByZXNlcnZlRnJhZ21lbnRcIiBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cIml0ZW0uc2tpcExvY2F0aW9uQ2hhbmdlXCIgW3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCIgW3N0YXRlXT1cIml0ZW0uc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRvY2stYWN0aW9uLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvbiAmJiAhaXRlbVRlbXBsYXRlXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW3Rvb2x0aXBQb3NpdGlvbl09XCJpdGVtLnRvb2x0aXBQb3NpdGlvblwiIFthdHRyLmhyZWZdPVwiaXRlbS51cmx8fG51bGxcIiBjbGFzcz1cInAtZG9jay1hY3Rpb25cIiAgcm9sZT1cIm1lbnVpdGVtXCIgcFJpcHBsZSAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiICBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIiAoa2V5ZG93bi5lbnRlcik9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIGkpXCIgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWR8fChpICE9PSBhY3RpdmVJbmRleCAmJiByZWFkb25seSkgPyBudWxsIDogKGl0ZW0udGFiaW5kZXggPyBpdGVtLnRhYmluZGV4IDogJzAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZG9jay1hY3Rpb24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uICYmICFpdGVtVGVtcGxhdGVcIiBbbmdDbGFzc109XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9kb2NrLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIERvY2sgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbW9kZWw6IGFueVtdID0gbnVsbDtcblxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiBzdHJpbmcgPSBcImJvdHRvbVwiO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gLTM7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkxpc3RNb3VzZUxlYXZlKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IC0zO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uSXRlbU1vdXNlRW50ZXIoaW5kZXgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcblxuICAgICAgICBpZiAoaW5kZXggPT09IDEpIHtcblxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhlLCBpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7IG9yaWdpbmFsRXZlbnQ6IGUsIGl0ZW0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbJ3AtZG9jayBwLWNvbXBvbmVudCAnICsgYCBwLWRvY2stJHt0aGlzLnBvc2l0aW9ufWBdOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNDbGlja2FibGVSb3V0ZXJMaW5rKGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGl0ZW1DbGFzcyhpbmRleCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtZG9jay1pdGVtJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLWRvY2staXRlbS1zZWNvbmQtcHJldic6ICh0aGlzLmN1cnJlbnRJbmRleCAtIDIpID09PSBpbmRleCxcbiAgICAgICAgICAgICdwLWRvY2staXRlbS1wcmV2JzogKHRoaXMuY3VycmVudEluZGV4IC0gMSkgPT09IGluZGV4LFxuICAgICAgICAgICAgJ3AtZG9jay1pdGVtLWN1cnJlbnQnOiB0aGlzLmN1cnJlbnRJbmRleCA9PT0gaW5kZXgsXG4gICAgICAgICAgICAncC1kb2NrLWl0ZW0tbmV4dCc6ICh0aGlzLmN1cnJlbnRJbmRleCArIDEpID09PSBpbmRleCxcbiAgICAgICAgICAgICdwLWRvY2staXRlbS1zZWNvbmQtbmV4dCc6ICh0aGlzLmN1cnJlbnRJbmRleCArIDIpID09PSBpbmRleFxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtEb2NrLCBTaGFyZWRNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIFJvdXRlck1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRG9ja11cbn0pXG5leHBvcnQgY2xhc3MgRG9ja01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dock/primeng-dock.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dock/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dock/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2RvY2svcHJpbWVuZy1kb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dock/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dock/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dock/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './dock';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kb2NrL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvY2snO1xuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/dom/connectedoverlayscrollhandler.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dom/connectedoverlayscrollhandler.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dom/connectedoverlayscrollhandler.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+import { DomHandler } from './domhandler';
+export class ConnectedOverlayScrollHandler {
+    constructor(element, listener = () => { }) {
+        this.element = element;
+        this.listener = listener;
+    }
+    bindScrollListener() {
+        this.scrollableParents = DomHandler.getScrollableParents(this.element);
+        for (let i = 0; i < this.scrollableParents.length; i++) {
+            this.scrollableParents[i].addEventListener('scroll', this.listener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollableParents) {
+            for (let i = 0; i < this.scrollableParents.length; i++) {
+                this.scrollableParents[i].removeEventListener('scroll', this.listener);
+            }
+        }
+    }
+    destroy() {
+        this.unbindScrollListener();
+        this.element = null;
+        this.listener = null;
+        this.scrollableParents = null;
+    }
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGVkb3ZlcmxheXNjcm9sbGhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZG9tL2Nvbm5lY3RlZG92ZXJsYXlzY3JvbGxoYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLDZCQUE2QjtJQVF0QyxZQUFZLE9BQVksRUFBRSxXQUFnQixHQUFHLEVBQUUsR0FBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFFO1NBQ0o7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICcuL2RvbWhhbmRsZXInO1xuXG5leHBvcnQgY2xhc3MgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIge1xuXG4gICAgZWxlbWVudDogYW55O1xuXG4gICAgbGlzdGVuZXI6IGFueTtcblxuICAgIHNjcm9sbGFibGVQYXJlbnRzOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBhbnksIGxpc3RlbmVyOiBhbnkgPSAoKSA9PiB7fSkge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnNjcm9sbGFibGVQYXJlbnRzID0gRG9tSGFuZGxlci5nZXRTY3JvbGxhYmxlUGFyZW50cyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nyb2xsYWJsZVBhcmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsYWJsZVBhcmVudHNbaV0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5saXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsYWJsZVBhcmVudHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY3JvbGxhYmxlUGFyZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYWJsZVBhcmVudHNbaV0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5saXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMubGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcm9sbGFibGVQYXJlbnRzID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dom/domhandler.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dom/domhandler.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dom/domhandler.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,495 @@
+/**
+ * @dynamic is for runtime initializing DomHandler.browser
+ *
+ * If delete below comment, we can see this error message:
+ *  Metadata collected contains an error that will be reported at runtime:
+ *  Only initialized variables and constants can be referenced
+ *  because the value of this variable is needed by the template compiler.
+ */
+// @dynamic
+export class DomHandler {
+    static addClass(element, className) {
+        if (element.classList)
+            element.classList.add(className);
+        else
+            element.className += ' ' + className;
+    }
+    static addMultipleClasses(element, className) {
+        if (element.classList) {
+            let styles = className.trim().split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.classList.add(styles[i]);
+            }
+        }
+        else {
+            let styles = className.split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.className += ' ' + styles[i];
+            }
+        }
+    }
+    static removeClass(element, className) {
+        if (element.classList)
+            element.classList.remove(className);
+        else
+            element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
+    }
+    static hasClass(element, className) {
+        if (element.classList)
+            return element.classList.contains(className);
+        else
+            return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
+    }
+    static siblings(element) {
+        return Array.prototype.filter.call(element.parentNode.children, function (child) {
+            return child !== element;
+        });
+    }
+    static find(element, selector) {
+        return Array.from(element.querySelectorAll(selector));
+    }
+    static findSingle(element, selector) {
+        if (element) {
+            return element.querySelector(selector);
+        }
+        return null;
+    }
+    static index(element) {
+        let children = element.parentNode.childNodes;
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static indexWithinGroup(element, attributeName) {
+        let children = element.parentNode ? element.parentNode.childNodes : [];
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static relativePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        const targetHeight = target.offsetHeight;
+        const targetOffset = target.getBoundingClientRect();
+        const viewport = this.getViewport();
+        let top, left;
+        if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {
+            top = -1 * (elementDimensions.height);
+            element.style.transformOrigin = 'bottom';
+            if (targetOffset.top + top < 0) {
+                top = -1 * targetOffset.top;
+            }
+        }
+        else {
+            top = targetHeight;
+            element.style.transformOrigin = 'top';
+        }
+        if (elementDimensions.width > viewport.width) {
+            // element wider then viewport and cannot fit on screen (align at left side of viewport)
+            left = targetOffset.left * -1;
+        }
+        else if ((targetOffset.left + elementDimensions.width) > viewport.width) {
+            // element wider then viewport but can be fit on screen (align at right side of viewport)
+            left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
+        }
+        else {
+            // element fits on screen (align with target)
+            left = 0;
+        }
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static absolutePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        let elementOuterHeight = elementDimensions.height;
+        let elementOuterWidth = elementDimensions.width;
+        let targetOuterHeight = target.offsetHeight;
+        let targetOuterWidth = target.offsetWidth;
+        let targetOffset = target.getBoundingClientRect();
+        let windowScrollTop = this.getWindowScrollTop();
+        let windowScrollLeft = this.getWindowScrollLeft();
+        let viewport = this.getViewport();
+        let top, left;
+        if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
+            top = targetOffset.top + windowScrollTop - elementOuterHeight;
+            element.style.transformOrigin = 'bottom';
+            if (top < 0) {
+                top = windowScrollTop;
+            }
+        }
+        else {
+            top = targetOuterHeight + targetOffset.top + windowScrollTop;
+            element.style.transformOrigin = 'top';
+        }
+        if (targetOffset.left + elementOuterWidth > viewport.width)
+            left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
+        else
+            left = targetOffset.left + windowScrollLeft;
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static getParents(element, parents = []) {
+        return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));
+    }
+    static getScrollableParents(element) {
+        let scrollableParents = [];
+        if (element) {
+            let parents = this.getParents(element);
+            const overflowRegex = /(auto|scroll)/;
+            const overflowCheck = (node) => {
+                let styleDeclaration = window['getComputedStyle'](node, null);
+                return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));
+            };
+            for (let parent of parents) {
+                let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];
+                if (scrollSelectors) {
+                    let selectors = scrollSelectors.split(',');
+                    for (let selector of selectors) {
+                        let el = this.findSingle(parent, selector);
+                        if (el && overflowCheck(el)) {
+                            scrollableParents.push(el);
+                        }
+                    }
+                }
+                if (parent.nodeType !== 9 && overflowCheck(parent)) {
+                    scrollableParents.push(parent);
+                }
+            }
+        }
+        return scrollableParents;
+    }
+    static getHiddenElementOuterHeight(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementHeight = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementHeight;
+    }
+    static getHiddenElementOuterWidth(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementWidth = element.offsetWidth;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementWidth;
+    }
+    static getHiddenElementDimensions(element) {
+        let dimensions = {};
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        dimensions.width = element.offsetWidth;
+        dimensions.height = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return dimensions;
+    }
+    static scrollInView(container, item) {
+        let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');
+        let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;
+        let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');
+        let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;
+        let containerRect = container.getBoundingClientRect();
+        let itemRect = item.getBoundingClientRect();
+        let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;
+        let scroll = container.scrollTop;
+        let elementHeight = container.clientHeight;
+        let itemHeight = this.getOuterHeight(item);
+        if (offset < 0) {
+            container.scrollTop = scroll + offset;
+        }
+        else if ((offset + itemHeight) > elementHeight) {
+            container.scrollTop = scroll + offset - elementHeight + itemHeight;
+        }
+    }
+    static fadeIn(element, duration) {
+        element.style.opacity = 0;
+        let last = +new Date();
+        let opacity = 0;
+        let tick = function () {
+            opacity = +element.style.opacity.replace(",", ".") + (new Date().getTime() - last) / duration;
+            element.style.opacity = opacity;
+            last = +new Date();
+            if (+opacity < 1) {
+                (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
+            }
+        };
+        tick();
+    }
+    static fadeOut(element, ms) {
+        var opacity = 1, interval = 50, duration = ms, gap = interval / duration;
+        let fading = setInterval(() => {
+            opacity = opacity - gap;
+            if (opacity <= 0) {
+                opacity = 0;
+                clearInterval(fading);
+            }
+            element.style.opacity = opacity;
+        }, interval);
+    }
+    static getWindowScrollTop() {
+        let doc = document.documentElement;
+        return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
+    }
+    static getWindowScrollLeft() {
+        let doc = document.documentElement;
+        return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
+    }
+    static matches(element, selector) {
+        var p = Element.prototype;
+        var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {
+            return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
+        };
+        return f.call(element, selector);
+    }
+    static getOuterWidth(el, margin) {
+        let width = el.offsetWidth;
+        if (margin) {
+            let style = getComputedStyle(el);
+            width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+        }
+        return width;
+    }
+    static getHorizontalPadding(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+    }
+    static getHorizontalMargin(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+    }
+    static innerWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static width(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static getInnerHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
+        return height;
+    }
+    static getOuterHeight(el, margin) {
+        let height = el.offsetHeight;
+        if (margin) {
+            let style = getComputedStyle(el);
+            height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
+        }
+        return height;
+    }
+    static getHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
+        return height;
+    }
+    static getWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
+        return width;
+    }
+    static getViewport() {
+        let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;
+        return { width: w, height: h };
+    }
+    static getOffset(el) {
+        var rect = el.getBoundingClientRect();
+        return {
+            top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
+            left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),
+        };
+    }
+    static replaceElementWith(element, replacementElement) {
+        let parentNode = element.parentNode;
+        if (!parentNode)
+            throw `Can't replace element`;
+        return parentNode.replaceChild(replacementElement, element);
+    }
+    static getUserAgent() {
+        return navigator.userAgent;
+    }
+    static isIE() {
+        var ua = window.navigator.userAgent;
+        var msie = ua.indexOf('MSIE ');
+        if (msie > 0) {
+            // IE 10 or older => return version number
+            return true;
+        }
+        var trident = ua.indexOf('Trident/');
+        if (trident > 0) {
+            // IE 11 => return version number
+            var rv = ua.indexOf('rv:');
+            return true;
+        }
+        var edge = ua.indexOf('Edge/');
+        if (edge > 0) {
+            // Edge (IE 12+) => return version number
+            return true;
+        }
+        // other browser
+        return false;
+    }
+    static isIOS() {
+        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];
+    }
+    static isAndroid() {
+        return /(android)/i.test(navigator.userAgent);
+    }
+    static isTouchDevice() {
+        return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));
+    }
+    static appendChild(element, target) {
+        if (this.isElement(target))
+            target.appendChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.appendChild(element);
+        else
+            throw 'Cannot append ' + target + ' to ' + element;
+    }
+    static removeChild(element, target) {
+        if (this.isElement(target))
+            target.removeChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.removeChild(element);
+        else
+            throw 'Cannot remove ' + element + ' from ' + target;
+    }
+    static removeElement(element) {
+        if (!('remove' in Element.prototype))
+            element.parentNode.removeChild(element);
+        else
+            element.remove();
+    }
+    static isElement(obj) {
+        return (typeof HTMLElement === "object" ? obj instanceof HTMLElement :
+            obj && typeof obj === "object" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === "string");
+    }
+    static calculateScrollbarWidth(el) {
+        if (el) {
+            let style = getComputedStyle(el);
+            return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));
+        }
+        else {
+            if (this.calculatedScrollbarWidth !== null)
+                return this.calculatedScrollbarWidth;
+            let scrollDiv = document.createElement("div");
+            scrollDiv.className = "p-scrollbar-measure";
+            document.body.appendChild(scrollDiv);
+            let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+            document.body.removeChild(scrollDiv);
+            this.calculatedScrollbarWidth = scrollbarWidth;
+            return scrollbarWidth;
+        }
+    }
+    static calculateScrollbarHeight() {
+        if (this.calculatedScrollbarHeight !== null)
+            return this.calculatedScrollbarHeight;
+        let scrollDiv = document.createElement("div");
+        scrollDiv.className = "p-scrollbar-measure";
+        document.body.appendChild(scrollDiv);
+        let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;
+        document.body.removeChild(scrollDiv);
+        this.calculatedScrollbarWidth = scrollbarHeight;
+        return scrollbarHeight;
+    }
+    static invokeElementMethod(element, methodName, args) {
+        element[methodName].apply(element, args);
+    }
+    static clearSelection() {
+        if (window.getSelection) {
+            if (window.getSelection().empty) {
+                window.getSelection().empty();
+            }
+            else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
+                window.getSelection().removeAllRanges();
+            }
+        }
+        else if (document['selection'] && document['selection'].empty) {
+            try {
+                document['selection'].empty();
+            }
+            catch (error) {
+                //ignore IE bug
+            }
+        }
+    }
+    static getBrowser() {
+        if (!this.browser) {
+            let matched = this.resolveUserAgent();
+            this.browser = {};
+            if (matched.browser) {
+                this.browser[matched.browser] = true;
+                this.browser['version'] = matched.version;
+            }
+            if (this.browser['chrome']) {
+                this.browser['webkit'] = true;
+            }
+            else if (this.browser['webkit']) {
+                this.browser['safari'] = true;
+            }
+        }
+        return this.browser;
+    }
+    static resolveUserAgent() {
+        let ua = navigator.userAgent.toLowerCase();
+        let match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+            /(msie) ([\w.]+)/.exec(ua) ||
+            ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+            [];
+        return {
+            browser: match[1] || "",
+            version: match[2] || "0"
+        };
+    }
+    static isInteger(value) {
+        if (Number.isInteger) {
+            return Number.isInteger(value);
+        }
+        else {
+            return typeof value === "number" && isFinite(value) && Math.floor(value) === value;
+        }
+    }
+    static isHidden(element) {
+        return element.offsetParent === null;
+    }
+    static getFocusableElements(element) {
+        let focusableElements = DomHandler.find(element, `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]:not(.p-disabled))`);
+        let visibleFocusableElements = [];
+        for (let focusableElement of focusableElements) {
+            if (getComputedStyle(focusableElement).display != "none" && getComputedStyle(focusableElement).visibility != "hidden")
+                visibleFocusableElements.push(focusableElement);
+        }
+        return visibleFocusableElements;
+    }
+    static generateZIndex() {
+        this.zindex = this.zindex || 999;
+        return ++this.zindex;
+    }
+}
+DomHandler.zindex = 1000;
+DomHandler.calculatedScrollbarWidth = null;
+DomHandler.calculatedScrollbarHeight = null;
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9taGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kb20vZG9taGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBQ0gsV0FBVztBQUNYLE1BQU0sT0FBTyxVQUFVO0lBVVosTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFZLEVBQUUsU0FBaUI7UUFDbEQsSUFBSSxPQUFPLENBQUMsU0FBUztZQUNqQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7WUFFakMsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBWSxFQUFFLFNBQWlCO1FBQzVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLE1BQU0sR0FBYSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztTQUVKO2FBQ0k7WUFDRCxJQUFJLE1BQU0sR0FBYSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxPQUFPLENBQUMsU0FBUyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEM7U0FDSjtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMs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QkFBZ0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0wsT0FBTyx3QkFBd0IsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFFLEdBQUcsQ0FBQztRQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDOztBQWxsQmEsaUJBQU0sR0FBVyxJQUFJLENBQUM7QUFFckIsbUNBQXdCLEdBQVcsSUFBSSxDQUFDO0FBRXhDLG9DQUF5QixHQUFXLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGR5bmFtaWMgaXMgZm9yIHJ1bnRpbWUgaW5pdGlhbGl6aW5nIERvbUhhbmRsZXIuYnJvd3NlclxuICpcbiAqIElmIGRlbGV0ZSBiZWxvdyBjb21tZW50LCB3ZSBjYW4gc2VlIHRoaXMgZXJyb3IgbWVzc2FnZTpcbiAqICBNZXRhZGF0YSBjb2xsZWN0ZWQgY29udGFpbnMgYW4gZXJyb3IgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGF0IHJ1bnRpbWU6XG4gKiAgT25seSBpbml0aWFsaXplZCB2YXJpYWJsZXMgYW5kIGNvbnN0YW50cyBjYW4gYmUgcmVmZXJlbmNlZFxuICogIGJlY2F1c2UgdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgbmVlZGVkIGJ5IHRoZSB0ZW1wbGF0ZSBjb21waWxlci5cbiAqL1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBEb21IYW5kbGVyIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgemluZGV4OiBudW1iZXIgPSAxMDAwO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2FsY3VsYXRlZFNjcm9sbGJhcldpZHRoOiBudW1iZXIgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2FsY3VsYXRlZFNjcm9sbGJhckhlaWdodDogbnVtYmVyID0gbnVsbDtcblxuICAgIHByaXZhdGUgc3RhdGljIGJyb3dzZXI6IGFueTtcblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQ2xhc3MoZWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpXG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gJyAnICsgY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkTXVsdGlwbGVDbGFzc2VzKGVsZW1lbnQ6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBsZXQgc3R5bGVzOiBzdHJpbmdbXSA9IGNsYXNzTmFtZS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0eWxlc1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzdHlsZXM6IHN0cmluZ1tdID0gY2xhc3NOYW1lLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lICs9ICcgJyArIHN0eWxlc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2xhc3MoZWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpXG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhefFxcXFxiKScgKyBjbGFzc05hbWUuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKFxcXFxifCQpJywgJ2dpJyksICcgJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNDbGFzcyhlbGVtZW50OiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdClcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCgnKF58ICknICsgY2xhc3NOYW1lICsgJyggfCQpJywgJ2dpJykudGVzdChlbGVtZW50LmNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaWJsaW5ncyhlbGVtZW50OiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGVsZW1lbnQucGFyZW50Tm9kZS5jaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQgIT09IGVsZW1lbnQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZChlbGVtZW50OiBhbnksIHNlbGVjdG9yOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZFNpbmdsZShlbGVtZW50OiBhbnksIHNlbGVjdG9yOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbmRleChlbGVtZW50OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSBlbGVtZW50LnBhcmVudE5vZGUuY2hpbGROb2RlcztcbiAgICAgICAgbGV0IG51bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXSA9PSBlbGVtZW50KSByZXR1cm4gbnVtO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLm5vZGVUeXBlID09IDEpIG51bSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluZGV4V2l0aGluR3JvdXAoZWxlbWVudDogYW55LCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSBlbGVtZW50LnBhcmVudE5vZGUgPyBlbGVtZW50LnBhcmVudE5vZGUuY2hpbGROb2RlcyA6IFtdO1xuICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldID09IGVsZW1lbnQpIHJldHVybiBudW07XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uYXR0cmlidXRlcyAmJiBjaGlsZHJlbltpXS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdICYmIGNoaWxkcmVuW2ldLm5vZGVUeXBlID09IDEpIG51bSsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbGF0aXZlUG9zaXRpb24oZWxlbWVudDogYW55LCB0YXJnZXQ6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgZWxlbWVudERpbWVuc2lvbnMgPSBlbGVtZW50Lm9mZnNldFBhcmVudCA/IHsgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHQgfSA6IHRoaXMuZ2V0SGlkZGVuRWxlbWVudERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IHRhcmdldC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHRhcmdldE9mZnNldCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLmdldFZpZXdwb3J0KCk7XG4gICAgICAgIGxldCB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyO1xuXG4gICAgICAgIGlmICgodGFyZ2V0T2Zmc2V0LnRvcCArIHRhcmdldEhlaWdodCArIGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCkgPiB2aWV3cG9ydC5oZWlnaHQpIHtcbiAgICAgICAgICAgIHRvcCA9IC0xICogKGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCk7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNldC50b3AgKyB0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgdG9wID0gLTEgKiB0YXJnZXRPZmZzZXQudG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9wID0gdGFyZ2V0SGVpZ2h0O1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbGVtZW50RGltZW5zaW9ucy53aWR0aCA+IHZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAvLyBlbGVtZW50IHdpZGVyIHRoZW4gdmlld3BvcnQgYW5kIGNhbm5vdCBmaXQgb24gc2NyZWVuIChhbGlnbiBhdCBsZWZ0IHNpZGUgb2Ygdmlld3BvcnQpXG4gICAgICAgICAgICBsZWZ0ID0gdGFyZ2V0T2Zmc2V0LmxlZnQgKiAtMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgodGFyZ2V0T2Zmc2V0LmxlZnQgKyBlbGVtZW50RGltZW5zaW9ucy53aWR0aCkgPiB2aWV3cG9ydC53aWR0aCkge1xuICAgICAgICAgICAgLy8gZWxlbWVudCB3aWRlciB0aGVuIHZpZXdwb3J0IGJ1dCBjYW4gYmUgZml0IG9uIHNjcmVlbiAoYWxpZ24gYXQgcmlnaHQgc2lkZSBvZiB2aWV3cG9ydClcbiAgICAgICAgICAgIGxlZnQgPSAodGFyZ2V0T2Zmc2V0LmxlZnQgKyBlbGVtZW50RGltZW5zaW9ucy53aWR0aCAtIHZpZXdwb3J0LndpZHRoKSAqIC0xO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gZWxlbWVudCBmaXRzIG9uIHNjcmVlbiAoYWxpZ24gd2l0aCB0YXJnZXQpXG4gICAgICAgICAgICBsZWZ0ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcbiAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhYnNvbHV0ZVBvc2l0aW9uKGVsZW1lbnQ6IGFueSwgdGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IGVsZW1lbnREaW1lbnNpb25zID0gZWxlbWVudC5vZmZzZXRQYXJlbnQgPyB7IHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IH0gOiB0aGlzLmdldEhpZGRlbkVsZW1lbnREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgICAgICBsZXQgZWxlbWVudE91dGVySGVpZ2h0ID0gZWxlbWVudERpbWVuc2lvbnMuaGVpZ2h0O1xuICAgICAgICBsZXQgZWxlbWVudE91dGVyV2lkdGggPSBlbGVtZW50RGltZW5zaW9ucy53aWR0aDtcbiAgICAgICAgbGV0IHRhcmdldE91dGVySGVpZ2h0ID0gdGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGV0IHRhcmdldE91dGVyV2lkdGggPSB0YXJnZXQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCB0YXJnZXRPZmZzZXQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCB3aW5kb3dTY3JvbGxUb3AgPSB0aGlzLmdldFdpbmRvd1Njcm9sbFRvcCgpO1xuICAgICAgICBsZXQgd2luZG93U2Nyb2xsTGVmdCA9IHRoaXMuZ2V0V2luZG93U2Nyb2xsTGVmdCgpO1xuICAgICAgICBsZXQgdmlld3BvcnQgPSB0aGlzLmdldFZpZXdwb3J0KCk7XG4gICAgICAgIGxldCB0b3AsIGxlZnQ7XG5cbiAgICAgICAgaWYgKHRhcmdldE9mZnNldC50b3AgKyB0YXJnZXRPdXRlckhlaWdodCArIGVsZW1lbnRPdXRlckhlaWdodCA+IHZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICAgICAgdG9wID0gdGFyZ2V0T2Zmc2V0LnRvcCArIHdpbmRvd1Njcm9sbFRvcCAtIGVsZW1lbnRPdXRlckhlaWdodDtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gJ2JvdHRvbSc7XG5cbiAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgdG9wID0gd2luZG93U2Nyb2xsVG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9wID0gdGFyZ2V0T3V0ZXJIZWlnaHQgKyB0YXJnZXRPZmZzZXQudG9wICsgd2luZG93U2Nyb2xsVG9wO1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRPZmZzZXQubGVmdCArIGVsZW1lbnRPdXRlcldpZHRoID4gdmlld3BvcnQud2lkdGgpXG4gICAgICAgICAgICBsZWZ0ID0gTWF0aC5tYXgoMCwgdGFyZ2V0T2Zmc2V0LmxlZnQgKyB3aW5kb3dTY3JvbGxMZWZ0ICsgdGFyZ2V0T3V0ZXJXaWR0aCAtIGVsZW1lbnRPdXRlcldpZHRoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGVmdCA9IHRhcmdldE9mZnNldC5sZWZ0ICsgd2luZG93U2Nyb2xsTGVmdDtcblxuICAgICAgICBlbGVtZW50LnN0eWxlLnRvcCA9IHRvcCArICdweCc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQYXJlbnRzKGVsZW1lbnQ6IGFueSwgcGFyZW50czphbnkgPSBbXSk6IGFueSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50WydwYXJlbnROb2RlJ10gPT09IG51bGwgPyBwYXJlbnRzIDogdGhpcy5nZXRQYXJlbnRzKGVsZW1lbnQucGFyZW50Tm9kZSwgcGFyZW50cy5jb25jYXQoW2VsZW1lbnQucGFyZW50Tm9kZV0pKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U2Nyb2xsYWJsZVBhcmVudHMoZWxlbWVudDogYW55KSB7XG4gICAgICAgIGxldCBzY3JvbGxhYmxlUGFyZW50cyA9IFtdO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50cyA9IHRoaXMuZ2V0UGFyZW50cyhlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93UmVnZXggPSAvKGF1dG98c2Nyb2xsKS87XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvd0NoZWNrID0gKG5vZGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZURlY2xhcmF0aW9uID0gd2luZG93WydnZXRDb21wdXRlZFN0eWxlJ10obm9kZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93UmVnZXgudGVzdChzdHlsZURlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ292ZXJmbG93JykpIHx8IG92ZXJmbG93UmVnZXgudGVzdChzdHlsZURlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ292ZXJmbG93WCcpKSB8fCBvdmVyZmxvd1JlZ2V4LnRlc3Qoc3R5bGVEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCdvdmVyZmxvd1knKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBwYXJlbnQgb2YgcGFyZW50cykge1xuICAgICAgICAgICAgICAgIGxldCBzY3JvbGxTZWxlY3RvcnMgPSBwYXJlbnQubm9kZVR5cGUgPT09IDEgJiYgcGFyZW50LmRhdGFzZXRbJ3Njcm9sbHNlbGVjdG9ycyddO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxTZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdG9ycyA9IHNjcm9sbFNlbGVjdG9ycy5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZWxlY3RvciBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbCA9IHRoaXMuZmluZFNpbmdsZShwYXJlbnQsIHNlbGVjdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbCAmJiBvdmVyZmxvd0NoZWNrKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVQYXJlbnRzLnB1c2goZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5ub2RlVHlwZSAhPT0gOSAmJiBvdmVyZmxvd0NoZWNrKHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZVBhcmVudHMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzY3JvbGxhYmxlUGFyZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEhpZGRlbkVsZW1lbnRPdXRlckhlaWdodChlbGVtZW50OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgbGV0IGVsZW1lbnRIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG5cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRIaWRkZW5FbGVtZW50T3V0ZXJXaWR0aChlbGVtZW50OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgbGV0IGVsZW1lbnRXaWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuXG4gICAgICAgIHJldHVybiBlbGVtZW50V2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRIaWRkZW5FbGVtZW50RGltZW5zaW9ucyhlbGVtZW50OiBhbnkpOiBhbnkge1xuICAgICAgICBsZXQgZGltZW5zaW9uczogYW55ID0ge307XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICBkaW1lbnNpb25zLndpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgZGltZW5zaW9ucy5oZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG5cbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzY3JvbGxJblZpZXcoY29udGFpbmVyLCBpdGVtKSB7XG4gICAgICAgIGxldCBib3JkZXJUb3BWYWx1ZTogc3RyaW5nID0gZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlclRvcFdpZHRoJyk7XG4gICAgICAgIGxldCBib3JkZXJUb3A6IG51bWJlciA9IGJvcmRlclRvcFZhbHVlID8gcGFyc2VGbG9hdChib3JkZXJUb3BWYWx1ZSkgOiAwO1xuICAgICAgICBsZXQgcGFkZGluZ1RvcFZhbHVlOiBzdHJpbmcgPSBnZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lcikuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZ1RvcCcpO1xuICAgICAgICBsZXQgcGFkZGluZ1RvcDogbnVtYmVyID0gcGFkZGluZ1RvcFZhbHVlID8gcGFyc2VGbG9hdChwYWRkaW5nVG9wVmFsdWUpIDogMDtcbiAgICAgICAgbGV0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBpdGVtUmVjdCA9IGl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSAoaXRlbVJlY3QudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApIC0gKGNvbnRhaW5lclJlY3QudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApIC0gYm9yZGVyVG9wIC0gcGFkZGluZ1RvcDtcbiAgICAgICAgbGV0IHNjcm9sbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgIGxldCBlbGVtZW50SGVpZ2h0ID0gY29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgbGV0IGl0ZW1IZWlnaHQgPSB0aGlzLmdldE91dGVySGVpZ2h0KGl0ZW0pO1xuXG4gICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc2Nyb2xsICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChvZmZzZXQgKyBpdGVtSGVpZ2h0KSA+IGVsZW1lbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzY3JvbGwgKyBvZmZzZXQgLSBlbGVtZW50SGVpZ2h0ICsgaXRlbUhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmFkZUluKGVsZW1lbnQsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gMDtcblxuICAgICAgICBsZXQgbGFzdCA9ICtuZXcgRGF0ZSgpO1xuICAgICAgICBsZXQgb3BhY2l0eSA9IDA7XG4gICAgICAgIGxldCB0aWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgb3BhY2l0eSA9ICtlbGVtZW50LnN0eWxlLm9wYWNpdHkucmVwbGFjZShcIixcIiwgXCIuXCIpICsgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGFzdCkgLyBkdXJhdGlvbjtcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgICAgICAgICBsYXN0ID0gK25ldyBEYXRlKCk7XG5cbiAgICAgICAgICAgIGlmICgrb3BhY2l0eSA8IDEpIHtcbiAgICAgICAgICAgICAgICAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSAmJiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaykpIHx8IHNldFRpbWVvdXQodGljaywgMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRpY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZhZGVPdXQoZWxlbWVudCwgbXMpIHtcbiAgICAgICAgdmFyIG9wYWNpdHkgPSAxLFxuICAgICAgICAgICAgaW50ZXJ2YWwgPSA1MCxcbiAgICAgICAgICAgIGR1cmF0aW9uID0gbXMsXG4gICAgICAgICAgICBnYXAgPSBpbnRlcnZhbCAvIGR1cmF0aW9uO1xuXG4gICAgICAgIGxldCBmYWRpbmcgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBvcGFjaXR5ID0gb3BhY2l0eSAtIGdhcDtcblxuICAgICAgICAgICAgaWYgKG9wYWNpdHkgPD0gMCkge1xuICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAwO1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoZmFkaW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgICAgICAgfSwgaW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V2luZG93U2Nyb2xsVG9wKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiAod2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvYy5zY3JvbGxUb3ApIC0gKGRvYy5jbGllbnRUb3AgfHwgMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRXaW5kb3dTY3JvbGxMZWZ0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiAod2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvYy5zY3JvbGxMZWZ0KSAtIChkb2MuY2xpZW50TGVmdCB8fCAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICB2YXIgcCA9IEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgICB2YXIgZiA9IHBbJ21hdGNoZXMnXSB8fCBwLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBwWydtb3pNYXRjaGVzU2VsZWN0b3InXSB8fCBwWydtc01hdGNoZXNTZWxlY3RvciddIHx8IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gW10uaW5kZXhPZi5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocyksIHRoaXMpICE9PSAtMTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGYuY2FsbChlbGVtZW50LCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPdXRlcldpZHRoKGVsLCBtYXJnaW4/KSB7XG4gICAgICAgIGxldCB3aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xuXG4gICAgICAgIGlmIChtYXJnaW4pIHtcbiAgICAgICAgICAgIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAgICAgICAgICAgd2lkdGggKz0gcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5MZWZ0KSArIHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luUmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SG9yaXpvbnRhbFBhZGRpbmcoZWwpIHtcbiAgICAgICAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdMZWZ0KSArIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ1JpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEhvcml6b250YWxNYXJnaW4oZWwpIHtcbiAgICAgICAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpbkxlZnQpICsgcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5SaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbm5lcldpZHRoKGVsKSB7XG4gICAgICAgIGxldCB3aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xuICAgICAgICBsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICAgICAgICB3aWR0aCArPSBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdMZWZ0KSArIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgd2lkdGgoZWwpIHtcbiAgICAgICAgbGV0IHdpZHRoID0gZWwub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuXG4gICAgICAgIHdpZHRoIC09IHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpICsgcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nUmlnaHQpO1xuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbm5lckhlaWdodChlbCkge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICAgICAgICBoZWlnaHQgKz0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSArIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0JvdHRvbSk7XG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPdXRlckhlaWdodChlbCwgbWFyZ2luPykge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgIGlmIChtYXJnaW4pIHtcbiAgICAgICAgICAgIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAgICAgICAgICAgaGVpZ2h0ICs9IHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luVG9wKSArIHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luQm90dG9tKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRIZWlnaHQoZWwpOiBudW1iZXIge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICAgICAgICBoZWlnaHQgLT0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSArIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0JvdHRvbSkgKyBwYXJzZUZsb2F0KHN0eWxlLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlRmxvYXQoc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgpO1xuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRXaWR0aChlbCk6IG51bWJlciB7XG4gICAgICAgIGxldCB3aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xuICAgICAgICBsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICAgICAgICB3aWR0aCAtPSBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdMZWZ0KSArIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ1JpZ2h0KSArIHBhcnNlRmxvYXQoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKSArIHBhcnNlRmxvYXQoc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCk7XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Vmlld3BvcnQoKTogYW55IHtcbiAgICAgICAgbGV0IHdpbiA9IHdpbmRvdyxcbiAgICAgICAgICAgIGQgPSBkb2N1bWVudCxcbiAgICAgICAgICAgIGUgPSBkLmRvY3VtZW50RWxlbWVudCxcbiAgICAgICAgICAgIGcgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0sXG4gICAgICAgICAgICB3ID0gd2luLmlubmVyV2lkdGggfHwgZS5jbGllbnRXaWR0aCB8fCBnLmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgaCA9IHdpbi5pbm5lckhlaWdodCB8fCBlLmNsaWVudEhlaWdodCB8fCBnLmNsaWVudEhlaWdodDtcblxuICAgICAgICByZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRPZmZzZXQoZWwpIHtcbiAgICAgICAgdmFyIHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArICh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCAwKSxcbiAgICAgICAgICAgIGxlZnQ6IHJlY3QubGVmdCArICh3aW5kb3cucGFnZVhPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IHx8IDApLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVwbGFjZUVsZW1lbnRXaXRoKGVsZW1lbnQ6IGFueSwgcmVwbGFjZW1lbnRFbGVtZW50OiBhbnkpOiBhbnkge1xuICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKCFwYXJlbnROb2RlKVxuICAgICAgICAgICAgdGhyb3cgYENhbid0IHJlcGxhY2UgZWxlbWVudGA7XG4gICAgICAgIHJldHVybiBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyZXBsYWNlbWVudEVsZW1lbnQsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VXNlckFnZW50KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgIGlzSUUoKSB7XG4gICAgICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gICAgICAgIHZhciBtc2llID0gdWEuaW5kZXhPZignTVNJRSAnKTtcbiAgICAgICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAgICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRyaWRlbnQgPSB1YS5pbmRleE9mKCdUcmlkZW50LycpO1xuICAgICAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgICAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgICAgICAgdmFyIHJ2ID0gdWEuaW5kZXhPZigncnY6Jyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlZGdlID0gdWEuaW5kZXhPZignRWRnZS8nKTtcbiAgICAgICAgaWYgKGVkZ2UgPiAwKSB7XG4gICAgICAgICAgIC8vIEVkZ2UgKElFIDEyKykgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gb3RoZXIgYnJvd3NlclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0lPUygpIHtcbiAgICAgICAgcmV0dXJuIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICF3aW5kb3dbJ01TU3RyZWFtJ107XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0FuZHJvaWQoKSB7XG4gICAgICAgIHJldHVybiAvKGFuZHJvaWQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzVG91Y2hEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiAoKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykgfHwgKG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFwcGVuZENoaWxkKGVsZW1lbnQ6IGFueSwgdGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50KHRhcmdldCkpXG4gICAgICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldC5lbCAmJiB0YXJnZXQuZWwubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIHRhcmdldC5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyAnQ2Fubm90IGFwcGVuZCAnICsgdGFyZ2V0ICsgJyB0byAnICsgZWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUNoaWxkKGVsZW1lbnQ6IGFueSwgdGFyZ2V0OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50KHRhcmdldCkpXG4gICAgICAgICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldC5lbCAmJiB0YXJnZXQuZWwubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIHRhcmdldC5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyAnQ2Fubm90IHJlbW92ZSAnICsgZWxlbWVudCArICcgZnJvbSAnICsgdGFyZ2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlRWxlbWVudChlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgICAgIGlmICghKCdyZW1vdmUnIGluIEVsZW1lbnQucHJvdG90eXBlKSlcbiAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRWxlbWVudChvYmo6IGFueSkge1xuICAgICAgICByZXR1cm4gKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gXCJvYmplY3RcIiA/IG9iaiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IDpcbiAgICAgICAgICAgIG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIG9iaiAhPT0gbnVsbCAmJiBvYmoubm9kZVR5cGUgPT09IDEgJiYgdHlwZW9mIG9iai5ub2RlTmFtZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlU2Nyb2xsYmFyV2lkdGgoZWw/OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gICAgICAgICAgICByZXR1cm4gKGVsLm9mZnNldFdpZHRoIC0gZWwuY2xpZW50V2lkdGggLSBwYXJzZUZsb2F0KHN0eWxlLmJvcmRlckxlZnRXaWR0aCkgLSBwYXJzZUZsb2F0KHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhbGN1bGF0ZWRTY3JvbGxiYXJXaWR0aCAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkU2Nyb2xsYmFyV2lkdGg7XG5cbiAgICAgICAgICAgIGxldCBzY3JvbGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgc2Nyb2xsRGl2LmNsYXNzTmFtZSA9IFwicC1zY3JvbGxiYXItbWVhc3VyZVwiO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JvbGxEaXYpO1xuXG4gICAgICAgICAgICBsZXQgc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxEaXYub2Zmc2V0V2lkdGggLSBzY3JvbGxEaXYuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbERpdik7XG5cbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFNjcm9sbGJhcldpZHRoID0gc2Nyb2xsYmFyV2lkdGg7XG5cbiAgICAgICAgICAgIHJldHVybiBzY3JvbGxiYXJXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlU2Nyb2xsYmFySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmNhbGN1bGF0ZWRTY3JvbGxiYXJIZWlnaHQgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVkU2Nyb2xsYmFySGVpZ2h0O1xuXG4gICAgICAgIGxldCBzY3JvbGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBzY3JvbGxEaXYuY2xhc3NOYW1lID0gXCJwLXNjcm9sbGJhci1tZWFzdXJlXCI7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2Nyb2xsRGl2KTtcblxuICAgICAgICBsZXQgc2Nyb2xsYmFySGVpZ2h0ID0gc2Nyb2xsRGl2Lm9mZnNldEhlaWdodCAtIHNjcm9sbERpdi5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2Nyb2xsRGl2KTtcblxuICAgICAgICB0aGlzLmNhbGN1bGF0ZWRTY3JvbGxiYXJXaWR0aCA9IHNjcm9sbGJhckhlaWdodDtcblxuICAgICAgICByZXR1cm4gc2Nyb2xsYmFySGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW52b2tlRWxlbWVudE1ldGhvZChlbGVtZW50OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJncz86IGFueVtdKTogdm9pZCB7XG4gICAgICAgIChlbGVtZW50IGFzIGFueSlbbWV0aG9kTmFtZV0uYXBwbHkoZWxlbWVudCwgYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZW1wdHkpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcyAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmFuZ2VDb3VudCA+IDAgJiYgd2luZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRvY3VtZW50WydzZWxlY3Rpb24nXSAmJiBkb2N1bWVudFsnc2VsZWN0aW9uJ10uZW1wdHkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRbJ3NlbGVjdGlvbiddLmVtcHR5KCk7XG4gICAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy9pZ25vcmUgSUUgYnVnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJyb3dzZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5icm93c2VyKSB7XG4gICAgICAgICAgICBsZXQgbWF0Y2hlZCA9IHRoaXMucmVzb2x2ZVVzZXJBZ2VudCgpO1xuICAgICAgICAgICAgdGhpcy5icm93c2VyID0ge307XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVkLmJyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJbbWF0Y2hlZC5icm93c2VyXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyWyd2ZXJzaW9uJ10gPSBtYXRjaGVkLnZlcnNpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmJyb3dzZXJbJ2Nocm9tZSddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyWyd3ZWJraXQnXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYnJvd3Nlclsnd2Via2l0J10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJbJ3NhZmFyaSddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlVXNlckFnZW50KCkge1xuICAgICAgICBsZXQgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCBtYXRjaCA9IC8oY2hyb21lKVsgXFwvXShbXFx3Ll0rKS8uZXhlYyh1YSkgfHxcbiAgICAgICAgICAgIC8od2Via2l0KVsgXFwvXShbXFx3Ll0rKS8uZXhlYyh1YSkgfHxcbiAgICAgICAgICAgIC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFxcL10oW1xcdy5dKykvLmV4ZWModWEpIHx8XG4gICAgICAgICAgICAvKG1zaWUpIChbXFx3Ll0rKS8uZXhlYyh1YSkgfHxcbiAgICAgICAgICAgIHVhLmluZGV4T2YoXCJjb21wYXRpYmxlXCIpIDwgMCAmJiAvKG1vemlsbGEpKD86Lio/IHJ2OihbXFx3Ll0rKXwpLy5leGVjKHVhKSB8fFxuICAgICAgICAgICAgW107XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJyb3dzZXI6IG1hdGNoWzFdIHx8IFwiXCIsXG4gICAgICAgICAgICB2ZXJzaW9uOiBtYXRjaFsyXSB8fCBcIjBcIlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNJbnRlZ2VyKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIGlzRmluaXRlKHZhbHVlKSAmJiAgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0hpZGRlbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQgPT09IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRGb2N1c2FibGVFbGVtZW50cyhlbGVtZW50OkhUTUxFbGVtZW50KSB7XG4gICAgICAgIGxldCBmb2N1c2FibGVFbGVtZW50cyA9IERvbUhhbmRsZXIuZmluZChlbGVtZW50LGBidXR0b246bm90KFt0YWJpbmRleCA9IFwiLTFcIl0pOm5vdChbZGlzYWJsZWRdKTpub3QoW3N0eWxlKj1cImRpc3BsYXk6bm9uZVwiXSk6bm90KFtoaWRkZW5dKSxcbiAgICAgICAgICAgICAgICBbaHJlZl1bY2xpZW50SGVpZ2h0XVtjbGllbnRXaWR0aF06bm90KFt0YWJpbmRleCA9IFwiLTFcIl0pOm5vdChbZGlzYWJsZWRdKTpub3QoW3N0eWxlKj1cImRpc3BsYXk6bm9uZVwiXSk6bm90KFtoaWRkZW5dKSxcbiAgICAgICAgICAgICAgICBpbnB1dDpub3QoW3RhYmluZGV4ID0gXCItMVwiXSk6bm90KFtkaXNhYmxlZF0pOm5vdChbc3R5bGUqPVwiZGlzcGxheTpub25lXCJdKTpub3QoW2hpZGRlbl0pLCBzZWxlY3Q6bm90KFt0YWJpbmRleCA9IFwiLTFcIl0pOm5vdChbZGlzYWJsZWRdKTpub3QoW3N0eWxlKj1cImRpc3BsYXk6bm9uZVwiXSk6bm90KFtoaWRkZW5dKSxcbiAgICAgICAgICAgICAgICB0ZXh0YXJlYTpub3QoW3RhYmluZGV4ID0gXCItMVwiXSk6bm90KFtkaXNhYmxlZF0pOm5vdChbc3R5bGUqPVwiZGlzcGxheTpub25lXCJdKTpub3QoW2hpZGRlbl0pLCBbdGFiSW5kZXhdOm5vdChbdGFiSW5kZXggPSBcIi0xXCJdKTpub3QoW2Rpc2FibGVkXSk6bm90KFtzdHlsZSo9XCJkaXNwbGF5Om5vbmVcIl0pOm5vdChbaGlkZGVuXSksXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV06bm90KFt0YWJJbmRleCA9IFwiLTFcIl0pOm5vdChbZGlzYWJsZWRdKTpub3QoW3N0eWxlKj1cImRpc3BsYXk6bm9uZVwiXSk6bm90KFtoaWRkZW5dOm5vdCgucC1kaXNhYmxlZCkpYFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGV0IHZpc2libGVGb2N1c2FibGVFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgZm9yKGxldCBmb2N1c2FibGVFbGVtZW50IG9mIGZvY3VzYWJsZUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUoZm9jdXNhYmxlRWxlbWVudCkuZGlzcGxheSAhPSBcIm5vbmVcIiAmJiBnZXRDb21wdXRlZFN0eWxlKGZvY3VzYWJsZUVsZW1lbnQpLnZpc2liaWxpdHkgIT0gXCJoaWRkZW5cIilcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZvY3VzYWJsZUVsZW1lbnRzLnB1c2goZm9jdXNhYmxlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIHJldHVybiB2aXNpYmxlRm9jdXNhYmxlRWxlbWVudHM7XG4gICAgfVxuXG4gICAgc3RhdGljIGdlbmVyYXRlWkluZGV4KCkge1xuICAgICAgICB0aGlzLnppbmRleCA9IHRoaXMuemluZGV4fHw5OTk7XG4gICAgICAgIHJldHVybiArK3RoaXMuemluZGV4O1xuICAgIH1cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dom/primeng-dom.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dom/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dom/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZG9tL3ByaW1lbmctZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dom/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dom/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dom/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+export * from './domhandler';
+export * from './connectedoverlayscrollhandler';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kb20vcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kb21oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29ubmVjdGVkb3ZlcmxheXNjcm9sbGhhbmRsZXInO1xuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/dragdrop/dragdrop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dragdrop/dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dragdrop/dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,253 @@
+import { NgModule, Directive, HostListener, Input, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+export class Draggable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragStart = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onDrag = new EventEmitter();
+    }
+    get pDraggableDisabled() {
+        return this._pDraggableDisabled;
+    }
+    set pDraggableDisabled(_pDraggableDisabled) {
+        this._pDraggableDisabled = _pDraggableDisabled;
+        if (this._pDraggableDisabled) {
+            this.unbindMouseListeners();
+        }
+        else {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.pDraggableDisabled) {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    bindDragListener() {
+        if (!this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragListener = this.drag.bind(this);
+                this.el.nativeElement.addEventListener('drag', this.dragListener);
+            });
+        }
+    }
+    unbindDragListener() {
+        if (this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('drag', this.dragListener);
+                this.dragListener = null;
+            });
+        }
+    }
+    bindMouseListeners() {
+        if (!this.mouseDownListener && !this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.mouseDownListener = this.mousedown.bind(this);
+                this.mouseUpListener = this.mouseup.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.addEventListener('mouseup', this.mouseUpListener);
+            });
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseDownListener && this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.removeEventListener('mouseup', this.mouseUpListener);
+                this.mouseDownListener = null;
+                this.mouseUpListener = null;
+            });
+        }
+    }
+    drag(event) {
+        this.onDrag.emit(event);
+    }
+    dragStart(event) {
+        if (this.allowDrag() && !this.pDraggableDisabled) {
+            if (this.dragEffect) {
+                event.dataTransfer.effectAllowed = this.dragEffect;
+            }
+            event.dataTransfer.setData('text', this.scope);
+            this.onDragStart.emit(event);
+            this.bindDragListener();
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    dragEnd(event) {
+        this.onDragEnd.emit(event);
+        this.unbindDragListener();
+    }
+    mousedown(event) {
+        this.handle = event.target;
+    }
+    mouseup(event) {
+        this.handle = null;
+    }
+    allowDrag() {
+        if (this.dragHandle && this.handle)
+            return DomHandler.matches(this.handle, this.dragHandle);
+        else
+            return true;
+    }
+    ngOnDestroy() {
+        this.unbindDragListener();
+        this.unbindMouseListeners();
+    }
+}
+Draggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Draggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Draggable, selector: "[pDraggable]", inputs: { scope: ["pDraggable", "scope"], dragEffect: "dragEffect", dragHandle: "dragHandle", pDraggableDisabled: "pDraggableDisabled" }, outputs: { onDragStart: "onDragStart", onDragEnd: "onDragEnd", onDrag: "onDrag" }, host: { listeners: { "dragstart": "dragStart($event)", "dragend": "dragEnd($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDraggable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDraggable']
+            }], dragEffect: [{
+                type: Input
+            }], dragHandle: [{
+                type: Input
+            }], onDragStart: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onDrag: [{
+                type: Output
+            }], pDraggableDisabled: [{
+                type: Input
+            }], dragStart: [{
+                type: HostListener,
+                args: ['dragstart', ['$event']]
+            }], dragEnd: [{
+                type: HostListener,
+                args: ['dragend', ['$event']]
+            }] } });
+export class Droppable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragEnter = new EventEmitter();
+        this.onDragLeave = new EventEmitter();
+        this.onDrop = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (!this.pDroppableDisabled) {
+            this.bindDragOverListener();
+        }
+    }
+    bindDragOverListener() {
+        if (!this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragOverListener = this.dragOver.bind(this);
+                this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            });
+        }
+    }
+    unbindDragOverListener() {
+        if (this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('dragover', this.dragOverListener);
+                this.dragOverListener = null;
+            });
+        }
+    }
+    dragOver(event) {
+        event.preventDefault();
+    }
+    drop(event) {
+        if (this.allowDrop(event)) {
+            DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+            event.preventDefault();
+            this.onDrop.emit(event);
+        }
+    }
+    dragEnter(event) {
+        event.preventDefault();
+        if (this.dropEffect) {
+            event.dataTransfer.dropEffect = this.dropEffect;
+        }
+        DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragEnter.emit(event);
+    }
+    dragLeave(event) {
+        event.preventDefault();
+        DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragLeave.emit(event);
+    }
+    allowDrop(event) {
+        let dragScope = event.dataTransfer.getData('text');
+        if (typeof (this.scope) == "string" && dragScope == this.scope) {
+            return true;
+        }
+        else if (this.scope instanceof Array) {
+            for (let j = 0; j < this.scope.length; j++) {
+                if (dragScope == this.scope[j]) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    ngOnDestroy() {
+        this.unbindDragOverListener();
+    }
+}
+Droppable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Droppable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Droppable, selector: "[pDroppable]", inputs: { scope: ["pDroppable", "scope"], pDroppableDisabled: "pDroppableDisabled", dropEffect: "dropEffect" }, outputs: { onDragEnter: "onDragEnter", onDragLeave: "onDragLeave", onDrop: "onDrop" }, host: { listeners: { "drop": "drop($event)", "dragenter": "dragEnter($event)", "dragleave": "dragLeave($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDroppable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDroppable']
+            }], pDroppableDisabled: [{
+                type: Input
+            }], dropEffect: [{
+                type: Input
+            }], onDragEnter: [{
+                type: Output
+            }], onDragLeave: [{
+                type: Output
+            }], onDrop: [{
+                type: Output
+            }], drop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }], dragEnter: [{
+                type: HostListener,
+                args: ['dragenter', ['$event']]
+            }], dragLeave: [{
+                type: HostListener,
+                args: ['dragleave', ['$event']]
+            }] } });
+export class DragDropModule {
+}
+DragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, declarations: [Draggable, Droppable], imports: [CommonModule], exports: [Draggable, Droppable] });
+DragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Draggable, Droppable],
+                    declarations: [Draggable, Droppable]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2Ryb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHJhZ2Ryb3AvZHJhZ2Ryb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQW9DLFlBQVksRUFBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7QUFRdkMsTUFBTSxPQUFPLFNBQVM7SUF3QmxCLFlBQW1CLEVBQWMsRUFBUyxJQUFZO1FBQW5DLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBaEI1QyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsRCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFZQSxDQUFDO0lBRTFELElBQWEsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLGtCQUFrQixDQUFDLG1CQUEyQjtRQUM5QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0I7YUFDSTtZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUIs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QUM7Z0JBYXJDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBaUN6QyxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQW5QZCxTQUFTLEVBK0lULFNBQVMsYUFnR1IsWUFBWSxhQS9PYixTQUFTLEVBK0lULFNBQVM7NEdBb0dULGNBQWMsWUFKZCxDQUFDLFlBQVksQ0FBQzsyRkFJZCxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQztvQkFDOUIsWUFBWSxFQUFFLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLERpcmVjdGl2ZSxPbkRlc3Ryb3ksQWZ0ZXJWaWV3SW5pdCxFbGVtZW50UmVmLEhvc3RMaXN0ZW5lcixJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RG9tSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twRHJhZ2dhYmxlXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgncERyYWdnYWJsZScpIHNjb3BlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkcmFnRWZmZWN0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkcmFnSGFuZGxlOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgb25EcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRHJhZ0VuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25EcmFnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGhhbmRsZTogYW55O1xuXG4gICAgZHJhZ0xpc3RlbmVyOiBhbnk7XG5cbiAgICBtb3VzZURvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgbW91c2VVcExpc3RlbmVyOiBhbnk7XG5cbiAgICBfcERyYWdnYWJsZURpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lKSB7fVxuXG4gICAgQElucHV0KCkgZ2V0IHBEcmFnZ2FibGVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BEcmFnZ2FibGVEaXNhYmxlZDtcbiAgICB9XG4gICAgc2V0IHBEcmFnZ2FibGVEaXNhYmxlZChfcERyYWdnYWJsZURpc2FibGVkOmJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcERyYWdnYWJsZURpc2FibGVkID0gX3BEcmFnZ2FibGVEaXNhYmxlZDtcblxuICAgICAgICBpZiAodGhpcy5fcERyYWdnYWJsZURpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVuYmluZE1vdXNlTGlzdGVuZXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYmluZE1vdXNlTGlzdGVuZXJzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wRHJhZ2dhYmxlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcmFnZ2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5iaW5kTW91c2VMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREcmFnTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTGlzdGVuZXIgPSB0aGlzLmRyYWcuYmluZCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZycsIHRoaXMuZHJhZ0xpc3RlbmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRHJhZ0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWcnLCB0aGlzLmRyYWdMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kTW91c2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5tb3VzZURvd25MaXN0ZW5lciAmJiAhdGhpcy5tb3VzZVVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MaXN0ZW5lciA9IHRoaXMubW91c2Vkb3duLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIgPSB0aGlzLm1vdXNldXAuYmluZCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1vdXNlTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAodGhpcy5tb3VzZURvd25MaXN0ZW5lciAmJiB0aGlzLm1vdXNlVXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmFnKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25EcmFnLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgZHJhZ1N0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93RHJhZygpICYmICF0aGlzLnBEcmFnZ2FibGVEaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ0VmZmVjdCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gdGhpcy5kcmFnRWZmZWN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCB0aGlzLnNjb3BlKTtcblxuICAgICAgICAgICAgdGhpcy5vbkRyYWdTdGFydC5lbWl0KGV2ZW50KTtcblxuICAgICAgICAgICAgdGhpcy5iaW5kRHJhZ0xpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcsIFsnJGV2ZW50J10pXG4gICAgZHJhZ0VuZChldmVudCkge1xuICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy51bmJpbmREcmFnTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBtb3VzZWRvd24oZXZlbnQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGUgPSBldmVudC50YXJnZXQ7XG4gICAgfVxuXG4gICAgbW91c2V1cChldmVudCkge1xuICAgICAgICB0aGlzLmhhbmRsZSA9IG51bGw7XG4gICAgfVxuXG4gICAgYWxsb3dEcmFnKCkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0hhbmRsZSAmJiB0aGlzLmhhbmRsZSlcbiAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLm1hdGNoZXModGhpcy5oYW5kbGUsIHRoaXMuZHJhZ0hhbmRsZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZERyYWdMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZE1vdXNlTGlzdGVuZXJzKCk7XG4gICAgfVxuXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BEcm9wcGFibGVdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wcGFibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCdwRHJvcHBhYmxlJykgc2NvcGU6IHN0cmluZ3xzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpIHBEcm9wcGFibGVEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGRyb3BFZmZlY3Q6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBvbkRyYWdFbnRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25EcmFnTGVhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRHJvcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgICBkcmFnT3Zlckxpc3RlbmVyOiBhbnk7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5wRHJvcHBhYmxlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERyYWdPdmVyTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREcmFnT3Zlckxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLmRyYWdPdmVyLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRHJhZ092ZXJMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYWdPdmVyKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgZHJvcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0Ryb3AoZXZlbnQpKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3AtZHJhZ2dhYmxlLWVudGVyJyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbkRyb3AuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxuICAgIGRyYWdFbnRlcihldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRyb3BFZmZlY3QpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gdGhpcy5kcm9wRWZmZWN0O1xuICAgICAgICB9XG5cbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdwLWRyYWdnYWJsZS1lbnRlcicpO1xuICAgICAgICB0aGlzLm9uRHJhZ0VudGVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgZHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdwLWRyYWdnYWJsZS1lbnRlcicpO1xuICAgICAgICB0aGlzLm9uRHJhZ0xlYXZlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGFsbG93RHJvcChldmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZHJhZ1Njb3BlID0gZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5zY29wZSkgPT0gXCJzdHJpbmdcIiAmJiBkcmFnU2NvcGUgPT0gdGhpcy5zY29wZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5zY29wZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgdGhpcy5zY29wZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChkcmFnU2NvcGUgPT0gdGhpcy5zY29wZVtqXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZERyYWdPdmVyTGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0RyYWdnYWJsZSxEcm9wcGFibGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0RyYWdnYWJsZSxEcm9wcGFibGVdXG59KVxuZXhwb3J0IGNsYXNzIERyYWdEcm9wTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/dragdrop/primeng-dragdrop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dragdrop/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dragdrop/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kcmFnZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kcmFnZHJvcC9wcmltZW5nLWRyYWdkcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dragdrop/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dragdrop/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dragdrop/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './dragdrop';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kcmFnZHJvcC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcmFnZHJvcCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/dropdown/dropdown.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dropdown/dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dropdown/dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1202 @@
+import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ViewChild, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { TranslationKeys } from 'primeng/api';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { TooltipModule } from 'primeng/tooltip';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/ripple";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/api";
+import * as i4 from "@angular/cdk/scrolling";
+import * as i5 from "primeng/tooltip";
+export const DROPDOWN_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Dropdown),
+    multi: true
+};
+export class DropdownItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+DropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+DropdownItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DropdownItem, selector: "p-dropdownItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", visible: "visible", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dropdownItem',
+                    template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }] } });
+export class Dropdown {
+    constructor(el, renderer, cd, zone, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.scrollHeight = '200px';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.autoDisplayFirst = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.viewPortOffsetTop = 0;
+        this.id = UniqueComponentId();
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(_disabled) {
+        if (_disabled) {
+            this.focused = false;
+            if (this.overlayVisible)
+                this.hide();
+        }
+        this._disabled = _disabled;
+        if (!this.cd.destroyed) {
+            this.cd.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.optionsToDisplay = this.options;
+        this.updateSelectedOption(null);
+        this.labelId = this.id + '_label';
+        this.listId = this.id + '_list';
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.optionsToDisplay = this._options;
+        this.updateSelectedOption(this.value);
+        this.optionsChanged = true;
+        if (this._filterValue && this._filterValue.length) {
+            this.activateFilter();
+        }
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngAfterViewInit() {
+        if (this.editable) {
+            this.updateEditableLabel();
+        }
+    }
+    get label() {
+        return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    get filled() {
+        return this.value || this.value != null || this.value != undefined;
+    }
+    updateEditableLabel() {
+        if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {
+            this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '');
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    onItemClick(event) {
+        const option = event.option;
+        if (!this.isOptionDisabled(option)) {
+            this.selectItem(event, option);
+            this.accessibleViewChild.nativeElement.focus();
+        }
+        setTimeout(() => {
+            this.hide();
+        }, 150);
+    }
+    selectItem(event, option) {
+        if (this.selectedOption != option) {
+            this.selectedOption = option;
+            this.value = this.getOptionValue(option);
+            this.onModelChange(this.value);
+            this.updateEditableLabel();
+            this.onChange.emit({
+                originalEvent: event.originalEvent,
+                value: this.value
+            });
+            if (this.virtualScroll) {
+                setTimeout(() => {
+                    this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;
+                }, 1);
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.optionsChanged && this.overlayVisible) {
+            this.optionsChanged = false;
+            if (this.virtualScroll) {
+                this.updateVirtualScrollSelectedIndex(true);
+            }
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.alignOverlay();
+                }, 1);
+            });
+        }
+        if (this.selectedOptionUpdated && this.itemsWrapper) {
+            if (this.virtualScroll && this.viewPort) {
+                let range = this.viewPort.getRenderedRange();
+                this.updateVirtualScrollSelectedIndex(false);
+                if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                    this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                }
+            }
+            let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+            if (selectedItem) {
+                DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));
+            }
+            this.selectedOptionUpdated = false;
+        }
+    }
+    writeValue(value) {
+        if (this.filter) {
+            this.resetFilter();
+        }
+        this.value = value;
+        this.updateSelectedOption(value);
+        this.updateEditableLabel();
+        this.cd.markForCheck();
+    }
+    resetFilter() {
+        this._filterValue = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+        this.optionsToDisplay = this.options;
+    }
+    updateSelectedOption(val) {
+        this.selectedOption = this.findOption(val, this.optionsToDisplay);
+        if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {
+            this.selectedOption = this.optionsToDisplay[0];
+            this.value = this.getOptionValue(this.selectedOption);
+            this.onModelChange(this.value);
+        }
+        this.selectedOptionUpdated = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onMouseclick(event) {
+        if (this.disabled || this.readonly || this.isInputClick(event)) {
+            return;
+        }
+        this.onClick.emit(event);
+        this.accessibleViewChild.nativeElement.focus();
+        if (this.overlayVisible)
+            this.hide();
+        else
+            this.show();
+        this.cd.detectChanges();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    isInputClick(event) {
+        return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||
+            event.target.isSameNode(this.accessibleViewChild.nativeElement) ||
+            (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isEmpty() {
+        return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);
+    }
+    onEditableInputClick() {
+        this.bindDocumentClickListener();
+    }
+    onEditableInputFocus(event) {
+        this.focused = true;
+        this.hide();
+        this.onFocus.emit(event);
+    }
+    onEditableInputChange(event) {
+        this.value = event.target.value;
+        this.updateSelectedOption(this.value);
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';
+                this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.options && this.options.length) {
+                    if (!this.virtualScroll) {
+                        let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');
+                        if (selectedListItem) {
+                            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'start' });
+                        }
+                    }
+                }
+                if (this.filterViewChild && this.filterViewChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterViewChild.nativeElement.focus();
+                    }
+                }
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    scrollToSelectedVirtualScrollElement() {
+        if (!this.virtualAutoScrolled) {
+            if (this.viewPortOffsetTop) {
+                this.viewPort.scrollToOffset(this.viewPortOffsetTop);
+            }
+            else if (this.virtualScrollSelectedIndex > -1) {
+                this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+            }
+        }
+        this.virtualAutoScrolled = true;
+    }
+    updateVirtualScrollSelectedIndex(resetOffset) {
+        if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {
+            if (resetOffset) {
+                this.viewPortOffsetTop = 0;
+            }
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        if (this.filter && this.resetFilterOnHide) {
+            this.resetFilter();
+        }
+        if (this.virtualScroll) {
+            this.virtualAutoScrolled = false;
+        }
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onBlur.emit(event);
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    findPrevEnabledOption(index) {
+        let prevEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index - 1); 0 <= i; i--) {
+                let option = this.optionsToDisplay[i];
+                if (option.disabled) {
+                    continue;
+                }
+                else {
+                    prevEnabledOption = option;
+                    break;
+                }
+            }
+            if (!prevEnabledOption) {
+                for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        prevEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return prevEnabledOption;
+    }
+    findNextEnabledOption(index) {
+        let nextEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {
+                let option = this.optionsToDisplay[i];
+                if (this.isOptionDisabled(option)) {
+                    continue;
+                }
+                else {
+                    nextEnabledOption = option;
+                    break;
+                }
+            }
+            if (!nextEnabledOption) {
+                for (let i = 0; i < index; i++) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        nextEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return nextEnabledOption;
+    }
+    onKeydown(event, search) {
+        if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {
+            return;
+        }
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                }
+                else {
+                    if (this.group) {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        if (selectedItemIndex !== -1) {
+                            let nextItemIndex = selectedItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);
+                                this.selectedOptionUpdated = true;
+                            }
+                            else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                        else {
+                            if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);
+                            }
+                        }
+                    }
+                    else {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);
+                        if (nextEnabledOption) {
+                            this.selectItem(event, nextEnabledOption);
+                            this.selectedOptionUpdated = true;
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                if (this.group) {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    if (selectedItemIndex !== -1) {
+                        let prevItemIndex = selectedItemIndex.itemIndex - 1;
+                        if (prevItemIndex >= 0) {
+                            this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);
+                            this.selectedOptionUpdated = true;
+                        }
+                        else if (prevItemIndex < 0) {
+                            let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];
+                            if (prevGroup) {
+                                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                    }
+                }
+                else {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);
+                    if (prevEnabledOption) {
+                        this.selectItem(event, prevEnabledOption);
+                        this.selectedOptionUpdated = true;
+                    }
+                }
+                event.preventDefault();
+                break;
+            //space
+            case 32:
+                if (search) {
+                    if (!this.overlayVisible) {
+                        this.show();
+                    }
+                    else {
+                        this.hide();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {
+                    this.hide();
+                }
+                else if (!this.overlayVisible) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+            //search item based on keyboard input
+            default:
+                if (search && !event.metaKey) {
+                    this.search(event);
+                }
+                break;
+        }
+    }
+    search(event) {
+        if (this.searchTimeout) {
+            clearTimeout(this.searchTimeout);
+        }
+        const char = event.key;
+        this.previousSearchChar = this.currentSearchChar;
+        this.currentSearchChar = char;
+        if (this.previousSearchChar === this.currentSearchChar)
+            this.searchValue = this.currentSearchChar;
+        else
+            this.searchValue = this.searchValue ? this.searchValue + char : char;
+        let newOption;
+        if (this.group) {
+            let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : { groupIndex: 0, itemIndex: 0 };
+            newOption = this.searchOptionWithinGroup(searchIndex);
+        }
+        else {
+            let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+            newOption = this.searchOption(++searchIndex);
+        }
+        if (newOption && !this.isOptionDisabled(newOption)) {
+            this.selectItem(event, newOption);
+            this.selectedOptionUpdated = true;
+        }
+        this.searchTimeout = setTimeout(() => {
+            this.searchValue = null;
+        }, 250);
+    }
+    searchOption(index) {
+        let option;
+        if (this.searchValue) {
+            option = this.searchOptionInRange(index, this.optionsToDisplay.length);
+            if (!option) {
+                option = this.searchOptionInRange(0, index);
+            }
+        }
+        return option;
+    }
+    searchOptionInRange(start, end) {
+        for (let i = start; i < end; i++) {
+            let opt = this.optionsToDisplay[i];
+            if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                return opt;
+            }
+        }
+        return null;
+    }
+    searchOptionWithinGroup(index) {
+        let option;
+        if (this.searchValue) {
+            for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {
+                for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {
+                    let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                    if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                        return opt;
+                    }
+                }
+            }
+            if (!option) {
+                for (let i = 0; i <= index.groupIndex; i++) {
+                    for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {
+                        let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                        if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                            return opt;
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+    findOptionIndex(val, opts) {
+        let index = -1;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    findOption(val, opts, inGroup) {
+        if (this.group && !inGroup) {
+            let opt;
+            if (opts && opts.length) {
+                for (let optgroup of opts) {
+                    opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);
+                    if (opt) {
+                        break;
+                    }
+                }
+            }
+            return opt;
+        }
+        else {
+            let index = this.findOptionIndex(val, opts);
+            return (index != -1) ? opts[index] : null;
+        }
+    }
+    onFilterInputChange(event) {
+        let inputValue = event.target.value;
+        if (inputValue && inputValue.length) {
+            this._filterValue = inputValue;
+            this.activateFilter();
+        }
+        else {
+            this._filterValue = null;
+            this.optionsToDisplay = this.options;
+        }
+        this.optionsChanged = true;
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+    }
+    activateFilter() {
+        let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+        if (this.options && this.options.length) {
+            if (this.group) {
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this.optionsToDisplay = filteredGroups;
+            }
+            else {
+                this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+            }
+            this.optionsChanged = true;
+        }
+    }
+    applyFocus() {
+        if (this.editable)
+            DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();
+        else
+            DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();
+    }
+    focus() {
+        this.applyFocus();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                    this.unbindDocumentClickListener();
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isTouchDevice()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event) => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    clear(event) {
+        this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+        this.updateSelectedOption(this.value);
+        this.updateEditableLabel();
+        this.onClear.emit(event);
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.itemsWrapper = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dropdown, selector: "p-dropdown", inputs: { scrollHeight: "scrollHeight", filter: "filter", name: "name", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", readonly: "readonly", required: "required", editable: "editable", appendTo: "appendTo", tabindex: "tabindex", placeholder: "placeholder", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", inputId: "inputId", selectId: "selectId", dataKey: "dataKey", filterBy: "filterBy", autofocus: "autofocus", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", autoDisplayFirst: "autoDisplayFirst", group: "group", showClear: "showClear", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", virtualScroll: "virtualScroll", itemSize: "itemSize", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", ariaLabelledBy: "ariaLabelledBy", filterMatchMode: "filterMatchMode", maxlength: "maxlength", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", disabled: "disabled", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onShow: "onShow", onHide: "onHide", onClear: "onClear" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "editableInputViewChild", first: true, predicate: ["editableInput"], descendants: true }], ngImport: i0, template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"], components: [{ type: DropdownItem, selector: "p-dropdownItem", inputs: ["option", "selected", "label", "disabled", "visible", "itemSize", "template"], outputs: ["onClick"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dropdown', template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { scrollHeight: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], editable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], selectId: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], autoDisplayFirst: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], showClear: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], editableInputViewChild: [{
+                type: ViewChild,
+                args: ['editableInput']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], disabled: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+export class DropdownModule {
+}
+DropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, declarations: [Dropdown, DropdownItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [Dropdown, SharedModule, ScrollingModule] });
+DropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [Dropdown, SharedModule, ScrollingModule],
+                    declarations: [Dropdown, DropdownItem]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUE2RSxLQUFLLEVBQUMsTUFBTSxFQUFXLFlBQVksRUFBQyxlQUFlLEVBQ3hJLFNBQVMsRUFBYSxVQUFVLEVBQWtDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JKLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBNEMsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsYUFBYSxFQUFnQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxXQUFXLEVBQUMsaUJBQWlCLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRTVDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFRO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7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QUFXO3NCQUF2QixLQUFLOztBQWswQlYsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkE5bENkLFFBQVEsRUFoSVIsWUFBWSxhQTB0Q1gsWUFBWSxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLFlBQVksYUExbENyRSxRQUFRLEVBMmxDRSxZQUFZLEVBQUMsZUFBZTs0R0FHdEMsY0FBYyxZQUpkLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLFlBQVksQ0FBQyxFQUM1RCxZQUFZLEVBQUMsZUFBZTsyRkFHdEMsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsWUFBWSxDQUFDO29CQUMvRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUMsWUFBWSxFQUFDLGVBQWUsQ0FBQztvQkFDaEQsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFDLFlBQVksQ0FBQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Njcm9sbGluZ01vZHVsZSwgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsT25Jbml0LEFmdGVyVmlld0luaXQsQWZ0ZXJDb250ZW50SW5pdCxBZnRlclZpZXdDaGVja2VkLE9uRGVzdHJveSxJbnB1dCxPdXRwdXQsUmVuZGVyZXIyLEV2ZW50RW1pdHRlcixDb250ZW50Q2hpbGRyZW4sXG4gICAgICAgIFF1ZXJ5TGlzdCxWaWV3Q2hpbGQsVGVtcGxhdGVSZWYsZm9yd2FyZFJlZixDaGFuZ2VEZXRlY3RvclJlZixOZ1pvbmUsVmlld1JlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0cmlnZ2VyLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZSxBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7T3ZlcmxheVNlcnZpY2UsIFByaW1lTkdDb25maWcsIFNlbGVjdEl0ZW0sIFRyYW5zbGF0aW9uS2V5c30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGUsUHJpbWVUZW1wbGF0ZSwgRmlsdGVyU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtEb21IYW5kbGVyLCBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHtPYmplY3RVdGlscyxVbmlxdWVDb21wb25lbnRJZCxaSW5kZXhVdGlsc30gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcblxuZXhwb3J0IGNvbnN0IERST1BET1dOX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93biksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZHJvcGRvd25JdGVtJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bGkgKGNsaWNrKT1cIm9uT3B0aW9uQ2xpY2soJGV2ZW50KVwiIHJvbGU9XCJvcHRpb25cIiBwUmlwcGxlXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IGl0ZW1TaXplICsgJ3B4J31cIiBbaWRdPVwic2VsZWN0ZWQgPyAncC1oaWdobGlnaHRlZC1vcHRpb24nOicnXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kcm9wZG93bi1pdGVtJzp0cnVlLCAncC1oaWdobGlnaHQnOiBzZWxlY3RlZCwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRlbXBsYXRlXCI+e3tsYWJlbHx8J2VtcHR5J319PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkl0ZW0ge1xuXG4gICAgQElucHV0KCkgb3B0aW9uOiBTZWxlY3RJdGVtO1xuXG4gICAgQElucHV0KCkgc2VsZWN0ZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaXRlbVNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgb25PcHRpb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBvcHRpb246IHRoaXMub3B0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cInsncC1kcm9wZG93biBwLWNvbXBvbmVudCc6dHJ1ZSxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzpkaXNhYmxlZCwgJ3AtZHJvcGRvd24tb3Blbic6b3ZlcmxheVZpc2libGUsICdwLWZvY3VzJzpmb2N1c2VkLCAncC1kcm9wZG93bi1jbGVhcmFibGUnOiBzaG93Q2xlYXIgJiYgIWRpc2FibGVkfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3VzZWNsaWNrKCRldmVudClcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaW4gW2F0dHIuaWRdPVwiaW5wdXRJZFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCIgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgW2F0dHIuYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJvdmVybGF5VmlzaWJsZSA/ICdwLWhpZ2hsaWdodGVkLW9wdGlvbicgOiBsYWJlbElkXCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwibGFiZWxJZFwiIFtuZ0NsYXNzXT1cInsncC1kcm9wZG93bi1sYWJlbCBwLWlucHV0dGV4dCc6dHJ1ZSwncC1kcm9wZG93bi1sYWJlbC1lbXB0eSc6KGxhYmVsID09IG51bGwgfHwgbGFiZWwubGVuZ3RoID09PSAwKX1cIiAqbmdJZj1cIiFlZGl0YWJsZSAmJiAobGFiZWwgIT0gbnVsbClcIiBbcFRvb2x0aXBdPVwidG9vbHRpcFwiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW3Bvc2l0aW9uU3R5bGVdPVwidG9vbHRpcFBvc2l0aW9uU3R5bGVcIiBbdG9vbHRpcFN0eWxlQ2xhc3NdPVwidG9vbHRpcFN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkSXRlbVRlbXBsYXRlXCI+e3tsYWJlbHx8J2VtcHR5J319PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzZWxlY3RlZE9wdGlvbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsncC1kcm9wZG93bi1sYWJlbCBwLWlucHV0dGV4dCBwLXBsYWNlaG9sZGVyJzp0cnVlLCdwLWRyb3Bkb3duLWxhYmVsLWVtcHR5JzogKHBsYWNlaG9sZGVyID09IG51bGwgfHwgcGxhY2Vob2xkZXIubGVuZ3RoID09PSAwKX1cIiAqbmdJZj1cIiFlZGl0YWJsZSAmJiAobGFiZWwgPT0gbnVsbClcIj57e3BsYWNlaG9sZGVyfHwnZW1wdHknfX08L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgI2VkaXRhYmxlSW5wdXQgdHlwZT1cInRleHRcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgY2xhc3M9XCJwLWRyb3Bkb3duLWxhYmVsIHAtaW5wdXR0ZXh0XCIgKm5nSWY9XCJlZGl0YWJsZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGVcIiAoY2xpY2spPVwib25FZGl0YWJsZUlucHV0Q2xpY2soKVwiIChpbnB1dCk9XCJvbkVkaXRhYmxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkVkaXRhYmxlSW5wdXRGb2N1cygkZXZlbnQpXCIgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwLWRyb3Bkb3duLWNsZWFyLWljb24gcGkgcGktdGltZXNcIiAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwidmFsdWUgIT0gbnVsbCAmJiBzaG93Q2xlYXIgJiYgIWRpc2FibGVkXCI+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZHJvcGRvd24tdHJpZ2dlclwiIHJvbGU9XCJidXR0b25cIiBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZHJvcGRvd24tdHJpZ2dlci1pY29uXCIgW25nQ2xhc3NdPVwiZHJvcGRvd25JY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3ZlcmxheVZpc2libGVcIiBbbmdDbGFzc109XCIncC1kcm9wZG93bi1wYW5lbCBwLWNvbXBvbmVudCdcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uc3RhcnQpPVwib25PdmVybGF5QW5pbWF0aW9uRW5kKCRldmVudClcIm9uT3ZlcmxheUFuaW1hdGlvbkVuZCBbbmdTdHlsZV09XCJwYW5lbFN0eWxlXCIgW2NsYXNzXT1cInBhbmVsU3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRyb3Bkb3duLWhlYWRlclwiICpuZ0lmPVwiZmlsdGVyXCIgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kcm9wZG93bi1maWx0ZXItY29udGFpbmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNmaWx0ZXIgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbdmFsdWVdPVwiZmlsdGVyVmFsdWV8fCcnXCIgY2xhc3M9XCJwLWRyb3Bkb3duLWZpbHRlciBwLWlucHV0dGV4dCBwLWNvbXBvbmVudFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cImZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgZmFsc2UpXCIgKGlucHV0KT1cIm9uRmlsdGVySW5wdXRDaGFuZ2UoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUZpbHRlckxhYmVsXCIgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIm92ZXJsYXlWaXNpYmxlID8gJ3AtaGlnaGxpZ2h0ZWQtb3B0aW9uJyA6IGxhYmVsSWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1kcm9wZG93bi1maWx0ZXItaWNvbiBwaSBwaS1zZWFyY2hcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRyb3Bkb3duLWl0ZW1zLXdyYXBwZXJcIiBbc3R5bGUubWF4LWhlaWdodF09XCJ2aXJ0dWFsU2Nyb2xsID8gJ2F1dG8nIDogKHNjcm9sbEhlaWdodHx8J2F1dG8nKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dWwgW2F0dHIuaWRdPVwibGlzdElkXCIgY2xhc3M9XCJwLWRyb3Bkb3duLWl0ZW1zXCIgW25nQ2xhc3NdPVwieydwLWRyb3Bkb3duLXZpcnR1YWxzY3JvbGwnOiB2aXJ0dWFsU2Nyb2xsfVwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LW9wdGdyb3VwIFtuZ0Zvck9mXT1cIm9wdGlvbnNUb0Rpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1kcm9wZG93bi1pdGVtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cFRlbXBsYXRlXCI+e3tnZXRPcHRpb25Hcm91cExhYmVsKG9wdGdyb3VwKXx8J2VtcHR5J319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXNsaXN0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGdyb3VwKSwgc2VsZWN0ZWRPcHRpb246IHNlbGVjdGVkT3B0aW9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXNsaXN0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb25zVG9EaXNwbGF5LCBzZWxlY3RlZE9wdGlvbjogc2VsZWN0ZWRPcHRpb259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbXNsaXN0IGxldC1vcHRpb25zIGxldC1zZWxlY3RlZE9wdGlvbj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsOyBlbHNlIHZpcnR1YWxTY3JvbGxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0aW9uIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93bkl0ZW0gW29wdGlvbl09XCJvcHRpb25cIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcHRpb24gPT0gb3B0aW9uXCIgW2xhYmVsXT1cImdldE9wdGlvbkxhYmVsKG9wdGlvbilcIiBbZGlzYWJsZWRdPVwiaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCI+PC9wLWRyb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZpcnR1YWxTY3JvbGxMaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cInNjcm9sbFRvU2VsZWN0ZWRWaXJ0dWFsU2Nyb2xsRWxlbWVudCgpXCIgI3ZpZXdwb3J0IFtuZ1N0eWxlXT1cInsnaGVpZ2h0Jzogc2Nyb2xsSGVpZ2h0fVwiIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiICpuZ0lmPVwidmlydHVhbFNjcm9sbCAmJiBvcHRpb25zVG9EaXNwbGF5ICYmIG9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4OyBsZXQgYyA9IGNvdW50OyBsZXQgZiA9IGZpcnN0OyBsZXQgbCA9IGxhc3Q7IGxldCBlID0gZXZlbjsgbGV0IG8gPSBvZGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93bkl0ZW0gW29wdGlvbl09XCJvcHRpb25cIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcHRpb24gPT0gb3B0aW9uXCIgW2xhYmVsXT1cImdldE9wdGlvbkxhYmVsKG9wdGlvbilcIiBbZGlzYWJsZWRdPVwiaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCI+PC9wLWRyb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpbHRlclZhbHVlICYmIGlzRW1wdHkoKVwiIGNsYXNzPVwicC1kcm9wZG93bi1lbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eUZpbHRlclRlbXBsYXRlICYmICFlbXB0eVRlbXBsYXRlOyBlbHNlIGVtcHR5RmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1wdHlGaWx0ZXJNZXNzYWdlTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5RmlsdGVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJUZW1wbGF0ZSB8fCBlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWZpbHRlclZhbHVlICYmIGlzRW1wdHkoKVwiIGNsYXNzPVwicC1kcm9wZG93bi1lbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eVRlbXBsYXRlOyBlbHNlIGVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1wdHlNZXNzYWdlTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQgcC1pbnB1dHdyYXBwZXInLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXNlZCB8fCBvdmVybGF5VmlzaWJsZSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0RST1BET1dOX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQsQWZ0ZXJDb250ZW50SW5pdCxBZnRlclZpZXdDaGVja2VkLE9uRGVzdHJveSxDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXI6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZWRpdGFibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTG9jYWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZWxlY3RJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlc2V0RmlsdGVyT25IaWRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyA9ICdwaSBwaS1jaGV2cm9uLWRvd24nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nID0gXCJpdGVtc1wiO1xuXG4gICAgQElucHV0KCkgYXV0b0Rpc3BsYXlGaXJzdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBncm91cDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGVtcHR5RmlsdGVyTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKSBlbXB0eU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGl0ZW1TaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuXG4gICAgQElucHV0KCkgYXJpYUZpbHRlckxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTWF0Y2hNb2RlOiBzdHJpbmcgPSBcImNvbnRhaW5zXCI7XG5cbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBzdHJpbmcgPSAncmlnaHQnO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uU3R5bGU6IHN0cmluZyA9ICdhYnNvbHV0ZSc7XG5cbiAgICBASW5wdXQoKSB0b29sdGlwU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXV0b2ZvY3VzRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJykgZmlsdGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW4nKSBhY2Nlc3NpYmxlVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0YWJsZUlucHV0JykgZWRpdGFibGVJbnB1dFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfTtcblxuICAgIHNldCBkaXNhYmxlZChfZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKF9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBfZGlzYWJsZWQ7XG4gICAgICAgIGlmICghKHRoaXMuY2QgYXMgVmlld1JlZikuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJsYXk6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaXRlbXNXcmFwcGVyOiBIVE1MRGl2RWxlbWVudDtcblxuICAgIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBlbXB0eUZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHNlbGVjdGVkT3B0aW9uOiBhbnk7XG5cbiAgICBfb3B0aW9uczogYW55W107XG5cbiAgICB2YWx1ZTogYW55O1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb3B0aW9uc1RvRGlzcGxheTogYW55W107XG5cbiAgICBob3ZlcjogYm9vbGVhbjtcblxuICAgIGZvY3VzZWQ6IGJvb2xlYW47XG5cbiAgICBvdmVybGF5VmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgb3B0aW9uc0NoYW5nZWQ6IGJvb2xlYW47XG5cbiAgICBwYW5lbDogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBkaW1lbnNpb25zVXBkYXRlZDogYm9vbGVhbjtcblxuICAgIGhvdmVyZWRJdGVtOiBhbnk7XG5cbiAgICBzZWxlY3RlZE9wdGlvblVwZGF0ZWQ6IGJvb2xlYW47XG5cbiAgICBfZmlsdGVyVmFsdWU6IHN0cmluZztcblxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG5cbiAgICBzZWFyY2hJbmRleDogbnVtYmVyO1xuXG4gICAgc2VhcmNoVGltZW91dDogYW55O1xuXG4gICAgcHJldmlvdXNTZWFyY2hDaGFyOiBzdHJpbmc7XG5cbiAgICBjdXJyZW50U2VhcmNoQ2hhcjogc3RyaW5nO1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgdmlydHVhbEF1dG9TY3JvbGxlZDogYm9vbGVhbjtcblxuICAgIHZpcnR1YWxTY3JvbGxTZWxlY3RlZEluZGV4OiBudW1iZXI7XG5cbiAgICB2aWV3UG9ydE9mZnNldFRvcDogbnVtYmVyID0gMDtcblxuICAgIHByZXZlbnRNb2RlbFRvdWNoZWQ6IGJvb2xlYW47XG5cbiAgICBpZDogc3RyaW5nID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIGxhYmVsSWQ6IHN0cmluZztcblxuICAgIGxpc3RJZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSwgcHVibGljIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RlZEl0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlGaWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncm91cCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24obnVsbCk7XG4gICAgICAgIHRoaXMubGFiZWxJZCA9IHRoaXMuaWQgKyAnX2xhYmVsJztcbiAgICAgICAgdGhpcy5saXN0SWQgPSB0aGlzLmlkICsgJ19saXN0JztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIHNldCBvcHRpb25zKHZhbDogYW55W10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbDtcbiAgICAgICAgdGhpcy5vcHRpb25zVG9EaXNwbGF5ID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vcHRpb25zQ2hhbmdlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlclZhbHVlICYmIHRoaXMuX2ZpbHRlclZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGZpbHRlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgZmlsdGVyVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVGaWx0ZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKcKge1xuICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyB0aGlzLmdldE9wdGlvbkxhYmVsKHRoaXMuc2VsZWN0ZWRPcHRpb24pIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlGaWx0ZXJNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9GSUxURVJfTUVTU0FHRSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZSAhPSBudWxsIHx8IHRoaXMudmFsdWUgIT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHVwZGF0ZUVkaXRhYmxlTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRhYmxlSW5wdXRWaWV3Q2hpbGQgJiYgdGhpcy5lZGl0YWJsZUlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGFibGVJbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gKHRoaXMuc2VsZWN0ZWRPcHRpb24gPyB0aGlzLmdldE9wdGlvbkxhYmVsKHRoaXMuc2VsZWN0ZWRPcHRpb24pIDogdGhpcy52YWx1ZXx8JycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiAob3B0aW9uLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25WYWx1ZSkgOiAodGhpcy5vcHRpb25MYWJlbCB8fCBvcHRpb24udmFsdWUgPT09IHVuZGVmaW5lZCA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgaXNPcHRpb25EaXNhYmxlZChvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25EaXNhYmxlZCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkRpc2FibGVkKSA6IChvcHRpb24uZGlzYWJsZWQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5kaXNhYmxlZCA6IGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBMYWJlbCkgOiAob3B0aW9uR3JvdXAubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uR3JvdXAubGFiZWwgOiBvcHRpb25Hcm91cCk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4gPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4pIDogb3B0aW9uR3JvdXAuaXRlbXM7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gZXZlbnQub3B0aW9uO1xuXG4gICAgICAgIGlmICghdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShldmVudCwgb3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuYWNjZXNzaWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9LCAxNTApO1xuICAgIH1cblxuICAgIHNlbGVjdEl0ZW0oZXZlbnQsIG9wdGlvbikge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiAhPSBvcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUVkaXRhYmxlTGFiZWwoKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3UG9ydE9mZnNldFRvcCA9IHRoaXMudmlld1BvcnQgPyB0aGlzLnZpZXdQb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoKSA6IDA7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNDaGFuZ2VkICYmIHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0NoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXgodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCAmJiB0aGlzLml0ZW1zV3JhcHBlcikge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnZpZXdQb3J0KSB7XG4gICAgICAgICAgICAgICAgbGV0IHJhbmdlID0gdGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaXJ0dWFsU2Nyb2xsU2VsZWN0ZWRJbmRleChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPiB0aGlzLnZpcnR1YWxTY3JvbGxTZWxlY3RlZEluZGV4IHx8IHJhbmdlLmVuZCA8IHRoaXMudmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3UG9ydC5zY3JvbGxUb0luZGV4KHRoaXMudmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLm92ZXJsYXksICdsaS5wLWhpZ2hsaWdodCcpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuc2Nyb2xsSW5WaWV3KHRoaXMuaXRlbXNXcmFwcGVyLCBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5vdmVybGF5LCAnbGkucC1oaWdobGlnaHQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVFZGl0YWJsZUxhYmVsKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVzZXRGaWx0ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJWaWV3Q2hpbGQgJiYgdGhpcy5maWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25zVG9EaXNwbGF5ID0gdGhpcy5vcHRpb25zO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmZpbmRPcHRpb24odmFsLCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkpO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9EaXNwbGF5Rmlyc3QgJiYgIXRoaXMucGxhY2Vob2xkZXIgJiYgIXRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5vcHRpb25zVG9EaXNwbGF5ICYmIHRoaXMub3B0aW9uc1RvRGlzcGxheS5sZW5ndGggJiYgIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLm9wdGlvbnNUb0Rpc3BsYXlbMF07XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25VcGRhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25Nb3VzZWNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgdGhpcy5pc0lucHV0Q2xpY2soZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuYWNjZXNzaWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5zaG93KCk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0lucHV0Q2xpY2soZXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1kcm9wZG93bi1jbGVhci1pY29uJykgfHxcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5pc1NhbWVOb2RlKHRoaXMuYWNjZXNzaWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgKHRoaXMuZWRpdGFibGVJbnB1dFZpZXdDaGlsZCAmJiBldmVudC50YXJnZXQuaXNTYW1lTm9kZSh0aGlzLmVkaXRhYmxlSW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkpO1xuICAgIH1cblxuICAgIGlzT3V0c2lkZUNsaWNrZWQoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMuZWwubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHwgKHRoaXMub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXkuY29udGFpbnMoPE5vZGU+IGV2ZW50LnRhcmdldCkpKTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMub3B0aW9uc1RvRGlzcGxheSB8fCAodGhpcy5vcHRpb25zVG9EaXNwbGF5ICYmIHRoaXMub3B0aW9uc1RvRGlzcGxheS5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIG9uRWRpdGFibGVJbnB1dENsaWNrKCkge1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBvbkVkaXRhYmxlSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRWRpdGFibGVJbnB1dENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheSA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zV3JhcHBlclNlbGVjdG9yID0gdGhpcy52aXJ0dWFsU2Nyb2xsID8gJy5jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnIDogJy5wLWRyb3Bkb3duLWl0ZW1zLXdyYXBwZXInO1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNXcmFwcGVyID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMub3ZlcmxheSwgaXRlbXNXcmFwcGVyU2VsZWN0b3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdvdmVybGF5JywgdGhpcy5vdmVybGF5LCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZExpc3RJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuaXRlbXNXcmFwcGVyLCAnLnAtZHJvcGRvd24taXRlbS5wLWhpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaXN0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdEl0ZW0uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdzdGFydCcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWaWV3Q2hpbGQgJiYgdGhpcy5maWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9mb2N1c0ZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3cuZW1pdChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUuZW1pdChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9TZWxlY3RlZFZpcnR1YWxTY3JvbGxFbGVtZW50KCkge1xuICAgICAgICBpZiAoIXRoaXMudmlydHVhbEF1dG9TY3JvbGxlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld1BvcnRPZmZzZXRUb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvT2Zmc2V0KHRoaXMudmlld1BvcnRPZmZzZXRUb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsU2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UG9ydC5zY3JvbGxUb0luZGV4KHRoaXMudmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aXJ0dWFsQXV0b1Njcm9sbGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVWaXJ0dWFsU2Nyb2xsU2VsZWN0ZWRJbmRleChyZXNldE9mZnNldCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkgJiYgdGhpcy5vcHRpb25zVG9EaXNwbGF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHJlc2V0T2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UG9ydE9mZnNldFRvcCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFNlbGVjdGVkSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh0aGlzLmdldE9wdGlvblZhbHVlKHRoaXMuc2VsZWN0ZWRPcHRpb24pLCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5LCB0aGlzLmFwcGVuZFRvKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkuc3R5bGUubWluV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkuc3R5bGUubWluV2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlciAmJiB0aGlzLnJlc2V0RmlsdGVyT25IaWRlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxBdXRvU2Nyb2xsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYWxpZ25PdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbylcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbGF0aXZlUG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmICghdGhpcy5wcmV2ZW50TW9kZWxUb3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmV2ZW50TW9kZWxUb3VjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZmluZFByZXZFbmFibGVkT3B0aW9uKGluZGV4KSB7XG4gICAgICAgIGxldCBwcmV2RW5hYmxlZE9wdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zVG9EaXNwbGF5ICYmIHRoaXMub3B0aW9uc1RvRGlzcGxheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAoaW5kZXggLSAxKTsgMCA8PSBpOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5vcHRpb25zVG9EaXNwbGF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcmV2RW5hYmxlZE9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXByZXZFbmFibGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3B0aW9uc1RvRGlzcGxheS5sZW5ndGggLSAxOyBpID49IGluZGV4IDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb24gPSB0aGlzLm9wdGlvbnNUb0Rpc3BsYXlbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2RW5hYmxlZE9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZXZFbmFibGVkT3B0aW9uO1xuICAgIH1cblxuICAgIGZpbmROZXh0RW5hYmxlZE9wdGlvbihpbmRleCkge1xuICAgICAgICBsZXQgbmV4dEVuYWJsZWRPcHRpb247XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc1RvRGlzcGxheSAmJiB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gKGluZGV4ICsgMSk7IGkgPCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5vcHRpb25zVG9EaXNwbGF5W2ldO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRFbmFibGVkT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbmV4dEVuYWJsZWRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHRoaXMub3B0aW9uc1RvRGlzcGxheVtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbmFibGVkT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dEVuYWJsZWRPcHRpb247XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBzZWFyY2g6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgIXRoaXMub3B0aW9uc1RvRGlzcGxheSB8fCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2goZXZlbnQud2hpY2gpIHtcbiAgICAgICAgICAgIC8vZG93blxuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVZpc2libGUgJiYgZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleCA9IHRoaXMuc2VsZWN0ZWRPcHRpb24gPyB0aGlzLmZpbmRPcHRpb25Hcm91cEluZGV4KHRoaXMuZ2V0T3B0aW9uVmFsdWUodGhpcy5zZWxlY3RlZE9wdGlvbiksIHRoaXMub3B0aW9uc1RvRGlzcGxheSkgOiAtMTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0SXRlbUluZGV4ID0gc2VsZWN0ZWRJdGVtSW5kZXguaXRlbUluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW1JbmRleCA8ICh0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W3NlbGVjdGVkSXRlbUluZGV4Lmdyb3VwSW5kZXhdKS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShldmVudCwgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKHRoaXMub3B0aW9uc1RvRGlzcGxheVtzZWxlY3RlZEl0ZW1JbmRleC5ncm91cEluZGV4XSlbbmV4dEl0ZW1JbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9uc1RvRGlzcGxheVtzZWxlY3RlZEl0ZW1JbmRleC5ncm91cEluZGV4ICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LCB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W3NlbGVjdGVkSXRlbUluZGV4Lmdyb3VwSW5kZXggKyAxXSlbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1RvRGlzcGxheSAmJiB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZXZlbnQsIHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbih0aGlzLm9wdGlvbnNUb0Rpc3BsYXlbMF0pWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9uID8gdGhpcy5maW5kT3B0aW9uSW5kZXgodGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKSwgdGhpcy5vcHRpb25zVG9EaXNwbGF5KSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRFbmFibGVkT3B0aW9uID0gdGhpcy5maW5kTmV4dEVuYWJsZWRPcHRpb24oc2VsZWN0ZWRJdGVtSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRFbmFibGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LCBuZXh0RW5hYmxlZE9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvblVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vdXBcbiAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IHRoaXMuZmluZE9wdGlvbkdyb3VwSW5kZXgodGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKSwgdGhpcy5vcHRpb25zVG9EaXNwbGF5KSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldkl0ZW1JbmRleCA9IHNlbGVjdGVkSXRlbUluZGV4Lml0ZW1JbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW1JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LCB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W3NlbGVjdGVkSXRlbUluZGV4Lmdyb3VwSW5kZXhdKVtwcmV2SXRlbUluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvblVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldkl0ZW1JbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldkdyb3VwID0gdGhpcy5vcHRpb25zVG9EaXNwbGF5W3NlbGVjdGVkSXRlbUluZGV4Lmdyb3VwSW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShldmVudCwgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKHByZXZHcm91cClbdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKHByZXZHcm91cCkubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9uID8gdGhpcy5maW5kT3B0aW9uSW5kZXgodGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKSwgdGhpcy5vcHRpb25zVG9EaXNwbGF5KSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldkVuYWJsZWRPcHRpb24gPSB0aGlzLmZpbmRQcmV2RW5hYmxlZE9wdGlvbihzZWxlY3RlZEl0ZW1JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2RW5hYmxlZE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LCBwcmV2RW5hYmxlZE9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vc3BhY2VcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVZpc2libGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUgJiYgKCF0aGlzLmZpbHRlciB8fCAodGhpcy5vcHRpb25zVG9EaXNwbGF5ICYmIHRoaXMub3B0aW9uc1RvRGlzcGxheS5sZW5ndGggPiAwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VzY2FwZSBhbmQgdGFiXG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vc2VhcmNoIGl0ZW0gYmFzZWQgb24ga2V5Ym9hcmQgaW5wdXRcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHNlYXJjaCAmJiAhZXZlbnQubWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWFyY2goZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGFyID0gZXZlbnQua2V5O1xuICAgICAgICB0aGlzLnByZXZpb3VzU2VhcmNoQ2hhciA9IHRoaXMuY3VycmVudFNlYXJjaENoYXI7XG4gICAgICAgIHRoaXMuY3VycmVudFNlYXJjaENoYXIgPSBjaGFyO1xuXG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VhcmNoQ2hhciA9PT0gdGhpcy5jdXJyZW50U2VhcmNoQ2hhcilcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmN1cnJlbnRTZWFyY2hDaGFyO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZSA/IHRoaXMuc2VhcmNoVmFsdWUgKyBjaGFyIDogY2hhcjtcblxuICAgICAgICBsZXQgbmV3T3B0aW9uO1xuICAgICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICAgICAgbGV0IHNlYXJjaEluZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IHRoaXMuZmluZE9wdGlvbkdyb3VwSW5kZXgodGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKSwgdGhpcy5vcHRpb25zVG9EaXNwbGF5KSA6IHtncm91cEluZGV4OiAwLCBpdGVtSW5kZXg6IDB9O1xuICAgICAgICAgICAgbmV3T3B0aW9uID0gdGhpcy5zZWFyY2hPcHRpb25XaXRoaW5Hcm91cChzZWFyY2hJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9uID8gdGhpcy5maW5kT3B0aW9uSW5kZXgodGhpcy5nZXRPcHRpb25WYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9uKSwgdGhpcy5vcHRpb25zVG9EaXNwbGF5KSA6IC0xO1xuICAgICAgICAgICAgbmV3T3B0aW9uID0gdGhpcy5zZWFyY2hPcHRpb24oKytzZWFyY2hJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3T3B0aW9uICYmICF0aGlzLmlzT3B0aW9uRGlzYWJsZWQobmV3T3B0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGV2ZW50LCBuZXdPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvblVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gbnVsbDtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9XG5cbiAgICBzZWFyY2hPcHRpb24oaW5kZXgpIHtcbiAgICAgICAgbGV0IG9wdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5zZWFyY2hPcHRpb25JblJhbmdlKGluZGV4LCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgICAgICBvcHRpb24gPSB0aGlzLnNlYXJjaE9wdGlvbkluUmFuZ2UoMCwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG5cbiAgICBzZWFyY2hPcHRpb25JblJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBvcHQgPSB0aGlzLm9wdGlvbnNUb0Rpc3BsYXlbaV07XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRPcHRpb25MYWJlbChvcHQpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKS5zdGFydHNXaXRoKCh0aGlzLnNlYXJjaFZhbHVlIGFzIGFueSkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpKSAmJiAhdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgc2VhcmNoT3B0aW9uV2l0aGluR3JvdXAoaW5kZXgpIHtcbiAgICAgICAgbGV0IG9wdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4Lmdyb3VwSW5kZXg7IGkgPCB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gKGluZGV4Lmdyb3VwSW5kZXggPT09IGkpID8gKGluZGV4Lml0ZW1JbmRleCArIDEpIDogMDsgaiA8IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbih0aGlzLm9wdGlvbnNUb0Rpc3BsYXlbaV0pLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHQgPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W2ldKVtqXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0KS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSkuc3RhcnRzV2l0aCgodGhpcy5zZWFyY2hWYWx1ZSBhcyBhbnkpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKSkgJiYgIXRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGluZGV4Lmdyb3VwSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8ICgoaW5kZXguZ3JvdXBJbmRleCA9PT0gaSkgPyBpbmRleC5pdGVtSW5kZXggOiB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W2ldKS5sZW5ndGgpOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcHQgPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4odGhpcy5vcHRpb25zVG9EaXNwbGF5W2ldKVtqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldE9wdGlvbkxhYmVsKG9wdCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpLnN0YXJ0c1dpdGgoKHRoaXMuc2VhcmNoVmFsdWUgYXMgYW55KS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSkpICYmICF0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmaW5kT3B0aW9uSW5kZXgodmFsOiBhbnksIG9wdHM6IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcbiAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgodmFsID09IG51bGwgJiYgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRzW2ldKSA9PSBudWxsKSB8fMKgT2JqZWN0VXRpbHMuZXF1YWxzKHZhbCwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRzW2ldKSwgdGhpcy5kYXRhS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBmaW5kT3B0aW9uR3JvdXBJbmRleCh2YWw6IGFueSwgb3B0czogYW55W10pOiBhbnkge1xuICAgICAgICBsZXQgZ3JvdXBJbmRleCwgaXRlbUluZGV4O1xuXG4gICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBncm91cEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSB0aGlzLmZpbmRPcHRpb25JbmRleCh2YWwsIHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRzW2ldKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHtncm91cEluZGV4OiBncm91cEluZGV4LCBpdGVtSW5kZXg6IGl0ZW1JbmRleH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kT3B0aW9uKHZhbDogYW55LCBvcHRzOiBhbnlbXSwgaW5Hcm91cD86IGJvb2xlYW4pOiBTZWxlY3RJdGVtIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAgJiYgIWluR3JvdXApIHtcbiAgICAgICAgICAgIGxldCBvcHQ6IFNlbGVjdEl0ZW07XG4gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IG9wdGdyb3VwIG9mIG9wdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0ID0gdGhpcy5maW5kT3B0aW9uKHZhbCwgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGdyb3VwKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5maW5kT3B0aW9uSW5kZXgodmFsLCBvcHRzKTtcbiAgICAgICAgICAgIHJldHVybiAoaW5kZXggIT0gLTEpID8gb3B0c1tpbmRleF0gOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWx0ZXJJbnB1dENoYW5nZShldmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgJiYgaW5wdXRWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc1RvRGlzcGxheSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3B0aW9uc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBmaWx0ZXI6IHRoaXMuX2ZpbHRlclZhbHVlfSk7XG4gICAgfVxuXG4gICAgYWN0aXZhdGVGaWx0ZXIoKSB7XG4gICAgICAgIGxldCBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gKHRoaXMuZmlsdGVyQnkgfHzCoHRoaXMub3B0aW9uTGFiZWwgfHwgJ2xhYmVsJykuc3BsaXQoJywnKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkR3JvdXBzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgb3B0Z3JvdXAgb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZFN1Yk9wdGlvbnMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRncm91cCksIHNlYXJjaEZpZWxkcywgdGhpcy5maWx0ZXJWYWx1ZSwgdGhpcy5maWx0ZXJNYXRjaE1vZGUsIHRoaXMuZmlsdGVyTG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkU3ViT3B0aW9ucyAmJiBmaWx0ZXJlZFN1Yk9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEdyb3Vwcy5wdXNoKHsuLi5vcHRncm91cCwgLi4ue1t0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW5dOiBmaWx0ZXJlZFN1Yk9wdGlvbnN9fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNUb0Rpc3BsYXkgPSBmaWx0ZXJlZEdyb3VwcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1RvRGlzcGxheSA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIodGhpcy5vcHRpb25zLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpXG4gICAgICAgICAgICBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnLnAtZHJvcGRvd24tbGFiZWwucC1pbnB1dHRleHQnKS5mb2N1cygpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaW5wdXRbcmVhZG9ubHldJykuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hcHBseUZvY3VzKCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0c2lkZUNsaWNrZWQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlICYmICFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBuZXcgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24odGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRWRpdGFibGVMYWJlbCgpO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5SGlkZSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtc1dyYXBwZXIgPSBudWxsO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZU92ZXJsYXlBcHBlbmQoKTtcbiAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsU2hhcmVkTW9kdWxlLFNjcm9sbGluZ01vZHVsZSxUb29sdGlwTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0Ryb3Bkb3duLFNoYXJlZE1vZHVsZSxTY3JvbGxpbmdNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0Ryb3Bkb3duLERyb3Bkb3duSXRlbV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Nb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dropdown/primeng-dropdown.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dropdown/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dropdown/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1kcm9wZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kcm9wZG93bi9wcmltZW5nLWRyb3Bkb3duLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dropdown/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dropdown/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dropdown/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './dropdown';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9kcm9wZG93bi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dialogservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dialogservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dialogservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,55 @@
+import { Injectable } from '@angular/core';
+import { DynamicDialogComponent } from './dynamicdialog';
+import { DynamicDialogInjector } from './dynamicdialog-injector';
+import { DynamicDialogConfig } from './dynamicdialog-config';
+import { DynamicDialogRef } from './dynamicdialog-ref';
+import * as i0 from "@angular/core";
+export class DialogService {
+    constructor(componentFactoryResolver, appRef, injector) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.appRef = appRef;
+        this.injector = injector;
+        this.dialogComponentRefMap = new Map();
+    }
+    open(componentType, config) {
+        const dialogRef = this.appendDialogComponentToBody(config);
+        this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;
+        return dialogRef;
+    }
+    appendDialogComponentToBody(config) {
+        const map = new WeakMap();
+        map.set(DynamicDialogConfig, config);
+        const dialogRef = new DynamicDialogRef();
+        map.set(DynamicDialogRef, dialogRef);
+        const sub = dialogRef.onClose.subscribe(() => {
+            this.dialogComponentRefMap.get(dialogRef).instance.close();
+        });
+        const destroySub = dialogRef.onDestroy.subscribe(() => {
+            this.removeDialogComponentFromBody(dialogRef);
+            destroySub.unsubscribe();
+            sub.unsubscribe();
+        });
+        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicDialogComponent);
+        const componentRef = componentFactory.create(new DynamicDialogInjector(this.injector, map));
+        this.appRef.attachView(componentRef.hostView);
+        const domElem = componentRef.hostView.rootNodes[0];
+        document.body.appendChild(domElem);
+        this.dialogComponentRefMap.set(dialogRef, componentRef);
+        return dialogRef;
+    }
+    removeDialogComponentFromBody(dialogRef) {
+        if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {
+            return;
+        }
+        const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);
+        this.appRef.detachView(dialogComponentRef.hostView);
+        dialogComponentRef.destroy();
+        this.dialogComponentRefMap.delete(dialogRef);
+    }
+}
+DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
+DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, decorators: [{
+            type: Injectable
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9keW5hbWljZGlhbG9nL2RpYWxvZ3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBMkYsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3ZELE1BQU0sT0FBTyxhQUFhO0lBSXRCLFlBQW9CLHdCQUFrRCxFQUFVLE1BQXNCLEVBQVUsUUFBa0I7UUFBOUcsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZsSSwwQkFBcUIsR0FBZ0UsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUcvRixDQUFDO0lBRU0sSUFBSSxDQUFDLGFBQXdCLEVBQUUsTUFBMkI7UUFDN0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUV0RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8sMkJBQTJCLENBQUMsTUFBMkI7UUFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMxQixHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdkcsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQzVGLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXhELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxTQUEyQjtRQUM3RCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1Y7UUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDOzswR0F0RFEsYUFBYTs4R0FBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEFwcGxpY2F0aW9uUmVmLCBJbmplY3RvciwgVHlwZSwgRW1iZWRkZWRWaWV3UmVmLCBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0luamVjdG9yIH0gZnJvbSAnLi9keW5hbWljZGlhbG9nLWluamVjdG9yJztcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcgfSBmcm9tICcuL2R5bmFtaWNkaWFsb2ctY29uZmlnJztcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICcuL2R5bmFtaWNkaWFsb2ctcmVmJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xuXG4gICAgZGlhbG9nQ29tcG9uZW50UmVmTWFwOiBNYXA8RHluYW1pY0RpYWxvZ1JlZiwgQ29tcG9uZW50UmVmPER5bmFtaWNEaWFsb2dDb21wb25lbnQ+PiA9IG5ldyBNYXAoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbihjb21wb25lbnRUeXBlOiBUeXBlPGFueT4sIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZykge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmFwcGVuZERpYWxvZ0NvbXBvbmVudFRvQm9keShjb25maWcpO1xuXG4gICAgICAgIHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmTWFwLmdldChkaWFsb2dSZWYpLmluc3RhbmNlLmNoaWxkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGU7XG5cbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZERpYWxvZ0NvbXBvbmVudFRvQm9keShjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcpIHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgbWFwLnNldChEeW5hbWljRGlhbG9nQ29uZmlnLCBjb25maWcpO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBEeW5hbWljRGlhbG9nUmVmKCk7XG4gICAgICAgIG1hcC5zZXQoRHluYW1pY0RpYWxvZ1JlZiwgZGlhbG9nUmVmKTtcblxuICAgICAgICBjb25zdCBzdWIgPSBkaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KGRpYWxvZ1JlZikuaW5zdGFuY2UuY2xvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGVzdHJveVN1YiA9IGRpYWxvZ1JlZi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRGlhbG9nQ29tcG9uZW50RnJvbUJvZHkoZGlhbG9nUmVmKTtcbiAgICAgICAgICAgIGRlc3Ryb3lTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRHluYW1pY0RpYWxvZ0NvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKG5ldyBEeW5hbWljRGlhbG9nSW5qZWN0b3IodGhpcy5pbmplY3RvciwgbWFwKSk7XG5cbiAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuc2V0KGRpYWxvZ1JlZiwgY29tcG9uZW50UmVmKTtcblxuICAgICAgICByZXR1cm4gZGlhbG9nUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRGlhbG9nQ29tcG9uZW50RnJvbUJvZHkoZGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmKSB7XG4gICAgICAgIGlmICghZGlhbG9nUmVmIHx8ICF0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5oYXMoZGlhbG9nUmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhbG9nQ29tcG9uZW50UmVmID0gdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KGRpYWxvZ1JlZik7XG4gICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoZGlhbG9nQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgZGlhbG9nQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuZGVsZXRlKGRpYWxvZ1JlZik7XG4gICAgfVxufVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-config.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-config.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-config.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+export class DynamicDialogConfig {
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHluYW1pY2RpYWxvZy9keW5hbWljZGlhbG9nLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sbUJBQW1CO0NBa0IvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBEeW5hbWljRGlhbG9nQ29uZmlnIHtcclxuXHRkYXRhPzogYW55O1xyXG5cdGhlYWRlcj86IHN0cmluZztcclxuXHRmb290ZXI/OiBzdHJpbmc7XHJcblx0d2lkdGg/OiBzdHJpbmc7XHJcblx0aGVpZ2h0Pzogc3RyaW5nO1xyXG5cdGNsb3NlT25Fc2NhcGU/OiBib29sZWFuO1xyXG5cdGJhc2VaSW5kZXg/OiBudW1iZXI7XHJcblx0YXV0b1pJbmRleD86IGJvb2xlYW47XHJcblx0ZGlzbWlzc2FibGVNYXNrPzogYm9vbGVhbjtcclxuXHRydGw/OiBib29sZWFuO1xyXG5cdHN0eWxlPzogYW55O1xyXG5cdGNvbnRlbnRTdHlsZT86IGFueTtcclxuXHRzdHlsZUNsYXNzPzogc3RyaW5nO1xyXG5cdHRyYW5zaXRpb25PcHRpb25zPzogc3RyaW5nO1xyXG5cdGNsb3NhYmxlPzogYm9vbGVhbjtcclxuXHRzaG93SGVhZGVyPzogYm9vbGVhbjtcclxuXHRtb2RhbD86IGJvb2xlYW47XHJcbn1cclxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-injector.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-injector.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-injector.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,13 @@
+export class DynamicDialogInjector {
+    constructor(_parentInjector, _additionalTokens) {
+        this._parentInjector = _parentInjector;
+        this._additionalTokens = _additionalTokens;
+    }
+    get(token, notFoundValue, flags) {
+        const value = this._additionalTokens.get(token);
+        if (value)
+            return value;
+        return this._parentInjector.get(token, notFoundValue);
+    }
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZy1pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9keW5hbWljZGlhbG9nL2R5bmFtaWNkaWFsb2ctaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHFCQUFxQjtJQUVqQyxZQUFvQixlQUF5QixFQUFVLGlCQUFvQztRQUF2RSxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFBSSxDQUFDO0lBSWhHLEdBQUcsQ0FBQyxLQUFVLEVBQUUsYUFBbUIsRUFBRSxLQUFXO1FBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBTSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUsIEluamVjdGlvblRva2VuLCBJbmplY3RGbGFncyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNEaWFsb2dJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuXHRcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgX2FkZGl0aW9uYWxUb2tlbnM6IFdlYWtNYXA8YW55LCBhbnk+KSB7IH1cclxuXHJcblx0Z2V0PFQ+KHRva2VuOiBUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogVDtcclxuXHRnZXQodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSk7XHJcblx0Z2V0KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU/OiBhbnksIGZsYWdzPzogYW55KSB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuX2FkZGl0aW9uYWxUb2tlbnMuZ2V0KHRva2VuKTtcclxuXHJcblx0XHRpZiAodmFsdWUpIHJldHVybiB2YWx1ZTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5fcGFyZW50SW5qZWN0b3IuZ2V0PGFueT4odG9rZW4sIG5vdEZvdW5kVmFsdWUpO1xyXG5cdH1cclxufVxyXG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-ref.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-ref.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog-ref.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import { Subject } from 'rxjs';
+export class DynamicDialogRef {
+    constructor() {
+        this._onClose = new Subject();
+        this.onClose = this._onClose.asObservable();
+        this._onDestroy = new Subject();
+        this.onDestroy = this._onDestroy.asObservable();
+    }
+    close(result) {
+        this._onClose.next(result);
+    }
+    destroy() {
+        this._onDestroy.next(null);
+    }
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZy1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHluYW1pY2RpYWxvZy9keW5hbWljZGlhbG9nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDNUI7UUFVaUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDNUMsWUFBTyxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXZDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BELGNBQVMsR0FBb0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQWQ1QyxDQUFDO0lBRWpCLEtBQUssQ0FBQyxNQUFZO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQU9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNEaWFsb2dSZWYge1xyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdGNsb3NlKHJlc3VsdD86IGFueSkge1xyXG5cdFx0dGhpcy5fb25DbG9zZS5uZXh0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVzdHJveSgpIHtcclxuXHRcdHRoaXMuX29uRGVzdHJveS5uZXh0KG51bGwpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfb25DbG9zZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICAgIG9uQ2xvc2U6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX29uQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdG9uRGVzdHJveTogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fb25EZXN0cm95LmFzT2JzZXJ2YWJsZSgpO1xyXG59XHJcbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,290 @@
+import { Component, NgModule, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate, animation, useAnimation } from '@angular/animations';
+import { DynamicDialogContent } from './dynamicdialogcontent';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "./dynamicdialog-config";
+import * as i2 from "./dynamicdialog-ref";
+import * as i3 from "primeng/api";
+import * as i4 from "@angular/common";
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+export class DynamicDialogComponent {
+    constructor(componentFactoryResolver, cd, renderer, config, dialogRef, zone, primeNGConfig) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.cd = cd;
+        this.renderer = renderer;
+        this.config = config;
+        this.dialogRef = dialogRef;
+        this.zone = zone;
+        this.primeNGConfig = primeNGConfig;
+        this.visible = true;
+        this.transformOptions = "scale(0.7)";
+    }
+    ngAfterViewInit() {
+        this.loadChildComponent(this.childComponentType);
+        this.cd.detectChanges();
+    }
+    loadChildComponent(componentType) {
+        let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);
+        let viewContainerRef = this.insertionPoint.viewContainerRef;
+        viewContainerRef.clear();
+        this.componentRef = viewContainerRef.createComponent(componentFactory);
+    }
+    moveOnTop() {
+        if (this.config.autoZIndex !== false) {
+            ZIndexUtils.set('modal', this.container, (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                if (this.config.modal !== false) {
+                    this.enableModality();
+                }
+                this.focus();
+                break;
+            case 'void':
+                if (this.config.modal !== false) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            this.onContainerDestroy();
+            this.dialogRef.destroy();
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        if (this.container && this.config.autoZIndex !== false) {
+            ZIndexUtils.clear(this.container);
+        }
+        if (this.config.modal !== false) {
+            this.disableModality();
+        }
+        this.container = null;
+    }
+    close() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    hide() {
+        if (this.dialogRef) {
+            this.dialogRef.close();
+        }
+    }
+    enableModality() {
+        if (this.config.closable !== false && this.config.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+        if (this.config.modal !== false) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.config.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.config.modal !== false) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 9) {
+            event.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.container);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (event.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    bindGlobalListeners() {
+        this.bindDocumentKeydownListener();
+        if (this.config.closeOnEscape !== false && this.config.closable !== false) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentKeydownListener();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentKeydownListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentKeydownListener = this.onKeydown.bind(this);
+            window.document.addEventListener('keydown', this.documentKeydownListener);
+        });
+    }
+    unbindDocumentKeydownListener() {
+        if (this.documentKeydownListener) {
+            window.document.removeEventListener('keydown', this.documentKeydownListener);
+            this.documentKeydownListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {
+                    this.hide();
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.onContainerDestroy();
+        if (this.componentRef) {
+            this.componentRef.destroy();
+        }
+    }
+}
+DynamicDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.DynamicDialogConfig }, { token: i2.DynamicDialogRef }, { token: i0.NgZone }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DynamicDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogComponent, selector: "p-dynamicDialog", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "insertionPoint", first: true, predicate: DynamicDialogContent, descendants: true }, { propertyName: "maskViewChild", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return DynamicDialogContent; }), selector: "[pDynamicDialogContent]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dynamicDialog', template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.DynamicDialogConfig }, { type: i2.DynamicDialogRef }, { type: i0.NgZone }, { type: i3.PrimeNGConfig }]; }, propDecorators: { insertionPoint: [{
+                type: ViewChild,
+                args: [DynamicDialogContent]
+            }], maskViewChild: [{
+                type: ViewChild,
+                args: ['mask']
+            }] } });
+export class DynamicDialogModule {
+}
+DynamicDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DynamicDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, declarations: [DynamicDialogComponent, DynamicDialogContent], imports: [CommonModule] });
+DynamicDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    declarations: [DynamicDialogComponent, DynamicDialogContent],
+                    entryComponents: [DynamicDialogComponent]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9keW5hbWljZGlhbG9nL2R5bmFtaWNkaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWtDLFNBQVMsRUFBNEYsdUJBQXVCLEVBQVcsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOU8sT0FBTyxFQUFFLE9BQU8sRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUc1QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDNUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDakQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDdEUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQzVCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQy9FLENBQUMsQ0FBQztBQTRDSCxNQUFNLE9BQU8sc0JBQXNCO0lBMEJsQyxZQUFvQix3QkFBa0QsRUFBVSxF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LFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjt5UkFVNkIsY0FBYztzQkFBOUMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRVosYUFBYTtzQkFBL0IsU0FBUzt1QkFBQyxNQUFNOztBQXFPbEIsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQS9PbkIsc0JBQXNCLEVBNE9LLG9CQUFvQixhQURqRCxZQUFZO2lIQUlWLG1CQUFtQixZQUp0QixDQUFDLFlBQVksQ0FBQzsyRkFJWCxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQztvQkFDNUQsZUFBZSxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBOZ01vZHVsZSwgVHlwZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSwgQ29tcG9uZW50UmVmLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgUmVuZGVyZXIyLCBOZ1pvbmUsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3UmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJpZ2dlcixzdHlsZSx0cmFuc2l0aW9uLGFuaW1hdGUsQW5pbWF0aW9uRXZlbnQsIGFuaW1hdGlvbiwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29udGVudCB9IGZyb20gJy4vZHluYW1pY2RpYWxvZ2NvbnRlbnQnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZyB9IGZyb20gJy4vZHluYW1pY2RpYWxvZy1jb25maWcnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAnLi9keW5hbWljZGlhbG9nLXJlZic7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuY29uc3Qgc2hvd0FuaW1hdGlvbiA9IGFuaW1hdGlvbihbXG4gICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd7e3RyYW5zZm9ybX19Jywgb3BhY2l0eTogMCB9KSxcbiAgICBhbmltYXRlKCd7e3RyYW5zaXRpb259fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAnbm9uZScsIG9wYWNpdHk6IDEgfSkpXG5dKTtcblxuY29uc3QgaGlkZUFuaW1hdGlvbiA9IGFuaW1hdGlvbihbXG4gICAgYW5pbWF0ZSgne3t0cmFuc2l0aW9ufX0nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pKVxuXSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3AtZHluYW1pY0RpYWxvZycsXG5cdHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI21hc2sgW25nQ2xhc3NdPVwieydwLWRpYWxvZy1tYXNrJzp0cnVlLCAncC1jb21wb25lbnQtb3ZlcmxheS1lbnRlciBwLWRpYWxvZy1tYXNrLXNjcm9sbGJsb2NrZXInOiBjb25maWcubW9kYWwgIT09IGZhbHNlfVwiPlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3AtZGlhbG9nIHAtZHluYW1pYy1kaWFsb2cgcC1jb21wb25lbnQnOnRydWUsICdwLWRpYWxvZy1ydGwnOiBjb25maWcucnRsfVwiIFtuZ1N0eWxlXT1cImNvbmZpZy5zdHlsZVwiIFtjbGFzc109XCJjb25maWcuc3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgW0BhbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zZm9ybTogdHJhbnNmb3JtT3B0aW9ucywgdHJhbnNpdGlvbjogY29uZmlnLnRyYW5zaXRpb25PcHRpb25zIHx8ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSd9fVwiXG4gICAgICAgICAgICAgICAgKEBhbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCIgcm9sZT1cImRpYWxvZ1wiICpuZ0lmPVwidmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbmZpZy53aWR0aFwiIFtzdHlsZS5oZWlnaHRdPVwiY29uZmlnLmhlaWdodFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWRpYWxvZy1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5zaG93SGVhZGVyID09PSBmYWxzZSA/IGZhbHNlOiB0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1kaWFsb2ctdGl0bGVcIj57e2NvbmZpZy5oZWFkZXJ9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGlhbG9nLWhlYWRlci1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbbmdDbGFzc109XCIncC1kaWFsb2ctaGVhZGVyLWljb24gcC1kaWFsb2ctaGVhZGVyLW1heGltaXplIHAtbGluaydcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhpZGUoKVwiIChrZXlkb3duLmVudGVyKT1cImhpZGUoKVwiICpuZ0lmPVwiY29uZmlnLmNsb3NhYmxlICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1kaWFsb2ctaGVhZGVyLWNsb3NlLWljb24gcGkgcGktdGltZXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZGlhbG9nLWNvbnRlbnRcIiBbbmdTdHlsZV09XCJjb25maWcuY29udGVudFN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwRHluYW1pY0RpYWxvZ0NvbnRlbnQ+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kaWFsb2ctZm9vdGVyXCIgKm5nSWY9XCJjb25maWcuZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnLmZvb3Rlcn19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cdGAsXG5cdGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiB2aXNpYmxlJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihzaG93QW5pbWF0aW9uKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgdXNlQW5pbWF0aW9uKGhpZGVBbmltYXRpb24pXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4uL2RpYWxvZy9kaWFsb2cuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cblx0dmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cblx0Y29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcblxuXHRtYXNrOiBIVE1MRGl2RWxlbWVudDtcblxuXHRAVmlld0NoaWxkKER5bmFtaWNEaWFsb2dDb250ZW50KSBpbnNlcnRpb25Qb2ludDogRHluYW1pY0RpYWxvZ0NvbnRlbnQ7XG5cblx0QFZpZXdDaGlsZCgnbWFzaycpIG1hc2tWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cblx0Y2hpbGRDb21wb25lbnRUeXBlOiBUeXBlPGFueT47XG5cbiAgICBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgd3JhcHBlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBkb2N1bWVudEtleWRvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICB0cmFuc2Zvcm1PcHRpb25zOiBzdHJpbmcgPSBcInNjYWxlKDAuNylcIjtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG5cdFx0XHRwdWJsaWMgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIGRpYWxvZ1JlZjogRHluYW1pY0RpYWxvZ1JlZiwgcHVibGljIHpvbmU6IE5nWm9uZSwgcHVibGljIHByaW1lTkdDb25maWc6IFByaW1lTkdDb25maWcpIHsgfVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmxvYWRDaGlsZENvbXBvbmVudCh0aGlzLmNoaWxkQ29tcG9uZW50VHlwZSk7XG5cdFx0dGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHRsb2FkQ2hpbGRDb21wb25lbnQoY29tcG9uZW50VHlwZTogVHlwZTxhbnk+KSB7XG5cdFx0bGV0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRUeXBlKTtcblxuXHRcdGxldCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5pbnNlcnRpb25Qb2ludC52aWV3Q29udGFpbmVyUmVmO1xuXHRcdHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcblxuXHRcdHRoaXMuY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG5cdH1cblxuXHRtb3ZlT25Ub3AoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvWkluZGV4ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtb2RhbCcsIHRoaXMuY29udGFpbmVyLCAodGhpcy5jb25maWcuYmFzZVpJbmRleHx8MCkgKyB0aGlzLnByaW1lTkdDb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICAgICAgICAgIHRoaXMud3JhcHBlci5zdHlsZS56SW5kZXggPSBTdHJpbmcocGFyc2VJbnQodGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4LCAxMCkgLSAxKTtcblx0XHR9XG4gICAgfVxuXG5cdG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG5cdFx0c3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcblx0XHRcdGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIgPSB0aGlzLmNvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuXHRcdFx0XHR0aGlzLm1vdmVPblRvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdsb2JhbExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm1vZGFsICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1vZGFsaXR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcubW9kYWwgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy53cmFwcGVyLCAncC1jb21wb25lbnQtb3ZlcmxheS1sZWF2ZScpO1xuICAgICAgICAgICAgICAgIH1cblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdG9uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuXHRcdGlmIChldmVudC50b1N0YXRlID09PSAndm9pZCcpIHtcbiAgICAgICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG5cdFx0XHR0aGlzLmRpYWxvZ1JlZi5kZXN0cm95KCk7XG5cdFx0fVxuXHR9XG5cblx0b25Db250YWluZXJEZXN0cm95KCkge1xuXHRcdHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29uZmlnLmF1dG9aSW5kZXggIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcubW9kYWwgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcblx0fVxuXG5cdGNsb3NlKCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTW9kYWxpdHkoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbG9zYWJsZSAhPT0gZmFsc2UgJiYgdGhpcy5jb25maWcuZGlzbWlzc2FibGVNYXNrKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy53cmFwcGVyLCAnbW91c2Vkb3duJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53cmFwcGVyICYmIHRoaXMud3JhcHBlci5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcubW9kYWwgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZU1vZGFsaXR5KCkge1xuICAgICAgICBpZiAodGhpcy53cmFwcGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGlzbWlzc2FibGVNYXNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRNYXNrQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcubW9kYWwgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEodGhpcy5jZCBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGxldCBmb2N1c2FibGVFbGVtZW50cyA9IERvbUhhbmRsZXIuZ2V0Rm9jdXNhYmxlRWxlbWVudHModGhpcy5jb250YWluZXIpO1xuXG4gICAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudHMgJiYgZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICghZm9jdXNhYmxlRWxlbWVudHNbMF0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNlZEluZGV4ID0gZm9jdXNhYmxlRWxlbWVudHMuaW5kZXhPZihmb2N1c2FibGVFbGVtZW50c1swXS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1tmb2N1c2VkSW5kZXggLSAxXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IChmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgbGV0IGZvY3VzYWJsZSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lciwgJ1thdXRvZm9jdXNdJyk7XG4gICAgICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmb2N1c2FibGUuZm9jdXMoKSwgNSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuXHRiaW5kR2xvYmFsTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jbG9zZU9uRXNjYXBlICE9PSBmYWxzZSAmJiB0aGlzLmNvbmZpZy5jbG9zYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZEdsb2JhbExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyID0gdGhpcy5vbktleWRvd24uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50S2V5ZG93bkxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG5cdGJpbmREb2N1bWVudEVzY2FwZUxpc3RlbmVyKCkge1xuICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5tYXNrVmlld0NoaWxkID8gdGhpcy5tYXNrVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMjcpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQodGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4KSA9PSBaSW5kZXhVdGlscy5nZXRDdXJyZW50KCkpIHtcblx0XHRcdFx0XHR0aGlzLmhpZGUoKTtcblx0XHRcdFx0fVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudEVzY2FwZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRNYXNrQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0NsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMubWFza0NsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG5cblx0XHRpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcblx0XHRcdHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cbn1cblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG5cdGRlY2xhcmF0aW9uczogW0R5bmFtaWNEaWFsb2dDb21wb25lbnQsIER5bmFtaWNEaWFsb2dDb250ZW50XSxcblx0ZW50cnlDb21wb25lbnRzOiBbRHluYW1pY0RpYWxvZ0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0RpYWxvZ01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialogcontent.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialogcontent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/dynamicdialogcontent.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,19 @@
+import { Directive } from '@angular/core';
+import * as i0 from "@angular/core";
+export class DynamicDialogContent {
+    constructor(viewContainerRef) {
+        this.viewContainerRef = viewContainerRef;
+    }
+}
+DynamicDialogContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
+DynamicDialogContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogContent, selector: "[pDynamicDialogContent]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDynamicDialogContent]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY2RpYWxvZ2NvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZHluYW1pY2RpYWxvZy9keW5hbWljZGlhbG9nY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7QUFRNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUVoQyxZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7O2lIQUY3QyxvQkFBb0I7cUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQU5oQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsV0FBVztxQkFDckI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3BEeW5hbWljRGlhbG9nQ29udGVudF0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRGlhbG9nQ29udGVudCB7XG5cblx0Y29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/primeng-dynamicdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1keW5hbWljZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2R5bmFtaWNkaWFsb2cvcHJpbWVuZy1keW5hbWljZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/dynamicdialog/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+export * from './dialogservice';
+export * from './dynamicdialog';
+export * from './dynamicdialog-config';
+export * from './dynamicdialog-injector';
+export * from './dynamicdialog-ref';
+export * from './dynamicdialog';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9keW5hbWljZGlhbG9nL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpYWxvZ3NlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pY2RpYWxvZy1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljZGlhbG9nLWluamVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pY2RpYWxvZy1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljZGlhbG9nJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/editor/editor.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/editor/editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/editor/editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,258 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChild, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, Header, PrimeTemplate } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as Quill from "quill";
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const EDITOR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Editor),
+    multi: true
+};
+export class Editor {
+    constructor(el) {
+        this.el = el;
+        this.onTextChange = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onInit = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterViewInit() {
+        let editorElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-content');
+        let toolbarElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-toolbar');
+        let defaultModule = { toolbar: toolbarElement };
+        let modules = this.modules ? { ...defaultModule, ...this.modules } : defaultModule;
+        this.quill = new Quill(editorElement, {
+            modules: modules,
+            placeholder: this.placeholder,
+            readOnly: this.readonly,
+            theme: 'snow',
+            formats: this.formats,
+            bounds: this.bounds,
+            debug: this.debug,
+            scrollingContainer: this.scrollingContainer
+        });
+        if (this.value) {
+            this.quill.setContents(this.quill.clipboard.convert(this.value));
+        }
+        this.quill.on('text-change', (delta, oldContents, source) => {
+            if (source === 'user') {
+                let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;
+                let text = this.quill.getText().trim();
+                if (html === '<p><br></p>') {
+                    html = null;
+                }
+                this.onTextChange.emit({
+                    htmlValue: html,
+                    textValue: text,
+                    delta: delta,
+                    source: source
+                });
+                this.onModelChange(html);
+                this.onModelTouched();
+            }
+        });
+        this.quill.on('selection-change', (range, oldRange, source) => {
+            this.onSelectionChange.emit({
+                range: range,
+                oldRange: oldRange,
+                source: source
+            });
+        });
+        this.onInit.emit({
+            editor: this.quill
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.quill) {
+            if (value)
+                this.quill.setContents(this.quill.clipboard.convert(value));
+            else
+                this.quill.setText('');
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    getQuill() {
+        return this.quill;
+    }
+    get readonly() {
+        return this._readonly;
+    }
+    set readonly(val) {
+        this._readonly = val;
+        if (this.quill) {
+            if (this._readonly)
+                this.quill.disable();
+            else
+                this.quill.enable();
+        }
+    }
+}
+Editor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Editor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Editor, selector: "p-editor", inputs: { style: "style", styleClass: "styleClass", placeholder: "placeholder", formats: "formats", modules: "modules", bounds: "bounds", scrollingContainer: "scrollingContainer", debug: "debug", readonly: "readonly" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", onInit: "onInit" }, host: { classAttribute: "p-element" }, providers: [EDITOR_VALUE_ACCESSOR], queries: [{ propertyName: "toolbar", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, isInline: true, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-editor', template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, providers: [EDITOR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onTextChange: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], toolbar: [{
+                type: ContentChild,
+                args: [Header]
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], formats: [{
+                type: Input
+            }], modules: [{
+                type: Input
+            }], bounds: [{
+                type: Input
+            }], scrollingContainer: [{
+                type: Input
+            }], debug: [{
+                type: Input
+            }], onInit: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], readonly: [{
+                type: Input
+            }] } });
+export class EditorModule {
+}
+EditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+EditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, declarations: [Editor], imports: [CommonModule], exports: [Editor, SharedModule] });
+EditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Editor, SharedModule],
+                    declarations: [Editor]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQTBCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxVQUFVLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUNsTyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFBO0FBQzlELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFDLGlCQUFpQixFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7QUFFL0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQVE7SUFDeEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUE4REYsTUFBTSxPQUFPLE1BQU07SUF3Q2YsWUFBbUIsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUF0Q3ZCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFvQjFELFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVF6RCxrQkFBYSxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVuQyxtQkFBYyxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQU1B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aW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixBZnRlclZpZXdJbml0LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsQ29udGVudENoaWxkLGZvcndhcmRSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQWZ0ZXJDb250ZW50SW5pdCwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1NoYXJlZE1vZHVsZSxIZWFkZXIsIFByaW1lVGVtcGxhdGV9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0ICogYXMgUXVpbGwgZnJvbSBcInF1aWxsXCI7XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVkaXRvciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLWVkaXRvci1jb250YWluZXInXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWVkaXRvci10b29sYmFyXCIgKm5nSWY9XCJ0b29sYmFyIHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWVkaXRvci10b29sYmFyXCIgKm5nSWY9XCIhdG9vbGJhciAmJiAhaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxXCI+SGVhZGluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+U3ViaGVhZGluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+Tm9ybWFsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtZm9udFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+U2FucyBTZXJpZjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzZXJpZlwiPlNlcmlmPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbm9zcGFjZVwiPk1vbm9zcGFjZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1ib2xkXCIgYXJpYS1sYWJlbD1cIkJvbGRcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pdGFsaWNcIiBhcmlhLWxhYmVsPVwiSXRhbGljXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtdW5kZXJsaW5lXCIgYXJpYS1sYWJlbD1cIlVuZGVybGluZVwiIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1jb2xvclwiPjwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYmFja2dyb3VuZFwiPjwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cIm9yZGVyZWRcIiBhcmlhLWxhYmVsPVwiT3JkZXJlZCBMaXN0XCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwiYnVsbGV0XCIgYXJpYS1sYWJlbD1cIlVub3JkZXJlZCBMaXN0XCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2VudGVyXCI+Y2VudGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmlnaHRcIj5yaWdodDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImp1c3RpZnlcIj5qdXN0aWZ5PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIiBhcmlhLWxhYmVsPVwiSW5zZXJ0IExpbmtcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbWFnZVwiIGFyaWEtbGFiZWw9XCJJbnNlcnQgSW1hZ2VcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jb2RlLWJsb2NrXCIgYXJpYS1sYWJlbD1cIkluc2VydCBDb2RlIEJsb2NrXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNsZWFuXCIgYXJpYS1sYWJlbD1cIlJlbW92ZSBTdHlsZXNcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1lZGl0b3ItY29udGVudFwiIFtuZ1N0eWxlXT1cInN0eWxlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbRURJVE9SX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0b3IgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LEFmdGVyQ29udGVudEluaXQsQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQE91dHB1dCgpIG9uVGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIHRvb2xiYXI7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZvcm1hdHM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KCkgbW9kdWxlczogYW55O1xuXG4gICAgQElucHV0KCkgYm91bmRzOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxpbmdDb250YWluZXI6IGFueTtcblxuICAgIEBJbnB1dCgpIGRlYnVnOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgb25Jbml0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHZhbHVlOiBzdHJpbmc7XG5cbiAgICBfcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBxdWlsbDogYW55O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMuZWwubmF0aXZlRWxlbWVudCAsJ2Rpdi5wLWVkaXRvci1jb250ZW50Jyk7XG4gICAgICAgIGxldCB0b29sYmFyRWxlbWVudCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgLCdkaXYucC1lZGl0b3ItdG9vbGJhcicpO1xuICAgICAgICBsZXQgZGVmYXVsdE1vZHVsZSAgPSB7dG9vbGJhcjogdG9vbGJhckVsZW1lbnR9O1xuICAgICAgICBsZXQgbW9kdWxlcyA9IHRoaXMubW9kdWxlcyA/IHsuLi5kZWZhdWx0TW9kdWxlLCAuLi50aGlzLm1vZHVsZXN9IDogZGVmYXVsdE1vZHVsZTtcblxuICAgICAgICB0aGlzLnF1aWxsID0gbmV3IFF1aWxsKGVkaXRvckVsZW1lbnQsIHtcbiAgICAgICAgICAgIG1vZHVsZXM6IG1vZHVsZXMsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgdGhlbWU6ICdzbm93JyxcbiAgICAgICAgICAgIGZvcm1hdHM6IHRoaXMuZm9ybWF0cyxcbiAgICAgICAgICAgIGJvdW5kczogdGhpcy5ib3VuZHMsXG4gICAgICAgICAgICBkZWJ1ZzogdGhpcy5kZWJ1ZyxcbiAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcjogdGhpcy5zY3JvbGxpbmdDb250YWluZXJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGwuc2V0Q29udGVudHModGhpcy5xdWlsbC5jbGlwYm9hcmQuY29udmVydCh0aGlzLnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkQ29udGVudHMsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gJ3VzZXInKSB7XG4gICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoZWRpdG9yRWxlbWVudCwgJy5xbC1lZGl0b3InKS5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgbGV0IHRleHQgPSB0aGlzLnF1aWxsLmdldFRleHQoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKGh0bWwgPT09ICc8cD48YnI+PC9wPicpIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblRleHRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxWYWx1ZTogaHRtbCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dFZhbHVlOiB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICBkZWx0YTogZGVsdGEsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoaHRtbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1aWxsLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgKHJhbmdlLCBvbGRSYW5nZSwgc291cmNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIHJhbmdlOiByYW5nZSxcbiAgICAgICAgICAgICAgICBvbGRSYW5nZTogb2xkUmFuZ2UsXG4gICAgICAgICAgICAgICAgc291cmNlOiBzb3VyY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uSW5pdC5lbWl0KHtcbiAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5xdWlsbCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKVxuICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuc2V0Q29udGVudHModGhpcy5xdWlsbC5jbGlwYm9hcmQuY29udmVydCh2YWx1ZSkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMucXVpbGwuc2V0VGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIGdldFF1aWxsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWlsbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgICB9XG5cbiAgICBzZXQgcmVhZG9ubHkodmFsOmJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSB2YWw7XG5cbiAgICAgICAgaWYgKHRoaXMucXVpbGwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZWFkb25seSlcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmRpc2FibGUoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtFZGl0b3IsU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtFZGl0b3JdXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRvck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/editor/primeng-editor.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/editor/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/editor/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZWRpdG9yL3ByaW1lbmctZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/editor/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/editor/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/editor/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './editor';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9lZGl0b3IvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWRpdG9yJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/fieldset/fieldset.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fieldset/fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fieldset/fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,174 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+let idx = 0;
+export class Fieldset {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-fieldset-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.collapsed)
+            this.expand(event);
+        else
+            this.collapse(event);
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+    }
+}
+Fieldset.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Fieldset.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Fieldset, selector: "p-fieldset", inputs: { legend: "legend", toggleable: "toggleable", collapsed: "collapsed", style: "style", styleClass: "styleClass", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, isInline: true, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('fieldsetContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fieldset', template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, animations: [
+                        trigger('fieldsetContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { legend: [{
+                type: Input
+            }], toggleable: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class FieldsetModule {
+}
+FieldsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FieldsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, declarations: [Fieldset], imports: [CommonModule, RippleModule], exports: [Fieldset, SharedModule] });
+FieldsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Fieldset, SharedModule],
+                    declarations: [Fieldset]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmllbGRzZXQvZmllbGRzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQVksdUJBQXVCLEVBQUUsaUJBQWlCLEVBQStCLGVBQWUsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM1TCxPQUFPLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFNUMsSUFBSSxHQUFHLEdBQVcsQ0FBQyxDQUFDO0FBaURwQixNQUFNLE9BQU8sUUFBUTtJQTRCakIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUF0QnpCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFMUIsb0JBQWUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNdkQsc0JBQWlCLEdBQVcsc0NBQXNDLENBQUM7UUFZNUUsT0FBRSxHQUFXLGNBQWMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUZFLENBQUM7SUFJdEMsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFD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QUFFLENBQUMsS0FBSyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQzs0QkFDaEcsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lHQUlRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUUwQixTQUFTO3NCQUF4QyxlQUFlO3VCQUFDLGFBQWE7O0FBb0VsQyxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQXhGZCxRQUFRLGFBb0ZQLFlBQVksRUFBQyxZQUFZLGFBcEYxQixRQUFRLEVBcUZFLFlBQVk7NEdBR3RCLGNBQWMsWUFKZCxDQUFDLFlBQVksRUFBQyxZQUFZLENBQUMsRUFDakIsWUFBWTsyRkFHdEIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUMsWUFBWSxDQUFDO29CQUNoQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixFbGVtZW50UmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJDb250ZW50SW5pdCwgUXVlcnlMaXN0LCBDb250ZW50Q2hpbGRyZW4sIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHJpZ2dlcixzdGF0ZSxzdHlsZSx0cmFuc2l0aW9uLGFuaW1hdGV9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1NoYXJlZE1vZHVsZSwgUHJpbWVUZW1wbGF0ZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCbG9ja2FibGVVSX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcblxubGV0IGlkeDogbnVtYmVyID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWZpZWxkc2V0JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZmllbGRzZXQgW2F0dHIuaWRdPVwiaWRcIiBbbmdDbGFzc109XCJ7J3AtZmllbGRzZXQgcC1jb21wb25lbnQnOiB0cnVlLCAncC1maWVsZHNldC10b2dnbGVhYmxlJzogdG9nZ2xlYWJsZX1cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwicC1maWVsZHNldC1sZWdlbmRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlYWJsZTsgZWxzZSBsZWdlbmRDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIHRhYmluZGV4PVwiMFwiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZCArICctY29udGVudCdcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiFjb2xsYXBzZWRcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZpZWxkc2V0LXRvZ2dsZXIgcGlcIiAqbmdJZj1cInRvZ2dsZWFibGVcIiBbbmdDbGFzc109XCJ7J3BpLW1pbnVzJzogIWNvbGxhcHNlZCwncGktcGx1cyc6Y29sbGFwc2VkfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZWdlbmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xlZ2VuZENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1maWVsZHNldC1sZWdlbmQtdGV4dFwiPnt7bGVnZW5kfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInAtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8ZGl2IFthdHRyLmlkXT1cImlkICsgJy1jb250ZW50J1wiIGNsYXNzPVwicC10b2dnbGVhYmxlLWNvbnRlbnRcIiBbQGZpZWxkc2V0Q29udGVudF09XCJjb2xsYXBzZWQgPyB7dmFsdWU6ICdoaWRkZW4nLCBwYXJhbXM6IHt0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucywgaGVpZ2h0OiAnMCd9fSA6IHt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHt0cmFuc2l0aW9uUGFyYW1zOiBhbmltYXRpbmcgPyB0cmFuc2l0aW9uT3B0aW9ucyA6ICcwbXMnLCBoZWlnaHQ6ICcqJ319XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImNvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEBmaWVsZHNldENvbnRlbnQuZG9uZSk9XCJvblRvZ2dsZURvbmUoJGV2ZW50KVwiIHJvbGU9XCJyZWdpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1maWVsZHNldC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2ZpZWxkc2V0Q29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW4nLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJ1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA8PT4gaGlkZGVuJywgW3N0eWxlKHtvdmVyZmxvdzogJ2hpZGRlbid9KSwgYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgwKSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmllbGRzZXQuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRmllbGRzZXQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LEJsb2NrYWJsZVVJIHtcblxuICAgIEBJbnB1dCgpIGxlZ2VuZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdG9nZ2xlYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNvbGxhcHNlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVUb2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHB1YmxpYyBhbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBpZDogc3RyaW5nID0gYHAtZmllbGRzZXQtJHtpZHgrK31gO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5hbmltYXRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkJlZm9yZVRvZ2dsZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgY29sbGFwc2VkOiB0aGlzLmNvbGxhcHNlZH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZClcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kKGV2ZW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZShldmVudCk7XG5cbiAgICAgICAgdGhpcy5vbkFmdGVyVG9nZ2xlLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBjb2xsYXBzZWQ6IHRoaXMuY29sbGFwc2VkfSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZXhwYW5kKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5jb2xsYXBzZWQpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLmNvbGxhcHNlZCk7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlRG9uZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0ZpZWxkc2V0LFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRmllbGRzZXRdXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkc2V0TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/fieldset/primeng-fieldset.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fieldset/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fieldset/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1maWVsZHNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWVsZHNldC9wcmltZW5nLWZpZWxkc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/fieldset/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fieldset/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fieldset/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './fieldset';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWVsZHNldC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWVsZHNldCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/fileupload/fileupload.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fileupload/fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fileupload/fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,580 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { MessagesModule } from 'primeng/messages';
+import { ProgressBarModule } from 'primeng/progressbar';
+import { DomHandler } from 'primeng/dom';
+import { TranslationKeys } from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import { HttpEventType } from "@angular/common/http";
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/platform-browser";
+import * as i2 from "@angular/common/http";
+import * as i3 from "primeng/api";
+import * as i4 from "primeng/button";
+import * as i5 from "primeng/progressbar";
+import * as i6 from "primeng/messages";
+import * as i7 from "@angular/common";
+import * as i8 from "primeng/ripple";
+export class FileUpload {
+    constructor(el, sanitizer, zone, http, cd, config) {
+        this.el = el;
+        this.sanitizer = sanitizer;
+        this.zone = zone;
+        this.http = http;
+        this.cd = cd;
+        this.config = config;
+        this.method = 'post';
+        this.invalidFileSizeMessageSummary = '{0}: Invalid file size, ';
+        this.invalidFileSizeMessageDetail = 'maximum upload size is {0}.';
+        this.invalidFileTypeMessageSummary = '{0}: Invalid file type, ';
+        this.invalidFileTypeMessageDetail = 'allowed file types: {0}.';
+        this.invalidFileLimitMessageDetail = 'limit is {0} at most.';
+        this.invalidFileLimitMessageSummary = 'Maximum number of files exceeded, ';
+        this.previewWidth = 50;
+        this.chooseIcon = 'pi pi-plus';
+        this.uploadIcon = 'pi pi-upload';
+        this.cancelIcon = 'pi pi-times';
+        this.showUploadButton = true;
+        this.showCancelButton = true;
+        this.mode = 'advanced';
+        this.onBeforeUpload = new EventEmitter();
+        this.onSend = new EventEmitter();
+        this.onUpload = new EventEmitter();
+        this.onError = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onProgress = new EventEmitter();
+        this.uploadHandler = new EventEmitter();
+        this._files = [];
+        this.progress = 0;
+        this.uploadedFileCount = 0;
+    }
+    set files(files) {
+        this._files = [];
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (this.validate(file)) {
+                if (this.isImage(file)) {
+                    file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                }
+                this._files.push(files[i]);
+            }
+        }
+    }
+    get files() {
+        return this._files;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'file':
+                    this.fileTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'toolbar':
+                    this.toolbarTemplate = item.template;
+                    break;
+                default:
+                    this.fileTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.mode === 'advanced') {
+            this.zone.runOutsideAngular(() => {
+                if (this.content)
+                    this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));
+            });
+        }
+    }
+    choose() {
+        this.advancedFileInput.nativeElement.click();
+    }
+    onFileSelect(event) {
+        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {
+            this.duplicateIEEvent = false;
+            return;
+        }
+        this.msgs = [];
+        if (!this.multiple) {
+            this.files = [];
+        }
+        let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (!this.isFileSelected(file)) {
+                if (this.validate(file)) {
+                    if (this.isImage(file)) {
+                        file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                    }
+                    this.files.push(files[i]);
+                }
+            }
+        }
+        this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });
+        if (this.fileLimit && this.mode == "advanced") {
+            this.checkFileLimit();
+        }
+        if (this.hasFiles() && this.auto && (!(this.mode === "advanced") || !this.isFileLimitExceeded())) {
+            this.upload();
+        }
+        if (event.type !== 'drop' && this.isIE11()) {
+            this.clearIEInput();
+        }
+        else {
+            this.clearInputElement();
+        }
+    }
+    isFileSelected(file) {
+        for (let sFile of this.files) {
+            if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type + file.size)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    isIE11() {
+        return !!window['MSInputMethodContext'] && !!document['documentMode'];
+    }
+    validate(file) {
+        if (this.accept && !this.isFileTypeValid(file)) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)
+            });
+            return false;
+        }
+        if (this.maxFileSize && file.size > this.maxFileSize) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))
+            });
+            return false;
+        }
+        return true;
+    }
+    isFileTypeValid(file) {
+        let acceptableTypes = this.accept.split(',').map(type => type.trim());
+        for (let type of acceptableTypes) {
+            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)
+                : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();
+            if (acceptable) {
+                return true;
+            }
+        }
+        return false;
+    }
+    getTypeClass(fileType) {
+        return fileType.substring(0, fileType.indexOf('/'));
+    }
+    isWildcard(fileType) {
+        return fileType.indexOf('*') !== -1;
+    }
+    getFileExtension(file) {
+        return '.' + file.name.split('.').pop();
+    }
+    isImage(file) {
+        return /^image\//.test(file.type);
+    }
+    onImageLoad(img) {
+        window.URL.revokeObjectURL(img.src);
+    }
+    upload() {
+        if (this.customUpload) {
+            if (this.fileLimit) {
+                this.uploadedFileCount += this.files.length;
+            }
+            this.uploadHandler.emit({
+                files: this.files
+            });
+            this.cd.markForCheck();
+        }
+        else {
+            this.uploading = true;
+            this.msgs = [];
+            let formData = new FormData();
+            this.onBeforeUpload.emit({
+                'formData': formData
+            });
+            for (let i = 0; i < this.files.length; i++) {
+                formData.append(this.name, this.files[i], this.files[i].name);
+            }
+            this.http[this.method](this.url, formData, {
+                headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials
+            }).subscribe((event) => {
+                switch (event.type) {
+                    case HttpEventType.Sent:
+                        this.onSend.emit({
+                            originalEvent: event,
+                            'formData': formData
+                        });
+                        break;
+                    case HttpEventType.Response:
+                        this.uploading = false;
+                        this.progress = 0;
+                        if (event['status'] >= 200 && event['status'] < 300) {
+                            if (this.fileLimit) {
+                                this.uploadedFileCount += this.files.length;
+                            }
+                            this.onUpload.emit({ originalEvent: event, files: this.files });
+                        }
+                        else {
+                            this.onError.emit({ files: this.files });
+                        }
+                        this.clear();
+                        break;
+                    case HttpEventType.UploadProgress: {
+                        if (event['loaded']) {
+                            this.progress = Math.round((event['loaded'] * 100) / event['total']);
+                        }
+                        this.onProgress.emit({ originalEvent: event, progress: this.progress });
+                        break;
+                    }
+                }
+                this.cd.markForCheck();
+            }, error => {
+                this.uploading = false;
+                this.onError.emit({ files: this.files, error: error });
+            });
+        }
+    }
+    clear() {
+        this.files = [];
+        this.onClear.emit();
+        this.clearInputElement();
+        this.cd.markForCheck();
+    }
+    remove(event, index) {
+        this.clearInputElement();
+        this.onRemove.emit({ originalEvent: event, file: this.files[index] });
+        this.files.splice(index, 1);
+    }
+    isFileLimitExceeded() {
+        if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {
+            this.focus = false;
+        }
+        return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;
+    }
+    isChooseDisabled() {
+        return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;
+    }
+    checkFileLimit() {
+        if (this.isFileLimitExceeded()) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),
+                detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())
+            });
+        }
+    }
+    clearInputElement() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.advancedFileInput.nativeElement.value = '';
+        }
+        if (this.basicFileInput && this.basicFileInput.nativeElement) {
+            this.basicFileInput.nativeElement.value = '';
+        }
+    }
+    clearIEInput() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again
+            this.advancedFileInput.nativeElement.value = '';
+        }
+    }
+    hasFiles() {
+        return this.files && this.files.length > 0;
+    }
+    onDragEnter(e) {
+        if (!this.disabled) {
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragOver(e) {
+        if (!this.disabled) {
+            DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');
+            this.dragHighlight = true;
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragLeave(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+        }
+    }
+    onDrop(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+            event.stopPropagation();
+            event.preventDefault();
+            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+            let allowDrop = this.multiple || (files && files.length === 1);
+            if (allowDrop) {
+                this.onFileSelect(event);
+            }
+        }
+    }
+    onFocus() {
+        this.focus = true;
+    }
+    onBlur() {
+        this.focus = false;
+    }
+    formatSize(bytes) {
+        if (bytes == 0) {
+            return '0 B';
+        }
+        let k = 1000, dm = 3, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));
+        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+    }
+    onBasicUploaderClick() {
+        if (this.hasFiles())
+            this.upload();
+        else
+            this.basicFileInput.nativeElement.click();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get chooseButtonLabel() {
+        return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);
+    }
+    get uploadButtonLabel() {
+        return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);
+    }
+    get cancelButtonLabel() {
+        return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);
+    }
+    ngOnDestroy() {
+        if (this.content && this.content.nativeElement) {
+            this.content.nativeElement.removeEventListener('dragover', this.onDragOver);
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+FileUpload.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+FileUpload.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FileUpload, selector: "p-fileUpload", inputs: { name: "name", url: "url", method: "method", multiple: "multiple", accept: "accept", disabled: "disabled", auto: "auto", withCredentials: "withCredentials", maxFileSize: "maxFileSize", invalidFileSizeMessageSummary: "invalidFileSizeMessageSummary", invalidFileSizeMessageDetail: "invalidFileSizeMessageDetail", invalidFileTypeMessageSummary: "invalidFileTypeMessageSummary", invalidFileTypeMessageDetail: "invalidFileTypeMessageDetail", invalidFileLimitMessageDetail: "invalidFileLimitMessageDetail", invalidFileLimitMessageSummary: "invalidFileLimitMessageSummary", style: "style", styleClass: "styleClass", previewWidth: "previewWidth", chooseLabel: "chooseLabel", uploadLabel: "uploadLabel", cancelLabel: "cancelLabel", chooseIcon: "chooseIcon", uploadIcon: "uploadIcon", cancelIcon: "cancelIcon", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", mode: "mode", headers: "headers", customUpload: "customUpload", fileLimit: "fileLimit", files: "files" }, outputs: { onBeforeUpload: "onBeforeUpload", onSend: "onSend", onUpload: "onUpload", onError: "onError", onClear: "onClear", onRemove: "onRemove", onSelect: "onSelect", onProgress: "onProgress", uploadHandler: "uploadHandler" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "advancedFileInput", first: true, predicate: ["advancedfileinput"], descendants: true }, { propertyName: "basicFileInput", first: true, predicate: ["basicfileinput"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, isInline: true, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"], components: [{ type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "style", "styleClass", "unit", "mode"] }, { type: i6.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fileUpload', template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { name: [{
+                type: Input
+            }], url: [{
+                type: Input
+            }], method: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], accept: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], auto: [{
+                type: Input
+            }], withCredentials: [{
+                type: Input
+            }], maxFileSize: [{
+                type: Input
+            }], invalidFileSizeMessageSummary: [{
+                type: Input
+            }], invalidFileSizeMessageDetail: [{
+                type: Input
+            }], invalidFileTypeMessageSummary: [{
+                type: Input
+            }], invalidFileTypeMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageSummary: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], previewWidth: [{
+                type: Input
+            }], chooseLabel: [{
+                type: Input
+            }], uploadLabel: [{
+                type: Input
+            }], cancelLabel: [{
+                type: Input
+            }], chooseIcon: [{
+                type: Input
+            }], uploadIcon: [{
+                type: Input
+            }], cancelIcon: [{
+                type: Input
+            }], showUploadButton: [{
+                type: Input
+            }], showCancelButton: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], headers: [{
+                type: Input
+            }], customUpload: [{
+                type: Input
+            }], fileLimit: [{
+                type: Input
+            }], onBeforeUpload: [{
+                type: Output
+            }], onSend: [{
+                type: Output
+            }], onUpload: [{
+                type: Output
+            }], onError: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onProgress: [{
+                type: Output
+            }], uploadHandler: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], advancedFileInput: [{
+                type: ViewChild,
+                args: ['advancedfileinput']
+            }], basicFileInput: [{
+                type: ViewChild,
+                args: ['basicfileinput']
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], files: [{
+                type: Input
+            }] } });
+export class FileUploadModule {
+}
+FileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+FileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, imports: [[CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule],
+                    exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],
+                    declarations: [FileUpload]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWxldXBsb2FkL2ZpbGV1cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVcsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQ2xELGVBQWUsRUFBVyxTQUFTLEVBQW1CLHVCQUF1QixFQUFFLGlCQUFpQixFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBVSxlQUFlLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxZQUFZLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFFckUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBd0IsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUE2RHZGLE1BQU0sT0FBTyxVQUFVO0lBb0luQixZQUFvQixFQUFjLEVBQVMsU0FBdUIsRUFBUyxJQUFZLEVBQVUsSUFBZ0IsRUFBUyxFQUFxQixFQUFTLE1BQXFCO1FBQXpKLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLFdB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QUVELGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUVMLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFFUCxLQUFLO3NCQUFqQixLQUFLOztBQXVhVixNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBL2ZoQixVQUFVLGFBMmZULFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLGNBQWMsRUFBQyxZQUFZLGFBM2ZyRixVQUFVLEVBNGZFLFlBQVksRUFBQyxZQUFZLEVBQUMsaUJBQWlCLEVBQUMsY0FBYzs4R0FHdEUsZ0JBQWdCLFlBSmhCLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsaUJBQWlCLEVBQUMsY0FBYyxFQUFDLFlBQVksQ0FBQyxFQUMxRSxZQUFZLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLGNBQWM7MkZBR3RFLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxpQkFBaUIsRUFBQyxjQUFjLEVBQUMsWUFBWSxDQUFDO29CQUMvRixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxpQkFBaUIsRUFBQyxjQUFjLENBQUM7b0JBQ2hGLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxPbkRlc3Ryb3ksSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixUZW1wbGF0ZVJlZixBZnRlclZpZXdJbml0LEFmdGVyQ29udGVudEluaXQsXG4gICAgICAgICAgICBDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFZpZXdDaGlsZCxFbGVtZW50UmVmLE5nWm9uZSxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNZXNzYWdlc01vZHVsZX0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XG5pbXBvcnQge1Byb2dyZXNzQmFyTW9kdWxlfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzYmFyJztcbmltcG9ydCB7RG9tSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHtNZXNzYWdlLCBUcmFuc2xhdGlvbktleXN9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7UHJpbWVUZW1wbGF0ZSxTaGFyZWRNb2R1bGUsUHJpbWVOR0NvbmZpZ30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCbG9ja2FibGVVSX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1maWxlVXBsb2FkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLWZpbGV1cGxvYWQgcC1maWxldXBsb2FkLWFkdmFuY2VkIHAtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAqbmdJZj1cIm1vZGUgPT09ICdhZHZhbmNlZCdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtYnV0dG9uYmFyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWZpbGV1cGxvYWQtY2hvb3NlXCIgW25nQ2xhc3NdPVwieydwLWZvY3VzJzogZm9jdXMsICdwLWRpc2FibGVkJzpkaXNhYmxlZCB8fCBpc0Nob29zZURpc2FibGVkKCl9XCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlKClcIiAoa2V5ZG93bi5lbnRlcik9XCJjaG9vc2UoKVwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI2FkdmFuY2VkZmlsZWlucHV0IHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50KVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzQ2hvb3NlRGlzYWJsZWQoKVwiIFthdHRyLnRpdGxlXT1cIicnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdCdcIiBbY2xhc3NdPVwiY2hvb3NlSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWJ1dHRvbi1sYWJlbFwiPnt7Y2hvb3NlQnV0dG9uTGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8cC1idXR0b24gKm5nSWY9XCIhYXV0byYmc2hvd1VwbG9hZEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBbbGFiZWxdPVwidXBsb2FkQnV0dG9uTGFiZWxcIiBbaWNvbl09XCJ1cGxvYWRJY29uXCIgKG9uQ2xpY2spPVwidXBsb2FkKClcIiBbZGlzYWJsZWRdPVwiIWhhc0ZpbGVzKCkgfHwgaXNGaWxlTGltaXRFeGNlZWRlZCgpXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8cC1idXR0b24gKm5nSWY9XCIhYXV0byYmc2hvd0NhbmNlbEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBbbGFiZWxdPVwiY2FuY2VsQnV0dG9uTGFiZWxcIiBbaWNvbl09XCJjYW5jZWxJY29uXCIgKG9uQ2xpY2spPVwiY2xlYXIoKVwiIFtkaXNhYmxlZF09XCIhaGFzRmlsZXMoKSB8fMKgdXBsb2FkaW5nXCI+PC9wLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjY29udGVudCBjbGFzcz1cInAtZmlsZXVwbG9hZC1jb250ZW50XCIgKGRyYWdlbnRlcik9XCJvbkRyYWdFbnRlcigkZXZlbnQpXCIgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCIgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8cC1wcm9ncmVzc0JhciBbdmFsdWVdPVwicHJvZ3Jlc3NcIiBbc2hvd1ZhbHVlXT1cImZhbHNlXCIgKm5nSWY9XCJoYXNGaWxlcygpXCI+PC9wLXByb2dyZXNzQmFyPlxuXG4gICAgICAgICAgICAgICAgPHAtbWVzc2FnZXMgW3ZhbHVlXT1cIm1zZ3NcIiBbZW5hYmxlU2VydmljZV09XCJmYWxzZVwiPjwvcC1tZXNzYWdlcz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtZmlsZXNcIiAqbmdJZj1cImhhc0ZpbGVzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtcm93XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48aW1nIFtzcmNdPVwiZmlsZS5vYmplY3RVUkxcIiAqbmdJZj1cImlzSW1hZ2UoZmlsZSlcIiBbd2lkdGhdPVwicHJldmlld1dpZHRoXCIgLz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1maWxldXBsb2FkLWZpbGVuYW1lXCI+e3tmaWxlLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tmb3JtYXRTaXplKGZpbGUuc2l6ZSl9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS10aW1lc1wiIHBCdXR0b24gKGNsaWNrKT1cInJlbW92ZSgkZXZlbnQsaSlcIiBbZGlzYWJsZWRdPVwidXBsb2FkaW5nXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJmaWxlc1wiIFtuZ0ZvclRlbXBsYXRlXT1cImZpbGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpbGVzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1maWxldXBsb2FkIHAtZmlsZXVwbG9hZC1iYXNpYyBwLWNvbXBvbmVudFwiICpuZ0lmPVwibW9kZSA9PT0gJ2Jhc2ljJ1wiPlxuICAgICAgICAgICAgPHAtbWVzc2FnZXMgW3ZhbHVlXT1cIm1zZ3NcIiBbZW5hYmxlU2VydmljZV09XCJmYWxzZVwiPjwvcC1tZXNzYWdlcz5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsncC1idXR0b24gcC1jb21wb25lbnQgcC1maWxldXBsb2FkLWNob29zZSc6IHRydWUsICdwLWJ1dHRvbi1pY29uLW9ubHknOiAhY2hvb3NlTGFiZWwsICdwLWZpbGV1cGxvYWQtY2hvb3NlLXNlbGVjdGVkJzogaGFzRmlsZXMoKSwncC1mb2N1cyc6IGZvY3VzLCAncC1kaXNhYmxlZCc6ZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKG1vdXNldXApPVwib25CYXNpY1VwbG9hZGVyQ2xpY2soKVwiIChrZXlkb3duKT1cIm9uQmFzaWNVcGxvYWRlckNsaWNrKClcIiB0YWJpbmRleD1cIjBcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnQgcGlcIiBbbmdDbGFzc109XCJoYXNGaWxlcygpJiYhYXV0byA/IHVwbG9hZEljb24gOiBjaG9vc2VJY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1idXR0b24tbGFiZWxcIj57e2F1dG8gPyBjaG9vc2VMYWJlbCA6IGhhc0ZpbGVzKCkgPyBmaWxlc1swXS5uYW1lIDogY2hvb3NlTGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI2Jhc2ljZmlsZWlucHV0IHR5cGU9XCJmaWxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQpXCIgKm5nSWY9XCIhaGFzRmlsZXMoKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZXVwbG9hZC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCxBZnRlckNvbnRlbnRJbml0LE9uSW5pdCxPbkRlc3Ryb3ksQmxvY2thYmxlVUkge1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtZXRob2Q6IHN0cmluZyA9ICdwb3N0JztcblxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGF1dG86IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk6IHN0cmluZyA9ICd7MH06IEludmFsaWQgZmlsZSBzaXplLCAnO1xuXG4gICAgQElucHV0KCkgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbDogc3RyaW5nID0gJ21heGltdW0gdXBsb2FkIHNpemUgaXMgezB9Lic7XG5cbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeTogc3RyaW5nID0gJ3swfTogSW52YWxpZCBmaWxlIHR5cGUsICc7XG5cbiAgICBASW5wdXQoKSBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsOiBzdHJpbmcgPSAnYWxsb3dlZCBmaWxlIHR5cGVzOiB7MH0uJztcblxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsOiBzdHJpbmcgPSAnbGltaXQgaXMgezB9IGF0IG1vc3QuJztcblxuICAgIEBJbnB1dCgpIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeTogc3RyaW5nID0gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkLCAnO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHByZXZpZXdXaWR0aDogbnVtYmVyID0gNTA7XG5cbiAgICBASW5wdXQoKSBjaG9vc2VMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdXBsb2FkTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNhbmNlbExhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjaG9vc2VJY29uOiBzdHJpbmcgPSAncGkgcGktcGx1cyc7XG5cbiAgICBASW5wdXQoKSB1cGxvYWRJY29uOiBzdHJpbmcgPSAncGkgcGktdXBsb2FkJztcblxuICAgIEBJbnB1dCgpIGNhbmNlbEljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcyc7XG5cbiAgICBASW5wdXQoKSBzaG93VXBsb2FkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dDYW5jZWxCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJ2FkdmFuY2VkJztcblxuICAgIEBJbnB1dCgpIGhlYWRlcnM6IEh0dHBIZWFkZXJzO1xuXG4gICAgQElucHV0KCkgY3VzdG9tVXBsb2FkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZmlsZUxpbWl0OiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVVcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2VuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25VcGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Qcm9ncmVzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdXBsb2FkSGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdhZHZhbmNlZGZpbGVpbnB1dCcpIGFkdmFuY2VkRmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnYmFzaWNmaWxlaW5wdXQnKSBiYXNpY0ZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgc2V0IGZpbGVzKGZpbGVzKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gW107XG5cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVzW2ldO1xuXG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSW1hZ2UoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgKDxhbnk+ZmlsZSkub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCgod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZXNbaV0pKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsZXMucHVzaChmaWxlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZmlsZXMoKTogRmlsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBfZmlsZXM6IEZpbGVbXSA9IFtdO1xuXG4gICAgcHVibGljIHByb2dyZXNzOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGRyYWdIaWdobGlnaHQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgbXNnczogTWVzc2FnZVtdO1xuXG4gICAgcHVibGljIGZpbGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgdG9vbGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIHVwbG9hZGVkRmlsZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgZm9jdXM6IGJvb2xlYW47XG5cbiAgICB1cGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBkdXBsaWNhdGVJRUV2ZW50OiBib29sZWFuOyAgLy8gZmxhZyB0byByZWNvZ25pemUgZHVwbGljYXRlIG9uY2hhbmdlIGV2ZW50IGZvciBmaWxlIGlucHV0XG5cbiAgICB0cmFuc2xhdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwdWJsaWMgem9uZTogTmdab25lLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcpe31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b29sYmFyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sYmFyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5jb25maWcudHJhbnNsYXRpb25PYnNlcnZlci5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnYWR2YW5jZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5vbkRyYWdPdmVyLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9vc2UoKSB7XG4gICAgICAgIHRoaXMuYWR2YW5jZWRGaWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2Ryb3AnICYmIHRoaXMuaXNJRTExKCkgJiYgdGhpcy5kdXBsaWNhdGVJRUV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmR1cGxpY2F0ZUlFRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubXNncyA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2ZlciA/IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyA6IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVzW2ldO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNGaWxlU2VsZWN0ZWQoZmlsZSkpe1xuICAgICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZShmaWxlKSkge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCgod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZXNbaV0pKSk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlc1tpXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25TZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIGZpbGVzOiBmaWxlcywgY3VycmVudEZpbGVzOiB0aGlzLmZpbGVzfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZUxpbWl0ICYmIHRoaXMubW9kZSA9PSBcImFkdmFuY2VkXCIpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tGaWxlTGltaXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0ZpbGVzKCkgJiYgdGhpcy5hdXRvICYmICghKHRoaXMubW9kZSA9PT0gXCJhZHZhbmNlZFwiKSB8fCAhdGhpcy5pc0ZpbGVMaW1pdEV4Y2VlZGVkKCkpKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdkcm9wJyAmJiB0aGlzLmlzSUUxMSgpKSB7XG4gICAgICAgICAgdGhpcy5jbGVhcklFSW5wdXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsZWFySW5wdXRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0ZpbGVTZWxlY3RlZChmaWxlOiBGaWxlKTogYm9vbGVhbntcbiAgICAgICAgZm9yKGxldCBzRmlsZSBvZiB0aGlzLmZpbGVzKXtcbiAgICAgICAgICAgIGlmICgoc0ZpbGUubmFtZSArIHNGaWxlLnR5cGUgKyBzRmlsZS5zaXplKSA9PT0gKGZpbGUubmFtZSArIGZpbGUudHlwZStmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNJRTExKCkge1xuICAgICAgICByZXR1cm4gISF3aW5kb3dbJ01TSW5wdXRNZXRob2RDb250ZXh0J10gJiYgISFkb2N1bWVudFsnZG9jdW1lbnRNb2RlJ107XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5hY2NlcHQgJiYgIXRoaXMuaXNGaWxlVHlwZVZhbGlkKGZpbGUpKSB7XG4gICAgICAgICAgICB0aGlzLm1zZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5pbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeS5yZXBsYWNlKCd7MH0nLCBmaWxlLm5hbWUpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy5pbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsLnJlcGxhY2UoJ3swfScsIHRoaXMuYWNjZXB0KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSAgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5tc2dzLnB1c2goe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMuaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnkucmVwbGFjZSgnezB9JywgZmlsZS5uYW1lKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbC5yZXBsYWNlKCd7MH0nLCB0aGlzLmZvcm1hdFNpemUodGhpcy5tYXhGaWxlU2l6ZSkpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlVHlwZVZhbGlkKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGFjY2VwdGFibGVUeXBlcyA9IHRoaXMuYWNjZXB0LnNwbGl0KCcsJykubWFwKHR5cGUgPT4gdHlwZS50cmltKCkpO1xuICAgICAgICBmb3IobGV0IHR5cGUgb2YgYWNjZXB0YWJsZVR5cGVzKSB7XG4gICAgICAgICAgICBsZXQgYWNjZXB0YWJsZSA9IHRoaXMuaXNXaWxkY2FyZCh0eXBlKSA/IHRoaXMuZ2V0VHlwZUNsYXNzKGZpbGUudHlwZSkgPT09IHRoaXMuZ2V0VHlwZUNsYXNzKHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaWxlLnR5cGUgPT0gdHlwZSB8fCB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZSkudG9Mb3dlckNhc2UoKSA9PT0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWNjZXB0YWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdldFR5cGVDbGFzcyhmaWxlVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlLnN1YnN0cmluZygwLCBmaWxlVHlwZS5pbmRleE9mKCcvJykpO1xuICAgIH1cblxuICAgIGlzV2lsZGNhcmQoZmlsZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsZVR5cGUuaW5kZXhPZignKicpICE9PSAtMTtcbiAgICB9XG5cbiAgICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJy4nICsgZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgfVxuXG4gICAgaXNJbWFnZShmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmltYWdlXFwvLy50ZXN0KGZpbGUudHlwZSk7XG4gICAgfVxuXG4gICAgb25JbWFnZUxvYWQoaW1nOiBhbnkpIHtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwoaW1nLnNyYyk7XG4gICAgfVxuXG4gICAgdXBsb2FkKCkge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21VcGxvYWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVMaW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlQ291bnQgKz0gdGhpcy5maWxlcy5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBsb2FkSGFuZGxlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogdGhpcy5maWxlc1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICB0aGlzLm9uQmVmb3JlVXBsb2FkLmVtaXQoe1xuICAgICAgICAgICAgICAgICdmb3JtRGF0YSc6IGZvcm1EYXRhXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKHRoaXMubmFtZSwgdGhpcy5maWxlc1tpXSwgdGhpcy5maWxlc1tpXS5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5odHRwW3RoaXMubWV0aG9kXSh0aGlzLnVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsIHJlcG9ydFByb2dyZXNzOiB0cnVlLCBvYnNlcnZlOiAnZXZlbnRzJywgd2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc1xuICAgICAgICAgICAgfSkuc3Vic2NyaWJlKCAoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbmQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybURhdGEnOiBmb3JtRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRbJ3N0YXR1cyddID49IDIwMCAmJiBldmVudFsnc3RhdHVzJ10gPCAzMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUNvdW50ICs9IHRoaXMuZmlsZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgZmlsZXM6IHRoaXMuZmlsZXN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdCh7ZmlsZXM6IHRoaXMuZmlsZXN9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRbJ2xvYWRlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKChldmVudFsnbG9hZGVkJ10gKiAxMDApIC8gZXZlbnRbJ3RvdGFsJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Qcm9ncmVzcy5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgcHJvZ3Jlc3M6IHRoaXMucHJvZ3Jlc3N9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KHtmaWxlczogdGhpcy5maWxlcywgZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFbGVtZW50KCk7XG4gICAgICAgIHRoaXMub25SZW1vdmUuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIGZpbGU6IHRoaXMuZmlsZXNbaW5kZXhdfSk7XG4gICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpc0ZpbGVMaW1pdEV4Y2VlZGVkKCkge1xuICAgICAgICBpZiAodGhpcy5maWxlTGltaXQgJiYgdGhpcy5maWxlTGltaXQgPD0gdGhpcy5maWxlcy5sZW5ndGggKyB0aGlzLnVwbG9hZGVkRmlsZUNvdW50ICYmIHRoaXMuZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVMaW1pdCAmJiB0aGlzLmZpbGVMaW1pdCA8IHRoaXMuZmlsZXMubGVuZ3RoICsgdGhpcy51cGxvYWRlZEZpbGVDb3VudDtcbiAgICB9XG5cbiAgICBpc0Nob29zZURpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlTGltaXQgJiYgdGhpcy5maWxlTGltaXQgPD0gdGhpcy5maWxlcy5sZW5ndGggKyB0aGlzLnVwbG9hZGVkRmlsZUNvdW50O1xuICAgIH1cblxuICAgIGNoZWNrRmlsZUxpbWl0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZpbGVMaW1pdEV4Y2VlZGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMubXNncy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLmludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeS5yZXBsYWNlKCd7MH0nLCB0aGlzLmZpbGVMaW1pdC50b1N0cmluZygpKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMuaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWwucmVwbGFjZSgnezB9JywgdGhpcy5maWxlTGltaXQudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJJbnB1dEVsZW1lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmFkdmFuY2VkRmlsZUlucHV0ICYmIHRoaXMuYWR2YW5jZWRGaWxlSW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZEZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5iYXNpY0ZpbGVJbnB1dCAmJiB0aGlzLmJhc2ljRmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYmFzaWNGaWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJJRUlucHV0KCkge1xuICAgICAgICBpZiAodGhpcy5hZHZhbmNlZEZpbGVJbnB1dCAmJiB0aGlzLmFkdmFuY2VkRmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZHVwbGljYXRlSUVFdmVudCA9IHRydWU7IC8vSUUxMSBmaXggdG8gcHJldmVudCBvbkZpbGVDaGFuZ2UgdHJpZ2dlciBhZ2FpblxuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZEZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNGaWxlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIG9uRHJhZ0VudGVyKGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnT3ZlcihlKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCwgJ3AtZmlsZXVwbG9hZC1oaWdobGlnaHQnKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0hpZ2hsaWdodCA9IHRydWU7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnTGVhdmUoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LCAncC1maWxldXBsb2FkLWhpZ2hsaWdodCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCwgJ3AtZmlsZXVwbG9hZC1oaWdobGlnaHQnKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgbGV0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyID8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIDogZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICAgICAgbGV0IGFsbG93RHJvcCA9IHRoaXMubXVsdGlwbGV8fChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPT09IDEpO1xuXG4gICAgICAgICAgICBpZiAoYWxsb3dEcm9wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZpbGVTZWxlY3QoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5mb2N1cyA9IHRydWU7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9ybWF0U2l6ZShieXRlcykge1xuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcwIEInO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gMTAwMCxcbiAgICAgICAgZG0gPSAzLFxuICAgICAgICBzaXplcyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddLFxuICAgICAgICBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHNpemVzW2ldO1xuICAgIH1cblxuICAgIG9uQmFzaWNVcGxvYWRlckNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5oYXNGaWxlcygpKVxuICAgICAgICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5iYXNpY0ZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBnZXQgY2hvb3NlQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlTGFiZWwgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkNIT09TRSk7XG4gICAgfVxuXG4gICAgZ2V0IHVwbG9hZEJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZExhYmVsIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5VUExPQUQpO1xuICAgIH1cblxuICAgIGdldCBjYW5jZWxCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jYW5jZWxMYWJlbCB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuQ0FOQ0VMKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLm9uRHJhZ092ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFNoYXJlZE1vZHVsZSxCdXR0b25Nb2R1bGUsUHJvZ3Jlc3NCYXJNb2R1bGUsTWVzc2FnZXNNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRmlsZVVwbG9hZCxTaGFyZWRNb2R1bGUsQnV0dG9uTW9kdWxlLFByb2dyZXNzQmFyTW9kdWxlLE1lc3NhZ2VzTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtGaWxlVXBsb2FkXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/fileupload/primeng-fileupload.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fileupload/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fileupload/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1maWxldXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZpbGV1cGxvYWQvcHJpbWVuZy1maWxldXBsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/fileupload/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fileupload/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fileupload/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './fileupload';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWxldXBsb2FkL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpbGV1cGxvYWQnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/focustrap/focustrap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/focustrap/focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/focustrap/focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,68 @@
+import { NgModule, Directive, HostListener, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+export class FocusTrap {
+    constructor(el) {
+        this.el = el;
+    }
+    onkeydown(e) {
+        if (this.pFocusTrapDisabled !== true) {
+            e.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (e.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+}
+FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FocusTrap, selector: "[pFocusTrap]", inputs: { pFocusTrapDisabled: "pFocusTrapDisabled" }, host: { listeners: { "keydown.tab": "onkeydown($event)", "keydown.shift.tab": "onkeydown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFocusTrap]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pFocusTrapDisabled: [{
+                type: Input
+            }], onkeydown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }] } });
+export class FocusTrapModule {
+}
+FocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrap], imports: [CommonModule], exports: [FocusTrap] });
+FocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FocusTrap],
+                    declarations: [FocusTrap]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZvY3VzdHJhcC9mb2N1c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksWUFBWSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7QUFRdkMsTUFBTSxPQUFPLFNBQVM7SUFJbEIsWUFBbUIsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBRyxDQUFDO0lBSXJDLFNBQVMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssSUFBSSxFQUFFO1lBQ2xDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9FLElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7b0JBQ25ELGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQztxQkFDSTtvQkFDRCxJQUFJLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUUvRixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7d0JBQ1osSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxLQUFLLENBQUM7NEJBQ3hDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7NEJBRXhELGlCQUFpQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDbkQ7eUJBQ0k7d0JBQ0QsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzs0QkFDckUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7OzRCQUU3QixpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBQ25EO2lCQUNKO2FBQ0o7U0FDSjtJQUNMLENBQUM7O3NHQWxDUSxTQUFTOzBGQUFULFNBQVM7MkZBQVQsU0FBUztrQkFOckIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjtpR0FHWSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3RDLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBbUNqRCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQTFDZixTQUFTLGFBc0NSLFlBQVksYUF0Q2IsU0FBUzs2R0EwQ1QsZUFBZSxZQUpmLENBQUMsWUFBWSxDQUFDOzJGQUlkLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ3BCLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLERpcmVjdGl2ZSxFbGVtZW50UmVmLEhvc3RMaXN0ZW5lciwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcEZvY3VzVHJhcF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzVHJhcCB7XG5cbiAgICBASW5wdXQoKSBwRm9jdXNUcmFwRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zaGlmdC50YWInLCBbJyRldmVudCddKVxuICAgIG9ua2V5ZG93bihlKSB7XG4gICAgICAgIGlmICh0aGlzLnBGb2N1c1RyYXBEaXNhYmxlZCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGZvY3VzYWJsZUVsZW1lbnRzID0gRG9tSGFuZGxlci5nZXRGb2N1c2FibGVFbGVtZW50cyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnRzICYmIGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZvY3VzYWJsZUVsZW1lbnRzWzBdLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZvY3VzYWJsZUVsZW1lbnRzLmluZGV4T2YoZm9jdXNhYmxlRWxlbWVudHNbMF0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1tmb2N1c2VkSW5kZXggLSAxXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA9PSAtMSB8fCBmb2N1c2VkSW5kZXggPT09IChmb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzZWRJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0ZvY3VzVHJhcF0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9jdXNUcmFwXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXBNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/focustrap/primeng-focustrap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/focustrap/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/focustrap/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1mb2N1c3RyYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9jdXN0cmFwL3ByaW1lbmctZm9jdXN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/focustrap/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/focustrap/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/focustrap/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './focustrap';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb2N1c3RyYXAvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9jdXN0cmFwJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/fullcalendar/fullcalendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fullcalendar/fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fullcalendar/fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,103 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Calendar } from '@fullcalendar/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class FullCalendar {
+    constructor(el) {
+        this.el = el;
+    }
+    ngOnInit() {
+        this.config = {
+            theme: true
+        };
+        if (this.options) {
+            for (let prop in this.options) {
+                this.config[prop] = this.options[prop];
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (!this.initialized && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    get events() {
+        return this._events;
+    }
+    set events(value) {
+        this._events = value;
+        if (this._events && this.calendar) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this._events);
+        }
+    }
+    get options() {
+        return this._options;
+    }
+    set options(value) {
+        this._options = value;
+        if (this._options && this.calendar) {
+            for (let prop in this._options) {
+                let optionValue = this._options[prop];
+                this.config[prop] = optionValue;
+                this.calendar.setOption(prop, optionValue);
+            }
+        }
+    }
+    initialize() {
+        this.calendar = new Calendar(this.el.nativeElement.children[0], this.config);
+        this.calendar.render();
+        this.initialized = true;
+        if (this.events) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this.events);
+        }
+    }
+    getCalendar() {
+        return this.calendar;
+    }
+    ngOnDestroy() {
+        if (this.calendar) {
+            this.calendar.destroy();
+            this.initialized = false;
+            this.calendar = null;
+        }
+    }
+}
+FullCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+FullCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FullCalendar, selector: "p-fullCalendar", inputs: { style: "style", styleClass: "styleClass", events: "events", options: "options" }, host: { classAttribute: "p-element" }, ngImport: i0, template: '<div [ngStyle]="style" [class]="styleClass"></div>', isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-fullCalendar',
+                    template: '<div [ngStyle]="style" [class]="styleClass"></div>',
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], events: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+export class FullCalendarModule {
+}
+FullCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FullCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, declarations: [FullCalendar], imports: [CommonModule], exports: [FullCalendar] });
+FullCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FullCalendar],
+                    declarations: [FullCalendar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbGNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBeUIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0ksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBVzVDLE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFHLENBQUM7SUFFckMsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDVixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQztTQUNKO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtZQUN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsSUFBYSxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDOUM7SUFDTCxDQUFDO0lBRUQsSUFBYSxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQzVCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDOUM7U0FDSjtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNMLENBQUM7O3lHQXRGUSxZQUFZOzZGQUFaLFlBQVkseUxBUFgsb0RBQW9EOzJGQU9yRCxZQUFZO2tCQVR4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxvREFBb0Q7b0JBQzlELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjtpR0FHWSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFnQ08sTUFBTTtzQkFBbEIsS0FBSztnQkFhTyxPQUFPO3NCQUFuQixLQUFLOztBQTZDVixNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBOUZsQixZQUFZLGFBMEZYLFlBQVksYUExRmIsWUFBWTtnSEE4Rlosa0JBQWtCLFlBSmxCLENBQUMsWUFBWSxDQUFDOzJGQUlkLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsT25EZXN0cm95LElucHV0LE9uSW5pdCxBZnRlclZpZXdDaGVja2VkLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2FsZW5kYXJ9IGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1mdWxsQ2FsZW5kYXInLFxuICAgIHRlbXBsYXRlOiAnPGRpdiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+PC9kaXY+JyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZ1bGxDYWxlbmRhciBpbXBsZW1lbnRzIE9uRGVzdHJveSxPbkluaXQsQWZ0ZXJWaWV3Q2hlY2tlZCB7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBjYWxlbmRhcjogYW55O1xuXG4gICAgY29uZmlnOiBhbnk7XG5cbiAgICBfb3B0aW9uczogYW55O1xuXG4gICAgX2V2ZW50czogYW55W107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgICB0aGVtZTogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWdbcHJvcF0gPSB0aGlzLm9wdGlvbnNbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBldmVudHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50cztcbiAgICB9XG5cbiAgICBzZXQgZXZlbnRzKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2V2ZW50cyAmJiB0aGlzLmNhbGVuZGFyKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyLnJlbW92ZUFsbEV2ZW50U291cmNlcygpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5hZGRFdmVudFNvdXJjZSh0aGlzLl9ldmVudHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgc2V0IG9wdGlvbnModmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMgJiYgdGhpcy5jYWxlbmRhcikge1xuICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiB0aGlzLl9vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gdGhpcy5fb3B0aW9uc1twcm9wXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1twcm9wXSA9IG9wdGlvblZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIuc2V0T3B0aW9uKHByb3AsIG9wdGlvblZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXIodGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIucmVuZGVyKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5yZW1vdmVBbGxFdmVudFNvdXJjZXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIuYWRkRXZlbnRTb3VyY2UodGhpcy5ldmVudHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q2FsZW5kYXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGVuZGFyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRnVsbENhbGVuZGFyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtGdWxsQ2FsZW5kYXJdXG59KVxuZXhwb3J0IGNsYXNzIEZ1bGxDYWxlbmRhck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/fullcalendar/primeng-fullcalendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fullcalendar/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fullcalendar/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1mdWxsY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZnVsbGNhbGVuZGFyL3ByaW1lbmctZnVsbGNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/fullcalendar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/fullcalendar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/fullcalendar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './fullcalendar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mdWxsY2FsZW5kYXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mdWxsY2FsZW5kYXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/galleria/galleria.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/galleria/galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/galleria/galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,997 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ContentChildren, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import { RippleModule } from 'primeng/ripple';
+import { animate, style, transition, trigger } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+export class Galleria {
+    constructor(element, cd, config) {
+        this.element = element;
+        this.cd = cd;
+        this.config = config;
+        this.fullScreen = false;
+        this.numVisible = 3;
+        this.showItemNavigators = false;
+        this.showThumbnailNavigators = true;
+        this.showItemNavigatorsOnHover = false;
+        this.changeItemOnIndicatorHover = false;
+        this.circular = false;
+        this.autoPlay = false;
+        this.transitionInterval = 4000;
+        this.showThumbnails = true;
+        this.thumbnailsPosition = "bottom";
+        this.verticalThumbnailViewPortHeight = "300px";
+        this.showIndicators = false;
+        this.showIndicatorsOnItem = false;
+        this.indicatorsPosition = "bottom";
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.activeIndexChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._visible = false;
+        this._activeIndex = 0;
+        this.maskVisible = false;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    get visible() {
+        return this._visible;
+    }
+    ;
+    set visible(visible) {
+        this._visible = visible;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerFacet = item.template;
+                    break;
+                case 'footer':
+                    this.footerFacet = item.template;
+                    break;
+                case 'indicator':
+                    this.indicatorFacet = item.template;
+                    break;
+                case 'caption':
+                    this.captionFacet = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChanges) {
+        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {
+            this.numVisible = simpleChanges.value.currentValue.length;
+        }
+    }
+    onMaskHide() {
+        this.visible = false;
+        this.visibleChange.emit(false);
+    }
+    onActiveItemChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeIndexChange.emit(index);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.enableModality();
+                break;
+            case 'void':
+                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.disableModality();
+                break;
+        }
+    }
+    enableModality() {
+        DomHandler.addClass(document.body, 'p-overflow-hidden');
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+        }
+    }
+    disableModality() {
+        DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        this.maskVisible = false;
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.clear(this.mask.nativeElement);
+        }
+    }
+    ngOnDestroy() {
+        if (this.fullScreen) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.mask) {
+            this.disableModality();
+        }
+    }
+}
+Galleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Galleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Galleria, selector: "p-galleria", inputs: { activeIndex: "activeIndex", fullScreen: "fullScreen", id: "id", value: "value", numVisible: "numVisible", responsiveOptions: "responsiveOptions", showItemNavigators: "showItemNavigators", showThumbnailNavigators: "showThumbnailNavigators", showItemNavigatorsOnHover: "showItemNavigatorsOnHover", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", circular: "circular", autoPlay: "autoPlay", transitionInterval: "transitionInterval", showThumbnails: "showThumbnails", thumbnailsPosition: "thumbnailsPosition", verticalThumbnailViewPortHeight: "verticalThumbnailViewPortHeight", showIndicators: "showIndicators", showIndicatorsOnItem: "showIndicatorsOnItem", indicatorsPosition: "indicatorsPosition", baseZIndex: "baseZIndex", maskClass: "maskClass", containerClass: "containerClass", containerStyle: "containerStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", visible: "visible" }, outputs: { activeIndexChange: "activeIndexChange", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, isInline: true, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"], components: [{ type: i0.forwardRef(function () { return GalleriaContent; }), selector: "p-galleriaContent", inputs: ["activeIndex", "value", "numVisible"], outputs: ["maskHide", "activeItemChange"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-galleria', template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }], id: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], showItemNavigatorsOnHover: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], transitionInterval: [{
+                type: Input
+            }], showThumbnails: [{
+                type: Input
+            }], thumbnailsPosition: [{
+                type: Input
+            }], verticalThumbnailViewPortHeight: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showIndicatorsOnItem: [{
+                type: Input
+            }], indicatorsPosition: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], maskClass: [{
+                type: Input
+            }], containerClass: [{
+                type: Input
+            }], containerStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], visible: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class GalleriaContent {
+    constructor(galleria, cd) {
+        this.galleria = galleria;
+        this.cd = cd;
+        this.value = [];
+        this.maskHide = new EventEmitter();
+        this.activeItemChange = new EventEmitter();
+        this.id = this.galleria.id || UniqueComponentId();
+        this.slideShowActicve = false;
+        this._activeIndex = 0;
+        this.slideShowActive = true;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    galleriaClass() {
+        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);
+        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);
+        return (this.galleria.containerClass ? this.galleria.containerClass + " " : '') + (thumbnailsPosClass ? thumbnailsPosClass + " " : '') + (indicatorPosClass ? indicatorPosClass + " " : '');
+    }
+    startSlideShow() {
+        this.interval = setInterval(() => {
+            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);
+            this.onActiveIndexChange(activeIndex);
+            this.activeIndex = activeIndex;
+        }, this.galleria.transitionInterval);
+        this.slideShowActive = true;
+    }
+    stopSlideShow() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+        this.slideShowActive = false;
+    }
+    getPositionClass(preClassName, position) {
+        const positions = ['top', 'left', 'bottom', 'right'];
+        const pos = positions.find(item => item === position);
+        return pos ? `${preClassName}-${pos}` : '';
+    }
+    isVertical() {
+        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';
+    }
+    onActiveIndexChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeItemChange.emit(this.activeIndex);
+        }
+    }
+}
+GalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaContent, selector: "p-galleriaContent", inputs: { activeIndex: "activeIndex", value: "value", numVisible: "numVisible" }, outputs: { maskHide: "maskHide", activeItemChange: "activeItemChange" }, ngImport: i0, template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }, { type: i0.forwardRef(function () { return GalleriaItem; }), selector: "p-galleriaItem", inputs: ["circular", "value", "showItemNavigators", "showIndicators", "slideShowActive", "changeItemOnIndicatorHover", "autoPlay", "templates", "indicatorFacet", "captionFacet", "activeIndex"], outputs: ["startSlideShow", "stopSlideShow", "onActiveIndexChange"] }, { type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: "p-galleriaThumbnails", inputs: ["containerId", "value", "isVertical", "slideShowActive", "circular", "responsiveOptions", "contentHeight", "showThumbnailNavigators", "templates", "numVisible", "activeIndex"], outputs: ["onActiveIndexChange", "stopSlideShow"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaContent',
+                    template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], maskHide: [{
+                type: Output
+            }], activeItemChange: [{
+                type: Output
+            }] } });
+export class GalleriaItemSlot {
+    get item() {
+        return this._item;
+    }
+    ;
+    set item(item) {
+        this._item = item;
+        if (this.templates) {
+            this.templates.forEach((item) => {
+                if (item.getType() === this.type) {
+                    switch (this.type) {
+                        case 'item':
+                        case 'caption':
+                        case 'thumbnail':
+                            this.context = { $implicit: this.item };
+                            this.contentTemplate = item.template;
+                            break;
+                    }
+                }
+            });
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            if (item.getType() === this.type) {
+                switch (this.type) {
+                    case 'item':
+                    case 'caption':
+                    case 'thumbnail':
+                        this.context = { $implicit: this.item };
+                        this.contentTemplate = item.template;
+                        break;
+                    case 'indicator':
+                        this.context = { $implicit: this.index };
+                        this.contentTemplate = item.template;
+                        break;
+                    default:
+                        this.context = {};
+                        this.contentTemplate = item.template;
+                        break;
+                }
+            }
+        });
+    }
+}
+GalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: { templates: "templates", index: "index", item: "item", type: "type" }, ngImport: i0, template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItemSlot',
+                    template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { templates: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], item: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }] } });
+export class GalleriaItem {
+    constructor() {
+        this.circular = false;
+        this.showItemNavigators = false;
+        this.showIndicators = true;
+        this.slideShowActive = true;
+        this.changeItemOnIndicatorHover = true;
+        this.autoPlay = false;
+        this.startSlideShow = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.onActiveIndexChange = new EventEmitter();
+        this._activeIndex = 0;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+        this.activeItem = this.value[this._activeIndex];
+    }
+    ngOnInit() {
+        if (this.autoPlay) {
+            this.startSlideShow.emit();
+        }
+    }
+    next() {
+        let nextItemIndex = this.activeIndex + 1;
+        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex
+            ? 0
+            : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    prev() {
+        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;
+        let activeIndex = this.circular && this.activeIndex === 0
+            ? this.value.length - 1
+            : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        this.next();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        this.prev();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onIndicatorClick(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    onIndicatorMouseEnter(index) {
+        if (this.changeItemOnIndicatorHover) {
+            this.stopTheSlideShow();
+            this.onActiveIndexChange.emit(index);
+        }
+    }
+    onIndicatorKeyDown(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    isNavForwardDisabled() {
+        return !this.circular && this.activeIndex === (this.value.length - 1);
+    }
+    isNavBackwardDisabled() {
+        return !this.circular && this.activeIndex === 0;
+    }
+    isIndicatorItemActive(index) {
+        return this.activeIndex === index;
+    }
+}
+GalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItem, selector: "p-galleriaItem", inputs: { circular: "circular", value: "value", showItemNavigators: "showItemNavigators", showIndicators: "showIndicators", slideShowActive: "slideShowActive", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", autoPlay: "autoPlay", templates: "templates", indicatorFacet: "indicatorFacet", captionFacet: "captionFacet", activeIndex: "activeIndex" }, outputs: { startSlideShow: "startSlideShow", stopSlideShow: "stopSlideShow", onActiveIndexChange: "onActiveIndexChange" }, ngImport: i0, template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItem',
+                    template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { circular: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], indicatorFacet: [{
+                type: Input
+            }], captionFacet: [{
+                type: Input
+            }], startSlideShow: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], onActiveIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+export class GalleriaThumbnails {
+    constructor(cd) {
+        this.cd = cd;
+        this.isVertical = false;
+        this.slideShowActive = false;
+        this.circular = false;
+        this.contentHeight = "300px";
+        this.showThumbnailNavigators = true;
+        this.onActiveIndexChange = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.startPos = null;
+        this.thumbnailsStyle = null;
+        this.sortedResponsiveOptions = null;
+        this.totalShiftedItems = 0;
+        this.page = 0;
+        this._numVisible = 0;
+        this.d_numVisible = 0;
+        this._oldNumVisible = 0;
+        this._activeIndex = 0;
+        this._oldactiveIndex = 0;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    ;
+    set numVisible(numVisible) {
+        this._numVisible = numVisible;
+        this._oldNumVisible = this.d_numVisible;
+        this.d_numVisible = numVisible;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._oldactiveIndex = this._activeIndex;
+        this._activeIndex = activeIndex;
+    }
+    ngOnInit() {
+        this.createStyle();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+    }
+    ngAfterContentChecked() {
+        let totalShiftedItems = this.totalShiftedItems;
+        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {
+            if (this._activeIndex <= this.getMedianItemIndex()) {
+                totalShiftedItems = 0;
+            }
+            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;
+            }
+            else {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            if (this.itemsContainer && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            }
+            if (this._oldactiveIndex !== this._activeIndex) {
+                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+            }
+            this._oldactiveIndex = this._activeIndex;
+            this._oldNumVisible = this.d_numVisible;
+        }
+    }
+    ngAfterViewInit() {
+        this.calculatePosition();
+    }
+    createStyle() {
+        if (!this.thumbnailsStyle) {
+            this.thumbnailsStyle = document.createElement('style');
+            this.thumbnailsStyle.type = 'text/css';
+            document.body.appendChild(this.thumbnailsStyle);
+        }
+        let innerHTML = `
+            #${this.containerId} .p-galleria-thumbnail-item {
+                flex: 1 0 ${(100 / this.d_numVisible)}%
+            }
+        `;
+        if (this.responsiveOptions) {
+            this.sortedResponsiveOptions = [...this.responsiveOptions];
+            this.sortedResponsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.containerId} .p-galleria-thumbnail-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.thumbnailsStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.itemsContainer && this.sortedResponsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this._numVisible
+            };
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this.d_numVisible !== matchedResponsiveData.numVisible) {
+                this.d_numVisible = matchedResponsiveData.numVisible;
+                this.cd.markForCheck();
+            }
+        }
+    }
+    getTabIndex(index) {
+        return this.isItemActive(index) ? 0 : null;
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        let nextItemIndex = this._activeIndex + 1;
+        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {
+            this.step(-1);
+        }
+        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;
+        let diff = prevItemIndex + this.totalShiftedItems;
+        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {
+            this.step(1);
+        }
+        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onItemClick(index) {
+        this.stopTheSlideShow();
+        let selectedItemIndex = index;
+        if (selectedItemIndex !== this._activeIndex) {
+            const diff = selectedItemIndex + this.totalShiftedItems;
+            let dir = 0;
+            if (selectedItemIndex < this._activeIndex) {
+                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();
+                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {
+                    this.step(dir);
+                }
+            }
+            else {
+                dir = this.getMedianItemIndex() - diff;
+                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {
+                    this.step(dir);
+                }
+            }
+            this.activeIndex = selectedItemIndex;
+            this.onActiveIndexChange.emit(this.activeIndex);
+        }
+    }
+    step(dir) {
+        let totalShiftedItems = this.totalShiftedItems + dir;
+        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {
+            totalShiftedItems = this.d_numVisible - this.value.length;
+        }
+        else if (dir > 0 && totalShiftedItems > 0) {
+            totalShiftedItems = 0;
+        }
+        if (this.circular) {
+            if (dir < 0 && this.value.length - 1 === this._activeIndex) {
+                totalShiftedItems = 0;
+            }
+            else if (dir > 0 && this._activeIndex === 0) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+        }
+        if (this.itemsContainer) {
+            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (diff < 0) { // left
+            this.navForward(e);
+        }
+        else { // right
+            this.navBackward(e);
+        }
+    }
+    getTotalPageNumber() {
+        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;
+    }
+    getMedianItemIndex() {
+        let index = Math.floor(this.d_numVisible / 2);
+        return (this.d_numVisible % 2) ? index : index - 1;
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer && this.itemsContainer.nativeElement) {
+            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transition = '';
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    isNavBackwardDisabled() {
+        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);
+    }
+    isNavForwardDisabled() {
+        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);
+    }
+    firstItemAciveIndex() {
+        return this.totalShiftedItems * -1;
+    }
+    lastItemActiveIndex() {
+        return this.firstItemAciveIndex() + this.d_numVisible - 1;
+    }
+    isItemActive(index) {
+        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = () => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.thumbnailsStyle) {
+            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);
+        }
+    }
+}
+GalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaThumbnails, selector: "p-galleriaThumbnails", inputs: { containerId: "containerId", value: "value", isVertical: "isVertical", slideShowActive: "slideShowActive", circular: "circular", responsiveOptions: "responsiveOptions", contentHeight: "contentHeight", showThumbnailNavigators: "showThumbnailNavigators", templates: "templates", numVisible: "numVisible", activeIndex: "activeIndex" }, outputs: { onActiveIndexChange: "onActiveIndexChange", stopSlideShow: "stopSlideShow" }, viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], ngImport: i0, template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaThumbnails',
+                    template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], isVertical: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], contentHeight: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], onActiveIndexChange: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], numVisible: [{
+                type: Input
+            }], activeIndex: [{
+                type: Input
+            }] } });
+export class GalleriaModule {
+}
+GalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });
+GalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],
+                    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZ2FsbGVyaWEvZ2FsbGVyaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWlGLGlCQUFpQixFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUN4UixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFrQzFGLE1BQU0sT0FBTyxRQUFRO0lBNEZqQixZQUFtQixPQUFtQixFQUFTLEVBQXFCLEVBQVMsTUFBcUI7UUFBL0UsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWxGekYsZUFBVSxHQUFZLEtBQUssQ0FBQztRQU01QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBSXZCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVwQyw0QkFBdUIsR0FBWSxJQUFJLENBQUM7UUFFeEMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBRTNDLCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUU1QyxhQUFRLEdBQVksS0FBSyxD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bWVudFJlZixPbkRlc3Ryb3ksSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIFByaW1lVGVtcGxhdGUsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBVbmlxdWVDb21wb25lbnRJZCwgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWdhbGxlcmlhJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZnVsbFNjcmVlbjtlbHNlIHdpbmRvd2VkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWFza1Zpc2libGVcIiAjbWFzayBbbmdDbGFzc109XCJ7J3AtZ2FsbGVyaWEtbWFzayBwLWNvbXBvbmVudC1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXktZW50ZXInOnRydWUsICdwLWdhbGxlcmlhLXZpc2libGUnOiB0aGlzLnZpc2libGV9XCIgW2NsYXNzXT1cIm1hc2tDbGFzc1wiPlxuICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhQ29udGVudCAqbmdJZj1cInZpc2libGVcIiBbQGFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgKEBhbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgW251bVZpc2libGVdPVwibnVtVmlzaWJsZVwiIChtYXNrSGlkZSk9XCJvbk1hc2tIaWRlKClcIiAoYWN0aXZlSXRlbUNoYW5nZSk9XCJvbkFjdGl2ZUl0ZW1DaGFuZ2UoJGV2ZW50KVwiIFtuZ1N0eWxlXT1cImNvbnRhaW5lclN0eWxlXCI+PC9wLWdhbGxlcmlhQ29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3dpbmRvd2VkPlxuICAgICAgICAgICAgPHAtZ2FsbGVyaWFDb250ZW50IFt2YWx1ZV09XCJ2YWx1ZVwiIFthY3RpdmVJbmRleF09XCJhY3RpdmVJbmRleFwiIFtudW1WaXNpYmxlXT1cIm51bVZpc2libGVcIiAoYWN0aXZlSXRlbUNoYW5nZSk9XCJvbkFjdGl2ZUl0ZW1DaGFuZ2UoJGV2ZW50KVwiPjwvcC1nYWxsZXJpYUNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNyknLCBvcGFjaXR5OiAwIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNyknLCBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2FsbGVyaWEuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWEgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBnZXQgYWN0aXZlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUluZGV4O1xuICAgIH07XG5cbiAgICBzZXQgYWN0aXZlSW5kZXgoYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBmdWxsU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueVtdO1xuXG4gICAgQElucHV0KCkgbnVtVmlzaWJsZTogbnVtYmVyID0gMztcblxuICAgIEBJbnB1dCgpIHJlc3BvbnNpdmVPcHRpb25zOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHNob3dJdGVtTmF2aWdhdG9yczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2hvd1RodW1ibmFpbE5hdmlnYXRvcnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd0l0ZW1OYXZpZ2F0b3JzT25Ib3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgY2hhbmdlSXRlbU9uSW5kaWNhdG9ySG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGNpcmN1bGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhdXRvUGxheTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbkludGVydmFsOiBudW1iZXIgPSA0MDAwO1xuXG4gICAgQElucHV0KCkgc2hvd1RodW1ibmFpbHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdGh1bWJuYWlsc1Bvc2l0aW9uOiBzdHJpbmcgPSBcImJvdHRvbVwiO1xuXG4gICAgQElucHV0KCkgdmVydGljYWxUaHVtYm5haWxWaWV3UG9ydEhlaWdodDogc3RyaW5nID0gXCIzMDBweFwiO1xuXG4gICAgQElucHV0KCkgc2hvd0luZGljYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dJbmRpY2F0b3JzT25JdGVtOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpbmRpY2F0b3JzUG9zaXRpb246IHN0cmluZyA9IFwiYm90dG9tXCI7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbWFza0NsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyU3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBWaWV3Q2hpbGQoJ21hc2snKSBtYXNrOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH07XG5cbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuXG4gICAgICAgIGlmICh0aGlzLl92aXNpYmxlICYmICF0aGlzLm1hc2tWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBPdXRwdXQoKSBhY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9hY3RpdmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIGhlYWRlckZhY2V0OiBhbnk7XG5cbiAgICBmb290ZXJGYWNldDogYW55O1xuXG4gICAgaW5kaWNhdG9yRmFjZXQ6IGFueTtcblxuICAgIGNhcHRpb25GYWNldDogYW55O1xuXG4gICAgbWFza1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7IH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRpY2F0b3JGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FwdGlvbkZhY2V0ID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy52YWx1ZSAmJiBzaW1wbGVDaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoIDwgdGhpcy5udW1WaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm51bVZpc2libGUgPSBzaW1wbGVDaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hc2tIaWRlKCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlSXRlbUNoYW5nZShpbmRleCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVNb2RhbGl0eSgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbmFibGVNb2RhbGl0eSgpIHtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQsIHRoaXMuYmFzZVpJbmRleCB8fCB0aGlzLmNvbmZpZy56SW5kZXgubW9kYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZU1vZGFsaXR5KCkge1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmZ1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYUNvbnRlbnQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWRcIiAqbmdJZj1cInZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDBcIiBbbmdDbGFzc109XCJ7J3AtZ2FsbGVyaWEgcC1jb21wb25lbnQnOiB0cnVlLCAncC1nYWxsZXJpYS1mdWxsc2NyZWVuJzogdGhpcy5nYWxsZXJpYS5mdWxsU2NyZWVuLFxuICAgICAgICAgICAgJ3AtZ2FsbGVyaWEtaW5kaWNhdG9yLW9uaXRlbSc6IHRoaXMuZ2FsbGVyaWEuc2hvd0luZGljYXRvcnNPbkl0ZW0sICdwLWdhbGxlcmlhLWl0ZW0tbmF2LW9uaG92ZXInOiB0aGlzLmdhbGxlcmlhLnNob3dJdGVtTmF2aWdhdG9yc09uSG92ZXIgJiYgIXRoaXMuZ2FsbGVyaWEuZnVsbFNjcmVlbn1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiIWdhbGxlcmlhLmZ1bGxTY3JlZW4gPyBnYWxsZXJpYS5jb250YWluZXJTdHlsZSA6IHt9XCIgW2NsYXNzXT1cImdhbGxlcmlhQ2xhc3MoKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdhbGxlcmlhLmZ1bGxTY3JlZW5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwLWdhbGxlcmlhLWNsb3NlIHAtbGlua1wiIChjbGljayk9XCJtYXNrSGlkZS5lbWl0KClcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1nYWxsZXJpYS1jbG9zZS1pY29uIHBpIHBpLXRpbWVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2FsbGVyaWEudGVtcGxhdGVzICYmIGdhbGxlcmlhLmhlYWRlckZhY2V0XCIgY2xhc3M9XCJwLWdhbGxlcmlhLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhSXRlbVNsb3QgdHlwZT1cImhlYWRlclwiIFt0ZW1wbGF0ZXNdPVwiZ2FsbGVyaWEudGVtcGxhdGVzXCI+PC9wLWdhbGxlcmlhSXRlbVNsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW0gW3ZhbHVlXT1cInZhbHVlXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgW2NpcmN1bGFyXT1cImdhbGxlcmlhLmNpcmN1bGFyXCIgW3RlbXBsYXRlc109XCJnYWxsZXJpYS50ZW1wbGF0ZXNcIiAob25BY3RpdmVJbmRleENoYW5nZSk9XCJvbkFjdGl2ZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0luZGljYXRvcnNdPVwiZ2FsbGVyaWEuc2hvd0luZGljYXRvcnNcIiBbY2hhbmdlSXRlbU9uSW5kaWNhdG9ySG92ZXJdPVwiZ2FsbGVyaWEuY2hhbmdlSXRlbU9uSW5kaWNhdG9ySG92ZXJcIiBbaW5kaWNhdG9yRmFjZXRdPVwiZ2FsbGVyaWEuaW5kaWNhdG9yRmFjZXRcIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbkZhY2V0XT1cImdhbGxlcmlhLmNhcHRpb25GYWNldFwiIFtzaG93SXRlbU5hdmlnYXRvcnNdPVwiZ2FsbGVyaWEuc2hvd0l0ZW1OYXZpZ2F0b3JzXCIgW2F1dG9QbGF5XT1cImdhbGxlcmlhLmF1dG9QbGF5XCIgW3NsaWRlU2hvd0FjdGl2ZV09XCJzbGlkZVNob3dBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAoc3RhcnRTbGlkZVNob3cpPVwic3RhcnRTbGlkZVNob3coKVwiIChzdG9wU2xpZGVTaG93KT1cInN0b3BTbGlkZVNob3coKVwiPjwvcC1nYWxsZXJpYUl0ZW0+XG5cbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYVRodW1ibmFpbHMgKm5nSWY9XCJnYWxsZXJpYS5zaG93VGh1bWJuYWlsc1wiIFtjb250YWluZXJJZF09XCJpZFwiIFt2YWx1ZV09XCJ2YWx1ZVwiIChvbkFjdGl2ZUluZGV4Q2hhbmdlKT1cIm9uQWN0aXZlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiIFthY3RpdmVJbmRleF09XCJhY3RpdmVJbmRleFwiIFt0ZW1wbGF0ZXNdPVwiZ2FsbGVyaWEudGVtcGxhdGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW251bVZpc2libGVdPVwibnVtVmlzaWJsZVwiIFtyZXNwb25zaXZlT3B0aW9uc109XCJnYWxsZXJpYS5yZXNwb25zaXZlT3B0aW9uc1wiIFtjaXJjdWxhcl09XCJnYWxsZXJpYS5jaXJjdWxhclwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1ZlcnRpY2FsXT1cImlzVmVydGljYWwoKVwiIFtjb250ZW50SGVpZ2h0XT1cImdhbGxlcmlhLnZlcnRpY2FsVGh1bWJuYWlsVmlld1BvcnRIZWlnaHRcIiBbc2hvd1RodW1ibmFpbE5hdmlnYXRvcnNdPVwiZ2FsbGVyaWEuc2hvd1RodW1ibmFpbE5hdmlnYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICBbc2xpZGVTaG93QWN0aXZlXT1cInNsaWRlU2hvd0FjdGl2ZVwiIChzdG9wU2xpZGVTaG93KT1cInN0b3BTbGlkZVNob3coKVwiPjwvcC1nYWxsZXJpYVRodW1ibmFpbHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnYWxsZXJpYS50ZW1wbGF0ZXMgJiYgZ2FsbGVyaWEuZm9vdGVyRmFjZXRcIiBjbGFzcz1cInAtZ2FsbGVyaWEtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPHAtZ2FsbGVyaWFJdGVtU2xvdCB0eXBlPVwiZm9vdGVyXCIgW3RlbXBsYXRlc109XCJnYWxsZXJpYS50ZW1wbGF0ZXNcIj48L3AtZ2FsbGVyaWFJdGVtU2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFDb250ZW50IHtcblxuICAgIEBJbnB1dCgpIGdldCBhY3RpdmVJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgfTtcblxuICAgIHNldCBhY3RpdmVJbmRleChhY3RpdmVJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueVtdID0gW107XG5cbiAgICBASW5wdXQoKSBudW1WaXNpYmxlOiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgbWFza0hpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIGFjdGl2ZUl0ZW1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaWQ6IHN0cmluZyA9IHRoaXMuZ2FsbGVyaWEuaWQgfHwgVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIHNsaWRlU2hvd0FjdGljdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9hY3RpdmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIHNsaWRlU2hvd0FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBpbnRlcnZhbDogYW55O1xuXG4gICAgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGdhbGxlcmlhOiBHYWxsZXJpYSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBnYWxsZXJpYUNsYXNzKCkge1xuICAgICAgICBjb25zdCB0aHVtYm5haWxzUG9zQ2xhc3MgPSB0aGlzLmdhbGxlcmlhLnNob3dUaHVtYm5haWxzICYmIHRoaXMuZ2V0UG9zaXRpb25DbGFzcygncC1nYWxsZXJpYS10aHVtYm5haWxzJywgdGhpcy5nYWxsZXJpYS50aHVtYm5haWxzUG9zaXRpb24pO1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JQb3NDbGFzcyA9IHRoaXMuZ2FsbGVyaWEuc2hvd0luZGljYXRvcnMgJiYgdGhpcy5nZXRQb3NpdGlvbkNsYXNzKCdwLWdhbGxlcmlhLWluZGljYXRvcnMnLCB0aGlzLmdhbGxlcmlhLmluZGljYXRvcnNQb3NpdGlvbik7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmdhbGxlcmlhLmNvbnRhaW5lckNsYXNzID8gdGhpcy5nYWxsZXJpYS5jb250YWluZXJDbGFzcyArIFwiIFwiIDogJycpICsgKHRodW1ibmFpbHNQb3NDbGFzcyA/IHRodW1ibmFpbHNQb3NDbGFzcyArIFwiIFwiIDogJycpICsgKGluZGljYXRvclBvc0NsYXNzID8gaW5kaWNhdG9yUG9zQ2xhc3MgKyBcIiBcIiA6ICcnKTtcbiAgICB9XG5cbiAgICBzdGFydFNsaWRlU2hvdygpIHtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGxldCBhY3RpdmVJbmRleCA9ICh0aGlzLmdhbGxlcmlhLmNpcmN1bGFyICYmICh0aGlzLnZhbHVlLmxlbmd0aCAtIDEpID09PSB0aGlzLmFjdGl2ZUluZGV4KSA/IDAgOiAodGhpcy5hY3RpdmVJbmRleCArIDEpO1xuICAgICAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlKGFjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgICAgfSwgdGhpcy5nYWxsZXJpYS50cmFuc2l0aW9uSW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuc2xpZGVTaG93QWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzdG9wU2xpZGVTaG93KCkge1xuICAgICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2xpZGVTaG93QWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0UG9zaXRpb25DbGFzcyhwcmVDbGFzc05hbWUsIHBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gICAgICAgIGNvbnN0IHBvcyA9IHBvc2l0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbSA9PT0gcG9zaXRpb24pO1xuXG4gICAgICAgIHJldHVybiBwb3MgPyBgJHtwcmVDbGFzc05hbWV9LSR7cG9zfWAgOiAnJztcbiAgICB9XG5cbiAgICBpc1ZlcnRpY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJpYS50aHVtYm5haWxzUG9zaXRpb24gPT09ICdsZWZ0JyB8fCB0aGlzLmdhbGxlcmlhLnRodW1ibmFpbHNQb3NpdGlvbiA9PT0gJ3JpZ2h0JztcbiAgICB9XG5cbiAgICBvbkFjdGl2ZUluZGV4Q2hhbmdlKGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYUl0ZW1TbG90JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHYWxsZXJpYUl0ZW1TbG90IHtcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGdldCBpdGVtKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICAgIH07XG5cbiAgICBzZXQgaXRlbShpdGVtOmFueSkge1xuICAgICAgICB0aGlzLl9pdGVtID0gaXRlbTtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSB0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RodW1ibmFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0geyRpbXBsaWNpdDogdGhpcy5pdGVtfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29udGV4dDphbnk7XG5cbiAgICBfaXRlbTphbnk7XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gdGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RodW1ibmFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB7JGltcGxpY2l0OiB0aGlzLml0ZW19O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHskaW1wbGljaXQ6IHRoaXMuaW5kZXh9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWdhbGxlcmlhSXRlbScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtZ2FsbGVyaWEtaXRlbS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1nYWxsZXJpYS1pdGVtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93SXRlbU5hdmlnYXRvcnNcIiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwieydwLWdhbGxlcmlhLWl0ZW0tcHJldiBwLWdhbGxlcmlhLWl0ZW0tbmF2IHAtbGluayc6IHRydWUsICdwLWRpc2FibGVkJzogdGhpcy5pc05hdkJhY2t3YXJkRGlzYWJsZWQoKX1cIiAoY2xpY2spPVwibmF2QmFja3dhcmQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc05hdkJhY2t3YXJkRGlzYWJsZWQoKVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1nYWxsZXJpYS1pdGVtLXByZXYtaWNvbiBwaSBwaS1jaGV2cm9uLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPHAtZ2FsbGVyaWFJdGVtU2xvdCB0eXBlPVwiaXRlbVwiIFtpdGVtXT1cImFjdGl2ZUl0ZW1cIiBbdGVtcGxhdGVzXT1cInRlbXBsYXRlc1wiIGNsYXNzPVwicC1nYWxsZXJpYS1pdGVtXCI+PC9wLWdhbGxlcmlhSXRlbVNsb3Q+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dJdGVtTmF2aWdhdG9yc1wiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7J3AtZ2FsbGVyaWEtaXRlbS1uZXh0IHAtZ2FsbGVyaWEtaXRlbS1uYXYgcC1saW5rJzogdHJ1ZSwncC1kaXNhYmxlZCc6IHRoaXMuaXNOYXZGb3J3YXJkRGlzYWJsZWQoKX1cIiAoY2xpY2spPVwibmF2Rm9yd2FyZCgkZXZlbnQpXCIgIFtkaXNhYmxlZF09XCJpc05hdkZvcndhcmREaXNhYmxlZCgpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWdhbGxlcmlhLWl0ZW0tbmV4dC1pY29uIHBpIHBpLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ2FsbGVyaWEtY2FwdGlvblwiICpuZ0lmPVwiY2FwdGlvbkZhY2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhSXRlbVNsb3QgdHlwZT1cImNhcHRpb25cIiBbaXRlbV09XCJhY3RpdmVJdGVtXCIgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIj48L3AtZ2FsbGVyaWFJdGVtU2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsICpuZ0lmPVwic2hvd0luZGljYXRvcnNcIiBjbGFzcz1cInAtZ2FsbGVyaWEtaW5kaWNhdG9ycyBwLXJlc2V0XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleDtcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JbmRpY2F0b3JDbGljayhpbmRleClcIiAobW91c2VlbnRlcik9XCJvbkluZGljYXRvck1vdXNlRW50ZXIoaW5kZXgpXCIgKGtleWRvd24uZW50ZXIpPVwib25JbmRpY2F0b3JLZXlEb3duKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1nYWxsZXJpYS1pbmRpY2F0b3InOiB0cnVlLCdwLWhpZ2hsaWdodCc6IGlzSW5kaWNhdG9ySXRlbUFjdGl2ZShpbmRleCl9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYkluZGV4PVwiLTFcIiBjbGFzcz1cInAtbGlua1wiICpuZ0lmPVwiIWluZGljYXRvckZhY2V0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW1TbG90IHR5cGU9XCJpbmRpY2F0b3JcIiBbaW5kZXhdPVwiaW5kZXhcIiBbdGVtcGxhdGVzXT1cInRlbXBsYXRlc1wiPjwvcC1nYWxsZXJpYUl0ZW1TbG90PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFJdGVtIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIGNpcmN1bGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W107XG5cbiAgICBASW5wdXQoKSBzaG93SXRlbU5hdmlnYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dJbmRpY2F0b3JzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNsaWRlU2hvd0FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBjaGFuZ2VJdGVtT25JbmRpY2F0b3JIb3ZlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBhdXRvUGxheTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBJbnB1dCgpIGluZGljYXRvckZhY2V0OiBhbnk7XG5cbiAgICBASW5wdXQoKSBjYXB0aW9uRmFjZXQ6IGFueTtcblxuICAgIEBPdXRwdXQoKSBzdGFydFNsaWRlU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgc3RvcFNsaWRlU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25BY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBnZXQgYWN0aXZlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUluZGV4O1xuICAgIH07XG5cbiAgICBzZXQgYWN0aXZlSW5kZXgoYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gdGhpcy52YWx1ZVt0aGlzLl9hY3RpdmVJbmRleF07XG4gICAgfVxuXG4gICAgX2FjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9QbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0U2xpZGVTaG93LmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCBuZXh0SXRlbUluZGV4ID0gdGhpcy5hY3RpdmVJbmRleCArIDE7XG4gICAgICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMuY2lyY3VsYXIgJiYgdGhpcy52YWx1ZS5sZW5ndGggLSAxID09PSB0aGlzLmFjdGl2ZUluZGV4XG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IG5leHRJdGVtSW5kZXg7XG4gICAgICAgIHRoaXMub25BY3RpdmVJbmRleENoYW5nZS5lbWl0KGFjdGl2ZUluZGV4KTtcbiAgICB9XG5cbiAgICBwcmV2KCkge1xuICAgICAgICBsZXQgcHJldkl0ZW1JbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggIT09IDAgPyB0aGlzLmFjdGl2ZUluZGV4IC0gMSA6IDA7XG4gICAgICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMuY2lyY3VsYXIgJiYgdGhpcy5hY3RpdmVJbmRleCA9PT0gMFxuICAgICAgICAgICAgICAgID8gdGhpcy52YWx1ZS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgOiBwcmV2SXRlbUluZGV4XG4gICAgICAgIHRoaXMub25BY3RpdmVJbmRleENoYW5nZS5lbWl0KGFjdGl2ZUluZGV4KTtcbiAgICB9XG5cbiAgICBzdG9wVGhlU2xpZGVTaG93KCkge1xuICAgICAgICBpZiAodGhpcy5zbGlkZVNob3dBY3RpdmUgJiYgdGhpcy5zdG9wU2xpZGVTaG93KSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BTbGlkZVNob3cuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2Rm9yd2FyZChlKSB7XG4gICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuICAgICAgICB0aGlzLm5leHQoKTtcblxuICAgICAgICBpZiAoZSAmJiBlLmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hdkJhY2t3YXJkKGUpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG4gICAgICAgIHRoaXMucHJldigpO1xuXG4gICAgICAgIGlmIChlICYmIGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbmRpY2F0b3JDbGljayhpbmRleCkge1xuICAgICAgICB0aGlzLnN0b3BUaGVTbGlkZVNob3coKTtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uSW5kaWNhdG9yTW91c2VFbnRlcihpbmRleCkge1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VJdGVtT25JbmRpY2F0b3JIb3Zlcikge1xuICAgICAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG4gICAgICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkluZGljYXRvcktleURvd24oaW5kZXgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG4gICAgICAgIHRoaXMub25BY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICB9XG5cbiAgICBpc05hdkZvcndhcmREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNpcmN1bGFyICYmIHRoaXMuYWN0aXZlSW5kZXggPT09ICh0aGlzLnZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIGlzTmF2QmFja3dhcmREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNpcmN1bGFyICYmIHRoaXMuYWN0aXZlSW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgaXNJbmRpY2F0b3JJdGVtQWN0aXZlKGluZGV4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUluZGV4ID09PSBpbmRleDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYVRodW1ibmFpbHMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1nYWxsZXJpYS10aHVtYm5haWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dUaHVtYm5haWxOYXZpZ2F0b3JzXCIgdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cInsncC1nYWxsZXJpYS10aHVtYm5haWwtcHJldiBwLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IHRoaXMuaXNOYXZCYWNrd2FyZERpc2FibGVkKCl9XCIgKGNsaWNrKT1cIm5hdkJhY2t3YXJkKCRldmVudClcIiBbZGlzYWJsZWRdPVwiaXNOYXZCYWNrd2FyZERpc2FibGVkKClcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7J3AtZ2FsbGVyaWEtdGh1bWJuYWlsLXByZXYtaWNvbiBwaSc6IHRydWUsICdwaS1jaGV2cm9uLWxlZnQnOiAhdGhpcy5pc1ZlcnRpY2FsLCAncGktY2hldnJvbi11cCc6IHRoaXMuaXNWZXJ0aWNhbH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ2FsbGVyaWEtdGh1bWJuYWlsLWl0ZW1zLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogaXNWZXJ0aWNhbCA/IGNvbnRlbnRIZWlnaHQgOiAnJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAjaXRlbXNDb250YWluZXIgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtc1wiICh0cmFuc2l0aW9uZW5kKT1cIm9uVHJhbnNpdGlvbkVuZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCIgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXg7XCIgW25nQ2xhc3NdPVwieydwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtJzogdHJ1ZSwgJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLWl0ZW0tY3VycmVudCc6IGFjdGl2ZUluZGV4ID09PSBpbmRleCwgJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLWl0ZW0tYWN0aXZlJzogaXNJdGVtQWN0aXZlKGluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbS1zdGFydCc6IGZpcnN0SXRlbUFjaXZlSW5kZXgoKSA9PT0gaW5kZXgsICdwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtLWVuZCc6IGxhc3RJdGVtQWN0aXZlSW5kZXgoKSA9PT0gaW5kZXggfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtLWNvbnRlbnRcIiBbYXR0ci50YWJpbmRleF09XCJnZXRUYWJJbmRleChpbmRleClcIiAoY2xpY2spPVwib25JdGVtQ2xpY2soaW5kZXgpXCIgKGtleWRvd24uZW50ZXIpPVwib25JdGVtQ2xpY2soaW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhSXRlbVNsb3QgdHlwZT1cInRodW1ibmFpbFwiIFtpdGVtXT1cIml0ZW1cIiBbdGVtcGxhdGVzXT1cInRlbXBsYXRlc1wiPjwvcC1nYWxsZXJpYUl0ZW1TbG90PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93VGh1bWJuYWlsTmF2aWdhdG9yc1wiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7J3AtZ2FsbGVyaWEtdGh1bWJuYWlsLW5leHQgcC1saW5rJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiB0aGlzLmlzTmF2Rm9yd2FyZERpc2FibGVkKCl9XCIgKGNsaWNrKT1cIm5hdkZvcndhcmQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc05hdkZvcndhcmREaXNhYmxlZCgpXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydwLWdhbGxlcmlhLXRodW1ibmFpbC1uZXh0LWljb24gcGknOiB0cnVlLCAncGktY2hldnJvbi1yaWdodCc6ICF0aGlzLmlzVmVydGljYWwsICdwaS1jaGV2cm9uLWRvd24nOiB0aGlzLmlzVmVydGljYWx9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHYWxsZXJpYVRodW1ibmFpbHMgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBjb250YWluZXJJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueVtdO1xuXG4gICAgQElucHV0KCkgaXNWZXJ0aWNhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2xpZGVTaG93QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBjaXJjdWxhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVzcG9uc2l2ZU9wdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgY29udGVudEhlaWdodDogc3RyaW5nID0gXCIzMDBweFwiO1xuXG4gICAgQElucHV0KCkgc2hvd1RodW1ibmFpbE5hdmlnYXRvcnMgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBPdXRwdXQoKSBvbkFjdGl2ZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBzdG9wU2xpZGVTaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zQ29udGFpbmVyJykgaXRlbXNDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBnZXQgbnVtVmlzaWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtVmlzaWJsZTtcbiAgICB9O1xuXG4gICAgc2V0IG51bVZpc2libGUobnVtVmlzaWJsZSkge1xuICAgICAgICB0aGlzLl9udW1WaXNpYmxlID0gbnVtVmlzaWJsZTtcbiAgICAgICAgdGhpcy5fb2xkTnVtVmlzaWJsZSA9IHRoaXMuZF9udW1WaXNpYmxlO1xuICAgICAgICB0aGlzLmRfbnVtVmlzaWJsZSA9IG51bVZpc2libGU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcbiAgICB9O1xuXG4gICAgc2V0IGFjdGl2ZUluZGV4KGFjdGl2ZUluZGV4KSB7XG4gICAgICAgIHRoaXMuX29sZGFjdGl2ZUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgfVxuXG4gICAgaW5kZXg6IG51bWJlcjtcblxuICAgIHN0YXJ0UG9zID0gbnVsbDtcblxuICAgIHRodW1ibmFpbHNTdHlsZSA9IG51bGw7XG5cbiAgICBzb3J0ZWRSZXNwb25zaXZlT3B0aW9ucyA9IG51bGw7XG5cbiAgICB0b3RhbFNoaWZ0ZWRJdGVtczogbnVtYmVyID0gMDtcblxuICAgIHBhZ2U6IG51bWJlciA9IDA7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBfbnVtVmlzaWJsZTpudW1iZXIgPSAwO1xuXG4gICAgZF9udW1WaXNpYmxlOiBudW1iZXIgPSAwO1xuXG4gICAgX29sZE51bVZpc2libGU6IG51bWJlciA9IDA7XG5cbiAgICBfYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBfb2xkYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcblx0XHRcdHRoaXMuYmluZERvY3VtZW50TGlzdGVuZXJzKCk7XG5cdFx0fVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICAgICAgbGV0IHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcztcblxuICAgICAgICBpZiAoKHRoaXMuX29sZE51bVZpc2libGUgIT09IHRoaXMuZF9udW1WaXNpYmxlIHx8IHRoaXMuX29sZGFjdGl2ZUluZGV4ICE9PSB0aGlzLl9hY3RpdmVJbmRleCkgJiYgdGhpcy5pdGVtc0NvbnRhaW5lcikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUluZGV4IDw9IHRoaXMuZ2V0TWVkaWFuSXRlbUluZGV4KCkpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMuZF9udW1WaXNpYmxlICsgdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSA8IHRoaXMuX2FjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLmRfbnVtVmlzaWJsZSAtIHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YWx1ZS5sZW5ndGggLSB0aGlzLmRfbnVtVmlzaWJsZSA8IHRoaXMuX2FjdGl2ZUluZGV4ICYmIHRoaXMuZF9udW1WaXNpYmxlICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gKHRoaXMuX2FjdGl2ZUluZGV4ICogLTEpICsgdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9ICh0aGlzLl9hY3RpdmVJbmRleCAqIC0xKSArIHRoaXMuZ2V0TWVkaWFuSXRlbUluZGV4KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0b3RhbFNoaWZ0ZWRJdGVtcyAhPT0gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPSB0b3RhbFNoaWZ0ZWRJdGVtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNDb250YWluZXIgJiYgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IHRoaXMuaXNWZXJ0aWNhbCA/IGB0cmFuc2xhdGUzZCgwLCAke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMC8gdGhpcy5kX251bVZpc2libGUpfSUsIDApYCA6IGB0cmFuc2xhdGUzZCgke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMC8gdGhpcy5kX251bVZpc2libGUpfSUsIDAsIDApYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX29sZGFjdGl2ZUluZGV4ICE9PSB0aGlzLl9hY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAncC1pdGVtcy1oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNTAwbXMgZWFzZSAwcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX29sZGFjdGl2ZUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICB0aGlzLl9vbGROdW1WaXNpYmxlID0gdGhpcy5kX251bVZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5jYWxjdWxhdGVQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMudGh1bWJuYWlsc1N0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbHNTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbHNTdHlsZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50aHVtYm5haWxzU3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlubmVySFRNTCA9IGBcbiAgICAgICAgICAgICMke3RoaXMuY29udGFpbmVySWR9IC5wLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDAgJHsgKDEwMC8gdGhpcy5kX251bVZpc2libGUpIH0lXG4gICAgICAgICAgICB9XG4gICAgICAgIGA7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnMgPSBbLi4udGhpcy5yZXNwb25zaXZlT3B0aW9uc107XG4gICAgICAgICAgICB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zLnNvcnQoKGRhdGExLCBkYXRhMikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlMSA9IGRhdGExLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUyID0gZGF0YTIuYnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMiwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAodmFsdWUxIDwgdmFsdWUyKSA/IC0xIDogKHZhbHVlMSA+IHZhbHVlMikgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAtMSAqIHJlc3VsdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5zb3J0ZWRSZXNwb25zaXZlT3B0aW9uc1tpXTtcblxuICAgICAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7cmVzLmJyZWFrcG9pbnR9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAjJHt0aGlzLmNvbnRhaW5lcklkfSAucC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMSAwICR7ICgxMDAvIHJlcy5udW1WaXNpYmxlKSB9JVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aHVtYm5haWxzU3R5bGUuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVBvc2l0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5pdGVtc0NvbnRhaW5lciAmJiB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zKSB7XG4gICAgICAgICAgICBsZXQgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIGxldCBtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSB7XG4gICAgICAgICAgICAgICAgbnVtVmlzaWJsZTogdGhpcy5fbnVtVmlzaWJsZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnNbaV07XG5cbiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocmVzLmJyZWFrcG9pbnQsIDEwKSA+PSB3aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVkUmVzcG9uc2l2ZURhdGEgPSByZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kX251bVZpc2libGUgIT09IG1hdGNoZWRSZXNwb25zaXZlRGF0YS5udW1WaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kX251bVZpc2libGUgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtVmlzaWJsZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VGFiSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJdGVtQWN0aXZlKGluZGV4KSA/IDAgOiBudWxsO1xuICAgIH1cblxuICAgIG5hdkZvcndhcmQoZSkge1xuICAgICAgICB0aGlzLnN0b3BUaGVTbGlkZVNob3coKTtcblxuICAgICAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IHRoaXMuX2FjdGl2ZUluZGV4ICsgMTtcbiAgICAgICAgaWYgKG5leHRJdGVtSW5kZXggKyB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID4gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSAmJiAoKC0xICogdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcykgPCB0aGlzLmdldFRvdGFsUGFnZU51bWJlcigpIC0gMSB8fCB0aGlzLmNpcmN1bGFyKSkge1xuICAgICAgICAgICAgdGhpcy5zdGVwKC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMuY2lyY3VsYXIgJiYgKHRoaXMudmFsdWUubGVuZ3RoIC0gMSkgPT09IHRoaXMuX2FjdGl2ZUluZGV4ID8gMCA6IG5leHRJdGVtSW5kZXg7XG4gICAgICAgIHRoaXMub25BY3RpdmVJbmRleENoYW5nZS5lbWl0KGFjdGl2ZUluZGV4KTtcblxuICAgICAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZChlKSB7XG4gICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuXG4gICAgICAgIGxldCBwcmV2SXRlbUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXggIT09IDAgPyB0aGlzLl9hY3RpdmVJbmRleCAtIDEgOiAwO1xuICAgICAgICBsZXQgZGlmZiA9IHByZXZJdGVtSW5kZXggKyB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zO1xuICAgICAgICBpZiAoKHRoaXMuZF9udW1WaXNpYmxlIC0gZGlmZiAtIDEpID4gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSAmJiAoKC0xICogdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcykgIT09IDAgfHwgdGhpcy5jaXJjdWxhcikpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcCgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMuY2lyY3VsYXIgJiYgdGhpcy5fYWN0aXZlSW5kZXggPT09IDAgPyB0aGlzLnZhbHVlLmxlbmd0aCAtIDEgOiBwcmV2SXRlbUluZGV4O1xuICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJbmRleCk7XG5cbiAgICAgICAgaWYgKGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soaW5kZXgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gaW5kZXg7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPT0gdGhpcy5fYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBzZWxlY3RlZEl0ZW1JbmRleCArIHRoaXMudG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICBsZXQgZGlyID0gMDtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCA8IHRoaXMuX2FjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgZGlyID0gKHRoaXMuZF9udW1WaXNpYmxlIC0gZGlmZiAtIDEpIC0gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlyID4gMCAmJiAoLTEgKiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXAoZGlyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXIgPSB0aGlzLmdldE1lZGlhbkl0ZW1JbmRleCgpIC0gZGlmZjtcbiAgICAgICAgICAgICAgICBpZiAoZGlyIDwgMCAmJiAoLTEgKiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zKSA8IHRoaXMuZ2V0VG90YWxQYWdlTnVtYmVyKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcChkaXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHNlbGVjdGVkSXRlbUluZGV4O1xuICAgICAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGVwKGRpcikge1xuICAgICAgICBsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICsgZGlyO1xuXG4gICAgICAgIGlmIChkaXIgPCAwICYmICgtMSAqIHRvdGFsU2hpZnRlZEl0ZW1zKSArIHRoaXMuZF9udW1WaXNpYmxlID4gKHRoaXMudmFsdWUubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5kX251bVZpc2libGUgLSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaXIgPiAwICYmIHRvdGFsU2hpZnRlZEl0ZW1zID4gMCkge1xuICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2lyY3VsYXIpIHtcbiAgICAgICAgICAgIGlmIChkaXIgPCAwICYmIHRoaXMudmFsdWUubGVuZ3RoIC0gMSA9PT0gdGhpcy5fYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChkaXIgPiAwICYmIHRoaXMuX2FjdGl2ZUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLmRfbnVtVmlzaWJsZSAtIHRoaXMudmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXNDb250YWluZXIpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAncC1pdGVtcy1oaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLmlzVmVydGljYWwgPyBgdHJhbnNsYXRlM2QoMCwgJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAvIHRoaXMuZF9udW1WaXNpYmxlKX0lLCAwKWAgOiBgdHJhbnNsYXRlM2QoJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAvIHRoaXMuZF9udW1WaXNpYmxlKX0lLCAwLCAwKWA7XG4gICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNTAwbXMgZWFzZSAwcyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgfVxuXG4gICAgc3RvcFRoZVNsaWRlU2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVTaG93QWN0aXZlICYmIHRoaXMuc3RvcFNsaWRlU2hvdykge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2xpZGVTaG93LmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVBhZ2VPblRvdWNoKGUsIGRpZmYpIHtcbiAgICAgICAgaWYgKGRpZmYgPCAwKSB7ICAgICAgICAgICAvLyBsZWZ0XG4gICAgICAgICAgICB0aGlzLm5hdkZvcndhcmQoZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvLyByaWdodFxuICAgICAgICAgICAgdGhpcy5uYXZCYWNrd2FyZChlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFRvdGFsUGFnZU51bWJlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID4gdGhpcy5kX251bVZpc2libGUgPyAodGhpcy52YWx1ZS5sZW5ndGggLSB0aGlzLmRfbnVtVmlzaWJsZSkgKyAxIDogMDtcbiAgICB9XG5cbiAgICBnZXRNZWRpYW5JdGVtSW5kZXgoKSB7XG4gICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IodGhpcy5kX251bVZpc2libGUgLyAyKTtcblxuICAgICAgICByZXR1cm4gKHRoaXMuZF9udW1WaXNpYmxlICUgMikgPyBpbmRleCA6IGluZGV4IC0gMTtcbiAgICB9XG5cbiAgICBvblRyYW5zaXRpb25FbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zQ29udGFpbmVyICYmIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICdwLWl0ZW1zLWhpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hFbmQoZSkge1xuICAgICAgICBsZXQgdG91Y2hvYmogPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmVydGljYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZU9uVG91Y2goZSwgKHRvdWNob2JqLnBhZ2VZIC0gdGhpcy5zdGFydFBvcy55KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsICh0b3VjaG9iai5wYWdlWCAtIHRoaXMuc3RhcnRQb3MueCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ub3VjaE1vdmUoZSkge1xuICAgICAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoU3RhcnQoZSkge1xuICAgICAgICBsZXQgdG91Y2hvYmogPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xuXG4gICAgICAgIHRoaXMuc3RhcnRQb3MgPSB7XG4gICAgICAgICAgICB4OiB0b3VjaG9iai5wYWdlWCxcbiAgICAgICAgICAgIHk6IHRvdWNob2JqLnBhZ2VZXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNOYXZCYWNrd2FyZERpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gKCF0aGlzLmNpcmN1bGFyICYmIHRoaXMuX2FjdGl2ZUluZGV4ID09PSAwKSB8fCAodGhpcy52YWx1ZS5sZW5ndGggPD0gdGhpcy5kX251bVZpc2libGUpO1xuICAgIH1cblxuICAgIGlzTmF2Rm9yd2FyZERpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gKCF0aGlzLmNpcmN1bGFyICYmIHRoaXMuX2FjdGl2ZUluZGV4ID09PSAodGhpcy52YWx1ZS5sZW5ndGggLSAxKSkgfHwgKHRoaXMudmFsdWUubGVuZ3RoIDw9IHRoaXMuZF9udW1WaXNpYmxlKTtcbiAgICB9XG5cbiAgICBmaXJzdEl0ZW1BY2l2ZUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3RhbFNoaWZ0ZWRJdGVtcyAqIC0xO1xuICAgIH1cblxuICAgIGxhc3RJdGVtQWN0aXZlSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0SXRlbUFjaXZlSW5kZXgoKSArIHRoaXMuZF9udW1WaXNpYmxlIC0gMTtcbiAgICB9XG5cbiAgICBpc0l0ZW1BY3RpdmUoaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3RJdGVtQWNpdmVJbmRleCgpIDw9IGluZGV4ICYmIHRoaXMubGFzdEl0ZW1BY3RpdmVJbmRleCgpID49IGluZGV4O1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50TGlzdGVuZXJzKCkge1xuICAgICAgICBpZih0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuXHRcdFx0dGhpcy51bmJpbmREb2N1bWVudExpc3RlbmVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGh1bWJuYWlsc1N0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbHNTdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGh1bWJuYWlsc1N0eWxlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGUsIFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW0NvbW1vbk1vZHVsZSwgR2FsbGVyaWEsIEdhbGxlcmlhQ29udGVudCwgR2FsbGVyaWFJdGVtU2xvdCwgR2FsbGVyaWFJdGVtLCBHYWxsZXJpYVRodW1ibmFpbHMsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbR2FsbGVyaWEsIEdhbGxlcmlhQ29udGVudCwgR2FsbGVyaWFJdGVtU2xvdCwgR2FsbGVyaWFJdGVtLCBHYWxsZXJpYVRodW1ibmFpbHNdXG59KVxuZXhwb3J0IGNsYXNzIEdhbGxlcmlhTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/galleria/primeng-galleria.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/galleria/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/galleria/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1nYWxsZXJpYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9nYWxsZXJpYS9wcmltZW5nLWdhbGxlcmlhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/galleria/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/galleria/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/galleria/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './galleria';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9nYWxsZXJpYS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nYWxsZXJpYSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/gmap/gmap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/gmap/gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/gmap/gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,186 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class GMap {
+    constructor(el, differs, cd, zone) {
+        this.el = el;
+        this.cd = cd;
+        this.zone = zone;
+        this.onMapClick = new EventEmitter();
+        this.onOverlayClick = new EventEmitter();
+        this.onOverlayDblClick = new EventEmitter();
+        this.onOverlayDragStart = new EventEmitter();
+        this.onOverlayDrag = new EventEmitter();
+        this.onOverlayDragEnd = new EventEmitter();
+        this.onMapReady = new EventEmitter();
+        this.onMapDragEnd = new EventEmitter();
+        this.onZoomChanged = new EventEmitter();
+        this.differ = differs.find([]).create(null);
+    }
+    ngAfterViewChecked() {
+        if (!this.map && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    initialize() {
+        this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);
+        this.onMapReady.emit({
+            map: this.map
+        });
+        if (this.overlays) {
+            for (let overlay of this.overlays) {
+                overlay.setMap(this.map);
+                this.bindOverlayEvents(overlay);
+            }
+        }
+        this.map.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onMapClick.emit(event);
+            });
+        });
+        this.map.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onMapDragEnd.emit(event);
+            });
+        });
+        this.map.addListener('zoom_changed', (event) => {
+            this.zone.run(() => {
+                this.onZoomChanged.emit(event);
+            });
+        });
+    }
+    bindOverlayEvents(overlay) {
+        overlay.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onOverlayClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dblclick', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDblClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        if (overlay.getDraggable()) {
+            this.bindDragEvents(overlay);
+        }
+    }
+    ngDoCheck() {
+        let changes = this.differ.diff(this.overlays);
+        if (changes && this.map) {
+            changes.forEachRemovedItem((record) => {
+                google.maps.event.clearInstanceListeners(record.item);
+                record.item.setMap(null);
+            });
+            changes.forEachAddedItem((record) => {
+                record.item.setMap(this.map);
+                record.item.addListener('click', (event) => {
+                    this.zone.run(() => {
+                        this.onOverlayClick.emit({
+                            originalEvent: event,
+                            overlay: record.item,
+                            map: this.map
+                        });
+                    });
+                });
+                if (record.item.getDraggable()) {
+                    this.bindDragEvents(record.item);
+                }
+            });
+        }
+    }
+    bindDragEvents(overlay) {
+        overlay.addListener('dragstart', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragStart.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('drag', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDrag.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragEnd.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+    }
+    getMap() {
+        return this.map;
+    }
+}
+GMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+GMap.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GMap, selector: "p-gmap", inputs: { style: "style", styleClass: "styleClass", options: "options", overlays: "overlays" }, outputs: { onMapClick: "onMapClick", onOverlayClick: "onOverlayClick", onOverlayDblClick: "onOverlayDblClick", onOverlayDragStart: "onOverlayDragStart", onOverlayDrag: "onOverlayDrag", onOverlayDragEnd: "onOverlayDragEnd", onMapReady: "onMapReady", onMapDragEnd: "onMapDragEnd", onZoomChanged: "onZoomChanged" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div [ngStyle]="style" [class]="styleClass"></div>`, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-gmap',
+                    template: `<div [ngStyle]="style" [class]="styleClass"></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], overlays: [{
+                type: Input
+            }], onMapClick: [{
+                type: Output
+            }], onOverlayClick: [{
+                type: Output
+            }], onOverlayDblClick: [{
+                type: Output
+            }], onOverlayDragStart: [{
+                type: Output
+            }], onOverlayDrag: [{
+                type: Output
+            }], onOverlayDragEnd: [{
+                type: Output
+            }], onMapReady: [{
+                type: Output
+            }], onMapDragEnd: [{
+                type: Output
+            }], onZoomChanged: [{
+                type: Output
+            }] } });
+export class GMapModule {
+}
+GMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, declarations: [GMap], imports: [CommonModule], exports: [GMap] });
+GMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [GMap],
+                    declarations: [GMap]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9nbWFwL2dtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXFDLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUEwQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQWE3QyxNQUFNLE9BQU8sSUFBSTtJQWdDYixZQUFtQixFQUFjLEVBQUMsT0FBd0IsRUFBUyxFQUFxQixFQUFTLElBQVc7UUFBekYsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFrQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLFNBQUksR0FBSixJQUFJLENBQU87UUF0QmxHLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuRCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFELHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5ELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU81RCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFD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QkFUaEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsUUFBUSxFQUFFLG9EQUFvRDtvQkFDOUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNKO29MQUdZLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNOztBQWdKWCxNQUFNLE9BQU8sVUFBVTs7dUdBQVYsVUFBVTt3R0FBVixVQUFVLGlCQTFLVixJQUFJLGFBc0tILFlBQVksYUF0S2IsSUFBSTt3R0EwS0osVUFBVSxZQUpWLENBQUMsWUFBWSxDQUFDOzJGQUlkLFVBQVU7a0JBTHRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0JBQ2YsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO2lCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsQWZ0ZXJWaWV3Q2hlY2tlZCxEb0NoZWNrLElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsSXRlcmFibGVEaWZmZXJzLENoYW5nZURldGVjdG9yUmVmLE5nWm9uZSxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZ21hcCcsXG4gICAgdGVtcGxhdGU6IGA8ZGl2IFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj48L2Rpdj5gLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgR01hcCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsRG9DaGVjayB7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uczogYW55O1xuXG4gICAgQElucHV0KCkgb3ZlcmxheXM6IGFueVtdO1xuXG4gICAgQE91dHB1dCgpIG9uTWFwQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uT3ZlcmxheUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk92ZXJsYXlEYmxDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25PdmVybGF5RHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk92ZXJsYXlEcmFnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk92ZXJsYXlEcmFnRW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk1hcFJlYWR5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk1hcERyYWdFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uWm9vbUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZGlmZmVyOiBhbnk7XG5cbiAgICBtYXA6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZixkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyB6b25lOk5nWm9uZSkge1xuICAgICAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hcCAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMub25NYXBSZWFkeS5lbWl0KHtcbiAgICAgICAgICAgIG1hcDogdGhpcy5tYXBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheXMpIHtcbiAgICAgICAgICAgIGZvcihsZXQgb3ZlcmxheSBvZiB0aGlzLm92ZXJsYXlzKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zZXRNYXAodGhpcy5tYXApO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZE92ZXJsYXlFdmVudHMob3ZlcmxheSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hcC5hZGRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25NYXBDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1hcC5hZGRMaXN0ZW5lcignZHJhZ2VuZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1hcERyYWdFbmQuZW1pdChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tYXAuYWRkTGlzdGVuZXIoJ3pvb21fY2hhbmdlZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblpvb21DaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGJpbmRPdmVybGF5RXZlbnRzKG92ZXJsYXk6IGFueSkge1xuICAgICAgICBvdmVybGF5LmFkZExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlDbGljay5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICdvdmVybGF5Jzogb3ZlcmxheSxcbiAgICAgICAgICAgICAgICAgICAgbWFwOiB0aGlzLm1hcFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG92ZXJsYXkuYWRkTGlzdGVuZXIoJ2RibGNsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheURibENsaWNrLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJsYXknOiBvdmVybGF5LFxuICAgICAgICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG92ZXJsYXkuZ2V0RHJhZ2dhYmxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZERyYWdFdmVudHMob3ZlcmxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGxldCBjaGFuZ2VzID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLm92ZXJsYXlzKTtcblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiB0aGlzLm1hcCkge1xuICAgICAgICAgICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmNsZWFySW5zdGFuY2VMaXN0ZW5lcnMocmVjb3JkLml0ZW0pO1xuICAgICAgICAgICAgICAgIHJlY29yZC5pdGVtLnNldE1hcChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlY29yZC5pdGVtLnNldE1hcCh0aGlzLm1hcCk7XG4gICAgICAgICAgICAgICAgcmVjb3JkLml0ZW0uYWRkTGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlDbGljay5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5OiByZWNvcmQuaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLml0ZW0uZ2V0RHJhZ2dhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRHJhZ0V2ZW50cyhyZWNvcmQuaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRHJhZ0V2ZW50cyhvdmVybGF5KSB7XG4gICAgICAgIG92ZXJsYXkuYWRkTGlzdGVuZXIoJ2RyYWdzdGFydCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlEcmFnU3RhcnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5OiBvdmVybGF5LFxuICAgICAgICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheS5hZGRMaXN0ZW5lcignZHJhZycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlEcmFnLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgICAgICAgICAgICAgICAgbWFwOiB0aGlzLm1hcFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG92ZXJsYXkuYWRkTGlzdGVuZXIoJ2RyYWdlbmQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25PdmVybGF5RHJhZ0VuZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXk6IG92ZXJsYXksXG4gICAgICAgICAgICAgICAgICAgIG1hcDogdGhpcy5tYXBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0dNYXBdLFxuICAgIGRlY2xhcmF0aW9uczogW0dNYXBdXG59KVxuZXhwb3J0IGNsYXNzIEdNYXBNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/gmap/primeng-gmap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/gmap/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/gmap/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1nbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2dtYXAvcHJpbWVuZy1nbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/gmap/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/gmap/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/gmap/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './gmap';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9nbWFwL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dtYXAnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/image/image.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/image/image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/image/image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,268 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, EventEmitter, ViewChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { trigger, style, transition, animate, } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+export class Image {
+    constructor(config, cd) {
+        this.config = config;
+        this.cd = cd;
+        this.preview = false;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.maskVisible = false;
+        this.previewVisible = false;
+        this.rotate = 0;
+        this.scale = 1;
+        this.previewClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'indicator':
+                    this.indicatorTemplate = item.template;
+                    break;
+                default:
+                    this.indicatorTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onImageClick() {
+        if (this.preview) {
+            this.maskVisible = true;
+            this.previewVisible = true;
+        }
+    }
+    onMaskClick() {
+        if (!this.previewClick) {
+            this.previewVisible = false;
+            this.rotate = 0;
+            this.scale = 1;
+        }
+        this.previewClick = false;
+    }
+    onPreviewImageClick() {
+        this.previewClick = true;
+    }
+    rotateRight() {
+        this.rotate += 90;
+        this.previewClick = true;
+    }
+    rotateLeft() {
+        this.rotate -= 90;
+        this.previewClick = true;
+    }
+    zoomIn() {
+        this.scale = this.scale + 0.1;
+        this.previewClick = true;
+    }
+    zoomOut() {
+        this.scale = this.scale - 0.1;
+        this.previewClick = true;
+    }
+    zoomDisabled() {
+        return this.scale <= 0.5 || this.scale >= 1.5;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                break;
+            case 'void':
+                DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(this.container);
+                this.maskVisible = false;
+                this.container = null;
+                this.wrapper = null;
+                this.cd.markForCheck();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    moveOnTop() {
+        ZIndexUtils.set('modal', this.container, this.config.zIndex.modal);
+        this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    imagePreviewStyle() {
+        return { transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')' };
+    }
+    containerClass() {
+        return {
+            'p-image p-component': true,
+            'p-image-preview-container': this.preview
+        };
+    }
+}
+Image.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Image.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Image, selector: "p-image", inputs: { imageClass: "imageClass", imageStyle: "imageStyle", styleClass: "styleClass", style: "style", src: "src", alt: "alt", width: "width", height: "height", appendTo: "appendTo", preview: "preview", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-image', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { imageClass: [{
+                type: Input
+            }], imageStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], src: [{
+                type: Input
+            }], alt: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], preview: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ImageModule {
+}
+ImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, declarations: [Image], imports: [CommonModule], exports: [Image, SharedModule] });
+ImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Image, SharedModule],
+                    declarations: [Image]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW1hZ2UvaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBaUMsZUFBZSxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoUCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEdBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBMEQ1QyxNQUFNLE9BQU8sS0FBSztJQWtEZCxZQUFvQixNQUFxQixFQUFVLEVBQXFCO1FBQXBELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTlCL0QsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QiwwQkFBcUIsR0FBVyxrQ0FBa0MsQ0FBQztRQUVuRSwwQkFBcUIsR0FBVyxrQ0FBa0MsQ0FBQztRQUVsRSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBUXpELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLG1CQUFjLEdBQWEsS0FBSyxDQUFDO1FBRWpDLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFFbkIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixpQkFBWSxHQUFZLEtBQUssQ0FBQztJQU04QyxDQUFDO0lBRTdFLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsUUFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25CLEtBQUssV0FBVztvQkFDWixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDM0MsTUFBTTtnQkFFTjtvQkFDSSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDM0MsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQXFCO1FBQ2xDLFFBQU8sS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsTUFBTTtZQUVOLEtBQUssTUFBTTtnQkFDUCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztnQkFDbkUsTUFBTTtTQUNUO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFxQjtRQUNoQyxRQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDbEIsS0FBSyxNQUFNO2dCQUNQLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsTUFBTTtZQUNOLEtBQUssU0FBUztnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsTUFBTTtTQUNUO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNO2dCQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O2dCQUV4QyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNEO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPO1lBQ0gscUJBQXFCLEVBQUUsSUFBSTtZQUMzQiwyQkFBMkIsRUFBRSxJQUFJLENBQUMsT0FBTztTQUM1QyxDQUFDO0lBQ04sQ0FBQzs7a0dBcktRLEtBQUs7c0ZBQUwsS0FBSywrY0FnQ0csYUFBYSwySEF0RnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW1DVCxva0NBQ1c7UUFDUixPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2pCLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQzthQUN0QyxDQUFDO1lBQ0YsVUFBVSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixPQUFPLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0RixDQUFDO1NBQ0wsQ0FBQztLQUNMOzJGQVFRLEtBQUs7a0JBeERqQixTQUFTOytCQUNJLFNBQVMsWUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQ1QsY0FDVzt3QkFDUixPQUFPLENBQUMsV0FBVyxFQUFFOzRCQUNqQixVQUFVLENBQUMsaUJBQWlCLEVBQUU7Z0NBQzFCLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2dDQUM5QyxPQUFPLENBQUMsMEJBQTBCLENBQUM7NkJBQ3RDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLGlCQUFpQixFQUFFO2dDQUMxQixPQUFPLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDdEYsQ0FBQzt5QkFDTCxDQUFDO3FCQUNMLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtvSUFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFWSxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBRWUsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQTZJbEMsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkE3S1gsS0FBSyxhQXlLSixZQUFZLGFBektiLEtBQUssRUEwS0csWUFBWTt5R0FHcEIsV0FBVyxZQUpYLENBQUMsWUFBWSxDQUFDLEVBQ04sWUFBWTsyRkFHcEIsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7b0JBQzlCLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgQ29udGVudENoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIFRlbXBsYXRlUmVmLCBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIFByaW1lVGVtcGxhdGUsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge3RyaWdnZXIsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLCBBbmltYXRpb25FdmVudCx9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbWFnZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIj5cbiAgICAgICAgICAgIDxpbWcgW2F0dHIuc3JjXT1cInNyY1wiIFthdHRyLmFsdF09XCJhbHRcIiBbYXR0ci53aWR0aF09XCJ3aWR0aFwiIFthdHRyLmhlaWdodF09XCJoZWlnaHRcIiBbbmdTdHlsZV09XCJpbWFnZVN0eWxlXCIgW2NsYXNzXT1cImltYWdlQ2xhc3NcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW1hZ2UtcHJldmlldy1pbmRpY2F0b3JcIiAqbmdJZj1cInByZXZpZXdcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kaWNhdG9yVGVtcGxhdGU7ZWxzZSBkZWZhdWx0VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImluZGljYXRvclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3LWljb24gcGkgcGktZXllXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgI21hc2sgY2xhc3M9XCJwLWltYWdlLW1hc2sgcC1jb21wb25lbnQtb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5LWVudGVyXCIgKm5nSWY9XCJtYXNrVmlzaWJsZVwiIChjbGljayk9XCJvbk1hc2tDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW1hZ2UtdG9vbGJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1pbWFnZS1hY3Rpb24gcC1saW5rXCIgKGNsaWNrKT1cInJvdGF0ZVJpZ2h0KClcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXJlZnJlc2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1pbWFnZS1hY3Rpb24gcC1saW5rXCIgKGNsaWNrKT1cInJvdGF0ZUxlZnQoKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdW5kb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwLWltYWdlLWFjdGlvbiBwLWxpbmtcIiAoY2xpY2spPVwiem9vbU91dCgpXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJ6b29tRGlzYWJsZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2gtbWludXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1pbWFnZS1hY3Rpb24gcC1saW5rXCIgKGNsaWNrKT1cInpvb21JbigpXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJ6b29tRGlzYWJsZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2gtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwLWltYWdlLWFjdGlvbiBwLWxpbmtcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJldmlld1Zpc2libGVcIiBbQGFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCJcbiAgICAgICAgICAgICAgICAgICAgKEBhbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW2F0dHIuc3JjXT1cInNyY1wiIGNsYXNzPVwicC1pbWFnZS1wcmV2aWV3XCIgW25nU3R5bGVdPVwiaW1hZ2VQcmV2aWV3U3R5bGUoKVwiIChjbGljayk9XCJvblByZXZpZXdJbWFnZUNsaWNrKClcIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdhbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IHZpc2libGUnLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZSgwLjcpJywgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZSgwLjcpJywgb3BhY2l0eTogMCB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2ltYWdlLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEltYWdlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSBpbWFnZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpbWFnZVN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3JjOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhbHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWFzaycpIG1hc2s6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBpbmRpY2F0b3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG1hc2tWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcmV2aWV3VmlzaWJsZTogYm9vbGVhbiA9ICBmYWxzZTtcblxuICAgIHJvdGF0ZTogbnVtYmVyID0gMDtcblxuICAgIHNjYWxlOiBudW1iZXIgPSAxO1xuXG4gICAgcHJldmlld0NsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgd3JhcHBlcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpbmRpY2F0b3InOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGljYXRvclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kaWNhdG9yVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkltYWdlQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMubWFza1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3VmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hc2tDbGljaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXZpZXdDbGljaykge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3VmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yb3RhdGUgPSAwO1xuICAgICAgICAgICAgdGhpcy5zY2FsZSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZpZXdDbGljayA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uUHJldmlld0ltYWdlQ2xpY2soKSB7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByb3RhdGVSaWdodCgpIHtcbiAgICAgICAgdGhpcy5yb3RhdGUgKz0gOTA7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByb3RhdGVMZWZ0KCkge1xuICAgICAgICB0aGlzLnJvdGF0ZSAtPSA5MDtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHpvb21JbigpIHtcbiAgICAgICAgdGhpcy5zY2FsZSA9IHRoaXMuc2NhbGUgKyAwLjE7XG4gICAgICAgIHRoaXMucHJldmlld0NsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB6b29tT3V0KCkge1xuICAgICAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZSAtIDAuMTtcbiAgICAgICAgdGhpcy5wcmV2aWV3Q2xpY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHpvb21EaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUgPD0gMC41IHx8IHRoaXMuc2NhbGUgPj0gMS41O1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyID0gdGhpcy5jb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uVG9wKCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLndyYXBwZXIsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFza1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoe30pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHt9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21vZGFsJywgdGhpcy5jb250YWluZXIsIHRoaXMuY29uZmlnLnpJbmRleC5tb2RhbCk7XG4gICAgICAgIHRoaXMud3JhcHBlci5zdHlsZS56SW5kZXggPSBTdHJpbmcocGFyc2VJbnQodGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4LCAxMCkgLSAxKTtcbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMud3JhcHBlciwgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbWFnZVByZXZpZXdTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHt0cmFuc2Zvcm06ICdyb3RhdGUoJyArIHRoaXMucm90YXRlICsgJ2RlZykgc2NhbGUoJyArIHRoaXMuc2NhbGUgKyAnKSd9O1xuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtaW1hZ2UgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtaW1hZ2UtcHJldmlldy1jb250YWluZXInOiB0aGlzLnByZXZpZXdcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0ltYWdlLCBTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW0ltYWdlXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/image/primeng-image.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/image/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/image/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbWFnZS9wcmltZW5nLWltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/image/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/image/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/image/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './image';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbWFnZS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbWFnZSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inplace/inplace.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inplace/inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inplace/inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,153 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+export class InplaceDisplay {
+}
+InplaceDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceDisplay, selector: "p-inplaceDisplay", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceDisplay',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+export class InplaceContent {
+}
+InplaceContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceContent, selector: "p-inplaceContent", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceContent',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+export class Inplace {
+    constructor(cd) {
+        this.cd = cd;
+        this.closeIcon = 'pi pi-times';
+        this.onActivate = new EventEmitter();
+        this.onDeactivate = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'display':
+                    this.displayTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onActivateClick(event) {
+        if (!this.preventClick)
+            this.activate(event);
+    }
+    onDeactivateClick(event) {
+        if (!this.preventClick)
+            this.deactivate(event);
+    }
+    activate(event) {
+        if (!this.disabled) {
+            this.active = true;
+            this.onActivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    deactivate(event) {
+        if (!this.disabled) {
+            this.active = false;
+            this.hover = false;
+            this.onDeactivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 13) {
+            this.activate(event);
+            event.preventDefault();
+        }
+    }
+}
+Inplace.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Inplace.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Inplace, selector: "p-inplace", inputs: { active: "active", closable: "closable", disabled: "disabled", preventClick: "preventClick", style: "style", styleClass: "styleClass", closeIcon: "closeIcon" }, outputs: { onActivate: "onActivate", onDeactivate: "onDeactivate" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inplace', template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { active: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], preventClick: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onActivate: [{
+                type: Output
+            }], onDeactivate: [{
+                type: Output
+            }] } });
+export class InplaceModule {
+}
+InplaceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InplaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, declarations: [Inplace, InplaceDisplay, InplaceContent], imports: [CommonModule, ButtonModule], exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule] });
+InplaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, imports: [[CommonModule, ButtonModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule],
+                    declarations: [Inplace, InplaceDisplay, InplaceContent]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wbGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnBsYWNlL2lucGxhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQStELGVBQWUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7QUFTMUMsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7K0ZBQWQsY0FBYywrRkFMYiwyQkFBMkI7MkZBSzVCLGNBQWM7a0JBUDFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjs7QUFVRCxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzsrRkFBZCxjQUFjLCtGQUxiLDJCQUEyQjsyRkFLNUIsY0FBYztrQkFQMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lCQUNKOztBQTBCRCxNQUFNLE9BQU8sT0FBTztJQTRCaEIsWUFBbUIsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFkL0IsY0FBUyxHQUFXLGFBQWEsQ0FBQztRQUlqQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkQsaUJBQVksR0FBc0IsSUFB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QVksRUFBQyxZQUFZLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsY0FBYyxFQUFDLFlBQVksQ0FBQztvQkFDN0QsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxjQUFjLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgUXVlcnlMaXN0LCBDb250ZW50Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbnBsYWNlRGlzcGxheScsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBJbnBsYWNlRGlzcGxheSB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtaW5wbGFjZUNvbnRlbnQnLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSW5wbGFjZUNvbnRlbnQge31cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLWlucGxhY2UnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLWlucGxhY2UgcC1jb21wb25lbnQnOiB0cnVlLCAncC1pbnBsYWNlLWNsb3NhYmxlJzogY2xvc2FibGV9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wbGFjZS1kaXNwbGF5XCIgKGNsaWNrKT1cIm9uQWN0aXZhdGVDbGljaygkZXZlbnQpXCIgdGFiaW5kZXg9XCIwXCIgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6ZGlzYWJsZWR9XCIgKm5nSWY9XCIhYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BJbnBsYWNlRGlzcGxheV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbnBsYWNlLWNvbnRlbnRcIiAqbmdJZj1cImFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwSW5wbGFjZUNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbaWNvbl09XCJjbG9zZUljb25cIiBwQnV0dG9uIChjbGljayk9XCJvbkRlYWN0aXZhdGVDbGljaygkZXZlbnQpXCIgKm5nSWY9XCJjbG9zYWJsZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnBsYWNlLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIElucGxhY2UgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIEBJbnB1dCgpIGFjdGl2ZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNsb3NhYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwcmV2ZW50Q2xpY2s6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgPSAncGkgcGktdGltZXMnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgQE91dHB1dCgpIG9uQWN0aXZhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRGVhY3RpdmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBob3ZlcjogYm9vbGVhbjtcblxuICAgIGRpc3BsYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkFjdGl2YXRlQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXZlbnRDbGljaylcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGUoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRGVhY3RpdmF0ZUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5wcmV2ZW50Q2xpY2spXG4gICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGUoZXZlbnQpO1xuICAgIH1cblxuICAgIGFjdGl2YXRlKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uQWN0aXZhdGUuZW1pdChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVhY3RpdmF0ZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaG92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMub25EZWFjdGl2YXRlLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlKGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxCdXR0b25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtJbnBsYWNlLElucGxhY2VEaXNwbGF5LElucGxhY2VDb250ZW50LEJ1dHRvbk1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbSW5wbGFjZSxJbnBsYWNlRGlzcGxheSxJbnBsYWNlQ29udGVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wbGFjZU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/inplace/primeng-inplace.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inplace/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inplace/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnBsYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2lucGxhY2UvcHJpbWVuZy1pbnBsYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inplace/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inplace/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inplace/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inplace';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnBsYWNlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucGxhY2UnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/inputmask/inputmask.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputmask/inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputmask/inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,577 @@
+/*
+    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery
+    https://github.com/digitalBush/jquery.maskedinput/
+
+    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)
+
+    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.
+*/
+import { NgModule, Component, Input, forwardRef, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/inputtext";
+import * as i2 from "@angular/common";
+export const INPUTMASK_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputMask),
+    multi: true
+};
+export class InputMask {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.type = 'text';
+        this.slotChar = '_';
+        this.autoClear = true;
+        this.characterPattern = '[A-Za-z]';
+        this.onComplete = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        let ua = DomHandler.getUserAgent();
+        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
+        this.initMask();
+    }
+    get mask() {
+        return this._mask;
+    }
+    set mask(val) {
+        this._mask = val;
+        this.initMask();
+        this.writeValue('');
+        this.onModelChange(this.value);
+    }
+    initMask() {
+        this.tests = [];
+        this.partialPosition = this.mask.length;
+        this.len = this.mask.length;
+        this.firstNonMaskPos = null;
+        this.defs = {
+            '9': '[0-9]',
+            'a': this.characterPattern,
+            '*': `${this.characterPattern}|[0-9]`
+        };
+        let maskTokens = this.mask.split('');
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c == '?') {
+                this.len--;
+                this.partialPosition = i;
+            }
+            else if (this.defs[c]) {
+                this.tests.push(new RegExp(this.defs[c]));
+                if (this.firstNonMaskPos === null) {
+                    this.firstNonMaskPos = this.tests.length - 1;
+                }
+                if (i < this.partialPosition) {
+                    this.lastRequiredNonMaskPos = this.tests.length - 1;
+                }
+            }
+            else {
+                this.tests.push(null);
+            }
+        }
+        this.buffer = [];
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c != '?') {
+                if (this.defs[c])
+                    this.buffer.push(this.getPlaceholder(i));
+                else
+                    this.buffer.push(c);
+            }
+        }
+        this.defaultBuffer = this.buffer.join('');
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.value == undefined || this.value == null)
+                this.inputViewChild.nativeElement.value = '';
+            else
+                this.inputViewChild.nativeElement.value = this.value;
+            this.checkVal();
+            this.focusText = this.inputViewChild.nativeElement.value;
+            this.updateFilledState();
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    caret(first, last) {
+        let range, begin, end;
+        if (!this.inputViewChild.nativeElement.offsetParent || this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+            return;
+        }
+        if (typeof first == 'number') {
+            begin = first;
+            end = (typeof last === 'number') ? last : begin;
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                this.inputViewChild.nativeElement.setSelectionRange(begin, end);
+            }
+            else if (this.inputViewChild.nativeElement['createTextRange']) {
+                range = this.inputViewChild.nativeElement['createTextRange']();
+                range.collapse(true);
+                range.moveEnd('character', end);
+                range.moveStart('character', begin);
+                range.select();
+            }
+        }
+        else {
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                begin = this.inputViewChild.nativeElement.selectionStart;
+                end = this.inputViewChild.nativeElement.selectionEnd;
+            }
+            else if (document['selection'] && document['selection'].createRange) {
+                range = document['selection'].createRange();
+                begin = 0 - range.duplicate().moveStart('character', -100000);
+                end = begin + range.text.length;
+            }
+            return { begin: begin, end: end };
+        }
+    }
+    isCompleted() {
+        let completed;
+        for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {
+            if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    getPlaceholder(i) {
+        if (i < this.slotChar.length) {
+            return this.slotChar.charAt(i);
+        }
+        return this.slotChar.charAt(0);
+    }
+    seekNext(pos) {
+        while (++pos < this.len && !this.tests[pos])
+            ;
+        return pos;
+    }
+    seekPrev(pos) {
+        while (--pos >= 0 && !this.tests[pos])
+            ;
+        return pos;
+    }
+    shiftL(begin, end) {
+        let i, j;
+        if (begin < 0) {
+            return;
+        }
+        for (i = begin, j = this.seekNext(end); i < this.len; i++) {
+            if (this.tests[i]) {
+                if (j < this.len && this.tests[i].test(this.buffer[j])) {
+                    this.buffer[i] = this.buffer[j];
+                    this.buffer[j] = this.getPlaceholder(j);
+                }
+                else {
+                    break;
+                }
+                j = this.seekNext(j);
+            }
+        }
+        this.writeBuffer();
+        this.caret(Math.max(this.firstNonMaskPos, begin));
+    }
+    shiftR(pos) {
+        let i, c, j, t;
+        for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {
+            if (this.tests[i]) {
+                j = this.seekNext(i);
+                t = this.buffer[i];
+                this.buffer[i] = c;
+                if (j < this.len && this.tests[j].test(t)) {
+                    c = t;
+                }
+                else {
+                    break;
+                }
+            }
+        }
+    }
+    handleAndroidInput(e) {
+        var curVal = this.inputViewChild.nativeElement.value;
+        var pos = this.caret();
+        if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {
+            // a deletion or backspace happened
+            this.checkVal(true);
+            while (pos.begin > 0 && !this.tests[pos.begin - 1])
+                pos.begin--;
+            if (pos.begin === 0) {
+                while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])
+                    pos.begin++;
+            }
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+        else {
+            this.checkVal(true);
+            while (pos.begin < this.len && !this.tests[pos.begin])
+                pos.begin++;
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+    }
+    onInputBlur(e) {
+        this.focused = false;
+        this.onModelTouched();
+        this.checkVal();
+        this.updateFilledState();
+        this.onBlur.emit(e);
+        if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {
+            this.updateModel(e);
+            let event = document.createEvent('HTMLEvents');
+            event.initEvent('change', true, false);
+            this.inputViewChild.nativeElement.dispatchEvent(event);
+        }
+    }
+    onInputKeydown(e) {
+        if (this.readonly) {
+            return;
+        }
+        let k = e.which || e.keyCode, pos, begin, end;
+        let iPhone = /iphone/i.test(DomHandler.getUserAgent());
+        this.oldVal = this.inputViewChild.nativeElement.value;
+        this.onKeydown.emit(e);
+        //backspace, delete, and escape get special treatment
+        if (k === 8 || k === 46 || (iPhone && k === 127)) {
+            pos = this.caret();
+            begin = pos.begin;
+            end = pos.end;
+            if (end - begin === 0) {
+                begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));
+                end = k === 46 ? this.seekNext(end) : end;
+            }
+            this.clearBuffer(begin, end);
+            this.shiftL(begin, end - 1);
+            this.updateModel(e);
+            this.onInput.emit(e);
+            e.preventDefault();
+        }
+        else if (k === 13) { // enter
+            this.onInputBlur(e);
+            this.updateModel(e);
+        }
+        else if (k === 27) { // escape
+            this.inputViewChild.nativeElement.value = this.focusText;
+            this.caret(0, this.checkVal());
+            this.updateModel(e);
+            e.preventDefault();
+        }
+    }
+    onKeyPress(e) {
+        if (this.readonly) {
+            return;
+        }
+        var k = e.which || e.keyCode, pos = this.caret(), p, c, next, completed;
+        if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) { //Ignore
+            return;
+        }
+        else if (k && k !== 13) {
+            if (pos.end - pos.begin !== 0) {
+                this.clearBuffer(pos.begin, pos.end);
+                this.shiftL(pos.begin, pos.end - 1);
+            }
+            p = this.seekNext(pos.begin - 1);
+            if (p < this.len) {
+                c = String.fromCharCode(k);
+                if (this.tests[p].test(c)) {
+                    this.shiftR(p);
+                    this.buffer[p] = c;
+                    this.writeBuffer();
+                    next = this.seekNext(p);
+                    if (/android/i.test(DomHandler.getUserAgent())) {
+                        //Path for CSP Violation on FireFox OS 1.1
+                        let proxy = () => {
+                            this.caret(next);
+                        };
+                        setTimeout(proxy, 0);
+                    }
+                    else {
+                        this.caret(next);
+                    }
+                    if (pos.begin <= this.lastRequiredNonMaskPos) {
+                        completed = this.isCompleted();
+                    }
+                    this.onInput.emit(e);
+                }
+            }
+            e.preventDefault();
+        }
+        this.updateModel(e);
+        this.updateFilledState();
+        if (completed) {
+            this.onComplete.emit();
+        }
+    }
+    clearBuffer(start, end) {
+        let i;
+        for (i = start; i < end && i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+            }
+        }
+    }
+    writeBuffer() {
+        this.inputViewChild.nativeElement.value = this.buffer.join('');
+    }
+    checkVal(allow) {
+        //try to place characters where they belong
+        let test = this.inputViewChild.nativeElement.value, lastMatch = -1, i, c, pos;
+        for (i = 0, pos = 0; i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+                while (pos++ < test.length) {
+                    c = test.charAt(pos - 1);
+                    if (this.tests[i].test(c)) {
+                        this.buffer[i] = c;
+                        lastMatch = i;
+                        break;
+                    }
+                }
+                if (pos > test.length) {
+                    this.clearBuffer(i + 1, this.len);
+                    break;
+                }
+            }
+            else {
+                if (this.buffer[i] === test.charAt(pos)) {
+                    pos++;
+                }
+                if (i < this.partialPosition) {
+                    lastMatch = i;
+                }
+            }
+        }
+        if (allow) {
+            this.writeBuffer();
+        }
+        else if (lastMatch + 1 < this.partialPosition) {
+            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {
+                // Invalid value. Remove it and replace it with the
+                // mask, which is the default behavior.
+                if (this.inputViewChild.nativeElement.value)
+                    this.inputViewChild.nativeElement.value = '';
+                this.clearBuffer(0, this.len);
+            }
+            else {
+                // Invalid value, but we opt to show the value to the
+                // user and allow them to correct their mistake.
+                this.writeBuffer();
+            }
+        }
+        else {
+            this.writeBuffer();
+            this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);
+        }
+        return (this.partialPosition ? i : this.firstNonMaskPos);
+    }
+    onInputFocus(event) {
+        if (this.readonly) {
+            return;
+        }
+        this.focused = true;
+        clearTimeout(this.caretTimeoutId);
+        let pos;
+        this.focusText = this.inputViewChild.nativeElement.value;
+        pos = this.checkVal();
+        this.caretTimeoutId = setTimeout(() => {
+            if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+                return;
+            }
+            this.writeBuffer();
+            if (pos == this.mask.replace("?", "").length) {
+                this.caret(0, pos);
+            }
+            else {
+                this.caret(pos);
+            }
+        }, 10);
+        this.onFocus.emit(event);
+    }
+    onInputChange(event) {
+        if (this.androidChrome)
+            this.handleAndroidInput(event);
+        else
+            this.handleInputChange(event);
+        this.onInput.emit(event);
+    }
+    handleInputChange(event) {
+        if (this.readonly) {
+            return;
+        }
+        setTimeout(() => {
+            var pos = this.checkVal(true);
+            this.caret(pos);
+            this.updateModel(event);
+            if (this.isCompleted()) {
+                this.onComplete.emit();
+            }
+        }, 0);
+    }
+    getUnmaskedValue() {
+        let unmaskedBuffer = [];
+        for (let i = 0; i < this.buffer.length; i++) {
+            let c = this.buffer[i];
+            if (this.tests[i] && c != this.getPlaceholder(i)) {
+                unmaskedBuffer.push(c);
+            }
+        }
+        return unmaskedBuffer.join('');
+    }
+    updateModel(e) {
+        const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;
+        if (updatedValue !== null || updatedValue !== undefined) {
+            this.value = updatedValue;
+            this.onModelChange(this.value);
+        }
+    }
+    updateFilledState() {
+        this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+    }
+}
+InputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputMask.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputMask, selector: "p-inputMask", inputs: { type: "type", slotChar: "slotChar", autoClear: "autoClear", style: "style", inputId: "inputId", styleClass: "styleClass", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", disabled: "disabled", readonly: "readonly", unmask: "unmask", name: "name", required: "required", characterPattern: "characterPattern", autoFocus: "autoFocus", autocomplete: "autocomplete", mask: "mask" }, outputs: { onComplete: "onComplete", onFocus: "onFocus", onBlur: "onBlur", onInput: "onInput", onKeydown: "onKeydown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element" }, providers: [INPUTMASK_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`, isInline: true, directives: [{ type: i1.InputText, selector: "[pInputText]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inputMask',
+                    template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`,
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    },
+                    providers: [INPUTMASK_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], slotChar: [{
+                type: Input
+            }], autoClear: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], unmask: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], characterPattern: [{
+                type: Input
+            }], autoFocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input', { static: true }]
+            }], onComplete: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }], mask: [{
+                type: Input
+            }] } });
+export class InputMaskModule {
+}
+InputMaskModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputMaskModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, declarations: [InputMask], imports: [CommonModule, InputTextModule], exports: [InputMask] });
+InputMaskModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [InputMask],
+                    declarations: [InputMask]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRtYXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2lucHV0bWFzay9pbnB1dG1hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMEJFO0FBQ0YsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQTZCLEtBQUssRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLFlBQVksRUFBQyxTQUFTLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzFMLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQVE7SUFDM0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFpQkYsTUFBTSxPQUFPLFNBQVM7SUE4RmxCLFlBQW1CLEVBQWMsRUFBVSxFQUFxQjtRQUE3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUE1RnZELFNBQUksR0FBVyxNQUFNLENBQUM7UUFFdEIsYUFBUSxHQUFXLEdBQUcsQ0FBQztRQUV2QixjQUFTLEdBQVksSUFBSSxDQUFDO1FBZ0MxQixxQkFBZ0IsR0FBVyxVQUFVLENBQUM7UUFRckMsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5ELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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LElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRWdDLGNBQWM7c0JBQW5ELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFMUIsVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBaURNLElBQUk7c0JBQWhCLEtBQUs7O0FBdWZWLE1BQU0sT0FBTyxlQUFlOzs0R0FBZixlQUFlOzZHQUFmLGVBQWUsaUJBOWxCZixTQUFTLGFBMGxCUixZQUFZLEVBQUMsZUFBZSxhQTFsQjdCLFNBQVM7NkdBOGxCVCxlQUFlLFlBSmYsQ0FBQyxZQUFZLEVBQUMsZUFBZSxDQUFDOzJGQUk5QixlQUFlO2tCQUwzQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxlQUFlLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgUG9ydCBvZiBqUXVlcnkgTWFza2VkSW5wdXQgYnkgRGlnaXRhbEJ1c2ggYXMgYSBOYXRpdmUgQW5ndWxhcjIgQ29tcG9uZW50IGluIFR5cGVzY3JpcHQgd2l0aG91dCBqUXVlcnlcbiAgICBodHRwczovL2dpdGh1Yi5jb20vZGlnaXRhbEJ1c2gvanF1ZXJ5Lm1hc2tlZGlucHV0L1xuXG4gICAgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTQgSm9zaCBCdXNoIChkaWdpdGFsYnVzaC5jb20pXG5cbiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvblxuICAgIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uXG4gICAgZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0XG4gICAgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsXG4gICAgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAgICBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbiAgICBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZ1xuICAgIGNvbmRpdGlvbnM6XG5cbiAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuICAgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcbiAgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVNcbiAgICBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORFxuICAgIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUXG4gICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksXG4gICAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4gICAgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUlxuICAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiovXG5pbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxFbGVtZW50UmVmLE9uSW5pdCxPbkRlc3Ryb3ksSW5wdXQsZm9yd2FyZFJlZixPdXRwdXQsRXZlbnRFbWl0dGVyLFZpZXdDaGlsZCxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IElOUFVUTUFTS19WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRNYXNrKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbnB1dE1hc2snLFxuICAgIHRlbXBsYXRlOiBgPGlucHV0ICNpbnB1dCBwSW5wdXRUZXh0IGNsYXNzPVwicC1pbnB1dG1hc2tcIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgW2F0dHIudHlwZV09XCJ0eXBlXCIgW2F0dHIubmFtZV09XCJuYW1lXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwic2l6ZVwiIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCIgKGtleWRvd24pPVwib25JbnB1dEtleWRvd24oJGV2ZW50KVwiIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIiBbYXR0ci5hdXRvZm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIChwYXN0ZSk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCI+YCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXNlZCdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0lOUFVUTUFTS19WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE1hc2sgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95LENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcblxuICAgIEBJbnB1dCgpIHNsb3RDaGFyOiBzdHJpbmcgPSAnXyc7XG5cbiAgICBASW5wdXQoKSBhdXRvQ2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdW5tYXNrOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBjaGFyYWN0ZXJQYXR0ZXJuOiBzdHJpbmcgPSAnW0EtWmEtel0nO1xuXG4gICAgQElucHV0KCkgYXV0b0ZvY3VzOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25JbnB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25LZXlkb3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBfbWFzazogc3RyaW5nO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBmaWxsZWQ6IGJvb2xlYW47XG5cbiAgICBkZWZzOiBhbnk7XG5cbiAgICB0ZXN0czogYW55W107XG5cbiAgICBwYXJ0aWFsUG9zaXRpb246IGFueTtcblxuICAgIGZpcnN0Tm9uTWFza1BvczogbnVtYmVyO1xuXG4gICAgbGFzdFJlcXVpcmVkTm9uTWFza1BvczogYW55O1xuXG4gICAgbGVuOiBudW1iZXI7XG5cbiAgICBvbGRWYWw6IHN0cmluZztcblxuICAgIGJ1ZmZlcjogYW55O1xuXG4gICAgZGVmYXVsdEJ1ZmZlcjogc3RyaW5nO1xuXG4gICAgZm9jdXNUZXh0OiBzdHJpbmc7XG5cbiAgICBjYXJldFRpbWVvdXRJZDogYW55O1xuXG4gICAgYW5kcm9pZENocm9tZTogYm9vbGVhbjtcblxuICAgIGZvY3VzZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGxldCB1YSA9IERvbUhhbmRsZXIuZ2V0VXNlckFnZW50KCk7XG4gICAgICAgIHRoaXMuYW5kcm9pZENocm9tZSA9IC9jaHJvbWUvaS50ZXN0KHVhKSAmJiAvYW5kcm9pZC9pLnRlc3QodWEpO1xuXG4gICAgICAgIHRoaXMuaW5pdE1hc2soKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbWFzaygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzaztcbiAgICB9XG5cbiAgICBzZXQgbWFzayh2YWw6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21hc2sgPSB2YWw7XG5cbiAgICAgICAgdGhpcy5pbml0TWFzaygpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoJycpO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgaW5pdE1hc2soKSB7XG4gICAgICAgIHRoaXMudGVzdHMgPSBbXTtcbiAgICAgICAgdGhpcy5wYXJ0aWFsUG9zaXRpb24gPSB0aGlzLm1hc2subGVuZ3RoO1xuICAgICAgICB0aGlzLmxlbiA9IHRoaXMubWFzay5sZW5ndGg7XG4gICAgICAgIHRoaXMuZmlyc3ROb25NYXNrUG9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5kZWZzID0ge1xuICAgICAgICAgICAgJzknOiAnWzAtOV0nLFxuICAgICAgICAgICAgJ2EnOiB0aGlzLmNoYXJhY3RlclBhdHRlcm4sXG4gICAgICAgICAgICAnKic6IGAke3RoaXMuY2hhcmFjdGVyUGF0dGVybn18WzAtOV1gXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IG1hc2tUb2tlbnMgPSB0aGlzLm1hc2suc3BsaXQoJycpO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbWFza1Rva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGMgPSBtYXNrVG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKGMgPT0gJz8nKSB7XG5cdFx0XHRcdHRoaXMubGVuLS07XG5cdFx0XHRcdHRoaXMucGFydGlhbFBvc2l0aW9uID0gaTtcblx0XHRcdH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGVmc1tjXSkge1xuXHRcdFx0XHR0aGlzLnRlc3RzLnB1c2gobmV3IFJlZ0V4cCh0aGlzLmRlZnNbY10pKTtcblx0XHRcdFx0aWYgKHRoaXMuZmlyc3ROb25NYXNrUG9zID09PSBudWxsKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmZpcnN0Tm9uTWFza1BvcyA9IHRoaXMudGVzdHMubGVuZ3RoIC0gMTtcblx0XHRcdFx0fVxuICAgICAgICAgICAgICAgIGlmIChpIDwgdGhpcy5wYXJ0aWFsUG9zaXRpb24pe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RSZXF1aXJlZE5vbk1hc2tQb3MgPSB0aGlzLnRlc3RzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfVxuXHRcdFx0fVxuICAgICAgICAgICAgZWxzZSB7XG5cdFx0XHRcdHRoaXMudGVzdHMucHVzaChudWxsKTtcblx0XHRcdH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVmZmVyID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBtYXNrVG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYyA9IG1hc2tUb2tlbnNbaV07XG4gICAgICAgICAgICBpZiAoYyAhPSAnPycpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZzW2NdKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKHRoaXMuZ2V0UGxhY2Vob2xkZXIoaSkpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXIucHVzaChjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlZmF1bHRCdWZmZXIgPSB0aGlzLmJ1ZmZlci5qb2luKCcnKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZCAmJiB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlID09IG51bGwpXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy5jaGVja1ZhbCgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RleHQgPSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY2FyZXQoZmlyc3Q/OiBudW1iZXIsIGxhc3Q/OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHJhbmdlLCBiZWdpbiwgZW5kO1xuXG4gICAgICAgIGlmICghdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudHx8dGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50ICE9PSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGZpcnN0ID09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBiZWdpbiA9IGZpcnN0O1xuICAgICAgICAgICAgZW5kID0gKHR5cGVvZiBsYXN0ID09PSAnbnVtYmVyJykgPyBsYXN0IDogYmVnaW47XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50WydjcmVhdGVUZXh0UmFuZ2UnXSkge1xuICAgICAgICAgICAgICAgIHJhbmdlID0gdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50WydjcmVhdGVUZXh0UmFuZ2UnXSgpO1xuICAgICAgICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgICAgICAgICAgIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVuZCk7XG4gICAgICAgICAgICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBiZWdpbik7XG4gICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKSB7XG4gICAgXHRcdFx0YmVnaW4gPSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgXHRcdFx0ZW5kID0gdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICBcdFx0fVxuICAgICAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnRbJ3NlbGVjdGlvbiddICYmIGRvY3VtZW50WydzZWxlY3Rpb24nXS5jcmVhdGVSYW5nZSkge1xuICAgIFx0XHRcdHJhbmdlID0gZG9jdW1lbnRbJ3NlbGVjdGlvbiddLmNyZWF0ZVJhbmdlKCk7XG4gICAgXHRcdFx0YmVnaW4gPSAwIC0gcmFuZ2UuZHVwbGljYXRlKCkubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCAtMTAwMDAwKTtcbiAgICBcdFx0XHRlbmQgPSBiZWdpbiArIHJhbmdlLnRleHQubGVuZ3RoO1xuICAgIFx0XHR9XG5cbiAgICBcdFx0cmV0dXJuIHtiZWdpbjogYmVnaW4sIGVuZDogZW5kfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ29tcGxldGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY29tcGxldGVkOiBib29sZWFuO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5maXJzdE5vbk1hc2tQb3M7IGkgPD0gdGhpcy5sYXN0UmVxdWlyZWROb25NYXNrUG9zOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzW2ldICYmIHRoaXMuYnVmZmVyW2ldID09PSB0aGlzLmdldFBsYWNlaG9sZGVyKGkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0UGxhY2Vob2xkZXIoaTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpIDwgdGhpcy5zbG90Q2hhci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNsb3RDaGFyLmNoYXJBdChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zbG90Q2hhci5jaGFyQXQoMCk7XG4gICAgfVxuXG4gICAgc2Vla05leHQocG9zKSB7XG4gICAgICAgIHdoaWxlICgrK3BvcyA8IHRoaXMubGVuICYmICF0aGlzLnRlc3RzW3Bvc10pO1xuICAgICAgICByZXR1cm4gcG9zO1xuICAgIH1cblxuICAgIHNlZWtQcmV2KHBvcykge1xuICAgICAgICB3aGlsZSAoLS1wb3MgPj0gMCAmJiAhdGhpcy50ZXN0c1twb3NdKTtcbiAgICAgICAgcmV0dXJuIHBvcztcbiAgICB9XG5cbiAgICBzaGlmdEwoYmVnaW46bnVtYmVyLGVuZDpudW1iZXIpIHtcbiAgICAgICAgbGV0IGksIGo7XG5cbiAgICAgICAgaWYgKGJlZ2luPDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IGJlZ2luLCBqID0gdGhpcy5zZWVrTmV4dChlbmQpOyBpIDwgdGhpcy5sZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVzdHNbaV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA8IHRoaXMubGVuICYmIHRoaXMudGVzdHNbaV0udGVzdCh0aGlzLmJ1ZmZlcltqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXJbaV0gPSB0aGlzLmJ1ZmZlcltqXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXJbal0gPSB0aGlzLmdldFBsYWNlaG9sZGVyKGopO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGogPSB0aGlzLnNlZWtOZXh0KGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMud3JpdGVCdWZmZXIoKTtcbiAgICAgICAgdGhpcy5jYXJldChNYXRoLm1heCh0aGlzLmZpcnN0Tm9uTWFza1BvcywgYmVnaW4pKTtcbiAgICB9XG5cbiAgICBzaGlmdFIocG9zKSB7XG4gICAgICAgIGxldCBpLCBjLCBqLCB0O1xuXG4gICAgICAgIGZvciAoaSA9IHBvcywgYyA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIocG9zKTsgaSA8IHRoaXMubGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzW2ldKSB7XG4gICAgICAgICAgICAgICAgaiA9IHRoaXMuc2Vla05leHQoaSk7XG4gICAgICAgICAgICAgICAgdCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyW2ldID0gYztcbiAgICAgICAgICAgICAgICBpZiAoaiA8IHRoaXMubGVuICYmIHRoaXMudGVzdHNbal0udGVzdCh0KSkge1xuICAgICAgICAgICAgICAgICAgICBjID0gdDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVBbmRyb2lkSW5wdXQoZSkge1xuICAgICAgICB2YXIgY3VyVmFsID0gdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB2YXIgcG9zID0gdGhpcy5jYXJldCgpO1xuICAgICAgICBpZiAodGhpcy5vbGRWYWwgJiYgdGhpcy5vbGRWYWwubGVuZ3RoICYmIHRoaXMub2xkVmFsLmxlbmd0aCA+IGN1clZhbC5sZW5ndGggKSB7XG4gICAgICAgICAgICAvLyBhIGRlbGV0aW9uIG9yIGJhY2tzcGFjZSBoYXBwZW5lZFxuICAgICAgICAgICAgdGhpcy5jaGVja1ZhbCh0cnVlKTtcbiAgICAgICAgICAgIHdoaWxlIChwb3MuYmVnaW4gPiAwICYmICF0aGlzLnRlc3RzW3Bvcy5iZWdpbi0xXSlcbiAgICAgICAgICAgICAgICAgIHBvcy5iZWdpbi0tO1xuICAgICAgICAgICAgaWYgKHBvcy5iZWdpbiA9PT0gMClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIHdoaWxlIChwb3MuYmVnaW4gPCB0aGlzLmZpcnN0Tm9uTWFza1BvcyAmJiAhdGhpcy50ZXN0c1twb3MuYmVnaW5dKVxuICAgICAgICAgICAgICAgICAgcG9zLmJlZ2luKys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZXQocG9zLmJlZ2luLCBwb3MuYmVnaW4pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb21wbGV0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja1ZhbCh0cnVlKTtcbiAgICAgICAgICAgIHdoaWxlIChwb3MuYmVnaW4gPCB0aGlzLmxlbiAmJiAhdGhpcy50ZXN0c1twb3MuYmVnaW5dKVxuICAgICAgICAgICAgICAgIHBvcy5iZWdpbisrO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmV0KHBvcy5iZWdpbiwgcG9zLmJlZ2luKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ29tcGxldGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGUpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5jaGVja1ZhbCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSAhPSB0aGlzLmZvY3VzVGV4dCB8fCB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgIT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChlKTtcbiAgICAgICAgICAgIGxldCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gICAgICAgICAgICBldmVudC5pbml0RXZlbnQoJ2NoYW5nZScsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRLZXlkb3duKGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBrID0gZS53aGljaHx8ZS5rZXlDb2RlLFxuICAgICAgICAgICAgcG9zLFxuICAgICAgICAgICAgYmVnaW4sXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgIGxldCBpUGhvbmUgPSAvaXBob25lL2kudGVzdChEb21IYW5kbGVyLmdldFVzZXJBZ2VudCgpKTtcbiAgICAgICAgdGhpcy5vbGRWYWwgPSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5vbktleWRvd24uZW1pdChlKTtcblxuICAgICAgICAvL2JhY2tzcGFjZSwgZGVsZXRlLCBhbmQgZXNjYXBlIGdldCBzcGVjaWFsIHRyZWF0bWVudFxuICAgICAgICBpZiAoayA9PT0gOCB8fCBrID09PSA0NiB8fCAoaVBob25lICYmIGsgPT09IDEyNykpIHtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMuY2FyZXQoKTtcbiAgICAgICAgICAgIGJlZ2luID0gcG9zLmJlZ2luO1xuICAgICAgICAgICAgZW5kID0gcG9zLmVuZDtcblxuICAgICAgICAgICAgaWYgKGVuZCAtIGJlZ2luID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYmVnaW49ayE9PTQ2P3RoaXMuc2Vla1ByZXYoYmVnaW4pOihlbmQ9dGhpcy5zZWVrTmV4dChiZWdpbi0xKSk7XG4gICAgICAgICAgICAgICAgZW5kPWs9PT00Nj90aGlzLnNlZWtOZXh0KGVuZCk6ZW5kO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKGJlZ2luLCBlbmQpO1xuXHRcdFx0dGhpcy5zaGlmdEwoYmVnaW4sIGVuZCAtIDEpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChlKTtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dC5lbWl0KGUpO1xuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIGsgPT09IDEzICkgeyAvLyBlbnRlclxuICAgICAgICAgICAgdGhpcy5vbklucHV0Qmx1cihlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoayA9PT0gMjcpIHsgLy8gZXNjYXBlXG4gICAgICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvY3VzVGV4dDtcbiAgICAgICAgICAgIHRoaXMuY2FyZXQoMCwgdGhpcy5jaGVja1ZhbCgpKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG5cbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5UHJlc3MoZSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSl7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgayA9IGUud2hpY2ggfHwgZS5rZXlDb2RlLFxuICAgICAgICAgICAgcG9zID0gdGhpcy5jYXJldCgpLFxuICAgICAgICAgICAgcCxcbiAgICAgICAgICAgIGMsXG4gICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgY29tcGxldGVkO1xuXG4gICAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5hbHRLZXkgfHwgZS5tZXRhS2V5IHx8IGsgPCAzMiAgfHwgKGsgPiAzNCAmJiBrIDwgNDEpKSB7Ly9JZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICggayAmJiBrICE9PSAxMyApIHtcbiAgICAgICAgICAgIGlmIChwb3MuZW5kIC0gcG9zLmJlZ2luICE9PSAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKHBvcy5iZWdpbiwgcG9zLmVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGlmdEwocG9zLmJlZ2luLCBwb3MuZW5kLTEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwID0gdGhpcy5zZWVrTmV4dChwb3MuYmVnaW4gLSAxKTtcbiAgICAgICAgICAgIGlmIChwIDwgdGhpcy5sZW4pIHtcbiAgICAgICAgICAgICAgICBjID0gU3RyaW5nLmZyb21DaGFyQ29kZShrKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXN0c1twXS50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hpZnRSKHApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyW3BdID0gYztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZUJ1ZmZlcigpO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdGhpcy5zZWVrTmV4dChwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoL2FuZHJvaWQvaS50ZXN0KERvbUhhbmRsZXIuZ2V0VXNlckFnZW50KCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL1BhdGggZm9yIENTUCBWaW9sYXRpb24gb24gRmlyZUZveCBPUyAxLjFcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm94eSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcmV0KG5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChwcm94eSwwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZXQobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocG9zLmJlZ2luIDw9IHRoaXMubGFzdFJlcXVpcmVkTm9uTWFza1Bvcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkID0gdGhpcy5pc0NvbXBsZXRlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbklucHV0LmVtaXQoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbChlKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG5cbiAgICAgICAgaWYgKGNvbXBsZXRlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyQnVmZmVyKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgbGV0IGk7XG4gICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kICYmIGkgPCB0aGlzLmxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXN0c1tpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyW2ldID0gdGhpcy5nZXRQbGFjZWhvbGRlcihpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlQnVmZmVyKCkge1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmJ1ZmZlci5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBjaGVja1ZhbChhbGxvdz86IGJvb2xlYW4pIHtcbiAgICAgICAgLy90cnkgdG8gcGxhY2UgY2hhcmFjdGVycyB3aGVyZSB0aGV5IGJlbG9uZ1xuICAgICAgICBsZXQgdGVzdCA9IHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZSxcbiAgICAgICAgICAgIGxhc3RNYXRjaCA9IC0xLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGMsXG4gICAgICAgICAgICBwb3M7XG5cbiAgICAgICAgZm9yIChpID0gMCwgcG9zID0gMDsgaSA8IHRoaXMubGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWZmZXJbaV0gPSB0aGlzLmdldFBsYWNlaG9sZGVyKGkpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwb3MrKyA8IHRlc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0LmNoYXJBdChwb3MgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGVzdHNbaV0udGVzdChjKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXJbaV0gPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE1hdGNoID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwb3MgPiB0ZXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKGkgKyAxLCB0aGlzLmxlbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYnVmZmVyW2ldID09PSB0ZXN0LmNoYXJBdChwb3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIGkgPCB0aGlzLnBhcnRpYWxQb3NpdGlvbil7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RNYXRjaCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvdykge1xuICAgICAgICAgICAgdGhpcy53cml0ZUJ1ZmZlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKGxhc3RNYXRjaCArIDEgPCB0aGlzLnBhcnRpYWxQb3NpdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0NsZWFyIHx8IHRoaXMuYnVmZmVyLmpvaW4oJycpID09PSB0aGlzLmRlZmF1bHRCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBJbnZhbGlkIHZhbHVlLiBSZW1vdmUgaXQgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAvLyBtYXNrLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlKSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKDAsIHRoaXMubGVuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW52YWxpZCB2YWx1ZSwgYnV0IHdlIG9wdCB0byBzaG93IHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAgICAgICAgICAvLyB1c2VyIGFuZCBhbGxvdyB0aGVtIHRvIGNvcnJlY3QgdGhlaXIgbWlzdGFrZS5cbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlQnVmZmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlQnVmZmVyKCk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKDAsIGxhc3RNYXRjaCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5wYXJ0aWFsUG9zaXRpb24gPyBpIDogdGhpcy5maXJzdE5vbk1hc2tQb3MpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSl7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNhcmV0VGltZW91dElkKTtcbiAgICAgICAgbGV0IHBvcztcblxuICAgICAgICB0aGlzLmZvY3VzVGV4dCA9IHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC52YWx1ZTtcblxuICAgICAgICBwb3MgPSB0aGlzLmNoZWNrVmFsKCk7XG5cbiAgICAgICAgdGhpcy5jYXJldFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCAhPT0gdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy53cml0ZUJ1ZmZlcigpO1xuICAgICAgICAgICAgaWYgKHBvcyA9PSB0aGlzLm1hc2sucmVwbGFjZShcIj9cIixcIlwiKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmV0KDAsIHBvcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZXQocG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuXG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmFuZHJvaWRDaHJvbWUpXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFuZHJvaWRJbnB1dChldmVudCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMub25JbnB1dC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbnB1dENoYW5nZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSl7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHZhciBwb3MgPSB0aGlzLmNoZWNrVmFsKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5jYXJldChwb3MpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0NvbXBsZXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgZ2V0VW5tYXNrZWRWYWx1ZSgpIHtcbiAgICAgICAgbGV0IHVubWFza2VkQnVmZmVyID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmJ1ZmZlci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGMgPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzW2ldICYmIGMgIT0gdGhpcy5nZXRQbGFjZWhvbGRlcihpKSkge1xuICAgICAgICAgICAgICAgIHVubWFza2VkQnVmZmVyLnB1c2goYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5tYXNrZWRCdWZmZXIuam9pbignJyk7XG4gICAgfVxuXG4gICAgdXBkYXRlTW9kZWwoZSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0aGlzLnVubWFzayA/IHRoaXMuZ2V0VW5tYXNrZWRWYWx1ZSgpIDogZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh1cGRhdGVkVmFsdWUgIT09IG51bGwgfHwgdXBkYXRlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB1cGRhdGVkVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVGaWxsZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5maWxsZWQgPSB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlICE9ICcnO1xuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcblxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLElucHV0VGV4dE1vZHVsZV0sXG4gICAgZXhwb3J0czogW0lucHV0TWFza10sXG4gICAgZGVjbGFyYXRpb25zOiBbSW5wdXRNYXNrXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE1hc2tNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputmask/primeng-inputmask.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputmask/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputmask/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnB1dG1hc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRtYXNrL3ByaW1lbmctaW5wdXRtYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputmask/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputmask/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputmask/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inputmask';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dG1hc2svcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXRtYXNrJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputnumber/inputnumber.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputnumber/inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputnumber/inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,897 @@
+import { NgModule, Component, ChangeDetectionStrategy, Input, ViewChild, EventEmitter, Output, forwardRef, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { InputTextModule } from 'primeng/inputtext';
+import { ButtonModule } from 'primeng/button';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+import * as i3 from "primeng/button";
+export const INPUTNUMBER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputNumber),
+    multi: true
+};
+export class InputNumber {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.showButtons = false;
+        this.format = true;
+        this.buttonLayout = "stacked";
+        this.incrementButtonIcon = 'pi pi-angle-up';
+        this.decrementButtonIcon = 'pi pi-angle-down';
+        this.readonly = false;
+        this.step = 1;
+        this.allowEmpty = true;
+        this.mode = "decimal";
+        this.useGrouping = true;
+        this.onInput = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onKeyDown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.groupChar = '';
+        this.prefixChar = '';
+        this.suffixChar = '';
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(disabled) {
+        if (disabled)
+            this.focused = false;
+        this._disabled = disabled;
+        if (this.timer)
+            this.clearTimer();
+    }
+    ngOnChanges(simpleChange) {
+        const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
+        if (props.some(p => !!simpleChange[p])) {
+            this.updateConstructParser();
+        }
+    }
+    ngOnInit() {
+        this.constructParser();
+        this.initialized = true;
+    }
+    getOptions() {
+        return {
+            localeMatcher: this.localeMatcher,
+            style: this.mode,
+            currency: this.currency,
+            currencyDisplay: this.currencyDisplay,
+            useGrouping: this.useGrouping,
+            minimumFractionDigits: this.minFractionDigits,
+            maximumFractionDigits: this.maxFractionDigits
+        };
+    }
+    constructParser() {
+        this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
+        const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
+        const index = new Map(numerals.map((d, i) => [d, i]));
+        this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
+        this._group = this.getGroupingExpression();
+        this._minusSign = this.getMinusSignExpression();
+        this._currency = this.getCurrencyExpression();
+        this._decimal = this.getDecimalExpression();
+        this._suffix = this.getSuffixExpression();
+        this._prefix = this.getPrefixExpression();
+        this._index = d => index.get(d);
+    }
+    updateConstructParser() {
+        if (this.initialized) {
+            this.constructParser();
+        }
+    }
+    escapeRegExp(text) {
+        return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+    }
+    getDecimalExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });
+        return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getGroupingExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
+        this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
+        return new RegExp(`[${this.groupChar}]`, 'g');
+    }
+    getMinusSignExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
+        return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getCurrencyExpression() {
+        if (this.currency) {
+            const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
+        }
+        return new RegExp(`[]`, 'g');
+    }
+    getPrefixExpression() {
+        if (this.prefix) {
+            this.prefixChar = this.prefix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
+            this.prefixChar = formatter.format(1).split('1')[0];
+        }
+        return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
+    }
+    getSuffixExpression() {
+        if (this.suffix) {
+            this.suffixChar = this.suffix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            this.suffixChar = formatter.format(1).split('1')[1];
+        }
+        return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
+    }
+    formatValue(value) {
+        if (value != null) {
+            if (value === '-') { // Minus sign
+                return value;
+            }
+            if (this.format) {
+                let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
+                let formattedValue = formatter.format(value);
+                if (this.prefix) {
+                    formattedValue = this.prefix + formattedValue;
+                }
+                if (this.suffix) {
+                    formattedValue = formattedValue + this.suffix;
+                }
+                return formattedValue;
+            }
+            return value.toString();
+        }
+        return '';
+    }
+    parseValue(text) {
+        let filteredText = text
+            .replace(this._suffix, '')
+            .replace(this._prefix, '')
+            .trim()
+            .replace(/\s/g, '')
+            .replace(this._currency, '')
+            .replace(this._group, '')
+            .replace(this._minusSign, '-')
+            .replace(this._decimal, '.')
+            .replace(this._numeral, this._index);
+        if (filteredText) {
+            if (filteredText === '-') // Minus sign
+                return filteredText;
+            let parsedValue = +filteredText;
+            return isNaN(parsedValue) ? null : parsedValue;
+        }
+        return null;
+    }
+    repeat(event, interval, dir) {
+        if (this.readonly) {
+            return;
+        }
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue = this.parseValue(this.input.nativeElement.value) || 0;
+        let newValue = this.validateValue(currentValue + step);
+        if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
+            return;
+        }
+        this.updateInput(newValue, null, 'spin', null);
+        this.updateModel(event, newValue);
+        this.handleOnInput(event, currentValue, newValue);
+    }
+    onUpButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, 1);
+        event.preventDefault();
+    }
+    onUpButtonMouseUp() {
+        this.clearTimer();
+    }
+    onUpButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onUpButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, 1);
+        }
+    }
+    onUpButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, -1);
+        event.preventDefault();
+    }
+    onDownButtonMouseUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onDownButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, -1);
+        }
+    }
+    onUserInput(event) {
+        if (this.isSpecialChar) {
+            event.target.value = this.lastValue;
+        }
+        this.isSpecialChar = false;
+    }
+    onInputKeyDown(event) {
+        this.lastValue = event.target.value;
+        if (event.shiftKey || event.altKey) {
+            this.isSpecialChar = true;
+            return;
+        }
+        let selectionStart = event.target.selectionStart;
+        let selectionEnd = event.target.selectionEnd;
+        let inputValue = event.target.value;
+        let newValueStr = null;
+        if (event.altKey) {
+            event.preventDefault();
+        }
+        switch (event.which) {
+            //up
+            case 38:
+                this.spin(event, 1);
+                event.preventDefault();
+                break;
+            //down
+            case 40:
+                this.spin(event, -1);
+                event.preventDefault();
+                break;
+            //left
+            case 37:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {
+                    event.preventDefault();
+                }
+                break;
+            //right
+            case 39:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
+                this.input.nativeElement.value = this.formatValue(newValueStr);
+                this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
+                this.updateModel(event, newValueStr);
+                break;
+            //backspace
+            case 8: {
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart - 1);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            }
+            // del
+            case 46:
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-back-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            default:
+                break;
+        }
+        this.onKeyDown.emit(event);
+    }
+    onInputKeyPress(event) {
+        event.preventDefault();
+        let code = event.which || event.keyCode;
+        let char = String.fromCharCode(code);
+        const isDecimalSign = this.isDecimalSign(char);
+        const isMinusSign = this.isMinusSign(char);
+        if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
+            this.insert(event, char, { isDecimalSign, isMinusSign });
+        }
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            event.preventDefault();
+            let data = (event.clipboardData || window['clipboardData']).getData('Text');
+            if (data) {
+                let filteredData = this.parseValue(data);
+                if (filteredData != null) {
+                    this.insert(event, filteredData.toString());
+                }
+            }
+        }
+    }
+    allowMinusSign() {
+        return this.min == null || this.min < 0;
+    }
+    isMinusSign(char) {
+        if (this._minusSign.test(char) || char === '-') {
+            this._minusSign.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalSign(char) {
+        if (this._decimal.test(char)) {
+            this._decimal.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalMode() {
+        return this.mode === 'decimal';
+    }
+    getDecimalCharIndexes(val) {
+        let decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const filteredVal = val.replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '');
+        const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        return { decimalCharIndex, decimalCharIndexWithoutPrefix };
+    }
+    getCharIndexes(val) {
+        const decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const minusCharIndex = val.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        const suffixCharIndex = val.search(this._suffix);
+        this._suffix.lastIndex = 0;
+        const currencyCharIndex = val.search(this._currency);
+        this._currency.lastIndex = 0;
+        return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
+    }
+    insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
+        const minusCharIndexOnText = text.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
+            return;
+        }
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let selectionEnd = this.input.nativeElement.selectionEnd;
+        let inputValue = this.input.nativeElement.value.trim();
+        const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
+        let newValueStr;
+        if (sign.isMinusSign) {
+            if (selectionStart === 0) {
+                newValueStr = inputValue;
+                if (minusCharIndex === -1 || selectionEnd !== 0) {
+                    newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
+                }
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else if (sign.isDecimalSign) {
+            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
+                this.updateValue(event, inputValue, text, 'insert');
+            }
+            else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+            else if (decimalCharIndex === -1 && this.maxFractionDigits) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else {
+            const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
+            const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
+            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {
+                    const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);
+                    newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
+                    this.updateValue(event, newValueStr, text, operation);
+                }
+            }
+            else {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, operation);
+            }
+        }
+    }
+    insertText(value, text, start, end) {
+        let textSplit = text === '.' ? text : text.split('.');
+        if (textSplit.length === 2) {
+            const decimalCharIndex = value.slice(start, end).search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));
+        }
+        else if ((end - start) === value.length) {
+            return this.formatValue(text);
+        }
+        else if (start === 0) {
+            return text + value.slice(end);
+        }
+        else if (end === value.length) {
+            return value.slice(0, start) + text;
+        }
+        else {
+            return value.slice(0, start) + text + value.slice(end);
+        }
+    }
+    deleteRange(value, start, end) {
+        let newValueStr;
+        if ((end - start) === value.length)
+            newValueStr = '';
+        else if (start === 0)
+            newValueStr = value.slice(end);
+        else if (end === value.length)
+            newValueStr = value.slice(0, start);
+        else
+            newValueStr = value.slice(0, start) + value.slice(end);
+        return newValueStr;
+    }
+    initCursor() {
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let inputValue = this.input.nativeElement.value;
+        let valueLength = inputValue.length;
+        let index = null;
+        // remove prefix
+        let prefixLength = (this.prefixChar || '').length;
+        inputValue = inputValue.replace(this._prefix, '');
+        selectionStart = selectionStart - prefixLength;
+        let char = inputValue.charAt(selectionStart);
+        if (this.isNumeralChar(char)) {
+            return selectionStart + prefixLength;
+        }
+        //left
+        let i = selectionStart - 1;
+        while (i >= 0) {
+            char = inputValue.charAt(i);
+            if (this.isNumeralChar(char)) {
+                index = i + prefixLength;
+                break;
+            }
+            else {
+                i--;
+            }
+        }
+        if (index !== null) {
+            this.input.nativeElement.setSelectionRange(index + 1, index + 1);
+        }
+        else {
+            i = selectionStart;
+            while (i < valueLength) {
+                char = inputValue.charAt(i);
+                if (this.isNumeralChar(char)) {
+                    index = i + prefixLength;
+                    break;
+                }
+                else {
+                    i++;
+                }
+            }
+            if (index !== null) {
+                this.input.nativeElement.setSelectionRange(index, index);
+            }
+        }
+        return index || 0;
+    }
+    onInputClick() {
+        this.initCursor();
+    }
+    isNumeralChar(char) {
+        if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
+            this.resetRegex();
+            return true;
+        }
+        return false;
+    }
+    resetRegex() {
+        this._numeral.lastIndex = 0;
+        this._decimal.lastIndex = 0;
+        this._group.lastIndex = 0;
+        this._minusSign.lastIndex = 0;
+    }
+    updateValue(event, valueStr, insertedValueStr, operation) {
+        let currentValue = this.input.nativeElement.value;
+        let newValue = null;
+        if (valueStr != null) {
+            newValue = this.parseValue(valueStr);
+            newValue = !newValue && !this.allowEmpty ? 0 : newValue;
+            this.updateInput(newValue, insertedValueStr, operation, valueStr);
+            this.handleOnInput(event, currentValue, newValue);
+        }
+    }
+    handleOnInput(event, currentValue, newValue) {
+        if (this.isValueChanged(currentValue, newValue)) {
+            this.onInput.emit({ originalEvent: event, value: newValue });
+        }
+    }
+    isValueChanged(currentValue, newValue) {
+        if (newValue === null && currentValue !== null) {
+            return true;
+        }
+        if (newValue != null) {
+            let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;
+            return newValue !== parsedCurrentValue;
+        }
+        return false;
+    }
+    validateValue(value) {
+        if (value === '-' || value == null) {
+            return null;
+        }
+        if (this.min != null && value < this.min) {
+            return this.min;
+        }
+        if (this.max != null && value > this.max) {
+            return this.max;
+        }
+        return value;
+    }
+    updateInput(value, insertedValueStr, operation, valueStr) {
+        insertedValueStr = insertedValueStr || '';
+        let inputValue = this.input.nativeElement.value;
+        let newValue = this.formatValue(value);
+        let currentLength = inputValue.length;
+        if (newValue !== valueStr) {
+            newValue = this.concatValues(newValue, valueStr);
+        }
+        if (currentLength === 0) {
+            this.input.nativeElement.value = newValue;
+            this.input.nativeElement.setSelectionRange(0, 0);
+            const index = this.initCursor();
+            const selectionEnd = index + insertedValueStr.length;
+            this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+        }
+        else {
+            let selectionStart = this.input.nativeElement.selectionStart;
+            let selectionEnd = this.input.nativeElement.selectionEnd;
+            if (this.maxlength && this.maxlength < newValue.length) {
+                return;
+            }
+            this.input.nativeElement.value = newValue;
+            let newLength = newValue.length;
+            if (operation === 'range-insert') {
+                const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
+                const startValueStr = startValue !== null ? startValue.toString() : '';
+                const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
+                const sRegex = new RegExp(startExpr, 'g');
+                sRegex.test(newValue);
+                const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
+                const tRegex = new RegExp(tExpr, 'g');
+                tRegex.test(newValue.slice(sRegex.lastIndex));
+                selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (newLength === currentLength) {
+                if (operation === 'insert' || operation === 'delete-back-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
+                else if (operation === 'delete-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
+                else if (operation === 'delete-range' || operation === 'spin')
+                    this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (operation === 'delete-back-single') {
+                let prevChar = inputValue.charAt(selectionEnd - 1);
+                let nextChar = inputValue.charAt(selectionEnd);
+                let diff = currentLength - newLength;
+                let isGroupChar = this._group.test(nextChar);
+                if (isGroupChar && diff === 1) {
+                    selectionEnd += 1;
+                }
+                else if (!isGroupChar && this.isNumeralChar(prevChar)) {
+                    selectionEnd += (-1 * diff) + 1;
+                }
+                this._group.lastIndex = 0;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (inputValue === '-' && operation === 'insert') {
+                this.input.nativeElement.setSelectionRange(0, 0);
+                const index = this.initCursor();
+                const selectionEnd = index + insertedValueStr.length + 1;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else {
+                selectionEnd = selectionEnd + (newLength - currentLength);
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+        }
+        this.input.nativeElement.setAttribute('aria-valuenow', value);
+    }
+    concatValues(val1, val2) {
+        if (val1 && val2) {
+            let decimalCharIndex = val2.search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;
+        }
+        return val1;
+    }
+    getDecimalLength(value) {
+        if (value) {
+            const valueSplit = value.split(this._decimal);
+            if (valueSplit.length === 2) {
+                return valueSplit[1].replace(this._suffix, '')
+                    .trim()
+                    .replace(/\s/g, '')
+                    .replace(this._currency, '').length;
+            }
+        }
+        return 0;
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));
+        this.input.nativeElement.value = this.formatValue(newValue);
+        this.input.nativeElement.setAttribute('aria-valuenow', newValue);
+        this.updateModel(event, newValue);
+        this.onBlur.emit(event);
+    }
+    formattedValue() {
+        const val = !this.value && !this.allowEmpty ? 0 : this.value;
+        return this.formatValue(val);
+    }
+    updateModel(event, value) {
+        if (this.value !== value) {
+            this.value = value;
+            this.onModelChange(value);
+        }
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    getFormatter() {
+        return this.numberFormat;
+    }
+}
+InputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputNumber, selector: "p-inputNumber", inputs: { showButtons: "showButtons", format: "format", buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", name: "name", required: "required", autocomplete: "autocomplete", min: "min", max: "max", incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: "readonly", step: "step", allowEmpty: "allowEmpty", locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, isInline: true, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.InputText, selector: "[pInputText]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputNumber', template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], buttonLayout: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], incrementButtonClass: [{
+                type: Input
+            }], decrementButtonClass: [{
+                type: Input
+            }], incrementButtonIcon: [{
+                type: Input
+            }], decrementButtonIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], allowEmpty: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onInput: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onKeyDown: [{
+                type: Output
+            }], disabled: [{
+                type: Input
+            }] } });
+export class InputNumberModule {
+}
+InputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule], exports: [InputNumber] });
+InputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, imports: [[CommonModule, InputTextModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule],
+                    exports: [InputNumber],
+                    declarations: [InputNumber]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRudW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRudW1iZXIvaW5wdXRudW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsdUJBQXVCLEVBQUUsS0FBSyxFQUFjLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDdE0sT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBUTtJQUMzQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQzFDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQWtDRixNQUFNLE9BQU8sV0FBVztJQThJcEIsWUFBbUIsRUFBYyxFQUFVLEVBQXFCO1FBQTdDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTVJdkQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsV0FBTSxHQUFZLElBQUksQ0FBQztRQUV2QixpQkFBWSxHQUFXLFNBQVMsQ0FBQztRQW9DakMsd0JBQW1CLEdBQVcsZ0JBQWdCLENBQUM7UUFFL0Msd0JBQW1CLEdBQVcsa0JBQWtCLENBQUM7UUFFakQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBRWpCLGVBQVUsR0FBWSxJ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Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVjLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFFUixPQUFPO3NCQUFoQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBNENNLFFBQVE7c0JBQXBCLEtBQUs7O0FBZzJCVixNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBaCtCakIsV0FBVyxhQTQ5QlYsWUFBWSxFQUFDLGVBQWUsRUFBRSxZQUFZLGFBNTlCM0MsV0FBVzsrR0FnK0JYLGlCQUFpQixZQUpqQixDQUFDLFlBQVksRUFBQyxlQUFlLEVBQUUsWUFBWSxDQUFDOzJGQUk1QyxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGZvcndhcmRSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZiwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBJTlBVVE5VTUJFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1pbnB1dE51bWJlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydwLWlucHV0bnVtYmVyIHAtY29tcG9uZW50JzogdHJ1ZSwncC1pbnB1dG51bWJlci1idXR0b25zLXN0YWNrZWQnOiB0aGlzLnNob3dCdXR0b25zICYmIHRoaXMuYnV0dG9uTGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAgICAgICAgICAgJ3AtaW5wdXRudW1iZXItYnV0dG9ucy1ob3Jpem9udGFsJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ2hvcml6b250YWwnLCAncC1pbnB1dG51bWJlci1idXR0b25zLXZlcnRpY2FsJzogdGhpcy5zaG93QnV0dG9ucyAmJiB0aGlzLmJ1dHRvbkxheW91dCA9PT0gJ3ZlcnRpY2FsJ31cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxpbnB1dCAjaW5wdXQgW25nQ2xhc3NdPVwiJ3AtaW5wdXRudW1iZXItaW5wdXQnXCIgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiIFtjbGFzc109XCJpbnB1dFN0eWxlQ2xhc3NcIiBwSW5wdXRUZXh0IFt2YWx1ZV09XCJmb3JtYXR0ZWRWYWx1ZSgpXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci50aXRsZV09XCJ0aXRsZVwiIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnNpemVdPVwic2l6ZVwiIFthdHRyLm5hbWVdPVwibmFtZVwiIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCIgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25Vc2VySW5wdXQoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uSW5wdXRLZXlEb3duKCRldmVudClcIiAoa2V5cHJlc3MpPVwib25JbnB1dEtleVByZXNzKCRldmVudClcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCIgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRudW1iZXItYnV0dG9uLWdyb3VwXCIgKm5nSWY9XCJzaG93QnV0dG9ucyAmJiBidXR0b25MYXlvdXQgPT09ICdzdGFja2VkJ1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gW25nQ2xhc3NdPVwieydwLWlucHV0bnVtYmVyLWJ1dHRvbiBwLWlucHV0bnVtYmVyLWJ1dHRvbi11cCc6IHRydWV9XCIgW2NsYXNzXT1cImluY3JlbWVudEJ1dHRvbkNsYXNzXCIgW2ljb25dPVwiaW5jcmVtZW50QnV0dG9uSWNvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidGhpcy5vblVwQnV0dG9uTW91c2VEb3duKCRldmVudClcIiAobW91c2V1cCk9XCJvblVwQnV0dG9uTW91c2VVcCgpXCIgKG1vdXNlbGVhdmUpPVwib25VcEJ1dHRvbk1vdXNlTGVhdmUoKVwiIChrZXlkb3duKT1cIm9uVXBCdXR0b25LZXlEb3duKCRldmVudClcIiAoa2V5dXApPVwib25VcEJ1dHRvbktleVVwKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFtuZ0NsYXNzXT1cInsncC1pbnB1dG51bWJlci1idXR0b24gcC1pbnB1dG51bWJlci1idXR0b24tZG93bic6IHRydWV9XCIgW2NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkNsYXNzXCIgW2ljb25dPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidGhpcy5vbkRvd25CdXR0b25Nb3VzZURvd24oJGV2ZW50KVwiIChtb3VzZXVwKT1cIm9uRG93bkJ1dHRvbk1vdXNlVXAoKVwiIChtb3VzZWxlYXZlKT1cIm9uRG93bkJ1dHRvbk1vdXNlTGVhdmUoKVwiIChrZXlkb3duKT1cIm9uRG93bkJ1dHRvbktleURvd24oJGV2ZW50KVwiIChrZXl1cCk9XCJvbkRvd25CdXR0b25LZXlVcCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFtuZ0NsYXNzXT1cInsncC1pbnB1dG51bWJlci1idXR0b24gcC1pbnB1dG51bWJlci1idXR0b24tdXAnOiB0cnVlfVwiIFtjbGFzc109XCJpbmNyZW1lbnRCdXR0b25DbGFzc1wiIFtpY29uXT1cImluY3JlbWVudEJ1dHRvbkljb25cIiAqbmdJZj1cInNob3dCdXR0b25zICYmIGJ1dHRvbkxheW91dCAhPT0gJ3N0YWNrZWQnXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInRoaXMub25VcEJ1dHRvbk1vdXNlRG93bigkZXZlbnQpXCIgKG1vdXNldXApPVwib25VcEJ1dHRvbk1vdXNlVXAoKVwiIChtb3VzZWxlYXZlKT1cIm9uVXBCdXR0b25Nb3VzZUxlYXZlKClcIiAoa2V5ZG93bik9XCJvblVwQnV0dG9uS2V5RG93bigkZXZlbnQpXCIgKGtleXVwKT1cIm9uVXBCdXR0b25LZXlVcCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFtuZ0NsYXNzXT1cInsncC1pbnB1dG51bWJlci1idXR0b24gcC1pbnB1dG51bWJlci1idXR0b24tZG93bic6IHRydWV9XCIgW2NsYXNzXT1cImRlY3JlbWVudEJ1dHRvbkNsYXNzXCIgW2ljb25dPVwiZGVjcmVtZW50QnV0dG9uSWNvblwiICpuZ0lmPVwic2hvd0J1dHRvbnMgJiYgYnV0dG9uTGF5b3V0ICE9PSAnc3RhY2tlZCdcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidGhpcy5vbkRvd25CdXR0b25Nb3VzZURvd24oJGV2ZW50KVwiIChtb3VzZXVwKT1cIm9uRG93bkJ1dHRvbk1vdXNlVXAoKVwiIChtb3VzZWxlYXZlKT1cIm9uRG93bkJ1dHRvbk1vdXNlTGVhdmUoKVwiIChrZXlkb3duKT1cIm9uRG93bkJ1dHRvbktleURvd24oJGV2ZW50KVwiIChrZXl1cCk9XCJvbkRvd25CdXR0b25LZXlVcCgpXCI+PC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0lOUFVUTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0bnVtYmVyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCBwLWlucHV0d3JhcHBlcicsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHdyYXBwZXItZmlsbGVkXSc6ICdmaWxsZWQnLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICdmb2N1c2VkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXIgaW1wbGVtZW50cyBPbkluaXQsQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQElucHV0KCkgc2hvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGZvcm1hdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBidXR0b25MYXlvdXQ6IHN0cmluZyA9IFwic3RhY2tlZFwiO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGluY3JlbWVudEJ1dHRvbkNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkZWNyZW1lbnRCdXR0b25DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5jcmVtZW50QnV0dG9uSWNvbjogc3RyaW5nID0gJ3BpIHBpLWFuZ2xlLXVwJztcblxuICAgIEBJbnB1dCgpIGRlY3JlbWVudEJ1dHRvbkljb246IHN0cmluZyA9ICdwaSBwaS1hbmdsZS1kb3duJztcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgYWxsb3dFbXB0eTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxvY2FsZU1hdGNoZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9IFwiZGVjaW1hbFwiO1xuXG4gICAgQElucHV0KCkgY3VycmVuY3k6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGN1cnJlbmN5RGlzcGxheTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdXNlR3JvdXBpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgbWluRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1heEZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwcmVmaXg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN1ZmZpeDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uSW5wdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHZhbHVlOiBudW1iZXI7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBmb2N1c2VkOiBib29sZWFuO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBncm91cENoYXI6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJlZml4Q2hhcjogc3RyaW5nID0gJyc7XG5cbiAgICBzdWZmaXhDaGFyOiBzdHJpbmcgPSAnJztcblxuICAgIGlzU3BlY2lhbENoYXI6IGJvb2xlYW47XG5cbiAgICB0aW1lcjogYW55O1xuXG4gICAgbGFzdFZhbHVlOiBzdHJpbmc7XG5cbiAgICBfbnVtZXJhbDogYW55O1xuXG4gICAgbnVtYmVyRm9ybWF0OiBhbnk7XG5cbiAgICBfZGVjaW1hbDogYW55O1xuXG4gICAgX2dyb3VwOiBhbnk7XG5cbiAgICBfbWludXNTaWduOiBhbnk7XG5cbiAgICBfY3VycmVuY3k6IGFueTtcblxuICAgIF9wcmVmaXg6IGFueTtcblxuICAgIF9zdWZmaXg6IGFueTtcblxuICAgIF9pbmRleDogYW55O1xuXG4gICAgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZXIpXG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBwcm9wcyA9IFsnbG9jYWxlJywgJ2xvY2FsZU1hdGNoZXInLCAnbW9kZScsICdjdXJyZW5jeScsICdjdXJyZW5jeURpc3BsYXknLCAndXNlR3JvdXBpbmcnLCAnbWluRnJhY3Rpb25EaWdpdHMnLCAnbWF4RnJhY3Rpb25EaWdpdHMnLCAncHJlZml4JywgJ3N1ZmZpeCddO1xuICAgICAgICBpZiAocHJvcHMuc29tZShwID0+ICEhc2ltcGxlQ2hhbmdlW3BdKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGdldE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbGVNYXRjaGVyOiB0aGlzLmxvY2FsZU1hdGNoZXIsXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5tb2RlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3ksXG4gICAgICAgICAgICBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5LFxuICAgICAgICAgICAgdXNlR3JvdXBpbmc6IHRoaXMudXNlR3JvdXBpbmcsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWluRnJhY3Rpb25EaWdpdHMsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RQYXJzZXIoKSB7XG4gICAgICAgIHRoaXMubnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgICAgIGNvbnN0IG51bWVyYWxzID0gWy4uLm5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge3VzZUdyb3VwaW5nOiBmYWxzZX0pLmZvcm1hdCg5ODc2NTQzMjEwKV0ucmV2ZXJzZSgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IG5ldyBNYXAobnVtZXJhbHMubWFwKChkLCBpKSA9PiBbZCwgaV0pKTtcbiAgICAgICAgdGhpcy5fbnVtZXJhbCA9IG5ldyBSZWdFeHAoYFske251bWVyYWxzLmpvaW4oJycpfV1gLCAnZycpO1xuICAgICAgICB0aGlzLl9ncm91cCA9IHRoaXMuZ2V0R3JvdXBpbmdFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX21pbnVzU2lnbiA9IHRoaXMuZ2V0TWludXNTaWduRXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9jdXJyZW5jeSA9IHRoaXMuZ2V0Q3VycmVuY3lFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwgPSB0aGlzLmdldERlY2ltYWxFeHByZXNzaW9uKCk7XG4gICAgICAgIHRoaXMuX3N1ZmZpeCA9IHRoaXMuZ2V0U3VmZml4RXhwcmVzc2lvbigpO1xuICAgICAgICB0aGlzLl9wcmVmaXggPSB0aGlzLmdldFByZWZpeEV4cHJlc3Npb24oKTtcbiAgICAgICAgdGhpcy5faW5kZXggPSBkID0+IGluZGV4LmdldChkKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDb25zdHJ1Y3RQYXJzZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBhcnNlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXNjYXBlUmVnRXhwKHRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsRXhwcmVzc2lvbigpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCB7Li4udGhpcy5nZXRPcHRpb25zKCksIHVzZUdyb3VwaW5nOiBmYWxzZX0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgxLjEpLnJlcGxhY2UodGhpcy5fY3VycmVuY3ksICcnKS50cmltKCkucmVwbGFjZSh0aGlzLl9udW1lcmFsLCAnJyl9XWAsICdnJyk7XG4gICAgfVxuXG4gICAgZ2V0R3JvdXBpbmdFeHByZXNzaW9uKCkge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHt1c2VHcm91cGluZzogdHJ1ZX0pO1xuICAgICAgICB0aGlzLmdyb3VwQ2hhciA9IGZvcm1hdHRlci5mb3JtYXQoMTAwMDAwMCkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpLmNoYXJBdCgwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske3RoaXMuZ3JvdXBDaGFyfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldE1pbnVzU2lnbkV4cHJlc3Npb24oKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge3VzZUdyb3VwaW5nOiBmYWxzZX0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgWyR7Zm9ybWF0dGVyLmZvcm1hdCgtMSkudHJpbSgpLnJlcGxhY2UodGhpcy5fbnVtZXJhbCwgJycpfV1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldEN1cnJlbmN5RXhwcmVzc2lvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVuY3kpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge3N0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSxcbiAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske2Zvcm1hdHRlci5mb3JtYXQoMSkucmVwbGFjZSgvXFxzL2csICcnKS5yZXBsYWNlKHRoaXMuX251bWVyYWwsICcnKS5yZXBsYWNlKHRoaXMuX2dyb3VwLCAnJyl9XWAsICdnJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgW11gLCdnJyk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZml4RXhwcmVzc2lvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucHJlZml4KSB7XG4gICAgICAgICAgICB0aGlzLnByZWZpeENoYXIgPSB0aGlzLnByZWZpeDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwge3N0eWxlOiB0aGlzLm1vZGUsIGN1cnJlbmN5OiB0aGlzLmN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXk6IHRoaXMuY3VycmVuY3lEaXNwbGF5fSk7XG4gICAgICAgICAgICB0aGlzLnByZWZpeENoYXIgPSBmb3JtYXR0ZXIuZm9ybWF0KDEpLnNwbGl0KCcxJylbMF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgJHt0aGlzLmVzY2FwZVJlZ0V4cCh0aGlzLnByZWZpeENoYXJ8fCcnKX1gLCAnZycpO1xuICAgIH1cblxuICAgIGdldFN1ZmZpeEV4cHJlc3Npb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnN1ZmZpeCkge1xuICAgICAgICAgICAgdGhpcy5zdWZmaXhDaGFyID0gdGhpcy5zdWZmaXg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGUsIHtzdHlsZTogdGhpcy5tb2RlLCBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5OiB0aGlzLmN1cnJlbmN5RGlzcGxheSxcbiAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMH0pO1xuICAgICAgICAgICAgdGhpcy5zdWZmaXhDaGFyID0gZm9ybWF0dGVyLmZvcm1hdCgxKS5zcGxpdCgnMScpWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYCR7dGhpcy5lc2NhcGVSZWdFeHAodGhpcy5zdWZmaXhDaGFyfHwnJyl9YCwgJ2cnKTtcbiAgICB9XG5cbiAgICBmb3JtYXRWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnLScpIHsgLy8gTWludXMgc2lnblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmxvY2FsZSwgdGhpcy5nZXRPcHRpb25zKCkpO1xuICAgICAgICAgICAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZWZpeCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMucHJlZml4ICsgZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWUgKyB0aGlzLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHBhcnNlVmFsdWUodGV4dCkge1xuICAgICAgICBsZXQgZmlsdGVyZWRUZXh0ID0gdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX3N1ZmZpeCwgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xccy9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9jdXJyZW5jeSwgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fZ3JvdXAsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX21pbnVzU2lnbiwgJy0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHRoaXMuX2RlY2ltYWwsICcuJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSh0aGlzLl9udW1lcmFsLCB0aGlzLl9pbmRleCk7XG5cbiAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcmVkVGV4dCA9PT0gJy0nKSAvLyBNaW51cyBzaWduXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkVGV4dDtcblxuICAgICAgICAgICAgbGV0IHBhcnNlZFZhbHVlID0gK2ZpbHRlcmVkVGV4dDtcbiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJzZWRWYWx1ZSkgPyBudWxsIDogcGFyc2VkVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXBlYXQoZXZlbnQsIGludGVydmFsLCBkaXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpID0gaW50ZXJ2YWwgfHwgNTAwO1xuXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgNDAsIGRpcik7XG4gICAgICAgIH0sIGkpO1xuXG4gICAgICAgIHRoaXMuc3BpbihldmVudCwgZGlyKTtcbiAgICB9XG5cbiAgICBzcGluKGV2ZW50LCBkaXIpIHtcbiAgICAgICAgbGV0IHN0ZXAgPSB0aGlzLnN0ZXAgKiBkaXI7XG4gICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSB8fCAwO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnZhbGlkYXRlVmFsdWUoY3VycmVudFZhbHVlICsgc3RlcCk7XG4gICAgICAgIGlmICh0aGlzLm1heGxlbmd0aCAmJiB0aGlzLm1heGxlbmd0aCA8IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWUpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dChuZXdWYWx1ZSwgbnVsbCwgJ3NwaW4nLCBudWxsKTtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCwgbmV3VmFsdWUpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlT25JbnB1dChldmVudCwgY3VycmVudFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZVVwKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBvblVwQnV0dG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDMyIHx8IGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgbnVsbCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwQnV0dG9uS2V5VXAoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIC0xKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZVVwKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZUxlYXZlKCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25LZXlVcCgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgb25Eb3duQnV0dG9uS2V5RG93bihldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzIgfHwgZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCBudWxsLCAtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVzZXJJbnB1dChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc1NwZWNpYWxDaGFyKSB7XG4gICAgICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLmxhc3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzU3BlY2lhbENoYXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbklucHV0S2V5RG93bihldmVudCkge1xuICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgdGhpcy5pc1NwZWNpYWxDaGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGxldCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHIgPSBudWxsO1xuXG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL3VwXG4gICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgMSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2Rvd25cbiAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgdGhpcy5zcGluKGV2ZW50LCAtMSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2xlZnRcbiAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTnVtZXJhbENoYXIoaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uU3RhcnQgLSAxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9yaWdodFxuICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNOdW1lcmFsQ2hhcihpbnB1dFZhbHVlLmNoYXJBdChzZWxlY3Rpb25TdGFydCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5wYXJzZVZhbHVlKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWVTdHIpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCBuZXdWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChldmVudCwgbmV3VmFsdWVTdHIpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vYmFja3NwYWNlXG4gICAgICAgICAgICBjYXNlIDg6IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsZXRlQ2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvblN0YXJ0IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVjaW1hbENoYXJJbmRleCwgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggfSA9IHRoaXMuZ2V0RGVjaW1hbENoYXJJbmRleGVzKGlucHV0VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTnVtZXJhbENoYXIoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxMZW5ndGggPSB0aGlzLmdldERlY2ltYWxMZW5ndGgoaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ncm91cC50ZXN0KGRlbGV0ZUNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXAubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAyKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2RlY2ltYWwudGVzdChkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydCAtIDEsIHNlbGVjdGlvblN0YXJ0IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlY2ltYWxDaGFySW5kZXggPiAwICYmIHNlbGVjdGlvblN0YXJ0ID4gZGVjaW1hbENoYXJJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydGVkVGV4dCA9IHRoaXMuaXNEZWNpbWFsTW9kZSgpICYmICh0aGlzLm1pbkZyYWN0aW9uRGlnaXRzIHx8IDApIDwgZGVjaW1hbExlbmd0aCA/ICcnIDogJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgaW5zZXJ0ZWRUZXh0ICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCAtIDEpICsgJzAnICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLnBhcnNlVmFsdWUobmV3VmFsdWVTdHIpID4gMCA/IG5ld1ZhbHVlU3RyIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQgLSAxKSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgbmV3VmFsdWVTdHIsIG51bGwsICdkZWxldGUtc2luZ2xlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuZGVsZXRlUmFuZ2UoaW5wdXRWYWx1ZSwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCBudWxsLCAnZGVsZXRlLXJhbmdlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGRlbFxuICAgICAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsZXRlQ2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkZWNpbWFsQ2hhckluZGV4LCBkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCB9ID0gdGhpcy5nZXREZWNpbWFsQ2hhckluZGV4ZXMoaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihkZWxldGVDaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbExlbmd0aCA9IHRoaXMuZ2V0RGVjaW1hbExlbmd0aChpbnB1dFZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dyb3VwLnRlc3QoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyBpbnB1dFZhbHVlLnNsaWNlKHNlbGVjdGlvblN0YXJ0ICsgMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9kZWNpbWFsLnRlc3QoZGVsZXRlQ2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbExlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnQgKyAxLCBzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkZWNpbWFsQ2hhckluZGV4ID4gMCAmJiBzZWxlY3Rpb25TdGFydCA+IGRlY2ltYWxDaGFySW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnNlcnRlZFRleHQgPSB0aGlzLmlzRGVjaW1hbE1vZGUoKSAmJiAodGhpcy5taW5GcmFjdGlvbkRpZ2l0cyB8fCAwKSA8IGRlY2ltYWxMZW5ndGggPyAnJyA6ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpICsgaW5zZXJ0ZWRUZXh0ICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWUuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpICsgJzAnICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5wYXJzZVZhbHVlKG5ld1ZhbHVlU3RyKSA+IDAgPyBuZXdWYWx1ZVN0ciA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSBpbnB1dFZhbHVlLnNsaWNlKDAsIHNlbGVjdGlvblN0YXJ0KSArIGlucHV0VmFsdWUuc2xpY2Uoc2VsZWN0aW9uU3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCBudWxsLCAnZGVsZXRlLWJhY2stc2luZ2xlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuZGVsZXRlUmFuZ2UoaW5wdXRWYWx1ZSwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCBudWxsLCAnZGVsZXRlLXJhbmdlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25LZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRLZXlQcmVzcyhldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgY29kZSA9IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIGxldCBjaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcbiAgICAgICAgY29uc3QgaXNEZWNpbWFsU2lnbiA9IHRoaXMuaXNEZWNpbWFsU2lnbihjaGFyKTtcbiAgICAgICAgY29uc3QgaXNNaW51c1NpZ24gPSB0aGlzLmlzTWludXNTaWduKGNoYXIpO1xuXG4gICAgICAgIGlmICgoNDggPD0gY29kZSAmJiBjb2RlIDw9IDU3KSB8fCBpc01pbnVzU2lnbiB8fCBpc0RlY2ltYWxTaWduKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgY2hhciwgeyBpc0RlY2ltYWxTaWduLCBpc01pbnVzU2lnbiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUGFzdGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGRhdGEgPSAoZXZlbnQuY2xpcGJvYXJkRGF0YSB8fCB3aW5kb3dbJ2NsaXBib2FyZERhdGEnXSkuZ2V0RGF0YSgnVGV4dCcpO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWREYXRhID0gdGhpcy5wYXJzZVZhbHVlKGRhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZERhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydChldmVudCwgZmlsdGVyZWREYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsbG93TWludXNTaWduKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1pbiA8IDA7XG4gICAgfVxuXG4gICAgaXNNaW51c1NpZ24oY2hhcikge1xuICAgICAgICBpZiAodGhpcy5fbWludXNTaWduLnRlc3QoY2hhcikgfHwgY2hhciA9PT0gJy0nKSB7XG4gICAgICAgICAgICB0aGlzLl9taW51c1NpZ24ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzRGVjaW1hbFNpZ24oY2hhcikge1xuICAgICAgICBpZiAodGhpcy5fZGVjaW1hbC50ZXN0KGNoYXIpKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpc0RlY2ltYWxNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZGVjaW1hbCc7XG4gICAgfVxuXG4gICAgZ2V0RGVjaW1hbENoYXJJbmRleGVzKHZhbCkge1xuICAgICAgICBsZXQgZGVjaW1hbENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbCA9IHZhbC5yZXBsYWNlKHRoaXMuX3ByZWZpeCwgJycpLnRyaW0oKS5yZXBsYWNlKC9cXHMvZywgJycpLnJlcGxhY2UodGhpcy5fY3VycmVuY3ksICcnKTtcbiAgICAgICAgY29uc3QgZGVjaW1hbENoYXJJbmRleFdpdGhvdXRQcmVmaXggPSBmaWx0ZXJlZFZhbC5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4geyBkZWNpbWFsQ2hhckluZGV4LCBkZWNpbWFsQ2hhckluZGV4V2l0aG91dFByZWZpeCB9O1xuICAgIH1cblxuICAgIGdldENoYXJJbmRleGVzKHZhbCkge1xuICAgICAgICBjb25zdCBkZWNpbWFsQ2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgdGhpcy5fZGVjaW1hbC5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBtaW51c0NoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fbWludXNTaWduKTtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeENoYXJJbmRleCA9IHZhbC5zZWFyY2godGhpcy5fc3VmZml4KTtcbiAgICAgICAgdGhpcy5fc3VmZml4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5Q2hhckluZGV4ID0gdmFsLnNlYXJjaCh0aGlzLl9jdXJyZW5jeSk7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5Lmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHsgZGVjaW1hbENoYXJJbmRleCwgbWludXNDaGFySW5kZXgsIHN1ZmZpeENoYXJJbmRleCwgY3VycmVuY3lDaGFySW5kZXggfTtcbiAgICB9XG5cbiAgICBpbnNlcnQoZXZlbnQsIHRleHQsIHNpZ24gPSB7IGlzRGVjaW1hbFNpZ246IGZhbHNlLCBpc01pbnVzU2lnbjogZmFsc2UgfSkge1xuICAgICAgICBjb25zdCBtaW51c0NoYXJJbmRleE9uVGV4dCA9IHRleHQuc2VhcmNoKHRoaXMuX21pbnVzU2lnbik7XG4gICAgICAgIHRoaXMuX21pbnVzU2lnbi5sYXN0SW5kZXggPSAwO1xuICAgICAgICBpZiAoIXRoaXMuYWxsb3dNaW51c1NpZ24oKSAmJiBtaW51c0NoYXJJbmRleE9uVGV4dCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbGV0IHNlbGVjdGlvbkVuZCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGxldCBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgeyBkZWNpbWFsQ2hhckluZGV4LCBtaW51c0NoYXJJbmRleCwgc3VmZml4Q2hhckluZGV4LCBjdXJyZW5jeUNoYXJJbmRleCB9ID0gdGhpcy5nZXRDaGFySW5kZXhlcyhpbnB1dFZhbHVlKTtcbiAgICAgICAgbGV0IG5ld1ZhbHVlU3RyO1xuXG4gICAgICAgIGlmIChzaWduLmlzTWludXNTaWduKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IGlucHV0VmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKG1pbnVzQ2hhckluZGV4ID09PSAtMSB8fCBzZWxlY3Rpb25FbmQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB0aGlzLmluc2VydFRleHQoaW5wdXRWYWx1ZSwgdGV4dCwgMCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgdGV4dCwgJ2luc2VydCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNpZ24uaXNEZWNpbWFsU2lnbikge1xuICAgICAgICAgICAgaWYgKGRlY2ltYWxDaGFySW5kZXggPiAwICYmIHNlbGVjdGlvblN0YXJ0ID09PSBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgaW5wdXRWYWx1ZSwgdGV4dCwgJ2luc2VydCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA+IHNlbGVjdGlvblN0YXJ0ICYmIGRlY2ltYWxDaGFySW5kZXggPCBzZWxlY3Rpb25FbmQpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuaW5zZXJ0VGV4dChpbnB1dFZhbHVlLCB0ZXh0LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgdGV4dCwgJ2luc2VydCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGVjaW1hbENoYXJJbmRleCA9PT0gLTEgJiYgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdGhpcy5pbnNlcnRUZXh0KGlucHV0VmFsdWUsIHRleHQsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlU3RyLCB0ZXh0LCAnaW5zZXJ0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXhGcmFjdGlvbkRpZ2l0cyA9IHRoaXMubnVtYmVyRm9ybWF0LnJlc29sdmVkT3B0aW9ucygpLm1heGltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHNlbGVjdGlvblN0YXJ0ICE9PSBzZWxlY3Rpb25FbmQgPyAncmFuZ2UtaW5zZXJ0JyA6ICdpbnNlcnQnO1xuXG4gICAgICAgICAgICBpZiAoZGVjaW1hbENoYXJJbmRleCA+IDAgJiYgc2VsZWN0aW9uU3RhcnQgPiBkZWNpbWFsQ2hhckluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKChzZWxlY3Rpb25TdGFydCArIHRleHQubGVuZ3RoIC0gKGRlY2ltYWxDaGFySW5kZXggKyAxKSkgPD0gbWF4RnJhY3Rpb25EaWdpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhckluZGV4ID0gY3VycmVuY3lDaGFySW5kZXggPj0gc2VsZWN0aW9uU3RhcnQgPyBjdXJyZW5jeUNoYXJJbmRleCAtIDEgOiAoc3VmZml4Q2hhckluZGV4ID49IHNlbGVjdGlvblN0YXJ0ID8gc3VmZml4Q2hhckluZGV4IDogaW5wdXRWYWx1ZS5sZW5ndGgpO1xuXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gaW5wdXRWYWx1ZS5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkgKyB0ZXh0ICsgaW5wdXRWYWx1ZS5zbGljZShzZWxlY3Rpb25TdGFydCArIHRleHQubGVuZ3RoLCBjaGFySW5kZXgpICsgaW5wdXRWYWx1ZS5zbGljZShjaGFySW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgdGV4dCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHRoaXMuaW5zZXJ0VGV4dChpbnB1dFZhbHVlLCB0ZXh0LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZVN0ciwgdGV4dCwgb3BlcmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydFRleHQodmFsdWUsIHRleHQsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgbGV0IHRleHRTcGxpdCA9IHRleHQgPT09ICcuJyA/IHRleHQgOiB0ZXh0LnNwbGl0KCcuJyk7XG5cbiAgICAgICAgaWYgKHRleHRTcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxDaGFySW5kZXggPSB2YWx1ZS5zbGljZShzdGFydCwgZW5kKS5zZWFyY2godGhpcy5fZGVjaW1hbCk7XG4gICAgICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICByZXR1cm4gKGRlY2ltYWxDaGFySW5kZXggPiAwKSA/IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHRoaXMuZm9ybWF0VmFsdWUodGV4dCkgKyB2YWx1ZS5zbGljZShlbmQpIDogKHZhbHVlIHx8IHRoaXMuZm9ybWF0VmFsdWUodGV4dCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChlbmQgLSBzdGFydCkgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgdmFsdWUuc2xpY2UoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlbmQgPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgc3RhcnQpICsgdGV4dCArIHZhbHVlLnNsaWNlKGVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGVSYW5nZSh2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgICBsZXQgbmV3VmFsdWVTdHI7XG5cbiAgICAgICAgaWYgKChlbmQgLSBzdGFydCkgPT09IHZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gJyc7XG4gICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09PSAwKVxuICAgICAgICAgICAgbmV3VmFsdWVTdHIgPSB2YWx1ZS5zbGljZShlbmQpO1xuICAgICAgICBlbHNlIGlmIChlbmQgPT09IHZhbHVlLmxlbmd0aClcbiAgICAgICAgICAgIG5ld1ZhbHVlU3RyID0gdmFsdWUuc2xpY2UoMCwgc3RhcnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBuZXdWYWx1ZVN0ciA9IHZhbHVlLnNsaWNlKDAsIHN0YXJ0KSArIHZhbHVlLnNsaWNlKGVuZCk7XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlU3RyO1xuICAgIH1cblxuICAgIGluaXRDdXJzb3IoKSB7XG4gICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGxldCB2YWx1ZUxlbmd0aCA9IGlucHV0VmFsdWUubGVuZ3RoO1xuICAgICAgICBsZXQgaW5kZXggPSBudWxsO1xuXG4gICAgICAgIC8vIHJlbW92ZSBwcmVmaXhcbiAgICAgICAgbGV0IHByZWZpeExlbmd0aCA9ICh0aGlzLnByZWZpeENoYXIgfHwgJycpLmxlbmd0aDtcbiAgICAgICAgaW5wdXRWYWx1ZSA9IGlucHV0VmFsdWUucmVwbGFjZSh0aGlzLl9wcmVmaXgsICcnKTtcbiAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydCAtIHByZWZpeExlbmd0aDtcblxuICAgICAgICBsZXQgY2hhciA9IGlucHV0VmFsdWUuY2hhckF0KHNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmFsQ2hhcihjaGFyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvblN0YXJ0ICsgcHJlZml4TGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9sZWZ0XG4gICAgICAgIGxldCBpID0gc2VsZWN0aW9uU3RhcnQgLSAxO1xuICAgICAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICAgICAgICBjaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoaSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGNoYXIpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpICsgcHJlZml4TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXggKyAxLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaSA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgd2hpbGUgKGkgPCB2YWx1ZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNoYXIgPSBpbnB1dFZhbHVlLmNoYXJBdChpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc051bWVyYWxDaGFyKGNoYXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaSArIHByZWZpeExlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleCB8fCAwO1xuICAgIH1cblxuICAgIG9uSW5wdXRDbGljaygpIHtcbiAgICAgICAgdGhpcy5pbml0Q3Vyc29yKCk7XG4gICAgfVxuXG4gICAgaXNOdW1lcmFsQ2hhcihjaGFyKSB7XG4gICAgICAgIGlmIChjaGFyLmxlbmd0aCA9PT0gMSAmJiAodGhpcy5fbnVtZXJhbC50ZXN0KGNoYXIpIHx8IHRoaXMuX2RlY2ltYWwudGVzdChjaGFyKSB8fCB0aGlzLl9ncm91cC50ZXN0KGNoYXIpIHx8IHRoaXMuX21pbnVzU2lnbi50ZXN0KGNoYXIpKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFJlZ2V4KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXNldFJlZ2V4KCkge1xuICAgICAgICB0aGlzLl9udW1lcmFsLmxhc3RJbmRleCA9ICAwO1xuICAgICAgICB0aGlzLl9kZWNpbWFsLmxhc3RJbmRleCA9ICAwO1xuICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAgMDtcbiAgICAgICAgdGhpcy5fbWludXNTaWduLmxhc3RJbmRleCA9ICAwO1xuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKGV2ZW50LCB2YWx1ZVN0ciwgaW5zZXJ0ZWRWYWx1ZVN0ciwgb3BlcmF0aW9uKSB7XG4gICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKHZhbHVlU3RyICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKHZhbHVlU3RyKTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gIW5ld1ZhbHVlICYmICF0aGlzLmFsbG93RW1wdHkgPyAwIDogbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0KG5ld1ZhbHVlLCBpbnNlcnRlZFZhbHVlU3RyLCBvcGVyYXRpb24sIHZhbHVlU3RyKTtcblxuICAgICAgICAgICAgdGhpcy5oYW5kbGVPbklucHV0KGV2ZW50LCBjdXJyZW50VmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZU9uSW5wdXQoZXZlbnQsIGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQoY3VycmVudFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsdWVDaGFuZ2VkKGN1cnJlbnRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZEN1cnJlbnRWYWx1ZSA9ICh0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJykgPyB0aGlzLnBhcnNlVmFsdWUoY3VycmVudFZhbHVlKSA6IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXdWYWx1ZSAhPT0gcGFyc2VkQ3VycmVudFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhbGlkYXRlVmFsdWUodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnLScgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB2YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXggIT0gbnVsbCAmJiB2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5wdXQodmFsdWUsIGluc2VydGVkVmFsdWVTdHIsIG9wZXJhdGlvbiwgdmFsdWVTdHIpIHtcbiAgICAgICAgaW5zZXJ0ZWRWYWx1ZVN0ciA9IGluc2VydGVkVmFsdWVTdHIgfHwgJyc7XG5cbiAgICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpO1xuICAgICAgICBsZXQgY3VycmVudExlbmd0aCA9IGlucHV0VmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdmFsdWVTdHIpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5jb25jYXRWYWx1ZXMobmV3VmFsdWUsIHZhbHVlU3RyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50TGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0Q3Vyc29yKCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbmRleCArIGluc2VydGVkVmFsdWVTdHIubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25FbmQgPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgICAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoICYmIHRoaXMubWF4bGVuZ3RoIDwgbmV3VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIGxldCBuZXdMZW5ndGggPSBuZXdWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdyYW5nZS1pbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSgoaW5wdXRWYWx1ZSB8fCAnJykuc2xpY2UoMCwgc2VsZWN0aW9uU3RhcnQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlU3RyID0gc3RhcnRWYWx1ZSAhPT0gbnVsbCA/IHN0YXJ0VmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RXhwciA9IHN0YXJ0VmFsdWVTdHIuc3BsaXQoJycpLmpvaW4oYCgke3RoaXMuZ3JvdXBDaGFyfSk/YCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc1JlZ2V4ID0gbmV3IFJlZ0V4cChzdGFydEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgc1JlZ2V4LnRlc3QobmV3VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdEV4cHIgPSBpbnNlcnRlZFZhbHVlU3RyLnNwbGl0KCcnKS5qb2luKGAoJHt0aGlzLmdyb3VwQ2hhcn0pP2ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRSZWdleCA9IG5ldyBSZWdFeHAodEV4cHIsICdnJyk7XG4gICAgICAgICAgICAgICAgdFJlZ2V4LnRlc3QobmV3VmFsdWUuc2xpY2Uoc1JlZ2V4Lmxhc3RJbmRleCkpO1xuXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gc1JlZ2V4Lmxhc3RJbmRleCArIHRSZWdleC5sYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5ld0xlbmd0aCA9PT0gY3VycmVudExlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdpbnNlcnQnIHx8IG9wZXJhdGlvbiA9PT0gJ2RlbGV0ZS1iYWNrLXNpbmdsZScpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQgKyAxLCBzZWxlY3Rpb25FbmQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdkZWxldGUtc2luZ2xlJylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCAtIDEsIHNlbGVjdGlvbkVuZCAtIDEpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJ2RlbGV0ZS1yYW5nZScgfHwgb3BlcmF0aW9uID09PSAnc3BpbicpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdkZWxldGUtYmFjay1zaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uRW5kIC0gMSk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRDaGFyID0gaW5wdXRWYWx1ZS5jaGFyQXQoc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgICBsZXQgZGlmZiA9IGN1cnJlbnRMZW5ndGggLSBuZXdMZW5ndGg7XG4gICAgICAgICAgICAgICAgbGV0IGlzR3JvdXBDaGFyID0gdGhpcy5fZ3JvdXAudGVzdChuZXh0Q2hhcik7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNHcm91cENoYXIgJiYgZGlmZiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzR3JvdXBDaGFyICYmIHRoaXMuaXNOdW1lcmFsQ2hhcihwcmV2Q2hhcikpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRW5kICs9ICgtMSAqIGRpZmYpICsgMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpbnB1dFZhbHVlID09PSAnLScgJiYgb3BlcmF0aW9uID09PSAnaW5zZXJ0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5pdEN1cnNvcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IGluZGV4ICsgaW5zZXJ0ZWRWYWx1ZVN0ci5sZW5ndGggKyAxO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25FbmQsIHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQgKyAobmV3TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtdmFsdWVub3cnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uY2F0VmFsdWVzKHZhbDEsIHZhbDIpIHtcbiAgICAgICAgaWYgKHZhbDEgJiYgdmFsMikge1xuICAgICAgICAgICAgbGV0IGRlY2ltYWxDaGFySW5kZXggPSB2YWwyLnNlYXJjaCh0aGlzLl9kZWNpbWFsKTtcbiAgICAgICAgICAgIHRoaXMuX2RlY2ltYWwubGFzdEluZGV4ID0gMDtcblxuICAgICAgICAgICAgcmV0dXJuIGRlY2ltYWxDaGFySW5kZXggIT09IC0xID8gKHZhbDEuc3BsaXQodGhpcy5fZGVjaW1hbClbMF0gKyB2YWwyLnNsaWNlKGRlY2ltYWxDaGFySW5kZXgpKSA6IHZhbDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsMTtcbiAgICB9XG5cbiAgICBnZXREZWNpbWFsTGVuZ3RoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHZhbHVlLnNwbGl0KHRoaXMuX2RlY2ltYWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVTcGxpdFsxXS5yZXBsYWNlKHRoaXMuX3N1ZmZpeCwgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHMvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodGhpcy5fY3VycmVuY3ksICcnKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKSk7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXZhbHVlbm93JywgbmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBuZXdWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZm9ybWF0dGVkVmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9ICF0aGlzLnZhbHVlICYmICF0aGlzLmFsbG93RW1wdHkgPyAwIDogdGhpcy52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWUodmFsKTtcbiAgICB9XG5cbiAgICB1cGRhdGVNb2RlbChldmVudCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsbGVkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID4gMClcbiAgICB9XG5cbiAgICBjbGVhclRpbWVyKCkge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZvcm1hdHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubnVtYmVyRm9ybWF0O1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLElucHV0VGV4dE1vZHVsZSwgQnV0dG9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbSW5wdXROdW1iZXJdLFxuICAgIGRlY2xhcmF0aW9uczogW0lucHV0TnVtYmVyXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/inputnumber/primeng-inputnumber.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputnumber/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputnumber/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnB1dG51bWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dG51bWJlci9wcmltZW5nLWlucHV0bnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputnumber/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputnumber/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputnumber/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inputnumber';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dG51bWJlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnB1dG51bWJlcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/inputswitch/inputswitch.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputswitch/inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputswitch/inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import { NgModule, Component, Input, forwardRef, EventEmitter, Output, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const INPUTSWITCH_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputSwitch),
+    multi: true
+};
+export class InputSwitch {
+    constructor(cd) {
+        this.cd = cd;
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.modelValue = false;
+        this.focused = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, cb) {
+        if (!this.disabled && !this.readonly) {
+            event.preventDefault();
+            this.toggle(event);
+            cb.focus();
+        }
+    }
+    onInputChange(event) {
+        if (!this.readonly) {
+            const inputChecked = event.target.checked;
+            this.updateModel(event, inputChecked);
+        }
+    }
+    toggle(event) {
+        this.updateModel(event, !this.checked());
+    }
+    updateModel(event, value) {
+        this.modelValue = value ? this.trueValue : this.falseValue;
+        this.onModelChange(this.modelValue);
+        this.onChange.emit({
+            originalEvent: event,
+            checked: this.modelValue
+        });
+    }
+    onFocus(event) {
+        this.focused = true;
+    }
+    onBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.modelValue = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.modelValue === this.trueValue;
+    }
+}
+InputSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputSwitch, selector: "p-inputSwitch", inputs: { style: "style", styleClass: "styleClass", tabindex: "tabindex", inputId: "inputId", name: "name", disabled: "disabled", readonly: "readonly", trueValue: "trueValue", falseValue: "falseValue", ariaLabelledBy: "ariaLabelledBy" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [INPUTSWITCH_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, isInline: true, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputSwitch', template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, providers: [INPUTSWITCH_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+export class InputSwitchModule {
+}
+InputSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, declarations: [InputSwitch], imports: [CommonModule], exports: [InputSwitch] });
+InputSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputSwitch],
+                    declarations: [InputSwitch]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzd2l0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXRzd2l0Y2gvaW5wdXRzd2l0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxZQUFZLEVBQUMsTUFBTSxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDOzs7QUFFdEUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQVE7SUFDN0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFzQkYsTUFBTSxPQUFPLFdBQVc7SUFnQ3BCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBaEJoQyxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRXRCLGVBQVUsR0FBUSxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNELGVBQVUsR0FBUSxLQUFLLENBQUM7UUFFeEIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixrQkFBYSxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVuQyxtQkFBYyxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVRLENBQUM7SUFFN0MsT0FBTyxDQUFDLEtBQVksRUFBRSxFQUFvQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsS0FBSyxDQUFD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YUErRlYsWUFBWSxhQS9GYixXQUFXOytHQW1HWCxpQkFBaUIsWUFKakIsQ0FBQyxZQUFZLENBQUM7MkZBSWQsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixZQUFZLEVBQUUsQ0FBQyxXQUFXLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsZm9yd2FyZFJlZixFdmVudEVtaXR0ZXIsT3V0cHV0LENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IElOUFVUU1dJVENIX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFN3aXRjaCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtaW5wdXRTd2l0Y2gnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLWlucHV0c3dpdGNoIHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtaW5wdXRzd2l0Y2gtY2hlY2tlZCc6IGNoZWNrZWQoKSwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ3AtZm9jdXMnOiBmb2N1c2VkfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBjYilcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0ICNjYiB0eXBlPVwiY2hlY2tib3hcIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgW2F0dHIubmFtZV09XCJuYW1lXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbY2hlY2tlZF09XCJjaGVja2VkKClcIiAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHJvbGU9XCJzd2l0Y2hcIiBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZCgpXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXRzd2l0Y2gtc2xpZGVyXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW0lOUFVUU1dJVENIX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0c3dpdGNoLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0U3dpdGNoIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdHJ1ZVZhbHVlOiBhbnkgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZmFsc2VWYWx1ZTogYW55ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIG1vZGVsVmFsdWU6IGFueSA9IGZhbHNlO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCwgY2I6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoZXZlbnQpO1xuICAgICAgICAgICAgY2IuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRDaGVja2VkID0gKDxIVE1MSW5wdXRFbGVtZW50PiBldmVudC50YXJnZXQpLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCBpbnB1dENoZWNrZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50LCAhdGhpcy5jaGVja2VkKCkpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKGV2ZW50OiBFdmVudCwgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5tb2RlbFZhbHVlID0gdmFsdWUgPyB0aGlzLnRydWVWYWx1ZSA6IHRoaXMuZmFsc2VWYWx1ZTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IHRoaXMubW9kZWxWYWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBjaGVja2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlID09PSB0aGlzLnRydWVWYWx1ZTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW0lucHV0U3dpdGNoXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtJbnB1dFN3aXRjaF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRTd2l0Y2hNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputswitch/primeng-inputswitch.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputswitch/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputswitch/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnB1dHN3aXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHN3aXRjaC9wcmltZW5nLWlucHV0c3dpdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputswitch/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputswitch/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputswitch/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inputswitch';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHN3aXRjaC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnB1dHN3aXRjaCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/inputtext/inputtext.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtext/inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtext/inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,56 @@
+import { NgModule, Directive, HostListener, Optional } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/forms";
+export class InputText {
+    constructor(el, ngModel, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.cd = cd;
+    }
+    ngAfterViewInit() {
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||
+            (this.ngModel && this.ngModel.model);
+    }
+}
+InputText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputText, selector: "[pInputText]", host: { listeners: { "input": "onInput($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputText]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }] } });
+export class InputTextModule {
+}
+InputTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, declarations: [InputText], imports: [CommonModule], exports: [InputText] });
+InputTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputText],
+                    declarations: [InputText]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXR0ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2lucHV0dGV4dC9pbnB1dHRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFXLFFBQVEsRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFFakksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFTN0MsTUFBTSxPQUFPLFNBQVM7SUFJbEIsWUFBbUIsRUFBYyxFQUFxQixPQUFnQixFQUFVLEVBQXFCO1FBQWxGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBcUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO0lBQ3JHLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFHRCxPQUFPLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDN0UsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7c0dBeEJRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQVByQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUU7d0JBQ0YsT0FBTyxFQUFFLG1DQUFtQzt3QkFDNUMsa0JBQWtCLEVBQUUsUUFBUTtxQkFDL0I7aUJBQ0o7OzBCQUt1QyxRQUFROzRFQWE1QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQWdCckMsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFoQ2YsU0FBUyxhQTRCUixZQUFZLGFBNUJiLFNBQVM7NkdBZ0NULGVBQWUsWUFKZixDQUFDLFlBQVksQ0FBQzsyRkFJZCxlQUFlO2tCQUwzQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNwQixZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIERvQ2hlY2ssIE9wdGlvbmFsLCBDaGFuZ2VEZXRlY3RvclJlZiwgQWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twSW5wdXRUZXh0XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLWZpbGxlZF0nOiAnZmlsbGVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXh0IGltcGxlbWVudHMgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBmaWxsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIEBPcHRpb25hbCgpIHB1YmxpYyBuZ01vZGVsOiBOZ01vZGVsLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gICAgb25JbnB1dChlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVGaWxsZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5maWxsZWQgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGgpIHx8XG4gICAgICAgICAgICAodGhpcy5uZ01vZGVsICYmIHRoaXMubmdNb2RlbC5tb2RlbCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtJbnB1dFRleHRdLFxuICAgIGRlY2xhcmF0aW9uczogW0lucHV0VGV4dF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXh0TW9kdWxlIHtcbn1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/inputtext/primeng-inputtext.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtext/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtext/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnB1dHRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaW5wdXR0ZXh0L3ByaW1lbmctaW5wdXR0ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputtext/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtext/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtext/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inputtext';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHRleHQvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXR0ZXh0JzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputtextarea/inputtextarea.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtextarea/inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtextarea/inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,117 @@
+import { NgModule, Directive, HostListener, Input, Output, EventEmitter, Optional } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/forms";
+export class InputTextarea {
+    constructor(el, ngModel, control, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.control = control;
+        this.cd = cd;
+        this.onResize = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.ngModel) {
+            this.ngModelSubscription = this.ngModel.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+        if (this.control) {
+            this.ngControlSubscription = this.control.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+    }
+    ngAfterViewInit() {
+        if (this.autoResize)
+            this.resize();
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    onInput(e) {
+        this.updateState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    onFocus(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    onBlur(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    resize(event) {
+        this.el.nativeElement.style.height = 'auto';
+        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';
+        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {
+            this.el.nativeElement.style.overflowY = "scroll";
+            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;
+        }
+        else {
+            this.el.nativeElement.style.overflow = "hidden";
+        }
+        this.onResize.emit(event || {});
+    }
+    updateState() {
+        this.updateFilledState();
+        if (this.autoResize) {
+            this.resize();
+        }
+    }
+    ngOnDestroy() {
+        if (this.ngModelSubscription) {
+            this.ngModelSubscription.unsubscribe();
+        }
+        if (this.ngControlSubscription) {
+            this.ngControlSubscription.unsubscribe();
+        }
+    }
+}
+InputTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i1.NgControl, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputTextarea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputTextarea, selector: "[pInputTextarea]", inputs: { autoResize: "autoResize" }, outputs: { onResize: "onResize" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus($event)", "blur": "onBlur($event)" }, properties: { "class.p-filled": "filled", "class.p-inputtextarea-resizable": "autoResize" }, classAttribute: "p-inputtextarea p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputTextarea]',
+                    host: {
+                        'class': 'p-inputtextarea p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled',
+                        '[class.p-inputtextarea-resizable]': 'autoResize'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                    type: Optional
+                }] }, { type: i1.NgControl, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoResize: [{
+                type: Input
+            }], onResize: [{
+                type: Output
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus', ['$event']]
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur', ['$event']]
+            }] } });
+export class InputTextareaModule {
+}
+InputTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, declarations: [InputTextarea], imports: [CommonModule], exports: [InputTextarea] });
+InputTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputTextarea],
+                    declarations: [InputTextarea]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXR0ZXh0YXJlYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHRleHRhcmVhL2lucHV0dGV4dGFyZWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksWUFBWSxFQUFDLEtBQUssRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLFFBQVEsRUFBc0QsTUFBTSxlQUFlLENBQUM7QUFFbEssT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFXN0MsTUFBTSxPQUFPLGFBQWE7SUFjdEIsWUFBbUIsRUFBYyxFQUFxQixPQUFnQixFQUFxQixPQUFtQixFQUFVLEVBQXFCO1FBQTFILE9BQUUsR0FBRixFQUFFLENBQVk7UUFBcUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFxQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFWbkksYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBVXFGLENBQUM7SUFFakosUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUE7U0FDTDtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNsRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENB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Z0JBVWpDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWpDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBOENwQyxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBcEduQixhQUFhLGFBZ0daLFlBQVksYUFoR2IsYUFBYTtpSEFvR2IsbUJBQW1CLFlBSm5CLENBQUMsWUFBWSxDQUFDOzJGQUlkLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsRGlyZWN0aXZlLEVsZW1lbnRSZWYsSG9zdExpc3RlbmVyLElucHV0LE91dHB1dCwgRXZlbnRFbWl0dGVyLE9wdGlvbmFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ01vZGVsLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BJbnB1dFRleHRhcmVhXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1pbnB1dHRleHRhcmVhIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtZWxlbWVudCcsXG4gICAgICAgICdbY2xhc3MucC1maWxsZWRdJzogJ2ZpbGxlZCcsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHRleHRhcmVhLXJlc2l6YWJsZV0nOiAnYXV0b1Jlc2l6ZSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0VGV4dGFyZWEgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSAge1xuXG4gICAgQElucHV0KCkgYXV0b1Jlc2l6ZTogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBvblJlc2l6ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBmaWxsZWQ6IGJvb2xlYW47XG5cbiAgICBjYWNoZWRTY3JvbGxIZWlnaHQ6bnVtYmVyO1xuXG4gICAgbmdNb2RlbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbmdDb250cm9sU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIEBPcHRpb25hbCgpIHB1YmxpYyBuZ01vZGVsOiBOZ01vZGVsLCBAT3B0aW9uYWwoKSBwdWJsaWMgY29udHJvbCA6IE5nQ29udHJvbCwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmdNb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5uZ01vZGVsU3Vic2NyaXB0aW9uID0gdGhpcy5uZ01vZGVsLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT57XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKVxuICAgICAgICAgICAgdGhpcy5yZXNpemUoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgICBvbklucHV0KGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbGxlZCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUubGVuZ3RoO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSlcbiAgICBvbkZvY3VzKGUpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgICBvbkJsdXIoZSkge1xuICAgICAgICBpZiAodGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZShlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICBpZiAocGFyc2VGbG9hdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0KSA+PSBwYXJzZUZsb2F0KHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gXCJzY3JvbGxcIjtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25SZXNpemUuZW1pdChldmVudHx8e30pO1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5uZ01vZGVsU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm5nTW9kZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbSW5wdXRUZXh0YXJlYV0sXG4gICAgZGVjbGFyYXRpb25zOiBbSW5wdXRUZXh0YXJlYV1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUZXh0YXJlYU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/inputtextarea/primeng-inputtextarea.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtextarea/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtextarea/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1pbnB1dHRleHRhcmVhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2lucHV0dGV4dGFyZWEvcHJpbWVuZy1pbnB1dHRleHRhcmVhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/inputtextarea/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/inputtextarea/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/inputtextarea/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './inputtextarea';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9pbnB1dHRleHRhcmVhL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXR0ZXh0YXJlYSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/keyfilter/keyfilter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/keyfilter/keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/keyfilter/keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,203 @@
+import { NgModule, Directive, HostListener, Input, forwardRef, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALIDATORS } from '@angular/forms';
+import * as i0 from "@angular/core";
+export const KEYFILTER_VALIDATOR = {
+    provide: NG_VALIDATORS,
+    useExisting: forwardRef(() => KeyFilter),
+    multi: true
+};
+const DEFAULT_MASKS = {
+    pint: /[\d]/,
+    'int': /[\d\-]/,
+    pnum: /[\d\.]/,
+    money: /[\d\.\s,]/,
+    num: /[\d\-\.]/,
+    hex: /[0-9a-f]/i,
+    email: /[a-z0-9_\.\-@]/i,
+    alpha: /[a-z_]/i,
+    alphanum: /[a-z0-9_]/i
+};
+const KEYS = {
+    TAB: 9,
+    RETURN: 13,
+    ESC: 27,
+    BACKSPACE: 8,
+    DELETE: 46
+};
+const SAFARI_KEYS = {
+    63234: 37,
+    63235: 39,
+    63232: 38,
+    63233: 40,
+    63276: 33,
+    63277: 34,
+    63272: 46,
+    63273: 36,
+    63275: 35 // end
+};
+export class KeyFilter {
+    constructor(el) {
+        this.el = el;
+        this.ngModelChange = new EventEmitter();
+        this.isAndroid = DomHandler.isAndroid();
+    }
+    get pattern() {
+        return this._pattern;
+    }
+    set pattern(_pattern) {
+        this._pattern = _pattern;
+        this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;
+    }
+    isNavKeyPress(e) {
+        let k = e.keyCode;
+        k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+        return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;
+    }
+    ;
+    isSpecialKey(e) {
+        let k = e.keyCode || e.charCode;
+        return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 || (k >= 18 && k <= 20) ||
+            (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));
+    }
+    getKey(e) {
+        let k = e.keyCode || e.charCode;
+        return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+    }
+    getCharCode(e) {
+        return e.charCode || e.keyCode || e.which;
+    }
+    findDelta(value, prevValue) {
+        let delta = '';
+        for (let i = 0; i < value.length; i++) {
+            let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);
+            if (str === prevValue)
+                delta = value.substr(i, value.length - prevValue.length);
+        }
+        return delta;
+    }
+    isValidChar(c) {
+        return this.regex.test(c);
+    }
+    isValidString(str) {
+        for (let i = 0; i < str.length; i++) {
+            if (!this.isValidChar(str.substr(i, 1))) {
+                return false;
+            }
+        }
+        return true;
+    }
+    onInput(e) {
+        if (this.isAndroid && !this.pValidateOnly) {
+            let val = this.el.nativeElement.value;
+            let lastVal = this.lastValue || '';
+            let inserted = this.findDelta(val, lastVal);
+            let removed = this.findDelta(lastVal, val);
+            let pasted = inserted.length > 1 || (!inserted && !removed);
+            if (pasted) {
+                if (!this.isValidString(val)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            else if (!removed) {
+                if (!this.isValidChar(inserted)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            val = this.el.nativeElement.value;
+            if (this.isValidString(val)) {
+                this.lastValue = val;
+            }
+        }
+    }
+    onKeyPress(e) {
+        if (this.isAndroid || this.pValidateOnly) {
+            return;
+        }
+        let browser = DomHandler.getBrowser();
+        let k = this.getKey(e);
+        if (browser.mozilla && (e.ctrlKey || e.altKey)) {
+            return;
+        }
+        else if (k == 17 || k == 18) {
+            return;
+        }
+        let c = this.getCharCode(e);
+        let cc = String.fromCharCode(c);
+        let ok = true;
+        if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {
+            return;
+        }
+        ok = this.regex.test(cc);
+        if (!ok) {
+            e.preventDefault();
+        }
+    }
+    onPaste(e) {
+        const clipboardData = e.clipboardData || window.clipboardData.getData('text');
+        if (clipboardData) {
+            const pastedText = clipboardData.getData('text');
+            for (let char of pastedText.toString()) {
+                if (!this.regex.test(char)) {
+                    e.preventDefault();
+                    return;
+                }
+            }
+        }
+    }
+    validate(c) {
+        if (this.pValidateOnly) {
+            let value = this.el.nativeElement.value;
+            if (value && !this.regex.test(value)) {
+                return {
+                    validatePattern: false
+                };
+            }
+        }
+    }
+}
+KeyFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+KeyFilter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: KeyFilter, selector: "[pKeyFilter]", inputs: { pValidateOnly: "pValidateOnly", pattern: ["pKeyFilter", "pattern"] }, outputs: { ngModelChange: "ngModelChange" }, host: { listeners: { "input": "onInput($event)", "keypress": "onKeyPress($event)", "paste": "onPaste($event)" }, classAttribute: "p-element" }, providers: [KEYFILTER_VALIDATOR], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pKeyFilter]',
+                    providers: [KEYFILTER_VALIDATOR],
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pValidateOnly: [{
+                type: Input
+            }], ngModelChange: [{
+                type: Output
+            }], pattern: [{
+                type: Input,
+                args: ['pKeyFilter']
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onKeyPress: [{
+                type: HostListener,
+                args: ['keypress', ['$event']]
+            }], onPaste: [{
+                type: HostListener,
+                args: ['paste', ['$event']]
+            }] } });
+export class KeyFilterModule {
+}
+KeyFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KeyFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, declarations: [KeyFilter], imports: [CommonModule], exports: [KeyFilter] });
+KeyFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [KeyFilter],
+                    declarations: [KeyFilter]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5ZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2tleWZpbHRlci9rZXlmaWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQThCLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBUTtJQUNwQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRztJQUNsQixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxRQUFRO0lBQ2YsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsV0FBVztJQUNsQixHQUFHLEVBQUUsVUFBVTtJQUNmLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEtBQUssRUFBRSxpQkFBaUI7SUFDeEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsUUFBUSxFQUFFLFlBQVk7Q0FDekIsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHO0lBQ1QsR0FBRyxFQUFFLENBQUM7SUFDTixNQUFNLEVBQUUsRUFBRTtJQUNWLEdBQUcsRUFBRSxFQUFFO0lBQ1AsU0FBUyxFQUFFLENBQUM7SUFDWixNQUFNLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRztJQUNoQixLQUFLLEVBQUUsRUFBRTtJQUNULEtB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QUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGZvcndhcmRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFZhbGlkYXRvciwgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgS0VZRklMVEVSX1ZBTElEQVRPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gS2V5RmlsdGVyKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3QgREVGQVVMVF9NQVNLUyA9IHtcbiAgICBwaW50OiAvW1xcZF0vLFxuICAgICdpbnQnOiAvW1xcZFxcLV0vLFxuICAgIHBudW06IC9bXFxkXFwuXS8sXG4gICAgbW9uZXk6IC9bXFxkXFwuXFxzLF0vLFxuICAgIG51bTogL1tcXGRcXC1cXC5dLyxcbiAgICBoZXg6IC9bMC05YS1mXS9pLFxuICAgIGVtYWlsOiAvW2EtejAtOV9cXC5cXC1AXS9pLFxuICAgIGFscGhhOiAvW2Etel9dL2ksXG4gICAgYWxwaGFudW06IC9bYS16MC05X10vaVxufTtcblxuY29uc3QgS0VZUyA9IHtcbiAgICBUQUI6IDksXG4gICAgUkVUVVJOOiAxMyxcbiAgICBFU0M6IDI3LFxuICAgIEJBQ0tTUEFDRTogOCxcbiAgICBERUxFVEU6IDQ2XG59O1xuXG5jb25zdCBTQUZBUklfS0VZUyA9IHtcbiAgICA2MzIzNDogMzcsIC8vIGxlZnRcbiAgICA2MzIzNTogMzksIC8vIHJpZ2h0XG4gICAgNjMyMzI6IDM4LCAvLyB1cFxuICAgIDYzMjMzOiA0MCwgLy8gZG93blxuICAgIDYzMjc2OiAzMywgLy8gcGFnZSB1cFxuICAgIDYzMjc3OiAzNCwgLy8gcGFnZSBkb3duXG4gICAgNjMyNzI6IDQ2LCAvLyBkZWxldGVcbiAgICA2MzI3MzogMzYsIC8vIGhvbWVcbiAgICA2MzI3NTogMzUgIC8vIGVuZFxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcEtleUZpbHRlcl0nLFxuICAgIHByb3ZpZGVyczogW0tFWUZJTFRFUl9WQUxJREFUT1JdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEtleUZpbHRlciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG5cbiAgICBASW5wdXQoKSBwVmFsaWRhdGVPbmx5OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcmVnZXg6IFJlZ0V4cDtcblxuICAgIF9wYXR0ZXJuOiBhbnk7XG5cbiAgICBpc0FuZHJvaWQ6IGJvb2xlYW47XG5cbiAgICBsYXN0VmFsdWU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmlzQW5kcm9pZCA9IERvbUhhbmRsZXIuaXNBbmRyb2lkKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBhdHRlcm4oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgQElucHV0KCdwS2V5RmlsdGVyJykgc2V0IHBhdHRlcm4oX3BhdHRlcm46IGFueSkge1xuICAgICAgICB0aGlzLl9wYXR0ZXJuID0gX3BhdHRlcm47XG4gICAgICAgIHRoaXMucmVnZXggPSBERUZBVUxUX01BU0tTW3RoaXMuX3BhdHRlcm5dIHx8IHRoaXMuX3BhdHRlcm47XG4gICAgfVxuXG4gICAgaXNOYXZLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBrID0gZS5rZXlDb2RlO1xuICAgICAgICBrID0gRG9tSGFuZGxlci5nZXRCcm93c2VyKCkuc2FmYXJpID8gKFNBRkFSSV9LRVlTW2tdIHx8IGspIDogaztcblxuICAgICAgICByZXR1cm4gKGsgPj0gMzMgJiYgayA8PSA0MCkgfHwgayA9PSBLRVlTLlJFVFVSTiB8fCBrID09IEtFWVMuVEFCIHx8IGsgPT0gS0VZUy5FU0M7XG4gICAgfTtcblxuICAgIGlzU3BlY2lhbEtleShlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBrID0gZS5rZXlDb2RlIHx8IGUuY2hhckNvZGU7XG5cbiAgICAgICAgcmV0dXJuIGsgPT0gOSB8fCBrID09IDEzIHx8IGsgPT0gMjcgfHwgayA9PSAxNiB8fCBrID09IDE3IHx8KGsgPj0gMTggJiYgayA8PSAyMCkgfHxcbiAgICAgICAgICAgIChEb21IYW5kbGVyLmdldEJyb3dzZXIoKS5vcGVyYSAmJiAhZS5zaGlmdEtleSAmJiAoayA9PSA4IHx8IChrID49IDMzICYmIGsgPD0gMzUpIHx8IChrID49IDM2ICYmIGsgPD0gMzkpIHx8IChrID49IDQ0ICYmIGsgPD0gNDUpKSk7XG4gICAgfVxuXG5cbiAgICBnZXRLZXkoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBsZXQgayA9IGUua2V5Q29kZSB8fCBlLmNoYXJDb2RlO1xuICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5nZXRCcm93c2VyKCkuc2FmYXJpID8gKFNBRkFSSV9LRVlTW2tdIHx8IGspIDogaztcbiAgICB9XG5cbiAgICBnZXRDaGFyQ29kZShlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHJldHVybiBlLmNoYXJDb2RlIHx8IGUua2V5Q29kZSB8fCBlLndoaWNoO1xuICAgIH1cblxuICAgIGZpbmREZWx0YSh2YWx1ZTogc3RyaW5nLCBwcmV2VmFsdWU6IHN0cmluZykge1xuICAgICAgICBsZXQgZGVsdGEgPSAnJztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc3RyID0gdmFsdWUuc3Vic3RyKDAsIGkpICsgdmFsdWUuc3Vic3RyKGkgKyB2YWx1ZS5sZW5ndGggLSBwcmV2VmFsdWUubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gcHJldlZhbHVlKVxuICAgICAgICAgICAgICAgIGRlbHRhID0gdmFsdWUuc3Vic3RyKGksIHZhbHVlLmxlbmd0aCAtIHByZXZWYWx1ZS5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlbHRhO1xuICAgIH1cblxuICAgIGlzVmFsaWRDaGFyKGM6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdleC50ZXN0KGMpO1xuICAgIH1cblxuICAgIGlzVmFsaWRTdHJpbmcoc3RyOiBzdHJpbmcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkQ2hhcihzdHIuc3Vic3RyKGksIDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgICBvbklucHV0KGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBbmRyb2lkICYmICF0aGlzLnBWYWxpZGF0ZU9ubHkpIHtcbiAgICAgICAgICAgIGxldCB2YWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICBsZXQgbGFzdFZhbCA9IHRoaXMubGFzdFZhbHVlIHx8ICcnO1xuXG4gICAgICAgICAgICBsZXQgaW5zZXJ0ZWQgPSB0aGlzLmZpbmREZWx0YSh2YWwsIGxhc3RWYWwpO1xuICAgICAgICAgICAgbGV0IHJlbW92ZWQgPSB0aGlzLmZpbmREZWx0YShsYXN0VmFsLCB2YWwpO1xuICAgICAgICAgICAgbGV0IHBhc3RlZCA9IGluc2VydGVkLmxlbmd0aCA+IDEgfHwgKCFpbnNlcnRlZCAmJiAhcmVtb3ZlZCk7XG5cbiAgICAgICAgICAgIGlmIChwYXN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZFN0cmluZyh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IGxhc3RWYWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KGxhc3RWYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFyZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRDaGFyKGluc2VydGVkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0VmFsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdChsYXN0VmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRTdHJpbmcodmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5cHJlc3MnLCBbJyRldmVudCddKVxuICAgIG9uS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0FuZHJvaWQgfHwgdGhpcy5wVmFsaWRhdGVPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnJvd3NlciA9IERvbUhhbmRsZXIuZ2V0QnJvd3NlcigpO1xuICAgICAgICBsZXQgayA9IHRoaXMuZ2V0S2V5KGUpO1xuXG4gICAgICAgIGlmIChicm93c2VyLm1vemlsbGEgJiYgKGUuY3RybEtleSB8fCBlLmFsdEtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrID09IDE3IHx8IGsgPT0gMTgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjID0gdGhpcy5nZXRDaGFyQ29kZShlKTtcbiAgICAgICAgbGV0IGNjID0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgICAgbGV0IG9rID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIWJyb3dzZXIubW96aWxsYSAmJiAodGhpcy5pc1NwZWNpYWxLZXkoZSkgfHwgIWNjKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb2sgPSB0aGlzLnJlZ2V4LnRlc3QoY2MpO1xuXG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcbiAgICBvblBhc3RlKGUpIHtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGUuY2xpcGJvYXJkRGF0YSB8fCAoPGFueT53aW5kb3cpLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xuICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcGFzdGVkVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpO1xuICAgICAgICAgICAgZm9yIChsZXQgY2hhciBvZiBwYXN0ZWRUZXh0LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVnZXgudGVzdChjaGFyKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgaWYgKHRoaXMucFZhbGlkYXRlT25seSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmICF0aGlzLnJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVQYXR0ZXJuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtLZXlGaWx0ZXJdLFxuICAgIGRlY2xhcmF0aW9uczogW0tleUZpbHRlcl1cbn0pXG5leHBvcnQgY2xhc3MgS2V5RmlsdGVyTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/keyfilter/primeng-keyfilter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/keyfilter/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/keyfilter/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1rZXlmaWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMva2V5ZmlsdGVyL3ByaW1lbmcta2V5ZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/keyfilter/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/keyfilter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/keyfilter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './keyfilter';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9rZXlmaWx0ZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4va2V5ZmlsdGVyJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/knob/knob.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/knob/knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/knob/knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,260 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const KNOB_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Knob),
+    multi: true
+};
+export class Knob {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.valueColor = "var(--primary-color, Black)";
+        this.rangeColor = "var(--surface-d, LightGray)";
+        this.textColor = "var(--text-color-secondary, Black)";
+        this.valueTemplate = "{value}";
+        this.size = 100;
+        this.step = 1;
+        this.min = 0;
+        this.max = 100;
+        this.strokeWidth = 14;
+        this.showValue = true;
+        this.readonly = false;
+        this.onChange = new EventEmitter();
+        this.radius = 40;
+        this.midX = 50;
+        this.midY = 50;
+        this.minRadians = 4 * Math.PI / 3;
+        this.maxRadians = -Math.PI / 3;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    mapRange(x, inMin, inMax, outMin, outMax) {
+        return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
+    }
+    onClick(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+        }
+    }
+    updateValue(offsetX, offsetY) {
+        let dx = offsetX - this.size / 2;
+        let dy = this.size / 2 - offsetY;
+        let angle = Math.atan2(dy, dx);
+        let start = -Math.PI / 2 - Math.PI / 6;
+        this.updateModel(angle, start);
+    }
+    updateModel(angle, start) {
+        let mappedValue;
+        if (angle > this.maxRadians)
+            mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);
+        else if (angle < start)
+            mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);
+        else
+            return;
+        let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;
+        this.value = newValue;
+        this.onModelChange(this.value);
+        this.onChange.emit(this.value);
+    }
+    onMouseDown(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowMouseMoveListener = this.onMouseMove.bind(this);
+            this.windowMouseUpListener = this.onMouseUp.bind(this);
+            window.addEventListener('mousemove', this.windowMouseMoveListener);
+            window.addEventListener('mouseup', this.windowMouseUpListener);
+            event.preventDefault();
+        }
+    }
+    onMouseUp(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('mousemove', this.windowMouseMoveListener);
+            window.removeEventListener('mouseup', this.windowMouseUpListener);
+            this.windowMouseUpListener = null;
+            this.windowMouseMoveListener = null;
+            event.preventDefault();
+        }
+    }
+    onTouchStart(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowTouchMoveListener = this.onTouchMove.bind(this);
+            this.windowTouchEndListener = this.onTouchEnd.bind(this);
+            window.addEventListener('touchmove', this.windowTouchMoveListener);
+            window.addEventListener('touchend', this.windowTouchEndListener);
+            event.preventDefault();
+        }
+    }
+    onTouchEnd(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('touchmove', this.windowTouchMoveListener);
+            window.removeEventListener('touchend', this.windowTouchEndListener);
+            this.windowTouchMoveListener = null;
+            this.windowTouchEndListener = null;
+            event.preventDefault();
+        }
+    }
+    onMouseMove(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+            event.preventDefault();
+        }
+    }
+    onTouchMove(event) {
+        if (!this.disabled && !this.readonly && event.touches.length == 1) {
+            const rect = this.el.nativeElement.children[0].getBoundingClientRect();
+            const touch = event.targetTouches.item(0);
+            const offsetX = touch.clientX - rect.left;
+            const offsetY = touch.clientY - rect.top;
+            this.updateValue(offsetX, offsetY);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    containerClass() {
+        return {
+            'p-knob p-component': true,
+            'p-disabled': this.disabled
+        };
+    }
+    rangePath() {
+        return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;
+    }
+    valuePath() {
+        return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;
+    }
+    zeroRadians() {
+        if (this.min > 0 && this.max > 0)
+            return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);
+        else
+            return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    valueRadians() {
+        return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    minX() {
+        return this.midX + Math.cos(this.minRadians) * this.radius;
+    }
+    minY() {
+        return this.midY - Math.sin(this.minRadians) * this.radius;
+    }
+    maxX() {
+        return this.midX + Math.cos(this.maxRadians) * this.radius;
+    }
+    maxY() {
+        return this.midY - Math.sin(this.maxRadians) * this.radius;
+    }
+    zeroX() {
+        return this.midX + Math.cos(this.zeroRadians()) * this.radius;
+    }
+    zeroY() {
+        return this.midY - Math.sin(this.zeroRadians()) * this.radius;
+    }
+    valueX() {
+        return this.midX + Math.cos(this.valueRadians()) * this.radius;
+    }
+    valueY() {
+        return this.midY - Math.sin(this.valueRadians()) * this.radius;
+    }
+    largeArc() {
+        return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;
+    }
+    sweep() {
+        return this.valueRadians() > this.zeroRadians() ? 0 : 1;
+    }
+    valueToDisplay() {
+        return this.valueTemplate.replace("{value}", this._value.toString());
+    }
+    get _value() {
+        return this.value != null ? this.value : this.min;
+    }
+}
+Knob.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Knob.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Knob, selector: "p-knob", inputs: { styleClass: "styleClass", style: "style", severity: "severity", valueColor: "valueColor", rangeColor: "rangeColor", textColor: "textColor", valueTemplate: "valueTemplate", name: "name", size: "size", step: "step", min: "min", max: "max", strokeWidth: "strokeWidth", disabled: "disabled", showValue: "showValue", readonly: "readonly" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [KNOB_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, isInline: true, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-knob', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, providers: [KNOB_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], valueColor: [{
+                type: Input
+            }], rangeColor: [{
+                type: Input
+            }], textColor: [{
+                type: Input
+            }], valueTemplate: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+export class KnobModule {
+}
+KnobModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KnobModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, declarations: [Knob], imports: [CommonModule], exports: [Knob] });
+KnobModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Knob],
+                    declarations: [Knob]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9rbm9iL2tub2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBaUMsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2SyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVuRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBUTtJQUNwQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ25DLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQXNCRixNQUFNLE9BQU8sSUFBSTtJQTREYixZQUFvQixFQUFxQixFQUFVLEVBQWM7UUFBN0MsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBcER4RCxlQUFVLEdBQVcsNkJBQTZCLENBQUM7UUFFbkQsZUFBVSxHQUFXLDZCQUE2QixDQUFDO1FBRW5ELGNBQVMsR0FBVyxvQ0FBb0MsQ0FBQztRQUV6RCxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUlsQyxTQUFJLEdBQVcsR0FBRyxDQUFDO1FBRW5CLFNBQUksR0FBVyxDQUFDLENBQUM7UUFFakIsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUVoQixRQUFHLEdBQVcsR0FBRyxDQUFDO1FBRWxCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBSXpCLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUV6QixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7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RztzQkFBWCxLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTs7QUF3TlgsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkExUFYsSUFBSSxhQXNQSCxZQUFZLGFBdFBiLElBQUk7d0dBMFBKLFVBQVUsWUFKVixDQUFDLFlBQVksQ0FBQzsyRkFJZCxVQUFVO2tCQUx0QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO29CQUNmLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQztpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBmb3J3YXJkUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgS05PQl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEtub2IpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Ata25vYicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIFtzdHlsZS53aWR0aF09XCJzaXplICsgJ3B4J1wiIFtzdHlsZS5oZWlnaHRdPVwic2l6ZSArICdweCdcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCIgKG1vdXNldXApPVwib25Nb3VzZVVwKCRldmVudClcIlxuICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIiAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cInJhbmdlUGF0aCgpXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoXCIgW2F0dHIuc3Ryb2tlXT1cInJhbmdlQ29sb3JcIiBjbGFzcz1cInAta25vYi1yYW5nZVwiPjwvcGF0aD5cbiAgICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwidmFsdWVQYXRoKClcIiBbYXR0ci5zdHJva2Utd2lkdGhdPVwic3Ryb2tlV2lkdGhcIiBbYXR0ci5zdHJva2VdPVwidmFsdWVDb2xvclwiIGNsYXNzPVwicC1rbm9iLXZhbHVlXCI+PC9wYXRoPlxuICAgICAgICAgICAgPHRleHQgKm5nSWY9XCJzaG93VmFsdWVcIiBbYXR0ci54XT1cIjUwXCIgW2F0dHIueV09XCI1N1wiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgW2F0dHIuZmlsbF09XCJ0ZXh0Q29sb3JcIiBjbGFzcz1cInAta25vYi10ZXh0XCIgW2F0dHIubmFtZV09XCJuYW1lXCI+e3t2YWx1ZVRvRGlzcGxheSgpfX08L3RleHQ+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW0tOT0JfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4va25vYi5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLbm9iIHtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzZXZlcml0eTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdmFsdWVDb2xvcjogc3RyaW5nID0gXCJ2YXIoLS1wcmltYXJ5LWNvbG9yLCBCbGFjaylcIjtcblxuICAgIEBJbnB1dCgpIHJhbmdlQ29sb3I6IHN0cmluZyA9IFwidmFyKC0tc3VyZmFjZS1kLCBMaWdodEdyYXkpXCI7XG5cbiAgICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZyA9IFwidmFyKC0tdGV4dC1jb2xvci1zZWNvbmRhcnksIEJsYWNrKVwiO1xuXG4gICAgQElucHV0KCkgdmFsdWVUZW1wbGF0ZTogc3RyaW5nID0gXCJ7dmFsdWV9XCI7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAxMDA7XG5cbiAgICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG5cbiAgICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMTQ7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dWYWx1ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHJhZGl1czogbnVtYmVyID0gNDA7XG5cbiAgICBtaWRYOiBudW1iZXIgPSA1MDtcblxuICAgIG1pZFk6IG51bWJlciA9IDUwO1xuXG4gICAgbWluUmFkaWFuczogbnVtYmVyID0gNCAqIE1hdGguUEkgLyAzO1xuXG4gICAgbWF4UmFkaWFuczogbnVtYmVyID0gLU1hdGguUEkgLyAzO1xuXG4gICAgdmFsdWU6IG51bWJlciA9IG51bGw7XG5cbiAgICB3aW5kb3dNb3VzZU1vdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgd2luZG93TW91c2VVcExpc3RlbmVyOiBhbnk7XG5cbiAgICB3aW5kb3dUb3VjaE1vdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgd2luZG93VG91Y2hFbmRMaXN0ZW5lcjogYW55O1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgbWFwUmFuZ2UoeCwgaW5NaW4sIGluTWF4LCBvdXRNaW4sIG91dE1heCkge1xuICAgICAgICByZXR1cm4gKHggLSBpbk1pbikgKiAob3V0TWF4IC0gb3V0TWluKSAvIChpbk1heCAtIGluTWluKSArIG91dE1pbjtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKG9mZnNldFgsIG9mZnNldFkpIHtcbiAgICAgICAgbGV0IGR4ID0gb2Zmc2V0WCAtIHRoaXMuc2l6ZSAvIDI7XG4gICAgICAgIGxldCBkeSA9ICB0aGlzLnNpemUgLyAyIC0gb2Zmc2V0WTtcbiAgICAgICAgbGV0IGFuZ2xlID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuICAgICAgICBsZXQgc3RhcnQgPSAtTWF0aC5QSSAvIDIgLSBNYXRoLlBJIC8gNjtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbChhbmdsZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1vZGVsKGFuZ2xlLCBzdGFydCkge1xuICAgICAgICBsZXQgbWFwcGVkVmFsdWU7XG4gICAgICAgIGlmIChhbmdsZSA+IHRoaXMubWF4UmFkaWFucylcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlID0gdGhpcy5tYXBSYW5nZShhbmdsZSwgdGhpcy5taW5SYWRpYW5zLCB0aGlzLm1heFJhZGlhbnMsIHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgICAgIGVsc2UgaWYgKGFuZ2xlIDwgc3RhcnQpXG4gICAgICAgICAgICBtYXBwZWRWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoYW5nbGUgKyAyICogTWF0aC5QSSwgdGhpcy5taW5SYWRpYW5zLCB0aGlzLm1heFJhZGlhbnMsIHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBsZXQgbmV3VmFsdWUgPSBNYXRoLnJvdW5kKChtYXBwZWRWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgKiB0aGlzLnN0ZXAgKyB0aGlzLm1pbjtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bihldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93TW91c2VNb3ZlTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcylcbiAgICAgICAgICAgIHRoaXMud2luZG93TW91c2VVcExpc3RlbmVyID0gdGhpcy5vbk1vdXNlVXAuYmluZCh0aGlzKVxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMud2luZG93TW91c2VNb3ZlTGlzdGVuZXIpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLndpbmRvd01vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZVVwKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMud2luZG93TW91c2VNb3ZlTGlzdGVuZXIpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLndpbmRvd01vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLndpbmRvd01vdXNlVXBMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLndpbmRvd01vdXNlTW92ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvd1RvdWNoTW92ZUxpc3RlbmVyID0gdGhpcy5vblRvdWNoTW92ZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy53aW5kb3dUb3VjaEVuZExpc3RlbmVyID0gdGhpcy5vblRvdWNoRW5kLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy53aW5kb3dUb3VjaE1vdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLndpbmRvd1RvdWNoRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hFbmQoZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy53aW5kb3dUb3VjaE1vdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLndpbmRvd1RvdWNoRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy53aW5kb3dUb3VjaE1vdmVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLndpbmRvd1RvdWNoRW5kTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoTW92ZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudGFyZ2V0VG91Y2hlcy5pdGVtKDApO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IHRvdWNoLmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gdG91Y2guY2xpZW50WSAtIHJlY3QudG9wO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLWtub2IgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmFuZ2VQYXRoKCkge1xuICAgICAgICByZXR1cm4gYE0gJHt0aGlzLm1pblgoKX0gJHt0aGlzLm1pblkoKX0gQSAke3RoaXMucmFkaXVzfSAke3RoaXMucmFkaXVzfSAwIDEgMSAke3RoaXMubWF4WCgpfSAke3RoaXMubWF4WSgpfWA7XG4gICAgfVxuXG4gICAgdmFsdWVQYXRoKCkge1xuICAgICAgICByZXR1cm4gYE0gJHt0aGlzLnplcm9YKCl9ICR7dGhpcy56ZXJvWSgpfSBBICR7dGhpcy5yYWRpdXN9ICR7dGhpcy5yYWRpdXN9IDAgJHt0aGlzLmxhcmdlQXJjKCl9ICR7dGhpcy5zd2VlcCgpfSAke3RoaXMudmFsdWVYKCl9ICR7dGhpcy52YWx1ZVkoKX1gO1xuICAgIH1cblxuICAgIHplcm9SYWRpYW5zKCkge1xuICAgICAgICBpZiAodGhpcy5taW4gPiAwICYmIHRoaXMubWF4ID4gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcFJhbmdlKHRoaXMubWluLCB0aGlzLm1pbiwgdGhpcy5tYXgsIHRoaXMubWluUmFkaWFucywgdGhpcy5tYXhSYWRpYW5zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwUmFuZ2UoMCwgdGhpcy5taW4sIHRoaXMubWF4LCB0aGlzLm1pblJhZGlhbnMsIHRoaXMubWF4UmFkaWFucyk7XG4gICAgfVxuXG4gICAgdmFsdWVSYWRpYW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBSYW5nZSh0aGlzLl92YWx1ZSwgdGhpcy5taW4sIHRoaXMubWF4LCB0aGlzLm1pblJhZGlhbnMsIHRoaXMubWF4UmFkaWFucyk7XG4gICAgfVxuXG4gICAgbWluWCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlkWCArIE1hdGguY29zKHRoaXMubWluUmFkaWFucykgKiB0aGlzLnJhZGl1cztcbiAgICB9XG5cbiAgICBtaW5ZKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWRZIC0gTWF0aC5zaW4odGhpcy5taW5SYWRpYW5zKSAqIHRoaXMucmFkaXVzO1xuICAgIH1cblxuICAgIG1heFgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pZFggKyBNYXRoLmNvcyh0aGlzLm1heFJhZGlhbnMpICogdGhpcy5yYWRpdXM7XG4gICAgfVxuXG4gICAgbWF4WSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlkWSAtIE1hdGguc2luKHRoaXMubWF4UmFkaWFucykgKiB0aGlzLnJhZGl1cztcbiAgICB9XG5cbiAgICB6ZXJvWCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlkWCArIE1hdGguY29zKHRoaXMuemVyb1JhZGlhbnMoKSkgKiB0aGlzLnJhZGl1cztcbiAgICB9XG5cbiAgICB6ZXJvWSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlkWSAtIE1hdGguc2luKHRoaXMuemVyb1JhZGlhbnMoKSkgKiB0aGlzLnJhZGl1cztcbiAgICB9XG5cbiAgICB2YWx1ZVgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pZFggKyBNYXRoLmNvcyh0aGlzLnZhbHVlUmFkaWFucygpKSAqIHRoaXMucmFkaXVzO1xuICAgIH1cblxuICAgIHZhbHVlWSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlkWSAtIE1hdGguc2luKHRoaXMudmFsdWVSYWRpYW5zKCkpICogdGhpcy5yYWRpdXM7XG4gICAgfVxuXG4gICAgbGFyZ2VBcmMoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLnplcm9SYWRpYW5zKCkgLSB0aGlzLnZhbHVlUmFkaWFucygpKSA8IE1hdGguUEkgPyAwIDogMTtcbiAgICB9XG5cbiAgICBzd2VlcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVSYWRpYW5zKCkgPiB0aGlzLnplcm9SYWRpYW5zKCkgPyAwIDogMTtcbiAgICB9XG5cbiAgICB2YWx1ZVRvRGlzcGxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVUZW1wbGF0ZS5yZXBsYWNlKFwie3ZhbHVlfVwiLCB0aGlzLl92YWx1ZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBnZXQgX3ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGwgPyB0aGlzLnZhbHVlIDogdGhpcy5taW47XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtLbm9iXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtLbm9iXVxufSlcbmV4cG9ydCBjbGFzcyBLbm9iTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/knob/primeng-knob.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/knob/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/knob/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1rbm9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2tub2IvcHJpbWVuZy1rbm9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/knob/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/knob/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/knob/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './knob';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9rbm9iL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2tub2InOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/lightbox/lightbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/lightbox/lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/lightbox/lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,260 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Lightbox {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.type = 'image';
+        this.effectDuration = '500ms';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.closeOnEscape = true;
+    }
+    onImageClick(event, image, i, content) {
+        this.index = i;
+        this.loading = true;
+        content.style.width = 32 + 'px';
+        content.style.height = 32 + 'px';
+        this.preventDocumentClickListener = true;
+        this.show();
+        this.displayImage(image);
+        event.preventDefault();
+    }
+    ngAfterViewInit() {
+        this.panel = DomHandler.findSingle(this.el.nativeElement, '.ui-lightbox ');
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.panel);
+            else
+                DomHandler.appendChild(this.panel, this.appendTo);
+        }
+    }
+    onLinkClick(event, content) {
+        this.preventDocumentClickListener = true;
+        this.show();
+        event.preventDefault();
+    }
+    displayImage(image) {
+        setTimeout(() => {
+            this.cd.markForCheck();
+            this.currentImage = image;
+            this.captionText = image.title;
+            this.center();
+        }, 1000);
+    }
+    show() {
+        this.mask = document.createElement('div');
+        DomHandler.addMultipleClasses(this.mask, 'ui-widget-overlay ui-dialog-mask');
+        document.body.appendChild(this.mask);
+        if (this.autoZIndex) {
+            this.zindex = this.baseZIndex + (++DomHandler.zindex);
+        }
+        this.mask.style.zIndex = this.zindex - 1;
+        this.center();
+        this.visible = true;
+        this.bindGlobalListeners();
+    }
+    hide(event) {
+        this.captionText = null;
+        this.index = null;
+        this.currentImage = null;
+        this.visible = false;
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+            this.mask = null;
+        }
+        this.unbindGlobalListeners();
+        event.preventDefault();
+    }
+    center() {
+        let elementWidth = DomHandler.getOuterWidth(this.panel);
+        let elementHeight = DomHandler.getOuterHeight(this.panel);
+        if (elementWidth == 0 && elementHeight == 0) {
+            this.panel.style.visibility = 'hidden';
+            this.panel.style.display = 'block';
+            elementWidth = DomHandler.getOuterWidth(this.panel);
+            elementHeight = DomHandler.getOuterHeight(this.panel);
+            this.panel.style.display = 'none';
+            this.panel.style.visibility = 'visible';
+        }
+    }
+    onImageLoad(event, content) {
+        let image = event.target;
+        image.style.visibility = 'hidden';
+        image.style.display = 'block';
+        let imageWidth = DomHandler.getOuterWidth(image);
+        let imageHeight = DomHandler.getOuterHeight(image);
+        image.style.display = 'none';
+        image.style.visibility = 'visible';
+        content.style.width = imageWidth + 'px';
+        content.style.height = imageHeight + 'px';
+        this.panel.style.left = parseInt(this.panel.style.left) + (DomHandler.getOuterWidth(this.panel) - imageWidth) / 2 + 'px';
+        this.panel.style.top = parseInt(this.panel.style.top) + (DomHandler.getOuterHeight(this.panel) - imageHeight) / 2 + 'px';
+        setTimeout(() => {
+            this.cd.markForCheck();
+            DomHandler.fadeIn(image, 500);
+            image.style.display = 'block';
+            //this.captionText = this.currentImage.title;
+            this.loading = false;
+        }, parseInt(this.effectDuration));
+    }
+    prev(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index > 0) {
+            this.displayImage(this.images[--this.index]);
+        }
+    }
+    next(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index <= (this.images.length - 1)) {
+            this.displayImage(this.images[++this.index]);
+        }
+    }
+    bindGlobalListeners() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+            if (!this.preventDocumentClickListener && this.visible) {
+                this.hide(event);
+            }
+            this.preventDocumentClickListener = false;
+            this.cd.markForCheck();
+        });
+        if (this.closeOnEscape && !this.documentEscapeListener) {
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27) {
+                    if (parseInt(this.panel.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                        this.hide(event);
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    get leftVisible() {
+        return this.images && this.images.length && this.index != 0 && !this.loading;
+    }
+    get rightVisible() {
+        return this.images && this.images.length && this.index < (this.images.length - 1) && !this.loading;
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.panel);
+        }
+    }
+}
+Lightbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Lightbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Lightbox, selector: "p-lightbox", inputs: { images: "images", type: "type", style: "style", styleClass: "styleClass", appendTo: "appendTo", easing: "easing", effectDuration: "effectDuration", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", closeOnEscape: "closeOnEscape" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, isInline: true, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-lightbox', template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { images: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }] } });
+export class LightboxModule {
+}
+LightboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+LightboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, declarations: [Lightbox], imports: [CommonModule], exports: [Lightbox] });
+LightboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Lightbox],
+                    declarations: [Lightbox]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlnaHRib3gvbGlnaHRib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFxRCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7O0FBMkN2QyxNQUFNLE9BQU8sUUFBUTtJQTRDakIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CLEVBQVMsRUFBcUI7UUFBeEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXhDbEYsU0FBSSxHQUFXLE9BQU8sQ0FBQztRQVV2QixtQkFBYyxHQUFRLE9BQU8sQ0FBQztRQUU5QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTNCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFdkIsa0JBQWEsR0FBWSxJQUFJLENBQUM7SUF3QnVELENBQUM7SUFFL0YsWUFBWSxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLE9BQU87UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJ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QUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakQ7SUFDTCxDQUFDOztxR0FyTlEsUUFBUTt5RkFBUixRQUFRLDZVQXZDUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTRCVDsyRkFXUSxRQUFRO2tCQXpDcEIsU0FBUzsrQkFDSSxZQUFZLFlBQ1o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E0QlQsbUJBQ2dCLHVCQUF1QixDQUFDLE9BQU8saUJBQ2pDLGlCQUFpQixDQUFDLElBQUksUUFLL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO3lKQUlRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSzs7QUEwTVYsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkE5TmQsUUFBUSxhQTBOUCxZQUFZLGFBMU5iLFFBQVE7NEdBOE5SLGNBQWMsWUFKZCxDQUFDLFlBQVksQ0FBQzsyRkFJZCxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO29CQUNuQixZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixJbnB1dCxSZW5kZXJlcjIsQWZ0ZXJWaWV3SW5pdCxPbkRlc3Ryb3ksQ2hhbmdlRGV0ZWN0b3JSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1saWdodGJveCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKm5nSWY9XCIodHlwZSA9PSAnaW1hZ2UnKVwiPlxuICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleDtcIiBbaHJlZl09XCJpbWFnZS5zb3VyY2VcIiAoY2xpY2spPVwib25JbWFnZUNsaWNrKCRldmVudCxpbWFnZSxpLGNvbnRlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlLnRodW1ibmFpbFwiIFt0aXRsZV09XCJpbWFnZS50aXRsZVwiIFthbHRdPVwiaW1hZ2UuYWx0XCI+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKm5nSWY9XCIodHlwZSA9PSAnY29udGVudCcpXCIgKGNsaWNrKT1cIm9uTGlua0NsaWNrKCRldmVudCxjb250ZW50KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktbGlnaHRib3ggdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktc2hhZG93XCIgW3N0eWxlLmRpc3BsYXldPVwidmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcIiBbc3R5bGUuekluZGV4XT1cInppbmRleFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VpLWxpZ2h0Ym94LWxvYWRpbmcnOiBsb2FkaW5nfVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNpdGlvblByb3BlcnR5XT1cIidhbGwnXCIgW3N0eWxlLnRyYW5zaXRpb25EdXJhdGlvbl09XCJlZmZlY3REdXJhdGlvblwiIFtzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb25dPVwiZWFzaW5nXCIgKGNsaWNrKT1cInByZXZlbnREb2N1bWVudENsaWNrTGlzdGVuZXI9dHJ1ZVwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktbGlnaHRib3gtY29udGVudC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwidWktc3RhdGUtZGVmYXVsdCB1aS1saWdodGJveC1uYXYtbGVmdCB1aS1jb3JuZXItcmlnaHRcIiBbc3R5bGUuekluZGV4XT1cInppbmRleCArIDFcIiAoY2xpY2spPVwicHJldihpbWcpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VpLWhlbHBlci1oaWRkZW4nOiFsZWZ0VmlzaWJsZX1cIj48c3BhbiBjbGFzcz1cInVpLWxpZ2h0Ym94LW5hdi1pY29uIHBpIHBpLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgIDxkaXYgI2NvbnRlbnQgY2xhc3M9XCJ1aS1saWdodGJveC1jb250ZW50IHVpLWNvcm5lci1hbGxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uUHJvcGVydHldPVwiJ3dpZHRoLGhlaWdodCdcIiBbc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uXT1cImVmZmVjdER1cmF0aW9uXCIgW3N0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbl09XCJlYXNpbmdcIj5cbiAgICAgICAgICAgICAgICA8aW1nICNpbWcgW3NyY109XCJjdXJyZW50SW1hZ2UgPyBjdXJyZW50SW1hZ2Uuc291cmNlfHwnJyA6ICcnXCIgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50LGNvbnRlbnQpXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cInVpLXN0YXRlLWRlZmF1bHQgdWktbGlnaHRib3gtbmF2LXJpZ2h0IHVpLWNvcm5lci1sZWZ0IHVpLWhlbHBlci1oaWRkZW5cIiBbc3R5bGUuekluZGV4XT1cInppbmRleCArIDFcIiAoY2xpY2spPVwibmV4dChpbWcpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VpLWhlbHBlci1oaWRkZW4nOiFyaWdodFZpc2libGV9XCI+PHNwYW4gY2xhc3M9XCJ1aS1saWdodGJveC1uYXYtaWNvbiBwaSBwaS1jaGV2cm9uLXJpZ2h0XCI+PC9zcGFuPjwvYT5cbiAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1saWdodGJveC1jYXB0aW9uIHVpLXdpZGdldC1oZWFkZXJcIiBbc3R5bGUuZGlzcGxheV09XCJjYXB0aW9uVGV4dCA/ICdibG9jaycgOiAnbm9uZSdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1aS1saWdodGJveC1jYXB0aW9uLXRleHRcIj57e2NhcHRpb25UZXh0fX08L3NwYW4+PGEgY2xhc3M9XCJ1aS1saWdodGJveC1jbG9zZSB1aS1jb3JuZXItYWxsXCIgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cImhpZGUoJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImhpZGUoJGV2ZW50KVwiPjxzcGFuIGNsYXNzPVwicGkgcGktdGltZXNcIj48L3NwYW4+PC9hPlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiY2xlYXI6Ym90aFwiPjwvZGl2PlxuICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFtcbiAgICAgICAgJy4vbGlnaHRib3guY3NzJyxcbiAgICAgICAgJy4uL2RpYWxvZy9kaWFsb2cuY3NzJ1xuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTGlnaHRib3ggaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBpbWFnZXM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ2ltYWdlJztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgZWFzaW5nOiAnZWFzZS1vdXQnO1xuXG4gICAgQElucHV0KCkgZWZmZWN0RHVyYXRpb246IGFueSA9ICc1MDBtcyc7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBjbG9zZU9uRXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xuXG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY3VycmVudEltYWdlOiBhbnk7XG5cbiAgICBwdWJsaWMgY2FwdGlvblRleHQ6IHN0cmluZztcblxuICAgIHB1YmxpYyB6aW5kZXg6IGFueTtcblxuICAgIHB1YmxpYyBwYW5lbDogYW55O1xuXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgbWFzazogYW55O1xuXG4gICAgcHVibGljIHByZXZlbnREb2N1bWVudENsaWNrTGlzdGVuZXI6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBwdWJsaWMgZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uSW1hZ2VDbGljayhldmVudCxpbWFnZSxpLGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pbmRleCA9IGk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnRlbnQuc3R5bGUud2lkdGggPSAzMiArICdweCc7XG4gICAgICAgIGNvbnRlbnQuc3R5bGUuaGVpZ2h0ID0gMzIgKyAncHgnO1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW1hZ2UoaW1hZ2UpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5wYW5lbCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICcudWktbGlnaHRib3ggJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnBhbmVsKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMucGFuZWwsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25MaW5rQ2xpY2soZXZlbnQsY29udGVudCkge1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5SW1hZ2UoaW1hZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICAgIHRoaXMuY2FwdGlvblRleHQgPSBpbWFnZS50aXRsZTtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMubWFzayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgIERvbUhhbmRsZXIuYWRkTXVsdGlwbGVDbGFzc2VzKHRoaXMubWFzaywgJ3VpLXdpZGdldC1vdmVybGF5IHVpLWRpYWxvZy1tYXNrJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tYXNrKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgdGhpcy56aW5kZXggPSB0aGlzLmJhc2VaSW5kZXggKyAoKytEb21IYW5kbGVyLnppbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXNrLnN0eWxlLnpJbmRleCA9IHRoaXMuemluZGV4IC0gMTtcbiAgICAgICAgdGhpcy5jZW50ZXIoKTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgaGlkZShldmVudCkge1xuICAgICAgICB0aGlzLmNhcHRpb25UZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbmRleCA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudEltYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLm1hc2spO1xuICAgICAgICAgICAgdGhpcy5tYXNrID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2VudGVyKCkge1xuICAgICAgICBsZXQgZWxlbWVudFdpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMucGFuZWwpO1xuICAgICAgICBsZXQgZWxlbWVudEhlaWdodCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5wYW5lbCk7XG4gICAgICAgIGlmIChlbGVtZW50V2lkdGggPT0gMCAmJiBlbGVtZW50SGVpZ2h0ID09IDApIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIGVsZW1lbnRXaWR0aCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLnBhbmVsKTtcbiAgICAgICAgICAgIGVsZW1lbnRIZWlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbWFnZUxvYWQoZXZlbnQsY29udGVudCkge1xuICAgICAgICBsZXQgaW1hZ2UgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGltYWdlLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgaW1hZ2Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgIGxldCBpbWFnZVdpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKGltYWdlKTtcbiAgICAgICAgbGV0IGltYWdlSGVpZ2h0ID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodChpbWFnZSk7XG4gICAgICAgIGltYWdlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIGltYWdlLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG5cbiAgICAgICAgY29udGVudC5zdHlsZS53aWR0aCA9IGltYWdlV2lkdGggKyAncHgnO1xuICAgICAgICBjb250ZW50LnN0eWxlLmhlaWdodCA9IGltYWdlSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS5sZWZ0ID0gcGFyc2VJbnQodGhpcy5wYW5lbC5zdHlsZS5sZWZ0KSArIChEb21IYW5kbGVyLmdldE91dGVyV2lkdGgodGhpcy5wYW5lbCkgLSBpbWFnZVdpZHRoKSAvIDIgKyAncHgnO1xuICAgICAgICB0aGlzLnBhbmVsLnN0eWxlLnRvcCA9IHBhcnNlSW50KHRoaXMucGFuZWwuc3R5bGUudG9wKSArIChEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMucGFuZWwpIC0gaW1hZ2VIZWlnaHQpIC8gMiArICdweCc7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5mYWRlSW4oaW1hZ2UsIDUwMCk7XG4gICAgICAgICAgICBpbWFnZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIC8vdGhpcy5jYXB0aW9uVGV4dCA9IHRoaXMuY3VycmVudEltYWdlLnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sIHBhcnNlSW50KHRoaXMuZWZmZWN0RHVyYXRpb24pKTtcbiAgICB9XG5cbiAgICBwcmV2KHBsYWNlaG9sZGVyOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jYXB0aW9uVGV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHBsYWNlaG9sZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW1hZ2UodGhpcy5pbWFnZXNbLS10aGlzLmluZGV4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KHBsYWNlaG9sZGVyOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jYXB0aW9uVGV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHBsYWNlaG9sZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIGlmICh0aGlzLmluZGV4IDw9ICh0aGlzLmltYWdlcy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW1hZ2UodGhpcy5pbWFnZXNbKyt0aGlzLmluZGV4XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kR2xvYmFsTGlzdGVuZXJzKCkge1xuICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wcmV2ZW50RG9jdW1lbnRDbGlja0xpc3RlbmVyICYmIHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudENsaWNrTGlzdGVuZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uRXNjYXBlICYmICF0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMjcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHRoaXMucGFuZWwuc3R5bGUuekluZGV4KSA9PT0gKERvbUhhbmRsZXIuemluZGV4ICsgdGhpcy5iYXNlWkluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kR2xvYmFsTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyKXtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBsZWZ0VmlzaWJsZSgpOmJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXMgJiYgdGhpcy5pbWFnZXMubGVuZ3RoICYmIHRoaXMuaW5kZXggIT0gMCAmJiAhdGhpcy5sb2FkaW5nO1xuICAgIH1cblxuICAgIGdldCByaWdodFZpc2libGUoKTpib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VzICYmIHRoaXMuaW1hZ2VzLmxlbmd0aCAmJiB0aGlzLmluZGV4IDwgKHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDEpICYmICF0aGlzLmxvYWRpbmc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnBhbmVsKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtMaWdodGJveF0sXG4gICAgZGVjbGFyYXRpb25zOiBbTGlnaHRib3hdXG59KVxuZXhwb3J0IGNsYXNzIExpZ2h0Ym94TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/lightbox/primeng-lightbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/lightbox/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/lightbox/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1saWdodGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saWdodGJveC9wcmltZW5nLWxpZ2h0Ym94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/lightbox/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/lightbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/lightbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './lightbox';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saWdodGJveC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWdodGJveCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/listbox/listbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/listbox/listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/listbox/listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,697 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ContentChild, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate, Footer, Header, TranslationKeys } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { ObjectUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+export const LISTBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Listbox),
+    multi: true
+};
+export class Listbox {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.checkbox = false;
+        this.filter = false;
+        this.filterMatchMode = 'contains';
+        this.metaKeySelection = true;
+        this.showToggleAll = true;
+        this.optionGroupChildren = "items";
+        this.onChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onDblClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        if (this.hasFilter())
+            this.activateFilter();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.checkbox)
+                this.onOptionClickCheckbox(event, option);
+            else
+                this.onOptionClickMultiple(event, option);
+        }
+        else {
+            this.onOptionClickSingle(event, option);
+        }
+        this.onClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+        this.optionTouched = false;
+    }
+    onOptionTouchEnd(option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.optionTouched = true;
+    }
+    onOptionDoubleClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.onDblClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+    }
+    onOptionClickSingle(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.value = null;
+                    valueChanged = true;
+                }
+            }
+            else {
+                this.value = this.getOptionValue(option);
+                valueChanged = true;
+            }
+        }
+        else {
+            this.value = selected ? null : this.getOptionValue(option);
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickMultiple(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.removeOption(option);
+                }
+                else {
+                    this.value = [this.getOptionValue(option)];
+                }
+                valueChanged = true;
+            }
+            else {
+                this.value = (metaKey) ? this.value || [] : [];
+                this.value = [...this.value, this.getOptionValue(option)];
+                valueChanged = true;
+            }
+        }
+        else {
+            if (selected) {
+                this.removeOption(option);
+            }
+            else {
+                this.value = [...this.value || [], this.getOptionValue(option)];
+            }
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickCheckbox(event, option) {
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        let selected = this.isSelected(option);
+        if (selected) {
+            this.removeOption(option);
+        }
+        else {
+            this.value = this.value ? this.value : [];
+            this.value = [...this.value, this.getOptionValue(option)];
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);
+        }
+        return selected;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    isEmpty(optionsToDisplay) {
+        return !optionsToDisplay || (optionsToDisplay && optionsToDisplay.length === 0);
+    }
+    onFilter(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this._options.filter(option => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    onOptionKeyDown(event, option) {
+        if (this.readonly) {
+            return;
+        }
+        let item = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Listbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Listbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Listbox, selector: "p-listbox", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", listStyle: "listStyle", listStyleClass: "listStyleClass", readonly: "readonly", disabled: "disabled", checkbox: "checkbox", filter: "filter", filterMatchMode: "filterMatchMode", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dataKey: "dataKey", showToggleAll: "showToggleAll", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", optionDisabled: "optionDisabled", ariaFilterLabel: "ariaFilterLabel", filterPlaceHolder: "filterPlaceHolder", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", group: "group", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick" }, host: { classAttribute: "p-element" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerchkbox"], descendants: true }], ngImport: i0, template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, isInline: true, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-listbox', template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], listStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], checkbox: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onDblClick: [{
+                type: Output
+            }], headerCheckboxViewChild: [{
+                type: ViewChild,
+                args: ['headerchkbox']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+export class ListboxModule {
+}
+ListboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ListboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule], exports: [Listbox, SharedModule] });
+ListboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Listbox, SharedModule],
+                    declarations: [Listbox]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9CLGVBQWUsRUFBRSxZQUFZLEVBQXlCLFVBQVUsRUFBcUIsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5USxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBaUIsZUFBZSxFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUN6SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFHOUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQVE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUErRUYsTUFBTSxPQUFPLE9BQU87SUFrR2hCLFlBQW1CLEVBQWMsRUFBUyxFQUFxQixFQUFTLGFBQTRCLEVBQVMsTUFBcUI7UUFBL0csT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBbEZ6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LENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7b0JBQ2hDLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLGZvcndhcmRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIFByaW1lVGVtcGxhdGUsIEZvb3RlciwgSGVhZGVyLCBGaWx0ZXJTZXJ2aWNlLCBUcmFuc2xhdGlvbktleXMsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgTElTVEJPWF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpc3Rib3gpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbGlzdGJveCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC1saXN0Ym94IHAtY29tcG9uZW50JzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyRmFjZXQgfHwgaGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWhlYWRlclwiICpuZ0lmPVwiKGNoZWNrYm94ICYmIG11bHRpcGxlICYmIHNob3dUb2dnbGVBbGwpIHx8IGZpbHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveCBwLWNvbXBvbmVudFwiICpuZ0lmPVwiY2hlY2tib3ggJiYgbXVsdGlwbGUgJiYgc2hvd1RvZ2dsZUFsbFwiIFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHRvZ2dsZUFsbERpc2FibGVkfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIFtjaGVja2VkXT1cImFsbENoZWNrZWRcIiAoZm9jdXMpPVwib25IZWFkZXJDaGVja2JveEZvY3VzKClcIiAoYmx1cik9XCJvbkhlYWRlckNoZWNrYm94Qmx1cigpXCIgKGtleWRvd24uc3BhY2UpPVwidG9nZ2xlQWxsKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdG9nZ2xlQWxsRGlzYWJsZWRcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICNoZWFkZXJjaGtib3ggY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOiBhbGxDaGVja2VkLCAncC1mb2N1cyc6IGhlYWRlckNoZWNrYm94Rm9jdXMsICdwLWRpc2FibGVkJzogZGlzYWJsZWQgfHwgdG9nZ2xlQWxsRGlzYWJsZWR9XCIgKGNsaWNrKT1cInRvZ2dsZUFsbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInsncGkgcGktY2hlY2snOmFsbENoZWNrZWR9XCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtbGlzdGJveC1maWx0ZXItY29udGFpbmVyXCIgKm5nSWY9XCJmaWx0ZXJcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwiZmlsdGVyVmFsdWV8fCcnXCIgKGlucHV0KT1cIm9uRmlsdGVyKCRldmVudClcIiBjbGFzcz1cInAtbGlzdGJveC1maWx0ZXIgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJmaWx0ZXJQbGFjZUhvbGRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUZpbHRlckxhYmVsXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWxpc3Rib3gtZmlsdGVyLWljb24gcGkgcGktc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbbmdDbGFzc109XCIncC1saXN0Ym94LWxpc3Qtd3JhcHBlcidcIiBbbmdTdHlsZV09XCJsaXN0U3R5bGVcIiBbY2xhc3NdPVwibGlzdFN0eWxlQ2xhc3NcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwicC1saXN0Ym94LWxpc3RcIiByb2xlPVwibGlzdGJveFwiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwibXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0Z3JvdXAgW25nRm9yT2ZdPVwib3B0aW9uc1RvUmVuZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtbGlzdGJveC1pdGVtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cFRlbXBsYXRlXCI+e3tnZXRPcHRpb25Hcm91cExhYmVsKG9wdGdyb3VwKXx8J2VtcHR5J319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbXNsaXN0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBnZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGdyb3VwKX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtc2xpc3Q7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbnNUb1JlbmRlcn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtc2xpc3QgbGV0LW9wdGlvbnNUb0Rpc3BsYXk+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1RvRGlzcGxheTsgbGV0IGkgPSBpbmRleDtcIiBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCB8fCBpc09wdGlvbkRpc2FibGVkKG9wdGlvbikgPyBudWxsIDogJzAnXCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtbGlzdGJveC1pdGVtJzp0cnVlLCdwLWhpZ2hsaWdodCc6aXNTZWxlY3RlZChvcHRpb24pLCAncC1kaXNhYmxlZCc6IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pfVwiIHJvbGU9XCJvcHRpb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldE9wdGlvbkxhYmVsKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiIChjbGljayk9XCJvbk9wdGlvbkNsaWNrKCRldmVudCxvcHRpb24pXCIgKGRibGNsaWNrKT1cIm9uT3B0aW9uRG91YmxlQ2xpY2soJGV2ZW50LG9wdGlvbilcIiAodG91Y2hlbmQpPVwib25PcHRpb25Ub3VjaEVuZChvcHRpb24pXCIgKGtleWRvd24pPVwib25PcHRpb25LZXlEb3duKCRldmVudCxvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgKm5nSWY9XCJjaGVja2JveCAmJiBtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOmlzU2VsZWN0ZWQob3B0aW9uKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInsncGkgcGktY2hlY2snOmlzU2VsZWN0ZWQob3B0aW9uKX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZVwiPnt7Z2V0T3B0aW9uTGFiZWwob3B0aW9uKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRpb24sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiaGFzRmlsdGVyKCkgJiYgaXNFbXB0eShvcHRpb25zVG9EaXNwbGF5KVwiIGNsYXNzPVwicC1saXN0Ym94LWVtcHR5LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eUZpbHRlclRlbXBsYXRlICYmICFlbXB0eVRlbXBsYXRlOyBlbHNlIGVtcHR5RmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VtcHR5RmlsdGVyTWVzc2FnZUxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5RmlsdGVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJUZW1wbGF0ZSB8fCBlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhaGFzRmlsdGVyKCkgJiYgaXNFbXB0eShvcHRpb25zVG9EaXNwbGF5KVwiIGNsYXNzPVwicC1saXN0Ym94LWVtcHR5LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eVRlbXBsYXRlOyBlbHNlIGVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VtcHR5TWVzc2FnZUxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI2VtcHR5ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyRmFjZXQgfHwgZm9vdGVyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gICAgcHJvdmlkZXJzOiBbTElTVEJPWF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9saXN0Ym94LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3ggaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGlzdFN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBsaXN0U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogc3RyaW5nID0gJ2NvbnRhaW5zJztcblxuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWV0YUtleVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaG93VG9nZ2xlQWxsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBDaGlsZHJlbjogc3RyaW5nID0gXCJpdGVtc1wiO1xuXG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFGaWx0ZXJMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyUGxhY2VIb2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVtcHR5RmlsdGVyTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBncm91cDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25EYmxDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdoZWFkZXJjaGtib3gnKSBoZWFkZXJDaGVja2JveFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGQoSGVhZGVyKSBoZWFkZXJGYWNldDtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXJGYWNldDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIHB1YmxpYyBfb3B0aW9uczogYW55W107XG5cbiAgICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgZW1wdHlGaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBlbXB0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIF9maWx0ZXJWYWx1ZTogc3RyaW5nO1xuXG4gICAgcHVibGljIF9maWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xuXG4gICAgcHVibGljIGZpbHRlcmVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gICAgcHVibGljIG9wdGlvblRvdWNoZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZm9jdXM6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgaGVhZGVyQ2hlY2tib3hGb2N1czogYm9vbGVhbjtcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7IH1cblxuICAgIEBJbnB1dCgpIGdldCBvcHRpb25zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgc2V0IG9wdGlvbnModmFsOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0ZpbHRlcigpKVxuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUZpbHRlcigpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBmaWx0ZXJWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyVmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IGZpbHRlclZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlID0gdmFsO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eUZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiAob3B0aW9uLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4gPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwQ2hpbGRyZW4pIDogb3B0aW9uR3JvdXAuaXRlbXM7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwTGFiZWwpIDogKG9wdGlvbkdyb3VwLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbkdyb3VwLmxhYmVsIDogb3B0aW9uR3JvdXApO1xuICAgIH1cblxuICAgIGdldE9wdGlvblZhbHVlKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogKHRoaXMub3B0aW9uTGFiZWwgfHwgb3B0aW9uLnZhbHVlID09PSB1bmRlZmluZWQgPyBvcHRpb24gOiBvcHRpb24udmFsdWUpO1xuICAgIH1cblxuICAgIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uRGlzYWJsZWQgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25EaXNhYmxlZCkgOiAob3B0aW9uLmRpc2FibGVkICE9PSB1bmRlZmluZWQgPyBvcHRpb24uZGlzYWJsZWQgOiBmYWxzZSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25PcHRpb25DbGljayhldmVudDogRXZlbnQsIG9wdGlvbjogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja2JveClcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQ2xpY2tDaGVja2JveChldmVudCwgb3B0aW9uKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQ2xpY2tNdWx0aXBsZShldmVudCwgb3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25DbGlja1NpbmdsZShldmVudCwgb3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3B0aW9uVG91Y2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uT3B0aW9uVG91Y2hFbmQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcHRpb25Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbkRvdWJsZUNsaWNrKGV2ZW50OiBFdmVudCwgb3B0aW9uOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uRGJsQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBvbk9wdGlvbkNsaWNrU2luZ2xlKGV2ZW50LCBvcHRpb24pIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdGlvbik7XG4gICAgICAgIGxldCB2YWx1ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLm9wdGlvblRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkID8gbnVsbCA6IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uQ2xpY2tNdWx0aXBsZShldmVudCwgb3B0aW9uKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pO1xuICAgICAgICBsZXQgdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGxldCBtZXRhU2VsZWN0aW9uID0gdGhpcy5vcHRpb25Ub3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG5cbiAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGlmIChtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlT3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gW3RoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gKG1ldGFLZXkpID8gdGhpcy52YWx1ZSB8fCBbXSA6IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSB8fCBbXSwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcHRpb25DbGlja0NoZWNrYm94KGV2ZW50LCBvcHRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZU9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogW107XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZU9wdGlvbihvcHRpb246IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIodmFsID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMuZGF0YUtleSkpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGxldCBvcHRpb25WYWx1ZSA9IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuZXF1YWxzKHZhbCwgb3B0aW9uVmFsdWUsIHRoaXMuZGF0YUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSBPYmplY3RVdGlscy5lcXVhbHModGhpcy52YWx1ZSwgb3B0aW9uVmFsdWUsIHRoaXMuZGF0YUtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGFsbENoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBvcHRpb25zVG9SZW5kZXIgPSB0aGlzLm9wdGlvbnNUb1JlbmRlcjtcbiAgICAgICAgaWYgKCFvcHRpb25zVG9SZW5kZXIgfHwgb3B0aW9uc1RvUmVuZGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCA9IDA7XG4gICAgICAgICAgICBsZXQgdW5zZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlT3B0aW9uc0xlbmd0aCA9IHRoaXMuZ3JvdXAgPyAwIDogdGhpcy5vcHRpb25zVG9SZW5kZXIubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Ygb3B0aW9uc1RvUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBvcHQgb2YgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREaXNhYmxlZEl0ZW1zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVuYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlT3B0aW9uc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKHZpc2libGVPcHRpb25zTGVuZ3RoID09PSBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgfHwgdmlzaWJsZU9wdGlvbnNMZW5ndGggPT09IHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIHx8wqBzZWxlY3RlZEVuYWJsZWRJdGVtc0xlbmd0aCAmJiB2aXNpYmxlT3B0aW9uc0xlbmd0aCA9PT0gKHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoICsgdW5zZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGggKyBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBvcHRpb25zVG9SZW5kZXIoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRPcHRpb25zIHx8IHRoaXMub3B0aW9ucztcbiAgICB9XG5cblxuICAgIGdldCBlbXB0eU1lc3NhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU1lc3NhZ2UgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkVNUFRZX01FU1NBR0UpO1xuICAgIH1cblxuICAgIGdldCBlbXB0eUZpbHRlck1lc3NhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbXB0eUZpbHRlck1lc3NhZ2UgfHwgdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkVNUFRZX0ZJTFRFUl9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBoYXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZSAmJiB0aGlzLl9maWx0ZXJWYWx1ZS50cmltKCkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0VtcHR5KG9wdGlvbnNUb0Rpc3BsYXkpIHtcbiAgICAgICAgcmV0dXJuICFvcHRpb25zVG9EaXNwbGF5IHx8IChvcHRpb25zVG9EaXNwbGF5ICYmIG9wdGlvbnNUb0Rpc3BsYXkubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZSA9ICg8SFRNTElucHV0RWxlbWVudD4gZXZlbnQudGFyZ2V0KS52YWx1ZTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUZpbHRlcigpO1xuICAgIH1cblxuICAgIGFjdGl2YXRlRmlsdGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oYXNGaWx0ZXIoKSAmJiB0aGlzLl9vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICAgICAgICAgIGxldCBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gKHRoaXMub3B0aW9uTGFiZWwgfHwgJ2xhYmVsJykuc3BsaXQoJywnKTtcblxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZEdyb3VwcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IG9wdGdyb3VwIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRTdWJPcHRpb25zID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0Z3JvdXApLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFN1Yk9wdGlvbnMgJiYgZmlsdGVyZWRTdWJPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRHcm91cHMucHVzaCh7Li4ub3B0Z3JvdXAsIC4uLntbdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuXTogZmlsdGVyZWRTdWJPcHRpb25zfX0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyZWRHcm91cHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcihvcHRpb24gPT4gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNbdGhpcy5maWx0ZXJNYXRjaE1vZGVdKHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSwgdGhpcy5fZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTG9jYWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRvZ2dsZUFsbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgb3B0aW9uc1RvUmVuZGVyID0gdGhpcy5vcHRpb25zVG9SZW5kZXI7XG4gICAgICAgIGlmICghb3B0aW9uc1RvUmVuZGVyIHx8IG9wdGlvbnNUb1JlbmRlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIG9wdGlvbnNUb1JlbmRlcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVBbGwoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy50b2dnbGVBbGxEaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWxsQ2hlY2tlZCA9IHRoaXMuYWxsQ2hlY2tlZDtcblxuICAgICAgICBpZiAoYWxsQ2hlY2tlZClcbiAgICAgICAgICAgIHRoaXMudW5jaGVja0FsbCgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmNoZWNrQWxsKCk7XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2hlY2tBbGwoKSB7XG4gICAgICAgIGxldCBvcHRpb25zVG9SZW5kZXIgPSB0aGlzLm9wdGlvbnNUb1JlbmRlcjtcbiAgICAgICAgbGV0IHZhbDogYW55W10gPSBbXTtcblxuICAgICAgICBvcHRpb25zVG9SZW5kZXIuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbkRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdCk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25EaXNhYmxlZCB8fCAob3B0aW9uRGlzYWJsZWQgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbC5wdXNoKHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHN1Yk9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzdWJPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yk9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbkRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbkRpc2FibGVkIHx8IChvcHRpb25EaXNhYmxlZCAmJiB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucHVzaCh0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgdW5jaGVja0FsbCgpIHtcbiAgICAgICAgbGV0IG9wdGlvbnNUb1JlbmRlciA9IHRoaXMub3B0aW9uc1RvUmVuZGVyO1xuICAgICAgICBsZXQgdmFsOiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIG9wdGlvbnNUb1JlbmRlci5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHtcbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uRGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0KTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uRGlzYWJsZWQgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsLnB1c2godGhpcy5nZXRPcHRpb25WYWx1ZShvcHQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdC5pdGVtcy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uRGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25EaXNhYmxlZCAmJiB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wdXNoKHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBvbk9wdGlvbktleURvd24oZXZlbnQ6S2V5Ym9hcmRFdmVudCwgb3B0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXRlbSA9IDxIVE1MTElFbGVtZW50PiBldmVudC5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIHN3aXRjaChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy9kb3duXG4gICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgIHZhciBuZXh0SXRlbSA9IHRoaXMuZmluZE5leHRJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0SXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy91cFxuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICB2YXIgcHJldkl0ZW0gPSB0aGlzLmZpbmRQcmV2SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZW50ZXJcbiAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkNsaWNrKGV2ZW50LCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBuZXh0SXRlbSA9IGl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChuZXh0SXRlbSlcbiAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1kaXNhYmxlZCcpIHx8IERvbUhhbmRsZXIuaXNIaWRkZW4obmV4dEl0ZW0pIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dEl0ZW0sICdwLWxpc3Rib3gtaXRlbS1ncm91cCcpID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtZGlzYWJsZWQnKSB8fCBEb21IYW5kbGVyLmlzSGlkZGVuKHByZXZJdGVtKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKHByZXZJdGVtLCAncC1saXN0Ym94LWl0ZW0tZ3JvdXAnKSA/IHRoaXMuZmluZFByZXZJdGVtKHByZXZJdGVtKSA6IHByZXZJdGVtO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbkhlYWRlckNoZWNrYm94Rm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IHRydWU7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEJsdXIoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZSwgUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTGlzdGJveCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtMaXN0Ym94XVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94TW9kdWxlIHsgfVxuXG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/listbox/primeng-listbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/listbox/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/listbox/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1saXN0Ym94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2xpc3Rib3gvcHJpbWVuZy1saXN0Ym94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/listbox/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/listbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/listbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './listbox';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0Ym94L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpc3Rib3gnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/megamenu/megamenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/megamenu/megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/megamenu/megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,308 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+import { RouterModule } from '@angular/router';
+import { RippleModule } from 'primeng/ripple';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "primeng/ripple";
+import * as i4 from "@angular/router";
+export class MegaMenu {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.orientation = 'horizontal';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onCategoryMouseEnter(event, menuitem) {
+        if (menuitem.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (this.activeItem) {
+            this.activeItem = menuitem;
+        }
+    }
+    onCategoryClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && this.activeItem === item) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = null;
+    }
+    getColumnClass(menuitem) {
+        let length = menuitem.items ? menuitem.items.length : 0;
+        let columnClass;
+        switch (length) {
+            case 2:
+                columnClass = 'p-megamenu-col-6';
+                break;
+            case 3:
+                columnClass = 'p-megamenu-col-4';
+                break;
+            case 4:
+                columnClass = 'p-megamenu-col-3';
+                break;
+            case 6:
+                columnClass = 'p-megamenu-col-2';
+                break;
+            default:
+                columnClass = 'p-megamenu-col-12';
+                break;
+        }
+        return columnClass;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.unbindDocumentClickListener();
+                    this.cd.markForCheck();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+}
+MegaMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MegaMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MegaMenu, selector: "p-megaMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", orientation: "orientation", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-megaMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class MegaMenuModule {
+}
+MegaMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MegaMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, declarations: [MegaMenu], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [MegaMenu, RouterModule, TooltipModule] });
+MegaMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [MegaMenu, RouterModule, TooltipModule],
+                    declarations: [MegaMenu]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVnYW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbWVnYW1lbnUvbWVnYW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFXLHVCQUF1QixFQUFFLGlCQUFpQixFQUF1QyxlQUFlLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ3JNLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXdCLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBc0Y5QyxNQUFNLE9BQU8sUUFBUTtJQXdCakIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CLEVBQVMsRUFBcUI7UUFBeEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWhCbEYsZ0JBQVcsR0FBVyxZQUFZLENBQUM7UUFFbkMsZUFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixlQUFVLEdBQVcsQ0FBQyxDQUFDO0lBWThELENBQUM7SUFFL0Ysa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDbkIsS0FBSyxPQUFPO29CQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDdkMsTUFBTTtnQkFFTixLQUFLLEtBQUs7b0JBQ04sSUFBSSxDQUFDLFdBQVcsR0FB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QUFhOztBQTZJbEMsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkEzSmQsUUFBUSxhQXVKUCxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLGFBdkpyRCxRQUFRLEVBd0pFLFlBQVksRUFBQyxhQUFhOzRHQUdwQyxjQUFjLFlBSmQsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUMsRUFDNUMsWUFBWSxFQUFDLGFBQWE7MkZBR3BDLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDOUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsSW5wdXQsUmVuZGVyZXIyLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWVnYU1lbnVJdGVtLE1lbnVJdGVtLCBQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZWdhTWVudScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1tZWdhbWVudSBwLWNvbXBvbmVudCc6dHJ1ZSwncC1tZWdhbWVudS1ob3Jpem9udGFsJzogb3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnLCdwLW1lZ2FtZW51LXZlcnRpY2FsJzogb3JpZW50YXRpb24gPT0gJ3ZlcnRpY2FsJ31cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lZ2FtZW51LXN0YXJ0XCIgKm5nSWY9XCJzdGFydFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJ0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwicC1tZWdhbWVudS1yb290LWxpc3RcIiByb2xlPVwibWVudWJhclwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY2F0ZWdvcnkgW25nRm9yT2ZdPVwibW9kZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY2F0ZWdvcnkuc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnUtc2VwYXJhdG9yXCIgW25nQ2xhc3NdPVwieydwLWhpZGRlbic6IGNhdGVnb3J5LnZpc2libGUgPT09IGZhbHNlfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhY2F0ZWdvcnkuc2VwYXJhdG9yXCIgW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtJzp0cnVlLCdwLW1lbnVpdGVtLWFjdGl2ZSc6Y2F0ZWdvcnk9PWFjdGl2ZUl0ZW0sICdwLWhpZGRlbic6IGNhdGVnb3J5LnZpc2libGUgPT09IGZhbHNlfVwiIHBUb29sdGlwIFt0b29sdGlwT3B0aW9uc109XCJjYXRlZ29yeS50b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkNhdGVnb3J5TW91c2VFbnRlcigkZXZlbnQsIGNhdGVnb3J5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY2F0ZWdvcnkucm91dGVyTGlua1wiIFtocmVmXT1cImNhdGVnb3J5LnVybHx8JyMnXCIgW2F0dHIudGFyZ2V0XT1cImNhdGVnb3J5LnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNhdGVnb3J5LnRpdGxlXCIgW2F0dHIuaWRdPVwiY2F0ZWdvcnkuaWRcIiAoY2xpY2spPVwib25DYXRlZ29yeUNsaWNrKCRldmVudCwgY2F0ZWdvcnkpXCIgW2F0dHIudGFiaW5kZXhdPVwiY2F0ZWdvcnkudGFiaW5kZXggPyBjYXRlZ29yeS50YWJpbmRleCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtLWxpbmsnOnRydWUsJ3AtZGlzYWJsZWQnOmNhdGVnb3J5LmRpc2FibGVkfVwiIFtuZ1N0eWxlXT1cImNhdGVnb3J5LnN0eWxlXCIgW2NsYXNzXT1cImNhdGVnb3J5LnN0eWxlQ2xhc3NcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgKm5nSWY9XCJjYXRlZ29yeS5pY29uXCIgW25nQ2xhc3NdPVwiY2F0ZWdvcnkuaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2F0ZWdvcnkuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBjYXRlZ29yeUh0bWxMYWJlbFwiPnt7Y2F0ZWdvcnkubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5SHRtbExhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJjYXRlZ29yeS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2F0ZWdvcnkuaXRlbXNcIiBjbGFzcz1cInAtc3VibWVudS1pY29uIHBpXCIgW25nQ2xhc3NdPVwieydwaS1hbmdsZS1kb3duJzpvcmllbnRhdGlvbj09J2hvcml6b250YWwnLCdwaS1hbmdsZS1yaWdodCc6b3JpZW50YXRpb249PSd2ZXJ0aWNhbCd9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJjYXRlZ29yeS5yb3V0ZXJMaW5rXCIgW3JvdXRlckxpbmtdPVwiY2F0ZWdvcnkucm91dGVyTGlua1wiIFtxdWVyeVBhcmFtc109XCJjYXRlZ29yeS5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJjYXRlZ29yeS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiIFthdHRyLnRhYmluZGV4XT1cImNhdGVnb3J5LnRhYmluZGV4ID8gY2F0ZWdvcnkudGFiaW5kZXggOiAnMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJjYXRlZ29yeS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiIFthdHRyLmlkXT1cImNhdGVnb3J5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DYXRlZ29yeUNsaWNrKCRldmVudCwgY2F0ZWdvcnkpXCIgW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtLWxpbmsnOnRydWUsJ3AtZGlzYWJsZWQnOmNhdGVnb3J5LmRpc2FibGVkfVwiIFtuZ1N0eWxlXT1cImNhdGVnb3J5LnN0eWxlXCIgW2NsYXNzXT1cImNhdGVnb3J5LnN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJjYXRlZ29yeS5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImNhdGVnb3J5LnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIiBbcHJlc2VydmVGcmFnbWVudF09XCJjYXRlZ29yeS5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJjYXRlZ29yeS5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJjYXRlZ29yeS5yZXBsYWNlVXJsXCIgW3N0YXRlXT1cImNhdGVnb3J5LnN0YXRlXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiY2F0ZWdvcnkuaWNvblwiIFtuZ0NsYXNzXT1cImNhdGVnb3J5Lmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNhdGVnb3J5LmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgY2F0ZWdvcnlIdG1sUm91dGVMYWJlbFwiPnt7Y2F0ZWdvcnkubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5SHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNhdGVnb3J5LmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZWdhbWVudS1wYW5lbFwiICpuZ0lmPVwiY2F0ZWdvcnkuaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZWdhbWVudS1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY29sdW1uIFtuZ0Zvck9mXT1cImNhdGVnb3J5Lml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJnZXRDb2x1bW5DbGFzcyhjYXRlZ29yeSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXN1Ym1lbnUgW25nRm9yT2ZdPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInAtbWVnYW1lbnUtc3VibWVudVwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLW1lZ2FtZW51LXN1Ym1lbnUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJtZW51LmVzY2FwZSAhPT0gZmFsc2U7IGVsc2Ugc3VibWVudUh0bWxMYWJlbFwiPnt7c3VibWVudS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3VibWVudUh0bWxMYWJlbD48c3BhbiBbaW5uZXJIVE1MXT1cInN1Ym1lbnUubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic3VibWVudS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIml0ZW0uc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnUtc2VwYXJhdG9yXCIgW25nQ2xhc3NdPVwieydwLWhpZGRlbic6IGl0ZW0udmlzaWJsZSA9PT0gZmFsc2V9XCIgcm9sZT1cInNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFpdGVtLnNlcGFyYXRvclwiIGNsYXNzPVwicC1tZW51aXRlbVwiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4nOiBpdGVtLnZpc2libGUgPT09IGZhbHNlfVwiIHJvbGU9XCJub25lXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cIml0ZW0udG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhaXRlbS5yb3V0ZXJMaW5rXCIgcm9sZT1cIm1lbnVpdGVtXCIgW2hyZWZdPVwiaXRlbS51cmx8fCcjJ1wiIGNsYXNzPVwicC1tZW51aXRlbS1saW5rXCIgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiIFthdHRyLmlkXT1cIml0ZW0uaWRcIiBbYXR0ci50YWJpbmRleF09XCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtZGlzYWJsZWQnOml0ZW0uZGlzYWJsZWR9XCIgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxMYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIml0ZW0ucm91dGVyTGlua1wiIHJvbGU9XCJtZW51aXRlbVwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3AtbWVudWl0ZW0tbGluay1hY3RpdmUnXCIgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS50YWJpbmRleCA/IGl0ZW0udGFiaW5kZXggOiAnMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIml0ZW0ucm91dGVyTGlua0FjdGl2ZU9wdGlvbnN8fHtleGFjdDpmYWxzZX1cIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiIFthdHRyLmlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzppdGVtLmRpc2FibGVkfVwiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cIml0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZ1wiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cIml0ZW0ucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbS5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJpdGVtLnJlcGxhY2VVcmxcIiBbc3RhdGVdPVwiaXRlbS5zdGF0ZVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZWdhbWVudS1lbmRcIiAqbmdJZj1cImVuZFRlbXBsYXRlOyBlbHNlIGxlZ2FjeVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW5kVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xlZ2FjeT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVnYW1lbnUtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVnYW1lbnUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWVnYU1lbnUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIEBJbnB1dCgpIG1vZGVsOiBNZWdhTWVudUl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogc3RyaW5nID0gJ2hvcml6b250YWwnO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBzdGFydFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DYXRlZ29yeU1vdXNlRW50ZXIoZXZlbnQsIG1lbnVpdGVtOiBNZWdhTWVudUl0ZW0pIHtcbiAgICAgICAgaWYgKG1lbnVpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbWVudWl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhdGVnb3J5Q2xpY2soZXZlbnQsIGl0ZW06IE1lbnVJdGVtIHwgTWVnYU1lbnVJdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLnVybCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbSAmJiB0aGlzLmFjdGl2ZUl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXRlbUNsaWNrKGV2ZW50LCBpdGVtOiBNZW51SXRlbSB8IE1lZ2FNZW51SXRlbSnCoHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWl0ZW0udXJsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgaXRlbS5jb21tYW5kKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1uQ2xhc3MobWVudWl0ZW06IE1lZ2FNZW51SXRlbSkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gbWVudWl0ZW0uaXRlbXMgPyBtZW51aXRlbS5pdGVtcy5sZW5ndGg6IDA7XG4gICAgICAgIGxldCBjb2x1bW5DbGFzcztcbiAgICAgICAgc3dpdGNoKGxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzPSAncC1tZWdhbWVudS1jb2wtNic7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzPSAncC1tZWdhbWVudS1jb2wtNCc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzPSAncC1tZWdhbWVudS1jb2wtMyc7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIGNvbHVtbkNsYXNzPSAncC1tZWdhbWVudS1jb2wtMic7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb2x1bW5DbGFzcz0gJ3AtbWVnYW1lbnUtY29sLTEyJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkNsYXNzO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWwgJiYgIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsUmlwcGxlTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtNZWdhTWVudSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbTWVnYU1lbnVdXG59KVxuZXhwb3J0IGNsYXNzIE1lZ2FNZW51TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/megamenu/primeng-megamenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/megamenu/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/megamenu/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZWdhbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZWdhbWVudS9wcmltZW5nLW1lZ2FtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/megamenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/megamenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/megamenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './megamenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZWdhbWVudS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZWdhbWVudSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/menu/menu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menu/menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menu/menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,410 @@
+import { NgModule, Component, Input, Output, EventEmitter, ViewChild, Inject, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import { RouterModule } from '@angular/router';
+import { RippleModule } from 'primeng/ripple';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/api";
+import * as i5 from "primeng/tooltip";
+export class MenuItemContent {
+    constructor(menu) {
+        this.menu = menu;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+}
+MenuItemContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, deps: [{ token: forwardRef(() => Menu) }], target: i0.ɵɵFactoryTarget.Component });
+MenuItemContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pMenuItemContent]',
+                    template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Menu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input,
+                args: ["pMenuItemContent"]
+            }] } });
+export class Menu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.relativeAlign = event.relativeAlign;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    alignOverlay() {
+        if (this.relativeAlign)
+            DomHandler.relativePosition(this.container, this.target);
+        else
+            DomHandler.absolutePosition(this.container, this.target);
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.relativeAlign = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (this.popup) {
+            this.hide();
+        }
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+    hasSubMenu() {
+        if (this.model) {
+            for (var item of this.model) {
+                if (item.items) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
+Menu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Menu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"], components: [{ type: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menu', template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }] } });
+export class MenuModule {
+}
+MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, declarations: [Menu, MenuItemContent], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menu, RouterModule, TooltipModule] });
+MenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menu, RouterModule, TooltipModule],
+                    declarations: [Menu, MenuItemContent]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZW51L21lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFXLFNBQVMsRUFBQyxNQUFNLEVBQUMsVUFBVSxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTSxPQUFPLEVBQUMsT0FBTyxFQUFPLEtBQUssRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUF5QjlDLE1BQU0sT0FBTyxlQUFlO0lBTXhCLFlBQTRDLElBQUk7UUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFFakQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDWixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsRUFBRTtvQkFDVixRQUFRLENB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QUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2tOQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFa0Isa0JBQWtCO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVc7Z0JBRVosTUFBTTtzQkFBZixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTs7QUF3T1gsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkFoUVYsSUFBSSxFQTVHSixlQUFlLGFBd1dkLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsYUE1UHJELElBQUksRUE2UEUsWUFBWSxFQUFDLGFBQWE7d0dBR2hDLFVBQVUsWUFKVixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQyxFQUNoRCxZQUFZLEVBQUMsYUFBYTsyRkFHaEMsVUFBVTtrQkFMdEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUMxQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUMsZUFBZSxDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsT25EZXN0cm95LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsUmVuZGVyZXIyLFZpZXdDaGlsZCxJbmplY3QsZm9yd2FyZFJlZixDaGFuZ2VEZXRlY3RvclJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0cmlnZ2VyLHN0YXRlLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZSxBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RG9tSGFuZGxlciwgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7TWVudUl0ZW0sIE92ZXJsYXlTZXJ2aWNlLCBQcmltZU5HQ29uZmlnfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1pJbmRleFV0aWxzfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbcE1lbnVJdGVtQ29udGVudF0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxhICpuZ0lmPVwiIWl0ZW0ucm91dGVyTGlua1wiICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIiBbYXR0ci5ocmVmXT1cIml0ZW0udXJsfHxudWxsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIiBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cIml0ZW0uYXV0b21hdGlvbklkXCIgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiIFthdHRyLmlkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzppdGVtLmRpc2FibGVkfVwiIChjbGljayk9XCJtZW51Lml0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCIgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57e2l0ZW0ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGEgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIiBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbYXR0ci5kYXRhLWF1dG9tYXRpb25pZF09XCJpdGVtLmF1dG9tYXRpb25JZFwiIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3AtbWVudWl0ZW0tbGluay1hY3RpdmUnXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIiBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci5pZF09XCJpdGVtLmlkXCIgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiAnMCdcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIiAoY2xpY2spPVwibWVudS5pdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiIHJvbGU9XCJtZW51aXRlbVwiIHBSaXBwbGVcbiAgICAgICAgICAgIFtmcmFnbWVudF09XCJpdGVtLmZyYWdtZW50XCIgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJpdGVtLnNraXBMb2NhdGlvbkNoYW5nZVwiIFtyZXBsYWNlVXJsXT1cIml0ZW0ucmVwbGFjZVVybFwiIFtzdGF0ZV09XCJpdGVtLnN0YXRlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2E+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtQ29udGVudCB7XG5cbiAgICBASW5wdXQoXCJwTWVudUl0ZW1Db250ZW50XCIpIGl0ZW06IE1lbnVJdGVtO1xuXG4gICAgbWVudTogTWVudTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNZW51KSkgbWVudSkge1xuICAgICAgICB0aGlzLm1lbnUgPSBtZW51IGFzIE1lbnU7XG4gICAgfVxuXG4gICAgb25JdGVtS2V5RG93bihldmVudCkge1xuICAgICAgICBsZXQgbGlzdEl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHZhciBuZXh0SXRlbSA9IHRoaXMuZmluZE5leHRJdGVtKGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHZhciBwcmV2SXRlbSA9IHRoaXMuZmluZFByZXZJdGVtKGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBpZiAobGlzdEl0ZW0gJiYgIURvbUhhbmRsZXIuaGFzQ2xhc3MobGlzdEl0ZW0sICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uY2hpbGRyZW5bMF0uY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBuZXh0SXRlbSA9IGl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChuZXh0SXRlbSlcbiAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1kaXNhYmxlZCcpIHx8ICFEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1tZW51aXRlbScpID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtZGlzYWJsZWQnKSB8fCAhRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtbWVudWl0ZW0nKSA/IHRoaXMuZmluZFByZXZJdGVtKHByZXZJdGVtKSA6IHByZXZJdGVtO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwieydwLW1lbnUgcC1jb21wb25lbnQnOiB0cnVlLCAncC1tZW51LW92ZXJsYXknOiBwb3B1cH1cIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiICpuZ0lmPVwiIXBvcHVwIHx8IHZpc2libGVcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbQG92ZXJsYXlBbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fVwiIFtALmRpc2FibGVkXT1cInBvcHVwICE9PSB0cnVlXCIgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25FbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwicC1tZW51LWxpc3QgcC1yZXNldFwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1zdWJtZW51IFtuZ0Zvck9mXT1cIm1vZGVsXCIgKm5nSWY9XCJoYXNTdWJNZW51KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1tZW51LXNlcGFyYXRvclwiICpuZ0lmPVwic3VibWVudS5zZXBhcmF0b3JcIiBbbmdDbGFzc109XCJ7J3AtaGlkZGVuJzogc3VibWVudS52aXNpYmxlID09PSBmYWxzZX1cIiByb2xlPVwic2VwYXJhdG9yXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1zdWJtZW51LWhlYWRlclwiIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cInN1Ym1lbnUuYXV0b21hdGlvbklkXCIgKm5nSWY9XCIhc3VibWVudS5zZXBhcmF0b3JcIiBbbmdDbGFzc109XCJ7J3AtaGlkZGVuJzogc3VibWVudS52aXNpYmxlID09PSBmYWxzZX1cIiByb2xlPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJtZW51LmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFN1Ym1lbnVMYWJlbFwiPnt7c3VibWVudS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sU3VibWVudUxhYmVsPjxzcGFuIFtpbm5lckhUTUxdPVwic3VibWVudS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic3VibWVudS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1tZW51LXNlcGFyYXRvclwiICpuZ0lmPVwiaXRlbS5zZXBhcmF0b3JcIiBbbmdDbGFzc109XCJ7J3AtaGlkZGVuJzogKGl0ZW0udmlzaWJsZSA9PT0gZmFsc2UgfHzCoHN1Ym1lbnUudmlzaWJsZSA9PT0gZmFsc2UpfVwiIHJvbGU9XCJzZXBhcmF0b3JcIj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1tZW51aXRlbVwiICpuZ0lmPVwiIWl0ZW0uc2VwYXJhdG9yXCIgW3BNZW51SXRlbUNvbnRlbnRdPVwiaXRlbVwiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4nOiAoaXRlbS52aXNpYmxlID09PSBmYWxzZSB8fCBzdWJtZW51LnZpc2libGUgPT09IGZhbHNlKX1cIiBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCIgW2NsYXNzXT1cIml0ZW0uc3R5bGVDbGFzc1wiIHJvbGU9XCJub25lXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBbbmdGb3JPZl09XCJtb2RlbFwiICpuZ0lmPVwiIWhhc1N1Yk1lbnUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLW1lbnUtc2VwYXJhdG9yXCIgKm5nSWY9XCJpdGVtLnNlcGFyYXRvclwiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4nOiBpdGVtLnZpc2libGUgPT09IGZhbHNlfVwiIHJvbGU9XCJzZXBhcmF0b3JcIj48L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLW1lbnVpdGVtXCIgKm5nSWY9XCIhaXRlbS5zZXBhcmF0b3JcIiBbcE1lbnVJdGVtQ29udGVudF09XCJpdGVtXCIgW25nQ2xhc3NdPVwieydwLWhpZGRlbic6IGl0ZW0udmlzaWJsZSA9PT0gZmFsc2V9XCIgW25nU3R5bGVdPVwiaXRlbS5zdHlsZVwiIFtjbGFzc109XCJpdGVtLnN0eWxlQ2xhc3NcIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiIHJvbGU9XCJub25lXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1lbnUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBwb3B1cDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uSGlkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBwcmV2ZW50RG9jdW1lbnREZWZhdWx0OiBib29sZWFuO1xuXG4gICAgdGFyZ2V0OiBhbnk7XG5cbiAgICB2aXNpYmxlOiBib29sZWFuO1xuXG4gICAgcmVsYXRpdmVBbGlnbjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLCBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlKSB7fVxuXG4gICAgdG9nZ2xlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5zaG93KGV2ZW50KTtcblxuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSB0cnVlO1xuICAgIH1cblxuICAgIHNob3coZXZlbnQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICB0aGlzLnJlbGF0aXZlQWxpZ24gPSBldmVudC5yZWxhdGl2ZUFsaWduO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVPblRvcCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHt9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlLmVtaXQoe30pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKGV2ZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ25PdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5yZWxhdGl2ZUFsaWduKVxuICAgICAgICAgICAgRG9tSGFuZGxlci5yZWxhdGl2ZVBvc2l0aW9uKHRoaXMuY29udGFpbmVyLCB0aGlzLnRhcmdldCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWJzb2x1dGVQb3NpdGlvbih0aGlzLmNvbnRhaW5lciwgdGhpcy50YXJnZXQpO1xuICAgIH1cblxuICAgIGFwcGVuZE92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzdG9yZU92ZXJsYXlBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21lbnUnLCB0aGlzLmNvbnRhaW5lciwgdGhpcy5iYXNlWkluZGV4ICsgdGhpcy5jb25maWcuekluZGV4Lm1lbnUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZSgpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVsYXRpdmVBbGlnbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBpdGVtQ2xpY2soZXZlbnQsIGl0ZW06IE1lbnVJdGVtKcKge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS51cmwpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQ9dHJ1ZVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMudGFyZ2V0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlIaWRlKCkge1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZXN0b3JlT3ZlcmxheUFwcGVuZCgpO1xuICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNTdWJNZW51KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsUmlwcGxlTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtNZW51LFJvdXRlck1vZHVsZSxUb29sdGlwTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtNZW51LE1lbnVJdGVtQ29udGVudF1cbn0pXG5leHBvcnQgY2xhc3MgTWVudU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/menu/primeng-menu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menu/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menu/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL21lbnUvcHJpbWVuZy1tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/menu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './menu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZW51L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lbnUnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/menubar/menubar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menubar/menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menubar/menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,333 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, ViewChild, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ZIndexUtils } from 'primeng/utils';
+import { PrimeTemplate } from 'primeng/api';
+import { RouterModule } from '@angular/router';
+import { RippleModule } from 'primeng/ripple';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "primeng/ripple";
+import * as i4 from "@angular/router";
+import * as i5 from "primeng/api";
+export class MenubarSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+MenubarSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MenubarSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenubarSub, selector: "p-menubarSub", inputs: { item: "item", root: "root", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", autoDisplay: "autoDisplay", parentActive: "parentActive" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-menubarSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }] } });
+export class Menubar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.mobileActive) {
+            this.hide();
+            ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        }
+        else {
+            this.mobileActive = true;
+            ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
+        }
+        this.bindOutsideClickListener();
+        event.preventDefault();
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.mobileActive && this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target)
+                    && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    hide() {
+        this.mobileActive = false;
+        this.cd.markForCheck();
+        ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        this.unbindOutsideClickListener();
+    }
+    onLeafClick() {
+        this.hide();
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindOutsideClickListener();
+    }
+}
+Menubar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Menubar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menubar, selector: "p-menubar", inputs: { model: "model", style: "style", styleClass: "styleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "menubutton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"], components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menubar', template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], menubutton: [{
+                type: ViewChild,
+                args: ['menubutton']
+            }], rootmenu: [{
+                type: ViewChild,
+                args: ['rootmenu']
+            }] } });
+export class MenubarModule {
+}
+MenubarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenubarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, declarations: [Menubar, MenubarSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menubar, RouterModule, TooltipModule] });
+MenubarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menubar, RouterModule, TooltipModule],
+                    declarations: [Menubar, MenubarSub]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZW51YmFyL21lbnViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUEwQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBb0IsZUFBZSxFQUEwQixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2UCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQTJCLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQXFDaEQsTUFBTSxPQUFPLFVBQVU7SUFxQ25CLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFVLEVBQXFCO1FBQXpFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUEvQm5GLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFFM0IsZUFBVSxHQUFXLENBQUMsQ0FBQztRQW1CdEIsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTVELG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBSStELENBQUM7SUF2QmpHLElBQWEsWUFBWTtRQUVyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQUs7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJ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QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtxTEFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRTBCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTtnQkFFTCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRUEsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVOztBQWdGekIsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFsR2IsT0FBTyxFQTNKUCxVQUFVLGFBeVBULFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsYUE5RnJELE9BQU8sRUErRkUsWUFBWSxFQUFDLGFBQWE7MkdBR25DLGFBQWEsWUFKYixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQyxFQUM3QyxZQUFZLEVBQUMsYUFBYTsyRkFHbkMsYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUM3QyxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUMsVUFBVSxDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjIsIE9uRGVzdHJveSxDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZU5HQ29uZmlnLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWVudWJhclN1YicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsIFtuZ0NsYXNzXT1cInsncC1zdWJtZW51LWxpc3QnOiAhcm9vdCwgJ3AtbWVudWJhci1yb290LWxpc3QnOiByb290fVwiIFthdHRyLnJvbGVdPVwicm9vdCA/ICdtZW51YmFyJyA6ICdtZW51J1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jaGlsZCBbbmdGb3JPZl09XCIocm9vdCA/IGl0ZW0gOiBpdGVtLml0ZW1zKVwiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNoaWxkLnNlcGFyYXRvclwiIGNsYXNzPVwicC1tZW51LXNlcGFyYXRvclwiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4nOiBjaGlsZC52aXNpYmxlID09PSBmYWxzZX1cIiByb2xlPVwic2VwYXJhdG9yXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWNoaWxkLnNlcGFyYXRvclwiICNsaXN0SXRlbSBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0nOnRydWUsICdwLW1lbnVpdGVtLWFjdGl2ZSc6IGNoaWxkID09PSBhY3RpdmVJdGVtLCAncC1oaWRkZW4nOiBjaGlsZC52aXNpYmxlID09PSBmYWxzZX1cIiBbbmdTdHlsZV09XCJjaGlsZC5zdHlsZVwiIFtjbGFzc109XCJjaGlsZC5zdHlsZUNsYXNzXCIgcm9sZT1cIm5vbmVcIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiY2hpbGQudG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY2hpbGQucm91dGVyTGlua1wiIFthdHRyLmhyZWZdPVwiY2hpbGQudXJsXCIgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiY2hpbGQuYXV0b21hdGlvbklkXCIgW2F0dHIudGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNoaWxkLnRpdGxlXCIgW2F0dHIuaWRdPVwiY2hpbGQuaWRcIiByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgY2hpbGQpXCIgKG1vdXNlZW50ZXIpPVwib25JdGVtTW91c2VFbnRlcigkZXZlbnQsY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0tbGluayc6dHJ1ZSwncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCIgW2F0dHIudGFiaW5kZXhdPVwiY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpdGVtLml0ZW1zICE9IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0gPT09IGFjdGl2ZUl0ZW1cIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbExhYmVsXCI+e3tjaGlsZC5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNoaWxkLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3VibWVudS1pY29uIHBpXCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiIFtuZ0NsYXNzXT1cInsncGktYW5nbGUtZG93bic6cm9vdCwncGktYW5nbGUtcmlnaHQnOiFyb290fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImNoaWxkLnJvdXRlckxpbmtcIiBbcm91dGVyTGlua109XCJjaGlsZC5yb3V0ZXJMaW5rXCIgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiY2hpbGQuYXV0b21hdGlvbklkXCIgW3F1ZXJ5UGFyYW1zXT1cImNoaWxkLnF1ZXJ5UGFyYW1zXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3AtbWVudWl0ZW0tbGluay1hY3RpdmUnXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImNoaWxkLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJjaGlsZC50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiIFthdHRyLmlkXT1cImNoaWxkLmlkXCIgW2F0dHIudGFiaW5kZXhdPVwiY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCIgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGNoaWxkKVwiIChtb3VzZWVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50LGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0tbGluayc6dHJ1ZSwncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJjaGlsZC5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImNoaWxkLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIiBbcHJlc2VydmVGcmFnbWVudF09XCJjaGlsZC5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJjaGlsZC5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJjaGlsZC5yZXBsYWNlVXJsXCIgW3N0YXRlXT1cImNoaWxkLnN0YXRlXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uXCIgW25nQ2xhc3NdPVwiY2hpbGQuaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJjaGlsZC5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3tjaGlsZC5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2hpbGQubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zdWJtZW51LWljb24gcGlcIiAqbmdJZj1cImNoaWxkLml0ZW1zXCIgW25nQ2xhc3NdPVwieydwaS1hbmdsZS1kb3duJzpyb290LCdwaS1hbmdsZS1yaWdodCc6IXJvb3R9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxwLW1lbnViYXJTdWIgW3BhcmVudEFjdGl2ZV09XCJjaGlsZCA9PT0gYWN0aXZlSXRlbVwiIFtpdGVtXT1cImNoaWxkXCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiIFttb2JpbGVBY3RpdmVdPVwibW9iaWxlQWN0aXZlXCIgW2F1dG9EaXNwbGF5XT1cImF1dG9EaXNwbGF5XCIgKGxlYWZDbGljayk9XCJvbkxlYWZDbGljaygpXCI+PC9wLW1lbnViYXJTdWI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdWw+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1lbnViYXJTdWIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaXRlbTogTWVudUl0ZW07XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbW9iaWxlQWN0aXZlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYXV0b0Rpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBnZXQgcGFyZW50QWN0aXZlKCk6Ym9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEFjdGl2ZTtcbiAgICB9XG4gICAgc2V0IHBhcmVudEFjdGl2ZSh2YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50QWN0aXZlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBPdXRwdXQoKSBsZWFmQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgX3BhcmVudEFjdGl2ZTogYm9vbGVhbjtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgbWVudUhvdmVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhY3RpdmVJdGVtOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudCwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS51cmwgJiYgIWl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbSAmJiBpdGVtID09PSB0aGlzLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLm9uTGVhZkNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1Nb3VzZUVudGVyKGV2ZW50LCBpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkIHx8IHRoaXMubW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbSB8fCB0aGlzLmF1dG9EaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGVhZkNsaWNrKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sZWFmQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWwgJiYgIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZW51YmFyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC1tZW51YmFyIHAtY29tcG9uZW50Jzp0cnVlLCAncC1tZW51YmFyLW1vYmlsZS1hY3RpdmUnOiBtb2JpbGVBY3RpdmV9XCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVudWJhci1zdGFydFwiICpuZ0lmPVwic3RhcnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGFydFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxhICNtZW51YnV0dG9uIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicC1tZW51YmFyLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxwLW1lbnViYXJTdWIgI3Jvb3RtZW51IFtpdGVtXT1cIm1vZGVsXCIgcm9vdD1cInJvb3RcIiBbYmFzZVpJbmRleF09XCJiYXNlWkluZGV4XCIgKGxlYWZDbGljayk9XCJvbkxlYWZDbGljaygpXCIgW2F1dG9aSW5kZXhdPVwiYXV0b1pJbmRleFwiIFttb2JpbGVBY3RpdmVdPVwibW9iaWxlQWN0aXZlXCIgW2F1dG9EaXNwbGF5XT1cImF1dG9EaXNwbGF5XCI+PC9wLW1lbnViYXJTdWI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZW51YmFyLWVuZFwiICpuZ0lmPVwiZW5kVGVtcGxhdGU7IGVsc2UgbGVnYWN5XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVuZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGVnYWN5PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lbnViYXItZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51YmFyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1lbnViYXIgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgYXV0b0Rpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdtZW51YnV0dG9uJykgbWVudWJ1dHRvbjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jvb3RtZW51Jykgcm9vdG1lbnU6IE1lbnViYXJTdWI7XG5cbiAgICBzdGFydFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBtb2JpbGVBY3RpdmU6IGJvb2xlYW47XG5cbiAgICBvdXRzaWRlQ2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZykgeyB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vYmlsZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21lbnUnLCB0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29uZmlnLnpJbmRleC5tZW51KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2JpbGVBY3RpdmUgJiYgdGhpcy5yb290bWVudS5lbC5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiYgIXRoaXMucm9vdG1lbnUuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMubWVudWJ1dHRvbi5uYXRpdmVFbGVtZW50ICE9PSBldmVudC50YXJnZXQgJiYgIXRoaXMubWVudWJ1dHRvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLm1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLnJvb3RtZW51LmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgb25MZWFmQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIHVuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsUmlwcGxlTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtNZW51YmFyLFJvdXRlck1vZHVsZSxUb29sdGlwTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtNZW51YmFyLE1lbnViYXJTdWJdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnViYXJNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/menubar/primeng-menubar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menubar/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menubar/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZW51YmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL21lbnViYXIvcHJpbWVuZy1tZW51YmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/menubar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/menubar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/menubar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './menubar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZW51YmFyL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lbnViYXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/message/message.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/message/message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/message/message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,94 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class UIMessage {
+    constructor() {
+        this.escape = true;
+    }
+    get icon() {
+        let icon = null;
+        if (this.severity) {
+            switch (this.severity) {
+                case 'success':
+                    icon = 'pi pi-check';
+                    break;
+                case 'info':
+                    icon = 'pi pi-info-circle';
+                    break;
+                case 'error':
+                    icon = 'pi pi-times-circle';
+                    break;
+                case 'warn':
+                    icon = 'pi pi-exclamation-triangle';
+                    break;
+                default:
+                    icon = 'pi pi-info-circle';
+                    break;
+            }
+        }
+        return icon;
+    }
+}
+UIMessage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
+UIMessage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIMessage, selector: "p-message", inputs: { severity: "severity", text: "text", escape: "escape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-message', template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"] }]
+        }], propDecorators: { severity: [{
+                type: Input
+            }], text: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+export class MessageModule {
+}
+MessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule], exports: [UIMessage] });
+MessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIMessage],
+                    declarations: [UIMessage]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXNzYWdlL21lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBMkI3QyxNQUFNLE9BQU8sU0FBUztJQXpCdEI7UUErQmEsV0FBTSxHQUFZLElBQUksQ0FBQztLQW1DbkM7SUE3QkcsSUFBSSxJQUFJO1FBQ0osSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLFFBQU8sSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksR0FBRyxhQUFhLENBQUM7b0JBQ3pCLE1BQU07Z0JBRU4sS0FBSyxNQUFNO29CQUNQLElBQUksR0FBRyxtQkFBbUIsQ0FBQztvQkFDL0IsTUFBTTtnQkFFTixLQUFLLE9BQU87b0JBQ1IsSUFBSSxHQUFHLG9CQUFvQixDQUFDO29CQUNoQyxNQUFNO2dCQUVOLEtBQUssTUFBTTtvQkFDUCxJQUFJLEdBQUcsNEJBQTRCLENBQUM7b0JBQ3hDLE1BQU07Z0JBRU47b0JBQ0ksSUFBSSxHQUFHLG1CQUFtQixDQUFDO29CQUMvQixNQUFNO2FBQ1Q7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O3NHQXhDUSxTQUFTOzBGQUFULFNBQVMsb01BdkJSOzs7Ozs7Ozs7Ozs7Ozs7S0FlVDsyRkFRUSxTQUFTO2tCQXpCckIsU0FBUzsrQkFDSSxXQUFXLFlBQ1g7Ozs7Ozs7Ozs7Ozs7OztLQWVULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjs4QkFJUSxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7O0FBc0NWLE1BQU0sT0FBTyxhQUFhOzswR0FBYixhQUFhOzJHQUFiLGFBQWEsaUJBaERiLFNBQVMsYUE0Q1IsWUFBWSxhQTVDYixTQUFTOzJHQWdEVCxhQUFhLFlBSmIsQ0FBQyxZQUFZLENBQUM7MkZBSWQsYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1lc3NhZ2UnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWlubGluZS1tZXNzYWdlIHAtY29tcG9uZW50IHAtaW5saW5lLW1lc3NhZ2VcIiAqbmdJZj1cInNldmVyaXR5XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsncC1pbmxpbmUtbWVzc2FnZS1pbmZvJzogKHNldmVyaXR5ID09PSAnaW5mbycpLFxuICAgICAgICAgICAgICAgICdwLWlubGluZS1tZXNzYWdlLXdhcm4nOiAoc2V2ZXJpdHkgPT09ICd3YXJuJyksXG4gICAgICAgICAgICAgICAgJ3AtaW5saW5lLW1lc3NhZ2UtZXJyb3InOiAoc2V2ZXJpdHkgPT09ICdlcnJvcicpLFxuICAgICAgICAgICAgICAgICdwLWlubGluZS1tZXNzYWdlLXN1Y2Nlc3MnOiAoc2V2ZXJpdHkgPT09ICdzdWNjZXNzJyksXG4gICAgICAgICAgICAgICAgJ3AtaW5saW5lLW1lc3NhZ2UtaWNvbi1vbmx5JzogdGhpcy50ZXh0ID09IG51bGx9XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5saW5lLW1lc3NhZ2UtaWNvblwiIFtuZ0NsYXNzXT1cImljb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVzY2FwZTsgZWxzZSBlc2NhcGVPdXRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlc2NhcGVcIiBjbGFzcz1cInAtaW5saW5lLW1lc3NhZ2UtdGV4dFwiIFtpbm5lckhUTUxdPVwidGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlc2NhcGVPdXQ+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlc2NhcGVcIiBjbGFzcz1cInAtaW5saW5lLW1lc3NhZ2UtdGV4dFwiPnt7dGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL21lc3NhZ2UuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVUlNZXNzYWdlIHtcblxuICAgIEBJbnB1dCgpIHNldmVyaXR5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBlc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBpY29uOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnNldmVyaXR5KSB7XG4gICAgICAgICAgICBzd2l0Y2godGhpcy5zZXZlcml0eSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgICAgICAgICAgICBpY29uID0gJ3BpIHBpLWNoZWNrJztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgICAgICAgICAgICBpY29uID0gJ3BpIHBpLWluZm8tY2lyY2xlJztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgaWNvbiA9ICdwaSBwaS10aW1lcy1jaXJjbGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnd2Fybic6XG4gICAgICAgICAgICAgICAgICAgIGljb24gPSAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWNvbiA9ICdwaSBwaS1pbmZvLWNpcmNsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWNvbjtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1VJTWVzc2FnZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVUlNZXNzYWdlXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/message/primeng-message.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/message/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/message/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL21lc3NhZ2UvcHJpbWVuZy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/message/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/message/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/message/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './message';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXNzYWdlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lc3NhZ2UnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/messages/messages.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/messages/messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/messages/messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,238 @@
+import { NgModule, Component, Input, Output, EventEmitter, Optional, ChangeDetectionStrategy, ContentChildren, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { PrimeTemplate } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+export class Messages {
+    constructor(messageService, el, cd) {
+        this.messageService = messageService;
+        this.el = el;
+        this.cd = cd;
+        this.closable = true;
+        this.enableService = true;
+        this.escape = true;
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '200ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.valueChange = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+        if (this.messageService && this.enableService && !this.contentTemplate) {
+            this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {
+                if (messages) {
+                    if (messages instanceof Array) {
+                        let filteredMessages = messages.filter(m => this.key === m.key);
+                        this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];
+                    }
+                    else if (this.key === messages.key) {
+                        this.value = this.value ? [...this.value, ...[messages]] : [messages];
+                    }
+                    this.cd.markForCheck();
+                }
+            });
+            this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+                if (key) {
+                    if (this.key === key) {
+                        this.value = null;
+                    }
+                }
+                else {
+                    this.value = null;
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    hasMessages() {
+        let parentEl = this.el.nativeElement.parentElement;
+        if (parentEl && parentEl.offsetParent) {
+            return this.contentTemplate != null || this.value && this.value.length > 0;
+        }
+        return false;
+    }
+    clear() {
+        this.value = [];
+        this.valueChange.emit(this.value);
+    }
+    removeMessage(i) {
+        this.value = this.value.filter((msg, index) => index !== i);
+        this.valueChange.emit(this.value);
+    }
+    get icon() {
+        const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);
+        if (this.hasMessages()) {
+            switch (severity) {
+                case 'success':
+                    return 'pi-check';
+                    break;
+                case 'info':
+                    return 'pi-info-circle';
+                    break;
+                case 'error':
+                    return 'pi-times';
+                    break;
+                case 'warn':
+                    return 'pi-exclamation-triangle';
+                    break;
+                default:
+                    return 'pi-info-circle';
+                    break;
+            }
+        }
+        return null;
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+    }
+}
+Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Messages.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Messages, selector: "p-messages", inputs: { value: "value", closable: "closable", style: "style", styleClass: "styleClass", enableService: "enableService", key: "key", escape: "escape", severity: "severity", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, isInline: true, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('messageAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-messages', template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, animations: [
+                        trigger('messageAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.MessageService, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], enableService: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], valueChange: [{
+                type: Output
+            }] } });
+export class MessagesModule {
+}
+MessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule], exports: [Messages] });
+MessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Messages],
+                    declarations: [Messages]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbWVzc2FnZXMvbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVcsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQWtCLFFBQVEsRUFBWSx1QkFBdUIsRUFBQyxlQUFlLEVBQXdCLGlCQUFpQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUM5TixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE9BQU8sRUFBTyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNFLE9BQU8sRUFBUyxhQUFhLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUF1RDVDLE1BQU0sT0FBTyxRQUFRO0lBZ0NqQixZQUErQixjQUE4QixFQUFTLEVBQWMsRUFBUyxFQUFxQjtRQUFuRixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUE1QnpHLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFNekIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFJOUIsV0FBTSxHQUFZLElBQUksQ0FBQztRQUl2QiwwQkFBcUIsR0FBVyxnQkFBZ0IsQ0FBQztRQUVqRCwwQkFBcUIsR0FBVyxzQ0FBc0MsQ0FBQztRQUl0RSxnQkFBVyxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFDO0lBUXNDLENBQUM7SUFFdEgsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFB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YixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhO2dCQUVwQixXQUFXO3NCQUFwQixNQUFNOztBQXNIWCxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQTlJZCxRQUFRLGFBMElQLFlBQVksRUFBQyxZQUFZLGFBMUkxQixRQUFROzRHQThJUixjQUFjLFlBSmQsQ0FBQyxZQUFZLEVBQUMsWUFBWSxDQUFDOzJGQUkzQixjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LE9uRGVzdHJveSxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLEFmdGVyQ29udGVudEluaXQsT3B0aW9uYWwsRWxlbWVudFJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7TWVzc2FnZSxQcmltZVRlbXBsYXRlLE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWVzc2FnZXMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLW1lc3NhZ2VzIHAtY29tcG9uZW50XCIgcm9sZT1cImFsZXJ0XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb250ZW50VGVtcGxhdGU7IGVsc2Ugc3RhdGljTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1zZyBvZiB2YWx1ZTsgbGV0IGk9aW5kZXhcIiBbbmdDbGFzc109XCIncC1tZXNzYWdlIHAtbWVzc2FnZS0nICsgbXNnLnNldmVyaXR5XCIgcm9sZT1cImFsZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgW0BtZXNzYWdlQW5pbWF0aW9uXT1cInt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHtzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWVzc2FnZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIncC1tZXNzYWdlLWljb24gcGknICsgKG1zZy5pY29uID8gJyAnICsgbXNnLmljb24gOiAnJylcIiBbbmdDbGFzc109XCJ7J3BpLWluZm8tY2lyY2xlJzogbXNnLnNldmVyaXR5ID09PSAnaW5mbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpLWNoZWNrJzogbXNnLnNldmVyaXR5ID09PSAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJzogbXNnLnNldmVyaXR5ID09PSAnd2FybicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpLXRpbWVzLWNpcmNsZSc6IG1zZy5zZXZlcml0eSA9PT0gJ2Vycm9yJ31cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVzY2FwZTsgZWxzZSBlc2NhcGVPdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5zdW1tYXJ5XCIgY2xhc3M9XCJwLW1lc3NhZ2Utc3VtbWFyeVwiIFtpbm5lckhUTUxdPVwibXNnLnN1bW1hcnlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtc2cuZGV0YWlsXCIgY2xhc3M9XCJwLW1lc3NhZ2UtZGV0YWlsXCIgW2lubmVySFRNTF09XCJtc2cuZGV0YWlsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VzY2FwZU91dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5zdW1tYXJ5XCIgY2xhc3M9XCJwLW1lc3NhZ2Utc3VtbWFyeVwiPnt7bXNnLnN1bW1hcnl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1zZy5kZXRhaWxcIiBjbGFzcz1cInAtbWVzc2FnZS1kZXRhaWxcIj57e21zZy5kZXRhaWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicC1tZXNzYWdlLWNsb3NlIHAtbGlua1wiIChjbGljayk9XCJyZW1vdmVNZXNzYWdlKGkpXCIgKm5nSWY9XCJjbG9zYWJsZVwiIHR5cGU9XCJidXR0b25cIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicC1tZXNzYWdlLWNsb3NlLWljb24gcGkgcGktdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhdGljTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLW1lc3NhZ2UgcC1tZXNzYWdlLScgKyBzZXZlcml0eVwiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZXNzYWdlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTI1JSknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgaGVpZ2h0OiAwLCBtYXJnaW5Ub3A6IDAsIG1hcmdpbkJvdHRvbTogMCwgbWFyZ2luTGVmdDogMCwgbWFyZ2luUmlnaHQ6IDAsIG92ZXJmbG93OiAnaGlkZGVuJywgb3BhY2l0eTogMCB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL21lc3NhZ2VzLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBNZXNzYWdlW107XG5cbiAgICBASW5wdXQoKSBjbG9zYWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZW5hYmxlU2VydmljZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBrZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzZXZlcml0eTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMzAwbXMgZWFzZS1vdXQnO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnMjAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VbXT4oKTtcblxuICAgIG1lc3NhZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNsZWFyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VTZXJ2aWNlICYmIHRoaXMuZW5hYmxlU2VydmljZSAmJiAhdGhpcy5jb250ZW50VGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZU9ic2VydmVyLnN1YnNjcmliZSgobWVzc2FnZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkTWVzc2FnZXMgPSBtZXNzYWdlcy5maWx0ZXIobSA9PiB0aGlzLmtleSA9PT0gbS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPyBbLi4udGhpcy52YWx1ZSwgLi4uZmlsdGVyZWRNZXNzYWdlc10gOiBbLi4uZmlsdGVyZWRNZXNzYWdlc107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5rZXkgPT09IG1lc3NhZ2VzLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPyBbLi4udGhpcy52YWx1ZSwgLi4uW21lc3NhZ2VzXV0gOiBbbWVzc2FnZXNdO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXJPYnNlcnZlci5zdWJzY3JpYmUoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzTWVzc2FnZXMoKSB7XG4gICAgICAgIGxldCBwYXJlbnRFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAocGFyZW50RWwgJiYgcGFyZW50RWwub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGUgIT0gbnVsbCB8fCB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTWVzc2FnZShpOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKChtc2csIGluZGV4KSA9PiBpbmRleCAhPT0gaSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZXZlcml0eSA9IHRoaXMuc2V2ZXJpdHkgfHwgKHRoaXMuaGFzTWVzc2FnZXMoKSA/IHRoaXMudmFsdWVbMF0uc2V2ZXJpdHkgOiBudWxsKTtcblxuICAgICAgICBpZiAodGhpcy5oYXNNZXNzYWdlcygpKSB7XG4gICAgICAgICAgICBzd2l0Y2goc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1jaGVjayc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1pbmZvLWNpcmNsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktdGltZXMnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnd2Fybic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdwaS1pbmZvLWNpcmNsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jbGVhclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTWVzc2FnZXNdLFxuICAgIGRlY2xhcmF0aW9uczogW01lc3NhZ2VzXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlc01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/messages/primeng-messages.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/messages/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/messages/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXNzYWdlcy9wcmltZW5nLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/messages/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/messages/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/messages/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './messages';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tZXNzYWdlcy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcyc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/multiselect/multiselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/multiselect/multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/multiselect/multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1161 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ContentChildren, ContentChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { SharedModule, PrimeTemplate, Footer, Header, TranslationKeys } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ScrollingModule } from '@angular/cdk/scrolling';
+import { TooltipModule } from 'primeng/tooltip';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/ripple";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/api";
+import * as i4 from "@angular/cdk/scrolling";
+import * as i5 from "primeng/tooltip";
+export const MULTISELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => MultiSelect),
+    multi: true
+};
+export class MultiSelectItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+    onOptionKeydown(event) {
+        this.onKeydown.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+MultiSelectItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+MultiSelectItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelectItem, selector: "p-multiSelectItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick", onKeydown: "onKeydown" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-multiSelectItem',
+                    template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }] } });
+export class MultiSelect {
+    constructor(el, renderer, cd, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.filter = true;
+        this.displaySelectedLabel = true;
+        this.maxSelectedLabels = 3;
+        this.selectedItemsLabel = 'ellipsis';
+        this.showToggleAll = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.showHeader = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.display = 'comma';
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onPanelShow = new EventEmitter();
+        this.onPanelHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set defaultLabel(val) {
+        this._defaultLabel = val;
+        this.updateLabel();
+    }
+    get defaultLabel() {
+        return this._defaultLabel;
+    }
+    set placeholder(val) {
+        this._placeholder = val;
+        this.updateLabel();
+    }
+    get placeholder() {
+        return this._placeholder;
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.updateLabel();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.updateLabel();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItems':
+                    this.selectedItemsTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.overlayVisible) {
+            this.show();
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.filtered) {
+            this.alignOverlay();
+            this.filtered = false;
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    isOptionDisabled(option) {
+        let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+        return (disabled || (this.maxSelectionLimitReached && !this.isSelected(option)));
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateLabel();
+        this.updateFilledState();
+        this.checkSelectionLimit();
+        this.cd.markForCheck();
+    }
+    checkSelectionLimit() {
+        if (this.selectionLimit && (this.value && this.value.length === this.selectionLimit)) {
+            this.maxSelectionLimitReached = true;
+        }
+        else {
+            this.maxSelectionLimitReached = false;
+        }
+    }
+    updateFilledState() {
+        this.filled = (this.value && this.value.length > 0);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event) {
+        let option = event.option;
+        if (this.isOptionDisabled(option)) {
+            return;
+        }
+        let optionValue = this.getOptionValue(option);
+        let selectionIndex = this.findSelectionIndex(optionValue);
+        if (selectionIndex != -1) {
+            this.value = this.value.filter((val, i) => i != selectionIndex);
+            if (this.selectionLimit) {
+                this.maxSelectionLimitReached = false;
+            }
+        }
+        else {
+            if (!this.selectionLimit || (!this.value || this.value.length < this.selectionLimit)) {
+                this.value = [...this.value || [], optionValue];
+            }
+            this.checkSelectionLimit();
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event.originalEvent, value: this.value, itemValue: optionValue });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isSelected(option) {
+        return this.findSelectionIndex(this.getOptionValue(option)) != -1;
+    }
+    findSelectionIndex(val) {
+        let index = -1;
+        if (this.value) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        this.updateFilledState();
+        this.updateLabel();
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    show() {
+        if (!this.overlayVisible) {
+            this.overlayVisible = true;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.filterInputChild && this.filterInputChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterInputChild.nativeElement.focus();
+                    }
+                }
+                this.onPanelShow.emit();
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.unbindDocumentClickListener();
+        if (this.resetFilterOnHide) {
+            this.filterInputChild.nativeElement.value = '';
+            this._filterValue = null;
+            this._filteredOptions = null;
+        }
+        this.onPanelHide.emit();
+        this.cd.markForCheck();
+    }
+    close(event) {
+        this.hide();
+        event.preventDefault();
+        event.stopPropagation();
+    }
+    onMouseclick(event, input) {
+        if (this.disabled || this.readonly || event.target.isSameNode(this.accessibleViewChild.nativeElement)) {
+            return;
+        }
+        this.onClick.emit(event);
+        if (!this.isOverlayClick(event) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                input.focus();
+                this.show();
+            }
+        }
+    }
+    removeChip(chip, event) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
+        this.onModelChange(this.value);
+        this.checkSelectionLimit();
+        this.onChange.emit({ originalEvent: event, value: this.value, itemValue: chip });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isOverlayClick(event) {
+        let targetNode = event.target;
+        return this.overlay ? (this.overlay.isSameNode(targetNode) || this.overlay.contains(targetNode)) : false;
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || this.isOverlayClick(event));
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit({ originalEvent: event });
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit({ originalEvent: event });
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    onOptionKeydown(event) {
+        if (this.readonly) {
+            return;
+        }
+        switch (event.originalEvent.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(event.originalEvent.target.parentElement);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event);
+                event.originalEvent.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];
+        else
+            return null;
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //escape
+            case 27:
+                this.hide();
+                break;
+        }
+    }
+    updateLabel() {
+        if (this.value && this.options && this.value.length && this.displaySelectedLabel) {
+            let label = '';
+            for (let i = 0; i < this.value.length; i++) {
+                let itemLabel = this.findLabelByValue(this.value[i]);
+                if (itemLabel) {
+                    if (label.length > 0) {
+                        label = label + ', ';
+                    }
+                    label = label + itemLabel;
+                }
+            }
+            if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {
+                this.valuesAsString = label;
+            }
+            else {
+                let pattern = /{(.*?)}/;
+                if (pattern.test(this.selectedItemsLabel)) {
+                    this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');
+                }
+                else {
+                    this.valuesAsString = this.selectedItemsLabel;
+                }
+            }
+        }
+        else {
+            this.valuesAsString = this.placeholder || this.defaultLabel;
+        }
+    }
+    findLabelByValue(val) {
+        if (this.group) {
+            let label = null;
+            for (let i = 0; i < this.options.length; i++) {
+                let subOptions = this.getOptionGroupChildren(this.options[i]);
+                if (subOptions) {
+                    label = this.searchLabelByValue(val, subOptions);
+                    if (label) {
+                        break;
+                    }
+                }
+            }
+            return label;
+        }
+        else {
+            return this.searchLabelByValue(val, this.options);
+        }
+    }
+    searchLabelByValue(val, options) {
+        let label = null;
+        for (let i = 0; i < options.length; i++) {
+            let option = options[i];
+            let optionValue = this.getOptionValue(option);
+            if (val == null && optionValue == null || ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                label = this.getOptionLabel(option);
+                break;
+            }
+        }
+        return label;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyOptions() {
+        let optionsToRender = this.optionsToRender;
+        return !optionsToRender || optionsToRender.length === 0;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    onFilterInputChange(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+        this.cd.detectChanges();
+        this.alignOverlay();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (!DomHandler.isAndroid()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+MultiSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+MultiSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelect, selector: "p-multiSelect", inputs: { style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: "disabled", readonly: "readonly", group: "group", filter: "filter", filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: "overlayVisible", tabindex: "tabindex", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: "selectionLimit", selectedItemsLabel: "selectedItemsLabel", showToggleAll: "showToggleAll", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: "showHeader", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", filterBy: "filterBy", virtualScroll: "virtualScroll", itemSize: "itemSize", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", display: "display", scrollHeight: "scrollHeight", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [MULTISELECT_VALUE_ACCESSOR], queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterInputChild", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"], components: [{ type: MultiSelectItem, selector: "p-multiSelectItem", inputs: ["option", "selected", "label", "disabled", "itemSize", "template"], outputs: ["onClick", "onKeydown"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.Ripple, selector: "[pRipple]" }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-multiSelect', template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus || overlayVisible'
+                    }, providers: [MULTISELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], overlayVisible: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], displaySelectedLabel: [{
+                type: Input
+            }], maxSelectedLabels: [{
+                type: Input
+            }], selectionLimit: [{
+                type: Input
+            }], selectedItemsLabel: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterInputChild: [{
+                type: ViewChild,
+                args: ['filterInput']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onPanelShow: [{
+                type: Output
+            }], onPanelHide: [{
+                type: Output
+            }], scrollHeight: [{
+                type: Input
+            }], defaultLabel: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+export class MultiSelectModule {
+}
+MultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [MultiSelect, SharedModule, ScrollingModule] });
+MultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [MultiSelect, SharedModule, ScrollingModule],
+                    declarations: [MultiSelect, MultiSelectItem]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbXVsdGlzZWxlY3QvbXVsdGlzZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQW9GLEtBQUssRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUNsSixVQUFVLEVBQUUsU0FBUyxFQUFrQyxlQUFlLEVBQWEsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBRSxPQUFPLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZ0MsZUFBZSxFQUFrQixNQUFNLGFBQWEsQ0FBQztBQUN6SSxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFOUMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQVE7SUFDN0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUs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LFdBQVc7c0JBQXZCLEtBQUs7O0FBc3lCVixNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBajhCakIsV0FBVyxFQTlKWCxlQUFlLGFBMmxDZCxZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsWUFBWSxhQTc3QnJFLFdBQVcsRUE4N0JFLFlBQVksRUFBQyxlQUFlOytHQUd6QyxpQkFBaUIsWUFKakIsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsWUFBWSxDQUFDLEVBQ3pELFlBQVksRUFBQyxlQUFlOzJGQUd6QyxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLFlBQVksQ0FBQztvQkFDL0UsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFDLFlBQVksRUFBQyxlQUFlLENBQUM7b0JBQ25ELFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBQyxlQUFlLENBQUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiwgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQ29udGVudENoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyLCBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE9iamVjdFV0aWxzLCBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlLCBQcmltZVRlbXBsYXRlLCBGb290ZXIsIEhlYWRlciwgRmlsdGVyU2VydmljZSwgUHJpbWVOR0NvbmZpZywgVHJhbnNsYXRpb25LZXlzLCBPdmVybGF5U2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5cbmV4cG9ydCBjb25zdCBNVUxUSVNFTEVDVF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXVsdGlTZWxlY3QpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW11bHRpU2VsZWN0SXRlbScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGxpIGNsYXNzPVwicC1tdWx0aXNlbGVjdC1pdGVtXCIgKGNsaWNrKT1cIm9uT3B0aW9uQ2xpY2soJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uT3B0aW9uS2V5ZG93bigkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IG51bGwgOiAnMCdcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IGl0ZW1TaXplICsgJ3B4J31cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IHNlbGVjdGVkLCAncC1kaXNhYmxlZCc6IGRpc2FibGVkfVwiIHBSaXBwbGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveCBwLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOiBzZWxlY3RlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNoZWNrYm94LWljb25cIiBbbmdDbGFzc109XCJ7J3BpIHBpLWNoZWNrJzogc2VsZWN0ZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0ZW1wbGF0ZVwiPnt7bGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogb3B0aW9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdEl0ZW0ge1xuXG4gICAgQElucHV0KCkgb3B0aW9uOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzZWxlY3RlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBhbnk7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGl0ZW1TaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbktleWRvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgb25PcHRpb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBvcHRpb246IHRoaXMub3B0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uT3B0aW9uS2V5ZG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbktleWRvd24uZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG9wdGlvbjogdGhpcy5vcHRpb25cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbXVsdGlTZWxlY3QnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciBbbmdDbGFzc109XCJ7J3AtbXVsdGlzZWxlY3QgcC1jb21wb25lbnQnOnRydWUsXG4gICAgICAgICAgICAncC1tdWx0aXNlbGVjdC1vcGVuJzpvdmVybGF5VmlzaWJsZSxcbiAgICAgICAgICAgICdwLW11bHRpc2VsZWN0LWNoaXAnOiBkaXNwbGF5ID09PSAnY2hpcCcsXG4gICAgICAgICAgICAncC1mb2N1cyc6Zm9jdXMsXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IGRpc2FibGVkfVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTW91c2VjbGljaygkZXZlbnQsaW4pXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaW4gdHlwZT1cInRleHRcIiByZWFkb25seT1cInJlYWRvbmx5XCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFthdHRyLm5hbWVdPVwibmFtZVwiIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCIgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm92ZXJsYXlWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtbGFiZWwtY29udGFpbmVyXCIgW3BUb29sdGlwXT1cInRvb2x0aXBcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiIFtwb3NpdGlvblN0eWxlXT1cInRvb2x0aXBQb3NpdGlvblN0eWxlXCIgW3Rvb2x0aXBTdHlsZUNsYXNzXT1cInRvb2x0aXBTdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtbGFiZWxcIiBbbmdDbGFzc109XCJ7J3AtcGxhY2Vob2xkZXInOiB2YWx1ZXNBc1N0cmluZyA9PT0gKGRlZmF1bHRMYWJlbCB8fCBwbGFjZWhvbGRlciksICdwLW11bHRpc2VsZWN0LWxhYmVsLWVtcHR5JzogKCh2YWx1ZXNBc1N0cmluZyA9PSBudWxsIHx8IHZhbHVlc0FzU3RyaW5nLmxlbmd0aCA9PT0gMCkgJiYgKHBsYWNlaG9sZGVyID09IG51bGwgfHwgcGxhY2Vob2xkZXIubGVuZ3RoID09PSAwKSl9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0ZWRJdGVtc1RlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheSA9PT0gJ2NvbW1hJ1wiPnt7dmFsdWVzQXNTdHJpbmcgfHwgJ2VtcHR5J319PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheSA9PT0gJ2NoaXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjdG9rZW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJwLW11bHRpc2VsZWN0LXRva2VuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tdWx0aXNlbGVjdC10b2tlbi1sYWJlbFwiPnt7ZmluZExhYmVsQnlWYWx1ZShpdGVtKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkaXNhYmxlZFwiIGNsYXNzPVwicC1tdWx0aXNlbGVjdC10b2tlbi1pY29uIHBpIHBpLXRpbWVzLWNpcmNsZVwiIChjbGljayk9XCJyZW1vdmVDaGlwKGl0ZW0sICRldmVudClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDBcIj57e3BsYWNlaG9sZGVyIHx8IGRlZmF1bHRMYWJlbCB8fCAnZW1wdHknfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbXNUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLW11bHRpc2VsZWN0LXRyaWdnZXInOnRydWV9XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW11bHRpc2VsZWN0LXRyaWdnZXItaWNvblwiIFtuZ0NsYXNzXT1cImRyb3Bkb3duSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm92ZXJsYXlWaXNpYmxlXCIgW25nQ2xhc3NdPVwiWydwLW11bHRpc2VsZWN0LXBhbmVsIHAtY29tcG9uZW50J11cIiBbQG92ZXJsYXlBbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fVwiIChAb3ZlcmxheUFuaW1hdGlvbi5zdGFydCk9XCJvbk92ZXJsYXlBbmltYXRpb25TdGFydCgkZXZlbnQpXCJvbk92ZXJsYXlBbmltYXRpb25FbmRcbiAgICAgICAgICAgICAgICAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25FbmQoJGV2ZW50KVwiIFtuZ1N0eWxlXT1cInBhbmVsU3R5bGVcIiBbY2xhc3NdPVwicGFuZWxTdHlsZUNsYXNzXCIgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tdWx0aXNlbGVjdC1oZWFkZXJcIiAqbmdJZj1cInNob3dIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveCBwLWNvbXBvbmVudFwiICpuZ0lmPVwic2hvd1RvZ2dsZUFsbCAmJiAhc2VsZWN0aW9uTGltaXRcIiBbbmdDbGFzc109XCJ7J3AtY2hlY2tib3gtZGlzYWJsZWQnOiBkaXNhYmxlZCB8fCB0b2dnbGVBbGxEaXNhYmxlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHJlYWRvbmx5PVwicmVhZG9ubHlcIiBbY2hlY2tlZF09XCJhbGxDaGVja2VkXCIgKGZvY3VzKT1cIm9uSGVhZGVyQ2hlY2tib3hGb2N1cygpXCIgKGJsdXIpPVwib25IZWFkZXJDaGVja2JveEJsdXIoKVwiIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZUFsbCgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHRvZ2dsZUFsbERpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIHJvbGU9XCJjaGVja2JveFwiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJhbGxDaGVja2VkXCIgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6YWxsQ2hlY2tlZCwgJ3AtZm9jdXMnOiBoZWFkZXJDaGVja2JveEZvY3VzLCAncC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHRvZ2dsZUFsbERpc2FibGVkfVwiIChjbGljayk9XCJ0b2dnbGVBbGwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jaGVja2JveC1pY29uXCIgW25nQ2xhc3NdPVwieydwaSBwaS1jaGVjayc6YWxsQ2hlY2tlZH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW11bHRpc2VsZWN0LWZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNmaWx0ZXJJbnB1dCB0eXBlPVwidGV4dFwiIHJvbGU9XCJ0ZXh0Ym94XCIgW3ZhbHVlXT1cImZpbHRlclZhbHVlfHwnJ1wiIChpbnB1dCk9XCJvbkZpbHRlcklucHV0Q2hhbmdlKCRldmVudClcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZmlsdGVyIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwiZmlsdGVyUGxhY2VIb2xkZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFGaWx0ZXJMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW11bHRpc2VsZWN0LWZpbHRlci1pY29uIHBpIHBpLXNlYXJjaFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwLW11bHRpc2VsZWN0LWNsb3NlIHAtbGlua1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtY2xvc2UtaWNvbiBwaSBwaS10aW1lc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtaXRlbXMtd3JhcHBlclwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cInZpcnR1YWxTY3JvbGwgPyAnYXV0bycgOiAoc2Nyb2xsSGVpZ2h0fHwnYXV0bycpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInAtbXVsdGlzZWxlY3QtaXRlbXMgcC1jb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J3AtbXVsdGlzZWxlY3QtdmlydHVhbHNjcm9sbCc6IHZpcnR1YWxTY3JvbGx9XCIgcm9sZT1cImxpc3Rib3hcIiBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtb3B0Z3JvdXAgW25nRm9yT2ZdPVwib3B0aW9uc1RvUmVuZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtbXVsdGlzZWxlY3QtaXRlbS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZ3JvdXBUZW1wbGF0ZVwiPnt7Z2V0T3B0aW9uR3JvdXBMYWJlbChvcHRncm91cCl8fCdlbXB0eSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBvcHRncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1zbGlzdDsgY29udGV4dDogeyRpbXBsaWNpdDogZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRncm91cCl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtc2xpc3Q7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbnNUb1JlbmRlcn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtc2xpc3QgbGV0LW9wdGlvbnNUb0Rpc3BsYXkgbGV0LXNlbGVjdGVkT3B0aW9uPVwic2VsZWN0ZWRPcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGw7IGVsc2UgdmlydHVhbFNjcm9sbExpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1vcHRpb24gbGV0LWk9XCJpbmRleFwiIFtuZ0Zvck9mXT1cIm9wdGlvbnNUb0Rpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0SXRlbSBbb3B0aW9uXT1cIm9wdGlvblwiIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKG9wdGlvbilcIiBbbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiIFtkaXNhYmxlZF09XCJpc09wdGlvbkRpc2FibGVkKG9wdGlvbilcIiAob25DbGljayk9XCJvbk9wdGlvbkNsaWNrKCRldmVudClcIiAob25LZXlkb3duKT1cIm9uT3B0aW9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiPjwvcC1tdWx0aVNlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnQgW25nU3R5bGVdPVwieydoZWlnaHQnOiBzY3JvbGxIZWlnaHR9XCIgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCIgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsICYmICFlbXB0eU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNUb0Rpc3BsYXk7IGxldCBpID0gaW5kZXg7IGxldCBjID0gY291bnQ7IGxldCBmID0gZmlyc3Q7IGxldCBsID0gbGFzdDsgbGV0IGUgPSBldmVuOyBsZXQgbyA9IG9kZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0SXRlbSBbb3B0aW9uXT1cIm9wdGlvblwiIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKG9wdGlvbilcIiBbbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiIFtkaXNhYmxlZF09XCJpc09wdGlvbkRpc2FibGVkKG9wdGlvbilcIiAob25DbGljayk9XCJvbk9wdGlvbkNsaWNrKCRldmVudClcIiAob25LZXlkb3duKT1cIm9uT3B0aW9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiPjwvcC1tdWx0aVNlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNGaWx0ZXIoKSAmJiBlbXB0eU9wdGlvbnNcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5RmlsdGVyVGVtcGxhdGUgJiYgIWVtcHR5VGVtcGxhdGU7IGVsc2UgZW1wdHlGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1wdHlGaWx0ZXJNZXNzYWdlTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHlGaWx0ZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUZpbHRlclRlbXBsYXRlIHx8IGVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFoYXNGaWx0ZXIoKSAmJiBlbXB0eU9wdGlvbnNcIiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5VGVtcGxhdGU7IGVsc2UgZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1wdHlNZXNzYWdlTGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHkgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbXVsdGlzZWxlY3QtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50IHAtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1maWxsZWRdJzogJ2ZpbGxlZCcsXG4gICAgICAgICdbY2xhc3MucC1pbnB1dHdyYXBwZXItZm9jdXNdJzogJ2ZvY3VzIHx8IG92ZXJsYXlWaXNpYmxlJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbTVVMVElTRUxFQ1RfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vbXVsdGlzZWxlY3QuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3QgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCxBZnRlckNvbnRlbnRJbml0LEFmdGVyVmlld0NoZWNrZWQsT25EZXN0cm95LENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwYW5lbFN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwYW5lbFN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBncm91cDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJQbGFjZUhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTG9jYWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvdmVybGF5VmlzaWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc3BsYXlTZWxlY3RlZExhYmVsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIG1heFNlbGVjdGVkTGFiZWxzOiBudW1iZXIgPSAzO1xuXG4gICAgQElucHV0KCkgc2VsZWN0aW9uTGltaXQ6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXNMYWJlbDogc3RyaW5nID0gJ2VsbGlwc2lzJztcblxuICAgIEBJbnB1dCgpIHNob3dUb2dnbGVBbGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZW1wdHlGaWx0ZXJNZXNzYWdlOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGVtcHR5TWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKSByZXNldEZpbHRlck9uSGlkZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZHJvcGRvd25JY29uOiBzdHJpbmcgPSAncGkgcGktY2hldnJvbi1kb3duJztcblxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwQ2hpbGRyZW46IHN0cmluZyA9IFwiaXRlbXNcIjtcblxuICAgIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZmlsdGVyQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGw6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBpdGVtU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBJbnB1dCgpIGFyaWFGaWx0ZXJMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTWF0Y2hNb2RlOiBzdHJpbmcgPSBcImNvbnRhaW5zXCI7XG5cbiAgICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0JztcblxuICAgIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvblN0eWxlOiBzdHJpbmcgPSAnYWJzb2x1dGUnO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGF1dG9mb2N1c0ZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmcgPSAnY29tbWEnO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dENoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW4nKSBhY2Nlc3NpYmxlVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXIpIGZvb3RlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZChIZWFkZXIpIGhlYWRlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblBhbmVsU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25QYW5lbEhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMjAwcHgnO1xuXG4gICAgX2RlZmF1bHRMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2V0IGRlZmF1bHRMYWJlbCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kZWZhdWx0TGFiZWwgPSB2YWw7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0TGFiZWw7XG4gICAgfVxuXG4gICAgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWw7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgICB9XG5cbiAgICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBvcHRpb25zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgc2V0IG9wdGlvbnModmFsOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsO1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGZpbHRlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgZmlsdGVyVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUgPSB2YWw7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVGaWx0ZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueVtdO1xuXG4gICAgcHVibGljIF9maWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvdmVybGF5OiBIVE1MRGl2RWxlbWVudDtcblxuICAgIHB1YmxpYyB2YWx1ZXNBc1N0cmluZzogc3RyaW5nO1xuXG4gICAgcHVibGljIGZvY3VzOiBib29sZWFuO1xuXG4gICAgZmlsbGVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgcHVibGljIF9maWx0ZXJWYWx1ZTogc3RyaW5nO1xuXG4gICAgcHVibGljIGZpbHRlcmVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGVtcHR5RmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgaGVhZGVyQ2hlY2tib3hGb2N1czogYm9vbGVhbjtcblxuICAgIF9vcHRpb25zOiBhbnlbXTtcblxuICAgIG1heFNlbGVjdGlvbkxpbWl0UmVhY2hlZDogYm9vbGVhbjtcblxuICAgIHNjcm9sbEhhbmRsZXI6IGFueTtcblxuICAgIGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIHByZXZlbnRNb2RlbFRvdWNoZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHlmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcblxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uTGFiZWwob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiAob3B0aW9uLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uVmFsdWUob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25WYWx1ZSkgOiAodGhpcy5vcHRpb25MYWJlbCB8fCBvcHRpb24udmFsdWUgPT09IHVuZGVmaW5lZCA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb25Hcm91cDogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkdyb3VwTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbkdyb3VwLCB0aGlzLm9wdGlvbkdyb3VwTGFiZWwpIDogKG9wdGlvbkdyb3VwLmxhYmVsICE9IHVuZGVmaW5lZCA/IG9wdGlvbkdyb3VwLmxhYmVsIDogb3B0aW9uR3JvdXApO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0aW9uR3JvdXA6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb25Hcm91cCwgdGhpcy5vcHRpb25Hcm91cENoaWxkcmVuKSA6IG9wdGlvbkdyb3VwLml0ZW1zO1xuICAgIH1cblxuICAgIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uOiBhbnkpIHtcbiAgICAgICAgbGV0IGRpc2FibGVkID0gdGhpcy5vcHRpb25EaXNhYmxlZCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkRpc2FibGVkKSA6IChvcHRpb24uZGlzYWJsZWQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5kaXNhYmxlZCA6IGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIChkaXNhYmxlZCB8fCAodGhpcy5tYXhTZWxlY3Rpb25MaW1pdFJlYWNoZWQgJiYgIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQoKTtcblxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGNoZWNrU2VsZWN0aW9uTGltaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpbWl0ICYmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID09PSB0aGlzLnNlbGVjdGlvbkxpbWl0KSkge1xuICAgICAgICAgICAgdGhpcy5tYXhTZWxlY3Rpb25MaW1pdFJlYWNoZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXhTZWxlY3Rpb25MaW1pdFJlYWNoZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbGxlZCA9ICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgbGV0IG9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG4gICAgICAgIGxldCBzZWxlY3Rpb25JbmRleCA9IHRoaXMuZmluZFNlbGVjdGlvbkluZGV4KG9wdGlvblZhbHVlKTtcbiAgICAgICAgaWYgKHNlbGVjdGlvbkluZGV4ICE9IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKHZhbCxpKSA9PiBpICE9IHNlbGVjdGlvbkluZGV4KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGltaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heFNlbGVjdGlvbkxpbWl0UmVhY2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbkxpbWl0IHx8ICghdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMuc2VsZWN0aW9uTGltaXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlIHx8IFtdLCBvcHRpb25WYWx1ZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tTZWxlY3Rpb25MaW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIHZhbHVlOiB0aGlzLnZhbHVlLCBpdGVtVmFsdWU6IG9wdGlvblZhbHVlfSk7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRTZWxlY3Rpb25JbmRleCh0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRTZWxlY3Rpb25JbmRleCh2YWw6IGFueSk6IG51bWJlcsKge1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmVxdWFscyh0aGlzLnZhbHVlW2ldLCB2YWwsIHRoaXMuZGF0YUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0IHRvZ2dsZUFsbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgb3B0aW9uc1RvUmVuZGVyID0gdGhpcy5vcHRpb25zVG9SZW5kZXI7XG4gICAgICAgIGlmICghb3B0aW9uc1RvUmVuZGVyIHx8IG9wdGlvbnNUb1JlbmRlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIG9wdGlvbnNUb1JlbmRlcikge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVBbGwoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy50b2dnbGVBbGxEaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWxsQ2hlY2tlZCA9IHRoaXMuYWxsQ2hlY2tlZDtcblxuICAgICAgICBpZiAoYWxsQ2hlY2tlZClcbiAgICAgICAgICAgIHRoaXMudW5jaGVja0FsbCgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmNoZWNrQWxsKCk7XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYWJlbCgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNoZWNrQWxsKCkge1xuICAgICAgICBsZXQgb3B0aW9uc1RvUmVuZGVyID0gdGhpcy5vcHRpb25zVG9SZW5kZXI7XG4gICAgICAgIGxldCB2YWw6IGFueVtdID0gW107XG5cbiAgICAgICAgb3B0aW9uc1RvUmVuZGVyLmZvckVhY2gob3B0ID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgICAgICAgIGxldCBvcHRpb25EaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHQpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uRGlzYWJsZWQgfHwgKG9wdGlvbkRpc2FibGVkICYmIHRoaXMuaXNTZWxlY3RlZChvcHQpKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWwucHVzaCh0aGlzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBzdWJPcHRpb25zID0gdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3ViT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBzdWJPcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25EaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25EaXNhYmxlZCB8fCAob3B0aW9uRGlzYWJsZWQgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnB1c2godGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIHVuY2hlY2tBbGwoKSB7XG4gICAgICAgIGxldCBvcHRpb25zVG9SZW5kZXIgPSB0aGlzLm9wdGlvbnNUb1JlbmRlcjtcbiAgICAgICAgbGV0IHZhbDogYW55W10gPSBbXTtcblxuICAgICAgICBvcHRpb25zVG9SZW5kZXIuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9wdGlvbkRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdCk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbkRpc2FibGVkICYmIHRoaXMuaXNTZWxlY3RlZChvcHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbC5wdXNoKHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdC5pdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBvcHQuaXRlbXMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbkRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uRGlzYWJsZWQgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwucHVzaCh0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKXtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdvdmVybGF5JywgdGhpcy5vdmVybGF5LCB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJJbnB1dENoaWxkICYmIHRoaXMuZmlsdGVySW5wdXRDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmVudE1vZGVsVG91Y2hlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcklucHV0Q2hpbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vblBhbmVsU2hvdy5lbWl0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwZW5kT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5LCB0aGlzLmFwcGVuZFRvKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkuc3R5bGUubWluV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkuc3R5bGUubWluV2lkdGggPSBEb21IYW5kbGVyLmdldFdpZHRoKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ25PdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbylcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbGF0aXZlUG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMucmVzZXRGaWx0ZXJPbkhpZGUpe1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnB1dENoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblBhbmVsSGlkZS5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY2xvc2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uTW91c2VjbGljayhldmVudDogTW91c2VFdmVudCwgaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSB8fCAoPE5vZGU+IGV2ZW50LnRhcmdldCkuaXNTYW1lTm9kZSh0aGlzLmFjY2Vzc2libGVWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNPdmVybGF5Q2xpY2soZXZlbnQpICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtbXVsdGlzZWxlY3QtdG9rZW4taWNvbicpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUNoaXAoY2hpcDogYW55LCBldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIodmFsID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCBjaGlwLCB0aGlzLmRhdGFLZXkpKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUsIGl0ZW1WYWx1ZTogY2hpcH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBpc092ZXJsYXlDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBsZXQgdGFyZ2V0Tm9kZSA9IDxOb2RlPiBldmVudC50YXJnZXQ7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXkgPyAodGhpcy5vdmVybGF5LmlzU2FtZU5vZGUodGFyZ2V0Tm9kZSkgfHwgdGhpcy5vdmVybGF5LmNvbnRhaW5zKHRhcmdldE5vZGUpKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlzT3V0c2lkZUNsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5lbC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmlzT3ZlcmxheUNsaWNrKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnR9KTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50fSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXZlbnRNb2RlbFRvdWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbktleWRvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaChldmVudC5vcmlnaW5hbEV2ZW50LndoaWNoKSB7XG5cbiAgICAgICAgICAgIC8vZG93blxuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEl0ZW0gPSB0aGlzLmZpbmROZXh0SXRlbShldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy91cFxuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICB2YXIgcHJldkl0ZW0gPSB0aGlzLmZpbmRQcmV2SXRlbShldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9lbnRlclxuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIGV2ZW50Lm9yaWdpbmFsRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE5leHRJdGVtKGl0ZW0pIHtcbiAgICAgICAgbGV0IG5leHRJdGVtID0gaXRlbS5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKG5leHRJdGVtKVxuICAgICAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dEl0ZW0uY2hpbGRyZW5bMF0sICdwLWRpc2FibGVkJykgfHwgRG9tSGFuZGxlci5pc0hpZGRlbihuZXh0SXRlbS5jaGlsZHJlblswXSkgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhuZXh0SXRlbSwgJ3AtbXVsdGlzZWxlY3QtaXRlbS1ncm91cCcpID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW0uY2hpbGRyZW5bMF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbS5jaGlsZHJlblswXSwgJ3AtZGlzYWJsZWQnKSB8fCBEb21IYW5kbGVyLmlzSGlkZGVuKHByZXZJdGVtLmNoaWxkcmVuWzBdKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKHByZXZJdGVtLCAncC1tdWx0aXNlbGVjdC1pdGVtLWdyb3VwJykgPyB0aGlzLmZpbmRQcmV2SXRlbShwcmV2SXRlbSkgOiBwcmV2SXRlbS5jaGlsZHJlblswXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KXtcbiAgICAgICAgc3dpdGNoKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL2Rvd25cbiAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9zcGFjZVxuICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVZpc2libGUpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vZXNjYXBlXG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVMYWJlbCgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMudmFsdWUubGVuZ3RoICYmIHRoaXMuZGlzcGxheVNlbGVjdGVkTGFiZWwpIHtcbiAgICAgICAgICAgIGxldCBsYWJlbCA9ICcnO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1MYWJlbCA9IHRoaXMuZmluZExhYmVsQnlWYWx1ZSh0aGlzLnZhbHVlW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGxhYmVsICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGxhYmVsICsgaXRlbUxhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoIDw9IHRoaXMubWF4U2VsZWN0ZWRMYWJlbHMgfHwgdGhpcy5zZWxlY3RlZEl0ZW1zTGFiZWwgPT09ICdlbGxpcHNpcycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0FzU3RyaW5nID0gbGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcGF0dGVybiA9IC97KC4qPyl9LztcbiAgICAgICAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHRoaXMuc2VsZWN0ZWRJdGVtc0xhYmVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0FzU3RyaW5nID0gdGhpcy5zZWxlY3RlZEl0ZW1zTGFiZWwucmVwbGFjZSh0aGlzLnNlbGVjdGVkSXRlbXNMYWJlbC5tYXRjaChwYXR0ZXJuKVswXSwgdGhpcy52YWx1ZS5sZW5ndGggKyAnJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNBc1N0cmluZyA9IHRoaXMuc2VsZWN0ZWRJdGVtc0xhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzQXNTdHJpbmcgPSB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuZGVmYXVsdExhYmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZExhYmVsQnlWYWx1ZSh2YWw6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBzdWJPcHRpb25zID0gdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKHRoaXMub3B0aW9uc1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1Yk9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLnNlYXJjaExhYmVsQnlWYWx1ZSh2YWwsIHN1Yk9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsYWJlbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaExhYmVsQnlWYWx1ZSh2YWwsIHRoaXMub3B0aW9ucylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaExhYmVsQnlWYWx1ZSh2YWw6IGFueSwgb3B0aW9uczogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBsZXQgbGFiZWwgPSBudWxsO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICAgICAgICBsZXQgb3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG5cbiAgICAgICAgICAgIGlmICh2YWwgPT0gbnVsbCAmJiBvcHRpb25WYWx1ZSA9PSBudWxsIHx8IE9iamVjdFV0aWxzLmVxdWFscyh2YWwsIG9wdGlvblZhbHVlLCB0aGlzLmRhdGFLZXkpKSB7XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuXG4gICAgZ2V0IGFsbENoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBvcHRpb25zVG9SZW5kZXIgPSB0aGlzLm9wdGlvbnNUb1JlbmRlcjtcbiAgICAgICAgaWYgKCFvcHRpb25zVG9SZW5kZXIgfHwgb3B0aW9uc1RvUmVuZGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCA9IDA7XG4gICAgICAgICAgICBsZXQgdW5zZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlT3B0aW9uc0xlbmd0aCA9IHRoaXMuZ3JvdXAgPyAwIDogdGhpcy5vcHRpb25zVG9SZW5kZXIubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Ygb3B0aW9uc1RvUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBvcHQgb2YgdGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG9wdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREaXNhYmxlZEl0ZW1zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkRGlzYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVuYWJsZWRJdGVtc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlT3B0aW9uc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKHZpc2libGVPcHRpb25zTGVuZ3RoID09PSBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgfHwgdmlzaWJsZU9wdGlvbnNMZW5ndGggPT09IHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIHx8wqBzZWxlY3RlZEVuYWJsZWRJdGVtc0xlbmd0aCAmJiB2aXNpYmxlT3B0aW9uc0xlbmd0aCA9PT0gKHNlbGVjdGVkRW5hYmxlZEl0ZW1zTGVuZ3RoICsgdW5zZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGggKyBzZWxlY3RlZERpc2FibGVkSXRlbXNMZW5ndGgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBvcHRpb25zVG9SZW5kZXIoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRPcHRpb25zIHx8IHRoaXMub3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgb3B0aW9uc1RvUmVuZGVyID0gdGhpcy5vcHRpb25zVG9SZW5kZXI7XG4gICAgICAgIHJldHVybiAhb3B0aW9uc1RvUmVuZGVyIHx8IG9wdGlvbnNUb1JlbmRlci5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5TWVzc2FnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5TWVzc2FnZSB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuRU1QVFlfTUVTU0FHRSk7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5RmlsdGVyTWVzc2FnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZSB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuRU1QVFlfRklMVEVSX01FU1NBR0UpO1xuICAgIH1cblxuICAgIGhhc0ZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclZhbHVlICYmIHRoaXMuX2ZpbHRlclZhbHVlLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIG9uRmlsdGVySW5wdXRDaGFuZ2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+IGV2ZW50LnRhcmdldCkudmFsdWU7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgZmlsdGVyOiB0aGlzLl9maWx0ZXJWYWx1ZX0pO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBhY3RpdmF0ZUZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzRmlsdGVyKCkgJiYgdGhpcy5fb3B0aW9ucykge1xuICAgICAgICAgICAgbGV0IHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSAodGhpcy5maWx0ZXJCeSB8fMKgdGhpcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnKS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9ICh0aGlzLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCcpLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBvcHRncm91cCBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlcmVkU3ViT3B0aW9ucyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIodGhpcy5nZXRPcHRpb25Hcm91cENoaWxkcmVuKG9wdGdyb3VwKSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRTdWJPcHRpb25zICYmIGZpbHRlcmVkU3ViT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkR3JvdXBzLnB1c2goey4uLm9wdGdyb3VwLCAuLi57W3RoaXMub3B0aW9uR3JvdXBDaGlsZHJlbl06IGZpbHRlcmVkU3ViT3B0aW9uc319KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlcmVkR3JvdXBzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih0aGlzLm9wdGlvbnMsIHNlYXJjaEZpZWxkcywgdGhpcy5fZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEZvY3VzKCkge1xuICAgICAgICB0aGlzLmhlYWRlckNoZWNrYm94Rm9jdXMgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uSGVhZGVyQ2hlY2tib3hCbHVyKCkge1xuICAgICAgICB0aGlzLmhlYWRlckNoZWNrYm94Rm9jdXMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPdXRzaWRlQ2xpY2tlZChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcyk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKCkge1xuICAgICAgICBpZiAoIURvbUhhbmRsZXIuaXNBbmRyb2lkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlIaWRlKCkge1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZU92ZXJsYXlBcHBlbmQoKTtcbiAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxTaGFyZWRNb2R1bGUsU2Nyb2xsaW5nTW9kdWxlLFRvb2x0aXBNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbTXVsdGlTZWxlY3QsU2hhcmVkTW9kdWxlLFNjcm9sbGluZ01vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbTXVsdGlTZWxlY3QsTXVsdGlTZWxlY3RJdGVtXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/multiselect/primeng-multiselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/multiselect/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/multiselect/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1tdWx0aXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tdWx0aXNlbGVjdC9wcmltZW5nLW11bHRpc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/multiselect/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/multiselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/multiselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './multiselect';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tdWx0aXNlbGVjdC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tdWx0aXNlbGVjdCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/orderlist/orderlist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/orderlist/orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/orderlist/orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,473 @@
+import { NgModule, Component, Input, Output, ContentChildren, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { ObjectUtils, UniqueComponentId } from 'primeng/utils';
+import { RippleModule } from 'primeng/ripple';
+import { DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/button";
+import * as i4 from "primeng/ripple";
+import * as i5 from "@angular/cdk/drag-drop";
+export class OrderList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.controlsPosition = 'left';
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.selectionChange = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.onReorder = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onFilterEvent = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');
+            let listItem;
+            if (listItems.length > 0) {
+                if (this.movedUp)
+                    listItem = listItems[0];
+                else
+                    listItem = listItems[listItems.length - 1];
+                DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);
+            }
+            this.movedUp = false;
+            this.movedDown = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.filterValue) {
+            this.filter();
+        }
+    }
+    onItemClick(event, item, index) {
+        this.itemTouched = false;
+        let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);
+        let selected = (selectedIndex != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = (metaKey) ? this._selection ? [...this._selection] : [] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        else {
+            if (selected) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = this._selection ? [...this._selection] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        //binding
+        this.selectionChange.emit(this._selection);
+        //event
+        this.onSelectionChange.emit({ originalEvent: event, value: this._selection });
+    }
+    onFilterKeyup(event) {
+        this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        this.filter();
+        this.onFilterEvent.emit({
+            originalEvent: event,
+            value: this.visibleOptions
+        });
+    }
+    filter() {
+        let searchFields = this.filterBy.split(',');
+        this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+    }
+    isItemVisible(item) {
+        if (this.filterValue && this.filterValue.trim().length) {
+            for (let i = 0; i < this.visibleOptions.length; i++) {
+                if (item == this.visibleOptions[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        this.itemTouched = true;
+    }
+    isSelected(item) {
+        return ObjectUtils.findIndexInList(item, this.selection) != -1;
+    }
+    isEmpty() {
+        return this.filterValue ? (!this.visibleOptions || this.visibleOptions.length === 0) : (!this.value || this.value.length === 0);
+    }
+    moveUp() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex - 1];
+                    this.value[selectedItemIndex - 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedUp = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveTop() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = 0;
+        }
+    }
+    moveDown() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex + 1];
+                    this.value[selectedItemIndex + 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedDown = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveBottom() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;
+        }
+    }
+    onDrop(event) {
+        let previousIndex = event.previousIndex;
+        let currentIndex = event.currentIndex;
+        if (previousIndex !== currentIndex) {
+            if (this.visibleOptions) {
+                if (this.filterValue) {
+                    previousIndex = ObjectUtils.findIndexInList(event.item.data, this.value);
+                    currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);
+                }
+                moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);
+            }
+            moveItemInArray(this.value, previousIndex, currentIndex);
+            this.onReorder.emit([event.item.data]);
+        }
+    }
+    onItemKeydown(event, item, index) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, index);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+                @media screen and (max-width: ${this.breakpoint}) {
+                    .p-orderlist[${this.id}] {
+                        flex-direction: column;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls {
+                        padding: var(--content-padding);
+                        flex-direction: row;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {
+                        margin-right: var(--inline-spacing);
+                        margin-bottom: 0;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {
+                        margin-right: 0;
+                    }
+                }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+OrderList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+OrderList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrderList, selector: "p-orderList", inputs: { header: "header", style: "style", styleClass: "styleClass", listStyle: "listStyle", responsive: "responsive", filterBy: "filterBy", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", controlsPosition: "controlsPosition", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint", trackBy: "trackBy", selection: "selection", value: "value" }, outputs: { selectionChange: "selectionChange", onReorder: "onReorder", onSelectionChange: "onSelectionChange", onFilterEvent: "onFilterEvent" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewChild", first: true, predicate: ["listelement"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-orderList', template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { header: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], controlsPosition: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], trackBy: [{
+                type: Input
+            }], onReorder: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], onFilterEvent: [{
+                type: Output
+            }], listViewChild: [{
+                type: ViewChild,
+                args: ['listelement']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selection: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+export class OrderListModule {
+}
+OrderListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrderListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, declarations: [OrderList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [OrderList, SharedModule, DragDropModule] });
+OrderListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [OrderList, SharedModule, DragDropModule],
+                    declarations: [OrderList]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJsaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL29yZGVybGlzdC9vcmRlcmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQThDLEtBQUssRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUF1QixZQUFZLEVBQUMsU0FBUyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0TyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsYUFBYSxFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFjLGNBQWMsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQW1EcEYsTUFBTSxPQUFPLFNBQVM7SUFzRWxCLFlBQW1CLEVBQWMsRUFBUyxFQUFxQixFQUFTLGFBQTRCO1FBQWpGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBcEQzRixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFFakMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixxQkFBZ0IsR0FBVyxNQUFNLENBQUM7UUFJbEMsb0JBQWUsR0FBVyxVQUFVLENBQUM7UUFFckMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU1QixvQkFBZSxHQUFzQixJQUFJLFlB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QUMsWUFBWSxFQUFDLGNBQWMsYUEzYW5FLFNBQVMsRUE0YUUsWUFBWSxFQUFDLGNBQWM7NkdBR3RDLGVBQWUsWUFKZixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxjQUFjLENBQUMsRUFDekQsWUFBWSxFQUFDLGNBQWM7MkZBR3RDLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGNBQWMsQ0FBQztvQkFDN0UsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxjQUFjLENBQUM7b0JBQ2hELFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxFbGVtZW50UmVmLEFmdGVyVmlld0NoZWNrZWQsQWZ0ZXJDb250ZW50SW5pdCxJbnB1dCxPdXRwdXQsQ29udGVudENoaWxkcmVuLFF1ZXJ5TGlzdCxUZW1wbGF0ZVJlZixFdmVudEVtaXR0ZXIsVmlld0NoaWxkLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGUsUHJpbWVUZW1wbGF0ZSxGaWx0ZXJTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7T2JqZWN0VXRpbHMsIFVuaXF1ZUNvbXBvbmVudElkfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge0Nka0RyYWdEcm9wLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW9yZGVyTGlzdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3Atb3JkZXJsaXN0IHAtY29tcG9uZW50JzogdHJ1ZSwgJ3Atb3JkZXJsaXN0LWNvbnRyb2xzLWxlZnQnOiBjb250cm9sc1Bvc2l0aW9uID09PSAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICdwLW9yZGVybGlzdC1jb250cm9scy1yaWdodCc6IGNvbnRyb2xzUG9zaXRpb24gPT09ICdyaWdodCd9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS11cFwiIChjbGljayk9XCJtb3ZlVXAoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktYW5nbGUtZG91YmxlLXVwXCIgKGNsaWNrKT1cIm1vdmVUb3AoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktYW5nbGUtZG93blwiIChjbGljayk9XCJtb3ZlRG93bigpXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3VibGUtZG93blwiIChjbGljayk9XCJtb3ZlQm90dG9tKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyIHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW9yZGVybGlzdC10aXRsZVwiICpuZ0lmPVwiIWhlYWRlclRlbXBsYXRlXCI+e3toZWFkZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1vcmRlcmxpc3QtZmlsdGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiZmlsdGVyQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcm9sZT1cInRleHRib3hcIiAoa2V5dXApPVwib25GaWx0ZXJLZXl1cCgkZXZlbnQpXCIgY2xhc3M9XCJwLW9yZGVybGlzdC1maWx0ZXItaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJmaWx0ZXJQbGFjZWhvbGRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUZpbHRlckxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtb3JkZXJsaXN0LWZpbHRlci1pY29uIHBpIHBpLXNlYXJjaFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsICNsaXN0ZWxlbWVudCBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCIgY2xhc3M9XCJwLW9yZGVybGlzdC1saXN0XCIgW25nU3R5bGVdPVwibGlzdFN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JUcmFja0J5XT1cInRyYWNrQnlcIiBsZXQtaXRlbSBbbmdGb3JPZl09XCJ2YWx1ZVwiIGxldC1pPVwiaW5kZXhcIiBsZXQtbD1cImxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtb3JkZXJsaXN0LWl0ZW1cIiB0YWJpbmRleD1cIjBcIiBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKGl0ZW0pfVwiIGNka0RyYWcgcFJpcHBsZSBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWRyYWdkcm9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LGl0ZW0saSlcIiAodG91Y2hlbmQpPVwib25JdGVtVG91Y2hFbmQoKVwiIChrZXlkb3duKT1cIm9uSXRlbUtleWRvd24oJGV2ZW50LGl0ZW0saSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSXRlbVZpc2libGUoaXRlbSlcIiByb2xlPVwib3B0aW9uXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFbXB0eSgpICYmIChlbXB0eU1lc3NhZ2VUZW1wbGF0ZSB8fCBlbXB0eUZpbHRlck1lc3NhZ2VUZW1wbGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFmaWx0ZXJWYWx1ZSB8fCAhZW1wdHlGaWx0ZXJNZXNzYWdlVGVtcGxhdGVcIiBjbGFzcz1cInAtb3JkZXJsaXN0LWVtcHR5LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlNZXNzYWdlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWx0ZXJWYWx1ZVwiIGNsYXNzPVwicC1vcmRlcmxpc3QtZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUZpbHRlck1lc3NhZ2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vb3JkZXJsaXN0LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE9yZGVyTGlzdCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsaXN0U3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHJlc3BvbnNpdmU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWV0YUtleVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgY29udHJvbHNQb3NpdGlvbjogc3RyaW5nID0gJ2xlZnQnO1xuXG4gICAgQElucHV0KCkgYXJpYUZpbHRlckxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJNYXRjaE1vZGU6IHN0cmluZyA9IFwiY29udGFpbnNcIjtcblxuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnQ6IHN0cmluZyA9IFwiOTYwcHhcIjtcblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgdHJhY2tCeTogRnVuY3Rpb24gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiBpdGVtO1xuXG4gICAgQE91dHB1dCgpIG9uUmVvcmRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRmlsdGVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbGlzdGVsZW1lbnQnKSBsaXN0Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBlbXB0eUZpbHRlck1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIF9zZWxlY3Rpb246IGFueVtdO1xuXG4gICAgbW92ZWRVcDogYm9vbGVhbjtcblxuICAgIG1vdmVkRG93bjogYm9vbGVhbjtcblxuICAgIGl0ZW1Ub3VjaGVkOiBib29sZWFuO1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIHB1YmxpYyBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuXG4gICAgcHVibGljIHZpc2libGVPcHRpb25zOiBhbnlbXTtcblxuICAgIHB1YmxpYyBfdmFsdWU6IGFueVtdO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSkge31cblxuICAgIGdldCBzZWxlY3Rpb24oKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24odmFsOmFueVtdKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHZhbDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eUZpbHRlck1lc3NhZ2VUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5tb3ZlZFVwfHx0aGlzLm1vdmVkRG93bikge1xuICAgICAgICAgICAgbGV0IGxpc3RJdGVtcyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLmxpc3RWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJ2xpLnAtaGlnaGxpZ2h0Jyk7XG4gICAgICAgICAgICBsZXQgbGlzdEl0ZW07XG5cbiAgICAgICAgICAgIGlmIChsaXN0SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVkVXApXG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtID0gbGlzdEl0ZW1zWzBdO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0gPSBsaXN0SXRlbXNbbGlzdEl0ZW1zLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5zY3JvbGxJblZpZXcodGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsOmFueVtdKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGV2ZW50LCBpdGVtLCBpbmRleCkge1xuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gZmFsc2U7XG4gICAgICAgIGxldCBzZWxlY3RlZEluZGV4ID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gKHNlbGVjdGVkSW5kZXggIT0gLTEpO1xuICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMuaXRlbVRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSAoZXZlbnQubWV0YUtleXx8ZXZlbnQuY3RybEtleXx8ZXZlbnQuc2hpZnRLZXkpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHRoaXMuX3NlbGVjdGlvbi5maWx0ZXIoKHZhbCwgaW5kZXgpID0+IGluZGV4ICE9PSBzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IChtZXRhS2V5KSA/IHRoaXMuX3NlbGVjdGlvbiA/IFsuLi50aGlzLl9zZWxlY3Rpb25dIDogW10gOiBbXTtcbiAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5pbnNlcnRJbnRvT3JkZXJlZEFycmF5KGl0ZW0sIGluZGV4LCB0aGlzLl9zZWxlY3Rpb24sIHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0aW9uLmZpbHRlcigodmFsLCBpbmRleCkgPT4gaW5kZXggIT09IHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0aW9uID8gWy4uLnRoaXMuX3NlbGVjdGlvbl0gOiBbXTtcbiAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5pbnNlcnRJbnRvT3JkZXJlZEFycmF5KGl0ZW0sIGluZGV4LCB0aGlzLl9zZWxlY3Rpb24sIHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9iaW5kaW5nXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0aW9uKTtcblxuICAgICAgICAvL2V2ZW50XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh7b3JpZ2luYWxFdmVudDpldmVudCwgdmFsdWU6IHRoaXMuX3NlbGVjdGlvbn0pO1xuICAgIH1cblxuICAgIG9uRmlsdGVyS2V5dXAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICB0aGlzLmZpbHRlcigpO1xuXG4gICAgICAgIHRoaXMub25GaWx0ZXJFdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVyKCkge1xuICAgICAgICBsZXQgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9IHRoaXMuZmlsdGVyQnkuc3BsaXQoJywnKTtcbiAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9ucyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIodGhpcy52YWx1ZSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlICYmIHRoaXMuZmlsdGVyVmFsdWUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gdGhpcy52aXNpYmxlT3B0aW9uc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbVRvdWNoRW5kKCkge1xuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHRoaXMuc2VsZWN0aW9uKSAhPSAtMTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJWYWx1ZSA/ICghdGhpcy52aXNpYmxlT3B0aW9ucyB8fCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gMCkgOiAoIXRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIG1vdmVVcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0aW9uW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gdGhpcy52YWx1ZVtzZWxlY3RlZEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gdGhpcy52YWx1ZVtzZWxlY3RlZEl0ZW1JbmRleC0xXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZVtzZWxlY3RlZEl0ZW1JbmRleC0xXSA9IG1vdmVkSXRlbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZVtzZWxlY3RlZEl0ZW1JbmRleF0gPSB0ZW1wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiB0aGlzLmZpbHRlclZhbHVlKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uUmVvcmRlci5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc2VsZWN0aW9uLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0aW9uW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gdGhpcy52YWx1ZS5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUudW5zaGlmdChtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiB0aGlzLmZpbHRlclZhbHVlKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMub25SZW9yZGVyLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVEb3duKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnNlbGVjdGlvbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGlvbltpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9ICh0aGlzLnZhbHVlLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW0gPSB0aGlzLnZhbHVlW3NlbGVjdGVkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLnZhbHVlW3NlbGVjdGVkSXRlbUluZGV4KzFdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlW3NlbGVjdGVkSXRlbUluZGV4KzFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlW3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmIHRoaXMuZmlsdGVyVmFsdWUpXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5vblJlb3JkZXIuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlQm90dG9tKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3Rpb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3Rpb25baV07XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4OiBudW1iZXIgPSBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAodGhpcy52YWx1ZS5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gdGhpcy52YWx1ZS5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUucHVzaChtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiB0aGlzLmZpbHRlclZhbHVlKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMub25SZW9yZGVyLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICAgICAgbGV0IHByZXZpb3VzSW5kZXggPSAgZXZlbnQucHJldmlvdXNJbmRleDtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IGV2ZW50LmN1cnJlbnRJbmRleDtcblxuICAgICAgICBpZiAocHJldmlvdXNJbmRleCAhPT0gY3VycmVudEluZGV4KSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9ICBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoZXZlbnQuaXRlbS5kYXRhLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHRoaXMudmlzaWJsZU9wdGlvbnNbY3VycmVudEluZGV4XSwgdGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMudmlzaWJsZU9wdGlvbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLnZhbHVlLCBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5vblJlb3JkZXIuZW1pdChbZXZlbnQuaXRlbS5kYXRhXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpdGVtLCBpbmRleDogTnVtYmVyKSB7XG4gICAgICAgIGxldCBsaXN0SXRlbSA9IDxIVE1MTElFbGVtZW50PiBldmVudC5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIHN3aXRjaChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy9kb3duXG4gICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgIHZhciBuZXh0SXRlbSA9IHRoaXMuZmluZE5leHRJdGVtKGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vdXBcbiAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgICAgdmFyIHByZXZJdGVtID0gdGhpcy5maW5kUHJldkl0ZW0obGlzdEl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2SXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9lbnRlclxuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKGV2ZW50LCBpdGVtLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE5leHRJdGVtKGl0ZW0pIHtcbiAgICAgICAgbGV0IG5leHRJdGVtID0gaXRlbS5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKG5leHRJdGVtKVxuICAgICAgICAgICAgcmV0dXJuICFEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1vcmRlcmxpc3QtaXRlbScpIHx8IERvbUhhbmRsZXIuaXNIaWRkZW4obmV4dEl0ZW0pID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gIURvbUhhbmRsZXIuaGFzQ2xhc3MocHJldkl0ZW0sICdwLW9yZGVybGlzdC1pdGVtJykgfHwgRG9tSGFuZGxlci5pc0hpZGRlbihwcmV2SXRlbSkgPyB0aGlzLmZpbmRQcmV2SXRlbShwcmV2SXRlbSkgOiBwcmV2SXRlbTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUodGhpcy5pZCwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGlubmVySFRNTCA9IGBcbiAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAke3RoaXMuYnJlYWtwb2ludH0pIHtcbiAgICAgICAgICAgICAgICAgICAgLnAtb3JkZXJsaXN0WyR7dGhpcy5pZH1dIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAucC1vcmRlcmxpc3RbJHt0aGlzLmlkfV0gLnAtb3JkZXJsaXN0LWNvbnRyb2xzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLWNvbnRlbnQtcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtb3JkZXJsaXN0WyR7dGhpcy5pZH1dIC5wLW9yZGVybGlzdC1jb250cm9scyAucC1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1pbmxpbmUtc3BhY2luZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtb3JkZXJsaXN0WyR7dGhpcy5pZH1dIC5wLW9yZGVybGlzdC1jb250cm9scyAucC1idXR0b246bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBgO1xuXG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBpbm5lckhUTUw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7YGBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLEJ1dHRvbk1vZHVsZSxTaGFyZWRNb2R1bGUsUmlwcGxlTW9kdWxlLERyYWdEcm9wTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbT3JkZXJMaXN0LFNoYXJlZE1vZHVsZSxEcmFnRHJvcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbT3JkZXJMaXN0XVxufSlcbmV4cG9ydCBjbGFzcyBPcmRlckxpc3RNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/orderlist/primeng-orderlist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/orderlist/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/orderlist/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1vcmRlcmxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvb3JkZXJsaXN0L3ByaW1lbmctb3JkZXJsaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/orderlist/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/orderlist/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/orderlist/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './orderlist';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vcmRlcmxpc3QvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3JkZXJsaXN0JzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/organizationchart/organizationchart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/organizationchart/organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/organizationchart/organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,316 @@
+import { NgModule, Component, Input, Output, EventEmitter, Inject, forwardRef, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class OrganizationChartNode {
+    constructor(chart, cd) {
+        this.cd = cd;
+        this.chart = chart;
+        this.subscription = this.chart.selectionSource$.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    get leaf() {
+        return this.node.leaf == false ? false : !(this.node.children && this.node.children.length);
+    }
+    get colspan() {
+        return (this.node.children && this.node.children.length) ? this.node.children.length * 2 : null;
+    }
+    onNodeClick(event, node) {
+        this.chart.onNodeClick(event, node);
+    }
+    toggleNode(event, node) {
+        node.expanded = !node.expanded;
+        if (node.expanded)
+            this.chart.onNodeExpand.emit({ originalEvent: event, node: this.node });
+        else
+            this.chart.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+        event.preventDefault();
+    }
+    isSelected() {
+        return this.chart.isSelected(this.node);
+    }
+    ngOnDestroy() {
+        this.subscription.unsubscribe();
+    }
+}
+OrganizationChartNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, deps: [{ token: forwardRef(() => OrganizationChart) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChartNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: { node: "node", root: "root", first: "first", last: "last" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, isInline: true, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"], components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('childState', [
+            state('in', style({ opacity: 1 })),
+            transition('void => *', [
+                style({ opacity: 0 }),
+                animate(150)
+            ]),
+            transition('* => void', [
+                animate(150, style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, decorators: [{
+            type: Component,
+            args: [{ selector: '[pOrganizationChartNode]', template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, animations: [
+                        trigger('childState', [
+                            state('in', style({ opacity: 1 })),
+                            transition('void => *', [
+                                style({ opacity: 0 }),
+                                animate(150)
+                            ]),
+                            transition('* => void', [
+                                animate(150, style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"] }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => OrganizationChart)]
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { node: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], last: [{
+                type: Input
+            }] } });
+export class OrganizationChart {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.preserveSpace = true;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.selectionSource = new Subject();
+        this.selectionSource$ = this.selectionSource.asObservable();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+        if (this.initialized)
+            this.selectionSource.next(null);
+    }
+    get root() {
+        return this.value && this.value.length ? this.value[0] : null;
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            this.templateMap[item.getType()] = item.template;
+        });
+        this.initialized = true;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (eventTarget.className && (eventTarget.className.indexOf('p-node-toggler') !== -1 || eventTarget.className.indexOf('p-node-toggler-icon') !== -1)) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.selectionMode === 'single') {
+                if (selected) {
+                    this.selection = null;
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = node;
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else if (this.selectionMode === 'multiple') {
+                if (selected) {
+                    this.selection = this.selection.filter((val, i) => i != index);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = [...this.selection || [], node];
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            this.selectionChange.emit(this.selection);
+            this.selectionSource.next(null);
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.selectionMode === 'single') {
+                index = (this.selection == node) ? 0 : -1;
+            }
+            else if (this.selectionMode === 'multiple') {
+                for (let i = 0; i < this.selection.length; i++) {
+                    if (this.selection[i] == node) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+}
+OrganizationChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChart, selector: "p-organizationChart", inputs: { value: "value", style: "style", styleClass: "styleClass", selectionMode: "selectionMode", preserveSpace: "preserveSpace", selection: "selection" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `, isInline: true, components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-organizationChart',
+                    template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], preserveSpace: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class OrganizationChartModule {
+}
+OrganizationChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrganizationChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, declarations: [OrganizationChart, OrganizationChartNode], imports: [CommonModule], exports: [OrganizationChart, SharedModule] });
+OrganizationChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [OrganizationChart, SharedModule],
+                    declarations: [OrganizationChart, OrganizationChartNode]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvb3JnYW5pemF0aW9uY2hhcnQvb3JnYW5pemF0aW9uY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFDLE1BQU0sRUFBa0IsWUFBWSxFQUN4RSxNQUFNLEVBQUMsVUFBVSxFQUFDLGVBQWUsRUFBVyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7QUFnRTdDLE1BQU0sT0FBTyxxQkFBcUI7SUFjOUIsWUFBeUQsS0FBSyxFQUFTLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3hGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBMEIsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENB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aUNULGFBQWEsNkJBM0NwQjs7OztLQUlULHVDQTFEUSxxQkFBcUI7MkZBZ0VyQixpQkFBaUI7a0JBWjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7O0tBSVQ7b0JBQ0YsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDTCxPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0E7aUlBR1ksS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFUSxTQUFTO3NCQUF0QixLQUFLO2dCQVdJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFeUIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQTJHbEMsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQTVJdkIsaUJBQWlCLEVBaEVqQixxQkFBcUIsYUF3TXBCLFlBQVksYUF4SWIsaUJBQWlCLEVBeUlFLFlBQVk7cUhBRy9CLHVCQUF1QixZQUp2QixDQUFDLFlBQVksQ0FBQyxFQUNLLFlBQVk7MkZBRy9CLHVCQUF1QjtrQkFMbkMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFDLFlBQVksQ0FBQztvQkFDekMsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUMscUJBQXFCLENBQUM7aUJBQzFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixJbnB1dCxPdXRwdXQsQWZ0ZXJDb250ZW50SW5pdCxFdmVudEVtaXR0ZXIsVGVtcGxhdGVSZWYsXG4gICAgICAgIEluamVjdCxmb3J3YXJkUmVmLENvbnRlbnRDaGlsZHJlbixRdWVyeUxpc3QsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHJpZ2dlcixzdGF0ZSxzdHlsZSx0cmFuc2l0aW9uLGFuaW1hdGV9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1NoYXJlZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbcE9yZ2FuaXphdGlvbkNoYXJ0Tm9kZV0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx0Ym9keSAqbmdJZj1cIm5vZGVcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2xzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIm5vZGUuc3R5bGVDbGFzc1wiIFtuZ0NsYXNzXT1cInsncC1vcmdhbml6YXRpb25jaGFydC1ub2RlLWNvbnRlbnQnOiB0cnVlLCAncC1vcmdhbml6YXRpb25jaGFydC1zZWxlY3RhYmxlLW5vZGUnOiBjaGFydC5zZWxlY3Rpb25Nb2RlICYmIG5vZGUuc2VsZWN0YWJsZSAhPT0gZmFsc2UsJ3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKCl9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQsbm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY2hhcnQuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpXCI+e3tub2RlLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGFydC5nZXRUZW1wbGF0ZUZvck5vZGUobm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhcnQuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpOyBjb250ZXh0OiB7JGltcGxpY2l0OiBub2RlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFsZWFmXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJwLW5vZGUtdG9nZ2xlclwiIChjbGljayk9XCJ0b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIiAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVOb2RlKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInAtbm9kZS10b2dnbGVyLWljb24gcGlcIiBbbmdDbGFzc109XCJ7J3BpLWNoZXZyb24tZG93bic6IG5vZGUuZXhwYW5kZWQsICdwaS1jaGV2cm9uLXVwJzogIW5vZGUuZXhwYW5kZWR9XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCIhbGVhZiYmbm9kZS5leHBhbmRlZCA/ICdwLW9yZ2FuaXphdGlvbmNoYXJ0LW5vZGUtdmlzaWJsZScgOiAncC1vcmdhbml6YXRpb25jaGFydC1ub2RlLWhpZGRlbidcIiBjbGFzcz1cInAtb3JnYW5pemF0aW9uY2hhcnQtbGluZXNcIiBbQGNoaWxkU3RhdGVdPVwiJ2luJ1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtb3JnYW5pemF0aW9uY2hhcnQtbGluZS1kb3duXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwiIWxlYWYmJm5vZGUuZXhwYW5kZWQgPyAncC1vcmdhbml6YXRpb25jaGFydC1ub2RlLXZpc2libGUnIDogJ3Atb3JnYW5pemF0aW9uY2hhcnQtbm9kZS1oaWRkZW4nXCIgY2xhc3M9XCJwLW9yZ2FuaXphdGlvbmNoYXJ0LWxpbmVzXCIgW0BjaGlsZFN0YXRlXT1cIidpbidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2xzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1vcmdhbml6YXRpb25jaGFydC1saW5lLWRvd25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jaGlsZCBbbmdGb3JPZl09XCJub2RlLmNoaWxkcmVuXCIgbGV0LWZpcnN0PVwiZmlyc3RcIiBsZXQtbGFzdD1cImxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtb3JnYW5pemF0aW9uY2hhcnQtbGluZS1sZWZ0XCIgW25nQ2xhc3NdPVwieydwLW9yZ2FuaXphdGlvbmNoYXJ0LWxpbmUtdG9wJzohZmlyc3R9XCI+Jm5ic3A7PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtb3JnYW5pemF0aW9uY2hhcnQtbGluZS1yaWdodFwiIFtuZ0NsYXNzXT1cInsncC1vcmdhbml6YXRpb25jaGFydC1saW5lLXRvcCc6IWxhc3R9XCI+Jm5ic3A7PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwiIWxlYWYmJm5vZGUuZXhwYW5kZWQgPyAncC1vcmdhbml6YXRpb25jaGFydC1ub2RlLXZpc2libGUnIDogJ3Atb3JnYW5pemF0aW9uY2hhcnQtbm9kZS1oaWRkZW4nXCIgY2xhc3M9XCJwLW9yZ2FuaXphdGlvbmNoYXJ0LW5vZGVzXCIgW0BjaGlsZFN0YXRlXT1cIidpbidcIj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW5cIiBjb2xzcGFuPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJwLW9yZ2FuaXphdGlvbmNoYXJ0LXRhYmxlXCIgcE9yZ2FuaXphdGlvbkNoYXJ0Tm9kZSBbbm9kZV09XCJjaGlsZFwiPjwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2NoaWxkU3RhdGUnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7b3BhY2l0eTogMX0pKSxcbiAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xuICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICAgYW5pbWF0ZSgxNTApXG4gICAgICAgICAgIF0pLFxuICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgICAgICAgICAgYW5pbWF0ZSgxNTAsIHN0eWxlKHtvcGFjaXR5OjB9KSlcbiAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3R5bGVVcmxzOiBbJy4vb3JnYW5pemF0aW9uY2hhcnQuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ2hhcnROb2RlIGltcGxlbWVudHMgT25EZXN0cm95e1xuXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGU7XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZmlyc3Q6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsYXN0OiBib29sZWFuO1xuXG4gICAgY2hhcnQ6IE9yZ2FuaXphdGlvbkNoYXJ0O1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT3JnYW5pemF0aW9uQ2hhcnQpKSBjaGFydCwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLmNoYXJ0ID0gY2hhcnQgYXMgT3JnYW5pemF0aW9uQ2hhcnQ7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFydC5zZWxlY3Rpb25Tb3VyY2UkLnN1YnNjcmliZSgoKSA9PntcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0IGxlYWYoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUubGVhZiA9PSBmYWxzZSA/IGZhbHNlIDogISh0aGlzLm5vZGUuY2hpbGRyZW4mJnRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGgpO1xuICAgIH1cblxuICAgIGdldCBjb2xzcGFuKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubm9kZS5jaGlsZHJlbiAmJiB0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoKSA/IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGggKiAyOiBudWxsO1xuICAgIH1cblxuICAgIG9uTm9kZUNsaWNrKGV2ZW50OiBFdmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgdGhpcy5jaGFydC5vbk5vZGVDbGljayhldmVudCwgbm9kZSlcbiAgICB9XG5cbiAgICB0b2dnbGVOb2RlKGV2ZW50OiBFdmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgbm9kZS5leHBhbmRlZCA9ICFub2RlLmV4cGFuZGVkO1xuICAgICAgICBpZiAobm9kZS5leHBhbmRlZClcbiAgICAgICAgICAgIHRoaXMuY2hhcnQub25Ob2RlRXhwYW5kLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGV9KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5jaGFydC5vbk5vZGVDb2xsYXBzZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogdGhpcy5ub2RlfSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFydC5pc1NlbGVjdGVkKHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atb3JnYW5pemF0aW9uQ2hhcnQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ0NsYXNzXT1cInsncC1vcmdhbml6YXRpb25jaGFydCBwLWNvbXBvbmVudCc6IHRydWUsICdwLW9yZ2FuaXphdGlvbmNoYXJ0LXByZXNlcnZlc3BhY2UnOiBwcmVzZXJ2ZVNwYWNlfVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicC1vcmdhbml6YXRpb25jaGFydC10YWJsZVwiIHBPcmdhbml6YXRpb25DaGFydE5vZGUgW25vZGVdPVwicm9vdFwiICpuZ0lmPVwicm9vdFwiPjwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xufVxufSlcbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25DaGFydCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXG4gICAgQElucHV0KCkgdmFsdWU6IFRyZWVOb2RlW107XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJlc2VydmVTcGFjZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSAgZ2V0IHNlbGVjdGlvbigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3Rpb24odmFsOmFueSkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSB2YWw7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNvdXJjZS5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUV4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlQ29sbGFwc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgcHVibGljIHRlbXBsYXRlTWFwOiBhbnk7XG5cbiAgICBwcml2YXRlIHNlbGVjdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIF9zZWxlY3Rpb246IGFueTtcblxuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgc2VsZWN0aW9uU291cmNlJCA9IHRoaXMuc2VsZWN0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBnZXQgcm9vdCgpOiBUcmVlTm9kZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID8gdGhpcy52YWx1ZVswXSA6IG51bGw7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlTWFwID0ge307XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlTWFwW2l0ZW0uZ2V0VHlwZSgpXSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGdldFRlbXBsYXRlRm9yTm9kZShub2RlOiBUcmVlTm9kZSk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZU1hcClcbiAgICAgICAgICAgIHJldHVybiBub2RlLnR5cGUgPyB0aGlzLnRlbXBsYXRlTWFwW25vZGUudHlwZV0gOiB0aGlzLnRlbXBsYXRlTWFwWydkZWZhdWx0J107XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uTm9kZUNsaWNrKGV2ZW50OiBFdmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IGV2ZW50VGFyZ2V0ID0gKDxFbGVtZW50PiBldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChldmVudFRhcmdldC5jbGFzc05hbWUgJiYgKGV2ZW50VGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdwLW5vZGUtdG9nZ2xlcicpICE9PSAtMSB8fMKgZXZlbnRUYXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3Atbm9kZS10b2dnbGVyLWljb24nKSAhPT0gLTEpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5zZWxlY3RhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IChpbmRleCA+PSAwKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9aW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFsuLi50aGlzLnNlbGVjdGlvbnx8W10sbm9kZV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU291cmNlLm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kSW5kZXhJblNlbGVjdGlvbihub2RlOiBUcmVlTm9kZSkge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IC0xO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSAodGhpcy5zZWxlY3Rpb24gPT0gbm9kZSkgPyAwIDogLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSAgPCB0aGlzLnNlbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25baV0gPT0gbm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChub2RlOiBUcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKSAhPSAtMTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW09yZ2FuaXphdGlvbkNoYXJ0LFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbT3JnYW5pemF0aW9uQ2hhcnQsT3JnYW5pemF0aW9uQ2hhcnROb2RlXVxufSlcbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25DaGFydE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/organizationchart/primeng-organizationchart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/organizationchart/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/organizationchart/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1vcmdhbml6YXRpb25jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vcmdhbml6YXRpb25jaGFydC9wcmltZW5nLW9yZ2FuaXphdGlvbmNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/organizationchart/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/organizationchart/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/organizationchart/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './organizationchart';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vcmdhbml6YXRpb25jaGFydC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29yZ2FuaXphdGlvbmNoYXJ0JzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/overlaypanel/overlaypanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/overlaypanel/overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/overlaypanel/overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,350 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+export class OverlayPanel {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.dismissable = true;
+        this.appendTo = 'body';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.focusOnShow = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.overlayVisible = false;
+        this.render = false;
+        this.selfClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.dismissable) {
+            this.zone.runOutsideAngular(() => {
+                let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                    if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {
+                        this.zone.run(() => {
+                            this.hide();
+                        });
+                    }
+                    this.selfClick = false;
+                    this.cd.markForCheck();
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    toggle(event, target) {
+        if (this.overlayVisible) {
+            if (this.hasTargetChanged(event, target)) {
+                this.destroyCallback = () => {
+                    this.show(null, (target || event.currentTarget || event.target));
+                };
+            }
+            this.hide();
+        }
+        else {
+            this.show(event, target);
+        }
+    }
+    show(event, target) {
+        this.target = target || event.currentTarget || event.target;
+        this.overlayVisible = true;
+        this.render = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    hasTargetChanged(event, target) {
+        return this.target != null && this.target !== (target || event.currentTarget || event.target);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-overlaypanel-flipped');
+        }
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            this.onShow.emit(null);
+            this.appendContainer();
+            this.align();
+            this.bindDocumentClickListener();
+            this.bindDocumentResizeListener();
+            this.bindScrollListener();
+            if (this.focusOnShow) {
+                this.focus();
+            }
+            this.overlayEventListener = (e) => {
+                if (this.container && this.container.contains(e.target)) {
+                    this.selfClick = true;
+                }
+            };
+            this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.destroyCallback) {
+                    this.destroyCallback();
+                    this.destroyCallback = null;
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+            case 'close':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(this.container);
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                this.render = false;
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onCloseClick(event) {
+        this.hide();
+        event.preventDefault();
+    }
+    onWindowResize(event) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onContainerDestroy() {
+        this.target = null;
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.target = null;
+        this.destroyCallback = null;
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+OverlayPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+OverlayPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OverlayPanel, selector: "p-overlayPanel", inputs: { dismissable: "dismissable", showCloseIcon: "showCloseIcon", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", ariaCloseLabel: "ariaCloseLabel", baseZIndex: "baseZIndex", focusOnShow: "focusOnShow", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, isInline: true, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('close', style({
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => close', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-overlayPanel', template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('close', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => close', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { dismissable: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class OverlayPanelModule {
+}
+OverlayPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OverlayPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule], exports: [OverlayPanel, SharedModule] });
+OverlayPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, imports: [[CommonModule, RippleModule, SharedModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule],
+                    exports: [OverlayPanel, SharedModule],
+                    declarations: [OverlayPanel]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL292ZXJsYXlwYW5lbC9vdmVybGF5cGFuZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBVyxZQUFZLEVBQ3RELGVBQWUsRUFBd0MsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxhQUFhLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQTBDMUMsTUFBTSxPQUFPLFlBQVk7SUF3RHJCLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFTLEVBQXFCLEVBQVUsSUFBWSxFQUFTLE1BQXFCLEVBQVMsY0FBOEI7UUFBbkssT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdEQ3SyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQVE1QixhQUFRLEdBQVEsTUFBTSxDQUFDO1FBRXZCLGVBQVUsR0FB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Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFeUIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQWtTbEMsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQTlUbEIsWUFBWSxhQTBUWCxZQUFZLEVBQUMsWUFBWSxFQUFFLFlBQVksYUExVHhDLFlBQVksRUEyVEcsWUFBWTtnSEFHM0Isa0JBQWtCLFlBSmxCLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsRUFDMUIsWUFBWTsyRkFHM0Isa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNsRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNyQyxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LE9uRGVzdHJveSxFdmVudEVtaXR0ZXIsUmVuZGVyZXIyLEVsZW1lbnRSZWYsQ2hhbmdlRGV0ZWN0b3JSZWYsTmdab25lLFxuICAgICAgICBDb250ZW50Q2hpbGRyZW4sVGVtcGxhdGVSZWYsQWZ0ZXJDb250ZW50SW5pdCxRdWVyeUxpc3QsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEb21IYW5kbGVyLCBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGUsUHJpbWVUZW1wbGF0ZSwgUHJpbWVOR0NvbmZpZywgT3ZlcmxheVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7WkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1vdmVybGF5UGFuZWwnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZW5kZXJcIiBbbmdDbGFzc109XCIncC1vdmVybGF5cGFuZWwgcC1jb21wb25lbnQnXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtAYW5pbWF0aW9uXT1cInt2YWx1ZTogKG92ZXJsYXlWaXNpYmxlID8gJ29wZW4nOiAnY2xvc2UnKSwgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCJcbiAgICAgICAgICAgICAgICAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQGFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW92ZXJsYXlwYW5lbC1jb250ZW50XCIgKGNsaWNrKT1cIm9uQ29udGVudENsaWNrKClcIiAobW91c2Vkb3duKT1cIm9uQ29udGVudENsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0Nsb3NlSWNvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtb3ZlcmxheXBhbmVsLWNsb3NlIHAtbGlua1wiIChjbGljayk9XCJvbkNsb3NlQ2xpY2soJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImhpZGUoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUNsb3NlTGFiZWxcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1vdmVybGF5cGFuZWwtY2xvc2UtaWNvbiBwaSBwaS10aW1lc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IG9wZW4nLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlJywgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319JykpLFxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9vdmVybGF5cGFuZWwuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheVBhbmVsIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGRpc21pc3NhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dDbG9zZUljb246IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXBwZW5kVG86IGFueSA9ICdib2R5JztcblxuICAgIEBJbnB1dCgpIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYXJpYUNsb3NlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBmb2N1c09uU2hvdzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBvdmVybGF5VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmVuZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzZWxmQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgdGFyZ2V0OiBhbnk7XG5cbiAgICB3aWxsSGlkZTogYm9vbGVhbjtcblxuICAgIHNjcm9sbEhhbmRsZXI6IGFueTtcblxuICAgIGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGRlc3Ryb3lDYWxsYmFjazogRnVuY3Rpb247XG5cbiAgICBvdmVybGF5RXZlbnRMaXN0ZW5lcjtcblxuICAgIG92ZXJsYXlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgem9uZTogTmdab25lLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLCBwdWJsaWMgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyICYmIHRoaXMuZGlzbWlzc2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGRvY3VtZW50RXZlbnQgPSBEb21IYW5kbGVyLmlzSU9TKCkgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VGFyZ2V0OiBhbnkgPSB0aGlzLmVsID8gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAnZG9jdW1lbnQnO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgZG9jdW1lbnRFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiB0aGlzLnRhcmdldCAhPT0gZXZlbnQudGFyZ2V0ICYmICF0aGlzLnRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLnNlbGZDbGljaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZkNsaWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZShldmVudCwgdGFyZ2V0Pykge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzVGFyZ2V0Q2hhbmdlZChldmVudCwgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3cobnVsbCwgKHRhcmdldHx8ZXZlbnQuY3VycmVudFRhcmdldHx8ZXZlbnQudGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3coZXZlbnQsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93KGV2ZW50LCB0YXJnZXQ/KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0fHxldmVudC5jdXJyZW50VGFyZ2V0fHxldmVudC50YXJnZXQ7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlbmRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Db250ZW50Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYXNUYXJnZXRDaGFuZ2VkKGV2ZW50LCB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0ICE9IG51bGwgJiYgdGhpcy50YXJnZXQgIT09ICh0YXJnZXR8fGV2ZW50LmN1cnJlbnRUYXJnZXR8fGV2ZW50LnRhcmdldCk7XG4gICAgfVxuXG4gICAgYXBwZW5kQ29udGFpbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ24oKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnb3ZlcmxheScsIHRoaXMuY29udGFpbmVyLCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgIH1cblxuICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5jb250YWluZXIsIHRoaXMudGFyZ2V0KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHRhcmdldE9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgbGV0IGFycm93TGVmdCA9IDA7XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lck9mZnNldC5sZWZ0IDwgdGFyZ2V0T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgICAgIGFycm93TGVmdCA9IHRhcmdldE9mZnNldC5sZWZ0IC0gY29udGFpbmVyT2Zmc2V0LmxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoJy0tb3ZlcmxheUFycm93TGVmdCcsIGAke2Fycm93TGVmdH1weGApO1xuXG4gICAgICAgIGlmIChjb250YWluZXJPZmZzZXQudG9wIDwgdGFyZ2V0T2Zmc2V0LnRvcCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRhaW5lciwgJ3Atb3ZlcmxheXBhbmVsLWZsaXBwZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnb3BlbicpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMub25TaG93LmVtaXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICAgICAgdGhpcy5hbGlnbigpO1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c09uU2hvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vdmVybGF5RXZlbnRMaXN0ZW5lciA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGZDbGljayA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24gPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsaWNrT2JzZXJ2YWJsZS5zdWJzY3JpYmUodGhpcy5vdmVybGF5RXZlbnRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95Q2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub25Db250YWluZXJEZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUuZW1pdCh7fSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIGxldCBmb2N1c2FibGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5jb250YWluZXIsICdbYXV0b2ZvY3VzXScpO1xuICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZm9jdXNhYmxlLmZvY3VzKCksIDUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DbG9zZUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLm9uV2luZG93UmVzaXplLmJpbmQodGhpcyk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcih0aGlzLnRhcmdldCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGFpbmVyRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLmF1dG9aSW5kZXgpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5kZXN0cm95Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZUFwcGVuZCgpO1xuICAgICAgICAgICAgdGhpcy5vbkNvbnRhaW5lckRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUmlwcGxlTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtPdmVybGF5UGFuZWwsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbT3ZlcmxheVBhbmVsXVxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5UGFuZWxNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/overlaypanel/primeng-overlaypanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/overlaypanel/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/overlaypanel/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1vdmVybGF5cGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvb3ZlcmxheXBhbmVsL3ByaW1lbmctb3ZlcmxheXBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/overlaypanel/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/overlaypanel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/overlaypanel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './overlaypanel';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vdmVybGF5cGFuZWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5cGFuZWwnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/paginator/paginator.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/paginator/paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/paginator/paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,331 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { DropdownModule } from 'primeng/dropdown';
+import { RippleModule } from 'primeng/ripple';
+import { SharedModule } from 'primeng/api';
+import { InputNumberModule } from 'primeng/inputnumber';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/dropdown";
+import * as i2 from "primeng/inputnumber";
+import * as i3 from "@angular/common";
+import * as i4 from "primeng/ripple";
+import * as i5 from "@angular/forms";
+import * as i6 from "primeng/api";
+export class Paginator {
+    constructor(cd) {
+        this.cd = cd;
+        this.pageLinkSize = 5;
+        this.onPageChange = new EventEmitter();
+        this.alwaysShow = true;
+        this.dropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.totalRecords = 0;
+        this.rows = 0;
+        this.showPageLinks = true;
+        this._first = 0;
+        this._page = 0;
+    }
+    ngOnInit() {
+        this.updatePaginatorState();
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.totalRecords) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+            this.updateFirst();
+            this.updateRowsPerPageOptions();
+        }
+        if (simpleChange.first) {
+            this._first = simpleChange.first.currentValue;
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rows) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rowsPerPageOptions) {
+            this.updateRowsPerPageOptions();
+        }
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    updateRowsPerPageOptions() {
+        if (this.rowsPerPageOptions) {
+            this.rowsPerPageItems = [];
+            for (let opt of this.rowsPerPageOptions) {
+                if (typeof opt == 'object' && opt['showAll']) {
+                    this.rowsPerPageItems.unshift({ label: opt['showAll'], value: this.totalRecords });
+                }
+                else {
+                    this.rowsPerPageItems.push({ label: String(opt), value: opt });
+                }
+            }
+        }
+    }
+    isFirstPage() {
+        return this.getPage() === 0;
+    }
+    isLastPage() {
+        return this.getPage() === this.getPageCount() - 1;
+    }
+    getPageCount() {
+        return Math.ceil(this.totalRecords / this.rows);
+    }
+    calculatePageLinkBoundaries() {
+        let numberOfPages = this.getPageCount(), visiblePages = Math.min(this.pageLinkSize, numberOfPages);
+        //calculate range, keep current in middle if necessary
+        let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))), end = Math.min(numberOfPages - 1, start + visiblePages - 1);
+        //check when approaching to last page
+        var delta = this.pageLinkSize - (end - start + 1);
+        start = Math.max(0, start - delta);
+        return [start, end];
+    }
+    updatePageLinks() {
+        this.pageLinks = [];
+        let boundaries = this.calculatePageLinkBoundaries(), start = boundaries[0], end = boundaries[1];
+        for (let i = start; i <= end; i++) {
+            this.pageLinks.push(i + 1);
+        }
+        if (this.showJumpToPageDropdown) {
+            this.pageItems = [];
+            for (let i = 0; i < this.getPageCount(); i++) {
+                this.pageItems.push({ label: String(i + 1), value: i });
+            }
+        }
+    }
+    changePage(p) {
+        var pc = this.getPageCount();
+        if (p >= 0 && p < pc) {
+            this._first = this.rows * p;
+            var state = {
+                page: p,
+                first: this.first,
+                rows: this.rows,
+                pageCount: pc
+            };
+            this.updatePageLinks();
+            this.onPageChange.emit(state);
+            this.updatePaginatorState();
+        }
+    }
+    updateFirst() {
+        const page = this.getPage();
+        if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {
+            Promise.resolve(null).then(() => this.changePage(page - 1));
+        }
+    }
+    getPage() {
+        return Math.floor(this.first / this.rows);
+    }
+    changePageToFirst(event) {
+        if (!this.isFirstPage()) {
+            this.changePage(0);
+        }
+        event.preventDefault();
+    }
+    changePageToPrev(event) {
+        this.changePage(this.getPage() - 1);
+        event.preventDefault();
+    }
+    changePageToNext(event) {
+        this.changePage(this.getPage() + 1);
+        event.preventDefault();
+    }
+    changePageToLast(event) {
+        if (!this.isLastPage()) {
+            this.changePage(this.getPageCount() - 1);
+        }
+        event.preventDefault();
+    }
+    onPageLinkClick(event, page) {
+        this.changePage(page);
+        event.preventDefault();
+    }
+    onRppChange(event) {
+        this.changePage(this.getPage());
+    }
+    onPageDropdownChange(event) {
+        this.changePage(event.value);
+    }
+    updatePaginatorState() {
+        this.paginatorState = {
+            page: this.getPage(),
+            pageCount: this.getPageCount(),
+            rows: this.rows,
+            first: this.first,
+            totalRecords: this.totalRecords
+        };
+    }
+    empty() {
+        return this.getPageCount() === 0;
+    }
+    currentPage() {
+        return this.getPageCount() > 0 ? this.getPage() + 1 : 0;
+    }
+    get currentPageReport() {
+        return this.currentPageReportTemplate
+            .replace("{currentPage}", String(this.currentPage()))
+            .replace("{totalPages}", String(this.getPageCount()))
+            .replace("{first}", String((this.totalRecords > 0) ? this._first + 1 : 0))
+            .replace("{last}", String(Math.min(this._first + this.rows, this.totalRecords)))
+            .replace("{rows}", String(this.rows))
+            .replace("{totalRecords}", String(this.totalRecords));
+    }
+}
+Paginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Paginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Paginator, selector: "p-paginator", inputs: { pageLinkSize: "pageLinkSize", style: "style", styleClass: "styleClass", alwaysShow: "alwaysShow", templateLeft: "templateLeft", templateRight: "templateRight", dropdownAppendTo: "dropdownAppendTo", dropdownScrollHeight: "dropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showFirstLastIcon: "showFirstLastIcon", totalRecords: "totalRecords", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showPageLinks: "showPageLinks", dropdownItemTemplate: "dropdownItemTemplate", first: "first" }, outputs: { onPageChange: "onPageChange" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"], components: [{ type: i1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-paginator', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageLinkSize: [{
+                type: Input
+            }], onPageChange: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], alwaysShow: [{
+                type: Input
+            }], templateLeft: [{
+                type: Input
+            }], templateRight: [{
+                type: Input
+            }], dropdownAppendTo: [{
+                type: Input
+            }], dropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], dropdownItemTemplate: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }] } });
+export class PaginatorModule {
+}
+PaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, declarations: [Paginator], imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+PaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, imports: [[CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule],
+                    exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule],
+                    declarations: [Paginator]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVEsS0FBSyxFQUFDLE1BQU0sRUFBbUIsWUFBWSxFQUFxQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUF3RHRELE1BQU0sT0FBTyxTQUFTO0lBb0RsQixZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWxEaEMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFFeEIsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU10RCxlQUFVLEdBQVksSUFBSSxDQUFDO1FBUTNCLHlCQUFvQixHQUFXLE9BQU8sQ0FBQztRQUV2Qyw4QkFBeUIsR0FBVywrQkFBK0IsQ0FBQztRQUlwRSxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFFbEMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFFekIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQVFqQixrQkFBYSxHQUFZLElBQUksQ0FBQztRQVl2QyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBRW5CLFVBQUssR0FBVyxDQUFDLENBQUM7SUFFMEIsQ0FBQztJ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aUJBQWlCLEVBQUMsV0FBVyxFQUFDLFlBQVk7MkZBR3BFLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLGNBQWMsRUFBQyxpQkFBaUIsRUFBQyxXQUFXLEVBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDOUYsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxpQkFBaUIsRUFBQyxXQUFXLEVBQUMsWUFBWSxDQUFDO29CQUM5RSxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsT25Jbml0LElucHV0LE91dHB1dCxDaGFuZ2VEZXRlY3RvclJlZixFdmVudEVtaXR0ZXIsVGVtcGxhdGVSZWYsT25DaGFuZ2VzLFNpbXBsZUNoYW5nZXMsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEcm9wZG93bk1vZHVsZX0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQge1NlbGVjdEl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtJbnB1dE51bWJlck1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYWdpbmF0b3InLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtuZ0NsYXNzXT1cIidwLXBhZ2luYXRvciBwLWNvbXBvbmVudCdcIiAqbmdJZj1cImFsd2F5c1Nob3cgPyB0cnVlIDogKHBhZ2VMaW5rcyAmJiBwYWdlTGlua3MubGVuZ3RoID4gMSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBhZ2luYXRvci1sZWZ0LWNvbnRlbnRcIiAqbmdJZj1cInRlbXBsYXRlTGVmdFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUxlZnQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHBhZ2luYXRvclN0YXRlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtcGFnaW5hdG9yLWN1cnJlbnRcIiAqbmdJZj1cInNob3dDdXJyZW50UGFnZVJlcG9ydFwiPnt7Y3VycmVudFBhZ2VSZXBvcnR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93Rmlyc3RMYXN0SWNvblwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2UoKSB8fCBlbXB0eSgpXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2VUb0ZpcnN0KCRldmVudClcIiBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1wYWdpbmF0b3ItZmlyc3QgcC1wYWdpbmF0b3ItZWxlbWVudCBwLWxpbmtcIiBbbmdDbGFzc109XCJ7J3AtZGlzYWJsZWQnOmlzRmlyc3RQYWdlKCkgfHwgZW1wdHkoKX1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtcGFnaW5hdG9yLWljb24gcGkgcGktYW5nbGUtZG91YmxlLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc0ZpcnN0UGFnZSgpIHx8IGVtcHR5KClcIiAoY2xpY2spPVwiY2hhbmdlUGFnZVRvUHJldigkZXZlbnQpXCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtcGFnaW5hdG9yLXByZXYgcC1wYWdpbmF0b3ItZWxlbWVudCBwLWxpbmtcIiBbbmdDbGFzc109XCJ7J3AtZGlzYWJsZWQnOmlzRmlyc3RQYWdlKCkgfHwgZW1wdHkoKX1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtcGFnaW5hdG9yLWljb24gcGkgcGktYW5nbGUtbGVmdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXBhZ2luYXRvci1wYWdlc1wiICpuZ0lmPVwic2hvd1BhZ2VMaW5rc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBwYWdlTGluayBvZiBwYWdlTGlua3NcIiBjbGFzcz1cInAtcGFnaW5hdG9yLXBhZ2UgcC1wYWdpbmF0b3ItZWxlbWVudCBwLWxpbmtcIiBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0JzogKHBhZ2VMaW5rLTEgPT0gZ2V0UGFnZSgpKX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QYWdlTGlua0NsaWNrKCRldmVudCwgcGFnZUxpbmsgLSAxKVwiIHBSaXBwbGU+e3twYWdlTGlua319PC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJwYWdlSXRlbXNcIiBbbmdNb2RlbF09XCJnZXRQYWdlKClcIiAqbmdJZj1cInNob3dKdW1wVG9QYWdlRHJvcGRvd25cIiBbZGlzYWJsZWRdPVwiZW1wdHkoKVwiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci1wYWdlLW9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblBhZ2VEcm9wZG93bkNoYW5nZSgkZXZlbnQpXCIgW2FwcGVuZFRvXT1cImRyb3Bkb3duQXBwZW5kVG9cIiBbc2Nyb2xsSGVpZ2h0XT1cImRyb3Bkb3duU2Nyb2xsSGVpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPnt7Y3VycmVudFBhZ2VSZXBvcnR9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZSgpIHx8IGVtcHR5KClcIiAoY2xpY2spPVwiY2hhbmdlUGFnZVRvTmV4dCgkZXZlbnQpXCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtcGFnaW5hdG9yLW5leHQgcC1wYWdpbmF0b3ItZWxlbWVudCBwLWxpbmtcIiBbbmdDbGFzc109XCJ7J3AtZGlzYWJsZWQnOmlzTGFzdFBhZ2UoKSB8fCBlbXB0eSgpfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1wYWdpbmF0b3ItaWNvbiBwaSBwaS1hbmdsZS1yaWdodFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dGaXJzdExhc3RJY29uXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKCkgfHwgZW1wdHkoKVwiIChjbGljayk9XCJjaGFuZ2VQYWdlVG9MYXN0KCRldmVudClcIiBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1wYWdpbmF0b3ItbGFzdCBwLXBhZ2luYXRvci1lbGVtZW50IHAtbGlua1wiIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6aXNMYXN0UGFnZSgpIHx8IGVtcHR5KCl9XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXBhZ2luYXRvci1pY29uIHBpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgKm5nSWY9XCJzaG93SnVtcFRvUGFnZUlucHV0XCIgW25nTW9kZWxdPVwiY3VycmVudFBhZ2UoKVwiIGNsYXNzPVwicC1wYWdpbmF0b3ItcGFnZS1pbnB1dFwiIFtkaXNhYmxlZF09XCJlbXB0eSgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQgLSAxKVwiPjwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInJvd3NQZXJQYWdlSXRlbXNcIiBbKG5nTW9kZWwpXT1cInJvd3NcIiAqbmdJZj1cInJvd3NQZXJQYWdlT3B0aW9uc1wiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci1ycHAtb3B0aW9uc1wiIFtkaXNhYmxlZF09XCJlbXB0eSgpXCJcbiAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25ScHBDaGFuZ2UoJGV2ZW50KVwiIFthcHBlbmRUb109XCJkcm9wZG93bkFwcGVuZFRvXCIgW3Njcm9sbEhlaWdodF09XCJkcm9wZG93blNjcm9sbEhlaWdodFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcm9wZG93bkl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1wYWdpbmF0b3ItcmlnaHQtY29udGVudFwiICpuZ0lmPVwidGVtcGxhdGVSaWdodFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJpZ2h0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwYWdpbmF0b3JTdGF0ZX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdG9yLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRvciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAgIEBJbnB1dCgpIHBhZ2VMaW5rU2l6ZTogbnVtYmVyID0gNTtcblxuICAgIEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFsd2F5c1Nob3c6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGVMZWZ0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGVSaWdodDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGRyb3Bkb3duQXBwZW5kVG86IGFueTtcblxuICAgIEBJbnB1dCgpIGRyb3Bkb3duU2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnMjAwcHgnO1xuXG4gICAgQElucHV0KCkgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZTogc3RyaW5nID0gJ3tjdXJyZW50UGFnZX0gb2Yge3RvdGFsUGFnZXN9JztcblxuICAgIEBJbnB1dCgpIHNob3dDdXJyZW50UGFnZVJlcG9ydDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgc2hvd0p1bXBUb1BhZ2VEcm9wZG93bjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dKdW1wVG9QYWdlSW5wdXQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93UGFnZUxpbmtzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGRyb3Bkb3duSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnZUxpbmtzOiBudW1iZXJbXTtcblxuICAgIHBhZ2VJdGVtczogU2VsZWN0SXRlbVtdO1xuXG4gICAgcm93c1BlclBhZ2VJdGVtczogU2VsZWN0SXRlbVtdO1xuXG4gICAgcGFnaW5hdG9yU3RhdGU6IGFueTtcblxuICAgIF9maXJzdDogbnVtYmVyID0gMDtcblxuICAgIF9wYWdlOiBudW1iZXIgPSAwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0b3JTdGF0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnRvdGFsUmVjb3Jkcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdlTGlua3MoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdG9yU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlyc3QoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93c1BlclBhZ2VPcHRpb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLmZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLl9maXJzdCA9IHNpbXBsZUNoYW5nZS5maXJzdC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhZ2VMaW5rcygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0b3JTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhZ2VMaW5rcygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdpbmF0b3JTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5yb3dzUGVyUGFnZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm93c1BlclBhZ2VPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgZmlyc3QoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0O1xuICAgIH1cbiAgICBzZXQgZmlyc3QodmFsOm51bWJlcikge1xuICAgICAgICB0aGlzLl9maXJzdCA9IHZhbDtcbiAgICB9XG5cbiAgICB1cGRhdGVSb3dzUGVyUGFnZU9wdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5yb3dzUGVyUGFnZUl0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBvcHQgb2YgdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdCA9PSAnb2JqZWN0JyAmJiBvcHRbJ3Nob3dBbGwnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd3NQZXJQYWdlSXRlbXMudW5zaGlmdCh7bGFiZWw6IG9wdFsnc2hvd0FsbCddLCB2YWx1ZTogdGhpcy50b3RhbFJlY29yZHN9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93c1BlclBhZ2VJdGVtcy5wdXNoKHtsYWJlbDogU3RyaW5nKG9wdCksIHZhbHVlOiBvcHR9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0ZpcnN0UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZSgpID09PSAwO1xuICAgIH1cblxuICAgIGlzTGFzdFBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBhZ2UoKSA9PT0gdGhpcy5nZXRQYWdlQ291bnQoKSAtIDE7XG4gICAgfVxuXG4gICAgZ2V0UGFnZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzL3RoaXMucm93cyk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUGFnZUxpbmtCb3VuZGFyaWVzKCkge1xuICAgICAgICBsZXQgbnVtYmVyT2ZQYWdlcyA9IHRoaXMuZ2V0UGFnZUNvdW50KCksXG4gICAgICAgIHZpc2libGVQYWdlcyA9IE1hdGgubWluKHRoaXMucGFnZUxpbmtTaXplLCBudW1iZXJPZlBhZ2VzKTtcblxuICAgICAgICAvL2NhbGN1bGF0ZSByYW5nZSwga2VlcCBjdXJyZW50IGluIG1pZGRsZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKHRoaXMuZ2V0UGFnZSgpIC0gKCh2aXNpYmxlUGFnZXMpIC8gMikpKSxcbiAgICAgICAgZW5kID0gTWF0aC5taW4obnVtYmVyT2ZQYWdlcyAtIDEsIHN0YXJ0ICsgdmlzaWJsZVBhZ2VzIC0gMSk7XG5cbiAgICAgICAgLy9jaGVjayB3aGVuIGFwcHJvYWNoaW5nIHRvIGxhc3QgcGFnZVxuICAgICAgICB2YXIgZGVsdGEgPSB0aGlzLnBhZ2VMaW5rU2l6ZSAtIChlbmQgLSBzdGFydCArIDEpO1xuICAgICAgICBzdGFydCA9IE1hdGgubWF4KDAsIHN0YXJ0IC0gZGVsdGEpO1xuXG4gICAgICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gICAgfVxuXG4gICAgdXBkYXRlUGFnZUxpbmtzKCkge1xuICAgICAgICB0aGlzLnBhZ2VMaW5rcyA9IFtdO1xuICAgICAgICBsZXQgYm91bmRhcmllcyA9IHRoaXMuY2FsY3VsYXRlUGFnZUxpbmtCb3VuZGFyaWVzKCksXG4gICAgICAgIHN0YXJ0ID0gYm91bmRhcmllc1swXSxcbiAgICAgICAgZW5kID0gYm91bmRhcmllc1sxXTtcblxuICAgICAgICBmb3IobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wYWdlTGlua3MucHVzaChpICsgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaG93SnVtcFRvUGFnZURyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VJdGVtcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdldFBhZ2VDb3VudCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJdGVtcy5wdXNoKHtsYWJlbDogU3RyaW5nKGkgKyAxKSwgdmFsdWU6IGl9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVBhZ2UocCA6bnVtYmVyKSB7XG4gICAgICAgIHZhciBwYyA9IHRoaXMuZ2V0UGFnZUNvdW50KCk7XG5cbiAgICAgICAgaWYgKHAgPj0gMCAmJiBwIDwgcGMpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpcnN0ID0gdGhpcy5yb3dzICogcDtcbiAgICAgICAgICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBwYWdlOiBwLFxuICAgICAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cyxcbiAgICAgICAgICAgICAgICBwYWdlQ291bnQ6IHBjXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQYWdlTGlua3MoKTtcblxuICAgICAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChzdGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVGaXJzdCgpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZ2V0UGFnZSgpO1xuICAgICAgICBpZiAocGFnZSA+IDAgJiYgdGhpcy50b3RhbFJlY29yZHMgJiYgKHRoaXMuZmlyc3QgPj0gdGhpcy50b3RhbFJlY29yZHMpKSB7XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKSA9PiB0aGlzLmNoYW5nZVBhZ2UocGFnZSAtIDEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5maXJzdCAvIHRoaXMucm93cyk7XG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZVRvRmlyc3QoZXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5pc0ZpcnN0UGFnZSgpKXtcbiAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2UoMCk7XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZVRvUHJldihldmVudCkge1xuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UodGhpcy5nZXRQYWdlKCkgLSAxKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VQYWdlVG9OZXh0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFnZSh0aGlzLmdldFBhZ2UoKSAgKyAxKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VQYWdlVG9MYXN0KGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuaXNMYXN0UGFnZSgpKXtcbiAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2UodGhpcy5nZXRQYWdlQ291bnQoKSAtIDEpO1xuICAgICAgfVxuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZUxpbmtDbGljayhldmVudCwgcGFnZSkge1xuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UocGFnZSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25ScHBDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMuZ2V0UGFnZSgpKTtcbiAgICB9XG5cbiAgICBvblBhZ2VEcm9wZG93bkNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UoZXZlbnQudmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBhZ2luYXRvclN0YXRlKCkge1xuICAgICAgICB0aGlzLnBhZ2luYXRvclN0YXRlID0ge1xuICAgICAgICAgICAgcGFnZTogdGhpcy5nZXRQYWdlKCksXG4gICAgICAgICAgICBwYWdlQ291bnQ6IHRoaXMuZ2V0UGFnZUNvdW50KCksXG4gICAgICAgICAgICByb3dzOiB0aGlzLnJvd3MsXG4gICAgICAgICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgICAgICAgIHRvdGFsUmVjb3JkczogdGhpcy50b3RhbFJlY29yZHNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQYWdlQ291bnQoKSA9PT0gMDtcbiAgICB9XG5cbiAgICBjdXJyZW50UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZUNvdW50KCkgPiAwID8gdGhpcy5nZXRQYWdlKCkgKyAxIDogMDtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFBhZ2VSZXBvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIntjdXJyZW50UGFnZX1cIiwgU3RyaW5nKHRoaXMuY3VycmVudFBhZ2UoKSkpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJ7dG90YWxQYWdlc31cIiwgU3RyaW5nKHRoaXMuZ2V0UGFnZUNvdW50KCkpKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwie2ZpcnN0fVwiLCBTdHJpbmcoKHRoaXMudG90YWxSZWNvcmRzID4gMCkgPyB0aGlzLl9maXJzdCArIDEgOiAwKSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIntsYXN0fVwiLCBTdHJpbmcoTWF0aC5taW4odGhpcy5fZmlyc3QgKyB0aGlzLnJvd3MsIHRoaXMudG90YWxSZWNvcmRzKSkpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJ7cm93c31cIiwgU3RyaW5nKHRoaXMucm93cykpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJ7dG90YWxSZWNvcmRzfVwiLCBTdHJpbmcodGhpcy50b3RhbFJlY29yZHMpKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxEcm9wZG93bk1vZHVsZSxJbnB1dE51bWJlck1vZHVsZSxGb3Jtc01vZHVsZSxTaGFyZWRNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbUGFnaW5hdG9yLERyb3Bkb3duTW9kdWxlLElucHV0TnVtYmVyTW9kdWxlLEZvcm1zTW9kdWxlLFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbUGFnaW5hdG9yXVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/paginator/primeng-paginator.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/paginator/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/paginator/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wYWdpbmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGFnaW5hdG9yL3ByaW1lbmctcGFnaW5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/paginator/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/paginator/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/paginator/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './paginator';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYWdpbmF0b3IvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFnaW5hdG9yJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/panel/panel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panel/panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panel/panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,224 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, Footer, PrimeTemplate } from 'primeng/api';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+let idx = 0;
+export class Panel {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.expandIcon = 'pi pi-plus';
+        this.collapseIcon = 'pi pi-minus';
+        this.showHeader = true;
+        this.toggler = "icon";
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-panel-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'icons':
+                    this.iconTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onHeaderClick(event) {
+        if (this.toggler === 'header') {
+            this.toggle(event);
+        }
+    }
+    onIconClick(event) {
+        if (this.toggler === 'icon') {
+            this.toggle(event);
+        }
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.toggleable) {
+            if (this.collapsed)
+                this.expand(event);
+            else
+                this.collapse(event);
+        }
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+    }
+}
+Panel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Panel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Panel, selector: "p-panel", inputs: { toggleable: "toggleable", header: "header", collapsed: "collapsed", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", showHeader: "showHeader", toggler: "toggler", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('panelContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('void', style({
+                height: '{{height}}'
+            }), { params: { height: '0' } }),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => hidden', animate('{{transitionParams}}')),
+            transition('void => visible', animate('{{transitionParams}}'))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panel', template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('void', style({
+                                height: '{{height}}'
+                            }), { params: { height: '0' } }),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => hidden', animate('{{transitionParams}}')),
+                            transition('void => visible', animate('{{transitionParams}}'))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { toggleable: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], toggler: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class PanelModule {
+}
+PanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, declarations: [Panel], imports: [CommonModule, SharedModule, RippleModule], exports: [Panel, SharedModule] });
+PanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Panel, SharedModule],
+                    declarations: [Panel]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGFuZWwvcGFuZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQVksWUFBWSxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBMkMsTUFBTSxlQUFlLENBQUM7QUFDek0sT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxFQUFFLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUvRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUUzRSxJQUFJLEdBQUcsR0FBVyxDQUFDLENBQUM7QUF3RHBCLE1BQU0sT0FBTyxLQUFLO0lBNENkLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBdEN6QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBTTNCLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFFbEMsaUJBQVksR0FBVyxhQUFhLENBQUM7UUFFckMsZUFBVSxHQUFZLElBQUksQ0FBQztRQUUzQixZQUFPLEdBQVcsTUFBTSxDQUFDO1FBRXhCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2RCxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELHNCQUFpQixHQUFXLHNDQUFzQyxDQUFDO1FBZ0I1RSxPQUFFLEdBQVcsV0FBVyxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBRU0sQ0FBQztJQUV2QyxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLFFBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQixLQUFLLFFBQVE7b0JBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN4QyxNQUFNO2dCQUVOLEtBQUssU0FBUztvQkFDVixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3pDLE1BQU07Z0JBRU4sS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsTUFBTTtnQkFFTixLQUFLLE9BQU87b0JBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN0QyxNQUFNO2dCQUVOO29CQUNJLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDekMsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBWTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFFNUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVM7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Z0JBRW5CLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7a0dBdkhRLEtBQUs7c0ZBQUwsS0FBSywwZkE0QkEsTUFBTSwrREFFSCxhQUFhLDZCQWxGcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTJCVCxrc0JBQ1c7UUFDUixPQUFPLENBQUMsY0FBYyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dCQUNsQixNQUFNLEVBQUUsR0FBRztnQkFDWCxRQUFRLEVBQUUsUUFBUTthQUNyQixDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQkFDaEIsTUFBTSxFQUFFLFlBQVk7YUFDdkIsQ0FBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxFQUFDLENBQUM7WUFDNUIsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxHQUFHO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNqRyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDN0QsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ2pFLENBQUM7S0FDTDsyRkFRUSxLQUFLO2tCQXREakIsU0FBUzsrQkFDSSxTQUFTLFlBQ1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTJCVCxjQUNXO3dCQUNSLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3BCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dDQUNsQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxRQUFRLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dDQUNoQixNQUFNLEVBQUUsWUFBWTs2QkFDdkIsQ0FBQyxFQUFFLEVBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxFQUFDLENBQUM7NEJBQzVCLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dDQUNuQixNQUFNLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQzs0QkFDakcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDOzRCQUM3RCxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7eUJBQ2pFLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO2lHQUlRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFZ0IsV0FBVztzQkFBaEMsWUFBWTt1QkFBQyxNQUFNO2dCQUVZLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUFrR2xDLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBaElYLEtBQUssYUE0SEosWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLGFBNUh2QyxLQUFLLEVBNkhFLFlBQVk7eUdBR25CLFdBQVcsWUFKWCxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxDQUFDLEVBQ2pDLFlBQVk7MkZBR25CLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7b0JBQ2pELE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBQyxZQUFZLENBQUM7b0JBQzdCLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLEVsZW1lbnRSZWYsQ29udGVudENoaWxkLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBBZnRlckNvbnRlbnRJbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGUsRm9vdGVyLCBQcmltZVRlbXBsYXRlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0Jsb2NrYWJsZVVJfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHt0cmlnZ2VyLHN0YXRlLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZX0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmxldCBpZHg6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYW5lbCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJpZFwiIFtuZ0NsYXNzXT1cInsncC1wYW5lbCBwLWNvbXBvbmVudCc6IHRydWUsICdwLXBhbmVsLXRvZ2dsZWFibGUnOiB0b2dnbGVhYmxlfVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBhbmVsLWhlYWRlclwiICpuZ0lmPVwic2hvd0hlYWRlclwiIChjbGljayk9XCJvbkhlYWRlckNsaWNrKCRldmVudClcIiBbYXR0ci5pZF09XCJpZCArICctdGl0bGViYXInXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXBhbmVsLXRpdGxlXCIgKm5nSWY9XCJoZWFkZXJcIiBbYXR0ci5pZF09XCJpZCArICdfaGVhZGVyJ1wiPnt7aGVhZGVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGFuZWwtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRvZ2dsZWFibGVcIiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuaWRdPVwiaWQgKyAnLWxhYmVsJ1wiIGNsYXNzPVwicC1wYW5lbC1oZWFkZXItaWNvbiBwLXBhbmVsLXRvZ2dsZXIgcC1saW5rXCIgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKCRldmVudClcIiAoa2V5ZG93bi5lbnRlcik9XCJvbkljb25DbGljaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZCArICctY29udGVudCdcIiByb2xlPVwidGFiXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhY29sbGFwc2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiY29sbGFwc2VkID8gZXhwYW5kSWNvbiA6IGNvbGxhcHNlSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWQgKyAnLWNvbnRlbnQnXCIgY2xhc3M9XCJwLXRvZ2dsZWFibGUtY29udGVudFwiIFtAcGFuZWxDb250ZW50XT1cImNvbGxhcHNlZCA/IHt2YWx1ZTogJ2hpZGRlbicsIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6IGFuaW1hdGluZyA/IHRyYW5zaXRpb25PcHRpb25zIDogJzBtcycsIGhlaWdodDogJzAnLCBvcGFjaXR5OicwJ319IDoge3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6IGFuaW1hdGluZyA/IHRyYW5zaXRpb25PcHRpb25zIDogJzBtcycsIGhlaWdodDogJyonLCBvcGFjaXR5OiAnMSd9fVwiIChAcGFuZWxDb250ZW50LmRvbmUpPVwib25Ub2dnbGVEb25lKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJjb2xsYXBzZWRcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaWQgICsgJy10aXRsZWJhcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGFuZWwtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3BhbmVsQ29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW4nLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndm9pZCcsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICd7e2hlaWdodH19J1xuICAgICAgICAgICAgfSksIHtwYXJhbXM6IHtoZWlnaHQ6ICcwJ319KSxcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiBoaWRkZW4nLCBbc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbid9KSwgYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBoaWRkZW4nLCBhbmltYXRlKCd7e3RyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIGFuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JykpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3BhbmVsLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxCbG9ja2FibGVVSSB7XG5cbiAgICBASW5wdXQoKSB0b2dnbGVhYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaGVhZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBleHBhbmRJY29uOiBzdHJpbmcgPSAncGkgcGktcGx1cyc7XG5cbiAgICBASW5wdXQoKSBjb2xsYXBzZUljb246IHN0cmluZyA9ICdwaSBwaS1taW51cyc7XG5cbiAgICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRvZ2dsZXI6IHN0cmluZyA9IFwiaWNvblwiO1xuXG4gICAgQE91dHB1dCgpIGNvbGxhcHNlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVUb2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQWZ0ZXJUb2dnbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuXG4gICAgQENvbnRlbnRDaGlsZChGb290ZXIpIGZvb3RlckZhY2V0O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgcHVibGljIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGFuaW1hdGluZzogYm9vbGVhbjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBpZDogc3RyaW5nID0gYHAtcGFuZWwtJHtpZHgrK31gO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaWNvbnMnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSGVhZGVyQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZXIgPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkljb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlciA9PT0gJ2ljb24nKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uQmVmb3JlVG9nZ2xlLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBjb2xsYXBzZWQ6IHRoaXMuY29sbGFwc2VkfSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlYWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKGV2ZW50KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZXhwYW5kKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodGhpcy5jb2xsYXBzZWQpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWRDaGFuZ2UuZW1pdCh0aGlzLmNvbGxhcHNlZCk7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlRG9uZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkFmdGVyVG9nZ2xlLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBjb2xsYXBzZWQ6IHRoaXMuY29sbGFwc2VkfSk7XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxTaGFyZWRNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbUGFuZWwsU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQYW5lbF1cbn0pXG5leHBvcnQgY2xhc3MgUGFuZWxNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/panel/primeng-panel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panel/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panel/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYW5lbC9wcmltZW5nLXBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/panel/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './panel';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYW5lbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYW5lbCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/panelmenu/panelmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panelmenu/panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panelmenu/panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,307 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "@angular/router";
+export class BasePanelMenuItem {
+    constructor(ref) {
+        this.ref = ref;
+    }
+    handleClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        item.expanded = !item.expanded;
+        this.ref.detectChanges();
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+    }
+}
+export class PanelMenuSub extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenuSub, selector: "p-panelMenuSub", inputs: { item: "item", expanded: "expanded", parentExpanded: "parentExpanded", transitionOptions: "transitionOptions", root: "root" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('submenu', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-panelMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    animations: [
+                        trigger('submenu', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], expanded: [{
+                type: Input
+            }], parentExpanded: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }] } });
+export class PanelMenu extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+        this.multiple = true;
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+    }
+    collapseAll() {
+        for (let item of this.model) {
+            if (item.expanded) {
+                item.expanded = false;
+            }
+        }
+    }
+    handleClick(event, item) {
+        if (!this.multiple) {
+            for (let modelItem of this.model) {
+                if (item !== modelItem && modelItem.expanded) {
+                    modelItem.expanded = false;
+                }
+            }
+        }
+        this.animating = true;
+        super.handleClick(event, item);
+    }
+    onToggleDone() {
+        this.animating = false;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenu, selector: "p-panelMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", multiple: "multiple", transitionOptions: "transitionOptions" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, isInline: true, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"], components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('rootItem', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panelMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, animations: [
+                        trigger('rootItem', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }] } });
+export class PanelMenuModule {
+}
+PanelMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [PanelMenu, RouterModule, TooltipModule] });
+PanelMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [PanelMenu, RouterModule, TooltipModule],
+                    declarations: [PanelMenu, PanelMenuSub]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWxtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3BhbmVsbWVudS9wYW5lbG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRXZDLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFBRyxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0NBQ0o7QUFpREQsTUFBTSxPQUFPLFlBQWEsU0FBUSxpQkFBaUI7SUFZL0MsWUFBWSxHQUFzQjtRQUM5QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBSUQsYUFBYSxDQUFDLEtBQUs7UUFDZixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRW5DLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssT0FBTztnQkFDUixJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFO29CQUMxRCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3BCO2dCQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTtZQUVOO2dCQUNBLE1BQU07U0FDVDtJQUNMLENBQUM7O3lHQWxDUSxZQUFZOzZGQUFaLFlBQVksNFBBN0NYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCx1Q0FtQlEsWUFBWSwrb0NBbEJUO1FBQ1IsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dCQUNsQixNQUFNLEVBQUUsR0FBRztnQkFDWCxRQUFRLEVBQUUsUUFBUTthQUNyQixDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztnQkFDbkIsTUFBTSxFQUFFLEdBQUc7YUFDZCxDQUFDLENBQUM7WUFDSCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDLENBQUM7S0FDTDsyRkFNUSxZQUFZO2tCQS9DeEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMEJUO29CQUNELFVBQVUsRUFBRTt3QkFDUixPQUFPLENBQUMsU0FBUyxFQUFFOzRCQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dDQUNsQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxRQUFRLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dDQUNuQixNQUFNLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQzs0QkFDaEcsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0w7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0o7d0dBR1ksSUFBSTtzQkFBWixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLOztBQStFVixNQUFNLE9BQU8sU0FBVSxTQUFRLGlCQUFpQjtJQWM1QyxZQUFZLEdBQXNCO1FBQzlCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQVBOLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsc0JBQWlCLEdBQVcsc0NBQXNDLENBQUM7SUFNNUUsQ0FBQztJQUVELFdBQVc7UUFDVixLQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN0QjtTQUNEO0lBQ0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLEtBQUksSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDbkMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7b0JBQzdDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2lCQUMzQjthQUNEO1NBQ0o7UUFFRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNmLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFbkMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2hCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxPQUFPO2dCQUNSLElBQUksUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEVBQUU7b0JBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDcEI7Z0JBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMzQixNQUFNO1lBRU47Z0JBQ0EsTUFBTTtTQUNUO0lBQ0wsQ0FBQzs7c0dBM0RRLFNBQVM7MEZBQVQsU0FBUyxxUEFsRFI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkJULHFqQkFwRVEsWUFBWSwrb0NBcUVUO1FBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNoQixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLFFBQVE7YUFDckIsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxHQUFHO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNoRyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QyxDQUFDO0tBQ0w7MkZBUVEsU0FBUztrQkFwRHJCLFNBQVM7K0JBQ0ksYUFBYSxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCVCxjQUNXO3dCQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUU7NEJBQ2hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dDQUNsQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxRQUFRLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dDQUNuQixNQUFNLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQzs0QkFDaEcsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO3dHQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSzs7QUEwRFYsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFwRWYsU0FBUyxFQXpGVCxZQUFZLGFBeUpYLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxhQWhFeEMsU0FBUyxFQWlFRSxZQUFZLEVBQUMsYUFBYTs2R0FHckMsZUFBZSxZQUpmLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUMsRUFDOUIsWUFBWSxFQUFDLGFBQWE7MkZBR3JDLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUMvQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUMsWUFBWSxDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuZXhwb3J0IGNsYXNzIEJhc2VQYW5lbE1lbnVJdGVtIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5leHBhbmRlZCA9ICFpdGVtLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgaWYgKCFpdGVtLnVybCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wYW5lbE1lbnVTdWInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1bCBbbmdDbGFzc109XCJ7J3Atc3VibWVudS1saXN0JzogdHJ1ZSwgJ3AtcGFuZWxtZW51LXJvb3Qtc3VibWVudSc6IHJvb3R9XCIgW0BzdWJtZW51XT1cImV4cGFuZGVkID8ge3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6IHRyYW5zaXRpb25PcHRpb25zLCBoZWlnaHQ6ICcqJ319IDoge3ZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7dHJhbnNpdGlvblBhcmFtczogdHJhbnNpdGlvbk9wdGlvbnMsIGhlaWdodDogJzAnfX1cIiByb2xlPVwidHJlZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jaGlsZCBbbmdGb3JPZl09XCJpdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY2hpbGQuc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnUtc2VwYXJhdG9yXCIgcm9sZT1cInNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFjaGlsZC5zZXBhcmF0b3JcIiBjbGFzcz1cInAtbWVudWl0ZW1cIiBbbmdDbGFzc109XCJjaGlsZC5zdHlsZUNsYXNzXCIgW2NsYXNzLnAtaGlkZGVuXT1cImNoaWxkLnZpc2libGUgPT09IGZhbHNlXCIgW25nU3R5bGVdPVwiY2hpbGQuc3R5bGVcIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiY2hpbGQudG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY2hpbGQucm91dGVyTGlua1wiIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiIFthdHRyLmhyZWZdPVwiY2hpbGQudXJsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIiBbYXR0ci50YWJpbmRleF09XCIhaXRlbS5leHBhbmRlZCB8fCAhcGFyZW50RXhwYW5kZWQgPyBudWxsIDogY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCIgW2F0dHIuaWRdPVwiY2hpbGQuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzpjaGlsZC5kaXNhYmxlZH1cIiByb2xlPVwidHJlZWl0ZW1cIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNoaWxkLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsY2hpbGQpXCIgW2F0dHIudGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNoaWxkLnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtcGFuZWxtZW51LWljb24gcGkgcGktZndcIiBbbmdDbGFzc109XCJ7J3BpLWFuZ2xlLXJpZ2h0JzohY2hpbGQuZXhwYW5kZWQsJ3BpLWFuZ2xlLWRvd24nOmNoaWxkLmV4cGFuZGVkfVwiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cImNoaWxkLmljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2hpbGQuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57e2NoaWxkLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY2hpbGQubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImNoaWxkLnJvdXRlckxpbmtcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIiAgW3JvdXRlckxpbmtdPVwiY2hpbGQucm91dGVyTGlua1wiIFtxdWVyeVBhcmFtc109XCJjaGlsZC5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJjaGlsZC5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiIGNsYXNzPVwicC1tZW51aXRlbS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCIgW2F0dHIudGFiaW5kZXhdPVwiIWl0ZW0uZXhwYW5kZWQgfHwgIXBhcmVudEV4cGFuZGVkID8gbnVsbCA6IGNoaWxkLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiIFthdHRyLmlkXT1cImNoaWxkLmlkXCIgcm9sZT1cInRyZWVpdGVtXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJjaGlsZC5leHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LGNoaWxkKVwiIFthdHRyLnRhcmdldF09XCJjaGlsZC50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiY2hpbGQuZnJhZ21lbnRcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJjaGlsZC5xdWVyeVBhcmFtc0hhbmRsaW5nXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiY2hpbGQucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiY2hpbGQuc2tpcExvY2F0aW9uQ2hhbmdlXCIgW3JlcGxhY2VVcmxdPVwiY2hpbGQucmVwbGFjZVVybFwiIFtzdGF0ZV09XCJjaGlsZC5zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXBhbmVsbWVudS1pY29uIHBpIHBpLWZ3XCIgW25nQ2xhc3NdPVwieydwaS1hbmdsZS1yaWdodCc6IWNoaWxkLmV4cGFuZGVkLCdwaS1hbmdsZS1kb3duJzpjaGlsZC5leHBhbmRlZH1cIiAqbmdJZj1cImNoaWxkLml0ZW1zXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIj57e2NoaWxkLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJjaGlsZC5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxwLXBhbmVsTWVudVN1YiBbaXRlbV09XCJjaGlsZFwiIFtwYXJlbnRFeHBhbmRlZF09XCJleHBhbmRlZCAmJiBwYXJlbnRFeHBhbmRlZFwiIFtleHBhbmRlZF09XCJjaGlsZC5leHBhbmRlZFwiIFt0cmFuc2l0aW9uT3B0aW9uc109XCJ0cmFuc2l0aW9uT3B0aW9uc1wiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIj48L3AtcGFuZWxNZW51U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdzdWJtZW51JywgW1xuICAgICAgICAgICAgc3RhdGUoJ2hpZGRlbicsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiBoaWRkZW4nLCBbc3R5bGUoe292ZXJmbG93OiAnaGlkZGVuJ30pLCBhbmltYXRlKCd7e3RyYW5zaXRpb25QYXJhbXN9fScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDApKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQYW5lbE1lbnVTdWIgZXh0ZW5kcyBCYXNlUGFuZWxNZW51SXRlbSB7XG5cbiAgICBASW5wdXQoKSBpdGVtOiBNZW51SXRlbTtcblxuICAgIEBJbnB1dCgpIGV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcGFyZW50RXhwYW5kZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0cmFuc2l0aW9uT3B0aW9uczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcm9vdDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIocmVmKTtcbiAgICB9XG5cblxuXG4gICAgb25JdGVtS2V5RG93bihldmVudCkge1xuICAgICAgICBsZXQgbGlzdEl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGlmIChsaXN0SXRlbSAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhsaXN0SXRlbSwgJ3AtZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtcGFuZWxNZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbbmdDbGFzc109XCIncC1wYW5lbG1lbnUgcC1jb21wb25lbnQnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsO2xldCBmPWZpcnN0O2xldCBsPWxhc3Q7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGFuZWxtZW51LXBhbmVsXCIgW25nQ2xhc3NdPVwieydwLWhpZGRlbic6IGl0ZW0udmlzaWJsZSA9PT0gZmFsc2V9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLWNvbXBvbmVudCBwLXBhbmVsbWVudS1oZWFkZXInOnRydWUsICdwLWhpZ2hsaWdodCc6aXRlbS5leHBhbmRlZCwncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIiBbY2xhc3NdPVwiaXRlbS5zdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwiaXRlbS5zdHlsZVwiIHBUb29sdGlwIFt0b29sdGlwT3B0aW9uc109XCJpdGVtLnRvb2x0aXBPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmtcIiBbYXR0ci5ocmVmXT1cIml0ZW0udXJsXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCxpdGVtKVwiIChrZXlkb3duKT1cIm9uSXRlbUtleURvd24oJGV2ZW50KVwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCIgY2xhc3M9XCJwLXBhbmVsbWVudS1oZWFkZXItbGlua1wiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZFwiIFthdHRyLmlkXT1cIml0ZW0uaWQgKyAnX2hlYWRlcidcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIml0ZW0uaWQgKydfY29udGVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaXRlbXNcIiBjbGFzcz1cInAtcGFuZWxtZW51LWljb24gcGlcIiBbbmdDbGFzc109XCJ7J3BpLWNoZXZyb24tcmlnaHQnOiFpdGVtLmV4cGFuZGVkLCdwaS1jaGV2cm9uLWRvd24nOml0ZW0uZXhwYW5kZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57e2l0ZW0ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIiBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsaXRlbSlcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIiBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlXCIgY2xhc3M9XCJwLXBhbmVsbWVudS1oZWFkZXItbGlua1wiIFthdHRyLmlkXT1cIml0ZW0uaWRcIiBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cIml0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZ1wiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cIml0ZW0ucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbS5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJpdGVtLnJlcGxhY2VVcmxcIiBbc3RhdGVdPVwiaXRlbS5zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pdGVtc1wiIGNsYXNzPVwicC1wYW5lbG1lbnUtaWNvbiBwaVwiIFtuZ0NsYXNzXT1cInsncGktY2hldnJvbi1yaWdodCc6IWl0ZW0uZXhwYW5kZWQsJ3BpLWNoZXZyb24tZG93bic6aXRlbS5leHBhbmRlZH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3tpdGVtLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXRlbXNcIiBjbGFzcz1cInAtdG9nZ2xlYWJsZS1jb250ZW50XCIgW0Byb290SXRlbV09XCJpdGVtLmV4cGFuZGVkID8ge3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6IGFuaW1hdGluZyA/IHRyYW5zaXRpb25PcHRpb25zIDogJzBtcycsIGhlaWdodDogJyonfX0gOiB7dmFsdWU6ICdoaWRkZW4nLCBwYXJhbXM6IHt0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucywgaGVpZ2h0OiAnMCd9fVwiICAoQHJvb3RJdGVtLmRvbmUpPVwib25Ub2dnbGVEb25lKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBhbmVsbWVudS1jb250ZW50XCIgcm9sZT1cInJlZ2lvblwiIFthdHRyLmlkXT1cIml0ZW0uaWQgKydfY29udGVudCcgXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIml0ZW0uaWQgKydfaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXBhbmVsTWVudVN1YiBbaXRlbV09XCJpdGVtXCIgW3BhcmVudEV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiIFt0cmFuc2l0aW9uT3B0aW9uc109XCJ0cmFuc2l0aW9uT3B0aW9uc1wiIFtyb290XT1cInRydWVcIj48L3AtcGFuZWxNZW51U3ViPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdyb290SXRlbScsIFtcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW4nLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJ1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA8PT4gaGlkZGVuJywgW3N0eWxlKHtvdmVyZmxvdzogJ2hpZGRlbid9KSwgYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgwKSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFuZWxtZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFBhbmVsTWVudSBleHRlbmRzIEJhc2VQYW5lbE1lbnVJdGVtIHtcblxuICAgIEBJbnB1dCgpIG1vZGVsOiBNZW51SXRlbVtdO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJztcblxuICAgIHB1YmxpYyBhbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihyZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKHJlZik7XG4gICAgfVxuXG4gICAgY29sbGFwc2VBbGwoKSB7XG4gICAgXHRmb3IobGV0IGl0ZW0gb2YgdGhpcy5tb2RlbCkge1xuICAgIFx0XHRpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgIFx0XHRcdGl0ZW0uZXhwYW5kZWQgPSBmYWxzZTtcbiAgICBcdFx0fVxuICAgIFx0fVxuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtKSB7XG4gICAgXHRpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGZvcihsZXQgbW9kZWxJdGVtIG9mIHRoaXMubW9kZWwpIHtcbiAgICAgICAgXHRcdGlmIChpdGVtICE9PSBtb2RlbEl0ZW0gJiYgbW9kZWxJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgIFx0XHRcdG1vZGVsSXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICBcdFx0fVxuICAgICAgICBcdH1cbiAgICBcdH1cblxuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgIHN1cGVyLmhhbmRsZUNsaWNrKGV2ZW50LCBpdGVtKTtcbiAgICB9XG5cbiAgICBvblRvZ2dsZURvbmUoKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25JdGVtS2V5RG93bihldmVudCkge1xuICAgICAgICBsZXQgbGlzdEl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGlmIChsaXN0SXRlbSAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhsaXN0SXRlbSwgJ3AtZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1BhbmVsTWVudSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbUGFuZWxNZW51LFBhbmVsTWVudVN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgUGFuZWxNZW51TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/panelmenu/primeng-panelmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panelmenu/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panelmenu/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wYW5lbG1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGFuZWxtZW51L3ByaW1lbmctcGFuZWxtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/panelmenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/panelmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/panelmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './panelmenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYW5lbG1lbnUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFuZWxtZW51JzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/password/password.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/password/password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/password/password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,632 @@
+import { NgModule, Directive, HostListener, Input, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, Component, ViewChild, forwardRef, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { animate, style, transition, trigger } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { PrimeTemplate, TranslationKeys, SharedModule } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/inputtext";
+export class PasswordDirective {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.promptLabel = 'Enter a password';
+        this.weakLabel = 'Weak';
+        this.mediumLabel = 'Medium';
+        this.strongLabel = 'Strong';
+        this.feedback = true;
+    }
+    set showPassword(show) {
+        this.el.nativeElement.type = show ? 'text' : 'password';
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    createPanel() {
+        this.panel = document.createElement('div');
+        this.panel.className = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';
+        this.meter = document.createElement('div');
+        this.meter.className = 'p-password-meter';
+        this.info = document.createElement('div');
+        this.info.className = 'p-password-info';
+        this.info.textContent = this.promptLabel;
+        this.panel.appendChild(this.meter);
+        this.panel.appendChild(this.info);
+        this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';
+        document.body.appendChild(this.panel);
+    }
+    showOverlay() {
+        if (this.feedback) {
+            if (!this.panel) {
+                this.createPanel();
+            }
+            this.panel.style.zIndex = String(++DomHandler.zindex);
+            this.panel.style.display = 'block';
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');
+                    this.bindScrollListener();
+                    this.bindDocumentResizeListener();
+                }, 1);
+            });
+            DomHandler.absolutePosition(this.panel, this.el.nativeElement);
+        }
+    }
+    hideOverlay() {
+        if (this.feedback && this.panel) {
+            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');
+            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');
+            this.unbindScrollListener();
+            this.unbindDocumentResizeListener();
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.ngOnDestroy();
+                }, 150);
+            });
+        }
+    }
+    onFocus() {
+        this.showOverlay();
+    }
+    onBlur() {
+        this.hideOverlay();
+    }
+    onKeyup(e) {
+        if (this.feedback) {
+            let value = e.target.value, label = null, meterPos = null;
+            if (value.length === 0) {
+                label = this.promptLabel;
+                meterPos = '0px 0px';
+            }
+            else {
+                var score = this.testStrength(value);
+                if (score < 30) {
+                    label = this.weakLabel;
+                    meterPos = '0px -10px';
+                }
+                else if (score >= 30 && score < 80) {
+                    label = this.mediumLabel;
+                    meterPos = '0px -20px';
+                }
+                else if (score >= 80) {
+                    label = this.strongLabel;
+                    meterPos = '0px -30px';
+                }
+            }
+            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                this.showOverlay();
+            }
+            this.meter.style.backgroundPosition = meterPos;
+            this.info.textContent = label;
+        }
+    }
+    testStrength(str) {
+        let grade = 0;
+        let val;
+        val = str.match('[0-9]');
+        grade += this.normalize(val ? val.length : 1 / 4, 1) * 25;
+        val = str.match('[a-zA-Z]');
+        grade += this.normalize(val ? val.length : 1 / 2, 3) * 10;
+        val = str.match('[!@#$%^&*?_~.,;=]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 35;
+        val = str.match('[A-Z]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 30;
+        grade *= str.length / 8;
+        return grade > 100 ? 100 : grade;
+    }
+    normalize(x, y) {
+        let diff = x - y;
+        if (diff <= 0)
+            return x / y;
+        else
+            return 1 + 0.5 * (x / (x + y / 4));
+    }
+    get disabled() {
+        return this.el.nativeElement.disabled;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hideOverlay();
+    }
+    ngOnDestroy() {
+        if (this.panel) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.unbindDocumentResizeListener();
+            document.body.removeChild(this.panel);
+            this.panel = null;
+            this.meter = null;
+            this.info = null;
+        }
+    }
+}
+PasswordDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+PasswordDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PasswordDirective, selector: "[pPassword]", inputs: { promptLabel: "promptLabel", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", feedback: "feedback", showPassword: "showPassword" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus()", "blur": "onBlur()", "keyup": "onKeyup($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pPassword]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { promptLabel: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], showPassword: [{
+                type: Input
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus']
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur']
+            }], onKeyup: [{
+                type: HostListener,
+                args: ['keyup', ['$event']]
+            }] } });
+export const Password_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Password),
+    multi: true
+};
+export class Password {
+    constructor(cd, config, el, overlayService) {
+        this.cd = cd;
+        this.config = config;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.mediumRegex = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';
+        this.strongRegex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';
+        this.feedback = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.overlayVisible = false;
+        this.focused = false;
+        this.unmasked = false;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.infoText = this.promptText();
+        this.mediumCheckRegExp = new RegExp(this.mediumRegex);
+        this.strongCheckRegExp = new RegExp(this.strongRegex);
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.updateUI(this.value || "");
+        });
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                this.appendContainer();
+                this.alignOverlay();
+                this.bindScrollListener();
+                this.bindResizeListener();
+                break;
+            case 'void':
+                this.unbindScrollListener();
+                this.unbindResizeListener();
+                this.overlay = null;
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';
+            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);
+        }
+        else {
+            DomHandler.relativePosition(this.overlay, this.input.nativeElement);
+        }
+    }
+    onInput(event) {
+        this.value = event.target.value;
+        this.onModelChange(this.value);
+        this.onModelTouched();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        if (this.feedback) {
+            this.overlayVisible = true;
+        }
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        if (this.feedback) {
+            this.overlayVisible = false;
+        }
+        this.onBlur.emit(event);
+    }
+    onKeyUp(event) {
+        if (this.feedback) {
+            let value = event.target.value;
+            this.updateUI(value);
+            if (!this.overlayVisible) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    updateUI(value) {
+        let label = null;
+        let meter = null;
+        switch (this.testStrength(value)) {
+            case 1:
+                label = this.weakText();
+                meter = {
+                    strength: 'weak',
+                    width: '33.33%'
+                };
+                break;
+            case 2:
+                label = this.mediumText();
+                meter = {
+                    strength: 'medium',
+                    width: '66.66%'
+                };
+                break;
+            case 3:
+                label = this.strongText();
+                meter = {
+                    strength: 'strong',
+                    width: '100%'
+                };
+                break;
+            default:
+                label = this.promptText();
+                meter = null;
+                break;
+        }
+        this.meter = meter;
+        this.infoText = label;
+    }
+    onMaskToggle() {
+        this.unmasked = !this.unmasked;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    testStrength(str) {
+        let level = 0;
+        if (this.strongCheckRegExp.test(str))
+            level = 3;
+        else if (this.mediumCheckRegExp.test(str))
+            level = 2;
+        else if (str.length)
+            level = 1;
+        return level;
+    }
+    writeValue(value) {
+        if (value === undefined)
+            this.value = null;
+        else
+            this.value = value;
+        if (this.feedback)
+            this.updateUI(this.value || "");
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    containerClass() {
+        return { 'p-password p-component p-inputwrapper': true,
+            'p-input-icon-right': this.toggleMask
+        };
+    }
+    inputFieldClass() {
+        return { 'p-password-input': true,
+            'p-disabled': this.disabled
+        };
+    }
+    toggleIconClass() {
+        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';
+    }
+    strengthClass() {
+        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;
+    }
+    filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    promptText() {
+        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);
+    }
+    weakText() {
+        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);
+    }
+    mediumText() {
+        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);
+    }
+    strongText() {
+        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);
+    }
+    restoreAppend() {
+        if (this.overlay && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlay);
+        }
+    }
+    inputType() {
+        return this.unmasked ? 'text' : 'password';
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+        this.restoreAppend();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Password.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Password.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Password, selector: "p-password", inputs: { disabled: "disabled", promptLabel: "promptLabel", mediumRegex: "mediumRegex", strongRegex: "strongRegex", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", inputId: "inputId", feedback: "feedback", appendTo: "appendTo", toggleMask: "toggleMask", inputStyleClass: "inputStyleClass", styleClass: "styleClass", style: "style", inputStyle: "inputStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", placeholder: "placeholder" }, outputs: { onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.p-inputwrapper-filled": "filled()", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [Password_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.InputText, selector: "[pInputText]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-password', template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled()',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, providers: [Password_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], promptLabel: [{
+                type: Input
+            }], mediumRegex: [{
+                type: Input
+            }], strongRegex: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], toggleMask: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class PasswordModule {
+}
+PasswordModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PasswordModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, declarations: [PasswordDirective, Password], imports: [CommonModule, InputTextModule], exports: [PasswordDirective, Password, SharedModule] });
+PasswordModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, imports: [[CommonModule, InputTextModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [PasswordDirective, Password, SharedModule],
+                    declarations: [PasswordDirective, Password]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGFzc3dvcmQvcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksWUFBWSxFQUFDLEtBQUssRUFBbUMsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUEwQixTQUFTLEVBQW9CLFNBQVMsRUFBcUIsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbFMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBZ0MsYUFBYSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBVWxELE1BQU0sT0FBTyxpQkFBaUI7SUE0QjFCLFlBQW1CLEVBQWMsRUFBUyxJQUFZO1FBQW5DLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBMUI3QyxnQkFBVyxHQUFXLGtCQUFrQixDQUFDO1FBRXpDLGNBQVMsR0FBVyxNQUFNLENBQUM7UUFFM0IsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFL0IsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFL0IsYUFBUSxHQUFZLElBQUksQ0FBQztJQWtC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RVIsT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBUXlCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTs7QUFzV2xDLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBMXFCZCxpQkFBaUIsRUFrUmpCLFFBQVEsYUFvWlAsWUFBWSxFQUFFLGVBQWUsYUF0cUI5QixpQkFBaUIsRUFrUmpCLFFBQVEsRUFxWnNCLFlBQVk7NEdBRzFDLGNBQWMsWUFKZCxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsRUFDRCxZQUFZOzJGQUcxQyxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUM7b0JBQ3BELFlBQVksRUFBRSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLERpcmVjdGl2ZSxFbGVtZW50UmVmLEhvc3RMaXN0ZW5lcixJbnB1dCxPbkRlc3Ryb3ksRG9DaGVjayxOZ1pvbmUsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIENvbXBvbmVudCwgQWZ0ZXJDb250ZW50SW5pdCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge2FuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RG9tSGFuZGxlciwgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7T3ZlcmxheVNlcnZpY2UsIFByaW1lTkdDb25maWcsIFByaW1lVGVtcGxhdGUsIFRyYW5zbGF0aW9uS2V5cywgU2hhcmVkTW9kdWxlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1pJbmRleFV0aWxzfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFBhc3N3b3JkXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLWZpbGxlZF0nOiAnZmlsbGVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksRG9DaGVjayB7XG5cbiAgICBASW5wdXQoKSBwcm9tcHRMYWJlbDogc3RyaW5nID0gJ0VudGVyIGEgcGFzc3dvcmQnO1xuXG4gICAgQElucHV0KCkgd2Vha0xhYmVsOiBzdHJpbmcgPSAnV2Vhayc7XG5cbiAgICBASW5wdXQoKSBtZWRpdW1MYWJlbDogc3RyaW5nID0gJ01lZGl1bSc7XG5cbiAgICBASW5wdXQoKSBzdHJvbmdMYWJlbDogc3RyaW5nID0gJ1N0cm9uZyc7XG5cbiAgICBASW5wdXQoKSBmZWVkYmFjazogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvd1Bhc3N3b3JkKHNob3c6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnR5cGUgPSBzaG93ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBwYW5lbDogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBtZXRlcjogYW55O1xuXG4gICAgaW5mbzogYW55O1xuXG4gICAgZmlsbGVkOiBib29sZWFuO1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lKSB7fVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICAgIG9uSW5wdXQoZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlRmlsbGVkU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuZmlsbGVkID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFuZWwoKSB7XG4gICAgICAgIHRoaXMucGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5wYW5lbC5jbGFzc05hbWUgPSAncC1wYXNzd29yZC1wYW5lbCBwLWNvbXBvbmVudCBwLXBhc3N3b3JkLXBhbmVsLW92ZXJsYXkgcC1jb25uZWN0ZWQtb3ZlcmxheSc7XG4gICAgICAgIHRoaXMubWV0ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5tZXRlci5jbGFzc05hbWUgPSAncC1wYXNzd29yZC1tZXRlcic7XG4gICAgICAgIHRoaXMuaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmluZm8uY2xhc3NOYW1lID0gJ3AtcGFzc3dvcmQtaW5mbyc7XG4gICAgICAgIHRoaXMuaW5mby50ZXh0Q29udGVudCA9IHRoaXMucHJvbXB0TGFiZWw7XG4gICAgICAgIHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5tZXRlcik7XG4gICAgICAgIHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5pbmZvKTtcbiAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS5taW5XaWR0aCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpICsgJ3B4JztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnBhbmVsKTtcbiAgICB9XG5cbiAgICBzaG93T3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmVlZGJhY2spIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGFuZWwoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wYW5lbC5zdHlsZS56SW5kZXggPSBTdHJpbmcoKytEb21IYW5kbGVyLnppbmRleCk7XG4gICAgICAgICAgICB0aGlzLnBhbmVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMucGFuZWwsICdwLWNvbm5lY3RlZC1vdmVybGF5LXZpc2libGUnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5wYW5lbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVPdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5mZWVkYmFjayAmJiB0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMucGFuZWwsICdwLWNvbm5lY3RlZC1vdmVybGF5LWhpZGRlbicpO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnBhbmVsLCAncC1jb25uZWN0ZWQtb3ZlcmxheS12aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcblxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBvbkZvY3VzKCkge1xuICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICAgIG9uS2V5dXAoZSkge1xuICAgICAgICBpZiAodGhpcy5mZWVkYmFjaykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZS50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICBsYWJlbCA9IG51bGwsXG4gICAgICAgICAgICBtZXRlclBvcyA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMucHJvbXB0TGFiZWw7XG4gICAgICAgICAgICAgICAgbWV0ZXJQb3MgPSAnMHB4IDBweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc2NvcmUgPSB0aGlzLnRlc3RTdHJlbmd0aCh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPCAzMCkge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMud2Vha0xhYmVsO1xuICAgICAgICAgICAgICAgICAgICBtZXRlclBvcyA9ICcwcHggLTEwcHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+PSAzMCAmJiBzY29yZSA8IDgwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5tZWRpdW1MYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgbWV0ZXJQb3MgPSAnMHB4IC0yMHB4JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPj0gODApIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLnN0cm9uZ0xhYmVsO1xuICAgICAgICAgICAgICAgICAgICBtZXRlclBvcyA9ICcwcHggLTMwcHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8ICFEb21IYW5kbGVyLmhhc0NsYXNzKHRoaXMucGFuZWwsICdwLWNvbm5lY3RlZC1vdmVybGF5LXZpc2libGUnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tZXRlci5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24gPSBtZXRlclBvcztcbiAgICAgICAgICAgIHRoaXMuaW5mby50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGVzdFN0cmVuZ3RoKHN0cjogc3RyaW5nKSB7XG4gICAgICAgIGxldCBncmFkZTogbnVtYmVyID0gMDtcbiAgICAgICAgbGV0IHZhbDogUmVnRXhwTWF0Y2hBcnJheTtcblxuICAgICAgICB2YWwgPSBzdHIubWF0Y2goJ1swLTldJyk7XG4gICAgICAgIGdyYWRlICs9IHRoaXMubm9ybWFsaXplKHZhbCA/IHZhbC5sZW5ndGggOiAxLzQsIDEpICogMjU7XG5cbiAgICAgICAgdmFsID0gc3RyLm1hdGNoKCdbYS16QS1aXScpO1xuICAgICAgICBncmFkZSArPSB0aGlzLm5vcm1hbGl6ZSh2YWwgPyB2YWwubGVuZ3RoIDogMS8yLCAzKSAqIDEwO1xuXG4gICAgICAgIHZhbCA9IHN0ci5tYXRjaCgnWyFAIyQlXiYqP19+Liw7PV0nKTtcbiAgICAgICAgZ3JhZGUgKz0gdGhpcy5ub3JtYWxpemUodmFsID8gdmFsLmxlbmd0aCA6IDEvNiwgMSkgKiAzNTtcblxuICAgICAgICB2YWwgPSBzdHIubWF0Y2goJ1tBLVpdJyk7XG4gICAgICAgIGdyYWRlICs9IHRoaXMubm9ybWFsaXplKHZhbCA/IHZhbC5sZW5ndGggOiAxLzYsIDEpICogMzA7XG5cbiAgICAgICAgZ3JhZGUgKj0gc3RyLmxlbmd0aCAvIDg7XG5cbiAgICAgICAgcmV0dXJuIGdyYWRlID4gMTAwID8gMTAwIDogZ3JhZGU7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHgsIHkpIHtcbiAgICAgICAgbGV0IGRpZmYgPSB4IC0geTtcblxuICAgICAgICBpZiAoZGlmZiA8PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHggLyB5O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gMSArIDAuNSAqICh4IC8gKHggKyB5LzQpKTtcbiAgICB9XG5cbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKHRoaXMucGFuZWwsICdwLWNvbm5lY3RlZC1vdmVybGF5LXZpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdW5iaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgdGhpcy5wYW5lbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm1ldGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuaW5mbyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IFBhc3N3b3JkX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGFzc3dvcmQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXBhc3N3b3JkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzKClcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8aW5wdXQgI2lucHV0IFthdHRyLmlkXT1cImlucHV0SWRcIiBwSW5wdXRUZXh0IFtuZ0NsYXNzXT1cImlucHV0RmllbGRDbGFzcygpXCIgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiIFtjbGFzc109XCJpbnB1dFN0eWxlQ2xhc3NcIiBbYXR0ci50eXBlXT1cImlucHV0VHlwZSgpXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwidmFsdWVcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8aSAqbmdJZj1cInRvZ2dsZU1hc2tcIiBbbmdDbGFzc109XCJ0b2dnbGVJY29uQ2xhc3MoKVwiIChjbGljayk9XCJvbk1hc2tUb2dnbGUoKVwiPjwvaT5cbiAgICAgICAgICAgIDxkaXYgI292ZXJsYXkgKm5nSWY9XCJvdmVybGF5VmlzaWJsZVwiIFtuZ0NsYXNzXT1cIidwLXBhc3N3b3JkLXBhbmVsIHAtY29tcG9uZW50J1wiIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbQG92ZXJsYXlBbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fVwiIChAb3ZlcmxheUFuaW1hdGlvbi5zdGFydCk9XCJvbkFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRUZW1wbGF0ZTsgZWxzZSBjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBhc3N3b3JkLW1ldGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInN0cmVuZ3RoQ2xhc3MoKVwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBtZXRlciA/IG1ldGVyLndpZHRoIDogJyd9XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtcGFzc3dvcmQtaW5mb1wiPnt7aW5mb1RleHR9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50IHAtaW5wdXR3cmFwcGVyJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1maWxsZWRdJzogJ2ZpbGxlZCgpJyxcbiAgICAgICAgJ1tjbGFzcy5wLWlucHV0d3JhcHBlci1mb2N1c10nOiAnZm9jdXNlZCdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1Bhc3N3b3JkX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBzdHlsZVVybHM6IFsnLi9wYXNzd29yZC5jc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxPbkluaXQge1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwcm9tcHRMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWVkaXVtUmVnZXg6IHN0cmluZyA9ICdeKCgoPz0uKlthLXpdKSg/PS4qW0EtWl0pKXwoKD89LipbYS16XSkoPz0uKlswLTldKSl8KCg/PS4qW0EtWl0pKD89LipbMC05XSkpKSg/PS57Nix9KSc7XG5cbiAgICBASW5wdXQoKSBzdHJvbmdSZWdleDogc3RyaW5nID0gJ14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipbMC05XSkoPz0uezgsfSknO1xuXG4gICAgQElucHV0KCkgd2Vha0xhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtZWRpdW1MYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3Ryb25nTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZlZWRiYWNrOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSB0b2dnbGVNYXNrOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgaW5wdXRTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgb3ZlcmxheVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG1ldGVyOiBhbnk7XG5cbiAgICBpbmZvVGV4dDogc3RyaW5nO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgdW5tYXNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG1lZGl1bUNoZWNrUmVnRXhwOiBhbnk7XG5cbiAgICBzdHJvbmdDaGVja1JlZ0V4cDogYW55O1xuXG4gICAgcmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIG91dHNpZGVDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBhbnk7XG5cbiAgICBvdmVybGF5OiBhbnk7XG5cbiAgICB2YWx1ZTogc3RyaW5nID0gbnVsbDtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIHRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBjb25maWc6IFByaW1lTkdDb25maWcsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluZm9UZXh0ID0gdGhpcy5wcm9tcHRUZXh0KCk7XG4gICAgICAgIHRoaXMubWVkaXVtQ2hlY2tSZWdFeHAgPSBuZXcgUmVnRXhwKHRoaXMubWVkaXVtUmVnZXgpO1xuICAgICAgICB0aGlzLnN0cm9uZ0NoZWNrUmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLnN0cm9uZ1JlZ2V4KTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uT2JzZXJ2ZXIuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVUkodGhpcy52YWx1ZSB8fCBcIlwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25BbmltYXRpb25TdGFydChldmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZXZlbnQuZWxlbWVudDtcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ292ZXJsYXknLCB0aGlzLm92ZXJsYXksIHRoaXMuY29uZmlnLnpJbmRleC5vdmVybGF5KTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gbnVsbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BbmltYXRpb25FbmQoZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKGV2ZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmFwcGVuZFRvKS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWxpZ25PdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5LnN0eWxlLm1pbldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCkgKyAncHgnO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hYnNvbHV0ZVBvc2l0aW9uKHRoaXMub3ZlcmxheSwgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVsYXRpdmVQb3NpdGlvbih0aGlzLm92ZXJsYXksIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50KSAge1xuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmZlZWRiYWNrKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmZlZWRiYWNrKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleVVwKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZlZWRiYWNrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVJKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVVSSh2YWx1ZSkge1xuICAgICAgICBsZXQgbGFiZWwgPSBudWxsO1xuICAgICAgICBsZXQgbWV0ZXIgPSBudWxsO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy50ZXN0U3RyZW5ndGgodmFsdWUpKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLndlYWtUZXh0KCk7XG4gICAgICAgICAgICAgICAgbWV0ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOiAnd2VhaycsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzMuMzMlJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMubWVkaXVtVGV4dCgpO1xuICAgICAgICAgICAgICAgIG1ldGVyID0ge1xuICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNjYuNjYlJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMuc3Ryb25nVGV4dCgpO1xuICAgICAgICAgICAgICAgIG1ldGVyID0ge1xuICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDogJ3N0cm9uZycsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5wcm9tcHRUZXh0KCk7XG4gICAgICAgICAgICAgICAgbWV0ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXRlciA9IG1ldGVyO1xuICAgICAgICB0aGlzLmluZm9UZXh0ID0gbGFiZWw7XG4gICAgfVxuXG4gICAgb25NYXNrVG9nZ2xlKCkge1xuICAgICAgICB0aGlzLnVubWFza2VkID0gIXRoaXMudW5tYXNrZWQ7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0ZXN0U3RyZW5ndGgoc3RyKSB7XG4gICAgICAgIGxldCBsZXZlbCA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMuc3Ryb25nQ2hlY2tSZWdFeHAudGVzdChzdHIpKVxuICAgICAgICAgICAgbGV2ZWwgPSAzO1xuICAgICAgICBlbHNlIGlmICh0aGlzLm1lZGl1bUNoZWNrUmVnRXhwLnRlc3Qoc3RyKSlcbiAgICAgICAgICAgIGxldmVsID0gMjtcbiAgICAgICAgZWxzZSBpZiAoc3RyLmxlbmd0aClcbiAgICAgICAgICAgIGxldmVsID0gMTtcblxuICAgICAgICByZXR1cm4gbGV2ZWw7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuZmVlZGJhY2spXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVJKHRoaXMudmFsdWUgfHwgXCJcIik7XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4geydwLXBhc3N3b3JkIHAtY29tcG9uZW50IHAtaW5wdXR3cmFwcGVyJzogdHJ1ZSxcbiAgICAgICAgICAgICdwLWlucHV0LWljb24tcmlnaHQnOiB0aGlzLnRvZ2dsZU1hc2tcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnB1dEZpZWxkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7J3AtcGFzc3dvcmQtaW5wdXQnIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0b2dnbGVJY29uQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVubWFza2VkID8gJ3BpIHBpLWV5ZS1zbGFzaCcgOiAncGkgcGktZXllJztcbiAgICB9XG5cbiAgICBzdHJlbmd0aENsYXNzKCkge1xuICAgICAgICByZXR1cm4gYHAtcGFzc3dvcmQtc3RyZW5ndGggJHt0aGlzLm1ldGVyID8gdGhpcy5tZXRlci5zdHJlbmd0aCA6ICcnfWA7XG4gICAgfVxuXG4gICAgZmlsbGVkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID4gMClcbiAgICB9XG5cbiAgICBwcm9tcHRUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9tcHRMYWJlbCB8fCB0aGlzLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5QQVNTV09SRF9QUk9NUFQpO1xuICAgIH1cblxuICAgIHdlYWtUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy53ZWFrTGFiZWwgfHwgdGhpcy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuV0VBSyk7XG4gICAgfVxuXG4gICAgbWVkaXVtVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVkaXVtTGFiZWwgfHwgdGhpcy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuTUVESVVNKTtcbiAgICB9XG5cbiAgICBzdHJvbmdUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJvbmdMYWJlbCB8fCB0aGlzLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5TVFJPTkcpO1xuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXkgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5hcHBlbmRUbykucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlucHV0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5tYXNrZWQgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xuICAgIH1cblxuICAgIGdldFRyYW5zbGF0aW9uKG9wdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZUFwcGVuZCgpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1Bhc3N3b3JkRGlyZWN0aXZlLCBQYXNzd29yZCwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQYXNzd29yZERpcmVjdGl2ZSwgUGFzc3dvcmRdXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/password/primeng-password.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/password/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/password/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wYXNzd29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYXNzd29yZC9wcmltZW5nLXBhc3N3b3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/password/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/password/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/password/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './password';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYXNzd29yZC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXNzd29yZCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/picklist/picklist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/picklist/picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/picklist/picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,809 @@
+import { NgModule, Component, Input, Output, ContentChildren, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { RippleModule } from 'primeng/ripple';
+import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
+import { ObjectUtils, UniqueComponentId } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/cdk/drag-drop";
+import * as i3 from "@angular/common";
+import * as i4 from "primeng/button";
+import * as i5 from "primeng/ripple";
+export class PickList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.trackBy = (index, item) => item;
+        this.showSourceFilter = true;
+        this.showTargetFilter = true;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.showSourceControls = true;
+        this.showTargetControls = true;
+        this.disabled = false;
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.onMoveToSource = new EventEmitter();
+        this.onMoveAllToSource = new EventEmitter();
+        this.onMoveAllToTarget = new EventEmitter();
+        this.onMoveToTarget = new EventEmitter();
+        this.onSourceReorder = new EventEmitter();
+        this.onTargetReorder = new EventEmitter();
+        this.onSourceSelect = new EventEmitter();
+        this.onTargetSelect = new EventEmitter();
+        this.onSourceFilter = new EventEmitter();
+        this.onTargetFilter = new EventEmitter();
+        this.selectedItemsSource = [];
+        this.selectedItemsTarget = [];
+        this.id = UniqueComponentId();
+        this.SOURCE_LIST = -1;
+        this.TARGET_LIST = 1;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'sourceHeader':
+                    this.sourceHeaderTemplate = item.template;
+                    break;
+                case 'targetHeader':
+                    this.targetHeaderTemplate = item.template;
+                    break;
+                case 'emptymessagesource':
+                    this.emptyMessageSourceTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagesource':
+                    this.emptyFilterMessageSourceTemplate = item.template;
+                    break;
+                case 'emptymessagetarget':
+                    this.emptyMessageTargetTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagetarget':
+                    this.emptyFilterMessageTargetTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');
+            let listItem;
+            if (this.movedUp)
+                listItem = listItems[0];
+            else
+                listItem = listItems[listItems.length - 1];
+            DomHandler.scrollInView(this.reorderedListElement, listItem);
+            this.movedUp = false;
+            this.movedDown = false;
+            this.reorderedListElement = null;
+        }
+    }
+    onItemClick(event, item, selectedItems, callback) {
+        if (this.disabled) {
+            return;
+        }
+        let index = this.findIndexInSelection(item, selectedItems);
+        let selected = (index != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                selectedItems.splice(index, 1);
+            }
+            else {
+                if (!metaKey) {
+                    selectedItems.length = 0;
+                }
+                selectedItems.push(item);
+            }
+        }
+        else {
+            if (selected)
+                selectedItems.splice(index, 1);
+            else
+                selectedItems.push(item);
+        }
+        callback.emit({ originalEvent: event, items: selectedItems });
+        this.itemTouched = false;
+    }
+    onSourceItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveRight();
+    }
+    onTargetItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveLeft();
+    }
+    onFilter(event, data, listType) {
+        let query = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        if (listType === this.SOURCE_LIST)
+            this.filterValueSource = query;
+        else if (listType === this.TARGET_LIST)
+            this.filterValueTarget = query;
+        this.filter(data, listType);
+    }
+    filter(data, listType) {
+        let searchFields = this.filterBy.split(',');
+        if (listType === this.SOURCE_LIST) {
+            this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
+            this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
+        }
+        else if (listType === this.TARGET_LIST) {
+            this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
+            this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
+        }
+    }
+    isItemVisible(item, listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
+        else
+            return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
+    }
+    isEmpty(listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.filterValueSource ? (!this.visibleOptionsSource || this.visibleOptionsSource.length === 0) : (!this.source || this.source.length === 0);
+        else
+            return this.filterValueTarget ? (!this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0) : (!this.target || this.target.length === 0);
+    }
+    isVisibleInList(data, item, filterValue) {
+        if (filterValue && filterValue.trim().length) {
+            for (let i = 0; i < data.length; i++) {
+                if (item == data[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        if (this.disabled) {
+            return;
+        }
+        this.itemTouched = true;
+    }
+    sortByIndexInList(items, list) {
+        return items.sort((item1, item2) => ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));
+    }
+    moveUp(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex - 1];
+                    list[selectedItemIndex - 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedUp = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveTop(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = 0;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveDown(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex + 1];
+                    list[selectedItemIndex + 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedDown = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveBottom(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = listElement.scrollHeight;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveRight() {
+        if (this.selectedItemsSource && this.selectedItemsSource.length) {
+            for (let i = 0; i < this.selectedItemsSource.length; i++) {
+                let selectedItem = this.selectedItemsSource[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {
+                    this.target.push(this.source.splice(ObjectUtils.findIndexInList(selectedItem, this.source), 1)[0]);
+                    if (this.visibleOptionsSource)
+                        this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource), 1);
+                }
+            }
+            this.onMoveToTarget.emit({
+                items: this.selectedItemsSource
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    moveAllRight() {
+        if (this.source) {
+            let movedItems = [];
+            for (let i = 0; i < this.source.length; i++) {
+                if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
+                    let removedItem = this.source.splice(i, 1)[0];
+                    this.target.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToTarget.emit({
+                items: movedItems
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+            this.visibleOptionsSource = [];
+        }
+    }
+    moveLeft() {
+        if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
+            for (let i = 0; i < this.selectedItemsTarget.length; i++) {
+                let selectedItem = this.selectedItemsTarget[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {
+                    this.source.push(this.target.splice(ObjectUtils.findIndexInList(selectedItem, this.target), 1)[0]);
+                    if (this.visibleOptionsTarget)
+                        this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
+                }
+            }
+            this.onMoveToSource.emit({
+                items: this.selectedItemsTarget
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+    }
+    moveAllLeft() {
+        if (this.target) {
+            let movedItems = [];
+            for (let i = 0; i < this.target.length; i++) {
+                if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
+                    let removedItem = this.target.splice(i, 1)[0];
+                    this.source.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToSource.emit({
+                items: movedItems
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+            this.visibleOptionsTarget = [];
+        }
+    }
+    isSelected(item, selectedItems) {
+        return this.findIndexInSelection(item, selectedItems) != -1;
+    }
+    findIndexInSelection(item, selectedItems) {
+        return ObjectUtils.findIndexInList(item, selectedItems);
+    }
+    onDrop(event, listType) {
+        let isTransfer = event.previousContainer !== event.container;
+        let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
+        if (listType === this.SOURCE_LIST) {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsTarget)
+                    this.visibleOptionsTarget.splice(event.previousIndex, 1);
+                this.onMoveToSource.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onSourceReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+        else {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsSource)
+                    this.visibleOptionsSource.splice(event.previousIndex, 1);
+                this.onMoveToTarget.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onTargetReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
+        let previousIndex, currentIndex;
+        if (droppedList === this.SOURCE_LIST) {
+            previousIndex = isTransfer ? this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;
+            currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
+        }
+        else {
+            previousIndex = isTransfer ? this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;
+            currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
+        }
+        return { previousIndex, currentIndex };
+    }
+    findFilteredCurrentIndex(visibleOptions, index, options) {
+        if (visibleOptions.length === index) {
+            let toIndex = ObjectUtils.findIndexInList(visibleOptions[index - 1], options);
+            return toIndex + 1;
+        }
+        else {
+            return ObjectUtils.findIndexInList(visibleOptions[index], options);
+        }
+    }
+    resetFilter() {
+        this.visibleOptionsSource = null;
+        this.filterValueSource = null;
+        this.visibleOptionsTarget = null;
+        this.filterValueTarget = null;
+        this.sourceFilterViewChild.nativeElement.value = '';
+        this.targetFilterViewChild.nativeElement.value = '';
+    }
+    onItemKeydown(event, item, selectedItems, callback) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, selectedItems, callback);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+            @media screen and (max-width: ${this.breakpoint}) {
+                .p-picklist[${this.id}] {
+                    flex-direction: column;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons {
+                    padding: var(--content-padding);
+                    flex-direction: row;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button {
+                    margin-right: var(--inline-spacing);
+                    margin-bottom: 0;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {
+                    margin-right: 0;
+                }
+
+                .p-picklist[${this.id}] .pi-angle-right:before {
+                    content: "\\e930"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-right:before {
+                    content: "\\e92c"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-left:before {
+                    content: "\\e933"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-left:before {
+                    content: "\\e92f"
+                }
+            }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+PickList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+PickList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PickList, selector: "p-pickList", inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: "responsive", filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: "showSourceFilter", showTargetFilter: "showTargetFilter", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: "showSourceControls", showTargetControls: "showTargetControls", sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: "disabled", ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewSourceChild", first: true, predicate: ["sourcelist"], descendants: true }, { propertyName: "listViewTargetChild", first: true, predicate: ["targetlist"], descendants: true }, { propertyName: "sourceFilterViewChild", first: true, predicate: ["sourceFilter"], descendants: true }, { propertyName: "targetFilterViewChild", first: true, predicate: ["targetFilter"], descendants: true }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-pickList', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { source: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], sourceHeader: [{
+                type: Input
+            }], rightButtonAriaLabel: [{
+                type: Input
+            }], leftButtonAriaLabel: [{
+                type: Input
+            }], allRightButtonAriaLabel: [{
+                type: Input
+            }], allLeftButtonAriaLabel: [{
+                type: Input
+            }], upButtonAriaLabel: [{
+                type: Input
+            }], downButtonAriaLabel: [{
+                type: Input
+            }], topButtonAriaLabel: [{
+                type: Input
+            }], bottomButtonAriaLabel: [{
+                type: Input
+            }], targetHeader: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], sourceTrackBy: [{
+                type: Input
+            }], targetTrackBy: [{
+                type: Input
+            }], showSourceFilter: [{
+                type: Input
+            }], showTargetFilter: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], sourceStyle: [{
+                type: Input
+            }], targetStyle: [{
+                type: Input
+            }], showSourceControls: [{
+                type: Input
+            }], showTargetControls: [{
+                type: Input
+            }], sourceFilterPlaceholder: [{
+                type: Input
+            }], targetFilterPlaceholder: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], ariaSourceFilterLabel: [{
+                type: Input
+            }], ariaTargetFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onMoveToSource: [{
+                type: Output
+            }], onMoveAllToSource: [{
+                type: Output
+            }], onMoveAllToTarget: [{
+                type: Output
+            }], onMoveToTarget: [{
+                type: Output
+            }], onSourceReorder: [{
+                type: Output
+            }], onTargetReorder: [{
+                type: Output
+            }], onSourceSelect: [{
+                type: Output
+            }], onTargetSelect: [{
+                type: Output
+            }], onSourceFilter: [{
+                type: Output
+            }], onTargetFilter: [{
+                type: Output
+            }], listViewSourceChild: [{
+                type: ViewChild,
+                args: ['sourcelist']
+            }], listViewTargetChild: [{
+                type: ViewChild,
+                args: ['targetlist']
+            }], sourceFilterViewChild: [{
+                type: ViewChild,
+                args: ['sourceFilter']
+            }], targetFilterViewChild: [{
+                type: ViewChild,
+                args: ['targetFilter']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class PickListModule {
+}
+PickListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PickListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, declarations: [PickList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [PickList, SharedModule, DragDropModule] });
+PickListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [PickList, SharedModule, DragDropModule],
+                    declarations: [PickList]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGlja2xpc3QvcGlja2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWtELEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUEwQixZQUFZLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNuUCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsYUFBYSxFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBYyxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQThGN0QsTUFBTSxPQUFPLFFBQVE7SUFrSmpCLFlBQW1CLEVBQWMsRUFBUyxFQUFxQixFQUFTLGFBQTRCO1FBQWpGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEgzRixZQUFPLEdBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFNdkQscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBRWpDLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUVqQyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFFakMs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WUFBWSxFQUFDLGNBQWMsYUFudEJuRSxRQUFRLEVBb3RCRSxZQUFZLEVBQUMsY0FBYzs0R0FHckMsY0FBYyxZQUpkLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGNBQWMsQ0FBQyxFQUMxRCxZQUFZLEVBQUMsY0FBYzsyRkFHckMsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsY0FBYyxDQUFDO29CQUM3RSxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUMsWUFBWSxFQUFDLGNBQWMsQ0FBQztvQkFDL0MsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIElucHV0LCBPdXRwdXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGUsUHJpbWVUZW1wbGF0ZSxGaWx0ZXJTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge0Nka0RyYWdEcm9wLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge09iamVjdFV0aWxzLCBVbmlxdWVDb21wb25lbnRJZH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1waWNrTGlzdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwiJ3AtcGlja2xpc3QgcC1jb21wb25lbnQnXCIgY2RrRHJvcExpc3RHcm91cD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWJ1dHRvbnMgcC1waWNrbGlzdC1zb3VyY2UtY29udHJvbHNcIiAqbmdJZj1cInNob3dTb3VyY2VDb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwidXBCdXR0b25BcmlhTGFiZWxcIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWFuZ2xlLXVwXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVVcChzb3VyY2VsaXN0LHNvdXJjZSxzZWxlY3RlZEl0ZW1zU291cmNlLG9uU291cmNlUmVvcmRlcixTT1VSQ0VfTElTVClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRvcEJ1dHRvbkFyaWFMYWJlbFwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktYW5nbGUtZG91YmxlLXVwXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVUb3Aoc291cmNlbGlzdCxzb3VyY2Usc2VsZWN0ZWRJdGVtc1NvdXJjZSxvblNvdXJjZVJlb3JkZXIsU09VUkNFX0xJU1QpXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJkb3duQnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3duXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVEb3duKHNvdXJjZWxpc3Qsc291cmNlLHNlbGVjdGVkSXRlbXNTb3VyY2Usb25Tb3VyY2VSZW9yZGVyLFNPVVJDRV9MSVNUKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYm90dG9tQnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3VibGUtZG93blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlQm90dG9tKHNvdXJjZWxpc3Qsc291cmNlLHNlbGVjdGVkSXRlbXNTb3VyY2Usb25Tb3VyY2VSZW9yZGVyLFNPVVJDRV9MSVNUKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC1saXN0LXdyYXBwZXIgcC1waWNrbGlzdC1zb3VyY2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWhlYWRlclwiICpuZ0lmPVwic291cmNlSGVhZGVyIHx8IHNvdXJjZUhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LXRpdGxlXCIgKm5nSWY9XCIhc291cmNlSGVhZGVyVGVtcGxhdGVcIj57e3NvdXJjZUhlYWRlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3VyY2VIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImZpbHRlckJ5ICYmIHNob3dTb3VyY2VGaWx0ZXIgIT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNzb3VyY2VGaWx0ZXIgdHlwZT1cInRleHRcIiByb2xlPVwidGV4dGJveFwiIChrZXl1cCk9XCJvbkZpbHRlcigkZXZlbnQsc291cmNlLFNPVVJDRV9MSVNUKVwiIGNsYXNzPVwicC1waWNrbGlzdC1maWx0ZXItaW5wdXQgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYVNvdXJjZUZpbHRlckxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyLWljb24gcGkgcGktc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDx1bCAjc291cmNlbGlzdCBjbGFzcz1cInAtcGlja2xpc3QtbGlzdCBwLXBpY2tsaXN0LXNvdXJjZVwiIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwic291cmNlXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzb3VyY2VTdHlsZVwiIHJvbGU9XCJsaXN0Ym94XCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic291cmNlXCIgW25nRm9yVHJhY2tCeV09XCJzb3VyY2VUcmFja0J5IHx8IHRyYWNrQnlcIiBsZXQtaT1cImluZGV4XCIgbGV0LWw9XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwieydwLXBpY2tsaXN0LWl0ZW0nOnRydWUsJ3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKGl0ZW0sc2VsZWN0ZWRJdGVtc1NvdXJjZSksJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiBwUmlwcGxlIGNka0RyYWcgW2Nka0RyYWdEYXRhXT1cIml0ZW1cIiBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFkcmFnZHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCxpdGVtLHNlbGVjdGVkSXRlbXNTb3VyY2Usb25Tb3VyY2VTZWxlY3QpXCIgKGRibGNsaWNrKT1cIm9uU291cmNlSXRlbURibENsaWNrKClcIiAodG91Y2hlbmQpPVwib25JdGVtVG91Y2hFbmQoKVwiIChrZXlkb3duKT1cIm9uSXRlbUtleWRvd24oJGV2ZW50LGl0ZW0sc2VsZWN0ZWRJdGVtc1NvdXJjZSxvblNvdXJjZVNlbGVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtVmlzaWJsZShpdGVtLCBTT1VSQ0VfTElTVClcIiB0YWJpbmRleD1cIjBcIiByb2xlPVwib3B0aW9uXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0sIHNlbGVjdGVkSXRlbXNTb3VyY2UpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFbXB0eShTT1VSQ0VfTElTVCkgJiYgKGVtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlIHx8IGVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1waWNrbGlzdC1lbXB0eS1tZXNzYWdlXCIgKm5nSWY9XCIhZmlsdGVyVmFsdWVTb3VyY2UgfHwgIWVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1waWNrbGlzdC1lbXB0eS1tZXNzYWdlXCIgKm5nSWY9XCJmaWx0ZXJWYWx1ZVNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUZpbHRlck1lc3NhZ2VTb3VyY2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtYnV0dG9ucyBwLXBpY2tsaXN0LXRyYW5zZmVyLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJpZ2h0QnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1yaWdodFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlUmlnaHQoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxsUmlnaHRCdXR0b25BcmlhTGFiZWxcIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlQWxsUmlnaHQoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibGVmdEJ1dHRvbkFyaWFMYWJlbFwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktYW5nbGUtbGVmdFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlTGVmdCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGxMZWZ0QnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3VibGUtbGVmdFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlQWxsTGVmdCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWxpc3Qtd3JhcHBlciBwLXBpY2tsaXN0LXRhcmdldC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtaGVhZGVyXCIgKm5nSWY9XCJ0YXJnZXRIZWFkZXIgfHwgdGFyZ2V0SGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtdGl0bGVcIiAqbmdJZj1cIiF0YXJnZXRIZWFkZXJUZW1wbGF0ZVwiPnt7dGFyZ2V0SGVhZGVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhcmdldEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiZmlsdGVyQnkgJiYgc2hvd1RhcmdldEZpbHRlciAhPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgI3RhcmdldEZpbHRlciB0eXBlPVwidGV4dFwiIHJvbGU9XCJ0ZXh0Ym94XCIgKGtleXVwKT1cIm9uRmlsdGVyKCRldmVudCx0YXJnZXQsVEFSR0VUX0xJU1QpXCIgY2xhc3M9XCJwLXBpY2tsaXN0LWZpbHRlci1pbnB1dCBwLWlucHV0dGV4dCBwLWNvbXBvbmVudFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLnBsYWNlaG9sZGVyXT1cInRhcmdldEZpbHRlclBsYWNlaG9sZGVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhVGFyZ2V0RmlsdGVyTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1waWNrbGlzdC1maWx0ZXItaWNvbiBwaSBwaS1zZWFyY2hcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx1bCAjdGFyZ2V0bGlzdCBjbGFzcz1cInAtcGlja2xpc3QtbGlzdCBwLXBpY2tsaXN0LXRhcmdldFwiIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwidGFyZ2V0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50LCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ0YXJnZXRTdHlsZVwiIHJvbGU9XCJsaXN0Ym94XCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwidGFyZ2V0XCIgW25nRm9yVHJhY2tCeV09XCJ0YXJnZXRUcmFja0J5IHx8IHRyYWNrQnlcIiBsZXQtaT1cImluZGV4XCIgbGV0LWw9XCJsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwieydwLXBpY2tsaXN0LWl0ZW0nOnRydWUsJ3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKGl0ZW0sc2VsZWN0ZWRJdGVtc1RhcmdldCksICdwLWRpc2FibGVkJzogZGlzYWJsZWR9XCIgcFJpcHBsZSBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJpdGVtXCIgW2Nka0RyYWdEaXNhYmxlZF09XCIhZHJhZ2Ryb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsaXRlbSxzZWxlY3RlZEl0ZW1zVGFyZ2V0LG9uVGFyZ2V0U2VsZWN0KVwiIChkYmxjbGljayk9XCJvblRhcmdldEl0ZW1EYmxDbGljaygpXCIgKHRvdWNoZW5kKT1cIm9uSXRlbVRvdWNoRW5kKClcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlkb3duKCRldmVudCxpdGVtLHNlbGVjdGVkSXRlbXNUYXJnZXQsb25UYXJnZXRTZWxlY3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzSXRlbVZpc2libGUoaXRlbSwgVEFSR0VUX0xJU1QpXCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cIm9wdGlvblwiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChpdGVtLCBzZWxlY3RlZEl0ZW1zVGFyZ2V0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRW1wdHkoVEFSR0VUX0xJU1QpICYmIChlbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSB8fCBlbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiIWZpbHRlclZhbHVlVGFyZ2V0IHx8ICFlbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInAtcGlja2xpc3QtZW1wdHktbWVzc2FnZVwiICpuZ0lmPVwiZmlsdGVyVmFsdWVUYXJnZXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlGaWx0ZXJNZXNzYWdlVGFyZ2V0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWJ1dHRvbnMgcC1waWNrbGlzdC10YXJnZXQtY29udHJvbHNcIiAqbmdJZj1cInNob3dUYXJnZXRDb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwidXBCdXR0b25BcmlhTGFiZWxcIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWFuZ2xlLXVwXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVVcCh0YXJnZXRsaXN0LHRhcmdldCxzZWxlY3RlZEl0ZW1zVGFyZ2V0LG9uVGFyZ2V0UmVvcmRlcixUQVJHRVRfTElTVClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRvcEJ1dHRvbkFyaWFMYWJlbFwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktYW5nbGUtZG91YmxlLXVwXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVUb3AodGFyZ2V0bGlzdCx0YXJnZXQsc2VsZWN0ZWRJdGVtc1RhcmdldCxvblRhcmdldFJlb3JkZXIsVEFSR0VUX0xJU1QpXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJkb3duQnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3duXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cIm1vdmVEb3duKHRhcmdldGxpc3QsdGFyZ2V0LHNlbGVjdGVkSXRlbXNUYXJnZXQsb25UYXJnZXRSZW9yZGVyLFRBUkdFVF9MSVNUKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYm90dG9tQnV0dG9uQXJpYUxhYmVsXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1hbmdsZS1kb3VibGUtZG93blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJtb3ZlQm90dG9tKHRhcmdldGxpc3QsdGFyZ2V0LHNlbGVjdGVkSXRlbXNUYXJnZXQsb25UYXJnZXRSZW9yZGVyLFRBUkdFVF9MSVNUKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9waWNrbGlzdC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBQaWNrTGlzdCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSBzb3VyY2U6IGFueVtdO1xuXG4gICAgQElucHV0KCkgdGFyZ2V0OiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHNvdXJjZUhlYWRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmlnaHRCdXR0b25BcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxlZnRCdXR0b25BcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFsbFJpZ2h0QnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhbGxMZWZ0QnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB1cEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZG93bkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdG9wQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBib3R0b21CdXR0b25BcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhcmdldEhlYWRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVzcG9uc2l2ZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJMb2NhbGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuICAgIEBJbnB1dCgpIHNvdXJjZVRyYWNrQnk6IEZ1bmN0aW9uO1xuXG4gICAgQElucHV0KCkgdGFyZ2V0VHJhY2tCeTogRnVuY3Rpb247XG5cbiAgICBASW5wdXQoKSBzaG93U291cmNlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dUYXJnZXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgbWV0YUtleVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNvdXJjZVN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSB0YXJnZXRTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc2hvd1NvdXJjZUNvbnRyb2xzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dUYXJnZXRDb250cm9sczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFyZ2V0RmlsdGVyUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhcmlhU291cmNlRmlsdGVyTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFUYXJnZXRGaWx0ZXJMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTWF0Y2hNb2RlOiBzdHJpbmcgPSBcImNvbnRhaW5zXCI7XG5cbiAgICBASW5wdXQoKSBicmVha3BvaW50OiBzdHJpbmcgPSBcIjk2MHB4XCI7XG5cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTW92ZUFsbFRvU291cmNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk1vdmVBbGxUb1RhcmdldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU291cmNlUmVvcmRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRSZW9yZGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblNvdXJjZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU291cmNlRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblRhcmdldEZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdzb3VyY2VsaXN0JykgbGlzdFZpZXdTb3VyY2VDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhcmdldGxpc3QnKSBsaXN0Vmlld1RhcmdldENoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc291cmNlRmlsdGVyJykgc291cmNlRmlsdGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0RmlsdGVyJykgdGFyZ2V0RmlsdGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyB2aXNpYmxlT3B0aW9uc1NvdXJjZTogYW55W107XG5cbiAgICBwdWJsaWMgdmlzaWJsZU9wdGlvbnNUYXJnZXQ6IGFueVtdO1xuXG4gICAgc2VsZWN0ZWRJdGVtc1NvdXJjZTogYW55W10gPSBbXTtcblxuICAgIHNlbGVjdGVkSXRlbXNUYXJnZXQ6IGFueVtdID0gW107XG5cbiAgICByZW9yZGVyZWRMaXN0RWxlbWVudDogYW55O1xuXG4gICAgbW92ZWRVcDogYm9vbGVhbjtcblxuICAgIG1vdmVkRG93bjogYm9vbGVhbjtcblxuICAgIGl0ZW1Ub3VjaGVkOiBib29sZWFuO1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gVW5pcXVlQ29tcG9uZW50SWQoKTtcblxuICAgIGZpbHRlclZhbHVlU291cmNlOiBzdHJpbmc7XG5cbiAgICBmaWx0ZXJWYWx1ZVRhcmdldDogc3RyaW5nO1xuXG4gICAgZnJvbUxpc3RUeXBlOiBudW1iZXI7XG5cbiAgICBlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBlbXB0eUZpbHRlck1lc3NhZ2VUYXJnZXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHNvdXJjZUhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICByZWFkb25seSBTT1VSQ0VfTElTVCA9IC0xO1xuXG4gICAgcmVhZG9ubHkgVEFSR0VUX0xJU1QgPSAxO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSkge31cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZUhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlSGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAndGFyZ2V0SGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRIZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5ZmlsdGVybWVzc2FnZXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHltZXNzYWdldGFyZ2V0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eU1lc3NhZ2VUYXJnZXRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2V0YXJnZXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5tb3ZlZFVwfHx0aGlzLm1vdmVkRG93bikge1xuICAgICAgICAgICAgbGV0IGxpc3RJdGVtcyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLnJlb3JkZXJlZExpc3RFbGVtZW50LCAnbGkucC1oaWdobGlnaHQnKTtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW92ZWRVcClcbiAgICAgICAgICAgICAgICBsaXN0SXRlbSA9IGxpc3RJdGVtc1swXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsaXN0SXRlbSA9IGxpc3RJdGVtc1tsaXN0SXRlbXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIERvbUhhbmRsZXIuc2Nyb2xsSW5WaWV3KHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQsIGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55Pikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihpdGVtLHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSAoaW5kZXggIT0gLTEpO1xuICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMuaXRlbVRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSAoZXZlbnQubWV0YUtleXx8ZXZlbnQuY3RybEtleXx8ZXZlbnQuc2hpZnRLZXkpO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZClcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2suZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIGl0ZW1zOiBzZWxlY3RlZEl0ZW1zfSk7XG5cbiAgICAgICAgdGhpcy5pdGVtVG91Y2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uU291cmNlSXRlbURibENsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb3ZlUmlnaHQoKTtcbiAgICB9XG5cbiAgICBvblRhcmdldEl0ZW1EYmxDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubW92ZUxlZnQoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcihldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0YTogYW55W10sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gKCg8SFRNTElucHV0RWxlbWVudD4gZXZlbnQudGFyZ2V0KS52YWx1ZS50cmltKCkgYXMgYW55KS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVClcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPSBxdWVyeTtcbiAgICAgICAgZWxzZSBpZiAobGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpXG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gcXVlcnk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXIoZGF0YSwgbGlzdFR5cGUpO1xuICAgIH1cblxuICAgIGZpbHRlcihkYXRhOiBhbnlbXSwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBsZXQgc2VhcmNoRmllbGRzID0gdGhpcy5maWx0ZXJCeS5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoZGF0YSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlU291cmNlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5vblNvdXJjZUZpbHRlci5lbWl0KHtxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2V9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoZGF0YSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0LCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5vblRhcmdldEZpbHRlci5lbWl0KHtxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzSXRlbVZpc2libGUoaXRlbTogYW55LCBsaXN0VHlwZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PSB0aGlzLlNPVVJDRV9MSVNUKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlSW5MaXN0KHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIGl0ZW0sIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1Zpc2libGVJbkxpc3QodGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgaXRlbSwgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCk7XG4gICAgfVxuXG4gICAgaXNFbXB0eShsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PSB0aGlzLlNPVVJDRV9MSVNUKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPyAoIXRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPT09IDApIDogKCF0aGlzLnNvdXJjZSB8fCB0aGlzLnNvdXJjZS5sZW5ndGggPT09IDApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/ICghdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCB8fCB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA9PT0gMCkgOiAoIXRoaXMudGFyZ2V0IHx8IHRoaXMudGFyZ2V0Lmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG5cbiAgICBpc1Zpc2libGVJbkxpc3QoZGF0YTogYW55W10sIGl0ZW06IGFueSwgZmlsdGVyVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWUgJiYgZmlsdGVyVmFsdWUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBkYXRhW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtVG91Y2hFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRCeUluZGV4SW5MaXN0KGl0ZW1zOiBhbnlbXSwgbGlzdDogYW55KSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+XG4gICAgICAgICAgICBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoaXRlbTEsIGxpc3QpIC0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGl0ZW0yLCBsaXN0KSk7XG4gICAgfVxuXG4gICAgbW92ZVVwKGxpc3RFbGVtZW50LCBsaXN0LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXgtMV07XG4gICAgICAgICAgICAgICAgICAgIGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXgtMV0gPSBtb3ZlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdID0gdGVtcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2Ryb3AgJiYgKCh0aGlzLmZpbHRlclZhbHVlU291cmNlICYmIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB8fCAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCAmJiBsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkpKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoe2l0ZW1zOiBzZWxlY3RlZEl0ZW1zfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9wKGxpc3RFbGVtZW50LCBsaXN0LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Quc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnVuc2hpZnQobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2Ryb3AgJiYgKCh0aGlzLmZpbHRlclZhbHVlU291cmNlICYmIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB8fCAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCAmJiBsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkpKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgbGlzdEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoe2l0ZW1zOiBzZWxlY3RlZEl0ZW1zfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlRG93bihsaXN0RWxlbWVudCwgbGlzdCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IChsaXN0Lmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW0gPSBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBsaXN0W3NlbGVjdGVkSXRlbUluZGV4KzFdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4KzFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSlcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcihsaXN0LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgICAgIHRoaXMubW92ZWREb3duID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoe2l0ZW1zOiBzZWxlY3RlZEl0ZW1zfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlQm90dG9tKGxpc3RFbGVtZW50LCBsaXN0LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgbGlzdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gKGxpc3QubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Quc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2gobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2Ryb3AgJiYgKCh0aGlzLmZpbHRlclZhbHVlU291cmNlICYmIGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB8fCAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCAmJiBsaXN0VHlwZSA9PT0gdGhpcy5UQVJHRVRfTElTVCkpKVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgbGlzdEVsZW1lbnQuc2Nyb2xsVG9wID0gbGlzdEVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7aXRlbXM6IHNlbGVjdGVkSXRlbXN9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVSaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnB1c2godGhpcy5zb3VyY2Uuc3BsaWNlKE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMuc291cmNlKSwxKVswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSwxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZVRvVGFyZ2V0LmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIodGhpcy50YXJnZXQsIHRoaXMuVEFSR0VUX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbFJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbVZpc2libGUodGhpcy5zb3VyY2VbaV0sIHRoaXMuU09VUkNFX0xJU1QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkSXRlbSA9IHRoaXMuc291cmNlLnNwbGljZShpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVkSXRlbXMucHVzaChyZW1vdmVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlQWxsVG9UYXJnZXQuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbXM6IG1vdmVkSXRlbXNcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcih0aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVMZWZ0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ICYmIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0W2ldO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCB0aGlzLnNvdXJjZSkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLnRhcmdldC5zcGxpY2UoT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpLDEpWzBdKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpLDEpWzBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIodGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgbGV0IG1vdmVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudGFyZ2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJdGVtVmlzaWJsZSh0aGlzLnRhcmdldFtpXSwgdGhpcy5UQVJHRVRfTElTVCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbW92ZWRJdGVtID0gdGhpcy50YXJnZXQuc3BsaWNlKGksIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZWRJdGVtcy5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVBbGxUb1NvdXJjZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogbW92ZWRJdGVtc1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKHRoaXMuc291cmNlLCB0aGlzLlNPVVJDRV9MSVNUKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKGl0ZW0sIHNlbGVjdGVkSXRlbXMpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluU2VsZWN0aW9uKGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10pOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHNlbGVjdGVkSXRlbXMpO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBpc1RyYW5zZmVyID0gZXZlbnQucHJldmlvdXNDb250YWluZXIgIT09IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgbGV0IGRyb3BJbmRleGVzID0gdGhpcy5nZXREcm9wSW5kZXhlcyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgsIGxpc3RUeXBlLCBpc1RyYW5zZmVyLCBldmVudC5pdGVtLmRhdGEpO1xuXG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0LnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9Tb3VyY2UuZW1pdCh7aXRlbXM6IFtldmVudC5pdGVtLmRhdGFdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNvdXJjZVJlb3JkZXIuZW1pdCh7aXRlbXM6IFtldmVudC5pdGVtLmRhdGFdfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIodGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdCh7aXRlbXM6IFtldmVudC5pdGVtLmRhdGFdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRhcmdldFJlb3JkZXIuZW1pdCh7aXRlbXM6IFtldmVudC5pdGVtLmRhdGFdfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIodGhpcy50YXJnZXQsIHRoaXMuVEFSR0VUX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RHJvcEluZGV4ZXMoZnJvbUluZGV4LCB0b0luZGV4LCBkcm9wcGVkTGlzdCwgaXNUcmFuc2ZlciwgZGF0YSkge1xuICAgICAgICBsZXQgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4O1xuXG4gICAgICAgIGlmIChkcm9wcGVkTGlzdCA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGlzVHJhbnNmZXIgPyB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gT2JqZWN0VXRpbHMuZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMudGFyZ2V0KSA6IGZyb21JbmRleCA6IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPyBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoZGF0YSwgdGhpcy5zb3VyY2UpIDogZnJvbUluZGV4O1xuICAgICAgICAgICAgY3VycmVudEluZGV4ID0gdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IHRoaXMuZmluZEZpbHRlcmVkQ3VycmVudEluZGV4KHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIHRvSW5kZXgsIHRoaXMuc291cmNlKSA6IHRvSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaXNUcmFuc2ZlciA/IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPyBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QoZGF0YSwgdGhpcy5zb3VyY2UpIDogZnJvbUluZGV4IDogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnRhcmdldCkgOiBmcm9tSW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXggPSB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gdGhpcy5maW5kRmlsdGVyZWRDdXJyZW50SW5kZXgodGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgdG9JbmRleCwgdGhpcy50YXJnZXQpIDogdG9JbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7cHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4fTtcbiAgICB9XG5cbiAgICBmaW5kRmlsdGVyZWRDdXJyZW50SW5kZXgodmlzaWJsZU9wdGlvbnMsIGluZGV4LCBvcHRpb25zKSB7XG4gICAgICAgIGlmICh2aXNpYmxlT3B0aW9ucy5sZW5ndGggPT09IGluZGV4KSB7XG4gICAgICAgICAgICBsZXQgdG9JbmRleCA9IE9iamVjdFV0aWxzLmZpbmRJbmRleEluTGlzdCh2aXNpYmxlT3B0aW9uc1tpbmRleC0xXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0b0luZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5maW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXhdLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gbnVsbDtcblxuICAgICAgICAoPEhUTUxJbnB1dEVsZW1lbnQ+IHRoaXMuc291cmNlRmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gJyc7XG4gICAgICAgICg8SFRNTElucHV0RWxlbWVudD4gdGhpcy50YXJnZXRGaWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4pIHtcbiAgICAgICAgbGV0IGxpc3RJdGVtID0gPEhUTUxMSUVsZW1lbnQ+IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgc3dpdGNoKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL2Rvd25cbiAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgdmFyIG5leHRJdGVtID0gdGhpcy5maW5kTmV4dEl0ZW0obGlzdEl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0SXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy91cFxuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICB2YXIgcHJldkl0ZW0gPSB0aGlzLmZpbmRQcmV2SXRlbShsaXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VudGVyXG4gICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soZXZlbnQsIGl0ZW0sIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dEl0ZW0oaXRlbSkge1xuICAgICAgICBsZXQgbmV4dEl0ZW0gPSBpdGVtLm5leHRFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAobmV4dEl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gIURvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dEl0ZW0sICdwLXBpY2tsaXN0LWl0ZW0nKSB8fCBEb21IYW5kbGVyLmlzSGlkZGVuKG5leHRJdGVtKSA/IHRoaXMuZmluZE5leHRJdGVtKG5leHRJdGVtKSA6IG5leHRJdGVtO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmaW5kUHJldkl0ZW0oaXRlbSkge1xuICAgICAgICBsZXQgcHJldkl0ZW0gPSBpdGVtLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKHByZXZJdGVtKVxuICAgICAgICAgICAgcmV0dXJuICFEb21IYW5kbGVyLmhhc0NsYXNzKHByZXZJdGVtLCAncC1waWNrbGlzdC1pdGVtJykgfHwgRG9tSGFuZGxlci5pc0hpZGRlbihwcmV2SXRlbSkgPyB0aGlzLmZpbmRQcmV2SXRlbShwcmV2SXRlbSkgOiBwcmV2SXRlbTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY3JlYXRlU3R5bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUodGhpcy5pZCwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGlubmVySFRNTCA9IGBcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgIC5wLXBpY2tsaXN0WyR7dGhpcy5pZH1dIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSAucC1waWNrbGlzdC1idXR0b25zIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tY29udGVudC1wYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSAucC1waWNrbGlzdC1idXR0b25zIC5wLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0taW5saW5lLXNwYWNpbmcpO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wLXBpY2tsaXN0WyR7dGhpcy5pZH1dIC5wLXBpY2tsaXN0LWJ1dHRvbnMgLnAtYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnBpLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxcXGU5MzBcIlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wLXBpY2tsaXN0WyR7dGhpcy5pZH1dIC5waS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXFxcZTkyY1wiXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnBpLWFuZ2xlLWxlZnQ6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXFxcZTkzM1wiXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnBpLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxcXGU5MmZcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50LmlubmVySFRNTCA9IGlubmVySFRNTDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lTdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gbnVsbDtgYFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVN0eWxlKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsQnV0dG9uTW9kdWxlLFNoYXJlZE1vZHVsZSxSaXBwbGVNb2R1bGUsRHJhZ0Ryb3BNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtQaWNrTGlzdCxTaGFyZWRNb2R1bGUsRHJhZ0Ryb3BNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1BpY2tMaXN0XVxufSlcbmV4cG9ydCBjbGFzcyBQaWNrTGlzdE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/picklist/primeng-picklist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/picklist/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/picklist/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1waWNrbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9waWNrbGlzdC9wcmltZW5nLXBpY2tsaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/picklist/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/picklist/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/picklist/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './picklist';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9waWNrbGlzdC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9waWNrbGlzdCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/primeng.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcmltZW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/progressbar/primeng-progressbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressbar/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressbar/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wcm9ncmVzc2Jhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9ncmVzc2Jhci9wcmltZW5nLXByb2dyZXNzYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/progressbar/progressbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressbar/progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressbar/progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,63 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class ProgressBar {
+    constructor() {
+        this.showValue = true;
+        this.unit = '%';
+        this.mode = 'determinate';
+    }
+}
+ProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressBar, selector: "p-progressBar", inputs: { value: "value", showValue: "showValue", style: "style", styleClass: "styleClass", unit: "unit", mode: "mode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressBar', template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"] }]
+        }], propDecorators: { value: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], unit: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }] } });
+export class ProgressBarModule {
+}
+ProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBar], imports: [CommonModule], exports: [ProgressBar] });
+ProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressBar],
+                    declarations: [ProgressBar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBcUI3QyxNQUFNLE9BQU8sV0FBVztJQW5CeEI7UUF1QmEsY0FBUyxHQUFZLElBQUksQ0FBQztRQU0xQixTQUFJLEdBQVcsR0FBRyxDQUFDO1FBRW5CLFNBQUksR0FBVyxhQUFhLENBQUM7S0FFekM7O3dHQWRZLFdBQVc7NEZBQVgsV0FBVyxzTkFqQlY7Ozs7Ozs7OztLQVNUOzJGQVFRLFdBQVc7a0JBbkJ2QixTQUFTOytCQUNJLGVBQWUsWUFDZjs7Ozs7Ozs7O0tBU1QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFFL0I7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCOzhCQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7O0FBU1YsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQXJCakIsV0FBVyxhQWlCVixZQUFZLGFBakJiLFdBQVc7K0dBcUJYLGlCQUFpQixZQUpqQixDQUFDLFlBQVksQ0FBQzsyRkFJZCxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7b0JBQ3RCLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxJbnB1dCxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1wcm9ncmVzc0JhcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgcm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjBcIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtcHJvZ3Jlc3NiYXIgcC1jb21wb25lbnQnOiB0cnVlLCAncC1wcm9ncmVzc2Jhci1kZXRlcm1pbmF0ZSc6IChtb2RlID09PSAnZGV0ZXJtaW5hdGUnKSwgJ3AtcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSc6IChtb2RlID09PSAnaW5kZXRlcm1pbmF0ZScpfVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdkZXRlcm1pbmF0ZSdcIiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlXCIgW3N0eWxlLndpZHRoXT1cInZhbHVlICsgJyUnXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2RldGVybWluYXRlJyAmJiBzaG93VmFsdWVcIiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItbGFiZWxcIiBbc3R5bGUuZGlzcGxheV09XCJ2YWx1ZSAhPSBudWxsID8gJ2Jsb2NrJyA6ICdub25lJ1wiPnt7dmFsdWV9fXt7dW5pdH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2luZGV0ZXJtaW5hdGUnXCIgY2xhc3M9XCJwLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2dyZXNzYmFyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyIHtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzaG93VmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHVuaXQ6IHN0cmluZyA9ICclJztcblxuICAgIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdkZXRlcm1pbmF0ZSc7XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbUHJvZ3Jlc3NCYXJdLFxuICAgIGRlY2xhcmF0aW9uczogW1Byb2dyZXNzQmFyXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc0Jhck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/progressbar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressbar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressbar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './progressbar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9ncmVzc2Jhci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm9ncmVzc2Jhcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/progressspinner/primeng-progressspinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressspinner/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressspinner/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1wcm9ncmVzc3NwaW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZ3Jlc3NzcGlubmVyL3ByaW1lbmctcHJvZ3Jlc3NzcGlubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/progressspinner/progressspinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressspinner/progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressspinner/progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,55 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class ProgressSpinner {
+    constructor() {
+        this.strokeWidth = "2";
+        this.fill = "none";
+        this.animationDuration = "2s";
+    }
+}
+ProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressSpinner, selector: "p-progressSpinner", inputs: { style: "style", styleClass: "styleClass", strokeWidth: "strokeWidth", fill: "fill", animationDuration: "animationDuration" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, isInline: true, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressSpinner', template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"] }]
+        }], propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], fill: [{
+                type: Input
+            }], animationDuration: [{
+                type: Input
+            }] } });
+export class ProgressSpinnerModule {
+}
+ProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, declarations: [ProgressSpinner], imports: [CommonModule], exports: [ProgressSpinner] });
+ProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressSpinner],
+                    declarations: [ProgressSpinner]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NzcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2dyZXNzc3Bpbm5lci9wcm9ncmVzc3NwaW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBa0I3QyxNQUFNLE9BQU8sZUFBZTtJQWhCNUI7UUFzQmEsZ0JBQVcsR0FBVyxHQUFHLENBQUM7UUFFMUIsU0FBSSxHQUFXLE1BQU0sQ0FBQztRQUV0QixzQkFBaUIsR0FBVyxJQUFJLENBQUM7S0FFN0M7OzRHQVpZLGVBQWU7Z0dBQWYsZUFBZSx3T0FkZDs7Ozs7O0tBTVQ7MkZBUVEsZUFBZTtrQkFoQjNCLFNBQVM7K0JBQ0ksbUJBQW1CLFlBQ25COzs7Ozs7S0FNVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7OEJBSVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLOztBQVNWLE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFuQnJCLGVBQWUsYUFlZCxZQUFZLGFBZmIsZUFBZTttSEFtQmYscUJBQXFCLFlBSnJCLENBQUMsWUFBWSxDQUFDOzJGQUlkLHFCQUFxQjtrQkFMakMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXByb2dyZXNzU3Bpbm5lcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtcHJvZ3Jlc3Mtc3Bpbm5lclwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiICByb2xlPVwiYWxlcnRcIiBhcmlhLWJ1c3k9XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwicC1wcm9ncmVzcy1zcGlubmVyLXN2Z1wiIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiIFtzdHlsZS5hbmltYXRpb24tZHVyYXRpb25dPVwiYW5pbWF0aW9uRHVyYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicC1wcm9ncmVzcy1zcGlubmVyLWNpcmNsZVwiIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjIwXCIgW2F0dHIuZmlsbF09XCJmaWxsXCIgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoXCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3NzcGlubmVyLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzU3Bpbm5lciB7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IHN0cmluZyA9IFwiMlwiO1xuXG4gICAgQElucHV0KCkgZmlsbDogc3RyaW5nID0gXCJub25lXCI7XG5cbiAgICBASW5wdXQoKSBhbmltYXRpb25EdXJhdGlvbjogc3RyaW5nID0gXCIyc1wiO1xuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1Byb2dyZXNzU3Bpbm5lcl0sXG4gICAgZGVjbGFyYXRpb25zOiBbUHJvZ3Jlc3NTcGlubmVyXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/progressspinner/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/progressspinner/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/progressspinner/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './progressspinner';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wcm9ncmVzc3NwaW5uZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm9ncmVzc3NwaW5uZXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export default {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge307Il19
Index: trip-planner-front/node_modules/primeng/esm2020/radiobutton/primeng-radiobutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/radiobutton/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/radiobutton/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1yYWRpb2J1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9yYWRpb2J1dHRvbi9wcmltZW5nLXJhZGlvYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/radiobutton/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/radiobutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/radiobutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './radiobutton';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9yYWRpb2J1dHRvbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yYWRpb2J1dHRvbic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/radiobutton/radiobutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/radiobutton/radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/radiobutton/radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,216 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ChangeDetectionStrategy, Injectable } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const RADIO_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => RadioButton),
+    multi: true
+};
+export class RadioControlRegistry {
+    constructor() {
+        this.accessors = [];
+    }
+    add(control, accessor) {
+        this.accessors.push([control, accessor]);
+    }
+    remove(accessor) {
+        this.accessors = this.accessors.filter((c) => {
+            return c[1] !== accessor;
+        });
+    }
+    select(accessor) {
+        this.accessors.forEach((c) => {
+            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {
+                c[1].writeValue(accessor.value);
+            }
+        });
+    }
+    isSameGroup(controlPair, accessor) {
+        if (!controlPair[0].control) {
+            return false;
+        }
+        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;
+    }
+}
+RadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+RadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, decorators: [{
+            type: Injectable,
+            args: [{
+                    providedIn: 'root',
+                }]
+        }] });
+export class RadioButton {
+    constructor(cd, injector, registry) {
+        this.cd = cd;
+        this.injector = injector;
+        this.registry = registry;
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.control = this.injector.get(NgControl);
+        this.checkName();
+        this.registry.add(this.control, this);
+    }
+    handleClick(event, radioButton, focus) {
+        event.preventDefault();
+        if (this.disabled) {
+            return;
+        }
+        this.select(event);
+        if (focus) {
+            radioButton.focus();
+        }
+    }
+    select(event) {
+        if (!this.disabled) {
+            this.inputViewChild.nativeElement.checked = true;
+            this.checked = true;
+            this.onModelChange(this.value);
+            this.registry.select(this);
+            this.onClick.emit(event);
+        }
+    }
+    writeValue(value) {
+        this.checked = (value == this.value);
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            this.inputViewChild.nativeElement.checked = this.checked;
+        }
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onChange(event) {
+        this.select(event);
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+        this.registry.remove(this);
+    }
+    checkName() {
+        if (this.name && this.formControlName && this.name !== this.formControlName) {
+            this.throwNameError();
+        }
+        if (!this.name && this.formControlName) {
+            this.name = this.formControlName;
+        }
+    }
+    throwNameError() {
+        throw new Error(`
+          If you define both a name and a formControlName attribute on your radio button, their values
+          must match. Ex: <p-radioButton formControlName="food" name="food"></p-radioButton>
+        `);
+    }
+}
+RadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RadioControlRegistry }], target: i0.ɵɵFactoryTarget.Component });
+RadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: RadioButton, selector: "p-radioButton", inputs: { value: "value", formControlName: "formControlName", name: "name", disabled: "disabled", label: "label", tabindex: "tabindex", inputId: "inputId", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["rb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-radioButton',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [RADIO_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: RadioControlRegistry }]; }, propDecorators: { value: [{
+                type: Input
+            }], formControlName: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['rb']
+            }] } });
+export class RadioButtonModule {
+}
+RadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, declarations: [RadioButton], imports: [CommonModule], exports: [RadioButton] });
+RadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [RadioButton],
+                    declarations: [RadioButton]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmFkaW9idXR0b24vcmFkaW9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBWSxZQUFZLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBbUIsdUJBQXVCLEVBQUUsVUFBVSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUM5TCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUF3QixTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRWxGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFRO0lBQ3JDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBS0YsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlZLGNBQVMsR0FBVSxFQUFFLENBQUM7S0EyQmpDO0lBekJHLEdBQUcsQ0FBQyxPQUFrQixFQUFFLFFBQXFCO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFxQjtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDekMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFxQjtRQUN4QixJQUFJLENBQUMsU0FBUyxD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LE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUVVLGNBQWM7c0JBQTlCLFNBQVM7dUJBQUMsSUFBSTs7QUFnSG5CLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFoSmpCLFdBQVcsYUE0SVYsWUFBWSxhQTVJYixXQUFXOytHQWdKWCxpQkFBaUIsWUFKakIsQ0FBQyxZQUFZLENBQUM7MkZBSWQsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixZQUFZLEVBQUUsQ0FBQyxXQUFXLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LEVsZW1lbnRSZWYsRXZlbnRFbWl0dGVyLGZvcndhcmRSZWYsVmlld0NoaWxkLENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT25Jbml0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBSQURJT19WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQnV0dG9uKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Db250cm9sUmVnaXN0cnkge1xuICAgIHByaXZhdGUgYWNjZXNzb3JzOiBhbnlbXSA9IFtdO1xuXG4gICAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgYWNjZXNzb3I6IFJhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLnB1c2goW2NvbnRyb2wsIGFjY2Vzc29yXSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGFjY2Vzc29yOiBSYWRpb0J1dHRvbikge1xuICAgICAgICB0aGlzLmFjY2Vzc29ycyA9IHRoaXMuYWNjZXNzb3JzLmZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNbMV0gIT09IGFjY2Vzc29yO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHNlbGVjdChhY2Nlc3NvcjogUmFkaW9CdXR0b24pIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTYW1lR3JvdXAoYywgYWNjZXNzb3IpICYmIGNbMV0gIT09IGFjY2Vzc29yKSB7XG4gICAgICAgICAgICAgICAgY1sxXS53cml0ZVZhbHVlKGFjY2Vzc29yLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NhbWVHcm91cChjb250cm9sUGFpcjogW05nQ29udHJvbCwgUmFkaW9CdXR0b25dLCBhY2Nlc3NvcjogUmFkaW9CdXR0b24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb250cm9sUGFpclswXS5jb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJvbFBhaXJbMF0uY29udHJvbC5yb290ID09PSBhY2Nlc3Nvci5jb250cm9sLmNvbnRyb2wucm9vdCAmJiBjb250cm9sUGFpclsxXS5uYW1lID09PSBhY2Nlc3Nvci5uYW1lO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXJhZGlvQnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwieydwLXJhZGlvYnV0dG9uIHAtY29tcG9uZW50Jzp0cnVlLCdwLXJhZGlvYnV0dG9uLWNoZWNrZWQnOiBjaGVja2VkLCAncC1yYWRpb2J1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkLCAncC1yYWRpb2J1dHRvbi1mb2N1c2VkJzogZm9jdXNlZH1cIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI3JiIHR5cGU9XCJyYWRpb1wiIFthdHRyLmlkXT1cImlucHV0SWRcIiBbYXR0ci5uYW1lXT1cIm5hbWVcIiBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiIFtjaGVja2VkXT1cImNoZWNrZWRcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgcmIsIHRydWUpXCIgW25nQ2xhc3NdPVwieydwLXJhZGlvYnV0dG9uLWJveCc6dHJ1ZSwgJ3AtaGlnaGxpZ2h0JzogY2hlY2tlZCwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ3AtZm9jdXMnOiBmb2N1c2VkfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1yYWRpb2J1dHRvbi1pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQpXCIgW2NsYXNzXT1cImxhYmVsU3R5bGVDbGFzc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtcmFkaW9idXR0b24tbGFiZWwnOnRydWUsICdwLXJhZGlvYnV0dG9uLWxhYmVsLWFjdGl2ZSc6cmIuY2hlY2tlZCwgJ3AtZGlzYWJsZWQnOmRpc2FibGVkLCAncC1yYWRpb2J1dHRvbi1sYWJlbC1mb2N1cyc6Zm9jdXNlZH1cIlxuICAgICAgICAgICAgKm5nSWY9XCJsYWJlbFwiIFthdHRyLmZvcl09XCJpbnB1dElkXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuXG4gICAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxhYmVsU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdyYicpIGlucHV0Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgY2hlY2tlZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBmb2N1c2VkOiBib29sZWFuO1xuXG4gICAgY29udHJvbDogTmdDb250cm9sO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgcmVnaXN0cnk6IFJhZGlvQ29udHJvbFJlZ2lzdHJ5KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XG4gICAgICAgIHRoaXMuY2hlY2tOYW1lKCk7XG4gICAgICAgIHRoaXMucmVnaXN0cnkuYWRkKHRoaXMuY29udHJvbCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQsIHJhZGlvQnV0dG9uLCBmb2N1cykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdChldmVudCk7XG5cbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICByYWRpb0J1dHRvbi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuc2VsZWN0KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAodmFsdWUgPT0gdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRWaWV3Q2hpbGQgJiYgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3QoZXZlbnQpO1xuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RyeS5yZW1vdmUodGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja05hbWUoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hbWUgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5uYW1lICE9PSB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgdGhpcy50aHJvd05hbWVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmZvcm1Db250cm9sTmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdGhyb3dOYW1lRXJyb3IoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXG4gICAgICAgICAgSWYgeW91IGRlZmluZSBib3RoIGEgbmFtZSBhbmQgYSBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIG9uIHlvdXIgcmFkaW8gYnV0dG9uLCB0aGVpciB2YWx1ZXNcbiAgICAgICAgICBtdXN0IG1hdGNoLiBFeDogPHAtcmFkaW9CdXR0b24gZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+PC9wLXJhZGlvQnV0dG9uPlxuICAgICAgICBgKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1JhZGlvQnV0dG9uXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtSYWRpb0J1dHRvbl1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b25Nb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/rating/primeng-rating.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/rating/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/rating/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1yYXRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmF0aW5nL3ByaW1lbmctcmF0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/rating/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/rating/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/rating/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './rating';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9yYXRpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmF0aW5nJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/rating/rating.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/rating/rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/rating/rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const RATING_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Rating),
+    multi: true
+};
+export class Rating {
+    constructor(cd) {
+        this.cd = cd;
+        this.stars = 5;
+        this.cancel = true;
+        this.iconOnClass = 'pi pi-star-fill';
+        this.iconOffClass = 'pi pi-star';
+        this.iconCancelClass = 'pi pi-ban';
+        this.onRate = new EventEmitter();
+        this.onCancel = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.starsArray = [];
+        for (let i = 0; i < this.stars; i++) {
+            this.starsArray[i] = i;
+        }
+    }
+    rate(event, i) {
+        if (!this.readonly && !this.disabled) {
+            this.value = (i + 1);
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onRate.emit({
+                originalEvent: event,
+                value: (i + 1)
+            });
+        }
+        event.preventDefault();
+    }
+    clear(event) {
+        if (!this.readonly && !this.disabled) {
+            this.value = null;
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onCancel.emit(event);
+        }
+        event.preventDefault();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.detectChanges();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+}
+Rating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Rating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Rating, selector: "p-rating", inputs: { disabled: "disabled", readonly: "readonly", stars: "stars", cancel: "cancel", iconOnClass: "iconOnClass", iconOnStyle: "iconOnStyle", iconOffClass: "iconOffClass", iconOffStyle: "iconOffStyle", iconCancelClass: "iconCancelClass", iconCancelStyle: "iconCancelStyle" }, outputs: { onRate: "onRate", onCancel: "onCancel" }, host: { classAttribute: "p-element" }, providers: [RATING_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, isInline: true, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-rating', template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, providers: [RATING_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], stars: [{
+                type: Input
+            }], cancel: [{
+                type: Input
+            }], iconOnClass: [{
+                type: Input
+            }], iconOnStyle: [{
+                type: Input
+            }], iconOffClass: [{
+                type: Input
+            }], iconOffStyle: [{
+                type: Input
+            }], iconCancelClass: [{
+                type: Input
+            }], iconCancelStyle: [{
+                type: Input
+            }], onRate: [{
+                type: Output
+            }], onCancel: [{
+                type: Output
+            }] } });
+export class RatingModule {
+}
+RatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, declarations: [Rating], imports: [CommonModule], exports: [Rating] });
+RatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Rating],
+                    declarations: [Rating]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3JhdGluZy9yYXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVEsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxSixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUF1QixNQUFNLGdCQUFnQixDQUFDOzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQVE7SUFDeEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFvQkYsTUFBTSxPQUFPLE1BQU07SUEwQmYsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwQmhDLFVBQUssR0FBVyxDQUFDLENBQUM7UUFFbEIsV0FBTSxHQUFZLElBQUksQ0FBQztRQUV2QixnQkFBVyxHQUFXLGlCQUFpQixDQUFDO1FBSXhDLGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBSXBDLG9CQUFlLEdBQVcsV0FBVyxDQUFDO1FBSXJDLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvQyxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNM0Qsa0JBQWEsR0FBYSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFbkMsbUJBQWMsR0FBYSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFOUSxDQUFDO0lBVTdDLFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFJ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LFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxPbkluaXQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixmb3J3YXJkUmVmLENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBSQVRJTkdfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhdGluZyksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtcmF0aW5nJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1yYXRpbmdcIiBbbmdDbGFzc109XCJ7J3AtcmVhZG9ubHknOiByZWFkb25seSwgJ3AtZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cbiAgICAgICAgICAgIDxzcGFuIFthdHRyLnRhYmluZGV4XT1cIihkaXNhYmxlZCB8fCByZWFkb25seSkgPyBudWxsIDogJzAnXCIgKm5nSWY9XCJjYW5jZWxcIiAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiIChrZXlkb3duLmVudGVyKT1cImNsZWFyKCRldmVudClcIiBjbGFzcz1cInAtcmF0aW5nLWljb24gcC1yYXRpbmctY2FuY2VsXCIgW25nQ2xhc3NdPVwiaWNvbkNhbmNlbENsYXNzXCIgW25nU3R5bGVdPVwiaWNvbkNhbmNlbFN0eWxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHN0YXIgb2Ygc3RhcnNBcnJheTtsZXQgaT1pbmRleFwiIGNsYXNzPVwicC1yYXRpbmctaWNvblwiIFthdHRyLnRhYmluZGV4XT1cIihkaXNhYmxlZCB8fCByZWFkb25seSkgPyBudWxsIDogJzAnXCIgIChjbGljayk9XCJyYXRlKCRldmVudCxpKVwiIChrZXlkb3duLmVudGVyKT1cInJhdGUoJGV2ZW50LGkpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIoIXZhbHVlIHx8IGkgPj0gdmFsdWUpID8gaWNvbk9mZkNsYXNzIDogaWNvbk9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIighdmFsdWUgfHwgaSA+PSB2YWx1ZSkgPyBpY29uT2ZmU3R5bGUgOiBpY29uT25TdHlsZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtSQVRJTkdfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZyBpbXBsZW1lbnRzIE9uSW5pdCxDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc3RhcnM6IG51bWJlciA9IDU7XG5cbiAgICBASW5wdXQoKSBjYW5jZWw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaWNvbk9uQ2xhc3M6IHN0cmluZyA9ICdwaSBwaS1zdGFyLWZpbGwnO1xuXG4gICAgQElucHV0KCkgaWNvbk9uU3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGljb25PZmZDbGFzczogc3RyaW5nID0gJ3BpIHBpLXN0YXInO1xuXG4gICAgQElucHV0KCkgaWNvbk9mZlN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBpY29uQ2FuY2VsQ2xhc3M6IHN0cmluZyA9ICdwaSBwaS1iYW4nO1xuXG4gICAgQElucHV0KCkgaWNvbkNhbmNlbFN0eWxlOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgb25SYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIHZhbHVlOiBudW1iZXI7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgc3RhcnNBcnJheTogbnVtYmVyW107XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdGFyc0FycmF5ID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YXJzOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnNBcnJheVtpXSA9IGk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYXRlKGV2ZW50LCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5JiYhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IChpICsgMSk7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9uUmF0ZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogKGkrMSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2xlYXIoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5JiYhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1JhdGluZ10sXG4gICAgZGVjbGFyYXRpb25zOiBbUmF0aW5nXVxufSlcbmV4cG9ydCBjbGFzcyBSYXRpbmdNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/ripple/primeng-ripple.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/ripple/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/ripple/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1yaXBwbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmlwcGxlL3ByaW1lbmctcmlwcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/ripple/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/ripple/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/ripple/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './ripple';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9yaXBwbGUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmlwcGxlJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/ripple/ripple.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/ripple/ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/ripple/ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,103 @@
+import { NgModule, Directive, Optional } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+export class Ripple {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+    }
+    ngAfterViewInit() {
+        if (this.config && this.config.ripple) {
+            this.zone.runOutsideAngular(() => {
+                this.create();
+                this.mouseDownListener = this.onMouseDown.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            });
+        }
+    }
+    onMouseDown(event) {
+        let ink = this.getInk();
+        if (!ink || getComputedStyle(ink, null).display === 'none') {
+            return;
+        }
+        DomHandler.removeClass(ink, 'p-ink-active');
+        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {
+            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));
+            ink.style.height = d + 'px';
+            ink.style.width = d + 'px';
+        }
+        let offset = DomHandler.getOffset(this.el.nativeElement);
+        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;
+        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;
+        ink.style.top = y + 'px';
+        ink.style.left = x + 'px';
+        DomHandler.addClass(ink, 'p-ink-active');
+    }
+    getInk() {
+        for (let i = 0; i < this.el.nativeElement.children.length; i++) {
+            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {
+                return this.el.nativeElement.children[i];
+            }
+        }
+        return null;
+    }
+    resetInk() {
+        let ink = this.getInk();
+        if (ink) {
+            DomHandler.removeClass(ink, 'p-ink-active');
+        }
+    }
+    onAnimationEnd(event) {
+        DomHandler.removeClass(event.currentTarget, 'p-ink-active');
+    }
+    create() {
+        let ink = document.createElement('span');
+        ink.className = 'p-ink';
+        this.el.nativeElement.appendChild(ink);
+        this.animationListener = this.onAnimationEnd.bind(this);
+        ink.addEventListener('animationend', this.animationListener);
+    }
+    remove() {
+        let ink = this.getInk();
+        if (ink) {
+            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+            ink.removeEventListener('animationend', this.animationListener);
+            DomHandler.removeElement(ink);
+        }
+    }
+    ngOnDestroy() {
+        if (this.config && this.config.ripple) {
+            this.remove();
+        }
+    }
+}
+Ripple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
+Ripple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Ripple, selector: "[pRipple]", host: { classAttribute: "p-ripple p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRipple]',
+                    host: {
+                        'class': 'p-ripple p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{
+                    type: Optional
+                }] }]; } });
+export class RippleModule {
+}
+RippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });
+RippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Ripple],
+                    declarations: [Ripple]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3JpcHBsZS9yaXBwbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWdELFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBU3pDLE1BQU0sT0FBTyxNQUFNO0lBRWYsWUFBbUIsRUFBYyxFQUFTLElBQVksRUFBcUIsTUFBcUI7UUFBN0UsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7UUFBcUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFJLENBQUM7SUFNckcsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxP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ZXdJbml0LCBFbGVtZW50UmVmLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFJpcHBsZV0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtcmlwcGxlIHAtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJpcHBsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUsIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcpIHsgfVxuXG4gICAgYW5pbWF0aW9uTGlzdGVuZXI6IGFueTtcblxuICAgIG1vdXNlRG93bkxpc3RlbmVyOiBhbnk7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5yaXBwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGUoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VEb3duLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBsZXQgaW5rID0gdGhpcy5nZXRJbmsoKTtcbiAgICAgICAgaWYgKCFpbmsgfHwgZ2V0Q29tcHV0ZWRTdHlsZShpbmssIG51bGwpLmRpc3BsYXkgPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyhpbmssICdwLWluay1hY3RpdmUnKTtcbiAgICAgICAgaWYgKCFEb21IYW5kbGVyLmdldEhlaWdodChpbmspICYmICFEb21IYW5kbGVyLmdldFdpZHRoKGluaykpIHtcbiAgICAgICAgICAgIGxldCBkID0gTWF0aC5tYXgoRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCksIERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSk7XG4gICAgICAgICAgICBpbmsuc3R5bGUuaGVpZ2h0ID0gZCArICdweCc7XG4gICAgICAgICAgICBpbmsuc3R5bGUud2lkdGggPSBkICsgJ3B4JztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBsZXQgeCA9IGV2ZW50LnBhZ2VYIC0gb2Zmc2V0LmxlZnQgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCAtIERvbUhhbmRsZXIuZ2V0V2lkdGgoaW5rKSAvIDI7XG4gICAgICAgIGxldCB5ID0gZXZlbnQucGFnZVkgLSBvZmZzZXQudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IC0gRG9tSGFuZGxlci5nZXRIZWlnaHQoaW5rKSAvIDI7XG5cbiAgICAgICAgaW5rLnN0eWxlLnRvcCA9IHkgKyAncHgnO1xuICAgICAgICBpbmsuc3R5bGUubGVmdCA9IHggKyAncHgnO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKGluaywgJ3AtaW5rLWFjdGl2ZScpO1xuICAgIH1cblxuICAgIGdldEluaygpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV0uY2xhc3NOYW1lLmluZGV4T2YoJ3AtaW5rJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXNldEluaygpIHtcbiAgICAgICAgbGV0IGluayA9IHRoaXMuZ2V0SW5rKCk7XG4gICAgICAgIGlmIChpbmspIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoaW5rLCAncC1pbmstYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudCkge1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGV2ZW50LmN1cnJlbnRUYXJnZXQsICdwLWluay1hY3RpdmUnKTtcbiAgICB9XG5cbiAgICBjcmVhdGUoKSB7XG4gICAgICAgIGxldCBpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIGluay5jbGFzc05hbWUgPSAncC1pbmsnO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaW5rKTtcblxuICAgICAgICB0aGlzLmFuaW1hdGlvbkxpc3RlbmVyID0gdGhpcy5vbkFuaW1hdGlvbkVuZC5iaW5kKHRoaXMpO1xuICAgICAgICBpbmsuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5hbmltYXRpb25MaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBsZXQgaW5rID0gdGhpcy5nZXRJbmsoKTtcbiAgICAgICAgaWYgKGluaykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xuICAgICAgICAgICAgaW5rLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uTGlzdGVuZXIpO1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVFbGVtZW50KGluayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnJpcHBsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbUmlwcGxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtSaXBwbGVdXG59KVxuZXhwb3J0IGNsYXNzIFJpcHBsZU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/scrollpanel/primeng-scrollpanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrollpanel/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrollpanel/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zY3JvbGxwYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zY3JvbGxwYW5lbC9wcmltZW5nLXNjcm9sbHBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/scrollpanel/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrollpanel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrollpanel/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './scrollpanel';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zY3JvbGxwYW5lbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxwYW5lbCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/scrollpanel/scrollpanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrollpanel/scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrollpanel/scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,231 @@
+import { NgModule, Component, Input, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class ScrollPanel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.timeoutFrame = (fn) => setTimeout(fn, 0);
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            this.moveBar();
+            this.moveBar = this.moveBar.bind(this);
+            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);
+            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);
+            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);
+            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);
+            window.addEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);
+            this.calculateContainerHeight();
+            this.initialized = true;
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    calculateContainerHeight() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        let xBar = this.xBarViewChild.nativeElement;
+        let containerStyles = getComputedStyle(container), xBarStyles = getComputedStyle(xBar), pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);
+        if (containerStyles['max-height'] != "none" && pureContainerHeight == 0) {
+            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {
+                container.style.height = containerStyles['max-height'];
+            }
+            else {
+                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + "px";
+            }
+        }
+    }
+    moveBar() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        /* horizontal scroll */
+        let xBar = this.xBarViewChild.nativeElement;
+        let totalWidth = content.scrollWidth;
+        let ownWidth = content.clientWidth;
+        let bottom = (container.clientHeight - xBar.clientHeight) * -1;
+        this.scrollXRatio = ownWidth / totalWidth;
+        /* vertical scroll */
+        let yBar = this.yBarViewChild.nativeElement;
+        let totalHeight = content.scrollHeight;
+        let ownHeight = content.clientHeight;
+        let right = (container.clientWidth - yBar.clientWidth) * -1;
+        this.scrollYRatio = ownHeight / totalHeight;
+        this.requestAnimationFrame(() => {
+            if (this.scrollXRatio >= 1) {
+                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');
+                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);
+                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);
+                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';
+            }
+            if (this.scrollYRatio >= 1) {
+                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');
+                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);
+                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);
+                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';
+            }
+        });
+        this.cd.markForCheck();
+    }
+    onYBarMouseDown(e) {
+        this.isYBarClicked = true;
+        this.lastPageY = e.pageY;
+        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onXBarMouseDown(e) {
+        this.isXBarClicked = true;
+        this.lastPageX = e.pageX;
+        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onDocumentMouseMove(e) {
+        if (this.isXBarClicked) {
+            this.onMouseMoveForXBar(e);
+        }
+        else if (this.isYBarClicked) {
+            this.onMouseMoveForYBar(e);
+        }
+        else {
+            this.onMouseMoveForXBar(e);
+            this.onMouseMoveForYBar(e);
+        }
+    }
+    onMouseMoveForXBar(e) {
+        let deltaX = e.pageX - this.lastPageX;
+        this.lastPageX = e.pageX;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;
+        });
+    }
+    onMouseMoveForYBar(e) {
+        let deltaY = e.pageY - this.lastPageY;
+        this.lastPageY = e.pageY;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;
+        });
+    }
+    scrollTop(scrollTop) {
+        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;
+        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;
+        this.contentViewChild.nativeElement.scrollTop = scrollTop;
+    }
+    onDocumentMouseUp(e) {
+        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');
+        document.removeEventListener('mousemove', this.onDocumentMouseMove);
+        document.removeEventListener('mouseup', this.onDocumentMouseUp);
+        this.isXBarClicked = false;
+        this.isYBarClicked = false;
+    }
+    requestAnimationFrame(f) {
+        let frame = window.requestAnimationFrame || this.timeoutFrame;
+        frame(f);
+    }
+    ngOnDestroy() {
+        if (this.initialized) {
+            window.removeEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);
+        }
+    }
+    refresh() {
+        this.moveBar();
+    }
+}
+ScrollPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ScrollPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollPanel, selector: "p-scrollPanel", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "xBarViewChild", first: true, predicate: ["xBar"], descendants: true }, { propertyName: "yBarViewChild", first: true, predicate: ["yBar"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, isInline: true, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollPanel', template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], xBarViewChild: [{
+                type: ViewChild,
+                args: ['xBar']
+            }], yBarViewChild: [{
+                type: ViewChild,
+                args: ['yBar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ScrollPanelModule {
+}
+ScrollPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, declarations: [ScrollPanel], imports: [CommonModule], exports: [ScrollPanel] });
+ScrollPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollPanel],
+                    declarations: [ScrollPanel]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xscGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2Nyb2xscGFuZWwvc2Nyb2xscGFuZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnRCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQXVDLGVBQWUsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDOU8sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBdUI1QyxNQUFNLE9BQU8sV0FBVztJQU1wQixZQUFtQixFQUFjLEVBQVMsSUFBWSxFQUFTLEVBQXFCO1FBQWpFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFnQnBGLGlCQUFZLEdBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFoQnlDLENBQUM7SUE4QnhGLGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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QUUsQ0FBQyxXQUFXLENBQUM7b0JBQ3RCLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBOZ1pvbmUsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zY3JvbGxQYW5lbCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cIidwLXNjcm9sbHBhbmVsIHAtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXNjcm9sbHBhbmVsLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNjb250ZW50IGNsYXNzPVwicC1zY3JvbGxwYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICN4QmFyIGNsYXNzPVwicC1zY3JvbGxwYW5lbC1iYXIgcC1zY3JvbGxwYW5lbC1iYXIteFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjeUJhciBjbGFzcz1cInAtc2Nyb2xscGFuZWwtYmFyIHAtc2Nyb2xscGFuZWwtYmFyLXlcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3Njcm9sbHBhbmVsLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBhbmVsIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3hCYXInKSB4QmFyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgneUJhcicpIHlCYXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBzY3JvbGxZUmF0aW86IG51bWJlcjtcblxuICAgIHNjcm9sbFhSYXRpbzogbnVtYmVyO1xuXG4gICAgdGltZW91dEZyYW1lOiBhbnkgPSAoZm4pID0+IHNldFRpbWVvdXQoZm4sIDApO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBsYXN0UGFnZVk6IG51bWJlcjtcblxuICAgIGxhc3RQYWdlWDogbnVtYmVyO1xuXG4gICAgaXNYQmFyQ2xpY2tlZDogYm9vbGVhbjtcblxuICAgIGlzWUJhckNsaWNrZWQ6IGJvb2xlYW47XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVCYXIoKTtcbiAgICAgICAgICAgIHRoaXMubW92ZUJhciA9IHRoaXMubW92ZUJhci5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vblhCYXJNb3VzZURvd24gPSB0aGlzLm9uWEJhck1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbllCYXJNb3VzZURvd24gPSB0aGlzLm9uWUJhck1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbkRvY3VtZW50TW91c2VNb3ZlID0gdGhpcy5vbkRvY3VtZW50TW91c2VNb3ZlLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLm9uRG9jdW1lbnRNb3VzZVVwID0gdGhpcy5vbkRvY3VtZW50TW91c2VVcC5iaW5kKHRoaXMpO1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5tb3ZlQmFyKTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMubW92ZUJhcik7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3ZlQmFyKTtcbiAgICAgICAgICAgIHRoaXMueEJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMub25YQmFyTW91c2VEb3duKTtcbiAgICAgICAgICAgIHRoaXMueUJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMub25ZQmFyTW91c2VEb3duKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVDb250YWluZXJIZWlnaHQoKTtcblxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KCkge1xuICAgICAgICBsZXQgY29udGFpbmVyID0gdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHhCYXIgPSB0aGlzLnhCYXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBsZXQgY29udGFpbmVyU3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpLFxuICAgICAgICB4QmFyU3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZSh4QmFyKSxcbiAgICAgICAgcHVyZUNvbnRhaW5lckhlaWdodCA9IERvbUhhbmRsZXIuZ2V0SGVpZ2h0KGNvbnRhaW5lcikgLSBwYXJzZUludCh4QmFyU3R5bGVzWydoZWlnaHQnXSwgMTApO1xuXG4gICAgICAgIGlmIChjb250YWluZXJTdHlsZXNbJ21heC1oZWlnaHQnXSAhPSBcIm5vbmVcIiAmJiBwdXJlQ29udGFpbmVySGVpZ2h0ID09IDApIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50Lm9mZnNldEhlaWdodCArIHBhcnNlSW50KHhCYXJTdHlsZXNbJ2hlaWdodCddLCAxMCkgPiBwYXJzZUludChjb250YWluZXJTdHlsZXNbJ21heC1oZWlnaHQnXSwgMTApKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGNvbnRhaW5lclN0eWxlc1snbWF4LWhlaWdodCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGNvbnRlbnQub2Zmc2V0SGVpZ2h0ICsgcGFyc2VGbG9hdChjb250YWluZXJTdHlsZXMucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KGNvbnRhaW5lclN0eWxlcy5wYWRkaW5nQm90dG9tKSArIHBhcnNlRmxvYXQoY29udGFpbmVyU3R5bGVzLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlRmxvYXQoY29udGFpbmVyU3R5bGVzLmJvcmRlckJvdHRvbVdpZHRoKSArIFwicHhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVCYXIoKSB7XG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgY29udGVudCA9IHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIC8qIGhvcml6b250YWwgc2Nyb2xsICovXG4gICAgICAgIGxldCB4QmFyID0gdGhpcy54QmFyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gY29udGVudC5zY3JvbGxXaWR0aDtcbiAgICAgICAgbGV0IG93bldpZHRoID0gY29udGVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgbGV0IGJvdHRvbSA9IChjb250YWluZXIuY2xpZW50SGVpZ2h0IC0geEJhci5jbGllbnRIZWlnaHQpICogLTE7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxYUmF0aW8gPSBvd25XaWR0aCAvIHRvdGFsV2lkdGg7XG5cbiAgICAgICAgLyogdmVydGljYWwgc2Nyb2xsICovXG4gICAgICAgIGxldCB5QmFyID0gdGhpcy55QmFyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCB0b3RhbEhlaWdodCA9IGNvbnRlbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICBsZXQgb3duSGVpZ2h0ID0gY29udGVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGxldCByaWdodCA9IChjb250YWluZXIuY2xpZW50V2lkdGggLSB5QmFyLmNsaWVudFdpZHRoKSAqIC0xO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsWVJhdGlvID0gb3duSGVpZ2h0IC8gdG90YWxIZWlnaHQ7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsWFJhdGlvID49IDEpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHhCYXIsICdwLXNjcm9sbHBhbmVsLWhpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh4QmFyLCAncC1zY3JvbGxwYW5lbC1oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4QmFyV2lkdGggPSBNYXRoLm1heCh0aGlzLnNjcm9sbFhSYXRpbyAqIDEwMCwgMTApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHhCYXJMZWZ0ID0gY29udGVudC5zY3JvbGxMZWZ0ICogKDEwMCAtIHhCYXJXaWR0aCkgLyAodG90YWxXaWR0aCAtIG93bldpZHRoKTtcbiAgICAgICAgICAgICAgICB4QmFyLnN0eWxlLmNzc1RleHQgPSAnd2lkdGg6JyArIHhCYXJXaWR0aCArICclOyBsZWZ0OicgKyB4QmFyTGVmdCArICclO2JvdHRvbTonICsgYm90dG9tICsgJ3B4Oyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbFlSYXRpbyA+PSAxKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh5QmFyLCAncC1zY3JvbGxwYW5lbC1oaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoeUJhciwgJ3Atc2Nyb2xscGFuZWwtaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgeUJhckhlaWdodCA9IE1hdGgubWF4KHRoaXMuc2Nyb2xsWVJhdGlvICogMTAwLCAxMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeUJhclRvcCA9IGNvbnRlbnQuc2Nyb2xsVG9wICogKDEwMCAtIHlCYXJIZWlnaHQpIC8gKHRvdGFsSGVpZ2h0IC0gb3duSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB5QmFyLnN0eWxlLmNzc1RleHQgPSAnaGVpZ2h0OicgKyB5QmFySGVpZ2h0ICsgJyU7IHRvcDogY2FsYygnICsgeUJhclRvcCArICclIC0gJyArIHhCYXIuY2xpZW50SGVpZ2h0ICsgJ3B4KTtyaWdodDonICsgcmlnaHQgKyAncHg7JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25ZQmFyTW91c2VEb3duKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc1lCYXJDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZVkgPSBlLnBhZ2VZO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMueUJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1zY3JvbGxwYW5lbC1ncmFiYmVkJyk7XG5cbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1zY3JvbGxwYW5lbC1ncmFiYmVkJyk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbkRvY3VtZW50TW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25YQmFyTW91c2VEb3duKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc1hCYXJDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZVggPSBlLnBhZ2VYO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMueEJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1zY3JvbGxwYW5lbC1ncmFiYmVkJyk7XG5cbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1zY3JvbGxwYW5lbC1ncmFiYmVkJyk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbkRvY3VtZW50TW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Eb2N1bWVudE1vdXNlTW92ZShlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzWEJhckNsaWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb3VzZU1vdmVGb3JYQmFyKGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNZQmFyQ2xpY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5vbk1vdXNlTW92ZUZvcllCYXIoZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uTW91c2VNb3ZlRm9yWEJhcihlKTtcbiAgICAgICAgICAgIHRoaXMub25Nb3VzZU1vdmVGb3JZQmFyKGUpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBvbk1vdXNlTW92ZUZvclhCYXIoZTogTW91c2VFdmVudCkge1xuICAgICAgICBsZXQgZGVsdGFYID0gZS5wYWdlWCAtIHRoaXMubGFzdFBhZ2VYO1xuICAgICAgICB0aGlzLmxhc3RQYWdlWCA9IGUucGFnZVg7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSBkZWx0YVggLyB0aGlzLnNjcm9sbFhSYXRpbztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZU1vdmVGb3JZQmFyKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgbGV0IGRlbHRhWSA9IGUucGFnZVkgLSB0aGlzLmxhc3RQYWdlWTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZVkgPSBlLnBhZ2VZO1xuXG4gICAgICAgIHRoaXMucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArPSBkZWx0YVkgLyB0aGlzLnNjcm9sbFlSYXRpbztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzY3JvbGxhYmxlSGVpZ2h0ID0gdGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250ZW50Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBzY3JvbGxUb3AgPSBzY3JvbGxUb3AgPiBzY3JvbGxhYmxlSGVpZ2h0ID8gc2Nyb2xsYWJsZUhlaWdodCA6IHNjcm9sbFRvcCA+IDAgPyBzY3JvbGxUb3AgOiAwO1xuICAgICAgICB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuXG4gICAgb25Eb2N1bWVudE1vdXNlVXAoZTogRXZlbnQpIHtcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnlCYXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJ3Atc2Nyb2xscGFuZWwtZ3JhYmJlZCcpO1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMueEJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1zY3JvbGxwYW5lbC1ncmFiYmVkJyk7XG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3Atc2Nyb2xscGFuZWwtZ3JhYmJlZCcpO1xuXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Eb2N1bWVudE1vdXNlTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uRG9jdW1lbnRNb3VzZVVwKTtcbiAgICAgICAgdGhpcy5pc1hCYXJDbGlja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNZQmFyQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmOiBGdW5jdGlvbikge1xuICAgICAgICBsZXQgZnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8wqB0aGlzLnRpbWVvdXRGcmFtZTtcbiAgICAgICAgZnJhbWUoZik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5tb3ZlQmFyKTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMubW92ZUJhcik7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3ZlQmFyKTtcbiAgICAgICAgICAgIHRoaXMueEJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMub25YQmFyTW91c2VEb3duKTtcbiAgICAgICAgICAgIHRoaXMueUJhclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMub25ZQmFyTW91c2VEb3duKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2goKSB7XG4gICAgICAgIHRoaXMubW92ZUJhcigpO1xuICAgIH1cblxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtTY3JvbGxQYW5lbF0sXG4gICAgZGVjbGFyYXRpb25zOiBbU2Nyb2xsUGFuZWxdXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBhbmVsTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/scrolltop/primeng-scrolltop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrolltop/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrolltop/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zY3JvbGx0b3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2Nyb2xsdG9wL3ByaW1lbmctc2Nyb2xsdG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/scrolltop/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrolltop/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrolltop/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './scrolltop';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zY3JvbGx0b3AvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsdG9wJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/scrolltop/scrolltop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/scrolltop/scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/scrolltop/scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,170 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { animate, state, style, transition, trigger } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+export class ScrollTop {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.target = "window";
+        this.threshold = 400;
+        this.icon = "pi pi-chevron-up";
+        this.behavior = "smooth";
+        this.showTransitionOptions = '.15s';
+        this.hideTransitionOptions = '.15s';
+        this.visible = false;
+    }
+    ngOnInit() {
+        if (this.target === 'window')
+            this.bindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.bindParentScrollListener();
+    }
+    onClick() {
+        let scrollElement = this.target === 'window' ? window : this.el.nativeElement.parentElement;
+        scrollElement.scroll({
+            top: 0,
+            behavior: this.behavior
+        });
+    }
+    onEnter(event) {
+        switch (event.toState) {
+            case 'open':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                break;
+            case 'void':
+                this.overlay = null;
+                break;
+        }
+    }
+    onLeave(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    checkVisibility(scrollY) {
+        if (scrollY > this.threshold)
+            this.visible = true;
+        else
+            this.visible = false;
+        this.cd.markForCheck();
+    }
+    bindParentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(this.el.nativeElement.parentElement.scrollTop);
+        };
+        this.el.nativeElement.parentElement.addEventListener('scroll', this.scrollListener);
+    }
+    bindDocumentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(DomHandler.getWindowScrollTop());
+        };
+        window.addEventListener('scroll', this.scrollListener);
+    }
+    unbindParentScrollListener() {
+        if (this.scrollListener) {
+            this.el.nativeElement.parentElement.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    unbindDocumentScrollListener() {
+        if (this.scrollListener) {
+            window.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-scrolltop p-link p-component': true,
+            'p-scrolltop-sticky': this.target !== 'window'
+        };
+    }
+    ngOnDestroy() {
+        if (this.target === 'window')
+            this.unbindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.unbindParentScrollListener();
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+    }
+}
+ScrollTop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ScrollTop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollTop, selector: "p-scrollTop", inputs: { styleClass: "styleClass", style: "style", target: "target", threshold: "threshold", icon: "icon", behavior: "behavior", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, isInline: true, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                opacity: 0
+            })),
+            state('open', style({
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollTop', template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], threshold: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], behavior: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+export class ScrollTopModule {
+}
+ScrollTopModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollTopModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, declarations: [ScrollTop], imports: [CommonModule], exports: [ScrollTop] });
+ScrollTopModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollTop],
+                    declarations: [ScrollTop]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsdG9wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Njcm9sbHRvcC9zY3JvbGx0b3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUN4SixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7O0FBOEIzQyxNQUFNLE9BQU8sU0FBUztJQXdCbEIsWUFBbUIsRUFBYyxFQUFVLEVBQXFCLEVBQVMsTUFBcUI7UUFBM0UsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWxCckYsV0FBTSxHQUFXLFFBQVEsQ0FBQztRQUUxQixjQUFTLEdBQVcsR0FBRyxDQUFDO1FBRXhCLFNBQUksR0FBVyxrQkFBa0IsQ0FBQztRQUVsQyxhQUFRLEdBQVcsUUFBUSxDQUFDO1FBRTVCLDBCQUFxQixHQUFXLE1BQU0sQ0FBQztRQUV2QywwQkFBcUIsR0FBVyxNQUFNLENBQUM7UUFJaEQsWUFBTyxHQUFZLEtBQUssQ0FBQztJQUl5RSxDQUFDO0lBRW5HLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUN4QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQzthQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUM3QixJQUFJ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LENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDOzRCQUMvRCxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO3lCQUNsRSxDQUFDO3FCQUNMLFFBQ0s7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCOzZKQUlRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7O0FBK0dWLE1BQU0sT0FBTyxlQUFlOzs0R0FBZixlQUFlOzZHQUFmLGVBQWUsaUJBL0hmLFNBQVMsYUEySFIsWUFBWSxhQTNIYixTQUFTOzZHQStIVCxlQUFlLFlBSmYsQ0FBQyxZQUFZLENBQUM7MkZBSWQsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyLCBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscydcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zY3JvbGxUb3AnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxidXR0b24gICpuZ0lmPVwidmlzaWJsZVwiIFtAYW5pbWF0aW9uXT1cInt2YWx1ZTogJ29wZW4nLCBwYXJhbXM6IHtzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zfX1cIiAoQGFuaW1hdGlvbi5zdGFydCk9XCJvbkVudGVyKCRldmVudClcIiAoQGFuaW1hdGlvbi5kb25lKT1cIm9uTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiaWNvblwiIFtuZ0NsYXNzXT1cIidwLXNjcm9sbHRvcC1pY29uJ1wiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3Njcm9sbHRvcC5jc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdvcGVuJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gb3BlbicsIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gdm9pZCcsIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFRvcCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSB0YXJnZXQ6IHN0cmluZyA9IFwid2luZG93XCI7XG5cbiAgICBASW5wdXQoKSB0aHJlc2hvbGQ6IG51bWJlciA9IDQwMDtcblxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyA9IFwicGkgcGktY2hldnJvbi11cFwiO1xuXG4gICAgQElucHV0KCkgYmVoYXZpb3I6IHN0cmluZyA9IFwic21vb3RoXCI7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTVzJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xNXMnO1xuXG4gICAgc2Nyb2xsTGlzdGVuZXI6IGFueTtcblxuICAgIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG92ZXJsYXk6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcpIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCA9PT0gJ3dpbmRvdycpXG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudGFyZ2V0ID09PSAncGFyZW50JylcbiAgICAgICAgICAgIHRoaXMuYmluZFBhcmVudFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgb25DbGljaygpIHtcbiAgICAgICAgbGV0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLnRhcmdldCA9PT0gJ3dpbmRvdycgPyB3aW5kb3cgOiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgIHNjcm9sbEVsZW1lbnQuc2Nyb2xsKHtcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGJlaGF2aW9yOiB0aGlzLmJlaGF2aW9yXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRW50ZXIoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG5cbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ29wZW4nOlxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheSA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdvdmVybGF5JywgdGhpcy5vdmVybGF5LCB0aGlzLmNvbmZpZy56SW5kZXgub3ZlcmxheSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGVhdmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tWaXNpYmlsaXR5KHNjcm9sbFkpIHtcbiAgICAgICAgaWYgKHNjcm9sbFkgPiB0aGlzLnRocmVzaG9sZClcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYmluZFBhcmVudFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gKCkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmNoZWNrVmlzaWJpbGl0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGxUb3ApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsTGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1Zpc2liaWxpdHkoRG9tSGFuZGxlci5nZXRXaW5kb3dTY3JvbGxUb3AoKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsTGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHVuYmluZFBhcmVudFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50U2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbExpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3Atc2Nyb2xsdG9wIHAtbGluayBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1zY3JvbGx0b3Atc3RpY2t5JzogdGhpcy50YXJnZXQgIT09ICd3aW5kb3cnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCA9PT0gJ3dpbmRvdycpXG4gICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50U2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy50YXJnZXQgPT09ICdwYXJlbnQnKVxuICAgICAgICAgICAgdGhpcy51bmJpbmRQYXJlbnRTY3JvbGxMaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMub3ZlcmxheSk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtTY3JvbGxUb3BdLFxuICAgIGRlY2xhcmF0aW9uczogW1Njcm9sbFRvcF1cbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsVG9wTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/selectbutton/primeng-selectbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/selectbutton/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/selectbutton/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zZWxlY3RidXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2VsZWN0YnV0dG9uL3ByaW1lbmctc2VsZWN0YnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/selectbutton/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/selectbutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/selectbutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './selectbutton';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zZWxlY3RidXR0b24vcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RidXR0b24nOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/selectbutton/selectbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/selectbutton/selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/selectbutton/selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,179 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ContentChild, TemplateRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+export const SELECTBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => SelectButton),
+    multi: true
+};
+export class SelectButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.tabindex = 0;
+        this.onOptionClick = new EventEmitter();
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onItemClick(event, option, index) {
+        if (this.disabled || this.isOptionDisabled(option)) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.isSelected(option))
+                this.removeOption(option);
+            else
+                this.value = [...(this.value || []), this.getOptionValue(option)];
+        }
+        else {
+            this.value = this.getOptionValue(option);
+        }
+        this.onOptionClick.emit({
+            originalEvent: event,
+            option: option,
+            index: index
+        });
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);
+        }
+        return selected;
+    }
+}
+SelectButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SelectButton, selector: "p-selectButton", inputs: { options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", tabindex: "tabindex", multiple: "multiple", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", dataKey: "dataKey" }, outputs: { onOptionClick: "onOptionClick", onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [SELECTBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-selectButton', template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], onOptionClick: [{
+                type: Output
+            }], onChange: [{
+                type: Output
+            }], itemTemplate: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+export class SelectButtonModule {
+}
+SelectButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SelectButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, declarations: [SelectButton], imports: [CommonModule, RippleModule], exports: [SelectButton] });
+SelectButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [SelectButton],
+                    declarations: [SelectButton]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NlbGVjdGJ1dHRvbi9zZWxlY3RidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFtQixZQUFZLEVBQUMsV0FBVyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsaUJBQWlCLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQVE7SUFDOUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUMzQyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUE4QkYsTUFBTSxPQUFPLFlBQVk7SUFvQ3JCLFlBQW1CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBMUIvQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBY3BCLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTNELGtCQUFhLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRW5DLG1CQUFjLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRU8sQ0FBQztJQUU1QyxjQUFjLENBQUMsTUFBVztRQUN0QixPQUFPLElBQUksQ0FB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QkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7d0dBSVEsT0FBTztzQkFBZixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsWUFBWTt1QkFBQyxXQUFXOztBQXdHN0IsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQXBJbEIsWUFBWSxhQWdJWCxZQUFZLEVBQUMsWUFBWSxhQWhJMUIsWUFBWTtnSEFvSVosa0JBQWtCLFlBSmxCLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQzsyRkFJM0Isa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsZm9yd2FyZFJlZixDaGFuZ2VEZXRlY3RvclJlZixDb250ZW50Q2hpbGQsVGVtcGxhdGVSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVEJVVFRPTl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0QnV0dG9uKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zZWxlY3RCdXR0b24nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiJ3Atc2VsZWN0YnV0dG9uIHAtYnV0dG9uc2V0IHAtY29tcG9uZW50J1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiICNidG4gY2xhc3M9XCJwLWJ1dHRvbiBwLWNvbXBvbmVudFwiIFtjbGFzc109XCJvcHRpb24uc3R5bGVDbGFzc1wiIHJvbGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKG9wdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAncC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwLWJ1dHRvbi1pY29uLW9ubHknOiAob3B0aW9uLmljb24gJiYgIWdldE9wdGlvbkxhYmVsKG9wdGlvbikpfVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCxvcHRpb24saSlcIiAoa2V5ZG93bi5lbnRlcik9XCJvbkl0ZW1DbGljaygkZXZlbnQsb3B0aW9uLGkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJvcHRpb24udGl0bGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbi5sYWJlbFwiIChibHVyKT1cIm9uQmx1cigpXCIgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyBudWxsIDogdGFiaW5kZXhcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW1UZW1wbGF0ZSBlbHNlIGN1c3RvbWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiJ3AtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0J1wiIFtjbGFzc109XCJvcHRpb24uaWNvblwiICpuZ0lmPVwib3B0aW9uLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1idXR0b24tbGFiZWxcIj57e2dldE9wdGlvbkxhYmVsKG9wdGlvbil9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1NFTEVDVEJVVFRPTl9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi4vYnV0dG9uL2J1dHRvbi5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RCdXR0b24gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgb3B0aW9uRGlzYWJsZWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nXG5cbiAgICBAT3V0cHV0KCkgb25PcHRpb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgaXRlbVRlbXBsYXRlO1xuXG4gICAgdmFsdWU6IGFueTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBnZXRPcHRpb25MYWJlbChvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25MYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkxhYmVsKSA6IChvcHRpb24ubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uLmxhYmVsIDogb3B0aW9uKTtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKSA6ICh0aGlzLm9wdGlvbkxhYmVsIHx8IG9wdGlvbi52YWx1ZSA9PT0gdW5kZWZpbmVkID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkRpc2FibGVkID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uRGlzYWJsZWQpIDogKG9wdGlvbi5kaXNhYmxlZCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLmRpc2FibGVkIDogZmFsc2UpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldmVudCwgb3B0aW9uOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLih0aGlzLnZhbHVlfHxbXSksIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbk9wdGlvbkNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcih2YWwgPT4gIU9iamVjdFV0aWxzLmVxdWFscyh2YWwsIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSwgdGhpcy5kYXRhS2V5KSk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChvcHRpb246IGFueSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IG9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5lcXVhbHModmFsLCBvcHRpb25WYWx1ZSwgdGhpcy5kYXRhS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IE9iamVjdFV0aWxzLmVxdWFscyh0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMudmFsdWUsIHRoaXMuZGF0YUtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU2VsZWN0QnV0dG9uXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTZWxlY3RCdXR0b25dXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/sidebar/primeng-sidebar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/sidebar/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/sidebar/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zaWRlYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NpZGViYXIvcHJpbWVuZy1zaWRlYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/sidebar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/sidebar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/sidebar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './sidebar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpZGViYXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/sidebar/sidebar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/sidebar/sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/sidebar/sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,331 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { trigger, style, transition, animate, animation, useAnimation } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/ripple";
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+export class Sidebar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.modal = true;
+        this.dismissible = true;
+        this.showCloseIcon = true;
+        this.closeOnEscape = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._position = "left";
+        this._fullScreen = false;
+        this.transformOptions = "translate3d(-100%, 0px, 0px)";
+    }
+    ngAfterViewInit() {
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(val) {
+        this._visible = val;
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+        }
+    }
+    get fullScreen() {
+        return this._fullScreen;
+    }
+    set fullScreen(value) {
+        this._fullScreen = value;
+        if (value)
+            this.transformOptions = "none";
+    }
+    show() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);
+        }
+        if (this.modal) {
+            this.enableModality();
+        }
+        this.onShow.emit({});
+    }
+    hide() {
+        this.onHide.emit({});
+        if (this.modal) {
+            this.disableModality();
+        }
+    }
+    close(event) {
+        this.hide();
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(this.container.style.zIndex) - 1);
+            DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');
+            if (this.dismissible) {
+                this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                    if (this.dismissible) {
+                        this.close(event);
+                    }
+                });
+            }
+            document.body.appendChild(this.mask);
+            if (this.blockScroll) {
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            }
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyModal.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyModal() {
+        this.unbindMaskClickListener();
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.mask = null;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.appendContainer();
+                this.show();
+                if (this.closeOnEscape) {
+                    this.bindDocumentEscapeListener();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.hide();
+                ZIndexUtils.clear(this.container);
+                this.unbindGlobalListeners();
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                    this.close(event);
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindMaskClickListener();
+        this.unbindDocumentEscapeListener();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+        if (this.visible && this.modal) {
+            this.destroyModal();
+        }
+        if (this.appendTo && this.container) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.unbindGlobalListeners();
+        this.unbindAnimationEndListener();
+    }
+}
+Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Sidebar, selector: "p-sidebar", inputs: { appendTo: "appendTo", blockScroll: "blockScroll", style: "style", styleClass: "styleClass", ariaCloseLabel: "ariaCloseLabel", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", modal: "modal", dismissible: "dismissible", showCloseIcon: "showCloseIcon", closeOnEscape: "closeOnEscape", transitionOptions: "transitionOptions", visible: "visible", position: "position", fullScreen: "fullScreen" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('panelState', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-sidebar', template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelState', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { appendTo: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], dismissible: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }] } });
+export class SidebarModule {
+}
+SidebarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SidebarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, declarations: [Sidebar], imports: [CommonModule, RippleModule], exports: [Sidebar] });
+SidebarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Sidebar],
+                    declarations: [Sidebar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUF5Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQStELE1BQU0sZUFBZSxDQUFDO0FBQzVQLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUU1QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDNUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDakQsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0NBQzVCLENBQUMsQ0FBQztBQUVILE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUM1QixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUMvRSxDQUFDLENBQUM7QUFxQ0gsTUFBTSxPQUFPLE9BQU87SUF3RGhCLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFTLEVBQXFCLEVB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Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhO2dCQUVwQixNQUFNO3NCQUFmLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBNENNLE9BQU87c0JBQW5CLEtBQUs7Z0JBUU8sUUFBUTtzQkFBcEIsS0FBSztnQkF1Qk8sVUFBVTtzQkFBdEIsS0FBSzs7QUFrTFYsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkE3UmIsT0FBTyxhQXlSTixZQUFZLEVBQUUsWUFBWSxhQXpSM0IsT0FBTzsyR0E2UlAsYUFBYSxZQUpiLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQzsyRkFJNUIsYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlLCBhbmltYXRpb24sIHVzZUFuaW1hdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBQcmltZU5HQ29uZmlnLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcblxuY29uc3Qgc2hvd0FuaW1hdGlvbiA9IGFuaW1hdGlvbihbXG4gICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd7e3RyYW5zZm9ybX19Jywgb3BhY2l0eTogMCB9KSxcbiAgICBhbmltYXRlKCd7e3RyYW5zaXRpb259fScpXG5dKTtcblxuY29uc3QgaGlkZUFuaW1hdGlvbiA9IGFuaW1hdGlvbihbXG4gICAgYW5pbWF0ZSgne3t0cmFuc2l0aW9ufX0nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pKVxuXSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zaWRlYmFyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwieydwLXNpZGViYXInOnRydWUsICdwLXNpZGViYXItYWN0aXZlJzogdmlzaWJsZSxcbiAgICAgICAgICAgICdwLXNpZGViYXItbGVmdCc6IChwb3NpdGlvbiA9PT0gJ2xlZnQnICYmICFmdWxsU2NyZWVuKSwgJ3Atc2lkZWJhci1yaWdodCc6IChwb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiAhZnVsbFNjcmVlbiksXG4gICAgICAgICAgICAncC1zaWRlYmFyLXRvcCc6IChwb3NpdGlvbiA9PT0gJ3RvcCcgJiYgIWZ1bGxTY3JlZW4pLCAncC1zaWRlYmFyLWJvdHRvbSc6IChwb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgIWZ1bGxTY3JlZW4pLFxuICAgICAgICAgICAgJ3Atc2lkZWJhci1mdWxsJzogZnVsbFNjcmVlbn1cIiAgKm5nSWY9XCJ2aXNpYmxlXCIgW0BwYW5lbFN0YXRlXT1cInt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHt0cmFuc2Zvcm06IHRyYW5zZm9ybU9wdGlvbnMsIHRyYW5zaXRpb246IHRyYW5zaXRpb25PcHRpb25zfX1cIiAoQHBhbmVsU3RhdGUuc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBwYW5lbFN0YXRlLmRvbmUpPVwib25BbmltYXRpb25FbmQoJGV2ZW50KVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAgcm9sZT1cImNvbXBsZW1lbnRhcnlcIiBbYXR0ci5hcmlhLW1vZGFsXT1cIm1vZGFsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1zaWRlYmFyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1zaWRlYmFyLWNsb3NlIHAtc2lkZWJhci1pY29uIHAtbGlua1wiIChjbGljayk9XCJjbG9zZSgkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwiY2xvc2UoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUNsb3NlTGFiZWxcIiAgKm5nSWY9XCJzaG93Q2xvc2VJY29uXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXNpZGViYXItY2xvc2UtaWNvbiBwaSBwaS10aW1lc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtc2lkZWJhci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcigncGFuZWxTdGF0ZScsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIFtcbiAgICAgICAgICAgICAgICB1c2VBbmltYXRpb24oc2hvd0FuaW1hdGlvbilcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIHVzZUFuaW1hdGlvbihoaWRlQW5pbWF0aW9uKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZWJhci5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlYmFyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBibG9ja1Njcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFDbG9zZUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBtb2RhbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93Q2xvc2VJY29uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBfdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIF9wb3NpdGlvbjogc3RyaW5nID0gXCJsZWZ0XCI7XG5cbiAgICBfZnVsbFNjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcblxuICAgIHRyYW5zZm9ybU9wdGlvbnM6IGFueSA9IFwidHJhbnNsYXRlM2QoLTEwMCUsIDBweCwgMHB4KVwiO1xuXG4gICAgbWFzazogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBtYXNrQ2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBkb2N1bWVudEVzY2FwZUxpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIGFuaW1hdGlvbkVuZExpc3RlbmVyOiBhbnk7XG5cbiAgICBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuXG4gICAgc2V0IHZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICB9O1xuXG4gICAgc2V0IHBvc2l0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKC0xMDAlLCAwcHgsIDBweClcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKDEwMCUsIDBweCwgMHB4KVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKDBweCwgMTAwJSwgMHB4KVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU9wdGlvbnMgPSBcInRyYW5zbGF0ZTNkKDBweCwgLTEwMCUsIDBweClcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBmdWxsU2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZnVsbFNjcmVlbjtcbiAgICB9XG5cbiAgICBzZXQgZnVsbFNjcmVlbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9mdWxsU2NyZWVuID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlKVxuICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1PcHRpb25zID0gXCJub25lXCI7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtb2RhbCcsIHRoaXMuY29udGFpbmVyLCB0aGlzLmJhc2VaSW5kZXggfHwgdGhpcy5jb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vZGFsKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZU1vZGFsaXR5KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHt9KTtcbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHt9KTtcblxuICAgICAgICBpZiAodGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTW9kYWxpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGVuYWJsZU1vZGFsaXR5KCkge1xuICAgICAgICBpZiAoIXRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICB0aGlzLm1hc2suc3R5bGUuekluZGV4ID0gU3RyaW5nKHBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCkgLSAxKTtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkTXVsdGlwbGVDbGFzc2VzKHRoaXMubWFzaywgJ3AtY29tcG9uZW50LW92ZXJsYXkgcC1zaWRlYmFyLW1hc2sgcC1jb21wb25lbnQtb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5LWVudGVyJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRpc21pc3NpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubWFzaywgJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tYXNrKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmJsb2NrU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc2FibGVNb2RhbGl0eSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLm1hc2ssICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZExpc3RlbmVyID0gdGhpcy5kZXN0cm95TW9kYWwuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMubWFzay5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmFuaW1hdGlvbkVuZExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lNb2RhbCgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRNYXNrQ2xpY2tMaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLm1hc2spIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5tYXNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJsb2NrU2Nyb2xsKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdwLW92ZXJmbG93LWhpZGRlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmRBbmltYXRpb25FbmRMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm1hc2sgPSBudWxsO1xuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlT25Fc2NhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKGV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kR2xvYmFsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZENvbnRhaW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFwcGVuZFRvID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lciwgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMjcpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQodGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4KSA9PT0gKERvbUhhbmRsZXIuemluZGV4ICsgdGhpcy5iYXNlWkluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50RXNjYXBlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50RXNjYXBlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFc2NhcGVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudEVzY2FwZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1hc2tDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tYXNrQ2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRHbG9iYWxMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kTWFza0NsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEVzY2FwZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdW5iaW5kQW5pbWF0aW9uRW5kTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkVuZExpc3RlbmVyICYmIHRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95TW9kYWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvICYmIHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnVuYmluZEdsb2JhbExpc3RlbmVycygpO1xuICAgICAgICB0aGlzLnVuYmluZEFuaW1hdGlvbkVuZExpc3RlbmVyKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NpZGViYXJdLFxuICAgIGRlY2xhcmF0aW9uczogW1NpZGViYXJdXG59KVxuZXhwb3J0IGNsYXNzIFNpZGViYXJNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/skeleton/primeng-skeleton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/skeleton/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/skeleton/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1za2VsZXRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9za2VsZXRvbi9wcmltZW5nLXNrZWxldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/skeleton/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/skeleton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/skeleton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './skeleton';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9za2VsZXRvbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9za2VsZXRvbic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/skeleton/skeleton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/skeleton/skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/skeleton/skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,71 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Skeleton {
+    constructor() {
+        this.shape = "rectangle";
+        this.animation = "wave";
+        this.borderRadius = null;
+        this.size = null;
+        this.width = "100%";
+        this.height = "1rem";
+    }
+    containerClass() {
+        return {
+            'p-skeleton p-component': true,
+            'p-skeleton-circle': this.shape === 'circle',
+            'p-skeleton-none': this.animation === 'none'
+        };
+    }
+    containerStyle() {
+        if (this.size)
+            return { ...this.style, width: this.size, height: this.size, borderRadius: this.borderRadius };
+        else
+            return { ...this.style, width: this.width, height: this.height, borderRadius: this.borderRadius };
+    }
+}
+Skeleton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Skeleton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Skeleton, selector: "p-skeleton", inputs: { styleClass: "styleClass", style: "style", shape: "shape", animation: "animation", borderRadius: "borderRadius", size: "size", width: "width", height: "height" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, isInline: true, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-skeleton', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], animation: [{
+                type: Input
+            }], borderRadius: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }] } });
+export class SkeletonModule {
+}
+SkeletonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SkeletonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, declarations: [Skeleton], imports: [CommonModule], exports: [Skeleton] });
+SkeletonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Skeleton],
+                    declarations: [Skeleton]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2tlbGV0b24vc2tlbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBZS9DLE1BQU0sT0FBTyxRQUFRO0lBYnJCO1FBbUJhLFVBQUssR0FBVyxXQUFXLENBQUM7UUFFNUIsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQUUzQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUU1QixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBRXBCLFVBQUssR0FBVyxNQUFNLENBQUM7UUFFdkIsV0FBTSxHQUFXLE1BQU0sQ0FBQztLQWdCcEM7SUFkRyxjQUFjO1FBQ1YsT0FBTztZQUNILHdCQUF3QixFQUFFLElBQUk7WUFDOUIsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO1lBQzVDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTTtTQUMvQyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJO1lBQ0wsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDOztZQUU3RixPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUM7SUFDNUcsQ0FBQzs7cUdBL0JRLFFBQVE7eUZBQVIsUUFBUSxxUUFYUDs7O0tBR1Q7MkZBUVEsUUFBUTtrQkFicEIsU0FBUzsrQkFDSSxZQUFZLFlBQ1o7OztLQUdULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLOztBQXVCVixNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQXZDZCxRQUFRLGFBbUNQLFlBQVksYUFuQ2IsUUFBUTs0R0F1Q1IsY0FBYyxZQUpkLENBQUMsWUFBWSxDQUFDOzJGQUlkLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ25CLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1za2VsZXRvbicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9za2VsZXRvbi5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTa2VsZXRvbiB7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc2hhcGU6IHN0cmluZyA9IFwicmVjdGFuZ2xlXCI7XG5cbiAgICBASW5wdXQoKSBhbmltYXRpb246IHN0cmluZyA9IFwid2F2ZVwiO1xuXG4gICAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KCkgc2l6ZTogc3RyaW5nID0gbnVsbDtcblxuICAgIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSBcIjEwMCVcIjtcblxuICAgIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gXCIxcmVtXCI7XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLXNrZWxldG9uIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLXNrZWxldG9uLWNpcmNsZSc6IHRoaXMuc2hhcGUgPT09ICdjaXJjbGUnLFxuICAgICAgICAgICAgJ3Atc2tlbGV0b24tbm9uZSc6IHRoaXMuYW5pbWF0aW9uID09PSAnbm9uZSdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb250YWluZXJTdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2l6ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLnRoaXMuc3R5bGUsIHdpZHRoOiB0aGlzLnNpemUsIGhlaWdodDogdGhpcy5zaXplLCBib3JkZXJSYWRpdXM6IHRoaXMuYm9yZGVyUmFkaXVzfTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLnRoaXMuc3R5bGUsIHdpZHRoOiB0aGlzLndpZHRoLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0LCBib3JkZXJSYWRpdXM6IHRoaXMuYm9yZGVyUmFkaXVzfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NrZWxldG9uXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTa2VsZXRvbl1cbn0pXG5leHBvcnQgY2xhc3MgU2tlbGV0b25Nb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/slidemenu/primeng-slidemenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slidemenu/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slidemenu/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zbGlkZW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2xpZGVtZW51L3ByaW1lbmctc2xpZGVtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/slidemenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slidemenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slidemenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './slidemenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zbGlkZW1lbnUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2xpZGVtZW51JzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/slidemenu/slidemenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slidemenu/slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slidemenu/slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,477 @@
+import { NgModule, Component, Input, Inject, forwardRef, ViewChild, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { trigger, style, transition, animate } from '@angular/animations';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { RouterModule } from '@angular/router';
+import { ZIndexUtils } from 'primeng/utils';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "@angular/router";
+import * as i4 from "primeng/api";
+export class SlideMenuSub {
+    constructor(slideMenu) {
+        this.backLabel = 'Back';
+        this.easing = 'ease-out';
+        this.slideMenu = slideMenu;
+    }
+    itemClick(event, item, listitem) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items && !this.slideMenu.animating) {
+            this.slideMenu.left -= this.slideMenu.menuWidth;
+            this.activeItem = listitem;
+            this.slideMenu.animating = true;
+            setTimeout(() => this.slideMenu.animating = false, this.effectDuration);
+        }
+        if (!item.items && this.slideMenu.popup) {
+            this.slideMenu.hide();
+        }
+    }
+    focusNextList(listitem) {
+        if (!this.slideMenu.animating) {
+            let focusableElements = DomHandler.getFocusableElements(listitem);
+            if (focusableElements && focusableElements.length > 0) {
+                focusableElements[0].focus();
+            }
+            this.unbindTransitionEndListener();
+        }
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                    this.transitionEndListener = this.focusNextList.bind(this, listItem);
+                    this.sublistViewChild.nativeElement.addEventListener('transitionend', this.transitionEndListener);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    unbindTransitionEndListener() {
+        if (this.transitionEndListener && this.sublistViewChild) {
+            this.sublistViewChild.nativeElement.removeEventListener('transitionend', this.transitionEndListener);
+            this.transitionEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.activeItem = null;
+        this.unbindTransitionEndListener();
+    }
+    get isActive() {
+        return -this.slideMenu.left == (this.index * this.menuWidth);
+    }
+}
+SlideMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, deps: [{ token: forwardRef(() => SlideMenu) }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenuSub, selector: "p-slideMenuSub", inputs: { item: "item", root: "root", backLabel: "backLabel", menuWidth: "menuWidth", effectDuration: "effectDuration", easing: "easing", index: "index" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-slideMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => SlideMenu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }] } });
+export class SlideMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.menuWidth = 190;
+        this.viewportHeight = 180;
+        this.effectDuration = 250;
+        this.easing = 'ease-out';
+        this.backLabel = 'Back';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.left = 0;
+        this.animating = false;
+    }
+    ngAfterViewChecked() {
+        if (!this.viewportUpdated && !this.popup && this.containerViewChild) {
+            this.updateViewPort();
+            this.viewportUpdated = true;
+        }
+    }
+    set container(element) {
+        this.containerViewChild = element;
+    }
+    set backward(element) {
+        this.backwardViewChild = element;
+    }
+    set slideMenuContent(element) {
+        this.slideMenuContentViewChild = element;
+    }
+    updateViewPort() {
+        this.slideMenuContentViewChild.nativeElement.style.height = this.viewportHeight - DomHandler.getHiddenElementOuterHeight(this.backwardViewChild.nativeElement) + 'px';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.updateViewPort();
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.containerViewChild.nativeElement, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    goBack() {
+        this.left += this.menuWidth;
+    }
+    onBackwardKeydown(event) {
+        this.goBack();
+        if (!this.left) {
+            setTimeout(() => {
+                let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+                if (focusableElements && focusableElements.length > 0) {
+                    focusableElements[0].focus();
+                }
+            }, 1);
+        }
+        event.preventDefault();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                    this.cd.detectChanges();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+        this.left = 0;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+SlideMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenu, selector: "p-slideMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", menuWidth: "menuWidth", viewportHeight: "viewportHeight", effectDuration: "effectDuration", easing: "easing", backLabel: "backLabel", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "backward", first: true, predicate: ["backward"], descendants: true }, { propertyName: "slideMenuContent", first: true, predicate: ["slideMenuContent"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"], components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slideMenu', template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], viewportHeight: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], backward: [{
+                type: ViewChild,
+                args: ['backward']
+            }], slideMenuContent: [{
+                type: ViewChild,
+                args: ['slideMenuContent']
+            }] } });
+export class SlideMenuModule {
+}
+SlideMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SlideMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, declarations: [SlideMenu, SlideMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [SlideMenu, RouterModule, TooltipModule] });
+SlideMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [SlideMenu, RouterModule, TooltipModule],
+                    declarations: [SlideMenu, SlideMenuSub]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NsaWRlbWVudS9zbGlkZW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXVDLEtBQUssRUFBVyxNQUFNLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwTixPQUFPLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFFLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBeUM5QyxNQUFNLE9BQU8sWUFBWTtJQXNCckIsWUFBaUQsU0FBUztRQWhCakQsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQU0zQixXQUFNLEdBQVcsVUFBVSxDQUFDO1FBV2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBc0IsQ0FBQztJQUM1QyxDQUFDO0lBR0QsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFjLEVBQUUsUUFBYTtRQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7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QyxrQkFBa0I7O0FBbU1qQyxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLGlCQTlRZixTQUFTLEVBN0lULFlBQVksYUF1WlgsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLGFBMVF4QyxTQUFTLEVBMlFFLFlBQVksRUFBQyxhQUFhOzZHQUdyQyxlQUFlLFlBSmYsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQyxFQUM5QixZQUFZLEVBQUMsYUFBYTsyRkFHckMsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDbEQsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQy9DLFlBQVksRUFBRSxDQUFDLFNBQVMsRUFBQyxZQUFZLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRWxlbWVudFJlZixBZnRlclZpZXdDaGVja2VkLE9uRGVzdHJveSxJbnB1dCxSZW5kZXJlcjIsSW5qZWN0LGZvcndhcmRSZWYsVmlld0NoaWxkLE91dHB1dCxFdmVudEVtaXR0ZXIsQ2hhbmdlRGV0ZWN0b3JSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHJpZ2dlcixzdHlsZSx0cmFuc2l0aW9uLGFuaW1hdGUsQW5pbWF0aW9uRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbUhhbmRsZXIsIENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge01lbnVJdGVtLCBPdmVybGF5U2VydmljZSwgUHJpbWVOR0NvbmZpZ30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1pJbmRleFV0aWxzfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXNsaWRlTWVudVN1YicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHVsICNzdWJsaXN0IFtuZ0NsYXNzXT1cInsncC1zbGlkZW1lbnUtcm9vdGxpc3QnOnJvb3QsICdwLXN1Ym1lbnUtbGlzdCc6IXJvb3QsICdwLWFjdGl2ZS1zdWJtZW51JzogaXNBY3RpdmV9XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJtZW51V2lkdGhcIiBbc3R5bGUubGVmdC5weF09XCJyb290ID8gc2xpZGVNZW51LmxlZnQgOiBzbGlkZU1lbnUubWVudVdpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uUHJvcGVydHldPVwicm9vdCA/ICdsZWZ0JyA6ICdub25lJ1wiIFtzdHlsZS50cmFuc2l0aW9uRHVyYXRpb25dPVwiZWZmZWN0RHVyYXRpb24gKyAnbXMnXCIgW3N0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbl09XCJlYXNpbmdcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY2hpbGQgW25nRm9yT2ZdPVwiKHJvb3QgPyBpdGVtIDogaXRlbS5pdGVtcylcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjaGlsZC5zZXBhcmF0b3JcIiBjbGFzcz1cInAtbWVudS1zZXBhcmF0b3JcIiBbbmdDbGFzc109XCJ7J3AtaGlkZGVuJzogY2hpbGQudmlzaWJsZSA9PT0gZmFsc2V9XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWNoaWxkLnNlcGFyYXRvclwiICNsaXN0aXRlbSBbbmdDbGFzc109XCJ7J3AtbWVudWl0ZW0nOnRydWUsJ3AtbWVudWl0ZW0tYWN0aXZlJzpsaXN0aXRlbT09YWN0aXZlSXRlbSwncC1oaWRkZW4nOiBjaGlsZC52aXNpYmxlID09PSBmYWxzZX1cIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiY2hpbGQudG9vbHRpcE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hpbGQuc3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cImNoaWxkLnN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIWNoaWxkLnJvdXRlckxpbmtcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIiAgW2F0dHIuaHJlZl09XCJjaGlsZC51cmxcIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiIFthdHRyLnRhcmdldF09XCJjaGlsZC50YXJnZXRcIiBbYXR0ci50aXRsZV09XCJjaGlsZC50aXRsZVwiIFthdHRyLmlkXT1cImNoaWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCIgW2F0dHIudGFiaW5kZXhdPVwiY2hpbGQuZGlzYWJsZWQgfHwgIWlzQWN0aXZlID8gbnVsbCA6ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudCwgY2hpbGQsIGxpc3RpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbFJvdXRlTGFiZWxcIj57e2NoaWxkLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxSb3V0ZUxhYmVsPjxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgW2lubmVySFRNTF09XCJjaGlsZC5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXN1Ym1lbnUtaWNvbiBwaSBwaS1mdyBwaS1hbmdsZS1yaWdodFwiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJjaGlsZC5yb3V0ZXJMaW5rXCIgKGtleWRvd24pPVwib25JdGVtS2V5RG93bigkZXZlbnQpXCIgIFtyb3V0ZXJMaW5rXT1cImNoaWxkLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiY2hpbGQucXVlcnlQYXJhbXNcIiBbcm91dGVyTGlua0FjdGl2ZV09XCIncC1tZW51aXRlbS1saW5rLWFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImNoaWxkLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCIgW2hyZWZdPVwiY2hpbGQudXJsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNoaWxkLnRpdGxlXCIgW2F0dHIuaWRdPVwiY2hpbGQuaWRcIiBbYXR0ci50YWJpbmRleF09XCJjaGlsZC5kaXNhYmxlZCB8fCAhaXNBY3RpdmUgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6Y2hpbGQuZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LCBjaGlsZCwgbGlzdGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJjaGlsZC5mcmFnbWVudFwiIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cImNoaWxkLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIiBbcHJlc2VydmVGcmFnbWVudF09XCJjaGlsZC5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJjaGlsZC5za2lwTG9jYXRpb25DaGFuZ2VcIiBbcmVwbGFjZVVybF09XCJjaGlsZC5yZXBsYWNlVXJsXCIgW3N0YXRlXT1cImNoaWxkLnN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiIFtuZ0NsYXNzXT1cImNoaWxkLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2hpbGQuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7Y2hpbGQubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNoaWxkLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3VibWVudS1pY29uIHBpIHBpLWZ3IHBpLWNhcmV0LXJpZ2h0XCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8cC1zbGlkZU1lbnVTdWIgY2xhc3M9XCJwLXN1Ym1lbnVcIiBbaXRlbV09XCJjaGlsZFwiIFtpbmRleF09XCJpbmRleCArIDFcIiBbbWVudVdpZHRoXT1cIm1lbnVXaWR0aFwiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIj48L3Atc2xpZGVNZW51U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZU1lbnVTdWIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaXRlbTogTWVudUl0ZW07XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYmFja0xhYmVsOiBzdHJpbmcgPSAnQmFjayc7XG5cbiAgICBASW5wdXQoKSBtZW51V2lkdGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGVmZmVjdER1cmF0aW9uOiBhbnk7XG5cbiAgICBASW5wdXQoKSBlYXNpbmc6IHN0cmluZyA9ICdlYXNlLW91dCc7XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQFZpZXdDaGlsZCgnc3VibGlzdCcpIHN1Ymxpc3RWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBzbGlkZU1lbnU6IFNsaWRlTWVudTtcblxuICAgIHRyYW5zaXRpb25FbmRMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IFNsaWRlTWVudSkpIHNsaWRlTWVudSkge1xuICAgICAgICB0aGlzLnNsaWRlTWVudSA9IHNsaWRlTWVudSBhcyBTbGlkZU1lbnU7XG4gICAgfVxuICAgIGFjdGl2ZUl0ZW06IGFueTtcblxuICAgIGl0ZW1DbGljayhldmVudCwgaXRlbTogTWVudUl0ZW0sIGxpc3RpdGVtOiBhbnkpwqB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpdGVtLnVybCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5pdGVtcyAmJiAhdGhpcy5zbGlkZU1lbnUuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlTWVudS5sZWZ0IC09IHRoaXMuc2xpZGVNZW51Lm1lbnVXaWR0aDtcblxuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbGlzdGl0ZW07XG4gICAgICAgICAgICB0aGlzLnNsaWRlTWVudS5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNsaWRlTWVudS5hbmltYXRpbmcgPSBmYWxzZSwgdGhpcy5lZmZlY3REdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWl0ZW0uaXRlbXMgJiYgdGhpcy5zbGlkZU1lbnUucG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVNZW51LmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzTmV4dExpc3QobGlzdGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlTWVudS5hbmltYXRpbmcpIHtcbiAgICAgICAgICAgIGxldCBmb2N1c2FibGVFbGVtZW50cyA9IERvbUhhbmRsZXIuZ2V0Rm9jdXNhYmxlRWxlbWVudHMobGlzdGl0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudHMgJiYgZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudW5iaW5kVHJhbnNpdGlvbkVuZExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1LZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGxldCBsaXN0SXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudDtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBpZiAobGlzdEl0ZW0gJiYgIURvbUhhbmRsZXIuaGFzQ2xhc3MobGlzdEl0ZW0sICdwLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uY2hpbGRyZW5bMF0uY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uRW5kTGlzdGVuZXIgPSB0aGlzLmZvY3VzTmV4dExpc3QuYmluZCh0aGlzLGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMudHJhbnNpdGlvbkVuZExpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFRyYW5zaXRpb25FbmRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNpdGlvbkVuZExpc3RlbmVyICYmIHRoaXMuc3VibGlzdFZpZXdDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJsaXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMudHJhbnNpdGlvbkVuZExpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkVuZExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLnVuYmluZFRyYW5zaXRpb25FbmRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGdldCBpc0FjdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIC10aGlzLnNsaWRlTWVudS5sZWZ0ID09ICh0aGlzLmluZGV4ICogdGhpcy5tZW51V2lkdGgpXG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc2xpZGVNZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwieydwLXNsaWRlbWVudSBwLWNvbXBvbmVudCc6dHJ1ZSwgJ3Atc2xpZGVtZW51LW92ZXJsYXknOnBvcHVwfVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCIgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW0BvdmVybGF5QW5pbWF0aW9uXT1cInt2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHtzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zfX1cIiBbQC5kaXNhYmxlZF09XCJwb3B1cCAhPT0gdHJ1ZVwiXG4gICAgICAgICAgICAoQG92ZXJsYXlBbmltYXRpb24uc3RhcnQpPVwib25PdmVybGF5QW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiIChAb3ZlcmxheUFuaW1hdGlvbi5kb25lKT1cIm9uT3ZlcmxheUFuaW1hdGlvbkVuZCgkZXZlbnQpXCIgKm5nSWY9XCIhcG9wdXAgfHwgdmlzaWJsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtc2xpZGVtZW51LXdyYXBwZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImxlZnQgPyB2aWV3cG9ydEhlaWdodCArICdweCcgOiAnYXV0bydcIiBbc3R5bGUud2lkdGhdPVwibWVudVdpZHRoICsgJ3B4J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgI3NsaWRlTWVudUNvbnRlbnQgY2xhc3M9XCJwLXNsaWRlbWVudS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLXNsaWRlTWVudVN1YiBbaXRlbV09XCJtb2RlbFwiIHJvb3Q9XCJyb290XCIgW2luZGV4XT1cIjBcIiBbbWVudVdpZHRoXT1cIm1lbnVXaWR0aFwiIFtlZmZlY3REdXJhdGlvbl09XCJlZmZlY3REdXJhdGlvblwiIFtlYXNpbmddPVwiZWFzaW5nXCI+PC9wLXNsaWRlTWVudVN1Yj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YSAjYmFja3dhcmQgKGtleWRvd24uZW50ZXIpPVwib25CYWNrd2FyZEtleWRvd24oJGV2ZW50KVwiIChrZXlkb3duLnNwYWNlKT1cIm9uQmFja3dhcmRLZXlkb3duKCRldmVudClcIiBjbGFzcz1cInAtc2xpZGVtZW51LWJhY2t3YXJkIHAtbWVudWl0ZW0tbGlua1wiIHRhYmluZGV4PVwiMFwiIFtzdHlsZS5kaXNwbGF5XT1cImxlZnQgPyAnYmxvY2snIDogJ25vbmUnXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zbGlkZW1lbnUtYmFja3dhcmQtaWNvbiBwaSBwaS1mdyBwaS1jYXJldC1sZWZ0XCI+PC9zcGFuPjxzcGFuPnt7YmFja0xhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvdmVybGF5QW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICdzY2FsZVkoMC44KSd9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKVxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2xpZGVtZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlTWVudSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBtb2RlbDogTWVudUl0ZW1bXTtcblxuICAgIEBJbnB1dCgpIHBvcHVwOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1lbnVXaWR0aDogbnVtYmVyID0gMTkwO1xuXG4gICAgQElucHV0KCkgdmlld3BvcnRIZWlnaHQ6IG51bWJlciA9IDE4MDtcblxuICAgIEBJbnB1dCgpIGVmZmVjdER1cmF0aW9uOiBhbnkgPSAyNTA7XG5cbiAgICBASW5wdXQoKSBlYXNpbmc6IHN0cmluZyA9ICdlYXNlLW91dCc7XG5cbiAgICBASW5wdXQoKSBiYWNrTGFiZWw6IHN0cmluZyA9ICdCYWNrJztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBhdXRvWkluZGV4OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGJhc2VaSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIGJhY2t3YXJkVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgc2xpZGVNZW51Q29udGVudFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgcHJldmVudERvY3VtZW50RGVmYXVsdDogYm9vbGVhbjtcblxuICAgIHNjcm9sbEhhbmRsZXI6IGFueTtcblxuICAgIGxlZnQ6IG51bWJlciA9IDA7XG5cbiAgICBhbmltYXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRhcmdldDogYW55O1xuXG4gICAgdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIHZpZXdwb3J0VXBkYXRlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy52aWV3cG9ydFVwZGF0ZWQgJiYgIXRoaXMucG9wdXAgJiYgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlld1BvcnQoKTtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnRVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIHNldCBjb250YWluZXIoZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnYmFja3dhcmQnKSBzZXQgYmFja3dhcmQoZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmJhY2t3YXJkVmlld0NoaWxkID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZU1lbnVDb250ZW50Jykgc2V0IHNsaWRlTWVudUNvbnRlbnQoZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLnNsaWRlTWVudUNvbnRlbnRWaWV3Q2hpbGQgPSBlbGVtZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZVZpZXdQb3J0KCkge1xuICAgICAgICB0aGlzLnNsaWRlTWVudUNvbnRlbnRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLnZpZXdwb3J0SGVpZ2h0IC0gRG9tSGFuZGxlci5nZXRIaWRkZW5FbGVtZW50T3V0ZXJIZWlnaHQodGhpcy5iYWNrd2FyZFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSArICdweCc7XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5zaG93KGV2ZW50KTtcblxuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSB0cnVlO1xuICAgIH1cblxuICAgIHNob3coZXZlbnQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlld1BvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlT25Ub3AoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNob3cuZW1pdCh7fSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgdGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHt9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2goZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIoZXZlbnQuZWxlbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGVuZE92ZXJsYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZU9uVG9wKCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ21lbnUnLCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCB0aGlzLmJhc2VaSW5kZXggKyB0aGlzLmNvbmZpZy56SW5kZXgubWVudSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgZ29CYWNrKCkge1xuICAgICAgICB0aGlzLmxlZnQgKz0gdGhpcy5tZW51V2lkdGg7XG4gICAgfVxuXG4gICAgb25CYWNrd2FyZEtleWRvd24oZXZlbnQpIHtcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcblxuICAgICAgICBpZiAoIXRoaXMubGVmdCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZUVsZW1lbnRzID0gRG9tSGFuZGxlci5nZXRGb2N1c2FibGVFbGVtZW50cyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnRzICYmIGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucHJldmVudERvY3VtZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMudGFyZ2V0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlIaWRlKCnCoHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sZWZ0ID0gMDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVzdG9yZU92ZXJsYXlBcHBlbmQoKTtcbiAgICAgICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NsaWRlTWVudSxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbU2xpZGVNZW51LFNsaWRlTWVudVN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVNZW51TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/slider/primeng-slider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slider/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slider/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zbGlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2xpZGVyL3ByaW1lbmctc2xpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/slider/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slider/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slider/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './slider';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zbGlkZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2xpZGVyJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/slider/slider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/slider/slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/slider/slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,432 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const SLIDER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Slider),
+    multi: true
+};
+export class Slider {
+    constructor(el, renderer, ngZone, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.ngZone = ngZone;
+        this.cd = cd;
+        this.min = 0;
+        this.max = 100;
+        this.orientation = 'horizontal';
+        this.tabindex = 0;
+        this.onChange = new EventEmitter();
+        this.onSlideEnd = new EventEmitter();
+        this.handleValues = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.handleIndex = 0;
+    }
+    onMouseDown(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = true;
+        this.updateDomData();
+        this.sliderHandleClick = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        this.bindDragListeners();
+        event.target.focus();
+        event.preventDefault();
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+    }
+    onTouchStart(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0];
+        this.startHandleValue = (this.range) ? this.handleValues[index] : this.handleValue;
+        this.dragging = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        if (this.orientation === 'horizontal') {
+            this.startx = parseInt(touchobj.clientX, 10);
+            this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        }
+        else {
+            this.starty = parseInt(touchobj.clientY, 10);
+            this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+        }
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onTouchMove(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0], handleValue = 0;
+        if (this.orientation === 'horizontal') {
+            handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / (this.barWidth)) + this.startHandleValue;
+        }
+        else {
+            handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / (this.barHeight)) + this.startHandleValue;
+        }
+        this.setValueFromHandle(event, handleValue);
+        event.preventDefault();
+    }
+    onTouchEnd(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = false;
+        if (this.range)
+            this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+        else
+            this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+        if (this.animate) {
+            DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onBarClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.sliderHandleClick) {
+            this.updateDomData();
+            this.handleChange(event);
+        }
+        this.sliderHandleClick = false;
+    }
+    onHandleKeydown(event, handleIndex) {
+        if (this.disabled) {
+            return;
+        }
+        if (event.which == 38 || event.which == 39) {
+            this.spin(event, 1, handleIndex);
+        }
+        else if (event.which == 37 || event.which == 40) {
+            this.spin(event, -1, handleIndex);
+        }
+    }
+    spin(event, dir, handleIndex) {
+        let step = (this.step || 1) * dir;
+        if (this.range) {
+            this.handleIndex = handleIndex;
+            this.updateValue(this.values[this.handleIndex] + step);
+            this.updateHandleValue();
+        }
+        else {
+            this.updateValue(this.value + step);
+            this.updateHandleValue();
+        }
+        event.preventDefault();
+    }
+    handleChange(event) {
+        let handleValue = this.calculateHandleValue(event);
+        this.setValueFromHandle(event, handleValue);
+    }
+    bindDragListeners() {
+        this.ngZone.runOutsideAngular(() => {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            if (!this.dragListener) {
+                this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                    if (this.dragging) {
+                        this.ngZone.run(() => {
+                            this.handleChange(event);
+                        });
+                    }
+                });
+            }
+            if (!this.mouseupListener) {
+                this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {
+                    if (this.dragging) {
+                        this.dragging = false;
+                        this.ngZone.run(() => {
+                            if (this.range)
+                                this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+                            else
+                                this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+                            if (this.animate) {
+                                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+                            }
+                        });
+                    }
+                });
+            }
+        });
+    }
+    unbindDragListeners() {
+        if (this.dragListener) {
+            this.dragListener();
+        }
+        if (this.mouseupListener) {
+            this.mouseupListener();
+        }
+    }
+    setValueFromHandle(event, handleValue) {
+        this.sliderHandleClick = false;
+        let newValue = this.getValueFromHandle(handleValue);
+        if (this.range) {
+            if (this.step) {
+                this.handleStepChange(newValue, this.values[this.handleIndex]);
+            }
+            else {
+                this.handleValues[this.handleIndex] = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        else {
+            if (this.step) {
+                this.handleStepChange(newValue, this.value);
+            }
+            else {
+                this.handleValue = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        this.cd.markForCheck();
+    }
+    handleStepChange(newValue, oldValue) {
+        let diff = (newValue - oldValue);
+        let val = oldValue;
+        if (diff < 0) {
+            val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        else if (diff > 0) {
+            val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        this.updateValue(val);
+        this.updateHandleValue();
+    }
+    writeValue(value) {
+        if (this.range)
+            this.values = value || [0, 0];
+        else
+            this.value = value || 0;
+        this.updateHandleValue();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get rangeStartLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[0] + '%';
+    }
+    get rangeStartBottom() {
+        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';
+    }
+    get rangeEndLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[1] + '%';
+    }
+    get rangeEndBottom() {
+        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    updateDomData() {
+        let rect = this.el.nativeElement.children[0].getBoundingClientRect();
+        this.initX = rect.left + DomHandler.getWindowScrollLeft();
+        this.initY = rect.top + DomHandler.getWindowScrollTop();
+        this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+    }
+    calculateHandleValue(event) {
+        if (this.orientation === 'horizontal')
+            return ((event.pageX - this.initX) * 100) / (this.barWidth);
+        else
+            return (((this.initY + this.barHeight) - event.pageY) * 100) / (this.barHeight);
+    }
+    updateHandleValue() {
+        if (this.range) {
+            this.handleValues[0] = (this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100 / (this.max - this.min);
+            this.handleValues[1] = (this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100 / (this.max - this.min);
+        }
+        else {
+            if (this.value < this.min)
+                this.handleValue = 0;
+            else if (this.value > this.max)
+                this.handleValue = 100;
+            else
+                this.handleValue = (this.value - this.min) * 100 / (this.max - this.min);
+        }
+    }
+    updateValue(val, event) {
+        if (this.range) {
+            let value = val;
+            if (this.handleIndex == 0) {
+                if (value < this.min) {
+                    value = this.min;
+                    this.handleValues[0] = 0;
+                }
+                else if (value > this.values[1]) {
+                    value = this.values[1];
+                    this.handleValues[0] = this.handleValues[1];
+                }
+                this.sliderHandleStart.nativeElement.focus();
+            }
+            else {
+                if (value > this.max) {
+                    value = this.max;
+                    this.handleValues[1] = 100;
+                }
+                else if (value < this.values[0]) {
+                    value = this.values[0];
+                    this.handleValues[1] = this.handleValues[0];
+                }
+                this.sliderHandleEnd.nativeElement.focus();
+            }
+            this.values[this.handleIndex] = this.getNormalizedValue(value);
+            this.values = this.values.slice();
+            this.onModelChange(this.values);
+            this.onChange.emit({ event: event, values: this.values });
+        }
+        else {
+            if (val < this.min) {
+                val = this.min;
+                this.handleValue = 0;
+            }
+            else if (val > this.max) {
+                val = this.max;
+                this.handleValue = 100;
+            }
+            this.value = this.getNormalizedValue(val);
+            this.onModelChange(this.value);
+            this.onChange.emit({ event: event, value: this.value });
+            this.sliderHandle.nativeElement.focus();
+        }
+    }
+    getValueFromHandle(handleValue) {
+        return (this.max - this.min) * (handleValue / 100) + this.min;
+    }
+    getDecimalsCount(value) {
+        if (value && Math.floor(value) !== value)
+            return value.toString().split(".")[1].length || 0;
+        return 0;
+    }
+    getNormalizedValue(val) {
+        let decimalsCount = this.getDecimalsCount(this.step);
+        if (decimalsCount > 0) {
+            return +val.toFixed(decimalsCount);
+        }
+        else {
+            return Math.floor(val);
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDragListeners();
+    }
+}
+Slider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Slider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Slider, selector: "p-slider", inputs: { animate: "animate", disabled: "disabled", min: "min", max: "max", orientation: "orientation", step: "step", range: "range", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex" }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "p-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, isInline: true, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slider', template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, providers: [SLIDER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { animate: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], range: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onSlideEnd: [{
+                type: Output
+            }], sliderHandle: [{
+                type: ViewChild,
+                args: ["sliderHandle"]
+            }], sliderHandleStart: [{
+                type: ViewChild,
+                args: ["sliderHandleStart"]
+            }], sliderHandleEnd: [{
+                type: ViewChild,
+                args: ["sliderHandleEnd"]
+            }] } });
+export class SliderModule {
+}
+SliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });
+SliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Slider],
+                    declarations: [Slider]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQXlCLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBc0MsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdNLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFRO0lBQ3hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDckMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBK0JGLE1BQU0sT0FBTyxNQUFNO0lBc0VmLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFVLE1BQWMsRUFBUyxFQUFxQjtRQUFoRyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQWhFMUcsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUVoQixRQUFHLEdBQVcsR0FBRyxDQUFDO1FBRWxCLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBWW5DLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFcEIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWN0RCxpQkFBWSxHQUFhLEVBQUUs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Q0FBQzsyRkFJZCxZQUFZO2tCQUx4QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO29CQUNqQixZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgUmVuZGVyZXIyLE5nWm9uZSxDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBTTElERVJfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc2xpZGVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdDbGFzc109XCJ7J3Atc2xpZGVyIHAtY29tcG9uZW50Jzp0cnVlLCdwLWRpc2FibGVkJzpkaXNhYmxlZCxcbiAgICAgICAgICAgICdwLXNsaWRlci1ob3Jpem9udGFsJzpvcmllbnRhdGlvbiA9PSAnaG9yaXpvbnRhbCcsJ3Atc2xpZGVyLXZlcnRpY2FsJzpvcmllbnRhdGlvbiA9PSAndmVydGljYWwnLCdwLXNsaWRlci1hbmltYXRlJzphbmltYXRlfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CYXJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJhbmdlICYmIG9yaWVudGF0aW9uID09ICdob3Jpem9udGFsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7J2xlZnQnOmhhbmRsZVZhbHVlc1swXSArICclJyx3aWR0aDogKGhhbmRsZVZhbHVlc1sxXSAtIGhhbmRsZVZhbHVlc1swXSArICclJyl9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyYW5nZSAmJiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnXCIgY2xhc3M9XCJwLXNsaWRlci1yYW5nZVwiIFtuZ1N0eWxlXT1cInsnYm90dG9tJzpoYW5kbGVWYWx1ZXNbMF0gKyAnJScsaGVpZ2h0OiAoaGFuZGxlVmFsdWVzWzFdIC0gaGFuZGxlVmFsdWVzWzBdICsgJyUnKX1cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyYW5nZSAmJiBvcmllbnRhdGlvbj09J3ZlcnRpY2FsJ1wiIGNsYXNzPVwicC1zbGlkZXItcmFuZ2VcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IGhhbmRsZVZhbHVlICsgJyUnfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJhbmdlICYmIG9yaWVudGF0aW9uPT0naG9yaXpvbnRhbCdcIiBjbGFzcz1cInAtc2xpZGVyLXJhbmdlXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6IGhhbmRsZVZhbHVlICsgJyUnfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICNzbGlkZXJIYW5kbGUgKm5nSWY9XCIhcmFuZ2VcIiBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IG51bGwgOiB0YWJpbmRleFwiIChrZXlkb3duKT1cIm9uSGFuZGxlS2V5ZG93bigkZXZlbnQpXCIgY2xhc3M9XCJwLXNsaWRlci1oYW5kbGVcIiAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIiAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uXT1cImRyYWdnaW5nID8gJ25vbmUnOiBudWxsXCIgW25nU3R5bGVdPVwieydsZWZ0Jzogb3JpZW50YXRpb24gPT0gJ2hvcml6b250YWwnID8gaGFuZGxlVmFsdWUgKyAnJScgOiBudWxsLCdib3R0b20nOiBvcmllbnRhdGlvbiA9PSAndmVydGljYWwnID8gaGFuZGxlVmFsdWUgKyAnJScgOiBudWxsfVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCIgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAjc2xpZGVySGFuZGxlU3RhcnQgKm5nSWY9XCJyYW5nZVwiIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IHRhYmluZGV4XCIgKGtleWRvd24pPVwib25IYW5kbGVLZXlkb3duKCRldmVudCwwKVwiIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LDApXCIgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudCwwKVwiICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50LDApXCIgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiIFtzdHlsZS50cmFuc2l0aW9uXT1cImRyYWdnaW5nID8gJ25vbmUnOiBudWxsXCIgY2xhc3M9XCJwLXNsaWRlci1oYW5kbGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbGVmdCc6IHJhbmdlU3RhcnRMZWZ0LCAnYm90dG9tJzogcmFuZ2VTdGFydEJvdHRvbX1cIiBbbmdDbGFzc109XCJ7J3Atc2xpZGVyLWhhbmRsZS1hY3RpdmUnOmhhbmRsZUluZGV4PT0wfVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlID8gdmFsdWVbMF0gOiBudWxsXCIgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAjc2xpZGVySGFuZGxlRW5kICpuZ0lmPVwicmFuZ2VcIiBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IG51bGwgOiB0YWJpbmRleFwiIChrZXlkb3duKT1cIm9uSGFuZGxlS2V5ZG93bigkZXZlbnQsMSlcIiAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudCwxKVwiICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQsMSlcIiAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudCwxKVwiICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIiBbc3R5bGUudHJhbnNpdGlvbl09XCJkcmFnZ2luZyA/ICdub25lJzogbnVsbFwiIGNsYXNzPVwicC1zbGlkZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2xlZnQnOiByYW5nZUVuZExlZnQsICdib3R0b20nOiByYW5nZUVuZEJvdHRvbX1cIiBbbmdDbGFzc109XCJ7J3Atc2xpZGVyLWhhbmRsZS1hY3RpdmUnOmhhbmRsZUluZGV4PT0xfVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIiBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlID8gdmFsdWVbMV0gOiBudWxsXCIgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbU0xJREVSX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlci5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3ksQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgQElucHV0KCkgYW5pbWF0ZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogc3RyaW5nID0gJ2hvcml6b250YWwnO1xuXG4gICAgQElucHV0KCkgc3RlcDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcmFuZ2U6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblNsaWRlRW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoXCJzbGlkZXJIYW5kbGVcIikgc2xpZGVySGFuZGxlOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcInNsaWRlckhhbmRsZVN0YXJ0XCIpIHNsaWRlckhhbmRsZVN0YXJ0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChcInNsaWRlckhhbmRsZUVuZFwiKSBzbGlkZXJIYW5kbGVFbmQ6IEVsZW1lbnRSZWY7XG5cbiAgICBwdWJsaWMgdmFsdWU6IG51bWJlcjtcblxuICAgIHB1YmxpYyB2YWx1ZXM6IG51bWJlcltdO1xuXG4gICAgcHVibGljIGhhbmRsZVZhbHVlOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgaGFuZGxlVmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZHJhZ2dpbmc6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZHJhZ0xpc3RlbmVyOiBhbnk7XG5cbiAgICBwdWJsaWMgbW91c2V1cExpc3RlbmVyOiBhbnk7XG5cbiAgICBwdWJsaWMgaW5pdFg6IG51bWJlcjtcblxuICAgIHB1YmxpYyBpbml0WTogbnVtYmVyO1xuXG4gICAgcHVibGljIGJhcldpZHRoOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgYmFySGVpZ2h0OiBudW1iZXI7XG5cbiAgICBwdWJsaWMgc2xpZGVySGFuZGxlQ2xpY2s6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgc3RhcnRIYW5kbGVWYWx1ZTogYW55O1xuXG4gICAgcHVibGljIHN0YXJ0eDogbnVtYmVyO1xuXG4gICAgcHVibGljIHN0YXJ0eTogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uTW91c2VEb3duKGV2ZW50LCBpbmRleD86bnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVEb21EYXRhKCk7XG4gICAgICAgIHRoaXMuc2xpZGVySGFuZGxlQ2xpY2sgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLmhhbmRsZVZhbHVlcyAmJiB0aGlzLmhhbmRsZVZhbHVlc1swXSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRHJhZ0xpc3RlbmVycygpO1xuICAgICAgICBldmVudC50YXJnZXQuZm9jdXMoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgJ3Atc2xpZGVyLWFuaW1hdGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hTdGFydChldmVudCwgaW5kZXg/Om51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvdWNob2JqID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07XG4gICAgICAgIHRoaXMuc3RhcnRIYW5kbGVWYWx1ZSA9ICh0aGlzLnJhbmdlKSA/IHRoaXMuaGFuZGxlVmFsdWVzW2luZGV4XSA6IHRoaXMuaGFuZGxlVmFsdWU7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLmhhbmRsZVZhbHVlcyAmJiB0aGlzLmhhbmRsZVZhbHVlc1swXSA9PT0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgdGhpcy5zdGFydHggPSBwYXJzZUludCh0b3VjaG9iai5jbGllbnRYLCAxMCk7XG4gICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydHkgPSBwYXJzZUludCh0b3VjaG9iai5jbGllbnRZLCAxMCk7XG4gICAgICAgICAgICB0aGlzLmJhckhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgJ3Atc2xpZGVyLWFuaW1hdGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Ub3VjaE1vdmUoZXZlbnQsIGluZGV4PzpudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0b3VjaG9iaiA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLFxuICAgICAgICBoYW5kbGVWYWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgaGFuZGxlVmFsdWUgPSBNYXRoLmZsb29yKCgocGFyc2VJbnQodG91Y2hvYmouY2xpZW50WCwgMTApIC0gdGhpcy5zdGFydHgpICogMTAwKSAvICh0aGlzLmJhcldpZHRoKSkgKyB0aGlzLnN0YXJ0SGFuZGxlVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZSA9IE1hdGguZmxvb3IoKCh0aGlzLnN0YXJ0eSAtIHBhcnNlSW50KHRvdWNob2JqLmNsaWVudFksIDEwKSkgKiAxMDApIC8gKHRoaXMuYmFySGVpZ2h0KSkgICsgdGhpcy5zdGFydEhhbmRsZVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQsIGhhbmRsZVZhbHVlKTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hFbmQoZXZlbnQsIGluZGV4PzpudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIHRoaXMub25TbGlkZUVuZC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWVzOiB0aGlzLnZhbHVlc30pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLm9uU2xpZGVFbmQuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnZhbHVlfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sICdwLXNsaWRlci1hbmltYXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zbGlkZXJIYW5kbGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEb21EYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZShldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNsaWRlckhhbmRsZUNsaWNrID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25IYW5kbGVLZXlkb3duKGV2ZW50LCBoYW5kbGVJbmRleD86bnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09IDM4IHx8IGV2ZW50LndoaWNoID09IDM5KSB7XG4gICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIDEsIGhhbmRsZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChldmVudC53aGljaCA9PSAzNyB8fCBldmVudC53aGljaCA9PSA0MCkge1xuICAgICAgICAgICAgdGhpcy5zcGluKGV2ZW50LCAtMSwgaGFuZGxlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3BpbihldmVudCwgZGlyOiBudW1iZXIsIGhhbmRsZUluZGV4PzpudW1iZXIpIHtcbiAgICAgICAgbGV0IHN0ZXAgPSAodGhpcy5zdGVwIHx8IDEpICogZGlyO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUluZGV4ID0gaGFuZGxlSW5kZXg7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdICsgc3RlcCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudmFsdWUgKyBzdGVwKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBsZXQgaGFuZGxlVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZUhhbmRsZVZhbHVlKGV2ZW50KTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21IYW5kbGUoZXZlbnQsIGhhbmRsZVZhbHVlKTtcbiAgICB9XG5cbiAgICBiaW5kRHJhZ0xpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnbW91c2Vtb3ZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5tb3VzZXVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGRvY3VtZW50VGFyZ2V0LCAnbW91c2V1cCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNsaWRlRW5kLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZXM6IHRoaXMudmFsdWVzfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2xpZGVFbmQuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnZhbHVlfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLCAncC1zbGlkZXItYW5pbWF0ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERyYWdMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kcmFnTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vdXNldXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbHVlRnJvbUhhbmRsZShldmVudDogRXZlbnQsIGhhbmRsZVZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVDbGljayA9IGZhbHNlO1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbUhhbmRsZShoYW5kbGVWYWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0ZXBDaGFuZ2UobmV3VmFsdWUsIHRoaXMudmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzW3RoaXMuaGFuZGxlSW5kZXhdID0gaGFuZGxlVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RlcENoYW5nZShuZXdWYWx1ZSwgdGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gaGFuZGxlVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTdGVwQ2hhbmdlKG5ld1ZhbHVlOiBudW1iZXIsIG9sZFZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGRpZmYgPSAobmV3VmFsdWUgLSBvbGRWYWx1ZSk7XG4gICAgICAgIGxldCB2YWwgPSBvbGRWYWx1ZTtcblxuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICAgIHZhbCA9IG9sZFZhbHVlICsgTWF0aC5jZWlsKG5ld1ZhbHVlIC8gdGhpcy5zdGVwIC0gb2xkVmFsdWUgLyB0aGlzLnN0ZXApICogdGhpcy5zdGVwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICB2YWwgPSBvbGRWYWx1ZSArIE1hdGguZmxvb3IobmV3VmFsdWUgLyB0aGlzLnN0ZXAgLSBvbGRWYWx1ZSAvIHRoaXMuc3RlcCkgKiB0aGlzLnN0ZXA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgICAgIHRoaXMudXBkYXRlSGFuZGxlVmFsdWUoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKVxuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXx8WzAsMF07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZXx8MDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCByYW5nZVN0YXJ0TGVmdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gJ2F1dG8nIDogdGhpcy5oYW5kbGVWYWx1ZXNbMF0gKyAnJSc7XG4gICAgfVxuXG4gICAgZ2V0IHJhbmdlU3RhcnRCb3R0b20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmVydGljYWwoKSA/IHRoaXMuaGFuZGxlVmFsdWVzWzBdICsgJyUnIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIGdldCByYW5nZUVuZExlZnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmVydGljYWwoKSA/ICdhdXRvJyA6IHRoaXMuaGFuZGxlVmFsdWVzWzFdICsgJyUnO1xuICAgIH1cblxuICAgIGdldCByYW5nZUVuZEJvdHRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbCgpID8gdGhpcy5oYW5kbGVWYWx1ZXNbMV0gKyAnJScgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgaXNWZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgdXBkYXRlRG9tRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuaW5pdFggPSByZWN0LmxlZnQgKyBEb21IYW5kbGVyLmdldFdpbmRvd1Njcm9sbExlZnQoKTtcbiAgICAgICAgdGhpcy5pbml0WSA9IHJlY3QudG9wICsgRG9tSGFuZGxlci5nZXRXaW5kb3dTY3JvbGxUb3AoKTtcbiAgICAgICAgdGhpcy5iYXJXaWR0aCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5iYXJIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ub2Zmc2V0SGVpZ2h0O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZUhhbmRsZVZhbHVlKGV2ZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJylcbiAgICAgICAgICAgIHJldHVybiAoKGV2ZW50LnBhZ2VYIC0gdGhpcy5pbml0WCkgKiAxMDApIC8gKHRoaXMuYmFyV2lkdGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4oKCh0aGlzLmluaXRZICsgdGhpcy5iYXJIZWlnaHQpIC0gZXZlbnQucGFnZVkpICogMTAwKSAvICh0aGlzLmJhckhlaWdodCk7XG4gICAgfVxuXG4gICAgdXBkYXRlSGFuZGxlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1swXSA9ICh0aGlzLnZhbHVlc1swXSA8IHRoaXMubWluID8gMCA6IHRoaXMudmFsdWVzWzBdIC0gdGhpcy5taW4pICogMTAwIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZXNbMV0gPSAodGhpcy52YWx1ZXNbMV0gPiB0aGlzLm1heCA/IDEwMCA6IHRoaXMudmFsdWVzWzFdIC0gdGhpcy5taW4pICogMTAwIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPCB0aGlzLm1pbilcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUgPiB0aGlzLm1heClcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlID0gMTAwO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUgPSAodGhpcy52YWx1ZSAtIHRoaXMubWluKSAqIDEwMCAvICh0aGlzLm1heCAtIHRoaXMubWluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZhbHVlKHZhbDogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB2YWw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhbmRsZUluZGV4ID09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlc1swXSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gdGhpcy52YWx1ZXNbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnZhbHVlc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZXNbMF0gPSB0aGlzLmhhbmRsZVZhbHVlc1sxXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlckhhbmRsZVN0YXJ0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzWzFdID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA8IHRoaXMudmFsdWVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy52YWx1ZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVzWzFdID0gdGhpcy5oYW5kbGVWYWx1ZXNbMF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXJIYW5kbGVFbmQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZhbHVlc1t0aGlzLmhhbmRsZUluZGV4XSA9IHRoaXMuZ2V0Tm9ybWFsaXplZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuc2xpY2UoKTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlcyk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe2V2ZW50OiBldmVudCwgdmFsdWVzOiB0aGlzLnZhbHVlc30pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbCA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWx1ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2YWwgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWUgPSAxMDA7XG4gICAgICAgICAgICB9XG5cblx0XHRcdHRoaXMudmFsdWUgPSB0aGlzLmdldE5vcm1hbGl6ZWRWYWx1ZSh2YWwpO1xuXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe2V2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWV9KTtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVySGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlRnJvbUhhbmRsZShoYW5kbGVWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAqIChoYW5kbGVWYWx1ZSAvIDEwMCkgKyB0aGlzLm1pbjtcbiAgICB9XG5cblx0Z2V0RGVjaW1hbHNDb3VudCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRpZiAodmFsdWUgJiYgTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKVxuXHRcdFx0cmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aCB8fCAwO1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Z2V0Tm9ybWFsaXplZFZhbHVlKHZhbDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRsZXQgZGVjaW1hbHNDb3VudCA9IHRoaXMuZ2V0RGVjaW1hbHNDb3VudCh0aGlzLnN0ZXApO1xuXHRcdGlmIChkZWNpbWFsc0NvdW50ID4gMCkge1xuXHRcdFx0cmV0dXJuICt2YWwudG9GaXhlZChkZWNpbWFsc0NvdW50KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuXHRcdH1cblx0fVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRHJhZ0xpc3RlbmVycygpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU2xpZGVyXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTbGlkZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/speeddial/primeng-speeddial.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/speeddial/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/speeddial/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zcGVlZGRpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc3BlZWRkaWFsL3ByaW1lbmctc3BlZWRkaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/speeddial/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/speeddial/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/speeddial/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './speeddial';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGVlZGRpYWwvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3BlZWRkaWFsJztcbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/speeddial/speeddial.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/speeddial/speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/speeddial/speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,332 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, EventEmitter, ViewChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { ButtonModule } from 'primeng/button';
+import { RippleModule } from 'primeng/ripple';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+import { RouterModule } from '@angular/router';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/button";
+import * as i4 from "primeng/tooltip";
+import * as i5 from "@angular/router";
+export class SpeedDial {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.direction = 'up';
+        this.transitionDelay = 30;
+        this.type = 'linear';
+        this.radius = 0;
+        this.mask = false;
+        this.disabled = false;
+        this.hideOnClickOutside = true;
+        this.showIcon = 'pi pi-plus';
+        this.rotateAnimation = true;
+        this.onVisibleChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.isItemClicked = false;
+        this._visible = false;
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible) {
+            this.bindDocumentClickListener();
+        }
+        else {
+            this.unbindDocumentClickListener();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.type !== 'linear') {
+            const button = DomHandler.findSingle(this.container.nativeElement, '.p-speeddial-button');
+            const firstItem = DomHandler.findSingle(this.list.nativeElement, '.p-speeddial-item');
+            if (button && firstItem) {
+                const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);
+                const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);
+                this.list.nativeElement.style.setProperty('--item-diff-x', `${wDiff / 2}px`);
+                this.list.nativeElement.style.setProperty('--item-diff-y', `${hDiff / 2}px`);
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'button':
+                    this.buttonTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    show() {
+        this.onVisibleChange.emit(true);
+        this.visibleChange.emit(true);
+        this._visible = true;
+        this.onShow.emit();
+        this.bindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    hide() {
+        this.onVisibleChange.emit(false);
+        this.visibleChange.emit(false);
+        this._visible = false;
+        this.onHide.emit();
+        this.unbindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    onButtonClick(event) {
+        this.visible ? this.hide() : this.show();
+        this.onClick.emit(event);
+        this.isItemClicked = true;
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+        this.hide();
+        this.isItemClicked = true;
+    }
+    calculatePointStyle(index) {
+        const type = this.type;
+        if (type !== 'linear') {
+            const length = this.model.length;
+            const radius = this.radius || (length * 20);
+            if (type === 'circle') {
+                const step = 2 * Math.PI / length;
+                return {
+                    left: `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`,
+                    top: `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`,
+                };
+            }
+            else if (type === 'semi-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (length - 1);
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down') {
+                    return { left: x, top: y };
+                }
+                else if (direction === 'left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'right') {
+                    return { left: y, top: x };
+                }
+            }
+            else if (type === 'quarter-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (2 * (length - 1));
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up-left') {
+                    return { right: x, bottom: y };
+                }
+                else if (direction === 'up-right') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down-left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'down-right') {
+                    return { left: y, top: x };
+                }
+            }
+        }
+        return {};
+    }
+    calculateTransitionDelay(index) {
+        const length = this.model.length;
+        return (this.visible ? index : length - index - 1) * this.transitionDelay;
+    }
+    containerClass() {
+        return {
+            ['p-speeddial p-component' + ` p-speeddial-${this.type}`]: true,
+            [`p-speeddial-direction-${this.direction}`]: this.type !== 'circle',
+            'p-speeddial-opened': this.visible,
+            'p-disabled': this.disabled
+        };
+    }
+    buttonClass() {
+        return {
+            'p-speeddial-button p-button-rounded': true,
+            'p-speeddial-rotate': this.rotateAnimation && !this.hideIcon,
+            [this.buttonClassName]: true
+        };
+    }
+    get buttonIconClass() {
+        return ((!this.visible && this.showIcon) || !this.hideIcon) ? this.showIcon : this.hideIcon;
+    }
+    getItemStyle(index) {
+        const transitionDelay = this.calculateTransitionDelay(index);
+        const pointStyle = this.calculatePointStyle(index);
+        return {
+            transitionDelay: `${transitionDelay}ms`,
+            ...pointStyle
+        };
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.disabled && !item.disabled;
+    }
+    isOutsideClicked(event) {
+        return this.container && !(this.container.nativeElement.isSameNode(event.target) || this.container.nativeElement.contains(event.target) || this.isItemClicked);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.hideOnClickOutside) {
+            this.documentClickListener = (event) => {
+                if (this.visible && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.isItemClicked = false;
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+SpeedDial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SpeedDial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SpeedDial, selector: "p-speedDial", inputs: { id: "id", model: "model", visible: "visible", style: "style", className: "className", direction: "direction", transitionDelay: "transitionDelay", type: "type", radius: "radius", mask: "mask", disabled: "disabled", hideOnClickOutside: "hideOnClickOutside", buttonStyle: "buttonStyle", buttonClassName: "buttonClassName", maskStyle: "maskStyle", maskClassName: "maskClassName", showIcon: "showIcon", hideIcon: "hideIcon", rotateAnimation: "rotateAnimation" }, outputs: { onVisibleChange: "onVisibleChange", visibleChange: "visibleChange", onClick: "onClick", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, isInline: true, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-speedDial', template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], className: [{
+                type: Input
+            }], direction: [{
+                type: Input
+            }], transitionDelay: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], radius: [{
+                type: Input
+            }], mask: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], hideOnClickOutside: [{
+                type: Input
+            }], buttonStyle: [{
+                type: Input
+            }], buttonClassName: [{
+                type: Input
+            }], maskStyle: [{
+                type: Input
+            }], maskClassName: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], hideIcon: [{
+                type: Input
+            }], rotateAnimation: [{
+                type: Input
+            }], onVisibleChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], list: [{
+                type: ViewChild,
+                args: ['list']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class SpeedDialModule {
+}
+SpeedDialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpeedDialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, declarations: [SpeedDial], imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule] });
+SpeedDialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, imports: [[CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], SharedModule, ButtonModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule],
+                    exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule],
+                    declarations: [SpeedDial]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWRkaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NwZWVkZGlhbC9zcGVlZGRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLHVCQUF1QixFQUFFLGlCQUFpQixFQUFpQyxlQUFlLEVBQWEsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUNwUSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQVksTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFvQy9DLE1BQU0sT0FBTyxTQUFTO0lBNEVsQixZQUFvQixFQUFjLEVBQVMsRUFBcUI7UUFBNUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBeEV2RCxVQUFLLEdBQVUsSUFBSSxDQUFDO1FBb0JwQixjQUFTLEdBQVksSUFBSSxDQUFBO1FBRXpCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBRTdCLFNBQUksR0FBWSxRQUFRLENBQUE7UUFFeEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUVuQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBVW5D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LE1BQU0sT0FBTyxlQUFlOzs0R0FBZixlQUFlOzZHQUFmLGVBQWUsaUJBM1FmLFNBQVMsYUF1UVIsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksYUF2UXRFLFNBQVMsRUF3UUcsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWTs2R0FHbkUsZUFBZSxZQUpmLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxFQUMzRCxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZOzJGQUduRSxlQUFlO2tCQUwzQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7b0JBQ2hGLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7b0JBQzdFLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBUZW1wbGF0ZVJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSwgUHJpbWVUZW1wbGF0ZSwgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3BlZWREaWFsJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW2F0dHIuaWRdPVwiaWRcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCIgW2NsYXNzXT1cImNsYXNzTmFtZVwiIFtuZ1N0eWxlXT1cInN0eWxlXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHBSaXBwbGUgcEJ1dHRvbiBbc3R5bGVdPVwiYnV0dG9uU3R5bGVcIiBbaWNvbl09XCJidXR0b25JY29uQ2xhc3NcIiBbbmdDbGFzc109XCJidXR0b25DbGFzcygpXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidXR0b25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHVsICNsaXN0IGNsYXNzPVwicC1zcGVlZGRpYWwtbGlzdFwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCIgW25nU3R5bGVdPVwiZ2V0SXRlbVN0eWxlKGkpXCIgY2xhc3M9XCJwLXNwZWVkZGlhbC1pdGVtXCIgcFRvb2x0aXAgW3Rvb2x0aXBPcHRpb25zXT1cIml0ZW0udG9vbHRpcE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpc0NsaWNrYWJsZVJvdXRlckxpbmsoaXRlbSk7IGVsc2UgZWxzZUJsb2NrXCIgcFJpcHBsZSBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiIGNsYXNzPVwicC1zcGVlZGRpYWwtYWN0aW9uXCIgW25nQ2xhc3NdPVwieydwLWRpc2FibGVkJzppdGVtLmRpc2FibGVkfVwiICByb2xlPVwibWVudWl0ZW1cIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwiaXRlbS5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCIgKGtleWRvd24uZW50ZXIpPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci5pZF09XCJpdGVtLmlkXCIgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZCB8fCByZWFkb25seSA/IG51bGwgOiAoaXRlbS50YWJpbmRleCA/IGl0ZW0udGFiaW5kZXggOiAnMCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJpdGVtLmZyYWdtZW50XCIgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJpdGVtLnNraXBMb2NhdGlvbkNoYW5nZVwiIFtyZXBsYWNlVXJsXT1cIml0ZW0ucmVwbGFjZVVybFwiIFtzdGF0ZV09XCJpdGVtLnN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXNwZWVkZGlhbC1hY3Rpb24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2F0dHIuaHJlZl09XCJpdGVtLnVybHx8bnVsbFwiIGNsYXNzPVwicC1zcGVlZGRpYWwtYWN0aW9uXCIgcm9sZT1cIm1lbnVpdGVtXCIgcFJpcHBsZSAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtuZ0NsYXNzXT1cInsncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSwgaSlcIiBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci5pZF09XCJpdGVtLmlkXCIgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZHx8KGkgIT09IGFjdGl2ZUluZGV4ICYmIHJlYWRvbmx5KSA/IG51bGwgOiAoaXRlbS50YWJpbmRleCA/IGl0ZW0udGFiaW5kZXggOiAnMCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXNwZWVkZGlhbC1hY3Rpb24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1hc2sgJiYgdmlzaWJsZVwiIFtuZ0NsYXNzXT1cInsncC1zcGVlZGRpYWwtbWFzayc6IHRydWUsICdwLXNwZWVkZGlhbC1tYXNrLXZpc2libGUnOiB2aXNpYmxlfVwiIFtjbGFzc109XCJtYXNrQ2xhc3NOYW1lXCIgW25nU3R5bGVdPVwibWFza1N0eWxlXCI+PC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3NwZWVkZGlhbC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTcGVlZERpYWwgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1vZGVsOiBhbnlbXSA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBnZXQgdmlzaWJsZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG4gICAgc2V0IHZpc2libGUodmFsdWU6YW55KSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGlyZWN0aW9uOiBzdHJpbmcgPSAgJ3VwJ1xuXG4gICAgQElucHV0KCkgdHJhbnNpdGlvbkRlbGF5OiBudW1iZXIgPSAzMDtcblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICAnbGluZWFyJ1xuXG4gICAgQElucHV0KCkgcmFkaXVzOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbWFzazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZGVPbkNsaWNrT3V0c2lkZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBidXR0b25TdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgYnV0dG9uQ2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtYXNrU3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIG1hc2tDbGFzc05hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNob3dJY29uOiBzdHJpbmcgPSAncGkgcGktcGx1cyc7XG5cbiAgICBASW5wdXQoKSBoaWRlSWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcm90YXRlQW5pbWF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSBvblZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2xpc3QnKSBsaXN0OiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgYnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBpc0l0ZW1DbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gJ2xpbmVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnLnAtc3BlZWRkaWFsLWJ1dHRvbicpO1xuICAgICAgICAgICAgY29uc3QgZmlyc3RJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LCAnLnAtc3BlZWRkaWFsLWl0ZW0nKTtcblxuICAgICAgICAgICAgaWYgKGJ1dHRvbiAmJiBmaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3RGlmZiA9IE1hdGguYWJzKGJ1dHRvbi5vZmZzZXRXaWR0aCAtIGZpcnN0SXRlbS5vZmZzZXRXaWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaERpZmYgPSBNYXRoLmFicyhidXR0b24ub2Zmc2V0SGVpZ2h0IC0gZmlyc3RJdGVtLm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taXRlbS1kaWZmLXgnLCBgJHt3RGlmZiAvIDJ9cHhgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pdGVtLWRpZmYteScsIGAke2hEaWZmIC8gMn1weGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KCk7XG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub25WaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkhpZGUuZW1pdCgpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coKTtcbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpXG4gICAgICAgIHRoaXMuaXNJdGVtQ2xpY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZSwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoeyBvcmlnaW5hbEV2ZW50OiBlLCBpdGVtIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgICAgdGhpcy5pc0l0ZW1DbGlja2VkID0gdHJ1ZTtcbiAgICB9XG5cblxuICAgIGNhbGN1bGF0ZVBvaW50U3R5bGUoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gJ2xpbmVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMubW9kZWwubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5yYWRpdXMgfHwgKGxlbmd0aCAqIDIwKTtcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcCA9IDIgKiBNYXRoLlBJIC8gbGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogYGNhbGMoJHtyYWRpdXMgKiBNYXRoLmNvcyhzdGVwICogaW5kZXgpfXB4ICsgdmFyKC0taXRlbS1kaWZmLXgsIDBweCkpYCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBgY2FsYygke3JhZGl1cyAqIE1hdGguc2luKHN0ZXAgKiBpbmRleCl9cHggKyB2YXIoLS1pdGVtLWRpZmYteSwgMHB4KSlgLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzZW1pLWNpcmNsZScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gTWF0aC5QSSAvIChsZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gYGNhbGMoJHtyYWRpdXMgKiBNYXRoLmNvcyhzdGVwICogaW5kZXgpfXB4ICsgdmFyKC0taXRlbS1kaWZmLXgsIDBweCkpYDtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gYGNhbGMoJHtyYWRpdXMgKiBNYXRoLnNpbihzdGVwICogaW5kZXgpfXB4ICsgdmFyKC0taXRlbS1kaWZmLXksIDBweCkpYDtcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxlZnQ6IHgsIGJvdHRvbTogeSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBsZWZ0OiB4LCB0b3A6IHkgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcmlnaHQ6IHksIHRvcDogeCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbGVmdDogeSwgdG9wOiB4IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ3F1YXJ0ZXItY2lyY2xlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSBNYXRoLlBJIC8gKDIgKiAobGVuZ3RoIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBgY2FsYygke3JhZGl1cyAqIE1hdGguY29zKHN0ZXAgKiBpbmRleCl9cHggKyB2YXIoLS1pdGVtLWRpZmYteCwgMHB4KSlgO1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBgY2FsYygke3JhZGl1cyAqIE1hdGguc2luKHN0ZXAgKiBpbmRleCl9cHggKyB2YXIoLS1pdGVtLWRpZmYteSwgMHB4KSlgO1xuICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cC1sZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyByaWdodDogeCwgYm90dG9tOiB5IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwLXJpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBsZWZ0OiB4LCBib3R0b206IHkgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bi1sZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyByaWdodDogeSwgdG9wOiB4IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24tcmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxlZnQ6IHksIHRvcDogeCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVUcmFuc2l0aW9uRGVsYXkoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5tb2RlbC5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLnZpc2libGUgPyBpbmRleCA6IGxlbmd0aCAtIGluZGV4IC0gMSkgKiB0aGlzLnRyYW5zaXRpb25EZWxheTtcbiAgICB9XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFsncC1zcGVlZGRpYWwgcC1jb21wb25lbnQnICsgYCBwLXNwZWVkZGlhbC0ke3RoaXMudHlwZX1gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgcC1zcGVlZGRpYWwtZGlyZWN0aW9uLSR7dGhpcy5kaXJlY3Rpb259YF06IHRoaXMudHlwZSAhPT0gJ2NpcmNsZScsXG4gICAgICAgICAgICAncC1zcGVlZGRpYWwtb3BlbmVkJzogdGhpcy52aXNpYmxlLFxuICAgICAgICAgICAgJ3AtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYnV0dG9uQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1zcGVlZGRpYWwtYnV0dG9uIHAtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxuICAgICAgICAgICAgJ3Atc3BlZWRkaWFsLXJvdGF0ZSc6IHRoaXMucm90YXRlQW5pbWF0aW9uICYmICF0aGlzLmhpZGVJY29uLFxuICAgICAgICAgICAgW3RoaXMuYnV0dG9uQ2xhc3NOYW1lXTogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBidXR0b25JY29uQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiAoKCF0aGlzLnZpc2libGUgJiYgdGhpcy5zaG93SWNvbikgfHwgIXRoaXMuaGlkZUljb24pID8gdGhpcy5zaG93SWNvbiA6IHRoaXMuaGlkZUljb247XG4gICAgfVxuXG4gICAgZ2V0SXRlbVN0eWxlKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IHRyYW5zaXRpb25EZWxheSA9IHRoaXMuY2FsY3VsYXRlVHJhbnNpdGlvbkRlbGF5KGluZGV4KTtcbiAgICAgICAgY29uc3QgcG9pbnRTdHlsZSA9IHRoaXMuY2FsY3VsYXRlUG9pbnRTdHlsZShpbmRleCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6IGAke3RyYW5zaXRpb25EZWxheX1tc2AsXG4gICAgICAgICAgICAuLi5wb2ludFN0eWxlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNDbGlja2FibGVSb3V0ZXJMaW5rKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnJvdXRlckxpbmsgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIWl0ZW0uZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgaXNPdXRzaWRlQ2xpY2tlZChldmVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIgJiYgISh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5pc0l0ZW1DbGlja2VkKTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyICYmIHRoaXMuaGlkZU9uQ2xpY2tPdXRzaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5pc091dHNpZGVDbGlja2VkKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzSXRlbUNsaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Nb2R1bGUsIFJpcHBsZU1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU3BlZWREaWFsLCBTaGFyZWRNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgUm91dGVyTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTcGVlZERpYWxdXG59KVxuZXhwb3J0IGNsYXNzIFNwZWVkRGlhbE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/spinner/primeng-spinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/spinner/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/spinner/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3NwaW5uZXIvcHJpbWVuZy1zcGlubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/spinner/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/spinner/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/spinner/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './spinner';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGlubmVyL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NwaW5uZXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/spinner/spinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/spinner/spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/spinner/spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,331 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const SPINNER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Spinner),
+    multi: true
+};
+export class Spinner {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.onChange = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this._step = 1;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.keyPattern = /[0-9\+\-]/;
+        this.negativeSeparator = '-';
+    }
+    get step() {
+        return this._step;
+    }
+    set step(val) {
+        this._step = val;
+        if (this._step != null) {
+            let tokens = this.step.toString().split(/[,]|[.]/);
+            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;
+        }
+    }
+    ngOnInit() {
+        if (this.formatInput) {
+            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);
+            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);
+            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');
+            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {
+                console.warn("thousandSeparator and decimalSeparator cannot have the same value.");
+            }
+        }
+    }
+    repeat(event, interval, dir) {
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue;
+        let precision = this.getPrecision();
+        if (this.value)
+            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;
+        else
+            currentValue = 0;
+        if (precision)
+            this.value = parseFloat(this.toFixed(currentValue + step, precision));
+        else
+            this.value = currentValue + step;
+        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {
+            this.value = currentValue;
+        }
+        if (this.min !== undefined && this.value < this.min) {
+            this.value = this.min;
+        }
+        if (this.max !== undefined && this.value > this.max) {
+            this.value = this.max;
+        }
+        this.formatValue();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+    }
+    getPrecision() {
+        return this.precision === undefined ? this.calculatedPrecision : this.precision;
+    }
+    toFixed(value, precision) {
+        let power = Math.pow(10, precision || 0);
+        return String(Math.round(value * power) / power);
+    }
+    onUpButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, 1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onUpButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onUpButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, -1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onDownButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onInputKeydown(event) {
+        if (event.which == 38) {
+            this.spin(event, 1);
+            event.preventDefault();
+        }
+        else if (event.which == 40) {
+            this.spin(event, -1);
+            event.preventDefault();
+        }
+    }
+    onInputChange(event) {
+        this.onChange.emit(event);
+    }
+    onInput(event) {
+        this.value = this.parseValue(event.target.value);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.formatValue();
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    parseValue(val) {
+        let value;
+        let precision = this.getPrecision();
+        if (val.trim() === '') {
+            value = null;
+        }
+        else {
+            if (this.formatInput) {
+                val = val.replace(this.thousandRegExp, '');
+            }
+            if (precision) {
+                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');
+                value = parseFloat(val);
+            }
+            else {
+                value = parseInt(val, 10);
+            }
+            if (!isNaN(value)) {
+                if (this.max !== null && value > this.max) {
+                    value = this.max;
+                }
+                if (this.min !== null && value < this.min) {
+                    value = this.min;
+                }
+            }
+            else {
+                value = null;
+            }
+        }
+        return value;
+    }
+    formatValue() {
+        let value = this.value;
+        let precision = this.getPrecision();
+        if (value != null) {
+            if (this.formatInput) {
+                value = value.toLocaleString(undefined, { maximumFractionDigits: 20 });
+                if (this.decimalSeparator && this.thousandSeparator) {
+                    value = value.split(this.localeDecimalSeparator);
+                    if (precision && value[1]) {
+                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];
+                    }
+                    if (this.thousandSeparator && value[0].length > 3) {
+                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);
+                    }
+                    value = value.join('');
+                }
+            }
+            this.formattedValue = value.toString();
+        }
+        else {
+            this.formattedValue = null;
+        }
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.formattedValue;
+        }
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.formatValue();
+        this.updateFilledState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    updateFilledState() {
+        this.filled = (this.value !== undefined && this.value != null);
+    }
+}
+Spinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Spinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Spinner, selector: "p-spinner", inputs: { min: "min", max: "max", maxlength: "maxlength", size: "size", placeholder: "placeholder", inputId: "inputId", disabled: "disabled", readonly: "readonly", tabindex: "tabindex", required: "required", name: "name", ariaLabelledBy: "ariaLabelledBy", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", formatInput: "formatInput", decimalSeparator: "decimalSeparator", thousandSeparator: "thousandSeparator", precision: "precision", step: "step" }, outputs: { onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.ui-inputwrapper-filled": "filled", "class.ui-inputwrapper-focus": "focus" }, classAttribute: "p-element" }, providers: [SPINNER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }], ngImport: i0, template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, isInline: true, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-spinner', template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, host: {
+                        'class': 'p-element',
+                        '[class.ui-inputwrapper-filled]': 'filled',
+                        '[class.ui-inputwrapper-focus]': 'focus'
+                    }, providers: [SPINNER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onChange: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], formatInput: [{
+                type: Input
+            }], decimalSeparator: [{
+                type: Input
+            }], thousandSeparator: [{
+                type: Input
+            }], precision: [{
+                type: Input
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield']
+            }], step: [{
+                type: Input
+            }] } });
+export class SpinnerModule {
+}
+SpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, declarations: [Spinner], imports: [CommonModule, InputTextModule], exports: [Spinner] });
+SpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [Spinner],
+                    declarations: [Spinner]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQW1CLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQW1CLHVCQUF1QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9LLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLGlCQUFpQixFQUF1QixNQUFNLGdCQUFnQixDQUFDOzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQVE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUE4QkYsTUFBTSxPQUFPLE9BQU87SUFzRmhCLFlBQW1CLEVBQWMsRUFBUyxFQUFxQjtRQUE1QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFwRnJELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBd0N6RCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBSWxCLGtCQUFhLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRW5DLG1CQUFjLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXBDLGVBQVUsR0FBVyxXQUFXLENBQUM7UUFRMUIsc0JBQWlCLEdBQUcs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QyxPQUFPLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLENvbXBvbmVudCxFbGVtZW50UmVmLE9uSW5pdCxJbnB1dCxPdXRwdXQsRXZlbnRFbWl0dGVyLGZvcndhcmRSZWYsVmlld0NoaWxkLENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgU1BJTk5FUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNwaW5uZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3Bpbm5lcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1aS1zcGlubmVyIHVpLXdpZGdldCB1aS1jb3JuZXItYWxsXCI+XG4gICAgICAgICAgICA8aW5wdXQgI2lucHV0ZmllbGQgdHlwZT1cInRleHRcIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgW3ZhbHVlXT1cImZvcm1hdHRlZFZhbHVlfHxudWxsXCIgW2F0dHIubmFtZV09XCJuYW1lXCIgW2F0dHIuYXJpYS12YWx1bWluXT1cIm1pblwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCIgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemVcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duKCRldmVudClcIiAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImlucHV0U3R5bGVcIiBbY2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCIgW25nQ2xhc3NdPVwiJ3VpLXNwaW5uZXItaW5wdXQgdWktaW5wdXR0ZXh0IHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwnXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItdXAgdWktY29ybmVyLXRyIHVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCc6dHJ1ZSwndWktc3RhdGUtZGlzYWJsZWQnOmRpc2FibGVkfVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZHx8cmVhZG9ubHlcIiB0YWJpbmRleD1cIi0xXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uVXBCdXR0b25Nb3VzZWxlYXZlKCRldmVudClcIiAobW91c2Vkb3duKT1cIm9uVXBCdXR0b25Nb3VzZWRvd24oJGV2ZW50KVwiIChtb3VzZXVwKT1cIm9uVXBCdXR0b25Nb3VzZXVwKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVpLXNwaW5uZXItYnV0dG9uLWljb24gcGkgcGktY2FyZXQtdXAgdWktY2xpY2thYmxlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJ7J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItZG93biB1aS1jb3JuZXItYnIgdWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0Jzp0cnVlLCd1aS1zdGF0ZS1kaXNhYmxlZCc6ZGlzYWJsZWR9XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkfHxyZWFkb25seVwiIHRhYmluZGV4PVwiLTFcIiBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Eb3duQnV0dG9uTW91c2VsZWF2ZSgkZXZlbnQpXCIgKG1vdXNlZG93bik9XCJvbkRvd25CdXR0b25Nb3VzZWRvd24oJGV2ZW50KVwiIChtb3VzZXVwKT1cIm9uRG93bkJ1dHRvbk1vdXNldXAoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidWktc3Bpbm5lci1idXR0b24taWNvbiBwaSBwaS1jYXJldC1kb3duIHVpLWNsaWNrYWJsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnLFxuICAgICAgICAnW2NsYXNzLnVpLWlucHV0d3JhcHBlci1maWxsZWRdJzogJ2ZpbGxlZCcsXG4gICAgICAgICdbY2xhc3MudWktaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICdmb2N1cydcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1NQSU5ORVJfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3Bpbm5lci5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGlubmVyIGltcGxlbWVudHMgT25Jbml0LENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHNpemU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGlucHV0U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZm9ybWF0SW5wdXQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJlY2lzaW9uOiBudW1iZXI7XG5cbiAgICB2YWx1ZTogYW55O1xuXG4gICAgX3N0ZXA6IG51bWJlciA9IDE7XG5cbiAgICBmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nO1xuXG4gICAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIG9uTW9kZWxUb3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAga2V5UGF0dGVybjogUmVnRXhwID0gL1swLTlcXCtcXC1dLztcblxuICAgIHB1YmxpYyB0aW1lcjogYW55O1xuXG4gICAgcHVibGljIGZvY3VzOiBib29sZWFuO1xuXG4gICAgcHVibGljIGZpbGxlZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBuZWdhdGl2ZVNlcGFyYXRvciA9ICctJztcblxuICAgIGxvY2FsZURlY2ltYWxTZXBhcmF0b3I6IHN0cmluZztcblxuICAgIGxvY2FsZVRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmc7XG5cbiAgICB0aG91c2FuZFJlZ0V4cDogUmVnRXhwO1xuXG4gICAgY2FsY3VsYXRlZFByZWNpc2lvbjogbnVtYmVyO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRmaWVsZCcpIGlucHV0ZmllbGRWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcDtcbiAgICB9XG4gICAgc2V0IHN0ZXAodmFsOm51bWJlcikge1xuICAgICAgICB0aGlzLl9zdGVwID0gdmFsO1xuXG4gICAgICAgIGlmICh0aGlzLl9zdGVwICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCB0b2tlbnMgPSB0aGlzLnN0ZXAudG9TdHJpbmcoKS5zcGxpdCgvWyxdfFsuXS8pO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkUHJlY2lzaW9uID0gdG9rZW5zWzFdID8gdG9rZW5zWzFdLmxlbmd0aCA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtYXRJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGVEZWNpbWFsU2VwYXJhdG9yID0gKDEuMSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHJpbmcoMSwgMik7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZVRob3VzYW5kU2VwYXJhdG9yID0gKDEwMDApLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyaW5nKDEsIDIpO1xuICAgICAgICAgICAgdGhpcy50aG91c2FuZFJlZ0V4cCA9IG5ldyBSZWdFeHAoYFske3RoaXMudGhvdXNhbmRTZXBhcmF0b3IgfHwgdGhpcy5sb2NhbGVUaG91c2FuZFNlcGFyYXRvcn1dYCwgJ2dpbScpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWNpbWFsU2VwYXJhdG9yICYmIHRoaXMudGhvdXNhbmRTZXBhcmF0b3IgJiYgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID09PSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwidGhvdXNhbmRTZXBhcmF0b3IgYW5kIGRlY2ltYWxTZXBhcmF0b3IgY2Fubm90IGhhdmUgdGhlIHNhbWUgdmFsdWUuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVwZWF0KGV2ZW50OiBFdmVudCwgaW50ZXJ2YWw6IG51bWJlciwgZGlyOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGkgPSBpbnRlcnZhbHx8NTAwO1xuXG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgNDAsIGRpcik7XG4gICAgICAgIH0sIGkpO1xuXG4gICAgICAgIHRoaXMuc3BpbihldmVudCwgZGlyKTtcbiAgICB9XG5cbiAgICBzcGluKGV2ZW50OiBFdmVudCwgZGlyOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHN0ZXAgPSB0aGlzLnN0ZXAgKiBkaXI7XG4gICAgICAgIGxldCBjdXJyZW50VmFsdWU6IG51bWJlcjtcbiAgICAgICAgbGV0IHByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUpXG4gICAgICAgICAgICBjdXJyZW50VmFsdWUgPSAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKSA/IHRoaXMucGFyc2VWYWx1ZSh0aGlzLnZhbHVlKSA6IHRoaXMudmFsdWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IDA7XG5cbiAgICAgICAgaWYgKHByZWNpc2lvbilcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMudG9GaXhlZChjdXJyZW50VmFsdWUgKyBzdGVwLCBwcmVjaXNpb24pKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGN1cnJlbnRWYWx1ZSArIHN0ZXA7XG5cbiAgICAgICAgaWYgKHRoaXMubWF4bGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gY3VycmVudFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXggIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9ybWF0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldFByZWNpc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyB0aGlzLmNhbGN1bGF0ZWRQcmVjaXNpb24gOiB0aGlzLnByZWNpc2lvbjtcbiAgICB9XG5cbiAgICB0b0ZpeGVkKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKSB7XG4gICAgICAgIGxldCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb258fDApO1xuICAgICAgICByZXR1cm4gU3RyaW5nKE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcik7XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbk1vdXNlZG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIG51bGwsIDEpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBCdXR0b25Nb3VzZXVwKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25VcEJ1dHRvbk1vdXNlbGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25CdXR0b25Nb3VzZWRvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dGZpZWxkVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVwZWF0KGV2ZW50LCBudWxsLCAtMSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Eb3duQnV0dG9uTW91c2V1cChldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRG93bkJ1dHRvbk1vdXNlbGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT0gMzgpIHtcbiAgICAgICAgICAgIHRoaXMuc3BpbihldmVudCwgMSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50LndoaWNoID09IDQwKSB7XG4gICAgICAgICAgICB0aGlzLnNwaW4oZXZlbnQsIC0xKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGFyc2VWYWx1ZSgoPEhUTUxJbnB1dEVsZW1lbnQ+IGV2ZW50LnRhcmdldCkudmFsdWUpO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbklucHV0Qmx1cihldmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybWF0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbklucHV0Rm9jdXMoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1cyA9IHRydWU7XG4gICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlKHZhbDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHZhbHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBwcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbigpO1xuXG4gICAgICAgIGlmICh2YWwudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSh0aGlzLnRob3VzYW5kUmVnRXhwLCAnJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwcmVjaXNpb24pIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB0aGlzLmZvcm1hdElucHV0ID8gdmFsLnJlcGxhY2UodGhpcy5kZWNpbWFsU2VwYXJhdG9yIHx8IHRoaXMubG9jYWxlRGVjaW1hbFNlcGFyYXRvciwgJy4nKSA6IHZhbC5yZXBsYWNlKCcsJywgJy4nKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ICE9PSBudWxsICYmIHZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLm1heDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW4gIT09IG51bGwgJiYgdmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmb3JtYXRWYWx1ZSgpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgbGV0IHByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKCk7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdElucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHttYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIwfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWNpbWFsU2VwYXJhdG9yICYmIHRoaXMudGhvdXNhbmRTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCh0aGlzLmxvY2FsZURlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVjaXNpb24gJiYgdmFsdWVbMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlWzFdID0gKHRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCB0aGlzLmxvY2FsZURlY2ltYWxTZXBhcmF0b3IpICsgdmFsdWVbMV07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aG91c2FuZFNlcGFyYXRvciAmJiB2YWx1ZVswXS5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVswXSA9IHZhbHVlWzBdLnJlcGxhY2UobmV3IFJlZ0V4cChgWyR7dGhpcy5sb2NhbGVUaG91c2FuZFNlcGFyYXRvcn1dYCwgJ2dpbScpLCB0aGlzLnRob3VzYW5kU2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuam9pbignJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRmaWVsZFZpZXdDaGlsZCAmJiB0aGlzLmlucHV0ZmllbGRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dGZpZWxkVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIDogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5mb3JtYXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbGxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHVwZGF0ZUZpbGxlZFN0YXRlKCkge1xuICAgICAgICB0aGlzLmZpbGxlZCA9ICh0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZSAhPSBudWxsKTtcbiAgICB9XG59XG5cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLElucHV0VGV4dE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NwaW5uZXJdLFxuICAgIGRlY2xhcmF0aW9uczogW1NwaW5uZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNwaW5uZXJNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/splitbutton/primeng-splitbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitbutton/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitbutton/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zcGxpdGJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGxpdGJ1dHRvbi9wcmltZW5nLXNwbGl0YnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/splitbutton/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitbutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitbutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './splitbutton';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGxpdGJ1dHRvbi9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGxpdGJ1dHRvbic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/splitbutton/splitbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitbutton/splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitbutton/splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,103 @@
+import { NgModule, Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ButtonModule } from 'primeng/button';
+import { MenuModule } from 'primeng/menu';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/menu";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/button";
+export class SplitButton {
+    constructor() {
+        this.iconPos = 'left';
+        this.onClick = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    onDefaultButtonClick(event) {
+        this.onClick.emit(event);
+    }
+    onDropdownButtonClick(event) {
+        this.onDropdownClick.emit(event);
+        this.menu.toggle({ currentTarget: this.containerViewChild.nativeElement, relativeAlign: this.appendTo == null });
+    }
+}
+SplitButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+SplitButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SplitButton, selector: "p-splitButton", inputs: { model: "model", icon: "icon", iconPos: "iconPos", label: "label", style: "style", styleClass: "styleClass", menuStyle: "menuStyle", menuStyleClass: "menuStyleClass", disabled: "disabled", tabindex: "tabindex", appendTo: "appendTo", dir: "dir", expandAriaLabel: "expandAriaLabel", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClick: "onClick", onDropdownClick: "onDropdownClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "buttonViewChild", first: true, predicate: ["defaultbtn"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, isInline: true, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"], components: [{ type: i1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitButton', template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuStyle: [{
+                type: Input
+            }], menuStyleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dir: [{
+                type: Input
+            }], expandAriaLabel: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], buttonViewChild: [{
+                type: ViewChild,
+                args: ['defaultbtn']
+            }], menu: [{
+                type: ViewChild,
+                args: ['menu']
+            }] } });
+export class SplitButtonModule {
+}
+SplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, declarations: [SplitButton], imports: [CommonModule, ButtonModule, MenuModule], exports: [SplitButton, ButtonModule] });
+SplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, ButtonModule, MenuModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, MenuModule],
+                    exports: [SplitButton, ButtonModule],
+                    declarations: [SplitButton]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXRidXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc3BsaXRidXR0b24vc3BsaXRidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLHVCQUF1QixFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBTyxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFtQjlDLE1BQU0sT0FBTyxXQUFXO0lBakJ4QjtRQXVCYSxZQUFPLEdBQVcsTUFBTSxDQUFDO1FBSXhCLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBb0J6RCwwQkFBcUIsR0FBVyxpQ0FBaUMsQ0FBQztRQUVsRSwwQkFBcUIsR0FBVyxZQUFZLENBQUM7S0FpQnpEO0lBVEcsb0JBQW9CLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBQyxDQUFDLENBQUM7SUFDbkgsQ0FBQzs7d0dBakRRLFdBQVc7NEZBQVgsV0FBVyxxMEJBZlY7Ozs7Ozs7S0FPVDsyRkFRUSxXQUFXO2tCQWpCdkIsU0FBUzsrQkFDSSxlQUFlLFlBQ2Y7Ozs7Ozs7S0FPVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7OEJBSVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVJLE9BQU87c0JBQWhCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFa0Isa0JBQWtCO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVc7Z0JBRUcsZUFBZTtzQkFBdkMsU0FBUzt1QkFBQyxZQUFZO2dCQUVKLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTs7QUFrQnJCLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkExRGpCLFdBQVcsYUFzRFYsWUFBWSxFQUFDLFlBQVksRUFBQyxVQUFVLGFBdERyQyxXQUFXLEVBdURFLFlBQVk7K0dBR3pCLGlCQUFpQixZQUpqQixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsVUFBVSxDQUFDLEVBQ3pCLFlBQVk7MkZBR3pCLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFVBQVUsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFDLFlBQVksQ0FBQztvQkFDbkMsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixWaWV3Q2hpbGQsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNZW51TW9kdWxlLCBNZW51fSBmcm9tICdwcmltZW5nL21lbnUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3BsaXRCdXR0b24nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciBbbmdDbGFzc109XCIncC1zcGxpdGJ1dHRvbiBwLWNvbXBvbmVudCdcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICA8YnV0dG9uICNkZWZhdWx0YnRuIGNsYXNzPVwicC1zcGxpdGJ1dHRvbi1kZWZhdWx0YnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gW2ljb25dPVwiaWNvblwiIFtpY29uUG9zXT1cImljb25Qb3NcIiBbbGFiZWxdPVwibGFiZWxcIiAoY2xpY2spPVwib25EZWZhdWx0QnV0dG9uQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGNsYXNzPVwicC1zcGxpdGJ1dHRvbi1tZW51YnV0dG9uXCIgaWNvbj1cInBpIHBpLWNoZXZyb24tZG93blwiIChjbGljayk9XCJvbkRyb3Bkb3duQnV0dG9uQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZXhwYW5kQXJpYUxhYmVsXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8cC1tZW51ICNtZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIm1vZGVsXCIgW3N0eWxlXT1cIm1lbnVTdHlsZVwiIFtzdHlsZUNsYXNzXT1cIm1lbnVTdHlsZUNsYXNzXCIgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCJzaG93VHJhbnNpdGlvbk9wdGlvbnNcIiBbaGlkZVRyYW5zaXRpb25PcHRpb25zXT1cImhpZGVUcmFuc2l0aW9uT3B0aW9uc1wiPjwvcC1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3BsaXRidXR0b24uY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXRCdXR0b24ge1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpY29uUG9zOiBzdHJpbmcgPSAnbGVmdCc7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWVudVN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBtZW51U3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgYXBwZW5kVG86IGFueTtcblxuICAgIEBJbnB1dCgpIGRpcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZXhwYW5kQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdGJ0bicpIGJ1dHRvblZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnUnKSBtZW51OiBNZW51O1xuXG4gICAgb25EZWZhdWx0QnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyb3Bkb3duQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25Ecm9wZG93bkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLm1lbnUudG9nZ2xlKHtjdXJyZW50VGFyZ2V0OiB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCByZWxhdGl2ZUFsaWduOiB0aGlzLmFwcGVuZFRvID09IG51bGx9KTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLEJ1dHRvbk1vZHVsZSxNZW51TW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU3BsaXRCdXR0b24sQnV0dG9uTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtTcGxpdEJ1dHRvbl1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXRCdXR0b25Nb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/splitter/primeng-splitter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitter/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitter/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zcGxpdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGxpdHRlci9wcmltZW5nLXNwbGl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/splitter/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitter/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './splitter';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zcGxpdHRlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGxpdHRlcic7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/splitter/splitter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/splitter/splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/splitter/splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,331 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, ViewChild, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Splitter {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.stateStorage = "session";
+        this.stateKey = null;
+        this.layout = "horizontal";
+        this.gutterSize = 4;
+        this.panelSizes = [];
+        this.minSizes = [];
+        this.onResizeEnd = new EventEmitter();
+        this.onResizeStart = new EventEmitter();
+        this.nested = false;
+        this.panels = [];
+        this.dragging = false;
+        this.mouseMoveListener = null;
+        this.mouseUpListener = null;
+        this.touchMoveListener = null;
+        this.touchEndListener = null;
+        this.size = null;
+        this.gutterElement = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.nextPanelSize = null;
+        this.prevPanelSize = null;
+        this._panelSizes = null;
+        this.prevPanelIndex = null;
+    }
+    ngOnInit() {
+        this.nested = this.isNested();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'panel':
+                    this.panels.push(item.template);
+                    break;
+                default:
+                    this.panels.push(item.template);
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.panels && this.panels.length) {
+            let initialized = false;
+            if (this.isStateful()) {
+                initialized = this.restoreState();
+            }
+            if (!initialized) {
+                let children = [...this.el.nativeElement.children[0].children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+                let _panelSizes = [];
+                this.panels.map((panel, i) => {
+                    let panelInitialSize = this.panelSizes.length - 1 >= i ? this.panelSizes[i] : null;
+                    let panelSize = panelInitialSize || (100 / this.panels.length);
+                    _panelSizes[i] = panelSize;
+                    children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+                });
+                this._panelSizes = _panelSizes;
+            }
+        }
+    }
+    resizeStart(event, index) {
+        this.gutterElement = event.currentTarget;
+        this.size = this.horizontal() ? DomHandler.getWidth(this.containerViewChild.nativeElement) : DomHandler.getHeight(this.containerViewChild.nativeElement);
+        this.dragging = true;
+        this.startPos = this.horizontal() ? (event.pageX || event.changedTouches[0].pageX) : (event.pageY || event.changedTouches[0].pageY);
+        this.prevPanelElement = this.gutterElement.previousElementSibling;
+        this.nextPanelElement = this.gutterElement.nextElementSibling;
+        this.prevPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.prevPanelElement, true) : DomHandler.getOuterHeight(this.prevPanelElement, true)) / this.size;
+        this.nextPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.nextPanelElement, true) : DomHandler.getOuterHeight(this.nextPanelElement, true)) / this.size;
+        this.prevPanelIndex = index;
+        DomHandler.addClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.onResizeStart.emit({ originalEvent: event, sizes: this._panelSizes });
+    }
+    onResize(event) {
+        let newPos;
+        if (this.horizontal())
+            newPos = (event.pageX * 100 / this.size) - (this.startPos * 100 / this.size);
+        else
+            newPos = (event.pageY * 100 / this.size) - (this.startPos * 100 / this.size);
+        let newPrevPanelSize = this.prevPanelSize + newPos;
+        let newNextPanelSize = this.nextPanelSize - newPos;
+        if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {
+            this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this._panelSizes[this.prevPanelIndex] = newPrevPanelSize;
+            this._panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;
+        }
+    }
+    resizeEnd(event) {
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.onResizeEnd.emit({ originalEvent: event, sizes: this._panelSizes });
+        DomHandler.removeClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.clear();
+    }
+    onGutterMouseDown(event, index) {
+        this.resizeStart(event, index);
+        this.bindMouseListeners();
+    }
+    onGutterTouchStart(event, index) {
+        if (event.cancelable) {
+            this.resizeStart(event, index);
+            this.bindTouchListeners();
+            event.preventDefault();
+        }
+    }
+    onGutterTouchEnd(event) {
+        this.resizeEnd(event);
+        this.unbindTouchListeners();
+        if (event.cancelable)
+            event.preventDefault();
+    }
+    validateResize(newPrevPanelSize, newNextPanelSize) {
+        if (this.minSizes.length >= 1 && this.minSizes[0] && this.minSizes[0] > newPrevPanelSize) {
+            return false;
+        }
+        if (this.minSizes.length > 1 && this.minSizes[1] && this.minSizes[1] > newNextPanelSize) {
+            return false;
+        }
+        return true;
+    }
+    bindMouseListeners() {
+        if (!this.mouseMoveListener) {
+            this.mouseMoveListener = event => this.onResize(event);
+            document.addEventListener('mousemove', this.mouseMoveListener);
+        }
+        if (!this.mouseUpListener) {
+            this.mouseUpListener = event => {
+                this.resizeEnd(event);
+                this.unbindMouseListeners();
+            };
+            document.addEventListener('mouseup', this.mouseUpListener);
+        }
+    }
+    bindTouchListeners() {
+        if (!this.touchMoveListener) {
+            this.touchMoveListener = event => this.onResize(event.changedTouches[0]);
+            document.addEventListener('touchmove', this.touchMoveListener);
+        }
+        if (!this.touchEndListener) {
+            this.touchEndListener = event => {
+                this.resizeEnd(event);
+                this.unbindTouchListeners();
+            };
+            document.addEventListener('touchend', this.touchEndListener);
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseMoveListener) {
+            document.removeEventListener('mousemove', this.mouseMoveListener);
+            this.mouseMoveListener = null;
+        }
+        if (this.mouseUpListener) {
+            document.removeEventListener('mouseup', this.mouseUpListener);
+            this.mouseUpListener = null;
+        }
+    }
+    unbindTouchListeners() {
+        if (this.touchMoveListener) {
+            document.removeEventListener('touchmove', this.touchMoveListener);
+            this.touchMoveListener = null;
+        }
+        if (this.touchEndListener) {
+            document.removeEventListener('touchend', this.touchEndListener);
+            this.touchEndListener = null;
+        }
+    }
+    clear() {
+        this.dragging = false;
+        this.size = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.prevPanelSize = null;
+        this.nextPanelSize = null;
+        this.gutterElement = null;
+        this.prevPanelIndex = null;
+    }
+    isNested() {
+        if (this.el.nativeElement) {
+            let parent = this.el.nativeElement.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-splitter')) {
+                parent = parent.parentElement;
+            }
+            return parent !== null;
+        }
+        else {
+            return false;
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    saveState() {
+        this.getStorage().setItem(this.stateKey, JSON.stringify(this._panelSizes));
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            this._panelSizes = JSON.parse(stateString);
+            let children = [...this.containerViewChild.nativeElement.children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+            children.forEach((child, i) => {
+                child.style.flexBasis = 'calc(' + this._panelSizes[i] + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            });
+            return true;
+        }
+        return false;
+    }
+    containerClass() {
+        return {
+            'p-splitter p-component': true,
+            'p-splitter-horizontal': this.layout === "horizontal",
+            'p-splitter-vertical': this.layout === "vertical"
+        };
+    }
+    panelContainerClass() {
+        return {
+            'p-splitter-panel': true,
+            'p-splitter-panel-nested': true
+        };
+    }
+    gutterStyle() {
+        if (this.horizontal())
+            return { width: this.gutterSize + 'px' };
+        else
+            return { height: this.gutterSize + 'px' };
+    }
+    horizontal() {
+        return this.layout === 'horizontal';
+    }
+}
+Splitter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Splitter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Splitter, selector: "p-splitter", inputs: { styleClass: "styleClass", panelStyleClass: "panelStyleClass", style: "style", panelStyle: "panelStyle", stateStorage: "stateStorage", stateKey: "stateKey", layout: "layout", gutterSize: "gutterSize", panelSizes: "panelSizes", minSizes: "minSizes" }, outputs: { onResizeEnd: "onResizeEnd", onResizeStart: "onResizeStart" }, host: { properties: { "class.p-splitter-panel-nested": "nested" }, classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitter', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element',
+                        '[class.p-splitter-panel-nested]': 'nested'
+                    }, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], gutterSize: [{
+                type: Input
+            }], panelSizes: [{
+                type: Input
+            }], minSizes: [{
+                type: Input
+            }], onResizeEnd: [{
+                type: Output
+            }], onResizeStart: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }] } });
+export class SplitterModule {
+}
+SplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, declarations: [Splitter], imports: [CommonModule], exports: [Splitter, SharedModule] });
+SplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Splitter, SharedModule],
+                    declarations: [Splitter]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc3BsaXR0ZXIvc3BsaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBeUQsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaE4sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQXlCMUQsTUFBTSxPQUFPLFFBQVE7SUE4RGpCLFlBQW1CLEVBQXFCLEVBQVUsRUFBYztRQUE3QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQVk7UUFwRHZELGlCQUFZLEdBQVcsU0FBUyxDQUFDO1FBRWpDLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFFeEIsV0FBTSxHQUFXLFlBQVksQ0FBQztRQUU5QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFMUIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUV2QixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNaEUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFWixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFekIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXhCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFWixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7SUFFOEMsQ0FBQztJQUVyRSxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsUUFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25CLEtBQUssT0FBTztvQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ047b0JBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2FBQ1Q7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ25DLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDbkIsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQztZQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ILElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pCLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNqRixJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMvRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUMzQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdEgsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7YUFDbEM7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekosSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzSyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzSyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNWLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFFN0UsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxGLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFDbkQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsZ0JBQWdCLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ25JLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbkksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1NBQ2hFO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUN2RSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUN6RSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUMzQixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQ2hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUU7WUFDdEYsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUU7WUFDckYsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNoQyxDQUFDLENBQUE7WUFDRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3hFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFBO1lBQ0QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDakM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ2pELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ3pELE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO2FBQ2pDO1lBRUQsT0FBTyxNQUFNLEtBQUssSUFBSSxDQUFDO1NBQzFCO2FBQ0k7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNOLFFBQU8sSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRS9CLEtBQUssU0FBUztnQkFDVixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFFakM7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLDBGQUEwRixDQUFDLENBQUM7U0FDdkk7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5ELElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLElBQUksUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUNuSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUgsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPO1lBQ0gsd0JBQXdCLEVBQUUsSUFBSTtZQUM5Qix1QkFBdUIsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVk7WUFDckQscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVO1NBQ3BELENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTztZQUNILGtCQUFrQixFQUFFLElBQUk7WUFDeEIseUJBQXlCLEVBQUUsSUFBSTtTQUNsQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsT0FBTyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksRUFBQyxDQUFDOztZQUV2QyxPQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDO0lBQ3hDLENBQUM7O3FHQXBVUSxRQUFRO3lGQUFSLFFBQVEsMmZBMEJBLGFBQWEsOElBL0NwQjs7Ozs7Ozs7Ozs7O0tBWVQ7MkZBU1EsUUFBUTtrQkF2QnBCLFNBQVM7K0JBQ0ksWUFBWSxZQUNaOzs7Ozs7Ozs7Ozs7S0FZVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBRXpDO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixpQ0FBaUMsRUFBRSxRQUFRO3FCQUM5QztpSUFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRXlCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTtnQkFFYSxrQkFBa0I7c0JBQTVELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUFnVDdDLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBNVVkLFFBQVEsYUF3VVAsWUFBWSxhQXhVYixRQUFRLEVBeVVHLFlBQVk7NEdBR3ZCLGNBQWMsWUFKZCxDQUFDLFlBQVksQ0FBQyxFQUNILFlBQVk7MkZBR3ZCLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDO29CQUNqQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zcGxpdHRlcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzKClcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXBhbmVsIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJwYW5lbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhbmVsQ29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJwYW5lbFN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJwYW5lbFN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYW5lbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXNwbGl0dGVyLWd1dHRlclwiICpuZ0lmPVwiaSAhPT0gKHBhbmVscy5sZW5ndGggLSAxKVwiIFtuZ1N0eWxlXT1cImd1dHRlclN0eWxlKClcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uR3V0dGVyTW91c2VEb3duKCRldmVudCwgaSlcIiAodG91Y2hzdGFydCk9XCJvbkd1dHRlclRvdWNoU3RhcnQoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1zcGxpdHRlci1ndXR0ZXItaGFuZGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3BsaXR0ZXIuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLXNwbGl0dGVyLXBhbmVsLW5lc3RlZF0nOiAnbmVzdGVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXR0ZXIge1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgcGFuZWxTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3RhdGVTdG9yYWdlOiBzdHJpbmcgPSBcInNlc3Npb25cIjtcblxuICAgIEBJbnB1dCgpIHN0YXRlS2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KCkgbGF5b3V0OiBzdHJpbmcgPSBcImhvcml6b250YWxcIjtcblxuICAgIEBJbnB1dCgpIGd1dHRlclNpemU6IG51bWJlciA9IDQ7XG5cbiAgICBASW5wdXQoKSBwYW5lbFNpemVzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgbWluU2l6ZXM6IG51bWJlcltdID0gW107XG5cbiAgICBAT3V0cHV0KCkgb25SZXNpemVFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUmVzaXplU3RhcnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIG5lc3RlZCA9IGZhbHNlO1xuXG4gICAgcGFuZWxzID0gW107XG5cbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgbW91c2VNb3ZlTGlzdGVuZXIgPSBudWxsO1xuXG4gICAgbW91c2VVcExpc3RlbmVyID0gbnVsbDtcblxuICAgIHRvdWNoTW92ZUxpc3RlbmVyID0gbnVsbDtcblxuICAgIHRvdWNoRW5kTGlzdGVuZXIgPSBudWxsO1xuXG4gICAgc2l6ZSA9IG51bGw7XG5cbiAgICBndXR0ZXJFbGVtZW50ID0gbnVsbDtcblxuICAgIHN0YXJ0UG9zID0gbnVsbDtcblxuICAgIHByZXZQYW5lbEVsZW1lbnQgPSBudWxsO1xuXG4gICAgbmV4dFBhbmVsRWxlbWVudCA9IG51bGw7XG5cbiAgICBuZXh0UGFuZWxTaXplID0gbnVsbDtcblxuICAgIHByZXZQYW5lbFNpemUgPSBudWxsO1xuXG4gICAgX3BhbmVsU2l6ZXMgPSBudWxsO1xuXG4gICAgcHJldlBhbmVsSW5kZXggPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5uZXN0ZWQgPSB0aGlzLmlzTmVzdGVkKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdwYW5lbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWxzLnB1c2goaXRlbS50ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHVzaChpdGVtLnRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhbmVscyAmJiB0aGlzLnBhbmVscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bCgpKSB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0aGlzLnJlc3RvcmVTdGF0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbl0uZmlsdGVyKGNoaWxkID0+IERvbUhhbmRsZXIuaGFzQ2xhc3MoY2hpbGQsICdwLXNwbGl0dGVyLXBhbmVsJykpO1xuICAgICAgICAgICAgICAgIGxldCBfcGFuZWxTaXplcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMubWFwKChwYW5lbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFuZWxJbml0aWFsU2l6ZSA9IHRoaXMucGFuZWxTaXplcy5sZW5ndGggLTEgPj0gaSA/IHRoaXMucGFuZWxTaXplc1tpXTogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhbmVsU2l6ZSA9IHBhbmVsSW5pdGlhbFNpemUgfHwgKDEwMCAvIHRoaXMucGFuZWxzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIF9wYW5lbFNpemVzW2ldID0gcGFuZWxTaXplO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5zdHlsZS5mbGV4QmFzaXMgPSAnY2FsYygnICsgcGFuZWxTaXplICsgJyUgLSAnICsgKCh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSkgKyAncHgpJztcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXMgPSBfcGFuZWxTaXplcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZVN0YXJ0KGV2ZW50LCBpbmRleCkge1xuICAgICAgICB0aGlzLmd1dHRlckVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICB0aGlzLnNpemUgPSB0aGlzLmhvcml6b250YWwoKSA/IERvbUhhbmRsZXIuZ2V0V2lkdGgodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkgOiBEb21IYW5kbGVyLmdldEhlaWdodCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhcnRQb3MgPSB0aGlzLmhvcml6b250YWwoKSA/IChldmVudC5wYWdlWCB8fCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCkgOiAoZXZlbnQucGFnZVkgfHwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkpO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEVsZW1lbnQgPSB0aGlzLmd1dHRlckVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgdGhpcy5uZXh0UGFuZWxFbGVtZW50ID0gdGhpcy5ndXR0ZXJFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgdGhpcy5wcmV2UGFuZWxTaXplID0gMTAwICogKHRoaXMuaG9yaXpvbnRhbCgpID8gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMucHJldlBhbmVsRWxlbWVudCwgdHJ1ZSk6IERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5wcmV2UGFuZWxFbGVtZW50LCB0cnVlKSkgLyB0aGlzLnNpemU7XG4gICAgICAgIHRoaXMubmV4dFBhbmVsU2l6ZSA9IDEwMCAqICh0aGlzLmhvcml6b250YWwoKSA/IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLm5leHRQYW5lbEVsZW1lbnQsIHRydWUpOiBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMubmV4dFBhbmVsRWxlbWVudCwgdHJ1ZSkpIC8gdGhpcy5zaXplO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEluZGV4ID0gaW5kZXg7XG4gICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5ndXR0ZXJFbGVtZW50LCAncC1zcGxpdHRlci1ndXR0ZXItcmVzaXppbmcnKTtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1zcGxpdHRlci1yZXNpemluZycpO1xuICAgICAgICB0aGlzLm9uUmVzaXplU3RhcnQuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIHNpemVzOiB0aGlzLl9wYW5lbFNpemVzfSk7XG4gICAgfVxuXG4gICAgb25SZXNpemUoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1BvcztcbiAgICAgICAgaWYgKHRoaXMuaG9yaXpvbnRhbCgpKVxuICAgICAgICAgICAgbmV3UG9zID0gKGV2ZW50LnBhZ2VYICogMTAwIC8gdGhpcy5zaXplKSAtICh0aGlzLnN0YXJ0UG9zICogMTAwIC8gdGhpcy5zaXplKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbmV3UG9zID0gKGV2ZW50LnBhZ2VZICAqIDEwMCAvIHRoaXMuc2l6ZSkgLSAodGhpcy5zdGFydFBvcyAqIDEwMCAvIHRoaXMuc2l6ZSk7XG5cbiAgICAgICAgbGV0IG5ld1ByZXZQYW5lbFNpemUgPSB0aGlzLnByZXZQYW5lbFNpemUgKyBuZXdQb3M7XG4gICAgICAgIGxldCBuZXdOZXh0UGFuZWxTaXplID0gdGhpcy5uZXh0UGFuZWxTaXplIC0gbmV3UG9zO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlUmVzaXplKG5ld1ByZXZQYW5lbFNpemUsIG5ld05leHRQYW5lbFNpemUpKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZQYW5lbEVsZW1lbnQuc3R5bGUuZmxleEJhc2lzID0gJ2NhbGMoJyArIG5ld1ByZXZQYW5lbFNpemUgKyAnJSAtICcgKyAoKHRoaXMucGFuZWxzLmxlbmd0aCAtIDEpICogdGhpcy5ndXR0ZXJTaXplKSArICdweCknO1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFuZWxFbGVtZW50LnN0eWxlLmZsZXhCYXNpcyA9ICdjYWxjKCcgKyBuZXdOZXh0UGFuZWxTaXplICsgJyUgLSAnICsgKCh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSkgKyAncHgpJztcbiAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXNbdGhpcy5wcmV2UGFuZWxJbmRleF0gPSBuZXdQcmV2UGFuZWxTaXplO1xuICAgICAgICAgICAgdGhpcy5fcGFuZWxTaXplc1t0aGlzLnByZXZQYW5lbEluZGV4ICsgMV0gPSBuZXdOZXh0UGFuZWxTaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzaXplRW5kKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25SZXNpemVFbmQuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIHNpemVzOiB0aGlzLl9wYW5lbFNpemVzfSk7XG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5ndXR0ZXJFbGVtZW50LCAncC1zcGxpdHRlci1ndXR0ZXItcmVzaXppbmcnKTtcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1zcGxpdHRlci1yZXNpemluZycpO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgb25HdXR0ZXJNb3VzZURvd24oZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgdGhpcy5iaW5kTW91c2VMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBvbkd1dHRlclRvdWNoU3RhcnQoZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKXtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3RhcnQoZXZlbnQsIGluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuYmluZFRvdWNoTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkd1dHRlclRvdWNoRW5kKGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplRW5kKGV2ZW50KTtcbiAgICAgICAgdGhpcy51bmJpbmRUb3VjaExpc3RlbmVycygpO1xuXG4gICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlc2l6ZShuZXdQcmV2UGFuZWxTaXplLCBuZXdOZXh0UGFuZWxTaXplKSB7XG4gICAgICAgIGlmICh0aGlzLm1pblNpemVzLmxlbmd0aCA+PSAxICYmIHRoaXMubWluU2l6ZXNbMF0gJiYgdGhpcy5taW5TaXplc1swXSA+IG5ld1ByZXZQYW5lbFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1pblNpemVzLmxlbmd0aCA+IDEgJiYgdGhpcy5taW5TaXplc1sxXSAmJiB0aGlzLm1pblNpemVzWzFdID4gbmV3TmV4dFBhbmVsU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmluZE1vdXNlTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMubW91c2VNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlTGlzdGVuZXIgPSBldmVudCA9PiB0aGlzLm9uUmVzaXplKGV2ZW50KVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmVMaXN0ZW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubW91c2VVcExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlVXBMaXN0ZW5lciA9IGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRNb3VzZUxpc3RlbmVycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMubW91c2VVcExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRUb3VjaExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoTW92ZUxpc3RlbmVyID0gZXZlbnQgPT4gdGhpcy5vblJlc2l6ZShldmVudC5jaGFuZ2VkVG91Y2hlc1swXSlcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMudG91Y2hNb3ZlTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvdWNoRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMudG91Y2hFbmRMaXN0ZW5lciA9IGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRUb3VjaExpc3RlbmVycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnRvdWNoRW5kTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kTW91c2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW91c2VVcExpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kVG91Y2hMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMudG91Y2hNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG91Y2hFbmRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnRvdWNoRW5kTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy50b3VjaEVuZExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2l6ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnRQb3MgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRQYW5lbEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbFNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRQYW5lbFNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLmd1dHRlckVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEluZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpc05lc3RlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhwYXJlbnQsICdwLXNwbGl0dGVyJykpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3RhdGVmdWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlS2V5ICE9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0U3RvcmFnZSgpIHtcbiAgICAgICAgc3dpdGNoKHRoaXMuc3RhdGVTdG9yYWdlKSB7XG4gICAgICAgICAgICBjYXNlICdsb2NhbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2U7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Nlc3Npb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuc2Vzc2lvblN0b3JhZ2U7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuc3RhdGVTdG9yYWdlICsgJyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdGhlIHN0YXRlIHN0b3JhZ2UsIHN1cHBvcnRlZCB2YWx1ZXMgYXJlIFwibG9jYWxcIiBhbmQgXCJzZXNzaW9uXCIuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuZ2V0U3RvcmFnZSgpLnNldEl0ZW0odGhpcy5zdGF0ZUtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5fcGFuZWxTaXplcykpO1xuICAgIH1cblxuICAgIHJlc3RvcmVTdGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXRlS2V5KTtcblxuICAgICAgICBpZiAoc3RhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXMgPSBKU09OLnBhcnNlKHN0YXRlU3RyaW5nKTtcbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFsuLi50aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuXS5maWx0ZXIoY2hpbGQgPT4gRG9tSGFuZGxlci5oYXNDbGFzcyhjaGlsZCwgJ3Atc3BsaXR0ZXItcGFuZWwnKSk7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNoaWxkLnN0eWxlLmZsZXhCYXNpcyA9ICdjYWxjKCcgKyB0aGlzLl9wYW5lbFNpemVzW2ldICsgJyUgLSAnICsgKCh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSkgKyAncHgpJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLXNwbGl0dGVyIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLXNwbGl0dGVyLWhvcml6b250YWwnOiB0aGlzLmxheW91dCA9PT0gXCJob3Jpem9udGFsXCIsXG4gICAgICAgICAgICAncC1zcGxpdHRlci12ZXJ0aWNhbCc6IHRoaXMubGF5b3V0ID09PSBcInZlcnRpY2FsXCJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwYW5lbENvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3Atc3BsaXR0ZXItcGFuZWwnOiB0cnVlLFxuICAgICAgICAgICAgJ3Atc3BsaXR0ZXItcGFuZWwtbmVzdGVkJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGd1dHRlclN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsKCkpXG4gICAgICAgICAgICByZXR1cm4ge3dpZHRoOiB0aGlzLmd1dHRlclNpemUgKyAncHgnfTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHtoZWlnaHQ6IHRoaXMuZ3V0dGVyU2l6ZSArICdweCd9O1xuICAgIH1cblxuICAgIGhvcml6b250YWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU3BsaXR0ZXIsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbU3BsaXR0ZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0dGVyTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/steps/primeng-steps.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/steps/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/steps/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zdGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGVwcy9wcmltZW5nLXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/steps/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/steps/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/steps/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './steps';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGVwcy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdGVwcyc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/steps/steps.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/steps/steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/steps/steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import { NgModule, Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/router";
+import * as i2 from "@angular/common";
+import * as i3 from "primeng/tooltip";
+export class Steps {
+    constructor(router, route, cd) {
+        this.router = router;
+        this.route = route;
+        this.cd = cd;
+        this.activeIndex = 0;
+        this.readonly = true;
+        this.activeIndexChange = new EventEmitter();
+    }
+    ngOnInit() {
+        this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());
+    }
+    itemClick(event, item, i) {
+        if (this.readonly || item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.activeIndexChange.emit(i);
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item,
+                index: i
+            });
+        }
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.readonly && !item.disabled;
+    }
+    isActive(item, index) {
+        if (item.routerLink)
+            return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], { relativeTo: this.route }).toString(), false);
+        else
+            return index === this.activeIndex;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Steps.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Steps.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Steps, selector: "p-steps", inputs: { activeIndex: "activeIndex", model: "model", readonly: "readonly", style: "style", styleClass: "styleClass" }, outputs: { activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-steps', template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }] } });
+export class StepsModule {
+}
+StepsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StepsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, declarations: [Steps], imports: [CommonModule, RouterModule, TooltipModule], exports: [Steps, RouterModule, TooltipModule] });
+StepsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Steps, RouterModule, TooltipModule],
+                    declarations: [Steps]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc3RlcHMvc3RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUF5QixNQUFNLGlCQUFpQixDQUFDO0FBRXJFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFtQzlDLE1BQU0sT0FBTyxLQUFLO0lBY2QsWUFBb0IsTUFBYyxFQUFVLEtBQW9CLEVBQVUsRUFBcUI7UUFBM0UsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWU7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQVp0RixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUl4QixhQUFRLEdBQWEsSUFBSSxDQUFDO1FBTXpCLHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRStCLENBQUM7SUFJcEcsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVksRUFBRSxJQUFjLEVBQUUsQ0FBUztRQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBYztRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMvRCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWMsRUFBRSxLQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLFVBQVU7WUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7O1lBRXRLLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7O2tHQTFEUSxLQUFLO3NGQUFMLEtBQUssbVFBL0JKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVCVDsyRkFRUSxLQUFLO2tCQWpDakIsU0FBUzsrQkFDSSxTQUFTLFlBQ1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUJULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjswSkFJUSxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTs7QUFzRFgsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkFsRVgsS0FBSyxhQThESixZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsYUE5RHhDLEtBQUssRUErREUsWUFBWSxFQUFDLGFBQWE7eUdBR2pDLFdBQVcsWUFKWCxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDLEVBQ2xDLFlBQVksRUFBQyxhQUFhOzJGQUdqQyxXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUNsRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDM0MsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZSwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXN0ZXBzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC1zdGVwcyBwLWNvbXBvbmVudCc6dHJ1ZSwncC1yZWFkb25seSc6cmVhZG9ubHl9XCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPHVsIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJwLXN0ZXBzLWl0ZW1cIiAjbWVudWl0ZW0gW25nU3R5bGVdPVwiaXRlbS5zdHlsZVwiIFtjbGFzc109XCJpdGVtLnN0eWxlQ2xhc3NcIiByb2xlPVwidGFiXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVJbmRleFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaSA9PT0gYWN0aXZlSW5kZXhcIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQgcC1zdGVwcy1jdXJyZW50JzogaXNBY3RpdmUoaXRlbSwgaSksICdwLWRpc2FibGVkJzogaXRlbS5kaXNhYmxlZCB8fCAocmVhZG9ubHkgJiYgIWlzQWN0aXZlKGl0ZW0sIGkpKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpc0NsaWNrYWJsZVJvdXRlckxpbmsoaXRlbSk7IGVsc2UgZWxzZUJsb2NrXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCIgW3F1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3AtbWVudWl0ZW0tbGluay1hY3RpdmUnXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIml0ZW0ucm91dGVyTGlua0FjdGl2ZU9wdGlvbnN8fHtleGFjdDpmYWxzZX1cIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudCwgaXRlbSwgaSlcIiAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtLCBpKVwiIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiIFthdHRyLmlkXT1cIml0ZW0uaWRcIiBbYXR0ci50YWJpbmRleF09XCJpdGVtLmRpc2FibGVkIHx8IHJlYWRvbmx5ID8gbnVsbCA6IChpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6ICcwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnRcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcIiBbcHJlc2VydmVGcmFnbWVudF09XCJpdGVtLnByZXNlcnZlRnJhZ21lbnRcIiBbc2tpcExvY2F0aW9uQ2hhbmdlXT1cIml0ZW0uc2tpcExvY2F0aW9uQ2hhbmdlXCIgW3JlcGxhY2VVcmxdPVwiaXRlbS5yZXBsYWNlVXJsXCIgW3N0YXRlXT1cIml0ZW0uc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1zdGVwcy1udW1iZXJcIj57e2kgKyAxfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3RlcHMtdGl0bGVcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sTGFiZWxcIj57e2l0ZW0ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbExhYmVsPjxzcGFuIGNsYXNzPVwicC1zdGVwcy10aXRsZVwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2F0dHIuaHJlZl09XCJpdGVtLnVybFwiIGNsYXNzPVwicC1tZW51aXRlbS1saW5rXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LCBpdGVtLCBpKVwiIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGljaygkZXZlbnQsIGl0ZW0sIGkpXCIgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIuaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZHx8KGkgIT09IGFjdGl2ZUluZGV4ICYmIHJlYWRvbmx5KSA/IG51bGwgOiAoaXRlbS50YWJpbmRleCA/IGl0ZW0udGFiaW5kZXggOiAnMCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXN0ZXBzLW51bWJlclwiPnt7aSArIDF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3RlcHMtdGl0bGVcIiAqbmdJZj1cIml0ZW0uZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLXN0ZXBzLXRpdGxlXCIgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9zdGVwcy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdGVwcyBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGFjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9ICB0cnVlO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBhY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgaXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogTWVudUl0ZW0sIGk6IG51bWJlcinCoHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpKTtcblxuICAgICAgICBpZiAoIWl0ZW0udXJsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgaXRlbS5jb21tYW5kKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgICAgIGluZGV4OiBpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ2xpY2thYmxlUm91dGVyTGluayhpdGVtOiBNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5yb3V0ZXJMaW5rICYmICF0aGlzLnJlYWRvbmx5ICYmICFpdGVtLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGlzQWN0aXZlKGl0ZW06IE1lbnVJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpdGVtLnJvdXRlckxpbmspXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUoaXRlbS5yb3V0ZXJMaW5rLCBmYWxzZSkgfHwgdGhpcy5yb3V0ZXIuaXNBY3RpdmUodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbaXRlbS5yb3V0ZXJMaW5rXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KS50b1N0cmluZygpLCBmYWxzZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5hY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUm91dGVyTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtTdGVwcyxSb3V0ZXJNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbU3RlcHNdXG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBzTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/styleclass/primeng-styleclass.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/styleclass/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/styleclass/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy1zdHlsZWNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3N0eWxlY2xhc3MvcHJpbWVuZy1zdHlsZWNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/styleclass/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/styleclass/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/styleclass/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './styleclass';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdHlsZWNsYXNzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0eWxlY2xhc3MnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/styleclass/styleclass.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/styleclass/styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/styleclass/styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,183 @@
+import { CommonModule } from '@angular/common';
+import { NgModule, Directive, Input } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+export class StyleClass {
+    constructor(el, renderer) {
+        this.el = el;
+        this.renderer = renderer;
+    }
+    ngAfterViewInit() {
+        this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {
+            this.target = this.resolveTarget();
+            if (this.toggleClass) {
+                if (DomHandler.hasClass(this.target, this.toggleClass))
+                    DomHandler.removeClass(this.target, this.toggleClass);
+                else
+                    DomHandler.addClass(this.target, this.toggleClass);
+            }
+            else {
+                if (this.target.offsetParent === null)
+                    this.enter();
+                else
+                    this.leave();
+            }
+        });
+    }
+    enter() {
+        if (this.enterActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                if (this.enterActiveClass === 'slidedown') {
+                    this.target.style.height = '0px';
+                    DomHandler.removeClass(this.target, 'hidden');
+                    this.target.style.maxHeight = this.target.scrollHeight + 'px';
+                    DomHandler.addClass(this.target, 'hidden');
+                    this.target.style.height = '';
+                }
+                DomHandler.addClass(this.target, this.enterActiveClass);
+                if (this.enterClass) {
+                    DomHandler.removeClass(this.target, this.enterClass);
+                }
+                this.enterListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.enterActiveClass);
+                    if (this.enterToClass) {
+                        DomHandler.addClass(this.target, this.enterToClass);
+                    }
+                    this.enterListener();
+                    if (this.enterActiveClass === 'slidedown') {
+                        this.target.style.maxHeight = '';
+                    }
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.enterClass) {
+                DomHandler.removeClass(this.target, this.enterClass);
+            }
+            if (this.enterToClass) {
+                DomHandler.addClass(this.target, this.enterToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.bindDocumentListener();
+        }
+    }
+    leave() {
+        if (this.leaveActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                DomHandler.addClass(this.target, this.leaveActiveClass);
+                if (this.leaveClass) {
+                    DomHandler.removeClass(this.target, this.leaveClass);
+                }
+                this.leaveListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.leaveActiveClass);
+                    if (this.leaveToClass) {
+                        DomHandler.addClass(this.target, this.leaveToClass);
+                    }
+                    this.leaveListener();
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.leaveClass) {
+                DomHandler.removeClass(this.target, this.leaveClass);
+            }
+            if (this.leaveToClass) {
+                DomHandler.addClass(this.target, this.leaveToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.unbindDocumentListener();
+        }
+    }
+    resolveTarget() {
+        if (this.target) {
+            return this.target;
+        }
+        switch (this.selector) {
+            case '@next':
+                return this.el.nativeElement.nextElementSibling;
+            case '@prev':
+                return this.el.nativeElement.previousElementSibling;
+            case '@parent':
+                return this.el.nativeElement.parentElement;
+            case '@grandparent':
+                return this.el.nativeElement.parentElement.parentElement;
+            default:
+                return document.querySelector(this.selector);
+        }
+    }
+    bindDocumentListener() {
+        if (!this.documentListener) {
+            this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', event => {
+                if (getComputedStyle(this.target).getPropertyValue('position') === 'static') {
+                    this.unbindDocumentListener();
+                }
+                else if (!this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target)) {
+                    this.leave();
+                }
+            });
+        }
+    }
+    unbindDocumentListener() {
+        if (this.documentListener) {
+            this.documentListener();
+            this.documentListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.target = null;
+        if (this.eventListener) {
+            this.eventListener();
+        }
+        this.unbindDocumentListener();
+    }
+}
+StyleClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
+StyleClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: StyleClass, selector: "[pStyleClass]", inputs: { selector: ["pStyleClass", "selector"], enterClass: "enterClass", enterActiveClass: "enterActiveClass", enterToClass: "enterToClass", leaveClass: "leaveClass", leaveActiveClass: "leaveActiveClass", leaveToClass: "leaveToClass", hideOnOutsideClick: "hideOnOutsideClick", toggleClass: "toggleClass" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pStyleClass]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { selector: [{
+                type: Input,
+                args: ['pStyleClass']
+            }], enterClass: [{
+                type: Input
+            }], enterActiveClass: [{
+                type: Input
+            }], enterToClass: [{
+                type: Input
+            }], leaveClass: [{
+                type: Input
+            }], leaveActiveClass: [{
+                type: Input
+            }], leaveToClass: [{
+                type: Input
+            }], hideOnOutsideClick: [{
+                type: Input
+            }], toggleClass: [{
+                type: Input
+            }] } });
+export class StyleClassModule {
+}
+StyleClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StyleClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, declarations: [StyleClass], imports: [CommonModule], exports: [StyleClass] });
+StyleClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [StyleClass],
+                    declarations: [StyleClass]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVjbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdHlsZWNsYXNzL3N0eWxlY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRekMsTUFBTSxPQUFPLFVBQVU7SUFFbkIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CO1FBQTFDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQUcsQ0FBQztJQWdDakUsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVuQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ2xELFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7O29CQUV0RCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFEO2lCQUNJO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssSUFBSTtvQkFDakMsSUFBSSxDQUFDLEtBQUssRUFBRSxD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dCB7IENvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBSZW5kZXJlcjIsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFN0eWxlQ2xhc3NdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdHlsZUNsYXNzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgICBASW5wdXQoJ3BTdHlsZUNsYXNzJykgc2VsZWN0b3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyQWN0aXZlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyVG9DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVBY3RpdmVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVUb0NsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBoaWRlT25PdXRzaWRlQ2xpY2s6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0b2dnbGVDbGFzczogc3RyaW5nO1xuXG4gICAgZXZlbnRMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBkb2N1bWVudExpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIHRhcmdldDogSFRNTEVsZW1lbnQ7XG5cbiAgICBlbnRlckxpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIGxlYXZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgYW5pbWF0aW5nOiBib29sZWFuO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0ID0gdGhpcy5yZXNvbHZlVGFyZ2V0KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMudG9nZ2xlQ2xhc3MpKVxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLnRvZ2dsZUNsYXNzKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMudG9nZ2xlQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0Lm9mZnNldFBhcmVudCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRlcigpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWF2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBlbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZW50ZXJBY3RpdmVDbGFzcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFuaW1hdGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQWN0aXZlQ2xhc3MgPT09ICdzbGlkZWRvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnN0eWxlLm1heEhlaWdodCA9IHRoaXMudGFyZ2V0LnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlckFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbnRlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsICdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJBY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyVG9DbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlclRvQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJMaXN0ZW5lcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQWN0aXZlQ2xhc3MgPT09ICdzbGlkZWRvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5zdHlsZS5tYXhIZWlnaHQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJDbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJDbGFzcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmVudGVyVG9DbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJUb0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZGVPbk91dHNpZGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGVhdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlYXZlQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hbmltYXRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5sZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sZWF2ZUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sZWF2ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsICdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlVG9DbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5sZWF2ZVRvQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGVhdmVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubGVhdmVDbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVDbGFzcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlVG9DbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVUb0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZGVPbk91dHNpZGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNvbHZlVGFyZ2V0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3Rvcikge1xuICAgICAgICAgICAgY2FzZSAnQG5leHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgICAgICBjYXNlICdAcHJldic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgICAgICBjYXNlICdAcGFyZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNhc2UgJ0BncmFuZHBhcmVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5zZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LCAnY2xpY2snLCBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGhpcy50YXJnZXQpLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlICBpZiAoIXRoaXMuZWwubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgJiYgIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmwqAhdGhpcy50YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxlYXZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5ldmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50TGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1N0eWxlQ2xhc3NdLFxuICAgIGRlY2xhcmF0aW9uczogW1N0eWxlQ2xhc3NdXG59KVxuZXhwb3J0IGNsYXNzIFN0eWxlQ2xhc3NNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/table/primeng-table.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/table/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/table/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJsZS9wcmltZW5nLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/table/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/table/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/table/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './table';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJsZS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/table/table.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/table/table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/table/table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4549 @@
+import { NgModule, Component, HostListener, Directive, Optional, Input, Output, EventEmitter, ContentChildren, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { PrimeTemplate, SharedModule, FilterMatchMode, FilterOperator, TranslationKeys } from 'primeng/api';
+import { PaginatorModule } from 'primeng/paginator';
+import { InputTextModule } from 'primeng/inputtext';
+import { ButtonModule } from 'primeng/button';
+import { SelectButtonModule } from 'primeng/selectbutton';
+import { TriStateCheckboxModule } from 'primeng/tristatecheckbox';
+import { CalendarModule } from 'primeng/calendar';
+import { InputNumberModule } from 'primeng/inputnumber';
+import { DropdownModule } from 'primeng/dropdown';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import { trigger, style, transition, animate } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "primeng/paginator";
+import * as i3 from "@angular/cdk/scrolling";
+import * as i4 from "@angular/common";
+import * as i5 from "primeng/inputnumber";
+import * as i6 from "primeng/tristatecheckbox";
+import * as i7 from "primeng/calendar";
+import * as i8 from "primeng/inputtext";
+import * as i9 from "@angular/forms";
+import * as i10 from "primeng/dropdown";
+import * as i11 from "primeng/button";
+export class TableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.valueSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.columnsSource = new Subject();
+        this.resetSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.valueSource$ = this.valueSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+        this.columnsSource$ = this.columnsSource.asObservable();
+        this.resetSource$ = this.resetSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onResetChange() {
+        this.resetSource.next(null);
+    }
+    onContextMenu(data) {
+        this.contextMenuSource.next(data);
+    }
+    onValueChange(value) {
+        this.valueSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+    onColumnsChange(columns) {
+        this.columnsSource.next(columns);
+    }
+}
+TableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, decorators: [{
+            type: Injectable
+        }] });
+export class Table {
+    constructor(el, zone, tableService, cd, filterService, overlayService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.overlayService = overlayService;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.rowTrackBy = (index, item) => item;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.compareSelectionBy = 'deepEquals';
+        this.csvSeparator = ',';
+        this.exportFilename = 'download';
+        this.filters = {};
+        this.filterDelay = 300;
+        this.expandedRowKeys = {};
+        this.editingRowKeys = {};
+        this.rowExpandMode = 'multiple';
+        this.scrollDirection = "vertical";
+        this.virtualScrollDelay = 250;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.showInitialSortBadge = true;
+        this.stateStorage = 'session';
+        this.editMode = 'cell';
+        this.groupRowsByOrder = 1;
+        this.responsiveLayout = 'stack';
+        this.breakpoint = '960px';
+        this.onRowSelect = new EventEmitter();
+        this.onRowUnselect = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.onRowExpand = new EventEmitter();
+        this.onRowCollapse = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onRowReorder = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.firstChange = new EventEmitter();
+        this.rowsChange = new EventEmitter();
+        this.onStateSave = new EventEmitter();
+        this.onStateRestore = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._first = 0;
+        this.selectionKeys = {};
+        this._sortOrder = 1;
+        this.columnResizing = false;
+        this.rowGroupHeaderStyleObject = {};
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            if (!this.virtualScroll) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            if (this.restoringFilter) {
+                this.restoringFilter = false;
+            }
+        }
+        if (this.responsiveLayout === 'stack' && !this.scrollable) {
+            this.createResponsiveStyle();
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'headergrouped':
+                    this.headerGroupedTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'footergrouped':
+                    this.footerGroupedTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'rowexpansion':
+                    this.expandedRowTemplate = item.template;
+                    break;
+                case 'groupheader':
+                    this.groupHeaderTemplate = item.template;
+                    break;
+                case 'rowspan':
+                    this.rowspanTemplate = item.template;
+                    break;
+                case 'groupfooter':
+                    this.groupFooterTemplate = item.template;
+                    break;
+                case 'frozenrows':
+                    this.frozenRowsTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+                case 'frozenrowexpansion':
+                    this.frozenExpandedRowTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.isStateful() && this.resizableColumns) {
+            this.restoreColumnWidths();
+        }
+        if (this.scrollable && this.virtualScroll) {
+            this.virtualScrollSubscription = this.virtualScrollBody.renderedRangeStream.subscribe(range => {
+                let top = range.start * this.virtualRowHeight * -1;
+                this.tableHeaderViewChild.nativeElement.style.top = top + 'px';
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.isStateful() && !this.stateRestored) {
+                this.restoreState();
+            }
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.tableService.onValueChange(simpleChange.value.currentValue);
+        }
+        if (simpleChange.columns) {
+            this._columns = simpleChange.columns.currentValue;
+            this.tableService.onColumnsChange(simpleChange.columns.currentValue);
+            if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored) {
+                this.restoreColumnOrder();
+            }
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsBy) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsByOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    get columns() {
+        return this._columns;
+    }
+    set columns(cols) {
+        this._columns = cols;
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    get rows() {
+        return this._rows;
+    }
+    set rows(val) {
+        this._rows = val;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    get dataToRender() {
+        let data = this.filteredValue || this.value;
+        return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let data of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.firstChange.emit(this.first);
+        this.rowsChange.emit(this.rows);
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            if (this.resetPageOnSort) {
+                this._first = 0;
+                this.firstChange.emit(this._first);
+                if (this.scrollable) {
+                    this.resetScrollTop();
+                }
+            }
+            this.sortSingle();
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                        if (this.scrollable) {
+                            this.resetScrollTop();
+                        }
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                    }
+                }
+                this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+    }
+    sortSingle() {
+        let field = this.sortField || this.groupRowsBy;
+        let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;
+        if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {
+            this._multiSortMeta = [this.getGroupRowsMeta(), { field: this.sortField, order: this.sortOrder }];
+            this.sortMultiple();
+            return;
+        }
+        if (field && order) {
+            if (this.restoringSort) {
+                this.restoringSort = false;
+            }
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        field: field,
+                        order: order
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        let value1 = ObjectUtils.resolveFieldData(data1, field);
+                        let value2 = ObjectUtils.resolveFieldData(data2, field);
+                        let result = null;
+                        if (value1 == null && value2 != null)
+                            result = -1;
+                        else if (value1 != null && value2 == null)
+                            result = 1;
+                        else if (value1 == null && value2 == null)
+                            result = 0;
+                        else if (typeof value1 === 'string' && typeof value2 === 'string')
+                            result = value1.localeCompare(value2);
+                        else
+                            result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                        return (order * result);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: field,
+                order: order
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+        }
+    }
+    sortMultiple() {
+        if (this.groupRowsBy) {
+            if (!this._multiSortMeta)
+                this._multiSortMeta = [this.getGroupRowsMeta()];
+            else if (this.multiSortMeta[0].field !== this.groupRowsBy)
+                this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta];
+        }
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        return this.multisortField(data1, data2, this.multiSortMeta, 0);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    multisortField(data1, data2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        else if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    handleRowClick(event) {
+        let target = event.originalEvent.target;
+        let targetNode = target.nodeName;
+        let parentNode = target.parentElement && target.parentElement.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||
+            parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||
+            (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {
+                DomHandler.clearSelection();
+                if (this.rangeRowIndex != null) {
+                    this.clearSelectionRange(event.originalEvent);
+                }
+                this.rangeRowIndex = event.rowIndex;
+                this.selectRange(event.originalEvent, event.rowIndex);
+            }
+            else {
+                let rowData = event.rowData;
+                let selected = this.isSelected(rowData);
+                let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                this.anchorRowIndex = event.rowIndex;
+                this.rangeRowIndex = event.rowIndex;
+                if (metaSelection) {
+                    let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = rowData;
+                            this.selectionChange.emit(rowData);
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            if (metaKey) {
+                                this._selection = this.selection || [];
+                            }
+                            else {
+                                this._selection = [];
+                                this.selectionKeys = {};
+                            }
+                            this._selection = [...this.selection, rowData];
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                    }
+                }
+                else {
+                    if (this.selectionMode === 'single') {
+                        if (selected) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                        }
+                        else {
+                            this._selection = rowData;
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                    else if (this.selectionMode === 'multiple') {
+                        if (selected) {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        else {
+                            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const rowData = event.rowData;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = rowData;
+                this.contextMenuSelectionChange.emit(rowData);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, data: rowData, index: event.rowIndex });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(rowData);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(rowData);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = rowData;
+                        this.selectionChange.emit(rowData);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                this.tableService.onSelectionChange();
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event, data: rowData, index: event.rowIndex });
+            }
+        }
+    }
+    selectRange(event, rowIndex) {
+        let rangeStart, rangeEnd;
+        if (this.anchorRowIndex > rowIndex) {
+            rangeStart = rowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else if (this.anchorRowIndex < rowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = rowIndex;
+        }
+        else {
+            rangeStart = rowIndex;
+            rangeEnd = rowIndex;
+        }
+        if (this.lazy && this.paginator) {
+            rangeStart -= this.first;
+            rangeEnd -= this.first;
+        }
+        let rangeRowsData = [];
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];
+            if (!this.isSelected(rangeRowData)) {
+                rangeRowsData.push(rangeRowData);
+                this._selection = [...this.selection, rangeRowData];
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+        }
+        this.selectionChange.emit(this.selection);
+        this.onRowSelect.emit({ originalEvent: event, data: rangeRowsData, type: 'row' });
+    }
+    clearSelectionRange(event) {
+        let rangeStart, rangeEnd;
+        if (this.rangeRowIndex > this.anchorRowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        else if (this.rangeRowIndex < this.anchorRowIndex) {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.value[i];
+            let selectionIndex = this.findIndexInSelection(rangeRowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+            this.onRowUnselect.emit({ originalEvent: event, data: rangeRowData, type: 'row' });
+        }
+    }
+    isSelected(rowData) {
+        if (rowData && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(rowData) > -1;
+                else
+                    return this.equals(rowData, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(rowData) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(rowData, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    toggleRowWithRadio(event, rowData) {
+        this.preventSelectionSetterPropagation = true;
+        if (this.selection != rowData) {
+            this._selection = rowData;
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+            if (this.dataKey) {
+                this.selectionKeys = {};
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;
+            }
+        }
+        else {
+            this._selection = null;
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowWithCheckbox(event, rowData) {
+        this.selection = this.selection || [];
+        let selected = this.isSelected(rowData);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+        this.preventSelectionSetterPropagation = true;
+        if (selected) {
+            let selectionIndex = this.findIndexInSelection(rowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        else {
+            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowsWithCheckbox(event, check) {
+        this._selection = check ? this.filteredValue ? this.filteredValue.slice() : this.value.slice() : [];
+        this.preventSelectionSetterPropagation = true;
+        this.updateSelectionKeys();
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    equals(data1, data2) {
+        return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);
+    }
+    /* Legacy Filtering for custom elements */
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+        this.anchorRowIndex = null;
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (!this.restoringFilter) {
+            this.first = 0;
+            this.firstChange.emit(this.first);
+        }
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredValue = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredValue = [];
+                for (let i = 0; i < this.value.length; i++) {
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let localFiltered = false;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            localFiltered = true;
+                            let filterField = prop;
+                            let filterMeta = this.filters[filterField];
+                            if (Array.isArray(filterMeta)) {
+                                for (let meta of filterMeta) {
+                                    localMatch = this.executeLocalFilter(filterField, this.value[i], meta);
+                                    if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {
+                                        break;
+                                    }
+                                }
+                            }
+                            else {
+                                localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let globalFilterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            globalMatch = this.filterService.filters[this.filters['global'].matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), this.filters['global'].value, this.filterLocale);
+                            if (globalMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    let matches;
+                    if (this.filters['global']) {
+                        matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;
+                    }
+                    else {
+                        matches = localFiltered && localMatch;
+                    }
+                    if (matches) {
+                        this.filteredValue.push(this.value[i]);
+                    }
+                }
+                if (this.filteredValue.length === this.value.length) {
+                    this.filteredValue = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: this.filteredValue || this.value
+        });
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful() && !this.restoringFilter) {
+            this.saveState();
+        }
+        if (this.restoringFilter) {
+            this.restoringFilter = false;
+        }
+        this.cd.markForCheck();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    executeLocalFilter(field, rowData, filterMeta) {
+        let filterValue = filterMeta.value;
+        let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;
+        let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);
+        let filterConstraint = this.filterService.filters[filterMatchMode];
+        return filterConstraint(dataFieldValue, filterValue, this.filterLocale);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    clear() {
+        this._sortField = null;
+        this._sortOrder = this.defaultSortOrder;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredValue = null;
+        this.tableService.onResetChange();
+        this.first = 0;
+        this.firstChange.emit(this.first);
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    reset() {
+        this.clear();
+    }
+    exportCSV(options) {
+        let data;
+        let csv = '';
+        let columns = this.frozenColumns ? [...this.frozenColumns, ...this.columns] : this.columns;
+        if (options && options.selectionOnly) {
+            data = this.selection || [];
+        }
+        else {
+            data = this.filteredValue || this.value;
+            if (this.frozenValue) {
+                data = data ? [...this.frozenValue, ...data] : this.frozenValue;
+            }
+        }
+        //headers
+        for (let i = 0; i < columns.length; i++) {
+            let column = columns[i];
+            if (column.exportable !== false && column.field) {
+                csv += '"' + (column.header || column.field) + '"';
+                if (i < (columns.length - 1)) {
+                    csv += this.csvSeparator;
+                }
+            }
+        }
+        //body
+        data.forEach((record, i) => {
+            csv += '\n';
+            for (let i = 0; i < columns.length; i++) {
+                let column = columns[i];
+                if (column.exportable !== false && column.field) {
+                    let cellData = ObjectUtils.resolveFieldData(record, column.field);
+                    if (cellData != null) {
+                        if (this.exportFunction) {
+                            cellData = this.exportFunction({
+                                data: cellData,
+                                field: column.field
+                            });
+                        }
+                        else
+                            cellData = String(cellData).replace(/"/g, '""');
+                    }
+                    else
+                        cellData = '';
+                    csv += '"' + cellData + '"';
+                    if (i < (columns.length - 1)) {
+                        csv += this.csvSeparator;
+                    }
+                }
+            }
+        });
+        let blob = new Blob([csv], {
+            type: 'text/csv;charset=utf-8;'
+        });
+        let link = document.createElement("a");
+        link.style.display = 'none';
+        document.body.appendChild(link);
+        if (link.download !== undefined) {
+            link.setAttribute('href', URL.createObjectURL(blob));
+            link.setAttribute('download', this.exportFilename + '.csv');
+            link.click();
+        }
+        else {
+            csv = 'data:text/csv;charset=utf-8,' + csv;
+            window.open(encodeURI(csv));
+        }
+        document.body.removeChild(link);
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({
+                        first: virtualScrollOffset,
+                        rows: virtualScrollChunkSize,
+                        sortField: this.sortField,
+                        sortOrder: this.sortOrder,
+                        filters: this.filters,
+                        globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+            }, this.virtualScrollDelay);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.wrapperViewChild.nativeElement.scrollTo) {
+                this.wrapperViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.wrapperViewChild.nativeElement.scrollLeft = options.left;
+                this.wrapperViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    updateEditingCell(cell, data, field, index) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.editingCellRowIndex = index;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.editingCellRowIndex = null;
+                    this.unbindDocumentEditListener();
+                    this.cd.markForCheck();
+                    if (this.overlaySubscription) {
+                        this.overlaySubscription.unsubscribe();
+                    }
+                }
+                this.selfClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    initRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        this.editingRowKeys[dataKeyValue] = true;
+    }
+    saveRowEdit(rowData, rowElement) {
+        if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {
+            let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+            delete this.editingRowKeys[dataKeyValue];
+        }
+    }
+    cancelRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        delete this.editingRowKeys[dataKeyValue];
+    }
+    toggleRow(rowData, event) {
+        if (!this.dataKey) {
+            throw new Error('dataKey must be defined to use row expansion');
+        }
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        if (this.expandedRowKeys[dataKeyValue] != null) {
+            delete this.expandedRowKeys[dataKeyValue];
+            this.onRowCollapse.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        else {
+            if (this.rowExpandMode === 'single') {
+                this.expandedRowKeys = {};
+            }
+            this.expandedRowKeys[dataKeyValue] = true;
+            this.onRowExpand.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        if (event) {
+            event.preventDefault();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    isRowExpanded(rowData) {
+        return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isRowEditing(rowData) {
+        return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.resizeColumnElement = event.target.parentElement;
+        this.columnResizing = true;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        this.onColumnResize(event);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd() {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = this.resizeColumnElement.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = this.resizeColumnElement.style.minWidth || 15;
+        if (newColumnWidth >= minWidth) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = this.resizeColumnElement.nextElementSibling;
+                let nextColumnWidth = nextColumn.offsetWidth - delta;
+                if (newColumnWidth > 15 && nextColumnWidth > 15) {
+                    if (!this.scrollable) {
+                        this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                        if (nextColumn) {
+                            nextColumn.style.width = nextColumnWidth + 'px';
+                        }
+                    }
+                    else {
+                        this.resizeTableCells(newColumnWidth, nextColumnWidth);
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;
+                this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';
+                this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                if (!this.scrollable)
+                    this.tableViewChild.nativeElement.style.width = tableWidth + 'px';
+                else
+                    this.resizeTableCells(newColumnWidth, null);
+            }
+            this.onColResize.emit({
+                element: this.resizeColumnElement,
+                delta: delta
+            });
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    resizeTableCells(newColumnWidth, nextColumnWidth) {
+        let colIndex = DomHandler.index(this.resizeColumnElement);
+        let widths = [];
+        const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');
+        let headers = DomHandler.find(tableHead, 'tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        this.destroyStyleElement();
+        this.createStyleElement();
+        let innerHTML = '';
+        widths.forEach((width, index) => {
+            let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;
+            innerHTML += `
+                #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+
+                #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+            `;
+        });
+        this.styleElement.innerHTML = innerHTML;
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+                let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+                }
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+                if (this.isStateful()) {
+                    this.zone.runOutsideAngular(() => {
+                        setTimeout(() => {
+                            this.saveState();
+                        });
+                    });
+                }
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    onRowDragStart(event, index) {
+        this.rowDragging = true;
+        this.draggedRowIndex = index;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onRowDragOver(event, index, rowElement) {
+        if (this.rowDragging && this.draggedRowIndex !== index) {
+            let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();
+            let pageY = event.pageY;
+            let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;
+            let prevRowElement = rowElement.previousElementSibling;
+            if (pageY < rowMidY) {
+                DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+                this.droppedRowIndex = index;
+                if (prevRowElement)
+                    DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+            }
+            else {
+                if (prevRowElement)
+                    DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+                this.droppedRowIndex = index + 1;
+                DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');
+            }
+        }
+    }
+    onRowDragLeave(event, rowElement) {
+        let prevRowElement = rowElement.previousElementSibling;
+        if (prevRowElement) {
+            DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+        }
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');
+    }
+    onRowDragEnd(event) {
+        this.rowDragging = false;
+        this.draggedRowIndex = null;
+        this.droppedRowIndex = null;
+    }
+    onRowDrop(event, rowElement) {
+        if (this.droppedRowIndex != null) {
+            let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;
+            ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);
+            this.onRowReorder.emit({
+                dragIndex: this.draggedRowIndex,
+                dropIndex: dropIndex
+            });
+        }
+        //cleanup
+        this.onRowDragLeave(event, rowElement);
+        this.onRowDragEnd(event);
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    saveState() {
+        const storage = this.getStorage();
+        let state = {};
+        if (this.paginator) {
+            state.first = this.first;
+            state.rows = this.rows;
+        }
+        if (this.sortField) {
+            state.sortField = this.sortField;
+            state.sortOrder = this.sortOrder;
+        }
+        if (this.multiSortMeta) {
+            state.multiSortMeta = this.multiSortMeta;
+        }
+        if (this.hasFilter()) {
+            state.filters = this.filters;
+        }
+        if (this.resizableColumns) {
+            this.saveColumnWidths(state);
+        }
+        if (this.reorderableColumns) {
+            this.saveColumnOrder(state);
+        }
+        if (this.selection) {
+            state.selection = this.selection;
+        }
+        if (Object.keys(this.expandedRowKeys).length) {
+            state.expandedRowKeys = this.expandedRowKeys;
+        }
+        storage.setItem(this.stateKey, JSON.stringify(state));
+        this.onStateSave.emit(state);
+    }
+    clearState() {
+        const storage = this.getStorage();
+        if (this.stateKey) {
+            storage.removeItem(this.stateKey);
+        }
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        const dateFormat = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
+        const reviver = function (key, value) {
+            if (typeof value === "string" && dateFormat.test(value)) {
+                return new Date(value);
+            }
+            return value;
+        };
+        if (stateString) {
+            let state = JSON.parse(stateString, reviver);
+            if (this.paginator) {
+                if (this.first !== undefined) {
+                    this.first = state.first;
+                    this.firstChange.emit(this.first);
+                }
+                if (this.rows !== undefined) {
+                    this.rows = state.rows;
+                    this.rowsChange.emit(this.rows);
+                }
+            }
+            if (state.sortField) {
+                this.restoringSort = true;
+                this._sortField = state.sortField;
+                this._sortOrder = state.sortOrder;
+            }
+            if (state.multiSortMeta) {
+                this.restoringSort = true;
+                this._multiSortMeta = state.multiSortMeta;
+            }
+            if (state.filters) {
+                this.restoringFilter = true;
+                this.filters = state.filters;
+            }
+            if (this.resizableColumns) {
+                this.columnWidthsState = state.columnWidths;
+                this.tableWidthState = state.tableWidth;
+            }
+            if (state.expandedRowKeys) {
+                this.expandedRowKeys = state.expandedRowKeys;
+            }
+            if (state.selection) {
+                Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));
+            }
+            this.stateRestored = true;
+            this.onStateRestore.emit(state);
+        }
+    }
+    saveColumnWidths(state) {
+        let widths = [];
+        let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        state.columnWidths = widths.join(',');
+        if (this.columnResizeMode === 'expand') {
+            state.tableWidth = DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';
+        }
+    }
+    restoreColumnWidths() {
+        if (this.columnWidthsState) {
+            let widths = this.columnWidthsState.split(',');
+            if (this.columnResizeMode === 'expand' && this.tableWidthState) {
+                this.tableViewChild.nativeElement.style.width = this.tableWidthState;
+                this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;
+                this.containerViewChild.nativeElement.style.width = this.tableWidthState;
+            }
+            this.createStyleElement();
+            if (this.scrollable && widths && widths.length > 0) {
+                let innerHTML = '';
+                widths.forEach((width, index) => {
+                    innerHTML += `
+                            #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+
+                            #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+                        `;
+                });
+                this.styleElement.innerHTML = innerHTML;
+            }
+            else {
+                DomHandler.find(this.tableViewChild.nativeElement, '.p-datatable-thead > tr > th').forEach((header, index) => {
+                    header.style.width = widths[index] + 'px';
+                });
+            }
+        }
+    }
+    saveColumnOrder(state) {
+        if (this.columns) {
+            let columnOrder = [];
+            this.columns.map(column => {
+                columnOrder.push(column.field || column.key);
+            });
+            state.columnOrder = columnOrder;
+        }
+    }
+    restoreColumnOrder() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            let state = JSON.parse(stateString);
+            let columnOrder = state.columnOrder;
+            if (columnOrder) {
+                let reorderedColumns = [];
+                columnOrder.map(key => {
+                    let col = this.findColumnByKey(key);
+                    if (col) {
+                        reorderedColumns.push(col);
+                    }
+                });
+                this.columnOrderStateRestored = true;
+                this.columns = reorderedColumns;
+            }
+        }
+    }
+    findColumnByKey(key) {
+        if (this.columns) {
+            for (let col of this.columns) {
+                if (col.key === key || col.field === key)
+                    return col;
+                else
+                    continue;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    createStyleElement() {
+        this.styleElement = document.createElement('style');
+        this.styleElement.type = 'text/css';
+        document.head.appendChild(this.styleElement);
+    }
+    getGroupRowsMeta() {
+        return { field: this.groupRowsBy, order: this.groupRowsByOrder };
+    }
+    createResponsiveStyle() {
+        if (!this.responsiveStyleElement) {
+            this.responsiveStyleElement = document.createElement('style');
+            this.responsiveStyleElement.type = 'text/css';
+            document.head.appendChild(this.responsiveStyleElement);
+            let innerHTML = `
+@media screen and (max-width: ${this.breakpoint}) {
+    #${this.id} .p-datatable-thead > tr > th,
+    #${this.id} .p-datatable-tfoot > tr > td {
+        display: none !important;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td {
+        display: flex;
+        width: 100% !important;
+        align-items: center;
+        justify-content: space-between;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {
+        border: 0 none;
+    }
+
+    #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {
+        border-top: 0;
+        border-right: 0;
+        border-left: 0;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td > .p-column-title {
+        display: block;
+    }
+}
+`;
+            this.responsiveStyleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyResponsiveStyle() {
+        if (this.responsiveStyleElement) {
+            document.head.removeChild(this.responsiveStyleElement);
+            this.responsiveStyleElement = null;
+        }
+    }
+    destroyStyleElement() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.initialized = null;
+        if (this.virtualScrollSubscription) {
+            this.virtualScrollSubscription.unsubscribe();
+        }
+        this.destroyStyleElement();
+        this.destroyResponsiveStyle();
+    }
+}
+Table.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Table, selector: "p-table", inputs: { frozenColumns: "frozenColumns", frozenValue: "frozenValue", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", paginator: "paginator", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", rowTrackBy: "rowTrackBy", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", compareSelectionBy: "compareSelectionBy", csvSeparator: "csvSeparator", exportFilename: "exportFilename", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterLocale: "filterLocale", expandedRowKeys: "expandedRowKeys", editingRowKeys: "editingRowKeys", rowExpandMode: "rowExpandMode", scrollable: "scrollable", scrollDirection: "scrollDirection", rowGroupMode: "rowGroupMode", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", frozenWidth: "frozenWidth", responsive: "responsive", contextMenu: "contextMenu", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", rowHover: "rowHover", customSort: "customSort", showInitialSortBadge: "showInitialSortBadge", autoLayout: "autoLayout", exportFunction: "exportFunction", stateKey: "stateKey", stateStorage: "stateStorage", editMode: "editMode", groupRowsBy: "groupRowsBy", groupRowsByOrder: "groupRowsByOrder", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", responsiveLayout: "responsiveLayout", breakpoint: "breakpoint", value: "value", columns: "columns", first: "first", rows: "rows", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect", onPage: "onPage", onSort: "onSort", onFilter: "onFilter", onLazyLoad: "onLazyLoad", onRowExpand: "onRowExpand", onRowCollapse: "onRowCollapse", onContextMenuSelect: "onContextMenuSelect", onColResize: "onColResize", onColReorder: "onColReorder", onRowReorder: "onRowReorder", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", sortFunction: "sortFunction", firstChange: "firstChange", rowsChange: "rowsChange", onStateSave: "onStateSave", onStateRestore: "onStateRestore" }, host: { classAttribute: "p-element" }, providers: [TableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "tableHeaderViewChild", first: true, predicate: ["tableHeader"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TableBody; }), selector: "[pTableBody]", inputs: ["pTableBody", "pTableBodyTemplate", "value", "frozen", "frozenRows"] }, { type: i0.forwardRef(function () { return i3.CdkVirtualScrollViewport; }), selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i0.forwardRef(function () { return i3.CdkFixedSizeVirtualScroll; }), selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-table', template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TableService], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.OverlayService }]; }, propDecorators: { frozenColumns: [{
+                type: Input
+            }], frozenValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], csvSeparator: [{
+                type: Input
+            }], exportFilename: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], expandedRowKeys: [{
+                type: Input
+            }], editingRowKeys: [{
+                type: Input
+            }], rowExpandMode: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollDirection: [{
+                type: Input
+            }], rowGroupMode: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], showInitialSortBadge: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], exportFunction: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], editMode: [{
+                type: Input
+            }], groupRowsBy: [{
+                type: Input
+            }], groupRowsByOrder: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], responsiveLayout: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onRowSelect: [{
+                type: Output
+            }], onRowUnselect: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], onRowExpand: [{
+                type: Output
+            }], onRowCollapse: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onRowReorder: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], firstChange: [{
+                type: Output
+            }], rowsChange: [{
+                type: Output
+            }], onStateSave: [{
+                type: Output
+            }], onStateRestore: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], wrapperViewChild: [{
+                type: ViewChild,
+                args: ['wrapper']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], tableHeaderViewChild: [{
+                type: ViewChild,
+                args: ['tableHeader']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], columns: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+export class TableBody {
+    constructor(dt, tableService, cd, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.el = el;
+        this.subscription = this.dt.tableService.valueSource$.subscribe(() => {
+            if (this.dt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    shouldRenderRowGroupHeader(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowGroupFooter(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowData = value[i + 1];
+        if (nextRowData) {
+            let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== nextRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowspan(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    calculateRowGroupSize(value, rowData, index) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowFieldData = currentRowFieldData;
+        let groupRowSpan = 0;
+        while (currentRowFieldData === nextRowFieldData) {
+            groupRowSpan++;
+            let nextRowData = value[++index];
+            if (nextRowData) {
+                nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            }
+            else {
+                break;
+            }
+        }
+        return groupRowSpan === 1 ? null : groupRowSpan;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+    updateFrozenRowStickyPosition() {
+        this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';
+    }
+    updateFrozenRowGroupHeaderStickyPosition() {
+        if (this.el.nativeElement.previousElementSibling) {
+            let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);
+            this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';
+        }
+    }
+}
+TableBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+TableBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableBody, selector: "[pTableBody]", inputs: { columns: ["pTableBody", "columns"], template: ["pTableBodyTemplate", "template"], value: "value", frozen: "frozen", frozenRows: "frozenRows" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTableBody]',
+                    template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.Default,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTableBodyTemplate"]
+            }], value: [{
+                type: Input
+            }], frozen: [{
+                type: Input
+            }], frozenRows: [{
+                type: Input
+            }] } });
+export class RowGroupHeader {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    get getFrozenRowGroupHeaderStickyPosition() {
+        return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';
+    }
+}
+RowGroupHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowGroupHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowGroupHeader, selector: "[pRowGroupHeader]", host: { properties: { "style.top": "getFrozenRowGroupHeaderStickyPosition" }, classAttribute: "p-rowgroup-header p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowGroupHeader]',
+                    host: {
+                        'class': 'p-rowgroup-header p-element',
+                        '[style.top]': "getFrozenRowGroupHeaderStickyPosition"
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; } });
+export class FrozenColumn {
+    constructor(el) {
+        this.el = el;
+        this.alignFrozen = "left";
+        this._frozen = true;
+    }
+    get frozen() {
+        return this._frozen;
+    }
+    set frozen(val) {
+        this._frozen = val;
+        this.updateStickyPosition();
+    }
+    ngAfterViewInit() {
+        this.updateStickyPosition();
+    }
+    updateStickyPosition() {
+        if (this._frozen) {
+            if (this.alignFrozen === 'right') {
+                let right = 0;
+                let next = this.el.nativeElement.nextElementSibling;
+                if (next) {
+                    right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right);
+                }
+                this.el.nativeElement.style.right = right + 'px';
+            }
+            else {
+                let left = 0;
+                let prev = this.el.nativeElement.previousElementSibling;
+                if (prev) {
+                    left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);
+                }
+                this.el.nativeElement.style.left = left + 'px';
+            }
+            let filterRow = this.el.nativeElement.parentElement.nextElementSibling;
+            if (filterRow) {
+                let index = DomHandler.index(this.el.nativeElement);
+                if (filterRow.children && filterRow.children[index]) {
+                    filterRow.children[index].style.left = this.el.nativeElement.style.left;
+                    filterRow.children[index].style.right = this.el.nativeElement.style.right;
+                }
+            }
+        }
+    }
+}
+FrozenColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FrozenColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FrozenColumn, selector: "[pFrozenColumn]", inputs: { frozen: "frozen", alignFrozen: "alignFrozen" }, host: { properties: { "class.p-frozen-column": "frozen" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFrozenColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-frozen-column]': 'frozen'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { frozen: [{
+                type: Input
+            }], alignFrozen: [{
+                type: Input
+            }] } });
+export class SortableColumn {
+    constructor(dt) {
+        this.dt = dt;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.dt.isSorted(this.field);
+        this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';
+    }
+    onClick(event) {
+        if (this.isEnabled() && !this.isFilterElement(event.target)) {
+            this.updateSortState();
+            this.dt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.pSortableColumnDisabled !== true;
+    }
+    isFilterElement(element) {
+        return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+SortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SortableColumn, selector: "[pSortableColumn]", inputs: { field: ["pSortableColumn", "field"], pSortableColumnDisabled: "pSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"", "attr.aria-sort": "sortOrder" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"',
+                        '[attr.aria-sort]': 'sortOrder'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["pSortableColumn"]
+            }], pSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+export class SortIcon {
+    constructor(dt, cd) {
+        this.dt = dt;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.dt.sortMode === 'single') {
+            this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;
+        }
+        else if (this.dt.sortMode === 'multiple') {
+            let sortMeta = this.dt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+        this.cd.markForCheck();
+    }
+    getMultiSortMetaIndex() {
+        let multiSortMeta = this.dt._multiSortMeta;
+        let index = -1;
+        if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {
+            for (let i = 0; i < multiSortMeta.length; i++) {
+                let meta = multiSortMeta[i];
+                if (meta.field === this.field || meta.field === this.field) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    getBadgeValue() {
+        let index = this.getMultiSortMetaIndex();
+        return this.dt.groupRowsBy && index > -1 ? index : index + 1;
+    }
+    isMultiSorted() {
+        return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, deps: [{ token: Table }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SortIcon, selector: "p-sortIcon", inputs: { field: "field" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-sortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }] } });
+export class SelectableRow {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowTouchEnd(event);
+        }
+    }
+    onArrowDownKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const nextRow = this.findNextSelectableRow(row);
+        if (nextRow) {
+            nextRow.focus();
+        }
+        event.preventDefault();
+    }
+    onArrowUpKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const prevRow = this.findPrevSelectableRow(row);
+        if (prevRow) {
+            prevRow.focus();
+        }
+        event.preventDefault();
+    }
+    onEnterKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        this.dt.handleRowClick({
+            originalEvent: event,
+            rowData: this.data,
+            rowIndex: this.index
+        });
+    }
+    onPageDownKeyDown() {
+        if (this.dt.virtualScroll) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    onSpaceKeydown() {
+        if (this.dt.virtualScroll && !this.dt.editingCell) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    findNextSelectableRow(row) {
+        let nextRow = row.nextElementSibling;
+        if (nextRow) {
+            if (DomHandler.hasClass(nextRow, 'p-selectable-row'))
+                return nextRow;
+            else
+                return this.findNextSelectableRow(nextRow);
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevSelectableRow(row) {
+        let prevRow = row.previousElementSibling;
+        if (prevRow) {
+            if (DomHandler.hasClass(prevRow, 'p-selectable-row'))
+                return prevRow;
+            else
+                return this.findPrevSelectableRow(prevRow);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRow, selector: "[pSelectableRow]", inputs: { data: ["pSelectableRow", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "touchend": "onTouchEnd($event)", "keydown.arrowdown": "onArrowDownKeyDown($event)", "keydown.arrowup": "onArrowUpKeyDown($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.shift.enter": "onEnterKeyDown($event)", "keydown.meta.enter": "onEnterKeyDown($event)", "keydown.pagedown": "onPageDownKeyDown()", "keydown.pageup": "onPageDownKeyDown()", "keydown.home": "onPageDownKeyDown()", "keydown.end": "onPageDownKeyDown()", "keydown.space": "onSpaceKeydown()" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRow"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }], onArrowDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUpKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.enter', ['$event']]
+            }], onPageDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.pagedown']
+            }, {
+                type: HostListener,
+                args: ['keydown.pageup']
+            }, {
+                type: HostListener,
+                args: ['keydown.home']
+            }, {
+                type: HostListener,
+                args: ['keydown.end']
+            }], onSpaceKeydown: [{
+                type: HostListener,
+                args: ['keydown.space']
+            }] } });
+export class SelectableRowDblClick {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRowDblClick, selector: "[pSelectableRowDblClick]", inputs: { data: ["pSelectableRowDblClick", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRowDblClick"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+export class ContextMenuRow {
+    constructor(dt, tableService, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {
+                this.selected = this.dt.equals(this.data, data);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowRightClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, deps: [{ token: Table }, { token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuRow, selector: "[pContextMenuRow]", inputs: { data: ["pContextMenuRow", "data"], index: ["pContextMenuRowIndex", "index"], pContextMenuRowDisabled: "pContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pContextMenuRow"]
+            }], index: [{
+                type: Input,
+                args: ["pContextMenuRowIndex"]
+            }], pContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+export class RowToggler {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.toggleRow(this.data, event);
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pRowTogglerDisabled !== true;
+    }
+}
+RowToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowToggler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowToggler, selector: "[pRowToggler]", inputs: { data: ["pRowToggler", "data"], pRowTogglerDisabled: "pRowTogglerDisabled" }, host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowToggler]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ['pRowToggler']
+            }], pRowTogglerDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+export class ResizableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.which === 1) {
+            this.dt.onColumnResizeBegin(event);
+            this.bindDocumentEvents();
+        }
+    }
+    onDocumentMouseMove(event) {
+        this.dt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.dt.onColumnResizeEnd();
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.pResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+ResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ResizableColumn, selector: "[pResizableColumn]", inputs: { pResizableColumnDisabled: "pResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pResizableColumnDisabled: [{
+                type: Input
+            }] } });
+export class ReorderableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.dt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.dt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.dt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.dt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.pReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+ReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableColumn, selector: "[pReorderableColumn]", inputs: { pReorderableColumnDisabled: "pReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+export class EditableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.selfClick = true;
+            if (this.dt.editingCell) {
+                if (this.dt.editingCell !== this.el.nativeElement) {
+                    if (!this.dt.isEditingCellValid()) {
+                        return;
+                    }
+                    this.closeEditingCell(true, event);
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.dt.onEditInit.emit({ field: this.field, data: this.data, index: this.rowIndex });
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';
+                let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);
+                if (focusableElement) {
+                    focusableElement.focus();
+                }
+            }, 50);
+        });
+        this.overlayEventListener = (e) => {
+            if (this.el && this.el.nativeElement.contains(e.target)) {
+                this.dt.selfClick = true;
+            }
+        };
+        this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);
+    }
+    closeEditingCell(completed, event) {
+        if (completed)
+            this.dt.onEditComplete.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        else
+            this.dt.onEditCancel.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');
+        this.dt.editingCell = null;
+        this.dt.editingCellData = null;
+        this.dt.editingCellField = null;
+        this.dt.unbindDocumentEditListener();
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+    onEnterKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(true, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onEscapeKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(false, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onShiftKeyDown(event) {
+        if (this.isEnabled()) {
+            if (event.shiftKey)
+                this.moveToPreviousCell(event);
+            else {
+                this.moveToNextCell(event);
+            }
+        }
+    }
+    onArrowDown(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowUp(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowLeft(event) {
+        if (this.isEnabled()) {
+            this.moveToPreviousCell(event);
+        }
+    }
+    onArrowRight(event) {
+        if (this.isEnabled()) {
+            this.moveToNextCell(event);
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findPreviousEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findNextEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement.previousElementSibling;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement.nextElementSibling;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumnByIndex(cell, index) {
+        let nextRow = cell.parentElement.nextElementSibling;
+        if (nextRow) {
+            let nextCell = nextRow.children[index];
+            if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {
+                return nextCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevEditableColumnByIndex(cell, index) {
+        let prevRow = cell.parentElement.previousElementSibling;
+        if (prevRow) {
+            let prevCell = prevRow.children[index];
+            if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {
+                return prevCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pEditableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+}
+EditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+EditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableColumn, selector: "[pEditableColumn]", inputs: { data: ["pEditableColumn", "data"], field: ["pEditableColumnField", "field"], rowIndex: ["pEditableColumnRowIndex", "rowIndex"], pEditableColumnDisabled: "pEditableColumnDisabled", pFocusCellSelector: "pFocusCellSelector" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.escape": "onEscapeKeyDown($event)", "keydown.tab": "onShiftKeyDown($event)", "keydown.shift.tab": "onShiftKeyDown($event)", "keydown.meta.tab": "onShiftKeyDown($event)", "keydown.arrowdown": "onArrowDown($event)", "keydown.arrowup": "onArrowUp($event)", "keydown.arrowleft": "onArrowLeft($event)", "keydown.arrowright": "onArrowRight($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["pEditableColumnField"]
+            }], rowIndex: [{
+                type: Input,
+                args: ["pEditableColumnRowIndex"]
+            }], pEditableColumnDisabled: [{
+                type: Input
+            }], pFocusCellSelector: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }], onEscapeKeyDown: [{
+                type: HostListener,
+                args: ['keydown.escape', ['$event']]
+            }], onShiftKeyDown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.tab', ['$event']]
+            }], onArrowDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUp: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onArrowLeft: [{
+                type: HostListener,
+                args: ['keydown.arrowleft', ['$event']]
+            }], onArrowRight: [{
+                type: HostListener,
+                args: ['keydown.arrowright', ['$event']]
+            }] } });
+export class EditableRow {
+    constructor(el) {
+        this.el = el;
+    }
+    isEnabled() {
+        return this.pEditableRowDisabled !== true;
+    }
+}
+EditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+EditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableRow, selector: "[pEditableRow]", inputs: { data: ["pEditableRow", "data"], pEditableRowDisabled: "pEditableRowDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableRow"]
+            }], pEditableRowDisabled: [{
+                type: Input
+            }] } });
+export class InitEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.initRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+InitEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+InitEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InitEditableRow, selector: "[pInitEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInitEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+export class SaveEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);
+        event.preventDefault();
+    }
+}
+SaveEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+SaveEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SaveEditableRow, selector: "[pSaveEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSaveEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+export class CancelEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.cancelRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+CancelEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+CancelEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CancelEditableRow, selector: "[pCancelEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCancelEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+export class CellEditor {
+    constructor(dt, editableColumn, editableRow) {
+        this.dt = dt;
+        this.editableColumn = editableColumn;
+        this.editableRow = editableRow;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get editing() {
+        return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||
+            (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));
+    }
+}
+CellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, deps: [{ token: Table }, { token: EditableColumn, optional: true }, { token: EditableRow, optional: true }], target: i0.ɵɵFactoryTarget.Component });
+CellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CellEditor, selector: "p-cellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cellEditor',
+                    template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableColumn, decorators: [{
+                    type: Optional
+                }] }, { type: EditableRow, decorators: [{
+                    type: Optional
+                }] }]; }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class TableRadioButton {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithRadio({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableRadioButton, selector: "p-tableRadioButton", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableRadioButton',
+                    template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+export class TableCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithCheckbox({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableCheckbox, selector: "p-tableCheckbox", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", required: "required", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+export class TableHeaderCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            if (this.dt.value && this.dt.value.length > 0) {
+                this.dt.toggleRowsWithCheckbox(event, !this.checked);
+            }
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    isDisabled() {
+        return this.disabled || !this.dt.value || !this.dt.value.length;
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        if (this.dt.filteredValue && !this.dt.lazy) {
+            const val = this.dt.filteredValue;
+            return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());
+        }
+        else {
+            const val = this.dt.value;
+            const length = this.dt.lazy ? this.dt._totalRecords : val ? val.length : 0;
+            return (val && length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === length);
+        }
+    }
+    isAllFilteredValuesChecked() {
+        if (!this.dt.filteredValue) {
+            return false;
+        }
+        else {
+            for (let rowData of this.dt.filteredValue) {
+                if (!this.dt.isSelected(rowData)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+}
+TableHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: { disabled: "disabled", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }], disabled: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }] } });
+export class ReorderableRowHandle {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');
+    }
+}
+ReorderableRowHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRowHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: { index: ["pReorderableRowHandle", "index"] }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRowHandle]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRowHandle"]
+            }] } });
+export class ReorderableRow {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.el.nativeElement.droppable = true;
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragEndListener = this.onDragEnd.bind(this);
+            this.el.nativeElement.addEventListener('dragend', this.dragEndListener);
+            this.dragOverListener = this.onDragOver.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragStartListener) {
+            document.removeEventListener('dragstart', this.dragStartListener);
+            this.dragStartListener = null;
+        }
+        if (this.dragEndListener) {
+            document.removeEventListener('dragend', this.dragEndListener);
+            this.dragEndListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))
+            this.el.nativeElement.draggable = true;
+        else
+            this.el.nativeElement.draggable = false;
+    }
+    onDragStart(event) {
+        this.dt.onRowDragStart(event, this.index);
+    }
+    onDragEnd(event) {
+        this.dt.onRowDragEnd(event);
+        this.el.nativeElement.draggable = false;
+    }
+    onDragOver(event) {
+        this.dt.onRowDragOver(event, this.index, this.el.nativeElement);
+        event.preventDefault();
+    }
+    onDragLeave(event) {
+        this.dt.onRowDragLeave(event, this.el.nativeElement);
+    }
+    isEnabled() {
+        return this.pReorderableRowDisabled !== true;
+    }
+    onDrop(event) {
+        if (this.isEnabled() && this.dt.rowDragging) {
+            this.dt.onRowDrop(event, this.el.nativeElement);
+        }
+        event.preventDefault();
+    }
+}
+ReorderableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRow, selector: "[pReorderableRow]", inputs: { index: ["pReorderableRow", "index"], pReorderableRowDisabled: "pReorderableRowDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRow"]
+            }], pReorderableRowDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+export class ColumnFilterFormElement {
+    constructor(dt) {
+        this.dt = dt;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        this.filterCallback = value => {
+            this.filterConstraint.value = value;
+            this.dt._filter();
+        };
+    }
+    onModelChange(value) {
+        this.filterConstraint.value = value;
+        if (this.type === 'boolean' || value === '') {
+            this.dt._filter();
+        }
+    }
+    onTextInputEnterKeyDown(event) {
+        this.dt._filter();
+        event.preventDefault();
+    }
+    onNumericInputKeyDown(event) {
+        if (event.key === 'Enter') {
+            this.dt._filter();
+            event.preventDefault();
+        }
+    }
+}
+ColumnFilterFormElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilterFormElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: { field: "field", type: "type", filterConstraint: "filterConstraint", filterTemplate: "filterTemplate", placeholder: "placeholder", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `, isInline: true, components: [{ type: i5.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i6.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "numberOfMonths", "view", "touchUI", "timeSeparator", "focusTrap", "firstDayOfWeek", "showTransitionOptions", "hideTransitionOptions", "tabindex", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.InputText, selector: "[pInputText]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilterFormElement',
+                    template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], filterConstraint: [{
+                type: Input
+            }], filterTemplate: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }] } });
+export class ColumnFilter {
+    constructor(el, dt, renderer, config, overlayService) {
+        this.el = el;
+        this.dt = dt;
+        this.renderer = renderer;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.type = 'text';
+        this.display = 'row';
+        this.showMenu = true;
+        this.operator = FilterOperator.AND;
+        this.showOperator = true;
+        this.showClearButton = true;
+        this.showApplyButton = true;
+        this.showMatchModes = true;
+        this.showAddButton = true;
+        this.hideOnClear = false;
+        this.maxConstraints = 2;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        if (!this.dt.filters[this.field]) {
+            this.initFieldFilterConstraint();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.generateMatchModeOptions();
+            this.generateOperatorOptions();
+        });
+        this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {
+            this.clearFilter();
+        });
+        this.generateMatchModeOptions();
+        this.generateOperatorOptions();
+    }
+    generateMatchModeOptions() {
+        this.matchModes = this.matchModeOptions ||
+            this.config.filterMatchModeOptions[this.type]?.map(key => {
+                return { label: this.config.getTranslation(key), value: key };
+            });
+    }
+    generateOperatorOptions() {
+        this.operatorOptions = [
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND },
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR }
+        ];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'filter':
+                    this.filterTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.filterTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    initFieldFilterConstraint() {
+        let defaultMatchMode = this.getDefaultMatchMode();
+        this.dt.filters[this.field] = this.display == 'row' ? { value: null, matchMode: defaultMatchMode } : [{ value: null, matchMode: defaultMatchMode, operator: this.operator }];
+    }
+    onMenuMatchModeChange(value, filterMeta) {
+        filterMeta.matchMode = value;
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    onRowMatchModeChange(matchMode) {
+        this.dt.filters[this.field].matchMode = matchMode;
+        this.dt._filter();
+        this.hide();
+    }
+    onRowMatchModeKeyDown(event) {
+        let item = event.target;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    item.removeAttribute('tabindex');
+                    nextItem.tabIndex = '0';
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    item.removeAttribute('tabindex');
+                    prevItem.tabIndex = '0';
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+        }
+    }
+    onRowClearItemClick() {
+        this.clearFilter();
+        this.hide();
+    }
+    isRowMatchModeSelected(matchMode) {
+        return this.dt.filters[this.field].matchMode === matchMode;
+    }
+    addConstraint() {
+        this.dt.filters[this.field].push({ value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator() });
+        this.dt._filter();
+    }
+    removeConstraint(filterMeta) {
+        this.dt.filters[this.field] = this.dt.filters[this.field].filter(meta => meta !== filterMeta);
+        this.dt._filter();
+    }
+    onOperatorChange(value) {
+        this.dt.filters[this.field].forEach(filterMeta => {
+            filterMeta.operator = value;
+            this.operator = value;
+        });
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    toggleMenu() {
+        this.overlayVisible = !this.overlayVisible;
+    }
+    onToggleButtonKeyDown(event) {
+        switch (event.key) {
+            case 'Escape':
+            case 'Tab':
+                this.overlayVisible = false;
+                break;
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    let focusable = DomHandler.getFocusableElements(this.overlay);
+                    if (focusable) {
+                        focusable[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                else if (event.altKey) {
+                    this.overlayVisible = true;
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    onEscape() {
+        this.overlayVisible = false;
+        this.icon.nativeElement.focus();
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return item.parentElement.firstElementChild;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return item.parentElement.lastElementChild;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                document.body.appendChild(this.overlay);
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                DomHandler.absolutePosition(this.overlay, this.icon.nativeElement);
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.overlayEventListener = (e) => {
+                    if (this.overlay && this.overlay.contains(e.target)) {
+                        this.selfClick = true;
+                    }
+                };
+                this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    getDefaultMatchMode() {
+        if (this.matchMode) {
+            return this.matchMode;
+        }
+        else {
+            if (this.type === 'text')
+                return FilterMatchMode.STARTS_WITH;
+            else if (this.type === 'numeric')
+                return FilterMatchMode.EQUALS;
+            else if (this.type === 'date')
+                return FilterMatchMode.DATE_IS;
+            else
+                return FilterMatchMode.CONTAINS;
+        }
+    }
+    getDefaultOperator() {
+        return this.dt.filters ? this.dt.filters[this.field][0].operator : this.operator;
+    }
+    hasRowFilter() {
+        return this.dt.filters[this.field] && !this.dt.isFilterBlank(this.dt.filters[this.field].value);
+    }
+    get fieldConstraints() {
+        return this.dt.filters ? this.dt.filters[this.field] : null;
+    }
+    get showRemoveIcon() {
+        return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;
+    }
+    get showMenuButton() {
+        return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);
+    }
+    get isShowOperator() {
+        return this.showOperator && this.type !== 'boolean';
+    }
+    get isShowAddConstraint() {
+        return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);
+    }
+    get applyButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.APPLY);
+    }
+    get clearButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.CLEAR);
+    }
+    get addRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.ADD_RULE);
+    }
+    get removeRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.REMOVE_RULE);
+    }
+    get noFilterLabel() {
+        return this.config.getTranslation(TranslationKeys.NO_FILTER);
+    }
+    hasFilter() {
+        let fieldFilter = this.dt.filters[this.field];
+        if (fieldFilter) {
+            if (Array.isArray(fieldFilter))
+                return !this.dt.isFilterBlank(fieldFilter[0].value);
+            else
+                return !this.dt.isFilterBlank(fieldFilter.value);
+        }
+        return false;
+    }
+    isOutsideClicked(event) {
+        return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)
+            || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)
+            || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')
+            || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {
+                if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.selfClick = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = () => this.hide();
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    clearFilter() {
+        this.initFieldFilterConstraint();
+        this.dt._filter();
+        if (this.hideOnClear)
+            this.hide();
+    }
+    applyFilter() {
+        this.dt._filter();
+        this.hide();
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            this.el.nativeElement.appendChild(this.overlay);
+            ZIndexUtils.clear(this.overlay);
+            this.onOverlayHide();
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.resetSubscription) {
+            this.resetSubscription.unsubscribe();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+ColumnFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, deps: [{ token: i0.ElementRef }, { token: Table }, { token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilter, selector: "p-columnFilter", inputs: { field: "field", type: "type", display: "display", showMenu: "showMenu", matchMode: "matchMode", operator: "operator", showOperator: "showOperator", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showMatchModes: "showMatchModes", showAddButton: "showAddButton", hideOnClear: "hideOnClear", placeholder: "placeholder", matchModeOptions: "matchModeOptions", maxConstraints: "maxConstraints", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "icon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: ["field", "type", "filterConstraint", "filterTemplate", "placeholder", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+            ]),
+            transition(':leave', [
+                animate('.1s linear', style({ opacity: 0 }))
+            ])
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilter',
+                    template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+                            ]),
+                            transition(':leave', [
+                                animate('.1s linear', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Table }, { type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], showMenu: [{
+                type: Input
+            }], matchMode: [{
+                type: Input
+            }], operator: [{
+                type: Input
+            }], showOperator: [{
+                type: Input
+            }], showClearButton: [{
+                type: Input
+            }], showApplyButton: [{
+                type: Input
+            }], showMatchModes: [{
+                type: Input
+            }], showAddButton: [{
+                type: Input
+            }], hideOnClear: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], matchModeOptions: [{
+                type: Input
+            }], maxConstraints: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], icon: [{
+                type: ViewChild,
+                args: ['icon']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class TableModule {
+}
+TableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement], imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter] });
+TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, imports: [[CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], SharedModule,
+        ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule],
+                    exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter],
+                    declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdGFibGUvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFvQyxTQUFTLEVBQUUsUUFBUSxFQUM3RixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxlQUFlLEVBQTBCLFNBQVMsRUFBdUQsdUJBQXVCLEVBQVMsaUJBQWlCLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDek8sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUE2QixlQUFlLEVBQWlDLE1BQU0sYUFBYSxDQUFDO0FBQ3RLLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFdBQVcs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ZSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIE9wdGlvbmFsLCBBZnRlckNvbnRlbnRJbml0LFxuICAgIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQ29udGVudENoaWxkcmVuLCBUZW1wbGF0ZVJlZiwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFF1ZXJ5LCBWaWV3RW5jYXBzdWxhdGlvbiwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSwgRmlsdGVyTWF0Y2hNb2RlLCBGaWx0ZXJPcGVyYXRvciwgU2VsZWN0SXRlbSwgUHJpbWVOR0NvbmZpZywgVHJhbnNsYXRpb25LZXlzLCBGaWx0ZXJTZXJ2aWNlLCBPdmVybGF5U2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFnaW5hdG9yJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFNlbGVjdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0YnV0dG9uJztcbmltcG9ydCB7IFRyaVN0YXRlQ2hlY2tib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RyaXN0YXRlY2hlY2tib3gnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHsgRG9tSGFuZGxlciwgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscywgVW5pcXVlQ29tcG9uZW50SWQsIFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBTb3J0TWV0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBGaWx0ZXJNZXRhZGF0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJsb2NrYWJsZVVJIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHt0cmlnZ2VyLHN0eWxlLHRyYW5zaXRpb24sYW5pbWF0ZSxBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzb3J0U291cmNlID0gbmV3IFN1YmplY3Q8U29ydE1ldGF8U29ydE1ldGFbXT4oKTtcbiAgICBwcml2YXRlIHNlbGVjdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBjb250ZXh0TWVudVNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIHZhbHVlU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgdG90YWxSZWNvcmRzU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgY29sdW1uc1NvdXJjZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSByZXNldFNvdXJjZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBzb3J0U291cmNlJCA9IHRoaXMuc29ydFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBzZWxlY3Rpb25Tb3VyY2UkID0gdGhpcy5zZWxlY3Rpb25Tb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgY29udGV4dE1lbnVTb3VyY2UkID0gdGhpcy5jb250ZXh0TWVudVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICB2YWx1ZVNvdXJjZSQgPSB0aGlzLnZhbHVlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRvdGFsUmVjb3Jkc1NvdXJjZSQgPSB0aGlzLnRvdGFsUmVjb3Jkc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBjb2x1bW5zU291cmNlJCA9IHRoaXMuY29sdW1uc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICByZXNldFNvdXJjZSQgPSB0aGlzLnJlc2V0U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgb25Tb3J0KHNvcnRNZXRhOiBTb3J0TWV0YXxTb3J0TWV0YVtdKSB7XG4gICAgICAgIHRoaXMuc29ydFNvdXJjZS5uZXh0KHNvcnRNZXRhKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Tb3VyY2UubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBvblJlc2V0Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnJlc2V0U291cmNlLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0TWVudShkYXRhOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVNvdXJjZS5uZXh0KGRhdGEpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnZhbHVlU291cmNlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIG9uVG90YWxSZWNvcmRzQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHNTb3VyY2UubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25Db2x1bW5zQ2hhbmdlKGNvbHVtbnM6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuY29sdW1uc1NvdXJjZS5uZXh0KGNvbHVtbnMpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRhYmxlJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3AtZGF0YXRhYmxlIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1kYXRhdGFibGUtaG92ZXJhYmxlLXJvd3MnOiAocm93SG92ZXJ8fHNlbGVjdGlvbk1vZGUpLFxuICAgICAgICAgICAgICAgICdwLWRhdGF0YWJsZS1hdXRvLWxheW91dCc6IGF1dG9MYXlvdXQsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXJlc2l6YWJsZSc6IHJlc2l6YWJsZUNvbHVtbnMsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXJlc2l6YWJsZS1maXQnOiAocmVzaXphYmxlQ29sdW1ucyAmJiBjb2x1bW5SZXNpemVNb2RlID09PSAnZml0JyksXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXNjcm9sbGFibGUnOiBzY3JvbGxhYmxlLFxuICAgICAgICAgICAgICAgICdwLWRhdGF0YWJsZS1zY3JvbGxhYmxlLXZlcnRpY2FsJzogc2Nyb2xsYWJsZSAmJiBzY3JvbGxEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXNjcm9sbGFibGUtaG9yaXpvbnRhbCc6IHNjcm9sbGFibGUgJiYgc2Nyb2xsRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXNjcm9sbGFibGUtYm90aCc6IHNjcm9sbGFibGUgJiYgc2Nyb2xsRGlyZWN0aW9uID09PSAnYm90aCcsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLWZsZXgtc2Nyb2xsYWJsZSc6IChzY3JvbGxhYmxlICYmIHNjcm9sbEhlaWdodCA9PT0gJ2ZsZXgnKSxcbiAgICAgICAgICAgICAgICAncC1kYXRhdGFibGUtcmVzcG9uc2l2ZS1zdGFjayc6IHJlc3BvbnNpdmVMYXlvdXQgPT09ICdzdGFjaycsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXJlc3BvbnNpdmUtc2Nyb2xsJzogcmVzcG9uc2l2ZUxheW91dCA9PT0gJ3Njcm9sbCcsXG4gICAgICAgICAgICAgICAgJ3AtZGF0YXRhYmxlLXJlc3BvbnNpdmUnOiByZXNwb25zaXZlLFxuICAgICAgICAgICAgICAgICdwLWRhdGF0YWJsZS1ncm91cGVkLWhlYWRlcic6IGhlYWRlckdyb3VwZWRUZW1wbGF0ZSAhPSBudWxsLFxuICAgICAgICAgICAgICAgICdwLWRhdGF0YWJsZS1ncm91cGVkLWZvb3Rlcic6IGZvb3Rlckdyb3VwZWRUZW1wbGF0ZSAhPSBudWxsfVwiIFthdHRyLmlkXT1cImlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kYXRhdGFibGUtbG9hZGluZy1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXlcIiAqbmdJZj1cImxvYWRpbmcgJiYgc2hvd0xvYWRlclwiPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncC1kYXRhdGFibGUtbG9hZGluZy1pY29uIHBpLXNwaW4gJyArIGxvYWRpbmdJY29uXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FwdGlvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWRhdGF0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FwdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci10b3BcIiBbYWx3YXlzU2hvd109XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgICAgICAgICAgICAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIiAqbmdJZj1cInBhZ2luYXRvciAmJiAocGFnaW5hdG9yUG9zaXRpb24gPT09ICd0b3AnIHx8IHBhZ2luYXRvclBvc2l0aW9uID09J2JvdGgnKVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCIgW2Ryb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUb1wiIFtkcm9wZG93blNjcm9sbEhlaWdodF09XCJwYWdpbmF0b3JEcm9wZG93blNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZVwiIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiIFtkcm9wZG93bkl0ZW1UZW1wbGF0ZV09XCJwYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZVwiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwic2hvd0N1cnJlbnRQYWdlUmVwb3J0XCIgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwic2hvd0p1bXBUb1BhZ2VEcm9wZG93blwiIFtzaG93SnVtcFRvUGFnZUlucHV0XT1cInNob3dKdW1wVG9QYWdlSW5wdXRcIiBbc2hvd1BhZ2VMaW5rc109XCJzaG93UGFnZUxpbmtzXCI+PC9wLXBhZ2luYXRvcj5cblxuICAgICAgICAgICAgPGRpdiAjd3JhcHBlciBjbGFzcz1cInAtZGF0YXRhYmxlLXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7aGVpZ2h0OiBzY3JvbGxIZWlnaHR9XCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlICN0YWJsZSAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsXCIgcm9sZT1cInRhYmxlXCIgY2xhc3M9XCJwLWRhdGF0YWJsZS10YWJsZVwiIFtuZ0NsYXNzXT1cInRhYmxlU3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInRhYmxlU3R5bGVcIiBbYXR0ci5pZF09XCJpZCsnLXRhYmxlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sR3JvdXBUZW1wbGF0ZTsgY29udGV4dCB7JGltcGxpY2l0OiBjb2x1bW5zfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJwLWRhdGF0YWJsZS10aGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlckdyb3VwZWRUZW1wbGF0ZXx8aGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cInAtZGF0YXRhYmxlLXRib2R5IHAtZGF0YXRhYmxlLWZyb3plbi10Ym9keVwiICpuZ0lmPVwiZnJvemVuVmFsdWV8fGZyb3plbkJvZHlUZW1wbGF0ZVwiIFt2YWx1ZV09XCJmcm96ZW5WYWx1ZVwiIFtmcm96ZW5Sb3dzXT1cInRydWVcIiBbcFRhYmxlQm9keV09XCJjb2x1bW5zXCIgW3BUYWJsZUJvZHlUZW1wbGF0ZV09XCJmcm96ZW5Cb2R5VGVtcGxhdGVcIiBbZnJvemVuXT1cInRydWVcIj48L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJwLWRhdGF0YWJsZS10Ym9keVwiIFt2YWx1ZV09XCJkYXRhVG9SZW5kZXJcIiBbcFRhYmxlQm9keV09XCJjb2x1bW5zXCIgW3BUYWJsZUJvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIj48L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICA8dGZvb3QgKm5nSWY9XCJmb290ZXJHcm91cGVkVGVtcGxhdGV8fGZvb3RlclRlbXBsYXRlXCIgY2xhc3M9XCJwLWRhdGF0YWJsZS10Zm9vdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3Rlckdyb3VwZWRUZW1wbGF0ZXx8Zm9vdGVyVGVtcGxhdGU7IGNvbnRleHQgeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsXCIgW2l0ZW1TaXplXT1cInZpcnR1YWxSb3dIZWlnaHRcIiB0YWJpbmRleD1cIjBcIiBbc3R5bGUuaGVpZ2h0XT1cInNjcm9sbEhlaWdodCAhPT0gJ2ZsZXgnID8gc2Nyb2xsSGVpZ2h0IDogdW5kZWZpbmVkXCIgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCIgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4XCIgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwib25TY3JvbGxJbmRleENoYW5nZSgkZXZlbnQpXCIgY2xhc3M9XCJwLWRhdGF0YWJsZS12aXJ0dWFsLXNjcm9sbGFibGUtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgI3RhYmxlIHJvbGU9XCJ0YWJsZVwiIGNsYXNzPVwicC1kYXRhdGFibGUtdGFibGVcIiBbbmdDbGFzc109XCJ0YWJsZVN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJ0YWJsZVN0eWxlXCIgW2F0dHIuaWRdPVwiaWQrJy10YWJsZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2xHcm91cFRlbXBsYXRlOyBjb250ZXh0IHskaW1wbGljaXQ6IGNvbHVtbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQgI3RhYmxlSGVhZGVyIGNsYXNzPVwicC1kYXRhdGFibGUtdGhlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyR3JvdXBlZFRlbXBsYXRlfHxoZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJwLWRhdGF0YWJsZS10Ym9keSBwLWRhdGF0YWJsZS1mcm96ZW4tdGJvZHlcIiAqbmdJZj1cImZyb3plblZhbHVlfHxmcm96ZW5Cb2R5VGVtcGxhdGVcIiBbdmFsdWVdPVwiZnJvemVuVmFsdWVcIiBbZnJvemVuUm93c109XCJ0cnVlXCIgW3BUYWJsZUJvZHldPVwiY29sdW1uc1wiIFtwVGFibGVCb2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCIgW2Zyb3plbl09XCJ0cnVlXCI+PC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cInAtZGF0YXRhYmxlLXRib2R5XCIgW3ZhbHVlXT1cImRhdGFUb1JlbmRlclwiIFtwVGFibGVCb2R5XT1cImNvbHVtbnNcIiBbcFRhYmxlQm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiPjwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGZvb3QgKm5nSWY9XCJmb290ZXJHcm91cGVkVGVtcGxhdGV8fGZvb3RlclRlbXBsYXRlXCIgY2xhc3M9XCJwLWRhdGF0YWJsZS10Zm9vdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJHcm91cGVkVGVtcGxhdGV8fGZvb3RlclRlbXBsYXRlOyBjb250ZXh0IHskaW1wbGljaXQ6IGNvbHVtbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rmb290PlxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci1ib3R0b21cIiBbYWx3YXlzU2hvd109XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgICAgICAgICAgICAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIiAqbmdJZj1cInBhZ2luYXRvciAmJiAocGFnaW5hdG9yUG9zaXRpb24gPT09ICdib3R0b20nIHx8IHBhZ2luYXRvclBvc2l0aW9uID09J2JvdGgnKVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCIgW2Ryb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUb1wiIFtkcm9wZG93blNjcm9sbEhlaWdodF09XCJwYWdpbmF0b3JEcm9wZG93blNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZVwiIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiIFtkcm9wZG93bkl0ZW1UZW1wbGF0ZV09XCJwYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZVwiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwic2hvd0N1cnJlbnRQYWdlUmVwb3J0XCIgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwic2hvd0p1bXBUb1BhZ2VEcm9wZG93blwiIFtzaG93SnVtcFRvUGFnZUlucHV0XT1cInNob3dKdW1wVG9QYWdlSW5wdXRcIiBbc2hvd1BhZ2VMaW5rc109XCJzaG93UGFnZUxpbmtzXCI+PC9wLXBhZ2luYXRvcj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1bW1hcnlUZW1wbGF0ZVwiIGNsYXNzPVwicC1kYXRhdGFibGUtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1bW1hcnlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgI3Jlc2l6ZUhlbHBlciBjbGFzcz1cInAtY29sdW1uLXJlc2l6ZXItaGVscGVyXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiAqbmdJZj1cInJlc2l6YWJsZUNvbHVtbnNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICNyZW9yZGVySW5kaWNhdG9yVXAgY2xhc3M9XCJwaSBwaS1hcnJvdy1kb3duIHAtZGF0YXRhYmxlLXJlb3JkZXItaW5kaWNhdG9yLXVwXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiAqbmdJZj1cInJlb3JkZXJhYmxlQ29sdW1uc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICNyZW9yZGVySW5kaWNhdG9yRG93biBjbGFzcz1cInBpIHBpLWFycm93LXVwIHAtZGF0YXRhYmxlLXJlb3JkZXItaW5kaWNhdG9yLWRvd25cIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiICpuZ0lmPVwicmVvcmRlcmFibGVDb2x1bW5zXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW1RhYmxlU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIEJsb2NrYWJsZVVJLCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgZnJvemVuQ29sdW1uczogYW55W107XG5cbiAgICBASW5wdXQoKSBmcm96ZW5WYWx1ZTogYW55W107XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFibGVTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgdGFibGVTdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwYWdlTGlua3M6IG51bWJlciA9IDU7XG5cbiAgICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgYWx3YXlzU2hvd1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3JQb3NpdGlvbjogc3RyaW5nID0gJ2JvdHRvbSc7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3JEcm9wZG93blNjcm9sbEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcblxuICAgIEBJbnB1dCgpIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU6IHN0cmluZyA9ICd7Y3VycmVudFBhZ2V9IG9mIHt0b3RhbFBhZ2VzfSc7XG5cbiAgICBASW5wdXQoKSBzaG93Q3VycmVudFBhZ2VSZXBvcnQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93SnVtcFRvUGFnZURyb3Bkb3duOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvd0p1bXBUb1BhZ2VJbnB1dDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dQYWdlTGlua3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFNvcnRPcmRlcjogbnVtYmVyID0gMTtcblxuICAgIEBJbnB1dCgpIHNvcnRNb2RlOiBzdHJpbmcgPSAnc2luZ2xlJztcblxuICAgIEBJbnB1dCgpIHJlc2V0UGFnZU9uU29ydDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51U2VsZWN0aW9uOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgY29udGV4dE1lbnVTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVTZWxlY3Rpb25Nb2RlOiBzdHJpbmcgPSBcInNlcGFyYXRlXCI7XG5cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtZXRhS2V5U2VsZWN0aW9uOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcm93VHJhY2tCeTogRnVuY3Rpb24gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiBpdGVtO1xuXG4gICAgQElucHV0KCkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgbGF6eUxvYWRPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29tcGFyZVNlbGVjdGlvbkJ5OiBzdHJpbmcgPSAnZGVlcEVxdWFscyc7XG5cbiAgICBASW5wdXQoKSBjc3ZTZXBhcmF0b3I6IHN0cmluZyA9ICcsJztcblxuICAgIEBJbnB1dCgpIGV4cG9ydEZpbGVuYW1lOiBzdHJpbmcgPSAnZG93bmxvYWQnO1xuXG4gICAgQElucHV0KCkgZmlsdGVyczogeyBbczogc3RyaW5nXTogRmlsdGVyTWV0YWRhdGEgfCBGaWx0ZXJNZXRhZGF0YVtdIH0gPSB7fTtcblxuICAgIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW107XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJEZWxheTogbnVtYmVyID0gMzAwO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTG9jYWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBleHBhbmRlZFJvd0tleXM6IHsgW3M6IHN0cmluZ106IGJvb2xlYW47IH0gPSB7fTtcblxuICAgIEBJbnB1dCgpIGVkaXRpbmdSb3dLZXlzOiB7IFtzOiBzdHJpbmddOiBib29sZWFuOyB9ID0ge307XG5cbiAgICBASW5wdXQoKSByb3dFeHBhbmRNb2RlOiBzdHJpbmcgPSAnbXVsdGlwbGUnO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsYWJsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNjcm9sbERpcmVjdGlvbjogc3RyaW5nID0gXCJ2ZXJ0aWNhbFwiO1xuXG4gICAgQElucHV0KCkgcm93R3JvdXBNb2RlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGw6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsRGVsYXk6IG51bWJlciA9IDI1MDtcblxuICAgIEBJbnB1dCgpIHZpcnR1YWxSb3dIZWlnaHQ6IG51bWJlciA9IDI4O1xuXG4gICAgQElucHV0KCkgZnJvemVuV2lkdGg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHJlc3BvbnNpdmU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBjb250ZXh0TWVudTogYW55O1xuXG4gICAgQElucHV0KCkgcmVzaXphYmxlQ29sdW1uczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNvbHVtblJlc2l6ZU1vZGU6IHN0cmluZyA9ICdmaXQnO1xuXG4gICAgQElucHV0KCkgcmVvcmRlcmFibGVDb2x1bW5zOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmdJY29uOiBzdHJpbmcgPSAncGkgcGktc3Bpbm5lcic7XG5cbiAgICBASW5wdXQoKSBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHJvd0hvdmVyOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY3VzdG9tU29ydDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dJbml0aWFsU29ydEJhZGdlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGF1dG9MYXlvdXQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBleHBvcnRGdW5jdGlvbjtcblxuICAgIEBJbnB1dCgpIHN0YXRlS2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdGF0ZVN0b3JhZ2U6IHN0cmluZyA9ICdzZXNzaW9uJztcblxuICAgIEBJbnB1dCgpIGVkaXRNb2RlOiBzdHJpbmcgPSAnY2VsbCc7XG5cbiAgICBASW5wdXQoKSBncm91cFJvd3NCeTogYW55O1xuXG4gICAgQElucHV0KCkgZ3JvdXBSb3dzQnlPcmRlcjogbnVtYmVyID0gMTtcblxuICAgIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcmVzcG9uc2l2ZUxheW91dDogc3RyaW5nID0gJ3N0YWNrJztcblxuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG5cbiAgICBAT3V0cHV0KCkgb25Sb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUm93VW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUGFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Tb3J0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25MYXp5TG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Sb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUm93Q29sbGFwc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ29sUmVzaXplOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNvbFJlb3JkZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uUm93UmVvcmRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25FZGl0SW5pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25FZGl0Q29tcGxldGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uRWRpdENhbmNlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IZWFkZXJDaGVja2JveFRvZ2dsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgc29ydEZ1bmN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBmaXJzdENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcm93c0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TdGF0ZVNhdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU3RhdGVSZXN0b3JlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlc2l6ZUhlbHBlcicpIHJlc2l6ZUhlbHBlclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlb3JkZXJJbmRpY2F0b3JVcCcpIHJlb3JkZXJJbmRpY2F0b3JVcFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlb3JkZXJJbmRpY2F0b3JEb3duJykgcmVvcmRlckluZGljYXRvckRvd25WaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyJykgd3JhcHBlclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGVWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd0YWJsZUhlYWRlcicpIHRhYmxlSGVhZGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpcnR1YWxTY3JvbGxCb2R5OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+O1xuXG4gICAgX3ZhbHVlOiBhbnlbXSA9IFtdO1xuXG4gICAgX2NvbHVtbnM6IGFueVtdO1xuXG4gICAgX3RvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcblxuICAgIF9maXJzdDogbnVtYmVyID0gMDtcblxuICAgIF9yb3dzOiBudW1iZXI7XG5cbiAgICBmaWx0ZXJlZFZhbHVlOiBhbnlbXTtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaGVhZGVyR3JvdXBlZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgbG9hZGluZ0JvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNhcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZyb3plblJvd3NUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9vdGVyR3JvdXBlZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgc3VtbWFyeVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29sR3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGV4cGFuZGVkUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBncm91cEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ3JvdXBGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHJvd3NwYW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZyb3plbkV4cGFuZGVkUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmcm96ZW5IZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZyb3plbkJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZyb3plbkZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZnJvemVuQ29sR3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnaW5hdG9yTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnaW5hdG9yUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHBhZ2luYXRvckRyb3Bkb3duSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgc2VsZWN0aW9uS2V5czogYW55ID0ge307XG5cbiAgICBsYXN0UmVzaXplckhlbHBlclg6IG51bWJlcjtcblxuICAgIHJlb3JkZXJJY29uV2lkdGg6IG51bWJlcjtcblxuICAgIHJlb3JkZXJJY29uSGVpZ2h0OiBudW1iZXI7XG5cbiAgICBkcmFnZ2VkQ29sdW1uOiBhbnk7XG5cbiAgICBkcmFnZ2VkUm93SW5kZXg6IG51bWJlcjtcblxuICAgIGRyb3BwZWRSb3dJbmRleDogbnVtYmVyO1xuXG4gICAgcm93RHJhZ2dpbmc6IGJvb2xlYW47XG5cbiAgICBkcm9wUG9zaXRpb246IG51bWJlcjtcblxuICAgIGVkaXRpbmdDZWxsOiBFbGVtZW50O1xuXG4gICAgZWRpdGluZ0NlbGxEYXRhOiBhbnk7XG5cbiAgICBlZGl0aW5nQ2VsbEZpZWxkOiBhbnk7XG5cbiAgICBlZGl0aW5nQ2VsbFJvd0luZGV4OiBudW1iZXI7XG5cbiAgICBzZWxmQ2xpY2s6IGJvb2xlYW47XG5cbiAgICBkb2N1bWVudEVkaXRMaXN0ZW5lcjogYW55O1xuXG4gICAgX211bHRpU29ydE1ldGE6IFNvcnRNZXRhW107XG5cbiAgICBfc29ydEZpZWxkOiBzdHJpbmc7XG5cbiAgICBfc29ydE9yZGVyOiBudW1iZXIgPSAxO1xuXG4gICAgcHJldmVudFNlbGVjdGlvblNldHRlclByb3BhZ2F0aW9uOiBib29sZWFuO1xuXG4gICAgX3NlbGVjdGlvbjogYW55O1xuXG4gICAgYW5jaG9yUm93SW5kZXg6IG51bWJlcjtcblxuICAgIHJhbmdlUm93SW5kZXg6IG51bWJlcjtcblxuICAgIGZpbHRlclRpbWVvdXQ6IGFueTtcblxuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgcm93VG91Y2hlZDogYm9vbGVhbjtcblxuICAgIHJlc3RvcmluZ1NvcnQ6IGJvb2xlYW47XG5cbiAgICByZXN0b3JpbmdGaWx0ZXI6IGJvb2xlYW47XG5cbiAgICBzdGF0ZVJlc3RvcmVkOiBib29sZWFuO1xuXG4gICAgY29sdW1uT3JkZXJTdGF0ZVJlc3RvcmVkOiBib29sZWFuO1xuXG4gICAgY29sdW1uV2lkdGhzU3RhdGU6IHN0cmluZztcblxuICAgIHRhYmxlV2lkdGhTdGF0ZTogc3RyaW5nO1xuXG4gICAgb3ZlcmxheVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgdmlydHVhbFNjcm9sbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmVzaXplQ29sdW1uRWxlbWVudDtcblxuICAgIGNvbHVtblJlc2l6aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByb3dHcm91cEhlYWRlclN0eWxlT2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGlkOiBzdHJpbmcgPSBVbmlxdWVDb21wb25lbnRJZCgpO1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICByZXNwb25zaXZlU3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUsIHB1YmxpYyB0YWJsZVNlcnZpY2U6IFRhYmxlU2VydmljZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubGF6eSAmJiB0aGlzLmxhenlMb2FkT25Jbml0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucmVzdG9yaW5nRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JpbmdGaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVMYXlvdXQgPT09ICdzdGFjaycgJiYgIXRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVSZXNwb25zaXZlU3R5bGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcHRpb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRlcmdyb3VwZWQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckdyb3VwZWRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9hZGluZ2JvZHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdCb2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJncm91cGVkJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJHcm91cGVkVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtbWFyeVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xHcm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3Jvd2V4cGFuc2lvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRSb3dUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdncm91cGhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBIZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyb3dzcGFuJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzcGFuVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXBmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwRm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZnJvemVucm93cyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJvemVuUm93c1RlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zyb3plbmhlYWRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJvemVuSGVhZGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZnJvemVuYm9keSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJvemVuQm9keVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zyb3plbmZvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJvemVuRm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZnJvemVuY29sZ3JvdXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyb3plbkNvbEdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZnJvemVucm93ZXhwYW5zaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcm96ZW5FeHBhbmRlZFJvd1RlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5bWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncGFnaW5hdG9ybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yTGVmdFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2luYXRvcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3JSaWdodFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2luYXRvcmRyb3Bkb3duaXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yRHJvcGRvd25JdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSAmJiB0aGlzLnJlc2l6YWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZUNvbHVtbldpZHRocygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsYWJsZSAmJiB0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFN1YnNjcmlwdGlvbiA9ICB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5LnJlbmRlcmVkUmFuZ2VTdHJlYW0uc3Vic2NyaWJlKHJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdG9wID0gcmFuZ2Uuc3RhcnQgKiB0aGlzLnZpcnR1YWxSb3dIZWlnaHQgKiAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UudmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSAmJiAhdGhpcy5zdGF0ZVJlc3RvcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlU3RhdGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBzaW1wbGVDaGFuZ2UudmFsdWUuY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMubGF6eSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gKHRoaXMuX3ZhbHVlID8gdGhpcy5fdmFsdWUubGVuZ3RoIDogMCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PSAnc2luZ2xlJyAmJiAodGhpcy5zb3J0RmllbGQgfHwgdGhpcy5ncm91cFJvd3NCeSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydFNpbmdsZSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc29ydE1vZGUgPT0gJ211bHRpcGxlJyAmJiAodGhpcy5tdWx0aVNvcnRNZXRhIHx8IHRoaXMuZ3JvdXBSb3dzQnkpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaGFzRmlsdGVyKCkpICAgICAgIC8vc29ydCBhbHJlYWR5IGZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uVmFsdWVDaGFuZ2Uoc2ltcGxlQ2hhbmdlLnZhbHVlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBzaW1wbGVDaGFuZ2UuY29sdW1ucy5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vbkNvbHVtbnNDaGFuZ2Uoc2ltcGxlQ2hhbmdlLmNvbHVtbnMuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbHVtbnMgJiYgdGhpcy5pc1N0YXRlZnVsKCkgJiYgdGhpcy5yZW9yZGVyYWJsZUNvbHVtbnMgJiYgIXRoaXMuY29sdW1uT3JkZXJTdGF0ZVJlc3RvcmVkICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZUNvbHVtbk9yZGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnNvcnRGaWVsZCkge1xuICAgICAgICAgICAgdGhpcy5fc29ydEZpZWxkID0gc2ltcGxlQ2hhbmdlLnNvcnRGaWVsZC5jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgICAgIC8vYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGxvYWQgcHJpb3IgdG8gbGF6eSBpbml0aWFsaXphdGlvbiBhdCBvbkluaXRcbiAgICAgICAgICAgIGlmICggIXRoaXMubGF6eSB8fCB0aGlzLmluaXRpYWxpemVkICkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRTaW5nbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLmdyb3VwUm93c0J5KSB7XG4gICAgICAgICAgICAvL2F2b2lkIHRyaWdnZXJpbmcgbGF6eSBsb2FkIHByaW9yIHRvIGxhenkgaW5pdGlhbGl6YXRpb24gYXQgb25Jbml0XG4gICAgICAgICAgICBpZiAoICF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zb3J0T3JkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRPcmRlciA9IHNpbXBsZUNoYW5nZS5zb3J0T3JkZXIuY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICAvL2F2b2lkIHRyaWdnZXJpbmcgbGF6eSBsb2FkIHByaW9yIHRvIGxhenkgaW5pdGlhbGl6YXRpb24gYXQgb25Jbml0XG4gICAgICAgICAgICBpZiAoICF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5ncm91cFJvd3NCeU9yZGVyKSB7XG4gICAgICAgICAgICAvL2F2b2lkIHRyaWdnZXJpbmcgbGF6eSBsb2FkIHByaW9yIHRvIGxhenkgaW5pdGlhbGl6YXRpb24gYXQgb25Jbml0XG4gICAgICAgICAgICBpZiAoICF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gc2ltcGxlQ2hhbmdlLm11bHRpU29ydE1ldGEuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc29ydE1vZGUgPT09ICdtdWx0aXBsZScgJiYgKHRoaXMuaW5pdGlhbGl6ZWQgfHwgKCF0aGlzLmxhenkgJiYgIXRoaXMudmlydHVhbFNjcm9sbCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0TXVsdGlwbGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2Uuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSBzaW1wbGVDaGFuZ2Uuc2VsZWN0aW9uLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uS2V5cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICBzZXQgdmFsdWUodmFsOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgY29sdW1ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICAgIH1cbiAgICBzZXQgY29sdW1ucyhjb2xzOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9jb2x1bW5zID0gY29scztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgZmlyc3QoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0O1xuICAgIH1cbiAgICBzZXQgZmlyc3QodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fZmlyc3QgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHJvd3MoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3M7XG4gICAgfVxuICAgIHNldCByb3dzKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xuICAgIH1cbiAgICBzZXQgdG90YWxSZWNvcmRzKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbDtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Ub3RhbFJlY29yZHNDaGFuZ2UodGhpcy5fdG90YWxSZWNvcmRzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgc29ydEZpZWxkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0RmllbGQ7XG4gICAgfVxuXG4gICAgc2V0IHNvcnRGaWVsZCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zb3J0RmllbGQgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHNvcnRPcmRlcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyO1xuICAgIH1cbiAgICBzZXQgc29ydE9yZGVyKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3NvcnRPcmRlciA9IHZhbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbXVsdGlTb3J0TWV0YSgpOiBTb3J0TWV0YVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpU29ydE1ldGE7XG4gICAgfVxuXG4gICAgc2V0IG11bHRpU29ydE1ldGEodmFsOiBTb3J0TWV0YVtdKSB7XG4gICAgICAgIHRoaXMuX211bHRpU29ydE1ldGEgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHNlbGVjdGlvbigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3Rpb24odmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBkYXRhVG9SZW5kZXIoKSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5maWx0ZXJlZFZhbHVlfHx0aGlzLnZhbHVlO1xuICAgICAgICByZXR1cm4gZGF0YSA/ICgodGhpcy5wYWdpbmF0b3IgJiYgIXRoaXMubGF6eSkgPyAoZGF0YS5zbGljZSh0aGlzLmZpcnN0LCB0aGlzLmZpcnN0ICsgdGhpcy5yb3dzKSkgOiBkYXRhKSA6IFtdO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlbGVjdGlvbktleXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFLZXkgJiYgdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3NlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGRhdGEgb2YgdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhLCB0aGlzLmRhdGFLZXkpKV0gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YSh0aGlzLl9zZWxlY3Rpb24sIHRoaXMuZGF0YUtleSkpXSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBhZ2VDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5maXJzdCA9IGV2ZW50LmZpcnN0O1xuICAgICAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoe1xuICAgICAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3QsXG4gICAgICAgICAgICByb3dzOiB0aGlzLnJvd3NcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maXJzdENoYW5nZS5lbWl0KHRoaXMuZmlyc3QpO1xuICAgICAgICB0aGlzLnJvd3NDaGFuZ2UuZW1pdCh0aGlzLnJvd3MpO1xuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblZhbHVlQ2hhbmdlKHRoaXMudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5jaG9yUm93SW5kZXggPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxUb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvcnQoZXZlbnQpIHtcbiAgICAgICAgbGV0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5vcmlnaW5hbEV2ZW50O1xuXG4gICAgICAgIGlmICh0aGlzLnNvcnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5fc29ydE9yZGVyID0gKHRoaXMuc29ydEZpZWxkID09PSBldmVudC5maWVsZCkgPyB0aGlzLnNvcnRPcmRlciAqIC0xIDogdGhpcy5kZWZhdWx0U29ydE9yZGVyO1xuICAgICAgICAgICAgdGhpcy5fc29ydEZpZWxkID0gZXZlbnQuZmllbGQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2V0UGFnZU9uU29ydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlLmVtaXQodGhpcy5fZmlyc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNvcnRTaW5nbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkgfHwgb3JpZ2luYWxFdmVudC5jdHJsS2V5O1xuICAgICAgICAgICAgbGV0IHNvcnRNZXRhID0gdGhpcy5nZXRTb3J0TWV0YShldmVudC5maWVsZCk7XG5cbiAgICAgICAgICAgIGlmIChzb3J0TWV0YSkge1xuICAgICAgICAgICAgICAgIGlmICghbWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gW3sgZmllbGQ6IGV2ZW50LmZpZWxkLCBvcmRlcjogc29ydE1ldGEub3JkZXIgKiAtMSB9XTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNldFBhZ2VPblNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UuZW1pdCh0aGlzLl9maXJzdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnRNZXRhLm9yZGVyID0gc29ydE1ldGEub3JkZXIgKiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkgfHwgIXRoaXMubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzZXRQYWdlT25Tb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9maXJzdCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlLmVtaXQodGhpcy5fZmlyc3QpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX211bHRpU29ydE1ldGEucHVzaCh7IGZpZWxkOiBldmVudC5maWVsZCwgb3JkZXI6IHRoaXMuZGVmYXVsdFNvcnRPcmRlciB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zb3J0TXVsdGlwbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5jaG9yUm93SW5kZXggPSBudWxsO1xuICAgIH1cblxuICAgIHNvcnRTaW5nbGUoKSB7XG4gICAgICAgIGxldCBmaWVsZCA9IHRoaXMuc29ydEZpZWxkIHx8IHRoaXMuZ3JvdXBSb3dzQnk7XG4gICAgICAgIGxldCBvcmRlciA9IHRoaXMuc29ydEZpZWxkID8gdGhpcy5zb3J0T3JkZXIgOiB0aGlzLmdyb3VwUm93c0J5T3JkZXI7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwUm93c0J5ICYmIHRoaXMuc29ydEZpZWxkICYmIHRoaXMuZ3JvdXBSb3dzQnkgIT09IHRoaXMuc29ydEZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gW3RoaXMuZ2V0R3JvdXBSb3dzTWV0YSgpLCB7ZmllbGQ6IHRoaXMuc29ydEZpZWxkLCBvcmRlcjogdGhpcy5zb3J0T3JkZXJ9XTtcbiAgICAgICAgICAgIHRoaXMuc29ydE11bHRpcGxlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc3RvcmluZ1NvcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3RvcmluZ1NvcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXN0b21Tb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMuc29ydE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogb3JkZXJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNvcnQoKGRhdGExLCBkYXRhMikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlMSA9IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEoZGF0YTEsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZTIgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKGRhdGEyLCBmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9yZGVyICogcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzRmlsdGVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc29ydE1ldGE6IFNvcnRNZXRhID0ge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICBvcmRlcjogb3JkZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMub25Tb3J0LmVtaXQoc29ydE1ldGEpO1xuICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Tb3J0KHNvcnRNZXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvcnRNdWx0aXBsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBSb3dzQnkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fbXVsdGlTb3J0TWV0YSlcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gW3RoaXMuZ2V0R3JvdXBSb3dzTWV0YSgpXVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tdWx0aVNvcnRNZXRhWzBdLmZpZWxkICE9PSB0aGlzLmdyb3VwUm93c0J5KVxuICAgICAgICAgICAgICAgIHRoaXMuX211bHRpU29ydE1ldGEgPSBbdGhpcy5nZXRHcm91cFJvd3NNZXRhKCksIC4uLnRoaXMuX211bHRpU29ydE1ldGFdXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0RnVuY3Rpb24uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogdGhpcy5zb3J0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpU29ydE1ldGE6IHRoaXMubXVsdGlTb3J0TWV0YVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXNvcnRGaWVsZChkYXRhMSwgZGF0YTIsIHRoaXMubXVsdGlTb3J0TWV0YSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZpbHRlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblNvcnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgbXVsdGlzb3J0bWV0YTogdGhpcy5tdWx0aVNvcnRNZXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU29ydCh0aGlzLm11bHRpU29ydE1ldGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlzb3J0RmllbGQoZGF0YTEsIGRhdGEyLCBtdWx0aVNvcnRNZXRhLCBpbmRleCkge1xuICAgICAgICBsZXQgdmFsdWUxID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhMSwgbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQpO1xuICAgICAgICBsZXQgdmFsdWUyID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShkYXRhMiwgbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpXG4gICAgICAgICAgICByZXN1bHQgPSAtMTtcbiAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG4gICAgICAgICAgICByZXN1bHQgPSAxO1xuICAgICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcbiAgICAgICAgICAgIHJlc3VsdCA9IDA7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT0gJ3N0cmluZycgfHwgdmFsdWUxIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUxLmxvY2FsZUNvbXBhcmUgJiYgKHZhbHVlMSAhPSB2YWx1ZTIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA8IHZhbHVlMikgPyAtMSA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUxID09IHZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIChtdWx0aVNvcnRNZXRhLmxlbmd0aCAtIDEpID4gKGluZGV4KSA/ICh0aGlzLm11bHRpc29ydEZpZWxkKGRhdGExLCBkYXRhMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXggKyAxKSkgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZ2V0U29ydE1ldGEoZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhICYmIHRoaXMubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tdWx0aVNvcnRNZXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlTb3J0TWV0YVtpXS5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlTb3J0TWV0YVtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1NvcnRlZChmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNvcnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNvcnRGaWVsZCAmJiB0aGlzLnNvcnRGaWVsZCA9PT0gZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGxldCBzb3J0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpU29ydE1ldGEpwqB7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMubXVsdGlTb3J0TWV0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhW2ldLmZpZWxkID09IGZpZWxkKcKge1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNvcnRlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVJvd0NsaWNrKGV2ZW50KSB7XG4gICAgICAgIGxldCB0YXJnZXQgPSAoPEhUTUxFbGVtZW50PiBldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldCk7XG4gICAgICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0Lm5vZGVOYW1lO1xuICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IHRhcmdldC5wYXJlbnRFbGVtZW50ICYmIHRhcmdldC5wYXJlbnRFbGVtZW50Lm5vZGVOYW1lO1xuICAgICAgICBpZiAodGFyZ2V0Tm9kZSA9PSAnSU5QVVQnIHx8IHRhcmdldE5vZGUgPT0gJ0JVVFRPTicgfHwgdGFyZ2V0Tm9kZSA9PSAnQScgfHxcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPT0gJ0lOUFVUJyB8fCBwYXJlbnROb2RlID09ICdCVVRUT04nIHx8IHBhcmVudE5vZGUgPT0gJ0EnIHx8XG4gICAgICAgICAgICAoRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldCwgJ3AtY2xpY2thYmxlJykpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXkgJiYgdGhpcy5hbmNob3JSb3dJbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJhbmdlUm93SW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uUmFuZ2UoZXZlbnQub3JpZ2luYWxFdmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5yYW5nZVJvd0luZGV4ID0gZXZlbnQucm93SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RSYW5nZShldmVudC5vcmlnaW5hbEV2ZW50LCBldmVudC5yb3dJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcm93RGF0YSA9IGV2ZW50LnJvd0RhdGE7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHJvd0RhdGEpO1xuICAgICAgICAgICAgICAgIGxldCBtZXRhU2VsZWN0aW9uID0gdGhpcy5yb3dUb3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFLZXlWYWx1ZSA9IHRoaXMuZGF0YUtleSA/IFN0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIHRoaXMuZGF0YUtleSkpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmFuY2hvclJvd0luZGV4ID0gZXZlbnQucm93SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5yYW5nZVJvd0luZGV4ID0gZXZlbnQucm93SW5kZXg7XG5cbiAgICAgICAgICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQubWV0YUtleXx8ZXZlbnQub3JpZ2luYWxFdmVudC5jdHJsS2V5O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCAmJiBtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb25JbmRleCA9IHRoaXMuZmluZEluZGV4SW5TZWxlY3Rpb24ocm93RGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9c2VsZWN0aW9uSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJvd1Vuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGRhdGE6IHJvd0RhdGEsIHR5cGU6ICdyb3cnfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHJvd0RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChyb3dEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb258fFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IFsuLi50aGlzLnNlbGVjdGlvbixyb3dEYXRhXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ3JvdycsIGluZGV4OiBldmVudC5yb3dJbmRleH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUm93VW5zZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGRhdGE6IHJvd0RhdGEsIHR5cGU6ICdyb3cnLCBpbmRleDogZXZlbnQucm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSByb3dEYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGRhdGE6IHJvd0RhdGEsIHR5cGU6ICdyb3cnLCBpbmRleDogZXZlbnQucm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFLZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV0gPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb25JbmRleCA9IHRoaXMuZmluZEluZGV4SW5TZWxlY3Rpb24ocm93RGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gc2VsZWN0aW9uSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Sb3dVbnNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ3JvdycsIGluZGV4OiBldmVudC5yb3dJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbiA/IFsuLi50aGlzLnNlbGVjdGlvbiwgcm93RGF0YV0gOiBbcm93RGF0YV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ3JvdycsIGluZGV4OiBldmVudC5yb3dJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvd1RvdWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBoYW5kbGVSb3dUb3VjaEVuZChldmVudCkge1xuICAgICAgICB0aGlzLnJvd1RvdWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGhhbmRsZVJvd1JpZ2h0Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSBldmVudC5yb3dEYXRhO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0TWVudVNlbGVjdGlvbk1vZGUgPT09ICdzZXBhcmF0ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51U2VsZWN0aW9uID0gcm93RGF0YTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51U2VsZWN0aW9uQ2hhbmdlLmVtaXQocm93RGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbnRleHRNZW51U2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGRhdGE6IHJvd0RhdGEsIGluZGV4OiBldmVudC5yb3dJbmRleH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUuc2hvdyhldmVudC5vcmlnaW5hbEV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vbkNvbnRleHRNZW51KHJvd0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb250ZXh0TWVudVNlbGVjdGlvbk1vZGUgPT09ICdqb2ludCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHJvd0RhdGEpO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhS2V5VmFsdWUgPSB0aGlzLmRhdGFLZXkgPyBTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShyb3dEYXRhLCB0aGlzLmRhdGFLZXkpKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHJvd0RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd0RhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV0gPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24gPyBbLi4udGhpcy5zZWxlY3Rpb24sIHJvd0RhdGFdIDogW3Jvd0RhdGFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUuc2hvdyhldmVudC5vcmlnaW5hbEV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29udGV4dE1lbnVTZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIGRhdGE6IHJvd0RhdGEsIGluZGV4OiBldmVudC5yb3dJbmRleH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0UmFuZ2UoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHJhbmdlU3RhcnQsIHJhbmdlRW5kO1xuXG4gICAgICAgIGlmICh0aGlzLmFuY2hvclJvd0luZGV4ID4gcm93SW5kZXgpIHtcbiAgICAgICAgICAgIHJhbmdlU3RhcnQgPSByb3dJbmRleDtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gdGhpcy5hbmNob3JSb3dJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmFuY2hvclJvd0luZGV4IDwgcm93SW5kZXgpIHtcbiAgICAgICAgICAgIHJhbmdlU3RhcnQgPSB0aGlzLmFuY2hvclJvd0luZGV4O1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSByb3dJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJhbmdlU3RhcnQgPSByb3dJbmRleDtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gcm93SW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYXp5ICYmIHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0IC09IHRoaXMuZmlyc3Q7XG4gICAgICAgICAgICByYW5nZUVuZCAtPSB0aGlzLmZpcnN0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJhbmdlUm93c0RhdGEgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gcmFuZ2VTdGFydDsgaSA8PSByYW5nZUVuZDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcmFuZ2VSb3dEYXRhID0gdGhpcy5maWx0ZXJlZFZhbHVlID8gdGhpcy5maWx0ZXJlZFZhbHVlW2ldIDogdGhpcy52YWx1ZVtpXTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKHJhbmdlUm93RGF0YSkpIHtcbiAgICAgICAgICAgICAgICByYW5nZVJvd3NEYXRhLnB1c2gocmFuZ2VSb3dEYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSBbLi4udGhpcy5zZWxlY3Rpb24sIHJhbmdlUm93RGF0YV07XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFLZXlWYWx1ZTogc3RyaW5nID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocmFuZ2VSb3dEYXRhLCB0aGlzLmRhdGFLZXkpKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFLZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLm9uUm93U2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBkYXRhOiByYW5nZVJvd3NEYXRhLCB0eXBlOiAncm93J30pO1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0aW9uUmFuZ2UoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgbGV0IHJhbmdlU3RhcnQsIHJhbmdlRW5kO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlUm93SW5kZXggPiB0aGlzLmFuY2hvclJvd0luZGV4KSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gdGhpcy5hbmNob3JSb3dJbmRleDtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gdGhpcy5yYW5nZVJvd0luZGV4O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucmFuZ2VSb3dJbmRleCA8IHRoaXMuYW5jaG9yUm93SW5kZXgpIHtcbiAgICAgICAgICAgIHJhbmdlU3RhcnQgPSB0aGlzLnJhbmdlUm93SW5kZXg7XG4gICAgICAgICAgICByYW5nZUVuZCA9IHRoaXMuYW5jaG9yUm93SW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gdGhpcy5yYW5nZVJvd0luZGV4O1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSB0aGlzLnJhbmdlUm93SW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IobGV0IGkgPSByYW5nZVN0YXJ0OyBpIDw9IHJhbmdlRW5kOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByYW5nZVJvd0RhdGEgPSB0aGlzLnZhbHVlW2ldO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihyYW5nZVJvd0RhdGEpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9c2VsZWN0aW9uSW5kZXgpO1xuICAgICAgICAgICAgbGV0IGRhdGFLZXlWYWx1ZTogc3RyaW5nID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocmFuZ2VSb3dEYXRhLCB0aGlzLmRhdGFLZXkpKSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vblJvd1Vuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBkYXRhOiByYW5nZVJvd0RhdGEsIHR5cGU6ICdyb3cnfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHJvd0RhdGEpIHtcbiAgICAgICAgaWYgKHJvd0RhdGEgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFLZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25LZXlzW09iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93RGF0YSwgdGhpcy5kYXRhS2V5KV0gIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEFycmF5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihyb3dEYXRhKSA+IC0xO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKHJvd0RhdGEsIHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmaW5kSW5kZXhJblNlbGVjdGlvbihyb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVxdWFscyhyb3dEYXRhLCB0aGlzLnNlbGVjdGlvbltpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgdG9nZ2xlUm93V2l0aFJhZGlvKGV2ZW50OiBhbnksIHJvd0RhdGE6YW55KSB7XG4gICAgICAgIHRoaXMucHJldmVudFNlbGVjdGlvblNldHRlclByb3BhZ2F0aW9uID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gIT0gcm93RGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gcm93RGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5vblJvd1NlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50LCBpbmRleDogZXZlbnQucm93SW5kZXgsIGRhdGE6IHJvd0RhdGEsIHR5cGU6ICdyYWRpb2J1dHRvbid9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShyb3dEYXRhLCB0aGlzLmRhdGFLZXkpKV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5vblJvd1Vuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGluZGV4OiBldmVudC5yb3dJbmRleCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ3JhZGlvYnV0dG9uJ30pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25TZWxlY3Rpb25DaGFuZ2UoKTtcblxuICAgICAgICBpZiAodGhpcy5pc1N0YXRlZnVsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVSb3dXaXRoQ2hlY2tib3goZXZlbnQsIHJvd0RhdGE6IGFueSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9ufHxbXTtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKHJvd0RhdGEpO1xuICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93RGF0YSwgdGhpcy5kYXRhS2V5KSkgOiBudWxsO1xuICAgICAgICB0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uSW5kZXggPSB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKHJvd0RhdGEpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gc2VsZWN0aW9uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLm9uUm93VW5zZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGluZGV4OiBldmVudC5yb3dJbmRleCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ2NoZWNrYm94JyB9KTtcbiAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbiA/IFsuLi50aGlzLnNlbGVjdGlvbiwgcm93RGF0YV0gOiBbcm93RGF0YV07XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIGluZGV4OiBldmVudC5yb3dJbmRleCwgZGF0YTogcm93RGF0YSwgdHlwZTogJ2NoZWNrYm94JyB9KTtcbiAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNlbGVjdGlvbkNoYW5nZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVJvd3NXaXRoQ2hlY2tib3goZXZlbnQ6IEV2ZW50LCBjaGVjazogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSBjaGVjayA/IHRoaXMuZmlsdGVyZWRWYWx1ZSA/IHRoaXMuZmlsdGVyZWRWYWx1ZS5zbGljZSgpOiB0aGlzLnZhbHVlLnNsaWNlKCkgOiBbXTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2VsZWN0aW9uU2V0dGVyUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbktleXMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLm9uSGVhZGVyQ2hlY2tib3hUb2dnbGUuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIGNoZWNrZWQ6IGNoZWNrfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXF1YWxzKGRhdGExLCBkYXRhMikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlU2VsZWN0aW9uQnkgPT09ICdlcXVhbHMnID8gKGRhdGExID09PSBkYXRhMikgOiBPYmplY3RVdGlscy5lcXVhbHMoZGF0YTEsIGRhdGEyLCB0aGlzLmRhdGFLZXkpO1xuICAgIH1cblxuICAgIC8qIExlZ2FjeSBGaWx0ZXJpbmcgZm9yIGN1c3RvbSBlbGVtZW50cyAqL1xuICAgIGZpbHRlcih2YWx1ZTogYW55LCBmaWVsZDogc3RyaW5nLCBtYXRjaE1vZGU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJCbGFuayh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1tmaWVsZF0gPSB7IHZhbHVlOiB2YWx1ZSwgbWF0Y2hNb2RlOiBtYXRjaE1vZGUgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcnNbZmllbGRdKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJzW2ZpZWxkXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsdGVyVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9LCB0aGlzLmZpbHRlckRlbGF5KTtcblxuICAgICAgICB0aGlzLmFuY2hvclJvd0luZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgICBmaWx0ZXJHbG9iYWwodmFsdWUsIG1hdGNoTW9kZSkge1xuICAgICAgICB0aGlzLmZpbHRlcih2YWx1ZSwgJ2dsb2JhbCcsIG1hdGNoTW9kZSk7XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJCbGFuayhmaWx0ZXI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZmlsdGVyICE9PSBudWxsICYmIGZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnICYmIGZpbHRlci50cmltKCkubGVuZ3RoID09IDApIHx8IChmaWx0ZXIgaW5zdGFuY2VvZiBBcnJheSAmJiBmaWx0ZXIubGVuZ3RoID09IDApKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBfZmlsdGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVzdG9yaW5nRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0ID0gMDtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UuZW1pdCh0aGlzLmZpcnN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0ZpbHRlcigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5sZW5ndGggOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzWydnbG9iYWwnXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29sdW1ucyAmJiAhdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbCBmaWx0ZXJpbmcgcmVxdWlyZXMgZHluYW1pYyBjb2x1bW5zIG9yIGdsb2JhbEZpbHRlckZpZWxkcyB0byBiZSBkZWZpbmVkLicpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheSA9IHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzfHx0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZ2xvYmFsTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsRmlsdGVyZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHRoaXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBwcm9wICE9PSAnZ2xvYmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsRmlsdGVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJGaWVsZCA9IHByb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlck1ldGEgPSB0aGlzLmZpbHRlcnNbZmlsdGVyRmllbGRdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyTWV0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbWV0YSBvZiBmaWx0ZXJNZXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE1hdGNoID0gdGhpcy5leGVjdXRlTG9jYWxGaWx0ZXIoZmlsdGVyRmllbGQsIHRoaXMudmFsdWVbaV0sIG1ldGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG1ldGEub3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLk9SICYmIGxvY2FsTWF0Y2gpIHx8IChtZXRhLm9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5BTkQgJiYgIWxvY2FsTWF0Y2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsTWF0Y2ggPSB0aGlzLmV4ZWN1dGVMb2NhbEZpbHRlcihmaWx0ZXJGaWVsZCwgdGhpcy52YWx1ZVtpXSwgZmlsdGVyTWV0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbJ2dsb2JhbCddICYmICFnbG9iYWxNYXRjaCAmJiBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IGdsb2JhbEZpbHRlckZpZWxkc0FycmF5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdsb2JhbEZpbHRlckZpZWxkID0gZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlbal0uZmllbGR8fGdsb2JhbEZpbHRlckZpZWxkc0FycmF5W2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE1hdGNoID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNbKDxGaWx0ZXJNZXRhZGF0YT4gdGhpcy5maWx0ZXJzWydnbG9iYWwnXSkubWF0Y2hNb2RlXShPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHRoaXMudmFsdWVbaV0sIGdsb2JhbEZpbHRlckZpZWxkKSwgKDxGaWx0ZXJNZXRhZGF0YT4gdGhpcy5maWx0ZXJzWydnbG9iYWwnXSkudmFsdWUsIHRoaXMuZmlsdGVyTG9jYWxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlczogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyc1snZ2xvYmFsJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBsb2NhbEZpbHRlcmVkID8gKGxvY2FsRmlsdGVyZWQgJiYgbG9jYWxNYXRjaCAmJiBnbG9iYWxNYXRjaCkgOiBnbG9iYWxNYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBsb2NhbEZpbHRlcmVkICYmIGxvY2FsTWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlLnB1c2godGhpcy52YWx1ZVtpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJlZFZhbHVlLmxlbmd0aCA9PT0gdGhpcy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLmZpbHRlcmVkVmFsdWUgPyB0aGlzLmZpbHRlcmVkVmFsdWUubGVuZ3RoIDogdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubGVuZ3RoIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgZmlsdGVyZWRWYWx1ZTogdGhpcy5maWx0ZXJlZFZhbHVlIHx8IHRoaXMudmFsdWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25WYWx1ZUNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc1N0YXRlZnVsKCkgJiYgIXRoaXMucmVzdG9yaW5nRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzdG9yaW5nRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmluZ0ZpbHRlciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleGVjdXRlTG9jYWxGaWx0ZXIoZmllbGQ6IHN0cmluZywgcm93RGF0YTogYW55LCBmaWx0ZXJNZXRhOiBGaWx0ZXJNZXRhZGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZmlsdGVyVmFsdWUgPSBmaWx0ZXJNZXRhLnZhbHVlO1xuICAgICAgICBsZXQgZmlsdGVyTWF0Y2hNb2RlID0gZmlsdGVyTWV0YS5tYXRjaE1vZGUgfHwgRmlsdGVyTWF0Y2hNb2RlLlNUQVJUU19XSVRIO1xuICAgICAgICBsZXQgZGF0YUZpZWxkVmFsdWUgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIGZpZWxkKTtcbiAgICAgICAgbGV0IGZpbHRlckNvbnN0cmFpbnQgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyc1tmaWx0ZXJNYXRjaE1vZGVdO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJDb25zdHJhaW50KGRhdGFGaWVsZFZhbHVlLCBmaWx0ZXJWYWx1ZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgIH1cblxuICAgIGhhc0ZpbHRlcigpIHtcbiAgICAgICAgbGV0IGVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiB0aGlzLmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBlbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICFlbXB0eTtcbiAgICB9XG5cbiAgICBjcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cyxcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5zb3J0RmllbGQsXG4gICAgICAgICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzWydnbG9iYWwnXSA/ICg8RmlsdGVyTWV0YWRhdGE+IHRoaXMuZmlsdGVyc1snZ2xvYmFsJ10pLnZhbHVlIDogbnVsbCxcbiAgICAgICAgICAgIG11bHRpU29ydE1ldGE6IHRoaXMubXVsdGlTb3J0TWV0YVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fc29ydEZpZWxkID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc29ydE9yZGVyID0gdGhpcy5kZWZhdWx0U29ydE9yZGVyO1xuICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Tb3J0KG51bGwpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uUmVzZXRDaGFuZ2UoKTtcblxuICAgICAgICB0aGlzLmZpcnN0ID0gMDtcbiAgICAgICAgdGhpcy5maXJzdENoYW5nZS5lbWl0KHRoaXMuZmlyc3QpO1xuXG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gKHRoaXMuX3ZhbHVlID8gdGhpcy5fdmFsdWUubGVuZ3RoIDogMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0Q1NWKG9wdGlvbnM/OiBhbnkpIHtcbiAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgIGxldCBjc3YgPSAnJztcbiAgICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLmZyb3plbkNvbHVtbnMgPyBbLi4udGhpcy5mcm96ZW5Db2x1bW5zLCAuLi50aGlzLmNvbHVtbnNdIDogdGhpcy5jb2x1bW5zO1xuXG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2VsZWN0aW9uT25seSkge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuc2VsZWN0aW9uIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZmlsdGVyZWRWYWx1ZSB8fCB0aGlzLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5mcm96ZW5WYWx1ZSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhID8gWy4uLnRoaXMuZnJvemVuVmFsdWUsIC4uLmRhdGFdIDogdGhpcy5mcm96ZW5WYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vaGVhZGVyc1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb2x1bW5zW2ldO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5leHBvcnRhYmxlICE9PSBmYWxzZSAmJiBjb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjc3YgKz0gJ1wiJyArIChjb2x1bW4uaGVhZGVyIHx8IGNvbHVtbi5maWVsZCkgKyAnXCInO1xuXG4gICAgICAgICAgICAgICAgaWYgKGkgPCAoY29sdW1ucy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICBjc3YgKz0gdGhpcy5jc3ZTZXBhcmF0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9ib2R5XG4gICAgICAgIGRhdGEuZm9yRWFjaCgocmVjb3JkLCBpKSA9PiB7XG4gICAgICAgICAgICBjc3YgKz0gJ1xcbic7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uID0gY29sdW1uc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmV4cG9ydGFibGUgIT09IGZhbHNlICYmIGNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2VsbERhdGEgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJlY29yZCwgY29sdW1uLmZpZWxkKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbERhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwb3J0RnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsRGF0YSA9IHRoaXMuZXhwb3J0RnVuY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjZWxsRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxEYXRhID0gU3RyaW5nKGNlbGxEYXRhKS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxEYXRhID0gJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgY3N2ICs9ICdcIicgKyBjZWxsRGF0YSArICdcIic7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCAoY29sdW1ucy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3N2ICs9IHRoaXMuY3N2U2VwYXJhdG9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtjc3ZdLCB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgaWYgKGxpbmsuZG93bmxvYWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpKTtcbiAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIHRoaXMuZXhwb3J0RmlsZW5hbWUgKyAnLmNzdicpO1xuICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3N2ID0gJ2RhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwnICsgY3N2O1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oZW5jb2RlVVJJKGNzdikpO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0U2Nyb2xsVG9wKCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKVxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1ZpcnR1YWxJbmRleCgwKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUbyh7dG9wOiAwfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNjcm9sbFRvVmlydHVhbEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbEJvZHkpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbEJvZHkuc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2aXJ0dWFsU2Nyb2xsVGltZW91dDogYW55O1xuXG4gICAgdmlydHVhbFBhZ2U6IG51bWJlcjtcblxuICAgIG9uU2Nyb2xsSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnZpcnR1YWxTY3JvbGxUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gTWF0aC5mbG9vcihpbmRleCAvIHRoaXMucm93cyk7XG4gICAgICAgICAgICAgICAgbGV0IHZpcnR1YWxTY3JvbGxPZmZzZXQgPSBwYWdlID09PSAwID8gMCA6IChwYWdlIC0gMSkgKiB0aGlzLnJvd3M7XG4gICAgICAgICAgICAgICAgbGV0IHZpcnR1YWxTY3JvbGxDaHVua1NpemUgPSBwYWdlID09PSAwID8gdGhpcy5yb3dzICogMiA6IHRoaXMucm93cyAqIDM7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFnZSAhPT0gdGhpcy52aXJ0dWFsUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxQYWdlID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6IHZpcnR1YWxTY3JvbGxPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzOiB2aXJ0dWFsU2Nyb2xsQ2h1bmtTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXI6IHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnNbJ2dsb2JhbCddID8gKDxGaWx0ZXJNZXRhZGF0YT4gdGhpcy5maWx0ZXJzWydnbG9iYWwnXSkudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTb3J0TWV0YTogdGhpcy5tdWx0aVNvcnRNZXRhXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRoaXMudmlydHVhbFNjcm9sbERlbGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzY3JvbGxUbyhvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxCb2R5KSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5LnNjcm9sbFRvKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMud3JhcHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8ob3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gb3B0aW9ucy5sZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IG9wdGlvbnMudG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRWRpdGluZ0NlbGwoY2VsbCwgZGF0YSwgZmllbGQsIGluZGV4KSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0NlbGwgPSBjZWxsO1xuICAgICAgICB0aGlzLmVkaXRpbmdDZWxsRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuZWRpdGluZ0NlbGxGaWVsZCA9IGZpZWxkO1xuICAgICAgICB0aGlzLmVkaXRpbmdDZWxsUm93SW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRFZGl0TGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpc0VkaXRpbmdDZWxsVmFsaWQoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5lZGl0aW5nQ2VsbCAmJiBEb21IYW5kbGVyLmZpbmQodGhpcy5lZGl0aW5nQ2VsbCwgJy5uZy1pbnZhbGlkLm5nLWRpcnR5JykubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRFZGl0TGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lciA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRpbmdDZWxsICYmICF0aGlzLnNlbGZDbGljayAmJiB0aGlzLmlzRWRpdGluZ0NlbGxWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5lZGl0aW5nQ2VsbCwgJ3AtY2VsbC1lZGl0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGluZ0NlbGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRWRpdENvbXBsZXRlLmVtaXQoeyBmaWVsZDogdGhpcy5lZGl0aW5nQ2VsbEZpZWxkLCBkYXRhOiB0aGlzLmVkaXRpbmdDZWxsRGF0YSwgb3JpZ2luYWxFdmVudDogZXZlbnQsIGluZGV4OiB0aGlzLmVkaXRpbmdDZWxsUm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGluZ0NlbGxGaWVsZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGluZ0NlbGxEYXRhID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0aW5nQ2VsbFJvd0luZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEVkaXRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudEVkaXRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRFZGl0TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RWRpdExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRSb3dFZGl0KHJvd0RhdGE6IGFueSkge1xuICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93RGF0YSwgdGhpcy5kYXRhS2V5KSk7XG4gICAgICAgIHRoaXMuZWRpdGluZ1Jvd0tleXNbZGF0YUtleVZhbHVlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgc2F2ZVJvd0VkaXQocm93RGF0YTogYW55LCByb3dFbGVtZW50OiBIVE1MVGFibGVSb3dFbGVtZW50KSB7XG4gICAgICAgIGlmIChEb21IYW5kbGVyLmZpbmQocm93RWxlbWVudCwgJy5uZy1pbnZhbGlkLm5nLWRpcnR5JykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93RGF0YSwgdGhpcy5kYXRhS2V5KSk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5lZGl0aW5nUm93S2V5c1tkYXRhS2V5VmFsdWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsUm93RWRpdChyb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IGRhdGFLZXlWYWx1ZSA9IFN0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIHRoaXMuZGF0YUtleSkpO1xuICAgICAgICBkZWxldGUgdGhpcy5lZGl0aW5nUm93S2V5c1tkYXRhS2V5VmFsdWVdO1xuICAgIH1cblxuICAgIHRvZ2dsZVJvdyhyb3dEYXRhOiBhbnksIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFLZXkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YUtleSBtdXN0IGJlIGRlZmluZWQgdG8gdXNlIHJvdyBleHBhbnNpb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkYXRhS2V5VmFsdWUgPSBTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShyb3dEYXRhLCB0aGlzLmRhdGFLZXkpKTtcblxuICAgICAgICBpZiAodGhpcy5leHBhbmRlZFJvd0tleXNbZGF0YUtleVZhbHVlXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5leHBhbmRlZFJvd0tleXNbZGF0YUtleVZhbHVlXTtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDb2xsYXBzZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBkYXRhOiByb3dEYXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0V4cGFuZE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZFJvd0tleXMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZFJvd0tleXNbZGF0YUtleVZhbHVlXSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uUm93RXhwYW5kLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGRhdGE6IHJvd0RhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNSb3dFeHBhbmRlZChyb3dEYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRSb3dLZXlzW1N0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIHRoaXMuZGF0YUtleSkpXSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc1Jvd0VkaXRpbmcocm93RGF0YTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRpbmdSb3dLZXlzW1N0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIHRoaXMuZGF0YUtleSkpXSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnO1xuICAgIH1cblxuICAgIGlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnO1xuICAgIH1cblxuICAgIG9uQ29sdW1uUmVzaXplQmVnaW4oZXZlbnQpIHtcbiAgICAgICAgbGV0IGNvbnRhaW5lckxlZnQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS5sZWZ0O1xuICAgICAgICB0aGlzLnJlc2l6ZUNvbHVtbkVsZW1lbnQgPSBldmVudC50YXJnZXQucGFyZW50RWxlbWVudDtcbiAgICAgICAgdGhpcy5jb2x1bW5SZXNpemluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubGFzdFJlc2l6ZXJIZWxwZXJYID0gKGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyTGVmdCArIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCk7XG4gICAgICAgIHRoaXMub25Db2x1bW5SZXNpemUoZXZlbnQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQ29sdW1uUmVzaXplKGV2ZW50KSB7XG4gICAgICAgIGxldCBjb250YWluZXJMZWZ0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkubGVmdDtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC11bnNlbGVjdGFibGUtdGV4dCcpO1xuICAgICAgICB0aGlzLnJlc2l6ZUhlbHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgdGhpcy5yZXNpemVIZWxwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSAwICsgJ3B4JztcbiAgICAgICAgdGhpcy5yZXNpemVIZWxwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gKGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyTGVmdCArIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCkgKyAncHgnO1xuXG4gICAgICAgIHRoaXMucmVzaXplSGVscGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgb25Db2x1bW5SZXNpemVFbmQoKSB7XG4gICAgICAgIGxldCBkZWx0YSA9IHRoaXMucmVzaXplSGVscGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMubGFzdFJlc2l6ZXJIZWxwZXJYO1xuICAgICAgICBsZXQgY29sdW1uV2lkdGggPSB0aGlzLnJlc2l6ZUNvbHVtbkVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBuZXdDb2x1bW5XaWR0aCA9IGNvbHVtbldpZHRoICsgZGVsdGE7XG4gICAgICAgIGxldCBtaW5XaWR0aCA9IHRoaXMucmVzaXplQ29sdW1uRWxlbWVudC5zdHlsZS5taW5XaWR0aHx8MTU7XG5cbiAgICAgICAgaWYgKG5ld0NvbHVtbldpZHRoID49IG1pbldpZHRoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb2x1bW5SZXNpemVNb2RlID09PSAnZml0Jykge1xuICAgICAgICAgICAgICAgIGxldCBuZXh0Q29sdW1uID0gdGhpcy5yZXNpemVDb2x1bW5FbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBsZXQgbmV4dENvbHVtbldpZHRoID0gbmV4dENvbHVtbi5vZmZzZXRXaWR0aCAtIGRlbHRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5ld0NvbHVtbldpZHRoID4gMTUgJiYgbmV4dENvbHVtbldpZHRoID4gMTUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQ29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0NvbHVtbldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5leHRDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29sdW1uLnN0eWxlLndpZHRoID0gbmV4dENvbHVtbldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGFibGVDZWxscyhuZXdDb2x1bW5XaWR0aCwgbmV4dENvbHVtbldpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29sdW1uUmVzaXplTW9kZSA9PT0gJ2V4cGFuZCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFibGVXaWR0aCA9IHRoaXMudGFibGVWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIGRlbHRhO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IHRhYmxlV2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQ29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld0NvbHVtbldpZHRoICsgJ3B4JztcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB0YWJsZVdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGFibGVDZWxscyhuZXdDb2x1bW5XaWR0aCwgbnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Db2xSZXNpemUuZW1pdCh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogdGhpcy5yZXNpemVDb2x1bW5FbGVtZW50LFxuICAgICAgICAgICAgICAgIGRlbHRhOiBkZWx0YVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2l6ZUhlbHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJ3AtdW5zZWxlY3RhYmxlLXRleHQnKTtcbiAgICB9XG5cbiAgICByZXNpemVUYWJsZUNlbGxzKG5ld0NvbHVtbldpZHRoLCBuZXh0Q29sdW1uV2lkdGgpIHtcbiAgICAgICAgbGV0IGNvbEluZGV4ID0gRG9tSGFuZGxlci5pbmRleCh0aGlzLnJlc2l6ZUNvbHVtbkVsZW1lbnQpO1xuICAgICAgICBsZXQgd2lkdGhzID0gW107XG4gICAgICAgIGNvbnN0IHRhYmxlSGVhZCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnLnAtZGF0YXRhYmxlLXRoZWFkJyk7XG4gICAgICAgIGxldCBoZWFkZXJzID0gRG9tSGFuZGxlci5maW5kKHRhYmxlSGVhZCwgJ3RyID4gdGgnKTtcbiAgICAgICAgaGVhZGVycy5mb3JFYWNoKGhlYWRlciA9PiB3aWR0aHMucHVzaChEb21IYW5kbGVyLmdldE91dGVyV2lkdGgoaGVhZGVyKSkpO1xuXG4gICAgICAgIHRoaXMuZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgICAgICB0aGlzLmNyZWF0ZVN0eWxlRWxlbWVudCgpO1xuXG4gICAgICAgIGxldCBpbm5lckhUTUwgPSAnJztcbiAgICAgICAgd2lkdGhzLmZvckVhY2goKHdpZHRoLGluZGV4KSA9PiB7XG4gICAgICAgICAgICBsZXQgY29sV2lkdGggPSBpbmRleCA9PT0gY29sSW5kZXggPyBuZXdDb2x1bW5XaWR0aCA6IChuZXh0Q29sdW1uV2lkdGggJiYgaW5kZXggPT09IGNvbEluZGV4ICsgMSkgPyBuZXh0Q29sdW1uV2lkdGggOiB3aWR0aDtcbiAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgIyR7dGhpcy5pZH0tdGFibGUgPiAucC1kYXRhdGFibGUtdGhlYWQgPiB0ciA+IHRoOm50aC1jaGlsZCgke2luZGV4KzF9KSB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAke2NvbFdpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIyR7dGhpcy5pZH0tdGFibGUgPiAucC1kYXRhdGFibGUtdGJvZHkgPiB0ciA+IHRkOm50aC1jaGlsZCgke2luZGV4KzF9KSB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAke2NvbFdpZHRofXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgIH1cblxuICAgIG9uQ29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCBjb2x1bW5FbGVtZW50KSB7XG4gICAgICAgIHRoaXMucmVvcmRlckljb25XaWR0aCA9IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgodGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucmVvcmRlckljb25IZWlnaHQgPSBEb21IYW5kbGVyLmdldEhpZGRlbkVsZW1lbnRPdXRlckhlaWdodCh0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmRyYWdnZWRDb2x1bW4gPSBjb2x1bW5FbGVtZW50O1xuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsICdiJyk7ICAgIC8vIEZvciBmaXJlZm94XG4gICAgfVxuXG4gICAgb25Db2x1bW5EcmFnRW50ZXIoZXZlbnQsIGRyb3BIZWFkZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVvcmRlcmFibGVDb2x1bW5zICYmIHRoaXMuZHJhZ2dlZENvbHVtbiAmJiBkcm9wSGVhZGVyKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGRyb3BIZWFkZXJPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldChkcm9wSGVhZGVyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dlZENvbHVtbiAhPSBkcm9wSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRyYWdJbmRleCA9IERvbUhhbmRsZXIuaW5kZXhXaXRoaW5Hcm91cCh0aGlzLmRyYWdnZWRDb2x1bW4sICdwcmVvcmRlcmFibGVjb2x1bW4nKTtcbiAgICAgICAgICAgICAgICBsZXQgZHJvcEluZGV4ID0gRG9tSGFuZGxlci5pbmRleFdpdGhpbkdyb3VwKGRyb3BIZWFkZXIsICdwcmVvcmRlcmFibGVjb2x1bW4nKTtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0TGVmdCA9IGRyb3BIZWFkZXJPZmZzZXQubGVmdCAtIGNvbnRhaW5lck9mZnNldC5sZWZ0O1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRUb3AgPSBjb250YWluZXJPZmZzZXQudG9wIC0gZHJvcEhlYWRlck9mZnNldC50b3A7XG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbkNlbnRlciA9IGRyb3BIZWFkZXJPZmZzZXQubGVmdCArIGRyb3BIZWFkZXIub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSBkcm9wSGVhZGVyT2Zmc2V0LnRvcCAtIGNvbnRhaW5lck9mZnNldC50b3AgLSAodGhpcy5yZW9yZGVySWNvbkhlaWdodCAtIDEpICsgJ3B4JztcbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gZHJvcEhlYWRlck9mZnNldC50b3AgLSBjb250YWluZXJPZmZzZXQudG9wICsgZHJvcEhlYWRlci5vZmZzZXRIZWlnaHQgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnBhZ2VYID4gY29sdW1uQ2VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvclVwVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICh0YXJnZXRMZWZ0ICsgZHJvcEhlYWRlci5vZmZzZXRXaWR0aCAtIE1hdGguY2VpbCh0aGlzLnJlb3JkZXJJY29uV2lkdGggLyAyKSkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICh0YXJnZXRMZWZ0ICsgZHJvcEhlYWRlci5vZmZzZXRXaWR0aCAtIE1hdGguY2VpbCh0aGlzLnJlb3JkZXJJY29uV2lkdGggLyAyKSkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BQb3NpdGlvbiA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JVcFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAodGFyZ2V0TGVmdCAtIE1hdGguY2VpbCh0aGlzLnJlb3JkZXJJY29uV2lkdGggLyAyKSkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICh0YXJnZXRMZWZ0IC0gTWF0aC5jZWlsKHRoaXMucmVvcmRlckljb25XaWR0aCAvIDIpKSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcFBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChkcm9wSW5kZXggLSBkcmFnSW5kZXggPT09IDEgJiYgdGhpcy5kcm9wUG9zaXRpb24gPT09IC0xKSB8fCAoZHJvcEluZGV4IC0gZHJhZ0luZGV4ID09PSAtMSAmJiB0aGlzLmRyb3BQb3NpdGlvbiA9PT0gMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvclVwVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvckRvd25WaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29sdW1uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlb3JkZXJhYmxlQ29sdW1ucyAmJiB0aGlzLmRyYWdnZWRDb2x1bW4pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JVcFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29sdW1uRHJvcChldmVudCwgZHJvcENvbHVtbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2VkQ29sdW1uKSB7XG4gICAgICAgICAgICBsZXQgZHJhZ0luZGV4ID0gRG9tSGFuZGxlci5pbmRleFdpdGhpbkdyb3VwKHRoaXMuZHJhZ2dlZENvbHVtbiwgJ3ByZW9yZGVyYWJsZWNvbHVtbicpO1xuICAgICAgICAgICAgbGV0IGRyb3BJbmRleCA9IERvbUhhbmRsZXIuaW5kZXhXaXRoaW5Hcm91cChkcm9wQ29sdW1uLCAncHJlb3JkZXJhYmxlY29sdW1uJyk7XG4gICAgICAgICAgICBsZXQgYWxsb3dEcm9wID0gKGRyYWdJbmRleCAhPSBkcm9wSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCAtIGRyYWdJbmRleCA9PSAxICYmIHRoaXMuZHJvcFBvc2l0aW9uID09PSAtMSkgfHwgKGRyYWdJbmRleCAtIGRyb3BJbmRleCA9PSAxICYmIHRoaXMuZHJvcFBvc2l0aW9uID09PSAxKSkpIHtcbiAgICAgICAgICAgICAgICBhbGxvd0Ryb3AgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCA8IGRyYWdJbmRleCAmJiB0aGlzLmRyb3BQb3NpdGlvbiA9PT0gMSkpKSB7XG4gICAgICAgICAgICAgICAgZHJvcEluZGV4ID0gZHJvcEluZGV4ICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCA+IGRyYWdJbmRleCAmJiB0aGlzLmRyb3BQb3NpdGlvbiA9PT0gLTEpKSkge1xuICAgICAgICAgICAgICAgIGRyb3BJbmRleCA9IGRyb3BJbmRleCAtIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbGxvd0Ryb3ApIHtcbiAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5yZW9yZGVyQXJyYXkodGhpcy5jb2x1bW5zLCBkcmFnSW5kZXgsIGRyb3BJbmRleCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29sUmVvcmRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZHJhZ0luZGV4OiBkcmFnSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGRyb3BJbmRleDogZHJvcEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnNcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvclVwVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvckRvd25WaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkQ29sdW1uLmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkQ29sdW1uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZHJvcFBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93RHJhZ1N0YXJ0KGV2ZW50LCBpbmRleCkge1xuICAgICAgICB0aGlzLnJvd0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkUm93SW5kZXggPSBpbmRleDtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCAnYicpOyAgICAvLyBGb3IgZmlyZWZveFxuICAgIH1cblxuICAgIG9uUm93RHJhZ092ZXIoZXZlbnQsIGluZGV4LCByb3dFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJvd0RyYWdnaW5nICYmIHRoaXMuZHJhZ2dlZFJvd0luZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgbGV0IHJvd1kgPSBEb21IYW5kbGVyLmdldE9mZnNldChyb3dFbGVtZW50KS50b3AgKyBEb21IYW5kbGVyLmdldFdpbmRvd1Njcm9sbFRvcCgpO1xuICAgICAgICAgICAgbGV0IHBhZ2VZID0gZXZlbnQucGFnZVk7XG4gICAgICAgICAgICBsZXQgcm93TWlkWSA9IHJvd1kgKyBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHJvd0VsZW1lbnQpIC8gMjtcbiAgICAgICAgICAgIGxldCBwcmV2Um93RWxlbWVudCA9IHJvd0VsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICAgICAgaWYgKHBhZ2VZIDwgcm93TWlkWSkge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3Mocm93RWxlbWVudCwgJ3AtZGF0YXRhYmxlLWRyYWdwb2ludC1ib3R0b20nKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcHBlZFJvd0luZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZSb3dFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHByZXZSb3dFbGVtZW50LCAncC1kYXRhdGFibGUtZHJhZ3BvaW50LWJvdHRvbScpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhyb3dFbGVtZW50LCAncC1kYXRhdGFibGUtZHJhZ3BvaW50LXRvcCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZSb3dFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHByZXZSb3dFbGVtZW50LCAncC1kYXRhdGFibGUtZHJhZ3BvaW50LWJvdHRvbScpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhyb3dFbGVtZW50LCAncC1kYXRhdGFibGUtZHJhZ3BvaW50LXRvcCcpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wcGVkUm93SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyhyb3dFbGVtZW50LCAncC1kYXRhdGFibGUtZHJhZ3BvaW50LWJvdHRvbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Sb3dEcmFnTGVhdmUoZXZlbnQsIHJvd0VsZW1lbnQpIHtcbiAgICAgICAgbGV0IHByZXZSb3dFbGVtZW50ID0gcm93RWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgICAgICBpZiAocHJldlJvd0VsZW1lbnQpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3MocHJldlJvd0VsZW1lbnQsICdwLWRhdGF0YWJsZS1kcmFncG9pbnQtYm90dG9tJyk7XG4gICAgICAgIH1cblxuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHJvd0VsZW1lbnQsICdwLWRhdGF0YWJsZS1kcmFncG9pbnQtYm90dG9tJyk7XG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3Mocm93RWxlbWVudCwgJ3AtZGF0YXRhYmxlLWRyYWdwb2ludC10b3AnKTtcbiAgICB9XG5cbiAgICBvblJvd0RyYWdFbmQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5yb3dEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRyYWdnZWRSb3dJbmRleCA9IG51bGw7XG4gICAgICAgIHRoaXMuZHJvcHBlZFJvd0luZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgICBvblJvd0Ryb3AoZXZlbnQsIHJvd0VsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcHBlZFJvd0luZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBkcm9wSW5kZXggPSAodGhpcy5kcmFnZ2VkUm93SW5kZXggPiB0aGlzLmRyb3BwZWRSb3dJbmRleCkgPyB0aGlzLmRyb3BwZWRSb3dJbmRleCA6ICh0aGlzLmRyb3BwZWRSb3dJbmRleCA9PT0gMCkgPyAwIDogdGhpcy5kcm9wcGVkUm93SW5kZXggLSAxO1xuICAgICAgICAgICAgT2JqZWN0VXRpbHMucmVvcmRlckFycmF5KHRoaXMudmFsdWUsIHRoaXMuZHJhZ2dlZFJvd0luZGV4LCBkcm9wSW5kZXgpO1xuXG4gICAgICAgICAgICB0aGlzLm9uUm93UmVvcmRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBkcmFnSW5kZXg6IHRoaXMuZHJhZ2dlZFJvd0luZGV4LFxuICAgICAgICAgICAgICAgIGRyb3BJbmRleDogZHJvcEluZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvL2NsZWFudXBcbiAgICAgICAgdGhpcy5vblJvd0RyYWdMZWF2ZShldmVudCwgcm93RWxlbWVudCk7XG4gICAgICAgIHRoaXMub25Sb3dEcmFnRW5kKGV2ZW50KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZmlsdGVyZWRWYWx1ZXx8dGhpcy52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGRhdGEgPT0gbnVsbCB8fCBkYXRhLmxlbmd0aCA9PSAwO1xuICAgIH1cblxuICAgIGdldEJsb2NrYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnTCoHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBnZXRTdG9yYWdlKCkge1xuICAgICAgICBzd2l0Y2godGhpcy5zdGF0ZVN0b3JhZ2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xvY2FsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcblxuICAgICAgICAgICAgY2FzZSAnc2Vzc2lvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXNzaW9uU3RvcmFnZTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5zdGF0ZVN0b3JhZ2UgKyAnIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB0aGUgc3RhdGUgc3RvcmFnZSwgc3VwcG9ydGVkIHZhbHVlcyBhcmUgXCJsb2NhbFwiIGFuZCBcInNlc3Npb25cIi4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3RhdGVmdWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlS2V5ICE9IG51bGw7XG4gICAgfVxuXG4gICAgc2F2ZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5nZXRTdG9yYWdlKCk7XG4gICAgICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgc3RhdGUuZmlyc3QgPSB0aGlzLmZpcnN0O1xuICAgICAgICAgICAgc3RhdGUucm93cyA9IHRoaXMucm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNvcnRGaWVsZCkge1xuICAgICAgICAgICAgc3RhdGUuc29ydEZpZWxkID0gdGhpcy5zb3J0RmllbGQ7XG4gICAgICAgICAgICBzdGF0ZS5zb3J0T3JkZXIgPSB0aGlzLnNvcnRPcmRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpU29ydE1ldGEpIHtcbiAgICAgICAgICAgIHN0YXRlLm11bHRpU29ydE1ldGEgPSB0aGlzLm11bHRpU29ydE1ldGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNGaWx0ZXIoKSkge1xuICAgICAgICAgICAgc3RhdGUuZmlsdGVycyA9IHRoaXMuZmlsdGVycztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvbHVtbldpZHRocyhzdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZW9yZGVyYWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvbHVtbk9yZGVyKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5leHBhbmRlZFJvd0tleXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RhdGUuZXhwYW5kZWRSb3dLZXlzID0gdGhpcy5leHBhbmRlZFJvd0tleXM7XG4gICAgICAgIH1cblxuICAgICAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5zdGF0ZUtleSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgICAgICAgdGhpcy5vblN0YXRlU2F2ZS5lbWl0KHN0YXRlKTtcbiAgICB9XG5cbiAgICBjbGVhclN0YXRlKCkge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5nZXRTdG9yYWdlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGVLZXkpIHtcbiAgICAgICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0YXRlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVTdGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXRlS2V5KTtcbiAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IC9cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfS5cXGR7M31aLztcbiAgICAgICAgY29uc3QgcmV2aXZlciA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgZGF0ZUZvcm1hdC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZVN0cmluZykge1xuICAgICAgICAgICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0gSlNPTi5wYXJzZShzdGF0ZVN0cmluZywgcmV2aXZlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpcnN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdCA9IHN0YXRlLmZpcnN0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlLmVtaXQodGhpcy5maXJzdCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93cyA9IHN0YXRlLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93c0NoYW5nZS5lbWl0KHRoaXMucm93cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUuc29ydEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JpbmdTb3J0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zb3J0RmllbGQgPSBzdGF0ZS5zb3J0RmllbGQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc29ydE9yZGVyID0gc3RhdGUuc29ydE9yZGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yaW5nU29ydCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsdGlTb3J0TWV0YSA9IHN0YXRlLm11bHRpU29ydE1ldGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZS5maWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JpbmdGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHN0YXRlLmZpbHRlcnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbldpZHRoc1N0YXRlID0gc3RhdGUuY29sdW1uV2lkdGhzO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0YXRlLmV4cGFuZGVkUm93S2V5cykge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRSb3dLZXlzID0gc3RhdGUuZXhwYW5kZWRSb3dLZXlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCkgPT4gdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChzdGF0ZS5zZWxlY3Rpb24pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVJlc3RvcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5vblN0YXRlUmVzdG9yZS5lbWl0KHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVDb2x1bW5XaWR0aHMoc3RhdGUpIHtcbiAgICAgICAgbGV0IHdpZHRocyA9IFtdO1xuICAgICAgICBsZXQgaGVhZGVycyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAnLnAtZGF0YXRhYmxlLXRoZWFkID4gdHIgPiB0aCcpO1xuICAgICAgICBoZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHdpZHRocy5wdXNoKERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aChoZWFkZXIpKSk7XG4gICAgICAgIHN0YXRlLmNvbHVtbldpZHRocyA9IHdpZHRocy5qb2luKCcsJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uUmVzaXplTW9kZSA9PT0gJ2V4cGFuZCcpIHtcbiAgICAgICAgICAgIHN0YXRlLnRhYmxlV2lkdGggPSAgRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMudGFibGVWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkgKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzdG9yZUNvbHVtbldpZHRocygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uV2lkdGhzU3RhdGUpIHtcbiAgICAgICAgICAgIGxldCB3aWR0aHMgPSB0aGlzLmNvbHVtbldpZHRoc1N0YXRlLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtblJlc2l6ZU1vZGUgPT09ICdleHBhbmQnICYmIHRoaXMudGFibGVXaWR0aFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy50YWJsZVdpZHRoU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbldpZHRoID0gdGhpcy50YWJsZVdpZHRoU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMudGFibGVXaWR0aFN0YXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVN0eWxlRWxlbWVudCgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlICYmIHdpZHRocyAmJiB3aWR0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRocy5mb3JFYWNoKCh3aWR0aCxpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJHt0aGlzLmlkfS10YWJsZSA+IC5wLWRhdGF0YWJsZS10aGVhZCA+IHRyID4gdGg6bnRoLWNoaWxkKCR7aW5kZXgrMX0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMCAwICR7d2lkdGh9cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyR7dGhpcy5pZH0tdGFibGUgPiAucC1kYXRhdGFibGUtdGJvZHkgPiB0ciA+IHRkOm50aC1jaGlsZCgke2luZGV4KzF9KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAke3dpZHRofXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5maW5kKHRoaXMudGFibGVWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJy5wLWRhdGF0YWJsZS10aGVhZCA+IHRyID4gdGgnKS5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlci5zdHlsZS53aWR0aCA9IHdpZHRoc1tpbmRleF0gKyAncHgnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlQ29sdW1uT3JkZXIoc3RhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1ucykge1xuICAgICAgICAgICAgbGV0IGNvbHVtbk9yZGVyOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyLnB1c2goY29sdW1uLmZpZWxkfHxjb2x1bW4ua2V5KVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHN0YXRlLmNvbHVtbk9yZGVyID0gY29sdW1uT3JkZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXN0b3JlQ29sdW1uT3JkZXIoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLmdldFN0b3JhZ2UoKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTdHJpbmcgPSBzdG9yYWdlLmdldEl0ZW0odGhpcy5zdGF0ZUtleSk7XG4gICAgICAgIGlmIChzdGF0ZVN0cmluZykge1xuICAgICAgICAgICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0gSlNPTi5wYXJzZShzdGF0ZVN0cmluZyk7XG4gICAgICAgICAgICBsZXQgY29sdW1uT3JkZXIgPSBzdGF0ZS5jb2x1bW5PcmRlcjtcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcmRlcikge1xuICAgICAgICAgICAgICAgIGxldCByZW9yZGVyZWRDb2x1bW5zID0gW107XG5cbiAgICAgICAgICAgICAgICBjb2x1bW5PcmRlci5tYXAoa2V5ID0+ICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2wgPSB0aGlzLmZpbmRDb2x1bW5CeUtleShrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW9yZGVyZWRDb2x1bW5zLnB1c2goY29sKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5PcmRlclN0YXRlUmVzdG9yZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHJlb3JkZXJlZENvbHVtbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kQ29sdW1uQnlLZXkoa2V5KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNvbCBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sLmtleSA9PT0ga2V5IHx8IGNvbC5maWVsZCA9PT0ga2V5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICB0aGlzLnN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0R3JvdXBSb3dzTWV0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtmaWVsZDogdGhpcy5ncm91cFJvd3NCeSwgb3JkZXI6IHRoaXMuZ3JvdXBSb3dzQnlPcmRlcn07XG4gICAgfVxuXG4gICAgY3JlYXRlUmVzcG9uc2l2ZVN0eWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZVN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaXZlU3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2l2ZVN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5yZXNwb25zaXZlU3R5bGVFbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGlubmVySFRNTCA9IGBcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICMke3RoaXMuaWR9IC5wLWRhdGF0YWJsZS10aGVhZCA+IHRyID4gdGgsXG4gICAgIyR7dGhpcy5pZH0gLnAtZGF0YXRhYmxlLXRmb290ID4gdHIgPiB0ZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAjJHt0aGlzLmlkfSAucC1kYXRhdGFibGUtdGJvZHkgPiB0ciA+IHRkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgICMke3RoaXMuaWR9IC5wLWRhdGF0YWJsZS10Ym9keSA+IHRyID4gdGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlcjogMCBub25lO1xuICAgIH1cblxuICAgICMke3RoaXMuaWR9LnAtZGF0YXRhYmxlLWdyaWRsaW5lcyAucC1kYXRhdGFibGUtdGJvZHkgPiB0ciA+IHRkOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIH1cblxuICAgICMke3RoaXMuaWR9IC5wLWRhdGF0YWJsZS10Ym9keSA+IHRyID4gdGQgPiAucC1jb2x1bW4tdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5gO1xuXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpdmVTdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVJlc3BvbnNpdmVTdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZVN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnJlc3BvbnNpdmVTdHlsZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaXZlU3R5bGVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lTdHlsZUVsZW1lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEVkaXRMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmVkaXRpbmdDZWxsID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95UmVzcG9uc2l2ZVN0eWxlKCk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1twVGFibGVCb2R5XScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkdC5leHBhbmRlZFJvd1RlbXBsYXRlICYmICFkdC52aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXJvd0RhdGEgbGV0LXJvd0luZGV4PVwiaW5kZXhcIiBbbmdGb3JPZl09XCJ2YWx1ZVwiIFtuZ0ZvclRyYWNrQnldPVwiZHQucm93VHJhY2tCeVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkdC5ncm91cEhlYWRlclRlbXBsYXRlICYmIGR0LnJvd0dyb3VwTW9kZSA9PT0gJ3N1YmhlYWRlcicgJiYgc2hvdWxkUmVuZGVyUm93R3JvdXBIZWFkZXIodmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KVwiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR0Lmdyb3VwSGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0RhdGEsIHJvd0luZGV4OiBkdC5wYWdpbmF0b3IgPyAoZHQuZmlyc3QgKyByb3dJbmRleCkgOiByb3dJbmRleCwgY29sdW1uczogY29sdW1ucywgZWRpdGluZzogKGR0LmVkaXRNb2RlID09PSAncm93JyAmJiBkdC5pc1Jvd0VkaXRpbmcocm93RGF0YSkpLCBmcm96ZW46IGZyb3plbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHQucm93R3JvdXBNb2RlICE9PSAncm93c3BhbidcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dEYXRhLCByb3dJbmRleDogZHQucGFnaW5hdG9yID8gKGR0LmZpcnN0ICsgcm93SW5kZXgpIDogcm93SW5kZXgsIGNvbHVtbnM6IGNvbHVtbnMsIGVkaXRpbmc6IChkdC5lZGl0TW9kZSA9PT0gJ3JvdycgJiYgZHQuaXNSb3dFZGl0aW5nKHJvd0RhdGEpKSwgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR0LnJvd0dyb3VwTW9kZSA9PT0gJ3Jvd3NwYW4nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcm93RGF0YSwgcm93SW5kZXg6IGR0LnBhZ2luYXRvciA/IChkdC5maXJzdCArIHJvd0luZGV4KSA6IHJvd0luZGV4LCBjb2x1bW5zOiBjb2x1bW5zLCBlZGl0aW5nOiAoZHQuZWRpdE1vZGUgPT09ICdyb3cnICYmIGR0LmlzUm93RWRpdGluZyhyb3dEYXRhKSksIGZyb3plbjogZnJvemVuLCByb3dncm91cDogc2hvdWxkUmVuZGVyUm93c3Bhbih2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpLCByb3dzcGFuOiBjYWxjdWxhdGVSb3dHcm91cFNpemUodmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHQuZ3JvdXBGb290ZXJUZW1wbGF0ZSAmJiBkdC5yb3dHcm91cE1vZGUgPT09ICdzdWJoZWFkZXInICYmIHNob3VsZFJlbmRlclJvd0dyb3VwRm9vdGVyKHZhbHVlLCByb3dEYXRhLCByb3dJbmRleClcIiByb2xlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkdC5ncm91cEZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dEYXRhLCByb3dJbmRleDogZHQucGFnaW5hdG9yID8gKGR0LmZpcnN0ICsgcm93SW5kZXgpIDogcm93SW5kZXgsIGNvbHVtbnM6IGNvbHVtbnMsIGVkaXRpbmc6IChkdC5lZGl0TW9kZSA9PT0gJ3JvdycgJiYgZHQuaXNSb3dFZGl0aW5nKHJvd0RhdGEpKSwgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkdC5leHBhbmRlZFJvd1RlbXBsYXRlICYmIGR0LnZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtWaXJ0dWFsRm9yIGxldC1yb3dEYXRhIGxldC1yb3dJbmRleD1cImluZGV4XCIgW2Nka1ZpcnR1YWxGb3JPZl09XCJ2YWx1ZVwiIFtjZGtWaXJ0dWFsRm9yVHJhY2tCeV09XCJkdC5yb3dUcmFja0J5XCIgW2Nka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZV09XCIwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd0RhdGEgPyB0ZW1wbGF0ZTogZHQubG9hZGluZ0JvZHlUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcm93RGF0YSwgcm93SW5kZXg6IGR0LnBhZ2luYXRvciA/IChkdC5maXJzdCArIHJvd0luZGV4KSA6IHJvd0luZGV4LCBjb2x1bW5zOiBjb2x1bW5zLCBlZGl0aW5nOiAoZHQuZWRpdE1vZGUgPT09ICdyb3cnICYmIGR0LmlzUm93RWRpdGluZyhyb3dEYXRhKSksIGZyb3plbjogZnJvemVufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkdC5leHBhbmRlZFJvd1RlbXBsYXRlICYmICEoZnJvemVuICYmIGR0LmZyb3plbkV4cGFuZGVkUm93VGVtcGxhdGUpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXJvd0RhdGEgbGV0LXJvd0luZGV4PVwiaW5kZXhcIiBbbmdGb3JPZl09XCJ2YWx1ZVwiIFtuZ0ZvclRyYWNrQnldPVwiZHQucm93VHJhY2tCeVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZHQuZ3JvdXBIZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0RhdGEsIHJvd0luZGV4OiBkdC5wYWdpbmF0b3IgPyAoZHQuZmlyc3QgKyByb3dJbmRleCkgOiByb3dJbmRleCwgY29sdW1uczogY29sdW1ucywgZXhwYW5kZWQ6IGR0LmlzUm93RXhwYW5kZWQocm93RGF0YSksIGVkaXRpbmc6IChkdC5lZGl0TW9kZSA9PT0gJ3JvdycgJiYgZHQuaXNSb3dFZGl0aW5nKHJvd0RhdGEpKSwgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR0Lmdyb3VwSGVhZGVyVGVtcGxhdGUgJiYgZHQucm93R3JvdXBNb2RlID09PSAnc3ViaGVhZGVyJyAmJiBzaG91bGRSZW5kZXJSb3dHcm91cEhlYWRlcih2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpXCIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHQuZ3JvdXBIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcm93RGF0YSwgcm93SW5kZXg6IGR0LnBhZ2luYXRvciA/IChkdC5maXJzdCArIHJvd0luZGV4KSA6IHJvd0luZGV4LCBjb2x1bW5zOiBjb2x1bW5zLCBleHBhbmRlZDogZHQuaXNSb3dFeHBhbmRlZChyb3dEYXRhKSwgZWRpdGluZzogKGR0LmVkaXRNb2RlID09PSAncm93JyAmJiBkdC5pc1Jvd0VkaXRpbmcocm93RGF0YSkpLCBmcm96ZW46IGZyb3plbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHQuaXNSb3dFeHBhbmRlZChyb3dEYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHQuZXhwYW5kZWRSb3dUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogcm93RGF0YSwgcm93SW5kZXg6IGR0LnBhZ2luYXRvciA/IChkdC5maXJzdCArIHJvd0luZGV4KSA6IHJvd0luZGV4LCBjb2x1bW5zOiBjb2x1bW5zLCBmcm96ZW46IGZyb3plbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR0Lmdyb3VwRm9vdGVyVGVtcGxhdGUgJiYgZHQucm93R3JvdXBNb2RlID09PSAnc3ViaGVhZGVyJyAmJiBzaG91bGRSZW5kZXJSb3dHcm91cEZvb3Rlcih2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpXCIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR0Lmdyb3VwRm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0RhdGEsIHJvd0luZGV4OiBkdC5wYWdpbmF0b3IgPyAoZHQuZmlyc3QgKyByb3dJbmRleCkgOiByb3dJbmRleCwgY29sdW1uczogY29sdW1ucywgZXhwYW5kZWQ6IGR0LmlzUm93RXhwYW5kZWQocm93RGF0YSksIGVkaXRpbmc6IChkdC5lZGl0TW9kZSA9PT0gJ3JvdycgJiYgZHQuaXNSb3dFZGl0aW5nKHJvd0RhdGEpKSwgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkdC5mcm96ZW5FeHBhbmRlZFJvd1RlbXBsYXRlICYmIGZyb3plblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1yb3dEYXRhIGxldC1yb3dJbmRleD1cImluZGV4XCIgW25nRm9yT2ZdPVwidmFsdWVcIiBbbmdGb3JUcmFja0J5XT1cImR0LnJvd1RyYWNrQnlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0RhdGEsIHJvd0luZGV4OiBkdC5wYWdpbmF0b3IgPyAoZHQuZmlyc3QgKyByb3dJbmRleCkgOiByb3dJbmRleCwgY29sdW1uczogY29sdW1ucywgZXhwYW5kZWQ6IGR0LmlzUm93RXhwYW5kZWQocm93RGF0YSksIGVkaXRpbmc6IChkdC5lZGl0TW9kZSA9PT0gJ3JvdycgJiYgZHQuaXNSb3dFZGl0aW5nKHJvd0RhdGEpKSwgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR0LmlzUm93RXhwYW5kZWQocm93RGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR0LmZyb3plbkV4cGFuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0RhdGEsIHJvd0luZGV4OiBkdC5wYWdpbmF0b3IgPyAoZHQuZmlyc3QgKyByb3dJbmRleCkgOiByb3dJbmRleCwgY29sdW1uczogY29sdW1ucywgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR0LmxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkdC5sb2FkaW5nQm9keVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2x1bW5zLCBmcm96ZW46IGZyb3plbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkdC5pc0VtcHR5KCkgJiYgIWR0LmxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkdC5lbXB0eU1lc3NhZ2VUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1ucywgZnJvemVuOiBmcm96ZW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dChcInBUYWJsZUJvZHlcIikgY29sdW1uczogYW55W107XG5cbiAgICBASW5wdXQoXCJwVGFibGVCb2R5VGVtcGxhdGVcIikgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2YWw6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgICAgICBpZiAodGhpcy5mcm96ZW5Sb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZyb3plblJvd1N0aWNreVBvc2l0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kdC5zY3JvbGxhYmxlICYmIHRoaXMuZHQucm93R3JvdXBNb2RlID09PSAnc3ViaGVhZGVyJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Sb3dHcm91cEhlYWRlclN0aWNreVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBmcm96ZW46IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmcm96ZW5Sb3dzOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBfdmFsdWU6IGFueVtdO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5mcm96ZW5Sb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZyb3plblJvd1N0aWNreVBvc2l0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kdC5zY3JvbGxhYmxlICYmIHRoaXMuZHQucm93R3JvdXBNb2RlID09PSAnc3ViaGVhZGVyJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Sb3dHcm91cEhlYWRlclN0aWNreVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnZhbHVlU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHQudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG91bGRSZW5kZXJSb3dHcm91cEhlYWRlcih2YWx1ZSwgcm93RGF0YSwgaSkge1xuICAgICAgICBsZXQgY3VycmVudFJvd0ZpZWxkRGF0YSA9IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93RGF0YSwgdGhpcy5kdC5ncm91cFJvd3NCeSk7XG4gICAgICAgIGxldCBwcmV2Um93RGF0YSA9IHZhbHVlW2kgLSAxXTtcbiAgICAgICAgaWYgKHByZXZSb3dEYXRhKSB7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNSb3dGaWVsZERhdGEgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHByZXZSb3dEYXRhLCB0aGlzLmR0Lmdyb3VwUm93c0J5KTtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50Um93RmllbGREYXRhICE9PSBwcmV2aW91c1Jvd0ZpZWxkRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvdWxkUmVuZGVyUm93R3JvdXBGb290ZXIodmFsdWUsIHJvd0RhdGEsIGkpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRSb3dGaWVsZERhdGEgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHJvd0RhdGEsIHRoaXMuZHQuZ3JvdXBSb3dzQnkpO1xuICAgICAgICBsZXQgbmV4dFJvd0RhdGEgPSB2YWx1ZVtpICsgMV07XG4gICAgICAgIGlmIChuZXh0Um93RGF0YSkge1xuICAgICAgICAgICAgbGV0IG5leHRSb3dGaWVsZERhdGEgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5leHRSb3dEYXRhLCB0aGlzLmR0Lmdyb3VwUm93c0J5KTtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50Um93RmllbGREYXRhICE9PSBuZXh0Um93RmllbGREYXRhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG91bGRSZW5kZXJSb3dzcGFuKHZhbHVlLCByb3dEYXRhLCBpKSB7XG4gICAgICAgIGxldCBjdXJyZW50Um93RmllbGREYXRhID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShyb3dEYXRhLCB0aGlzLmR0Lmdyb3VwUm93c0J5KTtcbiAgICAgICAgbGV0IHByZXZSb3dEYXRhID0gdmFsdWVbaSAtIDFdO1xuICAgICAgICBpZiAocHJldlJvd0RhdGEpIHtcbiAgICAgICAgICAgIGxldCBwcmV2aW91c1Jvd0ZpZWxkRGF0YSA9IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocHJldlJvd0RhdGEsIHRoaXMuZHQuZ3JvdXBSb3dzQnkpO1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRSb3dGaWVsZERhdGEgIT09IHByZXZpb3VzUm93RmllbGREYXRhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxjdWxhdGVSb3dHcm91cFNpemUodmFsdWUsIHJvd0RhdGEsIGluZGV4KSB7XG4gICAgICAgIGxldCBjdXJyZW50Um93RmllbGREYXRhID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShyb3dEYXRhLCB0aGlzLmR0Lmdyb3VwUm93c0J5KTtcbiAgICAgICAgbGV0IG5leHRSb3dGaWVsZERhdGEgPSBjdXJyZW50Um93RmllbGREYXRhO1xuICAgICAgICBsZXQgZ3JvdXBSb3dTcGFuID0gMDtcblxuICAgICAgICB3aGlsZSAoY3VycmVudFJvd0ZpZWxkRGF0YSA9PT0gbmV4dFJvd0ZpZWxkRGF0YSkge1xuICAgICAgICAgICAgZ3JvdXBSb3dTcGFuKys7XG4gICAgICAgICAgICBsZXQgbmV4dFJvd0RhdGEgPSB2YWx1ZVsrK2luZGV4XTtcbiAgICAgICAgICAgIGlmIChuZXh0Um93RGF0YSkge1xuICAgICAgICAgICAgICAgIG5leHRSb3dGaWVsZERhdGEgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5leHRSb3dEYXRhLCB0aGlzLmR0Lmdyb3VwUm93c0J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwUm93U3BhbiA9PT0gMSA/IG51bGwgOiBncm91cFJvd1NwYW47XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUZyb3plblJvd1N0aWNreVBvc2l0aW9uKCkge1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykgKyAncHgnO1xuICAgIH1cblxuICAgIHVwZGF0ZUZyb3plblJvd0dyb3VwSGVhZGVyU3RpY2t5UG9zaXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyk7XG4gICAgICAgICAgICB0aGlzLmR0LnJvd0dyb3VwSGVhZGVyU3R5bGVPYmplY3QudG9wID0gdGFibGVIZWFkZXJIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twUm93R3JvdXBIZWFkZXJdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLXJvd2dyb3VwLWhlYWRlciBwLWVsZW1lbnQnLFxuICAgICAgICAnW3N0eWxlLnRvcF0nOiBcImdldEZyb3plblJvd0dyb3VwSGVhZGVyU3RpY2t5UG9zaXRpb25cIlxuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUm93R3JvdXBIZWFkZXIge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGR0OiBUYWJsZSkgeyB9XG5cbiAgICBnZXQgZ2V0RnJvemVuUm93R3JvdXBIZWFkZXJTdGlja3lQb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHQucm93R3JvdXBIZWFkZXJTdHlsZU9iamVjdCA/IHRoaXMuZHQucm93R3JvdXBIZWFkZXJTdHlsZU9iamVjdC50b3AgOiAnJztcbiAgICB9XG4gfVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twRnJvemVuQ29sdW1uXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLWZyb3plbi1jb2x1bW5dJzogJ2Zyb3plbidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEZyb3plbkNvbHVtbiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KCkgZ2V0IGZyb3plbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zyb3plbjtcbiAgICB9XG5cbiAgICBzZXQgZnJvemVuKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9mcm96ZW4gPSB2YWw7XG4gICAgICAgIHRoaXMudXBkYXRlU3RpY2t5UG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhbGlnbkZyb3plbjogc3RyaW5nID0gXCJsZWZ0XCI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGlja3lQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIF9mcm96ZW46IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgdXBkYXRlU3RpY2t5UG9zaXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9mcm96ZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFsaWduRnJvemVuID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJpZ2h0ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVyV2lkdGgobmV4dCkgKyBwYXJzZUZsb2F0KG5leHQuc3R5bGUucmlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSByaWdodCArICdweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHByZXYgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHByZXYpICsgcGFyc2VGbG9hdChwcmV2LnN0eWxlLmxlZnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZmlsdGVyUm93ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgICAgICBpZiAoZmlsdGVyUm93KSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gRG9tSGFuZGxlci5pbmRleCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJSb3cuY2hpbGRyZW4gJiYgZmlsdGVyUm93LmNoaWxkcmVuW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJSb3cuY2hpbGRyZW5baW5kZXhdLnN0eWxlLmxlZnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUm93LmNoaWxkcmVuW2luZGV4XS5zdHlsZS5yaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twU29ydGFibGVDb2x1bW5dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnLFxuICAgICAgICAnW2NsYXNzLnAtc29ydGFibGUtY29sdW1uXSc6ICdpc0VuYWJsZWQoKScsXG4gICAgICAgICdbY2xhc3MucC1oaWdobGlnaHRdJzogJ3NvcnRlZCcsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnaXNFbmFibGVkKCkgPyBcIjBcIiA6IG51bGwnLFxuICAgICAgICAnW2F0dHIucm9sZV0nOiAnXCJjb2x1bW5oZWFkZXJcIicsXG4gICAgICAgICdbYXR0ci5hcmlhLXNvcnRdJzogJ3NvcnRPcmRlcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNvcnRhYmxlQ29sdW1uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KFwicFNvcnRhYmxlQ29sdW1uXCIpIGZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwU29ydGFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHNvcnRlZDogYm9vbGVhbjtcblxuICAgIHNvcnRPcmRlcjogc3RyaW5nO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNvcnRTb3VyY2UkLnN1YnNjcmliZShzb3J0TWV0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlU29ydFN0YXRlKCkge1xuICAgICAgICB0aGlzLnNvcnRlZCA9IHRoaXMuZHQuaXNTb3J0ZWQodGhpcy5maWVsZCk7XG4gICAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5zb3J0ZWQgPyAodGhpcy5kdC5zb3J0T3JkZXIgPT09IDEgPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJykgOiAnbm9uZSc7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkgJiYgIXRoaXMuaXNGaWx0ZXJFbGVtZW50KDxIVE1MRWxlbWVudD4gZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuZHQuc29ydCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBEb21IYW5kbGVyLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbkVudGVyS2V5KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DbGljayhldmVudCk7XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wU29ydGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc0ZpbHRlckVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MoZWxlbWVudCwgJ3BpLWZpbHRlci1pY29uJykgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhlbGVtZW50LCAncC1jb2x1bW4tZmlsdGVyLW1lbnUtYnV0dG9uJyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zb3J0SWNvbicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGkgY2xhc3M9XCJwLXNvcnRhYmxlLWNvbHVtbi1pY29uIHBpIHBpLWZ3XCIgW25nQ2xhc3NdPVwieydwaS1zb3J0LWFtb3VudC11cC1hbHQnOiBzb3J0T3JkZXIgPT09IDEsICdwaS1zb3J0LWFtb3VudC1kb3duJzogc29ydE9yZGVyID09PSAtMSwgJ3BpLXNvcnQtYWx0Jzogc29ydE9yZGVyID09PSAwfVwiPjwvaT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpU29ydGVkKClcIiBjbGFzcz1cInAtc29ydGFibGUtY29sdW1uLWJhZGdlXCI+e3tnZXRCYWRnZVZhbHVlKCl9fTwvc3Bhbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU29ydEljb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBzb3J0T3JkZXI6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdDogVGFibGUsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmR0LnRhYmxlU2VydmljZS5zb3J0U291cmNlJC5zdWJzY3JpYmUoc29ydE1ldGEgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XG4gICAgfVxuXG4gICAgb25DbGljayhldmVudCl7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlU29ydFN0YXRlKCkge1xuICAgICAgICBpZiAodGhpcy5kdC5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5kdC5pc1NvcnRlZCh0aGlzLmZpZWxkKSA/IHRoaXMuZHQuc29ydE9yZGVyIDogMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmR0LnNvcnRNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICBsZXQgc29ydE1ldGEgPSB0aGlzLmR0LmdldFNvcnRNZXRhKHRoaXMuZmllbGQpO1xuICAgICAgICAgICAgdGhpcy5zb3J0T3JkZXIgPSBzb3J0TWV0YSA/IHNvcnRNZXRhLm9yZGVyOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXRNdWx0aVNvcnRNZXRhSW5kZXgoKSB7XG4gICAgICAgIGxldCBtdWx0aVNvcnRNZXRhID0gdGhpcy5kdC5fbXVsdGlTb3J0TWV0YTtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICAgICAgaWYgKG11bHRpU29ydE1ldGEgJiYgdGhpcy5kdC5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJyAmJiAodGhpcy5kdC5zaG93SW5pdGlhbFNvcnRCYWRnZSB8fCBtdWx0aVNvcnRNZXRhLmxlbmd0aCA+IDEpKSB7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbXVsdGlTb3J0TWV0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBtZXRhID0gbXVsdGlTb3J0TWV0YVtpXTtcbiAgICAgICAgICAgICAgICBpZiAobWV0YS5maWVsZCA9PT0gdGhpcy5maWVsZCB8fCBtZXRhLmZpZWxkID09PSB0aGlzLmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldEJhZGdlVmFsdWUoKSB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZ2V0TXVsdGlTb3J0TWV0YUluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZHQuZ3JvdXBSb3dzQnkgJiYgaW5kZXggPiAtMSA/IGluZGV4IDogaW5kZXggKyAxO1xuICAgIH1cblxuICAgIGlzTXVsdGlTb3J0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmR0LnNvcnRNb2RlID09PSAnbXVsdGlwbGUnICYmIHRoaXMuZ2V0TXVsdGlTb3J0TWV0YUluZGV4KCkgPiAtMTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twU2VsZWN0YWJsZVJvd10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCcsXG4gICAgICAgICdbY2xhc3MucC1zZWxlY3RhYmxlLXJvd10nOiAnaXNFbmFibGVkKCknLFxuICAgICAgICAnW2NsYXNzLnAtaGlnaGxpZ2h0XSc6ICdzZWxlY3RlZCcsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnaXNFbmFibGVkKCkgPyAwIDogdW5kZWZpbmVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZVJvdyBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dChcInBTZWxlY3RhYmxlUm93XCIpIGRhdGE6IGFueTtcblxuICAgIEBJbnB1dChcInBTZWxlY3RhYmxlUm93SW5kZXhcIikgaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBTZWxlY3RhYmxlUm93RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGR0OiBUYWJsZSwgcHVibGljIHRhYmxlU2VydmljZTogVGFibGVTZXJ2aWNlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNlbGVjdGlvblNvdXJjZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kdC5pc1NlbGVjdGVkKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZHQuaXNTZWxlY3RlZCh0aGlzLmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmR0LmhhbmRsZVJvd0NsaWNrKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICByb3dEYXRhOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMuaW5kZXhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxuICAgIG9uVG91Y2hFbmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmR0LmhhbmRsZVJvd1RvdWNoRW5kKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbkFycm93RG93bktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3cgPSA8SFRNTFRhYmxlUm93RWxlbWVudD5ldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICBjb25zdCBuZXh0Um93ID0gdGhpcy5maW5kTmV4dFNlbGVjdGFibGVSb3cocm93KTtcblxuICAgICAgICBpZiAobmV4dFJvdykge1xuICAgICAgICAgICAgbmV4dFJvdy5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICAgIG9uQXJyb3dVcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3cgPSA8SFRNTFRhYmxlUm93RWxlbWVudD5ldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICBjb25zdCBwcmV2Um93ID0gdGhpcy5maW5kUHJldlNlbGVjdGFibGVSb3cocm93KTtcblxuICAgICAgICBpZiAocHJldlJvdykge1xuICAgICAgICAgICAgcHJldlJvdy5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNoaWZ0LmVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLm1ldGEuZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uRW50ZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kdC5oYW5kbGVSb3dDbGljayh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHJvd0RhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIHJvd0luZGV4OiB0aGlzLmluZGV4XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZWRvd24nKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZXVwJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmhvbWUnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW5kJylcbiAgICBvblBhZ2VEb3duS2V5RG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMuZHQudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5kdC52aXJ0dWFsU2Nyb2xsQm9keS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnKVxuICAgIG9uU3BhY2VLZXlkb3duKCkge1xuICAgICAgICBpZiAodGhpcy5kdC52aXJ0dWFsU2Nyb2xsICYmICF0aGlzLmR0LmVkaXRpbmdDZWxsKSB7XG4gICAgICAgICAgICB0aGlzLmR0LnZpcnR1YWxTY3JvbGxCb2R5LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE5leHRTZWxlY3RhYmxlUm93KHJvdzogSFRNTFRhYmxlUm93RWxlbWVudCk6IEhUTUxUYWJsZVJvd0VsZW1lbnQge1xuICAgICAgICBsZXQgbmV4dFJvdyA9IDxIVE1MVGFibGVSb3dFbGVtZW50PiByb3cubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICBpZiAobmV4dFJvdykge1xuICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dFJvdywgJ3Atc2VsZWN0YWJsZS1yb3cnKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFJvdztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTmV4dFNlbGVjdGFibGVSb3cobmV4dFJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRQcmV2U2VsZWN0YWJsZVJvdyhyb3c6IEhUTUxUYWJsZVJvd0VsZW1lbnQpOiBIVE1MVGFibGVSb3dFbGVtZW50IHtcbiAgICAgICAgbGV0IHByZXZSb3cgPSA8SFRNTFRhYmxlUm93RWxlbWVudD4gcm93LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgIGlmIChwcmV2Um93KSB7XG4gICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2Um93LCAncC1zZWxlY3RhYmxlLXJvdycpKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2Um93O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRQcmV2U2VsZWN0YWJsZVJvdyhwcmV2Um93KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wU2VsZWN0YWJsZVJvd0Rpc2FibGVkICE9PSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFNlbGVjdGFibGVSb3dEYmxDbGlja10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCcsXG4gICAgICAgICdbY2xhc3MucC1zZWxlY3RhYmxlLXJvd10nOiAnaXNFbmFibGVkKCknLFxuICAgICAgICAnW2NsYXNzLnAtaGlnaGxpZ2h0XSc6ICdzZWxlY3RlZCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGFibGVSb3dEYmxDbGljayBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dChcInBTZWxlY3RhYmxlUm93RGJsQ2xpY2tcIikgZGF0YTogYW55O1xuXG4gICAgQElucHV0KFwicFNlbGVjdGFibGVSb3dJbmRleFwiKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcFNlbGVjdGFibGVSb3dEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5kdC50YWJsZVNlcnZpY2Uuc2VsZWN0aW9uU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmR0LmlzU2VsZWN0ZWQodGhpcy5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kdC5pc1NlbGVjdGVkKHRoaXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZHQuaGFuZGxlUm93Q2xpY2soe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHJvd0RhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgICAgICByb3dJbmRleDogdGhpcy5pbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBTZWxlY3RhYmxlUm93RGlzYWJsZWQgIT09IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twQ29udGV4dE1lbnVSb3ddJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnLFxuICAgICAgICAnW2NsYXNzLnAtaGlnaGxpZ2h0LWNvbnRleHRtZW51XSc6ICdzZWxlY3RlZCcsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnaXNFbmFibGVkKCkgPyAwIDogdW5kZWZpbmVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVSb3cge1xuXG4gICAgQElucHV0KFwicENvbnRleHRNZW51Um93XCIpIGRhdGE6IGFueTtcblxuICAgIEBJbnB1dChcInBDb250ZXh0TWVudVJvd0luZGV4XCIpIGluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwQ29udGV4dE1lbnVSb3dEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5kdC50YWJsZVNlcnZpY2UuY29udGV4dE1lbnVTb3VyY2UkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLmR0LmVxdWFscyh0aGlzLmRhdGEsIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gICAgb25Db250ZXh0TWVudShldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZHQuaGFuZGxlUm93UmlnaHRDbGljayh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgcm93RGF0YTogdGhpcy5kYXRhLFxuICAgICAgICAgICAgICAgIHJvd0luZGV4OiB0aGlzLmluZGV4XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wQ29udGV4dE1lbnVSb3dEaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BSb3dUb2dnbGVyXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUm93VG9nZ2xlciB7XG5cbiAgICBASW5wdXQoJ3BSb3dUb2dnbGVyJykgZGF0YTogYW55O1xuXG4gICAgQElucHV0KCkgcFJvd1RvZ2dsZXJEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdDogVGFibGUpIHsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmR0LnRvZ2dsZVJvdyh0aGlzLmRhdGEsIGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBSb3dUb2dnbGVyRGlzYWJsZWQgIT09IHRydWU7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twUmVzaXphYmxlQ29sdW1uXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlQ29sdW1uIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHBSZXNpemFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHJlc2l6ZXI6IEhUTUxTcGFuRWxlbWVudDtcblxuICAgIHJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRNb3VzZVVwTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdDogVGFibGUsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3AtcmVzaXphYmxlLWNvbHVtbicpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyLmNsYXNzTmFtZSA9ICdwLWNvbHVtbi1yZXNpemVyJztcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJlc2l6ZXIpO1xuXG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplck1vdXNlRG93bkxpc3RlbmVyID0gdGhpcy5vbk1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLnJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudEV2ZW50cygpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lciA9IHRoaXMub25Eb2N1bWVudE1vdXNlTW92ZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5kb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKTtcblxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlVXBMaXN0ZW5lciA9IHRoaXMub25Eb2N1bWVudE1vdXNlVXAuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmRvY3VtZW50TW91c2VVcExpc3RlbmVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRFdmVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuZG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmRvY3VtZW50TW91c2VVcExpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmR0Lm9uQ29sdW1uUmVzaXplQmVnaW4oZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRFdmVudHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kdC5vbkNvbHVtblJlc2l6ZShldmVudCk7XG4gICAgfVxuXG4gICAgb25Eb2N1bWVudE1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kdC5vbkNvbHVtblJlc2l6ZUVuZCgpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RXZlbnRzKCk7XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUmVzaXphYmxlQ29sdW1uRGlzYWJsZWQgIT09IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMucmVzaXplck1vdXNlRG93bkxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRFdmVudHMoKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BSZW9yZGVyYWJsZUNvbHVtbl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJlb3JkZXJhYmxlQ29sdW1uIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHBSZW9yZGVyYWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgZHJhZ1N0YXJ0TGlzdGVuZXI6IGFueTtcblxuICAgIGRyYWdPdmVyTGlzdGVuZXI6IGFueTtcblxuICAgIGRyYWdFbnRlckxpc3RlbmVyOiBhbnk7XG5cbiAgICBkcmFnTGVhdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgbW91c2VEb3duTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdDogVGFibGUsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRFdmVudHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlRG93bkxpc3RlbmVyID0gdGhpcy5vbk1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydExpc3RlbmVyID0gdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0VudGVyLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyID0gdGhpcy5vbkRyYWdFbnRlci5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gdGhpcy5vbkRyYWdMZWF2ZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmJpbmRFdmVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlRG93bkxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm1vdXNlRG93bkxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbnRlckxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnTGVhdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubm9kZU5hbWUgPT09ICdJTlBVVCcgfHwgZXZlbnQudGFyZ2V0Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1jb2x1bW4tcmVzaXplcicpKVxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudCkge1xuICAgICAgICB0aGlzLmR0Lm9uQ29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbnRlcihldmVudCkge1xuICAgICAgICB0aGlzLmR0Lm9uQ29sdW1uRHJhZ0VudGVyKGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHQub25Db2x1bW5EcmFnTGVhdmUoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kdC5vbkNvbHVtbkRyb3AoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBSZW9yZGVyYWJsZUNvbHVtbkRpc2FibGVkICE9PSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZEV2ZW50cygpO1xuICAgIH1cblxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twRWRpdGFibGVDb2x1bW5dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0YWJsZUNvbHVtbiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoXCJwRWRpdGFibGVDb2x1bW5cIikgZGF0YTogYW55O1xuXG4gICAgQElucHV0KFwicEVkaXRhYmxlQ29sdW1uRmllbGRcIikgZmllbGQ6IGFueTtcblxuICAgIEBJbnB1dChcInBFZGl0YWJsZUNvbHVtblJvd0luZGV4XCIpIHJvd0luZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwRWRpdGFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHBGb2N1c0NlbGxTZWxlY3Rvcjogc3RyaW5nO1xuXG4gICAgb3ZlcmxheUV2ZW50TGlzdGVuZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3AtZWRpdGFibGUtY29sdW1uJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kdC5zZWxmQ2xpY2sgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kdC5lZGl0aW5nQ2VsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmR0LmVkaXRpbmdDZWxsICE9PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmR0LmlzRWRpdGluZ0NlbGxWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRWRpdGluZ0NlbGwodHJ1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5DZWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQ2VsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkNlbGwoKSB7XG4gICAgICAgIHRoaXMuZHQudXBkYXRlRWRpdGluZ0NlbGwodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmRhdGEsIHRoaXMuZmllbGQsIHRoaXMucm93SW5kZXgpO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3AtY2VsbC1lZGl0aW5nJyk7XG4gICAgICAgIHRoaXMuZHQub25FZGl0SW5pdC5lbWl0KHtmaWVsZDogdGhpcy5maWVsZCwgZGF0YTogdGhpcy5kYXRhLCBpbmRleDogdGhpcy5yb3dJbmRleH0pO1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzQ2VsbFNlbGVjdG9yID0gdGhpcy5wRm9jdXNDZWxsU2VsZWN0b3IgfHwgJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0JztcbiAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlRWxlbWVudCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGZvY3VzQ2VsbFNlbGVjdG9yKTtcblxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheUV2ZW50TGlzdGVuZXIgPSAoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWwgJiYgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHQuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHQub3ZlcmxheVN1YnNjcmlwdGlvbiA9IHRoaXMuZHQub3ZlcmxheVNlcnZpY2UuY2xpY2tPYnNlcnZhYmxlLnN1YnNjcmliZSh0aGlzLm92ZXJsYXlFdmVudExpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBjbG9zZUVkaXRpbmdDZWxsKGNvbXBsZXRlZCwgZXZlbnQpIHtcbiAgICAgICAgaWYgKGNvbXBsZXRlZClcbiAgICAgICAgICAgIHRoaXMuZHQub25FZGl0Q29tcGxldGUuZW1pdCh7ZmllbGQ6IHRoaXMuZHQuZWRpdGluZ0NlbGxGaWVsZCwgZGF0YTogdGhpcy5kdC5lZGl0aW5nQ2VsbERhdGEsIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpbmRleDogdGhpcy5kdC5lZGl0aW5nQ2VsbFJvd0luZGV4fSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZHQub25FZGl0Q2FuY2VsLmVtaXQoe2ZpZWxkOiB0aGlzLmR0LmVkaXRpbmdDZWxsRmllbGQsIGRhdGE6IHRoaXMuZHQuZWRpdGluZ0NlbGxEYXRhLCBvcmlnaW5hbEV2ZW50OiBldmVudCwgaW5kZXg6IHRoaXMuZHQuZWRpdGluZ0NlbGxSb3dJbmRleH0pO1xuXG4gICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5kdC5lZGl0aW5nQ2VsbCwgJ3AtY2VsbC1lZGl0aW5nJyk7XG4gICAgICAgIHRoaXMuZHQuZWRpdGluZ0NlbGwgPSBudWxsO1xuICAgICAgICB0aGlzLmR0LmVkaXRpbmdDZWxsRGF0YSA9IG51bGw7XG4gICAgICAgIHRoaXMuZHQuZWRpdGluZ0NlbGxGaWVsZCA9IG51bGw7XG4gICAgICAgIHRoaXMuZHQudW5iaW5kRG9jdW1lbnRFZGl0TGlzdGVuZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5kdC5vdmVybGF5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmR0Lm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uRW50ZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kdC5pc0VkaXRpbmdDZWxsVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbCh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gICAgb25Fc2NhcGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kdC5pc0VkaXRpbmdDZWxsVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbChmYWxzZSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi50YWInLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc2hpZnQudGFiJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLm1ldGEudGFiJywgWyckZXZlbnQnXSlcbiAgICBvblNoaWZ0S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvUHJldmlvdXNDZWxsKGV2ZW50KTtcbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9OZXh0Q2VsbChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2Rvd24nLCBbJyRldmVudCddKVxuICAgIG9uQXJyb3dEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENlbGwgPSB0aGlzLmZpbmRDZWxsKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudENlbGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gRG9tSGFuZGxlci5pbmRleChjdXJyZW50Q2VsbCk7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldENlbGwgPSB0aGlzLmZpbmROZXh0RWRpdGFibGVDb2x1bW5CeUluZGV4KGN1cnJlbnRDZWxsLCBjZWxsSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZHQuaXNFZGl0aW5nQ2VsbFZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbCh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QoZXZlbnQudGFyZ2V0LCAnYmx1cicpO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0Q2VsbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3d1cCcsIFsnJGV2ZW50J10pXG4gICAgb25BcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENlbGwgPSB0aGlzLmZpbmRDZWxsKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudENlbGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gRG9tSGFuZGxlci5pbmRleChjdXJyZW50Q2VsbCk7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldENlbGwgPSB0aGlzLmZpbmRQcmV2RWRpdGFibGVDb2x1bW5CeUluZGV4KGN1cnJlbnRDZWxsLCBjZWxsSW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZHQuaXNFZGl0aW5nQ2VsbFZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbCh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QoZXZlbnQudGFyZ2V0LCAnYmx1cicpO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0Q2VsbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgICBvbkFycm93TGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9QcmV2aW91c0NlbGwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgICBvbkFycm93UmlnaHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMubW92ZVRvTmV4dENlbGwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZENlbGwoZWxlbWVudCkge1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSBlbGVtZW50O1xuICAgICAgICAgICAgd2hpbGUgKGNlbGwgJiYgIURvbUhhbmRsZXIuaGFzQ2xhc3MoY2VsbCwgJ3AtY2VsbC1lZGl0aW5nJykpIHtcbiAgICAgICAgICAgICAgICBjZWxsID0gY2VsbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvUHJldmlvdXNDZWxsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBjdXJyZW50Q2VsbCA9IHRoaXMuZmluZENlbGwoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0Q2VsbCA9IHRoaXMuZmluZFByZXZpb3VzRWRpdGFibGVDb2x1bW4oY3VycmVudENlbGwpO1xuXG4gICAgICAgICAgICBpZiAodGFyZ2V0Q2VsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmR0LmlzRWRpdGluZ0NlbGxWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbCh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5pbnZva2VFbGVtZW50TWV0aG9kKGV2ZW50LnRhcmdldCwgJ2JsdXInKTtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0Q2VsbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb05leHRDZWxsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBjdXJyZW50Q2VsbCA9IHRoaXMuZmluZENlbGwoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0Q2VsbCA9IHRoaXMuZmluZE5leHRFZGl0YWJsZUNvbHVtbihjdXJyZW50Q2VsbCk7XG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRDZWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHQuaXNFZGl0aW5nQ2VsbFZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUVkaXRpbmdDZWxsKHRydWUsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QoZXZlbnQudGFyZ2V0LCAnYmx1cicpO1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuaW52b2tlRWxlbWVudE1ldGhvZCh0YXJnZXRDZWxsLCAnY2xpY2snKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByZXZpb3VzRWRpdGFibGVDb2x1bW4oY2VsbDogRWxlbWVudCkge1xuICAgICAgICBsZXQgcHJldkNlbGwgPSBjZWxsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKCFwcmV2Q2VsbCkge1xuICAgICAgICAgICAgbGV0IHByZXZpb3VzUm93ID0gY2VsbC5wYXJlbnRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNSb3cpIHtcbiAgICAgICAgICAgICAgICBwcmV2Q2VsbCA9IHByZXZpb3VzUm93Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldkNlbGwpIHtcbiAgICAgICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKHByZXZDZWxsLCAncC1lZGl0YWJsZS1jb2x1bW4nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldkNlbGw7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFByZXZpb3VzRWRpdGFibGVDb2x1bW4ocHJldkNlbGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dEVkaXRhYmxlQ29sdW1uKGNlbGw6IEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IG5leHRDZWxsID0gY2VsbC5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKCFuZXh0Q2VsbCkge1xuICAgICAgICAgICAgbGV0IG5leHRSb3cgPSBjZWxsLnBhcmVudEVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG5leHRSb3cpIHtcbiAgICAgICAgICAgICAgICBuZXh0Q2VsbCA9IG5leHRSb3cuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dENlbGwpIHtcbiAgICAgICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRDZWxsLCAncC1lZGl0YWJsZS1jb2x1bW4nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dENlbGw7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5leHRFZGl0YWJsZUNvbHVtbihuZXh0Q2VsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmROZXh0RWRpdGFibGVDb2x1bW5CeUluZGV4KGNlbGw6IEVsZW1lbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IG5leHRSb3cgPSBjZWxsLnBhcmVudEVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChuZXh0Um93KSB7XG4gICAgICAgICAgICBsZXQgbmV4dENlbGwgPSBuZXh0Um93LmNoaWxkcmVuW2luZGV4XTtcblxuICAgICAgICAgICAgaWYgKG5leHRDZWxsICYmIERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dENlbGwsICdwLWVkaXRhYmxlLWNvbHVtbicpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRDZWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByZXZFZGl0YWJsZUNvbHVtbkJ5SW5kZXgoY2VsbDogRWxlbWVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBsZXQgcHJldlJvdyA9IGNlbGwucGFyZW50RWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChwcmV2Um93KSB7XG4gICAgICAgICAgICBsZXQgcHJldkNlbGwgPSBwcmV2Um93LmNoaWxkcmVuW2luZGV4XTtcblxuICAgICAgICAgICAgaWYgKHByZXZDZWxsICYmIERvbUhhbmRsZXIuaGFzQ2xhc3MocHJldkNlbGwsICdwLWVkaXRhYmxlLWNvbHVtbicpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZDZWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wRWRpdGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHQub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kdC5vdmVybGF5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcEVkaXRhYmxlUm93XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRWRpdGFibGVSb3cge1xuXG4gICAgQElucHV0KFwicEVkaXRhYmxlUm93XCIpIGRhdGE6IGFueTtcblxuICAgIEBJbnB1dCgpIHBFZGl0YWJsZVJvd0Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wRWRpdGFibGVSb3dEaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcEluaXRFZGl0YWJsZVJvd10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEluaXRFZGl0YWJsZVJvdyB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgZWRpdGFibGVSb3c6IEVkaXRhYmxlUm93KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHQuaW5pdFJvd0VkaXQodGhpcy5lZGl0YWJsZVJvdy5kYXRhKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFNhdmVFZGl0YWJsZVJvd10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNhdmVFZGl0YWJsZVJvdyB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgZWRpdGFibGVSb3c6IEVkaXRhYmxlUm93KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHQuc2F2ZVJvd0VkaXQodGhpcy5lZGl0YWJsZVJvdy5kYXRhLCB0aGlzLmVkaXRhYmxlUm93LmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcENhbmNlbEVkaXRhYmxlUm93XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ2FuY2VsRWRpdGFibGVSb3cge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGR0OiBUYWJsZSwgcHVibGljIGVkaXRhYmxlUm93OiBFZGl0YWJsZVJvdykge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmR0LmNhbmNlbFJvd0VkaXQodGhpcy5lZGl0YWJsZVJvdy5kYXRhKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jZWxsRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGluZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdGluZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm91dHB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDZWxsRWRpdG9yIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+O1xuXG4gICAgaW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG91dHB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGR0OiBUYWJsZSwgQE9wdGlvbmFsKCkgcHVibGljIGVkaXRhYmxlQ29sdW1uOiBFZGl0YWJsZUNvbHVtbiwgQE9wdGlvbmFsKCkgcHVibGljIGVkaXRhYmxlUm93OiBFZGl0YWJsZVJvdykgeyB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnb3V0cHV0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgZWRpdGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmR0LmVkaXRpbmdDZWxsICYmIHRoaXMuZWRpdGFibGVDb2x1bW4gJiYgdGhpcy5kdC5lZGl0aW5nQ2VsbCA9PT0gdGhpcy5lZGl0YWJsZUNvbHVtbi5lbC5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmVkaXRhYmxlUm93ICYmIHRoaXMuZHQuZWRpdE1vZGUgPT09ICdyb3cnICYmIHRoaXMuZHQuaXNSb3dFZGl0aW5nKHRoaXMuZWRpdGFibGVSb3cuZGF0YSkpO1xuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdGFibGVSYWRpb0J1dHRvbicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtcmFkaW9idXR0b24gcC1jb21wb25lbnRcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBbYXR0ci5pZF09XCJpbnB1dElkXCIgW2F0dHIubmFtZV09XCJuYW1lXCIgW2NoZWNrZWRdPVwiY2hlY2tlZFwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjYm94IFtuZ0NsYXNzXT1cInsncC1yYWRpb2J1dHRvbi1ib3ggcC1jb21wb25lbnQnOnRydWUsICdwLWhpZ2hsaWdodCc6Y2hlY2tlZCwgJ3AtZGlzYWJsZWQnOmRpc2FibGVkfVwiIHJvbGU9XCJyYWRpb1wiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcmFkaW9idXR0b24taWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVJhZGlvQnV0dG9uICB7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdib3gnKSBib3hWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBjaGVja2VkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmR0LnRhYmxlU2VydmljZS5zZWxlY3Rpb25Tb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmR0LmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5kdC5pc1NlbGVjdGVkKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kdC50b2dnbGVSb3dXaXRoUmFkaW8oe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHJvd0luZGV4OiB0aGlzLmluZGV4XG4gICAgICAgICAgICB9LCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBEb21IYW5kbGVyLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1mb2N1cycpO1xuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1mb2N1cycpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRhYmxlQ2hlY2tib3gnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFthdHRyLm5hbWVdPVwibmFtZVwiIFtjaGVja2VkXT1cImNoZWNrZWRcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjYm94IFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1ib3ggcC1jb21wb25lbnQnOnRydWUsXG4gICAgICAgICAgICAgICAgJ3AtaGlnaGxpZ2h0JzpjaGVja2VkLCAncC1kaXNhYmxlZCc6ZGlzYWJsZWR9XCIgcm9sZT1cImNoZWNrYm94XCIgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInsncGkgcGktY2hlY2snOmNoZWNrZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNoZWNrYm94ICB7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ2JveCcpIGJveFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkdDogVGFibGUsIHB1YmxpYyB0YWJsZVNlcnZpY2U6IFRhYmxlU2VydmljZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnNlbGVjdGlvblNvdXJjZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuZHQuaXNTZWxlY3RlZCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmR0LmlzU2VsZWN0ZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmR0LnRvZ2dsZVJvd1dpdGhDaGVja2JveCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMuaW5kZXhcbiAgICAgICAgICAgIH0sIHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIERvbUhhbmRsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCkge1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdGFibGVIZWFkZXJDaGVja2JveCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hlY2tib3ggcC1jb21wb25lbnRcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjY2IgdHlwZT1cImNoZWNrYm94XCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFthdHRyLm5hbWVdPVwibmFtZVwiIFtjaGVja2VkXT1cImNoZWNrZWRcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICNib3ggW25nQ2xhc3NdPVwieydwLWNoZWNrYm94LWJveCc6dHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1oaWdobGlnaHQnOmNoZWNrZWQsICdwLWRpc2FibGVkJzogaXNEaXNhYmxlZCgpfVwiIHJvbGU9XCJjaGVja2JveFwiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNoZWNrYm94LWljb25cIiBbbmdDbGFzc109XCJ7J3BpIHBpLWNoZWNrJzpjaGVja2VkfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVIZWFkZXJDaGVja2JveCAge1xuXG4gICAgQFZpZXdDaGlsZCgnYm94JykgYm94Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZHQudGFibGVTZXJ2aWNlLnZhbHVlU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy51cGRhdGVDaGVja2VkU3RhdGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmR0LnRhYmxlU2VydmljZS5zZWxlY3Rpb25Tb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLnVwZGF0ZUNoZWNrZWRTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy51cGRhdGVDaGVja2VkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmR0LnZhbHVlICYmIHRoaXMuZHQudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHQudG9nZ2xlUm93c1dpdGhDaGVja2JveChldmVudCwgIXRoaXMuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBEb21IYW5kbGVyLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1mb2N1cycpO1xuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC1mb2N1cycpO1xuICAgIH1cblxuICAgIGlzRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmR0LnZhbHVlIHx8ICF0aGlzLmR0LnZhbHVlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUNoZWNrZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKHRoaXMuZHQuZmlsdGVyZWRWYWx1ZSAmJiAhdGhpcy5kdC5sYXp5KSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmR0LmZpbHRlcmVkVmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gKHZhbCAmJiB2YWwubGVuZ3RoID4gMCAmJiB0aGlzLmR0LnNlbGVjdGlvbiAmJiB0aGlzLmR0LnNlbGVjdGlvbi5sZW5ndGggPiAwICYmIHRoaXMuaXNBbGxGaWx0ZXJlZFZhbHVlc0NoZWNrZWQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmR0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5kdC5sYXp5ID8gdGhpcy5kdC5fdG90YWxSZWNvcmRzIDogdmFsID8gdmFsLmxlbmd0aCA6IDA7XG4gICAgICAgICAgICByZXR1cm4gKHZhbCAmJiBsZW5ndGggPiAwICYmIHRoaXMuZHQuc2VsZWN0aW9uICYmIHRoaXMuZHQuc2VsZWN0aW9uLmxlbmd0aCA+IDAgJiYgdGhpcy5kdC5zZWxlY3Rpb24ubGVuZ3RoID09PSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNBbGxGaWx0ZXJlZFZhbHVlc0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kdC5maWx0ZXJlZFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCByb3dEYXRhIG9mIHRoaXMuZHQuZmlsdGVyZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kdC5pc1NlbGVjdGVkKHJvd0RhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twUmVvcmRlcmFibGVSb3dIYW5kbGVdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZW9yZGVyYWJsZVJvd0hhbmRsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KFwicFJlb3JkZXJhYmxlUm93SGFuZGxlXCIpIGluZGV4OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAncC1kYXRhdGFibGUtcmVvcmRlcmFibGVyb3ctaGFuZGxlJyk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twUmVvcmRlcmFibGVSb3ddJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZW9yZGVyYWJsZVJvdyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgQElucHV0KFwicFJlb3JkZXJhYmxlUm93XCIpIGluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwUmVvcmRlcmFibGVSb3dEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIG1vdXNlRG93bkxpc3RlbmVyOiBhbnk7XG5cbiAgICBkcmFnU3RhcnRMaXN0ZW5lcjogYW55O1xuXG4gICAgZHJhZ0VuZExpc3RlbmVyOiBhbnk7XG5cbiAgICBkcmFnT3Zlckxpc3RlbmVyOiBhbnk7XG5cbiAgICBkcmFnTGVhdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgZHJvcExpc3RlbmVyOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJvcHBhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZEV2ZW50cygpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VEb3duLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5tb3VzZURvd25MaXN0ZW5lcik7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgdGhpcy5kcmFnU3RhcnRMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ0VuZExpc3RlbmVyID0gdGhpcy5vbkRyYWdFbmQuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgdGhpcy5kcmFnRW5kTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ092ZXIuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0xlYXZlLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZEV2ZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMubW91c2VEb3duTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnU3RhcnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgdGhpcy5kcmFnU3RhcnRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbmRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIHRoaXMuZHJhZ0VuZExpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VuZExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdPdmVyTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5kcmFnT3Zlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnTGVhdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtZGF0YXRhYmxlLXJlb3JkZXJhYmxlcm93LWhhbmRsZScpKVxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcmFnZ2FibGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudCkge1xuICAgICAgICB0aGlzLmR0Lm9uUm93RHJhZ1N0YXJ0KGV2ZW50LCB0aGlzLmluZGV4KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kdC5vblJvd0RyYWdFbmQoZXZlbnQpO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25EcmFnT3ZlcihldmVudCkge1xuICAgICAgICB0aGlzLmR0Lm9uUm93RHJhZ092ZXIoZXZlbnQsIHRoaXMuaW5kZXgsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25EcmFnTGVhdmUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kdC5vblJvd0RyYWdMZWF2ZShldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBSZW9yZGVyYWJsZVJvd0Rpc2FibGVkICE9PSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSAmJiB0aGlzLmR0LnJvd0RyYWdnaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmR0Lm9uUm93RHJvcChldmVudCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1jb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlclRlbXBsYXRlOyBlbHNlIGJ1aWx0SW5FbGVtZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpbHRlckNvbnN0cmFpbnQudmFsdWUsIGZpbHRlckNhbGxiYWNrOiBmaWx0ZXJDYWxsYmFja31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYnVpbHRJbkVsZW1lbnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCIgKGlucHV0KT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblRleHRJbnB1dEVudGVyS2V5RG93bigkZXZlbnQpXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciAqbmdTd2l0Y2hDYXNlPVwiJ251bWVyaWMnXCIgW25nTW9kZWxdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIiAob25LZXlEb3duKT1cIm9uTnVtZXJpY0lucHV0S2V5RG93bigkZXZlbnQpXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCJtaW5GcmFjdGlvbkRpZ2l0c1wiIFttYXhGcmFjdGlvbkRpZ2l0c109XCJtYXhGcmFjdGlvbkRpZ2l0c1wiIFtwcmVmaXhdPVwicHJlZml4XCIgW3N1ZmZpeF09XCJzdWZmaXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJjdXJyZW5jeSA/ICdjdXJyZW5jeScgOiAnZGVjaW1hbCdcIiBbbG9jYWxlXT1cImxvY2FsZVwiIFtsb2NhbGVNYXRjaGVyXT1cImxvY2FsZU1hdGNoZXJcIiBbY3VycmVuY3ldPVwiY3VycmVuY3lcIiBbY3VycmVuY3lEaXNwbGF5XT1cImN1cnJlbmN5RGlzcGxheVwiIFt1c2VHcm91cGluZ109XCJ1c2VHcm91cGluZ1wiPjwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgICAgICA8cC10cmlTdGF0ZUNoZWNrYm94ICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIiBbbmdNb2RlbF09XCJmaWx0ZXJDb25zdHJhaW50Py52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPjwvcC10cmlTdGF0ZUNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbbmdNb2RlbF09XCJmaWx0ZXJDb25zdHJhaW50Py52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyQ29uc3RyYWludDogRmlsdGVyTWV0YWRhdGE7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtaW5GcmFjdGlvbkRpZ2l0czogbnVtYmVyXG5cbiAgICBASW5wdXQoKSBtYXhGcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbG9jYWxlTWF0Y2hlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY3VycmVuY3k6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGN1cnJlbmN5RGlzcGxheTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdXNlR3JvdXBpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgZmlsdGVyQ2FsbGJhY2s6IEZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGR0OiBUYWJsZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbHRlckNhbGxiYWNrID0gdmFsdWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDb25zdHJhaW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJDb25zdHJhaW50LnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5kdC5fZmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRleHRJbnB1dEVudGVyS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk51bWVyaWNJbnB1dEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgdGhpcy5kdC5fZmlsdGVyKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtY29sdW1uRmlsdGVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyXCIgW25nQ2xhc3NdPVwieydwLWNvbHVtbi1maWx0ZXItcm93JzogZGlzcGxheSA9PT0gJ3JvdycsICdwLWNvbHVtbi1maWx0ZXItbWVudSc6IGRpc3BsYXkgPT09ICdtZW51J31cIj5cbiAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlckZvcm1FbGVtZW50ICpuZ0lmPVwiZGlzcGxheSA9PT0gJ3JvdydcIiBjbGFzcz1cInAtZmx1aWRcIiBbdHlwZV09XCJ0eXBlXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2ZpbHRlckNvbnN0cmFpbnRdPVwiZHQuZmlsdGVyc1tmaWVsZF1cIiBbZmlsdGVyVGVtcGxhdGVdPVwiZmlsdGVyVGVtcGxhdGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwibWluRnJhY3Rpb25EaWdpdHNcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwibWF4RnJhY3Rpb25EaWdpdHNcIiBbcHJlZml4XT1cInByZWZpeFwiIFtzdWZmaXhdPVwic3VmZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCIgIFtsb2NhbGVNYXRjaGVyXT1cImxvY2FsZU1hdGNoZXJcIiBbY3VycmVuY3ldPVwiY3VycmVuY3lcIiBbY3VycmVuY3lEaXNwbGF5XT1cImN1cnJlbmN5RGlzcGxheVwiIFt1c2VHcm91cGluZ109XCJ1c2VHcm91cGluZ1wiPjwvcC1jb2x1bW5GaWx0ZXJGb3JtRWxlbWVudD5cbiAgICAgICAgICAgIDxidXR0b24gI2ljb24gKm5nSWY9XCJzaG93TWVudUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1tZW51LWJ1dHRvbiBwLWxpbmtcIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3ZlcmxheVZpc2libGVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1jb2x1bW4tZmlsdGVyLW1lbnUtYnV0dG9uLW9wZW4nOiBvdmVybGF5VmlzaWJsZSwgJ3AtY29sdW1uLWZpbHRlci1tZW51LWJ1dHRvbi1hY3RpdmUnOiBoYXNGaWx0ZXIoKX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAoa2V5ZG93bik9XCJvblRvZ2dsZUJ1dHRvbktleURvd24oJGV2ZW50KVwiPjxzcGFuIGNsYXNzPVwicGkgcGktZmlsdGVyLWljb24gcGktZmlsdGVyXCI+PC9zcGFuPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAjaWNvbiAqbmdJZj1cInNob3dDbGVhckJ1dHRvbiAmJiBkaXNwbGF5ID09PSAncm93J1wiIFtuZ0NsYXNzXT1cInsncC1oaWRkZW4tc3BhY2UnOiAhaGFzUm93RmlsdGVyKCl9XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLWNsZWFyLWJ1dHRvbiBwLWxpbmtcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPjxzcGFuIGNsYXNzPVwicGkgcGktZmlsdGVyLXNsYXNoXCI+PC9zcGFuPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dNZW51ICYmIG92ZXJsYXlWaXNpYmxlXCIgW25nQ2xhc3NdPVwieydwLWNvbHVtbi1maWx0ZXItb3ZlcmxheSBwLWNvbXBvbmVudCBwLWZsdWlkJzogdHJ1ZSwgJ3AtY29sdW1uLWZpbHRlci1vdmVybGF5LW1lbnUnOiBkaXNwbGF5ID09PSAnbWVudSd9XCIgKGNsaWNrKT1cIm9uQ29udGVudENsaWNrKClcIlxuICAgICAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCIndmlzaWJsZSdcIiAoQG92ZXJsYXlBbmltYXRpb24uc3RhcnQpPVwib25PdmVybGF5QW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiIChAb3ZlcmxheUFuaW1hdGlvbi5kb25lKT1cIm9uT3ZlcmxheUFuaW1hdGlvbkVuZCgkZXZlbnQpXCIgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpZWxkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImRpc3BsYXkgPT09ICdyb3cnOyBlbHNlIG1lbnVcIiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1yb3ctaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLXJvdy1pdGVtXCIgKm5nRm9yPVwibGV0IG1hdGNoTW9kZSBvZiBtYXRjaE1vZGVzOyBsZXQgaSA9IGluZGV4O1wiIChjbGljayk9XCJvblJvd01hdGNoTW9kZUNoYW5nZShtYXRjaE1vZGUudmFsdWUpXCIgKGtleWRvd24pPVwib25Sb3dNYXRjaE1vZGVLZXlEb3duKCRldmVudClcIiAoa2V5ZG93bi5lbnRlcik9XCJ0aGlzLm9uUm93TWF0Y2hNb2RlQ2hhbmdlKG1hdGNoTW9kZS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLWhpZ2hsaWdodCc6IGlzUm93TWF0Y2hNb2RlU2VsZWN0ZWQobWF0Y2hNb2RlLnZhbHVlKX1cIiBbYXR0ci50YWJpbmRleF09XCJpID09PSAwID8gJzAnIDogbnVsbFwiPnt7bWF0Y2hNb2RlLmxhYmVsfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwLWNvbHVtbi1maWx0ZXItc2VwYXJhdG9yXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLXJvdy1pdGVtXCIgKGNsaWNrKT1cIm9uUm93Q2xlYXJJdGVtQ2xpY2soKVwiIChrZXlkb3duKT1cIm9uUm93TWF0Y2hNb2RlS2V5RG93bigkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwib25Sb3dDbGVhckl0ZW1DbGljaygpXCI+e3tub0ZpbHRlckxhYmVsfX08L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLW9wZXJhdG9yXCIgKm5nSWY9XCJpc1Nob3dPcGVyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwib3BlcmF0b3JPcHRpb25zXCIgW25nTW9kZWxdPVwib3BlcmF0b3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbk9wZXJhdG9yQ2hhbmdlKCRldmVudClcIiBzdHlsZUNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLW9wZXJhdG9yLWRyb3Bkb3duXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1jb25zdHJhaW50c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGRDb25zdHJhaW50IG9mIGZpZWxkQ29uc3RyYWludHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1jb25zdHJhaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gICpuZ0lmPVwic2hvd01hdGNoTW9kZXMgJiYgbWF0Y2hNb2Rlc1wiIFtvcHRpb25zXT1cIm1hdGNoTW9kZXNcIiBbbmdNb2RlbF09XCJmaWVsZENvbnN0cmFpbnQubWF0Y2hNb2RlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25NZW51TWF0Y2hNb2RlQ2hhbmdlKCRldmVudCwgZmllbGRDb25zdHJhaW50KVwiIHN0eWxlQ2xhc3M9XCJwLWNvbHVtbi1maWx0ZXItbWF0Y2htb2RlLWRyb3Bkb3duXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlckZvcm1FbGVtZW50IFt0eXBlXT1cInR5cGVcIiBbZmllbGRdPVwiZmllbGRcIiBbZmlsdGVyQ29uc3RyYWludF09XCJmaWVsZENvbnN0cmFpbnRcIiBbZmlsdGVyVGVtcGxhdGVdPVwiZmlsdGVyVGVtcGxhdGVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCJtaW5GcmFjdGlvbkRpZ2l0c1wiIFttYXhGcmFjdGlvbkRpZ2l0c109XCJtYXhGcmFjdGlvbkRpZ2l0c1wiIFtwcmVmaXhdPVwicHJlZml4XCIgW3N1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCIgIFtsb2NhbGVNYXRjaGVyXT1cImxvY2FsZU1hdGNoZXJcIiBbY3VycmVuY3ldPVwiY3VycmVuY3lcIiBbY3VycmVuY3lEaXNwbGF5XT1cImN1cnJlbmN5RGlzcGxheVwiIFt1c2VHcm91cGluZ109XCJ1c2VHcm91cGluZ1wiPjwvcC1jb2x1bW5GaWx0ZXJGb3JtRWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1JlbW92ZUljb25cIiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1yZW1vdmUtYnV0dG9uIHAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyIHAtYnV0dG9uLXNtXCIgKGNsaWNrKT1cInJlbW92ZUNvbnN0cmFpbnQoZmllbGRDb25zdHJhaW50KVwiIHBSaXBwbGUgW2xhYmVsXT1cInJlbW92ZVJ1bGVCdXR0b25MYWJlbFwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLWFkZC1ydWxlXCIgKm5nSWY9XCJpc1Nob3dBZGRDb25zdHJhaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIFtsYWJlbF09XCJhZGRSdWxlQnV0dG9uTGFiZWxcIiBpY29uPVwicGkgcGktcGx1c1wiIGNsYXNzPVwicC1jb2x1bW4tZmlsdGVyLWFkZC1idXR0b24gcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zbVwiIChjbGljayk9XCJhZGRDb25zdHJhaW50KClcIiBwUmlwcGxlPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLWZpbHRlci1idXR0b25iYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIiBbbGFiZWxdPVwiY2xlYXJCdXR0b25MYWJlbFwiIHBSaXBwbGU+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0FwcGx5QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gKGNsaWNrKT1cImFwcGx5RmlsdGVyKClcIiBbbGFiZWxdPVwiYXBwbHlCdXR0b25MYWJlbFwiIHBSaXBwbGU+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBmaWVsZH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcuMXMgbGluZWFyJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRmlsdGVyIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xuXG4gICAgQElucHV0KCkgZGlzcGxheTogc3RyaW5nID0gJ3Jvdyc7XG5cbiAgICBASW5wdXQoKSBzaG93TWVudTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBtYXRjaE1vZGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9wZXJhdG9yOiBzdHJpbmcgPSBGaWx0ZXJPcGVyYXRvci5BTkQ7XG5cbiAgICBASW5wdXQoKSBzaG93T3BlcmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd0NsZWFyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dBcHBseUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93TWF0Y2hNb2RlczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGhpZGVPbkNsZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbWF0Y2hNb2RlT3B0aW9uczogU2VsZWN0SXRlbVtdO1xuXG4gICAgQElucHV0KCkgbWF4Q29uc3RyYWludHM6IG51bWJlciA9IDI7XG5cbiAgICBASW5wdXQoKSBtaW5GcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4RnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHByZWZpeDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3VmZml4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxvY2FsZU1hdGNoZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjdXJyZW5jeURpc3BsYXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHVzZUdyb3VwaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ljb24nKSBpY29uOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgZHQ6IFRhYmxlLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHVibGljIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSkge31cblxuICAgIG92ZXJsYXlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG9wZXJhdG9yT3B0aW9uczogYW55W107XG5cbiAgICBvdmVybGF5VmlzaWJsZTogYm9vbGVhbjtcblxuICAgIG92ZXJsYXk6IEhUTUxFbGVtZW50O1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBtYXRjaE1vZGVzOiBTZWxlY3RJdGVtW107XG5cbiAgICB0cmFuc2xhdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmVzZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHNlbGZDbGljazogYm9vbGVhbjtcblxuICAgIG92ZXJsYXlFdmVudExpc3RlbmVyO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlTWF0Y2hNb2RlT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZU9wZXJhdG9yT3B0aW9ucygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kdC50YWJsZVNlcnZpY2UucmVzZXRTb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5nZW5lcmF0ZU1hdGNoTW9kZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZU9wZXJhdG9yT3B0aW9ucygpO1xuICAgIH1cblxuICAgIGdlbmVyYXRlTWF0Y2hNb2RlT3B0aW9ucygpwqB7XG4gICAgICAgIHRoaXMubWF0Y2hNb2RlcyA9IHRoaXMubWF0Y2hNb2RlT3B0aW9ucyB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5maWx0ZXJNYXRjaE1vZGVPcHRpb25zW3RoaXMudHlwZV0/Lm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtsYWJlbDogdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oa2V5KSwgdmFsdWU6IGtleX1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVPcGVyYXRvck9wdGlvbnMoKcKge1xuICAgICAgICB0aGlzLm9wZXJhdG9yT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHtsYWJlbDogdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLk1BVENIX0FMTCksIHZhbHVlOiBGaWx0ZXJPcGVyYXRvci5BTkR9LFxuICAgICAgICAgICAge2xhYmVsOiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuTUFUQ0hfQU5ZKSwgdmFsdWU6IEZpbHRlck9wZXJhdG9yLk9SfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKSB7XG4gICAgICAgIGxldCBkZWZhdWx0TWF0Y2hNb2RlID0gdGhpcy5nZXREZWZhdWx0TWF0Y2hNb2RlKCk7XG4gICAgICAgIHRoaXMuZHQuZmlsdGVyc1t0aGlzLmZpZWxkXSA9IHRoaXMuZGlzcGxheSA9PSAncm93JyA/IHt2YWx1ZTogbnVsbCwgbWF0Y2hNb2RlOiBkZWZhdWx0TWF0Y2hNb2RlfSA6IFt7dmFsdWU6IG51bGwsIG1hdGNoTW9kZTogZGVmYXVsdE1hdGNoTW9kZSwgb3BlcmF0b3I6IHRoaXMub3BlcmF0b3J9XTtcbiAgICB9XG5cbiAgICBvbk1lbnVNYXRjaE1vZGVDaGFuZ2UodmFsdWU6IGFueSwgZmlsdGVyTWV0YTogRmlsdGVyTWV0YWRhdGEpIHtcbiAgICAgICAgZmlsdGVyTWV0YS5tYXRjaE1vZGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoIXRoaXMuc2hvd0FwcGx5QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93TWF0Y2hNb2RlQ2hhbmdlKG1hdGNoTW9kZTogc3RyaW5nKSB7XG4gICAgICAgICg8RmlsdGVyTWV0YWRhdGE+IHRoaXMuZHQuZmlsdGVyc1t0aGlzLmZpZWxkXSkubWF0Y2hNb2RlID0gbWF0Y2hNb2RlO1xuICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25Sb3dNYXRjaE1vZGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGxldCBpdGVtID0gPEhUTUxMSUVsZW1lbnQ+IGV2ZW50LnRhcmdldDtcblxuICAgICAgICBzd2l0Y2goZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHZhciBuZXh0SXRlbSA9IHRoaXMuZmluZE5leHRJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0udGFiSW5kZXggPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgIG5leHRJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB2YXIgcHJldkl0ZW0gPSB0aGlzLmZpbmRQcmV2SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZJdGVtLnRhYkluZGV4ID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICBwcmV2SXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUm93Q2xlYXJJdGVtQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgaXNSb3dNYXRjaE1vZGVTZWxlY3RlZChtYXRjaE1vZGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gKDxGaWx0ZXJNZXRhZGF0YT4gdGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdKS5tYXRjaE1vZGUgPT09IG1hdGNoTW9kZTtcbiAgICB9XG5cbiAgICBhZGRDb25zdHJhaW50KCkge1xuICAgICAgICAoPEZpbHRlck1ldGFkYXRhW10+IHRoaXMuZHQuZmlsdGVyc1t0aGlzLmZpZWxkXSkucHVzaCh7dmFsdWU6IG51bGwsIG1hdGNoTW9kZTogdGhpcy5nZXREZWZhdWx0TWF0Y2hNb2RlKCksIG9wZXJhdG9yOiB0aGlzLmdldERlZmF1bHRPcGVyYXRvcigpfSk7XG4gICAgICAgIHRoaXMuZHQuX2ZpbHRlcigpO1xuICAgIH1cblxuICAgIHJlbW92ZUNvbnN0cmFpbnQoZmlsdGVyTWV0YTogRmlsdGVyTWV0YWRhdGEpIHtcbiAgICAgICAgdGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdID0gKDxGaWx0ZXJNZXRhZGF0YVtdPiB0aGlzLmR0LmZpbHRlcnNbdGhpcy5maWVsZF0pLmZpbHRlcihtZXRhID0+IG1ldGEgIT09IGZpbHRlck1ldGEpO1xuICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICB9XG5cbiAgICBvbk9wZXJhdG9yQ2hhbmdlKHZhbHVlKSB7XG4gICAgICAgICg8RmlsdGVyTWV0YWRhdGFbXT4gdGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdKS5mb3JFYWNoKGZpbHRlck1ldGEgPT4ge1xuICAgICAgICAgICAgZmlsdGVyTWV0YS5vcGVyYXRvciA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuc2hvd0FwcGx5QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZU1lbnUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSAhdGhpcy5vdmVybGF5VmlzaWJsZTtcbiAgICB9XG5cbiAgICBvblRvZ2dsZUJ1dHRvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZSA9IERvbUhhbmRsZXIuZ2V0Rm9jdXNhYmxlRWxlbWVudHModGhpcy5vdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Fc2NhcGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pY29uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBmaW5kTmV4dEl0ZW0oaXRlbTogSFRNTExJRWxlbWVudCkge1xuICAgICAgICBsZXQgbmV4dEl0ZW0gPSA8SFRNTExJRWxlbWVudD4gaXRlbS5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKG5leHRJdGVtKVxuICAgICAgICAgICAgcmV0dXJuIERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dEl0ZW0sICdwLWNvbHVtbi1maWx0ZXItc2VwYXJhdG9yJykgID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBhcmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgfVxuXG4gICAgZmluZFByZXZJdGVtKGl0ZW06IEhUTUxMSUVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHByZXZJdGVtID0gPEhUTUxMSUVsZW1lbnQ+IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtY29sdW1uLWZpbHRlci1zZXBhcmF0b3InKSAgPyB0aGlzLmZpbmRQcmV2SXRlbShwcmV2SXRlbSkgOiBwcmV2SXRlbTtcbiAgICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gaXRlbS5wYXJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgfVxuXG4gICAgb25Db250ZW50Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuc2VsZkNsaWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBldmVudC5lbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnb3ZlcmxheScsIHRoaXMub3ZlcmxheSwgdGhpcy5jb25maWcuekluZGV4Lm92ZXJsYXkpO1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWJzb2x1dGVQb3NpdGlvbih0aGlzLm92ZXJsYXksIHRoaXMuaWNvbi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5RXZlbnRMaXN0ZW5lciA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXkgJiYgdGhpcy5vdmVybGF5LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uID0gdGhpcy5vdmVybGF5U2VydmljZS5jbGlja09ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMub3ZlcmxheUV2ZW50TGlzdGVuZXIpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihldmVudC5lbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdE1hdGNoTW9kZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5tYXRjaE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hdGNoTW9kZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZXh0JylcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVyTWF0Y2hNb2RlLlNUQVJUU19XSVRIO1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnbnVtZXJpYycpXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbHRlck1hdGNoTW9kZS5FUVVBTFM7XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJylcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVyTWF0Y2hNb2RlLkRBVEVfSVM7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbHRlck1hdGNoTW9kZS5DT05UQUlOUztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldERlZmF1bHRPcGVyYXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kdC5maWx0ZXJzID8gKDxGaWx0ZXJNZXRhZGF0YVtdPiB0aGlzLmR0LmZpbHRlcnNbdGhpcy5maWVsZF0pWzBdLm9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yO1xuICAgIH1cblxuICAgIGhhc1Jvd0ZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHQuZmlsdGVyc1t0aGlzLmZpZWxkXSAmJiAhdGhpcy5kdC5pc0ZpbHRlckJsYW5rKCg8RmlsdGVyTWV0YWRhdGE+dGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdKS52YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpZWxkQ29uc3RyYWludHMoKTogRmlsdGVyTWV0YWRhdGFbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmR0LmZpbHRlcnMgPyA8RmlsdGVyTWV0YWRhdGFbXT4gdGhpcy5kdC5maWx0ZXJzW3RoaXMuZmllbGRdIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1JlbW92ZUljb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkQ29uc3RyYWludHMgPyB0aGlzLmZpZWxkQ29uc3RyYWludHMubGVuZ3RoID4gMSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBzaG93TWVudUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd01lbnUgJiYgKHRoaXMuZGlzcGxheSA9PT0gJ3JvdycgPyB0aGlzLnR5cGUgIT09ICdib29sZWFuJzogdHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd09wZXJhdG9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93T3BlcmF0b3IgJiYgdGhpcy50eXBlICE9PSAnYm9vbGVhbic7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd0FkZENvbnN0cmFpbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dBZGRCdXR0b24gJiYgdGhpcy50eXBlICE9PSAnYm9vbGVhbicgJiYgKHRoaXMuZmllbGRDb25zdHJhaW50cyAmJiB0aGlzLmZpZWxkQ29uc3RyYWludHMubGVuZ3RoIDwgdGhpcy5tYXhDb25zdHJhaW50cyk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGx5QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5BUFBMWSk7XG4gICAgfVxuXG4gICAgZ2V0IGNsZWFyQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5DTEVBUik7XG4gICAgfVxuXG4gICAgZ2V0IGFkZFJ1bGVCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VHJhbnNsYXRpb24oVHJhbnNsYXRpb25LZXlzLkFERF9SVUxFKTtcbiAgICB9XG5cbiAgICBnZXQgcmVtb3ZlUnVsZUJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuUkVNT1ZFX1JVTEUpO1xuICAgIH1cblxuICAgIGdldCBub0ZpbHRlckxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuTk9fRklMVEVSKTtcbiAgICB9XG5cbiAgICBoYXNGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBmaWVsZEZpbHRlciA9IHRoaXMuZHQuZmlsdGVyc1t0aGlzLmZpZWxkXTtcbiAgICAgICAgaWYgKGZpZWxkRmlsdGVyKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZEZpbHRlcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmR0LmlzRmlsdGVyQmxhbmsoKDxGaWx0ZXJNZXRhZGF0YVtdPiBmaWVsZEZpbHRlcilbMF0udmFsdWUpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5kdC5pc0ZpbHRlckJsYW5rKGZpZWxkRmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpc091dHNpZGVDbGlja2VkKGV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMub3ZlcmxheS5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgfHwgdGhpcy5vdmVybGF5LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgICAgIHx8IHRoaXMuaWNvbi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmljb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAgICAgICB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtY29sdW1uLWZpbHRlci1hZGQtYnV0dG9uJykgfHwgRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC50YXJnZXQucGFyZW50RWxlbWVudCwgJ3AtY29sdW1uLWZpbHRlci1hZGQtYnV0dG9uJylcbiAgICAgICAgICAgIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1jb2x1bW4tZmlsdGVyLXJlbW92ZS1idXR0b24nKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LCAncC1jb2x1bW4tZmlsdGVyLXJlbW92ZS1idXR0b24nKSk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRUYXJnZXQ6IGFueSA9IHRoaXMuZWwgPyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCA6ICdkb2N1bWVudCc7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZG9jdW1lbnRUYXJnZXQsICdtb3VzZWRvd24nLCBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVZpc2libGUgJiYgIXRoaXMuc2VsZkNsaWNrICYmIHRoaXMuaXNPdXRzaWRlQ2xpY2tlZChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGZDbGljayA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9ICgpID0+IHRoaXMuaGlkZSgpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBuZXcgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIodGhpcy5pY29uLm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25PdmVybGF5SGlkZSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5pbml0RmllbGRGaWx0ZXJDb25zdHJhaW50KCk7XG4gICAgICAgIHRoaXMuZHQuX2ZpbHRlcigpO1xuICAgICAgICBpZiAodGhpcy5oaWRlT25DbGVhcilcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIGFwcGx5RmlsdGVyKCkge1xuICAgICAgICB0aGlzLmR0Ll9maWx0ZXIoKTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5KTtcbiAgICAgICAgICAgIHRoaXMub25PdmVybGF5SGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFBhZ2luYXRvck1vZHVsZSxJbnB1dFRleHRNb2R1bGUsRHJvcGRvd25Nb2R1bGUsU2Nyb2xsaW5nTW9kdWxlLEZvcm1zTW9kdWxlLEJ1dHRvbk1vZHVsZSxTZWxlY3RCdXR0b25Nb2R1bGUsQ2FsZW5kYXJNb2R1bGUsSW5wdXROdW1iZXJNb2R1bGUsVHJpU3RhdGVDaGVja2JveE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RhYmxlLFNoYXJlZE1vZHVsZSxTb3J0YWJsZUNvbHVtbixGcm96ZW5Db2x1bW4sUm93R3JvdXBIZWFkZXIsU2VsZWN0YWJsZVJvdyxSb3dUb2dnbGVyLENvbnRleHRNZW51Um93LFJlc2l6YWJsZUNvbHVtbixSZW9yZGVyYWJsZUNvbHVtbixFZGl0YWJsZUNvbHVtbixDZWxsRWRpdG9yLFNvcnRJY29uLFxuICAgICAgICAgICAgVGFibGVSYWRpb0J1dHRvbixUYWJsZUNoZWNrYm94LFRhYmxlSGVhZGVyQ2hlY2tib3gsUmVvcmRlcmFibGVSb3dIYW5kbGUsUmVvcmRlcmFibGVSb3csU2VsZWN0YWJsZVJvd0RibENsaWNrLEVkaXRhYmxlUm93LEluaXRFZGl0YWJsZVJvdyxTYXZlRWRpdGFibGVSb3csQ2FuY2VsRWRpdGFibGVSb3csU2Nyb2xsaW5nTW9kdWxlLENvbHVtbkZpbHRlcl0sXG4gICAgZGVjbGFyYXRpb25zOiBbVGFibGUsU29ydGFibGVDb2x1bW4sRnJvemVuQ29sdW1uLFJvd0dyb3VwSGVhZGVyLFNlbGVjdGFibGVSb3csUm93VG9nZ2xlcixDb250ZXh0TWVudVJvdyxSZXNpemFibGVDb2x1bW4sUmVvcmRlcmFibGVDb2x1bW4sRWRpdGFibGVDb2x1bW4sQ2VsbEVkaXRvcixUYWJsZUJvZHksU29ydEljb24sXG4gICAgICAgICAgICBUYWJsZVJhZGlvQnV0dG9uLFRhYmxlQ2hlY2tib3gsVGFibGVIZWFkZXJDaGVja2JveCxSZW9yZGVyYWJsZVJvd0hhbmRsZSxSZW9yZGVyYWJsZVJvdyxTZWxlY3RhYmxlUm93RGJsQ2xpY2ssRWRpdGFibGVSb3csSW5pdEVkaXRhYmxlUm93LFNhdmVFZGl0YWJsZVJvdyxDYW5jZWxFZGl0YWJsZVJvdyxDb2x1bW5GaWx0ZXIsQ29sdW1uRmlsdGVyRm9ybUVsZW1lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/tabmenu/primeng-tabmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabmenu/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabmenu/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10YWJtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RhYm1lbnUvcHJpbWVuZy10YWJtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tabmenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tabmenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJtZW51L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RhYm1lbnUnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tabmenu/tabmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabmenu/tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabmenu/tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,155 @@
+import { NgModule, Component, Input, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation, ViewChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { RouterModule } from '@angular/router';
+import { DomHandler } from 'primeng/dom';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "primeng/ripple";
+import * as i4 from "@angular/router";
+export class TabMenu {
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        this.updateInkBar();
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = item;
+        this.tabChanged = true;
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        if (tabHeader) {
+            this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+            this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+        }
+    }
+}
+TabMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
+TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabMenu, selector: "p-tabMenu", inputs: { model: "model", activeItem: "activeItem", popup: "popup", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabMenu', template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], activeItem: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class TabMenuModule {
+}
+TabMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });
+TabMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, imports: [[CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], RouterModule, SharedModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule],
+                    exports: [TabMenu, RouterModule, SharedModule, TooltipModule],
+                    declarations: [TabMenu]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJtZW51L3RhYm1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLGVBQWUsRUFBdUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQy9NLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUF5QzlDLE1BQU0sT0FBTyxPQUFPO0lBc0JoQixrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLFFBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQixLQUFLLE1BQU07b0JBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN0QyxNQUFNO2dCQUVOO29CQUNJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDdEMsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBWSxFQUFFLElBQWM7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRixJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUM3STtJQUNMLENBQUM7O29HQXRFUSxPQUFPO3dGQUFQLE9BQU8sa09BZ0JDLGFBQWEsa05BckRwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E2QlQ7MkZBUVEsT0FBTztrQkF2Q25CLFNBQVM7K0JBQ0ksV0FBVyxZQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7OEJBSVEsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFRSxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBRWEsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQThEbEMsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkE5RWIsT0FBTyxhQTBFTixZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxhQTFFbEUsT0FBTyxFQTJFRSxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWE7MkdBR2hELGFBQWEsWUFKYixDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUMsRUFDMUQsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhOzJGQUdoRCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxhQUFhLENBQUM7b0JBQzVFLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDMUQsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LENvbnRlbnRDaGlsZHJlbixRdWVyeUxpc3QsQWZ0ZXJDb250ZW50SW5pdCxBZnRlclZpZXdJbml0LEFmdGVyVmlld0NoZWNrZWQsVGVtcGxhdGVSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10YWJNZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIidwLXRhYm1lbnUgcC1jb21wb25lbnQnXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPHVsICNuYXZiYXIgY2xhc3M9XCJwLXRhYm1lbnUtbmF2IHAtcmVzZXRcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbDsgbGV0IGkgPSBpbmRleFwiIHJvbGU9XCJ0YWJcIiBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCIgW2NsYXNzXT1cIml0ZW0uc3R5bGVDbGFzc1wiIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlSXRlbT09aXRlbVwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYWN0aXZlSXRlbT09aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC10YWJtZW51aXRlbSc6dHJ1ZSwncC1kaXNhYmxlZCc6aXRlbS5kaXNhYmxlZCwncC1oaWdobGlnaHQnOmFjdGl2ZUl0ZW09PWl0ZW0sJ3AtaGlkZGVuJzogaXRlbS52aXNpYmxlID09PSBmYWxzZX1cIiBwVG9vbHRpcCBbdG9vbHRpcE9wdGlvbnNdPVwiaXRlbS50b29sdGlwT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFpdGVtLnJvdXRlckxpbmtcIiBbYXR0ci5ocmVmXT1cIml0ZW0udXJsXCIgY2xhc3M9XCJwLW1lbnVpdGVtLWxpbmtcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsaXRlbSlcIiAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50LGl0ZW0pXCIgW2F0dHIudGFiaW5kZXhdPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiAnMCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0udGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZVwiIFthdHRyLmlkXT1cIml0ZW0uaWRcIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZW51aXRlbS10ZXh0XCIgKm5nSWY9XCJpdGVtLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbExhYmVsXCI+e3tpdGVtLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cIml0ZW0ubGFiZWxcIj48L3NwYW4+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLnJvdXRlckxpbmtcIiBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIiBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpdGVtLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zfHx7ZXhhY3Q6ZmFsc2V9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIiBjbGFzcz1cInAtbWVudWl0ZW0tbGlua1wiIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50LGl0ZW0pXCIgKGtleWRvd24uZW50ZXIpPVwiaXRlbUNsaWNrKCRldmVudCxpdGVtKVwiIFthdHRyLnRhYmluZGV4XT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cIml0ZW0udGl0bGVcIiBbYXR0ci5pZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcmFnbWVudF09XCJpdGVtLmZyYWdtZW50XCIgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50XCIgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJpdGVtLnNraXBMb2NhdGlvbkNoYW5nZVwiIFtyZXBsYWNlVXJsXT1cIml0ZW0ucmVwbGFjZVVybFwiIFtzdGF0ZV09XCJpdGVtLnN0YXRlXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiaXRlbS5lc2NhcGUgIT09IGZhbHNlOyBlbHNlIGh0bWxSb3V0ZUxhYmVsXCI+e3tpdGVtLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sUm91dGVMYWJlbD48c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiIFtpbm5lckhUTUxdPVwiaXRlbS5sYWJlbFwiPjwvc3Bhbj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpICNpbmtiYXIgY2xhc3M9XCJwLXRhYm1lbnUtaW5rLWJhclwiPjwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibWVudS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUYWJNZW51IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxBZnRlclZpZXdJbml0LEFmdGVyVmlld0NoZWNrZWQge1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtOiBNZW51SXRlbTtcblxuICAgIEBJbnB1dCgpIHBvcHVwOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ25hdmJhcicpIG5hdmJhcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lua2JhcicpIGlua2JhcjogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHRhYkNoYW5nZWQ6IGJvb2xlYW47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbmtCYXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5rQmFyKCk7XG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKcKge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLnRhYkNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZUlua0JhcigpIHtcbiAgICAgICAgbGV0IHRhYkhlYWRlciA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLm5hdmJhci5uYXRpdmVFbGVtZW50LCAnbGkucC1oaWdobGlnaHQnKTtcbiAgICAgICAgaWYgKHRhYkhlYWRlcikge1xuICAgICAgICAgICAgdGhpcy5pbmtiYXIubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IERvbUhhbmRsZXIuZ2V0V2lkdGgodGFiSGVhZGVyKSArICdweCc7XG4gICAgICAgICAgICB0aGlzLmlua2Jhci5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0YWJIZWFkZXIpLmxlZnQgLSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLm5hdmJhci5uYXRpdmVFbGVtZW50KS5sZWZ0ICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFJvdXRlck1vZHVsZSxTaGFyZWRNb2R1bGUsUmlwcGxlTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtUYWJNZW51LFJvdXRlck1vZHVsZSxTaGFyZWRNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVGFiTWVudV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTWVudU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tabview/primeng-tabview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabview/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabview/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10YWJ2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RhYnZpZXcvcHJpbWVuZy10YWJ2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tabview/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabview/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabview/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tabview';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJ2aWV3L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RhYnZpZXcnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tabview/tabview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tabview/tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tabview/tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,435 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, forwardRef, Inject } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { TooltipModule } from 'primeng/tooltip';
+import { RippleModule } from 'primeng/ripple';
+import { SharedModule, PrimeTemplate } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/tooltip";
+let idx = 0;
+export class TabPanel {
+    constructor(tabView, viewContainer, cd) {
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.cache = true;
+        this.tooltipPosition = 'top';
+        this.tooltipPositionStyle = 'absolute';
+        this.id = `p-tabpanel-${idx++}`;
+        this.tabView = tabView;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            this.cd.detectChanges();
+        }
+        if (val)
+            this.loaded = true;
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(disabled) {
+        this._disabled = disabled;
+        this.tabView.cd.markForCheck();
+    }
+    get header() {
+        return this._header;
+    }
+    set header(header) {
+        this._header = header;
+        this.tabView.cd.markForCheck();
+    }
+    get leftIcon() {
+        return this._leftIcon;
+    }
+    set leftIcon(leftIcon) {
+        this._leftIcon = leftIcon;
+        this.tabView.cd.markForCheck();
+    }
+    get rightIcon() {
+        return this._rightIcon;
+    }
+    set rightIcon(rightIcon) {
+        this._rightIcon = rightIcon;
+        this.tabView.cd.markForCheck();
+    }
+    ngOnDestroy() {
+        this.view = null;
+    }
+}
+TabPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabPanel, selector: "p-tabPanel", inputs: { closable: "closable", headerStyle: "headerStyle", headerStyleClass: "headerStyleClass", cache: "cache", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", selected: "selected", disabled: "disabled", header: "header", leftIcon: "leftIcon", rightIcon: "rightIcon" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tabPanel',
+                    template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => TabView)]
+                }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { closable: [{
+                type: Input
+            }], headerStyle: [{
+                type: Input
+            }], headerStyleClass: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], leftIcon: [{
+                type: Input
+            }], rightIcon: [{
+                type: Input
+            }] } });
+export class TabView {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.orientation = 'top';
+        this.onChange = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.activeIndexChange = new EventEmitter();
+        this.backwardIsDisabled = true;
+        this.forwardIsDisabled = false;
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabPanels.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    initTabs() {
+        this.tabs = this.tabPanels.toArray();
+        let selectedTab = this.findSelectedTab();
+        if (!selectedTab && this.tabs.length) {
+            if (this.activeIndex != null && this.tabs.length > this.activeIndex)
+                this.tabs[this.activeIndex].selected = true;
+            else
+                this.tabs[0].selected = true;
+            this.tabChanged = true;
+        }
+        this.cd.markForCheck();
+    }
+    open(event, tab) {
+        if (tab.disabled) {
+            if (event) {
+                event.preventDefault();
+            }
+            return;
+        }
+        if (!tab.selected) {
+            let selectedTab = this.findSelectedTab();
+            if (selectedTab) {
+                selectedTab.selected = false;
+            }
+            this.tabChanged = true;
+            tab.selected = true;
+            let selectedTabIndex = this.findTabIndex(tab);
+            this.preventActiveIndexPropagation = true;
+            this.activeIndexChange.emit(selectedTabIndex);
+            this.onChange.emit({ originalEvent: event, index: selectedTabIndex });
+            this.updateScrollBar(selectedTabIndex);
+        }
+        if (event) {
+            event.preventDefault();
+        }
+    }
+    close(event, tab) {
+        if (this.controlClose) {
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab),
+                close: () => {
+                    this.closeTab(tab);
+                }
+            });
+        }
+        else {
+            this.closeTab(tab);
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab)
+            });
+        }
+        event.stopPropagation();
+    }
+    closeTab(tab) {
+        if (tab.disabled) {
+            return;
+        }
+        if (tab.selected) {
+            this.tabChanged = true;
+            tab.selected = false;
+            for (let i = 0; i < this.tabs.length; i++) {
+                let tabPanel = this.tabs[i];
+                if (!tabPanel.closed && !tab.disabled) {
+                    tabPanel.selected = true;
+                    break;
+                }
+            }
+        }
+        tab.closed = true;
+    }
+    findSelectedTab() {
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i].selected) {
+                return this.tabs[i];
+            }
+        }
+        return null;
+    }
+    findTabIndex(tab) {
+        let index = -1;
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i] == tab) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {
+            this.findSelectedTab().selected = false;
+            this.tabs[this._activeIndex].selected = true;
+            this.tabChanged = true;
+            this.updateScrollBar(val);
+        }
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+        this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+    }
+    updateScrollBar(index) {
+        let tabHeader = this.navbar.nativeElement.children[index];
+        tabHeader.scrollIntoView({ block: 'nearest' });
+    }
+    updateButtonState() {
+        const content = this.content.nativeElement;
+        const { scrollLeft, scrollWidth } = content;
+        const width = DomHandler.getWidth(content);
+        this.backwardIsDisabled = scrollLeft === 0;
+        this.forwardIsDisabled = scrollLeft === scrollWidth - width;
+    }
+    onScroll(event) {
+        this.scrollable && this.updateButtonState();
+        event.preventDefault();
+    }
+    getVisibleButtonWidths() {
+        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);
+    }
+    navBackward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft - width;
+        content.scrollLeft = pos <= 0 ? 0 : pos;
+    }
+    navForward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft + width;
+        const lastPos = content.scrollWidth - width;
+        content.scrollLeft = pos >= lastPos ? lastPos : pos;
+    }
+}
+TabView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabView, selector: "p-tabView", inputs: { orientation: "orientation", style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabPanels", predicate: TabPanel }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabView', template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orientation: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], controlClose: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], prevBtn: [{
+                type: ViewChild,
+                args: ['prevBtn']
+            }], nextBtn: [{
+                type: ViewChild,
+                args: ['nextBtn']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], tabPanels: [{
+                type: ContentChildren,
+                args: [TabPanel]
+            }], onChange: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], activeIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+export class TabViewModule {
+}
+TabViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule], exports: [TabView, TabPanel, SharedModule] });
+TabViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, TooltipModule, RippleModule],
+                    exports: [TabView, TabPanel, SharedModule],
+                    declarations: [TabView, TabPanel]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWJ2aWV3L3RhYnZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQXNCLEtBQUssRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUNqRSxlQUFlLEVBQTBFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBb0IsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuTixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUV2RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7OztBQUV2QyxJQUFJLEdBQUcsR0FBVyxDQUFDLENBQUM7QUFpQnBCLE1BQU0sT0FBTyxRQUFRO0lBNENqQixZQUErQyxPQUFPLEVBQVMsYUFBK0IsRUFBUyxFQUFxQjtRQUE3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXBDbkgsVUFBSyxHQUFZLElBQUksQ0FBQztRQUl0QixvQkFBZSxHQUFXLEtBQUssQ0FBQztRQUVoQyx5QkFBb0IsR0FBVyxVQUFVLENBQUM7UUFzQm5ELE9BQUUsR0FBVyxjQUFjLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFTL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFrQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLFFB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QkFBQyxTQUFTO2dCQUVDLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFRyxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBRUUsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVDLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFUSxTQUFTO3NCQUFuQyxlQUFlO3VCQUFDLFFBQVE7Z0JBRWYsUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkE2SU0sV0FBVztzQkFBdkIsS0FBSzs7QUF5RVYsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFsUGIsT0FBTyxFQXRLUCxRQUFRLGFBb1pQLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxFQUFDLFlBQVksYUE5T3JELE9BQU8sRUF0S1AsUUFBUSxFQXFaVSxZQUFZOzJHQUc5QixhQUFhLFlBSmIsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsRUFBQyxZQUFZLENBQUMsRUFDcEMsWUFBWTsyRkFHOUIsYUFBYTtrQkFMekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGFBQWEsRUFBQyxZQUFZLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsWUFBWSxDQUFDO29CQUN4QyxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUMsUUFBUSxDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsT25EZXN0cm95LElucHV0LE91dHB1dCxFdmVudEVtaXR0ZXIsQWZ0ZXJDb250ZW50SW5pdCxcbiAgICAgICAgQ29udGVudENoaWxkcmVuLFF1ZXJ5TGlzdCxUZW1wbGF0ZVJlZixFbWJlZGRlZFZpZXdSZWYsVmlld0NvbnRhaW5lclJlZixDaGFuZ2VEZXRlY3RvclJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgZm9yd2FyZFJlZiwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U2hhcmVkTW9kdWxlLFByaW1lVGVtcGxhdGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QmxvY2thYmxlVUl9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7RG9tSGFuZGxlcn0gZnJvbSAncHJpbWVuZy9kb20nO1xuXG5sZXQgaWR4OiBudW1iZXIgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdGFiUGFuZWwnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiaWRcIiBjbGFzcz1cInAtdGFidmlldy1wYW5lbFwiIFtoaWRkZW5dPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzZWxlY3RlZFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctbGFiZWwnXCIgKm5nSWY9XCIhY2xvc2VkXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlICYmIChjYWNoZSA/IGxvYWRlZCA6IHNlbGVjdGVkKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRhYlBhbmVsIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgY2xvc2FibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBoZWFkZXJTdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgaGVhZGVyU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY2FjaGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcDogYW55O1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBzdHJpbmcgPSAndG9wJztcblxuICAgIEBJbnB1dCgpIHRvb2x0aXBQb3NpdGlvblN0eWxlOiBzdHJpbmcgPSAnYWJzb2x1dGUnO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIGNsb3NlZDogYm9vbGVhbjtcblxuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gICAgX3NlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgX2hlYWRlcjogc3RyaW5nO1xuXG4gICAgX2xlZnRJY29uOiBzdHJpbmc7XG5cbiAgICBfcmlnaHRJY29uOiBzdHJpbmc7XG5cbiAgICBsb2FkZWQ6IGJvb2xlYW47XG5cbiAgICBpZDogc3RyaW5nID0gYHAtdGFicGFuZWwtJHtpZHgrK31gO1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICB0YWJWaWV3OiBUYWJWaWV3O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IFRhYlZpZXcpKSB0YWJWaWV3LCBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLnRhYlZpZXcgPSB0YWJWaWV3IGFzIFRhYlZpZXc7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWw7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsKVxuICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH07XG5cbiAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgdGhpcy50YWJWaWV3LmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBoZWFkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlcjtcbiAgICB9XG5cbiAgICBzZXQgaGVhZGVyKGhlYWRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IGhlYWRlcjtcbiAgICAgICAgdGhpcy50YWJWaWV3LmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBsZWZ0SWNvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGVmdEljb247XG4gICAgfVxuXG4gICAgc2V0IGxlZnRJY29uKGxlZnRJY29uIDpzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGVmdEljb24gPSBsZWZ0SWNvbjtcbiAgICAgICAgdGhpcy50YWJWaWV3LmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCByaWdodEljb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JpZ2h0SWNvbjtcbiAgICB9XG5cbiAgICBzZXQgcmlnaHRJY29uKHJpZ2h0SWNvbiA6c3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3JpZ2h0SWNvbiA9IHJpZ2h0SWNvbjtcbiAgICAgICAgdGhpcy50YWJWaWV3LmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnZpZXcgPSBudWxsO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRhYlZpZXcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLXRhYnZpZXcgcC1jb21wb25lbnQnOiB0cnVlLCAncC10YWJ2aWV3LXNjcm9sbGFibGUnOiBzY3JvbGxhYmxlfVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRhYnZpZXctbmF2LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzY3JvbGxhYmxlICYmICFiYWNrd2FyZElzRGlzYWJsZWRcIiAjcHJldkJ0biBjbGFzcz1cInAtdGFidmlldy1uYXYtcHJldiBwLXRhYnZpZXctbmF2LWJ0biBwLWxpbmtcIiAoY2xpY2spPVwibmF2QmFja3dhcmQoKVwiIHR5cGU9XCJidXR0b25cIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNjb250ZW50IGNsYXNzPVwicC10YWJ2aWV3LW5hdi1jb250ZW50XCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCAjbmF2YmFyIGNsYXNzPVwicC10YWJ2aWV3LW5hdlwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXRhYiBbbmdGb3JPZl09XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIiBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0JzogdGFiLnNlbGVjdGVkLCAncC1kaXNhYmxlZCc6IHRhYi5kaXNhYmxlZH1cIiBbbmdTdHlsZV09XCJ0YWIuaGVhZGVyU3R5bGVcIiBbY2xhc3NdPVwidGFiLmhlYWRlclN0eWxlQ2xhc3NcIiAqbmdJZj1cIiF0YWIuY2xvc2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHJvbGU9XCJ0YWJcIiBjbGFzcz1cInAtdGFidmlldy1uYXYtbGlua1wiIFthdHRyLmlkXT1cInRhYi5pZCArICctbGFiZWwnXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ0YWIuc2VsZWN0ZWRcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInRhYi5pZFwiIFtwVG9vbHRpcF09XCJ0YWIudG9vbHRpcFwiIFt0b29sdGlwUG9zaXRpb25dPVwidGFiLnRvb2x0aXBQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInRhYi5zZWxlY3RlZFwiIFtwb3NpdGlvblN0eWxlXT1cInRhYi50b29sdGlwUG9zaXRpb25TdHlsZVwiIFt0b29sdGlwU3R5bGVDbGFzc109XCJ0YWIudG9vbHRpcFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW4oJGV2ZW50LHRhYilcIiAoa2V5ZG93bi5lbnRlcik9XCJvcGVuKCRldmVudCx0YWIpXCIgcFJpcHBsZSBbYXR0ci50YWJpbmRleF09XCJ0YWIuZGlzYWJsZWQgPyBudWxsIDogJzAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYi5oZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC10YWJ2aWV3LWxlZnQtaWNvblwiIFtuZ0NsYXNzXT1cInRhYi5sZWZ0SWNvblwiICpuZ0lmPVwidGFiLmxlZnRJY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC10YWJ2aWV3LXRpdGxlXCI+e3t0YWIuaGVhZGVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRhYnZpZXctcmlnaHQtaWNvblwiIFtuZ0NsYXNzXT1cInRhYi5yaWdodEljb25cIiAqbmdJZj1cInRhYi5yaWdodEljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmNsb3NhYmxlXCIgY2xhc3M9XCJwLXRhYnZpZXctY2xvc2UgcGkgcGktdGltZXNcIiAoY2xpY2spPVwiY2xvc2UoJGV2ZW50LHRhYilcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAjaW5rYmFyIGNsYXNzPVwicC10YWJ2aWV3LWluay1iYXJcIj48L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzY3JvbGxhYmxlICYmICFmb3J3YXJkSXNEaXNhYmxlZFwiICNuZXh0QnRuIGNsYXNzPVwicC10YWJ2aWV3LW5hdi1uZXh0IHAtdGFidmlldy1uYXYtYnRuIHAtbGlua1wiIChjbGljayk9XCJuYXZGb3J3YXJkKClcIiB0eXBlPVwiYnV0dG9uXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS1jaGV2cm9uLXJpZ2h0XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10YWJ2aWV3LXBhbmVsc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgc3R5bGVVcmxzOiBbJy4vdGFidmlldy5jc3MnXSxcbiAgIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xufVxufSlcbmV4cG9ydCBjbGFzcyBUYWJWaWV3IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxBZnRlclZpZXdDaGVja2VkLEJsb2NrYWJsZVVJIHtcblxuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uOiBzdHJpbmcgPSAndG9wJztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjb250cm9sQ2xvc2U6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzY3JvbGxhYmxlOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCduYXZiYXInKSBuYXZiYXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdwcmV2QnRuJykgcHJldkJ0bjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ25leHRCdG4nKSBuZXh0QnRuOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5rYmFyJykgaW5rYmFyOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWw+O1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBhY3RpdmVJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcblxuICAgIHRhYnM6IFRhYlBhbmVsW107XG5cbiAgICBfYWN0aXZlSW5kZXg6IG51bWJlcjtcblxuICAgIHByZXZlbnRBY3RpdmVJbmRleFByb3BhZ2F0aW9uOiBib29sZWFuO1xuXG4gICAgdGFiQ2hhbmdlZDogYm9vbGVhbjtcblxuICAgIGJhY2t3YXJkSXNEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3J3YXJkSXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmluaXRUYWJzKCk7XG5cbiAgICAgICAgdGhpcy50YWJQYW5lbHMuY2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRUYWJzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFiQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmtCYXIoKTtcbiAgICAgICAgICAgIHRoaXMudGFiQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFRhYnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGFiOiBUYWJQYW5lbCA9IHRoaXMuZmluZFNlbGVjdGVkVGFiKCk7XG4gICAgICAgIGlmICghc2VsZWN0ZWRUYWIgJiYgdGhpcy50YWJzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT0gbnVsbCAmJiB0aGlzLnRhYnMubGVuZ3RoID4gdGhpcy5hY3RpdmVJbmRleClcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNbdGhpcy5hY3RpdmVJbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMudGFic1swXS5zZWxlY3RlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMudGFiQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9wZW4oZXZlbnQ6IEV2ZW50LCB0YWI6IFRhYlBhbmVsKSB7XG4gICAgICAgIGlmICh0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRhYi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkVGFiOiBUYWJQYW5lbCA9IHRoaXMuZmluZFNlbGVjdGVkVGFiKCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRhYi5zZWxlY3RlZCA9IGZhbHNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudGFiQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB0YWIuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkVGFiSW5kZXggPSB0aGlzLmZpbmRUYWJJbmRleCh0YWIpO1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50QWN0aXZlSW5kZXhQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoc2VsZWN0ZWRUYWJJbmRleCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpbmRleDogc2VsZWN0ZWRUYWJJbmRleH0pO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcihzZWxlY3RlZFRhYkluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKGV2ZW50OiBFdmVudCwgdGFiOiBUYWJQYW5lbCkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5maW5kVGFiSW5kZXgodGFiKSxcbiAgICAgICAgICAgICAgICBjbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlVGFiKHRhYik7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlVGFiKHRhYik7XG4gICAgICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuZmluZFRhYkluZGV4KHRhYilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY2xvc2VUYWIodGFiOiBUYWJQYW5lbCkge1xuICAgICAgICBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhYi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy50YWJDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRhYi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCB0YWJQYW5lbCA9IHRoaXMudGFic1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoIXRhYlBhbmVsLmNsb3NlZCYmIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0YWJQYW5lbC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRhYi5jbG9zZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGZpbmRTZWxlY3RlZFRhYigpIHtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tpXS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhYnNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZmluZFRhYkluZGV4KHRhYjogVGFiUGFuZWwpIHtcbiAgICAgICAgbGV0IGluZGV4ID0gLTE7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYnNbaV0gPT0gdGFiKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50wqB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgYWN0aXZlSW5kZXgodmFsOm51bWJlcikge1xuICAgICAgICB0aGlzLl9hY3RpdmVJbmRleCA9IHZhbDtcbiAgICAgICAgaWYgKHRoaXMucHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucHJldmVudEFjdGl2ZUluZGV4UHJvcGFnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmxlbmd0aCAmJiB0aGlzLl9hY3RpdmVJbmRleCAhPSBudWxsICYmIHRoaXMudGFicy5sZW5ndGggPiB0aGlzLl9hY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5maW5kU2VsZWN0ZWRUYWIoKS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YWJzW3RoaXMuX2FjdGl2ZUluZGV4XS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnRhYkNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcih2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlSW5rQmFyKCkge1xuICAgICAgICBsZXQgdGFiSGVhZGVyID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQsICdsaS5wLWhpZ2hsaWdodCcpO1xuICAgICAgICB0aGlzLmlua2Jhci5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aCh0YWJIZWFkZXIpICsgJ3B4JztcbiAgICAgICAgdGhpcy5pbmtiYXIubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gIERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRhYkhlYWRlcikubGVmdCAtIERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQpLmxlZnQgKyAncHgnO1xuICAgIH1cblxuICAgIHVwZGF0ZVNjcm9sbEJhcihpbmRleCkge1xuICAgICAgICBsZXQgdGFiSGVhZGVyID0gdGhpcy5uYXZiYXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpbmRleF07XG4gICAgICAgIHRhYkhlYWRlci5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSlcbiAgICB9XG5cbiAgICB1cGRhdGVCdXR0b25TdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFdpZHRoIH0gPSBjb250ZW50O1xuICAgICAgICBjb25zdCB3aWR0aCA9IERvbUhhbmRsZXIuZ2V0V2lkdGgoY29udGVudCk7XG5cbiAgICAgICAgdGhpcy5iYWNrd2FyZElzRGlzYWJsZWQgPSBzY3JvbGxMZWZ0ID09PSAwO1xuICAgICAgICB0aGlzLmZvcndhcmRJc0Rpc2FibGVkID0gc2Nyb2xsTGVmdCA9PT0gc2Nyb2xsV2lkdGggLSB3aWR0aDtcbiAgICB9XG5cbiAgICBvblNjcm9sbChldmVudCkge1xuICAgICAgICB0aGlzLnNjcm9sbGFibGUgJiYgdGhpcy51cGRhdGVCdXR0b25TdGF0ZSgpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZ2V0VmlzaWJsZUJ1dHRvbldpZHRocygpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLnByZXZCdG4/Lm5hdGl2ZUVsZW1lbnQsIHRoaXMubmV4dEJ0bj8ubmF0aXZlRWxlbWVudF0ucmVkdWNlKChhY2MsIGVsKSA9PiBlbCA/IGFjYyArIERvbUhhbmRsZXIuZ2V0V2lkdGgoZWwpIDogYWNjLCAwKTtcbiAgICB9XG5cbiAgICBuYXZCYWNrd2FyZCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB3aWR0aCA9IERvbUhhbmRsZXIuZ2V0V2lkdGgoY29udGVudCkgLSB0aGlzLmdldFZpc2libGVCdXR0b25XaWR0aHMoKTtcbiAgICAgICAgY29uc3QgcG9zID0gY29udGVudC5zY3JvbGxMZWZ0IC0gd2lkdGg7XG4gICAgICAgIGNvbnRlbnQuc2Nyb2xsTGVmdCA9IHBvcyA8PSAwID8gMCA6IHBvcztcbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKCkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gRG9tSGFuZGxlci5nZXRXaWR0aChjb250ZW50KSAtIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbldpZHRocygpO1xuICAgICAgICBjb25zdCBwb3MgPSBjb250ZW50LnNjcm9sbExlZnQgKyB3aWR0aDtcbiAgICAgICAgY29uc3QgbGFzdFBvcyA9IGNvbnRlbnQuc2Nyb2xsV2lkdGggLSB3aWR0aDtcblxuICAgICAgICBjb250ZW50LnNjcm9sbExlZnQgPSBwb3MgPj0gbGFzdFBvcyA/IGxhc3RQb3MgOiBwb3M7XG4gICAgfVxufVxuXG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxTaGFyZWRNb2R1bGUsVG9vbHRpcE1vZHVsZSxSaXBwbGVNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtUYWJWaWV3LFRhYlBhbmVsLFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVGFiVmlldyxUYWJQYW5lbF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiVmlld01vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tag/primeng-tag.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tag/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tag/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10YWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdGFnL3ByaW1lbmctdGFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tag/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tag/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tag/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tag';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90YWcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFnJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tag/tag.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tag/tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tag/tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Tag {
+    containerClass() {
+        return {
+            'p-tag p-component': true,
+            'p-tag-info': this.severity === 'info',
+            'p-tag-success': this.severity === 'success',
+            'p-tag-warning': this.severity === 'warning',
+            'p-tag-danger': this.severity === 'danger',
+            'p-tag-rounded': this.rounded
+        };
+    }
+}
+Tag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Tag.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tag, selector: "p-tag", inputs: { styleClass: "styleClass", style: "style", severity: "severity", value: "value", icon: "icon", rounded: "rounded" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, isInline: true, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tag', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }] } });
+export class TagModule {
+}
+TagModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TagModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, declarations: [Tag], imports: [CommonModule], exports: [Tag] });
+TagModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tag],
+                    declarations: [Tag]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RhZy90YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBa0IvQyxNQUFNLE9BQU8sR0FBRztJQWVaLGNBQWM7UUFDVixPQUFPO1lBQ0gsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNO1lBQ3RDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFDNUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztZQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTztTQUNoQyxDQUFDO0lBQ04sQ0FBQzs7Z0dBeEJRLEdBQUc7b0ZBQUgsR0FBRyxrTkFkRjs7Ozs7O0tBTVQ7MkZBUVEsR0FBRztrQkFoQmYsU0FBUzsrQkFDSSxPQUFPLFlBQ1A7Ozs7OztLQU1ULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2Qjs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLOztBQW9CVixNQUFNLE9BQU8sU0FBUzs7c0dBQVQsU0FBUzt1R0FBVCxTQUFTLGlCQWhDVCxHQUFHLGFBNEJGLFlBQVksYUE1QmIsR0FBRzt1R0FnQ0gsU0FBUyxZQUpULENBQUMsWUFBWSxDQUFDOzJGQUlkLFNBQVM7a0JBTHJCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0JBQ2QsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRhZycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC10YWctaWNvblwiIFtuZ0NsYXNzXT1cImljb25cIiAqbmdJZj1cImljb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdGFnLXZhbHVlXCI+e3t2YWx1ZX19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RhZy5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUYWcge1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHNldmVyaXR5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcm91bmRlZDogYm9vbGVhbjtcblxuXG4gICAgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC10YWcgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtdGFnLWluZm8nOiB0aGlzLnNldmVyaXR5ID09PSAnaW5mbycsXG4gICAgICAgICAgICAncC10YWctc3VjY2Vzcyc6IHRoaXMuc2V2ZXJpdHkgPT09ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdwLXRhZy13YXJuaW5nJzogdGhpcy5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAgICAgJ3AtdGFnLWRhbmdlcic6IHRoaXMuc2V2ZXJpdHkgPT09ICdkYW5nZXInLFxuICAgICAgICAgICAgJ3AtdGFnLXJvdW5kZWQnOiB0aGlzLnJvdW5kZWRcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RhZ10sXG4gICAgZGVjbGFyYXRpb25zOiBbVGFnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWdNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/terminal/primeng-terminal.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/terminal/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/terminal/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10ZXJtaW5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90ZXJtaW5hbC9wcmltZW5nLXRlcm1pbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/terminal/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/terminal/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/terminal/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+export * from './terminal';
+export * from './terminalservice';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90ZXJtaW5hbC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rlcm1pbmFsJztcbmV4cG9ydCAqIGZyb20gJy4vdGVybWluYWxzZXJ2aWNlJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/terminal/terminal.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/terminal/terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/terminal/terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,112 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i0 from "@angular/core";
+import * as i1 from "./terminalservice";
+import * as i2 from "@angular/common";
+import * as i3 from "@angular/forms";
+export class Terminal {
+    constructor(el, terminalService, cd) {
+        this.el = el;
+        this.terminalService = terminalService;
+        this.cd = cd;
+        this.commands = [];
+        this.subscription = terminalService.responseHandler.subscribe(response => {
+            this.commands[this.commands.length - 1].response = response;
+            this.commandProcessed = true;
+        });
+    }
+    ngAfterViewInit() {
+        this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];
+    }
+    ngAfterViewChecked() {
+        if (this.commandProcessed) {
+            this.container.scrollTop = this.container.scrollHeight;
+            this.commandProcessed = false;
+        }
+    }
+    set response(value) {
+        if (value) {
+            this.commands[this.commands.length - 1].response = value;
+            this.commandProcessed = true;
+        }
+    }
+    handleCommand(event) {
+        if (event.keyCode == 13) {
+            this.commands.push({ text: this.command });
+            this.terminalService.sendCommand(this.command);
+            this.command = '';
+        }
+    }
+    focus(element) {
+        element.focus();
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Terminal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, deps: [{ token: i0.ElementRef }, { token: i1.TerminalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Terminal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Terminal, selector: "p-terminal", inputs: { welcomeMessage: "welcomeMessage", prompt: "prompt", style: "style", styleClass: "styleClass", response: "response" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-terminal', template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TerminalService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { welcomeMessage: [{
+                type: Input
+            }], prompt: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], response: [{
+                type: Input
+            }] } });
+export class TerminalModule {
+}
+TerminalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TerminalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, declarations: [Terminal], imports: [CommonModule, FormsModule], exports: [Terminal] });
+TerminalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, imports: [[CommonModule, FormsModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FormsModule],
+                    exports: [Terminal],
+                    declarations: [Terminal]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdGVybWluYWwvdGVybWluYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQTBDLEtBQUssRUFBWSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7OztBQTZCdkMsTUFBTSxPQUFPLFFBQVE7SUFvQmpCLFlBQW1CLEVBQWMsRUFBUyxlQUFnQyxFQUFTLEVBQXFCO1FBQXJGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQVZ4RyxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBV2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQ3RCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFvQjtRQUN0QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7O3FHQTlEUSxRQUFRO3lGQUFSLFFBQVEseU5BdkJQOzs7Ozs7Ozs7Ozs7Ozs7S0FlVDsyRkFRUSxRQUFRO2tCQXpCcEIsU0FBUzsrQkFDSSxZQUFZLFlBQ1o7Ozs7Ozs7Ozs7Ozs7OztLQWVULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjsrSkFJUSxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkErQkYsUUFBUTtzQkFEWCxLQUFLOztBQWlDVixNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQXZFZCxRQUFRLGFBbUVQLFlBQVksRUFBQyxXQUFXLGFBbkV6QixRQUFROzRHQXVFUixjQUFjLFlBSmQsQ0FBQyxZQUFZLEVBQUMsV0FBVyxDQUFDOzJGQUkxQixjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxXQUFXLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEFmdGVyVmlld0luaXQsQWZ0ZXJWaWV3Q2hlY2tlZCxPbkRlc3Ryb3ksSW5wdXQsRWxlbWVudFJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge1Rlcm1pbmFsU2VydmljZX0gZnJvbSAnLi90ZXJtaW5hbHNlcnZpY2UnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259ICAgZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10ZXJtaW5hbCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCIncC10ZXJtaW5hbCBwLWNvbXBvbmVudCdcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKGNsaWNrKT1cImZvY3VzKGluKVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIndlbGNvbWVNZXNzYWdlXCI+e3t3ZWxjb21lTWVzc2FnZX19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10ZXJtaW5hbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tbWFuZCBvZiBjb21tYW5kc1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdGVybWluYWwtcHJvbXB0XCI+e3twcm9tcHR9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRlcm1pbmFsLWNvbW1hbmRcIj57e2NvbW1hbmQudGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10ZXJtaW5hbC1yZXNwb25zZVwiPnt7Y29tbWFuZC5yZXNwb25zZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRlcm1pbmFsLXByb21wdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdGVybWluYWwtY29udGVudC1wcm9tcHRcIj57e3Byb21wdH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaW4gdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNvbW1hbmRcIiBjbGFzcz1cInAtdGVybWluYWwtaW5wdXRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5ZG93bik9XCJoYW5kbGVDb21tYW5kKCRldmVudClcIiBhdXRvZm9jdXM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3Rlcm1pbmFsLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRlcm1pbmFsIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCxBZnRlclZpZXdDaGVja2VkLE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSB3ZWxjb21lTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJvbXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgY29tbWFuZHM6IGFueVtdID0gW107XG5cbiAgICBjb21tYW5kOiBzdHJpbmc7XG5cbiAgICBjb250YWluZXI6IEVsZW1lbnQ7XG5cbiAgICBjb21tYW5kUHJvY2Vzc2VkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB0ZXJtaW5hbFNlcnZpY2U6IFRlcm1pbmFsU2VydmljZSwgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRlcm1pbmFsU2VydmljZS5yZXNwb25zZUhhbmRsZXIuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZHNbdGhpcy5jb21tYW5kcy5sZW5ndGggLSAxXS5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IERvbUhhbmRsZXIuZmluZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICcucC10ZXJtaW5hbCcpWzBdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tbWFuZFByb2Nlc3NlZCkge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc2Nyb2xsVG9wID0gdGhpcy5jb250YWluZXIuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kUHJvY2Vzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCByZXNwb25zZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kc1t0aGlzLmNvbW1hbmRzLmxlbmd0aCAtIDFdLnJlc3BvbnNlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmRQcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ29tbWFuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykge1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kcy5wdXNoKHt0ZXh0OiB0aGlzLmNvbW1hbmR9KTtcbiAgICAgICAgICAgIHRoaXMudGVybWluYWxTZXJ2aWNlLnNlbmRDb21tYW5kKHRoaXMuY29tbWFuZCk7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmQgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxGb3Jtc01vZHVsZV0sXG4gICAgZXhwb3J0czogW1Rlcm1pbmFsXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUZXJtaW5hbF1cbn0pXG5leHBvcnQgY2xhc3MgVGVybWluYWxNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/terminal/terminalservice.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/terminal/terminalservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/terminal/terminalservice.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+import { Injectable } from '@angular/core';
+import { Subject } from 'rxjs';
+import * as i0 from "@angular/core";
+export class TerminalService {
+    constructor() {
+        this.commandSource = new Subject();
+        this.responseSource = new Subject();
+        this.commandHandler = this.commandSource.asObservable();
+        this.responseHandler = this.responseSource.asObservable();
+    }
+    sendCommand(command) {
+        if (command) {
+            this.commandSource.next(command);
+        }
+    }
+    sendResponse(response) {
+        if (response) {
+            this.responseSource.next(response);
+        }
+    }
+}
+TerminalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TerminalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, decorators: [{
+            type: Injectable
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWxzZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Rlcm1pbmFsL3Rlcm1pbmFsc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBR1ksa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUUvQyxtQkFBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsb0JBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBYXhEO0lBWEcsV0FBVyxDQUFDLE9BQWU7UUFDdkIsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0I7UUFDekIsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7OzRHQWxCUSxlQUFlO2dIQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlcm1pbmFsU2VydmljZSB7XG4gICAgXG4gICAgcHJpdmF0ZSBjb21tYW5kU291cmNlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgcmVzcG9uc2VTb3VyY2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgXG4gICAgY29tbWFuZEhhbmRsZXIgPSB0aGlzLmNvbW1hbmRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgcmVzcG9uc2VIYW5kbGVyID0gdGhpcy5yZXNwb25zZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICBcbiAgICBzZW5kQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGNvbW1hbmQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZFNvdXJjZS5uZXh0KGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHNlbmRSZXNwb25zZShyZXNwb25zZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zZVNvdXJjZS5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tieredmenu/primeng-tieredmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tieredmenu/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tieredmenu/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10aWVyZWRtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RpZXJlZG1lbnUvcHJpbWVuZy10aWVyZWRtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tieredmenu/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tieredmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tieredmenu/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tieredmenu';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90aWVyZWRtZW51L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RpZXJlZG1lbnUnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tieredmenu/tieredmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tieredmenu/tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tieredmenu/tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,488 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, Output, EventEmitter } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';
+import { RouterModule } from '@angular/router';
+import { RippleModule } from 'primeng/ripple';
+import { animate, style, transition, trigger } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/tooltip";
+import * as i3 from "primeng/ripple";
+import * as i4 from "@angular/router";
+import * as i5 from "primeng/api";
+export class TieredMenuSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.keydownItem = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay || this.popup) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    onItemKeyDown(event, item) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowRight':
+                if (item.items) {
+                    this.activeItem = item;
+                    if (this.root) {
+                        this.bindDocumentClickListener();
+                    }
+                    setTimeout(() => {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }, 50);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+        this.keydownItem.emit({
+            originalEvent: event,
+            element: listItem
+        });
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onChildItemKeyDown(event) {
+        if (event.originalEvent.key === 'ArrowLeft') {
+            this.activeItem = null;
+            if (this.root) {
+                this.unbindDocumentClickListener();
+            }
+            event.element.parentElement.parentElement.parentElement.children[0].focus();
+        }
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+TieredMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: { item: "item", root: "root", autoDisplay: "autoDisplay", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", popup: "popup", parentActive: "parentActive" }, outputs: { leafClick: "leafClick", keydownItem: "keydownItem" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tieredMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], keydownItem: [{
+                type: Output
+            }] } });
+export class TieredMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.parentActive = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.container, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.parentActive = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    onLeafClick() {
+        if (this.popup) {
+            this.hide();
+        }
+        this.unbindDocumentClickListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault && this.popup) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+TieredMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenu, selector: "p-tieredMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"], components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tieredMenu', template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: i5.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+export class TieredMenuModule {
+}
+TieredMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TieredMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, declarations: [TieredMenu, TieredMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [TieredMenu, RouterModule, TooltipModule] });
+TieredMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [TieredMenu, RouterModule, TooltipModule],
+                    declarations: [TieredMenu, TieredMenuSub]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90aWVyZWRtZW51L3RpZXJlZG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUEwQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pMLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQXFDaEQsTUFBTSxPQUFPLGFBQWE7SUF5Q3RCLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFVLEVBQXFCO1FBQXpFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFqQ25GLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFFM0IsZUFBVSxHQUFXLENBQUMsQ0FBQztRQW1CdEIsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNOUQsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUFJK0QsQ0FBQztJ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QUFZLEVBQUMsYUFBYSxDQUFDLEVBQzFDLFlBQVksRUFBQyxhQUFhOzJGQUd0QyxnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsYUFBYSxDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUMsWUFBWSxFQUFDLGFBQWEsQ0FBQztvQkFDaEQsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFDLGFBQWEsQ0FBQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBPbkRlc3Ryb3ksQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlciwgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IE1lbnVJdGVtLCBPdmVybGF5U2VydmljZSwgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSaXBwbGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRpZXJlZE1lbnVTdWInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1bCBbbmdDbGFzc109XCJ7J3Atc3VibWVudS1saXN0JzogIXJvb3R9XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIFtuZ0Zvck9mXT1cIihyb290ID8gaXRlbSA6IGl0ZW0uaXRlbXMpXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY2hpbGQuc2VwYXJhdG9yXCIgY2xhc3M9XCJwLW1lbnUtc2VwYXJhdG9yXCIgW25nQ2xhc3NdPVwieydwLWhpZGRlbic6IGNoaWxkLnZpc2libGUgPT09IGZhbHNlfVwiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFjaGlsZC5zZXBhcmF0b3JcIiAjbGlzdEl0ZW0gW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtJzp0cnVlLCAncC1tZW51aXRlbS1hY3RpdmUnOiBjaGlsZCA9PT0gYWN0aXZlSXRlbSwgJ3AtaGlkZGVuJzogY2hpbGQudmlzaWJsZSA9PT0gZmFsc2V9XCIgW25nU3R5bGVdPVwiY2hpbGQuc3R5bGVcIiBbY2xhc3NdPVwiY2hpbGQuc3R5bGVDbGFzc1wiIHBUb29sdGlwIFt0b29sdGlwT3B0aW9uc109XCJjaGlsZC50b29sdGlwT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiFjaGlsZC5yb3V0ZXJMaW5rXCIgKGtleWRvd24pPVwib25JdGVtS2V5RG93bigkZXZlbnQsIGNoaWxkKVwiIFthdHRyLmhyZWZdPVwiY2hpbGQudXJsXCIgW2F0dHIuZGF0YS1hdXRvbWF0aW9uaWRdPVwiY2hpbGQuYXV0b21hdGlvbklkXCIgW2F0dHIudGFyZ2V0XT1cImNoaWxkLnRhcmdldFwiIFthdHRyLnRpdGxlXT1cImNoaWxkLnRpdGxlXCIgW2F0dHIuaWRdPVwiY2hpbGQuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQsIGNoaWxkKVwiIChtb3VzZWVudGVyKT1cIm9uSXRlbU1vdXNlRW50ZXIoJGV2ZW50LGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtLWxpbmsnOnRydWUsJ3AtZGlzYWJsZWQnOmNoaWxkLmRpc2FibGVkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiY2hpbGQuZGlzYWJsZWQgPyBudWxsIDogJzAnXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpdGVtLml0ZW1zICE9IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0gPT09IGFjdGl2ZUl0ZW1cIiBwUmlwcGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLWljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIiBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiAqbmdJZj1cImNoaWxkLmVzY2FwZSAhPT0gZmFsc2U7IGVsc2UgaHRtbExhYmVsXCI+e3tjaGlsZC5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNoaWxkLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3VibWVudS1pY29uIHBpIHBpLWFuZ2xlLXJpZ2h0XCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImNoaWxkLnJvdXRlckxpbmtcIiAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudCwgY2hpbGQpXCIgW3JvdXRlckxpbmtdPVwiY2hpbGQucm91dGVyTGlua1wiIFthdHRyLmRhdGEtYXV0b21hdGlvbmlkXT1cImNoaWxkLmF1dG9tYXRpb25JZFwiIFtxdWVyeVBhcmFtc109XCJjaGlsZC5xdWVyeVBhcmFtc1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIidwLW1lbnVpdGVtLWxpbmstYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJjaGlsZC5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc3x8e2V4YWN0OmZhbHNlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiY2hpbGQudGFyZ2V0XCIgW2F0dHIudGl0bGVdPVwiY2hpbGQudGl0bGVcIiBbYXR0ci5pZF09XCJjaGlsZC5pZFwiIFthdHRyLnRhYmluZGV4XT1cImNoaWxkLmRpc2FibGVkID8gbnVsbCA6ICcwJ1wiIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBjaGlsZClcIiAobW91c2VlbnRlcik9XCJvbkl0ZW1Nb3VzZUVudGVyKCRldmVudCxjaGlsZClcIiAgW25nQ2xhc3NdPVwieydwLW1lbnVpdGVtLWxpbmsnOnRydWUsJ3AtZGlzYWJsZWQnOmNoaWxkLmRpc2FibGVkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwiY2hpbGQuZnJhZ21lbnRcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJjaGlsZC5xdWVyeVBhcmFtc0hhbmRsaW5nXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiY2hpbGQucHJlc2VydmVGcmFnbWVudFwiIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiY2hpbGQuc2tpcExvY2F0aW9uQ2hhbmdlXCIgW3JlcGxhY2VVcmxdPVwiY2hpbGQucmVwbGFjZVVybFwiIFtzdGF0ZV09XCJjaGlsZC5zdGF0ZVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiIFtuZ0NsYXNzXT1cImNoaWxkLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWVudWl0ZW0tdGV4dFwiICpuZ0lmPVwiY2hpbGQuZXNjYXBlICE9PSBmYWxzZTsgZWxzZSBodG1sUm91dGVMYWJlbFwiPnt7Y2hpbGQubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaHRtbFJvdXRlTGFiZWw+PHNwYW4gY2xhc3M9XCJwLW1lbnVpdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImNoaWxkLmxhYmVsXCI+PC9zcGFuPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtc3VibWVudS1pY29uIHBpIHBpLWFuZ2xlLXJpZ2h0XCIgKm5nSWY9XCJjaGlsZC5pdGVtc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8cC10aWVyZWRNZW51U3ViIChrZXlkb3duSXRlbSk9XCJvbkNoaWxkSXRlbUtleURvd24oJGV2ZW50KVwiIFtwYXJlbnRBY3RpdmVdPVwiY2hpbGQgPT09IGFjdGl2ZUl0ZW1cIiBbaXRlbV09XCJjaGlsZFwiICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiBbbW9iaWxlQWN0aXZlXT1cIm1vYmlsZUFjdGl2ZVwiIFthdXRvRGlzcGxheV09XCJhdXRvRGlzcGxheVwiIChsZWFmQ2xpY2spPVwib25MZWFmQ2xpY2soKVwiIFtwb3B1cF09XCJwb3B1cFwiPjwvcC10aWVyZWRNZW51U3ViPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3VsPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaWVyZWRNZW51U3ViIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIGl0ZW06IE1lbnVJdGVtO1xuXG4gICAgQElucHV0KCkgcm9vdDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGF1dG9EaXNwbGF5OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgbW9iaWxlQWN0aXZlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcG9wdXA6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBnZXQgcGFyZW50QWN0aXZlKCk6Ym9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEFjdGl2ZTtcbiAgICB9XG4gICAgc2V0IHBhcmVudEFjdGl2ZSh2YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50QWN0aXZlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBPdXRwdXQoKSBsZWFmQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIGtleWRvd25JdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIF9wYXJlbnRBY3RpdmU6IGJvb2xlYW47XG5cbiAgICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IGFueTtcblxuICAgIG1lbnVIb3ZlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWl0ZW0udXJsICYmICFpdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5jb21tYW5kKSB7XG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW0gJiYgaXRlbSA9PT0gdGhpcy5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5vbkxlYWZDbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtTW91c2VFbnRlcihldmVudCwgaXRlbSkge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCB8fCB0aGlzLm1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW0gfHwgdGhpcy5hdXRvRGlzcGxheSB8fCB0aGlzLnBvcHVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGVhZkNsaWNrKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sZWFmQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIG9uSXRlbUtleURvd24oZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgbGV0IGxpc3RJdGVtID0gZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHZhciBuZXh0SXRlbSA9IHRoaXMuZmluZE5leHRJdGVtKGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEl0ZW0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHZhciBwcmV2SXRlbSA9IHRoaXMuZmluZFByZXZJdGVtKGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldkl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmNoaWxkcmVuWzFdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2V5ZG93bkl0ZW0uZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIGVsZW1lbnQ6IGxpc3RJdGVtXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbmROZXh0SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBuZXh0SXRlbSA9IGl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmIChuZXh0SXRlbSlcbiAgICAgICAgICAgIHJldHVybiBEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1kaXNhYmxlZCcpIHx8ICFEb21IYW5kbGVyLmhhc0NsYXNzKG5leHRJdGVtLCAncC1tZW51aXRlbScpID8gdGhpcy5maW5kTmV4dEl0ZW0obmV4dEl0ZW0pIDogbmV4dEl0ZW07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZpbmRQcmV2SXRlbShpdGVtKSB7XG4gICAgICAgIGxldCBwcmV2SXRlbSA9IGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZztcblxuICAgICAgICBpZiAocHJldkl0ZW0pXG4gICAgICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtZGlzYWJsZWQnKSB8fCAhRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2SXRlbSwgJ3AtbWVudWl0ZW0nKSA/IHRoaXMuZmluZFByZXZJdGVtKHByZXZJdGVtKSA6IHByZXZJdGVtO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbkNoaWxkSXRlbUtleURvd24oZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LmVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWwgJiYgIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10aWVyZWRNZW51JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC10aWVyZWRtZW51IHAtY29tcG9uZW50Jzp0cnVlLCAncC10aWVyZWRtZW51LW92ZXJsYXknOnBvcHVwfVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbQG92ZXJsYXlBbmltYXRpb25dPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnN9fVwiIFtALmRpc2FibGVkXT1cInBvcHVwICE9PSB0cnVlXCJcbiAgICAgICAgICAgIChAb3ZlcmxheUFuaW1hdGlvbi5zdGFydCk9XCJvbk92ZXJsYXlBbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEBvdmVybGF5QW5pbWF0aW9uLmRvbmUpPVwib25PdmVybGF5QW5pbWF0aW9uRW5kKCRldmVudClcIiAqbmdJZj1cIiFwb3B1cCB8fCB2aXNpYmxlXCI+XG4gICAgICAgICAgICA8cC10aWVyZWRNZW51U3ViIFtpdGVtXT1cIm1vZGVsXCIgcm9vdD1cInJvb3RcIiBbcGFyZW50QWN0aXZlXT1cInBhcmVudEFjdGl2ZVwiIFtiYXNlWkluZGV4XT1cImJhc2VaSW5kZXhcIiBbYXV0b1pJbmRleF09XCJhdXRvWkluZGV4XCIgKGxlYWZDbGljayk9XCJvbkxlYWZDbGljaygpXCJcbiAgICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXldPVwiYXV0b0Rpc3BsYXlcIiBbcG9wdXBdPVwicG9wdXBcIj48L3AtdGllcmVkTWVudVN1Yj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ292ZXJsYXlBbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWSgwLjgpJ30pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7c2hvd1RyYW5zaXRpb25QYXJhbXN9fScpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3toaWRlVHJhbnNpdGlvblBhcmFtc319Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi90aWVyZWRtZW51LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRpZXJlZE1lbnUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbW9kZWw6IE1lbnVJdGVtW107XG5cbiAgICBASW5wdXQoKSBwb3B1cDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgYXV0b1pJbmRleDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgYXV0b0Rpc3BsYXk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcblxuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xcyBsaW5lYXInO1xuXG4gICAgcGFyZW50QWN0aXZlOiBib29sZWFuO1xuXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcblxuICAgIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgcHJldmVudERvY3VtZW50RGVmYXVsdDogYm9vbGVhbjtcblxuICAgIHNjcm9sbEhhbmRsZXI6IGFueTtcblxuICAgIHRhcmdldDogYW55O1xuXG4gICAgdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UpIHt9XG5cbiAgICB0b2dnbGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSlcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNob3coZXZlbnQpO1xuXG4gICAgICAgIHRoaXMucHJldmVudERvY3VtZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2hvdyhldmVudCkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMucGFyZW50QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmVudERvY3VtZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGV2ZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uVG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFic29sdXRlUG9zaXRpb24odGhpcy5jb250YWluZXIsIHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKGV2ZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBlbmRPdmVybGF5KCkge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8gPT09ICdib2R5JylcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVPdmVybGF5QXBwZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5hcHBlbmRUbykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVPblRvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtZW51JywgdGhpcy5jb250YWluZXIsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnLnpJbmRleC5tZW51KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhcmVudEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBvbkxlYWZDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudFRhcmdldDogYW55ID0gdGhpcy5lbCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50IDogJ2RvY3VtZW50JztcblxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudFRhcmdldCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ICYmIHRoaXMucG9wdXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50RG9jdW1lbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMudGFyZ2V0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk92ZXJsYXlIaWRlKCkge1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnByZXZlbnREb2N1bWVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZXN0b3JlT3ZlcmxheUFwcGVuZCgpO1xuICAgICAgICAgICAgdGhpcy5vbk92ZXJsYXlIaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFJvdXRlck1vZHVsZSxSaXBwbGVNb2R1bGUsVG9vbHRpcE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RpZXJlZE1lbnUsUm91dGVyTW9kdWxlLFRvb2x0aXBNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1RpZXJlZE1lbnUsVGllcmVkTWVudVN1Yl1cbn0pXG5leHBvcnQgY2xhc3MgVGllcmVkTWVudU1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/timeline/primeng-timeline.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/timeline/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/timeline/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10aW1lbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90aW1lbGluZS9wcmltZW5nLXRpbWVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/timeline/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/timeline/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/timeline/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './timeline';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90aW1lbGluZS9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90aW1lbGluZSc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/timeline/timeline.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/timeline/timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/timeline/timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,119 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Timeline {
+    constructor(el) {
+        this.el = el;
+        this.align = 'left';
+        this.layout = 'vertical';
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'opposite':
+                    this.oppositeTemplate = item.template;
+                    break;
+                case 'marker':
+                    this.markerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Timeline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Timeline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Timeline, selector: "p-timeline", inputs: { value: "value", style: "style", styleClass: "styleClass", align: "align", layout: "layout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-timeline', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class TimelineModule {
+}
+TimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, declarations: [Timeline], imports: [CommonModule], exports: [Timeline, SharedModule] });
+TimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Timeline, SharedModule],
+                    declarations: [Timeline]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdGltZWxpbmUvdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQixlQUFlLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQzs7O0FBdUNyRSxNQUFNLE9BQU8sUUFBUTtJQW9CakIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFaekIsVUFBSyxHQUFXLE1BQU0sQ0FBQztRQUV2QixXQUFNLEdBQVcsVUFBVSxDQUFDO0lBVUEsQ0FBQztJQUV0QyxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDbkIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDekMsTUFBTTtnQkFFTixLQUFLLFVBQVU7b0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzFDLE1BQU07Z0JBRU4sS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxR0ExQ1EsUUFBUTt5RkFBUixRQUFRLDJOQVlBLGFBQWEsNkJBL0NwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkJUOzJGQVFRLFFBQVE7a0JBckNwQixTQUFTOytCQUNJLFlBQVksWUFDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkJULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpR0FJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQXVDbEMsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkFuRGQsUUFBUSxhQStDUCxZQUFZLGFBL0NiLFFBQVEsRUFnREcsWUFBWTs0R0FHdkIsY0FBYyxZQUpkLENBQUMsWUFBWSxDQUFDLEVBQ0gsWUFBWTsyRkFHdkIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7b0JBQ2pDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlICxDb21wb25lbnQsIElucHV0LCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QmxvY2thYmxlVUksIFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdGltZWxpbmUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtuZ0NsYXNzXT1cInsncC10aW1lbGluZSBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ3AtdGltZWxpbmUtbGVmdCc6IGFsaWduID09PSAnbGVmdCcsXG4gICAgICAgICAgICAgICAgJ3AtdGltZWxpbmUtcmlnaHQnOiBhbGlnbiA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAncC10aW1lbGluZS10b3AnOiBhbGlnbiA9PT0gJ3RvcCcsXG4gICAgICAgICAgICAgICAgJ3AtdGltZWxpbmUtYm90dG9tJzogYWxpZ24gPT09ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICdwLXRpbWVsaW5lLWFsdGVybmF0ZSc6IGFsaWduID09PSAnYWx0ZXJuYXRlJyxcbiAgICAgICAgICAgICAgICAncC10aW1lbGluZS12ZXJ0aWNhbCc6IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyxcbiAgICAgICAgICAgICAgICAncC10aW1lbGluZS1ob3Jpem9udGFsJzogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCd9XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBldmVudCBvZiB2YWx1ZTsgbGV0IGxhc3Q9bGFzdFwiIGNsYXNzPVwicC10aW1lbGluZS1ldmVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRpbWVsaW5lLWV2ZW50LW9wcG9zaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHBvc2l0ZVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBldmVudH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1zZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcmtlclRlbXBsYXRlOyBlbHNlIG1hcmtlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hcmtlclRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBldmVudH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWFya2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdGltZWxpbmUtZXZlbnQtbWFya2VyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1jb25uZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10aW1lbGluZS1ldmVudC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGV2ZW50fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lbGluZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEJsb2NrYWJsZVVJIHtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhbGlnbjogc3RyaW5nID0gJ2xlZnQnO1xuXG4gICAgQElucHV0KCkgbGF5b3V0OiBzdHJpbmcgPSAndmVydGljYWwnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgb3Bwb3NpdGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG1hcmtlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICAgIGdldEJsb2NrYWJsZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ29wcG9zaXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHBvc2l0ZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21hcmtlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya2VyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVGltZWxpbmUsIFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVGltZWxpbmVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/toast/primeng-toast.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toast/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toast/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10b2FzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b2FzdC9wcmltZW5nLXRvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/toast/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toast/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toast/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './toast';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b2FzdC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90b2FzdCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/toast/toast.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toast/toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toast/toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,389 @@
+import { NgModule, Component, Input, Output, ViewChild, EventEmitter, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { UniqueComponentId } from 'primeng/utils';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/api";
+export class ToastItem {
+    constructor(zone) {
+        this.zone = zone;
+        this.onClose = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        this.initTimeout();
+    }
+    initTimeout() {
+        if (!this.message.sticky) {
+            this.zone.runOutsideAngular(() => {
+                this.timeout = setTimeout(() => {
+                    this.onClose.emit({
+                        index: this.index,
+                        message: this.message
+                    });
+                }, this.message.life || 3000);
+            });
+        }
+    }
+    clearTimeout() {
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+            this.timeout = null;
+        }
+    }
+    onMouseEnter() {
+        this.clearTimeout();
+    }
+    onMouseLeave() {
+        this.initTimeout();
+    }
+    onCloseIconClick(event) {
+        this.clearTimeout();
+        this.onClose.emit({
+            index: this.index,
+            message: this.message
+        });
+        event.preventDefault();
+    }
+    ngOnDestroy() {
+        this.clearTimeout();
+    }
+}
+ToastItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+ToastItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToastItem, selector: "p-toastItem", inputs: { message: "message", index: "index", template: "template", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('messageState', [
+            state('visible', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => *', [
+                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('* => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    height: 0,
+                    opacity: 0,
+                    transform: '{{hideTransformParams}}'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-toastItem',
+                    template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('messageState', [
+                            state('visible', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => *', [
+                                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('* => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    height: 0,
+                                    opacity: 0,
+                                    transform: '{{hideTransformParams}}'
+                                }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { message: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+export class Toast {
+    constructor(messageService, cd, config) {
+        this.messageService = messageService;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.position = 'top-right';
+        this.preventOpenDuplicates = false;
+        this.preventDuplicates = false;
+        this.showTransformOptions = 'translateY(100%)';
+        this.hideTransformOptions = 'translateY(-100%)';
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '250ms ease-in';
+        this.onClose = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {
+            if (messages) {
+                if (messages instanceof Array) {
+                    const filteredMessages = messages.filter(m => this.canAdd(m));
+                    this.add(filteredMessages);
+                }
+                else if (this.canAdd(messages)) {
+                    this.add([messages]);
+                }
+            }
+        });
+        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+            if (key) {
+                if (this.key === key) {
+                    this.messages = null;
+                }
+            }
+            else {
+                this.messages = null;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    add(messages) {
+        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];
+        if (this.preventDuplicates) {
+            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];
+        }
+        this.cd.markForCheck();
+    }
+    canAdd(message) {
+        let allow = this.key === message.key;
+        if (allow && this.preventOpenDuplicates) {
+            allow = !this.containsMessage(this.messages, message);
+        }
+        if (allow && this.preventDuplicates) {
+            allow = !this.containsMessage(this.messagesArchieve, message);
+        }
+        return allow;
+    }
+    containsMessage(collection, message) {
+        if (!collection) {
+            return false;
+        }
+        return collection.find(m => {
+            return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));
+        }) != null;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'message':
+                    this.template = item.template;
+                    break;
+                default:
+                    this.template = item.template;
+                    break;
+            }
+        });
+    }
+    onMessageClose(event) {
+        this.messages.splice(event.index, 1);
+        this.onClose.emit({
+            message: event.message
+        });
+        this.cd.detectChanges();
+    }
+    onAnimationStart(event) {
+        if (event.fromState === 'void') {
+            this.containerViewChild.nativeElement.setAttribute(this.id, '');
+            if (this.autoZIndex) {
+                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            if (this.autoZIndex) {
+                ZIndexUtils.clear(this.containerViewChild.nativeElement);
+            }
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                let breakpointStyle = '';
+                for (let styleProp in this.breakpoints[breakpoint]) {
+                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';
+                }
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-toast[${this.id}] {
+                           ${breakpointStyle}
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+}
+Toast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, deps: [{ token: i3.MessageService }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Toast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toast, selector: "p-toast", inputs: { key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", position: "position", preventOpenDuplicates: "preventOpenDuplicates", preventDuplicates: "preventDuplicates", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", breakpoints: "breakpoints" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, isInline: true, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"], components: [{ type: ToastItem, selector: "p-toastItem", inputs: ["message", "index", "template", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClose"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('toastAnimation', [
+            transition(':enter, :leave', [
+                query('@*', animateChild())
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toast', template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, animations: [
+                        trigger('toastAnimation', [
+                            transition(':enter, :leave', [
+                                query('@*', animateChild())
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i3.MessageService }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], preventOpenDuplicates: [{
+                type: Input
+            }], preventDuplicates: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ToastModule {
+}
+ToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule], exports: [Toast, SharedModule] });
+ToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Toast, SharedModule],
+                    declarations: [Toast, ToastItem]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBNEQsU0FBUyxFQUFDLFlBQVksRUFBQyxlQUFlLEVBQXVCLHVCQUF1QixFQUE2QixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1UCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHN0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsWUFBWSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBZ0Q1QyxNQUFNLE9BQU8sU0FBUztJQXNCbEIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFOdEIsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBTXZCLENBQUM7SUFFcEMsZUFBZTtRQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29C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O3NCQUFsQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVpQixrQkFBa0I7c0JBQXpDLFNBQVM7dUJBQUMsV0FBVztnQkFFVSxTQUFTO3NCQUF4QyxlQUFlO3VCQUFDLGFBQWE7O0FBb0xsQyxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQXBOWCxLQUFLLEVBaEdMLFNBQVMsYUFnVFIsWUFBWSxFQUFDLFlBQVksYUFoTjFCLEtBQUssRUFpTkUsWUFBWTt5R0FHbkIsV0FBVyxZQUpYLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQyxFQUNwQixZQUFZOzJGQUduQixXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBQyxZQUFZLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBQyxZQUFZLENBQUM7b0JBQzdCLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBQyxTQUFTLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LE9uSW5pdCxBZnRlclZpZXdJbml0LEFmdGVyQ29udGVudEluaXQsT25EZXN0cm95LEVsZW1lbnRSZWYsVmlld0NoaWxkLEV2ZW50RW1pdHRlcixDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFRlbXBsYXRlUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBOZ1pvbmUsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TWVzc2FnZSwgUHJpbWVOR0NvbmZpZ30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtEb21IYW5kbGVyfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQge1ByaW1lVGVtcGxhdGUsU2hhcmVkTW9kdWxlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge01lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1VuaXF1ZUNvbXBvbmVudElkfSBmcm9tICdwcmltZW5nL3V0aWxzJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3RyaWdnZXIsc3RhdGUsc3R5bGUsdHJhbnNpdGlvbixhbmltYXRlLHF1ZXJ5LGFuaW1hdGVDaGlsZCxBbmltYXRpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBaSW5kZXhVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdG9hc3RJdGVtJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW2F0dHIuaWRdPVwibWVzc2FnZS5pZFwiIFtjbGFzc109XCJtZXNzYWdlLnN0eWxlQ2xhc3NcIiBbbmdDbGFzc109XCJbJ3AtdG9hc3QtbWVzc2FnZS0nICsgbWVzc2FnZS5zZXZlcml0eSwgJ3AtdG9hc3QtbWVzc2FnZSddXCIgW0BtZXNzYWdlU3RhdGVdPVwie3ZhbHVlOiAndmlzaWJsZScsIHBhcmFtczoge3Nob3dUcmFuc2Zvcm1QYXJhbXM6IHNob3dUcmFuc2Zvcm1PcHRpb25zLCBoaWRlVHJhbnNmb3JtUGFyYW1zOiBoaWRlVHJhbnNmb3JtT3B0aW9ucywgc2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10b2FzdC1tZXNzYWdlLWNvbnRlbnRcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiAgW25nQ2xhc3NdPVwibWVzc2FnZS5jb250ZW50U3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidwLXRvYXN0LW1lc3NhZ2UtaWNvbiBwaScgKyAobWVzc2FnZS5pY29uID8gJyAnICsgbWVzc2FnZS5pY29uIDogJycpXCIgW25nQ2xhc3NdPVwieydwaS1pbmZvLWNpcmNsZSc6IG1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ2luZm8nLCAncGktZXhjbGFtYXRpb24tdHJpYW5nbGUnOiBtZXNzYWdlLnNldmVyaXR5ID09ICd3YXJuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwaS10aW1lcy1jaXJjbGUnOiBtZXNzYWdlLnNldmVyaXR5ID09ICdlcnJvcicsICdwaS1jaGVjaycgOm1lc3NhZ2Uuc2V2ZXJpdHkgPT0gJ3N1Y2Nlc3MnfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdG9hc3QtbWVzc2FnZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10b2FzdC1zdW1tYXJ5XCI+e3ttZXNzYWdlLnN1bW1hcnl9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdG9hc3QtZGV0YWlsXCI+e3ttZXNzYWdlLmRldGFpbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogbWVzc2FnZX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtdG9hc3QtaWNvbi1jbG9zZSBwLWxpbmtcIiAoY2xpY2spPVwib25DbG9zZUljb25DbGljaygkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwib25DbG9zZUljb25DbGljaygkZXZlbnQpXCIgKm5nSWY9XCJtZXNzYWdlLmNsb3NhYmxlICE9PSBmYWxzZVwiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC10b2FzdC1pY29uLWNsb3NlLWljb24gcGkgcGktdGltZXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ21lc3NhZ2VTdGF0ZScsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2aXNpYmxlJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAne3tzaG93VHJhbnNmb3JtUGFyYW1zfX0nLCBvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nKSwgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3t7aGlkZVRyYW5zZm9ybVBhcmFtc319J1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RJdGVtIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIG1lc3NhZ2U6IE1lc3NhZ2U7XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNmb3JtT3B0aW9uczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zZm9ybU9wdGlvbnM6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICB0aW1lb3V0OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0VGltZW91dCgpO1xuICAgIH1cblxuICAgIGluaXRUaW1lb3V0KCkge1xuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZS5zdGlja3kpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIHRoaXMubWVzc2FnZS5saWZlIHx8IDMwMDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclRpbWVvdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuaW5pdFRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlSWNvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10b2FzdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cIidwLXRvYXN0IHAtY29tcG9uZW50IHAtdG9hc3QtJyArIHBvc2l0aW9uXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPHAtdG9hc3RJdGVtICpuZ0Zvcj1cImxldCBtc2cgb2YgbWVzc2FnZXM7IGxldCBpPWluZGV4XCIgW21lc3NhZ2VdPVwibXNnXCIgW2luZGV4XT1cImlcIiAob25DbG9zZSk9XCJvbk1lc3NhZ2VDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlXCIgQHRvYXN0QW5pbWF0aW9uIChAdG9hc3RBbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCIgKEB0b2FzdEFuaW1hdGlvbi5kb25lKT1cIm9uQW5pbWF0aW9uRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwic2hvd1RyYW5zZm9ybU9wdGlvbnNcIiBbaGlkZVRyYW5zZm9ybU9wdGlvbnNdPVwiaGlkZVRyYW5zZm9ybU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cInNob3dUcmFuc2l0aW9uT3B0aW9uc1wiIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiaGlkZVRyYW5zaXRpb25PcHRpb25zXCI+PC9wLXRvYXN0SXRlbT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ3RvYXN0QW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyLCA6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgcXVlcnkoJ0AqJywgYW5pbWF0ZUNoaWxkKCkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi90b2FzdC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdCBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlckNvbnRlbnRJbml0LE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBrZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGF1dG9aSW5kZXg6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYmFzZVpJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvbjogc3RyaW5nID0gJ3RvcC1yaWdodCc7XG5cbiAgICBASW5wdXQoKSBwcmV2ZW50T3BlbkR1cGxpY2F0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHByZXZlbnREdXBsaWNhdGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNmb3JtT3B0aW9uczogc3RyaW5nID0gJ3RyYW5zbGF0ZVkoMTAwJSknO1xuXG4gICAgQElucHV0KCkgaGlkZVRyYW5zZm9ybU9wdGlvbnM6IHN0cmluZyA9ICd0cmFuc2xhdGVZKC0xMDAlKSc7XG5cbiAgICBASW5wdXQoKSBzaG93VHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICczMDBtcyBlYXNlLW91dCc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcyNTBtcyBlYXNlLWluJztcblxuICAgIEBJbnB1dCgpIGJyZWFrcG9pbnRzOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBtZXNzYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjbGVhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VbXTtcblxuICAgIG1lc3NhZ2VzQXJjaGlldmU6IE1lc3NhZ2VbXTtcblxuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWcpIHt9XG5cbiAgICBzdHlsZUVsZW1lbnQ6IGFueTtcblxuICAgIGlkOiBzdHJpbmcgPSBVbmlxdWVDb21wb25lbnRJZCgpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZU9ic2VydmVyLnN1YnNjcmliZShtZXNzYWdlcyA9PiB7XG4gICAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKG0gPT4gdGhpcy5jYW5BZGQobSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZChmaWx0ZXJlZE1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jYW5BZGQobWVzc2FnZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkKFttZXNzYWdlc10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXJPYnNlcnZlci5zdWJzY3JpYmUoa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5rZXkgPT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkKG1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMgPyBbLi4udGhpcy5tZXNzYWdlcywgLi4ubWVzc2FnZXNdIDogWy4uLm1lc3NhZ2VzXTtcblxuICAgICAgICBpZiAodGhpcy5wcmV2ZW50RHVwbGljYXRlcykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0FyY2hpZXZlID0gdGhpcy5tZXNzYWdlc0FyY2hpZXZlID8gWy4uLnRoaXMubWVzc2FnZXNBcmNoaWV2ZSwgLi4ubWVzc2FnZXNdIDogWy4uLm1lc3NhZ2VzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY2FuQWRkKG1lc3NhZ2U6IE1lc3NhZ2UpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGFsbG93ID0gdGhpcy5rZXkgPT09IG1lc3NhZ2Uua2V5O1xuXG4gICAgICAgIGlmIChhbGxvdyAmJiB0aGlzLnByZXZlbnRPcGVuRHVwbGljYXRlcykge1xuICAgICAgICAgICAgYWxsb3cgPSAhdGhpcy5jb250YWluc01lc3NhZ2UodGhpcy5tZXNzYWdlcywgbWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3cgJiYgdGhpcy5wcmV2ZW50RHVwbGljYXRlcykge1xuICAgICAgICAgICAgYWxsb3cgPSAhdGhpcy5jb250YWluc01lc3NhZ2UodGhpcy5tZXNzYWdlc0FyY2hpZXZlLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxvdztcbiAgICB9XG5cbiAgICBjb250YWluc01lc3NhZ2UoY29sbGVjdGlvbjogTWVzc2FnZVtdLCBtZXNzYWdlOiBNZXNzYWdlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZmluZChtID0+IHtcbiAgICAgICAgICAgcmV0dXJuICgobS5zdW1tYXJ5ID09PSBtZXNzYWdlLnN1bW1hcnkpICYmIChtLmRldGFpbCA9PSBtZXNzYWdlLmRldGFpbCkgJiYgKG0uc2V2ZXJpdHkgPT09IG1lc3NhZ2Uuc2V2ZXJpdHkpKTtcbiAgICAgICAgfSkgIT0gbnVsbDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1lc3NhZ2VDbG9zZShldmVudCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShldmVudC5pbmRleCwgMSk7XG5cbiAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoe1xuICAgICAgICAgICAgbWVzc2FnZTogZXZlbnQubWVzc2FnZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuZnJvbVN0YXRlID09PSAndm9pZCcpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMuaWQsICcnKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCgnbW9kYWwnLCB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCB0aGlzLmJhc2VaSW5kZXggfHwgdGhpcy5jb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVTdHlsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgdGhpcy5zdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBpbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgaW4gdGhpcy5icmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50U3R5bGUgPSAnJztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVByb3AgaW4gdGhpcy5icmVha3BvaW50c1ticmVha3BvaW50XSkge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50U3R5bGUgKz0gc3R5bGVQcm9wICsgJzonICsgdGhpcy5icmVha3BvaW50c1ticmVha3BvaW50XVtzdHlsZVByb3BdICsgJyAhaW1wb3J0YW50Oyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlubmVySFRNTCArPSBgXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wLXRvYXN0WyR7dGhpcy5pZH1dIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7YnJlYWtwb2ludFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBpbm5lckhUTUw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXJWaWV3Q2hpbGQgJiYgdGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNsZWFyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RvYXN0LFNoYXJlZE1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVG9hc3QsVG9hc3RJdGVtXVxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdE1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/togglebutton/primeng-togglebutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/togglebutton/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/togglebutton/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10b2dnbGVidXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdG9nZ2xlYnV0dG9uL3ByaW1lbmctdG9nZ2xlYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/togglebutton/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/togglebutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/togglebutton/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './togglebutton';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b2dnbGVidXR0b24vcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90b2dnbGVidXR0b24nOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/togglebutton/togglebutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/togglebutton/togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/togglebutton/togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,119 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/ripple";
+import * as i2 from "@angular/common";
+export const TOGGLEBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ToggleButton),
+    multi: true
+};
+export class ToggleButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.iconPos = 'left';
+        this.onChange = new EventEmitter();
+        this.checked = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    toggle(event) {
+        if (!this.disabled) {
+            this.checked = !this.checked;
+            this.onModelChange(this.checked);
+            this.onModelTouched();
+            this.onChange.emit({
+                originalEvent: event,
+                checked: this.checked
+            });
+            this.cd.markForCheck();
+        }
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.checked = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get hasOnLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+    get hasOffLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+}
+ToggleButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ToggleButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToggleButton, selector: "p-toggleButton", inputs: { onLabel: "onLabel", offLabel: "offLabel", onIcon: "onIcon", offIcon: "offIcon", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", style: "style", styleClass: "styleClass", inputId: "inputId", tabindex: "tabindex", iconPos: "iconPos" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toggleButton', template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { onLabel: [{
+                type: Input
+            }], offLabel: [{
+                type: Input
+            }], onIcon: [{
+                type: Input
+            }], offIcon: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+export class ToggleButtonModule {
+}
+ToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, declarations: [ToggleButton], imports: [CommonModule, RippleModule], exports: [ToggleButton] });
+ToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ToggleButton],
+                    declarations: [ToggleButton]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RvZ2dsZWJ1dHRvbi90b2dnbGVidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFDLHVCQUF1QixFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV2RSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBUTtJQUM5QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQzNDLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQW9CRixNQUFNLE9BQU8sWUFBWTtJQWdDckIsWUFBbUIsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFWL0IsWUFBTyxHQUFXLE1BQU0sQ0FBQztRQUV4QixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0QsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixrQkFBYSxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVuQyxtQkFBYyxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVRLENBQUM7SUFFN0MsTUFBTSxDQUFDLEtBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN4QixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQVk7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVk7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVk7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDOzt5R0E1RVEsWUFBWTs2RkFBWixZQUFZLCtXQVBWLENBQUMsMkJBQTJCLENBQUMsMEJBVDlCOzs7Ozs7OztLQVFUOzJGQVFRLFlBQVk7a0JBbEJ4QixTQUFTOytCQUNJLGdCQUFnQixZQUNoQjs7Ozs7Ozs7S0FRVCxhQUNVLENBQUMsMkJBQTJCLENBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU0sUUFFekM7d0JBQ0YsT0FBTyxFQUFFLFdBQVc7cUJBQ3ZCO3dHQUlRLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNOztBQTREWCxNQUFNLE9BQU8sa0JBQWtCOzsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBcEZsQixZQUFZLGFBZ0ZYLFlBQVksRUFBQyxZQUFZLGFBaEYxQixZQUFZO2dIQW9GWixrQkFBa0IsWUFKbEIsQ0FBQyxZQUFZLEVBQUMsWUFBWSxDQUFDOzJGQUkzQixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixmb3J3YXJkUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBUT0dHTEVCVVRUT05fVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRvZ2dsZUJ1dHRvbiksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdG9nZ2xlQnV0dG9uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncC1idXR0b24gcC10b2dnbGVidXR0b24gcC1jb21wb25lbnQnOiB0cnVlLCAncC1idXR0b24taWNvbi1vbmx5JzogKG9uSWNvbiAmJiBvZmZJY29uICYmICFoYXNPbkxhYmVsICYmICFoYXNPZmZMYWJlbCksJ3AtaGlnaGxpZ2h0JzogY2hlY2tlZCwncC1kaXNhYmxlZCc6ZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiAoY2xpY2spPVwidG9nZ2xlKCRldmVudClcIiAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IG51bGwgOiAnMCdcIiByb2xlPVwiY2hlY2tib3hcIiBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiIHBSaXBwbGU+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9uSWNvbnx8b2ZmSWNvblwiIFtjbGFzc109XCJjaGVja2VkID8gdGhpcy5vbkljb24gOiB0aGlzLm9mZkljb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1idXR0b24taWNvbic6IHRydWUsICdwLWJ1dHRvbi1pY29uLWxlZnQnOiAoaWNvblBvcyA9PT0gJ2xlZnQnKSwgJ3AtYnV0dG9uLWljb24tcmlnaHQnOiAoaWNvblBvcyA9PT0gJ3JpZ2h0Jyl9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWJ1dHRvbi1sYWJlbFwiPnt7Y2hlY2tlZCA/IGhhc09uTGFiZWwgPyBvbkxhYmVsIDogJycgOiBoYXNPZmZMYWJlbCA/IG9mZkxhYmVsIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtUT0dHTEVCVVRUT05fVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0eWxlVXJsczogWycuLi9idXR0b24vYnV0dG9uLmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUJ1dHRvbiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIG9uTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9mZkxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvbkljb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG9mZkljb246IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaWNvblBvczogc3RyaW5nID0gJ2xlZnQnO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGNoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbk1vZGVsVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5jaGVja2VkKTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogdGhpcy5jaGVja2VkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCBoYXNPbkxhYmVsKCk6Ym9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uTGFiZWwgJiYgdGhpcy5vbkxhYmVsLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IGhhc09mZkxhYmVsKCk6Ym9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uTGFiZWwgJiYgdGhpcy5vbkxhYmVsLmxlbmd0aCA+IDA7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVG9nZ2xlQnV0dG9uXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUb2dnbGVCdXR0b25dXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/toolbar/primeng-toolbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toolbar/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toolbar/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10b29sYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Rvb2xiYXIvcHJpbWVuZy10b29sYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/toolbar/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toolbar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toolbar/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './toolbar';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b29sYmFyL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rvb2xiYXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/toolbar/toolbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/toolbar/toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/toolbar/toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,74 @@
+import { NgModule, Component, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export class Toolbar {
+    constructor(el) {
+        this.el = el;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'left':
+                    this.leftTemplate = item.template;
+                    break;
+                case 'right':
+                    this.rightTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Toolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Toolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toolbar, selector: "p-toolbar", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toolbar', template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class ToolbarModule {
+}
+ToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, declarations: [Toolbar], imports: [CommonModule], exports: [Toolbar] });
+ToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Toolbar],
+                    declarations: [Toolbar]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFZLHVCQUF1QixFQUFFLGlCQUFpQixFQUFvQixlQUFlLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hLLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7QUFzQnZELE1BQU0sT0FBTyxPQUFPO0lBWWhCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUcsQ0FBQztJQUV0QyxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsUUFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25CLEtBQUssTUFBTTtvQkFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3RDLE1BQU07Z0JBRU4sS0FBSyxPQUFPO29CQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDdkMsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztvR0E5QlEsT0FBTzt3RkFBUCxPQUFPLHdLQU1DLGFBQWEsNkJBeEJwQjs7Ozs7Ozs7OztLQVVUOzJGQVFRLE9BQU87a0JBcEJuQixTQUFTOytCQUNJLFdBQVcsWUFDWDs7Ozs7Ozs7OztLQVVULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBRS9CO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpR0FJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhOztBQWlDbEMsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkF2Q2IsT0FBTyxhQW1DTixZQUFZLGFBbkNiLE9BQU87MkdBdUNQLGFBQWEsWUFKYixDQUFDLFlBQVksQ0FBQzsyRkFJZCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsRWxlbWVudFJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QmxvY2thYmxlVUksIFByaW1lVGVtcGxhdGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiJ3AtdG9vbGJhciBwLWNvbXBvbmVudCdcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgcm9sZT1cInRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRvb2xiYXItZ3JvdXAtbGVmdFwiICpuZ0lmPVwibGVmdFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxlZnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10b29sYmFyLWdyb3VwLXJpZ2h0XCIgKm5nSWY9XCJyaWdodFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJpZ2h0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxCbG9ja2FibGVVSSB7XG5cbiAgICBASW5wdXQoKSBzdHlsZTogYW55O1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gICAgbGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBnZXRCbG9ja2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWZ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVG9vbGJhcl0sXG4gICAgZGVjbGFyYXRpb25zOiBbVG9vbGJhcl1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhck1vZHVsZSB7IH1cbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tooltip/primeng-tooltip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tooltip/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tooltip/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10b29sdGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Rvb2x0aXAvcHJpbWVuZy10b29sdGlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tooltip/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tooltip/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tooltip/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tooltip';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b29sdGlwL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rvb2x0aXAnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tooltip/tooltip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tooltip/tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tooltip/tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,475 @@
+import { NgModule, Directive, Input } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+export class Tooltip {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+        this.escape = true;
+        this._tooltipOptions = {
+            tooltipPosition: 'right',
+            tooltipEvent: 'hover',
+            appendTo: 'body',
+            tooltipZIndex: 'auto',
+            escape: false,
+            positionTop: 0,
+            positionLeft: 0
+        };
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(val) {
+        this._disabled = val;
+        this.deactivate();
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            if (this.getOption('tooltipEvent') === 'hover') {
+                this.mouseEnterListener = this.onMouseEnter.bind(this);
+                this.mouseLeaveListener = this.onMouseLeave.bind(this);
+                this.clickListener = this.onClick.bind(this);
+                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);
+                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);
+                this.el.nativeElement.addEventListener('click', this.clickListener);
+            }
+            else if (this.getOption('tooltipEvent') === 'focus') {
+                this.focusListener = this.onFocus.bind(this);
+                this.blurListener = this.onBlur.bind(this);
+                this.el.nativeElement.addEventListener('focus', this.focusListener);
+                this.el.nativeElement.addEventListener('blur', this.blurListener);
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.tooltipPosition) {
+            this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });
+        }
+        if (simpleChange.tooltipEvent) {
+            this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });
+        }
+        if (simpleChange.appendTo) {
+            this.setOption({ appendTo: simpleChange.appendTo.currentValue });
+        }
+        if (simpleChange.positionStyle) {
+            this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });
+        }
+        if (simpleChange.tooltipStyleClass) {
+            this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });
+        }
+        if (simpleChange.tooltipZIndex) {
+            this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });
+        }
+        if (simpleChange.escape) {
+            this.setOption({ escape: simpleChange.escape.currentValue });
+        }
+        if (simpleChange.showDelay) {
+            this.setOption({ showDelay: simpleChange.showDelay.currentValue });
+        }
+        if (simpleChange.hideDelay) {
+            this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });
+        }
+        if (simpleChange.life) {
+            this.setOption({ life: simpleChange.life.currentValue });
+        }
+        if (simpleChange.positionTop) {
+            this.setOption({ positionTop: simpleChange.positionTop.currentValue });
+        }
+        if (simpleChange.positionLeft) {
+            this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });
+        }
+        if (simpleChange.disabled) {
+            this.setOption({ disabled: simpleChange.disabled.currentValue });
+        }
+        if (simpleChange.text) {
+            this.setOption({ tooltipLabel: simpleChange.text.currentValue });
+            if (this.active) {
+                if (simpleChange.text.currentValue) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+        if (simpleChange.tooltipOptions) {
+            this._tooltipOptions = { ...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue };
+            this.deactivate();
+            if (this.active) {
+                if (this.getOption('tooltipLabel')) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+    }
+    onMouseEnter(e) {
+        if (!this.container && !this.showTimeout) {
+            this.activate();
+        }
+    }
+    onMouseLeave(e) {
+        this.deactivate();
+    }
+    onFocus(e) {
+        this.activate();
+    }
+    onBlur(e) {
+        this.deactivate();
+    }
+    onClick(e) {
+        this.deactivate();
+    }
+    activate() {
+        this.active = true;
+        this.clearHideTimeout();
+        if (this.getOption('showDelay'))
+            this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));
+        else
+            this.show();
+        if (this.getOption('life')) {
+            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');
+            this.hideTimeout = setTimeout(() => { this.hide(); }, duration);
+        }
+    }
+    deactivate() {
+        this.active = false;
+        this.clearShowTimeout();
+        if (this.getOption('hideDelay')) {
+            this.clearHideTimeout(); //life timeout
+            this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));
+        }
+        else {
+            this.hide();
+        }
+    }
+    create() {
+        if (this.container) {
+            this.clearHideTimeout();
+            this.remove();
+        }
+        this.container = document.createElement('div');
+        let tooltipArrow = document.createElement('div');
+        tooltipArrow.className = 'p-tooltip-arrow';
+        this.container.appendChild(tooltipArrow);
+        this.tooltipText = document.createElement('div');
+        this.tooltipText.className = 'p-tooltip-text';
+        this.updateText();
+        if (this.getOption('positionStyle')) {
+            this.container.style.position = this.getOption('positionStyle');
+        }
+        this.container.appendChild(this.tooltipText);
+        if (this.getOption('appendTo') === 'body')
+            document.body.appendChild(this.container);
+        else if (this.getOption('appendTo') === 'target')
+            DomHandler.appendChild(this.container, this.el.nativeElement);
+        else
+            DomHandler.appendChild(this.container, this.getOption('appendTo'));
+        this.container.style.display = 'inline-block';
+    }
+    show() {
+        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {
+            return;
+        }
+        this.create();
+        this.align();
+        DomHandler.fadeIn(this.container, 250);
+        if (this.getOption('tooltipZIndex') === 'auto')
+            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);
+        else
+            this.container.style.zIndex = this.getOption('tooltipZIndex');
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    hide() {
+        if (this.getOption('tooltipZIndex') === 'auto') {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+    }
+    updateText() {
+        if (this.getOption('escape')) {
+            this.tooltipText.innerHTML = '';
+            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));
+        }
+        else {
+            this.tooltipText.innerHTML = this.getOption('tooltipLabel');
+        }
+    }
+    align() {
+        let position = this.getOption('tooltipPosition');
+        switch (position) {
+            case 'top':
+                this.alignTop();
+                if (this.isOutOfBounds()) {
+                    this.alignBottom();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'bottom':
+                this.alignBottom();
+                if (this.isOutOfBounds()) {
+                    this.alignTop();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'left':
+                this.alignLeft();
+                if (this.isOutOfBounds()) {
+                    this.alignRight();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+            case 'right':
+                this.alignRight();
+                if (this.isOutOfBounds()) {
+                    this.alignLeft();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+        }
+    }
+    getHostOffset() {
+        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {
+            let offset = this.el.nativeElement.getBoundingClientRect();
+            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();
+            let targetTop = offset.top + DomHandler.getWindowScrollTop();
+            return { left: targetLeft, top: targetTop };
+        }
+        else {
+            return { left: 0, top: 0 };
+        }
+    }
+    alignRight() {
+        this.preAlign('right');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignLeft() {
+        this.preAlign('left');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignTop() {
+        this.preAlign('top');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignBottom() {
+        this.preAlign('bottom');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    setOption(option) {
+        this._tooltipOptions = { ...this._tooltipOptions, ...option };
+    }
+    getOption(option) {
+        return this._tooltipOptions[option];
+    }
+    preAlign(position) {
+        this.container.style.left = -999 + 'px';
+        this.container.style.top = -999 + 'px';
+        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;
+        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;
+    }
+    isOutOfBounds() {
+        let offset = this.container.getBoundingClientRect();
+        let targetTop = offset.top;
+        let targetLeft = offset.left;
+        let width = DomHandler.getOuterWidth(this.container);
+        let height = DomHandler.getOuterHeight(this.container);
+        let viewport = DomHandler.getViewport();
+        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);
+    }
+    onWindowResize(e) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.zone.runOutsideAngular(() => {
+            this.resizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.resizeListener);
+        });
+    }
+    unbindDocumentResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (this.container) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindEvents() {
+        if (this.getOption('tooltipEvent') === 'hover') {
+            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);
+            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);
+            this.el.nativeElement.removeEventListener('click', this.clickListener);
+        }
+        else if (this.getOption('tooltipEvent') === 'focus') {
+            this.el.nativeElement.removeEventListener('focus', this.focusListener);
+            this.el.nativeElement.removeEventListener('blur', this.blurListener);
+        }
+        this.unbindDocumentResizeListener();
+    }
+    remove() {
+        if (this.container && this.container.parentElement) {
+            if (this.getOption('appendTo') === 'body')
+                document.body.removeChild(this.container);
+            else if (this.getOption('appendTo') === 'target')
+                this.el.nativeElement.removeChild(this.container);
+            else
+                DomHandler.removeChild(this.container, this.getOption('appendTo'));
+        }
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.clearTimeouts();
+        this.container = null;
+        this.scrollHandler = null;
+    }
+    clearShowTimeout() {
+        if (this.showTimeout) {
+            clearTimeout(this.showTimeout);
+            this.showTimeout = null;
+        }
+    }
+    clearHideTimeout() {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+    }
+    clearTimeouts() {
+        this.clearShowTimeout();
+        this.clearHideTimeout();
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        if (this.container) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+    }
+}
+Tooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });
+Tooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Tooltip, selector: "[pTooltip]", inputs: { tooltipPosition: "tooltipPosition", tooltipEvent: "tooltipEvent", appendTo: "appendTo", positionStyle: "positionStyle", tooltipStyleClass: "tooltipStyleClass", tooltipZIndex: "tooltipZIndex", escape: "escape", showDelay: "showDelay", hideDelay: "hideDelay", life: "life", positionTop: "positionTop", positionLeft: "positionLeft", text: ["pTooltip", "text"], disabled: ["tooltipDisabled", "disabled"], tooltipOptions: "tooltipOptions" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTooltip]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{
+                type: Input
+            }], tooltipEvent: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], positionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], tooltipZIndex: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], showDelay: [{
+                type: Input
+            }], hideDelay: [{
+                type: Input
+            }], life: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], text: [{
+                type: Input,
+                args: ['pTooltip']
+            }], disabled: [{
+                type: Input,
+                args: ["tooltipDisabled"]
+            }], tooltipOptions: [{
+                type: Input
+            }] } });
+export class TooltipModule {
+}
+TooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });
+TooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tooltip],
+                    declarations: [Tooltip]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQXdDLEtBQUssRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7O0FBMEIzQyxNQUFNLE9BQU8sT0FBTztJQTRFaEIsWUFBbUIsRUFBYyxFQUFTLElBQVksRUFBUyxNQUFxQjtRQUFqRSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWU7UUE5RDNFLFdBQU0sR0FBWSxJQUFJLENBQUM7UUF3QmhDLG9CQUFlLEdBQW1CO1lBQzlCLGVBQWUsRUFBRSxPQUFPO1lBQ3hCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLENBQUM7WUFDZCxZQUFZLEVBQUUsQ0FBQztTQUNsQixDQUFBO0lBOEJ1RixDQUFDO0lBaER6RixJQUE4QixRQUFRO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQTRDRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFH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SUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQ3hFO1FBRUQsSUFBSSxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1lBRS9ELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNoQyxJQUFJLElBQUksQ0FB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QUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDMUUsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5SCxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMxRSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUgsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBc0I7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFDLEdBQUcs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QUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQzs7b0dBcGlCUSxPQUFPO3dGQUFQLE9BQU87MkZBQVAsT0FBTztrQkFObkIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjtrSkFHWSxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFYSxJQUFJO3NCQUF0QixLQUFLO3VCQUFDLFVBQVU7Z0JBRWEsUUFBUTtzQkFBckMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBUWYsY0FBYztzQkFBdEIsS0FBSzs7QUF3Z0JWLE1BQU0sT0FBTyxhQUFhOzswR0FBYixhQUFhOzJHQUFiLGFBQWEsaUJBNWlCYixPQUFPLGFBd2lCTixZQUFZLGFBeGlCYixPQUFPOzJHQTRpQlAsYUFBYSxZQUpiLENBQUMsWUFBWSxDQUFDOzJGQUlkLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElucHV0LCBOZ1pvbmUsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb21IYW5kbGVyLCBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7IFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscydcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbHRpcE9wdGlvbnMge1xuICAgIHRvb2x0aXBMYWJlbD86IHN0cmluZztcbiAgICB0b29sdGlwUG9zaXRpb24/OiBzdHJpbmc7XG4gICAgdG9vbHRpcEV2ZW50Pzogc3RyaW5nO1xuICAgIGFwcGVuZFRvPzogYW55O1xuICAgIHBvc2l0aW9uU3R5bGU/OiBzdHJpbmc7XG4gICAgdG9vbHRpcFN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgdG9vbHRpcFpJbmRleD86IHN0cmluZztcbiAgICBlc2NhcGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBzaG93RGVsYXk/OiBudW1iZXI7XG4gICAgaGlkZURlbGF5PzogbnVtYmVyO1xuICAgIHBvc2l0aW9uVG9wPzogbnVtYmVyO1xuICAgIHBvc2l0aW9uTGVmdD86IG51bWJlcjtcbiAgICBsaWZlPzogbnVtYmVyO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twVG9vbHRpcF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0b29sdGlwRXZlbnQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvblN0eWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0b29sdGlwU3R5bGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdG9vbHRpcFpJbmRleDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZXNjYXBlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dEZWxheTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaGlkZURlbGF5OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBsaWZlOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvblRvcDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcG9zaXRpb25MZWZ0OiBudW1iZXI7XG5cbiAgICBASW5wdXQoJ3BUb29sdGlwJykgdGV4dDogc3RyaW5nO1xuXG4gICAgQElucHV0KFwidG9vbHRpcERpc2FibGVkXCIpIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsOmJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwT3B0aW9ucztcblxuICAgIF90b29sdGlwT3B0aW9uczogVG9vbHRpcE9wdGlvbnMgPSB7XG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgdG9vbHRpcEV2ZW50OiAnaG92ZXInLFxuICAgICAgICBhcHBlbmRUbzogJ2JvZHknLFxuICAgICAgICB0b29sdGlwWkluZGV4OiAnYXV0bycsXG4gICAgICAgIGVzY2FwZTogZmFsc2UsXG4gICAgICAgIHBvc2l0aW9uVG9wOiAwLFxuICAgICAgICBwb3NpdGlvbkxlZnQ6IDBcbiAgICB9XG5cbiAgICBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb250YWluZXI6IGFueTtcblxuICAgIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIHRvb2x0aXBUZXh0OiBhbnk7XG5cbiAgICBzaG93VGltZW91dDogYW55O1xuXG4gICAgaGlkZVRpbWVvdXQ6IGFueTtcblxuICAgIGFjdGl2ZTogYm9vbGVhbjtcblxuICAgIG1vdXNlRW50ZXJMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBtb3VzZUxlYXZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgY2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBmb2N1c0xpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIGJsdXJMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBhbnk7XG5cbiAgICByZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldE9wdGlvbigndG9vbHRpcEV2ZW50JykgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlRW50ZXJMaXN0ZW5lciA9IHRoaXMub25Nb3VzZUVudGVyLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZUxlYXZlTGlzdGVuZXIgPSB0aGlzLm9uTW91c2VMZWF2ZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3VzZUVudGVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5tb3VzZUxlYXZlTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldE9wdGlvbigndG9vbHRpcEV2ZW50JykgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTGlzdGVuZXIgPSB0aGlzLm9uRm9jdXMuYmluZCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJsdXJMaXN0ZW5lciA9IHRoaXMub25CbHVyLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuYmx1ckxpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UudG9vbHRpcFBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldE9wdGlvbih7dG9vbHRpcFBvc2l0aW9uOiBzaW1wbGVDaGFuZ2UudG9vbHRpcFBvc2l0aW9uLmN1cnJlbnRWYWx1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS50b29sdGlwRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9uKHt0b29sdGlwRXZlbnQ6IHNpbXBsZUNoYW5nZS50b29sdGlwRXZlbnQuY3VycmVudFZhbHVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICB0aGlzLnNldE9wdGlvbih7YXBwZW5kVG86IHNpbXBsZUNoYW5nZS5hcHBlbmRUby5jdXJyZW50VmFsdWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UucG9zaXRpb25TdHlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe3Bvc2l0aW9uU3R5bGU6IHNpbXBsZUNoYW5nZS5wb3NpdGlvblN0eWxlLmN1cnJlbnRWYWx1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS50b29sdGlwU3R5bGVDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe3Rvb2x0aXBTdHlsZUNsYXNzOiBzaW1wbGVDaGFuZ2UudG9vbHRpcFN0eWxlQ2xhc3MuY3VycmVudFZhbHVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnRvb2x0aXBaSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9uKHt0b29sdGlwWkluZGV4OiBzaW1wbGVDaGFuZ2UudG9vbHRpcFpJbmRleC5jdXJyZW50VmFsdWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UuZXNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLnNldE9wdGlvbih7ZXNjYXBlOiBzaW1wbGVDaGFuZ2UuZXNjYXBlLmN1cnJlbnRWYWx1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zaG93RGVsYXkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9uKHtzaG93RGVsYXk6IHNpbXBsZUNoYW5nZS5zaG93RGVsYXkuY3VycmVudFZhbHVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLmhpZGVEZWxheSkge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe2hpZGVEZWxheTogc2ltcGxlQ2hhbmdlLmhpZGVEZWxheS5jdXJyZW50VmFsdWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UubGlmZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe2xpZmU6IHNpbXBsZUNoYW5nZS5saWZlLmN1cnJlbnRWYWx1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5wb3NpdGlvblRvcCkge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe3Bvc2l0aW9uVG9wOiBzaW1wbGVDaGFuZ2UucG9zaXRpb25Ub3AuY3VycmVudFZhbHVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnBvc2l0aW9uTGVmdCkge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb24oe3Bvc2l0aW9uTGVmdDogc2ltcGxlQ2hhbmdlLnBvc2l0aW9uTGVmdC5jdXJyZW50VmFsdWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2UuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9uKHtkaXNhYmxlZDogc2ltcGxlQ2hhbmdlLmRpc2FibGVkLmN1cnJlbnRWYWx1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS50ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnNldE9wdGlvbih7dG9vbHRpcExhYmVsOiBzaW1wbGVDaGFuZ2UudGV4dC5jdXJyZW50VmFsdWV9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS50ZXh0LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnRvb2x0aXBPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLl90b29sdGlwT3B0aW9ucyA9IHsuLi50aGlzLl90b29sdGlwT3B0aW9ucywgLi4uc2ltcGxlQ2hhbmdlLnRvb2x0aXBPcHRpb25zLmN1cnJlbnRWYWx1ZX07XG4gICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKCd0b29sdGlwTGFiZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXIoZTogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lciAmJiAhdGhpcy5zaG93VGltZW91dCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUxlYXZlKGU6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoZTogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIG9uQmx1cihlOiBFdmVudCkge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGU6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIGFjdGl2YXRlKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xlYXJIaWRlVGltZW91dCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbignc2hvd0RlbGF5JykpXG4gICAgICAgICAgICB0aGlzLnNob3dUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuc2hvdygpIH0sIHRoaXMuZ2V0T3B0aW9uKCdzaG93RGVsYXknKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbignbGlmZScpKSB7XG4gICAgICAgICAgICBsZXQgZHVyYXRpb24gPSB0aGlzLmdldE9wdGlvbignc2hvd0RlbGF5JykgPyB0aGlzLmdldE9wdGlvbignbGlmZScpICsgdGhpcy5nZXRPcHRpb24oJ3Nob3dEZWxheScpIDogdGhpcy5nZXRPcHRpb24oJ2xpZmUnKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5oaWRlKCkgfSwgZHVyYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVhY3RpdmF0ZSgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jbGVhclNob3dUaW1lb3V0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKCdoaWRlRGVsYXknKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckhpZGVUaW1lb3V0KCk7ICAgIC8vbGlmZSB0aW1lb3V0XG4gICAgICAgICAgICB0aGlzLmhpZGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuaGlkZSgpIH0sIHRoaXMuZ2V0T3B0aW9uKCdoaWRlRGVsYXknKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFySGlkZVRpbWVvdXQoKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgIGxldCB0b29sdGlwQXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdG9vbHRpcEFycm93LmNsYXNzTmFtZSA9ICdwLXRvb2x0aXAtYXJyb3cnO1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0b29sdGlwQXJyb3cpO1xuXG4gICAgICAgIHRoaXMudG9vbHRpcFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy50b29sdGlwVGV4dC5jbGFzc05hbWUgPSAncC10b29sdGlwLXRleHQnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVGV4dCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbigncG9zaXRpb25TdHlsZScpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKCdwb3NpdGlvblN0eWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBUZXh0KTtcblxuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oJ2FwcGVuZFRvJykgPT09ICdib2R5JylcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmdldE9wdGlvbignYXBwZW5kVG8nKSA9PT0gJ3RhcmdldCcpXG4gICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmdldE9wdGlvbignYXBwZW5kVG8nKSk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIGlmICghdGhpcy5nZXRPcHRpb24oJ3Rvb2x0aXBMYWJlbCcpIHx8IHRoaXMuZ2V0T3B0aW9uKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZSgpO1xuICAgICAgICB0aGlzLmFsaWduKCk7XG4gICAgICAgIERvbUhhbmRsZXIuZmFkZUluKHRoaXMuY29udGFpbmVyLCAyNTApO1xuXG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbigndG9vbHRpcFpJbmRleCcpID09PSAnYXV0bycpXG4gICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ3Rvb2x0aXAnLCB0aGlzLmNvbnRhaW5lciwgdGhpcy5jb25maWcuekluZGV4LnRvb2x0aXApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXggPSB0aGlzLmdldE9wdGlvbigndG9vbHRpcFpJbmRleCcpO1xuXG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBoaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oJ3Rvb2x0aXBaSW5kZXgnKSA9PT0gJ2F1dG8nKSB7XG4gICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcih0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbignZXNjYXBlJykpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcFRleHQuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBUZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuZ2V0T3B0aW9uKCd0b29sdGlwTGFiZWwnKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwVGV4dC5pbm5lckhUTUwgPSB0aGlzLmdldE9wdGlvbigndG9vbHRpcExhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbigpIHtcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5nZXRPcHRpb24oJ3Rvb2x0aXBQb3NpdGlvbicpO1xuXG4gICAgICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnblRvcCgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsaWduQm90dG9tKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnblJpZ2h0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25MZWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsaWduVG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnblJpZ2h0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25MZWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25MZWZ0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPdXRPZkJvdW5kcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25SaWdodCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3V0T2ZCb3VuZHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnblRvcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc091dE9mQm91bmRzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsaWduQm90dG9tKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduUmlnaHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc091dE9mQm91bmRzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnbkxlZnQoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc091dE9mQm91bmRzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25Ub3AoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPdXRPZkJvdW5kcygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGlnbkJvdHRvbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SG9zdE9mZnNldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKCdhcHBlbmRUbycpID09PSAnYm9keScgfHwgdGhpcy5nZXRPcHRpb24oJ2FwcGVuZFRvJykgPT09ICd0YXJnZXQnKSB7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgbGV0IHRhcmdldExlZnQgPSBvZmZzZXQubGVmdCArIERvbUhhbmRsZXIuZ2V0V2luZG93U2Nyb2xsTGVmdCgpO1xuICAgICAgICAgICAgbGV0IHRhcmdldFRvcCA9IG9mZnNldC50b3AgKyBEb21IYW5kbGVyLmdldFdpbmRvd1Njcm9sbFRvcCgpO1xuXG4gICAgICAgICAgICByZXR1cm4geyBsZWZ0OiB0YXJnZXRMZWZ0LCB0b3A6IHRhcmdldFRvcCB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGVmdDogMCwgdG9wOiAwIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnblJpZ2h0KCkge1xuICAgICAgICB0aGlzLnByZUFsaWduKCdyaWdodCcpO1xuICAgICAgICBsZXQgaG9zdE9mZnNldCA9IHRoaXMuZ2V0SG9zdE9mZnNldCgpO1xuICAgICAgICBsZXQgbGVmdCA9IGhvc3RPZmZzZXQubGVmdCArIERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBsZXQgdG9wID0gaG9zdE9mZnNldC50b3AgKyAoRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIC0gRG9tSGFuZGxlci5nZXRPdXRlckhlaWdodCh0aGlzLmNvbnRhaW5lcikpIC8gMjtcbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUubGVmdCA9IGxlZnQgKyB0aGlzLmdldE9wdGlvbigncG9zaXRpb25MZWZ0JykgKyAncHgnO1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS50b3AgPSB0b3AgKyB0aGlzLmdldE9wdGlvbigncG9zaXRpb25Ub3AnKSArICdweCc7XG4gICAgfVxuXG4gICAgYWxpZ25MZWZ0KCkge1xuICAgICAgICB0aGlzLnByZUFsaWduKCdsZWZ0Jyk7XG4gICAgICAgIGxldCBob3N0T2Zmc2V0ID0gdGhpcy5nZXRIb3N0T2Zmc2V0KCk7XG4gICAgICAgIGxldCBsZWZ0ID0gaG9zdE9mZnNldC5sZWZ0IC0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgbGV0IHRvcCA9IGhvc3RPZmZzZXQudG9wICsgKERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSAtIERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5jb250YWluZXIpKSAvIDI7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgdGhpcy5nZXRPcHRpb24oJ3Bvc2l0aW9uTGVmdCcpICsgJ3B4JztcbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUudG9wID0gdG9wICsgdGhpcy5nZXRPcHRpb24oJ3Bvc2l0aW9uVG9wJykgKyAncHgnO1xuICAgIH1cblxuICAgIGFsaWduVG9wKCkge1xuICAgICAgICB0aGlzLnByZUFsaWduKCd0b3AnKTtcbiAgICAgICAgbGV0IGhvc3RPZmZzZXQgPSB0aGlzLmdldEhvc3RPZmZzZXQoKTtcbiAgICAgICAgbGV0IGxlZnQgPSBob3N0T2Zmc2V0LmxlZnQgKyAoRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgLSBEb21IYW5kbGVyLmdldE91dGVyV2lkdGgodGhpcy5jb250YWluZXIpKSAvIDI7XG4gICAgICAgIGxldCB0b3AgPSBob3N0T2Zmc2V0LnRvcCAtIERvbUhhbmRsZXIuZ2V0T3V0ZXJIZWlnaHQodGhpcy5jb250YWluZXIpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gbGVmdCArIHRoaXMuZ2V0T3B0aW9uKCdwb3NpdGlvbkxlZnQnKSArICdweCc7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLnRvcCA9IHRvcCArIHRoaXMuZ2V0T3B0aW9uKCdwb3NpdGlvblRvcCcpICsgJ3B4JztcbiAgICB9XG5cbiAgICBhbGlnbkJvdHRvbSgpIHtcbiAgICAgICAgdGhpcy5wcmVBbGlnbignYm90dG9tJyk7XG4gICAgICAgIGxldCBob3N0T2Zmc2V0ID0gdGhpcy5nZXRIb3N0T2Zmc2V0KCk7XG4gICAgICAgIGxldCBsZWZ0ID0gaG9zdE9mZnNldC5sZWZ0ICsgKERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIC0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuY29udGFpbmVyKSkgLyAyO1xuICAgICAgICBsZXQgdG9wID0gaG9zdE9mZnNldC50b3AgKyBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgdGhpcy5nZXRPcHRpb24oJ3Bvc2l0aW9uTGVmdCcpICsgJ3B4JztcbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUudG9wID0gdG9wICsgdGhpcy5nZXRPcHRpb24oJ3Bvc2l0aW9uVG9wJykgKyAncHgnO1xuICAgIH1cblxuICAgIHNldE9wdGlvbihvcHRpb246IFRvb2x0aXBPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBPcHRpb25zID0gey4uLnRoaXMuX3Rvb2x0aXBPcHRpb25zLCAuLi5vcHRpb259XG4gICAgfVxuXG4gICAgZ2V0T3B0aW9uKG9wdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b29sdGlwT3B0aW9uc1tvcHRpb25dO1xuICAgIH1cblxuICAgIHByZUFsaWduKHBvc2l0aW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUubGVmdCA9IC05OTkgKyAncHgnO1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS50b3AgPSAtOTk5ICsgJ3B4JztcblxuICAgICAgICBsZXQgZGVmYXVsdENsYXNzTmFtZSA9ICdwLXRvb2x0aXAgcC1jb21wb25lbnQgcC10b29sdGlwLScgKyBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NOYW1lID0gdGhpcy5nZXRPcHRpb24oJ3Rvb2x0aXBTdHlsZUNsYXNzJykgPyBkZWZhdWx0Q2xhc3NOYW1lICsgJyAnICsgdGhpcy5nZXRPcHRpb24oJ3Rvb2x0aXBTdHlsZUNsYXNzJykgOiBkZWZhdWx0Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIGlzT3V0T2ZCb3VuZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHRhcmdldFRvcCA9IG9mZnNldC50b3A7XG4gICAgICAgIGxldCB0YXJnZXRMZWZ0ID0gb2Zmc2V0LmxlZnQ7XG4gICAgICAgIGxldCB3aWR0aCA9IERvbUhhbmRsZXIuZ2V0T3V0ZXJXaWR0aCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIGxldCBoZWlnaHQgPSBEb21IYW5kbGVyLmdldE91dGVySGVpZ2h0KHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgbGV0IHZpZXdwb3J0ID0gRG9tSGFuZGxlci5nZXRWaWV3cG9ydCgpO1xuXG4gICAgICAgIHJldHVybiAodGFyZ2V0TGVmdCArIHdpZHRoID4gdmlld3BvcnQud2lkdGgpIHx8ICh0YXJnZXRMZWZ0IDwgMCkgfHwgKHRhcmdldFRvcCA8IDApIHx8ICh0YXJnZXRUb3AgKyBoZWlnaHQgPiB2aWV3cG9ydC5oZWlnaHQpO1xuICAgIH1cblxuICAgIG9uV2luZG93UmVzaXplKGU6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMub25XaW5kb3dSZXNpemUuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRFdmVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldE9wdGlvbigndG9vbHRpcEV2ZW50JykgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3VzZUVudGVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLm1vdXNlTGVhdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsaWNrTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0T3B0aW9uKCd0b29sdGlwRXZlbnQnKSA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5ibHVyTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKCdhcHBlbmRUbycpID09PSAnYm9keScpXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldE9wdGlvbignYXBwZW5kVG8nKSA9PT0gJ3RhcmdldCcpXG4gICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyLCB0aGlzLmdldE9wdGlvbignYXBwZW5kVG8nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dHMoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGNsZWFyU2hvd1RpbWVvdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnNob3dUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFySGlkZVRpbWVvdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmhpZGVUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dHMoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTaG93VGltZW91dCgpO1xuICAgICAgICB0aGlzLmNsZWFySGlkZVRpbWVvdXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRFdmVudHMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb250YWluZXIpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVtb3ZlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1Rvb2x0aXBdLFxuICAgIGRlY2xhcmF0aW9uczogW1Rvb2x0aXBdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tree/primeng-tree.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tree/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tree/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RyZWUvcHJpbWVuZy10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tree/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tree/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tree/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tree';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RyZWUnOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/tree/tree.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tree/tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tree/tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1269 @@
+import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, Inject, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, ViewChild } from '@angular/core';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import { Optional } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { TranslationKeys } from 'primeng/api';
+import { SharedModule } from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import { RippleModule } from 'primeng/ripple';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/api";
+import * as i4 from "@angular/cdk/scrolling";
+export class UITreeNode {
+    constructor(tree) {
+        this.tree = tree;
+    }
+    ngOnInit() {
+        this.node.parent = this.parentNode;
+        if (this.parentNode) {
+            this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));
+        }
+    }
+    getIcon() {
+        let icon;
+        if (this.node.icon)
+            icon = this.node.icon;
+        else
+            icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;
+        return UITreeNode.ICON_CLASS + ' ' + icon;
+    }
+    isLeaf() {
+        return this.tree.isNodeLeaf(this.node);
+    }
+    toggle(event) {
+        if (this.node.expanded)
+            this.collapse(event);
+        else
+            this.expand(event);
+    }
+    expand(event) {
+        this.node.expanded = true;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });
+    }
+    collapse(event) {
+        this.node.expanded = false;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+    }
+    onNodeClick(event) {
+        this.tree.onNodeClick(event, this.node);
+    }
+    onNodeKeydown(event) {
+        if (event.which === 13) {
+            this.tree.onNodeClick(event, this.node);
+        }
+    }
+    onNodeTouchEnd() {
+        this.tree.onNodeTouchEnd();
+    }
+    onNodeRightClick(event) {
+        this.tree.onNodeRightClick(event, this.node);
+    }
+    isSelected() {
+        return this.tree.isSelected(this.node);
+    }
+    onDropPoint(event, position) {
+        event.preventDefault();
+        let dragNode = this.tree.dragNode;
+        let dragNodeIndex = this.tree.dragNodeIndex;
+        let dragNodeScope = this.tree.dragNodeScope;
+        let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;
+        if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {
+            let dropParams = { ...this.createDropPointEventMetadata(position) };
+            if (this.tree.validateDrop) {
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index,
+                    accept: () => {
+                        this.processPointDrop(dropParams);
+                    }
+                });
+            }
+            else {
+                this.processPointDrop(dropParams);
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index
+                });
+            }
+        }
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    processPointDrop(event) {
+        let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;
+        event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);
+        let dropIndex = this.index;
+        if (event.position < 0) {
+            dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;
+            newNodeList.splice(dropIndex, 0, event.dragNode);
+        }
+        else {
+            dropIndex = newNodeList.length;
+            newNodeList.push(event.dragNode);
+        }
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: event.dragNodeIndex
+        });
+    }
+    createDropPointEventMetadata(position) {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node,
+            index: this.index,
+            position: position
+        };
+    }
+    onDropPointDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        event.preventDefault();
+    }
+    onDropPointDragEnter(event, position) {
+        if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            if (position < 0)
+                this.draghoverPrev = true;
+            else
+                this.draghoverNext = true;
+        }
+    }
+    onDropPointDragLeave(event) {
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    onDragStart(event) {
+        if (this.tree.draggableNodes && this.node.draggable !== false) {
+            event.dataTransfer.setData("text", "data");
+            this.tree.dragDropService.startDrag({
+                tree: this,
+                node: this.node,
+                subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+                index: this.index,
+                scope: this.tree.draggableScope
+            });
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    onDragStop(event) {
+        this.tree.dragDropService.stopDrag({
+            node: this.node,
+            subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+            index: this.index
+        });
+    }
+    onDropNodeDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        if (this.tree.droppableNodes) {
+            event.preventDefault();
+            event.stopPropagation();
+        }
+    }
+    onDropNode(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false) {
+            let dragNode = this.tree.dragNode;
+            if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {
+                let dropParams = { ...this.createDropNodeEventMetadata() };
+                if (this.tree.validateDrop) {
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index,
+                        accept: () => {
+                            this.processNodeDrop(dropParams);
+                        }
+                    });
+                }
+                else {
+                    this.processNodeDrop(dropParams);
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index
+                    });
+                }
+            }
+        }
+        event.preventDefault();
+        event.stopPropagation();
+        this.draghoverNode = false;
+    }
+    createDropNodeEventMetadata() {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node
+        };
+    }
+    processNodeDrop(event) {
+        let dragNodeIndex = event.dragNodeIndex;
+        event.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        if (event.dropNode.children)
+            event.dropNode.children.push(event.dragNode);
+        else
+            event.dropNode.children = [event.dragNode];
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: dragNodeIndex
+        });
+    }
+    onDropNodeDragEnter(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            this.draghoverNode = true;
+        }
+    }
+    onDropNodeDragLeave(event) {
+        if (this.tree.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {
+                this.draghoverNode = false;
+            }
+        }
+    }
+    onKeyDown(event) {
+        const nodeElement = event.target.parentElement.parentElement;
+        if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {
+            return;
+        }
+        switch (event.which) {
+            //down arrow
+            case 40:
+                const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];
+                if (listElement && listElement.children.length > 0) {
+                    this.focusNode(listElement.children[0]);
+                }
+                else {
+                    const nextNodeElement = nodeElement.nextElementSibling;
+                    if (nextNodeElement) {
+                        this.focusNode(nextNodeElement);
+                    }
+                    else {
+                        let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);
+                        if (nextSiblingAncestor) {
+                            this.focusNode(nextSiblingAncestor);
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up arrow
+            case 38:
+                if (nodeElement.previousElementSibling) {
+                    this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //right arrow
+            case 39:
+                if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {
+                    this.expand(event);
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.node.expanded) {
+                    this.collapse(event);
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.tree.onNodeClick(event, this.node);
+                event.preventDefault();
+                break;
+            default:
+                //no op
+                break;
+        }
+    }
+    findNextSiblingOfAncestor(nodeElement) {
+        let parentNodeElement = this.getParentNodeElement(nodeElement);
+        if (parentNodeElement) {
+            if (parentNodeElement.nextElementSibling)
+                return parentNodeElement.nextElementSibling;
+            else
+                return this.findNextSiblingOfAncestor(parentNodeElement);
+        }
+        else {
+            return null;
+        }
+    }
+    findLastVisibleDescendant(nodeElement) {
+        const listElement = Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));
+        const childrenListElement = listElement.children[1];
+        if (childrenListElement && childrenListElement.children.length > 0) {
+            const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];
+            return this.findLastVisibleDescendant(lastChildElement);
+        }
+        else {
+            return nodeElement;
+        }
+    }
+    getParentNodeElement(nodeElement) {
+        const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;
+        return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;
+    }
+    focusNode(element) {
+        if (this.tree.droppableNodes)
+            element.children[1].children[0].focus();
+        else
+            element.children[0].children[0].focus();
+    }
+}
+UITreeNode.ICON_CLASS = 'p-treenode-icon ';
+UITreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, deps: [{ token: forwardRef(() => Tree) }], target: i0.ɵɵFactoryTarget.Component });
+UITreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UITreeNode, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: "root", index: "index", firstChild: "firstChild", lastChild: "lastChild", level: "level", indentation: "indentation" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `, isInline: true, components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeNode',
+                    template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Tree)]
+                }] }]; }, propDecorators: { rowNode: [{
+                type: Input
+            }], node: [{
+                type: Input
+            }], parentNode: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], firstChild: [{
+                type: Input
+            }], lastChild: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }] } });
+export class Tree {
+    constructor(el, dragDropService, config) {
+        this.el = el;
+        this.dragDropService = dragDropService;
+        this.config = config;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onNodeContextMenuSelect = new EventEmitter();
+        this.onNodeDrop = new EventEmitter();
+        this.layout = 'vertical';
+        this.metaKeySelection = true;
+        this.propagateSelectionUp = true;
+        this.propagateSelectionDown = true;
+        this.loadingIcon = 'pi pi-spinner';
+        this.emptyMessage = '';
+        this.filterBy = 'label';
+        this.filterMode = 'lenient';
+        this.indentation = 1.5;
+        this.trackBy = (index, item) => item;
+        this.onFilter = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.droppableNodes) {
+            this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(event => {
+                this.dragNodeTree = event.tree;
+                this.dragNode = event.node;
+                this.dragNodeSubNodes = event.subNodes;
+                this.dragNodeIndex = event.index;
+                this.dragNodeScope = event.scope;
+            });
+            this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(event => {
+                this.dragNodeTree = null;
+                this.dragNode = null;
+                this.dragNodeSubNodes = null;
+                this.dragNodeIndex = null;
+                this.dragNodeScope = null;
+                this.dragHover = false;
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this.updateSerializedValue();
+        }
+        if (simpleChange.scrollHeight && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    get horizontal() {
+        return this.layout == 'horizontal';
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.templateMap[item.name] = item.template;
+                    break;
+            }
+        });
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        this.serializeNodes(null, this.getRootNode(), 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            if (this.hasFilteredNodes()) {
+                node = this.getNodeWithKey(node.key, this.value);
+                if (!node) {
+                    return;
+                }
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.isCheckboxSelectionMode()) {
+                if (selected) {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, false);
+                    else
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, false);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, true);
+                    else
+                        this.selection = [...this.selection || [], node];
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, true);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else {
+                let metaSelection = this.nodeTouched ? false : this.metaKeySelection;
+                if (metaSelection) {
+                    let metaKey = (event.metaKey || event.ctrlKey);
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(node);
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            this.selection = (!metaKey) ? [] : this.selection || [];
+                            this.selection = [...this.selection, node];
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeSelect.emit({ originalEvent: event, node: node });
+                    }
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        if (selected) {
+                            this.selection = null;
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = node;
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    else {
+                        if (selected) {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = [...this.selection || [], node];
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    this.selectionChange.emit(this.selection);
+                }
+            }
+        }
+        this.nodeTouched = false;
+    }
+    onNodeTouchEnd() {
+        this.nodeTouched = true;
+    }
+    onNodeRightClick(event, node) {
+        if (this.contextMenu) {
+            let eventTarget = event.target;
+            if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {
+                return;
+            }
+            else {
+                let index = this.findIndexInSelection(node);
+                let selected = (index >= 0);
+                if (!selected) {
+                    if (this.isSingleSelectionMode())
+                        this.selectionChange.emit(node);
+                    else
+                        this.selectionChange.emit([node]);
+                }
+                this.contextMenu.show(event);
+                this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });
+            }
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.isSingleSelectionMode()) {
+                let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.selection.length; i++) {
+                    let selectedNode = this.selection[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    syncNodeOption(node, parentNodes, option, value) {
+        // to synchronize the node option between the filtered nodes and the original nodes(this.value)
+        const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;
+        if (_node) {
+            _node[option] = value || node[option];
+        }
+    }
+    hasFilteredNodes() {
+        return this.filter && this.filteredNodes && this.filteredNodes.length;
+    }
+    getNodeWithKey(key, nodes) {
+        for (let node of nodes) {
+            if (node.key === key) {
+                return node;
+            }
+            if (node.children) {
+                let matchedNode = this.getNodeWithKey(key, node.children);
+                if (matchedNode) {
+                    return matchedNode;
+                }
+            }
+        }
+    }
+    propagateUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedCount = 0;
+            let childPartialSelected = false;
+            for (let child of node.children) {
+                if (this.isSelected(child)) {
+                    selectedCount++;
+                }
+                else if (child.partialSelected) {
+                    childPartialSelected = true;
+                }
+            }
+            if (select && selectedCount == node.children.length) {
+                this.selection = [...this.selection || [], node];
+                node.partialSelected = false;
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    }
+                }
+                if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+            this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateUp(parent, select);
+        }
+    }
+    propagateDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        if (select && index == -1) {
+            this.selection = [...this.selection || [], node];
+        }
+        else if (!select && index > -1) {
+            this.selection = this.selection.filter((val, i) => i != index);
+        }
+        node.partialSelected = false;
+        this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'multiple';
+    }
+    isCheckboxSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'checkbox';
+    }
+    isNodeLeaf(node) {
+        return node.leaf == false ? false : !(node.children && node.children.length);
+    }
+    getRootNode() {
+        return this.filteredNodes ? this.filteredNodes : this.value;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onDragOver(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.dataTransfer.dropEffect = 'move';
+            event.preventDefault();
+        }
+    }
+    onDrop(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.preventDefault();
+            let dragNode = this.dragNode;
+            if (this.allowDrop(dragNode, null, this.dragNodeScope)) {
+                let dragNodeIndex = this.dragNodeIndex;
+                this.value = this.value || [];
+                if (this.validateDrop) {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex,
+                        accept: () => {
+                            this.processTreeDrop(dragNode, dragNodeIndex);
+                        }
+                    });
+                }
+                else {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex
+                    });
+                    this.processTreeDrop(dragNode, dragNodeIndex);
+                }
+            }
+        }
+    }
+    processTreeDrop(dragNode, dragNodeIndex) {
+        this.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        this.value.push(dragNode);
+        this.dragDropService.stopDrag({
+            node: dragNode
+        });
+    }
+    onDragEnter() {
+        if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {
+            this.dragHover = true;
+        }
+    }
+    onDragLeave(event) {
+        if (this.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {
+                this.dragHover = false;
+            }
+        }
+    }
+    allowDrop(dragNode, dropNode, dragNodeScope) {
+        if (!dragNode) {
+            //prevent random html elements to be dragged
+            return false;
+        }
+        else if (this.isValidDragScope(dragNodeScope)) {
+            let allow = true;
+            if (dropNode) {
+                if (dragNode === dropNode) {
+                    allow = false;
+                }
+                else {
+                    let parent = dropNode.parent;
+                    while (parent != null) {
+                        if (parent === dragNode) {
+                            allow = false;
+                            break;
+                        }
+                        parent = parent.parent;
+                    }
+                }
+            }
+            return allow;
+        }
+        else {
+            return false;
+        }
+    }
+    isValidDragScope(dragScope) {
+        let dropScope = this.droppableScope;
+        if (dropScope) {
+            if (typeof dropScope === 'string') {
+                if (typeof dragScope === 'string')
+                    return dropScope === dragScope;
+                else if (dragScope instanceof Array)
+                    return dragScope.indexOf(dropScope) != -1;
+            }
+            else if (dropScope instanceof Array) {
+                if (typeof dragScope === 'string') {
+                    return dropScope.indexOf(dragScope) != -1;
+                }
+                else if (dragScope instanceof Array) {
+                    for (let s of dropScope) {
+                        for (let ds of dragScope) {
+                            if (s === ds) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+    _filter(value) {
+        let filterValue = value;
+        if (filterValue === '') {
+            this.filteredNodes = null;
+        }
+        else {
+            this.filteredNodes = [];
+            const searchFields = this.filterBy.split(',');
+            const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);
+            const isStrictMode = this.filterMode === 'strict';
+            for (let node of this.value) {
+                let copyNode = { ...node };
+                let paramsWithoutNode = { searchFields, filterText, isStrictMode };
+                if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                    (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                    this.filteredNodes.push(copyNode);
+                }
+            }
+        }
+        this.updateSerializedValue();
+        this.onFilter.emit({
+            filter: filterValue,
+            filteredValue: this.filteredNodes
+        });
+    }
+    resetFilter() {
+        this.filteredNodes = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = { ...childNode };
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                node.expanded = true;
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { searchFields, filterText, isStrictMode }) {
+        let matched = false;
+        for (let field of searchFields) {
+            let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);
+            if (fieldValue.indexOf(filterText) > -1) {
+                matched = true;
+            }
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngOnDestroy() {
+        if (this.dragStartSubscription) {
+            this.dragStartSubscription.unsubscribe();
+        }
+        if (this.dragStopSubscription) {
+            this.dragStopSubscription.unsubscribe();
+        }
+    }
+}
+Tree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, deps: [{ token: i0.ElementRef }, { token: i3.TreeDragDropService, optional: true }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Tree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tree, selector: "p-tree", inputs: { value: "value", selectionMode: "selectionMode", selection: "selection", style: "style", styleClass: "styleClass", contextMenu: "contextMenu", layout: "layout", draggableScope: "draggableScope", droppableScope: "droppableScope", draggableNodes: "draggableNodes", droppableNodes: "droppableNodes", metaKeySelection: "metaKeySelection", propagateSelectionUp: "propagateSelectionUp", propagateSelectionDown: "propagateSelectionDown", loading: "loading", loadingIcon: "loadingIcon", emptyMessage: "emptyMessage", ariaLabel: "ariaLabel", togglerAriaLabel: "togglerAriaLabel", ariaLabelledBy: "ariaLabelledBy", validateDrop: "validateDrop", filter: "filter", filterBy: "filterBy", filterMode: "filterMode", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualNodeHeight: "virtualNodeHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", indentation: "indentation", trackBy: "trackBy" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDrop: "onNodeDrop", onFilter: "onFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"], components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tree', template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i3.TreeDragDropService, decorators: [{
+                    type: Optional
+                }] }, { type: i3.PrimeNGConfig }]; }, propDecorators: { value: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onNodeContextMenuSelect: [{
+                type: Output
+            }], onNodeDrop: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], draggableScope: [{
+                type: Input
+            }], droppableScope: [{
+                type: Input
+            }], draggableNodes: [{
+                type: Input
+            }], droppableNodes: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], togglerAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], validateDrop: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualNodeHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }] } });
+export class TreeModule {
+}
+TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, declarations: [Tree, UITreeNode], imports: [CommonModule, ScrollingModule, RippleModule], exports: [Tree, SharedModule, ScrollingModule] });
+TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, imports: [[CommonModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule, RippleModule],
+                    exports: [Tree, SharedModule, ScrollingModule],
+                    declarations: [Tree, UITreeNode]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVlL3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUE0QixNQUFNLEVBQUMsWUFBWSxFQUMzRSxlQUFlLEVBQXVCLE1BQU0sRUFBWSxVQUFVLEVBQUMsdUJBQXVCLEVBQWdCLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSyxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFnQixlQUFlLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDckUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBSTFDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWlGNUMsTUFBTSxPQUFPLFVBQVU7SUF3Qm5CLFlBQTRDLElBQUk7UUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFZLENBQUM7SUFDN0IsQ0FBQztJQVFELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxF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QVM7dUJBQUMsUUFBUTs7QUE4bUJ2QixNQUFNLE9BQU8sVUFBVTs7dUdBQVYsVUFBVTt3R0FBVixVQUFVLGlCQXRzQlYsSUFBSSxFQWxlSixVQUFVLGFBb3FDVCxZQUFZLEVBQUMsZUFBZSxFQUFDLFlBQVksYUFsc0IxQyxJQUFJLEVBbXNCRSxZQUFZLEVBQUMsZUFBZTt3R0FHbEMsVUFBVSxZQUpWLENBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxZQUFZLENBQUMsRUFDckMsWUFBWSxFQUFDLGVBQWU7MkZBR2xDLFVBQVU7a0JBTHRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxZQUFZLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsZUFBZSxDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUMsVUFBVSxDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LElucHV0LEFmdGVyQ29udGVudEluaXQsT25EZXN0cm95LE91dHB1dCxFdmVudEVtaXR0ZXIsT25Jbml0LE9uQ2hhbmdlcyxcbiAgICBDb250ZW50Q2hpbGRyZW4sUXVlcnlMaXN0LFRlbXBsYXRlUmVmLEluamVjdCxFbGVtZW50UmVmLGZvcndhcmRSZWYsQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7T3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1ByaW1lTkdDb25maWcsIFRyYW5zbGF0aW9uS2V5cywgVHJlZU5vZGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7U2hhcmVkTW9kdWxlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1ByaW1lVGVtcGxhdGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7VHJlZURyYWdEcm9wU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCbG9ja2FibGVVSX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSAncHJpbWVuZy91dGlscyc7XG5pbXBvcnQge0RvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmVlTm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cInRyZWUuZHJvcHBhYmxlTm9kZXNcIiBjbGFzcz1cInAtdHJlZW5vZGUtZHJvcHBvaW50XCIgW25nQ2xhc3NdPVwieydwLXRyZWVub2RlLWRyb3Bwb2ludC1hY3RpdmUnOmRyYWdob3ZlclByZXZ9XCJcbiAgICAgICAgICAgIChkcm9wKT1cIm9uRHJvcFBvaW50KCRldmVudCwtMSlcIiAoZHJhZ292ZXIpPVwib25Ecm9wUG9pbnREcmFnT3ZlcigkZXZlbnQpXCIgKGRyYWdlbnRlcik9XCJvbkRyb3BQb2ludERyYWdFbnRlcigkZXZlbnQsLTEpXCIgKGRyYWdsZWF2ZSk9XCJvbkRyb3BQb2ludERyYWdMZWF2ZSgkZXZlbnQpXCI+PC9saT5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIiF0cmVlLmhvcml6b250YWxcIiBbbmdDbGFzc109XCJbJ3AtdHJlZW5vZGUnLG5vZGUuc3R5bGVDbGFzc3x8JycsIGlzTGVhZigpID8gJ3AtdHJlZW5vZGUtbGVhZic6ICcnXVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWVub2RlLWNvbnRlbnRcIiBbc3R5bGUucGFkZGluZ0xlZnRdPVwiKGxldmVsICogaW5kZW50YXRpb24pICArICdyZW0nXCIgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudClcIiAoY29udGV4dG1lbnUpPVwib25Ob2RlUmlnaHRDbGljaygkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uTm9kZVRvdWNoRW5kKClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJvcCk9XCJvbkRyb3BOb2RlKCRldmVudClcIiAoZHJhZ292ZXIpPVwib25Ecm9wTm9kZURyYWdPdmVyKCRldmVudClcIiAoZHJhZ2VudGVyKT1cIm9uRHJvcE5vZGVEcmFnRW50ZXIoJGV2ZW50KVwiIChkcmFnbGVhdmUpPVwib25Ecm9wTm9kZURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJ0cmVlLmRyYWdnYWJsZU5vZGVzXCIgKGRyYWdzdGFydCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCIgKGRyYWdlbmQpPVwib25EcmFnU3RvcCgkZXZlbnQpXCIgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC10cmVlbm9kZS1zZWxlY3RhYmxlJzp0cmVlLnNlbGVjdGlvbk1vZGUgJiYgbm9kZS5zZWxlY3RhYmxlICE9PSBmYWxzZSwncC10cmVlbm9kZS1kcmFnb3Zlcic6ZHJhZ2hvdmVyTm9kZSwgJ3AtaGlnaGxpZ2h0Jzppc1NlbGVjdGVkKCl9XCIgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiBbYXR0ci5hcmlhLXBvc2luc2V0XT1cInRoaXMuaW5kZXggKyAxXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJ0aGlzLm5vZGUuZXhwYW5kZWRcIiBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwibm9kZS5sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRyZWUudG9nZ2xlckFyaWFMYWJlbFwiIGNsYXNzPVwicC10cmVlLXRvZ2dsZXIgcC1saW5rXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCIgcFJpcHBsZSB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdHJlZS10b2dnbGVyLWljb24gcGkgcGktZndcIiBbbmdDbGFzc109XCJ7J3BpLWNoZXZyb24tcmlnaHQnOiFub2RlLmV4cGFuZGVkLCdwaS1jaGV2cm9uLWRvd24nOm5vZGUuZXhwYW5kZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hlY2tib3ggcC1jb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J3AtY2hlY2tib3gtZGlzYWJsZWQnOiBub2RlLnNlbGVjdGFibGUgPT09IGZhbHNlfVwiICpuZ0lmPVwidHJlZS5zZWxlY3Rpb25Nb2RlID09ICdjaGVja2JveCdcIiBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNTZWxlY3RlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jaGVja2JveC1ib3hcIiBbbmdDbGFzc109XCJ7J3AtaGlnaGxpZ2h0JzogaXNTZWxlY3RlZCgpLCAncC1pbmRldGVybWluYXRlJzogbm9kZS5wYXJ0aWFsU2VsZWN0ZWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNoZWNrYm94LWljb24gcGlcIiBbbmdDbGFzc109XCJ7J3BpLWNoZWNrJzppc1NlbGVjdGVkKCksJ3BpLW1pbnVzJzpub2RlLnBhcnRpYWxTZWxlY3RlZH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJnZXRJY29uKClcIiAqbmdJZj1cIm5vZGUuaWNvbnx8bm9kZS5leHBhbmRlZEljb258fG5vZGUuY29sbGFwc2VkSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRyZWVub2RlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdHJlZS5nZXRUZW1wbGF0ZUZvck5vZGUobm9kZSlcIj57e25vZGUubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRyZWUuZ2V0VGVtcGxhdGVGb3JOb2RlKG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlLmdldFRlbXBsYXRlRm9yTm9kZShub2RlKTsgY29udGV4dDogeyRpbXBsaWNpdDogbm9kZX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICpuZ0lmPVwiIXRyZWUudmlydHVhbFNjcm9sbCAmJiBub2RlLmNoaWxkcmVuICYmIG5vZGUuZXhwYW5kZWRcIiBbc3R5bGUuZGlzcGxheV09XCJub2RlLmV4cGFuZGVkID8gJ2Jsb2NrJyA6ICdub25lJ1wiIHJvbGU9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC10cmVlTm9kZSAqbmdGb3I9XCJsZXQgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW47bGV0IGZpcnN0Q2hpbGQ9Zmlyc3Q7bGV0IGxhc3RDaGlsZD1sYXN0OyBsZXQgaW5kZXg9aW5kZXg7IHRyYWNrQnk6IHRyZWUudHJhY2tCeVwiIFtub2RlXT1cImNoaWxkTm9kZVwiIFtwYXJlbnROb2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZpcnN0Q2hpbGRdPVwiZmlyc3RDaGlsZFwiIFtsYXN0Q2hpbGRdPVwibGFzdENoaWxkXCIgW2luZGV4XT1cImluZGV4XCIgW3N0eWxlLmhlaWdodC5weF09XCJ0cmVlLnZpcnR1YWxOb2RlSGVpZ2h0XCIgW2xldmVsXT1cImxldmVsICsgMVwiPjwvcC10cmVlTm9kZT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSAqbmdJZj1cInRyZWUuZHJvcHBhYmxlTm9kZXMmJmxhc3RDaGlsZFwiIGNsYXNzPVwicC10cmVlbm9kZS1kcm9wcG9pbnRcIiBbbmdDbGFzc109XCJ7J3AtdHJlZW5vZGUtZHJvcHBvaW50LWFjdGl2ZSc6ZHJhZ2hvdmVyTmV4dH1cIlxuICAgICAgICAgICAgKGRyb3ApPVwib25Ecm9wUG9pbnQoJGV2ZW50LDEpXCIgKGRyYWdvdmVyKT1cIm9uRHJvcFBvaW50RHJhZ092ZXIoJGV2ZW50KVwiIChkcmFnZW50ZXIpPVwib25Ecm9wUG9pbnREcmFnRW50ZXIoJGV2ZW50LDEpXCIgKGRyYWdsZWF2ZSk9XCJvbkRyb3BQb2ludERyYWdMZWF2ZSgkZXZlbnQpXCI+PC9saT5cbiAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInRyZWUuaG9yaXpvbnRhbFwiIFtjbGFzc109XCJub2RlLnN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtdHJlZW5vZGUtY29ubmVjdG9yXCIgKm5nSWY9XCIhcm9vdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInAtdHJlZW5vZGUtY29ubmVjdG9yLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieydwLXRyZWVub2RlLWNvbm5lY3Rvci1saW5lJzohZmlyc3RDaGlsZH1cIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieydwLXRyZWVub2RlLWNvbm5lY3Rvci1saW5lJzohbGFzdENoaWxkfVwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC10cmVlbm9kZVwiIFtuZ0NsYXNzXT1cInsncC10cmVlbm9kZS1jb2xsYXBzZWQnOiFub2RlLmV4cGFuZGVkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWVub2RlLWNvbnRlbnRcIiB0YWJpbmRleD1cIjBcIiBbbmdDbGFzc109XCJ7J3AtdHJlZW5vZGUtc2VsZWN0YWJsZSc6dHJlZS5zZWxlY3Rpb25Nb2RlLCdwLWhpZ2hsaWdodCc6aXNTZWxlY3RlZCgpfVwiIChjbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQpXCIgKGNvbnRleHRtZW51KT1cIm9uTm9kZVJpZ2h0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b3VjaGVuZCk9XCJvbk5vZGVUb3VjaEVuZCgpXCIgKGtleWRvd24pPVwib25Ob2RlS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmFyaWEtbGFiZWxdPVwidHJlZS50b2dnbGVyQXJpYUxhYmVsXCIgY2xhc3M9XCJwLXRyZWUtdG9nZ2xlciBwaSBwaS1md1wiIFtuZ0NsYXNzXT1cInsncGktcGx1cyc6IW5vZGUuZXhwYW5kZWQsJ3BpLW1pbnVzJzpub2RlLmV4cGFuZGVkfVwiICpuZ0lmPVwiIWlzTGVhZigpXCIgKGNsaWNrKT1cInRvZ2dsZSgkZXZlbnQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiZ2V0SWNvbigpXCIgKm5nSWY9XCJub2RlLmljb258fG5vZGUuZXhwYW5kZWRJY29ufHxub2RlLmNvbGxhcHNlZEljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC10cmVlbm9kZS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdHJlZS5nZXRUZW1wbGF0ZUZvck5vZGUobm9kZSlcIj57e25vZGUubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidHJlZS5nZXRUZW1wbGF0ZUZvck5vZGUobm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZS5nZXRUZW1wbGF0ZUZvck5vZGUobm9kZSk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG5vZGV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuLWNvbnRhaW5lclwiICpuZ0lmPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkXCIgW3N0eWxlLmRpc3BsYXldPVwibm9kZS5leHBhbmRlZCA/ICd0YWJsZS1jZWxsJyA6ICdub25lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWVub2RlLWNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVOb2RlICpuZ0Zvcj1cImxldCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlbjtsZXQgZmlyc3RDaGlsZD1maXJzdDtsZXQgbGFzdENoaWxkPWxhc3Q7IHRyYWNrQnk6IHRyZWUudHJhY2tCeVwiIFtub2RlXT1cImNoaWxkTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpcnN0Q2hpbGRdPVwiZmlyc3RDaGlsZFwiIFtsYXN0Q2hpbGRdPVwibGFzdENoaWxkXCI+PC9wLXRyZWVOb2RlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVUlUcmVlTm9kZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBzdGF0aWMgSUNPTl9DTEFTUzogc3RyaW5nID0gJ3AtdHJlZW5vZGUtaWNvbiAnO1xuXG4gICAgQElucHV0KCkgcm93Tm9kZTogYW55O1xuXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGU7XG5cbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZTtcblxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBpbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZmlyc3RDaGlsZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxhc3RDaGlsZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxldmVsOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpbmRlbnRhdGlvbjogbnVtYmVyO1xuXG4gICAgdHJlZTogVHJlZTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBUcmVlKSkgdHJlZSkge1xuICAgICAgICB0aGlzLnRyZWUgPSB0cmVlIGFzIFRyZWU7XG4gICAgfVxuXG4gICAgZHJhZ2hvdmVyUHJldjogYm9vbGVhbjtcblxuICAgIGRyYWdob3Zlck5leHQ6IGJvb2xlYW47XG5cbiAgICBkcmFnaG92ZXJOb2RlOiBib29sZWFuXG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5ub2RlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuICAgICAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWUuc3luY05vZGVPcHRpb24odGhpcy5ub2RlLCB0aGlzLnRyZWUudmFsdWUsICdwYXJlbnQnLCB0aGlzLnRyZWUuZ2V0Tm9kZVdpdGhLZXkodGhpcy5wYXJlbnROb2RlLmtleSwgdGhpcy50cmVlLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJY29uKCkge1xuICAgICAgICBsZXQgaWNvbjogc3RyaW5nO1xuXG4gICAgICAgIGlmICh0aGlzLm5vZGUuaWNvbilcbiAgICAgICAgICAgIGljb24gPSB0aGlzLm5vZGUuaWNvbjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWNvbiA9IHRoaXMubm9kZS5leHBhbmRlZCAmJiB0aGlzLm5vZGUuY2hpbGRyZW4gJiYgdGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aCA/IHRoaXMubm9kZS5leHBhbmRlZEljb24gOiB0aGlzLm5vZGUuY29sbGFwc2VkSWNvbjtcblxuICAgICAgICByZXR1cm4gVUlUcmVlTm9kZS5JQ09OX0NMQVNTICsgJyAnICsgaWNvbjtcbiAgICB9XG5cbiAgICBpc0xlYWYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyZWUuaXNOb2RlTGVhZih0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHRvZ2dsZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZS5leHBhbmRlZClcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoZXZlbnQpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmV4cGFuZChldmVudCk7XG4gICAgfVxuXG4gICAgZXhwYW5kKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLm5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy50cmVlLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZS51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyZWUub25Ob2RlRXhwYW5kLmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGV9KTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRyZWUudmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy50cmVlLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJlZS5vbk5vZGVDb2xsYXBzZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogdGhpcy5ub2RlfSk7XG4gICAgfVxuXG4gICAgb25Ob2RlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50cmVlLm9uTm9kZUNsaWNrKGV2ZW50LCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIG9uTm9kZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSAxMykge1xuICAgICAgICAgICAgdGhpcy50cmVlLm9uTm9kZUNsaWNrKGV2ZW50LCB0aGlzLm5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ob2RlVG91Y2hFbmQoKSB7XG4gICAgICAgIHRoaXMudHJlZS5vbk5vZGVUb3VjaEVuZCgpO1xuICAgIH1cblxuICAgIG9uTm9kZVJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50cmVlLm9uTm9kZVJpZ2h0Q2xpY2soZXZlbnQsIHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5pc1NlbGVjdGVkKHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wUG9pbnQoZXZlbnQ6IEV2ZW50LCBwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxldCBkcmFnTm9kZSA9IHRoaXMudHJlZS5kcmFnTm9kZTtcbiAgICAgICAgbGV0IGRyYWdOb2RlSW5kZXggPSB0aGlzLnRyZWUuZHJhZ05vZGVJbmRleDtcbiAgICAgICAgbGV0IGRyYWdOb2RlU2NvcGUgPSB0aGlzLnRyZWUuZHJhZ05vZGVTY29wZTtcbiAgICAgICAgbGV0IGlzVmFsaWREcm9wUG9pbnRJbmRleCA9IHRoaXMudHJlZS5kcmFnTm9kZVRyZWUgPT09IHRoaXMudHJlZSA/IChwb3NpdGlvbiA9PT0gMSB8fCBkcmFnTm9kZUluZGV4ICE9PSB0aGlzLmluZGV4IC0gMSkgOiB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnRyZWUuYWxsb3dEcm9wKGRyYWdOb2RlLCB0aGlzLm5vZGUsIGRyYWdOb2RlU2NvcGUpICYmIGlzVmFsaWREcm9wUG9pbnRJbmRleCkge1xuICAgICAgICAgICAgbGV0IGRyb3BQYXJhbXMgPSB7Li4udGhpcy5jcmVhdGVEcm9wUG9pbnRFdmVudE1ldGFkYXRhKHBvc2l0aW9uKX07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWUudmFsaWRhdGVEcm9wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlLm9uTm9kZURyb3AuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBkcmFnTm9kZTogZHJhZ05vZGUsXG4gICAgICAgICAgICAgICAgICAgIGRyb3BOb2RlOiB0aGlzLm5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1BvaW50RHJvcChkcm9wUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUG9pbnREcm9wKGRyb3BQYXJhbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVEcm9wLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICBkcm9wTm9kZTogdGhpcy5ub2RlLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnaG92ZXJQcmV2ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZHJhZ2hvdmVyTmV4dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb2Nlc3NQb2ludERyb3AoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld05vZGVMaXN0ID0gZXZlbnQuZHJvcE5vZGUucGFyZW50ID8gZXZlbnQuZHJvcE5vZGUucGFyZW50LmNoaWxkcmVuIDogdGhpcy50cmVlLnZhbHVlO1xuICAgICAgICBldmVudC5kcmFnTm9kZVN1Yk5vZGVzLnNwbGljZShldmVudC5kcmFnTm9kZUluZGV4LCAxKTtcbiAgICAgICAgbGV0IGRyb3BJbmRleCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgaWYgKGV2ZW50LnBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgZHJvcEluZGV4ID0gKGV2ZW50LmRyYWdOb2RlU3ViTm9kZXMgPT09IG5ld05vZGVMaXN0KSA/ICgoZXZlbnQuZHJhZ05vZGVJbmRleCA+IGV2ZW50LmluZGV4KSA/IGV2ZW50LmluZGV4IDogZXZlbnQuaW5kZXggLSAxKSA6IGV2ZW50LmluZGV4O1xuICAgICAgICAgICAgbmV3Tm9kZUxpc3Quc3BsaWNlKGRyb3BJbmRleCwgMCwgZXZlbnQuZHJhZ05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZHJvcEluZGV4ID0gbmV3Tm9kZUxpc3QubGVuZ3RoO1xuICAgICAgICAgICAgbmV3Tm9kZUxpc3QucHVzaChldmVudC5kcmFnTm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRyZWUuZHJhZ0Ryb3BTZXJ2aWNlLnN0b3BEcmFnKHtcbiAgICAgICAgICAgIG5vZGU6IGV2ZW50LmRyYWdOb2RlLFxuICAgICAgICAgICAgc3ViTm9kZXM6IGV2ZW50LmRyb3BOb2RlLnBhcmVudCA/IGV2ZW50LmRyb3BOb2RlLnBhcmVudC5jaGlsZHJlbiA6IHRoaXMudHJlZS52YWx1ZSxcbiAgICAgICAgICAgIGluZGV4OiBldmVudC5kcmFnTm9kZUluZGV4XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZURyb3BQb2ludEV2ZW50TWV0YWRhdGEocG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRyYWdOb2RlOiB0aGlzLnRyZWUuZHJhZ05vZGUsXG4gICAgICAgICAgICBkcmFnTm9kZUluZGV4OiAgdGhpcy50cmVlLmRyYWdOb2RlSW5kZXgsXG4gICAgICAgICAgICBkcmFnTm9kZVN1Yk5vZGVzOiB0aGlzLnRyZWUuZHJhZ05vZGVTdWJOb2RlcyxcbiAgICAgICAgICAgIGRyb3BOb2RlOiB0aGlzLm5vZGUsXG4gICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uRHJvcFBvaW50RHJhZ092ZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Ecm9wUG9pbnREcmFnRW50ZXIoZXZlbnQ6IEV2ZW50LCBwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnRyZWUuYWxsb3dEcm9wKHRoaXMudHJlZS5kcmFnTm9kZSwgdGhpcy5ub2RlLCB0aGlzLnRyZWUuZHJhZ05vZGVTY29wZSkpIHtcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnaG92ZXJQcmV2ID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdob3Zlck5leHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wUG9pbnREcmFnTGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZHJhZ2hvdmVyUHJldiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRyYWdob3Zlck5leHQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudCkge1xuICAgICAgICBpZiAodGhpcy50cmVlLmRyYWdnYWJsZU5vZGVzICYmIHRoaXMubm9kZS5kcmFnZ2FibGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcInRleHRcIiwgXCJkYXRhXCIpO1xuXG4gICAgICAgICAgICB0aGlzLnRyZWUuZHJhZ0Ryb3BTZXJ2aWNlLnN0YXJ0RHJhZyh7XG4gICAgICAgICAgICAgICAgdHJlZTogdGhpcyxcbiAgICAgICAgICAgICAgICBub2RlOiB0aGlzLm5vZGUsXG4gICAgICAgICAgICAgICAgc3ViTm9kZXM6IHRoaXMubm9kZS5wYXJlbnQgPyB0aGlzLm5vZGUucGFyZW50LmNoaWxkcmVuIDogdGhpcy50cmVlLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgIHNjb3BlOiB0aGlzLnRyZWUuZHJhZ2dhYmxlU2NvcGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ1N0b3AoZXZlbnQpIHtcbiAgICAgICAgdGhpcy50cmVlLmRyYWdEcm9wU2VydmljZS5zdG9wRHJhZyh7XG4gICAgICAgICAgICBub2RlOiB0aGlzLm5vZGUsXG4gICAgICAgICAgICBzdWJOb2RlczogdGhpcy5ub2RlLnBhcmVudCA/IHRoaXMubm9kZS5wYXJlbnQuY2hpbGRyZW4gOiB0aGlzLnRyZWUudmFsdWUsXG4gICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRyb3BOb2RlRHJhZ092ZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG4gICAgICAgIGlmICh0aGlzLnRyZWUuZHJvcHBhYmxlTm9kZXMpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJvcE5vZGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZS5kcm9wcGFibGVOb2RlcyAmJiB0aGlzLm5vZGUuZHJvcHBhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgbGV0IGRyYWdOb2RlID0gdGhpcy50cmVlLmRyYWdOb2RlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50cmVlLmFsbG93RHJvcChkcmFnTm9kZSwgdGhpcy5ub2RlLCB0aGlzLnRyZWUuZHJhZ05vZGVTY29wZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZHJvcFBhcmFtcyA9IHsuLi50aGlzLmNyZWF0ZURyb3BOb2RlRXZlbnRNZXRhZGF0YSgpfTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWUudmFsaWRhdGVEcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVEcm9wLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnTm9kZTogZHJhZ05vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkcm9wTm9kZTogdGhpcy5ub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NOb2RlRHJvcChkcm9wUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NOb2RlRHJvcChkcm9wUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmVlLm9uTm9kZURyb3AuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdOb2RlOiBkcmFnTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BOb2RlOiB0aGlzLm5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5kcmFnaG92ZXJOb2RlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY3JlYXRlRHJvcE5vZGVFdmVudE1ldGFkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZHJhZ05vZGU6IHRoaXMudHJlZS5kcmFnTm9kZSxcbiAgICAgICAgICAgIGRyYWdOb2RlSW5kZXg6ICB0aGlzLnRyZWUuZHJhZ05vZGVJbmRleCxcbiAgICAgICAgICAgIGRyYWdOb2RlU3ViTm9kZXM6IHRoaXMudHJlZS5kcmFnTm9kZVN1Yk5vZGVzLFxuICAgICAgICAgICAgZHJvcE5vZGU6IHRoaXMubm9kZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByb2Nlc3NOb2RlRHJvcChldmVudCkge1xuICAgICAgICBsZXQgZHJhZ05vZGVJbmRleCA9IGV2ZW50LmRyYWdOb2RlSW5kZXg7XG4gICAgICAgIGV2ZW50LmRyYWdOb2RlU3ViTm9kZXMuc3BsaWNlKGRyYWdOb2RlSW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChldmVudC5kcm9wTm9kZS5jaGlsZHJlbilcbiAgICAgICAgICAgIGV2ZW50LmRyb3BOb2RlLmNoaWxkcmVuLnB1c2goZXZlbnQuZHJhZ05vZGUpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBldmVudC5kcm9wTm9kZS5jaGlsZHJlbiA9IFtldmVudC5kcmFnTm9kZV07XG5cbiAgICAgICAgdGhpcy50cmVlLmRyYWdEcm9wU2VydmljZS5zdG9wRHJhZyh7XG4gICAgICAgICAgICBub2RlOiBldmVudC5kcmFnTm9kZSxcbiAgICAgICAgICAgIHN1Yk5vZGVzOiBldmVudC5kcm9wTm9kZS5wYXJlbnQgPyBldmVudC5kcm9wTm9kZS5wYXJlbnQuY2hpbGRyZW4gOiB0aGlzLnRyZWUudmFsdWUsXG4gICAgICAgICAgICBpbmRleDogZHJhZ05vZGVJbmRleFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRyb3BOb2RlRHJhZ0VudGVyKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRyZWUuZHJvcHBhYmxlTm9kZXMgJiYgdGhpcy5ub2RlLmRyb3BwYWJsZSAhPT0gZmFsc2UgJiYgdGhpcy50cmVlLmFsbG93RHJvcCh0aGlzLnRyZWUuZHJhZ05vZGUsIHRoaXMubm9kZSwgdGhpcy50cmVlLmRyYWdOb2RlU2NvcGUpKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdob3Zlck5vZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wTm9kZURyYWdMZWF2ZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy50cmVlLmRyb3BwYWJsZU5vZGVzKSB7XG4gICAgICAgICAgICBsZXQgcmVjdCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQueCA+IHJlY3QubGVmdCArIHJlY3Qud2lkdGggfHwgZXZlbnQueCA8IHJlY3QubGVmdCB8fCBldmVudC55ID49IE1hdGguZmxvb3IocmVjdC50b3AgKyByZWN0LmhlaWdodCkgfHwgZXZlbnQueSA8IHJlY3QudG9wKSB7XG4gICAgICAgICAgICAgICB0aGlzLmRyYWdob3Zlck5vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBub2RlRWxlbWVudCA9ICg8SFRNTERpdkVsZW1lbnQ+IGV2ZW50LnRhcmdldCkucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgIGlmIChub2RlRWxlbWVudC5ub2RlTmFtZSAhPT0gJ1AtVFJFRU5PREUnIHx8ICh0aGlzLnRyZWUuY29udGV4dE1lbnUgJiYgdGhpcy50cmVlLmNvbnRleHRNZW51LmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL2Rvd24gYXJyb3dcbiAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdEVsZW1lbnQgPSAodGhpcy50cmVlLmRyb3BwYWJsZU5vZGVzKSA/IG5vZGVFbGVtZW50LmNoaWxkcmVuWzFdLmNoaWxkcmVuWzFdIDogbm9kZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV07XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RFbGVtZW50ICYmIGxpc3RFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUobGlzdEVsZW1lbnQuY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dE5vZGVFbGVtZW50ID0gbm9kZUVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTm9kZShuZXh0Tm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nQW5jZXN0b3IgPSB0aGlzLmZpbmROZXh0U2libGluZ09mQW5jZXN0b3Iobm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTaWJsaW5nQW5jZXN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTm9kZShuZXh0U2libGluZ0FuY2VzdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy91cCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICBpZiAobm9kZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRMYXN0VmlzaWJsZURlc2NlbmRhbnQobm9kZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGVFbGVtZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlRWxlbWVudChub2RlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUocGFyZW50Tm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL3JpZ2h0IGFycm93XG4gICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLmV4cGFuZGVkICYmICF0aGlzLnRyZWUuaXNOb2RlTGVhZih0aGlzLm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vbGVmdCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGVFbGVtZW50ID0gdGhpcy5nZXRQYXJlbnROb2RlRWxlbWVudChub2RlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c05vZGUocGFyZW50Tm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VudGVyXG4gICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgIHRoaXMudHJlZS5vbk5vZGVDbGljayhldmVudCwgdGhpcy5ub2RlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy9ubyBvcFxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dFNpYmxpbmdPZkFuY2VzdG9yKG5vZGVFbGVtZW50KSB7XG4gICAgICAgIGxldCBwYXJlbnROb2RlRWxlbWVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZUVsZW1lbnQobm9kZUVsZW1lbnQpO1xuICAgICAgICBpZiAocGFyZW50Tm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlRWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTmV4dFNpYmxpbmdPZkFuY2VzdG9yKHBhcmVudE5vZGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZExhc3RWaXNpYmxlRGVzY2VuZGFudChub2RlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBsaXN0RWxlbWVudCA9IDxIVE1MRWxlbWVudD4gQXJyYXkuZnJvbShub2RlRWxlbWVudC5jaGlsZHJlbikuZmluZChlbCA9PiBEb21IYW5kbGVyLmhhc0NsYXNzKGVsLCAncC10cmVlbm9kZScpKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0RWxlbWVudCA9IGxpc3RFbGVtZW50LmNoaWxkcmVuWzFdO1xuICAgICAgICBpZiAoY2hpbGRyZW5MaXN0RWxlbWVudCAmJiBjaGlsZHJlbkxpc3RFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDaGlsZEVsZW1lbnQgPSBjaGlsZHJlbkxpc3RFbGVtZW50LmNoaWxkcmVuW2NoaWxkcmVuTGlzdEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRMYXN0VmlzaWJsZURlc2NlbmRhbnQobGFzdENoaWxkRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZUVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQYXJlbnROb2RlRWxlbWVudChub2RlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlRWxlbWVudCA9IG5vZGVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgIHJldHVybiBwYXJlbnROb2RlRWxlbWVudC50YWdOYW1lID09PSAnUC1UUkVFTk9ERScgPyBwYXJlbnROb2RlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZm9jdXNOb2RlKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZS5kcm9wcGFibGVOb2RlcylcbiAgICAgICAgICAgIGVsZW1lbnQuY2hpbGRyZW5bMV0uY2hpbGRyZW5bMF0uZm9jdXMoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5mb2N1cygpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRyZWUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLXRyZWUgcC1jb21wb25lbnQnOnRydWUsJ3AtdHJlZS1zZWxlY3RhYmxlJzpzZWxlY3Rpb25Nb2RlLFxuICAgICAgICAgICAgICAgICdwLXRyZWVub2RlLWRyYWdvdmVyJzpkcmFnSG92ZXIsJ3AtdHJlZS1sb2FkaW5nJzogbG9hZGluZywgJ3AtdHJlZS1mbGV4LXNjcm9sbGFibGUnOiBzY3JvbGxIZWlnaHQgPT09ICdmbGV4J31cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiICpuZ0lmPVwiIWhvcml6b250YWxcIlxuICAgICAgICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIiAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCIgKGRyYWdlbnRlcik9XCJvbkRyYWdFbnRlcigpXCIgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVlLWxvYWRpbmctb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5XCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidwLXRyZWUtbG9hZGluZy1pY29uIHBpLXNwaW4gJyArIGxvYWRpbmdJY29uXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJcIiBjbGFzcz1cInAtdHJlZS1maWx0ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0ICNmaWx0ZXIgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cInAtdHJlZS1maWx0ZXIgcC1pbnB1dHRleHQgcC1jb21wb25lbnRcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJmaWx0ZXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKGlucHV0KT1cIl9maWx0ZXIoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLXRyZWUtZmlsdGVyLWljb24gcGkgcGktc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGw7IGVsc2UgdmlydHVhbFNjcm9sbExpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVlLXdyYXBwZXJcIiBbc3R5bGUubWF4LWhlaWdodF09XCJzY3JvbGxIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicC10cmVlLWNvbnRhaW5lclwiICpuZ0lmPVwiZ2V0Um9vdE5vZGUoKVwiIHJvbGU9XCJ0cmVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVOb2RlICpuZ0Zvcj1cImxldCBub2RlIG9mIGdldFJvb3ROb2RlKCk7IGxldCBmaXJzdENoaWxkPWZpcnN0O2xldCBsYXN0Q2hpbGQ9bGFzdDsgbGV0IGluZGV4PWluZGV4OyB0cmFja0J5OiB0cmFja0J5XCIgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlyc3RDaGlsZF09XCJmaXJzdENoaWxkXCIgW2xhc3RDaGlsZF09XCJsYXN0Q2hpbGRcIiBbaW5kZXhdPVwiaW5kZXhcIiBbbGV2ZWxdPVwiMFwiPjwvcC10cmVlTm9kZT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsTGlzdD5cbiAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGNsYXNzPVwicC10cmVlLXdyYXBwZXJcIiBbc3R5bGUuaGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsTm9kZUhlaWdodFwiIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFwiIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFwiPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJwLXRyZWUtY29udGFpbmVyXCIgKm5nSWY9XCJnZXRSb290Tm9kZSgpXCIgcm9sZT1cInRyZWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZU5vZGUgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcm93Tm9kZSBvZiBzZXJpYWxpemVkVmFsdWU7IGxldCBmaXJzdENoaWxkPWZpcnN0OyBsZXQgbGFzdENoaWxkPWxhc3Q7IGxldCBpbmRleD1pbmRleDsgdHJhY2tCeTogdHJhY2tCeTsgdGVtcGxhdGVDYWNoZVNpemU6IDBcIiAgW2xldmVsXT1cInJvd05vZGUubGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd05vZGVdPVwicm93Tm9kZVwiIFtub2RlXT1cInJvd05vZGUubm9kZVwiIFtmaXJzdENoaWxkXT1cImZpcnN0Q2hpbGRcIiBbbGFzdENoaWxkXT1cImxhc3RDaGlsZFwiIFtpbmRleF09XCJpbmRleFwiIFtzdHlsZS5oZWlnaHQucHhdPVwidmlydHVhbE5vZGVIZWlnaHRcIiBbaW5kZW50YXRpb25dPVwiaW5kZW50YXRpb25cIj48L3AtdHJlZU5vZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdHJlZS1lbXB0eS1tZXNzYWdlXCIgKm5nSWY9XCIhbG9hZGluZyAmJiAoZ2V0Um9vdE5vZGUoKSA9PSBudWxsIHx8IGdldFJvb3ROb2RlKCkubGVuZ3RoID09PSAwKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlNZXNzYWdlVGVtcGxhdGU7IGVsc2UgZW1wdHlGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3tlbXB0eU1lc3NhZ2VMYWJlbH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHlGaWx0ZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eU1lc3NhZ2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydwLXRyZWUgcC10cmVlLWhvcml6b250YWwgcC1jb21wb25lbnQnOnRydWUsJ3AtdHJlZS1zZWxlY3RhYmxlJzpzZWxlY3Rpb25Nb2RlfVwiICBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCIgKm5nSWY9XCJob3Jpem9udGFsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWUtbG9hZGluZy1tYXNrIHAtY29tcG9uZW50LW92ZXJsYXlcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ3AtdHJlZS1sb2FkaW5nLWljb24gcGktc3BpbiAnICsgbG9hZGluZ0ljb25cIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cInZhbHVlJiZ2YWx1ZVswXVwiPlxuICAgICAgICAgICAgICAgIDxwLXRyZWVOb2RlIFtub2RlXT1cInZhbHVlWzBdXCIgW3Jvb3RdPVwidHJ1ZVwiPjwvcC10cmVlTm9kZT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVlLWVtcHR5LW1lc3NhZ2VcIiAqbmdJZj1cIiFsb2FkaW5nICYmIChnZXRSb290Tm9kZSgpID09IG51bGwgfHwgZ2V0Um9vdE5vZGUoKS5sZW5ndGggPT09IDApXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eU1lc3NhZ2VUZW1wbGF0ZTsgZWxzZSBlbXB0eUZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICB7e2VtcHR5TWVzc2FnZUxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNlbXB0eUZpbHRlciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5TWVzc2FnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWUuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZSBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlckNvbnRlbnRJbml0LE9uQ2hhbmdlcyxPbkRlc3Ryb3ksQmxvY2thYmxlVUkge1xuXG4gICAgQElucHV0KCkgdmFsdWU6IFRyZWVOb2RlW107XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb246IGFueTtcblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUV4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlQ29sbGFwc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUNvbnRleHRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVEcm9wOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0TWVudTogYW55O1xuXG4gICAgQElucHV0KCkgbGF5b3V0OiBzdHJpbmcgPSAndmVydGljYWwnO1xuXG4gICAgQElucHV0KCkgZHJhZ2dhYmxlU2NvcGU6IGFueTtcblxuICAgIEBJbnB1dCgpIGRyb3BwYWJsZVNjb3BlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBkcmFnZ2FibGVOb2RlczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGRyb3BwYWJsZU5vZGVzOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgbWV0YUtleVNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwcm9wYWdhdGVTZWxlY3Rpb25VcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwcm9wYWdhdGVTZWxlY3Rpb25Eb3duOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nSWNvbjogc3RyaW5nID0gJ3BpIHBpLXNwaW5uZXInO1xuXG4gICAgQElucHV0KCkgZW1wdHlNZXNzYWdlOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdG9nZ2xlckFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHZhbGlkYXRlRHJvcDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgPSAnbGFiZWwnO1xuXG4gICAgQElucHV0KCkgZmlsdGVyTW9kZTogc3RyaW5nID0gJ2xlbmllbnQnO1xuXG4gICAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdmlydHVhbE5vZGVIZWlnaHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaW5kZW50YXRpb246IG51bWJlciA9IDEuNTtcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuICAgIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG5cbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlydHVhbFNjcm9sbEJvZHk6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIHNlcmlhbGl6ZWRWYWx1ZTogYW55W107XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlNZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgdGVtcGxhdGVNYXA6IGFueTtcblxuICAgIHB1YmxpYyBub2RlVG91Y2hlZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBkcmFnTm9kZVRyZWU6IFRyZWU7XG5cbiAgICBwdWJsaWMgZHJhZ05vZGU6IFRyZWVOb2RlO1xuXG4gICAgcHVibGljIGRyYWdOb2RlU3ViTm9kZXM6IFRyZWVOb2RlW107XG5cbiAgICBwdWJsaWMgZHJhZ05vZGVJbmRleDogbnVtYmVyO1xuXG4gICAgcHVibGljIGRyYWdOb2RlU2NvcGU6IGFueTtcblxuICAgIHB1YmxpYyBkcmFnSG92ZXI6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgZHJhZ1N0b3BTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBmaWx0ZXJlZE5vZGVzOiBUcmVlTm9kZVtdO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBAT3B0aW9uYWwoKSBwdWJsaWMgZHJhZ0Ryb3BTZXJ2aWNlOiBUcmVlRHJhZ0Ryb3BTZXJ2aWNlLCBwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BwYWJsZU5vZGVzKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmRyYWdTdGFydCQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTm9kZVRyZWUgPSBldmVudC50cmVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGUgPSBldmVudC5ub2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVTdWJOb2RlcyA9IGV2ZW50LnN1Yk5vZGVzO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVJbmRleCA9IGV2ZW50LmluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVTY29wZSA9IGV2ZW50LnNjb3BlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24gPSB0aGlzLmRyYWdEcm9wU2VydmljZS5kcmFnU3RvcCQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTm9kZVRyZWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ05vZGVTdWJOb2RlcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnTm9kZUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdOb2RlU2NvcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ0hvdmVyID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zY3JvbGxIZWlnaHQgJiYgdGhpcy52aXJ0dWFsU2Nyb2xsQm9keSkge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsQm9keS5uZ09uSW5pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGhvcml6b250YWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dCA9PSAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5TWVzc2FnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5TWVzc2FnZSB8fCB0aGlzLmNvbmZpZy5nZXRUcmFuc2xhdGlvbihUcmFuc2xhdGlvbktleXMuRU1QVFlfTUVTU0FHRSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlTWFwID0ge307XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlTWFwW2l0ZW0ubmFtZV0gPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVTZXJpYWxpemVkVmFsdWUoKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplZFZhbHVlID0gW107XG4gICAgICAgIHRoaXMuc2VyaWFsaXplTm9kZXMobnVsbCwgdGhpcy5nZXRSb290Tm9kZSgpLCAwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVOb2RlcyhwYXJlbnQsIG5vZGVzLCBsZXZlbCwgdmlzaWJsZSkge1xuICAgICAgICBpZiAobm9kZXMgJiYgbm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dOb2RlID0ge1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB2aXNpYmxlICYmIChwYXJlbnQgPyBwYXJlbnQuZXhwYW5kZWQgOiB0cnVlKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJpYWxpemVkVmFsdWUucHVzaChyb3dOb2RlKTtcblxuICAgICAgICAgICAgICAgIGlmIChyb3dOb2RlLnZpc2libGUgJiYgbm9kZS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZU5vZGVzKG5vZGUsIG5vZGUuY2hpbGRyZW4sIGxldmVsICsgMSwgcm93Tm9kZS52aXNpYmxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vZGVDbGljayhldmVudCwgbm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IGV2ZW50VGFyZ2V0ID0gKDxFbGVtZW50PiBldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50VGFyZ2V0LCAncC10cmVlLXRvZ2dsZXInKSB8fCBEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50VGFyZ2V0LCAncC10cmVlLXRvZ2dsZXItaWNvbicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5zZWxlY3RhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRmlsdGVyZWROb2RlcygpKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMuZ2V0Tm9kZVdpdGhLZXkobm9kZS5rZXksIHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuZmluZEluZGV4SW5TZWxlY3Rpb24obm9kZSk7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSAoaW5kZXggPj0gMCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2hlY2tib3hTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGFnYXRlU2VsZWN0aW9uRG93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlRG93bihub2RlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9aW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BhZ2F0ZVNlbGVjdGlvblVwICYmIG5vZGUucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVVwKG5vZGUucGFyZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGFnYXRlU2VsZWN0aW9uRG93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlRG93bihub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbLi4udGhpcy5zZWxlY3Rpb258fFtdLG5vZGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BhZ2F0ZVNlbGVjdGlvblVwICYmIG5vZGUucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVVwKG5vZGUucGFyZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBtZXRhU2VsZWN0aW9uID0gdGhpcy5ub2RlVG91Y2hlZCA/IGZhbHNlIDogdGhpcy5tZXRhS2V5U2VsZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSAoZXZlbnQubWV0YUtleXx8ZXZlbnQuY3RybEtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkICYmIG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9aW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9ICghbWV0YUtleSkgPyBbXSA6IHRoaXMuc2VsZWN0aW9ufHxbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFsuLi50aGlzLnNlbGVjdGlvbixub2RlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVTZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVTZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsaSkgPT4gaSE9aW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlVW5zZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQsIG5vZGU6IG5vZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gWy4uLnRoaXMuc2VsZWN0aW9ufHxbXSxub2RlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ub2RlVG91Y2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uTm9kZVRvdWNoRW5kKCkge1xuICAgICAgICB0aGlzLm5vZGVUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk5vZGVSaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBub2RlOiBUcmVlTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0TWVudSkge1xuICAgICAgICAgICAgbGV0IGV2ZW50VGFyZ2V0ID0gKDxFbGVtZW50PiBldmVudC50YXJnZXQpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnRUYXJnZXQuY2xhc3NOYW1lICYmIGV2ZW50VGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCdwLXRyZWUtdG9nZ2xlcicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSAoaW5kZXggPj0gMCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChbbm9kZV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUuc2hvdyhldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVDb250ZXh0TWVudVNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZEluZGV4SW5TZWxlY3Rpb24obm9kZTogVHJlZU5vZGUpIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIGxldCBhcmVOb2Rlc0VxdWFsID0gKHRoaXMuc2VsZWN0aW9uLmtleSAmJiB0aGlzLnNlbGVjdGlvbi5rZXkgPT09IG5vZGUua2V5KSB8fCB0aGlzLnNlbGVjdGlvbiA9PSBub2RlO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gYXJlTm9kZXNFcXVhbCA/IDAgOiAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpICA8IHRoaXMuc2VsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSB0aGlzLnNlbGVjdGlvbltpXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFyZU5vZGVzRXF1YWwgPSAoc2VsZWN0ZWROb2RlLmtleSAmJiBzZWxlY3RlZE5vZGUua2V5ID09PSBub2RlLmtleSkgfHwgc2VsZWN0ZWROb2RlID09IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmVOb2Rlc0VxdWFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBzeW5jTm9kZU9wdGlvbihub2RlLCBwYXJlbnROb2Rlcywgb3B0aW9uLCB2YWx1ZT86IGFueSkge1xuICAgICAgICAvLyB0byBzeW5jaHJvbml6ZSB0aGUgbm9kZSBvcHRpb24gYmV0d2VlbiB0aGUgZmlsdGVyZWQgbm9kZXMgYW5kIHRoZSBvcmlnaW5hbCBub2Rlcyh0aGlzLnZhbHVlKVxuICAgICAgICBjb25zdCBfbm9kZSA9IHRoaXMuaGFzRmlsdGVyZWROb2RlcygpID8gdGhpcy5nZXROb2RlV2l0aEtleShub2RlLmtleSwgcGFyZW50Tm9kZXMpIDogbnVsbDtcbiAgICAgICAgaWYgKF9ub2RlKSB7XG4gICAgICAgICAgICBfbm9kZVtvcHRpb25dID0gdmFsdWV8fG5vZGVbb3B0aW9uXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc0ZpbHRlcmVkTm9kZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlciAmJiB0aGlzLmZpbHRlcmVkTm9kZXMgJiYgdGhpcy5maWx0ZXJlZE5vZGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXROb2RlV2l0aEtleShrZXk6IHN0cmluZywgbm9kZXM6IFRyZWVOb2RlW10pIHtcbiAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgaWYgKG5vZGUua2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlZE5vZGUgPSB0aGlzLmdldE5vZGVXaXRoS2V5KGtleSwgbm9kZS5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkTm9kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wYWdhdGVVcChub2RlOiBUcmVlTm9kZSwgc2VsZWN0OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRDb3VudDogbnVtYmVyID0gMDtcbiAgICAgICAgICAgIGxldCBjaGlsZFBhcnRpYWxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5wYXJ0aWFsU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQYXJ0aWFsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdCAmJiBzZWxlY3RlZENvdW50ID09IG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbLi4udGhpcy5zZWxlY3Rpb258fFtdLG5vZGVdO1xuICAgICAgICAgICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoKHZhbCxpKSA9PiBpIT1pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRQYXJ0aWFsU2VsZWN0ZWQgfHwgc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCAhPSBub2RlLmNoaWxkcmVuLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zeW5jTm9kZU9wdGlvbihub2RlLCB0aGlzLmZpbHRlcmVkTm9kZXMsICdwYXJ0aWFsU2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVVcChwYXJlbnQsIHNlbGVjdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wYWdhdGVEb3duKG5vZGU6IFRyZWVOb2RlLCBzZWxlY3Q6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcblxuICAgICAgICBpZiAoc2VsZWN0ICYmIGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IFsuLi50aGlzLnNlbGVjdGlvbnx8W10sbm9kZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXNlbGVjdCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcigodmFsLGkpID0+IGkhPWluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zeW5jTm9kZU9wdGlvbihub2RlLCB0aGlzLmZpbHRlcmVkTm9kZXMsICdwYXJ0aWFsU2VsZWN0ZWQnKTtcblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVEb3duKGNoaWxkLCBzZWxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChub2RlOiBUcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKSAhPSAtMTtcbiAgICB9XG5cbiAgICBpc1NpbmdsZVNlbGVjdGlvbk1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnO1xuICAgIH1cblxuICAgIGlzTXVsdGlwbGVTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnbXVsdGlwbGUnO1xuICAgIH1cblxuICAgIGlzQ2hlY2tib3hTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnY2hlY2tib3gnO1xuICAgIH1cblxuICAgIGlzTm9kZUxlYWYobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5sZWFmID09IGZhbHNlID8gZmFsc2UgOiAhKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGgpO1xuICAgIH1cblxuICAgIGdldFJvb3ROb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE5vZGVzID8gdGhpcy5maWx0ZXJlZE5vZGVzIDogdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXRUZW1wbGF0ZUZvck5vZGUobm9kZTogVHJlZU5vZGUpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVNYXApXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID8gdGhpcy50ZW1wbGF0ZU1hcFtub2RlLnR5cGVdIDogdGhpcy50ZW1wbGF0ZU1hcFsnZGVmYXVsdCddO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BwYWJsZU5vZGVzICYmICghdGhpcy52YWx1ZSB8fCB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJvcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wcGFibGVOb2RlcyAmJiAoIXRoaXMudmFsdWUgfHwgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGRyYWdOb2RlID0gdGhpcy5kcmFnTm9kZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dEcm9wKGRyYWdOb2RlLCBudWxsLCB0aGlzLmRyYWdOb2RlU2NvcGUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRyYWdOb2RlSW5kZXggPSB0aGlzLmRyYWdOb2RlSW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWV8fFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVEcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlRHJvcC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ05vZGU6IGRyYWdOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcE5vZGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogZHJhZ05vZGVJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1RyZWVEcm9wKGRyYWdOb2RlLCBkcmFnTm9kZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZURyb3AuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdOb2RlOiBkcmFnTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BOb2RlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGRyYWdOb2RlSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzVHJlZURyb3AoZHJhZ05vZGUsIGRyYWdOb2RlSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NUcmVlRHJvcChkcmFnTm9kZSwgZHJhZ05vZGVJbmRleCkge1xuICAgICAgICB0aGlzLmRyYWdOb2RlU3ViTm9kZXMuc3BsaWNlKGRyYWdOb2RlSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnZhbHVlLnB1c2goZHJhZ05vZGUpO1xuICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5zdG9wRHJhZyh7XG4gICAgICAgICAgICBub2RlOiBkcmFnTm9kZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcHBhYmxlTm9kZXMgJiYgdGhpcy5hbGxvd0Ryb3AodGhpcy5kcmFnTm9kZSwgbnVsbCwgdGhpcy5kcmFnTm9kZVNjb3BlKSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnSG92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnTGVhdmUoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcHBhYmxlTm9kZXMpIHtcbiAgICAgICAgICAgIGxldCByZWN0ID0gZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmIChldmVudC54ID4gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCB8fCBldmVudC54IDwgcmVjdC5sZWZ0IHx8IGV2ZW50LnkgPiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IHx8IGV2ZW50LnkgPCByZWN0LnRvcCkge1xuICAgICAgICAgICAgICAgdGhpcy5kcmFnSG92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsbG93RHJvcChkcmFnTm9kZTogVHJlZU5vZGUsIGRyb3BOb2RlOiBUcmVlTm9kZSwgZHJhZ05vZGVTY29wZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZHJhZ05vZGUpIHtcbiAgICAgICAgICAgIC8vcHJldmVudCByYW5kb20gaHRtbCBlbGVtZW50cyB0byBiZSBkcmFnZ2VkXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1ZhbGlkRHJhZ1Njb3BlKGRyYWdOb2RlU2NvcGUpKSB7XG4gICAgICAgICAgICBsZXQgYWxsb3c6IGJvb2xlYW4gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGRyb3BOb2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRyYWdOb2RlID09PSBkcm9wTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGRyb3BOb2RlLnBhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IGRyYWdOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhbGxvdztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsaWREcmFnU2NvcGUoZHJhZ1Njb3BlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGRyb3BTY29wZSA9IHRoaXMuZHJvcHBhYmxlU2NvcGU7XG5cbiAgICAgICAgaWYgKGRyb3BTY29wZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkcm9wU2NvcGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkcmFnU2NvcGUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHJvcFNjb3BlID09PSBkcmFnU2NvcGU7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZHJhZ1Njb3BlIGluc3RhbmNlb2YgQXJyYXkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoPEFycmF5PGFueT4+ZHJhZ1Njb3BlKS5pbmRleE9mKGRyb3BTY29wZSkgIT0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChkcm9wU2NvcGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZHJhZ1Njb3BlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDxBcnJheTxhbnk+PmRyb3BTY29wZSkuaW5kZXhPZihkcmFnU2NvcGUpICE9IC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChkcmFnU2NvcGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IHMgb2YgZHJvcFNjb3BlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGRzIG9mIGRyYWdTY29wZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID09PSBkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9maWx0ZXIodmFsdWUpIHtcbiAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWROb2RlcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkTm9kZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSB0aGlzLmZpbHRlckJ5LnNwbGl0KCcsJyk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJUZXh0ID0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhmaWx0ZXJWYWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgaXNTdHJpY3RNb2RlID0gdGhpcy5maWx0ZXJNb2RlID09PSAnc3RyaWN0JztcbiAgICAgICAgICAgIGZvcihsZXQgbm9kZSBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvcHlOb2RlID0gey4uLm5vZGV9O1xuICAgICAgICAgICAgICAgIGxldCBwYXJhbXNXaXRob3V0Tm9kZSA9IHtzZWFyY2hGaWVsZHMsIGZpbHRlclRleHQsIGlzU3RyaWN0TW9kZX07XG4gICAgICAgICAgICAgICAgaWYgKChpc1N0cmljdE1vZGUgJiYgKHRoaXMuZmluZEZpbHRlcmVkTm9kZXMoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSB8fCB0aGlzLmlzRmlsdGVyTWF0Y2hlZChjb3B5Tm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKCFpc1N0cmljdE1vZGUgJiYgKHRoaXMuaXNGaWx0ZXJNYXRjaGVkKGNvcHlOb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkgfHwgdGhpcy5maW5kRmlsdGVyZWROb2Rlcyhjb3B5Tm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzLnB1c2goY29weU5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XG4gICAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7XG4gICAgICAgICAgICBmaWx0ZXI6IGZpbHRlclZhbHVlLFxuICAgICAgICAgICAgZmlsdGVyZWRWYWx1ZTogdGhpcy5maWx0ZXJlZE5vZGVzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkTm9kZXMgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclZpZXdDaGlsZCAmJiB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kRmlsdGVyZWROb2Rlcyhub2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkge1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBbLi4ubm9kZS5jaGlsZHJlbl07XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiBjaGlsZE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3B5Q2hpbGROb2RlID0gey4uLmNoaWxkTm9kZX07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsdGVyTWF0Y2hlZChjb3B5Q2hpbGROb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5wdXNoKGNvcHlDaGlsZE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJNYXRjaGVkKG5vZGUsIHtzZWFyY2hGaWVsZHMsIGZpbHRlclRleHQsIGlzU3RyaWN0TW9kZX0pIHtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yKGxldCBmaWVsZCBvZiBzZWFyY2hGaWVsZHMpIHtcbiAgICAgICAgICAgIGxldCBmaWVsZFZhbHVlID0gT2JqZWN0VXRpbHMucmVtb3ZlQWNjZW50cyhTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlLCBmaWVsZCkpKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICBpZiAoZmllbGRWYWx1ZS5pbmRleE9mKGZpbHRlclRleHQpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWF0Y2hlZCB8fCAoaXNTdHJpY3RNb2RlICYmICF0aGlzLmlzTm9kZUxlYWYobm9kZSkpKSB7XG4gICAgICAgICAgICBtYXRjaGVkID0gdGhpcy5maW5kRmlsdGVyZWROb2Rlcyhub2RlLCB7c2VhcmNoRmllbGRzLCBmaWx0ZXJUZXh0LCBpc1N0cmljdE1vZGV9KSB8fCBtYXRjaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ1N0YXJ0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ1N0b3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxTY3JvbGxpbmdNb2R1bGUsUmlwcGxlTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbVHJlZSxTaGFyZWRNb2R1bGUsU2Nyb2xsaW5nTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUcmVlLFVJVHJlZU5vZGVdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVNb2R1bGUgeyB9XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/treeselect/primeng-treeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treeselect/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treeselect/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10cmVlc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RyZWVzZWxlY3QvcHJpbWVuZy10cmVlc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/treeselect/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treeselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treeselect/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './treeselect';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVlc2VsZWN0L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RyZWVzZWxlY3QnO1xuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/treeselect/treeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treeselect/treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treeselect/treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,598 @@
+import { NgModule, Component, EventEmitter, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, forwardRef, ViewChild } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule, TranslationKeys } from 'primeng/api';
+import { animate, style, transition, trigger } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';
+import { TreeModule } from 'primeng/tree';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "primeng/tree";
+import * as i3 from "@angular/common";
+export const TREESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TreeSelect),
+    multi: true
+};
+export class TreeSelect {
+    constructor(config, cd, el, overlayService) {
+        this.config = config;
+        this.cd = cd;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.type = "button";
+        this.scrollHeight = "400px";
+        this.metaKeySelection = true;
+        this.display = "comma";
+        this.selectionMode = "single";
+        this.propagateSelectionDown = true;
+        this.propagateSelectionUp = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.expandedNodes = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    ;
+    set options(options) {
+        this._options = options;
+        this.updateTreeState();
+    }
+    ngOnInit() {
+        this.updateTreeState();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.valueTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onSelectionChange(event) {
+        this.value = event;
+        this.onModelChange(this.value);
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (!this.disabled && (!this.overlayEl || !this.overlayEl.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else
+                this.show();
+            this.focusInput.nativeElement.focus();
+        }
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                else if (this.overlayVisible && this.overlayEl) {
+                    let focusableElements = DomHandler.getFocusableElements(this.overlayEl);
+                    if (focusableElements && focusableElements.length > 0) {
+                        focusableElements[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //enter and escape
+            case 13:
+            case 27:
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+            //tab
+            case 9:
+                this.hide();
+                break;
+            default:
+                break;
+        }
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    updateTreeState() {
+        if (this.value) {
+            let selectedNodes = this.selectionMode === "single" ? [this.value] : [...this.value];
+            this.resetExpandedNodes();
+            if (selectedNodes && this.options) {
+                this.updateTreeBranchState(null, null, selectedNodes);
+            }
+        }
+    }
+    updateTreeBranchState(node, path, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                this.expandPath(path);
+                selectedNodes.splice(selectedNodes.indexOf(node), 1);
+            }
+            if (selectedNodes.length > 0 && node.children) {
+                for (let childNode of node.children) {
+                    path.push(node);
+                    this.updateTreeBranchState(childNode, path, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.updateTreeBranchState(childNode, [], selectedNodes);
+            }
+        }
+    }
+    expandPath(expandedNodes) {
+        for (let node of expandedNodes) {
+            node.expanded = true;
+        }
+        this.expandedNodes = [...expandedNodes];
+    }
+    nodeExpand(event) {
+        this.onNodeExpand.emit(event);
+        this.expandedNodes.push(event.node);
+    }
+    nodeCollapse(event) {
+        this.onNodeCollapse.emit(event);
+        this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);
+    }
+    resetExpandedNodes() {
+        for (let node of this.expandedNodes) {
+            node.expanded = false;
+        }
+        this.expandedNodes = [];
+    }
+    findSelectedNodes(node, keys, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                selectedNodes.push(node);
+                delete keys[node.key];
+            }
+            if (Object.keys(keys).length && node.children) {
+                for (let childNode of node.children) {
+                    this.findSelectedNodes(childNode, keys, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.findSelectedNodes(childNode, keys, selectedNodes);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.value) {
+            if (this.selectionMode === "single") {
+                let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.value.length; i++) {
+                    let selectedNode = this.value[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    onSelect(node) {
+        this.onNodeSelect.emit(node);
+        if (this.selectionMode === 'single') {
+            this.hide();
+        }
+    }
+    onUnselect(node) {
+        this.onNodeUnselect.emit(node);
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.onHide.emit();
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateTreeState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlayEl) {
+            ZIndexUtils.clear(this.overlayEl);
+            this.overlayEl = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-treeselect p-component p-inputwrapper': true,
+            'p-treeselect-chip': this.display === 'chip',
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-treeselect-label': true,
+            'p-placeholder': this.label === this.placeholder,
+            'p-treeselect-label-empty': !this.placeholder && this.emptyValue
+        };
+    }
+    get emptyMessageText() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyValue() {
+        return !this.value || Object.keys(this.value).length === 0;
+    }
+    get emptyOptions() {
+        return !this.options || this.options.length === 0;
+    }
+    get label() {
+        let value = this.value || [];
+        return value.length ? value.map(node => node.label).join(', ') : (this.selectionMode === "single" && this.value) ? value.label : this.placeholder;
+    }
+}
+TreeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TreeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeSelect, selector: "p-treeSelect", inputs: { type: "type", inputId: "inputId", scrollHeight: "scrollHeight", disabled: "disabled", metaKeySelection: "metaKeySelection", display: "display", selectionMode: "selectionMode", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", placeholder: "placeholder", panelClass: "panelClass", emptyMessage: "emptyMessage", appendTo: "appendTo", propagateSelectionDown: "propagateSelectionDown", propagateSelectionUp: "propagateSelectionUp", options: "options", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onShow: "onShow", onHide: "onHide", onNodeUnselect: "onNodeUnselect", onNodeSelect: "onNodeSelect" }, host: { properties: { "class.p-inputwrapper-filled": "!emptyValue", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [TREESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }, { propertyName: "focusInput", first: true, predicate: ["focusInput"], descendants: true }], ngImport: i0, template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, isInline: true, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"], components: [{ type: i2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "scrollHeight", "virtualScroll", "virtualNodeHeight", "minBufferPx", "maxBufferPx", "indentation", "trackBy"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onFilter"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeSelect', template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': '!emptyValue',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TREESELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { type: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], panelClass: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], focusInput: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }] } });
+export class TreeSelectModule {
+}
+TreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, declarations: [TreeSelect], imports: [CommonModule, RippleModule, SharedModule, TreeModule], exports: [TreeSelect, SharedModule, TreeModule] });
+TreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, imports: [[CommonModule, RippleModule, SharedModule, TreeModule], SharedModule, TreeModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule, TreeModule],
+                    exports: [TreeSelect, SharedModule, TreeModule],
+                    declarations: [TreeSelect]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVlc2VsZWN0L3RyZWVzZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUE0QyxVQUFVLEVBQXFCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN2TyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBZ0MsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQVcsTUFBTSxhQUFhLENBQUM7QUFDbEgsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsNkJBQTZCLEVBQUUsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQTs7Ozs7QUFHekMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQVE7SUFDMUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUN6QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUF1RUYsTUFBTSxPQUFPLFVBQVU7SUE4Rm5CLFlBQW1CLE1BQXFCLEVBQVMsRUFBcUIsRUFBUyxFQUFjLEVBQVMsY0FBOEI7UUFBakgs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QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsZUFBZTt1QkFBQyxhQUFhO2dCQUVOLFdBQVc7c0JBQWxDLFNBQVM7dUJBQUMsV0FBVztnQkFFRyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRWIsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNOztBQThjWCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBMWdCaEIsVUFBVSxhQXNnQlQsWUFBWSxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsVUFBVSxhQXRnQmxELFVBQVUsRUF1Z0JFLFlBQVksRUFBQyxVQUFVOzhHQUduQyxnQkFBZ0IsWUFKaEIsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxVQUFVLENBQUMsRUFDdkMsWUFBWSxFQUFDLFVBQVU7MkZBR25DLGdCQUFnQjtrQkFMNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxVQUFVLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBQyxZQUFZLEVBQUMsVUFBVSxDQUFDO29CQUM3QyxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsRXZlbnRFbWl0dGVyLE91dHB1dCxJbnB1dCxDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENvbnRlbnRDaGlsZHJlbiwgQWZ0ZXJDb250ZW50SW5pdCwgVGVtcGxhdGVSZWYsIFF1ZXJ5TGlzdCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge092ZXJsYXlTZXJ2aWNlLCBQcmltZU5HQ29uZmlnLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUsIFRyYW5zbGF0aW9uS2V5cywgVHJlZU5vZGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7YW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIsIEFuaW1hdGlvbkV2ZW50fSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIsIERvbUhhbmRsZXJ9IGZyb20gJ3ByaW1lbmcvZG9tJztcbmltcG9ydCB7VHJlZU1vZHVsZX0gZnJvbSAncHJpbWVuZy90cmVlJztcbmltcG9ydCB7WkluZGV4VXRpbHN9IGZyb20gJ3ByaW1lbmcvdXRpbHMnXG5cblxuZXhwb3J0IGNvbnN0IFRSRUVTRUxFQ1RfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlU2VsZWN0KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRyZWVTZWxlY3QnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzKClcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICA8aW5wdXQgI2ZvY3VzSW5wdXQgdHlwZT1cInRleHRcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmlkXT1cImlucHV0SWRcIiByZWFkb25seSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvdmVybGF5VmlzaWJsZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWVzZWxlY3QtbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImxhYmVsQ2xhc3MoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWx1ZVRlbXBsYXRlO2Vsc2UgZGVmYXVsdFZhbHVlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFZhbHVlVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5ID09PSAnY29tbWEnO2Vsc2UgY2hpcHNWYWx1ZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsIHx8ICdlbXB0eSd9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGlwc1ZhbHVlVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBub2RlIG9mIHZhbHVlXCIgY2xhc3M9XCJwLXRyZWVzZWxlY3QtdG9rZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdHJlZXNlbGVjdC10b2tlbi1sYWJlbFwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlWYWx1ZVwiPnt7cGxhY2Vob2xkZXIgfHwgJ2VtcHR5J319PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtdHJlZXNlbGVjdC10cmlnZ2VyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtdHJlZXNlbGVjdC10cmlnZ2VyLWljb24gcGkgcGktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICNvdmVybGF5UmVmIGNsYXNzPVwicC10cmVlc2VsZWN0LXBhbmVsIHAtY29tcG9uZW50XCIgKm5nSWY9XCJvdmVybGF5VmlzaWJsZVwiIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtAb3ZlcmxheUFuaW1hdGlvbl09XCJ7dmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7c2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9uc319XCIgKEBvdmVybGF5QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUFuaW1hdGlvblN0YXJ0KCRldmVudClcIiAoQG92ZXJsYXlBbmltYXRpb24uZG9uZSk9XCJvbk92ZXJsYXlBbmltYXRpb25Eb25lKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWUsIG9wdGlvbnM6IG9wdGlvbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVlc2VsZWN0LWl0ZW1zLXdyYXBwZXJcIiBbbmdTdHlsZV09XCJ7J21heC1oZWlnaHQnOiBzY3JvbGxIZWlnaHR9XCI+XG4gICAgICAgICAgICAgICAgPHAtdHJlZSBbdmFsdWVdPVwib3B0aW9uc1wiIFtwcm9wYWdhdGVTZWxlY3Rpb25Eb3duXT1cInByb3BhZ2F0ZVNlbGVjdGlvbkRvd25cIiBbcHJvcGFnYXRlU2VsZWN0aW9uVXBdPVwicHJvcGFnYXRlU2VsZWN0aW9uVXBcIiBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCIgW3NlbGVjdGlvbl09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttZXRhS2V5U2VsZWN0aW9uXT1cIm1ldGFLZXlTZWxlY3Rpb25cIiAob25Ob2RlRXhwYW5kKT1cIm5vZGVFeHBhbmQoJGV2ZW50KVwiIChvbk5vZGVDb2xsYXBzZSk9XCJub2RlQ29sbGFwc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvbk5vZGVTZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiIChvbk5vZGVVbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIj48L3AtdHJlZT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW1wdHlPcHRpb25zXCIgY2xhc3M9XCJwLXRyZWVzZWxlY3QtZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5VGVtcGxhdGU7IGVsc2UgZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZW1wdHlNZXNzYWdlVGV4dH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZTtcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZSwgb3B0aW9uczogb3B0aW9uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsnLi90cmVlc2VsZWN0LmNzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3ZlcmxheUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVZKDAuOCknfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JylcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQgcC1pbnB1dHdyYXBwZXInLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZpbGxlZF0nOiAnIWVtcHR5VmFsdWUnLFxuICAgICAgICAnW2NsYXNzLnAtaW5wdXR3cmFwcGVyLWZvY3VzXSc6ICdmb2N1c2VkIHx8IG92ZXJsYXlWaXNpYmxlJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVFJFRVNFTEVDVF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlU2VsZWN0IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSBcImJ1dHRvblwiO1xuXG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSBcIjQwMHB4XCI7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZGlzcGxheTogc3RyaW5nID0gXCJjb21tYVwiO1xuXG4gICAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gXCJzaW5nbGVcIjtcblxuICAgIEBJbnB1dCgpIHRhYmluZGV4OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBhbmVsQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVtcHR5TWVzc2FnZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXBwZW5kVG86IGFueTtcblxuICAgIEBJbnB1dCgpIHByb3BhZ2F0ZVNlbGVjdGlvbkRvd246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgcHJvcGFnYXRlU2VsZWN0aW9uVXA6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgZ2V0IG9wdGlvbnMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9O1xuICAgIHNldCBvcHRpb25zKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMudXBkYXRlVHJlZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbiAgICBASW5wdXQoKSBoaWRlVHJhbnNpdGlvbk9wdGlvbnM6IHN0cmluZyA9ICcuMXMgbGluZWFyJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lckVsOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnZm9jdXNJbnB1dCcpIGZvY3VzSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAT3V0cHV0KCkgb25Ob2RlRXhwYW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVDb2xsYXBzZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZVVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbjtcblxuICAgIG92ZXJsYXlWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgc2VsZkNoYW5nZTogYm9vbGVhbjtcblxuICAgIHZhbHVlO1xuXG4gICAgZXhwYW5kZWROb2RlczogYW55W10gPSBbXTtcblxuICAgIF9vcHRpb25zOiBhbnlbXTtcblxuICAgIG91dHNpZGVDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBhbnk7XG5cbiAgICByZXNpemVMaXN0ZW5lcjogYW55O1xuXG4gICAgb3ZlcmxheUVsOiBhbnk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBQcmltZU5HQ29uZmlnLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UpIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVHJlZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2goaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5RWwgPSBldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIHRoaXMub25PdmVybGF5RW50ZXIoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5QW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3ZlcmxheUxlYXZlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBldmVudDtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICghdGhpcy5vdmVybGF5RWwgfHwgIXRoaXMub3ZlcmxheUVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGV2ZW50LnRhcmdldCwgJ3AtdHJlZXNlbGVjdC1jbG9zZScpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9jdXNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50LndoaWNoKSB7XG4gICAgICAgICAgICAvL2Rvd25cbiAgICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlICYmIGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLm92ZXJsYXlFbCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZm9jdXNhYmxlRWxlbWVudHMgPSBEb21IYW5kbGVyLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMub3ZlcmxheUVsKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNhYmxlRWxlbWVudHMgJiYgZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vc3BhY2VcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2VudGVyIGFuZCBlc2NhcGVcbiAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL3RhYlxuICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3coKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGhpZGUoKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDbGljayhldmVudCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVRyZWVTdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSBcInNpbmdsZVwiID8gW3RoaXMudmFsdWVdIDogWy4uLnRoaXMudmFsdWVdO1xuICAgICAgICAgICAgdGhpcy5yZXNldEV4cGFuZGVkTm9kZXMoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZE5vZGVzICYmIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHJlZUJyYW5jaFN0YXRlKG51bGwsIG51bGwsIHNlbGVjdGVkTm9kZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVHJlZUJyYW5jaFN0YXRlKG5vZGUsIHBhdGgsIHNlbGVjdGVkTm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFBhdGgocGF0aCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5zcGxpY2Uoc2VsZWN0ZWROb2Rlcy5pbmRleE9mKG5vZGUpLCAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXMubGVuZ3RoID4gMCAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyZWVCcmFuY2hTdGF0ZShjaGlsZE5vZGUsIHBhdGgsIHNlbGVjdGVkTm9kZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRyZWVCcmFuY2hTdGF0ZShjaGlsZE5vZGUsIFtdLCBzZWxlY3RlZE5vZGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cGFuZFBhdGgoZXhwYW5kZWROb2Rlcykge1xuICAgICAgICBmb3IgKGxldCBub2RlIG9mIGV4cGFuZGVkTm9kZXMpIHtcbiAgICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHBhbmRlZE5vZGVzID0gWy4uLmV4cGFuZGVkTm9kZXNdO1xuICAgIH1cblxuICAgIG5vZGVFeHBhbmQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbk5vZGVFeHBhbmQuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWROb2Rlcy5wdXNoKGV2ZW50Lm5vZGUpO1xuICAgIH1cblxuICAgIG5vZGVDb2xsYXBzZShldmVudCkge1xuICAgICAgICB0aGlzLm9uTm9kZUNvbGxhcHNlLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmV4cGFuZGVkTm9kZXMuc3BsaWNlKHRoaXMuZXhwYW5kZWROb2Rlcy5pbmRleE9mKGV2ZW50Lm5vZGUpLCAxKTtcbiAgICB9XG5cbiAgICByZXNldEV4cGFuZGVkTm9kZXMoKSB7XG4gICAgICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5leHBhbmRlZE5vZGVzKSB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4cGFuZGVkTm9kZXMgPSBbXTtcbiAgICB9XG5cbiAgICBmaW5kU2VsZWN0ZWROb2Rlcyhub2RlLCBrZXlzLCBzZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBrZXlzW25vZGUua2V5XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGtleXMpLmxlbmd0aCAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kU2VsZWN0ZWROb2RlcyhjaGlsZE5vZGUsIGtleXMsIHNlbGVjdGVkTm9kZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRTZWxlY3RlZE5vZGVzKGNoaWxkTm9kZSwga2V5cywgc2VsZWN0ZWROb2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGUpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gLTE7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09IFwic2luZ2xlXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgYXJlTm9kZXNFcXVhbCA9ICh0aGlzLnZhbHVlLmtleSAmJiB0aGlzLnZhbHVlLmtleSA9PT0gbm9kZS5rZXkpIHx8IHRoaXMudmFsdWUgPT0gbm9kZTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGFyZU5vZGVzRXF1YWwgPyAwIDogLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSAgPCB0aGlzLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSB0aGlzLnZhbHVlW2ldO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYXJlTm9kZXNFcXVhbCA9IChzZWxlY3RlZE5vZGUua2V5ICYmIHNlbGVjdGVkTm9kZS5rZXkgPT09IG5vZGUua2V5KSB8fCBzZWxlY3RlZE5vZGUgPT0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZU5vZGVzRXF1YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG9uU2VsZWN0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5vbk5vZGVTZWxlY3QuZW1pdChub2RlKTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVuc2VsZWN0KG5vZGUpIHtcbiAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KG5vZGUpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUVudGVyKCkge1xuICAgICAgICBaSW5kZXhVdGlscy5zZXQoJ292ZXJsYXknLCB0aGlzLm92ZXJsYXlFbCwgdGhpcy5jb25maWcuekluZGV4Lm92ZXJsYXkpO1xuICAgICAgICB0aGlzLmFwcGVuZENvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLmFsaWduT3ZlcmxheSgpO1xuICAgICAgICB0aGlzLmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmJpbmRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5TGVhdmUoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWwgPSBudWxsO1xuICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVRyZWVTdGF0ZSgpO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhcHBlbmRDb250YWluZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYXBwZW5kVG8pLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVBcHBlbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlFbCAmJiB0aGlzLmFwcGVuZFRvKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknKVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYXBwZW5kVG8pLnJlbW92ZUNoaWxkKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFsaWduT3ZlcmxheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG8pIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWJzb2x1dGVQb3NpdGlvbih0aGlzLm92ZXJsYXlFbCwgdGhpcy5jb250YWluZXJFbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheUVsLnN0eWxlLm1pbldpZHRoID0gRG9tSGFuZGxlci5nZXRPdXRlcldpZHRoKHRoaXMuY29udGFpbmVyRWwubmF0aXZlRWxlbWVudCkgKyAncHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5yZWxhdGl2ZVBvc2l0aW9uKHRoaXMub3ZlcmxheUVsLCB0aGlzLmNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSAmJiB0aGlzLm92ZXJsYXlFbCAmJiAhdGhpcy5jb250YWluZXJFbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgIXRoaXMub3ZlcmxheUVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vdXRzaWRlQ2xpY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLm91dHNpZGVDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcih0aGlzLmNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJlc3RvcmVBcHBlbmQoKTtcbiAgICAgICAgdGhpcy51bmJpbmRPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnVuYmluZFJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5RWwpIHtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheUVsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtdHJlZXNlbGVjdCBwLWNvbXBvbmVudCBwLWlucHV0d3JhcHBlcic6IHRydWUsXG4gICAgICAgICAgICAncC10cmVlc2VsZWN0LWNoaXAnOiB0aGlzLmRpc3BsYXkgPT09ICdjaGlwJyxcbiAgICAgICAgICAgICdwLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgICdwLWZvY3VzJzogdGhpcy5mb2N1c2VkXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWJlbENsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtdHJlZXNlbGVjdC1sYWJlbCc6IHRydWUsXG4gICAgICAgICAgICAncC1wbGFjZWhvbGRlcic6IHRoaXMubGFiZWwgPT09IHRoaXMucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAncC10cmVlc2VsZWN0LWxhYmVsLWVtcHR5JzogIXRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5lbXB0eVZhbHVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZW1wdHlNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlNZXNzYWdlIHx8IHRoaXMuY29uZmlnLmdldFRyYW5zbGF0aW9uKFRyYW5zbGF0aW9uS2V5cy5FTVBUWV9NRVNTQUdFKTtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlIHx8IE9iamVjdC5rZXlzKHRoaXMudmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGdldCBsYWJlbCgpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXx8W107XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPyB2YWx1ZS5tYXAobm9kZSA9PiBub2RlLmxhYmVsKS5qb2luKCcsICcpIDogKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gXCJzaW5nbGVcIiAmJiB0aGlzLnZhbHVlKSA/IHZhbHVlLmxhYmVsIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxSaXBwbGVNb2R1bGUsU2hhcmVkTW9kdWxlLFRyZWVNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtUcmVlU2VsZWN0LFNoYXJlZE1vZHVsZSxUcmVlTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUcmVlU2VsZWN0XVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlU2VsZWN0TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/treetable/primeng-treetable.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treetable/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treetable/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10cmVldGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdHJlZXRhYmxlL3ByaW1lbmctdHJlZXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/treetable/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treetable/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treetable/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './treetable';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmVldGFibGUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJlZXRhYmxlJzsiXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/treetable/treetable.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/treetable/treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/treetable/treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2821 @@
+import { NgModule, HostListener, Injectable, Directive, Component, Input, Output, EventEmitter, ContentChildren, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Subject } from 'rxjs';
+import { DomHandler } from 'primeng/dom';
+import { PaginatorModule } from 'primeng/paginator';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import { RippleModule } from 'primeng/ripple';
+import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import * as i0 from "@angular/core";
+import * as i1 from "primeng/api";
+import * as i2 from "primeng/paginator";
+import * as i3 from "@angular/common";
+import * as i4 from "@angular/cdk/scrolling";
+import * as i5 from "primeng/ripple";
+export class TreeTableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.uiUpdateSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.uiUpdateSource$ = this.uiUpdateSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onContextMenu(node) {
+        this.contextMenuSource.next(node);
+    }
+    onUIUpdate(value) {
+        this.uiUpdateSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+}
+TreeTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, decorators: [{
+            type: Injectable
+        }] });
+export class TreeTable {
+    constructor(el, zone, tableService, filterService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.filterService = filterService;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.first = 0;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.compareSelectionBy = 'deepEquals';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.virtualScrollDelay = 150;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.rowTrackBy = (index, item) => item;
+        this.filters = {};
+        this.filterDelay = 300;
+        this.filterMode = 'lenient';
+        this.onFilter = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._sortOrder = 1;
+        this.selectionKeys = {};
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && this.sortField)
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && this.multiSortMeta)
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.updateSerializedValue();
+            this.tableService.onUIUpdate(this.value);
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple') {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        if (this.paginator)
+            this.serializePageNodes();
+        else
+            this.serializeNodes(null, this.filteredNodes || this.value, 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    serializePageNodes() {
+        let data = this.filteredNodes || this.value;
+        this.serializedValue = [];
+        if (data && data.length) {
+            const first = this.lazy ? 0 : this.first;
+            for (let i = first; i < (first + this.rows); i++) {
+                let node = data[i];
+                if (node) {
+                    this.serializedValue.push({
+                        node: node,
+                        parent: null,
+                        level: 0,
+                        visible: true
+                    });
+                    this.serializeNodes(node, node.children, 1, true);
+                }
+            }
+        }
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let node of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy)
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        else
+            this.serializePageNodes();
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.tableService.onUIUpdate(this.value);
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            this.sortSingle();
+            if (this.resetPageOnSort && this.scrollable) {
+                this.resetScrollTop();
+            }
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+    }
+    sortSingle() {
+        if (this.sortField && this.sortOrder) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: this.sortField,
+                order: this.sortOrder
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+            this.updateSerializedValue();
+        }
+    }
+    sortNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: nodes,
+                mode: this.sortMode,
+                field: this.sortField,
+                order: this.sortOrder
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+        }
+        for (let node of nodes) {
+            this.sortNodes(node.children);
+        }
+    }
+    sortMultiple() {
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortMultipleNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.updateSerializedValue();
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    sortMultipleNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: this.value,
+                mode: this.sortMode,
+                multiSortMeta: this.multiSortMeta
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                return this.multisortField(node1, node2, this.multiSortMeta, 0);
+            });
+        }
+        for (let node of nodes) {
+            this.sortMultipleNodes(node.children);
+        }
+    }
+    multisortField(node1, node2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true }));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(node1, node2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollToVirtualIndex(index);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollToVirtualIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollTo(options);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollTo(options);
+        }
+    }
+    isEmpty() {
+        let data = this.filteredNodes || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd(event, column) {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = column.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = column.style.minWidth || 15;
+        if (columnWidth + delta > parseInt(minWidth)) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = column.nextElementSibling;
+                while (!nextColumn.offsetParent) {
+                    nextColumn = nextColumn.nextElementSibling;
+                }
+                if (nextColumn) {
+                    let nextColumnWidth = nextColumn.offsetWidth - delta;
+                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;
+                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {
+                        if (this.scrollable) {
+                            let scrollableView = this.findParentScrollableView(column);
+                            let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-treetable-virtual-scrollable-body table');
+                            let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                            let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                            let resizeColumnIndex = DomHandler.index(column);
+                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                        }
+                        else {
+                            column.style.width = newColumnWidth + 'px';
+                            if (nextColumn) {
+                                nextColumn.style.width = nextColumnWidth + 'px';
+                            }
+                        }
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                if (this.scrollable) {
+                    let scrollableView = this.findParentScrollableView(column);
+                    let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport');
+                    let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');
+                    let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');
+                    let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport table');
+                    let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                    let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';
+                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';
+                    if (scrollableFooterTable) {
+                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';
+                    }
+                    let resizeColumnIndex = DomHandler.index(column);
+                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;
+                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;
+                    const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;
+                    let setWidth = (container, table, width, isContainerInViewport) => {
+                        if (container && table) {
+                            container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';
+                            table.style.width = width + 'px';
+                        }
+                    };
+                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);
+                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);
+                }
+                else {
+                    this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';
+                    column.style.width = newColumnWidth + 'px';
+                    let containerWidth = this.tableViewChild.nativeElement.style.width;
+                    this.containerViewChild.nativeElement.style.width = containerWidth + 'px';
+                }
+            }
+            this.onColResize.emit({
+                element: column,
+                delta: delta
+            });
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    findParentScrollableView(column) {
+        if (column) {
+            let parent = column.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {
+                parent = parent.parentElement;
+            }
+            return parent;
+        }
+        else {
+            return null;
+        }
+    }
+    resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {
+        if (table) {
+            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;
+            if (colGroup) {
+                let col = colGroup.children[resizeColumnIndex];
+                let nextCol = col.nextElementSibling;
+                col.style.width = newColumnWidth + 'px';
+                if (nextCol && nextColumnWidth) {
+                    nextCol.style.width = nextColumnWidth + 'px';
+                }
+            }
+            else {
+                throw "Scrollable tables require a colgroup to support resizable columns";
+            }
+        }
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    handleRowClick(event) {
+        let targetNode = event.originalEvent.target.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            let rowNode = event.rowNode;
+            let selected = this.isSelected(rowNode.node);
+            let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;
+            if (metaSelection) {
+                let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                if (selected && metaKey) {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(null);
+                    }
+                    else {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(rowNode.node);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        if (metaKey) {
+                            this._selection = this.selection || [];
+                        }
+                        else {
+                            this._selection = [];
+                            this.selectionKeys = {};
+                        }
+                        this._selection = [...this.selection, rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                }
+            }
+            else {
+                if (this.selectionMode === 'single') {
+                    if (selected) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                    }
+                    else {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                else if (this.selectionMode === 'multiple') {
+                    if (selected) {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    else {
+                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const node = event.rowNode.node;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = node;
+                this.contextMenuSelectionChange.emit(node);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(node);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(node);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = node;
+                        this.selectionChange.emit(node);
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this.selection = [node];
+                        this.selectionChange.emit(this.selection);
+                    }
+                    if (dataKeyValue) {
+                        this.selectionKeys[dataKeyValue] = 1;
+                    }
+                }
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+            }
+        }
+    }
+    toggleNodeWithCheckbox(event) {
+        this.selection = this.selection || [];
+        this.preventSelectionSetterPropagation = true;
+        let node = event.rowNode.node;
+        let selected = this.isSelected(node);
+        if (selected) {
+            this.propagateSelectionDown(node, false);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, false);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+        }
+        else {
+            this.propagateSelectionDown(node, true);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, true);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeSelect.emit({ originalEvent: event, node: node });
+        }
+        this.tableService.onSelectionChange();
+    }
+    toggleNodesWithCheckbox(event, check) {
+        let data = this.filteredNodes || this.value;
+        this._selection = check && data ? data.slice() : [];
+        if (check) {
+            if (data && data.length) {
+                for (let node of data) {
+                    this.propagateSelectionDown(node, true);
+                }
+            }
+        }
+        else {
+            this._selection = [];
+            this.selectionKeys = {};
+        }
+        this.preventSelectionSetterPropagation = true;
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+    }
+    propagateSelectionUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedChildCount = 0;
+            let childPartialSelected = false;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+            for (let child of node.children) {
+                if (this.isSelected(child))
+                    selectedChildCount++;
+                else if (child.partialSelected)
+                    childPartialSelected = true;
+            }
+            if (select && selectedChildCount == node.children.length) {
+                this._selection = [...this.selection || [], node];
+                node.partialSelected = false;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this._selection = this.selection.filter((val, i) => i != index);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                }
+                if (childPartialSelected || selectedChildCount > 0 && selectedChildCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateSelectionUp(parent, select);
+        }
+    }
+    propagateSelectionDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+        if (select && index == -1) {
+            this._selection = [...this.selection || [], node];
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        else if (!select && index > -1) {
+            this._selection = this.selection.filter((val, i) => i != index);
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        node.partialSelected = false;
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateSelectionDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        if (node && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(node) > -1;
+                else
+                    return this.equals(node, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(node, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    equals(node1, node2) {
+        return this.compareSelectionBy === 'equals' ? (node1 === node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);
+    }
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredNodes = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredNodes = [];
+                const isStrictMode = this.filterMode === 'strict';
+                let isValueChanged = false;
+                for (let node of this.value) {
+                    let copyNode = { ...node };
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let paramsWithoutNode;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            let filterMeta = this.filters[prop];
+                            let filterField = prop;
+                            let filterValue = filterMeta.value;
+                            let filterMatchMode = filterMeta.matchMode || 'startsWith';
+                            let filterConstraint = this.filterService.filters[filterMatchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                                localMatch = false;
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let copyNodeForGlobal = { ...copyNode };
+                            let filterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            let filterValue = this.filters['global'].value;
+                            let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
+                                (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
+                                globalMatch = true;
+                                copyNode = copyNodeForGlobal;
+                            }
+                        }
+                    }
+                    let matches = localMatch;
+                    if (this.filters['global']) {
+                        matches = localMatch && globalMatch;
+                    }
+                    if (matches) {
+                        this.filteredNodes.push(copyNode);
+                    }
+                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);
+                }
+                if (!isValueChanged) {
+                    this.filteredNodes = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.first = 0;
+        const filteredValue = this.filteredNodes || this.value;
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: filteredValue
+        });
+        this.tableService.onUIUpdate(filteredValue);
+        this.updateSerializedValue();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = { ...childNode };
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { filterField, filterValue, filterConstraint, isStrictMode }) {
+        let matched = false;
+        let dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);
+        if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {
+            matched = true;
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    isNodeLeaf(node) {
+        return node.leaf === false ? false : !(node.children && node.children.length);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    reset() {
+        this._sortField = null;
+        this._sortOrder = 1;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredNodes = null;
+        this.filters = {};
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    updateEditingCell(cell, data, field) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.unbindDocumentEditListener();
+                }
+                this.editingCellClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.editingCellField = null;
+        this.editingCellData = null;
+        this.initialized = null;
+    }
+}
+TreeTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+TreeTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTable, selector: "p-treeTable", inputs: { columns: "columns", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", autoLayout: "autoLayout", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", paginator: "paginator", rows: "rows", first: "first", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", customSort: "customSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", compareSelectionBy: "compareSelectionBy", rowHover: "rowHover", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", frozenWidth: "frozenWidth", frozenColumns: "frozenColumns", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", contextMenu: "contextMenu", rowTrackBy: "rowTrackBy", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterMode: "filterMode", filterLocale: "filterLocale", value: "value", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onFilter: "onFilter", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onPage: "onPage", onSort: "onSort", onLazyLoad: "onLazyLoad", sortFunction: "sortFunction", onColResize: "onColResize", onColReorder: "onColReorder", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onContextMenuSelect: "onContextMenuSelect", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel" }, host: { classAttribute: "p-element" }, providers: [TreeTableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "scrollableViewChild", first: true, predicate: ["scrollableView"], descendants: true }, { propertyName: "scrollableFrozenViewChild", first: true, predicate: ["scrollableFrozenView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TTBody; }), selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i0.forwardRef(function () { return TTScrollableView; }), selector: "[ttScrollableView]", inputs: ["ttScrollableView", "frozen", "scrollHeight"] }], directives: [{ type: i0.forwardRef(function () { return i3.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i3.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeTable', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TreeTableService], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeTableService }, { type: i1.FilterService }]; }, propDecorators: { columns: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], frozenColumns: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], scrollableViewChild: [{
+                type: ViewChild,
+                args: ['scrollableView']
+            }], scrollableFrozenViewChild: [{
+                type: ViewChild,
+                args: ['scrollableFrozenView']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+export class TTBody {
+    constructor(tt, treeTableService, cd) {
+        this.tt = tt;
+        this.treeTableService = treeTableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            if (this.tt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTBody, selector: "[pTreeTableBody]", inputs: { columns: ["pTreeTableBody", "columns"], template: ["pTreeTableBodyTemplate", "template"], frozen: "frozen" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTreeTableBody]',
+                    template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTreeTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTreeTableBodyTemplate"]
+            }], frozen: [{
+                type: Input
+            }] } });
+export class TTScrollableView {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    get scrollHeight() {
+        return this._scrollHeight;
+    }
+    set scrollHeight(val) {
+        this._scrollHeight = val;
+        if (val != null && (val.includes('%') || val.includes('calc'))) {
+            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight="flex" instead.');
+        }
+        if (this.tt.virtualScroll && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.frozen) {
+            if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {
+                DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');
+            }
+            let frozenView = this.el.nativeElement.previousElementSibling;
+            if (frozenView) {
+                if (this.tt.virtualScroll)
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-virtual-scrollable-body');
+                else
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
+            }
+            let scrollBarWidth = DomHandler.calculateScrollbarWidth();
+            this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {
+                this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            }
+        }
+        else {
+            if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {
+                this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';
+            }
+        }
+        this.bindEvents();
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+                this.headerScrollListener = this.onHeaderScroll.bind(this);
+                this.scrollHeaderBoxViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);
+            }
+            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+                this.footerScrollListener = this.onFooterScroll.bind(this);
+                this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);
+            }
+            if (!this.frozen) {
+                this.bodyScrollListener = this.onBodyScroll.bind(this);
+                if (this.tt.virtualScroll)
+                    this.virtualScrollBody.getElementRef().nativeElement.addEventListener('scroll', this.bodyScrollListener);
+                else
+                    this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);
+            }
+        });
+    }
+    unbindEvents() {
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);
+        }
+        if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {
+            this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+        if (this.virtualScrollBody && this.virtualScrollBody.getElementRef()) {
+            this.virtualScrollBody.getElementRef().nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+    }
+    onHeaderScroll() {
+        const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onFooterScroll() {
+        const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onBodyScroll(event) {
+        if (this.preventBodyScrollPropagation) {
+            this.preventBodyScrollPropagation = false;
+            return;
+        }
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.frozenSiblingBody) {
+            this.frozenSiblingBody.scrollTop = event.target.scrollTop;
+        }
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.scrollBodyViewChild.nativeElement.scrollTo) {
+                this.scrollBodyViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;
+                this.scrollBodyViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        this.frozenSiblingBody = null;
+    }
+}
+TTScrollableView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+TTScrollableView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTScrollableView, selector: "[ttScrollableView]", inputs: { columns: ["ttScrollableView", "columns"], frozen: "frozen", scrollHeight: "scrollHeight" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "scrollHeaderViewChild", first: true, predicate: ["scrollHeader"], descendants: true }, { propertyName: "scrollHeaderBoxViewChild", first: true, predicate: ["scrollHeaderBox"], descendants: true }, { propertyName: "scrollBodyViewChild", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "scrollTableViewChild", first: true, predicate: ["scrollTable"], descendants: true }, { propertyName: "scrollLoadingTableViewChild", first: true, predicate: ["loadingTable"], descendants: true }, { propertyName: "scrollFooterViewChild", first: true, predicate: ["scrollFooter"], descendants: true }, { propertyName: "scrollFooterBoxViewChild", first: true, predicate: ["scrollFooterBox"], descendants: true }, { propertyName: "scrollableAlignerViewChild", first: true, predicate: ["scrollableAligner"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: TTBody, selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[ttScrollableView]',
+                    template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["ttScrollableView"]
+            }], frozen: [{
+                type: Input
+            }], scrollHeaderViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeader']
+            }], scrollHeaderBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeaderBox']
+            }], scrollBodyViewChild: [{
+                type: ViewChild,
+                args: ['scrollBody']
+            }], scrollTableViewChild: [{
+                type: ViewChild,
+                args: ['scrollTable']
+            }], scrollLoadingTableViewChild: [{
+                type: ViewChild,
+                args: ['loadingTable']
+            }], scrollFooterViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooter']
+            }], scrollFooterBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooterBox']
+            }], scrollableAlignerViewChild: [{
+                type: ViewChild,
+                args: ['scrollableAligner']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], scrollHeight: [{
+                type: Input
+            }] } });
+export class TTSortableColumn {
+    constructor(tt) {
+        this.tt = tt;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.tt.isSorted(this.field);
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.updateSortState();
+            this.tt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.ttSortableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });
+TTSortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSortableColumn, selector: "[ttSortableColumn]", inputs: { field: ["ttSortableColumn", "field"], ttSortableColumnDisabled: "ttSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["ttSortableColumn"]
+            }], ttSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+export class TTSortIcon {
+    constructor(tt, cd) {
+        this.tt = tt;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.tt.sortMode === 'single') {
+            this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;
+        }
+        else if (this.tt.sortMode === 'multiple') {
+            let sortMeta = this.tt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTSortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTSortIcon, selector: "p-treeTableSortIcon", inputs: { field: "field", ariaLabelDesc: "ariaLabelDesc", ariaLabelAsc: "ariaLabelAsc" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableSortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }], ariaLabelDesc: [{
+                type: Input
+            }], ariaLabelAsc: [{
+                type: Input
+            }] } });
+export class TTResizableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        this.tt.onColumnResizeBegin(event);
+        this.bindDocumentEvents();
+    }
+    onDocumentMouseMove(event) {
+        this.tt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.tt.onColumnResizeEnd(event, this.el.nativeElement);
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.ttResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+TTResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTResizableColumn, selector: "[ttResizableColumn]", inputs: { ttResizableColumnDisabled: "ttResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttResizableColumnDisabled: [{
+                type: Input
+            }] } });
+export class TTReorderableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.tt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.tt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.tt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.tt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.ttReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+TTReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTReorderableColumn, selector: "[ttReorderableColumn]", inputs: { ttReorderableColumnDisabled: "ttReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+export class TTSelectableRow {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    onEnterKey(event) {
+        if (event.which === 13) {
+            this.onClick(event);
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowTouchEnd(event);
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRow, selector: "[ttSelectableRow]", inputs: { rowNode: ["ttSelectableRow", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onEnterKey($event)", "touchend": "onTouchEnd($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRow"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }] } });
+export class TTSelectableRowDblClick {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRowDblClick, selector: "[ttSelectableRowDblClick]", inputs: { rowNode: ["ttSelectableRowDblClick", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRowDblClick"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+export class TTContextMenuRow {
+    constructor(tt, tableService, el) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {
+                this.selected = this.tt.equals(this.rowNode.node, node);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowRightClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.ttContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+TTContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTContextMenuRow, selector: "[ttContextMenuRow]", inputs: { rowNode: ["ttContextMenuRow", "rowNode"], ttContextMenuRowDisabled: "ttContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ElementRef }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttContextMenuRow"]
+            }], ttContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+export class TTCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.tt.isSelected(this.rowNode.node);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.tt.isSelected(this.rowNode.node);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.tt.toggleNodeWithCheckbox({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTCheckbox, selector: "p-treeTableCheckbox", inputs: { disabled: "disabled", rowNode: ["value", "rowNode"] }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], rowNode: [{
+                type: Input,
+                args: ["value"]
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+export class TTHeaderCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event, checked) {
+        if (this.tt.value && this.tt.value.length > 0) {
+            this.tt.toggleNodesWithCheckbox(event, !checked);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        let checked;
+        const data = this.tt.filteredNodes || this.tt.value;
+        if (data) {
+            for (let node of data) {
+                if (this.tt.isSelected(node)) {
+                    checked = true;
+                }
+                else {
+                    checked = false;
+                    break;
+                }
+            }
+        }
+        else {
+            checked = false;
+        }
+        return checked;
+    }
+}
+TTHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+export class TTEditableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.editingCellClick = true;
+            if (this.tt.editingCell) {
+                if (this.tt.editingCell !== this.el.nativeElement) {
+                    if (!this.tt.isEditingCellValid()) {
+                        return;
+                    }
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.tt.onEditInit.emit({ field: this.field, data: this.data });
+        this.tt.editingCellClick = true;
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');
+                if (focusable) {
+                    focusable.focus();
+                }
+            }, 50);
+        });
+    }
+    closeEditingCell() {
+        DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');
+        this.tt.editingCell = null;
+        this.tt.unbindDocumentEditListener();
+    }
+    onKeyDown(event) {
+        if (this.isEnabled()) {
+            //enter
+            if (event.keyCode == 13) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //escape
+            else if (event.keyCode == 27) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //tab
+            else if (event.keyCode == 9) {
+                this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                if (event.shiftKey)
+                    this.moveToPreviousCell(event);
+                else
+                    this.moveToNextCell(event);
+            }
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findPreviousEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findNextEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.ttEditableColumnDisabled !== true;
+    }
+}
+TTEditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTEditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTEditableColumn, selector: "[ttEditableColumn]", inputs: { data: ["ttEditableColumn", "data"], field: ["ttEditableColumnField", "field"], ttEditableColumnDisabled: "ttEditableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["ttEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["ttEditableColumnField"]
+            }], ttEditableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+export class TreeTableCellEditor {
+    constructor(tt, editableColumn) {
+        this.tt = tt;
+        this.editableColumn = editableColumn;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+TreeTableCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableCellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableCellEditor, selector: "p-treeTableCellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCellEditor',
+                    template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TTEditableColumn }]; }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+export class TTRow {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down arrow
+            case 40:
+                let nextRow = this.el.nativeElement.nextElementSibling;
+                if (nextRow) {
+                    nextRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //down arrow
+            case 38:
+                let prevRow = this.el.nativeElement.previousElementSibling;
+                if (prevRow) {
+                    prevRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = false;
+                    this.tt.onNodeCollapse.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+            //right arrow
+            case 39:
+                if (!this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = true;
+                    this.tt.onNodeExpand.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+        }
+    }
+    restoreFocus() {
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let row = DomHandler.findSingle(this.tt.containerViewChild.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];
+                if (row) {
+                    row.focus();
+                }
+            }, 25);
+        });
+    }
+}
+TTRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTRow, selector: "[ttRow]", inputs: { rowNode: ["ttRow", "rowNode"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "\"0\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[attr.tabindex]': '"0"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ['ttRow']
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+export class TreeTableToggler {
+    constructor(tt) {
+        this.tt = tt;
+    }
+    onClick(event) {
+        this.rowNode.node.expanded = !this.rowNode.node.expanded;
+        if (this.rowNode.node.expanded) {
+            this.tt.onNodeExpand.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        else {
+            this.tt.onNodeCollapse.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        this.tt.updateSerializedValue();
+        this.tt.tableService.onUIUpdate(this.tt.value);
+        event.preventDefault();
+    }
+}
+TreeTableToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableToggler.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableToggler, selector: "p-treeTableToggler", inputs: { rowNode: "rowNode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `, isInline: true, directives: [{ type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableToggler',
+                    template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { rowNode: [{
+                type: Input
+            }] } });
+export class TreeTableModule {
+}
+TreeTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule] });
+TreeTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, imports: [[CommonModule, PaginatorModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule],
+                    exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule],
+                    declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RyZWV0YWJsZS90cmVldGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBOEMsU0FBUyxFQUE2RCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDNVYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUl6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFHbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUdZLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN2QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDcEMsdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUVoRCxnQkFBVyxHQUFHLElBQUks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QUFpQixFQUFDLEtBQUssRUFBQyxtQkFBbUIsRUFBQyxlQUFlLEVBQUMsdUJBQXVCLEVBQUMsZ0JBQWdCLEVBQUMsVUFBVSxFQUFDLGdCQUFnQixFQUFDLGdCQUFnQixFQUFDLG1CQUFtQixFQUFDLGVBQWUsQ0FBQztvQkFDcFEsWUFBWSxFQUFFLENBQUMsU0FBUyxFQUFDLGdCQUFnQixFQUFDLGdCQUFnQixFQUFDLE1BQU0sRUFBQyxnQkFBZ0IsRUFBQyxVQUFVLEVBQUMsaUJBQWlCLEVBQUMsS0FBSyxFQUFDLG1CQUFtQixFQUFDLGVBQWUsRUFBQyx1QkFBdUIsRUFBQyxnQkFBZ0IsRUFBQyxVQUFVLEVBQUMsZ0JBQWdCLEVBQUMsZ0JBQWdCLEVBQUMsbUJBQW1CLENBQUM7aUJBQ3ZRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIsIEluamVjdGFibGUsIERpcmVjdGl2ZSwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbnRlbnRDaGlsZHJlbiwgVGVtcGxhdGVSZWYsIFF1ZXJ5TGlzdCwgRWxlbWVudFJlZiwgTmdab25lLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUsIEZpbHRlclNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTb3J0TWV0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJsb2NrYWJsZVVJIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRmlsdGVyTWV0YWRhdGEgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuaW1wb3J0IHsgUmlwcGxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlLCBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRyZWVUYWJsZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzb3J0U291cmNlID0gbmV3IFN1YmplY3Q8U29ydE1ldGF8U29ydE1ldGFbXT4oKTtcbiAgICBwcml2YXRlIHNlbGVjdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBjb250ZXh0TWVudVNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIHVpVXBkYXRlU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIHByaXZhdGUgdG90YWxSZWNvcmRzU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgc29ydFNvdXJjZSQgPSB0aGlzLnNvcnRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgc2VsZWN0aW9uU291cmNlJCA9IHRoaXMuc2VsZWN0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGNvbnRleHRNZW51U291cmNlJCA9IHRoaXMuY29udGV4dE1lbnVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdWlVcGRhdGVTb3VyY2UkID0gdGhpcy51aVVwZGF0ZVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICB0b3RhbFJlY29yZHNTb3VyY2UkID0gdGhpcy50b3RhbFJlY29yZHNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBvblNvcnQoc29ydE1ldGE6IFNvcnRNZXRhfFNvcnRNZXRhW10pIHtcbiAgICAgICAgdGhpcy5zb3J0U291cmNlLm5leHQoc29ydE1ldGEpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNvdXJjZS5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dE1lbnUobm9kZTogYW55KSB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTb3VyY2UubmV4dChub2RlKTtcbiAgICB9XG5cbiAgICBvblVJVXBkYXRlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy51aVVwZGF0ZVNvdXJjZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvblRvdGFsUmVjb3Jkc0NoYW5nZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzU291cmNlLm5leHQodmFsdWUpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXRyZWVUYWJsZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBkYXRhLXNjcm9sbHNlbGVjdG9ycz1cIi5wLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWJvZHlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC10cmVldGFibGUgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdwLXRyZWV0YWJsZS1ob3ZlcmFibGUtcm93cyc6IChyb3dIb3Zlcnx8KHNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnIHx8IHNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpKSxcbiAgICAgICAgICAgICAgICAncC10cmVldGFibGUtYXV0by1sYXlvdXQnOiBhdXRvTGF5b3V0LFxuICAgICAgICAgICAgICAgICdwLXRyZWV0YWJsZS1yZXNpemFibGUnOiByZXNpemFibGVDb2x1bW5zLFxuICAgICAgICAgICAgICAgICdwLXRyZWV0YWJsZS1yZXNpemFibGUtZml0JzogKHJlc2l6YWJsZUNvbHVtbnMgJiYgY29sdW1uUmVzaXplTW9kZSA9PT0gJ2ZpdCcpLFxuICAgICAgICAgICAgICAgICdwLXRyZWV0YWJsZS1mbGV4LXNjcm9sbGFibGUnOiAoc2Nyb2xsYWJsZSAmJiBzY3JvbGxIZWlnaHQgPT09ICdmbGV4Jyl9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVldGFibGUtbG9hZGluZ1wiICpuZ0lmPVwibG9hZGluZyAmJiBzaG93TG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdHJlZXRhYmxlLWxvYWRpbmctb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncC10cmVldGFibGUtbG9hZGluZy1pY29uIHBpLXNwaW4gJyArIGxvYWRpbmdJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FwdGlvblRlbXBsYXRlXCIgY2xhc3M9XCJwLXRyZWV0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FwdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci10b3BcIiBbYWx3YXlzU2hvd109XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgICAgICAgICAgICAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIiAqbmdJZj1cInBhZ2luYXRvciAmJiAocGFnaW5hdG9yUG9zaXRpb24gPT09ICd0b3AnIHx8IHBhZ2luYXRvclBvc2l0aW9uID09J2JvdGgnKVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCIgW2Ryb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUb1wiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZVwiIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiIFtkcm9wZG93bkl0ZW1UZW1wbGF0ZV09XCJwYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZVwiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwic2hvd0N1cnJlbnRQYWdlUmVwb3J0XCIgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwic2hvd0p1bXBUb1BhZ2VEcm9wZG93blwiIFtzaG93UGFnZUxpbmtzXT1cInNob3dQYWdlTGlua3NcIj48L3AtcGFnaW5hdG9yPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10cmVldGFibGUtd3JhcHBlclwiICpuZ0lmPVwiIXNjcm9sbGFibGVcIj5cbiAgICAgICAgICAgICAgICA8dGFibGUgI3RhYmxlIFtuZ0NsYXNzXT1cInRhYmxlU3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInRhYmxlU3R5bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbEdyb3VwVGVtcGxhdGU7IGNvbnRleHQgeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwicC10cmVldGFibGUtdGhlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwicC10cmVldGFibGUtdGJvZHlcIiBbcFRyZWVUYWJsZUJvZHldPVwiY29sdW1uc1wiIFtwVHJlZVRhYmxlQm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiPjwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0Zm9vdCBjbGFzcz1cInAtdHJlZXRhYmxlLXRmb290XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQgeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWV0YWJsZS1zY3JvbGxhYmxlLXdyYXBwZXJcIiAqbmdJZj1cInNjcm9sbGFibGVcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXRyZWV0YWJsZS1zY3JvbGxhYmxlLXZpZXcgcC10cmVldGFibGUtZnJvemVuLXZpZXdcIiAqbmdJZj1cImZyb3plbkNvbHVtbnN8fGZyb3plbkJvZHlUZW1wbGF0ZVwiICNzY3JvbGxhYmxlRnJvemVuVmlldyBbdHRTY3JvbGxhYmxlVmlld109XCJmcm96ZW5Db2x1bW5zXCIgW2Zyb3plbl09XCJ0cnVlXCIgW25nU3R5bGVdPVwie3dpZHRoOiBmcm96ZW5XaWR0aH1cIiBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdHJlZXRhYmxlLXNjcm9sbGFibGUtdmlld1wiICNzY3JvbGxhYmxlVmlldyBbdHRTY3JvbGxhYmxlVmlld109XCJjb2x1bW5zXCIgW2Zyb3plbl09XCJmYWxzZVwiIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCIgW25nU3R5bGVdPVwie2xlZnQ6IGZyb3plbldpZHRoLCB3aWR0aDogJ2NhbGMoMTAwJSAtICcrZnJvemVuV2lkdGgrJyknfVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxwLXBhZ2luYXRvciBbcm93c109XCJyb3dzXCIgW2ZpcnN0XT1cImZpcnN0XCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIiBbcGFnZUxpbmtTaXplXT1cInBhZ2VMaW5rc1wiIHN0eWxlQ2xhc3M9XCJwLXBhZ2luYXRvci1ib3R0b21cIiBbYWx3YXlzU2hvd109XCJhbHdheXNTaG93UGFnaW5hdG9yXCJcbiAgICAgICAgICAgICAgICAob25QYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIiAqbmdJZj1cInBhZ2luYXRvciAmJiAocGFnaW5hdG9yUG9zaXRpb24gPT09ICdib3R0b20nIHx8IHBhZ2luYXRvclBvc2l0aW9uID09J2JvdGgnKVwiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlTGVmdF09XCJwYWdpbmF0b3JMZWZ0VGVtcGxhdGVcIiBbdGVtcGxhdGVSaWdodF09XCJwYWdpbmF0b3JSaWdodFRlbXBsYXRlXCIgW2Ryb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUb1wiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwiY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZVwiIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiIFtkcm9wZG93bkl0ZW1UZW1wbGF0ZV09XCJwYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZVwiIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwic2hvd0N1cnJlbnRQYWdlUmVwb3J0XCIgW3Nob3dKdW1wVG9QYWdlRHJvcGRvd25dPVwic2hvd0p1bXBUb1BhZ2VEcm9wZG93blwiIFtzaG93UGFnZUxpbmtzXT1cInNob3dQYWdlTGlua3NcIj48L3AtcGFnaW5hdG9yPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1bW1hcnlUZW1wbGF0ZVwiIGNsYXNzPVwicC10cmVldGFibGUtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1bW1hcnlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgI3Jlc2l6ZUhlbHBlciBjbGFzcz1cInAtY29sdW1uLXJlc2l6ZXItaGVscGVyXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiAqbmdJZj1cInJlc2l6YWJsZUNvbHVtbnNcIj48L2Rpdj5cblxuICAgICAgICAgICAgPHNwYW4gI3Jlb3JkZXJJbmRpY2F0b3JVcCBjbGFzcz1cInBpIHBpLWFycm93LWRvd24gcC10cmVldGFibGUtcmVvcmRlci1pbmRpY2F0b3ItdXBcIiAqbmdJZj1cInJlb3JkZXJhYmxlQ29sdW1uc1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICNyZW9yZGVySW5kaWNhdG9yRG93biBjbGFzcz1cInBpIHBpLWFycm93LXVwIHAtdHJlZXRhYmxlLXJlb3JkZXItaW5kaWNhdG9yLWRvd25cIiAqbmdJZj1cInJlb3JkZXJhYmxlQ29sdW1uc1wiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtUcmVlVGFibGVTZXJ2aWNlXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWV0YWJsZS5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlVGFibGUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQmxvY2thYmxlVUksIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXTtcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGF1dG9MYXlvdXQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsYXp5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBsYXp5TG9hZE9uSW5pdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSByb3dzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBmaXJzdDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhZ2VMaW5rczogbnVtYmVyID0gNTtcblxuICAgIEBJbnB1dCgpIHJvd3NQZXJQYWdlT3B0aW9uczogYW55W107XG5cbiAgICBASW5wdXQoKSBhbHdheXNTaG93UGFnaW5hdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBvc2l0aW9uOiBzdHJpbmcgPSAnYm90dG9tJztcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG86IGFueTtcblxuICAgIEBJbnB1dCgpIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU6IHN0cmluZyA9ICd7Y3VycmVudFBhZ2V9IG9mIHt0b3RhbFBhZ2VzfSc7XG5cbiAgICBASW5wdXQoKSBzaG93Q3VycmVudFBhZ2VSZXBvcnQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzaG93SnVtcFRvUGFnZURyb3Bkb3duOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEljb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1BhZ2VMaW5rczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBkZWZhdWx0U29ydE9yZGVyOiBudW1iZXIgPSAxO1xuXG4gICAgQElucHV0KCkgc29ydE1vZGU6IHN0cmluZyA9ICdzaW5nbGUnO1xuXG4gICAgQElucHV0KCkgcmVzZXRQYWdlT25Tb3J0OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGN1c3RvbVNvcnQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51U2VsZWN0aW9uOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgY29udGV4dE1lbnVTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgY29udGV4dE1lbnVTZWxlY3Rpb25Nb2RlOiBzdHJpbmcgPSBcInNlcGFyYXRlXCI7XG5cbiAgICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBtZXRhS2V5U2VsZWN0aW9uOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY29tcGFyZVNlbGVjdGlvbkJ5OiBzdHJpbmcgPSAnZGVlcEVxdWFscyc7XG5cbiAgICBASW5wdXQoKSByb3dIb3ZlcjogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nSWNvbjogc3RyaW5nID0gJ3BpIHBpLXNwaW5uZXInO1xuXG4gICAgQElucHV0KCkgc2hvd0xvYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxhYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbERlbGF5OiBudW1iZXIgPSAxNTA7XG5cbiAgICBASW5wdXQoKSB2aXJ0dWFsUm93SGVpZ2h0OiBudW1iZXIgPSAyODtcblxuICAgIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZnJvemVuV2lkdGg6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGZyb3plbkNvbHVtbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgcmVzaXphYmxlQ29sdW1uczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGNvbHVtblJlc2l6ZU1vZGU6IHN0cmluZyA9ICdmaXQnO1xuXG4gICAgQElucHV0KCkgcmVvcmRlcmFibGVDb2x1bW5zOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY29udGV4dE1lbnU6IGFueTtcblxuICAgIEBJbnB1dCgpIHJvd1RyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuICAgIEBJbnB1dCgpIGZpbHRlcnM6IHsgW3M6IHN0cmluZ106IEZpbHRlck1ldGFkYXRhOyB9ID0ge307XG5cbiAgICBASW5wdXQoKSBnbG9iYWxGaWx0ZXJGaWVsZHM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KCkgZmlsdGVyRGVsYXk6IG51bWJlciA9IDMwMDtcblxuICAgIEBJbnB1dCgpIGZpbHRlck1vZGU6IHN0cmluZyA9ICdsZW5pZW50JztcblxuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVFeHBhbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZUNvbGxhcHNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU29ydDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25MYXp5TG9hZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgc29ydEZ1bmN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNvbFJlc2l6ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25Db2xSZW9yZGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbk5vZGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uTm9kZVVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhlYWRlckNoZWNrYm94VG9nZ2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkVkaXRJbml0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkVkaXRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25FZGl0Q2FuY2VsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlc2l6ZUhlbHBlcicpIHJlc2l6ZUhlbHBlclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlb3JkZXJJbmRpY2F0b3JVcCcpIHJlb3JkZXJJbmRpY2F0b3JVcFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Jlb3JkZXJJbmRpY2F0b3JEb3duJykgcmVvcmRlckluZGljYXRvckRvd25WaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsYWJsZVZpZXcnKSBzY3JvbGxhYmxlVmlld0NoaWxkO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsYWJsZUZyb3plblZpZXcnKSBzY3JvbGxhYmxlRnJvemVuVmlld0NoaWxkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPjtcblxuICAgIF92YWx1ZTogVHJlZU5vZGVbXSA9IFtdO1xuXG4gICAgc2VyaWFsaXplZFZhbHVlOiBhbnlbXTtcblxuICAgIF90b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XG5cbiAgICBfbXVsdGlTb3J0TWV0YTogU29ydE1ldGFbXTtcblxuICAgIF9zb3J0RmllbGQ6IHN0cmluZztcblxuICAgIF9zb3J0T3JkZXI6IG51bWJlciA9IDE7XG5cbiAgICBmaWx0ZXJlZE5vZGVzOiBhbnlbXTtcblxuICAgIGZpbHRlclRpbWVvdXQ6IGFueTtcblxuICAgIGNvbEdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjYXB0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGxvYWRpbmdCb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHN1bW1hcnlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnaW5hdG9yTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcGFnaW5hdG9yUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHBhZ2luYXRvckRyb3Bkb3duSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZnJvemVuSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmcm96ZW5Cb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmcm96ZW5Gb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGZyb3plbkNvbEdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBsYXN0UmVzaXplckhlbHBlclg6IG51bWJlcjtcblxuICAgIHJlb3JkZXJJY29uV2lkdGg6IG51bWJlcjtcblxuICAgIHJlb3JkZXJJY29uSGVpZ2h0OiBudW1iZXI7XG5cbiAgICBkcmFnZ2VkQ29sdW1uOiBhbnk7XG5cbiAgICBkcm9wUG9zaXRpb246IG51bWJlcjtcblxuICAgIHByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbjogYm9vbGVhbjtcblxuICAgIF9zZWxlY3Rpb246IGFueTtcblxuICAgIHNlbGVjdGlvbktleXM6IGFueSA9IHt9O1xuXG4gICAgcm93VG91Y2hlZDogYm9vbGVhbjtcblxuICAgIGVkaXRpbmdDZWxsOiBFbGVtZW50O1xuXG4gICAgZWRpdGluZ0NlbGxEYXRhOiBhbnk7XG5cbiAgICBlZGl0aW5nQ2VsbEZpZWxkOiBhbnk7XG5cbiAgICBlZGl0aW5nQ2VsbENsaWNrOiBib29sZWFuO1xuXG4gICAgZG9jdW1lbnRFZGl0TGlzdGVuZXI6IGFueTtcblxuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgdG9nZ2xlUm93SW5kZXg6IG51bWJlcjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5sYXp5ICYmIHRoaXMubGF6eUxvYWRPbkluaXQpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXB0aW9uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbG9hZGluZ2JvZHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdCb2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzdW1tYXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1tYXJ5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbEdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHltZXNzYWdlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eU1lc3NhZ2VUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdwYWdpbmF0b3JsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3JMZWZ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncGFnaW5hdG9ycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvclJpZ2h0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAncGFnaW5hdG9yZHJvcGRvd25pdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3JEcm9wZG93bkl0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmcm96ZW5oZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyb3plbkhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zyb3plbmJvZHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyb3plbkJvZHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmcm96ZW5mb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyb3plbkZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zyb3plbmNvbGdyb3VwJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcm96ZW5Db2xHcm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUcmVlVGFibGVTZXJ2aWNlLCBwdWJsaWMgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHNpbXBsZUNoYW5nZS52YWx1ZS5jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5sYXp5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSAodGhpcy5fdmFsdWUgPyB0aGlzLl92YWx1ZS5sZW5ndGggOiAwKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRNb2RlID09ICdzaW5nbGUnICYmIHRoaXMuc29ydEZpZWxkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRTaW5nbGUoKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNvcnRNb2RlID09ICdtdWx0aXBsZScgJiYgdGhpcy5tdWx0aVNvcnRNZXRhKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaGFzRmlsdGVyKCkpICAgICAgIC8vc29ydCBhbHJlYWR5IGZpbHRlcnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblVJVXBkYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zb3J0RmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRGaWVsZCA9IHNpbXBsZUNoYW5nZS5zb3J0RmllbGQuY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICAvL2F2b2lkIHRyaWdnZXJpbmcgbGF6eSBsb2FkIHByaW9yIHRvIGxhenkgaW5pdGlhbGl6YXRpb24gYXQgb25Jbml0XG4gICAgICAgICAgICBpZiAoICF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zb3J0T3JkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRPcmRlciA9IHNpbXBsZUNoYW5nZS5zb3J0T3JkZXIuY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICAvL2F2b2lkIHRyaWdnZXJpbmcgbGF6eSBsb2FkIHByaW9yIHRvIGxhenkgaW5pdGlhbGl6YXRpb24gYXQgb25Jbml0XG4gICAgICAgICAgICBpZiAoICF0aGlzLmxhenkgfHwgdGhpcy5pbml0aWFsaXplZCApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gc2ltcGxlQ2hhbmdlLm11bHRpU29ydE1ldGEuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZS5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHNpbXBsZUNoYW5nZS5zZWxlY3Rpb24uY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucHJldmVudFNlbGVjdGlvblNldHRlclByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb25LZXlzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJldmVudFNlbGVjdGlvblNldHRlclByb3BhZ2F0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2YWw6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVkVmFsdWUgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpXG4gICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZVBhZ2VOb2RlcygpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZU5vZGVzKG51bGwsIHRoaXMuZmlsdGVyZWROb2Rlc3x8dGhpcy52YWx1ZSwgMCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplTm9kZXMocGFyZW50LCBub2RlcywgbGV2ZWwsIHZpc2libGUpIHtcbiAgICAgICAgaWYgKG5vZGVzICYmIG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93Tm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdmlzaWJsZSAmJiAocGFyZW50ID8gcGFyZW50LmV4cGFuZGVkIDogdHJ1ZSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplZFZhbHVlLnB1c2gocm93Tm9kZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocm93Tm9kZS52aXNpYmxlICYmIG5vZGUuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpYWxpemVOb2Rlcyhub2RlLCBub2RlLmNoaWxkcmVuLCBsZXZlbCArIDEsIHJvd05vZGUudmlzaWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VyaWFsaXplUGFnZU5vZGVzKCkge1xuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZmlsdGVyZWROb2RlcyB8fCB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZWRWYWx1ZSA9IFtdO1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmxhenkgPyAwIDogdGhpcy5maXJzdDtcblxuICAgICAgICAgICAgZm9yKGxldCBpID0gZmlyc3Q7IGkgPCAoZmlyc3QgKyB0aGlzLnJvd3MpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IGRhdGFbaV07XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpYWxpemVkVmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplTm9kZXMobm9kZSwgbm9kZS5jaGlsZHJlbiwgMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xuICAgIH1cbiAgICBzZXQgdG90YWxSZWNvcmRzKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbDtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Ub3RhbFJlY29yZHNDaGFuZ2UodGhpcy5fdG90YWxSZWNvcmRzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgc29ydEZpZWxkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0RmllbGQ7XG4gICAgfVxuXG4gICAgc2V0IHNvcnRGaWVsZCh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zb3J0RmllbGQgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHNvcnRPcmRlcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyO1xuICAgIH1cbiAgICBzZXQgc29ydE9yZGVyKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3NvcnRPcmRlciA9IHZhbDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbXVsdGlTb3J0TWV0YSgpOiBTb3J0TWV0YVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpU29ydE1ldGE7XG4gICAgfVxuXG4gICAgc2V0IG11bHRpU29ydE1ldGEodmFsOiBTb3J0TWV0YVtdKSB7XG4gICAgICAgIHRoaXMuX211bHRpU29ydE1ldGEgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHNlbGVjdGlvbigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3Rpb24odmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdmFsO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlbGVjdGlvbktleXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFLZXkgJiYgdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3NlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBmb3IobGV0IG5vZGUgb2YgdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tTdHJpbmcoT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlLmRhdGEsIHRoaXMuZGF0YUtleSkpXSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzW1N0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKHRoaXMuX3NlbGVjdGlvbi5kYXRhLCB0aGlzLmRhdGFLZXkpKV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QYWdlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDtcbiAgICAgICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcblxuICAgICAgICBpZiAodGhpcy5sYXp5KVxuICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZVBhZ2VOb2RlcygpO1xuXG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoe1xuICAgICAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3QsXG4gICAgICAgICAgICByb3dzOiB0aGlzLnJvd3NcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25VSVVwZGF0ZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzb3J0KGV2ZW50KSB7XG4gICAgICAgIGxldCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudDtcblxuICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRPcmRlciA9ICh0aGlzLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGQpID8gdGhpcy5zb3J0T3JkZXIgKiAtMSA6IHRoaXMuZGVmYXVsdFNvcnRPcmRlcjtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRGaWVsZCA9IGV2ZW50LmZpZWxkO1xuICAgICAgICAgICAgdGhpcy5zb3J0U2luZ2xlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2V0UGFnZU9uU29ydCAmJiB0aGlzLnNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gb3JpZ2luYWxFdmVudC5tZXRhS2V5IHx8IG9yaWdpbmFsRXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGxldCBzb3J0TWV0YSA9IHRoaXMuZ2V0U29ydE1ldGEoZXZlbnQuZmllbGQpO1xuXG4gICAgICAgICAgICBpZiAoc29ydE1ldGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbXVsdGlTb3J0TWV0YSA9IFt7IGZpZWxkOiBldmVudC5maWVsZCwgb3JkZXI6IHNvcnRNZXRhLm9yZGVyICogLTEgfV1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNldFBhZ2VPblNvcnQgJiYgdGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnRNZXRhLm9yZGVyID0gc29ydE1ldGEub3JkZXIgKiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkgfHwgIXRoaXMubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWx0aVNvcnRNZXRhID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzZXRQYWdlT25Tb3J0ICYmIHRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFNjcm9sbFRvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTb3J0TWV0YS5wdXNoKHsgZmllbGQ6IGV2ZW50LmZpZWxkLCBvcmRlcjogdGhpcy5kZWZhdWx0U29ydE9yZGVyIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc29ydFNpbmdsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc29ydEZpZWxkICYmIHRoaXMuc29ydE9yZGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydE5vZGVzKHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzRmlsdGVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc29ydE1ldGE6IFNvcnRNZXRhID0ge1xuICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgICAgICBvcmRlcjogdGhpcy5zb3J0T3JkZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMub25Tb3J0LmVtaXQoc29ydE1ldGEpO1xuICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Tb3J0KHNvcnRNZXRhKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzb3J0Tm9kZXMobm9kZXMpIHtcbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVNvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICAgIGRhdGE6IG5vZGVzLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMuc29ydE1vZGUsXG4gICAgICAgICAgICAgICAgZmllbGQ6IHRoaXMuc29ydEZpZWxkLFxuICAgICAgICAgICAgICAgIG9yZGVyOiB0aGlzLnNvcnRPcmRlclxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2Rlcy5zb3J0KChub2RlMSwgbm9kZTIpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUxID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCB0aGlzLnNvcnRGaWVsZCk7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlMiA9IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZTIuZGF0YSwgdGhpcy5zb3J0RmllbGQpO1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHtudW1lcmljOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAodmFsdWUxIDwgdmFsdWUyKSA/IC0xIDogKHZhbHVlMSA+IHZhbHVlMikgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5zb3J0T3JkZXIgKiByZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydE5vZGVzKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc29ydE11bHRpcGxlKCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxhenlMb2FkLmVtaXQodGhpcy5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgdGhpcy5zb3J0TXVsdGlwbGVOb2Rlcyh0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZpbHRlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblNvcnQuZW1pdCh7XG4gICAgICAgICAgICAgICAgbXVsdGlzb3J0bWV0YTogdGhpcy5tdWx0aVNvcnRNZXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNvcnQodGhpcy5tdWx0aVNvcnRNZXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvcnRNdWx0aXBsZU5vZGVzKG5vZGVzKSB7XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jdXN0b21Tb3J0KSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRGdW5jdGlvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMuc29ydE1vZGUsXG4gICAgICAgICAgICAgICAgbXVsdGlTb3J0TWV0YTogdGhpcy5tdWx0aVNvcnRNZXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVzLnNvcnQoKG5vZGUxLCBub2RlMikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm11bHRpc29ydEZpZWxkKG5vZGUxLCBub2RlMiwgdGhpcy5tdWx0aVNvcnRNZXRhLCAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRNdWx0aXBsZU5vZGVzKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlzb3J0RmllbGQobm9kZTEsIG5vZGUyLCBtdWx0aVNvcnRNZXRhLCBpbmRleCkge1xuICAgICAgICBsZXQgdmFsdWUxID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICAgIGxldCB2YWx1ZTIgPSBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUyLmRhdGEsIG11bHRpU29ydE1ldGFbaW5kZXhdLmZpZWxkKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxuICAgICAgICAgICAgcmVzdWx0ID0gLTE7XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxuICAgICAgICAgICAgcmVzdWx0ID0gMTtcbiAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXG4gICAgICAgICAgICByZXN1bHQgPSAwO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlMSA9PSAnc3RyaW5nJyB8fCB2YWx1ZTEgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZTEubG9jYWxlQ29tcGFyZSAmJiAodmFsdWUxICE9IHZhbHVlMikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG11bHRpU29ydE1ldGFbaW5kZXhdLm9yZGVyICogdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHtudW1lcmljOiB0cnVlfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA8IHZhbHVlMikgPyAtMSA6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUxID09IHZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIChtdWx0aVNvcnRNZXRhLmxlbmd0aCAtIDEpID4gKGluZGV4KSA/ICh0aGlzLm11bHRpc29ydEZpZWxkKG5vZGUxLCBub2RlMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXggKyAxKSkgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZ2V0U29ydE1ldGEoZmllbGQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhICYmIHRoaXMubXVsdGlTb3J0TWV0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tdWx0aVNvcnRNZXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlTb3J0TWV0YVtpXS5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlTb3J0TWV0YVtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1NvcnRlZChmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLnNvcnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnNvcnRGaWVsZCAmJiB0aGlzLnNvcnRGaWVsZCA9PT0gZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc29ydE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGxldCBzb3J0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpU29ydE1ldGEpwqB7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMubXVsdGlTb3J0TWV0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aVNvcnRNZXRhW2ldLmZpZWxkID09IGZpZWxkKcKge1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNvcnRlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUxhenlMb2FkTWV0YWRhdGEoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgICAgICAgcm93czogdGhpcy5yb3dzLFxuICAgICAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXIsXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXI6IHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnNbJ2dsb2JhbCddID8gdGhpcy5maWx0ZXJzWydnbG9iYWwnXS52YWx1ZSA6IG51bGwsXG4gICAgICAgICAgICBtdWx0aVNvcnRNZXRhOiB0aGlzLm11bHRpU29ydE1ldGFcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRTY3JvbGxUb3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvVmlydHVhbEluZGV4KDApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvKHt0b3A6IDB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2Nyb2xsVG9WaXJ0dWFsSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlVmlld0NoaWxkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbGFibGVWaWV3Q2hpbGQuc2Nyb2xsVG9WaXJ0dWFsSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsYWJsZUZyb3plblZpZXdDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxhYmxlRnJvemVuVmlld0NoaWxkLnNjcm9sbFRvVmlydHVhbEluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzY3JvbGxUbyhvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGVWaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsYWJsZVZpZXdDaGlsZC5zY3JvbGxUbyhvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGVGcm96ZW5WaWV3Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsYWJsZUZyb3plblZpZXdDaGlsZC5zY3JvbGxUbyhvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5maWx0ZXJlZE5vZGVzfHx0aGlzLnZhbHVlO1xuICAgICAgICByZXR1cm4gZGF0YSA9PSBudWxsIHx8IGRhdGEubGVuZ3RoID09IDA7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIG9uQ29sdW1uUmVzaXplQmVnaW4oZXZlbnQpIHtcbiAgICAgICAgbGV0IGNvbnRhaW5lckxlZnQgPSBEb21IYW5kbGVyLmdldE9mZnNldCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS5sZWZ0O1xuICAgICAgICB0aGlzLmxhc3RSZXNpemVySGVscGVyWCA9IChldmVudC5wYWdlWCAtIGNvbnRhaW5lckxlZnQgKyB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQ29sdW1uUmVzaXplKGV2ZW50KSB7XG4gICAgICAgIGxldCBjb250YWluZXJMZWZ0ID0gRG9tSGFuZGxlci5nZXRPZmZzZXQodGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkubGVmdDtcbiAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC11bnNlbGVjdGFibGUtdGV4dCcpO1xuICAgICAgICB0aGlzLnJlc2l6ZUhlbHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgdGhpcy5yZXNpemVIZWxwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSAwICsgJ3B4JztcbiAgICAgICAgdGhpcy5yZXNpemVIZWxwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gKGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyTGVmdCArIHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCkgKyAncHgnO1xuXG4gICAgICAgIHRoaXMucmVzaXplSGVscGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgb25Db2x1bW5SZXNpemVFbmQoZXZlbnQsIGNvbHVtbikge1xuICAgICAgICBsZXQgZGVsdGEgPSB0aGlzLnJlc2l6ZUhlbHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSB0aGlzLmxhc3RSZXNpemVySGVscGVyWDtcbiAgICAgICAgbGV0IGNvbHVtbldpZHRoID0gY29sdW1uLm9mZnNldFdpZHRoO1xuICAgICAgICBsZXQgbmV3Q29sdW1uV2lkdGggPSBjb2x1bW5XaWR0aCArIGRlbHRhO1xuICAgICAgICBsZXQgbWluV2lkdGggPSBjb2x1bW4uc3R5bGUubWluV2lkdGggfHwgMTU7XG5cbiAgICAgICAgaWYgKGNvbHVtbldpZHRoICsgZGVsdGEgPiBwYXJzZUludChtaW5XaWR0aCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtblJlc2l6ZU1vZGUgPT09ICdmaXQnKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRDb2x1bW4gPSBjb2x1bW4ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHdoaWxlICghbmV4dENvbHVtbi5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dENvbHVtbiA9IG5leHRDb2x1bW4ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXh0Q29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Q29sdW1uV2lkdGggPSBuZXh0Q29sdW1uLm9mZnNldFdpZHRoIC0gZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Q29sdW1uTWluV2lkdGggPSBuZXh0Q29sdW1uLnN0eWxlLm1pbldpZHRoIHx8IDE1O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdDb2x1bW5XaWR0aCA+IDE1ICYmIG5leHRDb2x1bW5XaWR0aCA+IHBhcnNlSW50KG5leHRDb2x1bW5NaW5XaWR0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsYWJsZVZpZXcgPSB0aGlzLmZpbmRQYXJlbnRTY3JvbGxhYmxlVmlldyhjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlQm9keVRhYmxlID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAnLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtYm9keSB0YWJsZScpIHx8IERvbUhhbmRsZXIuZmluZFNpbmdsZShzY3JvbGxhYmxlVmlldywgJy5wLXRyZWV0YWJsZS12aXJ0dWFsLXNjcm9sbGFibGUtYm9keSB0YWJsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlSGVhZGVyVGFibGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoc2Nyb2xsYWJsZVZpZXcsICd0YWJsZS5wLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWhlYWRlci10YWJsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlRm9vdGVyVGFibGUgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoc2Nyb2xsYWJsZVZpZXcsICd0YWJsZS5wLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWZvb3Rlci10YWJsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNpemVDb2x1bW5JbmRleCA9IERvbUhhbmRsZXIuaW5kZXgoY29sdW1uKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQ29sR3JvdXAoc2Nyb2xsYWJsZUhlYWRlclRhYmxlLCByZXNpemVDb2x1bW5JbmRleCwgbmV3Q29sdW1uV2lkdGgsIG5leHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVDb2xHcm91cChzY3JvbGxhYmxlQm9keVRhYmxlLCByZXNpemVDb2x1bW5JbmRleCwgbmV3Q29sdW1uV2lkdGgsIG5leHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVDb2xHcm91cChzY3JvbGxhYmxlRm9vdGVyVGFibGUsIHJlc2l6ZUNvbHVtbkluZGV4LCBuZXdDb2x1bW5XaWR0aCwgbmV4dENvbHVtbldpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5zdHlsZS53aWR0aCA9IG5ld0NvbHVtbldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dENvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29sdW1uLnN0eWxlLndpZHRoID0gbmV4dENvbHVtbldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbHVtblJlc2l6ZU1vZGUgPT09ICdleHBhbmQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsYWJsZVZpZXcgPSB0aGlzLmZpbmRQYXJlbnRTY3JvbGxhYmxlVmlldyhjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsYWJsZUJvZHkgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoc2Nyb2xsYWJsZVZpZXcsICcucC10cmVldGFibGUtc2Nyb2xsYWJsZS1ib2R5JykgfHwgRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAnY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlSGVhZGVyID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAnLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtaGVhZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlRm9vdGVyID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAnLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtZm9vdGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxhYmxlQm9keVRhYmxlID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAnLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtYm9keSB0YWJsZScpIHx8IERvbUhhbmRsZXIuZmluZFNpbmdsZShzY3JvbGxhYmxlVmlldywgJ2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCB0YWJsZScpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsYWJsZUhlYWRlclRhYmxlID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKHNjcm9sbGFibGVWaWV3LCAndGFibGUucC10cmVldGFibGUtc2Nyb2xsYWJsZS1oZWFkZXItdGFibGUnKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNjcm9sbGFibGVGb290ZXJUYWJsZSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZShzY3JvbGxhYmxlVmlldywgJ3RhYmxlLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtZm9vdGVyLXRhYmxlJyk7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVCb2R5VGFibGUuc3R5bGUud2lkdGggPSBzY3JvbGxhYmxlQm9keVRhYmxlLm9mZnNldFdpZHRoICsgZGVsdGEgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlSGVhZGVyVGFibGUuc3R5bGUud2lkdGggPSBzY3JvbGxhYmxlSGVhZGVyVGFibGUub2Zmc2V0V2lkdGggKyBkZWx0YSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlRm9vdGVyVGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVGb290ZXJUYWJsZS5zdHlsZS53aWR0aCA9IHNjcm9sbGFibGVGb290ZXJUYWJsZS5vZmZzZXRXaWR0aCArIGRlbHRhICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzaXplQ29sdW1uSW5kZXggPSBEb21IYW5kbGVyLmluZGV4KGNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUJvZHlUYWJsZVdpZHRoID0gY29sdW1uID8gc2Nyb2xsYWJsZUJvZHlUYWJsZS5vZmZzZXRXaWR0aCArIGRlbHRhIDogbmV3Q29sdW1uV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVIZWFkZXJUYWJsZVdpZHRoID0gY29sdW1uID8gc2Nyb2xsYWJsZUhlYWRlclRhYmxlLm9mZnNldFdpZHRoICsgZGVsdGEgOiBuZXdDb2x1bW5XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb250YWluZXJJblZpZXdwb3J0ID0gdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA+PSBzY3JvbGxhYmxlQm9keVRhYmxlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHNldFdpZHRoID0gKGNvbnRhaW5lciwgdGFibGUsIHdpZHRoLCBpc0NvbnRhaW5lckluVmlld3BvcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIgJiYgdGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSBpc0NvbnRhaW5lckluVmlld3BvcnQgPyB3aWR0aCArIERvbUhhbmRsZXIuY2FsY3VsYXRlU2Nyb2xsYmFyV2lkdGgoc2Nyb2xsYWJsZUJvZHkpICsgJ3B4JyA6ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHNjcm9sbGFibGVCb2R5LCBzY3JvbGxhYmxlQm9keVRhYmxlLCBzY3JvbGxhYmxlQm9keVRhYmxlV2lkdGgsIGlzQ29udGFpbmVySW5WaWV3cG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHNjcm9sbGFibGVIZWFkZXIsIHNjcm9sbGFibGVIZWFkZXJUYWJsZSwgc2Nyb2xsYWJsZUhlYWRlclRhYmxlV2lkdGgsIGlzQ29udGFpbmVySW5WaWV3cG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKHNjcm9sbGFibGVGb290ZXIsIHNjcm9sbGFibGVGb290ZXJUYWJsZSwgc2Nyb2xsYWJsZUhlYWRlclRhYmxlV2lkdGgsIGlzQ29udGFpbmVySW5WaWV3cG9ydCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVDb2xHcm91cChzY3JvbGxhYmxlSGVhZGVyVGFibGUsIHJlc2l6ZUNvbHVtbkluZGV4LCBuZXdDb2x1bW5XaWR0aCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQ29sR3JvdXAoc2Nyb2xsYWJsZUJvZHlUYWJsZSwgcmVzaXplQ29sdW1uSW5kZXgsIG5ld0NvbHVtbldpZHRoLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVDb2xHcm91cChzY3JvbGxhYmxlRm9vdGVyVGFibGUsIHJlc2l6ZUNvbHVtbkluZGV4LCBuZXdDb2x1bW5XaWR0aCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLnRhYmxlVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyBkZWx0YSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5zdHlsZS53aWR0aCA9IG5ld0NvbHVtbldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW5lcldpZHRoID0gdGhpcy50YWJsZVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gY29udGFpbmVyV2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbkNvbFJlc2l6ZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBjb2x1bW4sXG4gICAgICAgICAgICAgICAgZGVsdGE6IGRlbHRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplSGVscGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LCAncC11bnNlbGVjdGFibGUtdGV4dCcpO1xuICAgIH1cblxuICAgIGZpbmRQYXJlbnRTY3JvbGxhYmxlVmlldyhjb2x1bW4pIHtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IGNvbHVtbi5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhRG9tSGFuZGxlci5oYXNDbGFzcyhwYXJlbnQsICdwLXRyZWV0YWJsZS1zY3JvbGxhYmxlLXZpZXcnKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNpemVDb2xHcm91cCh0YWJsZSwgcmVzaXplQ29sdW1uSW5kZXgsIG5ld0NvbHVtbldpZHRoLCBuZXh0Q29sdW1uV2lkdGgpIHtcbiAgICAgICAgaWYgKHRhYmxlKSB7XG4gICAgICAgICAgICBsZXQgY29sR3JvdXAgPSB0YWJsZS5jaGlsZHJlblswXS5ub2RlTmFtZSA9PT0gJ0NPTEdST1VQJyA/IHRhYmxlLmNoaWxkcmVuWzBdIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKGNvbEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbCA9IGNvbEdyb3VwLmNoaWxkcmVuW3Jlc2l6ZUNvbHVtbkluZGV4XTtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dENvbCA9IGNvbC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgY29sLnN0eWxlLndpZHRoID0gbmV3Q29sdW1uV2lkdGggKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5leHRDb2wgJiYgbmV4dENvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRDb2wuc3R5bGUud2lkdGggPSBuZXh0Q29sdW1uV2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IFwiU2Nyb2xsYWJsZSB0YWJsZXMgcmVxdWlyZSBhIGNvbGdyb3VwIHRvIHN1cHBvcnQgcmVzaXphYmxlIGNvbHVtbnNcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCBjb2x1bW5FbGVtZW50KSB7XG4gICAgICAgIHRoaXMucmVvcmRlckljb25XaWR0aCA9IERvbUhhbmRsZXIuZ2V0SGlkZGVuRWxlbWVudE91dGVyV2lkdGgodGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucmVvcmRlckljb25IZWlnaHQgPSBEb21IYW5kbGVyLmdldEhpZGRlbkVsZW1lbnRPdXRlckhlaWdodCh0aGlzLnJlb3JkZXJJbmRpY2F0b3JEb3duVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmRyYWdnZWRDb2x1bW4gPSBjb2x1bW5FbGVtZW50O1xuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsICdiJyk7ICAgIC8vIEZvciBmaXJlZm94XG4gICAgfVxuXG4gICAgb25Db2x1bW5EcmFnRW50ZXIoZXZlbnQsIGRyb3BIZWFkZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVvcmRlcmFibGVDb2x1bW5zICYmIHRoaXMuZHJhZ2dlZENvbHVtbiAmJiBkcm9wSGVhZGVyKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbGV0IGNvbnRhaW5lck9mZnNldCA9IERvbUhhbmRsZXIuZ2V0T2Zmc2V0KHRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGRyb3BIZWFkZXJPZmZzZXQgPSBEb21IYW5kbGVyLmdldE9mZnNldChkcm9wSGVhZGVyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dlZENvbHVtbiAhPSBkcm9wSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldExlZnQgPSBkcm9wSGVhZGVyT2Zmc2V0LmxlZnQgLSBjb250YWluZXJPZmZzZXQubGVmdDtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VG9wID0gY29udGFpbmVyT2Zmc2V0LnRvcCAtIGRyb3BIZWFkZXJPZmZzZXQudG9wO1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5DZW50ZXIgPSBkcm9wSGVhZGVyT2Zmc2V0LmxlZnQgKyBkcm9wSGVhZGVyLm9mZnNldFdpZHRoIC8gMjtcblxuICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvclVwVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gZHJvcEhlYWRlck9mZnNldC50b3AgLSBjb250YWluZXJPZmZzZXQudG9wIC0gKHRoaXMucmVvcmRlckljb25IZWlnaHQgLSAxKSArICdweCc7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IGRyb3BIZWFkZXJPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGRyb3BIZWFkZXIub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcblxuICAgICAgICAgICAgICAgIGlmIChldmVudC5wYWdlWCA+IGNvbHVtbkNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJJbmRpY2F0b3JVcFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAodGFyZ2V0TGVmdCArIGRyb3BIZWFkZXIub2Zmc2V0V2lkdGggLSBNYXRoLmNlaWwodGhpcy5yZW9yZGVySWNvbldpZHRoIC8gMikpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAodGFyZ2V0TGVmdCArIGRyb3BIZWFkZXIub2Zmc2V0V2lkdGggLSBNYXRoLmNlaWwodGhpcy5yZW9yZGVySWNvbldpZHRoIC8gMikpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wUG9zaXRpb24gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gKHRhcmdldExlZnQgLSBNYXRoLmNlaWwodGhpcy5yZW9yZGVySWNvbldpZHRoIC8gMikpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSAodGFyZ2V0TGVmdCAtIE1hdGguY2VpbCh0aGlzLnJlb3JkZXJJY29uV2lkdGggLyAyKSkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucmVvcmRlckluZGljYXRvclVwVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbHVtbkRyYWdMZWF2ZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZW9yZGVyYWJsZUNvbHVtbnMgJiYgdGhpcy5kcmFnZ2VkQ29sdW1uKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbHVtbkRyb3AoZXZlbnQsIGRyb3BDb2x1bW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dlZENvbHVtbikge1xuICAgICAgICAgICAgbGV0IGRyYWdJbmRleCA9IERvbUhhbmRsZXIuaW5kZXhXaXRoaW5Hcm91cCh0aGlzLmRyYWdnZWRDb2x1bW4sICd0dHJlb3JkZXJhYmxlY29sdW1uJyk7XG4gICAgICAgICAgICBsZXQgZHJvcEluZGV4ID0gRG9tSGFuZGxlci5pbmRleFdpdGhpbkdyb3VwKGRyb3BDb2x1bW4sICd0dHJlb3JkZXJhYmxlY29sdW1uJyk7XG4gICAgICAgICAgICBsZXQgYWxsb3dEcm9wID0gKGRyYWdJbmRleCAhPSBkcm9wSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCAtIGRyYWdJbmRleCA9PSAxICYmIHRoaXMuZHJvcFBvc2l0aW9uID09PSAtMSkgfHwgKGRyYWdJbmRleCAtIGRyb3BJbmRleCA9PSAxICYmIHRoaXMuZHJvcFBvc2l0aW9uID09PSAxKSkpIHtcbiAgICAgICAgICAgICAgICBhbGxvd0Ryb3AgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCA8IGRyYWdJbmRleCAmJiB0aGlzLmRyb3BQb3NpdGlvbiA9PT0gMSkpKSB7XG4gICAgICAgICAgICAgICAgZHJvcEluZGV4ID0gZHJvcEluZGV4ICsgMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsbG93RHJvcCAmJiAoKGRyb3BJbmRleCA+IGRyYWdJbmRleCAmJiB0aGlzLmRyb3BQb3NpdGlvbiA9PT0gLTEpKSkge1xuICAgICAgICAgICAgICAgIGRyb3BJbmRleCA9IGRyb3BJbmRleCAtIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbGxvd0Ryb3ApIHtcbiAgICAgICAgICAgICAgICBPYmplY3RVdGlscy5yZW9yZGVyQXJyYXkodGhpcy5jb2x1bW5zLCBkcmFnSW5kZXgsIGRyb3BJbmRleCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29sUmVvcmRlci5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZHJhZ0luZGV4OiBkcmFnSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGRyb3BJbmRleDogZHJvcEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yVXBWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVySW5kaWNhdG9yRG93blZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmRyYWdnZWRDb2x1bW4uZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRyYWdnZWRDb2x1bW4gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5kcm9wUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlUm93Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgbGV0IHRhcmdldE5vZGUgPSAoPEhUTUxFbGVtZW50PiBldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldCkubm9kZU5hbWU7XG4gICAgICAgIGlmICh0YXJnZXROb2RlID09ICdJTlBVVCcgfHwgdGFyZ2V0Tm9kZSA9PSAnQlVUVE9OJyB8fCB0YXJnZXROb2RlID09ICdBJyB8fCAoRG9tSGFuZGxlci5oYXNDbGFzcyhldmVudC5vcmlnaW5hbEV2ZW50LnRhcmdldCwgJ3AtY2xpY2thYmxlJykpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRTZWxlY3Rpb25TZXR0ZXJQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBsZXQgcm93Tm9kZSA9IGV2ZW50LnJvd05vZGU7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQocm93Tm9kZS5ub2RlKTtcbiAgICAgICAgICAgIGxldCBtZXRhU2VsZWN0aW9uID0gdGhpcy5yb3dUb3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG4gICAgICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEocm93Tm9kZS5ub2RlLmRhdGEsIHRoaXMuZGF0YUtleSkpIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQubWV0YUtleXx8ZXZlbnQub3JpZ2luYWxFdmVudC5jdHJsS2V5O1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkICYmIG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uSW5kZXggPSB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKHJvd05vZGUubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoKHZhbCxpKSA9PiBpICE9IHNlbGVjdGlvbkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFLZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlVW5zZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgbm9kZTogcm93Tm9kZS5ub2RlLCB0eXBlOiAncm93J30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHJvd05vZGUubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQocm93Tm9kZS5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9ufHxbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSBbLi4udGhpcy5zZWxlY3Rpb24sIHJvd05vZGUubm9kZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50LCBub2RlOiByb3dOb2RlLm5vZGUsIHR5cGU6ICdyb3cnLCBpbmRleDogZXZlbnQucm93SW5kZXh9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgbm9kZTogcm93Tm9kZS5ub2RlLCB0eXBlOiAncm93JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHJvd05vZGUubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vZGVTZWxlY3QuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIG5vZGU6IHJvd05vZGUubm9kZSwgdHlwZTogJ3JvdycsIGluZGV4OiBldmVudC5yb3dJbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihyb3dOb2RlLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKCh2YWwsIGkpID0+IGkgIT0gc2VsZWN0aW9uSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50LCBub2RlOiByb3dOb2RlLm5vZGUsIHR5cGU6ICdyb3cnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFLZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uID8gWy4uLnRoaXMuc2VsZWN0aW9uLCByb3dOb2RlLm5vZGVdIDogW3Jvd05vZGUubm9kZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50LCBub2RlOiByb3dOb2RlLm5vZGUsIHR5cGU6ICdyb3cnLCBpbmRleDogZXZlbnQucm93SW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV0gPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yb3dUb3VjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlUm93VG91Y2hFbmQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5yb3dUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYW5kbGVSb3dSaWdodENsaWNrKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRleHRNZW51KSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gZXZlbnQucm93Tm9kZS5ub2RlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0TWVudVNlbGVjdGlvbk1vZGUgPT09ICdzZXBhcmF0ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51U2VsZWN0aW9uID0gbm9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51U2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbnRleHRNZW51U2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQsIG5vZGU6IG5vZGV9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRNZW51LnNob3coZXZlbnQub3JpZ2luYWxFdmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25Db250ZXh0TWVudShub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udGV4dE1lbnVTZWxlY3Rpb25Nb2RlID09PSAnam9pbnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50U2VsZWN0aW9uU2V0dGVyUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZChub2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZS5kYXRhLCB0aGlzLmRhdGFLZXkpKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBbbm9kZV07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnUuc2hvdyhldmVudC5vcmlnaW5hbEV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29udGV4dE1lbnVTZWxlY3QuZW1pdCh7b3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlTm9kZVdpdGhDaGVja2JveChldmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9ufHxbXTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2VsZWN0aW9uU2V0dGVyUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgICBsZXQgbm9kZSA9IGV2ZW50LnJvd05vZGUubm9kZTtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGVkKG5vZGUpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25Eb3duKG5vZGUsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChldmVudC5yb3dOb2RlLnBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlU2VsZWN0aW9uVXAobm9kZS5wYXJlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgbm9kZTogbm9kZX0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25Eb3duKG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGV2ZW50LnJvd05vZGUucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25VcChub2RlLnBhcmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBub2RlOiBub2RlfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHRvZ2dsZU5vZGVzV2l0aENoZWNrYm94KGV2ZW50OiBFdmVudCwgY2hlY2s6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmZpbHRlcmVkTm9kZXMgfHwgdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gY2hlY2sgJiYgZGF0YSA/IGRhdGEuc2xpY2UoKSA6IFtdO1xuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlU2VsZWN0aW9uRG93bihub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5cyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2ZW50U2VsZWN0aW9uU2V0dGVyUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGlvbik7XG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMub25IZWFkZXJDaGVja2JveFRvZ2dsZS5lbWl0KHtvcmlnaW5hbEV2ZW50OiBldmVudCwgY2hlY2tlZDogY2hlY2t9KTtcbiAgICB9XG5cbiAgICBwcm9wYWdhdGVTZWxlY3Rpb25VcChub2RlOiBUcmVlTm9kZSwgc2VsZWN0OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRDaGlsZENvdW50OiBudW1iZXIgPSAwO1xuICAgICAgICAgICAgbGV0IGNoaWxkUGFydGlhbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGF0YUtleVZhbHVlID0gdGhpcy5kYXRhS2V5ID8gU3RyaW5nKE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZS5kYXRhLCB0aGlzLmRhdGFLZXkpKSA6IG51bGw7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKGNoaWxkKSlcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkQ291bnQrKztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5wYXJ0aWFsU2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkUGFydGlhbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlbGVjdCAmJiBzZWxlY3RlZENoaWxkQ291bnQgPT0gbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb24gPSAgWy4uLnRoaXMuc2VsZWN0aW9ufHxbXSwgbm9kZV07XG4gICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5c1tkYXRhS2V5VmFsdWVdID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluU2VsZWN0aW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gIHRoaXMuc2VsZWN0aW9uLmZpbHRlcigodmFsLGkpID0+IGkhPWluZGV4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFLZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGlvbktleXNbZGF0YUtleVZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZFBhcnRpYWxTZWxlY3RlZCB8fCBzZWxlY3RlZENoaWxkQ291bnQgPiAwICYmIHNlbGVjdGVkQ2hpbGRDb3VudCAhPSBub2RlLmNoaWxkcmVuLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25VcChwYXJlbnQsIHNlbGVjdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9wYWdhdGVTZWxlY3Rpb25Eb3duKG5vZGU6IFRyZWVOb2RlLCBzZWxlY3Q6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKTtcbiAgICAgICAgbGV0IGRhdGFLZXlWYWx1ZSA9IHRoaXMuZGF0YUtleSA/IFN0cmluZyhPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUuZGF0YSwgdGhpcy5kYXRhS2V5KSkgOiBudWxsO1xuXG4gICAgICAgIGlmIChzZWxlY3QgJiYgaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbiA9ICBbLi4udGhpcy5zZWxlY3Rpb258fFtdLG5vZGVdXG4gICAgICAgICAgICBpZiAoZGF0YUtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV0gPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFzZWxlY3QgJiYgaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uID0gIHRoaXMuc2VsZWN0aW9uLmZpbHRlcigodmFsLGkpID0+IGkhPWluZGV4KTtcbiAgICAgICAgICAgIGlmIChkYXRhS2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25LZXlzW2RhdGFLZXlWYWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnBhcnRpYWxTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVTZWxlY3Rpb25Eb3duKGNoaWxkLCBzZWxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChub2RlKSB7XG4gICAgICAgIGlmIChub2RlICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uS2V5c1tPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUuZGF0YSwgdGhpcy5kYXRhS2V5KV0gIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiBpbnN0YW5jZW9mIEFycmF5KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXhJblNlbGVjdGlvbihub2RlKSA+IC0xO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKG5vZGUsIHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmaW5kSW5kZXhJblNlbGVjdGlvbihub2RlOiBhbnkpIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVxdWFscyhub2RlLCB0aGlzLnNlbGVjdGlvbltpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJztcbiAgICB9XG5cbiAgICBpc011bHRpcGxlU2VsZWN0aW9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICBlcXVhbHMobm9kZTEsIG5vZGUyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVTZWxlY3Rpb25CeSA9PT0gJ2VxdWFscycgPyAobm9kZTEgPT09IG5vZGUyKSA6IE9iamVjdFV0aWxzLmVxdWFscyhub2RlMS5kYXRhLCBub2RlMi5kYXRhLCB0aGlzLmRhdGFLZXkpO1xuICAgIH1cblxuICAgIGZpbHRlcih2YWx1ZSwgZmllbGQsIG1hdGNoTW9kZSkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0ZpbHRlckJsYW5rKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzW2ZpZWxkXSA9IHsgdmFsdWU6IHZhbHVlLCBtYXRjaE1vZGU6IG1hdGNoTW9kZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyc1tmaWVsZF0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmZpbHRlcnNbZmllbGRdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVGltZW91dCA9IG51bGw7XG4gICAgICAgIH0sIHRoaXMuZmlsdGVyRGVsYXkpO1xuICAgIH1cblxuICAgIGZpbHRlckdsb2JhbCh2YWx1ZSwgbWF0Y2hNb2RlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyKHZhbHVlLCAnZ2xvYmFsJywgbWF0Y2hNb2RlKTtcbiAgICB9XG5cbiAgICBpc0ZpbHRlckJsYW5rKGZpbHRlcjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChmaWx0ZXIgIT09IG51bGwgJiYgZmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLnRyaW0oKS5sZW5ndGggPT0gMCkgfHwgKGZpbHRlciBpbnN0YW5jZW9mIEFycmF5ICYmIGZpbHRlci5sZW5ndGggPT0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIF9maWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHRoaXMuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0ZpbHRlcigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZS5sZW5ndGggOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzWydnbG9iYWwnXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29sdW1ucyAmJiAhdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbCBmaWx0ZXJpbmcgcmVxdWlyZXMgZHluYW1pYyBjb2x1bW5zIG9yIGdsb2JhbEZpbHRlckZpZWxkcyB0byBiZSBkZWZpbmVkLicpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheSA9IHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzfHx0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdHJpY3RNb2RlID0gdGhpcy5maWx0ZXJNb2RlID09PSAnc3RyaWN0JztcbiAgICAgICAgICAgICAgICBsZXQgaXNWYWx1ZUNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29weU5vZGUgPSB7Li4ubm9kZX07XG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2NhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdsb2JhbE1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXNXaXRob3V0Tm9kZTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHRoaXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBwcm9wICE9PSAnZ2xvYmFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJNZXRhID0gdGhpcy5maWx0ZXJzW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJGaWVsZCA9IHByb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlclZhbHVlID0gZmlsdGVyTWV0YS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsdGVyTWF0Y2hNb2RlID0gZmlsdGVyTWV0YS5tYXRjaE1vZGUgfHwgJ3N0YXJ0c1dpdGgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJDb25zdHJhaW50ID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNbZmlsdGVyTWF0Y2hNb2RlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSA9IHtmaWx0ZXJGaWVsZCwgZmlsdGVyVmFsdWUsIGZpbHRlckNvbnN0cmFpbnQsIGlzU3RyaWN0TW9kZX07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpc1N0cmljdE1vZGUgJiYgISh0aGlzLmZpbmRGaWx0ZXJlZE5vZGVzKGNvcHlOb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkgfHwgdGhpcy5pc0ZpbHRlck1hdGNoZWQoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghaXNTdHJpY3RNb2RlICYmICEodGhpcy5pc0ZpbHRlck1hdGNoZWQoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSB8fCB0aGlzLmZpbmRGaWx0ZXJlZE5vZGVzKGNvcHlOb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzWydnbG9iYWwnXSAmJiAhZ2xvYmFsTWF0Y2ggJiYgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb3B5Tm9kZUZvckdsb2JhbCA9IHsuLi5jb3B5Tm9kZX07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlckZpZWxkID0gZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlbal0uZmllbGR8fGdsb2JhbEZpbHRlckZpZWxkc0FycmF5W2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyc1snZ2xvYmFsJ10udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlckNvbnN0cmFpbnQgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyc1t0aGlzLmZpbHRlcnNbJ2dsb2JhbCddLm1hdGNoTW9kZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgPSB7ZmlsdGVyRmllbGQsIGZpbHRlclZhbHVlLCBmaWx0ZXJDb25zdHJhaW50LCBpc1N0cmljdE1vZGV9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpc1N0cmljdE1vZGUgJiYgKHRoaXMuZmluZEZpbHRlcmVkTm9kZXMoY29weU5vZGVGb3JHbG9iYWwsIHBhcmFtc1dpdGhvdXROb2RlKSB8fCB0aGlzLmlzRmlsdGVyTWF0Y2hlZChjb3B5Tm9kZUZvckdsb2JhbCwgcGFyYW1zV2l0aG91dE5vZGUpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFpc1N0cmljdE1vZGUgJiYgKHRoaXMuaXNGaWx0ZXJNYXRjaGVkKGNvcHlOb2RlRm9yR2xvYmFsLCBwYXJhbXNXaXRob3V0Tm9kZSkgfHwgdGhpcy5maW5kRmlsdGVyZWROb2Rlcyhjb3B5Tm9kZUZvckdsb2JhbCwgcGFyYW1zV2l0aG91dE5vZGUpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlID0gY29weU5vZGVGb3JHbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBsb2NhbE1hdGNoO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzWydnbG9iYWwnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IGxvY2FsTWF0Y2ggJiYgZ2xvYmFsTWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzLnB1c2goY29weU5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaXNWYWx1ZUNoYW5nZWQgPSBpc1ZhbHVlQ2hhbmdlZCB8fCAhbG9jYWxNYXRjaCB8fCBnbG9iYWxNYXRjaCB8fCAobG9jYWxNYXRjaCAmJiB0aGlzLmZpbHRlcmVkTm9kZXMubGVuZ3RoID4gMCkgfHwgKCFnbG9iYWxNYXRjaCAmJiB0aGlzLmZpbHRlcmVkTm9kZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghaXNWYWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE5vZGVzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSB0aGlzLmZpbHRlcmVkTm9kZXMgPyB0aGlzLmZpbHRlcmVkTm9kZXMubGVuZ3RoIDogdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUubGVuZ3RoIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpcnN0ID0gMDtcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gdGhpcy5maWx0ZXJlZE5vZGVzIHx8IHRoaXMudmFsdWU7XG5cbiAgICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcbiAgICAgICAgICAgIGZpbHRlcmVkVmFsdWU6IGZpbHRlcmVkVmFsdWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub25VSVVwZGF0ZShmaWx0ZXJlZFZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcblxuICAgICAgICBpZiAodGhpcy5zY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kRmlsdGVyZWROb2Rlcyhub2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkge1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBbLi4ubm9kZS5jaGlsZHJlbl07XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiBjaGlsZE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3B5Q2hpbGROb2RlID0gey4uLmNoaWxkTm9kZX07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsdGVyTWF0Y2hlZChjb3B5Q2hpbGROb2RlLCBwYXJhbXNXaXRob3V0Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5wdXNoKGNvcHlDaGlsZE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJNYXRjaGVkKG5vZGUsIHtmaWx0ZXJGaWVsZCwgZmlsdGVyVmFsdWUsIGZpbHRlckNvbnN0cmFpbnQsIGlzU3RyaWN0TW9kZX0pIHtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGRhdGFGaWVsZFZhbHVlID0gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlLmRhdGEsIGZpbHRlckZpZWxkKTtcbiAgICAgICAgaWYgKGZpbHRlckNvbnN0cmFpbnQoZGF0YUZpZWxkVmFsdWUsIGZpbHRlclZhbHVlLCB0aGlzLmZpbHRlckxvY2FsZSkpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtYXRjaGVkIHx8IChpc1N0cmljdE1vZGUgJiYgIXRoaXMuaXNOb2RlTGVhZihub2RlKSkpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0aGlzLmZpbmRGaWx0ZXJlZE5vZGVzKG5vZGUsIHtmaWx0ZXJGaWVsZCwgZmlsdGVyVmFsdWUsIGZpbHRlckNvbnN0cmFpbnQsIGlzU3RyaWN0TW9kZX0pIHx8IG1hdGNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG5cbiAgICBpc05vZGVMZWFmKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubGVhZiA9PT0gZmFsc2UgPyBmYWxzZSA6ICEobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaGFzRmlsdGVyKCkge1xuICAgICAgICBsZXQgZW1wdHkgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBwcm9wIGluIHRoaXMuZmlsdGVycykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgICAgIGVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIWVtcHR5O1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgdGhpcy5fc29ydEZpZWxkID0gbnVsbDtcbiAgICAgICAgdGhpcy5fc29ydE9yZGVyID0gMTtcbiAgICAgICAgdGhpcy5fbXVsdGlTb3J0TWV0YSA9IG51bGw7XG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU29ydChudWxsKTtcblxuICAgICAgICB0aGlzLmZpbHRlcmVkTm9kZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSB7fTtcblxuICAgICAgICB0aGlzLmZpcnN0ID0gMDtcblxuICAgICAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICAgICAgICB0aGlzLm9uTGF6eUxvYWQuZW1pdCh0aGlzLmNyZWF0ZUxhenlMb2FkTWV0YWRhdGEoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9ICh0aGlzLl92YWx1ZSA/IHRoaXMuX3ZhbHVlLmxlbmd0aCA6IDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRWRpdGluZ0NlbGwoY2VsbCwgZGF0YSwgZmllbGQpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQ2VsbCA9IGNlbGw7XG4gICAgICAgIHRoaXMuZWRpdGluZ0NlbGxEYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5lZGl0aW5nQ2VsbEZpZWxkID0gZmllbGQ7XG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50RWRpdExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaXNFZGl0aW5nQ2VsbFZhbGlkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZWRpdGluZ0NlbGwgJiYgRG9tSGFuZGxlci5maW5kKHRoaXMuZWRpdGluZ0NlbGwsICcubmctaW52YWxpZC5uZy1kaXJ0eScpLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgYmluZERvY3VtZW50RWRpdExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRFZGl0TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRFZGl0TGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0aW5nQ2VsbCAmJiAhdGhpcy5lZGl0aW5nQ2VsbENsaWNrICYmIHRoaXMuaXNFZGl0aW5nQ2VsbFZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmVkaXRpbmdDZWxsLCAncC1jZWxsLWVkaXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0aW5nQ2VsbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FZGl0Q29tcGxldGUuZW1pdCh7IGZpZWxkOiB0aGlzLmVkaXRpbmdDZWxsRmllbGQsIGRhdGE6IHRoaXMuZWRpdGluZ0NlbGxEYXRhIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRpbmdDZWxsRmllbGQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRpbmdDZWxsRGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRFZGl0TGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRpbmdDZWxsQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudEVkaXRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRFZGl0TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudEVkaXRMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RWRpdExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RWRpdExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZWRpdGluZ0NlbGwgPSBudWxsO1xuICAgICAgICB0aGlzLmVkaXRpbmdDZWxsRmllbGQgPSBudWxsO1xuICAgICAgICB0aGlzLmVkaXRpbmdDZWxsRGF0YSA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBudWxsO1xuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1twVHJlZVRhYmxlQm9keV0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdHQudmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1zZXJpYWxpemVkTm9kZSBsZXQtcm93SW5kZXg9XCJpbmRleFwiIFtuZ0Zvck9mXT1cInR0LnNlcmlhbGl6ZWRWYWx1ZVwiIFtuZ0ZvclRyYWNrQnldPVwidHQucm93VHJhY2tCeVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXJpYWxpemVkTm9kZS52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc2VyaWFsaXplZE5vZGUsIG5vZGU6IHNlcmlhbGl6ZWROb2RlLm5vZGUsIHJvd0RhdGE6IHNlcmlhbGl6ZWROb2RlLm5vZGUuZGF0YSwgY29sdW1uczogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHQudmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka1ZpcnR1YWxGb3IgbGV0LXNlcmlhbGl6ZWROb2RlIGxldC1yb3dJbmRleD1cImluZGV4XCIgW2Nka1ZpcnR1YWxGb3JPZl09XCJ0dC5zZXJpYWxpemVkVmFsdWVcIiBbY2RrVmlydHVhbEZvclRyYWNrQnldPVwidHQucm93VHJhY2tCeVwiIFtjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemVdPVwiMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXJpYWxpemVkTm9kZS52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc2VyaWFsaXplZE5vZGUsIG5vZGU6IHNlcmlhbGl6ZWROb2RlLm5vZGUsIHJvd0RhdGE6IHNlcmlhbGl6ZWROb2RlLm5vZGUuZGF0YSwgY29sdW1uczogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHQuaXNFbXB0eSgpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHQuZW1wdHlNZXNzYWdlVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbnMsIGZyb3plbjogZnJvemVufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRCb2R5IHtcblxuICAgIEBJbnB1dChcInBUcmVlVGFibGVCb2R5XCIpIGNvbHVtbnM6IGFueVtdO1xuXG4gICAgQElucHV0KFwicFRyZWVUYWJsZUJvZHlUZW1wbGF0ZVwiKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGZyb3plbjogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0OiBUcmVlVGFibGUsIHB1YmxpYyB0cmVlVGFibGVTZXJ2aWNlOiBUcmVlVGFibGVTZXJ2aWNlLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50dC50YWJsZVNlcnZpY2UudWlVcGRhdGVTb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50dC52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3R0U2Nyb2xsYWJsZVZpZXddJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNzY3JvbGxIZWFkZXIgY2xhc3M9XCJwLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiAjc2Nyb2xsSGVhZGVyQm94IGNsYXNzPVwicC10cmVldGFibGUtc2Nyb2xsYWJsZS1oZWFkZXItYm94XCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicC10cmVldGFibGUtc2Nyb2xsYWJsZS1oZWFkZXItdGFibGVcIiBbbmdDbGFzc109XCJ0dC50YWJsZVN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJ0dC50YWJsZVN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmcm96ZW4gPyB0dC5mcm96ZW5Db2xHcm91cFRlbXBsYXRlfHx0dC5jb2xHcm91cFRlbXBsYXRlIDogdHQuY29sR3JvdXBUZW1wbGF0ZTsgY29udGV4dCB7JGltcGxpY2l0OiBjb2x1bW5zfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJwLXRyZWV0YWJsZS10aGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZyb3plbiA/IHR0LmZyb3plbkhlYWRlclRlbXBsYXRlfHx0dC5oZWFkZXJUZW1wbGF0ZSA6IHR0LmhlYWRlclRlbXBsYXRlOyBjb250ZXh0IHskaW1wbGljaXQ6IGNvbHVtbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0dC52aXJ0dWFsU2Nyb2xsOyBlbHNlIHZpcnR1YWxTY3JvbGxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPGRpdiAjc2Nyb2xsQm9keSBjbGFzcz1cInAtdHJlZXRhYmxlLXNjcm9sbGFibGUtYm9keVwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6IHR0LnNjcm9sbEhlaWdodCAhPT0gJ2ZsZXgnID8gc2Nyb2xsSGVpZ2h0IDogdW5kZWZpbmVkLCAnb3ZlcmZsb3cteSc6ICFmcm96ZW4gJiYgdHQuc2Nyb2xsSGVpZ2h0ID8gJ3Njcm9sbCcgOiB1bmRlZmluZWR9XCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlICNzY3JvbGxUYWJsZSBbY2xhc3NdPVwidHQudGFibGVTdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwidHQudGFibGVTdHlsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZnJvemVuID8gdHQuZnJvemVuQ29sR3JvdXBUZW1wbGF0ZXx8dHQuY29sR3JvdXBUZW1wbGF0ZSA6IHR0LmNvbEdyb3VwVGVtcGxhdGU7IGNvbnRleHQgeyRpbXBsaWNpdDogY29sdW1uc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwicC10cmVldGFibGUtdGJvZHlcIiBbcFRyZWVUYWJsZUJvZHldPVwiY29sdW1uc1wiIFtwVHJlZVRhYmxlQm9keVRlbXBsYXRlXT1cImZyb3plbiA/IHR0LmZyb3plbkJvZHlUZW1wbGF0ZXx8dHQuYm9keVRlbXBsYXRlIDogdHQuYm9keVRlbXBsYXRlXCIgW2Zyb3plbl09XCJmcm96ZW5cIj48L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPGRpdiAjc2Nyb2xsYWJsZUFsaWduZXIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50XCIgKm5nSWY9XCJmcm96ZW5cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsVGVtcGxhdGU+XG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFtpdGVtU2l6ZV09XCJ0dC52aXJ0dWFsUm93SGVpZ2h0XCIgW3N0eWxlLmhlaWdodF09XCJ0dC5zY3JvbGxIZWlnaHQgIT09ICdmbGV4JyA/IHNjcm9sbEhlaWdodCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFttaW5CdWZmZXJQeF09XCJ0dC5taW5CdWZmZXJQeFwiIFttYXhCdWZmZXJQeF09XCJ0dC5tYXhCdWZmZXJQeFwiIGNsYXNzPVwicC10cmVldGFibGUtdmlydHVhbC1zY3JvbGxhYmxlLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8dGFibGUgI3Njcm9sbFRhYmxlIFtjbGFzc109XCJ0dC50YWJsZVN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJ0dC50YWJsZVN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmcm96ZW4gPyB0dC5mcm96ZW5Db2xHcm91cFRlbXBsYXRlfHx0dC5jb2xHcm91cFRlbXBsYXRlIDogdHQuY29sR3JvdXBUZW1wbGF0ZTsgY29udGV4dCB7JGltcGxpY2l0OiBjb2x1bW5zfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJwLXRyZWV0YWJsZS10Ym9keVwiIFtwVHJlZVRhYmxlQm9keV09XCJjb2x1bW5zXCIgW3BUcmVlVGFibGVCb2R5VGVtcGxhdGVdPVwiZnJvemVuID8gdHQuZnJvemVuQm9keVRlbXBsYXRlfHx0dC5ib2R5VGVtcGxhdGUgOiB0dC5ib2R5VGVtcGxhdGVcIiBbZnJvemVuXT1cImZyb3plblwiPjwvdGJvZHk+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICA8ZGl2ICNzY3JvbGxhYmxlQWxpZ25lciBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnRcIiAqbmdJZj1cImZyb3plblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgI3Njcm9sbEZvb3RlciAqbmdJZj1cInR0LmZvb3RlclRlbXBsYXRlXCIgY2xhc3M9XCJwLXRyZWV0YWJsZS1zY3JvbGxhYmxlLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiAjc2Nyb2xsRm9vdGVyQm94IGNsYXNzPVwicC10cmVldGFibGUtc2Nyb2xsYWJsZS1mb290ZXItYm94XCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwicC10cmVldGFibGUtc2Nyb2xsYWJsZS1mb290ZXItdGFibGVcIiBbbmdDbGFzc109XCJ0dC50YWJsZVN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJ0dC50YWJsZVN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmcm96ZW4gPyB0dC5mcm96ZW5Db2xHcm91cFRlbXBsYXRlfHx0dC5jb2xHcm91cFRlbXBsYXRlIDogdHQuY29sR3JvdXBUZW1wbGF0ZTsgY29udGV4dCB7JGltcGxpY2l0OiBjb2x1bW5zfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8dGZvb3QgY2xhc3M9XCJwLXRyZWV0YWJsZS10Zm9vdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZyb3plbiA/IHR0LmZyb3plbkZvb3RlclRlbXBsYXRlfHx0dC5mb290ZXJUZW1wbGF0ZSA6IHR0LmZvb3RlclRlbXBsYXRlOyBjb250ZXh0IHskaW1wbGljaXQ6IGNvbHVtbnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGZvb3Q+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRTY3JvbGxhYmxlVmlldyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoXCJ0dFNjcm9sbGFibGVWaWV3XCIpIGNvbHVtbnM6IGFueVtdO1xuXG4gICAgQElucHV0KCkgZnJvemVuOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsSGVhZGVyJykgc2Nyb2xsSGVhZGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsSGVhZGVyQm94Jykgc2Nyb2xsSGVhZGVyQm94Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsQm9keScpIHNjcm9sbEJvZHlWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxUYWJsZScpIHNjcm9sbFRhYmxlVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbG9hZGluZ1RhYmxlJykgc2Nyb2xsTG9hZGluZ1RhYmxlVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsRm9vdGVyJykgc2Nyb2xsRm9vdGVyVmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsRm9vdGVyQm94Jykgc2Nyb2xsRm9vdGVyQm94Vmlld0NoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsYWJsZUFsaWduZXInKSBzY3JvbGxhYmxlQWxpZ25lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSB2aXJ0dWFsU2Nyb2xsQm9keTogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgaGVhZGVyU2Nyb2xsTGlzdGVuZXI7XG5cbiAgICBib2R5U2Nyb2xsTGlzdGVuZXI7XG5cbiAgICBmb290ZXJTY3JvbGxMaXN0ZW5lcjtcblxuICAgIGZyb3plblNpYmxpbmdCb2R5OiBFbGVtZW50O1xuXG4gICAgdG90YWxSZWNvcmRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBfc2Nyb2xsSGVpZ2h0OiBzdHJpbmc7XG5cbiAgICBwcmV2ZW50Qm9keVNjcm9sbFByb3BhZ2F0aW9uOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgZ2V0IHNjcm9sbEhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICBzZXQgc2Nyb2xsSGVpZ2h0KHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbEhlaWdodCA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsICYmICh2YWwuaW5jbHVkZXMoJyUnKSB8fCB2YWwuaW5jbHVkZXMoJ2NhbGMnKSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQZXJjZW50YWdlIHNjcm9sbCBoZWlnaHQgY2FsY3VsYXRpb24gaXMgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgbW9yZSBwZXJmb3JtYW50IENTUyBiYXNlZCBmbGV4IG1vZGUsIHVzZSBzY3JvbGxIZWlnaHQ9XCJmbGV4XCIgaW5zdGVhZC4nKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHQudmlydHVhbFNjcm9sbCAmJiB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5KSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5Lm5nT25Jbml0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHQ6IFRyZWVUYWJsZSwgcHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgem9uZTogTmdab25lKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZnJvemVuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50dC5mcm96ZW5Db2x1bW5zIHx8IHRoaXMudHQuZnJvemVuQm9keVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdwLXRyZWV0YWJsZS11bmZyb3plbi12aWV3Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmcm96ZW5WaWV3ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAoZnJvemVuVmlldykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR0LnZpcnR1YWxTY3JvbGwpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnJvemVuU2libGluZ0JvZHkgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUoZnJvemVuVmlldywgJy5wLXRyZWV0YWJsZS12aXJ0dWFsLXNjcm9sbGFibGUtYm9keScpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mcm96ZW5TaWJsaW5nQm9keSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZShmcm96ZW5WaWV3LCAnLnAtdHJlZXRhYmxlLXNjcm9sbGFibGUtYm9keScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2Nyb2xsQmFyV2lkdGggPSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhcldpZHRoKCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhlYWRlckJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IHNjcm9sbEJhcldpZHRoICsgJ3B4JztcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsRm9vdGVyQm94Vmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsRm9vdGVyQm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEZvb3RlckJveFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IHNjcm9sbEJhcldpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbGFibGVBbGlnbmVyVmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsYWJsZUFsaWduZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsYWJsZUFsaWduZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBEb21IYW5kbGVyLmNhbGN1bGF0ZVNjcm9sbGJhckhlaWdodCgpICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICAgIH1cblxuICAgIGJpbmRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQgJiYgdGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyU2Nyb2xsTGlzdGVuZXIgPSB0aGlzLm9uSGVhZGVyU2Nyb2xsLmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxIZWFkZXJCb3hWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhlYWRlclNjcm9sbExpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclNjcm9sbExpc3RlbmVyID0gdGhpcy5vbkZvb3RlclNjcm9sbC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5mb290ZXJTY3JvbGxMaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5mcm96ZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHlTY3JvbGxMaXN0ZW5lciA9IHRoaXMub25Cb2R5U2Nyb2xsLmJpbmQodGhpcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50dC52aXJ0dWFsU2Nyb2xsKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuYm9keVNjcm9sbExpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQm9keVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuYm9keVNjcm9sbExpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdW5iaW5kRXZlbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQgJiYgdGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIZWFkZXJCb3hWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhlYWRlclNjcm9sbExpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEZvb3RlclZpZXdDaGlsZCAmJiB0aGlzLnNjcm9sbEZvb3RlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEZvb3RlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuZm9vdGVyU2Nyb2xsTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsQm9keVZpZXdDaGlsZCAmJiB0aGlzLnNjcm9sbEJvZHlWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxCb2R5Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5ib2R5U2Nyb2xsTGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbEJvZHkgJiYgdGhpcy52aXJ0dWFsU2Nyb2xsQm9keS5nZXRFbGVtZW50UmVmKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbEJvZHkuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5ib2R5U2Nyb2xsTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25IZWFkZXJTY3JvbGwoKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbEhlYWRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxCb2R5Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZlbnRCb2R5U2Nyb2xsUHJvcGFnYXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIG9uRm9vdGVyU2Nyb2xsKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxGb290ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICB0aGlzLnNjcm9sbEJvZHlWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcblxuICAgICAgICBpZiAodGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQgJiYgdGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIZWFkZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmVudEJvZHlTY3JvbGxQcm9wYWdhdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Cb2R5U2Nyb2xsKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnByZXZlbnRCb2R5U2Nyb2xsUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucHJldmVudEJvZHlTY3JvbGxQcm9wYWdhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGVhZGVyVmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsSGVhZGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGVhZGVyQm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IC0xICogZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkICYmIHRoaXMuc2Nyb2xsRm9vdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRm9vdGVyQm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IC0xICogZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZnJvemVuU2libGluZ0JvZHkpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvemVuU2libGluZ0JvZHkuc2Nyb2xsVG9wID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvVmlydHVhbEluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbEJvZHkpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbEJvZHkuc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxUbyhvcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxCb2R5KSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxCb2R5LnNjcm9sbFRvKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsQm9keVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCb2R5Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8ob3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEJvZHlWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gb3B0aW9ucy5sZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQm9keVZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IG9wdGlvbnMudG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5iaW5kRXZlbnRzKCk7XG5cbiAgICAgICAgdGhpcy5mcm96ZW5TaWJsaW5nQm9keSA9IG51bGw7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0dFNvcnRhYmxlQ29sdW1uXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLXNvcnRhYmxlLWNvbHVtbl0nOiAnaXNFbmFibGVkKCknLFxuICAgICAgICAnW2NsYXNzLnAtaGlnaGxpZ2h0XSc6ICdzb3J0ZWQnLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2lzRW5hYmxlZCgpID8gXCIwXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogJ1wiY29sdW1uaGVhZGVyXCInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVFNvcnRhYmxlQ29sdW1uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KFwidHRTb3J0YWJsZUNvbHVtblwiKSBmaWVsZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgc29ydGVkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHQ6IFRyZWVUYWJsZSkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnR0LnRhYmxlU2VydmljZS5zb3J0U291cmNlJC5zdWJzY3JpYmUoc29ydE1ldGEgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVNvcnRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zb3J0ZWQgPSB0aGlzLnR0LmlzU29ydGVkKHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy50dC5zb3J0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIERvbUhhbmRsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICAgIG9uRW50ZXJLZXkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrKGV2ZW50KTtcbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR0U29ydGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdHJlZVRhYmxlU29ydEljb24nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxpIGNsYXNzPVwicC1zb3J0YWJsZS1jb2x1bW4taWNvbiBwaSBwaS1md1wiIFtuZ0NsYXNzXT1cInsncGktc29ydC1hbW91bnQtdXAtYWx0Jzogc29ydE9yZGVyID09PSAxLCAncGktc29ydC1hbW91bnQtZG93bic6IHNvcnRPcmRlciA9PT0gLTEsICdwaS1zb3J0LWFsdCc6IHNvcnRPcmRlciA9PT0gMH1cIj48L2k+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRUU29ydEljb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBmaWVsZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsRGVzYzogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsQXNjOiBzdHJpbmc7XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHNvcnRPcmRlcjogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0OiBUcmVlVGFibGUsIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnR0LnRhYmxlU2VydmljZS5zb3J0U291cmNlJC5zdWJzY3JpYmUoc29ydE1ldGEgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0U3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soZXZlbnQpe1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVNvcnRTdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudHQuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMudHQuaXNTb3J0ZWQodGhpcy5maWVsZCkgPyB0aGlzLnR0LnNvcnRPcmRlciA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy50dC5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgbGV0IHNvcnRNZXRhID0gdGhpcy50dC5nZXRTb3J0TWV0YSh0aGlzLmZpZWxkKTtcbiAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gc29ydE1ldGEgPyBzb3J0TWV0YS5vcmRlcjogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R0UmVzaXphYmxlQ29sdW1uXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRSZXNpemFibGVDb2x1bW4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgdHRSZXNpemFibGVDb2x1bW5EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHJlc2l6ZXI6IEhUTUxTcGFuRWxlbWVudDtcblxuICAgIHJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcjogYW55O1xuXG4gICAgZG9jdW1lbnRNb3VzZVVwTGlzdGVuZXI6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dDogVHJlZVRhYmxlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdwLXJlc2l6YWJsZS1jb2x1bW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplci5jbGFzc05hbWUgPSAncC1jb2x1bW4tcmVzaXplcic7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yZXNpemVyKTtcblxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lciA9IHRoaXMub25Nb3VzZURvd24uYmluZCh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5yZXNpemVyTW91c2VEb3duTGlzdGVuZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIgPSB0aGlzLm9uRG9jdW1lbnRNb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuZG9jdW1lbnRNb3VzZU1vdmVMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwTGlzdGVuZXIgPSB0aGlzLm9uRG9jdW1lbnRNb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5kb2N1bWVudE1vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50RXZlbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmRvY3VtZW50TW91c2VNb3ZlTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlTW92ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50TW91c2VVcExpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5kb2N1bWVudE1vdXNlVXBMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VVcExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnR0Lm9uQ29sdW1uUmVzaXplQmVnaW4oZXZlbnQpO1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudEV2ZW50cygpO1xuICAgIH1cblxuICAgIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudHQub25Db2x1bW5SZXNpemUoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRG9jdW1lbnRNb3VzZVVwKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnR0Lm9uQ29sdW1uUmVzaXplRW5kKGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RXZlbnRzKCk7XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50dFJlc2l6YWJsZUNvbHVtbkRpc2FibGVkICE9PSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVyTW91c2VEb3duTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplci5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLnJlc2l6ZXJNb3VzZURvd25MaXN0ZW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50RXZlbnRzKCk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0dFJlb3JkZXJhYmxlQ29sdW1uXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRSZW9yZGVyYWJsZUNvbHVtbiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSB0dFJlb3JkZXJhYmxlQ29sdW1uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBkcmFnU3RhcnRMaXN0ZW5lcjogYW55O1xuXG4gICAgZHJhZ092ZXJMaXN0ZW5lcjogYW55O1xuXG4gICAgZHJhZ0VudGVyTGlzdGVuZXI6IGFueTtcblxuICAgIGRyYWdMZWF2ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBtb3VzZURvd25MaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0OiBUcmVlVGFibGUsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRFdmVudHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlRG93bkxpc3RlbmVyID0gdGhpcy5vbk1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdTdGFydExpc3RlbmVyID0gdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIHRoaXMuZHJhZ1N0YXJ0TGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLm9uRHJhZ0VudGVyLmJpbmQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdFbnRlckxpc3RlbmVyID0gdGhpcy5vbkRyYWdFbnRlci5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gdGhpcy5vbkRyYWdMZWF2ZS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmJpbmRFdmVudHMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlRG93bkxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm1vdXNlRG93bkxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VEb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ092ZXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLmRyYWdPdmVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kcmFnT3Zlckxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRyYWdFbnRlckxpc3RlbmVyKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmRyYWdFbnRlckxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnTGVhdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubm9kZU5hbWUgPT09ICdJTlBVVCcgfHwgZXZlbnQudGFyZ2V0Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnIHx8IERvbUhhbmRsZXIuaGFzQ2xhc3MoZXZlbnQudGFyZ2V0LCAncC1jb2x1bW4tcmVzaXplcicpKVxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkRyYWdTdGFydChldmVudCkge1xuICAgICAgICB0aGlzLnR0Lm9uQ29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbnRlcihldmVudCkge1xuICAgICAgICB0aGlzLnR0Lm9uQ29sdW1uRHJhZ0VudGVyKGV2ZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMudHQub25Db2x1bW5EcmFnTGVhdmUoZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy50dC5vbkNvbHVtbkRyb3AoZXZlbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR0UmVvcmRlcmFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRFdmVudHMoKTtcbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHRTZWxlY3RhYmxlUm93XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50JyxcbiAgICAgICAgJ1tjbGFzcy5wLWhpZ2hsaWdodF0nOiAnc2VsZWN0ZWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVFNlbGVjdGFibGVSb3cgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoXCJ0dFNlbGVjdGFibGVSb3dcIikgcm93Tm9kZTogYW55O1xuXG4gICAgQElucHV0KCkgdHRTZWxlY3RhYmxlUm93RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcblxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0OiBUcmVlVGFibGUsIHB1YmxpYyB0YWJsZVNlcnZpY2U6IFRyZWVUYWJsZVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50dC50YWJsZVNlcnZpY2Uuc2VsZWN0aW9uU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnR0LmlzU2VsZWN0ZWQodGhpcy5yb3dOb2RlLm5vZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnR0LmlzU2VsZWN0ZWQodGhpcy5yb3dOb2RlLm5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnR0LmhhbmRsZVJvd0NsaWNrKHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICByb3dOb2RlOiB0aGlzLnJvd05vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25FbnRlcktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxuICAgIG9uVG91Y2hFbmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnR0LmhhbmRsZVJvd1RvdWNoRW5kKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHRTZWxlY3RhYmxlUm93RGlzYWJsZWQgIT09IHRydWU7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0dFNlbGVjdGFibGVSb3dEYmxDbGlja10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCcsXG4gICAgICAgICdbY2xhc3MucC1oaWdobGlnaHRdJzogJ3NlbGVjdGVkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRTZWxlY3RhYmxlUm93RGJsQ2xpY2sgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoXCJ0dFNlbGVjdGFibGVSb3dEYmxDbGlja1wiKSByb3dOb2RlOiBhbnk7XG5cbiAgICBASW5wdXQoKSB0dFNlbGVjdGFibGVSb3dEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHQ6IFRyZWVUYWJsZSwgcHVibGljIHRhYmxlU2VydmljZTogVHJlZVRhYmxlU2VydmljZSkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnR0LnRhYmxlU2VydmljZS5zZWxlY3Rpb25Tb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMudHQuaXNTZWxlY3RlZCh0aGlzLnJvd05vZGUubm9kZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMudHQuaXNTZWxlY3RlZCh0aGlzLnJvd05vZGUubm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudHQuaGFuZGxlUm93Q2xpY2soe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHJvd05vZGU6IHRoaXMucm93Tm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR0U2VsZWN0YWJsZVJvd0Rpc2FibGVkICE9PSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHRDb250ZXh0TWVudVJvd10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCcsXG4gICAgICAgICdbY2xhc3MucC1oaWdobGlnaHQtY29udGV4dG1lbnVdJzogJ3NlbGVjdGVkJyxcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdpc0VuYWJsZWQoKSA/IDAgOiB1bmRlZmluZWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVENvbnRleHRNZW51Um93IHtcblxuICAgIEBJbnB1dChcInR0Q29udGV4dE1lbnVSb3dcIikgcm93Tm9kZTogYW55O1xuXG4gICAgQElucHV0KCkgdHRDb250ZXh0TWVudVJvd0Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dDogVHJlZVRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUcmVlVGFibGVTZXJ2aWNlLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudHQudGFibGVTZXJ2aWNlLmNvbnRleHRNZW51U291cmNlJC5zdWJzY3JpYmUoKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy50dC5lcXVhbHModGhpcy5yb3dOb2RlLm5vZGUsIG5vZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXG4gICAgb25Db250ZXh0TWVudShldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudHQuaGFuZGxlUm93UmlnaHRDbGljayh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgcm93Tm9kZTogdGhpcy5yb3dOb2RlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR0Q29udGV4dE1lbnVSb3dEaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmVlVGFibGVDaGVja2JveCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hlY2tib3ggcC1jb21wb25lbnRcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJjaGVja2VkXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgI2JveCBbbmdDbGFzc109XCJ7J3AtY2hlY2tib3gtYm94Jzp0cnVlLFxuICAgICAgICAgICAgICAgICdwLWhpZ2hsaWdodCc6Y2hlY2tlZCwgJ3AtaW5kZXRlcm1pbmF0ZSc6IHJvd05vZGUubm9kZS5wYXJ0aWFsU2VsZWN0ZWQsICdwLWRpc2FibGVkJzpkaXNhYmxlZH1cIiAgcm9sZT1cImNoZWNrYm94XCIgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvbiBwaVwiIFtuZ0NsYXNzXT1cInsncGktY2hlY2snOmNoZWNrZWQsICdwaS1taW51cyc6IHJvd05vZGUubm9kZS5wYXJ0aWFsU2VsZWN0ZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVENoZWNrYm94ICB7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dChcInZhbHVlXCIpIHJvd05vZGU6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2JveCcpIGJveFZpZXdDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dDogVHJlZVRhYmxlLCBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUcmVlVGFibGVTZXJ2aWNlLCBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50dC50YWJsZVNlcnZpY2Uuc2VsZWN0aW9uU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy50dC5pc1NlbGVjdGVkKHRoaXMucm93Tm9kZS5ub2RlKTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLnR0LmlzU2VsZWN0ZWQodGhpcy5yb3dOb2RlLm5vZGUpO1xuICAgIH1cblxuICAgIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy50dC50b2dnbGVOb2RlV2l0aENoZWNrYm94KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICByb3dOb2RlOiB0aGlzLnJvd05vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIERvbUhhbmRsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCkge1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3gnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBjYi5jaGVja2VkKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI2NiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImNoZWNrZWRcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbZGlzYWJsZWRdPVwiIXR0LnZhbHVlfHx0dC52YWx1ZS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjYm94IFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1ib3gnOnRydWUsXG4gICAgICAgICAgICAgICAgJ3AtaGlnaGxpZ2h0JzpjaGVja2VkLCAncC1kaXNhYmxlZCc6ICghdHQudmFsdWUgfHwgdHQudmFsdWUubGVuZ3RoID09PSAwKX1cIiAgcm9sZT1cImNoZWNrYm94XCIgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInsncGkgcGktY2hlY2snOmNoZWNrZWR9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVEhlYWRlckNoZWNrYm94ICB7XG5cbiAgICBAVmlld0NoaWxkKCdib3gnKSBib3hWaWV3Q2hpbGQ6IEVsZW1lbnRSZWY7XG5cbiAgICBjaGVja2VkOiBib29sZWFuO1xuXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHQ6IFRyZWVUYWJsZSwgcHVibGljIHRhYmxlU2VydmljZTogVHJlZVRhYmxlU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMudHQudGFibGVTZXJ2aWNlLnVpVXBkYXRlU291cmNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy51cGRhdGVDaGVja2VkU3RhdGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnR0LnRhYmxlU2VydmljZS5zZWxlY3Rpb25Tb3VyY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLnVwZGF0ZUNoZWNrZWRTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy51cGRhdGVDaGVja2VkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCwgY2hlY2tlZCkge1xuICAgICAgICBpZiAodGhpcy50dC52YWx1ZSAmJiB0aGlzLnR0LnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudHQudG9nZ2xlTm9kZXNXaXRoQ2hlY2tib3goZXZlbnQsICFjaGVja2VkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIERvbUhhbmRsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCkge1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuYm94Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQsICdwLWZvY3VzJyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDaGVja2VkU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGxldCBjaGVja2VkOiBib29sZWFuO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy50dC5maWx0ZXJlZE5vZGVzfHx0aGlzLnR0LnZhbHVlO1xuXG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50dC5pc1NlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlICB7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoZWNrZWQ7XG4gICAgfVxuXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R0RWRpdGFibGVDb2x1bW5dJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUVEVkaXRhYmxlQ29sdW1uIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBASW5wdXQoXCJ0dEVkaXRhYmxlQ29sdW1uXCIpIGRhdGE6IGFueTtcblxuICAgIEBJbnB1dChcInR0RWRpdGFibGVDb2x1bW5GaWVsZFwiKSBmaWVsZDogYW55O1xuXG4gICAgQElucHV0KCkgdHRFZGl0YWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHR0OiBUcmVlVGFibGUsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHpvbmU6IE5nWm9uZSkge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAncC1lZGl0YWJsZS1jb2x1bW4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnR0LmVkaXRpbmdDZWxsQ2xpY2sgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50dC5lZGl0aW5nQ2VsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR0LmVkaXRpbmdDZWxsICE9PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnR0LmlzRWRpdGluZ0NlbGxWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudHQuZWRpdGluZ0NlbGwsICdwLWNlbGwtZWRpdGluZycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5DZWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQ2VsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkNlbGwoKSB7XG4gICAgICAgIHRoaXMudHQudXBkYXRlRWRpdGluZ0NlbGwodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmRhdGEsIHRoaXMuZmllbGQpO1xuICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3AtY2VsbC1lZGl0aW5nJyk7XG4gICAgICAgIHRoaXMudHQub25FZGl0SW5pdC5lbWl0KHsgZmllbGQ6IHRoaXMuZmllbGQsIGRhdGE6IHRoaXMuZGF0YX0pO1xuICAgICAgICB0aGlzLnR0LmVkaXRpbmdDZWxsQ2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzYWJsZSA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpbnB1dCwgdGV4dGFyZWEnKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VFZGl0aW5nQ2VsbCgpIHtcbiAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnR0LmVkaXRpbmdDZWxsLCAncC1jaGVja2JveC1pY29uJyk7XG4gICAgICAgIHRoaXMudHQuZWRpdGluZ0NlbGwgPSBudWxsO1xuICAgICAgICB0aGlzLnR0LnVuYmluZERvY3VtZW50RWRpdExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAvL2VudGVyXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR0LmlzRWRpdGluZ0NlbGxWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50dC5lZGl0aW5nQ2VsbCwgJ3AtY2VsbC1lZGl0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFZGl0aW5nQ2VsbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR0Lm9uRWRpdENvbXBsZXRlLmVtaXQoeyBmaWVsZDogdGhpcy5maWVsZCwgZGF0YTogdGhpcy5kYXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vZXNjYXBlXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudC5rZXlDb2RlID09IDI3KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHQuaXNFZGl0aW5nQ2VsbFZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnR0LmVkaXRpbmdDZWxsLCAncC1jZWxsLWVkaXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUVkaXRpbmdDZWxsKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHQub25FZGl0Q2FuY2VsLmVtaXQoeyBmaWVsZDogdGhpcy5maWVsZCwgZGF0YTogdGhpcy5kYXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vdGFiXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudC5rZXlDb2RlID09IDkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnR0Lm9uRWRpdENvbXBsZXRlLmVtaXQoeyBmaWVsZDogdGhpcy5maWVsZCwgZGF0YTogdGhpcy5kYXRhIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb1ByZXZpb3VzQ2VsbChldmVudCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb05leHRDZWxsKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRDZWxsKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBjZWxsID0gZWxlbWVudDtcbiAgICAgICAgICAgIHdoaWxlIChjZWxsICYmICFEb21IYW5kbGVyLmhhc0NsYXNzKGNlbGwsICdwLWNlbGwtZWRpdGluZycpKSB7XG4gICAgICAgICAgICAgICAgY2VsbCA9IGNlbGwucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb1ByZXZpb3VzQ2VsbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBsZXQgY3VycmVudENlbGwgPSB0aGlzLmZpbmRDZWxsKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGxldCByb3cgPSBjdXJyZW50Q2VsbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgdGFyZ2V0Q2VsbCA9IHRoaXMuZmluZFByZXZpb3VzRWRpdGFibGVDb2x1bW4oY3VycmVudENlbGwpO1xuXG4gICAgICAgIGlmICh0YXJnZXRDZWxsKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0Q2VsbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dENlbGwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRDZWxsID0gdGhpcy5maW5kQ2VsbChldmVudC50YXJnZXQpO1xuICAgICAgICBsZXQgcm93ID0gY3VycmVudENlbGwucGFyZW50RWxlbWVudDtcbiAgICAgICAgbGV0IHRhcmdldENlbGwgPSB0aGlzLmZpbmROZXh0RWRpdGFibGVDb2x1bW4oY3VycmVudENlbGwpO1xuXG4gICAgICAgIGlmICh0YXJnZXRDZWxsKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0Q2VsbCwgJ2NsaWNrJyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByZXZpb3VzRWRpdGFibGVDb2x1bW4oY2VsbDogRWxlbWVudCkge1xuICAgICAgICBsZXQgcHJldkNlbGwgPSBjZWxsLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgaWYgKCFwcmV2Q2VsbCkge1xuICAgICAgICAgICAgbGV0IHByZXZpb3VzUm93ID0gY2VsbC5wYXJlbnRFbGVtZW50ID8gY2VsbC5wYXJlbnRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzUm93KSB7XG4gICAgICAgICAgICAgICAgcHJldkNlbGwgPSBwcmV2aW91c1Jvdy5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZDZWxsKSB7XG4gICAgICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyhwcmV2Q2VsbCwgJ3AtZWRpdGFibGUtY29sdW1uJykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZDZWxsO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRQcmV2aW91c0VkaXRhYmxlQ29sdW1uKHByZXZDZWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE5leHRFZGl0YWJsZUNvbHVtbihjZWxsOiBFbGVtZW50KSB7XG4gICAgICAgIGxldCBuZXh0Q2VsbCA9IGNlbGwubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgIGlmICghbmV4dENlbGwpIHtcbiAgICAgICAgICAgIGxldCBuZXh0Um93ID0gY2VsbC5wYXJlbnRFbGVtZW50ID8gY2VsbC5wYXJlbnRFbGVtZW50Lm5leHRFbGVtZW50U2libGluZyA6IG51bGw7XG4gICAgICAgICAgICBpZiAobmV4dFJvdykge1xuICAgICAgICAgICAgICAgIG5leHRDZWxsID0gbmV4dFJvdy5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0Q2VsbCkge1xuICAgICAgICAgICAgaWYgKERvbUhhbmRsZXIuaGFzQ2xhc3MobmV4dENlbGwsICdwLWVkaXRhYmxlLWNvbHVtbicpKVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Q2VsbDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTmV4dEVkaXRhYmxlQ29sdW1uKG5leHRDZWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50dEVkaXRhYmxlQ29sdW1uRGlzYWJsZWQgIT09IHRydWU7XG4gICAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmVlVGFibGVDZWxsRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHQuZWRpdGluZ0NlbGwgPT09IGVkaXRhYmxlQ29sdW1uLmVsLm5hdGl2ZUVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXR0LmVkaXRpbmdDZWxsIHx8IHR0LmVkaXRpbmdDZWxsICE9PSBlZGl0YWJsZUNvbHVtbi5lbC5uYXRpdmVFbGVtZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3V0cHV0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRyZWVUYWJsZUNlbGxFZGl0b3IgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT47XG5cbiAgICBpbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgb3V0cHV0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHQ6IFRyZWVUYWJsZSwgcHVibGljIGVkaXRhYmxlQ29sdW1uOiBUVEVkaXRhYmxlQ29sdW1uKSB7IH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdvdXRwdXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHRSb3ddJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ1wiMFwiJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVFRSb3cge1xuXG4gICAgQElucHV0KCd0dFJvdycpIHJvd05vZGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dDogVHJlZVRhYmxlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgICAgICAgICAgLy9kb3duIGFycm93XG4gICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgIGxldCBuZXh0Um93ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAobmV4dFJvdykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0Um93LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2Rvd24gYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgICAgbGV0IHByZXZSb3cgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAocHJldlJvdykge1xuICAgICAgICAgICAgICAgICAgICBwcmV2Um93LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL2xlZnQgYXJyb3dcbiAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHQudG9nZ2xlUm93SW5kZXggPSBEb21IYW5kbGVyLmluZGV4KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50dC5vbk5vZGVDb2xsYXBzZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogdGhpcy5yb3dOb2RlLm5vZGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50dC51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50dC50YWJsZVNlcnZpY2Uub25VSVVwZGF0ZSh0aGlzLnR0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9yaWdodCBhcnJvd1xuICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHQudG9nZ2xlUm93SW5kZXggPSBEb21IYW5kbGVyLmluZGV4KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnR0Lm9uTm9kZUV4cGFuZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogdGhpcy5yb3dOb2RlLm5vZGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50dC51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50dC50YWJsZVNlcnZpY2Uub25VSVVwZGF0ZSh0aGlzLnR0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc3RvcmVGb2N1cygpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByb3cgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy50dC5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgJy5wLXRyZWV0YWJsZS10Ym9keScpLmNoaWxkcmVuW3RoaXMudHQudG9nZ2xlUm93SW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmVlVGFibGVUb2dnbGVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtdHJlZXRhYmxlLXRvZ2dsZXIgcC1saW5rXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiIHRhYmluZGV4PVwiLTFcIiBwUmlwcGxlXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJyb3dOb2RlLm5vZGUubGVhZiA9PT0gZmFsc2UgfHwgKHJvd05vZGUubm9kZS5jaGlsZHJlbiAmJiByb3dOb2RlLm5vZGUuY2hpbGRyZW4ubGVuZ3RoKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm1hcmdpbkxlZnRdPVwicm93Tm9kZS5sZXZlbCAqIDE2ICsgJ3B4J1wiPlxuICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93Tm9kZS5ub2RlLmV4cGFuZGVkID8gJ3BpIHBpLWZ3IHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktZncgcGktY2hldnJvbi1yaWdodCdcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlVGFibGVUb2dnbGVyIHtcblxuICAgIEBJbnB1dCgpIHJvd05vZGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0dDogVHJlZVRhYmxlKSB7fVxuXG4gICAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yb3dOb2RlLm5vZGUuZXhwYW5kZWQgPSAhdGhpcy5yb3dOb2RlLm5vZGUuZXhwYW5kZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMucm93Tm9kZS5ub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLnR0Lm9uTm9kZUV4cGFuZC5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICBub2RlOiB0aGlzLnJvd05vZGUubm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnR0Lm9uTm9kZUNvbGxhcHNlLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIG5vZGU6IHRoaXMucm93Tm9kZS5ub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHQudXBkYXRlU2VyaWFsaXplZFZhbHVlKCk7XG4gICAgICAgIHRoaXMudHQudGFibGVTZXJ2aWNlLm9uVUlVcGRhdGUodGhpcy50dC52YWx1ZSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxQYWdpbmF0b3JNb2R1bGUsU2Nyb2xsaW5nTW9kdWxlLFJpcHBsZU1vZHVsZV0sXG4gICAgZXhwb3J0czogW1RyZWVUYWJsZSxTaGFyZWRNb2R1bGUsVHJlZVRhYmxlVG9nZ2xlcixUVFNvcnRhYmxlQ29sdW1uLFRUU29ydEljb24sVFRSZXNpemFibGVDb2x1bW4sVFRSb3csVFRSZW9yZGVyYWJsZUNvbHVtbixUVFNlbGVjdGFibGVSb3csVFRTZWxlY3RhYmxlUm93RGJsQ2xpY2ssVFRDb250ZXh0TWVudVJvdyxUVENoZWNrYm94LFRUSGVhZGVyQ2hlY2tib3gsVFRFZGl0YWJsZUNvbHVtbixUcmVlVGFibGVDZWxsRWRpdG9yLFNjcm9sbGluZ01vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbVHJlZVRhYmxlLFRyZWVUYWJsZVRvZ2dsZXIsVFRTY3JvbGxhYmxlVmlldyxUVEJvZHksVFRTb3J0YWJsZUNvbHVtbixUVFNvcnRJY29uLFRUUmVzaXphYmxlQ29sdW1uLFRUUm93LFRUUmVvcmRlcmFibGVDb2x1bW4sVFRTZWxlY3RhYmxlUm93LFRUU2VsZWN0YWJsZVJvd0RibENsaWNrLFRUQ29udGV4dE1lbnVSb3csVFRDaGVja2JveCxUVEhlYWRlckNoZWNrYm94LFRURWRpdGFibGVDb2x1bW4sVHJlZVRhYmxlQ2VsbEVkaXRvcl1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlTW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/primeng-tristatecheckbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy10cmlzdGF0ZWNoZWNrYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3RyaXN0YXRlY2hlY2tib3gvcHJpbWVuZy10cmlzdGF0ZWNoZWNrYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './tristatecheckbox';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmlzdGF0ZWNoZWNrYm94L3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJpc3RhdGVjaGVja2JveCc7Il19
Index: trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/tristatecheckbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/tristatecheckbox/tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,151 @@
+import { NgModule, Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export const TRISTATECHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TriStateCheckbox),
+    multi: true
+};
+export class TriStateCheckbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxTrueIcon = 'pi pi-check';
+        this.checkboxFalseIcon = 'pi pi-times';
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, input) {
+        if (!this.disabled && !this.readonly) {
+            this.toggle(event);
+            this.focused = true;
+            input.focus();
+        }
+    }
+    onKeydown(event) {
+        if (event.keyCode == 32) {
+            event.preventDefault();
+        }
+    }
+    onKeyup(event) {
+        if (event.keyCode == 32 && !this.readonly) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    toggle(event) {
+        if (this.value == null || this.value == undefined)
+            this.value = true;
+        else if (this.value == true)
+            this.value = false;
+        else if (this.value == false)
+            this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    setDisabledState(disabled) {
+        this.disabled = disabled;
+        this.cd.markForCheck();
+    }
+}
+TriStateCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TriStateCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TriStateCheckbox, selector: "p-triStateCheckbox", inputs: { disabled: "disabled", name: "name", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", label: "label", readonly: "readonly", checkboxTrueIcon: "checkboxTrueIcon", checkboxFalseIcon: "checkboxFalseIcon" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TRISTATECHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-triStateCheckbox',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], checkboxTrueIcon: [{
+                type: Input
+            }], checkboxFalseIcon: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+export class TriStateCheckboxModule {
+}
+TriStateCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TriStateCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, declarations: [TriStateCheckbox], imports: [CommonModule], exports: [TriStateCheckbox] });
+TriStateCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [TriStateCheckbox],
+                    declarations: [TriStateCheckbox]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpc3RhdGVjaGVja2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy90cmlzdGF0ZWNoZWNrYm94L3RyaXN0YXRlY2hlY2tib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFtQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGlCQUFpQixFQUF1QixNQUFNLGdCQUFnQixDQUFDOzs7QUFFdkUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQy9DLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQXlCRixNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBb0JoQyxxQkFBZ0IsR0FBVyxhQUFhLENBQUM7UUFFekMsc0JBQWlCLEdBQVcsYUFBYSxDQUFDO1FBRXpDLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU0zRCxrQkFBYSxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVuQyxtQkFBYyxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQWhDUSxDQUFDO0lBa0M3QyxPQUFPLENBQUMsS0FBWSxFQUFFLEtBQXVCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lB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UTtzQkFBaEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07O0FBK0VYLE1BQU0sT0FBTyxzQkFBc0I7O21IQUF0QixzQkFBc0I7b0hBQXRCLHNCQUFzQixpQkF6R3RCLGdCQUFnQixhQXFHZixZQUFZLGFBckdiLGdCQUFnQjtvSEF5R2hCLHNCQUFzQixZQUp0QixDQUFDLFlBQVksQ0FBQzsyRkFJZCxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZSxDb21wb25lbnQsSW5wdXQsT3V0cHV0LEV2ZW50RW1pdHRlcixmb3J3YXJkUmVmLENoYW5nZURldGVjdG9yUmVmLENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBUUklTVEFURUNIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmlTdGF0ZUNoZWNrYm94KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC10cmlTdGF0ZUNoZWNrYm94JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInN0eWxlXCIgW25nQ2xhc3NdPVwieydwLWNoZWNrYm94IHAtY29tcG9uZW50JzogdHJ1ZSwncC1jaGVja2JveC1kaXNhYmxlZCc6IGRpc2FibGVkLCAncC1jaGVja2JveC1mb2N1c2VkJzogZm9jdXNlZH1cIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI2lucHV0IHR5cGU9XCJ0ZXh0XCIgW2F0dHIuaWRdPVwiaW5wdXRJZFwiIFtuYW1lXT1cIm5hbWVcIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiIGlucHV0bW9kZT1cIm5vbmVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hlY2tib3gtYm94XCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LGlucHV0KVwiICByb2xlPVwiY2hlY2tib3hcIiBbYXR0ci5hcmlhLWNoZWNrZWRdPVwidmFsdWUgPT09IHRydWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1oaWdobGlnaHQnOnZhbHVlIT1udWxsLCdwLWRpc2FibGVkJzpkaXNhYmxlZCwncC1mb2N1cyc6Zm9jdXNlZH1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInZhbHVlID09PSB0cnVlID8gY2hlY2tib3hUcnVlSWNvbiA6IHZhbHVlID09PSBmYWxzZSA/IGNoZWNrYm94RmFsc2VJY29uIDogJydcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInAtY2hlY2tib3gtbGFiZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsaW5wdXQpXCJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC1jaGVja2JveC1sYWJlbC1hY3RpdmUnOnZhbHVlIT1udWxsLCAncC1kaXNhYmxlZCc6ZGlzYWJsZWQsICdwLWNoZWNrYm94LWxhYmVsLWZvY3VzJzpmb2N1c2VkfVwiXG4gICAgICAgICAgICAgICAqbmdJZj1cImxhYmVsXCIgW2F0dHIuZm9yXT1cImlucHV0SWRcIj57e2xhYmVsfX08L2xhYmVsPlxuICAgIGAsXG4gICAgcHJvdmlkZXJzOiBbVFJJU1RBVEVDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUcmlTdGF0ZUNoZWNrYm94IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHN0eWxlOiBhbnk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBjaGVja2JveFRydWVJY29uOiBzdHJpbmcgPSAncGkgcGktY2hlY2snO1xuXG4gICAgQElucHV0KCkgY2hlY2tib3hGYWxzZUljb246IHN0cmluZyA9ICdwaSBwaS10aW1lcyc7XG5cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZm9jdXNlZDogYm9vbGVhbjtcblxuICAgIHZhbHVlOiBhbnk7XG5cbiAgICBvbk1vZGVsQ2hhbmdlOiBGdW5jdGlvbiA9ICgpID0+IHt9O1xuXG4gICAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZShldmVudCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAzMikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT0gMzIgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKGV2ZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy52YWx1ZSA9PSB0cnVlKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlID09IGZhbHNlKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSA6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtUcmlTdGF0ZUNoZWNrYm94XSxcbiAgICBkZWNsYXJhdGlvbnM6IFtUcmlTdGF0ZUNoZWNrYm94XVxufSlcbmV4cG9ydCBjbGFzcyBUcmlTdGF0ZUNoZWNrYm94TW9kdWxlIHsgfVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/utils/objectutils.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/utils/objectutils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/utils/objectutils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,155 @@
+export class ObjectUtils {
+    static equals(obj1, obj2, field) {
+        if (field)
+            return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));
+        else
+            return this.equalsByValue(obj1, obj2);
+    }
+    static equalsByValue(obj1, obj2) {
+        if (obj1 === obj2)
+            return true;
+        if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {
+            var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;
+            if (arrA && arrB) {
+                length = obj1.length;
+                if (length != obj2.length)
+                    return false;
+                for (i = length; i-- !== 0;)
+                    if (!this.equalsByValue(obj1[i], obj2[i]))
+                        return false;
+                return true;
+            }
+            if (arrA != arrB)
+                return false;
+            var dateA = obj1 instanceof Date, dateB = obj2 instanceof Date;
+            if (dateA != dateB)
+                return false;
+            if (dateA && dateB)
+                return obj1.getTime() == obj2.getTime();
+            var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;
+            if (regexpA != regexpB)
+                return false;
+            if (regexpA && regexpB)
+                return obj1.toString() == obj2.toString();
+            var keys = Object.keys(obj1);
+            length = keys.length;
+            if (length !== Object.keys(obj2).length)
+                return false;
+            for (i = length; i-- !== 0;)
+                if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))
+                    return false;
+            for (i = length; i-- !== 0;) {
+                key = keys[i];
+                if (!this.equalsByValue(obj1[key], obj2[key]))
+                    return false;
+            }
+            return true;
+        }
+        return obj1 !== obj1 && obj2 !== obj2;
+    }
+    static resolveFieldData(data, field) {
+        if (data && field) {
+            if (this.isFunction(field)) {
+                return field(data);
+            }
+            else if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (let i = 0, len = fields.length; i < len; ++i) {
+                    if (value == null) {
+                        return null;
+                    }
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    static isFunction(obj) {
+        return !!(obj && obj.constructor && obj.call && obj.apply);
+    }
+    static reorderArray(value, from, to) {
+        let target;
+        if (value && from !== to) {
+            if (to >= value.length) {
+                to %= value.length;
+                from %= value.length;
+            }
+            value.splice(to, 0, value.splice(from, 1)[0]);
+        }
+    }
+    static insertIntoOrderedArray(item, index, arr, sourceArr) {
+        if (arr.length > 0) {
+            let injected = false;
+            for (let i = 0; i < arr.length; i++) {
+                let currentItemIndex = this.findIndexInList(arr[i], sourceArr);
+                if (currentItemIndex > index) {
+                    arr.splice(i, 0, item);
+                    injected = true;
+                    break;
+                }
+            }
+            if (!injected) {
+                arr.push(item);
+            }
+        }
+        else {
+            arr.push(item);
+        }
+    }
+    static findIndexInList(item, list) {
+        let index = -1;
+        if (list) {
+            for (let i = 0; i < list.length; i++) {
+                if (list[i] == item) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    static contains(value, list) {
+        if (value != null && list && list.length) {
+            for (let val of list) {
+                if (this.equals(value, val))
+                    return true;
+            }
+        }
+        return false;
+    }
+    static removeAccents(str) {
+        if (str && str.search(/[\xC0-\xFF]/g) > -1) {
+            str = str
+                .replace(/[\xC0-\xC5]/g, "A")
+                .replace(/[\xC6]/g, "AE")
+                .replace(/[\xC7]/g, "C")
+                .replace(/[\xC8-\xCB]/g, "E")
+                .replace(/[\xCC-\xCF]/g, "I")
+                .replace(/[\xD0]/g, "D")
+                .replace(/[\xD1]/g, "N")
+                .replace(/[\xD2-\xD6\xD8]/g, "O")
+                .replace(/[\xD9-\xDC]/g, "U")
+                .replace(/[\xDD]/g, "Y")
+                .replace(/[\xDE]/g, "P")
+                .replace(/[\xE0-\xE5]/g, "a")
+                .replace(/[\xE6]/g, "ae")
+                .replace(/[\xE7]/g, "c")
+                .replace(/[\xE8-\xEB]/g, "e")
+                .replace(/[\xEC-\xEF]/g, "i")
+                .replace(/[\xF1]/g, "n")
+                .replace(/[\xF2-\xF6\xF8]/g, "o")
+                .replace(/[\xF9-\xFC]/g, "u")
+                .replace(/[\xFE]/g, "p")
+                .replace(/[\xFD\xFF]/g, "y");
+        }
+        return str;
+    }
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0dXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvb2JqZWN0dXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFFYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQVMsRUFBRSxJQUFTLEVBQUUsS0FBYztRQUNyRCxJQUFJLEtBQUs7WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7O1lBRW5GLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBUyxFQUFFLElBQVM7UUFDNUMsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRS9CLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3BFLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3hCLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUMxQixDQUFDLEVBQ0QsTUFBTSxFQUNOLEdBQUcsQ0FBQztZQUVWLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDZCxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDckIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMs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dFV0aWxzIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzKG9iajE6IGFueSwgb2JqMjogYW55LCBmaWVsZD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZmllbGQpXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucmVzb2x2ZUZpZWxkRGF0YShvYmoxLCBmaWVsZCkgPT09IHRoaXMucmVzb2x2ZUZpZWxkRGF0YShvYmoyLCBmaWVsZCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHNCeVZhbHVlKG9iajEsIG9iajIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXF1YWxzQnlWYWx1ZShvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAob2JqMSA9PT0gb2JqMikgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgaWYgKG9iajEgJiYgb2JqMiAmJiB0eXBlb2Ygb2JqMSA9PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqMiA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdmFyIGFyckEgPSBBcnJheS5pc0FycmF5KG9iajEpXG4gICAgICAgICAgICAgICAgLCBhcnJCID0gQXJyYXkuaXNBcnJheShvYmoyKVxuICAgICAgICAgICAgICAgICwgaVxuICAgICAgICAgICAgICAgICwgbGVuZ3RoXG4gICAgICAgICAgICAgICAgLCBrZXk7XG5cbiAgICAgICAgICAgIGlmIChhcnJBICYmIGFyckIpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBvYmoxLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoICE9IG9iajIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXF1YWxzQnlWYWx1ZShvYmoxW2ldLCBvYmoyW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXJyQSAhPSBhcnJCKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIHZhciBkYXRlQSA9IG9iajEgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgICAgLCBkYXRlQiA9IG9iajIgaW5zdGFuY2VvZiBEYXRlO1xuICAgICAgICAgICAgaWYgKGRhdGVBICE9IGRhdGVCKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoZGF0ZUEgJiYgZGF0ZUIpIHJldHVybiBvYmoxLmdldFRpbWUoKSA9PSBvYmoyLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgdmFyIHJlZ2V4cEEgPSBvYmoxIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICAgICAgICAgICAgLCByZWdleHBCID0gb2JqMiBpbnN0YW5jZW9mIFJlZ0V4cDtcbiAgICAgICAgICAgIGlmIChyZWdleHBBICE9IHJlZ2V4cEIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChyZWdleHBBICYmIHJlZ2V4cEIpIHJldHVybiBvYmoxLnRvU3RyaW5nKCkgPT0gb2JqMi50b1N0cmluZygpO1xuXG4gICAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iajEpO1xuICAgICAgICAgICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKG9iajIpLmxlbmd0aClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmoyLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lcXVhbHNCeVZhbHVlKG9iajFba2V5XSwgb2JqMltrZXldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmoxICE9PSBvYmoxICYmIG9iajIgIT09IG9iajI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZXNvbHZlRmllbGREYXRhKGRhdGE6IGFueSwgZmllbGQ6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChkYXRhICYmIGZpZWxkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Z1bmN0aW9uKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGZpZWxkLmluZGV4T2YoJy4nKSA9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhW2ZpZWxkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBmaWVsZHM6IHN0cmluZ1tdID0gZmllbGQuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDAsIGxlbiA9IGZpZWxkcy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtmaWVsZHNbaV1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNGdW5jdGlvbihvYmo6IGFueSkge1xuICAgICAgICByZXR1cm4gISEob2JqICYmIG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY2FsbCAmJiBvYmouYXBwbHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVvcmRlckFycmF5KHZhbHVlOiBhbnlbXSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgICAgIGxldCB0YXJnZXQ6IG51bWJlcjtcbiAgICAgICAgaWYgKHZhbHVlICYmIGZyb20gIT09IHRvKSB7XG4gICAgICAgICAgICBpZiAodG8gPj0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdG8gJT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZyb20gJT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWUuc3BsaWNlKHRvLCAwLCB2YWx1ZS5zcGxpY2UoZnJvbSwgMSlbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnNlcnRJbnRvT3JkZXJlZEFycmF5KGl0ZW06IGFueSwgaW5kZXg6IG51bWJlciwgYXJyOiBhbnlbXSwgc291cmNlQXJyOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBpbmplY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50SXRlbUluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkxpc3QoYXJyW2ldLCBzb3VyY2VBcnIpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyLnNwbGljZShpLCAwLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaW5qZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFyci5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kSW5kZXhJbkxpc3QoaXRlbTogYW55LCBsaXN0OiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IC0xO1xuXG4gICAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsaXN0W2ldID09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb250YWlucyh2YWx1ZSwgbGlzdCkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBsaXN0ICYmIGxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgbGlzdCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVxdWFscyh2YWx1ZSwgdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVBY2NlbnRzKHN0cikge1xuICAgICAgICBpZiAoc3RyICYmIHN0ci5zZWFyY2goL1tcXHhDMC1cXHhGRl0vZykgPiAtMSkge1xuICAgICAgICAgICAgc3RyID0gc3RyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4QzAtXFx4QzVdL2csIFwiQVwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEM2XS9nLCBcIkFFXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4QzddL2csIFwiQ1wiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEM4LVxceENCXS9nLCBcIkVcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhDQy1cXHhDRl0vZywgXCJJXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RDBdL2csIFwiRFwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEQxXS9nLCBcIk5cIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhEMi1cXHhENlxceEQ4XS9nLCBcIk9cIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhEOS1cXHhEQ10vZywgXCJVXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RERdL2csIFwiWVwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceERFXS9nLCBcIlBcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhFMC1cXHhFNV0vZywgXCJhXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTZdL2csIFwiYWVcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhFN10vZywgXCJjXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RTgtXFx4RUJdL2csIFwiZVwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEVDLVxceEVGXS9nLCBcImlcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhGMV0vZywgXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RjItXFx4RjZcXHhGOF0vZywgXCJvXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4RjktXFx4RkNdL2csIFwidVwiKVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceEZFXS9nLCBcInBcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHhGRFxceEZGXS9nLCBcInlcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgfVxufVxuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/utils/primeng-utils.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/utils/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/utils/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy91dGlscy9wcmltZW5nLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/utils/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/utils/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/utils/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+import { ObjectUtils } from './objectutils';
+import { UniqueComponentId } from './uniquecomponentid';
+import ZIndexUtils from './zindexutils';
+export { ZIndexUtils, UniqueComponentId, ObjectUtils };
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy91dGlscy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxXQUFXLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sRUFBQyxXQUFXLEVBQUMsaUJBQWlCLEVBQUMsV0FBVyxFQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09iamVjdFV0aWxzfSBmcm9tICcuL29iamVjdHV0aWxzJztcbmltcG9ydCB7VW5pcXVlQ29tcG9uZW50SWR9IGZyb20gJy4vdW5pcXVlY29tcG9uZW50aWQnO1xuaW1wb3J0IFpJbmRleFV0aWxzIGZyb20gJy4vemluZGV4dXRpbHMnO1xuXG5cbmV4cG9ydCB7WkluZGV4VXRpbHMsVW5pcXVlQ29tcG9uZW50SWQsT2JqZWN0VXRpbHN9O1xuIl19
Index: trip-planner-front/node_modules/primeng/esm2020/utils/uniquecomponentid.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/utils/uniquecomponentid.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/utils/uniquecomponentid.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+export var lastId = 0;
+export function UniqueComponentId() {
+    let prefix = 'pr_id_';
+    lastId++;
+    return `${prefix}${lastId}`;
+}
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlY29tcG9uZW50aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvdW5pcXVlY29tcG9uZW50aWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUV0QixNQUFNLFVBQVUsaUJBQWlCO0lBQzdCLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN0QixNQUFNLEVBQUUsQ0FBQztJQUNULE9BQU8sR0FBRyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHZhciBsYXN0SWQgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlQ29tcG9uZW50SWQgKCkge1xuICAgIGxldCBwcmVmaXggPSAncHJfaWRfJztcbiAgICBsYXN0SWQrKztcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7bGFzdElkfWA7XG59Il19
Index: trip-planner-front/node_modules/primeng/esm2020/utils/zindexutils.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/utils/zindexutils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/utils/zindexutils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,35 @@
+function ZIndexUtils() {
+    let zIndexes = [];
+    const generateZIndex = (key, baseZIndex) => {
+        let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };
+        let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;
+        zIndexes.push({ key, value: newZIndex });
+        return newZIndex;
+    };
+    const revertZIndex = (zIndex) => {
+        zIndexes = zIndexes.filter(obj => obj.value !== zIndex);
+    };
+    const getCurrentZIndex = () => {
+        return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;
+    };
+    const getZIndex = (el) => {
+        return el ? parseInt(el.style.zIndex, 10) || 0 : 0;
+    };
+    return {
+        get: getZIndex,
+        set: (key, el, baseZIndex) => {
+            if (el) {
+                el.style.zIndex = String(generateZIndex(key, baseZIndex));
+            }
+        },
+        clear: (el) => {
+            if (el) {
+                revertZIndex(getZIndex(el));
+                el.style.zIndex = '';
+            }
+        },
+        getCurrent: () => getCurrentZIndex()
+    };
+}
+export default ZIndexUtils();
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemluZGV4dXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdXRpbHMvemluZGV4dXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxXQUFXO0lBQ2hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVsQixNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUN2QyxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNsRyxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpGLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQyxDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUM1QixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDMUIsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFBO0lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNyQixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQTtJQUVELE9BQU87UUFDSCxHQUFHLEVBQUUsU0FBUztRQUNkLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDekIsSUFBSSxFQUFFLEVBQUU7Z0JBQ0osRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM3RDtRQUNMLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO2dCQUNKLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQztRQUNELFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtLQUN2QyxDQUFDO0FBQ04sQ0FBQztBQUVELGVBQWUsV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBaSW5kZXhVdGlscygpIHtcbiAgICBsZXQgekluZGV4ZXMgPSBbXTtcblxuICAgIGNvbnN0IGdlbmVyYXRlWkluZGV4ID0gKGtleSwgYmFzZVpJbmRleCkgPT4ge1xuICAgICAgICBsZXQgbGFzdFpJbmRleCA9IHpJbmRleGVzLmxlbmd0aCA+IDAgPyB6SW5kZXhlc1t6SW5kZXhlcy5sZW5ndGggLSAxXSA6IHsga2V5LCB2YWx1ZTogYmFzZVpJbmRleCB9O1xuICAgICAgICBsZXQgbmV3WkluZGV4ID0gbGFzdFpJbmRleC52YWx1ZSArIChsYXN0WkluZGV4LmtleSA9PT0ga2V5ID8gMCA6IGJhc2VaSW5kZXgpICsgMTtcblxuICAgICAgICB6SW5kZXhlcy5wdXNoKHsga2V5LCB2YWx1ZTogbmV3WkluZGV4IH0pO1xuXG4gICAgICAgIHJldHVybiBuZXdaSW5kZXg7XG4gICAgfVxuXG4gICAgY29uc3QgcmV2ZXJ0WkluZGV4ID0gKHpJbmRleCkgPT4ge1xuICAgICAgICB6SW5kZXhlcyA9IHpJbmRleGVzLmZpbHRlcihvYmogPT4gb2JqLnZhbHVlICE9PSB6SW5kZXgpO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEN1cnJlbnRaSW5kZXggPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB6SW5kZXhlcy5sZW5ndGggPiAwID8gekluZGV4ZXNbekluZGV4ZXMubGVuZ3RoIC0gMV0udmFsdWUgOiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGdldFpJbmRleCA9IChlbCkgPT4ge1xuICAgICAgICByZXR1cm4gZWwgPyBwYXJzZUludChlbC5zdHlsZS56SW5kZXgsIDEwKSB8fCAwIDogMFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldDogZ2V0WkluZGV4LFxuICAgICAgICBzZXQ6IChrZXksIGVsLCBiYXNlWkluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS56SW5kZXggPSBTdHJpbmcoZ2VuZXJhdGVaSW5kZXgoa2V5LCBiYXNlWkluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyOiAoZWwpID0+IHtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHJldmVydFpJbmRleChnZXRaSW5kZXgoZWwpKTtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS56SW5kZXggPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q3VycmVudDogKCkgPT4gZ2V0Q3VycmVudFpJbmRleCgpXG4gICAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgWkluZGV4VXRpbHMoKTtcbiJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/virtualscroller/primeng-virtualscroller.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/virtualscroller/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/virtualscroller/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './public_api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWVuZy12aXJ0dWFsc2Nyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvdmlydHVhbHNjcm9sbGVyL3ByaW1lbmctdmlydHVhbHNjcm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
Index: trip-planner-front/node_modules/primeng/esm2020/virtualscroller/public_api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/virtualscroller/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/virtualscroller/public_api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+export * from './virtualscroller';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy92aXJ0dWFsc2Nyb2xsZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi92aXJ0dWFsc2Nyb2xsZXInOyJdfQ==
Index: trip-planner-front/node_modules/primeng/esm2020/virtualscroller/virtualscroller.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/esm2020/virtualscroller/virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/esm2020/virtualscroller/virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,196 @@
+import { NgModule, Component, Input, Output, ViewChild, EventEmitter, ContentChild, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/cdk/scrolling";
+import * as i2 from "@angular/common";
+export class VirtualScroller {
+    constructor(el) {
+        this.el = el;
+        this.delay = 250;
+        this.trackBy = (index, item) => item;
+        this.onLazyLoad = new EventEmitter();
+        this._totalRecords = 0;
+        this.page = 0;
+        this._first = 0;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        console.log("totalRecords is deprecated, provide a value with the length of virtual items instead.");
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+        console.log("first property is deprecated, use scrollToIndex function to scroll a specific item.");
+    }
+    get cache() {
+        return this._cache;
+    }
+    set cache(val) {
+        this._cache = val;
+        console.log("cache is deprecated as it is always on.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'loadingItem':
+                    this.loadingItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({ first: virtualScrollOffset, rows: virtualScrollChunkSize });
+                }
+            }, this.delay);
+        }
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    //@deprecated
+    scrollTo(index, mode) {
+        this.scrollToIndex(index, mode);
+    }
+    scrollToIndex(index, mode) {
+        if (this.viewport) {
+            this.viewport.scrollToIndex(index, mode);
+        }
+    }
+}
+VirtualScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+VirtualScroller.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: VirtualScroller, selector: "p-virtualScroller", inputs: { value: "value", itemSize: "itemSize", style: "style", styleClass: "styleClass", scrollHeight: "scrollHeight", lazy: "lazy", rows: "rows", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", delay: "delay", trackBy: "trackBy", totalRecords: "totalRecords", first: "first", cache: "cache" }, outputs: { onLazyLoad: "onLazyLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-virtualScroller', template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], viewport: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], onLazyLoad: [{
+                type: Output
+            }], totalRecords: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }] } });
+export class VirtualScrollerModule {
+}
+VirtualScrollerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+VirtualScrollerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, declarations: [VirtualScroller], imports: [CommonModule, ScrollingModule], exports: [VirtualScroller, SharedModule, ScrollingModule] });
+VirtualScrollerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, imports: [[CommonModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule],
+                    exports: [VirtualScroller, SharedModule, ScrollingModule],
+                    declarations: [VirtualScroller]
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbHNjcm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3ZpcnR1YWxzY3JvbGxlci92aXJ0dWFsc2Nyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQTZCLEtBQUssRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxZQUFZLEVBQUMsZUFBZSxFQUF1Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvTSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFtQ2hGLE1BQU0sT0FBTyxlQUFlO0lBc0R4QixZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWxDeEIsVUFBSyxHQUFXLEdBQUcsQ0FBQztRQUVwQixZQUFPLEdBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFVdEQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBVTdELGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLFNBQUksR0FBVyxDQUFDLENBQUM7UUFFakIsV0FBTSxHQUFXLENBQUMsQ0FBQztJQVFpQixDQUFDO0lBRXJDLElBQWEsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1RkFBdUYsQ0FB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SEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBbEpyQixlQUFlLGFBOElkLFlBQVksRUFBQyxlQUFlLGFBOUk3QixlQUFlLEVBK0lFLFlBQVksRUFBQyxlQUFlO21IQUc3QyxxQkFBcUIsWUFKckIsQ0FBQyxZQUFZLEVBQUMsZUFBZSxDQUFDLEVBQ2IsWUFBWSxFQUFDLGVBQWU7MkZBRzdDLHFCQUFxQjtrQkFMakMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsZUFBZSxDQUFDO29CQUN2QyxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUMsWUFBWSxFQUFDLGVBQWUsQ0FBQztvQkFDdkQsWUFBWSxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGUsQ29tcG9uZW50LEVsZW1lbnRSZWYsQWZ0ZXJDb250ZW50SW5pdCxJbnB1dCxPdXRwdXQsVmlld0NoaWxkLEV2ZW50RW1pdHRlcixDb250ZW50Q2hpbGQsQ29udGVudENoaWxkcmVuLFF1ZXJ5TGlzdCxUZW1wbGF0ZVJlZixDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0hlYWRlcixGb290ZXIsUHJpbWVUZW1wbGF0ZSxTaGFyZWRNb2R1bGV9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7U2Nyb2xsaW5nTW9kdWxlLENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0Jsb2NrYWJsZVVJfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC12aXJ0dWFsU2Nyb2xsZXInLFxuICAgIHRlbXBsYXRlOmBcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCIncC12aXJ0dWFsc2Nyb2xsZXIgcC1jb21wb25lbnQnXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdmlydHVhbHNjcm9sbGVyLWhlYWRlclwiICpuZ0lmPVwiaGVhZGVyIHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgI2NvbnRlbnQgY2xhc3M9XCJwLXZpcnR1YWxzY3JvbGxlci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdmlydHVhbHNjcm9sbGVyLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAjdmlld3BvcnQgW25nU3R5bGVdPVwieydoZWlnaHQnOiBzY3JvbGxIZWlnaHR9XCIgdGFiaW5kZXg9XCIwXCIgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCIgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCIgW21heEJ1ZmZlclB4XT1cIm1heEJ1ZmZlclB4XCIgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwib25TY3JvbGxJbmRleENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IHRyYWNrQnk6IHRyYWNrQnk7IGxldCBpID0gaW5kZXg7IGxldCBjID0gY291bnQ7IGxldCBmID0gZmlyc3Q7IGxldCBsID0gbGFzdDsgbGV0IGUgPSBldmVuOyBsZXQgbyA9IG9kZDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogaXRlbVNpemUgKyAncHgnfVwiIGNsYXNzPVwicC12aXJ0dWFsc2Nyb2xsZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbSA/IGl0ZW1UZW1wbGF0ZSA6IGxvYWRpbmdJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpLCBjb3VudDogYywgZmlyc3Q6IGYsIGxhc3Q6IGwsIGV2ZW46IGUsIG9kZDogb31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdmlydHVhbHNjcm9sbGVyLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyIHx8IGZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi92aXJ0dWFsc2Nyb2xsZXIuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVmlydHVhbFNjcm9sbGVyIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCxCbG9ja2FibGVVSSB7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W107XG5cbiAgICBASW5wdXQoKSBpdGVtU2l6ZTogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgc3R5bGU6IGFueTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogYW55O1xuXG4gICAgQElucHV0KCkgbGF6eTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1pbkJ1ZmZlclB4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBtYXhCdWZmZXJQeDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZGVsYXk6IG51bWJlciA9IDI1MDtcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuICAgIEBDb250ZW50Q2hpbGQoSGVhZGVyKSBoZWFkZXI6IEhlYWRlcjtcblxuICAgIEBDb250ZW50Q2hpbGQoRm9vdGVyKSBmb290ZXI6IEZvb3RlcjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgQE91dHB1dCgpIG9uTGF6eUxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGxvYWRpbmdJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBfdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xuXG4gICAgcGFnZTogbnVtYmVyID0gMDtcblxuICAgIF9maXJzdDogbnVtYmVyID0gMDtcblxuICAgIF9jYWNoZTogYm9vbGVhbjtcblxuICAgIHZpcnR1YWxTY3JvbGxUaW1lb3V0OiBhbnk7XG5cbiAgICB2aXJ0dWFsUGFnZTogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgQElucHV0KCkgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xuICAgIH1cbiAgICBzZXQgdG90YWxSZWNvcmRzKHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbDtcbiAgICAgICAgY29uc29sZS5sb2coXCJ0b3RhbFJlY29yZHMgaXMgZGVwcmVjYXRlZCwgcHJvdmlkZSBhIHZhbHVlIHdpdGggdGhlIGxlbmd0aCBvZiB2aXJ0dWFsIGl0ZW1zIGluc3RlYWQuXCIpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBmaXJzdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3Q7XG4gICAgfVxuICAgIHNldCBmaXJzdCh2YWw6bnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2ZpcnN0ID0gdmFsO1xuICAgICAgICBjb25zb2xlLmxvZyhcImZpcnN0IHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQsIHVzZSBzY3JvbGxUb0luZGV4IGZ1bmN0aW9uIHRvIHNjcm9sbCBhIHNwZWNpZmljIGl0ZW0uXCIpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBjYWNoZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlO1xuICAgIH1cbiAgICBzZXQgY2FjaGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NhY2hlID0gdmFsO1xuICAgICAgICBjb25zb2xlLmxvZyhcImNhY2hlIGlzIGRlcHJlY2F0ZWQgYXMgaXQgaXMgYWx3YXlzIG9uLlwiKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdsb2FkaW5nSXRlbSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0l0ZW1UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNjcm9sbEluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbFRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy52aXJ0dWFsU2Nyb2xsVGltZW91dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IE1hdGguZmxvb3IoaW5kZXggLyB0aGlzLnJvd3MpO1xuICAgICAgICAgICAgICAgIGxldCB2aXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gcGFnZSA9PT0gMCA/IDAgOiAocGFnZSAtIDEpICogdGhpcy5yb3dzO1xuICAgICAgICAgICAgICAgIGxldCB2aXJ0dWFsU2Nyb2xsQ2h1bmtTaXplID0gcGFnZSA9PT0gMCA/IHRoaXMucm93cyAqIDIgOiB0aGlzLnJvd3MgKiAzO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2UgIT09IHRoaXMudmlydHVhbFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsUGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25MYXp5TG9hZC5lbWl0KHtmaXJzdDogdmlydHVhbFNjcm9sbE9mZnNldCwgcm93czogdmlydHVhbFNjcm9sbENodW5rU2l6ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRoaXMuZGVsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QmxvY2thYmxlRWxlbWVudCgpOiBIVE1MRWxlbWVudMKge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIC8vQGRlcHJlY2F0ZWRcbiAgICBzY3JvbGxUbyhpbmRleDogbnVtYmVyLCBtb2RlPzogU2Nyb2xsQmVoYXZpb3IpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0luZGV4KGluZGV4LCBtb2RlKTtcbiAgICB9XG5cbiAgICBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIsIG1vZGU/OiBTY3JvbGxCZWhhdmlvcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KGluZGV4LCBtb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLFNjcm9sbGluZ01vZHVsZV0sXG4gICAgZXhwb3J0czogW1ZpcnR1YWxTY3JvbGxlcixTaGFyZWRNb2R1bGUsU2Nyb2xsaW5nTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtWaXJ0dWFsU2Nyb2xsZXJdXG59KVxuZXhwb3J0IGNsYXNzIFZpcnR1YWxTY3JvbGxlck1vZHVsZSB7IH1cblxuIl19
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,326 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, PrimeTemplate, SharedModule } from 'primeng/api';
+
+let idx = 0;
+class AccordionTab {
+    constructor(accordion, changeDetector) {
+        this.changeDetector = changeDetector;
+        this.cache = true;
+        this.selectedChange = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-accordiontab-${idx++}`;
+        this.accordion = accordion;
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            if (this._selected && this.cache) {
+                this.loaded = true;
+            }
+            this.changeDetector.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.disabled) {
+            return false;
+        }
+        let index = this.findTabIndex();
+        if (this.selected) {
+            this.selected = false;
+            this.accordion.onClose.emit({ originalEvent: event, index: index });
+        }
+        else {
+            if (!this.accordion.multiple) {
+                for (var i = 0; i < this.accordion.tabs.length; i++) {
+                    this.accordion.tabs[i].selected = false;
+                    this.accordion.tabs[i].selectedChange.emit(false);
+                    this.accordion.tabs[i].changeDetector.markForCheck();
+                }
+            }
+            this.selected = true;
+            this.loaded = true;
+            this.accordion.onOpen.emit({ originalEvent: event, index: index });
+        }
+        this.selectedChange.emit(this.selected);
+        this.accordion.updateActiveIndex();
+        this.changeDetector.markForCheck();
+        event.preventDefault();
+    }
+    findTabIndex() {
+        let index = -1;
+        for (var i = 0; i < this.accordion.tabs.length; i++) {
+            if (this.accordion.tabs[i] == this) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    get hasHeaderFacet() {
+        return this.headerFacet && this.headerFacet.length > 0;
+    }
+    onKeydown(event) {
+        if (event.which === 32 || event.which === 13) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    ngOnDestroy() {
+        this.accordion.tabs.splice(this.findTabIndex(), 1);
+    }
+}
+AccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+AccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AccordionTab, selector: "p-accordionTab", inputs: { header: "header", disabled: "disabled", cache: "cache", transitionOptions: "transitionOptions", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", predicate: Header }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('tabContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-accordionTab', template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('tabContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"] }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => Accordion)]
+                    }] }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { header: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], selectedChange: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChildren,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }] } });
+class Accordion {
+    constructor(el, changeDetector) {
+        this.el = el;
+        this.changeDetector = changeDetector;
+        this.onClose = new EventEmitter();
+        this.onOpen = new EventEmitter();
+        this.expandIcon = 'pi pi-fw pi-chevron-right';
+        this.collapseIcon = 'pi pi-fw pi-chevron-down';
+        this.activeIndexChange = new EventEmitter();
+        this.tabs = [];
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabListSubscription = this.tabList.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    initTabs() {
+        this.tabs = this.tabList.toArray();
+        this.updateSelectionState();
+        this.changeDetector.markForCheck();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        this.updateSelectionState();
+    }
+    updateSelectionState() {
+        if (this.tabs && this.tabs.length && this._activeIndex != null) {
+            for (let i = 0; i < this.tabs.length; i++) {
+                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);
+                let changed = selected !== this.tabs[i].selected;
+                if (changed) {
+                    this.tabs[i].selected = selected;
+                    this.tabs[i].selectedChange.emit(selected);
+                    this.tabs[i].changeDetector.markForCheck();
+                }
+            }
+        }
+    }
+    updateActiveIndex() {
+        let index = this.multiple ? [] : null;
+        this.tabs.forEach((tab, i) => {
+            if (tab.selected) {
+                if (this.multiple) {
+                    index.push(i);
+                }
+                else {
+                    index = i;
+                    return;
+                }
+            }
+        });
+        this.preventActiveIndexPropagation = true;
+        this.activeIndexChange.emit(index);
+    }
+    ngOnDestroy() {
+        if (this.tabListSubscription) {
+            this.tabListSubscription.unsubscribe();
+        }
+    }
+}
+Accordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Accordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Accordion, selector: "p-accordion", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", activeIndex: "activeIndex" }, outputs: { onClose: "onClose", onOpen: "onOpen", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabList", predicate: AccordionTab }], ngImport: i0, template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-accordion',
+                    template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], onOpen: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], tabList: [{
+                type: ContentChildren,
+                args: [AccordionTab]
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class AccordionModule {
+}
+AccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });
+AccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Accordion, AccordionTab, SharedModule],
+                    declarations: [Accordion, AccordionTab]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Accordion, AccordionModule, AccordionTab };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-accordion.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-accordion.mjs","sources":["../../src/app/components/accordion/accordion.ts","../../src/app/components/accordion/primeng-accordion.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, OnDestroy, Input, Output, EventEmitter,\n    ContentChildren, QueryList, ChangeDetectorRef, Inject, forwardRef, TemplateRef, ViewRef, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, Header, PrimeTemplate, BlockableUI } from 'primeng/api';\nimport { Subscription } from 'rxjs';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-accordionTab',\n    template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('tabContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./accordion.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class AccordionTab implements AfterContentInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() disabled: boolean;\n\n    @Input() cache: boolean = true;\n\n    @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(Header) headerFacet: QueryList<Header>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    private _selected: boolean;\n\n    @Input() get selected(): any {\n        return this._selected;\n    }\n\n    set selected(val: any) {\n        this._selected = val;\n\n        if (!this.loaded) {\n            if (this._selected && this.cache) {\n                this.loaded = true;\n            }\n\n            this.changeDetector.detectChanges();\n        }\n    }\n\n    contentTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    id: string = `p-accordiontab-${idx++}`;\n\n    loaded: boolean;\n\n    accordion: Accordion;\n\n    constructor(@Inject(forwardRef(() => Accordion)) accordion, public changeDetector: ChangeDetectorRef) {\n        this.accordion = accordion as Accordion;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.disabled) {\n            return false;\n        }\n\n        let index = this.findTabIndex();\n\n        if (this.selected) {\n            this.selected = false;\n            this.accordion.onClose.emit({ originalEvent: event, index: index });\n        }\n        else {\n            if (!this.accordion.multiple) {\n                for (var i = 0; i < this.accordion.tabs.length; i++) {\n                    this.accordion.tabs[i].selected = false;\n                    this.accordion.tabs[i].selectedChange.emit(false);\n                    this.accordion.tabs[i].changeDetector.markForCheck();\n                }\n            }\n\n            this.selected = true;\n            this.loaded = true;\n            this.accordion.onOpen.emit({ originalEvent: event, index: index });\n        }\n\n        this.selectedChange.emit(this.selected);\n        this.accordion.updateActiveIndex();\n        this.changeDetector.markForCheck();\n\n        event.preventDefault();\n    }\n\n    findTabIndex() {\n        let index = -1;\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n            if (this.accordion.tabs[i] == this) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n\n    get hasHeaderFacet(): boolean {\n        return this.headerFacet && this.headerFacet.length > 0;\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 32 || event.which === 13) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n\n    ngOnDestroy() {\n        this.accordion.tabs.splice(this.findTabIndex(), 1);\n    }\n}\n\n@Component({\n    selector: 'p-accordion',\n    template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Accordion implements BlockableUI, AfterContentInit, OnDestroy {\n\n    @Input() multiple: boolean;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOpen: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() expandIcon: string = 'pi pi-fw pi-chevron-right';\n\n    @Input() collapseIcon: string = 'pi pi-fw pi-chevron-down';\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(AccordionTab) tabList: QueryList<AccordionTab>;\n\n    tabListSubscription: Subscription;\n\n    private _activeIndex: any;\n\n    preventActiveIndexPropagation: boolean;\n\n    public tabs: AccordionTab[] = [];\n\n    constructor(public el: ElementRef, public changeDetector: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.initTabs();\n\n        this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n\n    initTabs(): any {\n        this.tabs = this.tabList.toArray();\n        this.updateSelectionState();\n        this.changeDetector.markForCheck();\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    @Input() get activeIndex(): any {\n        return this._activeIndex;\n    }\n\n    set activeIndex(val: any) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n\n        this.updateSelectionState();\n    }\n\n    updateSelectionState() {\n        if (this.tabs && this.tabs.length && this._activeIndex != null) {\n            for (let i = 0; i < this.tabs.length; i++) {\n                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);\n                let changed = selected !== this.tabs[i].selected;\n\n                if (changed) {\n                    this.tabs[i].selected = selected;\n                    this.tabs[i].selectedChange.emit(selected);\n                    this.tabs[i].changeDetector.markForCheck();\n                }\n            }\n        }\n    }\n\n    updateActiveIndex() {\n        let index: any = this.multiple ? [] : null;\n        this.tabs.forEach((tab, i) => {\n            if (tab.selected) {\n                if (this.multiple) {\n                    index.push(i);\n                }\n                else {\n                    index = i;\n                    return;\n                }\n            }\n        });\n\n        this.preventActiveIndexPropagation = true;\n        this.activeIndexChange.emit(index);\n    }\n\n    ngOnDestroy() {\n        if (this.tabListSubscription) {\n            this.tabListSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Accordion,AccordionTab,SharedModule],\n    declarations: [Accordion,AccordionTab]\n})\nexport class AccordionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,810 @@
+import * as i0 from '@angular/core';
+import { Injectable, Component, Directive, Input, NgModule } from '@angular/core';
+import { Subject } from 'rxjs';
+import { ObjectUtils } from 'primeng/utils';
+import { CommonModule } from '@angular/common';
+
+class FilterMatchMode {
+}
+FilterMatchMode.STARTS_WITH = 'startsWith';
+FilterMatchMode.CONTAINS = 'contains';
+FilterMatchMode.NOT_CONTAINS = 'notContains';
+FilterMatchMode.ENDS_WITH = 'endsWith';
+FilterMatchMode.EQUALS = 'equals';
+FilterMatchMode.NOT_EQUALS = 'notEquals';
+FilterMatchMode.IN = 'in';
+FilterMatchMode.LESS_THAN = 'lt';
+FilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';
+FilterMatchMode.GREATER_THAN = 'gt';
+FilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';
+FilterMatchMode.BETWEEN = 'between';
+FilterMatchMode.IS = 'is';
+FilterMatchMode.IS_NOT = 'isNot';
+FilterMatchMode.BEFORE = 'before';
+FilterMatchMode.AFTER = 'after';
+FilterMatchMode.DATE_IS = 'dateIs';
+FilterMatchMode.DATE_IS_NOT = 'dateIsNot';
+FilterMatchMode.DATE_BEFORE = 'dateBefore';
+FilterMatchMode.DATE_AFTER = 'dateAfter';
+
+class PrimeNGConfig {
+    constructor() {
+        this.ripple = false;
+        this.filterMatchModeOptions = {
+            text: [
+                FilterMatchMode.STARTS_WITH,
+                FilterMatchMode.CONTAINS,
+                FilterMatchMode.NOT_CONTAINS,
+                FilterMatchMode.ENDS_WITH,
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS
+            ],
+            numeric: [
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS,
+                FilterMatchMode.LESS_THAN,
+                FilterMatchMode.LESS_THAN_OR_EQUAL_TO,
+                FilterMatchMode.GREATER_THAN,
+                FilterMatchMode.GREATER_THAN_OR_EQUAL_TO
+            ],
+            date: [
+                FilterMatchMode.DATE_IS,
+                FilterMatchMode.DATE_IS_NOT,
+                FilterMatchMode.DATE_BEFORE,
+                FilterMatchMode.DATE_AFTER
+            ]
+        };
+        this.translation = {
+            startsWith: 'Starts with',
+            contains: 'Contains',
+            notContains: 'Not contains',
+            endsWith: 'Ends with',
+            equals: 'Equals',
+            notEquals: 'Not equals',
+            noFilter: 'No Filter',
+            lt: 'Less than',
+            lte: 'Less than or equal to',
+            gt: 'Greater than',
+            gte: 'Greater than or equal to',
+            is: 'Is',
+            isNot: 'Is not',
+            before: 'Before',
+            after: 'After',
+            dateIs: 'Date is',
+            dateIsNot: 'Date is not',
+            dateBefore: 'Date is before',
+            dateAfter: 'Date is after',
+            clear: 'Clear',
+            apply: 'Apply',
+            matchAll: 'Match All',
+            matchAny: 'Match Any',
+            addRule: 'Add Rule',
+            removeRule: 'Remove Rule',
+            accept: 'Yes',
+            reject: 'No',
+            choose: 'Choose',
+            upload: 'Upload',
+            cancel: 'Cancel',
+            dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+            dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+            dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+            monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+            monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+            dateFormat: 'mm/dd/yy',
+            today: 'Today',
+            weekHeader: 'Wk',
+            weak: 'Weak',
+            medium: 'Medium',
+            strong: 'Strong',
+            passwordPrompt: 'Enter a password',
+            emptyMessage: 'No results found',
+            emptyFilterMessage: 'No results found'
+        };
+        this.zIndex = {
+            modal: 1100,
+            overlay: 1000,
+            menu: 1000,
+            tooltip: 1100
+        };
+        this.translationSource = new Subject();
+        this.translationObserver = this.translationSource.asObservable();
+    }
+    getTranslation(key) {
+        return this.translation[key];
+    }
+    setTranslation(value) {
+        this.translation = Object.assign(Object.assign({}, this.translation), value);
+        this.translationSource.next(this.translation);
+    }
+}
+PrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+PrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class TranslationKeys {
+}
+TranslationKeys.STARTS_WITH = 'startsWith';
+TranslationKeys.CONTAINS = 'contains';
+TranslationKeys.NOT_CONTAINS = 'notContains';
+TranslationKeys.ENDS_WITH = 'endsWith';
+TranslationKeys.EQUALS = 'equals';
+TranslationKeys.NOT_EQUALS = 'notEquals';
+TranslationKeys.NO_FILTER = 'noFilter';
+TranslationKeys.LT = 'lt';
+TranslationKeys.LTE = 'lte';
+TranslationKeys.GT = 'gt';
+TranslationKeys.GTE = 'gte';
+TranslationKeys.IS = 'is';
+TranslationKeys.IS_NOT = 'isNot';
+TranslationKeys.BEFORE = 'before';
+TranslationKeys.AFTER = 'after';
+TranslationKeys.CLEAR = 'clear';
+TranslationKeys.APPLY = 'apply';
+TranslationKeys.MATCH_ALL = 'matchAll';
+TranslationKeys.MATCH_ANY = 'matchAny';
+TranslationKeys.ADD_RULE = 'addRule';
+TranslationKeys.REMOVE_RULE = 'removeRule';
+TranslationKeys.ACCEPT = 'accept';
+TranslationKeys.REJECT = 'reject';
+TranslationKeys.CHOOSE = 'choose';
+TranslationKeys.UPLOAD = 'upload';
+TranslationKeys.CANCEL = 'cancel';
+TranslationKeys.DAY_NAMES = 'dayNames';
+TranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';
+TranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';
+TranslationKeys.MONTH_NAMES = 'monthNames';
+TranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';
+TranslationKeys.TODAY = 'today';
+TranslationKeys.WEEK_HEADER = 'weekHeader';
+TranslationKeys.WEAK = 'weak';
+TranslationKeys.MEDIUM = 'medium';
+TranslationKeys.STRONG = 'strong';
+TranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';
+TranslationKeys.EMPTY_MESSAGE = 'emptyMessage';
+TranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';
+
+var ConfirmEventType;
+(function (ConfirmEventType) {
+    ConfirmEventType[ConfirmEventType["ACCEPT"] = 0] = "ACCEPT";
+    ConfirmEventType[ConfirmEventType["REJECT"] = 1] = "REJECT";
+    ConfirmEventType[ConfirmEventType["CANCEL"] = 2] = "CANCEL";
+})(ConfirmEventType || (ConfirmEventType = {}));
+
+class ConfirmationService {
+    constructor() {
+        this.requireConfirmationSource = new Subject();
+        this.acceptConfirmationSource = new Subject();
+        this.requireConfirmation$ = this.requireConfirmationSource.asObservable();
+        this.accept = this.acceptConfirmationSource.asObservable();
+    }
+    confirm(confirmation) {
+        this.requireConfirmationSource.next(confirmation);
+        return this;
+    }
+    close() {
+        this.requireConfirmationSource.next(null);
+        return this;
+    }
+    onAccept() {
+        this.acceptConfirmationSource.next(null);
+    }
+}
+ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, decorators: [{
+            type: Injectable
+        }] });
+
+class FilterService {
+    constructor() {
+        this.filters = {
+            startsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.slice(0, filterValue.length) === filterValue;
+            },
+            contains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) !== -1;
+            },
+            notContains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) === -1;
+            },
+            endsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;
+            },
+            equals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() === filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            notEquals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return false;
+                }
+                if (value === undefined || value === null) {
+                    return true;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() !== filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            in: (value, filter) => {
+                if (filter === undefined || filter === null || filter.length === 0) {
+                    return true;
+                }
+                for (let i = 0; i < filter.length; i++) {
+                    if (ObjectUtils.equals(value, filter[i])) {
+                        return true;
+                    }
+                }
+                return false;
+            },
+            between: (value, filter) => {
+                if (filter == null || filter[0] == null || filter[1] == null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime)
+                    return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();
+                else
+                    return filter[0] <= value && value <= filter[1];
+            },
+            lt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() < filter.getTime();
+                else
+                    return value < filter;
+            },
+            lte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() <= filter.getTime();
+                else
+                    return value <= filter;
+            },
+            gt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() > filter.getTime();
+                else
+                    return value > filter;
+            },
+            gte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() >= filter.getTime();
+                else
+                    return value >= filter;
+            },
+            is: (value, filter, filterLocale) => {
+                return this.filters.equals(value, filter, filterLocale);
+            },
+            isNot: (value, filter, filterLocale) => {
+                return this.filters.notEquals(value, filter, filterLocale);
+            },
+            before: (value, filter, filterLocale) => {
+                return this.filters.lt(value, filter, filterLocale);
+            },
+            after: (value, filter, filterLocale) => {
+                return this.filters.gt(value, filter, filterLocale);
+            },
+            dateIs: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() === filter.toDateString();
+            },
+            dateIsNot: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() !== filter.toDateString();
+            },
+            dateBefore: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() < filter.getTime();
+            },
+            dateAfter: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() > filter.getTime();
+            }
+        };
+    }
+    filter(value, fields, filterValue, filterMatchMode, filterLocale) {
+        let filteredItems = [];
+        if (value) {
+            for (let item of value) {
+                for (let field of fields) {
+                    let fieldValue = ObjectUtils.resolveFieldData(item, field);
+                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {
+                        filteredItems.push(item);
+                        break;
+                    }
+                }
+            }
+        }
+        return filteredItems;
+    }
+    register(rule, fn) {
+        this.filters[rule] = fn;
+    }
+}
+FilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+FilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class ContextMenuService {
+    constructor() {
+        this.activeItemKeyChange = new Subject();
+        this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();
+    }
+    changeKey(key) {
+        this.activeItemKey = key;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+    reset() {
+        this.activeItemKey = null;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+}
+ContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, decorators: [{
+            type: Injectable
+        }] });
+
+class MessageService {
+    constructor() {
+        this.messageSource = new Subject();
+        this.clearSource = new Subject();
+        this.messageObserver = this.messageSource.asObservable();
+        this.clearObserver = this.clearSource.asObservable();
+    }
+    add(message) {
+        if (message) {
+            this.messageSource.next(message);
+        }
+    }
+    addAll(messages) {
+        if (messages && messages.length) {
+            this.messageSource.next(messages);
+        }
+    }
+    clear(key) {
+        this.clearSource.next(key || null);
+    }
+}
+MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, decorators: [{
+            type: Injectable
+        }] });
+
+class OverlayService {
+    constructor() {
+        this.clickSource = new Subject();
+        this.clickObservable = this.clickSource.asObservable();
+    }
+    add(event) {
+        if (event) {
+            this.clickSource.next(event);
+        }
+    }
+}
+OverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+OverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class PrimeIcons {
+}
+PrimeIcons.ALIGN_CENTER = 'pi pi-align-center';
+PrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';
+PrimeIcons.ALIGN_LEFT = 'pi pi-align-left';
+PrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';
+PrimeIcons.AMAZON = 'pi pi-amazon';
+PrimeIcons.ANDROID = 'pi pi-android';
+PrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';
+PrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';
+PrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';
+PrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';
+PrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';
+PrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';
+PrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';
+PrimeIcons.ANGLE_UP = 'pi pi-angle-up';
+PrimeIcons.APPLE = 'pi pi-apple';
+PrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';
+PrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';
+PrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';
+PrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';
+PrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';
+PrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';
+PrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';
+PrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';
+PrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';
+PrimeIcons.ARROW_UP = 'pi pi-arrow-up';
+PrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';
+PrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';
+PrimeIcons.ARROW_H = 'pi pi-arrow-h';
+PrimeIcons.ARROW_V = 'pi pi-arrow-v';
+PrimeIcons.AT = 'pi pi-at';
+PrimeIcons.BACKWARD = 'pi pi-backward';
+PrimeIcons.BAN = 'pi pi-ban';
+PrimeIcons.BARS = 'pi pi-bars';
+PrimeIcons.BELL = 'pi pi-bell';
+PrimeIcons.BOLT = 'pi pi-bolt';
+PrimeIcons.BOOK = 'pi pi-book';
+PrimeIcons.BOOKMARK = 'pi pi-bookmark';
+PrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';
+PrimeIcons.BOX = 'pi pi-box';
+PrimeIcons.BRIEFCASE = 'pi pi-briefcase';
+PrimeIcons.BUILDING = 'pi pi-building';
+PrimeIcons.CALENDAR = 'pi pi-calendar';
+PrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';
+PrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';
+PrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';
+PrimeIcons.CAMERA = 'pi pi-camera';
+PrimeIcons.CAR = 'pi pi-car';
+PrimeIcons.CARET_DOWN = 'pi pi-caret-down';
+PrimeIcons.CARET_LEFT = 'pi pi-caret-left';
+PrimeIcons.CARET_RIGHT = 'pi pi-caret-right';
+PrimeIcons.CARET_UP = 'pi pi-caret-up';
+PrimeIcons.CHART_BAR = 'pi pi-chart-bar';
+PrimeIcons.CHART_LINE = 'pi pi-chart-line';
+PrimeIcons.CHART_PIE = 'pi pi-chart-pie';
+PrimeIcons.CHECK = 'pi pi-check';
+PrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';
+PrimeIcons.CHECK_SQUARE = 'pi pi-check-square';
+PrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';
+PrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';
+PrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';
+PrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';
+PrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';
+PrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';
+PrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';
+PrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';
+PrimeIcons.CIRCLE = 'pi pi-circle';
+PrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';
+PrimeIcons.CLOCK = 'pi pi-clock';
+PrimeIcons.CLONE = 'pi pi-clone';
+PrimeIcons.CLOUD = 'pi pi-cloud';
+PrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';
+PrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';
+PrimeIcons.CODE = 'pi pi-code';
+PrimeIcons.COG = 'pi pi-cog';
+PrimeIcons.COMMENT = 'pi pi-comment';
+PrimeIcons.COMMENTS = 'pi pi-comments';
+PrimeIcons.COMPASS = 'pi pi-compass';
+PrimeIcons.COPY = 'pi pi-copy';
+PrimeIcons.CREDIT_CARD = 'pi pi-credit-card';
+PrimeIcons.DATABASE = 'pi pi-database';
+PrimeIcons.DESKTOP = 'pi pi-desktop';
+PrimeIcons.DIRECTIONS = 'pi pi-directions';
+PrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';
+PrimeIcons.DISCORD = 'pi pi-discord';
+PrimeIcons.DOLLAR = 'pi pi-dollar';
+PrimeIcons.DOWNLOAD = 'pi pi-download';
+PrimeIcons.EJECT = 'pi pi-eject';
+PrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';
+PrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';
+PrimeIcons.ENVELOPE = 'pi pi-envelope';
+PrimeIcons.EURO = 'pi pi-euro';
+PrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';
+PrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';
+PrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';
+PrimeIcons.EYE = 'pi pi-eye';
+PrimeIcons.EYE_SLASH = 'pi pi-eye-slash';
+PrimeIcons.FACEBOOK = 'pi pi-facebook';
+PrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';
+PrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';
+PrimeIcons.FILE = 'pi pi-file';
+PrimeIcons.FILE_EXCEL = 'pi pi-file-excel';
+PrimeIcons.FILE_PDF = 'pi pi-file-pdf';
+PrimeIcons.FILTER = 'pi pi-filter';
+PrimeIcons.FILTER_FILL = 'pi pi-filter-fill';
+PrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';
+PrimeIcons.FLAG = 'pi pi-flag';
+PrimeIcons.FLAG_FILL = 'pi pi-flag-fill';
+PrimeIcons.FOLDER = 'pi pi-folder';
+PrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';
+PrimeIcons.FORWARD = 'pi pi-forward';
+PrimeIcons.GITHUB = 'pi pi-github';
+PrimeIcons.GLOBE = 'pi pi-globe';
+PrimeIcons.GOOGLE = 'pi pi-google';
+PrimeIcons.HASHTAG = 'pi pi-hashtag';
+PrimeIcons.HEART = 'pi pi-heart';
+PrimeIcons.HEART_FILL = 'pi pi-heart-fill';
+PrimeIcons.HISTORY = 'pi pi-history';
+PrimeIcons.HOME = 'pi pi-home';
+PrimeIcons.ID_CARD = 'pi pi-id-card';
+PrimeIcons.IMAGE = 'pi pi-image';
+PrimeIcons.IMAGES = 'pi pi-images';
+PrimeIcons.INBOX = 'pi pi-inbox';
+PrimeIcons.INFO = 'pi pi-info';
+PrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';
+PrimeIcons.INSTAGRAM = 'pi pi-instagram';
+PrimeIcons.KEY = 'pi pi-key';
+PrimeIcons.LINK = 'pi pi-link';
+PrimeIcons.LINKEDIN = 'pi pi-linkedin';
+PrimeIcons.LIST = 'pi pi-list';
+PrimeIcons.LOCK = 'pi pi-lock';
+PrimeIcons.LOCK_OPEN = 'pi pi-lock-open';
+PrimeIcons.MAP = 'pi pi-map';
+PrimeIcons.MAP_MARKER = 'pi pi-map-marker';
+PrimeIcons.MICROSOFT = 'pi pi-microsoft';
+PrimeIcons.MINUS = 'pi pi-minus';
+PrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';
+PrimeIcons.MOBILE = 'pi pi-mobile';
+PrimeIcons.MONEY_BILL = 'pi pi-money-bill';
+PrimeIcons.MOON = 'pi pi-moon';
+PrimeIcons.PALETTE = 'pi pi-palette';
+PrimeIcons.PAPERCLIP = 'pi pi-paperclip';
+PrimeIcons.PAUSE = 'pi pi-pause';
+PrimeIcons.PAYPAL = 'pi pi-paypal';
+PrimeIcons.PENCIL = 'pi pi-pencil';
+PrimeIcons.PERCENTAGE = 'pi pi-percentage';
+PrimeIcons.PHONE = 'pi pi-phone';
+PrimeIcons.PLAY = 'pi pi-play';
+PrimeIcons.PLUS = 'pi pi-plus';
+PrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';
+PrimeIcons.POUND = 'pi pi-pound';
+PrimeIcons.POWER_OFF = 'pi pi-power-off';
+PrimeIcons.PRIME = 'pi pi-prime';
+PrimeIcons.PRINT = 'pi pi-print';
+PrimeIcons.QRCODE = 'pi pi-qrcode';
+PrimeIcons.QUESTION = 'pi pi-question';
+PrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';
+PrimeIcons.REDDIT = 'pi pi-reddit';
+PrimeIcons.REFRESH = 'pi pi-refresh';
+PrimeIcons.REPLAY = 'pi pi-replay';
+PrimeIcons.REPLY = 'pi pi-reply';
+PrimeIcons.SAVE = 'pi pi-save';
+PrimeIcons.SEARCH = 'pi pi-search';
+PrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';
+PrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';
+PrimeIcons.SEND = 'pi pi-send';
+PrimeIcons.SERVER = 'pi pi-server';
+PrimeIcons.SHARE_ALT = 'pi pi-share-alt';
+PrimeIcons.SHIELD = 'pi pi-shield';
+PrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';
+PrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';
+PrimeIcons.SIGN_IN = 'pi pi-sign-in';
+PrimeIcons.SIGN_OUT = 'pi pi-sign-out';
+PrimeIcons.SITEMAP = 'pi pi-sitemap';
+PrimeIcons.SLACK = 'pi pi-slack';
+PrimeIcons.SLIDERS_H = 'pi pi-sliders-h';
+PrimeIcons.SLIDERS_V = 'pi pi-sliders-v';
+PrimeIcons.SORT = 'pi pi-sort';
+PrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';
+PrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';
+PrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';
+PrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';
+PrimeIcons.SORT_ALT = 'pi pi-sort-alt';
+PrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';
+PrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';
+PrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';
+PrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';
+PrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';
+PrimeIcons.SORT_DOWN = 'pi pi-sort-down';
+PrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';
+PrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';
+PrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';
+PrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';
+PrimeIcons.SORT_UP = 'pi pi-sort-up';
+PrimeIcons.SPINNER = 'pi pi-spinner';
+PrimeIcons.STAR = 'pi pi-star';
+PrimeIcons.STAR_FILL = 'pi pi-star-fill';
+PrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';
+PrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';
+PrimeIcons.STEP_FORWARD = 'pi pi-step-forward';
+PrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';
+PrimeIcons.STOP = 'pi pi-stop';
+PrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';
+PrimeIcons.SUN = 'pi pi-sun';
+PrimeIcons.SYNC = 'pi pi-sync';
+PrimeIcons.TABLE = 'pi pi-table';
+PrimeIcons.TABLET = 'pi pi-tablet';
+PrimeIcons.TAG = 'pi pi-tag';
+PrimeIcons.TAGS = 'pi pi-tags';
+PrimeIcons.TELEGRAM = 'pi pi-telegram';
+PrimeIcons.TH_LARGE = 'pi pi-th-large';
+PrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';
+PrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';
+PrimeIcons.TICKET = 'pi pi-ticket';
+PrimeIcons.TIMES = 'pi pi-times';
+PrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';
+PrimeIcons.TRASH = 'pi pi-trash';
+PrimeIcons.TWITTER = 'pi pi-twitter';
+PrimeIcons.UNDO = 'pi pi-undo';
+PrimeIcons.UNLOCK = 'pi pi-unlock';
+PrimeIcons.UPLOAD = 'pi pi-upload';
+PrimeIcons.USER = 'pi pi-user';
+PrimeIcons.USER_EDIT = 'pi pi-user-edit';
+PrimeIcons.USER_MINUS = 'pi pi-user-minus';
+PrimeIcons.USER_PLUS = 'pi pi-user-plus';
+PrimeIcons.USERS = 'pi pi-users';
+PrimeIcons.VIDEO = 'pi pi-video';
+PrimeIcons.VIMEO = 'pi pi-vimeo';
+PrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';
+PrimeIcons.VOLUME_OFF = 'pi pi-volume-off';
+PrimeIcons.VOLUME_UP = 'pi pi-volume-up';
+PrimeIcons.WALLET = 'pi pi-wallet';
+PrimeIcons.WHATSAPP = 'pi pi-whatsapp';
+PrimeIcons.WIFI = 'pi pi-wifi';
+PrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';
+PrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';
+PrimeIcons.YOUTUBE = 'pi pi-youtube';
+
+class FilterOperator {
+}
+FilterOperator.AND = 'and';
+FilterOperator.OR = 'or';
+
+class Header {
+}
+Header.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Header.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Header, selector: "p-header", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-header',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+class Footer {
+}
+Footer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Footer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Footer, selector: "p-footer", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-footer',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+class PrimeTemplate {
+    constructor(template) {
+        this.template = template;
+    }
+    getType() {
+        return this.name;
+    }
+}
+PrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
+PrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PrimeTemplate, selector: "[pTemplate]", inputs: { type: "type", name: ["pTemplate", "name"] }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTemplate]',
+                    host: {}
+                }]
+        }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], name: [{
+                type: Input,
+                args: ['pTemplate']
+            }] } });
+class SharedModule {
+}
+SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });
+SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Header, Footer, PrimeTemplate],
+                    declarations: [Header, Footer, PrimeTemplate]
+                }]
+        }] });
+
+class TreeDragDropService {
+    constructor() {
+        this.dragStartSource = new Subject();
+        this.dragStopSource = new Subject();
+        this.dragStart$ = this.dragStartSource.asObservable();
+        this.dragStop$ = this.dragStopSource.asObservable();
+    }
+    startDrag(event) {
+        this.dragStartSource.next(event);
+    }
+    stopDrag(event) {
+        this.dragStopSource.next(event);
+    }
+}
+TreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, decorators: [{
+            type: Injectable
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-api.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-api.mjs","sources":["../../src/app/components/api/filtermatchmode.ts","../../src/app/components/api/primengconfig.ts","../../src/app/components/api/translationkeys.ts","../../src/app/components/api/confirmaeventtype.ts","../../src/app/components/api/confirmationservice.ts","../../src/app/components/api/filterservice.ts","../../src/app/components/api/contextmenuservice.ts","../../src/app/components/api/messageservice.ts","../../src/app/components/api/overlayservice.ts","../../src/app/components/api/primeicons.ts","../../src/app/components/api/filteroperator.ts","../../src/app/components/api/shared.ts","../../src/app/components/api/treedragdropservice.ts","../../src/app/components/api/primeng-api.ts"],"sourcesContent":["export class FilterMatchMode {\n    public static readonly STARTS_WITH = 'startsWith';\n    public static readonly CONTAINS = 'contains';\n    public static readonly NOT_CONTAINS = 'notContains';\n    public static readonly ENDS_WITH = 'endsWith';\n    public static readonly EQUALS = 'equals';\n    public static readonly NOT_EQUALS = 'notEquals';\n    public static readonly IN = 'in';\n    public static readonly LESS_THAN = 'lt';\n    public static readonly LESS_THAN_OR_EQUAL_TO = 'lte';\n    public static readonly GREATER_THAN = 'gt';\n    public static readonly GREATER_THAN_OR_EQUAL_TO = 'gte';\n    public static readonly BETWEEN = 'between';\n    public static readonly IS = 'is';\n    public static readonly IS_NOT = 'isNot';\n    public static readonly BEFORE = 'before';\n    public static readonly AFTER = 'after';\n    public static readonly DATE_IS = 'dateIs';\n    public static readonly DATE_IS_NOT = 'dateIsNot';\n    public static readonly DATE_BEFORE = 'dateBefore';\n    public static readonly DATE_AFTER = 'dateAfter';\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FilterMatchMode } from './filtermatchmode';\nimport { Translation } from './translation';\n\n@Injectable({providedIn: 'root'})\nexport class PrimeNGConfig {\n\n    ripple: boolean = false;\n\n    filterMatchModeOptions = {\n        text: [\n            FilterMatchMode.STARTS_WITH,\n            FilterMatchMode.CONTAINS,\n            FilterMatchMode.NOT_CONTAINS,\n            FilterMatchMode.ENDS_WITH,\n            FilterMatchMode.EQUALS,\n            FilterMatchMode.NOT_EQUALS\n        ],\n        numeric: [\n            FilterMatchMode.EQUALS,\n            FilterMatchMode.NOT_EQUALS,\n            FilterMatchMode.LESS_THAN,\n            FilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n            FilterMatchMode.GREATER_THAN,\n            FilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n        ],\n        date: [\n            FilterMatchMode.DATE_IS,\n            FilterMatchMode.DATE_IS_NOT,\n            FilterMatchMode.DATE_BEFORE,\n            FilterMatchMode.DATE_AFTER\n        ]\n    };\n\n    private translation: Translation = {\n        startsWith: 'Starts with',\n        contains: 'Contains',\n        notContains: 'Not contains',\n        endsWith: 'Ends with',\n        equals: 'Equals',\n        notEquals: 'Not equals',\n        noFilter: 'No Filter',\n        lt: 'Less than',\n        lte: 'Less than or equal to',\n        gt: 'Greater than',\n        gte: 'Greater than or equal to',\n        is: 'Is',\n        isNot: 'Is not',\n        before: 'Before',\n        after: 'After',\n        dateIs: 'Date is',\n        dateIsNot: 'Date is not',\n        dateBefore: 'Date is before',\n        dateAfter: 'Date is after',\n        clear: 'Clear',\n        apply: 'Apply',\n        matchAll: 'Match All',\n        matchAny: 'Match Any',\n        addRule: 'Add Rule',\n        removeRule: 'Remove Rule',\n        accept: 'Yes',\n        reject: 'No',\n        choose: 'Choose',\n        upload: 'Upload',\n        cancel: 'Cancel',\n        dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n        dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        dayNamesMin: [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],\n        monthNames: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\n        monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n        dateFormat: 'mm/dd/yy',\n        today: 'Today',\n        weekHeader: 'Wk',\n        weak: 'Weak',\n        medium: 'Medium',\n        strong: 'Strong',\n        passwordPrompt: 'Enter a password',\n        emptyMessage: 'No results found',\n        emptyFilterMessage: 'No results found'\n    }\n\n    zIndex = {\n        modal: 1100,\n        overlay: 1000,\n        menu: 1000,\n        tooltip: 1100\n    }\n\n    private translationSource = new Subject<any>();\n\n    translationObserver = this.translationSource.asObservable();\n\n    getTranslation(key: string) {\n        return this.translation[key];\n    }\n\n    setTranslation(value: Translation) {\n        this.translation = {...this.translation, ...value};\n        this.translationSource.next(this.translation);\n    }\n}\n","export class TranslationKeys {\n    public static readonly STARTS_WITH = 'startsWith';\n    public static readonly CONTAINS = 'contains';\n    public static readonly NOT_CONTAINS = 'notContains';\n    public static readonly ENDS_WITH = 'endsWith';\n    public static readonly EQUALS = 'equals';\n    public static readonly NOT_EQUALS = 'notEquals';\n    public static readonly NO_FILTER = 'noFilter';\n    public static readonly LT = 'lt';\n    public static readonly LTE = 'lte';\n    public static readonly GT = 'gt';\n    public static readonly GTE = 'gte';\n    public static readonly IS = 'is';\n    public static readonly IS_NOT = 'isNot';\n    public static readonly BEFORE = 'before';\n    public static readonly AFTER = 'after';\n    public static readonly CLEAR = 'clear';\n    public static readonly APPLY = 'apply';\n    public static readonly MATCH_ALL = 'matchAll';\n    public static readonly MATCH_ANY = 'matchAny';\n    public static readonly ADD_RULE = 'addRule';\n    public static readonly REMOVE_RULE = 'removeRule';\n    public static readonly ACCEPT = 'accept';\n    public static readonly REJECT = 'reject';\n    public static readonly CHOOSE = 'choose';\n    public static readonly UPLOAD = 'upload';\n    public static readonly CANCEL = 'cancel';\n    public static readonly DAY_NAMES = 'dayNames';\n    public static readonly DAY_NAMES_SHORT = 'dayNamesShort';\n    public static readonly DAY_NAMES_MIN = 'dayNamesMin';\n    public static readonly MONTH_NAMES = 'monthNames';\n    public static readonly MONTH_NAMES_SHORT = 'monthNamesShort';\n    public static readonly TODAY = 'today';\n    public static readonly WEEK_HEADER = 'weekHeader';\n    public static readonly WEAK = 'weak';\n    public static readonly MEDIUM = 'medium';\n    public static readonly STRONG = 'strong';\n    public static readonly PASSWORD_PROMPT = 'passwordPrompt';\n    public static readonly EMPTY_MESSAGE = 'emptyMessage';\n    public static readonly EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n}","export enum ConfirmEventType {\n    ACCEPT, \n    REJECT, \n    CANCEL\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Confirmation } from './confirmation';\n\n@Injectable()\nexport class ConfirmationService {\n\n    private requireConfirmationSource = new Subject<Confirmation>();\n    private acceptConfirmationSource = new Subject<Confirmation>();\n\n    requireConfirmation$ = this.requireConfirmationSource.asObservable();\n    accept = this.acceptConfirmationSource.asObservable();\n\n    confirm(confirmation: Confirmation) {\n        this.requireConfirmationSource.next(confirmation);\n        return this;\n    }\n\n    close() {\n        this.requireConfirmationSource.next(null);\n        return this;\n    }\n\n    onAccept() {\n        this.acceptConfirmationSource.next(null);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Injectable({providedIn: 'root'})\nexport class FilterService {\n\n    filter(value: any[], fields: any[], filterValue: any, filterMatchMode: string, filterLocale?: string) {\n        let filteredItems: any[] = [];\n\n        if (value) {\n            for (let item of value) {\n                for (let field of fields) {\n                    let fieldValue = ObjectUtils.resolveFieldData(item, field);\n\n                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n                        filteredItems.push(item);\n                        break;\n                    }\n                }\n            }\n        }\n\n        return filteredItems;\n    }\n    \n    public filters = {\n        startsWith: (value, filter, filterLocale?):boolean =>  {\n            if (filter === undefined || filter === null || filter.trim() === '') {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.slice(0, filterValue.length) === filterValue;\n        },\n\n        contains: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue) !== -1;\n        },\n\n        notContains: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue) === -1;\n        },\n\n        endsWith: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || filter.trim() === '') {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n        },\n\n        equals: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() === filter.getTime();\n            else\n                return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        },\n\n        notEquals: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return false;\n            }\n    \n            if (value === undefined || value === null) {\n                return true;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() !== filter.getTime();\n            else\n                return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        },\n\n        in: (value, filter: any[]):boolean => {\n            if (filter === undefined || filter === null || filter.length === 0) {\n                return true;\n            }\n    \n            for (let i = 0; i < filter.length; i++) {\n                if (ObjectUtils.equals(value, filter[i])) {\n                    return true;\n                }\n            }\n    \n            return false;\n        },\n\n        between: (value, filter: any[]):boolean => {\n            if (filter == null || filter[0] == null || filter[1] == null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime)\n            return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n            else\n                return filter[0] <= value && value <= filter[1];\n        },\n\n        lt: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() < filter.getTime();\n            else\n                return value < filter;\n        },\n\n        lte: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() <= filter.getTime();\n            else\n                return value <= filter;\n        },\n\n        gt: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() > filter.getTime();\n            else\n                return value > filter;\n        },\n\n        gte: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() >= filter.getTime();\n            else\n                return value >= filter;\n        },\n\n        is: (value, filter, filterLocale?):boolean => {\n            return this.filters.equals(value, filter, filterLocale);\n        },\n\n        isNot: (value, filter, filterLocale?): boolean => {\n            return this.filters.notEquals(value, filter, filterLocale);\n        },\n\n        before: (value, filter, filterLocale?): boolean => {\n            return this.filters.lt(value, filter, filterLocale);\n        },\n\n        after: (value, filter, filterLocale?): boolean => {\n            return this.filters.gt(value, filter, filterLocale);\n        },\n\n        dateIs: (value, filter): boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.toDateString() === filter.toDateString();\n        },\n\n        dateIsNot: (value, filter): boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.toDateString() !== filter.toDateString();\n        },\n\n        dateBefore: (value, filter): boolean =>  {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.getTime() < filter.getTime();\n        },\n\n        dateAfter: (value, filter): boolean =>  {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.getTime() > filter.getTime();\n        }\n    \n    }\n\n    register(rule: string, fn: Function) {\n        this.filters[rule] = fn;\n    }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ContextMenuService {\n\n    private activeItemKeyChange = new Subject<string>();\n\n    activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n\n    activeItemKey: string;\n\n    changeKey(key) {\n        this.activeItemKey = key;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n\n    reset() {\n        this.activeItemKey = null;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Message } from './message';\n\n@Injectable()\nexport class MessageService {\n    \n    private messageSource = new Subject<Message|Message[]>();\n    private clearSource = new Subject<string>();\n    \n    messageObserver = this.messageSource.asObservable();\n    clearObserver = this.clearSource.asObservable();\n    \n    add(message: Message) {\n        if (message) {\n            this.messageSource.next(message);\n        }\n    }\n    \n    addAll(messages: Message[]) {\n        if (messages && messages.length) {\n            this.messageSource.next(messages);\n        } \n    }\n    \n    clear(key?: string) {\n        this.clearSource.next(key||null);\n    }\n    \n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Message } from './message';\n\n@Injectable({providedIn: 'root'})\nexport class OverlayService {\n\n    private clickSource = new Subject<Message|Message[]>();\n\n    clickObservable = this.clickSource.asObservable();\n\n    add(event) {\n        if (event) {\n            this.clickSource.next(event);\n        }\n    }\n}\n","export class PrimeIcons {\n    public static readonly ALIGN_CENTER = 'pi pi-align-center';\n    public static readonly ALIGN_JUSTIFY = 'pi pi-align-justify';\n    public static readonly ALIGN_LEFT = 'pi pi-align-left';\n    public static readonly ALIGN_RIGHT = 'pi pi-align-right';\n    public static readonly AMAZON = 'pi pi-amazon';\n    public static readonly ANDROID = 'pi pi-android';\n    public static readonly ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\n    public static readonly ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\n    public static readonly ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\n    public static readonly ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\n    public static readonly ANGLE_DOWN = 'pi pi-angle-down';\n    public static readonly ANGLE_LEFT = 'pi pi-angle-left';\n    public static readonly ANGLE_RIGHT = 'pi pi-angle-right';\n    public static readonly ANGLE_UP = 'pi pi-angle-up';\n    public static readonly APPLE = 'pi pi-apple';\n    public static readonly ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\n    public static readonly ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\n    public static readonly ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\n    public static readonly ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\n    public static readonly ARROW_DOWN = 'pi pi-arrow-down';\n    public static readonly ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\n    public static readonly ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\n    public static readonly ARROW_LEFT = 'pi pi-arrow-left';\n    public static readonly ARROW_RIGHT = 'pi pi-arrow-right';\n    public static readonly ARROW_UP = 'pi pi-arrow-up';\n    public static readonly ARROW_UP_LEFT = 'pi pi-arrow-up-left';\n    public static readonly ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\n    public static readonly ARROW_H = 'pi pi-arrow-h';\n    public static readonly ARROW_V = 'pi pi-arrow-v';\n    public static readonly AT = 'pi pi-at';\n    public static readonly BACKWARD = 'pi pi-backward';\n    public static readonly BAN = 'pi pi-ban';\n    public static readonly BARS = 'pi pi-bars';\n    public static readonly BELL = 'pi pi-bell';\n    public static readonly BOLT = 'pi pi-bolt';\n    public static readonly BOOK = 'pi pi-book';\n    public static readonly BOOKMARK = 'pi pi-bookmark';\n    public static readonly BOOKMARK_FILL = 'pi pi-bookmark-fill';\n    public static readonly BOX = 'pi pi-box';\n    public static readonly BRIEFCASE = 'pi pi-briefcase';\n    public static readonly BUILDING = 'pi pi-building';\n    public static readonly CALENDAR = 'pi pi-calendar';\n    public static readonly CALENDAR_MINUS = 'pi pi-calendar-minus';\n    public static readonly CALENDAR_PLUS = 'pi pi-calendar-plus';\n    public static readonly CALENDAR_TIMES = 'pi pi-calendar-times';\n    public static readonly CAMERA = 'pi pi-camera';\n    public static readonly CAR = 'pi pi-car';\n    public static readonly CARET_DOWN = 'pi pi-caret-down';\n    public static readonly CARET_LEFT = 'pi pi-caret-left';\n    public static readonly CARET_RIGHT = 'pi pi-caret-right';\n    public static readonly CARET_UP = 'pi pi-caret-up';\n    public static readonly CHART_BAR = 'pi pi-chart-bar';\n    public static readonly CHART_LINE = 'pi pi-chart-line';\n    public static readonly CHART_PIE = 'pi pi-chart-pie';\n    public static readonly CHECK = 'pi pi-check';\n    public static readonly CHECK_CIRCLE = 'pi pi-check-circle';\n    public static readonly CHECK_SQUARE = 'pi pi-check-square';\n    public static readonly CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\n    public static readonly CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\n    public static readonly CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\n    public static readonly CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\n    public static readonly CHEVRON_DOWN = 'pi pi-chevron-down';\n    public static readonly CHEVRON_LEFT = 'pi pi-chevron-left';\n    public static readonly CHEVRON_RIGHT = 'pi pi-chevron-right';\n    public static readonly CHEVRON_UP = 'pi pi-chevron-up';\n    public static readonly CIRCLE = 'pi pi-circle';\n    public static readonly CIRCLE_FILL = 'pi pi-circle-fill';\n    public static readonly CLOCK = 'pi pi-clock';\n    public static readonly CLONE = 'pi pi-clone';\n    public static readonly CLOUD = 'pi pi-cloud';\n    public static readonly CLOUD_DOWNLOAD = 'pi pi-cloud-download';\n    public static readonly CLOUD_UPLOAD = 'pi pi-cloud-upload';\n    public static readonly CODE = 'pi pi-code';\n    public static readonly COG = 'pi pi-cog';\n    public static readonly COMMENT = 'pi pi-comment';\n    public static readonly COMMENTS = 'pi pi-comments';\n    public static readonly COMPASS = 'pi pi-compass';\n    public static readonly COPY = 'pi pi-copy';\n    public static readonly CREDIT_CARD = 'pi pi-credit-card';\n    public static readonly DATABASE = 'pi pi-database';\n    public static readonly DESKTOP = 'pi pi-desktop';\n    public static readonly DIRECTIONS = 'pi pi-directions';\n    public static readonly DIRECTIONS_ALT = 'pi pi-directions-alt';\n    public static readonly DISCORD = 'pi pi-discord';\n    public static readonly DOLLAR = 'pi pi-dollar';\n    public static readonly DOWNLOAD = 'pi pi-download';\n    public static readonly EJECT = 'pi pi-eject';\n    public static readonly ELLIPSIS_H = 'pi pi-ellipsis-h';\n    public static readonly ELLIPSIS_V = 'pi pi-ellipsis-v';\n    public static readonly ENVELOPE = 'pi pi-envelope';\n    public static readonly EURO = 'pi pi-euro';\n    public static readonly EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\n    public static readonly EXCLAMATION_TRIANGLE  = 'pi pi-exclamation-triangle';\n    public static readonly EXTERNAL_LINK = 'pi pi-external-link';\n    public static readonly EYE = 'pi pi-eye';\n    public static readonly EYE_SLASH = 'pi pi-eye-slash';\n    public static readonly FACEBOOK = 'pi pi-facebook';\n    public static readonly FAST_BACKWARD = 'pi pi-fast-backward';\n    public static readonly FAST_FORWARD = 'pi pi-fast-forward';\n    public static readonly FILE = 'pi pi-file';\n    public static readonly FILE_EXCEL = 'pi pi-file-excel';\n    public static readonly FILE_PDF = 'pi pi-file-pdf';\n    public static readonly FILTER = 'pi pi-filter';\n    public static readonly FILTER_FILL = 'pi pi-filter-fill';\n    public static readonly FILTER_SLASH = 'pi pi-filter-slash';\n    public static readonly FLAG = 'pi pi-flag';\n    public static readonly FLAG_FILL = 'pi pi-flag-fill';\n    public static readonly FOLDER = 'pi pi-folder';\n    public static readonly FOLDER_OPEN = 'pi pi-folder-open';\n    public static readonly FORWARD = 'pi pi-forward';\n    public static readonly GITHUB = 'pi pi-github';\n    public static readonly GLOBE = 'pi pi-globe';\n    public static readonly GOOGLE = 'pi pi-google';\n    public static readonly HASHTAG = 'pi pi-hashtag';\n    public static readonly HEART = 'pi pi-heart';\n    public static readonly HEART_FILL = 'pi pi-heart-fill';\n    public static readonly HISTORY = 'pi pi-history';\n    public static readonly HOME = 'pi pi-home';\n    public static readonly ID_CARD = 'pi pi-id-card';\n    public static readonly IMAGE = 'pi pi-image';\n    public static readonly IMAGES = 'pi pi-images';\n    public static readonly INBOX = 'pi pi-inbox';\n    public static readonly INFO = 'pi pi-info';\n    public static readonly INFO_CIRCLE = 'pi pi-info-circle';\n    public static readonly INSTAGRAM = 'pi pi-instagram';\n    public static readonly KEY = 'pi pi-key';\n    public static readonly LINK = 'pi pi-link';\n    public static readonly LINKEDIN = 'pi pi-linkedin';\n    public static readonly LIST = 'pi pi-list';\n    public static readonly LOCK = 'pi pi-lock';\n    public static readonly LOCK_OPEN = 'pi pi-lock-open';\n    public static readonly MAP = 'pi pi-map';\n    public static readonly MAP_MARKER = 'pi pi-map-marker';\n    public static readonly MICROSOFT = 'pi pi-microsoft';\n    public static readonly MINUS = 'pi pi-minus';\n    public static readonly MINUS_CIRCLE = 'pi pi-minus-circle';\n    public static readonly MOBILE = 'pi pi-mobile';\n    public static readonly MONEY_BILL = 'pi pi-money-bill';\n    public static readonly MOON = 'pi pi-moon';\n    public static readonly PALETTE = 'pi pi-palette';\n    public static readonly PAPERCLIP = 'pi pi-paperclip';\n    public static readonly PAUSE = 'pi pi-pause';\n    public static readonly PAYPAL = 'pi pi-paypal';\n    public static readonly PENCIL = 'pi pi-pencil';\n    public static readonly PERCENTAGE = 'pi pi-percentage';\n    public static readonly PHONE = 'pi pi-phone';\n    public static readonly PLAY = 'pi pi-play';\n    public static readonly PLUS = 'pi pi-plus';\n    public static readonly PLUS_CIRCLE = 'pi pi-plus-circle';\n    public static readonly POUND = 'pi pi-pound';\n    public static readonly POWER_OFF = 'pi pi-power-off';\n    public static readonly PRIME = 'pi pi-prime';\n    public static readonly PRINT = 'pi pi-print';\n    public static readonly QRCODE = 'pi pi-qrcode';\n    public static readonly QUESTION = 'pi pi-question';\n    public static readonly QUESTION_CIRCLE = 'pi pi-question-circle';\n    public static readonly REDDIT = 'pi pi-reddit';\n    public static readonly REFRESH = 'pi pi-refresh';\n    public static readonly REPLAY = 'pi pi-replay';\n    public static readonly REPLY = 'pi pi-reply';\n    public static readonly SAVE = 'pi pi-save';\n    public static readonly SEARCH = 'pi pi-search';\n    public static readonly SEARCH_MINUS = 'pi pi-search-minus';\n    public static readonly SEARCH_PLUS = 'pi pi-search-plus';\n    public static readonly SEND = 'pi pi-send';\n    public static readonly SERVER = 'pi pi-server';\n    public static readonly SHARE_ALT = 'pi pi-share-alt';\n    public static readonly SHIELD = 'pi pi-shield';\n    public static readonly SHOPPING_BAG = 'pi pi-shopping-bag';\n    public static readonly SHOPPING_CART = 'pi pi-shopping-cart';\n    public static readonly SIGN_IN = 'pi pi-sign-in';\n    public static readonly SIGN_OUT = 'pi pi-sign-out';\n    public static readonly SITEMAP = 'pi pi-sitemap';\n    public static readonly SLACK = 'pi pi-slack';\n    public static readonly SLIDERS_H = 'pi pi-sliders-h';\n    public static readonly SLIDERS_V = 'pi pi-sliders-v';\n    public static readonly SORT = 'pi pi-sort';\n    public static readonly SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\n    public static readonly SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\n    public static readonly SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\n    public static readonly SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\n    public static readonly SORT_ALT = 'pi pi-sort-alt';\n    public static readonly SORT_ALT_SLASH = 'pi pi-sort-slash';\n    public static readonly SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\n    public static readonly SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\n    public static readonly SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\n    public static readonly SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\n    public static readonly SORT_DOWN = 'pi pi-sort-down';\n    public static readonly SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\n    public static readonly SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\n    public static readonly SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\n    public static readonly SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\n    public static readonly SORT_UP = 'pi pi-sort-up';\n    public static readonly SPINNER = 'pi pi-spinner';\n    public static readonly STAR = 'pi pi-star';\n    public static readonly STAR_FILL = 'pi pi-star-fill';\n    public static readonly STEP_BACKWARD = 'pi pi-step-backward';\n    public static readonly STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\n    public static readonly STEP_FORWARD = 'pi pi-step-forward';\n    public static readonly STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\n    public static readonly STOP = 'pi pi-stop';\n    public static readonly STOP_CIRCLE = 'pi pi-stop-circle';\n    public static readonly SUN = 'pi pi-sun';\n    public static readonly SYNC = 'pi pi-sync';\n    public static readonly TABLE = 'pi pi-table';\n    public static readonly TABLET = 'pi pi-tablet';\n    public static readonly TAG = 'pi pi-tag';\n    public static readonly TAGS = 'pi pi-tags';\n    public static readonly TELEGRAM = 'pi pi-telegram';\n    public static readonly TH_LARGE = 'pi pi-th-large';\n    public static readonly THUMBS_DOWN = 'pi pi-thumbs-down';\n    public static readonly THUMBS_UP = 'pi pi-thumbs-up';\n    public static readonly TICKET = 'pi pi-ticket';\n    public static readonly TIMES = 'pi pi-times';\n    public static readonly TIMES_CIRCLE = 'pi pi-times-circle';\n    public static readonly TRASH = 'pi pi-trash';\n    public static readonly TWITTER = 'pi pi-twitter';\n    public static readonly UNDO = 'pi pi-undo';\n    public static readonly UNLOCK = 'pi pi-unlock';\n    public static readonly UPLOAD = 'pi pi-upload';\n    public static readonly USER = 'pi pi-user';\n    public static readonly USER_EDIT = 'pi pi-user-edit';\n    public static readonly USER_MINUS = 'pi pi-user-minus';\n    public static readonly USER_PLUS = 'pi pi-user-plus';\n    public static readonly USERS = 'pi pi-users';\n    public static readonly VIDEO = 'pi pi-video';\n    public static readonly VIMEO = 'pi pi-vimeo';\n    public static readonly VOLUME_DOWN = 'pi pi-volume-down';\n    public static readonly VOLUME_OFF = 'pi pi-volume-off';\n    public static readonly VOLUME_UP = 'pi pi-volume-up';\n    public static readonly WALLET = 'pi pi-wallet';\n    public static readonly WHATSAPP = 'pi pi-whatsapp';\n    public static readonly WIFI = 'pi pi-wifi';\n    public static readonly WINDOW_MAXIMIZE = 'pi pi-window-maximize';\n    public static readonly WINDOW_MINIMIZE = 'pi pi-window-minimize';\n    public static readonly YOUTUBE = 'pi pi-youtube'\n}\n","export class FilterOperator {\n    public static readonly AND = 'and';\n    public static readonly OR = 'or';\n}","import {NgModule,EventEmitter,Directive,Input,Output,ContentChildren,ContentChild,TemplateRef,AfterContentInit,QueryList} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Component} from '@angular/core';\n\n@Component({\n    selector: 'p-header',\n    template: '<ng-content></ng-content>'\n})\nexport class Header {}\n\n@Component({\n    selector: 'p-footer',\n    template: '<ng-content></ng-content>'\n})\nexport class Footer {}\n\n@Directive({\n    selector: '[pTemplate]',\n    host: {\n    }\n})\nexport class PrimeTemplate {\n    \n    @Input() type: string;\n    \n    @Input('pTemplate') name: string;\n    \n    constructor(public template: TemplateRef<any>) {}\n    \n    getType(): string {\n        return this.name;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Header,Footer,PrimeTemplate],\n    declarations: [Header,Footer,PrimeTemplate]\n})\nexport class SharedModule { }\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { TreeNodeDragEvent } from './treenodedragevent';\n\n@Injectable()\nexport class TreeDragDropService {\n    \n    private dragStartSource = new Subject<TreeNodeDragEvent>();\n    private dragStopSource = new Subject<TreeNodeDragEvent>();\n    \n    dragStart$ = this.dragStartSource.asObservable();\n    dragStop$ = this.dragStopSource.asObservable();\n    \n    startDrag(event: TreeNodeDragEvent) {\n        this.dragStartSource.next(event);\n    }\n    \n    stopDrag(event: TreeNodeDragEvent) {\n        this.dragStopSource.next(event);\n    }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,965 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i2 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+const AUTOCOMPLETE_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => AutoComplete),
+    multi: true
+};
+class AutoComplete {
+    constructor(el, renderer, cd, differs, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.differs = differs;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.minLength = 1;
+        this.delay = 300;
+        this.type = 'text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.dropdownIcon = "pi pi-chevron-down";
+        this.unique = true;
+        this.completeOnFocus = false;
+        this.completeMethod = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onUnselect = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onKeyUp = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.dropdownMode = 'blank';
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autocomplete = 'off';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.overlayVisible = false;
+        this.focus = false;
+        this.inputFieldValue = null;
+        this.differ = differs.find([]).create(null);
+        this.listId = UniqueComponentId() + '_list';
+    }
+    get suggestions() {
+        return this._suggestions;
+    }
+    set suggestions(val) {
+        this._suggestions = val;
+        this.handleSuggestionsChange();
+    }
+    ngAfterViewChecked() {
+        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated
+        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {
+            setTimeout(() => {
+                if (this.overlay) {
+                    this.alignOverlay();
+                }
+            }, 1);
+            this.suggestionsUpdated = false;
+        }
+        if (this.highlightOptionChanged) {
+            setTimeout(() => {
+                if (this.overlay && this.itemsWrapper) {
+                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+                    if (listItem) {
+                        DomHandler.scrollInView(this.itemsWrapper, listItem);
+                    }
+                    if (this.virtualScroll && this.viewPort) {
+                        let range = this.viewPort.getRenderedRange();
+                        this.updateVirtualScrollSelectedIndex();
+                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                        }
+                    }
+                }
+            }, 1);
+            this.highlightOptionChanged = false;
+        }
+    }
+    handleSuggestionsChange() {
+        if (this._suggestions != null && this.loading) {
+            this.highlightOption = null;
+            if (this._suggestions.length) {
+                this.noResults = false;
+                this.show();
+                this.suggestionsUpdated = true;
+                if (this.autoHighlight) {
+                    this.highlightOption = this._suggestions[0];
+                }
+            }
+            else {
+                this.noResults = true;
+                if (this.showEmptyMessage) {
+                    this.show();
+                    this.suggestionsUpdated = true;
+                }
+                else {
+                    this.hide();
+                }
+            }
+            this.loading = false;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    updateVirtualScrollSelectedIndex() {
+        if (this.highlightOption && this.suggestions && this.suggestions.length) {
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.filled = this.value && this.value != '';
+        this.updateInputField();
+        this.cd.markForCheck();
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInput(event) {
+        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.
+        if (!this.inputKeyDown && DomHandler.isIE()) {
+            return;
+        }
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+        }
+        let value = event.target.value;
+        if (!this.multiple && !this.forceSelection) {
+            this.onModelChange(value);
+        }
+        if (value.length === 0 && !this.multiple) {
+            this.hide();
+            this.onClear.emit(event);
+            this.onModelChange(value);
+        }
+        if (value.length >= this.minLength) {
+            this.timeout = setTimeout(() => {
+                this.search(event, value);
+            }, this.delay);
+        }
+        else {
+            this.hide();
+        }
+        this.updateFilledState();
+        this.inputKeyDown = false;
+    }
+    onInputClick(event) {
+        if (this.documentClickListener) {
+            this.inputClick = true;
+        }
+    }
+    search(event, query) {
+        //allow empty string but not undefined or null
+        if (query === undefined || query === null) {
+            return;
+        }
+        this.loading = true;
+        this.completeMethod.emit({
+            originalEvent: event,
+            query: query
+        });
+    }
+    selectItem(option, focus = true) {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.multiple) {
+            this.multiInputEL.nativeElement.value = '';
+            this.value = this.value || [];
+            if (!this.isSelected(option) || !this.unique) {
+                this.value = [...this.value, option];
+                this.onModelChange(this.value);
+            }
+        }
+        else {
+            this.inputEL.nativeElement.value = this.resolveFieldData(option);
+            this.value = option;
+            this.onModelChange(this.value);
+        }
+        this.onSelect.emit(option);
+        this.updateFilledState();
+        if (focus) {
+            this.itemClicked = true;
+            this.focusInput();
+        }
+    }
+    show() {
+        if (this.multiInputEL || this.inputEL) {
+            let hasFocus = this.multiple ?
+                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :
+                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;
+            if (!this.overlayVisible && hasFocus) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';
+            }
+        }
+    }
+    resolveFieldData(value) {
+        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;
+        return data !== (null || undefined) ? data : '';
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+        else
+            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    handleDropdownClick(event) {
+        if (!this.overlayVisible) {
+            this.focusInput();
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            if (this.dropdownMode === 'blank')
+                this.search(event, '');
+            else if (this.dropdownMode === 'current')
+                this.search(event, queryValue);
+            this.onDropdownClick.emit({
+                originalEvent: event,
+                query: queryValue
+            });
+        }
+        else {
+            this.hide();
+        }
+    }
+    focusInput() {
+        if (this.multiple)
+            this.multiInputEL.nativeElement.focus();
+        else
+            this.inputEL.nativeElement.focus();
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    removeItem(item) {
+        let itemIndex = DomHandler.index(item);
+        let removedValue = this.value[itemIndex];
+        this.value = this.value.filter((val, i) => i != itemIndex);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+        this.onUnselect.emit(removedValue);
+    }
+    onKeydown(event) {
+        if (this.overlayVisible) {
+            switch (event.which) {
+                //down
+                case 40:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let nextItemIndex = highlightItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex != -1) {
+                            var nextItemIndex = highlightItemIndex + 1;
+                            if (nextItemIndex != (this.suggestions.length)) {
+                                this.highlightOption = this.suggestions[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.suggestions[0];
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //up
+                case 38:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let prevItemIndex = highlightItemIndex.itemIndex - 1;
+                            if (prevItemIndex >= 0) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (prevItemIndex < 0) {
+                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];
+                                if (prevGroup) {
+                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];
+                                    this.highlightOptionChanged = true;
+                                }
+                            }
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex > 0) {
+                            let prevItemIndex = highlightItemIndex - 1;
+                            this.highlightOption = this.suggestions[prevItemIndex];
+                            this.highlightOptionChanged = true;
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //enter
+                case 13:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                        this.hide();
+                    }
+                    event.preventDefault();
+                    break;
+                //escape
+                case 27:
+                    this.hide();
+                    event.preventDefault();
+                    break;
+                //tab
+                case 9:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                    }
+                    this.hide();
+                    break;
+            }
+        }
+        else {
+            if (event.which === 40 && this.suggestions) {
+                this.search(event, event.target.value);
+            }
+        }
+        if (this.multiple) {
+            switch (event.which) {
+                //backspace
+                case 8:
+                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {
+                        this.value = [...this.value];
+                        const removedValue = this.value.pop();
+                        this.onModelChange(this.value);
+                        this.updateFilledState();
+                        this.onUnselect.emit(removedValue);
+                    }
+                    break;
+            }
+        }
+        this.inputKeyDown = true;
+    }
+    onKeyup(event) {
+        this.onKeyUp.emit(event);
+    }
+    onInputFocus(event) {
+        if (!this.itemClicked && this.completeOnFocus) {
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            this.search(event, queryValue);
+        }
+        this.focus = true;
+        this.onFocus.emit(event);
+        this.itemClicked = false;
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputChange(event) {
+        if (this.forceSelection) {
+            let valid = false;
+            let inputValue = event.target.value.trim();
+            if (this.suggestions) {
+                for (let suggestion of this.suggestions) {
+                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;
+                    if (itemValue && inputValue === itemValue.trim()) {
+                        valid = true;
+                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {
+                            this.selectItem(suggestion, false);
+                        }, 250);
+                        break;
+                    }
+                }
+            }
+            if (!valid) {
+                if (this.multiple) {
+                    this.multiInputEL.nativeElement.value = '';
+                }
+                else {
+                    this.value = null;
+                    this.inputEL.nativeElement.value = '';
+                }
+                this.onClear.emit(event);
+                this.onModelChange(this.value);
+                this.updateFilledState();
+            }
+        }
+    }
+    onInputPaste(event) {
+        this.onKeydown(event);
+    }
+    isSelected(val) {
+        let selected = false;
+        if (this.value && this.value.length) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    selected = true;
+                    break;
+                }
+            }
+        }
+        return selected;
+    }
+    findOptionIndex(option, suggestions) {
+        let index = -1;
+        if (suggestions) {
+            for (let i = 0; i < suggestions.length; i++) {
+                if (ObjectUtils.equals(option, suggestions[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    updateFilledState() {
+        if (this.multiple)
+            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');
+        else
+            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');
+        ;
+    }
+    updateInputField() {
+        let formattedValue = this.resolveFieldData(this.value);
+        this.inputFieldValue = formattedValue;
+        if (this.inputEL && this.inputEL.nativeElement) {
+            this.inputEL.nativeElement.value = formattedValue;
+        }
+        this.updateFilledState();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (event.which === 3) {
+                    return;
+                }
+                if (!this.inputClick && !this.isDropdownClick(event)) {
+                    this.hide();
+                }
+                this.inputClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    isDropdownClick(event) {
+        if (this.dropdown) {
+            let target = event.target;
+            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);
+        }
+        else {
+            return false;
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onHide.emit();
+    }
+    ngOnDestroy() {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+AutoComplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+AutoComplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AutoComplete, selector: "p-autoComplete", inputs: { minLength: "minLength", delay: "delay", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", inputStyle: "inputStyle", inputId: "inputId", inputStyleClass: "inputStyleClass", placeholder: "placeholder", readonly: "readonly", disabled: "disabled", virtualScroll: "virtualScroll", itemSize: "itemSize", maxlength: "maxlength", name: "name", required: "required", size: "size", appendTo: "appendTo", autoHighlight: "autoHighlight", forceSelection: "forceSelection", type: "type", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", ariaLabel: "ariaLabel", dropdownAriaLabel: "dropdownAriaLabel", ariaLabelledBy: "ariaLabelledBy", dropdownIcon: "dropdownIcon", unique: "unique", group: "group", completeOnFocus: "completeOnFocus", field: "field", scrollHeight: "scrollHeight", dropdown: "dropdown", showEmptyMessage: "showEmptyMessage", dropdownMode: "dropdownMode", multiple: "multiple", tabindex: "tabindex", dataKey: "dataKey", emptyMessage: "emptyMessage", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autofocus: "autofocus", autocomplete: "autocomplete", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", suggestions: "suggestions" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "(focus && !disabled) ||\u00A0overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEL", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputEL", first: true, predicate: ["in"], descendants: true }, { propertyName: "multiInputEL", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"], components: [{ type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-autoComplete', template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'
+                    }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { minLength: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoHighlight: [{
+                type: Input
+            }], forceSelection: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], dropdownAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], unique: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], completeOnFocus: [{
+                type: Input
+            }], completeMethod: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onUnselect: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onKeyUp: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], field: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], dropdown: [{
+                type: Input
+            }], showEmptyMessage: [{
+                type: Input
+            }], dropdownMode: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], containerEL: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputEL: [{
+                type: ViewChild,
+                args: ['in']
+            }], multiInputEL: [{
+                type: ViewChild,
+                args: ['multiIn']
+            }], multiContainerEL: [{
+                type: ViewChild,
+                args: ['multiContainer']
+            }], dropdownButton: [{
+                type: ViewChild,
+                args: ['ddBtn']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], suggestions: [{
+                type: Input
+            }] } });
+class AutoCompleteModule {
+}
+AutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], exports: [AutoComplete, SharedModule, ScrollingModule] });
+AutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],
+                    exports: [AutoComplete, SharedModule, ScrollingModule],
+                    declarations: [AutoComplete]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-autocomplete.mjs","sources":["../../src/app/components/autocomplete/autocomplete.ts","../../src/app/components/autocomplete/primeng-autocomplete.ts"],"sourcesContent":["import {NgModule,Component,ViewChild,ElementRef,AfterViewChecked,AfterContentInit,OnDestroy,Input,Output,EventEmitter,ContentChildren,QueryList,TemplateRef,Renderer2,forwardRef,ChangeDetectorRef,IterableDiffers,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate, TranslationKeys, PrimeNGConfig, OverlayService} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId, ZIndexUtils} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => AutoComplete),\n  multi: true\n};\n\n@Component({\n    selector: 'p-autoComplete',\n    template: `\n        <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n            class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n            (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n            [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n            ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n                <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n                    <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n                    <span  class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n                </li>\n                <li class=\"p-autocomplete-input-token\">\n                    <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\"  (click)=\"onInputClick($event)\"\n                            (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n                            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n                            aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n                </li>\n            </ul>\n            <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n                (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n            <div #panel *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n                    <ng-container *ngIf=\"group\">\n                        <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n                            <li class=\"p-autocomplete-item-group\">\n                                <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                            </li>\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                        </ng-template>\n                    </ng-container>\n                    <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n                    </ng-container>\n                    <ng-template #itemslist let-suggestionsToDisplay>\n                        <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                            <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n                            </li>\n                        </ng-container>\n                        <ng-template #virtualScrollList>\n                            <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n                                <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                    <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                        <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                                    </li>\n                                </ng-container>\n                            </cdk-virtual-scroll-viewport>\n                        </ng-template>\n                        <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ng-template>\n                </ul>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n    },\n    providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./autocomplete.css']\n})\nexport class AutoComplete implements AfterViewChecked,AfterContentInit,OnDestroy,ControlValueAccessor {\n\n    @Input() minLength: number = 1;\n\n    @Input() delay: number = 300;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputId: string;\n\n    @Input() inputStyleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() readonly: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() maxlength: number;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() size: number;\n\n    @Input() appendTo: any;\n\n    @Input() autoHighlight: boolean;\n\n    @Input() forceSelection: boolean;\n\n    @Input() type: string = 'text';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() ariaLabel: string;\n\n    @Input() dropdownAriaLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() dropdownIcon: string = \"pi pi-chevron-down\";\n\n    @Input() unique: boolean = true;\n\n    @Input() group: boolean;\n\n    @Input() completeOnFocus: boolean = false;\n\n    @Output() completeMethod: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n\t@Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeyUp: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Input() field: string;\n\n    @Input() scrollHeight: string = '200px';\n\n    @Input() dropdown: boolean;\n\n    @Input() showEmptyMessage: boolean;\n\n    @Input() dropdownMode: string = 'blank';\n\n    @Input() multiple: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() dataKey: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() autofocus: boolean;\n\n    @Input() autocomplete: string = 'off';\n\n    @Input() optionGroupChildren: string;\n\n    @Input() optionGroupLabel: string;\n\n    @ViewChild('container') containerEL: ElementRef;\n\n    @ViewChild('in') inputEL: ElementRef;\n\n    @ViewChild('multiIn') multiInputEL: ElementRef;\n\n    @ViewChild('multiContainer') multiContainerEL: ElementRef;\n\n    @ViewChild('ddBtn') dropdownButton: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    overlay: HTMLDivElement;\n\n    itemsWrapper: HTMLDivElement;\n\n    itemTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    selectedItemTemplate: TemplateRef<any>;\n\n    groupTemplate: TemplateRef<any>;\n\n    value: any;\n\n    _suggestions: any[];\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    timeout: any;\n\n    overlayVisible: boolean = false;\n\n    documentClickListener: any;\n\n    suggestionsUpdated: boolean;\n\n    highlightOption: any;\n\n    highlightOptionChanged: boolean;\n\n    focus: boolean = false;\n\n    filled: boolean;\n\n    inputClick: boolean;\n\n    inputKeyDown: boolean;\n\n    noResults: boolean;\n\n    differ: any;\n\n    inputFieldValue: string = null;\n\n    loading: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    forceSelectionUpdateModelTimeout: any;\n\n    listId: string;\n\n    itemClicked: boolean;\n\n    virtualScrollSelectedIndex: number;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public differs: IterableDiffers, public config: PrimeNGConfig, public overlayService: OverlayService) {\n        this.differ = differs.find([]).create(null);\n        this.listId = UniqueComponentId() + '_list';\n    }\n\n    @Input() get suggestions(): any[] {\n        return this._suggestions;\n    }\n\n    set suggestions(val:any[]) {\n        this._suggestions = val;\n        this.handleSuggestionsChange();\n    }\n\n    ngAfterViewChecked() {\n        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n            setTimeout(() => {\n                if (this.overlay) {\n                    this.alignOverlay();\n                }\n            }, 1);\n            this.suggestionsUpdated = false;\n        }\n\n        if (this.highlightOptionChanged) {\n            setTimeout(() => {\n                if (this.overlay && this.itemsWrapper) {\n                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n\n                    if (listItem) {\n                        DomHandler.scrollInView(this.itemsWrapper, listItem);\n                    }\n\n                    if (this.virtualScroll && this.viewPort) {\n                        let range = this.viewPort.getRenderedRange();\n                        this.updateVirtualScrollSelectedIndex();\n\n                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n                        }\n                    }\n                }\n            }, 1);\n            this.highlightOptionChanged = false;\n        }\n    }\n\n    handleSuggestionsChange() {\n        if (this._suggestions != null && this.loading) {\n            this.highlightOption = null;\n            if (this._suggestions.length) {\n                this.noResults = false;\n                this.show();\n                this.suggestionsUpdated = true;\n\n                if (this.autoHighlight) {\n                    this.highlightOption = this._suggestions[0];\n                }\n            }\n            else {\n                this.noResults = true;\n\n                if (this.showEmptyMessage) {\n                    this.show();\n                    this.suggestionsUpdated = true;\n                }\n                else {\n                    this.hide();\n                }\n            }\n\n            this.loading = false;\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'selectedItem':\n                    this.selectedItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    updateVirtualScrollSelectedIndex() {\n        if (this.highlightOption && this.suggestions && this.suggestions.length) {\n            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.filled = this.value && this.value != '';\n        this.updateInputField();\n        this.cd.markForCheck();\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onInput(event: Event) {\n        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n        if (!this.inputKeyDown && DomHandler.isIE()) {\n            return;\n        }\n\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n        }\n\n        let value = (<HTMLInputElement> event.target).value;\n        if (!this.multiple && !this.forceSelection) {\n            this.onModelChange(value);\n        }\n\n        if (value.length === 0 && !this.multiple) {\n            this.hide();\n            this.onClear.emit(event);\n\t        this.onModelChange(value);\n        }\n\n        if (value.length >= this.minLength) {\n            this.timeout = setTimeout(() => {\n                this.search(event, value);\n            }, this.delay);\n        }\n        else {\n            this.hide();\n        }\n        this.updateFilledState();\n        this.inputKeyDown = false;\n    }\n\n    onInputClick(event: MouseEvent) {\n        if (this.documentClickListener) {\n            this.inputClick = true;\n        }\n    }\n\n    search(event: any, query: string) {\n        //allow empty string but not undefined or null\n       if (query === undefined || query === null) {\n           return;\n       }\n\n       this.loading = true;\n\n       this.completeMethod.emit({\n           originalEvent: event,\n           query: query\n       });\n    }\n\n    selectItem(option: any, focus: boolean = true) {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n\n        if (this.multiple) {\n            this.multiInputEL.nativeElement.value = '';\n            this.value = this.value||[];\n            if (!this.isSelected(option) || !this.unique) {\n                this.value = [...this.value,option];\n                this.onModelChange(this.value);\n            }\n        }\n        else {\n            this.inputEL.nativeElement.value =  this.resolveFieldData(option);\n            this.value = option;\n            this.onModelChange(this.value);\n        }\n\n        this.onSelect.emit(option);\n        this.updateFilledState();\n\n        if (focus) {\n            this.itemClicked = true;\n            this.focusInput();\n        }\n    }\n\n    show() {\n        if (this.multiInputEL || this.inputEL) {\n            let hasFocus = this.multiple ?\n                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n            if (!this.overlayVisible && hasFocus) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n                this.appendOverlay();\n\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n                }\n\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n                this.onShow.emit(event);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n            }\n        }\n    }\n\n    resolveFieldData(value) {\n        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n        return data !== (null || undefined) ? data : '';\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n        else\n            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    handleDropdownClick(event) {\n        if (!this.overlayVisible) {\n            this.focusInput();\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n\n            if (this.dropdownMode === 'blank')\n                this.search(event, '');\n            else if (this.dropdownMode === 'current')\n                this.search(event, queryValue);\n\n            this.onDropdownClick.emit({\n                originalEvent: event,\n                query: queryValue\n            });\n        }\n        else {\n            this.hide();\n        }\n    }\n\n    focusInput() {\n        if (this.multiple)\n            this.multiInputEL.nativeElement.focus();\n        else\n            this.inputEL.nativeElement.focus();\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    removeItem(item: any) {\n        let itemIndex = DomHandler.index(item);\n        let removedValue = this.value[itemIndex];\n        this.value = this.value.filter((val, i) => i!=itemIndex);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n        this.onUnselect.emit(removedValue);\n    }\n\n    onKeydown(event) {\n        if (this.overlayVisible) {\n            switch(event.which) {\n                //down\n                case 40:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex !== -1) {\n                            let nextItemIndex = highlightItemIndex.itemIndex + 1;\n                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex != -1) {\n                            var nextItemIndex = highlightItemIndex + 1;\n                            if (nextItemIndex != (this.suggestions.length)) {\n                                this.highlightOption = this.suggestions[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.suggestions[0];\n                        }\n                    }\n\n                    event.preventDefault();\n                break;\n\n                //up\n                case 38:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex !== -1) {\n                            let prevItemIndex = highlightItemIndex.itemIndex - 1;\n                            if (prevItemIndex >= 0) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (prevItemIndex < 0) {\n                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n                                if (prevGroup) {\n                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n                                    this.highlightOptionChanged = true;\n                                }\n                            }\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex > 0) {\n                            let prevItemIndex = highlightItemIndex - 1;\n                            this.highlightOption = this.suggestions[prevItemIndex];\n                            this.highlightOptionChanged = true;\n                        }\n                    }\n\n                    event.preventDefault();\n                break;\n\n                //enter\n                case 13:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                        this.hide();\n                    }\n                    event.preventDefault();\n                break;\n\n                //escape\n                case 27:\n                    this.hide();\n                    event.preventDefault();\n                break;\n\n\n                //tab\n                case 9:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                    }\n                    this.hide();\n                break;\n            }\n        } else {\n            if (event.which === 40 && this.suggestions) {\n                this.search(event,event.target.value);\n            }\n        }\n\n        if (this.multiple) {\n            switch(event.which) {\n                //backspace\n                case 8:\n                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n                        this.value = [...this.value];\n                        const removedValue = this.value.pop();\n                        this.onModelChange(this.value);\n                        this.updateFilledState();\n                        this.onUnselect.emit(removedValue);\n                    }\n                break;\n            }\n        }\n\n        this.inputKeyDown = true;\n    }\n\n    onKeyup(event) {\n        this.onKeyUp.emit(event);\n    }\n\n    onInputFocus(event) {\n        if (!this.itemClicked && this.completeOnFocus ) {\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n            this.search(event, queryValue);\n        }\n\n        this.focus = true;\n        this.onFocus.emit(event);\n        this.itemClicked = false;\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputChange(event) {\n        if (this.forceSelection) {\n            let valid = false;\n            let inputValue = event.target.value.trim();\n\n            if (this.suggestions)  {\n                for (let suggestion of this.suggestions) {\n                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n                    if (itemValue && inputValue === itemValue.trim()) {\n                        valid = true;\n                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n                            this.selectItem(suggestion, false);\n                        }, 250);\n                        break;\n                    }\n                }\n            }\n\n            if (!valid) {\n                if (this.multiple) {\n                    this.multiInputEL.nativeElement.value = '';\n                }\n                else {\n                    this.value = null;\n                    this.inputEL.nativeElement.value = '';\n                }\n\n                this.onClear.emit(event);\n                this.onModelChange(this.value);\n                this.updateFilledState();\n            }\n        }\n    }\n\n    onInputPaste(event: ClipboardEvent) {\n        this.onKeydown(event);\n    }\n\n    isSelected(val: any): boolean {\n        let selected: boolean = false;\n        if (this.value && this.value.length) {\n            for (let i = 0; i < this.value.length; i++) {\n                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n                    selected = true;\n                    break;\n                }\n            }\n        }\n        return selected;\n    }\n\n    findOptionIndex(option, suggestions): number {\n        let index: number = -1;\n        if (suggestions) {\n            for (let i = 0; i < suggestions.length; i++) {\n                if (ObjectUtils.equals(option, suggestions[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    findOptionGroupIndex(val: any, opts: any[]): any {\n        let groupIndex, itemIndex;\n\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                groupIndex = i;\n                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n                if (itemIndex !== -1) {\n                    break;\n                }\n            }\n        }\n\n        if (itemIndex !== -1) {\n            return {groupIndex: groupIndex, itemIndex: itemIndex};\n        }\n        else {\n            return -1;\n        }\n    }\n\n    updateFilledState() {\n        if (this.multiple)\n            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n        else\n            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');;\n    }\n\n    updateInputField() {\n        let formattedValue = this.resolveFieldData(this.value);\n        this.inputFieldValue = formattedValue;\n\n        if (this.inputEL && this.inputEL.nativeElement) {\n            this.inputEL.nativeElement.value = formattedValue;\n        }\n\n        this.updateFilledState();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (event.which === 3) {\n                    return;\n                }\n\n                if (!this.inputClick && !this.isDropdownClick(event)) {\n                    this.hide();\n                }\n\n                this.inputClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    isDropdownClick(event) {\n        if (this.dropdown) {\n            let target = event.target;\n            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n        }\n        else {\n            return false;\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.onHide.emit();\n    }\n\n    ngOnDestroy() {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule,ButtonModule,SharedModule,RippleModule,ScrollingModule],\n    exports: [AutoComplete,SharedModule,ScrollingModule],\n    declarations: [AutoComplete]\n})\nexport class AutoCompleteModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Avatar {
+    constructor() {
+        this.size = "normal";
+        this.shape = "square";
+    }
+    containerClass() {
+        return {
+            'p-avatar p-component': true,
+            'p-avatar-image': this.image != null,
+            'p-avatar-circle': this.shape === 'circle',
+            'p-avatar-lg': this.size === 'large',
+            'p-avatar-xl': this.size === 'xlarge'
+        };
+    }
+}
+Avatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Avatar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Avatar, selector: "p-avatar", inputs: { label: "label", icon: "icon", image: "image", size: "size", shape: "shape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, isInline: true, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatar', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class AvatarModule {
+}
+AvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, declarations: [Avatar], imports: [CommonModule], exports: [Avatar] });
+AvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Avatar],
+                    declarations: [Avatar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Avatar, AvatarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-avatar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-avatar.mjs","sources":["../../src/app/components/avatar/avatar.ts","../../src/app/components/avatar/primeng-avatar.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-avatar',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n            <span class=\"p-avatar-text\" *ngIf=\"label; else iconTemplate\">{{label}}</span>\n            <ng-template #iconTemplate><span [class]=\"icon\" [ngClass]=\"'p-avatar-icon'\" *ngIf=\"icon; else imageTemplate\"></span></ng-template>\n            <ng-template #imageTemplate><img [src]=\"image\" *ngIf=\"image\"></ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./avatar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Avatar {\n\n    @Input() label: string;\n\n    @Input() icon: string;\n\n    @Input() image: string;\n\n    @Input() size: string = \"normal\";\n\n    @Input() shape: string = \"square\";\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    containerClass() {\n        return {\n            'p-avatar p-component': true,\n            'p-avatar-image': this.image != null,\n            'p-avatar-circle': this.shape === 'circle',\n            'p-avatar-lg': this.size === 'large',\n            'p-avatar-xl': this.size === 'xlarge'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Avatar],\n    declarations: [Avatar]\n})\nexport class AvatarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAoBa,MAAM;IAjBnB;QAyBa,SAAI,GAAW,QAAQ,CAAC;QAExB,UAAK,GAAW,QAAQ,CAAC;KAerC;IATG,cAAc;QACV,OAAO;YACH,sBAAsB,EAAE,IAAI;YAC5B,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACpC,iBAAiB,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC1C,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;YACpC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;SACxC,CAAC;KACL;;mGAxBQ,MAAM;uFAAN,MAAM,yNAfL;;;;;;;KAOT;2FAQQ,MAAM;kBAjBlB,SAAS;+BACI,UAAU,YACV;;;;;;;KAOT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;;MAkBG,YAAY;;yGAAZ,YAAY;0GAAZ,YAAY,iBAhCZ,MAAM,aA4BL,YAAY,aA5Bb,MAAM;0GAgCN,YAAY,YAJZ,CAAC,YAAY,CAAC;2FAId,YAAY;kBALxB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,YAAY,EAAE,CAAC,MAAM,CAAC;iBACzB;;;ACnDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,46 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class AvatarGroup {
+}
+AvatarGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
+AvatarGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AvatarGroup, selector: "p-avatarGroup", inputs: { styleClass: "styleClass", style: "style" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatarGroup', template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }] } });
+class AvatarGroupModule {
+}
+AvatarGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, declarations: [AvatarGroup], imports: [CommonModule], exports: [AvatarGroup] });
+AvatarGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [AvatarGroup],
+                    declarations: [AvatarGroup]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { AvatarGroup, AvatarGroupModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-avatargroup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-avatargroup.mjs","sources":["../../src/app/components/avatargroup/avatargroup.ts","../../src/app/components/avatargroup/primeng-avatargroup.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-avatarGroup',\n    template: `\n        <div [ngClass]=\"'p-avatar-group p-component'\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./avatargroup.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class AvatarGroup {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [AvatarGroup],\n    declarations: [AvatarGroup]\n})\nexport class AvatarGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAiBa,WAAW;;wGAAX,WAAW;4FAAX,WAAW,kJAZV;;;;KAIT;2FAQQ,WAAW;kBAdvB,SAAS;+BACI,eAAe,YACf;;;;KAIT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;;MAQG,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBAZjB,WAAW,aAQV,YAAY,aARb,WAAW;+GAYX,iBAAiB,YAJjB,CAAC,YAAY,CAAC;2FAId,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AC5BD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,141 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { UniqueComponentId } from 'primeng/utils';
+
+class BadgeDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+    }
+    ngAfterViewInit() {
+        this.id = UniqueComponentId() + '_badge';
+        let el = this.el.nativeElement.nodeName.indexOf("-") != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;
+        let badge = document.createElement('span');
+        badge.id = this.id;
+        badge.className = 'p-badge p-component';
+        if (this.severity) {
+            DomHandler.addClass(badge, 'p-badge-' + this.severity);
+        }
+        if (this.value != null) {
+            badge.appendChild(document.createTextNode(this.value));
+            if (String(this.value).length === 1) {
+                DomHandler.addClass(badge, 'p-badge-no-gutter');
+            }
+        }
+        else {
+            DomHandler.addClass(badge, 'p-badge-dot');
+        }
+        DomHandler.addClass(el, 'p-overlay-badge');
+        el.appendChild(badge);
+        this.initialized = true;
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        if (val !== this._value) {
+            this._value = val;
+            if (this.initialized) {
+                let badge = document.getElementById(this.id);
+                if (this._value) {
+                    if (DomHandler.hasClass(badge, 'p-badge-dot'))
+                        DomHandler.removeClass(badge, 'p-badge-dot');
+                    if (String(this._value).length === 1) {
+                        DomHandler.addClass(badge, 'p-badge-no-gutter');
+                    }
+                    else {
+                        DomHandler.removeClass(badge, 'p-badge-no-gutter');
+                    }
+                }
+                else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {
+                    DomHandler.addClass(badge, 'p-badge-dot');
+                }
+                badge.innerHTML = '';
+                badge.appendChild(document.createTextNode(this._value));
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+BadgeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: BadgeDirective, selector: "[pBadge]", inputs: { iconPos: "iconPos", value: "value", severity: "severity" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pBadge]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }] } });
+class Badge {
+    containerClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,
+            'p-badge-lg': this.size === 'large',
+            'p-badge-xl': this.size === 'xlarge',
+            'p-badge-info': this.severity === 'info',
+            'p-badge-success': this.severity === 'success',
+            'p-badge-warning': this.severity === 'warning',
+            'p-badge-danger': this.severity === 'danger'
+        };
+    }
+}
+Badge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Badge.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Badge, selector: "p-badge", inputs: { styleClass: "styleClass", style: "style", size: "size", severity: "severity", value: "value" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, isInline: true, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-badge', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+class BadgeModule {
+}
+BadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, declarations: [Badge, BadgeDirective], imports: [CommonModule], exports: [Badge, BadgeDirective, SharedModule] });
+BadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Badge, BadgeDirective, SharedModule],
+                    declarations: [Badge, BadgeDirective]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Badge, BadgeDirective, BadgeModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-badge.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-badge.mjs","sources":["../../src/app/components/badge/badge.ts","../../src/app/components/badge/primeng-badge.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, QueryList, ContentChildren, TemplateRef, Directive, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { UniqueComponentId } from 'primeng/utils';\n\n@Directive({\n    selector: '[pBadge]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class BadgeDirective implements AfterViewInit, OnDestroy {\n\n    @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n\n    public _value: string;\n\n    public initialized: boolean;\n\n    private id: string;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        this.id = UniqueComponentId() + '_badge';\n        let el = this.el.nativeElement.nodeName.indexOf(\"-\") != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;\n\n        let badge = document.createElement('span');\n        badge.id = this.id ;\n        badge.className = 'p-badge p-component';\n\n        if (this.severity) {\n            DomHandler.addClass(badge, 'p-badge-' + this.severity);\n        }\n\n        if (this.value != null) {\n            badge.appendChild(document.createTextNode(this.value));\n\n            if (String(this.value).length === 1) {\n                DomHandler.addClass(badge, 'p-badge-no-gutter');\n            }\n        }\n        else {\n            DomHandler.addClass(badge, 'p-badge-dot');\n        }\n\n        DomHandler.addClass(el, 'p-overlay-badge');\n        el.appendChild(badge);\n\n        this.initialized = true;\n    }\n\n    @Input() get value(): string {\n        return this._value;\n    }\n\n    set value(val: string) {\n        if (val !== this._value) {\n            this._value = val;\n\n            if (this.initialized) {\n                let badge = document.getElementById(this.id);\n\n                if (this._value) {\n                    if (DomHandler.hasClass(badge, 'p-badge-dot'))\n                        DomHandler.removeClass(badge, 'p-badge-dot');\n\n                    if (String(this._value).length === 1) {\n                        DomHandler.addClass(badge, 'p-badge-no-gutter');\n                    }\n                    else {\n                        DomHandler.removeClass(badge, 'p-badge-no-gutter');\n                    }\n                }\n                else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {\n                    DomHandler.addClass(badge, 'p-badge-dot');\n                }\n\n                badge.innerHTML = '';\n                badge.appendChild(document.createTextNode(this._value));\n            }\n        }\n    }\n\n    @Input() severity: string;\n\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\n\n@Component({\n    selector: 'p-badge',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n                {{value}}\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./badge.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Badge {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() size: string;\n\n    @Input() severity: string;\n\n    @Input() value: string;\n\n    containerClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,\n            'p-badge-lg': this.size === 'large',\n            'p-badge-xl': this.size === 'xlarge',\n            'p-badge-info': this.severity === 'info',\n            'p-badge-success': this.severity === 'success',\n            'p-badge-warning': this.severity === 'warning',\n            'p-badge-danger': this.severity === 'danger'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Badge, BadgeDirective, SharedModule],\n    declarations: [Badge, BadgeDirective]\n})\nexport class BadgeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+
+class BlockUI {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    get blocked() {
+        return this._blocked;
+    }
+    set blocked(val) {
+        if (this.mask && this.mask.nativeElement) {
+            if (val)
+                this.block();
+            else
+                this.unblock();
+        }
+        else {
+            this._blocked = val;
+        }
+    }
+    ngAfterViewInit() {
+        if (this.target && !this.target.getBlockableElement) {
+            throw 'Target of BlockUI must implement BlockableUI interface';
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    block() {
+        this._blocked = true;
+        if (this.target) {
+            this.target.getBlockableElement().appendChild(this.mask.nativeElement);
+            this.target.getBlockableElement().style.position = 'relative';
+        }
+        else {
+            document.body.appendChild(this.mask.nativeElement);
+        }
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex + this.config.zIndex.modal);
+        }
+    }
+    unblock() {
+        this.animationEndListener = this.destroyModal.bind(this);
+        this.mask.nativeElement.addEventListener('animationend', this.animationEndListener);
+        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+    }
+    destroyModal() {
+        this._blocked = false;
+        DomHandler.removeClass(this.mask.nativeElement, 'p-component-overlay-leave');
+        ZIndexUtils.clear(this.mask.nativeElement);
+        this.el.nativeElement.appendChild(this.mask.nativeElement);
+        this.unbindAnimationEndListener();
+        this.cd.markForCheck();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.nativeElement.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unblock();
+        this.destroyModal();
+    }
+}
+BlockUI.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+BlockUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: BlockUI, selector: "p-blockUI", inputs: { target: "target", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", styleClass: "styleClass", blocked: "blocked" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-blockUI', template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { target: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], blocked: [{
+                type: Input
+            }] } });
+class BlockUIModule {
+}
+BlockUIModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BlockUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, declarations: [BlockUI], imports: [CommonModule], exports: [BlockUI] });
+BlockUIModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [BlockUI],
+                    declarations: [BlockUI]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { BlockUI, BlockUIModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-blockui.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-blockui.mjs","sources":["../../src/app/components/blockui/blockui.ts","../../src/app/components/blockui/primeng-blockui.ts"],"sourcesContent":["import {NgModule,Component,Input,AfterViewInit,OnDestroy,ElementRef,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PrimeNGConfig, PrimeTemplate} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\n\n@Component({\n    selector: 'p-blockUI',\n    template: `\n        <div #mask [class]=\"styleClass\" [ngClass]=\"{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}\" [ngStyle]=\"{display: blocked ? 'flex' : 'none'}\">\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./blockui.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class BlockUI implements AfterViewInit,OnDestroy {\n\n    @Input() target: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() styleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('mask') mask: ElementRef;\n\n    _blocked: boolean;\n\n    animationEndListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public config: PrimeNGConfig) {}\n\n    @Input() get blocked(): boolean {\n        return this._blocked;\n    }\n\n    set blocked(val: boolean) {\n        if (this.mask && this.mask.nativeElement) {\n            if (val)\n                this.block();\n            else\n                this.unblock();\n        }\n        else {\n            this._blocked = val;\n        }\n    }\n\n    ngAfterViewInit() {\n        if (this.target && !this.target.getBlockableElement) {\n            throw 'Target of BlockUI must implement BlockableUI interface';\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    block() {\n        this._blocked = true;\n\n        if (this.target) {\n            this.target.getBlockableElement().appendChild(this.mask.nativeElement);\n            this.target.getBlockableElement().style.position = 'relative';\n        }\n        else {\n            document.body.appendChild(this.mask.nativeElement);\n        }\n\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex + this.config.zIndex.modal);\n        }\n    }\n\n    unblock() {\n        this.animationEndListener = this.destroyModal.bind(this);\n        this.mask.nativeElement.addEventListener('animationend', this.animationEndListener);\n        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave')\n    }\n\n    destroyModal() {\n        this._blocked = false;\n        DomHandler.removeClass(this.mask.nativeElement, 'p-component-overlay-leave');\n        ZIndexUtils.clear(this.mask.nativeElement);\n        this.el.nativeElement.appendChild(this.mask.nativeElement);\n        this.unbindAnimationEndListener();\n        this.cd.markForCheck();\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.nativeElement.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unblock();\n        this.destroyModal();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [BlockUI],\n    declarations: [BlockUI]\n})\nexport class BlockUIModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,171 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Breadcrumb {
+    constructor() {
+        this.onItemClick = new EventEmitter();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.onItemClick.emit({
+            originalEvent: event,
+            item: item
+        });
+    }
+    onHomeClick(event) {
+        if (this.home) {
+            this.itemClick(event, this.home);
+        }
+    }
+}
+Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Breadcrumb, selector: "p-breadcrumb", inputs: { model: "model", style: "style", styleClass: "styleClass", home: "home", homeAriaLabel: "homeAriaLabel" }, outputs: { onItemClick: "onItemClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-breadcrumb', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], home: [{
+                type: Input
+            }], homeAriaLabel: [{
+                type: Input
+            }], onItemClick: [{
+                type: Output
+            }] } });
+class BreadcrumbModule {
+}
+BreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, declarations: [Breadcrumb], imports: [CommonModule, RouterModule, TooltipModule], exports: [Breadcrumb, RouterModule, TooltipModule] });
+BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Breadcrumb, RouterModule, TooltipModule],
+                    declarations: [Breadcrumb]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Breadcrumb, BreadcrumbModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-breadcrumb.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-breadcrumb.mjs","sources":["../../src/app/components/breadcrumb/breadcrumb.ts","../../src/app/components/breadcrumb/primeng-breadcrumb.ts"],"sourcesContent":["import {NgModule,Component,Input, Output, EventEmitter,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-breadcrumb',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-breadcrumb p-component'\">\n            <ul>\n                <li [class]=\"home.styleClass\" [ngClass]=\"{'p-breadcrumb-home': true, 'p-disabled':home.disabled}\" [ngStyle]=\"home.style\" *ngIf=\"home\" pTooltip [tooltipOptions]=\"home.tooltipOptions\">\n                    <a *ngIf=\"!home.routerLink\" [attr.aria-label]=\"homeAriaLabel\" [href]=\"home.url ? home.url : null\" class=\"p-menuitem-link\" (click)=\"itemClick($event, home)\"\n                        [attr.target]=\"home.target\" [attr.title]=\"home.title\" [attr.id]=\"home.id\" [attr.tabindex]=\"home.disabled ? null : '0'\">\n                        <span *ngIf=\"home.icon\" class=\"p-menuitem-icon\" [ngClass]=\"home.icon||'pi pi-home'\"></span>\n                        <ng-container *ngIf=\"home.label\">\n                            <span *ngIf=\"home.escape !== false; else htmlHomeLabel\" class=\"p-menuitem-text\">{{home.label}}</span>\n                            <ng-template #htmlHomeLabel><span class=\"p-menuitem-text\" [innerHTML]=\"home.label\"></span></ng-template>\n                        </ng-container>\n                    </a>\n                    <a *ngIf=\"home.routerLink\" [routerLink]=\"home.routerLink\" [attr.aria-label]=\"homeAriaLabel\" [queryParams]=\"home.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"home.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" (click)=\"itemClick($event, home)\"\n                        [attr.target]=\"home.target\" [attr.title]=\"home.title\" [attr.id]=\"home.id\" [attr.tabindex]=\"home.disabled ? null : '0'\"\n                        [fragment]=\"home.fragment\" [queryParamsHandling]=\"home.queryParamsHandling\" [preserveFragment]=\"home.preserveFragment\" [skipLocationChange]=\"home.skipLocationChange\" [replaceUrl]=\"home.replaceUrl\" [state]=\"home.state\">\n                        <span *ngIf=\"home.icon\" class=\"p-menuitem-icon\" [ngClass]=\"home.icon||'pi pi-home'\"></span>\n                        <ng-container *ngIf=\"home.label\">\n                            <span *ngIf=\"home.escape !== false; else htmlHomeRouteLabel\" class=\"p-menuitem-text\">{{home.label}}</span>\n                            <ng-template #htmlHomeRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"home.label\"></span></ng-template>\n                        </ng-container>\n                    </a>\n                </li>\n                <li class=\"p-breadcrumb-chevron pi pi-chevron-right\" *ngIf=\"model&&home\"></li>\n                <ng-template ngFor let-item let-end=\"last\" [ngForOf]=\"model\">\n                    <li [class]=\"item.styleClass\" [ngStyle]=\"item.style\" [ngClass]=\"{'p-disabled':item.disabled}\">\n                        <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url ? item.url : null\" class=\"p-menuitem-link\" (click)=\"itemClick($event, item)\" pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                            [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\">\n                            <span *ngIf=\"item.icon\" class=\"p-menuitem-icon\" [ngClass]=\"item.icon\"></span>\n                            <ng-container *ngIf=\"item.label\">\n                                <span *ngIf=\"item.escape !== false; else htmlLabel\" class=\"p-menuitem-text\">{{item.label}}</span>\n                                <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                            </ng-container>\n                        </a>\n                        <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"  [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" (click)=\"itemClick($event, item)\"\n                            [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span *ngIf=\"item.icon\" class=\"p-menuitem-icon\" [ngClass]=\"item.icon\"></span>\n                            <ng-container *ngIf=\"item.label\">\n                                <span *ngIf=\"item.escape !== false; else htmlRouteLabel\" class=\"p-menuitem-text\">{{item.label}}</span>\n                                <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                            </ng-container>\n                        </a>\n                    </li>\n                    <li class=\"p-breadcrumb-chevron pi pi-chevron-right\" *ngIf=\"!end\"></li>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./breadcrumb.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Breadcrumb {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() home: MenuItem;\n\n    @Input() homeAriaLabel: string;\n\n    @Output() onItemClick: EventEmitter<any> = new EventEmitter();\n\n    itemClick(event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.onItemClick.emit({\n            originalEvent: event,\n            item: item\n        });\n    }\n\n    onHomeClick(event) {\n        if (this.home) {\n            this.itemClick(event, this.home);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [Breadcrumb,RouterModule,TooltipModule],\n    declarations: [Breadcrumb]\n})\nexport class BreadcrumbModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MA+Da,UAAU;IAzDvB;QAqEc,gBAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;KA8BjE;IA5BG,SAAS,CAAC,KAAK,EAAE,IAAc;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC;gBACT,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;SACN;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;KACN;IAED,WAAW,CAAC,KAAK;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACpC;KACJ;;uGAzCQ,UAAU;2FAAV,UAAU,wPAvDT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CT;2FAQQ,UAAU;kBAzDtB,SAAS;+BACI,cAAc,YACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEI,WAAW;sBAApB,MAAM;;MAqCE,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBAjDhB,UAAU,aA6CT,YAAY,EAAC,YAAY,EAAC,aAAa,aA7CxC,UAAU,EA8CE,YAAY,EAAC,aAAa;8GAGtC,gBAAgB,YAJhB,CAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC,EAC7B,YAAY,EAAC,aAAa;2FAGtC,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC;oBAClD,OAAO,EAAE,CAAC,UAAU,EAAC,YAAY,EAAC,aAAa,CAAC;oBAChD,YAAY,EAAE,CAAC,UAAU,CAAC;iBAC7B;;;AC/GD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,281 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate } from 'primeng/api';
+
+class ButtonDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this._loading = false;
+    }
+    ngAfterViewInit() {
+        this._initialStyleClass = this.el.nativeElement.className;
+        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());
+        if (this.icon || this.loading) {
+            this.createIconEl();
+        }
+        let labelElement = document.createElement("span");
+        if (this.icon && !this.label) {
+            labelElement.setAttribute('aria-hidden', 'true');
+        }
+        labelElement.className = 'p-button-label';
+        if (this.label)
+            labelElement.appendChild(document.createTextNode(this.label));
+        else
+            labelElement.innerHTML = '&nbsp;';
+        this.el.nativeElement.appendChild(labelElement);
+        this.initialized = true;
+    }
+    getStyleClass() {
+        let styleClass = 'p-button p-component';
+        if (this.icon && !this.label) {
+            styleClass = styleClass + ' p-button-icon-only';
+        }
+        if (this.loading) {
+            styleClass = styleClass + ' p-disabled p-button-loading';
+            if (!this.icon && this.label)
+                styleClass = styleClass + ' p-button-loading-label-only';
+        }
+        return styleClass;
+    }
+    setStyleClass() {
+        let styleClass = this.getStyleClass();
+        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;
+    }
+    createIconEl() {
+        let iconElement = document.createElement("span");
+        iconElement.className = 'p-button-icon';
+        iconElement.setAttribute("aria-hidden", "true");
+        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;
+        if (iconPosClass) {
+            DomHandler.addClass(iconElement, iconPosClass);
+        }
+        let iconClass = this.getIconClass();
+        if (iconClass) {
+            DomHandler.addMultipleClasses(iconElement, iconClass);
+        }
+        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');
+        if (labelEl)
+            this.el.nativeElement.insertBefore(iconElement, labelEl);
+        else
+            this.el.nativeElement.appendChild(iconElement);
+    }
+    getIconClass() {
+        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;
+    }
+    setIconClass() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        if (iconElement) {
+            if (this.iconPos)
+                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();
+            else
+                iconElement.className = 'p-button-icon ' + this.getIconClass();
+        }
+        else {
+            this.createIconEl();
+        }
+    }
+    removeIconElement() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        this.el.nativeElement.removeChild(iconElement);
+    }
+    get label() {
+        return this._label;
+    }
+    set label(val) {
+        this._label = val;
+        if (this.initialized) {
+            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';
+            if (this.loading || this.icon) {
+                this.setIconClass();
+            }
+            this.setStyleClass();
+        }
+    }
+    get icon() {
+        return this._icon;
+    }
+    set icon(val) {
+        this._icon = val;
+        if (this.initialized) {
+            this.setIconClass();
+            this.setStyleClass();
+        }
+    }
+    get loading() {
+        return this._loading;
+    }
+    set loading(val) {
+        this._loading = val;
+        if (this.initialized) {
+            if (this.loading || this.icon)
+                this.setIconClass();
+            else
+                this.removeIconElement();
+            this.setStyleClass();
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+ButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ButtonDirective, selector: "[pButton]", inputs: { iconPos: "iconPos", loadingIcon: "loadingIcon", label: "label", icon: "icon", loading: "loading" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pButton]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }] } });
+class Button {
+    constructor() {
+        this.type = "button";
+        this.iconPos = 'left';
+        this.loading = false;
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    badgeStyleClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.badge && String(this.badge).length === 1
+        };
+    }
+}
+Button.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Button.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Button, selector: "p-button", inputs: { type: "type", iconPos: "iconPos", icon: "icon", badge: "badge", label: "label", disabled: "disabled", loading: "loading", loadingIcon: "loadingIcon", style: "style", styleClass: "styleClass", badgeClass: "badgeClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-button',
+                    template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { type: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], badge: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], badgeClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }] } });
+class ButtonModule {
+}
+ButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });
+ButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ButtonDirective, Button],
+                    declarations: [ButtonDirective, Button]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Button, ButtonDirective, ButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-button.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-button.mjs","sources":["../../src/app/components/button/button.ts","../../src/app/components/button/primeng-button.ts"],"sourcesContent":["import {NgModule,Directive,Component,ElementRef,EventEmitter,AfterViewInit,Output,OnDestroy,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList} from '@angular/core';\nimport {DomHandler} from 'primeng/dom';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {PrimeTemplate} from 'primeng/api';\n\n@Directive({\n    selector: '[pButton]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ButtonDirective implements AfterViewInit, OnDestroy {\n\n    @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n\n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    public _label: string;\n\n    public _icon: string;\n\n    public _loading: boolean = false;\n\n    public initialized: boolean;\n\n    public _initialStyleClass: string;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        this._initialStyleClass = this.el.nativeElement.className;\n        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n        if (this.icon || this.loading) {\n            this.createIconEl();\n        }\n\n        let labelElement = document.createElement(\"span\");\n        if (this.icon && !this.label) {\n            labelElement.setAttribute('aria-hidden', 'true');\n        }\n        labelElement.className = 'p-button-label';\n\n        if (this.label)\n            labelElement.appendChild(document.createTextNode(this.label));\n        else\n            labelElement.innerHTML = '&nbsp;';\n\n        this.el.nativeElement.appendChild(labelElement);\n        this.initialized = true;\n    }\n\n    getStyleClass(): string {\n        let styleClass = 'p-button p-component';\n        if (this.icon && !this.label) {\n            styleClass = styleClass + ' p-button-icon-only';\n        }\n\n        if (this.loading) {\n            styleClass = styleClass + ' p-disabled p-button-loading';\n            if (!this.icon && this.label)\n                styleClass = styleClass + ' p-button-loading-label-only';\n        }\n\n        return styleClass;\n    }\n\n    setStyleClass() {\n        let styleClass = this.getStyleClass();\n        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n    }\n\n    createIconEl() {\n        let iconElement = document.createElement(\"span\");\n        iconElement.className = 'p-button-icon';\n        iconElement.setAttribute(\"aria-hidden\", \"true\");\n        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n\n        if (iconPosClass) {\n            DomHandler.addClass(iconElement, iconPosClass);\n        }\n\n        let iconClass = this.getIconClass();\n\n        if(iconClass) {\n            DomHandler.addMultipleClasses(iconElement, iconClass);\n        }\n\n        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label')\n\n        if (labelEl)\n            this.el.nativeElement.insertBefore(iconElement, labelEl);\n        else\n            this.el.nativeElement.appendChild(iconElement)\n    }\n\n    getIconClass() {\n        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n    }\n\n    setIconClass() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        if (iconElement) {\n            if (this.iconPos)\n                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n            else\n                iconElement.className = 'p-button-icon ' + this.getIconClass();\n        }\n        else {\n            this.createIconEl();\n        }\n    }\n\n    removeIconElement() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        this.el.nativeElement.removeChild(iconElement);\n    }\n\n    @Input() get label(): string {\n        return this._label;\n    }\n\n    set label(val: string) {\n        this._label = val;\n\n        if (this.initialized) {\n            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n\n            if (this.loading || this.icon) {\n                this.setIconClass();\n            }\n            this.setStyleClass();\n        }\n    }\n\n    @Input() get icon(): string {\n        return this._icon;\n    }\n\n    set icon(val: string) {\n        this._icon = val;\n\n        if (this.initialized) {\n            this.setIconClass();\n            this.setStyleClass();\n        }\n    }\n\n    @Input() get loading(): boolean {\n        return this._loading;\n    }\n\n    set loading(val: boolean) {\n        this._loading = val;\n\n        if (this.initialized) {\n            if (this.loading || this.icon)\n                this.setIconClass();\n            else\n                this.removeIconElement();\n\n            this.setStyleClass();\n        }\n    }\n\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\n\n@Component({\n    selector: 'p-button',\n    template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Button implements AfterContentInit {\n\n    @Input() type: string = \"button\";\n\n    @Input() iconPos: string = 'left';\n\n    @Input() icon: string;\n\n    @Input() badge: string;\n\n    @Input() label: string;\n\n    @Input() disabled: boolean;\n\n    @Input() loading: boolean = false;\n\n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() badgeClass: string;\n\n    contentTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    badgeStyleClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [ButtonDirective,Button],\n    declarations: [ButtonDirective,Button]\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2456 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+
+const CALENDAR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Calendar),
+    multi: true
+};
+class Calendar {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.multipleSeparator = ',';
+        this.rangeSeparator = '-';
+        this.inline = false;
+        this.showOtherMonths = true;
+        this.icon = 'pi pi-calendar';
+        this.shortYearCutoff = '+10';
+        this.hourFormat = '24';
+        this.stepHour = 1;
+        this.stepMinute = 1;
+        this.stepSecond = 1;
+        this.showSeconds = false;
+        this.showOnFocus = true;
+        this.showWeek = false;
+        this.dataType = 'date';
+        this.selectionMode = 'single';
+        this.todayButtonStyleClass = 'p-button-text';
+        this.clearButtonStyleClass = 'p-button-text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.keepInvalid = false;
+        this.hideOnDateTimeSelect = true;
+        this.numberOfMonths = 1;
+        this.view = 'date';
+        this.timeSeparator = ":";
+        this.focusTrap = true;
+        this.firstDayOfWeek = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onTodayClick = new EventEmitter();
+        this.onClearClick = new EventEmitter();
+        this.onMonthChange = new EventEmitter();
+        this.onYearChange = new EventEmitter();
+        this.onClickOutside = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.inputFieldValue = null;
+        this.navigationState = null;
+        this.convertTo24Hour = function (hours, pm) {
+            if (this.hourFormat == '12') {
+                if (hours === 12) {
+                    return (pm ? 12 : 0);
+                }
+                else {
+                    return (pm ? hours + 12 : hours);
+                }
+            }
+            return hours;
+        };
+    }
+    set content(content) {
+        this.contentViewChild = content;
+        if (this.contentViewChild) {
+            if (this.isMonthNavigate) {
+                Promise.resolve(null).then(() => this.updateFocus());
+                this.isMonthNavigate = false;
+            }
+            else {
+                this.initFocusableCell();
+            }
+        }
+    }
+    ;
+    get defaultDate() {
+        return this._defaultDate;
+    }
+    ;
+    set defaultDate(defaultDate) {
+        this._defaultDate = defaultDate;
+        if (this.initialized) {
+            const date = defaultDate || new Date();
+            this.currentMonth = date.getMonth();
+            this.currentYear = date.getFullYear();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get minDate() {
+        return this._minDate;
+    }
+    set minDate(date) {
+        this._minDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get maxDate() {
+        return this._maxDate;
+    }
+    set maxDate(date) {
+        this._maxDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDates() {
+        return this._disabledDates;
+    }
+    set disabledDates(disabledDates) {
+        this._disabledDates = disabledDates;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDays() {
+        return this._disabledDays;
+    }
+    set disabledDays(disabledDays) {
+        this._disabledDays = disabledDays;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get yearRange() {
+        return this._yearRange;
+    }
+    set yearRange(yearRange) {
+        this._yearRange = yearRange;
+        if (yearRange) {
+            const years = yearRange.split(':');
+            const yearStart = parseInt(years[0]);
+            const yearEnd = parseInt(years[1]);
+            this.populateYearOptions(yearStart, yearEnd);
+        }
+    }
+    get showTime() {
+        return this._showTime;
+    }
+    set showTime(showTime) {
+        this._showTime = showTime;
+        if (this.currentHour === undefined) {
+            this.initTime(this.value || new Date());
+        }
+        this.updateInputfield();
+    }
+    get locale() {
+        return this._locale;
+    }
+    set locale(newLocale) {
+        console.warn("Locale property has no effect, use new i18n API instead.");
+    }
+    ngOnInit() {
+        const date = this.defaultDate || new Date();
+        this.currentMonth = date.getMonth();
+        this.currentYear = date.getFullYear();
+        if (this.view === 'date') {
+            this.createWeekDays();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+            this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);
+        }
+        else if (this.view === 'month') {
+            this.createMonthPickerValues();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.createWeekDays();
+        });
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'date':
+                    this.dateTemplate = item.template;
+                    break;
+                case 'disabledDate':
+                    this.disabledDateTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.dateTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    populateYearOptions(start, end) {
+        this.yearOptions = [];
+        for (let i = start; i <= end; i++) {
+            this.yearOptions.push(i);
+        }
+    }
+    createWeekDays() {
+        this.weekDays = [];
+        let dayIndex = this.firstDayOfWeek;
+        let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);
+        for (let i = 0; i < 7; i++) {
+            this.weekDays.push(dayLabels[dayIndex]);
+            dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;
+        }
+    }
+    createMonthPickerValues() {
+        this.monthPickerValues = [];
+        let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);
+        for (let i = 0; i <= 11; i++) {
+            this.monthPickerValues.push(monthLabels[i]);
+        }
+    }
+    createMonths(month, year) {
+        this.months = this.months = [];
+        for (let i = 0; i < this.numberOfMonths; i++) {
+            let m = month + i;
+            let y = year;
+            if (m > 11) {
+                m = m % 11 - 1;
+                y = year + 1;
+            }
+            this.months.push(this.createMonth(m, y));
+        }
+    }
+    getWeekNumber(date) {
+        let checkDate = new Date(date.getTime());
+        checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+        let time = checkDate.getTime();
+        checkDate.setMonth(0);
+        checkDate.setDate(1);
+        return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;
+    }
+    createMonth(month, year) {
+        let dates = [];
+        let firstDay = this.getFirstDayOfMonthIndex(month, year);
+        let daysLength = this.getDaysCountInMonth(month, year);
+        let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);
+        let dayNo = 1;
+        let today = new Date();
+        let weekNumbers = [];
+        let monthRows = Math.ceil((daysLength + firstDay) / 7);
+        for (let i = 0; i < monthRows; i++) {
+            let week = [];
+            if (i == 0) {
+                for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {
+                    let prev = this.getPreviousMonthAndYear(month, year);
+                    week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true,
+                        today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });
+                }
+                let remainingDaysLength = 7 - week.length;
+                for (let j = 0; j < remainingDaysLength; j++) {
+                    week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                        selectable: this.isSelectable(dayNo, month, year, false) });
+                    dayNo++;
+                }
+            }
+            else {
+                for (let j = 0; j < 7; j++) {
+                    if (dayNo > daysLength) {
+                        let next = this.getNextMonthAndYear(month, year);
+                        week.push({ day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,
+                            today: this.isToday(today, dayNo - daysLength, next.month, next.year),
+                            selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true) });
+                    }
+                    else {
+                        week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                            selectable: this.isSelectable(dayNo, month, year, false) });
+                    }
+                    dayNo++;
+                }
+            }
+            if (this.showWeek) {
+                weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));
+            }
+            dates.push(week);
+        }
+        return {
+            month: month,
+            year: year,
+            dates: dates,
+            weekNumbers: weekNumbers
+        };
+    }
+    initTime(date) {
+        this.pm = date.getHours() > 11;
+        if (this.showTime) {
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+            this.setCurrentHourPM(date.getHours());
+        }
+        else if (this.timeOnly) {
+            this.currentMinute = 0;
+            this.currentHour = 0;
+            this.currentSecond = 0;
+        }
+    }
+    navBackward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.decrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 0) {
+                this.currentMonth = 11;
+                this.decrementYear();
+            }
+            else {
+                this.currentMonth--;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    navForward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.incrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 11) {
+                this.currentMonth = 0;
+                this.incrementYear();
+            }
+            else {
+                this.currentMonth++;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    decrementYear() {
+        this.currentYear--;
+        if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);
+        }
+    }
+    incrementYear() {
+        this.currentYear++;
+        if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);
+        }
+    }
+    onDateSelect(event, dateMeta) {
+        if (this.disabled || !dateMeta.selectable) {
+            event.preventDefault();
+            return;
+        }
+        if (this.isMultipleSelection() && this.isSelected(dateMeta)) {
+            this.value = this.value.filter((date, i) => {
+                return !this.isDateEquals(date, dateMeta);
+            });
+            if (this.value.length === 0) {
+                this.value = null;
+            }
+            this.updateModel(this.value);
+        }
+        else {
+            if (this.shouldSelectDate(dateMeta)) {
+                this.selectDate(dateMeta);
+            }
+        }
+        if (this.isSingleSelection() && this.hideOnDateTimeSelect) {
+            setTimeout(() => {
+                event.preventDefault();
+                this.hideOverlay();
+                if (this.mask) {
+                    this.disableModality();
+                }
+                this.cd.markForCheck();
+            }, 150);
+        }
+        this.updateInputfield();
+        event.preventDefault();
+    }
+    shouldSelectDate(dateMeta) {
+        if (this.isMultipleSelection())
+            return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;
+        else
+            return true;
+    }
+    onMonthSelect(event, index) {
+        if (!DomHandler.hasClass(event.target, 'p-disabled')) {
+            this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });
+        }
+    }
+    updateInputfield() {
+        let formattedValue = '';
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                formattedValue = this.formatDateTime(this.value);
+            }
+            else if (this.isMultipleSelection()) {
+                for (let i = 0; i < this.value.length; i++) {
+                    let dateAsString = this.formatDateTime(this.value[i]);
+                    formattedValue += dateAsString;
+                    if (i !== (this.value.length - 1)) {
+                        formattedValue += this.multipleSeparator + ' ';
+                    }
+                }
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value && this.value.length) {
+                    let startDate = this.value[0];
+                    let endDate = this.value[1];
+                    formattedValue = this.formatDateTime(startDate);
+                    if (endDate) {
+                        formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);
+                    }
+                }
+            }
+        }
+        this.inputFieldValue = formattedValue;
+        this.updateFilledState();
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;
+        }
+    }
+    formatDateTime(date) {
+        let formattedValue = null;
+        if (date) {
+            if (this.timeOnly) {
+                formattedValue = this.formatTime(date);
+            }
+            else {
+                formattedValue = this.formatDate(date, this.getDateFormat());
+                if (this.showTime) {
+                    formattedValue += ' ' + this.formatTime(date);
+                }
+            }
+        }
+        return formattedValue;
+    }
+    setCurrentHourPM(hours) {
+        if (this.hourFormat == '12') {
+            this.pm = hours > 11;
+            if (hours >= 12) {
+                this.currentHour = (hours == 12) ? 12 : hours - 12;
+            }
+            else {
+                this.currentHour = (hours == 0) ? 12 : hours;
+            }
+        }
+        else {
+            this.currentHour = hours;
+        }
+    }
+    selectDate(dateMeta) {
+        let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+        if (this.showTime) {
+            if (this.hourFormat == '12') {
+                if (this.currentHour === 12)
+                    date.setHours(this.pm ? 12 : 0);
+                else
+                    date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+            }
+            else {
+                date.setHours(this.currentHour);
+            }
+            date.setMinutes(this.currentMinute);
+            date.setSeconds(this.currentSecond);
+        }
+        if (this.minDate && this.minDate > date) {
+            date = this.minDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.maxDate && this.maxDate < date) {
+            date = this.maxDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.isSingleSelection()) {
+            this.updateModel(date);
+        }
+        else if (this.isMultipleSelection()) {
+            this.updateModel(this.value ? [...this.value, date] : [date]);
+        }
+        else if (this.isRangeSelection()) {
+            if (this.value && this.value.length) {
+                let startDate = this.value[0];
+                let endDate = this.value[1];
+                if (!endDate && date.getTime() >= startDate.getTime()) {
+                    endDate = date;
+                }
+                else {
+                    startDate = date;
+                    endDate = null;
+                }
+                this.updateModel([startDate, endDate]);
+            }
+            else {
+                this.updateModel([date, null]);
+            }
+        }
+        this.onSelect.emit(date);
+    }
+    updateModel(value) {
+        this.value = value;
+        if (this.dataType == 'date') {
+            this.onModelChange(this.value);
+        }
+        else if (this.dataType == 'string') {
+            if (this.isSingleSelection()) {
+                this.onModelChange(this.formatDateTime(this.value));
+            }
+            else {
+                let stringArrValue = null;
+                if (this.value) {
+                    stringArrValue = this.value.map(date => this.formatDateTime(date));
+                }
+                this.onModelChange(stringArrValue);
+            }
+        }
+    }
+    getFirstDayOfMonthIndex(month, year) {
+        let day = new Date();
+        day.setDate(1);
+        day.setMonth(month);
+        day.setFullYear(year);
+        let dayIndex = day.getDay() + this.getSundayIndex();
+        return dayIndex >= 7 ? dayIndex - 7 : dayIndex;
+    }
+    getDaysCountInMonth(month, year) {
+        return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();
+    }
+    getDaysCountInPrevMonth(month, year) {
+        let prev = this.getPreviousMonthAndYear(month, year);
+        return this.getDaysCountInMonth(prev.month, prev.year);
+    }
+    getPreviousMonthAndYear(month, year) {
+        let m, y;
+        if (month === 0) {
+            m = 11;
+            y = year - 1;
+        }
+        else {
+            m = month - 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getNextMonthAndYear(month, year) {
+        let m, y;
+        if (month === 11) {
+            m = 0;
+            y = year + 1;
+        }
+        else {
+            m = month + 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getSundayIndex() {
+        return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;
+    }
+    isSelected(dateMeta) {
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                return this.isDateEquals(this.value, dateMeta);
+            }
+            else if (this.isMultipleSelection()) {
+                let selected = false;
+                for (let date of this.value) {
+                    selected = this.isDateEquals(date, dateMeta);
+                    if (selected) {
+                        break;
+                    }
+                }
+                return selected;
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value[1])
+                    return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);
+                else
+                    return this.isDateEquals(this.value[0], dateMeta);
+            }
+        }
+        else {
+            return false;
+        }
+    }
+    isMonthSelected(month) {
+        let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;
+        return this.isSelected({ year: this.currentYear, month: month, day: day, selectable: true });
+    }
+    isDateEquals(value, dateMeta) {
+        if (value)
+            return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;
+        else
+            return false;
+    }
+    isDateBetween(start, end, dateMeta) {
+        let between = false;
+        if (start && end) {
+            let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+            return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();
+        }
+        return between;
+    }
+    isSingleSelection() {
+        return this.selectionMode === 'single';
+    }
+    isRangeSelection() {
+        return this.selectionMode === 'range';
+    }
+    isMultipleSelection() {
+        return this.selectionMode === 'multiple';
+    }
+    isToday(today, day, month, year) {
+        return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
+    }
+    isSelectable(day, month, year, otherMonth) {
+        let validMin = true;
+        let validMax = true;
+        let validDate = true;
+        let validDay = true;
+        if (otherMonth && !this.selectOtherMonths) {
+            return false;
+        }
+        if (this.minDate) {
+            if (this.minDate.getFullYear() > year) {
+                validMin = false;
+            }
+            else if (this.minDate.getFullYear() === year) {
+                if (this.minDate.getMonth() > month) {
+                    validMin = false;
+                }
+                else if (this.minDate.getMonth() === month) {
+                    if (this.minDate.getDate() > day) {
+                        validMin = false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate) {
+            if (this.maxDate.getFullYear() < year) {
+                validMax = false;
+            }
+            else if (this.maxDate.getFullYear() === year) {
+                if (this.maxDate.getMonth() < month) {
+                    validMax = false;
+                }
+                else if (this.maxDate.getMonth() === month) {
+                    if (this.maxDate.getDate() < day) {
+                        validMax = false;
+                    }
+                }
+            }
+        }
+        if (this.disabledDates) {
+            validDate = !this.isDateDisabled(day, month, year);
+        }
+        if (this.disabledDays) {
+            validDay = !this.isDayDisabled(day, month, year);
+        }
+        return validMin && validMax && validDate && validDay;
+    }
+    isDateDisabled(day, month, year) {
+        if (this.disabledDates) {
+            for (let disabledDate of this.disabledDates) {
+                if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    isDayDisabled(day, month, year) {
+        if (this.disabledDays) {
+            let weekday = new Date(year, month, day);
+            let weekdayNumber = weekday.getDay();
+            return this.disabledDays.indexOf(weekdayNumber) !== -1;
+        }
+        return false;
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        if (this.showOnFocus) {
+            this.showOverlay();
+        }
+        this.onFocus.emit(event);
+    }
+    onInputClick() {
+        if (this.showOnFocus && !this.overlayVisible) {
+            this.showOverlay();
+        }
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit(event);
+        if (!this.keepInvalid) {
+            this.updateInputfield();
+        }
+        this.onModelTouched();
+    }
+    onButtonClick(event, inputfield) {
+        if (!this.overlayVisible) {
+            inputfield.focus();
+            this.showOverlay();
+        }
+        else {
+            this.hideOverlay();
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onPrevButtonClick(event) {
+        this.navigationState = { backward: true, button: true };
+        this.navBackward(event);
+    }
+    onNextButtonClick(event) {
+        this.navigationState = { backward: false, button: true };
+        this.navForward(event);
+    }
+    onContainerButtonKeydown(event) {
+        switch (event.which) {
+            //tab
+            case 9:
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            //escape
+            case 27:
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            default:
+                //Noop
+                break;
+        }
+    }
+    onInputKeydown(event) {
+        this.isKeydown = true;
+        if (event.keyCode === 40 && this.contentViewChild) {
+            this.trapFocus(event);
+        }
+        else if (event.keyCode === 27) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 13) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 9 && this.contentViewChild) {
+            DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+            }
+        }
+    }
+    onDateCellKeydown(event, date, groupIndex) {
+        const cellContent = event.currentTarget;
+        const cell = cellContent.parentElement;
+        switch (event.which) {
+            //down arrow
+            case 40: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let nextRow = cell.parentElement.nextElementSibling;
+                if (nextRow) {
+                    let focusCell = nextRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: false };
+                        this.navForward(event);
+                    }
+                    else {
+                        nextRow.children[cellIndex].children[0].tabIndex = '0';
+                        nextRow.children[cellIndex].children[0].focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: false };
+                    this.navForward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //up arrow
+            case 38: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let prevRow = cell.parentElement.previousElementSibling;
+                if (prevRow) {
+                    let focusCell = prevRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: true };
+                        this.navBackward(event);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: true };
+                    this.navBackward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cellContent.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    let focusCell = prevCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {
+                        this.navigateToMonth(true, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(true, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cellContent.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    let focusCell = nextCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigateToMonth(false, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(false, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onDateSelect(event, date);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    onMonthCellKeydown(event, index) {
+        const cell = event.currentTarget;
+        switch (event.which) {
+            //arrows
+            case 38:
+            case 40: {
+                cell.tabIndex = '-1';
+                var cells = cell.parentElement.children;
+                var cellIndex = DomHandler.index(cell);
+                let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cell.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    prevCell.tabIndex = '0';
+                    prevCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cell.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onMonthSelect(event, index);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    navigateToMonth(prev, groupIndex) {
+        if (prev) {
+            if (this.numberOfMonths === 1 || (groupIndex === 0)) {
+                this.navigationState = { backward: true };
+                this.navBackward(event);
+            }
+            else {
+                let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];
+                let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                let focusCell = cells[cells.length - 1];
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+        else {
+            if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {
+                this.navigationState = { backward: false };
+                this.navForward(event);
+            }
+            else {
+                let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];
+                let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+    }
+    updateFocus() {
+        let cell;
+        if (this.navigationState) {
+            if (this.navigationState.button) {
+                this.initFocusableCell();
+                if (this.navigationState.backward)
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();
+                else
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();
+            }
+            else {
+                if (this.navigationState.backward) {
+                    let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                    cell = cells[cells.length - 1];
+                }
+                else {
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                }
+                if (cell) {
+                    cell.tabIndex = '0';
+                    cell.focus();
+                }
+            }
+            this.navigationState = null;
+        }
+        else {
+            this.initFocusableCell();
+        }
+    }
+    initFocusableCell() {
+        let cell;
+        if (this.view === 'month') {
+            let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');
+            let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');
+            cells.forEach(cell => cell.tabIndex = -1);
+            cell = selectedCell || cells[0];
+            if (cells.length === 0) {
+                let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = "0"]');
+                disabledCells.forEach(cell => cell.tabIndex = -1);
+            }
+        }
+        else {
+            cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');
+            if (!cell) {
+                let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');
+                if (todayCell)
+                    cell = todayCell;
+                else
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+            }
+        }
+        if (cell) {
+            cell.tabIndex = '0';
+        }
+    }
+    trapFocus(event) {
+        let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);
+        if (focusableElements && focusableElements.length > 0) {
+            if (!focusableElements[0].ownerDocument.activeElement) {
+                focusableElements[0].focus();
+            }
+            else {
+                let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                if (event.shiftKey) {
+                    if (focusedIndex == -1 || focusedIndex === 0) {
+                        if (this.focusTrap) {
+                            focusableElements[focusableElements.length - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex === -1)
+                                return this.hideOverlay();
+                            else if (focusedIndex === 0)
+                                return;
+                        }
+                    }
+                    else {
+                        focusableElements[focusedIndex - 1].focus();
+                    }
+                }
+                else {
+                    if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {
+                        if (!this.focusTrap && focusedIndex != -1)
+                            return this.hideOverlay();
+                        else
+                            focusableElements[0].focus();
+                    }
+                    else {
+                        focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+        event.preventDefault();
+    }
+    onMonthDropdownChange(m) {
+        this.currentMonth = parseInt(m);
+        this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    onYearDropdownChange(y) {
+        this.currentYear = parseInt(y);
+        this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    validateTime(hour, minute, second, pm) {
+        let value = this.value;
+        const convertedHour = this.convertTo24Hour(hour, pm);
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        const valueDateString = value ? value.toDateString() : null;
+        if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {
+            if (this.minDate.getHours() > convertedHour) {
+                return false;
+            }
+            if (this.minDate.getHours() === convertedHour) {
+                if (this.minDate.getMinutes() > minute) {
+                    return false;
+                }
+                if (this.minDate.getMinutes() === minute) {
+                    if (this.minDate.getSeconds() > second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {
+            if (this.maxDate.getHours() < convertedHour) {
+                return false;
+            }
+            if (this.maxDate.getHours() === convertedHour) {
+                if (this.maxDate.getMinutes() < minute) {
+                    return false;
+                }
+                if (this.maxDate.getMinutes() === minute) {
+                    if (this.maxDate.getSeconds() < second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    incrementHour(event) {
+        const prevHour = this.currentHour;
+        let newHour = this.currentHour + this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour >= 24) ? (newHour - 24) : newHour;
+        else if (this.hourFormat == '12') {
+            // Before the AM/PM break, now after
+            if (prevHour < 12 && newHour > 11) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour >= 13) ? (newHour - 12) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    onTimePickerElementMouseDown(event, type, direction) {
+        if (!this.disabled) {
+            this.repeat(event, null, type, direction);
+            event.preventDefault();
+        }
+    }
+    onTimePickerElementMouseUp(event) {
+        if (!this.disabled) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    onTimePickerElementMouseLeave() {
+        if (!this.disabled && this.timePickerTimer) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    repeat(event, interval, type, direction) {
+        let i = interval || 500;
+        this.clearTimePickerTimer();
+        this.timePickerTimer = setTimeout(() => {
+            this.repeat(event, 100, type, direction);
+            this.cd.markForCheck();
+        }, i);
+        switch (type) {
+            case 0:
+                if (direction === 1)
+                    this.incrementHour(event);
+                else
+                    this.decrementHour(event);
+                break;
+            case 1:
+                if (direction === 1)
+                    this.incrementMinute(event);
+                else
+                    this.decrementMinute(event);
+                break;
+            case 2:
+                if (direction === 1)
+                    this.incrementSecond(event);
+                else
+                    this.decrementSecond(event);
+                break;
+        }
+        this.updateInputfield();
+    }
+    clearTimePickerTimer() {
+        if (this.timePickerTimer) {
+            clearTimeout(this.timePickerTimer);
+            this.timePickerTimer = null;
+        }
+    }
+    decrementHour(event) {
+        let newHour = this.currentHour - this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour < 0) ? (24 + newHour) : newHour;
+        else if (this.hourFormat == '12') {
+            // If we were at noon/midnight, then switch
+            if (this.currentHour === 12) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour <= 0) ? (12 + newHour) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    incrementMinute(event) {
+        let newMinute = this.currentMinute + this.stepMinute;
+        newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    decrementMinute(event) {
+        let newMinute = this.currentMinute - this.stepMinute;
+        newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    incrementSecond(event) {
+        let newSecond = this.currentSecond + this.stepSecond;
+        newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    decrementSecond(event) {
+        let newSecond = this.currentSecond - this.stepSecond;
+        newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    updateTime() {
+        let value = this.value;
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        value = value ? new Date(value.getTime()) : new Date();
+        if (this.hourFormat == '12') {
+            if (this.currentHour === 12)
+                value.setHours(this.pm ? 12 : 0);
+            else
+                value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+        }
+        else {
+            value.setHours(this.currentHour);
+        }
+        value.setMinutes(this.currentMinute);
+        value.setSeconds(this.currentSecond);
+        if (this.isRangeSelection()) {
+            if (this.value[1])
+                value = [this.value[0], value];
+            else
+                value = [value, null];
+        }
+        if (this.isMultipleSelection()) {
+            value = [...this.value.slice(0, -1), value];
+        }
+        this.updateModel(value);
+        this.onSelect.emit(value);
+        this.updateInputfield();
+    }
+    toggleAMPM(event) {
+        const newPM = !this.pm;
+        if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.pm = newPM;
+            this.updateTime();
+        }
+        event.preventDefault();
+    }
+    onUserInput(event) {
+        // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026
+        if (!this.isKeydown) {
+            return;
+        }
+        this.isKeydown = false;
+        let val = event.target.value;
+        try {
+            let value = this.parseValueFromString(val);
+            if (this.isValidSelection(value)) {
+                this.updateModel(value);
+                this.updateUI();
+            }
+        }
+        catch (err) {
+            //invalid date
+            this.updateModel(null);
+        }
+        this.filled = val != null && val.length;
+        this.onInput.emit(event);
+    }
+    isValidSelection(value) {
+        let isValid = true;
+        if (this.isSingleSelection()) {
+            if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {
+                isValid = false;
+            }
+        }
+        else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {
+            if (this.isRangeSelection()) {
+                isValid = value.length > 1 && value[1] > value[0] ? true : false;
+            }
+        }
+        return isValid;
+    }
+    parseValueFromString(text) {
+        if (!text || text.trim().length === 0) {
+            return null;
+        }
+        let value;
+        if (this.isSingleSelection()) {
+            value = this.parseDateTime(text);
+        }
+        else if (this.isMultipleSelection()) {
+            let tokens = text.split(this.multipleSeparator);
+            value = [];
+            for (let token of tokens) {
+                value.push(this.parseDateTime(token.trim()));
+            }
+        }
+        else if (this.isRangeSelection()) {
+            let tokens = text.split(' ' + this.rangeSeparator + ' ');
+            value = [];
+            for (let i = 0; i < tokens.length; i++) {
+                value[i] = this.parseDateTime(tokens[i].trim());
+            }
+        }
+        return value;
+    }
+    parseDateTime(text) {
+        let date;
+        let parts = text.split(' ');
+        if (this.timeOnly) {
+            date = new Date();
+            this.populateTime(date, parts[0], parts[1]);
+        }
+        else {
+            const dateFormat = this.getDateFormat();
+            if (this.showTime) {
+                let ampm = this.hourFormat == '12' ? parts.pop() : null;
+                let timeString = parts.pop();
+                date = this.parseDate(parts.join(' '), dateFormat);
+                this.populateTime(date, timeString, ampm);
+            }
+            else {
+                date = this.parseDate(text, dateFormat);
+            }
+        }
+        return date;
+    }
+    populateTime(value, timeString, ampm) {
+        if (this.hourFormat == '12' && !ampm) {
+            throw 'Invalid Time';
+        }
+        this.pm = (ampm === 'PM' || ampm === 'pm');
+        let time = this.parseTime(timeString);
+        value.setHours(time.hour);
+        value.setMinutes(time.minute);
+        value.setSeconds(time.second);
+    }
+    updateUI() {
+        let val = this.value || this.defaultDate || new Date();
+        if (Array.isArray(val)) {
+            val = val[0];
+        }
+        this.currentMonth = val.getMonth();
+        this.currentYear = val.getFullYear();
+        this.createMonths(this.currentMonth, this.currentYear);
+        if (this.showTime || this.timeOnly) {
+            this.setCurrentHourPM(val.getHours());
+            this.currentMinute = val.getMinutes();
+            this.currentSecond = val.getSeconds();
+        }
+    }
+    showOverlay() {
+        if (!this.overlayVisible) {
+            this.updateUI();
+            this.overlayVisible = true;
+        }
+    }
+    hideOverlay() {
+        this.overlayVisible = false;
+        this.clearTimePickerTimer();
+        if (this.touchUI) {
+            this.disableModality();
+        }
+        this.cd.markForCheck();
+    }
+    toggle() {
+        if (!this.inline) {
+            if (!this.overlayVisible) {
+                this.showOverlay();
+                this.inputfieldViewChild.nativeElement.focus();
+            }
+            else {
+                this.hideOverlay();
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        if (this.touchUI)
+                            ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);
+                        else
+                            ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.onShow.emit(event);
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onClose.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.touchUI) {
+            this.enableModality(this.overlay);
+        }
+        else {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+        }
+    }
+    enableModality(element) {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);
+            let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';
+            DomHandler.addMultipleClasses(this.mask, maskStyleClass);
+            this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                this.disableModality();
+            });
+            document.body.appendChild(this.mask);
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyMask.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyMask() {
+        document.body.removeChild(this.mask);
+        let bodyChildren = document.body.children;
+        let hasBlockerMasks;
+        for (let i = 0; i < bodyChildren.length; i++) {
+            let bodyChild = bodyChildren[i];
+            if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {
+                hasBlockerMasks = true;
+                break;
+            }
+        }
+        if (!hasBlockerMasks) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.unbindMaskClickListener();
+        this.mask = null;
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.value && typeof this.value === 'string') {
+            this.value = this.parseValueFromString(this.value);
+        }
+        this.updateInputfield();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    getDateFormat() {
+        return this.dateFormat || this.getTranslation('dateFormat');
+    }
+    // Ported from jquery-ui datepicker formatDate
+    formatDate(date, format) {
+        if (!date) {
+            return '';
+        }
+        let iFormat;
+        const lookAhead = (match) => {
+            const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, formatNumber = (match, value, len) => {
+            let num = '' + value;
+            if (lookAhead(match)) {
+                while (num.length < len) {
+                    num = '0' + num;
+                }
+            }
+            return num;
+        }, formatName = (match, value, shortNames, longNames) => {
+            return (lookAhead(match) ? longNames[value] : shortNames[value]);
+        };
+        let output = '';
+        let literal = false;
+        if (date) {
+            for (iFormat = 0; iFormat < format.length; iFormat++) {
+                if (literal) {
+                    if (format.charAt(iFormat) === '\'' && !lookAhead('\'')) {
+                        literal = false;
+                    }
+                    else {
+                        output += format.charAt(iFormat);
+                    }
+                }
+                else {
+                    switch (format.charAt(iFormat)) {
+                        case 'd':
+                            output += formatNumber('d', date.getDate(), 2);
+                            break;
+                        case 'D':
+                            output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                            break;
+                        case 'o':
+                            output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -
+                                new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+                            break;
+                        case 'm':
+                            output += formatNumber('m', date.getMonth() + 1, 2);
+                            break;
+                        case 'M':
+                            output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                            break;
+                        case 'y':
+                            output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);
+                            break;
+                        case '@':
+                            output += date.getTime();
+                            break;
+                        case '!':
+                            output += date.getTime() * 10000 + this.ticksTo1970;
+                            break;
+                        case '\'':
+                            if (lookAhead('\'')) {
+                                output += '\'';
+                            }
+                            else {
+                                literal = true;
+                            }
+                            break;
+                        default:
+                            output += format.charAt(iFormat);
+                    }
+                }
+            }
+        }
+        return output;
+    }
+    formatTime(date) {
+        if (!date) {
+            return '';
+        }
+        let output = '';
+        let hours = date.getHours();
+        let minutes = date.getMinutes();
+        let seconds = date.getSeconds();
+        if (this.hourFormat == '12' && hours > 11 && hours != 12) {
+            hours -= 12;
+        }
+        if (this.hourFormat == '12') {
+            output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;
+        }
+        else {
+            output += (hours < 10) ? '0' + hours : hours;
+        }
+        output += ':';
+        output += (minutes < 10) ? '0' + minutes : minutes;
+        if (this.showSeconds) {
+            output += ':';
+            output += (seconds < 10) ? '0' + seconds : seconds;
+        }
+        if (this.hourFormat == '12') {
+            output += date.getHours() > 11 ? ' PM' : ' AM';
+        }
+        return output;
+    }
+    parseTime(value) {
+        let tokens = value.split(':');
+        let validTokenLength = this.showSeconds ? 3 : 2;
+        if (tokens.length !== validTokenLength) {
+            throw "Invalid time";
+        }
+        let h = parseInt(tokens[0]);
+        let m = parseInt(tokens[1]);
+        let s = this.showSeconds ? parseInt(tokens[2]) : null;
+        if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {
+            throw "Invalid time";
+        }
+        else {
+            if (this.hourFormat == '12') {
+                if (h !== 12 && this.pm) {
+                    h += 12;
+                }
+                else if (!this.pm && h === 12) {
+                    h -= 12;
+                }
+            }
+            return { hour: h, minute: m, second: s };
+        }
+    }
+    // Ported from jquery-ui datepicker parseDate
+    parseDate(value, format) {
+        if (format == null || value == null) {
+            throw "Invalid arguments";
+        }
+        value = (typeof value === "object" ? value.toString() : value + "");
+        if (value === "") {
+            return null;
+        }
+        let iFormat, dim, extra, iValue = 0, shortYearCutoff = (typeof this.shortYearCutoff !== "string" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {
+            let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, getNumber = (match) => {
+            let isDoubled = lookAhead(match), size = (match === "@" ? 14 : (match === "!" ? 20 :
+                (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), minSize = (match === "y" ? size : 1), digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits);
+            if (!num) {
+                throw "Missing number at position " + iValue;
+            }
+            iValue += num[0].length;
+            return parseInt(num[0], 10);
+        }, getName = (match, shortNames, longNames) => {
+            let index = -1;
+            let arr = lookAhead(match) ? longNames : shortNames;
+            let names = [];
+            for (let i = 0; i < arr.length; i++) {
+                names.push([i, arr[i]]);
+            }
+            names.sort((a, b) => {
+                return -(a[1].length - b[1].length);
+            });
+            for (let i = 0; i < names.length; i++) {
+                let name = names[i][1];
+                if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+                    index = names[i][0];
+                    iValue += name.length;
+                    break;
+                }
+            }
+            if (index !== -1) {
+                return index + 1;
+            }
+            else {
+                throw "Unknown name at position " + iValue;
+            }
+        }, checkLiteral = () => {
+            if (value.charAt(iValue) !== format.charAt(iFormat)) {
+                throw "Unexpected literal at position " + iValue;
+            }
+            iValue++;
+        };
+        if (this.view === 'month') {
+            day = 1;
+        }
+        for (iFormat = 0; iFormat < format.length; iFormat++) {
+            if (literal) {
+                if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+                    literal = false;
+                }
+                else {
+                    checkLiteral();
+                }
+            }
+            else {
+                switch (format.charAt(iFormat)) {
+                    case "d":
+                        day = getNumber("d");
+                        break;
+                    case "D":
+                        getName("D", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                        break;
+                    case "o":
+                        doy = getNumber("o");
+                        break;
+                    case "m":
+                        month = getNumber("m");
+                        break;
+                    case "M":
+                        month = getName("M", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                        break;
+                    case "y":
+                        year = getNumber("y");
+                        break;
+                    case "@":
+                        date = new Date(getNumber("@"));
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "!":
+                        date = new Date((getNumber("!") - this.ticksTo1970) / 10000);
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "'":
+                        if (lookAhead("'")) {
+                            checkLiteral();
+                        }
+                        else {
+                            literal = true;
+                        }
+                        break;
+                    default:
+                        checkLiteral();
+                }
+            }
+        }
+        if (iValue < value.length) {
+            extra = value.substr(iValue);
+            if (!/^\s+/.test(extra)) {
+                throw "Extra/unparsed characters found in date: " + extra;
+            }
+        }
+        if (year === -1) {
+            year = new Date().getFullYear();
+        }
+        else if (year < 100) {
+            year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+                (year <= shortYearCutoff ? 0 : -100);
+        }
+        if (doy > -1) {
+            month = 1;
+            day = doy;
+            do {
+                dim = this.getDaysCountInMonth(year, month - 1);
+                if (day <= dim) {
+                    break;
+                }
+                month++;
+                day -= dim;
+            } while (true);
+        }
+        date = this.daylightSavingAdjust(new Date(year, month - 1, day));
+        if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+            throw "Invalid date"; // E.g. 31/02/00
+        }
+        return date;
+    }
+    daylightSavingAdjust(date) {
+        if (!date) {
+            return null;
+        }
+        date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+        return date;
+    }
+    updateFilledState() {
+        this.filled = this.inputFieldValue && this.inputFieldValue != '';
+    }
+    onTodayButtonClick(event) {
+        let date = new Date();
+        let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };
+        this.onDateSelect(event, dateMeta);
+        this.onTodayClick.emit(event);
+    }
+    onClearButtonClick(event) {
+        this.updateModel(null);
+        this.updateInputfield();
+        this.hideOverlay();
+        this.onClearClick.emit(event);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.zone.runOutsideAngular(() => {
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                    if (this.isOutsideClicked(event) && this.overlayVisible) {
+                        this.zone.run(() => {
+                            this.hideOverlay();
+                            this.onClickOutside.emit(event);
+                            this.cd.markForCheck();
+                        });
+                    }
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        if (!this.documentResizeListener && !this.touchUI) {
+            this.documentResizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) ||
+            this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isNavIconClicked(event) {
+        return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')
+            || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isAndroid()) {
+            this.hideOverlay();
+        }
+    }
+    onOverlayHide() {
+        if (this.mask) {
+            this.destroyMask();
+        }
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.clearTimePickerTimer();
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Calendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Calendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Calendar, selector: "p-calendar", inputs: { style: "style", styleClass: "styleClass", inputStyle: "inputStyle", inputId: "inputId", name: "name", inputStyleClass: "inputStyleClass", placeholder: "placeholder", ariaLabelledBy: "ariaLabelledBy", iconAriaLabel: "iconAriaLabel", disabled: "disabled", dateFormat: "dateFormat", multipleSeparator: "multipleSeparator", rangeSeparator: "rangeSeparator", inline: "inline", showOtherMonths: "showOtherMonths", selectOtherMonths: "selectOtherMonths", showIcon: "showIcon", icon: "icon", appendTo: "appendTo", readonlyInput: "readonlyInput", shortYearCutoff: "shortYearCutoff", monthNavigator: "monthNavigator", yearNavigator: "yearNavigator", hourFormat: "hourFormat", timeOnly: "timeOnly", stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond", showSeconds: "showSeconds", required: "required", showOnFocus: "showOnFocus", showWeek: "showWeek", dataType: "dataType", selectionMode: "selectionMode", maxDateCount: "maxDateCount", showButtonBar: "showButtonBar", todayButtonStyleClass: "todayButtonStyleClass", clearButtonStyleClass: "clearButtonStyleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", panelStyleClass: "panelStyleClass", panelStyle: "panelStyle", keepInvalid: "keepInvalid", hideOnDateTimeSelect: "hideOnDateTimeSelect", numberOfMonths: "numberOfMonths", view: "view", touchUI: "touchUI", timeSeparator: "timeSeparator", focusTrap: "focusTrap", firstDayOfWeek: "firstDayOfWeek", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", tabindex: "tabindex", defaultDate: "defaultDate", minDate: "minDate", maxDate: "maxDate", disabledDates: "disabledDates", disabledDays: "disabledDays", yearRange: "yearRange", showTime: "showTime", locale: "locale" }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onClose: "onClose", onSelect: "onSelect", onInput: "onInput", onTodayClick: "onTodayClick", onClearClick: "onClearClick", onMonthChange: "onMonthChange", onYearChange: "onYearChange", onClickOutside: "onClickOutside", onShow: "onShow" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "content", first: true, predicate: ["contentWrapper"], descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('overlayAnimation', [
+            state('visibleTouchUI', style({
+                transform: 'translate(-50%,-50%)',
+                opacity: 1
+            })),
+            transition('void => visible', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ]),
+            transition('void => visibleTouchUI', [
+                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visibleTouchUI => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    opacity: 0,
+                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-calendar', template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            state('visibleTouchUI', style({
+                                transform: 'translate(-50%,-50%)',
+                                opacity: 1
+                            })),
+                            transition('void => visible', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ]),
+                            transition('void => visibleTouchUI', [
+                                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visibleTouchUI => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    opacity: 0,
+                                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                                }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], iconAriaLabel: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dateFormat: [{
+                type: Input
+            }], multipleSeparator: [{
+                type: Input
+            }], rangeSeparator: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], showOtherMonths: [{
+                type: Input
+            }], selectOtherMonths: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], readonlyInput: [{
+                type: Input
+            }], shortYearCutoff: [{
+                type: Input
+            }], monthNavigator: [{
+                type: Input
+            }], yearNavigator: [{
+                type: Input
+            }], hourFormat: [{
+                type: Input
+            }], timeOnly: [{
+                type: Input
+            }], stepHour: [{
+                type: Input
+            }], stepMinute: [{
+                type: Input
+            }], stepSecond: [{
+                type: Input
+            }], showSeconds: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], showOnFocus: [{
+                type: Input
+            }], showWeek: [{
+                type: Input
+            }], dataType: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], maxDateCount: [{
+                type: Input
+            }], showButtonBar: [{
+                type: Input
+            }], todayButtonStyleClass: [{
+                type: Input
+            }], clearButtonStyleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], keepInvalid: [{
+                type: Input
+            }], hideOnDateTimeSelect: [{
+                type: Input
+            }], numberOfMonths: [{
+                type: Input
+            }], view: [{
+                type: Input
+            }], touchUI: [{
+                type: Input
+            }], timeSeparator: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], firstDayOfWeek: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onTodayClick: [{
+                type: Output
+            }], onClearClick: [{
+                type: Output
+            }], onMonthChange: [{
+                type: Output
+            }], onYearChange: [{
+                type: Output
+            }], onClickOutside: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], tabindex: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield', { static: false }]
+            }], content: [{
+                type: ViewChild,
+                args: ['contentWrapper', { static: false }]
+            }], defaultDate: [{
+                type: Input
+            }], minDate: [{
+                type: Input
+            }], maxDate: [{
+                type: Input
+            }], disabledDates: [{
+                type: Input
+            }], disabledDays: [{
+                type: Input
+            }], yearRange: [{
+                type: Input
+            }], showTime: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }] } });
+class CalendarModule {
+}
+CalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });
+CalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule],
+                    exports: [Calendar, ButtonModule, SharedModule],
+                    declarations: [Calendar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-calendar.mjs","sources":["../../src/app/components/calendar/calendar.ts","../../src/app/components/calendar/primeng-calendar.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,OnInit,Input,Output,EventEmitter,forwardRef,Renderer2,\n        ViewChild,ChangeDetectorRef,TemplateRef,ContentChildren,QueryList,NgZone,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {SharedModule,PrimeTemplate,PrimeNGConfig,TranslationKeys, OverlayService} from 'primeng/api';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {Subscription} from 'rxjs';\nimport {ZIndexUtils} from 'primeng/utils';\n\nexport const CALENDAR_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Calendar),\n    multi: true\n};\n\nexport interface LocaleSettings {\n    firstDayOfWeek?: number;\n    dayNames?: string[];\n    dayNamesShort?: string[];\n    dayNamesMin?: string[];\n    monthNames?: string[];\n    monthNamesShort?: string[];\n    today?: string;\n    clear?: string;\n    dateFormat?: string;\n    weekHeader?: string;\n}\n\n@Component({\n    selector: 'p-calendar',\n    template:  `\n        <span #container [ngClass]=\"{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ng-template [ngIf]=\"!inline\">\n                <input #inputfield type=\"text\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.required]=\"required\" [attr.aria-required]=\"required\" [value]=\"inputFieldValue\" (focus)=\"onInputFocus($event)\" (keydown)=\"onInputKeydown($event)\" (click)=\"onInputClick()\" (blur)=\"onInputBlur($event)\"\n                    [readonly]=\"readonlyInput\" (input)=\"onUserInput($event)\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [placeholder]=\"placeholder||''\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.inputmode]=\"touchUI ? 'off' : null\"\n                    [ngClass]=\"'p-inputtext p-component'\" autocomplete=\"off\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n                    ><button type=\"button\" [attr.aria-label]=\"iconAriaLabel\" [icon]=\"icon\" pButton pRipple *ngIf=\"showIcon\" (click)=\"onButtonClick($event,inputfield)\" class=\"p-datepicker-trigger\"\n                    [disabled]=\"disabled\" tabindex=\"0\"></button>\n            </ng-template>\n            <div #contentWrapper [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\" [ngClass]=\"{'p-datepicker p-component': true, 'p-datepicker-inline':inline,\n                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n                [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                                            [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"!timeOnly\">\n                    <div class=\"p-datepicker-group-container\">\n                        <div class=\"p-datepicker-group\" *ngFor=\"let month of months; let i = index;\">\n                            <div class=\"p-datepicker-header\">\n                                <button (keydown)=\"onContainerButtonKeydown($event)\" class=\"p-datepicker-prev p-link\" (click)=\"onPrevButtonClick($event)\" *ngIf=\"i === 0\" type=\"button\" pRipple>\n                                    <span class=\"p-datepicker-prev-icon pi pi-chevron-left\"></span>\n                                </button>\n                                <div class=\"p-datepicker-title\">\n                                    <span class=\"p-datepicker-month\" *ngIf=\"!monthNavigator && (view !== 'month')\">{{getTranslation('monthNames')[month.month]}}</span>\n                                    <select tabindex=\"0\" class=\"p-datepicker-month\" *ngIf=\"monthNavigator && (view !== 'month') && numberOfMonths === 1\" (change)=\"onMonthDropdownChange($event.target.value)\">\n                                        <option [value]=\"i\" *ngFor=\"let monthName of getTranslation('monthNames');let i = index\" [selected]=\"i === month.month\">{{monthName}}</option>\n                                    </select>\n                                    <select tabindex=\"0\" class=\"p-datepicker-year\" *ngIf=\"yearNavigator && numberOfMonths === 1\" (change)=\"onYearDropdownChange($event.target.value)\">\n                                        <option [value]=\"year\" *ngFor=\"let year of yearOptions\" [selected]=\"year === currentYear\">{{year}}</option>\n                                    </select>\n                                    <span class=\"p-datepicker-year\" *ngIf=\"!yearNavigator\">{{view === 'month' ? currentYear : month.year}}</span>\n                                </div>\n                                <button (keydown)=\"onContainerButtonKeydown($event)\" class=\"p-datepicker-next p-link\" (click)=\"onNextButtonClick($event)\" *ngIf=\"numberOfMonths === 1 ? true : (i === numberOfMonths -1)\" type=\"button\" pRipple>\n                                    <span class=\"p-datepicker-next-icon pi pi-chevron-right\"></span>\n                                </button>\n                            </div>\n                            <div class=\"p-datepicker-calendar-container\" *ngIf=\"view ==='date'\">\n                                <table class=\"p-datepicker-calendar\">\n                                    <thead>\n                                        <tr>\n                                            <th *ngIf=\"showWeek\" class=\"p-datepicker-weekheader p-disabled\">\n                                                <span>{{getTranslation('weekHeader')}}</span>\n                                            </th>\n                                            <th scope=\"col\" *ngFor=\"let weekDay of weekDays;let begin = first; let end = last\">\n                                                <span>{{weekDay}}</span>\n                                            </th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr *ngFor=\"let week of month.dates; let j = index;\">\n                                            <td *ngIf=\"showWeek\" class=\"p-datepicker-weeknumber\">\n                                                <span class=\"p-disabled\">\n                                                    {{month.weekNumbers[j]}}\n                                                </span>\n                                            </td>\n                                            <td *ngFor=\"let date of week\" [ngClass]=\"{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}\">\n                                                <ng-container *ngIf=\"date.otherMonth ? showOtherMonths : true\">\n                                                    <span [ngClass]=\"{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}\"\n                                                        (click)=\"onDateSelect($event,date)\" draggable=\"false\" (keydown)=\"onDateCellKeydown($event,date,i)\" pRipple>\n                                                        <ng-container *ngIf=\"!dateTemplate\">{{date.day}}</ng-container>\n                                                        <ng-container *ngTemplateOutlet=\"dateTemplate; context: {$implicit: date}\"></ng-container>\n                                                    </span>\n                                                </ng-container>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"p-monthpicker\" *ngIf=\"view === 'month'\">\n                        <span *ngFor=\"let m of monthPickerValues; let i = index\" (click)=\"onMonthSelect($event, i)\" (keydown)=\"onMonthCellKeydown($event,i)\" class=\"p-monthpicker-month\" [ngClass]=\"{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}\" pRipple>\n                            {{m}}\n                        </span>\n                    </div>\n                </ng-container>\n                <div class=\"p-timepicker\" *ngIf=\"showTime||timeOnly\">\n                    <div class=\"p-hour-picker\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementHour($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 0, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentHour < 10\">0</ng-container>{{currentHour}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementHour($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 0, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-separator\">\n                        <span>{{timeSeparator}}</span>\n                    </div>\n                    <div class=\"p-minute-picker\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementMinute($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 1, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentMinute < 10\">0</ng-container>{{currentMinute}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementMinute($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 1, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-separator\" *ngIf=\"showSeconds\">\n                        <span>{{timeSeparator}}</span>\n                    </div>\n                    <div class=\"p-second-picker\" *ngIf=\"showSeconds\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementSecond($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 2, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentSecond < 10\">0</ng-container>{{currentSecond}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementSecond($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 2, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-ampm-picker\" *ngIf=\"hourFormat=='12'\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"toggleAMPM($event)\" (keydown.enter)=\"toggleAMPM($event)\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span>{{pm ? 'PM' : 'AM'}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"toggleAMPM($event)\" (keydown.enter)=\"toggleAMPM($event)\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"p-datepicker-buttonbar\" *ngIf=\"showButtonBar\">\n                    <button type=\"button\" [label]=\"getTranslation('today')\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"onTodayButtonClick($event)\" pButton pRipple [ngClass]=\"[todayButtonStyleClass]\"></button>\n                    <button type=\"button\" [label]=\"getTranslation('clear')\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"onClearButtonClick($event)\" pButton pRipple [ngClass]=\"[clearButtonStyleClass]\"></button>\n                </div>\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            state('visibleTouchUI', style({\n                transform: 'translate(-50%,-50%)',\n                opacity: 1\n            })),\n            transition('void => visible', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n            ]),\n            transition('void => visibleTouchUI', [\n                style({opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visibleTouchUI => void', [\n                animate(('{{hideTransitionParams}}'),\n                style({\n                    opacity: 0,\n                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n                }))\n            ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus'\n    },\n    providers: [CALENDAR_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./calendar.css']\n})\nexport class Calendar implements OnInit,OnDestroy,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() inputStyleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() iconAriaLabel: string;\n\n    @Input() disabled: any;\n\n    @Input() dateFormat: string;\n\n    @Input() multipleSeparator: string = ',';\n\n    @Input() rangeSeparator: string = '-';\n\n    @Input() inline: boolean = false;\n\n    @Input() showOtherMonths: boolean = true;\n\n    @Input() selectOtherMonths: boolean;\n\n    @Input() showIcon: boolean;\n\n    @Input() icon: string = 'pi pi-calendar';\n\n    @Input() appendTo: any;\n\n    @Input() readonlyInput: boolean;\n\n    @Input() shortYearCutoff: any = '+10';\n\n    @Input() monthNavigator: boolean;\n\n    @Input() yearNavigator: boolean;\n\n    @Input() hourFormat: string = '24';\n\n    @Input() timeOnly: boolean;\n\n    @Input() stepHour: number = 1;\n\n    @Input() stepMinute: number = 1;\n\n    @Input() stepSecond: number = 1;\n\n    @Input() showSeconds: boolean = false;\n\n    @Input() required: boolean;\n\n    @Input() showOnFocus: boolean = true;\n\n    @Input() showWeek: boolean = false;\n\n    @Input() dataType: string = 'date';\n\n    @Input() selectionMode: string = 'single';\n\n    @Input() maxDateCount: number;\n\n    @Input() showButtonBar: boolean;\n\n    @Input() todayButtonStyleClass: string = 'p-button-text';\n\n    @Input() clearButtonStyleClass: string = 'p-button-text';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() panelStyleClass: string;\n\n    @Input() panelStyle: any;\n\n    @Input() keepInvalid: boolean = false;\n\n    @Input() hideOnDateTimeSelect: boolean = true;\n\n    @Input() numberOfMonths: number = 1;\n\n    @Input() view: string = 'date';\n\n    @Input() touchUI: boolean;\n\n    @Input() timeSeparator: string = \":\";\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() firstDayOfWeek: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTodayClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClearClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMonthChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onYearChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClickOutside: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Input() tabindex: number;\n\n    @ViewChild('container', { static: false }) containerViewChild: ElementRef;\n\n    @ViewChild('inputfield', { static: false }) inputfieldViewChild: ElementRef;\n\n    @ViewChild('contentWrapper', { static: false }) set content (content: ElementRef) {\n        this.contentViewChild = content;\n\n        if (this.contentViewChild) {\n            if (this.isMonthNavigate) {\n                Promise.resolve(null).then(() => this.updateFocus());\n                this.isMonthNavigate = false;\n            }\n            else {\n                this.initFocusableCell();\n            }\n        }\n    };\n\n    contentViewChild: ElementRef;\n\n    value: any;\n\n    dates: any[];\n\n    months: any[];\n\n    monthPickerValues: any[];\n\n    weekDays: string[];\n\n    currentMonth: number;\n\n    currentYear: number;\n\n    currentHour: number;\n\n    currentMinute: number;\n\n    currentSecond: number;\n\n    pm: boolean;\n\n    mask: HTMLDivElement;\n\n    maskClickListener: Function;\n\n    overlay: HTMLDivElement;\n\n    overlayVisible: boolean;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    calendarElement: any;\n\n    timePickerTimer:any;\n\n    documentClickListener: any;\n\n    animationEndListener: any;\n\n    ticksTo1970: number;\n\n    yearOptions: number[];\n\n    focus: boolean;\n\n    isKeydown: boolean;\n\n    filled: boolean;\n\n    inputFieldValue: string = null;\n\n    _minDate: Date;\n\n    _maxDate: Date;\n\n    _showTime: boolean;\n\n    _yearRange: string;\n\n    preventDocumentListener: boolean;\n\n    dateTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    disabledDateTemplate: TemplateRef<any>;\n\n    _disabledDates: Array<Date>;\n\n    _disabledDays: Array<number>;\n\n    selectElement: any;\n\n    todayElement: any;\n\n    focusElement: any;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    navigationState: any = null;\n\n    isMonthNavigate: boolean;\n\n    initialized: boolean;\n\n    translationSubscription: Subscription;\n\n    _locale: LocaleSettings;\n\n    @Input() get defaultDate(): Date {\n        return this._defaultDate;\n    };\n\n    set defaultDate(defaultDate: Date) {\n        this._defaultDate = defaultDate;\n\n        if (this.initialized) {\n            const date = defaultDate||new Date();\n            this.currentMonth = date.getMonth();\n            this.currentYear = date.getFullYear();\n            this.initTime(date);\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    _defaultDate: Date;\n\n    @Input() get minDate(): Date {\n        return this._minDate;\n    }\n\n    set minDate(date: Date) {\n        this._minDate = date;\n\n        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get maxDate(): Date {\n        return this._maxDate;\n    }\n\n    set maxDate(date: Date) {\n        this._maxDate = date;\n\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get disabledDates(): Date[] {\n        return this._disabledDates;\n    }\n\n    set disabledDates(disabledDates: Date[]) {\n        this._disabledDates = disabledDates;\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get disabledDays(): number[] {\n        return this._disabledDays;\n    }\n\n    set disabledDays(disabledDays: number[]) {\n        this._disabledDays = disabledDays;\n\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get yearRange(): string {\n        return this._yearRange;\n    }\n\n    set yearRange(yearRange: string) {\n        this._yearRange = yearRange;\n\n        if (yearRange) {\n            const years = yearRange.split(':');\n            const yearStart = parseInt(years[0]);\n            const yearEnd = parseInt(years[1]);\n\n            this.populateYearOptions(yearStart, yearEnd);\n        }\n    }\n\n    @Input() get showTime(): boolean {\n        return this._showTime;\n    }\n\n    set showTime(showTime: boolean) {\n        this._showTime = showTime;\n\n        if (this.currentHour === undefined) {\n            this.initTime(this.value||new Date());\n        }\n        this.updateInputfield();\n    }\n\n    get locale() {\n       return this._locale;\n    }\n\n    @Input()\n    set locale(newLocale: LocaleSettings) {\n        console.warn(\"Locale property has no effect, use new i18n API instead.\");\n    }\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, private zone: NgZone, private config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        const date = this.defaultDate||new Date();\n        this.currentMonth = date.getMonth();\n        this.currentYear = date.getFullYear();\n\n        if (this.view === 'date') {\n            this.createWeekDays();\n            this.initTime(date);\n            this.createMonths(this.currentMonth, this.currentYear);\n            this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);\n        }\n        else if (this.view === 'month') {\n            this.createMonthPickerValues();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.createWeekDays();\n        });\n\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'date':\n                    this.dateTemplate = item.template;\n                break;\n\n                case 'disabledDate':\n                    this.disabledDateTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.dateTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    populateYearOptions(start, end) {\n        this.yearOptions = [];\n\n        for (let i = start; i <= end; i++) {\n            this.yearOptions.push(i);\n        }\n    }\n\n    createWeekDays() {\n        this.weekDays = [];\n        let dayIndex = this.firstDayOfWeek;\n        let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n        for (let i = 0; i < 7; i++) {\n            this.weekDays.push(dayLabels[dayIndex]);\n            dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;\n        }\n    }\n\n    createMonthPickerValues() {\n        this.monthPickerValues = [];\n        let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);\n        for (let i = 0; i <= 11; i++) {\n            this.monthPickerValues.push(monthLabels[i]);\n        }\n    }\n\n    createMonths(month: number, year: number) {\n        this.months = this.months = [];\n        for (let i = 0 ; i < this.numberOfMonths; i++) {\n            let m = month + i;\n            let y = year;\n            if (m > 11) {\n                m = m % 11 - 1;\n                y = year + 1;\n            }\n\n            this.months.push(this.createMonth(m, y));\n        }\n    }\n\n    getWeekNumber(date: Date) {\n        let checkDate = new Date(date.getTime());\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ));\n\t\tlet time = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 );\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round((time - checkDate.getTime()) / 86400000 ) / 7 ) + 1;\n    }\n\n    createMonth(month: number, year: number) {\n        let dates = [];\n        let firstDay = this.getFirstDayOfMonthIndex(month, year);\n        let daysLength = this.getDaysCountInMonth(month, year);\n        let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n        let dayNo = 1;\n        let today = new Date();\n        let weekNumbers = [];\n        let monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n        for (let i = 0; i < monthRows; i++) {\n            let week = [];\n\n            if (i == 0) {\n                for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {\n                    let prev = this.getPreviousMonthAndYear(month, year);\n                    week.push({day: j, month: prev.month, year: prev.year, otherMonth: true,\n                            today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true)});\n                }\n\n                let remainingDaysLength = 7 - week.length;\n                for (let j = 0; j < remainingDaysLength; j++) {\n                    week.push({day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n                            selectable: this.isSelectable(dayNo, month, year, false)});\n                    dayNo++;\n                }\n            }\n            else {\n                for (let j = 0; j < 7; j++) {\n                    if (dayNo > daysLength) {\n                        let next = this.getNextMonthAndYear(month, year);\n                        week.push({day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,\n                                    today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n                                    selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true)});\n                    }\n                    else {\n                        week.push({day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n                            selectable: this.isSelectable(dayNo, month, year, false)});\n                    }\n\n                    dayNo++;\n                }\n            }\n\n            if (this.showWeek) {\n                weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n            }\n\n            dates.push(week);\n        }\n\n        return {\n            month: month,\n            year: year,\n            dates: dates,\n            weekNumbers: weekNumbers\n        };\n    }\n\n    initTime(date: Date) {\n        this.pm = date.getHours() > 11;\n\n        if (this.showTime) {\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n            this.setCurrentHourPM(date.getHours());\n        }\n        else if (this.timeOnly) {\n            this.currentMinute = 0;\n            this.currentHour = 0;\n            this.currentSecond = 0;\n        }\n    }\n\n    navBackward(event) {\n        event.stopPropagation();\n\n        if (this.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.isMonthNavigate = true;\n\n        if (this.view === 'month') {\n            this.decrementYear();\n            setTimeout(()=> {\n                this.updateFocus();\n            },1);\n        }\n        else {\n            if (this.currentMonth === 0) {\n                this.currentMonth = 11;\n                this.decrementYear();\n            }\n            else {\n                this.currentMonth--;\n            }\n\n            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    navForward(event) {\n        event.stopPropagation();\n\n        if (this.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.isMonthNavigate = true;\n\n        if (this.view === 'month') {\n            this.incrementYear();\n            setTimeout(()=> {\n                this.updateFocus();\n            },1);\n        }\n        else {\n            if (this.currentMonth === 11) {\n                this.currentMonth = 0;\n                this.incrementYear();\n            }\n            else {\n                this.currentMonth++;\n            }\n\n            this.onMonthChange.emit({month: this.currentMonth + 1, year: this.currentYear});\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    decrementYear() {\n        this.currentYear--;\n\n        if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n            this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n        }\n    }\n\n    incrementYear() {\n        this.currentYear++;\n\n        if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n            this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n        }\n    }\n\n    onDateSelect(event, dateMeta) {\n        if (this.disabled || !dateMeta.selectable) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n            this.value = this.value.filter((date, i) => {\n                return !this.isDateEquals(date, dateMeta);\n            });\n            if (this.value.length === 0) {\n                this.value = null;\n            }\n            this.updateModel(this.value);\n        }\n        else {\n            if (this.shouldSelectDate(dateMeta)) {\n                this.selectDate(dateMeta);\n            }\n        }\n\n        if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n            setTimeout(() => {\n                event.preventDefault();\n                this.hideOverlay();\n\n                if (this.mask) {\n                    this.disableModality();\n                }\n\n                this.cd.markForCheck();\n            }, 150);\n        }\n\n        this.updateInputfield();\n        event.preventDefault();\n    }\n\n    shouldSelectDate(dateMeta) {\n        if (this.isMultipleSelection())\n            return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;\n        else\n            return true;\n    }\n\n    onMonthSelect(event, index) {\n        if (!DomHandler.hasClass(event.target, 'p-disabled')) {\n            this.onDateSelect(event, {year: this.currentYear, month: index, day: 1, selectable: true});\n        }\n    }\n\n    updateInputfield() {\n        let formattedValue = '';\n\n        if (this.value) {\n            if (this.isSingleSelection()) {\n                formattedValue = this.formatDateTime(this.value);\n            }\n            else if (this.isMultipleSelection()) {\n                for (let i = 0; i < this.value.length; i++) {\n                    let dateAsString = this.formatDateTime(this.value[i]);\n                    formattedValue += dateAsString;\n                    if (i !== (this.value.length - 1)) {\n                        formattedValue += this.multipleSeparator+' ';\n                    }\n                }\n            }\n            else if (this.isRangeSelection()) {\n                if (this.value && this.value.length) {\n                    let startDate = this.value[0];\n                    let endDate = this.value[1];\n\n                    formattedValue = this.formatDateTime(startDate);\n                    if (endDate) {\n                        formattedValue += ' '+this.rangeSeparator +' ' + this.formatDateTime(endDate);\n                    }\n                }\n            }\n        }\n\n        this.inputFieldValue = formattedValue;\n        this.updateFilledState();\n        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n            this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n        }\n    }\n\n    formatDateTime(date) {\n        let formattedValue = null;\n        if (date) {\n            if (this.timeOnly) {\n                formattedValue = this.formatTime(date);\n            }\n            else {\n                formattedValue = this.formatDate(date, this.getDateFormat());\n                if (this.showTime) {\n                    formattedValue += ' ' + this.formatTime(date);\n                }\n            }\n        }\n\n        return formattedValue;\n    }\n\n    setCurrentHourPM(hours: number) {\n        if (this.hourFormat == '12') {\n            this.pm = hours > 11;\n            if (hours >= 12) {\n                this.currentHour = (hours == 12) ? 12 : hours - 12;\n            }\n            else {\n                this.currentHour = (hours == 0) ? 12 : hours;\n            }\n        }\n        else {\n            this.currentHour = hours;\n        }\n    }\n\n    selectDate(dateMeta) {\n        let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n        if (this.showTime) {\n            if (this.hourFormat == '12') {\n                if (this.currentHour === 12)\n                    date.setHours(this.pm ? 12 : 0);\n                else\n                    date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n            }\n            else {\n                date.setHours(this.currentHour);\n            }\n\n            date.setMinutes(this.currentMinute);\n            date.setSeconds(this.currentSecond);\n        }\n\n        if (this.minDate && this.minDate > date) {\n            date = this.minDate;\n            this.setCurrentHourPM(date.getHours());\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n        }\n\n        if (this.maxDate && this.maxDate < date) {\n            date = this.maxDate;\n            this.setCurrentHourPM(date.getHours());\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n        }\n\n        if (this.isSingleSelection()) {\n            this.updateModel(date);\n        }\n        else if (this.isMultipleSelection()) {\n            this.updateModel(this.value ? [...this.value, date] : [date]);\n        }\n        else if (this.isRangeSelection()) {\n            if (this.value && this.value.length) {\n                let startDate = this.value[0];\n                let endDate = this.value[1];\n\n                if (!endDate && date.getTime() >= startDate.getTime()) {\n                    endDate = date;\n                }\n                else {\n                    startDate = date;\n                    endDate = null;\n                }\n\n                this.updateModel([startDate, endDate]);\n            }\n            else {\n                this.updateModel([date, null]);\n            }\n        }\n\n        this.onSelect.emit(date);\n    }\n\n    updateModel(value) {\n        this.value = value;\n\n        if (this.dataType == 'date') {\n            this.onModelChange(this.value);\n        }\n        else if (this.dataType == 'string') {\n            if (this.isSingleSelection()) {\n                this.onModelChange(this.formatDateTime(this.value));\n            }\n            else {\n                let stringArrValue = null;\n                if (this.value) {\n                    stringArrValue = this.value.map(date => this.formatDateTime(date));\n                }\n                this.onModelChange(stringArrValue);\n            }\n        }\n    }\n\n    getFirstDayOfMonthIndex(month: number, year: number) {\n        let day = new Date();\n        day.setDate(1);\n        day.setMonth(month);\n        day.setFullYear(year);\n\n        let dayIndex = day.getDay() + this.getSundayIndex();\n        return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n    }\n\n    getDaysCountInMonth(month: number, year: number) {\n        return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n    }\n\n    getDaysCountInPrevMonth(month: number, year: number) {\n        let prev = this.getPreviousMonthAndYear(month, year);\n        return this.getDaysCountInMonth(prev.month, prev.year);\n    }\n\n    getPreviousMonthAndYear(month: number, year: number) {\n        let m, y;\n\n        if (month === 0) {\n            m = 11;\n            y = year - 1;\n        }\n        else {\n            m = month - 1;\n            y = year;\n        }\n\n        return {'month':m,'year':y};\n    }\n\n    getNextMonthAndYear(month: number, year: number) {\n        let m, y;\n\n        if (month === 11) {\n            m = 0;\n            y = year + 1;\n        }\n        else {\n            m = month + 1;\n            y = year;\n        }\n\n        return {'month':m,'year':y};\n    }\n\n    getSundayIndex() {\n        return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;\n    }\n\n    isSelected(dateMeta): boolean {\n        if (this.value) {\n            if (this.isSingleSelection()) {\n                return this.isDateEquals(this.value, dateMeta);\n            }\n            else if (this.isMultipleSelection()) {\n                let selected = false;\n                for (let date of this.value) {\n                    selected = this.isDateEquals(date, dateMeta);\n                    if (selected) {\n                        break;\n                    }\n                }\n\n                return selected;\n            }\n            else if (this.isRangeSelection()) {\n                if (this.value[1])\n                    return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);\n                else\n                    return this.isDateEquals(this.value[0], dateMeta)\n            }\n        }\n        else {\n            return false;\n        }\n    }\n\n    isMonthSelected(month: number): boolean {\n        let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;\n        return this.isSelected({year: this.currentYear, month: month, day: day, selectable: true});\n    }\n\n    isDateEquals(value, dateMeta) {\n        if (value)\n            return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;\n        else\n            return false;\n    }\n\n    isDateBetween(start, end, dateMeta) {\n        let between : boolean = false;\n        if (start && end) {\n            let date: Date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n            return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n        }\n\n        return between;\n    }\n\n    isSingleSelection(): boolean {\n        return this.selectionMode === 'single';\n    }\n\n    isRangeSelection(): boolean {\n        return this.selectionMode === 'range';\n    }\n\n    isMultipleSelection(): boolean {\n        return this.selectionMode === 'multiple';\n    }\n\n    isToday(today, day, month, year): boolean {\n        return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n    }\n\n    isSelectable(day, month, year, otherMonth): boolean {\n        let validMin = true;\n        let validMax = true;\n        let validDate = true;\n        let validDay = true;\n\n        if (otherMonth && !this.selectOtherMonths) {\n            return false;\n        }\n\n        if (this.minDate) {\n             if (this.minDate.getFullYear() > year) {\n                 validMin = false;\n             }\n             else if (this.minDate.getFullYear() === year) {\n                 if (this.minDate.getMonth() > month) {\n                     validMin = false;\n                 }\n                 else if (this.minDate.getMonth() === month) {\n                     if (this.minDate.getDate() > day) {\n                         validMin = false;\n                     }\n                 }\n             }\n        }\n\n        if (this.maxDate) {\n             if (this.maxDate.getFullYear() < year) {\n                 validMax = false;\n             }\n             else if (this.maxDate.getFullYear() === year) {\n                 if (this.maxDate.getMonth() < month) {\n                     validMax = false;\n                 }\n                 else if (this.maxDate.getMonth() === month) {\n                     if (this.maxDate.getDate() < day) {\n                         validMax = false;\n                     }\n                 }\n             }\n        }\n\n        if (this.disabledDates) {\n           validDate = !this.isDateDisabled(day,month,year);\n        }\n\n        if (this.disabledDays) {\n           validDay = !this.isDayDisabled(day,month,year)\n        }\n\n        return validMin && validMax && validDate && validDay;\n    }\n\n    isDateDisabled(day:number, month:number, year:number):boolean {\n        if (this.disabledDates) {\n            for (let disabledDate of this.disabledDates) {\n                if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    isDayDisabled(day:number, month:number, year:number):boolean {\n        if (this.disabledDays) {\n            let weekday = new Date(year, month, day);\n            let weekdayNumber = weekday.getDay();\n            return this.disabledDays.indexOf(weekdayNumber) !== -1;\n        }\n        return false;\n    }\n\n    onInputFocus(event: Event) {\n        this.focus = true;\n        if (this.showOnFocus) {\n            this.showOverlay();\n        }\n        this.onFocus.emit(event);\n    }\n\n    onInputClick() {\n        if (this.showOnFocus && !this.overlayVisible) {\n            this.showOverlay();\n        }\n    }\n\n    onInputBlur(event: Event) {\n        this.focus = false;\n        this.onBlur.emit(event);\n        if (!this.keepInvalid) {\n            this.updateInputfield();\n        }\n        this.onModelTouched();\n    }\n\n    onButtonClick(event, inputfield) {\n        if (!this.overlayVisible) {\n            inputfield.focus();\n            this.showOverlay();\n        }\n        else {\n            this.hideOverlay();\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onPrevButtonClick(event) {\n        this.navigationState = {backward: true, button: true};\n        this.navBackward(event);\n    }\n\n    onNextButtonClick(event) {\n        this.navigationState = {backward: false, button: true};\n        this.navForward(event);\n    }\n\n    onContainerButtonKeydown(event) {\n        switch (event.which) {\n           //tab\n           case 9:\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n           break;\n\n           //escape\n           case 27:\n               this.overlayVisible = false;\n               event.preventDefault();\n           break;\n\n           default:\n               //Noop\n           break;\n        }\n   }\n\n    onInputKeydown(event) {\n        this.isKeydown = true;\n        if (event.keyCode === 40 && this.contentViewChild) {\n            this.trapFocus(event);\n        }\n        else if (event.keyCode === 27) {\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n                event.preventDefault();\n            }\n        }\n        else if (event.keyCode === 13) {\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n                event.preventDefault();\n            }\n        }\n        else if (event.keyCode === 9 && this.contentViewChild) {\n            DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n            }\n        }\n    }\n\n    onDateCellKeydown(event, date, groupIndex) {\n        const cellContent = event.currentTarget;\n        const cell = cellContent.parentElement;\n\n        switch (event.which) {\n            //down arrow\n            case 40: {\n                cellContent.tabIndex = '-1';\n                let cellIndex = DomHandler.index(cell);\n                let nextRow = cell.parentElement.nextElementSibling;\n                if (nextRow) {\n                    let focusCell = nextRow.children[cellIndex].children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigationState = {backward: false};\n                        this.navForward(event);\n                    }\n                    else {\n                        nextRow.children[cellIndex].children[0].tabIndex = '0';\n                        nextRow.children[cellIndex].children[0].focus();\n                    }\n                }\n                else {\n                    this.navigationState = {backward: false};\n                    this.navForward(event);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //up arrow\n            case 38: {\n                cellContent.tabIndex = '-1';\n                let cellIndex = DomHandler.index(cell);\n                let prevRow = cell.parentElement.previousElementSibling;\n                if (prevRow) {\n                    let focusCell = prevRow.children[cellIndex].children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigationState = {backward: true};\n                        this.navBackward(event);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigationState = {backward: true};\n                    this.navBackward(event);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //left arrow\n            case 37: {\n                cellContent.tabIndex = '-1';\n                let prevCell = cell.previousElementSibling;\n                if (prevCell) {\n                    let focusCell = prevCell.children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n                        this.navigateToMonth(true, groupIndex);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigateToMonth(true, groupIndex);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //right arrow\n            case 39: {\n                cellContent.tabIndex = '-1';\n                let nextCell = cell.nextElementSibling;\n                if (nextCell) {\n                    let focusCell = nextCell.children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigateToMonth(false, groupIndex);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigateToMonth(false, groupIndex);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //enter\n            case 13: {\n                this.onDateSelect(event, date);\n                event.preventDefault();\n                break;\n            }\n\n            //escape\n            case 27: {\n                this.overlayVisible = false;\n                event.preventDefault();\n                break;\n            }\n\n            //tab\n            case 9: {\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n                break;\n            }\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    onMonthCellKeydown(event, index) {\n        const cell = event.currentTarget;\n        switch (event.which) {\n            //arrows\n            case 38:\n            case 40: {\n                cell.tabIndex = '-1';\n                var cells = cell.parentElement.children;\n                var cellIndex = DomHandler.index(cell);\n                let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex -3];\n                if (nextCell) {\n                    nextCell.tabIndex = '0';\n                    nextCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //left arrow\n            case 37: {\n                cell.tabIndex = '-1';\n                let prevCell = cell.previousElementSibling;\n                if (prevCell) {\n                    prevCell.tabIndex = '0';\n                    prevCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //right arrow\n            case 39: {\n                cell.tabIndex = '-1';\n                let nextCell = cell.nextElementSibling;\n                if (nextCell) {\n                    nextCell.tabIndex = '0';\n                    nextCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //enter\n            case 13: {\n                this.onMonthSelect(event, index);\n                event.preventDefault();\n                break;\n            }\n\n            //escape\n            case 27: {\n                this.overlayVisible = false;\n                event.preventDefault();\n                break;\n            }\n\n            //tab\n            case 9: {\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n                break;\n            }\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    navigateToMonth(prev, groupIndex) {\n        if (prev) {\n            if (this.numberOfMonths === 1 || (groupIndex === 0)) {\n                this.navigationState = {backward: true};\n                this.navBackward(event);\n            }\n            else {\n                let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n                let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                let focusCell = cells[cells.length - 1];\n                focusCell.tabIndex = '0';\n                focusCell.focus();\n            }\n        }\n        else {\n            if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {\n                this.navigationState = {backward: false};\n                this.navForward(event);\n            }\n            else {\n                let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n                let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                focusCell.tabIndex = '0';\n                focusCell.focus();\n            }\n        }\n    }\n\n    updateFocus() {\n        let cell;\n        if (this.navigationState) {\n            if (this.navigationState.button) {\n                this.initFocusableCell();\n\n                if (this.navigationState.backward)\n                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();\n                else\n                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n            }\n            else {\n                if (this.navigationState.backward) {\n                    let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                    cell = cells[cells.length - 1];\n                }\n                else {\n                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                }\n\n                if (cell) {\n                    cell.tabIndex = '0';\n                    cell.focus();\n                }\n            }\n\n            this.navigationState = null;\n        }\n        else {\n            this.initFocusableCell();\n        }\n    }\n\n    initFocusableCell() {\n        let cell;\n        if (this.view === 'month') {\n            let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n            let selectedCell= DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');\n            cells.forEach(cell => cell.tabIndex = -1);\n            cell = selectedCell || cells[0];\n\n            if (cells.length === 0) {\n                let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n                disabledCells.forEach(cell => cell.tabIndex = -1);\n            }\n        }\n        else {\n            cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');\n            if (!cell) {\n                let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n                if (todayCell)\n                    cell = todayCell;\n                else\n                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n            }\n        }\n\n        if (cell) {\n            cell.tabIndex = '0';\n        }\n    }\n\n    trapFocus(event) {\n        let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n\n        if (focusableElements && focusableElements.length > 0) {\n            if (!focusableElements[0].ownerDocument.activeElement) {\n                focusableElements[0].focus();\n            }\n            else {\n                let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                if (event.shiftKey) {\n                    if (focusedIndex == -1 || focusedIndex === 0) {\n                        if (this.focusTrap){\n                            focusableElements[focusableElements.length - 1].focus();\n                        }\n                        else {\n                            if (focusedIndex === -1)\n                                return this.hideOverlay();\n                            else if (focusedIndex === 0)\n                                return;\n                        }\n                    }\n                    else {\n                        focusableElements[focusedIndex - 1].focus();\n                    }\n                }\n                else {\n                    if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {\n                        if (!this.focusTrap && focusedIndex != -1)\n                            return this.hideOverlay();\n                        else\n                            focusableElements[0].focus();\n                    }\n                    else {\n                        focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n\n        event.preventDefault();\n    }\n\n    onMonthDropdownChange(m: string) {\n        this.currentMonth = parseInt(m);\n        this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n        this.createMonths(this.currentMonth, this.currentYear);\n    }\n\n    onYearDropdownChange(y: string) {\n        this.currentYear = parseInt(y);\n        this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n        this.createMonths(this.currentMonth, this.currentYear);\n    }\n\n    convertTo24Hour = function (hours: number, pm: boolean) {\n        if (this.hourFormat == '12') {\n            if (hours === 12) {\n                return (pm ? 12 : 0);\n            } else {\n                return (pm ? hours + 12 : hours);\n            }\n        }\n        return hours;\n    }\n\n    validateTime(hour: number, minute: number, second: number, pm: boolean) {\n        let value = this.value;\n        const convertedHour = this.convertTo24Hour(hour, pm);\n        if (this.isRangeSelection()) {\n            value = this.value[1] || this.value[0];\n        }\n        if (this.isMultipleSelection()) {\n            value = this.value[this.value.length - 1];\n        }\n        const valueDateString = value ? value.toDateString() : null;\n        if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n            if (this.minDate.getHours() > convertedHour) {\n                return false;\n            }\n            if (this.minDate.getHours() === convertedHour) {\n                if (this.minDate.getMinutes() > minute) {\n                    return false;\n                }\n                if (this.minDate.getMinutes() === minute) {\n                    if (this.minDate.getSeconds() > second) {\n                        return false;\n                    }\n                }\n            }\n        }\n\n      if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n            if (this.maxDate.getHours() < convertedHour) {\n                return false;\n            }\n            if (this.maxDate.getHours() === convertedHour) {\n                if (this.maxDate.getMinutes() < minute) {\n                    return false;\n                }\n                if (this.maxDate.getMinutes() === minute) {\n                  if (this.maxDate.getSeconds() < second) {\n                      return false;\n                  }\n                }\n            }\n        }\n        return true;\n    }\n\n\n    incrementHour(event) {\n        const prevHour = this.currentHour;\n        let newHour = this.currentHour + this.stepHour;\n        let newPM = this.pm;\n\n        if (this.hourFormat == '24')\n            newHour = (newHour >= 24) ? (newHour - 24) : newHour;\n        else if (this.hourFormat == '12') {\n            // Before the AM/PM break, now after\n            if (prevHour < 12 && newHour > 11) {\n                newPM= !this.pm;\n            }\n            newHour = (newHour >= 13) ? (newHour - 12) : newHour;\n        }\n\n        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.currentHour = newHour;\n          this.pm = newPM;\n        }\n        event.preventDefault();\n    }\n\n    onTimePickerElementMouseDown(event: Event, type: number, direction: number) {\n        if (!this.disabled) {\n            this.repeat(event, null, type, direction);\n            event.preventDefault();\n        }\n    }\n\n    onTimePickerElementMouseUp(event: Event) {\n        if (!this.disabled) {\n            this.clearTimePickerTimer();\n            this.updateTime();\n        }\n    }\n\n    onTimePickerElementMouseLeave() {\n        if (!this.disabled && this.timePickerTimer) {\n            this.clearTimePickerTimer();\n            this.updateTime();\n        }\n    }\n\n    repeat(event: Event, interval: number, type: number, direction: number) {\n        let i = interval||500;\n\n        this.clearTimePickerTimer();\n        this.timePickerTimer = setTimeout(() => {\n            this.repeat(event, 100, type, direction);\n            this.cd.markForCheck();\n        }, i);\n\n        switch(type) {\n            case 0:\n                if (direction === 1)\n                    this.incrementHour(event);\n                else\n                    this.decrementHour(event);\n            break;\n\n            case 1:\n                if (direction === 1)\n                    this.incrementMinute(event);\n                else\n                    this.decrementMinute(event);\n            break;\n\n            case 2:\n                if (direction === 1)\n                    this.incrementSecond(event);\n                else\n                    this.decrementSecond(event);\n            break;\n        }\n\n        this.updateInputfield();\n    }\n\n    clearTimePickerTimer() {\n        if (this.timePickerTimer) {\n            clearTimeout(this.timePickerTimer);\n            this.timePickerTimer = null;\n        }\n    }\n\n    decrementHour(event) {\n        let newHour = this.currentHour - this.stepHour;\n        let newPM = this.pm\n\n        if (this.hourFormat == '24')\n            newHour = (newHour < 0) ? (24 + newHour) : newHour;\n        else if (this.hourFormat == '12') {\n            // If we were at noon/midnight, then switch\n            if (this.currentHour === 12) {\n                newPM = !this.pm;\n            }\n            newHour = (newHour <= 0) ? (12 + newHour) : newHour;\n        }\n\n        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.currentHour = newHour;\n          this.pm = newPM;\n        }\n\n        event.preventDefault();\n    }\n\n    incrementMinute(event) {\n        let newMinute = this.currentMinute + this.stepMinute;\n        newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;\n        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n            this.currentMinute = newMinute;\n        }\n\n        event.preventDefault();\n    }\n\n    decrementMinute(event) {\n        let newMinute = this.currentMinute - this.stepMinute;\n        newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;\n        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n            this.currentMinute = newMinute;\n        }\n\n        event.preventDefault();\n    }\n\n    incrementSecond(event) {\n        let newSecond = this.currentSecond + this.stepSecond;\n        newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;\n        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n            this.currentSecond = newSecond;\n        }\n\n        event.preventDefault();\n    }\n\n    decrementSecond(event) {\n        let newSecond = this.currentSecond - this.stepSecond;\n        newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;\n        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n            this.currentSecond = newSecond;\n        }\n\n        event.preventDefault();\n    }\n\n    updateTime() {\n        let value = this.value;\n        if (this.isRangeSelection()) {\n            value = this.value[1] || this.value[0];\n        }\n        if (this.isMultipleSelection()) {\n            value = this.value[this.value.length - 1];\n        }\n        value = value ? new Date(value.getTime()) : new Date();\n\n        if (this.hourFormat == '12') {\n            if (this.currentHour === 12)\n                value.setHours(this.pm ? 12 : 0);\n            else\n                value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n        }\n        else {\n            value.setHours(this.currentHour);\n        }\n\n        value.setMinutes(this.currentMinute);\n        value.setSeconds(this.currentSecond);\n        if (this.isRangeSelection()) {\n            if (this.value[1])\n                value = [this.value[0], value];\n            else\n                value = [value, null];\n        }\n\n        if (this.isMultipleSelection()){\n            value = [...this.value.slice(0, -1), value];\n        }\n\n        this.updateModel(value);\n        this.onSelect.emit(value);\n        this.updateInputfield();\n    }\n\n    toggleAMPM(event) {\n        const newPM = !this.pm;\n        if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.pm = newPM;\n          this.updateTime();\n        }\n        event.preventDefault();\n    }\n\n    onUserInput(event) {\n        // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n        if (!this.isKeydown) {\n            return;\n        }\n        this.isKeydown = false;\n\n        let val = event.target.value;\n        try {\n            let value = this.parseValueFromString(val);\n            if (this.isValidSelection(value)) {\n                this.updateModel(value);\n                this.updateUI();\n            }\n        }\n        catch(err) {\n            //invalid date\n            this.updateModel(null);\n        }\n\n        this.filled = val != null && val.length;\n        this.onInput.emit(event);\n    }\n\n    isValidSelection(value): boolean {\n        let isValid = true;\n        if (this.isSingleSelection()) {\n            if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n                isValid = false;\n            }\n        } else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n            if (this.isRangeSelection()) {\n                isValid = value.length > 1 && value[1] > value[0] ? true : false;\n            }\n        }\n        return isValid;\n    }\n\n    parseValueFromString(text: string): Date | Date[]{\n        if (!text || text.trim().length === 0) {\n            return null;\n        }\n\n        let value: any;\n\n        if (this.isSingleSelection()) {\n            value = this.parseDateTime(text);\n        }\n        else if (this.isMultipleSelection()) {\n            let tokens = text.split(this.multipleSeparator);\n            value = [];\n            for (let token of tokens) {\n                value.push(this.parseDateTime(token.trim()));\n            }\n        }\n        else if (this.isRangeSelection()) {\n            let tokens = text.split(' '+this.rangeSeparator +' ');\n            value = [];\n            for (let i = 0; i < tokens.length; i++) {\n                value[i] = this.parseDateTime(tokens[i].trim());\n            }\n        }\n\n        return value;\n    }\n\n    parseDateTime(text): Date {\n        let date: Date;\n        let parts: string[] = text.split(' ');\n\n        if (this.timeOnly) {\n            date = new Date();\n            this.populateTime(date, parts[0], parts[1]);\n        }\n        else {\n            const dateFormat = this.getDateFormat();\n            if (this.showTime) {\n                let ampm = this.hourFormat == '12' ? parts.pop() : null;\n                let timeString = parts.pop();\n\n                date = this.parseDate(parts.join(' '), dateFormat);\n                this.populateTime(date, timeString, ampm);\n            }\n            else {\n                 date = this.parseDate(text, dateFormat);\n            }\n        }\n\n        return date;\n    }\n\n    populateTime(value, timeString, ampm) {\n        if (this.hourFormat == '12' && !ampm) {\n            throw 'Invalid Time';\n        }\n\n        this.pm = (ampm === 'PM' || ampm === 'pm');\n        let time = this.parseTime(timeString);\n        value.setHours(time.hour);\n        value.setMinutes(time.minute);\n        value.setSeconds(time.second);\n    }\n\n    updateUI() {\n        let val = this.value||this.defaultDate||new Date();\n        if (Array.isArray(val)){\n            val = val[0];\n        }\n\n        this.currentMonth = val.getMonth();\n        this.currentYear = val.getFullYear();\n        this.createMonths(this.currentMonth, this.currentYear);\n\n        if (this.showTime||this.timeOnly) {\n            this.setCurrentHourPM(val.getHours());\n            this.currentMinute = val.getMinutes();\n            this.currentSecond = val.getSeconds();\n        }\n    }\n\n    showOverlay() {\n        if (!this.overlayVisible) {\n            this.updateUI();\n            this.overlayVisible = true;\n        }\n    }\n\n    hideOverlay() {\n        this.overlayVisible = false;\n        this.clearTimePickerTimer();\n\n        if (this.touchUI) {\n            this.disableModality();\n        }\n\n        this.cd.markForCheck();\n    }\n\n    toggle() {\n        if (!this.inline){\n            if (!this.overlayVisible) {\n                this.showOverlay();\n                this.inputfieldViewChild.nativeElement.focus();\n            }\n            else {\n                this.hideOverlay();\n            }\n        }\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n            case 'visibleTouchUI':\n                if (!this.inline) {\n                    this.overlay = event.element;\n                    this.appendOverlay();\n                    if (this.autoZIndex) {\n                        if (this.touchUI)\n                            ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);\n                        else\n                            ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n                    }\n\n                    this.alignOverlay();\n                    this.onShow.emit(event);\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onClose.emit(event);\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n            case 'visibleTouchUI':\n                if (!this.inline) {\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.touchUI) {\n            this.enableModality(this.overlay);\n        }\n        else {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n        }\n    }\n\n    enableModality(element) {\n        if (!this.mask) {\n            this.mask = document.createElement('div');\n            this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);\n            let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n            DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n\n\t\t\tthis.maskClickListener = this.renderer.listen(this.mask, 'click', (event: any) => {\n                this.disableModality();\n            });\n            document.body.appendChild(this.mask);\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.mask) {\n            DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n            this.animationEndListener = this.destroyMask.bind(this);\n            this.mask.addEventListener('animationend', this.animationEndListener);\n        }\n    }\n\n    destroyMask() {\n        document.body.removeChild(this.mask);\n        let bodyChildren = document.body.children;\n        let hasBlockerMasks: boolean;\n        for (let i = 0; i < bodyChildren.length; i++) {\n            let bodyChild = bodyChildren[i];\n            if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n                hasBlockerMasks = true;\n                break;\n            }\n        }\n\n        if (!hasBlockerMasks) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.unbindAnimationEndListener();\n        this.unbindMaskClickListener();\n        this.mask = null;\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n\t\t}\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        if (this.value && typeof this.value === 'string') {\n            this.value = this.parseValueFromString(this.value);\n        }\n\n        this.updateInputfield();\n        this.updateUI();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    getDateFormat() {\n        return this.dateFormat||this.getTranslation('dateFormat');\n    }\n\n    // Ported from jquery-ui datepicker formatDate\n    formatDate(date, format) {\n        if (!date) {\n            return '';\n        }\n\n        let iFormat;\n        const lookAhead = (match) => {\n            const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n            if (matches) {\n                iFormat++;\n            }\n            return matches;\n        },\n            formatNumber = (match, value, len) => {\n                let num = '' + value;\n                if (lookAhead(match)) {\n                    while (num.length < len) {\n                        num = '0' + num;\n                    }\n                }\n                return num;\n            },\n            formatName = (match, value, shortNames, longNames) => {\n                return (lookAhead(match) ? longNames[value] : shortNames[value]);\n            };\n        let output = '';\n        let literal = false;\n\n        if (date) {\n            for (iFormat = 0; iFormat < format.length; iFormat++) {\n                if (literal) {\n                    if (format.charAt(iFormat) === '\\'' && !lookAhead('\\'')) {\n                        literal = false;\n                    } else {\n                        output += format.charAt(iFormat);\n                    }\n                } else {\n                    switch (format.charAt(iFormat)) {\n                        case 'd':\n                            output += formatNumber('d', date.getDate(), 2);\n                            break;\n                        case 'D':\n                            output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n                            break;\n                        case 'o':\n                            output += formatNumber('o',\n                            Math.round((\n                                new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -\n                                new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n                            break;\n                        case 'm':\n                            output += formatNumber('m', date.getMonth() + 1, 2);\n                            break;\n                        case 'M':\n                            output += formatName('M',date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n                            break;\n                        case 'y':\n                            output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n                            break;\n                        case '@':\n                            output += date.getTime();\n                            break;\n                        case '!':\n                            output += date.getTime() * 10000 + this.ticksTo1970;\n                            break;\n                        case '\\'':\n                            if (lookAhead('\\'')) {\n                                output += '\\'';\n                            } else {\n                                literal = true;\n                            }\n                            break;\n                        default:\n                            output += format.charAt(iFormat);\n                    }\n                }\n            }\n        }\n        return output;\n    }\n\n    formatTime(date) {\n        if (!date) {\n            return '';\n        }\n\n        let output = '';\n        let hours = date.getHours();\n        let minutes = date.getMinutes();\n        let seconds = date.getSeconds();\n\n        if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n            hours-=12;\n        }\n\n        if (this.hourFormat == '12') {\n            output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;\n        } else {\n            output += (hours < 10) ? '0' + hours : hours;\n        }\n        output += ':';\n        output += (minutes < 10) ? '0' + minutes : minutes;\n\n        if (this.showSeconds) {\n            output += ':';\n            output += (seconds < 10) ? '0' + seconds : seconds;\n        }\n\n        if (this.hourFormat == '12') {\n            output += date.getHours() > 11 ? ' PM' : ' AM';\n        }\n\n        return output;\n    }\n\n    parseTime(value) {\n        let tokens: string[] = value.split(':');\n        let validTokenLength = this.showSeconds ? 3 : 2;\n\n        if (tokens.length !== validTokenLength) {\n            throw \"Invalid time\";\n        }\n\n        let h = parseInt(tokens[0]);\n        let m = parseInt(tokens[1]);\n        let s = this.showSeconds ? parseInt(tokens[2]) : null;\n\n        if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {\n            throw \"Invalid time\";\n        }\n        else {\n            if (this.hourFormat == '12') {\n                if (h !== 12 && this.pm) {\n                    h += 12;\n                }\n                else if (!this.pm && h === 12) {\n                    h -= 12;\n                }\n            }\n\n            return {hour: h, minute: m, second: s};\n        }\n    }\n\n    // Ported from jquery-ui datepicker parseDate\n    parseDate(value, format) {\n        if (format == null || value == null) {\n            throw \"Invalid arguments\";\n        }\n\n        value = (typeof value === \"object\" ? value.toString() : value + \"\");\n        if (value === \"\") {\n            return null;\n        }\n\n        let iFormat, dim, extra,\n        iValue = 0,\n        shortYearCutoff = (typeof this.shortYearCutoff !== \"string\" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)),\n        year = -1,\n        month = -1,\n        day = -1,\n        doy = -1,\n        literal = false,\n        date,\n        lookAhead = (match) => {\n            let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n            if (matches) {\n                iFormat++;\n            }\n            return matches;\n        },\n        getNumber = (match) => {\n            let isDoubled = lookAhead(match),\n                size = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n                (match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\n                minSize = (match === \"y\" ? size : 1),\n                digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n                num = value.substring(iValue).match(digits);\n            if (!num) {\n                throw \"Missing number at position \" + iValue;\n            }\n            iValue += num[ 0 ].length;\n            return parseInt(num[ 0 ], 10);\n        },\n        getName = (match, shortNames, longNames) => {\n            let index = -1;\n            let arr = lookAhead(match) ? longNames : shortNames;\n            let names = [];\n\n            for (let i = 0; i < arr.length; i++) {\n                names.push([i,arr[i]]);\n            }\n            names.sort((a,b) => {\n                return -(a[ 1 ].length - b[ 1 ].length);\n            });\n\n            for (let i = 0; i < names.length; i++) {\n                let name = names[i][1];\n                if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n                    index = names[i][0];\n                    iValue += name.length;\n                    break;\n                }\n            }\n\n            if (index !== -1) {\n                return index + 1;\n            } else {\n                throw \"Unknown name at position \" + iValue;\n            }\n        },\n        checkLiteral = () => {\n            if (value.charAt(iValue) !== format.charAt(iFormat)) {\n                throw \"Unexpected literal at position \" + iValue;\n            }\n            iValue++;\n        };\n\n        if (this.view === 'month') {\n            day = 1;\n        }\n\n        for (iFormat = 0; iFormat < format.length; iFormat++) {\n            if (literal) {\n                if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n                    literal = false;\n                } else {\n                    checkLiteral();\n                }\n            } else {\n                switch (format.charAt(iFormat)) {\n                    case \"d\":\n                        day = getNumber(\"d\");\n                        break;\n                    case \"D\":\n                        getName(\"D\", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n                        break;\n                    case \"o\":\n                        doy = getNumber(\"o\");\n                        break;\n                    case \"m\":\n                        month = getNumber(\"m\");\n                        break;\n                    case \"M\":\n                        month = getName(\"M\", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n                        break;\n                    case \"y\":\n                        year = getNumber(\"y\");\n                        break;\n                    case \"@\":\n                        date = new Date(getNumber(\"@\"));\n                        year = date.getFullYear();\n                        month = date.getMonth() + 1;\n                        day = date.getDate();\n                        break;\n                    case \"!\":\n                        date = new Date((getNumber(\"!\") - this.ticksTo1970) / 10000);\n                        year = date.getFullYear();\n                        month = date.getMonth() + 1;\n                        day = date.getDate();\n                        break;\n                    case \"'\":\n                        if (lookAhead(\"'\")) {\n                            checkLiteral();\n                        } else {\n                            literal = true;\n                        }\n                        break;\n                    default:\n                        checkLiteral();\n                }\n            }\n        }\n\n        if (iValue < value.length) {\n            extra = value.substr(iValue);\n            if (!/^\\s+/.test(extra)) {\n                throw \"Extra/unparsed characters found in date: \" + extra;\n            }\n        }\n\n        if (year === -1) {\n            year = new Date().getFullYear();\n        } else if (year < 100) {\n            year += new Date().getFullYear() - new Date().getFullYear() % 100 +\n                (year <= shortYearCutoff ? 0 : -100);\n        }\n\n        if (doy > -1) {\n            month = 1;\n            day = doy;\n            do {\n                dim = this.getDaysCountInMonth(year, month - 1);\n                if (day <= dim) {\n                    break;\n                }\n                month++;\n                day -= dim;\n            } while (true);\n        }\n\n        date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n                if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n                    throw \"Invalid date\"; // E.g. 31/02/00\n                }\n\n        return date;\n    }\n\n    daylightSavingAdjust(date) {\n        if (!date) {\n            return null;\n        }\n\n        date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\n        return date;\n    }\n\n    updateFilledState() {\n        this.filled = this.inputFieldValue && this.inputFieldValue != '';\n    }\n\n    onTodayButtonClick(event) {\n        let date: Date = new Date();\n        let dateMeta = {day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true};\n\n        this.onDateSelect(event, dateMeta);\n        this.onTodayClick.emit(event);\n    }\n\n    onClearButtonClick(event) {\n        this.updateModel(null);\n        this.updateInputfield();\n        this.hideOverlay();\n        this.onClearClick.emit(event);\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.zone.runOutsideAngular(() => {\n                const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n                this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                    if (this.isOutsideClicked(event) && this.overlayVisible) {\n                        this.zone.run(() => {\n                            this.hideOverlay();\n                            this.onClickOutside.emit(event);\n\n                            this.cd.markForCheck();\n                        });\n                    }\n\n                });\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        if (!this.documentResizeListener && !this.touchUI) {\n            this.documentResizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    isOutsideClicked(event: Event) {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) || \n                this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(<Node> event.target)));\n    }\n\n    isNavIconClicked(event: Event) {\n        return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')\n                || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));\n    }\n\n    onWindowResize() {\n        if (this.overlayVisible && !DomHandler.isAndroid()) {\n            this.hideOverlay();\n        }\n    }\n\n    onOverlayHide() {\n        if (this.mask) {\n            this.destroyMask();\n        }\n\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        if (this.overlay && this.autoZIndex) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.clearTimePickerTimer();\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule],\n    exports: [Calendar,ButtonModule,SharedModule],\n    declarations: [Calendar]\n})\nexport class CalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class Captcha {
+    constructor(el, _zone, cd) {
+        this.el = el;
+        this._zone = _zone;
+        this.cd = cd;
+        this.siteKey = null;
+        this.theme = 'light';
+        this.type = 'image';
+        this.size = 'normal';
+        this.tabindex = 0;
+        this.initCallback = "initRecaptcha";
+        this.onResponse = new EventEmitter();
+        this.onExpire = new EventEmitter();
+        this._instance = null;
+        this._language = null;
+    }
+    get language() {
+        return this._language;
+    }
+    set language(language) {
+        this._language = language;
+        this.init();
+    }
+    ngAfterViewInit() {
+        if (window.grecaptcha) {
+            if (!window.grecaptcha.render) {
+                setTimeout(() => {
+                    this.init();
+                }, 100);
+            }
+            else {
+                this.init();
+            }
+        }
+        else {
+            window[this.initCallback] = () => {
+                this.init();
+            };
+        }
+    }
+    init() {
+        this._instance = window.grecaptcha.render(this.el.nativeElement.children[0], {
+            'sitekey': this.siteKey,
+            'theme': this.theme,
+            'type': this.type,
+            'size': this.size,
+            'tabindex': this.tabindex,
+            'hl': this.language,
+            'callback': (response) => { this._zone.run(() => this.recaptchaCallback(response)); },
+            'expired-callback': () => { this._zone.run(() => this.recaptchaExpiredCallback()); }
+        });
+    }
+    reset() {
+        if (this._instance === null)
+            return;
+        window.grecaptcha.reset(this._instance);
+        this.cd.markForCheck();
+    }
+    getResponse() {
+        if (this._instance === null)
+            return null;
+        return window.grecaptcha.getResponse(this._instance);
+    }
+    recaptchaCallback(response) {
+        this.onResponse.emit({
+            response: response
+        });
+    }
+    recaptchaExpiredCallback() {
+        this.onExpire.emit();
+    }
+    ngOnDestroy() {
+        if (this._instance != null) {
+            window.grecaptcha.reset(this._instance);
+        }
+    }
+}
+Captcha.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Captcha.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Captcha, selector: "p-captcha", inputs: { siteKey: "siteKey", theme: "theme", type: "type", size: "size", tabindex: "tabindex", initCallback: "initCallback", language: "language" }, outputs: { onResponse: "onResponse", onExpire: "onExpire" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-captcha',
+                    template: `<div></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { siteKey: [{
+                type: Input
+            }], theme: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], initCallback: [{
+                type: Input
+            }], onResponse: [{
+                type: Output
+            }], onExpire: [{
+                type: Output
+            }], language: [{
+                type: Input
+            }] } });
+class CaptchaModule {
+}
+CaptchaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CaptchaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, declarations: [Captcha], imports: [CommonModule], exports: [Captcha] });
+CaptchaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Captcha],
+                    declarations: [Captcha]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Captcha, CaptchaModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-captcha.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-captcha.mjs","sources":["../../src/app/components/captcha/captcha.ts","../../src/app/components/captcha/primeng-captcha.ts"],"sourcesContent":["import {NgModule,AfterViewInit,Component,EventEmitter,Input,NgZone,OnDestroy,Output,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-captcha',\n    template: `<div></div>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Captcha implements AfterViewInit,OnDestroy {\n\n    @Input() siteKey: string = null;\n\n    @Input() theme = 'light';\n\n    @Input() type = 'image';\n\n    @Input() size = 'normal';\n\n    @Input() tabindex = 0;\n\n    @Input() initCallback = \"initRecaptcha\";\n\n    @Output() onResponse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onExpire: EventEmitter<any> = new EventEmitter();\n\n    private _instance: any = null;\n\n    private _language: any = null;\n\n\n    @Input() get language(): string {\n        return this._language;\n    }\n\n    set language(language: string) {\n        this._language = language;\n        this.init();\n    }\n\n    constructor(public el: ElementRef, public _zone: NgZone, public cd: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        if ((<any>window).grecaptcha) {\n            if (!(<any>window).grecaptcha.render){\n                setTimeout(() =>{\n                    this.init();\n                },100)\n            }\n            else {\n                this.init();\n            }\n        }\n        else {\n            (<any>window)[this.initCallback] = () => {\n              this.init();\n            }\n        }\n    }\n\n    init() {\n        this._instance = (<any>window).grecaptcha.render(this.el.nativeElement.children[0], {\n            'sitekey': this.siteKey,\n            'theme': this.theme,\n            'type': this.type,\n            'size': this.size,\n            'tabindex': this.tabindex,\n            'hl': this.language,\n            'callback': (response: string) => {this._zone.run(() => this.recaptchaCallback(response))},\n            'expired-callback': () => {this._zone.run(() => this.recaptchaExpiredCallback())}\n        });\n    }\n\n    reset() {\n        if (this._instance === null)\n            return;\n\n        (<any>window).grecaptcha.reset(this._instance);\n        this.cd.markForCheck();\n    }\n\n    getResponse(): String {\n        if (this._instance === null)\n            return null;\n\n        return (<any>window).grecaptcha.getResponse(this._instance);\n    }\n\n    recaptchaCallback(response: string) {\n        this.onResponse.emit({\n            response: response\n        });\n    }\n\n    recaptchaExpiredCallback() {\n        this.onExpire.emit();\n    }\n\n    ngOnDestroy() {\n        if (this._instance != null) {\n          (<any>window).grecaptcha.reset(this._instance);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Captcha],\n    declarations: [Captcha]\n})\nexport class CaptchaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAYa,OAAO;IAgChB,YAAmB,EAAc,EAAS,KAAa,EAAS,EAAqB;QAAlE,OAAE,GAAF,EAAE,CAAY;QAAS,UAAK,GAAL,KAAK,CAAQ;QAAS,OAAE,GAAF,EAAE,CAAmB;QA9B5E,YAAO,GAAW,IAAI,CAAC;QAEvB,UAAK,GAAG,OAAO,CAAC;QAEhB,SAAI,GAAG,OAAO,CAAC;QAEf,SAAI,GAAG,QAAQ,CAAC;QAEhB,aAAQ,GAAG,CAAC,CAAC;QAEb,iBAAY,GAAG,eAAe,CAAC;QAE9B,eAAU,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEnD,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEnD,cAAS,GAAQ,IAAI,CAAC;QAEtB,cAAS,GAAQ,IAAI,CAAC;KAY2D;IATzF,IAAa,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,QAAgB;QACzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAID,eAAe;QACX,IAAU,MAAO,CAAC,UAAU,EAAE;YAC1B,IAAI,CAAO,MAAO,CAAC,UAAU,CAAC,MAAM,EAAC;gBACjC,UAAU,CAAC;oBACP,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf,EAAC,GAAG,CAAC,CAAA;aACT;iBACI;gBACD,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;SACJ;aACI;YACK,MAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG;gBACjC,IAAI,CAAC,IAAI,EAAE,CAAC;aACb,CAAA;SACJ;KACJ;IAED,IAAI;QACA,IAAI,CAAC,SAAS,GAAS,MAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChF,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,UAAU,EAAE,CAAC,QAAgB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA,EAAC;YAC1F,kBAAkB,EAAE,QAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAA,EAAC;SACpF,CAAC,CAAC;KACN;IAED,KAAK;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,OAAO;QAEL,MAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,WAAW;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,OAAO,IAAI,CAAC;QAEhB,OAAa,MAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/D;IAED,iBAAiB,CAAC,QAAgB;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;KACN;IAED,wBAAwB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAED,WAAW;QACP,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YACpB,MAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAChD;KACJ;;oGA9FQ,OAAO;wFAAP,OAAO,2SAPN,aAAa;2FAOd,OAAO;kBATnB,SAAS;mBAAC;oBACP,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,aAAa;oBACvB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;sJAGY,OAAO;sBAAf,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEI,UAAU;sBAAnB,MAAM;gBAEG,QAAQ;sBAAjB,MAAM;gBAOM,QAAQ;sBAApB,KAAK;;MA+EG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAtGb,OAAO,aAkGN,YAAY,aAlGb,OAAO;2GAsGP,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;ACjHD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Card {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'title':
+                    this.titleTemplate = item.template;
+                    break;
+                case 'subtitle':
+                    this.subtitleTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+}
+Card.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Card.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Card, selector: "p-card", inputs: { header: "header", subheader: "subheader", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-card-header img{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-card', template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-card-header img{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { header: [{
+                type: Input
+            }], subheader: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CardModule {
+}
+CardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, declarations: [Card], imports: [CommonModule], exports: [Card, SharedModule] });
+CardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Card, SharedModule],
+                    declarations: [Card]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Card, CardModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-card.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-card.mjs","sources":["../../src/app/components/card/card.ts","../../src/app/components/card/primeng-card.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, Header, Footer, PrimeTemplate } from 'primeng/api';\nimport { BlockableUI } from 'primeng/api';\n\n@Component({\n    selector: 'p-card',\n    template: `\n        <div [ngClass]=\"'p-card p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-card-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div class=\"p-card-body\">\n                <div class=\"p-card-title\" *ngIf=\"header || titleTemplate\">\n                    {{header}}\n                    <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-subtitle\" *ngIf=\"subheader || subtitleTemplate\">\n                    {{subheader}}\n                    <ng-container *ngTemplateOutlet=\"subtitleTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./card.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Card implements AfterContentInit,BlockableUI {\n\n    @Input() header: string;\n\n    @Input() subheader: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    titleTemplate: TemplateRef<any>;\n\n    subtitleTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'title':\n                    this.titleTemplate = item.template;\n                break;\n\n                case 'subtitle':\n                    this.subtitleTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getBlockableElement(): HTMLElement  {\n        return this.el.nativeElement.children[0];\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Card, SharedModule],\n    declarations: [Card]\n})\nexport class CardModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAwCa,IAAI;IA0Bb,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAK;IAEvC,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,UAAU;oBACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC1C,MAAM;gBAEN,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN;oBACI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5C;;iGA5DQ,IAAI;qFAAJ,IAAI,8NAUC,MAAM,8EAEN,MAAM,+DAEH,aAAa,6BA/CpB;;;;;;;;;;;;;;;;;;;;;;;;;KAyBT;2FAQQ,IAAI;kBAnChB,SAAS;+BACI,QAAQ,YACR;;;;;;;;;;;;;;;;;;;;;;;;;KAyBT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,MAAM;sBAAd,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEgB,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEE,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEY,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAuDrB,UAAU;;uGAAV,UAAU;wGAAV,UAAU,iBArEV,IAAI,aAiEH,YAAY,aAjEb,IAAI,EAkEG,YAAY;wGAGnB,UAAU,YAJV,CAAC,YAAY,CAAC,EACP,YAAY;2FAGnB,UAAU;kBALtB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC;oBAC7B,YAAY,EAAE,CAAC,IAAI,CAAC;iBACvB;;;AC5GD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,634 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { UniqueComponentId } from 'primeng/utils';
+
+class Carousel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.orientation = "horizontal";
+        this.verticalViewPortHeight = "300px";
+        this.contentClass = "";
+        this.indicatorsContentClass = "";
+        this.indicatorStyleClass = "";
+        this.circular = false;
+        this.showIndicators = true;
+        this.showNavigators = true;
+        this.autoplayInterval = 0;
+        this.onPage = new EventEmitter();
+        this._numVisible = 1;
+        this._numScroll = 1;
+        this._oldNumScroll = 0;
+        this.prevState = {
+            numScroll: 0,
+            numVisible: 0,
+            value: []
+        };
+        this.defaultNumScroll = 1;
+        this.defaultNumVisible = 1;
+        this._page = 0;
+        this.isRemainingItemsAdded = false;
+        this.remainingItems = 0;
+        this.swipeThreshold = 20;
+        this.totalShiftedItems = this.page * this.numScroll * -1;
+    }
+    get page() {
+        return this._page;
+    }
+    set page(val) {
+        if (this.isCreated && val !== this._page) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+                this.allowAutoplay = false;
+            }
+            if (val > this._page && val <= (this.totalDots() - 1)) {
+                this.step(-1, val);
+            }
+            else if (val < this._page) {
+                this.step(1, val);
+            }
+        }
+        this._page = val;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    set numVisible(val) {
+        this._numVisible = val;
+    }
+    get numScroll() {
+        return this._numVisible;
+    }
+    set numScroll(val) {
+        this._numScroll = val;
+    }
+    get value() {
+        return this._value;
+    }
+    ;
+    set value(val) {
+        this._value = val;
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.circular && this._value) {
+                this.setCloneItems();
+            }
+        }
+        if (this.isCreated) {
+            if (simpleChange.numVisible) {
+                if (this.responsiveOptions) {
+                    this.defaultNumVisible = this.numVisible;
+                }
+                if (this.isCircular()) {
+                    this.setCloneItems();
+                }
+                this.createStyle();
+                this.calculatePosition();
+            }
+            if (simpleChange.numScroll) {
+                if (this.responsiveOptions) {
+                    this.defaultNumScroll = this.numScroll;
+                }
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.id = UniqueComponentId();
+        this.allowAutoplay = !!this.autoplayInterval;
+        if (this.circular) {
+            this.setCloneItems();
+        }
+        if (this.responsiveOptions) {
+            this.defaultNumScroll = this._numScroll;
+            this.defaultNumVisible = this._numVisible;
+        }
+        this.createStyle();
+        this.calculatePosition();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterContentChecked() {
+        const isCircular = this.isCircular();
+        let totalShiftedItems = this.totalShiftedItems;
+        if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+            }
+            this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;
+            let page = this._page;
+            if (this.totalDots() !== 0 && page >= this.totalDots()) {
+                page = this.totalDots() - 1;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            totalShiftedItems = (page * this._numScroll) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+                totalShiftedItems += (-1 * this.remainingItems) + this._numScroll;
+                this.isRemainingItemsAdded = true;
+            }
+            else {
+                this.isRemainingItemsAdded = false;
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            this._oldNumScroll = this._numScroll;
+            this.prevState.numScroll = this._numScroll;
+            this.prevState.numVisible = this._numVisible;
+            this.prevState.value = [...this._value];
+            if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+            this.isCreated = true;
+            if (this.autoplayInterval && this.isAutoplay()) {
+                this.startAutoplay();
+            }
+        }
+        if (isCircular) {
+            if (this.page === 0) {
+                totalShiftedItems = -1 * this._numVisible;
+            }
+            else if (totalShiftedItems === 0) {
+                totalShiftedItems = -1 * this.value.length;
+                if (this.remainingItems > 0) {
+                    this.isRemainingItemsAdded = true;
+                }
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+        }
+    }
+    createStyle() {
+        if (!this.carouselStyle) {
+            this.carouselStyle = document.createElement('style');
+            this.carouselStyle.type = 'text/css';
+            document.body.appendChild(this.carouselStyle);
+        }
+        let innerHTML = `
+            #${this.id} .p-carousel-item {
+				flex: 1 0 ${(100 / this.numVisible)}%
+			}
+        `;
+        if (this.responsiveOptions) {
+            this.responsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.id} .p-carousel-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.carouselStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.responsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this.defaultNumVisible,
+                numScroll: this.defaultNumScroll
+            };
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this._numScroll !== matchedResponsiveData.numScroll) {
+                let page = this._page;
+                page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);
+                let totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;
+                if (this.isCircular()) {
+                    totalShiftedItems -= matchedResponsiveData.numVisible;
+                }
+                this.totalShiftedItems = totalShiftedItems;
+                this._numScroll = matchedResponsiveData.numScroll;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            if (this._numVisible !== matchedResponsiveData.numVisible) {
+                this._numVisible = matchedResponsiveData.numVisible;
+                this.setCloneItems();
+            }
+            this.cd.markForCheck();
+        }
+    }
+    setCloneItems() {
+        this.clonedItemsForStarting = [];
+        this.clonedItemsForFinishing = [];
+        if (this.isCircular()) {
+            this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));
+            this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));
+        }
+    }
+    firstIndex() {
+        return this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);
+    }
+    lastIndex() {
+        return this.firstIndex() + this.numVisible - 1;
+    }
+    totalDots() {
+        return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;
+    }
+    totalDotsArray() {
+        const totalDots = this.totalDots();
+        return totalDots <= 0 ? [] : Array(totalDots).fill(0);
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    isCircular() {
+        return this.circular && this.value && this.value.length >= this.numVisible;
+    }
+    isAutoplay() {
+        return this.autoplayInterval && this.allowAutoplay;
+    }
+    isForwardNavDisabled() {
+        return this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());
+    }
+    isBackwardNavDisabled() {
+        return this.isEmpty() || (this._page <= 0 && !this.isCircular());
+    }
+    isEmpty() {
+        return !this.value || this.value.length === 0;
+    }
+    navForward(e, index) {
+        if (this.isCircular() || this._page < (this.totalDots() - 1)) {
+            this.step(-1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e, index) {
+        if (this.isCircular() || this._page !== 0) {
+            this.step(1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onDotClick(e, index) {
+        let page = this._page;
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (index > page) {
+            this.navForward(e, index);
+        }
+        else if (index < page) {
+            this.navBackward(e, index);
+        }
+    }
+    step(dir, page) {
+        let totalShiftedItems = this.totalShiftedItems;
+        const isCircular = this.isCircular();
+        if (page != null) {
+            totalShiftedItems = (this._numScroll * page) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            this.isRemainingItemsAdded = false;
+        }
+        else {
+            totalShiftedItems += (this._numScroll * dir);
+            if (this.isRemainingItemsAdded) {
+                totalShiftedItems += this.remainingItems - (this._numScroll * dir);
+                this.isRemainingItemsAdded = false;
+            }
+            let originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;
+            page = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));
+        }
+        if (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {
+            totalShiftedItems = -1 * (this.value.length + this._numVisible);
+            page = 0;
+        }
+        else if (isCircular && this.page === 0 && dir === 1) {
+            totalShiftedItems = 0;
+            page = (this.totalDots() - 1);
+        }
+        else if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+            totalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));
+            this.isRemainingItemsAdded = true;
+        }
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+        this._page = page;
+        this.onPage.emit({
+            page: this.page
+        });
+    }
+    startAutoplay() {
+        this.interval = setInterval(() => {
+            if (this.totalDots() > 0) {
+                if (this.page === (this.totalDots() - 1)) {
+                    this.step(-1, 0);
+                }
+                else {
+                    this.step(-1, this.page + 1);
+                }
+            }
+        }, this.autoplayInterval);
+    }
+    stopAutoplay() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transition = '';
+            if ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical()) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (Math.abs(diff) > this.swipeThreshold) {
+            if (diff < 0) {
+                this.navForward(e);
+            }
+            else {
+                this.navBackward(e);
+            }
+        }
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = (e) => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+        }
+    }
+}
+Carousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Carousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Carousel, selector: "p-carousel", inputs: { page: "page", numVisible: "numVisible", numScroll: "numScroll", responsiveOptions: "responsiveOptions", orientation: "orientation", verticalViewPortHeight: "verticalViewPortHeight", contentClass: "contentClass", indicatorsContentClass: "indicatorsContentClass", indicatorsContentStyle: "indicatorsContentStyle", indicatorStyleClass: "indicatorStyleClass", indicatorStyle: "indicatorStyle", value: "value", circular: "circular", showIndicators: "showIndicators", showNavigators: "showNavigators", autoplayInterval: "autoplayInterval", style: "style", styleClass: "styleClass" }, outputs: { onPage: "onPage" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, isInline: true, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-carousel', template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], numScroll: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], verticalViewPortHeight: [{
+                type: Input
+            }], contentClass: [{
+                type: Input
+            }], indicatorsContentClass: [{
+                type: Input
+            }], indicatorsContentStyle: [{
+                type: Input
+            }], indicatorStyleClass: [{
+                type: Input
+            }], indicatorStyle: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showNavigators: [{
+                type: Input
+            }], autoplayInterval: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CarouselModule {
+}
+CarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Carousel, SharedModule] });
+CarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Carousel, SharedModule],
+                    declarations: [Carousel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Carousel, CarouselModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-carousel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-carousel.mjs","sources":["../../src/app/components/carousel/carousel.ts","../../src/app/components/carousel/primeng-carousel.ts"],"sourcesContent":["import { Component, Input, ElementRef, ViewChild, AfterContentInit, TemplateRef, ContentChildren, QueryList, NgModule, NgZone, EventEmitter, Output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, SimpleChanges } from '@angular/core';\nimport { PrimeTemplate, SharedModule, Header, Footer } from 'primeng/api';\nimport { RippleModule } from 'primeng/ripple';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\n\n@Component({\n\tselector: 'p-carousel',\n\ttemplate: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./carousel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Carousel implements AfterContentInit {\n\n\t@Input() get page():number {\n\t\treturn this._page;\n\t}\n\tset page(val:number) {\n\t\tif (this.isCreated && val !== this._page) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t\tthis.allowAutoplay = false;\n\t\t\t}\n\n\t\t\tif (val > this._page && val <= (this.totalDots() - 1)) {\n\t\t\t\tthis.step(-1, val);\n\t\t\t}\n\t\t\telse if (val < this._page ) {\n\t\t\t\tthis.step(1, val);\n\t\t\t}\n\t\t}\n\n\t\tthis._page = val;\n\t}\n\n\t@Input() get numVisible():number {\n\t\treturn this._numVisible;\n\t}\n\tset numVisible(val:number) {\n\t\tthis._numVisible = val;\n\t}\n\n\t@Input() get numScroll():number {\n\t\treturn this._numVisible;\n\t}\n\tset numScroll(val:number) {\n\t\tthis._numScroll = val;\n\t}\n\n\t@Input() responsiveOptions: any[];\n\n\t@Input() orientation = \"horizontal\";\n\n\t@Input() verticalViewPortHeight = \"300px\";\n\n\t@Input() contentClass: string = \"\";\n\n\t@Input() indicatorsContentClass: string = \"\";\n\n\t@Input() indicatorsContentStyle: any;\n\n\t@Input() indicatorStyleClass: string = \"\";\n\n\t@Input() indicatorStyle: any;\n\n\t@Input() get value() :any[] {\n\t\treturn this._value;\n\t};\n\tset value(val) {\n\t\tthis._value = val;\n\t}\n\n\t@Input() circular: boolean = false;\n\n\t@Input() showIndicators: boolean = true;\n\n\t@Input() showNavigators: boolean = true;\n\n\t@Input() autoplayInterval:number = 0;\n\n\t@Input() style: any;\n\n\t@Input() styleClass: string;\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n\t@ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n\t@ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n\t@ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n\t_numVisible: number = 1;\n\n\t_numScroll: number = 1;\n\n\t_oldNumScroll: number = 0;\n\n\tprevState: any = {\n\t\tnumScroll:0,\n\t\tnumVisible:0,\n\t\tvalue: []\n\t};\n\n\tdefaultNumScroll:number = 1;\n\n\tdefaultNumVisible:number = 1;\n\n\t_page: number = 0;\n\n\t_value: any[];\n\n\tcarouselStyle:any;\n\n\tid:string;\n\n\ttotalShiftedItems;\n\n\tisRemainingItemsAdded:boolean = false;\n\n\tanimationTimeout:any;\n\n\ttranslateTimeout:any;\n\n\tremainingItems: number = 0;\n\n\t_items: any[];\n\n\tstartPos: any;\n\n\tdocumentResizeListener: any;\n\n\tclonedItemsForStarting: any[];\n\n\tclonedItemsForFinishing: any[];\n\n\tallowAutoplay: boolean;\n\n\tinterval: any;\n\n\tisCreated: boolean;\n\n\tswipeThreshold: number = 20;\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n\tconstructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {\n\t\tthis.totalShiftedItems = this.page * this.numScroll * -1;\n\t}\n\n\tngOnChanges(simpleChange: SimpleChanges) {\n\t\tif (simpleChange.value) {\n\t\t\tif (this.circular && this._value) {\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isCreated) {\n\n\t\t\tif (simpleChange.numVisible) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumVisible = this.numVisible;\n\t\t\t\t}\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\tthis.setCloneItems();\n\t\t\t\t}\n\n\t\t\t\tthis.createStyle();\n\t\t\t\tthis.calculatePosition();\n\t\t\t}\n\n\t\t\tif (simpleChange.numScroll) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumScroll = this.numScroll;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.id = UniqueComponentId();\n\t\tthis.allowAutoplay = !!this.autoplayInterval;\n\n\t\tif (this.circular) {\n\t\t\tthis.setCloneItems();\n\t\t}\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.defaultNumScroll = this._numScroll;\n\t\t\tthis.defaultNumVisible = this._numVisible;\n\t\t}\n\n\t\tthis.createStyle();\n\t\tthis.calculatePosition();\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.bindDocumentListeners();\n\t\t}\n\n\t\tthis.templates.forEach((item) => {\n\t\t\tswitch (item.getType()) {\n\t\t\t\tcase 'item':\n\t\t\t\t\tthis.itemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.itemTemplate = item.template;\n                break;\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tconst isCircular = this.isCircular();\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\n\t\tif (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t}\n\n\t\t\tthis.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n\n\t\t\tlet page = this._page;\n\t\t\tif (this.totalDots() !== 0 && page >= this.totalDots()) {\n                page = this.totalDots() - 1;\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttotalShiftedItems = (page * this._numScroll) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n\n\t\t\tif (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\t\ttotalShiftedItems += (-1 * this.remainingItems) + this._numScroll;\n\t\t\t\tthis.isRemainingItemsAdded = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tif (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n\n\t\t\tthis._oldNumScroll = this._numScroll;\n\t\t\tthis.prevState.numScroll = this._numScroll;\n\t\t\tthis.prevState.numVisible = this._numVisible;\n\t\t\tthis.prevState.value = [...this._value];\n\n\t\t\tif (this.totalDots() > 0  && this.itemsContainer.nativeElement) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\n\t\t\tthis.isCreated = true;\n\n\t\t\tif (this.autoplayInterval && this.isAutoplay()) {\n\t\t\t\tthis.startAutoplay();\n\t\t\t}\n\t\t}\n\n\t\tif (isCircular) {\n            if (this.page === 0) {\n                totalShiftedItems = -1 * this._numVisible;\n            }\n            else if (totalShiftedItems === 0) {\n                totalShiftedItems = -1 * this.value.length;\n                if (this.remainingItems > 0) {\n                    this.isRemainingItemsAdded = true;\n                }\n            }\n\n            if (totalShiftedItems !== this.totalShiftedItems) {\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n            }\n\t\t}\n\t}\n\n\tcreateStyle() {\n\t\t\tif (!this.carouselStyle) {\n\t\t\t\tthis.carouselStyle = document.createElement('style');\n\t\t\t\tthis.carouselStyle.type = 'text/css';\n\t\t\t\tdocument.body.appendChild(this.carouselStyle);\n\t\t\t}\n\n\t\t\tlet innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${ (100/ this.numVisible) }%\n\t\t\t}\n        `;\n\n\t\t\tif (this.responsiveOptions) {\n\t\t\t\tthis.responsiveOptions.sort((data1, data2) => {\n\t\t\t\t\tconst value1 = data1.breakpoint;\n\t\t\t\t\tconst value2 = data2.breakpoint;\n\t\t\t\t\tlet result = null;\n\n\t\t\t\t\tif (value1 == null && value2 != null)\n\t\t\t\t\t\tresult = -1;\n\t\t\t\t\telse if (value1 != null && value2 == null)\n\t\t\t\t\t\tresult = 1;\n\t\t\t\t\telse if (value1 == null && value2 == null)\n\t\t\t\t\t\tresult = 0;\n\t\t\t\t\telse if (typeof value1 === 'string' && typeof value2 === 'string')\n\t\t\t\t\t\tresult = value1.localeCompare(value2, undefined, { numeric: true });\n\t\t\t\t\telse\n\t\t\t\t\t\tresult = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n\t\t\t\t\treturn -1 * result;\n\t\t\t\t});\n\n\t\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\t\tinnerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${ (100/ res.numVisible) }%\n                        }\n                    }\n                `\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.carouselStyle.innerHTML = innerHTML;\n\t\t}\n\n\tcalculatePosition() {\n\t\tif (this.responsiveOptions) {\n\t\t\tlet windowWidth = window.innerWidth;\n\t\t\tlet matchedResponsiveData = {\n\t\t\t\tnumVisible: this.defaultNumVisible,\n\t\t\t\tnumScroll: this.defaultNumScroll\n\t\t\t};\n\n\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\tif (parseInt(res.breakpoint, 10) >= windowWidth) {\n\t\t\t\t\tmatchedResponsiveData = res;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._numScroll !== matchedResponsiveData.numScroll) {\n\t\t\t\tlet page = this._page;\n\t\t\t\tpage = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n\n\t\t\t\tlet totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\ttotalShiftedItems -= matchedResponsiveData.numVisible;\n\t\t\t\t}\n\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\t\t\tthis._numScroll = matchedResponsiveData.numScroll;\n\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this._numVisible !== matchedResponsiveData.numVisible) {\n\t\t\t\tthis._numVisible = matchedResponsiveData.numVisible;\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\n\t\t\tthis.cd.markForCheck();\n\t\t}\n\t}\n\n\tsetCloneItems() {\n\t\tthis.clonedItemsForStarting = [];\n\t\tthis.clonedItemsForFinishing = [];\n\t\tif (this.isCircular()) {\n\t\t\tthis.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n\t\t\tthis.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n\t\t}\n\t}\n\n\tfirstIndex() {\n\t\treturn this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);\n\t}\n\n\tlastIndex() {\n\t\treturn this.firstIndex() + this.numVisible - 1;\n\t}\n\n\ttotalDots() {\n\t\treturn this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n\t}\n\n\ttotalDotsArray() {\n\t\tconst totalDots = this.totalDots();\n\t\treturn totalDots <= 0 ? [] : Array(totalDots).fill(0);\n\t}\n\n\tisVertical() {\n\t\treturn this.orientation === 'vertical';\n\t}\n\n\tisCircular() {\n\t\treturn this.circular && this.value && this.value.length >= this.numVisible;\n\t}\n\n\tisAutoplay() {\n\t\treturn this.autoplayInterval && this.allowAutoplay;\n\t}\n\n\tisForwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());\n\t}\n\n\tisBackwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page <= 0  && !this.isCircular());\n\t}\n\n\tisEmpty() {\n\t\treturn !this.value || this.value.length === 0;\n\t}\n\n\tnavForward(e,index?) {\n\t\tif (this.isCircular() || this._page < (this.totalDots() - 1)) {\n\t\t\tthis.step(-1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tnavBackward(e,index?) {\n\t\tif (this.isCircular() || this._page !== 0) {\n\t\t\tthis.step(1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tonDotClick(e, index) {\n\t\tlet page = this._page;\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (index > page) {\n\t\t\tthis.navForward(e, index);\n\t\t}\n\t\telse if (index < page) {\n\t\t\tthis.navBackward(e, index);\n\t\t}\n\t}\n\n\tstep(dir, page) {\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\t\tconst isCircular = this.isCircular();\n\n\t\tif (page != null) {\n\t\t\ttotalShiftedItems = (this._numScroll * page) * -1;\n\n\t\t\tif (isCircular) {\n\t\t\t\ttotalShiftedItems -= this._numVisible;\n\t\t\t}\n\n\t\t\tthis.isRemainingItemsAdded = false;\n\t\t}\n\t\telse {\n\t\t\ttotalShiftedItems += (this._numScroll * dir);\n\t\t\tif (this.isRemainingItemsAdded) {\n\t\t\t\ttotalShiftedItems += this.remainingItems - (this._numScroll * dir);\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tlet originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;\n\t\t\tpage = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));\n\t\t}\n\n\t\tif (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {\n\t\t\ttotalShiftedItems = -1 * (this.value.length + this._numVisible);\n\t\t\tpage = 0;\n\t\t}\n\t\telse if (isCircular && this.page === 0 && dir === 1) {\n\t\t\ttotalShiftedItems = 0;\n\t\t\tpage = (this.totalDots() - 1);\n\t\t}\n\t\telse if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\ttotalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));\n\t\t\tthis.isRemainingItemsAdded = true;\n\t\t}\n\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\tthis.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n\t\t}\n\n\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\tthis._page = page;\n\t\tthis.onPage.emit({\n\t\t\tpage: this.page\n\t\t});\n\t}\n\n\tstartAutoplay() {\n\t\tthis.interval = setInterval(() => {\n\t\t\tif (this.totalDots() > 0) {\n\t\t\t\tif (this.page === (this.totalDots() - 1)) {\n\t\t\t\t\tthis.step(-1, 0);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.step(-1, this.page + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tthis.autoplayInterval);\n\t}\n\n\tstopAutoplay() {\n\t\tif (this.interval) {\n\t\t\tclearInterval(this.interval);\n\t\t}\n\t}\n\n\tonTransitionEnd() {\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transition = '';\n\n\t\t\tif ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\t\t}\n\t}\n\n\tonTouchStart(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tthis.startPos = {\n\t\t\tx: touchobj.pageX,\n\t\t\ty: touchobj.pageY\n\t\t};\n\t}\n\n\tonTouchMove(e) {\n\t\tif (e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tonTouchEnd(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tif (this.isVertical()) {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n\t\t}\n\t\telse {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n\t\t}\n\t}\n\n\tchangePageOnTouch(e, diff) {\n\t\tif (Math.abs(diff) > this.swipeThreshold) {\n\t\t\tif (diff < 0) {\n\t\t\t\tthis.navForward(e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.navBackward(e);\n\n\t\t\t}\n\t\t}\n\t}\n\n\tbindDocumentListeners() {\n\t\tif (!this.documentResizeListener) {\n\t\t\tthis.documentResizeListener = (e) => {\n\t\t\t\tthis.calculatePosition();\n\t\t\t};\n\n\t\t\twindow.addEventListener('resize', this.documentResizeListener);\n\t\t}\n\t}\n\n\tunbindDocumentListeners() {\n\t\tif (this.documentResizeListener) {\n\t\t\twindow.removeEventListener('resize', this.documentResizeListener);\n\t\t\tthis.documentResizeListener = null;\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.unbindDocumentListeners();\n\t\t}\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t}\n    }\n\n}\n\n@NgModule({\n\timports: [CommonModule, SharedModule, RippleModule],\n\texports: [CommonModule, Carousel, SharedModule],\n\tdeclarations: [Carousel]\n})\nexport class CarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,713 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const CASCADESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => CascadeSelect),
+    multi: true
+};
+class CascadeSelectSub {
+    constructor(cascadeSelect, el) {
+        this.el = el;
+        this.level = 0;
+        this.onSelect = new EventEmitter();
+        this.onGroupSelect = new EventEmitter();
+        this.activeOption = null;
+        this.cascadeSelect = cascadeSelect;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    ;
+    set parentActive(val) {
+        if (!val) {
+            this.activeOption = null;
+        }
+        this._parentActive = val;
+    }
+    ngOnInit() {
+        if (this.selectionPath && this.options && !this.dirty) {
+            for (let option of this.options) {
+                if (this.selectionPath.includes(option)) {
+                    this.activeOption = option;
+                    break;
+                }
+            }
+        }
+        if (!this.root) {
+            this.position();
+        }
+    }
+    onOptionClick(event, option) {
+        if (this.isOptionGroup(option)) {
+            this.activeOption = (this.activeOption === option) ? null : option;
+            this.onGroupSelect.emit({
+                originalEvent: event,
+                value: option
+            });
+        }
+        else {
+            this.onSelect.emit({
+                originalEvent: event,
+                value: this.getOptionValue(option)
+            });
+        }
+    }
+    onOptionSelect(event) {
+        this.onSelect.emit(event);
+    }
+    onOptionGroupSelect(event) {
+        this.onGroupSelect.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;
+    }
+    getOptionGroupChildren(optionGroup) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);
+    }
+    isOptionGroup(option) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);
+    }
+    getOptionLabelToRender(option) {
+        return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);
+    }
+    getItemClass(option) {
+        return {
+            'p-cascadeselect-item': true,
+            'p-cascadeselect-item-group': this.isOptionGroup(option),
+            'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)
+        };
+    }
+    isOptionActive(option) {
+        return this.activeOption === option;
+    }
+    onKeyDown(event, option, index) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'Down':
+            case 'ArrowDown':
+                var nextItem = this.el.nativeElement.children[0].children[index + 1];
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Up':
+            case 'ArrowUp':
+                var prevItem = this.el.nativeElement.children[0].children[index - 1];
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Right':
+            case 'ArrowRight':
+                if (this.isOptionGroup(option)) {
+                    if (this.isOptionActive(option)) {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }
+                    else {
+                        this.activeOption = option;
+                    }
+                }
+                event.preventDefault();
+                break;
+            case 'Left':
+            case 'ArrowLeft':
+                this.activeOption = null;
+                var parentList = listItem.parentElement.parentElement.parentElement;
+                if (parentList) {
+                    parentList.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Enter':
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                this.cascadeSelect.hide();
+                event.preventDefault();
+                break;
+        }
+    }
+    position() {
+        const parentItem = this.el.nativeElement.parentElement;
+        const containerOffset = DomHandler.getOffset(parentItem);
+        const viewport = DomHandler.getViewport();
+        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);
+        const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
+        if ((parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            this.el.nativeElement.children[0].style.left = '-200%';
+        }
+    }
+}
+CascadeSelectSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, deps: [{ token: forwardRef(() => CascadeSelect) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelectSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: { selectionPath: "selectionPath", options: "options", optionGroupChildren: "optionGroupChildren", optionTemplate: "optionTemplate", level: "level", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", dirty: "dirty", root: "root", parentActive: "parentActive" }, outputs: { onSelect: "onSelect", onGroupSelect: "onGroupSelect" }, ngImport: i0, template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cascadeSelectSub',
+                    template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => CascadeSelect)]
+                    }] }, { type: i0.ElementRef }];
+    }, propDecorators: { selectionPath: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionTemplate: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], dirty: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], onSelect: [{
+                type: Output
+            }], onGroupSelect: [{
+                type: Output
+            }], parentActive: [{
+                type: Input
+            }] } });
+class CascadeSelect {
+    constructor(el, cd, config, overlayService) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onGroupChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onBeforeShow = new EventEmitter();
+        this.onBeforeHide = new EventEmitter();
+        this.selectionPath = null;
+        this.focused = false;
+        this.filled = false;
+        this.overlayVisible = false;
+        this.dirty = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.updateSelectionPath();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'option':
+                    this.optionTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOptionSelect(event) {
+        this.value = event.value;
+        this.updateSelectionPath();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+        this.hide();
+        this.focusInputEl.nativeElement.focus();
+    }
+    onOptionGroupSelect(event) {
+        this.dirty = true;
+        this.onGroupChange.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupChildren(optionGroup, level) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);
+    }
+    isOptionGroup(option, level) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);
+    }
+    updateSelectionPath() {
+        let path;
+        if (this.value != null && this.options) {
+            for (let option of this.options) {
+                path = this.findModelOptionInGroup(option, 0);
+                if (path) {
+                    break;
+                }
+            }
+        }
+        this.selectionPath = path;
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);
+    }
+    findModelOptionInGroup(option, level) {
+        if (this.isOptionGroup(option, level)) {
+            let selectedOption;
+            for (let childOption of this.getOptionGroupChildren(option, level)) {
+                selectedOption = this.findModelOptionInGroup(childOption, level + 1);
+                if (selectedOption) {
+                    selectedOption.unshift(option);
+                    return selectedOption;
+                }
+            }
+        }
+        else if ((ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey))) {
+            return [option];
+        }
+        return null;
+    }
+    show() {
+        this.onBeforeShow.emit();
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.onBeforeHide.emit();
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.overlayEl || !this.overlayEl || !this.overlayEl.contains(event.target)) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                this.show();
+            }
+            this.focusInputEl.nativeElement.focus();
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        this.onHide.emit();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.dirty = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateSelectionPath();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    label() {
+        if (this.selectionPath)
+            return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);
+        else
+            return this.placeholder || 'p-emptylabel';
+    }
+    onKeyDown(event) {
+        switch (event.code) {
+            case 'Down':
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    DomHandler.findSingle(this.overlayEl, '.p-cascadeselect-item').children[0].focus();
+                }
+                else if (event.altKey && this.options && this.options.length) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (!this.overlayVisible)
+                    this.show();
+                else
+                    this.hide();
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    containerClass() {
+        return {
+            'p-cascadeselect p-component p-inputwrapper': true,
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-cascadeselect-label': true,
+            'p-placeholder': this.label() === this.placeholder,
+            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)
+        };
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        this.overlayEl = null;
+    }
+}
+CascadeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelect, selector: "p-cascadeSelect", inputs: { styleClass: "styleClass", style: "style", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", placeholder: "placeholder", value: "value", dataKey: "dataKey", inputId: "inputId", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", appendTo: "appendTo", disabled: "disabled", rounded: "rounded", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onGroupChange: "onGroupChange", onShow: "onShow", onHide: "onHide", onBeforeShow: "onBeforeShow", onBeforeHide: "onBeforeHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [CASCADESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "focusInputEl", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"], components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-cascadeSelect', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [CASCADESELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], focusInputEl: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], onChange: [{
+                type: Output
+            }], onGroupChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onBeforeShow: [{
+                type: Output
+            }], onBeforeHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CascadeSelectModule {
+}
+CascadeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CascadeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, declarations: [CascadeSelect, CascadeSelectSub], imports: [CommonModule, SharedModule, RippleModule], exports: [CascadeSelect, CascadeSelectSub, SharedModule] });
+CascadeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CascadeSelect, CascadeSelectSub, SharedModule],
+                    declarations: [CascadeSelect, CascadeSelectSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CASCADESELECT_VALUE_ACCESSOR, CascadeSelect, CascadeSelectModule, CascadeSelectSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-cascadeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-cascadeselect.mjs","sources":["../../src/app/components/cascadeselect/cascadeselect.ts","../../src/app/components/cascadeselect/primeng-cascadeselect.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, TemplateRef, ContentChildren, QueryList, ElementRef, Output, EventEmitter, ViewChild, forwardRef, ChangeDetectorRef, Renderer2, OnDestroy, OnInit, AfterContentInit, Inject} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig, OverlayService } from 'primeng/api';\nimport { ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport { trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport { ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RippleModule } from 'primeng/ripple';\n\nexport const CASCADESELECT_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => CascadeSelect),\n    multi: true\n};\n\n@Component({\n    selector: 'p-cascadeSelectSub',\n    template: `\n        <ul class=\"p-cascadeselect-panel p-cascadeselect-items\" [ngClass]=\"{'p-cascadeselect-panel-root': root}\" role=\"listbox\" aria-orientation=\"horizontal\">\n            <ng-template ngFor let-option [ngForOf]=\"options\" let-i=\"index\">\n                <li [ngClass]=\"getItemClass(option)\" role=\"none\">\n                    <div class=\"p-cascadeselect-item-content\" (click)=\"onOptionClick($event, option)\" tabindex=\"0\" (keydown)=\"onKeyDown($event, option, i)\" pRipple>\n                        <ng-container *ngIf=\"optionTemplate;else defaultOptionTemplate\">\n                            <ng-container *ngTemplateOutlet=\"optionTemplate; context: {$implicit: option}\"></ng-container>\n                        </ng-container>\n                        <ng-template #defaultOptionTemplate>\n                            <span class=\"p-cascadeselect-item-text\">{{getOptionLabelToRender(option)}}</span>\n                        </ng-template>\n                        <span class=\"p-cascadeselect-group-icon pi pi-angle-right\" *ngIf=\"isOptionGroup(option)\"></span>\n                    </div>\n                    <p-cascadeSelectSub *ngIf=\"isOptionGroup(option) && isOptionActive(option)\" class=\"p-cascadeselect-sublist\" [selectionPath]=\"selectionPath\" [options]=\"getOptionGroupChildren(option)\"\n                        [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [level]=\"level + 1\" (onSelect)=\"onOptionSelect($event)\" (onOptionGroupSelect)=\"onOptionGroupSelect()\"\n                        [optionGroupLabel]=\"optionGroupLabel\" [optionGroupChildren]=\"optionGroupChildren\" [parentActive]=\"isOptionActive(option)\" [dirty]=\"dirty\" [optionTemplate]=\"optionTemplate\">\n                    </p-cascadeSelectSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CascadeSelectSub implements OnInit {\n\n    @Input() selectionPath: any[];\n\n    @Input() options: any[];\n\n    @Input() optionGroupChildren: any[];\n\n    @Input() optionTemplate: TemplateRef<any>;\n\n    @Input() level: number = 0;\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() dirty: boolean;\n\n    @Input() root: boolean;\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onGroupSelect: EventEmitter<any> = new EventEmitter();\n\n    @Input() get parentActive(): boolean {\n        return this._parentActive;\n    };\n    set parentActive(val) {\n        if (!val) {\n            this.activeOption = null;\n        }\n\n        this._parentActive = val;\n    }\n\n    activeOption: any = null;\n\n    _parentActive: boolean;\n\n    cascadeSelect: CascadeSelect;\n\n    constructor(@Inject(forwardRef(() => CascadeSelect)) cascadeSelect, private el: ElementRef) {\n        this.cascadeSelect = cascadeSelect as CascadeSelect;\n    }\n\n    ngOnInit() {\n        if (this.selectionPath && this.options && !this.dirty) {\n            for (let option of this.options) {\n                if (this.selectionPath.includes(option)) {\n                    this.activeOption = option;\n                    break;\n                }\n            }\n        }\n\n        if (!this.root) {\n            this.position();\n        }\n    }\n\n    onOptionClick(event, option) {\n        if (this.isOptionGroup(option)) {\n            this.activeOption = (this.activeOption === option) ? null : option;\n\n            this.onGroupSelect.emit({\n                originalEvent: event,\n                value: option\n            });\n        }\n        else {\n            this.onSelect.emit({\n                originalEvent: event,\n                value: this.getOptionValue(option)\n            });\n        }\n    }\n\n    onOptionSelect(event) {\n        this.onSelect.emit(event);\n    }\n\n    onOptionGroupSelect(event) {\n        this.onGroupSelect.emit(event);\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n    }\n\n    getOptionGroupLabel(optionGroup) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n    }\n\n    getOptionGroupChildren(optionGroup) {\n        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);\n    }\n\n    isOptionGroup(option) {\n        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);\n    }\n\n    getOptionLabelToRender(option) {\n        return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);\n    }\n\n    getItemClass(option) {\n        return {\n            'p-cascadeselect-item': true,\n            'p-cascadeselect-item-group': this.isOptionGroup(option),\n            'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)\n        }\n    }\n\n    isOptionActive(option) {\n        return this.activeOption === option;\n    }\n\n    onKeyDown(event, option, index) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.key) {\n            case 'Down':\n            case 'ArrowDown':\n                var nextItem = this.el.nativeElement.children[0].children[index + 1];\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Up':\n            case 'ArrowUp':\n                var prevItem = this.el.nativeElement.children[0].children[index - 1];\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Right':\n            case 'ArrowRight':\n                if (this.isOptionGroup(option)) {\n                    if (this.isOptionActive(option)) {\n                        listItem.children[1].children[0].children[0].children[0].focus();\n                    }\n                    else {\n                        this.activeOption = option;\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Left':\n            case 'ArrowLeft':\n                this.activeOption = null;\n\n                var parentList = listItem.parentElement.parentElement.parentElement;\n                if (parentList) {\n                    parentList.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Enter':\n                this.onOptionClick(event, option);\n\n                event.preventDefault();\n            break;\n\n            case 'Tab':\n            case 'Escape':\n                this.cascadeSelect.hide();\n\n                event.preventDefault();\n            break;\n        }\n    }\n\n    position() {\n        const parentItem = this.el.nativeElement.parentElement;\n        const containerOffset = DomHandler.getOffset(parentItem);\n        const viewport = DomHandler.getViewport();\n        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);\n        const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);\n\n        if ((parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {\n            this.el.nativeElement.children[0].style.left = '-200%';\n        }\n    }\n}\n\n@Component({\n    selector: 'p-cascadeSelect',\n    template: `\n        <div #container [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input #focusInput type=\"text\" [attr.id]=\"inputId\" readonly [disabled]=\"disabled\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"  (keydown)=\"onKeyDown($event)\" [attr.tabindex]=\"tabindex\"\n                    aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n            </div>\n            <span [ngClass]=\"labelClass()\">\n                <ng-container *ngIf=\"valueTemplate;else defaultValueTemplate\">\n                        <ng-container *ngTemplateOutlet=\"valueTemplate; context: {$implicit: value, placeholder: placeholder}\"></ng-container>\n                </ng-container>\n                <ng-template #defaultValueTemplate>\n                    {{label()}}\n                </ng-template>\n            </span>\n            <div class=\"p-cascadeselect-trigger\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\">\n                <span class=\"p-cascadeselect-trigger-icon pi pi-chevron-down\"></span>\n            </div>\n            <div class=\"p-cascadeselect-panel p-component\" *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\">\n                <div class=\"p-cascadeselect-items-wrapper\">\n                    <p-cascadeSelectSub [options]=\"options\" [selectionPath]=\"selectionPath\" class=\"p-cascadeselect-items\"\n                        [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [level]=\"0\" [optionTemplate]=\"optionTemplate\"\n                        [optionGroupLabel]=\"optionGroupLabel\" [optionGroupChildren]=\"optionGroupChildren\"\n                        (onSelect)=\"onOptionSelect($event)\" (onGroupSelect)=\"onOptionGroupSelect($event)\" [dirty]=\"dirty\" [root]=\"true\">\n                    </p-cascadeSelectSub>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    providers: [CASCADESELECT_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./cascadeselect.css']\n})\nexport class CascadeSelect implements OnInit, AfterContentInit, OnDestroy {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() options: any[];\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: any[];\n\n    @Input() placeholder: string;\n\n    @Input() value: string;\n\n    @Input() dataKey: string;\n\n    @Input() inputId: string;\n\n    @Input() tabindex: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() appendTo: any;\n\n    @Input() disabled: boolean;\n\n    @Input() rounded: boolean;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('focusInput') focusInputEl: ElementRef;\n\n    @ViewChild('container') containerEl: ElementRef;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onGroupChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    selectionPath: any = null;\n\n    focused: boolean = false;\n\n    filled: boolean = false;\n\n    overlayVisible: boolean = false;\n\n    dirty: boolean = false;\n\n    valueTemplate: TemplateRef<any>;\n\n    optionTemplate: TemplateRef<any>;\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    overlayEl: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private el: ElementRef, private cd: ChangeDetectorRef, private config: PrimeNGConfig, public overlayService: OverlayService) { }\n\n    ngOnInit() {\n        this.updateSelectionPath();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'value':\n                    this.valueTemplate = item.template;\n                break;\n                case 'option':\n                    this.optionTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onOptionSelect(event) {\n        this.value = event.value;\n        this.updateSelectionPath();\n        this.onModelChange(this.value);\n        this.onChange.emit(event);\n        this.hide();\n        this.focusInputEl.nativeElement.focus();\n    }\n\n    onOptionGroupSelect(event) {\n        this.dirty = true;\n        this.onGroupChange.emit(event);\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n    }\n\n    getOptionGroupChildren(optionGroup, level) {\n        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n    }\n\n    isOptionGroup(option, level) {\n        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n    }\n\n    updateSelectionPath() {\n        let path;\n        if (this.value != null && this.options) {\n            for (let option of this.options) {\n                path = this.findModelOptionInGroup(option, 0);\n                if (path) {\n                    break;\n                }\n            }\n        }\n\n        this.selectionPath = path;\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);\n    }\n\n    findModelOptionInGroup(option, level) {\n        if (this.isOptionGroup(option, level)) {\n            let selectedOption;\n            for (let childOption of this.getOptionGroupChildren(option, level)) {\n                selectedOption = this.findModelOptionInGroup(childOption, level + 1);\n                if (selectedOption) {\n                    selectedOption.unshift(option);\n                    return selectedOption;\n                }\n            }\n        }\n        else if ((ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey))) {\n            return [option];\n        }\n\n        return null;\n    }\n\n    show() {\n        this.onBeforeShow.emit();\n        this.overlayVisible = true;\n    }\n\n    hide() {\n        this.onBeforeHide.emit();\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onClick(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!this.overlayEl || !this.overlayEl || !this.overlayEl.contains(event.target)) {\n            if (this.overlayVisible){\n                this.hide();\n            }\n            else{\n                this.show();\n            }\n\n            this.focusInputEl.nativeElement.focus();\n        }\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlayEl = event.element;\n                this.onOverlayEnter();\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onOverlayLeave();\n            break;\n        }\n    }\n\n    onOverlayEnter() {\n        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);\n        this.appendContainer();\n        this.alignOverlay();\n        this.bindOutsideClickListener();\n        this.bindScrollListener();\n        this.bindResizeListener();\n        this.onShow.emit();\n    }\n\n    onOverlayLeave() {\n        this.unbindOutsideClickListener();\n        this.unbindScrollListener();\n        this.unbindResizeListener();\n        this.onHide.emit();\n        ZIndexUtils.clear(this.overlayEl);\n        this.overlayEl = null;\n        this.dirty = false;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateSelectionPath();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);\n            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';\n        } else {\n            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);\n        }\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlayEl);\n        }\n    }\n\n    restoreAppend() {\n        if (this.overlayEl && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlayEl);\n        }\n    }\n\n    label() {\n        if (this.selectionPath)\n            return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);\n        else\n            return this.placeholder||'p-emptylabel';\n    }\n\n    onKeyDown(event) {\n        switch(event.code) {\n            case 'Down':\n            case 'ArrowDown':\n                if (this.overlayVisible) {\n                    DomHandler.findSingle(this.overlayEl, '.p-cascadeselect-item').children[0].focus();\n                }\n                else if (event.altKey && this.options && this.options.length) {\n                    this.show();\n                }\n                event.preventDefault();\n            break;\n\n            case 'Space':\n            case 'Enter':\n                if (!this.overlayVisible)\n                    this.show();\n                else\n                    this.hide();\n\n                event.preventDefault();\n            break;\n\n            case 'Tab':\n            case 'Escape':\n                if (this.overlayVisible) {\n                    this.hide();\n                    event.preventDefault();\n                }\n            break;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-cascadeselect p-component p-inputwrapper': true,\n            'p-disabled': this.disabled,\n            'p-focus': this.focused\n        };\n    }\n\n    labelClass() {\n        return {\n            'p-cascadeselect-label': true,\n            'p-placeholder': this.label() === this.placeholder,\n            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)\n        };\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n        this.overlayEl = null;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [CascadeSelect, CascadeSelectSub, SharedModule],\n    declarations: [CascadeSelect, CascadeSelectSub]\n})\nexport class CascadeSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,141 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import Chart from 'chart.js/auto';
+
+class UIChart {
+    constructor(el) {
+        this.el = el;
+        this.plugins = [];
+        this.responsive = true;
+        this.onDataSelect = new EventEmitter();
+        this._options = {};
+    }
+    get data() {
+        return this._data;
+    }
+    set data(val) {
+        this._data = val;
+        this.reinit();
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.reinit();
+    }
+    ngAfterViewInit() {
+        this.initChart();
+        this.initialized = true;
+    }
+    onCanvasClick(event) {
+        if (this.chart) {
+            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
+            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);
+            if (element && element[0] && dataset) {
+                this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });
+            }
+        }
+    }
+    initChart() {
+        let opts = this.options || {};
+        opts.responsive = this.responsive;
+        // allows chart to resize in responsive mode
+        if (opts.responsive && (this.height || this.width)) {
+            opts.maintainAspectRatio = false;
+        }
+        this.chart = new Chart(this.el.nativeElement.children[0].children[0], {
+            type: this.type,
+            data: this.data,
+            options: this.options,
+            plugins: this.plugins
+        });
+    }
+    getCanvas() {
+        return this.el.nativeElement.children[0].children[0];
+    }
+    getBase64Image() {
+        return this.chart.toBase64Image();
+    }
+    generateLegend() {
+        if (this.chart) {
+            return this.chart.generateLegend();
+        }
+    }
+    refresh() {
+        if (this.chart) {
+            this.chart.update();
+        }
+    }
+    reinit() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initChart();
+        }
+    }
+    ngOnDestroy() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initialized = false;
+            this.chart = null;
+        }
+    }
+}
+UIChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+UIChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIChart, selector: "p-chart", inputs: { type: "type", plugins: "plugins", width: "width", height: "height", responsive: "responsive", data: "data", options: "options" }, outputs: { onDataSelect: "onDataSelect" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-chart',
+                    template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], plugins: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], onDataSelect: [{
+                type: Output
+            }], data: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+class ChartModule {
+}
+ChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, declarations: [UIChart], imports: [CommonModule], exports: [UIChart] });
+ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIChart],
+                    declarations: [UIChart]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ChartModule, UIChart };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chart.mjs","sources":["../../src/app/components/chart/chart.ts","../../src/app/components/chart/primeng-chart.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport Chart from 'chart.js/auto';\n\n@Component({\n    selector: 'p-chart',\n    template: `\n        <div style=\"position:relative\" [style.width]=\"responsive && !width ? null : width\" [style.height]=\"responsive && !height ? null : height\">\n            <canvas [attr.width]=\"responsive && !width ? null : width\" [attr.height]=\"responsive && !height ? null : height\" (click)=\"onCanvasClick($event)\"></canvas>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UIChart implements AfterViewInit, OnDestroy {\n\n    @Input() type: string;\n\n    @Input() plugins: any[] = [];\n\n    @Input() width: string;\n\n    @Input() height: string;\n\n    @Input() responsive: boolean = true;\n\n    @Output() onDataSelect: EventEmitter<any> = new EventEmitter();\n\n    initialized: boolean;\n\n    _data: any;\n\n    _options: any = {};\n\n    chart: any;\n\n    constructor(public el: ElementRef) {}\n\n    @Input() get data(): any {\n        return this._data;\n    }\n\n    set data(val:any) {\n        this._data = val;\n        this.reinit();\n    }\n\n    @Input() get options(): any {\n        return this._options;\n    }\n\n    set options(val:any) {\n        this._options = val;\n        this.reinit();\n    }\n\n    ngAfterViewInit() {\n        this.initChart();\n        this.initialized = true;\n    }\n\n    onCanvasClick(event) {\n        if (this.chart) {\n            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n\n            if (element && element[0] && dataset) {\n                this.onDataSelect.emit({originalEvent: event, element: element[0], dataset: dataset});\n            }\n        }\n    }\n\n    initChart() {\n        let opts = this.options||{};\n        opts.responsive = this.responsive;\n\n        // allows chart to resize in responsive mode\n        if (opts.responsive&&(this.height||this.width)) {\n            opts.maintainAspectRatio = false;\n        }\n\n        this.chart = new Chart(this.el.nativeElement.children[0].children[0], {\n            type: this.type,\n            data: this.data,\n            options: this.options,\n            plugins: this.plugins\n        });\n    }\n\n    getCanvas() {\n        return this.el.nativeElement.children[0].children[0];\n    }\n\n    getBase64Image() {\n        return this.chart.toBase64Image();\n    }\n\n    generateLegend() {\n        if (this.chart) {\n            return this.chart.generateLegend();\n        }\n    }\n\n    refresh() {\n        if (this.chart) {\n            this.chart.update();\n        }\n    }\n\n    reinit() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initChart();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initialized = false;\n            this.chart = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [UIChart],\n    declarations: [UIChart]\n})\nexport class ChartModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,182 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ObjectUtils } from 'primeng/utils';
+
+const CHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Checkbox),
+    multi: true
+};
+class Checkbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxIcon = 'pi pi-check';
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.focused = false;
+    }
+    onClick(event, checkbox, focus) {
+        event.preventDefault();
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        this.updateModel(event);
+        if (focus) {
+            checkbox.focus();
+        }
+    }
+    updateModel(event) {
+        let newModelValue;
+        if (!this.binary) {
+            if (this.checked())
+                newModelValue = this.model.filter(val => !ObjectUtils.equals(val, this.value));
+            else
+                newModelValue = this.model ? [...this.model, this.value] : [this.value];
+            this.onModelChange(newModelValue);
+            this.model = newModelValue;
+            if (this.formControl) {
+                this.formControl.setValue(newModelValue);
+            }
+        }
+        else {
+            newModelValue = this.checked() ? this.falseValue : this.trueValue;
+            this.model = newModelValue;
+            this.onModelChange(newModelValue);
+        }
+        this.onChange.emit({ checked: newModelValue, originalEvent: event });
+    }
+    handleChange(event) {
+        if (!this.readonly) {
+            this.updateModel(event);
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    writeValue(model) {
+        this.model = model;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);
+    }
+}
+Checkbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Checkbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Checkbox, selector: "p-checkbox", inputs: { value: "value", name: "name", disabled: "disabled", binary: "binary", label: "label", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", formControl: "formControl", checkboxIcon: "checkboxIcon", readonly: "readonly", required: "required", trueValue: "trueValue", falseValue: "falseValue" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [CHECKBOX_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["cb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-checkbox', template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, providers: [CHECKBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], binary: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], formControl: [{
+                type: Input
+            }], checkboxIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['cb']
+            }], onChange: [{
+                type: Output
+            }] } });
+class CheckboxModule {
+}
+CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, declarations: [Checkbox], imports: [CommonModule], exports: [Checkbox] });
+CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Checkbox],
+                    declarations: [Checkbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CHECKBOX_VALUE_ACCESSOR, Checkbox, CheckboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-checkbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-checkbox.mjs","sources":["../../src/app/components/checkbox/checkbox.ts","../../src/app/components/checkbox/primeng-checkbox.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ViewChild,ElementRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor, FormControl} from '@angular/forms';\nimport { ObjectUtils } from 'primeng/utils';\n\nexport const CHECKBOX_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Checkbox),\n  multi: true\n};\n\n@Component({\n    selector: 'p-checkbox',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [readonly]=\"readonly\" [value]=\"value\" [checked]=\"checked()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                (change)=\"handleChange($event)\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-label]=\"ariaLabel\" [attr.aria-checked]=\"checked()\" [attr.required]=\"required\">\n            </div>\n            <div class=\"p-checkbox-box\" (click)=\"onClick($event,cb,true)\"\n                        [ngClass]=\"{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"checked() ? checkboxIcon : null\"></span>\n            </div>\n        </div>\n        <label (click)=\"onClick($event,cb,true)\" [class]=\"labelStyleClass\"\n                [ngClass]=\"{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}\"\n                *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [CHECKBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./checkbox.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Checkbox implements ControlValueAccessor {\n\n    @Input() value: any;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() binary: boolean;\n\n    @Input() label: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() labelStyleClass: string;\n\n    @Input() formControl: FormControl;\n\n    @Input() checkboxIcon: string = 'pi pi-check';\n\n    @Input() readonly: boolean;\n\n    @Input() required: boolean;\n\n    @Input() trueValue: any = true;\n\n    @Input() falseValue: any = false;\n\n    @ViewChild('cb') inputViewChild: ElementRef;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    model: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    focused: boolean = false;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    onClick(event,checkbox,focus:boolean) {\n        event.preventDefault();\n\n        if (this.disabled || this.readonly) {\n            return;\n        }\n\n        this.updateModel(event);\n\n        if (focus) {\n            checkbox.focus();\n        }\n    }\n\n    updateModel(event) {\n        let newModelValue;\n\n        if (!this.binary) {\n            if (this.checked())\n                newModelValue = this.model.filter(val => !ObjectUtils.equals(val, this.value));\n            else\n                newModelValue = this.model ? [...this.model, this.value] : [this.value];\n\n            this.onModelChange(newModelValue);\n            this.model = newModelValue;\n\n            if (this.formControl) {\n                this.formControl.setValue(newModelValue);\n            }\n        }\n        else {\n            newModelValue = this.checked() ? this.falseValue : this.trueValue;\n            this.model = newModelValue;\n            this.onModelChange(newModelValue);\n        }\n\n        this.onChange.emit({checked:newModelValue, originalEvent: event});\n    }\n\n    handleChange(event) {\n        if (!this.readonly) {\n            this.updateModel(event);\n        }\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    writeValue(model: any) : void {\n        this.model = model;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    checked() {\n        return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Checkbox],\n    declarations: [Checkbox]\n})\nexport class CheckboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,81 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Chip {
+    constructor() {
+        this.removeIcon = "pi pi-times-circle";
+        this.onRemove = new EventEmitter();
+        this.visible = true;
+    }
+    containerClass() {
+        return {
+            'p-chip p-component': true,
+            'p-chip-image': this.image != null
+        };
+    }
+    close(event) {
+        this.visible = false;
+        this.onRemove.emit(event);
+    }
+}
+Chip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Chip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chip, selector: "p-chip", inputs: { label: "label", icon: "icon", image: "image", style: "style", styleClass: "styleClass", removable: "removable", removeIcon: "removeIcon" }, outputs: { onRemove: "onRemove" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, isInline: true, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chip', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], removable: [{
+                type: Input
+            }], removeIcon: [{
+                type: Input
+            }], onRemove: [{
+                type: Output
+            }] } });
+class ChipModule {
+}
+ChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, declarations: [Chip], imports: [CommonModule], exports: [Chip] });
+ChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Chip],
+                    declarations: [Chip]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Chip, ChipModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chip.mjs","sources":["../../src/app/components/chip/chip.ts","../../src/app/components/chip/primeng-chip.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-chip',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" *ngIf=\"visible\">\n            <ng-content></ng-content>\n            <img [src]=\"image\" *ngIf=\"image;else iconTemplate\">\n            <ng-template #iconTemplate><span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'p-chip-icon'\"></span></ng-template>\n            <div class=\"p-chip-text\" *ngIf=\"label\">{{label}}</div>\n            <span *ngIf=\"removable\" tabindex=\"0\" [class]=\"removeIcon\" [ngClass]=\"'pi-chip-remove-icon'\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\"></span>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./chip.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Chip {\n\n    @Input() label: string;\n\n    @Input() icon: string;\n\n    @Input() image: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() removable: boolean;\n\n    @Input() removeIcon: string = \"pi pi-times-circle\";\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    visible: boolean = true;\n\n    containerClass() {\n        return {\n            'p-chip p-component': true,\n            'p-chip-image': this.image != null\n        };\n    }\n\n    close(event) {\n        this.visible = false;\n        this.onRemove.emit(event)\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Chip],\n    declarations: [Chip]\n})\nexport class ChipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAqBa,IAAI;IAlBjB;QAgCa,eAAU,GAAW,oBAAoB,CAAC;QAEzC,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE3D,YAAO,GAAY,IAAI,CAAC;KAa3B;IAXG,cAAc;QACV,OAAO;YACH,oBAAoB,EAAE,IAAI;YAC1B,cAAc,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;SACrC,CAAC;KACL;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC5B;;iGA9BQ,IAAI;qFAAJ,IAAI,8QAhBH;;;;;;;;KAQT;2FAQQ,IAAI;kBAlBhB,SAAS;+BACI,QAAQ,YACR;;;;;;;;KAQT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEI,QAAQ;sBAAjB,MAAM;;MAsBE,UAAU;;uGAAV,UAAU;wGAAV,UAAU,iBAtCV,IAAI,aAkCH,YAAY,aAlCb,IAAI;wGAsCJ,UAAU,YAJV,CAAC,YAAY,CAAC;2FAId,UAAU;kBALtB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,IAAI,CAAC;oBACf,YAAY,EAAE,CAAC,IAAI,CAAC;iBACvB;;;AC1DD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,297 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const CHIPS_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Chips),
+    multi: true
+};
+class Chips {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.allowDuplicate = true;
+        this.onAdd = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onChipClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateFilledState();
+    }
+    onClick() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    onInput() {
+        this.updateFilledState();
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            if (this.separator) {
+                let pastedData = (event.clipboardData || window['clipboardData']).getData('Text');
+                pastedData.split(this.separator).forEach(val => {
+                    this.addItem(event, val, true);
+                });
+                this.inputViewChild.nativeElement.value = '';
+            }
+            this.updateFilledState();
+        }
+    }
+    updateFilledState() {
+        if (!this.value || this.value.length === 0) {
+            this.filled = (this.inputViewChild && this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '');
+        }
+        else {
+            this.filled = true;
+        }
+    }
+    onItemClick(event, item) {
+        this.onChipClick.emit({
+            originalEvent: event,
+            value: item
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateMaxedOut();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    resolveFieldData(data, field) {
+        if (data && field) {
+            if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (var i = 0, len = fields.length; i < len; ++i) {
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        if (this.addOnBlur && this.inputViewChild.nativeElement.value) {
+            this.addItem(event, this.inputViewChild.nativeElement.value, false);
+        }
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    removeItem(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        let removedItem = this.value[index];
+        this.value = this.value.filter((val, i) => i != index);
+        this.onModelChange(this.value);
+        this.onRemove.emit({
+            originalEvent: event,
+            value: removedItem
+        });
+        this.updateFilledState();
+        this.updateMaxedOut();
+    }
+    addItem(event, item, preventDefault) {
+        this.value = this.value || [];
+        if (item && item.trim().length) {
+            if (this.allowDuplicate || this.value.indexOf(item) === -1) {
+                this.value = [...this.value, item];
+                this.onModelChange(this.value);
+                this.onAdd.emit({
+                    originalEvent: event,
+                    value: item
+                });
+            }
+        }
+        this.updateFilledState();
+        this.updateMaxedOut();
+        this.inputViewChild.nativeElement.value = '';
+        if (preventDefault) {
+            event.preventDefault();
+        }
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //backspace
+            case 8:
+                if (this.inputViewChild.nativeElement.value.length === 0 && this.value && this.value.length > 0) {
+                    this.value = [...this.value];
+                    let removedItem = this.value.pop();
+                    this.onModelChange(this.value);
+                    this.onRemove.emit({
+                        originalEvent: event,
+                        value: removedItem
+                    });
+                    this.updateFilledState();
+                }
+                break;
+            //enter
+            case 13:
+                this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                break;
+            case 9:
+                if (this.addOnTab && this.inputViewChild.nativeElement.value !== '') {
+                    this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                }
+                break;
+            default:
+                if (this.max && this.value && this.max === this.value.length) {
+                    event.preventDefault();
+                }
+                else if (this.separator) {
+                    if (this.separator === ',' && event.which === 188) {
+                        this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                    }
+                }
+                break;
+        }
+    }
+    updateMaxedOut() {
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.max && this.value && this.max === this.value.length)
+                this.inputViewChild.nativeElement.disabled = true;
+            else
+                this.inputViewChild.nativeElement.disabled = this.disabled || false;
+        }
+    }
+}
+Chips.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Chips.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chips, selector: "p-chips", inputs: { style: "style", styleClass: "styleClass", disabled: "disabled", field: "field", placeholder: "placeholder", max: "max", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", allowDuplicate: "allowDuplicate", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", addOnTab: "addOnTab", addOnBlur: "addOnBlur", separator: "separator" }, outputs: { onAdd: "onAdd", onRemove: "onRemove", onFocus: "onFocus", onBlur: "onBlur", onChipClick: "onChipClick" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CHIPS_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["inputtext"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chips', template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CHIPS_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], field: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], allowDuplicate: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], addOnTab: [{
+                type: Input
+            }], addOnBlur: [{
+                type: Input
+            }], separator: [{
+                type: Input
+            }], onAdd: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onChipClick: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['inputtext']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ChipsModule {
+}
+ChipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, declarations: [Chips], imports: [CommonModule, InputTextModule, SharedModule], exports: [Chips, InputTextModule, SharedModule] });
+ChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, imports: [[CommonModule, InputTextModule, SharedModule], InputTextModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, SharedModule],
+                    exports: [Chips, InputTextModule, SharedModule],
+                    declarations: [Chips]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CHIPS_VALUE_ACCESSOR, Chips, ChipsModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-chips.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chips.mjs","sources":["../../src/app/components/chips/chips.ts","../../src/app/components/chips/primeng-chips.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,EventEmitter,AfterContentInit,ContentChildren,QueryList,TemplateRef,forwardRef,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const CHIPS_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Chips),\n  multi: true\n};\n\n@Component({\n    selector: 'p-chips',\n    template: `\n        <div [ngClass]=\"'p-chips p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onClick()\">\n            <ul [ngClass]=\"{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}\">\n                <li #token *ngFor=\"let item of value; let i = index;\" class=\"p-chips-token\" (click)=\"onItemClick($event, item)\">\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                    <span *ngIf=\"!itemTemplate\" class=\"p-chips-token-label\">{{field ? resolveFieldData(item,field) : item}}</span>\n                    <span *ngIf=\"!disabled\" class=\"p-chips-token-icon pi pi-times-circle\" (click)=\"removeItem($event,i)\"></span>\n                </li>\n                <li class=\"p-chips-input-token\">\n                    <input #inputtext type=\"text\" [attr.id]=\"inputId\" [attr.placeholder]=\"(value && value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" (keydown)=\"onKeydown($event)\"\n                    (input)=\"onInput()\" (paste)=\"onPaste($event)\" [attr.aria-labelledby]=\"ariaLabelledBy\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" [disabled]=\"disabled\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\">\n                </li>\n            </ul>\n        </div>\n    `,\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus'\n    },\n    providers: [CHIPS_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./chips.css']\n})\nexport class Chips implements AfterContentInit,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() disabled: boolean;\n\n    @Input() field: string;\n\n    @Input() placeholder: string;\n\n    @Input() max: number;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() allowDuplicate: boolean = true;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: any;\n\n    @Input() addOnTab: boolean;\n\n    @Input() addOnBlur: boolean;\n\n    @Input() separator: string;\n\n    @Output() onAdd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChipClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('inputtext') inputViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    valueChanged: boolean;\n\n    focus: boolean;\n\n    filled: boolean;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n\n        this.updateFilledState();\n    }\n\n    onClick() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    onInput() {\n        this.updateFilledState();\n    }\n\n    onPaste(event) {\n        if (!this.disabled) {\n            if (this.separator) {\n                let pastedData = (event.clipboardData || window['clipboardData']).getData('Text');\n                pastedData.split(this.separator).forEach(val => {\n                    this.addItem(event, val, true);\n                });\n                this.inputViewChild.nativeElement.value = '';\n            }\n\n            this.updateFilledState();\n        }\n    }\n\n    updateFilledState() {\n        if (!this.value || this.value.length === 0) {\n            this.filled = (this.inputViewChild && this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '');\n        }\n        else {\n            this.filled = true;\n        }\n    }\n\n    onItemClick(event: Event, item: any) {\n        this.onChipClick.emit({\n            originalEvent: event,\n            value: item\n        });\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateMaxedOut();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    resolveFieldData(data: any, field: string): any {\n        if (data && field) {\n            if (field.indexOf('.') == -1) {\n                return data[field];\n            }\n            else {\n                let fields: string[] = field.split('.');\n                let value = data;\n                for(var i = 0, len = fields.length; i < len; ++i) {\n                    value = value[fields[i]];\n                }\n                return value;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    onInputFocus(event: FocusEvent) {\n        this.focus = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: FocusEvent) {\n        this.focus = false;\n        if (this.addOnBlur && this.inputViewChild.nativeElement.value) {\n            this.addItem(event, this.inputViewChild.nativeElement.value, false);\n        }\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    removeItem(event: Event, index: number): void {\n        if (this.disabled) {\n            return;\n        }\n\n        let removedItem = this.value[index];\n        this.value = this.value.filter((val, i) => i!=index);\n        this.onModelChange(this.value);\n        this.onRemove.emit({\n            originalEvent: event,\n            value: removedItem\n        });\n        this.updateFilledState();\n        this.updateMaxedOut();\n    }\n\n    addItem(event: Event, item: string, preventDefault: boolean): void {\n        this.value = this.value||[];\n        if (item && item.trim().length) {\n            if (this.allowDuplicate || this.value.indexOf(item) === -1) {\n                this.value = [...this.value, item];\n                this.onModelChange(this.value);\n                this.onAdd.emit({\n                    originalEvent: event,\n                    value: item\n                });\n            }\n        }\n        this.updateFilledState();\n        this.updateMaxedOut();\n        this.inputViewChild.nativeElement.value = '';\n\n        if (preventDefault) {\n            event.preventDefault();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent): void {\n        switch(event.which) {\n            //backspace\n            case 8:\n                if (this.inputViewChild.nativeElement.value.length === 0 && this.value && this.value.length > 0) {\n                    this.value = [...this.value];\n                    let removedItem = this.value.pop();\n                    this.onModelChange(this.value);\n                    this.onRemove.emit({\n                        originalEvent: event,\n                        value: removedItem\n                    });\n                    this.updateFilledState();\n                }\n            break;\n\n            //enter\n            case 13:\n                this.addItem(event, this.inputViewChild.nativeElement.value, true);\n            break;\n\n            case 9:\n                if (this.addOnTab && this.inputViewChild.nativeElement.value !== '') {\n                    this.addItem(event, this.inputViewChild.nativeElement.value, true);\n                }\n            break;\n\n            default:\n                if (this.max && this.value && this.max === this.value.length) {\n                    event.preventDefault();\n                }\n                else if (this.separator) {\n                    if (this.separator === ',' && event.which === 188) {\n                        this.addItem(event, this.inputViewChild.nativeElement.value, true);\n                    }\n                }\n            break;\n        }\n    }\n\n    updateMaxedOut() {\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            if (this.max && this.value && this.max === this.value.length)\n                this.inputViewChild.nativeElement.disabled = true;\n            else\n                this.inputViewChild.nativeElement.disabled = this.disabled || false;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule,SharedModule],\n    exports: [Chips,InputTextModule,SharedModule],\n    declarations: [Chips]\n})\nexport class ChipsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,44 @@
+import * as i0 from '@angular/core';
+import { Directive, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class CodeHighlighter {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        if (window['Prism']) {
+            window['Prism'].highlightElement(this.el.nativeElement);
+        }
+    }
+}
+CodeHighlighter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+CodeHighlighter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CodeHighlighter, selector: "[pCode]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCode]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
+class CodeHighlighterModule {
+}
+CodeHighlighterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CodeHighlighterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, declarations: [CodeHighlighter], imports: [CommonModule], exports: [CodeHighlighter] });
+CodeHighlighterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [CodeHighlighter],
+                    declarations: [CodeHighlighter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CodeHighlighter, CodeHighlighterModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-codehighlighter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-codehighlighter.mjs","sources":["../../src/app/components/codehighlighter/codehighlighter.ts","../../src/app/components/codehighlighter/primeng-codehighlighter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Directive({\n    selector: '[pCode]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CodeHighlighter implements AfterViewInit {\n\n    constructor(public el: ElementRef) { }\n\n    ngAfterViewInit() {\n        if (window['Prism']) {\n            window['Prism'].highlightElement(this.el.nativeElement);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [CodeHighlighter],\n    declarations: [CodeHighlighter]\n})\nexport class CodeHighlighterModule { }\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MASa,eAAe;IAExB,YAAmB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAK;IAEtC,eAAe;QACX,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;YACjB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SAC3D;KACJ;;4GARQ,eAAe;gGAAf,eAAe;2FAAf,eAAe;kBAN3B,SAAS;mBAAC;oBACP,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;;MAiBY,qBAAqB;;kHAArB,qBAAqB;mHAArB,qBAAqB,iBAhBrB,eAAe,aAYd,YAAY,aAZb,eAAe;mHAgBf,qBAAqB,YAJrB,CAAC,YAAY,CAAC;2FAId,qBAAqB;kBALjC,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,YAAY,EAAE,CAAC,eAAe,CAAC;iBAClC;;;ACxBD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,664 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+const COLORPICKER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ColorPicker),
+    multi: true
+};
+class ColorPicker {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.format = 'hex';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.value = { h: 0, s: 100, b: 100 };
+        this.defaultColor = 'ff0000';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set colorSelector(element) {
+        this.colorSelectorViewChild = element;
+    }
+    set colorHandle(element) {
+        this.colorHandleViewChild = element;
+    }
+    set hue(element) {
+        this.hueViewChild = element;
+    }
+    set hueHandle(element) {
+        this.hueHandleViewChild = element;
+    }
+    onHueMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.hueDragging = true;
+        this.pickHue(event);
+    }
+    onHueTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.hueDragging = true;
+        this.pickHue(event, event.changedTouches[0]);
+    }
+    onColorTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.colorDragging = true;
+        this.pickColor(event, event.changedTouches[0]);
+    }
+    pickHue(event, position) {
+        let pageY = position ? position.pageY : event.pageY;
+        let top = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        this.value = this.validateHSB({
+            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, (pageY - top)))) / 150),
+            s: this.value.s,
+            b: this.value.b
+        });
+        this.updateColorSelector();
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    onColorMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.colorDragging = true;
+        this.pickColor(event);
+    }
+    onMove(event) {
+        if (this.colorDragging) {
+            this.pickColor(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+        if (this.hueDragging) {
+            this.pickHue(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+    }
+    onDragEnd() {
+        this.colorDragging = false;
+        this.hueDragging = false;
+        this.unbindDocumentMousemoveListener();
+        this.unbindDocumentMouseupListener();
+    }
+    pickColor(event, position) {
+        let pageX = position ? position.pageX : event.pageX;
+        let pageY = position ? position.pageY : event.pageY;
+        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();
+        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        let left = rect.left + document.body.scrollLeft;
+        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((pageX) - left)))) / 150);
+        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((pageY) - top)))) / 150);
+        this.value = this.validateHSB({
+            h: this.value.h,
+            s: saturation,
+            b: brightness
+        });
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    getValueToUpdate() {
+        let val;
+        switch (this.format) {
+            case 'hex':
+                val = '#' + this.HSBtoHEX(this.value);
+                break;
+            case 'rgb':
+                val = this.HSBtoRGB(this.value);
+                break;
+            case 'hsb':
+                val = this.value;
+                break;
+        }
+        return val;
+    }
+    updateModel() {
+        this.onModelChange(this.getValueToUpdate());
+    }
+    writeValue(value) {
+        if (value) {
+            switch (this.format) {
+                case 'hex':
+                    this.value = this.HEXtoHSB(value);
+                    break;
+                case 'rgb':
+                    this.value = this.RGBtoHSB(value);
+                    break;
+                case 'hsb':
+                    this.value = value;
+                    break;
+            }
+        }
+        else {
+            this.value = this.HEXtoHSB(this.defaultColor);
+        }
+        this.updateColorSelector();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    updateColorSelector() {
+        if (this.colorSelectorViewChild) {
+            const hsb = {};
+            hsb.s = 100;
+            hsb.b = 100;
+            hsb.h = this.value.h;
+            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);
+        }
+    }
+    updateUI() {
+        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {
+            this.colorHandleViewChild.nativeElement.style.left = Math.floor(150 * this.value.s / 100) + 'px';
+            this.colorHandleViewChild.nativeElement.style.top = Math.floor(150 * (100 - this.value.b) / 100) + 'px';
+            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';
+        }
+        this.inputBgColor = '#' + this.HSBtoHEX(this.value);
+    }
+    onInputFocus() {
+        this.onModelTouched();
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                    this.updateColorSelector();
+                    this.updateUI();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.onShow.emit({});
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                this.onHide.emit({});
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);
+        else
+            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onInputClick() {
+        this.selfClick = true;
+        this.togglePanel();
+    }
+    togglePanel() {
+        if (!this.overlayVisible)
+            this.show();
+        else
+            this.hide();
+    }
+    onInputKeydown(event) {
+        switch (event.which) {
+            //space
+            case 32:
+                this.togglePanel();
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.selfClick) {
+                    this.overlayVisible = false;
+                    this.unbindDocumentClickListener();
+                }
+                this.selfClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentMousemoveListener() {
+        if (!this.documentMousemoveListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                if (this.colorDragging) {
+                    this.pickColor(event);
+                }
+                if (this.hueDragging) {
+                    this.pickHue(event);
+                }
+            });
+        }
+    }
+    unbindDocumentMousemoveListener() {
+        if (this.documentMousemoveListener) {
+            this.documentMousemoveListener();
+            this.documentMousemoveListener = null;
+        }
+    }
+    bindDocumentMouseupListener() {
+        if (!this.documentMouseupListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {
+                this.colorDragging = false;
+                this.hueDragging = false;
+                this.unbindDocumentMousemoveListener();
+                this.unbindDocumentMouseupListener();
+            });
+        }
+    }
+    unbindDocumentMouseupListener() {
+        if (this.documentMouseupListener) {
+            this.documentMouseupListener();
+            this.documentMouseupListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    validateHSB(hsb) {
+        return {
+            h: Math.min(360, Math.max(0, hsb.h)),
+            s: Math.min(100, Math.max(0, hsb.s)),
+            b: Math.min(100, Math.max(0, hsb.b))
+        };
+    }
+    validateRGB(rgb) {
+        return {
+            r: Math.min(255, Math.max(0, rgb.r)),
+            g: Math.min(255, Math.max(0, rgb.g)),
+            b: Math.min(255, Math.max(0, rgb.b))
+        };
+    }
+    validateHEX(hex) {
+        var len = 6 - hex.length;
+        if (len > 0) {
+            var o = [];
+            for (var i = 0; i < len; i++) {
+                o.push('0');
+            }
+            o.push(hex);
+            hex = o.join('');
+        }
+        return hex;
+    }
+    HEXtoRGB(hex) {
+        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+        return { r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF) };
+    }
+    HEXtoHSB(hex) {
+        return this.RGBtoHSB(this.HEXtoRGB(hex));
+    }
+    RGBtoHSB(rgb) {
+        var hsb = {
+            h: 0,
+            s: 0,
+            b: 0
+        };
+        var min = Math.min(rgb.r, rgb.g, rgb.b);
+        var max = Math.max(rgb.r, rgb.g, rgb.b);
+        var delta = max - min;
+        hsb.b = max;
+        hsb.s = max != 0 ? 255 * delta / max : 0;
+        if (hsb.s != 0) {
+            if (rgb.r == max) {
+                hsb.h = (rgb.g - rgb.b) / delta;
+            }
+            else if (rgb.g == max) {
+                hsb.h = 2 + (rgb.b - rgb.r) / delta;
+            }
+            else {
+                hsb.h = 4 + (rgb.r - rgb.g) / delta;
+            }
+        }
+        else {
+            hsb.h = -1;
+        }
+        hsb.h *= 60;
+        if (hsb.h < 0) {
+            hsb.h += 360;
+        }
+        hsb.s *= 100 / 255;
+        hsb.b *= 100 / 255;
+        return hsb;
+    }
+    HSBtoRGB(hsb) {
+        var rgb = {
+            r: null, g: null, b: null
+        };
+        let h = hsb.h;
+        let s = hsb.s * 255 / 100;
+        let v = hsb.b * 255 / 100;
+        if (s == 0) {
+            rgb = {
+                r: v,
+                g: v,
+                b: v
+            };
+        }
+        else {
+            let t1 = v;
+            let t2 = (255 - s) * v / 255;
+            let t3 = (t1 - t2) * (h % 60) / 60;
+            if (h == 360)
+                h = 0;
+            if (h < 60) {
+                rgb.r = t1;
+                rgb.b = t2;
+                rgb.g = t2 + t3;
+            }
+            else if (h < 120) {
+                rgb.g = t1;
+                rgb.b = t2;
+                rgb.r = t1 - t3;
+            }
+            else if (h < 180) {
+                rgb.g = t1;
+                rgb.r = t2;
+                rgb.b = t2 + t3;
+            }
+            else if (h < 240) {
+                rgb.b = t1;
+                rgb.r = t2;
+                rgb.g = t1 - t3;
+            }
+            else if (h < 300) {
+                rgb.b = t1;
+                rgb.g = t2;
+                rgb.r = t2 + t3;
+            }
+            else if (h < 360) {
+                rgb.r = t1;
+                rgb.g = t2;
+                rgb.b = t1 - t3;
+            }
+            else {
+                rgb.r = 0;
+                rgb.g = 0;
+                rgb.b = 0;
+            }
+        }
+        return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };
+    }
+    RGBtoHEX(rgb) {
+        var hex = [
+            rgb.r.toString(16),
+            rgb.g.toString(16),
+            rgb.b.toString(16)
+        ];
+        for (var key in hex) {
+            if (hex[key].length == 1) {
+                hex[key] = '0' + hex[key];
+            }
+        }
+        return hex.join('');
+    }
+    HSBtoHEX(hsb) {
+        return this.RGBtoHEX(this.HSBtoRGB(hsb));
+    }
+    onOverlayHide() {
+        this.unbindScrollListener();
+        this.unbindDocumentResizeListener();
+        this.unbindDocumentClickListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColorPicker, selector: "p-colorPicker", inputs: { style: "style", styleClass: "styleClass", inline: "inline", format: "format", appendTo: "appendTo", disabled: "disabled", tabindex: "tabindex", inputId: "inputId", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, providers: [COLORPICKER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }, { propertyName: "colorSelector", first: true, predicate: ["colorSelector"], descendants: true }, { propertyName: "colorHandle", first: true, predicate: ["colorHandle"], descendants: true }, { propertyName: "hue", first: true, predicate: ["hue"], descendants: true }, { propertyName: "hueHandle", first: true, predicate: ["hueHandle"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-colorPicker', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], providers: [COLORPICKER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input']
+            }], colorSelector: [{
+                type: ViewChild,
+                args: ['colorSelector']
+            }], colorHandle: [{
+                type: ViewChild,
+                args: ['colorHandle']
+            }], hue: [{
+                type: ViewChild,
+                args: ['hue']
+            }], hueHandle: [{
+                type: ViewChild,
+                args: ['hueHandle']
+            }] } });
+class ColorPickerModule {
+}
+ColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, declarations: [ColorPicker], imports: [CommonModule], exports: [ColorPicker] });
+ColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ColorPicker],
+                    declarations: [ColorPicker]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { COLORPICKER_VALUE_ACCESSOR, ColorPicker, ColorPickerModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-colorpicker.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-colorpicker.mjs","sources":["../../src/app/components/colorpicker/colorpicker.ts","../../src/app/components/colorpicker/primeng-colorpicker.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, OnDestroy, EventEmitter, forwardRef, Renderer2, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { trigger, state, style, transition, animate, AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { OverlayService, PrimeNGConfig } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\n\nexport const COLORPICKER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => ColorPicker),\n    multi: true\n};\n\n@Component({\n    selector: 'p-colorPicker',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}\">\n            <input #input type=\"text\" *ngIf=\"!inline\" class=\"p-colorpicker-preview p-inputtext\" readonly=\"readonly\" [ngClass]=\"{'p-disabled': disabled}\"\n                (focus)=\"onInputFocus()\" (click)=\"onInputClick()\" (keydown)=\"onInputKeydown($event)\" [attr.id]=\"inputId\" [attr.tabindex]=\"tabindex\" [disabled]=\"disabled\"\n                [style.backgroundColor]=\"inputBgColor\">\n            <div *ngIf=\"inline || overlayVisible\" [ngClass]=\"{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"inline === true\"\n                    (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <div class=\"p-colorpicker-content\">\n                    <div #colorSelector class=\"p-colorpicker-color-selector\" (touchstart)=\"onColorTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\" (mousedown)=\"onColorMousedown($event)\">\n                        <div class=\"p-colorpicker-color\">\n                            <div #colorHandle class=\"p-colorpicker-color-handle\"></div>\n                        </div>\n                    </div>\n                    <div #hue class=\"p-colorpicker-hue\" (mousedown)=\"onHueMousedown($event)\" (touchstart)=\"onHueTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\">\n                        <div #hueHandle class=\"p-colorpicker-hue-handle\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    providers: [COLORPICKER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./colorpicker.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColorPicker implements ControlValueAccessor, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inline: boolean;\n\n    @Input() format: string = 'hex';\n\n    @Input() appendTo: any;\n\n    @Input() disabled: boolean;\n\n    @Input() tabindex: string;\n\n    @Input() inputId: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('input') inputViewChild: ElementRef;\n\n    value: any = {h:0, s: 100, b: 100};\n\n    inputBgColor: string;\n\n    shown: boolean;\n\n    overlayVisible: boolean;\n\n    defaultColor: string = 'ff0000';\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    documentClickListener: Function;\n\n    documentResizeListener: any;\n\n    documentMousemoveListener: Function;\n\n    documentMouseupListener: Function;\n\n    documentHueMoveListener: Function;\n\n    scrollHandler: any;\n\n    selfClick: boolean;\n\n    colorDragging: boolean;\n\n    hueDragging: boolean;\n\n    overlay: HTMLDivElement;\n\n    colorSelectorViewChild: ElementRef;\n\n    colorHandleViewChild: ElementRef;\n\n    hueViewChild: ElementRef;\n\n    hueHandleViewChild: ElementRef;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    @ViewChild('colorSelector') set colorSelector(element: ElementRef) {\n        this.colorSelectorViewChild = element;\n    }\n\n    @ViewChild('colorHandle') set colorHandle(element: ElementRef) {\n        this.colorHandleViewChild = element;\n    }\n\n    @ViewChild('hue') set hue(element: ElementRef) {\n        this.hueViewChild = element;\n    }\n\n    @ViewChild('hueHandle') set hueHandle(element: ElementRef) {\n        this.hueHandleViewChild = element;\n    }\n\n    onHueMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.hueDragging = true;\n        this.pickHue(event);\n    }\n\n    onHueTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.hueDragging = true;\n        this.pickHue(event, event.changedTouches[0]);\n    }\n\n    onColorTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.colorDragging = true;\n        this.pickColor(event, event.changedTouches[0]);\n    }\n\n    pickHue(event, position?) {\n        let pageY = position ? position.pageY : event.pageY;\n        let top: number = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        this.value = this.validateHSB({\n            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, (pageY - top)))) / 150),\n            s: this.value.s,\n            b: this.value.b\n        });\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    onColorMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.colorDragging = true;\n        this.pickColor(event);\n    }\n\n    onMove(event) {\n        if (this.colorDragging) {\n            this.pickColor(event, event.changedTouches[0]);\n            event.preventDefault();\n        }\n\n        if (this.hueDragging) {\n            this.pickHue(event, event.changedTouches[0]);\n            event.preventDefault();\n        }\n    }\n\n    onDragEnd() {\n        this.colorDragging = false;\n        this.hueDragging = false;\n\n        this.unbindDocumentMousemoveListener();\n        this.unbindDocumentMouseupListener();\n    }\n\n    pickColor(event, position?) {\n        let pageX = position ? position.pageX : event.pageX;\n        let pageY = position ? position.pageY : event.pageY;\n        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();\n        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        let left = rect.left + document.body.scrollLeft;\n        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((pageX)- left)))) / 150);\n        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((pageY) - top)))) / 150);\n        this.value = this.validateHSB({\n            h: this.value.h,\n            s: saturation,\n            b: brightness\n        });\n\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    getValueToUpdate() {\n        let val: any;\n        switch(this.format) {\n            case 'hex':\n                val = '#' + this.HSBtoHEX(this.value);\n            break;\n\n            case 'rgb':\n                val = this.HSBtoRGB(this.value);\n            break;\n\n            case 'hsb':\n                val = this.value;\n            break;\n        }\n\n        return val;\n    }\n\n    updateModel(): void {\n        this.onModelChange(this.getValueToUpdate());\n    }\n\n    writeValue(value: any): void {\n        if (value) {\n            switch(this.format) {\n                case 'hex':\n                    this.value = this.HEXtoHSB(value);\n                break;\n\n                case 'rgb':\n                    this.value = this.RGBtoHSB(value);\n                break;\n\n                case 'hsb':\n                    this.value = value;\n                break;\n            }\n        }\n        else {\n            this.value = this.HEXtoHSB(this.defaultColor);\n        }\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.cd.markForCheck();\n    }\n\n    updateColorSelector() {\n        if (this.colorSelectorViewChild) {\n            const hsb: any = {};\n            hsb.s = 100;\n            hsb.b = 100;\n            hsb.h = this.value.h;\n\n            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);\n        }\n    }\n\n    updateUI() {\n        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {\n            this.colorHandleViewChild.nativeElement.style.left =  Math.floor(150 * this.value.s / 100) + 'px';\n            this.colorHandleViewChild.nativeElement.style.top =  Math.floor(150 * (100 - this.value.b) / 100) + 'px';\n            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';\n\n        }\n\n        this.inputBgColor = '#' + this.HSBtoHEX(this.value);\n    }\n\n    onInputFocus() {\n        this.onModelTouched();\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.overlay = event.element;\n                    this.appendOverlay();\n\n                    if (this.autoZIndex) {\n                        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                    }\n\n                    this.alignOverlay();\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n\n                    this.updateColorSelector();\n                    this.updateUI();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.onShow.emit({})\n                }\n            break;\n\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n\n                this.onHide.emit({})\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);\n        else\n            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onInputClick() {\n        this.selfClick = true;\n        this.togglePanel();\n    }\n\n    togglePanel() {\n        if (!this.overlayVisible)\n            this.show();\n        else\n            this.hide();\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        switch(event.which) {\n            //space\n            case 32:\n                this.togglePanel();\n                event.preventDefault();\n            break;\n\n            //escape and tab\n            case 27:\n            case 9:\n                this.hide();\n            break;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n\n        this.selfClick = true;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.selfClick) {\n                    this.overlayVisible = false;\n                    this.unbindDocumentClickListener();\n                }\n\n                this.selfClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentMousemoveListener() {\n        if (!this.documentMousemoveListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event: MouseEvent) => {\n                if (this.colorDragging) {\n                    this.pickColor(event);\n                }\n\n                if (this.hueDragging) {\n                    this.pickHue(event);\n                }\n            });\n        }\n    }\n\n    unbindDocumentMousemoveListener() {\n        if (this.documentMousemoveListener) {\n            this.documentMousemoveListener();\n            this.documentMousemoveListener = null;\n        }\n    }\n\n    bindDocumentMouseupListener() {\n        if (!this.documentMouseupListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {\n                this.colorDragging = false;\n                this.hueDragging = false;\n                this.unbindDocumentMousemoveListener();\n                this.unbindDocumentMouseupListener();\n            });\n        }\n    }\n\n    unbindDocumentMouseupListener() {\n        if (this.documentMouseupListener) {\n            this.documentMouseupListener();\n            this.documentMouseupListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    validateHSB(hsb) {\n        return {\n            h: Math.min(360, Math.max(0, hsb.h)),\n            s: Math.min(100, Math.max(0, hsb.s)),\n            b: Math.min(100, Math.max(0, hsb.b))\n        };\n    }\n\n    validateRGB(rgb) {\n        return {\n            r: Math.min(255, Math.max(0, rgb.r)),\n            g: Math.min(255, Math.max(0, rgb.g)),\n            b: Math.min(255, Math.max(0, rgb.b))\n        };\n    }\n\n    validateHEX(hex) {\n        var len = 6 - hex.length;\n        if (len > 0) {\n            var o = [];\n            for (var i=0; i<len; i++) {\n                o.push('0');\n            }\n            o.push(hex);\n            hex = o.join('');\n        }\n        return hex;\n    }\n\n    HEXtoRGB(hex) {\n        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n        return {r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF)};\n    }\n\n    HEXtoHSB(hex) {\n        return this.RGBtoHSB(this.HEXtoRGB(hex));\n    }\n\n    RGBtoHSB(rgb) {\n        var hsb = {\n            h: 0,\n            s: 0,\n            b: 0\n        };\n        var min = Math.min(rgb.r, rgb.g, rgb.b);\n        var max = Math.max(rgb.r, rgb.g, rgb.b);\n        var delta = max - min;\n        hsb.b = max;\n        hsb.s = max != 0 ? 255 * delta / max : 0;\n        if (hsb.s != 0) {\n            if (rgb.r == max) {\n                hsb.h = (rgb.g - rgb.b) / delta;\n            } else if (rgb.g == max) {\n                hsb.h = 2 + (rgb.b - rgb.r) / delta;\n            } else {\n                hsb.h = 4 + (rgb.r - rgb.g) / delta;\n            }\n        } else {\n            hsb.h = -1;\n        }\n        hsb.h *= 60;\n        if (hsb.h < 0) {\n            hsb.h += 360;\n        }\n        hsb.s *= 100/255;\n        hsb.b *= 100/255;\n        return hsb;\n    }\n\n    HSBtoRGB(hsb) {\n        var rgb = {\n            r: null, g: null, b: null\n        };\n        let h: number = hsb.h;\n        let s: number = hsb.s*255/100;\n        let v: number = hsb.b*255/100;\n        if (s == 0) {\n            rgb = {\n                r: v,\n                g: v,\n                b: v\n            }\n        }\n        else {\n            let t1: number = v;\n            let t2: number = (255-s)*v/255;\n            let t3: number = (t1-t2)*(h%60)/60;\n            if (h==360) h = 0;\n            if (h<60) {rgb.r=t1;\trgb.b=t2; rgb.g=t2+t3}\n            else if (h<120) {rgb.g=t1; rgb.b=t2;\trgb.r=t1-t3}\n            else if (h<180) {rgb.g=t1; rgb.r=t2;\trgb.b=t2+t3}\n            else if (h<240) {rgb.b=t1; rgb.r=t2;\trgb.g=t1-t3}\n            else if (h<300) {rgb.b=t1; rgb.g=t2;\trgb.r=t2+t3}\n            else if (h<360) {rgb.r=t1; rgb.g=t2;\trgb.b=t1-t3}\n            else {rgb.r=0; rgb.g=0;\trgb.b=0}\n        }\n        return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\n    }\n\n    RGBtoHEX(rgb) {\n        var hex = [\n            rgb.r.toString(16),\n            rgb.g.toString(16),\n            rgb.b.toString(16)\n        ];\n\n        for(var key in hex) {\n            if (hex[key].length == 1) {\n                hex[key] = '0' + hex[key];\n            }\n        }\n\n        return hex.join('');\n    }\n\n    HSBtoHEX(hsb) {\n        return this.RGBtoHEX(this.HSBtoRGB(hsb));\n    }\n\n    onOverlayHide() {\n        this.unbindScrollListener();\n        this.unbindDocumentResizeListener();\n        this.unbindDocumentClickListener();\n        this.overlay = null;\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay && this.autoZIndex) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ColorPicker],\n    declarations: [ColorPicker]\n})\nexport class ColorPickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,538 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { ConfirmEventType, TranslationKeys, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class ConfirmDialog {
+    constructor(el, renderer, confirmationService, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.confirmationService = confirmationService;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.acceptIcon = 'pi pi-check';
+        this.acceptVisible = true;
+        this.rejectIcon = 'pi pi-times';
+        this.rejectVisible = true;
+        this.closeOnEscape = true;
+        this.blockScroll = true;
+        this.closable = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.focusTrap = true;
+        this.defaultFocus = 'accept';
+        this.onHide = new EventEmitter();
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+        this.id = UniqueComponentId();
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                this.confirmationOptions = {
+                    message: this.confirmation.message || this.message,
+                    icon: this.confirmation.icon || this.icon,
+                    header: this.confirmation.header || this.header,
+                    rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,
+                    acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,
+                    acceptLabel: this.confirmation.acceptLabel || this.acceptLabel,
+                    rejectLabel: this.confirmation.rejectLabel || this.rejectLabel,
+                    acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,
+                    rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,
+                    acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,
+                    rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,
+                    defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,
+                    blockScroll: (this.confirmation.blockScroll === false || this.confirmation.blockScroll === true) ? this.confirmation.blockScroll : this.blockScroll,
+                    closeOnEscape: (this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true) ? this.confirmation.closeOnEscape : this.closeOnEscape,
+                    dismissableMask: (this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true) ? this.confirmation.dismissableMask : this.dismissableMask
+                };
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+        this.cd.markForCheck();
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'top-left':
+            case 'bottom-left':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'top-right':
+            case 'bottom-right':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            if (this.visible) {
+                this.cd.markForCheck();
+            }
+        });
+    }
+    option(name) {
+        const source = this.confirmationOptions || this;
+        if (source.hasOwnProperty(name)) {
+            return source[name];
+        }
+        return undefined;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');
+                this.container.setAttribute(this.id, '');
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.enableModality();
+                const element = this.getElementToFocus();
+                if (element) {
+                    element.focus();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.option('defaultFocus')) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');
+            case 'close':
+                return DomHandler.findSingle(this.container, '.p-dialog-header-close');
+            case 'none':
+                return null;
+            //backward compatibility
+            default:
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.wrapper && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    enableModality() {
+        if (this.option('blockScroll')) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.option('dismissableMask')) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+    }
+    disableModality() {
+        this.maskVisible = false;
+        if (this.option('blockScroll')) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.dismissableMask) {
+            this.unbindMaskClickListener();
+        }
+        if (this.container && !this.cd['destroyed']) {
+            this.cd.detectChanges();
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    close(event) {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);
+        }
+        this.hide(ConfirmEventType.CANCEL);
+        event.preventDefault();
+    }
+    hide(type) {
+        this.onHide.emit(type);
+        this.visible = false;
+        this.confirmation = null;
+        this.confirmationOptions = null;
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    getMaskClass() {
+        let maskClass = { 'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll };
+        maskClass[this.getPositionClass().toString()] = true;
+        return maskClass;
+    }
+    getPositionClass() {
+        const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];
+        const pos = positions.find(item => item === this.position);
+        return pos ? `p-dialog-${pos}` : '';
+    }
+    bindGlobalListeners() {
+        if ((this.option('closeOnEscape') && this.closable) || this.focusTrap && !this.documentEscapeListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27 && (this.option('closeOnEscape') && this.closable)) {
+                    if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {
+                        this.close(event);
+                    }
+                }
+                if (event.which === 9 && this.focusTrap) {
+                    event.preventDefault();
+                    let focusableElements = DomHandler.getFocusableElements(this.container);
+                    if (focusableElements && focusableElements.length > 0) {
+                        if (!focusableElements[0].ownerDocument.activeElement) {
+                            focusableElements[0].focus();
+                        }
+                        else {
+                            let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                            if (event.shiftKey) {
+                                if (focusedIndex == -1 || focusedIndex === 0)
+                                    focusableElements[focusableElements.length - 1].focus();
+                                else
+                                    focusableElements[focusedIndex - 1].focus();
+                            }
+                            else {
+                                if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                    focusableElements[0].focus();
+                                else
+                                    focusableElements[focusedIndex + 1].focus();
+                            }
+                        }
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    onOverlayHide() {
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.disableModality();
+        this.unbindGlobalListeners();
+        this.container = null;
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.onOverlayHide();
+        this.subscription.unsubscribe();
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+    accept() {
+        if (this.confirmation && this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide(ConfirmEventType.ACCEPT);
+    }
+    reject() {
+        if (this.confirmation && this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);
+        }
+        this.hide(ConfirmEventType.REJECT);
+    }
+    get acceptButtonLabel() {
+        return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+}
+ConfirmDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ConfirmationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmDialog, selector: "p-confirmDialog", inputs: { header: "header", icon: "icon", message: "message", style: "style", styleClass: "styleClass", maskStyleClass: "maskStyleClass", acceptIcon: "acceptIcon", acceptLabel: "acceptLabel", acceptAriaLabel: "acceptAriaLabel", acceptVisible: "acceptVisible", rejectIcon: "rejectIcon", rejectLabel: "rejectLabel", rejectAriaLabel: "rejectAriaLabel", rejectVisible: "rejectVisible", acceptButtonStyleClass: "acceptButtonStyleClass", rejectButtonStyleClass: "rejectButtonStyleClass", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", blockScroll: "blockScroll", rtl: "rtl", closable: "closable", appendTo: "appendTo", key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", transitionOptions: "transitionOptions", focusTrap: "focusTrap", defaultFocus: "defaultFocus", breakpoints: "breakpoints", visible: "visible", position: "position" }, outputs: { onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmDialog', template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ConfirmationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], message: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], acceptIcon: [{
+                type: Input
+            }], acceptLabel: [{
+                type: Input
+            }], acceptAriaLabel: [{
+                type: Input
+            }], acceptVisible: [{
+                type: Input
+            }], rejectIcon: [{
+                type: Input
+            }], rejectLabel: [{
+                type: Input
+            }], rejectAriaLabel: [{
+                type: Input
+            }], rejectVisible: [{
+                type: Input
+            }], acceptButtonStyleClass: [{
+                type: Input
+            }], rejectButtonStyleClass: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], onHide: [{
+                type: Output
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ConfirmDialogModule {
+}
+ConfirmDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, declarations: [ConfirmDialog], imports: [CommonModule, ButtonModule, RippleModule], exports: [ConfirmDialog, ButtonModule, SharedModule] });
+ConfirmDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, imports: [[CommonModule, ButtonModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule],
+                    exports: [ConfirmDialog, ButtonModule, SharedModule],
+                    declarations: [ConfirmDialog]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmDialog, ConfirmDialogModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-confirmdialog.mjs","sources":["../../src/app/components/confirmdialog/confirmdialog.ts","../../src/app/components/confirmdialog/primeng-confirmdialog.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,EventEmitter,Renderer2,ContentChild,NgZone,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, TemplateRef, AfterContentInit, Output, OnInit} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent, useAnimation, animation} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {Footer,SharedModule, PrimeTemplate, PrimeNGConfig, TranslationKeys, ConfirmEventType} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Confirmation} from 'primeng/api';\nimport {ConfirmationService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {UniqueComponentId, ZIndexUtils} from 'primeng/utils';\nimport { RippleModule } from 'primeng/ripple';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-confirmDialog',\n    template: `\n        <div [class]=\"maskStyleClass\" [ngClass]=\"getMaskClass()\" *ngIf=\"maskVisible\">\n            <div [ngClass]=\"{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}\" [ngStyle]=\"style\" [class]=\"styleClass\" (mousedown)=\"moveOnTop()\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" *ngIf=\"visible\">\n                <div class=\"p-dialog-header\" *ngIf=\"headerTemplate\">\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-dialog-header\" *ngIf=\"!headerTemplate\">\n                    <span class=\"p-dialog-title\" *ngIf=\"option('header')\">{{option('header')}}</span>\n                    <div class=\"p-dialog-header-icons\">\n                        <button *ngIf=\"closable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-close p-link':true}\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\">\n                            <span class=\"pi pi-times\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div #content class=\"p-dialog-content\">\n                    <i [ngClass]=\"'p-confirm-dialog-icon'\" [class]=\"option('icon')\" *ngIf=\"option('icon')\"></i>\n                    <span class=\"p-confirm-dialog-message\" [innerHTML]=\"option('message')\"></span>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"footer || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"!footer && !footerTemplate\">\n                    <button type=\"button\" pRipple pButton [icon]=\"option('rejectIcon')\" [label]=\"rejectButtonLabel\" (click)=\"reject()\" [ngClass]=\"'p-confirm-dialog-reject'\" [class]=\"option('rejectButtonStyleClass')\" *ngIf=\"option('rejectVisible')\" [attr.aria-label]=\"rejectAriaLabel\"></button>\n                    <button type=\"button\" pRipple pButton [icon]=\"option('acceptIcon')\" [label]=\"acceptButtonLabel\" (click)=\"accept()\" [ngClass]=\"'p-confirm-dialog-accept'\" [class]=\"option('acceptButtonStyleClass')\" *ngIf=\"option('acceptVisible')\" [attr.aria-label]=\"acceptAriaLabel\"></button>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ConfirmDialog implements AfterContentInit,OnInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() icon: string;\n\n    @Input() message: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() maskStyleClass: string;\n\n    @Input() acceptIcon: string = 'pi pi-check';\n\n    @Input() acceptLabel: string;\n\n    @Input() acceptAriaLabel: string;\n\n    @Input() acceptVisible: boolean = true;\n\n    @Input() rejectIcon: string = 'pi pi-times';\n\n    @Input() rejectLabel: string;\n\n    @Input() rejectAriaLabel: string;\n\n    @Input() rejectVisible: boolean = true;\n\n    @Input() acceptButtonStyleClass: string;\n\n    @Input() rejectButtonStyleClass: string;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() dismissableMask: boolean;\n\n    @Input() blockScroll: boolean = true;\n\n    @Input() rtl: boolean;\n\n    @Input() closable: boolean = true;\n\n    @Input() appendTo: any;\n\n    @Input() key: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() defaultFocus: string = 'accept';\n\n    @Input() breakpoints: any;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'top-left':\n            case 'bottom-left':\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n            break;\n            case 'top-right':\n            case 'bottom-right':\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n            break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n            break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n            break;\n            default:\n                this.transformOptions = \"scale(0.7)\";\n            break;\n        }\n    }\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Footer) footer;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    confirmation: Confirmation;\n\n    _visible: boolean;\n\n    maskVisible: boolean;\n\n    documentEscapeListener: any;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    contentContainer: HTMLDivElement;\n\n    subscription: Subscription;\n\n    maskClickListener: Function;\n\n    preWidth: number;\n\n    _position: string = \"center\";\n\n    transformOptions: any = \"scale(0.7)\";\n\n    styleElement: any;\n\n    id = UniqueComponentId();\n\n    confirmationOptions: Confirmation;\n\n    translationSubscription: Subscription;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private confirmationService: ConfirmationService, public zone: NgZone, private cd: ChangeDetectorRef, public config: PrimeNGConfig) {\n        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {\n            if (!confirmation) {\n                this.hide();\n                return;\n            }\n\n            if (confirmation.key === this.key) {\n                this.confirmation = confirmation;\n                this.confirmationOptions = {\n                    message: this.confirmation.message||this.message,\n                    icon: this.confirmation.icon||this.icon,\n                    header: this.confirmation.header||this.header,\n                    rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,\n                    acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,\n                    acceptLabel: this.confirmation.acceptLabel||this.acceptLabel,\n                    rejectLabel: this.confirmation.rejectLabel||this.rejectLabel,\n                    acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,\n                    rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,\n                    acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,\n                    rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,\n                    defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,\n                    blockScroll: (this.confirmation.blockScroll === false || this.confirmation.blockScroll === true) ? this.confirmation.blockScroll : this.blockScroll,\n                    closeOnEscape: (this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true) ? this.confirmation.closeOnEscape : this.closeOnEscape,\n                    dismissableMask: (this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true) ? this.confirmation.dismissableMask : this.dismissableMask\n                };\n\n                if (this.confirmation.accept) {\n                    this.confirmation.acceptEvent = new EventEmitter();\n                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n                }\n\n                if (this.confirmation.reject) {\n                    this.confirmation.rejectEvent = new EventEmitter();\n                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n                }\n\n                this.visible = true;\n            }\n        });\n    }\n\n    ngOnInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            if (this.visible) {\n                this.cd.markForCheck();\n            }\n        });\n    }\n\n    option(name: string) {\n        const source = this.confirmationOptions || this;\n        if (source.hasOwnProperty(name)) {\n            return source[name];\n        }\n        return undefined;\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');\n                this.container.setAttribute(this.id, '');\n                this.appendContainer();\n                this.moveOnTop();\n                this.bindGlobalListeners();\n                this.enableModality();\n\n                const element = this.getElementToFocus();\n                if (element) {\n                    element.focus();\n                }\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    getElementToFocus() {\n        switch(this.option('defaultFocus')) {\n            case 'accept':\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n\n            case 'reject':\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');\n\n            case 'close':\n                return DomHandler.findSingle(this.container, '.p-dialog-header-close');\n\n            case 'none':\n                return null;\n\n            //backward compatibility\n            default:\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.wrapper && this.appendTo) {\n            this.el.nativeElement.appendChild(this.wrapper);\n        }\n    }\n\n    enableModality() {\n        if (this.option('blockScroll')) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.option('dismissableMask')) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.close(event);\n                }\n            });\n        }\n    }\n\n    disableModality() {\n        this.maskVisible = false;\n\n        if (this.option('blockScroll')) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.dismissableMask) {\n            this.unbindMaskClickListener();\n        }\n\n        if (this.container && !this.cd['destroyed']) {\n            this.cd.detectChanges();\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-dialog[${this.id}] {\n                            width: ${this.breakpoints[breakpoint]} !important;\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    close(event: Event) {\n        if (this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);\n        }\n\n        this.hide(ConfirmEventType.CANCEL);\n        event.preventDefault();\n    }\n\n    hide(type?) {\n        this.onHide.emit(type);\n        this.visible = false;\n        this.confirmation = null;\n        this.confirmationOptions = null;\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n        }\n    }\n\n    getMaskClass() {\n        let maskClass = {'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll};\n        maskClass[this.getPositionClass().toString()] = true;\n        return maskClass;\n    }\n\n    getPositionClass() {\n        const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];\n        const pos = positions.find(item => item === this.position);\n\n        return pos ? `p-dialog-${pos}` : '';\n    }\n\n    bindGlobalListeners() {\n        if ((this.option('closeOnEscape') && this.closable) || this.focusTrap && !this.documentEscapeListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                if (event.which == 27 && (this.option('closeOnEscape') && this.closable)) {\n                    if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {\n                        this.close(event);\n                    }\n                }\n\n                if (event.which === 9 && this.focusTrap) {\n                    event.preventDefault();\n\n                    let focusableElements = DomHandler.getFocusableElements(this.container);\n\n                    if (focusableElements && focusableElements.length > 0) {\n                        if (!focusableElements[0].ownerDocument.activeElement) {\n                            focusableElements[0].focus();\n                        }\n                        else {\n                            let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                            if (event.shiftKey) {\n                                if (focusedIndex == -1 || focusedIndex === 0)\n                                    focusableElements[focusableElements.length - 1].focus();\n                                else\n                                    focusableElements[focusedIndex - 1].focus();\n                            }\n                            else {\n                                if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                                    focusableElements[0].focus();\n                                else\n                                    focusableElements[focusedIndex + 1].focus();\n                            }\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    onOverlayHide() {\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.disableModality();\n        this.unbindGlobalListeners();\n        this.container = null;\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.onOverlayHide();\n        this.subscription.unsubscribe();\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        this.destroyStyle();\n    }\n\n    accept() {\n        if (this.confirmation && this.confirmation.acceptEvent) {\n            this.confirmation.acceptEvent.emit();\n        }\n\n        this.hide(ConfirmEventType.ACCEPT);\n    }\n\n    reject() {\n        if (this.confirmation && this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);\n        }\n\n        this.hide(ConfirmEventType.REJECT);\n    }\n\n    get acceptButtonLabel(): string {\n        return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);\n    }\n\n    get rejectButtonLabel(): string {\n        return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,RippleModule],\n    exports: [ConfirmDialog,ButtonModule,SharedModule],\n    declarations: [ConfirmDialog]\n})\nexport class ConfirmDialogModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,313 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { TranslationKeys } from 'primeng/api';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { ZIndexUtils } from 'primeng/utils';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+
+class ConfirmPopup {
+    constructor(el, confirmationService, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.confirmationService = confirmationService;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.defaultFocus = "accept";
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        this.cd.markForCheck();
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            document.body.appendChild(this.container);
+            this.align();
+            this.bindListeners();
+            const element = this.getElementToFocus();
+            if (element) {
+                element.focus();
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.defaultFocus) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');
+            case 'none':
+                return null;
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.confirmation.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.confirmation.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-confirm-popup-flipped');
+        }
+    }
+    hide() {
+        this.visible = false;
+    }
+    accept() {
+        if (this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide();
+    }
+    reject() {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit();
+        }
+        this.hide();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    bindListeners() {
+        this.bindDocumentClickListener();
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    unbindListeners() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : document;
+            this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                let targetElement = this.confirmation.target;
+                if (this.container !== event.target && !this.container.contains(event.target) &&
+                    targetElement !== event.target && !targetElement.contains(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unsubscribeConfirmationSubscriptions() {
+        if (this.confirmation) {
+            if (this.confirmation.acceptEvent) {
+                this.confirmation.acceptEvent.unsubscribe();
+            }
+            if (this.confirmation.rejectEvent) {
+                this.confirmation.rejectEvent.unsubscribe();
+            }
+        }
+    }
+    onContainerDestroy() {
+        this.unbindListeners();
+        this.unsubscribeConfirmationSubscriptions();
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.confirmation = null;
+        this.container = null;
+    }
+    restoreAppend() {
+        if (this.container) {
+            document.body.removeChild(this.container);
+        }
+        this.onContainerDestroy();
+    }
+    get acceptButtonLabel() {
+        return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ConfirmPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, deps: [{ token: i0.ElementRef }, { token: i1.ConfirmationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmPopup, selector: "p-confirmPopup", inputs: { key: "key", defaultFocus: "defaultFocus", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", visible: "visible" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmPopup', template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfirmationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { key: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }] } });
+class ConfirmPopupModule {
+}
+ConfirmPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, declarations: [ConfirmPopup], imports: [CommonModule, ButtonModule], exports: [ConfirmPopup] });
+ConfirmPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, imports: [[CommonModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [ConfirmPopup],
+                    declarations: [ConfirmPopup]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmPopup, ConfirmPopupModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-confirmpopup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-confirmpopup.mjs","sources":["../../src/app/components/confirmpopup/confirmpopup.ts","../../src/app/components/confirmpopup/primeng-confirmpopup.ts"],"sourcesContent":["import {NgModule ,Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, ChangeDetectorRef, OnDestroy, Input, EventEmitter, Renderer2} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Confirmation, ConfirmationService, OverlayService, PrimeNGConfig, TranslationKeys} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {ButtonModule} from 'primeng/button';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\n\n@Component({\n    selector: 'p-confirmPopup',\n    template: `\n        <div *ngIf=\"visible\" [ngClass]=\"'p-confirm-popup p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onOverlayClick($event)\"\n            [@animation]=\"{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n            (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n            <div #content class=\"p-confirm-popup-content\">\n                <i [ngClass]=\"'p-confirm-popup-icon'\" [class]=\"confirmation.icon\" *ngIf=\"confirmation.icon\"></i>\n                <span class=\"p-confirm-popup-message\">{{confirmation.message}}</span>\n            </div>\n            <div class=\"p-confirm-popup-footer\">\n                <button type=\"button\" pButton [icon]=\"confirmation.rejectIcon\" [label]=\"rejectButtonLabel\" (click)=\"reject()\" [ngClass]=\"'p-confirm-popup-reject p-button-sm'\"\n                    [class]=\"confirmation.rejectButtonStyleClass || 'p-button-text'\" *ngIf=\"confirmation.rejectVisible !== false\" [attr.aria-label]=\"rejectButtonLabel\"></button>\n                <button type=\"button\" pButton [icon]=\"confirmation.acceptIcon\" [label]=\"acceptButtonLabel\" (click)=\"accept()\" [ngClass]=\"'p-confirm-popup-accept p-button-sm'\"\n                    [class]=\"confirmation.acceptButtonStyleClass\" *ngIf=\"confirmation.acceptVisible !== false\" [attr.aria-label]=\"acceptButtonLabel\"></button>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                transform: 'scaleY(0.8)',\n                opacity: 0\n            })),\n            state('open', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => void', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./confirmpopup.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ConfirmPopup implements OnDestroy {\n\n    @Input() key: string;\n\n    @Input() defaultFocus: string = \"accept\";\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    container: HTMLDivElement;\n\n    subscription: Subscription;\n\n    confirmation: Confirmation;\n\n    _visible: boolean;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    scrollHandler: any;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n        this.cd.markForCheck();\n    }\n\n    constructor(public el: ElementRef, private confirmationService: ConfirmationService, public renderer: Renderer2, private cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {\n        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {\n            if (!confirmation) {\n                this.hide();\n                return;\n            }\n\n            if (confirmation.key === this.key) {\n                this.confirmation = confirmation;\n                if (this.confirmation.accept) {\n                    this.confirmation.acceptEvent = new EventEmitter();\n                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n                }\n\n                if (this.confirmation.reject) {\n                    this.confirmation.rejectEvent = new EventEmitter();\n                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n                }\n\n                this.visible = true;\n            }\n        });\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.toState === 'open') {\n            this.container = event.element;\n            document.body.appendChild(this.container);\n            this.align();\n            this.bindListeners();\n\n            const element = this.getElementToFocus();\n            if (element) {\n                element.focus();\n            }\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onContainerDestroy();\n            break;\n        }\n    }\n\n    getElementToFocus() {\n        switch(this.defaultFocus) {\n            case 'accept':\n                return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');\n\n            case 'reject':\n                return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');\n\n            case 'none':\n                return null;\n        }\n    }\n\n    align() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);\n        }\n\n        DomHandler.absolutePosition(this.container, this.confirmation.target);\n\n        const containerOffset = DomHandler.getOffset(this.container);\n        const targetOffset = DomHandler.getOffset(this.confirmation.target);\n        let arrowLeft = 0;\n\n        if (containerOffset.left < targetOffset.left) {\n            arrowLeft = targetOffset.left - containerOffset.left;\n        }\n        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n        if (containerOffset.top < targetOffset.top) {\n            DomHandler.addClass(this.container, 'p-confirm-popup-flipped');\n        }\n    }\n\n    hide() {\n        this.visible = false;\n    }\n\n    accept() {\n        if (this.confirmation.acceptEvent) {\n            this.confirmation.acceptEvent.emit();\n        }\n\n        this.hide();\n    }\n\n    reject() {\n        if (this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit();\n        }\n\n        this.hide();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    bindListeners() {\n        this.bindDocumentClickListener();\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    unbindListeners() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : document;\n\n            this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n                let targetElement = <HTMLElement> this.confirmation.target;\n                if (this.container !== event.target && !this.container.contains(event.target) &&\n                    targetElement !== event.target && !targetElement.contains(event.target)) {\n                    this.hide();\n                }\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unsubscribeConfirmationSubscriptions() {\n        if (this.confirmation) {\n            if (this.confirmation.acceptEvent) {\n                this.confirmation.acceptEvent.unsubscribe();\n            }\n\n            if (this.confirmation.rejectEvent) {\n                this.confirmation.rejectEvent.unsubscribe();\n            }\n        }\n    }\n\n    onContainerDestroy() {\n        this.unbindListeners();\n        this.unsubscribeConfirmationSubscriptions();\n\n        if (this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.confirmation = null;\n        this.container = null;\n    }\n\n    restoreAppend() {\n        if (this.container) {\n            document.body.removeChild(this.container);\n        }\n\n        this.onContainerDestroy();\n    }\n\n    get acceptButtonLabel(): string {\n        return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);\n    }\n\n    get rejectButtonLabel(): string {\n        return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule],\n    exports: [ConfirmPopup],\n    declarations: [ConfirmPopup]\n})\nexport class ConfirmPopupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;MAgDa,YAAY;IAwCrB,YAAmB,EAAc,EAAU,mBAAwC,EAAS,QAAmB,EAAU,EAAqB,EAAS,MAAqB,EAAS,cAA8B;QAAhM,OAAE,GAAF,EAAE,CAAY;QAAU,wBAAmB,GAAnB,mBAAmB,CAAqB;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAU,OAAE,GAAF,EAAE,CAAmB;QAAS,WAAM,GAAN,MAAM,CAAe;QAAS,mBAAc,GAAd,cAAc,CAAgB;QApC1M,iBAAY,GAAW,QAAQ,CAAC;QAEhC,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;QAE7C,eAAU,GAAY,IAAI,CAAC;QAE3B,eAAU,GAAW,CAAC,CAAC;QA6B5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY;YACpF,IAAI,CAAC,YAAY,EAAE;gBACf,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;aACV;YAED,IAAI,YAAY,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBACrE;gBAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBACrE;gBAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;SACJ,CAAC,CAAC;KACN;IA9BD,IAAa,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAS;QACjB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IA0BD,gBAAgB,CAAC,KAAqB;QAClC,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE,CAAC;aACnB;SACJ;KACJ;IAED,cAAc,CAAC,KAAqB;QAChC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,MAAM;gBACP,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC9B,MAAM;SACT;KACJ;IAED,iBAAiB;QACb,QAAO,IAAI,CAAC,YAAY;YACpB,KAAK,QAAQ;gBACT,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;YAE5E,KAAK,QAAQ;gBACT,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;YAE5E,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC;SACnB;KACJ;IAED,KAAK;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1E;QAED,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtE,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE;YAC1C,SAAS,GAAG,YAAY,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;SACxD;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;QAEzE,IAAI,eAAe,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE;YACxC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;SAClE;KACJ;IAED,IAAI;QACA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAED,MAAM;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACxC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAED,MAAM;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACxC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAED,cAAc,CAAC,KAAK;QAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;SAChC,CAAC,CAAC;KACN;IAED,aAAa;QACT,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,eAAe;QACX,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,yBAAyB;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,IAAI,aAAa,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,YAAY,GAAG,OAAO,CAAC;YAChE,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,QAAQ,CAAC;YAErF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,KAAK;gBACnF,IAAI,aAAa,GAAiB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC3D,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;oBACzE,aAAa,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBACzE,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC,CAAC;SACN;KACJ;IAED,2BAA2B;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;KACJ;IAED,cAAc;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAED,0BAA0B;QACtB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAClE;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBAC7E,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAC7C;KACJ;IAED,oCAAoC;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;aAC/C;YAED,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;aAC/C;SACJ;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oCAAoC,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;IAED,aAAa;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9F;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9F;IAED,WAAW;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACnC;KACJ;;yGArQQ,YAAY;6FAAZ,YAAY,qWArCX;;;;;;;;;;;;;;;KAeT,imCACW;QACR,OAAO,CAAC,WAAW,EAAE;YACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;gBAChB,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,CAAC;aACb,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;gBAChB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,CAAC;aACb,CAAC,CAAC;YACH,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAC/D,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;SAClE,CAAC;KACL;2FAQQ,YAAY;kBAvCxB,SAAS;+BACI,gBAAgB,YAChB;;;;;;;;;;;;;;;KAeT,cACW;wBACR,OAAO,CAAC,WAAW,EAAE;4BACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;gCAChB,SAAS,EAAE,aAAa;gCACxB,OAAO,EAAE,CAAC;6BACb,CAAC,CAAC;4BACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;gCAChB,SAAS,EAAE,eAAe;gCAC1B,OAAO,EAAE,CAAC;6BACb,CAAC,CAAC;4BACH,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;4BAC/D,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;yBAClE,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;oPAIQ,GAAG;sBAAX,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAgBO,OAAO;sBAAnB,KAAK;;MA6OG,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBA7QlB,YAAY,aAyQX,YAAY,EAAC,YAAY,aAzQ1B,YAAY;gHA6QZ,kBAAkB,YAJlB,CAAC,YAAY,EAAC,YAAY,CAAC;2FAI3B,kBAAkB;kBAL9B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,YAAY,CAAC;iBAC/B;;;AC5TD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,577 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from 'primeng/api';
+import { ContextMenuService } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { Subject } from 'rxjs';
+import { takeUntil } from 'rxjs/operators';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class ContextMenuSub {
+    constructor(contextMenu) {
+        this.leafClick = new EventEmitter();
+        this.contextMenu = contextMenu;
+    }
+    ngOnInit() {
+        this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {
+            this.activeItemKey = activeItemKey;
+            if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {
+                this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);
+            }
+            this.contextMenu.cd.markForCheck();
+        });
+    }
+    onItemMouseEnter(event, item, key) {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+        if (item.disabled) {
+            return;
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');
+            DomHandler.addClass(childSublist, 'p-submenu-list-active');
+        }
+        this.contextMenu.contextMenuService.changeKey(key);
+    }
+    onItemMouseLeave(event, item) {
+        if (item.disabled) {
+            return;
+        }
+        if (this.contextMenu.el.nativeElement.contains(event.toElement)) {
+            if (item.items) {
+                this.contextMenu.removeActiveFromSubLists(event.currentTarget);
+            }
+            if (!this.root) {
+                this.contextMenu.contextMenuService.changeKey(this.parentItemKey);
+            }
+        }
+    }
+    onItemClick(event, item, menuitem, key) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.contextMenu.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                }
+                this.contextMenu.contextMenuService.changeKey(key);
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onLeafClick() {
+        if (this.root) {
+            this.contextMenu.hide();
+        }
+        this.leafClick.emit();
+    }
+    getKey(index) {
+        return this.root ? String(index) : this.parentItemKey + '_' + index;
+    }
+    isActive(key) {
+        return (this.activeItemKey && (this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key));
+    }
+}
+ContextMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, deps: [{ token: forwardRef(() => ContextMenu) }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { item: "item", root: "root", parentItemKey: "parentItemKey" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }, { propertyName: "menuitemViewChild", first: true, predicate: ["menuitem"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-contextMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => ContextMenu)]
+                    }] }];
+    }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], parentItemKey: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }], menuitemViewChild: [{
+                type: ViewChild,
+                args: ['menuitem']
+            }] } });
+class ContextMenu {
+    constructor(el, renderer, cd, zone, contextMenuService, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.contextMenuService = contextMenuService;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.triggerEvent = 'contextmenu';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.ngDestroy$ = new Subject();
+    }
+    ngAfterViewInit() {
+        if (this.global) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+            });
+        }
+        else if (this.target) {
+            this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+                event.stopPropagation();
+            });
+        }
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    show(event) {
+        this.clearActiveItem();
+        this.position(event);
+        this.moveOnTop();
+        this.containerViewChild.nativeElement.style.display = 'block';
+        DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);
+        this.bindGlobalListeners();
+        if (event) {
+            event.preventDefault();
+        }
+        this.onShow.emit();
+    }
+    hide() {
+        this.containerViewChild.nativeElement.style.display = 'none';
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        this.unbindGlobalListeners();
+        this.onHide.emit();
+    }
+    moveOnTop() {
+        if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    toggle(event) {
+        if (this.containerViewChild.nativeElement.offsetParent)
+            this.hide();
+        else
+            this.show(event);
+    }
+    position(event) {
+        if (event) {
+            let left = event.pageX + 1;
+            let top = event.pageY + 1;
+            let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);
+            let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);
+            let viewport = DomHandler.getViewport();
+            //flip
+            if (left + width - document.body.scrollLeft > viewport.width) {
+                left -= width;
+            }
+            //flip
+            if (top + height - document.body.scrollTop > viewport.height) {
+                top -= height;
+            }
+            //fit
+            if (left < document.body.scrollLeft) {
+                left = document.body.scrollLeft;
+            }
+            //fit
+            if (top < document.body.scrollTop) {
+                top = document.body.scrollTop;
+            }
+            this.containerViewChild.nativeElement.style.left = left + 'px';
+            this.containerViewChild.nativeElement.style.top = top + 'px';
+        }
+    }
+    positionSubmenu(sublist) {
+        let parentMenuItem = sublist.parentElement.parentElement;
+        let viewport = DomHandler.getViewport();
+        let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);
+        let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);
+        let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);
+        let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);
+        let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);
+        sublist.style.zIndex = ++DomHandler.zindex;
+        if ((parseInt(containerOffset.top) + itemOuterHeight + sublistHeight) > (viewport.height - DomHandler.calculateScrollbarHeight())) {
+            sublist.style.removeProperty('top');
+            sublist.style.bottom = '0px';
+        }
+        else {
+            sublist.style.removeProperty('bottom');
+            sublist.style.top = '0px';
+        }
+        if ((parseInt(containerOffset.left) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            sublist.style.left = -sublistWidth + 'px';
+        }
+        else {
+            sublist.style.left = itemOuterWidth + 'px';
+        }
+    }
+    isItemMatched(menuitem) {
+        return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');
+    }
+    findNextItem(menuitem, isRepeated) {
+        let nextMenuitem = menuitem.nextElementSibling;
+        if (nextMenuitem) {
+            return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);
+        }
+        else {
+            let firstItem = menuitem.parentElement.children[0];
+            return this.isItemMatched(firstItem) ? firstItem : (!isRepeated ? this.findNextItem(firstItem, true) : null);
+        }
+    }
+    findPrevItem(menuitem, isRepeated) {
+        let prevMenuitem = menuitem.previousElementSibling;
+        if (prevMenuitem) {
+            return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);
+        }
+        else {
+            let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];
+            return this.isItemMatched(lastItem) ? lastItem : (!isRepeated ? this.findPrevItem(lastItem, true) : null);
+        }
+    }
+    getActiveItem() {
+        let activeItemKey = this.contextMenuService.activeItemKey;
+        return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik="' + activeItemKey + '"]');
+    }
+    clearActiveItem() {
+        if (this.contextMenuService.activeItemKey) {
+            this.removeActiveFromSubLists(this.containerViewChild.nativeElement);
+            this.contextMenuService.reset();
+        }
+    }
+    removeActiveFromSubLists(el) {
+        let sublists = DomHandler.find(el, '.p-submenu-list-active');
+        for (let sublist of sublists) {
+            DomHandler.removeClass(sublist, 'p-submenu-list-active');
+        }
+    }
+    removeActiveFromSublist(menuitem) {
+        if (menuitem) {
+            let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {
+                DomHandler.removeClass(menuitem, 'p-submenu-list-active');
+            }
+        }
+    }
+    bindGlobalListeners() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2) {
+                    this.hide();
+                }
+            });
+        }
+        this.zone.runOutsideAngular(() => {
+            if (!this.windowResizeListener) {
+                this.windowResizeListener = this.onWindowResize.bind(this);
+                window.addEventListener('resize', this.windowResizeListener);
+            }
+        });
+        if (!this.documentKeydownListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                let activeItem = this.getActiveItem();
+                switch (event.key) {
+                    case 'ArrowDown':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findNextItem(activeItem);
+                        }
+                        else {
+                            let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;
+                            activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowUp':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findPrevItem(activeItem);
+                        }
+                        else {
+                            let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');
+                            let lastItem = sublist.children[sublist.children.length - 1];
+                            activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowRight':
+                        if (activeItem) {
+                            let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');
+                            if (sublist) {
+                                DomHandler.addClass(sublist, 'p-submenu-list-active');
+                                activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowLeft':
+                        if (activeItem) {
+                            let sublist = activeItem.parentElement;
+                            if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {
+                                DomHandler.removeClass(sublist, 'p-submenu-list-active');
+                                activeItem = sublist.parentElement.parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'Escape':
+                        this.hide();
+                        event.preventDefault();
+                        break;
+                    case 'Enter':
+                        if (activeItem) {
+                            this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);
+                        }
+                        event.preventDefault();
+                        break;
+                    default:
+                        break;
+                }
+            });
+        }
+    }
+    findModelItemFromKey(key) {
+        if (key == null || !this.model) {
+            return null;
+        }
+        let indexes = key.split('_');
+        return indexes.reduce((item, currentIndex) => {
+            return item ? item.items[currentIndex] : this.model[currentIndex];
+        }, null);
+    }
+    handleItemClick(event, item, menuitem) {
+        if (!item || item.disabled) {
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                    this.positionSubmenu(childSublist);
+                }
+            }
+        }
+        if (!item.items) {
+            this.hide();
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+        if (this.windowResizeListener) {
+            window.removeEventListener('resize', this.windowResizeListener);
+            this.windowResizeListener = null;
+        }
+        if (this.documentKeydownListener) {
+            this.documentKeydownListener();
+            this.documentKeydownListener = null;
+        }
+    }
+    onWindowResize(event) {
+        if (this.containerViewChild.nativeElement.offsetParent) {
+            this.hide();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.triggerEventListener) {
+            this.triggerEventListener();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+        this.ngDestroy$.next(true);
+        this.ngDestroy$.complete();
+    }
+}
+ContextMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i5.ContextMenuService }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenu, selector: "p-contextMenu", inputs: { model: "model", global: "global", target: "target", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", triggerEvent: "triggerEvent" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"], components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-contextMenu', template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i5.ContextMenuService }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], global: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], triggerEvent: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+class ContextMenuModule {
+}
+ContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [ContextMenu, RouterModule, TooltipModule] });
+ContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, providers: [ContextMenuService], imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [ContextMenu, RouterModule, TooltipModule],
+                    declarations: [ContextMenu, ContextMenuSub],
+                    providers: [ContextMenuService]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ContextMenu, ContextMenuModule, ContextMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-contextmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-contextmenu.mjs","sources":["../../src/app/components/contextmenu/contextmenu.ts","../../src/app/components/contextmenu/primeng-contextmenu.ts"],"sourcesContent":["import { NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,Renderer2,Inject,forwardRef,ViewChild,NgZone,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { MenuItem, ContextMenuService, PrimeNGConfig } from 'primeng/api';\nimport { RippleModule } from 'primeng/ripple';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { RouterModule } from '@angular/router';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-contextMenuSub',\n    template: `\n        <ul #sublist [ngClass]=\"{'p-submenu-list':!root}\">\n            <ng-template ngFor let-child let-index=\"index\" [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" #menuitem class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" #menuitem [ngClass]=\"{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" pTooltip [tooltipOptions]=\"child.tooltipOptions\"\n                    (mouseenter)=\"onItemMouseEnter($event,child,getKey(index))\" (mouseleave)=\"onItemMouseLeave($event,child)\" role=\"none\" [attr.data-ik]=\"getKey(index)\">\n                    <a *ngIf=\"!child.routerLink\" [attr.href]=\"child.url ? child.url : null\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                        [attr.tabindex]=\"child.disabled ? null : '0'\" (click)=\"onItemClick($event, child, menuitem, getKey(index))\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\" pRipple\n                        [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"isActive(getKey(index))\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" role=\"menuitem\"\n                        [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\"\n                        (click)=\"onItemClick($event, child, menuitem, getKey(index))\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                         pRipple [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-contextMenuSub [parentItemKey]=\"getKey(index)\" [item]=\"child\" *ngIf=\"child.items\" (leafClick)=\"onLeafClick()\"></p-contextMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ContextMenuSub {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() parentItemKey: any;\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('sublist') sublistViewChild: ElementRef;\n\n    @ViewChild('menuitem') menuitemViewChild: ElementRef;\n\n    contextMenu: ContextMenu;\n\n    activeItemKey: string;\n\n    hideTimeout: any;\n\n    activeItemKeyChangeSubscription: Subscription;\n\n    constructor(@Inject(forwardRef(() => ContextMenu)) contextMenu) {\n        this.contextMenu = contextMenu as ContextMenu;\n    }\n\n    ngOnInit() {\n        this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {\n            this.activeItemKey = activeItemKey;\n\n            if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {\n                this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);\n            }\n\n            this.contextMenu.cd.markForCheck();\n        });\n    }\n\n    onItemMouseEnter(event, item, key) {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n\n        if (item.disabled) {\n            return;\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');\n            DomHandler.addClass(childSublist, 'p-submenu-list-active');\n        }\n\n        this.contextMenu.contextMenuService.changeKey(key);\n    }\n\n    onItemMouseLeave(event, item) {\n        if (item.disabled) {\n            return;\n        }\n\n        if (this.contextMenu.el.nativeElement.contains(<Node> event.toElement)) {\n            if (item.items) {\n                this.contextMenu.removeActiveFromSubLists(event.currentTarget);\n            }\n\n            if (!this.root) {\n                this.contextMenu.contextMenuService.changeKey(this.parentItemKey);\n            }\n        }\n    }\n\n    onItemClick(event, item, menuitem, key) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (childSublist) {\n                if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n                    this.contextMenu.removeActiveFromSubLists(menuitem);\n                }\n                else {\n                    DomHandler.addClass(childSublist, 'p-submenu-list-active');\n                }\n\n                this.contextMenu.contextMenuService.changeKey(key);\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onLeafClick() {\n        if (this.root) {\n            this.contextMenu.hide();\n        }\n\n        this.leafClick.emit();\n    }\n\n    getKey(index) {\n        return this.root ? String(index) : this.parentItemKey + '_' + index;\n    }\n\n    isActive(key) {\n        return (this.activeItemKey &&(this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key));\n    }\n}\n\n@Component({\n    selector: 'p-contextMenu',\n    template: `\n        <div #container [ngClass]=\"'p-contextmenu p-component'\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <p-contextMenuSub [item]=\"model\" [root]=\"true\"></p-contextMenuSub>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./contextmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ContextMenu implements AfterViewInit, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() global: boolean;\n\n    @Input() target: any;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() triggerEvent: string = 'contextmenu';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    documentClickListener: any;\n\n    documentKeydownListener: any;\n\n    windowResizeListener: any;\n\n    triggerEventListener: any;\n\n    ngDestroy$ = new Subject();\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public zone: NgZone, public contextMenuService: ContextMenuService, private config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        if (this.global) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {\n                this.show(event);\n                event.preventDefault();\n            });\n        }\n        else if (this.target) {\n            this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {\n                this.show(event);\n                event.preventDefault();\n                event.stopPropagation();\n            });\n        }\n\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.containerViewChild.nativeElement);\n            else\n                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n        }\n    }\n\n    show(event?: MouseEvent) {\n        this.clearActiveItem();\n        this.position(event);\n        this.moveOnTop();\n        this.containerViewChild.nativeElement.style.display = 'block';\n        DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);\n        this.bindGlobalListeners();\n\n        if (event) {\n            event.preventDefault();\n        }\n\n        this.onShow.emit();\n    }\n\n    hide() {\n        this.containerViewChild.nativeElement.style.display = 'none';\n\n        if (this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        this.unbindGlobalListeners();\n        this.onHide.emit();\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {\n            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    toggle(event?: MouseEvent) {\n        if (this.containerViewChild.nativeElement.offsetParent)\n            this.hide();\n        else\n            this.show(event);\n    }\n\n    position(event?: MouseEvent) {\n        if (event) {\n            let left = event.pageX + 1;\n            let top = event.pageY + 1;\n            let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);\n            let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);\n            let viewport = DomHandler.getViewport();\n\n            //flip\n            if (left + width - document.body.scrollLeft > viewport.width) {\n                left -= width;\n            }\n\n            //flip\n            if (top + height - document.body.scrollTop > viewport.height) {\n                top -= height;\n            }\n\n            //fit\n            if (left < document.body.scrollLeft) {\n                left = document.body.scrollLeft;\n            }\n\n            //fit\n            if (top < document.body.scrollTop) {\n                top = document.body.scrollTop;\n            }\n\n            this.containerViewChild.nativeElement.style.left = left + 'px';\n            this.containerViewChild.nativeElement.style.top = top + 'px';\n        }\n    }\n\n    positionSubmenu(sublist) {\n        let parentMenuItem = sublist.parentElement.parentElement;\n        let viewport = DomHandler.getViewport();\n        let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);\n        let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);\n        let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);\n        let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);\n        let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);\n\n        sublist.style.zIndex = ++DomHandler.zindex;\n\n        if ((parseInt(containerOffset.top) + itemOuterHeight + sublistHeight) > (viewport.height - DomHandler.calculateScrollbarHeight())) {\n            sublist.style.removeProperty('top');\n            sublist.style.bottom = '0px';\n        }\n        else {\n            sublist.style.removeProperty('bottom');\n            sublist.style.top = '0px';\n        }\n\n        if ((parseInt(containerOffset.left) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {\n            sublist.style.left = -sublistWidth + 'px';\n        }\n        else {\n            sublist.style.left = itemOuterWidth + 'px';\n        }\n    }\n\n    isItemMatched(menuitem) {\n        return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');\n    }\n\n    findNextItem(menuitem, isRepeated?) {\n        let nextMenuitem = menuitem.nextElementSibling;\n\n        if (nextMenuitem) {\n            return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);\n        }\n        else {\n            let firstItem = menuitem.parentElement.children[0];\n\n            return this.isItemMatched(firstItem) ? firstItem : (!isRepeated ? this.findNextItem(firstItem, true) : null);\n        }\n    }\n\n    findPrevItem(menuitem, isRepeated?) {\n        let prevMenuitem = menuitem.previousElementSibling;\n\n        if (prevMenuitem) {\n            return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);\n        }\n        else {\n            let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];\n\n            return this.isItemMatched(lastItem) ? lastItem : (!isRepeated ? this.findPrevItem(lastItem, true) : null);\n        }\n    }\n\n    getActiveItem() {\n        let activeItemKey = this.contextMenuService.activeItemKey;\n\n        return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik=\"' + activeItemKey + '\"]');\n    }\n\n    clearActiveItem() {\n        if (this.contextMenuService.activeItemKey) {\n            this.removeActiveFromSubLists(this.containerViewChild.nativeElement);\n            this.contextMenuService.reset();\n        }\n    }\n\n    removeActiveFromSubLists(el) {\n        let sublists = DomHandler.find(el, '.p-submenu-list-active');\n\n        for (let sublist of sublists) {\n            DomHandler.removeClass(sublist, 'p-submenu-list-active');\n        }\n    }\n\n    removeActiveFromSublist(menuitem) {\n        if (menuitem) {\n            let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {\n                DomHandler.removeClass(menuitem, 'p-submenu-list-active');\n            }\n        }\n    }\n\n    bindGlobalListeners() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.zone.runOutsideAngular(() => {\n            if (!this.windowResizeListener) {\n            this.windowResizeListener = this.onWindowResize.bind(this);\n                window.addEventListener('resize', this.windowResizeListener);\n            }\n        });\n\n        if (!this.documentKeydownListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                let activeItem = this.getActiveItem();\n\n                switch (event.key) {\n                    case 'ArrowDown':\n                        if (activeItem) {\n                            this.removeActiveFromSublist(activeItem);\n                            activeItem = this.findNextItem(activeItem);\n                        }\n                        else {\n                            let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;\n                            activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);\n                        }\n\n                        if (activeItem) {\n                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowUp':\n                        if (activeItem) {\n                            this.removeActiveFromSublist(activeItem);\n                            activeItem = this.findPrevItem(activeItem);\n                        }\n                        else {\n                            let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');\n                            let lastItem = sublist.children[sublist.children.length - 1];\n                            activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);\n                        }\n\n                        if (activeItem) {\n                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowRight':\n                        if (activeItem) {\n                            let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');\n\n                            if (sublist) {\n                                DomHandler.addClass(sublist, 'p-submenu-list-active');\n\n                                activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;\n\n                                if (activeItem) {\n                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                                }\n                            }\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowLeft':\n                        if (activeItem) {\n                            let sublist = activeItem.parentElement;\n\n                            if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {\n                                DomHandler.removeClass(sublist, 'p-submenu-list-active');\n\n                                activeItem = sublist.parentElement.parentElement;\n\n                                if (activeItem) {\n                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                                }\n                            }\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'Escape':\n                        this.hide();\n                        event.preventDefault();\n\n                        break;\n\n                    case 'Enter':\n                        if (activeItem) {\n                            this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    default:\n                        break;\n                }\n            });\n        }\n    }\n\n    findModelItemFromKey(key) {\n        if (key == null || !this.model) {\n            return null;\n        }\n\n        let indexes = key.split('_');\n        return indexes.reduce((item, currentIndex) => {\n            return item ? item.items[currentIndex] : this.model[currentIndex];\n        }, null);\n    }\n\n    handleItemClick(event, item, menuitem) {\n        if (!item || item.disabled) {\n            return;\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (childSublist) {\n                if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n                    this.removeActiveFromSubLists(menuitem);\n                }\n                else {\n                    DomHandler.addClass(childSublist, 'p-submenu-list-active');\n                    this.positionSubmenu(childSublist);\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.hide();\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n\n        if (this.windowResizeListener) {\n            window.removeEventListener('resize', this.windowResizeListener);\n            this.windowResizeListener = null;\n        }\n\n        if (this.documentKeydownListener) {\n            this.documentKeydownListener();\n            this.documentKeydownListener = null;\n        }\n    }\n\n    onWindowResize(event) {\n        if (this.containerViewChild.nativeElement.offsetParent) {\n            this.hide();\n        }\n    }\n\n    isOutsideClicked(event: Event) {\n        return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));\n    }\n\n    ngOnDestroy() {\n        this.unbindGlobalListeners();\n\n        if (this.triggerEventListener) {\n            this.triggerEventListener();\n        }\n\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        if (this.appendTo) {\n            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);\n        }\n\n        this.ngDestroy$.next(true);\n        this.ngDestroy$.complete();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [ContextMenu,RouterModule,TooltipModule],\n    declarations: [ContextMenu,ContextMenuSub],\n    providers: [ContextMenuService]\n})\nexport class ContextMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,422 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+
+class DataView {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.pageLinks = 5;
+        this.paginatorPosition = 'bottom';
+        this.alwaysShowPaginator = true;
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.emptyMessage = '';
+        this.onLazyLoad = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.loadingIcon = 'pi pi-spinner';
+        this.first = 0;
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onChangeLayout = new EventEmitter();
+        this._layout = 'list';
+    }
+    get layout() {
+        return this._layout;
+    }
+    set layout(layout) {
+        this._layout = layout;
+        if (this.initialized) {
+            this.changeLayout(layout);
+        }
+    }
+    ngOnInit() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+        this.initialized = true;
+    }
+    ngOnChanges(simpleChanges) {
+        if (simpleChanges.value) {
+            this._value = simpleChanges.value.currentValue;
+            this.updateTotalRecords();
+            if (!this.lazy && this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        if (simpleChanges.sortField || simpleChanges.sortOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                this.sort();
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'listItem':
+                    this.listItemTemplate = item.template;
+                    break;
+                case 'gridItem':
+                    this.gridItemTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateItemTemplate();
+    }
+    updateItemTemplate() {
+        switch (this.layout) {
+            case 'list':
+                this.itemTemplate = this.listItemTemplate;
+                break;
+            case 'grid':
+                this.itemTemplate = this.gridItemTemplate;
+                break;
+        }
+    }
+    changeLayout(layout) {
+        this._layout = layout;
+        this.onChangeLayout.emit({
+            layout: this.layout
+        });
+        this.updateItemTemplate();
+        this.cd.markForCheck();
+    }
+    updateTotalRecords() {
+        this.totalRecords = this.lazy ? this.totalRecords : (this._value ? this._value.length : 0);
+    }
+    paginate(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+    }
+    sort() {
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else if (this.value) {
+            this.value.sort((data1, data2) => {
+                let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2);
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+            if (this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        this.onSort.emit({
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        });
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        };
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    filter(filter, filterMatchMode = "contains") {
+        this.filterValue = filter;
+        if (this.value && this.value.length) {
+            let searchFields = this.filterBy.split(',');
+            this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);
+            if (this.filteredValue.length === this.value.length) {
+                this.filteredValue = null;
+            }
+            if (this.paginator) {
+                this.first = 0;
+                this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+            }
+            this.cd.markForCheck();
+        }
+    }
+    hasFilter() {
+        return this.filterValue && this.filterValue.trim().length > 0;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+DataView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DataView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataView, selector: "p-dataView", inputs: { paginator: "paginator", rows: "rows", totalRecords: "totalRecords", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", paginatorPosition: "paginatorPosition", alwaysShowPaginator: "alwaysShowPaginator", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", lazy: "lazy", emptyMessage: "emptyMessage", style: "style", styleClass: "styleClass", trackBy: "trackBy", filterBy: "filterBy", filterLocale: "filterLocale", loading: "loading", loadingIcon: "loadingIcon", first: "first", sortField: "sortField", sortOrder: "sortOrder", value: "value", layout: "layout" }, outputs: { onLazyLoad: "onLazyLoad", onPage: "onPage", onSort: "onSort", onChangeLayout: "onChangeLayout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "slice": i3.SlicePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dataView', template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], onLazyLoad: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onChangeLayout: [{
+                type: Output
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], layout: [{
+                type: Input
+            }] } });
+class DataViewLayoutOptions {
+    constructor(dv) {
+        this.dv = dv;
+    }
+    changeLayout(event, layout) {
+        this.dv.changeLayout(layout);
+        event.preventDefault();
+    }
+}
+DataViewLayoutOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, deps: [{ token: DataView }], target: i0.ɵɵFactoryTarget.Component });
+DataViewLayoutOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataViewLayoutOptions, selector: "p-dataViewLayoutOptions", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dataViewLayoutOptions',
+                    template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: DataView }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class DataViewModule {
+}
+DataViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DataViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, declarations: [DataView, DataViewLayoutOptions], imports: [CommonModule, SharedModule, PaginatorModule], exports: [DataView, SharedModule, DataViewLayoutOptions] });
+DataViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, imports: [[CommonModule, SharedModule, PaginatorModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, PaginatorModule],
+                    exports: [DataView, SharedModule, DataViewLayoutOptions],
+                    declarations: [DataView, DataViewLayoutOptions]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DataView, DataViewLayoutOptions, DataViewModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dataview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dataview.mjs","sources":["../../src/app/components/dataview/dataview.ts","../../src/app/components/dataview/primeng-dataview.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnInit,AfterContentInit,Input,Output,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,OnChanges,SimpleChanges,ChangeDetectionStrategy,ChangeDetectorRef, ViewEncapsulation, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ObjectUtils} from 'primeng/utils';\nimport {Header,Footer,PrimeTemplate,SharedModule,FilterService, TranslationKeys, PrimeNGConfig} from 'primeng/api';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {BlockableUI} from 'primeng/api';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    selector: 'p-dataView',\n    template: `\n        <div [ngClass]=\"{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-dataview-loading\" *ngIf=\"loading\">\n                <div class=\"p-dataview-loading-overlay p-component-overlay\">\n                    <i [class]=\"'p-dataview-loading-icon pi-spin ' + loadingIcon\"></i>\n                </div>\n            </div>\n            <div class=\"p-dataview-header\" *ngIf=\"header || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"paginate($event)\" styleClass=\"p-paginator-top\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\" [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div class=\"p-dataview-content\">\n                <div class=\"p-grid p-nogutter grid grid-nogutter\">\n                    <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)\" [ngForTrackBy]=\"trackBy\">\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}\"></ng-container>\n                    </ng-template>\n                    <div *ngIf=\"isEmpty()\" class=\"p-col col\">\n                            <div class=\"p-dataview-emptymessage\">\n                            <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                                    {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"paginate($event)\" styleClass=\"p-paginator-bottom\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\" [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div class=\"p-dataview-footer\" *ngIf=\"footer || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dataview.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DataView implements OnInit,AfterContentInit,OnDestroy,BlockableUI,OnChanges {\n\n    @Input() paginator: boolean;\n\n    @Input() rows: number;\n\n    @Input() totalRecords: number;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() paginatorDropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() lazy: boolean;\n\n    @Input() emptyMessage: string = '';\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Input() filterBy: string;\n\n    @Input() filterLocale: string;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() first: number = 0;\n\n    @Input() sortField: string;\n\n    @Input() sortOrder: number;\n\n    @Input() value: any[];\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChangeLayout: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Header) header;\n\n    @ContentChild(Footer) footer;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    _value: any[];\n\n    listItemTemplate: TemplateRef<any>;\n\n    gridItemTemplate: TemplateRef<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    filteredValue: any[];\n\n    filterValue: string;\n\n    initialized: boolean;\n\n    _layout: string = 'list';\n\n    translationSubscription: Subscription;\n\n    @Input() get layout(): string {\n        return this._layout;\n    }\n\n    set layout(layout: string) {\n        this._layout = layout;\n\n        if (this.initialized) {\n            this.changeLayout(layout);\n        }\n    }\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig) {}\n\n    ngOnInit() {\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n        this.initialized = true;\n    }\n\n    ngOnChanges(simpleChanges: SimpleChanges) {\n        if (simpleChanges.value) {\n            this._value = simpleChanges.value.currentValue;\n            this.updateTotalRecords();\n\n            if (!this.lazy && this.hasFilter()) {\n                this.filter(this.filterValue);\n            }\n        }\n\n        if (simpleChanges.sortField || simpleChanges.sortOrder) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if (!this.lazy || this.initialized) {\n                this.sort();\n            }\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'listItem':\n                    this.listItemTemplate = item.template;\n                break;\n\n                case 'gridItem':\n                    this.gridItemTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n            }\n        });\n\n        this.updateItemTemplate();\n    }\n\n    updateItemTemplate() {\n        switch(this.layout) {\n            case 'list':\n                this.itemTemplate = this.listItemTemplate;\n            break;\n\n            case 'grid':\n                this.itemTemplate = this.gridItemTemplate;\n            break;\n        }\n    }\n\n    changeLayout(layout: string) {\n        this._layout = layout;\n        this.onChangeLayout.emit({\n            layout: this.layout\n        });\n        this.updateItemTemplate();\n\n        this.cd.markForCheck();\n    }\n\n    updateTotalRecords() {\n        this.totalRecords = this.lazy ? this.totalRecords : (this._value ? this._value.length : 0);\n    }\n\n    paginate(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n    }\n\n    sort() {\n        this.first = 0;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else if (this.value) {\n            this.value.sort((data1, data2) => {\n                let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);\n                let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2);\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return (this.sortOrder * result);\n            });\n\n            if (this.hasFilter()) {\n                this.filter(this.filterValue);\n            }\n        }\n\n        this.onSort.emit({\n            sortField: this.sortField,\n            sortOrder: this.sortOrder\n        });\n    }\n\n    isEmpty() {\n        let data = this.filteredValue||this.value;\n        return data == null || data.length == 0;\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder\n        };\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    filter(filter: string, filterMatchMode:string =\"contains\") {\n        this.filterValue = filter;\n\n        if (this.value && this.value.length) {\n            let searchFields = this.filterBy.split(',');\n            this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);\n\n            if (this.filteredValue.length === this.value.length ) {\n                this.filteredValue = null;\n            }\n\n            if (this.paginator) {\n                this.first = 0;\n                this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n            }\n\n            this.cd.markForCheck();\n        }\n    }\n\n    hasFilter() {\n        return this.filterValue && this.filterValue.trim().length > 0;\n    }\n\n    ngOnDestroy() {\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-dataViewLayoutOptions',\n    template: `\n        <div [ngClass]=\"'p-dataview-layout-options p-selectbutton p-buttonset'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <button type=\"button\" class=\"p-button p-button-icon-only\" [ngClass]=\"{'p-highlight': dv.layout === 'list'}\" (click)=\"changeLayout($event, 'list')\" (keydown.enter)=\"changeLayout($event, 'list')\">\n                <i class=\"pi pi-bars\"></i>\n            </button><button type=\"button\" class=\"p-button p-button-icon-only\" [ngClass]=\"{'p-highlight': dv.layout === 'grid'}\" (click)=\"changeLayout($event, 'grid')\" (keydown.enter)=\"changeLayout($event, 'grid')\">\n                <i class=\"pi pi-th-large\"></i>\n            </button>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DataViewLayoutOptions  {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    constructor(public dv: DataView) {}\n\n    changeLayout(event: Event, layout: string) {\n        this.dv.changeLayout(layout);\n        event.preventDefault();\n    }\n}\n@NgModule({\n    imports: [CommonModule,SharedModule,PaginatorModule],\n    exports: [DataView,SharedModule,DataViewLayoutOptions],\n    declarations: [DataView,DataViewLayoutOptions]\n})\nexport class DataViewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,87 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, TemplateRef, Directive, Output, ContentChild, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class DeferredLoader {
+    constructor(el, renderer, viewContainer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.onLoad = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (this.shouldLoad()) {
+            this.load();
+        }
+        if (!this.isLoaded()) {
+            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {
+                if (this.shouldLoad()) {
+                    this.load();
+                    this.documentScrollListener();
+                    this.documentScrollListener = null;
+                }
+            });
+        }
+    }
+    shouldLoad() {
+        if (this.isLoaded()) {
+            return false;
+        }
+        else {
+            let rect = this.el.nativeElement.getBoundingClientRect();
+            let docElement = document.documentElement;
+            let winHeight = docElement.clientHeight;
+            return (winHeight >= rect.top);
+        }
+    }
+    load() {
+        this.view = this.viewContainer.createEmbeddedView(this.template);
+        this.onLoad.emit();
+        this.cd.detectChanges();
+    }
+    isLoaded() {
+        return this.view != null;
+    }
+    ngOnDestroy() {
+        this.view = null;
+        if (this.documentScrollListener) {
+            this.documentScrollListener();
+        }
+    }
+}
+DeferredLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+DeferredLoader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DeferredLoader, selector: "[pDefer]", outputs: { onLoad: "onLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDefer]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onLoad: [{
+                type: Output
+            }], template: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+class DeferModule {
+}
+DeferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DeferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, declarations: [DeferredLoader], imports: [CommonModule], exports: [DeferredLoader] });
+DeferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [DeferredLoader],
+                    declarations: [DeferredLoader]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DeferModule, DeferredLoader };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-defer.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-defer.mjs","sources":["../../src/app/components/defer/defer.ts","../../src/app/components/defer/primeng-defer.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,AfterViewInit,OnDestroy,TemplateRef,EmbeddedViewRef,\n        ViewContainerRef,Renderer2,EventEmitter,Output,ContentChild, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Directive({\n    selector: '[pDefer]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DeferredLoader implements AfterViewInit,OnDestroy {\n\n    @Output() onLoad: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n    documentScrollListener: Function;\n\n    view: EmbeddedViewRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public viewContainer: ViewContainerRef, private cd: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        if (this.shouldLoad()) {\n            this.load();\n        }\n\n        if (!this.isLoaded()) {\n            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {\n                if (this.shouldLoad()) {\n                    this.load();\n                    this.documentScrollListener();\n                    this.documentScrollListener = null;\n                }\n            });\n        }\n    }\n\n    shouldLoad(): boolean {\n        if (this.isLoaded()) {\n            return false;\n        }\n        else {\n            let rect = this.el.nativeElement.getBoundingClientRect();\n            let docElement = document.documentElement;\n            let winHeight = docElement.clientHeight;\n\n            return (winHeight >= rect.top);\n        }\n    }\n\n    load(): void {\n        this.view = this.viewContainer.createEmbeddedView(this.template);\n        this.onLoad.emit();\n        this.cd.detectChanges();\n    }\n\n    isLoaded() {\n        return this.view != null;\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n\n        if (this.documentScrollListener) {\n            this.documentScrollListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [DeferredLoader],\n    declarations: [DeferredLoader]\n})\nexport class DeferModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAUa,cAAc;IAUvB,YAAmB,EAAc,EAAS,QAAmB,EAAS,aAA+B,EAAU,EAAqB;QAAjH,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,kBAAa,GAAb,aAAa,CAAkB;QAAU,OAAE,GAAF,EAAE,CAAmB;QAR1H,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;KAQ+E;IAExI,eAAe;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBACnE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACnB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACtC;aACJ,CAAC,CAAC;SACN;KACJ;IAED,UAAU;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC;SAChB;aACI;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACzD,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;YAExC,QAAQ,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;SAClC;KACJ;IAED,IAAI;QACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KAC5B;IAED,WAAW;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;KACJ;;2GAzDQ,cAAc;+FAAd,cAAc,4JAIT,WAAW;2FAJhB,cAAc;kBAN1B,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;wLAGa,MAAM;sBAAf,MAAM;gBAEoB,QAAQ;sBAAlC,YAAY;uBAAC,WAAW;;MA6DhB,WAAW;;wGAAX,WAAW;yGAAX,WAAW,iBAjEX,cAAc,aA6Db,YAAY,aA7Db,cAAc;yGAiEd,WAAW,YAJX,CAAC,YAAY,CAAC;2FAId,WAAW;kBALvB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;iBACjC;;;AC1ED;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,758 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/focustrap';
+import { FocusTrapModule } from 'primeng/focustrap';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class Dialog {
+    constructor(el, renderer, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.draggable = true;
+        this.resizable = true;
+        this.closeOnEscape = true;
+        this.closable = true;
+        this.showHeader = true;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.minX = 0;
+        this.minY = 0;
+        this.focusOnShow = true;
+        this.keepInViewport = true;
+        this.focusTrap = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.closeIcon = 'pi pi-times';
+        this.closeTabindex = "-1";
+        this.minimizeIcon = 'pi pi-window-minimize';
+        this.maximizeIcon = 'pi pi-window-maximize';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onResizeInit = new EventEmitter();
+        this.onResizeEnd = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onMaximize = new EventEmitter();
+        this.id = UniqueComponentId();
+        this._style = {};
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+    }
+    get positionLeft() {
+        return 0;
+    }
+    ;
+    set positionLeft(_positionLeft) {
+        console.log("positionLeft property is deprecated.");
+    }
+    get positionTop() {
+        return 0;
+    }
+    ;
+    set positionTop(_positionTop) {
+        console.log("positionTop property is deprecated.");
+    }
+    get responsive() {
+        return false;
+    }
+    ;
+    set responsive(_responsive) {
+        console.log("Responsive property is deprecated.");
+    }
+    get breakpoint() {
+        return 649;
+    }
+    ;
+    set breakpoint(_breakpoint) {
+        console.log("Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    get style() {
+        return this._style;
+    }
+    set style(value) {
+        if (value) {
+            this._style = Object.assign({}, value);
+            this.originalStyle = value;
+        }
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'topleft':
+            case 'bottomleft':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'topright':
+            case 'bottomright':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    close(event) {
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (this.closable && this.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+        if (this.modal) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.modal) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    maximize() {
+        this.maximized = !this.maximized;
+        if (!this.modal && !this.blockScroll) {
+            if (this.maximized)
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            else
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.onMaximize.emit({ 'maximized': this.maximized });
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    initDrag(event) {
+        if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass(event.target.parentElement, 'p-dialog-header-icon')) {
+            return;
+        }
+        if (this.draggable) {
+            this.dragging = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            this.container.style.margin = '0';
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+        }
+    }
+    onKeydown(event) {
+        if (this.focusTrap) {
+            if (event.which === 9) {
+                event.preventDefault();
+                let focusableElements = DomHandler.getFocusableElements(this.container);
+                if (focusableElements && focusableElements.length > 0) {
+                    if (!focusableElements[0].ownerDocument.activeElement) {
+                        focusableElements[0].focus();
+                    }
+                    else {
+                        let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                        if (event.shiftKey) {
+                            if (focusedIndex == -1 || focusedIndex === 0)
+                                focusableElements[focusableElements.length - 1].focus();
+                            else
+                                focusableElements[focusedIndex - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                focusableElements[0].focus();
+                            else
+                                focusableElements[focusedIndex + 1].focus();
+                        }
+                    }
+                }
+            }
+        }
+    }
+    onDrag(event) {
+        if (this.dragging) {
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let offset = DomHandler.getOffset(this.container);
+            let leftPos = offset.left + deltaX;
+            let topPos = offset.top + deltaY;
+            let viewport = DomHandler.getViewport();
+            this.container.style.position = 'fixed';
+            if (this.keepInViewport) {
+                if (leftPos >= this.minX && (leftPos + containerWidth) < viewport.width) {
+                    this._style.left = leftPos + 'px';
+                    this.lastPageX = event.pageX;
+                    this.container.style.left = leftPos + 'px';
+                }
+                if (topPos >= this.minY && (topPos + containerHeight) < viewport.height) {
+                    this._style.top = topPos + 'px';
+                    this.lastPageY = event.pageY;
+                    this.container.style.top = topPos + 'px';
+                }
+            }
+            else {
+                this.lastPageX = event.pageX;
+                this.container.style.left = leftPos + 'px';
+                this.lastPageY = event.pageY;
+                this.container.style.top = topPos + 'px';
+            }
+        }
+    }
+    endDrag(event) {
+        if (this.dragging) {
+            this.dragging = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.cd.detectChanges();
+            this.onDragEnd.emit(event);
+        }
+    }
+    resetPosition() {
+        this.container.style.position = '';
+        this.container.style.left = '';
+        this.container.style.top = '';
+        this.container.style.margin = '';
+    }
+    //backward compatibility
+    center() {
+        this.resetPosition();
+    }
+    initResize(event) {
+        if (this.resizable) {
+            this.resizing = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+            this.onResizeInit.emit(event);
+        }
+    }
+    onResize(event) {
+        if (this.resizing) {
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);
+            let newWidth = containerWidth + deltaX;
+            let newHeight = containerHeight + deltaY;
+            let minWidth = this.container.style.minWidth;
+            let minHeight = this.container.style.minHeight;
+            let offset = DomHandler.getOffset(this.container);
+            let viewport = DomHandler.getViewport();
+            let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);
+            if (hasBeenDragged) {
+                newWidth += deltaX;
+                newHeight += deltaY;
+            }
+            if ((!minWidth || newWidth > parseInt(minWidth)) && (offset.left + newWidth) < viewport.width) {
+                this._style.width = newWidth + 'px';
+                this.container.style.width = this._style.width;
+            }
+            if ((!minHeight || newHeight > parseInt(minHeight)) && (offset.top + newHeight) < viewport.height) {
+                this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';
+                if (this._style.height) {
+                    this._style.height = newHeight + 'px';
+                    this.container.style.height = this._style.height;
+                }
+            }
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+        }
+    }
+    resizeEnd(event) {
+        if (this.resizing) {
+            this.resizing = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.onResizeEnd.emit(event);
+        }
+    }
+    bindGlobalListeners() {
+        if (this.draggable) {
+            this.bindDocumentDragListener();
+            this.bindDocumentDragEndListener();
+        }
+        if (this.resizable) {
+            this.bindDocumentResizeListeners();
+        }
+        if (this.closeOnEscape && this.closable) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentDragListener();
+        this.unbindDocumentDragEndListener();
+        this.unbindDocumentResizeListeners();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentDragListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragListener = this.onDrag.bind(this);
+            window.document.addEventListener('mousemove', this.documentDragListener);
+        });
+    }
+    unbindDocumentDragListener() {
+        if (this.documentDragListener) {
+            window.document.removeEventListener('mousemove', this.documentDragListener);
+            this.documentDragListener = null;
+        }
+    }
+    bindDocumentDragEndListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragEndListener = this.endDrag.bind(this);
+            window.document.addEventListener('mouseup', this.documentDragEndListener);
+        });
+    }
+    unbindDocumentDragEndListener() {
+        if (this.documentDragEndListener) {
+            window.document.removeEventListener('mouseup', this.documentDragEndListener);
+            this.documentDragEndListener = null;
+        }
+    }
+    bindDocumentResizeListeners() {
+        this.zone.runOutsideAngular(() => {
+            this.documentResizeListener = this.onResize.bind(this);
+            this.documentResizeEndListener = this.resizeEnd.bind(this);
+            window.document.addEventListener('mousemove', this.documentResizeListener);
+            window.document.addEventListener('mouseup', this.documentResizeEndListener);
+        });
+    }
+    unbindDocumentResizeListeners() {
+        if (this.documentResizeListener && this.documentResizeEndListener) {
+            window.document.removeEventListener('mousemove', this.documentResizeListener);
+            window.document.removeEventListener('mouseup', this.documentResizeEndListener);
+            this.documentResizeListener = null;
+            this.documentResizeEndListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                this.close(event);
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.container.setAttribute(this.id, '');
+                if (this.modal) {
+                    this.enableModality();
+                }
+                if (!this.modal && this.blockScroll) {
+                    DomHandler.addClass(document.body, 'p-overflow-hidden');
+                }
+                if (this.focusOnShow) {
+                    this.focus();
+                }
+                break;
+            case 'void':
+                if (this.modal) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        this.dragging = false;
+        this.maskVisible = false;
+        if (this.maximized) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            this.maximized = false;
+        }
+        if (this.modal) {
+            this.disableModality();
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.wrapper = null;
+        this._style = this.originalStyle ? Object.assign({}, this.originalStyle) : {};
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        this.destroyStyle();
+    }
+}
+Dialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Dialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dialog, selector: "p-dialog", inputs: { header: "header", draggable: "draggable", resizable: "resizable", positionLeft: "positionLeft", positionTop: "positionTop", contentStyle: "contentStyle", contentStyleClass: "contentStyleClass", modal: "modal", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", rtl: "rtl", closable: "closable", responsive: "responsive", appendTo: "appendTo", breakpoints: "breakpoints", styleClass: "styleClass", maskStyleClass: "maskStyleClass", showHeader: "showHeader", breakpoint: "breakpoint", blockScroll: "blockScroll", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", minX: "minX", minY: "minY", focusOnShow: "focusOnShow", maximizable: "maximizable", keepInViewport: "keepInViewport", focusTrap: "focusTrap", transitionOptions: "transitionOptions", closeIcon: "closeIcon", closeAriaLabel: "closeAriaLabel", closeTabindex: "closeTabindex", minimizeIcon: "minimizeIcon", maximizeIcon: "maximizeIcon", visible: "visible", style: "style", position: "position" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange", onResizeInit: "onResizeInit", onResizeEnd: "onResizeEnd", onDragEnd: "onDragEnd", onMaximize: "onMaximize" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerViewChild", first: true, predicate: ["titlebar"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "footerViewChild", first: true, predicate: ["footer"], descendants: true }], ngImport: i0, template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.FocusTrap, selector: "[pFocusTrap]", inputs: ["pFocusTrapDisabled"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dialog', template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], draggable: [{
+                type: Input
+            }], resizable: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], contentStyle: [{
+                type: Input
+            }], contentStyleClass: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], minX: [{
+                type: Input
+            }], minY: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], maximizable: [{
+                type: Input
+            }], keepInViewport: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], closeAriaLabel: [{
+                type: Input
+            }], closeTabindex: [{
+                type: Input
+            }], minimizeIcon: [{
+                type: Input
+            }], maximizeIcon: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], headerViewChild: [{
+                type: ViewChild,
+                args: ['titlebar']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], footerViewChild: [{
+                type: ViewChild,
+                args: ['footer']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onResizeInit: [{
+                type: Output
+            }], onResizeEnd: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onMaximize: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }] } });
+class DialogModule {
+}
+DialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, declarations: [Dialog], imports: [CommonModule, FocusTrapModule, RippleModule], exports: [Dialog, SharedModule] });
+DialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, imports: [[CommonModule, FocusTrapModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FocusTrapModule, RippleModule],
+                    exports: [Dialog, SharedModule],
+                    declarations: [Dialog]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Dialog, DialogModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dialog.mjs","sources":["../../src/app/components/dialog/dialog.ts","../../src/app/components/dialog/primeng-dialog.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,Renderer2,\n    ContentChildren,QueryList,ViewChild,NgZone, ChangeDetectorRef,ViewRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, TemplateRef, ContentChild, OnInit} from '@angular/core';\nimport {trigger,style,transition,animate, AnimationEvent, animation, useAnimation} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {Header,Footer,SharedModule, PrimeTemplate, PrimeNGConfig} from 'primeng/api';\nimport {FocusTrapModule} from 'primeng/focustrap';\nimport {RippleModule} from 'primeng/ripple';\nimport {UniqueComponentId, ZIndexUtils} from 'primeng/utils';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}')\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-dialog',\n    template: `\n        <div *ngIf=\"maskVisible\" [class]=\"maskStyleClass\"\n            [ngClass]=\"{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,\n                'p-dialog-left': position === 'left',\n                'p-dialog-right': position === 'right',\n                'p-dialog-top': position === 'top',\n                'p-dialog-top-left': position === 'topleft' || position === 'top-left',\n                'p-dialog-top-right': position === 'topright' || position === 'top-right',\n                'p-dialog-bottom': position === 'bottom',\n                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',\n                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}\">\n            <div #container [ngClass]=\"{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"visible\" pFocusTrap [pFocusTrapDisabled]=\"focusTrap === false\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" role=\"dialog\" [attr.aria-labelledby]=\"id + '-label'\">\n                <div #titlebar class=\"p-dialog-header\" (mousedown)=\"initDrag($event)\" *ngIf=\"showHeader\">\n                    <span [attr.id]=\"id + '-label'\" class=\"p-dialog-title\" *ngIf=\"!headerFacet && !headerTemplate\">{{header}}</span>\n                    <span [attr.id]=\"id + '-label'\" class=\"p-dialog-title\" *ngIf=\"headerFacet\">\n                        <ng-content select=\"p-header\"></ng-content>\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <div class=\"p-dialog-header-icons\">\n                        <button *ngIf=\"maximizable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-maximize p-link':true}\" (click)=\"maximize()\" (keydown.enter)=\"maximize()\" tabindex=\"-1\" pRipple>\n                            <span class=\"p-dialog-header-maximize-icon\" [ngClass]=\"maximized ? minimizeIcon : maximizeIcon\"></span>\n                        </button>\n                        <button *ngIf=\"closable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-close p-link':true}\" [attr.aria-label]=\"closeAriaLabel\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\" [attr.tabindex]=\"closeTabindex\" pRipple>\n                            <span class=\"p-dialog-header-close-icon\" [ngClass]=\"closeIcon\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div #content [ngClass]=\"'p-dialog-content'\" [ngStyle]=\"contentStyle\" [class]=\"contentStyleClass\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n                <div #footer class=\"p-dialog-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n                <div *ngIf=\"resizable\" class=\"p-resizable-handle\" style=\"z-index: 90;\" (mousedown)=\"initResize($event)\"></div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Dialog implements AfterContentInit,OnInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() draggable: boolean = true;\n\n    @Input() resizable: boolean = true;\n\n    @Input() get positionLeft(): number {\n        return 0;\n    };\n\n    set positionLeft(_positionLeft: number) {\n        console.log(\"positionLeft property is deprecated.\");\n    }\n\n    @Input() get positionTop(): number {\n        return 0;\n    };\n\n    set positionTop(_positionTop: number) {\n        console.log(\"positionTop property is deprecated.\");\n    }\n\n    @Input() contentStyle: any;\n\n    @Input() contentStyleClass: string;\n\n    @Input() modal: boolean;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() dismissableMask: boolean;\n\n    @Input() rtl: boolean;\n\n    @Input() closable: boolean = true;\n\n    @Input() get responsive(): boolean {\n        return false;\n    };\n\n    set responsive(_responsive: boolean) {\n        console.log(\"Responsive property is deprecated.\");\n    }\n\n    @Input() appendTo: any;\n\n    @Input() breakpoints: any;\n\n    @Input() styleClass: string;\n\n    @Input() maskStyleClass: string;\n\n    @Input() showHeader: boolean = true;\n\n    @Input() get breakpoint(): number {\n        return 649;\n    };\n\n    set breakpoint(_breakpoint: number) {\n        console.log(\"Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.\");\n    }\n\n    @Input() blockScroll: boolean = false;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() minX: number = 0;\n\n    @Input() minY: number = 0;\n\n    @Input() focusOnShow: boolean = true;\n\n    @Input() maximizable: boolean;\n\n    @Input() keepInViewport: boolean = true;\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() closeIcon: string = 'pi pi-times';\n\n    @Input() closeAriaLabel: string;\n\n    @Input() closeTabindex: string = \"-1\";\n\n    @Input() minimizeIcon: string = 'pi pi-window-minimize';\n\n    @Input() maximizeIcon: string = 'pi pi-window-maximize';\n\n    @ContentChild(Header) headerFacet: QueryList<Header>;\n\n    @ContentChild(Footer) footerFacet: QueryList<Footer>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('titlebar') headerViewChild: ElementRef;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ViewChild('footer') footerViewChild: ElementRef;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange:EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMaximize: EventEmitter<any> = new EventEmitter();\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    _visible: boolean;\n\n    maskVisible: boolean;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    dragging: boolean;\n\n    documentDragListener: any;\n\n    documentDragEndListener: any;\n\n    resizing: boolean;\n\n    documentResizeListener: any;\n\n    documentResizeEndListener: any;\n\n    documentEscapeListener: Function;\n\n    maskClickListener: Function;\n\n    lastPageX: number;\n\n    lastPageY: number;\n\n    preventVisibleChangePropagation: boolean;\n\n    maximized: boolean;\n\n    preMaximizeContentHeight: number;\n\n    preMaximizeContainerWidth: number;\n\n    preMaximizeContainerHeight: number;\n\n    preMaximizePageX: number;\n\n    preMaximizePageY: number;\n\n    id: string = UniqueComponentId();\n\n    _style: any = {};\n\n    _position: string = \"center\";\n\n    originalStyle: any;\n\n    transformOptions: any = \"scale(0.7)\";\n\n    styleElement: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public zone: NgZone, private cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n\n    @Input() get style(): any {\n        return this._style;\n    }\n    set style(value:any) {\n        if (value) {\n            this._style = {...value};\n            this.originalStyle = value;\n        }\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'topleft':\n            case 'bottomleft':\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n            break;\n            case 'topright':\n            case 'bottomright':\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n            break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n            break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n            break;\n            default:\n                this.transformOptions = \"scale(0.7)\";\n            break;\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n    close(event: Event) {\n        this.visibleChange.emit(false);\n        event.preventDefault();\n    }\n\n    enableModality() {\n        if (this.closable && this.dismissableMask) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.close(event);\n                }\n            });\n        }\n\n        if (this.modal) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.wrapper) {\n            if (this.dismissableMask) {\n                this.unbindMaskClickListener();\n            }\n\n            if (this.modal) {\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            }\n\n            if (!(this.cd as ViewRef).destroyed) {\n                this.cd.detectChanges();\n            }\n        }\n    }\n\n    maximize() {\n        this.maximized = !this.maximized;\n\n        if (!this.modal && !this.blockScroll) {\n            if (this.maximized)\n                DomHandler.addClass(document.body, 'p-overflow-hidden');\n            else\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.onMaximize.emit({'maximized': this.maximized});\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-dialog[${this.id}] {\n                            width: ${this.breakpoints[breakpoint]} !important;\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    initDrag(event: MouseEvent) {\n        if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass((<HTMLElement> event.target).parentElement, 'p-dialog-header-icon')) {\n            return;\n        }\n\n        if (this.draggable) {\n            this.dragging = true;\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n\n            this.container.style.margin = '0';\n            DomHandler.addClass(document.body, 'p-unselectable-text');\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (this.focusTrap) {\n            if (event.which === 9) {\n                event.preventDefault();\n\n                let focusableElements = DomHandler.getFocusableElements(this.container);\n\n                if (focusableElements && focusableElements.length > 0) {\n                    if (!focusableElements[0].ownerDocument.activeElement) {\n                        focusableElements[0].focus();\n                    }\n                    else {\n                        let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                        if (event.shiftKey) {\n                            if (focusedIndex == -1 || focusedIndex === 0)\n                                focusableElements[focusableElements.length - 1].focus();\n                            else\n                                focusableElements[focusedIndex - 1].focus();\n                        }\n                        else {\n                            if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                                focusableElements[0].focus();\n                            else\n                                focusableElements[focusedIndex + 1].focus();\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    onDrag(event: MouseEvent) {\n        if (this.dragging) {\n            let containerWidth = DomHandler.getOuterWidth(this.container);\n            let containerHeight = DomHandler.getOuterHeight(this.container);\n            let deltaX = event.pageX - this.lastPageX;\n            let deltaY = event.pageY - this.lastPageY;\n            let offset = DomHandler.getOffset(this.container);\n            let leftPos = offset.left + deltaX;\n            let topPos = offset.top + deltaY;\n            let viewport = DomHandler.getViewport();\n\n            this.container.style.position = 'fixed';\n\n            if (this.keepInViewport) {\n                if (leftPos >= this.minX && (leftPos + containerWidth) < viewport.width) {\n                    this._style.left = leftPos + 'px';\n                    this.lastPageX = event.pageX;\n                    this.container.style.left = leftPos + 'px';\n                }\n\n                if (topPos >= this.minY && (topPos + containerHeight) < viewport.height) {\n                    this._style.top = topPos + 'px';\n                    this.lastPageY = event.pageY;\n                    this.container.style.top = topPos + 'px';\n                }\n            }\n            else {\n                this.lastPageX = event.pageX;\n                this.container.style.left = leftPos + 'px';\n                this.lastPageY = event.pageY;\n                this.container.style.top = topPos + 'px';\n            }\n        }\n    }\n\n    endDrag(event: MouseEvent) {\n        if (this.dragging) {\n            this.dragging = false;\n            DomHandler.removeClass(document.body, 'p-unselectable-text');\n            this.cd.detectChanges();\n            this.onDragEnd.emit(event);\n        }\n    }\n\n    resetPosition() {\n        this.container.style.position = '';\n        this.container.style.left = '';\n        this.container.style.top = '';\n        this.container.style.margin = '';\n    }\n\n    //backward compatibility\n    center() {\n        this.resetPosition();\n    }\n\n    initResize(event: MouseEvent) {\n        if (this.resizable) {\n            this.resizing = true;\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n            DomHandler.addClass(document.body, 'p-unselectable-text');\n            this.onResizeInit.emit(event);\n        }\n    }\n\n    onResize(event: MouseEvent) {\n        if (this.resizing) {\n            let deltaX = event.pageX - this.lastPageX;\n            let deltaY = event.pageY - this.lastPageY;\n            let containerWidth = DomHandler.getOuterWidth(this.container);\n            let containerHeight = DomHandler.getOuterHeight(this.container);\n            let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);\n            let newWidth = containerWidth + deltaX;\n            let newHeight = containerHeight + deltaY;\n            let minWidth = this.container.style.minWidth;\n            let minHeight = this.container.style.minHeight;\n            let offset = DomHandler.getOffset(this.container);\n            let viewport = DomHandler.getViewport();\n            let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);\n\n            if (hasBeenDragged) {\n                newWidth += deltaX;\n                newHeight += deltaY;\n            }\n\n            if ((!minWidth || newWidth > parseInt(minWidth)) && (offset.left + newWidth) < viewport.width) {\n                this._style.width = newWidth + 'px';\n                this.container.style.width = this._style.width;\n            }\n\n            if ((!minHeight || newHeight > parseInt(minHeight)) && (offset.top + newHeight) < viewport.height) {\n                this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';\n\n                if (this._style.height) {\n                    this._style.height = newHeight + 'px';\n                    this.container.style.height = this._style.height;\n                }\n            }\n\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n        }\n    }\n\n    resizeEnd(event) {\n        if (this.resizing) {\n            this.resizing = false;\n            DomHandler.removeClass(document.body, 'p-unselectable-text');\n            this.onResizeEnd.emit(event);\n        }\n    }\n\n    bindGlobalListeners() {\n        if (this.draggable) {\n            this.bindDocumentDragListener();\n            this.bindDocumentDragEndListener();\n        }\n\n        if (this.resizable) {\n            this.bindDocumentResizeListeners();\n        }\n\n        if (this.closeOnEscape && this.closable) {\n            this.bindDocumentEscapeListener();\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindDocumentDragListener();\n        this.unbindDocumentDragEndListener();\n        this.unbindDocumentResizeListeners();\n        this.unbindDocumentEscapeListener();\n    }\n\n    bindDocumentDragListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentDragListener = this.onDrag.bind(this);\n            window.document.addEventListener('mousemove', this.documentDragListener);\n        });\n    }\n\n    unbindDocumentDragListener() {\n        if (this.documentDragListener) {\n            window.document.removeEventListener('mousemove', this.documentDragListener);\n            this.documentDragListener = null;\n        }\n    }\n\n    bindDocumentDragEndListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentDragEndListener = this.endDrag.bind(this);\n            window.document.addEventListener('mouseup', this.documentDragEndListener);\n        });\n    }\n\n    unbindDocumentDragEndListener() {\n        if (this.documentDragEndListener) {\n            window.document.removeEventListener('mouseup', this.documentDragEndListener);\n            this.documentDragEndListener = null;\n        }\n    }\n\n    bindDocumentResizeListeners() {\n        this.zone.runOutsideAngular(() => {\n            this.documentResizeListener = this.onResize.bind(this);\n            this.documentResizeEndListener = this.resizeEnd.bind(this);\n            window.document.addEventListener('mousemove', this.documentResizeListener);\n            window.document.addEventListener('mouseup', this.documentResizeEndListener);\n        });\n    }\n\n    unbindDocumentResizeListeners() {\n        if (this.documentResizeListener && this.documentResizeEndListener) {\n            window.document.removeEventListener('mousemove', this.documentResizeListener);\n            window.document.removeEventListener('mouseup', this.documentResizeEndListener);\n            this.documentResizeListener = null;\n            this.documentResizeEndListener = null;\n        }\n    }\n\n    bindDocumentEscapeListener() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                this.close(event);\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.wrapper);\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.appendContainer();\n                this.moveOnTop();\n                this.bindGlobalListeners();\n                this.container.setAttribute(this.id, '');\n\n                if (this.modal) {\n                    this.enableModality();\n                }\n\n                if (!this.modal && this.blockScroll) {\n                    DomHandler.addClass(document.body, 'p-overflow-hidden');\n                }\n\n                if (this.focusOnShow) {\n                    this.focus();\n                }\n            break;\n\n            case 'void':\n                if (this.modal) {\n                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n                }\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                this.onContainerDestroy();\n                this.onHide.emit({});\n            break;\n            case 'visible':\n                this.onShow.emit({});\n            break;\n        }\n    }\n\n    onContainerDestroy() {\n        this.unbindGlobalListeners();\n        this.dragging = false;\n\n        this.maskVisible = false;\n\n        if (this.maximized) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            this.maximized = false;\n        }\n\n        if (this.modal) {\n            this.disableModality();\n        }\n\n        if (this.blockScroll) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.container = null;\n        this.wrapper = null;\n\n        this._style = this.originalStyle ? {...this.originalStyle} : {};\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.container) {\n            this.restoreAppend();\n            this.onContainerDestroy();\n        }\n\n        this.destroyStyle();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,FocusTrapModule,RippleModule],\n    exports: [Dialog,SharedModule],\n    declarations: [Dialog]\n})\nexport class DialogModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Divider {
+    constructor() {
+        this.layout = "horizontal";
+        this.type = "solid";
+    }
+    containerClass() {
+        return {
+            'p-divider p-component': true,
+            'p-divider-horizontal': this.layout === "horizontal",
+            'p-divider-vertical': this.layout === "vertical",
+            'p-divider-solid': this.type === "solid",
+            'p-divider-dashed': this.type === "dashed",
+            'p-divider-dotted': this.type === "dotted",
+            'p-divider-left': this.layout === 'horizontal' && (!this.align || this.align === 'left'),
+            'p-divider-center': (this.layout === 'horizontal' && this.align === 'center') || (this.layout === 'vertical' && (!this.align || this.align === 'center')),
+            'p-divider-right': this.layout === 'horizontal' && this.align === 'right',
+            'p-divider-top': this.layout === 'vertical' && (this.align === 'top'),
+            'p-divider-bottom': this.layout === 'vertical' && this.align === 'bottom'
+        };
+    }
+}
+Divider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Divider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Divider, selector: "p-divider", inputs: { styleClass: "styleClass", style: "style", layout: "layout", type: "type", align: "align" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-divider', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }] } });
+class DividerModule {
+}
+DividerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DividerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, declarations: [Divider], imports: [CommonModule], exports: [Divider] });
+DividerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Divider],
+                    declarations: [Divider]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Divider, DividerModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-divider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-divider.mjs","sources":["../../src/app/components/divider/divider.ts","../../src/app/components/divider/primeng-divider.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-divider',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" role=\"separator\">\n            <div class=\"p-divider-content\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./divider.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Divider {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() layout: string = \"horizontal\";\n\n    @Input() type: string = \"solid\";\n\n    @Input() align: string;\n\n    containerClass() {\n        return {\n            'p-divider p-component': true,\n            'p-divider-horizontal': this.layout === \"horizontal\",\n            'p-divider-vertical': this.layout === \"vertical\",\n            'p-divider-solid': this.type === \"solid\",\n            'p-divider-dashed': this.type === \"dashed\",\n            'p-divider-dotted': this.type === \"dotted\",\n            'p-divider-left': this.layout === 'horizontal' && (!this.align || this.align === 'left'),\n            'p-divider-center': (this.layout === 'horizontal' && this.align === 'center') || (this.layout === 'vertical' && (!this.align || this.align === 'center')),\n            'p-divider-right': this.layout === 'horizontal' && this.align === 'right',\n            'p-divider-top': this.layout === 'vertical' && (this.align === 'top'),\n            'p-divider-bottom': this.layout === 'vertical' && this.align === 'bottom'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Divider],\n    declarations: [Divider]\n})\nexport class DividerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,OAAO;IAhBpB;QAsBa,WAAM,GAAW,YAAY,CAAC;QAE9B,SAAI,GAAW,OAAO,CAAC;KAmBnC;IAfG,cAAc;QACV,OAAO;YACH,uBAAuB,EAAE,IAAI;YAC7B,sBAAsB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY;YACpD,oBAAoB,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU;YAChD,iBAAiB,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;YACxC,kBAAkB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC1C,kBAAkB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC1C,gBAAgB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;YACxF,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YACzJ,iBAAiB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YACzE,eAAe,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;YACrE,kBAAkB,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;SAC5E,CAAC;KACL;;oGA1BQ,OAAO;wFAAP,OAAO,8LAdN;;;;;;KAMT;2FAQQ,OAAO;kBAhBnB,SAAS;+BACI,WAAW,YACX;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;;MAwBG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAlCb,OAAO,aA8BN,YAAY,aA9Bb,OAAO;2GAkCP,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;ACpDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,152 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Dock {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.position = "bottom";
+        this.currentIndex = -3;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onListMouseLeave() {
+        this.currentIndex = -3;
+        this.cd.markForCheck();
+    }
+    onItemMouseEnter(index) {
+        this.currentIndex = index;
+        if (index === 1) {
+        }
+        this.cd.markForCheck();
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+    }
+    get containerClass() {
+        return {
+            ['p-dock p-component ' + ` p-dock-${this.position}`]: true
+        };
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !item.disabled;
+    }
+    itemClass(index) {
+        return {
+            'p-dock-item': true,
+            'p-dock-item-second-prev': (this.currentIndex - 2) === index,
+            'p-dock-item-prev': (this.currentIndex - 1) === index,
+            'p-dock-item-current': this.currentIndex === index,
+            'p-dock-item-next': (this.currentIndex + 1) === index,
+            'p-dock-item-second-next': (this.currentIndex + 2) === index
+        };
+    }
+}
+Dock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Dock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dock, selector: "p-dock", inputs: { id: "id", style: "style", styleClass: "styleClass", model: "model", position: "position" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dock', template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class DockModule {
+}
+DockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, declarations: [Dock], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Dock, SharedModule, TooltipModule, RouterModule] });
+DockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], SharedModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Dock, SharedModule, TooltipModule, RouterModule],
+                    declarations: [Dock]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Dock, DockModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dock.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dock.mjs","sources":["../../src/app/components/dock/dock.ts","../../src/app/components/dock/primeng-dock.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-dock',\n    template: `\n        <div [attr.id]=\"id\" [ngClass]=\"containerClass\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-dock-list-container\">\n                <ul #list class=\"p-dock-list\" role=\"menu\" (mouseleave)=\"onListMouseLeave()\">\n                    <li *ngFor=\"let item of model; let i = index\" [ngClass]=\"itemClass(i)\" (mouseenter)=\"onItemMouseEnter(i)\">\n                        <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" pRipple [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\"\n                            [ngClass]=\"{'p-disabled':item.disabled}\" class=\"p-dock-action\"  role=\"menuitem\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" (click)=\"onItemClick($event, item)\" (keydown.enter)=\"onItemClick($event, item, i)\"\n                            [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"  pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                                <span class=\"p-dock-action-icon\" *ngIf=\"item.icon && !itemTemplate\" [ngClass]=\"item.icon\"></span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                        </a>\n                        <ng-template #elseBlock>\n                            <a [tooltipPosition]=\"item.tooltipPosition\" [attr.href]=\"item.url||null\" class=\"p-dock-action\"  role=\"menuitem\" pRipple (click)=\"onItemClick($event, item)\"  pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                                [ngClass]=\"{'p-disabled':item.disabled}\" (keydown.enter)=\"onItemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                                <span class=\"p-dock-action-icon\" *ngIf=\"item.icon && !itemTemplate\" [ngClass]=\"item.icon\"></span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                            </a>\n                        </ng-template>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dock.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Dock implements AfterContentInit {\n\n    @Input() id: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() model: any[] = null;\n\n    @Input() position: string = \"bottom\";\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    currentIndex: number;\n\n    constructor(private el: ElementRef, public cd: ChangeDetectorRef) {\n        this.currentIndex = -3;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onListMouseLeave() {\n        this.currentIndex = -3;\n        this.cd.markForCheck();\n    }\n\n    onItemMouseEnter(index) {\n        this.currentIndex = index;\n\n        if (index === 1) {\n\n        }\n\n        this.cd.markForCheck();\n    }\n\n    onItemClick(e, item) {\n        if (item.command) {\n            item.command({ originalEvent: e, item });\n        }\n    }\n\n    get containerClass() {\n        return {\n            ['p-dock p-component ' + ` p-dock-${this.position}`]: true\n        };\n    }\n\n    isClickableRouterLink(item: any) {\n        return item.routerLink && !item.disabled;\n    }\n\n    itemClass(index) {\n        return {\n            'p-dock-item': true,\n            'p-dock-item-second-prev': (this.currentIndex - 2) === index,\n            'p-dock-item-prev': (this.currentIndex - 1) === index,\n            'p-dock-item-current': this.currentIndex === index,\n            'p-dock-item-next': (this.currentIndex + 1) === index,\n            'p-dock-item-second-next': (this.currentIndex + 2) === index\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],\n    exports: [Dock, SharedModule, TooltipModule, RouterModule],\n    declarations: [Dock]\n})\nexport class DockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,526 @@
+/**
+ * @dynamic is for runtime initializing DomHandler.browser
+ *
+ * If delete below comment, we can see this error message:
+ *  Metadata collected contains an error that will be reported at runtime:
+ *  Only initialized variables and constants can be referenced
+ *  because the value of this variable is needed by the template compiler.
+ */
+// @dynamic
+class DomHandler {
+    static addClass(element, className) {
+        if (element.classList)
+            element.classList.add(className);
+        else
+            element.className += ' ' + className;
+    }
+    static addMultipleClasses(element, className) {
+        if (element.classList) {
+            let styles = className.trim().split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.classList.add(styles[i]);
+            }
+        }
+        else {
+            let styles = className.split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.className += ' ' + styles[i];
+            }
+        }
+    }
+    static removeClass(element, className) {
+        if (element.classList)
+            element.classList.remove(className);
+        else
+            element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
+    }
+    static hasClass(element, className) {
+        if (element.classList)
+            return element.classList.contains(className);
+        else
+            return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
+    }
+    static siblings(element) {
+        return Array.prototype.filter.call(element.parentNode.children, function (child) {
+            return child !== element;
+        });
+    }
+    static find(element, selector) {
+        return Array.from(element.querySelectorAll(selector));
+    }
+    static findSingle(element, selector) {
+        if (element) {
+            return element.querySelector(selector);
+        }
+        return null;
+    }
+    static index(element) {
+        let children = element.parentNode.childNodes;
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static indexWithinGroup(element, attributeName) {
+        let children = element.parentNode ? element.parentNode.childNodes : [];
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static relativePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        const targetHeight = target.offsetHeight;
+        const targetOffset = target.getBoundingClientRect();
+        const viewport = this.getViewport();
+        let top, left;
+        if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {
+            top = -1 * (elementDimensions.height);
+            element.style.transformOrigin = 'bottom';
+            if (targetOffset.top + top < 0) {
+                top = -1 * targetOffset.top;
+            }
+        }
+        else {
+            top = targetHeight;
+            element.style.transformOrigin = 'top';
+        }
+        if (elementDimensions.width > viewport.width) {
+            // element wider then viewport and cannot fit on screen (align at left side of viewport)
+            left = targetOffset.left * -1;
+        }
+        else if ((targetOffset.left + elementDimensions.width) > viewport.width) {
+            // element wider then viewport but can be fit on screen (align at right side of viewport)
+            left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
+        }
+        else {
+            // element fits on screen (align with target)
+            left = 0;
+        }
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static absolutePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        let elementOuterHeight = elementDimensions.height;
+        let elementOuterWidth = elementDimensions.width;
+        let targetOuterHeight = target.offsetHeight;
+        let targetOuterWidth = target.offsetWidth;
+        let targetOffset = target.getBoundingClientRect();
+        let windowScrollTop = this.getWindowScrollTop();
+        let windowScrollLeft = this.getWindowScrollLeft();
+        let viewport = this.getViewport();
+        let top, left;
+        if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
+            top = targetOffset.top + windowScrollTop - elementOuterHeight;
+            element.style.transformOrigin = 'bottom';
+            if (top < 0) {
+                top = windowScrollTop;
+            }
+        }
+        else {
+            top = targetOuterHeight + targetOffset.top + windowScrollTop;
+            element.style.transformOrigin = 'top';
+        }
+        if (targetOffset.left + elementOuterWidth > viewport.width)
+            left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
+        else
+            left = targetOffset.left + windowScrollLeft;
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static getParents(element, parents = []) {
+        return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));
+    }
+    static getScrollableParents(element) {
+        let scrollableParents = [];
+        if (element) {
+            let parents = this.getParents(element);
+            const overflowRegex = /(auto|scroll)/;
+            const overflowCheck = (node) => {
+                let styleDeclaration = window['getComputedStyle'](node, null);
+                return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));
+            };
+            for (let parent of parents) {
+                let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];
+                if (scrollSelectors) {
+                    let selectors = scrollSelectors.split(',');
+                    for (let selector of selectors) {
+                        let el = this.findSingle(parent, selector);
+                        if (el && overflowCheck(el)) {
+                            scrollableParents.push(el);
+                        }
+                    }
+                }
+                if (parent.nodeType !== 9 && overflowCheck(parent)) {
+                    scrollableParents.push(parent);
+                }
+            }
+        }
+        return scrollableParents;
+    }
+    static getHiddenElementOuterHeight(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementHeight = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementHeight;
+    }
+    static getHiddenElementOuterWidth(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementWidth = element.offsetWidth;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementWidth;
+    }
+    static getHiddenElementDimensions(element) {
+        let dimensions = {};
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        dimensions.width = element.offsetWidth;
+        dimensions.height = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return dimensions;
+    }
+    static scrollInView(container, item) {
+        let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');
+        let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;
+        let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');
+        let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;
+        let containerRect = container.getBoundingClientRect();
+        let itemRect = item.getBoundingClientRect();
+        let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;
+        let scroll = container.scrollTop;
+        let elementHeight = container.clientHeight;
+        let itemHeight = this.getOuterHeight(item);
+        if (offset < 0) {
+            container.scrollTop = scroll + offset;
+        }
+        else if ((offset + itemHeight) > elementHeight) {
+            container.scrollTop = scroll + offset - elementHeight + itemHeight;
+        }
+    }
+    static fadeIn(element, duration) {
+        element.style.opacity = 0;
+        let last = +new Date();
+        let opacity = 0;
+        let tick = function () {
+            opacity = +element.style.opacity.replace(",", ".") + (new Date().getTime() - last) / duration;
+            element.style.opacity = opacity;
+            last = +new Date();
+            if (+opacity < 1) {
+                (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
+            }
+        };
+        tick();
+    }
+    static fadeOut(element, ms) {
+        var opacity = 1, interval = 50, duration = ms, gap = interval / duration;
+        let fading = setInterval(() => {
+            opacity = opacity - gap;
+            if (opacity <= 0) {
+                opacity = 0;
+                clearInterval(fading);
+            }
+            element.style.opacity = opacity;
+        }, interval);
+    }
+    static getWindowScrollTop() {
+        let doc = document.documentElement;
+        return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
+    }
+    static getWindowScrollLeft() {
+        let doc = document.documentElement;
+        return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
+    }
+    static matches(element, selector) {
+        var p = Element.prototype;
+        var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {
+            return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
+        };
+        return f.call(element, selector);
+    }
+    static getOuterWidth(el, margin) {
+        let width = el.offsetWidth;
+        if (margin) {
+            let style = getComputedStyle(el);
+            width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+        }
+        return width;
+    }
+    static getHorizontalPadding(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+    }
+    static getHorizontalMargin(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+    }
+    static innerWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static width(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static getInnerHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
+        return height;
+    }
+    static getOuterHeight(el, margin) {
+        let height = el.offsetHeight;
+        if (margin) {
+            let style = getComputedStyle(el);
+            height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
+        }
+        return height;
+    }
+    static getHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
+        return height;
+    }
+    static getWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
+        return width;
+    }
+    static getViewport() {
+        let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;
+        return { width: w, height: h };
+    }
+    static getOffset(el) {
+        var rect = el.getBoundingClientRect();
+        return {
+            top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
+            left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),
+        };
+    }
+    static replaceElementWith(element, replacementElement) {
+        let parentNode = element.parentNode;
+        if (!parentNode)
+            throw `Can't replace element`;
+        return parentNode.replaceChild(replacementElement, element);
+    }
+    static getUserAgent() {
+        return navigator.userAgent;
+    }
+    static isIE() {
+        var ua = window.navigator.userAgent;
+        var msie = ua.indexOf('MSIE ');
+        if (msie > 0) {
+            // IE 10 or older => return version number
+            return true;
+        }
+        var trident = ua.indexOf('Trident/');
+        if (trident > 0) {
+            // IE 11 => return version number
+            var rv = ua.indexOf('rv:');
+            return true;
+        }
+        var edge = ua.indexOf('Edge/');
+        if (edge > 0) {
+            // Edge (IE 12+) => return version number
+            return true;
+        }
+        // other browser
+        return false;
+    }
+    static isIOS() {
+        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];
+    }
+    static isAndroid() {
+        return /(android)/i.test(navigator.userAgent);
+    }
+    static isTouchDevice() {
+        return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));
+    }
+    static appendChild(element, target) {
+        if (this.isElement(target))
+            target.appendChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.appendChild(element);
+        else
+            throw 'Cannot append ' + target + ' to ' + element;
+    }
+    static removeChild(element, target) {
+        if (this.isElement(target))
+            target.removeChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.removeChild(element);
+        else
+            throw 'Cannot remove ' + element + ' from ' + target;
+    }
+    static removeElement(element) {
+        if (!('remove' in Element.prototype))
+            element.parentNode.removeChild(element);
+        else
+            element.remove();
+    }
+    static isElement(obj) {
+        return (typeof HTMLElement === "object" ? obj instanceof HTMLElement :
+            obj && typeof obj === "object" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === "string");
+    }
+    static calculateScrollbarWidth(el) {
+        if (el) {
+            let style = getComputedStyle(el);
+            return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));
+        }
+        else {
+            if (this.calculatedScrollbarWidth !== null)
+                return this.calculatedScrollbarWidth;
+            let scrollDiv = document.createElement("div");
+            scrollDiv.className = "p-scrollbar-measure";
+            document.body.appendChild(scrollDiv);
+            let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+            document.body.removeChild(scrollDiv);
+            this.calculatedScrollbarWidth = scrollbarWidth;
+            return scrollbarWidth;
+        }
+    }
+    static calculateScrollbarHeight() {
+        if (this.calculatedScrollbarHeight !== null)
+            return this.calculatedScrollbarHeight;
+        let scrollDiv = document.createElement("div");
+        scrollDiv.className = "p-scrollbar-measure";
+        document.body.appendChild(scrollDiv);
+        let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;
+        document.body.removeChild(scrollDiv);
+        this.calculatedScrollbarWidth = scrollbarHeight;
+        return scrollbarHeight;
+    }
+    static invokeElementMethod(element, methodName, args) {
+        element[methodName].apply(element, args);
+    }
+    static clearSelection() {
+        if (window.getSelection) {
+            if (window.getSelection().empty) {
+                window.getSelection().empty();
+            }
+            else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
+                window.getSelection().removeAllRanges();
+            }
+        }
+        else if (document['selection'] && document['selection'].empty) {
+            try {
+                document['selection'].empty();
+            }
+            catch (error) {
+                //ignore IE bug
+            }
+        }
+    }
+    static getBrowser() {
+        if (!this.browser) {
+            let matched = this.resolveUserAgent();
+            this.browser = {};
+            if (matched.browser) {
+                this.browser[matched.browser] = true;
+                this.browser['version'] = matched.version;
+            }
+            if (this.browser['chrome']) {
+                this.browser['webkit'] = true;
+            }
+            else if (this.browser['webkit']) {
+                this.browser['safari'] = true;
+            }
+        }
+        return this.browser;
+    }
+    static resolveUserAgent() {
+        let ua = navigator.userAgent.toLowerCase();
+        let match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+            /(msie) ([\w.]+)/.exec(ua) ||
+            ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+            [];
+        return {
+            browser: match[1] || "",
+            version: match[2] || "0"
+        };
+    }
+    static isInteger(value) {
+        if (Number.isInteger) {
+            return Number.isInteger(value);
+        }
+        else {
+            return typeof value === "number" && isFinite(value) && Math.floor(value) === value;
+        }
+    }
+    static isHidden(element) {
+        return element.offsetParent === null;
+    }
+    static getFocusableElements(element) {
+        let focusableElements = DomHandler.find(element, `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]:not(.p-disabled))`);
+        let visibleFocusableElements = [];
+        for (let focusableElement of focusableElements) {
+            if (getComputedStyle(focusableElement).display != "none" && getComputedStyle(focusableElement).visibility != "hidden")
+                visibleFocusableElements.push(focusableElement);
+        }
+        return visibleFocusableElements;
+    }
+    static generateZIndex() {
+        this.zindex = this.zindex || 999;
+        return ++this.zindex;
+    }
+}
+DomHandler.zindex = 1000;
+DomHandler.calculatedScrollbarWidth = null;
+DomHandler.calculatedScrollbarHeight = null;
+
+class ConnectedOverlayScrollHandler {
+    constructor(element, listener = () => { }) {
+        this.element = element;
+        this.listener = listener;
+    }
+    bindScrollListener() {
+        this.scrollableParents = DomHandler.getScrollableParents(this.element);
+        for (let i = 0; i < this.scrollableParents.length; i++) {
+            this.scrollableParents[i].addEventListener('scroll', this.listener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollableParents) {
+            for (let i = 0; i < this.scrollableParents.length; i++) {
+                this.scrollableParents[i].removeEventListener('scroll', this.listener);
+            }
+        }
+    }
+    destroy() {
+        this.unbindScrollListener();
+        this.element = null;
+        this.listener = null;
+        this.scrollableParents = null;
+    }
+}
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConnectedOverlayScrollHandler, DomHandler };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dom.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dom.mjs","sources":["../../src/app/components/dom/domhandler.ts","../../src/app/components/dom/connectedoverlayscrollhandler.ts","../../src/app/components/dom/primeng-dom.ts"],"sourcesContent":["/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n *  Metadata collected contains an error that will be reported at runtime:\n *  Only initialized variables and constants can be referenced\n *  because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nexport class DomHandler {\n\n    public static zindex: number = 1000;\n\n    private static calculatedScrollbarWidth: number = null;\n\n    private static calculatedScrollbarHeight: number = null;\n\n    private static browser: any;\n\n    public static addClass(element: any, className: string): void {\n        if (element.classList)\n            element.classList.add(className);\n        else\n            element.className += ' ' + className;\n    }\n\n    public static addMultipleClasses(element: any, className: string): void {\n        if (element.classList) {\n            let styles: string[] = className.trim().split(' ');\n            for (let i = 0; i < styles.length; i++) {\n                element.classList.add(styles[i]);\n            }\n\n        }\n        else {\n            let styles: string[] = className.split(' ');\n            for (let i = 0; i < styles.length; i++) {\n                element.className += ' ' + styles[i];\n            }\n        }\n    }\n\n    public static removeClass(element: any, className: string): void {\n        if (element.classList)\n            element.classList.remove(className);\n        else\n            element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n    }\n\n    public static hasClass(element: any, className: string): boolean {\n        if (element.classList)\n            return element.classList.contains(className);\n        else\n            return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n    }\n\n    public static siblings(element: any): any {\n        return Array.prototype.filter.call(element.parentNode.children, function (child) {\n            return child !== element;\n        });\n    }\n\n    public static find(element: any, selector: string): any[] {\n        return Array.from(element.querySelectorAll(selector));\n    }\n\n    public static findSingle(element: any, selector: string): any {\n        if (element) {\n            return element.querySelector(selector);\n        }\n        return null;\n    }\n\n    public static index(element: any): number {\n        let children = element.parentNode.childNodes;\n        let num = 0;\n        for (var i = 0; i < children.length; i++) {\n            if (children[i] == element) return num;\n            if (children[i].nodeType == 1) num++;\n        }\n        return -1;\n    }\n\n    public static indexWithinGroup(element: any, attributeName: string): number {\n        let children = element.parentNode ? element.parentNode.childNodes : [];\n        let num = 0;\n        for (var i = 0; i < children.length; i++) {\n            if (children[i] == element) return num;\n            if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) num++;\n        }\n        return -1;\n    }\n\n    public static relativePosition(element: any, target: any): void {\n        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n        const targetHeight = target.offsetHeight;\n        const targetOffset = target.getBoundingClientRect();\n        const viewport = this.getViewport();\n        let top: number, left: number;\n\n        if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {\n            top = -1 * (elementDimensions.height);\n            element.style.transformOrigin = 'bottom';\n            if (targetOffset.top + top < 0) {\n                top = -1 * targetOffset.top;\n            }\n        }\n        else {\n            top = targetHeight;\n            element.style.transformOrigin = 'top';\n        }\n\n        if (elementDimensions.width > viewport.width) {\n            // element wider then viewport and cannot fit on screen (align at left side of viewport)\n            left = targetOffset.left * -1;\n        }\n        else if ((targetOffset.left + elementDimensions.width) > viewport.width) {\n            // element wider then viewport but can be fit on screen (align at right side of viewport)\n            left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n        }\n        else {\n            // element fits on screen (align with target)\n            left = 0;\n        }\n\n        element.style.top = top + 'px';\n        element.style.left = left + 'px';\n    }\n\n    public static absolutePosition(element: any, target: any): void {\n        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n        let elementOuterHeight = elementDimensions.height;\n        let elementOuterWidth = elementDimensions.width;\n        let targetOuterHeight = target.offsetHeight;\n        let targetOuterWidth = target.offsetWidth;\n        let targetOffset = target.getBoundingClientRect();\n        let windowScrollTop = this.getWindowScrollTop();\n        let windowScrollLeft = this.getWindowScrollLeft();\n        let viewport = this.getViewport();\n        let top, left;\n\n        if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n            top = targetOffset.top + windowScrollTop - elementOuterHeight;\n            element.style.transformOrigin = 'bottom';\n\n            if (top < 0) {\n                top = windowScrollTop;\n            }\n        }\n        else {\n            top = targetOuterHeight + targetOffset.top + windowScrollTop;\n            element.style.transformOrigin = 'top';\n        }\n\n        if (targetOffset.left + elementOuterWidth > viewport.width)\n            left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n        else\n            left = targetOffset.left + windowScrollLeft;\n\n        element.style.top = top + 'px';\n        element.style.left = left + 'px';\n    }\n\n    static getParents(element: any, parents:any = []): any {\n        return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n    }\n\n    static getScrollableParents(element: any) {\n        let scrollableParents = [];\n\n        if (element) {\n            let parents = this.getParents(element);\n            const overflowRegex = /(auto|scroll)/;\n            const overflowCheck = (node: any) => {\n                let styleDeclaration = window['getComputedStyle'](node, null);\n                return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n            };\n\n            for (let parent of parents) {\n                let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n                if (scrollSelectors) {\n                    let selectors = scrollSelectors.split(',');\n                    for (let selector of selectors) {\n                        let el = this.findSingle(parent, selector);\n                        if (el && overflowCheck(el)) {\n                            scrollableParents.push(el);\n                        }\n                    }\n                }\n\n                if (parent.nodeType !== 9 && overflowCheck(parent)) {\n                    scrollableParents.push(parent);\n                }\n            }\n        }\n\n        return scrollableParents;\n    }\n\n    public static getHiddenElementOuterHeight(element: any): number {\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        let elementHeight = element.offsetHeight;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return elementHeight;\n    }\n\n    public static getHiddenElementOuterWidth(element: any): number {\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        let elementWidth = element.offsetWidth;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return elementWidth;\n    }\n\n    public static getHiddenElementDimensions(element: any): any {\n        let dimensions: any = {};\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        dimensions.width = element.offsetWidth;\n        dimensions.height = element.offsetHeight;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return dimensions;\n    }\n\n    public static scrollInView(container, item) {\n        let borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n        let borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n        let paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n        let paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n        let containerRect = container.getBoundingClientRect();\n        let itemRect = item.getBoundingClientRect();\n        let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n        let scroll = container.scrollTop;\n        let elementHeight = container.clientHeight;\n        let itemHeight = this.getOuterHeight(item);\n\n        if (offset < 0) {\n            container.scrollTop = scroll + offset;\n        }\n        else if ((offset + itemHeight) > elementHeight) {\n            container.scrollTop = scroll + offset - elementHeight + itemHeight;\n        }\n    }\n\n    public static fadeIn(element, duration: number): void {\n        element.style.opacity = 0;\n\n        let last = +new Date();\n        let opacity = 0;\n        let tick = function () {\n            opacity = +element.style.opacity.replace(\",\", \".\") + (new Date().getTime() - last) / duration;\n            element.style.opacity = opacity;\n            last = +new Date();\n\n            if (+opacity < 1) {\n                (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n            }\n        };\n\n        tick();\n    }\n\n    public static fadeOut(element, ms) {\n        var opacity = 1,\n            interval = 50,\n            duration = ms,\n            gap = interval / duration;\n\n        let fading = setInterval(() => {\n            opacity = opacity - gap;\n\n            if (opacity <= 0) {\n                opacity = 0;\n                clearInterval(fading);\n            }\n\n            element.style.opacity = opacity;\n        }, interval);\n    }\n\n    public static getWindowScrollTop(): number {\n        let doc = document.documentElement;\n        return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n    }\n\n    public static getWindowScrollLeft(): number {\n        let doc = document.documentElement;\n        return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n    }\n\n    public static matches(element, selector: string): boolean {\n        var p = Element.prototype;\n        var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {\n            return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n        };\n        return f.call(element, selector);\n    }\n\n    public static getOuterWidth(el, margin?) {\n        let width = el.offsetWidth;\n\n        if (margin) {\n            let style = getComputedStyle(el);\n            width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n        }\n\n        return width;\n    }\n\n    public static getHorizontalPadding(el) {\n        let style = getComputedStyle(el);\n        return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n    }\n\n    public static getHorizontalMargin(el) {\n        let style = getComputedStyle(el);\n        return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n    }\n\n    public static innerWidth(el) {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n        return width;\n    }\n\n    public static width(el) {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n        return width;\n    }\n\n    public static getInnerHeight(el) {\n        let height = el.offsetHeight;\n        let style = getComputedStyle(el);\n\n        height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n        return height;\n    }\n\n    public static getOuterHeight(el, margin?) {\n        let height = el.offsetHeight;\n\n        if (margin) {\n            let style = getComputedStyle(el);\n            height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n        }\n\n        return height;\n    }\n\n    public static getHeight(el): number {\n        let height = el.offsetHeight;\n        let style = getComputedStyle(el);\n\n        height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n        return height;\n    }\n\n    public static getWidth(el): number {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n        return width;\n    }\n\n    public static getViewport(): any {\n        let win = window,\n            d = document,\n            e = d.documentElement,\n            g = d.getElementsByTagName('body')[0],\n            w = win.innerWidth || e.clientWidth || g.clientWidth,\n            h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n        return { width: w, height: h };\n    }\n\n    public static getOffset(el) {\n        var rect = el.getBoundingClientRect();\n\n        return {\n            top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n            left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n        };\n    }\n\n    public static replaceElementWith(element: any, replacementElement: any): any {\n        let parentNode = element.parentNode;\n        if (!parentNode)\n            throw `Can't replace element`;\n        return parentNode.replaceChild(replacementElement, element);\n    }\n\n    public static getUserAgent(): string {\n        return navigator.userAgent;\n    }\n\n    public static  isIE() {\n        var ua = window.navigator.userAgent;\n\n        var msie = ua.indexOf('MSIE ');\n        if (msie > 0) {\n            // IE 10 or older => return version number\n            return true;\n        }\n\n        var trident = ua.indexOf('Trident/');\n        if (trident > 0) {\n            // IE 11 => return version number\n            var rv = ua.indexOf('rv:');\n            return true;\n        }\n\n        var edge = ua.indexOf('Edge/');\n        if (edge > 0) {\n           // Edge (IE 12+) => return version number\n           return true;\n        }\n\n        // other browser\n        return false;\n    }\n\n    public static isIOS() {\n        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n    }\n\n    public static isAndroid() {\n        return /(android)/i.test(navigator.userAgent);\n    }\n\n    public static isTouchDevice() {\n        return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n    }\n\n    public static appendChild(element: any, target: any) {\n        if (this.isElement(target))\n            target.appendChild(element);\n        else if (target.el && target.el.nativeElement)\n            target.el.nativeElement.appendChild(element);\n        else\n            throw 'Cannot append ' + target + ' to ' + element;\n    }\n\n    public static removeChild(element: any, target: any) {\n        if (this.isElement(target))\n            target.removeChild(element);\n        else if (target.el && target.el.nativeElement)\n            target.el.nativeElement.removeChild(element);\n        else\n            throw 'Cannot remove ' + element + ' from ' + target;\n    }\n\n    public static removeElement(element: Element) {\n        if (!('remove' in Element.prototype))\n            element.parentNode.removeChild(element);\n        else\n            element.remove();\n    }\n\n    public static isElement(obj: any) {\n        return (typeof HTMLElement === \"object\" ? obj instanceof HTMLElement :\n            obj && typeof obj === \"object\" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === \"string\"\n        );\n    }\n\n    public static calculateScrollbarWidth(el?: HTMLElement): number {\n        if (el) {\n            let style = getComputedStyle(el);\n            return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));\n        }\n        else {\n            if (this.calculatedScrollbarWidth !== null)\n                return this.calculatedScrollbarWidth;\n\n            let scrollDiv = document.createElement(\"div\");\n            scrollDiv.className = \"p-scrollbar-measure\";\n            document.body.appendChild(scrollDiv);\n\n            let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n            document.body.removeChild(scrollDiv);\n\n            this.calculatedScrollbarWidth = scrollbarWidth;\n\n            return scrollbarWidth;\n        }\n    }\n\n    public static calculateScrollbarHeight(): number {\n        if (this.calculatedScrollbarHeight !== null)\n            return this.calculatedScrollbarHeight;\n\n        let scrollDiv = document.createElement(\"div\");\n        scrollDiv.className = \"p-scrollbar-measure\";\n        document.body.appendChild(scrollDiv);\n\n        let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n        document.body.removeChild(scrollDiv);\n\n        this.calculatedScrollbarWidth = scrollbarHeight;\n\n        return scrollbarHeight;\n    }\n\n    public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n        (element as any)[methodName].apply(element, args);\n    }\n\n    public static clearSelection(): void {\n        if (window.getSelection) {\n            if (window.getSelection().empty) {\n                window.getSelection().empty();\n            } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n                window.getSelection().removeAllRanges();\n            }\n        }\n        else if (document['selection'] && document['selection'].empty) {\n            try {\n                document['selection'].empty();\n            } catch(error) {\n                //ignore IE bug\n            }\n        }\n    }\n\n    public static getBrowser() {\n        if (!this.browser) {\n            let matched = this.resolveUserAgent();\n            this.browser = {};\n\n            if (matched.browser) {\n                this.browser[matched.browser] = true;\n                this.browser['version'] = matched.version;\n            }\n\n            if (this.browser['chrome']) {\n                this.browser['webkit'] = true;\n            } else if (this.browser['webkit']) {\n                this.browser['safari'] = true;\n            }\n        }\n\n        return this.browser;\n    }\n\n    public static resolveUserAgent() {\n        let ua = navigator.userAgent.toLowerCase();\n        let match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(msie) ([\\w.]+)/.exec(ua) ||\n            ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n            [];\n\n        return {\n            browser: match[1] || \"\",\n            version: match[2] || \"0\"\n        };\n    }\n\n    public static isInteger(value): boolean {\n        if (Number.isInteger) {\n            return Number.isInteger(value);\n        }\n        else {\n            return typeof value === \"number\" && isFinite(value) &&  Math.floor(value) === value;\n        }\n    }\n\n    public static isHidden(element: HTMLElement): boolean {\n        return element.offsetParent === null;\n    }\n\n    public static getFocusableElements(element:HTMLElement) {\n        let focusableElements = DomHandler.find(element,`button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]:not(.p-disabled))`\n            );\n\n            let visibleFocusableElements = [];\n            for(let focusableElement of focusableElements) {\n                if (getComputedStyle(focusableElement).display != \"none\" && getComputedStyle(focusableElement).visibility != \"hidden\")\n                    visibleFocusableElements.push(focusableElement);\n            }\n        return visibleFocusableElements;\n    }\n\n    static generateZIndex() {\n        this.zindex = this.zindex||999;\n        return ++this.zindex;\n    }\n}\n","import {DomHandler} from './domhandler';\n\nexport class ConnectedOverlayScrollHandler {\n\n    element: any;\n\n    listener: any;\n\n    scrollableParents: any;\n\n    constructor(element: any, listener: any = () => {}) {\n        this.element = element;\n        this.listener = listener;\n    }\n\n    bindScrollListener() {\n        this.scrollableParents = DomHandler.getScrollableParents(this.element);\n        for (let i = 0; i < this.scrollableParents.length; i++) {\n            this.scrollableParents[i].addEventListener('scroll', this.listener);\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollableParents) {\n            for (let i = 0; i < this.scrollableParents.length; i++) {\n                this.scrollableParents[i].removeEventListener('scroll', this.listener);\n            }\n        }\n    }\n\n    destroy() {\n        this.unbindScrollListener();\n        this.element = null;\n        this.listener = null;\n        this.scrollableParents = null;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,259 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class Draggable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragStart = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onDrag = new EventEmitter();
+    }
+    get pDraggableDisabled() {
+        return this._pDraggableDisabled;
+    }
+    set pDraggableDisabled(_pDraggableDisabled) {
+        this._pDraggableDisabled = _pDraggableDisabled;
+        if (this._pDraggableDisabled) {
+            this.unbindMouseListeners();
+        }
+        else {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.pDraggableDisabled) {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    bindDragListener() {
+        if (!this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragListener = this.drag.bind(this);
+                this.el.nativeElement.addEventListener('drag', this.dragListener);
+            });
+        }
+    }
+    unbindDragListener() {
+        if (this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('drag', this.dragListener);
+                this.dragListener = null;
+            });
+        }
+    }
+    bindMouseListeners() {
+        if (!this.mouseDownListener && !this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.mouseDownListener = this.mousedown.bind(this);
+                this.mouseUpListener = this.mouseup.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.addEventListener('mouseup', this.mouseUpListener);
+            });
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseDownListener && this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.removeEventListener('mouseup', this.mouseUpListener);
+                this.mouseDownListener = null;
+                this.mouseUpListener = null;
+            });
+        }
+    }
+    drag(event) {
+        this.onDrag.emit(event);
+    }
+    dragStart(event) {
+        if (this.allowDrag() && !this.pDraggableDisabled) {
+            if (this.dragEffect) {
+                event.dataTransfer.effectAllowed = this.dragEffect;
+            }
+            event.dataTransfer.setData('text', this.scope);
+            this.onDragStart.emit(event);
+            this.bindDragListener();
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    dragEnd(event) {
+        this.onDragEnd.emit(event);
+        this.unbindDragListener();
+    }
+    mousedown(event) {
+        this.handle = event.target;
+    }
+    mouseup(event) {
+        this.handle = null;
+    }
+    allowDrag() {
+        if (this.dragHandle && this.handle)
+            return DomHandler.matches(this.handle, this.dragHandle);
+        else
+            return true;
+    }
+    ngOnDestroy() {
+        this.unbindDragListener();
+        this.unbindMouseListeners();
+    }
+}
+Draggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Draggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Draggable, selector: "[pDraggable]", inputs: { scope: ["pDraggable", "scope"], dragEffect: "dragEffect", dragHandle: "dragHandle", pDraggableDisabled: "pDraggableDisabled" }, outputs: { onDragStart: "onDragStart", onDragEnd: "onDragEnd", onDrag: "onDrag" }, host: { listeners: { "dragstart": "dragStart($event)", "dragend": "dragEnd($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDraggable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDraggable']
+            }], dragEffect: [{
+                type: Input
+            }], dragHandle: [{
+                type: Input
+            }], onDragStart: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onDrag: [{
+                type: Output
+            }], pDraggableDisabled: [{
+                type: Input
+            }], dragStart: [{
+                type: HostListener,
+                args: ['dragstart', ['$event']]
+            }], dragEnd: [{
+                type: HostListener,
+                args: ['dragend', ['$event']]
+            }] } });
+class Droppable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragEnter = new EventEmitter();
+        this.onDragLeave = new EventEmitter();
+        this.onDrop = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (!this.pDroppableDisabled) {
+            this.bindDragOverListener();
+        }
+    }
+    bindDragOverListener() {
+        if (!this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragOverListener = this.dragOver.bind(this);
+                this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            });
+        }
+    }
+    unbindDragOverListener() {
+        if (this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('dragover', this.dragOverListener);
+                this.dragOverListener = null;
+            });
+        }
+    }
+    dragOver(event) {
+        event.preventDefault();
+    }
+    drop(event) {
+        if (this.allowDrop(event)) {
+            DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+            event.preventDefault();
+            this.onDrop.emit(event);
+        }
+    }
+    dragEnter(event) {
+        event.preventDefault();
+        if (this.dropEffect) {
+            event.dataTransfer.dropEffect = this.dropEffect;
+        }
+        DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragEnter.emit(event);
+    }
+    dragLeave(event) {
+        event.preventDefault();
+        DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragLeave.emit(event);
+    }
+    allowDrop(event) {
+        let dragScope = event.dataTransfer.getData('text');
+        if (typeof (this.scope) == "string" && dragScope == this.scope) {
+            return true;
+        }
+        else if (this.scope instanceof Array) {
+            for (let j = 0; j < this.scope.length; j++) {
+                if (dragScope == this.scope[j]) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    ngOnDestroy() {
+        this.unbindDragOverListener();
+    }
+}
+Droppable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Droppable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Droppable, selector: "[pDroppable]", inputs: { scope: ["pDroppable", "scope"], pDroppableDisabled: "pDroppableDisabled", dropEffect: "dropEffect" }, outputs: { onDragEnter: "onDragEnter", onDragLeave: "onDragLeave", onDrop: "onDrop" }, host: { listeners: { "drop": "drop($event)", "dragenter": "dragEnter($event)", "dragleave": "dragLeave($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDroppable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDroppable']
+            }], pDroppableDisabled: [{
+                type: Input
+            }], dropEffect: [{
+                type: Input
+            }], onDragEnter: [{
+                type: Output
+            }], onDragLeave: [{
+                type: Output
+            }], onDrop: [{
+                type: Output
+            }], drop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }], dragEnter: [{
+                type: HostListener,
+                args: ['dragenter', ['$event']]
+            }], dragLeave: [{
+                type: HostListener,
+                args: ['dragleave', ['$event']]
+            }] } });
+class DragDropModule {
+}
+DragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, declarations: [Draggable, Droppable], imports: [CommonModule], exports: [Draggable, Droppable] });
+DragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Draggable, Droppable],
+                    declarations: [Draggable, Droppable]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DragDropModule, Draggable, Droppable };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dragdrop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dragdrop.mjs","sources":["../../src/app/components/dragdrop/dragdrop.ts","../../src/app/components/dragdrop/primeng-dragdrop.ts"],"sourcesContent":["import {NgModule,Directive,OnDestroy,AfterViewInit,ElementRef,HostListener,Input,Output,EventEmitter,NgZone} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Directive({\n    selector: '[pDraggable]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Draggable implements AfterViewInit, OnDestroy {\n\n    @Input('pDraggable') scope: string;\n\n    @Input() dragEffect: string;\n\n    @Input() dragHandle: string;\n\n    @Output() onDragStart: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDrag: EventEmitter<any> = new EventEmitter();\n\n    handle: any;\n\n    dragListener: any;\n\n    mouseDownListener: any;\n\n    mouseUpListener: any;\n\n    _pDraggableDisabled: boolean;\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    @Input() get pDraggableDisabled(): boolean {\n        return this._pDraggableDisabled;\n    }\n    set pDraggableDisabled(_pDraggableDisabled:boolean) {\n        this._pDraggableDisabled = _pDraggableDisabled;\n\n        if (this._pDraggableDisabled) {\n            this.unbindMouseListeners();\n        }\n        else {\n            this.el.nativeElement.draggable = true;\n            this.bindMouseListeners();\n        }\n    }\n\n    ngAfterViewInit() {\n        if (!this.pDraggableDisabled) {\n            this.el.nativeElement.draggable = true;\n            this.bindMouseListeners();\n        }\n    }\n\n    bindDragListener() {\n        if (!this.dragListener) {\n            this.zone.runOutsideAngular(() => {\n                this.dragListener = this.drag.bind(this);\n                this.el.nativeElement.addEventListener('drag', this.dragListener);\n            });\n        }\n    }\n\n    unbindDragListener() {\n        if (this.dragListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('drag', this.dragListener);\n                this.dragListener = null;\n            });\n        }\n    }\n\n    bindMouseListeners() {\n        if (!this.mouseDownListener && !this.mouseUpListener) {\n            this.zone.runOutsideAngular(() => {\n                this.mouseDownListener = this.mousedown.bind(this);\n                this.mouseUpListener = this.mouseup.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n                this.el.nativeElement.addEventListener('mouseup', this.mouseUpListener);\n            });\n        }\n    }\n\n    unbindMouseListeners() {\n        if (this.mouseDownListener && this.mouseUpListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n                this.el.nativeElement.removeEventListener('mouseup', this.mouseUpListener);\n                this.mouseDownListener = null;\n                this.mouseUpListener = null;\n            });\n        }\n    }\n\n    drag(event) {\n        this.onDrag.emit(event);\n    }\n\n    @HostListener('dragstart', ['$event'])\n    dragStart(event) {\n        if (this.allowDrag() && !this.pDraggableDisabled) {\n            if (this.dragEffect) {\n                event.dataTransfer.effectAllowed = this.dragEffect;\n            }\n            event.dataTransfer.setData('text', this.scope);\n\n            this.onDragStart.emit(event);\n\n            this.bindDragListener();\n        }\n        else {\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('dragend', ['$event'])\n    dragEnd(event) {\n        this.onDragEnd.emit(event);\n        this.unbindDragListener();\n    }\n\n    mousedown(event) {\n        this.handle = event.target;\n    }\n\n    mouseup(event) {\n        this.handle = null;\n    }\n\n    allowDrag() : boolean {\n        if (this.dragHandle && this.handle)\n            return DomHandler.matches(this.handle, this.dragHandle);\n        else\n            return true;\n    }\n\n    ngOnDestroy() {\n        this.unbindDragListener();\n        this.unbindMouseListeners();\n    }\n\n}\n\n@Directive({\n    selector: '[pDroppable]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Droppable implements AfterViewInit, OnDestroy {\n\n    @Input('pDroppable') scope: string|string[];\n\n    @Input() pDroppableDisabled: boolean;\n\n    @Input() dropEffect: string;\n\n    @Output() onDragEnter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragLeave: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDrop: EventEmitter<any> = new EventEmitter();\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    dragOverListener: any;\n\n    ngAfterViewInit() {\n        if (!this.pDroppableDisabled) {\n            this.bindDragOverListener();\n        }\n    }\n\n    bindDragOverListener() {\n        if (!this.dragOverListener) {\n            this.zone.runOutsideAngular(() => {\n                this.dragOverListener = this.dragOver.bind(this);\n                this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n            });\n        }\n    }\n\n    unbindDragOverListener() {\n        if (this.dragOverListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('dragover', this.dragOverListener);\n                this.dragOverListener = null;\n            });\n        }\n    }\n\n    dragOver(event) {\n        event.preventDefault();\n    }\n\n    @HostListener('drop', ['$event'])\n    drop(event) {\n        if (this.allowDrop(event)) {\n            DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n            event.preventDefault();\n            this.onDrop.emit(event);\n        }\n    }\n\n    @HostListener('dragenter', ['$event'])\n    dragEnter(event) {\n        event.preventDefault();\n\n        if (this.dropEffect) {\n            event.dataTransfer.dropEffect = this.dropEffect;\n        }\n\n        DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');\n        this.onDragEnter.emit(event);\n    }\n\n    @HostListener('dragleave', ['$event'])\n    dragLeave(event) {\n        event.preventDefault();\n\n        DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n        this.onDragLeave.emit(event);\n    }\n\n    allowDrop(event): boolean {\n        let dragScope = event.dataTransfer.getData('text');\n        if (typeof (this.scope) == \"string\" && dragScope == this.scope) {\n            return true;\n        }\n        else if (this.scope instanceof Array) {\n            for(let j = 0; j < this.scope.length; j++) {\n                if (dragScope == this.scope[j]) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n\n    ngOnDestroy() {\n        this.unbindDragOverListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Draggable,Droppable],\n    declarations: [Draggable,Droppable]\n})\nexport class DragDropModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1207 @@
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const DROPDOWN_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Dropdown),
+    multi: true
+};
+class DropdownItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+DropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+DropdownItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DropdownItem, selector: "p-dropdownItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", visible: "visible", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dropdownItem',
+                    template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }] } });
+class Dropdown {
+    constructor(el, renderer, cd, zone, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.scrollHeight = '200px';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.autoDisplayFirst = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.viewPortOffsetTop = 0;
+        this.id = UniqueComponentId();
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(_disabled) {
+        if (_disabled) {
+            this.focused = false;
+            if (this.overlayVisible)
+                this.hide();
+        }
+        this._disabled = _disabled;
+        if (!this.cd.destroyed) {
+            this.cd.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.optionsToDisplay = this.options;
+        this.updateSelectedOption(null);
+        this.labelId = this.id + '_label';
+        this.listId = this.id + '_list';
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.optionsToDisplay = this._options;
+        this.updateSelectedOption(this.value);
+        this.optionsChanged = true;
+        if (this._filterValue && this._filterValue.length) {
+            this.activateFilter();
+        }
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngAfterViewInit() {
+        if (this.editable) {
+            this.updateEditableLabel();
+        }
+    }
+    get label() {
+        return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    get filled() {
+        return this.value || this.value != null || this.value != undefined;
+    }
+    updateEditableLabel() {
+        if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {
+            this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '');
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    onItemClick(event) {
+        const option = event.option;
+        if (!this.isOptionDisabled(option)) {
+            this.selectItem(event, option);
+            this.accessibleViewChild.nativeElement.focus();
+        }
+        setTimeout(() => {
+            this.hide();
+        }, 150);
+    }
+    selectItem(event, option) {
+        if (this.selectedOption != option) {
+            this.selectedOption = option;
+            this.value = this.getOptionValue(option);
+            this.onModelChange(this.value);
+            this.updateEditableLabel();
+            this.onChange.emit({
+                originalEvent: event.originalEvent,
+                value: this.value
+            });
+            if (this.virtualScroll) {
+                setTimeout(() => {
+                    this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;
+                }, 1);
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.optionsChanged && this.overlayVisible) {
+            this.optionsChanged = false;
+            if (this.virtualScroll) {
+                this.updateVirtualScrollSelectedIndex(true);
+            }
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.alignOverlay();
+                }, 1);
+            });
+        }
+        if (this.selectedOptionUpdated && this.itemsWrapper) {
+            if (this.virtualScroll && this.viewPort) {
+                let range = this.viewPort.getRenderedRange();
+                this.updateVirtualScrollSelectedIndex(false);
+                if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                    this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                }
+            }
+            let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+            if (selectedItem) {
+                DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));
+            }
+            this.selectedOptionUpdated = false;
+        }
+    }
+    writeValue(value) {
+        if (this.filter) {
+            this.resetFilter();
+        }
+        this.value = value;
+        this.updateSelectedOption(value);
+        this.updateEditableLabel();
+        this.cd.markForCheck();
+    }
+    resetFilter() {
+        this._filterValue = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+        this.optionsToDisplay = this.options;
+    }
+    updateSelectedOption(val) {
+        this.selectedOption = this.findOption(val, this.optionsToDisplay);
+        if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {
+            this.selectedOption = this.optionsToDisplay[0];
+            this.value = this.getOptionValue(this.selectedOption);
+            this.onModelChange(this.value);
+        }
+        this.selectedOptionUpdated = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onMouseclick(event) {
+        if (this.disabled || this.readonly || this.isInputClick(event)) {
+            return;
+        }
+        this.onClick.emit(event);
+        this.accessibleViewChild.nativeElement.focus();
+        if (this.overlayVisible)
+            this.hide();
+        else
+            this.show();
+        this.cd.detectChanges();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    isInputClick(event) {
+        return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||
+            event.target.isSameNode(this.accessibleViewChild.nativeElement) ||
+            (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isEmpty() {
+        return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);
+    }
+    onEditableInputClick() {
+        this.bindDocumentClickListener();
+    }
+    onEditableInputFocus(event) {
+        this.focused = true;
+        this.hide();
+        this.onFocus.emit(event);
+    }
+    onEditableInputChange(event) {
+        this.value = event.target.value;
+        this.updateSelectedOption(this.value);
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';
+                this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.options && this.options.length) {
+                    if (!this.virtualScroll) {
+                        let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');
+                        if (selectedListItem) {
+                            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'start' });
+                        }
+                    }
+                }
+                if (this.filterViewChild && this.filterViewChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterViewChild.nativeElement.focus();
+                    }
+                }
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    scrollToSelectedVirtualScrollElement() {
+        if (!this.virtualAutoScrolled) {
+            if (this.viewPortOffsetTop) {
+                this.viewPort.scrollToOffset(this.viewPortOffsetTop);
+            }
+            else if (this.virtualScrollSelectedIndex > -1) {
+                this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+            }
+        }
+        this.virtualAutoScrolled = true;
+    }
+    updateVirtualScrollSelectedIndex(resetOffset) {
+        if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {
+            if (resetOffset) {
+                this.viewPortOffsetTop = 0;
+            }
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        if (this.filter && this.resetFilterOnHide) {
+            this.resetFilter();
+        }
+        if (this.virtualScroll) {
+            this.virtualAutoScrolled = false;
+        }
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onBlur.emit(event);
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    findPrevEnabledOption(index) {
+        let prevEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index - 1); 0 <= i; i--) {
+                let option = this.optionsToDisplay[i];
+                if (option.disabled) {
+                    continue;
+                }
+                else {
+                    prevEnabledOption = option;
+                    break;
+                }
+            }
+            if (!prevEnabledOption) {
+                for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        prevEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return prevEnabledOption;
+    }
+    findNextEnabledOption(index) {
+        let nextEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {
+                let option = this.optionsToDisplay[i];
+                if (this.isOptionDisabled(option)) {
+                    continue;
+                }
+                else {
+                    nextEnabledOption = option;
+                    break;
+                }
+            }
+            if (!nextEnabledOption) {
+                for (let i = 0; i < index; i++) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        nextEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return nextEnabledOption;
+    }
+    onKeydown(event, search) {
+        if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {
+            return;
+        }
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                }
+                else {
+                    if (this.group) {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        if (selectedItemIndex !== -1) {
+                            let nextItemIndex = selectedItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);
+                                this.selectedOptionUpdated = true;
+                            }
+                            else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                        else {
+                            if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);
+                            }
+                        }
+                    }
+                    else {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);
+                        if (nextEnabledOption) {
+                            this.selectItem(event, nextEnabledOption);
+                            this.selectedOptionUpdated = true;
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                if (this.group) {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    if (selectedItemIndex !== -1) {
+                        let prevItemIndex = selectedItemIndex.itemIndex - 1;
+                        if (prevItemIndex >= 0) {
+                            this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);
+                            this.selectedOptionUpdated = true;
+                        }
+                        else if (prevItemIndex < 0) {
+                            let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];
+                            if (prevGroup) {
+                                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                    }
+                }
+                else {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);
+                    if (prevEnabledOption) {
+                        this.selectItem(event, prevEnabledOption);
+                        this.selectedOptionUpdated = true;
+                    }
+                }
+                event.preventDefault();
+                break;
+            //space
+            case 32:
+                if (search) {
+                    if (!this.overlayVisible) {
+                        this.show();
+                    }
+                    else {
+                        this.hide();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {
+                    this.hide();
+                }
+                else if (!this.overlayVisible) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+            //search item based on keyboard input
+            default:
+                if (search && !event.metaKey) {
+                    this.search(event);
+                }
+                break;
+        }
+    }
+    search(event) {
+        if (this.searchTimeout) {
+            clearTimeout(this.searchTimeout);
+        }
+        const char = event.key;
+        this.previousSearchChar = this.currentSearchChar;
+        this.currentSearchChar = char;
+        if (this.previousSearchChar === this.currentSearchChar)
+            this.searchValue = this.currentSearchChar;
+        else
+            this.searchValue = this.searchValue ? this.searchValue + char : char;
+        let newOption;
+        if (this.group) {
+            let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : { groupIndex: 0, itemIndex: 0 };
+            newOption = this.searchOptionWithinGroup(searchIndex);
+        }
+        else {
+            let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+            newOption = this.searchOption(++searchIndex);
+        }
+        if (newOption && !this.isOptionDisabled(newOption)) {
+            this.selectItem(event, newOption);
+            this.selectedOptionUpdated = true;
+        }
+        this.searchTimeout = setTimeout(() => {
+            this.searchValue = null;
+        }, 250);
+    }
+    searchOption(index) {
+        let option;
+        if (this.searchValue) {
+            option = this.searchOptionInRange(index, this.optionsToDisplay.length);
+            if (!option) {
+                option = this.searchOptionInRange(0, index);
+            }
+        }
+        return option;
+    }
+    searchOptionInRange(start, end) {
+        for (let i = start; i < end; i++) {
+            let opt = this.optionsToDisplay[i];
+            if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                return opt;
+            }
+        }
+        return null;
+    }
+    searchOptionWithinGroup(index) {
+        let option;
+        if (this.searchValue) {
+            for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {
+                for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {
+                    let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                    if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                        return opt;
+                    }
+                }
+            }
+            if (!option) {
+                for (let i = 0; i <= index.groupIndex; i++) {
+                    for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {
+                        let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                        if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                            return opt;
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+    findOptionIndex(val, opts) {
+        let index = -1;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    findOption(val, opts, inGroup) {
+        if (this.group && !inGroup) {
+            let opt;
+            if (opts && opts.length) {
+                for (let optgroup of opts) {
+                    opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);
+                    if (opt) {
+                        break;
+                    }
+                }
+            }
+            return opt;
+        }
+        else {
+            let index = this.findOptionIndex(val, opts);
+            return (index != -1) ? opts[index] : null;
+        }
+    }
+    onFilterInputChange(event) {
+        let inputValue = event.target.value;
+        if (inputValue && inputValue.length) {
+            this._filterValue = inputValue;
+            this.activateFilter();
+        }
+        else {
+            this._filterValue = null;
+            this.optionsToDisplay = this.options;
+        }
+        this.optionsChanged = true;
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+    }
+    activateFilter() {
+        let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+        if (this.options && this.options.length) {
+            if (this.group) {
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push(Object.assign(Object.assign({}, optgroup), { [this.optionGroupChildren]: filteredSubOptions }));
+                    }
+                }
+                this.optionsToDisplay = filteredGroups;
+            }
+            else {
+                this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+            }
+            this.optionsChanged = true;
+        }
+    }
+    applyFocus() {
+        if (this.editable)
+            DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();
+        else
+            DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();
+    }
+    focus() {
+        this.applyFocus();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                    this.unbindDocumentClickListener();
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isTouchDevice()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event) => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    clear(event) {
+        this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+        this.updateSelectedOption(this.value);
+        this.updateEditableLabel();
+        this.onClear.emit(event);
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.itemsWrapper = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dropdown, selector: "p-dropdown", inputs: { scrollHeight: "scrollHeight", filter: "filter", name: "name", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", readonly: "readonly", required: "required", editable: "editable", appendTo: "appendTo", tabindex: "tabindex", placeholder: "placeholder", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", inputId: "inputId", selectId: "selectId", dataKey: "dataKey", filterBy: "filterBy", autofocus: "autofocus", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", autoDisplayFirst: "autoDisplayFirst", group: "group", showClear: "showClear", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", virtualScroll: "virtualScroll", itemSize: "itemSize", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", ariaLabelledBy: "ariaLabelledBy", filterMatchMode: "filterMatchMode", maxlength: "maxlength", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", disabled: "disabled", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onShow: "onShow", onHide: "onHide", onClear: "onClear" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "editableInputViewChild", first: true, predicate: ["editableInput"], descendants: true }], ngImport: i0, template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"], components: [{ type: DropdownItem, selector: "p-dropdownItem", inputs: ["option", "selected", "label", "disabled", "visible", "itemSize", "template"], outputs: ["onClick"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dropdown', template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { scrollHeight: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], editable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], selectId: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], autoDisplayFirst: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], showClear: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], editableInputViewChild: [{
+                type: ViewChild,
+                args: ['editableInput']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], disabled: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class DropdownModule {
+}
+DropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, declarations: [Dropdown, DropdownItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [Dropdown, SharedModule, ScrollingModule] });
+DropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [Dropdown, SharedModule, ScrollingModule],
+                    declarations: [Dropdown, DropdownItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DROPDOWN_VALUE_ACCESSOR, Dropdown, DropdownItem, DropdownModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dropdown.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dropdown.mjs","sources":["../../src/app/components/dropdown/dropdown.ts","../../src/app/components/dropdown/primeng-dropdown.ts"],"sourcesContent":["import {ScrollingModule, CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {NgModule,Component,ElementRef,OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,Input,Output,Renderer2,EventEmitter,ContentChildren,\n        QueryList,ViewChild,TemplateRef,forwardRef,ChangeDetectorRef,NgZone,ViewRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {OverlayService, PrimeNGConfig, SelectItem, TranslationKeys} from 'primeng/api';\nimport {SharedModule,PrimeTemplate, FilterService} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils,UniqueComponentId,ZIndexUtils} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {RippleModule} from 'primeng/ripple';\n\nexport const DROPDOWN_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Dropdown),\n  multi: true\n};\n\n@Component({\n    selector: 'p-dropdownItem',\n    template: `\n        <li (click)=\"onOptionClick($event)\" role=\"option\" pRipple\n            [attr.aria-label]=\"label\" [attr.aria-selected]=\"selected\"\n            [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"selected ? 'p-highlighted-option':''\"\n            [ngClass]=\"{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}\">\n            <span *ngIf=\"!template\">{{label||'empty'}}</span>\n            <ng-container *ngTemplateOutlet=\"template; context: {$implicit: option}\"></ng-container>\n        </li>\n    `,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DropdownItem {\n\n    @Input() option: SelectItem;\n\n    @Input() selected: boolean;\n\n    @Input() label: string;\n\n    @Input() disabled: boolean;\n\n    @Input() visible: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    onOptionClick(event: Event) {\n        this.onClick.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n}\n\n@Component({\n    selector: 'p-dropdown',\n    template: `\n         <div #container [ngClass]=\"{'p-dropdown p-component':true,\n            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}\"\n            (click)=\"onMouseclick($event)\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #in [attr.id]=\"inputId\" type=\"text\" readonly (focus)=\"onInputFocus($event)\" aria-haspopup=\"listbox\" [attr.placeholder]=\"placeholder\"\n                    aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\" (blur)=\"onInputBlur($event)\" (keydown)=\"onKeydown($event, true)\"\n                    [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.autofocus]=\"autofocus\" [attr.aria-activedescendant]=\"overlayVisible ? 'p-highlighted-option' : labelId\" role=\"listbox\">\n            </div>\n            <span [attr.id]=\"labelId\" [ngClass]=\"{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}\" *ngIf=\"!editable && (label != null)\" [pTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition\" [positionStyle]=\"tooltipPositionStyle\" [tooltipStyleClass]=\"tooltipStyleClass\">\n                <ng-container *ngIf=\"!selectedItemTemplate\">{{label||'empty'}}</ng-container>\n                <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: selectedOption}\"></ng-container>\n            </span>\n            <span [ngClass]=\"{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}\" *ngIf=\"!editable && (label == null)\">{{placeholder||'empty'}}</span>\n            <input #editableInput type=\"text\" [attr.maxlength]=\"maxlength\" class=\"p-dropdown-label p-inputtext\" *ngIf=\"editable\" [disabled]=\"disabled\" [attr.placeholder]=\"placeholder\"\n                aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" (click)=\"onEditableInputClick()\" (input)=\"onEditableInputChange($event)\" (focus)=\"onEditableInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n            <i class=\"p-dropdown-clear-icon pi pi-times\" (click)=\"clear($event)\" *ngIf=\"value != null && showClear && !disabled\"></i>\n            <div class=\"p-dropdown-trigger\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\">\n                <span class=\"p-dropdown-trigger-icon\" [ngClass]=\"dropdownIcon\"></span>\n            </div>\n            <div *ngIf=\"overlayVisible\" [ngClass]=\"'p-dropdown-panel p-component'\" (click)=\"onOverlayClick($event)\" [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.start)=\"onOverlayAnimationEnd($event)\"onOverlayAnimationEnd [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <div class=\"p-dropdown-header\" *ngIf=\"filter\" >\n                    <div class=\"p-dropdown-filter-container\" (click)=\"$event.stopPropagation()\">\n                        <input #filter type=\"text\" autocomplete=\"off\" [value]=\"filterValue||''\" class=\"p-dropdown-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n                        (keydown.enter)=\"$event.preventDefault()\" (keydown)=\"onKeydown($event, false)\" (input)=\"onFilterInputChange($event)\" [attr.aria-label]=\"ariaFilterLabel\" [attr.aria-activedescendant]=\"overlayVisible ? 'p-highlighted-option' : labelId\">\n                        <span class=\"p-dropdown-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <div class=\"p-dropdown-items-wrapper\" [style.max-height]=\"virtualScroll ? 'auto' : (scrollHeight||'auto')\">\n                    <ul [attr.id]=\"listId\" class=\"p-dropdown-items\" [ngClass]=\"{'p-dropdown-virtualscroll': virtualScroll}\" role=\"listbox\">\n                        <ng-container *ngIf=\"group\">\n                            <ng-template ngFor let-optgroup [ngForOf]=\"optionsToDisplay\">\n                                <li class=\"p-dropdown-item-group\">\n                                    <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                                </li>\n                                <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}\"></ng-container>\n                            </ng-template>\n                        </ng-container>\n                        <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}\"></ng-container>\n                        </ng-container>\n                        <ng-template #itemslist let-options let-selectedOption=\"selectedOption\">\n                            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                                <ng-template ngFor let-option let-i=\"index\" [ngForOf]=\"options\">\n                                    <p-dropdownItem [option]=\"option\" [selected]=\"selectedOption == option\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\"\n                                                    (onClick)=\"onItemClick($event)\"\n                                                    [template]=\"itemTemplate\"></p-dropdownItem>\n                                </ng-template>\n                            </ng-container>\n                            <ng-template #virtualScrollList>\n                                <cdk-virtual-scroll-viewport (scrolledIndexChange)=\"scrollToSelectedVirtualScrollElement()\" #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && optionsToDisplay && optionsToDisplay.length\">\n                                    <ng-container *cdkVirtualFor=\"let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                        <p-dropdownItem [option]=\"option\" [selected]=\"selectedOption == option\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\"\n                                                                   (onClick)=\"onItemClick($event)\"\n                                                                   [template]=\"itemTemplate\"></p-dropdownItem>\n                                    </ng-container>\n                                </cdk-virtual-scroll-viewport>\n                            </ng-template>\n                        </ng-template>\n                        <li *ngIf=\"filterValue && isEmpty()\" class=\"p-dropdown-empty-message\">\n                            <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                                {{emptyFilterMessageLabel}}\n                            </ng-container>\n                            <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                        </li>\n                        <li *ngIf=\"!filterValue && isEmpty()\" class=\"p-dropdown-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ul>\n                </div>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n            ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    providers: [DROPDOWN_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dropdown.css']\n})\nexport class Dropdown implements OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,ControlValueAccessor {\n\n    @Input() scrollHeight: string = '200px';\n\n    @Input() filter: boolean;\n\n    @Input() name: string;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() readonly: boolean;\n\n    @Input() required: boolean;\n\n    @Input() editable: boolean;\n\n    @Input() appendTo: any;\n\n    @Input() tabindex: number;\n\n    @Input() placeholder: string;\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() inputId: string;\n\n    @Input() selectId: string;\n\n    @Input() dataKey: string;\n\n    @Input() filterBy: string;\n\n    @Input() autofocus: boolean;\n\n    @Input() resetFilterOnHide: boolean = false;\n\n    @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() autoDisplayFirst: boolean = true;\n\n    @Input() group: boolean;\n\n    @Input() showClear: boolean;\n\n    @Input() emptyFilterMessage: string = '';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() maxlength: number;\n\n    @Input() tooltip: string = '';\n\n    @Input() tooltipPosition: string = 'right';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() autofocusFilter: boolean = true;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('filter') filterViewChild: ElementRef;\n\n    @ViewChild('in') accessibleViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n    @ViewChild('editableInput') editableInputViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    private _disabled: boolean;\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    };\n\n    set disabled(_disabled: boolean) {\n        if (_disabled) {\n            this.focused = false;\n\n            if (this.overlayVisible)\n                this.hide();\n        }\n\n        this._disabled = _disabled;\n        if (!(this.cd as ViewRef).destroyed) {\n            this.cd.detectChanges();\n        }\n    }\n\n    overlay: HTMLDivElement;\n\n    itemsWrapper: HTMLDivElement;\n\n    itemTemplate: TemplateRef<any>;\n\n    groupTemplate: TemplateRef<any>;\n\n    selectedItemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    emptyFilterTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    selectedOption: any;\n\n    _options: any[];\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    optionsToDisplay: any[];\n\n    hover: boolean;\n\n    focused: boolean;\n\n    overlayVisible: boolean;\n\n    documentClickListener: any;\n\n    scrollHandler: any;\n\n    optionsChanged: boolean;\n\n    panel: HTMLDivElement;\n\n    dimensionsUpdated: boolean;\n\n    hoveredItem: any;\n\n    selectedOptionUpdated: boolean;\n\n    _filterValue: string;\n\n    searchValue: string;\n\n    searchIndex: number;\n\n    searchTimeout: any;\n\n    previousSearchChar: string;\n\n    currentSearchChar: string;\n\n    documentResizeListener: any;\n\n    virtualAutoScrolled: boolean;\n\n    virtualScrollSelectedIndex: number;\n\n    viewPortOffsetTop: number = 0;\n\n    preventModelTouched: boolean;\n\n    id: string = UniqueComponentId();\n\n    labelId: string;\n\n    listId: string;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public zone: NgZone, public filterService: FilterService, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'selectedItem':\n                    this.selectedItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.optionsToDisplay = this.options;\n        this.updateSelectedOption(null);\n        this.labelId = this.id + '_label';\n        this.listId = this.id + '_list';\n    }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n        this.optionsToDisplay = this._options;\n        this.updateSelectedOption(this.value);\n        this.optionsChanged = true;\n\n        if (this._filterValue && this._filterValue.length) {\n            this.activateFilter();\n        }\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    ngAfterViewInit() {\n        if (this.editable) {\n            this.updateEditableLabel();\n        }\n    }\n\n    get label(): string {\n        return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    get filled() {\n        return this.value || this.value != null || this.value != undefined;\n    }\n\n    updateEditableLabel(): void {\n        if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {\n            this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value||'');\n        }\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    onItemClick(event) {\n        const option = event.option;\n\n        if (!this.isOptionDisabled(option)) {\n            this.selectItem(event, option);\n            this.accessibleViewChild.nativeElement.focus();\n        }\n\n        setTimeout(() => {\n            this.hide();\n        }, 150);\n    }\n\n    selectItem(event, option) {\n        if (this.selectedOption != option) {\n            this.selectedOption = option;\n            this.value = this.getOptionValue(option);\n\n            this.onModelChange(this.value);\n            this.updateEditableLabel();\n            this.onChange.emit({\n                originalEvent: event.originalEvent,\n                value: this.value\n            });\n\n            if (this.virtualScroll) {\n                setTimeout(() => {\n                    this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;\n                }, 1);\n            }\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (this.optionsChanged && this.overlayVisible) {\n            this.optionsChanged = false;\n\n            if (this.virtualScroll) {\n                this.updateVirtualScrollSelectedIndex(true);\n            }\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.alignOverlay();\n                }, 1);\n            });\n        }\n\n        if (this.selectedOptionUpdated && this.itemsWrapper) {\n            if (this.virtualScroll && this.viewPort) {\n                let range = this.viewPort.getRenderedRange();\n                this.updateVirtualScrollSelectedIndex(false);\n\n                if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n                    this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n                }\n            }\n\n            let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n            if (selectedItem) {\n                DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));\n            }\n            this.selectedOptionUpdated = false;\n        }\n    }\n\n    writeValue(value: any): void {\n        if (this.filter) {\n            this.resetFilter();\n        }\n\n        this.value = value;\n        this.updateSelectedOption(value);\n        this.updateEditableLabel();\n        this.cd.markForCheck();\n    }\n\n    resetFilter(): void {\n        this._filterValue = null;\n\n        if (this.filterViewChild && this.filterViewChild.nativeElement) {\n            this.filterViewChild.nativeElement.value = '';\n        }\n\n        this.optionsToDisplay = this.options;\n    }\n\n    updateSelectedOption(val: any): void {\n        this.selectedOption = this.findOption(val, this.optionsToDisplay);\n\n        if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {\n            this.selectedOption = this.optionsToDisplay[0];\n            this.value = this.getOptionValue(this.selectedOption);\n            this.onModelChange(this.value);\n        }\n\n        this.selectedOptionUpdated = true;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onMouseclick(event) {\n        if (this.disabled || this.readonly || this.isInputClick(event)) {\n            return;\n        }\n\n        this.onClick.emit(event);\n        this.accessibleViewChild.nativeElement.focus();\n\n        if (this.overlayVisible)\n            this.hide();\n        else\n            this.show();\n\n        this.cd.detectChanges();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    isInputClick(event): boolean {\n        return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||\n            event.target.isSameNode(this.accessibleViewChild.nativeElement) ||\n            (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));\n    }\n\n    isOutsideClicked(event: Event): boolean {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(<Node> event.target)));\n    }\n\n    isEmpty() {\n        return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);\n    }\n\n    onEditableInputClick() {\n        this.bindDocumentClickListener();\n    }\n\n    onEditableInputFocus(event) {\n        this.focused = true;\n        this.hide();\n        this.onFocus.emit(event);\n    }\n\n    onEditableInputChange(event) {\n        this.value = event.target.value;\n        this.updateSelectedOption(this.value);\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';\n                this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);\n                this.appendOverlay();\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n                }\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                if (this.options && this.options.length) {\n                    if (!this.virtualScroll) {\n                        let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');\n\n                        if (selectedListItem) {\n                            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'start' });\n                        }\n                    }\n                }\n\n                if (this.filterViewChild && this.filterViewChild.nativeElement) {\n                    this.preventModelTouched = true;\n\n                    if (this.autofocusFilter) {\n                        this.filterViewChild.nativeElement.focus();\n                    }\n                }\n\n                this.onShow.emit(event);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit(event);\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    scrollToSelectedVirtualScrollElement() {\n        if (!this.virtualAutoScrolled) {\n            if (this.viewPortOffsetTop) {\n                this.viewPort.scrollToOffset(this.viewPortOffsetTop);\n            }\n            else if (this.virtualScrollSelectedIndex > -1) {\n                this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n            }\n        }\n\n        this.virtualAutoScrolled = true;\n    }\n\n    updateVirtualScrollSelectedIndex(resetOffset) {\n        if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {\n            if (resetOffset) {\n                this.viewPortOffsetTop = 0;\n            }\n\n            this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';\n            }\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n\n        if (this.filter && this.resetFilterOnHide) {\n            this.resetFilter();\n        }\n\n        if (this.virtualScroll) {\n            this.virtualAutoScrolled = false;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    alignOverlay() {\n        if (this.overlay) {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);\n        }\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n        this.onBlur.emit(event);\n\n        if (!this.preventModelTouched) {\n            this.onModelTouched();\n        }\n        this.preventModelTouched = false;\n    }\n\n    findPrevEnabledOption(index) {\n        let prevEnabledOption;\n\n        if (this.optionsToDisplay && this.optionsToDisplay.length) {\n            for (let i = (index - 1); 0 <= i; i--) {\n                let option = this.optionsToDisplay[i];\n                if (option.disabled) {\n                    continue;\n                }\n                else {\n                    prevEnabledOption = option;\n                    break;\n                }\n            }\n\n            if (!prevEnabledOption) {\n                for (let i = this.optionsToDisplay.length - 1; i >= index ; i--) {\n                    let option = this.optionsToDisplay[i];\n                    if (this.isOptionDisabled(option)) {\n                        continue;\n                    }\n                    else {\n                        prevEnabledOption = option;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return prevEnabledOption;\n    }\n\n    findNextEnabledOption(index) {\n        let nextEnabledOption;\n\n        if (this.optionsToDisplay && this.optionsToDisplay.length) {\n            for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {\n                let option = this.optionsToDisplay[i];\n                if (this.isOptionDisabled(option)) {\n                    continue;\n                }\n                else {\n                    nextEnabledOption = option;\n                    break;\n                }\n            }\n\n            if (!nextEnabledOption) {\n                for (let i = 0; i < index; i++) {\n                    let option = this.optionsToDisplay[i];\n                    if (this.isOptionDisabled(option)) {\n                        continue;\n                    }\n                    else {\n                        nextEnabledOption = option;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return nextEnabledOption;\n    }\n\n    onKeydown(event: KeyboardEvent, search: boolean) {\n        if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {\n            return;\n        }\n\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                }\n                else {\n                    if (this.group) {\n                        let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n\n                        if (selectedItemIndex !== -1) {\n                            let nextItemIndex = selectedItemIndex.itemIndex + 1;\n                            if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);\n                                this.selectedOptionUpdated = true;\n                            }\n                            else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);\n                                this.selectedOptionUpdated = true;\n                            }\n                        }\n                        else {\n                            if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);\n                            }\n                        }\n                    }\n                    else {\n                        let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                        let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);\n                        if (nextEnabledOption) {\n                            this.selectItem(event, nextEnabledOption);\n                            this.selectedOptionUpdated = true;\n                        }\n                    }\n                }\n\n                event.preventDefault();\n\n            break;\n\n            //up\n            case 38:\n                if (this.group) {\n                    let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                    if (selectedItemIndex !== -1) {\n                        let prevItemIndex = selectedItemIndex.itemIndex - 1;\n                        if (prevItemIndex >= 0) {\n                            this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);\n                            this.selectedOptionUpdated = true;\n                        }\n                        else if (prevItemIndex < 0) {\n                            let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];\n                            if (prevGroup) {\n                                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);\n                                this.selectedOptionUpdated = true;\n                            }\n                        }\n                    }\n                }\n                else {\n                    let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                    let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);\n                    if (prevEnabledOption) {\n                        this.selectItem(event, prevEnabledOption);\n                        this.selectedOptionUpdated = true;\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //space\n            case 32:\n                if (search) {\n                    if (!this.overlayVisible){\n                        this.show();\n                    }\n                    else {\n                        this.hide();\n                    }\n\n                    event.preventDefault();\n                }\n            break;\n\n            //enter\n            case 13:\n                if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {\n                    this.hide();\n                }\n\n                else if (!this.overlayVisible) {\n                    this.show();\n                }\n\n                event.preventDefault();\n            break;\n\n            //escape and tab\n            case 27:\n            case 9:\n                this.hide();\n            break;\n\n            //search item based on keyboard input\n            default:\n                if (search && !event.metaKey) {\n                    this.search(event);\n                }\n            break;\n        }\n    }\n\n    search(event: KeyboardEvent) {\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        const char = event.key;\n        this.previousSearchChar = this.currentSearchChar;\n        this.currentSearchChar = char;\n\n        if (this.previousSearchChar === this.currentSearchChar)\n            this.searchValue = this.currentSearchChar;\n        else\n            this.searchValue = this.searchValue ? this.searchValue + char : char;\n\n        let newOption;\n        if (this.group) {\n            let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : {groupIndex: 0, itemIndex: 0};\n            newOption = this.searchOptionWithinGroup(searchIndex);\n        }\n        else {\n            let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n            newOption = this.searchOption(++searchIndex);\n        }\n\n        if (newOption && !this.isOptionDisabled(newOption)) {\n            this.selectItem(event, newOption);\n            this.selectedOptionUpdated = true;\n        }\n\n        this.searchTimeout = setTimeout(() => {\n            this.searchValue = null;\n        }, 250);\n    }\n\n    searchOption(index) {\n        let option;\n\n        if (this.searchValue) {\n            option = this.searchOptionInRange(index, this.optionsToDisplay.length);\n\n            if (!option) {\n                option = this.searchOptionInRange(0, index);\n            }\n        }\n\n        return option;\n    }\n\n    searchOptionInRange(start, end) {\n        for (let i = start; i < end; i++) {\n            let opt = this.optionsToDisplay[i];\n            if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                return opt;\n            }\n        }\n\n        return null;\n    }\n\n    searchOptionWithinGroup(index) {\n        let option;\n\n        if (this.searchValue) {\n            for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {\n                for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {\n                    let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n                    if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                        return opt;\n                    }\n                }\n            }\n\n            if (!option) {\n                for (let i = 0; i <= index.groupIndex; i++) {\n                    for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {\n                        let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n                        if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                            return opt;\n                        }\n                    }\n                }\n            }\n        }\n\n        return null;\n    }\n\n    findOptionIndex(val: any, opts: any[]): number {\n        let index: number = -1;\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    findOptionGroupIndex(val: any, opts: any[]): any {\n        let groupIndex, itemIndex;\n\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                groupIndex = i;\n                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n                if (itemIndex !== -1) {\n                    break;\n                }\n            }\n        }\n\n        if (itemIndex !== -1) {\n            return {groupIndex: groupIndex, itemIndex: itemIndex};\n        }\n        else {\n            return -1;\n        }\n    }\n\n    findOption(val: any, opts: any[], inGroup?: boolean): SelectItem {\n        if (this.group && !inGroup) {\n            let opt: SelectItem;\n            if (opts && opts.length) {\n                for (let optgroup of opts) {\n                    opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);\n                    if (opt) {\n                        break;\n                    }\n                }\n            }\n            return opt;\n        }\n        else {\n            let index: number = this.findOptionIndex(val, opts);\n            return (index != -1) ? opts[index] : null;\n        }\n    }\n\n    onFilterInputChange(event): void {\n        let inputValue = event.target.value;\n        if (inputValue && inputValue.length) {\n            this._filterValue = inputValue;\n            this.activateFilter();\n        }\n        else {\n            this._filterValue = null;\n            this.optionsToDisplay = this.options;\n        }\n\n        this.optionsChanged = true;\n        this.onFilter.emit({originalEvent: event, filter: this._filterValue});\n    }\n\n    activateFilter() {\n        let searchFields: string[] = (this.filterBy || this.optionLabel || 'label').split(',');\n\n        if (this.options && this.options.length) {\n            if (this.group) {\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this.optionsToDisplay = filteredGroups;\n            }\n            else {\n                this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n            }\n\n            this.optionsChanged = true;\n        }\n    }\n\n    applyFocus(): void {\n        if (this.editable)\n            DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();\n        else\n            DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();\n    }\n\n    focus(): void {\n        this.applyFocus();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.isOutsideClicked(event)) {\n                    this.hide();\n                    this.unbindDocumentClickListener();\n                }\n\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n            this.hide();\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event: any) => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    clear(event: Event) {\n        this.value = null;\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n        this.updateSelectedOption(this.value);\n        this.updateEditableLabel();\n        this.onClear.emit(event);\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.itemsWrapper = null;\n        this.onModelTouched();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ScrollingModule,TooltipModule,RippleModule],\n    exports: [Dropdown,SharedModule,ScrollingModule],\n    declarations: [Dropdown,DropdownItem]\n})\nexport class DropdownModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,391 @@
+import * as i0 from '@angular/core';
+import { Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, NgModule, Injectable } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i4 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import { Subject } from 'rxjs';
+import * as i3 from 'primeng/api';
+
+class DynamicDialogContent {
+    constructor(viewContainerRef) {
+        this.viewContainerRef = viewContainerRef;
+    }
+}
+DynamicDialogContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
+DynamicDialogContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogContent, selector: "[pDynamicDialogContent]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDynamicDialogContent]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
+
+class DynamicDialogConfig {
+}
+
+class DynamicDialogRef {
+    constructor() {
+        this._onClose = new Subject();
+        this.onClose = this._onClose.asObservable();
+        this._onDestroy = new Subject();
+        this.onDestroy = this._onDestroy.asObservable();
+    }
+    close(result) {
+        this._onClose.next(result);
+    }
+    destroy() {
+        this._onDestroy.next(null);
+    }
+}
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class DynamicDialogComponent {
+    constructor(componentFactoryResolver, cd, renderer, config, dialogRef, zone, primeNGConfig) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.cd = cd;
+        this.renderer = renderer;
+        this.config = config;
+        this.dialogRef = dialogRef;
+        this.zone = zone;
+        this.primeNGConfig = primeNGConfig;
+        this.visible = true;
+        this.transformOptions = "scale(0.7)";
+    }
+    ngAfterViewInit() {
+        this.loadChildComponent(this.childComponentType);
+        this.cd.detectChanges();
+    }
+    loadChildComponent(componentType) {
+        let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);
+        let viewContainerRef = this.insertionPoint.viewContainerRef;
+        viewContainerRef.clear();
+        this.componentRef = viewContainerRef.createComponent(componentFactory);
+    }
+    moveOnTop() {
+        if (this.config.autoZIndex !== false) {
+            ZIndexUtils.set('modal', this.container, (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                if (this.config.modal !== false) {
+                    this.enableModality();
+                }
+                this.focus();
+                break;
+            case 'void':
+                if (this.config.modal !== false) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            this.onContainerDestroy();
+            this.dialogRef.destroy();
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        if (this.container && this.config.autoZIndex !== false) {
+            ZIndexUtils.clear(this.container);
+        }
+        if (this.config.modal !== false) {
+            this.disableModality();
+        }
+        this.container = null;
+    }
+    close() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    hide() {
+        if (this.dialogRef) {
+            this.dialogRef.close();
+        }
+    }
+    enableModality() {
+        if (this.config.closable !== false && this.config.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+        if (this.config.modal !== false) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.config.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.config.modal !== false) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 9) {
+            event.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.container);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (event.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    bindGlobalListeners() {
+        this.bindDocumentKeydownListener();
+        if (this.config.closeOnEscape !== false && this.config.closable !== false) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentKeydownListener();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentKeydownListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentKeydownListener = this.onKeydown.bind(this);
+            window.document.addEventListener('keydown', this.documentKeydownListener);
+        });
+    }
+    unbindDocumentKeydownListener() {
+        if (this.documentKeydownListener) {
+            window.document.removeEventListener('keydown', this.documentKeydownListener);
+            this.documentKeydownListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {
+                    this.hide();
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.onContainerDestroy();
+        if (this.componentRef) {
+            this.componentRef.destroy();
+        }
+    }
+}
+DynamicDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: DynamicDialogConfig }, { token: DynamicDialogRef }, { token: i0.NgZone }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DynamicDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogComponent, selector: "p-dynamicDialog", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "insertionPoint", first: true, predicate: DynamicDialogContent, descendants: true }, { propertyName: "maskViewChild", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return DynamicDialogContent; }), selector: "[pDynamicDialogContent]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dynamicDialog', template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: DynamicDialogConfig }, { type: DynamicDialogRef }, { type: i0.NgZone }, { type: i3.PrimeNGConfig }]; }, propDecorators: { insertionPoint: [{
+                type: ViewChild,
+                args: [DynamicDialogContent]
+            }], maskViewChild: [{
+                type: ViewChild,
+                args: ['mask']
+            }] } });
+class DynamicDialogModule {
+}
+DynamicDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DynamicDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, declarations: [DynamicDialogComponent, DynamicDialogContent], imports: [CommonModule] });
+DynamicDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    declarations: [DynamicDialogComponent, DynamicDialogContent],
+                    entryComponents: [DynamicDialogComponent]
+                }]
+        }] });
+
+class DynamicDialogInjector {
+    constructor(_parentInjector, _additionalTokens) {
+        this._parentInjector = _parentInjector;
+        this._additionalTokens = _additionalTokens;
+    }
+    get(token, notFoundValue, flags) {
+        const value = this._additionalTokens.get(token);
+        if (value)
+            return value;
+        return this._parentInjector.get(token, notFoundValue);
+    }
+}
+
+class DialogService {
+    constructor(componentFactoryResolver, appRef, injector) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.appRef = appRef;
+        this.injector = injector;
+        this.dialogComponentRefMap = new Map();
+    }
+    open(componentType, config) {
+        const dialogRef = this.appendDialogComponentToBody(config);
+        this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;
+        return dialogRef;
+    }
+    appendDialogComponentToBody(config) {
+        const map = new WeakMap();
+        map.set(DynamicDialogConfig, config);
+        const dialogRef = new DynamicDialogRef();
+        map.set(DynamicDialogRef, dialogRef);
+        const sub = dialogRef.onClose.subscribe(() => {
+            this.dialogComponentRefMap.get(dialogRef).instance.close();
+        });
+        const destroySub = dialogRef.onDestroy.subscribe(() => {
+            this.removeDialogComponentFromBody(dialogRef);
+            destroySub.unsubscribe();
+            sub.unsubscribe();
+        });
+        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicDialogComponent);
+        const componentRef = componentFactory.create(new DynamicDialogInjector(this.injector, map));
+        this.appRef.attachView(componentRef.hostView);
+        const domElem = componentRef.hostView.rootNodes[0];
+        document.body.appendChild(domElem);
+        this.dialogComponentRefMap.set(dialogRef, componentRef);
+        return dialogRef;
+    }
+    removeDialogComponentFromBody(dialogRef) {
+        if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {
+            return;
+        }
+        const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);
+        this.appRef.detachView(dialogComponentRef.hostView);
+        dialogComponentRef.destroy();
+        this.dialogComponentRefMap.delete(dialogRef);
+    }
+}
+DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
+DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, decorators: [{
+            type: Injectable
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DialogService, DynamicDialogComponent, DynamicDialogConfig, DynamicDialogInjector, DynamicDialogModule, DynamicDialogRef };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-dynamicdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dynamicdialog.mjs","sources":["../../src/app/components/dynamicdialog/dynamicdialogcontent.ts","../../src/app/components/dynamicdialog/dynamicdialog-config.ts","../../src/app/components/dynamicdialog/dynamicdialog-ref.ts","../../src/app/components/dynamicdialog/dynamicdialog.ts","../../src/app/components/dynamicdialog/dynamicdialog-injector.ts","../../src/app/components/dynamicdialog/dialogservice.ts","../../src/app/components/dynamicdialog/primeng-dynamicdialog.ts"],"sourcesContent":["import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[pDynamicDialogContent]',\n  host: {\n    'class': 'p-element'\n  }\n})\nexport class DynamicDialogContent {\n\n\tconstructor(public viewContainerRef: ViewContainerRef) {}\n\n}\n","export class DynamicDialogConfig {\r\n\tdata?: any;\r\n\theader?: string;\r\n\tfooter?: string;\r\n\twidth?: string;\r\n\theight?: string;\r\n\tcloseOnEscape?: boolean;\r\n\tbaseZIndex?: number;\r\n\tautoZIndex?: boolean;\r\n\tdismissableMask?: boolean;\r\n\trtl?: boolean;\r\n\tstyle?: any;\r\n\tcontentStyle?: any;\r\n\tstyleClass?: string;\r\n\ttransitionOptions?: string;\r\n\tclosable?: boolean;\r\n\tshowHeader?: boolean;\r\n\tmodal?: boolean;\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DynamicDialogRef {\r\n\tconstructor() { }\r\n\r\n\tclose(result?: any) {\r\n\t\tthis._onClose.next(result);\r\n    }\r\n\r\n    destroy() {\r\n\t\tthis._onDestroy.next(null);\r\n\t}\r\n\r\n\tprivate readonly _onClose = new Subject<any>();\r\n    onClose: Observable<any> = this._onClose.asObservable();\r\n\r\n    private readonly _onDestroy = new Subject<any>();\r\n\tonDestroy: Observable<any> = this._onDestroy.asObservable();\r\n}\r\n","import { Component, NgModule, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, Renderer2, NgZone, ElementRef, ChangeDetectionStrategy, ViewRef, ViewEncapsulation } from '@angular/core';\nimport { trigger,style,transition,animate,AnimationEvent, animation, useAnimation } from '@angular/animations';\nimport { DynamicDialogContent } from './dynamicdialogcontent';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { PrimeNGConfig } from 'primeng/api';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n\tselector: 'p-dynamicDialog',\n\ttemplate: `\n        <div #mask [ngClass]=\"{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}\">\n            <div [ngClass]=\"{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}\" [ngStyle]=\"config.style\" [class]=\"config.styleClass\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}\"\n                (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" role=\"dialog\" *ngIf=\"visible\"\n                [style.width]=\"config.width\" [style.height]=\"config.height\">\n                <div class=\"p-dialog-header\" *ngIf=\"config.showHeader === false ? false: true\">\n                    <span class=\"p-dialog-title\">{{config.header}}</span>\n                    <div class=\"p-dialog-header-icons\">\n                        <button [ngClass]=\"'p-dialog-header-icon p-dialog-header-maximize p-link'\" type=\"button\" (click)=\"hide()\" (keydown.enter)=\"hide()\" *ngIf=\"config.closable !== false\">\n                            <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"p-dialog-content\" [ngStyle]=\"config.contentStyle\">\n                    <ng-template pDynamicDialogContent></ng-template>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"config.footer\">\n                    {{config.footer}}\n                </div>\n            </div>\n        </div>\n\t`,\n\tanimations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DynamicDialogComponent implements AfterViewInit, OnDestroy {\n\n\tvisible: boolean = true;\n\n\tcomponentRef: ComponentRef<any>;\n\n\tmask: HTMLDivElement;\n\n\t@ViewChild(DynamicDialogContent) insertionPoint: DynamicDialogContent;\n\n\t@ViewChild('mask') maskViewChild: ElementRef;\n\n\tchildComponentType: Type<any>;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    documentKeydownListener: any;\n\n    documentEscapeListener: Function;\n\n    maskClickListener: Function;\n\n    transformOptions: string = \"scale(0.7)\";\n\n\tconstructor(private componentFactoryResolver: ComponentFactoryResolver, private cd: ChangeDetectorRef, public renderer: Renderer2,\n\t\t\tpublic config: DynamicDialogConfig, private dialogRef: DynamicDialogRef, public zone: NgZone, public primeNGConfig: PrimeNGConfig) { }\n\n\tngAfterViewInit() {\n\t\tthis.loadChildComponent(this.childComponentType);\n\t\tthis.cd.detectChanges();\n\t}\n\n\tloadChildComponent(componentType: Type<any>) {\n\t\tlet componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n\n\t\tlet viewContainerRef = this.insertionPoint.viewContainerRef;\n\t\tviewContainerRef.clear();\n\n\t\tthis.componentRef = viewContainerRef.createComponent(componentFactory);\n\t}\n\n\tmoveOnTop() {\n        if (this.config.autoZIndex !== false) {\n            ZIndexUtils.set('modal', this.container, (this.config.baseZIndex||0) + this.primeNGConfig.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n\t\t}\n    }\n\n\tonAnimationStart(event: AnimationEvent) {\n\t\tswitch(event.toState) {\n\t\t\tcase 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n\t\t\t\tthis.moveOnTop();\n                this.bindGlobalListeners();\n\n                if (this.config.modal !== false) {\n                    this.enableModality();\n                }\n                this.focus();\n\t\t\tbreak;\n\n\t\t\tcase 'void':\n                if (this.config.modal !== false) {\n                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n                }\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tonAnimationEnd(event: AnimationEvent) {\n\t\tif (event.toState === 'void') {\n            this.onContainerDestroy();\n\t\t\tthis.dialogRef.destroy();\n\t\t}\n\t}\n\n\tonContainerDestroy() {\n\t\tthis.unbindGlobalListeners();\n\n        if (this.container && this.config.autoZIndex !== false) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        if (this.config.modal !== false) {\n            this.disableModality();\n        }\n        this.container = null;\n\t}\n\n\tclose() {\n        this.visible = false;\n        this.cd.markForCheck();\n\t}\n\n    hide() {\n        if (this.dialogRef) {\n            this.dialogRef.close();\n        }\n    }\n\n    enableModality() {\n        if (this.config.closable !== false && this.config.dismissableMask) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.hide();\n                }\n            });\n        }\n\n        if (this.config.modal !== false) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.wrapper) {\n            if (this.config.dismissableMask) {\n                this.unbindMaskClickListener();\n            }\n\n            if (this.config.modal !== false) {\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            }\n\n            if (!(this.cd as ViewRef).destroyed) {\n                this.cd.detectChanges();\n            }\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 9) {\n            event.preventDefault();\n\n            let focusableElements = DomHandler.getFocusableElements(this.container);\n\n            if (focusableElements && focusableElements.length > 0) {\n                if (!focusableElements[0].ownerDocument.activeElement) {\n                    focusableElements[0].focus();\n                }\n                else {\n                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                    if (event.shiftKey) {\n                        if (focusedIndex == -1 || focusedIndex === 0)\n                            focusableElements[focusableElements.length - 1].focus();\n                        else\n                            focusableElements[focusedIndex - 1].focus();\n                    }\n                    else {\n                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                            focusableElements[0].focus();\n                        else\n                            focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n\tbindGlobalListeners() {\n        this.bindDocumentKeydownListener();\n\n        if (this.config.closeOnEscape !== false && this.config.closable !== false) {\n            this.bindDocumentEscapeListener();\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindDocumentKeydownListener();\n        this.unbindDocumentEscapeListener();\n    }\n\n    bindDocumentKeydownListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentKeydownListener = this.onKeydown.bind(this);\n            window.document.addEventListener('keydown', this.documentKeydownListener);\n        });\n    }\n\n    unbindDocumentKeydownListener() {\n        if (this.documentKeydownListener) {\n            window.document.removeEventListener('keydown', this.documentKeydownListener);\n            this.documentKeydownListener = null;\n        }\n    }\n\n\tbindDocumentEscapeListener() {\n        const documentTarget: any = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n\tngOnDestroy() {\n\t\tthis.onContainerDestroy();\n\n\t\tif (this.componentRef) {\n\t\t\tthis.componentRef.destroy();\n\t\t}\n\t}\n}\n\n@NgModule({\n\timports: [CommonModule],\n\tdeclarations: [DynamicDialogComponent, DynamicDialogContent],\n\tentryComponents: [DynamicDialogComponent]\n})\nexport class DynamicDialogModule { }\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DynamicDialogInjector implements Injector {\r\n\t\r\n\tconstructor(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) { }\r\n\r\n\tget<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n\tget(token: any, notFoundValue?: any);\r\n\tget(token: any, notFoundValue?: any, flags?: any) {\r\n\t\tconst value = this._additionalTokens.get(token);\r\n\r\n\t\tif (value) return value;\r\n\r\n\t\treturn this._parentInjector.get<any>(token, notFoundValue);\r\n\t}\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\nimport { DynamicDialogComponent } from './dynamicdialog';\nimport { DynamicDialogInjector } from './dynamicdialog-injector';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\n\n@Injectable()\nexport class DialogService {\n\n    dialogComponentRefMap: Map<DynamicDialogRef, ComponentRef<DynamicDialogComponent>> = new Map();\n\n    constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {\n    }\n\n    public open(componentType: Type<any>, config: DynamicDialogConfig) {\n        const dialogRef = this.appendDialogComponentToBody(config);\n\n        this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;\n\n        return dialogRef;\n    }\n\n    private appendDialogComponentToBody(config: DynamicDialogConfig) {\n        const map = new WeakMap();\n        map.set(DynamicDialogConfig, config);\n\n        const dialogRef = new DynamicDialogRef();\n        map.set(DynamicDialogRef, dialogRef);\n\n        const sub = dialogRef.onClose.subscribe(() => {\n            this.dialogComponentRefMap.get(dialogRef).instance.close();\n        });\n\n        const destroySub = dialogRef.onDestroy.subscribe(() => {\n            this.removeDialogComponentFromBody(dialogRef);\n            destroySub.unsubscribe();\n            sub.unsubscribe();\n        });\n\n        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicDialogComponent);\n        const componentRef = componentFactory.create(new DynamicDialogInjector(this.injector, map));\n\n        this.appRef.attachView(componentRef.hostView);\n\n        const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        document.body.appendChild(domElem);\n\n        this.dialogComponentRefMap.set(dialogRef, componentRef);\n\n        return dialogRef;\n    }\n\n    private removeDialogComponentFromBody(dialogRef: DynamicDialogRef) {\n        if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n            return;\n        }\n\n        const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n        this.appRef.detachView(dialogComponentRef.hostView);\n        dialogComponentRef.destroy();\n        this.dialogComponentRefMap.delete(dialogRef);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,264 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, ContentChild, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as Quill from 'quill';
+
+const EDITOR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Editor),
+    multi: true
+};
+class Editor {
+    constructor(el) {
+        this.el = el;
+        this.onTextChange = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onInit = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterViewInit() {
+        let editorElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-content');
+        let toolbarElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-toolbar');
+        let defaultModule = { toolbar: toolbarElement };
+        let modules = this.modules ? Object.assign(Object.assign({}, defaultModule), this.modules) : defaultModule;
+        this.quill = new Quill(editorElement, {
+            modules: modules,
+            placeholder: this.placeholder,
+            readOnly: this.readonly,
+            theme: 'snow',
+            formats: this.formats,
+            bounds: this.bounds,
+            debug: this.debug,
+            scrollingContainer: this.scrollingContainer
+        });
+        if (this.value) {
+            this.quill.setContents(this.quill.clipboard.convert(this.value));
+        }
+        this.quill.on('text-change', (delta, oldContents, source) => {
+            if (source === 'user') {
+                let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;
+                let text = this.quill.getText().trim();
+                if (html === '<p><br></p>') {
+                    html = null;
+                }
+                this.onTextChange.emit({
+                    htmlValue: html,
+                    textValue: text,
+                    delta: delta,
+                    source: source
+                });
+                this.onModelChange(html);
+                this.onModelTouched();
+            }
+        });
+        this.quill.on('selection-change', (range, oldRange, source) => {
+            this.onSelectionChange.emit({
+                range: range,
+                oldRange: oldRange,
+                source: source
+            });
+        });
+        this.onInit.emit({
+            editor: this.quill
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.quill) {
+            if (value)
+                this.quill.setContents(this.quill.clipboard.convert(value));
+            else
+                this.quill.setText('');
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    getQuill() {
+        return this.quill;
+    }
+    get readonly() {
+        return this._readonly;
+    }
+    set readonly(val) {
+        this._readonly = val;
+        if (this.quill) {
+            if (this._readonly)
+                this.quill.disable();
+            else
+                this.quill.enable();
+        }
+    }
+}
+Editor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Editor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Editor, selector: "p-editor", inputs: { style: "style", styleClass: "styleClass", placeholder: "placeholder", formats: "formats", modules: "modules", bounds: "bounds", scrollingContainer: "scrollingContainer", debug: "debug", readonly: "readonly" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", onInit: "onInit" }, host: { classAttribute: "p-element" }, providers: [EDITOR_VALUE_ACCESSOR], queries: [{ propertyName: "toolbar", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, isInline: true, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-editor', template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, providers: [EDITOR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onTextChange: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], toolbar: [{
+                type: ContentChild,
+                args: [Header]
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], formats: [{
+                type: Input
+            }], modules: [{
+                type: Input
+            }], bounds: [{
+                type: Input
+            }], scrollingContainer: [{
+                type: Input
+            }], debug: [{
+                type: Input
+            }], onInit: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], readonly: [{
+                type: Input
+            }] } });
+class EditorModule {
+}
+EditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+EditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, declarations: [Editor], imports: [CommonModule], exports: [Editor, SharedModule] });
+EditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Editor, SharedModule],
+                    declarations: [Editor]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { EDITOR_VALUE_ACCESSOR, Editor, EditorModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-editor.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-editor.mjs","sources":["../../src/app/components/editor/editor.ts","../../src/app/components/editor/primeng-editor.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewInit,Input,Output,EventEmitter,ContentChild,forwardRef,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, AfterContentInit, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,Header, PrimeTemplate} from 'primeng/api'\nimport {DomHandler} from 'primeng/dom';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport * as Quill from \"quill\";\n\nexport const EDITOR_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Editor),\n  multi: true\n};\n\n@Component({\n    selector: 'p-editor',\n    template: `\n        <div [ngClass]=\"'p-editor-container'\" [class]=\"styleClass\">\n            <div class=\"p-editor-toolbar\" *ngIf=\"toolbar || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div class=\"p-editor-toolbar\" *ngIf=\"!toolbar && !headerTemplate\">\n                <span class=\"ql-formats\">\n                    <select class=\"ql-header\">\n                      <option value=\"1\">Heading</option>\n                      <option value=\"2\">Subheading</option>\n                      <option selected>Normal</option>\n                    </select>\n                    <select class=\"ql-font\">\n                      <option selected>Sans Serif</option>\n                      <option value=\"serif\">Serif</option>\n                      <option value=\"monospace\">Monospace</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-bold\" aria-label=\"Bold\" type=\"button\"></button>\n                    <button class=\"ql-italic\" aria-label=\"Italic\" type=\"button\"></button>\n                    <button class=\"ql-underline\" aria-label=\"Underline\" type=\"button\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                    <select class=\"ql-color\"></select>\n                    <select class=\"ql-background\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-list\" value=\"ordered\" aria-label=\"Ordered List\" type=\"button\"></button>\n                    <button class=\"ql-list\" value=\"bullet\" aria-label=\"Unordered List\" type=\"button\"></button>\n                    <select class=\"ql-align\">\n                        <option selected></option>\n                        <option value=\"center\">center</option>\n                        <option value=\"right\">right</option>\n                        <option value=\"justify\">justify</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-link\" aria-label=\"Insert Link\" type=\"button\"></button>\n                    <button class=\"ql-image\" aria-label=\"Insert Image\" type=\"button\"></button>\n                    <button class=\"ql-code-block\" aria-label=\"Insert Code Block\" type=\"button\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-clean\" aria-label=\"Remove Styles\" type=\"button\"></button>\n                </span>\n            </div>\n            <div class=\"p-editor-content\" [ngStyle]=\"style\"></div>\n        </div>\n    `,\n    providers: [EDITOR_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./editor.css'],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Editor implements AfterViewInit,AfterContentInit,ControlValueAccessor {\n\n    @Output() onTextChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Header) toolbar;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() formats: string[];\n\n    @Input() modules: any;\n\n    @Input() bounds: any;\n\n    @Input() scrollingContainer: any;\n\n    @Input() debug: string;\n\n    @Output() onInit: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    value: string;\n\n    _readonly: boolean;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    quill: any;\n\n    headerTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        let editorElement = DomHandler.findSingle(this.el.nativeElement ,'div.p-editor-content');\n        let toolbarElement = DomHandler.findSingle(this.el.nativeElement ,'div.p-editor-toolbar');\n        let defaultModule  = {toolbar: toolbarElement};\n        let modules = this.modules ? {...defaultModule, ...this.modules} : defaultModule;\n\n        this.quill = new Quill(editorElement, {\n            modules: modules,\n            placeholder: this.placeholder,\n            readOnly: this.readonly,\n            theme: 'snow',\n            formats: this.formats,\n            bounds: this.bounds,\n            debug: this.debug,\n            scrollingContainer: this.scrollingContainer\n        });\n\n        if (this.value) {\n            this.quill.setContents(this.quill.clipboard.convert(this.value));\n        }\n\n        this.quill.on('text-change', (delta, oldContents, source) => {\n            if (source === 'user') {\n                let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;\n                let text = this.quill.getText().trim();\n                if (html === '<p><br></p>') {\n                    html = null;\n                }\n\n                this.onTextChange.emit({\n                    htmlValue: html,\n                    textValue: text,\n                    delta: delta,\n                    source: source\n                });\n\n                this.onModelChange(html);\n                this.onModelTouched();\n            }\n        });\n\n        this.quill.on('selection-change', (range, oldRange, source) => {\n            this.onSelectionChange.emit({\n                range: range,\n                oldRange: oldRange,\n                source: source\n            });\n        });\n\n        this.onInit.emit({\n            editor: this.quill\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n\n        if (this.quill) {\n            if (value)\n                this.quill.setContents(this.quill.clipboard.convert(value));\n            else\n                this.quill.setText('');\n        }\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    getQuill() {\n        return this.quill;\n    }\n\n    @Input() get readonly(): boolean {\n        return this._readonly;\n    }\n\n    set readonly(val:boolean) {\n        this._readonly = val;\n\n        if (this.quill) {\n            if (this._readonly)\n                this.quill.disable();\n            else\n                this.quill.enable();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Editor,SharedModule],\n    declarations: [Editor]\n})\nexport class EditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,180 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+let idx = 0;
+class Fieldset {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-fieldset-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.collapsed)
+            this.expand(event);
+        else
+            this.collapse(event);
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+    }
+}
+Fieldset.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Fieldset.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Fieldset, selector: "p-fieldset", inputs: { legend: "legend", toggleable: "toggleable", collapsed: "collapsed", style: "style", styleClass: "styleClass", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, isInline: true, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('fieldsetContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fieldset', template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, animations: [
+                        trigger('fieldsetContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { legend: [{
+                type: Input
+            }], toggleable: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class FieldsetModule {
+}
+FieldsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FieldsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, declarations: [Fieldset], imports: [CommonModule, RippleModule], exports: [Fieldset, SharedModule] });
+FieldsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Fieldset, SharedModule],
+                    declarations: [Fieldset]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Fieldset, FieldsetModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fieldset.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fieldset.mjs","sources":["../../src/app/components/fieldset/fieldset.ts","../../src/app/components/fieldset/primeng-fieldset.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, QueryList, ContentChildren, TemplateRef} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule, PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-fieldset',\n    template: `\n        <fieldset [attr.id]=\"id\" [ngClass]=\"{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <legend class=\"p-fieldset-legend\">\n                <ng-container *ngIf=\"toggleable; else legendContent\">\n                    <a tabindex=\"0\" (click)=\"toggle($event)\" (keydown.enter)=\"toggle($event)\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"!collapsed\" pRipple>\n                        <span class=\"p-fieldset-toggler pi\" *ngIf=\"toggleable\" [ngClass]=\"{'pi-minus': !collapsed,'pi-plus':collapsed}\"></span>\n                        <ng-container *ngTemplateOutlet=\"legendContent\"></ng-container>\n                    </a>\n                </ng-container>\n                <ng-template #legendContent>\n                    <span class=\"p-fieldset-legend-text\">{{legend}}</span>\n                    <ng-content select=\"p-header\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </ng-template>\n            </legend>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@fieldsetContent]=\"collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}\"\n                        [attr.aria-labelledby]=\"id\" [attr.aria-hidden]=\"collapsed\"\n                         (@fieldsetContent.done)=\"onToggleDone($event)\" role=\"region\">\n                <div class=\"p-fieldset-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n            </div>\n        </fieldset>\n    `,\n    animations: [\n        trigger('fieldsetContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./fieldset.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Fieldset implements AfterContentInit,BlockableUI {\n\n    @Input() legend: string;\n\n    @Input() toggleable: boolean;\n\n    @Input() collapsed: boolean = false;\n\n    @Output() collapsedChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onAfterToggle: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public animating: boolean;\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    id: string = `p-fieldset-${idx++}`;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.animating) {\n            return false;\n        }\n\n        this.animating = true;\n        this.onBeforeToggle.emit({originalEvent: event, collapsed: this.collapsed});\n\n        if (this.collapsed)\n            this.expand(event);\n        else\n            this.collapse(event);\n\n        this.onAfterToggle.emit({originalEvent: event, collapsed: this.collapsed});\n        event.preventDefault();\n    }\n\n    expand(event) {\n        this.collapsed = false;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    collapse(event) {\n        this.collapsed = true;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onToggleDone(event: Event) {\n        this.animating = false;\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Fieldset,SharedModule],\n    declarations: [Fieldset]\n})\nexport class FieldsetModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,585 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i7 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i6 from 'primeng/messages';
+import { MessagesModule } from 'primeng/messages';
+import * as i5 from 'primeng/progressbar';
+import { ProgressBarModule } from 'primeng/progressbar';
+import { DomHandler } from 'primeng/dom';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i8 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from '@angular/common/http';
+import { HttpEventType } from '@angular/common/http';
+import * as i1 from '@angular/platform-browser';
+
+class FileUpload {
+    constructor(el, sanitizer, zone, http, cd, config) {
+        this.el = el;
+        this.sanitizer = sanitizer;
+        this.zone = zone;
+        this.http = http;
+        this.cd = cd;
+        this.config = config;
+        this.method = 'post';
+        this.invalidFileSizeMessageSummary = '{0}: Invalid file size, ';
+        this.invalidFileSizeMessageDetail = 'maximum upload size is {0}.';
+        this.invalidFileTypeMessageSummary = '{0}: Invalid file type, ';
+        this.invalidFileTypeMessageDetail = 'allowed file types: {0}.';
+        this.invalidFileLimitMessageDetail = 'limit is {0} at most.';
+        this.invalidFileLimitMessageSummary = 'Maximum number of files exceeded, ';
+        this.previewWidth = 50;
+        this.chooseIcon = 'pi pi-plus';
+        this.uploadIcon = 'pi pi-upload';
+        this.cancelIcon = 'pi pi-times';
+        this.showUploadButton = true;
+        this.showCancelButton = true;
+        this.mode = 'advanced';
+        this.onBeforeUpload = new EventEmitter();
+        this.onSend = new EventEmitter();
+        this.onUpload = new EventEmitter();
+        this.onError = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onProgress = new EventEmitter();
+        this.uploadHandler = new EventEmitter();
+        this._files = [];
+        this.progress = 0;
+        this.uploadedFileCount = 0;
+    }
+    set files(files) {
+        this._files = [];
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (this.validate(file)) {
+                if (this.isImage(file)) {
+                    file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                }
+                this._files.push(files[i]);
+            }
+        }
+    }
+    get files() {
+        return this._files;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'file':
+                    this.fileTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'toolbar':
+                    this.toolbarTemplate = item.template;
+                    break;
+                default:
+                    this.fileTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.mode === 'advanced') {
+            this.zone.runOutsideAngular(() => {
+                if (this.content)
+                    this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));
+            });
+        }
+    }
+    choose() {
+        this.advancedFileInput.nativeElement.click();
+    }
+    onFileSelect(event) {
+        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {
+            this.duplicateIEEvent = false;
+            return;
+        }
+        this.msgs = [];
+        if (!this.multiple) {
+            this.files = [];
+        }
+        let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (!this.isFileSelected(file)) {
+                if (this.validate(file)) {
+                    if (this.isImage(file)) {
+                        file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                    }
+                    this.files.push(files[i]);
+                }
+            }
+        }
+        this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });
+        if (this.fileLimit && this.mode == "advanced") {
+            this.checkFileLimit();
+        }
+        if (this.hasFiles() && this.auto && (!(this.mode === "advanced") || !this.isFileLimitExceeded())) {
+            this.upload();
+        }
+        if (event.type !== 'drop' && this.isIE11()) {
+            this.clearIEInput();
+        }
+        else {
+            this.clearInputElement();
+        }
+    }
+    isFileSelected(file) {
+        for (let sFile of this.files) {
+            if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type + file.size)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    isIE11() {
+        return !!window['MSInputMethodContext'] && !!document['documentMode'];
+    }
+    validate(file) {
+        if (this.accept && !this.isFileTypeValid(file)) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)
+            });
+            return false;
+        }
+        if (this.maxFileSize && file.size > this.maxFileSize) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))
+            });
+            return false;
+        }
+        return true;
+    }
+    isFileTypeValid(file) {
+        let acceptableTypes = this.accept.split(',').map(type => type.trim());
+        for (let type of acceptableTypes) {
+            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)
+                : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();
+            if (acceptable) {
+                return true;
+            }
+        }
+        return false;
+    }
+    getTypeClass(fileType) {
+        return fileType.substring(0, fileType.indexOf('/'));
+    }
+    isWildcard(fileType) {
+        return fileType.indexOf('*') !== -1;
+    }
+    getFileExtension(file) {
+        return '.' + file.name.split('.').pop();
+    }
+    isImage(file) {
+        return /^image\//.test(file.type);
+    }
+    onImageLoad(img) {
+        window.URL.revokeObjectURL(img.src);
+    }
+    upload() {
+        if (this.customUpload) {
+            if (this.fileLimit) {
+                this.uploadedFileCount += this.files.length;
+            }
+            this.uploadHandler.emit({
+                files: this.files
+            });
+            this.cd.markForCheck();
+        }
+        else {
+            this.uploading = true;
+            this.msgs = [];
+            let formData = new FormData();
+            this.onBeforeUpload.emit({
+                'formData': formData
+            });
+            for (let i = 0; i < this.files.length; i++) {
+                formData.append(this.name, this.files[i], this.files[i].name);
+            }
+            this.http[this.method](this.url, formData, {
+                headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials
+            }).subscribe((event) => {
+                switch (event.type) {
+                    case HttpEventType.Sent:
+                        this.onSend.emit({
+                            originalEvent: event,
+                            'formData': formData
+                        });
+                        break;
+                    case HttpEventType.Response:
+                        this.uploading = false;
+                        this.progress = 0;
+                        if (event['status'] >= 200 && event['status'] < 300) {
+                            if (this.fileLimit) {
+                                this.uploadedFileCount += this.files.length;
+                            }
+                            this.onUpload.emit({ originalEvent: event, files: this.files });
+                        }
+                        else {
+                            this.onError.emit({ files: this.files });
+                        }
+                        this.clear();
+                        break;
+                    case HttpEventType.UploadProgress: {
+                        if (event['loaded']) {
+                            this.progress = Math.round((event['loaded'] * 100) / event['total']);
+                        }
+                        this.onProgress.emit({ originalEvent: event, progress: this.progress });
+                        break;
+                    }
+                }
+                this.cd.markForCheck();
+            }, error => {
+                this.uploading = false;
+                this.onError.emit({ files: this.files, error: error });
+            });
+        }
+    }
+    clear() {
+        this.files = [];
+        this.onClear.emit();
+        this.clearInputElement();
+        this.cd.markForCheck();
+    }
+    remove(event, index) {
+        this.clearInputElement();
+        this.onRemove.emit({ originalEvent: event, file: this.files[index] });
+        this.files.splice(index, 1);
+    }
+    isFileLimitExceeded() {
+        if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {
+            this.focus = false;
+        }
+        return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;
+    }
+    isChooseDisabled() {
+        return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;
+    }
+    checkFileLimit() {
+        if (this.isFileLimitExceeded()) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),
+                detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())
+            });
+        }
+    }
+    clearInputElement() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.advancedFileInput.nativeElement.value = '';
+        }
+        if (this.basicFileInput && this.basicFileInput.nativeElement) {
+            this.basicFileInput.nativeElement.value = '';
+        }
+    }
+    clearIEInput() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again
+            this.advancedFileInput.nativeElement.value = '';
+        }
+    }
+    hasFiles() {
+        return this.files && this.files.length > 0;
+    }
+    onDragEnter(e) {
+        if (!this.disabled) {
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragOver(e) {
+        if (!this.disabled) {
+            DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');
+            this.dragHighlight = true;
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragLeave(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+        }
+    }
+    onDrop(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+            event.stopPropagation();
+            event.preventDefault();
+            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+            let allowDrop = this.multiple || (files && files.length === 1);
+            if (allowDrop) {
+                this.onFileSelect(event);
+            }
+        }
+    }
+    onFocus() {
+        this.focus = true;
+    }
+    onBlur() {
+        this.focus = false;
+    }
+    formatSize(bytes) {
+        if (bytes == 0) {
+            return '0 B';
+        }
+        let k = 1000, dm = 3, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));
+        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+    }
+    onBasicUploaderClick() {
+        if (this.hasFiles())
+            this.upload();
+        else
+            this.basicFileInput.nativeElement.click();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get chooseButtonLabel() {
+        return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);
+    }
+    get uploadButtonLabel() {
+        return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);
+    }
+    get cancelButtonLabel() {
+        return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);
+    }
+    ngOnDestroy() {
+        if (this.content && this.content.nativeElement) {
+            this.content.nativeElement.removeEventListener('dragover', this.onDragOver);
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+FileUpload.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+FileUpload.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FileUpload, selector: "p-fileUpload", inputs: { name: "name", url: "url", method: "method", multiple: "multiple", accept: "accept", disabled: "disabled", auto: "auto", withCredentials: "withCredentials", maxFileSize: "maxFileSize", invalidFileSizeMessageSummary: "invalidFileSizeMessageSummary", invalidFileSizeMessageDetail: "invalidFileSizeMessageDetail", invalidFileTypeMessageSummary: "invalidFileTypeMessageSummary", invalidFileTypeMessageDetail: "invalidFileTypeMessageDetail", invalidFileLimitMessageDetail: "invalidFileLimitMessageDetail", invalidFileLimitMessageSummary: "invalidFileLimitMessageSummary", style: "style", styleClass: "styleClass", previewWidth: "previewWidth", chooseLabel: "chooseLabel", uploadLabel: "uploadLabel", cancelLabel: "cancelLabel", chooseIcon: "chooseIcon", uploadIcon: "uploadIcon", cancelIcon: "cancelIcon", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", mode: "mode", headers: "headers", customUpload: "customUpload", fileLimit: "fileLimit", files: "files" }, outputs: { onBeforeUpload: "onBeforeUpload", onSend: "onSend", onUpload: "onUpload", onError: "onError", onClear: "onClear", onRemove: "onRemove", onSelect: "onSelect", onProgress: "onProgress", uploadHandler: "uploadHandler" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "advancedFileInput", first: true, predicate: ["advancedfileinput"], descendants: true }, { propertyName: "basicFileInput", first: true, predicate: ["basicfileinput"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, isInline: true, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"], components: [{ type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "style", "styleClass", "unit", "mode"] }, { type: i6.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fileUpload', template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { name: [{
+                type: Input
+            }], url: [{
+                type: Input
+            }], method: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], accept: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], auto: [{
+                type: Input
+            }], withCredentials: [{
+                type: Input
+            }], maxFileSize: [{
+                type: Input
+            }], invalidFileSizeMessageSummary: [{
+                type: Input
+            }], invalidFileSizeMessageDetail: [{
+                type: Input
+            }], invalidFileTypeMessageSummary: [{
+                type: Input
+            }], invalidFileTypeMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageSummary: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], previewWidth: [{
+                type: Input
+            }], chooseLabel: [{
+                type: Input
+            }], uploadLabel: [{
+                type: Input
+            }], cancelLabel: [{
+                type: Input
+            }], chooseIcon: [{
+                type: Input
+            }], uploadIcon: [{
+                type: Input
+            }], cancelIcon: [{
+                type: Input
+            }], showUploadButton: [{
+                type: Input
+            }], showCancelButton: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], headers: [{
+                type: Input
+            }], customUpload: [{
+                type: Input
+            }], fileLimit: [{
+                type: Input
+            }], onBeforeUpload: [{
+                type: Output
+            }], onSend: [{
+                type: Output
+            }], onUpload: [{
+                type: Output
+            }], onError: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onProgress: [{
+                type: Output
+            }], uploadHandler: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], advancedFileInput: [{
+                type: ViewChild,
+                args: ['advancedfileinput']
+            }], basicFileInput: [{
+                type: ViewChild,
+                args: ['basicfileinput']
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], files: [{
+                type: Input
+            }] } });
+class FileUploadModule {
+}
+FileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+FileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, imports: [[CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule],
+                    exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],
+                    declarations: [FileUpload]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FileUpload, FileUploadModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fileupload.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fileupload.mjs","sources":["../../src/app/components/fileupload/fileupload.ts","../../src/app/components/fileupload/primeng-fileupload.ts"],"sourcesContent":["import {NgModule,Component,OnDestroy,Input,Output,EventEmitter,TemplateRef,AfterViewInit,AfterContentInit,\n            ContentChildren,QueryList,ViewChild,ElementRef,NgZone,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {ProgressBarModule} from 'primeng/progressbar';\nimport {DomHandler} from 'primeng/dom';\nimport {Message, TranslationKeys} from 'primeng/api';\nimport {PrimeTemplate,SharedModule,PrimeNGConfig} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {HttpClient, HttpEvent, HttpEventType, HttpHeaders} from \"@angular/common/http\";\nimport {Subscription} from 'rxjs';\n\n@Component({\n    selector: 'p-fileUpload',\n    template: `\n        <div [ngClass]=\"'p-fileupload p-fileupload-advanced p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"mode === 'advanced'\">\n            <div class=\"p-fileupload-buttonbar\">\n                <span class=\"p-button p-component p-fileupload-choose\" [ngClass]=\"{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" pRipple\n                    (click)=\"choose()\" (keydown.enter)=\"choose()\" tabindex=\"0\">\n                    <input #advancedfileinput type=\"file\" (change)=\"onFileSelect($event)\" [multiple]=\"multiple\" [accept]=\"accept\" [disabled]=\"disabled || isChooseDisabled()\" [attr.title]=\"''\">\n                    <span [ngClass]=\"'p-button-icon p-button-icon-left'\" [class]=\"chooseIcon\"></span>\n                    <span class=\"p-button-label\">{{chooseButtonLabel}}</span>\n                </span>\n\n                <p-button *ngIf=\"!auto&&showUploadButton\" type=\"button\" [label]=\"uploadButtonLabel\" [icon]=\"uploadIcon\" (onClick)=\"upload()\" [disabled]=\"!hasFiles() || isFileLimitExceeded()\"></p-button>\n                <p-button *ngIf=\"!auto&&showCancelButton\" type=\"button\" [label]=\"cancelButtonLabel\" [icon]=\"cancelIcon\" (onClick)=\"clear()\" [disabled]=\"!hasFiles() || uploading\"></p-button>\n\n                <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n            </div>\n            <div #content class=\"p-fileupload-content\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\">\n                <p-progressBar [value]=\"progress\" [showValue]=\"false\" *ngIf=\"hasFiles()\"></p-progressBar>\n\n                <p-messages [value]=\"msgs\" [enableService]=\"false\"></p-messages>\n\n                <div class=\"p-fileupload-files\" *ngIf=\"hasFiles()\">\n                    <div *ngIf=\"!fileTemplate\">\n                        <div class=\"p-fileupload-row\" *ngFor=\"let file of files; let i = index;\">\n                            <div><img [src]=\"file.objectURL\" *ngIf=\"isImage(file)\" [width]=\"previewWidth\" /></div>\n                            <div class=\"p-fileupload-filename\">{{file.name}}</div>\n                            <div>{{formatSize(file.size)}}</div>\n                            <div>\n                                <button type=\"button\" icon=\"pi pi-times\" pButton (click)=\"remove($event,i)\" [disabled]=\"uploading\"></button>\n                            </div>\n                        </div>\n                    </div>\n                    <div *ngIf=\"fileTemplate\">\n                        <ng-template ngFor [ngForOf]=\"files\" [ngForTemplate]=\"fileTemplate\"></ng-template>\n                    </div>\n                </div>\n                <ng-container *ngTemplateOutlet=\"contentTemplate; context: {$implicit: files}\"></ng-container>\n            </div>\n        </div>\n        <div class=\"p-fileupload p-fileupload-basic p-component\" *ngIf=\"mode === 'basic'\">\n            <p-messages [value]=\"msgs\" [enableService]=\"false\"></p-messages>\n            <span [ngClass]=\"{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\" (mouseup)=\"onBasicUploaderClick()\" (keydown)=\"onBasicUploaderClick()\" tabindex=\"0\" pRipple>\n                <span class=\"p-button-icon p-button-icon-left pi\" [ngClass]=\"hasFiles()&&!auto ? uploadIcon : chooseIcon\"></span>\n                <span class=\"p-button-label\">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>\n                <input #basicfileinput type=\"file\" [accept]=\"accept\" [multiple]=\"multiple\" [disabled]=\"disabled\"\n                    (change)=\"onFileSelect($event)\" *ngIf=\"!hasFiles()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n            </span>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./fileupload.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FileUpload implements AfterViewInit,AfterContentInit,OnInit,OnDestroy,BlockableUI {\n\n    @Input() name: string;\n\n    @Input() url: string;\n\n    @Input() method: string = 'post';\n\n    @Input() multiple: boolean;\n\n    @Input() accept: string;\n\n    @Input() disabled: boolean;\n\n    @Input() auto: boolean;\n\n    @Input() withCredentials: boolean;\n\n    @Input() maxFileSize: number;\n\n    @Input() invalidFileSizeMessageSummary: string = '{0}: Invalid file size, ';\n\n    @Input() invalidFileSizeMessageDetail: string = 'maximum upload size is {0}.';\n\n    @Input() invalidFileTypeMessageSummary: string = '{0}: Invalid file type, ';\n\n    @Input() invalidFileTypeMessageDetail: string = 'allowed file types: {0}.';\n\n    @Input() invalidFileLimitMessageDetail: string = 'limit is {0} at most.';\n\n    @Input() invalidFileLimitMessageSummary: string = 'Maximum number of files exceeded, ';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() previewWidth: number = 50;\n\n    @Input() chooseLabel: string;\n\n    @Input() uploadLabel: string;\n\n    @Input() cancelLabel: string;\n\n    @Input() chooseIcon: string = 'pi pi-plus';\n\n    @Input() uploadIcon: string = 'pi pi-upload';\n\n    @Input() cancelIcon: string = 'pi pi-times';\n\n    @Input() showUploadButton: boolean = true;\n\n    @Input() showCancelButton: boolean = true;\n\n    @Input() mode: string = 'advanced';\n\n    @Input() headers: HttpHeaders;\n\n    @Input() customUpload: boolean;\n\n    @Input() fileLimit: number;\n\n    @Output() onBeforeUpload: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSend: EventEmitter<any> = new EventEmitter();\n\n    @Output() onUpload: EventEmitter<any> = new EventEmitter();\n\n    @Output() onError: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onProgress: EventEmitter<any> = new EventEmitter();\n\n    @Output() uploadHandler: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('advancedfileinput') advancedFileInput: ElementRef;\n\n    @ViewChild('basicfileinput') basicFileInput: ElementRef;\n\n    @ViewChild('content') content: ElementRef;\n\n    @Input() set files(files) {\n        this._files = [];\n\n        for(let i = 0; i < files.length; i++) {\n            let file = files[i];\n\n            if (this.validate(file)) {\n                if (this.isImage(file)) {\n                    (<any>file).objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n                }\n\n                this._files.push(files[i]);\n            }\n        }\n    }\n\n    get files(): File[] {\n        return this._files;\n    }\n\n    public _files: File[] = [];\n\n    public progress: number = 0;\n\n    public dragHighlight: boolean;\n\n    public msgs: Message[];\n\n    public fileTemplate: TemplateRef<any>;\n\n    public contentTemplate: TemplateRef<any>;\n\n    public toolbarTemplate: TemplateRef<any>;\n\n    public uploadedFileCount: number = 0;\n\n    focus: boolean;\n\n    uploading: boolean;\n\n    duplicateIEEvent: boolean;  // flag to recognize duplicate onchange event for file input\n\n    translationSubscription: Subscription;\n\n    constructor(private el: ElementRef, public sanitizer: DomSanitizer, public zone: NgZone, private http: HttpClient, public cd: ChangeDetectorRef, public config: PrimeNGConfig){}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'file':\n                    this.fileTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'toolbar':\n                    this.toolbarTemplate = item.template;\n                break;\n\n                default:\n                    this.fileTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n\n    ngOnInit() {\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.mode === 'advanced') {\n            this.zone.runOutsideAngular(() => {\n                if (this.content)\n                    this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));\n            });\n        }\n    }\n\n    choose() {\n        this.advancedFileInput.nativeElement.click();\n    }\n\n    onFileSelect(event) {\n        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n            this.duplicateIEEvent = false;\n            return;\n        }\n\n        this.msgs = [];\n        if (!this.multiple) {\n            this.files = [];\n        }\n\n        let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n        for(let i = 0; i < files.length; i++) {\n            let file = files[i];\n\n            if (!this.isFileSelected(file)){\n              if (this.validate(file)) {\n                  if (this.isImage(file)) {\n                      file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n                  }\n\n                  this.files.push(files[i]);\n              }\n            }\n        }\n\n        this.onSelect.emit({originalEvent: event, files: files, currentFiles: this.files});\n\n        if (this.fileLimit && this.mode == \"advanced\") {\n            this.checkFileLimit();\n        }\n\n        if (this.hasFiles() && this.auto && (!(this.mode === \"advanced\") || !this.isFileLimitExceeded())) {\n            this.upload();\n        }\n\n        if (event.type !== 'drop' && this.isIE11()) {\n          this.clearIEInput();\n        } else {\n          this.clearInputElement();\n        }\n    }\n\n    isFileSelected(file: File): boolean{\n        for(let sFile of this.files){\n            if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type+file.size)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    isIE11() {\n        return !!window['MSInputMethodContext'] && !!document['documentMode'];\n    }\n\n    validate(file: File): boolean {\n        if (this.accept && !this.isFileTypeValid(file)) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),\n                detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)\n            });\n            return false;\n        }\n\n        if (this.maxFileSize  && file.size > this.maxFileSize) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),\n                detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))\n            });\n            return false;\n        }\n\n        return true;\n    }\n\n    private isFileTypeValid(file: File): boolean {\n        let acceptableTypes = this.accept.split(',').map(type => type.trim());\n        for(let type of acceptableTypes) {\n            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)\n                                                    : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n            if (acceptable) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    getTypeClass(fileType: string): string {\n        return fileType.substring(0, fileType.indexOf('/'));\n    }\n\n    isWildcard(fileType: string): boolean {\n        return fileType.indexOf('*') !== -1;\n    }\n\n    getFileExtension(file: File): string {\n        return '.' + file.name.split('.').pop();\n    }\n\n    isImage(file: File): boolean {\n        return /^image\\//.test(file.type);\n    }\n\n    onImageLoad(img: any) {\n        window.URL.revokeObjectURL(img.src);\n    }\n\n    upload() {\n        if (this.customUpload) {\n            if (this.fileLimit) {\n                this.uploadedFileCount += this.files.length;\n            }\n\n            this.uploadHandler.emit({\n                files: this.files\n            });\n\n            this.cd.markForCheck();\n        }\n        else {\n            this.uploading = true;\n            this.msgs = [];\n            let formData = new FormData();\n\n            this.onBeforeUpload.emit({\n                'formData': formData\n            });\n\n            for (let i = 0; i < this.files.length; i++) {\n                formData.append(this.name, this.files[i], this.files[i].name);\n            }\n\n            this.http[this.method](this.url, formData, {\n                headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials\n            }).subscribe( (event: HttpEvent<any>) => {\n                    switch (event.type) {\n                        case HttpEventType.Sent:\n                            this.onSend.emit({\n                                originalEvent: event,\n                                'formData': formData\n                            });\n                            break;\n                        case HttpEventType.Response:\n                            this.uploading = false;\n                            this.progress = 0;\n\n                            if (event['status'] >= 200 && event['status'] < 300) {\n                                if (this.fileLimit) {\n                                    this.uploadedFileCount += this.files.length;\n                                }\n\n                                this.onUpload.emit({originalEvent: event, files: this.files});\n                            } else {\n                                this.onError.emit({files: this.files});\n                            }\n\n                            this.clear();\n                            break;\n                        case HttpEventType.UploadProgress: {\n                            if (event['loaded']) {\n                                this.progress = Math.round((event['loaded'] * 100) / event['total']);\n                            }\n\n                            this.onProgress.emit({originalEvent: event, progress: this.progress});\n                            break;\n                        }\n                    }\n\n                    this.cd.markForCheck();\n                },\n                error => {\n                    this.uploading = false;\n                    this.onError.emit({files: this.files, error: error});\n                });\n        }\n    }\n\n    clear() {\n        this.files = [];\n        this.onClear.emit();\n        this.clearInputElement();\n        this.cd.markForCheck();\n    }\n\n    remove(event: Event, index: number) {\n        this.clearInputElement();\n        this.onRemove.emit({originalEvent: event, file: this.files[index]});\n        this.files.splice(index, 1);\n    }\n\n    isFileLimitExceeded() {\n        if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {\n            this.focus = false;\n        }\n\n        return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n    }\n\n    isChooseDisabled() {\n        return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;\n    }\n\n    checkFileLimit() {\n        if (this.isFileLimitExceeded()) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),\n                detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())\n            });\n        }\n    }\n\n    clearInputElement() {\n        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n            this.advancedFileInput.nativeElement.value = '';\n        }\n\n        if (this.basicFileInput && this.basicFileInput.nativeElement) {\n            this.basicFileInput.nativeElement.value = '';\n        }\n    }\n\n    clearIEInput() {\n        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n            this.advancedFileInput.nativeElement.value = '';\n        }\n    }\n\n    hasFiles(): boolean {\n        return this.files && this.files.length > 0;\n    }\n\n    onDragEnter(e) {\n        if (!this.disabled) {\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragOver(e) {\n        if (!this.disabled) {\n            DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');\n            this.dragHighlight = true;\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragLeave(event) {\n        if (!this.disabled) {\n            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n        }\n    }\n\n    onDrop(event) {\n        if (!this.disabled) {\n            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n            event.stopPropagation();\n            event.preventDefault();\n\n            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n            let allowDrop = this.multiple||(files && files.length === 1);\n\n            if (allowDrop) {\n                this.onFileSelect(event);\n            }\n        }\n    }\n\n    onFocus() {\n        this.focus = true;\n    }\n\n    onBlur() {\n        this.focus = false;\n    }\n\n    formatSize(bytes) {\n        if (bytes == 0) {\n            return '0 B';\n        }\n        let k = 1000,\n        dm = 3,\n        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n        i = Math.floor(Math.log(bytes) / Math.log(k));\n\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n    }\n\n    onBasicUploaderClick() {\n        if (this.hasFiles())\n            this.upload();\n        else\n            this.basicFileInput.nativeElement.click();\n    }\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    get chooseButtonLabel(): string {\n        return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);\n    }\n\n    get uploadButtonLabel(): string {\n        return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);\n    }\n\n    get cancelButtonLabel(): string {\n        return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);\n    }\n\n    ngOnDestroy() {\n        if (this.content && this.content.nativeElement) {\n            this.content.nativeElement.removeEventListener('dragover', this.onDragOver);\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ButtonModule,ProgressBarModule,MessagesModule,RippleModule],\n    exports: [FileUpload,SharedModule,ButtonModule,ProgressBarModule,MessagesModule],\n    declarations: [FileUpload]\n})\nexport class FileUploadModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,74 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class FocusTrap {
+    constructor(el) {
+        this.el = el;
+    }
+    onkeydown(e) {
+        if (this.pFocusTrapDisabled !== true) {
+            e.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (e.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+}
+FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FocusTrap, selector: "[pFocusTrap]", inputs: { pFocusTrapDisabled: "pFocusTrapDisabled" }, host: { listeners: { "keydown.tab": "onkeydown($event)", "keydown.shift.tab": "onkeydown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFocusTrap]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pFocusTrapDisabled: [{
+                type: Input
+            }], onkeydown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }] } });
+class FocusTrapModule {
+}
+FocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrap], imports: [CommonModule], exports: [FocusTrap] });
+FocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FocusTrap],
+                    declarations: [FocusTrap]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FocusTrap, FocusTrapModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-focustrap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-focustrap.mjs","sources":["../../src/app/components/focustrap/focustrap.ts","../../src/app/components/focustrap/primeng-focustrap.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Directive({\n    selector: '[pFocusTrap]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FocusTrap {\n\n    @Input() pFocusTrapDisabled: boolean;\n\n    constructor(public el: ElementRef) {}\n\n    @HostListener('keydown.tab', ['$event'])\n    @HostListener('keydown.shift.tab', ['$event'])\n    onkeydown(e) {\n        if (this.pFocusTrapDisabled !== true) {\n            e.preventDefault();\n            let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);\n            if (focusableElements && focusableElements.length > 0) {\n                if (!focusableElements[0].ownerDocument.activeElement) {\n                    focusableElements[0].focus();\n                }\n                else {\n                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                    if (e.shiftKey) {\n                        if (focusedIndex == -1 || focusedIndex === 0)\n                            focusableElements[focusableElements.length - 1].focus();\n                        else\n                            focusableElements[focusedIndex - 1].focus();\n                    }\n                    else {\n                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                            focusableElements[0].focus();\n                        else\n                            focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [FocusTrap],\n    declarations: [FocusTrap]\n})\nexport class FocusTrapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAUa,SAAS;IAIlB,YAAmB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAI;IAIrC,SAAS,CAAC,CAAC;QACP,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;YAClC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC/E,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE;oBACnD,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAChC;qBACI;oBACD,IAAI,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;oBAE/F,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACZ,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC;4BACxC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;;4BAExD,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACnD;yBACI;wBACD,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;4BACrE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;;4BAE7B,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACnD;iBACJ;aACJ;SACJ;KACJ;;sGAlCQ,SAAS;0FAAT,SAAS;2FAAT,SAAS;kBANrB,SAAS;mBAAC;oBACP,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;iGAGY,kBAAkB;sBAA1B,KAAK;gBAMN,SAAS;sBAFR,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBACtC,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;;MAmCpC,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBA1Cf,SAAS,aAsCR,YAAY,aAtCb,SAAS;6GA0CT,eAAe,YAJf,CAAC,YAAY,CAAC;2FAId,eAAe;kBAL3B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;ACnDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,109 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Calendar } from '@fullcalendar/core';
+
+class FullCalendar {
+    constructor(el) {
+        this.el = el;
+    }
+    ngOnInit() {
+        this.config = {
+            theme: true
+        };
+        if (this.options) {
+            for (let prop in this.options) {
+                this.config[prop] = this.options[prop];
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (!this.initialized && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    get events() {
+        return this._events;
+    }
+    set events(value) {
+        this._events = value;
+        if (this._events && this.calendar) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this._events);
+        }
+    }
+    get options() {
+        return this._options;
+    }
+    set options(value) {
+        this._options = value;
+        if (this._options && this.calendar) {
+            for (let prop in this._options) {
+                let optionValue = this._options[prop];
+                this.config[prop] = optionValue;
+                this.calendar.setOption(prop, optionValue);
+            }
+        }
+    }
+    initialize() {
+        this.calendar = new Calendar(this.el.nativeElement.children[0], this.config);
+        this.calendar.render();
+        this.initialized = true;
+        if (this.events) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this.events);
+        }
+    }
+    getCalendar() {
+        return this.calendar;
+    }
+    ngOnDestroy() {
+        if (this.calendar) {
+            this.calendar.destroy();
+            this.initialized = false;
+            this.calendar = null;
+        }
+    }
+}
+FullCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+FullCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FullCalendar, selector: "p-fullCalendar", inputs: { style: "style", styleClass: "styleClass", events: "events", options: "options" }, host: { classAttribute: "p-element" }, ngImport: i0, template: '<div [ngStyle]="style" [class]="styleClass"></div>', isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-fullCalendar',
+                    template: '<div [ngStyle]="style" [class]="styleClass"></div>',
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], events: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+class FullCalendarModule {
+}
+FullCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FullCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, declarations: [FullCalendar], imports: [CommonModule], exports: [FullCalendar] });
+FullCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FullCalendar],
+                    declarations: [FullCalendar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FullCalendar, FullCalendarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-fullcalendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fullcalendar.mjs","sources":["../../src/app/components/fullcalendar/fullcalendar.ts","../../src/app/components/fullcalendar/primeng-fullcalendar.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,OnInit,AfterViewChecked,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Calendar} from '@fullcalendar/core';\n\n@Component({\n    selector: 'p-fullCalendar',\n    template: '<div [ngStyle]=\"style\" [class]=\"styleClass\"></div>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FullCalendar implements OnDestroy,OnInit,AfterViewChecked {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    initialized: boolean;\n\n    calendar: any;\n\n    config: any;\n\n    _options: any;\n\n    _events: any[];\n\n    constructor(public el: ElementRef) {}\n\n    ngOnInit() {\n        this.config = {\n            theme: true\n        };\n\n        if (this.options) {\n            for (let prop in this.options) {\n                this.config[prop] = this.options[prop];\n            }\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (!this.initialized && this.el.nativeElement.offsetParent) {\n            this.initialize();\n        }\n    }\n\n    @Input() get events(): any {\n        return this._events;\n    }\n\n    set events(value: any) {\n        this._events = value;\n\n        if (this._events && this.calendar) {\n            this.calendar.removeAllEventSources();\n            this.calendar.addEventSource(this._events);\n        }\n    }\n\n    @Input() get options(): any {\n        return this._options;\n    }\n\n    set options(value: any) {\n        this._options = value;\n\n        if (this._options && this.calendar) {\n            for (let prop in this._options) {\n                let optionValue = this._options[prop];\n                this.config[prop] = optionValue;\n                this.calendar.setOption(prop, optionValue);\n            }\n        }\n    }\n\n    initialize() {\n        this.calendar = new Calendar(this.el.nativeElement.children[0], this.config);\n        this.calendar.render();\n        this.initialized = true;\n\n        if (this.events) {\n            this.calendar.removeAllEventSources();\n            this.calendar.addEventSource(this.events);\n        }\n    }\n\n    getCalendar() {\n        return this.calendar;\n    }\n\n    ngOnDestroy() {\n        if (this.calendar) {\n            this.calendar.destroy();\n            this.initialized = false;\n            this.calendar = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [FullCalendar],\n    declarations: [FullCalendar]\n})\nexport class FullCalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1004 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ZIndexUtils, UniqueComponentId } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, transition, style, animate } from '@angular/animations';
+
+class Galleria {
+    constructor(element, cd, config) {
+        this.element = element;
+        this.cd = cd;
+        this.config = config;
+        this.fullScreen = false;
+        this.numVisible = 3;
+        this.showItemNavigators = false;
+        this.showThumbnailNavigators = true;
+        this.showItemNavigatorsOnHover = false;
+        this.changeItemOnIndicatorHover = false;
+        this.circular = false;
+        this.autoPlay = false;
+        this.transitionInterval = 4000;
+        this.showThumbnails = true;
+        this.thumbnailsPosition = "bottom";
+        this.verticalThumbnailViewPortHeight = "300px";
+        this.showIndicators = false;
+        this.showIndicatorsOnItem = false;
+        this.indicatorsPosition = "bottom";
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.activeIndexChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._visible = false;
+        this._activeIndex = 0;
+        this.maskVisible = false;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    get visible() {
+        return this._visible;
+    }
+    ;
+    set visible(visible) {
+        this._visible = visible;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerFacet = item.template;
+                    break;
+                case 'footer':
+                    this.footerFacet = item.template;
+                    break;
+                case 'indicator':
+                    this.indicatorFacet = item.template;
+                    break;
+                case 'caption':
+                    this.captionFacet = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChanges) {
+        var _a;
+        if (simpleChanges.value && ((_a = simpleChanges.value.currentValue) === null || _a === void 0 ? void 0 : _a.length) < this.numVisible) {
+            this.numVisible = simpleChanges.value.currentValue.length;
+        }
+    }
+    onMaskHide() {
+        this.visible = false;
+        this.visibleChange.emit(false);
+    }
+    onActiveItemChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeIndexChange.emit(index);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.enableModality();
+                break;
+            case 'void':
+                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.disableModality();
+                break;
+        }
+    }
+    enableModality() {
+        DomHandler.addClass(document.body, 'p-overflow-hidden');
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+        }
+    }
+    disableModality() {
+        DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        this.maskVisible = false;
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.clear(this.mask.nativeElement);
+        }
+    }
+    ngOnDestroy() {
+        if (this.fullScreen) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.mask) {
+            this.disableModality();
+        }
+    }
+}
+Galleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Galleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Galleria, selector: "p-galleria", inputs: { activeIndex: "activeIndex", fullScreen: "fullScreen", id: "id", value: "value", numVisible: "numVisible", responsiveOptions: "responsiveOptions", showItemNavigators: "showItemNavigators", showThumbnailNavigators: "showThumbnailNavigators", showItemNavigatorsOnHover: "showItemNavigatorsOnHover", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", circular: "circular", autoPlay: "autoPlay", transitionInterval: "transitionInterval", showThumbnails: "showThumbnails", thumbnailsPosition: "thumbnailsPosition", verticalThumbnailViewPortHeight: "verticalThumbnailViewPortHeight", showIndicators: "showIndicators", showIndicatorsOnItem: "showIndicatorsOnItem", indicatorsPosition: "indicatorsPosition", baseZIndex: "baseZIndex", maskClass: "maskClass", containerClass: "containerClass", containerStyle: "containerStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", visible: "visible" }, outputs: { activeIndexChange: "activeIndexChange", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, isInline: true, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"], components: [{ type: i0.forwardRef(function () { return GalleriaContent; }), selector: "p-galleriaContent", inputs: ["activeIndex", "value", "numVisible"], outputs: ["maskHide", "activeItemChange"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-galleria', template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }], id: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], showItemNavigatorsOnHover: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], transitionInterval: [{
+                type: Input
+            }], showThumbnails: [{
+                type: Input
+            }], thumbnailsPosition: [{
+                type: Input
+            }], verticalThumbnailViewPortHeight: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showIndicatorsOnItem: [{
+                type: Input
+            }], indicatorsPosition: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], maskClass: [{
+                type: Input
+            }], containerClass: [{
+                type: Input
+            }], containerStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], visible: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class GalleriaContent {
+    constructor(galleria, cd) {
+        this.galleria = galleria;
+        this.cd = cd;
+        this.value = [];
+        this.maskHide = new EventEmitter();
+        this.activeItemChange = new EventEmitter();
+        this.id = this.galleria.id || UniqueComponentId();
+        this.slideShowActicve = false;
+        this._activeIndex = 0;
+        this.slideShowActive = true;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    galleriaClass() {
+        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);
+        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);
+        return (this.galleria.containerClass ? this.galleria.containerClass + " " : '') + (thumbnailsPosClass ? thumbnailsPosClass + " " : '') + (indicatorPosClass ? indicatorPosClass + " " : '');
+    }
+    startSlideShow() {
+        this.interval = setInterval(() => {
+            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);
+            this.onActiveIndexChange(activeIndex);
+            this.activeIndex = activeIndex;
+        }, this.galleria.transitionInterval);
+        this.slideShowActive = true;
+    }
+    stopSlideShow() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+        this.slideShowActive = false;
+    }
+    getPositionClass(preClassName, position) {
+        const positions = ['top', 'left', 'bottom', 'right'];
+        const pos = positions.find(item => item === position);
+        return pos ? `${preClassName}-${pos}` : '';
+    }
+    isVertical() {
+        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';
+    }
+    onActiveIndexChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeItemChange.emit(this.activeIndex);
+        }
+    }
+}
+GalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaContent, selector: "p-galleriaContent", inputs: { activeIndex: "activeIndex", value: "value", numVisible: "numVisible" }, outputs: { maskHide: "maskHide", activeItemChange: "activeItemChange" }, ngImport: i0, template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }, { type: i0.forwardRef(function () { return GalleriaItem; }), selector: "p-galleriaItem", inputs: ["circular", "value", "showItemNavigators", "showIndicators", "slideShowActive", "changeItemOnIndicatorHover", "autoPlay", "templates", "indicatorFacet", "captionFacet", "activeIndex"], outputs: ["startSlideShow", "stopSlideShow", "onActiveIndexChange"] }, { type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: "p-galleriaThumbnails", inputs: ["containerId", "value", "isVertical", "slideShowActive", "circular", "responsiveOptions", "contentHeight", "showThumbnailNavigators", "templates", "numVisible", "activeIndex"], outputs: ["onActiveIndexChange", "stopSlideShow"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaContent',
+                    template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], maskHide: [{
+                type: Output
+            }], activeItemChange: [{
+                type: Output
+            }] } });
+class GalleriaItemSlot {
+    get item() {
+        return this._item;
+    }
+    ;
+    set item(item) {
+        this._item = item;
+        if (this.templates) {
+            this.templates.forEach((item) => {
+                if (item.getType() === this.type) {
+                    switch (this.type) {
+                        case 'item':
+                        case 'caption':
+                        case 'thumbnail':
+                            this.context = { $implicit: this.item };
+                            this.contentTemplate = item.template;
+                            break;
+                    }
+                }
+            });
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            if (item.getType() === this.type) {
+                switch (this.type) {
+                    case 'item':
+                    case 'caption':
+                    case 'thumbnail':
+                        this.context = { $implicit: this.item };
+                        this.contentTemplate = item.template;
+                        break;
+                    case 'indicator':
+                        this.context = { $implicit: this.index };
+                        this.contentTemplate = item.template;
+                        break;
+                    default:
+                        this.context = {};
+                        this.contentTemplate = item.template;
+                        break;
+                }
+            }
+        });
+    }
+}
+GalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: { templates: "templates", index: "index", item: "item", type: "type" }, ngImport: i0, template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItemSlot',
+                    template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { templates: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], item: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }] } });
+class GalleriaItem {
+    constructor() {
+        this.circular = false;
+        this.showItemNavigators = false;
+        this.showIndicators = true;
+        this.slideShowActive = true;
+        this.changeItemOnIndicatorHover = true;
+        this.autoPlay = false;
+        this.startSlideShow = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.onActiveIndexChange = new EventEmitter();
+        this._activeIndex = 0;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+        this.activeItem = this.value[this._activeIndex];
+    }
+    ngOnInit() {
+        if (this.autoPlay) {
+            this.startSlideShow.emit();
+        }
+    }
+    next() {
+        let nextItemIndex = this.activeIndex + 1;
+        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex
+            ? 0
+            : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    prev() {
+        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;
+        let activeIndex = this.circular && this.activeIndex === 0
+            ? this.value.length - 1
+            : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        this.next();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        this.prev();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onIndicatorClick(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    onIndicatorMouseEnter(index) {
+        if (this.changeItemOnIndicatorHover) {
+            this.stopTheSlideShow();
+            this.onActiveIndexChange.emit(index);
+        }
+    }
+    onIndicatorKeyDown(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    isNavForwardDisabled() {
+        return !this.circular && this.activeIndex === (this.value.length - 1);
+    }
+    isNavBackwardDisabled() {
+        return !this.circular && this.activeIndex === 0;
+    }
+    isIndicatorItemActive(index) {
+        return this.activeIndex === index;
+    }
+}
+GalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItem, selector: "p-galleriaItem", inputs: { circular: "circular", value: "value", showItemNavigators: "showItemNavigators", showIndicators: "showIndicators", slideShowActive: "slideShowActive", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", autoPlay: "autoPlay", templates: "templates", indicatorFacet: "indicatorFacet", captionFacet: "captionFacet", activeIndex: "activeIndex" }, outputs: { startSlideShow: "startSlideShow", stopSlideShow: "stopSlideShow", onActiveIndexChange: "onActiveIndexChange" }, ngImport: i0, template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItem',
+                    template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { circular: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], indicatorFacet: [{
+                type: Input
+            }], captionFacet: [{
+                type: Input
+            }], startSlideShow: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], onActiveIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class GalleriaThumbnails {
+    constructor(cd) {
+        this.cd = cd;
+        this.isVertical = false;
+        this.slideShowActive = false;
+        this.circular = false;
+        this.contentHeight = "300px";
+        this.showThumbnailNavigators = true;
+        this.onActiveIndexChange = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.startPos = null;
+        this.thumbnailsStyle = null;
+        this.sortedResponsiveOptions = null;
+        this.totalShiftedItems = 0;
+        this.page = 0;
+        this._numVisible = 0;
+        this.d_numVisible = 0;
+        this._oldNumVisible = 0;
+        this._activeIndex = 0;
+        this._oldactiveIndex = 0;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    ;
+    set numVisible(numVisible) {
+        this._numVisible = numVisible;
+        this._oldNumVisible = this.d_numVisible;
+        this.d_numVisible = numVisible;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._oldactiveIndex = this._activeIndex;
+        this._activeIndex = activeIndex;
+    }
+    ngOnInit() {
+        this.createStyle();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+    }
+    ngAfterContentChecked() {
+        let totalShiftedItems = this.totalShiftedItems;
+        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {
+            if (this._activeIndex <= this.getMedianItemIndex()) {
+                totalShiftedItems = 0;
+            }
+            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;
+            }
+            else {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            if (this.itemsContainer && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            }
+            if (this._oldactiveIndex !== this._activeIndex) {
+                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+            }
+            this._oldactiveIndex = this._activeIndex;
+            this._oldNumVisible = this.d_numVisible;
+        }
+    }
+    ngAfterViewInit() {
+        this.calculatePosition();
+    }
+    createStyle() {
+        if (!this.thumbnailsStyle) {
+            this.thumbnailsStyle = document.createElement('style');
+            this.thumbnailsStyle.type = 'text/css';
+            document.body.appendChild(this.thumbnailsStyle);
+        }
+        let innerHTML = `
+            #${this.containerId} .p-galleria-thumbnail-item {
+                flex: 1 0 ${(100 / this.d_numVisible)}%
+            }
+        `;
+        if (this.responsiveOptions) {
+            this.sortedResponsiveOptions = [...this.responsiveOptions];
+            this.sortedResponsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.containerId} .p-galleria-thumbnail-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.thumbnailsStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.itemsContainer && this.sortedResponsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this._numVisible
+            };
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this.d_numVisible !== matchedResponsiveData.numVisible) {
+                this.d_numVisible = matchedResponsiveData.numVisible;
+                this.cd.markForCheck();
+            }
+        }
+    }
+    getTabIndex(index) {
+        return this.isItemActive(index) ? 0 : null;
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        let nextItemIndex = this._activeIndex + 1;
+        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {
+            this.step(-1);
+        }
+        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;
+        let diff = prevItemIndex + this.totalShiftedItems;
+        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {
+            this.step(1);
+        }
+        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onItemClick(index) {
+        this.stopTheSlideShow();
+        let selectedItemIndex = index;
+        if (selectedItemIndex !== this._activeIndex) {
+            const diff = selectedItemIndex + this.totalShiftedItems;
+            let dir = 0;
+            if (selectedItemIndex < this._activeIndex) {
+                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();
+                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {
+                    this.step(dir);
+                }
+            }
+            else {
+                dir = this.getMedianItemIndex() - diff;
+                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {
+                    this.step(dir);
+                }
+            }
+            this.activeIndex = selectedItemIndex;
+            this.onActiveIndexChange.emit(this.activeIndex);
+        }
+    }
+    step(dir) {
+        let totalShiftedItems = this.totalShiftedItems + dir;
+        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {
+            totalShiftedItems = this.d_numVisible - this.value.length;
+        }
+        else if (dir > 0 && totalShiftedItems > 0) {
+            totalShiftedItems = 0;
+        }
+        if (this.circular) {
+            if (dir < 0 && this.value.length - 1 === this._activeIndex) {
+                totalShiftedItems = 0;
+            }
+            else if (dir > 0 && this._activeIndex === 0) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+        }
+        if (this.itemsContainer) {
+            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (diff < 0) { // left
+            this.navForward(e);
+        }
+        else { // right
+            this.navBackward(e);
+        }
+    }
+    getTotalPageNumber() {
+        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;
+    }
+    getMedianItemIndex() {
+        let index = Math.floor(this.d_numVisible / 2);
+        return (this.d_numVisible % 2) ? index : index - 1;
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer && this.itemsContainer.nativeElement) {
+            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transition = '';
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    isNavBackwardDisabled() {
+        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);
+    }
+    isNavForwardDisabled() {
+        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);
+    }
+    firstItemAciveIndex() {
+        return this.totalShiftedItems * -1;
+    }
+    lastItemActiveIndex() {
+        return this.firstItemAciveIndex() + this.d_numVisible - 1;
+    }
+    isItemActive(index) {
+        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = () => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.thumbnailsStyle) {
+            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);
+        }
+    }
+}
+GalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaThumbnails, selector: "p-galleriaThumbnails", inputs: { containerId: "containerId", value: "value", isVertical: "isVertical", slideShowActive: "slideShowActive", circular: "circular", responsiveOptions: "responsiveOptions", contentHeight: "contentHeight", showThumbnailNavigators: "showThumbnailNavigators", templates: "templates", numVisible: "numVisible", activeIndex: "activeIndex" }, outputs: { onActiveIndexChange: "onActiveIndexChange", stopSlideShow: "stopSlideShow" }, viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], ngImport: i0, template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaThumbnails',
+                    template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], isVertical: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], contentHeight: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], onActiveIndexChange: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], numVisible: [{
+                type: Input
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class GalleriaModule {
+}
+GalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });
+GalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],
+                    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-galleria.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-galleria.mjs","sources":["../../src/app/components/galleria/galleria.ts","../../src/app/components/galleria/primeng-galleria.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewChild, ContentChildren, QueryList, TemplateRef, OnInit, OnChanges, AfterContentChecked, SimpleChanges, ViewEncapsulation, ChangeDetectorRef, AfterViewInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport { RippleModule } from 'primeng/ripple';\nimport { animate, style, transition, trigger, AnimationEvent } from '@angular/animations';\n\n@Component({\n    selector: 'p-galleria',\n    template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./galleria.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Galleria implements OnChanges, OnDestroy {\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n\n    @Input() fullScreen: boolean = false;\n\n    @Input() id: string;\n\n    @Input() value: any[];\n\n    @Input() numVisible: number = 3;\n\n    @Input() responsiveOptions: any[];\n\n    @Input() showItemNavigators: boolean = false;\n\n    @Input() showThumbnailNavigators: boolean = true;\n\n    @Input() showItemNavigatorsOnHover: boolean = false;\n\n    @Input() changeItemOnIndicatorHover: boolean = false;\n\n    @Input() circular: boolean = false;\n\n    @Input() autoPlay: boolean = false;\n\n    @Input() transitionInterval: number = 4000;\n\n    @Input() showThumbnails: boolean = true;\n\n    @Input() thumbnailsPosition: string = \"bottom\";\n\n    @Input() verticalThumbnailViewPortHeight: string = \"300px\";\n\n    @Input() showIndicators: boolean = false;\n\n    @Input() showIndicatorsOnItem: boolean = false;\n\n    @Input() indicatorsPosition: string = \"bottom\";\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() maskClass: string;\n\n    @Input() containerClass: string;\n\n    @Input() containerStyle: any;\n\n    @Input() showTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @ViewChild('mask') mask: ElementRef;\n\n    @Input() get visible(): boolean {\n        return this._visible;\n    };\n\n    set visible(visible: boolean) {\n        this._visible = visible;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n\t@ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    _visible: boolean = false;\n\n    _activeIndex: number = 0;\n\n    headerFacet: any;\n\n    footerFacet: any;\n\n    indicatorFacet: any;\n\n    captionFacet: any;\n\n    maskVisible: boolean = false;\n\n    constructor(public element: ElementRef, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerFacet = item.template;\n                break;\n                case 'footer':\n                    this.footerFacet = item.template;\n                break;\n                case 'indicator':\n                    this.indicatorFacet = item.template;\n                break;\n                case 'caption':\n                    this.captionFacet = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnChanges(simpleChanges: SimpleChanges) {\n        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n            this.numVisible = simpleChanges.value.currentValue.length;\n        }\n    }\n\n    onMaskHide() {\n        this.visible = false;\n        this.visibleChange.emit(false);\n    }\n\n    onActiveItemChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeIndexChange.emit(index);\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.enableModality();\n            break;\n\n            case 'void':\n                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n               this.disableModality();\n            break;\n        }\n    }\n\n    enableModality() {\n        DomHandler.addClass(document.body, 'p-overflow-hidden');\n        this.cd.markForCheck();\n\n        if (this.mask) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n        }\n    }\n\n    disableModality() {\n        DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        this.maskVisible = false;\n        this.cd.markForCheck();\n\n        if (this.mask) {\n            ZIndexUtils.clear(this.mask.nativeElement);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.fullScreen) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.mask) {\n            this.disableModality()\n        }\n    }\n}\n\n@Component({\n    selector: 'p-galleriaContent',\n    template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaContent {\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex: number) {\n        this._activeIndex = activeIndex;\n    }\n\n    @Input() value: any[] = [];\n\n    @Input() numVisible: number;\n\n    @Output() maskHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() activeItemChange: EventEmitter<any> = new EventEmitter();\n\n    id: string = this.galleria.id || UniqueComponentId();\n\n    slideShowActicve: boolean = false;\n\n    _activeIndex: number = 0;\n\n    slideShowActive: boolean = true;\n\n    interval: any;\n\n    styleClass: string;\n\n    constructor(public galleria: Galleria, public cd: ChangeDetectorRef) { }\n\n    galleriaClass() {\n        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n\n        return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n    }\n\n    startSlideShow() {\n        this.interval = setInterval(() => {\n            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);\n            this.onActiveIndexChange(activeIndex);\n            this.activeIndex = activeIndex;\n        }, this.galleria.transitionInterval);\n\n        this.slideShowActive = true;\n    }\n\n    stopSlideShow() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n\n        this.slideShowActive = false;\n    }\n\n    getPositionClass(preClassName, position) {\n        const positions = ['top', 'left', 'bottom', 'right'];\n        const pos = positions.find(item => item === position);\n\n        return pos ? `${preClassName}-${pos}` : '';\n    }\n\n    isVertical() {\n        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n    }\n\n    onActiveIndexChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeItemChange.emit(this.activeIndex);\n        }\n    }\n}\n\n@Component({\n    selector: 'p-galleriaItemSlot',\n    template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaItemSlot {\n    @Input() templates: QueryList<any>;\n\n    @Input() index: number;\n\n    @Input() get item(): any {\n        return this._item;\n    };\n\n    set item(item:any) {\n        this._item = item;\n        if (this.templates) {\n            this.templates.forEach((item) => {\n                if (item.getType() === this.type) {\n                    switch(this.type) {\n                        case 'item':\n                        case 'caption':\n                        case 'thumbnail':\n                            this.context = {$implicit: this.item};\n                            this.contentTemplate = item.template;\n                        break;\n                    }\n                }\n            });\n        }\n    }\n\n    @Input() type: string;\n\n    contentTemplate: TemplateRef<any>;\n\n    context:any;\n\n    _item:any;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            if (item.getType() === this.type) {\n                switch(this.type) {\n                    case 'item':\n                    case 'caption':\n                    case 'thumbnail':\n                        this.context = {$implicit: this.item};\n                        this.contentTemplate = item.template;\n                    break;\n                    case 'indicator':\n                        this.context = {$implicit: this.index};\n                        this.contentTemplate = item.template;\n                    break;\n                    default:\n                        this.context = {};\n                        this.contentTemplate = item.template;\n                    break;\n                }\n            }\n        });\n    }\n}\n\n@Component({\n    selector: 'p-galleriaItem',\n    template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaItem implements OnInit {\n\n    @Input() circular: boolean = false;\n\n    @Input() value: any[];\n\n    @Input() showItemNavigators: boolean = false;\n\n    @Input() showIndicators: boolean = true;\n\n    @Input() slideShowActive: boolean = true;\n\n    @Input() changeItemOnIndicatorHover: boolean = true;\n\n    @Input() autoPlay: boolean = false;\n\n    @Input() templates: QueryList<any>;\n\n    @Input() indicatorFacet: any;\n\n    @Input() captionFacet: any;\n\n    @Output() startSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() stopSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onActiveIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n        this.activeItem = this.value[this._activeIndex];\n    }\n\n    _activeIndex: number = 0;\n\n    activeItem: any;\n\n    ngOnInit() {\n        if (this.autoPlay) {\n            this.startSlideShow.emit();\n        }\n    }\n\n    next() {\n        let nextItemIndex = this.activeIndex + 1;\n        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex\n                    ? 0\n                    : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n\n    prev() {\n        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n        let activeIndex = this.circular && this.activeIndex === 0\n                ? this.value.length - 1\n                : prevItemIndex\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n\n    navForward(e) {\n        this.stopTheSlideShow();\n        this.next();\n\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    navBackward(e) {\n        this.stopTheSlideShow();\n        this.prev();\n\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onIndicatorClick(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n\n    onIndicatorMouseEnter(index) {\n        if (this.changeItemOnIndicatorHover) {\n            this.stopTheSlideShow();\n            this.onActiveIndexChange.emit(index);\n        }\n    }\n\n    onIndicatorKeyDown(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n\n    isNavForwardDisabled() {\n        return !this.circular && this.activeIndex === (this.value.length - 1);\n    }\n\n    isNavBackwardDisabled() {\n        return !this.circular && this.activeIndex === 0;\n    }\n\n    isIndicatorItemActive(index) {\n        return this.activeIndex === index;\n    }\n}\n\n@Component({\n    selector: 'p-galleriaThumbnails',\n    template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaThumbnails implements OnInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n    @Input() containerId: string;\n\n    @Input() value: any[];\n\n    @Input() isVertical: boolean = false;\n\n    @Input() slideShowActive: boolean = false;\n\n    @Input() circular: boolean = false;\n\n    @Input() responsiveOptions: any[];\n\n    @Input() contentHeight: string = \"300px\";\n\n    @Input() showThumbnailNavigators = true;\n\n    @Input() templates: QueryList<any>;\n\n    @Output() onActiveIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() stopSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n    @Input() get numVisible(): number {\n        return this._numVisible;\n    };\n\n    set numVisible(numVisible) {\n        this._numVisible = numVisible;\n        this._oldNumVisible = this.d_numVisible;\n        this.d_numVisible = numVisible;\n    }\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._oldactiveIndex = this._activeIndex;\n        this._activeIndex = activeIndex;\n    }\n\n    index: number;\n\n    startPos = null;\n\n    thumbnailsStyle = null;\n\n    sortedResponsiveOptions = null;\n\n    totalShiftedItems: number = 0;\n\n    page: number = 0;\n\n    documentResizeListener: any;\n\n    _numVisible:number = 0;\n\n    d_numVisible: number = 0;\n\n    _oldNumVisible: number = 0;\n\n    _activeIndex: number = 0;\n\n    _oldactiveIndex: number = 0;\n\n    constructor(private cd: ChangeDetectorRef) { }\n\n    ngOnInit() {\n        this.createStyle();\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.bindDocumentListeners();\n\t\t}\n    }\n\n    ngAfterContentChecked() {\n        let totalShiftedItems = this.totalShiftedItems;\n\n        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n            if (this._activeIndex <= this.getMedianItemIndex()) {\n                totalShiftedItems = 0;\n            }\n            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;\n            }\n            else {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();\n            }\n\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n\n            if (this.itemsContainer && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100/ this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this.d_numVisible)}%, 0, 0)`;\n            }\n\n            if (this._oldactiveIndex !== this._activeIndex) {\n                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n            }\n\n            this._oldactiveIndex = this._activeIndex;\n            this._oldNumVisible = this.d_numVisible;\n        }\n    }\n\n    ngAfterViewInit() {\n\t\tthis.calculatePosition();\n    }\n\n    createStyle() {\n        if (!this.thumbnailsStyle) {\n            this.thumbnailsStyle = document.createElement('style');\n            this.thumbnailsStyle.type = 'text/css';\n            document.body.appendChild(this.thumbnailsStyle);\n        }\n\n        let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${ (100/ this.d_numVisible) }%\n            }\n        `;\n\n        if (this.responsiveOptions) {\n            this.sortedResponsiveOptions = [...this.responsiveOptions];\n            this.sortedResponsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return -1 * result;\n            });\n\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${ (100/ res.numVisible) }%\n                        }\n                    }\n                `\n            }\n        }\n\n        this.thumbnailsStyle.innerHTML = innerHTML;\n    }\n\n    calculatePosition() {\n        if (this.itemsContainer && this.sortedResponsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this._numVisible\n            };\n\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n\n            if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n                this.d_numVisible = matchedResponsiveData.numVisible;\n                this.cd.markForCheck();\n            }\n        }\n    }\n\n    getTabIndex(index) {\n        return this.isItemActive(index) ? 0 : null;\n    }\n\n    navForward(e) {\n        this.stopTheSlideShow();\n\n        let nextItemIndex = this._activeIndex + 1;\n        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {\n            this.step(-1);\n        }\n\n        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    navBackward(e) {\n        this.stopTheSlideShow();\n\n        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n        let diff = prevItemIndex + this.totalShiftedItems;\n        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {\n            this.step(1);\n        }\n\n        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onItemClick(index) {\n        this.stopTheSlideShow();\n\n        let selectedItemIndex = index;\n        if (selectedItemIndex !== this._activeIndex) {\n            const diff = selectedItemIndex + this.totalShiftedItems;\n            let dir = 0;\n            if (selectedItemIndex < this._activeIndex) {\n                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();\n                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {\n                    this.step(dir);\n                }\n            }\n            else {\n                dir = this.getMedianItemIndex() - diff;\n                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {\n                    this.step(dir);\n                }\n            }\n\n            this.activeIndex = selectedItemIndex;\n            this.onActiveIndexChange.emit(this.activeIndex);\n        }\n    }\n\n    step(dir) {\n        let totalShiftedItems = this.totalShiftedItems + dir;\n\n        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {\n            totalShiftedItems = this.d_numVisible - this.value.length;\n        }\n        else if (dir > 0 && totalShiftedItems > 0) {\n            totalShiftedItems = 0;\n        }\n\n        if (this.circular) {\n            if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n                totalShiftedItems = 0;\n            }\n            else if (dir > 0 && this._activeIndex === 0) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n        }\n\n        if (this.itemsContainer) {\n            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100/ this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this.d_numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n\n        this.totalShiftedItems = totalShiftedItems;\n    }\n\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n\n    changePageOnTouch(e, diff) {\n        if (diff < 0) {           // left\n            this.navForward(e);\n        }\n        else {                    // right\n            this.navBackward(e);\n        }\n    }\n\n    getTotalPageNumber() {\n        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;\n    }\n\n    getMedianItemIndex() {\n        let index = Math.floor(this.d_numVisible / 2);\n\n        return (this.d_numVisible % 2) ? index : index - 1;\n    }\n\n    onTransitionEnd() {\n        if (this.itemsContainer && this.itemsContainer.nativeElement) {\n            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transition = '';\n        }\n    }\n\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n\n        if (this.isVertical) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n\n    isNavBackwardDisabled() {\n        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);\n    }\n\n    isNavForwardDisabled() {\n        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);\n    }\n\n    firstItemAciveIndex() {\n        return this.totalShiftedItems * -1;\n    }\n\n    lastItemActiveIndex() {\n        return this.firstItemAciveIndex() + this.d_numVisible - 1;\n    }\n\n    isItemActive(index) {\n        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n    }\n\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = () => {\n                this.calculatePosition();\n            };\n\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n\n    unbindDocumentListeners() {\n        if(this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n\t\t\tthis.unbindDocumentListeners();\n        }\n\n        if (this.thumbnailsStyle) {\n            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n})\nexport class GalleriaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,192 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class GMap {
+    constructor(el, differs, cd, zone) {
+        this.el = el;
+        this.cd = cd;
+        this.zone = zone;
+        this.onMapClick = new EventEmitter();
+        this.onOverlayClick = new EventEmitter();
+        this.onOverlayDblClick = new EventEmitter();
+        this.onOverlayDragStart = new EventEmitter();
+        this.onOverlayDrag = new EventEmitter();
+        this.onOverlayDragEnd = new EventEmitter();
+        this.onMapReady = new EventEmitter();
+        this.onMapDragEnd = new EventEmitter();
+        this.onZoomChanged = new EventEmitter();
+        this.differ = differs.find([]).create(null);
+    }
+    ngAfterViewChecked() {
+        if (!this.map && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    initialize() {
+        this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);
+        this.onMapReady.emit({
+            map: this.map
+        });
+        if (this.overlays) {
+            for (let overlay of this.overlays) {
+                overlay.setMap(this.map);
+                this.bindOverlayEvents(overlay);
+            }
+        }
+        this.map.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onMapClick.emit(event);
+            });
+        });
+        this.map.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onMapDragEnd.emit(event);
+            });
+        });
+        this.map.addListener('zoom_changed', (event) => {
+            this.zone.run(() => {
+                this.onZoomChanged.emit(event);
+            });
+        });
+    }
+    bindOverlayEvents(overlay) {
+        overlay.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onOverlayClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dblclick', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDblClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        if (overlay.getDraggable()) {
+            this.bindDragEvents(overlay);
+        }
+    }
+    ngDoCheck() {
+        let changes = this.differ.diff(this.overlays);
+        if (changes && this.map) {
+            changes.forEachRemovedItem((record) => {
+                google.maps.event.clearInstanceListeners(record.item);
+                record.item.setMap(null);
+            });
+            changes.forEachAddedItem((record) => {
+                record.item.setMap(this.map);
+                record.item.addListener('click', (event) => {
+                    this.zone.run(() => {
+                        this.onOverlayClick.emit({
+                            originalEvent: event,
+                            overlay: record.item,
+                            map: this.map
+                        });
+                    });
+                });
+                if (record.item.getDraggable()) {
+                    this.bindDragEvents(record.item);
+                }
+            });
+        }
+    }
+    bindDragEvents(overlay) {
+        overlay.addListener('dragstart', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragStart.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('drag', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDrag.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragEnd.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+    }
+    getMap() {
+        return this.map;
+    }
+}
+GMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+GMap.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GMap, selector: "p-gmap", inputs: { style: "style", styleClass: "styleClass", options: "options", overlays: "overlays" }, outputs: { onMapClick: "onMapClick", onOverlayClick: "onOverlayClick", onOverlayDblClick: "onOverlayDblClick", onOverlayDragStart: "onOverlayDragStart", onOverlayDrag: "onOverlayDrag", onOverlayDragEnd: "onOverlayDragEnd", onMapReady: "onMapReady", onMapDragEnd: "onMapDragEnd", onZoomChanged: "onZoomChanged" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div [ngStyle]="style" [class]="styleClass"></div>`, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-gmap',
+                    template: `<div [ngStyle]="style" [class]="styleClass"></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], overlays: [{
+                type: Input
+            }], onMapClick: [{
+                type: Output
+            }], onOverlayClick: [{
+                type: Output
+            }], onOverlayDblClick: [{
+                type: Output
+            }], onOverlayDragStart: [{
+                type: Output
+            }], onOverlayDrag: [{
+                type: Output
+            }], onOverlayDragEnd: [{
+                type: Output
+            }], onMapReady: [{
+                type: Output
+            }], onMapDragEnd: [{
+                type: Output
+            }], onZoomChanged: [{
+                type: Output
+            }] } });
+class GMapModule {
+}
+GMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, declarations: [GMap], imports: [CommonModule], exports: [GMap] });
+GMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [GMap],
+                    declarations: [GMap]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { GMap, GMapModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-gmap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-gmap.mjs","sources":["../../src/app/components/gmap/gmap.ts","../../src/app/components/gmap/primeng-gmap.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,DoCheck,Input,Output,EventEmitter,IterableDiffers,ChangeDetectorRef,NgZone,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\ndeclare var google: any;\n\n@Component({\n    selector: 'p-gmap',\n    template: `<div [ngStyle]=\"style\" [class]=\"styleClass\"></div>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class GMap implements AfterViewChecked,DoCheck {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() options: any;\n\n    @Input() overlays: any[];\n\n    @Output() onMapClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDblClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDragStart: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDrag: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMapReady: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMapDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onZoomChanged: EventEmitter<any> = new EventEmitter();\n\n    differ: any;\n\n    map: any;\n\n    constructor(public el: ElementRef,differs: IterableDiffers, public cd: ChangeDetectorRef, public zone:NgZone) {\n        this.differ = differs.find([]).create(null);\n    }\n\n    ngAfterViewChecked() {\n        if (!this.map && this.el.nativeElement.offsetParent) {\n            this.initialize();\n        }\n    }\n\n    initialize() {\n        this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);\n        this.onMapReady.emit({\n            map: this.map\n        });\n\n        if (this.overlays) {\n            for(let overlay of this.overlays) {\n                overlay.setMap(this.map);\n                this.bindOverlayEvents(overlay);\n            }\n        }\n\n        this.map.addListener('click', (event) => {\n            this.zone.run(() => {\n                this.onMapClick.emit(event);\n            });\n        });\n\n        this.map.addListener('dragend', (event) => {\n            this.zone.run(() => {\n                this.onMapDragEnd.emit(event);\n            });\n        });\n\n        this.map.addListener('zoom_changed', (event) => {\n            this.zone.run(() => {\n                this.onZoomChanged.emit(event);\n            });\n        });\n    }\n\n    bindOverlayEvents(overlay: any) {\n        overlay.addListener('click', (event) => {\n            this.zone.run(() => {\n                this.onOverlayClick.emit({\n                    originalEvent: event,\n                    'overlay': overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('dblclick', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDblClick.emit({\n                    originalEvent: event,\n                    'overlay': overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        if (overlay.getDraggable()) {\n            this.bindDragEvents(overlay);\n        }\n    }\n\n    ngDoCheck() {\n        let changes = this.differ.diff(this.overlays);\n\n        if (changes && this.map) {\n            changes.forEachRemovedItem((record) => {\n                google.maps.event.clearInstanceListeners(record.item);\n                record.item.setMap(null);\n            });\n\n            changes.forEachAddedItem((record) => {\n                record.item.setMap(this.map);\n                record.item.addListener('click', (event) => {\n                    this.zone.run(() => {\n                        this.onOverlayClick.emit({\n                            originalEvent: event,\n                            overlay: record.item,\n                            map: this.map\n                        });\n                    });\n                });\n\n                if (record.item.getDraggable()) {\n                    this.bindDragEvents(record.item);\n                }\n            });\n        }\n    }\n\n    bindDragEvents(overlay) {\n        overlay.addListener('dragstart', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDragStart.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('drag', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDrag.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('dragend', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDragEnd.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n    }\n\n    getMap() {\n        return this.map;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [GMap],\n    declarations: [GMap]\n})\nexport class GMapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,274 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+
+class Image {
+    constructor(config, cd) {
+        this.config = config;
+        this.cd = cd;
+        this.preview = false;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.maskVisible = false;
+        this.previewVisible = false;
+        this.rotate = 0;
+        this.scale = 1;
+        this.previewClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'indicator':
+                    this.indicatorTemplate = item.template;
+                    break;
+                default:
+                    this.indicatorTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onImageClick() {
+        if (this.preview) {
+            this.maskVisible = true;
+            this.previewVisible = true;
+        }
+    }
+    onMaskClick() {
+        if (!this.previewClick) {
+            this.previewVisible = false;
+            this.rotate = 0;
+            this.scale = 1;
+        }
+        this.previewClick = false;
+    }
+    onPreviewImageClick() {
+        this.previewClick = true;
+    }
+    rotateRight() {
+        this.rotate += 90;
+        this.previewClick = true;
+    }
+    rotateLeft() {
+        this.rotate -= 90;
+        this.previewClick = true;
+    }
+    zoomIn() {
+        this.scale = this.scale + 0.1;
+        this.previewClick = true;
+    }
+    zoomOut() {
+        this.scale = this.scale - 0.1;
+        this.previewClick = true;
+    }
+    zoomDisabled() {
+        return this.scale <= 0.5 || this.scale >= 1.5;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                break;
+            case 'void':
+                DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(this.container);
+                this.maskVisible = false;
+                this.container = null;
+                this.wrapper = null;
+                this.cd.markForCheck();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    moveOnTop() {
+        ZIndexUtils.set('modal', this.container, this.config.zIndex.modal);
+        this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    imagePreviewStyle() {
+        return { transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')' };
+    }
+    containerClass() {
+        return {
+            'p-image p-component': true,
+            'p-image-preview-container': this.preview
+        };
+    }
+}
+Image.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Image.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Image, selector: "p-image", inputs: { imageClass: "imageClass", imageStyle: "imageStyle", styleClass: "styleClass", style: "style", src: "src", alt: "alt", width: "width", height: "height", appendTo: "appendTo", preview: "preview", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-image', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { imageClass: [{
+                type: Input
+            }], imageStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], src: [{
+                type: Input
+            }], alt: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], preview: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ImageModule {
+}
+ImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, declarations: [Image], imports: [CommonModule], exports: [Image, SharedModule] });
+ImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Image, SharedModule],
+                    declarations: [Image]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Image, ImageModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-image.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-image.mjs","sources":["../../src/app/components/image/image.ts","../../src/app/components/image/primeng-image.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, Output, EventEmitter, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig } from 'primeng/api';\nimport {trigger,style,transition,animate, AnimationEvent,} from '@angular/animations';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\n\n@Component({\n    selector: 'p-image',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <img [attr.src]=\"src\" [attr.alt]=\"alt\" [attr.width]=\"width\" [attr.height]=\"height\" [ngStyle]=\"imageStyle\" [class]=\"imageClass\" />\n            <div class=\"p-image-preview-indicator\" *ngIf=\"preview\" (click)=\"onImageClick()\">\n                <ng-container *ngIf=\"indicatorTemplate;else defaultTemplate\">\n                    <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #defaultTemplate>\n                    <i class=\"p-image-preview-icon pi pi-eye\"></i>\n                </ng-template>\n            </div>\n            <div #mask class=\"p-image-mask p-component-overlay p-component-overlay-enter\" *ngIf=\"maskVisible\" (click)=\"onMaskClick()\">\n                <div class=\"p-image-toolbar\">\n                    <button class=\"p-image-action p-link\" (click)=\"rotateRight()\" type=\"button\">\n                        <i class=\"pi pi-refresh\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"rotateLeft()\" type=\"button\">\n                        <i class=\"pi pi-undo\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"zoomDisabled()\">\n                        <i class=\"pi pi-search-minus\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"zoomDisabled()\">\n                        <i class=\"pi pi-search-plus\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" type=\"button\">\n                        <i class=\"pi pi-times\"></i>\n                    </button>\n                </div>\n                <div *ngIf=\"previewVisible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                    (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n                    <img [attr.src]=\"src\" class=\"p-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\"/>\n                </div>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./image.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Image implements AfterContentInit {\n\n    @Input() imageClass: string;\n\n    @Input() imageStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() src: string;\n\n    @Input() alt: string;\n\n    @Input() width: string;\n\n    @Input() height: string;\n\n    @Input() appendTo: any;\n\n    @Input() preview: boolean = false;\n\n    @Input() showTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('mask') mask: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    indicatorTemplate: TemplateRef<any>;\n\n    maskVisible: boolean = false;\n\n    previewVisible: boolean =  false;\n\n    rotate: number = 0;\n\n    scale: number = 1;\n\n    previewClick: boolean = false;\n\n    container: HTMLElement;\n\n    wrapper: HTMLElement;\n\n    constructor(private config: PrimeNGConfig, private cd: ChangeDetectorRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'indicator':\n                    this.indicatorTemplate = item.template;\n                break;\n\n                default:\n                    this.indicatorTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onImageClick() {\n        if (this.preview) {\n            this.maskVisible = true;\n            this.previewVisible = true;\n        }\n    }\n\n    onMaskClick() {\n        if (!this.previewClick) {\n            this.previewVisible = false;\n            this.rotate = 0;\n            this.scale = 1;\n        }\n\n        this.previewClick = false;\n    }\n\n    onPreviewImageClick() {\n        this.previewClick = true;\n    }\n\n    rotateRight() {\n        this.rotate += 90;\n        this.previewClick = true;\n    }\n\n    rotateLeft() {\n        this.rotate -= 90;\n        this.previewClick = true;\n    }\n\n    zoomIn() {\n        this.scale = this.scale + 0.1;\n        this.previewClick = true;\n    }\n\n    zoomOut() {\n        this.scale = this.scale - 0.1;\n        this.previewClick = true;\n    }\n\n    zoomDisabled() {\n        return this.scale <= 0.5 || this.scale >= 1.5;\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.appendContainer();\n                this.moveOnTop();\n            break;\n\n            case 'void':\n                DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(this.container);\n                this.maskVisible = false;\n                this.container = null;\n                this.wrapper = null;\n                this.cd.markForCheck();\n                this.onHide.emit({});\n            break;\n            case 'visible':\n                this.onShow.emit({});\n            break;\n        }\n    }\n\n    moveOnTop() {\n        ZIndexUtils.set('modal', this.container, this.config.zIndex.modal);\n        this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    imagePreviewStyle() {\n        return {transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')'};\n    }\n\n    containerClass() {\n        return {\n            'p-image p-component': true,\n            'p-image-preview-container': this.preview\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Image, SharedModule],\n    declarations: [Image]\n})\nexport class ImageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,159 @@
+import * as i0 from '@angular/core';
+import { Component, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i2 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { PrimeTemplate } from 'primeng/api';
+
+class InplaceDisplay {
+}
+InplaceDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceDisplay, selector: "p-inplaceDisplay", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceDisplay',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+class InplaceContent {
+}
+InplaceContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceContent, selector: "p-inplaceContent", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceContent',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+class Inplace {
+    constructor(cd) {
+        this.cd = cd;
+        this.closeIcon = 'pi pi-times';
+        this.onActivate = new EventEmitter();
+        this.onDeactivate = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'display':
+                    this.displayTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onActivateClick(event) {
+        if (!this.preventClick)
+            this.activate(event);
+    }
+    onDeactivateClick(event) {
+        if (!this.preventClick)
+            this.deactivate(event);
+    }
+    activate(event) {
+        if (!this.disabled) {
+            this.active = true;
+            this.onActivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    deactivate(event) {
+        if (!this.disabled) {
+            this.active = false;
+            this.hover = false;
+            this.onDeactivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 13) {
+            this.activate(event);
+            event.preventDefault();
+        }
+    }
+}
+Inplace.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Inplace.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Inplace, selector: "p-inplace", inputs: { active: "active", closable: "closable", disabled: "disabled", preventClick: "preventClick", style: "style", styleClass: "styleClass", closeIcon: "closeIcon" }, outputs: { onActivate: "onActivate", onDeactivate: "onDeactivate" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inplace', template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { active: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], preventClick: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onActivate: [{
+                type: Output
+            }], onDeactivate: [{
+                type: Output
+            }] } });
+class InplaceModule {
+}
+InplaceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InplaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, declarations: [Inplace, InplaceDisplay, InplaceContent], imports: [CommonModule, ButtonModule], exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule] });
+InplaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, imports: [[CommonModule, ButtonModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule],
+                    declarations: [Inplace, InplaceDisplay, InplaceContent]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Inplace, InplaceContent, InplaceDisplay, InplaceModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inplace.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inplace.mjs","sources":["../../src/app/components/inplace/inplace.ts","../../src/app/components/inplace/primeng-inplace.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, TemplateRef, QueryList, ContentChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {PrimeTemplate} from 'primeng/api';\n\n@Component({\n    selector: 'p-inplaceDisplay',\n    template: '<ng-content></ng-content>',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InplaceDisplay {}\n\n@Component({\n    selector: 'p-inplaceContent',\n    template: '<ng-content></ng-content>',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InplaceContent {}\n\n@Component({\n    selector: 'p-inplace',\n    template: `\n        <div [ngClass]=\"{'p-inplace p-component': true, 'p-inplace-closable': closable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-inplace-display\" (click)=\"onActivateClick($event)\" tabindex=\"0\" (keydown)=\"onKeydown($event)\"\n                [ngClass]=\"{'p-disabled':disabled}\" *ngIf=\"!active\">\n                <ng-content select=\"[pInplaceDisplay]\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"displayTemplate\"></ng-container>\n            </div>\n            <div class=\"p-inplace-content\" *ngIf=\"active\">\n                <ng-content select=\"[pInplaceContent]\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                <button type=\"button\" [icon]=\"closeIcon\" pButton (click)=\"onDeactivateClick($event)\" *ngIf=\"closable\"></button>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inplace.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Inplace implements AfterContentInit {\n\n    @Input() active: boolean;\n\n    @Input() closable: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() preventClick: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() closeIcon: string = 'pi pi-times';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onActivate: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDeactivate: EventEmitter<any> = new EventEmitter();\n\n    hover: boolean;\n\n    displayTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'display':\n                    this.displayTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onActivateClick(event) {\n        if (!this.preventClick)\n            this.activate(event);\n    }\n\n    onDeactivateClick(event) {\n        if (!this.preventClick)\n            this.deactivate(event);\n    }\n\n    activate(event?: Event) {\n        if (!this.disabled) {\n            this.active = true;\n            this.onActivate.emit(event);\n            this.cd.markForCheck();\n        }\n    }\n\n    deactivate(event?: Event) {\n        if (!this.disabled) {\n            this.active = false;\n            this.hover = false;\n            this.onDeactivate.emit(event);\n            this.cd.markForCheck();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.activate(event);\n            event.preventDefault();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule],\n    exports: [Inplace,InplaceDisplay,InplaceContent,ButtonModule],\n    declarations: [Inplace,InplaceDisplay,InplaceContent]\n})\nexport class InplaceModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,583 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+/*
+    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery
+    https://github.com/digitalBush/jquery.maskedinput/
+
+    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)
+
+    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.
+*/
+const INPUTMASK_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputMask),
+    multi: true
+};
+class InputMask {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.type = 'text';
+        this.slotChar = '_';
+        this.autoClear = true;
+        this.characterPattern = '[A-Za-z]';
+        this.onComplete = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        let ua = DomHandler.getUserAgent();
+        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
+        this.initMask();
+    }
+    get mask() {
+        return this._mask;
+    }
+    set mask(val) {
+        this._mask = val;
+        this.initMask();
+        this.writeValue('');
+        this.onModelChange(this.value);
+    }
+    initMask() {
+        this.tests = [];
+        this.partialPosition = this.mask.length;
+        this.len = this.mask.length;
+        this.firstNonMaskPos = null;
+        this.defs = {
+            '9': '[0-9]',
+            'a': this.characterPattern,
+            '*': `${this.characterPattern}|[0-9]`
+        };
+        let maskTokens = this.mask.split('');
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c == '?') {
+                this.len--;
+                this.partialPosition = i;
+            }
+            else if (this.defs[c]) {
+                this.tests.push(new RegExp(this.defs[c]));
+                if (this.firstNonMaskPos === null) {
+                    this.firstNonMaskPos = this.tests.length - 1;
+                }
+                if (i < this.partialPosition) {
+                    this.lastRequiredNonMaskPos = this.tests.length - 1;
+                }
+            }
+            else {
+                this.tests.push(null);
+            }
+        }
+        this.buffer = [];
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c != '?') {
+                if (this.defs[c])
+                    this.buffer.push(this.getPlaceholder(i));
+                else
+                    this.buffer.push(c);
+            }
+        }
+        this.defaultBuffer = this.buffer.join('');
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.value == undefined || this.value == null)
+                this.inputViewChild.nativeElement.value = '';
+            else
+                this.inputViewChild.nativeElement.value = this.value;
+            this.checkVal();
+            this.focusText = this.inputViewChild.nativeElement.value;
+            this.updateFilledState();
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    caret(first, last) {
+        let range, begin, end;
+        if (!this.inputViewChild.nativeElement.offsetParent || this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+            return;
+        }
+        if (typeof first == 'number') {
+            begin = first;
+            end = (typeof last === 'number') ? last : begin;
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                this.inputViewChild.nativeElement.setSelectionRange(begin, end);
+            }
+            else if (this.inputViewChild.nativeElement['createTextRange']) {
+                range = this.inputViewChild.nativeElement['createTextRange']();
+                range.collapse(true);
+                range.moveEnd('character', end);
+                range.moveStart('character', begin);
+                range.select();
+            }
+        }
+        else {
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                begin = this.inputViewChild.nativeElement.selectionStart;
+                end = this.inputViewChild.nativeElement.selectionEnd;
+            }
+            else if (document['selection'] && document['selection'].createRange) {
+                range = document['selection'].createRange();
+                begin = 0 - range.duplicate().moveStart('character', -100000);
+                end = begin + range.text.length;
+            }
+            return { begin: begin, end: end };
+        }
+    }
+    isCompleted() {
+        let completed;
+        for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {
+            if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    getPlaceholder(i) {
+        if (i < this.slotChar.length) {
+            return this.slotChar.charAt(i);
+        }
+        return this.slotChar.charAt(0);
+    }
+    seekNext(pos) {
+        while (++pos < this.len && !this.tests[pos])
+            ;
+        return pos;
+    }
+    seekPrev(pos) {
+        while (--pos >= 0 && !this.tests[pos])
+            ;
+        return pos;
+    }
+    shiftL(begin, end) {
+        let i, j;
+        if (begin < 0) {
+            return;
+        }
+        for (i = begin, j = this.seekNext(end); i < this.len; i++) {
+            if (this.tests[i]) {
+                if (j < this.len && this.tests[i].test(this.buffer[j])) {
+                    this.buffer[i] = this.buffer[j];
+                    this.buffer[j] = this.getPlaceholder(j);
+                }
+                else {
+                    break;
+                }
+                j = this.seekNext(j);
+            }
+        }
+        this.writeBuffer();
+        this.caret(Math.max(this.firstNonMaskPos, begin));
+    }
+    shiftR(pos) {
+        let i, c, j, t;
+        for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {
+            if (this.tests[i]) {
+                j = this.seekNext(i);
+                t = this.buffer[i];
+                this.buffer[i] = c;
+                if (j < this.len && this.tests[j].test(t)) {
+                    c = t;
+                }
+                else {
+                    break;
+                }
+            }
+        }
+    }
+    handleAndroidInput(e) {
+        var curVal = this.inputViewChild.nativeElement.value;
+        var pos = this.caret();
+        if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {
+            // a deletion or backspace happened
+            this.checkVal(true);
+            while (pos.begin > 0 && !this.tests[pos.begin - 1])
+                pos.begin--;
+            if (pos.begin === 0) {
+                while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])
+                    pos.begin++;
+            }
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+        else {
+            this.checkVal(true);
+            while (pos.begin < this.len && !this.tests[pos.begin])
+                pos.begin++;
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+    }
+    onInputBlur(e) {
+        this.focused = false;
+        this.onModelTouched();
+        this.checkVal();
+        this.updateFilledState();
+        this.onBlur.emit(e);
+        if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {
+            this.updateModel(e);
+            let event = document.createEvent('HTMLEvents');
+            event.initEvent('change', true, false);
+            this.inputViewChild.nativeElement.dispatchEvent(event);
+        }
+    }
+    onInputKeydown(e) {
+        if (this.readonly) {
+            return;
+        }
+        let k = e.which || e.keyCode, pos, begin, end;
+        let iPhone = /iphone/i.test(DomHandler.getUserAgent());
+        this.oldVal = this.inputViewChild.nativeElement.value;
+        this.onKeydown.emit(e);
+        //backspace, delete, and escape get special treatment
+        if (k === 8 || k === 46 || (iPhone && k === 127)) {
+            pos = this.caret();
+            begin = pos.begin;
+            end = pos.end;
+            if (end - begin === 0) {
+                begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));
+                end = k === 46 ? this.seekNext(end) : end;
+            }
+            this.clearBuffer(begin, end);
+            this.shiftL(begin, end - 1);
+            this.updateModel(e);
+            this.onInput.emit(e);
+            e.preventDefault();
+        }
+        else if (k === 13) { // enter
+            this.onInputBlur(e);
+            this.updateModel(e);
+        }
+        else if (k === 27) { // escape
+            this.inputViewChild.nativeElement.value = this.focusText;
+            this.caret(0, this.checkVal());
+            this.updateModel(e);
+            e.preventDefault();
+        }
+    }
+    onKeyPress(e) {
+        if (this.readonly) {
+            return;
+        }
+        var k = e.which || e.keyCode, pos = this.caret(), p, c, next, completed;
+        if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) { //Ignore
+            return;
+        }
+        else if (k && k !== 13) {
+            if (pos.end - pos.begin !== 0) {
+                this.clearBuffer(pos.begin, pos.end);
+                this.shiftL(pos.begin, pos.end - 1);
+            }
+            p = this.seekNext(pos.begin - 1);
+            if (p < this.len) {
+                c = String.fromCharCode(k);
+                if (this.tests[p].test(c)) {
+                    this.shiftR(p);
+                    this.buffer[p] = c;
+                    this.writeBuffer();
+                    next = this.seekNext(p);
+                    if (/android/i.test(DomHandler.getUserAgent())) {
+                        //Path for CSP Violation on FireFox OS 1.1
+                        let proxy = () => {
+                            this.caret(next);
+                        };
+                        setTimeout(proxy, 0);
+                    }
+                    else {
+                        this.caret(next);
+                    }
+                    if (pos.begin <= this.lastRequiredNonMaskPos) {
+                        completed = this.isCompleted();
+                    }
+                    this.onInput.emit(e);
+                }
+            }
+            e.preventDefault();
+        }
+        this.updateModel(e);
+        this.updateFilledState();
+        if (completed) {
+            this.onComplete.emit();
+        }
+    }
+    clearBuffer(start, end) {
+        let i;
+        for (i = start; i < end && i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+            }
+        }
+    }
+    writeBuffer() {
+        this.inputViewChild.nativeElement.value = this.buffer.join('');
+    }
+    checkVal(allow) {
+        //try to place characters where they belong
+        let test = this.inputViewChild.nativeElement.value, lastMatch = -1, i, c, pos;
+        for (i = 0, pos = 0; i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+                while (pos++ < test.length) {
+                    c = test.charAt(pos - 1);
+                    if (this.tests[i].test(c)) {
+                        this.buffer[i] = c;
+                        lastMatch = i;
+                        break;
+                    }
+                }
+                if (pos > test.length) {
+                    this.clearBuffer(i + 1, this.len);
+                    break;
+                }
+            }
+            else {
+                if (this.buffer[i] === test.charAt(pos)) {
+                    pos++;
+                }
+                if (i < this.partialPosition) {
+                    lastMatch = i;
+                }
+            }
+        }
+        if (allow) {
+            this.writeBuffer();
+        }
+        else if (lastMatch + 1 < this.partialPosition) {
+            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {
+                // Invalid value. Remove it and replace it with the
+                // mask, which is the default behavior.
+                if (this.inputViewChild.nativeElement.value)
+                    this.inputViewChild.nativeElement.value = '';
+                this.clearBuffer(0, this.len);
+            }
+            else {
+                // Invalid value, but we opt to show the value to the
+                // user and allow them to correct their mistake.
+                this.writeBuffer();
+            }
+        }
+        else {
+            this.writeBuffer();
+            this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);
+        }
+        return (this.partialPosition ? i : this.firstNonMaskPos);
+    }
+    onInputFocus(event) {
+        if (this.readonly) {
+            return;
+        }
+        this.focused = true;
+        clearTimeout(this.caretTimeoutId);
+        let pos;
+        this.focusText = this.inputViewChild.nativeElement.value;
+        pos = this.checkVal();
+        this.caretTimeoutId = setTimeout(() => {
+            if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+                return;
+            }
+            this.writeBuffer();
+            if (pos == this.mask.replace("?", "").length) {
+                this.caret(0, pos);
+            }
+            else {
+                this.caret(pos);
+            }
+        }, 10);
+        this.onFocus.emit(event);
+    }
+    onInputChange(event) {
+        if (this.androidChrome)
+            this.handleAndroidInput(event);
+        else
+            this.handleInputChange(event);
+        this.onInput.emit(event);
+    }
+    handleInputChange(event) {
+        if (this.readonly) {
+            return;
+        }
+        setTimeout(() => {
+            var pos = this.checkVal(true);
+            this.caret(pos);
+            this.updateModel(event);
+            if (this.isCompleted()) {
+                this.onComplete.emit();
+            }
+        }, 0);
+    }
+    getUnmaskedValue() {
+        let unmaskedBuffer = [];
+        for (let i = 0; i < this.buffer.length; i++) {
+            let c = this.buffer[i];
+            if (this.tests[i] && c != this.getPlaceholder(i)) {
+                unmaskedBuffer.push(c);
+            }
+        }
+        return unmaskedBuffer.join('');
+    }
+    updateModel(e) {
+        const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;
+        if (updatedValue !== null || updatedValue !== undefined) {
+            this.value = updatedValue;
+            this.onModelChange(this.value);
+        }
+    }
+    updateFilledState() {
+        this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+    }
+}
+InputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputMask.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputMask, selector: "p-inputMask", inputs: { type: "type", slotChar: "slotChar", autoClear: "autoClear", style: "style", inputId: "inputId", styleClass: "styleClass", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", disabled: "disabled", readonly: "readonly", unmask: "unmask", name: "name", required: "required", characterPattern: "characterPattern", autoFocus: "autoFocus", autocomplete: "autocomplete", mask: "mask" }, outputs: { onComplete: "onComplete", onFocus: "onFocus", onBlur: "onBlur", onInput: "onInput", onKeydown: "onKeydown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element" }, providers: [INPUTMASK_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`, isInline: true, directives: [{ type: i1.InputText, selector: "[pInputText]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inputMask',
+                    template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`,
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    },
+                    providers: [INPUTMASK_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], slotChar: [{
+                type: Input
+            }], autoClear: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], unmask: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], characterPattern: [{
+                type: Input
+            }], autoFocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input', { static: true }]
+            }], onComplete: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }], mask: [{
+                type: Input
+            }] } });
+class InputMaskModule {
+}
+InputMaskModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputMaskModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, declarations: [InputMask], imports: [CommonModule, InputTextModule], exports: [InputMask] });
+InputMaskModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [InputMask],
+                    declarations: [InputMask]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTMASK_VALUE_ACCESSOR, InputMask, InputMaskModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputmask.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputmask.mjs","sources":["../../src/app/components/inputmask/inputmask.ts","../../src/app/components/inputmask/primeng-inputmask.ts"],"sourcesContent":["/*\n    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery\n    https://github.com/digitalBush/jquery.maskedinput/\n\n    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)\n\n    Permission is hereby granted, free of charge, to any person\n    obtaining a copy of this software and associated documentation\n    files (the \"Software\"), to deal in the Software without\n    restriction, including without limitation the rights to use,\n    copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the\n    Software is furnished to do so, subject to the following\n    conditions:\n\n    The above copyright notice and this permission notice shall be\n    included in all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n    OTHER DEALINGS IN THE SOFTWARE.\n*/\nimport {NgModule,Component,ElementRef,OnInit,OnDestroy,Input,forwardRef,Output,EventEmitter,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const INPUTMASK_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputMask),\n  multi: true\n};\n\n@Component({\n    selector: 'p-inputMask',\n    template: `<input #input pInputText class=\"p-inputmask\" [attr.id]=\"inputId\" [attr.type]=\"type\" [attr.name]=\"name\" [ngStyle]=\"style\" [ngClass]=\"styleClass\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\"\n        [attr.size]=\"size\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\" [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n        (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (keydown)=\"onInputKeydown($event)\" (keypress)=\"onKeyPress($event)\" [attr.autofocus]=\"autoFocus\"\n        (input)=\"onInputChange($event)\" (paste)=\"handleInputChange($event)\">`,\n    host: {\n        'class': 'p-element',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [INPUTMASK_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class InputMask implements OnInit,OnDestroy,ControlValueAccessor {\n\n    @Input() type: string = 'text';\n\n    @Input() slotChar: string = '_';\n\n    @Input() autoClear: boolean = true;\n\n    @Input() style: any;\n\n    @Input() inputId: string;\n\n    @Input() styleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() size: number;\n\n    @Input() maxlength: number;\n\n    @Input() tabindex: string;\n\n    @Input() title: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() ariaRequired: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() unmask: boolean;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() characterPattern: string = '[A-Za-z]';\n\n    @Input() autoFocus: boolean;\n\n    @Input() autocomplete: string;\n\n    @ViewChild('input', { static: true }) inputViewChild: ElementRef;\n\n    @Output() onComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeydown: EventEmitter<any> = new EventEmitter();\n\n    value: any;\n\n    _mask: string;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    input: HTMLInputElement;\n\n    filled: boolean;\n\n    defs: any;\n\n    tests: any[];\n\n    partialPosition: any;\n\n    firstNonMaskPos: number;\n\n    lastRequiredNonMaskPos: any;\n\n    len: number;\n\n    oldVal: string;\n\n    buffer: any;\n\n    defaultBuffer: string;\n\n    focusText: string;\n\n    caretTimeoutId: any;\n\n    androidChrome: boolean;\n\n    focused: boolean;\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        let ua = DomHandler.getUserAgent();\n        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n\n        this.initMask();\n    }\n\n    @Input() get mask(): string {\n        return this._mask;\n    }\n\n    set mask(val:string) {\n        this._mask = val;\n\n        this.initMask();\n        this.writeValue('');\n        this.onModelChange(this.value);\n    }\n\n    initMask() {\n        this.tests = [];\n        this.partialPosition = this.mask.length;\n        this.len = this.mask.length;\n        this.firstNonMaskPos = null;\n        this.defs = {\n            '9': '[0-9]',\n            'a': this.characterPattern,\n            '*': `${this.characterPattern}|[0-9]`\n        };\n\n        let maskTokens = this.mask.split('');\n        for(let i = 0; i < maskTokens.length; i++) {\n            let c = maskTokens[i];\n            if (c == '?') {\n\t\t\t\tthis.len--;\n\t\t\t\tthis.partialPosition = i;\n\t\t\t}\n            else if (this.defs[c]) {\n\t\t\t\tthis.tests.push(new RegExp(this.defs[c]));\n\t\t\t\tif (this.firstNonMaskPos === null) {\n\t                this.firstNonMaskPos = this.tests.length - 1;\n\t\t\t\t}\n                if (i < this.partialPosition){\n                    this.lastRequiredNonMaskPos = this.tests.length - 1;\n                }\n\t\t\t}\n            else {\n\t\t\t\tthis.tests.push(null);\n\t\t\t}\n        }\n\n        this.buffer = [];\n        for(let i = 0; i < maskTokens.length; i++) {\n            let c = maskTokens[i];\n            if (c != '?') {\n                if (this.defs[c])\n                    this.buffer.push(this.getPlaceholder(i));\n                else\n                    this.buffer.push(c);\n            }\n        }\n        this.defaultBuffer = this.buffer.join('');\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            if (this.value == undefined || this.value == null)\n                this.inputViewChild.nativeElement.value = '';\n            else\n                this.inputViewChild.nativeElement.value = this.value;\n\n            this.checkVal();\n            this.focusText = this.inputViewChild.nativeElement.value;\n            this.updateFilledState();\n        }\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    caret(first?: number, last?: number) {\n        let range, begin, end;\n\n        if (!this.inputViewChild.nativeElement.offsetParent||this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {\n            return;\n        }\n\n        if (typeof first == 'number') {\n            begin = first;\n            end = (typeof last === 'number') ? last : begin;\n            if (this.inputViewChild.nativeElement.setSelectionRange) {\n                this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n            }\n            else if (this.inputViewChild.nativeElement['createTextRange']) {\n                range = this.inputViewChild.nativeElement['createTextRange']();\n                range.collapse(true);\n                range.moveEnd('character', end);\n                range.moveStart('character', begin);\n                range.select();\n            }\n        }\n        else {\n            if (this.inputViewChild.nativeElement.setSelectionRange) {\n    \t\t\tbegin = this.inputViewChild.nativeElement.selectionStart;\n    \t\t\tend = this.inputViewChild.nativeElement.selectionEnd;\n    \t\t}\n            else if (document['selection'] && document['selection'].createRange) {\n    \t\t\trange = document['selection'].createRange();\n    \t\t\tbegin = 0 - range.duplicate().moveStart('character', -100000);\n    \t\t\tend = begin + range.text.length;\n    \t\t}\n\n    \t\treturn {begin: begin, end: end};\n        }\n    }\n\n    isCompleted(): boolean {\n        let completed: boolean;\n        for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n            if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    getPlaceholder(i: number) {\n        if (i < this.slotChar.length) {\n            return this.slotChar.charAt(i);\n        }\n        return this.slotChar.charAt(0);\n    }\n\n    seekNext(pos) {\n        while (++pos < this.len && !this.tests[pos]);\n        return pos;\n    }\n\n    seekPrev(pos) {\n        while (--pos >= 0 && !this.tests[pos]);\n        return pos;\n    }\n\n    shiftL(begin:number,end:number) {\n        let i, j;\n\n        if (begin<0) {\n            return;\n        }\n\n        for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n            if (this.tests[i]) {\n                if (j < this.len && this.tests[i].test(this.buffer[j])) {\n                    this.buffer[i] = this.buffer[j];\n                    this.buffer[j] = this.getPlaceholder(j);\n                } else {\n                    break;\n                }\n\n                j = this.seekNext(j);\n            }\n        }\n        this.writeBuffer();\n        this.caret(Math.max(this.firstNonMaskPos, begin));\n    }\n\n    shiftR(pos) {\n        let i, c, j, t;\n\n        for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n            if (this.tests[i]) {\n                j = this.seekNext(i);\n                t = this.buffer[i];\n                this.buffer[i] = c;\n                if (j < this.len && this.tests[j].test(t)) {\n                    c = t;\n                } else {\n                    break;\n                }\n            }\n        }\n    }\n\n    handleAndroidInput(e) {\n        var curVal = this.inputViewChild.nativeElement.value;\n        var pos = this.caret();\n        if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length ) {\n            // a deletion or backspace happened\n            this.checkVal(true);\n            while (pos.begin > 0 && !this.tests[pos.begin-1])\n                  pos.begin--;\n            if (pos.begin === 0)\n            {\n               while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])\n                  pos.begin++;\n            }\n\n            setTimeout(() => {\n                this.caret(pos.begin, pos.begin);\n                this.updateModel(e);\n                if (this.isCompleted()) {\n                    this.onComplete.emit();\n                }\n            }, 0);\n        }\n        else {\n            this.checkVal(true);\n            while (pos.begin < this.len && !this.tests[pos.begin])\n                pos.begin++;\n\n            setTimeout(() => {\n                this.caret(pos.begin, pos.begin);\n                this.updateModel(e);\n                if (this.isCompleted()) {\n                    this.onComplete.emit();\n                }\n            }, 0);\n        }\n    }\n\n    onInputBlur(e) {\n        this.focused = false;\n        this.onModelTouched();\n        this.checkVal();\n        this.updateFilledState();\n        this.onBlur.emit(e);\n\n        if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {\n            this.updateModel(e);\n            let event = document.createEvent('HTMLEvents');\n            event.initEvent('change', true, false);\n            this.inputViewChild.nativeElement.dispatchEvent(event);\n        }\n    }\n\n    onInputKeydown(e) {\n        if (this.readonly) {\n            return;\n        }\n\n        let k = e.which||e.keyCode,\n            pos,\n            begin,\n            end;\n        let iPhone = /iphone/i.test(DomHandler.getUserAgent());\n        this.oldVal = this.inputViewChild.nativeElement.value;\n\n        this.onKeydown.emit(e);\n\n        //backspace, delete, and escape get special treatment\n        if (k === 8 || k === 46 || (iPhone && k === 127)) {\n            pos = this.caret();\n            begin = pos.begin;\n            end = pos.end;\n\n            if (end - begin === 0) {\n                begin=k!==46?this.seekPrev(begin):(end=this.seekNext(begin-1));\n                end=k===46?this.seekNext(end):end;\n            }\n\n            this.clearBuffer(begin, end);\n\t\t\tthis.shiftL(begin, end - 1);\n            this.updateModel(e);\n            this.onInput.emit(e);\n\n            e.preventDefault();\n        }\n        else if ( k === 13 ) { // enter\n            this.onInputBlur(e);\n            this.updateModel(e);\n        }\n        else if (k === 27) { // escape\n            this.inputViewChild.nativeElement.value = this.focusText;\n            this.caret(0, this.checkVal());\n            this.updateModel(e);\n\n            e.preventDefault();\n        }\n    }\n\n    onKeyPress(e) {\n        if (this.readonly){\n            return;\n        }\n\n        var k = e.which || e.keyCode,\n            pos = this.caret(),\n            p,\n            c,\n            next,\n            completed;\n\n        if (e.ctrlKey || e.altKey || e.metaKey || k < 32  || (k > 34 && k < 41)) {//Ignore\n            return;\n        } else if ( k && k !== 13 ) {\n            if (pos.end - pos.begin !== 0){\n                this.clearBuffer(pos.begin, pos.end);\n                this.shiftL(pos.begin, pos.end-1);\n            }\n\n            p = this.seekNext(pos.begin - 1);\n            if (p < this.len) {\n                c = String.fromCharCode(k);\n                if (this.tests[p].test(c)) {\n                    this.shiftR(p);\n\n                    this.buffer[p] = c;\n                    this.writeBuffer();\n                    next = this.seekNext(p);\n\n                    if (/android/i.test(DomHandler.getUserAgent())) {\n                        //Path for CSP Violation on FireFox OS 1.1\n                        let proxy = () => {\n                            this.caret(next);\n                        };\n\n                        setTimeout(proxy,0);\n                    }\n                    else {\n                        this.caret(next);\n                    }\n\n                    if (pos.begin <= this.lastRequiredNonMaskPos) {\n                        completed = this.isCompleted();\n                    }\n\n                    this.onInput.emit(e);\n                }\n            }\n            e.preventDefault();\n        }\n\n        this.updateModel(e);\n\n        this.updateFilledState();\n\n        if (completed) {\n            this.onComplete.emit();\n        }\n    }\n\n    clearBuffer(start, end) {\n        let i;\n        for (i = start; i < end && i < this.len; i++) {\n            if (this.tests[i]) {\n                this.buffer[i] = this.getPlaceholder(i);\n            }\n        }\n    }\n\n    writeBuffer() {\n        this.inputViewChild.nativeElement.value = this.buffer.join('');\n    }\n\n    checkVal(allow?: boolean) {\n        //try to place characters where they belong\n        let test = this.inputViewChild.nativeElement.value,\n            lastMatch = -1,\n            i,\n            c,\n            pos;\n\n        for (i = 0, pos = 0; i < this.len; i++) {\n            if (this.tests[i]) {\n                this.buffer[i] = this.getPlaceholder(i);\n                while (pos++ < test.length) {\n                    c = test.charAt(pos - 1);\n                    if (this.tests[i].test(c)) {\n                        this.buffer[i] = c;\n                        lastMatch = i;\n                        break;\n                    }\n                }\n                if (pos > test.length) {\n                    this.clearBuffer(i + 1, this.len);\n                    break;\n                }\n            } else {\n                if (this.buffer[i] === test.charAt(pos)) {\n                    pos++;\n                }\n                if ( i < this.partialPosition){\n                    lastMatch = i;\n                }\n            }\n        }\n        if (allow) {\n            this.writeBuffer();\n        } else if (lastMatch + 1 < this.partialPosition) {\n            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n                // Invalid value. Remove it and replace it with the\n                // mask, which is the default behavior.\n                if (this.inputViewChild.nativeElement.value) this.inputViewChild.nativeElement.value = '';\n                this.clearBuffer(0, this.len);\n            } else {\n                // Invalid value, but we opt to show the value to the\n                // user and allow them to correct their mistake.\n                this.writeBuffer();\n            }\n        } else {\n            this.writeBuffer();\n            this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);\n        }\n        return (this.partialPosition ? i : this.firstNonMaskPos);\n    }\n\n    onInputFocus(event) {\n        if (this.readonly){\n            return;\n        }\n\n        this.focused = true;\n\n        clearTimeout(this.caretTimeoutId);\n        let pos;\n\n        this.focusText = this.inputViewChild.nativeElement.value;\n\n        pos = this.checkVal();\n\n        this.caretTimeoutId = setTimeout(() => {\n            if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement){\n                return;\n            }\n            this.writeBuffer();\n            if (pos == this.mask.replace(\"?\",\"\").length) {\n                this.caret(0, pos);\n            } else {\n                this.caret(pos);\n            }\n        }, 10);\n\n        this.onFocus.emit(event);\n    }\n\n    onInputChange(event) {\n        if (this.androidChrome)\n            this.handleAndroidInput(event);\n        else\n            this.handleInputChange(event);\n\n        this.onInput.emit(event);\n    }\n\n    handleInputChange(event) {\n        if (this.readonly){\n            return;\n        }\n\n        setTimeout(() => {\n            var pos = this.checkVal(true);\n            this.caret(pos);\n            this.updateModel(event);\n            if (this.isCompleted()) {\n                this.onComplete.emit();\n            }\n        }, 0);\n    }\n\n    getUnmaskedValue() {\n        let unmaskedBuffer = [];\n        for(let i = 0; i < this.buffer.length; i++) {\n            let c = this.buffer[i];\n            if (this.tests[i] && c != this.getPlaceholder(i)) {\n                unmaskedBuffer.push(c);\n            }\n        }\n\n        return unmaskedBuffer.join('');\n    }\n\n    updateModel(e) {\n        const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;\n        if (updatedValue !== null || updatedValue !== undefined) {\n            this.value = updatedValue;\n            this.onModelChange(this.value);\n        }\n    }\n\n    updateFilledState() {\n        this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    ngOnDestroy() {\n\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\n    exports: [InputMask],\n    declarations: [InputMask]\n})\nexport class InputMaskModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,903 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i2 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const INPUTNUMBER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputNumber),
+    multi: true
+};
+class InputNumber {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.showButtons = false;
+        this.format = true;
+        this.buttonLayout = "stacked";
+        this.incrementButtonIcon = 'pi pi-angle-up';
+        this.decrementButtonIcon = 'pi pi-angle-down';
+        this.readonly = false;
+        this.step = 1;
+        this.allowEmpty = true;
+        this.mode = "decimal";
+        this.useGrouping = true;
+        this.onInput = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onKeyDown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.groupChar = '';
+        this.prefixChar = '';
+        this.suffixChar = '';
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(disabled) {
+        if (disabled)
+            this.focused = false;
+        this._disabled = disabled;
+        if (this.timer)
+            this.clearTimer();
+    }
+    ngOnChanges(simpleChange) {
+        const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
+        if (props.some(p => !!simpleChange[p])) {
+            this.updateConstructParser();
+        }
+    }
+    ngOnInit() {
+        this.constructParser();
+        this.initialized = true;
+    }
+    getOptions() {
+        return {
+            localeMatcher: this.localeMatcher,
+            style: this.mode,
+            currency: this.currency,
+            currencyDisplay: this.currencyDisplay,
+            useGrouping: this.useGrouping,
+            minimumFractionDigits: this.minFractionDigits,
+            maximumFractionDigits: this.maxFractionDigits
+        };
+    }
+    constructParser() {
+        this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
+        const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
+        const index = new Map(numerals.map((d, i) => [d, i]));
+        this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
+        this._group = this.getGroupingExpression();
+        this._minusSign = this.getMinusSignExpression();
+        this._currency = this.getCurrencyExpression();
+        this._decimal = this.getDecimalExpression();
+        this._suffix = this.getSuffixExpression();
+        this._prefix = this.getPrefixExpression();
+        this._index = d => index.get(d);
+    }
+    updateConstructParser() {
+        if (this.initialized) {
+            this.constructParser();
+        }
+    }
+    escapeRegExp(text) {
+        return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+    }
+    getDecimalExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, Object.assign(Object.assign({}, this.getOptions()), { useGrouping: false }));
+        return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getGroupingExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
+        this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
+        return new RegExp(`[${this.groupChar}]`, 'g');
+    }
+    getMinusSignExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
+        return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getCurrencyExpression() {
+        if (this.currency) {
+            const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
+        }
+        return new RegExp(`[]`, 'g');
+    }
+    getPrefixExpression() {
+        if (this.prefix) {
+            this.prefixChar = this.prefix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
+            this.prefixChar = formatter.format(1).split('1')[0];
+        }
+        return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
+    }
+    getSuffixExpression() {
+        if (this.suffix) {
+            this.suffixChar = this.suffix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            this.suffixChar = formatter.format(1).split('1')[1];
+        }
+        return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
+    }
+    formatValue(value) {
+        if (value != null) {
+            if (value === '-') { // Minus sign
+                return value;
+            }
+            if (this.format) {
+                let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
+                let formattedValue = formatter.format(value);
+                if (this.prefix) {
+                    formattedValue = this.prefix + formattedValue;
+                }
+                if (this.suffix) {
+                    formattedValue = formattedValue + this.suffix;
+                }
+                return formattedValue;
+            }
+            return value.toString();
+        }
+        return '';
+    }
+    parseValue(text) {
+        let filteredText = text
+            .replace(this._suffix, '')
+            .replace(this._prefix, '')
+            .trim()
+            .replace(/\s/g, '')
+            .replace(this._currency, '')
+            .replace(this._group, '')
+            .replace(this._minusSign, '-')
+            .replace(this._decimal, '.')
+            .replace(this._numeral, this._index);
+        if (filteredText) {
+            if (filteredText === '-') // Minus sign
+                return filteredText;
+            let parsedValue = +filteredText;
+            return isNaN(parsedValue) ? null : parsedValue;
+        }
+        return null;
+    }
+    repeat(event, interval, dir) {
+        if (this.readonly) {
+            return;
+        }
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue = this.parseValue(this.input.nativeElement.value) || 0;
+        let newValue = this.validateValue(currentValue + step);
+        if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
+            return;
+        }
+        this.updateInput(newValue, null, 'spin', null);
+        this.updateModel(event, newValue);
+        this.handleOnInput(event, currentValue, newValue);
+    }
+    onUpButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, 1);
+        event.preventDefault();
+    }
+    onUpButtonMouseUp() {
+        this.clearTimer();
+    }
+    onUpButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onUpButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, 1);
+        }
+    }
+    onUpButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, -1);
+        event.preventDefault();
+    }
+    onDownButtonMouseUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onDownButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, -1);
+        }
+    }
+    onUserInput(event) {
+        if (this.isSpecialChar) {
+            event.target.value = this.lastValue;
+        }
+        this.isSpecialChar = false;
+    }
+    onInputKeyDown(event) {
+        this.lastValue = event.target.value;
+        if (event.shiftKey || event.altKey) {
+            this.isSpecialChar = true;
+            return;
+        }
+        let selectionStart = event.target.selectionStart;
+        let selectionEnd = event.target.selectionEnd;
+        let inputValue = event.target.value;
+        let newValueStr = null;
+        if (event.altKey) {
+            event.preventDefault();
+        }
+        switch (event.which) {
+            //up
+            case 38:
+                this.spin(event, 1);
+                event.preventDefault();
+                break;
+            //down
+            case 40:
+                this.spin(event, -1);
+                event.preventDefault();
+                break;
+            //left
+            case 37:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {
+                    event.preventDefault();
+                }
+                break;
+            //right
+            case 39:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
+                this.input.nativeElement.value = this.formatValue(newValueStr);
+                this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
+                this.updateModel(event, newValueStr);
+                break;
+            //backspace
+            case 8: {
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart - 1);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            }
+            // del
+            case 46:
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-back-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            default:
+                break;
+        }
+        this.onKeyDown.emit(event);
+    }
+    onInputKeyPress(event) {
+        event.preventDefault();
+        let code = event.which || event.keyCode;
+        let char = String.fromCharCode(code);
+        const isDecimalSign = this.isDecimalSign(char);
+        const isMinusSign = this.isMinusSign(char);
+        if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
+            this.insert(event, char, { isDecimalSign, isMinusSign });
+        }
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            event.preventDefault();
+            let data = (event.clipboardData || window['clipboardData']).getData('Text');
+            if (data) {
+                let filteredData = this.parseValue(data);
+                if (filteredData != null) {
+                    this.insert(event, filteredData.toString());
+                }
+            }
+        }
+    }
+    allowMinusSign() {
+        return this.min == null || this.min < 0;
+    }
+    isMinusSign(char) {
+        if (this._minusSign.test(char) || char === '-') {
+            this._minusSign.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalSign(char) {
+        if (this._decimal.test(char)) {
+            this._decimal.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalMode() {
+        return this.mode === 'decimal';
+    }
+    getDecimalCharIndexes(val) {
+        let decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const filteredVal = val.replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '');
+        const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        return { decimalCharIndex, decimalCharIndexWithoutPrefix };
+    }
+    getCharIndexes(val) {
+        const decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const minusCharIndex = val.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        const suffixCharIndex = val.search(this._suffix);
+        this._suffix.lastIndex = 0;
+        const currencyCharIndex = val.search(this._currency);
+        this._currency.lastIndex = 0;
+        return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
+    }
+    insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
+        const minusCharIndexOnText = text.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
+            return;
+        }
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let selectionEnd = this.input.nativeElement.selectionEnd;
+        let inputValue = this.input.nativeElement.value.trim();
+        const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
+        let newValueStr;
+        if (sign.isMinusSign) {
+            if (selectionStart === 0) {
+                newValueStr = inputValue;
+                if (minusCharIndex === -1 || selectionEnd !== 0) {
+                    newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
+                }
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else if (sign.isDecimalSign) {
+            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
+                this.updateValue(event, inputValue, text, 'insert');
+            }
+            else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+            else if (decimalCharIndex === -1 && this.maxFractionDigits) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else {
+            const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
+            const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
+            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {
+                    const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);
+                    newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
+                    this.updateValue(event, newValueStr, text, operation);
+                }
+            }
+            else {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, operation);
+            }
+        }
+    }
+    insertText(value, text, start, end) {
+        let textSplit = text === '.' ? text : text.split('.');
+        if (textSplit.length === 2) {
+            const decimalCharIndex = value.slice(start, end).search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));
+        }
+        else if ((end - start) === value.length) {
+            return this.formatValue(text);
+        }
+        else if (start === 0) {
+            return text + value.slice(end);
+        }
+        else if (end === value.length) {
+            return value.slice(0, start) + text;
+        }
+        else {
+            return value.slice(0, start) + text + value.slice(end);
+        }
+    }
+    deleteRange(value, start, end) {
+        let newValueStr;
+        if ((end - start) === value.length)
+            newValueStr = '';
+        else if (start === 0)
+            newValueStr = value.slice(end);
+        else if (end === value.length)
+            newValueStr = value.slice(0, start);
+        else
+            newValueStr = value.slice(0, start) + value.slice(end);
+        return newValueStr;
+    }
+    initCursor() {
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let inputValue = this.input.nativeElement.value;
+        let valueLength = inputValue.length;
+        let index = null;
+        // remove prefix
+        let prefixLength = (this.prefixChar || '').length;
+        inputValue = inputValue.replace(this._prefix, '');
+        selectionStart = selectionStart - prefixLength;
+        let char = inputValue.charAt(selectionStart);
+        if (this.isNumeralChar(char)) {
+            return selectionStart + prefixLength;
+        }
+        //left
+        let i = selectionStart - 1;
+        while (i >= 0) {
+            char = inputValue.charAt(i);
+            if (this.isNumeralChar(char)) {
+                index = i + prefixLength;
+                break;
+            }
+            else {
+                i--;
+            }
+        }
+        if (index !== null) {
+            this.input.nativeElement.setSelectionRange(index + 1, index + 1);
+        }
+        else {
+            i = selectionStart;
+            while (i < valueLength) {
+                char = inputValue.charAt(i);
+                if (this.isNumeralChar(char)) {
+                    index = i + prefixLength;
+                    break;
+                }
+                else {
+                    i++;
+                }
+            }
+            if (index !== null) {
+                this.input.nativeElement.setSelectionRange(index, index);
+            }
+        }
+        return index || 0;
+    }
+    onInputClick() {
+        this.initCursor();
+    }
+    isNumeralChar(char) {
+        if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
+            this.resetRegex();
+            return true;
+        }
+        return false;
+    }
+    resetRegex() {
+        this._numeral.lastIndex = 0;
+        this._decimal.lastIndex = 0;
+        this._group.lastIndex = 0;
+        this._minusSign.lastIndex = 0;
+    }
+    updateValue(event, valueStr, insertedValueStr, operation) {
+        let currentValue = this.input.nativeElement.value;
+        let newValue = null;
+        if (valueStr != null) {
+            newValue = this.parseValue(valueStr);
+            newValue = !newValue && !this.allowEmpty ? 0 : newValue;
+            this.updateInput(newValue, insertedValueStr, operation, valueStr);
+            this.handleOnInput(event, currentValue, newValue);
+        }
+    }
+    handleOnInput(event, currentValue, newValue) {
+        if (this.isValueChanged(currentValue, newValue)) {
+            this.onInput.emit({ originalEvent: event, value: newValue });
+        }
+    }
+    isValueChanged(currentValue, newValue) {
+        if (newValue === null && currentValue !== null) {
+            return true;
+        }
+        if (newValue != null) {
+            let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;
+            return newValue !== parsedCurrentValue;
+        }
+        return false;
+    }
+    validateValue(value) {
+        if (value === '-' || value == null) {
+            return null;
+        }
+        if (this.min != null && value < this.min) {
+            return this.min;
+        }
+        if (this.max != null && value > this.max) {
+            return this.max;
+        }
+        return value;
+    }
+    updateInput(value, insertedValueStr, operation, valueStr) {
+        insertedValueStr = insertedValueStr || '';
+        let inputValue = this.input.nativeElement.value;
+        let newValue = this.formatValue(value);
+        let currentLength = inputValue.length;
+        if (newValue !== valueStr) {
+            newValue = this.concatValues(newValue, valueStr);
+        }
+        if (currentLength === 0) {
+            this.input.nativeElement.value = newValue;
+            this.input.nativeElement.setSelectionRange(0, 0);
+            const index = this.initCursor();
+            const selectionEnd = index + insertedValueStr.length;
+            this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+        }
+        else {
+            let selectionStart = this.input.nativeElement.selectionStart;
+            let selectionEnd = this.input.nativeElement.selectionEnd;
+            if (this.maxlength && this.maxlength < newValue.length) {
+                return;
+            }
+            this.input.nativeElement.value = newValue;
+            let newLength = newValue.length;
+            if (operation === 'range-insert') {
+                const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
+                const startValueStr = startValue !== null ? startValue.toString() : '';
+                const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
+                const sRegex = new RegExp(startExpr, 'g');
+                sRegex.test(newValue);
+                const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
+                const tRegex = new RegExp(tExpr, 'g');
+                tRegex.test(newValue.slice(sRegex.lastIndex));
+                selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (newLength === currentLength) {
+                if (operation === 'insert' || operation === 'delete-back-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
+                else if (operation === 'delete-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
+                else if (operation === 'delete-range' || operation === 'spin')
+                    this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (operation === 'delete-back-single') {
+                let prevChar = inputValue.charAt(selectionEnd - 1);
+                let nextChar = inputValue.charAt(selectionEnd);
+                let diff = currentLength - newLength;
+                let isGroupChar = this._group.test(nextChar);
+                if (isGroupChar && diff === 1) {
+                    selectionEnd += 1;
+                }
+                else if (!isGroupChar && this.isNumeralChar(prevChar)) {
+                    selectionEnd += (-1 * diff) + 1;
+                }
+                this._group.lastIndex = 0;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (inputValue === '-' && operation === 'insert') {
+                this.input.nativeElement.setSelectionRange(0, 0);
+                const index = this.initCursor();
+                const selectionEnd = index + insertedValueStr.length + 1;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else {
+                selectionEnd = selectionEnd + (newLength - currentLength);
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+        }
+        this.input.nativeElement.setAttribute('aria-valuenow', value);
+    }
+    concatValues(val1, val2) {
+        if (val1 && val2) {
+            let decimalCharIndex = val2.search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;
+        }
+        return val1;
+    }
+    getDecimalLength(value) {
+        if (value) {
+            const valueSplit = value.split(this._decimal);
+            if (valueSplit.length === 2) {
+                return valueSplit[1].replace(this._suffix, '')
+                    .trim()
+                    .replace(/\s/g, '')
+                    .replace(this._currency, '').length;
+            }
+        }
+        return 0;
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));
+        this.input.nativeElement.value = this.formatValue(newValue);
+        this.input.nativeElement.setAttribute('aria-valuenow', newValue);
+        this.updateModel(event, newValue);
+        this.onBlur.emit(event);
+    }
+    formattedValue() {
+        const val = !this.value && !this.allowEmpty ? 0 : this.value;
+        return this.formatValue(val);
+    }
+    updateModel(event, value) {
+        if (this.value !== value) {
+            this.value = value;
+            this.onModelChange(value);
+        }
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    getFormatter() {
+        return this.numberFormat;
+    }
+}
+InputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputNumber, selector: "p-inputNumber", inputs: { showButtons: "showButtons", format: "format", buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", name: "name", required: "required", autocomplete: "autocomplete", min: "min", max: "max", incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: "readonly", step: "step", allowEmpty: "allowEmpty", locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, isInline: true, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.InputText, selector: "[pInputText]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputNumber', template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], buttonLayout: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], incrementButtonClass: [{
+                type: Input
+            }], decrementButtonClass: [{
+                type: Input
+            }], incrementButtonIcon: [{
+                type: Input
+            }], decrementButtonIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], allowEmpty: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onInput: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onKeyDown: [{
+                type: Output
+            }], disabled: [{
+                type: Input
+            }] } });
+class InputNumberModule {
+}
+InputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule], exports: [InputNumber] });
+InputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, imports: [[CommonModule, InputTextModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule],
+                    exports: [InputNumber],
+                    declarations: [InputNumber]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTNUMBER_VALUE_ACCESSOR, InputNumber, InputNumberModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputnumber.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputnumber.mjs","sources":["../../src/app/components/inputnumber/inputnumber.ts","../../src/app/components/inputnumber/primeng-inputnumber.ts"],"sourcesContent":["\nimport {NgModule,Component,ChangeDetectionStrategy, Input, ElementRef, ViewChild, OnInit, EventEmitter, Output, forwardRef, ViewEncapsulation, ChangeDetectorRef, SimpleChanges} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => InputNumber),\n    multi: true\n};\n@Component({\n    selector: 'p-inputNumber',\n    template: `\n        <span [ngClass]=\"{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input #input [ngClass]=\"'p-inputnumber-input'\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" pInputText [value]=\"formattedValue()\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\" [attr.id]=\"inputId\"\n                [attr.size]=\"size\" [attr.name]=\"name\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [attr.required]=\"required\" [attr.aria-valuemin]=\"min\" [attr.aria-valuemax]=\"max\" [readonly]=\"readonly\" inputmode=\"decimal\"\n                (input)=\"onUserInput($event)\" (keydown)=\"onInputKeyDown($event)\" (keypress)=\"onInputKeyPress($event)\" (paste)=\"onPaste($event)\" (click)=\"onInputClick()\"\n                (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n            <span class=\"p-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\">\n                <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" [disabled]=\"disabled\"\n                    (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n                <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" [disabled]=\"disabled\"\n                    (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n            </span>\n            <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n                (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n            <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n                (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [INPUTNUMBER_VALUE_ACCESSOR],\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inputnumber.css'],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused'\n    }\n})\nexport class InputNumber implements OnInit,ControlValueAccessor {\n\n    @Input() showButtons: boolean = false;\n\n    @Input() format: boolean = true;\n\n    @Input() buttonLayout: string = \"stacked\";\n\n    @Input() inputId: string;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() placeholder: string;\n\n    @Input() size: number;\n\n    @Input() maxlength: number;\n\n    @Input() tabindex: string;\n\n    @Input() title: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() ariaRequired: boolean;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() autocomplete: string;\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() incrementButtonClass: string;\n\n    @Input() decrementButtonClass: string;\n\n    @Input() incrementButtonIcon: string = 'pi pi-angle-up';\n\n    @Input() decrementButtonIcon: string = 'pi pi-angle-down';\n\n    @Input() readonly: boolean = false;\n\n    @Input() step: number = 1;\n\n    @Input() allowEmpty: boolean = true;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() mode: string = \"decimal\";\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    @Input() minFractionDigits: number;\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: string;\n\n    @ViewChild('input') input: ElementRef;\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeyDown: EventEmitter<any> = new EventEmitter();\n\n    value: number;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    focused: boolean;\n\n    initialized: boolean;\n\n    groupChar: string = '';\n\n    prefixChar: string = '';\n\n    suffixChar: string = '';\n\n    isSpecialChar: boolean;\n\n    timer: any;\n\n    lastValue: string;\n\n    _numeral: any;\n\n    numberFormat: any;\n\n    _decimal: any;\n\n    _group: any;\n\n    _minusSign: any;\n\n    _currency: any;\n\n    _prefix: any;\n\n    _suffix: any;\n\n    _index: any;\n\n    _disabled: boolean;\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(disabled: boolean) {\n        if (disabled)\n            this.focused = false;\n\n        this._disabled = disabled;\n\n        if (this.timer)\n            this.clearTimer();\n    }\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef) { }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];\n        if (props.some(p => !!simpleChange[p])) {\n            this.updateConstructParser();\n        }\n    }\n\n    ngOnInit() {\n        this.constructParser();\n\n        this.initialized = true;\n    }\n\n    getOptions() {\n        return {\n            localeMatcher: this.localeMatcher,\n            style: this.mode,\n            currency: this.currency,\n            currencyDisplay: this.currencyDisplay,\n            useGrouping: this.useGrouping,\n            minimumFractionDigits: this.minFractionDigits,\n            maximumFractionDigits: this.maxFractionDigits\n        };\n    }\n\n    constructParser() {\n        this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n        const numerals = [...new Intl.NumberFormat(this.locale, {useGrouping: false}).format(9876543210)].reverse();\n        const index = new Map(numerals.map((d, i) => [d, i]));\n        this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n        this._group = this.getGroupingExpression();\n        this._minusSign = this.getMinusSignExpression();\n        this._currency = this.getCurrencyExpression();\n        this._decimal = this.getDecimalExpression();\n        this._suffix = this.getSuffixExpression();\n        this._prefix = this.getPrefixExpression();\n        this._index = d => index.get(d);\n    }\n\n    updateConstructParser() {\n        if (this.initialized) {\n            this.constructParser();\n        }\n    }\n\n    escapeRegExp(text) {\n        return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    }\n\n    getDecimalExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {...this.getOptions(), useGrouping: false});\n        return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n    }\n\n    getGroupingExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {useGrouping: true});\n        this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n        return new RegExp(`[${this.groupChar}]`, 'g');\n    }\n\n    getMinusSignExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n        return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n    }\n\n    getCurrencyExpression() {\n        if (this.currency) {\n            const formatter = new Intl.NumberFormat(this.locale, {style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,\n                minimumFractionDigits: 0, maximumFractionDigits: 0});\n            return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n        }\n\n        return new RegExp(`[]`,'g');\n    }\n\n    getPrefixExpression() {\n        if (this.prefix) {\n            this.prefixChar = this.prefix;\n        }\n        else {\n            const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay});\n            this.prefixChar = formatter.format(1).split('1')[0];\n        }\n\n        return new RegExp(`${this.escapeRegExp(this.prefixChar||'')}`, 'g');\n    }\n\n    getSuffixExpression() {\n        if (this.suffix) {\n            this.suffixChar = this.suffix;\n        }\n        else {\n            const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,\n                minimumFractionDigits: 0, maximumFractionDigits: 0});\n            this.suffixChar = formatter.format(1).split('1')[1];\n        }\n\n        return new RegExp(`${this.escapeRegExp(this.suffixChar||'')}`, 'g');\n    }\n\n    formatValue(value) {\n        if (value != null) {\n            if (value === '-') { // Minus sign\n                return value;\n            }\n\n            if (this.format) {\n                let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n                let formattedValue = formatter.format(value);\n                if (this.prefix) {\n                    formattedValue = this.prefix + formattedValue;\n                }\n\n                if (this.suffix) {\n                    formattedValue = formattedValue + this.suffix;\n                }\n\n                return formattedValue;\n            }\n\n            return value.toString();\n        }\n\n        return '';\n    }\n\n    parseValue(text) {\n        let filteredText = text\n                            .replace(this._suffix, '')\n                            .replace(this._prefix, '')\n                            .trim()\n                            .replace(/\\s/g, '')\n                            .replace(this._currency, '')\n                            .replace(this._group, '')\n                            .replace(this._minusSign, '-')\n                            .replace(this._decimal, '.')\n                            .replace(this._numeral, this._index);\n\n        if (filteredText) {\n            if (filteredText === '-') // Minus sign\n                return filteredText;\n\n            let parsedValue = +filteredText;\n            return isNaN(parsedValue) ? null : parsedValue;\n        }\n\n        return null;\n    }\n\n    repeat(event, interval, dir) {\n        if (this.readonly) {\n            return;\n        }\n\n        let i = interval || 500;\n\n        this.clearTimer();\n        this.timer = setTimeout(() => {\n            this.repeat(event, 40, dir);\n        }, i);\n\n        this.spin(event, dir);\n    }\n\n    spin(event, dir) {\n        let step = this.step * dir;\n        let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n        let newValue = this.validateValue(currentValue + step);\n        if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n            return;\n        }\n\n        this.updateInput(newValue, null, 'spin', null);\n        this.updateModel(event, newValue);\n\n        this.handleOnInput(event, currentValue, newValue);\n    }\n\n    onUpButtonMouseDown(event) {\n        this.input.nativeElement.focus();\n        this.repeat(event, null, 1);\n        event.preventDefault();\n    }\n\n    onUpButtonMouseUp() {\n        this.clearTimer();\n    }\n\n    onUpButtonMouseLeave() {\n        this.clearTimer();\n    }\n\n    onUpButtonKeyDown(event) {\n        if (event.keyCode === 32 || event.keyCode === 13) {\n            this.repeat(event, null, 1);\n        }\n    }\n\n    onUpButtonKeyUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonMouseDown(event) {\n        this.input.nativeElement.focus();\n        this.repeat(event, null, -1);\n        event.preventDefault();\n    }\n\n    onDownButtonMouseUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonMouseLeave() {\n        this.clearTimer();\n    }\n\n    onDownButtonKeyUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonKeyDown(event) {\n        if (event.keyCode === 32 || event.keyCode === 13) {\n            this.repeat(event, null, -1);\n        }\n    }\n\n    onUserInput(event) {\n        if (this.isSpecialChar) {\n            event.target.value = this.lastValue;\n        }\n        this.isSpecialChar = false;\n    }\n\n    onInputKeyDown(event) {\n        this.lastValue = event.target.value;\n        if (event.shiftKey || event.altKey) {\n            this.isSpecialChar = true;\n            return;\n        }\n\n        let selectionStart = event.target.selectionStart;\n        let selectionEnd = event.target.selectionEnd;\n        let inputValue = event.target.value;\n        let newValueStr = null;\n\n        if (event.altKey) {\n            event.preventDefault();\n        }\n\n        switch (event.which) {\n            //up\n            case 38:\n                this.spin(event, 1);\n                event.preventDefault();\n            break;\n\n            //down\n            case 40:\n                this.spin(event, -1);\n                event.preventDefault();\n            break;\n\n            //left\n            case 37:\n                if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n                    event.preventDefault();\n                }\n            break;\n\n            //right\n            case 39:\n                if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n                    event.preventDefault();\n                }\n            break;\n\n            //enter\n            case 13:\n                newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));\n                this.input.nativeElement.value = this.formatValue(newValueStr);\n                this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);\n                this.updateModel(event, newValueStr);\n            break;\n\n            //backspace\n            case 8: {\n                event.preventDefault();\n\n                if (selectionStart === selectionEnd) {\n                    const deleteChar = inputValue.charAt(selectionStart - 1);\n                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n                    if (this.isNumeralChar(deleteChar)) {\n                        const decimalLength = this.getDecimalLength(inputValue);\n\n                        if (this._group.test(deleteChar)) {\n                            this._group.lastIndex = 0;\n                            newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n                        }\n                        else if (this._decimal.test(deleteChar)) {\n                            this._decimal.lastIndex = 0;\n\n                            if (decimalLength) {\n                                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n                            }\n                            else {\n                                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n                            }\n                        }\n                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n                        }\n                        else if (decimalCharIndexWithoutPrefix === 1) {\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n                        }\n                        else {\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n                        }\n                    }\n\n                    this.updateValue(event, newValueStr, null, 'delete-single');\n                }\n                else {\n                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n                    this.updateValue(event, newValueStr, null, 'delete-range');\n                }\n\n                break;\n            }\n\n            // del\n            case 46:\n                event.preventDefault();\n\n                if (selectionStart === selectionEnd) {\n                    const deleteChar = inputValue.charAt(selectionStart);\n                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n                    if (this.isNumeralChar(deleteChar)) {\n                        const decimalLength = this.getDecimalLength(inputValue);\n\n                        if (this._group.test(deleteChar)) {\n                            this._group.lastIndex = 0;\n                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n                        }\n                        else if (this._decimal.test(deleteChar)) {\n                            this._decimal.lastIndex = 0;\n\n                            if (decimalLength) {\n                                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n                            }\n                            else {\n                                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n                            }\n                        }\n                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n                            newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n                        }\n                        else if (decimalCharIndexWithoutPrefix === 1) {\n                            newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n                        }\n                        else {\n                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n                        }\n                    }\n\n                    this.updateValue(event, newValueStr, null, 'delete-back-single');\n                }\n                else {\n                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n                    this.updateValue(event, newValueStr, null, 'delete-range');\n                }\n            break;\n\n            default:\n            break;\n        }\n\n        this.onKeyDown.emit(event);\n    }\n\n    onInputKeyPress(event) {\n        event.preventDefault();\n        let code = event.which || event.keyCode;\n        let char = String.fromCharCode(code);\n        const isDecimalSign = this.isDecimalSign(char);\n        const isMinusSign = this.isMinusSign(char);\n\n        if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n            this.insert(event, char, { isDecimalSign, isMinusSign });\n        }\n    }\n\n    onPaste(event) {\n        if (!this.disabled) {\n            event.preventDefault();\n            let data = (event.clipboardData || window['clipboardData']).getData('Text');\n            if (data) {\n                let filteredData = this.parseValue(data);\n                if (filteredData != null) {\n                    this.insert(event, filteredData.toString());\n                }\n            }\n        }\n    }\n\n    allowMinusSign() {\n        return this.min == null || this.min < 0;\n    }\n\n    isMinusSign(char) {\n        if (this._minusSign.test(char) || char === '-') {\n            this._minusSign.lastIndex = 0;\n            return true;\n        }\n\n        return false;\n    }\n\n    isDecimalSign(char) {\n        if (this._decimal.test(char)) {\n            this._decimal.lastIndex = 0;\n            return true;\n        }\n\n        return false;\n    }\n\n    isDecimalMode() {\n        return this.mode === 'decimal';\n    }\n\n    getDecimalCharIndexes(val) {\n        let decimalCharIndex = val.search(this._decimal);\n        this._decimal.lastIndex = 0;\n\n        const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n        const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n        this._decimal.lastIndex = 0;\n\n        return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n    }\n\n    getCharIndexes(val) {\n        const decimalCharIndex = val.search(this._decimal);\n        this._decimal.lastIndex = 0;\n        const minusCharIndex = val.search(this._minusSign);\n        this._minusSign.lastIndex = 0;\n        const suffixCharIndex = val.search(this._suffix);\n        this._suffix.lastIndex = 0;\n        const currencyCharIndex = val.search(this._currency);\n        this._currency.lastIndex = 0;\n\n        return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n    }\n\n    insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n        const minusCharIndexOnText = text.search(this._minusSign);\n        this._minusSign.lastIndex = 0;\n        if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n            return;\n        }\n\n        let selectionStart = this.input.nativeElement.selectionStart;\n        let selectionEnd = this.input.nativeElement.selectionEnd;\n        let inputValue = this.input.nativeElement.value.trim();\n        const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n        let newValueStr;\n\n        if (sign.isMinusSign) {\n            if (selectionStart === 0) {\n                newValueStr = inputValue;\n                if (minusCharIndex === -1 || selectionEnd !== 0) {\n                    newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n                }\n\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n        }\n        else if (sign.isDecimalSign) {\n            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n                this.updateValue(event, inputValue, text, 'insert');\n            }\n            else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n            else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n        }\n        else {\n            const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n            const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {\n                    const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);\n\n                    newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n                    this.updateValue(event, newValueStr, text, operation);\n                }\n            }\n            else {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, operation);\n            }\n        }\n    }\n\n    insertText(value, text, start, end) {\n        let textSplit = text === '.' ? text : text.split('.');\n\n        if (textSplit.length === 2) {\n            const decimalCharIndex = value.slice(start, end).search(this._decimal);\n            this._decimal.lastIndex = 0;\n            return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));\n        }\n        else if ((end - start) === value.length) {\n            return this.formatValue(text);\n        }\n        else if (start === 0) {\n            return text + value.slice(end);\n        }\n        else if (end === value.length) {\n            return value.slice(0, start) + text;\n        }\n        else {\n            return value.slice(0, start) + text + value.slice(end);\n        }\n    }\n\n    deleteRange(value, start, end) {\n        let newValueStr;\n\n        if ((end - start) === value.length)\n            newValueStr = '';\n        else if (start === 0)\n            newValueStr = value.slice(end);\n        else if (end === value.length)\n            newValueStr = value.slice(0, start);\n        else\n            newValueStr = value.slice(0, start) + value.slice(end);\n\n        return newValueStr;\n    }\n\n    initCursor() {\n        let selectionStart = this.input.nativeElement.selectionStart;\n        let inputValue = this.input.nativeElement.value;\n        let valueLength = inputValue.length;\n        let index = null;\n\n        // remove prefix\n        let prefixLength = (this.prefixChar || '').length;\n        inputValue = inputValue.replace(this._prefix, '');\n        selectionStart = selectionStart - prefixLength;\n\n        let char = inputValue.charAt(selectionStart);\n        if (this.isNumeralChar(char)) {\n            return selectionStart + prefixLength;\n        }\n\n        //left\n        let i = selectionStart - 1;\n        while (i >= 0) {\n            char = inputValue.charAt(i);\n            if (this.isNumeralChar(char)) {\n                index = i + prefixLength;\n                break;\n            }\n            else {\n                i--;\n            }\n        }\n\n        if (index !== null) {\n            this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n        }\n        else {\n            i = selectionStart;\n            while (i < valueLength) {\n                char = inputValue.charAt(i);\n                if (this.isNumeralChar(char)) {\n                    index = i + prefixLength;\n                    break;\n                }\n                else {\n                    i++;\n                }\n            }\n\n            if (index !== null) {\n                this.input.nativeElement.setSelectionRange(index, index);\n            }\n        }\n\n        return index || 0;\n    }\n\n    onInputClick() {\n        this.initCursor();\n    }\n\n    isNumeralChar(char) {\n        if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n            this.resetRegex();\n            return true;\n        }\n\n        return false;\n    }\n\n    resetRegex() {\n        this._numeral.lastIndex =  0;\n        this._decimal.lastIndex =  0;\n        this._group.lastIndex =  0;\n        this._minusSign.lastIndex =  0;\n    }\n\n    updateValue(event, valueStr, insertedValueStr, operation) {\n        let currentValue = this.input.nativeElement.value;\n        let newValue = null;\n\n        if (valueStr != null) {\n            newValue = this.parseValue(valueStr);\n            newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n            this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n            this.handleOnInput(event, currentValue, newValue);\n        }\n    }\n\n    handleOnInput(event, currentValue, newValue) {\n        if (this.isValueChanged(currentValue, newValue)) {\n            this.onInput.emit({ originalEvent: event, value: newValue });\n        }\n    }\n\n    isValueChanged(currentValue, newValue) {\n        if (newValue === null && currentValue !== null) {\n            return true;\n        }\n\n        if (newValue != null) {\n            let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;\n            return newValue !== parsedCurrentValue;\n        }\n\n        return false;\n    }\n\n    validateValue(value) {\n        if (value === '-' || value == null) {\n            return null;\n        }\n\n        if (this.min != null && value < this.min) {\n            return this.min;\n        }\n\n        if (this.max != null && value > this.max) {\n            return this.max;\n        }\n\n        return value;\n    }\n\n    updateInput(value, insertedValueStr, operation, valueStr) {\n        insertedValueStr = insertedValueStr || '';\n\n        let inputValue = this.input.nativeElement.value;\n        let newValue = this.formatValue(value);\n        let currentLength = inputValue.length;\n\n        if (newValue !== valueStr) {\n            newValue = this.concatValues(newValue, valueStr);\n        }\n\n        if (currentLength === 0) {\n            this.input.nativeElement.value = newValue;\n            this.input.nativeElement.setSelectionRange(0, 0);\n            const index = this.initCursor();\n            const selectionEnd = index + insertedValueStr.length;\n            this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n        }\n        else {\n            let selectionStart = this.input.nativeElement.selectionStart;\n            let selectionEnd = this.input.nativeElement.selectionEnd;\n            if (this.maxlength && this.maxlength < newValue.length) {\n                return;\n            }\n\n            this.input.nativeElement.value = newValue;\n            let newLength = newValue.length;\n\n            if (operation === 'range-insert') {\n                const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n                const startValueStr = startValue !== null ? startValue.toString() : '';\n                const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n                const sRegex = new RegExp(startExpr, 'g');\n                sRegex.test(newValue);\n\n                const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n                const tRegex = new RegExp(tExpr, 'g');\n                tRegex.test(newValue.slice(sRegex.lastIndex));\n\n                selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (newLength === currentLength) {\n                if (operation === 'insert' || operation === 'delete-back-single')\n                    this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n                else if (operation === 'delete-single')\n                    this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n                else if (operation === 'delete-range' || operation === 'spin')\n                    this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (operation === 'delete-back-single') {\n                let prevChar = inputValue.charAt(selectionEnd - 1);\n                let nextChar = inputValue.charAt(selectionEnd);\n                let diff = currentLength - newLength;\n                let isGroupChar = this._group.test(nextChar);\n\n                if (isGroupChar && diff === 1) {\n                    selectionEnd += 1;\n                }\n                else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n                    selectionEnd += (-1 * diff) + 1;\n                }\n\n                this._group.lastIndex = 0;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (inputValue === '-' && operation === 'insert') {\n                this.input.nativeElement.setSelectionRange(0, 0);\n                const index = this.initCursor();\n                const selectionEnd = index + insertedValueStr.length + 1;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else {\n                selectionEnd = selectionEnd + (newLength - currentLength);\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n        }\n\n        this.input.nativeElement.setAttribute('aria-valuenow', value);\n    }\n\n    concatValues(val1, val2) {\n        if (val1 && val2) {\n            let decimalCharIndex = val2.search(this._decimal);\n            this._decimal.lastIndex = 0;\n\n            return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;\n        }\n\n        return val1;\n    }\n\n    getDecimalLength(value) {\n        if (value) {\n            const valueSplit = value.split(this._decimal);\n\n            if (valueSplit.length === 2) {\n                return valueSplit[1].replace(this._suffix, '')\n                            .trim()\n                            .replace(/\\s/g, '')\n                            .replace(this._currency, '').length;\n            }\n        }\n\n        return 0;\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n\n        let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n        this.input.nativeElement.value = this.formatValue(newValue);\n        this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n        this.updateModel(event, newValue);\n\n        this.onBlur.emit(event);\n    }\n\n    formattedValue() {\n        const val = !this.value && !this.allowEmpty ? 0 : this.value;\n        return this.formatValue(val);\n    }\n\n    updateModel(event, value) {\n        if (this.value !== value) {\n            this.value = value;\n            this.onModelChange(value);\n        }\n\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get filled() {\n        return (this.value != null && this.value.toString().length > 0)\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n        }\n    }\n\n    getFormatter() {\n        return this.numberFormat;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule, ButtonModule],\n    exports: [InputNumber],\n    declarations: [InputNumber]\n})\nexport class InputNumberModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const INPUTSWITCH_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputSwitch),
+    multi: true
+};
+class InputSwitch {
+    constructor(cd) {
+        this.cd = cd;
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.modelValue = false;
+        this.focused = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, cb) {
+        if (!this.disabled && !this.readonly) {
+            event.preventDefault();
+            this.toggle(event);
+            cb.focus();
+        }
+    }
+    onInputChange(event) {
+        if (!this.readonly) {
+            const inputChecked = event.target.checked;
+            this.updateModel(event, inputChecked);
+        }
+    }
+    toggle(event) {
+        this.updateModel(event, !this.checked());
+    }
+    updateModel(event, value) {
+        this.modelValue = value ? this.trueValue : this.falseValue;
+        this.onModelChange(this.modelValue);
+        this.onChange.emit({
+            originalEvent: event,
+            checked: this.modelValue
+        });
+    }
+    onFocus(event) {
+        this.focused = true;
+    }
+    onBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.modelValue = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.modelValue === this.trueValue;
+    }
+}
+InputSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputSwitch, selector: "p-inputSwitch", inputs: { style: "style", styleClass: "styleClass", tabindex: "tabindex", inputId: "inputId", name: "name", disabled: "disabled", readonly: "readonly", trueValue: "trueValue", falseValue: "falseValue", ariaLabelledBy: "ariaLabelledBy" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [INPUTSWITCH_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, isInline: true, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputSwitch', template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, providers: [INPUTSWITCH_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class InputSwitchModule {
+}
+InputSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, declarations: [InputSwitch], imports: [CommonModule], exports: [InputSwitch] });
+InputSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputSwitch],
+                    declarations: [InputSwitch]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTSWITCH_VALUE_ACCESSOR, InputSwitch, InputSwitchModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputswitch.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputswitch.mjs","sources":["../../src/app/components/inputswitch/inputswitch.ts","../../src/app/components/inputswitch/primeng-inputswitch.ts"],"sourcesContent":["import {NgModule,Component,Input,forwardRef,EventEmitter,Output,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR,ControlValueAccessor} from '@angular/forms';\n\nexport const INPUTSWITCH_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputSwitch),\n  multi: true\n};\n\n@Component({\n    selector: 'p-inputSwitch',\n    template: `\n        <div [ngClass]=\"{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}\"\n            [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onClick($event, cb)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.tabindex]=\"tabindex\" [checked]=\"checked()\" (change)=\"onInputChange($event)\"\n                    (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [disabled]=\"disabled\" role=\"switch\" [attr.aria-checked]=\"checked()\" [attr.aria-labelledby]=\"ariaLabelledBy\"/>\n            </div>\n            <span class=\"p-inputswitch-slider\"></span>\n        </div>\n    `,\n    providers: [INPUTSWITCH_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inputswitch.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InputSwitch implements ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() trueValue: any = true;\n\n    @Input() falseValue: any = false;\n\n    @Input() ariaLabelledBy: string;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    modelValue: any = false;\n\n    focused: boolean = false;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    onClick(event: Event, cb: HTMLInputElement) {\n        if (!this.disabled && !this.readonly) {\n            event.preventDefault();\n            this.toggle(event);\n            cb.focus();\n        }\n    }\n\n    onInputChange(event: Event) {\n        if (!this.readonly) {\n            const inputChecked = (<HTMLInputElement> event.target).checked;\n            this.updateModel(event, inputChecked);\n        }\n    }\n\n    toggle(event: Event) {\n        this.updateModel(event, !this.checked());\n    }\n\n    updateModel(event: Event, value: boolean) {\n        this.modelValue = value ? this.trueValue : this.falseValue;\n        this.onModelChange(this.modelValue);\n        this.onChange.emit({\n            originalEvent: event,\n            checked: this.modelValue\n        });\n    }\n\n    onFocus(event: Event) {\n        this.focused = true;\n    }\n\n    onBlur(event: Event) {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.modelValue = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    checked() {\n        return this.modelValue === this.trueValue;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputSwitch],\n    declarations: [InputSwitch]\n})\nexport class InputSwitchModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,64 @@
+import * as i0 from '@angular/core';
+import { Directive, Optional, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/forms';
+
+class InputText {
+    constructor(el, ngModel, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.cd = cd;
+    }
+    ngAfterViewInit() {
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||
+            (this.ngModel && this.ngModel.model);
+    }
+}
+InputText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputText, selector: "[pInputText]", host: { listeners: { "input": "onInput($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputText]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                        type: Optional
+                    }] }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }] } });
+class InputTextModule {
+}
+InputTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, declarations: [InputText], imports: [CommonModule], exports: [InputText] });
+InputTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputText],
+                    declarations: [InputText]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { InputText, InputTextModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtext.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputtext.mjs","sources":["../../src/app/components/inputtext/inputtext.ts","../../src/app/components/inputtext/primeng-inputtext.ts"],"sourcesContent":["import {NgModule, Directive, ElementRef, HostListener, DoCheck, Optional, ChangeDetectorRef, AfterViewInit} from '@angular/core';\nimport {NgModel} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\n\n@Directive({\n    selector: '[pInputText]',\n    host: {\n        'class': 'p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled'\n    }\n})\nexport class InputText implements DoCheck, AfterViewInit {\n\n    filled: boolean;\n\n    constructor(public el: ElementRef, @Optional() public ngModel: NgModel, private cd: ChangeDetectorRef) {\n    }\n\n    ngAfterViewInit() {\n        this.updateFilledState();\n        this.cd.detectChanges();\n    }\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||\n            (this.ngModel && this.ngModel.model);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputText],\n    declarations: [InputText]\n})\nexport class InputTextModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAWa,SAAS;IAIlB,YAAmB,EAAc,EAAqB,OAAgB,EAAU,EAAqB;QAAlF,OAAE,GAAF,EAAE,CAAY;QAAqB,YAAO,GAAP,OAAO,CAAS;QAAU,OAAE,GAAF,EAAE,CAAmB;KACpG;IAED,eAAe;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,SAAS;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAGD,OAAO,CAAC,CAAC;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,iBAAiB;QACb,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;aAC3E,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5C;;sGAxBQ,SAAS;0FAAT,SAAS;2FAAT,SAAS;kBAPrB,SAAS;mBAAC;oBACP,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE;wBACF,OAAO,EAAE,mCAAmC;wBAC5C,kBAAkB,EAAE,QAAQ;qBAC/B;iBACJ;;;8BAKuC,QAAQ;;yBAa5C,OAAO;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;MAgBxB,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBAhCf,SAAS,aA4BR,YAAY,aA5Bb,SAAS;6GAgCT,eAAe,YAJf,CAAC,YAAY,CAAC;2FAId,eAAe;kBAL3B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;AC1CD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Directive, Optional, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/forms';
+
+class InputTextarea {
+    constructor(el, ngModel, control, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.control = control;
+        this.cd = cd;
+        this.onResize = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.ngModel) {
+            this.ngModelSubscription = this.ngModel.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+        if (this.control) {
+            this.ngControlSubscription = this.control.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+    }
+    ngAfterViewInit() {
+        if (this.autoResize)
+            this.resize();
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    onInput(e) {
+        this.updateState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    onFocus(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    onBlur(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    resize(event) {
+        this.el.nativeElement.style.height = 'auto';
+        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';
+        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {
+            this.el.nativeElement.style.overflowY = "scroll";
+            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;
+        }
+        else {
+            this.el.nativeElement.style.overflow = "hidden";
+        }
+        this.onResize.emit(event || {});
+    }
+    updateState() {
+        this.updateFilledState();
+        if (this.autoResize) {
+            this.resize();
+        }
+    }
+    ngOnDestroy() {
+        if (this.ngModelSubscription) {
+            this.ngModelSubscription.unsubscribe();
+        }
+        if (this.ngControlSubscription) {
+            this.ngControlSubscription.unsubscribe();
+        }
+    }
+}
+InputTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i1.NgControl, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputTextarea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputTextarea, selector: "[pInputTextarea]", inputs: { autoResize: "autoResize" }, outputs: { onResize: "onResize" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus($event)", "blur": "onBlur($event)" }, properties: { "class.p-filled": "filled", "class.p-inputtextarea-resizable": "autoResize" }, classAttribute: "p-inputtextarea p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputTextarea]',
+                    host: {
+                        'class': 'p-inputtextarea p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled',
+                        '[class.p-inputtextarea-resizable]': 'autoResize'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                        type: Optional
+                    }] }, { type: i1.NgControl, decorators: [{
+                        type: Optional
+                    }] }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { autoResize: [{
+                type: Input
+            }], onResize: [{
+                type: Output
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus', ['$event']]
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur', ['$event']]
+            }] } });
+class InputTextareaModule {
+}
+InputTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, declarations: [InputTextarea], imports: [CommonModule], exports: [InputTextarea] });
+InputTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputTextarea],
+                    declarations: [InputTextarea]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { InputTextarea, InputTextareaModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-inputtextarea.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputtextarea.mjs","sources":["../../src/app/components/inputtextarea/inputtextarea.ts","../../src/app/components/inputtextarea/primeng-inputtextarea.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,Output, EventEmitter,Optional, AfterViewInit, OnInit, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {NgModel, NgControl} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n    selector: '[pInputTextarea]',\n    host: {\n        'class': 'p-inputtextarea p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled',\n        '[class.p-inputtextarea-resizable]': 'autoResize'\n    }\n})\nexport class InputTextarea implements OnInit, AfterViewInit, OnDestroy  {\n\n    @Input() autoResize: boolean;\n\n    @Output() onResize: EventEmitter<any> = new EventEmitter();\n\n    filled: boolean;\n\n    cachedScrollHeight:number;\n\n    ngModelSubscription: Subscription;\n\n    ngControlSubscription: Subscription;\n\n    constructor(public el: ElementRef, @Optional() public ngModel: NgModel, @Optional() public control : NgControl, private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        if (this.ngModel) {\n            this.ngModelSubscription = this.ngModel.valueChanges.subscribe(() =>{\n                this.updateState();\n            })\n        }\n\n        if (this.control) {\n            this.ngControlSubscription = this.control.valueChanges.subscribe(() => {\n                this.updateState();\n            });\n        }\n    }\n\n    ngAfterViewInit() {\n        if (this.autoResize)\n            this.resize();\n\n        this.updateFilledState();\n        this.cd.detectChanges();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateState();\n    }\n\n    updateFilledState() {\n        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n    }\n\n    @HostListener('focus', ['$event'])\n    onFocus(e) {\n        if (this.autoResize) {\n            this.resize(e);\n        }\n    }\n\n    @HostListener('blur', ['$event'])\n    onBlur(e) {\n        if (this.autoResize) {\n            this.resize(e);\n        }\n    }\n\n    resize(event?: Event) {\n        this.el.nativeElement.style.height = 'auto';\n        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n            this.el.nativeElement.style.overflowY = \"scroll\";\n            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n        }\n        else {\n            this.el.nativeElement.style.overflow = \"hidden\";\n        }\n\n        this.onResize.emit(event||{});\n    }\n\n    updateState() {\n        this.updateFilledState();\n\n        if (this.autoResize) {\n            this.resize();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.ngModelSubscription) {\n            this.ngModelSubscription.unsubscribe();\n        }\n\n        if (this.ngControlSubscription) {\n            this.ngControlSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputTextarea],\n    declarations: [InputTextarea]\n})\nexport class InputTextareaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,209 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALIDATORS } from '@angular/forms';
+
+const KEYFILTER_VALIDATOR = {
+    provide: NG_VALIDATORS,
+    useExisting: forwardRef(() => KeyFilter),
+    multi: true
+};
+const DEFAULT_MASKS = {
+    pint: /[\d]/,
+    'int': /[\d\-]/,
+    pnum: /[\d\.]/,
+    money: /[\d\.\s,]/,
+    num: /[\d\-\.]/,
+    hex: /[0-9a-f]/i,
+    email: /[a-z0-9_\.\-@]/i,
+    alpha: /[a-z_]/i,
+    alphanum: /[a-z0-9_]/i
+};
+const KEYS = {
+    TAB: 9,
+    RETURN: 13,
+    ESC: 27,
+    BACKSPACE: 8,
+    DELETE: 46
+};
+const SAFARI_KEYS = {
+    63234: 37,
+    63235: 39,
+    63232: 38,
+    63233: 40,
+    63276: 33,
+    63277: 34,
+    63272: 46,
+    63273: 36,
+    63275: 35 // end
+};
+class KeyFilter {
+    constructor(el) {
+        this.el = el;
+        this.ngModelChange = new EventEmitter();
+        this.isAndroid = DomHandler.isAndroid();
+    }
+    get pattern() {
+        return this._pattern;
+    }
+    set pattern(_pattern) {
+        this._pattern = _pattern;
+        this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;
+    }
+    isNavKeyPress(e) {
+        let k = e.keyCode;
+        k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+        return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;
+    }
+    ;
+    isSpecialKey(e) {
+        let k = e.keyCode || e.charCode;
+        return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 || (k >= 18 && k <= 20) ||
+            (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));
+    }
+    getKey(e) {
+        let k = e.keyCode || e.charCode;
+        return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+    }
+    getCharCode(e) {
+        return e.charCode || e.keyCode || e.which;
+    }
+    findDelta(value, prevValue) {
+        let delta = '';
+        for (let i = 0; i < value.length; i++) {
+            let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);
+            if (str === prevValue)
+                delta = value.substr(i, value.length - prevValue.length);
+        }
+        return delta;
+    }
+    isValidChar(c) {
+        return this.regex.test(c);
+    }
+    isValidString(str) {
+        for (let i = 0; i < str.length; i++) {
+            if (!this.isValidChar(str.substr(i, 1))) {
+                return false;
+            }
+        }
+        return true;
+    }
+    onInput(e) {
+        if (this.isAndroid && !this.pValidateOnly) {
+            let val = this.el.nativeElement.value;
+            let lastVal = this.lastValue || '';
+            let inserted = this.findDelta(val, lastVal);
+            let removed = this.findDelta(lastVal, val);
+            let pasted = inserted.length > 1 || (!inserted && !removed);
+            if (pasted) {
+                if (!this.isValidString(val)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            else if (!removed) {
+                if (!this.isValidChar(inserted)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            val = this.el.nativeElement.value;
+            if (this.isValidString(val)) {
+                this.lastValue = val;
+            }
+        }
+    }
+    onKeyPress(e) {
+        if (this.isAndroid || this.pValidateOnly) {
+            return;
+        }
+        let browser = DomHandler.getBrowser();
+        let k = this.getKey(e);
+        if (browser.mozilla && (e.ctrlKey || e.altKey)) {
+            return;
+        }
+        else if (k == 17 || k == 18) {
+            return;
+        }
+        let c = this.getCharCode(e);
+        let cc = String.fromCharCode(c);
+        let ok = true;
+        if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {
+            return;
+        }
+        ok = this.regex.test(cc);
+        if (!ok) {
+            e.preventDefault();
+        }
+    }
+    onPaste(e) {
+        const clipboardData = e.clipboardData || window.clipboardData.getData('text');
+        if (clipboardData) {
+            const pastedText = clipboardData.getData('text');
+            for (let char of pastedText.toString()) {
+                if (!this.regex.test(char)) {
+                    e.preventDefault();
+                    return;
+                }
+            }
+        }
+    }
+    validate(c) {
+        if (this.pValidateOnly) {
+            let value = this.el.nativeElement.value;
+            if (value && !this.regex.test(value)) {
+                return {
+                    validatePattern: false
+                };
+            }
+        }
+    }
+}
+KeyFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+KeyFilter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: KeyFilter, selector: "[pKeyFilter]", inputs: { pValidateOnly: "pValidateOnly", pattern: ["pKeyFilter", "pattern"] }, outputs: { ngModelChange: "ngModelChange" }, host: { listeners: { "input": "onInput($event)", "keypress": "onKeyPress($event)", "paste": "onPaste($event)" }, classAttribute: "p-element" }, providers: [KEYFILTER_VALIDATOR], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pKeyFilter]',
+                    providers: [KEYFILTER_VALIDATOR],
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pValidateOnly: [{
+                type: Input
+            }], ngModelChange: [{
+                type: Output
+            }], pattern: [{
+                type: Input,
+                args: ['pKeyFilter']
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onKeyPress: [{
+                type: HostListener,
+                args: ['keypress', ['$event']]
+            }], onPaste: [{
+                type: HostListener,
+                args: ['paste', ['$event']]
+            }] } });
+class KeyFilterModule {
+}
+KeyFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KeyFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, declarations: [KeyFilter], imports: [CommonModule], exports: [KeyFilter] });
+KeyFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [KeyFilter],
+                    declarations: [KeyFilter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { KEYFILTER_VALIDATOR, KeyFilter, KeyFilterModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-keyfilter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-keyfilter.mjs","sources":["../../src/app/components/keyfilter/keyfilter.ts","../../src/app/components/keyfilter/primeng-keyfilter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, HostListener, Input, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\nexport const KEYFILTER_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => KeyFilter),\n    multi: true\n};\n\nconst DEFAULT_MASKS = {\n    pint: /[\\d]/,\n    'int': /[\\d\\-]/,\n    pnum: /[\\d\\.]/,\n    money: /[\\d\\.\\s,]/,\n    num: /[\\d\\-\\.]/,\n    hex: /[0-9a-f]/i,\n    email: /[a-z0-9_\\.\\-@]/i,\n    alpha: /[a-z_]/i,\n    alphanum: /[a-z0-9_]/i\n};\n\nconst KEYS = {\n    TAB: 9,\n    RETURN: 13,\n    ESC: 27,\n    BACKSPACE: 8,\n    DELETE: 46\n};\n\nconst SAFARI_KEYS = {\n    63234: 37, // left\n    63235: 39, // right\n    63232: 38, // up\n    63233: 40, // down\n    63276: 33, // page up\n    63277: 34, // page down\n    63272: 46, // delete\n    63273: 36, // home\n    63275: 35  // end\n};\n\n@Directive({\n    selector: '[pKeyFilter]',\n    providers: [KEYFILTER_VALIDATOR],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class KeyFilter implements Validator {\n\n    @Input() pValidateOnly: boolean;\n\n    @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\n\n    regex: RegExp;\n\n    _pattern: any;\n\n    isAndroid: boolean;\n\n    lastValue: any;\n\n    constructor(public el: ElementRef) {\n        this.isAndroid = DomHandler.isAndroid();\n    }\n\n    get pattern(): any {\n        return this._pattern;\n    }\n\n    @Input('pKeyFilter') set pattern(_pattern: any) {\n        this._pattern = _pattern;\n        this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;\n    }\n\n    isNavKeyPress(e: KeyboardEvent) {\n        let k = e.keyCode;\n        k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n\n        return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;\n    };\n\n    isSpecialKey(e: KeyboardEvent) {\n        let k = e.keyCode || e.charCode;\n\n        return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 ||(k >= 18 && k <= 20) ||\n            (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));\n    }\n\n\n    getKey(e: KeyboardEvent) {\n        let k = e.keyCode || e.charCode;\n        return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n    }\n\n    getCharCode(e: KeyboardEvent) {\n        return e.charCode || e.keyCode || e.which;\n    }\n\n    findDelta(value: string, prevValue: string) {\n        let delta = '';\n\n        for (let i = 0; i < value.length; i++) {\n            let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);\n\n            if (str === prevValue)\n                delta = value.substr(i, value.length - prevValue.length);\n        }\n\n        return delta;\n    }\n\n    isValidChar(c: string) {\n        return this.regex.test(c);\n    }\n\n    isValidString(str: string) {\n        for (let i = 0; i < str.length; i++) {\n            if (!this.isValidChar(str.substr(i, 1))) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e: KeyboardEvent) {\n        if (this.isAndroid && !this.pValidateOnly) {\n            let val = this.el.nativeElement.value;\n            let lastVal = this.lastValue || '';\n\n            let inserted = this.findDelta(val, lastVal);\n            let removed = this.findDelta(lastVal, val);\n            let pasted = inserted.length > 1 || (!inserted && !removed);\n\n            if (pasted) {\n                if (!this.isValidString(val)) {\n                    this.el.nativeElement.value = lastVal;\n                    this.ngModelChange.emit(lastVal);\n                }\n            }\n            else if (!removed) {\n                if (!this.isValidChar(inserted)) {\n                    this.el.nativeElement.value = lastVal;\n                    this.ngModelChange.emit(lastVal);\n                }\n            }\n\n            val = this.el.nativeElement.value;\n            if (this.isValidString(val)) {\n                this.lastValue = val;\n            }\n        }\n    }\n\n    @HostListener('keypress', ['$event'])\n    onKeyPress(e: KeyboardEvent) {\n        if (this.isAndroid || this.pValidateOnly) {\n            return;\n        }\n\n        let browser = DomHandler.getBrowser();\n        let k = this.getKey(e);\n\n        if (browser.mozilla && (e.ctrlKey || e.altKey)) {\n            return;\n        }\n        else if (k == 17 || k == 18) {\n            return;\n        }\n\n        let c = this.getCharCode(e);\n        let cc = String.fromCharCode(c);\n        let ok = true;\n\n        if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {\n            return;\n        }\n\n        ok = this.regex.test(cc);\n\n        if (!ok) {\n            e.preventDefault();\n        }\n    }\n\n    @HostListener('paste', ['$event'])\n    onPaste(e) {\n        const clipboardData = e.clipboardData || (<any>window).clipboardData.getData('text');\n        if (clipboardData) {\n            const pastedText = clipboardData.getData('text');\n            for (let char of pastedText.toString()) {\n                if (!this.regex.test(char)) {\n                    e.preventDefault();\n                    return;\n                }\n            }\n        }\n    }\n\n    validate(c: AbstractControl): { [key: string]: any } {\n        if (this.pValidateOnly) {\n            let value = this.el.nativeElement.value;\n            if (value && !this.regex.test(value)) {\n                return {\n                    validatePattern: false\n                }\n            }\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [KeyFilter],\n    declarations: [KeyFilter]\n})\nexport class KeyFilterModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,266 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const KNOB_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Knob),
+    multi: true
+};
+class Knob {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.valueColor = "var(--primary-color, Black)";
+        this.rangeColor = "var(--surface-d, LightGray)";
+        this.textColor = "var(--text-color-secondary, Black)";
+        this.valueTemplate = "{value}";
+        this.size = 100;
+        this.step = 1;
+        this.min = 0;
+        this.max = 100;
+        this.strokeWidth = 14;
+        this.showValue = true;
+        this.readonly = false;
+        this.onChange = new EventEmitter();
+        this.radius = 40;
+        this.midX = 50;
+        this.midY = 50;
+        this.minRadians = 4 * Math.PI / 3;
+        this.maxRadians = -Math.PI / 3;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    mapRange(x, inMin, inMax, outMin, outMax) {
+        return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
+    }
+    onClick(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+        }
+    }
+    updateValue(offsetX, offsetY) {
+        let dx = offsetX - this.size / 2;
+        let dy = this.size / 2 - offsetY;
+        let angle = Math.atan2(dy, dx);
+        let start = -Math.PI / 2 - Math.PI / 6;
+        this.updateModel(angle, start);
+    }
+    updateModel(angle, start) {
+        let mappedValue;
+        if (angle > this.maxRadians)
+            mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);
+        else if (angle < start)
+            mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);
+        else
+            return;
+        let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;
+        this.value = newValue;
+        this.onModelChange(this.value);
+        this.onChange.emit(this.value);
+    }
+    onMouseDown(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowMouseMoveListener = this.onMouseMove.bind(this);
+            this.windowMouseUpListener = this.onMouseUp.bind(this);
+            window.addEventListener('mousemove', this.windowMouseMoveListener);
+            window.addEventListener('mouseup', this.windowMouseUpListener);
+            event.preventDefault();
+        }
+    }
+    onMouseUp(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('mousemove', this.windowMouseMoveListener);
+            window.removeEventListener('mouseup', this.windowMouseUpListener);
+            this.windowMouseUpListener = null;
+            this.windowMouseMoveListener = null;
+            event.preventDefault();
+        }
+    }
+    onTouchStart(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowTouchMoveListener = this.onTouchMove.bind(this);
+            this.windowTouchEndListener = this.onTouchEnd.bind(this);
+            window.addEventListener('touchmove', this.windowTouchMoveListener);
+            window.addEventListener('touchend', this.windowTouchEndListener);
+            event.preventDefault();
+        }
+    }
+    onTouchEnd(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('touchmove', this.windowTouchMoveListener);
+            window.removeEventListener('touchend', this.windowTouchEndListener);
+            this.windowTouchMoveListener = null;
+            this.windowTouchEndListener = null;
+            event.preventDefault();
+        }
+    }
+    onMouseMove(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+            event.preventDefault();
+        }
+    }
+    onTouchMove(event) {
+        if (!this.disabled && !this.readonly && event.touches.length == 1) {
+            const rect = this.el.nativeElement.children[0].getBoundingClientRect();
+            const touch = event.targetTouches.item(0);
+            const offsetX = touch.clientX - rect.left;
+            const offsetY = touch.clientY - rect.top;
+            this.updateValue(offsetX, offsetY);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    containerClass() {
+        return {
+            'p-knob p-component': true,
+            'p-disabled': this.disabled
+        };
+    }
+    rangePath() {
+        return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;
+    }
+    valuePath() {
+        return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;
+    }
+    zeroRadians() {
+        if (this.min > 0 && this.max > 0)
+            return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);
+        else
+            return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    valueRadians() {
+        return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    minX() {
+        return this.midX + Math.cos(this.minRadians) * this.radius;
+    }
+    minY() {
+        return this.midY - Math.sin(this.minRadians) * this.radius;
+    }
+    maxX() {
+        return this.midX + Math.cos(this.maxRadians) * this.radius;
+    }
+    maxY() {
+        return this.midY - Math.sin(this.maxRadians) * this.radius;
+    }
+    zeroX() {
+        return this.midX + Math.cos(this.zeroRadians()) * this.radius;
+    }
+    zeroY() {
+        return this.midY - Math.sin(this.zeroRadians()) * this.radius;
+    }
+    valueX() {
+        return this.midX + Math.cos(this.valueRadians()) * this.radius;
+    }
+    valueY() {
+        return this.midY - Math.sin(this.valueRadians()) * this.radius;
+    }
+    largeArc() {
+        return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;
+    }
+    sweep() {
+        return this.valueRadians() > this.zeroRadians() ? 0 : 1;
+    }
+    valueToDisplay() {
+        return this.valueTemplate.replace("{value}", this._value.toString());
+    }
+    get _value() {
+        return this.value != null ? this.value : this.min;
+    }
+}
+Knob.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Knob.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Knob, selector: "p-knob", inputs: { styleClass: "styleClass", style: "style", severity: "severity", valueColor: "valueColor", rangeColor: "rangeColor", textColor: "textColor", valueTemplate: "valueTemplate", name: "name", size: "size", step: "step", min: "min", max: "max", strokeWidth: "strokeWidth", disabled: "disabled", showValue: "showValue", readonly: "readonly" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [KNOB_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, isInline: true, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-knob', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, providers: [KNOB_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], valueColor: [{
+                type: Input
+            }], rangeColor: [{
+                type: Input
+            }], textColor: [{
+                type: Input
+            }], valueTemplate: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class KnobModule {
+}
+KnobModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KnobModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, declarations: [Knob], imports: [CommonModule], exports: [Knob] });
+KnobModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Knob],
+                    declarations: [Knob]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { KNOB_VALUE_ACCESSOR, Knob, KnobModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-knob.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-knob.mjs","sources":["../../src/app/components/knob/knob.ts","../../src/app/components/knob/primeng-knob.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Knob),\n    multi: true\n};\n\n@Component({\n    selector: 'p-knob',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n        <svg viewBox=\"0 0 100 100\" [style.width]=\"size + 'px'\" [style.height]=\"size + 'px'\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n            (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n            <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n            <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n            <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n        </svg>\n        </div>\n    `,\n    providers: [KNOB_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./knob.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Knob {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() severity: string;\n\n    @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n    @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n    @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n    @Input() valueTemplate: string = \"{value}\";\n\n    @Input() name: string;\n\n    @Input() size: number = 100;\n\n    @Input() step: number = 1;\n\n    @Input() min: number = 0;\n\n    @Input() max: number = 100;\n\n    @Input() strokeWidth: number = 14;\n\n    @Input() disabled: boolean;\n\n    @Input() showValue: boolean = true;\n\n    @Input() readonly: boolean = false;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    radius: number = 40;\n\n    midX: number = 50;\n\n    midY: number = 50;\n\n    minRadians: number = 4 * Math.PI / 3;\n\n    maxRadians: number = -Math.PI / 3;\n\n    value: number = null;\n\n    windowMouseMoveListener: any;\n\n    windowMouseUpListener: any;\n\n    windowTouchMoveListener: any;\n\n    windowTouchEndListener: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n    mapRange(x, inMin, inMax, outMin, outMax) {\n        return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n    }\n\n    onClick(event) {\n        if (!this.disabled && !this.readonly) {\n            this.updateValue(event.offsetX, event.offsetY);\n        }\n    }\n\n    updateValue(offsetX, offsetY) {\n        let dx = offsetX - this.size / 2;\n        let dy =  this.size / 2 - offsetY;\n        let angle = Math.atan2(dy, dx);\n        let start = -Math.PI / 2 - Math.PI / 6;\n        this.updateModel(angle, start);\n    }\n\n    updateModel(angle, start) {\n        let mappedValue;\n        if (angle > this.maxRadians)\n            mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n        else if (angle < start)\n            mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n        else\n            return;\n\n        let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n        this.value = newValue;\n        this.onModelChange(this.value);\n        this.onChange.emit(this.value);\n    }\n\n    onMouseDown(event) {\n        if (!this.disabled && !this.readonly) {\n            this.windowMouseMoveListener = this.onMouseMove.bind(this)\n            this.windowMouseUpListener = this.onMouseUp.bind(this)\n            window.addEventListener('mousemove', this.windowMouseMoveListener);\n            window.addEventListener('mouseup', this.windowMouseUpListener);\n            event.preventDefault();\n        }\n    }\n\n    onMouseUp(event) {\n        if (!this.disabled && !this.readonly) {\n            window.removeEventListener('mousemove', this.windowMouseMoveListener);\n            window.removeEventListener('mouseup', this.windowMouseUpListener);\n            this.windowMouseUpListener = null;\n            this.windowMouseMoveListener = null;\n            event.preventDefault();\n        }\n    }\n\n    onTouchStart(event) {\n        if (!this.disabled && !this.readonly) {\n            this.windowTouchMoveListener = this.onTouchMove.bind(this);\n            this.windowTouchEndListener = this.onTouchEnd.bind(this);\n            window.addEventListener('touchmove', this.windowTouchMoveListener);\n            window.addEventListener('touchend', this.windowTouchEndListener);\n            event.preventDefault();\n        }\n    }\n\n    onTouchEnd(event) {\n        if (!this.disabled && !this.readonly) {\n            window.removeEventListener('touchmove', this.windowTouchMoveListener);\n            window.removeEventListener('touchend', this.windowTouchEndListener);\n            this.windowTouchMoveListener = null;\n            this.windowTouchEndListener = null;\n            event.preventDefault();\n        }\n    }\n\n    onMouseMove(event) {\n        if (!this.disabled && !this.readonly) {\n            this.updateValue(event.offsetX, event.offsetY);\n            event.preventDefault();\n        }\n    }\n\n    onTouchMove(event) {\n        if (!this.disabled && !this.readonly && event.touches.length == 1) {\n            const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n            const touch = event.targetTouches.item(0);\n            const offsetX = touch.clientX - rect.left;\n            const offsetY = touch.clientY - rect.top;\n            this.updateValue(offsetX, offsetY);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    containerClass() {\n        return {\n            'p-knob p-component': true,\n            'p-disabled': this.disabled\n        };\n    }\n\n    rangePath() {\n        return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n    }\n\n    valuePath() {\n        return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n    }\n\n    zeroRadians() {\n        if (this.min > 0 && this.max > 0)\n            return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n        else\n            return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n    }\n\n    valueRadians() {\n        return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n    }\n\n    minX() {\n        return this.midX + Math.cos(this.minRadians) * this.radius;\n    }\n\n    minY() {\n        return this.midY - Math.sin(this.minRadians) * this.radius;\n    }\n\n    maxX() {\n        return this.midX + Math.cos(this.maxRadians) * this.radius;\n    }\n\n    maxY() {\n        return this.midY - Math.sin(this.maxRadians) * this.radius;\n    }\n\n    zeroX() {\n        return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n    }\n\n    zeroY() {\n        return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n    }\n\n    valueX() {\n        return this.midX + Math.cos(this.valueRadians()) * this.radius;\n    }\n\n    valueY() {\n        return this.midY - Math.sin(this.valueRadians()) * this.radius;\n    }\n\n    largeArc() {\n        return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n    }\n\n    sweep() {\n        return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n    }\n\n    valueToDisplay() {\n        return this.valueTemplate.replace(\"{value}\", this._value.toString());\n    }\n\n    get _value(): number {\n        return this.value != null ? this.value : this.min;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Knob],\n    declarations: [Knob]\n})\nexport class KnobModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,266 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class Lightbox {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.type = 'image';
+        this.effectDuration = '500ms';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.closeOnEscape = true;
+    }
+    onImageClick(event, image, i, content) {
+        this.index = i;
+        this.loading = true;
+        content.style.width = 32 + 'px';
+        content.style.height = 32 + 'px';
+        this.preventDocumentClickListener = true;
+        this.show();
+        this.displayImage(image);
+        event.preventDefault();
+    }
+    ngAfterViewInit() {
+        this.panel = DomHandler.findSingle(this.el.nativeElement, '.ui-lightbox ');
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.panel);
+            else
+                DomHandler.appendChild(this.panel, this.appendTo);
+        }
+    }
+    onLinkClick(event, content) {
+        this.preventDocumentClickListener = true;
+        this.show();
+        event.preventDefault();
+    }
+    displayImage(image) {
+        setTimeout(() => {
+            this.cd.markForCheck();
+            this.currentImage = image;
+            this.captionText = image.title;
+            this.center();
+        }, 1000);
+    }
+    show() {
+        this.mask = document.createElement('div');
+        DomHandler.addMultipleClasses(this.mask, 'ui-widget-overlay ui-dialog-mask');
+        document.body.appendChild(this.mask);
+        if (this.autoZIndex) {
+            this.zindex = this.baseZIndex + (++DomHandler.zindex);
+        }
+        this.mask.style.zIndex = this.zindex - 1;
+        this.center();
+        this.visible = true;
+        this.bindGlobalListeners();
+    }
+    hide(event) {
+        this.captionText = null;
+        this.index = null;
+        this.currentImage = null;
+        this.visible = false;
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+            this.mask = null;
+        }
+        this.unbindGlobalListeners();
+        event.preventDefault();
+    }
+    center() {
+        let elementWidth = DomHandler.getOuterWidth(this.panel);
+        let elementHeight = DomHandler.getOuterHeight(this.panel);
+        if (elementWidth == 0 && elementHeight == 0) {
+            this.panel.style.visibility = 'hidden';
+            this.panel.style.display = 'block';
+            elementWidth = DomHandler.getOuterWidth(this.panel);
+            elementHeight = DomHandler.getOuterHeight(this.panel);
+            this.panel.style.display = 'none';
+            this.panel.style.visibility = 'visible';
+        }
+    }
+    onImageLoad(event, content) {
+        let image = event.target;
+        image.style.visibility = 'hidden';
+        image.style.display = 'block';
+        let imageWidth = DomHandler.getOuterWidth(image);
+        let imageHeight = DomHandler.getOuterHeight(image);
+        image.style.display = 'none';
+        image.style.visibility = 'visible';
+        content.style.width = imageWidth + 'px';
+        content.style.height = imageHeight + 'px';
+        this.panel.style.left = parseInt(this.panel.style.left) + (DomHandler.getOuterWidth(this.panel) - imageWidth) / 2 + 'px';
+        this.panel.style.top = parseInt(this.panel.style.top) + (DomHandler.getOuterHeight(this.panel) - imageHeight) / 2 + 'px';
+        setTimeout(() => {
+            this.cd.markForCheck();
+            DomHandler.fadeIn(image, 500);
+            image.style.display = 'block';
+            //this.captionText = this.currentImage.title;
+            this.loading = false;
+        }, parseInt(this.effectDuration));
+    }
+    prev(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index > 0) {
+            this.displayImage(this.images[--this.index]);
+        }
+    }
+    next(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index <= (this.images.length - 1)) {
+            this.displayImage(this.images[++this.index]);
+        }
+    }
+    bindGlobalListeners() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+            if (!this.preventDocumentClickListener && this.visible) {
+                this.hide(event);
+            }
+            this.preventDocumentClickListener = false;
+            this.cd.markForCheck();
+        });
+        if (this.closeOnEscape && !this.documentEscapeListener) {
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27) {
+                    if (parseInt(this.panel.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                        this.hide(event);
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    get leftVisible() {
+        return this.images && this.images.length && this.index != 0 && !this.loading;
+    }
+    get rightVisible() {
+        return this.images && this.images.length && this.index < (this.images.length - 1) && !this.loading;
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.panel);
+        }
+    }
+}
+Lightbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Lightbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Lightbox, selector: "p-lightbox", inputs: { images: "images", type: "type", style: "style", styleClass: "styleClass", appendTo: "appendTo", easing: "easing", effectDuration: "effectDuration", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", closeOnEscape: "closeOnEscape" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, isInline: true, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-lightbox', template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { images: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }] } });
+class LightboxModule {
+}
+LightboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+LightboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, declarations: [Lightbox], imports: [CommonModule], exports: [Lightbox] });
+LightboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Lightbox],
+                    declarations: [Lightbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Lightbox, LightboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-lightbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-lightbox.mjs","sources":["../../src/app/components/lightbox/lightbox.ts","../../src/app/components/lightbox/primeng-lightbox.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Renderer2,AfterViewInit,OnDestroy,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Component({\n    selector: 'p-lightbox',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"(type == 'image')\">\n            <a *ngFor=\"let image of images; let i = index;\" [href]=\"image.source\" (click)=\"onImageClick($event,image,i,content)\">\n                <img [src]=\"image.thumbnail\" [title]=\"image.title\" [alt]=\"image.alt\">\n            </a>\n        </div>\n        <span [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"(type == 'content')\" (click)=\"onLinkClick($event,content)\">\n            <ng-content select=\"a\"></ng-content>\n        </span>\n        <div class=\"ui-lightbox ui-widget ui-corner-all ui-shadow\" [style.display]=\"visible ? 'block' : 'none'\" [style.zIndex]=\"zindex\"\n            [ngClass]=\"{'ui-lightbox-loading': loading}\"\n            [style.transitionProperty]=\"'all'\" [style.transitionDuration]=\"effectDuration\" [style.transitionTimingFunction]=\"easing\" (click)=\"preventDocumentClickListener=true\">\n           <div class=\"ui-lightbox-content-wrapper\">\n              <a class=\"ui-state-default ui-lightbox-nav-left ui-corner-right\" [style.zIndex]=\"zindex + 1\" (click)=\"prev(img)\"\n                [ngClass]=\"{'ui-helper-hidden':!leftVisible}\"><span class=\"ui-lightbox-nav-icon pi pi-chevron-left\"></span></a>\n              <div #content class=\"ui-lightbox-content ui-corner-all\"\n                [style.transitionProperty]=\"'width,height'\" [style.transitionDuration]=\"effectDuration\" [style.transitionTimingFunction]=\"easing\">\n                <img #img [src]=\"currentImage ? currentImage.source||'' : ''\" (load)=\"onImageLoad($event,content)\" style=\"display:none\">\n                <ng-content></ng-content>\n              </div>\n              <a class=\"ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden\" [style.zIndex]=\"zindex + 1\" (click)=\"next(img)\"\n                [ngClass]=\"{'ui-helper-hidden':!rightVisible}\"><span class=\"ui-lightbox-nav-icon pi pi-chevron-right\"></span></a>\n           </div>\n           <div class=\"ui-lightbox-caption ui-widget-header\" [style.display]=\"captionText ? 'block' : 'none'\">\n              <span class=\"ui-lightbox-caption-text\">{{captionText}}</span><a class=\"ui-lightbox-close ui-corner-all\" tabindex=\"0\" (click)=\"hide($event)\" (keydown.enter)=\"hide($event)\"><span class=\"pi pi-times\"></span></a>\n              <div style=\"clear:both\"></div>\n           </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: [\n        './lightbox.css',\n        '../dialog/dialog.css'\n    ],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Lightbox implements AfterViewInit,OnDestroy {\n\n    @Input() images: any[];\n\n    @Input() type: string = 'image';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() easing: 'ease-out';\n\n    @Input() effectDuration: any = '500ms';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() closeOnEscape: boolean = true;\n\n    public visible: boolean;\n\n    public loading: boolean;\n\n    public currentImage: any;\n\n    public captionText: string;\n\n    public zindex: any;\n\n    public panel: any;\n\n    public index: number;\n\n    public mask: any;\n\n    public preventDocumentClickListener: boolean;\n\n    public documentClickListener: any;\n\n    public documentEscapeListener: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2,private cd: ChangeDetectorRef) {}\n\n    onImageClick(event,image,i,content) {\n        this.index = i;\n        this.loading = true;\n        content.style.width = 32 + 'px';\n        content.style.height = 32 + 'px';\n        this.preventDocumentClickListener = true;\n        this.show();\n        this.displayImage(image);\n        event.preventDefault();\n    }\n\n    ngAfterViewInit() {\n        this.panel = DomHandler.findSingle(this.el.nativeElement, '.ui-lightbox ');\n\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.panel);\n            else\n                DomHandler.appendChild(this.panel, this.appendTo);\n        }\n    }\n\n    onLinkClick(event,content) {\n        this.preventDocumentClickListener = true;\n        this.show();\n        event.preventDefault();\n    }\n\n    displayImage(image) {\n        setTimeout(() => {\n            this.cd.markForCheck();\n            this.currentImage = image;\n            this.captionText = image.title;\n            this.center();\n        }, 1000);\n    }\n\n    show() {\n        this.mask = document.createElement('div');\n\n        DomHandler.addMultipleClasses(this.mask, 'ui-widget-overlay ui-dialog-mask');\n        document.body.appendChild(this.mask);\n        if (this.autoZIndex) {\n            this.zindex = this.baseZIndex + (++DomHandler.zindex);\n        }\n        this.mask.style.zIndex = this.zindex - 1;\n        this.center();\n        this.visible = true;\n        this.bindGlobalListeners();\n    }\n\n    hide(event) {\n        this.captionText = null;\n        this.index = null;\n        this.currentImage = null;\n        this.visible = false;\n\n        if (this.mask) {\n            document.body.removeChild(this.mask);\n            this.mask = null;\n        }\n\n        this.unbindGlobalListeners();\n        event.preventDefault();\n    }\n\n    center() {\n        let elementWidth = DomHandler.getOuterWidth(this.panel);\n        let elementHeight = DomHandler.getOuterHeight(this.panel);\n        if (elementWidth == 0 && elementHeight == 0) {\n            this.panel.style.visibility = 'hidden';\n            this.panel.style.display = 'block';\n            elementWidth = DomHandler.getOuterWidth(this.panel);\n            elementHeight = DomHandler.getOuterHeight(this.panel);\n            this.panel.style.display = 'none';\n            this.panel.style.visibility = 'visible';\n        }\n    }\n\n    onImageLoad(event,content) {\n        let image = event.target;\n        image.style.visibility = 'hidden';\n        image.style.display = 'block';\n        let imageWidth = DomHandler.getOuterWidth(image);\n        let imageHeight = DomHandler.getOuterHeight(image);\n        image.style.display = 'none';\n        image.style.visibility = 'visible';\n\n        content.style.width = imageWidth + 'px';\n        content.style.height = imageHeight + 'px';\n        this.panel.style.left = parseInt(this.panel.style.left) + (DomHandler.getOuterWidth(this.panel) - imageWidth) / 2 + 'px';\n        this.panel.style.top = parseInt(this.panel.style.top) + (DomHandler.getOuterHeight(this.panel) - imageHeight) / 2 + 'px';\n\n        setTimeout(() => {\n            this.cd.markForCheck();\n            DomHandler.fadeIn(image, 500);\n            image.style.display = 'block';\n            //this.captionText = this.currentImage.title;\n            this.loading = false;\n        }, parseInt(this.effectDuration));\n    }\n\n    prev(placeholder: any) {\n        this.captionText = null;\n        this.loading = true;\n        placeholder.style.display = 'none';\n        if (this.index > 0) {\n            this.displayImage(this.images[--this.index]);\n        }\n    }\n\n    next(placeholder: any) {\n        this.captionText = null;\n        this.loading = true;\n        placeholder.style.display = 'none';\n        if (this.index <= (this.images.length - 1)) {\n            this.displayImage(this.images[++this.index]);\n        }\n    }\n\n    bindGlobalListeners() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n            if (!this.preventDocumentClickListener && this.visible) {\n                this.hide(event);\n            }\n            this.preventDocumentClickListener = false;\n            this.cd.markForCheck();\n        });\n        if (this.closeOnEscape && !this.documentEscapeListener) {\n            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                    if (event.which == 27) {\n                    if (parseInt(this.panel.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {\n                        this.hide(event);\n                    }\n                }\n            });\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentEscapeListener){\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    get leftVisible():boolean {\n        return this.images && this.images.length && this.index != 0 && !this.loading;\n    }\n\n    get rightVisible():boolean {\n        return this.images && this.images.length && this.index < (this.images.length - 1) && !this.loading;\n    }\n\n    ngOnDestroy() {\n        this.unbindGlobalListeners();\n\n        if (this.appendTo) {\n            this.el.nativeElement.appendChild(this.panel);\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Lightbox],\n    declarations: [Lightbox]\n})\nexport class LightboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,703 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { ObjectUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const LISTBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Listbox),
+    multi: true
+};
+class Listbox {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.checkbox = false;
+        this.filter = false;
+        this.filterMatchMode = 'contains';
+        this.metaKeySelection = true;
+        this.showToggleAll = true;
+        this.optionGroupChildren = "items";
+        this.onChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onDblClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        if (this.hasFilter())
+            this.activateFilter();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.checkbox)
+                this.onOptionClickCheckbox(event, option);
+            else
+                this.onOptionClickMultiple(event, option);
+        }
+        else {
+            this.onOptionClickSingle(event, option);
+        }
+        this.onClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+        this.optionTouched = false;
+    }
+    onOptionTouchEnd(option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.optionTouched = true;
+    }
+    onOptionDoubleClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.onDblClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+    }
+    onOptionClickSingle(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.value = null;
+                    valueChanged = true;
+                }
+            }
+            else {
+                this.value = this.getOptionValue(option);
+                valueChanged = true;
+            }
+        }
+        else {
+            this.value = selected ? null : this.getOptionValue(option);
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickMultiple(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.removeOption(option);
+                }
+                else {
+                    this.value = [this.getOptionValue(option)];
+                }
+                valueChanged = true;
+            }
+            else {
+                this.value = (metaKey) ? this.value || [] : [];
+                this.value = [...this.value, this.getOptionValue(option)];
+                valueChanged = true;
+            }
+        }
+        else {
+            if (selected) {
+                this.removeOption(option);
+            }
+            else {
+                this.value = [...this.value || [], this.getOptionValue(option)];
+            }
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickCheckbox(event, option) {
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        let selected = this.isSelected(option);
+        if (selected) {
+            this.removeOption(option);
+        }
+        else {
+            this.value = this.value ? this.value : [];
+            this.value = [...this.value, this.getOptionValue(option)];
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);
+        }
+        return selected;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    isEmpty(optionsToDisplay) {
+        return !optionsToDisplay || (optionsToDisplay && optionsToDisplay.length === 0);
+    }
+    onFilter(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push(Object.assign(Object.assign({}, optgroup), { [this.optionGroupChildren]: filteredSubOptions }));
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this._options.filter(option => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    onOptionKeyDown(event, option) {
+        if (this.readonly) {
+            return;
+        }
+        let item = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Listbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Listbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Listbox, selector: "p-listbox", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", listStyle: "listStyle", listStyleClass: "listStyleClass", readonly: "readonly", disabled: "disabled", checkbox: "checkbox", filter: "filter", filterMatchMode: "filterMatchMode", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dataKey: "dataKey", showToggleAll: "showToggleAll", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", optionDisabled: "optionDisabled", ariaFilterLabel: "ariaFilterLabel", filterPlaceHolder: "filterPlaceHolder", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", group: "group", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick" }, host: { classAttribute: "p-element" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerchkbox"], descendants: true }], ngImport: i0, template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, isInline: true, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-listbox', template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], listStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], checkbox: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onDblClick: [{
+                type: Output
+            }], headerCheckboxViewChild: [{
+                type: ViewChild,
+                args: ['headerchkbox']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class ListboxModule {
+}
+ListboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ListboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule], exports: [Listbox, SharedModule] });
+ListboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Listbox, SharedModule],
+                    declarations: [Listbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { LISTBOX_VALUE_ACCESSOR, Listbox, ListboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-listbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-listbox.mjs","sources":["../../src/app/components/listbox/listbox.ts","../../src/app/components/listbox/primeng-listbox.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, EventEmitter, AfterContentInit, ContentChildren, ContentChild, QueryList, TemplateRef,forwardRef, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, Footer, Header, FilterService, TranslationKeys, PrimeNGConfig } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { RippleModule } from 'primeng/ripple';\nimport { Subscription } from 'rxjs';\n\nexport const LISTBOX_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Listbox),\n    multi: true\n};\n\n@Component({\n    selector: 'p-listbox',\n    template: `\n    <div [ngClass]=\"{'p-listbox p-component': true, 'p-disabled': disabled}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n      <div class=\"p-listbox-header\" *ngIf=\"headerFacet || headerTemplate\">\n        <ng-content select=\"p-header\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n      </div>\n      <div class=\"p-listbox-header\" *ngIf=\"(checkbox && multiple && showToggleAll) || filter\">\n        <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple && showToggleAll\" [ngClass]=\"{'p-checkbox-disabled': disabled || toggleAllDisabled}\">\n          <div class=\"p-hidden-accessible\">\n            <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\" [disabled]=\"disabled || toggleAllDisabled\">\n          </div>\n          <div #headerchkbox class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}\" (click)=\"toggleAll($event)\">\n            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n          </div>\n        </div>\n        <div class=\"p-listbox-filter-container\" *ngIf=\"filter\">\n          <input type=\"text\" [value]=\"filterValue||''\" (input)=\"onFilter($event)\" class=\"p-listbox-filter p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n          <span class=\"p-listbox-filter-icon pi pi-search\"></span>\n        </div>\n      </div>\n      <div [ngClass]=\"'p-listbox-list-wrapper'\" [ngStyle]=\"listStyle\" [class]=\"listStyleClass\">\n        <ul class=\"p-listbox-list\" role=\"listbox\" aria-multiselectable=\"multiple\">\n            <ng-container *ngIf=\"group\">\n                <ng-template ngFor let-optgroup [ngForOf]=\"optionsToRender\">\n                    <li class=\"p-listbox-item-group\">\n                        <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                        <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                    </li>\n                    <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                </ng-template>\n            </ng-container>\n            <ng-container *ngIf=\"!group\">\n                    <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToRender}\"></ng-container>\n            </ng-container>\n            <ng-template #itemslist let-optionsToDisplay>\n                <li *ngFor=\"let option of optionsToDisplay; let i = index;\" [attr.tabindex]=\"disabled || isOptionDisabled(option) ? null : '0'\" pRipple\n                    [ngClass]=\"{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}\" role=\"option\" [attr.aria-label]=\"getOptionLabel(option)\"\n                    [attr.aria-selected]=\"isSelected(option)\" (click)=\"onOptionClick($event,option)\" (dblclick)=\"onOptionDoubleClick($event,option)\" (touchend)=\"onOptionTouchEnd(option)\" (keydown)=\"onOptionKeyDown($event,option)\">\n                    <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple\" [ngClass]=\"{'p-checkbox-disabled': disabled || isOptionDisabled(option)}\">\n                        <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight':isSelected(option)}\">\n                            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':isSelected(option)}\"></span>\n                        </div>\n                    </div>\n                    <span *ngIf=\"!itemTemplate\">{{getOptionLabel(option)}}</span>\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                </li>\n                <li *ngIf=\"hasFilter() && isEmpty(optionsToDisplay)\" class=\"p-listbox-empty-message\">\n                    <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                        {{emptyFilterMessageLabel}}\n                    </ng-container>\n                    <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                </li>\n                <li *ngIf=\"!hasFilter() && isEmpty(optionsToDisplay)\" class=\"p-listbox-empty-message\">\n                    <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                        {{emptyMessageLabel}}\n                    </ng-container>\n                    <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                </li>\n            </ng-template>\n        </ul>\n      </div>\n      <div class=\"p-listbox-footer\" *ngIf=\"footerFacet || footerTemplate\">\n        <ng-content select=\"p-footer\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n      </div>\n    </div>\n  `,\n    providers: [LISTBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./listbox.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Listbox implements AfterContentInit, OnInit, ControlValueAccessor, OnDestroy {\n\n    @Input() multiple: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() listStyle: any;\n\n    @Input() listStyleClass: string;\n\n    @Input() readonly: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() checkbox: boolean = false;\n\n    @Input() filter: boolean = false;\n\n    @Input() filterMatchMode: string = 'contains';\n\n    @Input() filterLocale: string;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dataKey: string;\n\n    @Input() showToggleAll: boolean = true;\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterPlaceHolder: string;\n\n    @Input() emptyFilterMessage: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() group: boolean;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDblClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('headerchkbox') headerCheckboxViewChild: ElementRef;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public _options: any[];\n\n    public itemTemplate: TemplateRef<any>;\n\n    public groupTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public footerTemplate: TemplateRef<any>;\n\n    public emptyFilterTemplate: TemplateRef<any>;\n\n    public emptyTemplate: TemplateRef<any>;\n\n    public _filterValue: string;\n\n    public _filteredOptions: any[];\n\n    public filtered: boolean;\n\n    public value: any;\n\n    public onModelChange: Function = () => { };\n\n    public onModelTouched: Function = () => { };\n\n    public optionTouched: boolean;\n\n    public focus: boolean;\n\n    public headerCheckboxFocus: boolean;\n\n    translationSubscription: Subscription;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig) { }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n\n        if (this.hasFilter())\n            this.activateFilter();\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    ngOnInit() {\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    writeValue(value: any): void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onOptionClick(event: Event, option: any) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        if (this.multiple) {\n            if (this.checkbox)\n                this.onOptionClickCheckbox(event, option);\n            else\n                this.onOptionClickMultiple(event, option);\n        }\n        else {\n            this.onOptionClickSingle(event, option);\n        }\n        this.onClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        });\n        this.optionTouched = false;\n    }\n\n    onOptionTouchEnd(option: any) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        this.optionTouched = true;\n    }\n\n    onOptionDoubleClick(event: Event, option: any): any {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        this.onDblClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        })\n    }\n\n    onOptionClickSingle(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey || event.ctrlKey);\n\n            if (selected) {\n                if (metaKey) {\n                    this.value = null;\n                    valueChanged = true;\n                }\n            }\n            else {\n                this.value = this.getOptionValue(option);\n                valueChanged = true;\n            }\n        }\n        else {\n            this.value = selected ? null : this.getOptionValue(option);\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.onModelChange(this.value);\n            this.onChange.emit({\n                originalEvent: event,\n                value: this.value\n            });\n        }\n    }\n\n    onOptionClickMultiple(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey || event.ctrlKey);\n\n            if (selected) {\n                if (metaKey) {\n                    this.removeOption(option);\n                }\n                else {\n                    this.value = [this.getOptionValue(option)];\n                }\n                valueChanged = true;\n            }\n            else {\n                this.value = (metaKey) ? this.value || [] : [];\n                this.value = [...this.value, this.getOptionValue(option)];\n                valueChanged = true;\n            }\n        }\n        else {\n            if (selected) {\n                this.removeOption(option);\n            }\n            else {\n                this.value = [...this.value || [], this.getOptionValue(option)];\n            }\n\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.onModelChange(this.value);\n            this.onChange.emit({\n                originalEvent: event,\n                value: this.value\n            });\n        }\n    }\n\n    onOptionClickCheckbox(event, option) {\n        if (this.disabled || this.readonly) {\n            return;\n        }\n\n        let selected = this.isSelected(option);\n\n        if (selected) {\n            this.removeOption(option);\n        }\n        else {\n            this.value = this.value ? this.value : [];\n            this.value = [...this.value, this.getOptionValue(option)];\n        }\n\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    removeOption(option: any): void {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n    }\n\n    isSelected(option: any) {\n        let selected = false;\n        let optionValue = this.getOptionValue(option);\n\n        if (this.multiple) {\n            if (this.value) {\n                for (let val of this.value) {\n                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                        selected = true;\n                        break;\n                    }\n                }\n            }\n        }\n        else {\n            selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);\n        }\n\n        return selected;\n    }\n\n    get allChecked(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return false;\n        }\n        else {\n            let selectedDisabledItemsLength = 0;\n            let unselectedDisabledItemsLength = 0;\n            let selectedEnabledItemsLength = 0;\n            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n\n            for (let option of optionsToRender) {\n                if (!this.group) {\n                    let disabled = this.isOptionDisabled(option);\n                    let selected = this.isSelected(option);\n\n                    if (disabled) {\n                        if (selected)\n                            selectedDisabledItemsLength++;\n                        else\n                            unselectedDisabledItemsLength++;\n                    }\n                    else {\n                        if (selected)\n                            selectedEnabledItemsLength++;\n                        else\n                            return false;\n                    }\n                }\n                else {\n                    for (let opt of this.getOptionGroupChildren(option)) {\n                        let disabled = this.isOptionDisabled(opt);\n                        let selected = this.isSelected(opt);\n\n                        if (disabled) {\n                            if (selected)\n                                selectedDisabledItemsLength++;\n                            else\n                                unselectedDisabledItemsLength++;\n                        }\n                        else {\n                            if (selected)\n                                selectedEnabledItemsLength++;\n                            else {\n                                return false;\n                            }\n                        }\n\n                        visibleOptionsLength++;\n                    }\n                }\n            }\n\n            return (visibleOptionsLength === selectedDisabledItemsLength\n                    || visibleOptionsLength === selectedEnabledItemsLength\n                    || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n        }\n    }\n\n    get optionsToRender(): any[] {\n        return this._filteredOptions || this.options;\n    }\n\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    hasFilter() {\n        return this._filterValue && this._filterValue.trim().length > 0;\n    }\n\n    isEmpty(optionsToDisplay) {\n        return !optionsToDisplay || (optionsToDisplay && optionsToDisplay.length === 0);\n    }\n\n    onFilter(event: KeyboardEvent) {\n        this._filterValue = (<HTMLInputElement> event.target).value;\n        this.activateFilter();\n    }\n\n    activateFilter() {\n        if (this.hasFilter() && this._options) {\n            if (this.group) {\n                let searchFields: string[] = (this.optionLabel || 'label').split(',');\n\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this._filteredOptions = filteredGroups;\n            }\n            else {\n                this._filteredOptions = this._options.filter(option => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));\n            }\n        }\n        else {\n            this._filteredOptions = null;\n        }\n    }\n\n    get toggleAllDisabled(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return true;\n        }\n        else {\n            for (let option of optionsToRender) {\n                if (!this.isOptionDisabled(option))\n                    return false;\n            }\n\n            return true;\n        }\n    }\n\n    toggleAll(event) {\n        if (this.disabled || this.toggleAllDisabled || this.readonly) {\n            return;\n        }\n\n        let allChecked = this.allChecked;\n\n        if (allChecked)\n            this.uncheckAll();\n        else\n            this.checkAll();\n\n        this.onModelChange(this.value);\n        this.onChange.emit({ originalEvent: event, value: this.value });\n        event.preventDefault();\n    }\n\n    checkAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                let subOptions = this.getOptionGroupChildren(opt);\n\n                if (subOptions) {\n                    subOptions.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    uncheckAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (optionDisabled && this.isSelected(opt)) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                if (opt.items) {\n                    opt.items.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (optionDisabled && this.isSelected(option)) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    onOptionKeyDown(event:KeyboardEvent, option) {\n        if (this.readonly) {\n            return;\n        }\n\n        let item = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(item);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(item);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onOptionClick(event, option);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    onHeaderCheckboxFocus() {\n        this.headerCheckboxFocus = true;\n    }\n\n    onHeaderCheckboxBlur() {\n        this.headerCheckboxFocus = false;\n    }\n\n    ngOnDestroy() {\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [Listbox, SharedModule],\n    declarations: [Listbox]\n})\nexport class ListboxModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;MASa,sBAAsB,GAAQ;IACvC,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC;IACtC,KAAK,EAAE,IAAI;EACb;MA+EW,OAAO;IAkGhB,YAAmB,EAAc,EAAS,EAAqB,EAAS,aAA4B,EAAS,MAAqB;QAA/G,OAAE,GAAF,EAAE,CAAY;QAAS,OAAE,GAAF,EAAE,CAAmB;QAAS,kBAAa,GAAb,aAAa,CAAe;QAAS,WAAM,GAAN,MAAM,CAAe;QAlFzH,aAAQ,GAAY,KAAK,CAAC;QAE1B,WAAM,GAAY,KAAK,CAAC;QAExB,oBAAe,GAAW,UAAU,CAAC;QAIrC,qBAAgB,GAAY,IAAI,CAAC;QAIjC,kBAAa,GAAY,IAAI,CAAC;QAM9B,wBAAmB,GAAW,OAAO,CAAC;QAgBrC,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEjD,YAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEhD,eAAU,GAAsB,IAAI,YAAY,EAAE,CAAC;QAgCtD,kBAAa,GAAa,SAAS,CAAC;QAEpC,mBAAc,GAAa,SAAS,CAAC;KAU2F;IAEvI,IAAa,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,IAAI,OAAO,CAAC,GAAU;QAClB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;KAC7B;IAED,IAAa,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,QAAQ;QACJ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACrE,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;SAC1B,CAAC,CAAC;KACN;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAQ,IAAI,CAAC,OAAO,EAAE;gBAClB,KAAK,MAAM;oBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACtC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,aAAa;oBACd,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC7C,MAAM;gBAEN;oBACI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACtC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,cAAc,CAAC,MAAW;QACtB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;KAC1I;IAED,sBAAsB,CAAC,WAAgB;QACnC,OAAO,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;KAC7H;IAED,mBAAmB,CAAC,WAAgB;QAChC,OAAO,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;KACxK;IAED,cAAc,CAAC,MAAW;QACtB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KAC/J;IAED,gBAAgB,CAAC,MAAW;QACxB,OAAO,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;KACtJ;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,aAAa,CAAC,KAAY,EAAE,MAAW;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjE,OAAO;SACV;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;gBAE1C,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACjD;aACI;YACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACd,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,gBAAgB,CAAC,MAAW;QACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjE,OAAO;SACV;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;IAED,mBAAmB,CAAC,KAAY,EAAE,MAAW;QACzC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjE,OAAO;SACV;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAA;KACL;IAED,mBAAmB,CAAC,KAAK,EAAE,MAAM;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEvE,IAAI,aAAa,EAAE;YACf,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAE/C,IAAI,QAAQ,EAAE;gBACV,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,YAAY,GAAG,IAAI,CAAC;iBACvB;aACJ;iBACI;gBACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACzC,YAAY,GAAG,IAAI,CAAC;aACvB;SACJ;aACI;YACD,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3D,YAAY,GAAG,IAAI,CAAC;SACvB;QAED,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;SACN;KACJ;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEvE,IAAI,aAAa,EAAE;YACf,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAE/C,IAAI,QAAQ,EAAE;gBACV,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBAC7B;qBACI;oBACD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;iBAC9C;gBACD,YAAY,GAAG,IAAI,CAAC;aACvB;iBACI;gBACD,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;gBAC/C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1D,YAAY,GAAG,IAAI,CAAC;aACvB;SACJ;aACI;YACD,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aAC7B;iBACI;gBACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;aACnE;YAED,YAAY,GAAG,IAAI,CAAC;SACvB;QAED,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;SACN;KACJ;IAED,qBAAqB,CAAC,KAAK,EAAE,MAAM;QAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC,OAAO;SACV;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC7B;aACI;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;SAC7D;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;KACN;IAED,YAAY,CAAC,MAAW;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9G;IAED,UAAU,CAAC,MAAW;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;oBACxB,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACpD,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACT;iBACJ;aACJ;SACJ;aACI;YACD,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACxE;QAED,OAAO,QAAQ,CAAC;KACnB;IAED,IAAI,UAAU;QACV,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAClD,OAAO,KAAK,CAAC;SAChB;aACI;YACD,IAAI,2BAA2B,GAAG,CAAC,CAAC;YACpC,IAAI,6BAA6B,GAAG,CAAC,CAAC;YACtC,IAAI,0BAA0B,GAAG,CAAC,CAAC;YACnC,IAAI,oBAAoB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAExE,KAAK,IAAI,MAAM,IAAI,eAAe,EAAE;gBAChC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACb,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAEvC,IAAI,QAAQ,EAAE;wBACV,IAAI,QAAQ;4BACR,2BAA2B,EAAE,CAAC;;4BAE9B,6BAA6B,EAAE,CAAC;qBACvC;yBACI;wBACD,IAAI,QAAQ;4BACR,0BAA0B,EAAE,CAAC;;4BAE7B,OAAO,KAAK,CAAC;qBACpB;iBACJ;qBACI;oBACD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;wBACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAEpC,IAAI,QAAQ,EAAE;4BACV,IAAI,QAAQ;gCACR,2BAA2B,EAAE,CAAC;;gCAE9B,6BAA6B,EAAE,CAAC;yBACvC;6BACI;4BACD,IAAI,QAAQ;gCACR,0BAA0B,EAAE,CAAC;iCAC5B;gCACD,OAAO,KAAK,CAAC;6BAChB;yBACJ;wBAED,oBAAoB,EAAE,CAAC;qBAC1B;iBACJ;aACJ;YAED,QAAQ,oBAAoB,KAAK,2BAA2B;mBACjD,oBAAoB,KAAK,0BAA0B;mBACnD,0BAA0B,IAAI,oBAAoB,MAAM,0BAA0B,GAAG,6BAA6B,GAAG,2BAA2B,CAAC,EAAE;SACjK;KACJ;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC;KAChD;IAGD,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;KACzF;IAED,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;KACtG;IAED,SAAS;QACL,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KACnE;IAED,OAAO,CAAC,gBAAgB;QACpB,OAAO,CAAC,gBAAgB,KAAK,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KACnF;IAED,QAAQ,CAAC,KAAoB;QACzB,IAAI,CAAC,YAAY,GAAuB,KAAK,CAAC,MAAO,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,cAAc;QACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,YAAY,GAAa,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEtE,IAAI,cAAc,GAAG,EAAE,CAAC;gBACxB,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;oBAC/B,IAAI,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnK,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;wBACjD,cAAc,CAAC,IAAI,iCAAK,QAAQ,GAAK,EAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,EAAC,EAAE,CAAC;qBAC3F;iBACJ;gBAED,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;aAC1C;iBACI;gBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAC/K;SACJ;aACI;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;KACJ;IAED,IAAI,iBAAiB;QACjB,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACf;aACI;YACD,KAAK,IAAI,MAAM,IAAI,eAAe,EAAE;gBAChC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC9B,OAAO,KAAK,CAAC;aACpB;YAED,OAAO,IAAI,CAAC;SACf;KACJ;IAED,SAAS,CAAC,KAAK;QACX,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC1D,OAAO;SACV;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEjC,IAAI,UAAU;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;;YAElB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,QAAQ;QACJ,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,GAAG,GAAU,EAAE,CAAC;QAEpB,eAAe,CAAC,OAAO,CAAC,GAAG;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,CAAC,cAAc,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC7D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;iBACtC;aACJ;iBACI;gBACD,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAElD,IAAI,UAAU,EAAE;oBACZ,UAAU,CAAC,OAAO,CAAC,MAAM;wBACrB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBACnD,IAAI,CAAC,cAAc,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;4BAChE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzC;qBACJ,CAAC,CAAC;iBACN;aACJ;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KACpB;IAED,UAAU;QACN,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,GAAG,GAAU,EAAE,CAAC;QAEpB,eAAe,CAAC,OAAO,CAAC,GAAG;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBACxC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;iBACtC;aACJ;iBACI;gBACD,IAAI,GAAG,CAAC,KAAK,EAAE;oBACX,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;wBACpB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBACnD,IAAI,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzC;qBACJ,CAAC,CAAC;iBACN;aACJ;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KACpB;IAED,eAAe,CAAC,KAAmB,EAAE,MAAM;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAI,IAAI,GAAmB,KAAK,CAAC,aAAa,CAAC;QAE/C,QAAO,KAAK,CAAC,KAAK;;YAEd,KAAK,EAAE;gBACH,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,KAAK,EAAE,CAAC;iBACpB;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;;YAGN,KAAK,EAAE;gBACH,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,KAAK,EAAE,CAAC;iBACpB;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;;YAGN,KAAK,EAAE;gBACH,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;SACT;KACJ;IAED,YAAY,CAAC,IAAI;QACb,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEvC,IAAI,QAAQ;YACR,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;YAEtL,OAAO,IAAI,CAAC;KACnB;IAED,YAAY,CAAC,IAAI;QACb,IAAI,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE3C,IAAI,QAAQ;YACR,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;YAEtL,OAAO,IAAI,CAAC;KACnB;IAED,qBAAqB;QACjB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACnC;IAED,oBAAoB;QAChB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC9C;KACJ;;oGAhnBQ,OAAO;wFAAP,OAAO,k5BARL,CAAC,sBAAsB,CAAC,mEAkErB,MAAM,8EAEN,MAAM,+DAEH,aAAa,sJAzIpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEX;2FASU,OAAO;kBA7EnB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEX,aACY,CAAC,sBAAsB,CAAC,mBAClB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;yLAIQ,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,gBAAgB;sBAAxB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,mBAAmB;sBAA3B,KAAK;gBAEG,gBAAgB;sBAAxB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEG,iBAAiB;sBAAzB,KAAK;gBAEG,kBAAkB;sBAA1B,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEI,QAAQ;sBAAjB,MAAM;gBAEG,OAAO;sBAAhB,MAAM;gBAEG,UAAU;sBAAnB,MAAM;gBAEoB,uBAAuB;sBAAjD,SAAS;uBAAC,cAAc;gBAEH,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEE,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEY,SAAS;sBAAxC,eAAe;uBAAC,aAAa;gBAsCjB,OAAO;sBAAnB,KAAK;gBAWO,WAAW;sBAAvB,KAAK;;MAygBG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAxnBb,OAAO,aAonBN,YAAY,EAAE,YAAY,EAAE,YAAY,aApnBzC,OAAO,EAqnBG,YAAY;2GAGtB,aAAa,YAJb,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,EAChC,YAAY;2FAGtB,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;oBACnD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;oBAChC,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;ACntBD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,314 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class MegaMenu {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.orientation = 'horizontal';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onCategoryMouseEnter(event, menuitem) {
+        if (menuitem.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (this.activeItem) {
+            this.activeItem = menuitem;
+        }
+    }
+    onCategoryClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && this.activeItem === item) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = null;
+    }
+    getColumnClass(menuitem) {
+        let length = menuitem.items ? menuitem.items.length : 0;
+        let columnClass;
+        switch (length) {
+            case 2:
+                columnClass = 'p-megamenu-col-6';
+                break;
+            case 3:
+                columnClass = 'p-megamenu-col-4';
+                break;
+            case 4:
+                columnClass = 'p-megamenu-col-3';
+                break;
+            case 6:
+                columnClass = 'p-megamenu-col-2';
+                break;
+            default:
+                columnClass = 'p-megamenu-col-12';
+                break;
+        }
+        return columnClass;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.unbindDocumentClickListener();
+                    this.cd.markForCheck();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+}
+MegaMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MegaMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MegaMenu, selector: "p-megaMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", orientation: "orientation", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-megaMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class MegaMenuModule {
+}
+MegaMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MegaMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, declarations: [MegaMenu], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [MegaMenu, RouterModule, TooltipModule] });
+MegaMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [MegaMenu, RouterModule, TooltipModule],
+                    declarations: [MegaMenu]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MegaMenu, MegaMenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-megamenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-megamenu.mjs","sources":["../../src/app/components/megamenu/megamenu.ts","../../src/app/components/megamenu/primeng-megamenu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Renderer2,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MegaMenuItem,MenuItem, PrimeTemplate} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-megaMenu',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\"\n            [ngClass]=\"{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}\">\n            <div class=\"p-megamenu-start\" *ngIf=\"startTemplate\">\n                <ng-container *ngTemplateOutlet=\"startTemplate\"></ng-container>\n            </div>\n            <ul class=\"p-megamenu-root-list\" role=\"menubar\">\n                <ng-template ngFor let-category [ngForOf]=\"model\">\n                    <li *ngIf=\"category.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': category.visible === false}\">\n                    <li *ngIf=\"!category.separator\" [ngClass]=\"{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}\" pTooltip [tooltipOptions]=\"category.tooltipOptions\"\n                        (mouseenter)=\"onCategoryMouseEnter($event, category)\">\n                        <a *ngIf=\"!category.routerLink\" [href]=\"category.url||'#'\" [attr.target]=\"category.target\" [attr.title]=\"category.title\" [attr.id]=\"category.id\" (click)=\"onCategoryClick($event, category)\" [attr.tabindex]=\"category.tabindex ? category.tabindex : '0'\"\n                            [ngClass]=\"{'p-menuitem-link':true,'p-disabled':category.disabled}\" [ngStyle]=\"category.style\" [class]=\"category.styleClass\" pRipple>\n                            <span class=\"p-menuitem-icon\" *ngIf=\"category.icon\" [ngClass]=\"category.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"category.escape !== false; else categoryHtmlLabel\">{{category.label}}</span>\n                            <ng-template #categoryHtmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"category.label\"></span></ng-template>\n                            <span *ngIf=\"category.items\" class=\"p-submenu-icon pi\" [ngClass]=\"{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}\"></span>\n                        </a>\n                        <a *ngIf=\"category.routerLink\" [routerLink]=\"category.routerLink\" [queryParams]=\"category.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"category.routerLinkActiveOptions||{exact:false}\" [attr.tabindex]=\"category.tabindex ? category.tabindex : '0'\"\n                            [attr.target]=\"category.target\" [attr.title]=\"category.title\" [attr.id]=\"category.id\"\n                            (click)=\"onCategoryClick($event, category)\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':category.disabled}\" [ngStyle]=\"category.style\" [class]=\"category.styleClass\"\n                            [fragment]=\"category.fragment\" [queryParamsHandling]=\"category.queryParamsHandling\" [preserveFragment]=\"category.preserveFragment\" [skipLocationChange]=\"category.skipLocationChange\" [replaceUrl]=\"category.replaceUrl\" [state]=\"category.state\" pRipple>\n                            <span class=\"p-menuitem-icon\" *ngIf=\"category.icon\" [ngClass]=\"category.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"category.escape !== false; else categoryHtmlRouteLabel\">{{category.label}}</span>\n                            <ng-template #categoryHtmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"category.label\"></span></ng-template>\n                        </a>\n                        <div class=\"p-megamenu-panel\" *ngIf=\"category.items\">\n                            <div class=\"p-megamenu-grid\">\n                                <ng-template ngFor let-column [ngForOf]=\"category.items\">\n                                    <div [class]=\"getColumnClass(category)\">\n                                        <ng-template ngFor let-submenu [ngForOf]=\"column\">\n                                            <ul class=\"p-megamenu-submenu\" role=\"menu\">\n                                                <li class=\"p-megamenu-submenu-header\">\n                                                    <span *ngIf=\"submenu.escape !== false; else submenuHtmlLabel\">{{submenu.label}}</span>\n                                                    <ng-template #submenuHtmlLabel><span [innerHTML]=\"submenu.label\"></span></ng-template>\n                                                </li>\n                                                <ng-template ngFor let-item [ngForOf]=\"submenu.items\">\n                                                    <li *ngIf=\"item.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"separator\">\n                                                    <li *ngIf=\"!item.separator\" class=\"p-menuitem\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"none\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                                                        <a *ngIf=\"!item.routerLink\" role=\"menuitem\" [href]=\"item.url||'#'\" class=\"p-menuitem-link\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.tabindex ? item.tabindex : '0'\"\n                                                            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"itemClick($event, item)\" pRipple>\n                                                            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                                                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                                                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                                                        </a>\n                                                        <a *ngIf=\"item.routerLink\" role=\"menuitem\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [attr.tabindex]=\"item.tabindex ? item.tabindex : '0'\"\n                                                            [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                                                             [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n                                                            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"itemClick($event, item)\"\n                                                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" pRipple>\n                                                            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                                                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                                                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                                                        </a>\n                                                    </li>\n                                                </ng-template>\n                                            </ul>\n                                        </ng-template>\n                                    </div>\n                                </ng-template>\n                            </div>\n                        </div>\n                    </li>\n                </ng-template>\n                <div class=\"p-megamenu-end\" *ngIf=\"endTemplate; else legacy\">\n                    <ng-container *ngTemplateOutlet=\"endTemplate\"></ng-container>\n                </div>\n                <ng-template #legacy>\n                    <div class=\"p-megamenu-end\">\n                        <ng-content></ng-content>\n                    </div>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./megamenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MegaMenu implements AfterContentInit {\n\n    @Input() model: MegaMenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() orientation: string = 'horizontal';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    activeItem: any;\n\n    documentClickListener: any;\n\n    startTemplate: TemplateRef<any>;\n\n    endTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'start':\n                    this.startTemplate = item.template;\n                break;\n\n                case 'end':\n                    this.endTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onCategoryMouseEnter(event, menuitem: MegaMenuItem) {\n        if (menuitem.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.activeItem) {\n            this.activeItem = menuitem;\n        }\n    }\n\n    onCategoryClick(event, item: MenuItem | MegaMenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && this.activeItem === item) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n    }\n\n    itemClick(event, item: MenuItem | MegaMenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.activeItem = null;\n    }\n\n    getColumnClass(menuitem: MegaMenuItem) {\n        let length = menuitem.items ? menuitem.items.length: 0;\n        let columnClass;\n        switch(length) {\n            case 2:\n                columnClass= 'p-megamenu-col-6';\n            break;\n\n            case 3:\n                columnClass= 'p-megamenu-col-4';\n            break;\n\n            case 4:\n                columnClass= 'p-megamenu-col-3';\n            break;\n\n            case 6:\n                columnClass= 'p-megamenu-col-2';\n            break;\n\n            default:\n                columnClass= 'p-megamenu-col-12';\n            break;\n        }\n\n        return columnClass;\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.unbindDocumentClickListener();\n                    this.cd.markForCheck();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [MegaMenu,RouterModule,TooltipModule],\n    declarations: [MegaMenu]\n})\nexport class MegaMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,418 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i4 from 'primeng/api';
+
+class MenuItemContent {
+    constructor(menu) {
+        this.menu = menu;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+}
+MenuItemContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, deps: [{ token: forwardRef(() => Menu) }], target: i0.ɵɵFactoryTarget.Component });
+MenuItemContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pMenuItemContent]',
+                    template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => Menu)]
+                    }] }];
+    }, propDecorators: { item: [{
+                type: Input,
+                args: ["pMenuItemContent"]
+            }] } });
+class Menu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.relativeAlign = event.relativeAlign;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    alignOverlay() {
+        if (this.relativeAlign)
+            DomHandler.relativePosition(this.container, this.target);
+        else
+            DomHandler.absolutePosition(this.container, this.target);
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.relativeAlign = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (this.popup) {
+            this.hide();
+        }
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+    hasSubMenu() {
+        if (this.model) {
+            for (var item of this.model) {
+                if (item.items) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
+Menu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Menu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"], components: [{ type: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menu', template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }] } });
+class MenuModule {
+}
+MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, declarations: [Menu, MenuItemContent], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menu, RouterModule, TooltipModule] });
+MenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menu, RouterModule, TooltipModule],
+                    declarations: [Menu, MenuItemContent]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Menu, MenuItemContent, MenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-menu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-menu.mjs","sources":["../../src/app/components/menu/menu.ts","../../src/app/components/menu/primeng-menu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,Renderer2,ViewChild,Inject,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {MenuItem, OverlayService, PrimeNGConfig} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {RouterModule} from '@angular/router';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: '[pMenuItemContent]',\n    template: `\n        <a *ngIf=\"!item.routerLink\"  (keydown)=\"onItemKeyDown($event)\" [attr.href]=\"item.url||null\" class=\"p-menuitem-link\" [attr.tabindex]=\"item.disabled ? null : '0'\" [attr.data-automationid]=\"item.automationId\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"menu.itemClick($event, item)\" role=\"menuitem\">\n            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n        </a>\n        <a *ngIf=\"item.routerLink\" (keydown)=\"onItemKeyDown($event)\" [routerLink]=\"item.routerLink\" [attr.data-automationid]=\"item.automationId\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"\n            [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n            [attr.title]=\"item.title\" [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"menu.itemClick($event, item)\" role=\"menuitem\" pRipple\n            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n        </a>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MenuItemContent {\n\n    @Input(\"pMenuItemContent\") item: MenuItem;\n\n    menu: Menu;\n\n    constructor(@Inject(forwardRef(() => Menu)) menu) {\n        this.menu = menu as Menu;\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.code) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.children[0].click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n}\n\n@Component({\n    selector: 'p-menu',\n    template: `\n        <div #container [ngClass]=\"{'p-menu p-component': true, 'p-menu-overlay': popup}\"\n            [class]=\"styleClass\" [ngStyle]=\"style\" *ngIf=\"!popup || visible\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n            <ul class=\"p-menu-list p-reset\" role=\"menu\">\n                <ng-template ngFor let-submenu [ngForOf]=\"model\" *ngIf=\"hasSubMenu()\">\n                    <li class=\"p-menu-separator\" *ngIf=\"submenu.separator\" [ngClass]=\"{'p-hidden': submenu.visible === false}\" role=\"separator\"></li>\n                    <li class=\"p-submenu-header\" [attr.data-automationid]=\"submenu.automationId\" *ngIf=\"!submenu.separator\" [ngClass]=\"{'p-hidden': submenu.visible === false}\" role=\"none\">\n                        <span *ngIf=\"submenu.escape !== false; else htmlSubmenuLabel\">{{submenu.label}}</span>\n                        <ng-template #htmlSubmenuLabel><span [innerHTML]=\"submenu.label\"></span></ng-template>\n                    </li>\n                    <ng-template ngFor let-item [ngForOf]=\"submenu.items\">\n                        <li class=\"p-menu-separator\" *ngIf=\"item.separator\" [ngClass]=\"{'p-hidden': (item.visible === false || submenu.visible === false)}\" role=\"separator\"></li>\n                        <li class=\"p-menuitem\" *ngIf=\"!item.separator\" [pMenuItemContent]=\"item\" [ngClass]=\"{'p-hidden': (item.visible === false || submenu.visible === false)}\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" role=\"none\"></li>\n                    </ng-template>\n                </ng-template>\n                <ng-template ngFor let-item [ngForOf]=\"model\" *ngIf=\"!hasSubMenu()\">\n                    <li class=\"p-menu-separator\" *ngIf=\"item.separator\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"separator\"></li>\n                    <li class=\"p-menuitem\" *ngIf=\"!item.separator\" [pMenuItemContent]=\"item\" [ngClass]=\"{'p-hidden': item.visible === false}\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" pTooltip [tooltipOptions]=\"item.tooltipOptions\" role=\"none\"></li>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./menu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Menu implements OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    container: HTMLDivElement;\n\n    scrollHandler: any;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    target: any;\n\n    visible: boolean;\n\n    relativeAlign: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.relativeAlign = event.relativeAlign;\n        this.visible = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.container = event.element;\n                    this.moveOnTop();\n                    this.onShow.emit({});\n                    this.appendOverlay();\n                    this.alignOverlay();\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit({});\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break;\n        }\n    }\n\n    alignOverlay() {\n        if (this.relativeAlign)\n            DomHandler.relativePosition(this.container, this.target);\n        else\n            DomHandler.absolutePosition(this.container, this.target);\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.relativeAlign = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    itemClick(event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (this.popup) {\n            this.hide();\n        }\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault=true\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault) {\n                    this.hide();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            if (this.container && this.autoZIndex) {\n                ZIndexUtils.clear(this.container);\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n    hasSubMenu(): boolean {\n        if (this.model) {\n            for (var item of this.model) {\n                if (item.items) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [Menu,RouterModule,TooltipModule],\n    declarations: [Menu,MenuItemContent]\n})\nexport class MenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,339 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i5 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class MenubarSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+MenubarSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MenubarSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenubarSub, selector: "p-menubarSub", inputs: { item: "item", root: "root", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", autoDisplay: "autoDisplay", parentActive: "parentActive" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-menubarSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }] } });
+class Menubar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.mobileActive) {
+            this.hide();
+            ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        }
+        else {
+            this.mobileActive = true;
+            ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
+        }
+        this.bindOutsideClickListener();
+        event.preventDefault();
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.mobileActive && this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target)
+                    && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    hide() {
+        this.mobileActive = false;
+        this.cd.markForCheck();
+        ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        this.unbindOutsideClickListener();
+    }
+    onLeafClick() {
+        this.hide();
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindOutsideClickListener();
+    }
+}
+Menubar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Menubar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menubar, selector: "p-menubar", inputs: { model: "model", style: "style", styleClass: "styleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "menubutton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"], components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menubar', template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], menubutton: [{
+                type: ViewChild,
+                args: ['menubutton']
+            }], rootmenu: [{
+                type: ViewChild,
+                args: ['rootmenu']
+            }] } });
+class MenubarModule {
+}
+MenubarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenubarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, declarations: [Menubar, MenubarSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menubar, RouterModule, TooltipModule] });
+MenubarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menubar, RouterModule, TooltipModule],
+                    declarations: [Menubar, MenubarSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Menubar, MenubarModule, MenubarSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-menubar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-menubar.mjs","sources":["../../src/app/components/menubar/menubar.ts","../../src/app/components/menubar/primeng-menubar.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Renderer2, OnDestroy,ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { MenuItem, PrimeNGConfig, PrimeTemplate } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-menubarSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': !root, 'p-menubar-root-list': root}\" [attr.role]=\"root ? 'menubar' : 'menu'\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" #listItem [ngClass]=\"{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" role=\"none\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" [attr.href]=\"child.url\" [attr.data-automationid]=\"child.automationId\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                         [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\" [attr.tabindex]=\"child.disabled ? null : '0'\" [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"item === activeItem\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi\" *ngIf=\"child.items\" [ngClass]=\"{'pi-angle-down':root,'pi-angle-right':!root}\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" [routerLink]=\"child.routerLink\" [attr.data-automationid]=\"child.automationId\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                        [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi\" *ngIf=\"child.items\" [ngClass]=\"{'pi-angle-down':root,'pi-angle-right':!root}\"></span>\n                    </a>\n                    <p-menubarSub [parentActive]=\"child === activeItem\" [item]=\"child\" *ngIf=\"child.items\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\" (leafClick)=\"onLeafClick()\"></p-menubarSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MenubarSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() mobileActive: boolean;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() get parentActive():boolean\n    {\n        return this._parentActive;\n    }\n    set parentActive(value) {\n        if (!this.root) {\n            this._parentActive = value;\n\n            if (!value)\n                this.activeItem = null;\n        }\n    }\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    _parentActive: boolean;\n\n    documentClickListener: any;\n\n    menuHoverActive: boolean = false;\n\n    activeItem: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef) { }\n\n    onItemClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && item === this.activeItem) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                if (this.root) {\n                    this.bindDocumentClickListener();\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onItemMouseEnter(event, item) {\n        if (item.disabled || this.mobileActive) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.root) {\n            if (this.activeItem || this.autoDisplay) {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n        else {\n            this.activeItem = item;\n            this.bindDocumentClickListener();\n        }\n    }\n\n    onLeafClick() {\n        this.activeItem = null;\n        if (this.root) {\n            this.unbindDocumentClickListener();\n        }\n\n        this.leafClick.emit();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.cd.markForCheck();\n                    this.unbindDocumentClickListener();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@Component({\n    selector: 'p-menubar',\n    template: `\n        <div [ngClass]=\"{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <div class=\"p-menubar-start\" *ngIf=\"startTemplate\">\n                <ng-container *ngTemplateOutlet=\"startTemplate\"></ng-container>\n            </div>\n            <a #menubutton tabindex=\"0\" class=\"p-menubar-button\" (click)=\"toggle($event)\">\n                <i class=\"pi pi-bars\"></i>\n            </a>\n            <p-menubarSub #rootmenu [item]=\"model\" root=\"root\" [baseZIndex]=\"baseZIndex\" (leafClick)=\"onLeafClick()\" [autoZIndex]=\"autoZIndex\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\"></p-menubarSub>\n            <div class=\"p-menubar-end\" *ngIf=\"endTemplate; else legacy\">\n                <ng-container *ngTemplateOutlet=\"endTemplate\"></ng-container>\n            </div>\n            <ng-template #legacy>\n                <div class=\"p-menubar-end\">\n                    <ng-content></ng-content>\n                </div>\n            </ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./menubar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Menubar implements AfterContentInit, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() autoDisplay: boolean;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('menubutton') menubutton: ElementRef;\n\n    @ViewChild('rootmenu') rootmenu: MenubarSub;\n\n    startTemplate: TemplateRef<any>;\n\n    endTemplate: TemplateRef<any>;\n\n    mobileActive: boolean;\n\n    outsideClickListener: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'start':\n                    this.startTemplate = item.template;\n                break;\n\n                case 'end':\n                    this.endTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.mobileActive) {\n            this.hide();\n            ZIndexUtils.clear(this.rootmenu.el.nativeElement);\n        }\n        else {\n            this.mobileActive = true;\n            ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);\n        }\n\n        this.bindOutsideClickListener();\n        event.preventDefault();\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.mobileActive && this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target)\n                    && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    hide() {\n        this.mobileActive = false;\n        this.cd.markForCheck();\n        ZIndexUtils.clear(this.rootmenu.el.nativeElement);\n        this.unbindOutsideClickListener();\n    }\n\n    onLeafClick() {\n        this.hide();\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindOutsideClickListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [Menubar,RouterModule,TooltipModule],\n    declarations: [Menubar,MenubarSub]\n})\nexport class MenubarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,100 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class UIMessage {
+    constructor() {
+        this.escape = true;
+    }
+    get icon() {
+        let icon = null;
+        if (this.severity) {
+            switch (this.severity) {
+                case 'success':
+                    icon = 'pi pi-check';
+                    break;
+                case 'info':
+                    icon = 'pi pi-info-circle';
+                    break;
+                case 'error':
+                    icon = 'pi pi-times-circle';
+                    break;
+                case 'warn':
+                    icon = 'pi pi-exclamation-triangle';
+                    break;
+                default:
+                    icon = 'pi pi-info-circle';
+                    break;
+            }
+        }
+        return icon;
+    }
+}
+UIMessage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
+UIMessage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIMessage, selector: "p-message", inputs: { severity: "severity", text: "text", escape: "escape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-message', template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"] }]
+        }], propDecorators: { severity: [{
+                type: Input
+            }], text: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class MessageModule {
+}
+MessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule], exports: [UIMessage] });
+MessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIMessage],
+                    declarations: [UIMessage]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MessageModule, UIMessage };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-message.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-message.mjs","sources":["../../src/app/components/message/message.ts","../../src/app/components/message/primeng-message.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-message',\n    template: `\n        <div aria-live=\"polite\" class=\"p-inline-message p-component p-inline-message\" *ngIf=\"severity\" [ngStyle]=\"style\" [class]=\"styleClass\"\n        [ngClass]=\"{'p-inline-message-info': (severity === 'info'),\n                'p-inline-message-warn': (severity === 'warn'),\n                'p-inline-message-error': (severity === 'error'),\n                'p-inline-message-success': (severity === 'success'),\n                'p-inline-message-icon-only': this.text == null}\">\n            <span class=\"p-inline-message-icon\" [ngClass]=\"icon\"></span>\n            <div *ngIf=\"!escape; else escapeOut\">\n                <span *ngIf=\"!escape\" class=\"p-inline-message-text\" [innerHTML]=\"text\"></span>\n            </div>\n            <ng-template #escapeOut>\n                <span *ngIf=\"escape\" class=\"p-inline-message-text\">{{text}}</span>\n            </ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./message.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UIMessage {\n\n    @Input() severity: string;\n\n    @Input() text: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    get icon(): string {\n        let icon: string = null;\n\n        if (this.severity) {\n            switch(this.severity) {\n                case 'success':\n                    icon = 'pi pi-check';\n                break;\n\n                case 'info':\n                    icon = 'pi pi-info-circle';\n                break;\n\n                case 'error':\n                    icon = 'pi pi-times-circle';\n                break;\n\n                case 'warn':\n                    icon = 'pi pi-exclamation-triangle';\n                break;\n\n                default:\n                    icon = 'pi pi-info-circle';\n                break;\n            }\n        }\n\n        return icon;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [UIMessage],\n    declarations: [UIMessage]\n})\nexport class MessageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MA4Ba,SAAS;IAzBtB;QA+Ba,WAAM,GAAY,IAAI,CAAC;KAmCnC;IA7BG,IAAI,IAAI;QACJ,IAAI,IAAI,GAAW,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,QAAO,IAAI,CAAC,QAAQ;gBAChB,KAAK,SAAS;oBACV,IAAI,GAAG,aAAa,CAAC;oBACzB,MAAM;gBAEN,KAAK,MAAM;oBACP,IAAI,GAAG,mBAAmB,CAAC;oBAC/B,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,GAAG,oBAAoB,CAAC;oBAChC,MAAM;gBAEN,KAAK,MAAM;oBACP,IAAI,GAAG,4BAA4B,CAAC;oBACxC,MAAM;gBAEN;oBACI,IAAI,GAAG,mBAAmB,CAAC;oBAC/B,MAAM;aACT;SACJ;QAED,OAAO,IAAI,CAAC;KACf;;sGAxCQ,SAAS;0FAAT,SAAS,oMAvBR;;;;;;;;;;;;;;;KAeT;2FAQQ,SAAS;kBAzBrB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;;;;;;KAeT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,QAAQ;sBAAhB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;;MAsCG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAhDb,SAAS,aA4CR,YAAY,aA5Cb,SAAS;2GAgDT,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;AC3ED;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,246 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+class Messages {
+    constructor(messageService, el, cd) {
+        this.messageService = messageService;
+        this.el = el;
+        this.cd = cd;
+        this.closable = true;
+        this.enableService = true;
+        this.escape = true;
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '200ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.valueChange = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+        if (this.messageService && this.enableService && !this.contentTemplate) {
+            this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {
+                if (messages) {
+                    if (messages instanceof Array) {
+                        let filteredMessages = messages.filter(m => this.key === m.key);
+                        this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];
+                    }
+                    else if (this.key === messages.key) {
+                        this.value = this.value ? [...this.value, ...[messages]] : [messages];
+                    }
+                    this.cd.markForCheck();
+                }
+            });
+            this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+                if (key) {
+                    if (this.key === key) {
+                        this.value = null;
+                    }
+                }
+                else {
+                    this.value = null;
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    hasMessages() {
+        let parentEl = this.el.nativeElement.parentElement;
+        if (parentEl && parentEl.offsetParent) {
+            return this.contentTemplate != null || this.value && this.value.length > 0;
+        }
+        return false;
+    }
+    clear() {
+        this.value = [];
+        this.valueChange.emit(this.value);
+    }
+    removeMessage(i) {
+        this.value = this.value.filter((msg, index) => index !== i);
+        this.valueChange.emit(this.value);
+    }
+    get icon() {
+        const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);
+        if (this.hasMessages()) {
+            switch (severity) {
+                case 'success':
+                    return 'pi-check';
+                    break;
+                case 'info':
+                    return 'pi-info-circle';
+                    break;
+                case 'error':
+                    return 'pi-times';
+                    break;
+                case 'warn':
+                    return 'pi-exclamation-triangle';
+                    break;
+                default:
+                    return 'pi-info-circle';
+                    break;
+            }
+        }
+        return null;
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+    }
+}
+Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Messages.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Messages, selector: "p-messages", inputs: { value: "value", closable: "closable", style: "style", styleClass: "styleClass", enableService: "enableService", key: "key", escape: "escape", severity: "severity", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, isInline: true, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('messageAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-messages', template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, animations: [
+                        trigger('messageAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () {
+        return [{ type: i1.MessageService, decorators: [{
+                        type: Optional
+                    }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { value: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], enableService: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], valueChange: [{
+                type: Output
+            }] } });
+class MessagesModule {
+}
+MessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule], exports: [Messages] });
+MessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Messages],
+                    declarations: [Messages]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Messages, MessagesModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-messages.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-messages.mjs","sources":["../../src/app/components/messages/messages.ts","../../src/app/components/messages/primeng-messages.ts"],"sourcesContent":["import {NgModule,Component,OnDestroy,Input,Output,EventEmitter,AfterContentInit,Optional,ElementRef,ChangeDetectionStrategy,ContentChildren,QueryList,TemplateRef, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {Message,PrimeTemplate,MessageService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n    selector: 'p-messages',\n    template: `\n        <div class=\"p-messages p-component\" role=\"alert\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ng-container *ngIf=\"!contentTemplate; else staticMessage\">\n                <div *ngFor=\"let msg of value; let i=index\" [ngClass]=\"'p-message p-message-' + msg.severity\" role=\"alert\"\n                    [@messageAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\">\n                    <div class=\"p-message-wrapper\">\n                       <span [class]=\"'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')\" [ngClass]=\"{'pi-info-circle': msg.severity === 'info',\n                            'pi-check': msg.severity === 'success',\n                            'pi-exclamation-triangle': msg.severity === 'warn',\n                            'pi-times-circle': msg.severity === 'error'}\"></span>\n                        <ng-container *ngIf=\"!escape; else escapeOut\">\n                            <span *ngIf=\"msg.summary\" class=\"p-message-summary\" [innerHTML]=\"msg.summary\"></span>\n                            <span *ngIf=\"msg.detail\" class=\"p-message-detail\" [innerHTML]=\"msg.detail\"></span>\n                        </ng-container>\n                        <ng-template #escapeOut>\n                            <span *ngIf=\"msg.summary\" class=\"p-message-summary\">{{msg.summary}}</span>\n                            <span *ngIf=\"msg.detail\" class=\"p-message-detail\">{{msg.detail}}</span>\n                        </ng-template>\n                        <button class=\"p-message-close p-link\" (click)=\"removeMessage(i)\" *ngIf=\"closable\" type=\"button\" pRipple>\n                            <i class=\"p-message-close-icon pi pi-times\"></i>\n                        </button>\n                    </div>\n                </div>\n            </ng-container>\n            <ng-template #staticMessage>\n                <div [ngClass]=\"'p-message p-message-' + severity\" role=\"alert\">\n                    <div class=\"p-message-wrapper\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </div>\n                </div>\n            </ng-template>\n            </div>\n    `,\n    animations: [\n        trigger('messageAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'translateY(-25%)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./messages.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Messages implements AfterContentInit, OnDestroy {\n\n    @Input() value: Message[];\n\n    @Input() closable: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() enableService: boolean = true;\n\n    @Input() key: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() severity: string;\n\n    @Input() showTransitionOptions: string = '300ms ease-out';\n\n    @Input() hideTransitionOptions: string = '200ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() valueChange: EventEmitter<Message[]> = new EventEmitter<Message[]>();\n\n    messageSubscription: Subscription;\n\n    clearSubscription: Subscription;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(@Optional() public messageService: MessageService, public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n\n        if (this.messageService && this.enableService && !this.contentTemplate) {\n            this.messageSubscription = this.messageService.messageObserver.subscribe((messages: any) => {\n                if (messages) {\n                    if (messages instanceof Array) {\n                        let filteredMessages = messages.filter(m => this.key === m.key);\n                        this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];\n                    }\n                    else if (this.key === messages.key) {\n                        this.value = this.value ? [...this.value, ...[messages]] : [messages];\n                    }\n\n                    this.cd.markForCheck();\n                }\n            });\n\n            this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n                if (key) {\n                    if (this.key === key) {\n                        this.value = null;\n                    }\n                }\n                else {\n                    this.value = null;\n                }\n\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    hasMessages() {\n        let parentEl = this.el.nativeElement.parentElement;\n        if (parentEl && parentEl.offsetParent) {\n            return this.contentTemplate != null || this.value && this.value.length > 0;\n        }\n\n        return false;\n    }\n\n    clear() {\n        this.value = [];\n        this.valueChange.emit(this.value);\n    }\n\n    removeMessage(i: number) {\n        this.value = this.value.filter((msg, index) => index !== i);\n        this.valueChange.emit(this.value);\n    }\n\n    get icon(): string {\n        const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);\n\n        if (this.hasMessages()) {\n            switch(severity) {\n                case 'success':\n                    return 'pi-check';\n                break;\n\n                case 'info':\n                    return 'pi-info-circle';\n                break;\n\n                case 'error':\n                    return 'pi-times';\n                break;\n\n                case 'warn':\n                    return 'pi-exclamation-triangle';\n                break;\n\n                default:\n                    return 'pi-info-circle';\n                break;\n            }\n        }\n\n        return null;\n    }\n\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Messages],\n    declarations: [Messages]\n})\nexport class MessagesModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;MA4Da,QAAQ;IAgCjB,YAA+B,cAA8B,EAAS,EAAc,EAAS,EAAqB;QAAnF,mBAAc,GAAd,cAAc,CAAgB;QAAS,OAAE,GAAF,EAAE,CAAY;QAAS,OAAE,GAAF,EAAE,CAAmB;QA5BzG,aAAQ,GAAY,IAAI,CAAC;QAMzB,kBAAa,GAAY,IAAI,CAAC;QAI9B,WAAM,GAAY,IAAI,CAAC;QAIvB,0BAAqB,GAAW,gBAAgB,CAAC;QAEjD,0BAAqB,GAAW,sCAAsC,CAAC;QAItE,gBAAW,GAA4B,IAAI,YAAY,EAAa,CAAC;KAQuC;IAEtH,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;gBAEN;oBACI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;aACT;SACJ,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACpE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAAa;gBACnF,IAAI,QAAQ,EAAE;oBACV,IAAI,QAAQ,YAAY,KAAK,EAAE;wBAC3B,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;wBAChE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;qBAC1F;yBACI,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE;wBAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBACzE;oBAED,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;iBAC1B;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG;gBACpE,IAAI,GAAG,EAAE;oBACL,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;wBAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;qBACrB;iBACJ;qBACI;oBACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;iBACrB;gBAED,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;aAC1B,CAAC,CAAC;SACN;KACJ;IAED,WAAW;QACP,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC;QACnD,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,EAAE;YACnC,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAC9E;QAED,OAAO,KAAK,CAAC;KAChB;IAED,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,aAAa,CAAC,CAAS;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,IAAI,IAAI;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAEvF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,QAAO,QAAQ;gBACX,KAAK,SAAS;oBACV,OAAO,UAAU,CAAC;oBACtB,MAAM;gBAEN,KAAK,MAAM;oBACP,OAAO,gBAAgB,CAAC;oBAC5B,MAAM;gBAEN,KAAK,OAAO;oBACR,OAAO,UAAU,CAAC;oBACtB,MAAM;gBAEN,KAAK,MAAM;oBACP,OAAO,yBAAyB,CAAC;oBACrC,MAAM;gBAEN;oBACI,OAAO,gBAAgB,CAAC;oBAC5B,MAAM;aACT;SACJ;QAED,OAAO,IAAI,CAAC;KACf;IAED,WAAW;QACP,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SAC1C;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACxC;KACJ;;qGAtIQ,QAAQ;yFAAR,QAAQ,4aAsBA,aAAa,6BAzEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCT,8uBACW;QACR,OAAO,CAAC,kBAAkB,EAAE;YACxB,UAAU,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;gBAClD,OAAO,CAAC,0BAA0B,CAAC;aACtC,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAC1J,CAAC;SACL,CAAC;KACL;2FAQQ,QAAQ;kBArDpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCT,cACW;wBACR,OAAO,CAAC,kBAAkB,EAAE;4BACxB,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;gCAClD,OAAO,CAAC,0BAA0B,CAAC;6BACtC,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACjB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC1J,CAAC;yBACL,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;;;8BAkCY,QAAQ;;yBA9BZ,KAAK;sBAAb,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEG,GAAG;sBAAX,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;gBAEpB,WAAW;sBAApB,MAAM;;MAsHE,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBA9Id,QAAQ,aA0IP,YAAY,EAAC,YAAY,aA1I1B,QAAQ;4GA8IR,cAAc,YAJd,CAAC,YAAY,EAAC,YAAY,CAAC;2FAI3B,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,CAAC;oBACpC,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;ACzMD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1167 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i4 from '@angular/cdk/scrolling';
+import { ScrollingModule } from '@angular/cdk/scrolling';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const MULTISELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => MultiSelect),
+    multi: true
+};
+class MultiSelectItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+    onOptionKeydown(event) {
+        this.onKeydown.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+MultiSelectItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+MultiSelectItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelectItem, selector: "p-multiSelectItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick", onKeydown: "onKeydown" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-multiSelectItem',
+                    template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }] } });
+class MultiSelect {
+    constructor(el, renderer, cd, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.filter = true;
+        this.displaySelectedLabel = true;
+        this.maxSelectedLabels = 3;
+        this.selectedItemsLabel = 'ellipsis';
+        this.showToggleAll = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.showHeader = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.display = 'comma';
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onPanelShow = new EventEmitter();
+        this.onPanelHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set defaultLabel(val) {
+        this._defaultLabel = val;
+        this.updateLabel();
+    }
+    get defaultLabel() {
+        return this._defaultLabel;
+    }
+    set placeholder(val) {
+        this._placeholder = val;
+        this.updateLabel();
+    }
+    get placeholder() {
+        return this._placeholder;
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.updateLabel();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.updateLabel();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItems':
+                    this.selectedItemsTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.overlayVisible) {
+            this.show();
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.filtered) {
+            this.alignOverlay();
+            this.filtered = false;
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    isOptionDisabled(option) {
+        let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+        return (disabled || (this.maxSelectionLimitReached && !this.isSelected(option)));
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateLabel();
+        this.updateFilledState();
+        this.checkSelectionLimit();
+        this.cd.markForCheck();
+    }
+    checkSelectionLimit() {
+        if (this.selectionLimit && (this.value && this.value.length === this.selectionLimit)) {
+            this.maxSelectionLimitReached = true;
+        }
+        else {
+            this.maxSelectionLimitReached = false;
+        }
+    }
+    updateFilledState() {
+        this.filled = (this.value && this.value.length > 0);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event) {
+        let option = event.option;
+        if (this.isOptionDisabled(option)) {
+            return;
+        }
+        let optionValue = this.getOptionValue(option);
+        let selectionIndex = this.findSelectionIndex(optionValue);
+        if (selectionIndex != -1) {
+            this.value = this.value.filter((val, i) => i != selectionIndex);
+            if (this.selectionLimit) {
+                this.maxSelectionLimitReached = false;
+            }
+        }
+        else {
+            if (!this.selectionLimit || (!this.value || this.value.length < this.selectionLimit)) {
+                this.value = [...this.value || [], optionValue];
+            }
+            this.checkSelectionLimit();
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event.originalEvent, value: this.value, itemValue: optionValue });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isSelected(option) {
+        return this.findSelectionIndex(this.getOptionValue(option)) != -1;
+    }
+    findSelectionIndex(val) {
+        let index = -1;
+        if (this.value) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        this.updateFilledState();
+        this.updateLabel();
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    show() {
+        if (!this.overlayVisible) {
+            this.overlayVisible = true;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.filterInputChild && this.filterInputChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterInputChild.nativeElement.focus();
+                    }
+                }
+                this.onPanelShow.emit();
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.unbindDocumentClickListener();
+        if (this.resetFilterOnHide) {
+            this.filterInputChild.nativeElement.value = '';
+            this._filterValue = null;
+            this._filteredOptions = null;
+        }
+        this.onPanelHide.emit();
+        this.cd.markForCheck();
+    }
+    close(event) {
+        this.hide();
+        event.preventDefault();
+        event.stopPropagation();
+    }
+    onMouseclick(event, input) {
+        if (this.disabled || this.readonly || event.target.isSameNode(this.accessibleViewChild.nativeElement)) {
+            return;
+        }
+        this.onClick.emit(event);
+        if (!this.isOverlayClick(event) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                input.focus();
+                this.show();
+            }
+        }
+    }
+    removeChip(chip, event) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
+        this.onModelChange(this.value);
+        this.checkSelectionLimit();
+        this.onChange.emit({ originalEvent: event, value: this.value, itemValue: chip });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isOverlayClick(event) {
+        let targetNode = event.target;
+        return this.overlay ? (this.overlay.isSameNode(targetNode) || this.overlay.contains(targetNode)) : false;
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || this.isOverlayClick(event));
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit({ originalEvent: event });
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit({ originalEvent: event });
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    onOptionKeydown(event) {
+        if (this.readonly) {
+            return;
+        }
+        switch (event.originalEvent.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(event.originalEvent.target.parentElement);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event);
+                event.originalEvent.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];
+        else
+            return null;
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //escape
+            case 27:
+                this.hide();
+                break;
+        }
+    }
+    updateLabel() {
+        if (this.value && this.options && this.value.length && this.displaySelectedLabel) {
+            let label = '';
+            for (let i = 0; i < this.value.length; i++) {
+                let itemLabel = this.findLabelByValue(this.value[i]);
+                if (itemLabel) {
+                    if (label.length > 0) {
+                        label = label + ', ';
+                    }
+                    label = label + itemLabel;
+                }
+            }
+            if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {
+                this.valuesAsString = label;
+            }
+            else {
+                let pattern = /{(.*?)}/;
+                if (pattern.test(this.selectedItemsLabel)) {
+                    this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');
+                }
+                else {
+                    this.valuesAsString = this.selectedItemsLabel;
+                }
+            }
+        }
+        else {
+            this.valuesAsString = this.placeholder || this.defaultLabel;
+        }
+    }
+    findLabelByValue(val) {
+        if (this.group) {
+            let label = null;
+            for (let i = 0; i < this.options.length; i++) {
+                let subOptions = this.getOptionGroupChildren(this.options[i]);
+                if (subOptions) {
+                    label = this.searchLabelByValue(val, subOptions);
+                    if (label) {
+                        break;
+                    }
+                }
+            }
+            return label;
+        }
+        else {
+            return this.searchLabelByValue(val, this.options);
+        }
+    }
+    searchLabelByValue(val, options) {
+        let label = null;
+        for (let i = 0; i < options.length; i++) {
+            let option = options[i];
+            let optionValue = this.getOptionValue(option);
+            if (val == null && optionValue == null || ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                label = this.getOptionLabel(option);
+                break;
+            }
+        }
+        return label;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyOptions() {
+        let optionsToRender = this.optionsToRender;
+        return !optionsToRender || optionsToRender.length === 0;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    onFilterInputChange(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+        this.cd.detectChanges();
+        this.alignOverlay();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push(Object.assign(Object.assign({}, optgroup), { [this.optionGroupChildren]: filteredSubOptions }));
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (!DomHandler.isAndroid()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+MultiSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+MultiSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelect, selector: "p-multiSelect", inputs: { style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: "disabled", readonly: "readonly", group: "group", filter: "filter", filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: "overlayVisible", tabindex: "tabindex", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: "selectionLimit", selectedItemsLabel: "selectedItemsLabel", showToggleAll: "showToggleAll", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: "showHeader", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", filterBy: "filterBy", virtualScroll: "virtualScroll", itemSize: "itemSize", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", display: "display", scrollHeight: "scrollHeight", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [MULTISELECT_VALUE_ACCESSOR], queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterInputChild", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"], components: [{ type: MultiSelectItem, selector: "p-multiSelectItem", inputs: ["option", "selected", "label", "disabled", "itemSize", "template"], outputs: ["onClick", "onKeydown"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.Ripple, selector: "[pRipple]" }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-multiSelect', template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus || overlayVisible'
+                    }, providers: [MULTISELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], overlayVisible: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], displaySelectedLabel: [{
+                type: Input
+            }], maxSelectedLabels: [{
+                type: Input
+            }], selectionLimit: [{
+                type: Input
+            }], selectedItemsLabel: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterInputChild: [{
+                type: ViewChild,
+                args: ['filterInput']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onPanelShow: [{
+                type: Output
+            }], onPanelHide: [{
+                type: Output
+            }], scrollHeight: [{
+                type: Input
+            }], defaultLabel: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class MultiSelectModule {
+}
+MultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [MultiSelect, SharedModule, ScrollingModule] });
+MultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [MultiSelect, SharedModule, ScrollingModule],
+                    declarations: [MultiSelect, MultiSelectItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectItem, MultiSelectModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-multiselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-multiselect.mjs","sources":["../../src/app/components/multiselect/multiselect.ts","../../src/app/components/multiselect/primeng-multiselect.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, Input, Output, Renderer2, EventEmitter,\n    forwardRef, ViewChild, ChangeDetectorRef, TemplateRef, ContentChildren, QueryList, ContentChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { SharedModule, PrimeTemplate, Footer, Header, FilterService, PrimeNGConfig, TranslationKeys, OverlayService } from 'primeng/api';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { RippleModule } from 'primeng/ripple';\n\nexport const MULTISELECT_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MultiSelect),\n  multi: true\n};\n\n@Component({\n    selector: 'p-multiSelectItem',\n    template: `\n        <li class=\"p-multiselect-item\" (click)=\"onOptionClick($event)\" (keydown)=\"onOptionKeydown($event)\" [attr.aria-label]=\"label\"\n            [attr.tabindex]=\"disabled ? null : '0'\" [ngStyle]=\"{'height': itemSize + 'px'}\"\n            [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\" pRipple>\n            <div class=\"p-checkbox p-component\">\n                <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': selected}\">\n                    <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': selected}\"></span>\n                </div>\n            </div>\n            <span *ngIf=\"!template\">{{label}}</span>\n            <ng-container *ngTemplateOutlet=\"template; context: {$implicit: option}\"></ng-container>\n        </li>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MultiSelectItem {\n\n    @Input() option: any;\n\n    @Input() selected: boolean;\n\n    @Input() label: any;\n\n    @Input() disabled: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeydown: EventEmitter<any> = new EventEmitter();\n\n    onOptionClick(event: Event) {\n        this.onClick.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n\n    onOptionKeydown(event: Event) {\n        this.onKeydown.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n}\n\n@Component({\n    selector: 'p-multiSelect',\n    template: `\n        <div #container [ngClass]=\"{'p-multiselect p-component':true,\n            'p-multiselect-open':overlayVisible,\n            'p-multiselect-chip': display === 'chip',\n            'p-focus':focus,\n            'p-disabled': disabled}\" [ngStyle]=\"style\" [class]=\"styleClass\"\n            (click)=\"onMouseclick($event,in)\">\n            <div class=\"p-hidden-accessible\">\n                <input #in type=\"text\" readonly=\"readonly\" [attr.id]=\"inputId\" [attr.name]=\"name\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\"\n                       [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" (keydown)=\"onKeydown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\"\n                       [attr.aria-labelledby]=\"ariaLabelledBy\" role=\"listbox\">\n            </div>\n            <div class=\"p-multiselect-label-container\" [pTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition\" [positionStyle]=\"tooltipPositionStyle\" [tooltipStyleClass]=\"tooltipStyleClass\">\n                <div class=\"p-multiselect-label\" [ngClass]=\"{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}\">\n                    <ng-container *ngIf=\"!selectedItemsTemplate\">\n                        <ng-container *ngIf=\"display === 'comma'\">{{valuesAsString || 'empty'}}</ng-container>\n                        <ng-container *ngIf=\"display === 'chip'\">\n                            <div #token *ngFor=\"let item of value; let i = index;\" class=\"p-multiselect-token\">\n                                <span class=\"p-multiselect-token-label\">{{findLabelByValue(item)}}</span>\n                                <span *ngIf=\"!disabled\" class=\"p-multiselect-token-icon pi pi-times-circle\" (click)=\"removeChip(item, $event)\"></span>\n                            </div>\n                            <ng-container *ngIf=\"!value || value.length === 0\">{{placeholder || defaultLabel || 'empty'}}</ng-container>\n                        </ng-container>\n                    </ng-container>\n                    <ng-container *ngTemplateOutlet=\"selectedItemsTemplate; context: {$implicit: value}\"></ng-container>\n                </div>\n            </div>\n            <div [ngClass]=\"{'p-multiselect-trigger':true}\">\n                <span class=\"p-multiselect-trigger-icon\" [ngClass]=\"dropdownIcon\"></span>\n            </div>\n            <div *ngIf=\"overlayVisible\" [ngClass]=\"['p-multiselect-panel p-component']\" [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"onOverlayAnimationEnd\n                (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\" (keydown)=\"onKeydown($event)\" (click)=\"onOverlayClick($event)\" >\n                <div class=\"p-multiselect-header\" *ngIf=\"showHeader\">\n                    <ng-content select=\"p-header\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <div class=\"p-checkbox p-component\" *ngIf=\"showToggleAll && !selectionLimit\" [ngClass]=\"{'p-checkbox-disabled': disabled || toggleAllDisabled}\">\n                        <div class=\"p-hidden-accessible\">\n                            <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\" [disabled]=\"disabled || toggleAllDisabled\">\n                        </div>\n                        <div class=\"p-checkbox-box\" role=\"checkbox\" [attr.aria-checked]=\"allChecked\" [ngClass]=\"{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}\" (click)=\"toggleAll($event)\">\n                            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n                        </div>\n                    </div>\n                    <div class=\"p-multiselect-filter-container\" *ngIf=\"filter\">\n                        <input #filterInput type=\"text\" role=\"textbox\" [value]=\"filterValue||''\" (input)=\"onFilterInputChange($event)\" class=\"p-multiselect-filter p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n                        <span class=\"p-multiselect-filter-icon pi pi-search\"></span>\n                    </div>\n                    <button class=\"p-multiselect-close p-link\" type=\"button\" (click)=\"close($event)\" pRipple>\n                        <span class=\"p-multiselect-close-icon pi pi-times\"></span>\n                    </button>\n                </div>\n                <div class=\"p-multiselect-items-wrapper\" [style.max-height]=\"virtualScroll ? 'auto' : (scrollHeight||'auto')\">\n                    <ul class=\"p-multiselect-items p-component\" [ngClass]=\"{'p-multiselect-virtualscroll': virtualScroll}\" role=\"listbox\" aria-multiselectable=\"true\">\n                        <ng-container *ngIf=\"group\">\n                            <ng-template ngFor let-optgroup [ngForOf]=\"optionsToRender\">\n                                <li class=\"p-multiselect-item-group\">\n                                    <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                                </li>\n                                <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                            </ng-template>\n                        </ng-container>\n                        <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToRender}\"></ng-container>\n                        </ng-container>\n                        <ng-template #itemslist let-optionsToDisplay let-selectedOption=\"selectedOption\">\n                            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                                <ng-template ngFor let-option let-i=\"index\" [ngForOf]=\"optionsToDisplay\">\n                                    <p-multiSelectItem [option]=\"option\" [selected]=\"isSelected(option)\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\" (onClick)=\"onOptionClick($event)\" (onKeydown)=\"onOptionKeydown($event)\"\n                                            [template]=\"itemTemplate\"></p-multiSelectItem>\n                                </ng-template>\n                            </ng-container>\n                            <ng-template #virtualScrollList>\n                                <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !emptyOptions\">\n                                    <ng-container *cdkVirtualFor=\"let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                        <p-multiSelectItem [option]=\"option\" [selected]=\"isSelected(option)\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\" (onClick)=\"onOptionClick($event)\" (onKeydown)=\"onOptionKeydown($event)\"\n                                            [template]=\"itemTemplate\" [itemSize]=\"itemSize\"></p-multiSelectItem>\n                                    </ng-container>\n                                </cdk-virtual-scroll-viewport>\n                            </ng-template>\n                            <li *ngIf=\"hasFilter() && emptyOptions\" class=\"p-multiselect-empty-message\">\n                                <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                                    {{emptyFilterMessageLabel}}\n                                </ng-container>\n                                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                            </li>\n                            <li *ngIf=\"!hasFilter() && emptyOptions\" class=\"p-multiselect-empty-message\">\n                                <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                    {{emptyMessageLabel}}\n                                </ng-container>\n                                <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                            </li>\n                        </ng-template>\n                    </ul>\n                </div>\n                <div class=\"p-multiselect-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus || overlayVisible'\n    },\n    providers: [MULTISELECT_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./multiselect.css']\n})\nexport class MultiSelect implements OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyle: any;\n\n    @Input() panelStyleClass: string;\n\n    @Input() inputId: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() group: boolean;\n\n    @Input() filter: boolean = true;\n\n    @Input() filterPlaceHolder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() overlayVisible: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() appendTo: any;\n\n    @Input() dataKey: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() displaySelectedLabel: boolean = true;\n\n    @Input() maxSelectedLabels: number = 3;\n\n    @Input() selectionLimit: number;\n\n    @Input() selectedItemsLabel: string = 'ellipsis';\n\n    @Input() showToggleAll: boolean = true;\n\n    @Input() emptyFilterMessage: string = '';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() resetFilterOnHide: boolean = false;\n\n    @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() showHeader: boolean = true;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() filterBy: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() tooltip: string = '';\n\n    @Input() tooltipPosition: string = 'right';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() autofocusFilter: boolean = true;\n\n    @Input() display: string = 'comma';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('filterInput') filterInputChild: ElementRef;\n\n    @ViewChild('in') accessibleViewChild: ElementRef;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPanelShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPanelHide: EventEmitter<any> = new EventEmitter();\n\n    @Input() scrollHeight: string = '200px';\n\n    _defaultLabel: string;\n\n    @Input() set defaultLabel(val: string) {\n        this._defaultLabel = val;\n        this.updateLabel();\n    }\n\n    get defaultLabel(): string {\n        return this._defaultLabel;\n    }\n\n    _placeholder: string;\n\n    @Input() set placeholder(val: string) {\n        this._placeholder = val;\n        this.updateLabel();\n    }\n\n    get placeholder(): string {\n        return this._placeholder;\n    }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n        this.updateLabel();\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    public value: any[];\n\n    public _filteredOptions: any[];\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    overlay: HTMLDivElement;\n\n    public valuesAsString: string;\n\n    public focus: boolean;\n\n    filled: boolean;\n\n    public documentClickListener: any;\n\n    public _filterValue: string;\n\n    public filtered: boolean;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public groupTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public footerTemplate: TemplateRef<any>;\n\n    public emptyFilterTemplate: TemplateRef<any>;\n\n    public emptyTemplate: TemplateRef<any>;\n\n    public selectedItemsTemplate: TemplateRef<any>;\n\n    public headerCheckboxFocus: boolean;\n\n    _options: any[];\n\n    maxSelectionLimitReached: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    preventModelTouched: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        this.updateLabel();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'selectedItems':\n                    this.selectedItemsTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.overlayVisible) {\n            this.show();\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (this.filtered) {\n            this.alignOverlay();\n\n            this.filtered = false;\n        }\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    isOptionDisabled(option: any) {\n        let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n        return (disabled || (this.maxSelectionLimitReached && !this.isSelected(option)));\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateLabel();\n        this.updateFilledState();\n        this.checkSelectionLimit();\n\n        this.cd.markForCheck();\n    }\n\n    checkSelectionLimit() {\n        if (this.selectionLimit && (this.value && this.value.length === this.selectionLimit)) {\n            this.maxSelectionLimitReached = true;\n        }\n        else {\n            this.maxSelectionLimitReached = false;\n        }\n    }\n\n    updateFilledState() {\n        this.filled = (this.value && this.value.length > 0);\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onOptionClick(event) {\n        let option = event.option;\n        if (this.isOptionDisabled(option)) {\n            return;\n        }\n\n        let optionValue = this.getOptionValue(option);\n        let selectionIndex = this.findSelectionIndex(optionValue);\n        if (selectionIndex != -1) {\n            this.value = this.value.filter((val,i) => i != selectionIndex);\n\n            if (this.selectionLimit) {\n                this.maxSelectionLimitReached = false;\n            }\n        }\n        else {\n            if (!this.selectionLimit || (!this.value || this.value.length < this.selectionLimit)) {\n                this.value = [...this.value || [], optionValue];\n            }\n\n            this.checkSelectionLimit();\n        }\n\n        this.onModelChange(this.value);\n        this.onChange.emit({originalEvent: event.originalEvent, value: this.value, itemValue: optionValue});\n        this.updateLabel();\n        this.updateFilledState();\n    }\n\n    isSelected(option) {\n        return this.findSelectionIndex(this.getOptionValue(option)) != -1;\n    }\n\n    findSelectionIndex(val: any): number {\n        let index = -1;\n\n        if (this.value) {\n            for (let i = 0; i < this.value.length; i++) {\n                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    get toggleAllDisabled(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return true;\n        }\n        else {\n            for (let option of optionsToRender) {\n                if (!this.isOptionDisabled(option))\n                    return false;\n            }\n\n            return true;\n        }\n    }\n\n    toggleAll(event) {\n        if (this.disabled || this.toggleAllDisabled || this.readonly) {\n            return;\n        }\n\n        let allChecked = this.allChecked;\n\n        if (allChecked)\n            this.uncheckAll();\n        else\n            this.checkAll();\n\n        this.onModelChange(this.value);\n        this.onChange.emit({ originalEvent: event, value: this.value });\n        this.updateFilledState();\n        this.updateLabel();\n        event.preventDefault();\n    }\n\n    checkAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                let subOptions = this.getOptionGroupChildren(opt);\n\n                if (subOptions) {\n                    subOptions.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    uncheckAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (optionDisabled && this.isSelected(opt)) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                if (opt.items) {\n                    opt.items.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (optionDisabled && this.isSelected(option)) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    show() {\n        if (!this.overlayVisible){\n            this.overlayVisible = true;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.appendOverlay();\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                }\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                if (this.filterInputChild && this.filterInputChild.nativeElement) {\n                    this.preventModelTouched = true;\n\n                    if (this.autofocusFilter) {\n                        this.filterInputChild.nativeElement.focus();\n                    }\n                }\n\n                this.onPanelShow.emit();\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';\n            }\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.overlay) {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.unbindDocumentClickListener();\n        if (this.resetFilterOnHide){\n            this.filterInputChild.nativeElement.value = '';\n            this._filterValue = null;\n            this._filteredOptions = null;\n        }\n        this.onPanelHide.emit();\n        this.cd.markForCheck();\n    }\n\n    close(event) {\n        this.hide();\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    onMouseclick(event: MouseEvent, input) {\n        if (this.disabled || this.readonly || (<Node> event.target).isSameNode(this.accessibleViewChild.nativeElement)) {\n            return;\n        }\n\n        this.onClick.emit(event);\n\n        if (!this.isOverlayClick(event) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {\n            if (this.overlayVisible) {\n                this.hide();\n            }\n            else {\n                input.focus();\n                this.show();\n            }\n        }\n    }\n\n    removeChip(chip: any, event: MouseEvent) {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));\n        this.onModelChange(this.value);\n        this.checkSelectionLimit();\n        this.onChange.emit({originalEvent: event, value: this.value, itemValue: chip});\n        this.updateLabel();\n        this.updateFilledState();\n    }\n\n    isOverlayClick(event: MouseEvent) {\n        let targetNode = <Node> event.target;\n        return this.overlay ? (this.overlay.isSameNode(targetNode) || this.overlay.contains(targetNode)) : false;\n    }\n\n    isOutsideClicked(event: MouseEvent): boolean {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || this.isOverlayClick(event));\n    }\n\n    onInputFocus(event) {\n        this.focus = true;\n        this.onFocus.emit({originalEvent: event});\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.onBlur.emit({originalEvent: event});\n\n        if (!this.preventModelTouched) {\n            this.onModelTouched();\n        }\n        this.preventModelTouched = false;\n    }\n\n    onOptionKeydown(event) {\n        if (this.readonly) {\n            return;\n        }\n\n        switch(event.originalEvent.which) {\n\n            //down\n            case 40:\n                var nextItem = this.findNextItem(event.originalEvent.target.parentElement);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.originalEvent.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.originalEvent.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onOptionClick(event);\n                event.originalEvent.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];\n        else\n            return null;\n    }\n\n    onKeydown(event: KeyboardEvent){\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                    event.preventDefault();\n                }\n            break;\n\n            //space\n            case 32:\n                if (!this.overlayVisible){\n                    this.show();\n                    event.preventDefault();\n                }\n                break;\n\n            //escape\n            case 27:\n                this.hide();\n            break;\n        }\n    }\n\n    updateLabel() {\n        if (this.value && this.options && this.value.length && this.displaySelectedLabel) {\n            let label = '';\n            for (let i = 0; i < this.value.length; i++) {\n                let itemLabel = this.findLabelByValue(this.value[i]);\n                if (itemLabel) {\n                    if (label.length > 0) {\n                        label = label + ', ';\n                    }\n                    label = label + itemLabel;\n                }\n            }\n\n            if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {\n                this.valuesAsString = label;\n            }\n            else {\n                let pattern = /{(.*?)}/;\n                if (pattern.test(this.selectedItemsLabel)) {\n                    this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');\n                } else {\n                    this.valuesAsString = this.selectedItemsLabel;\n                }\n            }\n        }\n        else {\n            this.valuesAsString = this.placeholder || this.defaultLabel;\n        }\n    }\n\n    findLabelByValue(val: any): string {\n        if (this.group) {\n            let label = null;\n\n            for (let i = 0; i < this.options.length; i++) {\n                let subOptions = this.getOptionGroupChildren(this.options[i]);\n                if (subOptions) {\n                    label = this.searchLabelByValue(val, subOptions);\n\n                    if (label) {\n                        break;\n                    }\n                }\n            }\n\n            return label;\n        }\n        else {\n            return this.searchLabelByValue(val, this.options)\n        }\n    }\n\n    searchLabelByValue(val: any, options: any[]): string {\n        let label = null;\n\n        for (let i = 0; i < options.length; i++) {\n            let option = options[i];\n            let optionValue = this.getOptionValue(option);\n\n            if (val == null && optionValue == null || ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                label = this.getOptionLabel(option);\n                break;\n            }\n        }\n\n        return label;\n    }\n\n    get allChecked(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return false;\n        }\n        else {\n            let selectedDisabledItemsLength = 0;\n            let unselectedDisabledItemsLength = 0;\n            let selectedEnabledItemsLength = 0;\n            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n\n            for (let option of optionsToRender) {\n                if (!this.group) {\n                    let disabled = this.isOptionDisabled(option);\n                    let selected = this.isSelected(option);\n\n                    if (disabled) {\n                        if (selected)\n                            selectedDisabledItemsLength++;\n                        else\n                            unselectedDisabledItemsLength++;\n                    }\n                    else {\n                        if (selected)\n                            selectedEnabledItemsLength++;\n                        else\n                            return false;\n                    }\n                }\n                else {\n                    for (let opt of this.getOptionGroupChildren(option)) {\n                        let disabled = this.isOptionDisabled(opt);\n                        let selected = this.isSelected(opt);\n\n                        if (disabled) {\n                            if (selected)\n                                selectedDisabledItemsLength++;\n                            else\n                                unselectedDisabledItemsLength++;\n                        }\n                        else {\n                            if (selected)\n                                selectedEnabledItemsLength++;\n                            else {\n                                return false;\n                            }\n                        }\n\n                        visibleOptionsLength++;\n                    }\n                }\n            }\n\n            return (visibleOptionsLength === selectedDisabledItemsLength\n                    || visibleOptionsLength === selectedEnabledItemsLength\n                    || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n        }\n    }\n\n    get optionsToRender(): any[] {\n        return this._filteredOptions || this.options;\n    }\n\n    get emptyOptions(): boolean {\n        let optionsToRender = this.optionsToRender;\n        return !optionsToRender || optionsToRender.length === 0;\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    hasFilter() {\n        return this._filterValue && this._filterValue.trim().length > 0;\n    }\n\n    onFilterInputChange(event: KeyboardEvent) {\n        this._filterValue = (<HTMLInputElement> event.target).value;\n        this.activateFilter();\n        this.onFilter.emit({originalEvent: event, filter: this._filterValue});\n        this.cd.detectChanges();\n        this.alignOverlay();\n    }\n\n    activateFilter() {\n        if (this.hasFilter() && this._options) {\n            let searchFields: string[] = (this.filterBy || this.optionLabel || 'label').split(',');\n            if (this.group) {\n                let searchFields: string[] = (this.optionLabel || 'label').split(',');\n\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this._filteredOptions = filteredGroups;\n            }\n            else {\n                this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);\n            }\n        }\n        else {\n            this._filteredOptions = null;\n        }\n    }\n\n    onHeaderCheckboxFocus() {\n        this.headerCheckboxFocus = true;\n    }\n\n    onHeaderCheckboxBlur() {\n        this.headerCheckboxFocus = false;\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (!DomHandler.isAndroid()) {\n            this.hide();\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.onModelTouched();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ScrollingModule,TooltipModule,RippleModule],\n    exports: [MultiSelect,SharedModule,ScrollingModule],\n    declarations: [MultiSelect,MultiSelectItem]\n})\nexport class MultiSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,479 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils } from 'primeng/utils';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i5 from '@angular/cdk/drag-drop';
+import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
+
+class OrderList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.controlsPosition = 'left';
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.selectionChange = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.onReorder = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onFilterEvent = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');
+            let listItem;
+            if (listItems.length > 0) {
+                if (this.movedUp)
+                    listItem = listItems[0];
+                else
+                    listItem = listItems[listItems.length - 1];
+                DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);
+            }
+            this.movedUp = false;
+            this.movedDown = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.filterValue) {
+            this.filter();
+        }
+    }
+    onItemClick(event, item, index) {
+        this.itemTouched = false;
+        let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);
+        let selected = (selectedIndex != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = (metaKey) ? this._selection ? [...this._selection] : [] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        else {
+            if (selected) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = this._selection ? [...this._selection] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        //binding
+        this.selectionChange.emit(this._selection);
+        //event
+        this.onSelectionChange.emit({ originalEvent: event, value: this._selection });
+    }
+    onFilterKeyup(event) {
+        this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        this.filter();
+        this.onFilterEvent.emit({
+            originalEvent: event,
+            value: this.visibleOptions
+        });
+    }
+    filter() {
+        let searchFields = this.filterBy.split(',');
+        this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+    }
+    isItemVisible(item) {
+        if (this.filterValue && this.filterValue.trim().length) {
+            for (let i = 0; i < this.visibleOptions.length; i++) {
+                if (item == this.visibleOptions[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        this.itemTouched = true;
+    }
+    isSelected(item) {
+        return ObjectUtils.findIndexInList(item, this.selection) != -1;
+    }
+    isEmpty() {
+        return this.filterValue ? (!this.visibleOptions || this.visibleOptions.length === 0) : (!this.value || this.value.length === 0);
+    }
+    moveUp() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex - 1];
+                    this.value[selectedItemIndex - 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedUp = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveTop() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = 0;
+        }
+    }
+    moveDown() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex + 1];
+                    this.value[selectedItemIndex + 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedDown = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveBottom() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;
+        }
+    }
+    onDrop(event) {
+        let previousIndex = event.previousIndex;
+        let currentIndex = event.currentIndex;
+        if (previousIndex !== currentIndex) {
+            if (this.visibleOptions) {
+                if (this.filterValue) {
+                    previousIndex = ObjectUtils.findIndexInList(event.item.data, this.value);
+                    currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);
+                }
+                moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);
+            }
+            moveItemInArray(this.value, previousIndex, currentIndex);
+            this.onReorder.emit([event.item.data]);
+        }
+    }
+    onItemKeydown(event, item, index) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, index);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+                @media screen and (max-width: ${this.breakpoint}) {
+                    .p-orderlist[${this.id}] {
+                        flex-direction: column;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls {
+                        padding: var(--content-padding);
+                        flex-direction: row;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {
+                        margin-right: var(--inline-spacing);
+                        margin-bottom: 0;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {
+                        margin-right: 0;
+                    }
+                }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+OrderList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+OrderList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrderList, selector: "p-orderList", inputs: { header: "header", style: "style", styleClass: "styleClass", listStyle: "listStyle", responsive: "responsive", filterBy: "filterBy", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", controlsPosition: "controlsPosition", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint", trackBy: "trackBy", selection: "selection", value: "value" }, outputs: { selectionChange: "selectionChange", onReorder: "onReorder", onSelectionChange: "onSelectionChange", onFilterEvent: "onFilterEvent" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewChild", first: true, predicate: ["listelement"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-orderList', template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { header: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], controlsPosition: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], trackBy: [{
+                type: Input
+            }], onReorder: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], onFilterEvent: [{
+                type: Output
+            }], listViewChild: [{
+                type: ViewChild,
+                args: ['listelement']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selection: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+class OrderListModule {
+}
+OrderListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrderListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, declarations: [OrderList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [OrderList, SharedModule, DragDropModule] });
+OrderListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [OrderList, SharedModule, DragDropModule],
+                    declarations: [OrderList]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OrderList, OrderListModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-orderlist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-orderlist.mjs","sources":["../../src/app/components/orderlist/orderlist.ts","../../src/app/components/orderlist/primeng-orderlist.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,AfterContentInit,Input,Output,ContentChildren,QueryList,TemplateRef,EventEmitter,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {SharedModule,PrimeTemplate,FilterService} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {CdkDragDrop, DragDropModule, moveItemInArray} from '@angular/cdk/drag-drop';\n\n@Component({\n    selector: 'p-orderList',\n    template: `\n        <div [ngClass]=\"{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',\n                    'p-orderlist-controls-right': controlsPosition === 'right'}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-orderlist-controls\">\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-up\" (click)=\"moveUp()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-double-up\" (click)=\"moveTop()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-down\" (click)=\"moveDown()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-double-down\" (click)=\"moveBottom()\"></button>\n            </div>\n            <div class=\"p-orderlist-list-container\">\n                <div class=\"p-orderlist-header\" *ngIf=\"header || headerTemplate\">\n                    <div class=\"p-orderlist-title\" *ngIf=\"!headerTemplate\">{{header}}</div>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-orderlist-filter-container\" *ngIf=\"filterBy\">\n                    <div class=\"p-orderlist-filter\">\n                        <input type=\"text\" role=\"textbox\" (keyup)=\"onFilterKeyup($event)\" class=\"p-orderlist-filter-input p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\" [attr.aria-label]=\"ariaFilterLabel\">\n                        <span class=\"p-orderlist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <ul #listelement cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"p-orderlist-list\" [ngStyle]=\"listStyle\">\n                    <ng-template ngFor [ngForTrackBy]=\"trackBy\" let-item [ngForOf]=\"value\" let-i=\"index\" let-l=\"last\">\n                        <li class=\"p-orderlist-item\" tabindex=\"0\" [ngClass]=\"{'p-highlight':isSelected(item)}\" cdkDrag pRipple [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,i)\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,i)\"\n                             *ngIf=\"isItemVisible(item)\" role=\"option\" [attr.aria-selected]=\"isSelected(item)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)\">\n                        <li *ngIf=\"!filterValue || !emptyFilterMessageTemplate\" class=\"p-orderlist-empty-message\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n                        </li>\n                        <li *ngIf=\"filterValue\" class=\"p-orderlist-empty-message\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./orderlist.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OrderList implements AfterViewChecked,AfterContentInit {\n\n    @Input() header: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() listStyle: any;\n\n    @Input() responsive: boolean;\n\n    @Input() filterBy: string;\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dragdrop: boolean = false;\n\n    @Input() controlsPosition: string = 'left';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() breakpoint: string = \"960px\";\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Output() onReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilterEvent: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('listelement') listViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public emptyMessageTemplate: TemplateRef<any>;\n\n    public emptyFilterMessageTemplate: TemplateRef<any>;\n\n    _selection: any[];\n\n    movedUp: boolean;\n\n    movedDown: boolean;\n\n    itemTouched: boolean;\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    public filterValue: string;\n\n    public visibleOptions: any[];\n\n    public _value: any[];\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n    get selection(): any[] {\n        return this._selection;\n    }\n\n    @Input() set selection(val:any[]) {\n        this._selection = val;\n    }\n\n    ngOnInit() {\n        if (this.responsive) {\n            this.createStyle();\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterMessageTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.movedUp||this.movedDown) {\n            let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');\n            let listItem;\n\n            if (listItems.length > 0) {\n                if (this.movedUp)\n                    listItem = listItems[0];\n                else\n                    listItem = listItems[listItems.length - 1];\n\n                DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);\n            }\n            this.movedUp = false;\n            this.movedDown = false;\n        }\n    }\n\n    get value(): any[] {\n        return this._value;\n    }\n\n    @Input() set value(val:any[]) {\n        this._value = val;\n        if (this.filterValue) {\n            this.filter();\n        }\n    }\n\n    onItemClick(event, item, index) {\n        this.itemTouched = false;\n        let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);\n        let selected = (selectedIndex != -1);\n        let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey||event.ctrlKey||event.shiftKey);\n\n            if (selected && metaKey) {\n                this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n            }\n            else {\n                this._selection = (metaKey) ? this._selection ? [...this._selection] : [] : [];\n                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n            }\n        }\n        else {\n            if (selected) {\n                this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n            }\n            else {\n                this._selection = this._selection ? [...this._selection] : [];\n                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n            }\n        }\n\n        //binding\n        this.selectionChange.emit(this._selection);\n\n        //event\n        this.onSelectionChange.emit({originalEvent:event, value: this._selection});\n    }\n\n    onFilterKeyup(event) {\n        this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);\n        this.filter();\n\n        this.onFilterEvent.emit({\n            originalEvent: event,\n            value: this.visibleOptions\n        });\n    }\n\n    filter() {\n        let searchFields: string[] = this.filterBy.split(',');\n        this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n    }\n\n    isItemVisible(item: any): boolean {\n        if (this.filterValue && this.filterValue.trim().length) {\n            for (let i = 0; i < this.visibleOptions.length; i++) {\n                if (item == this.visibleOptions[i]) {\n                    return true;\n                }\n            }\n        }\n        else {\n            return true;\n        }\n    }\n\n    onItemTouchEnd() {\n        this.itemTouched = true;\n    }\n\n    isSelected(item: any) {\n        return ObjectUtils.findIndexInList(item, this.selection) != -1;\n    }\n\n    isEmpty() {\n        return this.filterValue ? (!this.visibleOptions || this.visibleOptions.length === 0) : (!this.value || this.value.length === 0);\n    }\n\n    moveUp() {\n        if (this.selection) {\n            for (let i = 0; i < this.selection.length; i++) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = this.value[selectedItemIndex];\n                    let temp = this.value[selectedItemIndex-1];\n                    this.value[selectedItemIndex-1] = movedItem;\n                    this.value[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.movedUp = true;\n            this.onReorder.emit(this.selection);\n        }\n    }\n\n    moveTop() {\n        if (this.selection) {\n            for (let i = this.selection.length - 1; i >= 0; i--) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = this.value.splice(selectedItemIndex,1)[0];\n                    this.value.unshift(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.onReorder.emit(this.selection);\n            this.listViewChild.nativeElement.scrollTop = 0;\n        }\n    }\n\n    moveDown() {\n        if (this.selection) {\n            for (let i = this.selection.length - 1; i >= 0; i--) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != (this.value.length - 1)) {\n                    let movedItem = this.value[selectedItemIndex];\n                    let temp = this.value[selectedItemIndex+1];\n                    this.value[selectedItemIndex+1] = movedItem;\n                    this.value[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.movedDown = true;\n            this.onReorder.emit(this.selection);\n        }\n    }\n\n    moveBottom() {\n        if (this.selection) {\n            for (let i = 0; i < this.selection.length; i++) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != (this.value.length - 1)) {\n                    let movedItem = this.value.splice(selectedItemIndex,1)[0];\n                    this.value.push(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.onReorder.emit(this.selection);\n            this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;\n        }\n    }\n\n    onDrop(event: CdkDragDrop<string[]>) {\n        let previousIndex =  event.previousIndex;\n        let currentIndex = event.currentIndex;\n\n        if (previousIndex !== currentIndex) {\n\n            if (this.visibleOptions) {\n                if (this.filterValue) {\n                    previousIndex =  ObjectUtils.findIndexInList(event.item.data, this.value);\n                    currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);\n                }\n\n                moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);\n            }\n\n            moveItemInArray(this.value, previousIndex, currentIndex);\n            this.onReorder.emit([event.item.data]);\n        }\n    }\n\n    onItemKeydown(event: KeyboardEvent, item, index: Number) {\n        let listItem = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onItemClick(event, item, index);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.el.nativeElement.children[0].setAttribute(this.id, '');\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n\n            let innerHTML = `\n                @media screen and (max-width: ${this.breakpoint}) {\n                    .p-orderlist[${this.id}] {\n                        flex-direction: column;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls {\n                        padding: var(--content-padding);\n                        flex-direction: row;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {\n                        margin-right: var(--inline-spacing);\n                        margin-bottom: 0;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {\n                        margin-right: 0;\n                    }\n                }\n            `;\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;``\n        }\n    }\n\n    ngOnDestroy() {\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule,DragDropModule],\n    exports: [OrderList,SharedModule,DragDropModule],\n    declarations: [OrderList]\n})\nexport class OrderListModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,323 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Input, EventEmitter, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { Subject } from 'rxjs';
+
+class OrganizationChartNode {
+    constructor(chart, cd) {
+        this.cd = cd;
+        this.chart = chart;
+        this.subscription = this.chart.selectionSource$.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    get leaf() {
+        return this.node.leaf == false ? false : !(this.node.children && this.node.children.length);
+    }
+    get colspan() {
+        return (this.node.children && this.node.children.length) ? this.node.children.length * 2 : null;
+    }
+    onNodeClick(event, node) {
+        this.chart.onNodeClick(event, node);
+    }
+    toggleNode(event, node) {
+        node.expanded = !node.expanded;
+        if (node.expanded)
+            this.chart.onNodeExpand.emit({ originalEvent: event, node: this.node });
+        else
+            this.chart.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+        event.preventDefault();
+    }
+    isSelected() {
+        return this.chart.isSelected(this.node);
+    }
+    ngOnDestroy() {
+        this.subscription.unsubscribe();
+    }
+}
+OrganizationChartNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, deps: [{ token: forwardRef(() => OrganizationChart) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChartNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: { node: "node", root: "root", first: "first", last: "last" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, isInline: true, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"], components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('childState', [
+            state('in', style({ opacity: 1 })),
+            transition('void => *', [
+                style({ opacity: 0 }),
+                animate(150)
+            ]),
+            transition('* => void', [
+                animate(150, style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, decorators: [{
+            type: Component,
+            args: [{ selector: '[pOrganizationChartNode]', template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, animations: [
+                        trigger('childState', [
+                            state('in', style({ opacity: 1 })),
+                            transition('void => *', [
+                                style({ opacity: 0 }),
+                                animate(150)
+                            ]),
+                            transition('* => void', [
+                                animate(150, style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"] }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => OrganizationChart)]
+                    }] }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { node: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], last: [{
+                type: Input
+            }] } });
+class OrganizationChart {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.preserveSpace = true;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.selectionSource = new Subject();
+        this.selectionSource$ = this.selectionSource.asObservable();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+        if (this.initialized)
+            this.selectionSource.next(null);
+    }
+    get root() {
+        return this.value && this.value.length ? this.value[0] : null;
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            this.templateMap[item.getType()] = item.template;
+        });
+        this.initialized = true;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (eventTarget.className && (eventTarget.className.indexOf('p-node-toggler') !== -1 || eventTarget.className.indexOf('p-node-toggler-icon') !== -1)) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.selectionMode === 'single') {
+                if (selected) {
+                    this.selection = null;
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = node;
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else if (this.selectionMode === 'multiple') {
+                if (selected) {
+                    this.selection = this.selection.filter((val, i) => i != index);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = [...this.selection || [], node];
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            this.selectionChange.emit(this.selection);
+            this.selectionSource.next(null);
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.selectionMode === 'single') {
+                index = (this.selection == node) ? 0 : -1;
+            }
+            else if (this.selectionMode === 'multiple') {
+                for (let i = 0; i < this.selection.length; i++) {
+                    if (this.selection[i] == node) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+}
+OrganizationChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChart, selector: "p-organizationChart", inputs: { value: "value", style: "style", styleClass: "styleClass", selectionMode: "selectionMode", preserveSpace: "preserveSpace", selection: "selection" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `, isInline: true, components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-organizationChart',
+                    template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], preserveSpace: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class OrganizationChartModule {
+}
+OrganizationChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrganizationChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, declarations: [OrganizationChart, OrganizationChartNode], imports: [CommonModule], exports: [OrganizationChart, SharedModule] });
+OrganizationChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [OrganizationChart, SharedModule],
+                    declarations: [OrganizationChart, OrganizationChartNode]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OrganizationChart, OrganizationChartModule, OrganizationChartNode };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-organizationchart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-organizationchart.mjs","sources":["../../src/app/components/organizationchart/organizationchart.ts","../../src/app/components/organizationchart/primeng-organizationchart.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,AfterContentInit,EventEmitter,TemplateRef,\n        Inject,forwardRef,ContentChildren,QueryList,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule} from 'primeng/api';\nimport {TreeNode} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\n\n@Component({\n    selector: '[pOrganizationChartNode]',\n    template: `\n        <tbody *ngIf=\"node\">\n            <tr>\n                <td [attr.colspan]=\"colspan\">\n                    <div [class]=\"node.styleClass\" [ngClass]=\"{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}\"\n                        (click)=\"onNodeClick($event,node)\">\n                        <div *ngIf=\"!chart.getTemplateForNode(node)\">{{node.label}}</div>\n                        <div *ngIf=\"chart.getTemplateForNode(node)\">\n                            <ng-container *ngTemplateOutlet=\"chart.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                        </div>\n                        <a *ngIf=\"!leaf\" tabindex=\"0\" class=\"p-node-toggler\" (click)=\"toggleNode($event, node)\" (keydown.enter)=\"toggleNode($event, node)\">\n                            <i class=\"p-node-toggler-icon pi\" [ngClass]=\"{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}\"></i>\n                        </a>\n                    </div>\n                </td>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-lines\" [@childState]=\"'in'\">\n                <td [attr.colspan]=\"colspan\">\n                    <div class=\"p-organizationchart-line-down\"></div>\n                </td>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-lines\" [@childState]=\"'in'\">\n                <ng-container *ngIf=\"node.children && node.children.length === 1\">\n                    <td [attr.colspan]=\"colspan\">\n                        <div class=\"p-organizationchart-line-down\"></div>\n                    </td>\n                </ng-container>\n                <ng-container *ngIf=\"node.children && node.children.length > 1\">\n                    <ng-template ngFor let-child [ngForOf]=\"node.children\" let-first=\"first\" let-last=\"last\">\n                        <td class=\"p-organizationchart-line-left\" [ngClass]=\"{'p-organizationchart-line-top':!first}\">&nbsp;</td>\n                        <td class=\"p-organizationchart-line-right\" [ngClass]=\"{'p-organizationchart-line-top':!last}\">&nbsp;</td>\n                    </ng-template>\n                </ng-container>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-nodes\" [@childState]=\"'in'\">\n                <td *ngFor=\"let child of node.children\" colspan=\"2\">\n                    <table class=\"p-organizationchart-table\" pOrganizationChartNode [node]=\"child\"></table>\n                </td>\n            </tr>\n        </tbody>\n    `,\n    animations: [\n        trigger('childState', [\n            state('in', style({opacity: 1})),\n           transition('void => *', [\n             style({opacity: 0}),\n             animate(150)\n           ]),\n           transition('* => void', [\n             animate(150, style({opacity:0}))\n           ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./organizationchart.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OrganizationChartNode implements OnDestroy{\n\n    @Input() node: TreeNode;\n\n    @Input() root: boolean;\n\n    @Input() first: boolean;\n\n    @Input() last: boolean;\n\n    chart: OrganizationChart;\n\n    subscription: Subscription;\n\n    constructor(@Inject(forwardRef(() => OrganizationChart)) chart, public cd: ChangeDetectorRef) {\n        this.chart = chart as OrganizationChart;\n        this.subscription = this.chart.selectionSource$.subscribe(() =>{\n            this.cd.markForCheck();\n        })\n    }\n\n    get leaf(): boolean {\n        return this.node.leaf == false ? false : !(this.node.children&&this.node.children.length);\n    }\n\n    get colspan() {\n        return (this.node.children && this.node.children.length) ? this.node.children.length * 2: null;\n    }\n\n    onNodeClick(event: Event, node: TreeNode) {\n        this.chart.onNodeClick(event, node)\n    }\n\n    toggleNode(event: Event, node: TreeNode) {\n        node.expanded = !node.expanded;\n        if (node.expanded)\n            this.chart.onNodeExpand.emit({originalEvent: event, node: this.node});\n        else\n            this.chart.onNodeCollapse.emit({originalEvent: event, node: this.node});\n\n        event.preventDefault();\n    }\n\n    isSelected() {\n        return this.chart.isSelected(this.node);\n    }\n\n    ngOnDestroy() {\n        this.subscription.unsubscribe();\n    }\n}\n\n@Component({\n    selector: 'p-organizationChart',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}\">\n            <table class=\"p-organizationchart-table\" pOrganizationChartNode [node]=\"root\" *ngIf=\"root\"></table>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush,\n   host: {\n    'class': 'p-element'\n}\n})\nexport class OrganizationChart implements AfterContentInit {\n\n    @Input() value: TreeNode[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() selectionMode: string;\n\n    @Input() preserveSpace: boolean = true;\n\n    @Input()  get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val:any) {\n        this._selection = val;\n\n        if (this.initialized)\n            this.selectionSource.next(null);\n    }\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public templateMap: any;\n\n    private selectionSource = new Subject<any>();\n\n    _selection: any;\n\n    initialized: boolean;\n\n    selectionSource$ = this.selectionSource.asObservable();\n\n    constructor(public el: ElementRef, public cd:ChangeDetectorRef) {}\n\n    get root(): TreeNode {\n        return this.value && this.value.length ? this.value[0] : null;\n    }\n\n    ngAfterContentInit() {\n        if (this.templates.length) {\n            this.templateMap = {};\n        }\n\n        this.templates.forEach((item) => {\n            this.templateMap[item.getType()] = item.template;\n        });\n\n        this.initialized = true;\n    }\n\n    getTemplateForNode(node: TreeNode): TemplateRef<any> {\n        if (this.templateMap)\n            return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n        else\n            return null;\n    }\n\n    onNodeClick(event: Event, node: TreeNode) {\n        let eventTarget = (<Element> event.target);\n\n        if (eventTarget.className && (eventTarget.className.indexOf('p-node-toggler') !== -1 || eventTarget.className.indexOf('p-node-toggler-icon') !== -1)) {\n            return;\n        }\n        else if (this.selectionMode) {\n            if (node.selectable === false) {\n                return;\n            }\n\n            let index = this.findIndexInSelection(node);\n            let selected = (index >= 0);\n\n            if (this.selectionMode === 'single') {\n                if (selected) {\n                    this.selection = null;\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    this.selection = node;\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n            else if (this.selectionMode === 'multiple') {\n                if (selected) {\n                    this.selection = this.selection.filter((val,i) => i!=index);\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    this.selection = [...this.selection||[],node];\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n\n            this.selectionChange.emit(this.selection);\n            this.selectionSource.next(null);\n        }\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.selectionMode && this.selection) {\n            if (this.selectionMode === 'single') {\n                index = (this.selection == node) ? 0 : - 1;\n            }\n            else if (this.selectionMode === 'multiple') {\n                for(let i = 0; i  < this.selection.length; i++) {\n                    if (this.selection[i] == node) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [OrganizationChart,SharedModule],\n    declarations: [OrganizationChart,OrganizationChartNode]\n})\nexport class OrganizationChartModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,356 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+
+class OverlayPanel {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.dismissable = true;
+        this.appendTo = 'body';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.focusOnShow = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.overlayVisible = false;
+        this.render = false;
+        this.selfClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.dismissable) {
+            this.zone.runOutsideAngular(() => {
+                let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                    if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {
+                        this.zone.run(() => {
+                            this.hide();
+                        });
+                    }
+                    this.selfClick = false;
+                    this.cd.markForCheck();
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    toggle(event, target) {
+        if (this.overlayVisible) {
+            if (this.hasTargetChanged(event, target)) {
+                this.destroyCallback = () => {
+                    this.show(null, (target || event.currentTarget || event.target));
+                };
+            }
+            this.hide();
+        }
+        else {
+            this.show(event, target);
+        }
+    }
+    show(event, target) {
+        this.target = target || event.currentTarget || event.target;
+        this.overlayVisible = true;
+        this.render = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    hasTargetChanged(event, target) {
+        return this.target != null && this.target !== (target || event.currentTarget || event.target);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-overlaypanel-flipped');
+        }
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            this.onShow.emit(null);
+            this.appendContainer();
+            this.align();
+            this.bindDocumentClickListener();
+            this.bindDocumentResizeListener();
+            this.bindScrollListener();
+            if (this.focusOnShow) {
+                this.focus();
+            }
+            this.overlayEventListener = (e) => {
+                if (this.container && this.container.contains(e.target)) {
+                    this.selfClick = true;
+                }
+            };
+            this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.destroyCallback) {
+                    this.destroyCallback();
+                    this.destroyCallback = null;
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+            case 'close':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(this.container);
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                this.render = false;
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onCloseClick(event) {
+        this.hide();
+        event.preventDefault();
+    }
+    onWindowResize(event) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onContainerDestroy() {
+        this.target = null;
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.target = null;
+        this.destroyCallback = null;
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+OverlayPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+OverlayPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OverlayPanel, selector: "p-overlayPanel", inputs: { dismissable: "dismissable", showCloseIcon: "showCloseIcon", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", ariaCloseLabel: "ariaCloseLabel", baseZIndex: "baseZIndex", focusOnShow: "focusOnShow", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, isInline: true, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('close', style({
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => close', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-overlayPanel', template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('close', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => close', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { dismissable: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class OverlayPanelModule {
+}
+OverlayPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OverlayPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule], exports: [OverlayPanel, SharedModule] });
+OverlayPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, imports: [[CommonModule, RippleModule, SharedModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule],
+                    exports: [OverlayPanel, SharedModule],
+                    declarations: [OverlayPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OverlayPanel, OverlayPanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-overlaypanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-overlaypanel.mjs","sources":["../../src/app/components/overlaypanel/overlaypanel.ts","../../src/app/components/overlaypanel/primeng-overlaypanel.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,OnDestroy,EventEmitter,Renderer2,ElementRef,ChangeDetectorRef,NgZone,\n        ContentChildren,TemplateRef,AfterContentInit,QueryList,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {SharedModule,PrimeTemplate, PrimeNGConfig, OverlayService} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {ZIndexUtils} from 'primeng/utils';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    selector: 'p-overlayPanel',\n    template: `\n        <div *ngIf=\"render\" [ngClass]=\"'p-overlaypanel p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onOverlayClick($event)\"\n            [@animation]=\"{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n            <div class=\"p-overlaypanel-content\" (click)=\"onContentClick()\" (mousedown)=\"onContentClick()\">\n                <ng-content></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </div>\n            <button *ngIf=\"showCloseIcon\" type=\"button\" class=\"p-overlaypanel-close p-link\" (click)=\"onCloseClick($event)\" (keydown.enter)=\"hide()\" [attr.aria-label]=\"ariaCloseLabel\" pRipple>\n                <span class=\"p-overlaypanel-close-icon pi pi-times\"></span>\n            </button>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                transform: 'scaleY(0.8)',\n                opacity: 0\n            })),\n            state('close', style({\n                opacity: 0\n            })),\n            state('open', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => close', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./overlaypanel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OverlayPanel implements AfterContentInit, OnDestroy {\n\n    @Input() dismissable: boolean = true;\n\n    @Input() showCloseIcon: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any = 'body';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() ariaCloseLabel: string;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() focusOnShow: boolean = true;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    container: HTMLDivElement;\n\n    overlayVisible: boolean = false;\n\n    render: boolean = false;\n\n    selfClick: boolean = false;\n\n    documentClickListener: any;\n\n    target: any;\n\n    willHide: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    destroyCallback: Function;\n\n    overlayEventListener;\n\n    overlaySubscription: Subscription;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, private zone: NgZone, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n\n            this.cd.markForCheck();\n        });\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener && this.dismissable) {\n            this.zone.runOutsideAngular(() => {\n                let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n                const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n                this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n                    if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {\n                        this.zone.run(() => {\n                            this.hide();\n                        });\n                    }\n\n                    this.selfClick = false;\n                    this.cd.markForCheck();\n                });\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n            this.selfClick = false;\n        }\n    }\n\n    toggle(event, target?) {\n        if (this.overlayVisible) {\n            if (this.hasTargetChanged(event, target)) {\n                this.destroyCallback = () => {\n                    this.show(null, (target||event.currentTarget||event.target));\n                };\n            }\n\n            this.hide();\n        }\n        else {\n            this.show(event, target);\n        }\n    }\n\n    show(event, target?) {\n        this.target = target||event.currentTarget||event.target;\n        this.overlayVisible = true;\n        this.render = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n\n        this.selfClick = true;\n    }\n\n    onContentClick() {\n        this.selfClick = true;\n    }\n\n    hasTargetChanged(event, target) {\n        return this.target != null && this.target !== (target||event.currentTarget||event.target);\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    align() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);\n        }\n\n        DomHandler.absolutePosition(this.container, this.target);\n\n        const containerOffset = DomHandler.getOffset(this.container);\n        const targetOffset = DomHandler.getOffset(this.target);\n        let arrowLeft = 0;\n\n        if (containerOffset.left < targetOffset.left) {\n            arrowLeft = targetOffset.left - containerOffset.left;\n        }\n        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n        if (containerOffset.top < targetOffset.top) {\n            DomHandler.addClass(this.container, 'p-overlaypanel-flipped');\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.toState === 'open') {\n            this.container = event.element;\n            this.onShow.emit(null);\n            this.appendContainer();\n            this.align();\n            this.bindDocumentClickListener();\n            this.bindDocumentResizeListener();\n            this.bindScrollListener();\n\n            if (this.focusOnShow) {\n                this.focus();\n            }\n\n            this.overlayEventListener = (e) => {\n                if (this.container && this.container.contains(e.target)) {\n                    this.selfClick = true;\n                }\n            }\n\n            this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                if (this.destroyCallback) {\n                    this.destroyCallback();\n                    this.destroyCallback = null;\n                }\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n            break;\n\n            case 'close':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(this.container);\n                }\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n\n                this.onContainerDestroy();\n                this.onHide.emit({});\n                this.render = false;\n            break;\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onCloseClick(event) {\n        this.hide();\n        event.preventDefault();\n    }\n\n    onWindowResize(event) {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onContainerDestroy() {\n        this.target = null;\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.target = null;\n        this.destroyCallback = null;\n        if (this.container) {\n            this.restoreAppend();\n            this.onContainerDestroy();\n        }\n\n        if (this.overlaySubscription) {\n            this.overlaySubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule, SharedModule],\n    exports: [OverlayPanel, SharedModule],\n    declarations: [OverlayPanel]\n})\nexport class OverlayPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i5 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i1 from 'primeng/dropdown';
+import { DropdownModule } from 'primeng/dropdown';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i6 from 'primeng/api';
+import { SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/inputnumber';
+import { InputNumberModule } from 'primeng/inputnumber';
+
+class Paginator {
+    constructor(cd) {
+        this.cd = cd;
+        this.pageLinkSize = 5;
+        this.onPageChange = new EventEmitter();
+        this.alwaysShow = true;
+        this.dropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.totalRecords = 0;
+        this.rows = 0;
+        this.showPageLinks = true;
+        this._first = 0;
+        this._page = 0;
+    }
+    ngOnInit() {
+        this.updatePaginatorState();
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.totalRecords) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+            this.updateFirst();
+            this.updateRowsPerPageOptions();
+        }
+        if (simpleChange.first) {
+            this._first = simpleChange.first.currentValue;
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rows) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rowsPerPageOptions) {
+            this.updateRowsPerPageOptions();
+        }
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    updateRowsPerPageOptions() {
+        if (this.rowsPerPageOptions) {
+            this.rowsPerPageItems = [];
+            for (let opt of this.rowsPerPageOptions) {
+                if (typeof opt == 'object' && opt['showAll']) {
+                    this.rowsPerPageItems.unshift({ label: opt['showAll'], value: this.totalRecords });
+                }
+                else {
+                    this.rowsPerPageItems.push({ label: String(opt), value: opt });
+                }
+            }
+        }
+    }
+    isFirstPage() {
+        return this.getPage() === 0;
+    }
+    isLastPage() {
+        return this.getPage() === this.getPageCount() - 1;
+    }
+    getPageCount() {
+        return Math.ceil(this.totalRecords / this.rows);
+    }
+    calculatePageLinkBoundaries() {
+        let numberOfPages = this.getPageCount(), visiblePages = Math.min(this.pageLinkSize, numberOfPages);
+        //calculate range, keep current in middle if necessary
+        let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))), end = Math.min(numberOfPages - 1, start + visiblePages - 1);
+        //check when approaching to last page
+        var delta = this.pageLinkSize - (end - start + 1);
+        start = Math.max(0, start - delta);
+        return [start, end];
+    }
+    updatePageLinks() {
+        this.pageLinks = [];
+        let boundaries = this.calculatePageLinkBoundaries(), start = boundaries[0], end = boundaries[1];
+        for (let i = start; i <= end; i++) {
+            this.pageLinks.push(i + 1);
+        }
+        if (this.showJumpToPageDropdown) {
+            this.pageItems = [];
+            for (let i = 0; i < this.getPageCount(); i++) {
+                this.pageItems.push({ label: String(i + 1), value: i });
+            }
+        }
+    }
+    changePage(p) {
+        var pc = this.getPageCount();
+        if (p >= 0 && p < pc) {
+            this._first = this.rows * p;
+            var state = {
+                page: p,
+                first: this.first,
+                rows: this.rows,
+                pageCount: pc
+            };
+            this.updatePageLinks();
+            this.onPageChange.emit(state);
+            this.updatePaginatorState();
+        }
+    }
+    updateFirst() {
+        const page = this.getPage();
+        if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {
+            Promise.resolve(null).then(() => this.changePage(page - 1));
+        }
+    }
+    getPage() {
+        return Math.floor(this.first / this.rows);
+    }
+    changePageToFirst(event) {
+        if (!this.isFirstPage()) {
+            this.changePage(0);
+        }
+        event.preventDefault();
+    }
+    changePageToPrev(event) {
+        this.changePage(this.getPage() - 1);
+        event.preventDefault();
+    }
+    changePageToNext(event) {
+        this.changePage(this.getPage() + 1);
+        event.preventDefault();
+    }
+    changePageToLast(event) {
+        if (!this.isLastPage()) {
+            this.changePage(this.getPageCount() - 1);
+        }
+        event.preventDefault();
+    }
+    onPageLinkClick(event, page) {
+        this.changePage(page);
+        event.preventDefault();
+    }
+    onRppChange(event) {
+        this.changePage(this.getPage());
+    }
+    onPageDropdownChange(event) {
+        this.changePage(event.value);
+    }
+    updatePaginatorState() {
+        this.paginatorState = {
+            page: this.getPage(),
+            pageCount: this.getPageCount(),
+            rows: this.rows,
+            first: this.first,
+            totalRecords: this.totalRecords
+        };
+    }
+    empty() {
+        return this.getPageCount() === 0;
+    }
+    currentPage() {
+        return this.getPageCount() > 0 ? this.getPage() + 1 : 0;
+    }
+    get currentPageReport() {
+        return this.currentPageReportTemplate
+            .replace("{currentPage}", String(this.currentPage()))
+            .replace("{totalPages}", String(this.getPageCount()))
+            .replace("{first}", String((this.totalRecords > 0) ? this._first + 1 : 0))
+            .replace("{last}", String(Math.min(this._first + this.rows, this.totalRecords)))
+            .replace("{rows}", String(this.rows))
+            .replace("{totalRecords}", String(this.totalRecords));
+    }
+}
+Paginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Paginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Paginator, selector: "p-paginator", inputs: { pageLinkSize: "pageLinkSize", style: "style", styleClass: "styleClass", alwaysShow: "alwaysShow", templateLeft: "templateLeft", templateRight: "templateRight", dropdownAppendTo: "dropdownAppendTo", dropdownScrollHeight: "dropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showFirstLastIcon: "showFirstLastIcon", totalRecords: "totalRecords", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showPageLinks: "showPageLinks", dropdownItemTemplate: "dropdownItemTemplate", first: "first" }, outputs: { onPageChange: "onPageChange" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"], components: [{ type: i1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-paginator', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageLinkSize: [{
+                type: Input
+            }], onPageChange: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], alwaysShow: [{
+                type: Input
+            }], templateLeft: [{
+                type: Input
+            }], templateRight: [{
+                type: Input
+            }], dropdownAppendTo: [{
+                type: Input
+            }], dropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], dropdownItemTemplate: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }] } });
+class PaginatorModule {
+}
+PaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, declarations: [Paginator], imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+PaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, imports: [[CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule],
+                    exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule],
+                    declarations: [Paginator]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Paginator, PaginatorModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-paginator.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-paginator.mjs","sources":["../../src/app/components/paginator/paginator.ts","../../src/app/components/paginator/primeng-paginator.ts"],"sourcesContent":["import {NgModule,Component,OnInit,Input,Output,ChangeDetectorRef,EventEmitter,TemplateRef,OnChanges,SimpleChanges,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {SelectItem} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule} from 'primeng/api';\nimport {InputNumberModule} from 'primeng/inputnumber';\n\n@Component({\n    selector: 'p-paginator',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-paginator p-component'\" *ngIf=\"alwaysShow ? true : (pageLinks && pageLinks.length > 1)\">\n            <div class=\"p-paginator-left-content\" *ngIf=\"templateLeft\">\n                <ng-container *ngTemplateOutlet=\"templateLeft; context: {$implicit: paginatorState}\"></ng-container>\n            </div>\n            <span class=\"p-paginator-current\" *ngIf=\"showCurrentPageReport\">{{currentPageReport}}</span>\n            <button *ngIf=\"showFirstLastIcon\" type=\"button\" [disabled]=\"isFirstPage() || empty()\" (click)=\"changePageToFirst($event)\" pRipple\n                    class=\"p-paginator-first p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isFirstPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-double-left\"></span>\n            </button>\n            <button type=\"button\" [disabled]=\"isFirstPage() || empty()\" (click)=\"changePageToPrev($event)\" pRipple\n                    class=\"p-paginator-prev p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isFirstPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-left\"></span>\n            </button>\n            <span class=\"p-paginator-pages\" *ngIf=\"showPageLinks\">\n                <button type=\"button\" *ngFor=\"let pageLink of pageLinks\" class=\"p-paginator-page p-paginator-element p-link\" [ngClass]=\"{'p-highlight': (pageLink-1 == getPage())}\"\n                    (click)=\"onPageLinkClick($event, pageLink - 1)\" pRipple>{{pageLink}}</button>\n            </span>\n            <p-dropdown [options]=\"pageItems\" [ngModel]=\"getPage()\" *ngIf=\"showJumpToPageDropdown\" [disabled]=\"empty()\" styleClass=\"p-paginator-page-options\"\n                (onChange)=\"onPageDropdownChange($event)\" [appendTo]=\"dropdownAppendTo\" [scrollHeight]=\"dropdownScrollHeight\">\n                <ng-template pTemplate=\"selectedItem\">{{currentPageReport}}</ng-template>\n            </p-dropdown>\n            <button type=\"button\" [disabled]=\"isLastPage() || empty()\" (click)=\"changePageToNext($event)\" pRipple\n                    class=\"p-paginator-next p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isLastPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-right\"></span>\n            </button>\n            <button *ngIf=\"showFirstLastIcon\" type=\"button\" [disabled]=\"isLastPage() || empty()\" (click)=\"changePageToLast($event)\" pRipple\n                    class=\"p-paginator-last p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isLastPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-double-right\"></span>\n            </button>\n            <p-inputNumber *ngIf=\"showJumpToPageInput\" [ngModel]=\"currentPage()\" class=\"p-paginator-page-input\" [disabled]=\"empty()\" (ngModelChange)=\"changePage($event - 1)\"></p-inputNumber>\n            <p-dropdown [options]=\"rowsPerPageItems\" [(ngModel)]=\"rows\" *ngIf=\"rowsPerPageOptions\" styleClass=\"p-paginator-rpp-options\" [disabled]=\"empty()\"\n                (onChange)=\"onRppChange($event)\" [appendTo]=\"dropdownAppendTo\" [scrollHeight]=\"dropdownScrollHeight\">\n                <ng-container *ngIf=\"dropdownItemTemplate\">\n                    <ng-template let-item pTemplate=\"item\">\n                        <ng-container *ngTemplateOutlet=\"dropdownItemTemplate; context: {$implicit: item}\">\n                        </ng-container>\n                    </ng-template>\n                </ng-container>\n            </p-dropdown>\n            <div class=\"p-paginator-right-content\" *ngIf=\"templateRight\">\n                <ng-container *ngTemplateOutlet=\"templateRight; context: {$implicit: paginatorState}\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./paginator.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Paginator implements OnInit, OnChanges {\n\n    @Input() pageLinkSize: number = 5;\n\n    @Output() onPageChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() alwaysShow: boolean = true;\n\n    @Input() templateLeft: TemplateRef<any>;\n\n    @Input() templateRight: TemplateRef<any>;\n\n    @Input() dropdownAppendTo: any;\n\n    @Input() dropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() totalRecords: number = 0;\n\n    @Input() rows: number = 0;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showJumpToPageInput: boolean;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() dropdownItemTemplate: TemplateRef<any>;\n\n    pageLinks: number[];\n\n    pageItems: SelectItem[];\n\n    rowsPerPageItems: SelectItem[];\n\n    paginatorState: any;\n\n    _first: number = 0;\n\n    _page: number = 0;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        this.updatePaginatorState();\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.totalRecords) {\n            this.updatePageLinks();\n            this.updatePaginatorState();\n            this.updateFirst();\n            this.updateRowsPerPageOptions();\n        }\n\n        if (simpleChange.first) {\n            this._first = simpleChange.first.currentValue;\n            this.updatePageLinks();\n            this.updatePaginatorState();\n        }\n\n        if (simpleChange.rows) {\n            this.updatePageLinks();\n            this.updatePaginatorState();\n        }\n\n        if (simpleChange.rowsPerPageOptions) {\n            this.updateRowsPerPageOptions();\n        }\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val:number) {\n        this._first = val;\n    }\n\n    updateRowsPerPageOptions() {\n        if (this.rowsPerPageOptions) {\n            this.rowsPerPageItems = [];\n            for (let opt of this.rowsPerPageOptions) {\n                if (typeof opt == 'object' && opt['showAll']) {\n                    this.rowsPerPageItems.unshift({label: opt['showAll'], value: this.totalRecords});\n                }\n                else {\n                    this.rowsPerPageItems.push({label: String(opt), value: opt});\n                }\n            }\n        }\n    }\n\n    isFirstPage() {\n        return this.getPage() === 0;\n    }\n\n    isLastPage() {\n        return this.getPage() === this.getPageCount() - 1;\n    }\n\n    getPageCount() {\n        return Math.ceil(this.totalRecords/this.rows);\n    }\n\n    calculatePageLinkBoundaries() {\n        let numberOfPages = this.getPageCount(),\n        visiblePages = Math.min(this.pageLinkSize, numberOfPages);\n\n        //calculate range, keep current in middle if necessary\n        let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))),\n        end = Math.min(numberOfPages - 1, start + visiblePages - 1);\n\n        //check when approaching to last page\n        var delta = this.pageLinkSize - (end - start + 1);\n        start = Math.max(0, start - delta);\n\n        return [start, end];\n    }\n\n    updatePageLinks() {\n        this.pageLinks = [];\n        let boundaries = this.calculatePageLinkBoundaries(),\n        start = boundaries[0],\n        end = boundaries[1];\n\n        for(let i = start; i <= end; i++) {\n            this.pageLinks.push(i + 1);\n        }\n\n        if (this.showJumpToPageDropdown) {\n            this.pageItems = [];\n            for (let i = 0; i < this.getPageCount(); i++) {\n                this.pageItems.push({label: String(i + 1), value: i});\n            }\n        }\n    }\n\n    changePage(p :number) {\n        var pc = this.getPageCount();\n\n        if (p >= 0 && p < pc) {\n            this._first = this.rows * p;\n            var state = {\n                page: p,\n                first: this.first,\n                rows: this.rows,\n                pageCount: pc\n            };\n            this.updatePageLinks();\n\n            this.onPageChange.emit(state);\n            this.updatePaginatorState();\n        }\n    }\n\n    updateFirst() {\n        const page = this.getPage();\n        if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {\n            Promise.resolve(null).then(() => this.changePage(page - 1));\n        }\n    }\n\n    getPage(): number {\n        return Math.floor(this.first / this.rows);\n    }\n\n    changePageToFirst(event) {\n      if (!this.isFirstPage()){\n          this.changePage(0);\n      }\n\n      event.preventDefault();\n    }\n\n    changePageToPrev(event) {\n        this.changePage(this.getPage() - 1);\n        event.preventDefault();\n    }\n\n    changePageToNext(event) {\n        this.changePage(this.getPage()  + 1);\n        event.preventDefault();\n    }\n\n    changePageToLast(event) {\n      if (!this.isLastPage()){\n          this.changePage(this.getPageCount() - 1);\n      }\n\n      event.preventDefault();\n    }\n\n    onPageLinkClick(event, page) {\n        this.changePage(page);\n        event.preventDefault();\n    }\n\n    onRppChange(event) {\n        this.changePage(this.getPage());\n    }\n\n    onPageDropdownChange(event) {\n        this.changePage(event.value);\n    }\n\n    updatePaginatorState() {\n        this.paginatorState = {\n            page: this.getPage(),\n            pageCount: this.getPageCount(),\n            rows: this.rows,\n            first: this.first,\n            totalRecords: this.totalRecords\n        }\n    }\n\n    empty() {\n        return this.getPageCount() === 0;\n    }\n\n    currentPage() {\n        return this.getPageCount() > 0 ? this.getPage() + 1 : 0;\n    }\n\n    get currentPageReport() {\n        return this.currentPageReportTemplate\n                .replace(\"{currentPage}\", String(this.currentPage()))\n                .replace(\"{totalPages}\", String(this.getPageCount()))\n                .replace(\"{first}\", String((this.totalRecords > 0) ? this._first + 1 : 0))\n                .replace(\"{last}\", String(Math.min(this._first + this.rows, this.totalRecords)))\n                .replace(\"{rows}\", String(this.rows))\n                .replace(\"{totalRecords}\", String(this.totalRecords));\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,DropdownModule,InputNumberModule,FormsModule,SharedModule,RippleModule],\n    exports: [Paginator,DropdownModule,InputNumberModule,FormsModule,SharedModule],\n    declarations: [Paginator]\n})\nexport class PaginatorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,230 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+
+let idx = 0;
+class Panel {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.expandIcon = 'pi pi-plus';
+        this.collapseIcon = 'pi pi-minus';
+        this.showHeader = true;
+        this.toggler = "icon";
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-panel-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'icons':
+                    this.iconTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onHeaderClick(event) {
+        if (this.toggler === 'header') {
+            this.toggle(event);
+        }
+    }
+    onIconClick(event) {
+        if (this.toggler === 'icon') {
+            this.toggle(event);
+        }
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.toggleable) {
+            if (this.collapsed)
+                this.expand(event);
+            else
+                this.collapse(event);
+        }
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+    }
+}
+Panel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Panel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Panel, selector: "p-panel", inputs: { toggleable: "toggleable", header: "header", collapsed: "collapsed", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", showHeader: "showHeader", toggler: "toggler", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('panelContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('void', style({
+                height: '{{height}}'
+            }), { params: { height: '0' } }),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => hidden', animate('{{transitionParams}}')),
+            transition('void => visible', animate('{{transitionParams}}'))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panel', template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('void', style({
+                                height: '{{height}}'
+                            }), { params: { height: '0' } }),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => hidden', animate('{{transitionParams}}')),
+                            transition('void => visible', animate('{{transitionParams}}'))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { toggleable: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], toggler: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PanelModule {
+}
+PanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, declarations: [Panel], imports: [CommonModule, SharedModule, RippleModule], exports: [Panel, SharedModule] });
+PanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Panel, SharedModule],
+                    declarations: [Panel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Panel, PanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-panel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-panel.mjs","sources":["../../src/app/components/panel/panel.ts","../../src/app/components/panel/primeng-panel.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ElementRef,ContentChild,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, TemplateRef, AfterContentInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,Footer, PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-panel',\n    template: `\n        <div [attr.id]=\"id\" [ngClass]=\"{'p-panel p-component': true, 'p-panel-toggleable': toggleable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-panel-header\" *ngIf=\"showHeader\" (click)=\"onHeaderClick($event)\" [attr.id]=\"id + '-titlebar'\">\n                <span class=\"p-panel-title\" *ngIf=\"header\" [attr.id]=\"id + '_header'\">{{header}}</span>\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <div class=\"p-panel-icons\">\n                    <ng-template *ngTemplateOutlet=\"iconTemplate\"></ng-template>\n                    <button *ngIf=\"toggleable\" type=\"button\" [attr.id]=\"id + '-label'\" class=\"p-panel-header-icon p-panel-toggler p-link\" pRipple\n                        (click)=\"onIconClick($event)\" (keydown.enter)=\"onIconClick($event)\" [attr.aria-controls]=\"id + '-content'\" role=\"tab\" [attr.aria-expanded]=\"!collapsed\">\n                        <span [class]=\"collapsed ? expandIcon : collapseIcon\"></span>\n                    </button>\n                </div>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@panelContent]=\"collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}\" (@panelContent.done)=\"onToggleDone($event)\"\n                role=\"region\" [attr.aria-hidden]=\"collapsed\" [attr.aria-labelledby]=\"id  + '-titlebar'\">\n                <div class=\"p-panel-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n\n                <div class=\"p-panel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('panelContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('void', style({\n                height: '{{height}}'\n            }), {params: {height: '0'}}),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({ overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => hidden', animate('{{transitionParams}}')),\n            transition('void => visible', animate('{{transitionParams}}'))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./panel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Panel implements AfterContentInit,BlockableUI {\n\n    @Input() toggleable: boolean;\n\n    @Input() header: string;\n\n    @Input() collapsed: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() expandIcon: string = 'pi pi-plus';\n\n    @Input() collapseIcon: string = 'pi pi-minus';\n\n    @Input() showHeader: boolean = true;\n\n    @Input() toggler: string = \"icon\";\n\n    @Output() collapsedChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onAfterToggle: EventEmitter<any> = new EventEmitter();\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public iconTemplate: TemplateRef<any>;\n\n    animating: boolean;\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    id: string = `p-panel-${idx++}`;\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'icons':\n                    this.iconTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onHeaderClick(event: Event) {\n        if (this.toggler === 'header') {\n            this.toggle(event);\n        }\n    }\n\n    onIconClick(event: Event) {\n        if (this.toggler === 'icon') {\n            this.toggle(event);\n        }\n    }\n\n    toggle(event: Event) {\n        if (this.animating) {\n            return false;\n        }\n\n        this.animating = true;\n        this.onBeforeToggle.emit({originalEvent: event, collapsed: this.collapsed});\n\n        if (this.toggleable) {\n            if (this.collapsed)\n                this.expand(event);\n            else\n                this.collapse(event);\n        }\n\n        event.preventDefault();\n    }\n\n    expand(event) {\n        this.collapsed = false;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    collapse(event) {\n        this.collapsed = true;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onToggleDone(event: Event) {\n        this.animating = false;\n        this.onAfterToggle.emit({originalEvent: event, collapsed: this.collapsed});\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,RippleModule],\n    exports: [Panel,SharedModule],\n    declarations: [Panel]\n})\nexport class PanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,313 @@
+import * as i0 from '@angular/core';
+import { Component, ViewEncapsulation, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+
+class BasePanelMenuItem {
+    constructor(ref) {
+        this.ref = ref;
+    }
+    handleClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        item.expanded = !item.expanded;
+        this.ref.detectChanges();
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+    }
+}
+class PanelMenuSub extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenuSub, selector: "p-panelMenuSub", inputs: { item: "item", expanded: "expanded", parentExpanded: "parentExpanded", transitionOptions: "transitionOptions", root: "root" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('submenu', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-panelMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    animations: [
+                        trigger('submenu', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], expanded: [{
+                type: Input
+            }], parentExpanded: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }] } });
+class PanelMenu extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+        this.multiple = true;
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+    }
+    collapseAll() {
+        for (let item of this.model) {
+            if (item.expanded) {
+                item.expanded = false;
+            }
+        }
+    }
+    handleClick(event, item) {
+        if (!this.multiple) {
+            for (let modelItem of this.model) {
+                if (item !== modelItem && modelItem.expanded) {
+                    modelItem.expanded = false;
+                }
+            }
+        }
+        this.animating = true;
+        super.handleClick(event, item);
+    }
+    onToggleDone() {
+        this.animating = false;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenu, selector: "p-panelMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", multiple: "multiple", transitionOptions: "transitionOptions" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, isInline: true, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"], components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('rootItem', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panelMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, animations: [
+                        trigger('rootItem', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }] } });
+class PanelMenuModule {
+}
+PanelMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [PanelMenu, RouterModule, TooltipModule] });
+PanelMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [PanelMenu, RouterModule, TooltipModule],
+                    declarations: [PanelMenu, PanelMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { BasePanelMenuItem, PanelMenu, PanelMenuModule, PanelMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-panelmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-panelmenu.mjs","sources":["../../src/app/components/panelmenu/panelmenu.ts","../../src/app/components/panelmenu/primeng-panelmenu.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {DomHandler} from 'primeng/dom';\n\nexport class BasePanelMenuItem {\n\n    constructor(private ref: ChangeDetectorRef) {}\n\n    handleClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        item.expanded = !item.expanded;\n        this.ref.detectChanges();\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n    }\n}\n\n@Component({\n    selector: 'p-panelMenuSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}\" [@submenu]=\"expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}\" role=\"tree\">\n            <ng-template ngFor let-child [ngForOf]=\"item.items\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" class=\"p-menuitem\" [ngClass]=\"child.styleClass\" [class.p-hidden]=\"child.visible === false\" [ngStyle]=\"child.style\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event)\" [attr.href]=\"child.url\" class=\"p-menuitem-link\" [attr.tabindex]=\"!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'\" [attr.id]=\"child.id\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" role=\"treeitem\" [attr.aria-expanded]=\"child.expanded\"\n                        (click)=\"handleClick($event,child)\" [attr.target]=\"child.target\" [attr.title]=\"child.title\">\n                        <span class=\"p-panelmenu-icon pi pi-fw\" [ngClass]=\"{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}\" *ngIf=\"child.items\"></span>\n                        <span class=\"p-menuitem-icon\" [ngClass]=\"child.icon\" *ngIf=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" [attr.tabindex]=\"!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'\" [attr.id]=\"child.id\" role=\"treeitem\" [attr.aria-expanded]=\"child.expanded\"\n                        (click)=\"handleClick($event,child)\" [attr.target]=\"child.target\" [attr.title]=\"child.title\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-panelmenu-icon pi pi-fw\" [ngClass]=\"{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}\" *ngIf=\"child.items\"></span>\n                        <span class=\"p-menuitem-icon\" [ngClass]=\"child.icon\" *ngIf=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                    </a>\n                    <p-panelMenuSub [item]=\"child\" [parentExpanded]=\"expanded && parentExpanded\" [expanded]=\"child.expanded\" [transitionOptions]=\"transitionOptions\" *ngIf=\"child.items\"></p-panelMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    animations: [\n        trigger('submenu', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PanelMenuSub extends BasePanelMenuItem {\n\n    @Input() item: MenuItem;\n\n    @Input() expanded: boolean;\n\n    @Input() parentExpanded: boolean;\n\n    @Input() transitionOptions: string;\n\n    @Input() root: boolean;\n\n    constructor(ref: ChangeDetectorRef) {\n        super(ref);\n    }\n\n\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n}\n\n@Component({\n    selector: 'p-panelMenu',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-panelmenu p-component'\">\n            <ng-container *ngFor=\"let item of model;let f=first;let l=last;\">\n                <div class=\"p-panelmenu-panel\" [ngClass]=\"{'p-hidden': item.visible === false}\">\n                    <div [ngClass]=\"{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}\" [class]=\"item.styleClass\" [ngStyle]=\"item.style\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                        <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url\" (click)=\"handleClick($event,item)\" (keydown)=\"onItemKeyDown($event)\" [attr.tabindex]=\"item.disabled ? null : '0'\" [attr.id]=\"item.id\"\n                           [attr.target]=\"item.target\" [attr.title]=\"item.title\" class=\"p-panelmenu-header-link\" [attr.aria-expanded]=\"item.expanded\" [attr.id]=\"item.id + '_header'\" [attr.aria-controls]=\"item.id +'_content'\">\n                            <span *ngIf=\"item.items\" class=\"p-panelmenu-icon pi\" [ngClass]=\"{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}\"></span>\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                        <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\"\n                           (click)=\"handleClick($event,item)\" (keydown)=\"onItemKeyDown($event)\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" class=\"p-panelmenu-header-link\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                           [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span *ngIf=\"item.items\" class=\"p-panelmenu-icon pi\" [ngClass]=\"{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}\"></span>\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                    </div>\n                    <div *ngIf=\"item.items\" class=\"p-toggleable-content\" [@rootItem]=\"item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}\"  (@rootItem.done)=\"onToggleDone()\">\n                        <div class=\"p-panelmenu-content\" role=\"region\" [attr.id]=\"item.id +'_content' \" [attr.aria-labelledby]=\"item.id +'_header'\">\n                            <p-panelMenuSub [item]=\"item\" [parentExpanded]=\"item.expanded\" [expanded]=\"true\" [transitionOptions]=\"transitionOptions\" [root]=\"true\"></p-panelMenuSub>\n                        </div>\n                    </div>\n                </div>\n            </ng-container>\n        </div>\n    `,\n    animations: [\n        trigger('rootItem', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./panelmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PanelMenu extends BasePanelMenuItem {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() multiple: boolean = true;\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    public animating: boolean;\n\n    constructor(ref: ChangeDetectorRef) {\n        super(ref);\n    }\n\n    collapseAll() {\n    \tfor(let item of this.model) {\n    \t\tif (item.expanded) {\n    \t\t\titem.expanded = false;\n    \t\t}\n    \t}\n    }\n\n    handleClick(event, item) {\n    \tif (!this.multiple) {\n            for(let modelItem of this.model) {\n        \t\tif (item !== modelItem && modelItem.expanded) {\n        \t\t\tmodelItem.expanded = false;\n        \t\t}\n        \t}\n    \t}\n\n        this.animating = true;\n        super.handleClick(event, item);\n    }\n\n    onToggleDone() {\n        this.animating = false;\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [PanelMenu,RouterModule,TooltipModule],\n    declarations: [PanelMenu,PanelMenuSub]\n})\nexport class PanelMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,638 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, HostListener, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+
+class PasswordDirective {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.promptLabel = 'Enter a password';
+        this.weakLabel = 'Weak';
+        this.mediumLabel = 'Medium';
+        this.strongLabel = 'Strong';
+        this.feedback = true;
+    }
+    set showPassword(show) {
+        this.el.nativeElement.type = show ? 'text' : 'password';
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    createPanel() {
+        this.panel = document.createElement('div');
+        this.panel.className = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';
+        this.meter = document.createElement('div');
+        this.meter.className = 'p-password-meter';
+        this.info = document.createElement('div');
+        this.info.className = 'p-password-info';
+        this.info.textContent = this.promptLabel;
+        this.panel.appendChild(this.meter);
+        this.panel.appendChild(this.info);
+        this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';
+        document.body.appendChild(this.panel);
+    }
+    showOverlay() {
+        if (this.feedback) {
+            if (!this.panel) {
+                this.createPanel();
+            }
+            this.panel.style.zIndex = String(++DomHandler.zindex);
+            this.panel.style.display = 'block';
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');
+                    this.bindScrollListener();
+                    this.bindDocumentResizeListener();
+                }, 1);
+            });
+            DomHandler.absolutePosition(this.panel, this.el.nativeElement);
+        }
+    }
+    hideOverlay() {
+        if (this.feedback && this.panel) {
+            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');
+            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');
+            this.unbindScrollListener();
+            this.unbindDocumentResizeListener();
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.ngOnDestroy();
+                }, 150);
+            });
+        }
+    }
+    onFocus() {
+        this.showOverlay();
+    }
+    onBlur() {
+        this.hideOverlay();
+    }
+    onKeyup(e) {
+        if (this.feedback) {
+            let value = e.target.value, label = null, meterPos = null;
+            if (value.length === 0) {
+                label = this.promptLabel;
+                meterPos = '0px 0px';
+            }
+            else {
+                var score = this.testStrength(value);
+                if (score < 30) {
+                    label = this.weakLabel;
+                    meterPos = '0px -10px';
+                }
+                else if (score >= 30 && score < 80) {
+                    label = this.mediumLabel;
+                    meterPos = '0px -20px';
+                }
+                else if (score >= 80) {
+                    label = this.strongLabel;
+                    meterPos = '0px -30px';
+                }
+            }
+            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                this.showOverlay();
+            }
+            this.meter.style.backgroundPosition = meterPos;
+            this.info.textContent = label;
+        }
+    }
+    testStrength(str) {
+        let grade = 0;
+        let val;
+        val = str.match('[0-9]');
+        grade += this.normalize(val ? val.length : 1 / 4, 1) * 25;
+        val = str.match('[a-zA-Z]');
+        grade += this.normalize(val ? val.length : 1 / 2, 3) * 10;
+        val = str.match('[!@#$%^&*?_~.,;=]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 35;
+        val = str.match('[A-Z]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 30;
+        grade *= str.length / 8;
+        return grade > 100 ? 100 : grade;
+    }
+    normalize(x, y) {
+        let diff = x - y;
+        if (diff <= 0)
+            return x / y;
+        else
+            return 1 + 0.5 * (x / (x + y / 4));
+    }
+    get disabled() {
+        return this.el.nativeElement.disabled;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hideOverlay();
+    }
+    ngOnDestroy() {
+        if (this.panel) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.unbindDocumentResizeListener();
+            document.body.removeChild(this.panel);
+            this.panel = null;
+            this.meter = null;
+            this.info = null;
+        }
+    }
+}
+PasswordDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+PasswordDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PasswordDirective, selector: "[pPassword]", inputs: { promptLabel: "promptLabel", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", feedback: "feedback", showPassword: "showPassword" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus()", "blur": "onBlur()", "keyup": "onKeyup($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pPassword]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { promptLabel: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], showPassword: [{
+                type: Input
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus']
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur']
+            }], onKeyup: [{
+                type: HostListener,
+                args: ['keyup', ['$event']]
+            }] } });
+const Password_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Password),
+    multi: true
+};
+class Password {
+    constructor(cd, config, el, overlayService) {
+        this.cd = cd;
+        this.config = config;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.mediumRegex = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';
+        this.strongRegex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';
+        this.feedback = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.overlayVisible = false;
+        this.focused = false;
+        this.unmasked = false;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.infoText = this.promptText();
+        this.mediumCheckRegExp = new RegExp(this.mediumRegex);
+        this.strongCheckRegExp = new RegExp(this.strongRegex);
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.updateUI(this.value || "");
+        });
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                this.appendContainer();
+                this.alignOverlay();
+                this.bindScrollListener();
+                this.bindResizeListener();
+                break;
+            case 'void':
+                this.unbindScrollListener();
+                this.unbindResizeListener();
+                this.overlay = null;
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';
+            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);
+        }
+        else {
+            DomHandler.relativePosition(this.overlay, this.input.nativeElement);
+        }
+    }
+    onInput(event) {
+        this.value = event.target.value;
+        this.onModelChange(this.value);
+        this.onModelTouched();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        if (this.feedback) {
+            this.overlayVisible = true;
+        }
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        if (this.feedback) {
+            this.overlayVisible = false;
+        }
+        this.onBlur.emit(event);
+    }
+    onKeyUp(event) {
+        if (this.feedback) {
+            let value = event.target.value;
+            this.updateUI(value);
+            if (!this.overlayVisible) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    updateUI(value) {
+        let label = null;
+        let meter = null;
+        switch (this.testStrength(value)) {
+            case 1:
+                label = this.weakText();
+                meter = {
+                    strength: 'weak',
+                    width: '33.33%'
+                };
+                break;
+            case 2:
+                label = this.mediumText();
+                meter = {
+                    strength: 'medium',
+                    width: '66.66%'
+                };
+                break;
+            case 3:
+                label = this.strongText();
+                meter = {
+                    strength: 'strong',
+                    width: '100%'
+                };
+                break;
+            default:
+                label = this.promptText();
+                meter = null;
+                break;
+        }
+        this.meter = meter;
+        this.infoText = label;
+    }
+    onMaskToggle() {
+        this.unmasked = !this.unmasked;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    testStrength(str) {
+        let level = 0;
+        if (this.strongCheckRegExp.test(str))
+            level = 3;
+        else if (this.mediumCheckRegExp.test(str))
+            level = 2;
+        else if (str.length)
+            level = 1;
+        return level;
+    }
+    writeValue(value) {
+        if (value === undefined)
+            this.value = null;
+        else
+            this.value = value;
+        if (this.feedback)
+            this.updateUI(this.value || "");
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    containerClass() {
+        return { 'p-password p-component p-inputwrapper': true,
+            'p-input-icon-right': this.toggleMask
+        };
+    }
+    inputFieldClass() {
+        return { 'p-password-input': true,
+            'p-disabled': this.disabled
+        };
+    }
+    toggleIconClass() {
+        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';
+    }
+    strengthClass() {
+        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;
+    }
+    filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    promptText() {
+        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);
+    }
+    weakText() {
+        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);
+    }
+    mediumText() {
+        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);
+    }
+    strongText() {
+        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);
+    }
+    restoreAppend() {
+        if (this.overlay && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlay);
+        }
+    }
+    inputType() {
+        return this.unmasked ? 'text' : 'password';
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+        this.restoreAppend();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Password.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Password.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Password, selector: "p-password", inputs: { disabled: "disabled", promptLabel: "promptLabel", mediumRegex: "mediumRegex", strongRegex: "strongRegex", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", inputId: "inputId", feedback: "feedback", appendTo: "appendTo", toggleMask: "toggleMask", inputStyleClass: "inputStyleClass", styleClass: "styleClass", style: "style", inputStyle: "inputStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", placeholder: "placeholder" }, outputs: { onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.p-inputwrapper-filled": "filled()", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [Password_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.InputText, selector: "[pInputText]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-password', template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled()',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, providers: [Password_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], promptLabel: [{
+                type: Input
+            }], mediumRegex: [{
+                type: Input
+            }], strongRegex: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], toggleMask: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PasswordModule {
+}
+PasswordModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PasswordModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, declarations: [PasswordDirective, Password], imports: [CommonModule, InputTextModule], exports: [PasswordDirective, Password, SharedModule] });
+PasswordModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, imports: [[CommonModule, InputTextModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [PasswordDirective, Password, SharedModule],
+                    declarations: [PasswordDirective, Password]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Password, PasswordDirective, PasswordModule, Password_VALUE_ACCESSOR };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-password.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-password.mjs","sources":["../../src/app/components/password/password.ts","../../src/app/components/password/primeng-password.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,OnDestroy,DoCheck,NgZone, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, QueryList, TemplateRef, Component, AfterContentInit, ViewChild, ChangeDetectorRef, forwardRef, Output, EventEmitter} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {OverlayService, PrimeNGConfig, PrimeTemplate, TranslationKeys, SharedModule} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n    selector: '[pPassword]',\n    host: {\n        'class': 'p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled'\n    }\n})\nexport class PasswordDirective implements OnDestroy,DoCheck {\n\n    @Input() promptLabel: string = 'Enter a password';\n\n    @Input() weakLabel: string = 'Weak';\n\n    @Input() mediumLabel: string = 'Medium';\n\n    @Input() strongLabel: string = 'Strong';\n\n    @Input() feedback: boolean = true;\n\n    @Input() set showPassword(show: boolean) {\n        this.el.nativeElement.type = show ? 'text' : 'password';\n    }\n\n    panel: HTMLDivElement;\n\n    meter: any;\n\n    info: any;\n\n    filled: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n    }\n\n    createPanel() {\n        this.panel = document.createElement('div');\n        this.panel.className = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';\n        this.meter = document.createElement('div');\n        this.meter.className = 'p-password-meter';\n        this.info = document.createElement('div');\n        this.info.className = 'p-password-info';\n        this.info.textContent = this.promptLabel;\n        this.panel.appendChild(this.meter);\n        this.panel.appendChild(this.info);\n        this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';\n        document.body.appendChild(this.panel);\n    }\n\n    showOverlay() {\n        if (this.feedback) {\n            if (!this.panel) {\n                this.createPanel();\n            }\n\n            this.panel.style.zIndex = String(++DomHandler.zindex);\n            this.panel.style.display = 'block';\n            this.zone.runOutsideAngular(() => {\n\n                setTimeout(() => {\n                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');\n                    this.bindScrollListener();\n                    this.bindDocumentResizeListener();\n                }, 1);\n            });\n            DomHandler.absolutePosition(this.panel, this.el.nativeElement);\n        }\n    }\n\n    hideOverlay() {\n        if (this.feedback && this.panel) {\n            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');\n            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');\n            this.unbindScrollListener();\n            this.unbindDocumentResizeListener();\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.ngOnDestroy();\n                }, 150);\n            });\n        }\n    }\n\n    @HostListener('focus')\n    onFocus() {\n        this.showOverlay();\n    }\n\n    @HostListener('blur')\n    onBlur() {\n        this.hideOverlay();\n    }\n\n    @HostListener('keyup', ['$event'])\n    onKeyup(e) {\n        if (this.feedback) {\n            let value = e.target.value,\n            label = null,\n            meterPos = null;\n\n            if (value.length === 0) {\n                label = this.promptLabel;\n                meterPos = '0px 0px';\n            }\n            else {\n                var score = this.testStrength(value);\n\n                if (score < 30) {\n                    label = this.weakLabel;\n                    meterPos = '0px -10px';\n                }\n                else if (score >= 30 && score < 80) {\n                    label = this.mediumLabel;\n                    meterPos = '0px -20px';\n                }\n                else if (score >= 80) {\n                    label = this.strongLabel;\n                    meterPos = '0px -30px';\n                }\n            }\n\n            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                this.showOverlay();\n            }\n\n            this.meter.style.backgroundPosition = meterPos;\n            this.info.textContent = label;\n        }\n    }\n\n    testStrength(str: string) {\n        let grade: number = 0;\n        let val: RegExpMatchArray;\n\n        val = str.match('[0-9]');\n        grade += this.normalize(val ? val.length : 1/4, 1) * 25;\n\n        val = str.match('[a-zA-Z]');\n        grade += this.normalize(val ? val.length : 1/2, 3) * 10;\n\n        val = str.match('[!@#$%^&*?_~.,;=]');\n        grade += this.normalize(val ? val.length : 1/6, 1) * 35;\n\n        val = str.match('[A-Z]');\n        grade += this.normalize(val ? val.length : 1/6, 1) * 30;\n\n        grade *= str.length / 8;\n\n        return grade > 100 ? 100 : grade;\n    }\n\n    normalize(x, y) {\n        let diff = x - y;\n\n        if (diff <= 0)\n            return x / y;\n        else\n            return 1 + 0.5 * (x / (x + y/4));\n    }\n\n    get disabled(): boolean {\n        return this.el.nativeElement.disabled;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hideOverlay();\n    }\n\n    ngOnDestroy() {\n        if (this.panel) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.unbindDocumentResizeListener();\n\n            document.body.removeChild(this.panel);\n            this.panel = null;\n            this.meter = null;\n            this.info = null;\n        }\n    }\n}\n\n\nexport const Password_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Password),\n    multi: true\n};\n@Component({\n    selector: 'p-password',\n    template: `\n        <div [ngClass]=\"containerClass()\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input #input [attr.id]=\"inputId\" pInputText [ngClass]=\"inputFieldClass()\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.type]=\"inputType()\" [attr.placeholder]=\"placeholder\" [value]=\"value\" (input)=\"onInput($event)\" (focus)=\"onInputFocus($event)\"\n                (blur)=\"onInputBlur($event)\" (keyup)=\"onKeyUp($event)\" />\n            <i *ngIf=\"toggleMask\" [ngClass]=\"toggleIconClass()\" (click)=\"onMaskToggle()\"></i>\n            <div #overlay *ngIf=\"overlayVisible\" [ngClass]=\"'p-password-panel p-component'\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onAnimationStart($event)\" (@overlayAnimation.done)=\"onAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"contentTemplate; else content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #content>\n                    <div class=\"p-password-meter\">\n                        <div [ngClass]=\"strengthClass()\" [ngStyle]=\"{'width': meter ? meter.width : ''}\"></div>\n                    </div>\n                    <div className=\"p-password-info\">{{infoText}}</div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled()',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [Password_VALUE_ACCESSOR],\n    styleUrls: ['./password.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Password implements AfterContentInit,OnInit {\n\n    @Input() disabled: boolean;\n\n    @Input() promptLabel: string;\n\n    @Input() mediumRegex: string = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\n\n    @Input() strongRegex: string = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n\n    @Input() weakLabel: string;\n\n    @Input() mediumLabel: string;\n\n    @Input() strongLabel: string;\n\n    @Input() inputId: string;\n\n    @Input() feedback: boolean = true;\n\n    @Input() appendTo: any;\n\n    @Input() toggleMask: boolean;\n\n    @Input() inputStyleClass: string;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() inputStyle: any;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() placeholder: string;\n\n    @ViewChild('input') input: ElementRef;\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    overlayVisible: boolean = false;\n\n    meter: any;\n\n    infoText: string;\n\n    focused: boolean = false;\n\n    unmasked: boolean = false;\n\n    mediumCheckRegExp: any;\n\n    strongCheckRegExp: any;\n\n    resizeListener: any;\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    overlay: any;\n\n    value: string = null;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    translationSubscription: Subscription;\n\n    constructor(private cd: ChangeDetectorRef, private config: PrimeNGConfig, public el: ElementRef, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.infoText = this.promptText();\n        this.mediumCheckRegExp = new RegExp(this.mediumRegex);\n        this.strongCheckRegExp = new RegExp(this.strongRegex);\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.updateUI(this.value || \"\");\n        });\n    }\n\n    onAnimationStart(event) {\n        switch(event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                this.appendContainer();\n                this.alignOverlay();\n                this.bindScrollListener();\n                this.bindResizeListener();\n            break;\n\n            case 'void':\n                this.unbindScrollListener();\n                this.unbindResizeListener();\n                this.overlay = null;\n            break;\n        }\n    }\n\n    onAnimationEnd(event) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';\n            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);\n        }\n        else {\n            DomHandler.relativePosition(this.overlay, this.input.nativeElement);\n        }\n    }\n\n    onInput(event)  {\n        this.value = event.target.value;\n        this.onModelChange(this.value);\n        this.onModelTouched();\n    }\n\n    onInputFocus(event: Event) {\n        this.focused = true;\n        if (this.feedback) {\n            this.overlayVisible = true;\n        }\n\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: Event) {\n        this.focused = false;\n        if (this.feedback) {\n            this.overlayVisible = false;\n        }\n\n        this.onBlur.emit(event);\n    }\n\n    onKeyUp(event) {\n        if (this.feedback) {\n            let value = event.target.value;\n            this.updateUI(value);\n\n            if (!this.overlayVisible) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n\n    updateUI(value) {\n        let label = null;\n        let meter = null;\n\n        switch (this.testStrength(value)) {\n            case 1:\n                label = this.weakText();\n                meter = {\n                    strength: 'weak',\n                    width: '33.33%'\n                };\n                break;\n\n            case 2:\n                label = this.mediumText();\n                meter = {\n                    strength: 'medium',\n                    width: '66.66%'\n                };\n                break;\n\n            case 3:\n                label = this.strongText();\n                meter = {\n                    strength: 'strong',\n                    width: '100%'\n                };\n                break;\n\n            default:\n                label = this.promptText();\n                meter = null;\n                break;\n        }\n\n        this.meter = meter;\n        this.infoText = label;\n    }\n\n    onMaskToggle() {\n        this.unmasked = !this.unmasked;\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    testStrength(str) {\n        let level = 0;\n\n        if (this.strongCheckRegExp.test(str))\n            level = 3;\n        else if (this.mediumCheckRegExp.test(str))\n            level = 2;\n        else if (str.length)\n            level = 1;\n\n        return level;\n    }\n\n    writeValue(value: any) : void {\n        if (value === undefined)\n            this.value = null;\n        else\n            this.value = value;\n\n        if (this.feedback)\n            this.updateUI(this.value || \"\");\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    containerClass() {\n        return {'p-password p-component p-inputwrapper': true,\n            'p-input-icon-right': this.toggleMask\n        };\n    }\n\n    inputFieldClass() {\n        return {'p-password-input' : true,\n                'p-disabled': this.disabled\n        };\n    }\n\n    toggleIconClass() {\n        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';\n    }\n\n    strengthClass() {\n        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;\n    }\n\n    filled() {\n        return (this.value != null && this.value.toString().length > 0)\n    }\n\n    promptText() {\n        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);\n    }\n\n    weakText() {\n        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);\n    }\n\n    mediumText() {\n        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);\n    }\n\n    strongText() {\n        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);\n    }\n\n    restoreAppend() {\n        if (this.overlay && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlay);\n        }\n    }\n\n    inputType() {\n        return this.unmasked ? 'text' : 'password';\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    ngOnDestroy() {\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n            this.overlay = null;\n        }\n\n        this.restoreAppend();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, InputTextModule],\n    exports: [PasswordDirective, Password, SharedModule],\n    declarations: [PasswordDirective, Password]\n})\nexport class PasswordModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,815 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from '@angular/cdk/drag-drop';
+import { transferArrayItem, moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
+import { UniqueComponentId, ObjectUtils } from 'primeng/utils';
+
+class PickList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.trackBy = (index, item) => item;
+        this.showSourceFilter = true;
+        this.showTargetFilter = true;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.showSourceControls = true;
+        this.showTargetControls = true;
+        this.disabled = false;
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.onMoveToSource = new EventEmitter();
+        this.onMoveAllToSource = new EventEmitter();
+        this.onMoveAllToTarget = new EventEmitter();
+        this.onMoveToTarget = new EventEmitter();
+        this.onSourceReorder = new EventEmitter();
+        this.onTargetReorder = new EventEmitter();
+        this.onSourceSelect = new EventEmitter();
+        this.onTargetSelect = new EventEmitter();
+        this.onSourceFilter = new EventEmitter();
+        this.onTargetFilter = new EventEmitter();
+        this.selectedItemsSource = [];
+        this.selectedItemsTarget = [];
+        this.id = UniqueComponentId();
+        this.SOURCE_LIST = -1;
+        this.TARGET_LIST = 1;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'sourceHeader':
+                    this.sourceHeaderTemplate = item.template;
+                    break;
+                case 'targetHeader':
+                    this.targetHeaderTemplate = item.template;
+                    break;
+                case 'emptymessagesource':
+                    this.emptyMessageSourceTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagesource':
+                    this.emptyFilterMessageSourceTemplate = item.template;
+                    break;
+                case 'emptymessagetarget':
+                    this.emptyMessageTargetTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagetarget':
+                    this.emptyFilterMessageTargetTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');
+            let listItem;
+            if (this.movedUp)
+                listItem = listItems[0];
+            else
+                listItem = listItems[listItems.length - 1];
+            DomHandler.scrollInView(this.reorderedListElement, listItem);
+            this.movedUp = false;
+            this.movedDown = false;
+            this.reorderedListElement = null;
+        }
+    }
+    onItemClick(event, item, selectedItems, callback) {
+        if (this.disabled) {
+            return;
+        }
+        let index = this.findIndexInSelection(item, selectedItems);
+        let selected = (index != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                selectedItems.splice(index, 1);
+            }
+            else {
+                if (!metaKey) {
+                    selectedItems.length = 0;
+                }
+                selectedItems.push(item);
+            }
+        }
+        else {
+            if (selected)
+                selectedItems.splice(index, 1);
+            else
+                selectedItems.push(item);
+        }
+        callback.emit({ originalEvent: event, items: selectedItems });
+        this.itemTouched = false;
+    }
+    onSourceItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveRight();
+    }
+    onTargetItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveLeft();
+    }
+    onFilter(event, data, listType) {
+        let query = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        if (listType === this.SOURCE_LIST)
+            this.filterValueSource = query;
+        else if (listType === this.TARGET_LIST)
+            this.filterValueTarget = query;
+        this.filter(data, listType);
+    }
+    filter(data, listType) {
+        let searchFields = this.filterBy.split(',');
+        if (listType === this.SOURCE_LIST) {
+            this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
+            this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
+        }
+        else if (listType === this.TARGET_LIST) {
+            this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
+            this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
+        }
+    }
+    isItemVisible(item, listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
+        else
+            return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
+    }
+    isEmpty(listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.filterValueSource ? (!this.visibleOptionsSource || this.visibleOptionsSource.length === 0) : (!this.source || this.source.length === 0);
+        else
+            return this.filterValueTarget ? (!this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0) : (!this.target || this.target.length === 0);
+    }
+    isVisibleInList(data, item, filterValue) {
+        if (filterValue && filterValue.trim().length) {
+            for (let i = 0; i < data.length; i++) {
+                if (item == data[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        if (this.disabled) {
+            return;
+        }
+        this.itemTouched = true;
+    }
+    sortByIndexInList(items, list) {
+        return items.sort((item1, item2) => ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));
+    }
+    moveUp(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex - 1];
+                    list[selectedItemIndex - 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedUp = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveTop(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = 0;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveDown(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex + 1];
+                    list[selectedItemIndex + 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedDown = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveBottom(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = listElement.scrollHeight;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveRight() {
+        if (this.selectedItemsSource && this.selectedItemsSource.length) {
+            for (let i = 0; i < this.selectedItemsSource.length; i++) {
+                let selectedItem = this.selectedItemsSource[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {
+                    this.target.push(this.source.splice(ObjectUtils.findIndexInList(selectedItem, this.source), 1)[0]);
+                    if (this.visibleOptionsSource)
+                        this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource), 1);
+                }
+            }
+            this.onMoveToTarget.emit({
+                items: this.selectedItemsSource
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    moveAllRight() {
+        if (this.source) {
+            let movedItems = [];
+            for (let i = 0; i < this.source.length; i++) {
+                if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
+                    let removedItem = this.source.splice(i, 1)[0];
+                    this.target.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToTarget.emit({
+                items: movedItems
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+            this.visibleOptionsSource = [];
+        }
+    }
+    moveLeft() {
+        if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
+            for (let i = 0; i < this.selectedItemsTarget.length; i++) {
+                let selectedItem = this.selectedItemsTarget[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {
+                    this.source.push(this.target.splice(ObjectUtils.findIndexInList(selectedItem, this.target), 1)[0]);
+                    if (this.visibleOptionsTarget)
+                        this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
+                }
+            }
+            this.onMoveToSource.emit({
+                items: this.selectedItemsTarget
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+    }
+    moveAllLeft() {
+        if (this.target) {
+            let movedItems = [];
+            for (let i = 0; i < this.target.length; i++) {
+                if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
+                    let removedItem = this.target.splice(i, 1)[0];
+                    this.source.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToSource.emit({
+                items: movedItems
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+            this.visibleOptionsTarget = [];
+        }
+    }
+    isSelected(item, selectedItems) {
+        return this.findIndexInSelection(item, selectedItems) != -1;
+    }
+    findIndexInSelection(item, selectedItems) {
+        return ObjectUtils.findIndexInList(item, selectedItems);
+    }
+    onDrop(event, listType) {
+        let isTransfer = event.previousContainer !== event.container;
+        let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
+        if (listType === this.SOURCE_LIST) {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsTarget)
+                    this.visibleOptionsTarget.splice(event.previousIndex, 1);
+                this.onMoveToSource.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onSourceReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+        else {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsSource)
+                    this.visibleOptionsSource.splice(event.previousIndex, 1);
+                this.onMoveToTarget.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onTargetReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
+        let previousIndex, currentIndex;
+        if (droppedList === this.SOURCE_LIST) {
+            previousIndex = isTransfer ? this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;
+            currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
+        }
+        else {
+            previousIndex = isTransfer ? this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;
+            currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
+        }
+        return { previousIndex, currentIndex };
+    }
+    findFilteredCurrentIndex(visibleOptions, index, options) {
+        if (visibleOptions.length === index) {
+            let toIndex = ObjectUtils.findIndexInList(visibleOptions[index - 1], options);
+            return toIndex + 1;
+        }
+        else {
+            return ObjectUtils.findIndexInList(visibleOptions[index], options);
+        }
+    }
+    resetFilter() {
+        this.visibleOptionsSource = null;
+        this.filterValueSource = null;
+        this.visibleOptionsTarget = null;
+        this.filterValueTarget = null;
+        this.sourceFilterViewChild.nativeElement.value = '';
+        this.targetFilterViewChild.nativeElement.value = '';
+    }
+    onItemKeydown(event, item, selectedItems, callback) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, selectedItems, callback);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+            @media screen and (max-width: ${this.breakpoint}) {
+                .p-picklist[${this.id}] {
+                    flex-direction: column;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons {
+                    padding: var(--content-padding);
+                    flex-direction: row;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button {
+                    margin-right: var(--inline-spacing);
+                    margin-bottom: 0;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {
+                    margin-right: 0;
+                }
+
+                .p-picklist[${this.id}] .pi-angle-right:before {
+                    content: "\\e930"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-right:before {
+                    content: "\\e92c"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-left:before {
+                    content: "\\e933"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-left:before {
+                    content: "\\e92f"
+                }
+            }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+PickList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+PickList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PickList, selector: "p-pickList", inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: "responsive", filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: "showSourceFilter", showTargetFilter: "showTargetFilter", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: "showSourceControls", showTargetControls: "showTargetControls", sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: "disabled", ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewSourceChild", first: true, predicate: ["sourcelist"], descendants: true }, { propertyName: "listViewTargetChild", first: true, predicate: ["targetlist"], descendants: true }, { propertyName: "sourceFilterViewChild", first: true, predicate: ["sourceFilter"], descendants: true }, { propertyName: "targetFilterViewChild", first: true, predicate: ["targetFilter"], descendants: true }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-pickList', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { source: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], sourceHeader: [{
+                type: Input
+            }], rightButtonAriaLabel: [{
+                type: Input
+            }], leftButtonAriaLabel: [{
+                type: Input
+            }], allRightButtonAriaLabel: [{
+                type: Input
+            }], allLeftButtonAriaLabel: [{
+                type: Input
+            }], upButtonAriaLabel: [{
+                type: Input
+            }], downButtonAriaLabel: [{
+                type: Input
+            }], topButtonAriaLabel: [{
+                type: Input
+            }], bottomButtonAriaLabel: [{
+                type: Input
+            }], targetHeader: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], sourceTrackBy: [{
+                type: Input
+            }], targetTrackBy: [{
+                type: Input
+            }], showSourceFilter: [{
+                type: Input
+            }], showTargetFilter: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], sourceStyle: [{
+                type: Input
+            }], targetStyle: [{
+                type: Input
+            }], showSourceControls: [{
+                type: Input
+            }], showTargetControls: [{
+                type: Input
+            }], sourceFilterPlaceholder: [{
+                type: Input
+            }], targetFilterPlaceholder: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], ariaSourceFilterLabel: [{
+                type: Input
+            }], ariaTargetFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onMoveToSource: [{
+                type: Output
+            }], onMoveAllToSource: [{
+                type: Output
+            }], onMoveAllToTarget: [{
+                type: Output
+            }], onMoveToTarget: [{
+                type: Output
+            }], onSourceReorder: [{
+                type: Output
+            }], onTargetReorder: [{
+                type: Output
+            }], onSourceSelect: [{
+                type: Output
+            }], onTargetSelect: [{
+                type: Output
+            }], onSourceFilter: [{
+                type: Output
+            }], onTargetFilter: [{
+                type: Output
+            }], listViewSourceChild: [{
+                type: ViewChild,
+                args: ['sourcelist']
+            }], listViewTargetChild: [{
+                type: ViewChild,
+                args: ['targetlist']
+            }], sourceFilterViewChild: [{
+                type: ViewChild,
+                args: ['sourceFilter']
+            }], targetFilterViewChild: [{
+                type: ViewChild,
+                args: ['targetFilter']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PickListModule {
+}
+PickListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PickListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, declarations: [PickList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [PickList, SharedModule, DragDropModule] });
+PickListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [PickList, SharedModule, DragDropModule],
+                    declarations: [PickList]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { PickList, PickListModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-picklist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-picklist.mjs","sources":["../../src/app/components/picklist/picklist.ts","../../src/app/components/picklist/primeng-picklist.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, AfterViewChecked, Input, Output, ContentChildren, QueryList, TemplateRef, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {SharedModule,PrimeTemplate,FilterService} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\nimport {CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem} from '@angular/cdk/drag-drop';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\n\n@Component({\n    selector: 'p-pickList',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-picklist p-component'\" cdkDropListGroup>\n            <div class=\"p-picklist-buttons p-picklist-source-controls\" *ngIf=\"showSourceControls\">\n                <button type=\"button\" [attr.aria-label]=\"upButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-up\" [disabled]=\"disabled\" (click)=\"moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"topButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-up\" [disabled]=\"disabled\" (click)=\"moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"downButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-down\" [disabled]=\"disabled\" (click)=\"moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"bottomButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-down\" [disabled]=\"disabled\" (click)=\"moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n            </div>\n            <div class=\"p-picklist-list-wrapper p-picklist-source-wrapper\">\n                <div class=\"p-picklist-header\" *ngIf=\"sourceHeader || sourceHeaderTemplate\">\n                    <div class=\"p-picklist-title\" *ngIf=\"!sourceHeaderTemplate\">{{sourceHeader}}</div>\n                    <ng-container *ngTemplateOutlet=\"sourceHeaderTemplate\"></ng-container>\n                </div>\n                <div class=\"p-picklist-filter-container\" *ngIf=\"filterBy && showSourceFilter !== false\">\n                    <div class=\"p-picklist-filter\">\n                        <input #sourceFilter type=\"text\" role=\"textbox\" (keyup)=\"onFilter($event,source,SOURCE_LIST)\" class=\"p-picklist-filter-input p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"sourceFilterPlaceholder\" [attr.aria-label]=\"ariaSourceFilterLabel\">\n                        <span class=\"p-picklist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n\n                <ul #sourcelist class=\"p-picklist-list p-picklist-source\" cdkDropList [cdkDropListData]=\"source\" (cdkDropListDropped)=\"onDrop($event, SOURCE_LIST)\"\n                    [ngStyle]=\"sourceStyle\" role=\"listbox\" aria-multiselectable=\"multiple\">\n                    <ng-template ngFor let-item [ngForOf]=\"source\" [ngForTrackBy]=\"sourceTrackBy || trackBy\" let-i=\"index\" let-l=\"last\">\n                        <li [ngClass]=\"{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}\" pRipple cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,selectedItemsSource,onSourceSelect)\" (dblclick)=\"onSourceItemDblClick()\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,selectedItemsSource,onSourceSelect)\"\n                            *ngIf=\"isItemVisible(item, SOURCE_LIST)\" tabindex=\"0\" role=\"option\" [attr.aria-selected]=\"isSelected(item, selectedItemsSource)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)\">\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"!filterValueSource || !emptyFilterMessageSourceTemplate\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageSourceTemplate\"></ng-container>\n                        </li>\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"filterValueSource\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageSourceTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n            <div class=\"p-picklist-buttons p-picklist-transfer-buttons\">\n                <button type=\"button\" [attr.aria-label]=\"rightButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-right\" [disabled]=\"disabled\" (click)=\"moveRight()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"allRightButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-right\" [disabled]=\"disabled\" (click)=\"moveAllRight()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"leftButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-left\" [disabled]=\"disabled\" (click)=\"moveLeft()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"allLeftButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-left\" [disabled]=\"disabled\" (click)=\"moveAllLeft()\"></button>\n            </div>\n            <div class=\"p-picklist-list-wrapper p-picklist-target-wrapper\">\n                <div class=\"p-picklist-header\" *ngIf=\"targetHeader || targetHeaderTemplate\">\n                    <div class=\"p-picklist-title\" *ngIf=\"!targetHeaderTemplate\">{{targetHeader}}</div>\n                    <ng-container *ngTemplateOutlet=\"targetHeaderTemplate\"></ng-container>\n                </div>\n                <div class=\"p-picklist-filter-container\" *ngIf=\"filterBy && showTargetFilter !== false\">\n                    <div class=\"p-picklist-filter\">\n                        <input #targetFilter type=\"text\" role=\"textbox\" (keyup)=\"onFilter($event,target,TARGET_LIST)\" class=\"p-picklist-filter-input p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"targetFilterPlaceholder\" [attr.aria-label]=\"ariaTargetFilterLabel\">\n                        <span class=\"p-picklist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <ul #targetlist class=\"p-picklist-list p-picklist-target\" cdkDropList [cdkDropListData]=\"target\" (cdkDropListDropped)=\"onDrop($event, TARGET_LIST)\"\n                    [ngStyle]=\"targetStyle\" role=\"listbox\" aria-multiselectable=\"multiple\">\n                    <ng-template ngFor let-item [ngForOf]=\"target\" [ngForTrackBy]=\"targetTrackBy || trackBy\" let-i=\"index\" let-l=\"last\">\n                        <li [ngClass]=\"{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}\" pRipple cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,selectedItemsTarget,onTargetSelect)\" (dblclick)=\"onTargetItemDblClick()\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)\"\n                            *ngIf=\"isItemVisible(item, TARGET_LIST)\" tabindex=\"0\" role=\"option\" [attr.aria-selected]=\"isSelected(item, selectedItemsTarget)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)\">\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"!filterValueTarget || !emptyFilterMessageTargetTemplate\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageTargetTemplate\"></ng-container>\n                        </li>\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"filterValueTarget\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageTargetTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n            <div class=\"p-picklist-buttons p-picklist-target-controls\" *ngIf=\"showTargetControls\">\n                <button type=\"button\" [attr.aria-label]=\"upButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-up\" [disabled]=\"disabled\" (click)=\"moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"topButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-up\" [disabled]=\"disabled\" (click)=\"moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"downButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-down\" [disabled]=\"disabled\" (click)=\"moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"bottomButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-down\" [disabled]=\"disabled\" (click)=\"moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./picklist.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PickList implements AfterViewChecked,AfterContentInit {\n\n    @Input() source: any[];\n\n    @Input() target: any[];\n\n    @Input() sourceHeader: string;\n\n    @Input() rightButtonAriaLabel: string;\n\n    @Input() leftButtonAriaLabel: string;\n\n    @Input() allRightButtonAriaLabel: string;\n\n    @Input() allLeftButtonAriaLabel: string;\n\n    @Input() upButtonAriaLabel: string;\n\n    @Input() downButtonAriaLabel: string;\n\n    @Input() topButtonAriaLabel: string;\n\n    @Input() bottomButtonAriaLabel: string;\n\n    @Input() targetHeader: string;\n\n    @Input() responsive: boolean;\n\n    @Input() filterBy: string;\n\n    @Input() filterLocale: string;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Input() sourceTrackBy: Function;\n\n    @Input() targetTrackBy: Function;\n\n    @Input() showSourceFilter: boolean = true;\n\n    @Input() showTargetFilter: boolean = true;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dragdrop: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() sourceStyle: any;\n\n    @Input() targetStyle: any;\n\n    @Input() showSourceControls: boolean = true;\n\n    @Input() showTargetControls: boolean = true;\n\n    @Input() sourceFilterPlaceholder: string;\n\n    @Input() targetFilterPlaceholder: string;\n\n    @Input() disabled: boolean = false;\n\n    @Input() ariaSourceFilterLabel: string;\n\n    @Input() ariaTargetFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() breakpoint: string = \"960px\";\n\n    @Output() onMoveToSource: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveAllToSource: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveAllToTarget: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveToTarget: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetFilter: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('sourcelist') listViewSourceChild: ElementRef;\n\n    @ViewChild('targetlist') listViewTargetChild: ElementRef;\n\n    @ViewChild('sourceFilter') sourceFilterViewChild: ElementRef;\n\n    @ViewChild('targetFilter') targetFilterViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public visibleOptionsSource: any[];\n\n    public visibleOptionsTarget: any[];\n\n    selectedItemsSource: any[] = [];\n\n    selectedItemsTarget: any[] = [];\n\n    reorderedListElement: any;\n\n    movedUp: boolean;\n\n    movedDown: boolean;\n\n    itemTouched: boolean;\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    filterValueSource: string;\n\n    filterValueTarget: string;\n\n    fromListType: number;\n\n    emptyMessageSourceTemplate: TemplateRef<any>;\n\n    emptyFilterMessageSourceTemplate: TemplateRef<any>;\n\n    emptyMessageTargetTemplate: TemplateRef<any>;\n\n    emptyFilterMessageTargetTemplate: TemplateRef<any>;\n\n    sourceHeaderTemplate: TemplateRef<any>;\n\n    targetHeaderTemplate: TemplateRef<any>;\n\n    readonly SOURCE_LIST = -1;\n\n    readonly TARGET_LIST = 1;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n\n    ngOnInit() {\n        if (this.responsive) {\n            this.createStyle();\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'sourceHeader':\n                    this.sourceHeaderTemplate = item.template;\n                break;\n\n                case 'targetHeader':\n                    this.targetHeaderTemplate = item.template;\n                break;\n\n                case 'emptymessagesource':\n                    this.emptyMessageSourceTemplate = item.template;\n                break;\n\n                case 'emptyfiltermessagesource':\n                    this.emptyFilterMessageSourceTemplate = item.template;\n                break;\n\n                case 'emptymessagetarget':\n                    this.emptyMessageTargetTemplate = item.template;\n                break;\n\n                case 'emptyfiltermessagetarget':\n                    this.emptyFilterMessageTargetTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.movedUp||this.movedDown) {\n            let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');\n            let listItem;\n\n            if (this.movedUp)\n                listItem = listItems[0];\n            else\n                listItem = listItems[listItems.length - 1];\n\n            DomHandler.scrollInView(this.reorderedListElement, listItem);\n            this.movedUp = false;\n            this.movedDown = false;\n            this.reorderedListElement = null;\n        }\n    }\n\n    onItemClick(event, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n        if (this.disabled) {\n            return;\n        }\n\n        let index = this.findIndexInSelection(item,selectedItems);\n        let selected = (index != -1);\n        let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey||event.ctrlKey||event.shiftKey);\n\n            if (selected && metaKey) {\n                selectedItems.splice(index, 1);\n            }\n            else {\n                if (!metaKey) {\n                    selectedItems.length = 0;\n                }\n                selectedItems.push(item);\n            }\n        }\n        else {\n            if (selected)\n                selectedItems.splice(index, 1);\n            else\n                selectedItems.push(item);\n        }\n\n        callback.emit({originalEvent: event, items: selectedItems});\n\n        this.itemTouched = false;\n    }\n\n    onSourceItemDblClick() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.moveRight();\n    }\n\n    onTargetItemDblClick() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.moveLeft();\n    }\n\n    onFilter(event: KeyboardEvent, data: any[], listType: number) {\n        let query = ((<HTMLInputElement> event.target).value.trim() as any).toLocaleLowerCase(this.filterLocale);\n        if (listType === this.SOURCE_LIST)\n            this.filterValueSource = query;\n        else if (listType === this.TARGET_LIST)\n            this.filterValueTarget = query;\n\n        this.filter(data, listType);\n    }\n\n    filter(data: any[], listType: number) {\n        let searchFields = this.filterBy.split(',');\n\n        if (listType === this.SOURCE_LIST) {\n            this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);\n            this.onSourceFilter.emit({query: this.filterValueSource, value: this.visibleOptionsSource});\n        }\n        else if (listType === this.TARGET_LIST) {\n            this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);\n            this.onTargetFilter.emit({query: this.filterValueTarget, value: this.visibleOptionsTarget});\n        }\n    }\n\n    isItemVisible(item: any, listType: number): boolean {\n        if (listType == this.SOURCE_LIST)\n            return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);\n        else\n            return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);\n    }\n\n    isEmpty(listType: number) {\n        if (listType == this.SOURCE_LIST)\n            return this.filterValueSource ? (!this.visibleOptionsSource || this.visibleOptionsSource.length === 0) : (!this.source || this.source.length === 0);\n        else\n            return this.filterValueTarget ? (!this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0) : (!this.target || this.target.length === 0);\n    }\n\n\n    isVisibleInList(data: any[], item: any, filterValue: string): boolean {\n        if (filterValue && filterValue.trim().length) {\n            for(let i = 0; i < data.length; i++) {\n                if (item == data[i]) {\n                    return true;\n                }\n            }\n        }\n        else {\n            return true;\n        }\n    }\n\n    onItemTouchEnd() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.itemTouched = true;\n    }\n\n    private sortByIndexInList(items: any[], list: any) {\n        return items.sort((item1, item2) =>\n            ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));\n    }\n\n    moveUp(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = 0; i < selectedItems.length; i++) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = list[selectedItemIndex];\n                    let temp = list[selectedItemIndex-1];\n                    list[selectedItemIndex-1] = movedItem;\n                    list[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            this.movedUp = true;\n            this.reorderedListElement = listElement;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveTop(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = 0; i < selectedItems.length; i++) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = list.splice(selectedItemIndex,1)[0];\n                    list.unshift(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            listElement.scrollTop = 0;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveDown(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = selectedItems.length - 1; i >= 0; i--) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != (list.length - 1)) {\n                    let movedItem = list[selectedItemIndex];\n                    let temp = list[selectedItemIndex+1];\n                    list[selectedItemIndex+1] = movedItem;\n                    list[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            this.movedDown = true;\n            this.reorderedListElement = listElement;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveBottom(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = selectedItems.length - 1; i >= 0; i--) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != (list.length - 1)) {\n                    let movedItem = list.splice(selectedItemIndex,1)[0];\n                    list.push(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            listElement.scrollTop = listElement.scrollHeight;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveRight() {\n        if (this.selectedItemsSource && this.selectedItemsSource.length) {\n            for(let i = 0; i < this.selectedItemsSource.length; i++) {\n                let selectedItem = this.selectedItemsSource[i];\n                if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {\n                    this.target.push(this.source.splice(ObjectUtils.findIndexInList(selectedItem, this.source),1)[0]);\n\n                    if (this.visibleOptionsSource)\n                        this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource),1);\n                }\n            }\n            this.onMoveToTarget.emit({\n                items: this.selectedItemsSource\n            });\n            this.selectedItemsSource = [];\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n        }\n    }\n\n    moveAllRight() {\n        if (this.source) {\n            let movedItems = [];\n\n            for(let i = 0; i < this.source.length; i++) {\n                if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {\n                    let removedItem = this.source.splice(i, 1)[0];\n                    this.target.push(removedItem);\n                    movedItems.push(removedItem);\n                    i--;\n                }\n            }\n\n            this.onMoveAllToTarget.emit({\n                items: movedItems\n            });\n\n            this.selectedItemsSource = [];\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n\n            this.visibleOptionsSource = [];\n        }\n    }\n\n    moveLeft() {\n        if (this.selectedItemsTarget && this.selectedItemsTarget.length) {\n            for(let i = 0; i < this.selectedItemsTarget.length; i++) {\n                let selectedItem = this.selectedItemsTarget[i];\n                if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {\n                    this.source.push(this.target.splice(ObjectUtils.findIndexInList(selectedItem, this.target),1)[0]);\n\n                    if (this.visibleOptionsTarget)\n                        this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget),1)[0]\n                }\n            }\n            this.onMoveToSource.emit({\n                items: this.selectedItemsTarget\n            });\n\n            this.selectedItemsTarget = [];\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n        }\n    }\n\n    moveAllLeft() {\n        if (this.target) {\n            let movedItems = [];\n\n            for(let i = 0; i < this.target.length; i++) {\n                if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {\n                    let removedItem = this.target.splice(i, 1)[0];\n                    this.source.push(removedItem);\n                    movedItems.push(removedItem);\n                    i--;\n                }\n            }\n\n            this.onMoveAllToSource.emit({\n                items: movedItems\n            });\n\n            this.selectedItemsTarget = [];\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n\n            this.visibleOptionsTarget = [];\n        }\n    }\n\n    isSelected(item: any, selectedItems: any[]) {\n        return this.findIndexInSelection(item, selectedItems) != -1;\n    }\n\n    findIndexInSelection(item: any, selectedItems: any[]): number {\n        return ObjectUtils.findIndexInList(item, selectedItems);\n    }\n\n    onDrop(event: CdkDragDrop<string[]>, listType: number) {\n        let isTransfer = event.previousContainer !== event.container;\n        let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);\n\n        if (listType === this.SOURCE_LIST) {\n            if (isTransfer) {\n                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n\n                if (this.visibleOptionsTarget)\n                    this.visibleOptionsTarget.splice(event.previousIndex, 1);\n\n                this.onMoveToSource.emit({items: [event.item.data]});\n            }\n            else {\n                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n                this.onSourceReorder.emit({items: [event.item.data]});\n            }\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n        }\n        else {\n            if (isTransfer) {\n                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n\n                if (this.visibleOptionsSource)\n                    this.visibleOptionsSource.splice(event.previousIndex, 1);\n\n                this.onMoveToTarget.emit({items: [event.item.data]});\n            }\n            else {\n                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n                this.onTargetReorder.emit({items: [event.item.data]});\n            }\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n        }\n    }\n\n    getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {\n        let previousIndex, currentIndex;\n\n        if (droppedList === this.SOURCE_LIST) {\n            previousIndex = isTransfer ? this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;\n            currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;\n        }\n        else {\n            previousIndex = isTransfer ? this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;\n            currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;\n        }\n\n        return {previousIndex, currentIndex};\n    }\n\n    findFilteredCurrentIndex(visibleOptions, index, options) {\n        if (visibleOptions.length === index) {\n            let toIndex = ObjectUtils.findIndexInList(visibleOptions[index-1], options);\n\n            return toIndex + 1;\n        }\n        else {\n            return ObjectUtils.findIndexInList(visibleOptions[index], options);\n        }\n    }\n\n    resetFilter() {\n        this.visibleOptionsSource = null;\n        this.filterValueSource = null;\n        this.visibleOptionsTarget = null;\n        this.filterValueTarget = null;\n\n        (<HTMLInputElement> this.sourceFilterViewChild.nativeElement).value = '';\n        (<HTMLInputElement> this.targetFilterViewChild.nativeElement).value = '';\n    }\n\n    onItemKeydown(event: KeyboardEvent, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n        let listItem = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onItemClick(event, item, selectedItems, callback);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.el.nativeElement.children[0].setAttribute(this.id, '');\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n\n            let innerHTML = `\n            @media screen and (max-width: ${this.breakpoint}) {\n                .p-picklist[${this.id}] {\n                    flex-direction: column;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons {\n                    padding: var(--content-padding);\n                    flex-direction: row;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons .p-button {\n                    margin-right: var(--inline-spacing);\n                    margin-bottom: 0;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {\n                    margin-right: 0;\n                }\n\n                .p-picklist[${this.id}] .pi-angle-right:before {\n                    content: \"\\\\e930\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-double-right:before {\n                    content: \"\\\\e92c\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-left:before {\n                    content: \"\\\\e933\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-double-left:before {\n                    content: \"\\\\e92f\"\n                }\n            }\n            `;\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;``\n        }\n    }\n\n    ngOnDestroy() {\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule,DragDropModule],\n    exports: [PickList,SharedModule,DragDropModule],\n    declarations: [PickList]\n})\nexport class PickListModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class ProgressBar {
+    constructor() {
+        this.showValue = true;
+        this.unit = '%';
+        this.mode = 'determinate';
+    }
+}
+ProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressBar, selector: "p-progressBar", inputs: { value: "value", showValue: "showValue", style: "style", styleClass: "styleClass", unit: "unit", mode: "mode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressBar', template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"] }]
+        }], propDecorators: { value: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], unit: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }] } });
+class ProgressBarModule {
+}
+ProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBar], imports: [CommonModule], exports: [ProgressBar] });
+ProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressBar],
+                    declarations: [ProgressBar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ProgressBar, ProgressBarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-progressbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-progressbar.mjs","sources":["../../src/app/components/progressbar/progressbar.ts","../../src/app/components/progressbar/primeng-progressbar.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-progressBar',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" role=\"progressbar\" aria-valuemin=\"0\" [attr.aria-valuenow]=\"value\" aria-valuemax=\"100\"\n            [ngClass]=\"{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}\">\n            <div *ngIf=\"mode === 'determinate'\" class=\"p-progressbar-value p-progressbar-value-animate\" [style.width]=\"value + '%'\" style=\"display:block\"></div>\n            <div *ngIf=\"mode === 'determinate' && showValue\" class=\"p-progressbar-label\" [style.display]=\"value != null ? 'block' : 'none'\">{{value}}{{unit}}</div>\n            <div *ngIf=\"mode === 'indeterminate'\" class=\"p-progressbar-indeterminate-container\">\n                <div class=\"p-progressbar-value p-progressbar-value-animate\"></div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./progressbar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ProgressBar {\n\n    @Input() value: any;\n\n    @Input() showValue: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() unit: string = '%';\n\n    @Input() mode: string = 'determinate';\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ProgressBar],\n    declarations: [ProgressBar]\n})\nexport class ProgressBarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAsBa,WAAW;IAnBxB;QAuBa,cAAS,GAAY,IAAI,CAAC;QAM1B,SAAI,GAAW,GAAG,CAAC;QAEnB,SAAI,GAAW,aAAa,CAAC;KAEzC;;wGAdY,WAAW;4FAAX,WAAW,sNAjBV;;;;;;;;;KAST;2FAQQ,WAAW;kBAnBvB,SAAS;+BACI,eAAe,YACf;;;;;;;;;KAST,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,IAAI;sBAAZ,KAAK;;MASG,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBArBjB,WAAW,aAiBV,YAAY,aAjBb,WAAW;+GAqBX,iBAAiB,YAJjB,CAAC,YAAY,CAAC;2FAId,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AC1CD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class ProgressSpinner {
+    constructor() {
+        this.strokeWidth = "2";
+        this.fill = "none";
+        this.animationDuration = "2s";
+    }
+}
+ProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressSpinner, selector: "p-progressSpinner", inputs: { style: "style", styleClass: "styleClass", strokeWidth: "strokeWidth", fill: "fill", animationDuration: "animationDuration" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, isInline: true, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressSpinner', template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"] }]
+        }], propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], fill: [{
+                type: Input
+            }], animationDuration: [{
+                type: Input
+            }] } });
+class ProgressSpinnerModule {
+}
+ProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, declarations: [ProgressSpinner], imports: [CommonModule], exports: [ProgressSpinner] });
+ProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressSpinner],
+                    declarations: [ProgressSpinner]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ProgressSpinner, ProgressSpinnerModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-progressspinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-progressspinner.mjs","sources":["../../src/app/components/progressspinner/progressspinner.ts","../../src/app/components/progressspinner/primeng-progressspinner.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-progressSpinner',\n    template: `\n        <div class=\"p-progress-spinner\" [ngStyle]=\"style\" [ngClass]=\"styleClass\"  role=\"alert\" aria-busy=\"true\">\n            <svg class=\"p-progress-spinner-svg\" viewBox=\"25 25 50 50\" [style.animation-duration]=\"animationDuration\">\n                <circle class=\"p-progress-spinner-circle\" cx=\"50\" cy=\"50\" r=\"20\" [attr.fill]=\"fill\" [attr.stroke-width]=\"strokeWidth\" stroke-miterlimit=\"10\"/>\n            </svg>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./progressspinner.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ProgressSpinner {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() strokeWidth: string = \"2\";\n\n    @Input() fill: string = \"none\";\n\n    @Input() animationDuration: string = \"2s\";\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ProgressSpinner],\n    declarations: [ProgressSpinner]\n})\nexport class ProgressSpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,eAAe;IAhB5B;QAsBa,gBAAW,GAAW,GAAG,CAAC;QAE1B,SAAI,GAAW,MAAM,CAAC;QAEtB,sBAAiB,GAAW,IAAI,CAAC;KAE7C;;4GAZY,eAAe;gGAAf,eAAe,wOAdd;;;;;;KAMT;2FAQQ,eAAe;kBAhB3B,SAAS;+BACI,mBAAmB,YACnB;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,iBAAiB;sBAAzB,KAAK;;MASG,qBAAqB;;kHAArB,qBAAqB;mHAArB,qBAAqB,iBAnBrB,eAAe,aAed,YAAY,aAfb,eAAe;mHAmBf,qBAAqB,YAJrB,CAAC,YAAY,CAAC;2FAId,qBAAqB;kBALjC,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,YAAY,EAAE,CAAC,eAAe,CAAC;iBAClC;;;ACrCD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,222 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Injectable, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
+
+const RADIO_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => RadioButton),
+    multi: true
+};
+class RadioControlRegistry {
+    constructor() {
+        this.accessors = [];
+    }
+    add(control, accessor) {
+        this.accessors.push([control, accessor]);
+    }
+    remove(accessor) {
+        this.accessors = this.accessors.filter((c) => {
+            return c[1] !== accessor;
+        });
+    }
+    select(accessor) {
+        this.accessors.forEach((c) => {
+            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {
+                c[1].writeValue(accessor.value);
+            }
+        });
+    }
+    isSameGroup(controlPair, accessor) {
+        if (!controlPair[0].control) {
+            return false;
+        }
+        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;
+    }
+}
+RadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+RadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, decorators: [{
+            type: Injectable,
+            args: [{
+                    providedIn: 'root',
+                }]
+        }] });
+class RadioButton {
+    constructor(cd, injector, registry) {
+        this.cd = cd;
+        this.injector = injector;
+        this.registry = registry;
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.control = this.injector.get(NgControl);
+        this.checkName();
+        this.registry.add(this.control, this);
+    }
+    handleClick(event, radioButton, focus) {
+        event.preventDefault();
+        if (this.disabled) {
+            return;
+        }
+        this.select(event);
+        if (focus) {
+            radioButton.focus();
+        }
+    }
+    select(event) {
+        if (!this.disabled) {
+            this.inputViewChild.nativeElement.checked = true;
+            this.checked = true;
+            this.onModelChange(this.value);
+            this.registry.select(this);
+            this.onClick.emit(event);
+        }
+    }
+    writeValue(value) {
+        this.checked = (value == this.value);
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            this.inputViewChild.nativeElement.checked = this.checked;
+        }
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onChange(event) {
+        this.select(event);
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+        this.registry.remove(this);
+    }
+    checkName() {
+        if (this.name && this.formControlName && this.name !== this.formControlName) {
+            this.throwNameError();
+        }
+        if (!this.name && this.formControlName) {
+            this.name = this.formControlName;
+        }
+    }
+    throwNameError() {
+        throw new Error(`
+          If you define both a name and a formControlName attribute on your radio button, their values
+          must match. Ex: <p-radioButton formControlName="food" name="food"></p-radioButton>
+        `);
+    }
+}
+RadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RadioControlRegistry }], target: i0.ɵɵFactoryTarget.Component });
+RadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: RadioButton, selector: "p-radioButton", inputs: { value: "value", formControlName: "formControlName", name: "name", disabled: "disabled", label: "label", tabindex: "tabindex", inputId: "inputId", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["rb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-radioButton',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [RADIO_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: RadioControlRegistry }]; }, propDecorators: { value: [{
+                type: Input
+            }], formControlName: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['rb']
+            }] } });
+class RadioButtonModule {
+}
+RadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, declarations: [RadioButton], imports: [CommonModule], exports: [RadioButton] });
+RadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [RadioButton],
+                    declarations: [RadioButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { RADIO_VALUE_ACCESSOR, RadioButton, RadioButtonModule, RadioControlRegistry };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-radiobutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-radiobutton.mjs","sources":["../../src/app/components/radiobutton/radiobutton.ts","../../src/app/components/radiobutton/primeng-radiobutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,ElementRef,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, Injectable, Injector, OnInit, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor, NgControl} from '@angular/forms';\n\nexport const RADIO_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => RadioButton),\n    multi: true\n};\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class RadioControlRegistry {\n    private accessors: any[] = [];\n\n    add(control: NgControl, accessor: RadioButton) {\n        this.accessors.push([control, accessor]);\n    }\n\n    remove(accessor: RadioButton) {\n        this.accessors = this.accessors.filter((c) => {\n            return c[1] !== accessor;\n        })\n    }\n\n    select(accessor: RadioButton) {\n        this.accessors.forEach((c) => {\n            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {\n                c[1].writeValue(accessor.value);\n            }\n        });\n    }\n\n    private isSameGroup(controlPair: [NgControl, RadioButton], accessor: RadioButton): boolean {\n        if (!controlPair[0].control) {\n            return false;\n        }\n\n        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;\n    }\n}\n\n@Component({\n    selector: 'p-radioButton',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #rb type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.value]=\"value\" [attr.tabindex]=\"tabindex\" [attr.aria-checked]=\"checked\" [attr.aria-label]=\"ariaLabel\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy\" [checked]=\"checked\" (change)=\"onChange($event)\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" [disabled]=\"disabled\">\n            </div>\n            <div (click)=\"handleClick($event, rb, true)\" [ngClass]=\"{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}\">\n                <span class=\"p-radiobutton-icon\"></span>\n            </div>\n        </div>\n        <label (click)=\"select($event)\" [class]=\"labelStyleClass\"\n            [ngClass]=\"{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}\"\n            *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [RADIO_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class RadioButton implements ControlValueAccessor, OnInit, OnDestroy {\n\n    @Input() value: any;\n\n    @Input() formControlName: string;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() label: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() labelStyleClass: string;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('rb') inputViewChild: ElementRef;\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public checked: boolean;\n\n    public focused: boolean;\n\n    control: NgControl;\n\n    constructor(public cd: ChangeDetectorRef, private injector: Injector, private registry: RadioControlRegistry) {}\n\n    ngOnInit() {\n        this.control = this.injector.get(NgControl);\n        this.checkName();\n        this.registry.add(this.control, this);\n    }\n\n    handleClick(event, radioButton, focus) {\n        event.preventDefault();\n\n        if (this.disabled) {\n            return;\n        }\n\n        this.select(event);\n\n        if (focus) {\n            radioButton.focus();\n        }\n    }\n\n    select(event) {\n        if (!this.disabled) {\n            this.inputViewChild.nativeElement.checked = true;\n            this.checked = true;\n            this.onModelChange(this.value);\n            this.registry.select(this);\n            this.onClick.emit(event);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.checked = (value == this.value);\n\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            this.inputViewChild.nativeElement.checked = this.checked;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onChange(event) {\n        this.select(event);\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    ngOnDestroy() {\n        this.registry.remove(this);\n    }\n\n    private checkName() {\n        if (this.name && this.formControlName && this.name !== this.formControlName) {\n            this.throwNameError();\n        }\n        if (!this.name && this.formControlName) {\n            this.name = this.formControlName;\n        }\n    }\n\n    private throwNameError() {\n        throw new Error(`\n          If you define both a name and a formControlName attribute on your radio button, their values\n          must match. Ex: <p-radioButton formControlName=\"food\" name=\"food\"></p-radioButton>\n        `);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [RadioButton],\n    declarations: [RadioButton]\n})\nexport class RadioButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,131 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const RATING_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Rating),
+    multi: true
+};
+class Rating {
+    constructor(cd) {
+        this.cd = cd;
+        this.stars = 5;
+        this.cancel = true;
+        this.iconOnClass = 'pi pi-star-fill';
+        this.iconOffClass = 'pi pi-star';
+        this.iconCancelClass = 'pi pi-ban';
+        this.onRate = new EventEmitter();
+        this.onCancel = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.starsArray = [];
+        for (let i = 0; i < this.stars; i++) {
+            this.starsArray[i] = i;
+        }
+    }
+    rate(event, i) {
+        if (!this.readonly && !this.disabled) {
+            this.value = (i + 1);
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onRate.emit({
+                originalEvent: event,
+                value: (i + 1)
+            });
+        }
+        event.preventDefault();
+    }
+    clear(event) {
+        if (!this.readonly && !this.disabled) {
+            this.value = null;
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onCancel.emit(event);
+        }
+        event.preventDefault();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.detectChanges();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+}
+Rating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Rating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Rating, selector: "p-rating", inputs: { disabled: "disabled", readonly: "readonly", stars: "stars", cancel: "cancel", iconOnClass: "iconOnClass", iconOnStyle: "iconOnStyle", iconOffClass: "iconOffClass", iconOffStyle: "iconOffStyle", iconCancelClass: "iconCancelClass", iconCancelStyle: "iconCancelStyle" }, outputs: { onRate: "onRate", onCancel: "onCancel" }, host: { classAttribute: "p-element" }, providers: [RATING_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, isInline: true, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-rating', template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, providers: [RATING_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], stars: [{
+                type: Input
+            }], cancel: [{
+                type: Input
+            }], iconOnClass: [{
+                type: Input
+            }], iconOnStyle: [{
+                type: Input
+            }], iconOffClass: [{
+                type: Input
+            }], iconOffStyle: [{
+                type: Input
+            }], iconCancelClass: [{
+                type: Input
+            }], iconCancelStyle: [{
+                type: Input
+            }], onRate: [{
+                type: Output
+            }], onCancel: [{
+                type: Output
+            }] } });
+class RatingModule {
+}
+RatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, declarations: [Rating], imports: [CommonModule], exports: [Rating] });
+RatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Rating],
+                    declarations: [Rating]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { RATING_VALUE_ACCESSOR, Rating, RatingModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-rating.mjs","sources":["../../src/app/components/rating/rating.ts","../../src/app/components/rating/primeng-rating.ts"],"sourcesContent":["import {NgModule,Component,OnInit,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const RATING_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Rating),\n  multi: true\n};\n\n@Component({\n    selector: 'p-rating',\n    template: `\n        <div class=\"p-rating\" [ngClass]=\"{'p-readonly': readonly, 'p-disabled': disabled}\">\n            <span [attr.tabindex]=\"(disabled || readonly) ? null : '0'\" *ngIf=\"cancel\" (click)=\"clear($event)\" (keydown.enter)=\"clear($event)\" class=\"p-rating-icon p-rating-cancel\" [ngClass]=\"iconCancelClass\" [ngStyle]=\"iconCancelStyle\"></span>\n            <span *ngFor=\"let star of starsArray;let i=index\" class=\"p-rating-icon\" [attr.tabindex]=\"(disabled || readonly) ? null : '0'\"  (click)=\"rate($event,i)\" (keydown.enter)=\"rate($event,i)\"\n                [ngClass]=\"(!value || i >= value) ? iconOffClass : iconOnClass\"\n                [ngStyle]=\"(!value || i >= value) ? iconOffStyle : iconOnStyle\"></span>\n        </div>\n    `,\n    providers: [RATING_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./rating.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Rating implements OnInit,ControlValueAccessor {\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() stars: number = 5;\n\n    @Input() cancel: boolean = true;\n\n    @Input() iconOnClass: string = 'pi pi-star-fill';\n\n    @Input() iconOnStyle: any;\n\n    @Input() iconOffClass: string = 'pi pi-star';\n\n    @Input() iconOffStyle: any;\n\n    @Input() iconCancelClass: string = 'pi pi-ban';\n\n    @Input() iconCancelStyle: any;\n\n    @Output() onRate: EventEmitter<any> = new EventEmitter();\n\n    @Output() onCancel: EventEmitter<any> = new EventEmitter();\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    value: number;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    public starsArray: number[];\n\n    ngOnInit() {\n        this.starsArray = [];\n        for(let i = 0; i < this.stars; i++) {\n            this.starsArray[i] = i;\n        }\n    }\n\n    rate(event, i: number): void {\n        if (!this.readonly&&!this.disabled) {\n            this.value = (i + 1);\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onRate.emit({\n                originalEvent: event,\n                value: (i+1)\n            });\n        }\n        event.preventDefault();\n    }\n\n    clear(event): void {\n        if (!this.readonly&&!this.disabled) {\n            this.value = null;\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onCancel.emit(event);\n        }\n        event.preventDefault();\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.detectChanges();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Rating],\n    declarations: [Rating]\n})\nexport class RatingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAIa,qBAAqB,GAAQ;IACxC,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC;IACrC,KAAK,EAAE,IAAI;EACX;MAoBW,MAAM;IA0Bf,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QApBhC,UAAK,GAAW,CAAC,CAAC;QAElB,WAAM,GAAY,IAAI,CAAC;QAEvB,gBAAW,GAAW,iBAAiB,CAAC;QAIxC,iBAAY,GAAW,YAAY,CAAC;QAIpC,oBAAe,GAAW,WAAW,CAAC;QAIrC,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAM3D,kBAAa,GAAa,SAAQ,CAAC;QAEnC,mBAAc,GAAa,SAAQ,CAAC;KANS;IAU7C,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B;KACJ;IAED,IAAI,CAAC,KAAK,EAAE,CAAS;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACb,aAAa,EAAE,KAAK;gBACpB,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;aACf,CAAC,CAAC;SACN;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;;mGAlFQ,MAAM;uFAAN,MAAM,qZARJ,CAAC,qBAAqB,CAAC,0BARxB;;;;;;;KAOT;2FASQ,MAAM;kBAlBlB,SAAS;+BACI,UAAU,YACV;;;;;;;KAOT,aACU,CAAC,qBAAqB,CAAC,mBACjB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;wGAIQ,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEI,MAAM;sBAAf,MAAM;gBAEG,QAAQ;sBAAjB,MAAM;;MAkEE,YAAY;;yGAAZ,YAAY;0GAAZ,YAAY,iBA1FZ,MAAM,aAsFL,YAAY,aAtFb,MAAM;0GA0FN,YAAY,YAJZ,CAAC,YAAY,CAAC;2FAId,YAAY;kBALxB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,YAAY,EAAE,CAAC,MAAM,CAAC;iBACzB;;;ACrHD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,111 @@
+import * as i0 from '@angular/core';
+import { Directive, Optional, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+
+class Ripple {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+    }
+    ngAfterViewInit() {
+        if (this.config && this.config.ripple) {
+            this.zone.runOutsideAngular(() => {
+                this.create();
+                this.mouseDownListener = this.onMouseDown.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            });
+        }
+    }
+    onMouseDown(event) {
+        let ink = this.getInk();
+        if (!ink || getComputedStyle(ink, null).display === 'none') {
+            return;
+        }
+        DomHandler.removeClass(ink, 'p-ink-active');
+        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {
+            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));
+            ink.style.height = d + 'px';
+            ink.style.width = d + 'px';
+        }
+        let offset = DomHandler.getOffset(this.el.nativeElement);
+        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;
+        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;
+        ink.style.top = y + 'px';
+        ink.style.left = x + 'px';
+        DomHandler.addClass(ink, 'p-ink-active');
+    }
+    getInk() {
+        for (let i = 0; i < this.el.nativeElement.children.length; i++) {
+            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {
+                return this.el.nativeElement.children[i];
+            }
+        }
+        return null;
+    }
+    resetInk() {
+        let ink = this.getInk();
+        if (ink) {
+            DomHandler.removeClass(ink, 'p-ink-active');
+        }
+    }
+    onAnimationEnd(event) {
+        DomHandler.removeClass(event.currentTarget, 'p-ink-active');
+    }
+    create() {
+        let ink = document.createElement('span');
+        ink.className = 'p-ink';
+        this.el.nativeElement.appendChild(ink);
+        this.animationListener = this.onAnimationEnd.bind(this);
+        ink.addEventListener('animationend', this.animationListener);
+    }
+    remove() {
+        let ink = this.getInk();
+        if (ink) {
+            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+            ink.removeEventListener('animationend', this.animationListener);
+            DomHandler.removeElement(ink);
+        }
+    }
+    ngOnDestroy() {
+        if (this.config && this.config.ripple) {
+            this.remove();
+        }
+    }
+}
+Ripple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
+Ripple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Ripple, selector: "[pRipple]", host: { classAttribute: "p-ripple p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRipple]',
+                    host: {
+                        'class': 'p-ripple p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{
+                        type: Optional
+                    }] }];
+    } });
+class RippleModule {
+}
+RippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });
+RippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Ripple],
+                    declarations: [Ripple]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Ripple, RippleModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-ripple.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-ripple.mjs","sources":["../../src/app/components/ripple/ripple.ts","../../src/app/components/ripple/primeng-ripple.ts"],"sourcesContent":["import { NgModule, Directive, AfterViewInit, ElementRef, NgZone, OnDestroy, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeNGConfig } from 'primeng/api';\n\n@Directive({\n    selector: '[pRipple]',\n    host: {\n        'class': 'p-ripple p-element'\n    }\n})\nexport class Ripple implements AfterViewInit, OnDestroy {\n\n    constructor(public el: ElementRef, public zone: NgZone, @Optional() public config: PrimeNGConfig) { }\n\n    animationListener: any;\n\n    mouseDownListener: any;\n\n    ngAfterViewInit() {\n        if (this.config && this.config.ripple) {\n            this.zone.runOutsideAngular(() => {\n                this.create();\n\n                this.mouseDownListener = this.onMouseDown.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n            });\n        }\n    }\n\n    onMouseDown(event: MouseEvent) {\n        let ink = this.getInk();\n        if (!ink || getComputedStyle(ink, null).display === 'none') {\n            return;\n        }\n\n        DomHandler.removeClass(ink, 'p-ink-active');\n        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n            ink.style.height = d + 'px';\n            ink.style.width = d + 'px';\n        }\n\n        let offset = DomHandler.getOffset(this.el.nativeElement);\n        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n\n        ink.style.top = y + 'px';\n        ink.style.left = x + 'px';\n        DomHandler.addClass(ink, 'p-ink-active');\n    }\n\n    getInk() {\n        for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n                return this.el.nativeElement.children[i];\n            }\n        }\n        return null;\n    }\n\n    resetInk() {\n        let ink = this.getInk();\n        if (ink) {\n            DomHandler.removeClass(ink, 'p-ink-active');\n        }\n    }\n\n    onAnimationEnd(event) {\n        DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n    }\n\n    create() {\n        let ink = document.createElement('span');\n        ink.className = 'p-ink';\n        this.el.nativeElement.appendChild(ink);\n\n        this.animationListener = this.onAnimationEnd.bind(this);\n        ink.addEventListener('animationend', this.animationListener);\n    }\n\n    remove() {\n        let ink = this.getInk();\n        if (ink) {\n            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n            ink.removeEventListener('animationend', this.animationListener);\n            DomHandler.removeElement(ink);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.config && this.config.ripple) {\n            this.remove();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Ripple],\n    declarations: [Ripple]\n})\nexport class RippleModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,237 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate } from 'primeng/api';
+
+class ScrollPanel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.timeoutFrame = (fn) => setTimeout(fn, 0);
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            this.moveBar();
+            this.moveBar = this.moveBar.bind(this);
+            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);
+            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);
+            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);
+            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);
+            window.addEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);
+            this.calculateContainerHeight();
+            this.initialized = true;
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    calculateContainerHeight() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        let xBar = this.xBarViewChild.nativeElement;
+        let containerStyles = getComputedStyle(container), xBarStyles = getComputedStyle(xBar), pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);
+        if (containerStyles['max-height'] != "none" && pureContainerHeight == 0) {
+            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {
+                container.style.height = containerStyles['max-height'];
+            }
+            else {
+                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + "px";
+            }
+        }
+    }
+    moveBar() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        /* horizontal scroll */
+        let xBar = this.xBarViewChild.nativeElement;
+        let totalWidth = content.scrollWidth;
+        let ownWidth = content.clientWidth;
+        let bottom = (container.clientHeight - xBar.clientHeight) * -1;
+        this.scrollXRatio = ownWidth / totalWidth;
+        /* vertical scroll */
+        let yBar = this.yBarViewChild.nativeElement;
+        let totalHeight = content.scrollHeight;
+        let ownHeight = content.clientHeight;
+        let right = (container.clientWidth - yBar.clientWidth) * -1;
+        this.scrollYRatio = ownHeight / totalHeight;
+        this.requestAnimationFrame(() => {
+            if (this.scrollXRatio >= 1) {
+                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');
+                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);
+                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);
+                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';
+            }
+            if (this.scrollYRatio >= 1) {
+                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');
+                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);
+                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);
+                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';
+            }
+        });
+        this.cd.markForCheck();
+    }
+    onYBarMouseDown(e) {
+        this.isYBarClicked = true;
+        this.lastPageY = e.pageY;
+        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onXBarMouseDown(e) {
+        this.isXBarClicked = true;
+        this.lastPageX = e.pageX;
+        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onDocumentMouseMove(e) {
+        if (this.isXBarClicked) {
+            this.onMouseMoveForXBar(e);
+        }
+        else if (this.isYBarClicked) {
+            this.onMouseMoveForYBar(e);
+        }
+        else {
+            this.onMouseMoveForXBar(e);
+            this.onMouseMoveForYBar(e);
+        }
+    }
+    onMouseMoveForXBar(e) {
+        let deltaX = e.pageX - this.lastPageX;
+        this.lastPageX = e.pageX;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;
+        });
+    }
+    onMouseMoveForYBar(e) {
+        let deltaY = e.pageY - this.lastPageY;
+        this.lastPageY = e.pageY;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;
+        });
+    }
+    scrollTop(scrollTop) {
+        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;
+        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;
+        this.contentViewChild.nativeElement.scrollTop = scrollTop;
+    }
+    onDocumentMouseUp(e) {
+        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');
+        document.removeEventListener('mousemove', this.onDocumentMouseMove);
+        document.removeEventListener('mouseup', this.onDocumentMouseUp);
+        this.isXBarClicked = false;
+        this.isYBarClicked = false;
+    }
+    requestAnimationFrame(f) {
+        let frame = window.requestAnimationFrame || this.timeoutFrame;
+        frame(f);
+    }
+    ngOnDestroy() {
+        if (this.initialized) {
+            window.removeEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);
+        }
+    }
+    refresh() {
+        this.moveBar();
+    }
+}
+ScrollPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ScrollPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollPanel, selector: "p-scrollPanel", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "xBarViewChild", first: true, predicate: ["xBar"], descendants: true }, { propertyName: "yBarViewChild", first: true, predicate: ["yBar"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, isInline: true, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollPanel', template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], xBarViewChild: [{
+                type: ViewChild,
+                args: ['xBar']
+            }], yBarViewChild: [{
+                type: ViewChild,
+                args: ['yBar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ScrollPanelModule {
+}
+ScrollPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, declarations: [ScrollPanel], imports: [CommonModule], exports: [ScrollPanel] });
+ScrollPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollPanel],
+                    declarations: [ScrollPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ScrollPanel, ScrollPanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-scrollpanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-scrollpanel.mjs","sources":["../../src/app/components/scrollpanel/scrollpanel.ts","../../src/app/components/scrollpanel/primeng-scrollpanel.ts"],"sourcesContent":["import { NgModule, Component, Input, AfterViewInit, OnDestroy, ElementRef, NgZone, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, ContentChildren, QueryList, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeTemplate } from 'primeng/api';\n\n@Component({\n    selector: 'p-scrollPanel',\n    template: `\n        <div #container [ngClass]=\"'p-scrollpanel p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-scrollpanel-wrapper\">\n                <div #content class=\"p-scrollpanel-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n            </div>\n            <div #xBar class=\"p-scrollpanel-bar p-scrollpanel-bar-x\"></div>\n            <div #yBar class=\"p-scrollpanel-bar p-scrollpanel-bar-y\"></div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./scrollpanel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ScrollPanel implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    constructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {}\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ViewChild('xBar') xBarViewChild: ElementRef;\n\n    @ViewChild('yBar') yBarViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    scrollYRatio: number;\n\n    scrollXRatio: number;\n\n    timeoutFrame: any = (fn) => setTimeout(fn, 0);\n\n    initialized: boolean;\n\n    lastPageY: number;\n\n    lastPageX: number;\n\n    isXBarClicked: boolean;\n\n    isYBarClicked: boolean;\n\n    contentTemplate: TemplateRef<any>;\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            this.moveBar();\n            this.moveBar = this.moveBar.bind(this);\n            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);\n            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);\n            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);\n            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);\n\n            window.addEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);\n\n            this.calculateContainerHeight();\n\n            this.initialized = true;\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    calculateContainerHeight() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n        let xBar = this.xBarViewChild.nativeElement;\n\n        let containerStyles = getComputedStyle(container),\n        xBarStyles = getComputedStyle(xBar),\n        pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);\n\n        if (containerStyles['max-height'] != \"none\" && pureContainerHeight == 0) {\n            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {\n                container.style.height = containerStyles['max-height'];\n            }\n            else {\n                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + \"px\";\n            }\n        }\n    }\n\n    moveBar() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n\n        /* horizontal scroll */\n        let xBar = this.xBarViewChild.nativeElement;\n        let totalWidth = content.scrollWidth;\n        let ownWidth = content.clientWidth;\n        let bottom = (container.clientHeight - xBar.clientHeight) * -1;\n\n        this.scrollXRatio = ownWidth / totalWidth;\n\n        /* vertical scroll */\n        let yBar = this.yBarViewChild.nativeElement;\n        let totalHeight = content.scrollHeight;\n        let ownHeight = content.clientHeight;\n        let right = (container.clientWidth - yBar.clientWidth) * -1;\n\n        this.scrollYRatio = ownHeight / totalHeight;\n\n        this.requestAnimationFrame(() => {\n            if (this.scrollXRatio >= 1) {\n                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');\n            }\n            else {\n                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');\n                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);\n                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);\n                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';\n            }\n\n            if (this.scrollYRatio >= 1) {\n                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');\n            }\n            else {\n                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');\n                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);\n                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);\n                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';\n            }\n        });\n        this.cd.markForCheck();\n    }\n\n    onYBarMouseDown(e: MouseEvent) {\n        this.isYBarClicked = true;\n        this.lastPageY = e.pageY;\n        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n\n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onXBarMouseDown(e: MouseEvent) {\n        this.isXBarClicked = true;\n        this.lastPageX = e.pageX;\n        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n\n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onDocumentMouseMove(e: MouseEvent) {\n        if (this.isXBarClicked) {\n            this.onMouseMoveForXBar(e);\n        }\n        else if (this.isYBarClicked) {\n            this.onMouseMoveForYBar(e);\n        }\n        else {\n            this.onMouseMoveForXBar(e);\n            this.onMouseMoveForYBar(e);\n        }\n\n    }\n\n    onMouseMoveForXBar(e: MouseEvent) {\n        let deltaX = e.pageX - this.lastPageX;\n        this.lastPageX = e.pageX;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;\n        });\n    }\n\n    onMouseMoveForYBar(e: MouseEvent) {\n        let deltaY = e.pageY - this.lastPageY;\n        this.lastPageY = e.pageY;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;\n        });\n    }\n\n    scrollTop(scrollTop: number) {\n        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;\n        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;\n        this.contentViewChild.nativeElement.scrollTop = scrollTop;\n    }\n\n    onDocumentMouseUp(e: Event) {\n        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.removeEventListener('mousemove', this.onDocumentMouseMove);\n        document.removeEventListener('mouseup', this.onDocumentMouseUp);\n        this.isXBarClicked = false;\n        this.isYBarClicked = false;\n    }\n\n    requestAnimationFrame(f: Function) {\n        let frame = window.requestAnimationFrame || this.timeoutFrame;\n        frame(f);\n    }\n\n    ngOnDestroy() {\n        if (this.initialized) {\n            window.removeEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);\n        }\n    }\n\n    refresh() {\n        this.moveBar();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ScrollPanel],\n    declarations: [ScrollPanel]\n})\nexport class ScrollPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,176 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+class ScrollTop {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.target = "window";
+        this.threshold = 400;
+        this.icon = "pi pi-chevron-up";
+        this.behavior = "smooth";
+        this.showTransitionOptions = '.15s';
+        this.hideTransitionOptions = '.15s';
+        this.visible = false;
+    }
+    ngOnInit() {
+        if (this.target === 'window')
+            this.bindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.bindParentScrollListener();
+    }
+    onClick() {
+        let scrollElement = this.target === 'window' ? window : this.el.nativeElement.parentElement;
+        scrollElement.scroll({
+            top: 0,
+            behavior: this.behavior
+        });
+    }
+    onEnter(event) {
+        switch (event.toState) {
+            case 'open':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                break;
+            case 'void':
+                this.overlay = null;
+                break;
+        }
+    }
+    onLeave(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    checkVisibility(scrollY) {
+        if (scrollY > this.threshold)
+            this.visible = true;
+        else
+            this.visible = false;
+        this.cd.markForCheck();
+    }
+    bindParentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(this.el.nativeElement.parentElement.scrollTop);
+        };
+        this.el.nativeElement.parentElement.addEventListener('scroll', this.scrollListener);
+    }
+    bindDocumentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(DomHandler.getWindowScrollTop());
+        };
+        window.addEventListener('scroll', this.scrollListener);
+    }
+    unbindParentScrollListener() {
+        if (this.scrollListener) {
+            this.el.nativeElement.parentElement.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    unbindDocumentScrollListener() {
+        if (this.scrollListener) {
+            window.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-scrolltop p-link p-component': true,
+            'p-scrolltop-sticky': this.target !== 'window'
+        };
+    }
+    ngOnDestroy() {
+        if (this.target === 'window')
+            this.unbindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.unbindParentScrollListener();
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+    }
+}
+ScrollTop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ScrollTop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollTop, selector: "p-scrollTop", inputs: { styleClass: "styleClass", style: "style", target: "target", threshold: "threshold", icon: "icon", behavior: "behavior", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, isInline: true, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                opacity: 0
+            })),
+            state('open', style({
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollTop', template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], threshold: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], behavior: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+class ScrollTopModule {
+}
+ScrollTopModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollTopModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, declarations: [ScrollTop], imports: [CommonModule], exports: [ScrollTop] });
+ScrollTopModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollTop],
+                    declarations: [ScrollTop]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ScrollTop, ScrollTopModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-scrolltop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-scrolltop.mjs","sources":["../../src/app/components/scrolltop/scrolltop.ts","../../src/app/components/scrolltop/primeng-scrolltop.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, OnInit, OnDestroy, ElementRef, ChangeDetectorRef} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils'\nimport { PrimeNGConfig } from 'primeng/api';\n\n@Component({\n    selector: 'p-scrollTop',\n    template: `\n        <button  *ngIf=\"visible\" [@animation]=\"{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onEnter($event)\" (@animation.done)=\"onLeave($event)\"\n            [ngClass]=\"containerClass()\" (click)=\"onClick()\" [class]=\"styleClass\" [ngStyle]=\"style\" type=\"button\">\n            <span [class]=\"icon\" [ngClass]=\"'p-scrolltop-icon'\"></span>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./scrolltop.css'],\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                opacity: 0\n            })),\n            state('open', style({\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => void', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ScrollTop implements OnInit, OnDestroy {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() target: string = \"window\";\n\n    @Input() threshold: number = 400;\n\n    @Input() icon: string = \"pi pi-chevron-up\";\n\n    @Input() behavior: string = \"smooth\";\n\n    @Input() showTransitionOptions: string = '.15s';\n\n    @Input() hideTransitionOptions: string = '.15s';\n\n    scrollListener: any;\n\n    visible: boolean = false;\n\n    overlay: any;\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngOnInit() {\n        if (this.target === 'window')\n            this.bindDocumentScrollListener();\n        else if (this.target === 'parent')\n            this.bindParentScrollListener();\n    }\n\n    onClick() {\n        let scrollElement = this.target === 'window' ? window : this.el.nativeElement.parentElement;\n         scrollElement.scroll({\n            top: 0,\n            behavior: this.behavior\n        });\n    }\n\n    onEnter(event: AnimationEvent) {\n\n        switch(event.toState) {\n            case 'open':\n                this.overlay = event.element;\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n            break;\n            case 'void':\n                this.overlay = null;\n            break;\n        }\n    }\n\n    onLeave(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    checkVisibility(scrollY) {\n        if (scrollY > this.threshold)\n            this.visible = true;\n        else\n            this.visible = false;\n\n        this.cd.markForCheck();\n    }\n\n    bindParentScrollListener() {\n        this.scrollListener = () => {\n\n            this.checkVisibility(this.el.nativeElement.parentElement.scrollTop);\n        };\n\n        this.el.nativeElement.parentElement.addEventListener('scroll', this.scrollListener);\n    }\n\n    bindDocumentScrollListener() {\n        this.scrollListener = () => {\n            this.checkVisibility(DomHandler.getWindowScrollTop());\n        };\n\n        window.addEventListener('scroll', this.scrollListener);\n    }\n\n    unbindParentScrollListener() {\n        if (this.scrollListener) {\n            this.el.nativeElement.parentElement.removeEventListener('scroll', this.scrollListener);\n            this.scrollListener = null;\n        }\n    }\n\n    unbindDocumentScrollListener() {\n        if (this.scrollListener) {\n            window.removeEventListener('scroll', this.scrollListener);\n            this.scrollListener = null;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-scrolltop p-link p-component': true,\n            'p-scrolltop-sticky': this.target !== 'window'\n        };\n    }\n\n    ngOnDestroy() {\n        if (this.target === 'window')\n            this.unbindDocumentScrollListener();\n        else if (this.target === 'parent')\n            this.unbindParentScrollListener();\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n            this.overlay = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ScrollTop],\n    declarations: [ScrollTop]\n})\nexport class ScrollTopModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,185 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SELECTBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => SelectButton),
+    multi: true
+};
+class SelectButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.tabindex = 0;
+        this.onOptionClick = new EventEmitter();
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onItemClick(event, option, index) {
+        if (this.disabled || this.isOptionDisabled(option)) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.isSelected(option))
+                this.removeOption(option);
+            else
+                this.value = [...(this.value || []), this.getOptionValue(option)];
+        }
+        else {
+            this.value = this.getOptionValue(option);
+        }
+        this.onOptionClick.emit({
+            originalEvent: event,
+            option: option,
+            index: index
+        });
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);
+        }
+        return selected;
+    }
+}
+SelectButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SelectButton, selector: "p-selectButton", inputs: { options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", tabindex: "tabindex", multiple: "multiple", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", dataKey: "dataKey" }, outputs: { onOptionClick: "onOptionClick", onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [SELECTBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-selectButton', template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], onOptionClick: [{
+                type: Output
+            }], onChange: [{
+                type: Output
+            }], itemTemplate: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+class SelectButtonModule {
+}
+SelectButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SelectButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, declarations: [SelectButton], imports: [CommonModule, RippleModule], exports: [SelectButton] });
+SelectButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [SelectButton],
+                    declarations: [SelectButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SELECTBUTTON_VALUE_ACCESSOR, SelectButton, SelectButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-selectbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-selectbutton.mjs","sources":["../../src/app/components/selectbutton/selectbutton.ts","../../src/app/components/selectbutton/primeng-selectbutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ContentChild,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ObjectUtils} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SELECTBUTTON_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SelectButton),\n  multi: true\n};\n\n@Component({\n    selector: 'p-selectButton',\n    template: `\n        <div [ngClass]=\"'p-selectbutton p-buttonset p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\"  role=\"group\">\n            <div *ngFor=\"let option of options; let i = index\" #btn class=\"p-button p-component\" [class]=\"option.styleClass\" role=\"button\" [attr.aria-pressed]=\"isSelected(option)\"\n                [ngClass]=\"{'p-highlight':isSelected(option),\n                        'p-disabled': disabled || isOptionDisabled(option),\n                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}\"\n                (click)=\"onItemClick($event,option,i)\" (keydown.enter)=\"onItemClick($event,option,i)\"\n                [attr.title]=\"option.title\" [attr.aria-label]=\"option.label\" (blur)=\"onBlur()\" [attr.tabindex]=\"disabled ? null : tabindex\" [attr.aria-labelledby]=\"this.getOptionLabel(option)\" pRipple>\n                <ng-container *ngIf=\"!itemTemplate else customcontent\">\n                    <span [ngClass]=\"'p-button-icon p-button-icon-left'\" [class]=\"option.icon\" *ngIf=\"option.icon\"></span>\n                    <span class=\"p-button-label\">{{getOptionLabel(option)}}</span>\n                </ng-container>\n                <ng-template #customcontent>\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                </ng-template>\n            </div>\n        </div>\n    `,\n    providers: [SELECTBUTTON_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../button/button.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SelectButton implements ControlValueAccessor {\n\n    @Input() options: any[];\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() tabindex: number = 0;\n\n    @Input() multiple: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() disabled: boolean;\n\n    @Input() dataKey: string\n\n    @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(TemplateRef) itemTemplate;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public cd: ChangeDetectorRef) {}\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onItemClick(event, option: any, index: number) {\n        if (this.disabled || this.isOptionDisabled(option)) {\n            return;\n        }\n\n        if (this.multiple) {\n            if (this.isSelected(option))\n                this.removeOption(option);\n            else\n                this.value = [...(this.value||[]), this.getOptionValue(option)];\n        }\n        else {\n            this.value = this.getOptionValue(option);\n        }\n\n        this.onOptionClick.emit({\n            originalEvent: event,\n            option: option,\n            index: index\n        });\n\n        this.onModelChange(this.value);\n\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    onBlur() {\n        this.onModelTouched();\n    }\n\n    removeOption(option: any): void {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n    }\n\n    isSelected(option: any) {\n        let selected = false;\n        let optionValue = this.getOptionValue(option);\n\n        if (this.multiple) {\n            if (this.value) {\n                for (let val of this.value) {\n                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                        selected = true;\n                        break;\n                    }\n                }\n            }\n        }\n        else {\n            selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);\n        }\n\n        return selected;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [SelectButton],\n    declarations: [SelectButton]\n})\nexport class SelectButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class Sidebar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.modal = true;
+        this.dismissible = true;
+        this.showCloseIcon = true;
+        this.closeOnEscape = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._position = "left";
+        this._fullScreen = false;
+        this.transformOptions = "translate3d(-100%, 0px, 0px)";
+    }
+    ngAfterViewInit() {
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(val) {
+        this._visible = val;
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+        }
+    }
+    get fullScreen() {
+        return this._fullScreen;
+    }
+    set fullScreen(value) {
+        this._fullScreen = value;
+        if (value)
+            this.transformOptions = "none";
+    }
+    show() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);
+        }
+        if (this.modal) {
+            this.enableModality();
+        }
+        this.onShow.emit({});
+    }
+    hide() {
+        this.onHide.emit({});
+        if (this.modal) {
+            this.disableModality();
+        }
+    }
+    close(event) {
+        this.hide();
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(this.container.style.zIndex) - 1);
+            DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');
+            if (this.dismissible) {
+                this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                    if (this.dismissible) {
+                        this.close(event);
+                    }
+                });
+            }
+            document.body.appendChild(this.mask);
+            if (this.blockScroll) {
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            }
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyModal.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyModal() {
+        this.unbindMaskClickListener();
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.mask = null;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.appendContainer();
+                this.show();
+                if (this.closeOnEscape) {
+                    this.bindDocumentEscapeListener();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.hide();
+                ZIndexUtils.clear(this.container);
+                this.unbindGlobalListeners();
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                    this.close(event);
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindMaskClickListener();
+        this.unbindDocumentEscapeListener();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+        if (this.visible && this.modal) {
+            this.destroyModal();
+        }
+        if (this.appendTo && this.container) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.unbindGlobalListeners();
+        this.unbindAnimationEndListener();
+    }
+}
+Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Sidebar, selector: "p-sidebar", inputs: { appendTo: "appendTo", blockScroll: "blockScroll", style: "style", styleClass: "styleClass", ariaCloseLabel: "ariaCloseLabel", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", modal: "modal", dismissible: "dismissible", showCloseIcon: "showCloseIcon", closeOnEscape: "closeOnEscape", transitionOptions: "transitionOptions", visible: "visible", position: "position", fullScreen: "fullScreen" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('panelState', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-sidebar', template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelState', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { appendTo: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], dismissible: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }] } });
+class SidebarModule {
+}
+SidebarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SidebarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, declarations: [Sidebar], imports: [CommonModule, RippleModule], exports: [Sidebar] });
+SidebarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Sidebar],
+                    declarations: [Sidebar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Sidebar, SidebarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-sidebar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-sidebar.mjs","sources":["../../src/app/components/sidebar/sidebar.ts","../../src/app/components/sidebar/primeng-sidebar.ts"],"sourcesContent":["import { NgModule, Component, AfterViewInit, OnDestroy, Input, Output, EventEmitter, ElementRef, Renderer2, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, AfterContentInit, TemplateRef, ChangeDetectorRef } from '@angular/core';\nimport { trigger, style, transition, animate, animation, useAnimation } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { RippleModule } from 'primeng/ripple';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeNGConfig, PrimeTemplate } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}')\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-sidebar',\n    template: `\n        <div #container [ngClass]=\"{'p-sidebar':true, 'p-sidebar-active': visible,\n            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),\n            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),\n            'p-sidebar-full': fullScreen}\"  *ngIf=\"visible\" [@panelState]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@panelState.start)=\"onAnimationStart($event)\" (@panelState.done)=\"onAnimationEnd($event)\" [ngStyle]=\"style\" [class]=\"styleClass\"  role=\"complementary\" [attr.aria-modal]=\"modal\">\n            <div class=\"p-sidebar-header\">\n                <button type=\"button\" class=\"p-sidebar-close p-sidebar-icon p-link\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\" [attr.aria-label]=\"ariaCloseLabel\"  *ngIf=\"showCloseIcon\" pRipple>\n                    <span class=\"p-sidebar-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n            <div class=\"p-sidebar-content\">\n                <ng-content></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('panelState', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./sidebar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Sidebar implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() appendTo: any;\n\n    @Input() blockScroll: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaCloseLabel: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() modal: boolean = true;\n\n    @Input() dismissible: boolean = true;\n\n    @Input() showCloseIcon: boolean = true;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n    initialized: boolean;\n\n    _visible: boolean;\n\n    _position: string = \"left\";\n\n    _fullScreen: boolean = false;\n\n    container: HTMLDivElement;\n\n    transformOptions: any = \"translate3d(-100%, 0px, 0px)\";\n\n    mask: HTMLDivElement;\n\n    maskClickListener: Function;\n\n    documentEscapeListener: Function;\n\n    animationEndListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    @Input() get visible(): boolean {\n        return this._visible;\n    }\n\n    set visible(val: boolean) {\n        this._visible = val;\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n                break;\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n                break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n                break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n                break;\n        }\n    }\n\n    @Input() get fullScreen(): boolean {\n        return this._fullScreen;\n    }\n\n    set fullScreen(value: boolean) {\n        this._fullScreen = value;\n\n        if (value)\n            this.transformOptions = \"none\";\n    }\n\n    show() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);\n        }\n\n        if (this.modal) {\n            this.enableModality();\n        }\n\n        this.onShow.emit({});\n    }\n\n    hide() {\n        this.onHide.emit({});\n\n        if (this.modal) {\n            this.disableModality();\n        }\n    }\n\n    close(event: Event) {\n        this.hide();\n        this.visibleChange.emit(false);\n        event.preventDefault();\n    }\n\n    enableModality() {\n        if (!this.mask) {\n            this.mask = document.createElement('div');\n            this.mask.style.zIndex = String(parseInt(this.container.style.zIndex) - 1);\n            DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');\n\n            if (this.dismissible) {\n                this.maskClickListener = this.renderer.listen(this.mask, 'click', (event: any) => {\n                    if (this.dismissible) {\n                        this.close(event);\n                    }\n                });\n            }\n\n            document.body.appendChild(this.mask);\n            if (this.blockScroll) {\n                DomHandler.addClass(document.body, 'p-overflow-hidden');\n            }\n        }\n    }\n\n    disableModality() {\n        if (this.mask) {\n            DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n            this.animationEndListener = this.destroyModal.bind(this);\n            this.mask.addEventListener('animationend', this.animationEndListener);\n        }\n    }\n\n    destroyModal() {\n        this.unbindMaskClickListener();\n\n        if (this.mask) {\n            document.body.removeChild(this.mask);\n        }\n\n        if (this.blockScroll) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.unbindAnimationEndListener();\n        this.mask = null;\n    }\n\n    onAnimationStart(event) {\n        switch (event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.appendContainer();\n                this.show();\n\n                if (this.closeOnEscape) {\n                    this.bindDocumentEscapeListener();\n                }\n                break;\n        }\n    }\n\n    onAnimationEnd(event) {\n        switch (event.toState) {\n            case 'void':\n                this.hide();\n                ZIndexUtils.clear(this.container);\n                this.unbindGlobalListeners();\n            break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    bindDocumentEscapeListener() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                if (parseInt(this.container.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {\n                    this.close(event);\n                }\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindMaskClickListener();\n        this.unbindDocumentEscapeListener();\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.initialized = false;\n\n        if (this.visible && this.modal) {\n            this.destroyModal();\n        }\n\n        if (this.appendTo && this.container) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.container = null;\n        this.unbindGlobalListeners();\n        this.unbindAnimationEndListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, RippleModule],\n    exports: [Sidebar],\n    declarations: [Sidebar]\n})\nexport class SidebarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,77 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Skeleton {
+    constructor() {
+        this.shape = "rectangle";
+        this.animation = "wave";
+        this.borderRadius = null;
+        this.size = null;
+        this.width = "100%";
+        this.height = "1rem";
+    }
+    containerClass() {
+        return {
+            'p-skeleton p-component': true,
+            'p-skeleton-circle': this.shape === 'circle',
+            'p-skeleton-none': this.animation === 'none'
+        };
+    }
+    containerStyle() {
+        if (this.size)
+            return Object.assign(Object.assign({}, this.style), { width: this.size, height: this.size, borderRadius: this.borderRadius });
+        else
+            return Object.assign(Object.assign({}, this.style), { width: this.width, height: this.height, borderRadius: this.borderRadius });
+    }
+}
+Skeleton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Skeleton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Skeleton, selector: "p-skeleton", inputs: { styleClass: "styleClass", style: "style", shape: "shape", animation: "animation", borderRadius: "borderRadius", size: "size", width: "width", height: "height" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, isInline: true, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-skeleton', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], animation: [{
+                type: Input
+            }], borderRadius: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }] } });
+class SkeletonModule {
+}
+SkeletonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SkeletonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, declarations: [Skeleton], imports: [CommonModule], exports: [Skeleton] });
+SkeletonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Skeleton],
+                    declarations: [Skeleton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Skeleton, SkeletonModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-skeleton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-skeleton.mjs","sources":["../../src/app/components/skeleton/skeleton.ts","../../src/app/components/skeleton/primeng-skeleton.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-skeleton',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"containerStyle()\">\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./skeleton.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Skeleton {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() shape: string = \"rectangle\";\n\n    @Input() animation: string = \"wave\";\n\n    @Input() borderRadius: string = null;\n\n    @Input() size: string = null;\n\n    @Input() width: string = \"100%\";\n\n    @Input() height: string = \"1rem\";\n\n    containerClass() {\n        return {\n            'p-skeleton p-component': true,\n            'p-skeleton-circle': this.shape === 'circle',\n            'p-skeleton-none': this.animation === 'none'\n        };\n    }\n\n    containerStyle() {\n        if (this.size)\n                return {...this.style, width: this.size, height: this.size, borderRadius: this.borderRadius};\n            else\n                return {...this.style, width: this.width, height: this.height, borderRadius: this.borderRadius};\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Skeleton],\n    declarations: [Skeleton]\n})\nexport class SkeletonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAgBa,QAAQ;IAbrB;QAmBa,UAAK,GAAW,WAAW,CAAC;QAE5B,cAAS,GAAW,MAAM,CAAC;QAE3B,iBAAY,GAAW,IAAI,CAAC;QAE5B,SAAI,GAAW,IAAI,CAAC;QAEpB,UAAK,GAAW,MAAM,CAAC;QAEvB,WAAM,GAAW,MAAM,CAAC;KAgBpC;IAdG,cAAc;QACV,OAAO;YACH,wBAAwB,EAAE,IAAI;YAC9B,mBAAmB,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC5C,iBAAiB,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM;SAC/C,CAAC;KACL;IAED,cAAc;QACV,IAAI,IAAI,CAAC,IAAI;YACL,uCAAW,IAAI,CAAC,KAAK,KAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAE;;YAE7F,uCAAW,IAAI,CAAC,KAAK,KAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAE;KAC3G;;qGA/BQ,QAAQ;yFAAR,QAAQ,qQAXP;;;KAGT;2FAQQ,QAAQ;kBAbpB,SAAS;+BACI,YAAY,YACZ;;;KAGT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;;MAuBG,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAvCd,QAAQ,aAmCP,YAAY,aAnCb,QAAQ;4GAuCR,cAAc,YAJd,CAAC,YAAY,CAAC;2FAId,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;ACtDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,485 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i4 from 'primeng/api';
+
+class SlideMenuSub {
+    constructor(slideMenu) {
+        this.backLabel = 'Back';
+        this.easing = 'ease-out';
+        this.slideMenu = slideMenu;
+    }
+    itemClick(event, item, listitem) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items && !this.slideMenu.animating) {
+            this.slideMenu.left -= this.slideMenu.menuWidth;
+            this.activeItem = listitem;
+            this.slideMenu.animating = true;
+            setTimeout(() => this.slideMenu.animating = false, this.effectDuration);
+        }
+        if (!item.items && this.slideMenu.popup) {
+            this.slideMenu.hide();
+        }
+    }
+    focusNextList(listitem) {
+        if (!this.slideMenu.animating) {
+            let focusableElements = DomHandler.getFocusableElements(listitem);
+            if (focusableElements && focusableElements.length > 0) {
+                focusableElements[0].focus();
+            }
+            this.unbindTransitionEndListener();
+        }
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                    this.transitionEndListener = this.focusNextList.bind(this, listItem);
+                    this.sublistViewChild.nativeElement.addEventListener('transitionend', this.transitionEndListener);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    unbindTransitionEndListener() {
+        if (this.transitionEndListener && this.sublistViewChild) {
+            this.sublistViewChild.nativeElement.removeEventListener('transitionend', this.transitionEndListener);
+            this.transitionEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.activeItem = null;
+        this.unbindTransitionEndListener();
+    }
+    get isActive() {
+        return -this.slideMenu.left == (this.index * this.menuWidth);
+    }
+}
+SlideMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, deps: [{ token: forwardRef(() => SlideMenu) }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenuSub, selector: "p-slideMenuSub", inputs: { item: "item", root: "root", backLabel: "backLabel", menuWidth: "menuWidth", effectDuration: "effectDuration", easing: "easing", index: "index" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-slideMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => SlideMenu)]
+                    }] }];
+    }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }] } });
+class SlideMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.menuWidth = 190;
+        this.viewportHeight = 180;
+        this.effectDuration = 250;
+        this.easing = 'ease-out';
+        this.backLabel = 'Back';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.left = 0;
+        this.animating = false;
+    }
+    ngAfterViewChecked() {
+        if (!this.viewportUpdated && !this.popup && this.containerViewChild) {
+            this.updateViewPort();
+            this.viewportUpdated = true;
+        }
+    }
+    set container(element) {
+        this.containerViewChild = element;
+    }
+    set backward(element) {
+        this.backwardViewChild = element;
+    }
+    set slideMenuContent(element) {
+        this.slideMenuContentViewChild = element;
+    }
+    updateViewPort() {
+        this.slideMenuContentViewChild.nativeElement.style.height = this.viewportHeight - DomHandler.getHiddenElementOuterHeight(this.backwardViewChild.nativeElement) + 'px';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.updateViewPort();
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.containerViewChild.nativeElement, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    goBack() {
+        this.left += this.menuWidth;
+    }
+    onBackwardKeydown(event) {
+        this.goBack();
+        if (!this.left) {
+            setTimeout(() => {
+                let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+                if (focusableElements && focusableElements.length > 0) {
+                    focusableElements[0].focus();
+                }
+            }, 1);
+        }
+        event.preventDefault();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                    this.cd.detectChanges();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+        this.left = 0;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+SlideMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenu, selector: "p-slideMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", menuWidth: "menuWidth", viewportHeight: "viewportHeight", effectDuration: "effectDuration", easing: "easing", backLabel: "backLabel", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "backward", first: true, predicate: ["backward"], descendants: true }, { propertyName: "slideMenuContent", first: true, predicate: ["slideMenuContent"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"], components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slideMenu', template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], viewportHeight: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], backward: [{
+                type: ViewChild,
+                args: ['backward']
+            }], slideMenuContent: [{
+                type: ViewChild,
+                args: ['slideMenuContent']
+            }] } });
+class SlideMenuModule {
+}
+SlideMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SlideMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, declarations: [SlideMenu, SlideMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [SlideMenu, RouterModule, TooltipModule] });
+SlideMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [SlideMenu, RouterModule, TooltipModule],
+                    declarations: [SlideMenu, SlideMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SlideMenu, SlideMenuModule, SlideMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-slidemenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-slidemenu.mjs","sources":["../../src/app/components/slidemenu/slidemenu.ts","../../src/app/components/slidemenu/primeng-slidemenu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,OnDestroy,Input,Renderer2,Inject,forwardRef,ViewChild,Output,EventEmitter,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {MenuItem, OverlayService, PrimeNGConfig} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-slideMenuSub',\n    template: `\n        <ul #sublist [ngClass]=\"{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}\"\n            [style.width.px]=\"menuWidth\" [style.left.px]=\"root ? slideMenu.left : slideMenu.menuWidth\"\n            [style.transitionProperty]=\"root ? 'left' : 'none'\" [style.transitionDuration]=\"effectDuration + 'ms'\" [style.transitionTimingFunction]=\"easing\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\">\n                <li *ngIf=\"!child.separator\" #listitem [ngClass]=\"{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}\" pTooltip [tooltipOptions]=\"child.tooltipOptions\"\n                    [class]=\"child.styleClass\" [ngStyle]=\"child.style\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [attr.href]=\"child.url\" class=\"p-menuitem-link\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" [attr.tabindex]=\"child.disabled || !isActive ? null : '0'\"\n                        (click)=\"itemClick($event, child, listitem)\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-fw pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"\n                        [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" [href]=\"child.url\" class=\"p-menuitem-link\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled || !isActive ? null : '0'\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\"\n                        (click)=\"itemClick($event, child, listitem)\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-fw pi-caret-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-slideMenuSub class=\"p-submenu\" [item]=\"child\" [index]=\"index + 1\" [menuWidth]=\"menuWidth\" *ngIf=\"child.items\"></p-slideMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SlideMenuSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() backLabel: string = 'Back';\n\n    @Input() menuWidth: number;\n\n    @Input() effectDuration: any;\n\n    @Input() easing: string = 'ease-out';\n\n    @Input() index: number;\n\n    @ViewChild('sublist') sublistViewChild: ElementRef;\n\n    slideMenu: SlideMenu;\n\n    transitionEndListener: any;\n\n    constructor(@Inject(forwardRef(() => SlideMenu)) slideMenu) {\n        this.slideMenu = slideMenu as SlideMenu;\n    }\n    activeItem: any;\n\n    itemClick(event, item: MenuItem, listitem: any) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items && !this.slideMenu.animating) {\n            this.slideMenu.left -= this.slideMenu.menuWidth;\n\n            this.activeItem = listitem;\n            this.slideMenu.animating = true;\n            setTimeout(() => this.slideMenu.animating = false, this.effectDuration);\n        }\n\n        if (!item.items && this.slideMenu.popup) {\n            this.slideMenu.hide();\n        }\n    }\n\n    focusNextList(listitem) {\n        if (!this.slideMenu.animating) {\n            let focusableElements = DomHandler.getFocusableElements(listitem);\n\n            if (focusableElements && focusableElements.length > 0) {\n                focusableElements[0].focus();\n            }\n\n            this.unbindTransitionEndListener();\n        }\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.children[0].click();\n                    this.transitionEndListener = this.focusNextList.bind(this,listItem);\n                    this.sublistViewChild.nativeElement.addEventListener('transitionend', this.transitionEndListener);\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    unbindTransitionEndListener() {\n        if (this.transitionEndListener && this.sublistViewChild) {\n            this.sublistViewChild.nativeElement.removeEventListener('transitionend', this.transitionEndListener);\n            this.transitionEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.activeItem = null;\n        this.unbindTransitionEndListener();\n    }\n\n    get isActive() {\n        return -this.slideMenu.left == (this.index * this.menuWidth)\n    }\n}\n\n@Component({\n    selector: 'p-slideMenu',\n    template: `\n        <div #container [ngClass]=\"{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}\"\n            [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\"\n            (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" *ngIf=\"!popup || visible\">\n            <div class=\"p-slidemenu-wrapper\" [style.height]=\"left ? viewportHeight + 'px' : 'auto'\" [style.width]=\"menuWidth + 'px'\">\n                <div #slideMenuContent class=\"p-slidemenu-content\">\n                    <p-slideMenuSub [item]=\"model\" root=\"root\" [index]=\"0\" [menuWidth]=\"menuWidth\" [effectDuration]=\"effectDuration\" [easing]=\"easing\"></p-slideMenuSub>\n                </div>\n                <a #backward (keydown.enter)=\"onBackwardKeydown($event)\" (keydown.space)=\"onBackwardKeydown($event)\" class=\"p-slidemenu-backward p-menuitem-link\" tabindex=\"0\" [style.display]=\"left ? 'block' : 'none'\" (click)=\"goBack()\">\n                    <span class=\"p-slidemenu-backward-icon pi pi-fw pi-caret-left\"></span><span>{{backLabel}}</span>\n                </a>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./slidemenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SlideMenu implements AfterViewChecked, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() menuWidth: number = 190;\n\n    @Input() viewportHeight: number = 180;\n\n    @Input() effectDuration: any = 250;\n\n    @Input() easing: string = 'ease-out';\n\n    @Input() backLabel: string = 'Back';\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    containerViewChild: ElementRef;\n\n    backwardViewChild: ElementRef;\n\n    slideMenuContentViewChild: ElementRef;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    scrollHandler: any;\n\n    left: number = 0;\n\n    animating: boolean = false;\n\n    target: any;\n\n    visible: boolean;\n\n    viewportUpdated: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterViewChecked() {\n        if (!this.viewportUpdated && !this.popup && this.containerViewChild) {\n            this.updateViewPort();\n            this.viewportUpdated = true;\n        }\n    }\n\n    @ViewChild('container') set container(element: ElementRef) {\n        this.containerViewChild = element;\n    }\n\n    @ViewChild('backward') set backward(element: ElementRef) {\n        this.backwardViewChild = element;\n    }\n\n    @ViewChild('slideMenuContent') set slideMenuContent(element: ElementRef) {\n        this.slideMenuContentViewChild = element;\n    }\n\n    updateViewPort() {\n        this.slideMenuContentViewChild.nativeElement.style.height = this.viewportHeight - DomHandler.getHiddenElementOuterHeight(this.backwardViewChild.nativeElement) + 'px';\n    }\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.visible = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.updateViewPort();\n                    this.moveOnTop();\n                    this.onShow.emit({});\n                    this.appendOverlay();\n                    DomHandler.absolutePosition(this.containerViewChild.nativeElement, this.target);\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit({});\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.containerViewChild.nativeElement);\n            else\n                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    goBack() {\n        this.left += this.menuWidth;\n    }\n\n    onBackwardKeydown(event) {\n        this.goBack();\n\n        if (!this.left) {\n            setTimeout(() => {\n                let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);\n\n                if (focusableElements && focusableElements.length > 0) {\n                    focusableElements[0].focus();\n                }\n            }, 1);\n        }\n\n        event.preventDefault();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault) {\n                    this.hide();\n                    this.cd.detectChanges();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n        this.left = 0;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [SlideMenu,RouterModule,TooltipModule],\n    declarations: [SlideMenu,SlideMenuSub]\n})\nexport class SlideMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,438 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SLIDER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Slider),
+    multi: true
+};
+class Slider {
+    constructor(el, renderer, ngZone, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.ngZone = ngZone;
+        this.cd = cd;
+        this.min = 0;
+        this.max = 100;
+        this.orientation = 'horizontal';
+        this.tabindex = 0;
+        this.onChange = new EventEmitter();
+        this.onSlideEnd = new EventEmitter();
+        this.handleValues = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.handleIndex = 0;
+    }
+    onMouseDown(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = true;
+        this.updateDomData();
+        this.sliderHandleClick = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        this.bindDragListeners();
+        event.target.focus();
+        event.preventDefault();
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+    }
+    onTouchStart(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0];
+        this.startHandleValue = (this.range) ? this.handleValues[index] : this.handleValue;
+        this.dragging = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        if (this.orientation === 'horizontal') {
+            this.startx = parseInt(touchobj.clientX, 10);
+            this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        }
+        else {
+            this.starty = parseInt(touchobj.clientY, 10);
+            this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+        }
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onTouchMove(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0], handleValue = 0;
+        if (this.orientation === 'horizontal') {
+            handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / (this.barWidth)) + this.startHandleValue;
+        }
+        else {
+            handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / (this.barHeight)) + this.startHandleValue;
+        }
+        this.setValueFromHandle(event, handleValue);
+        event.preventDefault();
+    }
+    onTouchEnd(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = false;
+        if (this.range)
+            this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+        else
+            this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+        if (this.animate) {
+            DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onBarClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.sliderHandleClick) {
+            this.updateDomData();
+            this.handleChange(event);
+        }
+        this.sliderHandleClick = false;
+    }
+    onHandleKeydown(event, handleIndex) {
+        if (this.disabled) {
+            return;
+        }
+        if (event.which == 38 || event.which == 39) {
+            this.spin(event, 1, handleIndex);
+        }
+        else if (event.which == 37 || event.which == 40) {
+            this.spin(event, -1, handleIndex);
+        }
+    }
+    spin(event, dir, handleIndex) {
+        let step = (this.step || 1) * dir;
+        if (this.range) {
+            this.handleIndex = handleIndex;
+            this.updateValue(this.values[this.handleIndex] + step);
+            this.updateHandleValue();
+        }
+        else {
+            this.updateValue(this.value + step);
+            this.updateHandleValue();
+        }
+        event.preventDefault();
+    }
+    handleChange(event) {
+        let handleValue = this.calculateHandleValue(event);
+        this.setValueFromHandle(event, handleValue);
+    }
+    bindDragListeners() {
+        this.ngZone.runOutsideAngular(() => {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            if (!this.dragListener) {
+                this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                    if (this.dragging) {
+                        this.ngZone.run(() => {
+                            this.handleChange(event);
+                        });
+                    }
+                });
+            }
+            if (!this.mouseupListener) {
+                this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {
+                    if (this.dragging) {
+                        this.dragging = false;
+                        this.ngZone.run(() => {
+                            if (this.range)
+                                this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+                            else
+                                this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+                            if (this.animate) {
+                                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+                            }
+                        });
+                    }
+                });
+            }
+        });
+    }
+    unbindDragListeners() {
+        if (this.dragListener) {
+            this.dragListener();
+        }
+        if (this.mouseupListener) {
+            this.mouseupListener();
+        }
+    }
+    setValueFromHandle(event, handleValue) {
+        this.sliderHandleClick = false;
+        let newValue = this.getValueFromHandle(handleValue);
+        if (this.range) {
+            if (this.step) {
+                this.handleStepChange(newValue, this.values[this.handleIndex]);
+            }
+            else {
+                this.handleValues[this.handleIndex] = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        else {
+            if (this.step) {
+                this.handleStepChange(newValue, this.value);
+            }
+            else {
+                this.handleValue = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        this.cd.markForCheck();
+    }
+    handleStepChange(newValue, oldValue) {
+        let diff = (newValue - oldValue);
+        let val = oldValue;
+        if (diff < 0) {
+            val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        else if (diff > 0) {
+            val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        this.updateValue(val);
+        this.updateHandleValue();
+    }
+    writeValue(value) {
+        if (this.range)
+            this.values = value || [0, 0];
+        else
+            this.value = value || 0;
+        this.updateHandleValue();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get rangeStartLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[0] + '%';
+    }
+    get rangeStartBottom() {
+        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';
+    }
+    get rangeEndLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[1] + '%';
+    }
+    get rangeEndBottom() {
+        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    updateDomData() {
+        let rect = this.el.nativeElement.children[0].getBoundingClientRect();
+        this.initX = rect.left + DomHandler.getWindowScrollLeft();
+        this.initY = rect.top + DomHandler.getWindowScrollTop();
+        this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+    }
+    calculateHandleValue(event) {
+        if (this.orientation === 'horizontal')
+            return ((event.pageX - this.initX) * 100) / (this.barWidth);
+        else
+            return (((this.initY + this.barHeight) - event.pageY) * 100) / (this.barHeight);
+    }
+    updateHandleValue() {
+        if (this.range) {
+            this.handleValues[0] = (this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100 / (this.max - this.min);
+            this.handleValues[1] = (this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100 / (this.max - this.min);
+        }
+        else {
+            if (this.value < this.min)
+                this.handleValue = 0;
+            else if (this.value > this.max)
+                this.handleValue = 100;
+            else
+                this.handleValue = (this.value - this.min) * 100 / (this.max - this.min);
+        }
+    }
+    updateValue(val, event) {
+        if (this.range) {
+            let value = val;
+            if (this.handleIndex == 0) {
+                if (value < this.min) {
+                    value = this.min;
+                    this.handleValues[0] = 0;
+                }
+                else if (value > this.values[1]) {
+                    value = this.values[1];
+                    this.handleValues[0] = this.handleValues[1];
+                }
+                this.sliderHandleStart.nativeElement.focus();
+            }
+            else {
+                if (value > this.max) {
+                    value = this.max;
+                    this.handleValues[1] = 100;
+                }
+                else if (value < this.values[0]) {
+                    value = this.values[0];
+                    this.handleValues[1] = this.handleValues[0];
+                }
+                this.sliderHandleEnd.nativeElement.focus();
+            }
+            this.values[this.handleIndex] = this.getNormalizedValue(value);
+            this.values = this.values.slice();
+            this.onModelChange(this.values);
+            this.onChange.emit({ event: event, values: this.values });
+        }
+        else {
+            if (val < this.min) {
+                val = this.min;
+                this.handleValue = 0;
+            }
+            else if (val > this.max) {
+                val = this.max;
+                this.handleValue = 100;
+            }
+            this.value = this.getNormalizedValue(val);
+            this.onModelChange(this.value);
+            this.onChange.emit({ event: event, value: this.value });
+            this.sliderHandle.nativeElement.focus();
+        }
+    }
+    getValueFromHandle(handleValue) {
+        return (this.max - this.min) * (handleValue / 100) + this.min;
+    }
+    getDecimalsCount(value) {
+        if (value && Math.floor(value) !== value)
+            return value.toString().split(".")[1].length || 0;
+        return 0;
+    }
+    getNormalizedValue(val) {
+        let decimalsCount = this.getDecimalsCount(this.step);
+        if (decimalsCount > 0) {
+            return +val.toFixed(decimalsCount);
+        }
+        else {
+            return Math.floor(val);
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDragListeners();
+    }
+}
+Slider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Slider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Slider, selector: "p-slider", inputs: { animate: "animate", disabled: "disabled", min: "min", max: "max", orientation: "orientation", step: "step", range: "range", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex" }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "p-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, isInline: true, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slider', template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, providers: [SLIDER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { animate: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], range: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onSlideEnd: [{
+                type: Output
+            }], sliderHandle: [{
+                type: ViewChild,
+                args: ["sliderHandle"]
+            }], sliderHandleStart: [{
+                type: ViewChild,
+                args: ["sliderHandleStart"]
+            }], sliderHandleEnd: [{
+                type: ViewChild,
+                args: ["sliderHandleEnd"]
+            }] } });
+class SliderModule {
+}
+SliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });
+SliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Slider],
+                    declarations: [Slider]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SLIDER_VALUE_ACCESSOR, Slider, SliderModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-slider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/primeng-slider.ts"],"sourcesContent":["import {NgModule, Component, ElementRef, OnDestroy, Input, Output, EventEmitter, forwardRef, Renderer2,NgZone,ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Slider),\n  multi: true\n};\n\n@Component({\n    selector: 'p-slider',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-slider p-component':true,'p-disabled':disabled,\n            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}\"\n            (click)=\"onBarClick($event)\">\n            <span *ngIf=\"range && orientation == 'horizontal'\" class=\"p-slider-range\" [ngStyle]=\"{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}\"></span>\n            <span *ngIf=\"range && orientation == 'vertical'\" class=\"p-slider-range\" [ngStyle]=\"{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}\"></span>\n            <span *ngIf=\"!range && orientation=='vertical'\" class=\"p-slider-range\" [ngStyle]=\"{'height': handleValue + '%'}\"></span>\n            <span *ngIf=\"!range && orientation=='horizontal'\" class=\"p-slider-range\" [ngStyle]=\"{'width': handleValue + '%'}\"></span>\n            <span #sliderHandle *ngIf=\"!range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event)\" class=\"p-slider-handle\" (mousedown)=\"onMouseDown($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\"\n                [style.transition]=\"dragging ? 'none': null\" [ngStyle]=\"{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n            <span #sliderHandleStart *ngIf=\"range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event,0)\" (mousedown)=\"onMouseDown($event,0)\" (touchstart)=\"onTouchStart($event,0)\" (touchmove)=\"onTouchMove($event,0)\" (touchend)=\"onTouchEnd($event)\" [style.transition]=\"dragging ? 'none': null\" class=\"p-slider-handle\"\n                [ngStyle]=\"{'left': rangeStartLeft, 'bottom': rangeStartBottom}\" [ngClass]=\"{'p-slider-handle-active':handleIndex==0}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value ? value[0] : null\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n            <span #sliderHandleEnd *ngIf=\"range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event,1)\" (mousedown)=\"onMouseDown($event,1)\" (touchstart)=\"onTouchStart($event,1)\" (touchmove)=\"onTouchMove($event,1)\" (touchend)=\"onTouchEnd($event)\" [style.transition]=\"dragging ? 'none': null\" class=\"p-slider-handle\"\n                [ngStyle]=\"{'left': rangeEndLeft, 'bottom': rangeEndBottom}\" [ngClass]=\"{'p-slider-handle-active':handleIndex==1}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value ? value[1] : null\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n        </div>\n    `,\n    providers: [SLIDER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./slider.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Slider implements OnDestroy,ControlValueAccessor {\n\n    @Input() animate: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() min: number = 0;\n\n    @Input() max: number = 100;\n\n    @Input() orientation: string = 'horizontal';\n\n    @Input() step: number;\n\n    @Input() range: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number = 0;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSlideEnd: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild(\"sliderHandle\") sliderHandle: ElementRef;\n\n    @ViewChild(\"sliderHandleStart\") sliderHandleStart: ElementRef;\n\n    @ViewChild(\"sliderHandleEnd\") sliderHandleEnd: ElementRef;\n\n    public value: number;\n\n    public values: number[];\n\n    public handleValue: number;\n\n    public handleValues: number[] = [];\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public dragging: boolean;\n\n    public dragListener: any;\n\n    public mouseupListener: any;\n\n    public initX: number;\n\n    public initY: number;\n\n    public barWidth: number;\n\n    public barHeight: number;\n\n    public sliderHandleClick: boolean;\n\n    public handleIndex: number = 0;\n\n    public startHandleValue: any;\n\n    public startx: number;\n\n    public starty: number;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private ngZone: NgZone, public cd: ChangeDetectorRef) {}\n\n    onMouseDown(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = true;\n        this.updateDomData();\n        this.sliderHandleClick = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        }\n        else {\n            this.handleIndex = index;\n        }\n\n        this.bindDragListeners();\n        event.target.focus();\n        event.preventDefault();\n\n        if (this.animate) {\n            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n    }\n\n    onTouchStart(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0];\n        this.startHandleValue = (this.range) ? this.handleValues[index] : this.handleValue;\n        this.dragging = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        }\n        else {\n            this.handleIndex = index;\n        }\n\n        if (this.orientation === 'horizontal') {\n            this.startx = parseInt(touchobj.clientX, 10);\n            this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        }\n        else {\n            this.starty = parseInt(touchobj.clientY, 10);\n            this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n        }\n\n        if (this.animate) {\n            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onTouchMove(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0],\n        handleValue = 0;\n\n        if (this.orientation === 'horizontal') {\n            handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / (this.barWidth)) + this.startHandleValue;\n        }\n        else {\n            handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / (this.barHeight))  + this.startHandleValue;\n        }\n\n        this.setValueFromHandle(event, handleValue);\n\n        event.preventDefault();\n    }\n\n    onTouchEnd(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = false;\n\n        if (this.range)\n            this.onSlideEnd.emit({originalEvent: event, values: this.values});\n        else\n            this.onSlideEnd.emit({originalEvent: event, value: this.value});\n\n        if (this.animate) {\n            DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onBarClick(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!this.sliderHandleClick) {\n            this.updateDomData();\n            this.handleChange(event);\n        }\n\n        this.sliderHandleClick = false;\n    }\n\n    onHandleKeydown(event, handleIndex?:number) {\n        if (this.disabled) {\n            return;\n        }\n        if (event.which == 38 || event.which == 39) {\n            this.spin(event, 1, handleIndex);\n        }\n        else if (event.which == 37 || event.which == 40) {\n            this.spin(event, -1, handleIndex);\n        }\n    }\n\n    spin(event, dir: number, handleIndex?:number) {\n        let step = (this.step || 1) * dir;\n\n        if (this.range) {\n            this.handleIndex = handleIndex;\n            this.updateValue(this.values[this.handleIndex] + step);\n            this.updateHandleValue();\n        }\n        else {\n            this.updateValue(this.value + step);\n            this.updateHandleValue();\n        }\n\n        event.preventDefault();\n    }\n\n    handleChange(event: Event) {\n        let handleValue = this.calculateHandleValue(event);\n        this.setValueFromHandle(event, handleValue);\n    }\n\n    bindDragListeners() {\n        this.ngZone.runOutsideAngular(() => {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            if (!this.dragListener) {\n                this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n                    if (this.dragging) {\n                        this.ngZone.run(() => {\n                            this.handleChange(event);\n                        });\n                    }\n                });\n            }\n\n            if (!this.mouseupListener) {\n                this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n                    if (this.dragging) {\n                        this.dragging = false;\n                        this.ngZone.run(() => {\n                            if (this.range)\n                                this.onSlideEnd.emit({originalEvent: event, values: this.values});\n                            else\n                                this.onSlideEnd.emit({originalEvent: event, value: this.value});\n\n                            if (this.animate) {\n                                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n                            }\n                        });\n                    }\n                });\n            }\n        });\n    }\n\n    unbindDragListeners() {\n        if (this.dragListener) {\n            this.dragListener();\n        }\n\n        if (this.mouseupListener) {\n            this.mouseupListener();\n        }\n    }\n\n    setValueFromHandle(event: Event, handleValue: any) {\n        this.sliderHandleClick = false;\n        let newValue = this.getValueFromHandle(handleValue);\n\n        if (this.range) {\n            if (this.step) {\n                this.handleStepChange(newValue, this.values[this.handleIndex]);\n            }\n            else {\n                this.handleValues[this.handleIndex] = handleValue;\n                this.updateValue(newValue, event);\n            }\n        }\n        else {\n            if (this.step) {\n                this.handleStepChange(newValue, this.value);\n            }\n            else {\n                this.handleValue = handleValue;\n                this.updateValue(newValue, event);\n            }\n        }\n\n        this.cd.markForCheck();\n    }\n\n    handleStepChange(newValue: number, oldValue: number) {\n        let diff = (newValue - oldValue);\n        let val = oldValue;\n\n        if (diff < 0) {\n            val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;\n        }\n        else if (diff > 0) {\n            val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;\n        }\n\n        this.updateValue(val);\n        this.updateHandleValue();\n    }\n\n    writeValue(value: any) : void {\n        if (this.range)\n            this.values = value||[0,0];\n        else\n            this.value = value||0;\n\n        this.updateHandleValue();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get rangeStartLeft() {\n        return this.isVertical() ? 'auto' : this.handleValues[0] + '%';\n    }\n\n    get rangeStartBottom() {\n        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n    }\n\n    get rangeEndLeft() {\n        return this.isVertical() ? 'auto' : this.handleValues[1] + '%';\n    }\n\n    get rangeEndBottom() {\n        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n    }\n\n    isVertical(): boolean {\n        return this.orientation === 'vertical';\n    }\n\n    updateDomData(): void {\n        let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n        this.initX = rect.left + DomHandler.getWindowScrollLeft();\n        this.initY = rect.top + DomHandler.getWindowScrollTop();\n        this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n    }\n\n    calculateHandleValue(event): number {\n        if (this.orientation === 'horizontal')\n            return ((event.pageX - this.initX) * 100) / (this.barWidth);\n        else\n            return(((this.initY + this.barHeight) - event.pageY) * 100) / (this.barHeight);\n    }\n\n    updateHandleValue(): void {\n        if (this.range) {\n            this.handleValues[0] = (this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100 / (this.max - this.min);\n            this.handleValues[1] = (this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100 / (this.max - this.min);\n        }\n        else {\n            if (this.value < this.min)\n                this.handleValue = 0;\n            else if (this.value > this.max)\n                this.handleValue = 100;\n            else\n                this.handleValue = (this.value - this.min) * 100 / (this.max - this.min);\n        }\n    }\n\n    updateValue(val: number, event?: Event): void {\n        if (this.range) {\n            let value = val;\n\n            if (this.handleIndex == 0) {\n                if (value < this.min) {\n                    value = this.min;\n                    this.handleValues[0] = 0;\n                }\n                else if (value > this.values[1]) {\n                    value = this.values[1];\n                    this.handleValues[0] = this.handleValues[1];\n                }\n\n                this.sliderHandleStart.nativeElement.focus();\n            }\n            else {\n                if (value > this.max) {\n                    value = this.max;\n                    this.handleValues[1] = 100;\n                }\n                else if (value < this.values[0]) {\n                    value = this.values[0];\n                    this.handleValues[1] = this.handleValues[0];\n                }\n\n                this.sliderHandleEnd.nativeElement.focus();\n            }\n\n            this.values[this.handleIndex] = this.getNormalizedValue(value);\n            this.values = this.values.slice();\n            this.onModelChange(this.values);\n            this.onChange.emit({event: event, values: this.values});\n        }\n        else {\n            if (val < this.min) {\n                val = this.min;\n                this.handleValue = 0;\n            }\n            else if (val > this.max) {\n                val = this.max;\n                this.handleValue = 100;\n            }\n\n\t\t\tthis.value = this.getNormalizedValue(val);\n\n            this.onModelChange(this.value);\n            this.onChange.emit({event: event, value: this.value});\n            this.sliderHandle.nativeElement.focus();\n        }\n    }\n\n    getValueFromHandle(handleValue: number): number {\n        return (this.max - this.min) * (handleValue / 100) + this.min;\n    }\n\n\tgetDecimalsCount(value: number): number {\n\t\tif (value && Math.floor(value) !== value)\n\t\t\treturn value.toString().split(\".\")[1].length || 0;\n\t\treturn 0;\n\t}\n\n\tgetNormalizedValue(val: number): number {\n\t\tlet decimalsCount = this.getDecimalsCount(this.step);\n\t\tif (decimalsCount > 0) {\n\t\t\treturn +val.toFixed(decimalsCount);\n\t\t}\n\t\telse {\n\t\t\treturn Math.floor(val);\n\t\t}\n\t}\n\n    ngOnDestroy() {\n        this.unbindDragListeners();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Slider],\n    declarations: [Slider]\n})\nexport class SliderModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,335 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from '@angular/router';
+import { RouterModule } from '@angular/router';
+
+class SpeedDial {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.direction = 'up';
+        this.transitionDelay = 30;
+        this.type = 'linear';
+        this.radius = 0;
+        this.mask = false;
+        this.disabled = false;
+        this.hideOnClickOutside = true;
+        this.showIcon = 'pi pi-plus';
+        this.rotateAnimation = true;
+        this.onVisibleChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.isItemClicked = false;
+        this._visible = false;
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible) {
+            this.bindDocumentClickListener();
+        }
+        else {
+            this.unbindDocumentClickListener();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.type !== 'linear') {
+            const button = DomHandler.findSingle(this.container.nativeElement, '.p-speeddial-button');
+            const firstItem = DomHandler.findSingle(this.list.nativeElement, '.p-speeddial-item');
+            if (button && firstItem) {
+                const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);
+                const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);
+                this.list.nativeElement.style.setProperty('--item-diff-x', `${wDiff / 2}px`);
+                this.list.nativeElement.style.setProperty('--item-diff-y', `${hDiff / 2}px`);
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'button':
+                    this.buttonTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    show() {
+        this.onVisibleChange.emit(true);
+        this.visibleChange.emit(true);
+        this._visible = true;
+        this.onShow.emit();
+        this.bindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    hide() {
+        this.onVisibleChange.emit(false);
+        this.visibleChange.emit(false);
+        this._visible = false;
+        this.onHide.emit();
+        this.unbindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    onButtonClick(event) {
+        this.visible ? this.hide() : this.show();
+        this.onClick.emit(event);
+        this.isItemClicked = true;
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+        this.hide();
+        this.isItemClicked = true;
+    }
+    calculatePointStyle(index) {
+        const type = this.type;
+        if (type !== 'linear') {
+            const length = this.model.length;
+            const radius = this.radius || (length * 20);
+            if (type === 'circle') {
+                const step = 2 * Math.PI / length;
+                return {
+                    left: `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`,
+                    top: `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`,
+                };
+            }
+            else if (type === 'semi-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (length - 1);
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down') {
+                    return { left: x, top: y };
+                }
+                else if (direction === 'left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'right') {
+                    return { left: y, top: x };
+                }
+            }
+            else if (type === 'quarter-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (2 * (length - 1));
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up-left') {
+                    return { right: x, bottom: y };
+                }
+                else if (direction === 'up-right') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down-left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'down-right') {
+                    return { left: y, top: x };
+                }
+            }
+        }
+        return {};
+    }
+    calculateTransitionDelay(index) {
+        const length = this.model.length;
+        return (this.visible ? index : length - index - 1) * this.transitionDelay;
+    }
+    containerClass() {
+        return {
+            ['p-speeddial p-component' + ` p-speeddial-${this.type}`]: true,
+            [`p-speeddial-direction-${this.direction}`]: this.type !== 'circle',
+            'p-speeddial-opened': this.visible,
+            'p-disabled': this.disabled
+        };
+    }
+    buttonClass() {
+        return {
+            'p-speeddial-button p-button-rounded': true,
+            'p-speeddial-rotate': this.rotateAnimation && !this.hideIcon,
+            [this.buttonClassName]: true
+        };
+    }
+    get buttonIconClass() {
+        return ((!this.visible && this.showIcon) || !this.hideIcon) ? this.showIcon : this.hideIcon;
+    }
+    getItemStyle(index) {
+        const transitionDelay = this.calculateTransitionDelay(index);
+        const pointStyle = this.calculatePointStyle(index);
+        return Object.assign({ transitionDelay: `${transitionDelay}ms` }, pointStyle);
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.disabled && !item.disabled;
+    }
+    isOutsideClicked(event) {
+        return this.container && !(this.container.nativeElement.isSameNode(event.target) || this.container.nativeElement.contains(event.target) || this.isItemClicked);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.hideOnClickOutside) {
+            this.documentClickListener = (event) => {
+                if (this.visible && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.isItemClicked = false;
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+SpeedDial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SpeedDial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SpeedDial, selector: "p-speedDial", inputs: { id: "id", model: "model", visible: "visible", style: "style", className: "className", direction: "direction", transitionDelay: "transitionDelay", type: "type", radius: "radius", mask: "mask", disabled: "disabled", hideOnClickOutside: "hideOnClickOutside", buttonStyle: "buttonStyle", buttonClassName: "buttonClassName", maskStyle: "maskStyle", maskClassName: "maskClassName", showIcon: "showIcon", hideIcon: "hideIcon", rotateAnimation: "rotateAnimation" }, outputs: { onVisibleChange: "onVisibleChange", visibleChange: "visibleChange", onClick: "onClick", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, isInline: true, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-speedDial', template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], className: [{
+                type: Input
+            }], direction: [{
+                type: Input
+            }], transitionDelay: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], radius: [{
+                type: Input
+            }], mask: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], hideOnClickOutside: [{
+                type: Input
+            }], buttonStyle: [{
+                type: Input
+            }], buttonClassName: [{
+                type: Input
+            }], maskStyle: [{
+                type: Input
+            }], maskClassName: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], hideIcon: [{
+                type: Input
+            }], rotateAnimation: [{
+                type: Input
+            }], onVisibleChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], list: [{
+                type: ViewChild,
+                args: ['list']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class SpeedDialModule {
+}
+SpeedDialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpeedDialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, declarations: [SpeedDial], imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule] });
+SpeedDialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, imports: [[CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], SharedModule, ButtonModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule],
+                    exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule],
+                    declarations: [SpeedDial]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SpeedDial, SpeedDialModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-speeddial.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-speeddial.mjs","sources":["../../src/app/components/speeddial/speeddial.ts","../../src/app/components/speeddial/primeng-speeddial.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, Output, EventEmitter, ChangeDetectorRef, ViewChild, OnDestroy, OnInit, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { DomHandler } from 'primeng/dom';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n    selector: 'p-speedDial',\n    template: `\n        <div #container [attr.id]=\"id\" [ngClass]=\"containerClass()\" [class]=\"className\" [ngStyle]=\"style\">\n            <button pRipple pButton [style]=\"buttonStyle\" [icon]=\"buttonIconClass\" [ngClass]=\"buttonClass()\" (click)=\"onButtonClick($event)\">\n                <ng-container *ngIf=\"buttonTemplate\">\n                    <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n                </ng-container>\n            </button>\n            <ul #list class=\"p-speeddial-list\" role=\"menu\">\n                <li *ngFor=\"let item of model; let i = index\" [ngStyle]=\"getItemStyle(i)\" class=\"p-speeddial-item\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                    <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" pRipple [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" class=\"p-speeddial-action\" [ngClass]=\"{'p-disabled':item.disabled}\"  role=\"menuitem\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" (click)=\"onItemClick($event, item)\" (keydown.enter)=\"onItemClick($event, item, i)\"\n                        [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span class=\"p-speeddial-action-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                    </a>\n                    <ng-template #elseBlock>\n                        <a [attr.href]=\"item.url||null\" class=\"p-speeddial-action\" role=\"menuitem\" pRipple (click)=\"onItemClick($event, item)\" [ngClass]=\"{'p-disabled':item.disabled}\"\n                            (keydown.enter)=\"onItemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                            <span class=\"p-speeddial-action-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                        </a>\n                    </ng-template>\n                </li>\n            </ul>\n        </div>\n        <div *ngIf=\"mask && visible\" [ngClass]=\"{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}\" [class]=\"maskClassName\" [ngStyle]=\"maskStyle\"></div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./speeddial.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SpeedDial implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() id: string;\n\n    @Input() model: any[] = null;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible) {\n            this.bindDocumentClickListener();\n        }\n        else {\n            this.unbindDocumentClickListener();\n        }\n    }\n\n    @Input() style: any;\n\n    @Input() className: string;\n\n    @Input() direction: string =  'up'\n\n    @Input() transitionDelay: number = 30;\n\n    @Input() type: string =  'linear'\n\n    @Input() radius: number = 0;\n\n    @Input() mask: boolean = false;\n\n    @Input() disabled: boolean = false;\n\n    @Input() hideOnClickOutside: boolean = true;\n\n    @Input() buttonStyle: any;\n\n    @Input() buttonClassName: string;\n\n    @Input() maskStyle: any;\n\n    @Input() maskClassName: string;\n\n    @Input() showIcon: string = 'pi pi-plus';\n\n    @Input() hideIcon: string;\n\n    @Input() rotateAnimation: boolean = true;\n\n    @Output() onVisibleChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') container: ElementRef;\n\n    @ViewChild('list') list: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    buttonTemplate: TemplateRef<any>;\n\n    isItemClicked: boolean = false;\n\n    _visible: boolean = false;\n\n    documentClickListener: any;\n\n    constructor(private el: ElementRef, public cd: ChangeDetectorRef) { }\n\n    ngAfterViewInit() {\n        if (this.type !== 'linear') {\n            const button = DomHandler.findSingle(this.container.nativeElement, '.p-speeddial-button');\n            const firstItem = DomHandler.findSingle(this.list.nativeElement, '.p-speeddial-item');\n\n            if (button && firstItem) {\n                const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n                const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n                this.list.nativeElement.style.setProperty('--item-diff-x', `${wDiff / 2}px`);\n                this.list.nativeElement.style.setProperty('--item-diff-y', `${hDiff / 2}px`);\n            }\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'button':\n                    this.buttonTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    show() {\n        this.onVisibleChange.emit(true);\n        this.visibleChange.emit(true);\n        this._visible = true;\n        this.onShow.emit();\n        this.bindDocumentClickListener();\n        this.cd.markForCheck();\n    }\n\n    hide() {\n        this.onVisibleChange.emit(false);\n        this.visibleChange.emit(false);\n        this._visible = false;\n        this.onHide.emit();\n        this.unbindDocumentClickListener();\n        this.cd.markForCheck();\n    }\n\n    onButtonClick(event) {\n        this.visible ? this.hide() : this.show();\n        this.onClick.emit(event)\n        this.isItemClicked = true;\n    }\n\n    onItemClick(e, item) {\n        if (item.command) {\n            item.command({ originalEvent: e, item });\n        }\n\n        this.hide();\n\n        this.isItemClicked = true;\n    }\n\n\n    calculatePointStyle(index) {\n        const type = this.type;\n\n        if (type !== 'linear') {\n            const length = this.model.length;\n            const radius = this.radius || (length * 20);\n\n            if (type === 'circle') {\n                const step = 2 * Math.PI / length;\n\n                return {\n                    left: `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`,\n                    top: `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`,\n                }\n            }\n            else if (type === 'semi-circle') {\n                const direction = this.direction;\n                const step = Math.PI / (length - 1);\n                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;\n                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;\n                if (direction === 'up') {\n                    return { left: x, bottom: y };\n                }\n                else if (direction === 'down') {\n                    return { left: x, top: y };\n                }\n                else if (direction === 'left') {\n                    return { right: y, top: x };\n                }\n                else if (direction === 'right') {\n                    return { left: y, top: x };\n                }\n            }\n            else if (type === 'quarter-circle') {\n                const direction = this.direction;\n                const step = Math.PI / (2 * (length - 1));\n                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;\n                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;\n                if (direction === 'up-left') {\n                    return { right: x, bottom: y };\n                }\n                else if (direction === 'up-right') {\n                    return { left: x, bottom: y };\n                }\n                else if (direction === 'down-left') {\n                    return { right: y, top: x };\n                }\n                else if (direction === 'down-right') {\n                    return { left: y, top: x };\n                }\n            }\n        }\n\n        return {};\n    }\n\n    calculateTransitionDelay(index) {\n        const length = this.model.length;\n\n        return (this.visible ? index : length - index - 1) * this.transitionDelay;\n    }\n\n    containerClass() {\n        return {\n            ['p-speeddial p-component' + ` p-speeddial-${this.type}`]: true,\n            [`p-speeddial-direction-${this.direction}`]: this.type !== 'circle',\n            'p-speeddial-opened': this.visible,\n            'p-disabled': this.disabled\n        };\n    }\n\n    buttonClass() {\n        return {\n            'p-speeddial-button p-button-rounded': true,\n            'p-speeddial-rotate': this.rotateAnimation && !this.hideIcon,\n            [this.buttonClassName]: true\n        };\n    }\n\n    get buttonIconClass() {\n        return ((!this.visible && this.showIcon) || !this.hideIcon) ? this.showIcon : this.hideIcon;\n    }\n\n    getItemStyle(index) {\n        const transitionDelay = this.calculateTransitionDelay(index);\n        const pointStyle = this.calculatePointStyle(index);\n        return {\n            transitionDelay: `${transitionDelay}ms`,\n            ...pointStyle\n        };\n    }\n\n    isClickableRouterLink(item: MenuItem) {\n        return item.routerLink && !this.disabled && !item.disabled;\n    }\n\n    isOutsideClicked(event) {\n        return this.container && !(this.container.nativeElement.isSameNode(event.target) || this.container.nativeElement.contains(event.target) || this.isItemClicked);\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener && this.hideOnClickOutside) {\n            this.documentClickListener = (event) => {\n                if (this.visible && this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n\n                this.isItemClicked = false;\n            };\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule],\n    exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule],\n    declarations: [SpeedDial]\n})\nexport class SpeedDialModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SPINNER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Spinner),
+    multi: true
+};
+class Spinner {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.onChange = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this._step = 1;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.keyPattern = /[0-9\+\-]/;
+        this.negativeSeparator = '-';
+    }
+    get step() {
+        return this._step;
+    }
+    set step(val) {
+        this._step = val;
+        if (this._step != null) {
+            let tokens = this.step.toString().split(/[,]|[.]/);
+            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;
+        }
+    }
+    ngOnInit() {
+        if (this.formatInput) {
+            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);
+            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);
+            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');
+            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {
+                console.warn("thousandSeparator and decimalSeparator cannot have the same value.");
+            }
+        }
+    }
+    repeat(event, interval, dir) {
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue;
+        let precision = this.getPrecision();
+        if (this.value)
+            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;
+        else
+            currentValue = 0;
+        if (precision)
+            this.value = parseFloat(this.toFixed(currentValue + step, precision));
+        else
+            this.value = currentValue + step;
+        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {
+            this.value = currentValue;
+        }
+        if (this.min !== undefined && this.value < this.min) {
+            this.value = this.min;
+        }
+        if (this.max !== undefined && this.value > this.max) {
+            this.value = this.max;
+        }
+        this.formatValue();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+    }
+    getPrecision() {
+        return this.precision === undefined ? this.calculatedPrecision : this.precision;
+    }
+    toFixed(value, precision) {
+        let power = Math.pow(10, precision || 0);
+        return String(Math.round(value * power) / power);
+    }
+    onUpButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, 1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onUpButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onUpButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, -1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onDownButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onInputKeydown(event) {
+        if (event.which == 38) {
+            this.spin(event, 1);
+            event.preventDefault();
+        }
+        else if (event.which == 40) {
+            this.spin(event, -1);
+            event.preventDefault();
+        }
+    }
+    onInputChange(event) {
+        this.onChange.emit(event);
+    }
+    onInput(event) {
+        this.value = this.parseValue(event.target.value);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.formatValue();
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    parseValue(val) {
+        let value;
+        let precision = this.getPrecision();
+        if (val.trim() === '') {
+            value = null;
+        }
+        else {
+            if (this.formatInput) {
+                val = val.replace(this.thousandRegExp, '');
+            }
+            if (precision) {
+                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');
+                value = parseFloat(val);
+            }
+            else {
+                value = parseInt(val, 10);
+            }
+            if (!isNaN(value)) {
+                if (this.max !== null && value > this.max) {
+                    value = this.max;
+                }
+                if (this.min !== null && value < this.min) {
+                    value = this.min;
+                }
+            }
+            else {
+                value = null;
+            }
+        }
+        return value;
+    }
+    formatValue() {
+        let value = this.value;
+        let precision = this.getPrecision();
+        if (value != null) {
+            if (this.formatInput) {
+                value = value.toLocaleString(undefined, { maximumFractionDigits: 20 });
+                if (this.decimalSeparator && this.thousandSeparator) {
+                    value = value.split(this.localeDecimalSeparator);
+                    if (precision && value[1]) {
+                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];
+                    }
+                    if (this.thousandSeparator && value[0].length > 3) {
+                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);
+                    }
+                    value = value.join('');
+                }
+            }
+            this.formattedValue = value.toString();
+        }
+        else {
+            this.formattedValue = null;
+        }
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.formattedValue;
+        }
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.formatValue();
+        this.updateFilledState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    updateFilledState() {
+        this.filled = (this.value !== undefined && this.value != null);
+    }
+}
+Spinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Spinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Spinner, selector: "p-spinner", inputs: { min: "min", max: "max", maxlength: "maxlength", size: "size", placeholder: "placeholder", inputId: "inputId", disabled: "disabled", readonly: "readonly", tabindex: "tabindex", required: "required", name: "name", ariaLabelledBy: "ariaLabelledBy", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", formatInput: "formatInput", decimalSeparator: "decimalSeparator", thousandSeparator: "thousandSeparator", precision: "precision", step: "step" }, outputs: { onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.ui-inputwrapper-filled": "filled", "class.ui-inputwrapper-focus": "focus" }, classAttribute: "p-element" }, providers: [SPINNER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }], ngImport: i0, template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, isInline: true, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-spinner', template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, host: {
+                        'class': 'p-element',
+                        '[class.ui-inputwrapper-filled]': 'filled',
+                        '[class.ui-inputwrapper-focus]': 'focus'
+                    }, providers: [SPINNER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onChange: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], formatInput: [{
+                type: Input
+            }], decimalSeparator: [{
+                type: Input
+            }], thousandSeparator: [{
+                type: Input
+            }], precision: [{
+                type: Input
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield']
+            }], step: [{
+                type: Input
+            }] } });
+class SpinnerModule {
+}
+SpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, declarations: [Spinner], imports: [CommonModule, InputTextModule], exports: [Spinner] });
+SpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [Spinner],
+                    declarations: [Spinner]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SPINNER_VALUE_ACCESSOR, Spinner, SpinnerModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-spinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-spinner.mjs","sources":["../../src/app/components/spinner/spinner.ts","../../src/app/components/spinner/primeng-spinner.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnInit,Input,Output,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SPINNER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Spinner),\n    multi: true\n};\n\n@Component({\n    selector: 'p-spinner',\n    template: `\n        <span class=\"ui-spinner ui-widget ui-corner-all\">\n            <input #inputfield type=\"text\" [attr.id]=\"inputId\" [value]=\"formattedValue||null\" [attr.name]=\"name\" [attr.aria-valumin]=\"min\" [attr.aria-valuemax]=\"max\" [attr.aria-valuenow]=\"value\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n            (keydown)=\"onInputKeydown($event)\" (blur)=\"onInputBlur($event)\" (input)=\"onInput($event)\" (change)=\"onInputChange($event)\" (focus)=\"onInputFocus($event)\"\n            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [ngClass]=\"'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'\">\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onUpButtonMouseleave($event)\" (mousedown)=\"onUpButtonMousedown($event)\" (mouseup)=\"onUpButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-up ui-clickable\"></span>\n            </button>\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onDownButtonMouseleave($event)\" (mousedown)=\"onDownButtonMousedown($event)\" (mouseup)=\"onDownButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-down ui-clickable\"></span>\n            </button>\n        </span>\n    `,\n    host: {\n        'class': 'p-element',\n        '[class.ui-inputwrapper-filled]': 'filled',\n        '[class.ui-inputwrapper-focus]': 'focus'\n    },\n    providers: [SPINNER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./spinner.css']\n})\nexport class Spinner implements OnInit,ControlValueAccessor {\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() maxlength: number;\n\n    @Input() size: number;\n\n    @Input() placeholder: string;\n\n    @Input() inputId: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() required: boolean;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: string;\n\n    @Input() formatInput: boolean;\n\n    @Input() decimalSeparator: string;\n\n    @Input() thousandSeparator: string;\n\n    @Input() precision: number;\n\n    value: any;\n\n    _step: number = 1;\n\n    formattedValue: string;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    keyPattern: RegExp = /[0-9\\+\\-]/;\n\n    public timer: any;\n\n    public focus: boolean;\n\n    public filled: boolean;\n\n    public negativeSeparator = '-';\n\n    localeDecimalSeparator: string;\n\n    localeThousandSeparator: string;\n\n    thousandRegExp: RegExp;\n\n    calculatedPrecision: number;\n\n    @ViewChild('inputfield') inputfieldViewChild: ElementRef;\n\n    @Input() get step(): number {\n        return this._step;\n    }\n    set step(val:number) {\n        this._step = val;\n\n        if (this._step != null) {\n            let tokens = this.step.toString().split(/[,]|[.]/);\n            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;\n        }\n    }\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        if (this.formatInput) {\n            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);\n            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);\n            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');\n\n            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {\n                console.warn(\"thousandSeparator and decimalSeparator cannot have the same value.\");\n            }\n        }\n    }\n\n    repeat(event: Event, interval: number, dir: number) {\n        let i = interval||500;\n\n        this.clearTimer();\n        this.timer = setTimeout(() => {\n            this.repeat(event, 40, dir);\n        }, i);\n\n        this.spin(event, dir);\n    }\n\n    spin(event: Event, dir: number) {\n        let step = this.step * dir;\n        let currentValue: number;\n        let precision = this.getPrecision();\n\n        if (this.value)\n            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;\n        else\n            currentValue = 0;\n\n        if (precision)\n            this.value = parseFloat(this.toFixed(currentValue + step, precision));\n        else\n            this.value = currentValue + step;\n\n        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {\n            this.value = currentValue;\n        }\n\n        if (this.min !== undefined && this.value < this.min) {\n            this.value = this.min;\n        }\n\n        if (this.max !== undefined && this.value > this.max) {\n            this.value = this.max;\n        }\n\n        this.formatValue();\n        this.onModelChange(this.value);\n        this.onChange.emit(event);\n    }\n\n    getPrecision() {\n        return this.precision === undefined ? this.calculatedPrecision : this.precision;\n    }\n\n    toFixed(value: number, precision: number) {\n        let power = Math.pow(10, precision||0);\n        return String(Math.round(value * power) / power);\n    }\n\n    onUpButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, 1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onUpButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onUpButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, -1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onDownButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        if (event.which == 38) {\n            this.spin(event, 1);\n            event.preventDefault();\n        }\n        else if (event.which == 40) {\n            this.spin(event, -1);\n            event.preventDefault();\n        }\n    }\n\n    onInputChange(event: Event) {\n        this.onChange.emit(event);\n    }\n\n    onInput(event: KeyboardEvent) {\n        this.value = this.parseValue((<HTMLInputElement> event.target).value);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.formatValue();\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputFocus(event) {\n        this.focus = true;\n        this.onFocus.emit(event);\n    }\n\n    parseValue(val: string): number {\n        let value: number;\n        let precision = this.getPrecision();\n\n        if (val.trim() === '') {\n            value = null;\n        }\n        else {\n            if (this.formatInput) {\n                val = val.replace(this.thousandRegExp, '');\n            }\n\n            if (precision) {\n                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');\n                value = parseFloat(val);\n            }\n            else {\n                value = parseInt(val, 10);\n            }\n\n            if (!isNaN(value)) {\n                if (this.max !== null && value > this.max) {\n                    value = this.max;\n                }\n\n                if (this.min !== null && value < this.min) {\n                    value = this.min;\n                }\n            }\n            else {\n                value = null;\n            }\n        }\n\n        return value;\n    }\n\n    formatValue() {\n        let value = this.value;\n        let precision = this.getPrecision();\n\n        if (value != null) {\n            if (this.formatInput) {\n                value = value.toLocaleString(undefined, {maximumFractionDigits: 20});\n\n                if (this.decimalSeparator && this.thousandSeparator) {\n                    value = value.split(this.localeDecimalSeparator);\n\n                    if (precision && value[1]) {\n                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];\n                    }\n\n                    if (this.thousandSeparator && value[0].length > 3) {\n                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);\n                    }\n\n                    value = value.join('');\n                }\n            }\n\n            this.formattedValue = value.toString();\n        }\n        else {\n            this.formattedValue = null;\n        }\n\n        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n            this.inputfieldViewChild.nativeElement.value = this.formattedValue;\n        }\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.formatValue();\n        this.updateFilledState();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    updateFilledState() {\n        this.filled = (this.value !== undefined && this.value != null);\n    }\n}\n\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\n    exports: [Spinner],\n    declarations: [Spinner]\n})\nexport class SpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,109 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/menu';
+import { MenuModule } from 'primeng/menu';
+
+class SplitButton {
+    constructor() {
+        this.iconPos = 'left';
+        this.onClick = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    onDefaultButtonClick(event) {
+        this.onClick.emit(event);
+    }
+    onDropdownButtonClick(event) {
+        this.onDropdownClick.emit(event);
+        this.menu.toggle({ currentTarget: this.containerViewChild.nativeElement, relativeAlign: this.appendTo == null });
+    }
+}
+SplitButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+SplitButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SplitButton, selector: "p-splitButton", inputs: { model: "model", icon: "icon", iconPos: "iconPos", label: "label", style: "style", styleClass: "styleClass", menuStyle: "menuStyle", menuStyleClass: "menuStyleClass", disabled: "disabled", tabindex: "tabindex", appendTo: "appendTo", dir: "dir", expandAriaLabel: "expandAriaLabel", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClick: "onClick", onDropdownClick: "onDropdownClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "buttonViewChild", first: true, predicate: ["defaultbtn"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, isInline: true, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"], components: [{ type: i1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitButton', template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuStyle: [{
+                type: Input
+            }], menuStyleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dir: [{
+                type: Input
+            }], expandAriaLabel: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], buttonViewChild: [{
+                type: ViewChild,
+                args: ['defaultbtn']
+            }], menu: [{
+                type: ViewChild,
+                args: ['menu']
+            }] } });
+class SplitButtonModule {
+}
+SplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, declarations: [SplitButton], imports: [CommonModule, ButtonModule, MenuModule], exports: [SplitButton, ButtonModule] });
+SplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, ButtonModule, MenuModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, MenuModule],
+                    exports: [SplitButton, ButtonModule],
+                    declarations: [SplitButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SplitButton, SplitButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-splitbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-splitbutton.mjs","sources":["../../src/app/components/splitbutton/splitbutton.ts","../../src/app/components/splitbutton/primeng-splitbutton.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,EventEmitter,ViewChild,ChangeDetectionStrategy,ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MenuModule, Menu} from 'primeng/menu';\n\n@Component({\n    selector: 'p-splitButton',\n    template: `\n        <div #container [ngClass]=\"'p-splitbutton p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <button #defaultbtn class=\"p-splitbutton-defaultbutton\" type=\"button\" pButton [icon]=\"icon\" [iconPos]=\"iconPos\" [label]=\"label\" (click)=\"onDefaultButtonClick($event)\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\"></button>\n            <button type=\"button\" pButton class=\"p-splitbutton-menubutton\" icon=\"pi pi-chevron-down\" (click)=\"onDropdownButtonClick($event)\" [disabled]=\"disabled\" [attr.aria-label]=\"expandAriaLabel\"></button>\n            <p-menu #menu [popup]=\"true\" [model]=\"model\" [style]=\"menuStyle\" [styleClass]=\"menuStyleClass\" [appendTo]=\"appendTo\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-menu>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./splitbutton.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SplitButton {\n\n    @Input() model: MenuItem[];\n\n    @Input() icon: string;\n\n    @Input() iconPos: string = 'left';\n\n    @Input() label: string;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() menuStyle: any;\n\n    @Input() menuStyleClass: string;\n\n    @Input() disabled: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() appendTo: any;\n\n    @Input() dir: string;\n\n    @Input() expandAriaLabel: string;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('defaultbtn') buttonViewChild: ElementRef;\n\n    @ViewChild('menu') menu: Menu;\n\n    onDefaultButtonClick(event: Event) {\n        this.onClick.emit(event);\n    }\n\n    onDropdownButtonClick(event: Event) {\n        this.onDropdownClick.emit(event);\n        this.menu.toggle({currentTarget: this.containerViewChild.nativeElement, relativeAlign: this.appendTo == null});\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,MenuModule],\n    exports: [SplitButton,ButtonModule],\n    declarations: [SplitButton]\n})\nexport class SplitButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MAuBa,WAAW;IAjBxB;QAuBa,YAAO,GAAW,MAAM,CAAC;QAIxB,YAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEhD,oBAAe,GAAsB,IAAI,YAAY,EAAE,CAAC;QAoBzD,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;KAiBzD;IATG,oBAAoB,CAAC,KAAY;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,qBAAqB,CAAC,KAAY;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAC,CAAC,CAAC;KAClH;;wGAjDQ,WAAW;4FAAX,WAAW,q0BAfV;;;;;;;KAOT;2FAQQ,WAAW;kBAjBvB,SAAS;+BACI,eAAe,YACf;;;;;;;KAOT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEI,OAAO;sBAAhB,MAAM;gBAEG,eAAe;sBAAxB,MAAM;gBAEE,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,GAAG;sBAAX,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEkB,kBAAkB;sBAAzC,SAAS;uBAAC,WAAW;gBAEG,eAAe;sBAAvC,SAAS;uBAAC,YAAY;gBAEJ,IAAI;sBAAtB,SAAS;uBAAC,MAAM;;MAkBR,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBA1DjB,WAAW,aAsDV,YAAY,EAAC,YAAY,EAAC,UAAU,aAtDrC,WAAW,EAuDE,YAAY;+GAGzB,iBAAiB,YAJjB,CAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC,EACzB,YAAY;2FAGzB,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC;oBAC/C,OAAO,EAAE,CAAC,WAAW,EAAC,YAAY,CAAC;oBACnC,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AChFD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Splitter {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.stateStorage = "session";
+        this.stateKey = null;
+        this.layout = "horizontal";
+        this.gutterSize = 4;
+        this.panelSizes = [];
+        this.minSizes = [];
+        this.onResizeEnd = new EventEmitter();
+        this.onResizeStart = new EventEmitter();
+        this.nested = false;
+        this.panels = [];
+        this.dragging = false;
+        this.mouseMoveListener = null;
+        this.mouseUpListener = null;
+        this.touchMoveListener = null;
+        this.touchEndListener = null;
+        this.size = null;
+        this.gutterElement = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.nextPanelSize = null;
+        this.prevPanelSize = null;
+        this._panelSizes = null;
+        this.prevPanelIndex = null;
+    }
+    ngOnInit() {
+        this.nested = this.isNested();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'panel':
+                    this.panels.push(item.template);
+                    break;
+                default:
+                    this.panels.push(item.template);
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.panels && this.panels.length) {
+            let initialized = false;
+            if (this.isStateful()) {
+                initialized = this.restoreState();
+            }
+            if (!initialized) {
+                let children = [...this.el.nativeElement.children[0].children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+                let _panelSizes = [];
+                this.panels.map((panel, i) => {
+                    let panelInitialSize = this.panelSizes.length - 1 >= i ? this.panelSizes[i] : null;
+                    let panelSize = panelInitialSize || (100 / this.panels.length);
+                    _panelSizes[i] = panelSize;
+                    children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+                });
+                this._panelSizes = _panelSizes;
+            }
+        }
+    }
+    resizeStart(event, index) {
+        this.gutterElement = event.currentTarget;
+        this.size = this.horizontal() ? DomHandler.getWidth(this.containerViewChild.nativeElement) : DomHandler.getHeight(this.containerViewChild.nativeElement);
+        this.dragging = true;
+        this.startPos = this.horizontal() ? (event.pageX || event.changedTouches[0].pageX) : (event.pageY || event.changedTouches[0].pageY);
+        this.prevPanelElement = this.gutterElement.previousElementSibling;
+        this.nextPanelElement = this.gutterElement.nextElementSibling;
+        this.prevPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.prevPanelElement, true) : DomHandler.getOuterHeight(this.prevPanelElement, true)) / this.size;
+        this.nextPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.nextPanelElement, true) : DomHandler.getOuterHeight(this.nextPanelElement, true)) / this.size;
+        this.prevPanelIndex = index;
+        DomHandler.addClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.onResizeStart.emit({ originalEvent: event, sizes: this._panelSizes });
+    }
+    onResize(event) {
+        let newPos;
+        if (this.horizontal())
+            newPos = (event.pageX * 100 / this.size) - (this.startPos * 100 / this.size);
+        else
+            newPos = (event.pageY * 100 / this.size) - (this.startPos * 100 / this.size);
+        let newPrevPanelSize = this.prevPanelSize + newPos;
+        let newNextPanelSize = this.nextPanelSize - newPos;
+        if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {
+            this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this._panelSizes[this.prevPanelIndex] = newPrevPanelSize;
+            this._panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;
+        }
+    }
+    resizeEnd(event) {
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.onResizeEnd.emit({ originalEvent: event, sizes: this._panelSizes });
+        DomHandler.removeClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.clear();
+    }
+    onGutterMouseDown(event, index) {
+        this.resizeStart(event, index);
+        this.bindMouseListeners();
+    }
+    onGutterTouchStart(event, index) {
+        if (event.cancelable) {
+            this.resizeStart(event, index);
+            this.bindTouchListeners();
+            event.preventDefault();
+        }
+    }
+    onGutterTouchEnd(event) {
+        this.resizeEnd(event);
+        this.unbindTouchListeners();
+        if (event.cancelable)
+            event.preventDefault();
+    }
+    validateResize(newPrevPanelSize, newNextPanelSize) {
+        if (this.minSizes.length >= 1 && this.minSizes[0] && this.minSizes[0] > newPrevPanelSize) {
+            return false;
+        }
+        if (this.minSizes.length > 1 && this.minSizes[1] && this.minSizes[1] > newNextPanelSize) {
+            return false;
+        }
+        return true;
+    }
+    bindMouseListeners() {
+        if (!this.mouseMoveListener) {
+            this.mouseMoveListener = event => this.onResize(event);
+            document.addEventListener('mousemove', this.mouseMoveListener);
+        }
+        if (!this.mouseUpListener) {
+            this.mouseUpListener = event => {
+                this.resizeEnd(event);
+                this.unbindMouseListeners();
+            };
+            document.addEventListener('mouseup', this.mouseUpListener);
+        }
+    }
+    bindTouchListeners() {
+        if (!this.touchMoveListener) {
+            this.touchMoveListener = event => this.onResize(event.changedTouches[0]);
+            document.addEventListener('touchmove', this.touchMoveListener);
+        }
+        if (!this.touchEndListener) {
+            this.touchEndListener = event => {
+                this.resizeEnd(event);
+                this.unbindTouchListeners();
+            };
+            document.addEventListener('touchend', this.touchEndListener);
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseMoveListener) {
+            document.removeEventListener('mousemove', this.mouseMoveListener);
+            this.mouseMoveListener = null;
+        }
+        if (this.mouseUpListener) {
+            document.removeEventListener('mouseup', this.mouseUpListener);
+            this.mouseUpListener = null;
+        }
+    }
+    unbindTouchListeners() {
+        if (this.touchMoveListener) {
+            document.removeEventListener('touchmove', this.touchMoveListener);
+            this.touchMoveListener = null;
+        }
+        if (this.touchEndListener) {
+            document.removeEventListener('touchend', this.touchEndListener);
+            this.touchEndListener = null;
+        }
+    }
+    clear() {
+        this.dragging = false;
+        this.size = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.prevPanelSize = null;
+        this.nextPanelSize = null;
+        this.gutterElement = null;
+        this.prevPanelIndex = null;
+    }
+    isNested() {
+        if (this.el.nativeElement) {
+            let parent = this.el.nativeElement.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-splitter')) {
+                parent = parent.parentElement;
+            }
+            return parent !== null;
+        }
+        else {
+            return false;
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    saveState() {
+        this.getStorage().setItem(this.stateKey, JSON.stringify(this._panelSizes));
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            this._panelSizes = JSON.parse(stateString);
+            let children = [...this.containerViewChild.nativeElement.children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+            children.forEach((child, i) => {
+                child.style.flexBasis = 'calc(' + this._panelSizes[i] + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            });
+            return true;
+        }
+        return false;
+    }
+    containerClass() {
+        return {
+            'p-splitter p-component': true,
+            'p-splitter-horizontal': this.layout === "horizontal",
+            'p-splitter-vertical': this.layout === "vertical"
+        };
+    }
+    panelContainerClass() {
+        return {
+            'p-splitter-panel': true,
+            'p-splitter-panel-nested': true
+        };
+    }
+    gutterStyle() {
+        if (this.horizontal())
+            return { width: this.gutterSize + 'px' };
+        else
+            return { height: this.gutterSize + 'px' };
+    }
+    horizontal() {
+        return this.layout === 'horizontal';
+    }
+}
+Splitter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Splitter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Splitter, selector: "p-splitter", inputs: { styleClass: "styleClass", panelStyleClass: "panelStyleClass", style: "style", panelStyle: "panelStyle", stateStorage: "stateStorage", stateKey: "stateKey", layout: "layout", gutterSize: "gutterSize", panelSizes: "panelSizes", minSizes: "minSizes" }, outputs: { onResizeEnd: "onResizeEnd", onResizeStart: "onResizeStart" }, host: { properties: { "class.p-splitter-panel-nested": "nested" }, classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitter', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element',
+                        '[class.p-splitter-panel-nested]': 'nested'
+                    }, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], gutterSize: [{
+                type: Input
+            }], panelSizes: [{
+                type: Input
+            }], minSizes: [{
+                type: Input
+            }], onResizeEnd: [{
+                type: Output
+            }], onResizeStart: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }] } });
+class SplitterModule {
+}
+SplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, declarations: [Splitter], imports: [CommonModule], exports: [Splitter, SharedModule] });
+SplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Splitter, SharedModule],
+                    declarations: [Splitter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Splitter, SplitterModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-splitter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-splitter.mjs","sources":["../../src/app/components/splitter/splitter.ts","../../src/app/components/splitter/primeng-splitter.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, QueryList, ElementRef, ChangeDetectorRef, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\n\n@Component({\n    selector: 'p-splitter',\n    template: `\n        <div #container [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-template ngFor let-panel let-i=\"index\" [ngForOf]=\"panels\">\n                <div [ngClass]=\"panelContainerClass()\" [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\">\n                    <ng-container *ngTemplateOutlet=\"panel\"></ng-container>\n                </div>\n                <div class=\"p-splitter-gutter\" *ngIf=\"i !== (panels.length - 1)\" [ngStyle]=\"gutterStyle()\"\n                    (mousedown)=\"onGutterMouseDown($event, i)\" (touchstart)=\"onGutterTouchStart($event, i)\">\n                    <div class=\"p-splitter-gutter-handle\"></div>\n                </div>\n            </ng-template>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./splitter.css'],\n    host: {\n        'class': 'p-element',\n        '[class.p-splitter-panel-nested]': 'nested'\n    }\n})\nexport class Splitter {\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() stateStorage: string = \"session\";\n\n    @Input() stateKey: string = null;\n\n    @Input() layout: string = \"horizontal\";\n\n    @Input() gutterSize: number = 4;\n\n    @Input() panelSizes: number[] = [];\n\n    @Input() minSizes: number[] = [];\n\n    @Output() onResizeEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeStart: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('container', { static: false }) containerViewChild: ElementRef;\n\n    nested = false;\n\n    panels = [];\n\n    dragging = false;\n\n    mouseMoveListener = null;\n\n    mouseUpListener = null;\n\n    touchMoveListener = null;\n\n    touchEndListener = null;\n\n    size = null;\n\n    gutterElement = null;\n\n    startPos = null;\n\n    prevPanelElement = null;\n\n    nextPanelElement = null;\n\n    nextPanelSize = null;\n\n    prevPanelSize = null;\n\n    _panelSizes = null;\n\n    prevPanelIndex = null;\n\n    constructor(public cd: ChangeDetectorRef, private el: ElementRef) { }\n\n    ngOnInit() {\n        this.nested = this.isNested();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'panel':\n                    this.panels.push(item.template);\n                break;\n                default:\n                    this.panels.push(item.template);\n                break;\n            }\n        })\n    }\n\n    ngAfterViewInit() {\n        if (this.panels && this.panels.length) {\n            let initialized = false;\n            if (this.isStateful()) {\n                initialized = this.restoreState();\n            }\n\n            if (!initialized) {\n                let children = [...this.el.nativeElement.children[0].children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));\n                let _panelSizes = [];\n\n                this.panels.map((panel, i) => {\n                    let panelInitialSize = this.panelSizes.length -1 >= i ? this.panelSizes[i]: null;\n                    let panelSize = panelInitialSize || (100 / this.panels.length);\n                    _panelSizes[i] = panelSize;\n                    children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n                });\n\n                this._panelSizes = _panelSizes;\n            }\n        }\n    }\n\n    resizeStart(event, index) {\n        this.gutterElement = event.currentTarget;\n        this.size = this.horizontal() ? DomHandler.getWidth(this.containerViewChild.nativeElement) : DomHandler.getHeight(this.containerViewChild.nativeElement);\n        this.dragging = true;\n        this.startPos = this.horizontal() ? (event.pageX || event.changedTouches[0].pageX) : (event.pageY || event.changedTouches[0].pageY);\n        this.prevPanelElement = this.gutterElement.previousElementSibling;\n        this.nextPanelElement = this.gutterElement.nextElementSibling;\n        this.prevPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.prevPanelElement, true): DomHandler.getOuterHeight(this.prevPanelElement, true)) / this.size;\n        this.nextPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.nextPanelElement, true): DomHandler.getOuterHeight(this.nextPanelElement, true)) / this.size;\n        this.prevPanelIndex = index;\n        DomHandler.addClass(this.gutterElement, 'p-splitter-gutter-resizing');\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');\n        this.onResizeStart.emit({originalEvent: event, sizes: this._panelSizes});\n    }\n\n    onResize(event) {\n        let newPos;\n        if (this.horizontal())\n            newPos = (event.pageX * 100 / this.size) - (this.startPos * 100 / this.size);\n        else\n            newPos = (event.pageY  * 100 / this.size) - (this.startPos * 100 / this.size);\n\n        let newPrevPanelSize = this.prevPanelSize + newPos;\n        let newNextPanelSize = this.nextPanelSize - newPos;\n\n        if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n            this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            this._panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n            this._panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n        }\n    }\n\n    resizeEnd(event) {\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.onResizeEnd.emit({originalEvent: event, sizes: this._panelSizes});\n        DomHandler.removeClass(this.gutterElement, 'p-splitter-gutter-resizing');\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');\n        this.clear();\n    }\n\n    onGutterMouseDown(event, index) {\n        this.resizeStart(event, index);\n        this.bindMouseListeners();\n    }\n\n    onGutterTouchStart(event, index) {\n        if (event.cancelable){\n            this.resizeStart(event, index);\n            this.bindTouchListeners();\n\n            event.preventDefault();\n        }\n    }\n\n    onGutterTouchEnd(event) {\n        this.resizeEnd(event);\n        this.unbindTouchListeners();\n\n        if (event.cancelable)\n            event.preventDefault();\n    }\n\n    validateResize(newPrevPanelSize, newNextPanelSize) {\n        if (this.minSizes.length >= 1 && this.minSizes[0] && this.minSizes[0] > newPrevPanelSize) {\n            return false;\n        }\n\n        if (this.minSizes.length > 1 && this.minSizes[1] && this.minSizes[1] > newNextPanelSize) {\n            return false;\n        }\n\n        return true;\n    }\n\n    bindMouseListeners() {\n        if (!this.mouseMoveListener) {\n            this.mouseMoveListener = event => this.onResize(event)\n            document.addEventListener('mousemove', this.mouseMoveListener);\n        }\n\n        if (!this.mouseUpListener) {\n            this.mouseUpListener = event => {\n                this.resizeEnd(event);\n                this.unbindMouseListeners();\n            }\n            document.addEventListener('mouseup', this.mouseUpListener);\n        }\n    }\n\n    bindTouchListeners() {\n        if (!this.touchMoveListener) {\n            this.touchMoveListener = event => this.onResize(event.changedTouches[0])\n            document.addEventListener('touchmove', this.touchMoveListener);\n        }\n\n        if (!this.touchEndListener) {\n            this.touchEndListener = event => {\n                this.resizeEnd(event);\n                this.unbindTouchListeners();\n            }\n            document.addEventListener('touchend', this.touchEndListener);\n        }\n    }\n\n    unbindMouseListeners() {\n        if (this.mouseMoveListener) {\n            document.removeEventListener('mousemove', this.mouseMoveListener);\n            this.mouseMoveListener = null;\n        }\n\n        if (this.mouseUpListener) {\n            document.removeEventListener('mouseup', this.mouseUpListener);\n            this.mouseUpListener = null;\n        }\n    }\n\n    unbindTouchListeners() {\n        if (this.touchMoveListener) {\n            document.removeEventListener('touchmove', this.touchMoveListener);\n            this.touchMoveListener = null;\n        }\n\n        if (this.touchEndListener) {\n            document.removeEventListener('touchend', this.touchEndListener);\n            this.touchEndListener = null;\n        }\n    }\n\n    clear() {\n        this.dragging = false;\n        this.size = null;\n        this.startPos = null;\n        this.prevPanelElement = null;\n        this.nextPanelElement = null;\n        this.prevPanelSize = null;\n        this.nextPanelSize = null;\n        this.gutterElement = null;\n        this.prevPanelIndex = null;\n    }\n\n    isNested() {\n        if (this.el.nativeElement) {\n            let parent = this.el.nativeElement.parentElement;\n            while (parent && !DomHandler.hasClass(parent, 'p-splitter')) {\n                parent = parent.parentElement;\n            }\n\n            return parent !== null;\n        }\n        else {\n            return false;\n        }\n    }\n\n    isStateful() {\n        return this.stateKey != null;\n    }\n\n    getStorage() {\n        switch(this.stateStorage) {\n            case 'local':\n                return window.localStorage;\n\n            case 'session':\n                return window.sessionStorage;\n\n            default:\n                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n        }\n    }\n\n    saveState() {\n        this.getStorage().setItem(this.stateKey, JSON.stringify(this._panelSizes));\n    }\n\n    restoreState() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n\n        if (stateString) {\n            this._panelSizes = JSON.parse(stateString);\n            let children = [...this.containerViewChild.nativeElement.children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));\n            children.forEach((child, i) => {\n                child.style.flexBasis = 'calc(' + this._panelSizes[i] + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            });\n\n            return true;\n        }\n\n        return false;\n    }\n\n    containerClass() {\n        return {\n            'p-splitter p-component': true,\n            'p-splitter-horizontal': this.layout === \"horizontal\",\n            'p-splitter-vertical': this.layout === \"vertical\"\n        };\n    }\n\n    panelContainerClass() {\n        return {\n            'p-splitter-panel': true,\n            'p-splitter-panel-nested': true\n        };\n    }\n\n    gutterStyle() {\n        if (this.horizontal())\n            return {width: this.gutterSize + 'px'};\n        else\n            return {height: this.gutterSize + 'px'};\n    }\n\n    horizontal() {\n        return this.layout === 'horizontal';\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Splitter, SharedModule],\n    declarations: [Splitter]\n})\nexport class SplitterModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Steps {
+    constructor(router, route, cd) {
+        this.router = router;
+        this.route = route;
+        this.cd = cd;
+        this.activeIndex = 0;
+        this.readonly = true;
+        this.activeIndexChange = new EventEmitter();
+    }
+    ngOnInit() {
+        this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());
+    }
+    itemClick(event, item, i) {
+        if (this.readonly || item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.activeIndexChange.emit(i);
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item,
+                index: i
+            });
+        }
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.readonly && !item.disabled;
+    }
+    isActive(item, index) {
+        if (item.routerLink)
+            return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], { relativeTo: this.route }).toString(), false);
+        else
+            return index === this.activeIndex;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Steps.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Steps.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Steps, selector: "p-steps", inputs: { activeIndex: "activeIndex", model: "model", readonly: "readonly", style: "style", styleClass: "styleClass" }, outputs: { activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-steps', template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }] } });
+class StepsModule {
+}
+StepsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StepsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, declarations: [Steps], imports: [CommonModule, RouterModule, TooltipModule], exports: [Steps, RouterModule, TooltipModule] });
+StepsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Steps, RouterModule, TooltipModule],
+                    declarations: [Steps]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Steps, StepsModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-steps.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-steps.mjs","sources":["../../src/app/components/steps/steps.ts","../../src/app/components/steps/primeng-steps.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, OnInit, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule, Router, ActivatedRoute} from '@angular/router';\nimport {Subscription} from 'rxjs';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-steps',\n    template: `\n        <div [ngClass]=\"{'p-steps p-component':true,'p-readonly':readonly}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ul role=\"tablist\">\n                <li *ngFor=\"let item of model; let i = index\" class=\"p-steps-item\" #menuitem [ngStyle]=\"item.style\" [class]=\"item.styleClass\" role=\"tab\" [attr.aria-selected]=\"i === activeIndex\" [attr.aria-expanded]=\"i === activeIndex\" pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                    [ngClass]=\"{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}\">\n                    <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" role=\"presentation\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                        (click)=\"itemClick($event, item, i)\" (keydown.enter)=\"itemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                        <span class=\"p-steps-number\">{{i + 1}}</span>\n                        <span class=\"p-steps-title\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-steps-title\" [innerHTML]=\"item.label\"></span></ng-template>\n                    </a>\n                    <ng-template #elseBlock>\n                        <a [attr.href]=\"item.url\" class=\"p-menuitem-link\" role=\"presentation\" (click)=\"itemClick($event, item, i)\" (keydown.enter)=\"itemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\"\n                            [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                            <span class=\"p-steps-number\">{{i + 1}}</span>\n                            <span class=\"p-steps-title\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-steps-title\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                    </ng-template>\n                </li>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./steps.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Steps implements OnInit, OnDestroy {\n\n    @Input() activeIndex: number = 0;\n\n    @Input() model: MenuItem[];\n\n    @Input() readonly: boolean =  true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    constructor(private router: Router, private route:ActivatedRoute, private cd: ChangeDetectorRef) { }\n\n    subscription: Subscription;\n\n    ngOnInit() {\n        this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());\n    }\n\n    itemClick(event: Event, item: MenuItem, i: number) {\n        if (this.readonly || item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.activeIndexChange.emit(i);\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item,\n                index: i\n            });\n        }\n    }\n\n    isClickableRouterLink(item: MenuItem) {\n        return item.routerLink && !this.readonly && !item.disabled;\n    }\n\n    isActive(item: MenuItem, index: number) {\n        if (item.routerLink)\n            return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], {relativeTo: this.route}).toString(), false);\n        else\n            return index === this.activeIndex;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [Steps,RouterModule,TooltipModule],\n    declarations: [Steps]\n})\nexport class StepsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,189 @@
+import { CommonModule } from '@angular/common';
+import * as i0 from '@angular/core';
+import { Directive, Input, NgModule } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+
+class StyleClass {
+    constructor(el, renderer) {
+        this.el = el;
+        this.renderer = renderer;
+    }
+    ngAfterViewInit() {
+        this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {
+            this.target = this.resolveTarget();
+            if (this.toggleClass) {
+                if (DomHandler.hasClass(this.target, this.toggleClass))
+                    DomHandler.removeClass(this.target, this.toggleClass);
+                else
+                    DomHandler.addClass(this.target, this.toggleClass);
+            }
+            else {
+                if (this.target.offsetParent === null)
+                    this.enter();
+                else
+                    this.leave();
+            }
+        });
+    }
+    enter() {
+        if (this.enterActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                if (this.enterActiveClass === 'slidedown') {
+                    this.target.style.height = '0px';
+                    DomHandler.removeClass(this.target, 'hidden');
+                    this.target.style.maxHeight = this.target.scrollHeight + 'px';
+                    DomHandler.addClass(this.target, 'hidden');
+                    this.target.style.height = '';
+                }
+                DomHandler.addClass(this.target, this.enterActiveClass);
+                if (this.enterClass) {
+                    DomHandler.removeClass(this.target, this.enterClass);
+                }
+                this.enterListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.enterActiveClass);
+                    if (this.enterToClass) {
+                        DomHandler.addClass(this.target, this.enterToClass);
+                    }
+                    this.enterListener();
+                    if (this.enterActiveClass === 'slidedown') {
+                        this.target.style.maxHeight = '';
+                    }
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.enterClass) {
+                DomHandler.removeClass(this.target, this.enterClass);
+            }
+            if (this.enterToClass) {
+                DomHandler.addClass(this.target, this.enterToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.bindDocumentListener();
+        }
+    }
+    leave() {
+        if (this.leaveActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                DomHandler.addClass(this.target, this.leaveActiveClass);
+                if (this.leaveClass) {
+                    DomHandler.removeClass(this.target, this.leaveClass);
+                }
+                this.leaveListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.leaveActiveClass);
+                    if (this.leaveToClass) {
+                        DomHandler.addClass(this.target, this.leaveToClass);
+                    }
+                    this.leaveListener();
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.leaveClass) {
+                DomHandler.removeClass(this.target, this.leaveClass);
+            }
+            if (this.leaveToClass) {
+                DomHandler.addClass(this.target, this.leaveToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.unbindDocumentListener();
+        }
+    }
+    resolveTarget() {
+        if (this.target) {
+            return this.target;
+        }
+        switch (this.selector) {
+            case '@next':
+                return this.el.nativeElement.nextElementSibling;
+            case '@prev':
+                return this.el.nativeElement.previousElementSibling;
+            case '@parent':
+                return this.el.nativeElement.parentElement;
+            case '@grandparent':
+                return this.el.nativeElement.parentElement.parentElement;
+            default:
+                return document.querySelector(this.selector);
+        }
+    }
+    bindDocumentListener() {
+        if (!this.documentListener) {
+            this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', event => {
+                if (getComputedStyle(this.target).getPropertyValue('position') === 'static') {
+                    this.unbindDocumentListener();
+                }
+                else if (!this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target)) {
+                    this.leave();
+                }
+            });
+        }
+    }
+    unbindDocumentListener() {
+        if (this.documentListener) {
+            this.documentListener();
+            this.documentListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.target = null;
+        if (this.eventListener) {
+            this.eventListener();
+        }
+        this.unbindDocumentListener();
+    }
+}
+StyleClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
+StyleClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: StyleClass, selector: "[pStyleClass]", inputs: { selector: ["pStyleClass", "selector"], enterClass: "enterClass", enterActiveClass: "enterActiveClass", enterToClass: "enterToClass", leaveClass: "leaveClass", leaveActiveClass: "leaveActiveClass", leaveToClass: "leaveToClass", hideOnOutsideClick: "hideOnOutsideClick", toggleClass: "toggleClass" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pStyleClass]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { selector: [{
+                type: Input,
+                args: ['pStyleClass']
+            }], enterClass: [{
+                type: Input
+            }], enterActiveClass: [{
+                type: Input
+            }], enterToClass: [{
+                type: Input
+            }], leaveClass: [{
+                type: Input
+            }], leaveActiveClass: [{
+                type: Input
+            }], leaveToClass: [{
+                type: Input
+            }], hideOnOutsideClick: [{
+                type: Input
+            }], toggleClass: [{
+                type: Input
+            }] } });
+class StyleClassModule {
+}
+StyleClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StyleClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, declarations: [StyleClass], imports: [CommonModule], exports: [StyleClass] });
+StyleClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [StyleClass],
+                    declarations: [StyleClass]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { StyleClass, StyleClassModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-styleclass.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-styleclass.mjs","sources":["../../src/app/components/styleclass/styleclass.ts","../../src/app/components/styleclass/primeng-styleclass.ts"],"sourcesContent":["import { CommonModule} from '@angular/common';\nimport { NgModule, Directive, ElementRef, Input, Renderer2, OnDestroy, AfterViewInit } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\n\n@Directive({\n    selector: '[pStyleClass]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class StyleClass implements AfterViewInit, OnDestroy {\n\n    constructor(public el: ElementRef, public renderer: Renderer2) {}\n\n    @Input('pStyleClass') selector: string;\n\n    @Input() enterClass: string;\n\n    @Input() enterActiveClass: string;\n\n    @Input() enterToClass: string;\n\n    @Input() leaveClass: string;\n\n    @Input() leaveActiveClass: string;\n\n    @Input() leaveToClass: string;\n\n    @Input() hideOnOutsideClick: boolean;\n\n    @Input() toggleClass: string;\n\n    eventListener: Function;\n\n    documentListener: Function;\n\n    target: HTMLElement;\n\n    enterListener: Function;\n\n    leaveListener: Function;\n\n    animating: boolean;\n\n    ngAfterViewInit() {\n        this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {\n            this.target = this.resolveTarget();\n\n            if (this.toggleClass) {\n                if (DomHandler.hasClass(this.target, this.toggleClass))\n                    DomHandler.removeClass(this.target, this.toggleClass);\n                else\n                    DomHandler.addClass(this.target, this.toggleClass);\n            }\n            else {\n                if (this.target.offsetParent === null)\n                    this.enter();\n                else\n                    this.leave();\n            }\n        });\n    }\n\n    enter() {\n        if (this.enterActiveClass) {\n            if (!this.animating) {\n                this.animating = true;\n\n                if (this.enterActiveClass === 'slidedown') {\n                    this.target.style.height = '0px';\n                    DomHandler.removeClass(this.target, 'hidden');\n                    this.target.style.maxHeight = this.target.scrollHeight + 'px';\n                    DomHandler.addClass(this.target, 'hidden');\n                    this.target.style.height = '';\n                }\n\n                DomHandler.addClass(this.target, this.enterActiveClass);\n                if (this.enterClass) {\n                    DomHandler.removeClass(this.target, this.enterClass);\n                }\n\n                this.enterListener = this.renderer.listen(this.target, 'animationend', () => {\n                    DomHandler.removeClass(this.target, this.enterActiveClass);\n                    if (this.enterToClass) {\n                        DomHandler.addClass(this.target, this.enterToClass);\n                    }\n                    this.enterListener();\n\n                    if (this.enterActiveClass === 'slidedown') {\n                        this.target.style.maxHeight = '';\n                    }\n                    this.animating = false;\n                });\n            }\n        }\n        else {\n            if (this.enterClass) {\n                DomHandler.removeClass(this.target, this.enterClass);\n            }\n\n            if (this.enterToClass) {\n                DomHandler.addClass(this.target, this.enterToClass);\n            }\n        }\n\n        if (this.hideOnOutsideClick) {\n            this.bindDocumentListener();\n        }\n    }\n\n    leave() {\n        if (this.leaveActiveClass) {\n            if (!this.animating) {\n                this.animating = true;\n                DomHandler.addClass(this.target, this.leaveActiveClass);\n                if (this.leaveClass) {\n                    DomHandler.removeClass(this.target, this.leaveClass);\n                }\n\n                this.leaveListener = this.renderer.listen(this.target, 'animationend', () => {\n                    DomHandler.removeClass(this.target, this.leaveActiveClass);\n                    if (this.leaveToClass) {\n                        DomHandler.addClass(this.target, this.leaveToClass);\n                    }\n                    this.leaveListener();\n                    this.animating = false;\n                });\n            }\n        }\n        else {\n            if (this.leaveClass) {\n                DomHandler.removeClass(this.target, this.leaveClass);\n            }\n\n            if (this.leaveToClass) {\n                DomHandler.addClass(this.target, this.leaveToClass);\n            }\n        }\n\n        if (this.hideOnOutsideClick) {\n            this.unbindDocumentListener();\n        }\n    }\n\n    resolveTarget() {\n        if (this.target) {\n            return this.target;\n        }\n\n        switch (this.selector) {\n            case '@next':\n                return this.el.nativeElement.nextElementSibling;\n\n            case '@prev':\n                return this.el.nativeElement.previousElementSibling;\n\n            case '@parent':\n                return this.el.nativeElement.parentElement;\n\n            case '@grandparent':\n                return this.el.nativeElement.parentElement.parentElement;\n\n            default:\n                return document.querySelector(this.selector);\n        }\n    }\n\n    bindDocumentListener() {\n        if (!this.documentListener) {\n            this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', event => {\n                if (getComputedStyle(this.target).getPropertyValue('position') === 'static') {\n                    this.unbindDocumentListener();\n                }\n                else  if (!this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target)) {\n                    this.leave();\n                }\n            });\n        }\n    }\n\n    unbindDocumentListener() {\n        if (this.documentListener) {\n            this.documentListener();\n            this.documentListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.target = null;\n        if (this.eventListener) {\n            this.eventListener();\n        }\n        this.unbindDocumentListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [StyleClass],\n    declarations: [StyleClass]\n})\nexport class StyleClassModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4557 @@
+import * as i0 from '@angular/core';
+import { Injectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, Directive, HostListener, Optional, NgModule } from '@angular/core';
+import * as i4 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i9 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i1 from 'primeng/api';
+import { FilterOperator, FilterMatchMode, PrimeTemplate, TranslationKeys, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+import * as i8 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i11 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { SelectButtonModule } from 'primeng/selectbutton';
+import * as i6 from 'primeng/tristatecheckbox';
+import { TriStateCheckboxModule } from 'primeng/tristatecheckbox';
+import * as i7 from 'primeng/calendar';
+import { CalendarModule } from 'primeng/calendar';
+import * as i5 from 'primeng/inputnumber';
+import { InputNumberModule } from 'primeng/inputnumber';
+import * as i10 from 'primeng/dropdown';
+import { DropdownModule } from 'primeng/dropdown';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { Subject } from 'rxjs';
+import * as i3 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import { trigger, transition, style, animate } from '@angular/animations';
+
+class TableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.valueSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.columnsSource = new Subject();
+        this.resetSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.valueSource$ = this.valueSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+        this.columnsSource$ = this.columnsSource.asObservable();
+        this.resetSource$ = this.resetSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onResetChange() {
+        this.resetSource.next(null);
+    }
+    onContextMenu(data) {
+        this.contextMenuSource.next(data);
+    }
+    onValueChange(value) {
+        this.valueSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+    onColumnsChange(columns) {
+        this.columnsSource.next(columns);
+    }
+}
+TableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, decorators: [{
+            type: Injectable
+        }] });
+class Table {
+    constructor(el, zone, tableService, cd, filterService, overlayService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.overlayService = overlayService;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.rowTrackBy = (index, item) => item;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.compareSelectionBy = 'deepEquals';
+        this.csvSeparator = ',';
+        this.exportFilename = 'download';
+        this.filters = {};
+        this.filterDelay = 300;
+        this.expandedRowKeys = {};
+        this.editingRowKeys = {};
+        this.rowExpandMode = 'multiple';
+        this.scrollDirection = "vertical";
+        this.virtualScrollDelay = 250;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.showInitialSortBadge = true;
+        this.stateStorage = 'session';
+        this.editMode = 'cell';
+        this.groupRowsByOrder = 1;
+        this.responsiveLayout = 'stack';
+        this.breakpoint = '960px';
+        this.onRowSelect = new EventEmitter();
+        this.onRowUnselect = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.onRowExpand = new EventEmitter();
+        this.onRowCollapse = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onRowReorder = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.firstChange = new EventEmitter();
+        this.rowsChange = new EventEmitter();
+        this.onStateSave = new EventEmitter();
+        this.onStateRestore = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._first = 0;
+        this.selectionKeys = {};
+        this._sortOrder = 1;
+        this.columnResizing = false;
+        this.rowGroupHeaderStyleObject = {};
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            if (!this.virtualScroll) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            if (this.restoringFilter) {
+                this.restoringFilter = false;
+            }
+        }
+        if (this.responsiveLayout === 'stack' && !this.scrollable) {
+            this.createResponsiveStyle();
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'headergrouped':
+                    this.headerGroupedTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'footergrouped':
+                    this.footerGroupedTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'rowexpansion':
+                    this.expandedRowTemplate = item.template;
+                    break;
+                case 'groupheader':
+                    this.groupHeaderTemplate = item.template;
+                    break;
+                case 'rowspan':
+                    this.rowspanTemplate = item.template;
+                    break;
+                case 'groupfooter':
+                    this.groupFooterTemplate = item.template;
+                    break;
+                case 'frozenrows':
+                    this.frozenRowsTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+                case 'frozenrowexpansion':
+                    this.frozenExpandedRowTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.isStateful() && this.resizableColumns) {
+            this.restoreColumnWidths();
+        }
+        if (this.scrollable && this.virtualScroll) {
+            this.virtualScrollSubscription = this.virtualScrollBody.renderedRangeStream.subscribe(range => {
+                let top = range.start * this.virtualRowHeight * -1;
+                this.tableHeaderViewChild.nativeElement.style.top = top + 'px';
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.isStateful() && !this.stateRestored) {
+                this.restoreState();
+            }
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.tableService.onValueChange(simpleChange.value.currentValue);
+        }
+        if (simpleChange.columns) {
+            this._columns = simpleChange.columns.currentValue;
+            this.tableService.onColumnsChange(simpleChange.columns.currentValue);
+            if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored) {
+                this.restoreColumnOrder();
+            }
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsBy) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsByOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    get columns() {
+        return this._columns;
+    }
+    set columns(cols) {
+        this._columns = cols;
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    get rows() {
+        return this._rows;
+    }
+    set rows(val) {
+        this._rows = val;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    get dataToRender() {
+        let data = this.filteredValue || this.value;
+        return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let data of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.firstChange.emit(this.first);
+        this.rowsChange.emit(this.rows);
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            if (this.resetPageOnSort) {
+                this._first = 0;
+                this.firstChange.emit(this._first);
+                if (this.scrollable) {
+                    this.resetScrollTop();
+                }
+            }
+            this.sortSingle();
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                        if (this.scrollable) {
+                            this.resetScrollTop();
+                        }
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                    }
+                }
+                this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+    }
+    sortSingle() {
+        let field = this.sortField || this.groupRowsBy;
+        let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;
+        if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {
+            this._multiSortMeta = [this.getGroupRowsMeta(), { field: this.sortField, order: this.sortOrder }];
+            this.sortMultiple();
+            return;
+        }
+        if (field && order) {
+            if (this.restoringSort) {
+                this.restoringSort = false;
+            }
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        field: field,
+                        order: order
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        let value1 = ObjectUtils.resolveFieldData(data1, field);
+                        let value2 = ObjectUtils.resolveFieldData(data2, field);
+                        let result = null;
+                        if (value1 == null && value2 != null)
+                            result = -1;
+                        else if (value1 != null && value2 == null)
+                            result = 1;
+                        else if (value1 == null && value2 == null)
+                            result = 0;
+                        else if (typeof value1 === 'string' && typeof value2 === 'string')
+                            result = value1.localeCompare(value2);
+                        else
+                            result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                        return (order * result);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: field,
+                order: order
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+        }
+    }
+    sortMultiple() {
+        if (this.groupRowsBy) {
+            if (!this._multiSortMeta)
+                this._multiSortMeta = [this.getGroupRowsMeta()];
+            else if (this.multiSortMeta[0].field !== this.groupRowsBy)
+                this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta];
+        }
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        return this.multisortField(data1, data2, this.multiSortMeta, 0);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    multisortField(data1, data2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        else if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    handleRowClick(event) {
+        let target = event.originalEvent.target;
+        let targetNode = target.nodeName;
+        let parentNode = target.parentElement && target.parentElement.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||
+            parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||
+            (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {
+                DomHandler.clearSelection();
+                if (this.rangeRowIndex != null) {
+                    this.clearSelectionRange(event.originalEvent);
+                }
+                this.rangeRowIndex = event.rowIndex;
+                this.selectRange(event.originalEvent, event.rowIndex);
+            }
+            else {
+                let rowData = event.rowData;
+                let selected = this.isSelected(rowData);
+                let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                this.anchorRowIndex = event.rowIndex;
+                this.rangeRowIndex = event.rowIndex;
+                if (metaSelection) {
+                    let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = rowData;
+                            this.selectionChange.emit(rowData);
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            if (metaKey) {
+                                this._selection = this.selection || [];
+                            }
+                            else {
+                                this._selection = [];
+                                this.selectionKeys = {};
+                            }
+                            this._selection = [...this.selection, rowData];
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                    }
+                }
+                else {
+                    if (this.selectionMode === 'single') {
+                        if (selected) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                        }
+                        else {
+                            this._selection = rowData;
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                    else if (this.selectionMode === 'multiple') {
+                        if (selected) {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        else {
+                            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const rowData = event.rowData;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = rowData;
+                this.contextMenuSelectionChange.emit(rowData);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, data: rowData, index: event.rowIndex });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(rowData);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(rowData);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = rowData;
+                        this.selectionChange.emit(rowData);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                this.tableService.onSelectionChange();
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event, data: rowData, index: event.rowIndex });
+            }
+        }
+    }
+    selectRange(event, rowIndex) {
+        let rangeStart, rangeEnd;
+        if (this.anchorRowIndex > rowIndex) {
+            rangeStart = rowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else if (this.anchorRowIndex < rowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = rowIndex;
+        }
+        else {
+            rangeStart = rowIndex;
+            rangeEnd = rowIndex;
+        }
+        if (this.lazy && this.paginator) {
+            rangeStart -= this.first;
+            rangeEnd -= this.first;
+        }
+        let rangeRowsData = [];
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];
+            if (!this.isSelected(rangeRowData)) {
+                rangeRowsData.push(rangeRowData);
+                this._selection = [...this.selection, rangeRowData];
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+        }
+        this.selectionChange.emit(this.selection);
+        this.onRowSelect.emit({ originalEvent: event, data: rangeRowsData, type: 'row' });
+    }
+    clearSelectionRange(event) {
+        let rangeStart, rangeEnd;
+        if (this.rangeRowIndex > this.anchorRowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        else if (this.rangeRowIndex < this.anchorRowIndex) {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.value[i];
+            let selectionIndex = this.findIndexInSelection(rangeRowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+            this.onRowUnselect.emit({ originalEvent: event, data: rangeRowData, type: 'row' });
+        }
+    }
+    isSelected(rowData) {
+        if (rowData && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(rowData) > -1;
+                else
+                    return this.equals(rowData, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(rowData) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(rowData, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    toggleRowWithRadio(event, rowData) {
+        this.preventSelectionSetterPropagation = true;
+        if (this.selection != rowData) {
+            this._selection = rowData;
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+            if (this.dataKey) {
+                this.selectionKeys = {};
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;
+            }
+        }
+        else {
+            this._selection = null;
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowWithCheckbox(event, rowData) {
+        this.selection = this.selection || [];
+        let selected = this.isSelected(rowData);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+        this.preventSelectionSetterPropagation = true;
+        if (selected) {
+            let selectionIndex = this.findIndexInSelection(rowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        else {
+            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowsWithCheckbox(event, check) {
+        this._selection = check ? this.filteredValue ? this.filteredValue.slice() : this.value.slice() : [];
+        this.preventSelectionSetterPropagation = true;
+        this.updateSelectionKeys();
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    equals(data1, data2) {
+        return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);
+    }
+    /* Legacy Filtering for custom elements */
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+        this.anchorRowIndex = null;
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (!this.restoringFilter) {
+            this.first = 0;
+            this.firstChange.emit(this.first);
+        }
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredValue = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredValue = [];
+                for (let i = 0; i < this.value.length; i++) {
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let localFiltered = false;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            localFiltered = true;
+                            let filterField = prop;
+                            let filterMeta = this.filters[filterField];
+                            if (Array.isArray(filterMeta)) {
+                                for (let meta of filterMeta) {
+                                    localMatch = this.executeLocalFilter(filterField, this.value[i], meta);
+                                    if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {
+                                        break;
+                                    }
+                                }
+                            }
+                            else {
+                                localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let globalFilterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            globalMatch = this.filterService.filters[this.filters['global'].matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), this.filters['global'].value, this.filterLocale);
+                            if (globalMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    let matches;
+                    if (this.filters['global']) {
+                        matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;
+                    }
+                    else {
+                        matches = localFiltered && localMatch;
+                    }
+                    if (matches) {
+                        this.filteredValue.push(this.value[i]);
+                    }
+                }
+                if (this.filteredValue.length === this.value.length) {
+                    this.filteredValue = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: this.filteredValue || this.value
+        });
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful() && !this.restoringFilter) {
+            this.saveState();
+        }
+        if (this.restoringFilter) {
+            this.restoringFilter = false;
+        }
+        this.cd.markForCheck();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    executeLocalFilter(field, rowData, filterMeta) {
+        let filterValue = filterMeta.value;
+        let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;
+        let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);
+        let filterConstraint = this.filterService.filters[filterMatchMode];
+        return filterConstraint(dataFieldValue, filterValue, this.filterLocale);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    clear() {
+        this._sortField = null;
+        this._sortOrder = this.defaultSortOrder;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredValue = null;
+        this.tableService.onResetChange();
+        this.first = 0;
+        this.firstChange.emit(this.first);
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    reset() {
+        this.clear();
+    }
+    exportCSV(options) {
+        let data;
+        let csv = '';
+        let columns = this.frozenColumns ? [...this.frozenColumns, ...this.columns] : this.columns;
+        if (options && options.selectionOnly) {
+            data = this.selection || [];
+        }
+        else {
+            data = this.filteredValue || this.value;
+            if (this.frozenValue) {
+                data = data ? [...this.frozenValue, ...data] : this.frozenValue;
+            }
+        }
+        //headers
+        for (let i = 0; i < columns.length; i++) {
+            let column = columns[i];
+            if (column.exportable !== false && column.field) {
+                csv += '"' + (column.header || column.field) + '"';
+                if (i < (columns.length - 1)) {
+                    csv += this.csvSeparator;
+                }
+            }
+        }
+        //body
+        data.forEach((record, i) => {
+            csv += '\n';
+            for (let i = 0; i < columns.length; i++) {
+                let column = columns[i];
+                if (column.exportable !== false && column.field) {
+                    let cellData = ObjectUtils.resolveFieldData(record, column.field);
+                    if (cellData != null) {
+                        if (this.exportFunction) {
+                            cellData = this.exportFunction({
+                                data: cellData,
+                                field: column.field
+                            });
+                        }
+                        else
+                            cellData = String(cellData).replace(/"/g, '""');
+                    }
+                    else
+                        cellData = '';
+                    csv += '"' + cellData + '"';
+                    if (i < (columns.length - 1)) {
+                        csv += this.csvSeparator;
+                    }
+                }
+            }
+        });
+        let blob = new Blob([csv], {
+            type: 'text/csv;charset=utf-8;'
+        });
+        let link = document.createElement("a");
+        link.style.display = 'none';
+        document.body.appendChild(link);
+        if (link.download !== undefined) {
+            link.setAttribute('href', URL.createObjectURL(blob));
+            link.setAttribute('download', this.exportFilename + '.csv');
+            link.click();
+        }
+        else {
+            csv = 'data:text/csv;charset=utf-8,' + csv;
+            window.open(encodeURI(csv));
+        }
+        document.body.removeChild(link);
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({
+                        first: virtualScrollOffset,
+                        rows: virtualScrollChunkSize,
+                        sortField: this.sortField,
+                        sortOrder: this.sortOrder,
+                        filters: this.filters,
+                        globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+            }, this.virtualScrollDelay);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.wrapperViewChild.nativeElement.scrollTo) {
+                this.wrapperViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.wrapperViewChild.nativeElement.scrollLeft = options.left;
+                this.wrapperViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    updateEditingCell(cell, data, field, index) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.editingCellRowIndex = index;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.editingCellRowIndex = null;
+                    this.unbindDocumentEditListener();
+                    this.cd.markForCheck();
+                    if (this.overlaySubscription) {
+                        this.overlaySubscription.unsubscribe();
+                    }
+                }
+                this.selfClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    initRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        this.editingRowKeys[dataKeyValue] = true;
+    }
+    saveRowEdit(rowData, rowElement) {
+        if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {
+            let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+            delete this.editingRowKeys[dataKeyValue];
+        }
+    }
+    cancelRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        delete this.editingRowKeys[dataKeyValue];
+    }
+    toggleRow(rowData, event) {
+        if (!this.dataKey) {
+            throw new Error('dataKey must be defined to use row expansion');
+        }
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        if (this.expandedRowKeys[dataKeyValue] != null) {
+            delete this.expandedRowKeys[dataKeyValue];
+            this.onRowCollapse.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        else {
+            if (this.rowExpandMode === 'single') {
+                this.expandedRowKeys = {};
+            }
+            this.expandedRowKeys[dataKeyValue] = true;
+            this.onRowExpand.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        if (event) {
+            event.preventDefault();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    isRowExpanded(rowData) {
+        return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isRowEditing(rowData) {
+        return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.resizeColumnElement = event.target.parentElement;
+        this.columnResizing = true;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        this.onColumnResize(event);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd() {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = this.resizeColumnElement.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = this.resizeColumnElement.style.minWidth || 15;
+        if (newColumnWidth >= minWidth) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = this.resizeColumnElement.nextElementSibling;
+                let nextColumnWidth = nextColumn.offsetWidth - delta;
+                if (newColumnWidth > 15 && nextColumnWidth > 15) {
+                    if (!this.scrollable) {
+                        this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                        if (nextColumn) {
+                            nextColumn.style.width = nextColumnWidth + 'px';
+                        }
+                    }
+                    else {
+                        this.resizeTableCells(newColumnWidth, nextColumnWidth);
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;
+                this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';
+                this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                if (!this.scrollable)
+                    this.tableViewChild.nativeElement.style.width = tableWidth + 'px';
+                else
+                    this.resizeTableCells(newColumnWidth, null);
+            }
+            this.onColResize.emit({
+                element: this.resizeColumnElement,
+                delta: delta
+            });
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    resizeTableCells(newColumnWidth, nextColumnWidth) {
+        let colIndex = DomHandler.index(this.resizeColumnElement);
+        let widths = [];
+        const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');
+        let headers = DomHandler.find(tableHead, 'tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        this.destroyStyleElement();
+        this.createStyleElement();
+        let innerHTML = '';
+        widths.forEach((width, index) => {
+            let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;
+            innerHTML += `
+                #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+
+                #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+            `;
+        });
+        this.styleElement.innerHTML = innerHTML;
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+                let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+                }
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+                if (this.isStateful()) {
+                    this.zone.runOutsideAngular(() => {
+                        setTimeout(() => {
+                            this.saveState();
+                        });
+                    });
+                }
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    onRowDragStart(event, index) {
+        this.rowDragging = true;
+        this.draggedRowIndex = index;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onRowDragOver(event, index, rowElement) {
+        if (this.rowDragging && this.draggedRowIndex !== index) {
+            let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();
+            let pageY = event.pageY;
+            let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;
+            let prevRowElement = rowElement.previousElementSibling;
+            if (pageY < rowMidY) {
+                DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+                this.droppedRowIndex = index;
+                if (prevRowElement)
+                    DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+            }
+            else {
+                if (prevRowElement)
+                    DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+                this.droppedRowIndex = index + 1;
+                DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');
+            }
+        }
+    }
+    onRowDragLeave(event, rowElement) {
+        let prevRowElement = rowElement.previousElementSibling;
+        if (prevRowElement) {
+            DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+        }
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');
+    }
+    onRowDragEnd(event) {
+        this.rowDragging = false;
+        this.draggedRowIndex = null;
+        this.droppedRowIndex = null;
+    }
+    onRowDrop(event, rowElement) {
+        if (this.droppedRowIndex != null) {
+            let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;
+            ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);
+            this.onRowReorder.emit({
+                dragIndex: this.draggedRowIndex,
+                dropIndex: dropIndex
+            });
+        }
+        //cleanup
+        this.onRowDragLeave(event, rowElement);
+        this.onRowDragEnd(event);
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    saveState() {
+        const storage = this.getStorage();
+        let state = {};
+        if (this.paginator) {
+            state.first = this.first;
+            state.rows = this.rows;
+        }
+        if (this.sortField) {
+            state.sortField = this.sortField;
+            state.sortOrder = this.sortOrder;
+        }
+        if (this.multiSortMeta) {
+            state.multiSortMeta = this.multiSortMeta;
+        }
+        if (this.hasFilter()) {
+            state.filters = this.filters;
+        }
+        if (this.resizableColumns) {
+            this.saveColumnWidths(state);
+        }
+        if (this.reorderableColumns) {
+            this.saveColumnOrder(state);
+        }
+        if (this.selection) {
+            state.selection = this.selection;
+        }
+        if (Object.keys(this.expandedRowKeys).length) {
+            state.expandedRowKeys = this.expandedRowKeys;
+        }
+        storage.setItem(this.stateKey, JSON.stringify(state));
+        this.onStateSave.emit(state);
+    }
+    clearState() {
+        const storage = this.getStorage();
+        if (this.stateKey) {
+            storage.removeItem(this.stateKey);
+        }
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        const dateFormat = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
+        const reviver = function (key, value) {
+            if (typeof value === "string" && dateFormat.test(value)) {
+                return new Date(value);
+            }
+            return value;
+        };
+        if (stateString) {
+            let state = JSON.parse(stateString, reviver);
+            if (this.paginator) {
+                if (this.first !== undefined) {
+                    this.first = state.first;
+                    this.firstChange.emit(this.first);
+                }
+                if (this.rows !== undefined) {
+                    this.rows = state.rows;
+                    this.rowsChange.emit(this.rows);
+                }
+            }
+            if (state.sortField) {
+                this.restoringSort = true;
+                this._sortField = state.sortField;
+                this._sortOrder = state.sortOrder;
+            }
+            if (state.multiSortMeta) {
+                this.restoringSort = true;
+                this._multiSortMeta = state.multiSortMeta;
+            }
+            if (state.filters) {
+                this.restoringFilter = true;
+                this.filters = state.filters;
+            }
+            if (this.resizableColumns) {
+                this.columnWidthsState = state.columnWidths;
+                this.tableWidthState = state.tableWidth;
+            }
+            if (state.expandedRowKeys) {
+                this.expandedRowKeys = state.expandedRowKeys;
+            }
+            if (state.selection) {
+                Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));
+            }
+            this.stateRestored = true;
+            this.onStateRestore.emit(state);
+        }
+    }
+    saveColumnWidths(state) {
+        let widths = [];
+        let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        state.columnWidths = widths.join(',');
+        if (this.columnResizeMode === 'expand') {
+            state.tableWidth = DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';
+        }
+    }
+    restoreColumnWidths() {
+        if (this.columnWidthsState) {
+            let widths = this.columnWidthsState.split(',');
+            if (this.columnResizeMode === 'expand' && this.tableWidthState) {
+                this.tableViewChild.nativeElement.style.width = this.tableWidthState;
+                this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;
+                this.containerViewChild.nativeElement.style.width = this.tableWidthState;
+            }
+            this.createStyleElement();
+            if (this.scrollable && widths && widths.length > 0) {
+                let innerHTML = '';
+                widths.forEach((width, index) => {
+                    innerHTML += `
+                            #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+
+                            #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+                        `;
+                });
+                this.styleElement.innerHTML = innerHTML;
+            }
+            else {
+                DomHandler.find(this.tableViewChild.nativeElement, '.p-datatable-thead > tr > th').forEach((header, index) => {
+                    header.style.width = widths[index] + 'px';
+                });
+            }
+        }
+    }
+    saveColumnOrder(state) {
+        if (this.columns) {
+            let columnOrder = [];
+            this.columns.map(column => {
+                columnOrder.push(column.field || column.key);
+            });
+            state.columnOrder = columnOrder;
+        }
+    }
+    restoreColumnOrder() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            let state = JSON.parse(stateString);
+            let columnOrder = state.columnOrder;
+            if (columnOrder) {
+                let reorderedColumns = [];
+                columnOrder.map(key => {
+                    let col = this.findColumnByKey(key);
+                    if (col) {
+                        reorderedColumns.push(col);
+                    }
+                });
+                this.columnOrderStateRestored = true;
+                this.columns = reorderedColumns;
+            }
+        }
+    }
+    findColumnByKey(key) {
+        if (this.columns) {
+            for (let col of this.columns) {
+                if (col.key === key || col.field === key)
+                    return col;
+                else
+                    continue;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    createStyleElement() {
+        this.styleElement = document.createElement('style');
+        this.styleElement.type = 'text/css';
+        document.head.appendChild(this.styleElement);
+    }
+    getGroupRowsMeta() {
+        return { field: this.groupRowsBy, order: this.groupRowsByOrder };
+    }
+    createResponsiveStyle() {
+        if (!this.responsiveStyleElement) {
+            this.responsiveStyleElement = document.createElement('style');
+            this.responsiveStyleElement.type = 'text/css';
+            document.head.appendChild(this.responsiveStyleElement);
+            let innerHTML = `
+@media screen and (max-width: ${this.breakpoint}) {
+    #${this.id} .p-datatable-thead > tr > th,
+    #${this.id} .p-datatable-tfoot > tr > td {
+        display: none !important;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td {
+        display: flex;
+        width: 100% !important;
+        align-items: center;
+        justify-content: space-between;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {
+        border: 0 none;
+    }
+
+    #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {
+        border-top: 0;
+        border-right: 0;
+        border-left: 0;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td > .p-column-title {
+        display: block;
+    }
+}
+`;
+            this.responsiveStyleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyResponsiveStyle() {
+        if (this.responsiveStyleElement) {
+            document.head.removeChild(this.responsiveStyleElement);
+            this.responsiveStyleElement = null;
+        }
+    }
+    destroyStyleElement() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.initialized = null;
+        if (this.virtualScrollSubscription) {
+            this.virtualScrollSubscription.unsubscribe();
+        }
+        this.destroyStyleElement();
+        this.destroyResponsiveStyle();
+    }
+}
+Table.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Table, selector: "p-table", inputs: { frozenColumns: "frozenColumns", frozenValue: "frozenValue", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", paginator: "paginator", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", rowTrackBy: "rowTrackBy", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", compareSelectionBy: "compareSelectionBy", csvSeparator: "csvSeparator", exportFilename: "exportFilename", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterLocale: "filterLocale", expandedRowKeys: "expandedRowKeys", editingRowKeys: "editingRowKeys", rowExpandMode: "rowExpandMode", scrollable: "scrollable", scrollDirection: "scrollDirection", rowGroupMode: "rowGroupMode", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", frozenWidth: "frozenWidth", responsive: "responsive", contextMenu: "contextMenu", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", rowHover: "rowHover", customSort: "customSort", showInitialSortBadge: "showInitialSortBadge", autoLayout: "autoLayout", exportFunction: "exportFunction", stateKey: "stateKey", stateStorage: "stateStorage", editMode: "editMode", groupRowsBy: "groupRowsBy", groupRowsByOrder: "groupRowsByOrder", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", responsiveLayout: "responsiveLayout", breakpoint: "breakpoint", value: "value", columns: "columns", first: "first", rows: "rows", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect", onPage: "onPage", onSort: "onSort", onFilter: "onFilter", onLazyLoad: "onLazyLoad", onRowExpand: "onRowExpand", onRowCollapse: "onRowCollapse", onContextMenuSelect: "onContextMenuSelect", onColResize: "onColResize", onColReorder: "onColReorder", onRowReorder: "onRowReorder", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", sortFunction: "sortFunction", firstChange: "firstChange", rowsChange: "rowsChange", onStateSave: "onStateSave", onStateRestore: "onStateRestore" }, host: { classAttribute: "p-element" }, providers: [TableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "tableHeaderViewChild", first: true, predicate: ["tableHeader"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TableBody; }), selector: "[pTableBody]", inputs: ["pTableBody", "pTableBodyTemplate", "value", "frozen", "frozenRows"] }, { type: i0.forwardRef(function () { return i3.CdkVirtualScrollViewport; }), selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i0.forwardRef(function () { return i3.CdkFixedSizeVirtualScroll; }), selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-table', template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TableService], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.OverlayService }]; }, propDecorators: { frozenColumns: [{
+                type: Input
+            }], frozenValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], csvSeparator: [{
+                type: Input
+            }], exportFilename: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], expandedRowKeys: [{
+                type: Input
+            }], editingRowKeys: [{
+                type: Input
+            }], rowExpandMode: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollDirection: [{
+                type: Input
+            }], rowGroupMode: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], showInitialSortBadge: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], exportFunction: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], editMode: [{
+                type: Input
+            }], groupRowsBy: [{
+                type: Input
+            }], groupRowsByOrder: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], responsiveLayout: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onRowSelect: [{
+                type: Output
+            }], onRowUnselect: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], onRowExpand: [{
+                type: Output
+            }], onRowCollapse: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onRowReorder: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], firstChange: [{
+                type: Output
+            }], rowsChange: [{
+                type: Output
+            }], onStateSave: [{
+                type: Output
+            }], onStateRestore: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], wrapperViewChild: [{
+                type: ViewChild,
+                args: ['wrapper']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], tableHeaderViewChild: [{
+                type: ViewChild,
+                args: ['tableHeader']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], columns: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+class TableBody {
+    constructor(dt, tableService, cd, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.el = el;
+        this.subscription = this.dt.tableService.valueSource$.subscribe(() => {
+            if (this.dt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    shouldRenderRowGroupHeader(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowGroupFooter(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowData = value[i + 1];
+        if (nextRowData) {
+            let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== nextRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowspan(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    calculateRowGroupSize(value, rowData, index) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowFieldData = currentRowFieldData;
+        let groupRowSpan = 0;
+        while (currentRowFieldData === nextRowFieldData) {
+            groupRowSpan++;
+            let nextRowData = value[++index];
+            if (nextRowData) {
+                nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            }
+            else {
+                break;
+            }
+        }
+        return groupRowSpan === 1 ? null : groupRowSpan;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+    updateFrozenRowStickyPosition() {
+        this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';
+    }
+    updateFrozenRowGroupHeaderStickyPosition() {
+        if (this.el.nativeElement.previousElementSibling) {
+            let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);
+            this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';
+        }
+    }
+}
+TableBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+TableBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableBody, selector: "[pTableBody]", inputs: { columns: ["pTableBody", "columns"], template: ["pTableBodyTemplate", "template"], value: "value", frozen: "frozen", frozenRows: "frozenRows" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTableBody]',
+                    template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.Default,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTableBodyTemplate"]
+            }], value: [{
+                type: Input
+            }], frozen: [{
+                type: Input
+            }], frozenRows: [{
+                type: Input
+            }] } });
+class RowGroupHeader {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    get getFrozenRowGroupHeaderStickyPosition() {
+        return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';
+    }
+}
+RowGroupHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowGroupHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowGroupHeader, selector: "[pRowGroupHeader]", host: { properties: { "style.top": "getFrozenRowGroupHeaderStickyPosition" }, classAttribute: "p-rowgroup-header p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowGroupHeader]',
+                    host: {
+                        'class': 'p-rowgroup-header p-element',
+                        '[style.top]': "getFrozenRowGroupHeaderStickyPosition"
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; } });
+class FrozenColumn {
+    constructor(el) {
+        this.el = el;
+        this.alignFrozen = "left";
+        this._frozen = true;
+    }
+    get frozen() {
+        return this._frozen;
+    }
+    set frozen(val) {
+        this._frozen = val;
+        this.updateStickyPosition();
+    }
+    ngAfterViewInit() {
+        this.updateStickyPosition();
+    }
+    updateStickyPosition() {
+        if (this._frozen) {
+            if (this.alignFrozen === 'right') {
+                let right = 0;
+                let next = this.el.nativeElement.nextElementSibling;
+                if (next) {
+                    right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right);
+                }
+                this.el.nativeElement.style.right = right + 'px';
+            }
+            else {
+                let left = 0;
+                let prev = this.el.nativeElement.previousElementSibling;
+                if (prev) {
+                    left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);
+                }
+                this.el.nativeElement.style.left = left + 'px';
+            }
+            let filterRow = this.el.nativeElement.parentElement.nextElementSibling;
+            if (filterRow) {
+                let index = DomHandler.index(this.el.nativeElement);
+                if (filterRow.children && filterRow.children[index]) {
+                    filterRow.children[index].style.left = this.el.nativeElement.style.left;
+                    filterRow.children[index].style.right = this.el.nativeElement.style.right;
+                }
+            }
+        }
+    }
+}
+FrozenColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FrozenColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FrozenColumn, selector: "[pFrozenColumn]", inputs: { frozen: "frozen", alignFrozen: "alignFrozen" }, host: { properties: { "class.p-frozen-column": "frozen" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFrozenColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-frozen-column]': 'frozen'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { frozen: [{
+                type: Input
+            }], alignFrozen: [{
+                type: Input
+            }] } });
+class SortableColumn {
+    constructor(dt) {
+        this.dt = dt;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.dt.isSorted(this.field);
+        this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';
+    }
+    onClick(event) {
+        if (this.isEnabled() && !this.isFilterElement(event.target)) {
+            this.updateSortState();
+            this.dt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.pSortableColumnDisabled !== true;
+    }
+    isFilterElement(element) {
+        return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+SortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SortableColumn, selector: "[pSortableColumn]", inputs: { field: ["pSortableColumn", "field"], pSortableColumnDisabled: "pSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"", "attr.aria-sort": "sortOrder" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"',
+                        '[attr.aria-sort]': 'sortOrder'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["pSortableColumn"]
+            }], pSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+class SortIcon {
+    constructor(dt, cd) {
+        this.dt = dt;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.dt.sortMode === 'single') {
+            this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;
+        }
+        else if (this.dt.sortMode === 'multiple') {
+            let sortMeta = this.dt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+        this.cd.markForCheck();
+    }
+    getMultiSortMetaIndex() {
+        let multiSortMeta = this.dt._multiSortMeta;
+        let index = -1;
+        if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {
+            for (let i = 0; i < multiSortMeta.length; i++) {
+                let meta = multiSortMeta[i];
+                if (meta.field === this.field || meta.field === this.field) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    getBadgeValue() {
+        let index = this.getMultiSortMetaIndex();
+        return this.dt.groupRowsBy && index > -1 ? index : index + 1;
+    }
+    isMultiSorted() {
+        return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, deps: [{ token: Table }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SortIcon, selector: "p-sortIcon", inputs: { field: "field" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-sortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }] } });
+class SelectableRow {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowTouchEnd(event);
+        }
+    }
+    onArrowDownKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const nextRow = this.findNextSelectableRow(row);
+        if (nextRow) {
+            nextRow.focus();
+        }
+        event.preventDefault();
+    }
+    onArrowUpKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const prevRow = this.findPrevSelectableRow(row);
+        if (prevRow) {
+            prevRow.focus();
+        }
+        event.preventDefault();
+    }
+    onEnterKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        this.dt.handleRowClick({
+            originalEvent: event,
+            rowData: this.data,
+            rowIndex: this.index
+        });
+    }
+    onPageDownKeyDown() {
+        if (this.dt.virtualScroll) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    onSpaceKeydown() {
+        if (this.dt.virtualScroll && !this.dt.editingCell) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    findNextSelectableRow(row) {
+        let nextRow = row.nextElementSibling;
+        if (nextRow) {
+            if (DomHandler.hasClass(nextRow, 'p-selectable-row'))
+                return nextRow;
+            else
+                return this.findNextSelectableRow(nextRow);
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevSelectableRow(row) {
+        let prevRow = row.previousElementSibling;
+        if (prevRow) {
+            if (DomHandler.hasClass(prevRow, 'p-selectable-row'))
+                return prevRow;
+            else
+                return this.findPrevSelectableRow(prevRow);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRow, selector: "[pSelectableRow]", inputs: { data: ["pSelectableRow", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "touchend": "onTouchEnd($event)", "keydown.arrowdown": "onArrowDownKeyDown($event)", "keydown.arrowup": "onArrowUpKeyDown($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.shift.enter": "onEnterKeyDown($event)", "keydown.meta.enter": "onEnterKeyDown($event)", "keydown.pagedown": "onPageDownKeyDown()", "keydown.pageup": "onPageDownKeyDown()", "keydown.home": "onPageDownKeyDown()", "keydown.end": "onPageDownKeyDown()", "keydown.space": "onSpaceKeydown()" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRow"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }], onArrowDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUpKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.enter', ['$event']]
+            }], onPageDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.pagedown']
+            }, {
+                type: HostListener,
+                args: ['keydown.pageup']
+            }, {
+                type: HostListener,
+                args: ['keydown.home']
+            }, {
+                type: HostListener,
+                args: ['keydown.end']
+            }], onSpaceKeydown: [{
+                type: HostListener,
+                args: ['keydown.space']
+            }] } });
+class SelectableRowDblClick {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRowDblClick, selector: "[pSelectableRowDblClick]", inputs: { data: ["pSelectableRowDblClick", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRowDblClick"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+class ContextMenuRow {
+    constructor(dt, tableService, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {
+                this.selected = this.dt.equals(this.data, data);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowRightClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, deps: [{ token: Table }, { token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuRow, selector: "[pContextMenuRow]", inputs: { data: ["pContextMenuRow", "data"], index: ["pContextMenuRowIndex", "index"], pContextMenuRowDisabled: "pContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pContextMenuRow"]
+            }], index: [{
+                type: Input,
+                args: ["pContextMenuRowIndex"]
+            }], pContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+class RowToggler {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.toggleRow(this.data, event);
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pRowTogglerDisabled !== true;
+    }
+}
+RowToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowToggler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowToggler, selector: "[pRowToggler]", inputs: { data: ["pRowToggler", "data"], pRowTogglerDisabled: "pRowTogglerDisabled" }, host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowToggler]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ['pRowToggler']
+            }], pRowTogglerDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class ResizableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.which === 1) {
+            this.dt.onColumnResizeBegin(event);
+            this.bindDocumentEvents();
+        }
+    }
+    onDocumentMouseMove(event) {
+        this.dt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.dt.onColumnResizeEnd();
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.pResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+ResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ResizableColumn, selector: "[pResizableColumn]", inputs: { pResizableColumnDisabled: "pResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pResizableColumnDisabled: [{
+                type: Input
+            }] } });
+class ReorderableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.dt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.dt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.dt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.dt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.pReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+ReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableColumn, selector: "[pReorderableColumn]", inputs: { pReorderableColumnDisabled: "pReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class EditableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.selfClick = true;
+            if (this.dt.editingCell) {
+                if (this.dt.editingCell !== this.el.nativeElement) {
+                    if (!this.dt.isEditingCellValid()) {
+                        return;
+                    }
+                    this.closeEditingCell(true, event);
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.dt.onEditInit.emit({ field: this.field, data: this.data, index: this.rowIndex });
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';
+                let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);
+                if (focusableElement) {
+                    focusableElement.focus();
+                }
+            }, 50);
+        });
+        this.overlayEventListener = (e) => {
+            if (this.el && this.el.nativeElement.contains(e.target)) {
+                this.dt.selfClick = true;
+            }
+        };
+        this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);
+    }
+    closeEditingCell(completed, event) {
+        if (completed)
+            this.dt.onEditComplete.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        else
+            this.dt.onEditCancel.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');
+        this.dt.editingCell = null;
+        this.dt.editingCellData = null;
+        this.dt.editingCellField = null;
+        this.dt.unbindDocumentEditListener();
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+    onEnterKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(true, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onEscapeKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(false, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onShiftKeyDown(event) {
+        if (this.isEnabled()) {
+            if (event.shiftKey)
+                this.moveToPreviousCell(event);
+            else {
+                this.moveToNextCell(event);
+            }
+        }
+    }
+    onArrowDown(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowUp(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowLeft(event) {
+        if (this.isEnabled()) {
+            this.moveToPreviousCell(event);
+        }
+    }
+    onArrowRight(event) {
+        if (this.isEnabled()) {
+            this.moveToNextCell(event);
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findPreviousEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findNextEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement.previousElementSibling;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement.nextElementSibling;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumnByIndex(cell, index) {
+        let nextRow = cell.parentElement.nextElementSibling;
+        if (nextRow) {
+            let nextCell = nextRow.children[index];
+            if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {
+                return nextCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevEditableColumnByIndex(cell, index) {
+        let prevRow = cell.parentElement.previousElementSibling;
+        if (prevRow) {
+            let prevCell = prevRow.children[index];
+            if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {
+                return prevCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pEditableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+}
+EditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+EditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableColumn, selector: "[pEditableColumn]", inputs: { data: ["pEditableColumn", "data"], field: ["pEditableColumnField", "field"], rowIndex: ["pEditableColumnRowIndex", "rowIndex"], pEditableColumnDisabled: "pEditableColumnDisabled", pFocusCellSelector: "pFocusCellSelector" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.escape": "onEscapeKeyDown($event)", "keydown.tab": "onShiftKeyDown($event)", "keydown.shift.tab": "onShiftKeyDown($event)", "keydown.meta.tab": "onShiftKeyDown($event)", "keydown.arrowdown": "onArrowDown($event)", "keydown.arrowup": "onArrowUp($event)", "keydown.arrowleft": "onArrowLeft($event)", "keydown.arrowright": "onArrowRight($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["pEditableColumnField"]
+            }], rowIndex: [{
+                type: Input,
+                args: ["pEditableColumnRowIndex"]
+            }], pEditableColumnDisabled: [{
+                type: Input
+            }], pFocusCellSelector: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }], onEscapeKeyDown: [{
+                type: HostListener,
+                args: ['keydown.escape', ['$event']]
+            }], onShiftKeyDown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.tab', ['$event']]
+            }], onArrowDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUp: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onArrowLeft: [{
+                type: HostListener,
+                args: ['keydown.arrowleft', ['$event']]
+            }], onArrowRight: [{
+                type: HostListener,
+                args: ['keydown.arrowright', ['$event']]
+            }] } });
+class EditableRow {
+    constructor(el) {
+        this.el = el;
+    }
+    isEnabled() {
+        return this.pEditableRowDisabled !== true;
+    }
+}
+EditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+EditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableRow, selector: "[pEditableRow]", inputs: { data: ["pEditableRow", "data"], pEditableRowDisabled: "pEditableRowDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableRow"]
+            }], pEditableRowDisabled: [{
+                type: Input
+            }] } });
+class InitEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.initRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+InitEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+InitEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InitEditableRow, selector: "[pInitEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInitEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class SaveEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);
+        event.preventDefault();
+    }
+}
+SaveEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+SaveEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SaveEditableRow, selector: "[pSaveEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSaveEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class CancelEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.cancelRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+CancelEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+CancelEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CancelEditableRow, selector: "[pCancelEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCancelEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class CellEditor {
+    constructor(dt, editableColumn, editableRow) {
+        this.dt = dt;
+        this.editableColumn = editableColumn;
+        this.editableRow = editableRow;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get editing() {
+        return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||
+            (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));
+    }
+}
+CellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, deps: [{ token: Table }, { token: EditableColumn, optional: true }, { token: EditableRow, optional: true }], target: i0.ɵɵFactoryTarget.Component });
+CellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CellEditor, selector: "p-cellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cellEditor',
+                    template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: Table }, { type: EditableColumn, decorators: [{
+                        type: Optional
+                    }] }, { type: EditableRow, decorators: [{
+                        type: Optional
+                    }] }];
+    }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TableRadioButton {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithRadio({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableRadioButton, selector: "p-tableRadioButton", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableRadioButton',
+                    template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TableCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithCheckbox({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableCheckbox, selector: "p-tableCheckbox", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", required: "required", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TableHeaderCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            if (this.dt.value && this.dt.value.length > 0) {
+                this.dt.toggleRowsWithCheckbox(event, !this.checked);
+            }
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    isDisabled() {
+        return this.disabled || !this.dt.value || !this.dt.value.length;
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        if (this.dt.filteredValue && !this.dt.lazy) {
+            const val = this.dt.filteredValue;
+            return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());
+        }
+        else {
+            const val = this.dt.value;
+            const length = this.dt.lazy ? this.dt._totalRecords : val ? val.length : 0;
+            return (val && length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === length);
+        }
+    }
+    isAllFilteredValuesChecked() {
+        if (!this.dt.filteredValue) {
+            return false;
+        }
+        else {
+            for (let rowData of this.dt.filteredValue) {
+                if (!this.dt.isSelected(rowData)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+}
+TableHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: { disabled: "disabled", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }], disabled: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }] } });
+class ReorderableRowHandle {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');
+    }
+}
+ReorderableRowHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRowHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: { index: ["pReorderableRowHandle", "index"] }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRowHandle]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRowHandle"]
+            }] } });
+class ReorderableRow {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.el.nativeElement.droppable = true;
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragEndListener = this.onDragEnd.bind(this);
+            this.el.nativeElement.addEventListener('dragend', this.dragEndListener);
+            this.dragOverListener = this.onDragOver.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragStartListener) {
+            document.removeEventListener('dragstart', this.dragStartListener);
+            this.dragStartListener = null;
+        }
+        if (this.dragEndListener) {
+            document.removeEventListener('dragend', this.dragEndListener);
+            this.dragEndListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))
+            this.el.nativeElement.draggable = true;
+        else
+            this.el.nativeElement.draggable = false;
+    }
+    onDragStart(event) {
+        this.dt.onRowDragStart(event, this.index);
+    }
+    onDragEnd(event) {
+        this.dt.onRowDragEnd(event);
+        this.el.nativeElement.draggable = false;
+    }
+    onDragOver(event) {
+        this.dt.onRowDragOver(event, this.index, this.el.nativeElement);
+        event.preventDefault();
+    }
+    onDragLeave(event) {
+        this.dt.onRowDragLeave(event, this.el.nativeElement);
+    }
+    isEnabled() {
+        return this.pReorderableRowDisabled !== true;
+    }
+    onDrop(event) {
+        if (this.isEnabled() && this.dt.rowDragging) {
+            this.dt.onRowDrop(event, this.el.nativeElement);
+        }
+        event.preventDefault();
+    }
+}
+ReorderableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRow, selector: "[pReorderableRow]", inputs: { index: ["pReorderableRow", "index"], pReorderableRowDisabled: "pReorderableRowDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRow"]
+            }], pReorderableRowDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class ColumnFilterFormElement {
+    constructor(dt) {
+        this.dt = dt;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        this.filterCallback = value => {
+            this.filterConstraint.value = value;
+            this.dt._filter();
+        };
+    }
+    onModelChange(value) {
+        this.filterConstraint.value = value;
+        if (this.type === 'boolean' || value === '') {
+            this.dt._filter();
+        }
+    }
+    onTextInputEnterKeyDown(event) {
+        this.dt._filter();
+        event.preventDefault();
+    }
+    onNumericInputKeyDown(event) {
+        if (event.key === 'Enter') {
+            this.dt._filter();
+            event.preventDefault();
+        }
+    }
+}
+ColumnFilterFormElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilterFormElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: { field: "field", type: "type", filterConstraint: "filterConstraint", filterTemplate: "filterTemplate", placeholder: "placeholder", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `, isInline: true, components: [{ type: i5.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i6.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "numberOfMonths", "view", "touchUI", "timeSeparator", "focusTrap", "firstDayOfWeek", "showTransitionOptions", "hideTransitionOptions", "tabindex", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.InputText, selector: "[pInputText]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilterFormElement',
+                    template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], filterConstraint: [{
+                type: Input
+            }], filterTemplate: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }] } });
+class ColumnFilter {
+    constructor(el, dt, renderer, config, overlayService) {
+        this.el = el;
+        this.dt = dt;
+        this.renderer = renderer;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.type = 'text';
+        this.display = 'row';
+        this.showMenu = true;
+        this.operator = FilterOperator.AND;
+        this.showOperator = true;
+        this.showClearButton = true;
+        this.showApplyButton = true;
+        this.showMatchModes = true;
+        this.showAddButton = true;
+        this.hideOnClear = false;
+        this.maxConstraints = 2;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        if (!this.dt.filters[this.field]) {
+            this.initFieldFilterConstraint();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.generateMatchModeOptions();
+            this.generateOperatorOptions();
+        });
+        this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {
+            this.clearFilter();
+        });
+        this.generateMatchModeOptions();
+        this.generateOperatorOptions();
+    }
+    generateMatchModeOptions() {
+        var _a;
+        this.matchModes = this.matchModeOptions ||
+            ((_a = this.config.filterMatchModeOptions[this.type]) === null || _a === void 0 ? void 0 : _a.map(key => {
+                return { label: this.config.getTranslation(key), value: key };
+            }));
+    }
+    generateOperatorOptions() {
+        this.operatorOptions = [
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND },
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR }
+        ];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'filter':
+                    this.filterTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.filterTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    initFieldFilterConstraint() {
+        let defaultMatchMode = this.getDefaultMatchMode();
+        this.dt.filters[this.field] = this.display == 'row' ? { value: null, matchMode: defaultMatchMode } : [{ value: null, matchMode: defaultMatchMode, operator: this.operator }];
+    }
+    onMenuMatchModeChange(value, filterMeta) {
+        filterMeta.matchMode = value;
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    onRowMatchModeChange(matchMode) {
+        this.dt.filters[this.field].matchMode = matchMode;
+        this.dt._filter();
+        this.hide();
+    }
+    onRowMatchModeKeyDown(event) {
+        let item = event.target;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    item.removeAttribute('tabindex');
+                    nextItem.tabIndex = '0';
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    item.removeAttribute('tabindex');
+                    prevItem.tabIndex = '0';
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+        }
+    }
+    onRowClearItemClick() {
+        this.clearFilter();
+        this.hide();
+    }
+    isRowMatchModeSelected(matchMode) {
+        return this.dt.filters[this.field].matchMode === matchMode;
+    }
+    addConstraint() {
+        this.dt.filters[this.field].push({ value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator() });
+        this.dt._filter();
+    }
+    removeConstraint(filterMeta) {
+        this.dt.filters[this.field] = this.dt.filters[this.field].filter(meta => meta !== filterMeta);
+        this.dt._filter();
+    }
+    onOperatorChange(value) {
+        this.dt.filters[this.field].forEach(filterMeta => {
+            filterMeta.operator = value;
+            this.operator = value;
+        });
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    toggleMenu() {
+        this.overlayVisible = !this.overlayVisible;
+    }
+    onToggleButtonKeyDown(event) {
+        switch (event.key) {
+            case 'Escape':
+            case 'Tab':
+                this.overlayVisible = false;
+                break;
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    let focusable = DomHandler.getFocusableElements(this.overlay);
+                    if (focusable) {
+                        focusable[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                else if (event.altKey) {
+                    this.overlayVisible = true;
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    onEscape() {
+        this.overlayVisible = false;
+        this.icon.nativeElement.focus();
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return item.parentElement.firstElementChild;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return item.parentElement.lastElementChild;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                document.body.appendChild(this.overlay);
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                DomHandler.absolutePosition(this.overlay, this.icon.nativeElement);
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.overlayEventListener = (e) => {
+                    if (this.overlay && this.overlay.contains(e.target)) {
+                        this.selfClick = true;
+                    }
+                };
+                this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    getDefaultMatchMode() {
+        if (this.matchMode) {
+            return this.matchMode;
+        }
+        else {
+            if (this.type === 'text')
+                return FilterMatchMode.STARTS_WITH;
+            else if (this.type === 'numeric')
+                return FilterMatchMode.EQUALS;
+            else if (this.type === 'date')
+                return FilterMatchMode.DATE_IS;
+            else
+                return FilterMatchMode.CONTAINS;
+        }
+    }
+    getDefaultOperator() {
+        return this.dt.filters ? this.dt.filters[this.field][0].operator : this.operator;
+    }
+    hasRowFilter() {
+        return this.dt.filters[this.field] && !this.dt.isFilterBlank(this.dt.filters[this.field].value);
+    }
+    get fieldConstraints() {
+        return this.dt.filters ? this.dt.filters[this.field] : null;
+    }
+    get showRemoveIcon() {
+        return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;
+    }
+    get showMenuButton() {
+        return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);
+    }
+    get isShowOperator() {
+        return this.showOperator && this.type !== 'boolean';
+    }
+    get isShowAddConstraint() {
+        return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);
+    }
+    get applyButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.APPLY);
+    }
+    get clearButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.CLEAR);
+    }
+    get addRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.ADD_RULE);
+    }
+    get removeRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.REMOVE_RULE);
+    }
+    get noFilterLabel() {
+        return this.config.getTranslation(TranslationKeys.NO_FILTER);
+    }
+    hasFilter() {
+        let fieldFilter = this.dt.filters[this.field];
+        if (fieldFilter) {
+            if (Array.isArray(fieldFilter))
+                return !this.dt.isFilterBlank(fieldFilter[0].value);
+            else
+                return !this.dt.isFilterBlank(fieldFilter.value);
+        }
+        return false;
+    }
+    isOutsideClicked(event) {
+        return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)
+            || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)
+            || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')
+            || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {
+                if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.selfClick = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = () => this.hide();
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    clearFilter() {
+        this.initFieldFilterConstraint();
+        this.dt._filter();
+        if (this.hideOnClear)
+            this.hide();
+    }
+    applyFilter() {
+        this.dt._filter();
+        this.hide();
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            this.el.nativeElement.appendChild(this.overlay);
+            ZIndexUtils.clear(this.overlay);
+            this.onOverlayHide();
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.resetSubscription) {
+            this.resetSubscription.unsubscribe();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+ColumnFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, deps: [{ token: i0.ElementRef }, { token: Table }, { token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilter, selector: "p-columnFilter", inputs: { field: "field", type: "type", display: "display", showMenu: "showMenu", matchMode: "matchMode", operator: "operator", showOperator: "showOperator", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showMatchModes: "showMatchModes", showAddButton: "showAddButton", hideOnClear: "hideOnClear", placeholder: "placeholder", matchModeOptions: "matchModeOptions", maxConstraints: "maxConstraints", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "icon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: ["field", "type", "filterConstraint", "filterTemplate", "placeholder", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+            ]),
+            transition(':leave', [
+                animate('.1s linear', style({ opacity: 0 }))
+            ])
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilter',
+                    template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+                            ]),
+                            transition(':leave', [
+                                animate('.1s linear', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Table }, { type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], showMenu: [{
+                type: Input
+            }], matchMode: [{
+                type: Input
+            }], operator: [{
+                type: Input
+            }], showOperator: [{
+                type: Input
+            }], showClearButton: [{
+                type: Input
+            }], showApplyButton: [{
+                type: Input
+            }], showMatchModes: [{
+                type: Input
+            }], showAddButton: [{
+                type: Input
+            }], hideOnClear: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], matchModeOptions: [{
+                type: Input
+            }], maxConstraints: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], icon: [{
+                type: ViewChild,
+                args: ['icon']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TableModule {
+}
+TableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement], imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter] });
+TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, imports: [[CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], SharedModule,
+        ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule],
+                    exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter],
+                    declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CancelEditableRow, CellEditor, ColumnFilter, ColumnFilterFormElement, ContextMenuRow, EditableColumn, EditableRow, FrozenColumn, InitEditableRow, ReorderableColumn, ReorderableRow, ReorderableRowHandle, ResizableColumn, RowGroupHeader, RowToggler, SaveEditableRow, SelectableRow, SelectableRowDblClick, SortIcon, SortableColumn, Table, TableBody, TableCheckbox, TableHeaderCheckbox, TableModule, TableRadioButton, TableService };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-table.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-table.mjs","sources":["../../src/app/components/table/table.ts","../../src/app/components/table/primeng-table.ts"],"sourcesContent":["import { NgModule, Component, HostListener, OnInit, OnDestroy, AfterViewInit, Directive, Optional, AfterContentInit,\n    Input, Output, EventEmitter, ElementRef, ContentChildren, TemplateRef, QueryList, ViewChild, NgZone, ChangeDetectorRef, OnChanges, SimpleChanges, ChangeDetectionStrategy, Query, ViewEncapsulation, Renderer2} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PrimeTemplate, SharedModule, FilterMatchMode, FilterOperator, SelectItem, PrimeNGConfig, TranslationKeys, FilterService, OverlayService } from 'primeng/api';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { SortMeta } from 'primeng/api';\nimport { TableState } from 'primeng/api';\nimport { FilterMetadata } from 'primeng/api';\nimport { Injectable } from '@angular/core';\nimport { BlockableUI } from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\n\n@Injectable()\nexport class TableService {\n\n    private sortSource = new Subject<SortMeta|SortMeta[]>();\n    private selectionSource = new Subject();\n    private contextMenuSource = new Subject<any>();\n    private valueSource = new Subject<any>();\n    private totalRecordsSource = new Subject<any>();\n    private columnsSource = new Subject();\n    private resetSource = new Subject();\n\n    sortSource$ = this.sortSource.asObservable();\n    selectionSource$ = this.selectionSource.asObservable();\n    contextMenuSource$ = this.contextMenuSource.asObservable();\n    valueSource$ = this.valueSource.asObservable();\n    totalRecordsSource$ = this.totalRecordsSource.asObservable();\n    columnsSource$ = this.columnsSource.asObservable();\n    resetSource$ = this.resetSource.asObservable();\n\n    onSort(sortMeta: SortMeta|SortMeta[]) {\n        this.sortSource.next(sortMeta);\n    }\n\n    onSelectionChange() {\n        this.selectionSource.next(null);\n    }\n\n    onResetChange() {\n        this.resetSource.next(null);\n    }\n\n    onContextMenu(data: any) {\n        this.contextMenuSource.next(data);\n    }\n\n    onValueChange(value: any) {\n        this.valueSource.next(value);\n    }\n\n    onTotalRecordsChange(value: number) {\n        this.totalRecordsSource.next(value);\n    }\n\n    onColumnsChange(columns: any[]) {\n        this.columnsSource.next(columns);\n    }\n}\n\n@Component({\n    selector: 'p-table',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\"\n            [ngClass]=\"{'p-datatable p-component': true,\n                'p-datatable-hoverable-rows': (rowHover||selectionMode),\n                'p-datatable-auto-layout': autoLayout,\n                'p-datatable-resizable': resizableColumns,\n                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),\n                'p-datatable-scrollable': scrollable,\n                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',\n                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',\n                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',\n                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),\n                'p-datatable-responsive-stack': responsiveLayout === 'stack',\n                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',\n                'p-datatable-responsive': responsive,\n                'p-datatable-grouped-header': headerGroupedTemplate != null,\n                'p-datatable-grouped-footer': footerGroupedTemplate != null}\" [attr.id]=\"id\">\n            <div class=\"p-datatable-loading-overlay p-component-overlay\" *ngIf=\"loading && showLoader\">\n                <i [class]=\"'p-datatable-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <div *ngIf=\"captionTemplate\" class=\"p-datatable-header\">\n                <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-top\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showJumpToPageInput]=\"showJumpToPageInput\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div #wrapper class=\"p-datatable-wrapper\" [ngStyle]=\"{height: scrollHeight}\">\n                <table #table *ngIf=\"!virtualScroll\" role=\"table\" class=\"p-datatable-table\" [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\" [attr.id]=\"id+'-table'\">\n                    <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-datatable-thead\">\n                        <ng-container *ngTemplateOutlet=\"headerGroupedTemplate||headerTemplate; context: {$implicit: columns}\"></ng-container>\n                    </thead>\n                    <tbody class=\"p-datatable-tbody p-datatable-frozen-tbody\" *ngIf=\"frozenValue||frozenBodyTemplate\" [value]=\"frozenValue\" [frozenRows]=\"true\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"frozenBodyTemplate\" [frozen]=\"true\"></tbody>\n                    <tbody class=\"p-datatable-tbody\" [value]=\"dataToRender\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                    <tfoot *ngIf=\"footerGroupedTemplate||footerTemplate\" class=\"p-datatable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"footerGroupedTemplate||footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n                <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll\" [itemSize]=\"virtualRowHeight\" tabindex=\"0\" [style.height]=\"scrollHeight !== 'flex' ? scrollHeight : undefined\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\" (scrolledIndexChange)=\"onScrollIndexChange($event)\" class=\"p-datatable-virtual-scrollable-body\">\n                    <table #table role=\"table\" class=\"p-datatable-table\" [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\" [attr.id]=\"id+'-table'\">\n                        <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                        <thead #tableHeader class=\"p-datatable-thead\">\n                            <ng-container *ngTemplateOutlet=\"headerGroupedTemplate||headerTemplate; context: {$implicit: columns}\"></ng-container>\n                        </thead>\n                        <tbody class=\"p-datatable-tbody p-datatable-frozen-tbody\" *ngIf=\"frozenValue||frozenBodyTemplate\" [value]=\"frozenValue\" [frozenRows]=\"true\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\" [frozen]=\"true\"></tbody>\n                        <tbody class=\"p-datatable-tbody\" [value]=\"dataToRender\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                        <tfoot *ngIf=\"footerGroupedTemplate||footerTemplate\" class=\"p-datatable-tfoot\">\n                            <ng-container *ngTemplateOutlet=\"footerGroupedTemplate||footerTemplate; context {$implicit: columns}\"></ng-container>\n                        </tfoot>\n                    </table>\n                </cdk-virtual-scroll-viewport>\n            </div>\n\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-bottom\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showJumpToPageInput]=\"showJumpToPageInput\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div *ngIf=\"summaryTemplate\" class=\"p-datatable-footer\">\n                <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n            </div>\n\n            <div #resizeHelper class=\"p-column-resizer-helper\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n            <span #reorderIndicatorUp class=\"pi pi-arrow-down p-datatable-reorder-indicator-up\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n            <span #reorderIndicatorDown class=\"pi pi-arrow-up p-datatable-reorder-indicator-down\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n        </div>\n    `,\n    providers: [TableService],\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./table.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Table implements OnInit, AfterViewInit, AfterContentInit, BlockableUI, OnChanges {\n\n    @Input() frozenColumns: any[];\n\n    @Input() frozenValue: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tableStyle: any;\n\n    @Input() tableStyleClass: string;\n\n    @Input() paginator: boolean;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() paginatorDropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showJumpToPageInput: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() defaultSortOrder: number = 1;\n\n    @Input() sortMode: string = 'single';\n\n    @Input() resetPageOnSort: boolean = true;\n\n    @Input() selectionMode: string;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelection: any;\n\n    @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelectionMode: string = \"separate\";\n\n    @Input() dataKey: string;\n\n    @Input() metaKeySelection: boolean;\n\n    @Input() rowTrackBy: Function = (index: number, item: any) => item;\n\n    @Input() lazy: boolean = false;\n\n    @Input() lazyLoadOnInit: boolean = true;\n\n    @Input() compareSelectionBy: string = 'deepEquals';\n\n    @Input() csvSeparator: string = ',';\n\n    @Input() exportFilename: string = 'download';\n\n    @Input() filters: { [s: string]: FilterMetadata | FilterMetadata[] } = {};\n\n    @Input() globalFilterFields: string[];\n\n    @Input() filterDelay: number = 300;\n\n    @Input() filterLocale: string;\n\n    @Input() expandedRowKeys: { [s: string]: boolean; } = {};\n\n    @Input() editingRowKeys: { [s: string]: boolean; } = {};\n\n    @Input() rowExpandMode: string = 'multiple';\n\n    @Input() scrollable: boolean;\n\n    @Input() scrollDirection: string = \"vertical\";\n\n    @Input() rowGroupMode: string;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualScrollDelay: number = 250;\n\n    @Input() virtualRowHeight: number = 28;\n\n    @Input() frozenWidth: string;\n\n    @Input() responsive: boolean;\n\n    @Input() contextMenu: any;\n\n    @Input() resizableColumns: boolean;\n\n    @Input() columnResizeMode: string = 'fit';\n\n    @Input() reorderableColumns: boolean;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() showLoader: boolean = true;\n\n    @Input() rowHover: boolean;\n\n    @Input() customSort: boolean;\n\n    @Input() showInitialSortBadge: boolean = true;\n\n    @Input() autoLayout: boolean;\n\n    @Input() exportFunction;\n\n    @Input() stateKey: string;\n\n    @Input() stateStorage: string = 'session';\n\n    @Input() editMode: string = 'cell';\n\n    @Input() groupRowsBy: any;\n\n    @Input() groupRowsByOrder: number = 1;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() responsiveLayout: string = 'stack';\n\n    @Input() breakpoint: string = '960px';\n\n    @Output() onRowSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColResize: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditCancel: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHeaderCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() sortFunction: EventEmitter<any> = new EventEmitter();\n\n    @Output() firstChange: EventEmitter<number> = new EventEmitter();\n\n    @Output() rowsChange: EventEmitter<number> = new EventEmitter();\n\n    @Output() onStateSave: EventEmitter<any> = new EventEmitter();\n\n    @Output() onStateRestore: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('resizeHelper') resizeHelperViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: ElementRef;\n\n    @ViewChild('wrapper') wrapperViewChild: ElementRef;\n\n    @ViewChild('table') tableViewChild: ElementRef;\n\n    @ViewChild('tableHeader') tableHeaderViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    _value: any[] = [];\n\n    _columns: any[];\n\n    _totalRecords: number = 0;\n\n    _first: number = 0;\n\n    _rows: number;\n\n    filteredValue: any[];\n\n    headerTemplate: TemplateRef<any>;\n\n    headerGroupedTemplate: TemplateRef<any>;\n\n    bodyTemplate: TemplateRef<any>;\n\n    loadingBodyTemplate: TemplateRef<any>;\n\n    captionTemplate: TemplateRef<any>;\n\n    frozenRowsTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    footerGroupedTemplate: TemplateRef<any>;\n\n    summaryTemplate: TemplateRef<any>;\n\n    colGroupTemplate: TemplateRef<any>;\n\n    expandedRowTemplate: TemplateRef<any>;\n\n    groupHeaderTemplate: TemplateRef<any>;\n\n    groupFooterTemplate: TemplateRef<any>;\n\n    rowspanTemplate: TemplateRef<any>;\n\n    frozenExpandedRowTemplate: TemplateRef<any>;\n\n    frozenHeaderTemplate: TemplateRef<any>;\n\n    frozenBodyTemplate: TemplateRef<any>;\n\n    frozenFooterTemplate: TemplateRef<any>;\n\n    frozenColGroupTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    selectionKeys: any = {};\n\n    lastResizerHelperX: number;\n\n    reorderIconWidth: number;\n\n    reorderIconHeight: number;\n\n    draggedColumn: any;\n\n    draggedRowIndex: number;\n\n    droppedRowIndex: number;\n\n    rowDragging: boolean;\n\n    dropPosition: number;\n\n    editingCell: Element;\n\n    editingCellData: any;\n\n    editingCellField: any;\n\n    editingCellRowIndex: number;\n\n    selfClick: boolean;\n\n    documentEditListener: any;\n\n    _multiSortMeta: SortMeta[];\n\n    _sortField: string;\n\n    _sortOrder: number = 1;\n\n    preventSelectionSetterPropagation: boolean;\n\n    _selection: any;\n\n    anchorRowIndex: number;\n\n    rangeRowIndex: number;\n\n    filterTimeout: any;\n\n    initialized: boolean;\n\n    rowTouched: boolean;\n\n    restoringSort: boolean;\n\n    restoringFilter: boolean;\n\n    stateRestored: boolean;\n\n    columnOrderStateRestored: boolean;\n\n    columnWidthsState: string;\n\n    tableWidthState: string;\n\n    overlaySubscription: Subscription;\n\n    virtualScrollSubscription: Subscription;\n\n    resizeColumnElement;\n\n    columnResizing: boolean = false;\n\n    rowGroupHeaderStyleObject: any = {};\n\n    id: string = UniqueComponentId();\n\n    styleElement: any;\n\n    responsiveStyleElement: any;\n\n    constructor(public el: ElementRef, public zone: NgZone, public tableService: TableService, public cd: ChangeDetectorRef, public filterService: FilterService, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        if (this.lazy && this.lazyLoadOnInit) {\n            if (!this.virtualScroll) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n\n            if (this.restoringFilter) {\n                this.restoringFilter = false;\n            }\n        }\n\n        if (this.responsiveLayout === 'stack' && !this.scrollable) {\n            this.createResponsiveStyle();\n        }\n\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'caption':\n                    this.captionTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'headergrouped':\n                    this.headerGroupedTemplate = item.template;\n                break;\n\n                case 'body':\n                    this.bodyTemplate = item.template;\n                break;\n\n                case 'loadingbody':\n                    this.loadingBodyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'footergrouped':\n                    this.footerGroupedTemplate = item.template;\n                break;\n\n                case 'summary':\n                    this.summaryTemplate = item.template;\n                break;\n\n                case 'colgroup':\n                    this.colGroupTemplate = item.template;\n                break;\n\n                case 'rowexpansion':\n                    this.expandedRowTemplate = item.template;\n                break;\n\n                case 'groupheader':\n                    this.groupHeaderTemplate = item.template;\n                break;\n\n                case 'rowspan':\n                    this.rowspanTemplate = item.template;\n                break;\n\n                case 'groupfooter':\n                    this.groupFooterTemplate = item.template;\n                break;\n\n                case 'frozenrows':\n                    this.frozenRowsTemplate = item.template;\n                break;\n\n                case 'frozenheader':\n                    this.frozenHeaderTemplate = item.template;\n                break;\n\n                case 'frozenbody':\n                    this.frozenBodyTemplate = item.template;\n                break;\n\n                case 'frozenfooter':\n                    this.frozenFooterTemplate = item.template;\n                break;\n\n                case 'frozencolgroup':\n                    this.frozenColGroupTemplate = item.template;\n                break;\n\n                case 'frozenrowexpansion':\n                    this.frozenExpandedRowTemplate = item.template;\n                break;\n\n                case 'emptymessage':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.isStateful() && this.resizableColumns) {\n            this.restoreColumnWidths();\n        }\n\n        if (this.scrollable && this.virtualScroll) {\n            this.virtualScrollSubscription =  this.virtualScrollBody.renderedRangeStream.subscribe(range => {\n                let top = range.start * this.virtualRowHeight * -1;\n                this.tableHeaderViewChild.nativeElement.style.top = top + 'px';\n            });\n        }\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            if (this.isStateful() && !this.stateRestored) {\n                this.restoreState();\n            }\n\n            this._value = simpleChange.value.currentValue;\n\n            if (!this.lazy) {\n                this.totalRecords = (this._value ? this._value.length : 0);\n\n                if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))\n                    this.sortSingle();\n                else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))\n                    this.sortMultiple();\n                else if (this.hasFilter())       //sort already filters\n                    this._filter();\n            }\n\n            this.tableService.onValueChange(simpleChange.value.currentValue);\n        }\n\n        if (simpleChange.columns) {\n            this._columns = simpleChange.columns.currentValue;\n            this.tableService.onColumnsChange(simpleChange.columns.currentValue);\n\n            if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored ) {\n                this.restoreColumnOrder();\n            }\n        }\n\n        if (simpleChange.sortField) {\n            this._sortField = simpleChange.sortField.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.groupRowsBy) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.sortOrder) {\n            this._sortOrder = simpleChange.sortOrder.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.groupRowsByOrder) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.multiSortMeta) {\n            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n            if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {\n                this.sortMultiple();\n            }\n        }\n\n        if (simpleChange.selection) {\n            this._selection = simpleChange.selection.currentValue;\n\n            if (!this.preventSelectionSetterPropagation) {\n                this.updateSelectionKeys();\n                this.tableService.onSelectionChange();\n            }\n            this.preventSelectionSetterPropagation = false;\n        }\n    }\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n    }\n\n    @Input() get columns(): any[] {\n        return this._columns;\n    }\n    set columns(cols: any[]) {\n        this._columns = cols;\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val: number) {\n        this._first = val;\n    }\n\n    @Input() get rows(): number {\n        return this._rows;\n    }\n    set rows(val: number) {\n        this._rows = val;\n    }\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        this.tableService.onTotalRecordsChange(this._totalRecords);\n    }\n\n    @Input() get sortField(): string {\n        return this._sortField;\n    }\n\n    set sortField(val: string) {\n        this._sortField = val;\n    }\n\n    @Input() get sortOrder(): number {\n        return this._sortOrder;\n    }\n    set sortOrder(val: number) {\n        this._sortOrder = val;\n    }\n\n    @Input() get multiSortMeta(): SortMeta[] {\n        return this._multiSortMeta;\n    }\n\n    set multiSortMeta(val: SortMeta[]) {\n        this._multiSortMeta = val;\n    }\n\n    @Input() get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val: any) {\n        this._selection = val;\n    }\n\n    get dataToRender() {\n        let data = this.filteredValue||this.value;\n        return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];\n    }\n\n    updateSelectionKeys() {\n        if (this.dataKey && this._selection) {\n            this.selectionKeys = {};\n            if (Array.isArray(this._selection)) {\n                for(let data of this._selection) {\n                    this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;\n                }\n            }\n            else {\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;\n            }\n        }\n    }\n\n    onPageChange(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n\n        this.firstChange.emit(this.first);\n        this.rowsChange.emit(this.rows);\n        this.tableService.onValueChange(this.value);\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.anchorRowIndex = null;\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    sort(event) {\n        let originalEvent = event.originalEvent;\n\n        if (this.sortMode === 'single') {\n            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n            this._sortField = event.field;\n\n            if (this.resetPageOnSort) {\n                this._first = 0;\n                this.firstChange.emit(this._first);\n\n                if (this.scrollable) {\n                    this.resetScrollTop();\n                }\n            }\n\n            this.sortSingle();\n        }\n        if (this.sortMode === 'multiple') {\n            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n            let sortMeta = this.getSortMeta(event.field);\n\n            if (sortMeta) {\n                if (!metaKey) {\n                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];\n\n                    if (this.resetPageOnSort) {\n                        this._first = 0;\n                        this.firstChange.emit(this._first);\n\n                        if (this.scrollable) {\n                            this.resetScrollTop();\n                        }\n                    }\n                }\n                else {\n                    sortMeta.order = sortMeta.order * -1;\n                }\n            }\n            else {\n                if (!metaKey || !this.multiSortMeta) {\n                    this._multiSortMeta = [];\n\n                    if (this.resetPageOnSort) {\n                        this._first = 0;\n                        this.firstChange.emit(this._first);\n                    }\n                }\n                this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n            }\n\n            this.sortMultiple();\n        }\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.anchorRowIndex = null;\n    }\n\n    sortSingle() {\n        let field = this.sortField || this.groupRowsBy;\n        let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;\n        if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {\n            this._multiSortMeta = [this.getGroupRowsMeta(), {field: this.sortField, order: this.sortOrder}];\n            this.sortMultiple();\n            return;\n        }\n\n        if (field && order) {\n            if (this.restoringSort) {\n                this.restoringSort = false;\n            }\n\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                if (this.customSort) {\n                    this.sortFunction.emit({\n                        data: this.value,\n                        mode: this.sortMode,\n                        field: field,\n                        order: order\n                    });\n                }\n                else {\n                    this.value.sort((data1, data2) => {\n                        let value1 = ObjectUtils.resolveFieldData(data1, field);\n                        let value2 = ObjectUtils.resolveFieldData(data2, field);\n                        let result = null;\n\n                        if (value1 == null && value2 != null)\n                            result = -1;\n                        else if (value1 != null && value2 == null)\n                            result = 1;\n                        else if (value1 == null && value2 == null)\n                            result = 0;\n                        else if (typeof value1 === 'string' && typeof value2 === 'string')\n                            result = value1.localeCompare(value2);\n                        else\n                            result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                        return (order * result);\n                    });\n\n                    this._value = [...this.value];\n                }\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            let sortMeta: SortMeta = {\n                field: field,\n                order: order\n            };\n\n            this.onSort.emit(sortMeta);\n            this.tableService.onSort(sortMeta);\n        }\n    }\n\n    sortMultiple() {\n        if (this.groupRowsBy) {\n            if (!this._multiSortMeta)\n                this._multiSortMeta = [this.getGroupRowsMeta()]\n            else if (this.multiSortMeta[0].field !== this.groupRowsBy)\n                this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta]\n        }\n\n        if (this.multiSortMeta) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                if (this.customSort) {\n                    this.sortFunction.emit({\n                        data: this.value,\n                        mode: this.sortMode,\n                        multiSortMeta: this.multiSortMeta\n                    });\n                }\n                else {\n                    this.value.sort((data1, data2) => {\n                        return this.multisortField(data1, data2, this.multiSortMeta, 0);\n                    });\n\n                    this._value = [...this.value];\n                }\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            this.onSort.emit({\n                multisortmeta: this.multiSortMeta\n            });\n            this.tableService.onSort(this.multiSortMeta);\n        }\n    }\n\n    multisortField(data1, data2, multiSortMeta, index) {\n        let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);\n        let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);\n        let result = null;\n\n        if (value1 == null && value2 != null)\n            result = -1;\n        else if (value1 != null && value2 == null)\n            result = 1;\n        else if (value1 == null && value2 == null)\n            result = 0;\n        else if (typeof value1 == 'string' || value1 instanceof String) {\n            if (value1.localeCompare && (value1 != value2)) {\n                return (multiSortMeta[index].order * value1.localeCompare(value2));\n            }\n        }\n        else {\n            result = (value1 < value2) ? -1 : 1;\n        }\n\n        if (value1 == value2) {\n            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;\n        }\n\n        return (multiSortMeta[index].order * result);\n    }\n\n    getSortMeta(field: string) {\n        if (this.multiSortMeta && this.multiSortMeta.length) {\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                if (this.multiSortMeta[i].field === field) {\n                    return this.multiSortMeta[i];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    isSorted(field: string) {\n        if (this.sortMode === 'single') {\n            return (this.sortField && this.sortField === field);\n        }\n        else if (this.sortMode === 'multiple') {\n            let sorted = false;\n            if (this.multiSortMeta) {\n                for(let i = 0; i < this.multiSortMeta.length; i++) {\n                    if (this.multiSortMeta[i].field == field) {\n                        sorted = true;\n                        break;\n                    }\n                }\n            }\n            return sorted;\n        }\n    }\n\n    handleRowClick(event) {\n        let target = (<HTMLElement> event.originalEvent.target);\n        let targetNode = target.nodeName;\n        let parentNode = target.parentElement && target.parentElement.nodeName;\n        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||\n            parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||\n            (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {\n            return;\n        }\n\n        if (this.selectionMode) {\n            this.preventSelectionSetterPropagation = true;\n            if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {\n                DomHandler.clearSelection();\n                if (this.rangeRowIndex != null) {\n                    this.clearSelectionRange(event.originalEvent);\n                }\n\n                this.rangeRowIndex = event.rowIndex;\n                this.selectRange(event.originalEvent, event.rowIndex);\n            }\n            else {\n                let rowData = event.rowData;\n                let selected = this.isSelected(rowData);\n                let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n                this.anchorRowIndex = event.rowIndex;\n                this.rangeRowIndex = event.rowIndex;\n\n                if (metaSelection) {\n                    let metaKey = event.originalEvent.metaKey||event.originalEvent.ctrlKey;\n\n                    if (selected && metaKey) {\n                        if (this.isSingleSelectionMode()) {\n                            this._selection = null;\n                            this.selectionKeys = {};\n                            this.selectionChange.emit(null);\n                        }\n                        else {\n                            let selectionIndex = this.findIndexInSelection(rowData);\n                            this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n                            this.selectionChange.emit(this.selection);\n                            if (dataKeyValue) {\n                                delete this.selectionKeys[dataKeyValue];\n                            }\n                        }\n\n                        this.onRowUnselect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row'});\n                    }\n                    else {\n                        if (this.isSingleSelectionMode()) {\n                            this._selection = rowData;\n                            this.selectionChange.emit(rowData);\n                            if (dataKeyValue) {\n                                this.selectionKeys = {};\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                        else if (this.isMultipleSelectionMode()) {\n                            if (metaKey) {\n                                this._selection = this.selection||[];\n                            }\n                            else {\n                                this._selection = [];\n                                this.selectionKeys = {};\n                            }\n\n                            this._selection = [...this.selection,rowData];\n                            this.selectionChange.emit(this.selection);\n                            if (dataKeyValue) {\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n\n                        this.onRowSelect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex});\n                    }\n                }\n                else {\n                    if (this.selectionMode === 'single') {\n                        if (selected) {\n                            this._selection = null;\n                            this.selectionKeys = {};\n                            this.selectionChange.emit(this.selection);\n                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                        }\n                        else {\n                            this._selection = rowData;\n                            this.selectionChange.emit(this.selection);\n                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                this.selectionKeys = {};\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                    }\n                    else if (this.selectionMode === 'multiple') {\n                        if (selected) {\n                            let selectionIndex = this.findIndexInSelection(rowData);\n                            this._selection = this.selection.filter((val, i) => i != selectionIndex);\n                            this.selectionChange.emit(this.selection);\n                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                delete this.selectionKeys[dataKeyValue];\n                            }\n                        }\n                        else {\n                            this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n                            this.selectionChange.emit(this.selection);\n                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                    }\n                }\n            }\n\n            this.tableService.onSelectionChange();\n\n            if (this.isStateful()) {\n                this.saveState();\n            }\n        }\n\n        this.rowTouched = false;\n    }\n\n    handleRowTouchEnd(event) {\n        this.rowTouched = true;\n    }\n\n    handleRowRightClick(event) {\n        if (this.contextMenu) {\n            const rowData = event.rowData;\n\n            if (this.contextMenuSelectionMode === 'separate') {\n                this.contextMenuSelection = rowData;\n                this.contextMenuSelectionChange.emit(rowData);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, data: rowData, index: event.rowIndex});\n                this.contextMenu.show(event.originalEvent);\n                this.tableService.onContextMenu(rowData);\n            }\n            else if (this.contextMenuSelectionMode === 'joint') {\n                this.preventSelectionSetterPropagation = true;\n                let selected = this.isSelected(rowData);\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode()) {\n                        this.selection = rowData;\n                        this.selectionChange.emit(rowData);\n\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n                        this.selectionChange.emit(this.selection);\n\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n\n                this.tableService.onSelectionChange();\n                this.contextMenu.show(event.originalEvent);\n                this.onContextMenuSelect.emit({originalEvent: event, data: rowData, index: event.rowIndex});\n            }\n        }\n    }\n\n    selectRange(event: MouseEvent, rowIndex: number) {\n        let rangeStart, rangeEnd;\n\n        if (this.anchorRowIndex > rowIndex) {\n            rangeStart = rowIndex;\n            rangeEnd = this.anchorRowIndex;\n        }\n        else if (this.anchorRowIndex < rowIndex) {\n            rangeStart = this.anchorRowIndex;\n            rangeEnd = rowIndex;\n        }\n        else {\n            rangeStart = rowIndex;\n            rangeEnd = rowIndex;\n        }\n\n        if (this.lazy && this.paginator) {\n            rangeStart -= this.first;\n            rangeEnd -= this.first;\n        }\n\n        let rangeRowsData = [];\n        for(let i = rangeStart; i <= rangeEnd; i++) {\n            let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];\n            if (!this.isSelected(rangeRowData)) {\n                rangeRowsData.push(rangeRowData);\n                this._selection = [...this.selection, rangeRowData];\n                let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n                if (dataKeyValue) {\n                    this.selectionKeys[dataKeyValue] = 1;\n                }\n            }\n        }\n        this.selectionChange.emit(this.selection);\n        this.onRowSelect.emit({originalEvent: event, data: rangeRowsData, type: 'row'});\n    }\n\n    clearSelectionRange(event: MouseEvent) {\n        let rangeStart, rangeEnd;\n\n        if (this.rangeRowIndex > this.anchorRowIndex) {\n            rangeStart = this.anchorRowIndex;\n            rangeEnd = this.rangeRowIndex;\n        }\n        else if (this.rangeRowIndex < this.anchorRowIndex) {\n            rangeStart = this.rangeRowIndex;\n            rangeEnd = this.anchorRowIndex;\n        }\n        else {\n            rangeStart = this.rangeRowIndex;\n            rangeEnd = this.rangeRowIndex;\n        }\n\n        for(let i = rangeStart; i <= rangeEnd; i++) {\n            let rangeRowData = this.value[i];\n            let selectionIndex = this.findIndexInSelection(rangeRowData);\n            this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n            let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n            this.onRowUnselect.emit({originalEvent: event, data: rangeRowData, type: 'row'});\n        }\n    }\n\n    isSelected(rowData) {\n        if (rowData && this.selection) {\n            if (this.dataKey) {\n                return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;\n            }\n            else {\n                if (this.selection instanceof Array)\n                    return this.findIndexInSelection(rowData) > -1;\n                else\n                    return this.equals(rowData, this.selection);\n            }\n        }\n\n        return false;\n    }\n\n    findIndexInSelection(rowData: any) {\n        let index: number = -1;\n        if (this.selection && this.selection.length) {\n            for (let i = 0; i < this.selection.length; i++) {\n                if (this.equals(rowData, this.selection[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    toggleRowWithRadio(event: any, rowData:any) {\n        this.preventSelectionSetterPropagation = true;\n\n        if (this.selection != rowData) {\n            this._selection = rowData;\n            this.selectionChange.emit(this.selection);\n            this.onRowSelect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n\n            if (this.dataKey) {\n                this.selectionKeys = {};\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;\n            }\n        }\n        else {\n            this._selection = null;\n            this.selectionChange.emit(this.selection);\n            this.onRowUnselect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n        }\n\n        this.tableService.onSelectionChange();\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    toggleRowWithCheckbox(event, rowData: any) {\n        this.selection = this.selection||[];\n        let selected = this.isSelected(rowData);\n        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n        this.preventSelectionSetterPropagation = true;\n\n        if (selected) {\n            let selectionIndex = this.findIndexInSelection(rowData);\n            this._selection = this.selection.filter((val, i) => i != selectionIndex);\n            this.selectionChange.emit(this.selection);\n            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n        }\n        else {\n            this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n            this.selectionChange.emit(this.selection);\n            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n            if (dataKeyValue) {\n                this.selectionKeys[dataKeyValue] = 1;\n            }\n        }\n\n        this.tableService.onSelectionChange();\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    toggleRowsWithCheckbox(event: Event, check: boolean) {\n        this._selection = check ? this.filteredValue ? this.filteredValue.slice(): this.value.slice() : [];\n        this.preventSelectionSetterPropagation = true;\n        this.updateSelectionKeys();\n        this.selectionChange.emit(this._selection);\n        this.tableService.onSelectionChange();\n        this.onHeaderCheckboxToggle.emit({originalEvent: event, checked: check});\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    equals(data1, data2) {\n        return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);\n    }\n\n    /* Legacy Filtering for custom elements */\n    filter(value: any, field: string, matchMode: string) {\n        if (this.filterTimeout) {\n            clearTimeout(this.filterTimeout);\n        }\n        if (!this.isFilterBlank(value)) {\n            this.filters[field] = { value: value, matchMode: matchMode };\n        } else if (this.filters[field]) {\n            delete this.filters[field];\n        }\n\n        this.filterTimeout = setTimeout(() => {\n            this._filter();\n            this.filterTimeout = null;\n        }, this.filterDelay);\n\n        this.anchorRowIndex = null;\n    }\n\n    filterGlobal(value, matchMode) {\n        this.filter(value, 'global', matchMode);\n    }\n\n    isFilterBlank(filter: any): boolean {\n        if (filter !== null && filter !== undefined) {\n            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n                return true;\n            else\n                return false;\n        }\n        return true;\n    }\n\n    _filter() {\n        if (!this.restoringFilter) {\n            this.first = 0;\n            this.firstChange.emit(this.first);\n        }\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            if (!this.value) {\n                return;\n            }\n\n            if (!this.hasFilter()) {\n                this.filteredValue = null;\n                if (this.paginator) {\n                    this.totalRecords = this.value ? this.value.length : 0;\n                }\n            }\n            else {\n                let globalFilterFieldsArray;\n                if (this.filters['global']) {\n                    if (!this.columns && !this.globalFilterFields)\n                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n                    else\n                        globalFilterFieldsArray = this.globalFilterFields||this.columns;\n                }\n\n                this.filteredValue = [];\n\n                for (let i = 0; i < this.value.length; i++) {\n                    let localMatch = true;\n                    let globalMatch = false;\n                    let localFiltered = false;\n\n                    for (let prop in this.filters) {\n                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n                            localFiltered = true;\n                            let filterField = prop;\n                            let filterMeta = this.filters[filterField];\n\n                            if (Array.isArray(filterMeta)) {\n                                for (let meta of filterMeta) {\n                                    localMatch = this.executeLocalFilter(filterField, this.value[i], meta);\n\n                                    if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {\n                                        break;\n                                    }\n                                }\n                            }\n                            else {\n                                localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);\n                            }\n\n                            if (!localMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n                        for(let j = 0; j < globalFilterFieldsArray.length; j++) {\n                            let globalFilterField = globalFilterFieldsArray[j].field||globalFilterFieldsArray[j];\n                            globalMatch = this.filterService.filters[(<FilterMetadata> this.filters['global']).matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), (<FilterMetadata> this.filters['global']).value, this.filterLocale);\n\n                            if (globalMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    let matches: boolean;\n                    if (this.filters['global']) {\n                        matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;\n                    }\n                    else {\n                        matches = localFiltered && localMatch;\n                    }\n\n                    if (matches) {\n                        this.filteredValue.push(this.value[i]);\n                    }\n                }\n\n                if (this.filteredValue.length === this.value.length) {\n                    this.filteredValue = null;\n                }\n\n                if (this.paginator) {\n                    this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n                }\n            }\n        }\n\n        this.onFilter.emit({\n            filters: this.filters,\n            filteredValue: this.filteredValue || this.value\n        });\n\n        this.tableService.onValueChange(this.value);\n\n        if (this.isStateful() && !this.restoringFilter) {\n            this.saveState();\n        }\n\n        if (this.restoringFilter) {\n            this.restoringFilter = false;\n        }\n\n        this.cd.markForCheck();\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    executeLocalFilter(field: string, rowData: any, filterMeta: FilterMetadata): boolean {\n        let filterValue = filterMeta.value;\n        let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;\n        let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);\n        let filterConstraint = this.filterService.filters[filterMatchMode];\n\n        return filterConstraint(dataFieldValue, filterValue, this.filterLocale);\n    }\n\n    hasFilter() {\n        let empty = true;\n        for (let prop in this.filters) {\n            if (this.filters.hasOwnProperty(prop)) {\n                empty = false;\n                break;\n            }\n        }\n\n        return !empty;\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder,\n            filters: this.filters,\n            globalFilter: this.filters && this.filters['global'] ? (<FilterMetadata> this.filters['global']).value : null,\n            multiSortMeta: this.multiSortMeta\n        };\n    }\n\n    public clear() {\n        this._sortField = null;\n        this._sortOrder = this.defaultSortOrder;\n        this._multiSortMeta = null;\n        this.tableService.onSort(null);\n\n        this.filteredValue = null;\n        this.tableService.onResetChange();\n\n        this.first = 0;\n        this.firstChange.emit(this.first);\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            this.totalRecords = (this._value ? this._value.length : 0);\n        }\n    }\n\n    public reset() {\n        this.clear();\n    }\n\n    public exportCSV(options?: any) {\n        let data;\n        let csv = '';\n        let columns = this.frozenColumns ? [...this.frozenColumns, ...this.columns] : this.columns;\n\n        if (options && options.selectionOnly) {\n            data = this.selection || [];\n        }\n        else {\n            data = this.filteredValue || this.value;\n\n            if (this.frozenValue) {\n                data = data ? [...this.frozenValue, ...data] : this.frozenValue;\n            }\n        }\n\n        //headers\n        for (let i = 0; i < columns.length; i++) {\n            let column = columns[i];\n            if (column.exportable !== false && column.field) {\n                csv += '\"' + (column.header || column.field) + '\"';\n\n                if (i < (columns.length - 1)) {\n                    csv += this.csvSeparator;\n                }\n            }\n        }\n\n        //body\n        data.forEach((record, i) => {\n            csv += '\\n';\n            for (let i = 0; i < columns.length; i++) {\n                let column = columns[i];\n                if (column.exportable !== false && column.field) {\n                    let cellData = ObjectUtils.resolveFieldData(record, column.field);\n\n                    if (cellData != null) {\n                        if (this.exportFunction) {\n                            cellData = this.exportFunction({\n                                data: cellData,\n                                field: column.field\n                            });\n                        }\n                        else\n                            cellData = String(cellData).replace(/\"/g, '\"\"');\n                    }\n                    else\n                        cellData = '';\n\n                    csv += '\"' + cellData + '\"';\n\n                    if (i < (columns.length - 1)) {\n                        csv += this.csvSeparator;\n                    }\n                }\n            }\n        });\n\n        let blob = new Blob([csv], {\n            type: 'text/csv;charset=utf-8;'\n        });\n\n        let link = document.createElement(\"a\");\n        link.style.display = 'none';\n        document.body.appendChild(link);\n        if (link.download !== undefined) {\n            link.setAttribute('href', URL.createObjectURL(blob));\n            link.setAttribute('download', this.exportFilename + '.csv');\n            link.click();\n        }\n        else {\n            csv = 'data:text/csv;charset=utf-8,' + csv;\n            window.open(encodeURI(csv));\n        }\n        document.body.removeChild(link);\n    }\n\n    public resetScrollTop() {\n        if (this.virtualScroll)\n            this.scrollToVirtualIndex(0);\n        else\n            this.scrollTo({top: 0});\n    }\n\n    public scrollToVirtualIndex(index: number) {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollToIndex(index);\n        }\n    }\n\n    virtualScrollTimeout: any;\n\n    virtualPage: number;\n\n    onScrollIndexChange(index: number) {\n        if (this.lazy) {\n            if (this.virtualScrollTimeout) {\n                clearTimeout(this.virtualScrollTimeout);\n            }\n\n            this.virtualScrollTimeout = setTimeout(() => {\n                let page = Math.floor(index / this.rows);\n                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;\n                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;\n\n                if (page !== this.virtualPage) {\n                    this.virtualPage = page;\n                    this.onLazyLoad.emit({\n                        first: virtualScrollOffset,\n                        rows: virtualScrollChunkSize,\n                        sortField: this.sortField,\n                        sortOrder: this.sortOrder,\n                        filters: this.filters,\n                        globalFilter: this.filters && this.filters['global'] ? (<FilterMetadata> this.filters['global']).value : null,\n                        multiSortMeta: this.multiSortMeta\n                    });\n                }\n            }, this.virtualScrollDelay);\n        }\n    }\n\n    public scrollTo(options) {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollTo(options);\n        }\n        else {\n            if (this.wrapperViewChild.nativeElement.scrollTo) {\n                this.wrapperViewChild.nativeElement.scrollTo(options);\n            }\n            else {\n                this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n                this.wrapperViewChild.nativeElement.scrollTop = options.top;\n            }\n        }\n    }\n\n    updateEditingCell(cell, data, field, index) {\n        this.editingCell = cell;\n        this.editingCellData = data;\n        this.editingCellField = field;\n        this.editingCellRowIndex = index;\n        this.bindDocumentEditListener();\n    }\n\n    isEditingCellValid() {\n        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n    }\n\n    bindDocumentEditListener() {\n        if (!this.documentEditListener) {\n            this.documentEditListener = (event) => {\n                if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {\n                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n                    this.editingCell = null;\n                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });\n                    this.editingCellField = null;\n                    this.editingCellData = null;\n                    this.editingCellRowIndex = null;\n                    this.unbindDocumentEditListener();\n                    this.cd.markForCheck();\n\n                    if (this.overlaySubscription) {\n                        this.overlaySubscription.unsubscribe();\n                    }\n                }\n\n                this.selfClick = false;\n            };\n\n            document.addEventListener('click', this.documentEditListener);\n        }\n    }\n\n    unbindDocumentEditListener() {\n        if (this.documentEditListener) {\n            document.removeEventListener('click', this.documentEditListener);\n            this.documentEditListener = null;\n        }\n    }\n\n    initRowEdit(rowData: any) {\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n        this.editingRowKeys[dataKeyValue] = true;\n    }\n\n    saveRowEdit(rowData: any, rowElement: HTMLTableRowElement) {\n        if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {\n            let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n            delete this.editingRowKeys[dataKeyValue];\n        }\n    }\n\n    cancelRowEdit(rowData: any) {\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n        delete this.editingRowKeys[dataKeyValue];\n    }\n\n    toggleRow(rowData: any, event?: Event) {\n        if (!this.dataKey) {\n            throw new Error('dataKey must be defined to use row expansion');\n        }\n\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n\n        if (this.expandedRowKeys[dataKeyValue] != null) {\n            delete this.expandedRowKeys[dataKeyValue];\n            this.onRowCollapse.emit({\n                originalEvent: event,\n                data: rowData\n            });\n        }\n        else {\n            if (this.rowExpandMode === 'single') {\n                this.expandedRowKeys = {};\n            }\n\n            this.expandedRowKeys[dataKeyValue] = true;\n            this.onRowExpand.emit({\n                originalEvent: event,\n                data: rowData\n            });\n        }\n\n        if (event) {\n            event.preventDefault();\n        }\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    isRowExpanded(rowData: any): boolean {\n        return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n    }\n\n    isRowEditing(rowData: any): boolean {\n        return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode === 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode === 'multiple';\n    }\n\n    onColumnResizeBegin(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        this.resizeColumnElement = event.target.parentElement;\n        this.columnResizing = true;\n        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n        this.onColumnResize(event);\n        event.preventDefault();\n    }\n\n    onColumnResize(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'block';\n    }\n\n    onColumnResizeEnd() {\n        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n        let columnWidth = this.resizeColumnElement.offsetWidth;\n        let newColumnWidth = columnWidth + delta;\n        let minWidth = this.resizeColumnElement.style.minWidth||15;\n\n        if (newColumnWidth >= minWidth) {\n            if (this.columnResizeMode === 'fit') {\n                let nextColumn = this.resizeColumnElement.nextElementSibling;\n                let nextColumnWidth = nextColumn.offsetWidth - delta;\n\n                if (newColumnWidth > 15 && nextColumnWidth > 15) {\n                    if (!this.scrollable) {\n                        this.resizeColumnElement.style.width = newColumnWidth + 'px';\n                        if(nextColumn) {\n                            nextColumn.style.width = nextColumnWidth + 'px';\n                        }\n                    }\n                    else {\n                        this.resizeTableCells(newColumnWidth, nextColumnWidth);\n                    }\n                }\n            }\n            else if (this.columnResizeMode === 'expand') {\n                let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;\n                this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';\n                this.resizeColumnElement.style.width = newColumnWidth + 'px';\n\n                if (!this.scrollable)\n                    this.tableViewChild.nativeElement.style.width = tableWidth + 'px';\n                else\n                    this.resizeTableCells(newColumnWidth, null);\n            }\n\n            this.onColResize.emit({\n                element: this.resizeColumnElement,\n                delta: delta\n            });\n\n            if (this.isStateful()) {\n                this.saveState();\n            }\n        }\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'none';\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n    }\n\n    resizeTableCells(newColumnWidth, nextColumnWidth) {\n        let colIndex = DomHandler.index(this.resizeColumnElement);\n        let widths = [];\n        const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');\n        let headers = DomHandler.find(tableHead, 'tr > th');\n        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n\n        this.destroyStyleElement();\n        this.createStyleElement();\n\n        let innerHTML = '';\n        widths.forEach((width,index) => {\n            let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;\n            innerHTML += `\n                #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index+1}) {\n                    flex: 0 0 ${colWidth}px !important;\n                }\n\n                #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index+1}) {\n                    flex: 0 0 ${colWidth}px !important;\n                }\n            `\n        });\n        this.styleElement.innerHTML = innerHTML;\n    }\n\n    onColumnDragStart(event, columnElement) {\n        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n        this.draggedColumn = columnElement;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onColumnDragEnter(event, dropHeader) {\n        if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n            event.preventDefault();\n            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n            let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n\n            if (this.draggedColumn != dropHeader) {\n                let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n                let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');\n                let targetLeft = dropHeaderOffset.left - containerOffset.left;\n                let targetTop = containerOffset.top - dropHeaderOffset.top;\n                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n                if (event.pageX > columnCenter) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = 1;\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = -1;\n                }\n\n                if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n                }\n            }\n            else {\n                event.dataTransfer.dropEffect = 'none';\n            }\n        }\n    }\n\n    onColumnDragLeave(event) {\n        if (this.reorderableColumns && this.draggedColumn) {\n            event.preventDefault();\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n        }\n    }\n\n    onColumnDrop(event, dropColumn) {\n        event.preventDefault();\n        if (this.draggedColumn) {\n            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');\n            let allowDrop = (dragIndex != dropIndex);\n            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n                allowDrop = false;\n            }\n\n            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n                dropIndex = dropIndex + 1;\n            }\n\n            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n                dropIndex = dropIndex - 1;\n            }\n\n            if (allowDrop) {\n                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n\n                this.onColReorder.emit({\n                    dragIndex: dragIndex,\n                    dropIndex: dropIndex,\n                    columns: this.columns\n                });\n\n                if (this.isStateful()) {\n                    this.zone.runOutsideAngular(() => {\n                        setTimeout(() => {\n                            this.saveState();\n                        });\n                    });\n                }\n            }\n\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n            this.draggedColumn.draggable = false;\n            this.draggedColumn = null;\n            this.dropPosition = null;\n        }\n    }\n\n    onRowDragStart(event, index) {\n        this.rowDragging = true;\n        this.draggedRowIndex = index;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onRowDragOver(event, index, rowElement) {\n        if (this.rowDragging && this.draggedRowIndex !== index) {\n            let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();\n            let pageY = event.pageY;\n            let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;\n            let prevRowElement = rowElement.previousElementSibling;\n\n            if (pageY < rowMidY) {\n                DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n\n                this.droppedRowIndex = index;\n                if (prevRowElement)\n                    DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n                else\n                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n            }\n            else {\n                if (prevRowElement)\n                    DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n                else\n                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n\n                this.droppedRowIndex = index + 1;\n                DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');\n            }\n        }\n    }\n\n    onRowDragLeave(event, rowElement) {\n        let prevRowElement = rowElement.previousElementSibling;\n        if (prevRowElement) {\n            DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n        }\n\n        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');\n    }\n\n    onRowDragEnd(event) {\n        this.rowDragging = false;\n        this.draggedRowIndex = null;\n        this.droppedRowIndex = null;\n    }\n\n    onRowDrop(event, rowElement) {\n        if (this.droppedRowIndex != null) {\n            let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;\n            ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);\n\n            this.onRowReorder.emit({\n                dragIndex: this.draggedRowIndex,\n                dropIndex: dropIndex\n            });\n        }\n        //cleanup\n        this.onRowDragLeave(event, rowElement);\n        this.onRowDragEnd(event);\n    }\n\n    isEmpty() {\n        let data = this.filteredValue||this.value;\n        return data == null || data.length == 0;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    getStorage() {\n        switch(this.stateStorage) {\n            case 'local':\n                return window.localStorage;\n\n            case 'session':\n                return window.sessionStorage;\n\n            default:\n                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n        }\n    }\n\n    isStateful() {\n        return this.stateKey != null;\n    }\n\n    saveState() {\n        const storage = this.getStorage();\n        let state: TableState = {};\n\n        if (this.paginator) {\n            state.first = this.first;\n            state.rows = this.rows;\n        }\n\n        if (this.sortField) {\n            state.sortField = this.sortField;\n            state.sortOrder = this.sortOrder;\n        }\n\n        if (this.multiSortMeta) {\n            state.multiSortMeta = this.multiSortMeta;\n        }\n\n        if (this.hasFilter()) {\n            state.filters = this.filters;\n        }\n\n        if (this.resizableColumns) {\n            this.saveColumnWidths(state);\n        }\n\n        if (this.reorderableColumns) {\n            this.saveColumnOrder(state);\n        }\n\n        if (this.selection) {\n            state.selection = this.selection;\n        }\n\n        if (Object.keys(this.expandedRowKeys).length) {\n            state.expandedRowKeys = this.expandedRowKeys;\n        }\n\n        storage.setItem(this.stateKey, JSON.stringify(state));\n        this.onStateSave.emit(state);\n    }\n\n    clearState() {\n        const storage = this.getStorage();\n\n        if (this.stateKey) {\n            storage.removeItem(this.stateKey);\n        }\n    }\n\n    restoreState() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n        const dateFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n        const reviver = function(key, value) {\n            if (typeof value === \"string\" && dateFormat.test(value)) {\n                return new Date(value);\n            }\n\n            return value;\n        }\n\n        if (stateString) {\n            let state: TableState = JSON.parse(stateString, reviver);\n\n            if (this.paginator) {\n                if (this.first !== undefined) {\n                    this.first = state.first;\n                    this.firstChange.emit(this.first);\n                }\n\n                if (this.rows !== undefined) {\n                    this.rows = state.rows;\n                    this.rowsChange.emit(this.rows);\n                }\n            }\n\n            if (state.sortField) {\n                this.restoringSort = true;\n                this._sortField = state.sortField;\n                this._sortOrder = state.sortOrder;\n            }\n\n            if (state.multiSortMeta) {\n                this.restoringSort = true;\n                this._multiSortMeta = state.multiSortMeta;\n            }\n\n            if (state.filters) {\n                this.restoringFilter = true;\n                this.filters = state.filters;\n            }\n\n            if (this.resizableColumns) {\n                this.columnWidthsState = state.columnWidths;\n                this.tableWidthState = state.tableWidth;\n            }\n\n            if (state.expandedRowKeys) {\n                this.expandedRowKeys = state.expandedRowKeys;\n            }\n\n            if (state.selection) {\n                Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));\n            }\n\n            this.stateRestored = true;\n\n            this.onStateRestore.emit(state);\n        }\n    }\n\n    saveColumnWidths(state) {\n        let widths = [];\n        let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');\n        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n        state.columnWidths = widths.join(',');\n\n        if (this.columnResizeMode === 'expand') {\n            state.tableWidth =  DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';\n        }\n    }\n\n    restoreColumnWidths() {\n        if (this.columnWidthsState) {\n            let widths = this.columnWidthsState.split(',');\n\n            if (this.columnResizeMode === 'expand' && this.tableWidthState) {\n                this.tableViewChild.nativeElement.style.width = this.tableWidthState;\n                this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;\n                this.containerViewChild.nativeElement.style.width = this.tableWidthState;\n            }\n\n            this.createStyleElement();\n\n            if (this.scrollable && widths && widths.length > 0) {\n                    let innerHTML = '';\n                    widths.forEach((width,index) => {\n                        innerHTML += `\n                            #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index+1}) {\n                                flex: 0 0 ${width}px;\n                            }\n\n                            #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index+1}) {\n                                flex: 0 0 ${width}px;\n                            }\n                        `\n                    });\n                this.styleElement.innerHTML = innerHTML;\n            }\n            else {\n                DomHandler.find(this.tableViewChild.nativeElement, '.p-datatable-thead > tr > th').forEach((header, index) => {\n                    header.style.width = widths[index] + 'px';\n                });\n            }\n\n        }\n    }\n\n    saveColumnOrder(state) {\n        if (this.columns) {\n            let columnOrder: string[] = [];\n            this.columns.map(column => {\n                columnOrder.push(column.field||column.key)\n            });\n\n            state.columnOrder = columnOrder;\n        }\n    }\n\n    restoreColumnOrder() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n        if (stateString) {\n            let state: TableState = JSON.parse(stateString);\n            let columnOrder = state.columnOrder;\n            if (columnOrder) {\n                let reorderedColumns = [];\n\n                columnOrder.map(key =>  {\n                    let col = this.findColumnByKey(key);\n                    if (col) {\n                        reorderedColumns.push(col)\n                    }\n                });\n                this.columnOrderStateRestored = true;\n                this.columns = reorderedColumns;\n            }\n        }\n    }\n\n    findColumnByKey(key) {\n        if (this.columns) {\n            for (let col of this.columns) {\n                if (col.key === key || col.field === key)\n                    return col;\n                else\n                    continue;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    createStyleElement() {\n        this.styleElement = document.createElement('style');\n        this.styleElement.type = 'text/css';\n        document.head.appendChild(this.styleElement);\n    }\n\n    getGroupRowsMeta() {\n        return {field: this.groupRowsBy, order: this.groupRowsByOrder};\n    }\n\n    createResponsiveStyle() {\n        if (!this.responsiveStyleElement) {\n            this.responsiveStyleElement = document.createElement('style');\n            this.responsiveStyleElement.type = 'text/css';\n            document.head.appendChild(this.responsiveStyleElement);\n\n            let innerHTML = `\n@media screen and (max-width: ${this.breakpoint}) {\n    #${this.id} .p-datatable-thead > tr > th,\n    #${this.id} .p-datatable-tfoot > tr > td {\n        display: none !important;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td {\n        display: flex;\n        width: 100% !important;\n        align-items: center;\n        justify-content: space-between;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {\n        border: 0 none;\n    }\n\n    #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {\n        border-top: 0;\n        border-right: 0;\n        border-left: 0;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td > .p-column-title {\n        display: block;\n    }\n}\n`;\n\n            this.responsiveStyleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyResponsiveStyle() {\n        if (this.responsiveStyleElement) {\n            document.head.removeChild(this.responsiveStyleElement);\n            this.responsiveStyleElement = null;\n        }\n    }\n\n    destroyStyleElement() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentEditListener();\n        this.editingCell = null;\n        this.initialized = null;\n\n        if (this.virtualScrollSubscription) {\n            this.virtualScrollSubscription.unsubscribe();\n        }\n\n        this.destroyStyleElement();\n        this.destroyResponsiveStyle();\n    }\n}\n\n@Component({\n    selector: '[pTableBody]',\n    template: `\n        <ng-container *ngIf=\"!dt.expandedRowTemplate && !dt.virtualScroll\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngIf=\"dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.rowGroupMode !== 'rowspan'\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.rowGroupMode === 'rowspan'\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"!dt.expandedRowTemplate && dt.virtualScroll\">\n            <ng-template cdkVirtualFor let-rowData let-rowIndex=\"index\" [cdkVirtualForOf]=\"value\" [cdkVirtualForTrackBy]=\"dt.rowTrackBy\" [cdkVirtualForTemplateCacheSize]=\"0\">\n                <ng-container *ngTemplateOutlet=\"rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngIf=\"!dt.groupHeaderTemplate\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n                    <ng-container *ngTemplateOutlet=\"dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}\"></ng-container>\n                    <ng-container *ngIf=\"dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)\" role=\"row\">\n                        <ng-container *ngTemplateOutlet=\"dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                    </ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.frozenExpandedRowTemplate && frozen\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n                    <ng-container *ngTemplateOutlet=\"dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.loading\">\n            <ng-container *ngTemplateOutlet=\"dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"dt.isEmpty() && !dt.loading\">\n            <ng-container *ngTemplateOutlet=\"dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableBody implements AfterViewInit, OnDestroy {\n\n    @Input(\"pTableBody\") columns: any[];\n\n    @Input(\"pTableBodyTemplate\") template: TemplateRef<any>;\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n        if (this.frozenRows) {\n            this.updateFrozenRowStickyPosition();\n        }\n\n        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n            this.updateFrozenRowGroupHeaderStickyPosition();\n        }\n    }\n\n    @Input() frozen: boolean;\n\n    @Input() frozenRows: boolean;\n\n    subscription: Subscription;\n\n    _value: any[];\n\n    ngAfterViewInit() {\n        if (this.frozenRows) {\n            this.updateFrozenRowStickyPosition();\n        }\n\n        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n            this.updateFrozenRowGroupHeaderStickyPosition();\n        }\n    }\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef, public el: ElementRef) {\n        this.subscription = this.dt.tableService.valueSource$.subscribe(() => {\n            if (this.dt.virtualScroll) {\n                this.cd.detectChanges();\n            }\n        });\n    }\n\n    shouldRenderRowGroupHeader(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let prevRowData = value[i - 1];\n        if (prevRowData) {\n            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== previousRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    shouldRenderRowGroupFooter(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let nextRowData = value[i + 1];\n        if (nextRowData) {\n            let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== nextRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    shouldRenderRowspan(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let prevRowData = value[i - 1];\n        if (prevRowData) {\n            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== previousRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    calculateRowGroupSize(value, rowData, index) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let nextRowFieldData = currentRowFieldData;\n        let groupRowSpan = 0;\n\n        while (currentRowFieldData === nextRowFieldData) {\n            groupRowSpan++;\n            let nextRowData = value[++index];\n            if (nextRowData) {\n                nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n            }\n            else {\n                break;\n            }\n        }\n\n        return groupRowSpan === 1 ? null : groupRowSpan;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n    updateFrozenRowStickyPosition() {\n        this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';\n    }\n\n    updateFrozenRowGroupHeaderStickyPosition() {\n        if (this.el.nativeElement.previousElementSibling) {\n            let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);\n            this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';\n        }\n    }\n}\n\n@Directive({\n    selector: '[pRowGroupHeader]',\n    host: {\n        'class': 'p-rowgroup-header p-element',\n        '[style.top]': \"getFrozenRowGroupHeaderStickyPosition\"\n    }\n})\nexport class RowGroupHeader {\n\n    constructor(public dt: Table) { }\n\n    get getFrozenRowGroupHeaderStickyPosition() {\n        return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';\n    }\n }\n\n@Directive({\n    selector: '[pFrozenColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-frozen-column]': 'frozen'\n    }\n})\nexport class FrozenColumn implements AfterViewInit {\n\n    @Input() get frozen(): boolean {\n        return this._frozen;\n    }\n\n    set frozen(val: boolean) {\n        this._frozen = val;\n        this.updateStickyPosition();\n    }\n\n    @Input() alignFrozen: string = \"left\";\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterViewInit() {\n        this.updateStickyPosition();\n    }\n\n    _frozen: boolean = true;\n\n    updateStickyPosition() {\n        if (this._frozen) {\n            if (this.alignFrozen === 'right') {\n                let right = 0;\n                let next = this.el.nativeElement.nextElementSibling;\n                if (next) {\n                    right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right);\n                }\n                this.el.nativeElement.style.right = right + 'px';\n            }\n            else {\n                let left = 0;\n                let prev = this.el.nativeElement.previousElementSibling;\n                if (prev) {\n                    left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);\n                }\n                this.el.nativeElement.style.left = left + 'px';\n            }\n\n            let filterRow = this.el.nativeElement.parentElement.nextElementSibling;\n\n            if (filterRow) {\n                let index = DomHandler.index(this.el.nativeElement);\n                if (filterRow.children && filterRow.children[index]) {\n                    filterRow.children[index].style.left = this.el.nativeElement.style.left;\n                    filterRow.children[index].style.right = this.el.nativeElement.style.right;\n                }\n            }\n        }\n    }\n}\n@Directive({\n    selector: '[pSortableColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-sortable-column]': 'isEnabled()',\n        '[class.p-highlight]': 'sorted',\n        '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n        '[attr.role]': '\"columnheader\"',\n        '[attr.aria-sort]': 'sortOrder'\n    }\n})\nexport class SortableColumn implements OnInit, OnDestroy {\n\n    @Input(\"pSortableColumn\") field: string;\n\n    @Input() pSortableColumnDisabled: boolean;\n\n    sorted: boolean;\n\n    sortOrder: string;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n                this.updateSortState();\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.updateSortState();\n        }\n    }\n\n    updateSortState() {\n        this.sorted = this.dt.isSorted(this.field);\n        this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled() && !this.isFilterElement(<HTMLElement> event.target)) {\n            this.updateSortState();\n            this.dt.sort({\n                originalEvent: event,\n                field: this.field\n            });\n\n            DomHandler.clearSelection();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKey(event: MouseEvent) {\n        this.onClick(event);\n    }\n\n    isEnabled() {\n        return this.pSortableColumnDisabled !== true;\n    }\n\n    isFilterElement(element: HTMLElement) {\n        return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n\n@Component({\n    selector: 'p-sortIcon',\n    template: `\n        <i class=\"p-sortable-column-icon pi pi-fw\" [ngClass]=\"{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}\"></i>\n        <span *ngIf=\"isMultiSorted()\" class=\"p-sortable-column-badge\">{{getBadgeValue()}}</span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SortIcon implements OnInit, OnDestroy {\n\n    @Input() field: string;\n\n    subscription: Subscription;\n\n    sortOrder: number;\n\n    constructor(public dt: Table, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n            this.updateSortState();\n        });\n    }\n\n    ngOnInit() {\n        this.updateSortState();\n    }\n\n    onClick(event){\n        event.preventDefault();\n    }\n\n    updateSortState() {\n        if (this.dt.sortMode === 'single') {\n            this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;\n        }\n        else if (this.dt.sortMode === 'multiple') {\n            let sortMeta = this.dt.getSortMeta(this.field);\n            this.sortOrder = sortMeta ? sortMeta.order: 0;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    getMultiSortMetaIndex() {\n        let multiSortMeta = this.dt._multiSortMeta;\n        let index = -1;\n\n        if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {\n\n            for (let i = 0; i < multiSortMeta.length; i++) {\n                let meta = multiSortMeta[i];\n                if (meta.field === this.field || meta.field === this.field) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    getBadgeValue() {\n        let index = this.getMultiSortMetaIndex();\n\n        return this.dt.groupRowsBy && index > -1 ? index : index + 1;\n    }\n\n    isMultiSorted() {\n        return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[pSelectableRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-selectable-row]': 'isEnabled()',\n        '[class.p-highlight]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class SelectableRow implements OnInit, OnDestroy {\n\n    @Input(\"pSelectableRow\") data: any;\n\n    @Input(\"pSelectableRowIndex\") index: number;\n\n    @Input() pSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.dt.isSelected(this.data);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.dt.isSelected(this.data);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n        }\n    }\n\n    @HostListener('touchend', ['$event'])\n    onTouchEnd(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowTouchEnd(event);\n        }\n    }\n\n    @HostListener('keydown.arrowdown', ['$event'])\n    onArrowDownKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        const row = <HTMLTableRowElement>event.currentTarget;\n        const nextRow = this.findNextSelectableRow(row);\n\n        if (nextRow) {\n            nextRow.focus();\n        }\n\n        event.preventDefault();\n    }\n\n    @HostListener('keydown.arrowup', ['$event'])\n    onArrowUpKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        const row = <HTMLTableRowElement>event.currentTarget;\n        const prevRow = this.findPrevSelectableRow(row);\n\n        if (prevRow) {\n            prevRow.focus();\n        }\n\n        event.preventDefault();\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    @HostListener('keydown.shift.enter', ['$event'])\n    @HostListener('keydown.meta.enter', ['$event'])\n    onEnterKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        this.dt.handleRowClick({\n            originalEvent: event,\n            rowData: this.data,\n            rowIndex: this.index\n        });\n    }\n\n    @HostListener('keydown.pagedown')\n    @HostListener('keydown.pageup')\n    @HostListener('keydown.home')\n    @HostListener('keydown.end')\n    onPageDownKeyDown() {\n        if (this.dt.virtualScroll) {\n            this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n        }\n    }\n\n    @HostListener('keydown.space')\n    onSpaceKeydown() {\n        if (this.dt.virtualScroll && !this.dt.editingCell) {\n            this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n        }\n    }\n\n    findNextSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n        let nextRow = <HTMLTableRowElement> row.nextElementSibling;\n        if (nextRow) {\n            if (DomHandler.hasClass(nextRow, 'p-selectable-row'))\n                return nextRow;\n            else\n                return this.findNextSelectableRow(nextRow);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findPrevSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n        let prevRow = <HTMLTableRowElement> row.previousElementSibling;\n        if (prevRow) {\n            if (DomHandler.hasClass(prevRow, 'p-selectable-row'))\n                return prevRow;\n            else\n                return this.findPrevSelectableRow(prevRow);\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.pSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pSelectableRowDblClick]',\n    host: {\n        'class': 'p-element',\n        '[class.p-selectable-row]': 'isEnabled()',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class SelectableRowDblClick implements OnInit, OnDestroy {\n\n    @Input(\"pSelectableRowDblClick\") data: any;\n\n    @Input(\"pSelectableRowIndex\") index: number;\n\n    @Input() pSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.dt.isSelected(this.data);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.dt.isSelected(this.data);\n        }\n    }\n\n    @HostListener('dblclick', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n        }\n    }\n\n    isEnabled() {\n        return this.pSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pContextMenuRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight-contextmenu]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class ContextMenuRow {\n\n    @Input(\"pContextMenuRow\") data: any;\n\n    @Input(\"pContextMenuRowIndex\") index: number;\n\n    @Input() pContextMenuRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, private el: ElementRef) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {\n                this.selected = this.dt.equals(this.data, data);\n            });\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onContextMenu(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowRightClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n\n            this.el.nativeElement.focus();\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.pContextMenuRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pRowToggler]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class RowToggler {\n\n    @Input('pRowToggler') data: any;\n\n    @Input() pRowTogglerDisabled: boolean;\n\n    constructor(public dt: Table) { }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.toggleRow(this.data, event);\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.pRowTogglerDisabled !== true;\n    }\n}\n\n@Directive({\n    selector: '[pResizableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ResizableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() pResizableColumnDisabled: boolean;\n\n    resizer: HTMLSpanElement;\n\n    resizerMouseDownListener: any;\n\n    documentMouseMoveListener: any;\n\n    documentMouseUpListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n            this.resizer = document.createElement('span');\n            this.resizer.className = 'p-column-resizer';\n            this.el.nativeElement.appendChild(this.resizer);\n\n            this.zone.runOutsideAngular(() => {\n                this.resizerMouseDownListener = this.onMouseDown.bind(this);\n                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n            });\n        }\n    }\n\n    bindDocumentEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n            document.addEventListener('mousemove', this.documentMouseMoveListener);\n\n            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n            document.addEventListener('mouseup', this.documentMouseUpListener);\n        });\n    }\n\n    unbindDocumentEvents() {\n        if (this.documentMouseMoveListener) {\n            document.removeEventListener('mousemove', this.documentMouseMoveListener);\n            this.documentMouseMoveListener = null;\n        }\n\n        if (this.documentMouseUpListener) {\n            document.removeEventListener('mouseup', this.documentMouseUpListener);\n            this.documentMouseUpListener = null;\n        }\n    }\n\n    onMouseDown(event: MouseEvent) {\n        if (event.which === 1) {\n            this.dt.onColumnResizeBegin(event);\n            this.bindDocumentEvents();\n        }\n    }\n\n    onDocumentMouseMove(event: MouseEvent) {\n        this.dt.onColumnResize(event);\n    }\n\n    onDocumentMouseUp(event: MouseEvent) {\n        this.dt.onColumnResizeEnd();\n        this.unbindDocumentEvents();\n    }\n\n    isEnabled() {\n        return this.pResizableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.resizerMouseDownListener) {\n            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n        }\n\n        this.unbindDocumentEvents();\n    }\n}\n\n@Directive({\n    selector: '[pReorderableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() pReorderableColumnDisabled: boolean;\n\n    dragStartListener: any;\n\n    dragOverListener: any;\n\n    dragEnterListener: any;\n\n    dragLeaveListener: any;\n\n    mouseDownListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragOverListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragEnterListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n            this.el.nativeElement.draggable = false;\n        else\n            this.el.nativeElement.draggable = true;\n    }\n\n    onDragStart(event) {\n        this.dt.onColumnDragStart(event, this.el.nativeElement);\n    }\n\n    onDragOver(event) {\n        event.preventDefault();\n    }\n\n    onDragEnter(event) {\n        this.dt.onColumnDragEnter(event, this.el.nativeElement);\n    }\n\n    onDragLeave(event) {\n        this.dt.onColumnDragLeave(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled()) {\n            this.dt.onColumnDrop(event, this.el.nativeElement);\n        }\n    }\n\n    isEnabled() {\n        return this.pReorderableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n    }\n\n}\n\n@Directive({\n    selector: '[pEditableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class EditableColumn implements AfterViewInit, OnDestroy {\n\n    @Input(\"pEditableColumn\") data: any;\n\n    @Input(\"pEditableColumnField\") field: any;\n\n    @Input(\"pEditableColumnRowIndex\") rowIndex: number;\n\n    @Input() pEditableColumnDisabled: boolean;\n\n    @Input() pFocusCellSelector: string;\n\n    overlayEventListener;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.dt.selfClick = true;\n\n            if (this.dt.editingCell) {\n                if (this.dt.editingCell !== this.el.nativeElement) {\n                    if (!this.dt.isEditingCellValid()) {\n                        return;\n                    }\n\n                    this.closeEditingCell(true, event);\n                    this.openCell();\n                }\n            }\n            else {\n                this.openCell();\n            }\n        }\n    }\n\n    openCell() {\n        this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);\n        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n        this.dt.onEditInit.emit({field: this.field, data: this.data, index: this.rowIndex});\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';\n                let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);\n\n                if (focusableElement) {\n                    focusableElement.focus();\n                }\n            }, 50);\n        });\n\n        this.overlayEventListener = (e) => {\n            if (this.el && this.el.nativeElement.contains(e.target)) {\n                this.dt.selfClick = true;\n            }\n        }\n\n        this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);\n    }\n\n    closeEditingCell(completed, event) {\n        if (completed)\n            this.dt.onEditComplete.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex});\n        else\n            this.dt.onEditCancel.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex});\n\n        DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');\n        this.dt.editingCell = null;\n        this.dt.editingCellData = null;\n        this.dt.editingCellField = null;\n        this.dt.unbindDocumentEditListener();\n\n        if (this.dt.overlaySubscription) {\n            this.dt.overlaySubscription.unsubscribe();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (this.dt.isEditingCellValid()) {\n                this.closeEditingCell(true, event);\n            }\n\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('keydown.escape', ['$event'])\n    onEscapeKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (this.dt.isEditingCellValid()) {\n                this.closeEditingCell(false, event);\n            }\n\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('keydown.tab', ['$event'])\n    @HostListener('keydown.shift.tab', ['$event'])\n    @HostListener('keydown.meta.tab', ['$event'])\n    onShiftKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (event.shiftKey)\n                this.moveToPreviousCell(event);\n            else{\n                this.moveToNextCell(event);\n            }\n        }\n    }\n    @HostListener('keydown.arrowdown', ['$event'])\n    onArrowDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            let currentCell = this.findCell(event.target);\n            if (currentCell) {\n                let cellIndex = DomHandler.index(currentCell);\n                let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);\n\n                if (targetCell) {\n                    if (this.dt.isEditingCellValid()) {\n                        this.closeEditingCell(true, event);\n                    }\n\n                    DomHandler.invokeElementMethod(event.target, 'blur');\n                    DomHandler.invokeElementMethod(targetCell, 'click');\n                }\n\n                event.preventDefault();\n            }\n        }\n    }\n\n    @HostListener('keydown.arrowup', ['$event'])\n    onArrowUp(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            let currentCell = this.findCell(event.target);\n            if (currentCell) {\n                let cellIndex = DomHandler.index(currentCell);\n                let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);\n\n                if (targetCell) {\n                    if (this.dt.isEditingCellValid()) {\n                        this.closeEditingCell(true, event);\n                    }\n\n                    DomHandler.invokeElementMethod(event.target, 'blur');\n                    DomHandler.invokeElementMethod(targetCell, 'click');\n                }\n\n                event.preventDefault();\n            }\n        }\n    }\n\n    @HostListener('keydown.arrowleft', ['$event'])\n    onArrowLeft(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            this.moveToPreviousCell(event);\n        }\n    }\n\n    @HostListener('keydown.arrowright', ['$event'])\n    onArrowRight(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            this.moveToNextCell(event);\n        }\n    }\n\n    findCell(element) {\n        if (element) {\n            let cell = element;\n            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n                cell = cell.parentElement;\n            }\n\n            return cell;\n        }\n        else {\n            return null;\n        }\n    }\n\n    moveToPreviousCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        if (currentCell) {\n            let targetCell = this.findPreviousEditableColumn(currentCell);\n\n            if (targetCell) {\n                if (this.dt.isEditingCellValid()) {\n                    this.closeEditingCell(true, event);\n                }\n\n                DomHandler.invokeElementMethod(event.target, 'blur');\n                DomHandler.invokeElementMethod(targetCell, 'click');\n                event.preventDefault();\n            }\n        }\n    }\n\n    moveToNextCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        if (currentCell) {\n            let targetCell = this.findNextEditableColumn(currentCell);\n\n            if (targetCell) {\n                if (this.dt.isEditingCellValid()) {\n                    this.closeEditingCell(true, event);\n                }\n\n                DomHandler.invokeElementMethod(event.target, 'blur');\n                DomHandler.invokeElementMethod(targetCell, 'click');\n                event.preventDefault();\n            }\n        }\n    }\n\n    findPreviousEditableColumn(cell: Element) {\n        let prevCell = cell.previousElementSibling;\n\n        if (!prevCell) {\n            let previousRow = cell.parentElement.previousElementSibling;\n            if (previousRow) {\n                prevCell = previousRow.lastElementChild;\n            }\n        }\n\n        if (prevCell) {\n            if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n                return prevCell;\n            else\n                return this.findPreviousEditableColumn(prevCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumn(cell: Element) {\n        let nextCell = cell.nextElementSibling;\n\n        if (!nextCell) {\n            let nextRow = cell.parentElement.nextElementSibling;\n            if (nextRow) {\n                nextCell = nextRow.firstElementChild;\n            }\n        }\n\n        if (nextCell) {\n            if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n                return nextCell;\n            else\n                return this.findNextEditableColumn(nextCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumnByIndex(cell: Element, index: number) {\n        let nextRow = cell.parentElement.nextElementSibling;\n\n        if (nextRow) {\n            let nextCell = nextRow.children[index];\n\n            if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {\n                return nextCell;\n            }\n\n            return null;\n        }\n        else {\n            return null;\n        }\n    }\n\n    findPrevEditableColumnByIndex(cell: Element, index: number) {\n        let prevRow = cell.parentElement.previousElementSibling;\n\n        if (prevRow) {\n            let prevCell = prevRow.children[index];\n\n            if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {\n                return prevCell;\n            }\n\n            return null;\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.pEditableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.dt.overlaySubscription) {\n            this.dt.overlaySubscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class EditableRow {\n\n    @Input(\"pEditableRow\") data: any;\n\n    @Input() pEditableRowDisabled: boolean;\n\n    constructor(public el: ElementRef) {}\n\n    isEnabled() {\n        return this.pEditableRowDisabled !== true;\n    }\n\n}\n\n@Directive({\n    selector: '[pInitEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InitEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.initRowEdit(this.editableRow.data);\n        event.preventDefault();\n    }\n\n}\n\n@Directive({\n    selector: '[pSaveEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SaveEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);\n        event.preventDefault();\n    }\n}\n\n@Directive({\n    selector: '[pCancelEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CancelEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.cancelRowEdit(this.editableRow.data);\n        event.preventDefault();\n    }\n}\n\n@Component({\n    selector: 'p-cellEditor',\n    template: `\n        <ng-container *ngIf=\"editing\">\n            <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!editing\">\n            <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CellEditor implements AfterContentInit {\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    inputTemplate: TemplateRef<any>;\n\n    outputTemplate: TemplateRef<any>;\n\n    constructor(public dt: Table, @Optional() public editableColumn: EditableColumn, @Optional() public editableRow: EditableRow) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'input':\n                    this.inputTemplate = item.template;\n                    break;\n\n                case 'output':\n                    this.outputTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    get editing(): boolean {\n        return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||\n                (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));\n    }\n\n}\n\n@Component({\n    selector: 'p-tableRadioButton',\n    template: `\n        <div class=\"p-radiobutton p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}\" role=\"radio\" [attr.aria-checked]=\"checked\">\n                <div class=\"p-radiobutton-icon\"></div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableRadioButton  {\n\n    @Input() disabled: boolean;\n\n    @Input() value: any;\n\n    @Input() index: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabel: string;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.dt.isSelected(this.value);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.dt.isSelected(this.value);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.dt.toggleRowWithRadio({\n                originalEvent: event,\n                rowIndex: this.index\n            }, this.value);\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-tableCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"disabled\"\n                [attr.required]=\"required\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box p-component':true,\n                'p-highlight':checked, 'p-disabled':disabled}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableCheckbox  {\n\n    @Input() disabled: boolean;\n\n    @Input() value: any;\n\n    @Input() index: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() ariaLabel: string;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.dt.isSelected(this.value);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.dt.isSelected(this.value);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.dt.toggleRowWithCheckbox({\n                originalEvent: event,\n                rowIndex: this.index\n            }, this.value);\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-tableHeaderCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                [disabled]=\"isDisabled()\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-disabled': isDisabled()}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableHeaderCheckbox  {\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    @Input() disabled: boolean;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabel: string;\n\n    checked: boolean;\n\n    selectionChangeSubscription: Subscription;\n\n    valueChangeSubscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n\n        this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.updateCheckedState();\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            if (this.dt.value && this.dt.value.length > 0) {\n                this.dt.toggleRowsWithCheckbox(event, !this.checked);\n            }\n        }\n\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    isDisabled() {\n        return this.disabled || !this.dt.value || !this.dt.value.length;\n    }\n\n    ngOnDestroy() {\n        if (this.selectionChangeSubscription) {\n            this.selectionChangeSubscription.unsubscribe();\n        }\n\n        if (this.valueChangeSubscription) {\n            this.valueChangeSubscription.unsubscribe();\n        }\n    }\n\n    updateCheckedState() {\n        this.cd.markForCheck();\n        if (this.dt.filteredValue && !this.dt.lazy) {\n            const val = this.dt.filteredValue;\n            return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());\n        }\n        else {\n            const val = this.dt.value;\n            const length = this.dt.lazy ? this.dt._totalRecords : val ? val.length : 0;\n            return (val && length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === length);\n        }\n    }\n\n    isAllFilteredValuesChecked() {\n        if (!this.dt.filteredValue) {\n            return false;\n        }\n        else {\n            for (let rowData of this.dt.filteredValue) {\n                if (!this.dt.isSelected(rowData)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pReorderableRowHandle]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableRowHandle implements AfterViewInit {\n\n    @Input(\"pReorderableRowHandle\") index: number;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');\n    }\n}\n\n@Directive({\n    selector: '[pReorderableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableRow implements AfterViewInit {\n\n    @Input(\"pReorderableRow\") index: number;\n\n    @Input() pReorderableRowDisabled: boolean;\n\n    mouseDownListener: any;\n\n    dragStartListener: any;\n\n    dragEndListener: any;\n\n    dragOverListener: any;\n\n    dragLeaveListener: any;\n\n    dropListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.el.nativeElement.droppable = true;\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragEndListener = this.onDragEnd.bind(this);\n            this.el.nativeElement.addEventListener('dragend', this.dragEndListener);\n\n            this.dragOverListener = this.onDragOver.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragStartListener) {\n            document.removeEventListener('dragstart', this.dragStartListener);\n            this.dragStartListener = null;\n        }\n\n        if (this.dragEndListener) {\n            document.removeEventListener('dragend', this.dragEndListener);\n            this.dragEndListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))\n            this.el.nativeElement.draggable = true;\n        else\n            this.el.nativeElement.draggable = false;\n    }\n\n    onDragStart(event) {\n        this.dt.onRowDragStart(event, this.index);\n    }\n\n    onDragEnd(event) {\n        this.dt.onRowDragEnd(event);\n        this.el.nativeElement.draggable = false;\n    }\n\n    onDragOver(event) {\n        this.dt.onRowDragOver(event, this.index, this.el.nativeElement);\n        event.preventDefault();\n    }\n\n    onDragLeave(event) {\n        this.dt.onRowDragLeave(event, this.el.nativeElement);\n    }\n\n    isEnabled() {\n        return this.pReorderableRowDisabled !== true;\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled() && this.dt.rowDragging) {\n            this.dt.onRowDrop(event, this.el.nativeElement);\n        }\n\n        event.preventDefault()\n    }\n}\n\n@Component({\n    selector: 'p-columnFilterFormElement',\n    template: `\n        <ng-container *ngIf=\"filterTemplate; else builtInElement\">\n            <ng-container *ngTemplateOutlet=\"filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}\"></ng-container>\n        </ng-container>\n        <ng-template #builtInElement>\n            <ng-container [ngSwitch]=\"type\">\n                <input *ngSwitchCase=\"'text'\" type=\"text\" pInputText [value]=\"filterConstraint?.value\" (input)=\"onModelChange($event.target.value)\"\n                    (keydown.enter)=\"onTextInputEnterKeyDown($event)\" [attr.placeholder]=\"placeholder\">\n                <p-inputNumber *ngSwitchCase=\"'numeric'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\" (onKeyDown)=\"onNumericInputKeyDown($event)\" [showButtons]=\"true\" [attr.placeholder]=\"placeholder\"\n                    [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\" [placeholder]=\"placeholder\"\n                    [mode]=\"currency ? 'currency' : 'decimal'\" [locale]=\"locale\" [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-inputNumber>\n                <p-triStateCheckbox *ngSwitchCase=\"'boolean'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\"></p-triStateCheckbox>\n                <p-calendar *ngSwitchCase=\"'date'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\"></p-calendar>\n            </ng-container>\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColumnFilterFormElement implements OnInit {\n\n    @Input() field: string;\n\n    @Input() type: string;\n\n    @Input() filterConstraint: FilterMetadata;\n\n    @Input() filterTemplate: TemplateRef<any>;\n\n    @Input() placeholder: string;\n\n    @Input() minFractionDigits: number\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    filterCallback: Function;\n\n    constructor(public dt: Table) {}\n\n    ngOnInit() {\n        this.filterCallback = value => {\n            this.filterConstraint.value = value;\n            this.dt._filter();\n        };\n    }\n\n    onModelChange(value: any) {\n        this.filterConstraint.value = value;\n\n        if (this.type === 'boolean' || value === '') {\n            this.dt._filter();\n        }\n    }\n\n    onTextInputEnterKeyDown(event: KeyboardEvent) {\n        this.dt._filter();\n        event.preventDefault();\n    }\n\n    onNumericInputKeyDown(event: KeyboardEvent) {\n        if (event.key === 'Enter') {\n            this.dt._filter();\n            event.preventDefault();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-columnFilter',\n    template: `\n        <div class=\"p-column-filter\" [ngClass]=\"{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}\">\n            <p-columnFilterFormElement *ngIf=\"display === 'row'\" class=\"p-fluid\" [type]=\"type\" [field]=\"field\" [filterConstraint]=\"dt.filters[field]\" [filterTemplate]=\"filterTemplate\" [placeholder]=\"placeholder\" [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\"\n                                    [locale]=\"locale\"  [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-columnFilterFormElement>\n            <button #icon *ngIf=\"showMenuButton\" type=\"button\" class=\"p-column-filter-menu-button p-link\" aria-haspopup=\"true\" [attr.aria-expanded]=\"overlayVisible\"\n                [ngClass]=\"{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}\"\n                (click)=\"toggleMenu()\" (keydown)=\"onToggleButtonKeyDown($event)\"><span class=\"pi pi-filter-icon pi-filter\"></span></button>\n            <button #icon *ngIf=\"showClearButton && display === 'row'\" [ngClass]=\"{'p-hidden-space': !hasRowFilter()}\" type=\"button\" class=\"p-column-filter-clear-button p-link\" (click)=\"clearFilter()\"><span class=\"pi pi-filter-slash\"></span></button>\n            <div *ngIf=\"showMenu && overlayVisible\" [ngClass]=\"{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}\" (click)=\"onContentClick()\"\n                [@overlayAnimation]=\"'visible'\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" (keydown.escape)=\"onEscape()\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: field}\"></ng-container>\n                <ul *ngIf=\"display === 'row'; else menu\" class=\"p-column-filter-row-items\">\n                    <li class=\"p-column-filter-row-item\" *ngFor=\"let matchMode of matchModes; let i = index;\" (click)=\"onRowMatchModeChange(matchMode.value)\" (keydown)=\"onRowMatchModeKeyDown($event)\" (keydown.enter)=\"this.onRowMatchModeChange(matchMode.value)\"\n                        [ngClass]=\"{'p-highlight': isRowMatchModeSelected(matchMode.value)}\" [attr.tabindex]=\"i === 0 ? '0' : null\">{{matchMode.label}}</li>\n                    <li class=\"p-column-filter-separator\"></li>\n                    <li class=\"p-column-filter-row-item\" (click)=\"onRowClearItemClick()\" (keydown)=\"onRowMatchModeKeyDown($event)\" (keydown.enter)=\"onRowClearItemClick()\">{{noFilterLabel}}</li>\n                </ul>\n                <ng-template #menu>\n                    <div class=\"p-column-filter-operator\" *ngIf=\"isShowOperator\">\n                        <p-dropdown [options]=\"operatorOptions\" [ngModel]=\"operator\" (ngModelChange)=\"onOperatorChange($event)\" styleClass=\"p-column-filter-operator-dropdown\"></p-dropdown>\n                    </div>\n                    <div class=\"p-column-filter-constraints\">\n                        <div *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\" class=\"p-column-filter-constraint\">\n                            <p-dropdown  *ngIf=\"showMatchModes && matchModes\" [options]=\"matchModes\" [ngModel]=\"fieldConstraint.matchMode\" (ngModelChange)=\"onMenuMatchModeChange($event, fieldConstraint)\" styleClass=\"p-column-filter-matchmode-dropdown\"></p-dropdown>\n                            <p-columnFilterFormElement [type]=\"type\" [field]=\"field\" [filterConstraint]=\"fieldConstraint\" [filterTemplate]=\"filterTemplate\" [placeholder]=\"placeholder\"\n                            [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\"\n                            [locale]=\"locale\"  [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-columnFilterFormElement>\n                            <div>\n                                <button *ngIf=\"showRemoveIcon\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-column-filter-remove-button p-button-text p-button-danger p-button-sm\" (click)=\"removeConstraint(fieldConstraint)\" pRipple [label]=\"removeRuleButtonLabel\"></button>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"p-column-filter-add-rule\" *ngIf=\"isShowAddConstraint\">\n                        <button type=\"button\" pButton [label]=\"addRuleButtonLabel\" icon=\"pi pi-plus\" class=\"p-column-filter-add-button p-button-text p-button-sm\" (click)=\"addConstraint()\" pRipple></button>\n                    </div>\n                    <div class=\"p-column-filter-buttonbar\">\n                        <button *ngIf=\"showClearButton\" type=\"button\" pButton class=\"p-button-outlined\" (click)=\"clearFilter()\" [label]=\"clearButtonLabel\" pRipple></button>\n                        <button *ngIf=\"showApplyButton\" type=\"button\" pButton (click)=\"applyFilter()\" [label]=\"applyButtonLabel\" pRipple></button>\n                    </div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate; context: {$implicit: field}\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('.12s cubic-bezier(0, 0, 0.2, 1)')\n            ]),\n            transition(':leave', [\n                animate('.1s linear', style({ opacity: 0 }))\n            ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColumnFilter implements AfterContentInit {\n\n    @Input() field: string;\n\n    @Input() type: string = 'text';\n\n    @Input() display: string = 'row';\n\n    @Input() showMenu: boolean = true;\n\n    @Input() matchMode: string;\n\n    @Input() operator: string = FilterOperator.AND;\n\n    @Input() showOperator: boolean = true;\n\n    @Input() showClearButton: boolean = true;\n\n    @Input() showApplyButton: boolean = true;\n\n    @Input() showMatchModes: boolean = true;\n\n    @Input() showAddButton: boolean = true;\n\n    @Input() hideOnClear: boolean = false;\n\n    @Input() placeholder: string;\n\n    @Input() matchModeOptions: SelectItem[];\n\n    @Input() maxConstraints: number = 2;\n\n    @Input() minFractionDigits: number;\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    @ViewChild('icon') icon: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    constructor(public el: ElementRef, public dt: Table, public renderer: Renderer2, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    overlaySubscription: Subscription;\n\n    headerTemplate: TemplateRef<any>;\n\n    filterTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    operatorOptions: any[];\n\n    overlayVisible: boolean;\n\n    overlay: HTMLElement;\n\n    scrollHandler: any;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    matchModes: SelectItem[];\n\n    translationSubscription: Subscription;\n\n    resetSubscription: Subscription;\n\n    selfClick: boolean;\n\n    overlayEventListener;\n\n    ngOnInit() {\n        if (!this.dt.filters[this.field]) {\n            this.initFieldFilterConstraint();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.generateMatchModeOptions();\n            this.generateOperatorOptions();\n        });\n\n        this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {\n            this.clearFilter();\n        })\n\n        this.generateMatchModeOptions();\n        this.generateOperatorOptions();\n    }\n\n    generateMatchModeOptions() {\n        this.matchModes = this.matchModeOptions ||\n        this.config.filterMatchModeOptions[this.type]?.map(key => {\n            return {label: this.config.getTranslation(key), value: key}\n        });\n    }\n\n    generateOperatorOptions() {\n        this.operatorOptions = [\n            {label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND},\n            {label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR}\n        ];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'filter':\n                    this.filterTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.filterTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    initFieldFilterConstraint() {\n        let defaultMatchMode = this.getDefaultMatchMode();\n        this.dt.filters[this.field] = this.display == 'row' ? {value: null, matchMode: defaultMatchMode} : [{value: null, matchMode: defaultMatchMode, operator: this.operator}];\n    }\n\n    onMenuMatchModeChange(value: any, filterMeta: FilterMetadata) {\n        filterMeta.matchMode = value;\n\n        if (!this.showApplyButton) {\n            this.dt._filter();\n        }\n    }\n\n    onRowMatchModeChange(matchMode: string) {\n        (<FilterMetadata> this.dt.filters[this.field]).matchMode = matchMode;\n        this.dt._filter();\n        this.hide();\n    }\n\n    onRowMatchModeKeyDown(event: KeyboardEvent) {\n        let item = <HTMLLIElement> event.target;\n\n        switch(event.key) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(item);\n                if (nextItem) {\n                    item.removeAttribute('tabindex');\n                    nextItem.tabIndex = '0';\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(item);\n                if (prevItem) {\n                    item.removeAttribute('tabindex');\n                    prevItem.tabIndex = '0';\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n        }\n    }\n\n    onRowClearItemClick() {\n        this.clearFilter();\n        this.hide();\n    }\n\n    isRowMatchModeSelected(matchMode: string) {\n        return (<FilterMetadata> this.dt.filters[this.field]).matchMode === matchMode;\n    }\n\n    addConstraint() {\n        (<FilterMetadata[]> this.dt.filters[this.field]).push({value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator()});\n        this.dt._filter();\n    }\n\n    removeConstraint(filterMeta: FilterMetadata) {\n        this.dt.filters[this.field] = (<FilterMetadata[]> this.dt.filters[this.field]).filter(meta => meta !== filterMeta);\n        this.dt._filter();\n    }\n\n    onOperatorChange(value) {\n        (<FilterMetadata[]> this.dt.filters[this.field]).forEach(filterMeta => {\n            filterMeta.operator = value;\n            this.operator = value;\n        });\n\n        if (!this.showApplyButton) {\n            this.dt._filter();\n        }\n    }\n\n    toggleMenu() {\n        this.overlayVisible = !this.overlayVisible;\n    }\n\n    onToggleButtonKeyDown(event: KeyboardEvent) {\n        switch(event.key) {\n            case 'Escape':\n            case 'Tab':\n                this.overlayVisible = false;\n            break;\n\n            case 'ArrowDown':\n                if (this.overlayVisible) {\n                    let focusable = DomHandler.getFocusableElements(this.overlay);\n                    if (focusable) {\n                        focusable[0].focus();\n                    }\n                    event.preventDefault();\n                }\n                else if (event.altKey) {\n                    this.overlayVisible = true;\n                    event.preventDefault();\n                }\n            break;\n        }\n    }\n\n    onEscape() {\n        this.overlayVisible = false;\n        this.icon.nativeElement.focus();\n    }\n\n    findNextItem(item: HTMLLIElement) {\n        let nextItem = <HTMLLIElement> item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-column-filter-separator')  ? this.findNextItem(nextItem) : nextItem;\n        else\n            return item.parentElement.firstElementChild;\n    }\n\n    findPrevItem(item: HTMLLIElement) {\n        let prevItem = <HTMLLIElement> item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-column-filter-separator')  ? this.findPrevItem(prevItem) : prevItem;\n        else\n        return item.parentElement.lastElementChild;\n    }\n\n    onContentClick() {\n        this.selfClick = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n\n                document.body.appendChild(this.overlay);\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                DomHandler.absolutePosition(this.overlay, this.icon.nativeElement)\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                this.overlayEventListener = (e) => {\n                    if (this.overlay && this.overlay.contains(e.target)) {\n                        this.selfClick = true;\n                    }\n                }\n\n                this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    getDefaultMatchMode(): string {\n        if (this.matchMode) {\n            return this.matchMode;\n        }\n        else {\n            if (this.type === 'text')\n                return FilterMatchMode.STARTS_WITH;\n            else if (this.type === 'numeric')\n                return FilterMatchMode.EQUALS;\n            else if (this.type === 'date')\n                return FilterMatchMode.DATE_IS;\n            else\n                return FilterMatchMode.CONTAINS;\n        }\n    }\n\n    getDefaultOperator(): string {\n        return this.dt.filters ? (<FilterMetadata[]> this.dt.filters[this.field])[0].operator: this.operator;\n    }\n\n    hasRowFilter() {\n        return this.dt.filters[this.field] && !this.dt.isFilterBlank((<FilterMetadata>this.dt.filters[this.field]).value);\n    }\n\n    get fieldConstraints(): FilterMetadata[] {\n        return this.dt.filters ? <FilterMetadata[]> this.dt.filters[this.field] : null;\n    }\n\n    get showRemoveIcon(): boolean {\n        return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n    }\n\n    get showMenuButton(): boolean {\n        return this.showMenu && (this.display === 'row' ? this.type !== 'boolean': true);\n    }\n\n    get isShowOperator(): boolean {\n        return this.showOperator && this.type !== 'boolean';\n    }\n\n    get isShowAddConstraint(): boolean {\n        return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);\n    }\n\n    get applyButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.APPLY);\n    }\n\n    get clearButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.CLEAR);\n    }\n\n    get addRuleButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.ADD_RULE);\n    }\n\n    get removeRuleButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.REMOVE_RULE);\n    }\n\n    get noFilterLabel(): string {\n        return this.config.getTranslation(TranslationKeys.NO_FILTER);\n    }\n\n    hasFilter(): boolean {\n        let fieldFilter = this.dt.filters[this.field];\n        if (fieldFilter) {\n            if (Array.isArray(fieldFilter))\n                return !this.dt.isFilterBlank((<FilterMetadata[]> fieldFilter)[0].value);\n            else\n                return !this.dt.isFilterBlank(fieldFilter.value);\n        }\n\n        return false;\n    }\n\n    isOutsideClicked(event): boolean {\n        return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)\n            || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)\n            || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')\n            || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {\n                if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n\n                this.selfClick = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n            this.selfClick = false;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = () => this.hide();\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n    }\n\n    clearFilter() {\n        this.initFieldFilterConstraint();\n        this.dt._filter();\n        if (this.hideOnClear)\n            this.hide();\n    }\n\n    applyFilter() {\n        this.dt._filter();\n        this.hide();\n    }\n\n    ngOnDestroy() {\n        if (this.overlay) {\n            this.el.nativeElement.appendChild(this.overlay);\n            ZIndexUtils.clear(this.overlay);\n            this.onOverlayHide();\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        if (this.resetSubscription) {\n            this.resetSubscription.unsubscribe();\n        }\n\n        if (this.overlaySubscription) {\n            this.overlaySubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,PaginatorModule,InputTextModule,DropdownModule,ScrollingModule,FormsModule,ButtonModule,SelectButtonModule,CalendarModule,InputNumberModule,TriStateCheckboxModule],\n    exports: [Table,SharedModule,SortableColumn,FrozenColumn,RowGroupHeader,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,SortIcon,\n            TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow,ScrollingModule,ColumnFilter],\n    declarations: [Table,SortableColumn,FrozenColumn,RowGroupHeader,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,TableBody,SortIcon,\n            TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow,ColumnFilter,ColumnFilterFormElement]\n})\nexport class TableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,161 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class TabMenu {
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        this.updateInkBar();
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = item;
+        this.tabChanged = true;
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        if (tabHeader) {
+            this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+            this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+        }
+    }
+}
+TabMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
+TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabMenu, selector: "p-tabMenu", inputs: { model: "model", activeItem: "activeItem", popup: "popup", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabMenu', template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], activeItem: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TabMenuModule {
+}
+TabMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });
+TabMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, imports: [[CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], RouterModule, SharedModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule],
+                    exports: [TabMenu, RouterModule, SharedModule, TooltipModule],
+                    declarations: [TabMenu]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TabMenu, TabMenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tabmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tabmenu.mjs","sources":["../../src/app/components/tabmenu/tabmenu.ts","../../src/app/components/tabmenu/primeng-tabmenu.ts"],"sourcesContent":["import {NgModule,Component,Input,ContentChildren,QueryList,AfterContentInit,AfterViewInit,AfterViewChecked,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ElementRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {PrimeTemplate, SharedModule} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {DomHandler} from 'primeng/dom';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-tabMenu',\n    template: `\n        <div [ngClass]=\"'p-tabmenu p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ul #navbar class=\"p-tabmenu-nav p-reset\" role=\"tablist\">\n                <li *ngFor=\"let item of model; let i = index\" role=\"tab\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" [attr.aria-selected]=\"activeItem==item\" [attr.aria-expanded]=\"activeItem==item\"\n                    [ngClass]=\"{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                    <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url\" class=\"p-menuitem-link\" role=\"presentation\" (click)=\"itemClick($event,item)\" (keydown.enter)=\"itemClick($event,item)\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                        [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" pRipple>\n                        <ng-container *ngIf=\"!itemTemplate\">\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </ng-container>\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                    </a>\n                    <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\"\n                        role=\"presentation\" class=\"p-menuitem-link\" (click)=\"itemClick($event,item)\" (keydown.enter)=\"itemClick($event,item)\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                        [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" pRipple>\n                        <ng-container *ngIf=\"!itemTemplate\">\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </ng-container>\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                    </a>\n                </li>\n                <li #inkbar class=\"p-tabmenu-ink-bar\"></li>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tabmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TabMenu implements AfterContentInit,AfterViewInit,AfterViewChecked {\n\n    @Input() model: MenuItem[];\n\n    @Input() activeItem: MenuItem;\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ViewChild('navbar') navbar: ElementRef;\n\n    @ViewChild('inkbar') inkbar: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    tabChanged: boolean;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        this.updateInkBar();\n    }\n\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n\n    itemClick(event: Event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.activeItem = item;\n        this.tabChanged = true;\n    }\n\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        if (tabHeader) {\n            this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n            this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,SharedModule,RippleModule,TooltipModule],\n    exports: [TabMenu,RouterModule,SharedModule,TooltipModule],\n    declarations: [TabMenu]\n})\nexport class TabMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,444 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+
+let idx = 0;
+class TabPanel {
+    constructor(tabView, viewContainer, cd) {
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.cache = true;
+        this.tooltipPosition = 'top';
+        this.tooltipPositionStyle = 'absolute';
+        this.id = `p-tabpanel-${idx++}`;
+        this.tabView = tabView;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            this.cd.detectChanges();
+        }
+        if (val)
+            this.loaded = true;
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(disabled) {
+        this._disabled = disabled;
+        this.tabView.cd.markForCheck();
+    }
+    get header() {
+        return this._header;
+    }
+    set header(header) {
+        this._header = header;
+        this.tabView.cd.markForCheck();
+    }
+    get leftIcon() {
+        return this._leftIcon;
+    }
+    set leftIcon(leftIcon) {
+        this._leftIcon = leftIcon;
+        this.tabView.cd.markForCheck();
+    }
+    get rightIcon() {
+        return this._rightIcon;
+    }
+    set rightIcon(rightIcon) {
+        this._rightIcon = rightIcon;
+        this.tabView.cd.markForCheck();
+    }
+    ngOnDestroy() {
+        this.view = null;
+    }
+}
+TabPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabPanel, selector: "p-tabPanel", inputs: { closable: "closable", headerStyle: "headerStyle", headerStyleClass: "headerStyleClass", cache: "cache", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", selected: "selected", disabled: "disabled", header: "header", leftIcon: "leftIcon", rightIcon: "rightIcon" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tabPanel',
+                    template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => TabView)]
+                    }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }];
+    }, propDecorators: { closable: [{
+                type: Input
+            }], headerStyle: [{
+                type: Input
+            }], headerStyleClass: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], leftIcon: [{
+                type: Input
+            }], rightIcon: [{
+                type: Input
+            }] } });
+class TabView {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.orientation = 'top';
+        this.onChange = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.activeIndexChange = new EventEmitter();
+        this.backwardIsDisabled = true;
+        this.forwardIsDisabled = false;
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabPanels.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    initTabs() {
+        this.tabs = this.tabPanels.toArray();
+        let selectedTab = this.findSelectedTab();
+        if (!selectedTab && this.tabs.length) {
+            if (this.activeIndex != null && this.tabs.length > this.activeIndex)
+                this.tabs[this.activeIndex].selected = true;
+            else
+                this.tabs[0].selected = true;
+            this.tabChanged = true;
+        }
+        this.cd.markForCheck();
+    }
+    open(event, tab) {
+        if (tab.disabled) {
+            if (event) {
+                event.preventDefault();
+            }
+            return;
+        }
+        if (!tab.selected) {
+            let selectedTab = this.findSelectedTab();
+            if (selectedTab) {
+                selectedTab.selected = false;
+            }
+            this.tabChanged = true;
+            tab.selected = true;
+            let selectedTabIndex = this.findTabIndex(tab);
+            this.preventActiveIndexPropagation = true;
+            this.activeIndexChange.emit(selectedTabIndex);
+            this.onChange.emit({ originalEvent: event, index: selectedTabIndex });
+            this.updateScrollBar(selectedTabIndex);
+        }
+        if (event) {
+            event.preventDefault();
+        }
+    }
+    close(event, tab) {
+        if (this.controlClose) {
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab),
+                close: () => {
+                    this.closeTab(tab);
+                }
+            });
+        }
+        else {
+            this.closeTab(tab);
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab)
+            });
+        }
+        event.stopPropagation();
+    }
+    closeTab(tab) {
+        if (tab.disabled) {
+            return;
+        }
+        if (tab.selected) {
+            this.tabChanged = true;
+            tab.selected = false;
+            for (let i = 0; i < this.tabs.length; i++) {
+                let tabPanel = this.tabs[i];
+                if (!tabPanel.closed && !tab.disabled) {
+                    tabPanel.selected = true;
+                    break;
+                }
+            }
+        }
+        tab.closed = true;
+    }
+    findSelectedTab() {
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i].selected) {
+                return this.tabs[i];
+            }
+        }
+        return null;
+    }
+    findTabIndex(tab) {
+        let index = -1;
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i] == tab) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {
+            this.findSelectedTab().selected = false;
+            this.tabs[this._activeIndex].selected = true;
+            this.tabChanged = true;
+            this.updateScrollBar(val);
+        }
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+        this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+    }
+    updateScrollBar(index) {
+        let tabHeader = this.navbar.nativeElement.children[index];
+        tabHeader.scrollIntoView({ block: 'nearest' });
+    }
+    updateButtonState() {
+        const content = this.content.nativeElement;
+        const { scrollLeft, scrollWidth } = content;
+        const width = DomHandler.getWidth(content);
+        this.backwardIsDisabled = scrollLeft === 0;
+        this.forwardIsDisabled = scrollLeft === scrollWidth - width;
+    }
+    onScroll(event) {
+        this.scrollable && this.updateButtonState();
+        event.preventDefault();
+    }
+    getVisibleButtonWidths() {
+        var _a, _b;
+        return [(_a = this.prevBtn) === null || _a === void 0 ? void 0 : _a.nativeElement, (_b = this.nextBtn) === null || _b === void 0 ? void 0 : _b.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);
+    }
+    navBackward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft - width;
+        content.scrollLeft = pos <= 0 ? 0 : pos;
+    }
+    navForward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft + width;
+        const lastPos = content.scrollWidth - width;
+        content.scrollLeft = pos >= lastPos ? lastPos : pos;
+    }
+}
+TabView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabView, selector: "p-tabView", inputs: { orientation: "orientation", style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabPanels", predicate: TabPanel }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabView', template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orientation: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], controlClose: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], prevBtn: [{
+                type: ViewChild,
+                args: ['prevBtn']
+            }], nextBtn: [{
+                type: ViewChild,
+                args: ['nextBtn']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], tabPanels: [{
+                type: ContentChildren,
+                args: [TabPanel]
+            }], onChange: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], activeIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class TabViewModule {
+}
+TabViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule], exports: [TabView, TabPanel, SharedModule] });
+TabViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, TooltipModule, RippleModule],
+                    exports: [TabView, TabPanel, SharedModule],
+                    declarations: [TabView, TabPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TabPanel, TabView, TabViewModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tabview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tabview.mjs","sources":["../../src/app/components/tabview/tabview.ts","../../src/app/components/tabview/primeng-tabview.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,AfterContentInit,\n        ContentChildren,QueryList,TemplateRef,EmbeddedViewRef,ViewContainerRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation, ViewChild, AfterViewChecked, forwardRef, Inject} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-tabPanel',\n    template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TabPanel implements AfterContentInit,OnDestroy {\n\n    @Input() closable: boolean;\n\n    @Input() headerStyle: any;\n\n    @Input() headerStyleClass: string;\n\n    @Input() cache: boolean = true;\n\n    @Input() tooltip: any;\n\n    @Input() tooltipPosition: string = 'top';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    closed: boolean;\n\n    view: EmbeddedViewRef<any>;\n\n    _selected: boolean;\n\n    _disabled: boolean;\n\n    _header: string;\n\n    _leftIcon: string;\n\n    _rightIcon: string;\n\n    loaded: boolean;\n\n    id: string = `p-tabpanel-${idx++}`;\n\n    contentTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    tabView: TabView;\n\n    constructor(@Inject(forwardRef(() => TabView)) tabView, public viewContainer: ViewContainerRef, public cd: ChangeDetectorRef) {\n        this.tabView = tabView as TabView;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    @Input() get selected(): boolean {\n        return this._selected;\n    }\n\n    set selected(val: boolean) {\n        this._selected = val;\n\n        if (!this.loaded) {\n            this.cd.detectChanges();\n        }\n\n        if (val)\n            this.loaded = true;\n    }\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    };\n\n    set disabled(disabled: boolean) {\n        this._disabled = disabled;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get header(): string {\n        return this._header;\n    }\n\n    set header(header: string) {\n        this._header = header;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get leftIcon(): string {\n        return this._leftIcon;\n    }\n\n    set leftIcon(leftIcon :string) {\n        this._leftIcon = leftIcon;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get rightIcon(): string {\n        return this._rightIcon;\n    }\n\n    set rightIcon(rightIcon :string) {\n        this._rightIcon = rightIcon;\n        this.tabView.cd.markForCheck();\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n    }\n}\n\n@Component({\n    selector: 'p-tabView',\n    template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush,\n   encapsulation: ViewEncapsulation.None,\n   styleUrls: ['./tabview.css'],\n   host: {\n    'class': 'p-element'\n}\n})\nexport class TabView implements AfterContentInit,AfterViewChecked,BlockableUI {\n\n    @Input() orientation: string = 'top';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() controlClose: boolean;\n\n    @Input() scrollable: boolean;\n\n    @ViewChild('content') content: ElementRef;\n\n    @ViewChild('navbar') navbar: ElementRef;\n\n    @ViewChild('prevBtn') prevBtn: ElementRef;\n\n    @ViewChild('nextBtn') nextBtn: ElementRef;\n\n    @ViewChild('inkbar') inkbar: ElementRef;\n\n    @ContentChildren(TabPanel) tabPanels: QueryList<TabPanel>;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n\n    initialized: boolean;\n\n    tabs: TabPanel[];\n\n    _activeIndex: number;\n\n    preventActiveIndexPropagation: boolean;\n\n    tabChanged: boolean;\n\n    backwardIsDisabled: boolean = true;\n\n    forwardIsDisabled: boolean = false;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.initTabs();\n\n        this.tabPanels.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n\n    initTabs(): void {\n        this.tabs = this.tabPanels.toArray();\n        let selectedTab: TabPanel = this.findSelectedTab();\n        if (!selectedTab && this.tabs.length) {\n            if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n                this.tabs[this.activeIndex].selected = true;\n            else\n                this.tabs[0].selected = true;\n\n            this.tabChanged = true;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    open(event: Event, tab: TabPanel) {\n        if (tab.disabled) {\n            if (event) {\n                event.preventDefault();\n            }\n            return;\n        }\n\n        if (!tab.selected) {\n            let selectedTab: TabPanel = this.findSelectedTab();\n            if (selectedTab) {\n                selectedTab.selected = false\n            }\n\n            this.tabChanged = true;\n            tab.selected = true;\n            let selectedTabIndex = this.findTabIndex(tab);\n            this.preventActiveIndexPropagation = true;\n            this.activeIndexChange.emit(selectedTabIndex);\n            this.onChange.emit({originalEvent: event, index: selectedTabIndex});\n\n            this.updateScrollBar(selectedTabIndex);\n        }\n\n        if (event) {\n            event.preventDefault();\n        }\n    }\n\n    close(event: Event, tab: TabPanel) {\n        if (this.controlClose) {\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab),\n                close: () => {\n                    this.closeTab(tab);\n                }}\n            );\n        }\n        else {\n            this.closeTab(tab);\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab)\n            });\n        }\n\n        event.stopPropagation();\n    }\n\n    closeTab(tab: TabPanel) {\n        if (tab.disabled) {\n            return;\n        }\n        if (tab.selected) {\n            this.tabChanged = true;\n            tab.selected = false;\n            for(let i = 0; i < this.tabs.length; i++) {\n                let tabPanel = this.tabs[i];\n                if (!tabPanel.closed&&!tab.disabled) {\n                    tabPanel.selected = true;\n                    break;\n                }\n            }\n        }\n\n        tab.closed = true;\n    }\n\n    findSelectedTab() {\n        for(let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i].selected) {\n                return this.tabs[i];\n            }\n        }\n        return null;\n    }\n\n    findTabIndex(tab: TabPanel) {\n        let index = -1;\n        for(let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i] == tab) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    }\n\n    set activeIndex(val:number) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n\n        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n            this.findSelectedTab().selected = false;\n            this.tabs[this._activeIndex].selected = true;\n            this.tabChanged = true;\n\n            this.updateScrollBar(val);\n        }\n    }\n\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n        this.inkbar.nativeElement.style.left =  DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n    }\n\n    updateScrollBar(index) {\n        let tabHeader = this.navbar.nativeElement.children[index];\n        tabHeader.scrollIntoView({ block: 'nearest' })\n    }\n\n    updateButtonState() {\n        const content = this.content.nativeElement;\n        const { scrollLeft, scrollWidth } = content;\n        const width = DomHandler.getWidth(content);\n\n        this.backwardIsDisabled = scrollLeft === 0;\n        this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n    }\n\n    onScroll(event) {\n        this.scrollable && this.updateButtonState();\n\n        event.preventDefault();\n    }\n\n    getVisibleButtonWidths() {\n        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n    }\n\n    navBackward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft - width;\n        content.scrollLeft = pos <= 0 ? 0 : pos;\n    }\n\n    navForward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft + width;\n        const lastPos = content.scrollWidth - width;\n\n        content.scrollLeft = pos >= lastPos ? lastPos : pos;\n    }\n}\n\n\n@NgModule({\n    imports: [CommonModule,SharedModule,TooltipModule,RippleModule],\n    exports: [TabView,TabPanel,SharedModule],\n    declarations: [TabView,TabPanel]\n})\nexport class TabViewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,68 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Tag {
+    containerClass() {
+        return {
+            'p-tag p-component': true,
+            'p-tag-info': this.severity === 'info',
+            'p-tag-success': this.severity === 'success',
+            'p-tag-warning': this.severity === 'warning',
+            'p-tag-danger': this.severity === 'danger',
+            'p-tag-rounded': this.rounded
+        };
+    }
+}
+Tag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Tag.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tag, selector: "p-tag", inputs: { styleClass: "styleClass", style: "style", severity: "severity", value: "value", icon: "icon", rounded: "rounded" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, isInline: true, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tag', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }] } });
+class TagModule {
+}
+TagModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TagModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, declarations: [Tag], imports: [CommonModule], exports: [Tag] });
+TagModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tag],
+                    declarations: [Tag]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tag, TagModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tag.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tag.mjs","sources":["../../src/app/components/tag/tag.ts","../../src/app/components/tag/primeng-tag.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-tag',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n            <span class=\"p-tag-icon\" [ngClass]=\"icon\" *ngIf=\"icon\"></span>\n            <span class=\"p-tag-value\">{{value}}</span>\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tag.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tag {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() severity: string;\n\n    @Input() value: string;\n\n    @Input() icon: string;\n\n    @Input() rounded: boolean;\n\n\n    containerClass() {\n        return {\n            'p-tag p-component': true,\n            'p-tag-info': this.severity === 'info',\n            'p-tag-success': this.severity === 'success',\n            'p-tag-warning': this.severity === 'warning',\n            'p-tag-danger': this.severity === 'danger',\n            'p-tag-rounded': this.rounded\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Tag],\n    declarations: [Tag]\n})\nexport class TagModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,GAAG;IAeZ,cAAc;QACV,OAAO;YACH,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM;YACtC,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC5C,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC5C,cAAc,EAAE,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1C,eAAe,EAAE,IAAI,CAAC,OAAO;SAChC,CAAC;KACL;;gGAxBQ,GAAG;oFAAH,GAAG,kNAdF;;;;;;KAMT;2FAQQ,GAAG;kBAhBf,SAAS;+BACI,OAAO,YACP;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;;MAoBG,SAAS;;sGAAT,SAAS;uGAAT,SAAS,iBAhCT,GAAG,aA4BF,YAAY,aA5Bb,GAAG;uGAgCH,SAAS,YAJT,CAAC,YAAY,CAAC;2FAId,SAAS;kBALrB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,YAAY,EAAE,CAAC,GAAG,CAAC;iBACtB;;;AClDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,142 @@
+import * as i0 from '@angular/core';
+import { Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i3 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { Subject } from 'rxjs';
+
+class TerminalService {
+    constructor() {
+        this.commandSource = new Subject();
+        this.responseSource = new Subject();
+        this.commandHandler = this.commandSource.asObservable();
+        this.responseHandler = this.responseSource.asObservable();
+    }
+    sendCommand(command) {
+        if (command) {
+            this.commandSource.next(command);
+        }
+    }
+    sendResponse(response) {
+        if (response) {
+            this.responseSource.next(response);
+        }
+    }
+}
+TerminalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TerminalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, decorators: [{
+            type: Injectable
+        }] });
+
+class Terminal {
+    constructor(el, terminalService, cd) {
+        this.el = el;
+        this.terminalService = terminalService;
+        this.cd = cd;
+        this.commands = [];
+        this.subscription = terminalService.responseHandler.subscribe(response => {
+            this.commands[this.commands.length - 1].response = response;
+            this.commandProcessed = true;
+        });
+    }
+    ngAfterViewInit() {
+        this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];
+    }
+    ngAfterViewChecked() {
+        if (this.commandProcessed) {
+            this.container.scrollTop = this.container.scrollHeight;
+            this.commandProcessed = false;
+        }
+    }
+    set response(value) {
+        if (value) {
+            this.commands[this.commands.length - 1].response = value;
+            this.commandProcessed = true;
+        }
+    }
+    handleCommand(event) {
+        if (event.keyCode == 13) {
+            this.commands.push({ text: this.command });
+            this.terminalService.sendCommand(this.command);
+            this.command = '';
+        }
+    }
+    focus(element) {
+        element.focus();
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Terminal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, deps: [{ token: i0.ElementRef }, { token: TerminalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Terminal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Terminal, selector: "p-terminal", inputs: { welcomeMessage: "welcomeMessage", prompt: "prompt", style: "style", styleClass: "styleClass", response: "response" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-terminal', template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: TerminalService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { welcomeMessage: [{
+                type: Input
+            }], prompt: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], response: [{
+                type: Input
+            }] } });
+class TerminalModule {
+}
+TerminalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TerminalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, declarations: [Terminal], imports: [CommonModule, FormsModule], exports: [Terminal] });
+TerminalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, imports: [[CommonModule, FormsModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FormsModule],
+                    exports: [Terminal],
+                    declarations: [Terminal]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Terminal, TerminalModule, TerminalService };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-terminal.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-terminal.mjs","sources":["../../src/app/components/terminal/terminalservice.ts","../../src/app/components/terminal/terminal.ts","../../src/app/components/terminal/primeng-terminal.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class TerminalService {\n    \n    private commandSource = new Subject<string>();\n    private responseSource = new Subject<string>();\n    \n    commandHandler = this.commandSource.asObservable();\n    responseHandler = this.responseSource.asObservable();\n    \n    sendCommand(command: string) {\n        if (command) {\n            this.commandSource.next(command);\n        }\n    }\n    \n    sendResponse(response: string) {\n        if (response) {\n            this.responseSource.next(response);\n        }\n    }\n}","import {NgModule,Component,AfterViewInit,AfterViewChecked,OnDestroy,Input,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {TerminalService} from './terminalservice';\nimport {Subscription}   from 'rxjs';\n\n@Component({\n    selector: 'p-terminal',\n    template: `\n        <div [ngClass]=\"'p-terminal p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"focus(in)\">\n            <div *ngIf=\"welcomeMessage\">{{welcomeMessage}}</div>\n            <div class=\"p-terminal-content\">\n                <div *ngFor=\"let command of commands\">\n                    <span class=\"p-terminal-prompt\">{{prompt}}</span>\n                    <span class=\"p-terminal-command\">{{command.text}}</span>\n                    <div class=\"p-terminal-response\">{{command.response}}</div>\n                </div>\n            </div>\n            <div class=\"p-terminal-prompt-container\">\n                <span class=\"p-terminal-content-prompt\">{{prompt}}</span>\n                <input #in type=\"text\" [(ngModel)]=\"command\" class=\"p-terminal-input\" autocomplete=\"off\" (keydown)=\"handleCommand($event)\" autofocus>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./terminal.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Terminal implements AfterViewInit,AfterViewChecked,OnDestroy {\n\n    @Input() welcomeMessage: string;\n\n    @Input() prompt: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    commands: any[] = [];\n\n    command: string;\n\n    container: Element;\n\n    commandProcessed: boolean;\n\n    subscription: Subscription;\n\n    constructor(public el: ElementRef, public terminalService: TerminalService, public cd: ChangeDetectorRef) {\n        this.subscription = terminalService.responseHandler.subscribe(response => {\n            this.commands[this.commands.length - 1].response = response;\n            this.commandProcessed = true;\n        });\n    }\n\n    ngAfterViewInit() {\n        this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];\n    }\n\n    ngAfterViewChecked() {\n        if (this.commandProcessed) {\n            this.container.scrollTop = this.container.scrollHeight;\n            this.commandProcessed = false;\n        }\n    }\n\n    @Input()\n    set response(value: string) {\n        if (value) {\n            this.commands[this.commands.length - 1].response = value;\n            this.commandProcessed = true;\n        }\n    }\n\n    handleCommand(event: KeyboardEvent) {\n        if (event.keyCode == 13) {\n            this.commands.push({text: this.command});\n            this.terminalService.sendCommand(this.command);\n            this.command = '';\n        }\n    }\n\n    focus(element: HTMLElement) {\n        element.focus();\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,FormsModule],\n    exports: [Terminal],\n    declarations: [Terminal]\n})\nexport class TerminalModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,494 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i5 from 'primeng/api';
+
+class TieredMenuSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.keydownItem = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay || this.popup) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    onItemKeyDown(event, item) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowRight':
+                if (item.items) {
+                    this.activeItem = item;
+                    if (this.root) {
+                        this.bindDocumentClickListener();
+                    }
+                    setTimeout(() => {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }, 50);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+        this.keydownItem.emit({
+            originalEvent: event,
+            element: listItem
+        });
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onChildItemKeyDown(event) {
+        if (event.originalEvent.key === 'ArrowLeft') {
+            this.activeItem = null;
+            if (this.root) {
+                this.unbindDocumentClickListener();
+            }
+            event.element.parentElement.parentElement.parentElement.children[0].focus();
+        }
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+TieredMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: { item: "item", root: "root", autoDisplay: "autoDisplay", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", popup: "popup", parentActive: "parentActive" }, outputs: { leafClick: "leafClick", keydownItem: "keydownItem" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tieredMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], keydownItem: [{
+                type: Output
+            }] } });
+class TieredMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.parentActive = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.container, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.parentActive = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    onLeafClick() {
+        if (this.popup) {
+            this.hide();
+        }
+        this.unbindDocumentClickListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault && this.popup) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+TieredMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenu, selector: "p-tieredMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"], components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tieredMenu', template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: i5.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+class TieredMenuModule {
+}
+TieredMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TieredMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, declarations: [TieredMenu, TieredMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [TieredMenu, RouterModule, TooltipModule] });
+TieredMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [TieredMenu, RouterModule, TooltipModule],
+                    declarations: [TieredMenu, TieredMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TieredMenu, TieredMenuModule, TieredMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tieredmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tieredmenu.mjs","sources":["../../src/app/components/tieredmenu/tieredmenu.ts","../../src/app/components/tieredmenu/primeng-tieredmenu.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Renderer2, OnDestroy,ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { MenuItem, OverlayService, PrimeNGConfig } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { animate, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-tieredMenuSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': !root}\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\">\n                <li *ngIf=\"!child.separator\" #listItem [ngClass]=\"{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event, child)\" [attr.href]=\"child.url\" [attr.data-automationid]=\"child.automationId\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                         (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                         [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                         [attr.tabindex]=\"child.disabled ? null : '0'\" [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"item === activeItem\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event, child)\" [routerLink]=\"child.routerLink\" [attr.data-automationid]=\"child.automationId\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"  [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-tieredMenuSub (keydownItem)=\"onChildItemKeyDown($event)\" [parentActive]=\"child === activeItem\" [item]=\"child\" *ngIf=\"child.items\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\" (leafClick)=\"onLeafClick()\" [popup]=\"popup\"></p-tieredMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TieredMenuSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() mobileActive: boolean;\n\n    @Input() popup: boolean;\n\n    @Input() get parentActive():boolean\n    {\n        return this._parentActive;\n    }\n    set parentActive(value) {\n        if (!this.root) {\n            this._parentActive = value;\n\n            if (!value)\n                this.activeItem = null;\n        }\n    }\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() keydownItem: EventEmitter<any> = new EventEmitter();\n\n    _parentActive: boolean;\n\n    documentClickListener: any;\n\n    menuHoverActive: boolean = false;\n\n    activeItem: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef) { }\n\n    onItemClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && item === this.activeItem) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                if (this.root) {\n                    this.bindDocumentClickListener();\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onItemMouseEnter(event, item) {\n        if (item.disabled || this.mobileActive) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.root) {\n            if (this.activeItem || this.autoDisplay || this.popup) {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n        else {\n            this.activeItem = item;\n            this.bindDocumentClickListener();\n        }\n    }\n\n    onLeafClick() {\n        this.activeItem = null;\n        if (this.root) {\n            this.unbindDocumentClickListener();\n        }\n\n        this.leafClick.emit();\n    }\n\n    onItemKeyDown(event, item) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.key) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowRight':\n                if (item.items) {\n                    this.activeItem = item;\n\n                    if (this.root) {\n                        this.bindDocumentClickListener();\n                    }\n\n                    setTimeout(() => {\n                        listItem.children[1].children[0].children[0].children[0].focus();\n                    }, 50);\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n\n        this.keydownItem.emit({\n            originalEvent: event,\n            element: listItem\n        });\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    onChildItemKeyDown(event) {\n        if (event.originalEvent.key === 'ArrowLeft') {\n            this.activeItem = null;\n\n            if (this.root) {\n                this.unbindDocumentClickListener();\n            }\n\n            event.element.parentElement.parentElement.parentElement.children[0].focus();\n        }\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.cd.markForCheck();\n                    this.unbindDocumentClickListener();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@Component({\n    selector: 'p-tieredMenu',\n    template: `\n        <div [ngClass]=\"{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\"\n            (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" *ngIf=\"!popup || visible\">\n            <p-tieredMenuSub [item]=\"model\" root=\"root\" [parentActive]=\"parentActive\" [baseZIndex]=\"baseZIndex\" [autoZIndex]=\"autoZIndex\" (leafClick)=\"onLeafClick()\"\n                [autoDisplay]=\"autoDisplay\" [popup]=\"popup\"></p-tieredMenuSub>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tieredmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TieredMenu implements OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    parentActive: boolean;\n\n    container: HTMLDivElement;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    scrollHandler: any;\n\n    target: any;\n\n    visible: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.visible = true;\n        this.parentActive = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.container = event.element;\n                    this.moveOnTop();\n                    this.appendOverlay();\n                    DomHandler.absolutePosition(this.container, this.target);\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.parentActive = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    onLeafClick() {\n        if (this.popup) {\n            this.hide();\n        }\n\n        this.unbindDocumentClickListener();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault && this.popup) {\n                    this.hide();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            if (this.container && this.autoZIndex) {\n                ZIndexUtils.clear(this.container);\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [TieredMenu,RouterModule,TooltipModule],\n    declarations: [TieredMenu,TieredMenuSub]\n})\nexport class TieredMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Timeline {
+    constructor(el) {
+        this.el = el;
+        this.align = 'left';
+        this.layout = 'vertical';
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'opposite':
+                    this.oppositeTemplate = item.template;
+                    break;
+                case 'marker':
+                    this.markerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Timeline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Timeline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Timeline, selector: "p-timeline", inputs: { value: "value", style: "style", styleClass: "styleClass", align: "align", layout: "layout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-timeline', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TimelineModule {
+}
+TimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, declarations: [Timeline], imports: [CommonModule], exports: [Timeline, SharedModule] });
+TimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Timeline, SharedModule],
+                    declarations: [Timeline]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Timeline, TimelineModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-timeline.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-timeline.mjs","sources":["../../src/app/components/timeline/timeline.ts","../../src/app/components/timeline/primeng-timeline.ts"],"sourcesContent":["import {NgModule ,Component, Input, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BlockableUI, PrimeTemplate, SharedModule} from 'primeng/api';\n\n@Component({\n    selector: 'p-timeline',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"{'p-timeline p-component': true,\n                'p-timeline-left': align === 'left',\n                'p-timeline-right': align === 'right',\n                'p-timeline-top': align === 'top',\n                'p-timeline-bottom': align === 'bottom',\n                'p-timeline-alternate': align === 'alternate',\n                'p-timeline-vertical': layout === 'vertical',\n                'p-timeline-horizontal': layout === 'horizontal'}\">\n            <div *ngFor=\"let event of value; let last=last\" class=\"p-timeline-event\">\n                <div class=\"p-timeline-event-opposite\">\n                    <ng-container *ngTemplateOutlet=\"oppositeTemplate; context: {$implicit: event}\"></ng-container>\n                </div>\n                <div class=\"p-timeline-event-separator\">\n                    <ng-container *ngIf=\"markerTemplate; else marker\">\n                        <ng-container *ngTemplateOutlet=\"markerTemplate; context: {$implicit: event}\"></ng-container>\n                    </ng-container>\n                    <ng-template #marker>\n                        <div class=\"p-timeline-event-marker\"></div>\n                    </ng-template>\n                    <div *ngIf=\"!last\" class=\"p-timeline-event-connector\"></div>\n                </div>\n                <div class=\"p-timeline-event-content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate; context: {$implicit: event}\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./timeline.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Timeline implements AfterContentInit, BlockableUI {\n\n    @Input() value: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() align: string = 'left';\n\n    @Input() layout: string = 'vertical';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    oppositeTemplate: TemplateRef<any>;\n\n    markerTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'opposite':\n                    this.oppositeTemplate = item.template;\n                break;\n\n                case 'marker':\n                    this.markerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Timeline, SharedModule],\n    declarations: [Timeline]\n})\nexport class TimelineModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAyCa,QAAQ;IAoBjB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAZzB,UAAK,GAAW,MAAM,CAAC;QAEvB,WAAM,GAAW,UAAU,CAAC;KAUC;IAEtC,mBAAmB;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5C;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;gBAEN,KAAK,UAAU;oBACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC1C,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;;qGA1CQ,QAAQ;yFAAR,QAAQ,2NAYA,aAAa,6BA/CpB;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT;2FAQQ,QAAQ;kBArCpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAuCrB,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAnDd,QAAQ,aA+CP,YAAY,aA/Cb,QAAQ,EAgDG,YAAY;4GAGvB,cAAc,YAJd,CAAC,YAAY,CAAC,EACH,YAAY;2FAGvB,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;oBACjC,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;AC3FD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,394 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';
+
+class ToastItem {
+    constructor(zone) {
+        this.zone = zone;
+        this.onClose = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        this.initTimeout();
+    }
+    initTimeout() {
+        if (!this.message.sticky) {
+            this.zone.runOutsideAngular(() => {
+                this.timeout = setTimeout(() => {
+                    this.onClose.emit({
+                        index: this.index,
+                        message: this.message
+                    });
+                }, this.message.life || 3000);
+            });
+        }
+    }
+    clearTimeout() {
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+            this.timeout = null;
+        }
+    }
+    onMouseEnter() {
+        this.clearTimeout();
+    }
+    onMouseLeave() {
+        this.initTimeout();
+    }
+    onCloseIconClick(event) {
+        this.clearTimeout();
+        this.onClose.emit({
+            index: this.index,
+            message: this.message
+        });
+        event.preventDefault();
+    }
+    ngOnDestroy() {
+        this.clearTimeout();
+    }
+}
+ToastItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+ToastItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToastItem, selector: "p-toastItem", inputs: { message: "message", index: "index", template: "template", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('messageState', [
+            state('visible', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => *', [
+                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('* => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    height: 0,
+                    opacity: 0,
+                    transform: '{{hideTransformParams}}'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-toastItem',
+                    template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('messageState', [
+                            state('visible', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => *', [
+                                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('* => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    height: 0,
+                                    opacity: 0,
+                                    transform: '{{hideTransformParams}}'
+                                }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { message: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+class Toast {
+    constructor(messageService, cd, config) {
+        this.messageService = messageService;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.position = 'top-right';
+        this.preventOpenDuplicates = false;
+        this.preventDuplicates = false;
+        this.showTransformOptions = 'translateY(100%)';
+        this.hideTransformOptions = 'translateY(-100%)';
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '250ms ease-in';
+        this.onClose = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {
+            if (messages) {
+                if (messages instanceof Array) {
+                    const filteredMessages = messages.filter(m => this.canAdd(m));
+                    this.add(filteredMessages);
+                }
+                else if (this.canAdd(messages)) {
+                    this.add([messages]);
+                }
+            }
+        });
+        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+            if (key) {
+                if (this.key === key) {
+                    this.messages = null;
+                }
+            }
+            else {
+                this.messages = null;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    add(messages) {
+        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];
+        if (this.preventDuplicates) {
+            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];
+        }
+        this.cd.markForCheck();
+    }
+    canAdd(message) {
+        let allow = this.key === message.key;
+        if (allow && this.preventOpenDuplicates) {
+            allow = !this.containsMessage(this.messages, message);
+        }
+        if (allow && this.preventDuplicates) {
+            allow = !this.containsMessage(this.messagesArchieve, message);
+        }
+        return allow;
+    }
+    containsMessage(collection, message) {
+        if (!collection) {
+            return false;
+        }
+        return collection.find(m => {
+            return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));
+        }) != null;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'message':
+                    this.template = item.template;
+                    break;
+                default:
+                    this.template = item.template;
+                    break;
+            }
+        });
+    }
+    onMessageClose(event) {
+        this.messages.splice(event.index, 1);
+        this.onClose.emit({
+            message: event.message
+        });
+        this.cd.detectChanges();
+    }
+    onAnimationStart(event) {
+        if (event.fromState === 'void') {
+            this.containerViewChild.nativeElement.setAttribute(this.id, '');
+            if (this.autoZIndex) {
+                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            if (this.autoZIndex) {
+                ZIndexUtils.clear(this.containerViewChild.nativeElement);
+            }
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                let breakpointStyle = '';
+                for (let styleProp in this.breakpoints[breakpoint]) {
+                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';
+                }
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-toast[${this.id}] {
+                           ${breakpointStyle}
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+}
+Toast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, deps: [{ token: i3.MessageService }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Toast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toast, selector: "p-toast", inputs: { key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", position: "position", preventOpenDuplicates: "preventOpenDuplicates", preventDuplicates: "preventDuplicates", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", breakpoints: "breakpoints" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, isInline: true, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"], components: [{ type: ToastItem, selector: "p-toastItem", inputs: ["message", "index", "template", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClose"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('toastAnimation', [
+            transition(':enter, :leave', [
+                query('@*', animateChild())
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toast', template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, animations: [
+                        trigger('toastAnimation', [
+                            transition(':enter, :leave', [
+                                query('@*', animateChild())
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i3.MessageService }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], preventOpenDuplicates: [{
+                type: Input
+            }], preventDuplicates: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ToastModule {
+}
+ToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule], exports: [Toast, SharedModule] });
+ToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Toast, SharedModule],
+                    declarations: [Toast, ToastItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Toast, ToastItem, ToastModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-toast.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-toast.mjs","sources":["../../src/app/components/toast/toast.ts","../../src/app/components/toast/primeng-toast.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,OnInit,AfterViewInit,AfterContentInit,OnDestroy,ElementRef,ViewChild,EventEmitter,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy, NgZone, ChangeDetectorRef, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Message, PrimeNGConfig} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {PrimeTemplate,SharedModule} from 'primeng/api';\nimport {MessageService} from 'primeng/api';\nimport {UniqueComponentId} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription} from 'rxjs';\nimport {trigger,state,style,transition,animate,query,animateChild,AnimationEvent} from '@angular/animations';\nimport { ZIndexUtils } from 'primeng/utils';\n\n@Component({\n    selector: 'p-toastItem',\n    template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('messageState', [\n            state('visible', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => *', [\n                style({transform: '{{showTransformParams}}', opacity: 0}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('* => void', [\n                animate(('{{hideTransitionParams}}'), style({\n                    height: 0,\n                    opacity: 0,\n                    transform: '{{hideTransformParams}}'\n                }))\n            ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ToastItem implements AfterViewInit, OnDestroy {\n\n    @Input() message: Message;\n\n    @Input() index: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Input() showTransformOptions: string;\n\n    @Input() hideTransformOptions: string;\n\n    @Input() showTransitionOptions: string;\n\n    @Input() hideTransitionOptions: string;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    timeout: any;\n\n    constructor(private zone: NgZone) {}\n\n    ngAfterViewInit() {\n        this.initTimeout();\n    }\n\n    initTimeout() {\n        if (!this.message.sticky) {\n            this.zone.runOutsideAngular(() => {\n                this.timeout = setTimeout(() => {\n                    this.onClose.emit({\n                        index: this.index,\n                        message: this.message\n                    });\n                }, this.message.life || 3000);\n            });\n        }\n    }\n\n    clearTimeout() {\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n    }\n\n    onMouseEnter() {\n        this.clearTimeout();\n    }\n\n    onMouseLeave() {\n        this.initTimeout();\n    }\n\n    onCloseIconClick(event) {\n        this.clearTimeout();\n\n        this.onClose.emit({\n            index: this.index,\n            message: this.message\n        });\n\n        event.preventDefault();\n    }\n\n    ngOnDestroy() {\n        this.clearTimeout();\n    }\n}\n\n@Component({\n    selector: 'p-toast',\n    template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `,\n    animations: [\n        trigger('toastAnimation', [\n            transition(':enter, :leave', [\n                query('@*', animateChild())\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./toast.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Toast implements OnInit,AfterContentInit,OnDestroy {\n\n    @Input() key: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() position: string = 'top-right';\n\n    @Input() preventOpenDuplicates: boolean = false;\n\n    @Input() preventDuplicates: boolean = false;\n\n    @Input() showTransformOptions: string = 'translateY(100%)';\n\n    @Input() hideTransformOptions: string = 'translateY(-100%)';\n\n    @Input() showTransitionOptions: string = '300ms ease-out';\n\n    @Input() hideTransitionOptions: string = '250ms ease-in';\n\n    @Input() breakpoints: any;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    messageSubscription: Subscription;\n\n    clearSubscription: Subscription;\n\n    messages: Message[];\n\n    messagesArchieve: Message[];\n\n    template: TemplateRef<any>;\n\n    constructor(public messageService: MessageService, private cd: ChangeDetectorRef, public config: PrimeNGConfig) {}\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    ngOnInit() {\n        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n            if (messages) {\n                if (messages instanceof Array) {\n                    const filteredMessages = messages.filter(m => this.canAdd(m));\n                    this.add(filteredMessages);\n                }\n                else if (this.canAdd(messages)) {\n                    this.add([messages]);\n                }\n            }\n        });\n\n        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n            if (key) {\n                if (this.key === key) {\n                    this.messages = null;\n                }\n            }\n            else {\n                this.messages = null;\n            }\n\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n\n    add(messages: Message[]): void {\n        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n\n        if (this.preventDuplicates) {\n            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n        }\n\n        this.cd.markForCheck();\n    }\n\n    canAdd(message: Message): boolean {\n        let allow = this.key === message.key;\n\n        if (allow && this.preventOpenDuplicates) {\n            allow = !this.containsMessage(this.messages, message);\n        }\n\n        if (allow && this.preventDuplicates) {\n            allow = !this.containsMessage(this.messagesArchieve, message);\n        }\n\n        return allow;\n    }\n\n    containsMessage(collection: Message[], message: Message): boolean {\n        if (!collection) {\n            return false;\n        }\n\n        return collection.find(m => {\n           return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));\n        }) != null;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'message':\n                    this.template = item.template;\n                break;\n\n                default:\n                    this.template = item.template;\n                break;\n            }\n        });\n    }\n\n    onMessageClose(event) {\n        this.messages.splice(event.index, 1);\n\n        this.onClose.emit({\n            message: event.message\n        });\n\n        this.cd.detectChanges();\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.fromState === 'void') {\n            this.containerViewChild.nativeElement.setAttribute(this.id, '');\n\n            if (this.autoZIndex) {\n                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n            }\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        if (event.toState === 'void') {\n            if (this.autoZIndex) {\n                ZIndexUtils.clear(this.containerViewChild.nativeElement);\n            }\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                let breakpointStyle = '';\n                for (let styleProp in this.breakpoints[breakpoint]) {\n                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n                }\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Toast,SharedModule],\n    declarations: [Toast,ToastItem]\n})\nexport class ToastModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const TOGGLEBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ToggleButton),
+    multi: true
+};
+class ToggleButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.iconPos = 'left';
+        this.onChange = new EventEmitter();
+        this.checked = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    toggle(event) {
+        if (!this.disabled) {
+            this.checked = !this.checked;
+            this.onModelChange(this.checked);
+            this.onModelTouched();
+            this.onChange.emit({
+                originalEvent: event,
+                checked: this.checked
+            });
+            this.cd.markForCheck();
+        }
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.checked = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get hasOnLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+    get hasOffLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+}
+ToggleButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ToggleButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToggleButton, selector: "p-toggleButton", inputs: { onLabel: "onLabel", offLabel: "offLabel", onIcon: "onIcon", offIcon: "offIcon", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", style: "style", styleClass: "styleClass", inputId: "inputId", tabindex: "tabindex", iconPos: "iconPos" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toggleButton', template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { onLabel: [{
+                type: Input
+            }], offLabel: [{
+                type: Input
+            }], onIcon: [{
+                type: Input
+            }], offIcon: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class ToggleButtonModule {
+}
+ToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, declarations: [ToggleButton], imports: [CommonModule, RippleModule], exports: [ToggleButton] });
+ToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ToggleButton],
+                    declarations: [ToggleButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TOGGLEBUTTON_VALUE_ACCESSOR, ToggleButton, ToggleButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-togglebutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-togglebutton.mjs","sources":["../../src/app/components/togglebutton/togglebutton.ts","../../src/app/components/togglebutton/primeng-togglebutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectionStrategy,ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const TOGGLEBUTTON_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ToggleButton),\n  multi: true\n};\n\n@Component({\n    selector: 'p-toggleButton',\n    template: `\n        <div [ngClass]=\"{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}\"\n                        [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"toggle($event)\" (keydown.enter)=\"toggle($event)\"\n                        [attr.tabindex]=\"disabled ? null : '0'\" role=\"checkbox\" [attr.aria-checked]=\"checked\" pRipple>\n            <span *ngIf=\"onIcon||offIcon\" [class]=\"checked ? this.onIcon : this.offIcon\"\n                [ngClass]=\"{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}\"></span>\n            <span class=\"p-button-label\">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>\n        </div>\n    `,\n    providers: [TOGGLEBUTTON_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['../button/button.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ToggleButton implements ControlValueAccessor {\n\n    @Input() onLabel: string;\n\n    @Input() offLabel: string;\n\n    @Input() onIcon: string;\n\n    @Input() offIcon: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() disabled: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inputId: string;\n\n    @Input() tabindex: number;\n\n    @Input() iconPos: string = 'left';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    checked: boolean = false;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public cd: ChangeDetectorRef) { }\n\n    toggle(event: Event) {\n        if (!this.disabled) {\n            this.checked = !this.checked;\n            this.onModelChange(this.checked);\n            this.onModelTouched();\n            this.onChange.emit({\n                originalEvent: event,\n                checked: this.checked\n            });\n\n            this.cd.markForCheck();\n        }\n    }\n\n    onBlur() {\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.checked = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get hasOnLabel():boolean {\n        return this.onLabel && this.onLabel.length > 0;\n    }\n\n    get hasOffLabel():boolean {\n        return this.onLabel && this.onLabel.length > 0;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [ToggleButton],\n    declarations: [ToggleButton]\n})\nexport class ToggleButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;MAKa,2BAA2B,GAAQ;IAC9C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;IAC3C,KAAK,EAAE,IAAI;EACX;MAoBW,YAAY;IAgCrB,YAAmB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAV/B,YAAO,GAAW,MAAM,CAAC;QAExB,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE3D,YAAO,GAAY,KAAK,CAAC;QAEzB,kBAAa,GAAa,SAAQ,CAAC;QAEnC,mBAAc,GAAa,SAAQ,CAAC;KAES;IAE7C,MAAM,CAAC,KAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;SAC1B;KACJ;IAED,MAAM;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAClD;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAClD;;yGA5EQ,YAAY;6FAAZ,YAAY,+WAPV,CAAC,2BAA2B,CAAC,0BAT9B;;;;;;;;KAQT;2FAQQ,YAAY;kBAlBxB,SAAS;+BACI,gBAAgB,YAChB;;;;;;;;KAQT,aACU,CAAC,2BAA2B,CAAC,mBACvB,uBAAuB,CAAC,MAAM,QAEzC;wBACF,OAAO,EAAE,WAAW;qBACvB;wGAIQ,OAAO;sBAAf,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEI,QAAQ;sBAAjB,MAAM;;MA4DE,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBApFlB,YAAY,aAgFX,YAAY,EAAC,YAAY,aAhF1B,YAAY;gHAoFZ,kBAAkB,YAJlB,CAAC,YAAY,EAAC,YAAY,CAAC;2FAI3B,kBAAkB;kBAL9B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,YAAY,CAAC;iBAC/B;;;AChHD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,80 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+
+class Toolbar {
+    constructor(el) {
+        this.el = el;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'left':
+                    this.leftTemplate = item.template;
+                    break;
+                case 'right':
+                    this.rightTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Toolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Toolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toolbar, selector: "p-toolbar", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toolbar', template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ToolbarModule {
+}
+ToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, declarations: [Toolbar], imports: [CommonModule], exports: [Toolbar] });
+ToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Toolbar],
+                    declarations: [Toolbar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Toolbar, ToolbarModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-toolbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-toolbar.mjs","sources":["../../src/app/components/toolbar/toolbar.ts","../../src/app/components/toolbar/primeng-toolbar.ts"],"sourcesContent":["import {NgModule,Component,Input,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BlockableUI, PrimeTemplate} from 'primeng/api';\n\n@Component({\n    selector: 'p-toolbar',\n    template: `\n        <div [ngClass]=\"'p-toolbar p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"toolbar\">\n            <ng-content></ng-content>\n            <div class=\"p-toolbar-group-left\" *ngIf=\"leftTemplate\">\n                <ng-container *ngTemplateOutlet=\"leftTemplate\"></ng-container>\n            </div>\n            <div class=\"p-toolbar-group-right\" *ngIf=\"rightTemplate\">\n                <ng-container *ngTemplateOutlet=\"rightTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./toolbar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Toolbar implements AfterContentInit,BlockableUI {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    leftTemplate: TemplateRef<any>;\n\n    rightTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'left':\n                    this.leftTemplate = item.template;\n                break;\n\n                case 'right':\n                    this.rightTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Toolbar],\n    declarations: [Toolbar]\n})\nexport class ToolbarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAwBa,OAAO;IAYhB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAI;IAEtC,mBAAmB;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,MAAM;oBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACtC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;;oGA9BQ,OAAO;wFAAP,OAAO,wKAMC,aAAa,6BAxBpB;;;;;;;;;;KAUT;2FAQQ,OAAO;kBApBnB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;KAUT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAiCrB,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAvCb,OAAO,aAmCN,YAAY,aAnCb,OAAO;2GAuCP,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;AC9DD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,481 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+class Tooltip {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+        this.escape = true;
+        this._tooltipOptions = {
+            tooltipPosition: 'right',
+            tooltipEvent: 'hover',
+            appendTo: 'body',
+            tooltipZIndex: 'auto',
+            escape: false,
+            positionTop: 0,
+            positionLeft: 0
+        };
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(val) {
+        this._disabled = val;
+        this.deactivate();
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            if (this.getOption('tooltipEvent') === 'hover') {
+                this.mouseEnterListener = this.onMouseEnter.bind(this);
+                this.mouseLeaveListener = this.onMouseLeave.bind(this);
+                this.clickListener = this.onClick.bind(this);
+                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);
+                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);
+                this.el.nativeElement.addEventListener('click', this.clickListener);
+            }
+            else if (this.getOption('tooltipEvent') === 'focus') {
+                this.focusListener = this.onFocus.bind(this);
+                this.blurListener = this.onBlur.bind(this);
+                this.el.nativeElement.addEventListener('focus', this.focusListener);
+                this.el.nativeElement.addEventListener('blur', this.blurListener);
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.tooltipPosition) {
+            this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });
+        }
+        if (simpleChange.tooltipEvent) {
+            this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });
+        }
+        if (simpleChange.appendTo) {
+            this.setOption({ appendTo: simpleChange.appendTo.currentValue });
+        }
+        if (simpleChange.positionStyle) {
+            this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });
+        }
+        if (simpleChange.tooltipStyleClass) {
+            this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });
+        }
+        if (simpleChange.tooltipZIndex) {
+            this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });
+        }
+        if (simpleChange.escape) {
+            this.setOption({ escape: simpleChange.escape.currentValue });
+        }
+        if (simpleChange.showDelay) {
+            this.setOption({ showDelay: simpleChange.showDelay.currentValue });
+        }
+        if (simpleChange.hideDelay) {
+            this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });
+        }
+        if (simpleChange.life) {
+            this.setOption({ life: simpleChange.life.currentValue });
+        }
+        if (simpleChange.positionTop) {
+            this.setOption({ positionTop: simpleChange.positionTop.currentValue });
+        }
+        if (simpleChange.positionLeft) {
+            this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });
+        }
+        if (simpleChange.disabled) {
+            this.setOption({ disabled: simpleChange.disabled.currentValue });
+        }
+        if (simpleChange.text) {
+            this.setOption({ tooltipLabel: simpleChange.text.currentValue });
+            if (this.active) {
+                if (simpleChange.text.currentValue) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+        if (simpleChange.tooltipOptions) {
+            this._tooltipOptions = Object.assign(Object.assign({}, this._tooltipOptions), simpleChange.tooltipOptions.currentValue);
+            this.deactivate();
+            if (this.active) {
+                if (this.getOption('tooltipLabel')) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+    }
+    onMouseEnter(e) {
+        if (!this.container && !this.showTimeout) {
+            this.activate();
+        }
+    }
+    onMouseLeave(e) {
+        this.deactivate();
+    }
+    onFocus(e) {
+        this.activate();
+    }
+    onBlur(e) {
+        this.deactivate();
+    }
+    onClick(e) {
+        this.deactivate();
+    }
+    activate() {
+        this.active = true;
+        this.clearHideTimeout();
+        if (this.getOption('showDelay'))
+            this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));
+        else
+            this.show();
+        if (this.getOption('life')) {
+            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');
+            this.hideTimeout = setTimeout(() => { this.hide(); }, duration);
+        }
+    }
+    deactivate() {
+        this.active = false;
+        this.clearShowTimeout();
+        if (this.getOption('hideDelay')) {
+            this.clearHideTimeout(); //life timeout
+            this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));
+        }
+        else {
+            this.hide();
+        }
+    }
+    create() {
+        if (this.container) {
+            this.clearHideTimeout();
+            this.remove();
+        }
+        this.container = document.createElement('div');
+        let tooltipArrow = document.createElement('div');
+        tooltipArrow.className = 'p-tooltip-arrow';
+        this.container.appendChild(tooltipArrow);
+        this.tooltipText = document.createElement('div');
+        this.tooltipText.className = 'p-tooltip-text';
+        this.updateText();
+        if (this.getOption('positionStyle')) {
+            this.container.style.position = this.getOption('positionStyle');
+        }
+        this.container.appendChild(this.tooltipText);
+        if (this.getOption('appendTo') === 'body')
+            document.body.appendChild(this.container);
+        else if (this.getOption('appendTo') === 'target')
+            DomHandler.appendChild(this.container, this.el.nativeElement);
+        else
+            DomHandler.appendChild(this.container, this.getOption('appendTo'));
+        this.container.style.display = 'inline-block';
+    }
+    show() {
+        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {
+            return;
+        }
+        this.create();
+        this.align();
+        DomHandler.fadeIn(this.container, 250);
+        if (this.getOption('tooltipZIndex') === 'auto')
+            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);
+        else
+            this.container.style.zIndex = this.getOption('tooltipZIndex');
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    hide() {
+        if (this.getOption('tooltipZIndex') === 'auto') {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+    }
+    updateText() {
+        if (this.getOption('escape')) {
+            this.tooltipText.innerHTML = '';
+            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));
+        }
+        else {
+            this.tooltipText.innerHTML = this.getOption('tooltipLabel');
+        }
+    }
+    align() {
+        let position = this.getOption('tooltipPosition');
+        switch (position) {
+            case 'top':
+                this.alignTop();
+                if (this.isOutOfBounds()) {
+                    this.alignBottom();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'bottom':
+                this.alignBottom();
+                if (this.isOutOfBounds()) {
+                    this.alignTop();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'left':
+                this.alignLeft();
+                if (this.isOutOfBounds()) {
+                    this.alignRight();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+            case 'right':
+                this.alignRight();
+                if (this.isOutOfBounds()) {
+                    this.alignLeft();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+        }
+    }
+    getHostOffset() {
+        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {
+            let offset = this.el.nativeElement.getBoundingClientRect();
+            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();
+            let targetTop = offset.top + DomHandler.getWindowScrollTop();
+            return { left: targetLeft, top: targetTop };
+        }
+        else {
+            return { left: 0, top: 0 };
+        }
+    }
+    alignRight() {
+        this.preAlign('right');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignLeft() {
+        this.preAlign('left');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignTop() {
+        this.preAlign('top');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignBottom() {
+        this.preAlign('bottom');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    setOption(option) {
+        this._tooltipOptions = Object.assign(Object.assign({}, this._tooltipOptions), option);
+    }
+    getOption(option) {
+        return this._tooltipOptions[option];
+    }
+    preAlign(position) {
+        this.container.style.left = -999 + 'px';
+        this.container.style.top = -999 + 'px';
+        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;
+        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;
+    }
+    isOutOfBounds() {
+        let offset = this.container.getBoundingClientRect();
+        let targetTop = offset.top;
+        let targetLeft = offset.left;
+        let width = DomHandler.getOuterWidth(this.container);
+        let height = DomHandler.getOuterHeight(this.container);
+        let viewport = DomHandler.getViewport();
+        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);
+    }
+    onWindowResize(e) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.zone.runOutsideAngular(() => {
+            this.resizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.resizeListener);
+        });
+    }
+    unbindDocumentResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (this.container) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindEvents() {
+        if (this.getOption('tooltipEvent') === 'hover') {
+            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);
+            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);
+            this.el.nativeElement.removeEventListener('click', this.clickListener);
+        }
+        else if (this.getOption('tooltipEvent') === 'focus') {
+            this.el.nativeElement.removeEventListener('focus', this.focusListener);
+            this.el.nativeElement.removeEventListener('blur', this.blurListener);
+        }
+        this.unbindDocumentResizeListener();
+    }
+    remove() {
+        if (this.container && this.container.parentElement) {
+            if (this.getOption('appendTo') === 'body')
+                document.body.removeChild(this.container);
+            else if (this.getOption('appendTo') === 'target')
+                this.el.nativeElement.removeChild(this.container);
+            else
+                DomHandler.removeChild(this.container, this.getOption('appendTo'));
+        }
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.clearTimeouts();
+        this.container = null;
+        this.scrollHandler = null;
+    }
+    clearShowTimeout() {
+        if (this.showTimeout) {
+            clearTimeout(this.showTimeout);
+            this.showTimeout = null;
+        }
+    }
+    clearHideTimeout() {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+    }
+    clearTimeouts() {
+        this.clearShowTimeout();
+        this.clearHideTimeout();
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        if (this.container) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+    }
+}
+Tooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });
+Tooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Tooltip, selector: "[pTooltip]", inputs: { tooltipPosition: "tooltipPosition", tooltipEvent: "tooltipEvent", appendTo: "appendTo", positionStyle: "positionStyle", tooltipStyleClass: "tooltipStyleClass", tooltipZIndex: "tooltipZIndex", escape: "escape", showDelay: "showDelay", hideDelay: "hideDelay", life: "life", positionTop: "positionTop", positionLeft: "positionLeft", text: ["pTooltip", "text"], disabled: ["tooltipDisabled", "disabled"], tooltipOptions: "tooltipOptions" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTooltip]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{
+                type: Input
+            }], tooltipEvent: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], positionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], tooltipZIndex: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], showDelay: [{
+                type: Input
+            }], hideDelay: [{
+                type: Input
+            }], life: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], text: [{
+                type: Input,
+                args: ['pTooltip']
+            }], disabled: [{
+                type: Input,
+                args: ["tooltipDisabled"]
+            }], tooltipOptions: [{
+                type: Input
+            }] } });
+class TooltipModule {
+}
+TooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });
+TooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tooltip],
+                    declarations: [Tooltip]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tooltip, TooltipModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tooltip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tooltip.mjs","sources":["../../src/app/components/tooltip/tooltip.ts","../../src/app/components/tooltip/primeng-tooltip.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, AfterViewInit, OnDestroy, Input, NgZone, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils'\nimport { PrimeNGConfig } from 'primeng/api';\n\nexport interface TooltipOptions {\n    tooltipLabel?: string;\n    tooltipPosition?: string;\n    tooltipEvent?: string;\n    appendTo?: any;\n    positionStyle?: string;\n    tooltipStyleClass?: string;\n    tooltipZIndex?: string;\n    escape?: boolean;\n    disabled?: boolean;\n    showDelay?: number;\n    hideDelay?: number;\n    positionTop?: number;\n    positionLeft?: number;\n    life?: number;\n}\n\n@Directive({\n    selector: '[pTooltip]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tooltip implements AfterViewInit, OnDestroy {\n\n    @Input() tooltipPosition: string;\n\n    @Input() tooltipEvent: string;\n\n    @Input() appendTo: any;\n\n    @Input() positionStyle: string;\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() tooltipZIndex: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() showDelay: number;\n\n    @Input() hideDelay: number;\n\n    @Input() life: number;\n\n    @Input() positionTop: number;\n\n    @Input() positionLeft: number;\n\n    @Input('pTooltip') text: string;\n\n    @Input(\"tooltipDisabled\") get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(val:boolean) {\n        this._disabled = val;\n        this.deactivate();\n    }\n\n    @Input() tooltipOptions: TooltipOptions;\n\n    _tooltipOptions: TooltipOptions = {\n        tooltipPosition: 'right',\n        tooltipEvent: 'hover',\n        appendTo: 'body',\n        tooltipZIndex: 'auto',\n        escape: false,\n        positionTop: 0,\n        positionLeft: 0\n    }\n\n    _disabled: boolean;\n\n    container: any;\n\n    styleClass: string;\n\n    tooltipText: any;\n\n    showTimeout: any;\n\n    hideTimeout: any;\n\n    active: boolean;\n\n    mouseEnterListener: Function;\n\n    mouseLeaveListener: Function;\n\n    clickListener: Function;\n\n    focusListener: Function;\n\n    blurListener: Function;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone, public config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            if (this.getOption('tooltipEvent') === 'hover') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n            }\n            else if (this.getOption('tooltipEvent') === 'focus') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n                this.el.nativeElement.addEventListener('focus', this.focusListener);\n                this.el.nativeElement.addEventListener('blur', this.blurListener);\n            }\n        });\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.tooltipPosition) {\n            this.setOption({tooltipPosition: simpleChange.tooltipPosition.currentValue});\n        }\n\n        if (simpleChange.tooltipEvent) {\n            this.setOption({tooltipEvent: simpleChange.tooltipEvent.currentValue});\n        }\n\n        if (simpleChange.appendTo) {\n            this.setOption({appendTo: simpleChange.appendTo.currentValue});\n        }\n\n        if (simpleChange.positionStyle) {\n            this.setOption({positionStyle: simpleChange.positionStyle.currentValue});\n        }\n\n        if (simpleChange.tooltipStyleClass) {\n            this.setOption({tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue});\n        }\n\n        if (simpleChange.tooltipZIndex) {\n            this.setOption({tooltipZIndex: simpleChange.tooltipZIndex.currentValue});\n        }\n\n        if (simpleChange.escape) {\n            this.setOption({escape: simpleChange.escape.currentValue});\n        }\n\n        if (simpleChange.showDelay) {\n            this.setOption({showDelay: simpleChange.showDelay.currentValue});\n        }\n\n        if (simpleChange.hideDelay) {\n            this.setOption({hideDelay: simpleChange.hideDelay.currentValue});\n        }\n\n        if (simpleChange.life) {\n            this.setOption({life: simpleChange.life.currentValue});\n        }\n\n        if (simpleChange.positionTop) {\n            this.setOption({positionTop: simpleChange.positionTop.currentValue});\n        }\n\n        if (simpleChange.positionLeft) {\n            this.setOption({positionLeft: simpleChange.positionLeft.currentValue});\n        }\n\n        if (simpleChange.disabled) {\n            this.setOption({disabled: simpleChange.disabled.currentValue});\n        }\n\n        if (simpleChange.text) {\n            this.setOption({tooltipLabel: simpleChange.text.currentValue});\n\n            if (this.active) {\n                if (simpleChange.text.currentValue) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n\n        if (simpleChange.tooltipOptions) {\n            this._tooltipOptions = {...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue};\n            this.deactivate();\n\n            if (this.active) {\n                if (this.getOption('tooltipLabel')) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n    }\n\n    onMouseEnter(e: Event) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n\n    onMouseLeave(e: Event) {\n        this.deactivate();\n    }\n\n    onFocus(e: Event) {\n        this.activate();\n    }\n\n    onBlur(e: Event) {\n        this.deactivate();\n    }\n\n    onClick(e: Event) {\n        this.deactivate();\n    }\n\n    activate() {\n        this.active = true;\n        this.clearHideTimeout();\n\n        if (this.getOption('showDelay'))\n            this.showTimeout = setTimeout(() => { this.show() }, this.getOption('showDelay'));\n        else\n            this.show();\n\n        if (this.getOption('life')) {\n            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n            this.hideTimeout = setTimeout(() => { this.hide() }, duration);\n        }\n    }\n\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n\n        if (this.getOption('hideDelay')) {\n            this.clearHideTimeout();    //life timeout\n            this.hideTimeout = setTimeout(() => { this.hide() }, this.getOption('hideDelay'));\n        }\n        else {\n            this.hide();\n        }\n    }\n\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n\n        this.container = document.createElement('div');\n\n        let tooltipArrow = document.createElement('div');\n        tooltipArrow.className = 'p-tooltip-arrow';\n        this.container.appendChild(tooltipArrow);\n\n        this.tooltipText = document.createElement('div');\n        this.tooltipText.className = 'p-tooltip-text';\n\n        this.updateText();\n\n        if (this.getOption('positionStyle')) {\n            this.container.style.position = this.getOption('positionStyle');\n        }\n\n        this.container.appendChild(this.tooltipText);\n\n        if (this.getOption('appendTo') === 'body')\n            document.body.appendChild(this.container);\n        else if (this.getOption('appendTo') === 'target')\n            DomHandler.appendChild(this.container, this.el.nativeElement);\n        else\n            DomHandler.appendChild(this.container, this.getOption('appendTo'));\n\n        this.container.style.display = 'inline-block';\n    }\n\n    show() {\n        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n            return;\n        }\n\n        this.create();\n        this.align();\n        DomHandler.fadeIn(this.container, 250);\n\n        if (this.getOption('tooltipZIndex') === 'auto')\n            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);\n        else\n            this.container.style.zIndex = this.getOption('tooltipZIndex');\n\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    hide() {\n        if (this.getOption('tooltipZIndex') === 'auto') {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.remove();\n    }\n\n    updateText() {\n        if (this.getOption('escape')) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n        }\n        else {\n            this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n        }\n    }\n\n    align() {\n        let position = this.getOption('tooltipPosition');\n\n        switch (position) {\n            case 'top':\n                this.alignTop();\n                if (this.isOutOfBounds()) {\n                    this.alignBottom();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'bottom':\n                this.alignBottom();\n                if (this.isOutOfBounds()) {\n                    this.alignTop();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'left':\n                this.alignLeft();\n                if (this.isOutOfBounds()) {\n                    this.alignRight();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n\n            case 'right':\n                this.alignRight();\n                if (this.isOutOfBounds()) {\n                    this.alignLeft();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n        }\n    }\n\n    getHostOffset() {\n        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n            let targetTop = offset.top + DomHandler.getWindowScrollTop();\n\n            return { left: targetLeft, top: targetTop };\n        }\n        else {\n            return { left: 0, top: 0 };\n        }\n    }\n\n    alignRight() {\n        this.preAlign('right');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignLeft() {\n        this.preAlign('left');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignTop() {\n        this.preAlign('top');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignBottom() {\n        this.preAlign('bottom');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    setOption(option: TooltipOptions) {\n        this._tooltipOptions = {...this._tooltipOptions, ...option}\n    }\n\n    getOption(option: string) {\n        return this._tooltipOptions[option];\n    }\n\n    preAlign(position: string) {\n        this.container.style.left = -999 + 'px';\n        this.container.style.top = -999 + 'px';\n\n        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n    }\n\n    isOutOfBounds(): boolean {\n        let offset = this.container.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = DomHandler.getOuterWidth(this.container);\n        let height = DomHandler.getOuterHeight(this.container);\n        let viewport = DomHandler.getViewport();\n\n        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);\n    }\n\n    onWindowResize(e: Event) {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.zone.runOutsideAngular(() => {\n            this.resizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.resizeListener);\n        });\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (this.container) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindEvents() {\n        if (this.getOption('tooltipEvent') === 'hover') {\n            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n            this.el.nativeElement.removeEventListener('click', this.clickListener);\n        }\n        else if (this.getOption('tooltipEvent') === 'focus') {\n            this.el.nativeElement.removeEventListener('focus', this.focusListener);\n            this.el.nativeElement.removeEventListener('blur', this.blurListener);\n        }\n\n        this.unbindDocumentResizeListener();\n    }\n\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.getOption('appendTo') === 'body')\n                document.body.removeChild(this.container);\n            else if (this.getOption('appendTo') === 'target')\n                this.el.nativeElement.removeChild(this.container);\n            else\n                DomHandler.removeChild(this.container, this.getOption('appendTo'));\n        }\n\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.clearTimeouts();\n        this.container = null;\n        this.scrollHandler = null;\n    }\n\n    clearShowTimeout() {\n        if (this.showTimeout) {\n            clearTimeout(this.showTimeout);\n            this.showTimeout = null;\n        }\n    }\n\n    clearHideTimeout() {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n    }\n\n    clearTimeouts() {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n\n        if (this.container) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.remove();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Tooltip],\n    declarations: [Tooltip]\n})\nexport class TooltipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1276 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, Optional, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+class UITreeNode {
+    constructor(tree) {
+        this.tree = tree;
+    }
+    ngOnInit() {
+        this.node.parent = this.parentNode;
+        if (this.parentNode) {
+            this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));
+        }
+    }
+    getIcon() {
+        let icon;
+        if (this.node.icon)
+            icon = this.node.icon;
+        else
+            icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;
+        return UITreeNode.ICON_CLASS + ' ' + icon;
+    }
+    isLeaf() {
+        return this.tree.isNodeLeaf(this.node);
+    }
+    toggle(event) {
+        if (this.node.expanded)
+            this.collapse(event);
+        else
+            this.expand(event);
+    }
+    expand(event) {
+        this.node.expanded = true;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });
+    }
+    collapse(event) {
+        this.node.expanded = false;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+    }
+    onNodeClick(event) {
+        this.tree.onNodeClick(event, this.node);
+    }
+    onNodeKeydown(event) {
+        if (event.which === 13) {
+            this.tree.onNodeClick(event, this.node);
+        }
+    }
+    onNodeTouchEnd() {
+        this.tree.onNodeTouchEnd();
+    }
+    onNodeRightClick(event) {
+        this.tree.onNodeRightClick(event, this.node);
+    }
+    isSelected() {
+        return this.tree.isSelected(this.node);
+    }
+    onDropPoint(event, position) {
+        event.preventDefault();
+        let dragNode = this.tree.dragNode;
+        let dragNodeIndex = this.tree.dragNodeIndex;
+        let dragNodeScope = this.tree.dragNodeScope;
+        let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;
+        if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {
+            let dropParams = Object.assign({}, this.createDropPointEventMetadata(position));
+            if (this.tree.validateDrop) {
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index,
+                    accept: () => {
+                        this.processPointDrop(dropParams);
+                    }
+                });
+            }
+            else {
+                this.processPointDrop(dropParams);
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index
+                });
+            }
+        }
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    processPointDrop(event) {
+        let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;
+        event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);
+        let dropIndex = this.index;
+        if (event.position < 0) {
+            dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;
+            newNodeList.splice(dropIndex, 0, event.dragNode);
+        }
+        else {
+            dropIndex = newNodeList.length;
+            newNodeList.push(event.dragNode);
+        }
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: event.dragNodeIndex
+        });
+    }
+    createDropPointEventMetadata(position) {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node,
+            index: this.index,
+            position: position
+        };
+    }
+    onDropPointDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        event.preventDefault();
+    }
+    onDropPointDragEnter(event, position) {
+        if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            if (position < 0)
+                this.draghoverPrev = true;
+            else
+                this.draghoverNext = true;
+        }
+    }
+    onDropPointDragLeave(event) {
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    onDragStart(event) {
+        if (this.tree.draggableNodes && this.node.draggable !== false) {
+            event.dataTransfer.setData("text", "data");
+            this.tree.dragDropService.startDrag({
+                tree: this,
+                node: this.node,
+                subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+                index: this.index,
+                scope: this.tree.draggableScope
+            });
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    onDragStop(event) {
+        this.tree.dragDropService.stopDrag({
+            node: this.node,
+            subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+            index: this.index
+        });
+    }
+    onDropNodeDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        if (this.tree.droppableNodes) {
+            event.preventDefault();
+            event.stopPropagation();
+        }
+    }
+    onDropNode(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false) {
+            let dragNode = this.tree.dragNode;
+            if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {
+                let dropParams = Object.assign({}, this.createDropNodeEventMetadata());
+                if (this.tree.validateDrop) {
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index,
+                        accept: () => {
+                            this.processNodeDrop(dropParams);
+                        }
+                    });
+                }
+                else {
+                    this.processNodeDrop(dropParams);
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index
+                    });
+                }
+            }
+        }
+        event.preventDefault();
+        event.stopPropagation();
+        this.draghoverNode = false;
+    }
+    createDropNodeEventMetadata() {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node
+        };
+    }
+    processNodeDrop(event) {
+        let dragNodeIndex = event.dragNodeIndex;
+        event.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        if (event.dropNode.children)
+            event.dropNode.children.push(event.dragNode);
+        else
+            event.dropNode.children = [event.dragNode];
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: dragNodeIndex
+        });
+    }
+    onDropNodeDragEnter(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            this.draghoverNode = true;
+        }
+    }
+    onDropNodeDragLeave(event) {
+        if (this.tree.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {
+                this.draghoverNode = false;
+            }
+        }
+    }
+    onKeyDown(event) {
+        const nodeElement = event.target.parentElement.parentElement;
+        if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {
+            return;
+        }
+        switch (event.which) {
+            //down arrow
+            case 40:
+                const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];
+                if (listElement && listElement.children.length > 0) {
+                    this.focusNode(listElement.children[0]);
+                }
+                else {
+                    const nextNodeElement = nodeElement.nextElementSibling;
+                    if (nextNodeElement) {
+                        this.focusNode(nextNodeElement);
+                    }
+                    else {
+                        let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);
+                        if (nextSiblingAncestor) {
+                            this.focusNode(nextSiblingAncestor);
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up arrow
+            case 38:
+                if (nodeElement.previousElementSibling) {
+                    this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //right arrow
+            case 39:
+                if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {
+                    this.expand(event);
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.node.expanded) {
+                    this.collapse(event);
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.tree.onNodeClick(event, this.node);
+                event.preventDefault();
+                break;
+            default:
+                //no op
+                break;
+        }
+    }
+    findNextSiblingOfAncestor(nodeElement) {
+        let parentNodeElement = this.getParentNodeElement(nodeElement);
+        if (parentNodeElement) {
+            if (parentNodeElement.nextElementSibling)
+                return parentNodeElement.nextElementSibling;
+            else
+                return this.findNextSiblingOfAncestor(parentNodeElement);
+        }
+        else {
+            return null;
+        }
+    }
+    findLastVisibleDescendant(nodeElement) {
+        const listElement = Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));
+        const childrenListElement = listElement.children[1];
+        if (childrenListElement && childrenListElement.children.length > 0) {
+            const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];
+            return this.findLastVisibleDescendant(lastChildElement);
+        }
+        else {
+            return nodeElement;
+        }
+    }
+    getParentNodeElement(nodeElement) {
+        const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;
+        return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;
+    }
+    focusNode(element) {
+        if (this.tree.droppableNodes)
+            element.children[1].children[0].focus();
+        else
+            element.children[0].children[0].focus();
+    }
+}
+UITreeNode.ICON_CLASS = 'p-treenode-icon ';
+UITreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, deps: [{ token: forwardRef(() => Tree) }], target: i0.ɵɵFactoryTarget.Component });
+UITreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UITreeNode, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: "root", index: "index", firstChild: "firstChild", lastChild: "lastChild", level: "level", indentation: "indentation" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `, isInline: true, components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeNode',
+                    template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () {
+        return [{ type: undefined, decorators: [{
+                        type: Inject,
+                        args: [forwardRef(() => Tree)]
+                    }] }];
+    }, propDecorators: { rowNode: [{
+                type: Input
+            }], node: [{
+                type: Input
+            }], parentNode: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], firstChild: [{
+                type: Input
+            }], lastChild: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }] } });
+class Tree {
+    constructor(el, dragDropService, config) {
+        this.el = el;
+        this.dragDropService = dragDropService;
+        this.config = config;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onNodeContextMenuSelect = new EventEmitter();
+        this.onNodeDrop = new EventEmitter();
+        this.layout = 'vertical';
+        this.metaKeySelection = true;
+        this.propagateSelectionUp = true;
+        this.propagateSelectionDown = true;
+        this.loadingIcon = 'pi pi-spinner';
+        this.emptyMessage = '';
+        this.filterBy = 'label';
+        this.filterMode = 'lenient';
+        this.indentation = 1.5;
+        this.trackBy = (index, item) => item;
+        this.onFilter = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.droppableNodes) {
+            this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(event => {
+                this.dragNodeTree = event.tree;
+                this.dragNode = event.node;
+                this.dragNodeSubNodes = event.subNodes;
+                this.dragNodeIndex = event.index;
+                this.dragNodeScope = event.scope;
+            });
+            this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(event => {
+                this.dragNodeTree = null;
+                this.dragNode = null;
+                this.dragNodeSubNodes = null;
+                this.dragNodeIndex = null;
+                this.dragNodeScope = null;
+                this.dragHover = false;
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this.updateSerializedValue();
+        }
+        if (simpleChange.scrollHeight && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    get horizontal() {
+        return this.layout == 'horizontal';
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.templateMap[item.name] = item.template;
+                    break;
+            }
+        });
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        this.serializeNodes(null, this.getRootNode(), 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            if (this.hasFilteredNodes()) {
+                node = this.getNodeWithKey(node.key, this.value);
+                if (!node) {
+                    return;
+                }
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.isCheckboxSelectionMode()) {
+                if (selected) {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, false);
+                    else
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, false);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, true);
+                    else
+                        this.selection = [...this.selection || [], node];
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, true);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else {
+                let metaSelection = this.nodeTouched ? false : this.metaKeySelection;
+                if (metaSelection) {
+                    let metaKey = (event.metaKey || event.ctrlKey);
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(node);
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            this.selection = (!metaKey) ? [] : this.selection || [];
+                            this.selection = [...this.selection, node];
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeSelect.emit({ originalEvent: event, node: node });
+                    }
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        if (selected) {
+                            this.selection = null;
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = node;
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    else {
+                        if (selected) {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = [...this.selection || [], node];
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    this.selectionChange.emit(this.selection);
+                }
+            }
+        }
+        this.nodeTouched = false;
+    }
+    onNodeTouchEnd() {
+        this.nodeTouched = true;
+    }
+    onNodeRightClick(event, node) {
+        if (this.contextMenu) {
+            let eventTarget = event.target;
+            if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {
+                return;
+            }
+            else {
+                let index = this.findIndexInSelection(node);
+                let selected = (index >= 0);
+                if (!selected) {
+                    if (this.isSingleSelectionMode())
+                        this.selectionChange.emit(node);
+                    else
+                        this.selectionChange.emit([node]);
+                }
+                this.contextMenu.show(event);
+                this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });
+            }
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.isSingleSelectionMode()) {
+                let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.selection.length; i++) {
+                    let selectedNode = this.selection[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    syncNodeOption(node, parentNodes, option, value) {
+        // to synchronize the node option between the filtered nodes and the original nodes(this.value)
+        const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;
+        if (_node) {
+            _node[option] = value || node[option];
+        }
+    }
+    hasFilteredNodes() {
+        return this.filter && this.filteredNodes && this.filteredNodes.length;
+    }
+    getNodeWithKey(key, nodes) {
+        for (let node of nodes) {
+            if (node.key === key) {
+                return node;
+            }
+            if (node.children) {
+                let matchedNode = this.getNodeWithKey(key, node.children);
+                if (matchedNode) {
+                    return matchedNode;
+                }
+            }
+        }
+    }
+    propagateUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedCount = 0;
+            let childPartialSelected = false;
+            for (let child of node.children) {
+                if (this.isSelected(child)) {
+                    selectedCount++;
+                }
+                else if (child.partialSelected) {
+                    childPartialSelected = true;
+                }
+            }
+            if (select && selectedCount == node.children.length) {
+                this.selection = [...this.selection || [], node];
+                node.partialSelected = false;
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    }
+                }
+                if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+            this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateUp(parent, select);
+        }
+    }
+    propagateDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        if (select && index == -1) {
+            this.selection = [...this.selection || [], node];
+        }
+        else if (!select && index > -1) {
+            this.selection = this.selection.filter((val, i) => i != index);
+        }
+        node.partialSelected = false;
+        this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'multiple';
+    }
+    isCheckboxSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'checkbox';
+    }
+    isNodeLeaf(node) {
+        return node.leaf == false ? false : !(node.children && node.children.length);
+    }
+    getRootNode() {
+        return this.filteredNodes ? this.filteredNodes : this.value;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onDragOver(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.dataTransfer.dropEffect = 'move';
+            event.preventDefault();
+        }
+    }
+    onDrop(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.preventDefault();
+            let dragNode = this.dragNode;
+            if (this.allowDrop(dragNode, null, this.dragNodeScope)) {
+                let dragNodeIndex = this.dragNodeIndex;
+                this.value = this.value || [];
+                if (this.validateDrop) {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex,
+                        accept: () => {
+                            this.processTreeDrop(dragNode, dragNodeIndex);
+                        }
+                    });
+                }
+                else {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex
+                    });
+                    this.processTreeDrop(dragNode, dragNodeIndex);
+                }
+            }
+        }
+    }
+    processTreeDrop(dragNode, dragNodeIndex) {
+        this.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        this.value.push(dragNode);
+        this.dragDropService.stopDrag({
+            node: dragNode
+        });
+    }
+    onDragEnter() {
+        if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {
+            this.dragHover = true;
+        }
+    }
+    onDragLeave(event) {
+        if (this.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {
+                this.dragHover = false;
+            }
+        }
+    }
+    allowDrop(dragNode, dropNode, dragNodeScope) {
+        if (!dragNode) {
+            //prevent random html elements to be dragged
+            return false;
+        }
+        else if (this.isValidDragScope(dragNodeScope)) {
+            let allow = true;
+            if (dropNode) {
+                if (dragNode === dropNode) {
+                    allow = false;
+                }
+                else {
+                    let parent = dropNode.parent;
+                    while (parent != null) {
+                        if (parent === dragNode) {
+                            allow = false;
+                            break;
+                        }
+                        parent = parent.parent;
+                    }
+                }
+            }
+            return allow;
+        }
+        else {
+            return false;
+        }
+    }
+    isValidDragScope(dragScope) {
+        let dropScope = this.droppableScope;
+        if (dropScope) {
+            if (typeof dropScope === 'string') {
+                if (typeof dragScope === 'string')
+                    return dropScope === dragScope;
+                else if (dragScope instanceof Array)
+                    return dragScope.indexOf(dropScope) != -1;
+            }
+            else if (dropScope instanceof Array) {
+                if (typeof dragScope === 'string') {
+                    return dropScope.indexOf(dragScope) != -1;
+                }
+                else if (dragScope instanceof Array) {
+                    for (let s of dropScope) {
+                        for (let ds of dragScope) {
+                            if (s === ds) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+    _filter(value) {
+        let filterValue = value;
+        if (filterValue === '') {
+            this.filteredNodes = null;
+        }
+        else {
+            this.filteredNodes = [];
+            const searchFields = this.filterBy.split(',');
+            const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);
+            const isStrictMode = this.filterMode === 'strict';
+            for (let node of this.value) {
+                let copyNode = Object.assign({}, node);
+                let paramsWithoutNode = { searchFields, filterText, isStrictMode };
+                if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                    (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                    this.filteredNodes.push(copyNode);
+                }
+            }
+        }
+        this.updateSerializedValue();
+        this.onFilter.emit({
+            filter: filterValue,
+            filteredValue: this.filteredNodes
+        });
+    }
+    resetFilter() {
+        this.filteredNodes = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = Object.assign({}, childNode);
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                node.expanded = true;
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { searchFields, filterText, isStrictMode }) {
+        let matched = false;
+        for (let field of searchFields) {
+            let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);
+            if (fieldValue.indexOf(filterText) > -1) {
+                matched = true;
+            }
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngOnDestroy() {
+        if (this.dragStartSubscription) {
+            this.dragStartSubscription.unsubscribe();
+        }
+        if (this.dragStopSubscription) {
+            this.dragStopSubscription.unsubscribe();
+        }
+    }
+}
+Tree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, deps: [{ token: i0.ElementRef }, { token: i3.TreeDragDropService, optional: true }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Tree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tree, selector: "p-tree", inputs: { value: "value", selectionMode: "selectionMode", selection: "selection", style: "style", styleClass: "styleClass", contextMenu: "contextMenu", layout: "layout", draggableScope: "draggableScope", droppableScope: "droppableScope", draggableNodes: "draggableNodes", droppableNodes: "droppableNodes", metaKeySelection: "metaKeySelection", propagateSelectionUp: "propagateSelectionUp", propagateSelectionDown: "propagateSelectionDown", loading: "loading", loadingIcon: "loadingIcon", emptyMessage: "emptyMessage", ariaLabel: "ariaLabel", togglerAriaLabel: "togglerAriaLabel", ariaLabelledBy: "ariaLabelledBy", validateDrop: "validateDrop", filter: "filter", filterBy: "filterBy", filterMode: "filterMode", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualNodeHeight: "virtualNodeHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", indentation: "indentation", trackBy: "trackBy" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDrop: "onNodeDrop", onFilter: "onFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"], components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tree', template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"] }]
+        }], ctorParameters: function () {
+        return [{ type: i0.ElementRef }, { type: i3.TreeDragDropService, decorators: [{
+                        type: Optional
+                    }] }, { type: i3.PrimeNGConfig }];
+    }, propDecorators: { value: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onNodeContextMenuSelect: [{
+                type: Output
+            }], onNodeDrop: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], draggableScope: [{
+                type: Input
+            }], droppableScope: [{
+                type: Input
+            }], draggableNodes: [{
+                type: Input
+            }], droppableNodes: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], togglerAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], validateDrop: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualNodeHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }] } });
+class TreeModule {
+}
+TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, declarations: [Tree, UITreeNode], imports: [CommonModule, ScrollingModule, RippleModule], exports: [Tree, SharedModule, ScrollingModule] });
+TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, imports: [[CommonModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule, RippleModule],
+                    exports: [Tree, SharedModule, ScrollingModule],
+                    declarations: [Tree, UITreeNode]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tree, TreeModule, UITreeNode };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tree.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tree.mjs","sources":["../../src/app/components/tree/tree.ts","../../src/app/components/tree/primeng-tree.ts"],"sourcesContent":["import {NgModule,Component,Input,AfterContentInit,OnDestroy,Output,EventEmitter,OnInit,OnChanges,\n    ContentChildren,QueryList,TemplateRef,Inject,ElementRef,forwardRef,ChangeDetectionStrategy,SimpleChanges, ViewEncapsulation, ViewChild} from '@angular/core';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\nimport {Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PrimeNGConfig, TranslationKeys, TreeNode} from 'primeng/api';\nimport {SharedModule} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport {TreeDragDropService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {BlockableUI} from 'primeng/api';\nimport {ObjectUtils} from 'primeng/utils';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n    selector: 'p-treeNode',\n    template: `\n        <ng-template [ngIf]=\"node\">\n            <li *ngIf=\"tree.droppableNodes\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverPrev}\"\n            (drop)=\"onDropPoint($event,-1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,-1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n            <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']\">\n                <div class=\"p-treenode-content\" [style.paddingLeft]=\"(level * indentation)  + 'rem'\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\" (touchend)=\"onNodeTouchEnd()\"\n                    (drop)=\"onDropNode($event)\" (dragover)=\"onDropNodeDragOver($event)\" (dragenter)=\"onDropNodeDragEnter($event)\" (dragleave)=\"onDropNodeDragLeave($event)\"\n                    [draggable]=\"tree.draggableNodes\" (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragStop($event)\" [attr.tabindex]=\"0\"\n                    [ngClass]=\"{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}\" role=\"treeitem\"\n                    (keydown)=\"onKeyDown($event)\" [attr.aria-posinset]=\"this.index + 1\" [attr.aria-expanded]=\"this.node.expanded\" [attr.aria-selected]=\"isSelected()\" [attr.aria-label]=\"node.label\">\n                    <button type=\"button\" [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n                        <span class=\"p-tree-toggler-icon pi pi-fw\" [ngClass]=\"{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}\"></span>\n                    </button>\n                    <div class=\"p-checkbox p-component\" [ngClass]=\"{'p-checkbox-disabled': node.selectable === false}\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n                        <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}\">\n                            <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':isSelected(),'pi-minus':node.partialSelected}\"></span>\n                        </div>\n                    </div>\n                    <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n                    <span class=\"p-treenode-label\">\n                            <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n                            <span *ngIf=\"tree.getTemplateForNode(node)\">\n                                <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                            </span>\n                    </span>\n                </div>\n                <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n                    <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy\" [node]=\"childNode\" [parentNode]=\"node\"\n                        [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"tree.virtualNodeHeight\" [level]=\"level + 1\"></p-treeNode>\n                </ul>\n            </li>\n            <li *ngIf=\"tree.droppableNodes&&lastChild\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverNext}\"\n            (drop)=\"onDropPoint($event,1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n            <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n                <tbody>\n                    <tr>\n                        <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n                            <table class=\"p-treenode-connector-table\">\n                                <tbody>\n                                    <tr>\n                                        <td [ngClass]=\"{'p-treenode-connector-line':!firstChild}\"></td>\n                                    </tr>\n                                    <tr>\n                                        <td [ngClass]=\"{'p-treenode-connector-line':!lastChild}\"></td>\n                                    </tr>\n                                </tbody>\n                            </table>\n                        </td>\n                        <td class=\"p-treenode\" [ngClass]=\"{'p-treenode-collapsed':!node.expanded}\">\n                            <div class=\"p-treenode-content\" tabindex=\"0\" [ngClass]=\"{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\"\n                                (touchend)=\"onNodeTouchEnd()\" (keydown)=\"onNodeKeydown($event)\">\n                                <span [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler pi pi-fw\" [ngClass]=\"{'pi-plus':!node.expanded,'pi-minus':node.expanded}\" *ngIf=\"!isLeaf()\" (click)=\"toggle($event)\"></span>\n                                <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n                                <span class=\"p-treenode-label\">\n                                    <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n                                    <span *ngIf=\"tree.getTemplateForNode(node)\">\n                                        <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                                    </span>\n                                </span>\n                            </div>\n                        </td>\n                        <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n                            <div class=\"p-treenode-children\">\n                                <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy\" [node]=\"childNode\"\n                                        [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n                            </div>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UITreeNode implements OnInit {\n\n    static ICON_CLASS: string = 'p-treenode-icon ';\n\n    @Input() rowNode: any;\n\n    @Input() node: TreeNode;\n\n    @Input() parentNode: TreeNode;\n\n    @Input() root: boolean;\n\n    @Input() index: number;\n\n    @Input() firstChild: boolean;\n\n    @Input() lastChild: boolean;\n\n    @Input() level: number;\n\n    @Input() indentation: number;\n\n    tree: Tree;\n\n    constructor(@Inject(forwardRef(() => Tree)) tree) {\n        this.tree = tree as Tree;\n    }\n\n    draghoverPrev: boolean;\n\n    draghoverNext: boolean;\n\n    draghoverNode: boolean\n\n    ngOnInit() {\n        this.node.parent = this.parentNode;\n\n        if (this.parentNode) {\n            this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n        }\n    }\n\n    getIcon() {\n        let icon: string;\n\n        if (this.node.icon)\n            icon = this.node.icon;\n        else\n            icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n        return UITreeNode.ICON_CLASS + ' ' + icon;\n    }\n\n    isLeaf() {\n        return this.tree.isNodeLeaf(this.node);\n    }\n\n    toggle(event: Event) {\n        if (this.node.expanded)\n            this.collapse(event);\n        else\n            this.expand(event);\n    }\n\n    expand(event: Event) {\n        this.node.expanded = true;\n        if (this.tree.virtualScroll) {\n            this.tree.updateSerializedValue();\n        }\n        this.tree.onNodeExpand.emit({originalEvent: event, node: this.node});\n    }\n\n    collapse(event: Event) {\n        this.node.expanded = false;\n        if (this.tree.virtualScroll) {\n            this.tree.updateSerializedValue();\n        }\n        this.tree.onNodeCollapse.emit({originalEvent: event, node: this.node});\n    }\n\n    onNodeClick(event: MouseEvent) {\n        this.tree.onNodeClick(event, this.node);\n    }\n\n    onNodeKeydown(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.tree.onNodeClick(event, this.node);\n        }\n    }\n\n    onNodeTouchEnd() {\n        this.tree.onNodeTouchEnd();\n    }\n\n    onNodeRightClick(event: MouseEvent) {\n        this.tree.onNodeRightClick(event, this.node);\n    }\n\n    isSelected() {\n        return this.tree.isSelected(this.node);\n    }\n\n    onDropPoint(event: Event, position: number) {\n        event.preventDefault();\n        let dragNode = this.tree.dragNode;\n        let dragNodeIndex = this.tree.dragNodeIndex;\n        let dragNodeScope = this.tree.dragNodeScope;\n        let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;\n\n        if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n            let dropParams = {...this.createDropPointEventMetadata(position)};\n\n            if (this.tree.validateDrop) {\n                this.tree.onNodeDrop.emit({\n                    originalEvent: event,\n                    dragNode: dragNode,\n                    dropNode: this.node,\n                    index: this.index,\n                    accept: () => {\n                        this.processPointDrop(dropParams);\n                    }\n                });\n            }\n            else {\n                this.processPointDrop(dropParams);\n                this.tree.onNodeDrop.emit({\n                    originalEvent: event,\n                    dragNode: dragNode,\n                    dropNode: this.node,\n                    index: this.index\n                });\n            }\n        }\n\n        this.draghoverPrev = false;\n        this.draghoverNext = false;\n    }\n\n    processPointDrop(event) {\n        let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n        event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n        let dropIndex = this.index;\n\n        if (event.position < 0) {\n            dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;\n            newNodeList.splice(dropIndex, 0, event.dragNode);\n        }\n        else {\n            dropIndex = newNodeList.length;\n            newNodeList.push(event.dragNode);\n        }\n\n        this.tree.dragDropService.stopDrag({\n            node: event.dragNode,\n            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n            index: event.dragNodeIndex\n        });\n    }\n\n    createDropPointEventMetadata(position) {\n        return {\n            dragNode: this.tree.dragNode,\n            dragNodeIndex:  this.tree.dragNodeIndex,\n            dragNodeSubNodes: this.tree.dragNodeSubNodes,\n            dropNode: this.node,\n            index: this.index,\n            position: position\n        };\n    }\n\n    onDropPointDragOver(event) {\n        event.dataTransfer.dropEffect = 'move';\n        event.preventDefault();\n    }\n\n    onDropPointDragEnter(event: Event, position: number) {\n        if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n            if (position < 0)\n                this.draghoverPrev = true;\n            else\n                this.draghoverNext = true;\n        }\n    }\n\n    onDropPointDragLeave(event: Event) {\n        this.draghoverPrev = false;\n        this.draghoverNext = false;\n    }\n\n    onDragStart(event) {\n        if (this.tree.draggableNodes && this.node.draggable !== false) {\n            event.dataTransfer.setData(\"text\", \"data\");\n\n            this.tree.dragDropService.startDrag({\n                tree: this,\n                node: this.node,\n                subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n                index: this.index,\n                scope: this.tree.draggableScope\n            });\n        }\n        else {\n            event.preventDefault();\n        }\n    }\n\n    onDragStop(event) {\n        this.tree.dragDropService.stopDrag({\n            node: this.node,\n            subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n            index: this.index\n        });\n    }\n\n    onDropNodeDragOver(event) {\n        event.dataTransfer.dropEffect = 'move';\n        if (this.tree.droppableNodes) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    onDropNode(event) {\n        if (this.tree.droppableNodes && this.node.droppable !== false) {\n            let dragNode = this.tree.dragNode;\n\n            if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n                let dropParams = {...this.createDropNodeEventMetadata()};\n\n                if (this.tree.validateDrop) {\n                    this.tree.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: this.node,\n                        index: this.index,\n                        accept: () => {\n                            this.processNodeDrop(dropParams);\n                        }\n                    });\n                }\n                else {\n                    this.processNodeDrop(dropParams);\n                    this.tree.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: this.node,\n                        index: this.index\n                    });\n                }\n            }\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.draghoverNode = false;\n    }\n\n    createDropNodeEventMetadata() {\n        return {\n            dragNode: this.tree.dragNode,\n            dragNodeIndex:  this.tree.dragNodeIndex,\n            dragNodeSubNodes: this.tree.dragNodeSubNodes,\n            dropNode: this.node\n        };\n    }\n\n    processNodeDrop(event) {\n        let dragNodeIndex = event.dragNodeIndex;\n        event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n        if (event.dropNode.children)\n            event.dropNode.children.push(event.dragNode);\n        else\n            event.dropNode.children = [event.dragNode];\n\n        this.tree.dragDropService.stopDrag({\n            node: event.dragNode,\n            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n            index: dragNodeIndex\n        });\n    }\n\n    onDropNodeDragEnter(event) {\n        if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n            this.draghoverNode = true;\n        }\n    }\n\n    onDropNodeDragLeave(event) {\n        if (this.tree.droppableNodes) {\n            let rect = event.currentTarget.getBoundingClientRect();\n            if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n               this.draghoverNode = false;\n            }\n        }\n    }\n\n    onKeyDown(event: KeyboardEvent) {\n        const nodeElement = (<HTMLDivElement> event.target).parentElement.parentElement;\n\n        if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n            return;\n        }\n\n        switch (event.which) {\n            //down arrow\n            case 40:\n                const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n                if (listElement && listElement.children.length > 0) {\n                    this.focusNode(listElement.children[0]);\n                }\n                else {\n                    const nextNodeElement = nodeElement.nextElementSibling;\n                    if (nextNodeElement) {\n                        this.focusNode(nextNodeElement);\n                    }\n                    else {\n                        let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n                        if (nextSiblingAncestor) {\n                            this.focusNode(nextSiblingAncestor);\n                        }\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //up arrow\n            case 38:\n                if (nodeElement.previousElementSibling) {\n                    this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n                }\n                else {\n                    let parentNodeElement = this.getParentNodeElement(nodeElement);\n                    if (parentNodeElement) {\n                        this.focusNode(parentNodeElement);\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //right arrow\n            case 39:\n                if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n                    this.expand(event);\n                }\n\n                event.preventDefault();\n            break;\n\n            //left arrow\n            case 37:\n                if (this.node.expanded) {\n                    this.collapse(event);\n                }\n                else {\n                    let parentNodeElement = this.getParentNodeElement(nodeElement);\n                    if (parentNodeElement) {\n                        this.focusNode(parentNodeElement);\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.tree.onNodeClick(event, this.node);\n                event.preventDefault();\n            break;\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    findNextSiblingOfAncestor(nodeElement) {\n        let parentNodeElement = this.getParentNodeElement(nodeElement);\n        if (parentNodeElement) {\n            if (parentNodeElement.nextElementSibling)\n                return parentNodeElement.nextElementSibling;\n            else\n                return this.findNextSiblingOfAncestor(parentNodeElement);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findLastVisibleDescendant(nodeElement) {\n        const listElement = <HTMLElement> Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));\n        const childrenListElement = listElement.children[1];\n        if (childrenListElement && childrenListElement.children.length > 0) {\n            const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n            return this.findLastVisibleDescendant(lastChildElement);\n        }\n        else {\n            return nodeElement;\n        }\n    }\n\n    getParentNodeElement(nodeElement) {\n        const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n        return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n    }\n\n    focusNode(element) {\n        if (this.tree.droppableNodes)\n            element.children[1].children[0].focus();\n        else\n            element.children[0].children[0].focus();\n    }\n}\n\n@Component({\n    selector: 'p-tree',\n    template: `\n        <div [ngClass]=\"{'p-tree p-component':true,'p-tree-selectable':selectionMode,\n                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}\"\n            [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"!horizontal\"\n            (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter()\" (dragleave)=\"onDragLeave($event)\">\n            <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n                <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n                <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n                    (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event.target.value)\">\n                    <span class=\"p-tree-filter-icon pi pi-search\"></span>\n            </div>\n            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                <div class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n                    <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n                        <p-treeNode *ngFor=\"let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy\" [node]=\"node\"\n                                    [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [level]=\"0\"></p-treeNode>\n                    </ul>\n                </div>\n            </ng-container>\n            <ng-template #virtualScrollList>\n                <cdk-virtual-scroll-viewport class=\"p-tree-wrapper\" [style.height]=\"scrollHeight\" [itemSize]=\"virtualNodeHeight\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\">\n                    <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n                        <p-treeNode *cdkVirtualFor=\"let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0\"  [level]=\"rowNode.level\"\n                                    [rowNode]=\"rowNode\" [node]=\"rowNode.node\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"virtualNodeHeight\" [indentation]=\"indentation\"></p-treeNode>\n                    </ul>\n                </cdk-virtual-scroll-viewport>\n            </ng-template>\n            <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n                <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                    {{emptyMessageLabel}}\n                </ng-container>\n                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n        </div>\n        <div [ngClass]=\"{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}\"  [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n                <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <table *ngIf=\"value&&value[0]\">\n                <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n            </table>\n            <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n                <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                    {{emptyMessageLabel}}\n                </ng-container>\n                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tree.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tree implements OnInit,AfterContentInit,OnChanges,OnDestroy,BlockableUI {\n\n    @Input() value: TreeNode[];\n\n    @Input() selectionMode: string;\n\n    @Input() selection: any;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() contextMenu: any;\n\n    @Input() layout: string = 'vertical';\n\n    @Input() draggableScope: any;\n\n    @Input() droppableScope: any;\n\n    @Input() draggableNodes: boolean;\n\n    @Input() droppableNodes: boolean;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() propagateSelectionUp: boolean = true;\n\n    @Input() propagateSelectionDown: boolean = true;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() ariaLabel: string;\n\n    @Input() togglerAriaLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() validateDrop: boolean;\n\n    @Input() filter: boolean;\n\n    @Input() filterBy: string = 'label';\n\n    @Input() filterMode: string = 'lenient';\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualNodeHeight: string;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() indentation: number = 1.5;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    @ViewChild('filter') filterViewChild: ElementRef;\n\n    serializedValue: any[];\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    public templateMap: any;\n\n    public nodeTouched: boolean;\n\n    public dragNodeTree: Tree;\n\n    public dragNode: TreeNode;\n\n    public dragNodeSubNodes: TreeNode[];\n\n    public dragNodeIndex: number;\n\n    public dragNodeScope: any;\n\n    public dragHover: boolean;\n\n    public dragStartSubscription: Subscription;\n\n    public dragStopSubscription: Subscription;\n\n    public filteredNodes: TreeNode[];\n\n    constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService, public config: PrimeNGConfig) {}\n\n    ngOnInit() {\n        if (this.droppableNodes) {\n            this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(\n              event => {\n                this.dragNodeTree = event.tree;\n                this.dragNode = event.node;\n                this.dragNodeSubNodes = event.subNodes;\n                this.dragNodeIndex = event.index;\n                this.dragNodeScope = event.scope;\n            });\n\n            this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(\n              event => {\n                this.dragNodeTree = null;\n                this.dragNode = null;\n                this.dragNodeSubNodes = null;\n                this.dragNodeIndex = null;\n                this.dragNodeScope = null;\n                this.dragHover = false;\n            });\n        }\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            this.updateSerializedValue();\n        }\n\n        if (simpleChange.scrollHeight && this.virtualScrollBody) {\n            this.virtualScrollBody.ngOnInit();\n        }\n    }\n\n    get horizontal(): boolean {\n        return this.layout == 'horizontal';\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    ngAfterContentInit() {\n        if (this.templates.length) {\n            this.templateMap = {};\n        }\n\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.templateMap[item.name] = item.template;\n                break;\n            }\n        });\n    }\n\n    updateSerializedValue() {\n        this.serializedValue = [];\n        this.serializeNodes(null, this.getRootNode(), 0, true);\n    }\n\n    serializeNodes(parent, nodes, level, visible) {\n        if (nodes && nodes.length) {\n            for(let node of nodes) {\n                node.parent = parent;\n                const rowNode = {\n                    node: node,\n                    parent: parent,\n                    level: level,\n                    visible: visible && (parent ? parent.expanded : true)\n                };\n                this.serializedValue.push(rowNode);\n\n                if (rowNode.visible && node.expanded) {\n                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n                }\n            }\n        }\n    }\n\n    onNodeClick(event, node: TreeNode) {\n        let eventTarget = (<Element> event.target);\n\n        if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n            return;\n        }\n        else if (this.selectionMode) {\n            if (node.selectable === false) {\n                return;\n            }\n\n            if (this.hasFilteredNodes()) {\n                node = this.getNodeWithKey(node.key, this.value);\n\n                if (!node) {\n                    return;\n                }\n            }\n\n            let index = this.findIndexInSelection(node);\n            let selected = (index >= 0);\n\n            if (this.isCheckboxSelectionMode()) {\n                if (selected) {\n                    if (this.propagateSelectionDown)\n                        this.propagateDown(node, false);\n                    else\n                        this.selection = this.selection.filter((val,i) => i!=index);\n\n                    if (this.propagateSelectionUp && node.parent) {\n                        this.propagateUp(node.parent, false);\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    if (this.propagateSelectionDown)\n                        this.propagateDown(node, true);\n                    else\n                        this.selection = [...this.selection||[],node];\n\n                    if (this.propagateSelectionUp && node.parent) {\n                        this.propagateUp(node.parent, true);\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n            else {\n                let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n                if (metaSelection) {\n                    let metaKey = (event.metaKey||event.ctrlKey);\n\n                    if (selected && metaKey) {\n                        if (this.isSingleSelectionMode()) {\n                            this.selectionChange.emit(null);\n                        }\n                        else {\n                            this.selection = this.selection.filter((val,i) => i!=index);\n                            this.selectionChange.emit(this.selection);\n                        }\n\n                        this.onNodeUnselect.emit({originalEvent: event, node: node});\n                    }\n                    else {\n                        if (this.isSingleSelectionMode()) {\n                            this.selectionChange.emit(node);\n                        }\n                        else if (this.isMultipleSelectionMode()) {\n                            this.selection = (!metaKey) ? [] : this.selection||[];\n                            this.selection = [...this.selection,node];\n                            this.selectionChange.emit(this.selection);\n                        }\n\n                        this.onNodeSelect.emit({originalEvent: event, node: node});\n                    }\n                }\n                else {\n                    if (this.isSingleSelectionMode()) {\n                        if (selected) {\n                            this.selection = null;\n                            this.onNodeUnselect.emit({originalEvent: event, node: node});\n                        }\n                        else {\n                            this.selection = node;\n                            this.onNodeSelect.emit({originalEvent: event, node: node});\n                        }\n                    }\n                    else {\n                        if (selected) {\n                            this.selection = this.selection.filter((val,i) => i!=index);\n                            this.onNodeUnselect.emit({originalEvent: event, node: node});\n                        }\n                        else {\n                            this.selection = [...this.selection||[],node];\n                            this.onNodeSelect.emit({originalEvent: event, node: node});\n                        }\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                }\n            }\n        }\n\n        this.nodeTouched = false;\n    }\n\n    onNodeTouchEnd() {\n        this.nodeTouched = true;\n    }\n\n    onNodeRightClick(event: MouseEvent, node: TreeNode) {\n        if (this.contextMenu) {\n            let eventTarget = (<Element> event.target);\n\n            if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n                return;\n            }\n            else {\n                let index = this.findIndexInSelection(node);\n                let selected = (index >= 0);\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode())\n                        this.selectionChange.emit(node);\n                    else\n                        this.selectionChange.emit([node]);\n                }\n\n                this.contextMenu.show(event);\n                this.onNodeContextMenuSelect.emit({originalEvent: event, node: node});\n            }\n        }\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.selectionMode && this.selection) {\n            if (this.isSingleSelectionMode()) {\n                let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n                index = areNodesEqual ? 0 : - 1;\n            }\n            else {\n                for(let i = 0; i  < this.selection.length; i++) {\n                    let selectedNode = this.selection[i];\n                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n                    if (areNodesEqual) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    syncNodeOption(node, parentNodes, option, value?: any) {\n        // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n        const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n        if (_node) {\n            _node[option] = value||node[option];\n        }\n    }\n\n    hasFilteredNodes() {\n        return this.filter && this.filteredNodes && this.filteredNodes.length;\n    }\n\n    getNodeWithKey(key: string, nodes: TreeNode[]) {\n        for (let node of nodes) {\n            if (node.key === key) {\n                return node;\n            }\n\n            if (node.children) {\n                let matchedNode = this.getNodeWithKey(key, node.children);\n                if (matchedNode) {\n                    return matchedNode;\n                }\n            }\n        }\n    }\n\n    propagateUp(node: TreeNode, select: boolean) {\n        if (node.children && node.children.length) {\n            let selectedCount: number = 0;\n            let childPartialSelected: boolean = false;\n            for(let child of node.children) {\n                if (this.isSelected(child)) {\n                    selectedCount++;\n                }\n                else if (child.partialSelected) {\n                    childPartialSelected = true;\n                }\n            }\n\n            if (select && selectedCount == node.children.length) {\n                this.selection = [...this.selection||[],node];\n                node.partialSelected = false;\n            }\n            else {\n                if (!select) {\n                    let index = this.findIndexInSelection(node);\n                    if (index >= 0) {\n                        this.selection = this.selection.filter((val,i) => i!=index);\n                    }\n                }\n\n                if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)\n                    node.partialSelected = true;\n                else\n                    node.partialSelected = false;\n            }\n\n            this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n        }\n\n        let parent = node.parent;\n        if (parent) {\n            this.propagateUp(parent, select);\n        }\n    }\n\n    propagateDown(node: TreeNode, select: boolean) {\n        let index = this.findIndexInSelection(node);\n\n        if (select && index == -1) {\n            this.selection = [...this.selection||[],node];\n        }\n        else if (!select && index > -1) {\n            this.selection = this.selection.filter((val,i) => i!=index);\n        }\n\n        node.partialSelected = false;\n\n        this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n        if (node.children && node.children.length) {\n            for(let child of node.children) {\n                this.propagateDown(child, select);\n            }\n        }\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'multiple';\n    }\n\n    isCheckboxSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'checkbox';\n    }\n\n    isNodeLeaf(node) {\n        return node.leaf == false ? false : !(node.children && node.children.length);\n    }\n\n    getRootNode() {\n        return this.filteredNodes ? this.filteredNodes : this.value;\n    }\n\n    getTemplateForNode(node: TreeNode): TemplateRef<any> {\n        if (this.templateMap)\n            return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n        else\n            return null;\n    }\n\n    onDragOver(event) {\n        if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n            event.dataTransfer.dropEffect = 'move';\n            event.preventDefault();\n        }\n    }\n\n    onDrop(event) {\n        if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n            event.preventDefault();\n            let dragNode = this.dragNode;\n\n            if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n                let dragNodeIndex = this.dragNodeIndex;\n                this.value = this.value||[];\n\n                if (this.validateDrop) {\n                    this.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: null,\n                        index: dragNodeIndex,\n                        accept: () => {\n                            this.processTreeDrop(dragNode, dragNodeIndex);\n                        }\n                    });\n                }\n                else {\n                    this.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: null,\n                        index: dragNodeIndex\n                    });\n\n                    this.processTreeDrop(dragNode, dragNodeIndex);\n                }\n            }\n        }\n    }\n\n    processTreeDrop(dragNode, dragNodeIndex) {\n        this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n        this.value.push(dragNode);\n        this.dragDropService.stopDrag({\n            node: dragNode\n        });\n    }\n\n    onDragEnter() {\n        if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n            this.dragHover = true;\n        }\n    }\n\n    onDragLeave(event) {\n        if (this.droppableNodes) {\n            let rect = event.currentTarget.getBoundingClientRect();\n            if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n               this.dragHover = false;\n            }\n        }\n    }\n\n    allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n        if (!dragNode) {\n            //prevent random html elements to be dragged\n            return false;\n        }\n        else if (this.isValidDragScope(dragNodeScope)) {\n            let allow: boolean = true;\n            if (dropNode) {\n                if (dragNode === dropNode) {\n                    allow = false;\n                }\n                else {\n                    let parent = dropNode.parent;\n                    while(parent != null) {\n                        if (parent === dragNode) {\n                            allow = false;\n                            break;\n                        }\n                        parent = parent.parent;\n                    }\n                }\n            }\n\n            return allow;\n        }\n        else {\n            return false;\n        }\n    }\n\n    isValidDragScope(dragScope: any): boolean {\n        let dropScope = this.droppableScope;\n\n        if (dropScope) {\n            if (typeof dropScope === 'string') {\n                if (typeof dragScope === 'string')\n                    return dropScope === dragScope;\n                else if (dragScope instanceof Array)\n                    return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n            }\n            else if (dropScope instanceof Array) {\n                if (typeof dragScope === 'string') {\n                    return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n                }\n                else if (dragScope instanceof Array) {\n                    for(let s of dropScope) {\n                        for(let ds of dragScope) {\n                            if (s === ds) {\n                                return true;\n                            }\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n        else {\n            return true;\n        }\n    }\n\n    _filter(value) {\n        let filterValue = value;\n        if (filterValue === '') {\n            this.filteredNodes = null;\n        }\n        else {\n            this.filteredNodes = [];\n            const searchFields: string[] = this.filterBy.split(',');\n            const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n            const isStrictMode = this.filterMode === 'strict';\n            for(let node of this.value) {\n                let copyNode = {...node};\n                let paramsWithoutNode = {searchFields, filterText, isStrictMode};\n                if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n                    (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n                    this.filteredNodes.push(copyNode);\n                }\n            }\n        }\n\n        this.updateSerializedValue();\n        this.onFilter.emit({\n            filter: filterValue,\n            filteredValue: this.filteredNodes\n        });\n    }\n\n    resetFilter() {\n        this.filteredNodes = null;\n\n        if (this.filterViewChild && this.filterViewChild.nativeElement) {\n            this.filterViewChild.nativeElement.value = '';\n        }\n    }\n\n    findFilteredNodes(node, paramsWithoutNode) {\n        if (node) {\n            let matched = false;\n            if (node.children) {\n                let childNodes = [...node.children];\n                node.children = [];\n                for (let childNode of childNodes) {\n                    let copyChildNode = {...childNode};\n                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n                        matched = true;\n                        node.children.push(copyChildNode);\n                    }\n                }\n            }\n\n            if (matched) {\n                node.expanded = true;\n                return true;\n            }\n        }\n    }\n\n    isFilterMatched(node, {searchFields, filterText, isStrictMode}) {\n        let matched = false;\n        for(let field of searchFields) {\n            let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n            if (fieldValue.indexOf(filterText) > -1) {\n                matched = true;\n            }\n        }\n\n        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n            matched = this.findFilteredNodes(node, {searchFields, filterText, isStrictMode}) || matched;\n        }\n\n        return matched;\n    }\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    ngOnDestroy() {\n        if (this.dragStartSubscription) {\n            this.dragStartSubscription.unsubscribe();\n        }\n\n        if (this.dragStopSubscription) {\n            this.dragStopSubscription.unsubscribe();\n        }\n    }\n}\n@NgModule({\n    imports: [CommonModule,ScrollingModule,RippleModule],\n    exports: [Tree,SharedModule,ScrollingModule],\n    declarations: [Tree,UITreeNode]\n})\nexport class TreeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,604 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i2 from 'primeng/tree';
+import { TreeModule } from 'primeng/tree';
+import { ZIndexUtils } from 'primeng/utils';
+
+const TREESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TreeSelect),
+    multi: true
+};
+class TreeSelect {
+    constructor(config, cd, el, overlayService) {
+        this.config = config;
+        this.cd = cd;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.type = "button";
+        this.scrollHeight = "400px";
+        this.metaKeySelection = true;
+        this.display = "comma";
+        this.selectionMode = "single";
+        this.propagateSelectionDown = true;
+        this.propagateSelectionUp = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.expandedNodes = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    ;
+    set options(options) {
+        this._options = options;
+        this.updateTreeState();
+    }
+    ngOnInit() {
+        this.updateTreeState();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.valueTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onSelectionChange(event) {
+        this.value = event;
+        this.onModelChange(this.value);
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (!this.disabled && (!this.overlayEl || !this.overlayEl.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else
+                this.show();
+            this.focusInput.nativeElement.focus();
+        }
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                else if (this.overlayVisible && this.overlayEl) {
+                    let focusableElements = DomHandler.getFocusableElements(this.overlayEl);
+                    if (focusableElements && focusableElements.length > 0) {
+                        focusableElements[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //enter and escape
+            case 13:
+            case 27:
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+            //tab
+            case 9:
+                this.hide();
+                break;
+            default:
+                break;
+        }
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    updateTreeState() {
+        if (this.value) {
+            let selectedNodes = this.selectionMode === "single" ? [this.value] : [...this.value];
+            this.resetExpandedNodes();
+            if (selectedNodes && this.options) {
+                this.updateTreeBranchState(null, null, selectedNodes);
+            }
+        }
+    }
+    updateTreeBranchState(node, path, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                this.expandPath(path);
+                selectedNodes.splice(selectedNodes.indexOf(node), 1);
+            }
+            if (selectedNodes.length > 0 && node.children) {
+                for (let childNode of node.children) {
+                    path.push(node);
+                    this.updateTreeBranchState(childNode, path, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.updateTreeBranchState(childNode, [], selectedNodes);
+            }
+        }
+    }
+    expandPath(expandedNodes) {
+        for (let node of expandedNodes) {
+            node.expanded = true;
+        }
+        this.expandedNodes = [...expandedNodes];
+    }
+    nodeExpand(event) {
+        this.onNodeExpand.emit(event);
+        this.expandedNodes.push(event.node);
+    }
+    nodeCollapse(event) {
+        this.onNodeCollapse.emit(event);
+        this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);
+    }
+    resetExpandedNodes() {
+        for (let node of this.expandedNodes) {
+            node.expanded = false;
+        }
+        this.expandedNodes = [];
+    }
+    findSelectedNodes(node, keys, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                selectedNodes.push(node);
+                delete keys[node.key];
+            }
+            if (Object.keys(keys).length && node.children) {
+                for (let childNode of node.children) {
+                    this.findSelectedNodes(childNode, keys, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.findSelectedNodes(childNode, keys, selectedNodes);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.value) {
+            if (this.selectionMode === "single") {
+                let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.value.length; i++) {
+                    let selectedNode = this.value[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    onSelect(node) {
+        this.onNodeSelect.emit(node);
+        if (this.selectionMode === 'single') {
+            this.hide();
+        }
+    }
+    onUnselect(node) {
+        this.onNodeUnselect.emit(node);
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.onHide.emit();
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateTreeState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlayEl) {
+            ZIndexUtils.clear(this.overlayEl);
+            this.overlayEl = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-treeselect p-component p-inputwrapper': true,
+            'p-treeselect-chip': this.display === 'chip',
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-treeselect-label': true,
+            'p-placeholder': this.label === this.placeholder,
+            'p-treeselect-label-empty': !this.placeholder && this.emptyValue
+        };
+    }
+    get emptyMessageText() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyValue() {
+        return !this.value || Object.keys(this.value).length === 0;
+    }
+    get emptyOptions() {
+        return !this.options || this.options.length === 0;
+    }
+    get label() {
+        let value = this.value || [];
+        return value.length ? value.map(node => node.label).join(', ') : (this.selectionMode === "single" && this.value) ? value.label : this.placeholder;
+    }
+}
+TreeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TreeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeSelect, selector: "p-treeSelect", inputs: { type: "type", inputId: "inputId", scrollHeight: "scrollHeight", disabled: "disabled", metaKeySelection: "metaKeySelection", display: "display", selectionMode: "selectionMode", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", placeholder: "placeholder", panelClass: "panelClass", emptyMessage: "emptyMessage", appendTo: "appendTo", propagateSelectionDown: "propagateSelectionDown", propagateSelectionUp: "propagateSelectionUp", options: "options", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onShow: "onShow", onHide: "onHide", onNodeUnselect: "onNodeUnselect", onNodeSelect: "onNodeSelect" }, host: { properties: { "class.p-inputwrapper-filled": "!emptyValue", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [TREESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }, { propertyName: "focusInput", first: true, predicate: ["focusInput"], descendants: true }], ngImport: i0, template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, isInline: true, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"], components: [{ type: i2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "scrollHeight", "virtualScroll", "virtualNodeHeight", "minBufferPx", "maxBufferPx", "indentation", "trackBy"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onFilter"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeSelect', template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': '!emptyValue',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TREESELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { type: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], panelClass: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], focusInput: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }] } });
+class TreeSelectModule {
+}
+TreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, declarations: [TreeSelect], imports: [CommonModule, RippleModule, SharedModule, TreeModule], exports: [TreeSelect, SharedModule, TreeModule] });
+TreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, imports: [[CommonModule, RippleModule, SharedModule, TreeModule], SharedModule, TreeModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule, TreeModule],
+                    exports: [TreeSelect, SharedModule, TreeModule],
+                    declarations: [TreeSelect]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TREESELECT_VALUE_ACCESSOR, TreeSelect, TreeSelectModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-treeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-treeselect.mjs","sources":["../../src/app/components/treeselect/treeselect.ts","../../src/app/components/treeselect/primeng-treeselect.ts"],"sourcesContent":["import {NgModule,Component,EventEmitter,Output,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList, forwardRef, ChangeDetectorRef, ViewChild, ElementRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {OverlayService, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeNode} from 'primeng/api';\nimport {animate, style, transition, trigger, AnimationEvent} from '@angular/animations';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ConnectedOverlayScrollHandler, DomHandler} from 'primeng/dom';\nimport {TreeModule} from 'primeng/tree';\nimport {ZIndexUtils} from 'primeng/utils'\n\n\nexport const TREESELECT_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TreeSelect),\n    multi: true\n};\n\n@Component({\n    selector: 'p-treeSelect',\n    template: `\n    <div #container [ngClass]=\"containerClass()\" (click)=\"onClick($event)\">\n        <div class=\"p-hidden-accessible\">\n            <input #focusInput type=\"text\" role=\"listbox\" [attr.id]=\"inputId\" readonly [disabled]=\"disabled\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" [attr.tabindex]=\"tabindex\"\n            aria-haspopup=\"true\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\"/>\n        </div>\n        <div class=\"p-treeselect-label-container\">\n            <div [ngClass]=\"labelClass()\">\n                <ng-container *ngIf=\"valueTemplate;else defaultValueTemplate\">\n                        <ng-container *ngTemplateOutlet=\"valueTemplate; context: {$implicit: value, placeholder: placeholder}\"></ng-container>\n                </ng-container>\n                <ng-template #defaultValueTemplate>\n                    <ng-container *ngIf=\"display === 'comma';else chipsValueTemplate\">\n                        {{label || 'empty'}}\n                    </ng-container>\n                    <ng-template #chipsValueTemplate>\n                        <div *ngFor=\"let node of value\" class=\"p-treeselect-token\">\n                            <span class=\"p-treeselect-token-label\">{{node.label}}</span>\n                        </div>\n                        <ng-container *ngIf=\"emptyValue\">{{placeholder || 'empty'}}</ng-container>\n                    </ng-template>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"p-treeselect-trigger\">\n            <span class=\"p-treeselect-trigger-icon pi pi-chevron-down\"></span>\n        </div>\n\n        <div #overlayRef class=\"p-treeselect-panel p-component\" *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: value, options: options}\"></ng-container>\n            <div class=\"p-treeselect-items-wrapper\" [ngStyle]=\"{'max-height': scrollHeight}\">\n                <p-tree [value]=\"options\" [propagateSelectionDown]=\"propagateSelectionDown\" [propagateSelectionUp]=\"propagateSelectionUp\" [selectionMode]=\"selectionMode\" (selectionChange)=\"onSelectionChange($event)\" [selection]=\"value\"\n                    [metaKeySelection]=\"metaKeySelection\" (onNodeExpand)=\"nodeExpand($event)\" (onNodeCollapse)=\"nodeCollapse($event)\"\n                    (onNodeSelect)=\"onSelect($event)\" (onNodeUnselect)=\"onUnselect($event)\"></p-tree>\n                <div *ngIf=\"emptyOptions\" class=\"p-treeselect-empty-message\">\n                    <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                        {{emptyMessageText}}\n                    </ng-container>\n                    <ng-container *ngTemplateOutlet=\"emptyTemplate;\"></ng-container>\n                </div>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate; context: {$implicit: value, options: options}\"></ng-container>\n        </div>\n    </div>\n    `,\n    styleUrls: ['./treeselect.css'],\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': '!emptyValue',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TREESELECT_VALUE_ACCESSOR],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TreeSelect implements AfterContentInit {\n\n    @Input() type: string = \"button\";\n\n    @Input() inputId: string;\n\n    @Input() scrollHeight: string = \"400px\";\n\n    @Input() disabled: boolean;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() display: string = \"comma\";\n\n    @Input() selectionMode: string = \"single\";\n\n    @Input() tabindex: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() placeholder: string;\n\n    @Input() panelClass: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() appendTo: any;\n\n    @Input() propagateSelectionDown: boolean = true;\n\n    @Input() propagateSelectionUp: boolean = true;\n\n    @Input() get options(): any[] {\n        return this._options;\n    };\n    set options(options) {\n        this._options = options;\n        this.updateTreeState();\n    }\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('container') containerEl: ElementRef;\n\n    @ViewChild('focusInput') focusInput: ElementRef;\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    valueTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    focused: boolean;\n\n    overlayVisible: boolean;\n\n    selfChange: boolean;\n\n    value;\n\n    expandedNodes: any[] = [];\n\n    _options: any[];\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    overlayEl: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public config: PrimeNGConfig, public cd: ChangeDetectorRef, public el: ElementRef, public overlayService: OverlayService) { }\n\n    ngOnInit() {\n        this.updateTreeState();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'value':\n                    this.valueTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.valueTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlayEl = event.element;\n                this.onOverlayEnter();\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onOverlayLeave();\n            break;\n        }\n    }\n\n    onSelectionChange(event) {\n        this.value = event;\n        this.onModelChange(this.value);\n        this.cd.markForCheck();\n    }\n\n    onClick(event) {\n        if (!this.disabled && (!this.overlayEl || !this.overlayEl.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {\n            if (this.overlayVisible){\n                this.hide();\n            }\n            else\n                this.show();\n\n            this.focusInput.nativeElement.focus();\n        }\n    }\n\n    onKeyDown(event) {\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                    event.preventDefault();\n                }\n                else if (this.overlayVisible && this.overlayEl) {\n                    let focusableElements = DomHandler.getFocusableElements(this.overlayEl);\n\n                    if (focusableElements && focusableElements.length > 0) {\n                        focusableElements[0].focus();\n                    }\n\n                    event.preventDefault();\n                }\n            break;\n\n            //space\n            case 32:\n                if (!this.overlayVisible) {\n                    this.show();\n                    event.preventDefault();\n                }\n            break;\n\n            //enter and escape\n            case 13:\n            case 27:\n                if (this.overlayVisible) {\n                    this.hide();\n                    event.preventDefault();\n                }\n            break;\n\n            //tab\n            case 9:\n                this.hide();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    updateTreeState() {\n        if (this.value) {\n            let selectedNodes = this.selectionMode === \"single\" ? [this.value] : [...this.value];\n            this.resetExpandedNodes();\n            if (selectedNodes && this.options) {\n                this.updateTreeBranchState(null, null, selectedNodes);\n            }\n        }\n    }\n\n    updateTreeBranchState(node, path, selectedNodes) {\n        if (node) {\n            if (this.isSelected(node)) {\n                this.expandPath(path);\n                selectedNodes.splice(selectedNodes.indexOf(node), 1);\n            }\n\n            if (selectedNodes.length > 0 && node.children) {\n                for (let childNode of node.children) {\n                    path.push(node);\n                    this.updateTreeBranchState(childNode, path, selectedNodes);\n                }\n            }\n        }\n        else {\n            for (let childNode of this.options) {\n                this.updateTreeBranchState(childNode, [], selectedNodes);\n            }\n        }\n    }\n\n    expandPath(expandedNodes) {\n        for (let node of expandedNodes) {\n            node.expanded = true;\n        }\n\n        this.expandedNodes = [...expandedNodes];\n    }\n\n    nodeExpand(event) {\n        this.onNodeExpand.emit(event);\n        this.expandedNodes.push(event.node);\n    }\n\n    nodeCollapse(event) {\n        this.onNodeCollapse.emit(event);\n        this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);\n    }\n\n    resetExpandedNodes() {\n        for (let node of this.expandedNodes) {\n            node.expanded = false;\n        }\n\n        this.expandedNodes = [];\n    }\n\n    findSelectedNodes(node, keys, selectedNodes) {\n        if (node) {\n            if (this.isSelected(node)) {\n                selectedNodes.push(node);\n                delete keys[node.key];\n            }\n\n            if (Object.keys(keys).length && node.children) {\n                for (let childNode of node.children) {\n                    this.findSelectedNodes(childNode, keys, selectedNodes);\n                }\n            }\n        }\n        else {\n            for (let childNode of this.options) {\n                this.findSelectedNodes(childNode, keys, selectedNodes);\n            }\n        }\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.value) {\n            if (this.selectionMode === \"single\") {\n                let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;\n                index = areNodesEqual ? 0 : - 1;\n            }\n            else {\n                for(let i = 0; i  < this.value.length; i++) {\n                    let selectedNode = this.value[i];\n                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n                    if (areNodesEqual) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    onSelect(node) {\n        this.onNodeSelect.emit(node);\n\n        if (this.selectionMode === 'single') {\n            this.hide();\n        }\n    }\n\n    onUnselect(node) {\n        this.onNodeUnselect.emit(node);\n    }\n\n    onOverlayEnter() {\n        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);\n        this.appendContainer();\n        this.alignOverlay();\n        this.bindOutsideClickListener();\n        this.bindScrollListener();\n        this.bindResizeListener();\n        this.onShow.emit();\n    }\n\n    onOverlayLeave() {\n        this.unbindOutsideClickListener();\n        this.unbindScrollListener();\n        this.unbindResizeListener();\n        ZIndexUtils.clear(this.overlayEl);\n        this.overlayEl = null;\n        this.onHide.emit();\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateTreeState();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlayEl);\n        }\n    }\n\n    restoreAppend() {\n        if (this.overlayEl && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlayEl);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);\n            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';\n        } else {\n            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);\n        }\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlayEl) {\n            ZIndexUtils.clear(this.overlayEl);\n            this.overlayEl = null;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-treeselect p-component p-inputwrapper': true,\n            'p-treeselect-chip': this.display === 'chip',\n            'p-disabled': this.disabled,\n            'p-focus': this.focused\n        }\n    }\n\n    labelClass() {\n        return {\n            'p-treeselect-label': true,\n            'p-placeholder': this.label === this.placeholder,\n            'p-treeselect-label-empty': !this.placeholder && this.emptyValue\n        }\n    }\n\n    get emptyMessageText() {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyValue() {\n        return !this.value || Object.keys(this.value).length === 0;\n    }\n\n    get emptyOptions() {\n        return !this.options || this.options.length === 0;\n    }\n\n    get label() {\n        let value = this.value||[];\n        return value.length ? value.map(node => node.label).join(', ') : (this.selectionMode === \"single\" && this.value) ? value.label : this.placeholder;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule,SharedModule,TreeModule],\n    exports: [TreeSelect,SharedModule,TreeModule],\n    declarations: [TreeSelect]\n})\nexport class TreeSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAWa,yBAAyB,GAAQ;IAC1C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;IACzC,KAAK,EAAE,IAAI;EACb;MAuEW,UAAU;IA8FnB,YAAmB,MAAqB,EAAS,EAAqB,EAAS,EAAc,EAAS,cAA8B;QAAjH,WAAM,GAAN,MAAM,CAAe;QAAS,OAAE,GAAF,EAAE,CAAmB;QAAS,OAAE,GAAF,EAAE,CAAY;QAAS,mBAAc,GAAd,cAAc,CAAgB;QA5F3H,SAAI,GAAW,QAAQ,CAAC;QAIxB,iBAAY,GAAW,OAAO,CAAC;QAI/B,qBAAgB,GAAY,IAAI,CAAC;QAEjC,YAAO,GAAW,OAAO,CAAC;QAE1B,kBAAa,GAAW,QAAQ,CAAC;QAcjC,2BAAsB,GAAY,IAAI,CAAC;QAEvC,yBAAoB,GAAY,IAAI,CAAC;QAUrC,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;QAQ5C,iBAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;QAErD,mBAAc,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEvD,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,mBAAc,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEvD,iBAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;QAkB/D,kBAAa,GAAU,EAAE,CAAC;QAY1B,kBAAa,GAAa,SAAQ,CAAC;QAEnC,mBAAc,GAAa,SAAQ,CAAC;KAEqG;IA9DzI,IAAa,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;;IACD,IAAI,OAAO,CAAC,OAAO;QACf,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IA0DD,QAAQ;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN;oBACI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,uBAAuB,CAAC,KAAqB;QACzC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,SAAS;gBACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM;SACT;KACJ;IAED,sBAAsB,CAAC,KAAqB;QACxC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,MAAM;gBACP,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM;SACT;KACJ;IAED,iBAAiB,CAAC,KAAK;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,OAAO,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE;YAC3I,IAAI,IAAI,CAAC,cAAc,EAAC;gBACpB,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;;gBAEG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEhB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACzC;KACJ;IAED,SAAS,CAAC,KAAK;QACX,QAAO,KAAK,CAAC,KAAK;;YAEd,KAAK,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE;oBACtC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;qBACI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE;oBAC5C,IAAI,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAExE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnD,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBAChC;oBAED,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;gBACL,MAAM;;YAGN,KAAK,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;gBACL,MAAM;;YAGN,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACH,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;gBACL,MAAM;;YAGN,KAAK,CAAC;gBACF,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM;YAEN;gBACA,MAAM;SACT;KACJ;IAED,IAAI;QACA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;IAED,IAAI;QACA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,cAAc,CAAC,KAAK;QAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;SAChC,CAAC,CAAC;KACN;IAED,eAAe;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YACrF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;aACzD;SACJ;KACJ;IAED,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa;QAC3C,IAAI,IAAI,EAAE;YACN,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACxD;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC3C,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChB,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;iBAC9D;aACJ;SACJ;aACI;YACD,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;aAC5D;SACJ;KACJ;IAED,UAAU,CAAC,aAAa;QACpB,KAAK,IAAI,IAAI,IAAI,aAAa,EAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;KAC3C;IAED,UAAU,CAAC,KAAK;QACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvC;IAED,YAAY,CAAC,KAAK;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACxE;IAED,kBAAkB;QACd,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzB;QAED,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa;QACvC,IAAI,IAAI,EAAE;YACN,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACzB;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC3C,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;iBAC1D;aACJ;SACJ;aACI;YACD,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;aAC1D;SACJ;KACJ;IAED,UAAU,CAAC,IAAc;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;IAED,oBAAoB,CAAC,IAAc;QAC/B,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;gBACjC,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;gBAC1F,KAAK,GAAG,aAAa,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;aACnC;iBACI;gBACD,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,aAAa,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC;oBAChG,IAAI,aAAa,EAAE;wBACf,KAAK,GAAG,CAAC,CAAC;wBACV,MAAM;qBACT;iBACJ;aACJ;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;IAED,QAAQ,CAAC,IAAI;QACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;KACJ;IAED,UAAU,CAAC,IAAI;QACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;IAED,cAAc;QACV,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,cAAc;QACV,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,OAAO;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAED,MAAM;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;gBAE1C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1E;KACJ;IAED,aAAa;QACT,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;gBAE1C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1E;KACJ;IAED,YAAY;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC5E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;SACnG;aAAM;YACH,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC/E;KACJ;IAED,wBAAwB;QACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,GAAG,CAAC,KAAK;gBAC9B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC3I,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACjE;KACJ;IAED,0BAA0B;QACtB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACpC;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBACnF,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAC7C;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG;gBAClB,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1D;KACJ;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;KACJ;IAED,WAAW;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;KACJ;IAED,cAAc;QACV,OAAO;YACH,yCAAyC,EAAE,IAAI;YAC/C,mBAAmB,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM;YAC5C,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO;SAC1B,CAAA;KACJ;IAED,UAAU;QACN,OAAO;YACH,oBAAoB,EAAE,IAAI;YAC1B,eAAe,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW;YAChD,0BAA0B,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU;SACnE,CAAA;KACJ;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;KACzF;IAED,IAAI,UAAU;QACV,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAC9D;IAED,IAAI,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;KACrD;IAED,IAAI,KAAK;QACL,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAE,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;KACrJ;;uGAlgBQ,UAAU;2FAAV,UAAU,y7BAHR,CAAC,yBAAyB,CAAC,oDA+CrB,aAAa,kOA/GpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6CT,o7DAEW;QACR,OAAO,CAAC,kBAAkB,EAAE;YACxB,UAAU,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC;gBAC7C,OAAO,CAAC,0BAA0B,CAAC;aACpC,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE;gBACnB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3D,CAAC;SACP,CAAC;KACL;2FAUQ,UAAU;kBArEtB,SAAS;+BACI,cAAc,YACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6CT,cAEW;wBACR,OAAO,CAAC,kBAAkB,EAAE;4BACxB,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC;gCAC7C,OAAO,CAAC,0BAA0B,CAAC;6BACpC,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACnB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC3D,CAAC;yBACP,CAAC;qBACL,QACK;wBACF,OAAO,EAAE,0BAA0B;wBACnC,+BAA+B,EAAE,aAAa;wBAC9C,8BAA8B,EAAE,2BAA2B;qBAC9D,mBACgB,uBAAuB,CAAC,MAAM,aACpC,CAAC,yBAAyB,CAAC,iBACvB,iBAAiB,CAAC,IAAI;0LAI5B,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,gBAAgB;sBAAxB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,sBAAsB;sBAA9B,KAAK;gBAEG,oBAAoB;sBAA5B,KAAK;gBAEO,OAAO;sBAAnB,KAAK;gBAQG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;gBAEN,WAAW;sBAAlC,SAAS;uBAAC,WAAW;gBAEG,UAAU;sBAAlC,SAAS;uBAAC,YAAY;gBAEb,YAAY;sBAArB,MAAM;gBAEG,cAAc;sBAAvB,MAAM;gBAEG,MAAM;sBAAf,MAAM;gBAEG,MAAM;sBAAf,MAAM;gBAEG,cAAc;sBAAvB,MAAM;gBAEG,YAAY;sBAArB,MAAM;;MA8cE,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBA1gBhB,UAAU,aAsgBT,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,UAAU,aAtgBlD,UAAU,EAugBE,YAAY,EAAC,UAAU;8GAGnC,gBAAgB,YAJhB,CAAC,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC,EACvC,YAAY,EAAC,UAAU;2FAGnC,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC;oBAC5D,OAAO,EAAE,CAAC,UAAU,EAAC,YAAY,EAAC,UAAU,CAAC;oBAC7C,YAAY,EAAE,CAAC,UAAU,CAAC;iBAC7B;;;AC/lBD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2827 @@
+import * as i0 from '@angular/core';
+import { Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, Directive, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Subject } from 'rxjs';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+class TreeTableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.uiUpdateSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.uiUpdateSource$ = this.uiUpdateSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onContextMenu(node) {
+        this.contextMenuSource.next(node);
+    }
+    onUIUpdate(value) {
+        this.uiUpdateSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+}
+TreeTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, decorators: [{
+            type: Injectable
+        }] });
+class TreeTable {
+    constructor(el, zone, tableService, filterService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.filterService = filterService;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.first = 0;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.compareSelectionBy = 'deepEquals';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.virtualScrollDelay = 150;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.rowTrackBy = (index, item) => item;
+        this.filters = {};
+        this.filterDelay = 300;
+        this.filterMode = 'lenient';
+        this.onFilter = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._sortOrder = 1;
+        this.selectionKeys = {};
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && this.sortField)
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && this.multiSortMeta)
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.updateSerializedValue();
+            this.tableService.onUIUpdate(this.value);
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple') {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        if (this.paginator)
+            this.serializePageNodes();
+        else
+            this.serializeNodes(null, this.filteredNodes || this.value, 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    serializePageNodes() {
+        let data = this.filteredNodes || this.value;
+        this.serializedValue = [];
+        if (data && data.length) {
+            const first = this.lazy ? 0 : this.first;
+            for (let i = first; i < (first + this.rows); i++) {
+                let node = data[i];
+                if (node) {
+                    this.serializedValue.push({
+                        node: node,
+                        parent: null,
+                        level: 0,
+                        visible: true
+                    });
+                    this.serializeNodes(node, node.children, 1, true);
+                }
+            }
+        }
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let node of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy)
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        else
+            this.serializePageNodes();
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.tableService.onUIUpdate(this.value);
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            this.sortSingle();
+            if (this.resetPageOnSort && this.scrollable) {
+                this.resetScrollTop();
+            }
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+    }
+    sortSingle() {
+        if (this.sortField && this.sortOrder) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: this.sortField,
+                order: this.sortOrder
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+            this.updateSerializedValue();
+        }
+    }
+    sortNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: nodes,
+                mode: this.sortMode,
+                field: this.sortField,
+                order: this.sortOrder
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+        }
+        for (let node of nodes) {
+            this.sortNodes(node.children);
+        }
+    }
+    sortMultiple() {
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortMultipleNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.updateSerializedValue();
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    sortMultipleNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: this.value,
+                mode: this.sortMode,
+                multiSortMeta: this.multiSortMeta
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                return this.multisortField(node1, node2, this.multiSortMeta, 0);
+            });
+        }
+        for (let node of nodes) {
+            this.sortMultipleNodes(node.children);
+        }
+    }
+    multisortField(node1, node2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true }));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(node1, node2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollToVirtualIndex(index);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollToVirtualIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollTo(options);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollTo(options);
+        }
+    }
+    isEmpty() {
+        let data = this.filteredNodes || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd(event, column) {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = column.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = column.style.minWidth || 15;
+        if (columnWidth + delta > parseInt(minWidth)) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = column.nextElementSibling;
+                while (!nextColumn.offsetParent) {
+                    nextColumn = nextColumn.nextElementSibling;
+                }
+                if (nextColumn) {
+                    let nextColumnWidth = nextColumn.offsetWidth - delta;
+                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;
+                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {
+                        if (this.scrollable) {
+                            let scrollableView = this.findParentScrollableView(column);
+                            let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-treetable-virtual-scrollable-body table');
+                            let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                            let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                            let resizeColumnIndex = DomHandler.index(column);
+                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                        }
+                        else {
+                            column.style.width = newColumnWidth + 'px';
+                            if (nextColumn) {
+                                nextColumn.style.width = nextColumnWidth + 'px';
+                            }
+                        }
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                if (this.scrollable) {
+                    let scrollableView = this.findParentScrollableView(column);
+                    let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport');
+                    let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');
+                    let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');
+                    let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport table');
+                    let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                    let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';
+                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';
+                    if (scrollableFooterTable) {
+                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';
+                    }
+                    let resizeColumnIndex = DomHandler.index(column);
+                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;
+                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;
+                    const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;
+                    let setWidth = (container, table, width, isContainerInViewport) => {
+                        if (container && table) {
+                            container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';
+                            table.style.width = width + 'px';
+                        }
+                    };
+                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);
+                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);
+                }
+                else {
+                    this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';
+                    column.style.width = newColumnWidth + 'px';
+                    let containerWidth = this.tableViewChild.nativeElement.style.width;
+                    this.containerViewChild.nativeElement.style.width = containerWidth + 'px';
+                }
+            }
+            this.onColResize.emit({
+                element: column,
+                delta: delta
+            });
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    findParentScrollableView(column) {
+        if (column) {
+            let parent = column.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {
+                parent = parent.parentElement;
+            }
+            return parent;
+        }
+        else {
+            return null;
+        }
+    }
+    resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {
+        if (table) {
+            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;
+            if (colGroup) {
+                let col = colGroup.children[resizeColumnIndex];
+                let nextCol = col.nextElementSibling;
+                col.style.width = newColumnWidth + 'px';
+                if (nextCol && nextColumnWidth) {
+                    nextCol.style.width = nextColumnWidth + 'px';
+                }
+            }
+            else {
+                throw "Scrollable tables require a colgroup to support resizable columns";
+            }
+        }
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    handleRowClick(event) {
+        let targetNode = event.originalEvent.target.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            let rowNode = event.rowNode;
+            let selected = this.isSelected(rowNode.node);
+            let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;
+            if (metaSelection) {
+                let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                if (selected && metaKey) {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(null);
+                    }
+                    else {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(rowNode.node);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        if (metaKey) {
+                            this._selection = this.selection || [];
+                        }
+                        else {
+                            this._selection = [];
+                            this.selectionKeys = {};
+                        }
+                        this._selection = [...this.selection, rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                }
+            }
+            else {
+                if (this.selectionMode === 'single') {
+                    if (selected) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                    }
+                    else {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                else if (this.selectionMode === 'multiple') {
+                    if (selected) {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    else {
+                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const node = event.rowNode.node;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = node;
+                this.contextMenuSelectionChange.emit(node);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(node);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(node);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = node;
+                        this.selectionChange.emit(node);
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this.selection = [node];
+                        this.selectionChange.emit(this.selection);
+                    }
+                    if (dataKeyValue) {
+                        this.selectionKeys[dataKeyValue] = 1;
+                    }
+                }
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+            }
+        }
+    }
+    toggleNodeWithCheckbox(event) {
+        this.selection = this.selection || [];
+        this.preventSelectionSetterPropagation = true;
+        let node = event.rowNode.node;
+        let selected = this.isSelected(node);
+        if (selected) {
+            this.propagateSelectionDown(node, false);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, false);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+        }
+        else {
+            this.propagateSelectionDown(node, true);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, true);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeSelect.emit({ originalEvent: event, node: node });
+        }
+        this.tableService.onSelectionChange();
+    }
+    toggleNodesWithCheckbox(event, check) {
+        let data = this.filteredNodes || this.value;
+        this._selection = check && data ? data.slice() : [];
+        if (check) {
+            if (data && data.length) {
+                for (let node of data) {
+                    this.propagateSelectionDown(node, true);
+                }
+            }
+        }
+        else {
+            this._selection = [];
+            this.selectionKeys = {};
+        }
+        this.preventSelectionSetterPropagation = true;
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+    }
+    propagateSelectionUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedChildCount = 0;
+            let childPartialSelected = false;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+            for (let child of node.children) {
+                if (this.isSelected(child))
+                    selectedChildCount++;
+                else if (child.partialSelected)
+                    childPartialSelected = true;
+            }
+            if (select && selectedChildCount == node.children.length) {
+                this._selection = [...this.selection || [], node];
+                node.partialSelected = false;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this._selection = this.selection.filter((val, i) => i != index);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                }
+                if (childPartialSelected || selectedChildCount > 0 && selectedChildCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateSelectionUp(parent, select);
+        }
+    }
+    propagateSelectionDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+        if (select && index == -1) {
+            this._selection = [...this.selection || [], node];
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        else if (!select && index > -1) {
+            this._selection = this.selection.filter((val, i) => i != index);
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        node.partialSelected = false;
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateSelectionDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        if (node && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(node) > -1;
+                else
+                    return this.equals(node, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(node, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    equals(node1, node2) {
+        return this.compareSelectionBy === 'equals' ? (node1 === node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);
+    }
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredNodes = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredNodes = [];
+                const isStrictMode = this.filterMode === 'strict';
+                let isValueChanged = false;
+                for (let node of this.value) {
+                    let copyNode = Object.assign({}, node);
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let paramsWithoutNode;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            let filterMeta = this.filters[prop];
+                            let filterField = prop;
+                            let filterValue = filterMeta.value;
+                            let filterMatchMode = filterMeta.matchMode || 'startsWith';
+                            let filterConstraint = this.filterService.filters[filterMatchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                                localMatch = false;
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let copyNodeForGlobal = Object.assign({}, copyNode);
+                            let filterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            let filterValue = this.filters['global'].value;
+                            let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
+                                (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
+                                globalMatch = true;
+                                copyNode = copyNodeForGlobal;
+                            }
+                        }
+                    }
+                    let matches = localMatch;
+                    if (this.filters['global']) {
+                        matches = localMatch && globalMatch;
+                    }
+                    if (matches) {
+                        this.filteredNodes.push(copyNode);
+                    }
+                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);
+                }
+                if (!isValueChanged) {
+                    this.filteredNodes = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.first = 0;
+        const filteredValue = this.filteredNodes || this.value;
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: filteredValue
+        });
+        this.tableService.onUIUpdate(filteredValue);
+        this.updateSerializedValue();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = Object.assign({}, childNode);
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { filterField, filterValue, filterConstraint, isStrictMode }) {
+        let matched = false;
+        let dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);
+        if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {
+            matched = true;
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    isNodeLeaf(node) {
+        return node.leaf === false ? false : !(node.children && node.children.length);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    reset() {
+        this._sortField = null;
+        this._sortOrder = 1;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredNodes = null;
+        this.filters = {};
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    updateEditingCell(cell, data, field) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.unbindDocumentEditListener();
+                }
+                this.editingCellClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.editingCellField = null;
+        this.editingCellData = null;
+        this.initialized = null;
+    }
+}
+TreeTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+TreeTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTable, selector: "p-treeTable", inputs: { columns: "columns", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", autoLayout: "autoLayout", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", paginator: "paginator", rows: "rows", first: "first", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", customSort: "customSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", compareSelectionBy: "compareSelectionBy", rowHover: "rowHover", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", frozenWidth: "frozenWidth", frozenColumns: "frozenColumns", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", contextMenu: "contextMenu", rowTrackBy: "rowTrackBy", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterMode: "filterMode", filterLocale: "filterLocale", value: "value", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onFilter: "onFilter", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onPage: "onPage", onSort: "onSort", onLazyLoad: "onLazyLoad", sortFunction: "sortFunction", onColResize: "onColResize", onColReorder: "onColReorder", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onContextMenuSelect: "onContextMenuSelect", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel" }, host: { classAttribute: "p-element" }, providers: [TreeTableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "scrollableViewChild", first: true, predicate: ["scrollableView"], descendants: true }, { propertyName: "scrollableFrozenViewChild", first: true, predicate: ["scrollableFrozenView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TTBody; }), selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i0.forwardRef(function () { return TTScrollableView; }), selector: "[ttScrollableView]", inputs: ["ttScrollableView", "frozen", "scrollHeight"] }], directives: [{ type: i0.forwardRef(function () { return i3.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i3.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeTable', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TreeTableService], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeTableService }, { type: i1.FilterService }]; }, propDecorators: { columns: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], frozenColumns: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], scrollableViewChild: [{
+                type: ViewChild,
+                args: ['scrollableView']
+            }], scrollableFrozenViewChild: [{
+                type: ViewChild,
+                args: ['scrollableFrozenView']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+class TTBody {
+    constructor(tt, treeTableService, cd) {
+        this.tt = tt;
+        this.treeTableService = treeTableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            if (this.tt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTBody, selector: "[pTreeTableBody]", inputs: { columns: ["pTreeTableBody", "columns"], template: ["pTreeTableBodyTemplate", "template"], frozen: "frozen" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTreeTableBody]',
+                    template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTreeTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTreeTableBodyTemplate"]
+            }], frozen: [{
+                type: Input
+            }] } });
+class TTScrollableView {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    get scrollHeight() {
+        return this._scrollHeight;
+    }
+    set scrollHeight(val) {
+        this._scrollHeight = val;
+        if (val != null && (val.includes('%') || val.includes('calc'))) {
+            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight="flex" instead.');
+        }
+        if (this.tt.virtualScroll && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.frozen) {
+            if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {
+                DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');
+            }
+            let frozenView = this.el.nativeElement.previousElementSibling;
+            if (frozenView) {
+                if (this.tt.virtualScroll)
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-virtual-scrollable-body');
+                else
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
+            }
+            let scrollBarWidth = DomHandler.calculateScrollbarWidth();
+            this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {
+                this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            }
+        }
+        else {
+            if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {
+                this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';
+            }
+        }
+        this.bindEvents();
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+                this.headerScrollListener = this.onHeaderScroll.bind(this);
+                this.scrollHeaderBoxViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);
+            }
+            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+                this.footerScrollListener = this.onFooterScroll.bind(this);
+                this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);
+            }
+            if (!this.frozen) {
+                this.bodyScrollListener = this.onBodyScroll.bind(this);
+                if (this.tt.virtualScroll)
+                    this.virtualScrollBody.getElementRef().nativeElement.addEventListener('scroll', this.bodyScrollListener);
+                else
+                    this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);
+            }
+        });
+    }
+    unbindEvents() {
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);
+        }
+        if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {
+            this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+        if (this.virtualScrollBody && this.virtualScrollBody.getElementRef()) {
+            this.virtualScrollBody.getElementRef().nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+    }
+    onHeaderScroll() {
+        const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onFooterScroll() {
+        const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onBodyScroll(event) {
+        if (this.preventBodyScrollPropagation) {
+            this.preventBodyScrollPropagation = false;
+            return;
+        }
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.frozenSiblingBody) {
+            this.frozenSiblingBody.scrollTop = event.target.scrollTop;
+        }
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.scrollBodyViewChild.nativeElement.scrollTo) {
+                this.scrollBodyViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;
+                this.scrollBodyViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        this.frozenSiblingBody = null;
+    }
+}
+TTScrollableView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+TTScrollableView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTScrollableView, selector: "[ttScrollableView]", inputs: { columns: ["ttScrollableView", "columns"], frozen: "frozen", scrollHeight: "scrollHeight" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "scrollHeaderViewChild", first: true, predicate: ["scrollHeader"], descendants: true }, { propertyName: "scrollHeaderBoxViewChild", first: true, predicate: ["scrollHeaderBox"], descendants: true }, { propertyName: "scrollBodyViewChild", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "scrollTableViewChild", first: true, predicate: ["scrollTable"], descendants: true }, { propertyName: "scrollLoadingTableViewChild", first: true, predicate: ["loadingTable"], descendants: true }, { propertyName: "scrollFooterViewChild", first: true, predicate: ["scrollFooter"], descendants: true }, { propertyName: "scrollFooterBoxViewChild", first: true, predicate: ["scrollFooterBox"], descendants: true }, { propertyName: "scrollableAlignerViewChild", first: true, predicate: ["scrollableAligner"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: TTBody, selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[ttScrollableView]',
+                    template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["ttScrollableView"]
+            }], frozen: [{
+                type: Input
+            }], scrollHeaderViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeader']
+            }], scrollHeaderBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeaderBox']
+            }], scrollBodyViewChild: [{
+                type: ViewChild,
+                args: ['scrollBody']
+            }], scrollTableViewChild: [{
+                type: ViewChild,
+                args: ['scrollTable']
+            }], scrollLoadingTableViewChild: [{
+                type: ViewChild,
+                args: ['loadingTable']
+            }], scrollFooterViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooter']
+            }], scrollFooterBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooterBox']
+            }], scrollableAlignerViewChild: [{
+                type: ViewChild,
+                args: ['scrollableAligner']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], scrollHeight: [{
+                type: Input
+            }] } });
+class TTSortableColumn {
+    constructor(tt) {
+        this.tt = tt;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.tt.isSorted(this.field);
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.updateSortState();
+            this.tt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.ttSortableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });
+TTSortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSortableColumn, selector: "[ttSortableColumn]", inputs: { field: ["ttSortableColumn", "field"], ttSortableColumnDisabled: "ttSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["ttSortableColumn"]
+            }], ttSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+class TTSortIcon {
+    constructor(tt, cd) {
+        this.tt = tt;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.tt.sortMode === 'single') {
+            this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;
+        }
+        else if (this.tt.sortMode === 'multiple') {
+            let sortMeta = this.tt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTSortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTSortIcon, selector: "p-treeTableSortIcon", inputs: { field: "field", ariaLabelDesc: "ariaLabelDesc", ariaLabelAsc: "ariaLabelAsc" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableSortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }], ariaLabelDesc: [{
+                type: Input
+            }], ariaLabelAsc: [{
+                type: Input
+            }] } });
+class TTResizableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        this.tt.onColumnResizeBegin(event);
+        this.bindDocumentEvents();
+    }
+    onDocumentMouseMove(event) {
+        this.tt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.tt.onColumnResizeEnd(event, this.el.nativeElement);
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.ttResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+TTResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTResizableColumn, selector: "[ttResizableColumn]", inputs: { ttResizableColumnDisabled: "ttResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttResizableColumnDisabled: [{
+                type: Input
+            }] } });
+class TTReorderableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.tt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.tt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.tt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.tt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.ttReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+TTReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTReorderableColumn, selector: "[ttReorderableColumn]", inputs: { ttReorderableColumnDisabled: "ttReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class TTSelectableRow {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    onEnterKey(event) {
+        if (event.which === 13) {
+            this.onClick(event);
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowTouchEnd(event);
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRow, selector: "[ttSelectableRow]", inputs: { rowNode: ["ttSelectableRow", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onEnterKey($event)", "touchend": "onTouchEnd($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRow"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }] } });
+class TTSelectableRowDblClick {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRowDblClick, selector: "[ttSelectableRowDblClick]", inputs: { rowNode: ["ttSelectableRowDblClick", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRowDblClick"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+class TTContextMenuRow {
+    constructor(tt, tableService, el) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {
+                this.selected = this.tt.equals(this.rowNode.node, node);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowRightClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.ttContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+TTContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTContextMenuRow, selector: "[ttContextMenuRow]", inputs: { rowNode: ["ttContextMenuRow", "rowNode"], ttContextMenuRowDisabled: "ttContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ElementRef }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttContextMenuRow"]
+            }], ttContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+class TTCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.tt.isSelected(this.rowNode.node);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.tt.isSelected(this.rowNode.node);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.tt.toggleNodeWithCheckbox({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTCheckbox, selector: "p-treeTableCheckbox", inputs: { disabled: "disabled", rowNode: ["value", "rowNode"] }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], rowNode: [{
+                type: Input,
+                args: ["value"]
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TTHeaderCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event, checked) {
+        if (this.tt.value && this.tt.value.length > 0) {
+            this.tt.toggleNodesWithCheckbox(event, !checked);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        let checked;
+        const data = this.tt.filteredNodes || this.tt.value;
+        if (data) {
+            for (let node of data) {
+                if (this.tt.isSelected(node)) {
+                    checked = true;
+                }
+                else {
+                    checked = false;
+                    break;
+                }
+            }
+        }
+        else {
+            checked = false;
+        }
+        return checked;
+    }
+}
+TTHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TTEditableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.editingCellClick = true;
+            if (this.tt.editingCell) {
+                if (this.tt.editingCell !== this.el.nativeElement) {
+                    if (!this.tt.isEditingCellValid()) {
+                        return;
+                    }
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.tt.onEditInit.emit({ field: this.field, data: this.data });
+        this.tt.editingCellClick = true;
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');
+                if (focusable) {
+                    focusable.focus();
+                }
+            }, 50);
+        });
+    }
+    closeEditingCell() {
+        DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');
+        this.tt.editingCell = null;
+        this.tt.unbindDocumentEditListener();
+    }
+    onKeyDown(event) {
+        if (this.isEnabled()) {
+            //enter
+            if (event.keyCode == 13) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //escape
+            else if (event.keyCode == 27) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //tab
+            else if (event.keyCode == 9) {
+                this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                if (event.shiftKey)
+                    this.moveToPreviousCell(event);
+                else
+                    this.moveToNextCell(event);
+            }
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findPreviousEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findNextEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.ttEditableColumnDisabled !== true;
+    }
+}
+TTEditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTEditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTEditableColumn, selector: "[ttEditableColumn]", inputs: { data: ["ttEditableColumn", "data"], field: ["ttEditableColumnField", "field"], ttEditableColumnDisabled: "ttEditableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["ttEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["ttEditableColumnField"]
+            }], ttEditableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+class TreeTableCellEditor {
+    constructor(tt, editableColumn) {
+        this.tt = tt;
+        this.editableColumn = editableColumn;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+TreeTableCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableCellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableCellEditor, selector: "p-treeTableCellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCellEditor',
+                    template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TTEditableColumn }]; }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TTRow {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down arrow
+            case 40:
+                let nextRow = this.el.nativeElement.nextElementSibling;
+                if (nextRow) {
+                    nextRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //down arrow
+            case 38:
+                let prevRow = this.el.nativeElement.previousElementSibling;
+                if (prevRow) {
+                    prevRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = false;
+                    this.tt.onNodeCollapse.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+            //right arrow
+            case 39:
+                if (!this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = true;
+                    this.tt.onNodeExpand.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+        }
+    }
+    restoreFocus() {
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let row = DomHandler.findSingle(this.tt.containerViewChild.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];
+                if (row) {
+                    row.focus();
+                }
+            }, 25);
+        });
+    }
+}
+TTRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTRow, selector: "[ttRow]", inputs: { rowNode: ["ttRow", "rowNode"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "\"0\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[attr.tabindex]': '"0"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ['ttRow']
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+class TreeTableToggler {
+    constructor(tt) {
+        this.tt = tt;
+    }
+    onClick(event) {
+        this.rowNode.node.expanded = !this.rowNode.node.expanded;
+        if (this.rowNode.node.expanded) {
+            this.tt.onNodeExpand.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        else {
+            this.tt.onNodeCollapse.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        this.tt.updateSerializedValue();
+        this.tt.tableService.onUIUpdate(this.tt.value);
+        event.preventDefault();
+    }
+}
+TreeTableToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableToggler.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableToggler, selector: "p-treeTableToggler", inputs: { rowNode: "rowNode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `, isInline: true, directives: [{ type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableToggler',
+                    template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { rowNode: [{
+                type: Input
+            }] } });
+class TreeTableModule {
+}
+TreeTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule] });
+TreeTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, imports: [[CommonModule, PaginatorModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule],
+                    exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule],
+                    declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TTBody, TTCheckbox, TTContextMenuRow, TTEditableColumn, TTHeaderCheckbox, TTReorderableColumn, TTResizableColumn, TTRow, TTScrollableView, TTSelectableRow, TTSelectableRowDblClick, TTSortIcon, TTSortableColumn, TreeTable, TreeTableCellEditor, TreeTableModule, TreeTableService, TreeTableToggler };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-treetable.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-treetable.mjs","sources":["../../src/app/components/treetable/treetable.ts","../../src/app/components/treetable/primeng-treetable.ts"],"sourcesContent":["import { NgModule, AfterContentInit, OnInit, OnDestroy, HostListener, Injectable, Directive, Component, Input, Output, EventEmitter, ContentChildren, TemplateRef, QueryList, ElementRef, NgZone, ViewChild, AfterViewInit, AfterViewChecked, OnChanges, SimpleChanges, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeNode } from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\nimport { DomHandler } from 'primeng/dom';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { PrimeTemplate, SharedModule, FilterService } from 'primeng/api';\nimport { SortMeta } from 'primeng/api';\nimport { BlockableUI } from 'primeng/api';\nimport { FilterMetadata } from 'primeng/api';\nimport { ObjectUtils } from 'primeng/utils';\nimport { RippleModule } from 'primeng/ripple';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\n\n@Injectable()\nexport class TreeTableService {\n\n    private sortSource = new Subject<SortMeta|SortMeta[]>();\n    private selectionSource = new Subject();\n    private contextMenuSource = new Subject<any>();\n    private uiUpdateSource = new Subject<any>();\n    private totalRecordsSource = new Subject<any>();\n\n    sortSource$ = this.sortSource.asObservable();\n    selectionSource$ = this.selectionSource.asObservable();\n    contextMenuSource$ = this.contextMenuSource.asObservable();\n    uiUpdateSource$ = this.uiUpdateSource.asObservable();\n    totalRecordsSource$ = this.totalRecordsSource.asObservable();\n\n    onSort(sortMeta: SortMeta|SortMeta[]) {\n        this.sortSource.next(sortMeta);\n    }\n\n    onSelectionChange() {\n        this.selectionSource.next(null);\n    }\n\n    onContextMenu(node: any) {\n        this.contextMenuSource.next(node);\n    }\n\n    onUIUpdate(value: any) {\n        this.uiUpdateSource.next(value);\n    }\n\n    onTotalRecordsChange(value: number) {\n        this.totalRecordsSource.next(value);\n    }\n}\n\n@Component({\n    selector: 'p-treeTable',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\" data-scrollselectors=\".p-treetable-scrollable-body\"\n                [ngClass]=\"{'p-treetable p-component': true,\n                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),\n                'p-treetable-auto-layout': autoLayout,\n                'p-treetable-resizable': resizableColumns,\n                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),\n                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}\">\n            <div class=\"p-treetable-loading\" *ngIf=\"loading && showLoader\">\n                <div class=\"p-treetable-loading-overlay p-component-overlay\">\n                    <i [class]=\"'p-treetable-loading-icon pi-spin ' + loadingIcon\"></i>\n                </div>\n            </div>\n            <div *ngIf=\"captionTemplate\" class=\"p-treetable-header\">\n                <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-top\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div class=\"p-treetable-wrapper\" *ngIf=\"!scrollable\">\n                <table #table [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-treetable-thead\">\n                        <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: columns}\"></ng-container>\n                    </thead>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                    <tfoot class=\"p-treetable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n            </div>\n\n            <div class=\"p-treetable-scrollable-wrapper\" *ngIf=\"scrollable\">\n               <div class=\"p-treetable-scrollable-view p-treetable-frozen-view\" *ngIf=\"frozenColumns||frozenBodyTemplate\" #scrollableFrozenView [ttScrollableView]=\"frozenColumns\" [frozen]=\"true\" [ngStyle]=\"{width: frozenWidth}\" [scrollHeight]=\"scrollHeight\"></div>\n               <div class=\"p-treetable-scrollable-view\" #scrollableView [ttScrollableView]=\"columns\" [frozen]=\"false\" [scrollHeight]=\"scrollHeight\" [ngStyle]=\"{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}\"></div>\n            </div>\n\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-bottom\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div *ngIf=\"summaryTemplate\" class=\"p-treetable-footer\">\n                <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n            </div>\n\n            <div #resizeHelper class=\"p-column-resizer-helper\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n\n            <span #reorderIndicatorUp class=\"pi pi-arrow-down p-treetable-reorder-indicator-up\" *ngIf=\"reorderableColumns\"></span>\n            <span #reorderIndicatorDown class=\"pi pi-arrow-up p-treetable-reorder-indicator-down\" *ngIf=\"reorderableColumns\"></span>\n        </div>\n    `,\n    providers: [TreeTableService],\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./treetable.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTable implements AfterContentInit, OnInit, OnDestroy, BlockableUI, OnChanges {\n\n    @Input() columns: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tableStyle: any;\n\n    @Input() tableStyleClass: string;\n\n    @Input() autoLayout: boolean;\n\n    @Input() lazy: boolean = false;\n\n    @Input() lazyLoadOnInit: boolean = true;\n\n    @Input() paginator: boolean;\n\n    @Input() rows: number;\n\n    @Input() first: number = 0;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() defaultSortOrder: number = 1;\n\n    @Input() sortMode: string = 'single';\n\n    @Input() resetPageOnSort: boolean = true;\n\n    @Input() customSort: boolean;\n\n    @Input() selectionMode: string;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelection: any;\n\n    @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelectionMode: string = \"separate\";\n\n    @Input() dataKey: string;\n\n    @Input() metaKeySelection: boolean;\n\n    @Input() compareSelectionBy: string = 'deepEquals';\n\n    @Input() rowHover: boolean;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() showLoader: boolean = true;\n\n    @Input() scrollable: boolean;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualScrollDelay: number = 150;\n\n    @Input() virtualRowHeight: number = 28;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() frozenWidth: string;\n\n    @Input() frozenColumns: any[];\n\n    @Input() resizableColumns: boolean;\n\n    @Input() columnResizeMode: string = 'fit';\n\n    @Input() reorderableColumns: boolean;\n\n    @Input() contextMenu: any;\n\n    @Input() rowTrackBy: Function = (index: number, item: any) => item;\n\n    @Input() filters: { [s: string]: FilterMetadata; } = {};\n\n    @Input() globalFilterFields: string[];\n\n    @Input() filterDelay: number = 300;\n\n    @Input() filterMode: string = 'lenient';\n\n    @Input() filterLocale: string;\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Output() sortFunction: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColResize: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHeaderCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditCancel: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('resizeHelper') resizeHelperViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: ElementRef;\n\n    @ViewChild('table') tableViewChild: ElementRef;\n\n    @ViewChild('scrollableView') scrollableViewChild;\n\n    @ViewChild('scrollableFrozenView') scrollableFrozenViewChild;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    _value: TreeNode[] = [];\n\n    serializedValue: any[];\n\n    _totalRecords: number = 0;\n\n    _multiSortMeta: SortMeta[];\n\n    _sortField: string;\n\n    _sortOrder: number = 1;\n\n    filteredNodes: any[];\n\n    filterTimeout: any;\n\n    colGroupTemplate: TemplateRef<any>;\n\n    captionTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    bodyTemplate: TemplateRef<any>;\n\n    loadingBodyTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    summaryTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    frozenHeaderTemplate: TemplateRef<any>;\n\n    frozenBodyTemplate: TemplateRef<any>;\n\n    frozenFooterTemplate: TemplateRef<any>;\n\n    frozenColGroupTemplate: TemplateRef<any>;\n\n    lastResizerHelperX: number;\n\n    reorderIconWidth: number;\n\n    reorderIconHeight: number;\n\n    draggedColumn: any;\n\n    dropPosition: number;\n\n    preventSelectionSetterPropagation: boolean;\n\n    _selection: any;\n\n    selectionKeys: any = {};\n\n    rowTouched: boolean;\n\n    editingCell: Element;\n\n    editingCellData: any;\n\n    editingCellField: any;\n\n    editingCellClick: boolean;\n\n    documentEditListener: any;\n\n    initialized: boolean;\n\n    toggleRowIndex: number;\n\n    ngOnInit() {\n        if (this.lazy && this.lazyLoadOnInit) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'caption':\n                    this.captionTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'body':\n                    this.bodyTemplate = item.template;\n                break;\n\n                case 'loadingbody':\n                    this.loadingBodyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'summary':\n                    this.summaryTemplate = item.template;\n                break;\n\n                case 'colgroup':\n                    this.colGroupTemplate = item.template;\n                break;\n\n                case 'emptymessage':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n\n                case 'frozenheader':\n                    this.frozenHeaderTemplate = item.template;\n                break;\n\n                case 'frozenbody':\n                    this.frozenBodyTemplate = item.template;\n                break;\n\n                case 'frozenfooter':\n                    this.frozenFooterTemplate = item.template;\n                break;\n\n                case 'frozencolgroup':\n                    this.frozenColGroupTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    constructor(public el: ElementRef, public zone: NgZone, public tableService: TreeTableService, public filterService: FilterService) {}\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            this._value = simpleChange.value.currentValue;\n\n            if (!this.lazy) {\n                this.totalRecords = (this._value ? this._value.length : 0);\n\n                if (this.sortMode == 'single' && this.sortField)\n                    this.sortSingle();\n                else if (this.sortMode == 'multiple' && this.multiSortMeta)\n                    this.sortMultiple();\n                else if (this.hasFilter())       //sort already filters\n                    this._filter();\n            }\n\n            this.updateSerializedValue();\n            this.tableService.onUIUpdate(this.value);\n        }\n\n        if (simpleChange.sortField) {\n            this._sortField = simpleChange.sortField.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.sortOrder) {\n            this._sortOrder = simpleChange.sortOrder.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.multiSortMeta) {\n            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n            if (this.sortMode === 'multiple') {\n                this.sortMultiple();\n            }\n        }\n\n        if (simpleChange.selection) {\n            this._selection = simpleChange.selection.currentValue;\n\n            if (!this.preventSelectionSetterPropagation) {\n                this.updateSelectionKeys();\n                this.tableService.onSelectionChange();\n            }\n            this.preventSelectionSetterPropagation = false;\n        }\n    }\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n    }\n\n    updateSerializedValue() {\n        this.serializedValue = [];\n\n        if (this.paginator)\n            this.serializePageNodes();\n        else\n            this.serializeNodes(null, this.filteredNodes||this.value, 0, true);\n    }\n\n    serializeNodes(parent, nodes, level, visible) {\n        if (nodes && nodes.length) {\n            for(let node of nodes) {\n                node.parent = parent;\n                const rowNode = {\n                    node: node,\n                    parent: parent,\n                    level: level,\n                    visible: visible && (parent ? parent.expanded : true)\n                };\n                this.serializedValue.push(rowNode);\n\n                if (rowNode.visible && node.expanded) {\n                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n                }\n            }\n        }\n    }\n\n    serializePageNodes() {\n        let data = this.filteredNodes || this.value;\n        this.serializedValue = [];\n        if (data && data.length) {\n            const first = this.lazy ? 0 : this.first;\n\n            for(let i = first; i < (first + this.rows); i++) {\n                let node = data[i];\n                if (node) {\n                    this.serializedValue.push({\n                        node: node,\n                        parent: null,\n                        level: 0,\n                        visible: true\n                    });\n\n                    this.serializeNodes(node, node.children, 1, true);\n                }\n            }\n        }\n    }\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        this.tableService.onTotalRecordsChange(this._totalRecords);\n    }\n\n    @Input() get sortField(): string {\n        return this._sortField;\n    }\n\n    set sortField(val: string) {\n        this._sortField = val;\n    }\n\n    @Input() get sortOrder(): number {\n        return this._sortOrder;\n    }\n    set sortOrder(val: number) {\n        this._sortOrder = val;\n    }\n\n    @Input() get multiSortMeta(): SortMeta[] {\n        return this._multiSortMeta;\n    }\n\n    set multiSortMeta(val: SortMeta[]) {\n        this._multiSortMeta = val;\n    }\n\n    @Input() get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val: any) {\n        this._selection = val;\n    }\n\n    updateSelectionKeys() {\n        if (this.dataKey && this._selection) {\n            this.selectionKeys = {};\n            if (Array.isArray(this._selection)) {\n                for(let node of this._selection) {\n                    this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;\n                }\n            }\n            else {\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;\n            }\n        }\n    }\n\n    onPageChange(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy)\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        else\n            this.serializePageNodes();\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n\n        this.tableService.onUIUpdate(this.value);\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    sort(event) {\n        let originalEvent = event.originalEvent;\n\n        if (this.sortMode === 'single') {\n            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n            this._sortField = event.field;\n            this.sortSingle();\n\n            if (this.resetPageOnSort && this.scrollable) {\n                this.resetScrollTop();\n            }\n        }\n        if (this.sortMode === 'multiple') {\n            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n            let sortMeta = this.getSortMeta(event.field);\n\n            if (sortMeta) {\n                if (!metaKey) {\n                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }]\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                }\n                else {\n                    sortMeta.order = sortMeta.order * -1;\n                }\n            }\n            else {\n                if (!metaKey || !this.multiSortMeta) {\n                    this._multiSortMeta = [];\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                }\n                this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n            }\n\n            this.sortMultiple();\n        }\n    }\n\n    sortSingle() {\n        if (this.sortField && this.sortOrder) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                this.sortNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            let sortMeta: SortMeta = {\n                field: this.sortField,\n                order: this.sortOrder\n            };\n\n            this.onSort.emit(sortMeta);\n            this.tableService.onSort(sortMeta);\n            this.updateSerializedValue();\n        }\n    }\n\n    sortNodes(nodes) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: nodes,\n                mode: this.sortMode,\n                field: this.sortField,\n                order: this.sortOrder\n            });\n        }\n        else {\n            nodes.sort((node1, node2) => {\n                let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);\n                let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, {numeric: true});\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return (this.sortOrder * result);\n            });\n        }\n\n        for(let node of nodes) {\n            this.sortNodes(node.children);\n        }\n    }\n\n    sortMultiple() {\n        if (this.multiSortMeta) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n               this.sortMultipleNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            this.onSort.emit({\n                multisortmeta: this.multiSortMeta\n            });\n            this.updateSerializedValue();\n            this.tableService.onSort(this.multiSortMeta);\n        }\n    }\n\n    sortMultipleNodes(nodes) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: this.value,\n                mode: this.sortMode,\n                multiSortMeta: this.multiSortMeta\n            });\n        }\n        else {\n            nodes.sort((node1, node2) => {\n                return this.multisortField(node1, node2, this.multiSortMeta, 0);\n            });\n        }\n\n        for(let node of nodes) {\n            this.sortMultipleNodes(node.children);\n        }\n    }\n\n    multisortField(node1, node2, multiSortMeta, index) {\n        let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n        let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n        let result = null;\n\n        if (value1 == null && value2 != null)\n            result = -1;\n        else if (value1 != null && value2 == null)\n            result = 1;\n        else if (value1 == null && value2 == null)\n            result = 0;\n        if (typeof value1 == 'string' || value1 instanceof String) {\n            if (value1.localeCompare && (value1 != value2)) {\n                return (multiSortMeta[index].order * value1.localeCompare(value2, undefined, {numeric: true}));\n            }\n        }\n        else {\n            result = (value1 < value2) ? -1 : 1;\n        }\n\n        if (value1 == value2) {\n            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(node1, node2, multiSortMeta, index + 1)) : 0;\n        }\n\n        return (multiSortMeta[index].order * result);\n    }\n\n    getSortMeta(field: string) {\n        if (this.multiSortMeta && this.multiSortMeta.length) {\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                if (this.multiSortMeta[i].field === field) {\n                    return this.multiSortMeta[i];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    isSorted(field: string) {\n        if (this.sortMode === 'single') {\n            return (this.sortField && this.sortField === field);\n        }\n        else if (this.sortMode === 'multiple') {\n            let sorted = false;\n            if (this.multiSortMeta) {\n                for(let i = 0; i < this.multiSortMeta.length; i++) {\n                    if (this.multiSortMeta[i].field == field) {\n                        sorted = true;\n                        break;\n                    }\n                }\n            }\n            return sorted;\n        }\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder,\n            filters: this.filters,\n            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n            multiSortMeta: this.multiSortMeta\n        };\n    }\n\n    public resetScrollTop() {\n        if (this.virtualScroll)\n            this.scrollToVirtualIndex(0);\n        else\n            this.scrollTo({top: 0});\n    }\n\n    public scrollToVirtualIndex(index: number) {\n        if (this.scrollableViewChild) {\n            this.scrollableViewChild.scrollToVirtualIndex(index);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            this.scrollableFrozenViewChild.scrollToVirtualIndex(index);\n        }\n    }\n\n    public scrollTo(options) {\n        if (this.scrollableViewChild) {\n            this.scrollableViewChild.scrollTo(options);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            this.scrollableFrozenViewChild.scrollTo(options);\n        }\n    }\n\n    isEmpty() {\n        let data = this.filteredNodes||this.value;\n        return data == null || data.length == 0;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onColumnResizeBegin(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n        event.preventDefault();\n    }\n\n    onColumnResize(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'block';\n    }\n\n    onColumnResizeEnd(event, column) {\n        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n        let columnWidth = column.offsetWidth;\n        let newColumnWidth = columnWidth + delta;\n        let minWidth = column.style.minWidth || 15;\n\n        if (columnWidth + delta > parseInt(minWidth)) {\n            if (this.columnResizeMode === 'fit') {\n                let nextColumn = column.nextElementSibling;\n                while (!nextColumn.offsetParent) {\n                    nextColumn = nextColumn.nextElementSibling;\n                }\n\n                if (nextColumn) {\n                    let nextColumnWidth = nextColumn.offsetWidth - delta;\n                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n                        if (this.scrollable) {\n                            let scrollableView = this.findParentScrollableView(column);\n                            let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-treetable-virtual-scrollable-body table');\n                            let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n                            let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n                            let resizeColumnIndex = DomHandler.index(column);\n\n                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                        }\n                        else {\n                            column.style.width = newColumnWidth + 'px';\n                            if (nextColumn) {\n                                nextColumn.style.width = nextColumnWidth + 'px';\n                            }\n                        }\n                    }\n                }\n            }\n            else if (this.columnResizeMode === 'expand') {\n                if (this.scrollable) {\n                    let scrollableView = this.findParentScrollableView(column);\n                    let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport');\n                    let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');\n                    let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');\n                    let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport table');\n                    let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n                    let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n                    if (scrollableFooterTable) {\n                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n                    }\n                    let resizeColumnIndex = DomHandler.index(column);\n\n                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n                    const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n                    let setWidth = (container, table, width, isContainerInViewport) => {\n                        if (container && table) {\n                            container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto'\n                            table.style.width = width + 'px';\n                        }\n                    };\n\n                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n                }\n                else {\n                    this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';\n                    column.style.width = newColumnWidth + 'px';\n                    let containerWidth = this.tableViewChild.nativeElement.style.width;\n                    this.containerViewChild.nativeElement.style.width = containerWidth + 'px';\n                }\n            }\n\n            this.onColResize.emit({\n                element: column,\n                delta: delta\n            });\n        }\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'none';\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n    }\n\n    findParentScrollableView(column) {\n        if (column) {\n            let parent = column.parentElement;\n            while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {\n                parent = parent.parentElement;\n            }\n\n            return parent;\n        }\n        else {\n            return null;\n        }\n    }\n\n    resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n        if (table) {\n            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n            if (colGroup) {\n                let col = colGroup.children[resizeColumnIndex];\n                let nextCol = col.nextElementSibling;\n                col.style.width = newColumnWidth + 'px';\n\n                if (nextCol && nextColumnWidth) {\n                    nextCol.style.width = nextColumnWidth + 'px';\n                }\n            }\n            else {\n                throw \"Scrollable tables require a colgroup to support resizable columns\";\n            }\n        }\n    }\n\n    onColumnDragStart(event, columnElement) {\n        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n        this.draggedColumn = columnElement;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onColumnDragEnter(event, dropHeader) {\n        if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n            event.preventDefault();\n            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n            let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n\n            if (this.draggedColumn != dropHeader) {\n                let targetLeft = dropHeaderOffset.left - containerOffset.left;\n                let targetTop = containerOffset.top - dropHeaderOffset.top;\n                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n                if (event.pageX > columnCenter) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = 1;\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = -1;\n                }\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n                this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n            }\n            else {\n                event.dataTransfer.dropEffect = 'none';\n            }\n        }\n    }\n\n    onColumnDragLeave(event) {\n        if (this.reorderableColumns && this.draggedColumn) {\n            event.preventDefault();\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n        }\n    }\n\n    onColumnDrop(event, dropColumn) {\n        event.preventDefault();\n        if (this.draggedColumn) {\n            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n            let allowDrop = (dragIndex != dropIndex);\n            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n                allowDrop = false;\n            }\n\n            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n                dropIndex = dropIndex + 1;\n            }\n\n            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n                dropIndex = dropIndex - 1;\n            }\n\n            if (allowDrop) {\n                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n\n                this.onColReorder.emit({\n                    dragIndex: dragIndex,\n                    dropIndex: dropIndex,\n                    columns: this.columns\n                });\n            }\n\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n            this.draggedColumn.draggable = false;\n            this.draggedColumn = null;\n            this.dropPosition = null;\n        }\n    }\n\n    handleRowClick(event) {\n        let targetNode = (<HTMLElement> event.originalEvent.target).nodeName;\n        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {\n            return;\n        }\n\n        if (this.selectionMode) {\n            this.preventSelectionSetterPropagation = true;\n            let rowNode = event.rowNode;\n            let selected = this.isSelected(rowNode.node);\n            let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;\n\n            if (metaSelection) {\n                let metaKey = event.originalEvent.metaKey||event.originalEvent.ctrlKey;\n\n                if (selected && metaKey) {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = null;\n                        this.selectionKeys = {};\n                        this.selectionChange.emit(null);\n                    }\n                    else {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val,i) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n\n                    this.onNodeUnselect.emit({originalEvent: event.originalEvent, node: rowNode.node, type: 'row'});\n                }\n                else {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(rowNode.node);\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        if (metaKey) {\n                            this._selection = this.selection||[];\n                        }\n                        else {\n                            this._selection = [];\n                            this.selectionKeys = {};\n                        }\n\n                        this._selection = [...this.selection, rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n\n                    this.onNodeSelect.emit({originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex});\n                }\n            }\n            else {\n                if (this.selectionMode === 'single') {\n                    if (selected) {\n                        this._selection = null;\n                        this.selectionKeys = {};\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n                    }\n                    else {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n                else if (this.selectionMode === 'multiple') {\n                    if (selected) {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val, i) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n                    else {\n                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n            }\n\n            this.tableService.onSelectionChange();\n        }\n\n        this.rowTouched = false;\n    }\n\n    handleRowTouchEnd(event) {\n        this.rowTouched = true;\n    }\n\n    handleRowRightClick(event) {\n        if (this.contextMenu) {\n            const node = event.rowNode.node;\n\n            if (this.contextMenuSelectionMode === 'separate') {\n                this.contextMenuSelection = node;\n                this.contextMenuSelectionChange.emit(node);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, node: node});\n                this.contextMenu.show(event.originalEvent);\n                this.tableService.onContextMenu(node);\n            }\n            else if (this.contextMenuSelectionMode === 'joint') {\n                this.preventSelectionSetterPropagation = true;\n                let selected = this.isSelected(node);\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode()) {\n                        this.selection = node;\n                        this.selectionChange.emit(node);\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        this.selection = [node];\n                        this.selectionChange.emit(this.selection);\n                    }\n\n                    if (dataKeyValue) {\n                        this.selectionKeys[dataKeyValue] = 1;\n                    }\n                }\n\n                this.contextMenu.show(event.originalEvent);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, node: node});\n            }\n        }\n    }\n\n    toggleNodeWithCheckbox(event) {\n        this.selection = this.selection||[];\n        this.preventSelectionSetterPropagation = true;\n        let node = event.rowNode.node;\n        let selected = this.isSelected(node);\n\n        if (selected) {\n            this.propagateSelectionDown(node, false);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, false);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeUnselect.emit({originalEvent: event, node: node});\n        }\n        else {\n            this.propagateSelectionDown(node, true);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, true);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeSelect.emit({originalEvent: event, node: node});\n        }\n\n        this.tableService.onSelectionChange();\n    }\n\n    toggleNodesWithCheckbox(event: Event, check: boolean) {\n        let data = this.filteredNodes || this.value;\n        this._selection = check && data ? data.slice() : [];\n        if (check) {\n            if (data && data.length) {\n                for (let node of data) {\n                    this.propagateSelectionDown(node, true);\n                }\n            }\n        }\n        else {\n            this._selection = [];\n            this.selectionKeys = {};\n        }\n\n        this.preventSelectionSetterPropagation = true;\n        this.selectionChange.emit(this._selection);\n        this.tableService.onSelectionChange();\n        this.onHeaderCheckboxToggle.emit({originalEvent: event, checked: check});\n    }\n\n    propagateSelectionUp(node: TreeNode, select: boolean) {\n        if (node.children && node.children.length) {\n            let selectedChildCount: number = 0;\n            let childPartialSelected: boolean = false;\n            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n            for (let child of node.children) {\n                if (this.isSelected(child))\n                selectedChildCount++;\n                else if (child.partialSelected)\n                    childPartialSelected = true;\n            }\n\n            if (select && selectedChildCount == node.children.length) {\n                this._selection =  [...this.selection||[], node];\n                node.partialSelected = false;\n                if (dataKeyValue) {\n                    this.selectionKeys[dataKeyValue] = 1;\n                }\n            }\n            else {\n                if (!select) {\n                    let index = this.findIndexInSelection(node);\n                    if (index >= 0) {\n                        this._selection =  this.selection.filter((val,i) => i!=index);\n\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n                }\n\n                if (childPartialSelected || selectedChildCount > 0 && selectedChildCount != node.children.length)\n                    node.partialSelected = true;\n                else\n                    node.partialSelected = false;\n            }\n        }\n\n        let parent = node.parent;\n        if (parent) {\n            this.propagateSelectionUp(parent, select);\n        }\n    }\n\n    propagateSelectionDown(node: TreeNode, select: boolean) {\n        let index = this.findIndexInSelection(node);\n        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n        if (select && index == -1) {\n            this._selection =  [...this.selection||[],node]\n            if (dataKeyValue) {\n                this.selectionKeys[dataKeyValue] = 1;\n            }\n        }\n        else if (!select && index > -1) {\n            this._selection =  this.selection.filter((val,i) => i!=index);\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n        }\n\n        node.partialSelected = false;\n\n        if (node.children && node.children.length) {\n            for (let child of node.children) {\n                this.propagateSelectionDown(child, select);\n            }\n        }\n    }\n\n    isSelected(node) {\n        if (node && this.selection) {\n            if (this.dataKey) {\n                return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;\n            }\n            else {\n                if (this.selection instanceof Array)\n                    return this.findIndexInSelection(node) > -1;\n                else\n                    return this.equals(node, this.selection);\n            }\n        }\n\n        return false;\n    }\n\n    findIndexInSelection(node: any) {\n        let index: number = -1;\n        if (this.selection && this.selection.length) {\n            for (let i = 0; i < this.selection.length; i++) {\n                if (this.equals(node, this.selection[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode === 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode === 'multiple';\n    }\n\n    equals(node1, node2) {\n        return this.compareSelectionBy === 'equals' ? (node1 === node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);\n    }\n\n    filter(value, field, matchMode) {\n        if (this.filterTimeout) {\n            clearTimeout(this.filterTimeout);\n        }\n\n        if (!this.isFilterBlank(value)) {\n            this.filters[field] = { value: value, matchMode: matchMode };\n        } else if (this.filters[field]) {\n            delete this.filters[field];\n        }\n\n        this.filterTimeout = setTimeout(() => {\n            this._filter();\n            this.filterTimeout = null;\n        }, this.filterDelay);\n    }\n\n    filterGlobal(value, matchMode) {\n        this.filter(value, 'global', matchMode);\n    }\n\n    isFilterBlank(filter: any): boolean {\n        if (filter !== null && filter !== undefined) {\n            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n                return true;\n            else\n                return false;\n        }\n        return true;\n    }\n\n    _filter() {\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            if (!this.value) {\n                return;\n            }\n\n            if (!this.hasFilter()) {\n                this.filteredNodes = null;\n                if (this.paginator) {\n                    this.totalRecords = this.value ? this.value.length : 0;\n                }\n            }\n            else {\n                let globalFilterFieldsArray;\n                if (this.filters['global']) {\n                    if (!this.columns && !this.globalFilterFields)\n                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n                    else\n                        globalFilterFieldsArray = this.globalFilterFields||this.columns;\n                }\n\n                this.filteredNodes = [];\n                const isStrictMode = this.filterMode === 'strict';\n                let isValueChanged = false;\n\n                for (let node of this.value) {\n                    let copyNode = {...node};\n                    let localMatch = true;\n                    let globalMatch = false;\n                    let paramsWithoutNode;\n\n                    for (let prop in this.filters) {\n                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n                            let filterMeta = this.filters[prop];\n                            let filterField = prop;\n                            let filterValue = filterMeta.value;\n                            let filterMatchMode = filterMeta.matchMode || 'startsWith';\n                            let filterConstraint = this.filterService.filters[filterMatchMode];\n                            paramsWithoutNode = {filterField, filterValue, filterConstraint, isStrictMode};\n                            if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n                                    localMatch = false;\n                            }\n\n                            if (!localMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n                        for(let j = 0; j < globalFilterFieldsArray.length; j++) {\n                            let copyNodeForGlobal = {...copyNode};\n                            let filterField = globalFilterFieldsArray[j].field||globalFilterFieldsArray[j];\n                            let filterValue = this.filters['global'].value;\n                            let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];\n                            paramsWithoutNode = {filterField, filterValue, filterConstraint, isStrictMode};\n\n                            if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n                                (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {\n                                    globalMatch = true;\n                                    copyNode = copyNodeForGlobal;\n                            }\n                        }\n                    }\n\n                    let matches = localMatch;\n                    if (this.filters['global']) {\n                        matches = localMatch && globalMatch;\n                    }\n\n                    if (matches) {\n                        this.filteredNodes.push(copyNode);\n                    }\n\n                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0)\n                }\n\n                if (!isValueChanged) {\n                    this.filteredNodes = null;\n                }\n\n                if (this.paginator) {\n                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n                }\n            }\n        }\n\n        this.first = 0;\n\n        const filteredValue = this.filteredNodes || this.value;\n\n        this.onFilter.emit({\n            filters: this.filters,\n            filteredValue: filteredValue\n        });\n\n        this.tableService.onUIUpdate(filteredValue);\n        this.updateSerializedValue();\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    findFilteredNodes(node, paramsWithoutNode) {\n        if (node) {\n            let matched = false;\n            if (node.children) {\n                let childNodes = [...node.children];\n                node.children = [];\n                for (let childNode of childNodes) {\n                    let copyChildNode = {...childNode};\n                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n                        matched = true;\n                        node.children.push(copyChildNode);\n                    }\n                }\n            }\n\n            if (matched) {\n                return true;\n            }\n        }\n    }\n\n    isFilterMatched(node, {filterField, filterValue, filterConstraint, isStrictMode}) {\n        let matched = false;\n        let dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);\n        if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {\n            matched = true;\n        }\n\n        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n            matched = this.findFilteredNodes(node, {filterField, filterValue, filterConstraint, isStrictMode}) || matched;\n        }\n\n        return matched;\n    }\n\n    isNodeLeaf(node) {\n        return node.leaf === false ? false : !(node.children && node.children.length);\n    }\n\n    hasFilter() {\n        let empty = true;\n        for (let prop in this.filters) {\n            if (this.filters.hasOwnProperty(prop)) {\n                empty = false;\n                break;\n            }\n        }\n\n        return !empty;\n    }\n\n    public reset() {\n        this._sortField = null;\n        this._sortOrder = 1;\n        this._multiSortMeta = null;\n        this.tableService.onSort(null);\n\n        this.filteredNodes = null;\n        this.filters = {};\n\n        this.first = 0;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            this.totalRecords = (this._value ? this._value.length : 0);\n        }\n    }\n\n    updateEditingCell(cell, data, field) {\n        this.editingCell = cell;\n        this.editingCellData = data;\n        this.editingCellField = field;\n        this.bindDocumentEditListener();\n    }\n\n    isEditingCellValid() {\n        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n    }\n\n    bindDocumentEditListener() {\n        if (!this.documentEditListener) {\n            this.documentEditListener = (event) => {\n                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n                    this.editingCell = null;\n                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n                    this.editingCellField = null;\n                    this.editingCellData = null;\n                    this.unbindDocumentEditListener();\n                }\n\n                this.editingCellClick = false;\n            };\n\n            document.addEventListener('click', this.documentEditListener);\n        }\n    }\n\n    unbindDocumentEditListener() {\n        if (this.documentEditListener) {\n            document.removeEventListener('click', this.documentEditListener);\n            this.documentEditListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentEditListener();\n        this.editingCell = null;\n        this.editingCellField = null;\n        this.editingCellData = null;\n        this.initialized = null;\n    }\n\n}\n\n@Component({\n    selector: '[pTreeTableBody]',\n    template: `\n        <ng-container *ngIf=\"!tt.virtualScroll\">\n            <ng-template ngFor let-serializedNode let-rowIndex=\"index\" [ngForOf]=\"tt.serializedValue\" [ngForTrackBy]=\"tt.rowTrackBy\">\n                <ng-container *ngIf=\"serializedNode.visible\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"tt.virtualScroll\">\n            <ng-template cdkVirtualFor let-serializedNode let-rowIndex=\"index\" [cdkVirtualForOf]=\"tt.serializedValue\" [cdkVirtualForTrackBy]=\"tt.rowTrackBy\" [cdkVirtualForTemplateCacheSize]=\"0\">\n                <ng-container *ngIf=\"serializedNode.visible\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"tt.isEmpty()\">\n            <ng-container *ngTemplateOutlet=\"tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTBody {\n\n    @Input(\"pTreeTableBody\") columns: any[];\n\n    @Input(\"pTreeTableBodyTemplate\") template: TemplateRef<any>;\n\n    @Input() frozen: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public treeTableService: TreeTableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            if (this.tt.virtualScroll) {\n                this.cd.detectChanges();\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: '[ttScrollableView]',\n    template: `\n        <div #scrollHeader class=\"p-treetable-scrollable-header\">\n            <div #scrollHeaderBox class=\"p-treetable-scrollable-header-box\">\n                <table class=\"p-treetable-scrollable-header-table\" [ngClass]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-treetable-thead\">\n                        <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}\"></ng-container>\n                    </thead>\n                </table>\n            </div>\n        </div>\n        <ng-container *ngIf=\"!tt.virtualScroll; else virtualScrollTemplate\">\n            <div #scrollBody class=\"p-treetable-scrollable-body\" [ngStyle]=\"{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}\">\n                <table #scrollTable [class]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate\" [frozen]=\"frozen\"></tbody>\n                </table>\n                <div #scrollableAligner style=\"background-color:transparent\" *ngIf=\"frozen\"></div>\n            </div>\n        </ng-container>\n        <ng-template #virtualScrollTemplate>\n            <cdk-virtual-scroll-viewport [itemSize]=\"tt.virtualRowHeight\" [style.height]=\"tt.scrollHeight !== 'flex' ? scrollHeight : undefined\"\n                    [minBufferPx]=\"tt.minBufferPx\" [maxBufferPx]=\"tt.maxBufferPx\" class=\"p-treetable-virtual-scrollable-body\">\n                <table #scrollTable [class]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate\" [frozen]=\"frozen\"></tbody>\n                </table>\n                <div #scrollableAligner style=\"background-color:transparent\" *ngIf=\"frozen\"></div>\n            </cdk-virtual-scroll-viewport>\n        </ng-template>\n        <div #scrollFooter *ngIf=\"tt.footerTemplate\" class=\"p-treetable-scrollable-footer\">\n            <div #scrollFooterBox class=\"p-treetable-scrollable-footer-box\">\n                <table class=\"p-treetable-scrollable-footer-table\" [ngClass]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tfoot class=\"p-treetable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTScrollableView implements AfterViewInit, OnDestroy {\n\n    @Input(\"ttScrollableView\") columns: any[];\n\n    @Input() frozen: boolean;\n\n    @ViewChild('scrollHeader') scrollHeaderViewChild: ElementRef;\n\n    @ViewChild('scrollHeaderBox') scrollHeaderBoxViewChild: ElementRef;\n\n    @ViewChild('scrollBody') scrollBodyViewChild: ElementRef;\n\n    @ViewChild('scrollTable') scrollTableViewChild: ElementRef;\n\n    @ViewChild('loadingTable') scrollLoadingTableViewChild: ElementRef;\n\n    @ViewChild('scrollFooter') scrollFooterViewChild: ElementRef;\n\n    @ViewChild('scrollFooterBox') scrollFooterBoxViewChild: ElementRef;\n\n    @ViewChild('scrollableAligner') scrollableAlignerViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    headerScrollListener;\n\n    bodyScrollListener;\n\n    footerScrollListener;\n\n    frozenSiblingBody: Element;\n\n    totalRecordsSubscription: Subscription;\n\n    _scrollHeight: string;\n\n    preventBodyScrollPropagation: boolean;\n\n    @Input() get scrollHeight(): string {\n        return this._scrollHeight;\n    }\n    set scrollHeight(val: string) {\n        this._scrollHeight = val;\n        if (val != null && (val.includes('%') || val.includes('calc'))) {\n            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.')\n        }\n\n        if (this.tt.virtualScroll && this.virtualScrollBody) {\n            this.virtualScrollBody.ngOnInit();\n        }\n    }\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (!this.frozen) {\n            if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {\n                DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n            }\n\n            let frozenView = this.el.nativeElement.previousElementSibling;\n            if (frozenView) {\n                if (this.tt.virtualScroll)\n                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-virtual-scrollable-body');\n                else\n                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');\n            }\n\n            let scrollBarWidth = DomHandler.calculateScrollbarWidth();\n            this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n\n            if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {\n                this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n            }\n        }\n        else {\n            if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {\n                this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';\n            }\n        }\n\n        this.bindEvents();\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n                this.headerScrollListener = this.onHeaderScroll.bind(this);\n                this.scrollHeaderBoxViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);\n            }\n\n            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n                this.footerScrollListener = this.onFooterScroll.bind(this);\n                this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);\n            }\n\n            if (!this.frozen) {\n                this.bodyScrollListener = this.onBodyScroll.bind(this);\n\n                if (this.tt.virtualScroll)\n                    this.virtualScrollBody.getElementRef().nativeElement.addEventListener('scroll', this.bodyScrollListener);\n                else\n                    this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);\n            }\n        });\n    }\n\n    unbindEvents() {\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderBoxViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);\n        }\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);\n        }\n\n        if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {\n            this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);\n        }\n\n        if (this.virtualScrollBody && this.virtualScrollBody.getElementRef()) {\n            this.virtualScrollBody.getElementRef().nativeElement.removeEventListener('scroll', this.bodyScrollListener);\n        }\n    }\n\n    onHeaderScroll() {\n        const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;\n\n        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onFooterScroll() {\n        const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;\n        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onBodyScroll(event) {\n        if (this.preventBodyScrollPropagation) {\n            this.preventBodyScrollPropagation = false;\n            return;\n        }\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.frozenSiblingBody) {\n            this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n        }\n    }\n\n    scrollToVirtualIndex(index: number): void {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollToIndex(index);\n        }\n    }\n\n    scrollTo(options): void {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollTo(options);\n        }\n        else {\n            if (this.scrollBodyViewChild.nativeElement.scrollTo) {\n                this.scrollBodyViewChild.nativeElement.scrollTo(options);\n            }\n            else {\n                this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;\n                this.scrollBodyViewChild.nativeElement.scrollTop = options.top;\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n\n        this.frozenSiblingBody = null;\n    }\n}\n\n@Directive({\n    selector: '[ttSortableColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-sortable-column]': 'isEnabled()',\n        '[class.p-highlight]': 'sorted',\n        '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n        '[attr.role]': '\"columnheader\"'\n    }\n})\nexport class TTSortableColumn implements OnInit, OnDestroy {\n\n    @Input(\"ttSortableColumn\") field: string;\n\n    @Input() ttSortableColumnDisabled: boolean;\n\n    sorted: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {\n                this.updateSortState();\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.updateSortState();\n        }\n    }\n\n    updateSortState() {\n        this.sorted = this.tt.isSorted(this.field);\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.updateSortState();\n            this.tt.sort({\n                originalEvent: event,\n                field: this.field\n            });\n\n            DomHandler.clearSelection();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKey(event: MouseEvent) {\n        this.onClick(event);\n    }\n\n    isEnabled() {\n        return this.ttSortableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-treeTableSortIcon',\n    template: `\n        <i class=\"p-sortable-column-icon pi pi-fw\" [ngClass]=\"{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}\"></i>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTSortIcon implements OnInit, OnDestroy {\n\n    @Input() field: string;\n\n    @Input() ariaLabelDesc: string;\n\n    @Input() ariaLabelAsc: string;\n\n    subscription: Subscription;\n\n    sortOrder: number;\n\n    constructor(public tt: TreeTable, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {\n            this.updateSortState();\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.updateSortState();\n    }\n\n    onClick(event){\n        event.preventDefault();\n    }\n\n    updateSortState() {\n        if (this.tt.sortMode === 'single') {\n            this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;\n        }\n        else if (this.tt.sortMode === 'multiple') {\n            let sortMeta = this.tt.getSortMeta(this.field);\n            this.sortOrder = sortMeta ? sortMeta.order: 0;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[ttResizableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTResizableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() ttResizableColumnDisabled: boolean;\n\n    resizer: HTMLSpanElement;\n\n    resizerMouseDownListener: any;\n\n    documentMouseMoveListener: any;\n\n    documentMouseUpListener: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n            this.resizer = document.createElement('span');\n            this.resizer.className = 'p-column-resizer';\n            this.el.nativeElement.appendChild(this.resizer);\n\n            this.zone.runOutsideAngular(() => {\n                this.resizerMouseDownListener = this.onMouseDown.bind(this);\n                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n            });\n        }\n    }\n\n    bindDocumentEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n            document.addEventListener('mousemove', this.documentMouseMoveListener);\n\n            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n            document.addEventListener('mouseup', this.documentMouseUpListener);\n        });\n    }\n\n    unbindDocumentEvents() {\n        if (this.documentMouseMoveListener) {\n            document.removeEventListener('mousemove', this.documentMouseMoveListener);\n            this.documentMouseMoveListener = null;\n        }\n\n        if (this.documentMouseUpListener) {\n            document.removeEventListener('mouseup', this.documentMouseUpListener);\n            this.documentMouseUpListener = null;\n        }\n    }\n\n    onMouseDown(event: Event) {\n        this.tt.onColumnResizeBegin(event);\n        this.bindDocumentEvents();\n    }\n\n    onDocumentMouseMove(event: Event) {\n        this.tt.onColumnResize(event);\n    }\n\n    onDocumentMouseUp(event: Event) {\n        this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n        this.unbindDocumentEvents();\n    }\n\n    isEnabled() {\n        return this.ttResizableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.resizerMouseDownListener) {\n            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n        }\n\n        this.unbindDocumentEvents();\n    }\n}\n\n@Directive({\n    selector: '[ttReorderableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTReorderableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() ttReorderableColumnDisabled: boolean;\n\n    dragStartListener: any;\n\n    dragOverListener: any;\n\n    dragEnterListener: any;\n\n    dragLeaveListener: any;\n\n    mouseDownListener: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragOverListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragEnterListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n            this.el.nativeElement.draggable = false;\n        else\n            this.el.nativeElement.draggable = true;\n    }\n\n    onDragStart(event) {\n        this.tt.onColumnDragStart(event, this.el.nativeElement);\n    }\n\n    onDragOver(event) {\n        event.preventDefault();\n    }\n\n    onDragEnter(event) {\n        this.tt.onColumnDragEnter(event, this.el.nativeElement);\n    }\n\n    onDragLeave(event) {\n        this.tt.onColumnDragLeave(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled()) {\n            this.tt.onColumnDrop(event, this.el.nativeElement);\n        }\n    }\n\n    isEnabled() {\n        return this.ttReorderableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n    }\n\n}\n\n@Directive({\n    selector: '[ttSelectableRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class TTSelectableRow implements OnInit, OnDestroy {\n\n    @Input(\"ttSelectableRow\") rowNode: any;\n\n    @Input() ttSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onEnterKey(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.onClick(event);\n        }\n    }\n\n    @HostListener('touchend', ['$event'])\n    onTouchEnd(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowTouchEnd(event);\n        }\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[ttSelectableRowDblClick]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class TTSelectableRowDblClick implements OnInit, OnDestroy {\n\n    @Input(\"ttSelectableRowDblClick\") rowNode: any;\n\n    @Input() ttSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('dblclick', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[ttContextMenuRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight-contextmenu]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class TTContextMenuRow {\n\n    @Input(\"ttContextMenuRow\") rowNode: any;\n\n    @Input() ttContextMenuRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, private el: ElementRef) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {\n                this.selected = this.tt.equals(this.rowNode.node, node);\n            });\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onContextMenu(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowRightClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n\n            this.el.nativeElement.focus();\n\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.ttContextMenuRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"checkbox\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}\"  role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}\"></span>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTCheckbox  {\n\n    @Input() disabled: boolean;\n\n    @Input(\"value\") rowNode: any;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.tt.isSelected(this.rowNode.node);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.tt.isSelected(this.rowNode.node);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.tt.toggleNodeWithCheckbox({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableHeaderCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event, cb.checked)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"!tt.value||tt.value.length === 0\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}\"  role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTHeaderCheckbox  {\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    disabled: boolean;\n\n    selectionChangeSubscription: Subscription;\n\n    valueChangeSubscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, private cd: ChangeDetectorRef) {\n        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n\n        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.updateCheckedState();\n    }\n\n    onClick(event: Event, checked) {\n        if (this.tt.value && this.tt.value.length > 0) {\n            this.tt.toggleNodesWithCheckbox(event, !checked);\n        }\n\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.selectionChangeSubscription) {\n            this.selectionChangeSubscription.unsubscribe();\n        }\n\n        if (this.valueChangeSubscription) {\n            this.valueChangeSubscription.unsubscribe();\n        }\n    }\n\n    updateCheckedState() {\n        this.cd.markForCheck();\n        let checked: boolean;\n        const data = this.tt.filteredNodes||this.tt.value;\n\n        if (data) {\n            for (let node of data) {\n                if (this.tt.isSelected(node)) {\n                    checked = true;\n                }\n                else  {\n                    checked = false;\n                    break;\n                }\n            }\n        }\n        else {\n            checked = false;\n        }\n\n        return checked;\n    }\n\n}\n\n@Directive({\n    selector: '[ttEditableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTEditableColumn implements AfterViewInit {\n\n    @Input(\"ttEditableColumn\") data: any;\n\n    @Input(\"ttEditableColumnField\") field: any;\n\n    @Input() ttEditableColumnDisabled: boolean;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.tt.editingCellClick = true;\n\n            if (this.tt.editingCell) {\n                if (this.tt.editingCell !== this.el.nativeElement) {\n                    if (!this.tt.isEditingCellValid()) {\n                        return;\n                    }\n\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.openCell();\n                }\n            }\n            else {\n                this.openCell();\n            }\n        }\n    }\n\n    openCell() {\n        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);\n        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n        this.tt.onEditInit.emit({ field: this.field, data: this.data});\n        this.tt.editingCellClick = true;\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');\n                if (focusable) {\n                    focusable.focus();\n                }\n            }, 50);\n        });\n    }\n\n    closeEditingCell() {\n        DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');\n        this.tt.editingCell = null;\n        this.tt.unbindDocumentEditListener();\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            //enter\n            if (event.keyCode == 13) {\n                if (this.tt.isEditingCellValid()) {\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.closeEditingCell();\n                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //escape\n            else if (event.keyCode == 27) {\n                if (this.tt.isEditingCellValid()) {\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.closeEditingCell();\n                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //tab\n            else if (event.keyCode == 9) {\n                this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n\n                if (event.shiftKey)\n                    this.moveToPreviousCell(event);\n                else\n                    this.moveToNextCell(event);\n            }\n        }\n    }\n\n    findCell(element) {\n        if (element) {\n            let cell = element;\n            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n                cell = cell.parentElement;\n            }\n\n            return cell;\n        }\n        else {\n            return null;\n        }\n    }\n\n    moveToPreviousCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findPreviousEditableColumn(currentCell);\n\n        if (targetCell) {\n            DomHandler.invokeElementMethod(targetCell, 'click');\n            event.preventDefault();\n        }\n    }\n\n    moveToNextCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findNextEditableColumn(currentCell);\n\n        if (targetCell) {\n            DomHandler.invokeElementMethod(targetCell, 'click');\n            event.preventDefault();\n        }\n    }\n\n    findPreviousEditableColumn(cell: Element) {\n        let prevCell = cell.previousElementSibling;\n\n        if (!prevCell) {\n            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;\n            if (previousRow) {\n                prevCell = previousRow.lastElementChild;\n            }\n        }\n\n        if (prevCell) {\n            if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n                return prevCell;\n            else\n                return this.findPreviousEditableColumn(prevCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumn(cell: Element) {\n        let nextCell = cell.nextElementSibling;\n\n        if (!nextCell) {\n            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;\n            if (nextRow) {\n                nextCell = nextRow.firstElementChild;\n            }\n        }\n\n        if (nextCell) {\n            if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n                return nextCell;\n            else\n                return this.findNextEditableColumn(nextCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.ttEditableColumnDisabled !== true;\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableCellEditor',\n    template: `\n        <ng-container *ngIf=\"tt.editingCell === editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTableCellEditor implements AfterContentInit {\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    inputTemplate: TemplateRef<any>;\n\n    outputTemplate: TemplateRef<any>;\n\n    constructor(public tt: TreeTable, public editableColumn: TTEditableColumn) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'input':\n                    this.inputTemplate = item.template;\n                    break;\n\n                case 'output':\n                    this.outputTemplate = item.template;\n                    break;\n            }\n        });\n    }\n}\n\n@Directive({\n    selector: '[ttRow]',\n    host: {\n        'class': 'p-element',\n        '[attr.tabindex]': '\"0\"'\n    }\n})\nexport class TTRow {\n\n    @Input('ttRow') rowNode: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        switch (event.which) {\n            //down arrow\n            case 40:\n                let nextRow = this.el.nativeElement.nextElementSibling;\n                if (nextRow) {\n                    nextRow.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //down arrow\n            case 38:\n                let prevRow = this.el.nativeElement.previousElementSibling;\n                if (prevRow) {\n                    prevRow.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //left arrow\n            case 37:\n                if (this.rowNode.node.expanded) {\n                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);\n                    this.rowNode.node.expanded = false;\n\n                    this.tt.onNodeCollapse.emit({\n                        originalEvent: event,\n                        node: this.rowNode.node\n                    });\n\n                    this.tt.updateSerializedValue();\n                    this.tt.tableService.onUIUpdate(this.tt.value);\n                    this.restoreFocus();\n                }\n            break;\n\n            //right arrow\n            case 39:\n                if (!this.rowNode.node.expanded) {\n                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);\n                    this.rowNode.node.expanded = true;\n\n                    this.tt.onNodeExpand.emit({\n                        originalEvent: event,\n                        node: this.rowNode.node\n                    });\n\n                    this.tt.updateSerializedValue();\n                    this.tt.tableService.onUIUpdate(this.tt.value);\n                    this.restoreFocus();\n                }\n            break;\n        }\n    }\n\n    restoreFocus() {\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let row = DomHandler.findSingle(this.tt.containerViewChild.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];\n                if (row) {\n                    row.focus();\n                }\n            }, 25);\n        });\n    }\n}\n\n@Component({\n    selector: 'p-treeTableToggler',\n    template: `\n        <button type=\"button\" class=\"p-treetable-toggler p-link\" (click)=\"onClick($event)\" tabindex=\"-1\" pRipple\n            [style.visibility]=\"rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'\" [style.marginLeft]=\"rowNode.level * 16 + 'px'\">\n            <i [ngClass]=\"rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'\"></i>\n        </button>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTableToggler {\n\n    @Input() rowNode: any;\n\n    constructor(public tt: TreeTable) {}\n\n    onClick(event: Event) {\n        this.rowNode.node.expanded = !this.rowNode.node.expanded;\n\n        if (this.rowNode.node.expanded) {\n            this.tt.onNodeExpand.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        }\n        else {\n            this.tt.onNodeCollapse.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        }\n\n        this.tt.updateSerializedValue();\n        this.tt.tableService.onUIUpdate(this.tt.value);\n\n        event.preventDefault();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,PaginatorModule,ScrollingModule,RippleModule],\n    exports: [TreeTable,SharedModule,TreeTableToggler,TTSortableColumn,TTSortIcon,TTResizableColumn,TTRow,TTReorderableColumn,TTSelectableRow,TTSelectableRowDblClick,TTContextMenuRow,TTCheckbox,TTHeaderCheckbox,TTEditableColumn,TreeTableCellEditor,ScrollingModule],\n    declarations: [TreeTable,TreeTableToggler,TTScrollableView,TTBody,TTSortableColumn,TTSortIcon,TTResizableColumn,TTRow,TTReorderableColumn,TTSelectableRow,TTSelectableRowDblClick,TTContextMenuRow,TTCheckbox,TTHeaderCheckbox,TTEditableColumn,TreeTableCellEditor]\n})\nexport class TreeTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,157 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const TRISTATECHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TriStateCheckbox),
+    multi: true
+};
+class TriStateCheckbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxTrueIcon = 'pi pi-check';
+        this.checkboxFalseIcon = 'pi pi-times';
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, input) {
+        if (!this.disabled && !this.readonly) {
+            this.toggle(event);
+            this.focused = true;
+            input.focus();
+        }
+    }
+    onKeydown(event) {
+        if (event.keyCode == 32) {
+            event.preventDefault();
+        }
+    }
+    onKeyup(event) {
+        if (event.keyCode == 32 && !this.readonly) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    toggle(event) {
+        if (this.value == null || this.value == undefined)
+            this.value = true;
+        else if (this.value == true)
+            this.value = false;
+        else if (this.value == false)
+            this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    setDisabledState(disabled) {
+        this.disabled = disabled;
+        this.cd.markForCheck();
+    }
+}
+TriStateCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TriStateCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TriStateCheckbox, selector: "p-triStateCheckbox", inputs: { disabled: "disabled", name: "name", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", label: "label", readonly: "readonly", checkboxTrueIcon: "checkboxTrueIcon", checkboxFalseIcon: "checkboxFalseIcon" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TRISTATECHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-triStateCheckbox',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], checkboxTrueIcon: [{
+                type: Input
+            }], checkboxFalseIcon: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class TriStateCheckboxModule {
+}
+TriStateCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TriStateCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, declarations: [TriStateCheckbox], imports: [CommonModule], exports: [TriStateCheckbox] });
+TriStateCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [TriStateCheckbox],
+                    declarations: [TriStateCheckbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TRISTATECHECKBOX_VALUE_ACCESSOR, TriStateCheckbox, TriStateCheckboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tristatecheckbox.mjs","sources":["../../src/app/components/tristatecheckbox/tristatecheckbox.ts","../../src/app/components/tristatecheckbox/primeng-tristatecheckbox.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const TRISTATECHECKBOX_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => TriStateCheckbox),\n  multi: true\n};\n\n@Component({\n    selector: 'p-triStateCheckbox',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #input type=\"text\" [attr.id]=\"inputId\" [name]=\"name\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" (keyup)=\"onKeyup($event)\" (keydown)=\"onKeydown($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [attr.aria-labelledby]=\"ariaLabelledBy\" inputmode=\"none\">\n            </div>\n            <div class=\"p-checkbox-box\" (click)=\"onClick($event,input)\"  role=\"checkbox\" [attr.aria-checked]=\"value === true\"\n                [ngClass]=\"{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''\"></span>\n            </div>\n        </div>\n        <label class=\"p-checkbox-label\" (click)=\"onClick($event,input)\"\n               [ngClass]=\"{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}\"\n               *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TriStateCheckbox implements ControlValueAccessor  {\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    @Input() disabled: boolean;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() label: string;\n\n    @Input() readonly: boolean;\n\n    @Input() checkboxTrueIcon: string = 'pi pi-check';\n\n    @Input() checkboxFalseIcon: string = 'pi pi-times';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    focused: boolean;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    onClick(event: Event, input: HTMLInputElement) {\n        if (!this.disabled && !this.readonly) {\n            this.toggle(event);\n            this.focused = true;\n            input.focus();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.keyCode == 32) {\n            event.preventDefault();\n        }\n    }\n\n    onKeyup(event: KeyboardEvent) {\n        if (event.keyCode == 32 && !this.readonly) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n\n    toggle(event: Event) {\n        if (this.value == null || this.value == undefined)\n            this.value = true;\n        else if (this.value == true)\n            this.value = false;\n        else if (this.value == false)\n            this.value = null;\n\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        })\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    setDisabledState(disabled: boolean): void {\n        this.disabled = disabled;\n        this.cd.markForCheck();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [TriStateCheckbox],\n    declarations: [TriStateCheckbox]\n})\nexport class TriStateCheckboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,202 @@
+class ObjectUtils {
+    static equals(obj1, obj2, field) {
+        if (field)
+            return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));
+        else
+            return this.equalsByValue(obj1, obj2);
+    }
+    static equalsByValue(obj1, obj2) {
+        if (obj1 === obj2)
+            return true;
+        if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {
+            var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;
+            if (arrA && arrB) {
+                length = obj1.length;
+                if (length != obj2.length)
+                    return false;
+                for (i = length; i-- !== 0;)
+                    if (!this.equalsByValue(obj1[i], obj2[i]))
+                        return false;
+                return true;
+            }
+            if (arrA != arrB)
+                return false;
+            var dateA = obj1 instanceof Date, dateB = obj2 instanceof Date;
+            if (dateA != dateB)
+                return false;
+            if (dateA && dateB)
+                return obj1.getTime() == obj2.getTime();
+            var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;
+            if (regexpA != regexpB)
+                return false;
+            if (regexpA && regexpB)
+                return obj1.toString() == obj2.toString();
+            var keys = Object.keys(obj1);
+            length = keys.length;
+            if (length !== Object.keys(obj2).length)
+                return false;
+            for (i = length; i-- !== 0;)
+                if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))
+                    return false;
+            for (i = length; i-- !== 0;) {
+                key = keys[i];
+                if (!this.equalsByValue(obj1[key], obj2[key]))
+                    return false;
+            }
+            return true;
+        }
+        return obj1 !== obj1 && obj2 !== obj2;
+    }
+    static resolveFieldData(data, field) {
+        if (data && field) {
+            if (this.isFunction(field)) {
+                return field(data);
+            }
+            else if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (let i = 0, len = fields.length; i < len; ++i) {
+                    if (value == null) {
+                        return null;
+                    }
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    static isFunction(obj) {
+        return !!(obj && obj.constructor && obj.call && obj.apply);
+    }
+    static reorderArray(value, from, to) {
+        let target;
+        if (value && from !== to) {
+            if (to >= value.length) {
+                to %= value.length;
+                from %= value.length;
+            }
+            value.splice(to, 0, value.splice(from, 1)[0]);
+        }
+    }
+    static insertIntoOrderedArray(item, index, arr, sourceArr) {
+        if (arr.length > 0) {
+            let injected = false;
+            for (let i = 0; i < arr.length; i++) {
+                let currentItemIndex = this.findIndexInList(arr[i], sourceArr);
+                if (currentItemIndex > index) {
+                    arr.splice(i, 0, item);
+                    injected = true;
+                    break;
+                }
+            }
+            if (!injected) {
+                arr.push(item);
+            }
+        }
+        else {
+            arr.push(item);
+        }
+    }
+    static findIndexInList(item, list) {
+        let index = -1;
+        if (list) {
+            for (let i = 0; i < list.length; i++) {
+                if (list[i] == item) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    static contains(value, list) {
+        if (value != null && list && list.length) {
+            for (let val of list) {
+                if (this.equals(value, val))
+                    return true;
+            }
+        }
+        return false;
+    }
+    static removeAccents(str) {
+        if (str && str.search(/[\xC0-\xFF]/g) > -1) {
+            str = str
+                .replace(/[\xC0-\xC5]/g, "A")
+                .replace(/[\xC6]/g, "AE")
+                .replace(/[\xC7]/g, "C")
+                .replace(/[\xC8-\xCB]/g, "E")
+                .replace(/[\xCC-\xCF]/g, "I")
+                .replace(/[\xD0]/g, "D")
+                .replace(/[\xD1]/g, "N")
+                .replace(/[\xD2-\xD6\xD8]/g, "O")
+                .replace(/[\xD9-\xDC]/g, "U")
+                .replace(/[\xDD]/g, "Y")
+                .replace(/[\xDE]/g, "P")
+                .replace(/[\xE0-\xE5]/g, "a")
+                .replace(/[\xE6]/g, "ae")
+                .replace(/[\xE7]/g, "c")
+                .replace(/[\xE8-\xEB]/g, "e")
+                .replace(/[\xEC-\xEF]/g, "i")
+                .replace(/[\xF1]/g, "n")
+                .replace(/[\xF2-\xF6\xF8]/g, "o")
+                .replace(/[\xF9-\xFC]/g, "u")
+                .replace(/[\xFE]/g, "p")
+                .replace(/[\xFD\xFF]/g, "y");
+        }
+        return str;
+    }
+}
+
+var lastId = 0;
+function UniqueComponentId() {
+    let prefix = 'pr_id_';
+    lastId++;
+    return `${prefix}${lastId}`;
+}
+
+function ZIndexUtils() {
+    let zIndexes = [];
+    const generateZIndex = (key, baseZIndex) => {
+        let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };
+        let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;
+        zIndexes.push({ key, value: newZIndex });
+        return newZIndex;
+    };
+    const revertZIndex = (zIndex) => {
+        zIndexes = zIndexes.filter(obj => obj.value !== zIndex);
+    };
+    const getCurrentZIndex = () => {
+        return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;
+    };
+    const getZIndex = (el) => {
+        return el ? parseInt(el.style.zIndex, 10) || 0 : 0;
+    };
+    return {
+        get: getZIndex,
+        set: (key, el, baseZIndex) => {
+            if (el) {
+                el.style.zIndex = String(generateZIndex(key, baseZIndex));
+            }
+        },
+        clear: (el) => {
+            if (el) {
+                revertZIndex(getZIndex(el));
+                el.style.zIndex = '';
+            }
+        },
+        getCurrent: () => getCurrentZIndex()
+    };
+}
+var zindexutils = ZIndexUtils();
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ObjectUtils, UniqueComponentId, zindexutils as ZIndexUtils };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-utils.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-utils.mjs","sources":["../../src/app/components/utils/objectutils.ts","../../src/app/components/utils/uniquecomponentid.ts","../../src/app/components/utils/zindexutils.ts","../../src/app/components/utils/primeng-utils.ts"],"sourcesContent":["export class ObjectUtils {\n\n    public static equals(obj1: any, obj2: any, field?: string): boolean {\n        if (field)\n            return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));\n        else\n            return this.equalsByValue(obj1, obj2);\n    }\n\n    public static equalsByValue(obj1: any, obj2: any): boolean {\n        if (obj1 === obj2) return true;\n\n        if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {\n            var arrA = Array.isArray(obj1)\n                , arrB = Array.isArray(obj2)\n                , i\n                , length\n                , key;\n\n            if (arrA && arrB) {\n                length = obj1.length;\n                if (length != obj2.length) return false;\n                for (i = length; i-- !== 0;)\n                    if (!this.equalsByValue(obj1[i], obj2[i])) return false;\n                return true;\n            }\n\n            if (arrA != arrB) return false;\n\n            var dateA = obj1 instanceof Date\n                , dateB = obj2 instanceof Date;\n            if (dateA != dateB) return false;\n            if (dateA && dateB) return obj1.getTime() == obj2.getTime();\n\n            var regexpA = obj1 instanceof RegExp\n                , regexpB = obj2 instanceof RegExp;\n            if (regexpA != regexpB) return false;\n            if (regexpA && regexpB) return obj1.toString() == obj2.toString();\n\n            var keys = Object.keys(obj1);\n            length = keys.length;\n\n            if (length !== Object.keys(obj2).length)\n                return false;\n\n            for (i = length; i-- !== 0;)\n                if (!Object.prototype.hasOwnProperty.call(obj2, keys[i])) return false;\n\n            for (i = length; i-- !== 0;) {\n                key = keys[i];\n                if (!this.equalsByValue(obj1[key], obj2[key])) return false;\n            }\n\n            return true;\n        }\n\n        return obj1 !== obj1 && obj2 !== obj2;\n    }\n\n    public static resolveFieldData(data: any, field: any): any {\n        if (data && field) {\n            if (this.isFunction(field)) {\n                return field(data);\n            }\n            else if (field.indexOf('.') == -1) {\n                return data[field];\n            }\n            else {\n                let fields: string[] = field.split('.');\n                let value = data;\n                for(let i = 0, len = fields.length; i < len; ++i) {\n                    if (value == null) {\n                        return null;\n                    }\n                    value = value[fields[i]];\n                }\n                return value;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    public static isFunction(obj: any) {\n        return !!(obj && obj.constructor && obj.call && obj.apply);\n    }\n\n    public static reorderArray(value: any[], from: number, to: number) {\n        let target: number;\n        if (value && from !== to) {\n            if (to >= value.length) {\n                to %= value.length;\n                from %= value.length;\n            }\n            value.splice(to, 0, value.splice(from, 1)[0]);\n        }\n    }\n\n    public static insertIntoOrderedArray(item: any, index: number, arr: any[], sourceArr: any[]): void {\n        if (arr.length > 0) {\n            let injected = false;\n            for(let i = 0; i < arr.length; i++) {\n                let currentItemIndex = this.findIndexInList(arr[i], sourceArr);\n                if (currentItemIndex > index) {\n                    arr.splice(i, 0, item);\n                    injected = true;\n                    break;\n                }\n            }\n\n            if (!injected) {\n                arr.push(item);\n            }\n        }\n        else {\n            arr.push(item);\n        }\n    }\n\n    public static findIndexInList(item: any, list: any): number {\n        let index: number = -1;\n\n        if (list) {\n            for(let i = 0; i < list.length; i++) {\n                if (list[i] == item) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    public static contains(value, list) {\n        if (value != null && list && list.length) {\n            for (let val of list) {\n                if (this.equals(value, val))\n                    return true;\n            }\n        }\n\n        return false;\n    }\n\n    public static removeAccents(str) {\n        if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n            str = str\n                    .replace(/[\\xC0-\\xC5]/g, \"A\")\n                    .replace(/[\\xC6]/g, \"AE\")\n                    .replace(/[\\xC7]/g, \"C\")\n                    .replace(/[\\xC8-\\xCB]/g, \"E\")\n                    .replace(/[\\xCC-\\xCF]/g, \"I\")\n                    .replace(/[\\xD0]/g, \"D\")\n                    .replace(/[\\xD1]/g, \"N\")\n                    .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n                    .replace(/[\\xD9-\\xDC]/g, \"U\")\n                    .replace(/[\\xDD]/g, \"Y\")\n                    .replace(/[\\xDE]/g, \"P\")\n                    .replace(/[\\xE0-\\xE5]/g, \"a\")\n                    .replace(/[\\xE6]/g, \"ae\")\n                    .replace(/[\\xE7]/g, \"c\")\n                    .replace(/[\\xE8-\\xEB]/g, \"e\")\n                    .replace(/[\\xEC-\\xEF]/g, \"i\")\n                    .replace(/[\\xF1]/g, \"n\")\n                    .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n                    .replace(/[\\xF9-\\xFC]/g, \"u\")\n                    .replace(/[\\xFE]/g, \"p\")\n                    .replace(/[\\xFD\\xFF]/g, \"y\");\n        }\n\n        return str;\n      }\n}\n","\nexport var lastId = 0;\n\nexport function UniqueComponentId () {\n    let prefix = 'pr_id_';\n    lastId++;\n    return `${prefix}${lastId}`;\n}","function ZIndexUtils() {\n    let zIndexes = [];\n\n    const generateZIndex = (key, baseZIndex) => {\n        let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n        let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n\n        zIndexes.push({ key, value: newZIndex });\n\n        return newZIndex;\n    }\n\n    const revertZIndex = (zIndex) => {\n        zIndexes = zIndexes.filter(obj => obj.value !== zIndex);\n    }\n\n    const getCurrentZIndex = () => {\n        return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n    }\n\n    const getZIndex = (el) => {\n        return el ? parseInt(el.style.zIndex, 10) || 0 : 0\n    }\n\n    return {\n        get: getZIndex,\n        set: (key, el, baseZIndex) => {\n            if (el) {\n                el.style.zIndex = String(generateZIndex(key, baseZIndex));\n            }\n        },\n        clear: (el) => {\n            if (el) {\n                revertZIndex(getZIndex(el));\n                el.style.zIndex = '';\n            }\n        },\n        getCurrent: () => getCurrentZIndex()\n    };\n}\n\nexport default ZIndexUtils();\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,202 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i1 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+class VirtualScroller {
+    constructor(el) {
+        this.el = el;
+        this.delay = 250;
+        this.trackBy = (index, item) => item;
+        this.onLazyLoad = new EventEmitter();
+        this._totalRecords = 0;
+        this.page = 0;
+        this._first = 0;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        console.log("totalRecords is deprecated, provide a value with the length of virtual items instead.");
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+        console.log("first property is deprecated, use scrollToIndex function to scroll a specific item.");
+    }
+    get cache() {
+        return this._cache;
+    }
+    set cache(val) {
+        this._cache = val;
+        console.log("cache is deprecated as it is always on.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'loadingItem':
+                    this.loadingItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({ first: virtualScrollOffset, rows: virtualScrollChunkSize });
+                }
+            }, this.delay);
+        }
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    //@deprecated
+    scrollTo(index, mode) {
+        this.scrollToIndex(index, mode);
+    }
+    scrollToIndex(index, mode) {
+        if (this.viewport) {
+            this.viewport.scrollToIndex(index, mode);
+        }
+    }
+}
+VirtualScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+VirtualScroller.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: VirtualScroller, selector: "p-virtualScroller", inputs: { value: "value", itemSize: "itemSize", style: "style", styleClass: "styleClass", scrollHeight: "scrollHeight", lazy: "lazy", rows: "rows", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", delay: "delay", trackBy: "trackBy", totalRecords: "totalRecords", first: "first", cache: "cache" }, outputs: { onLazyLoad: "onLazyLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-virtualScroller', template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], viewport: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], onLazyLoad: [{
+                type: Output
+            }], totalRecords: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }] } });
+class VirtualScrollerModule {
+}
+VirtualScrollerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+VirtualScrollerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, declarations: [VirtualScroller], imports: [CommonModule, ScrollingModule], exports: [VirtualScroller, SharedModule, ScrollingModule] });
+VirtualScrollerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, imports: [[CommonModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule],
+                    exports: [VirtualScroller, SharedModule, ScrollingModule],
+                    declarations: [VirtualScroller]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { VirtualScroller, VirtualScrollerModule };
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng-virtualscroller.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-virtualscroller.mjs","sources":["../../src/app/components/virtualscroller/virtualscroller.ts","../../src/app/components/virtualscroller/primeng-virtualscroller.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterContentInit,Input,Output,ViewChild,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Header,Footer,PrimeTemplate,SharedModule} from 'primeng/api';\nimport {ScrollingModule,CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {BlockableUI} from 'primeng/api';\n\n@Component({\n    selector: 'p-virtualScroller',\n    template:`\n        <div [ngClass]=\"'p-virtualscroller p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-virtualscroller-header\" *ngIf=\"header || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div #content class=\"p-virtualscroller-content\">\n                <div class=\"p-virtualscroller-list\">\n                    <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" tabindex=\"0\" [itemSize]=\"itemSize\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\" (scrolledIndexChange)=\"onScrollIndexChange($event)\">\n                        <ng-container *cdkVirtualFor=\"let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;\">\n                            <div [ngStyle]=\"{'height': itemSize + 'px'}\" class=\"p-virtualscroller-item\">\n                                <ng-container *ngTemplateOutlet=\"item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}\"></ng-container>\n                            </div>\n                        </ng-container>\n                    </cdk-virtual-scroll-viewport>\n                </div>\n            </div>\n            <div class=\"p-virtualscroller-footer\" *ngIf=\"footer || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./virtualscroller.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class VirtualScroller implements AfterContentInit,BlockableUI {\n\n    @Input() value: any[];\n\n    @Input() itemSize: number;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() scrollHeight: any;\n\n    @Input() lazy: boolean;\n\n    @Input() rows: number;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() delay: number = 250;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @ContentChild(Header) header: Header;\n\n    @ContentChild(Footer) footer: Footer;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild(CdkVirtualScrollViewport) viewport: CdkVirtualScrollViewport;\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    loadingItemTemplate: TemplateRef<any>;\n\n    _totalRecords: number = 0;\n\n    page: number = 0;\n\n    _first: number = 0;\n\n    _cache: boolean;\n\n    virtualScrollTimeout: any;\n\n    virtualPage: number;\n\n    constructor(public el: ElementRef) {}\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        console.log(\"totalRecords is deprecated, provide a value with the length of virtual items instead.\");\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val:number) {\n        this._first = val;\n        console.log(\"first property is deprecated, use scrollToIndex function to scroll a specific item.\");\n    }\n\n    @Input() get cache(): boolean {\n        return this._cache;\n    }\n    set cache(val: boolean) {\n        this._cache = val;\n        console.log(\"cache is deprecated as it is always on.\");\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'loadingItem':\n                    this.loadingItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onScrollIndexChange(index: number) {\n        if (this.lazy) {\n            if (this.virtualScrollTimeout) {\n                clearTimeout(this.virtualScrollTimeout);\n            }\n\n            this.virtualScrollTimeout = setTimeout(() => {\n                let page = Math.floor(index / this.rows);\n                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;\n                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;\n\n                if (page !== this.virtualPage) {\n                    this.virtualPage = page;\n                    this.onLazyLoad.emit({first: virtualScrollOffset, rows: virtualScrollChunkSize});\n                }\n            }, this.delay);\n        }\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    //@deprecated\n    scrollTo(index: number, mode?: ScrollBehavior): void {\n        this.scrollToIndex(index, mode);\n    }\n\n    scrollToIndex(index: number, mode?: ScrollBehavior): void {\n        if (this.viewport) {\n            this.viewport.scrollToIndex(index, mode);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ScrollingModule],\n    exports: [VirtualScroller,SharedModule,ScrollingModule],\n    declarations: [VirtualScroller]\n})\nexport class VirtualScrollerModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+var public_api = {};
+
+/**
+ * Generated bundle index. Do not edit.
+ */
Index: trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2015/primeng.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng.mjs","sources":["../../src/app/components/public_api.ts","../../src/app/components/primeng.ts"],"sourcesContent":["export default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"AAAA,iBAAe,EAAE;;ACAjB;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,324 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, PrimeTemplate, SharedModule } from 'primeng/api';
+
+let idx = 0;
+class AccordionTab {
+    constructor(accordion, changeDetector) {
+        this.changeDetector = changeDetector;
+        this.cache = true;
+        this.selectedChange = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-accordiontab-${idx++}`;
+        this.accordion = accordion;
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            if (this._selected && this.cache) {
+                this.loaded = true;
+            }
+            this.changeDetector.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.disabled) {
+            return false;
+        }
+        let index = this.findTabIndex();
+        if (this.selected) {
+            this.selected = false;
+            this.accordion.onClose.emit({ originalEvent: event, index: index });
+        }
+        else {
+            if (!this.accordion.multiple) {
+                for (var i = 0; i < this.accordion.tabs.length; i++) {
+                    this.accordion.tabs[i].selected = false;
+                    this.accordion.tabs[i].selectedChange.emit(false);
+                    this.accordion.tabs[i].changeDetector.markForCheck();
+                }
+            }
+            this.selected = true;
+            this.loaded = true;
+            this.accordion.onOpen.emit({ originalEvent: event, index: index });
+        }
+        this.selectedChange.emit(this.selected);
+        this.accordion.updateActiveIndex();
+        this.changeDetector.markForCheck();
+        event.preventDefault();
+    }
+    findTabIndex() {
+        let index = -1;
+        for (var i = 0; i < this.accordion.tabs.length; i++) {
+            if (this.accordion.tabs[i] == this) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    get hasHeaderFacet() {
+        return this.headerFacet && this.headerFacet.length > 0;
+    }
+    onKeydown(event) {
+        if (event.which === 32 || event.which === 13) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    ngOnDestroy() {
+        this.accordion.tabs.splice(this.findTabIndex(), 1);
+    }
+}
+AccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+AccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AccordionTab, selector: "p-accordionTab", inputs: { header: "header", disabled: "disabled", cache: "cache", transitionOptions: "transitionOptions", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", predicate: Header }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('tabContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionTab, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-accordionTab', template: `
+        <div class="p-accordion-tab" [ngClass]="{'p-accordion-tab-active': selected}">
+            <div class="p-accordion-header" [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}">
+                <a role="tab" class="p-accordion-header-link" (click)="toggle($event)" (keydown)="onKeydown($event)" [attr.tabindex]="disabled ? null : 0"
+                    [attr.id]="id" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="selected">
+                    <span class="p-accordion-toggle-icon" [ngClass]="selected ? accordion.collapseIcon : accordion.expandIcon"></span>
+                    <span class="p-accordion-header-text" *ngIf="!hasHeaderFacet">
+                        {{header}}
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <ng-content select="p-header" *ngIf="hasHeaderFacet"></ng-content>
+                </a>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@tabContent]="selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}"
+                role="region" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id">
+                <div class="p-accordion-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('tabContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Accordion)]
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], selectedChange: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChildren,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }] } });
+class Accordion {
+    constructor(el, changeDetector) {
+        this.el = el;
+        this.changeDetector = changeDetector;
+        this.onClose = new EventEmitter();
+        this.onOpen = new EventEmitter();
+        this.expandIcon = 'pi pi-fw pi-chevron-right';
+        this.collapseIcon = 'pi pi-fw pi-chevron-down';
+        this.activeIndexChange = new EventEmitter();
+        this.tabs = [];
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabListSubscription = this.tabList.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    initTabs() {
+        this.tabs = this.tabList.toArray();
+        this.updateSelectionState();
+        this.changeDetector.markForCheck();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        this.updateSelectionState();
+    }
+    updateSelectionState() {
+        if (this.tabs && this.tabs.length && this._activeIndex != null) {
+            for (let i = 0; i < this.tabs.length; i++) {
+                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);
+                let changed = selected !== this.tabs[i].selected;
+                if (changed) {
+                    this.tabs[i].selected = selected;
+                    this.tabs[i].selectedChange.emit(selected);
+                    this.tabs[i].changeDetector.markForCheck();
+                }
+            }
+        }
+    }
+    updateActiveIndex() {
+        let index = this.multiple ? [] : null;
+        this.tabs.forEach((tab, i) => {
+            if (tab.selected) {
+                if (this.multiple) {
+                    index.push(i);
+                }
+                else {
+                    index = i;
+                    return;
+                }
+            }
+        });
+        this.preventActiveIndexPropagation = true;
+        this.activeIndexChange.emit(index);
+    }
+    ngOnDestroy() {
+        if (this.tabListSubscription) {
+            this.tabListSubscription.unsubscribe();
+        }
+    }
+}
+Accordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Accordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Accordion, selector: "p-accordion", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", activeIndex: "activeIndex" }, outputs: { onClose: "onClose", onOpen: "onOpen", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabList", predicate: AccordionTab }], ngImport: i0, template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Accordion, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-accordion',
+                    template: `
+        <div [ngClass]="'p-accordion p-component'" [ngStyle]="style" [class]="styleClass" role="tablist">
+            <ng-content></ng-content>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], onOpen: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], tabList: [{
+                type: ContentChildren,
+                args: [AccordionTab]
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class AccordionModule {
+}
+AccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });
+AccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AccordionModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Accordion, AccordionTab, SharedModule],
+                    declarations: [Accordion, AccordionTab]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Accordion, AccordionModule, AccordionTab };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-accordion.mjs","sources":["../../src/app/components/accordion/accordion.ts","../../src/app/components/accordion/primeng-accordion.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, OnDestroy, Input, Output, EventEmitter,\n    ContentChildren, QueryList, ChangeDetectorRef, Inject, forwardRef, TemplateRef, ViewRef, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, Header, PrimeTemplate, BlockableUI } from 'primeng/api';\nimport { Subscription } from 'rxjs';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-accordionTab',\n    template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('tabContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./accordion.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class AccordionTab implements AfterContentInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() disabled: boolean;\n\n    @Input() cache: boolean = true;\n\n    @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(Header) headerFacet: QueryList<Header>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    private _selected: boolean;\n\n    @Input() get selected(): any {\n        return this._selected;\n    }\n\n    set selected(val: any) {\n        this._selected = val;\n\n        if (!this.loaded) {\n            if (this._selected && this.cache) {\n                this.loaded = true;\n            }\n\n            this.changeDetector.detectChanges();\n        }\n    }\n\n    contentTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    id: string = `p-accordiontab-${idx++}`;\n\n    loaded: boolean;\n\n    accordion: Accordion;\n\n    constructor(@Inject(forwardRef(() => Accordion)) accordion, public changeDetector: ChangeDetectorRef) {\n        this.accordion = accordion as Accordion;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.disabled) {\n            return false;\n        }\n\n        let index = this.findTabIndex();\n\n        if (this.selected) {\n            this.selected = false;\n            this.accordion.onClose.emit({ originalEvent: event, index: index });\n        }\n        else {\n            if (!this.accordion.multiple) {\n                for (var i = 0; i < this.accordion.tabs.length; i++) {\n                    this.accordion.tabs[i].selected = false;\n                    this.accordion.tabs[i].selectedChange.emit(false);\n                    this.accordion.tabs[i].changeDetector.markForCheck();\n                }\n            }\n\n            this.selected = true;\n            this.loaded = true;\n            this.accordion.onOpen.emit({ originalEvent: event, index: index });\n        }\n\n        this.selectedChange.emit(this.selected);\n        this.accordion.updateActiveIndex();\n        this.changeDetector.markForCheck();\n\n        event.preventDefault();\n    }\n\n    findTabIndex() {\n        let index = -1;\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n            if (this.accordion.tabs[i] == this) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n\n    get hasHeaderFacet(): boolean {\n        return this.headerFacet && this.headerFacet.length > 0;\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 32 || event.which === 13) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n\n    ngOnDestroy() {\n        this.accordion.tabs.splice(this.findTabIndex(), 1);\n    }\n}\n\n@Component({\n    selector: 'p-accordion',\n    template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Accordion implements BlockableUI, AfterContentInit, OnDestroy {\n\n    @Input() multiple: boolean;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOpen: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() expandIcon: string = 'pi pi-fw pi-chevron-right';\n\n    @Input() collapseIcon: string = 'pi pi-fw pi-chevron-down';\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(AccordionTab) tabList: QueryList<AccordionTab>;\n\n    tabListSubscription: Subscription;\n\n    private _activeIndex: any;\n\n    preventActiveIndexPropagation: boolean;\n\n    public tabs: AccordionTab[] = [];\n\n    constructor(public el: ElementRef, public changeDetector: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.initTabs();\n\n        this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n\n    initTabs(): any {\n        this.tabs = this.tabList.toArray();\n        this.updateSelectionState();\n        this.changeDetector.markForCheck();\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    @Input() get activeIndex(): any {\n        return this._activeIndex;\n    }\n\n    set activeIndex(val: any) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n\n        this.updateSelectionState();\n    }\n\n    updateSelectionState() {\n        if (this.tabs && this.tabs.length && this._activeIndex != null) {\n            for (let i = 0; i < this.tabs.length; i++) {\n                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);\n                let changed = selected !== this.tabs[i].selected;\n\n                if (changed) {\n                    this.tabs[i].selected = selected;\n                    this.tabs[i].selectedChange.emit(selected);\n                    this.tabs[i].changeDetector.markForCheck();\n                }\n            }\n        }\n    }\n\n    updateActiveIndex() {\n        let index: any = this.multiple ? [] : null;\n        this.tabs.forEach((tab, i) => {\n            if (tab.selected) {\n                if (this.multiple) {\n                    index.push(i);\n                }\n                else {\n                    index = i;\n                    return;\n                }\n            }\n        });\n\n        this.preventActiveIndexPropagation = true;\n        this.activeIndexChange.emit(index);\n    }\n\n    ngOnDestroy() {\n        if (this.tabListSubscription) {\n            this.tabListSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Accordion,AccordionTab,SharedModule],\n    declarations: [Accordion,AccordionTab]\n})\nexport class AccordionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,810 @@
+import * as i0 from '@angular/core';
+import { Injectable, Component, Directive, Input, NgModule } from '@angular/core';
+import { Subject } from 'rxjs';
+import { ObjectUtils } from 'primeng/utils';
+import { CommonModule } from '@angular/common';
+
+class FilterMatchMode {
+}
+FilterMatchMode.STARTS_WITH = 'startsWith';
+FilterMatchMode.CONTAINS = 'contains';
+FilterMatchMode.NOT_CONTAINS = 'notContains';
+FilterMatchMode.ENDS_WITH = 'endsWith';
+FilterMatchMode.EQUALS = 'equals';
+FilterMatchMode.NOT_EQUALS = 'notEquals';
+FilterMatchMode.IN = 'in';
+FilterMatchMode.LESS_THAN = 'lt';
+FilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';
+FilterMatchMode.GREATER_THAN = 'gt';
+FilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';
+FilterMatchMode.BETWEEN = 'between';
+FilterMatchMode.IS = 'is';
+FilterMatchMode.IS_NOT = 'isNot';
+FilterMatchMode.BEFORE = 'before';
+FilterMatchMode.AFTER = 'after';
+FilterMatchMode.DATE_IS = 'dateIs';
+FilterMatchMode.DATE_IS_NOT = 'dateIsNot';
+FilterMatchMode.DATE_BEFORE = 'dateBefore';
+FilterMatchMode.DATE_AFTER = 'dateAfter';
+
+class PrimeNGConfig {
+    constructor() {
+        this.ripple = false;
+        this.filterMatchModeOptions = {
+            text: [
+                FilterMatchMode.STARTS_WITH,
+                FilterMatchMode.CONTAINS,
+                FilterMatchMode.NOT_CONTAINS,
+                FilterMatchMode.ENDS_WITH,
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS
+            ],
+            numeric: [
+                FilterMatchMode.EQUALS,
+                FilterMatchMode.NOT_EQUALS,
+                FilterMatchMode.LESS_THAN,
+                FilterMatchMode.LESS_THAN_OR_EQUAL_TO,
+                FilterMatchMode.GREATER_THAN,
+                FilterMatchMode.GREATER_THAN_OR_EQUAL_TO
+            ],
+            date: [
+                FilterMatchMode.DATE_IS,
+                FilterMatchMode.DATE_IS_NOT,
+                FilterMatchMode.DATE_BEFORE,
+                FilterMatchMode.DATE_AFTER
+            ]
+        };
+        this.translation = {
+            startsWith: 'Starts with',
+            contains: 'Contains',
+            notContains: 'Not contains',
+            endsWith: 'Ends with',
+            equals: 'Equals',
+            notEquals: 'Not equals',
+            noFilter: 'No Filter',
+            lt: 'Less than',
+            lte: 'Less than or equal to',
+            gt: 'Greater than',
+            gte: 'Greater than or equal to',
+            is: 'Is',
+            isNot: 'Is not',
+            before: 'Before',
+            after: 'After',
+            dateIs: 'Date is',
+            dateIsNot: 'Date is not',
+            dateBefore: 'Date is before',
+            dateAfter: 'Date is after',
+            clear: 'Clear',
+            apply: 'Apply',
+            matchAll: 'Match All',
+            matchAny: 'Match Any',
+            addRule: 'Add Rule',
+            removeRule: 'Remove Rule',
+            accept: 'Yes',
+            reject: 'No',
+            choose: 'Choose',
+            upload: 'Upload',
+            cancel: 'Cancel',
+            dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+            dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+            dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+            monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+            monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+            dateFormat: 'mm/dd/yy',
+            today: 'Today',
+            weekHeader: 'Wk',
+            weak: 'Weak',
+            medium: 'Medium',
+            strong: 'Strong',
+            passwordPrompt: 'Enter a password',
+            emptyMessage: 'No results found',
+            emptyFilterMessage: 'No results found'
+        };
+        this.zIndex = {
+            modal: 1100,
+            overlay: 1000,
+            menu: 1000,
+            tooltip: 1100
+        };
+        this.translationSource = new Subject();
+        this.translationObserver = this.translationSource.asObservable();
+    }
+    getTranslation(key) {
+        return this.translation[key];
+    }
+    setTranslation(value) {
+        this.translation = { ...this.translation, ...value };
+        this.translationSource.next(this.translation);
+    }
+}
+PrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+PrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeNGConfig, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class TranslationKeys {
+}
+TranslationKeys.STARTS_WITH = 'startsWith';
+TranslationKeys.CONTAINS = 'contains';
+TranslationKeys.NOT_CONTAINS = 'notContains';
+TranslationKeys.ENDS_WITH = 'endsWith';
+TranslationKeys.EQUALS = 'equals';
+TranslationKeys.NOT_EQUALS = 'notEquals';
+TranslationKeys.NO_FILTER = 'noFilter';
+TranslationKeys.LT = 'lt';
+TranslationKeys.LTE = 'lte';
+TranslationKeys.GT = 'gt';
+TranslationKeys.GTE = 'gte';
+TranslationKeys.IS = 'is';
+TranslationKeys.IS_NOT = 'isNot';
+TranslationKeys.BEFORE = 'before';
+TranslationKeys.AFTER = 'after';
+TranslationKeys.CLEAR = 'clear';
+TranslationKeys.APPLY = 'apply';
+TranslationKeys.MATCH_ALL = 'matchAll';
+TranslationKeys.MATCH_ANY = 'matchAny';
+TranslationKeys.ADD_RULE = 'addRule';
+TranslationKeys.REMOVE_RULE = 'removeRule';
+TranslationKeys.ACCEPT = 'accept';
+TranslationKeys.REJECT = 'reject';
+TranslationKeys.CHOOSE = 'choose';
+TranslationKeys.UPLOAD = 'upload';
+TranslationKeys.CANCEL = 'cancel';
+TranslationKeys.DAY_NAMES = 'dayNames';
+TranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';
+TranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';
+TranslationKeys.MONTH_NAMES = 'monthNames';
+TranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';
+TranslationKeys.TODAY = 'today';
+TranslationKeys.WEEK_HEADER = 'weekHeader';
+TranslationKeys.WEAK = 'weak';
+TranslationKeys.MEDIUM = 'medium';
+TranslationKeys.STRONG = 'strong';
+TranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';
+TranslationKeys.EMPTY_MESSAGE = 'emptyMessage';
+TranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';
+
+var ConfirmEventType;
+(function (ConfirmEventType) {
+    ConfirmEventType[ConfirmEventType["ACCEPT"] = 0] = "ACCEPT";
+    ConfirmEventType[ConfirmEventType["REJECT"] = 1] = "REJECT";
+    ConfirmEventType[ConfirmEventType["CANCEL"] = 2] = "CANCEL";
+})(ConfirmEventType || (ConfirmEventType = {}));
+
+class ConfirmationService {
+    constructor() {
+        this.requireConfirmationSource = new Subject();
+        this.acceptConfirmationSource = new Subject();
+        this.requireConfirmation$ = this.requireConfirmationSource.asObservable();
+        this.accept = this.acceptConfirmationSource.asObservable();
+    }
+    confirm(confirmation) {
+        this.requireConfirmationSource.next(confirmation);
+        return this;
+    }
+    close() {
+        this.requireConfirmationSource.next(null);
+        return this;
+    }
+    onAccept() {
+        this.acceptConfirmationSource.next(null);
+    }
+}
+ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmationService, decorators: [{
+            type: Injectable
+        }] });
+
+class FilterService {
+    constructor() {
+        this.filters = {
+            startsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.slice(0, filterValue.length) === filterValue;
+            },
+            contains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) !== -1;
+            },
+            notContains: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue) === -1;
+            },
+            endsWith: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || filter.trim() === '') {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);
+                return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;
+            },
+            equals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() === filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            notEquals: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
+                    return false;
+                }
+                if (value === undefined || value === null) {
+                    return true;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() !== filter.getTime();
+                else
+                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);
+            },
+            in: (value, filter) => {
+                if (filter === undefined || filter === null || filter.length === 0) {
+                    return true;
+                }
+                for (let i = 0; i < filter.length; i++) {
+                    if (ObjectUtils.equals(value, filter[i])) {
+                        return true;
+                    }
+                }
+                return false;
+            },
+            between: (value, filter) => {
+                if (filter == null || filter[0] == null || filter[1] == null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime)
+                    return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();
+                else
+                    return filter[0] <= value && value <= filter[1];
+            },
+            lt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() < filter.getTime();
+                else
+                    return value < filter;
+            },
+            lte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() <= filter.getTime();
+                else
+                    return value <= filter;
+            },
+            gt: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() > filter.getTime();
+                else
+                    return value > filter;
+            },
+            gte: (value, filter, filterLocale) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                if (value.getTime && filter.getTime)
+                    return value.getTime() >= filter.getTime();
+                else
+                    return value >= filter;
+            },
+            is: (value, filter, filterLocale) => {
+                return this.filters.equals(value, filter, filterLocale);
+            },
+            isNot: (value, filter, filterLocale) => {
+                return this.filters.notEquals(value, filter, filterLocale);
+            },
+            before: (value, filter, filterLocale) => {
+                return this.filters.lt(value, filter, filterLocale);
+            },
+            after: (value, filter, filterLocale) => {
+                return this.filters.gt(value, filter, filterLocale);
+            },
+            dateIs: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() === filter.toDateString();
+            },
+            dateIsNot: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.toDateString() !== filter.toDateString();
+            },
+            dateBefore: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() < filter.getTime();
+            },
+            dateAfter: (value, filter) => {
+                if (filter === undefined || filter === null) {
+                    return true;
+                }
+                if (value === undefined || value === null) {
+                    return false;
+                }
+                return value.getTime() > filter.getTime();
+            }
+        };
+    }
+    filter(value, fields, filterValue, filterMatchMode, filterLocale) {
+        let filteredItems = [];
+        if (value) {
+            for (let item of value) {
+                for (let field of fields) {
+                    let fieldValue = ObjectUtils.resolveFieldData(item, field);
+                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {
+                        filteredItems.push(item);
+                        break;
+                    }
+                }
+            }
+        }
+        return filteredItems;
+    }
+    register(rule, fn) {
+        this.filters[rule] = fn;
+    }
+}
+FilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+FilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FilterService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class ContextMenuService {
+    constructor() {
+        this.activeItemKeyChange = new Subject();
+        this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();
+    }
+    changeKey(key) {
+        this.activeItemKey = key;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+    reset() {
+        this.activeItemKey = null;
+        this.activeItemKeyChange.next(this.activeItemKey);
+    }
+}
+ContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+ContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuService, decorators: [{
+            type: Injectable
+        }] });
+
+class MessageService {
+    constructor() {
+        this.messageSource = new Subject();
+        this.clearSource = new Subject();
+        this.messageObserver = this.messageSource.asObservable();
+        this.clearObserver = this.clearSource.asObservable();
+    }
+    add(message) {
+        if (message) {
+            this.messageSource.next(message);
+        }
+    }
+    addAll(messages) {
+        if (messages && messages.length) {
+            this.messageSource.next(messages);
+        }
+    }
+    clear(key) {
+        this.clearSource.next(key || null);
+    }
+}
+MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageService, decorators: [{
+            type: Injectable
+        }] });
+
+class OverlayService {
+    constructor() {
+        this.clickSource = new Subject();
+        this.clickObservable = this.clickSource.asObservable();
+    }
+    add(event) {
+        if (event) {
+            this.clickSource.next(event);
+        }
+    }
+}
+OverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+OverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayService, decorators: [{
+            type: Injectable,
+            args: [{ providedIn: 'root' }]
+        }] });
+
+class PrimeIcons {
+}
+PrimeIcons.ALIGN_CENTER = 'pi pi-align-center';
+PrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';
+PrimeIcons.ALIGN_LEFT = 'pi pi-align-left';
+PrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';
+PrimeIcons.AMAZON = 'pi pi-amazon';
+PrimeIcons.ANDROID = 'pi pi-android';
+PrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';
+PrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';
+PrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';
+PrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';
+PrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';
+PrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';
+PrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';
+PrimeIcons.ANGLE_UP = 'pi pi-angle-up';
+PrimeIcons.APPLE = 'pi pi-apple';
+PrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';
+PrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';
+PrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';
+PrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';
+PrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';
+PrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';
+PrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';
+PrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';
+PrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';
+PrimeIcons.ARROW_UP = 'pi pi-arrow-up';
+PrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';
+PrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';
+PrimeIcons.ARROW_H = 'pi pi-arrow-h';
+PrimeIcons.ARROW_V = 'pi pi-arrow-v';
+PrimeIcons.AT = 'pi pi-at';
+PrimeIcons.BACKWARD = 'pi pi-backward';
+PrimeIcons.BAN = 'pi pi-ban';
+PrimeIcons.BARS = 'pi pi-bars';
+PrimeIcons.BELL = 'pi pi-bell';
+PrimeIcons.BOLT = 'pi pi-bolt';
+PrimeIcons.BOOK = 'pi pi-book';
+PrimeIcons.BOOKMARK = 'pi pi-bookmark';
+PrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';
+PrimeIcons.BOX = 'pi pi-box';
+PrimeIcons.BRIEFCASE = 'pi pi-briefcase';
+PrimeIcons.BUILDING = 'pi pi-building';
+PrimeIcons.CALENDAR = 'pi pi-calendar';
+PrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';
+PrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';
+PrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';
+PrimeIcons.CAMERA = 'pi pi-camera';
+PrimeIcons.CAR = 'pi pi-car';
+PrimeIcons.CARET_DOWN = 'pi pi-caret-down';
+PrimeIcons.CARET_LEFT = 'pi pi-caret-left';
+PrimeIcons.CARET_RIGHT = 'pi pi-caret-right';
+PrimeIcons.CARET_UP = 'pi pi-caret-up';
+PrimeIcons.CHART_BAR = 'pi pi-chart-bar';
+PrimeIcons.CHART_LINE = 'pi pi-chart-line';
+PrimeIcons.CHART_PIE = 'pi pi-chart-pie';
+PrimeIcons.CHECK = 'pi pi-check';
+PrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';
+PrimeIcons.CHECK_SQUARE = 'pi pi-check-square';
+PrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';
+PrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';
+PrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';
+PrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';
+PrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';
+PrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';
+PrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';
+PrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';
+PrimeIcons.CIRCLE = 'pi pi-circle';
+PrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';
+PrimeIcons.CLOCK = 'pi pi-clock';
+PrimeIcons.CLONE = 'pi pi-clone';
+PrimeIcons.CLOUD = 'pi pi-cloud';
+PrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';
+PrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';
+PrimeIcons.CODE = 'pi pi-code';
+PrimeIcons.COG = 'pi pi-cog';
+PrimeIcons.COMMENT = 'pi pi-comment';
+PrimeIcons.COMMENTS = 'pi pi-comments';
+PrimeIcons.COMPASS = 'pi pi-compass';
+PrimeIcons.COPY = 'pi pi-copy';
+PrimeIcons.CREDIT_CARD = 'pi pi-credit-card';
+PrimeIcons.DATABASE = 'pi pi-database';
+PrimeIcons.DESKTOP = 'pi pi-desktop';
+PrimeIcons.DIRECTIONS = 'pi pi-directions';
+PrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';
+PrimeIcons.DISCORD = 'pi pi-discord';
+PrimeIcons.DOLLAR = 'pi pi-dollar';
+PrimeIcons.DOWNLOAD = 'pi pi-download';
+PrimeIcons.EJECT = 'pi pi-eject';
+PrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';
+PrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';
+PrimeIcons.ENVELOPE = 'pi pi-envelope';
+PrimeIcons.EURO = 'pi pi-euro';
+PrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';
+PrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';
+PrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';
+PrimeIcons.EYE = 'pi pi-eye';
+PrimeIcons.EYE_SLASH = 'pi pi-eye-slash';
+PrimeIcons.FACEBOOK = 'pi pi-facebook';
+PrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';
+PrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';
+PrimeIcons.FILE = 'pi pi-file';
+PrimeIcons.FILE_EXCEL = 'pi pi-file-excel';
+PrimeIcons.FILE_PDF = 'pi pi-file-pdf';
+PrimeIcons.FILTER = 'pi pi-filter';
+PrimeIcons.FILTER_FILL = 'pi pi-filter-fill';
+PrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';
+PrimeIcons.FLAG = 'pi pi-flag';
+PrimeIcons.FLAG_FILL = 'pi pi-flag-fill';
+PrimeIcons.FOLDER = 'pi pi-folder';
+PrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';
+PrimeIcons.FORWARD = 'pi pi-forward';
+PrimeIcons.GITHUB = 'pi pi-github';
+PrimeIcons.GLOBE = 'pi pi-globe';
+PrimeIcons.GOOGLE = 'pi pi-google';
+PrimeIcons.HASHTAG = 'pi pi-hashtag';
+PrimeIcons.HEART = 'pi pi-heart';
+PrimeIcons.HEART_FILL = 'pi pi-heart-fill';
+PrimeIcons.HISTORY = 'pi pi-history';
+PrimeIcons.HOME = 'pi pi-home';
+PrimeIcons.ID_CARD = 'pi pi-id-card';
+PrimeIcons.IMAGE = 'pi pi-image';
+PrimeIcons.IMAGES = 'pi pi-images';
+PrimeIcons.INBOX = 'pi pi-inbox';
+PrimeIcons.INFO = 'pi pi-info';
+PrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';
+PrimeIcons.INSTAGRAM = 'pi pi-instagram';
+PrimeIcons.KEY = 'pi pi-key';
+PrimeIcons.LINK = 'pi pi-link';
+PrimeIcons.LINKEDIN = 'pi pi-linkedin';
+PrimeIcons.LIST = 'pi pi-list';
+PrimeIcons.LOCK = 'pi pi-lock';
+PrimeIcons.LOCK_OPEN = 'pi pi-lock-open';
+PrimeIcons.MAP = 'pi pi-map';
+PrimeIcons.MAP_MARKER = 'pi pi-map-marker';
+PrimeIcons.MICROSOFT = 'pi pi-microsoft';
+PrimeIcons.MINUS = 'pi pi-minus';
+PrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';
+PrimeIcons.MOBILE = 'pi pi-mobile';
+PrimeIcons.MONEY_BILL = 'pi pi-money-bill';
+PrimeIcons.MOON = 'pi pi-moon';
+PrimeIcons.PALETTE = 'pi pi-palette';
+PrimeIcons.PAPERCLIP = 'pi pi-paperclip';
+PrimeIcons.PAUSE = 'pi pi-pause';
+PrimeIcons.PAYPAL = 'pi pi-paypal';
+PrimeIcons.PENCIL = 'pi pi-pencil';
+PrimeIcons.PERCENTAGE = 'pi pi-percentage';
+PrimeIcons.PHONE = 'pi pi-phone';
+PrimeIcons.PLAY = 'pi pi-play';
+PrimeIcons.PLUS = 'pi pi-plus';
+PrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';
+PrimeIcons.POUND = 'pi pi-pound';
+PrimeIcons.POWER_OFF = 'pi pi-power-off';
+PrimeIcons.PRIME = 'pi pi-prime';
+PrimeIcons.PRINT = 'pi pi-print';
+PrimeIcons.QRCODE = 'pi pi-qrcode';
+PrimeIcons.QUESTION = 'pi pi-question';
+PrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';
+PrimeIcons.REDDIT = 'pi pi-reddit';
+PrimeIcons.REFRESH = 'pi pi-refresh';
+PrimeIcons.REPLAY = 'pi pi-replay';
+PrimeIcons.REPLY = 'pi pi-reply';
+PrimeIcons.SAVE = 'pi pi-save';
+PrimeIcons.SEARCH = 'pi pi-search';
+PrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';
+PrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';
+PrimeIcons.SEND = 'pi pi-send';
+PrimeIcons.SERVER = 'pi pi-server';
+PrimeIcons.SHARE_ALT = 'pi pi-share-alt';
+PrimeIcons.SHIELD = 'pi pi-shield';
+PrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';
+PrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';
+PrimeIcons.SIGN_IN = 'pi pi-sign-in';
+PrimeIcons.SIGN_OUT = 'pi pi-sign-out';
+PrimeIcons.SITEMAP = 'pi pi-sitemap';
+PrimeIcons.SLACK = 'pi pi-slack';
+PrimeIcons.SLIDERS_H = 'pi pi-sliders-h';
+PrimeIcons.SLIDERS_V = 'pi pi-sliders-v';
+PrimeIcons.SORT = 'pi pi-sort';
+PrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';
+PrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';
+PrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';
+PrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';
+PrimeIcons.SORT_ALT = 'pi pi-sort-alt';
+PrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';
+PrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';
+PrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';
+PrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';
+PrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';
+PrimeIcons.SORT_DOWN = 'pi pi-sort-down';
+PrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';
+PrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';
+PrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';
+PrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';
+PrimeIcons.SORT_UP = 'pi pi-sort-up';
+PrimeIcons.SPINNER = 'pi pi-spinner';
+PrimeIcons.STAR = 'pi pi-star';
+PrimeIcons.STAR_FILL = 'pi pi-star-fill';
+PrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';
+PrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';
+PrimeIcons.STEP_FORWARD = 'pi pi-step-forward';
+PrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';
+PrimeIcons.STOP = 'pi pi-stop';
+PrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';
+PrimeIcons.SUN = 'pi pi-sun';
+PrimeIcons.SYNC = 'pi pi-sync';
+PrimeIcons.TABLE = 'pi pi-table';
+PrimeIcons.TABLET = 'pi pi-tablet';
+PrimeIcons.TAG = 'pi pi-tag';
+PrimeIcons.TAGS = 'pi pi-tags';
+PrimeIcons.TELEGRAM = 'pi pi-telegram';
+PrimeIcons.TH_LARGE = 'pi pi-th-large';
+PrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';
+PrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';
+PrimeIcons.TICKET = 'pi pi-ticket';
+PrimeIcons.TIMES = 'pi pi-times';
+PrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';
+PrimeIcons.TRASH = 'pi pi-trash';
+PrimeIcons.TWITTER = 'pi pi-twitter';
+PrimeIcons.UNDO = 'pi pi-undo';
+PrimeIcons.UNLOCK = 'pi pi-unlock';
+PrimeIcons.UPLOAD = 'pi pi-upload';
+PrimeIcons.USER = 'pi pi-user';
+PrimeIcons.USER_EDIT = 'pi pi-user-edit';
+PrimeIcons.USER_MINUS = 'pi pi-user-minus';
+PrimeIcons.USER_PLUS = 'pi pi-user-plus';
+PrimeIcons.USERS = 'pi pi-users';
+PrimeIcons.VIDEO = 'pi pi-video';
+PrimeIcons.VIMEO = 'pi pi-vimeo';
+PrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';
+PrimeIcons.VOLUME_OFF = 'pi pi-volume-off';
+PrimeIcons.VOLUME_UP = 'pi pi-volume-up';
+PrimeIcons.WALLET = 'pi pi-wallet';
+PrimeIcons.WHATSAPP = 'pi pi-whatsapp';
+PrimeIcons.WIFI = 'pi pi-wifi';
+PrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';
+PrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';
+PrimeIcons.YOUTUBE = 'pi pi-youtube';
+
+class FilterOperator {
+}
+FilterOperator.AND = 'and';
+FilterOperator.OR = 'or';
+
+class Header {
+}
+Header.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Header.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Header, selector: "p-header", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Header, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-header',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+class Footer {
+}
+Footer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Footer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Footer, selector: "p-footer", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Footer, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-footer',
+                    template: '<ng-content></ng-content>'
+                }]
+        }] });
+class PrimeTemplate {
+    constructor(template) {
+        this.template = template;
+    }
+    getType() {
+        return this.name;
+    }
+}
+PrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
+PrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PrimeTemplate, selector: "[pTemplate]", inputs: { type: "type", name: ["pTemplate", "name"] }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PrimeTemplate, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTemplate]',
+                    host: {}
+                }]
+        }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], name: [{
+                type: Input,
+                args: ['pTemplate']
+            }] } });
+class SharedModule {
+}
+SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });
+SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SharedModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Header, Footer, PrimeTemplate],
+                    declarations: [Header, Footer, PrimeTemplate]
+                }]
+        }] });
+
+class TreeDragDropService {
+    constructor() {
+        this.dragStartSource = new Subject();
+        this.dragStopSource = new Subject();
+        this.dragStart$ = this.dragStartSource.asObservable();
+        this.dragStop$ = this.dragStopSource.asObservable();
+    }
+    startDrag(event) {
+        this.dragStartSource.next(event);
+    }
+    stopDrag(event) {
+        this.dragStopSource.next(event);
+    }
+}
+TreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeDragDropService, decorators: [{
+            type: Injectable
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-api.mjs","sources":["../../src/app/components/api/filtermatchmode.ts","../../src/app/components/api/primengconfig.ts","../../src/app/components/api/translationkeys.ts","../../src/app/components/api/confirmaeventtype.ts","../../src/app/components/api/confirmationservice.ts","../../src/app/components/api/filterservice.ts","../../src/app/components/api/contextmenuservice.ts","../../src/app/components/api/messageservice.ts","../../src/app/components/api/overlayservice.ts","../../src/app/components/api/primeicons.ts","../../src/app/components/api/filteroperator.ts","../../src/app/components/api/shared.ts","../../src/app/components/api/treedragdropservice.ts","../../src/app/components/api/primeng-api.ts"],"sourcesContent":["export class FilterMatchMode {\n    public static readonly STARTS_WITH = 'startsWith';\n    public static readonly CONTAINS = 'contains';\n    public static readonly NOT_CONTAINS = 'notContains';\n    public static readonly ENDS_WITH = 'endsWith';\n    public static readonly EQUALS = 'equals';\n    public static readonly NOT_EQUALS = 'notEquals';\n    public static readonly IN = 'in';\n    public static readonly LESS_THAN = 'lt';\n    public static readonly LESS_THAN_OR_EQUAL_TO = 'lte';\n    public static readonly GREATER_THAN = 'gt';\n    public static readonly GREATER_THAN_OR_EQUAL_TO = 'gte';\n    public static readonly BETWEEN = 'between';\n    public static readonly IS = 'is';\n    public static readonly IS_NOT = 'isNot';\n    public static readonly BEFORE = 'before';\n    public static readonly AFTER = 'after';\n    public static readonly DATE_IS = 'dateIs';\n    public static readonly DATE_IS_NOT = 'dateIsNot';\n    public static readonly DATE_BEFORE = 'dateBefore';\n    public static readonly DATE_AFTER = 'dateAfter';\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FilterMatchMode } from './filtermatchmode';\nimport { Translation } from './translation';\n\n@Injectable({providedIn: 'root'})\nexport class PrimeNGConfig {\n\n    ripple: boolean = false;\n\n    filterMatchModeOptions = {\n        text: [\n            FilterMatchMode.STARTS_WITH,\n            FilterMatchMode.CONTAINS,\n            FilterMatchMode.NOT_CONTAINS,\n            FilterMatchMode.ENDS_WITH,\n            FilterMatchMode.EQUALS,\n            FilterMatchMode.NOT_EQUALS\n        ],\n        numeric: [\n            FilterMatchMode.EQUALS,\n            FilterMatchMode.NOT_EQUALS,\n            FilterMatchMode.LESS_THAN,\n            FilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n            FilterMatchMode.GREATER_THAN,\n            FilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n        ],\n        date: [\n            FilterMatchMode.DATE_IS,\n            FilterMatchMode.DATE_IS_NOT,\n            FilterMatchMode.DATE_BEFORE,\n            FilterMatchMode.DATE_AFTER\n        ]\n    };\n\n    private translation: Translation = {\n        startsWith: 'Starts with',\n        contains: 'Contains',\n        notContains: 'Not contains',\n        endsWith: 'Ends with',\n        equals: 'Equals',\n        notEquals: 'Not equals',\n        noFilter: 'No Filter',\n        lt: 'Less than',\n        lte: 'Less than or equal to',\n        gt: 'Greater than',\n        gte: 'Greater than or equal to',\n        is: 'Is',\n        isNot: 'Is not',\n        before: 'Before',\n        after: 'After',\n        dateIs: 'Date is',\n        dateIsNot: 'Date is not',\n        dateBefore: 'Date is before',\n        dateAfter: 'Date is after',\n        clear: 'Clear',\n        apply: 'Apply',\n        matchAll: 'Match All',\n        matchAny: 'Match Any',\n        addRule: 'Add Rule',\n        removeRule: 'Remove Rule',\n        accept: 'Yes',\n        reject: 'No',\n        choose: 'Choose',\n        upload: 'Upload',\n        cancel: 'Cancel',\n        dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n        dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        dayNamesMin: [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],\n        monthNames: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\n        monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n        dateFormat: 'mm/dd/yy',\n        today: 'Today',\n        weekHeader: 'Wk',\n        weak: 'Weak',\n        medium: 'Medium',\n        strong: 'Strong',\n        passwordPrompt: 'Enter a password',\n        emptyMessage: 'No results found',\n        emptyFilterMessage: 'No results found'\n    }\n\n    zIndex = {\n        modal: 1100,\n        overlay: 1000,\n        menu: 1000,\n        tooltip: 1100\n    }\n\n    private translationSource = new Subject<any>();\n\n    translationObserver = this.translationSource.asObservable();\n\n    getTranslation(key: string) {\n        return this.translation[key];\n    }\n\n    setTranslation(value: Translation) {\n        this.translation = {...this.translation, ...value};\n        this.translationSource.next(this.translation);\n    }\n}\n","export class TranslationKeys {\n    public static readonly STARTS_WITH = 'startsWith';\n    public static readonly CONTAINS = 'contains';\n    public static readonly NOT_CONTAINS = 'notContains';\n    public static readonly ENDS_WITH = 'endsWith';\n    public static readonly EQUALS = 'equals';\n    public static readonly NOT_EQUALS = 'notEquals';\n    public static readonly NO_FILTER = 'noFilter';\n    public static readonly LT = 'lt';\n    public static readonly LTE = 'lte';\n    public static readonly GT = 'gt';\n    public static readonly GTE = 'gte';\n    public static readonly IS = 'is';\n    public static readonly IS_NOT = 'isNot';\n    public static readonly BEFORE = 'before';\n    public static readonly AFTER = 'after';\n    public static readonly CLEAR = 'clear';\n    public static readonly APPLY = 'apply';\n    public static readonly MATCH_ALL = 'matchAll';\n    public static readonly MATCH_ANY = 'matchAny';\n    public static readonly ADD_RULE = 'addRule';\n    public static readonly REMOVE_RULE = 'removeRule';\n    public static readonly ACCEPT = 'accept';\n    public static readonly REJECT = 'reject';\n    public static readonly CHOOSE = 'choose';\n    public static readonly UPLOAD = 'upload';\n    public static readonly CANCEL = 'cancel';\n    public static readonly DAY_NAMES = 'dayNames';\n    public static readonly DAY_NAMES_SHORT = 'dayNamesShort';\n    public static readonly DAY_NAMES_MIN = 'dayNamesMin';\n    public static readonly MONTH_NAMES = 'monthNames';\n    public static readonly MONTH_NAMES_SHORT = 'monthNamesShort';\n    public static readonly TODAY = 'today';\n    public static readonly WEEK_HEADER = 'weekHeader';\n    public static readonly WEAK = 'weak';\n    public static readonly MEDIUM = 'medium';\n    public static readonly STRONG = 'strong';\n    public static readonly PASSWORD_PROMPT = 'passwordPrompt';\n    public static readonly EMPTY_MESSAGE = 'emptyMessage';\n    public static readonly EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n}","export enum ConfirmEventType {\n    ACCEPT, \n    REJECT, \n    CANCEL\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Confirmation } from './confirmation';\n\n@Injectable()\nexport class ConfirmationService {\n\n    private requireConfirmationSource = new Subject<Confirmation>();\n    private acceptConfirmationSource = new Subject<Confirmation>();\n\n    requireConfirmation$ = this.requireConfirmationSource.asObservable();\n    accept = this.acceptConfirmationSource.asObservable();\n\n    confirm(confirmation: Confirmation) {\n        this.requireConfirmationSource.next(confirmation);\n        return this;\n    }\n\n    close() {\n        this.requireConfirmationSource.next(null);\n        return this;\n    }\n\n    onAccept() {\n        this.acceptConfirmationSource.next(null);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Injectable({providedIn: 'root'})\nexport class FilterService {\n\n    filter(value: any[], fields: any[], filterValue: any, filterMatchMode: string, filterLocale?: string) {\n        let filteredItems: any[] = [];\n\n        if (value) {\n            for (let item of value) {\n                for (let field of fields) {\n                    let fieldValue = ObjectUtils.resolveFieldData(item, field);\n\n                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n                        filteredItems.push(item);\n                        break;\n                    }\n                }\n            }\n        }\n\n        return filteredItems;\n    }\n    \n    public filters = {\n        startsWith: (value, filter, filterLocale?):boolean =>  {\n            if (filter === undefined || filter === null || filter.trim() === '') {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.slice(0, filterValue.length) === filterValue;\n        },\n\n        contains: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue) !== -1;\n        },\n\n        notContains: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue) === -1;\n        },\n\n        endsWith: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || filter.trim() === '') {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n    \n            return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n        },\n\n        equals: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() === filter.getTime();\n            else\n                return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        },\n\n        notEquals: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                return false;\n            }\n    \n            if (value === undefined || value === null) {\n                return true;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() !== filter.getTime();\n            else\n                return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        },\n\n        in: (value, filter: any[]):boolean => {\n            if (filter === undefined || filter === null || filter.length === 0) {\n                return true;\n            }\n    \n            for (let i = 0; i < filter.length; i++) {\n                if (ObjectUtils.equals(value, filter[i])) {\n                    return true;\n                }\n            }\n    \n            return false;\n        },\n\n        between: (value, filter: any[]):boolean => {\n            if (filter == null || filter[0] == null || filter[1] == null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime)\n            return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n            else\n                return filter[0] <= value && value <= filter[1];\n        },\n\n        lt: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() < filter.getTime();\n            else\n                return value < filter;\n        },\n\n        lte: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() <= filter.getTime();\n            else\n                return value <= filter;\n        },\n\n        gt: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() > filter.getTime();\n            else\n                return value > filter;\n        },\n\n        gte: (value, filter, filterLocale?):boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n    \n            if (value.getTime && filter.getTime)\n                return value.getTime() >= filter.getTime();\n            else\n                return value >= filter;\n        },\n\n        is: (value, filter, filterLocale?):boolean => {\n            return this.filters.equals(value, filter, filterLocale);\n        },\n\n        isNot: (value, filter, filterLocale?): boolean => {\n            return this.filters.notEquals(value, filter, filterLocale);\n        },\n\n        before: (value, filter, filterLocale?): boolean => {\n            return this.filters.lt(value, filter, filterLocale);\n        },\n\n        after: (value, filter, filterLocale?): boolean => {\n            return this.filters.gt(value, filter, filterLocale);\n        },\n\n        dateIs: (value, filter): boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.toDateString() === filter.toDateString();\n        },\n\n        dateIsNot: (value, filter): boolean => {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.toDateString() !== filter.toDateString();\n        },\n\n        dateBefore: (value, filter): boolean =>  {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.getTime() < filter.getTime();\n        },\n\n        dateAfter: (value, filter): boolean =>  {\n            if (filter === undefined || filter === null) {\n                return true;\n            }\n    \n            if (value === undefined || value === null) {\n                return false;\n            }\n\n            return value.getTime() > filter.getTime();\n        }\n    \n    }\n\n    register(rule: string, fn: Function) {\n        this.filters[rule] = fn;\n    }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ContextMenuService {\n\n    private activeItemKeyChange = new Subject<string>();\n\n    activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n\n    activeItemKey: string;\n\n    changeKey(key) {\n        this.activeItemKey = key;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n\n    reset() {\n        this.activeItemKey = null;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Message } from './message';\n\n@Injectable()\nexport class MessageService {\n    \n    private messageSource = new Subject<Message|Message[]>();\n    private clearSource = new Subject<string>();\n    \n    messageObserver = this.messageSource.asObservable();\n    clearObserver = this.clearSource.asObservable();\n    \n    add(message: Message) {\n        if (message) {\n            this.messageSource.next(message);\n        }\n    }\n    \n    addAll(messages: Message[]) {\n        if (messages && messages.length) {\n            this.messageSource.next(messages);\n        } \n    }\n    \n    clear(key?: string) {\n        this.clearSource.next(key||null);\n    }\n    \n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Message } from './message';\n\n@Injectable({providedIn: 'root'})\nexport class OverlayService {\n\n    private clickSource = new Subject<Message|Message[]>();\n\n    clickObservable = this.clickSource.asObservable();\n\n    add(event) {\n        if (event) {\n            this.clickSource.next(event);\n        }\n    }\n}\n","export class PrimeIcons {\n    public static readonly ALIGN_CENTER = 'pi pi-align-center';\n    public static readonly ALIGN_JUSTIFY = 'pi pi-align-justify';\n    public static readonly ALIGN_LEFT = 'pi pi-align-left';\n    public static readonly ALIGN_RIGHT = 'pi pi-align-right';\n    public static readonly AMAZON = 'pi pi-amazon';\n    public static readonly ANDROID = 'pi pi-android';\n    public static readonly ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\n    public static readonly ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\n    public static readonly ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\n    public static readonly ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\n    public static readonly ANGLE_DOWN = 'pi pi-angle-down';\n    public static readonly ANGLE_LEFT = 'pi pi-angle-left';\n    public static readonly ANGLE_RIGHT = 'pi pi-angle-right';\n    public static readonly ANGLE_UP = 'pi pi-angle-up';\n    public static readonly APPLE = 'pi pi-apple';\n    public static readonly ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\n    public static readonly ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\n    public static readonly ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\n    public static readonly ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\n    public static readonly ARROW_DOWN = 'pi pi-arrow-down';\n    public static readonly ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\n    public static readonly ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\n    public static readonly ARROW_LEFT = 'pi pi-arrow-left';\n    public static readonly ARROW_RIGHT = 'pi pi-arrow-right';\n    public static readonly ARROW_UP = 'pi pi-arrow-up';\n    public static readonly ARROW_UP_LEFT = 'pi pi-arrow-up-left';\n    public static readonly ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\n    public static readonly ARROW_H = 'pi pi-arrow-h';\n    public static readonly ARROW_V = 'pi pi-arrow-v';\n    public static readonly AT = 'pi pi-at';\n    public static readonly BACKWARD = 'pi pi-backward';\n    public static readonly BAN = 'pi pi-ban';\n    public static readonly BARS = 'pi pi-bars';\n    public static readonly BELL = 'pi pi-bell';\n    public static readonly BOLT = 'pi pi-bolt';\n    public static readonly BOOK = 'pi pi-book';\n    public static readonly BOOKMARK = 'pi pi-bookmark';\n    public static readonly BOOKMARK_FILL = 'pi pi-bookmark-fill';\n    public static readonly BOX = 'pi pi-box';\n    public static readonly BRIEFCASE = 'pi pi-briefcase';\n    public static readonly BUILDING = 'pi pi-building';\n    public static readonly CALENDAR = 'pi pi-calendar';\n    public static readonly CALENDAR_MINUS = 'pi pi-calendar-minus';\n    public static readonly CALENDAR_PLUS = 'pi pi-calendar-plus';\n    public static readonly CALENDAR_TIMES = 'pi pi-calendar-times';\n    public static readonly CAMERA = 'pi pi-camera';\n    public static readonly CAR = 'pi pi-car';\n    public static readonly CARET_DOWN = 'pi pi-caret-down';\n    public static readonly CARET_LEFT = 'pi pi-caret-left';\n    public static readonly CARET_RIGHT = 'pi pi-caret-right';\n    public static readonly CARET_UP = 'pi pi-caret-up';\n    public static readonly CHART_BAR = 'pi pi-chart-bar';\n    public static readonly CHART_LINE = 'pi pi-chart-line';\n    public static readonly CHART_PIE = 'pi pi-chart-pie';\n    public static readonly CHECK = 'pi pi-check';\n    public static readonly CHECK_CIRCLE = 'pi pi-check-circle';\n    public static readonly CHECK_SQUARE = 'pi pi-check-square';\n    public static readonly CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\n    public static readonly CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\n    public static readonly CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\n    public static readonly CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\n    public static readonly CHEVRON_DOWN = 'pi pi-chevron-down';\n    public static readonly CHEVRON_LEFT = 'pi pi-chevron-left';\n    public static readonly CHEVRON_RIGHT = 'pi pi-chevron-right';\n    public static readonly CHEVRON_UP = 'pi pi-chevron-up';\n    public static readonly CIRCLE = 'pi pi-circle';\n    public static readonly CIRCLE_FILL = 'pi pi-circle-fill';\n    public static readonly CLOCK = 'pi pi-clock';\n    public static readonly CLONE = 'pi pi-clone';\n    public static readonly CLOUD = 'pi pi-cloud';\n    public static readonly CLOUD_DOWNLOAD = 'pi pi-cloud-download';\n    public static readonly CLOUD_UPLOAD = 'pi pi-cloud-upload';\n    public static readonly CODE = 'pi pi-code';\n    public static readonly COG = 'pi pi-cog';\n    public static readonly COMMENT = 'pi pi-comment';\n    public static readonly COMMENTS = 'pi pi-comments';\n    public static readonly COMPASS = 'pi pi-compass';\n    public static readonly COPY = 'pi pi-copy';\n    public static readonly CREDIT_CARD = 'pi pi-credit-card';\n    public static readonly DATABASE = 'pi pi-database';\n    public static readonly DESKTOP = 'pi pi-desktop';\n    public static readonly DIRECTIONS = 'pi pi-directions';\n    public static readonly DIRECTIONS_ALT = 'pi pi-directions-alt';\n    public static readonly DISCORD = 'pi pi-discord';\n    public static readonly DOLLAR = 'pi pi-dollar';\n    public static readonly DOWNLOAD = 'pi pi-download';\n    public static readonly EJECT = 'pi pi-eject';\n    public static readonly ELLIPSIS_H = 'pi pi-ellipsis-h';\n    public static readonly ELLIPSIS_V = 'pi pi-ellipsis-v';\n    public static readonly ENVELOPE = 'pi pi-envelope';\n    public static readonly EURO = 'pi pi-euro';\n    public static readonly EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\n    public static readonly EXCLAMATION_TRIANGLE  = 'pi pi-exclamation-triangle';\n    public static readonly EXTERNAL_LINK = 'pi pi-external-link';\n    public static readonly EYE = 'pi pi-eye';\n    public static readonly EYE_SLASH = 'pi pi-eye-slash';\n    public static readonly FACEBOOK = 'pi pi-facebook';\n    public static readonly FAST_BACKWARD = 'pi pi-fast-backward';\n    public static readonly FAST_FORWARD = 'pi pi-fast-forward';\n    public static readonly FILE = 'pi pi-file';\n    public static readonly FILE_EXCEL = 'pi pi-file-excel';\n    public static readonly FILE_PDF = 'pi pi-file-pdf';\n    public static readonly FILTER = 'pi pi-filter';\n    public static readonly FILTER_FILL = 'pi pi-filter-fill';\n    public static readonly FILTER_SLASH = 'pi pi-filter-slash';\n    public static readonly FLAG = 'pi pi-flag';\n    public static readonly FLAG_FILL = 'pi pi-flag-fill';\n    public static readonly FOLDER = 'pi pi-folder';\n    public static readonly FOLDER_OPEN = 'pi pi-folder-open';\n    public static readonly FORWARD = 'pi pi-forward';\n    public static readonly GITHUB = 'pi pi-github';\n    public static readonly GLOBE = 'pi pi-globe';\n    public static readonly GOOGLE = 'pi pi-google';\n    public static readonly HASHTAG = 'pi pi-hashtag';\n    public static readonly HEART = 'pi pi-heart';\n    public static readonly HEART_FILL = 'pi pi-heart-fill';\n    public static readonly HISTORY = 'pi pi-history';\n    public static readonly HOME = 'pi pi-home';\n    public static readonly ID_CARD = 'pi pi-id-card';\n    public static readonly IMAGE = 'pi pi-image';\n    public static readonly IMAGES = 'pi pi-images';\n    public static readonly INBOX = 'pi pi-inbox';\n    public static readonly INFO = 'pi pi-info';\n    public static readonly INFO_CIRCLE = 'pi pi-info-circle';\n    public static readonly INSTAGRAM = 'pi pi-instagram';\n    public static readonly KEY = 'pi pi-key';\n    public static readonly LINK = 'pi pi-link';\n    public static readonly LINKEDIN = 'pi pi-linkedin';\n    public static readonly LIST = 'pi pi-list';\n    public static readonly LOCK = 'pi pi-lock';\n    public static readonly LOCK_OPEN = 'pi pi-lock-open';\n    public static readonly MAP = 'pi pi-map';\n    public static readonly MAP_MARKER = 'pi pi-map-marker';\n    public static readonly MICROSOFT = 'pi pi-microsoft';\n    public static readonly MINUS = 'pi pi-minus';\n    public static readonly MINUS_CIRCLE = 'pi pi-minus-circle';\n    public static readonly MOBILE = 'pi pi-mobile';\n    public static readonly MONEY_BILL = 'pi pi-money-bill';\n    public static readonly MOON = 'pi pi-moon';\n    public static readonly PALETTE = 'pi pi-palette';\n    public static readonly PAPERCLIP = 'pi pi-paperclip';\n    public static readonly PAUSE = 'pi pi-pause';\n    public static readonly PAYPAL = 'pi pi-paypal';\n    public static readonly PENCIL = 'pi pi-pencil';\n    public static readonly PERCENTAGE = 'pi pi-percentage';\n    public static readonly PHONE = 'pi pi-phone';\n    public static readonly PLAY = 'pi pi-play';\n    public static readonly PLUS = 'pi pi-plus';\n    public static readonly PLUS_CIRCLE = 'pi pi-plus-circle';\n    public static readonly POUND = 'pi pi-pound';\n    public static readonly POWER_OFF = 'pi pi-power-off';\n    public static readonly PRIME = 'pi pi-prime';\n    public static readonly PRINT = 'pi pi-print';\n    public static readonly QRCODE = 'pi pi-qrcode';\n    public static readonly QUESTION = 'pi pi-question';\n    public static readonly QUESTION_CIRCLE = 'pi pi-question-circle';\n    public static readonly REDDIT = 'pi pi-reddit';\n    public static readonly REFRESH = 'pi pi-refresh';\n    public static readonly REPLAY = 'pi pi-replay';\n    public static readonly REPLY = 'pi pi-reply';\n    public static readonly SAVE = 'pi pi-save';\n    public static readonly SEARCH = 'pi pi-search';\n    public static readonly SEARCH_MINUS = 'pi pi-search-minus';\n    public static readonly SEARCH_PLUS = 'pi pi-search-plus';\n    public static readonly SEND = 'pi pi-send';\n    public static readonly SERVER = 'pi pi-server';\n    public static readonly SHARE_ALT = 'pi pi-share-alt';\n    public static readonly SHIELD = 'pi pi-shield';\n    public static readonly SHOPPING_BAG = 'pi pi-shopping-bag';\n    public static readonly SHOPPING_CART = 'pi pi-shopping-cart';\n    public static readonly SIGN_IN = 'pi pi-sign-in';\n    public static readonly SIGN_OUT = 'pi pi-sign-out';\n    public static readonly SITEMAP = 'pi pi-sitemap';\n    public static readonly SLACK = 'pi pi-slack';\n    public static readonly SLIDERS_H = 'pi pi-sliders-h';\n    public static readonly SLIDERS_V = 'pi pi-sliders-v';\n    public static readonly SORT = 'pi pi-sort';\n    public static readonly SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\n    public static readonly SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\n    public static readonly SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\n    public static readonly SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\n    public static readonly SORT_ALT = 'pi pi-sort-alt';\n    public static readonly SORT_ALT_SLASH = 'pi pi-sort-slash';\n    public static readonly SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\n    public static readonly SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\n    public static readonly SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\n    public static readonly SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\n    public static readonly SORT_DOWN = 'pi pi-sort-down';\n    public static readonly SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\n    public static readonly SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\n    public static readonly SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\n    public static readonly SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\n    public static readonly SORT_UP = 'pi pi-sort-up';\n    public static readonly SPINNER = 'pi pi-spinner';\n    public static readonly STAR = 'pi pi-star';\n    public static readonly STAR_FILL = 'pi pi-star-fill';\n    public static readonly STEP_BACKWARD = 'pi pi-step-backward';\n    public static readonly STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\n    public static readonly STEP_FORWARD = 'pi pi-step-forward';\n    public static readonly STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\n    public static readonly STOP = 'pi pi-stop';\n    public static readonly STOP_CIRCLE = 'pi pi-stop-circle';\n    public static readonly SUN = 'pi pi-sun';\n    public static readonly SYNC = 'pi pi-sync';\n    public static readonly TABLE = 'pi pi-table';\n    public static readonly TABLET = 'pi pi-tablet';\n    public static readonly TAG = 'pi pi-tag';\n    public static readonly TAGS = 'pi pi-tags';\n    public static readonly TELEGRAM = 'pi pi-telegram';\n    public static readonly TH_LARGE = 'pi pi-th-large';\n    public static readonly THUMBS_DOWN = 'pi pi-thumbs-down';\n    public static readonly THUMBS_UP = 'pi pi-thumbs-up';\n    public static readonly TICKET = 'pi pi-ticket';\n    public static readonly TIMES = 'pi pi-times';\n    public static readonly TIMES_CIRCLE = 'pi pi-times-circle';\n    public static readonly TRASH = 'pi pi-trash';\n    public static readonly TWITTER = 'pi pi-twitter';\n    public static readonly UNDO = 'pi pi-undo';\n    public static readonly UNLOCK = 'pi pi-unlock';\n    public static readonly UPLOAD = 'pi pi-upload';\n    public static readonly USER = 'pi pi-user';\n    public static readonly USER_EDIT = 'pi pi-user-edit';\n    public static readonly USER_MINUS = 'pi pi-user-minus';\n    public static readonly USER_PLUS = 'pi pi-user-plus';\n    public static readonly USERS = 'pi pi-users';\n    public static readonly VIDEO = 'pi pi-video';\n    public static readonly VIMEO = 'pi pi-vimeo';\n    public static readonly VOLUME_DOWN = 'pi pi-volume-down';\n    public static readonly VOLUME_OFF = 'pi pi-volume-off';\n    public static readonly VOLUME_UP = 'pi pi-volume-up';\n    public static readonly WALLET = 'pi pi-wallet';\n    public static readonly WHATSAPP = 'pi pi-whatsapp';\n    public static readonly WIFI = 'pi pi-wifi';\n    public static readonly WINDOW_MAXIMIZE = 'pi pi-window-maximize';\n    public static readonly WINDOW_MINIMIZE = 'pi pi-window-minimize';\n    public static readonly YOUTUBE = 'pi pi-youtube'\n}\n","export class FilterOperator {\n    public static readonly AND = 'and';\n    public static readonly OR = 'or';\n}","import {NgModule,EventEmitter,Directive,Input,Output,ContentChildren,ContentChild,TemplateRef,AfterContentInit,QueryList} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Component} from '@angular/core';\n\n@Component({\n    selector: 'p-header',\n    template: '<ng-content></ng-content>'\n})\nexport class Header {}\n\n@Component({\n    selector: 'p-footer',\n    template: '<ng-content></ng-content>'\n})\nexport class Footer {}\n\n@Directive({\n    selector: '[pTemplate]',\n    host: {\n    }\n})\nexport class PrimeTemplate {\n    \n    @Input() type: string;\n    \n    @Input('pTemplate') name: string;\n    \n    constructor(public template: TemplateRef<any>) {}\n    \n    getType(): string {\n        return this.name;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Header,Footer,PrimeTemplate],\n    declarations: [Header,Footer,PrimeTemplate]\n})\nexport class SharedModule { }\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { TreeNodeDragEvent } from './treenodedragevent';\n\n@Injectable()\nexport class TreeDragDropService {\n    \n    private dragStartSource = new Subject<TreeNodeDragEvent>();\n    private dragStopSource = new Subject<TreeNodeDragEvent>();\n    \n    dragStart$ = this.dragStartSource.asObservable();\n    dragStop$ = this.dragStopSource.asObservable();\n    \n    startDrag(event: TreeNodeDragEvent) {\n        this.dragStartSource.next(event);\n    }\n    \n    stopDrag(event: TreeNodeDragEvent) {\n        this.dragStopSource.next(event);\n    }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,965 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i2 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+const AUTOCOMPLETE_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => AutoComplete),
+    multi: true
+};
+class AutoComplete {
+    constructor(el, renderer, cd, differs, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.differs = differs;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.minLength = 1;
+        this.delay = 300;
+        this.type = 'text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.dropdownIcon = "pi pi-chevron-down";
+        this.unique = true;
+        this.completeOnFocus = false;
+        this.completeMethod = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onUnselect = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onKeyUp = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.dropdownMode = 'blank';
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autocomplete = 'off';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.overlayVisible = false;
+        this.focus = false;
+        this.inputFieldValue = null;
+        this.differ = differs.find([]).create(null);
+        this.listId = UniqueComponentId() + '_list';
+    }
+    get suggestions() {
+        return this._suggestions;
+    }
+    set suggestions(val) {
+        this._suggestions = val;
+        this.handleSuggestionsChange();
+    }
+    ngAfterViewChecked() {
+        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated
+        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {
+            setTimeout(() => {
+                if (this.overlay) {
+                    this.alignOverlay();
+                }
+            }, 1);
+            this.suggestionsUpdated = false;
+        }
+        if (this.highlightOptionChanged) {
+            setTimeout(() => {
+                if (this.overlay && this.itemsWrapper) {
+                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+                    if (listItem) {
+                        DomHandler.scrollInView(this.itemsWrapper, listItem);
+                    }
+                    if (this.virtualScroll && this.viewPort) {
+                        let range = this.viewPort.getRenderedRange();
+                        this.updateVirtualScrollSelectedIndex();
+                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                        }
+                    }
+                }
+            }, 1);
+            this.highlightOptionChanged = false;
+        }
+    }
+    handleSuggestionsChange() {
+        if (this._suggestions != null && this.loading) {
+            this.highlightOption = null;
+            if (this._suggestions.length) {
+                this.noResults = false;
+                this.show();
+                this.suggestionsUpdated = true;
+                if (this.autoHighlight) {
+                    this.highlightOption = this._suggestions[0];
+                }
+            }
+            else {
+                this.noResults = true;
+                if (this.showEmptyMessage) {
+                    this.show();
+                    this.suggestionsUpdated = true;
+                }
+                else {
+                    this.hide();
+                }
+            }
+            this.loading = false;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    updateVirtualScrollSelectedIndex() {
+        if (this.highlightOption && this.suggestions && this.suggestions.length) {
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.filled = this.value && this.value != '';
+        this.updateInputField();
+        this.cd.markForCheck();
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInput(event) {
+        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.
+        if (!this.inputKeyDown && DomHandler.isIE()) {
+            return;
+        }
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+        }
+        let value = event.target.value;
+        if (!this.multiple && !this.forceSelection) {
+            this.onModelChange(value);
+        }
+        if (value.length === 0 && !this.multiple) {
+            this.hide();
+            this.onClear.emit(event);
+            this.onModelChange(value);
+        }
+        if (value.length >= this.minLength) {
+            this.timeout = setTimeout(() => {
+                this.search(event, value);
+            }, this.delay);
+        }
+        else {
+            this.hide();
+        }
+        this.updateFilledState();
+        this.inputKeyDown = false;
+    }
+    onInputClick(event) {
+        if (this.documentClickListener) {
+            this.inputClick = true;
+        }
+    }
+    search(event, query) {
+        //allow empty string but not undefined or null
+        if (query === undefined || query === null) {
+            return;
+        }
+        this.loading = true;
+        this.completeMethod.emit({
+            originalEvent: event,
+            query: query
+        });
+    }
+    selectItem(option, focus = true) {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.multiple) {
+            this.multiInputEL.nativeElement.value = '';
+            this.value = this.value || [];
+            if (!this.isSelected(option) || !this.unique) {
+                this.value = [...this.value, option];
+                this.onModelChange(this.value);
+            }
+        }
+        else {
+            this.inputEL.nativeElement.value = this.resolveFieldData(option);
+            this.value = option;
+            this.onModelChange(this.value);
+        }
+        this.onSelect.emit(option);
+        this.updateFilledState();
+        if (focus) {
+            this.itemClicked = true;
+            this.focusInput();
+        }
+    }
+    show() {
+        if (this.multiInputEL || this.inputEL) {
+            let hasFocus = this.multiple ?
+                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :
+                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;
+            if (!this.overlayVisible && hasFocus) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';
+            }
+        }
+    }
+    resolveFieldData(value) {
+        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;
+        return data !== (null || undefined) ? data : '';
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+        else
+            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    handleDropdownClick(event) {
+        if (!this.overlayVisible) {
+            this.focusInput();
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            if (this.dropdownMode === 'blank')
+                this.search(event, '');
+            else if (this.dropdownMode === 'current')
+                this.search(event, queryValue);
+            this.onDropdownClick.emit({
+                originalEvent: event,
+                query: queryValue
+            });
+        }
+        else {
+            this.hide();
+        }
+    }
+    focusInput() {
+        if (this.multiple)
+            this.multiInputEL.nativeElement.focus();
+        else
+            this.inputEL.nativeElement.focus();
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    removeItem(item) {
+        let itemIndex = DomHandler.index(item);
+        let removedValue = this.value[itemIndex];
+        this.value = this.value.filter((val, i) => i != itemIndex);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+        this.onUnselect.emit(removedValue);
+    }
+    onKeydown(event) {
+        if (this.overlayVisible) {
+            switch (event.which) {
+                //down
+                case 40:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let nextItemIndex = highlightItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex != -1) {
+                            var nextItemIndex = highlightItemIndex + 1;
+                            if (nextItemIndex != (this.suggestions.length)) {
+                                this.highlightOption = this.suggestions[nextItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                        }
+                        else {
+                            this.highlightOption = this.suggestions[0];
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //up
+                case 38:
+                    if (this.group) {
+                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex !== -1) {
+                            let prevItemIndex = highlightItemIndex.itemIndex - 1;
+                            if (prevItemIndex >= 0) {
+                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];
+                                this.highlightOptionChanged = true;
+                            }
+                            else if (prevItemIndex < 0) {
+                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];
+                                if (prevGroup) {
+                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];
+                                    this.highlightOptionChanged = true;
+                                }
+                            }
+                        }
+                    }
+                    else {
+                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);
+                        if (highlightItemIndex > 0) {
+                            let prevItemIndex = highlightItemIndex - 1;
+                            this.highlightOption = this.suggestions[prevItemIndex];
+                            this.highlightOptionChanged = true;
+                        }
+                    }
+                    event.preventDefault();
+                    break;
+                //enter
+                case 13:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                        this.hide();
+                    }
+                    event.preventDefault();
+                    break;
+                //escape
+                case 27:
+                    this.hide();
+                    event.preventDefault();
+                    break;
+                //tab
+                case 9:
+                    if (this.highlightOption) {
+                        this.selectItem(this.highlightOption);
+                    }
+                    this.hide();
+                    break;
+            }
+        }
+        else {
+            if (event.which === 40 && this.suggestions) {
+                this.search(event, event.target.value);
+            }
+        }
+        if (this.multiple) {
+            switch (event.which) {
+                //backspace
+                case 8:
+                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {
+                        this.value = [...this.value];
+                        const removedValue = this.value.pop();
+                        this.onModelChange(this.value);
+                        this.updateFilledState();
+                        this.onUnselect.emit(removedValue);
+                    }
+                    break;
+            }
+        }
+        this.inputKeyDown = true;
+    }
+    onKeyup(event) {
+        this.onKeyUp.emit(event);
+    }
+    onInputFocus(event) {
+        if (!this.itemClicked && this.completeOnFocus) {
+            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;
+            this.search(event, queryValue);
+        }
+        this.focus = true;
+        this.onFocus.emit(event);
+        this.itemClicked = false;
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputChange(event) {
+        if (this.forceSelection) {
+            let valid = false;
+            let inputValue = event.target.value.trim();
+            if (this.suggestions) {
+                for (let suggestion of this.suggestions) {
+                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;
+                    if (itemValue && inputValue === itemValue.trim()) {
+                        valid = true;
+                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {
+                            this.selectItem(suggestion, false);
+                        }, 250);
+                        break;
+                    }
+                }
+            }
+            if (!valid) {
+                if (this.multiple) {
+                    this.multiInputEL.nativeElement.value = '';
+                }
+                else {
+                    this.value = null;
+                    this.inputEL.nativeElement.value = '';
+                }
+                this.onClear.emit(event);
+                this.onModelChange(this.value);
+                this.updateFilledState();
+            }
+        }
+    }
+    onInputPaste(event) {
+        this.onKeydown(event);
+    }
+    isSelected(val) {
+        let selected = false;
+        if (this.value && this.value.length) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    selected = true;
+                    break;
+                }
+            }
+        }
+        return selected;
+    }
+    findOptionIndex(option, suggestions) {
+        let index = -1;
+        if (suggestions) {
+            for (let i = 0; i < suggestions.length; i++) {
+                if (ObjectUtils.equals(option, suggestions[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    updateFilledState() {
+        if (this.multiple)
+            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');
+        else
+            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');
+        ;
+    }
+    updateInputField() {
+        let formattedValue = this.resolveFieldData(this.value);
+        this.inputFieldValue = formattedValue;
+        if (this.inputEL && this.inputEL.nativeElement) {
+            this.inputEL.nativeElement.value = formattedValue;
+        }
+        this.updateFilledState();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (event.which === 3) {
+                    return;
+                }
+                if (!this.inputClick && !this.isDropdownClick(event)) {
+                    this.hide();
+                }
+                this.inputClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    isDropdownClick(event) {
+        if (this.dropdown) {
+            let target = event.target;
+            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);
+        }
+        else {
+            return false;
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onHide.emit();
+    }
+    ngOnDestroy() {
+        if (this.forceSelectionUpdateModelTimeout) {
+            clearTimeout(this.forceSelectionUpdateModelTimeout);
+            this.forceSelectionUpdateModelTimeout = null;
+        }
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+AutoComplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+AutoComplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AutoComplete, selector: "p-autoComplete", inputs: { minLength: "minLength", delay: "delay", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", inputStyle: "inputStyle", inputId: "inputId", inputStyleClass: "inputStyleClass", placeholder: "placeholder", readonly: "readonly", disabled: "disabled", virtualScroll: "virtualScroll", itemSize: "itemSize", maxlength: "maxlength", name: "name", required: "required", size: "size", appendTo: "appendTo", autoHighlight: "autoHighlight", forceSelection: "forceSelection", type: "type", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", ariaLabel: "ariaLabel", dropdownAriaLabel: "dropdownAriaLabel", ariaLabelledBy: "ariaLabelledBy", dropdownIcon: "dropdownIcon", unique: "unique", group: "group", completeOnFocus: "completeOnFocus", field: "field", scrollHeight: "scrollHeight", dropdown: "dropdown", showEmptyMessage: "showEmptyMessage", dropdownMode: "dropdownMode", multiple: "multiple", tabindex: "tabindex", dataKey: "dataKey", emptyMessage: "emptyMessage", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autofocus: "autofocus", autocomplete: "autocomplete", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", suggestions: "suggestions" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onUnselect: "onUnselect", onFocus: "onFocus", onBlur: "onBlur", onDropdownClick: "onDropdownClick", onClear: "onClear", onKeyUp: "onKeyUp", onShow: "onShow", onHide: "onHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "(focus && !disabled) ||\u00A0overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEL", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputEL", first: true, predicate: ["in"], descendants: true }, { propertyName: "multiInputEL", first: true, predicate: ["multiIn"], descendants: true }, { propertyName: "multiContainerEL", first: true, predicate: ["multiContainer"], descendants: true }, { propertyName: "dropdownButton", first: true, predicate: ["ddBtn"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"], components: [{ type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoComplete, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-autoComplete', template: `
+        <span #container [ngClass]="{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}" [ngStyle]="style" [class]="styleClass">
+            <input *ngIf="!multiple" #in [attr.type]="type" [attr.id]="inputId" [ngStyle]="inputStyle" [class]="inputStyleClass" [autocomplete]="autocomplete" [attr.required]="required" [attr.name]="name"
+            class="p-autocomplete-input p-inputtext p-component" [ngClass]="{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}" [value]="inputFieldValue" aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'"
+            (click)="onInputClick($event)" (input)="onInput($event)" (keydown)="onKeydown($event)" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)"
+            [attr.placeholder]="placeholder" [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+            ><ul *ngIf="multiple" #multiContainer class="p-autocomplete-multiple-container p-component p-inputtext" [ngClass]="{'p-disabled':disabled,'p-focus':focus}" (click)="multiIn.focus()">
+                <li #token *ngFor="let val of value" class="p-autocomplete-token">
+                    <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: val}"></ng-container>
+                    <span *ngIf="!selectedItemTemplate" class="p-autocomplete-token-label">{{resolveFieldData(val)}}</span>
+                    <span  class="p-autocomplete-token-icon pi pi-times-circle" (click)="removeItem(token)" *ngIf="!disabled && !readonly"></span>
+                </li>
+                <li class="p-autocomplete-input-token">
+                    <input #multiIn [attr.type]="type" [attr.id]="inputId" [disabled]="disabled" [attr.placeholder]="(value&&value.length ? null : placeholder)" [attr.tabindex]="tabindex" [attr.maxlength]="maxlength" (input)="onInput($event)"  (click)="onInputClick($event)"
+                            (keydown)="onKeydown($event)" [readonly]="readonly" (keyup)="onKeyup($event)" [attr.autofocus]="autofocus" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (change)="onInputChange($event)" (paste)="onInputPaste($event)" [autocomplete]="autocomplete"
+                            [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-required]="required"
+                            aria-autocomplete="list" [attr.aria-controls]="listId" role="searchbox" [attr.aria-expanded]="overlayVisible" aria-haspopup="true" [attr.aria-activedescendant]="'p-highlighted-option'">
+                </li>
+            </ul>
+            <i *ngIf="loading" class="p-autocomplete-loader pi pi-spinner pi-spin"></i><button #ddBtn type="button" pButton [icon]="dropdownIcon" [attr.aria-label]="dropdownAriaLabel" class="p-autocomplete-dropdown" [disabled]="disabled" pRipple
+                (click)="handleDropdownClick($event)" *ngIf="dropdown" [attr.tabindex]="tabindex"></button>
+            <div #panel *ngIf="overlayVisible" (click)="onOverlayClick($event)" [ngClass]="['p-autocomplete-panel p-component']" [style.max-height]="virtualScroll ? 'auto' : scrollHeight" [ngStyle]="panelStyle" [class]="panelStyleClass"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ul role="listbox" [attr.id]="listId" class="p-autocomplete-items" [ngClass]="{'p-autocomplete-virtualscroll': virtualScroll}">
+                    <ng-container *ngIf="group">
+                        <ng-template ngFor let-optgroup [ngForOf]="suggestions">
+                            <li class="p-autocomplete-item-group">
+                                <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                            </li>
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                        </ng-template>
+                    </ng-container>
+                    <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: suggestions}"></ng-container>
+                    </ng-container>
+                    <ng-template #itemslist let-suggestionsToDisplay>
+                        <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                            <li role="option" *ngFor="let option of suggestionsToDisplay; let idx = index" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: idx}"></ng-container>
+                            </li>
+                        </ng-container>
+                        <ng-template #virtualScrollList>
+                            <cdk-virtual-scroll-viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !noResults">
+                                <ng-container *cdkVirtualFor="let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                    <li role="option" class="p-autocomplete-item" pRipple [ngClass]="{'p-highlight': (option === highlightOption)}" [ngStyle]="{'height': itemSize + 'px'}" [id]="highlightOption == option ? 'p-highlighted-option':''" (click)="selectItem(option)">
+                                        <span *ngIf="!itemTemplate">{{resolveFieldData(option)}}</span>
+                                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                                    </li>
+                                </ng-container>
+                            </cdk-virtual-scroll-viewport>
+                        </ng-template>
+                        <li *ngIf="noResults && showEmptyMessage" class="p-autocomplete-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ng-template>
+                </ul>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'
+                    }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { minLength: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoHighlight: [{
+                type: Input
+            }], forceSelection: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], dropdownAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], unique: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], completeOnFocus: [{
+                type: Input
+            }], completeMethod: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onUnselect: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onKeyUp: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], field: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], dropdown: [{
+                type: Input
+            }], showEmptyMessage: [{
+                type: Input
+            }], dropdownMode: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], containerEL: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputEL: [{
+                type: ViewChild,
+                args: ['in']
+            }], multiInputEL: [{
+                type: ViewChild,
+                args: ['multiIn']
+            }], multiContainerEL: [{
+                type: ViewChild,
+                args: ['multiContainer']
+            }], dropdownButton: [{
+                type: ViewChild,
+                args: ['ddBtn']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], suggestions: [{
+                type: Input
+            }] } });
+class AutoCompleteModule {
+}
+AutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], exports: [AutoComplete, SharedModule, ScrollingModule] });
+AutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AutoCompleteModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],
+                    exports: [AutoComplete, SharedModule, ScrollingModule],
+                    declarations: [AutoComplete]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-autocomplete.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-autocomplete.mjs","sources":["../../src/app/components/autocomplete/autocomplete.ts","../../src/app/components/autocomplete/primeng-autocomplete.ts"],"sourcesContent":["import {NgModule,Component,ViewChild,ElementRef,AfterViewChecked,AfterContentInit,OnDestroy,Input,Output,EventEmitter,ContentChildren,QueryList,TemplateRef,Renderer2,forwardRef,ChangeDetectorRef,IterableDiffers,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate, TranslationKeys, PrimeNGConfig, OverlayService} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId, ZIndexUtils} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => AutoComplete),\n  multi: true\n};\n\n@Component({\n    selector: 'p-autoComplete',\n    template: `\n        <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n            class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n            (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n            [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n            ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n                <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n                    <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n                    <span  class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n                </li>\n                <li class=\"p-autocomplete-input-token\">\n                    <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\"  (click)=\"onInputClick($event)\"\n                            (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n                            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n                            aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n                </li>\n            </ul>\n            <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n                (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n            <div #panel *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n                    <ng-container *ngIf=\"group\">\n                        <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n                            <li class=\"p-autocomplete-item-group\">\n                                <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                            </li>\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                        </ng-template>\n                    </ng-container>\n                    <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n                    </ng-container>\n                    <ng-template #itemslist let-suggestionsToDisplay>\n                        <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                            <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n                            </li>\n                        </ng-container>\n                        <ng-template #virtualScrollList>\n                            <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n                                <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                    <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                        <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                                    </li>\n                                </ng-container>\n                            </cdk-virtual-scroll-viewport>\n                        </ng-template>\n                        <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ng-template>\n                </ul>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n    },\n    providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./autocomplete.css']\n})\nexport class AutoComplete implements AfterViewChecked,AfterContentInit,OnDestroy,ControlValueAccessor {\n\n    @Input() minLength: number = 1;\n\n    @Input() delay: number = 300;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputId: string;\n\n    @Input() inputStyleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() readonly: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() maxlength: number;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() size: number;\n\n    @Input() appendTo: any;\n\n    @Input() autoHighlight: boolean;\n\n    @Input() forceSelection: boolean;\n\n    @Input() type: string = 'text';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() ariaLabel: string;\n\n    @Input() dropdownAriaLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() dropdownIcon: string = \"pi pi-chevron-down\";\n\n    @Input() unique: boolean = true;\n\n    @Input() group: boolean;\n\n    @Input() completeOnFocus: boolean = false;\n\n    @Output() completeMethod: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n\t@Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeyUp: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Input() field: string;\n\n    @Input() scrollHeight: string = '200px';\n\n    @Input() dropdown: boolean;\n\n    @Input() showEmptyMessage: boolean;\n\n    @Input() dropdownMode: string = 'blank';\n\n    @Input() multiple: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() dataKey: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() autofocus: boolean;\n\n    @Input() autocomplete: string = 'off';\n\n    @Input() optionGroupChildren: string;\n\n    @Input() optionGroupLabel: string;\n\n    @ViewChild('container') containerEL: ElementRef;\n\n    @ViewChild('in') inputEL: ElementRef;\n\n    @ViewChild('multiIn') multiInputEL: ElementRef;\n\n    @ViewChild('multiContainer') multiContainerEL: ElementRef;\n\n    @ViewChild('ddBtn') dropdownButton: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    overlay: HTMLDivElement;\n\n    itemsWrapper: HTMLDivElement;\n\n    itemTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    selectedItemTemplate: TemplateRef<any>;\n\n    groupTemplate: TemplateRef<any>;\n\n    value: any;\n\n    _suggestions: any[];\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    timeout: any;\n\n    overlayVisible: boolean = false;\n\n    documentClickListener: any;\n\n    suggestionsUpdated: boolean;\n\n    highlightOption: any;\n\n    highlightOptionChanged: boolean;\n\n    focus: boolean = false;\n\n    filled: boolean;\n\n    inputClick: boolean;\n\n    inputKeyDown: boolean;\n\n    noResults: boolean;\n\n    differ: any;\n\n    inputFieldValue: string = null;\n\n    loading: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    forceSelectionUpdateModelTimeout: any;\n\n    listId: string;\n\n    itemClicked: boolean;\n\n    virtualScrollSelectedIndex: number;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public differs: IterableDiffers, public config: PrimeNGConfig, public overlayService: OverlayService) {\n        this.differ = differs.find([]).create(null);\n        this.listId = UniqueComponentId() + '_list';\n    }\n\n    @Input() get suggestions(): any[] {\n        return this._suggestions;\n    }\n\n    set suggestions(val:any[]) {\n        this._suggestions = val;\n        this.handleSuggestionsChange();\n    }\n\n    ngAfterViewChecked() {\n        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n            setTimeout(() => {\n                if (this.overlay) {\n                    this.alignOverlay();\n                }\n            }, 1);\n            this.suggestionsUpdated = false;\n        }\n\n        if (this.highlightOptionChanged) {\n            setTimeout(() => {\n                if (this.overlay && this.itemsWrapper) {\n                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n\n                    if (listItem) {\n                        DomHandler.scrollInView(this.itemsWrapper, listItem);\n                    }\n\n                    if (this.virtualScroll && this.viewPort) {\n                        let range = this.viewPort.getRenderedRange();\n                        this.updateVirtualScrollSelectedIndex();\n\n                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n                        }\n                    }\n                }\n            }, 1);\n            this.highlightOptionChanged = false;\n        }\n    }\n\n    handleSuggestionsChange() {\n        if (this._suggestions != null && this.loading) {\n            this.highlightOption = null;\n            if (this._suggestions.length) {\n                this.noResults = false;\n                this.show();\n                this.suggestionsUpdated = true;\n\n                if (this.autoHighlight) {\n                    this.highlightOption = this._suggestions[0];\n                }\n            }\n            else {\n                this.noResults = true;\n\n                if (this.showEmptyMessage) {\n                    this.show();\n                    this.suggestionsUpdated = true;\n                }\n                else {\n                    this.hide();\n                }\n            }\n\n            this.loading = false;\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'selectedItem':\n                    this.selectedItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    updateVirtualScrollSelectedIndex() {\n        if (this.highlightOption && this.suggestions && this.suggestions.length) {\n            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.filled = this.value && this.value != '';\n        this.updateInputField();\n        this.cd.markForCheck();\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onInput(event: Event) {\n        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n        if (!this.inputKeyDown && DomHandler.isIE()) {\n            return;\n        }\n\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n        }\n\n        let value = (<HTMLInputElement> event.target).value;\n        if (!this.multiple && !this.forceSelection) {\n            this.onModelChange(value);\n        }\n\n        if (value.length === 0 && !this.multiple) {\n            this.hide();\n            this.onClear.emit(event);\n\t        this.onModelChange(value);\n        }\n\n        if (value.length >= this.minLength) {\n            this.timeout = setTimeout(() => {\n                this.search(event, value);\n            }, this.delay);\n        }\n        else {\n            this.hide();\n        }\n        this.updateFilledState();\n        this.inputKeyDown = false;\n    }\n\n    onInputClick(event: MouseEvent) {\n        if (this.documentClickListener) {\n            this.inputClick = true;\n        }\n    }\n\n    search(event: any, query: string) {\n        //allow empty string but not undefined or null\n       if (query === undefined || query === null) {\n           return;\n       }\n\n       this.loading = true;\n\n       this.completeMethod.emit({\n           originalEvent: event,\n           query: query\n       });\n    }\n\n    selectItem(option: any, focus: boolean = true) {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n\n        if (this.multiple) {\n            this.multiInputEL.nativeElement.value = '';\n            this.value = this.value||[];\n            if (!this.isSelected(option) || !this.unique) {\n                this.value = [...this.value,option];\n                this.onModelChange(this.value);\n            }\n        }\n        else {\n            this.inputEL.nativeElement.value =  this.resolveFieldData(option);\n            this.value = option;\n            this.onModelChange(this.value);\n        }\n\n        this.onSelect.emit(option);\n        this.updateFilledState();\n\n        if (focus) {\n            this.itemClicked = true;\n            this.focusInput();\n        }\n    }\n\n    show() {\n        if (this.multiInputEL || this.inputEL) {\n            let hasFocus = this.multiple ?\n                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n            if (!this.overlayVisible && hasFocus) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n                this.appendOverlay();\n\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n                }\n\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n                this.onShow.emit(event);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n            }\n        }\n    }\n\n    resolveFieldData(value) {\n        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n        return data !== (null || undefined) ? data : '';\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n        else\n            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    handleDropdownClick(event) {\n        if (!this.overlayVisible) {\n            this.focusInput();\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n\n            if (this.dropdownMode === 'blank')\n                this.search(event, '');\n            else if (this.dropdownMode === 'current')\n                this.search(event, queryValue);\n\n            this.onDropdownClick.emit({\n                originalEvent: event,\n                query: queryValue\n            });\n        }\n        else {\n            this.hide();\n        }\n    }\n\n    focusInput() {\n        if (this.multiple)\n            this.multiInputEL.nativeElement.focus();\n        else\n            this.inputEL.nativeElement.focus();\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    removeItem(item: any) {\n        let itemIndex = DomHandler.index(item);\n        let removedValue = this.value[itemIndex];\n        this.value = this.value.filter((val, i) => i!=itemIndex);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n        this.onUnselect.emit(removedValue);\n    }\n\n    onKeydown(event) {\n        if (this.overlayVisible) {\n            switch(event.which) {\n                //down\n                case 40:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex !== -1) {\n                            let nextItemIndex = highlightItemIndex.itemIndex + 1;\n                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex != -1) {\n                            var nextItemIndex = highlightItemIndex + 1;\n                            if (nextItemIndex != (this.suggestions.length)) {\n                                this.highlightOption = this.suggestions[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.suggestions[0];\n                        }\n                    }\n\n                    event.preventDefault();\n                break;\n\n                //up\n                case 38:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex !== -1) {\n                            let prevItemIndex = highlightItemIndex.itemIndex - 1;\n                            if (prevItemIndex >= 0) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (prevItemIndex < 0) {\n                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n                                if (prevGroup) {\n                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n                                    this.highlightOptionChanged = true;\n                                }\n                            }\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n                        if (highlightItemIndex > 0) {\n                            let prevItemIndex = highlightItemIndex - 1;\n                            this.highlightOption = this.suggestions[prevItemIndex];\n                            this.highlightOptionChanged = true;\n                        }\n                    }\n\n                    event.preventDefault();\n                break;\n\n                //enter\n                case 13:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                        this.hide();\n                    }\n                    event.preventDefault();\n                break;\n\n                //escape\n                case 27:\n                    this.hide();\n                    event.preventDefault();\n                break;\n\n\n                //tab\n                case 9:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                    }\n                    this.hide();\n                break;\n            }\n        } else {\n            if (event.which === 40 && this.suggestions) {\n                this.search(event,event.target.value);\n            }\n        }\n\n        if (this.multiple) {\n            switch(event.which) {\n                //backspace\n                case 8:\n                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n                        this.value = [...this.value];\n                        const removedValue = this.value.pop();\n                        this.onModelChange(this.value);\n                        this.updateFilledState();\n                        this.onUnselect.emit(removedValue);\n                    }\n                break;\n            }\n        }\n\n        this.inputKeyDown = true;\n    }\n\n    onKeyup(event) {\n        this.onKeyUp.emit(event);\n    }\n\n    onInputFocus(event) {\n        if (!this.itemClicked && this.completeOnFocus ) {\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n            this.search(event, queryValue);\n        }\n\n        this.focus = true;\n        this.onFocus.emit(event);\n        this.itemClicked = false;\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputChange(event) {\n        if (this.forceSelection) {\n            let valid = false;\n            let inputValue = event.target.value.trim();\n\n            if (this.suggestions)  {\n                for (let suggestion of this.suggestions) {\n                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n                    if (itemValue && inputValue === itemValue.trim()) {\n                        valid = true;\n                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n                            this.selectItem(suggestion, false);\n                        }, 250);\n                        break;\n                    }\n                }\n            }\n\n            if (!valid) {\n                if (this.multiple) {\n                    this.multiInputEL.nativeElement.value = '';\n                }\n                else {\n                    this.value = null;\n                    this.inputEL.nativeElement.value = '';\n                }\n\n                this.onClear.emit(event);\n                this.onModelChange(this.value);\n                this.updateFilledState();\n            }\n        }\n    }\n\n    onInputPaste(event: ClipboardEvent) {\n        this.onKeydown(event);\n    }\n\n    isSelected(val: any): boolean {\n        let selected: boolean = false;\n        if (this.value && this.value.length) {\n            for (let i = 0; i < this.value.length; i++) {\n                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n                    selected = true;\n                    break;\n                }\n            }\n        }\n        return selected;\n    }\n\n    findOptionIndex(option, suggestions): number {\n        let index: number = -1;\n        if (suggestions) {\n            for (let i = 0; i < suggestions.length; i++) {\n                if (ObjectUtils.equals(option, suggestions[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    findOptionGroupIndex(val: any, opts: any[]): any {\n        let groupIndex, itemIndex;\n\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                groupIndex = i;\n                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n                if (itemIndex !== -1) {\n                    break;\n                }\n            }\n        }\n\n        if (itemIndex !== -1) {\n            return {groupIndex: groupIndex, itemIndex: itemIndex};\n        }\n        else {\n            return -1;\n        }\n    }\n\n    updateFilledState() {\n        if (this.multiple)\n            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n        else\n            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');;\n    }\n\n    updateInputField() {\n        let formattedValue = this.resolveFieldData(this.value);\n        this.inputFieldValue = formattedValue;\n\n        if (this.inputEL && this.inputEL.nativeElement) {\n            this.inputEL.nativeElement.value = formattedValue;\n        }\n\n        this.updateFilledState();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (event.which === 3) {\n                    return;\n                }\n\n                if (!this.inputClick && !this.isDropdownClick(event)) {\n                    this.hide();\n                }\n\n                this.inputClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    isDropdownClick(event) {\n        if (this.dropdown) {\n            let target = event.target;\n            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n        }\n        else {\n            return false;\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.onHide.emit();\n    }\n\n    ngOnDestroy() {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule,ButtonModule,SharedModule,RippleModule,ScrollingModule],\n    exports: [AutoComplete,SharedModule,ScrollingModule],\n    declarations: [AutoComplete]\n})\nexport class AutoCompleteModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Avatar {
+    constructor() {
+        this.size = "normal";
+        this.shape = "square";
+    }
+    containerClass() {
+        return {
+            'p-avatar p-component': true,
+            'p-avatar-image': this.image != null,
+            'p-avatar-circle': this.shape === 'circle',
+            'p-avatar-lg': this.size === 'large',
+            'p-avatar-xl': this.size === 'xlarge'
+        };
+    }
+}
+Avatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Avatar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Avatar, selector: "p-avatar", inputs: { label: "label", icon: "icon", image: "image", size: "size", shape: "shape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, isInline: true, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Avatar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatar', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-avatar-text" *ngIf="label; else iconTemplate">{{label}}</span>
+            <ng-template #iconTemplate><span [class]="icon" [ngClass]="'p-avatar-icon'" *ngIf="icon; else imageTemplate"></span></ng-template>
+            <ng-template #imageTemplate><img [src]="image" *ngIf="image"></ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem}.p-avatar.p-avatar-image{background-color:transparent}.p-avatar.p-avatar-circle{border-radius:50%;overflow:hidden}.p-avatar .p-avatar-icon{font-size:1rem}.p-avatar img{width:100%;height:100%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class AvatarModule {
+}
+AvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, declarations: [Avatar], imports: [CommonModule], exports: [Avatar] });
+AvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Avatar],
+                    declarations: [Avatar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Avatar, AvatarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-avatar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-avatar.mjs","sources":["../../src/app/components/avatar/avatar.ts","../../src/app/components/avatar/primeng-avatar.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-avatar',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n            <span class=\"p-avatar-text\" *ngIf=\"label; else iconTemplate\">{{label}}</span>\n            <ng-template #iconTemplate><span [class]=\"icon\" [ngClass]=\"'p-avatar-icon'\" *ngIf=\"icon; else imageTemplate\"></span></ng-template>\n            <ng-template #imageTemplate><img [src]=\"image\" *ngIf=\"image\"></ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./avatar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Avatar {\n\n    @Input() label: string;\n\n    @Input() icon: string;\n\n    @Input() image: string;\n\n    @Input() size: string = \"normal\";\n\n    @Input() shape: string = \"square\";\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    containerClass() {\n        return {\n            'p-avatar p-component': true,\n            'p-avatar-image': this.image != null,\n            'p-avatar-circle': this.shape === 'circle',\n            'p-avatar-lg': this.size === 'large',\n            'p-avatar-xl': this.size === 'xlarge'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Avatar],\n    declarations: [Avatar]\n})\nexport class AvatarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAoBa,MAAM;IAjBnB;QAyBa,SAAI,GAAW,QAAQ,CAAC;QAExB,UAAK,GAAW,QAAQ,CAAC;KAerC;IATG,cAAc;QACV,OAAO;YACH,sBAAsB,EAAE,IAAI;YAC5B,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACpC,iBAAiB,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC1C,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;YACpC,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;SACxC,CAAC;KACL;;mGAxBQ,MAAM;uFAAN,MAAM,yNAfL;;;;;;;KAOT;2FAQQ,MAAM;kBAjBlB,SAAS;+BACI,UAAU,YACV;;;;;;;KAOT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;;MAkBG,YAAY;;yGAAZ,YAAY;0GAAZ,YAAY,iBAhCZ,MAAM,aA4BL,YAAY,aA5Bb,MAAM;0GAgCN,YAAY,YAJZ,CAAC,YAAY,CAAC;2FAId,YAAY;kBALxB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,YAAY,EAAE,CAAC,MAAM,CAAC;iBACzB;;;ACnDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,46 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class AvatarGroup {
+}
+AvatarGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
+AvatarGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: AvatarGroup, selector: "p-avatarGroup", inputs: { styleClass: "styleClass", style: "style" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, isInline: true, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-avatarGroup', template: `
+        <div [ngClass]="'p-avatar-group p-component'" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-avatar-group p-avatar+p-avatar{margin-left:-1rem}.p-avatar-group{display:flex;align-items:center}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }] } });
+class AvatarGroupModule {
+}
+AvatarGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+AvatarGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, declarations: [AvatarGroup], imports: [CommonModule], exports: [AvatarGroup] });
+AvatarGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: AvatarGroupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [AvatarGroup],
+                    declarations: [AvatarGroup]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { AvatarGroup, AvatarGroupModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-avatargroup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-avatargroup.mjs","sources":["../../src/app/components/avatargroup/avatargroup.ts","../../src/app/components/avatargroup/primeng-avatargroup.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-avatarGroup',\n    template: `\n        <div [ngClass]=\"'p-avatar-group p-component'\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./avatargroup.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class AvatarGroup {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [AvatarGroup],\n    declarations: [AvatarGroup]\n})\nexport class AvatarGroupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAiBa,WAAW;;wGAAX,WAAW;4FAAX,WAAW,kJAZV;;;;KAIT;2FAQQ,WAAW;kBAdvB,SAAS;+BACI,eAAe,YACf;;;;KAIT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;;MAQG,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBAZjB,WAAW,aAQV,YAAY,aARb,WAAW;+GAYX,iBAAiB,YAJjB,CAAC,YAAY,CAAC;2FAId,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AC5BD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,141 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { UniqueComponentId } from 'primeng/utils';
+
+class BadgeDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+    }
+    ngAfterViewInit() {
+        this.id = UniqueComponentId() + '_badge';
+        let el = this.el.nativeElement.nodeName.indexOf("-") != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;
+        let badge = document.createElement('span');
+        badge.id = this.id;
+        badge.className = 'p-badge p-component';
+        if (this.severity) {
+            DomHandler.addClass(badge, 'p-badge-' + this.severity);
+        }
+        if (this.value != null) {
+            badge.appendChild(document.createTextNode(this.value));
+            if (String(this.value).length === 1) {
+                DomHandler.addClass(badge, 'p-badge-no-gutter');
+            }
+        }
+        else {
+            DomHandler.addClass(badge, 'p-badge-dot');
+        }
+        DomHandler.addClass(el, 'p-overlay-badge');
+        el.appendChild(badge);
+        this.initialized = true;
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        if (val !== this._value) {
+            this._value = val;
+            if (this.initialized) {
+                let badge = document.getElementById(this.id);
+                if (this._value) {
+                    if (DomHandler.hasClass(badge, 'p-badge-dot'))
+                        DomHandler.removeClass(badge, 'p-badge-dot');
+                    if (String(this._value).length === 1) {
+                        DomHandler.addClass(badge, 'p-badge-no-gutter');
+                    }
+                    else {
+                        DomHandler.removeClass(badge, 'p-badge-no-gutter');
+                    }
+                }
+                else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {
+                    DomHandler.addClass(badge, 'p-badge-dot');
+                }
+                badge.innerHTML = '';
+                badge.appendChild(document.createTextNode(this._value));
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+BadgeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+BadgeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: BadgeDirective, selector: "[pBadge]", inputs: { iconPos: "iconPos", value: "value", severity: "severity" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pBadge]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }] } });
+class Badge {
+    containerClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,
+            'p-badge-lg': this.size === 'large',
+            'p-badge-xl': this.size === 'xlarge',
+            'p-badge-info': this.severity === 'info',
+            'p-badge-success': this.severity === 'success',
+            'p-badge-warning': this.severity === 'warning',
+            'p-badge-danger': this.severity === 'danger'
+        };
+    }
+}
+Badge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Badge.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Badge, selector: "p-badge", inputs: { styleClass: "styleClass", style: "style", size: "size", severity: "severity", value: "value" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, isInline: true, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Badge, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-badge', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+                {{value}}
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+class BadgeModule {
+}
+BadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, declarations: [Badge, BadgeDirective], imports: [CommonModule], exports: [Badge, BadgeDirective, SharedModule] });
+BadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BadgeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Badge, BadgeDirective, SharedModule],
+                    declarations: [Badge, BadgeDirective]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Badge, BadgeDirective, BadgeModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-badge.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-badge.mjs","sources":["../../src/app/components/badge/badge.ts","../../src/app/components/badge/primeng-badge.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, QueryList, ContentChildren, TemplateRef, Directive, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { UniqueComponentId } from 'primeng/utils';\n\n@Directive({\n    selector: '[pBadge]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class BadgeDirective implements AfterViewInit, OnDestroy {\n\n    @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n\n    public _value: string;\n\n    public initialized: boolean;\n\n    private id: string;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        this.id = UniqueComponentId() + '_badge';\n        let el = this.el.nativeElement.nodeName.indexOf(\"-\") != -1 ? this.el.nativeElement.firstChild : this.el.nativeElement;\n\n        let badge = document.createElement('span');\n        badge.id = this.id ;\n        badge.className = 'p-badge p-component';\n\n        if (this.severity) {\n            DomHandler.addClass(badge, 'p-badge-' + this.severity);\n        }\n\n        if (this.value != null) {\n            badge.appendChild(document.createTextNode(this.value));\n\n            if (String(this.value).length === 1) {\n                DomHandler.addClass(badge, 'p-badge-no-gutter');\n            }\n        }\n        else {\n            DomHandler.addClass(badge, 'p-badge-dot');\n        }\n\n        DomHandler.addClass(el, 'p-overlay-badge');\n        el.appendChild(badge);\n\n        this.initialized = true;\n    }\n\n    @Input() get value(): string {\n        return this._value;\n    }\n\n    set value(val: string) {\n        if (val !== this._value) {\n            this._value = val;\n\n            if (this.initialized) {\n                let badge = document.getElementById(this.id);\n\n                if (this._value) {\n                    if (DomHandler.hasClass(badge, 'p-badge-dot'))\n                        DomHandler.removeClass(badge, 'p-badge-dot');\n\n                    if (String(this._value).length === 1) {\n                        DomHandler.addClass(badge, 'p-badge-no-gutter');\n                    }\n                    else {\n                        DomHandler.removeClass(badge, 'p-badge-no-gutter');\n                    }\n                }\n                else if (!this._value && !DomHandler.hasClass(badge, 'p-badge-dot')) {\n                    DomHandler.addClass(badge, 'p-badge-dot');\n                }\n\n                badge.innerHTML = '';\n                badge.appendChild(document.createTextNode(this._value));\n            }\n        }\n    }\n\n    @Input() severity: string;\n\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\n\n@Component({\n    selector: 'p-badge',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n                {{value}}\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./badge.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Badge {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() size: string;\n\n    @Input() severity: string;\n\n    @Input() value: string;\n\n    containerClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.value != undefined && String(this.value).length === 1,\n            'p-badge-lg': this.size === 'large',\n            'p-badge-xl': this.size === 'xlarge',\n            'p-badge-info': this.severity === 'info',\n            'p-badge-success': this.severity === 'success',\n            'p-badge-warning': this.severity === 'warning',\n            'p-badge-danger': this.severity === 'danger'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Badge, BadgeDirective, SharedModule],\n    declarations: [Badge, BadgeDirective]\n})\nexport class BadgeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+
+class BlockUI {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    get blocked() {
+        return this._blocked;
+    }
+    set blocked(val) {
+        if (this.mask && this.mask.nativeElement) {
+            if (val)
+                this.block();
+            else
+                this.unblock();
+        }
+        else {
+            this._blocked = val;
+        }
+    }
+    ngAfterViewInit() {
+        if (this.target && !this.target.getBlockableElement) {
+            throw 'Target of BlockUI must implement BlockableUI interface';
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    block() {
+        this._blocked = true;
+        if (this.target) {
+            this.target.getBlockableElement().appendChild(this.mask.nativeElement);
+            this.target.getBlockableElement().style.position = 'relative';
+        }
+        else {
+            document.body.appendChild(this.mask.nativeElement);
+        }
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex + this.config.zIndex.modal);
+        }
+    }
+    unblock() {
+        this.animationEndListener = this.destroyModal.bind(this);
+        this.mask.nativeElement.addEventListener('animationend', this.animationEndListener);
+        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+    }
+    destroyModal() {
+        this._blocked = false;
+        DomHandler.removeClass(this.mask.nativeElement, 'p-component-overlay-leave');
+        ZIndexUtils.clear(this.mask.nativeElement);
+        this.el.nativeElement.appendChild(this.mask.nativeElement);
+        this.unbindAnimationEndListener();
+        this.cd.markForCheck();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.nativeElement.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unblock();
+        this.destroyModal();
+    }
+}
+BlockUI.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+BlockUI.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: BlockUI, selector: "p-blockUI", inputs: { target: "target", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", styleClass: "styleClass", blocked: "blocked" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUI, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-blockUI', template: `
+        <div #mask [class]="styleClass" [ngClass]="{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}" [ngStyle]="{display: blocked ? 'flex' : 'none'}">
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-blockui{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent;transition-property:background-color;display:flex;align-items:center;justify-content:center}.p-blockui.p-component-overlay{position:absolute}.p-blockui-document.p-component-overlay{position:fixed}.p-blockui-leave.p-component-overlay{background-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { target: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], blocked: [{
+                type: Input
+            }] } });
+class BlockUIModule {
+}
+BlockUIModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BlockUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, declarations: [BlockUI], imports: [CommonModule], exports: [BlockUI] });
+BlockUIModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BlockUIModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [BlockUI],
+                    declarations: [BlockUI]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { BlockUI, BlockUIModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-blockui.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-blockui.mjs","sources":["../../src/app/components/blockui/blockui.ts","../../src/app/components/blockui/primeng-blockui.ts"],"sourcesContent":["import {NgModule,Component,Input,AfterViewInit,OnDestroy,ElementRef,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PrimeNGConfig, PrimeTemplate} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\n\n@Component({\n    selector: 'p-blockUI',\n    template: `\n        <div #mask [class]=\"styleClass\" [ngClass]=\"{'p-blockui-document':!target, 'p-blockui p-component-overlay p-component-overlay-enter': true}\" [ngStyle]=\"{display: blocked ? 'flex' : 'none'}\">\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./blockui.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class BlockUI implements AfterViewInit,OnDestroy {\n\n    @Input() target: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() styleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('mask') mask: ElementRef;\n\n    _blocked: boolean;\n\n    animationEndListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public config: PrimeNGConfig) {}\n\n    @Input() get blocked(): boolean {\n        return this._blocked;\n    }\n\n    set blocked(val: boolean) {\n        if (this.mask && this.mask.nativeElement) {\n            if (val)\n                this.block();\n            else\n                this.unblock();\n        }\n        else {\n            this._blocked = val;\n        }\n    }\n\n    ngAfterViewInit() {\n        if (this.target && !this.target.getBlockableElement) {\n            throw 'Target of BlockUI must implement BlockableUI interface';\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    block() {\n        this._blocked = true;\n\n        if (this.target) {\n            this.target.getBlockableElement().appendChild(this.mask.nativeElement);\n            this.target.getBlockableElement().style.position = 'relative';\n        }\n        else {\n            document.body.appendChild(this.mask.nativeElement);\n        }\n\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex + this.config.zIndex.modal);\n        }\n    }\n\n    unblock() {\n        this.animationEndListener = this.destroyModal.bind(this);\n        this.mask.nativeElement.addEventListener('animationend', this.animationEndListener);\n        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave')\n    }\n\n    destroyModal() {\n        this._blocked = false;\n        DomHandler.removeClass(this.mask.nativeElement, 'p-component-overlay-leave');\n        ZIndexUtils.clear(this.mask.nativeElement);\n        this.el.nativeElement.appendChild(this.mask.nativeElement);\n        this.unbindAnimationEndListener();\n        this.cd.markForCheck();\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.nativeElement.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unblock();\n        this.destroyModal();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [BlockUI],\n    declarations: [BlockUI]\n})\nexport class BlockUIModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,171 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Breadcrumb {
+    constructor() {
+        this.onItemClick = new EventEmitter();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.onItemClick.emit({
+            originalEvent: event,
+            item: item
+        });
+    }
+    onHomeClick(event) {
+        if (this.home) {
+            this.itemClick(event, this.home);
+        }
+    }
+}
+Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Breadcrumb, selector: "p-breadcrumb", inputs: { model: "model", style: "style", styleClass: "styleClass", home: "home", homeAriaLabel: "homeAriaLabel" }, outputs: { onItemClick: "onItemClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Breadcrumb, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-breadcrumb', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-breadcrumb p-component'">
+            <ul>
+                <li [class]="home.styleClass" [ngClass]="{'p-breadcrumb-home': true, 'p-disabled':home.disabled}" [ngStyle]="home.style" *ngIf="home" pTooltip [tooltipOptions]="home.tooltipOptions">
+                    <a *ngIf="!home.routerLink" [attr.aria-label]="homeAriaLabel" [href]="home.url ? home.url : null" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                    <a *ngIf="home.routerLink" [routerLink]="home.routerLink" [attr.aria-label]="homeAriaLabel" [queryParams]="home.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="home.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, home)"
+                        [attr.target]="home.target" [attr.title]="home.title" [attr.id]="home.id" [attr.tabindex]="home.disabled ? null : '0'"
+                        [fragment]="home.fragment" [queryParamsHandling]="home.queryParamsHandling" [preserveFragment]="home.preserveFragment" [skipLocationChange]="home.skipLocationChange" [replaceUrl]="home.replaceUrl" [state]="home.state">
+                        <span *ngIf="home.icon" class="p-menuitem-icon" [ngClass]="home.icon||'pi pi-home'"></span>
+                        <ng-container *ngIf="home.label">
+                            <span *ngIf="home.escape !== false; else htmlHomeRouteLabel" class="p-menuitem-text">{{home.label}}</span>
+                            <ng-template #htmlHomeRouteLabel><span class="p-menuitem-text" [innerHTML]="home.label"></span></ng-template>
+                        </ng-container>
+                    </a>
+                </li>
+                <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="model&&home"></li>
+                <ng-template ngFor let-item let-end="last" [ngForOf]="model">
+                    <li [class]="item.styleClass" [ngStyle]="item.style" [ngClass]="{'p-disabled':item.disabled}">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url ? item.url : null" class="p-menuitem-link" (click)="itemClick($event, item)" pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"  [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" (click)="itemClick($event, item)"
+                            [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.icon" class="p-menuitem-icon" [ngClass]="item.icon"></span>
+                            <ng-container *ngIf="item.label">
+                                <span *ngIf="item.escape !== false; else htmlRouteLabel" class="p-menuitem-text">{{item.label}}</span>
+                                <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                            </ng-container>
+                        </a>
+                    </li>
+                    <li class="p-breadcrumb-chevron pi pi-chevron-right" *ngIf="!end"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-breadcrumb{overflow-x:auto}.p-breadcrumb ul{margin:0;padding:0;list-style-type:none;display:flex;align-items:center;flex-wrap:nowrap}.p-breadcrumb .p-menuitem-text{line-height:1}.p-breadcrumb .p-menuitem-link{text-decoration:none}.p-breadcrumb::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], home: [{
+                type: Input
+            }], homeAriaLabel: [{
+                type: Input
+            }], onItemClick: [{
+                type: Output
+            }] } });
+class BreadcrumbModule {
+}
+BreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, declarations: [Breadcrumb], imports: [CommonModule, RouterModule, TooltipModule], exports: [Breadcrumb, RouterModule, TooltipModule] });
+BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: BreadcrumbModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Breadcrumb, RouterModule, TooltipModule],
+                    declarations: [Breadcrumb]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Breadcrumb, BreadcrumbModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-breadcrumb.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-breadcrumb.mjs","sources":["../../src/app/components/breadcrumb/breadcrumb.ts","../../src/app/components/breadcrumb/primeng-breadcrumb.ts"],"sourcesContent":["import {NgModule,Component,Input, Output, EventEmitter,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-breadcrumb',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-breadcrumb p-component'\">\n            <ul>\n                <li [class]=\"home.styleClass\" [ngClass]=\"{'p-breadcrumb-home': true, 'p-disabled':home.disabled}\" [ngStyle]=\"home.style\" *ngIf=\"home\" pTooltip [tooltipOptions]=\"home.tooltipOptions\">\n                    <a *ngIf=\"!home.routerLink\" [attr.aria-label]=\"homeAriaLabel\" [href]=\"home.url ? home.url : null\" class=\"p-menuitem-link\" (click)=\"itemClick($event, home)\"\n                        [attr.target]=\"home.target\" [attr.title]=\"home.title\" [attr.id]=\"home.id\" [attr.tabindex]=\"home.disabled ? null : '0'\">\n                        <span *ngIf=\"home.icon\" class=\"p-menuitem-icon\" [ngClass]=\"home.icon||'pi pi-home'\"></span>\n                        <ng-container *ngIf=\"home.label\">\n                            <span *ngIf=\"home.escape !== false; else htmlHomeLabel\" class=\"p-menuitem-text\">{{home.label}}</span>\n                            <ng-template #htmlHomeLabel><span class=\"p-menuitem-text\" [innerHTML]=\"home.label\"></span></ng-template>\n                        </ng-container>\n                    </a>\n                    <a *ngIf=\"home.routerLink\" [routerLink]=\"home.routerLink\" [attr.aria-label]=\"homeAriaLabel\" [queryParams]=\"home.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"home.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" (click)=\"itemClick($event, home)\"\n                        [attr.target]=\"home.target\" [attr.title]=\"home.title\" [attr.id]=\"home.id\" [attr.tabindex]=\"home.disabled ? null : '0'\"\n                        [fragment]=\"home.fragment\" [queryParamsHandling]=\"home.queryParamsHandling\" [preserveFragment]=\"home.preserveFragment\" [skipLocationChange]=\"home.skipLocationChange\" [replaceUrl]=\"home.replaceUrl\" [state]=\"home.state\">\n                        <span *ngIf=\"home.icon\" class=\"p-menuitem-icon\" [ngClass]=\"home.icon||'pi pi-home'\"></span>\n                        <ng-container *ngIf=\"home.label\">\n                            <span *ngIf=\"home.escape !== false; else htmlHomeRouteLabel\" class=\"p-menuitem-text\">{{home.label}}</span>\n                            <ng-template #htmlHomeRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"home.label\"></span></ng-template>\n                        </ng-container>\n                    </a>\n                </li>\n                <li class=\"p-breadcrumb-chevron pi pi-chevron-right\" *ngIf=\"model&&home\"></li>\n                <ng-template ngFor let-item let-end=\"last\" [ngForOf]=\"model\">\n                    <li [class]=\"item.styleClass\" [ngStyle]=\"item.style\" [ngClass]=\"{'p-disabled':item.disabled}\">\n                        <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url ? item.url : null\" class=\"p-menuitem-link\" (click)=\"itemClick($event, item)\" pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                            [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\">\n                            <span *ngIf=\"item.icon\" class=\"p-menuitem-icon\" [ngClass]=\"item.icon\"></span>\n                            <ng-container *ngIf=\"item.label\">\n                                <span *ngIf=\"item.escape !== false; else htmlLabel\" class=\"p-menuitem-text\">{{item.label}}</span>\n                                <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                            </ng-container>\n                        </a>\n                        <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"  [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" (click)=\"itemClick($event, item)\"\n                            [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span *ngIf=\"item.icon\" class=\"p-menuitem-icon\" [ngClass]=\"item.icon\"></span>\n                            <ng-container *ngIf=\"item.label\">\n                                <span *ngIf=\"item.escape !== false; else htmlRouteLabel\" class=\"p-menuitem-text\">{{item.label}}</span>\n                                <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                            </ng-container>\n                        </a>\n                    </li>\n                    <li class=\"p-breadcrumb-chevron pi pi-chevron-right\" *ngIf=\"!end\"></li>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./breadcrumb.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Breadcrumb {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() home: MenuItem;\n\n    @Input() homeAriaLabel: string;\n\n    @Output() onItemClick: EventEmitter<any> = new EventEmitter();\n\n    itemClick(event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.onItemClick.emit({\n            originalEvent: event,\n            item: item\n        });\n    }\n\n    onHomeClick(event) {\n        if (this.home) {\n            this.itemClick(event, this.home);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [Breadcrumb,RouterModule,TooltipModule],\n    declarations: [Breadcrumb]\n})\nexport class BreadcrumbModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MA+Da,UAAU;IAzDvB;QAqEc,gBAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;KA8BjE;IA5BG,SAAS,CAAC,KAAK,EAAE,IAAc;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC;gBACT,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;SACN;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;KACN;IAED,WAAW,CAAC,KAAK;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACpC;KACJ;;uGAzCQ,UAAU;2FAAV,UAAU,wPAvDT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CT;2FAQQ,UAAU;kBAzDtB,SAAS;+BACI,cAAc,YACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEI,WAAW;sBAApB,MAAM;;MAqCE,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBAjDhB,UAAU,aA6CT,YAAY,EAAC,YAAY,EAAC,aAAa,aA7CxC,UAAU,EA8CE,YAAY,EAAC,aAAa;8GAGtC,gBAAgB,YAJhB,CAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC,EAC7B,YAAY,EAAC,aAAa;2FAGtC,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC;oBAClD,OAAO,EAAE,CAAC,UAAU,EAAC,YAAY,EAAC,aAAa,CAAC;oBAChD,YAAY,EAAE,CAAC,UAAU,CAAC;iBAC7B;;;AC/GD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,281 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate } from 'primeng/api';
+
+class ButtonDirective {
+    constructor(el) {
+        this.el = el;
+        this.iconPos = 'left';
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this._loading = false;
+    }
+    ngAfterViewInit() {
+        this._initialStyleClass = this.el.nativeElement.className;
+        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());
+        if (this.icon || this.loading) {
+            this.createIconEl();
+        }
+        let labelElement = document.createElement("span");
+        if (this.icon && !this.label) {
+            labelElement.setAttribute('aria-hidden', 'true');
+        }
+        labelElement.className = 'p-button-label';
+        if (this.label)
+            labelElement.appendChild(document.createTextNode(this.label));
+        else
+            labelElement.innerHTML = '&nbsp;';
+        this.el.nativeElement.appendChild(labelElement);
+        this.initialized = true;
+    }
+    getStyleClass() {
+        let styleClass = 'p-button p-component';
+        if (this.icon && !this.label) {
+            styleClass = styleClass + ' p-button-icon-only';
+        }
+        if (this.loading) {
+            styleClass = styleClass + ' p-disabled p-button-loading';
+            if (!this.icon && this.label)
+                styleClass = styleClass + ' p-button-loading-label-only';
+        }
+        return styleClass;
+    }
+    setStyleClass() {
+        let styleClass = this.getStyleClass();
+        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;
+    }
+    createIconEl() {
+        let iconElement = document.createElement("span");
+        iconElement.className = 'p-button-icon';
+        iconElement.setAttribute("aria-hidden", "true");
+        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;
+        if (iconPosClass) {
+            DomHandler.addClass(iconElement, iconPosClass);
+        }
+        let iconClass = this.getIconClass();
+        if (iconClass) {
+            DomHandler.addMultipleClasses(iconElement, iconClass);
+        }
+        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');
+        if (labelEl)
+            this.el.nativeElement.insertBefore(iconElement, labelEl);
+        else
+            this.el.nativeElement.appendChild(iconElement);
+    }
+    getIconClass() {
+        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;
+    }
+    setIconClass() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        if (iconElement) {
+            if (this.iconPos)
+                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();
+            else
+                iconElement.className = 'p-button-icon ' + this.getIconClass();
+        }
+        else {
+            this.createIconEl();
+        }
+    }
+    removeIconElement() {
+        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');
+        this.el.nativeElement.removeChild(iconElement);
+    }
+    get label() {
+        return this._label;
+    }
+    set label(val) {
+        this._label = val;
+        if (this.initialized) {
+            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';
+            if (this.loading || this.icon) {
+                this.setIconClass();
+            }
+            this.setStyleClass();
+        }
+    }
+    get icon() {
+        return this._icon;
+    }
+    set icon(val) {
+        this._icon = val;
+        if (this.initialized) {
+            this.setIconClass();
+            this.setStyleClass();
+        }
+    }
+    get loading() {
+        return this._loading;
+    }
+    set loading(val) {
+        this._loading = val;
+        if (this.initialized) {
+            if (this.loading || this.icon)
+                this.setIconClass();
+            else
+                this.removeIconElement();
+            this.setStyleClass();
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+    }
+}
+ButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ButtonDirective, selector: "[pButton]", inputs: { iconPos: "iconPos", loadingIcon: "loadingIcon", label: "label", icon: "icon", loading: "loading" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pButton]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }] } });
+class Button {
+    constructor() {
+        this.type = "button";
+        this.iconPos = 'left';
+        this.loading = false;
+        this.loadingIcon = "pi pi-spinner pi-spin";
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    badgeStyleClass() {
+        return {
+            'p-badge p-component': true,
+            'p-badge-no-gutter': this.badge && String(this.badge).length === 1
+        };
+    }
+}
+Button.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Button.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Button, selector: "p-button", inputs: { type: "type", iconPos: "iconPos", icon: "icon", badge: "badge", label: "label", disabled: "disabled", loading: "loading", loadingIcon: "loadingIcon", style: "style", styleClass: "styleClass", badgeClass: "badgeClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Button, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-button',
+                    template: `
+        <button [attr.type]="type" [class]="styleClass" [ngStyle]="style" [disabled]="disabled || loading"
+            [ngClass]="{'p-button p-component':true,
+                        'p-button-icon-only': (icon && !label),
+                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,
+                        'p-disabled': this.disabled || this.loading,
+                        'p-button-loading': this.loading,
+                        'p-button-loading-label-only': this.loading && !this.icon && this.label}"
+                        (click)="onClick.emit($event)" (focus)="onFocus.emit($event)" (blur)="onBlur.emit($event)" pRipple>
+            <ng-content></ng-content>
+            <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            <span [ngClass]="{'p-button-icon': true,
+                        'p-button-icon-left': iconPos === 'left' && label,
+                        'p-button-icon-right': iconPos === 'right' && label,
+                        'p-button-icon-top': iconPos === 'top' && label,
+                        'p-button-icon-bottom': iconPos === 'bottom' && label}"
+                        [class]="loading ? 'p-button-loading-icon ' + loadingIcon : icon" *ngIf="!contentTemplate && (icon||loading)" [attr.aria-hidden]="true"></span>
+            <span class="p-button-label" [attr.aria-hidden]="icon && !label" *ngIf="!contentTemplate">{{label||'&nbsp;'}}</span>
+            <span [ngClass]="badgeStyleClass()" [class]="badgeClass" *ngIf="!contentTemplate && badge">{{badge}}</span>
+        </button>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { type: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], badge: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], badgeClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }] } });
+class ButtonModule {
+}
+ButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });
+ButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ButtonDirective, Button],
+                    declarations: [ButtonDirective, Button]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Button, ButtonDirective, ButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-button.mjs","sources":["../../src/app/components/button/button.ts","../../src/app/components/button/primeng-button.ts"],"sourcesContent":["import {NgModule,Directive,Component,ElementRef,EventEmitter,AfterViewInit,Output,OnDestroy,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList} from '@angular/core';\nimport {DomHandler} from 'primeng/dom';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {PrimeTemplate} from 'primeng/api';\n\n@Directive({\n    selector: '[pButton]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ButtonDirective implements AfterViewInit, OnDestroy {\n\n    @Input() iconPos: 'left' | 'right' | 'top' | 'bottom' = 'left';\n\n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    public _label: string;\n\n    public _icon: string;\n\n    public _loading: boolean = false;\n\n    public initialized: boolean;\n\n    public _initialStyleClass: string;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        this._initialStyleClass = this.el.nativeElement.className;\n        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n        if (this.icon || this.loading) {\n            this.createIconEl();\n        }\n\n        let labelElement = document.createElement(\"span\");\n        if (this.icon && !this.label) {\n            labelElement.setAttribute('aria-hidden', 'true');\n        }\n        labelElement.className = 'p-button-label';\n\n        if (this.label)\n            labelElement.appendChild(document.createTextNode(this.label));\n        else\n            labelElement.innerHTML = '&nbsp;';\n\n        this.el.nativeElement.appendChild(labelElement);\n        this.initialized = true;\n    }\n\n    getStyleClass(): string {\n        let styleClass = 'p-button p-component';\n        if (this.icon && !this.label) {\n            styleClass = styleClass + ' p-button-icon-only';\n        }\n\n        if (this.loading) {\n            styleClass = styleClass + ' p-disabled p-button-loading';\n            if (!this.icon && this.label)\n                styleClass = styleClass + ' p-button-loading-label-only';\n        }\n\n        return styleClass;\n    }\n\n    setStyleClass() {\n        let styleClass = this.getStyleClass();\n        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n    }\n\n    createIconEl() {\n        let iconElement = document.createElement(\"span\");\n        iconElement.className = 'p-button-icon';\n        iconElement.setAttribute(\"aria-hidden\", \"true\");\n        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n\n        if (iconPosClass) {\n            DomHandler.addClass(iconElement, iconPosClass);\n        }\n\n        let iconClass = this.getIconClass();\n\n        if(iconClass) {\n            DomHandler.addMultipleClasses(iconElement, iconClass);\n        }\n\n        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label')\n\n        if (labelEl)\n            this.el.nativeElement.insertBefore(iconElement, labelEl);\n        else\n            this.el.nativeElement.appendChild(iconElement)\n    }\n\n    getIconClass() {\n        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n    }\n\n    setIconClass() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        if (iconElement) {\n            if (this.iconPos)\n                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n            else\n                iconElement.className = 'p-button-icon ' + this.getIconClass();\n        }\n        else {\n            this.createIconEl();\n        }\n    }\n\n    removeIconElement() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        this.el.nativeElement.removeChild(iconElement);\n    }\n\n    @Input() get label(): string {\n        return this._label;\n    }\n\n    set label(val: string) {\n        this._label = val;\n\n        if (this.initialized) {\n            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n\n            if (this.loading || this.icon) {\n                this.setIconClass();\n            }\n            this.setStyleClass();\n        }\n    }\n\n    @Input() get icon(): string {\n        return this._icon;\n    }\n\n    set icon(val: string) {\n        this._icon = val;\n\n        if (this.initialized) {\n            this.setIconClass();\n            this.setStyleClass();\n        }\n    }\n\n    @Input() get loading(): boolean {\n        return this._loading;\n    }\n\n    set loading(val: boolean) {\n        this._loading = val;\n\n        if (this.initialized) {\n            if (this.loading || this.icon)\n                this.setIconClass();\n            else\n                this.removeIconElement();\n\n            this.setStyleClass();\n        }\n    }\n\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\n\n@Component({\n    selector: 'p-button',\n    template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Button implements AfterContentInit {\n\n    @Input() type: string = \"button\";\n\n    @Input() iconPos: string = 'left';\n\n    @Input() icon: string;\n\n    @Input() badge: string;\n\n    @Input() label: string;\n\n    @Input() disabled: boolean;\n\n    @Input() loading: boolean = false;\n\n    @Input() loadingIcon: string = \"pi pi-spinner pi-spin\";\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() badgeClass: string;\n\n    contentTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    badgeStyleClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [ButtonDirective,Button],\n    declarations: [ButtonDirective,Button]\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2456 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+
+const CALENDAR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Calendar),
+    multi: true
+};
+class Calendar {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.multipleSeparator = ',';
+        this.rangeSeparator = '-';
+        this.inline = false;
+        this.showOtherMonths = true;
+        this.icon = 'pi pi-calendar';
+        this.shortYearCutoff = '+10';
+        this.hourFormat = '24';
+        this.stepHour = 1;
+        this.stepMinute = 1;
+        this.stepSecond = 1;
+        this.showSeconds = false;
+        this.showOnFocus = true;
+        this.showWeek = false;
+        this.dataType = 'date';
+        this.selectionMode = 'single';
+        this.todayButtonStyleClass = 'p-button-text';
+        this.clearButtonStyleClass = 'p-button-text';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.keepInvalid = false;
+        this.hideOnDateTimeSelect = true;
+        this.numberOfMonths = 1;
+        this.view = 'date';
+        this.timeSeparator = ":";
+        this.focusTrap = true;
+        this.firstDayOfWeek = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onTodayClick = new EventEmitter();
+        this.onClearClick = new EventEmitter();
+        this.onMonthChange = new EventEmitter();
+        this.onYearChange = new EventEmitter();
+        this.onClickOutside = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.inputFieldValue = null;
+        this.navigationState = null;
+        this.convertTo24Hour = function (hours, pm) {
+            if (this.hourFormat == '12') {
+                if (hours === 12) {
+                    return (pm ? 12 : 0);
+                }
+                else {
+                    return (pm ? hours + 12 : hours);
+                }
+            }
+            return hours;
+        };
+    }
+    set content(content) {
+        this.contentViewChild = content;
+        if (this.contentViewChild) {
+            if (this.isMonthNavigate) {
+                Promise.resolve(null).then(() => this.updateFocus());
+                this.isMonthNavigate = false;
+            }
+            else {
+                this.initFocusableCell();
+            }
+        }
+    }
+    ;
+    get defaultDate() {
+        return this._defaultDate;
+    }
+    ;
+    set defaultDate(defaultDate) {
+        this._defaultDate = defaultDate;
+        if (this.initialized) {
+            const date = defaultDate || new Date();
+            this.currentMonth = date.getMonth();
+            this.currentYear = date.getFullYear();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get minDate() {
+        return this._minDate;
+    }
+    set minDate(date) {
+        this._minDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get maxDate() {
+        return this._maxDate;
+    }
+    set maxDate(date) {
+        this._maxDate = date;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDates() {
+        return this._disabledDates;
+    }
+    set disabledDates(disabledDates) {
+        this._disabledDates = disabledDates;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get disabledDays() {
+        return this._disabledDays;
+    }
+    set disabledDays(disabledDays) {
+        this._disabledDays = disabledDays;
+        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    get yearRange() {
+        return this._yearRange;
+    }
+    set yearRange(yearRange) {
+        this._yearRange = yearRange;
+        if (yearRange) {
+            const years = yearRange.split(':');
+            const yearStart = parseInt(years[0]);
+            const yearEnd = parseInt(years[1]);
+            this.populateYearOptions(yearStart, yearEnd);
+        }
+    }
+    get showTime() {
+        return this._showTime;
+    }
+    set showTime(showTime) {
+        this._showTime = showTime;
+        if (this.currentHour === undefined) {
+            this.initTime(this.value || new Date());
+        }
+        this.updateInputfield();
+    }
+    get locale() {
+        return this._locale;
+    }
+    set locale(newLocale) {
+        console.warn("Locale property has no effect, use new i18n API instead.");
+    }
+    ngOnInit() {
+        const date = this.defaultDate || new Date();
+        this.currentMonth = date.getMonth();
+        this.currentYear = date.getFullYear();
+        if (this.view === 'date') {
+            this.createWeekDays();
+            this.initTime(date);
+            this.createMonths(this.currentMonth, this.currentYear);
+            this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);
+        }
+        else if (this.view === 'month') {
+            this.createMonthPickerValues();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.createWeekDays();
+        });
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'date':
+                    this.dateTemplate = item.template;
+                    break;
+                case 'disabledDate':
+                    this.disabledDateTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.dateTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    populateYearOptions(start, end) {
+        this.yearOptions = [];
+        for (let i = start; i <= end; i++) {
+            this.yearOptions.push(i);
+        }
+    }
+    createWeekDays() {
+        this.weekDays = [];
+        let dayIndex = this.firstDayOfWeek;
+        let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);
+        for (let i = 0; i < 7; i++) {
+            this.weekDays.push(dayLabels[dayIndex]);
+            dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;
+        }
+    }
+    createMonthPickerValues() {
+        this.monthPickerValues = [];
+        let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);
+        for (let i = 0; i <= 11; i++) {
+            this.monthPickerValues.push(monthLabels[i]);
+        }
+    }
+    createMonths(month, year) {
+        this.months = this.months = [];
+        for (let i = 0; i < this.numberOfMonths; i++) {
+            let m = month + i;
+            let y = year;
+            if (m > 11) {
+                m = m % 11 - 1;
+                y = year + 1;
+            }
+            this.months.push(this.createMonth(m, y));
+        }
+    }
+    getWeekNumber(date) {
+        let checkDate = new Date(date.getTime());
+        checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
+        let time = checkDate.getTime();
+        checkDate.setMonth(0);
+        checkDate.setDate(1);
+        return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;
+    }
+    createMonth(month, year) {
+        let dates = [];
+        let firstDay = this.getFirstDayOfMonthIndex(month, year);
+        let daysLength = this.getDaysCountInMonth(month, year);
+        let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);
+        let dayNo = 1;
+        let today = new Date();
+        let weekNumbers = [];
+        let monthRows = Math.ceil((daysLength + firstDay) / 7);
+        for (let i = 0; i < monthRows; i++) {
+            let week = [];
+            if (i == 0) {
+                for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {
+                    let prev = this.getPreviousMonthAndYear(month, year);
+                    week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true,
+                        today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });
+                }
+                let remainingDaysLength = 7 - week.length;
+                for (let j = 0; j < remainingDaysLength; j++) {
+                    week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                        selectable: this.isSelectable(dayNo, month, year, false) });
+                    dayNo++;
+                }
+            }
+            else {
+                for (let j = 0; j < 7; j++) {
+                    if (dayNo > daysLength) {
+                        let next = this.getNextMonthAndYear(month, year);
+                        week.push({ day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,
+                            today: this.isToday(today, dayNo - daysLength, next.month, next.year),
+                            selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true) });
+                    }
+                    else {
+                        week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),
+                            selectable: this.isSelectable(dayNo, month, year, false) });
+                    }
+                    dayNo++;
+                }
+            }
+            if (this.showWeek) {
+                weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));
+            }
+            dates.push(week);
+        }
+        return {
+            month: month,
+            year: year,
+            dates: dates,
+            weekNumbers: weekNumbers
+        };
+    }
+    initTime(date) {
+        this.pm = date.getHours() > 11;
+        if (this.showTime) {
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+            this.setCurrentHourPM(date.getHours());
+        }
+        else if (this.timeOnly) {
+            this.currentMinute = 0;
+            this.currentHour = 0;
+            this.currentSecond = 0;
+        }
+    }
+    navBackward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.decrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 0) {
+                this.currentMonth = 11;
+                this.decrementYear();
+            }
+            else {
+                this.currentMonth--;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    navForward(event) {
+        event.stopPropagation();
+        if (this.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.isMonthNavigate = true;
+        if (this.view === 'month') {
+            this.incrementYear();
+            setTimeout(() => {
+                this.updateFocus();
+            }, 1);
+        }
+        else {
+            if (this.currentMonth === 11) {
+                this.currentMonth = 0;
+                this.incrementYear();
+            }
+            else {
+                this.currentMonth++;
+            }
+            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+            this.createMonths(this.currentMonth, this.currentYear);
+        }
+    }
+    decrementYear() {
+        this.currentYear--;
+        if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);
+        }
+    }
+    incrementYear() {
+        this.currentYear++;
+        if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {
+            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];
+            this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);
+        }
+    }
+    onDateSelect(event, dateMeta) {
+        if (this.disabled || !dateMeta.selectable) {
+            event.preventDefault();
+            return;
+        }
+        if (this.isMultipleSelection() && this.isSelected(dateMeta)) {
+            this.value = this.value.filter((date, i) => {
+                return !this.isDateEquals(date, dateMeta);
+            });
+            if (this.value.length === 0) {
+                this.value = null;
+            }
+            this.updateModel(this.value);
+        }
+        else {
+            if (this.shouldSelectDate(dateMeta)) {
+                this.selectDate(dateMeta);
+            }
+        }
+        if (this.isSingleSelection() && this.hideOnDateTimeSelect) {
+            setTimeout(() => {
+                event.preventDefault();
+                this.hideOverlay();
+                if (this.mask) {
+                    this.disableModality();
+                }
+                this.cd.markForCheck();
+            }, 150);
+        }
+        this.updateInputfield();
+        event.preventDefault();
+    }
+    shouldSelectDate(dateMeta) {
+        if (this.isMultipleSelection())
+            return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;
+        else
+            return true;
+    }
+    onMonthSelect(event, index) {
+        if (!DomHandler.hasClass(event.target, 'p-disabled')) {
+            this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });
+        }
+    }
+    updateInputfield() {
+        let formattedValue = '';
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                formattedValue = this.formatDateTime(this.value);
+            }
+            else if (this.isMultipleSelection()) {
+                for (let i = 0; i < this.value.length; i++) {
+                    let dateAsString = this.formatDateTime(this.value[i]);
+                    formattedValue += dateAsString;
+                    if (i !== (this.value.length - 1)) {
+                        formattedValue += this.multipleSeparator + ' ';
+                    }
+                }
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value && this.value.length) {
+                    let startDate = this.value[0];
+                    let endDate = this.value[1];
+                    formattedValue = this.formatDateTime(startDate);
+                    if (endDate) {
+                        formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);
+                    }
+                }
+            }
+        }
+        this.inputFieldValue = formattedValue;
+        this.updateFilledState();
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;
+        }
+    }
+    formatDateTime(date) {
+        let formattedValue = null;
+        if (date) {
+            if (this.timeOnly) {
+                formattedValue = this.formatTime(date);
+            }
+            else {
+                formattedValue = this.formatDate(date, this.getDateFormat());
+                if (this.showTime) {
+                    formattedValue += ' ' + this.formatTime(date);
+                }
+            }
+        }
+        return formattedValue;
+    }
+    setCurrentHourPM(hours) {
+        if (this.hourFormat == '12') {
+            this.pm = hours > 11;
+            if (hours >= 12) {
+                this.currentHour = (hours == 12) ? 12 : hours - 12;
+            }
+            else {
+                this.currentHour = (hours == 0) ? 12 : hours;
+            }
+        }
+        else {
+            this.currentHour = hours;
+        }
+    }
+    selectDate(dateMeta) {
+        let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+        if (this.showTime) {
+            if (this.hourFormat == '12') {
+                if (this.currentHour === 12)
+                    date.setHours(this.pm ? 12 : 0);
+                else
+                    date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+            }
+            else {
+                date.setHours(this.currentHour);
+            }
+            date.setMinutes(this.currentMinute);
+            date.setSeconds(this.currentSecond);
+        }
+        if (this.minDate && this.minDate > date) {
+            date = this.minDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.maxDate && this.maxDate < date) {
+            date = this.maxDate;
+            this.setCurrentHourPM(date.getHours());
+            this.currentMinute = date.getMinutes();
+            this.currentSecond = date.getSeconds();
+        }
+        if (this.isSingleSelection()) {
+            this.updateModel(date);
+        }
+        else if (this.isMultipleSelection()) {
+            this.updateModel(this.value ? [...this.value, date] : [date]);
+        }
+        else if (this.isRangeSelection()) {
+            if (this.value && this.value.length) {
+                let startDate = this.value[0];
+                let endDate = this.value[1];
+                if (!endDate && date.getTime() >= startDate.getTime()) {
+                    endDate = date;
+                }
+                else {
+                    startDate = date;
+                    endDate = null;
+                }
+                this.updateModel([startDate, endDate]);
+            }
+            else {
+                this.updateModel([date, null]);
+            }
+        }
+        this.onSelect.emit(date);
+    }
+    updateModel(value) {
+        this.value = value;
+        if (this.dataType == 'date') {
+            this.onModelChange(this.value);
+        }
+        else if (this.dataType == 'string') {
+            if (this.isSingleSelection()) {
+                this.onModelChange(this.formatDateTime(this.value));
+            }
+            else {
+                let stringArrValue = null;
+                if (this.value) {
+                    stringArrValue = this.value.map(date => this.formatDateTime(date));
+                }
+                this.onModelChange(stringArrValue);
+            }
+        }
+    }
+    getFirstDayOfMonthIndex(month, year) {
+        let day = new Date();
+        day.setDate(1);
+        day.setMonth(month);
+        day.setFullYear(year);
+        let dayIndex = day.getDay() + this.getSundayIndex();
+        return dayIndex >= 7 ? dayIndex - 7 : dayIndex;
+    }
+    getDaysCountInMonth(month, year) {
+        return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();
+    }
+    getDaysCountInPrevMonth(month, year) {
+        let prev = this.getPreviousMonthAndYear(month, year);
+        return this.getDaysCountInMonth(prev.month, prev.year);
+    }
+    getPreviousMonthAndYear(month, year) {
+        let m, y;
+        if (month === 0) {
+            m = 11;
+            y = year - 1;
+        }
+        else {
+            m = month - 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getNextMonthAndYear(month, year) {
+        let m, y;
+        if (month === 11) {
+            m = 0;
+            y = year + 1;
+        }
+        else {
+            m = month + 1;
+            y = year;
+        }
+        return { 'month': m, 'year': y };
+    }
+    getSundayIndex() {
+        return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;
+    }
+    isSelected(dateMeta) {
+        if (this.value) {
+            if (this.isSingleSelection()) {
+                return this.isDateEquals(this.value, dateMeta);
+            }
+            else if (this.isMultipleSelection()) {
+                let selected = false;
+                for (let date of this.value) {
+                    selected = this.isDateEquals(date, dateMeta);
+                    if (selected) {
+                        break;
+                    }
+                }
+                return selected;
+            }
+            else if (this.isRangeSelection()) {
+                if (this.value[1])
+                    return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);
+                else
+                    return this.isDateEquals(this.value[0], dateMeta);
+            }
+        }
+        else {
+            return false;
+        }
+    }
+    isMonthSelected(month) {
+        let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;
+        return this.isSelected({ year: this.currentYear, month: month, day: day, selectable: true });
+    }
+    isDateEquals(value, dateMeta) {
+        if (value)
+            return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;
+        else
+            return false;
+    }
+    isDateBetween(start, end, dateMeta) {
+        let between = false;
+        if (start && end) {
+            let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);
+            return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();
+        }
+        return between;
+    }
+    isSingleSelection() {
+        return this.selectionMode === 'single';
+    }
+    isRangeSelection() {
+        return this.selectionMode === 'range';
+    }
+    isMultipleSelection() {
+        return this.selectionMode === 'multiple';
+    }
+    isToday(today, day, month, year) {
+        return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;
+    }
+    isSelectable(day, month, year, otherMonth) {
+        let validMin = true;
+        let validMax = true;
+        let validDate = true;
+        let validDay = true;
+        if (otherMonth && !this.selectOtherMonths) {
+            return false;
+        }
+        if (this.minDate) {
+            if (this.minDate.getFullYear() > year) {
+                validMin = false;
+            }
+            else if (this.minDate.getFullYear() === year) {
+                if (this.minDate.getMonth() > month) {
+                    validMin = false;
+                }
+                else if (this.minDate.getMonth() === month) {
+                    if (this.minDate.getDate() > day) {
+                        validMin = false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate) {
+            if (this.maxDate.getFullYear() < year) {
+                validMax = false;
+            }
+            else if (this.maxDate.getFullYear() === year) {
+                if (this.maxDate.getMonth() < month) {
+                    validMax = false;
+                }
+                else if (this.maxDate.getMonth() === month) {
+                    if (this.maxDate.getDate() < day) {
+                        validMax = false;
+                    }
+                }
+            }
+        }
+        if (this.disabledDates) {
+            validDate = !this.isDateDisabled(day, month, year);
+        }
+        if (this.disabledDays) {
+            validDay = !this.isDayDisabled(day, month, year);
+        }
+        return validMin && validMax && validDate && validDay;
+    }
+    isDateDisabled(day, month, year) {
+        if (this.disabledDates) {
+            for (let disabledDate of this.disabledDates) {
+                if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    isDayDisabled(day, month, year) {
+        if (this.disabledDays) {
+            let weekday = new Date(year, month, day);
+            let weekdayNumber = weekday.getDay();
+            return this.disabledDays.indexOf(weekdayNumber) !== -1;
+        }
+        return false;
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        if (this.showOnFocus) {
+            this.showOverlay();
+        }
+        this.onFocus.emit(event);
+    }
+    onInputClick() {
+        if (this.showOnFocus && !this.overlayVisible) {
+            this.showOverlay();
+        }
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit(event);
+        if (!this.keepInvalid) {
+            this.updateInputfield();
+        }
+        this.onModelTouched();
+    }
+    onButtonClick(event, inputfield) {
+        if (!this.overlayVisible) {
+            inputfield.focus();
+            this.showOverlay();
+        }
+        else {
+            this.hideOverlay();
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onPrevButtonClick(event) {
+        this.navigationState = { backward: true, button: true };
+        this.navBackward(event);
+    }
+    onNextButtonClick(event) {
+        this.navigationState = { backward: false, button: true };
+        this.navForward(event);
+    }
+    onContainerButtonKeydown(event) {
+        switch (event.which) {
+            //tab
+            case 9:
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            //escape
+            case 27:
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            default:
+                //Noop
+                break;
+        }
+    }
+    onInputKeydown(event) {
+        this.isKeydown = true;
+        if (event.keyCode === 40 && this.contentViewChild) {
+            this.trapFocus(event);
+        }
+        else if (event.keyCode === 27) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 13) {
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+                event.preventDefault();
+            }
+        }
+        else if (event.keyCode === 9 && this.contentViewChild) {
+            DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');
+            if (this.overlayVisible) {
+                this.overlayVisible = false;
+            }
+        }
+    }
+    onDateCellKeydown(event, date, groupIndex) {
+        const cellContent = event.currentTarget;
+        const cell = cellContent.parentElement;
+        switch (event.which) {
+            //down arrow
+            case 40: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let nextRow = cell.parentElement.nextElementSibling;
+                if (nextRow) {
+                    let focusCell = nextRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: false };
+                        this.navForward(event);
+                    }
+                    else {
+                        nextRow.children[cellIndex].children[0].tabIndex = '0';
+                        nextRow.children[cellIndex].children[0].focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: false };
+                    this.navForward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //up arrow
+            case 38: {
+                cellContent.tabIndex = '-1';
+                let cellIndex = DomHandler.index(cell);
+                let prevRow = cell.parentElement.previousElementSibling;
+                if (prevRow) {
+                    let focusCell = prevRow.children[cellIndex].children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigationState = { backward: true };
+                        this.navBackward(event);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigationState = { backward: true };
+                    this.navBackward(event);
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cellContent.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    let focusCell = prevCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {
+                        this.navigateToMonth(true, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(true, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cellContent.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    let focusCell = nextCell.children[0];
+                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {
+                        this.navigateToMonth(false, groupIndex);
+                    }
+                    else {
+                        focusCell.tabIndex = '0';
+                        focusCell.focus();
+                    }
+                }
+                else {
+                    this.navigateToMonth(false, groupIndex);
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onDateSelect(event, date);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    onMonthCellKeydown(event, index) {
+        const cell = event.currentTarget;
+        switch (event.which) {
+            //arrows
+            case 38:
+            case 40: {
+                cell.tabIndex = '-1';
+                var cells = cell.parentElement.children;
+                var cellIndex = DomHandler.index(cell);
+                let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //left arrow
+            case 37: {
+                cell.tabIndex = '-1';
+                let prevCell = cell.previousElementSibling;
+                if (prevCell) {
+                    prevCell.tabIndex = '0';
+                    prevCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //right arrow
+            case 39: {
+                cell.tabIndex = '-1';
+                let nextCell = cell.nextElementSibling;
+                if (nextCell) {
+                    nextCell.tabIndex = '0';
+                    nextCell.focus();
+                }
+                event.preventDefault();
+                break;
+            }
+            //enter
+            case 13: {
+                this.onMonthSelect(event, index);
+                event.preventDefault();
+                break;
+            }
+            //escape
+            case 27: {
+                this.overlayVisible = false;
+                event.preventDefault();
+                break;
+            }
+            //tab
+            case 9: {
+                if (!this.inline) {
+                    this.trapFocus(event);
+                }
+                break;
+            }
+            default:
+                //no op
+                break;
+        }
+    }
+    navigateToMonth(prev, groupIndex) {
+        if (prev) {
+            if (this.numberOfMonths === 1 || (groupIndex === 0)) {
+                this.navigationState = { backward: true };
+                this.navBackward(event);
+            }
+            else {
+                let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];
+                let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                let focusCell = cells[cells.length - 1];
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+        else {
+            if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {
+                this.navigationState = { backward: false };
+                this.navForward(event);
+            }
+            else {
+                let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];
+                let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                focusCell.tabIndex = '0';
+                focusCell.focus();
+            }
+        }
+    }
+    updateFocus() {
+        let cell;
+        if (this.navigationState) {
+            if (this.navigationState.button) {
+                this.initFocusableCell();
+                if (this.navigationState.backward)
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();
+                else
+                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();
+            }
+            else {
+                if (this.navigationState.backward) {
+                    let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                    cell = cells[cells.length - 1];
+                }
+                else {
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+                }
+                if (cell) {
+                    cell.tabIndex = '0';
+                    cell.focus();
+                }
+            }
+            this.navigationState = null;
+        }
+        else {
+            this.initFocusableCell();
+        }
+    }
+    initFocusableCell() {
+        let cell;
+        if (this.view === 'month') {
+            let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');
+            let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');
+            cells.forEach(cell => cell.tabIndex = -1);
+            cell = selectedCell || cells[0];
+            if (cells.length === 0) {
+                let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = "0"]');
+                disabledCells.forEach(cell => cell.tabIndex = -1);
+            }
+        }
+        else {
+            cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');
+            if (!cell) {
+                let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');
+                if (todayCell)
+                    cell = todayCell;
+                else
+                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');
+            }
+        }
+        if (cell) {
+            cell.tabIndex = '0';
+        }
+    }
+    trapFocus(event) {
+        let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);
+        if (focusableElements && focusableElements.length > 0) {
+            if (!focusableElements[0].ownerDocument.activeElement) {
+                focusableElements[0].focus();
+            }
+            else {
+                let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                if (event.shiftKey) {
+                    if (focusedIndex == -1 || focusedIndex === 0) {
+                        if (this.focusTrap) {
+                            focusableElements[focusableElements.length - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex === -1)
+                                return this.hideOverlay();
+                            else if (focusedIndex === 0)
+                                return;
+                        }
+                    }
+                    else {
+                        focusableElements[focusedIndex - 1].focus();
+                    }
+                }
+                else {
+                    if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {
+                        if (!this.focusTrap && focusedIndex != -1)
+                            return this.hideOverlay();
+                        else
+                            focusableElements[0].focus();
+                    }
+                    else {
+                        focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+        event.preventDefault();
+    }
+    onMonthDropdownChange(m) {
+        this.currentMonth = parseInt(m);
+        this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    onYearDropdownChange(y) {
+        this.currentYear = parseInt(y);
+        this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });
+        this.createMonths(this.currentMonth, this.currentYear);
+    }
+    validateTime(hour, minute, second, pm) {
+        let value = this.value;
+        const convertedHour = this.convertTo24Hour(hour, pm);
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        const valueDateString = value ? value.toDateString() : null;
+        if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {
+            if (this.minDate.getHours() > convertedHour) {
+                return false;
+            }
+            if (this.minDate.getHours() === convertedHour) {
+                if (this.minDate.getMinutes() > minute) {
+                    return false;
+                }
+                if (this.minDate.getMinutes() === minute) {
+                    if (this.minDate.getSeconds() > second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {
+            if (this.maxDate.getHours() < convertedHour) {
+                return false;
+            }
+            if (this.maxDate.getHours() === convertedHour) {
+                if (this.maxDate.getMinutes() < minute) {
+                    return false;
+                }
+                if (this.maxDate.getMinutes() === minute) {
+                    if (this.maxDate.getSeconds() < second) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    incrementHour(event) {
+        const prevHour = this.currentHour;
+        let newHour = this.currentHour + this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour >= 24) ? (newHour - 24) : newHour;
+        else if (this.hourFormat == '12') {
+            // Before the AM/PM break, now after
+            if (prevHour < 12 && newHour > 11) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour >= 13) ? (newHour - 12) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    onTimePickerElementMouseDown(event, type, direction) {
+        if (!this.disabled) {
+            this.repeat(event, null, type, direction);
+            event.preventDefault();
+        }
+    }
+    onTimePickerElementMouseUp(event) {
+        if (!this.disabled) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    onTimePickerElementMouseLeave() {
+        if (!this.disabled && this.timePickerTimer) {
+            this.clearTimePickerTimer();
+            this.updateTime();
+        }
+    }
+    repeat(event, interval, type, direction) {
+        let i = interval || 500;
+        this.clearTimePickerTimer();
+        this.timePickerTimer = setTimeout(() => {
+            this.repeat(event, 100, type, direction);
+            this.cd.markForCheck();
+        }, i);
+        switch (type) {
+            case 0:
+                if (direction === 1)
+                    this.incrementHour(event);
+                else
+                    this.decrementHour(event);
+                break;
+            case 1:
+                if (direction === 1)
+                    this.incrementMinute(event);
+                else
+                    this.decrementMinute(event);
+                break;
+            case 2:
+                if (direction === 1)
+                    this.incrementSecond(event);
+                else
+                    this.decrementSecond(event);
+                break;
+        }
+        this.updateInputfield();
+    }
+    clearTimePickerTimer() {
+        if (this.timePickerTimer) {
+            clearTimeout(this.timePickerTimer);
+            this.timePickerTimer = null;
+        }
+    }
+    decrementHour(event) {
+        let newHour = this.currentHour - this.stepHour;
+        let newPM = this.pm;
+        if (this.hourFormat == '24')
+            newHour = (newHour < 0) ? (24 + newHour) : newHour;
+        else if (this.hourFormat == '12') {
+            // If we were at noon/midnight, then switch
+            if (this.currentHour === 12) {
+                newPM = !this.pm;
+            }
+            newHour = (newHour <= 0) ? (12 + newHour) : newHour;
+        }
+        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.currentHour = newHour;
+            this.pm = newPM;
+        }
+        event.preventDefault();
+    }
+    incrementMinute(event) {
+        let newMinute = this.currentMinute + this.stepMinute;
+        newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    decrementMinute(event) {
+        let newMinute = this.currentMinute - this.stepMinute;
+        newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;
+        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {
+            this.currentMinute = newMinute;
+        }
+        event.preventDefault();
+    }
+    incrementSecond(event) {
+        let newSecond = this.currentSecond + this.stepSecond;
+        newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    decrementSecond(event) {
+        let newSecond = this.currentSecond - this.stepSecond;
+        newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;
+        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {
+            this.currentSecond = newSecond;
+        }
+        event.preventDefault();
+    }
+    updateTime() {
+        let value = this.value;
+        if (this.isRangeSelection()) {
+            value = this.value[1] || this.value[0];
+        }
+        if (this.isMultipleSelection()) {
+            value = this.value[this.value.length - 1];
+        }
+        value = value ? new Date(value.getTime()) : new Date();
+        if (this.hourFormat == '12') {
+            if (this.currentHour === 12)
+                value.setHours(this.pm ? 12 : 0);
+            else
+                value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);
+        }
+        else {
+            value.setHours(this.currentHour);
+        }
+        value.setMinutes(this.currentMinute);
+        value.setSeconds(this.currentSecond);
+        if (this.isRangeSelection()) {
+            if (this.value[1])
+                value = [this.value[0], value];
+            else
+                value = [value, null];
+        }
+        if (this.isMultipleSelection()) {
+            value = [...this.value.slice(0, -1), value];
+        }
+        this.updateModel(value);
+        this.onSelect.emit(value);
+        this.updateInputfield();
+    }
+    toggleAMPM(event) {
+        const newPM = !this.pm;
+        if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {
+            this.pm = newPM;
+            this.updateTime();
+        }
+        event.preventDefault();
+    }
+    onUserInput(event) {
+        // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026
+        if (!this.isKeydown) {
+            return;
+        }
+        this.isKeydown = false;
+        let val = event.target.value;
+        try {
+            let value = this.parseValueFromString(val);
+            if (this.isValidSelection(value)) {
+                this.updateModel(value);
+                this.updateUI();
+            }
+        }
+        catch (err) {
+            //invalid date
+            this.updateModel(null);
+        }
+        this.filled = val != null && val.length;
+        this.onInput.emit(event);
+    }
+    isValidSelection(value) {
+        let isValid = true;
+        if (this.isSingleSelection()) {
+            if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {
+                isValid = false;
+            }
+        }
+        else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {
+            if (this.isRangeSelection()) {
+                isValid = value.length > 1 && value[1] > value[0] ? true : false;
+            }
+        }
+        return isValid;
+    }
+    parseValueFromString(text) {
+        if (!text || text.trim().length === 0) {
+            return null;
+        }
+        let value;
+        if (this.isSingleSelection()) {
+            value = this.parseDateTime(text);
+        }
+        else if (this.isMultipleSelection()) {
+            let tokens = text.split(this.multipleSeparator);
+            value = [];
+            for (let token of tokens) {
+                value.push(this.parseDateTime(token.trim()));
+            }
+        }
+        else if (this.isRangeSelection()) {
+            let tokens = text.split(' ' + this.rangeSeparator + ' ');
+            value = [];
+            for (let i = 0; i < tokens.length; i++) {
+                value[i] = this.parseDateTime(tokens[i].trim());
+            }
+        }
+        return value;
+    }
+    parseDateTime(text) {
+        let date;
+        let parts = text.split(' ');
+        if (this.timeOnly) {
+            date = new Date();
+            this.populateTime(date, parts[0], parts[1]);
+        }
+        else {
+            const dateFormat = this.getDateFormat();
+            if (this.showTime) {
+                let ampm = this.hourFormat == '12' ? parts.pop() : null;
+                let timeString = parts.pop();
+                date = this.parseDate(parts.join(' '), dateFormat);
+                this.populateTime(date, timeString, ampm);
+            }
+            else {
+                date = this.parseDate(text, dateFormat);
+            }
+        }
+        return date;
+    }
+    populateTime(value, timeString, ampm) {
+        if (this.hourFormat == '12' && !ampm) {
+            throw 'Invalid Time';
+        }
+        this.pm = (ampm === 'PM' || ampm === 'pm');
+        let time = this.parseTime(timeString);
+        value.setHours(time.hour);
+        value.setMinutes(time.minute);
+        value.setSeconds(time.second);
+    }
+    updateUI() {
+        let val = this.value || this.defaultDate || new Date();
+        if (Array.isArray(val)) {
+            val = val[0];
+        }
+        this.currentMonth = val.getMonth();
+        this.currentYear = val.getFullYear();
+        this.createMonths(this.currentMonth, this.currentYear);
+        if (this.showTime || this.timeOnly) {
+            this.setCurrentHourPM(val.getHours());
+            this.currentMinute = val.getMinutes();
+            this.currentSecond = val.getSeconds();
+        }
+    }
+    showOverlay() {
+        if (!this.overlayVisible) {
+            this.updateUI();
+            this.overlayVisible = true;
+        }
+    }
+    hideOverlay() {
+        this.overlayVisible = false;
+        this.clearTimePickerTimer();
+        if (this.touchUI) {
+            this.disableModality();
+        }
+        this.cd.markForCheck();
+    }
+    toggle() {
+        if (!this.inline) {
+            if (!this.overlayVisible) {
+                this.showOverlay();
+                this.inputfieldViewChild.nativeElement.focus();
+            }
+            else {
+                this.hideOverlay();
+            }
+        }
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        if (this.touchUI)
+                            ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);
+                        else
+                            ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.onShow.emit(event);
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onClose.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'visible':
+            case 'visibleTouchUI':
+                if (!this.inline) {
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.touchUI) {
+            this.enableModality(this.overlay);
+        }
+        else {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);
+        }
+    }
+    enableModality(element) {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);
+            let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';
+            DomHandler.addMultipleClasses(this.mask, maskStyleClass);
+            this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                this.disableModality();
+            });
+            document.body.appendChild(this.mask);
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyMask.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyMask() {
+        document.body.removeChild(this.mask);
+        let bodyChildren = document.body.children;
+        let hasBlockerMasks;
+        for (let i = 0; i < bodyChildren.length; i++) {
+            let bodyChild = bodyChildren[i];
+            if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {
+                hasBlockerMasks = true;
+                break;
+            }
+        }
+        if (!hasBlockerMasks) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.unbindMaskClickListener();
+        this.mask = null;
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.value && typeof this.value === 'string') {
+            this.value = this.parseValueFromString(this.value);
+        }
+        this.updateInputfield();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    getDateFormat() {
+        return this.dateFormat || this.getTranslation('dateFormat');
+    }
+    // Ported from jquery-ui datepicker formatDate
+    formatDate(date, format) {
+        if (!date) {
+            return '';
+        }
+        let iFormat;
+        const lookAhead = (match) => {
+            const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, formatNumber = (match, value, len) => {
+            let num = '' + value;
+            if (lookAhead(match)) {
+                while (num.length < len) {
+                    num = '0' + num;
+                }
+            }
+            return num;
+        }, formatName = (match, value, shortNames, longNames) => {
+            return (lookAhead(match) ? longNames[value] : shortNames[value]);
+        };
+        let output = '';
+        let literal = false;
+        if (date) {
+            for (iFormat = 0; iFormat < format.length; iFormat++) {
+                if (literal) {
+                    if (format.charAt(iFormat) === '\'' && !lookAhead('\'')) {
+                        literal = false;
+                    }
+                    else {
+                        output += format.charAt(iFormat);
+                    }
+                }
+                else {
+                    switch (format.charAt(iFormat)) {
+                        case 'd':
+                            output += formatNumber('d', date.getDate(), 2);
+                            break;
+                        case 'D':
+                            output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                            break;
+                        case 'o':
+                            output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -
+                                new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
+                            break;
+                        case 'm':
+                            output += formatNumber('m', date.getMonth() + 1, 2);
+                            break;
+                        case 'M':
+                            output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                            break;
+                        case 'y':
+                            output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);
+                            break;
+                        case '@':
+                            output += date.getTime();
+                            break;
+                        case '!':
+                            output += date.getTime() * 10000 + this.ticksTo1970;
+                            break;
+                        case '\'':
+                            if (lookAhead('\'')) {
+                                output += '\'';
+                            }
+                            else {
+                                literal = true;
+                            }
+                            break;
+                        default:
+                            output += format.charAt(iFormat);
+                    }
+                }
+            }
+        }
+        return output;
+    }
+    formatTime(date) {
+        if (!date) {
+            return '';
+        }
+        let output = '';
+        let hours = date.getHours();
+        let minutes = date.getMinutes();
+        let seconds = date.getSeconds();
+        if (this.hourFormat == '12' && hours > 11 && hours != 12) {
+            hours -= 12;
+        }
+        if (this.hourFormat == '12') {
+            output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;
+        }
+        else {
+            output += (hours < 10) ? '0' + hours : hours;
+        }
+        output += ':';
+        output += (minutes < 10) ? '0' + minutes : minutes;
+        if (this.showSeconds) {
+            output += ':';
+            output += (seconds < 10) ? '0' + seconds : seconds;
+        }
+        if (this.hourFormat == '12') {
+            output += date.getHours() > 11 ? ' PM' : ' AM';
+        }
+        return output;
+    }
+    parseTime(value) {
+        let tokens = value.split(':');
+        let validTokenLength = this.showSeconds ? 3 : 2;
+        if (tokens.length !== validTokenLength) {
+            throw "Invalid time";
+        }
+        let h = parseInt(tokens[0]);
+        let m = parseInt(tokens[1]);
+        let s = this.showSeconds ? parseInt(tokens[2]) : null;
+        if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {
+            throw "Invalid time";
+        }
+        else {
+            if (this.hourFormat == '12') {
+                if (h !== 12 && this.pm) {
+                    h += 12;
+                }
+                else if (!this.pm && h === 12) {
+                    h -= 12;
+                }
+            }
+            return { hour: h, minute: m, second: s };
+        }
+    }
+    // Ported from jquery-ui datepicker parseDate
+    parseDate(value, format) {
+        if (format == null || value == null) {
+            throw "Invalid arguments";
+        }
+        value = (typeof value === "object" ? value.toString() : value + "");
+        if (value === "") {
+            return null;
+        }
+        let iFormat, dim, extra, iValue = 0, shortYearCutoff = (typeof this.shortYearCutoff !== "string" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {
+            let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);
+            if (matches) {
+                iFormat++;
+            }
+            return matches;
+        }, getNumber = (match) => {
+            let isDoubled = lookAhead(match), size = (match === "@" ? 14 : (match === "!" ? 20 :
+                (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), minSize = (match === "y" ? size : 1), digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits);
+            if (!num) {
+                throw "Missing number at position " + iValue;
+            }
+            iValue += num[0].length;
+            return parseInt(num[0], 10);
+        }, getName = (match, shortNames, longNames) => {
+            let index = -1;
+            let arr = lookAhead(match) ? longNames : shortNames;
+            let names = [];
+            for (let i = 0; i < arr.length; i++) {
+                names.push([i, arr[i]]);
+            }
+            names.sort((a, b) => {
+                return -(a[1].length - b[1].length);
+            });
+            for (let i = 0; i < names.length; i++) {
+                let name = names[i][1];
+                if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {
+                    index = names[i][0];
+                    iValue += name.length;
+                    break;
+                }
+            }
+            if (index !== -1) {
+                return index + 1;
+            }
+            else {
+                throw "Unknown name at position " + iValue;
+            }
+        }, checkLiteral = () => {
+            if (value.charAt(iValue) !== format.charAt(iFormat)) {
+                throw "Unexpected literal at position " + iValue;
+            }
+            iValue++;
+        };
+        if (this.view === 'month') {
+            day = 1;
+        }
+        for (iFormat = 0; iFormat < format.length; iFormat++) {
+            if (literal) {
+                if (format.charAt(iFormat) === "'" && !lookAhead("'")) {
+                    literal = false;
+                }
+                else {
+                    checkLiteral();
+                }
+            }
+            else {
+                switch (format.charAt(iFormat)) {
+                    case "d":
+                        day = getNumber("d");
+                        break;
+                    case "D":
+                        getName("D", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));
+                        break;
+                    case "o":
+                        doy = getNumber("o");
+                        break;
+                    case "m":
+                        month = getNumber("m");
+                        break;
+                    case "M":
+                        month = getName("M", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));
+                        break;
+                    case "y":
+                        year = getNumber("y");
+                        break;
+                    case "@":
+                        date = new Date(getNumber("@"));
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "!":
+                        date = new Date((getNumber("!") - this.ticksTo1970) / 10000);
+                        year = date.getFullYear();
+                        month = date.getMonth() + 1;
+                        day = date.getDate();
+                        break;
+                    case "'":
+                        if (lookAhead("'")) {
+                            checkLiteral();
+                        }
+                        else {
+                            literal = true;
+                        }
+                        break;
+                    default:
+                        checkLiteral();
+                }
+            }
+        }
+        if (iValue < value.length) {
+            extra = value.substr(iValue);
+            if (!/^\s+/.test(extra)) {
+                throw "Extra/unparsed characters found in date: " + extra;
+            }
+        }
+        if (year === -1) {
+            year = new Date().getFullYear();
+        }
+        else if (year < 100) {
+            year += new Date().getFullYear() - new Date().getFullYear() % 100 +
+                (year <= shortYearCutoff ? 0 : -100);
+        }
+        if (doy > -1) {
+            month = 1;
+            day = doy;
+            do {
+                dim = this.getDaysCountInMonth(year, month - 1);
+                if (day <= dim) {
+                    break;
+                }
+                month++;
+                day -= dim;
+            } while (true);
+        }
+        date = this.daylightSavingAdjust(new Date(year, month - 1, day));
+        if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {
+            throw "Invalid date"; // E.g. 31/02/00
+        }
+        return date;
+    }
+    daylightSavingAdjust(date) {
+        if (!date) {
+            return null;
+        }
+        date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
+        return date;
+    }
+    updateFilledState() {
+        this.filled = this.inputFieldValue && this.inputFieldValue != '';
+    }
+    onTodayButtonClick(event) {
+        let date = new Date();
+        let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };
+        this.onDateSelect(event, dateMeta);
+        this.onTodayClick.emit(event);
+    }
+    onClearButtonClick(event) {
+        this.updateModel(null);
+        this.updateInputfield();
+        this.hideOverlay();
+        this.onClearClick.emit(event);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.zone.runOutsideAngular(() => {
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                    if (this.isOutsideClicked(event) && this.overlayVisible) {
+                        this.zone.run(() => {
+                            this.hideOverlay();
+                            this.onClickOutside.emit(event);
+                            this.cd.markForCheck();
+                        });
+                    }
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        if (!this.documentResizeListener && !this.touchUI) {
+            this.documentResizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) ||
+            this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isNavIconClicked(event) {
+        return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')
+            || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isAndroid()) {
+            this.hideOverlay();
+        }
+    }
+    onOverlayHide() {
+        if (this.mask) {
+            this.destroyMask();
+        }
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.clearTimePickerTimer();
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Calendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Calendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Calendar, selector: "p-calendar", inputs: { style: "style", styleClass: "styleClass", inputStyle: "inputStyle", inputId: "inputId", name: "name", inputStyleClass: "inputStyleClass", placeholder: "placeholder", ariaLabelledBy: "ariaLabelledBy", iconAriaLabel: "iconAriaLabel", disabled: "disabled", dateFormat: "dateFormat", multipleSeparator: "multipleSeparator", rangeSeparator: "rangeSeparator", inline: "inline", showOtherMonths: "showOtherMonths", selectOtherMonths: "selectOtherMonths", showIcon: "showIcon", icon: "icon", appendTo: "appendTo", readonlyInput: "readonlyInput", shortYearCutoff: "shortYearCutoff", monthNavigator: "monthNavigator", yearNavigator: "yearNavigator", hourFormat: "hourFormat", timeOnly: "timeOnly", stepHour: "stepHour", stepMinute: "stepMinute", stepSecond: "stepSecond", showSeconds: "showSeconds", required: "required", showOnFocus: "showOnFocus", showWeek: "showWeek", dataType: "dataType", selectionMode: "selectionMode", maxDateCount: "maxDateCount", showButtonBar: "showButtonBar", todayButtonStyleClass: "todayButtonStyleClass", clearButtonStyleClass: "clearButtonStyleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", panelStyleClass: "panelStyleClass", panelStyle: "panelStyle", keepInvalid: "keepInvalid", hideOnDateTimeSelect: "hideOnDateTimeSelect", numberOfMonths: "numberOfMonths", view: "view", touchUI: "touchUI", timeSeparator: "timeSeparator", focusTrap: "focusTrap", firstDayOfWeek: "firstDayOfWeek", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", tabindex: "tabindex", defaultDate: "defaultDate", minDate: "minDate", maxDate: "maxDate", disabledDates: "disabledDates", disabledDays: "disabledDays", yearRange: "yearRange", showTime: "showTime", locale: "locale" }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onClose: "onClose", onSelect: "onSelect", onInput: "onInput", onTodayClick: "onTodayClick", onClearClick: "onClearClick", onMonthChange: "onMonthChange", onYearChange: "onYearChange", onClickOutside: "onClickOutside", onShow: "onShow" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }, { propertyName: "content", first: true, predicate: ["contentWrapper"], descendants: true }], ngImport: i0, template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('overlayAnimation', [
+            state('visibleTouchUI', style({
+                transform: 'translate(-50%,-50%)',
+                opacity: 1
+            })),
+            transition('void => visible', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ]),
+            transition('void => visibleTouchUI', [
+                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visibleTouchUI => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    opacity: 0,
+                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Calendar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-calendar', template: `
+        <span #container [ngClass]="{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}" [ngStyle]="style" [class]="styleClass">
+            <ng-template [ngIf]="!inline">
+                <input #inputfield type="text" [attr.id]="inputId" [attr.name]="name" [attr.required]="required" [attr.aria-required]="required" [value]="inputFieldValue" (focus)="onInputFocus($event)" (keydown)="onInputKeydown($event)" (click)="onInputClick()" (blur)="onInputBlur($event)"
+                    [readonly]="readonlyInput" (input)="onUserInput($event)" [ngStyle]="inputStyle" [class]="inputStyleClass" [placeholder]="placeholder||''" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.inputmode]="touchUI ? 'off' : null"
+                    [ngClass]="'p-inputtext p-component'" autocomplete="off" [attr.aria-labelledby]="ariaLabelledBy"
+                    ><button type="button" [attr.aria-label]="iconAriaLabel" [icon]="icon" pButton pRipple *ngIf="showIcon" (click)="onButtonClick($event,inputfield)" class="p-datepicker-trigger"
+                    [disabled]="disabled" tabindex="0"></button>
+            </ng-template>
+            <div #contentWrapper [class]="panelStyleClass" [ngStyle]="panelStyle" [ngClass]="{'p-datepicker p-component': true, 'p-datepicker-inline':inline,
+                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}"
+                [@overlayAnimation]="touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:
+                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                                            [@.disabled]="inline === true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)" (click)="onOverlayClick($event)" *ngIf="inline || overlayVisible">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="!timeOnly">
+                    <div class="p-datepicker-group-container">
+                        <div class="p-datepicker-group" *ngFor="let month of months; let i = index;">
+                            <div class="p-datepicker-header">
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-prev p-link" (click)="onPrevButtonClick($event)" *ngIf="i === 0" type="button" pRipple>
+                                    <span class="p-datepicker-prev-icon pi pi-chevron-left"></span>
+                                </button>
+                                <div class="p-datepicker-title">
+                                    <span class="p-datepicker-month" *ngIf="!monthNavigator && (view !== 'month')">{{getTranslation('monthNames')[month.month]}}</span>
+                                    <select tabindex="0" class="p-datepicker-month" *ngIf="monthNavigator && (view !== 'month') && numberOfMonths === 1" (change)="onMonthDropdownChange($event.target.value)">
+                                        <option [value]="i" *ngFor="let monthName of getTranslation('monthNames');let i = index" [selected]="i === month.month">{{monthName}}</option>
+                                    </select>
+                                    <select tabindex="0" class="p-datepicker-year" *ngIf="yearNavigator && numberOfMonths === 1" (change)="onYearDropdownChange($event.target.value)">
+                                        <option [value]="year" *ngFor="let year of yearOptions" [selected]="year === currentYear">{{year}}</option>
+                                    </select>
+                                    <span class="p-datepicker-year" *ngIf="!yearNavigator">{{view === 'month' ? currentYear : month.year}}</span>
+                                </div>
+                                <button (keydown)="onContainerButtonKeydown($event)" class="p-datepicker-next p-link" (click)="onNextButtonClick($event)" *ngIf="numberOfMonths === 1 ? true : (i === numberOfMonths -1)" type="button" pRipple>
+                                    <span class="p-datepicker-next-icon pi pi-chevron-right"></span>
+                                </button>
+                            </div>
+                            <div class="p-datepicker-calendar-container" *ngIf="view ==='date'">
+                                <table class="p-datepicker-calendar">
+                                    <thead>
+                                        <tr>
+                                            <th *ngIf="showWeek" class="p-datepicker-weekheader p-disabled">
+                                                <span>{{getTranslation('weekHeader')}}</span>
+                                            </th>
+                                            <th scope="col" *ngFor="let weekDay of weekDays;let begin = first; let end = last">
+                                                <span>{{weekDay}}</span>
+                                            </th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr *ngFor="let week of month.dates; let j = index;">
+                                            <td *ngIf="showWeek" class="p-datepicker-weeknumber">
+                                                <span class="p-disabled">
+                                                    {{month.weekNumbers[j]}}
+                                                </span>
+                                            </td>
+                                            <td *ngFor="let date of week" [ngClass]="{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}">
+                                                <ng-container *ngIf="date.otherMonth ? showOtherMonths : true">
+                                                    <span [ngClass]="{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}"
+                                                        (click)="onDateSelect($event,date)" draggable="false" (keydown)="onDateCellKeydown($event,date,i)" pRipple>
+                                                        <ng-container *ngIf="!dateTemplate">{{date.day}}</ng-container>
+                                                        <ng-container *ngTemplateOutlet="dateTemplate; context: {$implicit: date}"></ng-container>
+                                                    </span>
+                                                </ng-container>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-monthpicker" *ngIf="view === 'month'">
+                        <span *ngFor="let m of monthPickerValues; let i = index" (click)="onMonthSelect($event, i)" (keydown)="onMonthCellKeydown($event,i)" class="p-monthpicker-month" [ngClass]="{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}" pRipple>
+                            {{m}}
+                        </span>
+                    </div>
+                </ng-container>
+                <div class="p-timepicker" *ngIf="showTime||timeOnly">
+                    <div class="p-hour-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentHour < 10">0</ng-container>{{currentHour}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementHour($event)" (mousedown)="onTimePickerElementMouseDown($event, 0, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-minute-picker">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentMinute < 10">0</ng-container>{{currentMinute}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementMinute($event)" (mousedown)="onTimePickerElementMouseDown($event, 1, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-separator" *ngIf="showSeconds">
+                        <span>{{timeSeparator}}</span>
+                    </div>
+                    <div class="p-second-picker" *ngIf="showSeconds">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="incrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, 1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span><ng-container *ngIf="currentSecond < 10">0</ng-container>{{currentSecond}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (keydown.enter)="decrementSecond($event)" (mousedown)="onTimePickerElementMouseDown($event, 2, -1)" (mouseup)="onTimePickerElementMouseUp($event)" (mouseleave)="onTimePickerElementMouseLeave()" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                    <div class="p-ampm-picker" *ngIf="hourFormat=='12'">
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-up"></span>
+                        </button>
+                        <span>{{pm ? 'PM' : 'AM'}}</span>
+                        <button class="p-link" type="button" (keydown)="onContainerButtonKeydown($event)" (click)="toggleAMPM($event)" (keydown.enter)="toggleAMPM($event)" pRipple>
+                            <span class="pi pi-chevron-down"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-datepicker-buttonbar" *ngIf="showButtonBar">
+                    <button type="button" [label]="getTranslation('today')" (keydown)="onContainerButtonKeydown($event)" (click)="onTodayButtonClick($event)" pButton pRipple [ngClass]="[todayButtonStyleClass]"></button>
+                    <button type="button" [label]="getTranslation('clear')" (keydown)="onContainerButtonKeydown($event)" (click)="onClearButtonClick($event)" pButton pRipple [ngClass]="[clearButtonStyleClass]"></button>
+                </div>
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            state('visibleTouchUI', style({
+                                transform: 'translate(-50%,-50%)',
+                                opacity: 1
+                            })),
+                            transition('void => visible', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ]),
+                            transition('void => visibleTouchUI', [
+                                style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visibleTouchUI => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    opacity: 0,
+                                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'
+                                }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], iconAriaLabel: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dateFormat: [{
+                type: Input
+            }], multipleSeparator: [{
+                type: Input
+            }], rangeSeparator: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], showOtherMonths: [{
+                type: Input
+            }], selectOtherMonths: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], readonlyInput: [{
+                type: Input
+            }], shortYearCutoff: [{
+                type: Input
+            }], monthNavigator: [{
+                type: Input
+            }], yearNavigator: [{
+                type: Input
+            }], hourFormat: [{
+                type: Input
+            }], timeOnly: [{
+                type: Input
+            }], stepHour: [{
+                type: Input
+            }], stepMinute: [{
+                type: Input
+            }], stepSecond: [{
+                type: Input
+            }], showSeconds: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], showOnFocus: [{
+                type: Input
+            }], showWeek: [{
+                type: Input
+            }], dataType: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], maxDateCount: [{
+                type: Input
+            }], showButtonBar: [{
+                type: Input
+            }], todayButtonStyleClass: [{
+                type: Input
+            }], clearButtonStyleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], keepInvalid: [{
+                type: Input
+            }], hideOnDateTimeSelect: [{
+                type: Input
+            }], numberOfMonths: [{
+                type: Input
+            }], view: [{
+                type: Input
+            }], touchUI: [{
+                type: Input
+            }], timeSeparator: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], firstDayOfWeek: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onTodayClick: [{
+                type: Output
+            }], onClearClick: [{
+                type: Output
+            }], onMonthChange: [{
+                type: Output
+            }], onYearChange: [{
+                type: Output
+            }], onClickOutside: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], tabindex: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield', { static: false }]
+            }], content: [{
+                type: ViewChild,
+                args: ['contentWrapper', { static: false }]
+            }], defaultDate: [{
+                type: Input
+            }], minDate: [{
+                type: Input
+            }], maxDate: [{
+                type: Input
+            }], disabledDates: [{
+                type: Input
+            }], disabledDays: [{
+                type: Input
+            }], yearRange: [{
+                type: Input
+            }], showTime: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }] } });
+class CalendarModule {
+}
+CalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });
+CalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule],
+                    exports: [Calendar, ButtonModule, SharedModule],
+                    declarations: [Calendar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-calendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-calendar.mjs","sources":["../../src/app/components/calendar/calendar.ts","../../src/app/components/calendar/primeng-calendar.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,OnInit,Input,Output,EventEmitter,forwardRef,Renderer2,\n        ViewChild,ChangeDetectorRef,TemplateRef,ContentChildren,QueryList,NgZone,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {SharedModule,PrimeTemplate,PrimeNGConfig,TranslationKeys, OverlayService} from 'primeng/api';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {Subscription} from 'rxjs';\nimport {ZIndexUtils} from 'primeng/utils';\n\nexport const CALENDAR_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Calendar),\n    multi: true\n};\n\nexport interface LocaleSettings {\n    firstDayOfWeek?: number;\n    dayNames?: string[];\n    dayNamesShort?: string[];\n    dayNamesMin?: string[];\n    monthNames?: string[];\n    monthNamesShort?: string[];\n    today?: string;\n    clear?: string;\n    dateFormat?: string;\n    weekHeader?: string;\n}\n\n@Component({\n    selector: 'p-calendar',\n    template:  `\n        <span #container [ngClass]=\"{'p-calendar':true, 'p-calendar-w-btn': showIcon, 'p-calendar-timeonly': timeOnly, 'p-calendar-disabled':disabled, 'p-focus': focus}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ng-template [ngIf]=\"!inline\">\n                <input #inputfield type=\"text\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.required]=\"required\" [attr.aria-required]=\"required\" [value]=\"inputFieldValue\" (focus)=\"onInputFocus($event)\" (keydown)=\"onInputKeydown($event)\" (click)=\"onInputClick()\" (blur)=\"onInputBlur($event)\"\n                    [readonly]=\"readonlyInput\" (input)=\"onUserInput($event)\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [placeholder]=\"placeholder||''\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.inputmode]=\"touchUI ? 'off' : null\"\n                    [ngClass]=\"'p-inputtext p-component'\" autocomplete=\"off\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n                    ><button type=\"button\" [attr.aria-label]=\"iconAriaLabel\" [icon]=\"icon\" pButton pRipple *ngIf=\"showIcon\" (click)=\"onButtonClick($event,inputfield)\" class=\"p-datepicker-trigger\"\n                    [disabled]=\"disabled\" tabindex=\"0\"></button>\n            </ng-template>\n            <div #contentWrapper [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\" [ngClass]=\"{'p-datepicker p-component': true, 'p-datepicker-inline':inline,\n                'p-disabled':disabled,'p-datepicker-timeonly':timeOnly,'p-datepicker-multiple-month': this.numberOfMonths > 1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n                [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n                                            {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                                            [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"!timeOnly\">\n                    <div class=\"p-datepicker-group-container\">\n                        <div class=\"p-datepicker-group\" *ngFor=\"let month of months; let i = index;\">\n                            <div class=\"p-datepicker-header\">\n                                <button (keydown)=\"onContainerButtonKeydown($event)\" class=\"p-datepicker-prev p-link\" (click)=\"onPrevButtonClick($event)\" *ngIf=\"i === 0\" type=\"button\" pRipple>\n                                    <span class=\"p-datepicker-prev-icon pi pi-chevron-left\"></span>\n                                </button>\n                                <div class=\"p-datepicker-title\">\n                                    <span class=\"p-datepicker-month\" *ngIf=\"!monthNavigator && (view !== 'month')\">{{getTranslation('monthNames')[month.month]}}</span>\n                                    <select tabindex=\"0\" class=\"p-datepicker-month\" *ngIf=\"monthNavigator && (view !== 'month') && numberOfMonths === 1\" (change)=\"onMonthDropdownChange($event.target.value)\">\n                                        <option [value]=\"i\" *ngFor=\"let monthName of getTranslation('monthNames');let i = index\" [selected]=\"i === month.month\">{{monthName}}</option>\n                                    </select>\n                                    <select tabindex=\"0\" class=\"p-datepicker-year\" *ngIf=\"yearNavigator && numberOfMonths === 1\" (change)=\"onYearDropdownChange($event.target.value)\">\n                                        <option [value]=\"year\" *ngFor=\"let year of yearOptions\" [selected]=\"year === currentYear\">{{year}}</option>\n                                    </select>\n                                    <span class=\"p-datepicker-year\" *ngIf=\"!yearNavigator\">{{view === 'month' ? currentYear : month.year}}</span>\n                                </div>\n                                <button (keydown)=\"onContainerButtonKeydown($event)\" class=\"p-datepicker-next p-link\" (click)=\"onNextButtonClick($event)\" *ngIf=\"numberOfMonths === 1 ? true : (i === numberOfMonths -1)\" type=\"button\" pRipple>\n                                    <span class=\"p-datepicker-next-icon pi pi-chevron-right\"></span>\n                                </button>\n                            </div>\n                            <div class=\"p-datepicker-calendar-container\" *ngIf=\"view ==='date'\">\n                                <table class=\"p-datepicker-calendar\">\n                                    <thead>\n                                        <tr>\n                                            <th *ngIf=\"showWeek\" class=\"p-datepicker-weekheader p-disabled\">\n                                                <span>{{getTranslation('weekHeader')}}</span>\n                                            </th>\n                                            <th scope=\"col\" *ngFor=\"let weekDay of weekDays;let begin = first; let end = last\">\n                                                <span>{{weekDay}}</span>\n                                            </th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <tr *ngFor=\"let week of month.dates; let j = index;\">\n                                            <td *ngIf=\"showWeek\" class=\"p-datepicker-weeknumber\">\n                                                <span class=\"p-disabled\">\n                                                    {{month.weekNumbers[j]}}\n                                                </span>\n                                            </td>\n                                            <td *ngFor=\"let date of week\" [ngClass]=\"{'p-datepicker-other-month': date.otherMonth,'p-datepicker-today':date.today}\">\n                                                <ng-container *ngIf=\"date.otherMonth ? showOtherMonths : true\">\n                                                    <span [ngClass]=\"{'p-highlight':isSelected(date), 'p-disabled': !date.selectable}\"\n                                                        (click)=\"onDateSelect($event,date)\" draggable=\"false\" (keydown)=\"onDateCellKeydown($event,date,i)\" pRipple>\n                                                        <ng-container *ngIf=\"!dateTemplate\">{{date.day}}</ng-container>\n                                                        <ng-container *ngTemplateOutlet=\"dateTemplate; context: {$implicit: date}\"></ng-container>\n                                                    </span>\n                                                </ng-container>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"p-monthpicker\" *ngIf=\"view === 'month'\">\n                        <span *ngFor=\"let m of monthPickerValues; let i = index\" (click)=\"onMonthSelect($event, i)\" (keydown)=\"onMonthCellKeydown($event,i)\" class=\"p-monthpicker-month\" [ngClass]=\"{'p-highlight': isMonthSelected(i), 'p-disabled':!isSelectable(1, i, this.currentYear, false)}\" pRipple>\n                            {{m}}\n                        </span>\n                    </div>\n                </ng-container>\n                <div class=\"p-timepicker\" *ngIf=\"showTime||timeOnly\">\n                    <div class=\"p-hour-picker\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementHour($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 0, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentHour < 10\">0</ng-container>{{currentHour}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementHour($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 0, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-separator\">\n                        <span>{{timeSeparator}}</span>\n                    </div>\n                    <div class=\"p-minute-picker\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementMinute($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 1, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentMinute < 10\">0</ng-container>{{currentMinute}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementMinute($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 1, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-separator\" *ngIf=\"showSeconds\">\n                        <span>{{timeSeparator}}</span>\n                    </div>\n                    <div class=\"p-second-picker\" *ngIf=\"showSeconds\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"incrementSecond($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 2, 1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span><ng-container *ngIf=\"currentSecond < 10\">0</ng-container>{{currentSecond}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (keydown.enter)=\"decrementSecond($event)\" (mousedown)=\"onTimePickerElementMouseDown($event, 2, -1)\" (mouseup)=\"onTimePickerElementMouseUp($event)\" (mouseleave)=\"onTimePickerElementMouseLeave()\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                    <div class=\"p-ampm-picker\" *ngIf=\"hourFormat=='12'\">\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"toggleAMPM($event)\" (keydown.enter)=\"toggleAMPM($event)\" pRipple>\n                            <span class=\"pi pi-chevron-up\"></span>\n                        </button>\n                        <span>{{pm ? 'PM' : 'AM'}}</span>\n                        <button class=\"p-link\" type=\"button\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"toggleAMPM($event)\" (keydown.enter)=\"toggleAMPM($event)\" pRipple>\n                            <span class=\"pi pi-chevron-down\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"p-datepicker-buttonbar\" *ngIf=\"showButtonBar\">\n                    <button type=\"button\" [label]=\"getTranslation('today')\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"onTodayButtonClick($event)\" pButton pRipple [ngClass]=\"[todayButtonStyleClass]\"></button>\n                    <button type=\"button\" [label]=\"getTranslation('clear')\" (keydown)=\"onContainerButtonKeydown($event)\" (click)=\"onClearButtonClick($event)\" pButton pRipple [ngClass]=\"[clearButtonStyleClass]\"></button>\n                </div>\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            state('visibleTouchUI', style({\n                transform: 'translate(-50%,-50%)',\n                opacity: 1\n            })),\n            transition('void => visible', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n            ]),\n            transition('void => visibleTouchUI', [\n                style({opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visibleTouchUI => void', [\n                animate(('{{hideTransitionParams}}'),\n                style({\n                    opacity: 0,\n                    transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n                }))\n            ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus'\n    },\n    providers: [CALENDAR_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./calendar.css']\n})\nexport class Calendar implements OnInit,OnDestroy,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() inputStyleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() iconAriaLabel: string;\n\n    @Input() disabled: any;\n\n    @Input() dateFormat: string;\n\n    @Input() multipleSeparator: string = ',';\n\n    @Input() rangeSeparator: string = '-';\n\n    @Input() inline: boolean = false;\n\n    @Input() showOtherMonths: boolean = true;\n\n    @Input() selectOtherMonths: boolean;\n\n    @Input() showIcon: boolean;\n\n    @Input() icon: string = 'pi pi-calendar';\n\n    @Input() appendTo: any;\n\n    @Input() readonlyInput: boolean;\n\n    @Input() shortYearCutoff: any = '+10';\n\n    @Input() monthNavigator: boolean;\n\n    @Input() yearNavigator: boolean;\n\n    @Input() hourFormat: string = '24';\n\n    @Input() timeOnly: boolean;\n\n    @Input() stepHour: number = 1;\n\n    @Input() stepMinute: number = 1;\n\n    @Input() stepSecond: number = 1;\n\n    @Input() showSeconds: boolean = false;\n\n    @Input() required: boolean;\n\n    @Input() showOnFocus: boolean = true;\n\n    @Input() showWeek: boolean = false;\n\n    @Input() dataType: string = 'date';\n\n    @Input() selectionMode: string = 'single';\n\n    @Input() maxDateCount: number;\n\n    @Input() showButtonBar: boolean;\n\n    @Input() todayButtonStyleClass: string = 'p-button-text';\n\n    @Input() clearButtonStyleClass: string = 'p-button-text';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() panelStyleClass: string;\n\n    @Input() panelStyle: any;\n\n    @Input() keepInvalid: boolean = false;\n\n    @Input() hideOnDateTimeSelect: boolean = true;\n\n    @Input() numberOfMonths: number = 1;\n\n    @Input() view: string = 'date';\n\n    @Input() touchUI: boolean;\n\n    @Input() timeSeparator: string = \":\";\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() firstDayOfWeek: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTodayClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClearClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMonthChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onYearChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClickOutside: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Input() tabindex: number;\n\n    @ViewChild('container', { static: false }) containerViewChild: ElementRef;\n\n    @ViewChild('inputfield', { static: false }) inputfieldViewChild: ElementRef;\n\n    @ViewChild('contentWrapper', { static: false }) set content (content: ElementRef) {\n        this.contentViewChild = content;\n\n        if (this.contentViewChild) {\n            if (this.isMonthNavigate) {\n                Promise.resolve(null).then(() => this.updateFocus());\n                this.isMonthNavigate = false;\n            }\n            else {\n                this.initFocusableCell();\n            }\n        }\n    };\n\n    contentViewChild: ElementRef;\n\n    value: any;\n\n    dates: any[];\n\n    months: any[];\n\n    monthPickerValues: any[];\n\n    weekDays: string[];\n\n    currentMonth: number;\n\n    currentYear: number;\n\n    currentHour: number;\n\n    currentMinute: number;\n\n    currentSecond: number;\n\n    pm: boolean;\n\n    mask: HTMLDivElement;\n\n    maskClickListener: Function;\n\n    overlay: HTMLDivElement;\n\n    overlayVisible: boolean;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    calendarElement: any;\n\n    timePickerTimer:any;\n\n    documentClickListener: any;\n\n    animationEndListener: any;\n\n    ticksTo1970: number;\n\n    yearOptions: number[];\n\n    focus: boolean;\n\n    isKeydown: boolean;\n\n    filled: boolean;\n\n    inputFieldValue: string = null;\n\n    _minDate: Date;\n\n    _maxDate: Date;\n\n    _showTime: boolean;\n\n    _yearRange: string;\n\n    preventDocumentListener: boolean;\n\n    dateTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    disabledDateTemplate: TemplateRef<any>;\n\n    _disabledDates: Array<Date>;\n\n    _disabledDays: Array<number>;\n\n    selectElement: any;\n\n    todayElement: any;\n\n    focusElement: any;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    navigationState: any = null;\n\n    isMonthNavigate: boolean;\n\n    initialized: boolean;\n\n    translationSubscription: Subscription;\n\n    _locale: LocaleSettings;\n\n    @Input() get defaultDate(): Date {\n        return this._defaultDate;\n    };\n\n    set defaultDate(defaultDate: Date) {\n        this._defaultDate = defaultDate;\n\n        if (this.initialized) {\n            const date = defaultDate||new Date();\n            this.currentMonth = date.getMonth();\n            this.currentYear = date.getFullYear();\n            this.initTime(date);\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    _defaultDate: Date;\n\n    @Input() get minDate(): Date {\n        return this._minDate;\n    }\n\n    set minDate(date: Date) {\n        this._minDate = date;\n\n        if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get maxDate(): Date {\n        return this._maxDate;\n    }\n\n    set maxDate(date: Date) {\n        this._maxDate = date;\n\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get disabledDates(): Date[] {\n        return this._disabledDates;\n    }\n\n    set disabledDates(disabledDates: Date[]) {\n        this._disabledDates = disabledDates;\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get disabledDays(): number[] {\n        return this._disabledDays;\n    }\n\n    set disabledDays(disabledDays: number[]) {\n        this._disabledDays = disabledDays;\n\n        if (this.currentMonth != undefined && this.currentMonth != null  && this.currentYear) {\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    @Input() get yearRange(): string {\n        return this._yearRange;\n    }\n\n    set yearRange(yearRange: string) {\n        this._yearRange = yearRange;\n\n        if (yearRange) {\n            const years = yearRange.split(':');\n            const yearStart = parseInt(years[0]);\n            const yearEnd = parseInt(years[1]);\n\n            this.populateYearOptions(yearStart, yearEnd);\n        }\n    }\n\n    @Input() get showTime(): boolean {\n        return this._showTime;\n    }\n\n    set showTime(showTime: boolean) {\n        this._showTime = showTime;\n\n        if (this.currentHour === undefined) {\n            this.initTime(this.value||new Date());\n        }\n        this.updateInputfield();\n    }\n\n    get locale() {\n       return this._locale;\n    }\n\n    @Input()\n    set locale(newLocale: LocaleSettings) {\n        console.warn(\"Locale property has no effect, use new i18n API instead.\");\n    }\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, private zone: NgZone, private config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        const date = this.defaultDate||new Date();\n        this.currentMonth = date.getMonth();\n        this.currentYear = date.getFullYear();\n\n        if (this.view === 'date') {\n            this.createWeekDays();\n            this.initTime(date);\n            this.createMonths(this.currentMonth, this.currentYear);\n            this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);\n        }\n        else if (this.view === 'month') {\n            this.createMonthPickerValues();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.createWeekDays();\n        });\n\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'date':\n                    this.dateTemplate = item.template;\n                break;\n\n                case 'disabledDate':\n                    this.disabledDateTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.dateTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    populateYearOptions(start, end) {\n        this.yearOptions = [];\n\n        for (let i = start; i <= end; i++) {\n            this.yearOptions.push(i);\n        }\n    }\n\n    createWeekDays() {\n        this.weekDays = [];\n        let dayIndex = this.firstDayOfWeek;\n        let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n        for (let i = 0; i < 7; i++) {\n            this.weekDays.push(dayLabels[dayIndex]);\n            dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;\n        }\n    }\n\n    createMonthPickerValues() {\n        this.monthPickerValues = [];\n        let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);\n        for (let i = 0; i <= 11; i++) {\n            this.monthPickerValues.push(monthLabels[i]);\n        }\n    }\n\n    createMonths(month: number, year: number) {\n        this.months = this.months = [];\n        for (let i = 0 ; i < this.numberOfMonths; i++) {\n            let m = month + i;\n            let y = year;\n            if (m > 11) {\n                m = m % 11 - 1;\n                y = year + 1;\n            }\n\n            this.months.push(this.createMonth(m, y));\n        }\n    }\n\n    getWeekNumber(date: Date) {\n        let checkDate = new Date(date.getTime());\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ));\n\t\tlet time = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 );\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round((time - checkDate.getTime()) / 86400000 ) / 7 ) + 1;\n    }\n\n    createMonth(month: number, year: number) {\n        let dates = [];\n        let firstDay = this.getFirstDayOfMonthIndex(month, year);\n        let daysLength = this.getDaysCountInMonth(month, year);\n        let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n        let dayNo = 1;\n        let today = new Date();\n        let weekNumbers = [];\n        let monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n        for (let i = 0; i < monthRows; i++) {\n            let week = [];\n\n            if (i == 0) {\n                for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {\n                    let prev = this.getPreviousMonthAndYear(month, year);\n                    week.push({day: j, month: prev.month, year: prev.year, otherMonth: true,\n                            today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true)});\n                }\n\n                let remainingDaysLength = 7 - week.length;\n                for (let j = 0; j < remainingDaysLength; j++) {\n                    week.push({day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n                            selectable: this.isSelectable(dayNo, month, year, false)});\n                    dayNo++;\n                }\n            }\n            else {\n                for (let j = 0; j < 7; j++) {\n                    if (dayNo > daysLength) {\n                        let next = this.getNextMonthAndYear(month, year);\n                        week.push({day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,\n                                    today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n                                    selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true)});\n                    }\n                    else {\n                        week.push({day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n                            selectable: this.isSelectable(dayNo, month, year, false)});\n                    }\n\n                    dayNo++;\n                }\n            }\n\n            if (this.showWeek) {\n                weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n            }\n\n            dates.push(week);\n        }\n\n        return {\n            month: month,\n            year: year,\n            dates: dates,\n            weekNumbers: weekNumbers\n        };\n    }\n\n    initTime(date: Date) {\n        this.pm = date.getHours() > 11;\n\n        if (this.showTime) {\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n            this.setCurrentHourPM(date.getHours());\n        }\n        else if (this.timeOnly) {\n            this.currentMinute = 0;\n            this.currentHour = 0;\n            this.currentSecond = 0;\n        }\n    }\n\n    navBackward(event) {\n        event.stopPropagation();\n\n        if (this.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.isMonthNavigate = true;\n\n        if (this.view === 'month') {\n            this.decrementYear();\n            setTimeout(()=> {\n                this.updateFocus();\n            },1);\n        }\n        else {\n            if (this.currentMonth === 0) {\n                this.currentMonth = 11;\n                this.decrementYear();\n            }\n            else {\n                this.currentMonth--;\n            }\n\n            this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    navForward(event) {\n        event.stopPropagation();\n\n        if (this.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.isMonthNavigate = true;\n\n        if (this.view === 'month') {\n            this.incrementYear();\n            setTimeout(()=> {\n                this.updateFocus();\n            },1);\n        }\n        else {\n            if (this.currentMonth === 11) {\n                this.currentMonth = 0;\n                this.incrementYear();\n            }\n            else {\n                this.currentMonth++;\n            }\n\n            this.onMonthChange.emit({month: this.currentMonth + 1, year: this.currentYear});\n            this.createMonths(this.currentMonth, this.currentYear);\n        }\n    }\n\n    decrementYear() {\n        this.currentYear--;\n\n        if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n            this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n        }\n    }\n\n    incrementYear() {\n        this.currentYear++;\n\n        if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n            let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n            this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n        }\n    }\n\n    onDateSelect(event, dateMeta) {\n        if (this.disabled || !dateMeta.selectable) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n            this.value = this.value.filter((date, i) => {\n                return !this.isDateEquals(date, dateMeta);\n            });\n            if (this.value.length === 0) {\n                this.value = null;\n            }\n            this.updateModel(this.value);\n        }\n        else {\n            if (this.shouldSelectDate(dateMeta)) {\n                this.selectDate(dateMeta);\n            }\n        }\n\n        if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n            setTimeout(() => {\n                event.preventDefault();\n                this.hideOverlay();\n\n                if (this.mask) {\n                    this.disableModality();\n                }\n\n                this.cd.markForCheck();\n            }, 150);\n        }\n\n        this.updateInputfield();\n        event.preventDefault();\n    }\n\n    shouldSelectDate(dateMeta) {\n        if (this.isMultipleSelection())\n            return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;\n        else\n            return true;\n    }\n\n    onMonthSelect(event, index) {\n        if (!DomHandler.hasClass(event.target, 'p-disabled')) {\n            this.onDateSelect(event, {year: this.currentYear, month: index, day: 1, selectable: true});\n        }\n    }\n\n    updateInputfield() {\n        let formattedValue = '';\n\n        if (this.value) {\n            if (this.isSingleSelection()) {\n                formattedValue = this.formatDateTime(this.value);\n            }\n            else if (this.isMultipleSelection()) {\n                for (let i = 0; i < this.value.length; i++) {\n                    let dateAsString = this.formatDateTime(this.value[i]);\n                    formattedValue += dateAsString;\n                    if (i !== (this.value.length - 1)) {\n                        formattedValue += this.multipleSeparator+' ';\n                    }\n                }\n            }\n            else if (this.isRangeSelection()) {\n                if (this.value && this.value.length) {\n                    let startDate = this.value[0];\n                    let endDate = this.value[1];\n\n                    formattedValue = this.formatDateTime(startDate);\n                    if (endDate) {\n                        formattedValue += ' '+this.rangeSeparator +' ' + this.formatDateTime(endDate);\n                    }\n                }\n            }\n        }\n\n        this.inputFieldValue = formattedValue;\n        this.updateFilledState();\n        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n            this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n        }\n    }\n\n    formatDateTime(date) {\n        let formattedValue = null;\n        if (date) {\n            if (this.timeOnly) {\n                formattedValue = this.formatTime(date);\n            }\n            else {\n                formattedValue = this.formatDate(date, this.getDateFormat());\n                if (this.showTime) {\n                    formattedValue += ' ' + this.formatTime(date);\n                }\n            }\n        }\n\n        return formattedValue;\n    }\n\n    setCurrentHourPM(hours: number) {\n        if (this.hourFormat == '12') {\n            this.pm = hours > 11;\n            if (hours >= 12) {\n                this.currentHour = (hours == 12) ? 12 : hours - 12;\n            }\n            else {\n                this.currentHour = (hours == 0) ? 12 : hours;\n            }\n        }\n        else {\n            this.currentHour = hours;\n        }\n    }\n\n    selectDate(dateMeta) {\n        let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n        if (this.showTime) {\n            if (this.hourFormat == '12') {\n                if (this.currentHour === 12)\n                    date.setHours(this.pm ? 12 : 0);\n                else\n                    date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n            }\n            else {\n                date.setHours(this.currentHour);\n            }\n\n            date.setMinutes(this.currentMinute);\n            date.setSeconds(this.currentSecond);\n        }\n\n        if (this.minDate && this.minDate > date) {\n            date = this.minDate;\n            this.setCurrentHourPM(date.getHours());\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n        }\n\n        if (this.maxDate && this.maxDate < date) {\n            date = this.maxDate;\n            this.setCurrentHourPM(date.getHours());\n            this.currentMinute = date.getMinutes();\n            this.currentSecond = date.getSeconds();\n        }\n\n        if (this.isSingleSelection()) {\n            this.updateModel(date);\n        }\n        else if (this.isMultipleSelection()) {\n            this.updateModel(this.value ? [...this.value, date] : [date]);\n        }\n        else if (this.isRangeSelection()) {\n            if (this.value && this.value.length) {\n                let startDate = this.value[0];\n                let endDate = this.value[1];\n\n                if (!endDate && date.getTime() >= startDate.getTime()) {\n                    endDate = date;\n                }\n                else {\n                    startDate = date;\n                    endDate = null;\n                }\n\n                this.updateModel([startDate, endDate]);\n            }\n            else {\n                this.updateModel([date, null]);\n            }\n        }\n\n        this.onSelect.emit(date);\n    }\n\n    updateModel(value) {\n        this.value = value;\n\n        if (this.dataType == 'date') {\n            this.onModelChange(this.value);\n        }\n        else if (this.dataType == 'string') {\n            if (this.isSingleSelection()) {\n                this.onModelChange(this.formatDateTime(this.value));\n            }\n            else {\n                let stringArrValue = null;\n                if (this.value) {\n                    stringArrValue = this.value.map(date => this.formatDateTime(date));\n                }\n                this.onModelChange(stringArrValue);\n            }\n        }\n    }\n\n    getFirstDayOfMonthIndex(month: number, year: number) {\n        let day = new Date();\n        day.setDate(1);\n        day.setMonth(month);\n        day.setFullYear(year);\n\n        let dayIndex = day.getDay() + this.getSundayIndex();\n        return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n    }\n\n    getDaysCountInMonth(month: number, year: number) {\n        return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n    }\n\n    getDaysCountInPrevMonth(month: number, year: number) {\n        let prev = this.getPreviousMonthAndYear(month, year);\n        return this.getDaysCountInMonth(prev.month, prev.year);\n    }\n\n    getPreviousMonthAndYear(month: number, year: number) {\n        let m, y;\n\n        if (month === 0) {\n            m = 11;\n            y = year - 1;\n        }\n        else {\n            m = month - 1;\n            y = year;\n        }\n\n        return {'month':m,'year':y};\n    }\n\n    getNextMonthAndYear(month: number, year: number) {\n        let m, y;\n\n        if (month === 11) {\n            m = 0;\n            y = year + 1;\n        }\n        else {\n            m = month + 1;\n            y = year;\n        }\n\n        return {'month':m,'year':y};\n    }\n\n    getSundayIndex() {\n        return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;\n    }\n\n    isSelected(dateMeta): boolean {\n        if (this.value) {\n            if (this.isSingleSelection()) {\n                return this.isDateEquals(this.value, dateMeta);\n            }\n            else if (this.isMultipleSelection()) {\n                let selected = false;\n                for (let date of this.value) {\n                    selected = this.isDateEquals(date, dateMeta);\n                    if (selected) {\n                        break;\n                    }\n                }\n\n                return selected;\n            }\n            else if (this.isRangeSelection()) {\n                if (this.value[1])\n                    return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);\n                else\n                    return this.isDateEquals(this.value[0], dateMeta)\n            }\n        }\n        else {\n            return false;\n        }\n    }\n\n    isMonthSelected(month: number): boolean {\n        let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;\n        return this.isSelected({year: this.currentYear, month: month, day: day, selectable: true});\n    }\n\n    isDateEquals(value, dateMeta) {\n        if (value)\n            return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;\n        else\n            return false;\n    }\n\n    isDateBetween(start, end, dateMeta) {\n        let between : boolean = false;\n        if (start && end) {\n            let date: Date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n            return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n        }\n\n        return between;\n    }\n\n    isSingleSelection(): boolean {\n        return this.selectionMode === 'single';\n    }\n\n    isRangeSelection(): boolean {\n        return this.selectionMode === 'range';\n    }\n\n    isMultipleSelection(): boolean {\n        return this.selectionMode === 'multiple';\n    }\n\n    isToday(today, day, month, year): boolean {\n        return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n    }\n\n    isSelectable(day, month, year, otherMonth): boolean {\n        let validMin = true;\n        let validMax = true;\n        let validDate = true;\n        let validDay = true;\n\n        if (otherMonth && !this.selectOtherMonths) {\n            return false;\n        }\n\n        if (this.minDate) {\n             if (this.minDate.getFullYear() > year) {\n                 validMin = false;\n             }\n             else if (this.minDate.getFullYear() === year) {\n                 if (this.minDate.getMonth() > month) {\n                     validMin = false;\n                 }\n                 else if (this.minDate.getMonth() === month) {\n                     if (this.minDate.getDate() > day) {\n                         validMin = false;\n                     }\n                 }\n             }\n        }\n\n        if (this.maxDate) {\n             if (this.maxDate.getFullYear() < year) {\n                 validMax = false;\n             }\n             else if (this.maxDate.getFullYear() === year) {\n                 if (this.maxDate.getMonth() < month) {\n                     validMax = false;\n                 }\n                 else if (this.maxDate.getMonth() === month) {\n                     if (this.maxDate.getDate() < day) {\n                         validMax = false;\n                     }\n                 }\n             }\n        }\n\n        if (this.disabledDates) {\n           validDate = !this.isDateDisabled(day,month,year);\n        }\n\n        if (this.disabledDays) {\n           validDay = !this.isDayDisabled(day,month,year)\n        }\n\n        return validMin && validMax && validDate && validDay;\n    }\n\n    isDateDisabled(day:number, month:number, year:number):boolean {\n        if (this.disabledDates) {\n            for (let disabledDate of this.disabledDates) {\n                if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    isDayDisabled(day:number, month:number, year:number):boolean {\n        if (this.disabledDays) {\n            let weekday = new Date(year, month, day);\n            let weekdayNumber = weekday.getDay();\n            return this.disabledDays.indexOf(weekdayNumber) !== -1;\n        }\n        return false;\n    }\n\n    onInputFocus(event: Event) {\n        this.focus = true;\n        if (this.showOnFocus) {\n            this.showOverlay();\n        }\n        this.onFocus.emit(event);\n    }\n\n    onInputClick() {\n        if (this.showOnFocus && !this.overlayVisible) {\n            this.showOverlay();\n        }\n    }\n\n    onInputBlur(event: Event) {\n        this.focus = false;\n        this.onBlur.emit(event);\n        if (!this.keepInvalid) {\n            this.updateInputfield();\n        }\n        this.onModelTouched();\n    }\n\n    onButtonClick(event, inputfield) {\n        if (!this.overlayVisible) {\n            inputfield.focus();\n            this.showOverlay();\n        }\n        else {\n            this.hideOverlay();\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onPrevButtonClick(event) {\n        this.navigationState = {backward: true, button: true};\n        this.navBackward(event);\n    }\n\n    onNextButtonClick(event) {\n        this.navigationState = {backward: false, button: true};\n        this.navForward(event);\n    }\n\n    onContainerButtonKeydown(event) {\n        switch (event.which) {\n           //tab\n           case 9:\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n           break;\n\n           //escape\n           case 27:\n               this.overlayVisible = false;\n               event.preventDefault();\n           break;\n\n           default:\n               //Noop\n           break;\n        }\n   }\n\n    onInputKeydown(event) {\n        this.isKeydown = true;\n        if (event.keyCode === 40 && this.contentViewChild) {\n            this.trapFocus(event);\n        }\n        else if (event.keyCode === 27) {\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n                event.preventDefault();\n            }\n        }\n        else if (event.keyCode === 13) {\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n                event.preventDefault();\n            }\n        }\n        else if (event.keyCode === 9 && this.contentViewChild) {\n            DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');\n            if (this.overlayVisible) {\n                this.overlayVisible = false;\n            }\n        }\n    }\n\n    onDateCellKeydown(event, date, groupIndex) {\n        const cellContent = event.currentTarget;\n        const cell = cellContent.parentElement;\n\n        switch (event.which) {\n            //down arrow\n            case 40: {\n                cellContent.tabIndex = '-1';\n                let cellIndex = DomHandler.index(cell);\n                let nextRow = cell.parentElement.nextElementSibling;\n                if (nextRow) {\n                    let focusCell = nextRow.children[cellIndex].children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigationState = {backward: false};\n                        this.navForward(event);\n                    }\n                    else {\n                        nextRow.children[cellIndex].children[0].tabIndex = '0';\n                        nextRow.children[cellIndex].children[0].focus();\n                    }\n                }\n                else {\n                    this.navigationState = {backward: false};\n                    this.navForward(event);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //up arrow\n            case 38: {\n                cellContent.tabIndex = '-1';\n                let cellIndex = DomHandler.index(cell);\n                let prevRow = cell.parentElement.previousElementSibling;\n                if (prevRow) {\n                    let focusCell = prevRow.children[cellIndex].children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigationState = {backward: true};\n                        this.navBackward(event);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigationState = {backward: true};\n                    this.navBackward(event);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //left arrow\n            case 37: {\n                cellContent.tabIndex = '-1';\n                let prevCell = cell.previousElementSibling;\n                if (prevCell) {\n                    let focusCell = prevCell.children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n                        this.navigateToMonth(true, groupIndex);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigateToMonth(true, groupIndex);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //right arrow\n            case 39: {\n                cellContent.tabIndex = '-1';\n                let nextCell = cell.nextElementSibling;\n                if (nextCell) {\n                    let focusCell = nextCell.children[0];\n                    if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n                        this.navigateToMonth(false, groupIndex);\n                    }\n                    else {\n                        focusCell.tabIndex = '0';\n                        focusCell.focus();\n                    }\n                }\n                else {\n                    this.navigateToMonth(false, groupIndex);\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //enter\n            case 13: {\n                this.onDateSelect(event, date);\n                event.preventDefault();\n                break;\n            }\n\n            //escape\n            case 27: {\n                this.overlayVisible = false;\n                event.preventDefault();\n                break;\n            }\n\n            //tab\n            case 9: {\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n                break;\n            }\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    onMonthCellKeydown(event, index) {\n        const cell = event.currentTarget;\n        switch (event.which) {\n            //arrows\n            case 38:\n            case 40: {\n                cell.tabIndex = '-1';\n                var cells = cell.parentElement.children;\n                var cellIndex = DomHandler.index(cell);\n                let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex -3];\n                if (nextCell) {\n                    nextCell.tabIndex = '0';\n                    nextCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //left arrow\n            case 37: {\n                cell.tabIndex = '-1';\n                let prevCell = cell.previousElementSibling;\n                if (prevCell) {\n                    prevCell.tabIndex = '0';\n                    prevCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //right arrow\n            case 39: {\n                cell.tabIndex = '-1';\n                let nextCell = cell.nextElementSibling;\n                if (nextCell) {\n                    nextCell.tabIndex = '0';\n                    nextCell.focus();\n                }\n                event.preventDefault();\n                break;\n            }\n\n            //enter\n            case 13: {\n                this.onMonthSelect(event, index);\n                event.preventDefault();\n                break;\n            }\n\n            //escape\n            case 27: {\n                this.overlayVisible = false;\n                event.preventDefault();\n                break;\n            }\n\n            //tab\n            case 9: {\n                if (!this.inline) {\n                    this.trapFocus(event);\n                }\n                break;\n            }\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    navigateToMonth(prev, groupIndex) {\n        if (prev) {\n            if (this.numberOfMonths === 1 || (groupIndex === 0)) {\n                this.navigationState = {backward: true};\n                this.navBackward(event);\n            }\n            else {\n                let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n                let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                let focusCell = cells[cells.length - 1];\n                focusCell.tabIndex = '0';\n                focusCell.focus();\n            }\n        }\n        else {\n            if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {\n                this.navigationState = {backward: false};\n                this.navForward(event);\n            }\n            else {\n                let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n                let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                focusCell.tabIndex = '0';\n                focusCell.focus();\n            }\n        }\n    }\n\n    updateFocus() {\n        let cell;\n        if (this.navigationState) {\n            if (this.navigationState.button) {\n                this.initFocusableCell();\n\n                if (this.navigationState.backward)\n                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();\n                else\n                    DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n            }\n            else {\n                if (this.navigationState.backward) {\n                    let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                    cell = cells[cells.length - 1];\n                }\n                else {\n                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n                }\n\n                if (cell) {\n                    cell.tabIndex = '0';\n                    cell.focus();\n                }\n            }\n\n            this.navigationState = null;\n        }\n        else {\n            this.initFocusableCell();\n        }\n    }\n\n    initFocusableCell() {\n        let cell;\n        if (this.view === 'month') {\n            let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n            let selectedCell= DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');\n            cells.forEach(cell => cell.tabIndex = -1);\n            cell = selectedCell || cells[0];\n\n            if (cells.length === 0) {\n                let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n                disabledCells.forEach(cell => cell.tabIndex = -1);\n            }\n        }\n        else {\n            cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');\n            if (!cell) {\n                let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n                if (todayCell)\n                    cell = todayCell;\n                else\n                    cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n            }\n        }\n\n        if (cell) {\n            cell.tabIndex = '0';\n        }\n    }\n\n    trapFocus(event) {\n        let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n\n        if (focusableElements && focusableElements.length > 0) {\n            if (!focusableElements[0].ownerDocument.activeElement) {\n                focusableElements[0].focus();\n            }\n            else {\n                let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                if (event.shiftKey) {\n                    if (focusedIndex == -1 || focusedIndex === 0) {\n                        if (this.focusTrap){\n                            focusableElements[focusableElements.length - 1].focus();\n                        }\n                        else {\n                            if (focusedIndex === -1)\n                                return this.hideOverlay();\n                            else if (focusedIndex === 0)\n                                return;\n                        }\n                    }\n                    else {\n                        focusableElements[focusedIndex - 1].focus();\n                    }\n                }\n                else {\n                    if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {\n                        if (!this.focusTrap && focusedIndex != -1)\n                            return this.hideOverlay();\n                        else\n                            focusableElements[0].focus();\n                    }\n                    else {\n                        focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n\n        event.preventDefault();\n    }\n\n    onMonthDropdownChange(m: string) {\n        this.currentMonth = parseInt(m);\n        this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n        this.createMonths(this.currentMonth, this.currentYear);\n    }\n\n    onYearDropdownChange(y: string) {\n        this.currentYear = parseInt(y);\n        this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n        this.createMonths(this.currentMonth, this.currentYear);\n    }\n\n    convertTo24Hour = function (hours: number, pm: boolean) {\n        if (this.hourFormat == '12') {\n            if (hours === 12) {\n                return (pm ? 12 : 0);\n            } else {\n                return (pm ? hours + 12 : hours);\n            }\n        }\n        return hours;\n    }\n\n    validateTime(hour: number, minute: number, second: number, pm: boolean) {\n        let value = this.value;\n        const convertedHour = this.convertTo24Hour(hour, pm);\n        if (this.isRangeSelection()) {\n            value = this.value[1] || this.value[0];\n        }\n        if (this.isMultipleSelection()) {\n            value = this.value[this.value.length - 1];\n        }\n        const valueDateString = value ? value.toDateString() : null;\n        if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n            if (this.minDate.getHours() > convertedHour) {\n                return false;\n            }\n            if (this.minDate.getHours() === convertedHour) {\n                if (this.minDate.getMinutes() > minute) {\n                    return false;\n                }\n                if (this.minDate.getMinutes() === minute) {\n                    if (this.minDate.getSeconds() > second) {\n                        return false;\n                    }\n                }\n            }\n        }\n\n      if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n            if (this.maxDate.getHours() < convertedHour) {\n                return false;\n            }\n            if (this.maxDate.getHours() === convertedHour) {\n                if (this.maxDate.getMinutes() < minute) {\n                    return false;\n                }\n                if (this.maxDate.getMinutes() === minute) {\n                  if (this.maxDate.getSeconds() < second) {\n                      return false;\n                  }\n                }\n            }\n        }\n        return true;\n    }\n\n\n    incrementHour(event) {\n        const prevHour = this.currentHour;\n        let newHour = this.currentHour + this.stepHour;\n        let newPM = this.pm;\n\n        if (this.hourFormat == '24')\n            newHour = (newHour >= 24) ? (newHour - 24) : newHour;\n        else if (this.hourFormat == '12') {\n            // Before the AM/PM break, now after\n            if (prevHour < 12 && newHour > 11) {\n                newPM= !this.pm;\n            }\n            newHour = (newHour >= 13) ? (newHour - 12) : newHour;\n        }\n\n        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.currentHour = newHour;\n          this.pm = newPM;\n        }\n        event.preventDefault();\n    }\n\n    onTimePickerElementMouseDown(event: Event, type: number, direction: number) {\n        if (!this.disabled) {\n            this.repeat(event, null, type, direction);\n            event.preventDefault();\n        }\n    }\n\n    onTimePickerElementMouseUp(event: Event) {\n        if (!this.disabled) {\n            this.clearTimePickerTimer();\n            this.updateTime();\n        }\n    }\n\n    onTimePickerElementMouseLeave() {\n        if (!this.disabled && this.timePickerTimer) {\n            this.clearTimePickerTimer();\n            this.updateTime();\n        }\n    }\n\n    repeat(event: Event, interval: number, type: number, direction: number) {\n        let i = interval||500;\n\n        this.clearTimePickerTimer();\n        this.timePickerTimer = setTimeout(() => {\n            this.repeat(event, 100, type, direction);\n            this.cd.markForCheck();\n        }, i);\n\n        switch(type) {\n            case 0:\n                if (direction === 1)\n                    this.incrementHour(event);\n                else\n                    this.decrementHour(event);\n            break;\n\n            case 1:\n                if (direction === 1)\n                    this.incrementMinute(event);\n                else\n                    this.decrementMinute(event);\n            break;\n\n            case 2:\n                if (direction === 1)\n                    this.incrementSecond(event);\n                else\n                    this.decrementSecond(event);\n            break;\n        }\n\n        this.updateInputfield();\n    }\n\n    clearTimePickerTimer() {\n        if (this.timePickerTimer) {\n            clearTimeout(this.timePickerTimer);\n            this.timePickerTimer = null;\n        }\n    }\n\n    decrementHour(event) {\n        let newHour = this.currentHour - this.stepHour;\n        let newPM = this.pm\n\n        if (this.hourFormat == '24')\n            newHour = (newHour < 0) ? (24 + newHour) : newHour;\n        else if (this.hourFormat == '12') {\n            // If we were at noon/midnight, then switch\n            if (this.currentHour === 12) {\n                newPM = !this.pm;\n            }\n            newHour = (newHour <= 0) ? (12 + newHour) : newHour;\n        }\n\n        if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.currentHour = newHour;\n          this.pm = newPM;\n        }\n\n        event.preventDefault();\n    }\n\n    incrementMinute(event) {\n        let newMinute = this.currentMinute + this.stepMinute;\n        newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;\n        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n            this.currentMinute = newMinute;\n        }\n\n        event.preventDefault();\n    }\n\n    decrementMinute(event) {\n        let newMinute = this.currentMinute - this.stepMinute;\n        newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;\n        if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n            this.currentMinute = newMinute;\n        }\n\n        event.preventDefault();\n    }\n\n    incrementSecond(event) {\n        let newSecond = this.currentSecond + this.stepSecond;\n        newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;\n        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n            this.currentSecond = newSecond;\n        }\n\n        event.preventDefault();\n    }\n\n    decrementSecond(event) {\n        let newSecond = this.currentSecond - this.stepSecond;\n        newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;\n        if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n            this.currentSecond = newSecond;\n        }\n\n        event.preventDefault();\n    }\n\n    updateTime() {\n        let value = this.value;\n        if (this.isRangeSelection()) {\n            value = this.value[1] || this.value[0];\n        }\n        if (this.isMultipleSelection()) {\n            value = this.value[this.value.length - 1];\n        }\n        value = value ? new Date(value.getTime()) : new Date();\n\n        if (this.hourFormat == '12') {\n            if (this.currentHour === 12)\n                value.setHours(this.pm ? 12 : 0);\n            else\n                value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n        }\n        else {\n            value.setHours(this.currentHour);\n        }\n\n        value.setMinutes(this.currentMinute);\n        value.setSeconds(this.currentSecond);\n        if (this.isRangeSelection()) {\n            if (this.value[1])\n                value = [this.value[0], value];\n            else\n                value = [value, null];\n        }\n\n        if (this.isMultipleSelection()){\n            value = [...this.value.slice(0, -1), value];\n        }\n\n        this.updateModel(value);\n        this.onSelect.emit(value);\n        this.updateInputfield();\n    }\n\n    toggleAMPM(event) {\n        const newPM = !this.pm;\n        if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n          this.pm = newPM;\n          this.updateTime();\n        }\n        event.preventDefault();\n    }\n\n    onUserInput(event) {\n        // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n        if (!this.isKeydown) {\n            return;\n        }\n        this.isKeydown = false;\n\n        let val = event.target.value;\n        try {\n            let value = this.parseValueFromString(val);\n            if (this.isValidSelection(value)) {\n                this.updateModel(value);\n                this.updateUI();\n            }\n        }\n        catch(err) {\n            //invalid date\n            this.updateModel(null);\n        }\n\n        this.filled = val != null && val.length;\n        this.onInput.emit(event);\n    }\n\n    isValidSelection(value): boolean {\n        let isValid = true;\n        if (this.isSingleSelection()) {\n            if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n                isValid = false;\n            }\n        } else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n            if (this.isRangeSelection()) {\n                isValid = value.length > 1 && value[1] > value[0] ? true : false;\n            }\n        }\n        return isValid;\n    }\n\n    parseValueFromString(text: string): Date | Date[]{\n        if (!text || text.trim().length === 0) {\n            return null;\n        }\n\n        let value: any;\n\n        if (this.isSingleSelection()) {\n            value = this.parseDateTime(text);\n        }\n        else if (this.isMultipleSelection()) {\n            let tokens = text.split(this.multipleSeparator);\n            value = [];\n            for (let token of tokens) {\n                value.push(this.parseDateTime(token.trim()));\n            }\n        }\n        else if (this.isRangeSelection()) {\n            let tokens = text.split(' '+this.rangeSeparator +' ');\n            value = [];\n            for (let i = 0; i < tokens.length; i++) {\n                value[i] = this.parseDateTime(tokens[i].trim());\n            }\n        }\n\n        return value;\n    }\n\n    parseDateTime(text): Date {\n        let date: Date;\n        let parts: string[] = text.split(' ');\n\n        if (this.timeOnly) {\n            date = new Date();\n            this.populateTime(date, parts[0], parts[1]);\n        }\n        else {\n            const dateFormat = this.getDateFormat();\n            if (this.showTime) {\n                let ampm = this.hourFormat == '12' ? parts.pop() : null;\n                let timeString = parts.pop();\n\n                date = this.parseDate(parts.join(' '), dateFormat);\n                this.populateTime(date, timeString, ampm);\n            }\n            else {\n                 date = this.parseDate(text, dateFormat);\n            }\n        }\n\n        return date;\n    }\n\n    populateTime(value, timeString, ampm) {\n        if (this.hourFormat == '12' && !ampm) {\n            throw 'Invalid Time';\n        }\n\n        this.pm = (ampm === 'PM' || ampm === 'pm');\n        let time = this.parseTime(timeString);\n        value.setHours(time.hour);\n        value.setMinutes(time.minute);\n        value.setSeconds(time.second);\n    }\n\n    updateUI() {\n        let val = this.value||this.defaultDate||new Date();\n        if (Array.isArray(val)){\n            val = val[0];\n        }\n\n        this.currentMonth = val.getMonth();\n        this.currentYear = val.getFullYear();\n        this.createMonths(this.currentMonth, this.currentYear);\n\n        if (this.showTime||this.timeOnly) {\n            this.setCurrentHourPM(val.getHours());\n            this.currentMinute = val.getMinutes();\n            this.currentSecond = val.getSeconds();\n        }\n    }\n\n    showOverlay() {\n        if (!this.overlayVisible) {\n            this.updateUI();\n            this.overlayVisible = true;\n        }\n    }\n\n    hideOverlay() {\n        this.overlayVisible = false;\n        this.clearTimePickerTimer();\n\n        if (this.touchUI) {\n            this.disableModality();\n        }\n\n        this.cd.markForCheck();\n    }\n\n    toggle() {\n        if (!this.inline){\n            if (!this.overlayVisible) {\n                this.showOverlay();\n                this.inputfieldViewChild.nativeElement.focus();\n            }\n            else {\n                this.hideOverlay();\n            }\n        }\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n            case 'visibleTouchUI':\n                if (!this.inline) {\n                    this.overlay = event.element;\n                    this.appendOverlay();\n                    if (this.autoZIndex) {\n                        if (this.touchUI)\n                            ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);\n                        else\n                            ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n                    }\n\n                    this.alignOverlay();\n                    this.onShow.emit(event);\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onClose.emit(event);\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n            case 'visibleTouchUI':\n                if (!this.inline) {\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.touchUI) {\n            this.enableModality(this.overlay);\n        }\n        else {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n        }\n    }\n\n    enableModality(element) {\n        if (!this.mask) {\n            this.mask = document.createElement('div');\n            this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);\n            let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n            DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n\n\t\t\tthis.maskClickListener = this.renderer.listen(this.mask, 'click', (event: any) => {\n                this.disableModality();\n            });\n            document.body.appendChild(this.mask);\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.mask) {\n            DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n            this.animationEndListener = this.destroyMask.bind(this);\n            this.mask.addEventListener('animationend', this.animationEndListener);\n        }\n    }\n\n    destroyMask() {\n        document.body.removeChild(this.mask);\n        let bodyChildren = document.body.children;\n        let hasBlockerMasks: boolean;\n        for (let i = 0; i < bodyChildren.length; i++) {\n            let bodyChild = bodyChildren[i];\n            if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n                hasBlockerMasks = true;\n                break;\n            }\n        }\n\n        if (!hasBlockerMasks) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.unbindAnimationEndListener();\n        this.unbindMaskClickListener();\n        this.mask = null;\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n\t\t}\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        if (this.value && typeof this.value === 'string') {\n            this.value = this.parseValueFromString(this.value);\n        }\n\n        this.updateInputfield();\n        this.updateUI();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    getDateFormat() {\n        return this.dateFormat||this.getTranslation('dateFormat');\n    }\n\n    // Ported from jquery-ui datepicker formatDate\n    formatDate(date, format) {\n        if (!date) {\n            return '';\n        }\n\n        let iFormat;\n        const lookAhead = (match) => {\n            const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n            if (matches) {\n                iFormat++;\n            }\n            return matches;\n        },\n            formatNumber = (match, value, len) => {\n                let num = '' + value;\n                if (lookAhead(match)) {\n                    while (num.length < len) {\n                        num = '0' + num;\n                    }\n                }\n                return num;\n            },\n            formatName = (match, value, shortNames, longNames) => {\n                return (lookAhead(match) ? longNames[value] : shortNames[value]);\n            };\n        let output = '';\n        let literal = false;\n\n        if (date) {\n            for (iFormat = 0; iFormat < format.length; iFormat++) {\n                if (literal) {\n                    if (format.charAt(iFormat) === '\\'' && !lookAhead('\\'')) {\n                        literal = false;\n                    } else {\n                        output += format.charAt(iFormat);\n                    }\n                } else {\n                    switch (format.charAt(iFormat)) {\n                        case 'd':\n                            output += formatNumber('d', date.getDate(), 2);\n                            break;\n                        case 'D':\n                            output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n                            break;\n                        case 'o':\n                            output += formatNumber('o',\n                            Math.round((\n                                new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -\n                                new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n                            break;\n                        case 'm':\n                            output += formatNumber('m', date.getMonth() + 1, 2);\n                            break;\n                        case 'M':\n                            output += formatName('M',date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n                            break;\n                        case 'y':\n                            output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n                            break;\n                        case '@':\n                            output += date.getTime();\n                            break;\n                        case '!':\n                            output += date.getTime() * 10000 + this.ticksTo1970;\n                            break;\n                        case '\\'':\n                            if (lookAhead('\\'')) {\n                                output += '\\'';\n                            } else {\n                                literal = true;\n                            }\n                            break;\n                        default:\n                            output += format.charAt(iFormat);\n                    }\n                }\n            }\n        }\n        return output;\n    }\n\n    formatTime(date) {\n        if (!date) {\n            return '';\n        }\n\n        let output = '';\n        let hours = date.getHours();\n        let minutes = date.getMinutes();\n        let seconds = date.getSeconds();\n\n        if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n            hours-=12;\n        }\n\n        if (this.hourFormat == '12') {\n            output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;\n        } else {\n            output += (hours < 10) ? '0' + hours : hours;\n        }\n        output += ':';\n        output += (minutes < 10) ? '0' + minutes : minutes;\n\n        if (this.showSeconds) {\n            output += ':';\n            output += (seconds < 10) ? '0' + seconds : seconds;\n        }\n\n        if (this.hourFormat == '12') {\n            output += date.getHours() > 11 ? ' PM' : ' AM';\n        }\n\n        return output;\n    }\n\n    parseTime(value) {\n        let tokens: string[] = value.split(':');\n        let validTokenLength = this.showSeconds ? 3 : 2;\n\n        if (tokens.length !== validTokenLength) {\n            throw \"Invalid time\";\n        }\n\n        let h = parseInt(tokens[0]);\n        let m = parseInt(tokens[1]);\n        let s = this.showSeconds ? parseInt(tokens[2]) : null;\n\n        if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {\n            throw \"Invalid time\";\n        }\n        else {\n            if (this.hourFormat == '12') {\n                if (h !== 12 && this.pm) {\n                    h += 12;\n                }\n                else if (!this.pm && h === 12) {\n                    h -= 12;\n                }\n            }\n\n            return {hour: h, minute: m, second: s};\n        }\n    }\n\n    // Ported from jquery-ui datepicker parseDate\n    parseDate(value, format) {\n        if (format == null || value == null) {\n            throw \"Invalid arguments\";\n        }\n\n        value = (typeof value === \"object\" ? value.toString() : value + \"\");\n        if (value === \"\") {\n            return null;\n        }\n\n        let iFormat, dim, extra,\n        iValue = 0,\n        shortYearCutoff = (typeof this.shortYearCutoff !== \"string\" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)),\n        year = -1,\n        month = -1,\n        day = -1,\n        doy = -1,\n        literal = false,\n        date,\n        lookAhead = (match) => {\n            let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n            if (matches) {\n                iFormat++;\n            }\n            return matches;\n        },\n        getNumber = (match) => {\n            let isDoubled = lookAhead(match),\n                size = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n                (match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\n                minSize = (match === \"y\" ? size : 1),\n                digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n                num = value.substring(iValue).match(digits);\n            if (!num) {\n                throw \"Missing number at position \" + iValue;\n            }\n            iValue += num[ 0 ].length;\n            return parseInt(num[ 0 ], 10);\n        },\n        getName = (match, shortNames, longNames) => {\n            let index = -1;\n            let arr = lookAhead(match) ? longNames : shortNames;\n            let names = [];\n\n            for (let i = 0; i < arr.length; i++) {\n                names.push([i,arr[i]]);\n            }\n            names.sort((a,b) => {\n                return -(a[ 1 ].length - b[ 1 ].length);\n            });\n\n            for (let i = 0; i < names.length; i++) {\n                let name = names[i][1];\n                if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n                    index = names[i][0];\n                    iValue += name.length;\n                    break;\n                }\n            }\n\n            if (index !== -1) {\n                return index + 1;\n            } else {\n                throw \"Unknown name at position \" + iValue;\n            }\n        },\n        checkLiteral = () => {\n            if (value.charAt(iValue) !== format.charAt(iFormat)) {\n                throw \"Unexpected literal at position \" + iValue;\n            }\n            iValue++;\n        };\n\n        if (this.view === 'month') {\n            day = 1;\n        }\n\n        for (iFormat = 0; iFormat < format.length; iFormat++) {\n            if (literal) {\n                if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n                    literal = false;\n                } else {\n                    checkLiteral();\n                }\n            } else {\n                switch (format.charAt(iFormat)) {\n                    case \"d\":\n                        day = getNumber(\"d\");\n                        break;\n                    case \"D\":\n                        getName(\"D\", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n                        break;\n                    case \"o\":\n                        doy = getNumber(\"o\");\n                        break;\n                    case \"m\":\n                        month = getNumber(\"m\");\n                        break;\n                    case \"M\":\n                        month = getName(\"M\", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n                        break;\n                    case \"y\":\n                        year = getNumber(\"y\");\n                        break;\n                    case \"@\":\n                        date = new Date(getNumber(\"@\"));\n                        year = date.getFullYear();\n                        month = date.getMonth() + 1;\n                        day = date.getDate();\n                        break;\n                    case \"!\":\n                        date = new Date((getNumber(\"!\") - this.ticksTo1970) / 10000);\n                        year = date.getFullYear();\n                        month = date.getMonth() + 1;\n                        day = date.getDate();\n                        break;\n                    case \"'\":\n                        if (lookAhead(\"'\")) {\n                            checkLiteral();\n                        } else {\n                            literal = true;\n                        }\n                        break;\n                    default:\n                        checkLiteral();\n                }\n            }\n        }\n\n        if (iValue < value.length) {\n            extra = value.substr(iValue);\n            if (!/^\\s+/.test(extra)) {\n                throw \"Extra/unparsed characters found in date: \" + extra;\n            }\n        }\n\n        if (year === -1) {\n            year = new Date().getFullYear();\n        } else if (year < 100) {\n            year += new Date().getFullYear() - new Date().getFullYear() % 100 +\n                (year <= shortYearCutoff ? 0 : -100);\n        }\n\n        if (doy > -1) {\n            month = 1;\n            day = doy;\n            do {\n                dim = this.getDaysCountInMonth(year, month - 1);\n                if (day <= dim) {\n                    break;\n                }\n                month++;\n                day -= dim;\n            } while (true);\n        }\n\n        date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n                if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n                    throw \"Invalid date\"; // E.g. 31/02/00\n                }\n\n        return date;\n    }\n\n    daylightSavingAdjust(date) {\n        if (!date) {\n            return null;\n        }\n\n        date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\n        return date;\n    }\n\n    updateFilledState() {\n        this.filled = this.inputFieldValue && this.inputFieldValue != '';\n    }\n\n    onTodayButtonClick(event) {\n        let date: Date = new Date();\n        let dateMeta = {day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true};\n\n        this.onDateSelect(event, dateMeta);\n        this.onTodayClick.emit(event);\n    }\n\n    onClearButtonClick(event) {\n        this.updateModel(null);\n        this.updateInputfield();\n        this.hideOverlay();\n        this.onClearClick.emit(event);\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.zone.runOutsideAngular(() => {\n                const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n                this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                    if (this.isOutsideClicked(event) && this.overlayVisible) {\n                        this.zone.run(() => {\n                            this.hideOverlay();\n                            this.onClickOutside.emit(event);\n\n                            this.cd.markForCheck();\n                        });\n                    }\n\n                });\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        if (!this.documentResizeListener && !this.touchUI) {\n            this.documentResizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    isOutsideClicked(event: Event) {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) || \n                this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(<Node> event.target)));\n    }\n\n    isNavIconClicked(event: Event) {\n        return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')\n                || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));\n    }\n\n    onWindowResize() {\n        if (this.overlayVisible && !DomHandler.isAndroid()) {\n            this.hideOverlay();\n        }\n    }\n\n    onOverlayHide() {\n        if (this.mask) {\n            this.destroyMask();\n        }\n\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        if (this.overlay && this.autoZIndex) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.clearTimePickerTimer();\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule],\n    exports: [Calendar,ButtonModule,SharedModule],\n    declarations: [Calendar]\n})\nexport class CalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class Captcha {
+    constructor(el, _zone, cd) {
+        this.el = el;
+        this._zone = _zone;
+        this.cd = cd;
+        this.siteKey = null;
+        this.theme = 'light';
+        this.type = 'image';
+        this.size = 'normal';
+        this.tabindex = 0;
+        this.initCallback = "initRecaptcha";
+        this.onResponse = new EventEmitter();
+        this.onExpire = new EventEmitter();
+        this._instance = null;
+        this._language = null;
+    }
+    get language() {
+        return this._language;
+    }
+    set language(language) {
+        this._language = language;
+        this.init();
+    }
+    ngAfterViewInit() {
+        if (window.grecaptcha) {
+            if (!window.grecaptcha.render) {
+                setTimeout(() => {
+                    this.init();
+                }, 100);
+            }
+            else {
+                this.init();
+            }
+        }
+        else {
+            window[this.initCallback] = () => {
+                this.init();
+            };
+        }
+    }
+    init() {
+        this._instance = window.grecaptcha.render(this.el.nativeElement.children[0], {
+            'sitekey': this.siteKey,
+            'theme': this.theme,
+            'type': this.type,
+            'size': this.size,
+            'tabindex': this.tabindex,
+            'hl': this.language,
+            'callback': (response) => { this._zone.run(() => this.recaptchaCallback(response)); },
+            'expired-callback': () => { this._zone.run(() => this.recaptchaExpiredCallback()); }
+        });
+    }
+    reset() {
+        if (this._instance === null)
+            return;
+        window.grecaptcha.reset(this._instance);
+        this.cd.markForCheck();
+    }
+    getResponse() {
+        if (this._instance === null)
+            return null;
+        return window.grecaptcha.getResponse(this._instance);
+    }
+    recaptchaCallback(response) {
+        this.onResponse.emit({
+            response: response
+        });
+    }
+    recaptchaExpiredCallback() {
+        this.onExpire.emit();
+    }
+    ngOnDestroy() {
+        if (this._instance != null) {
+            window.grecaptcha.reset(this._instance);
+        }
+    }
+}
+Captcha.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Captcha.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Captcha, selector: "p-captcha", inputs: { siteKey: "siteKey", theme: "theme", type: "type", size: "size", tabindex: "tabindex", initCallback: "initCallback", language: "language" }, outputs: { onResponse: "onResponse", onExpire: "onExpire" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Captcha, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-captcha',
+                    template: `<div></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { siteKey: [{
+                type: Input
+            }], theme: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], initCallback: [{
+                type: Input
+            }], onResponse: [{
+                type: Output
+            }], onExpire: [{
+                type: Output
+            }], language: [{
+                type: Input
+            }] } });
+class CaptchaModule {
+}
+CaptchaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CaptchaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, declarations: [Captcha], imports: [CommonModule], exports: [Captcha] });
+CaptchaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CaptchaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Captcha],
+                    declarations: [Captcha]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Captcha, CaptchaModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-captcha.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-captcha.mjs","sources":["../../src/app/components/captcha/captcha.ts","../../src/app/components/captcha/primeng-captcha.ts"],"sourcesContent":["import {NgModule,AfterViewInit,Component,EventEmitter,Input,NgZone,OnDestroy,Output,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-captcha',\n    template: `<div></div>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Captcha implements AfterViewInit,OnDestroy {\n\n    @Input() siteKey: string = null;\n\n    @Input() theme = 'light';\n\n    @Input() type = 'image';\n\n    @Input() size = 'normal';\n\n    @Input() tabindex = 0;\n\n    @Input() initCallback = \"initRecaptcha\";\n\n    @Output() onResponse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onExpire: EventEmitter<any> = new EventEmitter();\n\n    private _instance: any = null;\n\n    private _language: any = null;\n\n\n    @Input() get language(): string {\n        return this._language;\n    }\n\n    set language(language: string) {\n        this._language = language;\n        this.init();\n    }\n\n    constructor(public el: ElementRef, public _zone: NgZone, public cd: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        if ((<any>window).grecaptcha) {\n            if (!(<any>window).grecaptcha.render){\n                setTimeout(() =>{\n                    this.init();\n                },100)\n            }\n            else {\n                this.init();\n            }\n        }\n        else {\n            (<any>window)[this.initCallback] = () => {\n              this.init();\n            }\n        }\n    }\n\n    init() {\n        this._instance = (<any>window).grecaptcha.render(this.el.nativeElement.children[0], {\n            'sitekey': this.siteKey,\n            'theme': this.theme,\n            'type': this.type,\n            'size': this.size,\n            'tabindex': this.tabindex,\n            'hl': this.language,\n            'callback': (response: string) => {this._zone.run(() => this.recaptchaCallback(response))},\n            'expired-callback': () => {this._zone.run(() => this.recaptchaExpiredCallback())}\n        });\n    }\n\n    reset() {\n        if (this._instance === null)\n            return;\n\n        (<any>window).grecaptcha.reset(this._instance);\n        this.cd.markForCheck();\n    }\n\n    getResponse(): String {\n        if (this._instance === null)\n            return null;\n\n        return (<any>window).grecaptcha.getResponse(this._instance);\n    }\n\n    recaptchaCallback(response: string) {\n        this.onResponse.emit({\n            response: response\n        });\n    }\n\n    recaptchaExpiredCallback() {\n        this.onExpire.emit();\n    }\n\n    ngOnDestroy() {\n        if (this._instance != null) {\n          (<any>window).grecaptcha.reset(this._instance);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Captcha],\n    declarations: [Captcha]\n})\nexport class CaptchaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,132 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Card {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'title':
+                    this.titleTemplate = item.template;
+                    break;
+                case 'subtitle':
+                    this.subtitleTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+}
+Card.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Card.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Card, selector: "p-card", inputs: { header: "header", subheader: "subheader", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-card-header img{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Card, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-card', template: `
+        <div [ngClass]="'p-card p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-card-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-card-body">
+                <div class="p-card-title" *ngIf="header || titleTemplate">
+                    {{header}}
+                    <ng-container *ngTemplateOutlet="titleTemplate"></ng-container>
+                </div>
+                <div class="p-card-subtitle" *ngIf="subheader || subtitleTemplate">
+                    {{subheader}}
+                    <ng-container *ngTemplateOutlet="subtitleTemplate"></ng-container>
+                </div>
+                <div class="p-card-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div class="p-card-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-card-header img{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { header: [{
+                type: Input
+            }], subheader: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CardModule {
+}
+CardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, declarations: [Card], imports: [CommonModule], exports: [Card, SharedModule] });
+CardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CardModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Card, SharedModule],
+                    declarations: [Card]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Card, CardModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-card.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-card.mjs","sources":["../../src/app/components/card/card.ts","../../src/app/components/card/primeng-card.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, Header, Footer, PrimeTemplate } from 'primeng/api';\nimport { BlockableUI } from 'primeng/api';\n\n@Component({\n    selector: 'p-card',\n    template: `\n        <div [ngClass]=\"'p-card p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-card-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div class=\"p-card-body\">\n                <div class=\"p-card-title\" *ngIf=\"header || titleTemplate\">\n                    {{header}}\n                    <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-subtitle\" *ngIf=\"subheader || subtitleTemplate\">\n                    {{subheader}}\n                    <ng-container *ngTemplateOutlet=\"subtitleTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n                <div class=\"p-card-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./card.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Card implements AfterContentInit,BlockableUI {\n\n    @Input() header: string;\n\n    @Input() subheader: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    titleTemplate: TemplateRef<any>;\n\n    subtitleTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'title':\n                    this.titleTemplate = item.template;\n                break;\n\n                case 'subtitle':\n                    this.subtitleTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getBlockableElement(): HTMLElement  {\n        return this.el.nativeElement.children[0];\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Card, SharedModule],\n    declarations: [Card]\n})\nexport class CardModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAwCa,IAAI;IA0Bb,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAK;IAEvC,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;gBAEN,KAAK,UAAU;oBACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC1C,MAAM;gBAEN,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN;oBACI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5C;;iGA5DQ,IAAI;qFAAJ,IAAI,8NAUC,MAAM,8EAEN,MAAM,+DAEH,aAAa,6BA/CpB;;;;;;;;;;;;;;;;;;;;;;;;;KAyBT;2FAQQ,IAAI;kBAnChB,SAAS;+BACI,QAAQ,YACR;;;;;;;;;;;;;;;;;;;;;;;;;KAyBT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,MAAM;sBAAd,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEgB,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEE,WAAW;sBAAhC,YAAY;uBAAC,MAAM;gBAEY,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAuDrB,UAAU;;uGAAV,UAAU;wGAAV,UAAU,iBArEV,IAAI,aAiEH,YAAY,aAjEb,IAAI,EAkEG,YAAY;wGAGnB,UAAU,YAJV,CAAC,YAAY,CAAC,EACP,YAAY;2FAGnB,UAAU;kBALtB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC;oBAC7B,YAAY,EAAE,CAAC,IAAI,CAAC;iBACvB;;;AC5GD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,634 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { UniqueComponentId } from 'primeng/utils';
+
+class Carousel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.orientation = "horizontal";
+        this.verticalViewPortHeight = "300px";
+        this.contentClass = "";
+        this.indicatorsContentClass = "";
+        this.indicatorStyleClass = "";
+        this.circular = false;
+        this.showIndicators = true;
+        this.showNavigators = true;
+        this.autoplayInterval = 0;
+        this.onPage = new EventEmitter();
+        this._numVisible = 1;
+        this._numScroll = 1;
+        this._oldNumScroll = 0;
+        this.prevState = {
+            numScroll: 0,
+            numVisible: 0,
+            value: []
+        };
+        this.defaultNumScroll = 1;
+        this.defaultNumVisible = 1;
+        this._page = 0;
+        this.isRemainingItemsAdded = false;
+        this.remainingItems = 0;
+        this.swipeThreshold = 20;
+        this.totalShiftedItems = this.page * this.numScroll * -1;
+    }
+    get page() {
+        return this._page;
+    }
+    set page(val) {
+        if (this.isCreated && val !== this._page) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+                this.allowAutoplay = false;
+            }
+            if (val > this._page && val <= (this.totalDots() - 1)) {
+                this.step(-1, val);
+            }
+            else if (val < this._page) {
+                this.step(1, val);
+            }
+        }
+        this._page = val;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    set numVisible(val) {
+        this._numVisible = val;
+    }
+    get numScroll() {
+        return this._numVisible;
+    }
+    set numScroll(val) {
+        this._numScroll = val;
+    }
+    get value() {
+        return this._value;
+    }
+    ;
+    set value(val) {
+        this._value = val;
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.circular && this._value) {
+                this.setCloneItems();
+            }
+        }
+        if (this.isCreated) {
+            if (simpleChange.numVisible) {
+                if (this.responsiveOptions) {
+                    this.defaultNumVisible = this.numVisible;
+                }
+                if (this.isCircular()) {
+                    this.setCloneItems();
+                }
+                this.createStyle();
+                this.calculatePosition();
+            }
+            if (simpleChange.numScroll) {
+                if (this.responsiveOptions) {
+                    this.defaultNumScroll = this.numScroll;
+                }
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.id = UniqueComponentId();
+        this.allowAutoplay = !!this.autoplayInterval;
+        if (this.circular) {
+            this.setCloneItems();
+        }
+        if (this.responsiveOptions) {
+            this.defaultNumScroll = this._numScroll;
+            this.defaultNumVisible = this._numVisible;
+        }
+        this.createStyle();
+        this.calculatePosition();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterContentChecked() {
+        const isCircular = this.isCircular();
+        let totalShiftedItems = this.totalShiftedItems;
+        if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {
+            if (this.autoplayInterval) {
+                this.stopAutoplay();
+            }
+            this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;
+            let page = this._page;
+            if (this.totalDots() !== 0 && page >= this.totalDots()) {
+                page = this.totalDots() - 1;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            totalShiftedItems = (page * this._numScroll) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+                totalShiftedItems += (-1 * this.remainingItems) + this._numScroll;
+                this.isRemainingItemsAdded = true;
+            }
+            else {
+                this.isRemainingItemsAdded = false;
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            this._oldNumScroll = this._numScroll;
+            this.prevState.numScroll = this._numScroll;
+            this.prevState.numVisible = this._numVisible;
+            this.prevState.value = [...this._value];
+            if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+            this.isCreated = true;
+            if (this.autoplayInterval && this.isAutoplay()) {
+                this.startAutoplay();
+            }
+        }
+        if (isCircular) {
+            if (this.page === 0) {
+                totalShiftedItems = -1 * this._numVisible;
+            }
+            else if (totalShiftedItems === 0) {
+                totalShiftedItems = -1 * this.value.length;
+                if (this.remainingItems > 0) {
+                    this.isRemainingItemsAdded = true;
+                }
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+        }
+    }
+    createStyle() {
+        if (!this.carouselStyle) {
+            this.carouselStyle = document.createElement('style');
+            this.carouselStyle.type = 'text/css';
+            document.body.appendChild(this.carouselStyle);
+        }
+        let innerHTML = `
+            #${this.id} .p-carousel-item {
+				flex: 1 0 ${(100 / this.numVisible)}%
+			}
+        `;
+        if (this.responsiveOptions) {
+            this.responsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.id} .p-carousel-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.carouselStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.responsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this.defaultNumVisible,
+                numScroll: this.defaultNumScroll
+            };
+            for (let i = 0; i < this.responsiveOptions.length; i++) {
+                let res = this.responsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this._numScroll !== matchedResponsiveData.numScroll) {
+                let page = this._page;
+                page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);
+                let totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;
+                if (this.isCircular()) {
+                    totalShiftedItems -= matchedResponsiveData.numVisible;
+                }
+                this.totalShiftedItems = totalShiftedItems;
+                this._numScroll = matchedResponsiveData.numScroll;
+                this._page = page;
+                this.onPage.emit({
+                    page: this.page
+                });
+            }
+            if (this._numVisible !== matchedResponsiveData.numVisible) {
+                this._numVisible = matchedResponsiveData.numVisible;
+                this.setCloneItems();
+            }
+            this.cd.markForCheck();
+        }
+    }
+    setCloneItems() {
+        this.clonedItemsForStarting = [];
+        this.clonedItemsForFinishing = [];
+        if (this.isCircular()) {
+            this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));
+            this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));
+        }
+    }
+    firstIndex() {
+        return this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);
+    }
+    lastIndex() {
+        return this.firstIndex() + this.numVisible - 1;
+    }
+    totalDots() {
+        return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;
+    }
+    totalDotsArray() {
+        const totalDots = this.totalDots();
+        return totalDots <= 0 ? [] : Array(totalDots).fill(0);
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    isCircular() {
+        return this.circular && this.value && this.value.length >= this.numVisible;
+    }
+    isAutoplay() {
+        return this.autoplayInterval && this.allowAutoplay;
+    }
+    isForwardNavDisabled() {
+        return this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());
+    }
+    isBackwardNavDisabled() {
+        return this.isEmpty() || (this._page <= 0 && !this.isCircular());
+    }
+    isEmpty() {
+        return !this.value || this.value.length === 0;
+    }
+    navForward(e, index) {
+        if (this.isCircular() || this._page < (this.totalDots() - 1)) {
+            this.step(-1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e, index) {
+        if (this.isCircular() || this._page !== 0) {
+            this.step(1, index);
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onDotClick(e, index) {
+        let page = this._page;
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+            this.allowAutoplay = false;
+        }
+        if (index > page) {
+            this.navForward(e, index);
+        }
+        else if (index < page) {
+            this.navBackward(e, index);
+        }
+    }
+    step(dir, page) {
+        let totalShiftedItems = this.totalShiftedItems;
+        const isCircular = this.isCircular();
+        if (page != null) {
+            totalShiftedItems = (this._numScroll * page) * -1;
+            if (isCircular) {
+                totalShiftedItems -= this._numVisible;
+            }
+            this.isRemainingItemsAdded = false;
+        }
+        else {
+            totalShiftedItems += (this._numScroll * dir);
+            if (this.isRemainingItemsAdded) {
+                totalShiftedItems += this.remainingItems - (this._numScroll * dir);
+                this.isRemainingItemsAdded = false;
+            }
+            let originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;
+            page = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));
+        }
+        if (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {
+            totalShiftedItems = -1 * (this.value.length + this._numVisible);
+            page = 0;
+        }
+        else if (isCircular && this.page === 0 && dir === 1) {
+            totalShiftedItems = 0;
+            page = (this.totalDots() - 1);
+        }
+        else if (page === (this.totalDots() - 1) && this.remainingItems > 0) {
+            totalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));
+            this.isRemainingItemsAdded = true;
+        }
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+        this._page = page;
+        this.onPage.emit({
+            page: this.page
+        });
+    }
+    startAutoplay() {
+        this.interval = setInterval(() => {
+            if (this.totalDots() > 0) {
+                if (this.page === (this.totalDots() - 1)) {
+                    this.step(-1, 0);
+                }
+                else {
+                    this.step(-1, this.page + 1);
+                }
+            }
+        }, this.autoplayInterval);
+    }
+    stopAutoplay() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer) {
+            this.itemsContainer.nativeElement.style.transition = '';
+            if ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;
+            }
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical()) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (Math.abs(diff) > this.swipeThreshold) {
+            if (diff < 0) {
+                this.navForward(e);
+            }
+            else {
+                this.navBackward(e);
+            }
+        }
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = (e) => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.autoplayInterval) {
+            this.stopAutoplay();
+        }
+    }
+}
+Carousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Carousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Carousel, selector: "p-carousel", inputs: { page: "page", numVisible: "numVisible", numScroll: "numScroll", responsiveOptions: "responsiveOptions", orientation: "orientation", verticalViewPortHeight: "verticalViewPortHeight", contentClass: "contentClass", indicatorsContentClass: "indicatorsContentClass", indicatorsContentStyle: "indicatorsContentStyle", indicatorStyleClass: "indicatorStyleClass", indicatorStyle: "indicatorStyle", value: "value", circular: "circular", showIndicators: "showIndicators", showNavigators: "showNavigators", autoplayInterval: "autoplayInterval", style: "style", styleClass: "styleClass" }, outputs: { onPage: "onPage" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, isInline: true, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Carousel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-carousel', template: `
+		<div [attr.id]="id" [ngClass]="{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}" [ngStyle]="style" [class]="styleClass">
+			<div class="p-carousel-header" *ngIf="headerFacet || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+			</div>
+			<div [class]="contentClass" [ngClass]="'p-carousel-content'">
+				<div class="p-carousel-container">
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}" [disabled]="isBackwardNavDisabled()" (click)="navBackward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}"></span>
+					</button>
+					<div class="p-carousel-items-content" [ngStyle]="{'height': isVertical() ? verticalViewPortHeight : 'auto'}">
+						<div #itemsContainer class="p-carousel-items-container" (transitionend)="onTransitionEnd()" (touchend)="onTouchEnd($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)">
+                            <div *ngFor="let item of clonedItemsForStarting; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of value; let index = index" [ngClass]= "{'p-carousel-item': true,
+                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),
+							    'p-carousel-item-start': firstIndex() === index,
+							    'p-carousel-item-end': lastIndex() === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+                            <div *ngFor="let item of clonedItemsForFinishing; let index = index" [ngClass]= "{'p-carousel-item p-carousel-item-cloned': true,
+                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),
+							    'p-carousel-item-start': 0 === index,
+							    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}">
+								<ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+							</div>
+						</div>
+					</div>
+					<button type="button" *ngIf="showNavigators" [ngClass]="{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}" [disabled]="isForwardNavDisabled()" (click)="navForward($event)" pRipple>
+						<span [ngClass]="{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}"></span>
+					</button>
+				</div>
+				<ul [ngClass]="'p-carousel-indicators p-reset'" [class]="indicatorsContentClass" [ngStyle]="indicatorsContentStyle" *ngIf="showIndicators">
+					<li *ngFor="let totalDot of totalDotsArray(); let i = index" [ngClass]="{'p-carousel-indicator':true,'p-highlight': _page === i}">
+						<button type="button" [ngClass]="'p-link'" (click)="onDotClick($event, i)" [class]="indicatorStyleClass" [ngStyle]="indicatorStyle"></button>
+					</li>
+				</ul>
+			</div>
+			<div class="p-carousel-footer" *ngIf="footerFacet || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+			</div>
+		</div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], numScroll: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], verticalViewPortHeight: [{
+                type: Input
+            }], contentClass: [{
+                type: Input
+            }], indicatorsContentClass: [{
+                type: Input
+            }], indicatorsContentStyle: [{
+                type: Input
+            }], indicatorStyleClass: [{
+                type: Input
+            }], indicatorStyle: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showNavigators: [{
+                type: Input
+            }], autoplayInterval: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CarouselModule {
+}
+CarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Carousel, SharedModule] });
+CarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CarouselModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Carousel, SharedModule],
+                    declarations: [Carousel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Carousel, CarouselModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-carousel.mjs","sources":["../../src/app/components/carousel/carousel.ts","../../src/app/components/carousel/primeng-carousel.ts"],"sourcesContent":["import { Component, Input, ElementRef, ViewChild, AfterContentInit, TemplateRef, ContentChildren, QueryList, NgModule, NgZone, EventEmitter, Output, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, SimpleChanges } from '@angular/core';\nimport { PrimeTemplate, SharedModule, Header, Footer } from 'primeng/api';\nimport { RippleModule } from 'primeng/ripple';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\n\n@Component({\n\tselector: 'p-carousel',\n\ttemplate: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./carousel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Carousel implements AfterContentInit {\n\n\t@Input() get page():number {\n\t\treturn this._page;\n\t}\n\tset page(val:number) {\n\t\tif (this.isCreated && val !== this._page) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t\tthis.allowAutoplay = false;\n\t\t\t}\n\n\t\t\tif (val > this._page && val <= (this.totalDots() - 1)) {\n\t\t\t\tthis.step(-1, val);\n\t\t\t}\n\t\t\telse if (val < this._page ) {\n\t\t\t\tthis.step(1, val);\n\t\t\t}\n\t\t}\n\n\t\tthis._page = val;\n\t}\n\n\t@Input() get numVisible():number {\n\t\treturn this._numVisible;\n\t}\n\tset numVisible(val:number) {\n\t\tthis._numVisible = val;\n\t}\n\n\t@Input() get numScroll():number {\n\t\treturn this._numVisible;\n\t}\n\tset numScroll(val:number) {\n\t\tthis._numScroll = val;\n\t}\n\n\t@Input() responsiveOptions: any[];\n\n\t@Input() orientation = \"horizontal\";\n\n\t@Input() verticalViewPortHeight = \"300px\";\n\n\t@Input() contentClass: string = \"\";\n\n\t@Input() indicatorsContentClass: string = \"\";\n\n\t@Input() indicatorsContentStyle: any;\n\n\t@Input() indicatorStyleClass: string = \"\";\n\n\t@Input() indicatorStyle: any;\n\n\t@Input() get value() :any[] {\n\t\treturn this._value;\n\t};\n\tset value(val) {\n\t\tthis._value = val;\n\t}\n\n\t@Input() circular: boolean = false;\n\n\t@Input() showIndicators: boolean = true;\n\n\t@Input() showNavigators: boolean = true;\n\n\t@Input() autoplayInterval:number = 0;\n\n\t@Input() style: any;\n\n\t@Input() styleClass: string;\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n\t@ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n\t@ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n\t@ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n\t_numVisible: number = 1;\n\n\t_numScroll: number = 1;\n\n\t_oldNumScroll: number = 0;\n\n\tprevState: any = {\n\t\tnumScroll:0,\n\t\tnumVisible:0,\n\t\tvalue: []\n\t};\n\n\tdefaultNumScroll:number = 1;\n\n\tdefaultNumVisible:number = 1;\n\n\t_page: number = 0;\n\n\t_value: any[];\n\n\tcarouselStyle:any;\n\n\tid:string;\n\n\ttotalShiftedItems;\n\n\tisRemainingItemsAdded:boolean = false;\n\n\tanimationTimeout:any;\n\n\ttranslateTimeout:any;\n\n\tremainingItems: number = 0;\n\n\t_items: any[];\n\n\tstartPos: any;\n\n\tdocumentResizeListener: any;\n\n\tclonedItemsForStarting: any[];\n\n\tclonedItemsForFinishing: any[];\n\n\tallowAutoplay: boolean;\n\n\tinterval: any;\n\n\tisCreated: boolean;\n\n\tswipeThreshold: number = 20;\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n\tconstructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {\n\t\tthis.totalShiftedItems = this.page * this.numScroll * -1;\n\t}\n\n\tngOnChanges(simpleChange: SimpleChanges) {\n\t\tif (simpleChange.value) {\n\t\t\tif (this.circular && this._value) {\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isCreated) {\n\n\t\t\tif (simpleChange.numVisible) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumVisible = this.numVisible;\n\t\t\t\t}\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\tthis.setCloneItems();\n\t\t\t\t}\n\n\t\t\t\tthis.createStyle();\n\t\t\t\tthis.calculatePosition();\n\t\t\t}\n\n\t\t\tif (simpleChange.numScroll) {\n\t\t\t\tif (this.responsiveOptions) {\n\t\t\t\t\tthis.defaultNumScroll = this.numScroll;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.id = UniqueComponentId();\n\t\tthis.allowAutoplay = !!this.autoplayInterval;\n\n\t\tif (this.circular) {\n\t\t\tthis.setCloneItems();\n\t\t}\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.defaultNumScroll = this._numScroll;\n\t\t\tthis.defaultNumVisible = this._numVisible;\n\t\t}\n\n\t\tthis.createStyle();\n\t\tthis.calculatePosition();\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.bindDocumentListeners();\n\t\t}\n\n\t\tthis.templates.forEach((item) => {\n\t\t\tswitch (item.getType()) {\n\t\t\t\tcase 'item':\n\t\t\t\t\tthis.itemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.itemTemplate = item.template;\n                break;\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tconst isCircular = this.isCircular();\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\n\t\tif (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n\t\t\tif (this.autoplayInterval) {\n\t\t\t\tthis.stopAutoplay();\n\t\t\t}\n\n\t\t\tthis.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n\n\t\t\tlet page = this._page;\n\t\t\tif (this.totalDots() !== 0 && page >= this.totalDots()) {\n                page = this.totalDots() - 1;\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttotalShiftedItems = (page * this._numScroll) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n\n\t\t\tif (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\t\ttotalShiftedItems += (-1 * this.remainingItems) + this._numScroll;\n\t\t\t\tthis.isRemainingItemsAdded = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tif (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n\n\t\t\tthis._oldNumScroll = this._numScroll;\n\t\t\tthis.prevState.numScroll = this._numScroll;\n\t\t\tthis.prevState.numVisible = this._numVisible;\n\t\t\tthis.prevState.value = [...this._value];\n\n\t\t\tif (this.totalDots() > 0  && this.itemsContainer.nativeElement) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\n\t\t\tthis.isCreated = true;\n\n\t\t\tif (this.autoplayInterval && this.isAutoplay()) {\n\t\t\t\tthis.startAutoplay();\n\t\t\t}\n\t\t}\n\n\t\tif (isCircular) {\n            if (this.page === 0) {\n                totalShiftedItems = -1 * this._numVisible;\n            }\n            else if (totalShiftedItems === 0) {\n                totalShiftedItems = -1 * this.value.length;\n                if (this.remainingItems > 0) {\n                    this.isRemainingItemsAdded = true;\n                }\n            }\n\n            if (totalShiftedItems !== this.totalShiftedItems) {\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n            }\n\t\t}\n\t}\n\n\tcreateStyle() {\n\t\t\tif (!this.carouselStyle) {\n\t\t\t\tthis.carouselStyle = document.createElement('style');\n\t\t\t\tthis.carouselStyle.type = 'text/css';\n\t\t\t\tdocument.body.appendChild(this.carouselStyle);\n\t\t\t}\n\n\t\t\tlet innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${ (100/ this.numVisible) }%\n\t\t\t}\n        `;\n\n\t\t\tif (this.responsiveOptions) {\n\t\t\t\tthis.responsiveOptions.sort((data1, data2) => {\n\t\t\t\t\tconst value1 = data1.breakpoint;\n\t\t\t\t\tconst value2 = data2.breakpoint;\n\t\t\t\t\tlet result = null;\n\n\t\t\t\t\tif (value1 == null && value2 != null)\n\t\t\t\t\t\tresult = -1;\n\t\t\t\t\telse if (value1 != null && value2 == null)\n\t\t\t\t\t\tresult = 1;\n\t\t\t\t\telse if (value1 == null && value2 == null)\n\t\t\t\t\t\tresult = 0;\n\t\t\t\t\telse if (typeof value1 === 'string' && typeof value2 === 'string')\n\t\t\t\t\t\tresult = value1.localeCompare(value2, undefined, { numeric: true });\n\t\t\t\t\telse\n\t\t\t\t\t\tresult = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n\t\t\t\t\treturn -1 * result;\n\t\t\t\t});\n\n\t\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\t\tinnerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${ (100/ res.numVisible) }%\n                        }\n                    }\n                `\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.carouselStyle.innerHTML = innerHTML;\n\t\t}\n\n\tcalculatePosition() {\n\t\tif (this.responsiveOptions) {\n\t\t\tlet windowWidth = window.innerWidth;\n\t\t\tlet matchedResponsiveData = {\n\t\t\t\tnumVisible: this.defaultNumVisible,\n\t\t\t\tnumScroll: this.defaultNumScroll\n\t\t\t};\n\n\t\t\tfor (let i = 0; i < this.responsiveOptions.length; i++) {\n\t\t\t\tlet res = this.responsiveOptions[i];\n\n\t\t\t\tif (parseInt(res.breakpoint, 10) >= windowWidth) {\n\t\t\t\t\tmatchedResponsiveData = res;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._numScroll !== matchedResponsiveData.numScroll) {\n\t\t\t\tlet page = this._page;\n\t\t\t\tpage = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n\n\t\t\t\tlet totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;\n\n\t\t\t\tif (this.isCircular()) {\n\t\t\t\t\ttotalShiftedItems -= matchedResponsiveData.numVisible;\n\t\t\t\t}\n\n\t\t\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\t\t\tthis._numScroll = matchedResponsiveData.numScroll;\n\n\t\t\t\tthis._page = page;\n\t\t\t\tthis.onPage.emit({\n\t\t\t\t\tpage: this.page\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this._numVisible !== matchedResponsiveData.numVisible) {\n\t\t\t\tthis._numVisible = matchedResponsiveData.numVisible;\n\t\t\t\tthis.setCloneItems();\n\t\t\t}\n\n\t\t\tthis.cd.markForCheck();\n\t\t}\n\t}\n\n\tsetCloneItems() {\n\t\tthis.clonedItemsForStarting = [];\n\t\tthis.clonedItemsForFinishing = [];\n\t\tif (this.isCircular()) {\n\t\t\tthis.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n\t\t\tthis.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n\t\t}\n\t}\n\n\tfirstIndex() {\n\t\treturn this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);\n\t}\n\n\tlastIndex() {\n\t\treturn this.firstIndex() + this.numVisible - 1;\n\t}\n\n\ttotalDots() {\n\t\treturn this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n\t}\n\n\ttotalDotsArray() {\n\t\tconst totalDots = this.totalDots();\n\t\treturn totalDots <= 0 ? [] : Array(totalDots).fill(0);\n\t}\n\n\tisVertical() {\n\t\treturn this.orientation === 'vertical';\n\t}\n\n\tisCircular() {\n\t\treturn this.circular && this.value && this.value.length >= this.numVisible;\n\t}\n\n\tisAutoplay() {\n\t\treturn this.autoplayInterval && this.allowAutoplay;\n\t}\n\n\tisForwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());\n\t}\n\n\tisBackwardNavDisabled() {\n\t\treturn this.isEmpty() || (this._page <= 0  && !this.isCircular());\n\t}\n\n\tisEmpty() {\n\t\treturn !this.value || this.value.length === 0;\n\t}\n\n\tnavForward(e,index?) {\n\t\tif (this.isCircular() || this._page < (this.totalDots() - 1)) {\n\t\t\tthis.step(-1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tnavBackward(e,index?) {\n\t\tif (this.isCircular() || this._page !== 0) {\n\t\t\tthis.step(1, index);\n\t\t}\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (e && e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tonDotClick(e, index) {\n\t\tlet page = this._page;\n\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.allowAutoplay = false;\n\t\t}\n\n\t\tif (index > page) {\n\t\t\tthis.navForward(e, index);\n\t\t}\n\t\telse if (index < page) {\n\t\t\tthis.navBackward(e, index);\n\t\t}\n\t}\n\n\tstep(dir, page) {\n\t\tlet totalShiftedItems = this.totalShiftedItems;\n\t\tconst isCircular = this.isCircular();\n\n\t\tif (page != null) {\n\t\t\ttotalShiftedItems = (this._numScroll * page) * -1;\n\n\t\t\tif (isCircular) {\n\t\t\t\ttotalShiftedItems -= this._numVisible;\n\t\t\t}\n\n\t\t\tthis.isRemainingItemsAdded = false;\n\t\t}\n\t\telse {\n\t\t\ttotalShiftedItems += (this._numScroll * dir);\n\t\t\tif (this.isRemainingItemsAdded) {\n\t\t\t\ttotalShiftedItems += this.remainingItems - (this._numScroll * dir);\n\t\t\t\tthis.isRemainingItemsAdded = false;\n\t\t\t}\n\n\t\t\tlet originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;\n\t\t\tpage = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));\n\t\t}\n\n\t\tif (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {\n\t\t\ttotalShiftedItems = -1 * (this.value.length + this._numVisible);\n\t\t\tpage = 0;\n\t\t}\n\t\telse if (isCircular && this.page === 0 && dir === 1) {\n\t\t\ttotalShiftedItems = 0;\n\t\t\tpage = (this.totalDots() - 1);\n\t\t}\n\t\telse if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n\t\t\ttotalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));\n\t\t\tthis.isRemainingItemsAdded = true;\n\t\t}\n\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\tthis.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n\t\t}\n\n\t\tthis.totalShiftedItems = totalShiftedItems;\n\t\tthis._page = page;\n\t\tthis.onPage.emit({\n\t\t\tpage: this.page\n\t\t});\n\t}\n\n\tstartAutoplay() {\n\t\tthis.interval = setInterval(() => {\n\t\t\tif (this.totalDots() > 0) {\n\t\t\t\tif (this.page === (this.totalDots() - 1)) {\n\t\t\t\t\tthis.step(-1, 0);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.step(-1, this.page + 1);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tthis.autoplayInterval);\n\t}\n\n\tstopAutoplay() {\n\t\tif (this.interval) {\n\t\t\tclearInterval(this.interval);\n\t\t}\n\t}\n\n\tonTransitionEnd() {\n\t\tif (this.itemsContainer) {\n\t\t\tthis.itemsContainer.nativeElement.style.transition = '';\n\n\t\t\tif ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {\n\t\t\t\tthis.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100/ this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100/ this._numVisible)}%, 0, 0)`;\n\t\t\t}\n\t\t}\n\t}\n\n\tonTouchStart(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tthis.startPos = {\n\t\t\tx: touchobj.pageX,\n\t\t\ty: touchobj.pageY\n\t\t};\n\t}\n\n\tonTouchMove(e) {\n\t\tif (e.cancelable) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tonTouchEnd(e) {\n\t\tlet touchobj = e.changedTouches[0];\n\n\t\tif (this.isVertical()) {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n\t\t}\n\t\telse {\n\t\t\tthis.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n\t\t}\n\t}\n\n\tchangePageOnTouch(e, diff) {\n\t\tif (Math.abs(diff) > this.swipeThreshold) {\n\t\t\tif (diff < 0) {\n\t\t\t\tthis.navForward(e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.navBackward(e);\n\n\t\t\t}\n\t\t}\n\t}\n\n\tbindDocumentListeners() {\n\t\tif (!this.documentResizeListener) {\n\t\t\tthis.documentResizeListener = (e) => {\n\t\t\t\tthis.calculatePosition();\n\t\t\t};\n\n\t\t\twindow.addEventListener('resize', this.documentResizeListener);\n\t\t}\n\t}\n\n\tunbindDocumentListeners() {\n\t\tif (this.documentResizeListener) {\n\t\t\twindow.removeEventListener('resize', this.documentResizeListener);\n\t\t\tthis.documentResizeListener = null;\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.unbindDocumentListeners();\n\t\t}\n\t\tif (this.autoplayInterval) {\n\t\t\tthis.stopAutoplay();\n\t\t}\n    }\n\n}\n\n@NgModule({\n\timports: [CommonModule, SharedModule, RippleModule],\n\texports: [CommonModule, Carousel, SharedModule],\n\tdeclarations: [Carousel]\n})\nexport class CarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,711 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const CASCADESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => CascadeSelect),
+    multi: true
+};
+class CascadeSelectSub {
+    constructor(cascadeSelect, el) {
+        this.el = el;
+        this.level = 0;
+        this.onSelect = new EventEmitter();
+        this.onGroupSelect = new EventEmitter();
+        this.activeOption = null;
+        this.cascadeSelect = cascadeSelect;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    ;
+    set parentActive(val) {
+        if (!val) {
+            this.activeOption = null;
+        }
+        this._parentActive = val;
+    }
+    ngOnInit() {
+        if (this.selectionPath && this.options && !this.dirty) {
+            for (let option of this.options) {
+                if (this.selectionPath.includes(option)) {
+                    this.activeOption = option;
+                    break;
+                }
+            }
+        }
+        if (!this.root) {
+            this.position();
+        }
+    }
+    onOptionClick(event, option) {
+        if (this.isOptionGroup(option)) {
+            this.activeOption = (this.activeOption === option) ? null : option;
+            this.onGroupSelect.emit({
+                originalEvent: event,
+                value: option
+            });
+        }
+        else {
+            this.onSelect.emit({
+                originalEvent: event,
+                value: this.getOptionValue(option)
+            });
+        }
+    }
+    onOptionSelect(event) {
+        this.onSelect.emit(event);
+    }
+    onOptionGroupSelect(event) {
+        this.onGroupSelect.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;
+    }
+    getOptionGroupChildren(optionGroup) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);
+    }
+    isOptionGroup(option) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);
+    }
+    getOptionLabelToRender(option) {
+        return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);
+    }
+    getItemClass(option) {
+        return {
+            'p-cascadeselect-item': true,
+            'p-cascadeselect-item-group': this.isOptionGroup(option),
+            'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)
+        };
+    }
+    isOptionActive(option) {
+        return this.activeOption === option;
+    }
+    onKeyDown(event, option, index) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'Down':
+            case 'ArrowDown':
+                var nextItem = this.el.nativeElement.children[0].children[index + 1];
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Up':
+            case 'ArrowUp':
+                var prevItem = this.el.nativeElement.children[0].children[index - 1];
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Right':
+            case 'ArrowRight':
+                if (this.isOptionGroup(option)) {
+                    if (this.isOptionActive(option)) {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }
+                    else {
+                        this.activeOption = option;
+                    }
+                }
+                event.preventDefault();
+                break;
+            case 'Left':
+            case 'ArrowLeft':
+                this.activeOption = null;
+                var parentList = listItem.parentElement.parentElement.parentElement;
+                if (parentList) {
+                    parentList.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Enter':
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                this.cascadeSelect.hide();
+                event.preventDefault();
+                break;
+        }
+    }
+    position() {
+        const parentItem = this.el.nativeElement.parentElement;
+        const containerOffset = DomHandler.getOffset(parentItem);
+        const viewport = DomHandler.getViewport();
+        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);
+        const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);
+        if ((parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            this.el.nativeElement.children[0].style.left = '-200%';
+        }
+    }
+}
+CascadeSelectSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, deps: [{ token: forwardRef(() => CascadeSelect) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelectSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: { selectionPath: "selectionPath", options: "options", optionGroupChildren: "optionGroupChildren", optionTemplate: "optionTemplate", level: "level", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", dirty: "dirty", root: "root", parentActive: "parentActive" }, outputs: { onSelect: "onSelect", onGroupSelect: "onGroupSelect" }, ngImport: i0, template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cascadeSelectSub',
+                    template: `
+        <ul class="p-cascadeselect-panel p-cascadeselect-items" [ngClass]="{'p-cascadeselect-panel-root': root}" role="listbox" aria-orientation="horizontal">
+            <ng-template ngFor let-option [ngForOf]="options" let-i="index">
+                <li [ngClass]="getItemClass(option)" role="none">
+                    <div class="p-cascadeselect-item-content" (click)="onOptionClick($event, option)" tabindex="0" (keydown)="onKeyDown($event, option, i)" pRipple>
+                        <ng-container *ngIf="optionTemplate;else defaultOptionTemplate">
+                            <ng-container *ngTemplateOutlet="optionTemplate; context: {$implicit: option}"></ng-container>
+                        </ng-container>
+                        <ng-template #defaultOptionTemplate>
+                            <span class="p-cascadeselect-item-text">{{getOptionLabelToRender(option)}}</span>
+                        </ng-template>
+                        <span class="p-cascadeselect-group-icon pi pi-angle-right" *ngIf="isOptionGroup(option)"></span>
+                    </div>
+                    <p-cascadeSelectSub *ngIf="isOptionGroup(option) && isOptionActive(option)" class="p-cascadeselect-sublist" [selectionPath]="selectionPath" [options]="getOptionGroupChildren(option)"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="level + 1" (onSelect)="onOptionSelect($event)" (onOptionGroupSelect)="onOptionGroupSelect()"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren" [parentActive]="isOptionActive(option)" [dirty]="dirty" [optionTemplate]="optionTemplate">
+                    </p-cascadeSelectSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => CascadeSelect)]
+                }] }, { type: i0.ElementRef }]; }, propDecorators: { selectionPath: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionTemplate: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], dirty: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], onSelect: [{
+                type: Output
+            }], onGroupSelect: [{
+                type: Output
+            }], parentActive: [{
+                type: Input
+            }] } });
+class CascadeSelect {
+    constructor(el, cd, config, overlayService) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onGroupChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onBeforeShow = new EventEmitter();
+        this.onBeforeHide = new EventEmitter();
+        this.selectionPath = null;
+        this.focused = false;
+        this.filled = false;
+        this.overlayVisible = false;
+        this.dirty = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.updateSelectionPath();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'option':
+                    this.optionTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOptionSelect(event) {
+        this.value = event.value;
+        this.updateSelectionPath();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+        this.hide();
+        this.focusInputEl.nativeElement.focus();
+    }
+    onOptionGroupSelect(event) {
+        this.dirty = true;
+        this.onGroupChange.emit(event);
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;
+    }
+    getOptionGroupChildren(optionGroup, level) {
+        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);
+    }
+    isOptionGroup(option, level) {
+        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);
+    }
+    updateSelectionPath() {
+        let path;
+        if (this.value != null && this.options) {
+            for (let option of this.options) {
+                path = this.findModelOptionInGroup(option, 0);
+                if (path) {
+                    break;
+                }
+            }
+        }
+        this.selectionPath = path;
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);
+    }
+    findModelOptionInGroup(option, level) {
+        if (this.isOptionGroup(option, level)) {
+            let selectedOption;
+            for (let childOption of this.getOptionGroupChildren(option, level)) {
+                selectedOption = this.findModelOptionInGroup(childOption, level + 1);
+                if (selectedOption) {
+                    selectedOption.unshift(option);
+                    return selectedOption;
+                }
+            }
+        }
+        else if ((ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey))) {
+            return [option];
+        }
+        return null;
+    }
+    show() {
+        this.onBeforeShow.emit();
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.onBeforeHide.emit();
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.overlayEl || !this.overlayEl || !this.overlayEl.contains(event.target)) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                this.show();
+            }
+            this.focusInputEl.nativeElement.focus();
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        this.onHide.emit();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.dirty = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateSelectionPath();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    label() {
+        if (this.selectionPath)
+            return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);
+        else
+            return this.placeholder || 'p-emptylabel';
+    }
+    onKeyDown(event) {
+        switch (event.code) {
+            case 'Down':
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    DomHandler.findSingle(this.overlayEl, '.p-cascadeselect-item').children[0].focus();
+                }
+                else if (event.altKey && this.options && this.options.length) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (!this.overlayVisible)
+                    this.show();
+                else
+                    this.hide();
+                event.preventDefault();
+                break;
+            case 'Tab':
+            case 'Escape':
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    containerClass() {
+        return {
+            'p-cascadeselect p-component p-inputwrapper': true,
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-cascadeselect-label': true,
+            'p-placeholder': this.label() === this.placeholder,
+            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)
+        };
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        this.overlayEl = null;
+    }
+}
+CascadeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+CascadeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CascadeSelect, selector: "p-cascadeSelect", inputs: { styleClass: "styleClass", style: "style", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", placeholder: "placeholder", value: "value", dataKey: "dataKey", inputId: "inputId", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", appendTo: "appendTo", disabled: "disabled", rounded: "rounded", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onGroupChange: "onGroupChange", onShow: "onShow", onHide: "onHide", onBeforeShow: "onBeforeShow", onBeforeHide: "onBeforeHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [CASCADESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "focusInputEl", first: true, predicate: ["focusInput"], descendants: true }, { propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"], components: [{ type: CascadeSelectSub, selector: "p-cascadeSelectSub", inputs: ["selectionPath", "options", "optionGroupChildren", "optionTemplate", "level", "optionLabel", "optionValue", "optionGroupLabel", "dirty", "root", "parentActive"], outputs: ["onSelect", "onGroupSelect"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-cascadeSelect', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #focusInput type="text" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()"  (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy">
+            </div>
+            <span [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    {{label()}}
+                </ng-template>
+            </span>
+            <div class="p-cascadeselect-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-cascadeselect-trigger-icon pi pi-chevron-down"></span>
+            </div>
+            <div class="p-cascadeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+                <div class="p-cascadeselect-items-wrapper">
+                    <p-cascadeSelectSub [options]="options" [selectionPath]="selectionPath" class="p-cascadeselect-items"
+                        [optionLabel]="optionLabel" [optionValue]="optionValue" [level]="0" [optionTemplate]="optionTemplate"
+                        [optionGroupLabel]="optionGroupLabel" [optionGroupChildren]="optionGroupChildren"
+                        (onSelect)="onOptionSelect($event)" (onGroupSelect)="onOptionGroupSelect($event)" [dirty]="dirty" [root]="true">
+                    </p-cascadeSelectSub>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [CASCADESELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-cascadeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-cascadeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-cascadeselect-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-cascadeselect-label-empty{overflow:hidden;visibility:hidden}.p-cascadeselect .p-cascadeselect-panel{min-width:100%}.p-cascadeselect-panel{position:absolute;top:0;left:0}.p-cascadeselect-item{cursor:pointer;font-weight:normal;white-space:nowrap}.p-cascadeselect-item-content{display:flex;align-items:center;overflow:hidden;position:relative}.p-cascadeselect-group-icon{margin-left:auto}.p-cascadeselect-items{margin:0;padding:0;list-style-type:none}.p-fluid .p-cascadeselect{display:flex}.p-fluid .p-cascadeselect .p-cascadeselect-label{width:1%}.p-cascadeselect-sublist{position:absolute;min-width:100%;z-index:1;display:none}.p-cascadeselect-item-active{overflow:visible!important}.p-cascadeselect-item-active>.p-cascadeselect-sublist{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], focusInputEl: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], onChange: [{
+                type: Output
+            }], onGroupChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onBeforeShow: [{
+                type: Output
+            }], onBeforeHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class CascadeSelectModule {
+}
+CascadeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CascadeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, declarations: [CascadeSelect, CascadeSelectSub], imports: [CommonModule, SharedModule, RippleModule], exports: [CascadeSelect, CascadeSelectSub, SharedModule] });
+CascadeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CascadeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CascadeSelect, CascadeSelectSub, SharedModule],
+                    declarations: [CascadeSelect, CascadeSelectSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CASCADESELECT_VALUE_ACCESSOR, CascadeSelect, CascadeSelectModule, CascadeSelectSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-cascadeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-cascadeselect.mjs","sources":["../../src/app/components/cascadeselect/cascadeselect.ts","../../src/app/components/cascadeselect/primeng-cascadeselect.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, TemplateRef, ContentChildren, QueryList, ElementRef, Output, EventEmitter, ViewChild, forwardRef, ChangeDetectorRef, Renderer2, OnDestroy, OnInit, AfterContentInit, Inject} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig, OverlayService } from 'primeng/api';\nimport { ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport { trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport { ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RippleModule } from 'primeng/ripple';\n\nexport const CASCADESELECT_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => CascadeSelect),\n    multi: true\n};\n\n@Component({\n    selector: 'p-cascadeSelectSub',\n    template: `\n        <ul class=\"p-cascadeselect-panel p-cascadeselect-items\" [ngClass]=\"{'p-cascadeselect-panel-root': root}\" role=\"listbox\" aria-orientation=\"horizontal\">\n            <ng-template ngFor let-option [ngForOf]=\"options\" let-i=\"index\">\n                <li [ngClass]=\"getItemClass(option)\" role=\"none\">\n                    <div class=\"p-cascadeselect-item-content\" (click)=\"onOptionClick($event, option)\" tabindex=\"0\" (keydown)=\"onKeyDown($event, option, i)\" pRipple>\n                        <ng-container *ngIf=\"optionTemplate;else defaultOptionTemplate\">\n                            <ng-container *ngTemplateOutlet=\"optionTemplate; context: {$implicit: option}\"></ng-container>\n                        </ng-container>\n                        <ng-template #defaultOptionTemplate>\n                            <span class=\"p-cascadeselect-item-text\">{{getOptionLabelToRender(option)}}</span>\n                        </ng-template>\n                        <span class=\"p-cascadeselect-group-icon pi pi-angle-right\" *ngIf=\"isOptionGroup(option)\"></span>\n                    </div>\n                    <p-cascadeSelectSub *ngIf=\"isOptionGroup(option) && isOptionActive(option)\" class=\"p-cascadeselect-sublist\" [selectionPath]=\"selectionPath\" [options]=\"getOptionGroupChildren(option)\"\n                        [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [level]=\"level + 1\" (onSelect)=\"onOptionSelect($event)\" (onOptionGroupSelect)=\"onOptionGroupSelect()\"\n                        [optionGroupLabel]=\"optionGroupLabel\" [optionGroupChildren]=\"optionGroupChildren\" [parentActive]=\"isOptionActive(option)\" [dirty]=\"dirty\" [optionTemplate]=\"optionTemplate\">\n                    </p-cascadeSelectSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CascadeSelectSub implements OnInit {\n\n    @Input() selectionPath: any[];\n\n    @Input() options: any[];\n\n    @Input() optionGroupChildren: any[];\n\n    @Input() optionTemplate: TemplateRef<any>;\n\n    @Input() level: number = 0;\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() dirty: boolean;\n\n    @Input() root: boolean;\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onGroupSelect: EventEmitter<any> = new EventEmitter();\n\n    @Input() get parentActive(): boolean {\n        return this._parentActive;\n    };\n    set parentActive(val) {\n        if (!val) {\n            this.activeOption = null;\n        }\n\n        this._parentActive = val;\n    }\n\n    activeOption: any = null;\n\n    _parentActive: boolean;\n\n    cascadeSelect: CascadeSelect;\n\n    constructor(@Inject(forwardRef(() => CascadeSelect)) cascadeSelect, private el: ElementRef) {\n        this.cascadeSelect = cascadeSelect as CascadeSelect;\n    }\n\n    ngOnInit() {\n        if (this.selectionPath && this.options && !this.dirty) {\n            for (let option of this.options) {\n                if (this.selectionPath.includes(option)) {\n                    this.activeOption = option;\n                    break;\n                }\n            }\n        }\n\n        if (!this.root) {\n            this.position();\n        }\n    }\n\n    onOptionClick(event, option) {\n        if (this.isOptionGroup(option)) {\n            this.activeOption = (this.activeOption === option) ? null : option;\n\n            this.onGroupSelect.emit({\n                originalEvent: event,\n                value: option\n            });\n        }\n        else {\n            this.onSelect.emit({\n                originalEvent: event,\n                value: this.getOptionValue(option)\n            });\n        }\n    }\n\n    onOptionSelect(event) {\n        this.onSelect.emit(event);\n    }\n\n    onOptionGroupSelect(event) {\n        this.onGroupSelect.emit(event);\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n    }\n\n    getOptionGroupLabel(optionGroup) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n    }\n\n    getOptionGroupChildren(optionGroup) {\n        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);\n    }\n\n    isOptionGroup(option) {\n        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);\n    }\n\n    getOptionLabelToRender(option) {\n        return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);\n    }\n\n    getItemClass(option) {\n        return {\n            'p-cascadeselect-item': true,\n            'p-cascadeselect-item-group': this.isOptionGroup(option),\n            'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)\n        }\n    }\n\n    isOptionActive(option) {\n        return this.activeOption === option;\n    }\n\n    onKeyDown(event, option, index) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.key) {\n            case 'Down':\n            case 'ArrowDown':\n                var nextItem = this.el.nativeElement.children[0].children[index + 1];\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Up':\n            case 'ArrowUp':\n                var prevItem = this.el.nativeElement.children[0].children[index - 1];\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Right':\n            case 'ArrowRight':\n                if (this.isOptionGroup(option)) {\n                    if (this.isOptionActive(option)) {\n                        listItem.children[1].children[0].children[0].children[0].focus();\n                    }\n                    else {\n                        this.activeOption = option;\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Left':\n            case 'ArrowLeft':\n                this.activeOption = null;\n\n                var parentList = listItem.parentElement.parentElement.parentElement;\n                if (parentList) {\n                    parentList.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Enter':\n                this.onOptionClick(event, option);\n\n                event.preventDefault();\n            break;\n\n            case 'Tab':\n            case 'Escape':\n                this.cascadeSelect.hide();\n\n                event.preventDefault();\n            break;\n        }\n    }\n\n    position() {\n        const parentItem = this.el.nativeElement.parentElement;\n        const containerOffset = DomHandler.getOffset(parentItem);\n        const viewport = DomHandler.getViewport();\n        const sublistWidth = this.el.nativeElement.children[0].offsetParent ? this.el.nativeElement.children[0].offsetWidth : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);\n        const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);\n\n        if ((parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {\n            this.el.nativeElement.children[0].style.left = '-200%';\n        }\n    }\n}\n\n@Component({\n    selector: 'p-cascadeSelect',\n    template: `\n        <div #container [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input #focusInput type=\"text\" [attr.id]=\"inputId\" readonly [disabled]=\"disabled\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"  (keydown)=\"onKeyDown($event)\" [attr.tabindex]=\"tabindex\"\n                    aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n            </div>\n            <span [ngClass]=\"labelClass()\">\n                <ng-container *ngIf=\"valueTemplate;else defaultValueTemplate\">\n                        <ng-container *ngTemplateOutlet=\"valueTemplate; context: {$implicit: value, placeholder: placeholder}\"></ng-container>\n                </ng-container>\n                <ng-template #defaultValueTemplate>\n                    {{label()}}\n                </ng-template>\n            </span>\n            <div class=\"p-cascadeselect-trigger\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\">\n                <span class=\"p-cascadeselect-trigger-icon pi pi-chevron-down\"></span>\n            </div>\n            <div class=\"p-cascadeselect-panel p-component\" *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\">\n                <div class=\"p-cascadeselect-items-wrapper\">\n                    <p-cascadeSelectSub [options]=\"options\" [selectionPath]=\"selectionPath\" class=\"p-cascadeselect-items\"\n                        [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [level]=\"0\" [optionTemplate]=\"optionTemplate\"\n                        [optionGroupLabel]=\"optionGroupLabel\" [optionGroupChildren]=\"optionGroupChildren\"\n                        (onSelect)=\"onOptionSelect($event)\" (onGroupSelect)=\"onOptionGroupSelect($event)\" [dirty]=\"dirty\" [root]=\"true\">\n                    </p-cascadeSelectSub>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    providers: [CASCADESELECT_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./cascadeselect.css']\n})\nexport class CascadeSelect implements OnInit, AfterContentInit, OnDestroy {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() options: any[];\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: any[];\n\n    @Input() placeholder: string;\n\n    @Input() value: string;\n\n    @Input() dataKey: string;\n\n    @Input() inputId: string;\n\n    @Input() tabindex: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() appendTo: any;\n\n    @Input() disabled: boolean;\n\n    @Input() rounded: boolean;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('focusInput') focusInputEl: ElementRef;\n\n    @ViewChild('container') containerEl: ElementRef;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onGroupChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    selectionPath: any = null;\n\n    focused: boolean = false;\n\n    filled: boolean = false;\n\n    overlayVisible: boolean = false;\n\n    dirty: boolean = false;\n\n    valueTemplate: TemplateRef<any>;\n\n    optionTemplate: TemplateRef<any>;\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    overlayEl: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private el: ElementRef, private cd: ChangeDetectorRef, private config: PrimeNGConfig, public overlayService: OverlayService) { }\n\n    ngOnInit() {\n        this.updateSelectionPath();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'value':\n                    this.valueTemplate = item.template;\n                break;\n                case 'option':\n                    this.optionTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onOptionSelect(event) {\n        this.value = event.value;\n        this.updateSelectionPath();\n        this.onModelChange(this.value);\n        this.onChange.emit(event);\n        this.hide();\n        this.focusInputEl.nativeElement.focus();\n    }\n\n    onOptionGroupSelect(event) {\n        this.dirty = true;\n        this.onGroupChange.emit(event);\n    }\n\n    getOptionLabel(option) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n    }\n\n    getOptionValue(option) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n    }\n\n    getOptionGroupChildren(optionGroup, level) {\n        return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n    }\n\n    isOptionGroup(option, level) {\n        return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n    }\n\n    updateSelectionPath() {\n        let path;\n        if (this.value != null && this.options) {\n            for (let option of this.options) {\n                path = this.findModelOptionInGroup(option, 0);\n                if (path) {\n                    break;\n                }\n            }\n        }\n\n        this.selectionPath = path;\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);\n    }\n\n    findModelOptionInGroup(option, level) {\n        if (this.isOptionGroup(option, level)) {\n            let selectedOption;\n            for (let childOption of this.getOptionGroupChildren(option, level)) {\n                selectedOption = this.findModelOptionInGroup(childOption, level + 1);\n                if (selectedOption) {\n                    selectedOption.unshift(option);\n                    return selectedOption;\n                }\n            }\n        }\n        else if ((ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey))) {\n            return [option];\n        }\n\n        return null;\n    }\n\n    show() {\n        this.onBeforeShow.emit();\n        this.overlayVisible = true;\n    }\n\n    hide() {\n        this.onBeforeHide.emit();\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onClick(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!this.overlayEl || !this.overlayEl || !this.overlayEl.contains(event.target)) {\n            if (this.overlayVisible){\n                this.hide();\n            }\n            else{\n                this.show();\n            }\n\n            this.focusInputEl.nativeElement.focus();\n        }\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlayEl = event.element;\n                this.onOverlayEnter();\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onOverlayLeave();\n            break;\n        }\n    }\n\n    onOverlayEnter() {\n        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);\n        this.appendContainer();\n        this.alignOverlay();\n        this.bindOutsideClickListener();\n        this.bindScrollListener();\n        this.bindResizeListener();\n        this.onShow.emit();\n    }\n\n    onOverlayLeave() {\n        this.unbindOutsideClickListener();\n        this.unbindScrollListener();\n        this.unbindResizeListener();\n        this.onHide.emit();\n        ZIndexUtils.clear(this.overlayEl);\n        this.overlayEl = null;\n        this.dirty = false;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateSelectionPath();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);\n            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';\n        } else {\n            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);\n        }\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlayEl);\n        }\n    }\n\n    restoreAppend() {\n        if (this.overlayEl && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlayEl);\n        }\n    }\n\n    label() {\n        if (this.selectionPath)\n            return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);\n        else\n            return this.placeholder||'p-emptylabel';\n    }\n\n    onKeyDown(event) {\n        switch(event.code) {\n            case 'Down':\n            case 'ArrowDown':\n                if (this.overlayVisible) {\n                    DomHandler.findSingle(this.overlayEl, '.p-cascadeselect-item').children[0].focus();\n                }\n                else if (event.altKey && this.options && this.options.length) {\n                    this.show();\n                }\n                event.preventDefault();\n            break;\n\n            case 'Space':\n            case 'Enter':\n                if (!this.overlayVisible)\n                    this.show();\n                else\n                    this.hide();\n\n                event.preventDefault();\n            break;\n\n            case 'Tab':\n            case 'Escape':\n                if (this.overlayVisible) {\n                    this.hide();\n                    event.preventDefault();\n                }\n            break;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-cascadeselect p-component p-inputwrapper': true,\n            'p-disabled': this.disabled,\n            'p-focus': this.focused\n        };\n    }\n\n    labelClass() {\n        return {\n            'p-cascadeselect-label': true,\n            'p-placeholder': this.label() === this.placeholder,\n            'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)\n        };\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n        this.overlayEl = null;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [CascadeSelect, CascadeSelectSub, SharedModule],\n    declarations: [CascadeSelect, CascadeSelectSub]\n})\nexport class CascadeSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,141 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import Chart from 'chart.js/auto';
+
+class UIChart {
+    constructor(el) {
+        this.el = el;
+        this.plugins = [];
+        this.responsive = true;
+        this.onDataSelect = new EventEmitter();
+        this._options = {};
+    }
+    get data() {
+        return this._data;
+    }
+    set data(val) {
+        this._data = val;
+        this.reinit();
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.reinit();
+    }
+    ngAfterViewInit() {
+        this.initChart();
+        this.initialized = true;
+    }
+    onCanvasClick(event) {
+        if (this.chart) {
+            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
+            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);
+            if (element && element[0] && dataset) {
+                this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });
+            }
+        }
+    }
+    initChart() {
+        let opts = this.options || {};
+        opts.responsive = this.responsive;
+        // allows chart to resize in responsive mode
+        if (opts.responsive && (this.height || this.width)) {
+            opts.maintainAspectRatio = false;
+        }
+        this.chart = new Chart(this.el.nativeElement.children[0].children[0], {
+            type: this.type,
+            data: this.data,
+            options: this.options,
+            plugins: this.plugins
+        });
+    }
+    getCanvas() {
+        return this.el.nativeElement.children[0].children[0];
+    }
+    getBase64Image() {
+        return this.chart.toBase64Image();
+    }
+    generateLegend() {
+        if (this.chart) {
+            return this.chart.generateLegend();
+        }
+    }
+    refresh() {
+        if (this.chart) {
+            this.chart.update();
+        }
+    }
+    reinit() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initChart();
+        }
+    }
+    ngOnDestroy() {
+        if (this.chart) {
+            this.chart.destroy();
+            this.initialized = false;
+            this.chart = null;
+        }
+    }
+}
+UIChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+UIChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIChart, selector: "p-chart", inputs: { type: "type", plugins: "plugins", width: "width", height: "height", responsive: "responsive", data: "data", options: "options" }, outputs: { onDataSelect: "onDataSelect" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-chart',
+                    template: `
+        <div style="position:relative" [style.width]="responsive && !width ? null : width" [style.height]="responsive && !height ? null : height">
+            <canvas [attr.width]="responsive && !width ? null : width" [attr.height]="responsive && !height ? null : height" (click)="onCanvasClick($event)"></canvas>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], plugins: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], onDataSelect: [{
+                type: Output
+            }], data: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+class ChartModule {
+}
+ChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, declarations: [UIChart], imports: [CommonModule], exports: [UIChart] });
+ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIChart],
+                    declarations: [UIChart]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ChartModule, UIChart };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chart.mjs","sources":["../../src/app/components/chart/chart.ts","../../src/app/components/chart/primeng-chart.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport Chart from 'chart.js/auto';\n\n@Component({\n    selector: 'p-chart',\n    template: `\n        <div style=\"position:relative\" [style.width]=\"responsive && !width ? null : width\" [style.height]=\"responsive && !height ? null : height\">\n            <canvas [attr.width]=\"responsive && !width ? null : width\" [attr.height]=\"responsive && !height ? null : height\" (click)=\"onCanvasClick($event)\"></canvas>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UIChart implements AfterViewInit, OnDestroy {\n\n    @Input() type: string;\n\n    @Input() plugins: any[] = [];\n\n    @Input() width: string;\n\n    @Input() height: string;\n\n    @Input() responsive: boolean = true;\n\n    @Output() onDataSelect: EventEmitter<any> = new EventEmitter();\n\n    initialized: boolean;\n\n    _data: any;\n\n    _options: any = {};\n\n    chart: any;\n\n    constructor(public el: ElementRef) {}\n\n    @Input() get data(): any {\n        return this._data;\n    }\n\n    set data(val:any) {\n        this._data = val;\n        this.reinit();\n    }\n\n    @Input() get options(): any {\n        return this._options;\n    }\n\n    set options(val:any) {\n        this._options = val;\n        this.reinit();\n    }\n\n    ngAfterViewInit() {\n        this.initChart();\n        this.initialized = true;\n    }\n\n    onCanvasClick(event) {\n        if (this.chart) {\n            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n\n            if (element && element[0] && dataset) {\n                this.onDataSelect.emit({originalEvent: event, element: element[0], dataset: dataset});\n            }\n        }\n    }\n\n    initChart() {\n        let opts = this.options||{};\n        opts.responsive = this.responsive;\n\n        // allows chart to resize in responsive mode\n        if (opts.responsive&&(this.height||this.width)) {\n            opts.maintainAspectRatio = false;\n        }\n\n        this.chart = new Chart(this.el.nativeElement.children[0].children[0], {\n            type: this.type,\n            data: this.data,\n            options: this.options,\n            plugins: this.plugins\n        });\n    }\n\n    getCanvas() {\n        return this.el.nativeElement.children[0].children[0];\n    }\n\n    getBase64Image() {\n        return this.chart.toBase64Image();\n    }\n\n    generateLegend() {\n        if (this.chart) {\n            return this.chart.generateLegend();\n        }\n    }\n\n    refresh() {\n        if (this.chart) {\n            this.chart.update();\n        }\n    }\n\n    reinit() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initChart();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initialized = false;\n            this.chart = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [UIChart],\n    declarations: [UIChart]\n})\nexport class ChartModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,182 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ObjectUtils } from 'primeng/utils';
+
+const CHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Checkbox),
+    multi: true
+};
+class Checkbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxIcon = 'pi pi-check';
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.focused = false;
+    }
+    onClick(event, checkbox, focus) {
+        event.preventDefault();
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        this.updateModel(event);
+        if (focus) {
+            checkbox.focus();
+        }
+    }
+    updateModel(event) {
+        let newModelValue;
+        if (!this.binary) {
+            if (this.checked())
+                newModelValue = this.model.filter(val => !ObjectUtils.equals(val, this.value));
+            else
+                newModelValue = this.model ? [...this.model, this.value] : [this.value];
+            this.onModelChange(newModelValue);
+            this.model = newModelValue;
+            if (this.formControl) {
+                this.formControl.setValue(newModelValue);
+            }
+        }
+        else {
+            newModelValue = this.checked() ? this.falseValue : this.trueValue;
+            this.model = newModelValue;
+            this.onModelChange(newModelValue);
+        }
+        this.onChange.emit({ checked: newModelValue, originalEvent: event });
+    }
+    handleChange(event) {
+        if (!this.readonly) {
+            this.updateModel(event);
+        }
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    writeValue(model) {
+        this.model = model;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);
+    }
+}
+Checkbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Checkbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Checkbox, selector: "p-checkbox", inputs: { value: "value", name: "name", disabled: "disabled", binary: "binary", label: "label", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", formControl: "formControl", checkboxIcon: "checkboxIcon", readonly: "readonly", required: "required", trueValue: "trueValue", falseValue: "falseValue" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [CHECKBOX_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["cb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Checkbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-checkbox', template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [readonly]="readonly" [value]="value" [checked]="checked()" (focus)="onFocus()" (blur)="onBlur()"
+                (change)="handleChange($event)" [disabled]="disabled" [attr.tabindex]="tabindex" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-label]="ariaLabel" [attr.aria-checked]="checked()" [attr.required]="required">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,cb,true)"
+                        [ngClass]="{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-checkbox-icon" [ngClass]="checked() ? checkboxIcon : null"></span>
+            </div>
+        </div>
+        <label (click)="onClick($event,cb,true)" [class]="labelStyleClass"
+                [ngClass]="{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+                *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, providers: [CHECKBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], binary: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], formControl: [{
+                type: Input
+            }], checkboxIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['cb']
+            }], onChange: [{
+                type: Output
+            }] } });
+class CheckboxModule {
+}
+CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, declarations: [Checkbox], imports: [CommonModule], exports: [Checkbox] });
+CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Checkbox],
+                    declarations: [Checkbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CHECKBOX_VALUE_ACCESSOR, Checkbox, CheckboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-checkbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-checkbox.mjs","sources":["../../src/app/components/checkbox/checkbox.ts","../../src/app/components/checkbox/primeng-checkbox.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ViewChild,ElementRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor, FormControl} from '@angular/forms';\nimport { ObjectUtils } from 'primeng/utils';\n\nexport const CHECKBOX_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Checkbox),\n  multi: true\n};\n\n@Component({\n    selector: 'p-checkbox',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-checkbox p-component': true, 'p-checkbox-checked': checked(), 'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [readonly]=\"readonly\" [value]=\"value\" [checked]=\"checked()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                (change)=\"handleChange($event)\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-label]=\"ariaLabel\" [attr.aria-checked]=\"checked()\" [attr.required]=\"required\">\n            </div>\n            <div class=\"p-checkbox-box\" (click)=\"onClick($event,cb,true)\"\n                        [ngClass]=\"{'p-highlight': checked(), 'p-disabled': disabled, 'p-focus': focused}\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"checked() ? checkboxIcon : null\"></span>\n            </div>\n        </div>\n        <label (click)=\"onClick($event,cb,true)\" [class]=\"labelStyleClass\"\n                [ngClass]=\"{'p-checkbox-label': true, 'p-checkbox-label-active':checked(), 'p-disabled':disabled, 'p-checkbox-label-focus':focused}\"\n                *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [CHECKBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./checkbox.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Checkbox implements ControlValueAccessor {\n\n    @Input() value: any;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() binary: boolean;\n\n    @Input() label: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() labelStyleClass: string;\n\n    @Input() formControl: FormControl;\n\n    @Input() checkboxIcon: string = 'pi pi-check';\n\n    @Input() readonly: boolean;\n\n    @Input() required: boolean;\n\n    @Input() trueValue: any = true;\n\n    @Input() falseValue: any = false;\n\n    @ViewChild('cb') inputViewChild: ElementRef;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    model: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    focused: boolean = false;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    onClick(event,checkbox,focus:boolean) {\n        event.preventDefault();\n\n        if (this.disabled || this.readonly) {\n            return;\n        }\n\n        this.updateModel(event);\n\n        if (focus) {\n            checkbox.focus();\n        }\n    }\n\n    updateModel(event) {\n        let newModelValue;\n\n        if (!this.binary) {\n            if (this.checked())\n                newModelValue = this.model.filter(val => !ObjectUtils.equals(val, this.value));\n            else\n                newModelValue = this.model ? [...this.model, this.value] : [this.value];\n\n            this.onModelChange(newModelValue);\n            this.model = newModelValue;\n\n            if (this.formControl) {\n                this.formControl.setValue(newModelValue);\n            }\n        }\n        else {\n            newModelValue = this.checked() ? this.falseValue : this.trueValue;\n            this.model = newModelValue;\n            this.onModelChange(newModelValue);\n        }\n\n        this.onChange.emit({checked:newModelValue, originalEvent: event});\n    }\n\n    handleChange(event) {\n        if (!this.readonly) {\n            this.updateModel(event);\n        }\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    writeValue(model: any) : void {\n        this.model = model;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    checked() {\n        return this.binary ? this.model === this.trueValue : ObjectUtils.contains(this.value, this.model);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Checkbox],\n    declarations: [Checkbox]\n})\nexport class CheckboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,81 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Chip {
+    constructor() {
+        this.removeIcon = "pi pi-times-circle";
+        this.onRemove = new EventEmitter();
+        this.visible = true;
+    }
+    containerClass() {
+        return {
+            'p-chip p-component': true,
+            'p-chip-image': this.image != null
+        };
+    }
+    close(event) {
+        this.visible = false;
+        this.onRemove.emit(event);
+    }
+}
+Chip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Chip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chip, selector: "p-chip", inputs: { label: "label", icon: "icon", image: "image", style: "style", styleClass: "styleClass", removable: "removable", removeIcon: "removeIcon" }, outputs: { onRemove: "onRemove" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, isInline: true, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chip, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chip', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" *ngIf="visible">
+            <ng-content></ng-content>
+            <img [src]="image" *ngIf="image;else iconTemplate">
+            <ng-template #iconTemplate><span *ngIf="icon" [class]="icon" [ngClass]="'p-chip-icon'"></span></ng-template>
+            <div class="p-chip-text" *ngIf="label">{{label}}</div>
+            <span *ngIf="removable" tabindex="0" [class]="removeIcon" [ngClass]="'pi-chip-remove-icon'" (click)="close($event)" (keydown.enter)="close($event)"></span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-chip{display:inline-flex;align-items:center}.p-chip-text,.p-chip-icon.pi{line-height:1.5}.pi-chip-remove-icon{line-height:1.5;cursor:pointer}.p-chip img{border-radius:50%}\n"] }]
+        }], propDecorators: { label: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], image: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], removable: [{
+                type: Input
+            }], removeIcon: [{
+                type: Input
+            }], onRemove: [{
+                type: Output
+            }] } });
+class ChipModule {
+}
+ChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, declarations: [Chip], imports: [CommonModule], exports: [Chip] });
+ChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Chip],
+                    declarations: [Chip]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Chip, ChipModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chip.mjs","sources":["../../src/app/components/chip/chip.ts","../../src/app/components/chip/primeng-chip.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-chip',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" *ngIf=\"visible\">\n            <ng-content></ng-content>\n            <img [src]=\"image\" *ngIf=\"image;else iconTemplate\">\n            <ng-template #iconTemplate><span *ngIf=\"icon\" [class]=\"icon\" [ngClass]=\"'p-chip-icon'\"></span></ng-template>\n            <div class=\"p-chip-text\" *ngIf=\"label\">{{label}}</div>\n            <span *ngIf=\"removable\" tabindex=\"0\" [class]=\"removeIcon\" [ngClass]=\"'pi-chip-remove-icon'\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\"></span>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./chip.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Chip {\n\n    @Input() label: string;\n\n    @Input() icon: string;\n\n    @Input() image: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() removable: boolean;\n\n    @Input() removeIcon: string = \"pi pi-times-circle\";\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    visible: boolean = true;\n\n    containerClass() {\n        return {\n            'p-chip p-component': true,\n            'p-chip-image': this.image != null\n        };\n    }\n\n    close(event) {\n        this.visible = false;\n        this.onRemove.emit(event)\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Chip],\n    declarations: [Chip]\n})\nexport class ChipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAqBa,IAAI;IAlBjB;QAgCa,eAAU,GAAW,oBAAoB,CAAC;QAEzC,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE3D,YAAO,GAAY,IAAI,CAAC;KAa3B;IAXG,cAAc;QACV,OAAO;YACH,oBAAoB,EAAE,IAAI;YAC1B,cAAc,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;SACrC,CAAC;KACL;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC5B;;iGA9BQ,IAAI;qFAAJ,IAAI,8QAhBH;;;;;;;;KAQT;2FAQQ,IAAI;kBAlBhB,SAAS;+BACI,QAAQ,YACR;;;;;;;;KAQT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEI,QAAQ;sBAAjB,MAAM;;MAsBE,UAAU;;uGAAV,UAAU;wGAAV,UAAU,iBAtCV,IAAI,aAkCH,YAAY,aAlCb,IAAI;wGAsCJ,UAAU,YAJV,CAAC,YAAY,CAAC;2FAId,UAAU;kBALtB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,IAAI,CAAC;oBACf,YAAY,EAAE,CAAC,IAAI,CAAC;iBACvB;;;AC1DD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,297 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const CHIPS_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Chips),
+    multi: true
+};
+class Chips {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.allowDuplicate = true;
+        this.onAdd = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onChipClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateFilledState();
+    }
+    onClick() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    onInput() {
+        this.updateFilledState();
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            if (this.separator) {
+                let pastedData = (event.clipboardData || window['clipboardData']).getData('Text');
+                pastedData.split(this.separator).forEach(val => {
+                    this.addItem(event, val, true);
+                });
+                this.inputViewChild.nativeElement.value = '';
+            }
+            this.updateFilledState();
+        }
+    }
+    updateFilledState() {
+        if (!this.value || this.value.length === 0) {
+            this.filled = (this.inputViewChild && this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '');
+        }
+        else {
+            this.filled = true;
+        }
+    }
+    onItemClick(event, item) {
+        this.onChipClick.emit({
+            originalEvent: event,
+            value: item
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateMaxedOut();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    resolveFieldData(data, field) {
+        if (data && field) {
+            if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (var i = 0, len = fields.length; i < len; ++i) {
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        if (this.addOnBlur && this.inputViewChild.nativeElement.value) {
+            this.addItem(event, this.inputViewChild.nativeElement.value, false);
+        }
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    removeItem(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        let removedItem = this.value[index];
+        this.value = this.value.filter((val, i) => i != index);
+        this.onModelChange(this.value);
+        this.onRemove.emit({
+            originalEvent: event,
+            value: removedItem
+        });
+        this.updateFilledState();
+        this.updateMaxedOut();
+    }
+    addItem(event, item, preventDefault) {
+        this.value = this.value || [];
+        if (item && item.trim().length) {
+            if (this.allowDuplicate || this.value.indexOf(item) === -1) {
+                this.value = [...this.value, item];
+                this.onModelChange(this.value);
+                this.onAdd.emit({
+                    originalEvent: event,
+                    value: item
+                });
+            }
+        }
+        this.updateFilledState();
+        this.updateMaxedOut();
+        this.inputViewChild.nativeElement.value = '';
+        if (preventDefault) {
+            event.preventDefault();
+        }
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //backspace
+            case 8:
+                if (this.inputViewChild.nativeElement.value.length === 0 && this.value && this.value.length > 0) {
+                    this.value = [...this.value];
+                    let removedItem = this.value.pop();
+                    this.onModelChange(this.value);
+                    this.onRemove.emit({
+                        originalEvent: event,
+                        value: removedItem
+                    });
+                    this.updateFilledState();
+                }
+                break;
+            //enter
+            case 13:
+                this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                break;
+            case 9:
+                if (this.addOnTab && this.inputViewChild.nativeElement.value !== '') {
+                    this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                }
+                break;
+            default:
+                if (this.max && this.value && this.max === this.value.length) {
+                    event.preventDefault();
+                }
+                else if (this.separator) {
+                    if (this.separator === ',' && event.which === 188) {
+                        this.addItem(event, this.inputViewChild.nativeElement.value, true);
+                    }
+                }
+                break;
+        }
+    }
+    updateMaxedOut() {
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.max && this.value && this.max === this.value.length)
+                this.inputViewChild.nativeElement.disabled = true;
+            else
+                this.inputViewChild.nativeElement.disabled = this.disabled || false;
+        }
+    }
+}
+Chips.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Chips.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Chips, selector: "p-chips", inputs: { style: "style", styleClass: "styleClass", disabled: "disabled", field: "field", placeholder: "placeholder", max: "max", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", allowDuplicate: "allowDuplicate", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", addOnTab: "addOnTab", addOnBlur: "addOnBlur", separator: "separator" }, outputs: { onAdd: "onAdd", onRemove: "onRemove", onFocus: "onFocus", onBlur: "onBlur", onChipClick: "onChipClick" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus" }, classAttribute: "p-element p-inputwrapper" }, providers: [CHIPS_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["inputtext"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Chips, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-chips', template: `
+        <div [ngClass]="'p-chips p-component'" [ngStyle]="style" [class]="styleClass" (click)="onClick()">
+            <ul [ngClass]="{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}">
+                <li #token *ngFor="let item of value; let i = index;" class="p-chips-token" (click)="onItemClick($event, item)">
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                    <span *ngIf="!itemTemplate" class="p-chips-token-label">{{field ? resolveFieldData(item,field) : item}}</span>
+                    <span *ngIf="!disabled" class="p-chips-token-icon pi pi-times-circle" (click)="removeItem($event,i)"></span>
+                </li>
+                <li class="p-chips-input-token">
+                    <input #inputtext type="text" [attr.id]="inputId" [attr.placeholder]="(value && value.length ? null : placeholder)" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)"
+                    (input)="onInput()" (paste)="onPaste($event)" [attr.aria-labelledby]="ariaLabelledBy" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled" [ngStyle]="inputStyle" [class]="inputStyleClass">
+                </li>
+            </ul>
+        </div>
+    `, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus'
+                    }, providers: [CHIPS_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-chips{display:inline-flex}.p-chips-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-chips-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-chips-input-token{flex:1 1 auto;display:inline-flex}.p-chips-token-icon{cursor:pointer}.p-chips-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-chips{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], field: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], allowDuplicate: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], addOnTab: [{
+                type: Input
+            }], addOnBlur: [{
+                type: Input
+            }], separator: [{
+                type: Input
+            }], onAdd: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onChipClick: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['inputtext']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ChipsModule {
+}
+ChipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ChipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, declarations: [Chips], imports: [CommonModule, InputTextModule, SharedModule], exports: [Chips, InputTextModule, SharedModule] });
+ChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, imports: [[CommonModule, InputTextModule, SharedModule], InputTextModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ChipsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, SharedModule],
+                    exports: [Chips, InputTextModule, SharedModule],
+                    declarations: [Chips]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CHIPS_VALUE_ACCESSOR, Chips, ChipsModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-chips.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-chips.mjs","sources":["../../src/app/components/chips/chips.ts","../../src/app/components/chips/primeng-chips.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,EventEmitter,AfterContentInit,ContentChildren,QueryList,TemplateRef,forwardRef,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const CHIPS_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Chips),\n  multi: true\n};\n\n@Component({\n    selector: 'p-chips',\n    template: `\n        <div [ngClass]=\"'p-chips p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onClick()\">\n            <ul [ngClass]=\"{'p-inputtext p-chips-multiple-container':true,'p-focus':focus,'p-disabled':disabled}\">\n                <li #token *ngFor=\"let item of value; let i = index;\" class=\"p-chips-token\" (click)=\"onItemClick($event, item)\">\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                    <span *ngIf=\"!itemTemplate\" class=\"p-chips-token-label\">{{field ? resolveFieldData(item,field) : item}}</span>\n                    <span *ngIf=\"!disabled\" class=\"p-chips-token-icon pi pi-times-circle\" (click)=\"removeItem($event,i)\"></span>\n                </li>\n                <li class=\"p-chips-input-token\">\n                    <input #inputtext type=\"text\" [attr.id]=\"inputId\" [attr.placeholder]=\"(value && value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" (keydown)=\"onKeydown($event)\"\n                    (input)=\"onInput()\" (paste)=\"onPaste($event)\" [attr.aria-labelledby]=\"ariaLabelledBy\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" [disabled]=\"disabled\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\">\n                </li>\n            </ul>\n        </div>\n    `,\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus'\n    },\n    providers: [CHIPS_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./chips.css']\n})\nexport class Chips implements AfterContentInit,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() disabled: boolean;\n\n    @Input() field: string;\n\n    @Input() placeholder: string;\n\n    @Input() max: number;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() allowDuplicate: boolean = true;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: any;\n\n    @Input() addOnTab: boolean;\n\n    @Input() addOnBlur: boolean;\n\n    @Input() separator: string;\n\n    @Output() onAdd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChipClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('inputtext') inputViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    valueChanged: boolean;\n\n    focus: boolean;\n\n    filled: boolean;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n\n        this.updateFilledState();\n    }\n\n    onClick() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    onInput() {\n        this.updateFilledState();\n    }\n\n    onPaste(event) {\n        if (!this.disabled) {\n            if (this.separator) {\n                let pastedData = (event.clipboardData || window['clipboardData']).getData('Text');\n                pastedData.split(this.separator).forEach(val => {\n                    this.addItem(event, val, true);\n                });\n                this.inputViewChild.nativeElement.value = '';\n            }\n\n            this.updateFilledState();\n        }\n    }\n\n    updateFilledState() {\n        if (!this.value || this.value.length === 0) {\n            this.filled = (this.inputViewChild && this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '');\n        }\n        else {\n            this.filled = true;\n        }\n    }\n\n    onItemClick(event: Event, item: any) {\n        this.onChipClick.emit({\n            originalEvent: event,\n            value: item\n        });\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateMaxedOut();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    resolveFieldData(data: any, field: string): any {\n        if (data && field) {\n            if (field.indexOf('.') == -1) {\n                return data[field];\n            }\n            else {\n                let fields: string[] = field.split('.');\n                let value = data;\n                for(var i = 0, len = fields.length; i < len; ++i) {\n                    value = value[fields[i]];\n                }\n                return value;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    onInputFocus(event: FocusEvent) {\n        this.focus = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: FocusEvent) {\n        this.focus = false;\n        if (this.addOnBlur && this.inputViewChild.nativeElement.value) {\n            this.addItem(event, this.inputViewChild.nativeElement.value, false);\n        }\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    removeItem(event: Event, index: number): void {\n        if (this.disabled) {\n            return;\n        }\n\n        let removedItem = this.value[index];\n        this.value = this.value.filter((val, i) => i!=index);\n        this.onModelChange(this.value);\n        this.onRemove.emit({\n            originalEvent: event,\n            value: removedItem\n        });\n        this.updateFilledState();\n        this.updateMaxedOut();\n    }\n\n    addItem(event: Event, item: string, preventDefault: boolean): void {\n        this.value = this.value||[];\n        if (item && item.trim().length) {\n            if (this.allowDuplicate || this.value.indexOf(item) === -1) {\n                this.value = [...this.value, item];\n                this.onModelChange(this.value);\n                this.onAdd.emit({\n                    originalEvent: event,\n                    value: item\n                });\n            }\n        }\n        this.updateFilledState();\n        this.updateMaxedOut();\n        this.inputViewChild.nativeElement.value = '';\n\n        if (preventDefault) {\n            event.preventDefault();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent): void {\n        switch(event.which) {\n            //backspace\n            case 8:\n                if (this.inputViewChild.nativeElement.value.length === 0 && this.value && this.value.length > 0) {\n                    this.value = [...this.value];\n                    let removedItem = this.value.pop();\n                    this.onModelChange(this.value);\n                    this.onRemove.emit({\n                        originalEvent: event,\n                        value: removedItem\n                    });\n                    this.updateFilledState();\n                }\n            break;\n\n            //enter\n            case 13:\n                this.addItem(event, this.inputViewChild.nativeElement.value, true);\n            break;\n\n            case 9:\n                if (this.addOnTab && this.inputViewChild.nativeElement.value !== '') {\n                    this.addItem(event, this.inputViewChild.nativeElement.value, true);\n                }\n            break;\n\n            default:\n                if (this.max && this.value && this.max === this.value.length) {\n                    event.preventDefault();\n                }\n                else if (this.separator) {\n                    if (this.separator === ',' && event.which === 188) {\n                        this.addItem(event, this.inputViewChild.nativeElement.value, true);\n                    }\n                }\n            break;\n        }\n    }\n\n    updateMaxedOut() {\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            if (this.max && this.value && this.max === this.value.length)\n                this.inputViewChild.nativeElement.disabled = true;\n            else\n                this.inputViewChild.nativeElement.disabled = this.disabled || false;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule,SharedModule],\n    exports: [Chips,InputTextModule,SharedModule],\n    declarations: [Chips]\n})\nexport class ChipsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,44 @@
+import * as i0 from '@angular/core';
+import { Directive, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class CodeHighlighter {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        if (window['Prism']) {
+            window['Prism'].highlightElement(this.el.nativeElement);
+        }
+    }
+}
+CodeHighlighter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+CodeHighlighter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CodeHighlighter, selector: "[pCode]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCode]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
+class CodeHighlighterModule {
+}
+CodeHighlighterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+CodeHighlighterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, declarations: [CodeHighlighter], imports: [CommonModule], exports: [CodeHighlighter] });
+CodeHighlighterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CodeHighlighterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [CodeHighlighter],
+                    declarations: [CodeHighlighter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CodeHighlighter, CodeHighlighterModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-codehighlighter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-codehighlighter.mjs","sources":["../../src/app/components/codehighlighter/codehighlighter.ts","../../src/app/components/codehighlighter/primeng-codehighlighter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Directive({\n    selector: '[pCode]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CodeHighlighter implements AfterViewInit {\n\n    constructor(public el: ElementRef) { }\n\n    ngAfterViewInit() {\n        if (window['Prism']) {\n            window['Prism'].highlightElement(this.el.nativeElement);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [CodeHighlighter],\n    declarations: [CodeHighlighter]\n})\nexport class CodeHighlighterModule { }\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MASa,eAAe;IAExB,YAAmB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAK;IAEtC,eAAe;QACX,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;YACjB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SAC3D;KACJ;;4GARQ,eAAe;gGAAf,eAAe;2FAAf,eAAe;kBAN3B,SAAS;mBAAC;oBACP,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;;MAiBY,qBAAqB;;kHAArB,qBAAqB;mHAArB,qBAAqB,iBAhBrB,eAAe,aAYd,YAAY,aAZb,eAAe;mHAgBf,qBAAqB,YAJrB,CAAC,YAAY,CAAC;2FAId,qBAAqB;kBALjC,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,YAAY,EAAE,CAAC,eAAe,CAAC;iBAClC;;;ACxBD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,664 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+const COLORPICKER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ColorPicker),
+    multi: true
+};
+class ColorPicker {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.format = 'hex';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onChange = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.value = { h: 0, s: 100, b: 100 };
+        this.defaultColor = 'ff0000';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set colorSelector(element) {
+        this.colorSelectorViewChild = element;
+    }
+    set colorHandle(element) {
+        this.colorHandleViewChild = element;
+    }
+    set hue(element) {
+        this.hueViewChild = element;
+    }
+    set hueHandle(element) {
+        this.hueHandleViewChild = element;
+    }
+    onHueMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.hueDragging = true;
+        this.pickHue(event);
+    }
+    onHueTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.hueDragging = true;
+        this.pickHue(event, event.changedTouches[0]);
+    }
+    onColorTouchStart(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.colorDragging = true;
+        this.pickColor(event, event.changedTouches[0]);
+    }
+    pickHue(event, position) {
+        let pageY = position ? position.pageY : event.pageY;
+        let top = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        this.value = this.validateHSB({
+            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, (pageY - top)))) / 150),
+            s: this.value.s,
+            b: this.value.b
+        });
+        this.updateColorSelector();
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    onColorMousedown(event) {
+        if (this.disabled) {
+            return;
+        }
+        this.bindDocumentMousemoveListener();
+        this.bindDocumentMouseupListener();
+        this.colorDragging = true;
+        this.pickColor(event);
+    }
+    onMove(event) {
+        if (this.colorDragging) {
+            this.pickColor(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+        if (this.hueDragging) {
+            this.pickHue(event, event.changedTouches[0]);
+            event.preventDefault();
+        }
+    }
+    onDragEnd() {
+        this.colorDragging = false;
+        this.hueDragging = false;
+        this.unbindDocumentMousemoveListener();
+        this.unbindDocumentMouseupListener();
+    }
+    pickColor(event, position) {
+        let pageX = position ? position.pageX : event.pageX;
+        let pageY = position ? position.pageY : event.pageY;
+        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();
+        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);
+        let left = rect.left + document.body.scrollLeft;
+        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((pageX) - left)))) / 150);
+        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((pageY) - top)))) / 150);
+        this.value = this.validateHSB({
+            h: this.value.h,
+            s: saturation,
+            b: brightness
+        });
+        this.updateUI();
+        this.updateModel();
+        this.onChange.emit({ originalEvent: event, value: this.getValueToUpdate() });
+    }
+    getValueToUpdate() {
+        let val;
+        switch (this.format) {
+            case 'hex':
+                val = '#' + this.HSBtoHEX(this.value);
+                break;
+            case 'rgb':
+                val = this.HSBtoRGB(this.value);
+                break;
+            case 'hsb':
+                val = this.value;
+                break;
+        }
+        return val;
+    }
+    updateModel() {
+        this.onModelChange(this.getValueToUpdate());
+    }
+    writeValue(value) {
+        if (value) {
+            switch (this.format) {
+                case 'hex':
+                    this.value = this.HEXtoHSB(value);
+                    break;
+                case 'rgb':
+                    this.value = this.RGBtoHSB(value);
+                    break;
+                case 'hsb':
+                    this.value = value;
+                    break;
+            }
+        }
+        else {
+            this.value = this.HEXtoHSB(this.defaultColor);
+        }
+        this.updateColorSelector();
+        this.updateUI();
+        this.cd.markForCheck();
+    }
+    updateColorSelector() {
+        if (this.colorSelectorViewChild) {
+            const hsb = {};
+            hsb.s = 100;
+            hsb.b = 100;
+            hsb.h = this.value.h;
+            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);
+        }
+    }
+    updateUI() {
+        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {
+            this.colorHandleViewChild.nativeElement.style.left = Math.floor(150 * this.value.s / 100) + 'px';
+            this.colorHandleViewChild.nativeElement.style.top = Math.floor(150 * (100 - this.value.b) / 100) + 'px';
+            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';
+        }
+        this.inputBgColor = '#' + this.HSBtoHEX(this.value);
+    }
+    onInputFocus() {
+        this.onModelTouched();
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.overlay = event.element;
+                    this.appendOverlay();
+                    if (this.autoZIndex) {
+                        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                    }
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                    this.updateColorSelector();
+                    this.updateUI();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (!this.inline) {
+                    this.onShow.emit({});
+                }
+                break;
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                this.onHide.emit({});
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo)
+            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);
+        else
+            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onInputClick() {
+        this.selfClick = true;
+        this.togglePanel();
+    }
+    togglePanel() {
+        if (!this.overlayVisible)
+            this.show();
+        else
+            this.hide();
+    }
+    onInputKeydown(event) {
+        switch (event.which) {
+            //space
+            case 32:
+                this.togglePanel();
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.selfClick) {
+                    this.overlayVisible = false;
+                    this.unbindDocumentClickListener();
+                }
+                this.selfClick = false;
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentMousemoveListener() {
+        if (!this.documentMousemoveListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                if (this.colorDragging) {
+                    this.pickColor(event);
+                }
+                if (this.hueDragging) {
+                    this.pickHue(event);
+                }
+            });
+        }
+    }
+    unbindDocumentMousemoveListener() {
+        if (this.documentMousemoveListener) {
+            this.documentMousemoveListener();
+            this.documentMousemoveListener = null;
+        }
+    }
+    bindDocumentMouseupListener() {
+        if (!this.documentMouseupListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {
+                this.colorDragging = false;
+                this.hueDragging = false;
+                this.unbindDocumentMousemoveListener();
+                this.unbindDocumentMouseupListener();
+            });
+        }
+    }
+    unbindDocumentMouseupListener() {
+        if (this.documentMouseupListener) {
+            this.documentMouseupListener();
+            this.documentMouseupListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    validateHSB(hsb) {
+        return {
+            h: Math.min(360, Math.max(0, hsb.h)),
+            s: Math.min(100, Math.max(0, hsb.s)),
+            b: Math.min(100, Math.max(0, hsb.b))
+        };
+    }
+    validateRGB(rgb) {
+        return {
+            r: Math.min(255, Math.max(0, rgb.r)),
+            g: Math.min(255, Math.max(0, rgb.g)),
+            b: Math.min(255, Math.max(0, rgb.b))
+        };
+    }
+    validateHEX(hex) {
+        var len = 6 - hex.length;
+        if (len > 0) {
+            var o = [];
+            for (var i = 0; i < len; i++) {
+                o.push('0');
+            }
+            o.push(hex);
+            hex = o.join('');
+        }
+        return hex;
+    }
+    HEXtoRGB(hex) {
+        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
+        return { r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF) };
+    }
+    HEXtoHSB(hex) {
+        return this.RGBtoHSB(this.HEXtoRGB(hex));
+    }
+    RGBtoHSB(rgb) {
+        var hsb = {
+            h: 0,
+            s: 0,
+            b: 0
+        };
+        var min = Math.min(rgb.r, rgb.g, rgb.b);
+        var max = Math.max(rgb.r, rgb.g, rgb.b);
+        var delta = max - min;
+        hsb.b = max;
+        hsb.s = max != 0 ? 255 * delta / max : 0;
+        if (hsb.s != 0) {
+            if (rgb.r == max) {
+                hsb.h = (rgb.g - rgb.b) / delta;
+            }
+            else if (rgb.g == max) {
+                hsb.h = 2 + (rgb.b - rgb.r) / delta;
+            }
+            else {
+                hsb.h = 4 + (rgb.r - rgb.g) / delta;
+            }
+        }
+        else {
+            hsb.h = -1;
+        }
+        hsb.h *= 60;
+        if (hsb.h < 0) {
+            hsb.h += 360;
+        }
+        hsb.s *= 100 / 255;
+        hsb.b *= 100 / 255;
+        return hsb;
+    }
+    HSBtoRGB(hsb) {
+        var rgb = {
+            r: null, g: null, b: null
+        };
+        let h = hsb.h;
+        let s = hsb.s * 255 / 100;
+        let v = hsb.b * 255 / 100;
+        if (s == 0) {
+            rgb = {
+                r: v,
+                g: v,
+                b: v
+            };
+        }
+        else {
+            let t1 = v;
+            let t2 = (255 - s) * v / 255;
+            let t3 = (t1 - t2) * (h % 60) / 60;
+            if (h == 360)
+                h = 0;
+            if (h < 60) {
+                rgb.r = t1;
+                rgb.b = t2;
+                rgb.g = t2 + t3;
+            }
+            else if (h < 120) {
+                rgb.g = t1;
+                rgb.b = t2;
+                rgb.r = t1 - t3;
+            }
+            else if (h < 180) {
+                rgb.g = t1;
+                rgb.r = t2;
+                rgb.b = t2 + t3;
+            }
+            else if (h < 240) {
+                rgb.b = t1;
+                rgb.r = t2;
+                rgb.g = t1 - t3;
+            }
+            else if (h < 300) {
+                rgb.b = t1;
+                rgb.g = t2;
+                rgb.r = t2 + t3;
+            }
+            else if (h < 360) {
+                rgb.r = t1;
+                rgb.g = t2;
+                rgb.b = t1 - t3;
+            }
+            else {
+                rgb.r = 0;
+                rgb.g = 0;
+                rgb.b = 0;
+            }
+        }
+        return { r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b) };
+    }
+    RGBtoHEX(rgb) {
+        var hex = [
+            rgb.r.toString(16),
+            rgb.g.toString(16),
+            rgb.b.toString(16)
+        ];
+        for (var key in hex) {
+            if (hex[key].length == 1) {
+                hex[key] = '0' + hex[key];
+            }
+        }
+        return hex.join('');
+    }
+    HSBtoHEX(hsb) {
+        return this.RGBtoHEX(this.HSBtoRGB(hsb));
+    }
+    onOverlayHide() {
+        this.unbindScrollListener();
+        this.unbindDocumentResizeListener();
+        this.unbindDocumentClickListener();
+        this.overlay = null;
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay && this.autoZIndex) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+ColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColorPicker, selector: "p-colorPicker", inputs: { style: "style", styleClass: "styleClass", inline: "inline", format: "format", appendTo: "appendTo", disabled: "disabled", tabindex: "tabindex", inputId: "inputId", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onChange: "onChange", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, providers: [COLORPICKER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }, { propertyName: "colorSelector", first: true, predicate: ["colorSelector"], descendants: true }, { propertyName: "colorHandle", first: true, predicate: ["colorHandle"], descendants: true }, { propertyName: "hue", first: true, predicate: ["hue"], descendants: true }, { propertyName: "hueHandle", first: true, predicate: ["hueHandle"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPicker, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-colorPicker', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}">
+            <input #input type="text" *ngIf="!inline" class="p-colorpicker-preview p-inputtext" readonly="readonly" [ngClass]="{'p-disabled': disabled}"
+                (focus)="onInputFocus()" (click)="onInputClick()" (keydown)="onInputKeydown($event)" [attr.id]="inputId" [attr.tabindex]="tabindex" [disabled]="disabled"
+                [style.backgroundColor]="inputBgColor">
+            <div *ngIf="inline || overlayVisible" [ngClass]="{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="inline === true"
+                    (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+                <div class="p-colorpicker-content">
+                    <div #colorSelector class="p-colorpicker-color-selector" (touchstart)="onColorTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()" (mousedown)="onColorMousedown($event)">
+                        <div class="p-colorpicker-color">
+                            <div #colorHandle class="p-colorpicker-color-handle"></div>
+                        </div>
+                    </div>
+                    <div #hue class="p-colorpicker-hue" (mousedown)="onHueMousedown($event)" (touchstart)="onHueTouchStart($event)" (touchmove)="onMove($event)" (touchend)="onDragEnd()">
+                        <div #hueHandle class="p-colorpicker-hue-handle"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], providers: [COLORPICKER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-colorpicker{display:inline-block}.p-colorpicker-dragging{cursor:pointer}.p-colorpicker-overlay{position:relative}.p-colorpicker-panel{position:relative;width:193px;height:166px}.p-colorpicker-overlay-panel{position:absolute;top:0;left:0}.p-colorpicker-preview{cursor:pointer}.p-colorpicker-panel .p-colorpicker-content{position:relative}.p-colorpicker-panel .p-colorpicker-color-selector{width:150px;height:150px;top:8px;left:8px;position:absolute}.p-colorpicker-panel .p-colorpicker-color{width:150px;height:150px}.p-colorpicker-panel .p-colorpicker-color-handle{position:absolute;top:0px;left:150px;border-radius:100%;width:10px;height:10px;border-width:1px;border-style:solid;margin:-5px 0 0 -5px;cursor:pointer;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue{width:17px;height:150px;top:8px;left:167px;position:absolute;opacity:.85}.p-colorpicker-panel .p-colorpicker-hue-handle{position:absolute;top:150px;left:0px;width:21px;margin-left:-2px;margin-top:-5px;height:10px;border-width:2px;border-style:solid;opacity:.85;cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inline: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input']
+            }], colorSelector: [{
+                type: ViewChild,
+                args: ['colorSelector']
+            }], colorHandle: [{
+                type: ViewChild,
+                args: ['colorHandle']
+            }], hue: [{
+                type: ViewChild,
+                args: ['hue']
+            }], hueHandle: [{
+                type: ViewChild,
+                args: ['hueHandle']
+            }] } });
+class ColorPickerModule {
+}
+ColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, declarations: [ColorPicker], imports: [CommonModule], exports: [ColorPicker] });
+ColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColorPickerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ColorPicker],
+                    declarations: [ColorPicker]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { COLORPICKER_VALUE_ACCESSOR, ColorPicker, ColorPickerModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-colorpicker.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-colorpicker.mjs","sources":["../../src/app/components/colorpicker/colorpicker.ts","../../src/app/components/colorpicker/primeng-colorpicker.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, OnDestroy, EventEmitter, forwardRef, Renderer2, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { trigger, state, style, transition, animate, AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { OverlayService, PrimeNGConfig } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\n\nexport const COLORPICKER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => ColorPicker),\n    multi: true\n};\n\n@Component({\n    selector: 'p-colorPicker',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}\">\n            <input #input type=\"text\" *ngIf=\"!inline\" class=\"p-colorpicker-preview p-inputtext\" readonly=\"readonly\" [ngClass]=\"{'p-disabled': disabled}\"\n                (focus)=\"onInputFocus()\" (click)=\"onInputClick()\" (keydown)=\"onInputKeydown($event)\" [attr.id]=\"inputId\" [attr.tabindex]=\"tabindex\" [disabled]=\"disabled\"\n                [style.backgroundColor]=\"inputBgColor\">\n            <div *ngIf=\"inline || overlayVisible\" [ngClass]=\"{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"inline === true\"\n                    (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <div class=\"p-colorpicker-content\">\n                    <div #colorSelector class=\"p-colorpicker-color-selector\" (touchstart)=\"onColorTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\" (mousedown)=\"onColorMousedown($event)\">\n                        <div class=\"p-colorpicker-color\">\n                            <div #colorHandle class=\"p-colorpicker-color-handle\"></div>\n                        </div>\n                    </div>\n                    <div #hue class=\"p-colorpicker-hue\" (mousedown)=\"onHueMousedown($event)\" (touchstart)=\"onHueTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\">\n                        <div #hueHandle class=\"p-colorpicker-hue-handle\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    providers: [COLORPICKER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./colorpicker.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColorPicker implements ControlValueAccessor, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inline: boolean;\n\n    @Input() format: string = 'hex';\n\n    @Input() appendTo: any;\n\n    @Input() disabled: boolean;\n\n    @Input() tabindex: string;\n\n    @Input() inputId: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('input') inputViewChild: ElementRef;\n\n    value: any = {h:0, s: 100, b: 100};\n\n    inputBgColor: string;\n\n    shown: boolean;\n\n    overlayVisible: boolean;\n\n    defaultColor: string = 'ff0000';\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    documentClickListener: Function;\n\n    documentResizeListener: any;\n\n    documentMousemoveListener: Function;\n\n    documentMouseupListener: Function;\n\n    documentHueMoveListener: Function;\n\n    scrollHandler: any;\n\n    selfClick: boolean;\n\n    colorDragging: boolean;\n\n    hueDragging: boolean;\n\n    overlay: HTMLDivElement;\n\n    colorSelectorViewChild: ElementRef;\n\n    colorHandleViewChild: ElementRef;\n\n    hueViewChild: ElementRef;\n\n    hueHandleViewChild: ElementRef;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    @ViewChild('colorSelector') set colorSelector(element: ElementRef) {\n        this.colorSelectorViewChild = element;\n    }\n\n    @ViewChild('colorHandle') set colorHandle(element: ElementRef) {\n        this.colorHandleViewChild = element;\n    }\n\n    @ViewChild('hue') set hue(element: ElementRef) {\n        this.hueViewChild = element;\n    }\n\n    @ViewChild('hueHandle') set hueHandle(element: ElementRef) {\n        this.hueHandleViewChild = element;\n    }\n\n    onHueMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.hueDragging = true;\n        this.pickHue(event);\n    }\n\n    onHueTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.hueDragging = true;\n        this.pickHue(event, event.changedTouches[0]);\n    }\n\n    onColorTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.colorDragging = true;\n        this.pickColor(event, event.changedTouches[0]);\n    }\n\n    pickHue(event, position?) {\n        let pageY = position ? position.pageY : event.pageY;\n        let top: number = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        this.value = this.validateHSB({\n            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, (pageY - top)))) / 150),\n            s: this.value.s,\n            b: this.value.b\n        });\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    onColorMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.colorDragging = true;\n        this.pickColor(event);\n    }\n\n    onMove(event) {\n        if (this.colorDragging) {\n            this.pickColor(event, event.changedTouches[0]);\n            event.preventDefault();\n        }\n\n        if (this.hueDragging) {\n            this.pickHue(event, event.changedTouches[0]);\n            event.preventDefault();\n        }\n    }\n\n    onDragEnd() {\n        this.colorDragging = false;\n        this.hueDragging = false;\n\n        this.unbindDocumentMousemoveListener();\n        this.unbindDocumentMouseupListener();\n    }\n\n    pickColor(event, position?) {\n        let pageX = position ? position.pageX : event.pageX;\n        let pageY = position ? position.pageY : event.pageY;\n        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();\n        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        let left = rect.left + document.body.scrollLeft;\n        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((pageX)- left)))) / 150);\n        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((pageY) - top)))) / 150);\n        this.value = this.validateHSB({\n            h: this.value.h,\n            s: saturation,\n            b: brightness\n        });\n\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    getValueToUpdate() {\n        let val: any;\n        switch(this.format) {\n            case 'hex':\n                val = '#' + this.HSBtoHEX(this.value);\n            break;\n\n            case 'rgb':\n                val = this.HSBtoRGB(this.value);\n            break;\n\n            case 'hsb':\n                val = this.value;\n            break;\n        }\n\n        return val;\n    }\n\n    updateModel(): void {\n        this.onModelChange(this.getValueToUpdate());\n    }\n\n    writeValue(value: any): void {\n        if (value) {\n            switch(this.format) {\n                case 'hex':\n                    this.value = this.HEXtoHSB(value);\n                break;\n\n                case 'rgb':\n                    this.value = this.RGBtoHSB(value);\n                break;\n\n                case 'hsb':\n                    this.value = value;\n                break;\n            }\n        }\n        else {\n            this.value = this.HEXtoHSB(this.defaultColor);\n        }\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.cd.markForCheck();\n    }\n\n    updateColorSelector() {\n        if (this.colorSelectorViewChild) {\n            const hsb: any = {};\n            hsb.s = 100;\n            hsb.b = 100;\n            hsb.h = this.value.h;\n\n            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);\n        }\n    }\n\n    updateUI() {\n        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {\n            this.colorHandleViewChild.nativeElement.style.left =  Math.floor(150 * this.value.s / 100) + 'px';\n            this.colorHandleViewChild.nativeElement.style.top =  Math.floor(150 * (100 - this.value.b) / 100) + 'px';\n            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';\n\n        }\n\n        this.inputBgColor = '#' + this.HSBtoHEX(this.value);\n    }\n\n    onInputFocus() {\n        this.onModelTouched();\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.overlay = event.element;\n                    this.appendOverlay();\n\n                    if (this.autoZIndex) {\n                        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                    }\n\n                    this.alignOverlay();\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n\n                    this.updateColorSelector();\n                    this.updateUI();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.onShow.emit({})\n                }\n            break;\n\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n\n                this.onHide.emit({})\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);\n        else\n            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onInputClick() {\n        this.selfClick = true;\n        this.togglePanel();\n    }\n\n    togglePanel() {\n        if (!this.overlayVisible)\n            this.show();\n        else\n            this.hide();\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        switch(event.which) {\n            //space\n            case 32:\n                this.togglePanel();\n                event.preventDefault();\n            break;\n\n            //escape and tab\n            case 27:\n            case 9:\n                this.hide();\n            break;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n\n        this.selfClick = true;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.selfClick) {\n                    this.overlayVisible = false;\n                    this.unbindDocumentClickListener();\n                }\n\n                this.selfClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentMousemoveListener() {\n        if (!this.documentMousemoveListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event: MouseEvent) => {\n                if (this.colorDragging) {\n                    this.pickColor(event);\n                }\n\n                if (this.hueDragging) {\n                    this.pickHue(event);\n                }\n            });\n        }\n    }\n\n    unbindDocumentMousemoveListener() {\n        if (this.documentMousemoveListener) {\n            this.documentMousemoveListener();\n            this.documentMousemoveListener = null;\n        }\n    }\n\n    bindDocumentMouseupListener() {\n        if (!this.documentMouseupListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {\n                this.colorDragging = false;\n                this.hueDragging = false;\n                this.unbindDocumentMousemoveListener();\n                this.unbindDocumentMouseupListener();\n            });\n        }\n    }\n\n    unbindDocumentMouseupListener() {\n        if (this.documentMouseupListener) {\n            this.documentMouseupListener();\n            this.documentMouseupListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    validateHSB(hsb) {\n        return {\n            h: Math.min(360, Math.max(0, hsb.h)),\n            s: Math.min(100, Math.max(0, hsb.s)),\n            b: Math.min(100, Math.max(0, hsb.b))\n        };\n    }\n\n    validateRGB(rgb) {\n        return {\n            r: Math.min(255, Math.max(0, rgb.r)),\n            g: Math.min(255, Math.max(0, rgb.g)),\n            b: Math.min(255, Math.max(0, rgb.b))\n        };\n    }\n\n    validateHEX(hex) {\n        var len = 6 - hex.length;\n        if (len > 0) {\n            var o = [];\n            for (var i=0; i<len; i++) {\n                o.push('0');\n            }\n            o.push(hex);\n            hex = o.join('');\n        }\n        return hex;\n    }\n\n    HEXtoRGB(hex) {\n        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n        return {r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF)};\n    }\n\n    HEXtoHSB(hex) {\n        return this.RGBtoHSB(this.HEXtoRGB(hex));\n    }\n\n    RGBtoHSB(rgb) {\n        var hsb = {\n            h: 0,\n            s: 0,\n            b: 0\n        };\n        var min = Math.min(rgb.r, rgb.g, rgb.b);\n        var max = Math.max(rgb.r, rgb.g, rgb.b);\n        var delta = max - min;\n        hsb.b = max;\n        hsb.s = max != 0 ? 255 * delta / max : 0;\n        if (hsb.s != 0) {\n            if (rgb.r == max) {\n                hsb.h = (rgb.g - rgb.b) / delta;\n            } else if (rgb.g == max) {\n                hsb.h = 2 + (rgb.b - rgb.r) / delta;\n            } else {\n                hsb.h = 4 + (rgb.r - rgb.g) / delta;\n            }\n        } else {\n            hsb.h = -1;\n        }\n        hsb.h *= 60;\n        if (hsb.h < 0) {\n            hsb.h += 360;\n        }\n        hsb.s *= 100/255;\n        hsb.b *= 100/255;\n        return hsb;\n    }\n\n    HSBtoRGB(hsb) {\n        var rgb = {\n            r: null, g: null, b: null\n        };\n        let h: number = hsb.h;\n        let s: number = hsb.s*255/100;\n        let v: number = hsb.b*255/100;\n        if (s == 0) {\n            rgb = {\n                r: v,\n                g: v,\n                b: v\n            }\n        }\n        else {\n            let t1: number = v;\n            let t2: number = (255-s)*v/255;\n            let t3: number = (t1-t2)*(h%60)/60;\n            if (h==360) h = 0;\n            if (h<60) {rgb.r=t1;\trgb.b=t2; rgb.g=t2+t3}\n            else if (h<120) {rgb.g=t1; rgb.b=t2;\trgb.r=t1-t3}\n            else if (h<180) {rgb.g=t1; rgb.r=t2;\trgb.b=t2+t3}\n            else if (h<240) {rgb.b=t1; rgb.r=t2;\trgb.g=t1-t3}\n            else if (h<300) {rgb.b=t1; rgb.g=t2;\trgb.r=t2+t3}\n            else if (h<360) {rgb.r=t1; rgb.g=t2;\trgb.b=t1-t3}\n            else {rgb.r=0; rgb.g=0;\trgb.b=0}\n        }\n        return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\n    }\n\n    RGBtoHEX(rgb) {\n        var hex = [\n            rgb.r.toString(16),\n            rgb.g.toString(16),\n            rgb.b.toString(16)\n        ];\n\n        for(var key in hex) {\n            if (hex[key].length == 1) {\n                hex[key] = '0' + hex[key];\n            }\n        }\n\n        return hex.join('');\n    }\n\n    HSBtoHEX(hsb) {\n        return this.RGBtoHEX(this.HSBtoRGB(hsb));\n    }\n\n    onOverlayHide() {\n        this.unbindScrollListener();\n        this.unbindDocumentResizeListener();\n        this.unbindDocumentClickListener();\n        this.overlay = null;\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay && this.autoZIndex) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ColorPicker],\n    declarations: [ColorPicker]\n})\nexport class ColorPickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,538 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { ConfirmEventType, TranslationKeys, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class ConfirmDialog {
+    constructor(el, renderer, confirmationService, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.confirmationService = confirmationService;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.acceptIcon = 'pi pi-check';
+        this.acceptVisible = true;
+        this.rejectIcon = 'pi pi-times';
+        this.rejectVisible = true;
+        this.closeOnEscape = true;
+        this.blockScroll = true;
+        this.closable = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.focusTrap = true;
+        this.defaultFocus = 'accept';
+        this.onHide = new EventEmitter();
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+        this.id = UniqueComponentId();
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                this.confirmationOptions = {
+                    message: this.confirmation.message || this.message,
+                    icon: this.confirmation.icon || this.icon,
+                    header: this.confirmation.header || this.header,
+                    rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,
+                    acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,
+                    acceptLabel: this.confirmation.acceptLabel || this.acceptLabel,
+                    rejectLabel: this.confirmation.rejectLabel || this.rejectLabel,
+                    acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,
+                    rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,
+                    acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,
+                    rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,
+                    defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,
+                    blockScroll: (this.confirmation.blockScroll === false || this.confirmation.blockScroll === true) ? this.confirmation.blockScroll : this.blockScroll,
+                    closeOnEscape: (this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true) ? this.confirmation.closeOnEscape : this.closeOnEscape,
+                    dismissableMask: (this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true) ? this.confirmation.dismissableMask : this.dismissableMask
+                };
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+        this.cd.markForCheck();
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'top-left':
+            case 'bottom-left':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'top-right':
+            case 'bottom-right':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            if (this.visible) {
+                this.cd.markForCheck();
+            }
+        });
+    }
+    option(name) {
+        const source = this.confirmationOptions || this;
+        if (source.hasOwnProperty(name)) {
+            return source[name];
+        }
+        return undefined;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');
+                this.container.setAttribute(this.id, '');
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.enableModality();
+                const element = this.getElementToFocus();
+                if (element) {
+                    element.focus();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.option('defaultFocus')) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');
+            case 'close':
+                return DomHandler.findSingle(this.container, '.p-dialog-header-close');
+            case 'none':
+                return null;
+            //backward compatibility
+            default:
+                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.wrapper && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    enableModality() {
+        if (this.option('blockScroll')) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.option('dismissableMask')) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+    }
+    disableModality() {
+        this.maskVisible = false;
+        if (this.option('blockScroll')) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.dismissableMask) {
+            this.unbindMaskClickListener();
+        }
+        if (this.container && !this.cd['destroyed']) {
+            this.cd.detectChanges();
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    close(event) {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);
+        }
+        this.hide(ConfirmEventType.CANCEL);
+        event.preventDefault();
+    }
+    hide(type) {
+        this.onHide.emit(type);
+        this.visible = false;
+        this.confirmation = null;
+        this.confirmationOptions = null;
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    getMaskClass() {
+        let maskClass = { 'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll };
+        maskClass[this.getPositionClass().toString()] = true;
+        return maskClass;
+    }
+    getPositionClass() {
+        const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];
+        const pos = positions.find(item => item === this.position);
+        return pos ? `p-dialog-${pos}` : '';
+    }
+    bindGlobalListeners() {
+        if ((this.option('closeOnEscape') && this.closable) || this.focusTrap && !this.documentEscapeListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27 && (this.option('closeOnEscape') && this.closable)) {
+                    if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {
+                        this.close(event);
+                    }
+                }
+                if (event.which === 9 && this.focusTrap) {
+                    event.preventDefault();
+                    let focusableElements = DomHandler.getFocusableElements(this.container);
+                    if (focusableElements && focusableElements.length > 0) {
+                        if (!focusableElements[0].ownerDocument.activeElement) {
+                            focusableElements[0].focus();
+                        }
+                        else {
+                            let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                            if (event.shiftKey) {
+                                if (focusedIndex == -1 || focusedIndex === 0)
+                                    focusableElements[focusableElements.length - 1].focus();
+                                else
+                                    focusableElements[focusedIndex - 1].focus();
+                            }
+                            else {
+                                if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                    focusableElements[0].focus();
+                                else
+                                    focusableElements[focusedIndex + 1].focus();
+                            }
+                        }
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    onOverlayHide() {
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.disableModality();
+        this.unbindGlobalListeners();
+        this.container = null;
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.onOverlayHide();
+        this.subscription.unsubscribe();
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+    accept() {
+        if (this.confirmation && this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide(ConfirmEventType.ACCEPT);
+    }
+    reject() {
+        if (this.confirmation && this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);
+        }
+        this.hide(ConfirmEventType.REJECT);
+    }
+    get acceptButtonLabel() {
+        return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+}
+ConfirmDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ConfirmationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmDialog, selector: "p-confirmDialog", inputs: { header: "header", icon: "icon", message: "message", style: "style", styleClass: "styleClass", maskStyleClass: "maskStyleClass", acceptIcon: "acceptIcon", acceptLabel: "acceptLabel", acceptAriaLabel: "acceptAriaLabel", acceptVisible: "acceptVisible", rejectIcon: "rejectIcon", rejectLabel: "rejectLabel", rejectAriaLabel: "rejectAriaLabel", rejectVisible: "rejectVisible", acceptButtonStyleClass: "acceptButtonStyleClass", rejectButtonStyleClass: "rejectButtonStyleClass", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", blockScroll: "blockScroll", rtl: "rtl", closable: "closable", appendTo: "appendTo", key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", transitionOptions: "transitionOptions", focusTrap: "focusTrap", defaultFocus: "defaultFocus", breakpoints: "breakpoints", visible: "visible", position: "position" }, outputs: { onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmDialog', template: `
+        <div [class]="maskStyleClass" [ngClass]="getMaskClass()" *ngIf="maskVisible">
+            <div [ngClass]="{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}" [ngStyle]="style" [class]="styleClass" (mousedown)="moveOnTop()"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" *ngIf="visible">
+                <div class="p-dialog-header" *ngIf="headerTemplate">
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-header" *ngIf="!headerTemplate">
+                    <span class="p-dialog-title" *ngIf="option('header')">{{option('header')}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" (click)="close($event)" (keydown.enter)="close($event)">
+                            <span class="pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content class="p-dialog-content">
+                    <i [ngClass]="'p-confirm-dialog-icon'" [class]="option('icon')" *ngIf="option('icon')"></i>
+                    <span class="p-confirm-dialog-message" [innerHTML]="option('message')"></span>
+                </div>
+                <div class="p-dialog-footer" *ngIf="footer || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div class="p-dialog-footer" *ngIf="!footer && !footerTemplate">
+                    <button type="button" pRipple pButton [icon]="option('rejectIcon')" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-dialog-reject'" [class]="option('rejectButtonStyleClass')" *ngIf="option('rejectVisible')" [attr.aria-label]="rejectAriaLabel"></button>
+                    <button type="button" pRipple pButton [icon]="option('acceptIcon')" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-dialog-accept'" [class]="option('acceptButtonStyleClass')" *ngIf="option('acceptVisible')" [attr.aria-label]="acceptAriaLabel"></button>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ConfirmationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], message: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], acceptIcon: [{
+                type: Input
+            }], acceptLabel: [{
+                type: Input
+            }], acceptAriaLabel: [{
+                type: Input
+            }], acceptVisible: [{
+                type: Input
+            }], rejectIcon: [{
+                type: Input
+            }], rejectLabel: [{
+                type: Input
+            }], rejectAriaLabel: [{
+                type: Input
+            }], rejectVisible: [{
+                type: Input
+            }], acceptButtonStyleClass: [{
+                type: Input
+            }], rejectButtonStyleClass: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], onHide: [{
+                type: Output
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ConfirmDialogModule {
+}
+ConfirmDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, declarations: [ConfirmDialog], imports: [CommonModule, ButtonModule, RippleModule], exports: [ConfirmDialog, ButtonModule, SharedModule] });
+ConfirmDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, imports: [[CommonModule, ButtonModule, RippleModule], ButtonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule],
+                    exports: [ConfirmDialog, ButtonModule, SharedModule],
+                    declarations: [ConfirmDialog]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmDialog, ConfirmDialogModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-confirmdialog.mjs","sources":["../../src/app/components/confirmdialog/confirmdialog.ts","../../src/app/components/confirmdialog/primeng-confirmdialog.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,EventEmitter,Renderer2,ContentChild,NgZone,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, TemplateRef, AfterContentInit, Output, OnInit} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent, useAnimation, animation} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {Footer,SharedModule, PrimeTemplate, PrimeNGConfig, TranslationKeys, ConfirmEventType} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Confirmation} from 'primeng/api';\nimport {ConfirmationService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {UniqueComponentId, ZIndexUtils} from 'primeng/utils';\nimport { RippleModule } from 'primeng/ripple';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-confirmDialog',\n    template: `\n        <div [class]=\"maskStyleClass\" [ngClass]=\"getMaskClass()\" *ngIf=\"maskVisible\">\n            <div [ngClass]=\"{'p-dialog p-confirm-dialog p-component':true,'p-dialog-rtl':rtl}\" [ngStyle]=\"style\" [class]=\"styleClass\" (mousedown)=\"moveOnTop()\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" *ngIf=\"visible\">\n                <div class=\"p-dialog-header\" *ngIf=\"headerTemplate\">\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-dialog-header\" *ngIf=\"!headerTemplate\">\n                    <span class=\"p-dialog-title\" *ngIf=\"option('header')\">{{option('header')}}</span>\n                    <div class=\"p-dialog-header-icons\">\n                        <button *ngIf=\"closable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-close p-link':true}\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\">\n                            <span class=\"pi pi-times\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div #content class=\"p-dialog-content\">\n                    <i [ngClass]=\"'p-confirm-dialog-icon'\" [class]=\"option('icon')\" *ngIf=\"option('icon')\"></i>\n                    <span class=\"p-confirm-dialog-message\" [innerHTML]=\"option('message')\"></span>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"footer || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"!footer && !footerTemplate\">\n                    <button type=\"button\" pRipple pButton [icon]=\"option('rejectIcon')\" [label]=\"rejectButtonLabel\" (click)=\"reject()\" [ngClass]=\"'p-confirm-dialog-reject'\" [class]=\"option('rejectButtonStyleClass')\" *ngIf=\"option('rejectVisible')\" [attr.aria-label]=\"rejectAriaLabel\"></button>\n                    <button type=\"button\" pRipple pButton [icon]=\"option('acceptIcon')\" [label]=\"acceptButtonLabel\" (click)=\"accept()\" [ngClass]=\"'p-confirm-dialog-accept'\" [class]=\"option('acceptButtonStyleClass')\" *ngIf=\"option('acceptVisible')\" [attr.aria-label]=\"acceptAriaLabel\"></button>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ConfirmDialog implements AfterContentInit,OnInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() icon: string;\n\n    @Input() message: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() maskStyleClass: string;\n\n    @Input() acceptIcon: string = 'pi pi-check';\n\n    @Input() acceptLabel: string;\n\n    @Input() acceptAriaLabel: string;\n\n    @Input() acceptVisible: boolean = true;\n\n    @Input() rejectIcon: string = 'pi pi-times';\n\n    @Input() rejectLabel: string;\n\n    @Input() rejectAriaLabel: string;\n\n    @Input() rejectVisible: boolean = true;\n\n    @Input() acceptButtonStyleClass: string;\n\n    @Input() rejectButtonStyleClass: string;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() dismissableMask: boolean;\n\n    @Input() blockScroll: boolean = true;\n\n    @Input() rtl: boolean;\n\n    @Input() closable: boolean = true;\n\n    @Input() appendTo: any;\n\n    @Input() key: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() defaultFocus: string = 'accept';\n\n    @Input() breakpoints: any;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'top-left':\n            case 'bottom-left':\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n            break;\n            case 'top-right':\n            case 'bottom-right':\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n            break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n            break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n            break;\n            default:\n                this.transformOptions = \"scale(0.7)\";\n            break;\n        }\n    }\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Footer) footer;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    confirmation: Confirmation;\n\n    _visible: boolean;\n\n    maskVisible: boolean;\n\n    documentEscapeListener: any;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    contentContainer: HTMLDivElement;\n\n    subscription: Subscription;\n\n    maskClickListener: Function;\n\n    preWidth: number;\n\n    _position: string = \"center\";\n\n    transformOptions: any = \"scale(0.7)\";\n\n    styleElement: any;\n\n    id = UniqueComponentId();\n\n    confirmationOptions: Confirmation;\n\n    translationSubscription: Subscription;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private confirmationService: ConfirmationService, public zone: NgZone, private cd: ChangeDetectorRef, public config: PrimeNGConfig) {\n        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {\n            if (!confirmation) {\n                this.hide();\n                return;\n            }\n\n            if (confirmation.key === this.key) {\n                this.confirmation = confirmation;\n                this.confirmationOptions = {\n                    message: this.confirmation.message||this.message,\n                    icon: this.confirmation.icon||this.icon,\n                    header: this.confirmation.header||this.header,\n                    rejectVisible: this.confirmation.rejectVisible == null ? this.rejectVisible : this.confirmation.rejectVisible,\n                    acceptVisible: this.confirmation.acceptVisible == null ? this.acceptVisible : this.confirmation.acceptVisible,\n                    acceptLabel: this.confirmation.acceptLabel||this.acceptLabel,\n                    rejectLabel: this.confirmation.rejectLabel||this.rejectLabel,\n                    acceptIcon: this.confirmation.acceptIcon || this.acceptIcon,\n                    rejectIcon: this.confirmation.rejectIcon || this.rejectIcon,\n                    acceptButtonStyleClass: this.confirmation.acceptButtonStyleClass || this.acceptButtonStyleClass,\n                    rejectButtonStyleClass: this.confirmation.rejectButtonStyleClass || this.rejectButtonStyleClass,\n                    defaultFocus: this.confirmation.defaultFocus || this.defaultFocus,\n                    blockScroll: (this.confirmation.blockScroll === false || this.confirmation.blockScroll === true) ? this.confirmation.blockScroll : this.blockScroll,\n                    closeOnEscape: (this.confirmation.closeOnEscape === false || this.confirmation.closeOnEscape === true) ? this.confirmation.closeOnEscape : this.closeOnEscape,\n                    dismissableMask: (this.confirmation.dismissableMask === false || this.confirmation.dismissableMask === true) ? this.confirmation.dismissableMask : this.dismissableMask\n                };\n\n                if (this.confirmation.accept) {\n                    this.confirmation.acceptEvent = new EventEmitter();\n                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n                }\n\n                if (this.confirmation.reject) {\n                    this.confirmation.rejectEvent = new EventEmitter();\n                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n                }\n\n                this.visible = true;\n            }\n        });\n    }\n\n    ngOnInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            if (this.visible) {\n                this.cd.markForCheck();\n            }\n        });\n    }\n\n    option(name: string) {\n        const source = this.confirmationOptions || this;\n        if (source.hasOwnProperty(name)) {\n            return source[name];\n        }\n        return undefined;\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.contentContainer = DomHandler.findSingle(this.container, '.p-dialog-content');\n                this.container.setAttribute(this.id, '');\n                this.appendContainer();\n                this.moveOnTop();\n                this.bindGlobalListeners();\n                this.enableModality();\n\n                const element = this.getElementToFocus();\n                if (element) {\n                    element.focus();\n                }\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    getElementToFocus() {\n        switch(this.option('defaultFocus')) {\n            case 'accept':\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n\n            case 'reject':\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-reject');\n\n            case 'close':\n                return DomHandler.findSingle(this.container, '.p-dialog-header-close');\n\n            case 'none':\n                return null;\n\n            //backward compatibility\n            default:\n                return DomHandler.findSingle(this.container, '.p-confirm-dialog-accept');\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.wrapper && this.appendTo) {\n            this.el.nativeElement.appendChild(this.wrapper);\n        }\n    }\n\n    enableModality() {\n        if (this.option('blockScroll')) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.option('dismissableMask')) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.close(event);\n                }\n            });\n        }\n    }\n\n    disableModality() {\n        this.maskVisible = false;\n\n        if (this.option('blockScroll')) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.dismissableMask) {\n            this.unbindMaskClickListener();\n        }\n\n        if (this.container && !this.cd['destroyed']) {\n            this.cd.detectChanges();\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-dialog[${this.id}] {\n                            width: ${this.breakpoints[breakpoint]} !important;\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    close(event: Event) {\n        if (this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit(ConfirmEventType.CANCEL);\n        }\n\n        this.hide(ConfirmEventType.CANCEL);\n        event.preventDefault();\n    }\n\n    hide(type?) {\n        this.onHide.emit(type);\n        this.visible = false;\n        this.confirmation = null;\n        this.confirmationOptions = null;\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n        }\n    }\n\n    getMaskClass() {\n        let maskClass = {'p-dialog-mask p-component-overlay': true, 'p-dialog-mask-scrollblocker': this.blockScroll};\n        maskClass[this.getPositionClass().toString()] = true;\n        return maskClass;\n    }\n\n    getPositionClass() {\n        const positions = ['left', 'right', 'top', 'top-left', 'top-right', 'bottom', 'bottom-left', 'bottom-right'];\n        const pos = positions.find(item => item === this.position);\n\n        return pos ? `p-dialog-${pos}` : '';\n    }\n\n    bindGlobalListeners() {\n        if ((this.option('closeOnEscape') && this.closable) || this.focusTrap && !this.documentEscapeListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                if (event.which == 27 && (this.option('closeOnEscape') && this.closable)) {\n                    if (parseInt(this.container.style.zIndex) === ZIndexUtils.get(this.container) && this.visible) {\n                        this.close(event);\n                    }\n                }\n\n                if (event.which === 9 && this.focusTrap) {\n                    event.preventDefault();\n\n                    let focusableElements = DomHandler.getFocusableElements(this.container);\n\n                    if (focusableElements && focusableElements.length > 0) {\n                        if (!focusableElements[0].ownerDocument.activeElement) {\n                            focusableElements[0].focus();\n                        }\n                        else {\n                            let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                            if (event.shiftKey) {\n                                if (focusedIndex == -1 || focusedIndex === 0)\n                                    focusableElements[focusableElements.length - 1].focus();\n                                else\n                                    focusableElements[focusedIndex - 1].focus();\n                            }\n                            else {\n                                if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                                    focusableElements[0].focus();\n                                else\n                                    focusableElements[focusedIndex + 1].focus();\n                            }\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    onOverlayHide() {\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.disableModality();\n        this.unbindGlobalListeners();\n        this.container = null;\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.onOverlayHide();\n        this.subscription.unsubscribe();\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        this.destroyStyle();\n    }\n\n    accept() {\n        if (this.confirmation && this.confirmation.acceptEvent) {\n            this.confirmation.acceptEvent.emit();\n        }\n\n        this.hide(ConfirmEventType.ACCEPT);\n    }\n\n    reject() {\n        if (this.confirmation && this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit(ConfirmEventType.REJECT);\n        }\n\n        this.hide(ConfirmEventType.REJECT);\n    }\n\n    get acceptButtonLabel(): string {\n        return this.option('acceptLabel') || this.config.getTranslation(TranslationKeys.ACCEPT);\n    }\n\n    get rejectButtonLabel(): string {\n        return this.option('rejectLabel') || this.config.getTranslation(TranslationKeys.REJECT);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,RippleModule],\n    exports: [ConfirmDialog,ButtonModule,SharedModule],\n    declarations: [ConfirmDialog]\n})\nexport class ConfirmDialogModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,313 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { TranslationKeys } from 'primeng/api';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { ZIndexUtils } from 'primeng/utils';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+
+class ConfirmPopup {
+    constructor(el, confirmationService, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.confirmationService = confirmationService;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.defaultFocus = "accept";
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {
+            if (!confirmation) {
+                this.hide();
+                return;
+            }
+            if (confirmation.key === this.key) {
+                this.confirmation = confirmation;
+                if (this.confirmation.accept) {
+                    this.confirmation.acceptEvent = new EventEmitter();
+                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);
+                }
+                if (this.confirmation.reject) {
+                    this.confirmation.rejectEvent = new EventEmitter();
+                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);
+                }
+                this.visible = true;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        this.cd.markForCheck();
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            document.body.appendChild(this.container);
+            this.align();
+            this.bindListeners();
+            const element = this.getElementToFocus();
+            if (element) {
+                element.focus();
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                break;
+        }
+    }
+    getElementToFocus() {
+        switch (this.defaultFocus) {
+            case 'accept':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');
+            case 'reject':
+                return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');
+            case 'none':
+                return null;
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.confirmation.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.confirmation.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-confirm-popup-flipped');
+        }
+    }
+    hide() {
+        this.visible = false;
+    }
+    accept() {
+        if (this.confirmation.acceptEvent) {
+            this.confirmation.acceptEvent.emit();
+        }
+        this.hide();
+    }
+    reject() {
+        if (this.confirmation.rejectEvent) {
+            this.confirmation.rejectEvent.emit();
+        }
+        this.hide();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    bindListeners() {
+        this.bindDocumentClickListener();
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    unbindListeners() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : document;
+            this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                let targetElement = this.confirmation.target;
+                if (this.container !== event.target && !this.container.contains(event.target) &&
+                    targetElement !== event.target && !targetElement.contains(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unsubscribeConfirmationSubscriptions() {
+        if (this.confirmation) {
+            if (this.confirmation.acceptEvent) {
+                this.confirmation.acceptEvent.unsubscribe();
+            }
+            if (this.confirmation.rejectEvent) {
+                this.confirmation.rejectEvent.unsubscribe();
+            }
+        }
+    }
+    onContainerDestroy() {
+        this.unbindListeners();
+        this.unsubscribeConfirmationSubscriptions();
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.confirmation = null;
+        this.container = null;
+    }
+    restoreAppend() {
+        if (this.container) {
+            document.body.removeChild(this.container);
+        }
+        this.onContainerDestroy();
+    }
+    get acceptButtonLabel() {
+        return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);
+    }
+    get rejectButtonLabel() {
+        return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ConfirmPopup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, deps: [{ token: i0.ElementRef }, { token: i1.ConfirmationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ConfirmPopup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ConfirmPopup, selector: "p-confirmPopup", inputs: { key: "key", defaultFocus: "defaultFocus", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", visible: "visible" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopup, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-confirmPopup', template: `
+        <div *ngIf="visible" [ngClass]="'p-confirm-popup p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+            (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div #content class="p-confirm-popup-content">
+                <i [ngClass]="'p-confirm-popup-icon'" [class]="confirmation.icon" *ngIf="confirmation.icon"></i>
+                <span class="p-confirm-popup-message">{{confirmation.message}}</span>
+            </div>
+            <div class="p-confirm-popup-footer">
+                <button type="button" pButton [icon]="confirmation.rejectIcon" [label]="rejectButtonLabel" (click)="reject()" [ngClass]="'p-confirm-popup-reject p-button-sm'"
+                    [class]="confirmation.rejectButtonStyleClass || 'p-button-text'" *ngIf="confirmation.rejectVisible !== false" [attr.aria-label]="rejectButtonLabel"></button>
+                <button type="button" pButton [icon]="confirmation.acceptIcon" [label]="acceptButtonLabel" (click)="accept()" [ngClass]="'p-confirm-popup-accept p-button-sm'"
+                    [class]="confirmation.acceptButtonStyleClass" *ngIf="confirmation.acceptVisible !== false" [attr.aria-label]="acceptButtonLabel"></button>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-confirm-popup{position:absolute;margin-top:10px;top:0;left:0}.p-confirm-popup-flipped{margin-top:0;margin-bottom:10px}.p-confirm-popup:after,.p-confirm-popup:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-confirm-popup:after{border-width:8px;margin-left:-8px}.p-confirm-popup:before{border-width:10px;margin-left:-10px}.p-confirm-popup-flipped:after,.p-confirm-popup-flipped:before{bottom:auto;top:100%}.p-confirm-popup.p-confirm-popup-flipped:after,.p-confirm-popup.p-confirm-popup-flipped:before{border-bottom-color:transparent}.p-confirm-popup .p-confirm-popup-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfirmationService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { key: [{
+                type: Input
+            }], defaultFocus: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }] } });
+class ConfirmPopupModule {
+}
+ConfirmPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ConfirmPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, declarations: [ConfirmPopup], imports: [CommonModule, ButtonModule], exports: [ConfirmPopup] });
+ConfirmPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, imports: [[CommonModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ConfirmPopupModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [ConfirmPopup],
+                    declarations: [ConfirmPopup]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConfirmPopup, ConfirmPopupModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-confirmpopup.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-confirmpopup.mjs","sources":["../../src/app/components/confirmpopup/confirmpopup.ts","../../src/app/components/confirmpopup/primeng-confirmpopup.ts"],"sourcesContent":["import {NgModule ,Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, ChangeDetectorRef, OnDestroy, Input, EventEmitter, Renderer2} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Confirmation, ConfirmationService, OverlayService, PrimeNGConfig, TranslationKeys} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {ButtonModule} from 'primeng/button';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\n\n@Component({\n    selector: 'p-confirmPopup',\n    template: `\n        <div *ngIf=\"visible\" [ngClass]=\"'p-confirm-popup p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onOverlayClick($event)\"\n            [@animation]=\"{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n            (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n            <div #content class=\"p-confirm-popup-content\">\n                <i [ngClass]=\"'p-confirm-popup-icon'\" [class]=\"confirmation.icon\" *ngIf=\"confirmation.icon\"></i>\n                <span class=\"p-confirm-popup-message\">{{confirmation.message}}</span>\n            </div>\n            <div class=\"p-confirm-popup-footer\">\n                <button type=\"button\" pButton [icon]=\"confirmation.rejectIcon\" [label]=\"rejectButtonLabel\" (click)=\"reject()\" [ngClass]=\"'p-confirm-popup-reject p-button-sm'\"\n                    [class]=\"confirmation.rejectButtonStyleClass || 'p-button-text'\" *ngIf=\"confirmation.rejectVisible !== false\" [attr.aria-label]=\"rejectButtonLabel\"></button>\n                <button type=\"button\" pButton [icon]=\"confirmation.acceptIcon\" [label]=\"acceptButtonLabel\" (click)=\"accept()\" [ngClass]=\"'p-confirm-popup-accept p-button-sm'\"\n                    [class]=\"confirmation.acceptButtonStyleClass\" *ngIf=\"confirmation.acceptVisible !== false\" [attr.aria-label]=\"acceptButtonLabel\"></button>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                transform: 'scaleY(0.8)',\n                opacity: 0\n            })),\n            state('open', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => void', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./confirmpopup.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ConfirmPopup implements OnDestroy {\n\n    @Input() key: string;\n\n    @Input() defaultFocus: string = \"accept\";\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    container: HTMLDivElement;\n\n    subscription: Subscription;\n\n    confirmation: Confirmation;\n\n    _visible: boolean;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    scrollHandler: any;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n        this.cd.markForCheck();\n    }\n\n    constructor(public el: ElementRef, private confirmationService: ConfirmationService, public renderer: Renderer2, private cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {\n        this.subscription = this.confirmationService.requireConfirmation$.subscribe(confirmation => {\n            if (!confirmation) {\n                this.hide();\n                return;\n            }\n\n            if (confirmation.key === this.key) {\n                this.confirmation = confirmation;\n                if (this.confirmation.accept) {\n                    this.confirmation.acceptEvent = new EventEmitter();\n                    this.confirmation.acceptEvent.subscribe(this.confirmation.accept);\n                }\n\n                if (this.confirmation.reject) {\n                    this.confirmation.rejectEvent = new EventEmitter();\n                    this.confirmation.rejectEvent.subscribe(this.confirmation.reject);\n                }\n\n                this.visible = true;\n            }\n        });\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.toState === 'open') {\n            this.container = event.element;\n            document.body.appendChild(this.container);\n            this.align();\n            this.bindListeners();\n\n            const element = this.getElementToFocus();\n            if (element) {\n                element.focus();\n            }\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onContainerDestroy();\n            break;\n        }\n    }\n\n    getElementToFocus() {\n        switch(this.defaultFocus) {\n            case 'accept':\n                return DomHandler.findSingle(this.container, '.p-confirm-popup-accept');\n\n            case 'reject':\n                return DomHandler.findSingle(this.container, '.p-confirm-popup-reject');\n\n            case 'none':\n                return null;\n        }\n    }\n\n    align() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('overlay', this.container, this.config.zIndex.overlay);\n        }\n\n        DomHandler.absolutePosition(this.container, this.confirmation.target);\n\n        const containerOffset = DomHandler.getOffset(this.container);\n        const targetOffset = DomHandler.getOffset(this.confirmation.target);\n        let arrowLeft = 0;\n\n        if (containerOffset.left < targetOffset.left) {\n            arrowLeft = targetOffset.left - containerOffset.left;\n        }\n        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n        if (containerOffset.top < targetOffset.top) {\n            DomHandler.addClass(this.container, 'p-confirm-popup-flipped');\n        }\n    }\n\n    hide() {\n        this.visible = false;\n    }\n\n    accept() {\n        if (this.confirmation.acceptEvent) {\n            this.confirmation.acceptEvent.emit();\n        }\n\n        this.hide();\n    }\n\n    reject() {\n        if (this.confirmation.rejectEvent) {\n            this.confirmation.rejectEvent.emit();\n        }\n\n        this.hide();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    bindListeners() {\n        this.bindDocumentClickListener();\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    unbindListeners() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : document;\n\n            this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n                let targetElement = <HTMLElement> this.confirmation.target;\n                if (this.container !== event.target && !this.container.contains(event.target) &&\n                    targetElement !== event.target && !targetElement.contains(event.target)) {\n                    this.hide();\n                }\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.confirmation.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unsubscribeConfirmationSubscriptions() {\n        if (this.confirmation) {\n            if (this.confirmation.acceptEvent) {\n                this.confirmation.acceptEvent.unsubscribe();\n            }\n\n            if (this.confirmation.rejectEvent) {\n                this.confirmation.rejectEvent.unsubscribe();\n            }\n        }\n    }\n\n    onContainerDestroy() {\n        this.unbindListeners();\n        this.unsubscribeConfirmationSubscriptions();\n\n        if (this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.confirmation = null;\n        this.container = null;\n    }\n\n    restoreAppend() {\n        if (this.container) {\n            document.body.removeChild(this.container);\n        }\n\n        this.onContainerDestroy();\n    }\n\n    get acceptButtonLabel(): string {\n        return this.confirmation.acceptLabel || this.config.getTranslation(TranslationKeys.ACCEPT);\n    }\n\n    get rejectButtonLabel(): string {\n        return this.confirmation.rejectLabel || this.config.getTranslation(TranslationKeys.REJECT);\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule],\n    exports: [ConfirmPopup],\n    declarations: [ConfirmPopup]\n})\nexport class ConfirmPopupModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,575 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, forwardRef, Component, ViewEncapsulation, Inject, Input, Output, ViewChild, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from 'primeng/api';
+import { ContextMenuService } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { Subject } from 'rxjs';
+import { takeUntil } from 'rxjs/operators';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class ContextMenuSub {
+    constructor(contextMenu) {
+        this.leafClick = new EventEmitter();
+        this.contextMenu = contextMenu;
+    }
+    ngOnInit() {
+        this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {
+            this.activeItemKey = activeItemKey;
+            if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {
+                this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);
+            }
+            this.contextMenu.cd.markForCheck();
+        });
+    }
+    onItemMouseEnter(event, item, key) {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+        if (item.disabled) {
+            return;
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');
+            DomHandler.addClass(childSublist, 'p-submenu-list-active');
+        }
+        this.contextMenu.contextMenuService.changeKey(key);
+    }
+    onItemMouseLeave(event, item) {
+        if (item.disabled) {
+            return;
+        }
+        if (this.contextMenu.el.nativeElement.contains(event.toElement)) {
+            if (item.items) {
+                this.contextMenu.removeActiveFromSubLists(event.currentTarget);
+            }
+            if (!this.root) {
+                this.contextMenu.contextMenuService.changeKey(this.parentItemKey);
+            }
+        }
+    }
+    onItemClick(event, item, menuitem, key) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.contextMenu.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                }
+                this.contextMenu.contextMenuService.changeKey(key);
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onLeafClick() {
+        if (this.root) {
+            this.contextMenu.hide();
+        }
+        this.leafClick.emit();
+    }
+    getKey(index) {
+        return this.root ? String(index) : this.parentItemKey + '_' + index;
+    }
+    isActive(key) {
+        return (this.activeItemKey && (this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key));
+    }
+}
+ContextMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, deps: [{ token: forwardRef(() => ContextMenu) }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuSub, selector: "p-contextMenuSub", inputs: { item: "item", root: "root", parentItemKey: "parentItemKey" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }, { propertyName: "menuitemViewChild", first: true, predicate: ["menuitem"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-contextMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-submenu-list':!root}">
+            <ng-template ngFor let-child let-index="index" [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" #menuitem class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #menuitem [ngClass]="{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    (mouseenter)="onItemMouseEnter($event,child,getKey(index))" (mouseleave)="onItemMouseLeave($event,child)" role="none" [attr.data-ik]="getKey(index)">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url ? child.url : null" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [attr.tabindex]="child.disabled ? null : '0'" (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" pRipple
+                        [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="isActive(getKey(index))">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" role="menuitem"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'"
+                        (click)="onItemClick($event, child, menuitem, getKey(index))" [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         pRipple [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-contextMenuSub [parentItemKey]="getKey(index)" [item]="child" *ngIf="child.items" (leafClick)="onLeafClick()"></p-contextMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => ContextMenu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], parentItemKey: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }], menuitemViewChild: [{
+                type: ViewChild,
+                args: ['menuitem']
+            }] } });
+class ContextMenu {
+    constructor(el, renderer, cd, zone, contextMenuService, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.contextMenuService = contextMenuService;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.triggerEvent = 'contextmenu';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.ngDestroy$ = new Subject();
+    }
+    ngAfterViewInit() {
+        if (this.global) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+            });
+        }
+        else if (this.target) {
+            this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {
+                this.show(event);
+                event.preventDefault();
+                event.stopPropagation();
+            });
+        }
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    show(event) {
+        this.clearActiveItem();
+        this.position(event);
+        this.moveOnTop();
+        this.containerViewChild.nativeElement.style.display = 'block';
+        DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);
+        this.bindGlobalListeners();
+        if (event) {
+            event.preventDefault();
+        }
+        this.onShow.emit();
+    }
+    hide() {
+        this.containerViewChild.nativeElement.style.display = 'none';
+        if (this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        this.unbindGlobalListeners();
+        this.onHide.emit();
+    }
+    moveOnTop() {
+        if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    toggle(event) {
+        if (this.containerViewChild.nativeElement.offsetParent)
+            this.hide();
+        else
+            this.show(event);
+    }
+    position(event) {
+        if (event) {
+            let left = event.pageX + 1;
+            let top = event.pageY + 1;
+            let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);
+            let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);
+            let viewport = DomHandler.getViewport();
+            //flip
+            if (left + width - document.body.scrollLeft > viewport.width) {
+                left -= width;
+            }
+            //flip
+            if (top + height - document.body.scrollTop > viewport.height) {
+                top -= height;
+            }
+            //fit
+            if (left < document.body.scrollLeft) {
+                left = document.body.scrollLeft;
+            }
+            //fit
+            if (top < document.body.scrollTop) {
+                top = document.body.scrollTop;
+            }
+            this.containerViewChild.nativeElement.style.left = left + 'px';
+            this.containerViewChild.nativeElement.style.top = top + 'px';
+        }
+    }
+    positionSubmenu(sublist) {
+        let parentMenuItem = sublist.parentElement.parentElement;
+        let viewport = DomHandler.getViewport();
+        let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);
+        let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);
+        let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);
+        let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);
+        let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);
+        sublist.style.zIndex = ++DomHandler.zindex;
+        if ((parseInt(containerOffset.top) + itemOuterHeight + sublistHeight) > (viewport.height - DomHandler.calculateScrollbarHeight())) {
+            sublist.style.removeProperty('top');
+            sublist.style.bottom = '0px';
+        }
+        else {
+            sublist.style.removeProperty('bottom');
+            sublist.style.top = '0px';
+        }
+        if ((parseInt(containerOffset.left) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {
+            sublist.style.left = -sublistWidth + 'px';
+        }
+        else {
+            sublist.style.left = itemOuterWidth + 'px';
+        }
+    }
+    isItemMatched(menuitem) {
+        return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');
+    }
+    findNextItem(menuitem, isRepeated) {
+        let nextMenuitem = menuitem.nextElementSibling;
+        if (nextMenuitem) {
+            return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);
+        }
+        else {
+            let firstItem = menuitem.parentElement.children[0];
+            return this.isItemMatched(firstItem) ? firstItem : (!isRepeated ? this.findNextItem(firstItem, true) : null);
+        }
+    }
+    findPrevItem(menuitem, isRepeated) {
+        let prevMenuitem = menuitem.previousElementSibling;
+        if (prevMenuitem) {
+            return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);
+        }
+        else {
+            let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];
+            return this.isItemMatched(lastItem) ? lastItem : (!isRepeated ? this.findPrevItem(lastItem, true) : null);
+        }
+    }
+    getActiveItem() {
+        let activeItemKey = this.contextMenuService.activeItemKey;
+        return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik="' + activeItemKey + '"]');
+    }
+    clearActiveItem() {
+        if (this.contextMenuService.activeItemKey) {
+            this.removeActiveFromSubLists(this.containerViewChild.nativeElement);
+            this.contextMenuService.reset();
+        }
+    }
+    removeActiveFromSubLists(el) {
+        let sublists = DomHandler.find(el, '.p-submenu-list-active');
+        for (let sublist of sublists) {
+            DomHandler.removeClass(sublist, 'p-submenu-list-active');
+        }
+    }
+    removeActiveFromSublist(menuitem) {
+        if (menuitem) {
+            let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {
+                DomHandler.removeClass(menuitem, 'p-submenu-list-active');
+            }
+        }
+    }
+    bindGlobalListeners() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2) {
+                    this.hide();
+                }
+            });
+        }
+        this.zone.runOutsideAngular(() => {
+            if (!this.windowResizeListener) {
+                this.windowResizeListener = this.onWindowResize.bind(this);
+                window.addEventListener('resize', this.windowResizeListener);
+            }
+        });
+        if (!this.documentKeydownListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                let activeItem = this.getActiveItem();
+                switch (event.key) {
+                    case 'ArrowDown':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findNextItem(activeItem);
+                        }
+                        else {
+                            let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;
+                            activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowUp':
+                        if (activeItem) {
+                            this.removeActiveFromSublist(activeItem);
+                            activeItem = this.findPrevItem(activeItem);
+                        }
+                        else {
+                            let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');
+                            let lastItem = sublist.children[sublist.children.length - 1];
+                            activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);
+                        }
+                        if (activeItem) {
+                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowRight':
+                        if (activeItem) {
+                            let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');
+                            if (sublist) {
+                                DomHandler.addClass(sublist, 'p-submenu-list-active');
+                                activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'ArrowLeft':
+                        if (activeItem) {
+                            let sublist = activeItem.parentElement;
+                            if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {
+                                DomHandler.removeClass(sublist, 'p-submenu-list-active');
+                                activeItem = sublist.parentElement.parentElement;
+                                if (activeItem) {
+                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));
+                                }
+                            }
+                        }
+                        event.preventDefault();
+                        break;
+                    case 'Escape':
+                        this.hide();
+                        event.preventDefault();
+                        break;
+                    case 'Enter':
+                        if (activeItem) {
+                            this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);
+                        }
+                        event.preventDefault();
+                        break;
+                    default:
+                        break;
+                }
+            });
+        }
+    }
+    findModelItemFromKey(key) {
+        if (key == null || !this.model) {
+            return null;
+        }
+        let indexes = key.split('_');
+        return indexes.reduce((item, currentIndex) => {
+            return item ? item.items[currentIndex] : this.model[currentIndex];
+        }, null);
+    }
+    handleItemClick(event, item, menuitem) {
+        if (!item || item.disabled) {
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');
+            if (childSublist) {
+                if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {
+                    this.removeActiveFromSubLists(menuitem);
+                }
+                else {
+                    DomHandler.addClass(childSublist, 'p-submenu-list-active');
+                    this.positionSubmenu(childSublist);
+                }
+            }
+        }
+        if (!item.items) {
+            this.hide();
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+        if (this.windowResizeListener) {
+            window.removeEventListener('resize', this.windowResizeListener);
+            this.windowResizeListener = null;
+        }
+        if (this.documentKeydownListener) {
+            this.documentKeydownListener();
+            this.documentKeydownListener = null;
+        }
+    }
+    onWindowResize(event) {
+        if (this.containerViewChild.nativeElement.offsetParent) {
+            this.hide();
+        }
+    }
+    isOutsideClicked(event) {
+        return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.triggerEventListener) {
+            this.triggerEventListener();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+        this.ngDestroy$.next(true);
+        this.ngDestroy$.complete();
+    }
+}
+ContextMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i5.ContextMenuService }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ContextMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenu, selector: "p-contextMenu", inputs: { model: "model", global: "global", target: "target", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", triggerEvent: "triggerEvent" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"], components: [{ type: ContextMenuSub, selector: "p-contextMenuSub", inputs: ["item", "root", "parentItemKey"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-contextMenu', template: `
+        <div #container [ngClass]="'p-contextmenu p-component'" [class]="styleClass" [ngStyle]="style">
+            <p-contextMenuSub [item]="model" [root]="true"></p-contextMenuSub>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-contextmenu{position:absolute;display:none}.p-contextmenu ul{margin:0;padding:0;list-style:none}.p-contextmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-contextmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-contextmenu .p-menuitem-text{line-height:1}.p-contextmenu .p-menuitem{position:relative}.p-contextmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-contextmenu .p-menuitem-active>p-contextmenusub>.p-submenu-list.p-submenu-list-active{display:block!important}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i5.ContextMenuService }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], global: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], triggerEvent: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+class ContextMenuModule {
+}
+ContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, declarations: [ContextMenu, ContextMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [ContextMenu, RouterModule, TooltipModule] });
+ContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, providers: [ContextMenuService], imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [ContextMenu, RouterModule, TooltipModule],
+                    declarations: [ContextMenu, ContextMenuSub],
+                    providers: [ContextMenuService]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ContextMenu, ContextMenuModule, ContextMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-contextmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-contextmenu.mjs","sources":["../../src/app/components/contextmenu/contextmenu.ts","../../src/app/components/contextmenu/primeng-contextmenu.ts"],"sourcesContent":["import { NgModule,Component,ElementRef,AfterViewInit,OnDestroy,Input,Output,Renderer2,Inject,forwardRef,ViewChild,NgZone,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { MenuItem, ContextMenuService, PrimeNGConfig } from 'primeng/api';\nimport { RippleModule } from 'primeng/ripple';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { RouterModule } from '@angular/router';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-contextMenuSub',\n    template: `\n        <ul #sublist [ngClass]=\"{'p-submenu-list':!root}\">\n            <ng-template ngFor let-child let-index=\"index\" [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" #menuitem class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" #menuitem [ngClass]=\"{'p-menuitem':true,'p-menuitem-active': isActive(getKey(index)),'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" pTooltip [tooltipOptions]=\"child.tooltipOptions\"\n                    (mouseenter)=\"onItemMouseEnter($event,child,getKey(index))\" (mouseleave)=\"onItemMouseLeave($event,child)\" role=\"none\" [attr.data-ik]=\"getKey(index)\">\n                    <a *ngIf=\"!child.routerLink\" [attr.href]=\"child.url ? child.url : null\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                        [attr.tabindex]=\"child.disabled ? null : '0'\" (click)=\"onItemClick($event, child, menuitem, getKey(index))\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\" pRipple\n                        [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"isActive(getKey(index))\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" role=\"menuitem\"\n                        [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\"\n                        (click)=\"onItemClick($event, child, menuitem, getKey(index))\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                         pRipple [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-contextMenuSub [parentItemKey]=\"getKey(index)\" [item]=\"child\" *ngIf=\"child.items\" (leafClick)=\"onLeafClick()\"></p-contextMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ContextMenuSub {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() parentItemKey: any;\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('sublist') sublistViewChild: ElementRef;\n\n    @ViewChild('menuitem') menuitemViewChild: ElementRef;\n\n    contextMenu: ContextMenu;\n\n    activeItemKey: string;\n\n    hideTimeout: any;\n\n    activeItemKeyChangeSubscription: Subscription;\n\n    constructor(@Inject(forwardRef(() => ContextMenu)) contextMenu) {\n        this.contextMenu = contextMenu as ContextMenu;\n    }\n\n    ngOnInit() {\n        this.activeItemKeyChangeSubscription = this.contextMenu.contextMenuService.activeItemKeyChange$.pipe(takeUntil(this.contextMenu.ngDestroy$)).subscribe((activeItemKey) => {\n            this.activeItemKey = activeItemKey;\n\n            if (this.isActive(this.parentItemKey) && DomHandler.hasClass(this.sublistViewChild.nativeElement, 'p-submenu-list-active')) {\n                this.contextMenu.positionSubmenu(this.sublistViewChild.nativeElement);\n            }\n\n            this.contextMenu.cd.markForCheck();\n        });\n    }\n\n    onItemMouseEnter(event, item, key) {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n\n        if (item.disabled) {\n            return;\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(event.currentTarget, '.p-submenu-list');\n            DomHandler.addClass(childSublist, 'p-submenu-list-active');\n        }\n\n        this.contextMenu.contextMenuService.changeKey(key);\n    }\n\n    onItemMouseLeave(event, item) {\n        if (item.disabled) {\n            return;\n        }\n\n        if (this.contextMenu.el.nativeElement.contains(<Node> event.toElement)) {\n            if (item.items) {\n                this.contextMenu.removeActiveFromSubLists(event.currentTarget);\n            }\n\n            if (!this.root) {\n                this.contextMenu.contextMenuService.changeKey(this.parentItemKey);\n            }\n        }\n    }\n\n    onItemClick(event, item, menuitem, key) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (childSublist) {\n                if (this.isActive(key) && DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n                    this.contextMenu.removeActiveFromSubLists(menuitem);\n                }\n                else {\n                    DomHandler.addClass(childSublist, 'p-submenu-list-active');\n                }\n\n                this.contextMenu.contextMenuService.changeKey(key);\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onLeafClick() {\n        if (this.root) {\n            this.contextMenu.hide();\n        }\n\n        this.leafClick.emit();\n    }\n\n    getKey(index) {\n        return this.root ? String(index) : this.parentItemKey + '_' + index;\n    }\n\n    isActive(key) {\n        return (this.activeItemKey &&(this.activeItemKey.startsWith(key + '_') || this.activeItemKey === key));\n    }\n}\n\n@Component({\n    selector: 'p-contextMenu',\n    template: `\n        <div #container [ngClass]=\"'p-contextmenu p-component'\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <p-contextMenuSub [item]=\"model\" [root]=\"true\"></p-contextMenuSub>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./contextmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ContextMenu implements AfterViewInit, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() global: boolean;\n\n    @Input() target: any;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() triggerEvent: string = 'contextmenu';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    documentClickListener: any;\n\n    documentKeydownListener: any;\n\n    windowResizeListener: any;\n\n    triggerEventListener: any;\n\n    ngDestroy$ = new Subject();\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public zone: NgZone, public contextMenuService: ContextMenuService, private config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        if (this.global) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.triggerEventListener = this.renderer.listen(documentTarget, this.triggerEvent, (event) => {\n                this.show(event);\n                event.preventDefault();\n            });\n        }\n        else if (this.target) {\n            this.triggerEventListener = this.renderer.listen(this.target, this.triggerEvent, (event) => {\n                this.show(event);\n                event.preventDefault();\n                event.stopPropagation();\n            });\n        }\n\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.containerViewChild.nativeElement);\n            else\n                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n        }\n    }\n\n    show(event?: MouseEvent) {\n        this.clearActiveItem();\n        this.position(event);\n        this.moveOnTop();\n        this.containerViewChild.nativeElement.style.display = 'block';\n        DomHandler.fadeIn(this.containerViewChild.nativeElement, 250);\n        this.bindGlobalListeners();\n\n        if (event) {\n            event.preventDefault();\n        }\n\n        this.onShow.emit();\n    }\n\n    hide() {\n        this.containerViewChild.nativeElement.style.display = 'none';\n\n        if (this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        this.unbindGlobalListeners();\n        this.onHide.emit();\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex && this.containerViewChild && this.containerViewChild.nativeElement.style.display !== 'block') {\n            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    toggle(event?: MouseEvent) {\n        if (this.containerViewChild.nativeElement.offsetParent)\n            this.hide();\n        else\n            this.show(event);\n    }\n\n    position(event?: MouseEvent) {\n        if (event) {\n            let left = event.pageX + 1;\n            let top = event.pageY + 1;\n            let width = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetWidth : DomHandler.getHiddenElementOuterWidth(this.containerViewChild.nativeElement);\n            let height = this.containerViewChild.nativeElement.offsetParent ? this.containerViewChild.nativeElement.offsetHeight : DomHandler.getHiddenElementOuterHeight(this.containerViewChild.nativeElement);\n            let viewport = DomHandler.getViewport();\n\n            //flip\n            if (left + width - document.body.scrollLeft > viewport.width) {\n                left -= width;\n            }\n\n            //flip\n            if (top + height - document.body.scrollTop > viewport.height) {\n                top -= height;\n            }\n\n            //fit\n            if (left < document.body.scrollLeft) {\n                left = document.body.scrollLeft;\n            }\n\n            //fit\n            if (top < document.body.scrollTop) {\n                top = document.body.scrollTop;\n            }\n\n            this.containerViewChild.nativeElement.style.left = left + 'px';\n            this.containerViewChild.nativeElement.style.top = top + 'px';\n        }\n    }\n\n    positionSubmenu(sublist) {\n        let parentMenuItem = sublist.parentElement.parentElement;\n        let viewport = DomHandler.getViewport();\n        let sublistWidth = sublist.offsetParent ? sublist.offsetWidth : DomHandler.getHiddenElementOuterWidth(sublist);\n        let sublistHeight = sublist.offsetHeight ? sublist.offsetHeight : DomHandler.getHiddenElementOuterHeight(sublist);\n        let itemOuterWidth = DomHandler.getOuterWidth(parentMenuItem.children[0]);\n        let itemOuterHeight = DomHandler.getOuterHeight(parentMenuItem.children[0]);\n        let containerOffset = DomHandler.getOffset(parentMenuItem.parentElement);\n\n        sublist.style.zIndex = ++DomHandler.zindex;\n\n        if ((parseInt(containerOffset.top) + itemOuterHeight + sublistHeight) > (viewport.height - DomHandler.calculateScrollbarHeight())) {\n            sublist.style.removeProperty('top');\n            sublist.style.bottom = '0px';\n        }\n        else {\n            sublist.style.removeProperty('bottom');\n            sublist.style.top = '0px';\n        }\n\n        if ((parseInt(containerOffset.left) + itemOuterWidth + sublistWidth) > (viewport.width - DomHandler.calculateScrollbarWidth())) {\n            sublist.style.left = -sublistWidth + 'px';\n        }\n        else {\n            sublist.style.left = itemOuterWidth + 'px';\n        }\n    }\n\n    isItemMatched(menuitem) {\n        return DomHandler.hasClass(menuitem, 'p-menuitem') && !DomHandler.hasClass(menuitem.children[0], 'p-disabled');\n    }\n\n    findNextItem(menuitem, isRepeated?) {\n        let nextMenuitem = menuitem.nextElementSibling;\n\n        if (nextMenuitem) {\n            return this.isItemMatched(nextMenuitem) ? nextMenuitem : this.findNextItem(nextMenuitem, isRepeated);\n        }\n        else {\n            let firstItem = menuitem.parentElement.children[0];\n\n            return this.isItemMatched(firstItem) ? firstItem : (!isRepeated ? this.findNextItem(firstItem, true) : null);\n        }\n    }\n\n    findPrevItem(menuitem, isRepeated?) {\n        let prevMenuitem = menuitem.previousElementSibling;\n\n        if (prevMenuitem) {\n            return this.isItemMatched(prevMenuitem) ? prevMenuitem : this.findPrevItem(prevMenuitem, isRepeated);\n        }\n        else {\n            let lastItem = menuitem.parentElement.children[menuitem.parentElement.children.length - 1];\n\n            return this.isItemMatched(lastItem) ? lastItem : (!isRepeated ? this.findPrevItem(lastItem, true) : null);\n        }\n    }\n\n    getActiveItem() {\n        let activeItemKey = this.contextMenuService.activeItemKey;\n\n        return activeItemKey == null ? null : DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem[data-ik=\"' + activeItemKey + '\"]');\n    }\n\n    clearActiveItem() {\n        if (this.contextMenuService.activeItemKey) {\n            this.removeActiveFromSubLists(this.containerViewChild.nativeElement);\n            this.contextMenuService.reset();\n        }\n    }\n\n    removeActiveFromSubLists(el) {\n        let sublists = DomHandler.find(el, '.p-submenu-list-active');\n\n        for (let sublist of sublists) {\n            DomHandler.removeClass(sublist, 'p-submenu-list-active');\n        }\n    }\n\n    removeActiveFromSublist(menuitem) {\n        if (menuitem) {\n            let sublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (sublist && DomHandler.hasClass(menuitem, 'p-submenu-list-active')) {\n                DomHandler.removeClass(menuitem, 'p-submenu-list-active');\n            }\n        }\n    }\n\n    bindGlobalListeners() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.containerViewChild.nativeElement.offsetParent && this.isOutsideClicked(event) && !event.ctrlKey && event.button !== 2) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.zone.runOutsideAngular(() => {\n            if (!this.windowResizeListener) {\n            this.windowResizeListener = this.onWindowResize.bind(this);\n                window.addEventListener('resize', this.windowResizeListener);\n            }\n        });\n\n        if (!this.documentKeydownListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentKeydownListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                let activeItem = this.getActiveItem();\n\n                switch (event.key) {\n                    case 'ArrowDown':\n                        if (activeItem) {\n                            this.removeActiveFromSublist(activeItem);\n                            activeItem = this.findNextItem(activeItem);\n                        }\n                        else {\n                            let firstItem = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-menuitem-link').parentElement;\n                            activeItem = this.isItemMatched(firstItem) ? firstItem : this.findNextItem(firstItem);\n                        }\n\n                        if (activeItem) {\n                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowUp':\n                        if (activeItem) {\n                            this.removeActiveFromSublist(activeItem);\n                            activeItem = this.findPrevItem(activeItem);\n                        }\n                        else {\n                            let sublist = DomHandler.findSingle(this.containerViewChild.nativeElement, 'ul');\n                            let lastItem = sublist.children[sublist.children.length - 1];\n                            activeItem = this.isItemMatched(lastItem) ? lastItem : this.findPrevItem(lastItem);\n                        }\n\n                        if (activeItem) {\n                            this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowRight':\n                        if (activeItem) {\n                            let sublist = DomHandler.findSingle(activeItem, '.p-submenu-list');\n\n                            if (sublist) {\n                                DomHandler.addClass(sublist, 'p-submenu-list-active');\n\n                                activeItem = DomHandler.findSingle(sublist, '.p-menuitem-link:not(.p-disabled)').parentElement;\n\n                                if (activeItem) {\n                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                                }\n                            }\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'ArrowLeft':\n                        if (activeItem) {\n                            let sublist = activeItem.parentElement;\n\n                            if (sublist && DomHandler.hasClass(sublist, 'p-submenu-list-active')) {\n                                DomHandler.removeClass(sublist, 'p-submenu-list-active');\n\n                                activeItem = sublist.parentElement.parentElement;\n\n                                if (activeItem) {\n                                    this.contextMenuService.changeKey(activeItem.getAttribute('data-ik'));\n                                }\n                            }\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    case 'Escape':\n                        this.hide();\n                        event.preventDefault();\n\n                        break;\n\n                    case 'Enter':\n                        if (activeItem) {\n                            this.handleItemClick(event, this.findModelItemFromKey(this.contextMenuService.activeItemKey), activeItem);\n                        }\n\n                        event.preventDefault();\n                        break;\n\n                    default:\n                        break;\n                }\n            });\n        }\n    }\n\n    findModelItemFromKey(key) {\n        if (key == null || !this.model) {\n            return null;\n        }\n\n        let indexes = key.split('_');\n        return indexes.reduce((item, currentIndex) => {\n            return item ? item.items[currentIndex] : this.model[currentIndex];\n        }, null);\n    }\n\n    handleItemClick(event, item, menuitem) {\n        if (!item || item.disabled) {\n            return;\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            let childSublist = DomHandler.findSingle(menuitem, '.p-submenu-list');\n\n            if (childSublist) {\n                if (DomHandler.hasClass(childSublist, 'p-submenu-list-active')) {\n                    this.removeActiveFromSubLists(menuitem);\n                }\n                else {\n                    DomHandler.addClass(childSublist, 'p-submenu-list-active');\n                    this.positionSubmenu(childSublist);\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.hide();\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n\n        if (this.windowResizeListener) {\n            window.removeEventListener('resize', this.windowResizeListener);\n            this.windowResizeListener = null;\n        }\n\n        if (this.documentKeydownListener) {\n            this.documentKeydownListener();\n            this.documentKeydownListener = null;\n        }\n    }\n\n    onWindowResize(event) {\n        if (this.containerViewChild.nativeElement.offsetParent) {\n            this.hide();\n        }\n    }\n\n    isOutsideClicked(event: Event) {\n        return !(this.containerViewChild.nativeElement.isSameNode(event.target) || this.containerViewChild.nativeElement.contains(event.target));\n    }\n\n    ngOnDestroy() {\n        this.unbindGlobalListeners();\n\n        if (this.triggerEventListener) {\n            this.triggerEventListener();\n        }\n\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        if (this.appendTo) {\n            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);\n        }\n\n        this.ngDestroy$.next(true);\n        this.ngDestroy$.complete();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [ContextMenu,RouterModule,TooltipModule],\n    declarations: [ContextMenu,ContextMenuSub],\n    providers: [ContextMenuService]\n})\nexport class ContextMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,422 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+
+class DataView {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.pageLinks = 5;
+        this.paginatorPosition = 'bottom';
+        this.alwaysShowPaginator = true;
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.emptyMessage = '';
+        this.onLazyLoad = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.loadingIcon = 'pi pi-spinner';
+        this.first = 0;
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onChangeLayout = new EventEmitter();
+        this._layout = 'list';
+    }
+    get layout() {
+        return this._layout;
+    }
+    set layout(layout) {
+        this._layout = layout;
+        if (this.initialized) {
+            this.changeLayout(layout);
+        }
+    }
+    ngOnInit() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+        this.initialized = true;
+    }
+    ngOnChanges(simpleChanges) {
+        if (simpleChanges.value) {
+            this._value = simpleChanges.value.currentValue;
+            this.updateTotalRecords();
+            if (!this.lazy && this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        if (simpleChanges.sortField || simpleChanges.sortOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                this.sort();
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'listItem':
+                    this.listItemTemplate = item.template;
+                    break;
+                case 'gridItem':
+                    this.gridItemTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+            }
+        });
+        this.updateItemTemplate();
+    }
+    updateItemTemplate() {
+        switch (this.layout) {
+            case 'list':
+                this.itemTemplate = this.listItemTemplate;
+                break;
+            case 'grid':
+                this.itemTemplate = this.gridItemTemplate;
+                break;
+        }
+    }
+    changeLayout(layout) {
+        this._layout = layout;
+        this.onChangeLayout.emit({
+            layout: this.layout
+        });
+        this.updateItemTemplate();
+        this.cd.markForCheck();
+    }
+    updateTotalRecords() {
+        this.totalRecords = this.lazy ? this.totalRecords : (this._value ? this._value.length : 0);
+    }
+    paginate(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+    }
+    sort() {
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else if (this.value) {
+            this.value.sort((data1, data2) => {
+                let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2);
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+            if (this.hasFilter()) {
+                this.filter(this.filterValue);
+            }
+        }
+        this.onSort.emit({
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        });
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder
+        };
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    filter(filter, filterMatchMode = "contains") {
+        this.filterValue = filter;
+        if (this.value && this.value.length) {
+            let searchFields = this.filterBy.split(',');
+            this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);
+            if (this.filteredValue.length === this.value.length) {
+                this.filteredValue = null;
+            }
+            if (this.paginator) {
+                this.first = 0;
+                this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+            }
+            this.cd.markForCheck();
+        }
+    }
+    hasFilter() {
+        return this.filterValue && this.filterValue.trim().length > 0;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+DataView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DataView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataView, selector: "p-dataView", inputs: { paginator: "paginator", rows: "rows", totalRecords: "totalRecords", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", paginatorPosition: "paginatorPosition", alwaysShowPaginator: "alwaysShowPaginator", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", lazy: "lazy", emptyMessage: "emptyMessage", style: "style", styleClass: "styleClass", trackBy: "trackBy", filterBy: "filterBy", filterLocale: "filterLocale", loading: "loading", loadingIcon: "loadingIcon", first: "first", sortField: "sortField", sortOrder: "sortOrder", value: "value", layout: "layout" }, outputs: { onLazyLoad: "onLazyLoad", onPage: "onPage", onSort: "onSort", onChangeLayout: "onChangeLayout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "slice": i3.SlicePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dataView', template: `
+        <div [ngClass]="{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dataview-loading" *ngIf="loading">
+                <div class="p-dataview-loading-overlay p-component-overlay">
+                    <i [class]="'p-dataview-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div class="p-dataview-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-top" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-content">
+                <div class="p-grid p-nogutter grid grid-nogutter">
+                    <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)" [ngForTrackBy]="trackBy">
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}"></ng-container>
+                    </ng-template>
+                    <div *ngIf="isEmpty()" class="p-col col">
+                            <div class="p-dataview-emptymessage">
+                            <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                                    {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="paginate($event)" styleClass="p-paginator-bottom" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight" [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div class="p-dataview-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dataview{position:relative}.p-dataview .p-dataview-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], onLazyLoad: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onChangeLayout: [{
+                type: Output
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], layout: [{
+                type: Input
+            }] } });
+class DataViewLayoutOptions {
+    constructor(dv) {
+        this.dv = dv;
+    }
+    changeLayout(event, layout) {
+        this.dv.changeLayout(layout);
+        event.preventDefault();
+    }
+}
+DataViewLayoutOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, deps: [{ token: DataView }], target: i0.ɵɵFactoryTarget.Component });
+DataViewLayoutOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DataViewLayoutOptions, selector: "p-dataViewLayoutOptions", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewLayoutOptions, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dataViewLayoutOptions',
+                    template: `
+        <div [ngClass]="'p-dataview-layout-options p-selectbutton p-buttonset'" [ngStyle]="style" [class]="styleClass">
+            <button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'list'}" (click)="changeLayout($event, 'list')" (keydown.enter)="changeLayout($event, 'list')">
+                <i class="pi pi-bars"></i>
+            </button><button type="button" class="p-button p-button-icon-only" [ngClass]="{'p-highlight': dv.layout === 'grid'}" (click)="changeLayout($event, 'grid')" (keydown.enter)="changeLayout($event, 'grid')">
+                <i class="pi pi-th-large"></i>
+            </button>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: DataView }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class DataViewModule {
+}
+DataViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DataViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, declarations: [DataView, DataViewLayoutOptions], imports: [CommonModule, SharedModule, PaginatorModule], exports: [DataView, SharedModule, DataViewLayoutOptions] });
+DataViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, imports: [[CommonModule, SharedModule, PaginatorModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DataViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, PaginatorModule],
+                    exports: [DataView, SharedModule, DataViewLayoutOptions],
+                    declarations: [DataView, DataViewLayoutOptions]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DataView, DataViewLayoutOptions, DataViewModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dataview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dataview.mjs","sources":["../../src/app/components/dataview/dataview.ts","../../src/app/components/dataview/primeng-dataview.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnInit,AfterContentInit,Input,Output,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,OnChanges,SimpleChanges,ChangeDetectionStrategy,ChangeDetectorRef, ViewEncapsulation, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ObjectUtils} from 'primeng/utils';\nimport {Header,Footer,PrimeTemplate,SharedModule,FilterService, TranslationKeys, PrimeNGConfig} from 'primeng/api';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {BlockableUI} from 'primeng/api';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    selector: 'p-dataView',\n    template: `\n        <div [ngClass]=\"{'p-dataview p-component': true, 'p-dataview-list': (layout === 'list'), 'p-dataview-grid': (layout === 'grid')}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-dataview-loading\" *ngIf=\"loading\">\n                <div class=\"p-dataview-loading-overlay p-component-overlay\">\n                    <i [class]=\"'p-dataview-loading-icon pi-spin ' + loadingIcon\"></i>\n                </div>\n            </div>\n            <div class=\"p-dataview-header\" *ngIf=\"header || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"paginate($event)\" styleClass=\"p-paginator-top\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\" [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div class=\"p-dataview-content\">\n                <div class=\"p-grid p-nogutter grid grid-nogutter\">\n                    <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"paginator ? ((filteredValue||value) | slice:(lazy ? 0 : first):((lazy ? 0 : first) + rows)) : (filteredValue||value)\" [ngForTrackBy]=\"trackBy\">\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: rowData, rowIndex: rowIndex}\"></ng-container>\n                    </ng-template>\n                    <div *ngIf=\"isEmpty()\" class=\"p-col col\">\n                            <div class=\"p-dataview-emptymessage\">\n                            <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                                    {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"paginate($event)\" styleClass=\"p-paginator-bottom\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\" [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div class=\"p-dataview-footer\" *ngIf=\"footer || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dataview.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DataView implements OnInit,AfterContentInit,OnDestroy,BlockableUI,OnChanges {\n\n    @Input() paginator: boolean;\n\n    @Input() rows: number;\n\n    @Input() totalRecords: number;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() paginatorDropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() lazy: boolean;\n\n    @Input() emptyMessage: string = '';\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Input() filterBy: string;\n\n    @Input() filterLocale: string;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() first: number = 0;\n\n    @Input() sortField: string;\n\n    @Input() sortOrder: number;\n\n    @Input() value: any[];\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChangeLayout: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Header) header;\n\n    @ContentChild(Footer) footer;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    _value: any[];\n\n    listItemTemplate: TemplateRef<any>;\n\n    gridItemTemplate: TemplateRef<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    filteredValue: any[];\n\n    filterValue: string;\n\n    initialized: boolean;\n\n    _layout: string = 'list';\n\n    translationSubscription: Subscription;\n\n    @Input() get layout(): string {\n        return this._layout;\n    }\n\n    set layout(layout: string) {\n        this._layout = layout;\n\n        if (this.initialized) {\n            this.changeLayout(layout);\n        }\n    }\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig) {}\n\n    ngOnInit() {\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n        this.initialized = true;\n    }\n\n    ngOnChanges(simpleChanges: SimpleChanges) {\n        if (simpleChanges.value) {\n            this._value = simpleChanges.value.currentValue;\n            this.updateTotalRecords();\n\n            if (!this.lazy && this.hasFilter()) {\n                this.filter(this.filterValue);\n            }\n        }\n\n        if (simpleChanges.sortField || simpleChanges.sortOrder) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if (!this.lazy || this.initialized) {\n                this.sort();\n            }\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'listItem':\n                    this.listItemTemplate = item.template;\n                break;\n\n                case 'gridItem':\n                    this.gridItemTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n            }\n        });\n\n        this.updateItemTemplate();\n    }\n\n    updateItemTemplate() {\n        switch(this.layout) {\n            case 'list':\n                this.itemTemplate = this.listItemTemplate;\n            break;\n\n            case 'grid':\n                this.itemTemplate = this.gridItemTemplate;\n            break;\n        }\n    }\n\n    changeLayout(layout: string) {\n        this._layout = layout;\n        this.onChangeLayout.emit({\n            layout: this.layout\n        });\n        this.updateItemTemplate();\n\n        this.cd.markForCheck();\n    }\n\n    updateTotalRecords() {\n        this.totalRecords = this.lazy ? this.totalRecords : (this._value ? this._value.length : 0);\n    }\n\n    paginate(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n    }\n\n    sort() {\n        this.first = 0;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else if (this.value) {\n            this.value.sort((data1, data2) => {\n                let value1 = ObjectUtils.resolveFieldData(data1, this.sortField);\n                let value2 = ObjectUtils.resolveFieldData(data2, this.sortField);\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2);\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return (this.sortOrder * result);\n            });\n\n            if (this.hasFilter()) {\n                this.filter(this.filterValue);\n            }\n        }\n\n        this.onSort.emit({\n            sortField: this.sortField,\n            sortOrder: this.sortOrder\n        });\n    }\n\n    isEmpty() {\n        let data = this.filteredValue||this.value;\n        return data == null || data.length == 0;\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder\n        };\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    filter(filter: string, filterMatchMode:string =\"contains\") {\n        this.filterValue = filter;\n\n        if (this.value && this.value.length) {\n            let searchFields = this.filterBy.split(',');\n            this.filteredValue = this.filterService.filter(this.value, searchFields, filter, filterMatchMode, this.filterLocale);\n\n            if (this.filteredValue.length === this.value.length ) {\n                this.filteredValue = null;\n            }\n\n            if (this.paginator) {\n                this.first = 0;\n                this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n            }\n\n            this.cd.markForCheck();\n        }\n    }\n\n    hasFilter() {\n        return this.filterValue && this.filterValue.trim().length > 0;\n    }\n\n    ngOnDestroy() {\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-dataViewLayoutOptions',\n    template: `\n        <div [ngClass]=\"'p-dataview-layout-options p-selectbutton p-buttonset'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <button type=\"button\" class=\"p-button p-button-icon-only\" [ngClass]=\"{'p-highlight': dv.layout === 'list'}\" (click)=\"changeLayout($event, 'list')\" (keydown.enter)=\"changeLayout($event, 'list')\">\n                <i class=\"pi pi-bars\"></i>\n            </button><button type=\"button\" class=\"p-button p-button-icon-only\" [ngClass]=\"{'p-highlight': dv.layout === 'grid'}\" (click)=\"changeLayout($event, 'grid')\" (keydown.enter)=\"changeLayout($event, 'grid')\">\n                <i class=\"pi pi-th-large\"></i>\n            </button>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DataViewLayoutOptions  {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    constructor(public dv: DataView) {}\n\n    changeLayout(event: Event, layout: string) {\n        this.dv.changeLayout(layout);\n        event.preventDefault();\n    }\n}\n@NgModule({\n    imports: [CommonModule,SharedModule,PaginatorModule],\n    exports: [DataView,SharedModule,DataViewLayoutOptions],\n    declarations: [DataView,DataViewLayoutOptions]\n})\nexport class DataViewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,87 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, TemplateRef, Directive, Output, ContentChild, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+class DeferredLoader {
+    constructor(el, renderer, viewContainer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.onLoad = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (this.shouldLoad()) {
+            this.load();
+        }
+        if (!this.isLoaded()) {
+            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {
+                if (this.shouldLoad()) {
+                    this.load();
+                    this.documentScrollListener();
+                    this.documentScrollListener = null;
+                }
+            });
+        }
+    }
+    shouldLoad() {
+        if (this.isLoaded()) {
+            return false;
+        }
+        else {
+            let rect = this.el.nativeElement.getBoundingClientRect();
+            let docElement = document.documentElement;
+            let winHeight = docElement.clientHeight;
+            return (winHeight >= rect.top);
+        }
+    }
+    load() {
+        this.view = this.viewContainer.createEmbeddedView(this.template);
+        this.onLoad.emit();
+        this.cd.detectChanges();
+    }
+    isLoaded() {
+        return this.view != null;
+    }
+    ngOnDestroy() {
+        this.view = null;
+        if (this.documentScrollListener) {
+            this.documentScrollListener();
+        }
+    }
+}
+DeferredLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+DeferredLoader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DeferredLoader, selector: "[pDefer]", outputs: { onLoad: "onLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferredLoader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDefer]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onLoad: [{
+                type: Output
+            }], template: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+class DeferModule {
+}
+DeferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DeferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, declarations: [DeferredLoader], imports: [CommonModule], exports: [DeferredLoader] });
+DeferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DeferModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [DeferredLoader],
+                    declarations: [DeferredLoader]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DeferModule, DeferredLoader };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-defer.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-defer.mjs","sources":["../../src/app/components/defer/defer.ts","../../src/app/components/defer/primeng-defer.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,AfterViewInit,OnDestroy,TemplateRef,EmbeddedViewRef,\n        ViewContainerRef,Renderer2,EventEmitter,Output,ContentChild, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Directive({\n    selector: '[pDefer]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DeferredLoader implements AfterViewInit,OnDestroy {\n\n    @Output() onLoad: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n    documentScrollListener: Function;\n\n    view: EmbeddedViewRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public viewContainer: ViewContainerRef, private cd: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        if (this.shouldLoad()) {\n            this.load();\n        }\n\n        if (!this.isLoaded()) {\n            this.documentScrollListener = this.renderer.listen('window', 'scroll', () => {\n                if (this.shouldLoad()) {\n                    this.load();\n                    this.documentScrollListener();\n                    this.documentScrollListener = null;\n                }\n            });\n        }\n    }\n\n    shouldLoad(): boolean {\n        if (this.isLoaded()) {\n            return false;\n        }\n        else {\n            let rect = this.el.nativeElement.getBoundingClientRect();\n            let docElement = document.documentElement;\n            let winHeight = docElement.clientHeight;\n\n            return (winHeight >= rect.top);\n        }\n    }\n\n    load(): void {\n        this.view = this.viewContainer.createEmbeddedView(this.template);\n        this.onLoad.emit();\n        this.cd.detectChanges();\n    }\n\n    isLoaded() {\n        return this.view != null;\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n\n        if (this.documentScrollListener) {\n            this.documentScrollListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [DeferredLoader],\n    declarations: [DeferredLoader]\n})\nexport class DeferModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAUa,cAAc;IAUvB,YAAmB,EAAc,EAAS,QAAmB,EAAS,aAA+B,EAAU,EAAqB;QAAjH,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,kBAAa,GAAb,aAAa,CAAkB;QAAU,OAAE,GAAF,EAAE,CAAmB;QAR1H,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;KAQ+E;IAExI,eAAe;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;gBACnE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACnB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACtC;aACJ,CAAC,CAAC;SACN;KACJ;IAED,UAAU;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC;SAChB;aACI;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACzD,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC;YAExC,QAAQ,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;SAClC;KACJ;IAED,IAAI;QACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;KAC5B;IAED,WAAW;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;KACJ;;2GAzDQ,cAAc;+FAAd,cAAc,4JAIT,WAAW;2FAJhB,cAAc;kBAN1B,SAAS;mBAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;wLAGa,MAAM;sBAAf,MAAM;gBAEoB,QAAQ;sBAAlC,YAAY;uBAAC,WAAW;;MA6DhB,WAAW;;wGAAX,WAAW;yGAAX,WAAW,iBAjEX,cAAc,aA6Db,YAAY,aA7Db,cAAc;yGAiEd,WAAW,YAJX,CAAC,YAAY,CAAC;2FAId,WAAW;kBALvB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;iBACjC;;;AC1ED;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,758 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/focustrap';
+import { FocusTrapModule } from 'primeng/focustrap';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class Dialog {
+    constructor(el, renderer, zone, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.zone = zone;
+        this.cd = cd;
+        this.config = config;
+        this.draggable = true;
+        this.resizable = true;
+        this.closeOnEscape = true;
+        this.closable = true;
+        this.showHeader = true;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.minX = 0;
+        this.minY = 0;
+        this.focusOnShow = true;
+        this.keepInViewport = true;
+        this.focusTrap = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.closeIcon = 'pi pi-times';
+        this.closeTabindex = "-1";
+        this.minimizeIcon = 'pi pi-window-minimize';
+        this.maximizeIcon = 'pi pi-window-maximize';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onResizeInit = new EventEmitter();
+        this.onResizeEnd = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onMaximize = new EventEmitter();
+        this.id = UniqueComponentId();
+        this._style = {};
+        this._position = "center";
+        this.transformOptions = "scale(0.7)";
+    }
+    get positionLeft() {
+        return 0;
+    }
+    ;
+    set positionLeft(_positionLeft) {
+        console.log("positionLeft property is deprecated.");
+    }
+    get positionTop() {
+        return 0;
+    }
+    ;
+    set positionTop(_positionTop) {
+        console.log("positionTop property is deprecated.");
+    }
+    get responsive() {
+        return false;
+    }
+    ;
+    set responsive(_responsive) {
+        console.log("Responsive property is deprecated.");
+    }
+    get breakpoint() {
+        return 649;
+    }
+    ;
+    set breakpoint(_breakpoint) {
+        console.log("Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    get style() {
+        return this._style;
+    }
+    set style(value) {
+        if (value) {
+            this._style = { ...value };
+            this.originalStyle = value;
+        }
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'topleft':
+            case 'bottomleft':
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'topright':
+            case 'bottomright':
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+            default:
+                this.transformOptions = "scale(0.7)";
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    close(event) {
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (this.closable && this.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.close(event);
+                }
+            });
+        }
+        if (this.modal) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.modal) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    maximize() {
+        this.maximized = !this.maximized;
+        if (!this.modal && !this.blockScroll) {
+            if (this.maximized)
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            else
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.onMaximize.emit({ 'maximized': this.maximized });
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-dialog[${this.id}] {
+                            width: ${this.breakpoints[breakpoint]} !important;
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    initDrag(event) {
+        if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass(event.target.parentElement, 'p-dialog-header-icon')) {
+            return;
+        }
+        if (this.draggable) {
+            this.dragging = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            this.container.style.margin = '0';
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+        }
+    }
+    onKeydown(event) {
+        if (this.focusTrap) {
+            if (event.which === 9) {
+                event.preventDefault();
+                let focusableElements = DomHandler.getFocusableElements(this.container);
+                if (focusableElements && focusableElements.length > 0) {
+                    if (!focusableElements[0].ownerDocument.activeElement) {
+                        focusableElements[0].focus();
+                    }
+                    else {
+                        let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                        if (event.shiftKey) {
+                            if (focusedIndex == -1 || focusedIndex === 0)
+                                focusableElements[focusableElements.length - 1].focus();
+                            else
+                                focusableElements[focusedIndex - 1].focus();
+                        }
+                        else {
+                            if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                                focusableElements[0].focus();
+                            else
+                                focusableElements[focusedIndex + 1].focus();
+                        }
+                    }
+                }
+            }
+        }
+    }
+    onDrag(event) {
+        if (this.dragging) {
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let offset = DomHandler.getOffset(this.container);
+            let leftPos = offset.left + deltaX;
+            let topPos = offset.top + deltaY;
+            let viewport = DomHandler.getViewport();
+            this.container.style.position = 'fixed';
+            if (this.keepInViewport) {
+                if (leftPos >= this.minX && (leftPos + containerWidth) < viewport.width) {
+                    this._style.left = leftPos + 'px';
+                    this.lastPageX = event.pageX;
+                    this.container.style.left = leftPos + 'px';
+                }
+                if (topPos >= this.minY && (topPos + containerHeight) < viewport.height) {
+                    this._style.top = topPos + 'px';
+                    this.lastPageY = event.pageY;
+                    this.container.style.top = topPos + 'px';
+                }
+            }
+            else {
+                this.lastPageX = event.pageX;
+                this.container.style.left = leftPos + 'px';
+                this.lastPageY = event.pageY;
+                this.container.style.top = topPos + 'px';
+            }
+        }
+    }
+    endDrag(event) {
+        if (this.dragging) {
+            this.dragging = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.cd.detectChanges();
+            this.onDragEnd.emit(event);
+        }
+    }
+    resetPosition() {
+        this.container.style.position = '';
+        this.container.style.left = '';
+        this.container.style.top = '';
+        this.container.style.margin = '';
+    }
+    //backward compatibility
+    center() {
+        this.resetPosition();
+    }
+    initResize(event) {
+        if (this.resizable) {
+            this.resizing = true;
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+            DomHandler.addClass(document.body, 'p-unselectable-text');
+            this.onResizeInit.emit(event);
+        }
+    }
+    onResize(event) {
+        if (this.resizing) {
+            let deltaX = event.pageX - this.lastPageX;
+            let deltaY = event.pageY - this.lastPageY;
+            let containerWidth = DomHandler.getOuterWidth(this.container);
+            let containerHeight = DomHandler.getOuterHeight(this.container);
+            let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);
+            let newWidth = containerWidth + deltaX;
+            let newHeight = containerHeight + deltaY;
+            let minWidth = this.container.style.minWidth;
+            let minHeight = this.container.style.minHeight;
+            let offset = DomHandler.getOffset(this.container);
+            let viewport = DomHandler.getViewport();
+            let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);
+            if (hasBeenDragged) {
+                newWidth += deltaX;
+                newHeight += deltaY;
+            }
+            if ((!minWidth || newWidth > parseInt(minWidth)) && (offset.left + newWidth) < viewport.width) {
+                this._style.width = newWidth + 'px';
+                this.container.style.width = this._style.width;
+            }
+            if ((!minHeight || newHeight > parseInt(minHeight)) && (offset.top + newHeight) < viewport.height) {
+                this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';
+                if (this._style.height) {
+                    this._style.height = newHeight + 'px';
+                    this.container.style.height = this._style.height;
+                }
+            }
+            this.lastPageX = event.pageX;
+            this.lastPageY = event.pageY;
+        }
+    }
+    resizeEnd(event) {
+        if (this.resizing) {
+            this.resizing = false;
+            DomHandler.removeClass(document.body, 'p-unselectable-text');
+            this.onResizeEnd.emit(event);
+        }
+    }
+    bindGlobalListeners() {
+        if (this.draggable) {
+            this.bindDocumentDragListener();
+            this.bindDocumentDragEndListener();
+        }
+        if (this.resizable) {
+            this.bindDocumentResizeListeners();
+        }
+        if (this.closeOnEscape && this.closable) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentDragListener();
+        this.unbindDocumentDragEndListener();
+        this.unbindDocumentResizeListeners();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentDragListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragListener = this.onDrag.bind(this);
+            window.document.addEventListener('mousemove', this.documentDragListener);
+        });
+    }
+    unbindDocumentDragListener() {
+        if (this.documentDragListener) {
+            window.document.removeEventListener('mousemove', this.documentDragListener);
+            this.documentDragListener = null;
+        }
+    }
+    bindDocumentDragEndListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentDragEndListener = this.endDrag.bind(this);
+            window.document.addEventListener('mouseup', this.documentDragEndListener);
+        });
+    }
+    unbindDocumentDragEndListener() {
+        if (this.documentDragEndListener) {
+            window.document.removeEventListener('mouseup', this.documentDragEndListener);
+            this.documentDragEndListener = null;
+        }
+    }
+    bindDocumentResizeListeners() {
+        this.zone.runOutsideAngular(() => {
+            this.documentResizeListener = this.onResize.bind(this);
+            this.documentResizeEndListener = this.resizeEnd.bind(this);
+            window.document.addEventListener('mousemove', this.documentResizeListener);
+            window.document.addEventListener('mouseup', this.documentResizeEndListener);
+        });
+    }
+    unbindDocumentResizeListeners() {
+        if (this.documentResizeListener && this.documentResizeEndListener) {
+            window.document.removeEventListener('mousemove', this.documentResizeListener);
+            window.document.removeEventListener('mouseup', this.documentResizeEndListener);
+            this.documentResizeListener = null;
+            this.documentResizeEndListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                this.close(event);
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.wrapper);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                this.container.setAttribute(this.id, '');
+                if (this.modal) {
+                    this.enableModality();
+                }
+                if (!this.modal && this.blockScroll) {
+                    DomHandler.addClass(document.body, 'p-overflow-hidden');
+                }
+                if (this.focusOnShow) {
+                    this.focus();
+                }
+                break;
+            case 'void':
+                if (this.modal) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        this.dragging = false;
+        this.maskVisible = false;
+        if (this.maximized) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            this.maximized = false;
+        }
+        if (this.modal) {
+            this.disableModality();
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.wrapper = null;
+        this._style = this.originalStyle ? { ...this.originalStyle } : {};
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        this.destroyStyle();
+    }
+}
+Dialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Dialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dialog, selector: "p-dialog", inputs: { header: "header", draggable: "draggable", resizable: "resizable", positionLeft: "positionLeft", positionTop: "positionTop", contentStyle: "contentStyle", contentStyleClass: "contentStyleClass", modal: "modal", closeOnEscape: "closeOnEscape", dismissableMask: "dismissableMask", rtl: "rtl", closable: "closable", responsive: "responsive", appendTo: "appendTo", breakpoints: "breakpoints", styleClass: "styleClass", maskStyleClass: "maskStyleClass", showHeader: "showHeader", breakpoint: "breakpoint", blockScroll: "blockScroll", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", minX: "minX", minY: "minY", focusOnShow: "focusOnShow", maximizable: "maximizable", keepInViewport: "keepInViewport", focusTrap: "focusTrap", transitionOptions: "transitionOptions", closeIcon: "closeIcon", closeAriaLabel: "closeAriaLabel", closeTabindex: "closeTabindex", minimizeIcon: "minimizeIcon", maximizeIcon: "maximizeIcon", visible: "visible", style: "style", position: "position" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange", onResizeInit: "onResizeInit", onResizeEnd: "onResizeEnd", onDragEnd: "onDragEnd", onMaximize: "onMaximize" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerViewChild", first: true, predicate: ["titlebar"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "footerViewChild", first: true, predicate: ["footer"], descendants: true }], ngImport: i0, template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.FocusTrap, selector: "[pFocusTrap]", inputs: ["pFocusTrapDisabled"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dialog, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dialog', template: `
+        <div *ngIf="maskVisible" [class]="maskStyleClass"
+            [ngClass]="{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,
+                'p-dialog-left': position === 'left',
+                'p-dialog-right': position === 'right',
+                'p-dialog-top': position === 'top',
+                'p-dialog-top-left': position === 'topleft' || position === 'top-left',
+                'p-dialog-top-right': position === 'topright' || position === 'top-right',
+                'p-dialog-bottom': position === 'bottom',
+                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',
+                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}">
+            <div #container [ngClass]="{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}"
+                [ngStyle]="style" [class]="styleClass" *ngIf="visible" pFocusTrap [pFocusTrapDisabled]="focusTrap === false"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" [attr.aria-labelledby]="id + '-label'">
+                <div #titlebar class="p-dialog-header" (mousedown)="initDrag($event)" *ngIf="showHeader">
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="!headerFacet && !headerTemplate">{{header}}</span>
+                    <span [attr.id]="id + '-label'" class="p-dialog-title" *ngIf="headerFacet">
+                        <ng-content select="p-header"></ng-content>
+                    </span>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-dialog-header-icons">
+                        <button *ngIf="maximizable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-maximize p-link':true}" (click)="maximize()" (keydown.enter)="maximize()" tabindex="-1" pRipple>
+                            <span class="p-dialog-header-maximize-icon" [ngClass]="maximized ? minimizeIcon : maximizeIcon"></span>
+                        </button>
+                        <button *ngIf="closable" type="button" [ngClass]="{'p-dialog-header-icon p-dialog-header-close p-link':true}" [attr.aria-label]="closeAriaLabel" (click)="close($event)" (keydown.enter)="close($event)" [attr.tabindex]="closeTabindex" pRipple>
+                            <span class="p-dialog-header-close-icon" [ngClass]="closeIcon"></span>
+                        </button>
+                    </div>
+                </div>
+                <div #content [ngClass]="'p-dialog-content'" [ngStyle]="contentStyle" [class]="contentStyleClass">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+                <div #footer class="p-dialog-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+                <div *ngIf="resizable" class="p-resizable-handle" style="z-index: 90;" (mousedown)="initResize($event)"></div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { header: [{
+                type: Input
+            }], draggable: [{
+                type: Input
+            }], resizable: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], contentStyle: [{
+                type: Input
+            }], contentStyleClass: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], dismissableMask: [{
+                type: Input
+            }], rtl: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], maskStyleClass: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], minX: [{
+                type: Input
+            }], minY: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], maximizable: [{
+                type: Input
+            }], keepInViewport: [{
+                type: Input
+            }], focusTrap: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], closeAriaLabel: [{
+                type: Input
+            }], closeTabindex: [{
+                type: Input
+            }], minimizeIcon: [{
+                type: Input
+            }], maximizeIcon: [{
+                type: Input
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], headerViewChild: [{
+                type: ViewChild,
+                args: ['titlebar']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], footerViewChild: [{
+                type: ViewChild,
+                args: ['footer']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onResizeInit: [{
+                type: Output
+            }], onResizeEnd: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onMaximize: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }] } });
+class DialogModule {
+}
+DialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, declarations: [Dialog], imports: [CommonModule, FocusTrapModule, RippleModule], exports: [Dialog, SharedModule] });
+DialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, imports: [[CommonModule, FocusTrapModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FocusTrapModule, RippleModule],
+                    exports: [Dialog, SharedModule],
+                    declarations: [Dialog]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Dialog, DialogModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dialog.mjs","sources":["../../src/app/components/dialog/dialog.ts","../../src/app/components/dialog/primeng-dialog.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,Renderer2,\n    ContentChildren,QueryList,ViewChild,NgZone, ChangeDetectorRef,ViewRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, TemplateRef, ContentChild, OnInit} from '@angular/core';\nimport {trigger,style,transition,animate, AnimationEvent, animation, useAnimation} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {Header,Footer,SharedModule, PrimeTemplate, PrimeNGConfig} from 'primeng/api';\nimport {FocusTrapModule} from 'primeng/focustrap';\nimport {RippleModule} from 'primeng/ripple';\nimport {UniqueComponentId, ZIndexUtils} from 'primeng/utils';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}')\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-dialog',\n    template: `\n        <div *ngIf=\"maskVisible\" [class]=\"maskStyleClass\"\n            [ngClass]=\"{'p-dialog-mask': true, 'p-component-overlay p-component-overlay-enter': this.modal, 'p-dialog-mask-scrollblocker': this.modal || this.blockScroll,\n                'p-dialog-left': position === 'left',\n                'p-dialog-right': position === 'right',\n                'p-dialog-top': position === 'top',\n                'p-dialog-top-left': position === 'topleft' || position === 'top-left',\n                'p-dialog-top-right': position === 'topright' || position === 'top-right',\n                'p-dialog-bottom': position === 'bottom',\n                'p-dialog-bottom-left': position === 'bottomleft' || position === 'bottom-left',\n                'p-dialog-bottom-right': position === 'bottomright' || position === 'bottom-right'}\">\n            <div #container [ngClass]=\"{'p-dialog p-component':true, 'p-dialog-rtl':rtl,'p-dialog-draggable':draggable,'p-dialog-resizable':resizable, 'p-dialog-maximized': maximized}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"visible\" pFocusTrap [pFocusTrapDisabled]=\"focusTrap === false\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" role=\"dialog\" [attr.aria-labelledby]=\"id + '-label'\">\n                <div #titlebar class=\"p-dialog-header\" (mousedown)=\"initDrag($event)\" *ngIf=\"showHeader\">\n                    <span [attr.id]=\"id + '-label'\" class=\"p-dialog-title\" *ngIf=\"!headerFacet && !headerTemplate\">{{header}}</span>\n                    <span [attr.id]=\"id + '-label'\" class=\"p-dialog-title\" *ngIf=\"headerFacet\">\n                        <ng-content select=\"p-header\"></ng-content>\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <div class=\"p-dialog-header-icons\">\n                        <button *ngIf=\"maximizable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-maximize p-link':true}\" (click)=\"maximize()\" (keydown.enter)=\"maximize()\" tabindex=\"-1\" pRipple>\n                            <span class=\"p-dialog-header-maximize-icon\" [ngClass]=\"maximized ? minimizeIcon : maximizeIcon\"></span>\n                        </button>\n                        <button *ngIf=\"closable\" type=\"button\" [ngClass]=\"{'p-dialog-header-icon p-dialog-header-close p-link':true}\" [attr.aria-label]=\"closeAriaLabel\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\" [attr.tabindex]=\"closeTabindex\" pRipple>\n                            <span class=\"p-dialog-header-close-icon\" [ngClass]=\"closeIcon\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div #content [ngClass]=\"'p-dialog-content'\" [ngStyle]=\"contentStyle\" [class]=\"contentStyleClass\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n                <div #footer class=\"p-dialog-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n                <div *ngIf=\"resizable\" class=\"p-resizable-handle\" style=\"z-index: 90;\" (mousedown)=\"initResize($event)\"></div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Dialog implements AfterContentInit,OnInit,OnDestroy {\n\n    @Input() header: string;\n\n    @Input() draggable: boolean = true;\n\n    @Input() resizable: boolean = true;\n\n    @Input() get positionLeft(): number {\n        return 0;\n    };\n\n    set positionLeft(_positionLeft: number) {\n        console.log(\"positionLeft property is deprecated.\");\n    }\n\n    @Input() get positionTop(): number {\n        return 0;\n    };\n\n    set positionTop(_positionTop: number) {\n        console.log(\"positionTop property is deprecated.\");\n    }\n\n    @Input() contentStyle: any;\n\n    @Input() contentStyleClass: string;\n\n    @Input() modal: boolean;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() dismissableMask: boolean;\n\n    @Input() rtl: boolean;\n\n    @Input() closable: boolean = true;\n\n    @Input() get responsive(): boolean {\n        return false;\n    };\n\n    set responsive(_responsive: boolean) {\n        console.log(\"Responsive property is deprecated.\");\n    }\n\n    @Input() appendTo: any;\n\n    @Input() breakpoints: any;\n\n    @Input() styleClass: string;\n\n    @Input() maskStyleClass: string;\n\n    @Input() showHeader: boolean = true;\n\n    @Input() get breakpoint(): number {\n        return 649;\n    };\n\n    set breakpoint(_breakpoint: number) {\n        console.log(\"Breakpoint property is not utilized and deprecated, use breakpoints or CSS media queries instead.\");\n    }\n\n    @Input() blockScroll: boolean = false;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() minX: number = 0;\n\n    @Input() minY: number = 0;\n\n    @Input() focusOnShow: boolean = true;\n\n    @Input() maximizable: boolean;\n\n    @Input() keepInViewport: boolean = true;\n\n    @Input() focusTrap: boolean = true;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() closeIcon: string = 'pi pi-times';\n\n    @Input() closeAriaLabel: string;\n\n    @Input() closeTabindex: string = \"-1\";\n\n    @Input() minimizeIcon: string = 'pi pi-window-minimize';\n\n    @Input() maximizeIcon: string = 'pi pi-window-maximize';\n\n    @ContentChild(Header) headerFacet: QueryList<Header>;\n\n    @ContentChild(Footer) footerFacet: QueryList<Footer>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('titlebar') headerViewChild: ElementRef;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ViewChild('footer') footerViewChild: ElementRef;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange:EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMaximize: EventEmitter<any> = new EventEmitter();\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    _visible: boolean;\n\n    maskVisible: boolean;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    dragging: boolean;\n\n    documentDragListener: any;\n\n    documentDragEndListener: any;\n\n    resizing: boolean;\n\n    documentResizeListener: any;\n\n    documentResizeEndListener: any;\n\n    documentEscapeListener: Function;\n\n    maskClickListener: Function;\n\n    lastPageX: number;\n\n    lastPageY: number;\n\n    preventVisibleChangePropagation: boolean;\n\n    maximized: boolean;\n\n    preMaximizeContentHeight: number;\n\n    preMaximizeContainerWidth: number;\n\n    preMaximizeContainerHeight: number;\n\n    preMaximizePageX: number;\n\n    preMaximizePageY: number;\n\n    id: string = UniqueComponentId();\n\n    _style: any = {};\n\n    _position: string = \"center\";\n\n    originalStyle: any;\n\n    transformOptions: any = \"scale(0.7)\";\n\n    styleElement: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public zone: NgZone, private cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n\n    @Input() get style(): any {\n        return this._style;\n    }\n    set style(value:any) {\n        if (value) {\n            this._style = {...value};\n            this.originalStyle = value;\n        }\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'topleft':\n            case 'bottomleft':\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n            break;\n            case 'topright':\n            case 'bottomright':\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n            break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n            break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n            break;\n            default:\n                this.transformOptions = \"scale(0.7)\";\n            break;\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n    close(event: Event) {\n        this.visibleChange.emit(false);\n        event.preventDefault();\n    }\n\n    enableModality() {\n        if (this.closable && this.dismissableMask) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.close(event);\n                }\n            });\n        }\n\n        if (this.modal) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.wrapper) {\n            if (this.dismissableMask) {\n                this.unbindMaskClickListener();\n            }\n\n            if (this.modal) {\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            }\n\n            if (!(this.cd as ViewRef).destroyed) {\n                this.cd.detectChanges();\n            }\n        }\n    }\n\n    maximize() {\n        this.maximized = !this.maximized;\n\n        if (!this.modal && !this.blockScroll) {\n            if (this.maximized)\n                DomHandler.addClass(document.body, 'p-overflow-hidden');\n            else\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.onMaximize.emit({'maximized': this.maximized});\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex + this.config.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-dialog[${this.id}] {\n                            width: ${this.breakpoints[breakpoint]} !important;\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    initDrag(event: MouseEvent) {\n        if (DomHandler.hasClass(event.target, 'p-dialog-header-icon') || DomHandler.hasClass((<HTMLElement> event.target).parentElement, 'p-dialog-header-icon')) {\n            return;\n        }\n\n        if (this.draggable) {\n            this.dragging = true;\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n\n            this.container.style.margin = '0';\n            DomHandler.addClass(document.body, 'p-unselectable-text');\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (this.focusTrap) {\n            if (event.which === 9) {\n                event.preventDefault();\n\n                let focusableElements = DomHandler.getFocusableElements(this.container);\n\n                if (focusableElements && focusableElements.length > 0) {\n                    if (!focusableElements[0].ownerDocument.activeElement) {\n                        focusableElements[0].focus();\n                    }\n                    else {\n                        let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                        if (event.shiftKey) {\n                            if (focusedIndex == -1 || focusedIndex === 0)\n                                focusableElements[focusableElements.length - 1].focus();\n                            else\n                                focusableElements[focusedIndex - 1].focus();\n                        }\n                        else {\n                            if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                                focusableElements[0].focus();\n                            else\n                                focusableElements[focusedIndex + 1].focus();\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    onDrag(event: MouseEvent) {\n        if (this.dragging) {\n            let containerWidth = DomHandler.getOuterWidth(this.container);\n            let containerHeight = DomHandler.getOuterHeight(this.container);\n            let deltaX = event.pageX - this.lastPageX;\n            let deltaY = event.pageY - this.lastPageY;\n            let offset = DomHandler.getOffset(this.container);\n            let leftPos = offset.left + deltaX;\n            let topPos = offset.top + deltaY;\n            let viewport = DomHandler.getViewport();\n\n            this.container.style.position = 'fixed';\n\n            if (this.keepInViewport) {\n                if (leftPos >= this.minX && (leftPos + containerWidth) < viewport.width) {\n                    this._style.left = leftPos + 'px';\n                    this.lastPageX = event.pageX;\n                    this.container.style.left = leftPos + 'px';\n                }\n\n                if (topPos >= this.minY && (topPos + containerHeight) < viewport.height) {\n                    this._style.top = topPos + 'px';\n                    this.lastPageY = event.pageY;\n                    this.container.style.top = topPos + 'px';\n                }\n            }\n            else {\n                this.lastPageX = event.pageX;\n                this.container.style.left = leftPos + 'px';\n                this.lastPageY = event.pageY;\n                this.container.style.top = topPos + 'px';\n            }\n        }\n    }\n\n    endDrag(event: MouseEvent) {\n        if (this.dragging) {\n            this.dragging = false;\n            DomHandler.removeClass(document.body, 'p-unselectable-text');\n            this.cd.detectChanges();\n            this.onDragEnd.emit(event);\n        }\n    }\n\n    resetPosition() {\n        this.container.style.position = '';\n        this.container.style.left = '';\n        this.container.style.top = '';\n        this.container.style.margin = '';\n    }\n\n    //backward compatibility\n    center() {\n        this.resetPosition();\n    }\n\n    initResize(event: MouseEvent) {\n        if (this.resizable) {\n            this.resizing = true;\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n            DomHandler.addClass(document.body, 'p-unselectable-text');\n            this.onResizeInit.emit(event);\n        }\n    }\n\n    onResize(event: MouseEvent) {\n        if (this.resizing) {\n            let deltaX = event.pageX - this.lastPageX;\n            let deltaY = event.pageY - this.lastPageY;\n            let containerWidth = DomHandler.getOuterWidth(this.container);\n            let containerHeight = DomHandler.getOuterHeight(this.container);\n            let contentHeight = DomHandler.getOuterHeight(this.contentViewChild.nativeElement);\n            let newWidth = containerWidth + deltaX;\n            let newHeight = containerHeight + deltaY;\n            let minWidth = this.container.style.minWidth;\n            let minHeight = this.container.style.minHeight;\n            let offset = DomHandler.getOffset(this.container);\n            let viewport = DomHandler.getViewport();\n            let hasBeenDragged = !parseInt(this.container.style.top) || !parseInt(this.container.style.left);\n\n            if (hasBeenDragged) {\n                newWidth += deltaX;\n                newHeight += deltaY;\n            }\n\n            if ((!minWidth || newWidth > parseInt(minWidth)) && (offset.left + newWidth) < viewport.width) {\n                this._style.width = newWidth + 'px';\n                this.container.style.width = this._style.width;\n            }\n\n            if ((!minHeight || newHeight > parseInt(minHeight)) && (offset.top + newHeight) < viewport.height) {\n                this.contentViewChild.nativeElement.style.height = contentHeight + newHeight - containerHeight + 'px';\n\n                if (this._style.height) {\n                    this._style.height = newHeight + 'px';\n                    this.container.style.height = this._style.height;\n                }\n            }\n\n            this.lastPageX = event.pageX;\n            this.lastPageY = event.pageY;\n        }\n    }\n\n    resizeEnd(event) {\n        if (this.resizing) {\n            this.resizing = false;\n            DomHandler.removeClass(document.body, 'p-unselectable-text');\n            this.onResizeEnd.emit(event);\n        }\n    }\n\n    bindGlobalListeners() {\n        if (this.draggable) {\n            this.bindDocumentDragListener();\n            this.bindDocumentDragEndListener();\n        }\n\n        if (this.resizable) {\n            this.bindDocumentResizeListeners();\n        }\n\n        if (this.closeOnEscape && this.closable) {\n            this.bindDocumentEscapeListener();\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindDocumentDragListener();\n        this.unbindDocumentDragEndListener();\n        this.unbindDocumentResizeListeners();\n        this.unbindDocumentEscapeListener();\n    }\n\n    bindDocumentDragListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentDragListener = this.onDrag.bind(this);\n            window.document.addEventListener('mousemove', this.documentDragListener);\n        });\n    }\n\n    unbindDocumentDragListener() {\n        if (this.documentDragListener) {\n            window.document.removeEventListener('mousemove', this.documentDragListener);\n            this.documentDragListener = null;\n        }\n    }\n\n    bindDocumentDragEndListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentDragEndListener = this.endDrag.bind(this);\n            window.document.addEventListener('mouseup', this.documentDragEndListener);\n        });\n    }\n\n    unbindDocumentDragEndListener() {\n        if (this.documentDragEndListener) {\n            window.document.removeEventListener('mouseup', this.documentDragEndListener);\n            this.documentDragEndListener = null;\n        }\n    }\n\n    bindDocumentResizeListeners() {\n        this.zone.runOutsideAngular(() => {\n            this.documentResizeListener = this.onResize.bind(this);\n            this.documentResizeEndListener = this.resizeEnd.bind(this);\n            window.document.addEventListener('mousemove', this.documentResizeListener);\n            window.document.addEventListener('mouseup', this.documentResizeEndListener);\n        });\n    }\n\n    unbindDocumentResizeListeners() {\n        if (this.documentResizeListener && this.documentResizeEndListener) {\n            window.document.removeEventListener('mousemove', this.documentResizeListener);\n            window.document.removeEventListener('mouseup', this.documentResizeEndListener);\n            this.documentResizeListener = null;\n            this.documentResizeEndListener = null;\n        }\n    }\n\n    bindDocumentEscapeListener() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                this.close(event);\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.wrapper);\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.appendContainer();\n                this.moveOnTop();\n                this.bindGlobalListeners();\n                this.container.setAttribute(this.id, '');\n\n                if (this.modal) {\n                    this.enableModality();\n                }\n\n                if (!this.modal && this.blockScroll) {\n                    DomHandler.addClass(document.body, 'p-overflow-hidden');\n                }\n\n                if (this.focusOnShow) {\n                    this.focus();\n                }\n            break;\n\n            case 'void':\n                if (this.modal) {\n                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n                }\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                this.onContainerDestroy();\n                this.onHide.emit({});\n            break;\n            case 'visible':\n                this.onShow.emit({});\n            break;\n        }\n    }\n\n    onContainerDestroy() {\n        this.unbindGlobalListeners();\n        this.dragging = false;\n\n        this.maskVisible = false;\n\n        if (this.maximized) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            this.maximized = false;\n        }\n\n        if (this.modal) {\n            this.disableModality();\n        }\n\n        if (this.blockScroll) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.container = null;\n        this.wrapper = null;\n\n        this._style = this.originalStyle ? {...this.originalStyle} : {};\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.container) {\n            this.restoreAppend();\n            this.onContainerDestroy();\n        }\n\n        this.destroyStyle();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,FocusTrapModule,RippleModule],\n    exports: [Dialog,SharedModule],\n    declarations: [Dialog]\n})\nexport class DialogModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Divider {
+    constructor() {
+        this.layout = "horizontal";
+        this.type = "solid";
+    }
+    containerClass() {
+        return {
+            'p-divider p-component': true,
+            'p-divider-horizontal': this.layout === "horizontal",
+            'p-divider-vertical': this.layout === "vertical",
+            'p-divider-solid': this.type === "solid",
+            'p-divider-dashed': this.type === "dashed",
+            'p-divider-dotted': this.type === "dotted",
+            'p-divider-left': this.layout === 'horizontal' && (!this.align || this.align === 'left'),
+            'p-divider-center': (this.layout === 'horizontal' && this.align === 'center') || (this.layout === 'vertical' && (!this.align || this.align === 'center')),
+            'p-divider-right': this.layout === 'horizontal' && this.align === 'right',
+            'p-divider-top': this.layout === 'vertical' && (this.align === 'top'),
+            'p-divider-bottom': this.layout === 'vertical' && this.align === 'bottom'
+        };
+    }
+}
+Divider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Divider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Divider, selector: "p-divider", inputs: { styleClass: "styleClass", style: "style", layout: "layout", type: "type", align: "align" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Divider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-divider', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style" role="separator">
+            <div class="p-divider-content">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-divider-horizontal{display:flex;width:100%;position:relative;align-items:center}.p-divider-horizontal:before{position:absolute;display:block;top:50%;left:0;width:100%;content:\"\"}.p-divider-horizontal.p-divider-left{justify-content:flex-start}.p-divider-horizontal.p-divider-right{justify-content:flex-end}.p-divider-horizontal.p-divider-center{justify-content:center}.p-divider-content{z-index:1}.p-divider-vertical{min-height:100%;margin:0 1rem;display:flex;position:relative;justify-content:center}.p-divider-vertical:before{position:absolute;display:block;top:0;left:50%;height:100%;content:\"\"}.p-divider-vertical.p-divider-top{align-items:flex-start}.p-divider-vertical.p-divider-center{align-items:center}.p-divider-vertical.p-divider-bottom{align-items:flex-end}.p-divider-solid.p-divider-horizontal:before{border-top-style:solid}.p-divider-solid.p-divider-vertical:before{border-left-style:solid}.p-divider-dashed.p-divider-horizontal:before{border-top-style:dashed}.p-divider-dashed.p-divider-vertical:before{border-left-style:dashed}.p-divider-dotted.p-divider-horizontal:before{border-top-style:dotted}.p-divider-dotted.p-divider-horizontal:before{border-left-style:dotted}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }] } });
+class DividerModule {
+}
+DividerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DividerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, declarations: [Divider], imports: [CommonModule], exports: [Divider] });
+DividerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DividerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Divider],
+                    declarations: [Divider]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Divider, DividerModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-divider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-divider.mjs","sources":["../../src/app/components/divider/divider.ts","../../src/app/components/divider/primeng-divider.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-divider',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" role=\"separator\">\n            <div class=\"p-divider-content\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./divider.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Divider {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() layout: string = \"horizontal\";\n\n    @Input() type: string = \"solid\";\n\n    @Input() align: string;\n\n    containerClass() {\n        return {\n            'p-divider p-component': true,\n            'p-divider-horizontal': this.layout === \"horizontal\",\n            'p-divider-vertical': this.layout === \"vertical\",\n            'p-divider-solid': this.type === \"solid\",\n            'p-divider-dashed': this.type === \"dashed\",\n            'p-divider-dotted': this.type === \"dotted\",\n            'p-divider-left': this.layout === 'horizontal' && (!this.align || this.align === 'left'),\n            'p-divider-center': (this.layout === 'horizontal' && this.align === 'center') || (this.layout === 'vertical' && (!this.align || this.align === 'center')),\n            'p-divider-right': this.layout === 'horizontal' && this.align === 'right',\n            'p-divider-top': this.layout === 'vertical' && (this.align === 'top'),\n            'p-divider-bottom': this.layout === 'vertical' && this.align === 'bottom'\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Divider],\n    declarations: [Divider]\n})\nexport class DividerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,OAAO;IAhBpB;QAsBa,WAAM,GAAW,YAAY,CAAC;QAE9B,SAAI,GAAW,OAAO,CAAC;KAmBnC;IAfG,cAAc;QACV,OAAO;YACH,uBAAuB,EAAE,IAAI;YAC7B,sBAAsB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY;YACpD,oBAAoB,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU;YAChD,iBAAiB,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;YACxC,kBAAkB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC1C,kBAAkB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC1C,gBAAgB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;YACxF,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YACzJ,iBAAiB,EAAE,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YACzE,eAAe,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;YACrE,kBAAkB,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;SAC5E,CAAC;KACL;;oGA1BQ,OAAO;wFAAP,OAAO,8LAdN;;;;;;KAMT;2FAQQ,OAAO;kBAhBnB,SAAS;+BACI,WAAW,YACX;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;;MAwBG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAlCb,OAAO,aA8BN,YAAY,aA9Bb,OAAO;2GAkCP,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;ACpDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,152 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Dock {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.position = "bottom";
+        this.currentIndex = -3;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onListMouseLeave() {
+        this.currentIndex = -3;
+        this.cd.markForCheck();
+    }
+    onItemMouseEnter(index) {
+        this.currentIndex = index;
+        if (index === 1) {
+        }
+        this.cd.markForCheck();
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+    }
+    get containerClass() {
+        return {
+            ['p-dock p-component ' + ` p-dock-${this.position}`]: true
+        };
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !item.disabled;
+    }
+    itemClass(index) {
+        return {
+            'p-dock-item': true,
+            'p-dock-item-second-prev': (this.currentIndex - 2) === index,
+            'p-dock-item-prev': (this.currentIndex - 1) === index,
+            'p-dock-item-current': this.currentIndex === index,
+            'p-dock-item-next': (this.currentIndex + 1) === index,
+            'p-dock-item-second-next': (this.currentIndex + 2) === index
+        };
+    }
+}
+Dock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Dock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dock, selector: "p-dock", inputs: { id: "id", style: "style", styleClass: "styleClass", model: "model", position: "position" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dock, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dock', template: `
+        <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass">
+            <div class="p-dock-list-container">
+                <ul #list class="p-dock-list" role="menu" (mouseleave)="onListMouseLeave()">
+                    <li *ngFor="let item of model; let i = index" [ngClass]="itemClass(i)" (mouseenter)="onItemMouseEnter(i)">
+                        <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams"
+                            [ngClass]="{'p-disabled':item.disabled}" class="p-dock-action"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                            [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                        </a>
+                        <ng-template #elseBlock>
+                            <a [tooltipPosition]="item.tooltipPosition" [attr.href]="item.url||null" class="p-dock-action"  role="menuitem" pRipple (click)="onItemClick($event, item)"  pTooltip [tooltipOptions]="item.tooltipOptions"
+                                [ngClass]="{'p-disabled':item.disabled}" (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                                <span class="p-dock-action-icon" *ngIf="item.icon && !itemTemplate" [ngClass]="item.icon"></span>
+                                <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item}"></ng-container>
+                            </a>
+                        </ng-template>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dock{position:absolute;z-index:1;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dock-list-container{display:flex;pointer-events:auto}.p-dock-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center}.p-dock-item{transition:all .2s cubic-bezier(.4,0,.2,1);will-change:transform}.p-dock-action{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;cursor:default}.p-dock-item-second-prev,.p-dock-item-second-next{transform:scale(1.2)}.p-dock-item-prev,.p-dock-item-next{transform:scale(1.4)}.p-dock-item-current{transform:scale(1.6);z-index:1}.p-dock-top{left:0;top:0;width:100%}.p-dock-top .p-dock-item{transform-origin:center top}.p-dock-bottom{left:0;bottom:0;width:100%}.p-dock-bottom .p-dock-item{transform-origin:center bottom}.p-dock-right{right:0;top:0;height:100%}.p-dock-right .p-dock-item{transform-origin:center right}.p-dock-right .p-dock-list{flex-direction:column}.p-dock-left{left:0;top:0;height:100%}.p-dock-left .p-dock-item{transform-origin:center left}.p-dock-left .p-dock-list{flex-direction:column}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class DockModule {
+}
+DockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, declarations: [Dock], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Dock, SharedModule, TooltipModule, RouterModule] });
+DockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], SharedModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DockModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Dock, SharedModule, TooltipModule, RouterModule],
+                    declarations: [Dock]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Dock, DockModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dock.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dock.mjs","sources":["../../src/app/components/dock/dock.ts","../../src/app/components/dock/primeng-dock.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-dock',\n    template: `\n        <div [attr.id]=\"id\" [ngClass]=\"containerClass\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-dock-list-container\">\n                <ul #list class=\"p-dock-list\" role=\"menu\" (mouseleave)=\"onListMouseLeave()\">\n                    <li *ngFor=\"let item of model; let i = index\" [ngClass]=\"itemClass(i)\" (mouseenter)=\"onItemMouseEnter(i)\">\n                        <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" pRipple [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\"\n                            [ngClass]=\"{'p-disabled':item.disabled}\" class=\"p-dock-action\"  role=\"menuitem\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" (click)=\"onItemClick($event, item)\" (keydown.enter)=\"onItemClick($event, item, i)\"\n                            [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"  pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                                <span class=\"p-dock-action-icon\" *ngIf=\"item.icon && !itemTemplate\" [ngClass]=\"item.icon\"></span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                        </a>\n                        <ng-template #elseBlock>\n                            <a [tooltipPosition]=\"item.tooltipPosition\" [attr.href]=\"item.url||null\" class=\"p-dock-action\"  role=\"menuitem\" pRipple (click)=\"onItemClick($event, item)\"  pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                                [ngClass]=\"{'p-disabled':item.disabled}\" (keydown.enter)=\"onItemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                                <span class=\"p-dock-action-icon\" *ngIf=\"item.icon && !itemTemplate\" [ngClass]=\"item.icon\"></span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                            </a>\n                        </ng-template>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dock.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Dock implements AfterContentInit {\n\n    @Input() id: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() model: any[] = null;\n\n    @Input() position: string = \"bottom\";\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    currentIndex: number;\n\n    constructor(private el: ElementRef, public cd: ChangeDetectorRef) {\n        this.currentIndex = -3;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onListMouseLeave() {\n        this.currentIndex = -3;\n        this.cd.markForCheck();\n    }\n\n    onItemMouseEnter(index) {\n        this.currentIndex = index;\n\n        if (index === 1) {\n\n        }\n\n        this.cd.markForCheck();\n    }\n\n    onItemClick(e, item) {\n        if (item.command) {\n            item.command({ originalEvent: e, item });\n        }\n    }\n\n    get containerClass() {\n        return {\n            ['p-dock p-component ' + ` p-dock-${this.position}`]: true\n        };\n    }\n\n    isClickableRouterLink(item: any) {\n        return item.routerLink && !item.disabled;\n    }\n\n    itemClass(index) {\n        return {\n            'p-dock-item': true,\n            'p-dock-item-second-prev': (this.currentIndex - 2) === index,\n            'p-dock-item-prev': (this.currentIndex - 1) === index,\n            'p-dock-item-current': this.currentIndex === index,\n            'p-dock-item-next': (this.currentIndex + 1) === index,\n            'p-dock-item-second-next': (this.currentIndex + 2) === index\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],\n    exports: [Dock, SharedModule, TooltipModule, RouterModule],\n    declarations: [Dock]\n})\nexport class DockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,526 @@
+/**
+ * @dynamic is for runtime initializing DomHandler.browser
+ *
+ * If delete below comment, we can see this error message:
+ *  Metadata collected contains an error that will be reported at runtime:
+ *  Only initialized variables and constants can be referenced
+ *  because the value of this variable is needed by the template compiler.
+ */
+// @dynamic
+class DomHandler {
+    static addClass(element, className) {
+        if (element.classList)
+            element.classList.add(className);
+        else
+            element.className += ' ' + className;
+    }
+    static addMultipleClasses(element, className) {
+        if (element.classList) {
+            let styles = className.trim().split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.classList.add(styles[i]);
+            }
+        }
+        else {
+            let styles = className.split(' ');
+            for (let i = 0; i < styles.length; i++) {
+                element.className += ' ' + styles[i];
+            }
+        }
+    }
+    static removeClass(element, className) {
+        if (element.classList)
+            element.classList.remove(className);
+        else
+            element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
+    }
+    static hasClass(element, className) {
+        if (element.classList)
+            return element.classList.contains(className);
+        else
+            return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
+    }
+    static siblings(element) {
+        return Array.prototype.filter.call(element.parentNode.children, function (child) {
+            return child !== element;
+        });
+    }
+    static find(element, selector) {
+        return Array.from(element.querySelectorAll(selector));
+    }
+    static findSingle(element, selector) {
+        if (element) {
+            return element.querySelector(selector);
+        }
+        return null;
+    }
+    static index(element) {
+        let children = element.parentNode.childNodes;
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static indexWithinGroup(element, attributeName) {
+        let children = element.parentNode ? element.parentNode.childNodes : [];
+        let num = 0;
+        for (var i = 0; i < children.length; i++) {
+            if (children[i] == element)
+                return num;
+            if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1)
+                num++;
+        }
+        return -1;
+    }
+    static relativePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        const targetHeight = target.offsetHeight;
+        const targetOffset = target.getBoundingClientRect();
+        const viewport = this.getViewport();
+        let top, left;
+        if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {
+            top = -1 * (elementDimensions.height);
+            element.style.transformOrigin = 'bottom';
+            if (targetOffset.top + top < 0) {
+                top = -1 * targetOffset.top;
+            }
+        }
+        else {
+            top = targetHeight;
+            element.style.transformOrigin = 'top';
+        }
+        if (elementDimensions.width > viewport.width) {
+            // element wider then viewport and cannot fit on screen (align at left side of viewport)
+            left = targetOffset.left * -1;
+        }
+        else if ((targetOffset.left + elementDimensions.width) > viewport.width) {
+            // element wider then viewport but can be fit on screen (align at right side of viewport)
+            left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
+        }
+        else {
+            // element fits on screen (align with target)
+            left = 0;
+        }
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static absolutePosition(element, target) {
+        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
+        let elementOuterHeight = elementDimensions.height;
+        let elementOuterWidth = elementDimensions.width;
+        let targetOuterHeight = target.offsetHeight;
+        let targetOuterWidth = target.offsetWidth;
+        let targetOffset = target.getBoundingClientRect();
+        let windowScrollTop = this.getWindowScrollTop();
+        let windowScrollLeft = this.getWindowScrollLeft();
+        let viewport = this.getViewport();
+        let top, left;
+        if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
+            top = targetOffset.top + windowScrollTop - elementOuterHeight;
+            element.style.transformOrigin = 'bottom';
+            if (top < 0) {
+                top = windowScrollTop;
+            }
+        }
+        else {
+            top = targetOuterHeight + targetOffset.top + windowScrollTop;
+            element.style.transformOrigin = 'top';
+        }
+        if (targetOffset.left + elementOuterWidth > viewport.width)
+            left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
+        else
+            left = targetOffset.left + windowScrollLeft;
+        element.style.top = top + 'px';
+        element.style.left = left + 'px';
+    }
+    static getParents(element, parents = []) {
+        return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));
+    }
+    static getScrollableParents(element) {
+        let scrollableParents = [];
+        if (element) {
+            let parents = this.getParents(element);
+            const overflowRegex = /(auto|scroll)/;
+            const overflowCheck = (node) => {
+                let styleDeclaration = window['getComputedStyle'](node, null);
+                return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));
+            };
+            for (let parent of parents) {
+                let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];
+                if (scrollSelectors) {
+                    let selectors = scrollSelectors.split(',');
+                    for (let selector of selectors) {
+                        let el = this.findSingle(parent, selector);
+                        if (el && overflowCheck(el)) {
+                            scrollableParents.push(el);
+                        }
+                    }
+                }
+                if (parent.nodeType !== 9 && overflowCheck(parent)) {
+                    scrollableParents.push(parent);
+                }
+            }
+        }
+        return scrollableParents;
+    }
+    static getHiddenElementOuterHeight(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementHeight = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementHeight;
+    }
+    static getHiddenElementOuterWidth(element) {
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        let elementWidth = element.offsetWidth;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return elementWidth;
+    }
+    static getHiddenElementDimensions(element) {
+        let dimensions = {};
+        element.style.visibility = 'hidden';
+        element.style.display = 'block';
+        dimensions.width = element.offsetWidth;
+        dimensions.height = element.offsetHeight;
+        element.style.display = 'none';
+        element.style.visibility = 'visible';
+        return dimensions;
+    }
+    static scrollInView(container, item) {
+        let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');
+        let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;
+        let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');
+        let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;
+        let containerRect = container.getBoundingClientRect();
+        let itemRect = item.getBoundingClientRect();
+        let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;
+        let scroll = container.scrollTop;
+        let elementHeight = container.clientHeight;
+        let itemHeight = this.getOuterHeight(item);
+        if (offset < 0) {
+            container.scrollTop = scroll + offset;
+        }
+        else if ((offset + itemHeight) > elementHeight) {
+            container.scrollTop = scroll + offset - elementHeight + itemHeight;
+        }
+    }
+    static fadeIn(element, duration) {
+        element.style.opacity = 0;
+        let last = +new Date();
+        let opacity = 0;
+        let tick = function () {
+            opacity = +element.style.opacity.replace(",", ".") + (new Date().getTime() - last) / duration;
+            element.style.opacity = opacity;
+            last = +new Date();
+            if (+opacity < 1) {
+                (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
+            }
+        };
+        tick();
+    }
+    static fadeOut(element, ms) {
+        var opacity = 1, interval = 50, duration = ms, gap = interval / duration;
+        let fading = setInterval(() => {
+            opacity = opacity - gap;
+            if (opacity <= 0) {
+                opacity = 0;
+                clearInterval(fading);
+            }
+            element.style.opacity = opacity;
+        }, interval);
+    }
+    static getWindowScrollTop() {
+        let doc = document.documentElement;
+        return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
+    }
+    static getWindowScrollLeft() {
+        let doc = document.documentElement;
+        return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
+    }
+    static matches(element, selector) {
+        var p = Element.prototype;
+        var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {
+            return [].indexOf.call(document.querySelectorAll(s), this) !== -1;
+        };
+        return f.call(element, selector);
+    }
+    static getOuterWidth(el, margin) {
+        let width = el.offsetWidth;
+        if (margin) {
+            let style = getComputedStyle(el);
+            width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+        }
+        return width;
+    }
+    static getHorizontalPadding(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+    }
+    static getHorizontalMargin(el) {
+        let style = getComputedStyle(el);
+        return parseFloat(style.marginLeft) + parseFloat(style.marginRight);
+    }
+    static innerWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static width(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
+        return width;
+    }
+    static getInnerHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);
+        return height;
+    }
+    static getOuterHeight(el, margin) {
+        let height = el.offsetHeight;
+        if (margin) {
+            let style = getComputedStyle(el);
+            height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
+        }
+        return height;
+    }
+    static getHeight(el) {
+        let height = el.offsetHeight;
+        let style = getComputedStyle(el);
+        height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
+        return height;
+    }
+    static getWidth(el) {
+        let width = el.offsetWidth;
+        let style = getComputedStyle(el);
+        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
+        return width;
+    }
+    static getViewport() {
+        let win = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], w = win.innerWidth || e.clientWidth || g.clientWidth, h = win.innerHeight || e.clientHeight || g.clientHeight;
+        return { width: w, height: h };
+    }
+    static getOffset(el) {
+        var rect = el.getBoundingClientRect();
+        return {
+            top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
+            left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),
+        };
+    }
+    static replaceElementWith(element, replacementElement) {
+        let parentNode = element.parentNode;
+        if (!parentNode)
+            throw `Can't replace element`;
+        return parentNode.replaceChild(replacementElement, element);
+    }
+    static getUserAgent() {
+        return navigator.userAgent;
+    }
+    static isIE() {
+        var ua = window.navigator.userAgent;
+        var msie = ua.indexOf('MSIE ');
+        if (msie > 0) {
+            // IE 10 or older => return version number
+            return true;
+        }
+        var trident = ua.indexOf('Trident/');
+        if (trident > 0) {
+            // IE 11 => return version number
+            var rv = ua.indexOf('rv:');
+            return true;
+        }
+        var edge = ua.indexOf('Edge/');
+        if (edge > 0) {
+            // Edge (IE 12+) => return version number
+            return true;
+        }
+        // other browser
+        return false;
+    }
+    static isIOS() {
+        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];
+    }
+    static isAndroid() {
+        return /(android)/i.test(navigator.userAgent);
+    }
+    static isTouchDevice() {
+        return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));
+    }
+    static appendChild(element, target) {
+        if (this.isElement(target))
+            target.appendChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.appendChild(element);
+        else
+            throw 'Cannot append ' + target + ' to ' + element;
+    }
+    static removeChild(element, target) {
+        if (this.isElement(target))
+            target.removeChild(element);
+        else if (target.el && target.el.nativeElement)
+            target.el.nativeElement.removeChild(element);
+        else
+            throw 'Cannot remove ' + element + ' from ' + target;
+    }
+    static removeElement(element) {
+        if (!('remove' in Element.prototype))
+            element.parentNode.removeChild(element);
+        else
+            element.remove();
+    }
+    static isElement(obj) {
+        return (typeof HTMLElement === "object" ? obj instanceof HTMLElement :
+            obj && typeof obj === "object" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === "string");
+    }
+    static calculateScrollbarWidth(el) {
+        if (el) {
+            let style = getComputedStyle(el);
+            return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));
+        }
+        else {
+            if (this.calculatedScrollbarWidth !== null)
+                return this.calculatedScrollbarWidth;
+            let scrollDiv = document.createElement("div");
+            scrollDiv.className = "p-scrollbar-measure";
+            document.body.appendChild(scrollDiv);
+            let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+            document.body.removeChild(scrollDiv);
+            this.calculatedScrollbarWidth = scrollbarWidth;
+            return scrollbarWidth;
+        }
+    }
+    static calculateScrollbarHeight() {
+        if (this.calculatedScrollbarHeight !== null)
+            return this.calculatedScrollbarHeight;
+        let scrollDiv = document.createElement("div");
+        scrollDiv.className = "p-scrollbar-measure";
+        document.body.appendChild(scrollDiv);
+        let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;
+        document.body.removeChild(scrollDiv);
+        this.calculatedScrollbarWidth = scrollbarHeight;
+        return scrollbarHeight;
+    }
+    static invokeElementMethod(element, methodName, args) {
+        element[methodName].apply(element, args);
+    }
+    static clearSelection() {
+        if (window.getSelection) {
+            if (window.getSelection().empty) {
+                window.getSelection().empty();
+            }
+            else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
+                window.getSelection().removeAllRanges();
+            }
+        }
+        else if (document['selection'] && document['selection'].empty) {
+            try {
+                document['selection'].empty();
+            }
+            catch (error) {
+                //ignore IE bug
+            }
+        }
+    }
+    static getBrowser() {
+        if (!this.browser) {
+            let matched = this.resolveUserAgent();
+            this.browser = {};
+            if (matched.browser) {
+                this.browser[matched.browser] = true;
+                this.browser['version'] = matched.version;
+            }
+            if (this.browser['chrome']) {
+                this.browser['webkit'] = true;
+            }
+            else if (this.browser['webkit']) {
+                this.browser['safari'] = true;
+            }
+        }
+        return this.browser;
+    }
+    static resolveUserAgent() {
+        let ua = navigator.userAgent.toLowerCase();
+        let match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+            /(msie) ([\w.]+)/.exec(ua) ||
+            ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+            [];
+        return {
+            browser: match[1] || "",
+            version: match[2] || "0"
+        };
+    }
+    static isInteger(value) {
+        if (Number.isInteger) {
+            return Number.isInteger(value);
+        }
+        else {
+            return typeof value === "number" && isFinite(value) && Math.floor(value) === value;
+        }
+    }
+    static isHidden(element) {
+        return element.offsetParent === null;
+    }
+    static getFocusableElements(element) {
+        let focusableElements = DomHandler.find(element, `button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]), [tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]),
+                [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]:not(.p-disabled))`);
+        let visibleFocusableElements = [];
+        for (let focusableElement of focusableElements) {
+            if (getComputedStyle(focusableElement).display != "none" && getComputedStyle(focusableElement).visibility != "hidden")
+                visibleFocusableElements.push(focusableElement);
+        }
+        return visibleFocusableElements;
+    }
+    static generateZIndex() {
+        this.zindex = this.zindex || 999;
+        return ++this.zindex;
+    }
+}
+DomHandler.zindex = 1000;
+DomHandler.calculatedScrollbarWidth = null;
+DomHandler.calculatedScrollbarHeight = null;
+
+class ConnectedOverlayScrollHandler {
+    constructor(element, listener = () => { }) {
+        this.element = element;
+        this.listener = listener;
+    }
+    bindScrollListener() {
+        this.scrollableParents = DomHandler.getScrollableParents(this.element);
+        for (let i = 0; i < this.scrollableParents.length; i++) {
+            this.scrollableParents[i].addEventListener('scroll', this.listener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollableParents) {
+            for (let i = 0; i < this.scrollableParents.length; i++) {
+                this.scrollableParents[i].removeEventListener('scroll', this.listener);
+            }
+        }
+    }
+    destroy() {
+        this.unbindScrollListener();
+        this.element = null;
+        this.listener = null;
+        this.scrollableParents = null;
+    }
+}
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ConnectedOverlayScrollHandler, DomHandler };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dom.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dom.mjs","sources":["../../src/app/components/dom/domhandler.ts","../../src/app/components/dom/connectedoverlayscrollhandler.ts","../../src/app/components/dom/primeng-dom.ts"],"sourcesContent":["/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n *  Metadata collected contains an error that will be reported at runtime:\n *  Only initialized variables and constants can be referenced\n *  because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nexport class DomHandler {\n\n    public static zindex: number = 1000;\n\n    private static calculatedScrollbarWidth: number = null;\n\n    private static calculatedScrollbarHeight: number = null;\n\n    private static browser: any;\n\n    public static addClass(element: any, className: string): void {\n        if (element.classList)\n            element.classList.add(className);\n        else\n            element.className += ' ' + className;\n    }\n\n    public static addMultipleClasses(element: any, className: string): void {\n        if (element.classList) {\n            let styles: string[] = className.trim().split(' ');\n            for (let i = 0; i < styles.length; i++) {\n                element.classList.add(styles[i]);\n            }\n\n        }\n        else {\n            let styles: string[] = className.split(' ');\n            for (let i = 0; i < styles.length; i++) {\n                element.className += ' ' + styles[i];\n            }\n        }\n    }\n\n    public static removeClass(element: any, className: string): void {\n        if (element.classList)\n            element.classList.remove(className);\n        else\n            element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n    }\n\n    public static hasClass(element: any, className: string): boolean {\n        if (element.classList)\n            return element.classList.contains(className);\n        else\n            return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n    }\n\n    public static siblings(element: any): any {\n        return Array.prototype.filter.call(element.parentNode.children, function (child) {\n            return child !== element;\n        });\n    }\n\n    public static find(element: any, selector: string): any[] {\n        return Array.from(element.querySelectorAll(selector));\n    }\n\n    public static findSingle(element: any, selector: string): any {\n        if (element) {\n            return element.querySelector(selector);\n        }\n        return null;\n    }\n\n    public static index(element: any): number {\n        let children = element.parentNode.childNodes;\n        let num = 0;\n        for (var i = 0; i < children.length; i++) {\n            if (children[i] == element) return num;\n            if (children[i].nodeType == 1) num++;\n        }\n        return -1;\n    }\n\n    public static indexWithinGroup(element: any, attributeName: string): number {\n        let children = element.parentNode ? element.parentNode.childNodes : [];\n        let num = 0;\n        for (var i = 0; i < children.length; i++) {\n            if (children[i] == element) return num;\n            if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) num++;\n        }\n        return -1;\n    }\n\n    public static relativePosition(element: any, target: any): void {\n        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n        const targetHeight = target.offsetHeight;\n        const targetOffset = target.getBoundingClientRect();\n        const viewport = this.getViewport();\n        let top: number, left: number;\n\n        if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {\n            top = -1 * (elementDimensions.height);\n            element.style.transformOrigin = 'bottom';\n            if (targetOffset.top + top < 0) {\n                top = -1 * targetOffset.top;\n            }\n        }\n        else {\n            top = targetHeight;\n            element.style.transformOrigin = 'top';\n        }\n\n        if (elementDimensions.width > viewport.width) {\n            // element wider then viewport and cannot fit on screen (align at left side of viewport)\n            left = targetOffset.left * -1;\n        }\n        else if ((targetOffset.left + elementDimensions.width) > viewport.width) {\n            // element wider then viewport but can be fit on screen (align at right side of viewport)\n            left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n        }\n        else {\n            // element fits on screen (align with target)\n            left = 0;\n        }\n\n        element.style.top = top + 'px';\n        element.style.left = left + 'px';\n    }\n\n    public static absolutePosition(element: any, target: any): void {\n        let elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n        let elementOuterHeight = elementDimensions.height;\n        let elementOuterWidth = elementDimensions.width;\n        let targetOuterHeight = target.offsetHeight;\n        let targetOuterWidth = target.offsetWidth;\n        let targetOffset = target.getBoundingClientRect();\n        let windowScrollTop = this.getWindowScrollTop();\n        let windowScrollLeft = this.getWindowScrollLeft();\n        let viewport = this.getViewport();\n        let top, left;\n\n        if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n            top = targetOffset.top + windowScrollTop - elementOuterHeight;\n            element.style.transformOrigin = 'bottom';\n\n            if (top < 0) {\n                top = windowScrollTop;\n            }\n        }\n        else {\n            top = targetOuterHeight + targetOffset.top + windowScrollTop;\n            element.style.transformOrigin = 'top';\n        }\n\n        if (targetOffset.left + elementOuterWidth > viewport.width)\n            left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n        else\n            left = targetOffset.left + windowScrollLeft;\n\n        element.style.top = top + 'px';\n        element.style.left = left + 'px';\n    }\n\n    static getParents(element: any, parents:any = []): any {\n        return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n    }\n\n    static getScrollableParents(element: any) {\n        let scrollableParents = [];\n\n        if (element) {\n            let parents = this.getParents(element);\n            const overflowRegex = /(auto|scroll)/;\n            const overflowCheck = (node: any) => {\n                let styleDeclaration = window['getComputedStyle'](node, null);\n                return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n            };\n\n            for (let parent of parents) {\n                let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n                if (scrollSelectors) {\n                    let selectors = scrollSelectors.split(',');\n                    for (let selector of selectors) {\n                        let el = this.findSingle(parent, selector);\n                        if (el && overflowCheck(el)) {\n                            scrollableParents.push(el);\n                        }\n                    }\n                }\n\n                if (parent.nodeType !== 9 && overflowCheck(parent)) {\n                    scrollableParents.push(parent);\n                }\n            }\n        }\n\n        return scrollableParents;\n    }\n\n    public static getHiddenElementOuterHeight(element: any): number {\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        let elementHeight = element.offsetHeight;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return elementHeight;\n    }\n\n    public static getHiddenElementOuterWidth(element: any): number {\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        let elementWidth = element.offsetWidth;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return elementWidth;\n    }\n\n    public static getHiddenElementDimensions(element: any): any {\n        let dimensions: any = {};\n        element.style.visibility = 'hidden';\n        element.style.display = 'block';\n        dimensions.width = element.offsetWidth;\n        dimensions.height = element.offsetHeight;\n        element.style.display = 'none';\n        element.style.visibility = 'visible';\n\n        return dimensions;\n    }\n\n    public static scrollInView(container, item) {\n        let borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n        let borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n        let paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n        let paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n        let containerRect = container.getBoundingClientRect();\n        let itemRect = item.getBoundingClientRect();\n        let offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n        let scroll = container.scrollTop;\n        let elementHeight = container.clientHeight;\n        let itemHeight = this.getOuterHeight(item);\n\n        if (offset < 0) {\n            container.scrollTop = scroll + offset;\n        }\n        else if ((offset + itemHeight) > elementHeight) {\n            container.scrollTop = scroll + offset - elementHeight + itemHeight;\n        }\n    }\n\n    public static fadeIn(element, duration: number): void {\n        element.style.opacity = 0;\n\n        let last = +new Date();\n        let opacity = 0;\n        let tick = function () {\n            opacity = +element.style.opacity.replace(\",\", \".\") + (new Date().getTime() - last) / duration;\n            element.style.opacity = opacity;\n            last = +new Date();\n\n            if (+opacity < 1) {\n                (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n            }\n        };\n\n        tick();\n    }\n\n    public static fadeOut(element, ms) {\n        var opacity = 1,\n            interval = 50,\n            duration = ms,\n            gap = interval / duration;\n\n        let fading = setInterval(() => {\n            opacity = opacity - gap;\n\n            if (opacity <= 0) {\n                opacity = 0;\n                clearInterval(fading);\n            }\n\n            element.style.opacity = opacity;\n        }, interval);\n    }\n\n    public static getWindowScrollTop(): number {\n        let doc = document.documentElement;\n        return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n    }\n\n    public static getWindowScrollLeft(): number {\n        let doc = document.documentElement;\n        return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n    }\n\n    public static matches(element, selector: string): boolean {\n        var p = Element.prototype;\n        var f = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {\n            return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n        };\n        return f.call(element, selector);\n    }\n\n    public static getOuterWidth(el, margin?) {\n        let width = el.offsetWidth;\n\n        if (margin) {\n            let style = getComputedStyle(el);\n            width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n        }\n\n        return width;\n    }\n\n    public static getHorizontalPadding(el) {\n        let style = getComputedStyle(el);\n        return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n    }\n\n    public static getHorizontalMargin(el) {\n        let style = getComputedStyle(el);\n        return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n    }\n\n    public static innerWidth(el) {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n        return width;\n    }\n\n    public static width(el) {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n        return width;\n    }\n\n    public static getInnerHeight(el) {\n        let height = el.offsetHeight;\n        let style = getComputedStyle(el);\n\n        height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n        return height;\n    }\n\n    public static getOuterHeight(el, margin?) {\n        let height = el.offsetHeight;\n\n        if (margin) {\n            let style = getComputedStyle(el);\n            height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n        }\n\n        return height;\n    }\n\n    public static getHeight(el): number {\n        let height = el.offsetHeight;\n        let style = getComputedStyle(el);\n\n        height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n        return height;\n    }\n\n    public static getWidth(el): number {\n        let width = el.offsetWidth;\n        let style = getComputedStyle(el);\n\n        width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n        return width;\n    }\n\n    public static getViewport(): any {\n        let win = window,\n            d = document,\n            e = d.documentElement,\n            g = d.getElementsByTagName('body')[0],\n            w = win.innerWidth || e.clientWidth || g.clientWidth,\n            h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n        return { width: w, height: h };\n    }\n\n    public static getOffset(el) {\n        var rect = el.getBoundingClientRect();\n\n        return {\n            top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n            left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n        };\n    }\n\n    public static replaceElementWith(element: any, replacementElement: any): any {\n        let parentNode = element.parentNode;\n        if (!parentNode)\n            throw `Can't replace element`;\n        return parentNode.replaceChild(replacementElement, element);\n    }\n\n    public static getUserAgent(): string {\n        return navigator.userAgent;\n    }\n\n    public static  isIE() {\n        var ua = window.navigator.userAgent;\n\n        var msie = ua.indexOf('MSIE ');\n        if (msie > 0) {\n            // IE 10 or older => return version number\n            return true;\n        }\n\n        var trident = ua.indexOf('Trident/');\n        if (trident > 0) {\n            // IE 11 => return version number\n            var rv = ua.indexOf('rv:');\n            return true;\n        }\n\n        var edge = ua.indexOf('Edge/');\n        if (edge > 0) {\n           // Edge (IE 12+) => return version number\n           return true;\n        }\n\n        // other browser\n        return false;\n    }\n\n    public static isIOS() {\n        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n    }\n\n    public static isAndroid() {\n        return /(android)/i.test(navigator.userAgent);\n    }\n\n    public static isTouchDevice() {\n        return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n    }\n\n    public static appendChild(element: any, target: any) {\n        if (this.isElement(target))\n            target.appendChild(element);\n        else if (target.el && target.el.nativeElement)\n            target.el.nativeElement.appendChild(element);\n        else\n            throw 'Cannot append ' + target + ' to ' + element;\n    }\n\n    public static removeChild(element: any, target: any) {\n        if (this.isElement(target))\n            target.removeChild(element);\n        else if (target.el && target.el.nativeElement)\n            target.el.nativeElement.removeChild(element);\n        else\n            throw 'Cannot remove ' + element + ' from ' + target;\n    }\n\n    public static removeElement(element: Element) {\n        if (!('remove' in Element.prototype))\n            element.parentNode.removeChild(element);\n        else\n            element.remove();\n    }\n\n    public static isElement(obj: any) {\n        return (typeof HTMLElement === \"object\" ? obj instanceof HTMLElement :\n            obj && typeof obj === \"object\" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === \"string\"\n        );\n    }\n\n    public static calculateScrollbarWidth(el?: HTMLElement): number {\n        if (el) {\n            let style = getComputedStyle(el);\n            return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));\n        }\n        else {\n            if (this.calculatedScrollbarWidth !== null)\n                return this.calculatedScrollbarWidth;\n\n            let scrollDiv = document.createElement(\"div\");\n            scrollDiv.className = \"p-scrollbar-measure\";\n            document.body.appendChild(scrollDiv);\n\n            let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n            document.body.removeChild(scrollDiv);\n\n            this.calculatedScrollbarWidth = scrollbarWidth;\n\n            return scrollbarWidth;\n        }\n    }\n\n    public static calculateScrollbarHeight(): number {\n        if (this.calculatedScrollbarHeight !== null)\n            return this.calculatedScrollbarHeight;\n\n        let scrollDiv = document.createElement(\"div\");\n        scrollDiv.className = \"p-scrollbar-measure\";\n        document.body.appendChild(scrollDiv);\n\n        let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n        document.body.removeChild(scrollDiv);\n\n        this.calculatedScrollbarWidth = scrollbarHeight;\n\n        return scrollbarHeight;\n    }\n\n    public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n        (element as any)[methodName].apply(element, args);\n    }\n\n    public static clearSelection(): void {\n        if (window.getSelection) {\n            if (window.getSelection().empty) {\n                window.getSelection().empty();\n            } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n                window.getSelection().removeAllRanges();\n            }\n        }\n        else if (document['selection'] && document['selection'].empty) {\n            try {\n                document['selection'].empty();\n            } catch(error) {\n                //ignore IE bug\n            }\n        }\n    }\n\n    public static getBrowser() {\n        if (!this.browser) {\n            let matched = this.resolveUserAgent();\n            this.browser = {};\n\n            if (matched.browser) {\n                this.browser[matched.browser] = true;\n                this.browser['version'] = matched.version;\n            }\n\n            if (this.browser['chrome']) {\n                this.browser['webkit'] = true;\n            } else if (this.browser['webkit']) {\n                this.browser['safari'] = true;\n            }\n        }\n\n        return this.browser;\n    }\n\n    public static resolveUserAgent() {\n        let ua = navigator.userAgent.toLowerCase();\n        let match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n            /(msie) ([\\w.]+)/.exec(ua) ||\n            ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n            [];\n\n        return {\n            browser: match[1] || \"\",\n            version: match[2] || \"0\"\n        };\n    }\n\n    public static isInteger(value): boolean {\n        if (Number.isInteger) {\n            return Number.isInteger(value);\n        }\n        else {\n            return typeof value === \"number\" && isFinite(value) &&  Math.floor(value) === value;\n        }\n    }\n\n    public static isHidden(element: HTMLElement): boolean {\n        return element.offsetParent === null;\n    }\n\n    public static getFocusableElements(element:HTMLElement) {\n        let focusableElements = DomHandler.find(element,`button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n                [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]:not(.p-disabled))`\n            );\n\n            let visibleFocusableElements = [];\n            for(let focusableElement of focusableElements) {\n                if (getComputedStyle(focusableElement).display != \"none\" && getComputedStyle(focusableElement).visibility != \"hidden\")\n                    visibleFocusableElements.push(focusableElement);\n            }\n        return visibleFocusableElements;\n    }\n\n    static generateZIndex() {\n        this.zindex = this.zindex||999;\n        return ++this.zindex;\n    }\n}\n","import {DomHandler} from './domhandler';\n\nexport class ConnectedOverlayScrollHandler {\n\n    element: any;\n\n    listener: any;\n\n    scrollableParents: any;\n\n    constructor(element: any, listener: any = () => {}) {\n        this.element = element;\n        this.listener = listener;\n    }\n\n    bindScrollListener() {\n        this.scrollableParents = DomHandler.getScrollableParents(this.element);\n        for (let i = 0; i < this.scrollableParents.length; i++) {\n            this.scrollableParents[i].addEventListener('scroll', this.listener);\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollableParents) {\n            for (let i = 0; i < this.scrollableParents.length; i++) {\n                this.scrollableParents[i].removeEventListener('scroll', this.listener);\n            }\n        }\n    }\n\n    destroy() {\n        this.unbindScrollListener();\n        this.element = null;\n        this.listener = null;\n        this.scrollableParents = null;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,259 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class Draggable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragStart = new EventEmitter();
+        this.onDragEnd = new EventEmitter();
+        this.onDrag = new EventEmitter();
+    }
+    get pDraggableDisabled() {
+        return this._pDraggableDisabled;
+    }
+    set pDraggableDisabled(_pDraggableDisabled) {
+        this._pDraggableDisabled = _pDraggableDisabled;
+        if (this._pDraggableDisabled) {
+            this.unbindMouseListeners();
+        }
+        else {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.pDraggableDisabled) {
+            this.el.nativeElement.draggable = true;
+            this.bindMouseListeners();
+        }
+    }
+    bindDragListener() {
+        if (!this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragListener = this.drag.bind(this);
+                this.el.nativeElement.addEventListener('drag', this.dragListener);
+            });
+        }
+    }
+    unbindDragListener() {
+        if (this.dragListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('drag', this.dragListener);
+                this.dragListener = null;
+            });
+        }
+    }
+    bindMouseListeners() {
+        if (!this.mouseDownListener && !this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.mouseDownListener = this.mousedown.bind(this);
+                this.mouseUpListener = this.mouseup.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.addEventListener('mouseup', this.mouseUpListener);
+            });
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseDownListener && this.mouseUpListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+                this.el.nativeElement.removeEventListener('mouseup', this.mouseUpListener);
+                this.mouseDownListener = null;
+                this.mouseUpListener = null;
+            });
+        }
+    }
+    drag(event) {
+        this.onDrag.emit(event);
+    }
+    dragStart(event) {
+        if (this.allowDrag() && !this.pDraggableDisabled) {
+            if (this.dragEffect) {
+                event.dataTransfer.effectAllowed = this.dragEffect;
+            }
+            event.dataTransfer.setData('text', this.scope);
+            this.onDragStart.emit(event);
+            this.bindDragListener();
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    dragEnd(event) {
+        this.onDragEnd.emit(event);
+        this.unbindDragListener();
+    }
+    mousedown(event) {
+        this.handle = event.target;
+    }
+    mouseup(event) {
+        this.handle = null;
+    }
+    allowDrag() {
+        if (this.dragHandle && this.handle)
+            return DomHandler.matches(this.handle, this.dragHandle);
+        else
+            return true;
+    }
+    ngOnDestroy() {
+        this.unbindDragListener();
+        this.unbindMouseListeners();
+    }
+}
+Draggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Draggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Draggable, selector: "[pDraggable]", inputs: { scope: ["pDraggable", "scope"], dragEffect: "dragEffect", dragHandle: "dragHandle", pDraggableDisabled: "pDraggableDisabled" }, outputs: { onDragStart: "onDragStart", onDragEnd: "onDragEnd", onDrag: "onDrag" }, host: { listeners: { "dragstart": "dragStart($event)", "dragend": "dragEnd($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Draggable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDraggable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDraggable']
+            }], dragEffect: [{
+                type: Input
+            }], dragHandle: [{
+                type: Input
+            }], onDragStart: [{
+                type: Output
+            }], onDragEnd: [{
+                type: Output
+            }], onDrag: [{
+                type: Output
+            }], pDraggableDisabled: [{
+                type: Input
+            }], dragStart: [{
+                type: HostListener,
+                args: ['dragstart', ['$event']]
+            }], dragEnd: [{
+                type: HostListener,
+                args: ['dragend', ['$event']]
+            }] } });
+class Droppable {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.onDragEnter = new EventEmitter();
+        this.onDragLeave = new EventEmitter();
+        this.onDrop = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        if (!this.pDroppableDisabled) {
+            this.bindDragOverListener();
+        }
+    }
+    bindDragOverListener() {
+        if (!this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.dragOverListener = this.dragOver.bind(this);
+                this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            });
+        }
+    }
+    unbindDragOverListener() {
+        if (this.dragOverListener) {
+            this.zone.runOutsideAngular(() => {
+                this.el.nativeElement.removeEventListener('dragover', this.dragOverListener);
+                this.dragOverListener = null;
+            });
+        }
+    }
+    dragOver(event) {
+        event.preventDefault();
+    }
+    drop(event) {
+        if (this.allowDrop(event)) {
+            DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+            event.preventDefault();
+            this.onDrop.emit(event);
+        }
+    }
+    dragEnter(event) {
+        event.preventDefault();
+        if (this.dropEffect) {
+            event.dataTransfer.dropEffect = this.dropEffect;
+        }
+        DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragEnter.emit(event);
+    }
+    dragLeave(event) {
+        event.preventDefault();
+        DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');
+        this.onDragLeave.emit(event);
+    }
+    allowDrop(event) {
+        let dragScope = event.dataTransfer.getData('text');
+        if (typeof (this.scope) == "string" && dragScope == this.scope) {
+            return true;
+        }
+        else if (this.scope instanceof Array) {
+            for (let j = 0; j < this.scope.length; j++) {
+                if (dragScope == this.scope[j]) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    ngOnDestroy() {
+        this.unbindDragOverListener();
+    }
+}
+Droppable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+Droppable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Droppable, selector: "[pDroppable]", inputs: { scope: ["pDroppable", "scope"], pDroppableDisabled: "pDroppableDisabled", dropEffect: "dropEffect" }, outputs: { onDragEnter: "onDragEnter", onDragLeave: "onDragLeave", onDrop: "onDrop" }, host: { listeners: { "drop": "drop($event)", "dragenter": "dragEnter($event)", "dragleave": "dragLeave($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Droppable, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDroppable]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { scope: [{
+                type: Input,
+                args: ['pDroppable']
+            }], pDroppableDisabled: [{
+                type: Input
+            }], dropEffect: [{
+                type: Input
+            }], onDragEnter: [{
+                type: Output
+            }], onDragLeave: [{
+                type: Output
+            }], onDrop: [{
+                type: Output
+            }], drop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }], dragEnter: [{
+                type: HostListener,
+                args: ['dragenter', ['$event']]
+            }], dragLeave: [{
+                type: HostListener,
+                args: ['dragleave', ['$event']]
+            }] } });
+class DragDropModule {
+}
+DragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, declarations: [Draggable, Droppable], imports: [CommonModule], exports: [Draggable, Droppable] });
+DragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DragDropModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Draggable, Droppable],
+                    declarations: [Draggable, Droppable]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DragDropModule, Draggable, Droppable };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dragdrop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dragdrop.mjs","sources":["../../src/app/components/dragdrop/dragdrop.ts","../../src/app/components/dragdrop/primeng-dragdrop.ts"],"sourcesContent":["import {NgModule,Directive,OnDestroy,AfterViewInit,ElementRef,HostListener,Input,Output,EventEmitter,NgZone} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Directive({\n    selector: '[pDraggable]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Draggable implements AfterViewInit, OnDestroy {\n\n    @Input('pDraggable') scope: string;\n\n    @Input() dragEffect: string;\n\n    @Input() dragHandle: string;\n\n    @Output() onDragStart: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDrag: EventEmitter<any> = new EventEmitter();\n\n    handle: any;\n\n    dragListener: any;\n\n    mouseDownListener: any;\n\n    mouseUpListener: any;\n\n    _pDraggableDisabled: boolean;\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    @Input() get pDraggableDisabled(): boolean {\n        return this._pDraggableDisabled;\n    }\n    set pDraggableDisabled(_pDraggableDisabled:boolean) {\n        this._pDraggableDisabled = _pDraggableDisabled;\n\n        if (this._pDraggableDisabled) {\n            this.unbindMouseListeners();\n        }\n        else {\n            this.el.nativeElement.draggable = true;\n            this.bindMouseListeners();\n        }\n    }\n\n    ngAfterViewInit() {\n        if (!this.pDraggableDisabled) {\n            this.el.nativeElement.draggable = true;\n            this.bindMouseListeners();\n        }\n    }\n\n    bindDragListener() {\n        if (!this.dragListener) {\n            this.zone.runOutsideAngular(() => {\n                this.dragListener = this.drag.bind(this);\n                this.el.nativeElement.addEventListener('drag', this.dragListener);\n            });\n        }\n    }\n\n    unbindDragListener() {\n        if (this.dragListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('drag', this.dragListener);\n                this.dragListener = null;\n            });\n        }\n    }\n\n    bindMouseListeners() {\n        if (!this.mouseDownListener && !this.mouseUpListener) {\n            this.zone.runOutsideAngular(() => {\n                this.mouseDownListener = this.mousedown.bind(this);\n                this.mouseUpListener = this.mouseup.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n                this.el.nativeElement.addEventListener('mouseup', this.mouseUpListener);\n            });\n        }\n    }\n\n    unbindMouseListeners() {\n        if (this.mouseDownListener && this.mouseUpListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n                this.el.nativeElement.removeEventListener('mouseup', this.mouseUpListener);\n                this.mouseDownListener = null;\n                this.mouseUpListener = null;\n            });\n        }\n    }\n\n    drag(event) {\n        this.onDrag.emit(event);\n    }\n\n    @HostListener('dragstart', ['$event'])\n    dragStart(event) {\n        if (this.allowDrag() && !this.pDraggableDisabled) {\n            if (this.dragEffect) {\n                event.dataTransfer.effectAllowed = this.dragEffect;\n            }\n            event.dataTransfer.setData('text', this.scope);\n\n            this.onDragStart.emit(event);\n\n            this.bindDragListener();\n        }\n        else {\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('dragend', ['$event'])\n    dragEnd(event) {\n        this.onDragEnd.emit(event);\n        this.unbindDragListener();\n    }\n\n    mousedown(event) {\n        this.handle = event.target;\n    }\n\n    mouseup(event) {\n        this.handle = null;\n    }\n\n    allowDrag() : boolean {\n        if (this.dragHandle && this.handle)\n            return DomHandler.matches(this.handle, this.dragHandle);\n        else\n            return true;\n    }\n\n    ngOnDestroy() {\n        this.unbindDragListener();\n        this.unbindMouseListeners();\n    }\n\n}\n\n@Directive({\n    selector: '[pDroppable]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Droppable implements AfterViewInit, OnDestroy {\n\n    @Input('pDroppable') scope: string|string[];\n\n    @Input() pDroppableDisabled: boolean;\n\n    @Input() dropEffect: string;\n\n    @Output() onDragEnter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDragLeave: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDrop: EventEmitter<any> = new EventEmitter();\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    dragOverListener: any;\n\n    ngAfterViewInit() {\n        if (!this.pDroppableDisabled) {\n            this.bindDragOverListener();\n        }\n    }\n\n    bindDragOverListener() {\n        if (!this.dragOverListener) {\n            this.zone.runOutsideAngular(() => {\n                this.dragOverListener = this.dragOver.bind(this);\n                this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n            });\n        }\n    }\n\n    unbindDragOverListener() {\n        if (this.dragOverListener) {\n            this.zone.runOutsideAngular(() => {\n                this.el.nativeElement.removeEventListener('dragover', this.dragOverListener);\n                this.dragOverListener = null;\n            });\n        }\n    }\n\n    dragOver(event) {\n        event.preventDefault();\n    }\n\n    @HostListener('drop', ['$event'])\n    drop(event) {\n        if (this.allowDrop(event)) {\n            DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n            event.preventDefault();\n            this.onDrop.emit(event);\n        }\n    }\n\n    @HostListener('dragenter', ['$event'])\n    dragEnter(event) {\n        event.preventDefault();\n\n        if (this.dropEffect) {\n            event.dataTransfer.dropEffect = this.dropEffect;\n        }\n\n        DomHandler.addClass(this.el.nativeElement, 'p-draggable-enter');\n        this.onDragEnter.emit(event);\n    }\n\n    @HostListener('dragleave', ['$event'])\n    dragLeave(event) {\n        event.preventDefault();\n\n        DomHandler.removeClass(this.el.nativeElement, 'p-draggable-enter');\n        this.onDragLeave.emit(event);\n    }\n\n    allowDrop(event): boolean {\n        let dragScope = event.dataTransfer.getData('text');\n        if (typeof (this.scope) == \"string\" && dragScope == this.scope) {\n            return true;\n        }\n        else if (this.scope instanceof Array) {\n            for(let j = 0; j < this.scope.length; j++) {\n                if (dragScope == this.scope[j]) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n\n    ngOnDestroy() {\n        this.unbindDragOverListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Draggable,Droppable],\n    declarations: [Draggable,Droppable]\n})\nexport class DragDropModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1207 @@
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const DROPDOWN_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Dropdown),
+    multi: true
+};
+class DropdownItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+DropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+DropdownItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DropdownItem, selector: "p-dropdownItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", visible: "visible", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-dropdownItem',
+                    template: `
+        <li (click)="onOptionClick($event)" role="option" pRipple
+            [attr.aria-label]="label" [attr.aria-selected]="selected"
+            [ngStyle]="{'height': itemSize + 'px'}" [id]="selected ? 'p-highlighted-option':''"
+            [ngClass]="{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}">
+            <span *ngIf="!template">{{label||'empty'}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }] } });
+class Dropdown {
+    constructor(el, renderer, cd, zone, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.scrollHeight = '200px';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.autoDisplayFirst = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.viewPortOffsetTop = 0;
+        this.id = UniqueComponentId();
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(_disabled) {
+        if (_disabled) {
+            this.focused = false;
+            if (this.overlayVisible)
+                this.hide();
+        }
+        this._disabled = _disabled;
+        if (!this.cd.destroyed) {
+            this.cd.detectChanges();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'selectedItem':
+                    this.selectedItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.optionsToDisplay = this.options;
+        this.updateSelectedOption(null);
+        this.labelId = this.id + '_label';
+        this.listId = this.id + '_list';
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.optionsToDisplay = this._options;
+        this.updateSelectedOption(this.value);
+        this.optionsChanged = true;
+        if (this._filterValue && this._filterValue.length) {
+            this.activateFilter();
+        }
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngAfterViewInit() {
+        if (this.editable) {
+            this.updateEditableLabel();
+        }
+    }
+    get label() {
+        return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    get filled() {
+        return this.value || this.value != null || this.value != undefined;
+    }
+    updateEditableLabel() {
+        if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {
+            this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '');
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    onItemClick(event) {
+        const option = event.option;
+        if (!this.isOptionDisabled(option)) {
+            this.selectItem(event, option);
+            this.accessibleViewChild.nativeElement.focus();
+        }
+        setTimeout(() => {
+            this.hide();
+        }, 150);
+    }
+    selectItem(event, option) {
+        if (this.selectedOption != option) {
+            this.selectedOption = option;
+            this.value = this.getOptionValue(option);
+            this.onModelChange(this.value);
+            this.updateEditableLabel();
+            this.onChange.emit({
+                originalEvent: event.originalEvent,
+                value: this.value
+            });
+            if (this.virtualScroll) {
+                setTimeout(() => {
+                    this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;
+                }, 1);
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.optionsChanged && this.overlayVisible) {
+            this.optionsChanged = false;
+            if (this.virtualScroll) {
+                this.updateVirtualScrollSelectedIndex(true);
+            }
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.alignOverlay();
+                }, 1);
+            });
+        }
+        if (this.selectedOptionUpdated && this.itemsWrapper) {
+            if (this.virtualScroll && this.viewPort) {
+                let range = this.viewPort.getRenderedRange();
+                this.updateVirtualScrollSelectedIndex(false);
+                if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {
+                    this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+                }
+            }
+            let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');
+            if (selectedItem) {
+                DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));
+            }
+            this.selectedOptionUpdated = false;
+        }
+    }
+    writeValue(value) {
+        if (this.filter) {
+            this.resetFilter();
+        }
+        this.value = value;
+        this.updateSelectedOption(value);
+        this.updateEditableLabel();
+        this.cd.markForCheck();
+    }
+    resetFilter() {
+        this._filterValue = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+        this.optionsToDisplay = this.options;
+    }
+    updateSelectedOption(val) {
+        this.selectedOption = this.findOption(val, this.optionsToDisplay);
+        if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {
+            this.selectedOption = this.optionsToDisplay[0];
+            this.value = this.getOptionValue(this.selectedOption);
+            this.onModelChange(this.value);
+        }
+        this.selectedOptionUpdated = true;
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onMouseclick(event) {
+        if (this.disabled || this.readonly || this.isInputClick(event)) {
+            return;
+        }
+        this.onClick.emit(event);
+        this.accessibleViewChild.nativeElement.focus();
+        if (this.overlayVisible)
+            this.hide();
+        else
+            this.show();
+        this.cd.detectChanges();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    isInputClick(event) {
+        return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||
+            event.target.isSameNode(this.accessibleViewChild.nativeElement) ||
+            (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));
+    }
+    isEmpty() {
+        return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);
+    }
+    onEditableInputClick() {
+        this.bindDocumentClickListener();
+    }
+    onEditableInputFocus(event) {
+        this.focused = true;
+        this.hide();
+        this.onFocus.emit(event);
+    }
+    onEditableInputChange(event) {
+        this.value = event.target.value;
+        this.updateSelectedOption(this.value);
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';
+                this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.options && this.options.length) {
+                    if (!this.virtualScroll) {
+                        let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');
+                        if (selectedListItem) {
+                            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'start' });
+                        }
+                    }
+                }
+                if (this.filterViewChild && this.filterViewChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterViewChild.nativeElement.focus();
+                    }
+                }
+                this.onShow.emit(event);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit(event);
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    scrollToSelectedVirtualScrollElement() {
+        if (!this.virtualAutoScrolled) {
+            if (this.viewPortOffsetTop) {
+                this.viewPort.scrollToOffset(this.viewPortOffsetTop);
+            }
+            else if (this.virtualScrollSelectedIndex > -1) {
+                this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);
+            }
+        }
+        this.virtualAutoScrolled = true;
+    }
+    updateVirtualScrollSelectedIndex(resetOffset) {
+        if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {
+            if (resetOffset) {
+                this.viewPortOffsetTop = 0;
+            }
+            this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        if (this.filter && this.resetFilterOnHide) {
+            this.resetFilter();
+        }
+        if (this.virtualScroll) {
+            this.virtualAutoScrolled = false;
+        }
+        this.cd.markForCheck();
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onBlur.emit(event);
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    findPrevEnabledOption(index) {
+        let prevEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index - 1); 0 <= i; i--) {
+                let option = this.optionsToDisplay[i];
+                if (option.disabled) {
+                    continue;
+                }
+                else {
+                    prevEnabledOption = option;
+                    break;
+                }
+            }
+            if (!prevEnabledOption) {
+                for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        prevEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return prevEnabledOption;
+    }
+    findNextEnabledOption(index) {
+        let nextEnabledOption;
+        if (this.optionsToDisplay && this.optionsToDisplay.length) {
+            for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {
+                let option = this.optionsToDisplay[i];
+                if (this.isOptionDisabled(option)) {
+                    continue;
+                }
+                else {
+                    nextEnabledOption = option;
+                    break;
+                }
+            }
+            if (!nextEnabledOption) {
+                for (let i = 0; i < index; i++) {
+                    let option = this.optionsToDisplay[i];
+                    if (this.isOptionDisabled(option)) {
+                        continue;
+                    }
+                    else {
+                        nextEnabledOption = option;
+                        break;
+                    }
+                }
+            }
+        }
+        return nextEnabledOption;
+    }
+    onKeydown(event, search) {
+        if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {
+            return;
+        }
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                }
+                else {
+                    if (this.group) {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        if (selectedItemIndex !== -1) {
+                            let nextItemIndex = selectedItemIndex.itemIndex + 1;
+                            if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);
+                                this.selectedOptionUpdated = true;
+                            }
+                            else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                        else {
+                            if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {
+                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);
+                            }
+                        }
+                    }
+                    else {
+                        let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                        let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);
+                        if (nextEnabledOption) {
+                            this.selectItem(event, nextEnabledOption);
+                            this.selectedOptionUpdated = true;
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                if (this.group) {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    if (selectedItemIndex !== -1) {
+                        let prevItemIndex = selectedItemIndex.itemIndex - 1;
+                        if (prevItemIndex >= 0) {
+                            this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);
+                            this.selectedOptionUpdated = true;
+                        }
+                        else if (prevItemIndex < 0) {
+                            let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];
+                            if (prevGroup) {
+                                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);
+                                this.selectedOptionUpdated = true;
+                            }
+                        }
+                    }
+                }
+                else {
+                    let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+                    let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);
+                    if (prevEnabledOption) {
+                        this.selectItem(event, prevEnabledOption);
+                        this.selectedOptionUpdated = true;
+                    }
+                }
+                event.preventDefault();
+                break;
+            //space
+            case 32:
+                if (search) {
+                    if (!this.overlayVisible) {
+                        this.show();
+                    }
+                    else {
+                        this.hide();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {
+                    this.hide();
+                }
+                else if (!this.overlayVisible) {
+                    this.show();
+                }
+                event.preventDefault();
+                break;
+            //escape and tab
+            case 27:
+            case 9:
+                this.hide();
+                break;
+            //search item based on keyboard input
+            default:
+                if (search && !event.metaKey) {
+                    this.search(event);
+                }
+                break;
+        }
+    }
+    search(event) {
+        if (this.searchTimeout) {
+            clearTimeout(this.searchTimeout);
+        }
+        const char = event.key;
+        this.previousSearchChar = this.currentSearchChar;
+        this.currentSearchChar = char;
+        if (this.previousSearchChar === this.currentSearchChar)
+            this.searchValue = this.currentSearchChar;
+        else
+            this.searchValue = this.searchValue ? this.searchValue + char : char;
+        let newOption;
+        if (this.group) {
+            let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : { groupIndex: 0, itemIndex: 0 };
+            newOption = this.searchOptionWithinGroup(searchIndex);
+        }
+        else {
+            let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;
+            newOption = this.searchOption(++searchIndex);
+        }
+        if (newOption && !this.isOptionDisabled(newOption)) {
+            this.selectItem(event, newOption);
+            this.selectedOptionUpdated = true;
+        }
+        this.searchTimeout = setTimeout(() => {
+            this.searchValue = null;
+        }, 250);
+    }
+    searchOption(index) {
+        let option;
+        if (this.searchValue) {
+            option = this.searchOptionInRange(index, this.optionsToDisplay.length);
+            if (!option) {
+                option = this.searchOptionInRange(0, index);
+            }
+        }
+        return option;
+    }
+    searchOptionInRange(start, end) {
+        for (let i = start; i < end; i++) {
+            let opt = this.optionsToDisplay[i];
+            if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                return opt;
+            }
+        }
+        return null;
+    }
+    searchOptionWithinGroup(index) {
+        let option;
+        if (this.searchValue) {
+            for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {
+                for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {
+                    let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                    if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                        return opt;
+                    }
+                }
+            }
+            if (!option) {
+                for (let i = 0; i <= index.groupIndex; i++) {
+                    for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {
+                        let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];
+                        if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {
+                            return opt;
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+    findOptionIndex(val, opts) {
+        let index = -1;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    findOptionGroupIndex(val, opts) {
+        let groupIndex, itemIndex;
+        if (opts) {
+            for (let i = 0; i < opts.length; i++) {
+                groupIndex = i;
+                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));
+                if (itemIndex !== -1) {
+                    break;
+                }
+            }
+        }
+        if (itemIndex !== -1) {
+            return { groupIndex: groupIndex, itemIndex: itemIndex };
+        }
+        else {
+            return -1;
+        }
+    }
+    findOption(val, opts, inGroup) {
+        if (this.group && !inGroup) {
+            let opt;
+            if (opts && opts.length) {
+                for (let optgroup of opts) {
+                    opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);
+                    if (opt) {
+                        break;
+                    }
+                }
+            }
+            return opt;
+        }
+        else {
+            let index = this.findOptionIndex(val, opts);
+            return (index != -1) ? opts[index] : null;
+        }
+    }
+    onFilterInputChange(event) {
+        let inputValue = event.target.value;
+        if (inputValue && inputValue.length) {
+            this._filterValue = inputValue;
+            this.activateFilter();
+        }
+        else {
+            this._filterValue = null;
+            this.optionsToDisplay = this.options;
+        }
+        this.optionsChanged = true;
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+    }
+    activateFilter() {
+        let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+        if (this.options && this.options.length) {
+            if (this.group) {
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this.optionsToDisplay = filteredGroups;
+            }
+            else {
+                this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+            }
+            this.optionsChanged = true;
+        }
+    }
+    applyFocus() {
+        if (this.editable)
+            DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();
+        else
+            DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();
+    }
+    focus() {
+        this.applyFocus();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                    this.unbindDocumentClickListener();
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (this.overlayVisible && !DomHandler.isTouchDevice()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event) => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    clear(event) {
+        this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+        this.updateSelectedOption(this.value);
+        this.updateEditableLabel();
+        this.onClear.emit(event);
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.itemsWrapper = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Dropdown, selector: "p-dropdown", inputs: { scrollHeight: "scrollHeight", filter: "filter", name: "name", style: "style", panelStyle: "panelStyle", styleClass: "styleClass", panelStyleClass: "panelStyleClass", readonly: "readonly", required: "required", editable: "editable", appendTo: "appendTo", tabindex: "tabindex", placeholder: "placeholder", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", inputId: "inputId", selectId: "selectId", dataKey: "dataKey", filterBy: "filterBy", autofocus: "autofocus", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", autoDisplayFirst: "autoDisplayFirst", group: "group", showClear: "showClear", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", virtualScroll: "virtualScroll", itemSize: "itemSize", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", ariaLabelledBy: "ariaLabelledBy", filterMatchMode: "filterMatchMode", maxlength: "maxlength", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", disabled: "disabled", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onShow: "onShow", onHide: "onHide", onClear: "onClear" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [DROPDOWN_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }, { propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "editableInputViewChild", first: true, predicate: ["editableInput"], descendants: true }], ngImport: i0, template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"], components: [{ type: DropdownItem, selector: "p-dropdownItem", inputs: ["option", "selected", "label", "disabled", "visible", "itemSize", "template"], outputs: ["onClick"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Dropdown, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dropdown', template: `
+         <div #container [ngClass]="{'p-dropdown p-component':true,
+            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}"
+            (click)="onMouseclick($event)" [ngStyle]="style" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #in [attr.id]="inputId" type="text" readonly (focus)="onInputFocus($event)" aria-haspopup="listbox" [attr.placeholder]="placeholder"
+                    aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy" (blur)="onInputBlur($event)" (keydown)="onKeydown($event, true)"
+                    [disabled]="disabled" [attr.tabindex]="tabindex" [attr.autofocus]="autofocus" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId" role="listbox">
+            </div>
+            <span [attr.id]="labelId" [ngClass]="{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}" *ngIf="!editable && (label != null)" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <ng-container *ngIf="!selectedItemTemplate">{{label||'empty'}}</ng-container>
+                <ng-container *ngTemplateOutlet="selectedItemTemplate; context: {$implicit: selectedOption}"></ng-container>
+            </span>
+            <span [ngClass]="{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}" *ngIf="!editable && (label == null)">{{placeholder||'empty'}}</span>
+            <input #editableInput type="text" [attr.maxlength]="maxlength" class="p-dropdown-label p-inputtext" *ngIf="editable" [disabled]="disabled" [attr.placeholder]="placeholder"
+                aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible" (click)="onEditableInputClick()" (input)="onEditableInputChange($event)" (focus)="onEditableInputFocus($event)" (blur)="onInputBlur($event)">
+            <i class="p-dropdown-clear-icon pi pi-times" (click)="clear($event)" *ngIf="value != null && showClear && !disabled"></i>
+            <div class="p-dropdown-trigger" role="button" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible">
+                <span class="p-dropdown-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="'p-dropdown-panel p-component'" (click)="onOverlayClick($event)" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.start)="onOverlayAnimationEnd($event)"onOverlayAnimationEnd [ngStyle]="panelStyle" [class]="panelStyleClass">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-dropdown-header" *ngIf="filter" >
+                    <div class="p-dropdown-filter-container" (click)="$event.stopPropagation()">
+                        <input #filter type="text" autocomplete="off" [value]="filterValue||''" class="p-dropdown-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                        (keydown.enter)="$event.preventDefault()" (keydown)="onKeydown($event, false)" (input)="onFilterInputChange($event)" [attr.aria-label]="ariaFilterLabel" [attr.aria-activedescendant]="overlayVisible ? 'p-highlighted-option' : labelId">
+                        <span class="p-dropdown-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <div class="p-dropdown-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul [attr.id]="listId" class="p-dropdown-items" [ngClass]="{'p-dropdown-virtualscroll': virtualScroll}" role="listbox">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToDisplay">
+                                <li class="p-dropdown-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-options let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="options">
+                                    <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                    (onClick)="onItemClick($event)"
+                                                    [template]="itemTemplate"></p-dropdownItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport (scrolledIndexChange)="scrollToSelectedVirtualScrollElement()" #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && optionsToDisplay && optionsToDisplay.length">
+                                    <ng-container *cdkVirtualFor="let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-dropdownItem [option]="option" [selected]="selectedOption == option" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)"
+                                                                   (onClick)="onItemClick($event)"
+                                                                   [template]="itemTemplate"></p-dropdownItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                        </ng-template>
+                        <li *ngIf="filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                {{emptyFilterMessageLabel}}
+                            </ng-container>
+                            <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="!filterValue && isEmpty()" class="p-dropdown-empty-message">
+                            <ng-container *ngIf="!emptyTemplate; else empty">
+                                {{emptyMessageLabel}}
+                            </ng-container>
+                            <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                        </li>
+                    </ul>
+                </div>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, providers: [DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-dropdown{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-dropdown-clear-icon{position:absolute;top:50%;margin-top:-.5rem}.p-dropdown-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-dropdown-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;text-overflow:ellipsis;cursor:pointer}.p-dropdown-label-empty{overflow:hidden;visibility:hidden}input.p-dropdown-label{cursor:default}.p-dropdown .p-dropdown-panel{min-width:100%}.p-dropdown-panel{position:absolute;top:0;left:0}.p-dropdown-items-wrapper{overflow:auto}.p-dropdown-item{cursor:pointer;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-dropdown-items{margin:0;padding:0;list-style-type:none}.p-dropdown-filter{width:100%}.p-dropdown-filter-container{position:relative}.p-dropdown-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-dropdown{display:flex}.p-fluid .p-dropdown .p-dropdown-label{width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { scrollHeight: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], editable: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], selectId: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], autofocus: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], autoDisplayFirst: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], showClear: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], viewPort: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], editableInputViewChild: [{
+                type: ViewChild,
+                args: ['editableInput']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], disabled: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class DropdownModule {
+}
+DropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, declarations: [Dropdown, DropdownItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [Dropdown, SharedModule, ScrollingModule] });
+DropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DropdownModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [Dropdown, SharedModule, ScrollingModule],
+                    declarations: [Dropdown, DropdownItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DROPDOWN_VALUE_ACCESSOR, Dropdown, DropdownItem, DropdownModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dropdown.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dropdown.mjs","sources":["../../src/app/components/dropdown/dropdown.ts","../../src/app/components/dropdown/primeng-dropdown.ts"],"sourcesContent":["import {ScrollingModule, CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {NgModule,Component,ElementRef,OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,Input,Output,Renderer2,EventEmitter,ContentChildren,\n        QueryList,ViewChild,TemplateRef,forwardRef,ChangeDetectorRef,NgZone,ViewRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {OverlayService, PrimeNGConfig, SelectItem, TranslationKeys} from 'primeng/api';\nimport {SharedModule,PrimeTemplate, FilterService} from 'primeng/api';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {ObjectUtils,UniqueComponentId,ZIndexUtils} from 'primeng/utils';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {RippleModule} from 'primeng/ripple';\n\nexport const DROPDOWN_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Dropdown),\n  multi: true\n};\n\n@Component({\n    selector: 'p-dropdownItem',\n    template: `\n        <li (click)=\"onOptionClick($event)\" role=\"option\" pRipple\n            [attr.aria-label]=\"label\" [attr.aria-selected]=\"selected\"\n            [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"selected ? 'p-highlighted-option':''\"\n            [ngClass]=\"{'p-dropdown-item':true, 'p-highlight': selected, 'p-disabled': disabled}\">\n            <span *ngIf=\"!template\">{{label||'empty'}}</span>\n            <ng-container *ngTemplateOutlet=\"template; context: {$implicit: option}\"></ng-container>\n        </li>\n    `,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DropdownItem {\n\n    @Input() option: SelectItem;\n\n    @Input() selected: boolean;\n\n    @Input() label: string;\n\n    @Input() disabled: boolean;\n\n    @Input() visible: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    onOptionClick(event: Event) {\n        this.onClick.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n}\n\n@Component({\n    selector: 'p-dropdown',\n    template: `\n         <div #container [ngClass]=\"{'p-dropdown p-component':true,\n            'p-disabled':disabled, 'p-dropdown-open':overlayVisible, 'p-focus':focused, 'p-dropdown-clearable': showClear && !disabled}\"\n            (click)=\"onMouseclick($event)\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #in [attr.id]=\"inputId\" type=\"text\" readonly (focus)=\"onInputFocus($event)\" aria-haspopup=\"listbox\" [attr.placeholder]=\"placeholder\"\n                    aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\" (blur)=\"onInputBlur($event)\" (keydown)=\"onKeydown($event, true)\"\n                    [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" [attr.autofocus]=\"autofocus\" [attr.aria-activedescendant]=\"overlayVisible ? 'p-highlighted-option' : labelId\" role=\"listbox\">\n            </div>\n            <span [attr.id]=\"labelId\" [ngClass]=\"{'p-dropdown-label p-inputtext':true,'p-dropdown-label-empty':(label == null || label.length === 0)}\" *ngIf=\"!editable && (label != null)\" [pTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition\" [positionStyle]=\"tooltipPositionStyle\" [tooltipStyleClass]=\"tooltipStyleClass\">\n                <ng-container *ngIf=\"!selectedItemTemplate\">{{label||'empty'}}</ng-container>\n                <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: selectedOption}\"></ng-container>\n            </span>\n            <span [ngClass]=\"{'p-dropdown-label p-inputtext p-placeholder':true,'p-dropdown-label-empty': (placeholder == null || placeholder.length === 0)}\" *ngIf=\"!editable && (label == null)\">{{placeholder||'empty'}}</span>\n            <input #editableInput type=\"text\" [attr.maxlength]=\"maxlength\" class=\"p-dropdown-label p-inputtext\" *ngIf=\"editable\" [disabled]=\"disabled\" [attr.placeholder]=\"placeholder\"\n                aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\" (click)=\"onEditableInputClick()\" (input)=\"onEditableInputChange($event)\" (focus)=\"onEditableInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n            <i class=\"p-dropdown-clear-icon pi pi-times\" (click)=\"clear($event)\" *ngIf=\"value != null && showClear && !disabled\"></i>\n            <div class=\"p-dropdown-trigger\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\">\n                <span class=\"p-dropdown-trigger-icon\" [ngClass]=\"dropdownIcon\"></span>\n            </div>\n            <div *ngIf=\"overlayVisible\" [ngClass]=\"'p-dropdown-panel p-component'\" (click)=\"onOverlayClick($event)\" [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.start)=\"onOverlayAnimationEnd($event)\"onOverlayAnimationEnd [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <div class=\"p-dropdown-header\" *ngIf=\"filter\" >\n                    <div class=\"p-dropdown-filter-container\" (click)=\"$event.stopPropagation()\">\n                        <input #filter type=\"text\" autocomplete=\"off\" [value]=\"filterValue||''\" class=\"p-dropdown-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n                        (keydown.enter)=\"$event.preventDefault()\" (keydown)=\"onKeydown($event, false)\" (input)=\"onFilterInputChange($event)\" [attr.aria-label]=\"ariaFilterLabel\" [attr.aria-activedescendant]=\"overlayVisible ? 'p-highlighted-option' : labelId\">\n                        <span class=\"p-dropdown-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <div class=\"p-dropdown-items-wrapper\" [style.max-height]=\"virtualScroll ? 'auto' : (scrollHeight||'auto')\">\n                    <ul [attr.id]=\"listId\" class=\"p-dropdown-items\" [ngClass]=\"{'p-dropdown-virtualscroll': virtualScroll}\" role=\"listbox\">\n                        <ng-container *ngIf=\"group\">\n                            <ng-template ngFor let-optgroup [ngForOf]=\"optionsToDisplay\">\n                                <li class=\"p-dropdown-item-group\">\n                                    <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                                </li>\n                                <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption}\"></ng-container>\n                            </ng-template>\n                        </ng-container>\n                        <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToDisplay, selectedOption: selectedOption}\"></ng-container>\n                        </ng-container>\n                        <ng-template #itemslist let-options let-selectedOption=\"selectedOption\">\n                            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                                <ng-template ngFor let-option let-i=\"index\" [ngForOf]=\"options\">\n                                    <p-dropdownItem [option]=\"option\" [selected]=\"selectedOption == option\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\"\n                                                    (onClick)=\"onItemClick($event)\"\n                                                    [template]=\"itemTemplate\"></p-dropdownItem>\n                                </ng-template>\n                            </ng-container>\n                            <ng-template #virtualScrollList>\n                                <cdk-virtual-scroll-viewport (scrolledIndexChange)=\"scrollToSelectedVirtualScrollElement()\" #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && optionsToDisplay && optionsToDisplay.length\">\n                                    <ng-container *cdkVirtualFor=\"let option of options; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                        <p-dropdownItem [option]=\"option\" [selected]=\"selectedOption == option\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\"\n                                                                   (onClick)=\"onItemClick($event)\"\n                                                                   [template]=\"itemTemplate\"></p-dropdownItem>\n                                    </ng-container>\n                                </cdk-virtual-scroll-viewport>\n                            </ng-template>\n                        </ng-template>\n                        <li *ngIf=\"filterValue && isEmpty()\" class=\"p-dropdown-empty-message\">\n                            <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                                {{emptyFilterMessageLabel}}\n                            </ng-container>\n                            <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                        </li>\n                        <li *ngIf=\"!filterValue && isEmpty()\" class=\"p-dropdown-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ul>\n                </div>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n            ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    providers: [DROPDOWN_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./dropdown.css']\n})\nexport class Dropdown implements OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,ControlValueAccessor {\n\n    @Input() scrollHeight: string = '200px';\n\n    @Input() filter: boolean;\n\n    @Input() name: string;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() readonly: boolean;\n\n    @Input() required: boolean;\n\n    @Input() editable: boolean;\n\n    @Input() appendTo: any;\n\n    @Input() tabindex: number;\n\n    @Input() placeholder: string;\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() inputId: string;\n\n    @Input() selectId: string;\n\n    @Input() dataKey: string;\n\n    @Input() filterBy: string;\n\n    @Input() autofocus: boolean;\n\n    @Input() resetFilterOnHide: boolean = false;\n\n    @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() autoDisplayFirst: boolean = true;\n\n    @Input() group: boolean;\n\n    @Input() showClear: boolean;\n\n    @Input() emptyFilterMessage: string = '';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() maxlength: number;\n\n    @Input() tooltip: string = '';\n\n    @Input() tooltipPosition: string = 'right';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() autofocusFilter: boolean = true;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('filter') filterViewChild: ElementRef;\n\n    @ViewChild('in') accessibleViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\n\n    @ViewChild('editableInput') editableInputViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    private _disabled: boolean;\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    };\n\n    set disabled(_disabled: boolean) {\n        if (_disabled) {\n            this.focused = false;\n\n            if (this.overlayVisible)\n                this.hide();\n        }\n\n        this._disabled = _disabled;\n        if (!(this.cd as ViewRef).destroyed) {\n            this.cd.detectChanges();\n        }\n    }\n\n    overlay: HTMLDivElement;\n\n    itemsWrapper: HTMLDivElement;\n\n    itemTemplate: TemplateRef<any>;\n\n    groupTemplate: TemplateRef<any>;\n\n    selectedItemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    emptyFilterTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    selectedOption: any;\n\n    _options: any[];\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    optionsToDisplay: any[];\n\n    hover: boolean;\n\n    focused: boolean;\n\n    overlayVisible: boolean;\n\n    documentClickListener: any;\n\n    scrollHandler: any;\n\n    optionsChanged: boolean;\n\n    panel: HTMLDivElement;\n\n    dimensionsUpdated: boolean;\n\n    hoveredItem: any;\n\n    selectedOptionUpdated: boolean;\n\n    _filterValue: string;\n\n    searchValue: string;\n\n    searchIndex: number;\n\n    searchTimeout: any;\n\n    previousSearchChar: string;\n\n    currentSearchChar: string;\n\n    documentResizeListener: any;\n\n    virtualAutoScrolled: boolean;\n\n    virtualScrollSelectedIndex: number;\n\n    viewPortOffsetTop: number = 0;\n\n    preventModelTouched: boolean;\n\n    id: string = UniqueComponentId();\n\n    labelId: string;\n\n    listId: string;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public zone: NgZone, public filterService: FilterService, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'selectedItem':\n                    this.selectedItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.optionsToDisplay = this.options;\n        this.updateSelectedOption(null);\n        this.labelId = this.id + '_label';\n        this.listId = this.id + '_list';\n    }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n        this.optionsToDisplay = this._options;\n        this.updateSelectedOption(this.value);\n        this.optionsChanged = true;\n\n        if (this._filterValue && this._filterValue.length) {\n            this.activateFilter();\n        }\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    ngAfterViewInit() {\n        if (this.editable) {\n            this.updateEditableLabel();\n        }\n    }\n\n    get label(): string {\n        return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    get filled() {\n        return this.value || this.value != null || this.value != undefined;\n    }\n\n    updateEditableLabel(): void {\n        if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {\n            this.editableInputViewChild.nativeElement.value = (this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value||'');\n        }\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    onItemClick(event) {\n        const option = event.option;\n\n        if (!this.isOptionDisabled(option)) {\n            this.selectItem(event, option);\n            this.accessibleViewChild.nativeElement.focus();\n        }\n\n        setTimeout(() => {\n            this.hide();\n        }, 150);\n    }\n\n    selectItem(event, option) {\n        if (this.selectedOption != option) {\n            this.selectedOption = option;\n            this.value = this.getOptionValue(option);\n\n            this.onModelChange(this.value);\n            this.updateEditableLabel();\n            this.onChange.emit({\n                originalEvent: event.originalEvent,\n                value: this.value\n            });\n\n            if (this.virtualScroll) {\n                setTimeout(() => {\n                    this.viewPortOffsetTop = this.viewPort ? this.viewPort.measureScrollOffset() : 0;\n                }, 1);\n            }\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (this.optionsChanged && this.overlayVisible) {\n            this.optionsChanged = false;\n\n            if (this.virtualScroll) {\n                this.updateVirtualScrollSelectedIndex(true);\n            }\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.alignOverlay();\n                }, 1);\n            });\n        }\n\n        if (this.selectedOptionUpdated && this.itemsWrapper) {\n            if (this.virtualScroll && this.viewPort) {\n                let range = this.viewPort.getRenderedRange();\n                this.updateVirtualScrollSelectedIndex(false);\n\n                if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n                    this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n                }\n            }\n\n            let selectedItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n            if (selectedItem) {\n                DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlay, 'li.p-highlight'));\n            }\n            this.selectedOptionUpdated = false;\n        }\n    }\n\n    writeValue(value: any): void {\n        if (this.filter) {\n            this.resetFilter();\n        }\n\n        this.value = value;\n        this.updateSelectedOption(value);\n        this.updateEditableLabel();\n        this.cd.markForCheck();\n    }\n\n    resetFilter(): void {\n        this._filterValue = null;\n\n        if (this.filterViewChild && this.filterViewChild.nativeElement) {\n            this.filterViewChild.nativeElement.value = '';\n        }\n\n        this.optionsToDisplay = this.options;\n    }\n\n    updateSelectedOption(val: any): void {\n        this.selectedOption = this.findOption(val, this.optionsToDisplay);\n\n        if (this.autoDisplayFirst && !this.placeholder && !this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length && !this.editable) {\n            this.selectedOption = this.optionsToDisplay[0];\n            this.value = this.getOptionValue(this.selectedOption);\n            this.onModelChange(this.value);\n        }\n\n        this.selectedOptionUpdated = true;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onMouseclick(event) {\n        if (this.disabled || this.readonly || this.isInputClick(event)) {\n            return;\n        }\n\n        this.onClick.emit(event);\n        this.accessibleViewChild.nativeElement.focus();\n\n        if (this.overlayVisible)\n            this.hide();\n        else\n            this.show();\n\n        this.cd.detectChanges();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    isInputClick(event): boolean {\n        return DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||\n            event.target.isSameNode(this.accessibleViewChild.nativeElement) ||\n            (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement));\n    }\n\n    isOutsideClicked(event: Event): boolean {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(<Node> event.target)));\n    }\n\n    isEmpty() {\n        return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);\n    }\n\n    onEditableInputClick() {\n        this.bindDocumentClickListener();\n    }\n\n    onEditableInputFocus(event) {\n        this.focused = true;\n        this.hide();\n        this.onFocus.emit(event);\n    }\n\n    onEditableInputChange(event) {\n        this.value = event.target.value;\n        this.updateSelectedOption(this.value);\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                let itemsWrapperSelector = this.virtualScroll ? '.cdk-virtual-scroll-viewport' : '.p-dropdown-items-wrapper';\n                this.itemsWrapper = DomHandler.findSingle(this.overlay, itemsWrapperSelector);\n                this.appendOverlay();\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n                }\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                if (this.options && this.options.length) {\n                    if (!this.virtualScroll) {\n                        let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');\n\n                        if (selectedListItem) {\n                            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'start' });\n                        }\n                    }\n                }\n\n                if (this.filterViewChild && this.filterViewChild.nativeElement) {\n                    this.preventModelTouched = true;\n\n                    if (this.autofocusFilter) {\n                        this.filterViewChild.nativeElement.focus();\n                    }\n                }\n\n                this.onShow.emit(event);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit(event);\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    scrollToSelectedVirtualScrollElement() {\n        if (!this.virtualAutoScrolled) {\n            if (this.viewPortOffsetTop) {\n                this.viewPort.scrollToOffset(this.viewPortOffsetTop);\n            }\n            else if (this.virtualScrollSelectedIndex > -1) {\n                this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n            }\n        }\n\n        this.virtualAutoScrolled = true;\n    }\n\n    updateVirtualScrollSelectedIndex(resetOffset) {\n        if (this.selectedOption && this.optionsToDisplay && this.optionsToDisplay.length) {\n            if (resetOffset) {\n                this.viewPortOffsetTop = 0;\n            }\n\n            this.virtualScrollSelectedIndex = this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay);\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';\n            }\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n\n        if (this.filter && this.resetFilterOnHide) {\n            this.resetFilter();\n        }\n\n        if (this.virtualScroll) {\n            this.virtualAutoScrolled = false;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    alignOverlay() {\n        if (this.overlay) {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);\n        }\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n        this.onBlur.emit(event);\n\n        if (!this.preventModelTouched) {\n            this.onModelTouched();\n        }\n        this.preventModelTouched = false;\n    }\n\n    findPrevEnabledOption(index) {\n        let prevEnabledOption;\n\n        if (this.optionsToDisplay && this.optionsToDisplay.length) {\n            for (let i = (index - 1); 0 <= i; i--) {\n                let option = this.optionsToDisplay[i];\n                if (option.disabled) {\n                    continue;\n                }\n                else {\n                    prevEnabledOption = option;\n                    break;\n                }\n            }\n\n            if (!prevEnabledOption) {\n                for (let i = this.optionsToDisplay.length - 1; i >= index ; i--) {\n                    let option = this.optionsToDisplay[i];\n                    if (this.isOptionDisabled(option)) {\n                        continue;\n                    }\n                    else {\n                        prevEnabledOption = option;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return prevEnabledOption;\n    }\n\n    findNextEnabledOption(index) {\n        let nextEnabledOption;\n\n        if (this.optionsToDisplay && this.optionsToDisplay.length) {\n            for (let i = (index + 1); i < this.optionsToDisplay.length; i++) {\n                let option = this.optionsToDisplay[i];\n                if (this.isOptionDisabled(option)) {\n                    continue;\n                }\n                else {\n                    nextEnabledOption = option;\n                    break;\n                }\n            }\n\n            if (!nextEnabledOption) {\n                for (let i = 0; i < index; i++) {\n                    let option = this.optionsToDisplay[i];\n                    if (this.isOptionDisabled(option)) {\n                        continue;\n                    }\n                    else {\n                        nextEnabledOption = option;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return nextEnabledOption;\n    }\n\n    onKeydown(event: KeyboardEvent, search: boolean) {\n        if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {\n            return;\n        }\n\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                }\n                else {\n                    if (this.group) {\n                        let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n\n                        if (selectedItemIndex !== -1) {\n                            let nextItemIndex = selectedItemIndex.itemIndex + 1;\n                            if (nextItemIndex < (this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length)) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);\n                                this.selectedOptionUpdated = true;\n                            }\n                            else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);\n                                this.selectedOptionUpdated = true;\n                            }\n                        }\n                        else {\n                            if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {\n                                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);\n                            }\n                        }\n                    }\n                    else {\n                        let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                        let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);\n                        if (nextEnabledOption) {\n                            this.selectItem(event, nextEnabledOption);\n                            this.selectedOptionUpdated = true;\n                        }\n                    }\n                }\n\n                event.preventDefault();\n\n            break;\n\n            //up\n            case 38:\n                if (this.group) {\n                    let selectedItemIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                    if (selectedItemIndex !== -1) {\n                        let prevItemIndex = selectedItemIndex.itemIndex - 1;\n                        if (prevItemIndex >= 0) {\n                            this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);\n                            this.selectedOptionUpdated = true;\n                        }\n                        else if (prevItemIndex < 0) {\n                            let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];\n                            if (prevGroup) {\n                                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);\n                                this.selectedOptionUpdated = true;\n                            }\n                        }\n                    }\n                }\n                else {\n                    let selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n                    let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);\n                    if (prevEnabledOption) {\n                        this.selectItem(event, prevEnabledOption);\n                        this.selectedOptionUpdated = true;\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //space\n            case 32:\n                if (search) {\n                    if (!this.overlayVisible){\n                        this.show();\n                    }\n                    else {\n                        this.hide();\n                    }\n\n                    event.preventDefault();\n                }\n            break;\n\n            //enter\n            case 13:\n                if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {\n                    this.hide();\n                }\n\n                else if (!this.overlayVisible) {\n                    this.show();\n                }\n\n                event.preventDefault();\n            break;\n\n            //escape and tab\n            case 27:\n            case 9:\n                this.hide();\n            break;\n\n            //search item based on keyboard input\n            default:\n                if (search && !event.metaKey) {\n                    this.search(event);\n                }\n            break;\n        }\n    }\n\n    search(event: KeyboardEvent) {\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        const char = event.key;\n        this.previousSearchChar = this.currentSearchChar;\n        this.currentSearchChar = char;\n\n        if (this.previousSearchChar === this.currentSearchChar)\n            this.searchValue = this.currentSearchChar;\n        else\n            this.searchValue = this.searchValue ? this.searchValue + char : char;\n\n        let newOption;\n        if (this.group) {\n            let searchIndex = this.selectedOption ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : {groupIndex: 0, itemIndex: 0};\n            newOption = this.searchOptionWithinGroup(searchIndex);\n        }\n        else {\n            let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n            newOption = this.searchOption(++searchIndex);\n        }\n\n        if (newOption && !this.isOptionDisabled(newOption)) {\n            this.selectItem(event, newOption);\n            this.selectedOptionUpdated = true;\n        }\n\n        this.searchTimeout = setTimeout(() => {\n            this.searchValue = null;\n        }, 250);\n    }\n\n    searchOption(index) {\n        let option;\n\n        if (this.searchValue) {\n            option = this.searchOptionInRange(index, this.optionsToDisplay.length);\n\n            if (!option) {\n                option = this.searchOptionInRange(0, index);\n            }\n        }\n\n        return option;\n    }\n\n    searchOptionInRange(start, end) {\n        for (let i = start; i < end; i++) {\n            let opt = this.optionsToDisplay[i];\n            if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                return opt;\n            }\n        }\n\n        return null;\n    }\n\n    searchOptionWithinGroup(index) {\n        let option;\n\n        if (this.searchValue) {\n            for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {\n                for (let j = (index.groupIndex === i) ? (index.itemIndex + 1) : 0; j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length; j++) {\n                    let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n                    if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                        return opt;\n                    }\n                }\n            }\n\n            if (!option) {\n                for (let i = 0; i <= index.groupIndex; i++) {\n                    for (let j = 0; j < ((index.groupIndex === i) ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length); j++) {\n                        let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n                        if (this.getOptionLabel(opt).toLocaleLowerCase(this.filterLocale).startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) && !this.isOptionDisabled(opt)) {\n                            return opt;\n                        }\n                    }\n                }\n            }\n        }\n\n        return null;\n    }\n\n    findOptionIndex(val: any, opts: any[]): number {\n        let index: number = -1;\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    findOptionGroupIndex(val: any, opts: any[]): any {\n        let groupIndex, itemIndex;\n\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                groupIndex = i;\n                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n                if (itemIndex !== -1) {\n                    break;\n                }\n            }\n        }\n\n        if (itemIndex !== -1) {\n            return {groupIndex: groupIndex, itemIndex: itemIndex};\n        }\n        else {\n            return -1;\n        }\n    }\n\n    findOption(val: any, opts: any[], inGroup?: boolean): SelectItem {\n        if (this.group && !inGroup) {\n            let opt: SelectItem;\n            if (opts && opts.length) {\n                for (let optgroup of opts) {\n                    opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);\n                    if (opt) {\n                        break;\n                    }\n                }\n            }\n            return opt;\n        }\n        else {\n            let index: number = this.findOptionIndex(val, opts);\n            return (index != -1) ? opts[index] : null;\n        }\n    }\n\n    onFilterInputChange(event): void {\n        let inputValue = event.target.value;\n        if (inputValue && inputValue.length) {\n            this._filterValue = inputValue;\n            this.activateFilter();\n        }\n        else {\n            this._filterValue = null;\n            this.optionsToDisplay = this.options;\n        }\n\n        this.optionsChanged = true;\n        this.onFilter.emit({originalEvent: event, filter: this._filterValue});\n    }\n\n    activateFilter() {\n        let searchFields: string[] = (this.filterBy || this.optionLabel || 'label').split(',');\n\n        if (this.options && this.options.length) {\n            if (this.group) {\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this.optionsToDisplay = filteredGroups;\n            }\n            else {\n                this.optionsToDisplay = this.filterService.filter(this.options, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n            }\n\n            this.optionsChanged = true;\n        }\n    }\n\n    applyFocus(): void {\n        if (this.editable)\n            DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();\n        else\n            DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();\n    }\n\n    focus(): void {\n        this.applyFocus();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.isOutsideClicked(event)) {\n                    this.hide();\n                    this.unbindDocumentClickListener();\n                }\n\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n            this.hide();\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, (event: any) => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    clear(event: Event) {\n        this.value = null;\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n        this.updateSelectedOption(this.value);\n        this.updateEditableLabel();\n        this.onClear.emit(event);\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.itemsWrapper = null;\n        this.onModelTouched();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ScrollingModule,TooltipModule,RippleModule],\n    exports: [Dropdown,SharedModule,ScrollingModule],\n    declarations: [Dropdown,DropdownItem]\n})\nexport class DropdownModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,391 @@
+import * as i0 from '@angular/core';
+import { Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, NgModule, Injectable } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i4 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import { Subject } from 'rxjs';
+import * as i3 from 'primeng/api';
+
+class DynamicDialogContent {
+    constructor(viewContainerRef) {
+        this.viewContainerRef = viewContainerRef;
+    }
+}
+DynamicDialogContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
+DynamicDialogContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogContent, selector: "[pDynamicDialogContent]", host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogContent, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pDynamicDialogContent]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
+
+class DynamicDialogConfig {
+}
+
+class DynamicDialogRef {
+    constructor() {
+        this._onClose = new Subject();
+        this.onClose = this._onClose.asObservable();
+        this._onDestroy = new Subject();
+        this.onDestroy = this._onDestroy.asObservable();
+    }
+    close(result) {
+        this._onClose.next(result);
+    }
+    destroy() {
+        this._onDestroy.next(null);
+    }
+}
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class DynamicDialogComponent {
+    constructor(componentFactoryResolver, cd, renderer, config, dialogRef, zone, primeNGConfig) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.cd = cd;
+        this.renderer = renderer;
+        this.config = config;
+        this.dialogRef = dialogRef;
+        this.zone = zone;
+        this.primeNGConfig = primeNGConfig;
+        this.visible = true;
+        this.transformOptions = "scale(0.7)";
+    }
+    ngAfterViewInit() {
+        this.loadChildComponent(this.childComponentType);
+        this.cd.detectChanges();
+    }
+    loadChildComponent(componentType) {
+        let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);
+        let viewContainerRef = this.insertionPoint.viewContainerRef;
+        viewContainerRef.clear();
+        this.componentRef = viewContainerRef.createComponent(componentFactory);
+    }
+    moveOnTop() {
+        if (this.config.autoZIndex !== false) {
+            ZIndexUtils.set('modal', this.container, (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal);
+            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.moveOnTop();
+                this.bindGlobalListeners();
+                if (this.config.modal !== false) {
+                    this.enableModality();
+                }
+                this.focus();
+                break;
+            case 'void':
+                if (this.config.modal !== false) {
+                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            this.onContainerDestroy();
+            this.dialogRef.destroy();
+        }
+    }
+    onContainerDestroy() {
+        this.unbindGlobalListeners();
+        if (this.container && this.config.autoZIndex !== false) {
+            ZIndexUtils.clear(this.container);
+        }
+        if (this.config.modal !== false) {
+            this.disableModality();
+        }
+        this.container = null;
+    }
+    close() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    hide() {
+        if (this.dialogRef) {
+            this.dialogRef.close();
+        }
+    }
+    enableModality() {
+        if (this.config.closable !== false && this.config.dismissableMask) {
+            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event) => {
+                if (this.wrapper && this.wrapper.isSameNode(event.target)) {
+                    this.hide();
+                }
+            });
+        }
+        if (this.config.modal !== false) {
+            DomHandler.addClass(document.body, 'p-overflow-hidden');
+        }
+    }
+    disableModality() {
+        if (this.wrapper) {
+            if (this.config.dismissableMask) {
+                this.unbindMaskClickListener();
+            }
+            if (this.config.modal !== false) {
+                DomHandler.removeClass(document.body, 'p-overflow-hidden');
+            }
+            if (!this.cd.destroyed) {
+                this.cd.detectChanges();
+            }
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 9) {
+            event.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.container);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (event.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    bindGlobalListeners() {
+        this.bindDocumentKeydownListener();
+        if (this.config.closeOnEscape !== false && this.config.closable !== false) {
+            this.bindDocumentEscapeListener();
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindDocumentKeydownListener();
+        this.unbindDocumentEscapeListener();
+    }
+    bindDocumentKeydownListener() {
+        this.zone.runOutsideAngular(() => {
+            this.documentKeydownListener = this.onKeydown.bind(this);
+            window.document.addEventListener('keydown', this.documentKeydownListener);
+        });
+    }
+    unbindDocumentKeydownListener() {
+        if (this.documentKeydownListener) {
+            window.document.removeEventListener('keydown', this.documentKeydownListener);
+            this.documentKeydownListener = null;
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {
+                    this.hide();
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.onContainerDestroy();
+        if (this.componentRef) {
+            this.componentRef.destroy();
+        }
+    }
+}
+DynamicDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: DynamicDialogConfig }, { token: DynamicDialogRef }, { token: i0.NgZone }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+DynamicDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: DynamicDialogComponent, selector: "p-dynamicDialog", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "insertionPoint", first: true, predicate: DynamicDialogContent, descendants: true }, { propertyName: "maskViewChild", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, isInline: true, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return DynamicDialogContent; }), selector: "[pDynamicDialogContent]" }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogComponent, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-dynamicDialog', template: `
+        <div #mask [ngClass]="{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}">
+            <div [ngClass]="{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}" [ngStyle]="config.style" [class]="config.styleClass"
+                [@animation]="{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)" role="dialog" *ngIf="visible"
+                [style.width]="config.width" [style.height]="config.height">
+                <div class="p-dialog-header" *ngIf="config.showHeader === false ? false: true">
+                    <span class="p-dialog-title">{{config.header}}</span>
+                    <div class="p-dialog-header-icons">
+                        <button [ngClass]="'p-dialog-header-icon p-dialog-header-maximize p-link'" type="button" (click)="hide()" (keydown.enter)="hide()" *ngIf="config.closable !== false">
+                            <span class="p-dialog-header-close-icon pi pi-times"></span>
+                        </button>
+                    </div>
+                </div>
+                <div class="p-dialog-content" [ngStyle]="config.contentStyle">
+                    <ng-template pDynamicDialogContent></ng-template>
+                </div>
+                <div class="p-dialog-footer" *ngIf="config.footer">
+                    {{config.footer}}
+                </div>
+            </div>
+        </div>
+	`, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: DynamicDialogConfig }, { type: DynamicDialogRef }, { type: i0.NgZone }, { type: i3.PrimeNGConfig }]; }, propDecorators: { insertionPoint: [{
+                type: ViewChild,
+                args: [DynamicDialogContent]
+            }], maskViewChild: [{
+                type: ViewChild,
+                args: ['mask']
+            }] } });
+class DynamicDialogModule {
+}
+DynamicDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+DynamicDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, declarations: [DynamicDialogComponent, DynamicDialogContent], imports: [CommonModule] });
+DynamicDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DynamicDialogModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    declarations: [DynamicDialogComponent, DynamicDialogContent],
+                    entryComponents: [DynamicDialogComponent]
+                }]
+        }] });
+
+class DynamicDialogInjector {
+    constructor(_parentInjector, _additionalTokens) {
+        this._parentInjector = _parentInjector;
+        this._additionalTokens = _additionalTokens;
+    }
+    get(token, notFoundValue, flags) {
+        const value = this._additionalTokens.get(token);
+        if (value)
+            return value;
+        return this._parentInjector.get(token, notFoundValue);
+    }
+}
+
+class DialogService {
+    constructor(componentFactoryResolver, appRef, injector) {
+        this.componentFactoryResolver = componentFactoryResolver;
+        this.appRef = appRef;
+        this.injector = injector;
+        this.dialogComponentRefMap = new Map();
+    }
+    open(componentType, config) {
+        const dialogRef = this.appendDialogComponentToBody(config);
+        this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;
+        return dialogRef;
+    }
+    appendDialogComponentToBody(config) {
+        const map = new WeakMap();
+        map.set(DynamicDialogConfig, config);
+        const dialogRef = new DynamicDialogRef();
+        map.set(DynamicDialogRef, dialogRef);
+        const sub = dialogRef.onClose.subscribe(() => {
+            this.dialogComponentRefMap.get(dialogRef).instance.close();
+        });
+        const destroySub = dialogRef.onDestroy.subscribe(() => {
+            this.removeDialogComponentFromBody(dialogRef);
+            destroySub.unsubscribe();
+            sub.unsubscribe();
+        });
+        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicDialogComponent);
+        const componentRef = componentFactory.create(new DynamicDialogInjector(this.injector, map));
+        this.appRef.attachView(componentRef.hostView);
+        const domElem = componentRef.hostView.rootNodes[0];
+        document.body.appendChild(domElem);
+        this.dialogComponentRefMap.set(dialogRef, componentRef);
+        return dialogRef;
+    }
+    removeDialogComponentFromBody(dialogRef) {
+        if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {
+            return;
+        }
+        const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);
+        this.appRef.detachView(dialogComponentRef.hostView);
+        dialogComponentRef.destroy();
+        this.dialogComponentRefMap.delete(dialogRef);
+    }
+}
+DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
+DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: DialogService, decorators: [{
+            type: Injectable
+        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { DialogService, DynamicDialogComponent, DynamicDialogConfig, DynamicDialogInjector, DynamicDialogModule, DynamicDialogRef };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-dynamicdialog.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-dynamicdialog.mjs","sources":["../../src/app/components/dynamicdialog/dynamicdialogcontent.ts","../../src/app/components/dynamicdialog/dynamicdialog-config.ts","../../src/app/components/dynamicdialog/dynamicdialog-ref.ts","../../src/app/components/dynamicdialog/dynamicdialog.ts","../../src/app/components/dynamicdialog/dynamicdialog-injector.ts","../../src/app/components/dynamicdialog/dialogservice.ts","../../src/app/components/dynamicdialog/primeng-dynamicdialog.ts"],"sourcesContent":["import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[pDynamicDialogContent]',\n  host: {\n    'class': 'p-element'\n  }\n})\nexport class DynamicDialogContent {\n\n\tconstructor(public viewContainerRef: ViewContainerRef) {}\n\n}\n","export class DynamicDialogConfig {\r\n\tdata?: any;\r\n\theader?: string;\r\n\tfooter?: string;\r\n\twidth?: string;\r\n\theight?: string;\r\n\tcloseOnEscape?: boolean;\r\n\tbaseZIndex?: number;\r\n\tautoZIndex?: boolean;\r\n\tdismissableMask?: boolean;\r\n\trtl?: boolean;\r\n\tstyle?: any;\r\n\tcontentStyle?: any;\r\n\tstyleClass?: string;\r\n\ttransitionOptions?: string;\r\n\tclosable?: boolean;\r\n\tshowHeader?: boolean;\r\n\tmodal?: boolean;\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DynamicDialogRef {\r\n\tconstructor() { }\r\n\r\n\tclose(result?: any) {\r\n\t\tthis._onClose.next(result);\r\n    }\r\n\r\n    destroy() {\r\n\t\tthis._onDestroy.next(null);\r\n\t}\r\n\r\n\tprivate readonly _onClose = new Subject<any>();\r\n    onClose: Observable<any> = this._onClose.asObservable();\r\n\r\n    private readonly _onDestroy = new Subject<any>();\r\n\tonDestroy: Observable<any> = this._onDestroy.asObservable();\r\n}\r\n","import { Component, NgModule, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, Renderer2, NgZone, ElementRef, ChangeDetectionStrategy, ViewRef, ViewEncapsulation } from '@angular/core';\nimport { trigger,style,transition,animate,AnimationEvent, animation, useAnimation } from '@angular/animations';\nimport { DynamicDialogContent } from './dynamicdialogcontent';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { PrimeNGConfig } from 'primeng/api';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n\tselector: 'p-dynamicDialog',\n\ttemplate: `\n        <div #mask [ngClass]=\"{'p-dialog-mask':true, 'p-component-overlay-enter p-dialog-mask-scrollblocker': config.modal !== false}\">\n            <div [ngClass]=\"{'p-dialog p-dynamic-dialog p-component':true, 'p-dialog-rtl': config.rtl}\" [ngStyle]=\"config.style\" [class]=\"config.styleClass\"\n                [@animation]=\"{value: 'visible', params: {transform: transformOptions, transition: config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'}}\"\n                (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\" role=\"dialog\" *ngIf=\"visible\"\n                [style.width]=\"config.width\" [style.height]=\"config.height\">\n                <div class=\"p-dialog-header\" *ngIf=\"config.showHeader === false ? false: true\">\n                    <span class=\"p-dialog-title\">{{config.header}}</span>\n                    <div class=\"p-dialog-header-icons\">\n                        <button [ngClass]=\"'p-dialog-header-icon p-dialog-header-maximize p-link'\" type=\"button\" (click)=\"hide()\" (keydown.enter)=\"hide()\" *ngIf=\"config.closable !== false\">\n                            <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"p-dialog-content\" [ngStyle]=\"config.contentStyle\">\n                    <ng-template pDynamicDialogContent></ng-template>\n                </div>\n                <div class=\"p-dialog-footer\" *ngIf=\"config.footer\">\n                    {{config.footer}}\n                </div>\n            </div>\n        </div>\n\t`,\n\tanimations: [\n        trigger('animation', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../dialog/dialog.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class DynamicDialogComponent implements AfterViewInit, OnDestroy {\n\n\tvisible: boolean = true;\n\n\tcomponentRef: ComponentRef<any>;\n\n\tmask: HTMLDivElement;\n\n\t@ViewChild(DynamicDialogContent) insertionPoint: DynamicDialogContent;\n\n\t@ViewChild('mask') maskViewChild: ElementRef;\n\n\tchildComponentType: Type<any>;\n\n    container: HTMLDivElement;\n\n    wrapper: HTMLElement;\n\n    documentKeydownListener: any;\n\n    documentEscapeListener: Function;\n\n    maskClickListener: Function;\n\n    transformOptions: string = \"scale(0.7)\";\n\n\tconstructor(private componentFactoryResolver: ComponentFactoryResolver, private cd: ChangeDetectorRef, public renderer: Renderer2,\n\t\t\tpublic config: DynamicDialogConfig, private dialogRef: DynamicDialogRef, public zone: NgZone, public primeNGConfig: PrimeNGConfig) { }\n\n\tngAfterViewInit() {\n\t\tthis.loadChildComponent(this.childComponentType);\n\t\tthis.cd.detectChanges();\n\t}\n\n\tloadChildComponent(componentType: Type<any>) {\n\t\tlet componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n\n\t\tlet viewContainerRef = this.insertionPoint.viewContainerRef;\n\t\tviewContainerRef.clear();\n\n\t\tthis.componentRef = viewContainerRef.createComponent(componentFactory);\n\t}\n\n\tmoveOnTop() {\n        if (this.config.autoZIndex !== false) {\n            ZIndexUtils.set('modal', this.container, (this.config.baseZIndex||0) + this.primeNGConfig.zIndex.modal);\n            this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n\t\t}\n    }\n\n\tonAnimationStart(event: AnimationEvent) {\n\t\tswitch(event.toState) {\n\t\t\tcase 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n\t\t\t\tthis.moveOnTop();\n                this.bindGlobalListeners();\n\n                if (this.config.modal !== false) {\n                    this.enableModality();\n                }\n                this.focus();\n\t\t\tbreak;\n\n\t\t\tcase 'void':\n                if (this.config.modal !== false) {\n                    DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n                }\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tonAnimationEnd(event: AnimationEvent) {\n\t\tif (event.toState === 'void') {\n            this.onContainerDestroy();\n\t\t\tthis.dialogRef.destroy();\n\t\t}\n\t}\n\n\tonContainerDestroy() {\n\t\tthis.unbindGlobalListeners();\n\n        if (this.container && this.config.autoZIndex !== false) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        if (this.config.modal !== false) {\n            this.disableModality();\n        }\n        this.container = null;\n\t}\n\n\tclose() {\n        this.visible = false;\n        this.cd.markForCheck();\n\t}\n\n    hide() {\n        if (this.dialogRef) {\n            this.dialogRef.close();\n        }\n    }\n\n    enableModality() {\n        if (this.config.closable !== false && this.config.dismissableMask) {\n            this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: any) => {\n                if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n                    this.hide();\n                }\n            });\n        }\n\n        if (this.config.modal !== false) {\n            DomHandler.addClass(document.body, 'p-overflow-hidden');\n        }\n    }\n\n    disableModality() {\n        if (this.wrapper) {\n            if (this.config.dismissableMask) {\n                this.unbindMaskClickListener();\n            }\n\n            if (this.config.modal !== false) {\n                DomHandler.removeClass(document.body, 'p-overflow-hidden');\n            }\n\n            if (!(this.cd as ViewRef).destroyed) {\n                this.cd.detectChanges();\n            }\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 9) {\n            event.preventDefault();\n\n            let focusableElements = DomHandler.getFocusableElements(this.container);\n\n            if (focusableElements && focusableElements.length > 0) {\n                if (!focusableElements[0].ownerDocument.activeElement) {\n                    focusableElements[0].focus();\n                }\n                else {\n                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                    if (event.shiftKey) {\n                        if (focusedIndex == -1 || focusedIndex === 0)\n                            focusableElements[focusableElements.length - 1].focus();\n                        else\n                            focusableElements[focusedIndex - 1].focus();\n                    }\n                    else {\n                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                            focusableElements[0].focus();\n                        else\n                            focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n\tbindGlobalListeners() {\n        this.bindDocumentKeydownListener();\n\n        if (this.config.closeOnEscape !== false && this.config.closable !== false) {\n            this.bindDocumentEscapeListener();\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindDocumentKeydownListener();\n        this.unbindDocumentEscapeListener();\n    }\n\n    bindDocumentKeydownListener() {\n        this.zone.runOutsideAngular(() => {\n            this.documentKeydownListener = this.onKeydown.bind(this);\n            window.document.addEventListener('keydown', this.documentKeydownListener);\n        });\n    }\n\n    unbindDocumentKeydownListener() {\n        if (this.documentKeydownListener) {\n            window.document.removeEventListener('keydown', this.documentKeydownListener);\n            this.documentKeydownListener = null;\n        }\n    }\n\n\tbindDocumentEscapeListener() {\n        const documentTarget: any = this.maskViewChild ? this.maskViewChild.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                if (parseInt(this.container.style.zIndex) == ZIndexUtils.getCurrent()) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n\tngOnDestroy() {\n\t\tthis.onContainerDestroy();\n\n\t\tif (this.componentRef) {\n\t\t\tthis.componentRef.destroy();\n\t\t}\n\t}\n}\n\n@NgModule({\n\timports: [CommonModule],\n\tdeclarations: [DynamicDialogComponent, DynamicDialogContent],\n\tentryComponents: [DynamicDialogComponent]\n})\nexport class DynamicDialogModule { }\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DynamicDialogInjector implements Injector {\r\n\t\r\n\tconstructor(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) { }\r\n\r\n\tget<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n\tget(token: any, notFoundValue?: any);\r\n\tget(token: any, notFoundValue?: any, flags?: any) {\r\n\t\tconst value = this._additionalTokens.get(token);\r\n\r\n\t\tif (value) return value;\r\n\r\n\t\treturn this._parentInjector.get<any>(token, notFoundValue);\r\n\t}\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\nimport { DynamicDialogComponent } from './dynamicdialog';\nimport { DynamicDialogInjector } from './dynamicdialog-injector';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\n\n@Injectable()\nexport class DialogService {\n\n    dialogComponentRefMap: Map<DynamicDialogRef, ComponentRef<DynamicDialogComponent>> = new Map();\n\n    constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {\n    }\n\n    public open(componentType: Type<any>, config: DynamicDialogConfig) {\n        const dialogRef = this.appendDialogComponentToBody(config);\n\n        this.dialogComponentRefMap.get(dialogRef).instance.childComponentType = componentType;\n\n        return dialogRef;\n    }\n\n    private appendDialogComponentToBody(config: DynamicDialogConfig) {\n        const map = new WeakMap();\n        map.set(DynamicDialogConfig, config);\n\n        const dialogRef = new DynamicDialogRef();\n        map.set(DynamicDialogRef, dialogRef);\n\n        const sub = dialogRef.onClose.subscribe(() => {\n            this.dialogComponentRefMap.get(dialogRef).instance.close();\n        });\n\n        const destroySub = dialogRef.onDestroy.subscribe(() => {\n            this.removeDialogComponentFromBody(dialogRef);\n            destroySub.unsubscribe();\n            sub.unsubscribe();\n        });\n\n        const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicDialogComponent);\n        const componentRef = componentFactory.create(new DynamicDialogInjector(this.injector, map));\n\n        this.appRef.attachView(componentRef.hostView);\n\n        const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        document.body.appendChild(domElem);\n\n        this.dialogComponentRefMap.set(dialogRef, componentRef);\n\n        return dialogRef;\n    }\n\n    private removeDialogComponentFromBody(dialogRef: DynamicDialogRef) {\n        if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n            return;\n        }\n\n        const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n        this.appRef.detachView(dialogComponentRef.hostView);\n        dialogComponentRef.destroy();\n        this.dialogComponentRefMap.delete(dialogRef);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,264 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, ContentChild, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as Quill from 'quill';
+
+const EDITOR_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Editor),
+    multi: true
+};
+class Editor {
+    constructor(el) {
+        this.el = el;
+        this.onTextChange = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onInit = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterViewInit() {
+        let editorElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-content');
+        let toolbarElement = DomHandler.findSingle(this.el.nativeElement, 'div.p-editor-toolbar');
+        let defaultModule = { toolbar: toolbarElement };
+        let modules = this.modules ? { ...defaultModule, ...this.modules } : defaultModule;
+        this.quill = new Quill(editorElement, {
+            modules: modules,
+            placeholder: this.placeholder,
+            readOnly: this.readonly,
+            theme: 'snow',
+            formats: this.formats,
+            bounds: this.bounds,
+            debug: this.debug,
+            scrollingContainer: this.scrollingContainer
+        });
+        if (this.value) {
+            this.quill.setContents(this.quill.clipboard.convert(this.value));
+        }
+        this.quill.on('text-change', (delta, oldContents, source) => {
+            if (source === 'user') {
+                let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;
+                let text = this.quill.getText().trim();
+                if (html === '<p><br></p>') {
+                    html = null;
+                }
+                this.onTextChange.emit({
+                    htmlValue: html,
+                    textValue: text,
+                    delta: delta,
+                    source: source
+                });
+                this.onModelChange(html);
+                this.onModelTouched();
+            }
+        });
+        this.quill.on('selection-change', (range, oldRange, source) => {
+            this.onSelectionChange.emit({
+                range: range,
+                oldRange: oldRange,
+                source: source
+            });
+        });
+        this.onInit.emit({
+            editor: this.quill
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.quill) {
+            if (value)
+                this.quill.setContents(this.quill.clipboard.convert(value));
+            else
+                this.quill.setText('');
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    getQuill() {
+        return this.quill;
+    }
+    get readonly() {
+        return this._readonly;
+    }
+    set readonly(val) {
+        this._readonly = val;
+        if (this.quill) {
+            if (this._readonly)
+                this.quill.disable();
+            else
+                this.quill.enable();
+        }
+    }
+}
+Editor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Editor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Editor, selector: "p-editor", inputs: { style: "style", styleClass: "styleClass", placeholder: "placeholder", formats: "formats", modules: "modules", bounds: "bounds", scrollingContainer: "scrollingContainer", debug: "debug", readonly: "readonly" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", onInit: "onInit" }, host: { classAttribute: "p-element" }, providers: [EDITOR_VALUE_ACCESSOR], queries: [{ propertyName: "toolbar", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, isInline: true, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Editor, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-editor', template: `
+        <div [ngClass]="'p-editor-container'" [class]="styleClass">
+            <div class="p-editor-toolbar" *ngIf="toolbar || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div class="p-editor-toolbar" *ngIf="!toolbar && !headerTemplate">
+                <span class="ql-formats">
+                    <select class="ql-header">
+                      <option value="1">Heading</option>
+                      <option value="2">Subheading</option>
+                      <option selected>Normal</option>
+                    </select>
+                    <select class="ql-font">
+                      <option selected>Sans Serif</option>
+                      <option value="serif">Serif</option>
+                      <option value="monospace">Monospace</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-bold" aria-label="Bold" type="button"></button>
+                    <button class="ql-italic" aria-label="Italic" type="button"></button>
+                    <button class="ql-underline" aria-label="Underline" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <select class="ql-color"></select>
+                    <select class="ql-background"></select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-list" value="ordered" aria-label="Ordered List" type="button"></button>
+                    <button class="ql-list" value="bullet" aria-label="Unordered List" type="button"></button>
+                    <select class="ql-align">
+                        <option selected></option>
+                        <option value="center">center</option>
+                        <option value="right">right</option>
+                        <option value="justify">justify</option>
+                    </select>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-link" aria-label="Insert Link" type="button"></button>
+                    <button class="ql-image" aria-label="Insert Image" type="button"></button>
+                    <button class="ql-code-block" aria-label="Insert Code Block" type="button"></button>
+                </span>
+                <span class="ql-formats">
+                    <button class="ql-clean" aria-label="Remove Styles" type="button"></button>
+                </span>
+            </div>
+            <div class="p-editor-content" [ngStyle]="style"></div>
+        </div>
+    `, providers: [EDITOR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item{width:auto;height:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onTextChange: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], toolbar: [{
+                type: ContentChild,
+                args: [Header]
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], formats: [{
+                type: Input
+            }], modules: [{
+                type: Input
+            }], bounds: [{
+                type: Input
+            }], scrollingContainer: [{
+                type: Input
+            }], debug: [{
+                type: Input
+            }], onInit: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], readonly: [{
+                type: Input
+            }] } });
+class EditorModule {
+}
+EditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+EditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, declarations: [Editor], imports: [CommonModule], exports: [Editor, SharedModule] });
+EditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Editor, SharedModule],
+                    declarations: [Editor]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { EDITOR_VALUE_ACCESSOR, Editor, EditorModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-editor.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-editor.mjs","sources":["../../src/app/components/editor/editor.ts","../../src/app/components/editor/primeng-editor.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewInit,Input,Output,EventEmitter,ContentChild,forwardRef,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, AfterContentInit, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,Header, PrimeTemplate} from 'primeng/api'\nimport {DomHandler} from 'primeng/dom';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\nimport * as Quill from \"quill\";\n\nexport const EDITOR_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Editor),\n  multi: true\n};\n\n@Component({\n    selector: 'p-editor',\n    template: `\n        <div [ngClass]=\"'p-editor-container'\" [class]=\"styleClass\">\n            <div class=\"p-editor-toolbar\" *ngIf=\"toolbar || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div class=\"p-editor-toolbar\" *ngIf=\"!toolbar && !headerTemplate\">\n                <span class=\"ql-formats\">\n                    <select class=\"ql-header\">\n                      <option value=\"1\">Heading</option>\n                      <option value=\"2\">Subheading</option>\n                      <option selected>Normal</option>\n                    </select>\n                    <select class=\"ql-font\">\n                      <option selected>Sans Serif</option>\n                      <option value=\"serif\">Serif</option>\n                      <option value=\"monospace\">Monospace</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-bold\" aria-label=\"Bold\" type=\"button\"></button>\n                    <button class=\"ql-italic\" aria-label=\"Italic\" type=\"button\"></button>\n                    <button class=\"ql-underline\" aria-label=\"Underline\" type=\"button\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                    <select class=\"ql-color\"></select>\n                    <select class=\"ql-background\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-list\" value=\"ordered\" aria-label=\"Ordered List\" type=\"button\"></button>\n                    <button class=\"ql-list\" value=\"bullet\" aria-label=\"Unordered List\" type=\"button\"></button>\n                    <select class=\"ql-align\">\n                        <option selected></option>\n                        <option value=\"center\">center</option>\n                        <option value=\"right\">right</option>\n                        <option value=\"justify\">justify</option>\n                    </select>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-link\" aria-label=\"Insert Link\" type=\"button\"></button>\n                    <button class=\"ql-image\" aria-label=\"Insert Image\" type=\"button\"></button>\n                    <button class=\"ql-code-block\" aria-label=\"Insert Code Block\" type=\"button\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                    <button class=\"ql-clean\" aria-label=\"Remove Styles\" type=\"button\"></button>\n                </span>\n            </div>\n            <div class=\"p-editor-content\" [ngStyle]=\"style\"></div>\n        </div>\n    `,\n    providers: [EDITOR_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./editor.css'],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Editor implements AfterViewInit,AfterContentInit,ControlValueAccessor {\n\n    @Output() onTextChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(Header) toolbar;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() formats: string[];\n\n    @Input() modules: any;\n\n    @Input() bounds: any;\n\n    @Input() scrollingContainer: any;\n\n    @Input() debug: string;\n\n    @Output() onInit: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    value: string;\n\n    _readonly: boolean;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    quill: any;\n\n    headerTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        let editorElement = DomHandler.findSingle(this.el.nativeElement ,'div.p-editor-content');\n        let toolbarElement = DomHandler.findSingle(this.el.nativeElement ,'div.p-editor-toolbar');\n        let defaultModule  = {toolbar: toolbarElement};\n        let modules = this.modules ? {...defaultModule, ...this.modules} : defaultModule;\n\n        this.quill = new Quill(editorElement, {\n            modules: modules,\n            placeholder: this.placeholder,\n            readOnly: this.readonly,\n            theme: 'snow',\n            formats: this.formats,\n            bounds: this.bounds,\n            debug: this.debug,\n            scrollingContainer: this.scrollingContainer\n        });\n\n        if (this.value) {\n            this.quill.setContents(this.quill.clipboard.convert(this.value));\n        }\n\n        this.quill.on('text-change', (delta, oldContents, source) => {\n            if (source === 'user') {\n                let html = DomHandler.findSingle(editorElement, '.ql-editor').innerHTML;\n                let text = this.quill.getText().trim();\n                if (html === '<p><br></p>') {\n                    html = null;\n                }\n\n                this.onTextChange.emit({\n                    htmlValue: html,\n                    textValue: text,\n                    delta: delta,\n                    source: source\n                });\n\n                this.onModelChange(html);\n                this.onModelTouched();\n            }\n        });\n\n        this.quill.on('selection-change', (range, oldRange, source) => {\n            this.onSelectionChange.emit({\n                range: range,\n                oldRange: oldRange,\n                source: source\n            });\n        });\n\n        this.onInit.emit({\n            editor: this.quill\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n\n        if (this.quill) {\n            if (value)\n                this.quill.setContents(this.quill.clipboard.convert(value));\n            else\n                this.quill.setText('');\n        }\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    getQuill() {\n        return this.quill;\n    }\n\n    @Input() get readonly(): boolean {\n        return this._readonly;\n    }\n\n    set readonly(val:boolean) {\n        this._readonly = val;\n\n        if (this.quill) {\n            if (this._readonly)\n                this.quill.disable();\n            else\n                this.quill.enable();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Editor,SharedModule],\n    declarations: [Editor]\n})\nexport class EditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,180 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+let idx = 0;
+class Fieldset {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-fieldset-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.collapsed)
+            this.expand(event);
+        else
+            this.collapse(event);
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+    }
+}
+Fieldset.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Fieldset.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Fieldset, selector: "p-fieldset", inputs: { legend: "legend", toggleable: "toggleable", collapsed: "collapsed", style: "style", styleClass: "styleClass", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, isInline: true, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('fieldsetContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Fieldset, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fieldset', template: `
+        <fieldset [attr.id]="id" [ngClass]="{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <legend class="p-fieldset-legend">
+                <ng-container *ngIf="toggleable; else legendContent">
+                    <a tabindex="0" (click)="toggle($event)" (keydown.enter)="toggle($event)" [attr.aria-controls]="id + '-content'" [attr.aria-expanded]="!collapsed" pRipple>
+                        <span class="p-fieldset-toggler pi" *ngIf="toggleable" [ngClass]="{'pi-minus': !collapsed,'pi-plus':collapsed}"></span>
+                        <ng-container *ngTemplateOutlet="legendContent"></ng-container>
+                    </a>
+                </ng-container>
+                <ng-template #legendContent>
+                    <span class="p-fieldset-legend-text">{{legend}}</span>
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </ng-template>
+            </legend>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@fieldsetContent]="collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}"
+                        [attr.aria-labelledby]="id" [attr.aria-hidden]="collapsed"
+                         (@fieldsetContent.done)="onToggleDone($event)" role="region">
+                <div class="p-fieldset-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+        </fieldset>
+    `, animations: [
+                        trigger('fieldsetContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fieldset-legend>a,.p-fieldset-legend>span{display:flex;align-items:center;justify-content:center}.p-fieldset-toggleable .p-fieldset-legend a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-fieldset-legend-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { legend: [{
+                type: Input
+            }], toggleable: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class FieldsetModule {
+}
+FieldsetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FieldsetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, declarations: [Fieldset], imports: [CommonModule, RippleModule], exports: [Fieldset, SharedModule] });
+FieldsetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FieldsetModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Fieldset, SharedModule],
+                    declarations: [Fieldset]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Fieldset, FieldsetModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fieldset.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fieldset.mjs","sources":["../../src/app/components/fieldset/fieldset.ts","../../src/app/components/fieldset/primeng-fieldset.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, QueryList, ContentChildren, TemplateRef} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule, PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-fieldset',\n    template: `\n        <fieldset [attr.id]=\"id\" [ngClass]=\"{'p-fieldset p-component': true, 'p-fieldset-toggleable': toggleable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <legend class=\"p-fieldset-legend\">\n                <ng-container *ngIf=\"toggleable; else legendContent\">\n                    <a tabindex=\"0\" (click)=\"toggle($event)\" (keydown.enter)=\"toggle($event)\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"!collapsed\" pRipple>\n                        <span class=\"p-fieldset-toggler pi\" *ngIf=\"toggleable\" [ngClass]=\"{'pi-minus': !collapsed,'pi-plus':collapsed}\"></span>\n                        <ng-container *ngTemplateOutlet=\"legendContent\"></ng-container>\n                    </a>\n                </ng-container>\n                <ng-template #legendContent>\n                    <span class=\"p-fieldset-legend-text\">{{legend}}</span>\n                    <ng-content select=\"p-header\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </ng-template>\n            </legend>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@fieldsetContent]=\"collapsed ? {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}}\"\n                        [attr.aria-labelledby]=\"id\" [attr.aria-hidden]=\"collapsed\"\n                         (@fieldsetContent.done)=\"onToggleDone($event)\" role=\"region\">\n                <div class=\"p-fieldset-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n            </div>\n        </fieldset>\n    `,\n    animations: [\n        trigger('fieldsetContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./fieldset.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Fieldset implements AfterContentInit,BlockableUI {\n\n    @Input() legend: string;\n\n    @Input() toggleable: boolean;\n\n    @Input() collapsed: boolean = false;\n\n    @Output() collapsedChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onAfterToggle: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public animating: boolean;\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    id: string = `p-fieldset-${idx++}`;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.animating) {\n            return false;\n        }\n\n        this.animating = true;\n        this.onBeforeToggle.emit({originalEvent: event, collapsed: this.collapsed});\n\n        if (this.collapsed)\n            this.expand(event);\n        else\n            this.collapse(event);\n\n        this.onAfterToggle.emit({originalEvent: event, collapsed: this.collapsed});\n        event.preventDefault();\n    }\n\n    expand(event) {\n        this.collapsed = false;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    collapse(event) {\n        this.collapsed = true;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onToggleDone(event: Event) {\n        this.animating = false;\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Fieldset,SharedModule],\n    declarations: [Fieldset]\n})\nexport class FieldsetModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;AAOA,IAAI,GAAG,GAAW,CAAC,CAAC;MAiDP,QAAQ;IA4BjB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAtBzB,cAAS,GAAY,KAAK,CAAC;QAE1B,oBAAe,GAAsB,IAAI,YAAY,EAAE,CAAC;QAExD,mBAAc,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEvD,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;QAMvD,sBAAiB,GAAW,sCAAsC,CAAC;QAY5E,OAAE,GAAW,cAAc,GAAG,EAAE,EAAE,CAAC;KAFG;IAItC,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;gBAEN,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,MAAM,CAAC,KAAK;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;YAEnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,MAAM,CAAC,KAAK;QACR,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;IAED,QAAQ,CAAC,KAAK;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7C;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5C;IAED,YAAY,CAAC,KAAY;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;;qGA/EQ,QAAQ;yFAAR,QAAQ,wYAoBA,aAAa,6BAjEpB;;;;;;;;;;;;;;;;;;;;;;;;KAwBT,ouBACW;QACR,OAAO,CAAC,iBAAiB,EAAE;YACvB,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAClB,MAAM,EAAE,GAAG;gBACX,QAAQ,EAAE,QAAQ;aACrB,CAAC,CAAC;YACH,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;gBACnB,MAAM,EAAE,GAAG;aACd,CAAC,CAAC;YACH,UAAU,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SACtC,CAAC;KACL;2FAQQ,QAAQ;kBA/CpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;;;;;;;;;;KAwBT,cACW;wBACR,OAAO,CAAC,iBAAiB,EAAE;4BACvB,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;gCAClB,MAAM,EAAE,GAAG;gCACX,QAAQ,EAAE,QAAQ;6BACrB,CAAC,CAAC;4BACH,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;gCACnB,MAAM,EAAE,GAAG;6BACd,CAAC,CAAC;4BACH,UAAU,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;4BAChG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;yBACtC,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,MAAM;sBAAd,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEI,eAAe;sBAAxB,MAAM;gBAEG,cAAc;sBAAvB,MAAM;gBAEG,aAAa;sBAAtB,MAAM;gBAEE,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,iBAAiB;sBAAzB,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAoErB,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAxFd,QAAQ,aAoFP,YAAY,EAAC,YAAY,aApF1B,QAAQ,EAqFE,YAAY;4GAGtB,cAAc,YAJd,CAAC,YAAY,EAAC,YAAY,CAAC,EACjB,YAAY;2FAGtB,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,CAAC;oBACpC,OAAO,EAAE,CAAC,QAAQ,EAAC,YAAY,CAAC;oBAChC,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;AC/ID;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,585 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i7 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i6 from 'primeng/messages';
+import { MessagesModule } from 'primeng/messages';
+import * as i5 from 'primeng/progressbar';
+import { ProgressBarModule } from 'primeng/progressbar';
+import { DomHandler } from 'primeng/dom';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i8 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from '@angular/common/http';
+import { HttpEventType } from '@angular/common/http';
+import * as i1 from '@angular/platform-browser';
+
+class FileUpload {
+    constructor(el, sanitizer, zone, http, cd, config) {
+        this.el = el;
+        this.sanitizer = sanitizer;
+        this.zone = zone;
+        this.http = http;
+        this.cd = cd;
+        this.config = config;
+        this.method = 'post';
+        this.invalidFileSizeMessageSummary = '{0}: Invalid file size, ';
+        this.invalidFileSizeMessageDetail = 'maximum upload size is {0}.';
+        this.invalidFileTypeMessageSummary = '{0}: Invalid file type, ';
+        this.invalidFileTypeMessageDetail = 'allowed file types: {0}.';
+        this.invalidFileLimitMessageDetail = 'limit is {0} at most.';
+        this.invalidFileLimitMessageSummary = 'Maximum number of files exceeded, ';
+        this.previewWidth = 50;
+        this.chooseIcon = 'pi pi-plus';
+        this.uploadIcon = 'pi pi-upload';
+        this.cancelIcon = 'pi pi-times';
+        this.showUploadButton = true;
+        this.showCancelButton = true;
+        this.mode = 'advanced';
+        this.onBeforeUpload = new EventEmitter();
+        this.onSend = new EventEmitter();
+        this.onUpload = new EventEmitter();
+        this.onError = new EventEmitter();
+        this.onClear = new EventEmitter();
+        this.onRemove = new EventEmitter();
+        this.onSelect = new EventEmitter();
+        this.onProgress = new EventEmitter();
+        this.uploadHandler = new EventEmitter();
+        this._files = [];
+        this.progress = 0;
+        this.uploadedFileCount = 0;
+    }
+    set files(files) {
+        this._files = [];
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (this.validate(file)) {
+                if (this.isImage(file)) {
+                    file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                }
+                this._files.push(files[i]);
+            }
+        }
+    }
+    get files() {
+        return this._files;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'file':
+                    this.fileTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'toolbar':
+                    this.toolbarTemplate = item.template;
+                    break;
+                default:
+                    this.fileTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.mode === 'advanced') {
+            this.zone.runOutsideAngular(() => {
+                if (this.content)
+                    this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));
+            });
+        }
+    }
+    choose() {
+        this.advancedFileInput.nativeElement.click();
+    }
+    onFileSelect(event) {
+        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {
+            this.duplicateIEEvent = false;
+            return;
+        }
+        this.msgs = [];
+        if (!this.multiple) {
+            this.files = [];
+        }
+        let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+        for (let i = 0; i < files.length; i++) {
+            let file = files[i];
+            if (!this.isFileSelected(file)) {
+                if (this.validate(file)) {
+                    if (this.isImage(file)) {
+                        file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));
+                    }
+                    this.files.push(files[i]);
+                }
+            }
+        }
+        this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });
+        if (this.fileLimit && this.mode == "advanced") {
+            this.checkFileLimit();
+        }
+        if (this.hasFiles() && this.auto && (!(this.mode === "advanced") || !this.isFileLimitExceeded())) {
+            this.upload();
+        }
+        if (event.type !== 'drop' && this.isIE11()) {
+            this.clearIEInput();
+        }
+        else {
+            this.clearInputElement();
+        }
+    }
+    isFileSelected(file) {
+        for (let sFile of this.files) {
+            if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type + file.size)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    isIE11() {
+        return !!window['MSInputMethodContext'] && !!document['documentMode'];
+    }
+    validate(file) {
+        if (this.accept && !this.isFileTypeValid(file)) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)
+            });
+            return false;
+        }
+        if (this.maxFileSize && file.size > this.maxFileSize) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),
+                detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))
+            });
+            return false;
+        }
+        return true;
+    }
+    isFileTypeValid(file) {
+        let acceptableTypes = this.accept.split(',').map(type => type.trim());
+        for (let type of acceptableTypes) {
+            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)
+                : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();
+            if (acceptable) {
+                return true;
+            }
+        }
+        return false;
+    }
+    getTypeClass(fileType) {
+        return fileType.substring(0, fileType.indexOf('/'));
+    }
+    isWildcard(fileType) {
+        return fileType.indexOf('*') !== -1;
+    }
+    getFileExtension(file) {
+        return '.' + file.name.split('.').pop();
+    }
+    isImage(file) {
+        return /^image\//.test(file.type);
+    }
+    onImageLoad(img) {
+        window.URL.revokeObjectURL(img.src);
+    }
+    upload() {
+        if (this.customUpload) {
+            if (this.fileLimit) {
+                this.uploadedFileCount += this.files.length;
+            }
+            this.uploadHandler.emit({
+                files: this.files
+            });
+            this.cd.markForCheck();
+        }
+        else {
+            this.uploading = true;
+            this.msgs = [];
+            let formData = new FormData();
+            this.onBeforeUpload.emit({
+                'formData': formData
+            });
+            for (let i = 0; i < this.files.length; i++) {
+                formData.append(this.name, this.files[i], this.files[i].name);
+            }
+            this.http[this.method](this.url, formData, {
+                headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials
+            }).subscribe((event) => {
+                switch (event.type) {
+                    case HttpEventType.Sent:
+                        this.onSend.emit({
+                            originalEvent: event,
+                            'formData': formData
+                        });
+                        break;
+                    case HttpEventType.Response:
+                        this.uploading = false;
+                        this.progress = 0;
+                        if (event['status'] >= 200 && event['status'] < 300) {
+                            if (this.fileLimit) {
+                                this.uploadedFileCount += this.files.length;
+                            }
+                            this.onUpload.emit({ originalEvent: event, files: this.files });
+                        }
+                        else {
+                            this.onError.emit({ files: this.files });
+                        }
+                        this.clear();
+                        break;
+                    case HttpEventType.UploadProgress: {
+                        if (event['loaded']) {
+                            this.progress = Math.round((event['loaded'] * 100) / event['total']);
+                        }
+                        this.onProgress.emit({ originalEvent: event, progress: this.progress });
+                        break;
+                    }
+                }
+                this.cd.markForCheck();
+            }, error => {
+                this.uploading = false;
+                this.onError.emit({ files: this.files, error: error });
+            });
+        }
+    }
+    clear() {
+        this.files = [];
+        this.onClear.emit();
+        this.clearInputElement();
+        this.cd.markForCheck();
+    }
+    remove(event, index) {
+        this.clearInputElement();
+        this.onRemove.emit({ originalEvent: event, file: this.files[index] });
+        this.files.splice(index, 1);
+    }
+    isFileLimitExceeded() {
+        if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {
+            this.focus = false;
+        }
+        return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;
+    }
+    isChooseDisabled() {
+        return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;
+    }
+    checkFileLimit() {
+        if (this.isFileLimitExceeded()) {
+            this.msgs.push({
+                severity: 'error',
+                summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),
+                detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())
+            });
+        }
+    }
+    clearInputElement() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.advancedFileInput.nativeElement.value = '';
+        }
+        if (this.basicFileInput && this.basicFileInput.nativeElement) {
+            this.basicFileInput.nativeElement.value = '';
+        }
+    }
+    clearIEInput() {
+        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {
+            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again
+            this.advancedFileInput.nativeElement.value = '';
+        }
+    }
+    hasFiles() {
+        return this.files && this.files.length > 0;
+    }
+    onDragEnter(e) {
+        if (!this.disabled) {
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragOver(e) {
+        if (!this.disabled) {
+            DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');
+            this.dragHighlight = true;
+            e.stopPropagation();
+            e.preventDefault();
+        }
+    }
+    onDragLeave(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+        }
+    }
+    onDrop(event) {
+        if (!this.disabled) {
+            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');
+            event.stopPropagation();
+            event.preventDefault();
+            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
+            let allowDrop = this.multiple || (files && files.length === 1);
+            if (allowDrop) {
+                this.onFileSelect(event);
+            }
+        }
+    }
+    onFocus() {
+        this.focus = true;
+    }
+    onBlur() {
+        this.focus = false;
+    }
+    formatSize(bytes) {
+        if (bytes == 0) {
+            return '0 B';
+        }
+        let k = 1000, dm = 3, sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k));
+        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
+    }
+    onBasicUploaderClick() {
+        if (this.hasFiles())
+            this.upload();
+        else
+            this.basicFileInput.nativeElement.click();
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get chooseButtonLabel() {
+        return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);
+    }
+    get uploadButtonLabel() {
+        return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);
+    }
+    get cancelButtonLabel() {
+        return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);
+    }
+    ngOnDestroy() {
+        if (this.content && this.content.nativeElement) {
+            this.content.nativeElement.removeEventListener('dragover', this.onDragOver);
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+FileUpload.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }, { token: i2.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+FileUpload.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FileUpload, selector: "p-fileUpload", inputs: { name: "name", url: "url", method: "method", multiple: "multiple", accept: "accept", disabled: "disabled", auto: "auto", withCredentials: "withCredentials", maxFileSize: "maxFileSize", invalidFileSizeMessageSummary: "invalidFileSizeMessageSummary", invalidFileSizeMessageDetail: "invalidFileSizeMessageDetail", invalidFileTypeMessageSummary: "invalidFileTypeMessageSummary", invalidFileTypeMessageDetail: "invalidFileTypeMessageDetail", invalidFileLimitMessageDetail: "invalidFileLimitMessageDetail", invalidFileLimitMessageSummary: "invalidFileLimitMessageSummary", style: "style", styleClass: "styleClass", previewWidth: "previewWidth", chooseLabel: "chooseLabel", uploadLabel: "uploadLabel", cancelLabel: "cancelLabel", chooseIcon: "chooseIcon", uploadIcon: "uploadIcon", cancelIcon: "cancelIcon", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", mode: "mode", headers: "headers", customUpload: "customUpload", fileLimit: "fileLimit", files: "files" }, outputs: { onBeforeUpload: "onBeforeUpload", onSend: "onSend", onUpload: "onUpload", onError: "onError", onClear: "onClear", onRemove: "onRemove", onSelect: "onSelect", onProgress: "onProgress", uploadHandler: "uploadHandler" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "advancedFileInput", first: true, predicate: ["advancedfileinput"], descendants: true }, { propertyName: "basicFileInput", first: true, predicate: ["basicfileinput"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, isInline: true, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"], components: [{ type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "style", "styleClass", "unit", "mode"] }, { type: i6.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUpload, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-fileUpload', template: `
+        <div [ngClass]="'p-fileupload p-fileupload-advanced p-component'" [ngStyle]="style" [class]="styleClass" *ngIf="mode === 'advanced'">
+            <div class="p-fileupload-buttonbar">
+                <span class="p-button p-component p-fileupload-choose" [ngClass]="{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}" (focus)="onFocus()" (blur)="onBlur()" pRipple
+                    (click)="choose()" (keydown.enter)="choose()" tabindex="0">
+                    <input #advancedfileinput type="file" (change)="onFileSelect($event)" [multiple]="multiple" [accept]="accept" [disabled]="disabled || isChooseDisabled()" [attr.title]="''">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="chooseIcon"></span>
+                    <span class="p-button-label">{{chooseButtonLabel}}</span>
+                </span>
+
+                <p-button *ngIf="!auto&&showUploadButton" type="button" [label]="uploadButtonLabel" [icon]="uploadIcon" (onClick)="upload()" [disabled]="!hasFiles() || isFileLimitExceeded()"></p-button>
+                <p-button *ngIf="!auto&&showCancelButton" type="button" [label]="cancelButtonLabel" [icon]="cancelIcon" (onClick)="clear()" [disabled]="!hasFiles() || uploading"></p-button>
+
+                <ng-container *ngTemplateOutlet="toolbarTemplate"></ng-container>
+            </div>
+            <div #content class="p-fileupload-content" (dragenter)="onDragEnter($event)" (dragleave)="onDragLeave($event)" (drop)="onDrop($event)">
+                <p-progressBar [value]="progress" [showValue]="false" *ngIf="hasFiles()"></p-progressBar>
+
+                <p-messages [value]="msgs" [enableService]="false"></p-messages>
+
+                <div class="p-fileupload-files" *ngIf="hasFiles()">
+                    <div *ngIf="!fileTemplate">
+                        <div class="p-fileupload-row" *ngFor="let file of files; let i = index;">
+                            <div><img [src]="file.objectURL" *ngIf="isImage(file)" [width]="previewWidth" /></div>
+                            <div class="p-fileupload-filename">{{file.name}}</div>
+                            <div>{{formatSize(file.size)}}</div>
+                            <div>
+                                <button type="button" icon="pi pi-times" pButton (click)="remove($event,i)" [disabled]="uploading"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div *ngIf="fileTemplate">
+                        <ng-template ngFor [ngForOf]="files" [ngForTemplate]="fileTemplate"></ng-template>
+                    </div>
+                </div>
+                <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: files}"></ng-container>
+            </div>
+        </div>
+        <div class="p-fileupload p-fileupload-basic p-component" *ngIf="mode === 'basic'">
+            <p-messages [value]="msgs" [enableService]="false"></p-messages>
+            <span [ngClass]="{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}"
+                [ngStyle]="style" [class]="styleClass" (mouseup)="onBasicUploaderClick()" (keydown)="onBasicUploaderClick()" tabindex="0" pRipple>
+                <span class="p-button-icon p-button-icon-left pi" [ngClass]="hasFiles()&&!auto ? uploadIcon : chooseIcon"></span>
+                <span class="p-button-label">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>
+                <input #basicfileinput type="file" [accept]="accept" [multiple]="multiple" [disabled]="disabled"
+                    (change)="onFileSelect($event)" *ngIf="!hasFiles()" (focus)="onFocus()" (blur)="onBlur()">
+            </span>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-fileupload-content{position:relative}.p-fileupload-row{display:flex;align-items:center}.p-fileupload-row>div{flex:1 1 auto;width:25%}.p-fileupload-row>div:last-child{text-align:right}.p-fileupload-content .p-progressbar{width:100%;position:absolute;top:0;left:0}.p-button.p-fileupload-choose{position:relative;overflow:hidden}.p-button.p-fileupload-choose input[type=file],.p-fileupload-choose.p-fileupload-choose-selected input[type=file]{display:none}.p-fluid .p-fileupload .p-button{width:auto}.p-fileupload-filename{word-break:break-all}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }, { type: i2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { name: [{
+                type: Input
+            }], url: [{
+                type: Input
+            }], method: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], accept: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], auto: [{
+                type: Input
+            }], withCredentials: [{
+                type: Input
+            }], maxFileSize: [{
+                type: Input
+            }], invalidFileSizeMessageSummary: [{
+                type: Input
+            }], invalidFileSizeMessageDetail: [{
+                type: Input
+            }], invalidFileTypeMessageSummary: [{
+                type: Input
+            }], invalidFileTypeMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageDetail: [{
+                type: Input
+            }], invalidFileLimitMessageSummary: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], previewWidth: [{
+                type: Input
+            }], chooseLabel: [{
+                type: Input
+            }], uploadLabel: [{
+                type: Input
+            }], cancelLabel: [{
+                type: Input
+            }], chooseIcon: [{
+                type: Input
+            }], uploadIcon: [{
+                type: Input
+            }], cancelIcon: [{
+                type: Input
+            }], showUploadButton: [{
+                type: Input
+            }], showCancelButton: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], headers: [{
+                type: Input
+            }], customUpload: [{
+                type: Input
+            }], fileLimit: [{
+                type: Input
+            }], onBeforeUpload: [{
+                type: Output
+            }], onSend: [{
+                type: Output
+            }], onUpload: [{
+                type: Output
+            }], onError: [{
+                type: Output
+            }], onClear: [{
+                type: Output
+            }], onRemove: [{
+                type: Output
+            }], onSelect: [{
+                type: Output
+            }], onProgress: [{
+                type: Output
+            }], uploadHandler: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], advancedFileInput: [{
+                type: ViewChild,
+                args: ['advancedfileinput']
+            }], basicFileInput: [{
+                type: ViewChild,
+                args: ['basicfileinput']
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], files: [{
+                type: Input
+            }] } });
+class FileUploadModule {
+}
+FileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, declarations: [FileUpload], imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+FileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, imports: [[CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule], SharedModule, ButtonModule, ProgressBarModule, MessagesModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FileUploadModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ButtonModule, ProgressBarModule, MessagesModule, RippleModule],
+                    exports: [FileUpload, SharedModule, ButtonModule, ProgressBarModule, MessagesModule],
+                    declarations: [FileUpload]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FileUpload, FileUploadModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fileupload.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fileupload.mjs","sources":["../../src/app/components/fileupload/fileupload.ts","../../src/app/components/fileupload/primeng-fileupload.ts"],"sourcesContent":["import {NgModule,Component,OnDestroy,Input,Output,EventEmitter,TemplateRef,AfterViewInit,AfterContentInit,\n            ContentChildren,QueryList,ViewChild,ElementRef,NgZone,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {ProgressBarModule} from 'primeng/progressbar';\nimport {DomHandler} from 'primeng/dom';\nimport {Message, TranslationKeys} from 'primeng/api';\nimport {PrimeTemplate,SharedModule,PrimeNGConfig} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {HttpClient, HttpEvent, HttpEventType, HttpHeaders} from \"@angular/common/http\";\nimport {Subscription} from 'rxjs';\n\n@Component({\n    selector: 'p-fileUpload',\n    template: `\n        <div [ngClass]=\"'p-fileupload p-fileupload-advanced p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"mode === 'advanced'\">\n            <div class=\"p-fileupload-buttonbar\">\n                <span class=\"p-button p-component p-fileupload-choose\" [ngClass]=\"{'p-focus': focus, 'p-disabled':disabled || isChooseDisabled()}\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" pRipple\n                    (click)=\"choose()\" (keydown.enter)=\"choose()\" tabindex=\"0\">\n                    <input #advancedfileinput type=\"file\" (change)=\"onFileSelect($event)\" [multiple]=\"multiple\" [accept]=\"accept\" [disabled]=\"disabled || isChooseDisabled()\" [attr.title]=\"''\">\n                    <span [ngClass]=\"'p-button-icon p-button-icon-left'\" [class]=\"chooseIcon\"></span>\n                    <span class=\"p-button-label\">{{chooseButtonLabel}}</span>\n                </span>\n\n                <p-button *ngIf=\"!auto&&showUploadButton\" type=\"button\" [label]=\"uploadButtonLabel\" [icon]=\"uploadIcon\" (onClick)=\"upload()\" [disabled]=\"!hasFiles() || isFileLimitExceeded()\"></p-button>\n                <p-button *ngIf=\"!auto&&showCancelButton\" type=\"button\" [label]=\"cancelButtonLabel\" [icon]=\"cancelIcon\" (onClick)=\"clear()\" [disabled]=\"!hasFiles() || uploading\"></p-button>\n\n                <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n            </div>\n            <div #content class=\"p-fileupload-content\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\">\n                <p-progressBar [value]=\"progress\" [showValue]=\"false\" *ngIf=\"hasFiles()\"></p-progressBar>\n\n                <p-messages [value]=\"msgs\" [enableService]=\"false\"></p-messages>\n\n                <div class=\"p-fileupload-files\" *ngIf=\"hasFiles()\">\n                    <div *ngIf=\"!fileTemplate\">\n                        <div class=\"p-fileupload-row\" *ngFor=\"let file of files; let i = index;\">\n                            <div><img [src]=\"file.objectURL\" *ngIf=\"isImage(file)\" [width]=\"previewWidth\" /></div>\n                            <div class=\"p-fileupload-filename\">{{file.name}}</div>\n                            <div>{{formatSize(file.size)}}</div>\n                            <div>\n                                <button type=\"button\" icon=\"pi pi-times\" pButton (click)=\"remove($event,i)\" [disabled]=\"uploading\"></button>\n                            </div>\n                        </div>\n                    </div>\n                    <div *ngIf=\"fileTemplate\">\n                        <ng-template ngFor [ngForOf]=\"files\" [ngForTemplate]=\"fileTemplate\"></ng-template>\n                    </div>\n                </div>\n                <ng-container *ngTemplateOutlet=\"contentTemplate; context: {$implicit: files}\"></ng-container>\n            </div>\n        </div>\n        <div class=\"p-fileupload p-fileupload-basic p-component\" *ngIf=\"mode === 'basic'\">\n            <p-messages [value]=\"msgs\" [enableService]=\"false\"></p-messages>\n            <span [ngClass]=\"{'p-button p-component p-fileupload-choose': true, 'p-button-icon-only': !chooseLabel, 'p-fileupload-choose-selected': hasFiles(),'p-focus': focus, 'p-disabled':disabled}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\" (mouseup)=\"onBasicUploaderClick()\" (keydown)=\"onBasicUploaderClick()\" tabindex=\"0\" pRipple>\n                <span class=\"p-button-icon p-button-icon-left pi\" [ngClass]=\"hasFiles()&&!auto ? uploadIcon : chooseIcon\"></span>\n                <span class=\"p-button-label\">{{auto ? chooseLabel : hasFiles() ? files[0].name : chooseLabel}}</span>\n                <input #basicfileinput type=\"file\" [accept]=\"accept\" [multiple]=\"multiple\" [disabled]=\"disabled\"\n                    (change)=\"onFileSelect($event)\" *ngIf=\"!hasFiles()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n            </span>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./fileupload.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FileUpload implements AfterViewInit,AfterContentInit,OnInit,OnDestroy,BlockableUI {\n\n    @Input() name: string;\n\n    @Input() url: string;\n\n    @Input() method: string = 'post';\n\n    @Input() multiple: boolean;\n\n    @Input() accept: string;\n\n    @Input() disabled: boolean;\n\n    @Input() auto: boolean;\n\n    @Input() withCredentials: boolean;\n\n    @Input() maxFileSize: number;\n\n    @Input() invalidFileSizeMessageSummary: string = '{0}: Invalid file size, ';\n\n    @Input() invalidFileSizeMessageDetail: string = 'maximum upload size is {0}.';\n\n    @Input() invalidFileTypeMessageSummary: string = '{0}: Invalid file type, ';\n\n    @Input() invalidFileTypeMessageDetail: string = 'allowed file types: {0}.';\n\n    @Input() invalidFileLimitMessageDetail: string = 'limit is {0} at most.';\n\n    @Input() invalidFileLimitMessageSummary: string = 'Maximum number of files exceeded, ';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() previewWidth: number = 50;\n\n    @Input() chooseLabel: string;\n\n    @Input() uploadLabel: string;\n\n    @Input() cancelLabel: string;\n\n    @Input() chooseIcon: string = 'pi pi-plus';\n\n    @Input() uploadIcon: string = 'pi pi-upload';\n\n    @Input() cancelIcon: string = 'pi pi-times';\n\n    @Input() showUploadButton: boolean = true;\n\n    @Input() showCancelButton: boolean = true;\n\n    @Input() mode: string = 'advanced';\n\n    @Input() headers: HttpHeaders;\n\n    @Input() customUpload: boolean;\n\n    @Input() fileLimit: number;\n\n    @Output() onBeforeUpload: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSend: EventEmitter<any> = new EventEmitter();\n\n    @Output() onUpload: EventEmitter<any> = new EventEmitter();\n\n    @Output() onError: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRemove: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onProgress: EventEmitter<any> = new EventEmitter();\n\n    @Output() uploadHandler: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('advancedfileinput') advancedFileInput: ElementRef;\n\n    @ViewChild('basicfileinput') basicFileInput: ElementRef;\n\n    @ViewChild('content') content: ElementRef;\n\n    @Input() set files(files) {\n        this._files = [];\n\n        for(let i = 0; i < files.length; i++) {\n            let file = files[i];\n\n            if (this.validate(file)) {\n                if (this.isImage(file)) {\n                    (<any>file).objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n                }\n\n                this._files.push(files[i]);\n            }\n        }\n    }\n\n    get files(): File[] {\n        return this._files;\n    }\n\n    public _files: File[] = [];\n\n    public progress: number = 0;\n\n    public dragHighlight: boolean;\n\n    public msgs: Message[];\n\n    public fileTemplate: TemplateRef<any>;\n\n    public contentTemplate: TemplateRef<any>;\n\n    public toolbarTemplate: TemplateRef<any>;\n\n    public uploadedFileCount: number = 0;\n\n    focus: boolean;\n\n    uploading: boolean;\n\n    duplicateIEEvent: boolean;  // flag to recognize duplicate onchange event for file input\n\n    translationSubscription: Subscription;\n\n    constructor(private el: ElementRef, public sanitizer: DomSanitizer, public zone: NgZone, private http: HttpClient, public cd: ChangeDetectorRef, public config: PrimeNGConfig){}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'file':\n                    this.fileTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'toolbar':\n                    this.toolbarTemplate = item.template;\n                break;\n\n                default:\n                    this.fileTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n\n    ngOnInit() {\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.mode === 'advanced') {\n            this.zone.runOutsideAngular(() => {\n                if (this.content)\n                    this.content.nativeElement.addEventListener('dragover', this.onDragOver.bind(this));\n            });\n        }\n    }\n\n    choose() {\n        this.advancedFileInput.nativeElement.click();\n    }\n\n    onFileSelect(event) {\n        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n            this.duplicateIEEvent = false;\n            return;\n        }\n\n        this.msgs = [];\n        if (!this.multiple) {\n            this.files = [];\n        }\n\n        let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n        for(let i = 0; i < files.length; i++) {\n            let file = files[i];\n\n            if (!this.isFileSelected(file)){\n              if (this.validate(file)) {\n                  if (this.isImage(file)) {\n                      file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));\n                  }\n\n                  this.files.push(files[i]);\n              }\n            }\n        }\n\n        this.onSelect.emit({originalEvent: event, files: files, currentFiles: this.files});\n\n        if (this.fileLimit && this.mode == \"advanced\") {\n            this.checkFileLimit();\n        }\n\n        if (this.hasFiles() && this.auto && (!(this.mode === \"advanced\") || !this.isFileLimitExceeded())) {\n            this.upload();\n        }\n\n        if (event.type !== 'drop' && this.isIE11()) {\n          this.clearIEInput();\n        } else {\n          this.clearInputElement();\n        }\n    }\n\n    isFileSelected(file: File): boolean{\n        for(let sFile of this.files){\n            if ((sFile.name + sFile.type + sFile.size) === (file.name + file.type+file.size)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    isIE11() {\n        return !!window['MSInputMethodContext'] && !!document['documentMode'];\n    }\n\n    validate(file: File): boolean {\n        if (this.accept && !this.isFileTypeValid(file)) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileTypeMessageSummary.replace('{0}', file.name),\n                detail: this.invalidFileTypeMessageDetail.replace('{0}', this.accept)\n            });\n            return false;\n        }\n\n        if (this.maxFileSize  && file.size > this.maxFileSize) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileSizeMessageSummary.replace('{0}', file.name),\n                detail: this.invalidFileSizeMessageDetail.replace('{0}', this.formatSize(this.maxFileSize))\n            });\n            return false;\n        }\n\n        return true;\n    }\n\n    private isFileTypeValid(file: File): boolean {\n        let acceptableTypes = this.accept.split(',').map(type => type.trim());\n        for(let type of acceptableTypes) {\n            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type)\n                                                    : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n            if (acceptable) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    getTypeClass(fileType: string): string {\n        return fileType.substring(0, fileType.indexOf('/'));\n    }\n\n    isWildcard(fileType: string): boolean {\n        return fileType.indexOf('*') !== -1;\n    }\n\n    getFileExtension(file: File): string {\n        return '.' + file.name.split('.').pop();\n    }\n\n    isImage(file: File): boolean {\n        return /^image\\//.test(file.type);\n    }\n\n    onImageLoad(img: any) {\n        window.URL.revokeObjectURL(img.src);\n    }\n\n    upload() {\n        if (this.customUpload) {\n            if (this.fileLimit) {\n                this.uploadedFileCount += this.files.length;\n            }\n\n            this.uploadHandler.emit({\n                files: this.files\n            });\n\n            this.cd.markForCheck();\n        }\n        else {\n            this.uploading = true;\n            this.msgs = [];\n            let formData = new FormData();\n\n            this.onBeforeUpload.emit({\n                'formData': formData\n            });\n\n            for (let i = 0; i < this.files.length; i++) {\n                formData.append(this.name, this.files[i], this.files[i].name);\n            }\n\n            this.http[this.method](this.url, formData, {\n                headers: this.headers, reportProgress: true, observe: 'events', withCredentials: this.withCredentials\n            }).subscribe( (event: HttpEvent<any>) => {\n                    switch (event.type) {\n                        case HttpEventType.Sent:\n                            this.onSend.emit({\n                                originalEvent: event,\n                                'formData': formData\n                            });\n                            break;\n                        case HttpEventType.Response:\n                            this.uploading = false;\n                            this.progress = 0;\n\n                            if (event['status'] >= 200 && event['status'] < 300) {\n                                if (this.fileLimit) {\n                                    this.uploadedFileCount += this.files.length;\n                                }\n\n                                this.onUpload.emit({originalEvent: event, files: this.files});\n                            } else {\n                                this.onError.emit({files: this.files});\n                            }\n\n                            this.clear();\n                            break;\n                        case HttpEventType.UploadProgress: {\n                            if (event['loaded']) {\n                                this.progress = Math.round((event['loaded'] * 100) / event['total']);\n                            }\n\n                            this.onProgress.emit({originalEvent: event, progress: this.progress});\n                            break;\n                        }\n                    }\n\n                    this.cd.markForCheck();\n                },\n                error => {\n                    this.uploading = false;\n                    this.onError.emit({files: this.files, error: error});\n                });\n        }\n    }\n\n    clear() {\n        this.files = [];\n        this.onClear.emit();\n        this.clearInputElement();\n        this.cd.markForCheck();\n    }\n\n    remove(event: Event, index: number) {\n        this.clearInputElement();\n        this.onRemove.emit({originalEvent: event, file: this.files[index]});\n        this.files.splice(index, 1);\n    }\n\n    isFileLimitExceeded() {\n        if (this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount && this.focus) {\n            this.focus = false;\n        }\n\n        return this.fileLimit && this.fileLimit < this.files.length + this.uploadedFileCount;\n    }\n\n    isChooseDisabled() {\n        return this.fileLimit && this.fileLimit <= this.files.length + this.uploadedFileCount;\n    }\n\n    checkFileLimit() {\n        if (this.isFileLimitExceeded()) {\n            this.msgs.push({\n                severity: 'error',\n                summary: this.invalidFileLimitMessageSummary.replace('{0}', this.fileLimit.toString()),\n                detail: this.invalidFileLimitMessageDetail.replace('{0}', this.fileLimit.toString())\n            });\n        }\n    }\n\n    clearInputElement() {\n        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n            this.advancedFileInput.nativeElement.value = '';\n        }\n\n        if (this.basicFileInput && this.basicFileInput.nativeElement) {\n            this.basicFileInput.nativeElement.value = '';\n        }\n    }\n\n    clearIEInput() {\n        if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n            this.advancedFileInput.nativeElement.value = '';\n        }\n    }\n\n    hasFiles(): boolean {\n        return this.files && this.files.length > 0;\n    }\n\n    onDragEnter(e) {\n        if (!this.disabled) {\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragOver(e) {\n        if (!this.disabled) {\n            DomHandler.addClass(this.content.nativeElement, 'p-fileupload-highlight');\n            this.dragHighlight = true;\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragLeave(event) {\n        if (!this.disabled) {\n            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n        }\n    }\n\n    onDrop(event) {\n        if (!this.disabled) {\n            DomHandler.removeClass(this.content.nativeElement, 'p-fileupload-highlight');\n            event.stopPropagation();\n            event.preventDefault();\n\n            let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n            let allowDrop = this.multiple||(files && files.length === 1);\n\n            if (allowDrop) {\n                this.onFileSelect(event);\n            }\n        }\n    }\n\n    onFocus() {\n        this.focus = true;\n    }\n\n    onBlur() {\n        this.focus = false;\n    }\n\n    formatSize(bytes) {\n        if (bytes == 0) {\n            return '0 B';\n        }\n        let k = 1000,\n        dm = 3,\n        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n        i = Math.floor(Math.log(bytes) / Math.log(k));\n\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n    }\n\n    onBasicUploaderClick() {\n        if (this.hasFiles())\n            this.upload();\n        else\n            this.basicFileInput.nativeElement.click();\n    }\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    get chooseButtonLabel(): string {\n        return this.chooseLabel || this.config.getTranslation(TranslationKeys.CHOOSE);\n    }\n\n    get uploadButtonLabel(): string {\n        return this.uploadLabel || this.config.getTranslation(TranslationKeys.UPLOAD);\n    }\n\n    get cancelButtonLabel(): string {\n        return this.cancelLabel || this.config.getTranslation(TranslationKeys.CANCEL);\n    }\n\n    ngOnDestroy() {\n        if (this.content && this.content.nativeElement) {\n            this.content.nativeElement.removeEventListener('dragover', this.onDragOver);\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ButtonModule,ProgressBarModule,MessagesModule,RippleModule],\n    exports: [FileUpload,SharedModule,ButtonModule,ProgressBarModule,MessagesModule],\n    declarations: [FileUpload]\n})\nexport class FileUploadModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,74 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class FocusTrap {
+    constructor(el) {
+        this.el = el;
+    }
+    onkeydown(e) {
+        if (this.pFocusTrapDisabled !== true) {
+            e.preventDefault();
+            let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+            if (focusableElements && focusableElements.length > 0) {
+                if (!focusableElements[0].ownerDocument.activeElement) {
+                    focusableElements[0].focus();
+                }
+                else {
+                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);
+                    if (e.shiftKey) {
+                        if (focusedIndex == -1 || focusedIndex === 0)
+                            focusableElements[focusableElements.length - 1].focus();
+                        else
+                            focusableElements[focusedIndex - 1].focus();
+                    }
+                    else {
+                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))
+                            focusableElements[0].focus();
+                        else
+                            focusableElements[focusedIndex + 1].focus();
+                    }
+                }
+            }
+        }
+    }
+}
+FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FocusTrap, selector: "[pFocusTrap]", inputs: { pFocusTrapDisabled: "pFocusTrapDisabled" }, host: { listeners: { "keydown.tab": "onkeydown($event)", "keydown.shift.tab": "onkeydown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrap, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFocusTrap]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pFocusTrapDisabled: [{
+                type: Input
+            }], onkeydown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }] } });
+class FocusTrapModule {
+}
+FocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrap], imports: [CommonModule], exports: [FocusTrap] });
+FocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FocusTrapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FocusTrap],
+                    declarations: [FocusTrap]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FocusTrap, FocusTrapModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-focustrap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-focustrap.mjs","sources":["../../src/app/components/focustrap/focustrap.ts","../../src/app/components/focustrap/primeng-focustrap.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Directive({\n    selector: '[pFocusTrap]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FocusTrap {\n\n    @Input() pFocusTrapDisabled: boolean;\n\n    constructor(public el: ElementRef) {}\n\n    @HostListener('keydown.tab', ['$event'])\n    @HostListener('keydown.shift.tab', ['$event'])\n    onkeydown(e) {\n        if (this.pFocusTrapDisabled !== true) {\n            e.preventDefault();\n            let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);\n            if (focusableElements && focusableElements.length > 0) {\n                if (!focusableElements[0].ownerDocument.activeElement) {\n                    focusableElements[0].focus();\n                }\n                else {\n                    let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n                    if (e.shiftKey) {\n                        if (focusedIndex == -1 || focusedIndex === 0)\n                            focusableElements[focusableElements.length - 1].focus();\n                        else\n                            focusableElements[focusedIndex - 1].focus();\n                    }\n                    else {\n                        if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1))\n                            focusableElements[0].focus();\n                        else\n                            focusableElements[focusedIndex + 1].focus();\n                    }\n                }\n            }\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [FocusTrap],\n    declarations: [FocusTrap]\n})\nexport class FocusTrapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAUa,SAAS;IAIlB,YAAmB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAI;IAIrC,SAAS,CAAC,CAAC;QACP,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;YAClC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC/E,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE;oBACnD,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAChC;qBACI;oBACD,IAAI,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;oBAE/F,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACZ,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC;4BACxC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;;4BAExD,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACnD;yBACI;wBACD,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;4BACrE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;;4BAE7B,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACnD;iBACJ;aACJ;SACJ;KACJ;;sGAlCQ,SAAS;0FAAT,SAAS;2FAAT,SAAS;kBANrB,SAAS;mBAAC;oBACP,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;iGAGY,kBAAkB;sBAA1B,KAAK;gBAMN,SAAS;sBAFR,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBACtC,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;;MAmCpC,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBA1Cf,SAAS,aAsCR,YAAY,aAtCb,SAAS;6GA0CT,eAAe,YAJf,CAAC,YAAY,CAAC;2FAId,eAAe;kBAL3B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;ACnDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,109 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Calendar } from '@fullcalendar/core';
+
+class FullCalendar {
+    constructor(el) {
+        this.el = el;
+    }
+    ngOnInit() {
+        this.config = {
+            theme: true
+        };
+        if (this.options) {
+            for (let prop in this.options) {
+                this.config[prop] = this.options[prop];
+            }
+        }
+    }
+    ngAfterViewChecked() {
+        if (!this.initialized && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    get events() {
+        return this._events;
+    }
+    set events(value) {
+        this._events = value;
+        if (this._events && this.calendar) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this._events);
+        }
+    }
+    get options() {
+        return this._options;
+    }
+    set options(value) {
+        this._options = value;
+        if (this._options && this.calendar) {
+            for (let prop in this._options) {
+                let optionValue = this._options[prop];
+                this.config[prop] = optionValue;
+                this.calendar.setOption(prop, optionValue);
+            }
+        }
+    }
+    initialize() {
+        this.calendar = new Calendar(this.el.nativeElement.children[0], this.config);
+        this.calendar.render();
+        this.initialized = true;
+        if (this.events) {
+            this.calendar.removeAllEventSources();
+            this.calendar.addEventSource(this.events);
+        }
+    }
+    getCalendar() {
+        return this.calendar;
+    }
+    ngOnDestroy() {
+        if (this.calendar) {
+            this.calendar.destroy();
+            this.initialized = false;
+            this.calendar = null;
+        }
+    }
+}
+FullCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+FullCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FullCalendar, selector: "p-fullCalendar", inputs: { style: "style", styleClass: "styleClass", events: "events", options: "options" }, host: { classAttribute: "p-element" }, ngImport: i0, template: '<div [ngStyle]="style" [class]="styleClass"></div>', isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendar, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-fullCalendar',
+                    template: '<div [ngStyle]="style" [class]="styleClass"></div>',
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], events: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }] } });
+class FullCalendarModule {
+}
+FullCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+FullCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, declarations: [FullCalendar], imports: [CommonModule], exports: [FullCalendar] });
+FullCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FullCalendarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [FullCalendar],
+                    declarations: [FullCalendar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { FullCalendar, FullCalendarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-fullcalendar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-fullcalendar.mjs","sources":["../../src/app/components/fullcalendar/fullcalendar.ts","../../src/app/components/fullcalendar/primeng-fullcalendar.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,OnInit,AfterViewChecked,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Calendar} from '@fullcalendar/core';\n\n@Component({\n    selector: 'p-fullCalendar',\n    template: '<div [ngStyle]=\"style\" [class]=\"styleClass\"></div>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class FullCalendar implements OnDestroy,OnInit,AfterViewChecked {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    initialized: boolean;\n\n    calendar: any;\n\n    config: any;\n\n    _options: any;\n\n    _events: any[];\n\n    constructor(public el: ElementRef) {}\n\n    ngOnInit() {\n        this.config = {\n            theme: true\n        };\n\n        if (this.options) {\n            for (let prop in this.options) {\n                this.config[prop] = this.options[prop];\n            }\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (!this.initialized && this.el.nativeElement.offsetParent) {\n            this.initialize();\n        }\n    }\n\n    @Input() get events(): any {\n        return this._events;\n    }\n\n    set events(value: any) {\n        this._events = value;\n\n        if (this._events && this.calendar) {\n            this.calendar.removeAllEventSources();\n            this.calendar.addEventSource(this._events);\n        }\n    }\n\n    @Input() get options(): any {\n        return this._options;\n    }\n\n    set options(value: any) {\n        this._options = value;\n\n        if (this._options && this.calendar) {\n            for (let prop in this._options) {\n                let optionValue = this._options[prop];\n                this.config[prop] = optionValue;\n                this.calendar.setOption(prop, optionValue);\n            }\n        }\n    }\n\n    initialize() {\n        this.calendar = new Calendar(this.el.nativeElement.children[0], this.config);\n        this.calendar.render();\n        this.initialized = true;\n\n        if (this.events) {\n            this.calendar.removeAllEventSources();\n            this.calendar.addEventSource(this.events);\n        }\n    }\n\n    getCalendar() {\n        return this.calendar;\n    }\n\n    ngOnDestroy() {\n        if (this.calendar) {\n            this.calendar.destroy();\n            this.initialized = false;\n            this.calendar = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [FullCalendar],\n    declarations: [FullCalendar]\n})\nexport class FullCalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1003 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ZIndexUtils, UniqueComponentId } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, transition, style, animate } from '@angular/animations';
+
+class Galleria {
+    constructor(element, cd, config) {
+        this.element = element;
+        this.cd = cd;
+        this.config = config;
+        this.fullScreen = false;
+        this.numVisible = 3;
+        this.showItemNavigators = false;
+        this.showThumbnailNavigators = true;
+        this.showItemNavigatorsOnHover = false;
+        this.changeItemOnIndicatorHover = false;
+        this.circular = false;
+        this.autoPlay = false;
+        this.transitionInterval = 4000;
+        this.showThumbnails = true;
+        this.thumbnailsPosition = "bottom";
+        this.verticalThumbnailViewPortHeight = "300px";
+        this.showIndicators = false;
+        this.showIndicatorsOnItem = false;
+        this.indicatorsPosition = "bottom";
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.activeIndexChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._visible = false;
+        this._activeIndex = 0;
+        this.maskVisible = false;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    get visible() {
+        return this._visible;
+    }
+    ;
+    set visible(visible) {
+        this._visible = visible;
+        if (this._visible && !this.maskVisible) {
+            this.maskVisible = true;
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerFacet = item.template;
+                    break;
+                case 'footer':
+                    this.footerFacet = item.template;
+                    break;
+                case 'indicator':
+                    this.indicatorFacet = item.template;
+                    break;
+                case 'caption':
+                    this.captionFacet = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChanges) {
+        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {
+            this.numVisible = simpleChanges.value.currentValue.length;
+        }
+    }
+    onMaskHide() {
+        this.visible = false;
+        this.visibleChange.emit(false);
+    }
+    onActiveItemChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeIndexChange.emit(index);
+        }
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.enableModality();
+                break;
+            case 'void':
+                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.disableModality();
+                break;
+        }
+    }
+    enableModality() {
+        DomHandler.addClass(document.body, 'p-overflow-hidden');
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+        }
+    }
+    disableModality() {
+        DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        this.maskVisible = false;
+        this.cd.markForCheck();
+        if (this.mask) {
+            ZIndexUtils.clear(this.mask.nativeElement);
+        }
+    }
+    ngOnDestroy() {
+        if (this.fullScreen) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        if (this.mask) {
+            this.disableModality();
+        }
+    }
+}
+Galleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Galleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Galleria, selector: "p-galleria", inputs: { activeIndex: "activeIndex", fullScreen: "fullScreen", id: "id", value: "value", numVisible: "numVisible", responsiveOptions: "responsiveOptions", showItemNavigators: "showItemNavigators", showThumbnailNavigators: "showThumbnailNavigators", showItemNavigatorsOnHover: "showItemNavigatorsOnHover", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", circular: "circular", autoPlay: "autoPlay", transitionInterval: "transitionInterval", showThumbnails: "showThumbnails", thumbnailsPosition: "thumbnailsPosition", verticalThumbnailViewPortHeight: "verticalThumbnailViewPortHeight", showIndicators: "showIndicators", showIndicatorsOnItem: "showIndicatorsOnItem", indicatorsPosition: "indicatorsPosition", baseZIndex: "baseZIndex", maskClass: "maskClass", containerClass: "containerClass", containerStyle: "containerStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", visible: "visible" }, outputs: { activeIndexChange: "activeIndexChange", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, isInline: true, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"], components: [{ type: i0.forwardRef(function () { return GalleriaContent; }), selector: "p-galleriaContent", inputs: ["activeIndex", "value", "numVisible"], outputs: ["maskHide", "activeItemChange"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Galleria, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-galleria', template: `
+        <div *ngIf="fullScreen;else windowed">
+            <div *ngIf="maskVisible" #mask [ngClass]="{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}" [class]="maskClass">
+                <p-galleriaContent *ngIf="visible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)"
+                    [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (maskHide)="onMaskHide()" (activeItemChange)="onActiveItemChange($event)" [ngStyle]="containerStyle"></p-galleriaContent>
+            </div>
+        </div>
+
+        <ng-template #windowed>
+            <p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
+        </ng-template>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }], id: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], showItemNavigatorsOnHover: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], transitionInterval: [{
+                type: Input
+            }], showThumbnails: [{
+                type: Input
+            }], thumbnailsPosition: [{
+                type: Input
+            }], verticalThumbnailViewPortHeight: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], showIndicatorsOnItem: [{
+                type: Input
+            }], indicatorsPosition: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], maskClass: [{
+                type: Input
+            }], containerClass: [{
+                type: Input
+            }], containerStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], visible: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class GalleriaContent {
+    constructor(galleria, cd) {
+        this.galleria = galleria;
+        this.cd = cd;
+        this.value = [];
+        this.maskHide = new EventEmitter();
+        this.activeItemChange = new EventEmitter();
+        this.id = this.galleria.id || UniqueComponentId();
+        this.slideShowActicve = false;
+        this._activeIndex = 0;
+        this.slideShowActive = true;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+    }
+    galleriaClass() {
+        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);
+        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);
+        return (this.galleria.containerClass ? this.galleria.containerClass + " " : '') + (thumbnailsPosClass ? thumbnailsPosClass + " " : '') + (indicatorPosClass ? indicatorPosClass + " " : '');
+    }
+    startSlideShow() {
+        this.interval = setInterval(() => {
+            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);
+            this.onActiveIndexChange(activeIndex);
+            this.activeIndex = activeIndex;
+        }, this.galleria.transitionInterval);
+        this.slideShowActive = true;
+    }
+    stopSlideShow() {
+        if (this.interval) {
+            clearInterval(this.interval);
+        }
+        this.slideShowActive = false;
+    }
+    getPositionClass(preClassName, position) {
+        const positions = ['top', 'left', 'bottom', 'right'];
+        const pos = positions.find(item => item === position);
+        return pos ? `${preClassName}-${pos}` : '';
+    }
+    isVertical() {
+        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';
+    }
+    onActiveIndexChange(index) {
+        if (this.activeIndex !== index) {
+            this.activeIndex = index;
+            this.activeItemChange.emit(this.activeIndex);
+        }
+    }
+}
+GalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaContent, selector: "p-galleriaContent", inputs: { activeIndex: "activeIndex", value: "value", numVisible: "numVisible" }, outputs: { maskHide: "maskHide", activeItemChange: "activeItemChange" }, ngImport: i0, template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }, { type: i0.forwardRef(function () { return GalleriaItem; }), selector: "p-galleriaItem", inputs: ["circular", "value", "showItemNavigators", "showIndicators", "slideShowActive", "changeItemOnIndicatorHover", "autoPlay", "templates", "indicatorFacet", "captionFacet", "activeIndex"], outputs: ["startSlideShow", "stopSlideShow", "onActiveIndexChange"] }, { type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: "p-galleriaThumbnails", inputs: ["containerId", "value", "isVertical", "slideShowActive", "circular", "responsiveOptions", "contentHeight", "showThumbnailNavigators", "templates", "numVisible", "activeIndex"], outputs: ["onActiveIndexChange", "stopSlideShow"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.Ripple; }), selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaContent',
+                    template: `
+        <div [attr.id]="id" *ngIf="value && value.length > 0" [ngClass]="{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,
+            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}"
+            [ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}" [class]="galleriaClass()">
+            <button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple>
+                <span class="p-galleria-close-icon pi pi-times"></span>
+            </button>
+            <div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
+                <p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+            <div class="p-galleria-content">
+                <p-galleriaItem [value]="value" [activeIndex]="activeIndex" [circular]="galleria.circular" [templates]="galleria.templates" (onActiveIndexChange)="onActiveIndexChange($event)"
+                    [showIndicators]="galleria.showIndicators" [changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover" [indicatorFacet]="galleria.indicatorFacet"
+                    [captionFacet]="galleria.captionFacet" [showItemNavigators]="galleria.showItemNavigators" [autoPlay]="galleria.autoPlay" [slideShowActive]="slideShowActive"
+                    (startSlideShow)="startSlideShow()" (stopSlideShow)="stopSlideShow()"></p-galleriaItem>
+
+                <p-galleriaThumbnails *ngIf="galleria.showThumbnails" [containerId]="id" [value]="value" (onActiveIndexChange)="onActiveIndexChange($event)" [activeIndex]="activeIndex" [templates]="galleria.templates"
+                    [numVisible]="numVisible" [responsiveOptions]="galleria.responsiveOptions" [circular]="galleria.circular"
+                    [isVertical]="isVertical()" [contentHeight]="galleria.verticalThumbnailViewPortHeight" [showThumbnailNavigators]="galleria.showThumbnailNavigators"
+                    [slideShowActive]="slideShowActive" (stopSlideShow)="stopSlideShow()"></p-galleriaThumbnails>
+            </div>
+            <div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
+                <p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], numVisible: [{
+                type: Input
+            }], maskHide: [{
+                type: Output
+            }], activeItemChange: [{
+                type: Output
+            }] } });
+class GalleriaItemSlot {
+    get item() {
+        return this._item;
+    }
+    ;
+    set item(item) {
+        this._item = item;
+        if (this.templates) {
+            this.templates.forEach((item) => {
+                if (item.getType() === this.type) {
+                    switch (this.type) {
+                        case 'item':
+                        case 'caption':
+                        case 'thumbnail':
+                            this.context = { $implicit: this.item };
+                            this.contentTemplate = item.template;
+                            break;
+                    }
+                }
+            });
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            if (item.getType() === this.type) {
+                switch (this.type) {
+                    case 'item':
+                    case 'caption':
+                    case 'thumbnail':
+                        this.context = { $implicit: this.item };
+                        this.contentTemplate = item.template;
+                        break;
+                    case 'indicator':
+                        this.context = { $implicit: this.index };
+                        this.contentTemplate = item.template;
+                        break;
+                    default:
+                        this.context = {};
+                        this.contentTemplate = item.template;
+                        break;
+                }
+            }
+        });
+    }
+}
+GalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: { templates: "templates", index: "index", item: "item", type: "type" }, ngImport: i0, template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItemSlot, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItemSlot',
+                    template: `
+        <ng-container *ngIf="contentTemplate">
+            <ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { templates: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], item: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }] } });
+class GalleriaItem {
+    constructor() {
+        this.circular = false;
+        this.showItemNavigators = false;
+        this.showIndicators = true;
+        this.slideShowActive = true;
+        this.changeItemOnIndicatorHover = true;
+        this.autoPlay = false;
+        this.startSlideShow = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.onActiveIndexChange = new EventEmitter();
+        this._activeIndex = 0;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._activeIndex = activeIndex;
+        this.activeItem = this.value[this._activeIndex];
+    }
+    ngOnInit() {
+        if (this.autoPlay) {
+            this.startSlideShow.emit();
+        }
+    }
+    next() {
+        let nextItemIndex = this.activeIndex + 1;
+        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex
+            ? 0
+            : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    prev() {
+        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;
+        let activeIndex = this.circular && this.activeIndex === 0
+            ? this.value.length - 1
+            : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        this.next();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        this.prev();
+        if (e && e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onIndicatorClick(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    onIndicatorMouseEnter(index) {
+        if (this.changeItemOnIndicatorHover) {
+            this.stopTheSlideShow();
+            this.onActiveIndexChange.emit(index);
+        }
+    }
+    onIndicatorKeyDown(index) {
+        this.stopTheSlideShow();
+        this.onActiveIndexChange.emit(index);
+    }
+    isNavForwardDisabled() {
+        return !this.circular && this.activeIndex === (this.value.length - 1);
+    }
+    isNavBackwardDisabled() {
+        return !this.circular && this.activeIndex === 0;
+    }
+    isIndicatorItemActive(index) {
+        return this.activeIndex === index;
+    }
+}
+GalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+GalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaItem, selector: "p-galleriaItem", inputs: { circular: "circular", value: "value", showItemNavigators: "showItemNavigators", showIndicators: "showIndicators", slideShowActive: "slideShowActive", changeItemOnIndicatorHover: "changeItemOnIndicatorHover", autoPlay: "autoPlay", templates: "templates", indicatorFacet: "indicatorFacet", captionFacet: "captionFacet", activeIndex: "activeIndex" }, outputs: { startSlideShow: "startSlideShow", stopSlideShow: "stopSlideShow", onActiveIndexChange: "onActiveIndexChange" }, ngImport: i0, template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaItem',
+                    template: `
+        <div class="p-galleria-item-wrapper">
+            <div class="p-galleria-item-container">
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span class="p-galleria-item-prev-icon pi pi-chevron-left"></span>
+                </button>
+                <p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
+                <button *ngIf="showItemNavigators" type="button" [ngClass]="{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)"  [disabled]="isNavForwardDisabled()" pRipple>
+                    <span class="p-galleria-item-next-icon pi pi-chevron-right"></span>
+                </button>
+                <div class="p-galleria-caption" *ngIf="captionFacet">
+                    <p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
+                </div>
+            </div>
+            <ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
+                <li *ngFor="let item of value; let index = index;" tabindex="0"
+                    (click)="onIndicatorClick(index)" (mouseenter)="onIndicatorMouseEnter(index)" (keydown.enter)="onIndicatorKeyDown(index)"
+                    [ngClass]="{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}">
+                    <button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet">
+                    </button>
+                    <p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
+                </li>
+            </ul>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], propDecorators: { circular: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], showItemNavigators: [{
+                type: Input
+            }], showIndicators: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], changeItemOnIndicatorHover: [{
+                type: Input
+            }], autoPlay: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], indicatorFacet: [{
+                type: Input
+            }], captionFacet: [{
+                type: Input
+            }], startSlideShow: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], onActiveIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class GalleriaThumbnails {
+    constructor(cd) {
+        this.cd = cd;
+        this.isVertical = false;
+        this.slideShowActive = false;
+        this.circular = false;
+        this.contentHeight = "300px";
+        this.showThumbnailNavigators = true;
+        this.onActiveIndexChange = new EventEmitter();
+        this.stopSlideShow = new EventEmitter();
+        this.startPos = null;
+        this.thumbnailsStyle = null;
+        this.sortedResponsiveOptions = null;
+        this.totalShiftedItems = 0;
+        this.page = 0;
+        this._numVisible = 0;
+        this.d_numVisible = 0;
+        this._oldNumVisible = 0;
+        this._activeIndex = 0;
+        this._oldactiveIndex = 0;
+    }
+    get numVisible() {
+        return this._numVisible;
+    }
+    ;
+    set numVisible(numVisible) {
+        this._numVisible = numVisible;
+        this._oldNumVisible = this.d_numVisible;
+        this.d_numVisible = numVisible;
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    ;
+    set activeIndex(activeIndex) {
+        this._oldactiveIndex = this._activeIndex;
+        this._activeIndex = activeIndex;
+    }
+    ngOnInit() {
+        this.createStyle();
+        if (this.responsiveOptions) {
+            this.bindDocumentListeners();
+        }
+    }
+    ngAfterContentChecked() {
+        let totalShiftedItems = this.totalShiftedItems;
+        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {
+            if (this._activeIndex <= this.getMedianItemIndex()) {
+                totalShiftedItems = 0;
+            }
+            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;
+            }
+            else {
+                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();
+            }
+            if (totalShiftedItems !== this.totalShiftedItems) {
+                this.totalShiftedItems = totalShiftedItems;
+            }
+            if (this.itemsContainer && this.itemsContainer.nativeElement) {
+                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            }
+            if (this._oldactiveIndex !== this._activeIndex) {
+                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+            }
+            this._oldactiveIndex = this._activeIndex;
+            this._oldNumVisible = this.d_numVisible;
+        }
+    }
+    ngAfterViewInit() {
+        this.calculatePosition();
+    }
+    createStyle() {
+        if (!this.thumbnailsStyle) {
+            this.thumbnailsStyle = document.createElement('style');
+            this.thumbnailsStyle.type = 'text/css';
+            document.body.appendChild(this.thumbnailsStyle);
+        }
+        let innerHTML = `
+            #${this.containerId} .p-galleria-thumbnail-item {
+                flex: 1 0 ${(100 / this.d_numVisible)}%
+            }
+        `;
+        if (this.responsiveOptions) {
+            this.sortedResponsiveOptions = [...this.responsiveOptions];
+            this.sortedResponsiveOptions.sort((data1, data2) => {
+                const value1 = data1.breakpoint;
+                const value2 = data2.breakpoint;
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return -1 * result;
+            });
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                innerHTML += `
+                    @media screen and (max-width: ${res.breakpoint}) {
+                        #${this.containerId} .p-galleria-thumbnail-item {
+                            flex: 1 0 ${(100 / res.numVisible)}%
+                        }
+                    }
+                `;
+            }
+        }
+        this.thumbnailsStyle.innerHTML = innerHTML;
+    }
+    calculatePosition() {
+        if (this.itemsContainer && this.sortedResponsiveOptions) {
+            let windowWidth = window.innerWidth;
+            let matchedResponsiveData = {
+                numVisible: this._numVisible
+            };
+            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
+                let res = this.sortedResponsiveOptions[i];
+                if (parseInt(res.breakpoint, 10) >= windowWidth) {
+                    matchedResponsiveData = res;
+                }
+            }
+            if (this.d_numVisible !== matchedResponsiveData.numVisible) {
+                this.d_numVisible = matchedResponsiveData.numVisible;
+                this.cd.markForCheck();
+            }
+        }
+    }
+    getTabIndex(index) {
+        return this.isItemActive(index) ? 0 : null;
+    }
+    navForward(e) {
+        this.stopTheSlideShow();
+        let nextItemIndex = this._activeIndex + 1;
+        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {
+            this.step(-1);
+        }
+        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    navBackward(e) {
+        this.stopTheSlideShow();
+        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;
+        let diff = prevItemIndex + this.totalShiftedItems;
+        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {
+            this.step(1);
+        }
+        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;
+        this.onActiveIndexChange.emit(activeIndex);
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onItemClick(index) {
+        this.stopTheSlideShow();
+        let selectedItemIndex = index;
+        if (selectedItemIndex !== this._activeIndex) {
+            const diff = selectedItemIndex + this.totalShiftedItems;
+            let dir = 0;
+            if (selectedItemIndex < this._activeIndex) {
+                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();
+                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {
+                    this.step(dir);
+                }
+            }
+            else {
+                dir = this.getMedianItemIndex() - diff;
+                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {
+                    this.step(dir);
+                }
+            }
+            this.activeIndex = selectedItemIndex;
+            this.onActiveIndexChange.emit(this.activeIndex);
+        }
+    }
+    step(dir) {
+        let totalShiftedItems = this.totalShiftedItems + dir;
+        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {
+            totalShiftedItems = this.d_numVisible - this.value.length;
+        }
+        else if (dir > 0 && totalShiftedItems > 0) {
+            totalShiftedItems = 0;
+        }
+        if (this.circular) {
+            if (dir < 0 && this.value.length - 1 === this._activeIndex) {
+                totalShiftedItems = 0;
+            }
+            else if (dir > 0 && this._activeIndex === 0) {
+                totalShiftedItems = this.d_numVisible - this.value.length;
+            }
+        }
+        if (this.itemsContainer) {
+            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
+            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
+        }
+        this.totalShiftedItems = totalShiftedItems;
+    }
+    stopTheSlideShow() {
+        if (this.slideShowActive && this.stopSlideShow) {
+            this.stopSlideShow.emit();
+        }
+    }
+    changePageOnTouch(e, diff) {
+        if (diff < 0) { // left
+            this.navForward(e);
+        }
+        else { // right
+            this.navBackward(e);
+        }
+    }
+    getTotalPageNumber() {
+        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;
+    }
+    getMedianItemIndex() {
+        let index = Math.floor(this.d_numVisible / 2);
+        return (this.d_numVisible % 2) ? index : index - 1;
+    }
+    onTransitionEnd() {
+        if (this.itemsContainer && this.itemsContainer.nativeElement) {
+            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');
+            this.itemsContainer.nativeElement.style.transition = '';
+        }
+    }
+    onTouchEnd(e) {
+        let touchobj = e.changedTouches[0];
+        if (this.isVertical) {
+            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));
+        }
+        else {
+            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));
+        }
+    }
+    onTouchMove(e) {
+        if (e.cancelable) {
+            e.preventDefault();
+        }
+    }
+    onTouchStart(e) {
+        let touchobj = e.changedTouches[0];
+        this.startPos = {
+            x: touchobj.pageX,
+            y: touchobj.pageY
+        };
+    }
+    isNavBackwardDisabled() {
+        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);
+    }
+    isNavForwardDisabled() {
+        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);
+    }
+    firstItemAciveIndex() {
+        return this.totalShiftedItems * -1;
+    }
+    lastItemActiveIndex() {
+        return this.firstItemAciveIndex() + this.d_numVisible - 1;
+    }
+    isItemActive(index) {
+        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;
+    }
+    bindDocumentListeners() {
+        if (!this.documentResizeListener) {
+            this.documentResizeListener = () => {
+                this.calculatePosition();
+            };
+            window.addEventListener('resize', this.documentResizeListener);
+        }
+    }
+    unbindDocumentListeners() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.responsiveOptions) {
+            this.unbindDocumentListeners();
+        }
+        if (this.thumbnailsStyle) {
+            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);
+        }
+    }
+}
+GalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+GalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GalleriaThumbnails, selector: "p-galleriaThumbnails", inputs: { containerId: "containerId", value: "value", isVertical: "isVertical", slideShowActive: "slideShowActive", circular: "circular", responsiveOptions: "responsiveOptions", contentHeight: "contentHeight", showThumbnailNavigators: "showThumbnailNavigators", templates: "templates", numVisible: "numVisible", activeIndex: "activeIndex" }, outputs: { onActiveIndexChange: "onActiveIndexChange", stopSlideShow: "stopSlideShow" }, viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], ngImport: i0, template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaThumbnails, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-galleriaThumbnails',
+                    template: `
+        <div class="p-galleria-thumbnail-wrapper">
+            <div class="p-galleria-thumbnail-container">
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}" (click)="navBackward($event)" [disabled]="isNavBackwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}"></span>
+                </button>
+                <div class="p-galleria-thumbnail-items-container" [ngStyle]="{'height': isVertical ? contentHeight : ''}">
+                    <div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()"
+                        (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)">
+                        <div *ngFor="let item of value; let index = index;" [ngClass]="{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),
+                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }">
+                            <div class="p-galleria-thumbnail-item-content" [attr.tabindex]="getTabIndex(index)" (click)="onItemClick(index)" (keydown.enter)="onItemClick(index)">
+                                <p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <button *ngIf="showThumbnailNavigators" type="button" [ngClass]="{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}" (click)="navForward($event)" [disabled]="isNavForwardDisabled()" pRipple>
+                    <span [ngClass]="{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], isVertical: [{
+                type: Input
+            }], slideShowActive: [{
+                type: Input
+            }], circular: [{
+                type: Input
+            }], responsiveOptions: [{
+                type: Input
+            }], contentHeight: [{
+                type: Input
+            }], showThumbnailNavigators: [{
+                type: Input
+            }], templates: [{
+                type: Input
+            }], onActiveIndexChange: [{
+                type: Output
+            }], stopSlideShow: [{
+                type: Output
+            }], itemsContainer: [{
+                type: ViewChild,
+                args: ['itemsContainer']
+            }], numVisible: [{
+                type: Input
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class GalleriaModule {
+}
+GalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });
+GalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GalleriaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],
+                    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-galleria.mjs","sources":["../../src/app/components/galleria/galleria.ts","../../src/app/components/galleria/primeng-galleria.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewChild, ContentChildren, QueryList, TemplateRef, OnInit, OnChanges, AfterContentChecked, SimpleChanges, ViewEncapsulation, ChangeDetectorRef, AfterViewInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport { RippleModule } from 'primeng/ripple';\nimport { animate, style, transition, trigger, AnimationEvent } from '@angular/animations';\n\n@Component({\n    selector: 'p-galleria',\n    template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./galleria.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Galleria implements OnChanges, OnDestroy {\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n\n    @Input() fullScreen: boolean = false;\n\n    @Input() id: string;\n\n    @Input() value: any[];\n\n    @Input() numVisible: number = 3;\n\n    @Input() responsiveOptions: any[];\n\n    @Input() showItemNavigators: boolean = false;\n\n    @Input() showThumbnailNavigators: boolean = true;\n\n    @Input() showItemNavigatorsOnHover: boolean = false;\n\n    @Input() changeItemOnIndicatorHover: boolean = false;\n\n    @Input() circular: boolean = false;\n\n    @Input() autoPlay: boolean = false;\n\n    @Input() transitionInterval: number = 4000;\n\n    @Input() showThumbnails: boolean = true;\n\n    @Input() thumbnailsPosition: string = \"bottom\";\n\n    @Input() verticalThumbnailViewPortHeight: string = \"300px\";\n\n    @Input() showIndicators: boolean = false;\n\n    @Input() showIndicatorsOnItem: boolean = false;\n\n    @Input() indicatorsPosition: string = \"bottom\";\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() maskClass: string;\n\n    @Input() containerClass: string;\n\n    @Input() containerStyle: any;\n\n    @Input() showTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @ViewChild('mask') mask: ElementRef;\n\n    @Input() get visible(): boolean {\n        return this._visible;\n    };\n\n    set visible(visible: boolean) {\n        this._visible = visible;\n\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n\t@ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    _visible: boolean = false;\n\n    _activeIndex: number = 0;\n\n    headerFacet: any;\n\n    footerFacet: any;\n\n    indicatorFacet: any;\n\n    captionFacet: any;\n\n    maskVisible: boolean = false;\n\n    constructor(public element: ElementRef, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerFacet = item.template;\n                break;\n                case 'footer':\n                    this.footerFacet = item.template;\n                break;\n                case 'indicator':\n                    this.indicatorFacet = item.template;\n                break;\n                case 'caption':\n                    this.captionFacet = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnChanges(simpleChanges: SimpleChanges) {\n        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n            this.numVisible = simpleChanges.value.currentValue.length;\n        }\n    }\n\n    onMaskHide() {\n        this.visible = false;\n        this.visibleChange.emit(false);\n    }\n\n    onActiveItemChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeIndexChange.emit(index);\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.enableModality();\n            break;\n\n            case 'void':\n                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n               this.disableModality();\n            break;\n        }\n    }\n\n    enableModality() {\n        DomHandler.addClass(document.body, 'p-overflow-hidden');\n        this.cd.markForCheck();\n\n        if (this.mask) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n        }\n    }\n\n    disableModality() {\n        DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        this.maskVisible = false;\n        this.cd.markForCheck();\n\n        if (this.mask) {\n            ZIndexUtils.clear(this.mask.nativeElement);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.fullScreen) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        if (this.mask) {\n            this.disableModality()\n        }\n    }\n}\n\n@Component({\n    selector: 'p-galleriaContent',\n    template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaContent {\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex: number) {\n        this._activeIndex = activeIndex;\n    }\n\n    @Input() value: any[] = [];\n\n    @Input() numVisible: number;\n\n    @Output() maskHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() activeItemChange: EventEmitter<any> = new EventEmitter();\n\n    id: string = this.galleria.id || UniqueComponentId();\n\n    slideShowActicve: boolean = false;\n\n    _activeIndex: number = 0;\n\n    slideShowActive: boolean = true;\n\n    interval: any;\n\n    styleClass: string;\n\n    constructor(public galleria: Galleria, public cd: ChangeDetectorRef) { }\n\n    galleriaClass() {\n        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n\n        return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n    }\n\n    startSlideShow() {\n        this.interval = setInterval(() => {\n            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);\n            this.onActiveIndexChange(activeIndex);\n            this.activeIndex = activeIndex;\n        }, this.galleria.transitionInterval);\n\n        this.slideShowActive = true;\n    }\n\n    stopSlideShow() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n\n        this.slideShowActive = false;\n    }\n\n    getPositionClass(preClassName, position) {\n        const positions = ['top', 'left', 'bottom', 'right'];\n        const pos = positions.find(item => item === position);\n\n        return pos ? `${preClassName}-${pos}` : '';\n    }\n\n    isVertical() {\n        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n    }\n\n    onActiveIndexChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeItemChange.emit(this.activeIndex);\n        }\n    }\n}\n\n@Component({\n    selector: 'p-galleriaItemSlot',\n    template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaItemSlot {\n    @Input() templates: QueryList<any>;\n\n    @Input() index: number;\n\n    @Input() get item(): any {\n        return this._item;\n    };\n\n    set item(item:any) {\n        this._item = item;\n        if (this.templates) {\n            this.templates.forEach((item) => {\n                if (item.getType() === this.type) {\n                    switch(this.type) {\n                        case 'item':\n                        case 'caption':\n                        case 'thumbnail':\n                            this.context = {$implicit: this.item};\n                            this.contentTemplate = item.template;\n                        break;\n                    }\n                }\n            });\n        }\n    }\n\n    @Input() type: string;\n\n    contentTemplate: TemplateRef<any>;\n\n    context:any;\n\n    _item:any;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            if (item.getType() === this.type) {\n                switch(this.type) {\n                    case 'item':\n                    case 'caption':\n                    case 'thumbnail':\n                        this.context = {$implicit: this.item};\n                        this.contentTemplate = item.template;\n                    break;\n                    case 'indicator':\n                        this.context = {$implicit: this.index};\n                        this.contentTemplate = item.template;\n                    break;\n                    default:\n                        this.context = {};\n                        this.contentTemplate = item.template;\n                    break;\n                }\n            }\n        });\n    }\n}\n\n@Component({\n    selector: 'p-galleriaItem',\n    template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaItem implements OnInit {\n\n    @Input() circular: boolean = false;\n\n    @Input() value: any[];\n\n    @Input() showItemNavigators: boolean = false;\n\n    @Input() showIndicators: boolean = true;\n\n    @Input() slideShowActive: boolean = true;\n\n    @Input() changeItemOnIndicatorHover: boolean = true;\n\n    @Input() autoPlay: boolean = false;\n\n    @Input() templates: QueryList<any>;\n\n    @Input() indicatorFacet: any;\n\n    @Input() captionFacet: any;\n\n    @Output() startSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() stopSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onActiveIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n        this.activeItem = this.value[this._activeIndex];\n    }\n\n    _activeIndex: number = 0;\n\n    activeItem: any;\n\n    ngOnInit() {\n        if (this.autoPlay) {\n            this.startSlideShow.emit();\n        }\n    }\n\n    next() {\n        let nextItemIndex = this.activeIndex + 1;\n        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex\n                    ? 0\n                    : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n\n    prev() {\n        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n        let activeIndex = this.circular && this.activeIndex === 0\n                ? this.value.length - 1\n                : prevItemIndex\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n\n    navForward(e) {\n        this.stopTheSlideShow();\n        this.next();\n\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    navBackward(e) {\n        this.stopTheSlideShow();\n        this.prev();\n\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onIndicatorClick(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n\n    onIndicatorMouseEnter(index) {\n        if (this.changeItemOnIndicatorHover) {\n            this.stopTheSlideShow();\n            this.onActiveIndexChange.emit(index);\n        }\n    }\n\n    onIndicatorKeyDown(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n\n    isNavForwardDisabled() {\n        return !this.circular && this.activeIndex === (this.value.length - 1);\n    }\n\n    isNavBackwardDisabled() {\n        return !this.circular && this.activeIndex === 0;\n    }\n\n    isIndicatorItemActive(index) {\n        return this.activeIndex === index;\n    }\n}\n\n@Component({\n    selector: 'p-galleriaThumbnails',\n    template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GalleriaThumbnails implements OnInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n    @Input() containerId: string;\n\n    @Input() value: any[];\n\n    @Input() isVertical: boolean = false;\n\n    @Input() slideShowActive: boolean = false;\n\n    @Input() circular: boolean = false;\n\n    @Input() responsiveOptions: any[];\n\n    @Input() contentHeight: string = \"300px\";\n\n    @Input() showThumbnailNavigators = true;\n\n    @Input() templates: QueryList<any>;\n\n    @Output() onActiveIndexChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() stopSlideShow: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('itemsContainer') itemsContainer: ElementRef;\n\n    @Input() get numVisible(): number {\n        return this._numVisible;\n    };\n\n    set numVisible(numVisible) {\n        this._numVisible = numVisible;\n        this._oldNumVisible = this.d_numVisible;\n        this.d_numVisible = numVisible;\n    }\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    };\n\n    set activeIndex(activeIndex) {\n        this._oldactiveIndex = this._activeIndex;\n        this._activeIndex = activeIndex;\n    }\n\n    index: number;\n\n    startPos = null;\n\n    thumbnailsStyle = null;\n\n    sortedResponsiveOptions = null;\n\n    totalShiftedItems: number = 0;\n\n    page: number = 0;\n\n    documentResizeListener: any;\n\n    _numVisible:number = 0;\n\n    d_numVisible: number = 0;\n\n    _oldNumVisible: number = 0;\n\n    _activeIndex: number = 0;\n\n    _oldactiveIndex: number = 0;\n\n    constructor(private cd: ChangeDetectorRef) { }\n\n    ngOnInit() {\n        this.createStyle();\n\n\t\tif (this.responsiveOptions) {\n\t\t\tthis.bindDocumentListeners();\n\t\t}\n    }\n\n    ngAfterContentChecked() {\n        let totalShiftedItems = this.totalShiftedItems;\n\n        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n            if (this._activeIndex <= this.getMedianItemIndex()) {\n                totalShiftedItems = 0;\n            }\n            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;\n            }\n            else {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();\n            }\n\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n\n            if (this.itemsContainer && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100/ this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this.d_numVisible)}%, 0, 0)`;\n            }\n\n            if (this._oldactiveIndex !== this._activeIndex) {\n                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n            }\n\n            this._oldactiveIndex = this._activeIndex;\n            this._oldNumVisible = this.d_numVisible;\n        }\n    }\n\n    ngAfterViewInit() {\n\t\tthis.calculatePosition();\n    }\n\n    createStyle() {\n        if (!this.thumbnailsStyle) {\n            this.thumbnailsStyle = document.createElement('style');\n            this.thumbnailsStyle.type = 'text/css';\n            document.body.appendChild(this.thumbnailsStyle);\n        }\n\n        let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${ (100/ this.d_numVisible) }%\n            }\n        `;\n\n        if (this.responsiveOptions) {\n            this.sortedResponsiveOptions = [...this.responsiveOptions];\n            this.sortedResponsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return -1 * result;\n            });\n\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${ (100/ res.numVisible) }%\n                        }\n                    }\n                `\n            }\n        }\n\n        this.thumbnailsStyle.innerHTML = innerHTML;\n    }\n\n    calculatePosition() {\n        if (this.itemsContainer && this.sortedResponsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this._numVisible\n            };\n\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n\n            if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n                this.d_numVisible = matchedResponsiveData.numVisible;\n                this.cd.markForCheck();\n            }\n        }\n    }\n\n    getTabIndex(index) {\n        return this.isItemActive(index) ? 0 : null;\n    }\n\n    navForward(e) {\n        this.stopTheSlideShow();\n\n        let nextItemIndex = this._activeIndex + 1;\n        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {\n            this.step(-1);\n        }\n\n        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    navBackward(e) {\n        this.stopTheSlideShow();\n\n        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n        let diff = prevItemIndex + this.totalShiftedItems;\n        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {\n            this.step(1);\n        }\n\n        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onItemClick(index) {\n        this.stopTheSlideShow();\n\n        let selectedItemIndex = index;\n        if (selectedItemIndex !== this._activeIndex) {\n            const diff = selectedItemIndex + this.totalShiftedItems;\n            let dir = 0;\n            if (selectedItemIndex < this._activeIndex) {\n                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();\n                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {\n                    this.step(dir);\n                }\n            }\n            else {\n                dir = this.getMedianItemIndex() - diff;\n                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {\n                    this.step(dir);\n                }\n            }\n\n            this.activeIndex = selectedItemIndex;\n            this.onActiveIndexChange.emit(this.activeIndex);\n        }\n    }\n\n    step(dir) {\n        let totalShiftedItems = this.totalShiftedItems + dir;\n\n        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {\n            totalShiftedItems = this.d_numVisible - this.value.length;\n        }\n        else if (dir > 0 && totalShiftedItems > 0) {\n            totalShiftedItems = 0;\n        }\n\n        if (this.circular) {\n            if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n                totalShiftedItems = 0;\n            }\n            else if (dir > 0 && this._activeIndex === 0) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n        }\n\n        if (this.itemsContainer) {\n            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100/ this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100/ this.d_numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n\n        this.totalShiftedItems = totalShiftedItems;\n    }\n\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n\n    changePageOnTouch(e, diff) {\n        if (diff < 0) {           // left\n            this.navForward(e);\n        }\n        else {                    // right\n            this.navBackward(e);\n        }\n    }\n\n    getTotalPageNumber() {\n        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;\n    }\n\n    getMedianItemIndex() {\n        let index = Math.floor(this.d_numVisible / 2);\n\n        return (this.d_numVisible % 2) ? index : index - 1;\n    }\n\n    onTransitionEnd() {\n        if (this.itemsContainer && this.itemsContainer.nativeElement) {\n            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transition = '';\n        }\n    }\n\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n\n        if (this.isVertical) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n\n    isNavBackwardDisabled() {\n        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);\n    }\n\n    isNavForwardDisabled() {\n        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);\n    }\n\n    firstItemAciveIndex() {\n        return this.totalShiftedItems * -1;\n    }\n\n    lastItemActiveIndex() {\n        return this.firstItemAciveIndex() + this.d_numVisible - 1;\n    }\n\n    isItemActive(index) {\n        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n    }\n\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = () => {\n                this.calculatePosition();\n            };\n\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n\n    unbindDocumentListeners() {\n        if(this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n\t\t\tthis.unbindDocumentListeners();\n        }\n\n        if (this.thumbnailsStyle) {\n            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n})\nexport class GalleriaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,192 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class GMap {
+    constructor(el, differs, cd, zone) {
+        this.el = el;
+        this.cd = cd;
+        this.zone = zone;
+        this.onMapClick = new EventEmitter();
+        this.onOverlayClick = new EventEmitter();
+        this.onOverlayDblClick = new EventEmitter();
+        this.onOverlayDragStart = new EventEmitter();
+        this.onOverlayDrag = new EventEmitter();
+        this.onOverlayDragEnd = new EventEmitter();
+        this.onMapReady = new EventEmitter();
+        this.onMapDragEnd = new EventEmitter();
+        this.onZoomChanged = new EventEmitter();
+        this.differ = differs.find([]).create(null);
+    }
+    ngAfterViewChecked() {
+        if (!this.map && this.el.nativeElement.offsetParent) {
+            this.initialize();
+        }
+    }
+    initialize() {
+        this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);
+        this.onMapReady.emit({
+            map: this.map
+        });
+        if (this.overlays) {
+            for (let overlay of this.overlays) {
+                overlay.setMap(this.map);
+                this.bindOverlayEvents(overlay);
+            }
+        }
+        this.map.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onMapClick.emit(event);
+            });
+        });
+        this.map.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onMapDragEnd.emit(event);
+            });
+        });
+        this.map.addListener('zoom_changed', (event) => {
+            this.zone.run(() => {
+                this.onZoomChanged.emit(event);
+            });
+        });
+    }
+    bindOverlayEvents(overlay) {
+        overlay.addListener('click', (event) => {
+            this.zone.run(() => {
+                this.onOverlayClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dblclick', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDblClick.emit({
+                    originalEvent: event,
+                    'overlay': overlay,
+                    map: this.map
+                });
+            });
+        });
+        if (overlay.getDraggable()) {
+            this.bindDragEvents(overlay);
+        }
+    }
+    ngDoCheck() {
+        let changes = this.differ.diff(this.overlays);
+        if (changes && this.map) {
+            changes.forEachRemovedItem((record) => {
+                google.maps.event.clearInstanceListeners(record.item);
+                record.item.setMap(null);
+            });
+            changes.forEachAddedItem((record) => {
+                record.item.setMap(this.map);
+                record.item.addListener('click', (event) => {
+                    this.zone.run(() => {
+                        this.onOverlayClick.emit({
+                            originalEvent: event,
+                            overlay: record.item,
+                            map: this.map
+                        });
+                    });
+                });
+                if (record.item.getDraggable()) {
+                    this.bindDragEvents(record.item);
+                }
+            });
+        }
+    }
+    bindDragEvents(overlay) {
+        overlay.addListener('dragstart', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragStart.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('drag', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDrag.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+        overlay.addListener('dragend', (event) => {
+            this.zone.run(() => {
+                this.onOverlayDragEnd.emit({
+                    originalEvent: event,
+                    overlay: overlay,
+                    map: this.map
+                });
+            });
+        });
+    }
+    getMap() {
+        return this.map;
+    }
+}
+GMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+GMap.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: GMap, selector: "p-gmap", inputs: { style: "style", styleClass: "styleClass", options: "options", overlays: "overlays" }, outputs: { onMapClick: "onMapClick", onOverlayClick: "onOverlayClick", onOverlayDblClick: "onOverlayDblClick", onOverlayDragStart: "onOverlayDragStart", onOverlayDrag: "onOverlayDrag", onOverlayDragEnd: "onOverlayDragEnd", onMapReady: "onMapReady", onMapDragEnd: "onMapDragEnd", onZoomChanged: "onZoomChanged" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `<div [ngStyle]="style" [class]="styleClass"></div>`, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMap, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-gmap',
+                    template: `<div [ngStyle]="style" [class]="styleClass"></div>`,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], overlays: [{
+                type: Input
+            }], onMapClick: [{
+                type: Output
+            }], onOverlayClick: [{
+                type: Output
+            }], onOverlayDblClick: [{
+                type: Output
+            }], onOverlayDragStart: [{
+                type: Output
+            }], onOverlayDrag: [{
+                type: Output
+            }], onOverlayDragEnd: [{
+                type: Output
+            }], onMapReady: [{
+                type: Output
+            }], onMapDragEnd: [{
+                type: Output
+            }], onZoomChanged: [{
+                type: Output
+            }] } });
+class GMapModule {
+}
+GMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+GMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, declarations: [GMap], imports: [CommonModule], exports: [GMap] });
+GMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: GMapModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [GMap],
+                    declarations: [GMap]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { GMap, GMapModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-gmap.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-gmap.mjs","sources":["../../src/app/components/gmap/gmap.ts","../../src/app/components/gmap/primeng-gmap.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,DoCheck,Input,Output,EventEmitter,IterableDiffers,ChangeDetectorRef,NgZone,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\ndeclare var google: any;\n\n@Component({\n    selector: 'p-gmap',\n    template: `<div [ngStyle]=\"style\" [class]=\"styleClass\"></div>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class GMap implements AfterViewChecked,DoCheck {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() options: any;\n\n    @Input() overlays: any[];\n\n    @Output() onMapClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDblClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDragStart: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDrag: EventEmitter<any> = new EventEmitter();\n\n    @Output() onOverlayDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMapReady: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMapDragEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onZoomChanged: EventEmitter<any> = new EventEmitter();\n\n    differ: any;\n\n    map: any;\n\n    constructor(public el: ElementRef,differs: IterableDiffers, public cd: ChangeDetectorRef, public zone:NgZone) {\n        this.differ = differs.find([]).create(null);\n    }\n\n    ngAfterViewChecked() {\n        if (!this.map && this.el.nativeElement.offsetParent) {\n            this.initialize();\n        }\n    }\n\n    initialize() {\n        this.map = new google.maps.Map(this.el.nativeElement.children[0], this.options);\n        this.onMapReady.emit({\n            map: this.map\n        });\n\n        if (this.overlays) {\n            for(let overlay of this.overlays) {\n                overlay.setMap(this.map);\n                this.bindOverlayEvents(overlay);\n            }\n        }\n\n        this.map.addListener('click', (event) => {\n            this.zone.run(() => {\n                this.onMapClick.emit(event);\n            });\n        });\n\n        this.map.addListener('dragend', (event) => {\n            this.zone.run(() => {\n                this.onMapDragEnd.emit(event);\n            });\n        });\n\n        this.map.addListener('zoom_changed', (event) => {\n            this.zone.run(() => {\n                this.onZoomChanged.emit(event);\n            });\n        });\n    }\n\n    bindOverlayEvents(overlay: any) {\n        overlay.addListener('click', (event) => {\n            this.zone.run(() => {\n                this.onOverlayClick.emit({\n                    originalEvent: event,\n                    'overlay': overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('dblclick', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDblClick.emit({\n                    originalEvent: event,\n                    'overlay': overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        if (overlay.getDraggable()) {\n            this.bindDragEvents(overlay);\n        }\n    }\n\n    ngDoCheck() {\n        let changes = this.differ.diff(this.overlays);\n\n        if (changes && this.map) {\n            changes.forEachRemovedItem((record) => {\n                google.maps.event.clearInstanceListeners(record.item);\n                record.item.setMap(null);\n            });\n\n            changes.forEachAddedItem((record) => {\n                record.item.setMap(this.map);\n                record.item.addListener('click', (event) => {\n                    this.zone.run(() => {\n                        this.onOverlayClick.emit({\n                            originalEvent: event,\n                            overlay: record.item,\n                            map: this.map\n                        });\n                    });\n                });\n\n                if (record.item.getDraggable()) {\n                    this.bindDragEvents(record.item);\n                }\n            });\n        }\n    }\n\n    bindDragEvents(overlay) {\n        overlay.addListener('dragstart', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDragStart.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('drag', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDrag.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n\n        overlay.addListener('dragend', (event) => {\n            this.zone.run(() => {\n                this.onOverlayDragEnd.emit({\n                    originalEvent: event,\n                    overlay: overlay,\n                    map: this.map\n                });\n            });\n        });\n    }\n\n    getMap() {\n        return this.map;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [GMap],\n    declarations: [GMap]\n})\nexport class GMapModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,274 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+
+class Image {
+    constructor(config, cd) {
+        this.config = config;
+        this.cd = cd;
+        this.preview = false;
+        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.maskVisible = false;
+        this.previewVisible = false;
+        this.rotate = 0;
+        this.scale = 1;
+        this.previewClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'indicator':
+                    this.indicatorTemplate = item.template;
+                    break;
+                default:
+                    this.indicatorTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onImageClick() {
+        if (this.preview) {
+            this.maskVisible = true;
+            this.previewVisible = true;
+        }
+    }
+    onMaskClick() {
+        if (!this.previewClick) {
+            this.previewVisible = false;
+            this.rotate = 0;
+            this.scale = 1;
+        }
+        this.previewClick = false;
+    }
+    onPreviewImageClick() {
+        this.previewClick = true;
+    }
+    rotateRight() {
+        this.rotate += 90;
+        this.previewClick = true;
+    }
+    rotateLeft() {
+        this.rotate -= 90;
+        this.previewClick = true;
+    }
+    zoomIn() {
+        this.scale = this.scale + 0.1;
+        this.previewClick = true;
+    }
+    zoomOut() {
+        this.scale = this.scale - 0.1;
+        this.previewClick = true;
+    }
+    zoomDisabled() {
+        return this.scale <= 0.5 || this.scale >= 1.5;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.wrapper = this.container.parentElement;
+                this.appendContainer();
+                this.moveOnTop();
+                break;
+            case 'void':
+                DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(this.container);
+                this.maskVisible = false;
+                this.container = null;
+                this.wrapper = null;
+                this.cd.markForCheck();
+                this.onHide.emit({});
+                break;
+            case 'visible':
+                this.onShow.emit({});
+                break;
+        }
+    }
+    moveOnTop() {
+        ZIndexUtils.set('modal', this.container, this.config.zIndex.modal);
+        this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.wrapper);
+            else
+                DomHandler.appendChild(this.wrapper, this.appendTo);
+        }
+    }
+    imagePreviewStyle() {
+        return { transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')' };
+    }
+    containerClass() {
+        return {
+            'p-image p-component': true,
+            'p-image-preview-container': this.preview
+        };
+    }
+}
+Image.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Image.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Image, selector: "p-image", inputs: { imageClass: "imageClass", imageStyle: "imageStyle", styleClass: "styleClass", style: "style", src: "src", alt: "alt", width: "width", height: "height", appendTo: "appendTo", preview: "preview", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }], ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, isInline: true, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('animation', [
+            transition('void => visible', [
+                style({ transform: 'scale(0.7)', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('visible => void', [
+                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Image, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-image', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <img [attr.src]="src" [attr.alt]="alt" [attr.width]="width" [attr.height]="height" [ngStyle]="imageStyle" [class]="imageClass" />
+            <div class="p-image-preview-indicator" *ngIf="preview" (click)="onImageClick()">
+                <ng-container *ngIf="indicatorTemplate;else defaultTemplate">
+                    <ng-container *ngTemplateOutlet="indicatorTemplate"></ng-container>
+                </ng-container>
+                <ng-template #defaultTemplate>
+                    <i class="p-image-preview-icon pi pi-eye"></i>
+                </ng-template>
+            </div>
+            <div #mask class="p-image-mask p-component-overlay p-component-overlay-enter" *ngIf="maskVisible" (click)="onMaskClick()">
+                <div class="p-image-toolbar">
+                    <button class="p-image-action p-link" (click)="rotateRight()" type="button">
+                        <i class="pi pi-refresh"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="rotateLeft()" type="button">
+                        <i class="pi pi-undo"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomOut()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-minus"></i>
+                    </button>
+                    <button class="p-image-action p-link" (click)="zoomIn()" type="button" [disabled]="zoomDisabled()">
+                        <i class="pi pi-search-plus"></i>
+                    </button>
+                    <button class="p-image-action p-link" type="button">
+                        <i class="pi pi-times"></i>
+                    </button>
+                </div>
+                <div *ngIf="previewVisible" [@animation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                    (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+                    <img [attr.src]="src" class="p-image-preview" [ngStyle]="imagePreviewStyle()" (click)="onPreviewImageClick()"/>
+                </div>
+            </div>
+        </span>
+    `, animations: [
+                        trigger('animation', [
+                            transition('void => visible', [
+                                style({ transform: 'scale(0.7)', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('visible => void', [
+                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-image-mask{display:flex;align-items:center;justify-content:center}.p-image-preview-container{position:relative;display:inline-block}.p-image-preview-indicator{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}.p-image-preview-icon{font-size:1.5rem}.p-image-preview-container:hover>.p-image-preview-indicator{opacity:1;cursor:pointer}.p-image-preview-container>img{cursor:pointer}.p-image-toolbar{position:absolute;top:0;right:0;display:flex}.p-image-action.p-link{display:flex;justify-content:center;align-items:center}.p-image-preview{transition:transform .15s;max-width:100vw;max-height:100vh}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { imageClass: [{
+                type: Input
+            }], imageStyle: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], src: [{
+                type: Input
+            }], alt: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], preview: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], mask: [{
+                type: ViewChild,
+                args: ['mask']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ImageModule {
+}
+ImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, declarations: [Image], imports: [CommonModule], exports: [Image, SharedModule] });
+ImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ImageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Image, SharedModule],
+                    declarations: [Image]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Image, ImageModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-image.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-image.mjs","sources":["../../src/app/components/image/image.ts","../../src/app/components/image/primeng-image.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, Output, EventEmitter, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, PrimeNGConfig } from 'primeng/api';\nimport {trigger,style,transition,animate, AnimationEvent,} from '@angular/animations';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\n\n@Component({\n    selector: 'p-image',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <img [attr.src]=\"src\" [attr.alt]=\"alt\" [attr.width]=\"width\" [attr.height]=\"height\" [ngStyle]=\"imageStyle\" [class]=\"imageClass\" />\n            <div class=\"p-image-preview-indicator\" *ngIf=\"preview\" (click)=\"onImageClick()\">\n                <ng-container *ngIf=\"indicatorTemplate;else defaultTemplate\">\n                    <ng-container *ngTemplateOutlet=\"indicatorTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #defaultTemplate>\n                    <i class=\"p-image-preview-icon pi pi-eye\"></i>\n                </ng-template>\n            </div>\n            <div #mask class=\"p-image-mask p-component-overlay p-component-overlay-enter\" *ngIf=\"maskVisible\" (click)=\"onMaskClick()\">\n                <div class=\"p-image-toolbar\">\n                    <button class=\"p-image-action p-link\" (click)=\"rotateRight()\" type=\"button\">\n                        <i class=\"pi pi-refresh\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"rotateLeft()\" type=\"button\">\n                        <i class=\"pi pi-undo\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"zoomOut()\" type=\"button\" [disabled]=\"zoomDisabled()\">\n                        <i class=\"pi pi-search-minus\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" (click)=\"zoomIn()\" type=\"button\" [disabled]=\"zoomDisabled()\">\n                        <i class=\"pi pi-search-plus\"></i>\n                    </button>\n                    <button class=\"p-image-action p-link\" type=\"button\">\n                        <i class=\"pi pi-times\"></i>\n                    </button>\n                </div>\n                <div *ngIf=\"previewVisible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                    (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n                    <img [attr.src]=\"src\" class=\"p-image-preview\" [ngStyle]=\"imagePreviewStyle()\" (click)=\"onPreviewImageClick()\"/>\n                </div>\n            </div>\n        </span>\n    `,\n    animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./image.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Image implements AfterContentInit {\n\n    @Input() imageClass: string;\n\n    @Input() imageStyle: any;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() src: string;\n\n    @Input() alt: string;\n\n    @Input() width: string;\n\n    @Input() height: string;\n\n    @Input() appendTo: any;\n\n    @Input() preview: boolean = false;\n\n    @Input() showTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('mask') mask: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    indicatorTemplate: TemplateRef<any>;\n\n    maskVisible: boolean = false;\n\n    previewVisible: boolean =  false;\n\n    rotate: number = 0;\n\n    scale: number = 1;\n\n    previewClick: boolean = false;\n\n    container: HTMLElement;\n\n    wrapper: HTMLElement;\n\n    constructor(private config: PrimeNGConfig, private cd: ChangeDetectorRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'indicator':\n                    this.indicatorTemplate = item.template;\n                break;\n\n                default:\n                    this.indicatorTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onImageClick() {\n        if (this.preview) {\n            this.maskVisible = true;\n            this.previewVisible = true;\n        }\n    }\n\n    onMaskClick() {\n        if (!this.previewClick) {\n            this.previewVisible = false;\n            this.rotate = 0;\n            this.scale = 1;\n        }\n\n        this.previewClick = false;\n    }\n\n    onPreviewImageClick() {\n        this.previewClick = true;\n    }\n\n    rotateRight() {\n        this.rotate += 90;\n        this.previewClick = true;\n    }\n\n    rotateLeft() {\n        this.rotate -= 90;\n        this.previewClick = true;\n    }\n\n    zoomIn() {\n        this.scale = this.scale + 0.1;\n        this.previewClick = true;\n    }\n\n    zoomOut() {\n        this.scale = this.scale - 0.1;\n        this.previewClick = true;\n    }\n\n    zoomDisabled() {\n        return this.scale <= 0.5 || this.scale >= 1.5;\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.wrapper = this.container.parentElement;\n                this.appendContainer();\n                this.moveOnTop();\n            break;\n\n            case 'void':\n                DomHandler.addClass(this.wrapper, 'p-component-overlay-leave');\n            break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(this.container);\n                this.maskVisible = false;\n                this.container = null;\n                this.wrapper = null;\n                this.cd.markForCheck();\n                this.onHide.emit({});\n            break;\n            case 'visible':\n                this.onShow.emit({});\n            break;\n        }\n    }\n\n    moveOnTop() {\n        ZIndexUtils.set('modal', this.container, this.config.zIndex.modal);\n        this.wrapper.style.zIndex = String(parseInt(this.container.style.zIndex, 10) - 1);\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.wrapper);\n            else\n                DomHandler.appendChild(this.wrapper, this.appendTo);\n        }\n    }\n\n    imagePreviewStyle() {\n        return {transform: 'rotate(' + this.rotate + 'deg) scale(' + this.scale + ')'};\n    }\n\n    containerClass() {\n        return {\n            'p-image p-component': true,\n            'p-image-preview-container': this.preview\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Image, SharedModule],\n    declarations: [Image]\n})\nexport class ImageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;MA+Da,KAAK;IAkDd,YAAoB,MAAqB,EAAU,EAAqB;QAApD,WAAM,GAAN,MAAM,CAAe;QAAU,OAAE,GAAF,EAAE,CAAmB;QA9B/D,YAAO,GAAY,KAAK,CAAC;QAEzB,0BAAqB,GAAW,kCAAkC,CAAC;QAEnE,0BAAqB,GAAW,kCAAkC,CAAC;QAElE,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAQzD,gBAAW,GAAY,KAAK,CAAC;QAE7B,mBAAc,GAAa,KAAK,CAAC;QAEjC,WAAM,GAAW,CAAC,CAAC;QAEnB,UAAK,GAAW,CAAC,CAAC;QAElB,iBAAY,GAAY,KAAK,CAAC;KAM+C;IAE7E,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,WAAW;oBACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC3C,MAAM;gBAEN;oBACI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC3C,MAAM;aACT;SACJ,CAAC,CAAC;KACN;IAED,YAAY;QACR,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;KACJ;IAED,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAED,mBAAmB;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;IAED,WAAW;QACP,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;IAED,UAAU;QACN,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;IAED,MAAM;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;IAED,OAAO;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;IAED,YAAY;QACR,OAAO,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;KACjD;IAED,gBAAgB,CAAC,KAAqB;QAClC,QAAO,KAAK,CAAC,OAAO;YAChB,KAAK,SAAS;gBACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM;YAEN,KAAK,MAAM;gBACP,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;gBACnE,MAAM;SACT;KACJ;IAED,cAAc,CAAC,KAAqB;QAChC,QAAO,KAAK,CAAC,OAAO;YAChB,KAAK,MAAM;gBACP,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM;YACN,KAAK,SAAS;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM;SACT;KACJ;IAED,SAAS;QACL,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACrF;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAExC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3D;KACJ;IAED,iBAAiB;QACb,OAAO,EAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,EAAC,CAAC;KAClF;IAED,cAAc;QACV,OAAO;YACH,qBAAqB,EAAE,IAAI;YAC3B,2BAA2B,EAAE,IAAI,CAAC,OAAO;SAC5C,CAAC;KACL;;kGArKQ,KAAK;sFAAL,KAAK,+cAgCG,aAAa,2HAtFpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmCT,okCACW;QACR,OAAO,CAAC,WAAW,EAAE;YACjB,UAAU,CAAC,iBAAiB,EAAE;gBAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,0BAA0B,CAAC;aACtC,CAAC;YACF,UAAU,CAAC,iBAAiB,EAAE;gBAC1B,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACtF,CAAC;SACL,CAAC;KACL;2FAQQ,KAAK;kBAxDjB,SAAS;+BACI,SAAS,YACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmCT,cACW;wBACR,OAAO,CAAC,WAAW,EAAE;4BACjB,UAAU,CAAC,iBAAiB,EAAE;gCAC1B,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gCAC9C,OAAO,CAAC,0BAA0B,CAAC;6BACtC,CAAC;4BACF,UAAU,CAAC,iBAAiB,EAAE;gCAC1B,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACtF,CAAC;yBACL,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;oIAIQ,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,GAAG;sBAAX,KAAK;gBAEG,GAAG;sBAAX,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEI,MAAM;sBAAf,MAAM;gBAEG,MAAM;sBAAf,MAAM;gBAEY,IAAI;sBAAtB,SAAS;uBAAC,MAAM;gBAEe,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MA6IrB,WAAW;;wGAAX,WAAW;yGAAX,WAAW,iBA7KX,KAAK,aAyKJ,YAAY,aAzKb,KAAK,EA0KG,YAAY;yGAGpB,WAAW,YAJX,CAAC,YAAY,CAAC,EACN,YAAY;2FAGpB,WAAW;kBALvB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;oBAC9B,YAAY,EAAE,CAAC,KAAK,CAAC;iBACxB;;;AC3OD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,159 @@
+import * as i0 from '@angular/core';
+import { Component, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i2 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { PrimeTemplate } from 'primeng/api';
+
+class InplaceDisplay {
+}
+InplaceDisplay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceDisplay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceDisplay, selector: "p-inplaceDisplay", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceDisplay, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceDisplay',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+class InplaceContent {
+}
+InplaceContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
+InplaceContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InplaceContent, selector: "p-inplaceContent", host: { classAttribute: "p-element" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inplaceContent',
+                    template: '<ng-content></ng-content>',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }] });
+class Inplace {
+    constructor(cd) {
+        this.cd = cd;
+        this.closeIcon = 'pi pi-times';
+        this.onActivate = new EventEmitter();
+        this.onDeactivate = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'display':
+                    this.displayTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onActivateClick(event) {
+        if (!this.preventClick)
+            this.activate(event);
+    }
+    onDeactivateClick(event) {
+        if (!this.preventClick)
+            this.deactivate(event);
+    }
+    activate(event) {
+        if (!this.disabled) {
+            this.active = true;
+            this.onActivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    deactivate(event) {
+        if (!this.disabled) {
+            this.active = false;
+            this.hover = false;
+            this.onDeactivate.emit(event);
+            this.cd.markForCheck();
+        }
+    }
+    onKeydown(event) {
+        if (event.which === 13) {
+            this.activate(event);
+            event.preventDefault();
+        }
+    }
+}
+Inplace.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Inplace.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Inplace, selector: "p-inplace", inputs: { active: "active", closable: "closable", disabled: "disabled", preventClick: "preventClick", style: "style", styleClass: "styleClass", closeIcon: "closeIcon" }, outputs: { onActivate: "onActivate", onDeactivate: "onDeactivate" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Inplace, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inplace', template: `
+        <div [ngClass]="{'p-inplace p-component': true, 'p-inplace-closable': closable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-inplace-display" (click)="onActivateClick($event)" tabindex="0" (keydown)="onKeydown($event)"
+                [ngClass]="{'p-disabled':disabled}" *ngIf="!active">
+                <ng-content select="[pInplaceDisplay]"></ng-content>
+                <ng-container *ngTemplateOutlet="displayTemplate"></ng-container>
+            </div>
+            <div class="p-inplace-content" *ngIf="active">
+                <ng-content select="[pInplaceContent]"></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                <button type="button" [icon]="closeIcon" pButton (click)="onDeactivateClick($event)" *ngIf="closable"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inplace .p-inplace-display{display:inline;cursor:pointer}.p-inplace .p-inplace-content{display:inline}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content{display:flex}.p-fluid .p-inplace.p-inplace-closable .p-inplace-content>.p-inputtext{flex:1 1 auto;width:1%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { active: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], preventClick: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], closeIcon: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onActivate: [{
+                type: Output
+            }], onDeactivate: [{
+                type: Output
+            }] } });
+class InplaceModule {
+}
+InplaceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InplaceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, declarations: [Inplace, InplaceDisplay, InplaceContent], imports: [CommonModule, ButtonModule], exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule] });
+InplaceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, imports: [[CommonModule, ButtonModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InplaceModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule],
+                    exports: [Inplace, InplaceDisplay, InplaceContent, ButtonModule],
+                    declarations: [Inplace, InplaceDisplay, InplaceContent]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Inplace, InplaceContent, InplaceDisplay, InplaceModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inplace.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inplace.mjs","sources":["../../src/app/components/inplace/inplace.ts","../../src/app/components/inplace/primeng-inplace.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, TemplateRef, QueryList, ContentChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {PrimeTemplate} from 'primeng/api';\n\n@Component({\n    selector: 'p-inplaceDisplay',\n    template: '<ng-content></ng-content>',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InplaceDisplay {}\n\n@Component({\n    selector: 'p-inplaceContent',\n    template: '<ng-content></ng-content>',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InplaceContent {}\n\n@Component({\n    selector: 'p-inplace',\n    template: `\n        <div [ngClass]=\"{'p-inplace p-component': true, 'p-inplace-closable': closable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-inplace-display\" (click)=\"onActivateClick($event)\" tabindex=\"0\" (keydown)=\"onKeydown($event)\"\n                [ngClass]=\"{'p-disabled':disabled}\" *ngIf=\"!active\">\n                <ng-content select=\"[pInplaceDisplay]\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"displayTemplate\"></ng-container>\n            </div>\n            <div class=\"p-inplace-content\" *ngIf=\"active\">\n                <ng-content select=\"[pInplaceContent]\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                <button type=\"button\" [icon]=\"closeIcon\" pButton (click)=\"onDeactivateClick($event)\" *ngIf=\"closable\"></button>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inplace.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Inplace implements AfterContentInit {\n\n    @Input() active: boolean;\n\n    @Input() closable: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() preventClick: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() closeIcon: string = 'pi pi-times';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onActivate: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDeactivate: EventEmitter<any> = new EventEmitter();\n\n    hover: boolean;\n\n    displayTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'display':\n                    this.displayTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onActivateClick(event) {\n        if (!this.preventClick)\n            this.activate(event);\n    }\n\n    onDeactivateClick(event) {\n        if (!this.preventClick)\n            this.deactivate(event);\n    }\n\n    activate(event?: Event) {\n        if (!this.disabled) {\n            this.active = true;\n            this.onActivate.emit(event);\n            this.cd.markForCheck();\n        }\n    }\n\n    deactivate(event?: Event) {\n        if (!this.disabled) {\n            this.active = false;\n            this.hover = false;\n            this.onDeactivate.emit(event);\n            this.cd.markForCheck();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.activate(event);\n            event.preventDefault();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule],\n    exports: [Inplace,InplaceDisplay,InplaceContent,ButtonModule],\n    declarations: [Inplace,InplaceDisplay,InplaceContent]\n})\nexport class InplaceModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,583 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+/*
+    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery
+    https://github.com/digitalBush/jquery.maskedinput/
+
+    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)
+
+    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.
+*/
+const INPUTMASK_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputMask),
+    multi: true
+};
+class InputMask {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.type = 'text';
+        this.slotChar = '_';
+        this.autoClear = true;
+        this.characterPattern = '[A-Za-z]';
+        this.onComplete = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onInput = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        let ua = DomHandler.getUserAgent();
+        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
+        this.initMask();
+    }
+    get mask() {
+        return this._mask;
+    }
+    set mask(val) {
+        this._mask = val;
+        this.initMask();
+        this.writeValue('');
+        this.onModelChange(this.value);
+    }
+    initMask() {
+        this.tests = [];
+        this.partialPosition = this.mask.length;
+        this.len = this.mask.length;
+        this.firstNonMaskPos = null;
+        this.defs = {
+            '9': '[0-9]',
+            'a': this.characterPattern,
+            '*': `${this.characterPattern}|[0-9]`
+        };
+        let maskTokens = this.mask.split('');
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c == '?') {
+                this.len--;
+                this.partialPosition = i;
+            }
+            else if (this.defs[c]) {
+                this.tests.push(new RegExp(this.defs[c]));
+                if (this.firstNonMaskPos === null) {
+                    this.firstNonMaskPos = this.tests.length - 1;
+                }
+                if (i < this.partialPosition) {
+                    this.lastRequiredNonMaskPos = this.tests.length - 1;
+                }
+            }
+            else {
+                this.tests.push(null);
+            }
+        }
+        this.buffer = [];
+        for (let i = 0; i < maskTokens.length; i++) {
+            let c = maskTokens[i];
+            if (c != '?') {
+                if (this.defs[c])
+                    this.buffer.push(this.getPlaceholder(i));
+                else
+                    this.buffer.push(c);
+            }
+        }
+        this.defaultBuffer = this.buffer.join('');
+    }
+    writeValue(value) {
+        this.value = value;
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            if (this.value == undefined || this.value == null)
+                this.inputViewChild.nativeElement.value = '';
+            else
+                this.inputViewChild.nativeElement.value = this.value;
+            this.checkVal();
+            this.focusText = this.inputViewChild.nativeElement.value;
+            this.updateFilledState();
+        }
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    caret(first, last) {
+        let range, begin, end;
+        if (!this.inputViewChild.nativeElement.offsetParent || this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+            return;
+        }
+        if (typeof first == 'number') {
+            begin = first;
+            end = (typeof last === 'number') ? last : begin;
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                this.inputViewChild.nativeElement.setSelectionRange(begin, end);
+            }
+            else if (this.inputViewChild.nativeElement['createTextRange']) {
+                range = this.inputViewChild.nativeElement['createTextRange']();
+                range.collapse(true);
+                range.moveEnd('character', end);
+                range.moveStart('character', begin);
+                range.select();
+            }
+        }
+        else {
+            if (this.inputViewChild.nativeElement.setSelectionRange) {
+                begin = this.inputViewChild.nativeElement.selectionStart;
+                end = this.inputViewChild.nativeElement.selectionEnd;
+            }
+            else if (document['selection'] && document['selection'].createRange) {
+                range = document['selection'].createRange();
+                begin = 0 - range.duplicate().moveStart('character', -100000);
+                end = begin + range.text.length;
+            }
+            return { begin: begin, end: end };
+        }
+    }
+    isCompleted() {
+        let completed;
+        for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {
+            if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    getPlaceholder(i) {
+        if (i < this.slotChar.length) {
+            return this.slotChar.charAt(i);
+        }
+        return this.slotChar.charAt(0);
+    }
+    seekNext(pos) {
+        while (++pos < this.len && !this.tests[pos])
+            ;
+        return pos;
+    }
+    seekPrev(pos) {
+        while (--pos >= 0 && !this.tests[pos])
+            ;
+        return pos;
+    }
+    shiftL(begin, end) {
+        let i, j;
+        if (begin < 0) {
+            return;
+        }
+        for (i = begin, j = this.seekNext(end); i < this.len; i++) {
+            if (this.tests[i]) {
+                if (j < this.len && this.tests[i].test(this.buffer[j])) {
+                    this.buffer[i] = this.buffer[j];
+                    this.buffer[j] = this.getPlaceholder(j);
+                }
+                else {
+                    break;
+                }
+                j = this.seekNext(j);
+            }
+        }
+        this.writeBuffer();
+        this.caret(Math.max(this.firstNonMaskPos, begin));
+    }
+    shiftR(pos) {
+        let i, c, j, t;
+        for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {
+            if (this.tests[i]) {
+                j = this.seekNext(i);
+                t = this.buffer[i];
+                this.buffer[i] = c;
+                if (j < this.len && this.tests[j].test(t)) {
+                    c = t;
+                }
+                else {
+                    break;
+                }
+            }
+        }
+    }
+    handleAndroidInput(e) {
+        var curVal = this.inputViewChild.nativeElement.value;
+        var pos = this.caret();
+        if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {
+            // a deletion or backspace happened
+            this.checkVal(true);
+            while (pos.begin > 0 && !this.tests[pos.begin - 1])
+                pos.begin--;
+            if (pos.begin === 0) {
+                while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])
+                    pos.begin++;
+            }
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+        else {
+            this.checkVal(true);
+            while (pos.begin < this.len && !this.tests[pos.begin])
+                pos.begin++;
+            setTimeout(() => {
+                this.caret(pos.begin, pos.begin);
+                this.updateModel(e);
+                if (this.isCompleted()) {
+                    this.onComplete.emit();
+                }
+            }, 0);
+        }
+    }
+    onInputBlur(e) {
+        this.focused = false;
+        this.onModelTouched();
+        this.checkVal();
+        this.updateFilledState();
+        this.onBlur.emit(e);
+        if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {
+            this.updateModel(e);
+            let event = document.createEvent('HTMLEvents');
+            event.initEvent('change', true, false);
+            this.inputViewChild.nativeElement.dispatchEvent(event);
+        }
+    }
+    onInputKeydown(e) {
+        if (this.readonly) {
+            return;
+        }
+        let k = e.which || e.keyCode, pos, begin, end;
+        let iPhone = /iphone/i.test(DomHandler.getUserAgent());
+        this.oldVal = this.inputViewChild.nativeElement.value;
+        this.onKeydown.emit(e);
+        //backspace, delete, and escape get special treatment
+        if (k === 8 || k === 46 || (iPhone && k === 127)) {
+            pos = this.caret();
+            begin = pos.begin;
+            end = pos.end;
+            if (end - begin === 0) {
+                begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));
+                end = k === 46 ? this.seekNext(end) : end;
+            }
+            this.clearBuffer(begin, end);
+            this.shiftL(begin, end - 1);
+            this.updateModel(e);
+            this.onInput.emit(e);
+            e.preventDefault();
+        }
+        else if (k === 13) { // enter
+            this.onInputBlur(e);
+            this.updateModel(e);
+        }
+        else if (k === 27) { // escape
+            this.inputViewChild.nativeElement.value = this.focusText;
+            this.caret(0, this.checkVal());
+            this.updateModel(e);
+            e.preventDefault();
+        }
+    }
+    onKeyPress(e) {
+        if (this.readonly) {
+            return;
+        }
+        var k = e.which || e.keyCode, pos = this.caret(), p, c, next, completed;
+        if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) { //Ignore
+            return;
+        }
+        else if (k && k !== 13) {
+            if (pos.end - pos.begin !== 0) {
+                this.clearBuffer(pos.begin, pos.end);
+                this.shiftL(pos.begin, pos.end - 1);
+            }
+            p = this.seekNext(pos.begin - 1);
+            if (p < this.len) {
+                c = String.fromCharCode(k);
+                if (this.tests[p].test(c)) {
+                    this.shiftR(p);
+                    this.buffer[p] = c;
+                    this.writeBuffer();
+                    next = this.seekNext(p);
+                    if (/android/i.test(DomHandler.getUserAgent())) {
+                        //Path for CSP Violation on FireFox OS 1.1
+                        let proxy = () => {
+                            this.caret(next);
+                        };
+                        setTimeout(proxy, 0);
+                    }
+                    else {
+                        this.caret(next);
+                    }
+                    if (pos.begin <= this.lastRequiredNonMaskPos) {
+                        completed = this.isCompleted();
+                    }
+                    this.onInput.emit(e);
+                }
+            }
+            e.preventDefault();
+        }
+        this.updateModel(e);
+        this.updateFilledState();
+        if (completed) {
+            this.onComplete.emit();
+        }
+    }
+    clearBuffer(start, end) {
+        let i;
+        for (i = start; i < end && i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+            }
+        }
+    }
+    writeBuffer() {
+        this.inputViewChild.nativeElement.value = this.buffer.join('');
+    }
+    checkVal(allow) {
+        //try to place characters where they belong
+        let test = this.inputViewChild.nativeElement.value, lastMatch = -1, i, c, pos;
+        for (i = 0, pos = 0; i < this.len; i++) {
+            if (this.tests[i]) {
+                this.buffer[i] = this.getPlaceholder(i);
+                while (pos++ < test.length) {
+                    c = test.charAt(pos - 1);
+                    if (this.tests[i].test(c)) {
+                        this.buffer[i] = c;
+                        lastMatch = i;
+                        break;
+                    }
+                }
+                if (pos > test.length) {
+                    this.clearBuffer(i + 1, this.len);
+                    break;
+                }
+            }
+            else {
+                if (this.buffer[i] === test.charAt(pos)) {
+                    pos++;
+                }
+                if (i < this.partialPosition) {
+                    lastMatch = i;
+                }
+            }
+        }
+        if (allow) {
+            this.writeBuffer();
+        }
+        else if (lastMatch + 1 < this.partialPosition) {
+            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {
+                // Invalid value. Remove it and replace it with the
+                // mask, which is the default behavior.
+                if (this.inputViewChild.nativeElement.value)
+                    this.inputViewChild.nativeElement.value = '';
+                this.clearBuffer(0, this.len);
+            }
+            else {
+                // Invalid value, but we opt to show the value to the
+                // user and allow them to correct their mistake.
+                this.writeBuffer();
+            }
+        }
+        else {
+            this.writeBuffer();
+            this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);
+        }
+        return (this.partialPosition ? i : this.firstNonMaskPos);
+    }
+    onInputFocus(event) {
+        if (this.readonly) {
+            return;
+        }
+        this.focused = true;
+        clearTimeout(this.caretTimeoutId);
+        let pos;
+        this.focusText = this.inputViewChild.nativeElement.value;
+        pos = this.checkVal();
+        this.caretTimeoutId = setTimeout(() => {
+            if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {
+                return;
+            }
+            this.writeBuffer();
+            if (pos == this.mask.replace("?", "").length) {
+                this.caret(0, pos);
+            }
+            else {
+                this.caret(pos);
+            }
+        }, 10);
+        this.onFocus.emit(event);
+    }
+    onInputChange(event) {
+        if (this.androidChrome)
+            this.handleAndroidInput(event);
+        else
+            this.handleInputChange(event);
+        this.onInput.emit(event);
+    }
+    handleInputChange(event) {
+        if (this.readonly) {
+            return;
+        }
+        setTimeout(() => {
+            var pos = this.checkVal(true);
+            this.caret(pos);
+            this.updateModel(event);
+            if (this.isCompleted()) {
+                this.onComplete.emit();
+            }
+        }, 0);
+    }
+    getUnmaskedValue() {
+        let unmaskedBuffer = [];
+        for (let i = 0; i < this.buffer.length; i++) {
+            let c = this.buffer[i];
+            if (this.tests[i] && c != this.getPlaceholder(i)) {
+                unmaskedBuffer.push(c);
+            }
+        }
+        return unmaskedBuffer.join('');
+    }
+    updateModel(e) {
+        const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;
+        if (updatedValue !== null || updatedValue !== undefined) {
+            this.value = updatedValue;
+            this.onModelChange(this.value);
+        }
+    }
+    updateFilledState() {
+        this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+    }
+}
+InputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputMask.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputMask, selector: "p-inputMask", inputs: { type: "type", slotChar: "slotChar", autoClear: "autoClear", style: "style", inputId: "inputId", styleClass: "styleClass", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", disabled: "disabled", readonly: "readonly", unmask: "unmask", name: "name", required: "required", characterPattern: "characterPattern", autoFocus: "autoFocus", autocomplete: "autocomplete", mask: "mask" }, outputs: { onComplete: "onComplete", onFocus: "onFocus", onBlur: "onBlur", onInput: "onInput", onKeydown: "onKeydown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element" }, providers: [INPUTMASK_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`, isInline: true, directives: [{ type: i1.InputText, selector: "[pInputText]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMask, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-inputMask',
+                    template: `<input #input pInputText class="p-inputmask" [attr.id]="inputId" [attr.type]="type" [attr.name]="name" [ngStyle]="style" [ngClass]="styleClass" [attr.placeholder]="placeholder" [attr.title]="title"
+        [attr.size]="size" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel" [attr.aria-required]="ariaRequired" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+        (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" (keydown)="onInputKeydown($event)" (keypress)="onKeyPress($event)" [attr.autofocus]="autoFocus"
+        (input)="onInputChange($event)" (paste)="handleInputChange($event)">`,
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    },
+                    providers: [INPUTMASK_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
+                type: Input
+            }], slotChar: [{
+                type: Input
+            }], autoClear: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], unmask: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], characterPattern: [{
+                type: Input
+            }], autoFocus: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['input', { static: true }]
+            }], onComplete: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onInput: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }], mask: [{
+                type: Input
+            }] } });
+class InputMaskModule {
+}
+InputMaskModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputMaskModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, declarations: [InputMask], imports: [CommonModule, InputTextModule], exports: [InputMask] });
+InputMaskModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputMaskModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [InputMask],
+                    declarations: [InputMask]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTMASK_VALUE_ACCESSOR, InputMask, InputMaskModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputmask.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputmask.mjs","sources":["../../src/app/components/inputmask/inputmask.ts","../../src/app/components/inputmask/primeng-inputmask.ts"],"sourcesContent":["/*\n    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery\n    https://github.com/digitalBush/jquery.maskedinput/\n\n    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)\n\n    Permission is hereby granted, free of charge, to any person\n    obtaining a copy of this software and associated documentation\n    files (the \"Software\"), to deal in the Software without\n    restriction, including without limitation the rights to use,\n    copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the\n    Software is furnished to do so, subject to the following\n    conditions:\n\n    The above copyright notice and this permission notice shall be\n    included in all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n    OTHER DEALINGS IN THE SOFTWARE.\n*/\nimport {NgModule,Component,ElementRef,OnInit,OnDestroy,Input,forwardRef,Output,EventEmitter,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const INPUTMASK_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputMask),\n  multi: true\n};\n\n@Component({\n    selector: 'p-inputMask',\n    template: `<input #input pInputText class=\"p-inputmask\" [attr.id]=\"inputId\" [attr.type]=\"type\" [attr.name]=\"name\" [ngStyle]=\"style\" [ngClass]=\"styleClass\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\"\n        [attr.size]=\"size\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\" [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n        (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (keydown)=\"onInputKeydown($event)\" (keypress)=\"onKeyPress($event)\" [attr.autofocus]=\"autoFocus\"\n        (input)=\"onInputChange($event)\" (paste)=\"handleInputChange($event)\">`,\n    host: {\n        'class': 'p-element',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [INPUTMASK_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class InputMask implements OnInit,OnDestroy,ControlValueAccessor {\n\n    @Input() type: string = 'text';\n\n    @Input() slotChar: string = '_';\n\n    @Input() autoClear: boolean = true;\n\n    @Input() style: any;\n\n    @Input() inputId: string;\n\n    @Input() styleClass: string;\n\n    @Input() placeholder: string;\n\n    @Input() size: number;\n\n    @Input() maxlength: number;\n\n    @Input() tabindex: string;\n\n    @Input() title: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() ariaRequired: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() unmask: boolean;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() characterPattern: string = '[A-Za-z]';\n\n    @Input() autoFocus: boolean;\n\n    @Input() autocomplete: string;\n\n    @ViewChild('input', { static: true }) inputViewChild: ElementRef;\n\n    @Output() onComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeydown: EventEmitter<any> = new EventEmitter();\n\n    value: any;\n\n    _mask: string;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    input: HTMLInputElement;\n\n    filled: boolean;\n\n    defs: any;\n\n    tests: any[];\n\n    partialPosition: any;\n\n    firstNonMaskPos: number;\n\n    lastRequiredNonMaskPos: any;\n\n    len: number;\n\n    oldVal: string;\n\n    buffer: any;\n\n    defaultBuffer: string;\n\n    focusText: string;\n\n    caretTimeoutId: any;\n\n    androidChrome: boolean;\n\n    focused: boolean;\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        let ua = DomHandler.getUserAgent();\n        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n\n        this.initMask();\n    }\n\n    @Input() get mask(): string {\n        return this._mask;\n    }\n\n    set mask(val:string) {\n        this._mask = val;\n\n        this.initMask();\n        this.writeValue('');\n        this.onModelChange(this.value);\n    }\n\n    initMask() {\n        this.tests = [];\n        this.partialPosition = this.mask.length;\n        this.len = this.mask.length;\n        this.firstNonMaskPos = null;\n        this.defs = {\n            '9': '[0-9]',\n            'a': this.characterPattern,\n            '*': `${this.characterPattern}|[0-9]`\n        };\n\n        let maskTokens = this.mask.split('');\n        for(let i = 0; i < maskTokens.length; i++) {\n            let c = maskTokens[i];\n            if (c == '?') {\n\t\t\t\tthis.len--;\n\t\t\t\tthis.partialPosition = i;\n\t\t\t}\n            else if (this.defs[c]) {\n\t\t\t\tthis.tests.push(new RegExp(this.defs[c]));\n\t\t\t\tif (this.firstNonMaskPos === null) {\n\t                this.firstNonMaskPos = this.tests.length - 1;\n\t\t\t\t}\n                if (i < this.partialPosition){\n                    this.lastRequiredNonMaskPos = this.tests.length - 1;\n                }\n\t\t\t}\n            else {\n\t\t\t\tthis.tests.push(null);\n\t\t\t}\n        }\n\n        this.buffer = [];\n        for(let i = 0; i < maskTokens.length; i++) {\n            let c = maskTokens[i];\n            if (c != '?') {\n                if (this.defs[c])\n                    this.buffer.push(this.getPlaceholder(i));\n                else\n                    this.buffer.push(c);\n            }\n        }\n        this.defaultBuffer = this.buffer.join('');\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            if (this.value == undefined || this.value == null)\n                this.inputViewChild.nativeElement.value = '';\n            else\n                this.inputViewChild.nativeElement.value = this.value;\n\n            this.checkVal();\n            this.focusText = this.inputViewChild.nativeElement.value;\n            this.updateFilledState();\n        }\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    caret(first?: number, last?: number) {\n        let range, begin, end;\n\n        if (!this.inputViewChild.nativeElement.offsetParent||this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {\n            return;\n        }\n\n        if (typeof first == 'number') {\n            begin = first;\n            end = (typeof last === 'number') ? last : begin;\n            if (this.inputViewChild.nativeElement.setSelectionRange) {\n                this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n            }\n            else if (this.inputViewChild.nativeElement['createTextRange']) {\n                range = this.inputViewChild.nativeElement['createTextRange']();\n                range.collapse(true);\n                range.moveEnd('character', end);\n                range.moveStart('character', begin);\n                range.select();\n            }\n        }\n        else {\n            if (this.inputViewChild.nativeElement.setSelectionRange) {\n    \t\t\tbegin = this.inputViewChild.nativeElement.selectionStart;\n    \t\t\tend = this.inputViewChild.nativeElement.selectionEnd;\n    \t\t}\n            else if (document['selection'] && document['selection'].createRange) {\n    \t\t\trange = document['selection'].createRange();\n    \t\t\tbegin = 0 - range.duplicate().moveStart('character', -100000);\n    \t\t\tend = begin + range.text.length;\n    \t\t}\n\n    \t\treturn {begin: begin, end: end};\n        }\n    }\n\n    isCompleted(): boolean {\n        let completed: boolean;\n        for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n            if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    getPlaceholder(i: number) {\n        if (i < this.slotChar.length) {\n            return this.slotChar.charAt(i);\n        }\n        return this.slotChar.charAt(0);\n    }\n\n    seekNext(pos) {\n        while (++pos < this.len && !this.tests[pos]);\n        return pos;\n    }\n\n    seekPrev(pos) {\n        while (--pos >= 0 && !this.tests[pos]);\n        return pos;\n    }\n\n    shiftL(begin:number,end:number) {\n        let i, j;\n\n        if (begin<0) {\n            return;\n        }\n\n        for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n            if (this.tests[i]) {\n                if (j < this.len && this.tests[i].test(this.buffer[j])) {\n                    this.buffer[i] = this.buffer[j];\n                    this.buffer[j] = this.getPlaceholder(j);\n                } else {\n                    break;\n                }\n\n                j = this.seekNext(j);\n            }\n        }\n        this.writeBuffer();\n        this.caret(Math.max(this.firstNonMaskPos, begin));\n    }\n\n    shiftR(pos) {\n        let i, c, j, t;\n\n        for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n            if (this.tests[i]) {\n                j = this.seekNext(i);\n                t = this.buffer[i];\n                this.buffer[i] = c;\n                if (j < this.len && this.tests[j].test(t)) {\n                    c = t;\n                } else {\n                    break;\n                }\n            }\n        }\n    }\n\n    handleAndroidInput(e) {\n        var curVal = this.inputViewChild.nativeElement.value;\n        var pos = this.caret();\n        if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length ) {\n            // a deletion or backspace happened\n            this.checkVal(true);\n            while (pos.begin > 0 && !this.tests[pos.begin-1])\n                  pos.begin--;\n            if (pos.begin === 0)\n            {\n               while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])\n                  pos.begin++;\n            }\n\n            setTimeout(() => {\n                this.caret(pos.begin, pos.begin);\n                this.updateModel(e);\n                if (this.isCompleted()) {\n                    this.onComplete.emit();\n                }\n            }, 0);\n        }\n        else {\n            this.checkVal(true);\n            while (pos.begin < this.len && !this.tests[pos.begin])\n                pos.begin++;\n\n            setTimeout(() => {\n                this.caret(pos.begin, pos.begin);\n                this.updateModel(e);\n                if (this.isCompleted()) {\n                    this.onComplete.emit();\n                }\n            }, 0);\n        }\n    }\n\n    onInputBlur(e) {\n        this.focused = false;\n        this.onModelTouched();\n        this.checkVal();\n        this.updateFilledState();\n        this.onBlur.emit(e);\n\n        if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {\n            this.updateModel(e);\n            let event = document.createEvent('HTMLEvents');\n            event.initEvent('change', true, false);\n            this.inputViewChild.nativeElement.dispatchEvent(event);\n        }\n    }\n\n    onInputKeydown(e) {\n        if (this.readonly) {\n            return;\n        }\n\n        let k = e.which||e.keyCode,\n            pos,\n            begin,\n            end;\n        let iPhone = /iphone/i.test(DomHandler.getUserAgent());\n        this.oldVal = this.inputViewChild.nativeElement.value;\n\n        this.onKeydown.emit(e);\n\n        //backspace, delete, and escape get special treatment\n        if (k === 8 || k === 46 || (iPhone && k === 127)) {\n            pos = this.caret();\n            begin = pos.begin;\n            end = pos.end;\n\n            if (end - begin === 0) {\n                begin=k!==46?this.seekPrev(begin):(end=this.seekNext(begin-1));\n                end=k===46?this.seekNext(end):end;\n            }\n\n            this.clearBuffer(begin, end);\n\t\t\tthis.shiftL(begin, end - 1);\n            this.updateModel(e);\n            this.onInput.emit(e);\n\n            e.preventDefault();\n        }\n        else if ( k === 13 ) { // enter\n            this.onInputBlur(e);\n            this.updateModel(e);\n        }\n        else if (k === 27) { // escape\n            this.inputViewChild.nativeElement.value = this.focusText;\n            this.caret(0, this.checkVal());\n            this.updateModel(e);\n\n            e.preventDefault();\n        }\n    }\n\n    onKeyPress(e) {\n        if (this.readonly){\n            return;\n        }\n\n        var k = e.which || e.keyCode,\n            pos = this.caret(),\n            p,\n            c,\n            next,\n            completed;\n\n        if (e.ctrlKey || e.altKey || e.metaKey || k < 32  || (k > 34 && k < 41)) {//Ignore\n            return;\n        } else if ( k && k !== 13 ) {\n            if (pos.end - pos.begin !== 0){\n                this.clearBuffer(pos.begin, pos.end);\n                this.shiftL(pos.begin, pos.end-1);\n            }\n\n            p = this.seekNext(pos.begin - 1);\n            if (p < this.len) {\n                c = String.fromCharCode(k);\n                if (this.tests[p].test(c)) {\n                    this.shiftR(p);\n\n                    this.buffer[p] = c;\n                    this.writeBuffer();\n                    next = this.seekNext(p);\n\n                    if (/android/i.test(DomHandler.getUserAgent())) {\n                        //Path for CSP Violation on FireFox OS 1.1\n                        let proxy = () => {\n                            this.caret(next);\n                        };\n\n                        setTimeout(proxy,0);\n                    }\n                    else {\n                        this.caret(next);\n                    }\n\n                    if (pos.begin <= this.lastRequiredNonMaskPos) {\n                        completed = this.isCompleted();\n                    }\n\n                    this.onInput.emit(e);\n                }\n            }\n            e.preventDefault();\n        }\n\n        this.updateModel(e);\n\n        this.updateFilledState();\n\n        if (completed) {\n            this.onComplete.emit();\n        }\n    }\n\n    clearBuffer(start, end) {\n        let i;\n        for (i = start; i < end && i < this.len; i++) {\n            if (this.tests[i]) {\n                this.buffer[i] = this.getPlaceholder(i);\n            }\n        }\n    }\n\n    writeBuffer() {\n        this.inputViewChild.nativeElement.value = this.buffer.join('');\n    }\n\n    checkVal(allow?: boolean) {\n        //try to place characters where they belong\n        let test = this.inputViewChild.nativeElement.value,\n            lastMatch = -1,\n            i,\n            c,\n            pos;\n\n        for (i = 0, pos = 0; i < this.len; i++) {\n            if (this.tests[i]) {\n                this.buffer[i] = this.getPlaceholder(i);\n                while (pos++ < test.length) {\n                    c = test.charAt(pos - 1);\n                    if (this.tests[i].test(c)) {\n                        this.buffer[i] = c;\n                        lastMatch = i;\n                        break;\n                    }\n                }\n                if (pos > test.length) {\n                    this.clearBuffer(i + 1, this.len);\n                    break;\n                }\n            } else {\n                if (this.buffer[i] === test.charAt(pos)) {\n                    pos++;\n                }\n                if ( i < this.partialPosition){\n                    lastMatch = i;\n                }\n            }\n        }\n        if (allow) {\n            this.writeBuffer();\n        } else if (lastMatch + 1 < this.partialPosition) {\n            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n                // Invalid value. Remove it and replace it with the\n                // mask, which is the default behavior.\n                if (this.inputViewChild.nativeElement.value) this.inputViewChild.nativeElement.value = '';\n                this.clearBuffer(0, this.len);\n            } else {\n                // Invalid value, but we opt to show the value to the\n                // user and allow them to correct their mistake.\n                this.writeBuffer();\n            }\n        } else {\n            this.writeBuffer();\n            this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);\n        }\n        return (this.partialPosition ? i : this.firstNonMaskPos);\n    }\n\n    onInputFocus(event) {\n        if (this.readonly){\n            return;\n        }\n\n        this.focused = true;\n\n        clearTimeout(this.caretTimeoutId);\n        let pos;\n\n        this.focusText = this.inputViewChild.nativeElement.value;\n\n        pos = this.checkVal();\n\n        this.caretTimeoutId = setTimeout(() => {\n            if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement){\n                return;\n            }\n            this.writeBuffer();\n            if (pos == this.mask.replace(\"?\",\"\").length) {\n                this.caret(0, pos);\n            } else {\n                this.caret(pos);\n            }\n        }, 10);\n\n        this.onFocus.emit(event);\n    }\n\n    onInputChange(event) {\n        if (this.androidChrome)\n            this.handleAndroidInput(event);\n        else\n            this.handleInputChange(event);\n\n        this.onInput.emit(event);\n    }\n\n    handleInputChange(event) {\n        if (this.readonly){\n            return;\n        }\n\n        setTimeout(() => {\n            var pos = this.checkVal(true);\n            this.caret(pos);\n            this.updateModel(event);\n            if (this.isCompleted()) {\n                this.onComplete.emit();\n            }\n        }, 0);\n    }\n\n    getUnmaskedValue() {\n        let unmaskedBuffer = [];\n        for(let i = 0; i < this.buffer.length; i++) {\n            let c = this.buffer[i];\n            if (this.tests[i] && c != this.getPlaceholder(i)) {\n                unmaskedBuffer.push(c);\n            }\n        }\n\n        return unmaskedBuffer.join('');\n    }\n\n    updateModel(e) {\n        const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;\n        if (updatedValue !== null || updatedValue !== undefined) {\n            this.value = updatedValue;\n            this.onModelChange(this.value);\n        }\n    }\n\n    updateFilledState() {\n        this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    ngOnDestroy() {\n\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\n    exports: [InputMask],\n    declarations: [InputMask]\n})\nexport class InputMaskModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,903 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i2 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const INPUTNUMBER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputNumber),
+    multi: true
+};
+class InputNumber {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.showButtons = false;
+        this.format = true;
+        this.buttonLayout = "stacked";
+        this.incrementButtonIcon = 'pi pi-angle-up';
+        this.decrementButtonIcon = 'pi pi-angle-down';
+        this.readonly = false;
+        this.step = 1;
+        this.allowEmpty = true;
+        this.mode = "decimal";
+        this.useGrouping = true;
+        this.onInput = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onKeyDown = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.groupChar = '';
+        this.prefixChar = '';
+        this.suffixChar = '';
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(disabled) {
+        if (disabled)
+            this.focused = false;
+        this._disabled = disabled;
+        if (this.timer)
+            this.clearTimer();
+    }
+    ngOnChanges(simpleChange) {
+        const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];
+        if (props.some(p => !!simpleChange[p])) {
+            this.updateConstructParser();
+        }
+    }
+    ngOnInit() {
+        this.constructParser();
+        this.initialized = true;
+    }
+    getOptions() {
+        return {
+            localeMatcher: this.localeMatcher,
+            style: this.mode,
+            currency: this.currency,
+            currencyDisplay: this.currencyDisplay,
+            useGrouping: this.useGrouping,
+            minimumFractionDigits: this.minFractionDigits,
+            maximumFractionDigits: this.maxFractionDigits
+        };
+    }
+    constructParser() {
+        this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());
+        const numerals = [...new Intl.NumberFormat(this.locale, { useGrouping: false }).format(9876543210)].reverse();
+        const index = new Map(numerals.map((d, i) => [d, i]));
+        this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');
+        this._group = this.getGroupingExpression();
+        this._minusSign = this.getMinusSignExpression();
+        this._currency = this.getCurrencyExpression();
+        this._decimal = this.getDecimalExpression();
+        this._suffix = this.getSuffixExpression();
+        this._prefix = this.getPrefixExpression();
+        this._index = d => index.get(d);
+    }
+    updateConstructParser() {
+        if (this.initialized) {
+            this.constructParser();
+        }
+    }
+    escapeRegExp(text) {
+        return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+    }
+    getDecimalExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { ...this.getOptions(), useGrouping: false });
+        return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getGroupingExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: true });
+        this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
+        return new RegExp(`[${this.groupChar}]`, 'g');
+    }
+    getMinusSignExpression() {
+        const formatter = new Intl.NumberFormat(this.locale, { useGrouping: false });
+        return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');
+    }
+    getCurrencyExpression() {
+        if (this.currency) {
+            const formatter = new Intl.NumberFormat(this.locale, { style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            return new RegExp(`[${formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');
+        }
+        return new RegExp(`[]`, 'g');
+    }
+    getPrefixExpression() {
+        if (this.prefix) {
+            this.prefixChar = this.prefix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay });
+            this.prefixChar = formatter.format(1).split('1')[0];
+        }
+        return new RegExp(`${this.escapeRegExp(this.prefixChar || '')}`, 'g');
+    }
+    getSuffixExpression() {
+        if (this.suffix) {
+            this.suffixChar = this.suffix;
+        }
+        else {
+            const formatter = new Intl.NumberFormat(this.locale, { style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,
+                minimumFractionDigits: 0, maximumFractionDigits: 0 });
+            this.suffixChar = formatter.format(1).split('1')[1];
+        }
+        return new RegExp(`${this.escapeRegExp(this.suffixChar || '')}`, 'g');
+    }
+    formatValue(value) {
+        if (value != null) {
+            if (value === '-') { // Minus sign
+                return value;
+            }
+            if (this.format) {
+                let formatter = new Intl.NumberFormat(this.locale, this.getOptions());
+                let formattedValue = formatter.format(value);
+                if (this.prefix) {
+                    formattedValue = this.prefix + formattedValue;
+                }
+                if (this.suffix) {
+                    formattedValue = formattedValue + this.suffix;
+                }
+                return formattedValue;
+            }
+            return value.toString();
+        }
+        return '';
+    }
+    parseValue(text) {
+        let filteredText = text
+            .replace(this._suffix, '')
+            .replace(this._prefix, '')
+            .trim()
+            .replace(/\s/g, '')
+            .replace(this._currency, '')
+            .replace(this._group, '')
+            .replace(this._minusSign, '-')
+            .replace(this._decimal, '.')
+            .replace(this._numeral, this._index);
+        if (filteredText) {
+            if (filteredText === '-') // Minus sign
+                return filteredText;
+            let parsedValue = +filteredText;
+            return isNaN(parsedValue) ? null : parsedValue;
+        }
+        return null;
+    }
+    repeat(event, interval, dir) {
+        if (this.readonly) {
+            return;
+        }
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue = this.parseValue(this.input.nativeElement.value) || 0;
+        let newValue = this.validateValue(currentValue + step);
+        if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {
+            return;
+        }
+        this.updateInput(newValue, null, 'spin', null);
+        this.updateModel(event, newValue);
+        this.handleOnInput(event, currentValue, newValue);
+    }
+    onUpButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, 1);
+        event.preventDefault();
+    }
+    onUpButtonMouseUp() {
+        this.clearTimer();
+    }
+    onUpButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onUpButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, 1);
+        }
+    }
+    onUpButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseDown(event) {
+        this.input.nativeElement.focus();
+        this.repeat(event, null, -1);
+        event.preventDefault();
+    }
+    onDownButtonMouseUp() {
+        this.clearTimer();
+    }
+    onDownButtonMouseLeave() {
+        this.clearTimer();
+    }
+    onDownButtonKeyUp() {
+        this.clearTimer();
+    }
+    onDownButtonKeyDown(event) {
+        if (event.keyCode === 32 || event.keyCode === 13) {
+            this.repeat(event, null, -1);
+        }
+    }
+    onUserInput(event) {
+        if (this.isSpecialChar) {
+            event.target.value = this.lastValue;
+        }
+        this.isSpecialChar = false;
+    }
+    onInputKeyDown(event) {
+        this.lastValue = event.target.value;
+        if (event.shiftKey || event.altKey) {
+            this.isSpecialChar = true;
+            return;
+        }
+        let selectionStart = event.target.selectionStart;
+        let selectionEnd = event.target.selectionEnd;
+        let inputValue = event.target.value;
+        let newValueStr = null;
+        if (event.altKey) {
+            event.preventDefault();
+        }
+        switch (event.which) {
+            //up
+            case 38:
+                this.spin(event, 1);
+                event.preventDefault();
+                break;
+            //down
+            case 40:
+                this.spin(event, -1);
+                event.preventDefault();
+                break;
+            //left
+            case 37:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {
+                    event.preventDefault();
+                }
+                break;
+            //right
+            case 39:
+                if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {
+                    event.preventDefault();
+                }
+                break;
+            //enter
+            case 13:
+                newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));
+                this.input.nativeElement.value = this.formatValue(newValueStr);
+                this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);
+                this.updateModel(event, newValueStr);
+                break;
+            //backspace
+            case 8: {
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart - 1);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            }
+            // del
+            case 46:
+                event.preventDefault();
+                if (selectionStart === selectionEnd) {
+                    const deleteChar = inputValue.charAt(selectionStart);
+                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);
+                    if (this.isNumeralChar(deleteChar)) {
+                        const decimalLength = this.getDecimalLength(inputValue);
+                        if (this._group.test(deleteChar)) {
+                            this._group.lastIndex = 0;
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
+                        }
+                        else if (this._decimal.test(deleteChar)) {
+                            this._decimal.lastIndex = 0;
+                            if (decimalLength) {
+                                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);
+                            }
+                            else {
+                                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                            }
+                        }
+                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';
+                            newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);
+                        }
+                        else if (decimalCharIndexWithoutPrefix === 1) {
+                            newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
+                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
+                        }
+                        else {
+                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
+                        }
+                    }
+                    this.updateValue(event, newValueStr, null, 'delete-back-single');
+                }
+                else {
+                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
+                    this.updateValue(event, newValueStr, null, 'delete-range');
+                }
+                break;
+            default:
+                break;
+        }
+        this.onKeyDown.emit(event);
+    }
+    onInputKeyPress(event) {
+        event.preventDefault();
+        let code = event.which || event.keyCode;
+        let char = String.fromCharCode(code);
+        const isDecimalSign = this.isDecimalSign(char);
+        const isMinusSign = this.isMinusSign(char);
+        if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {
+            this.insert(event, char, { isDecimalSign, isMinusSign });
+        }
+    }
+    onPaste(event) {
+        if (!this.disabled) {
+            event.preventDefault();
+            let data = (event.clipboardData || window['clipboardData']).getData('Text');
+            if (data) {
+                let filteredData = this.parseValue(data);
+                if (filteredData != null) {
+                    this.insert(event, filteredData.toString());
+                }
+            }
+        }
+    }
+    allowMinusSign() {
+        return this.min == null || this.min < 0;
+    }
+    isMinusSign(char) {
+        if (this._minusSign.test(char) || char === '-') {
+            this._minusSign.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalSign(char) {
+        if (this._decimal.test(char)) {
+            this._decimal.lastIndex = 0;
+            return true;
+        }
+        return false;
+    }
+    isDecimalMode() {
+        return this.mode === 'decimal';
+    }
+    getDecimalCharIndexes(val) {
+        let decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const filteredVal = val.replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '');
+        const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        return { decimalCharIndex, decimalCharIndexWithoutPrefix };
+    }
+    getCharIndexes(val) {
+        const decimalCharIndex = val.search(this._decimal);
+        this._decimal.lastIndex = 0;
+        const minusCharIndex = val.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        const suffixCharIndex = val.search(this._suffix);
+        this._suffix.lastIndex = 0;
+        const currencyCharIndex = val.search(this._currency);
+        this._currency.lastIndex = 0;
+        return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };
+    }
+    insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {
+        const minusCharIndexOnText = text.search(this._minusSign);
+        this._minusSign.lastIndex = 0;
+        if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
+            return;
+        }
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let selectionEnd = this.input.nativeElement.selectionEnd;
+        let inputValue = this.input.nativeElement.value.trim();
+        const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);
+        let newValueStr;
+        if (sign.isMinusSign) {
+            if (selectionStart === 0) {
+                newValueStr = inputValue;
+                if (minusCharIndex === -1 || selectionEnd !== 0) {
+                    newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
+                }
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else if (sign.isDecimalSign) {
+            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
+                this.updateValue(event, inputValue, text, 'insert');
+            }
+            else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+            else if (decimalCharIndex === -1 && this.maxFractionDigits) {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, 'insert');
+            }
+        }
+        else {
+            const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
+            const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
+            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
+                if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {
+                    const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);
+                    newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
+                    this.updateValue(event, newValueStr, text, operation);
+                }
+            }
+            else {
+                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
+                this.updateValue(event, newValueStr, text, operation);
+            }
+        }
+    }
+    insertText(value, text, start, end) {
+        let textSplit = text === '.' ? text : text.split('.');
+        if (textSplit.length === 2) {
+            const decimalCharIndex = value.slice(start, end).search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));
+        }
+        else if ((end - start) === value.length) {
+            return this.formatValue(text);
+        }
+        else if (start === 0) {
+            return text + value.slice(end);
+        }
+        else if (end === value.length) {
+            return value.slice(0, start) + text;
+        }
+        else {
+            return value.slice(0, start) + text + value.slice(end);
+        }
+    }
+    deleteRange(value, start, end) {
+        let newValueStr;
+        if ((end - start) === value.length)
+            newValueStr = '';
+        else if (start === 0)
+            newValueStr = value.slice(end);
+        else if (end === value.length)
+            newValueStr = value.slice(0, start);
+        else
+            newValueStr = value.slice(0, start) + value.slice(end);
+        return newValueStr;
+    }
+    initCursor() {
+        let selectionStart = this.input.nativeElement.selectionStart;
+        let inputValue = this.input.nativeElement.value;
+        let valueLength = inputValue.length;
+        let index = null;
+        // remove prefix
+        let prefixLength = (this.prefixChar || '').length;
+        inputValue = inputValue.replace(this._prefix, '');
+        selectionStart = selectionStart - prefixLength;
+        let char = inputValue.charAt(selectionStart);
+        if (this.isNumeralChar(char)) {
+            return selectionStart + prefixLength;
+        }
+        //left
+        let i = selectionStart - 1;
+        while (i >= 0) {
+            char = inputValue.charAt(i);
+            if (this.isNumeralChar(char)) {
+                index = i + prefixLength;
+                break;
+            }
+            else {
+                i--;
+            }
+        }
+        if (index !== null) {
+            this.input.nativeElement.setSelectionRange(index + 1, index + 1);
+        }
+        else {
+            i = selectionStart;
+            while (i < valueLength) {
+                char = inputValue.charAt(i);
+                if (this.isNumeralChar(char)) {
+                    index = i + prefixLength;
+                    break;
+                }
+                else {
+                    i++;
+                }
+            }
+            if (index !== null) {
+                this.input.nativeElement.setSelectionRange(index, index);
+            }
+        }
+        return index || 0;
+    }
+    onInputClick() {
+        this.initCursor();
+    }
+    isNumeralChar(char) {
+        if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {
+            this.resetRegex();
+            return true;
+        }
+        return false;
+    }
+    resetRegex() {
+        this._numeral.lastIndex = 0;
+        this._decimal.lastIndex = 0;
+        this._group.lastIndex = 0;
+        this._minusSign.lastIndex = 0;
+    }
+    updateValue(event, valueStr, insertedValueStr, operation) {
+        let currentValue = this.input.nativeElement.value;
+        let newValue = null;
+        if (valueStr != null) {
+            newValue = this.parseValue(valueStr);
+            newValue = !newValue && !this.allowEmpty ? 0 : newValue;
+            this.updateInput(newValue, insertedValueStr, operation, valueStr);
+            this.handleOnInput(event, currentValue, newValue);
+        }
+    }
+    handleOnInput(event, currentValue, newValue) {
+        if (this.isValueChanged(currentValue, newValue)) {
+            this.onInput.emit({ originalEvent: event, value: newValue });
+        }
+    }
+    isValueChanged(currentValue, newValue) {
+        if (newValue === null && currentValue !== null) {
+            return true;
+        }
+        if (newValue != null) {
+            let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;
+            return newValue !== parsedCurrentValue;
+        }
+        return false;
+    }
+    validateValue(value) {
+        if (value === '-' || value == null) {
+            return null;
+        }
+        if (this.min != null && value < this.min) {
+            return this.min;
+        }
+        if (this.max != null && value > this.max) {
+            return this.max;
+        }
+        return value;
+    }
+    updateInput(value, insertedValueStr, operation, valueStr) {
+        insertedValueStr = insertedValueStr || '';
+        let inputValue = this.input.nativeElement.value;
+        let newValue = this.formatValue(value);
+        let currentLength = inputValue.length;
+        if (newValue !== valueStr) {
+            newValue = this.concatValues(newValue, valueStr);
+        }
+        if (currentLength === 0) {
+            this.input.nativeElement.value = newValue;
+            this.input.nativeElement.setSelectionRange(0, 0);
+            const index = this.initCursor();
+            const selectionEnd = index + insertedValueStr.length;
+            this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+        }
+        else {
+            let selectionStart = this.input.nativeElement.selectionStart;
+            let selectionEnd = this.input.nativeElement.selectionEnd;
+            if (this.maxlength && this.maxlength < newValue.length) {
+                return;
+            }
+            this.input.nativeElement.value = newValue;
+            let newLength = newValue.length;
+            if (operation === 'range-insert') {
+                const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
+                const startValueStr = startValue !== null ? startValue.toString() : '';
+                const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);
+                const sRegex = new RegExp(startExpr, 'g');
+                sRegex.test(newValue);
+                const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);
+                const tRegex = new RegExp(tExpr, 'g');
+                tRegex.test(newValue.slice(sRegex.lastIndex));
+                selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (newLength === currentLength) {
+                if (operation === 'insert' || operation === 'delete-back-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);
+                else if (operation === 'delete-single')
+                    this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);
+                else if (operation === 'delete-range' || operation === 'spin')
+                    this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (operation === 'delete-back-single') {
+                let prevChar = inputValue.charAt(selectionEnd - 1);
+                let nextChar = inputValue.charAt(selectionEnd);
+                let diff = currentLength - newLength;
+                let isGroupChar = this._group.test(nextChar);
+                if (isGroupChar && diff === 1) {
+                    selectionEnd += 1;
+                }
+                else if (!isGroupChar && this.isNumeralChar(prevChar)) {
+                    selectionEnd += (-1 * diff) + 1;
+                }
+                this._group.lastIndex = 0;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else if (inputValue === '-' && operation === 'insert') {
+                this.input.nativeElement.setSelectionRange(0, 0);
+                const index = this.initCursor();
+                const selectionEnd = index + insertedValueStr.length + 1;
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+            else {
+                selectionEnd = selectionEnd + (newLength - currentLength);
+                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);
+            }
+        }
+        this.input.nativeElement.setAttribute('aria-valuenow', value);
+    }
+    concatValues(val1, val2) {
+        if (val1 && val2) {
+            let decimalCharIndex = val2.search(this._decimal);
+            this._decimal.lastIndex = 0;
+            return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;
+        }
+        return val1;
+    }
+    getDecimalLength(value) {
+        if (value) {
+            const valueSplit = value.split(this._decimal);
+            if (valueSplit.length === 2) {
+                return valueSplit[1].replace(this._suffix, '')
+                    .trim()
+                    .replace(/\s/g, '')
+                    .replace(this._currency, '').length;
+            }
+        }
+        return 0;
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));
+        this.input.nativeElement.value = this.formatValue(newValue);
+        this.input.nativeElement.setAttribute('aria-valuenow', newValue);
+        this.updateModel(event, newValue);
+        this.onBlur.emit(event);
+    }
+    formattedValue() {
+        const val = !this.value && !this.allowEmpty ? 0 : this.value;
+        return this.formatValue(val);
+    }
+    updateModel(event, value) {
+        if (this.value !== value) {
+            this.value = value;
+            this.onModelChange(value);
+        }
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    getFormatter() {
+        return this.numberFormat;
+    }
+}
+InputNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputNumber, selector: "p-inputNumber", inputs: { showButtons: "showButtons", format: "format", buttonLayout: "buttonLayout", inputId: "inputId", styleClass: "styleClass", style: "style", placeholder: "placeholder", size: "size", maxlength: "maxlength", tabindex: "tabindex", title: "title", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", name: "name", required: "required", autocomplete: "autocomplete", min: "min", max: "max", incrementButtonClass: "incrementButtonClass", decrementButtonClass: "decrementButtonClass", incrementButtonIcon: "incrementButtonIcon", decrementButtonIcon: "decrementButtonIcon", readonly: "readonly", step: "step", allowEmpty: "allowEmpty", locale: "locale", localeMatcher: "localeMatcher", mode: "mode", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", disabled: "disabled" }, outputs: { onInput: "onInput", onFocus: "onFocus", onBlur: "onBlur", onKeyDown: "onKeyDown" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [INPUTNUMBER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, isInline: true, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.InputText, selector: "[pInputText]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumber, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputNumber', template: `
+        <span [ngClass]="{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',
+                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}"
+                [ngStyle]="style" [class]="styleClass">
+            <input #input [ngClass]="'p-inputnumber-input'" [ngStyle]="inputStyle" [class]="inputStyleClass" pInputText [value]="formattedValue()" [attr.placeholder]="placeholder" [attr.title]="title" [attr.id]="inputId"
+                [attr.size]="size" [attr.name]="name" [attr.autocomplete]="autocomplete" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.aria-label]="ariaLabel"
+                [attr.aria-required]="ariaRequired" [disabled]="disabled" [attr.required]="required" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [readonly]="readonly" inputmode="decimal"
+                (input)="onUserInput($event)" (keydown)="onInputKeyDown($event)" (keypress)="onInputKeyPress($event)" (paste)="onPaste($event)" (click)="onInputClick()"
+                (focus)="onInputFocus($event)" (blur)="onInputBlur($event)">
+            <span class="p-inputnumber-button-group" *ngIf="showButtons && buttonLayout === 'stacked'">
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+                <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" [disabled]="disabled"
+                    (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+            </span>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-up': true}" [class]="incrementButtonClass" [icon]="incrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onUpButtonMouseDown($event)" (mouseup)="onUpButtonMouseUp()" (mouseleave)="onUpButtonMouseLeave()" (keydown)="onUpButtonKeyDown($event)" (keyup)="onUpButtonKeyUp()"></button>
+            <button type="button" pButton [ngClass]="{'p-inputnumber-button p-inputnumber-button-down': true}" [class]="decrementButtonClass" [icon]="decrementButtonIcon" *ngIf="showButtons && buttonLayout !== 'stacked'" [disabled]="disabled"
+                (mousedown)="this.onDownButtonMouseDown($event)" (mouseup)="onDownButtonMouseUp()" (mouseleave)="onDownButtonMouseLeave()" (keydown)="onDownButtonKeyDown($event)" (keyup)="onDownButtonKeyUp()"></button>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, providers: [INPUTNUMBER_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, styles: ["p-inputnumber,.p-inputnumber{display:inline-flex}.p-inputnumber-button{display:flex;align-items:center;justify-content:center;flex:0 0 auto}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label{display:none}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up{border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-input{border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;padding:0}.p-inputnumber-buttons-stacked .p-inputnumber-button-group{display:flex;flex-direction:column}.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button{flex:1 1 auto}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{order:3;border-top-left-radius:0;border-bottom-left-radius:0}.p-inputnumber-buttons-horizontal .p-inputnumber-input{order:2;border-radius:0}.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{order:1;border-top-right-radius:0;border-bottom-right-radius:0}.p-inputnumber-buttons-vertical{flex-direction:column}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up{order:1;border-bottom-left-radius:0;border-bottom-right-radius:0;width:100%}.p-inputnumber-buttons-vertical .p-inputnumber-input{order:2;border-radius:0;text-align:center}.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down{order:3;border-top-left-radius:0;border-top-right-radius:0;width:100%}.p-inputnumber-input{flex:1 1 auto}.p-fluid p-inputnumber,.p-fluid .p-inputnumber{width:100%}.p-fluid .p-inputnumber .p-inputnumber-input{width:1%}.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { showButtons: [{
+                type: Input
+            }], format: [{
+                type: Input
+            }], buttonLayout: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], title: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], ariaRequired: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], autocomplete: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], incrementButtonClass: [{
+                type: Input
+            }], decrementButtonClass: [{
+                type: Input
+            }], incrementButtonIcon: [{
+                type: Input
+            }], decrementButtonIcon: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], allowEmpty: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onInput: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onKeyDown: [{
+                type: Output
+            }], disabled: [{
+                type: Input
+            }] } });
+class InputNumberModule {
+}
+InputNumberModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputNumberModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, declarations: [InputNumber], imports: [CommonModule, InputTextModule, ButtonModule], exports: [InputNumber] });
+InputNumberModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, imports: [[CommonModule, InputTextModule, ButtonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputNumberModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule, ButtonModule],
+                    exports: [InputNumber],
+                    declarations: [InputNumber]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTNUMBER_VALUE_ACCESSOR, InputNumber, InputNumberModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputnumber.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputnumber.mjs","sources":["../../src/app/components/inputnumber/inputnumber.ts","../../src/app/components/inputnumber/primeng-inputnumber.ts"],"sourcesContent":["\nimport {NgModule,Component,ChangeDetectionStrategy, Input, ElementRef, ViewChild, OnInit, EventEmitter, Output, forwardRef, ViewEncapsulation, ChangeDetectorRef, SimpleChanges} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => InputNumber),\n    multi: true\n};\n@Component({\n    selector: 'p-inputNumber',\n    template: `\n        <span [ngClass]=\"{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n                'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}\"\n                [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input #input [ngClass]=\"'p-inputnumber-input'\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" pInputText [value]=\"formattedValue()\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\" [attr.id]=\"inputId\"\n                [attr.size]=\"size\" [attr.name]=\"name\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [attr.required]=\"required\" [attr.aria-valuemin]=\"min\" [attr.aria-valuemax]=\"max\" [readonly]=\"readonly\" inputmode=\"decimal\"\n                (input)=\"onUserInput($event)\" (keydown)=\"onInputKeyDown($event)\" (keypress)=\"onInputKeyPress($event)\" (paste)=\"onPaste($event)\" (click)=\"onInputClick()\"\n                (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n            <span class=\"p-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\">\n                <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" [disabled]=\"disabled\"\n                    (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n                <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" [disabled]=\"disabled\"\n                    (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n            </span>\n            <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n                (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n            <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n                (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [INPUTNUMBER_VALUE_ACCESSOR],\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inputnumber.css'],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused'\n    }\n})\nexport class InputNumber implements OnInit,ControlValueAccessor {\n\n    @Input() showButtons: boolean = false;\n\n    @Input() format: boolean = true;\n\n    @Input() buttonLayout: string = \"stacked\";\n\n    @Input() inputId: string;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() placeholder: string;\n\n    @Input() size: number;\n\n    @Input() maxlength: number;\n\n    @Input() tabindex: string;\n\n    @Input() title: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() ariaRequired: boolean;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() autocomplete: string;\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() incrementButtonClass: string;\n\n    @Input() decrementButtonClass: string;\n\n    @Input() incrementButtonIcon: string = 'pi pi-angle-up';\n\n    @Input() decrementButtonIcon: string = 'pi pi-angle-down';\n\n    @Input() readonly: boolean = false;\n\n    @Input() step: number = 1;\n\n    @Input() allowEmpty: boolean = true;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() mode: string = \"decimal\";\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    @Input() minFractionDigits: number;\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: string;\n\n    @ViewChild('input') input: ElementRef;\n\n    @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeyDown: EventEmitter<any> = new EventEmitter();\n\n    value: number;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    focused: boolean;\n\n    initialized: boolean;\n\n    groupChar: string = '';\n\n    prefixChar: string = '';\n\n    suffixChar: string = '';\n\n    isSpecialChar: boolean;\n\n    timer: any;\n\n    lastValue: string;\n\n    _numeral: any;\n\n    numberFormat: any;\n\n    _decimal: any;\n\n    _group: any;\n\n    _minusSign: any;\n\n    _currency: any;\n\n    _prefix: any;\n\n    _suffix: any;\n\n    _index: any;\n\n    _disabled: boolean;\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(disabled: boolean) {\n        if (disabled)\n            this.focused = false;\n\n        this._disabled = disabled;\n\n        if (this.timer)\n            this.clearTimer();\n    }\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef) { }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        const props = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'prefix', 'suffix'];\n        if (props.some(p => !!simpleChange[p])) {\n            this.updateConstructParser();\n        }\n    }\n\n    ngOnInit() {\n        this.constructParser();\n\n        this.initialized = true;\n    }\n\n    getOptions() {\n        return {\n            localeMatcher: this.localeMatcher,\n            style: this.mode,\n            currency: this.currency,\n            currencyDisplay: this.currencyDisplay,\n            useGrouping: this.useGrouping,\n            minimumFractionDigits: this.minFractionDigits,\n            maximumFractionDigits: this.maxFractionDigits\n        };\n    }\n\n    constructParser() {\n        this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n        const numerals = [...new Intl.NumberFormat(this.locale, {useGrouping: false}).format(9876543210)].reverse();\n        const index = new Map(numerals.map((d, i) => [d, i]));\n        this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n        this._group = this.getGroupingExpression();\n        this._minusSign = this.getMinusSignExpression();\n        this._currency = this.getCurrencyExpression();\n        this._decimal = this.getDecimalExpression();\n        this._suffix = this.getSuffixExpression();\n        this._prefix = this.getPrefixExpression();\n        this._index = d => index.get(d);\n    }\n\n    updateConstructParser() {\n        if (this.initialized) {\n            this.constructParser();\n        }\n    }\n\n    escapeRegExp(text) {\n        return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    }\n\n    getDecimalExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {...this.getOptions(), useGrouping: false});\n        return new RegExp(`[${formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, '')}]`, 'g');\n    }\n\n    getGroupingExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {useGrouping: true});\n        this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n        return new RegExp(`[${this.groupChar}]`, 'g');\n    }\n\n    getMinusSignExpression() {\n        const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n        return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n    }\n\n    getCurrencyExpression() {\n        if (this.currency) {\n            const formatter = new Intl.NumberFormat(this.locale, {style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay,\n                minimumFractionDigits: 0, maximumFractionDigits: 0});\n            return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._group, '')}]`, 'g');\n        }\n\n        return new RegExp(`[]`,'g');\n    }\n\n    getPrefixExpression() {\n        if (this.prefix) {\n            this.prefixChar = this.prefix;\n        }\n        else {\n            const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay});\n            this.prefixChar = formatter.format(1).split('1')[0];\n        }\n\n        return new RegExp(`${this.escapeRegExp(this.prefixChar||'')}`, 'g');\n    }\n\n    getSuffixExpression() {\n        if (this.suffix) {\n            this.suffixChar = this.suffix;\n        }\n        else {\n            const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,\n                minimumFractionDigits: 0, maximumFractionDigits: 0});\n            this.suffixChar = formatter.format(1).split('1')[1];\n        }\n\n        return new RegExp(`${this.escapeRegExp(this.suffixChar||'')}`, 'g');\n    }\n\n    formatValue(value) {\n        if (value != null) {\n            if (value === '-') { // Minus sign\n                return value;\n            }\n\n            if (this.format) {\n                let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n                let formattedValue = formatter.format(value);\n                if (this.prefix) {\n                    formattedValue = this.prefix + formattedValue;\n                }\n\n                if (this.suffix) {\n                    formattedValue = formattedValue + this.suffix;\n                }\n\n                return formattedValue;\n            }\n\n            return value.toString();\n        }\n\n        return '';\n    }\n\n    parseValue(text) {\n        let filteredText = text\n                            .replace(this._suffix, '')\n                            .replace(this._prefix, '')\n                            .trim()\n                            .replace(/\\s/g, '')\n                            .replace(this._currency, '')\n                            .replace(this._group, '')\n                            .replace(this._minusSign, '-')\n                            .replace(this._decimal, '.')\n                            .replace(this._numeral, this._index);\n\n        if (filteredText) {\n            if (filteredText === '-') // Minus sign\n                return filteredText;\n\n            let parsedValue = +filteredText;\n            return isNaN(parsedValue) ? null : parsedValue;\n        }\n\n        return null;\n    }\n\n    repeat(event, interval, dir) {\n        if (this.readonly) {\n            return;\n        }\n\n        let i = interval || 500;\n\n        this.clearTimer();\n        this.timer = setTimeout(() => {\n            this.repeat(event, 40, dir);\n        }, i);\n\n        this.spin(event, dir);\n    }\n\n    spin(event, dir) {\n        let step = this.step * dir;\n        let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n        let newValue = this.validateValue(currentValue + step);\n        if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n            return;\n        }\n\n        this.updateInput(newValue, null, 'spin', null);\n        this.updateModel(event, newValue);\n\n        this.handleOnInput(event, currentValue, newValue);\n    }\n\n    onUpButtonMouseDown(event) {\n        this.input.nativeElement.focus();\n        this.repeat(event, null, 1);\n        event.preventDefault();\n    }\n\n    onUpButtonMouseUp() {\n        this.clearTimer();\n    }\n\n    onUpButtonMouseLeave() {\n        this.clearTimer();\n    }\n\n    onUpButtonKeyDown(event) {\n        if (event.keyCode === 32 || event.keyCode === 13) {\n            this.repeat(event, null, 1);\n        }\n    }\n\n    onUpButtonKeyUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonMouseDown(event) {\n        this.input.nativeElement.focus();\n        this.repeat(event, null, -1);\n        event.preventDefault();\n    }\n\n    onDownButtonMouseUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonMouseLeave() {\n        this.clearTimer();\n    }\n\n    onDownButtonKeyUp() {\n        this.clearTimer();\n    }\n\n    onDownButtonKeyDown(event) {\n        if (event.keyCode === 32 || event.keyCode === 13) {\n            this.repeat(event, null, -1);\n        }\n    }\n\n    onUserInput(event) {\n        if (this.isSpecialChar) {\n            event.target.value = this.lastValue;\n        }\n        this.isSpecialChar = false;\n    }\n\n    onInputKeyDown(event) {\n        this.lastValue = event.target.value;\n        if (event.shiftKey || event.altKey) {\n            this.isSpecialChar = true;\n            return;\n        }\n\n        let selectionStart = event.target.selectionStart;\n        let selectionEnd = event.target.selectionEnd;\n        let inputValue = event.target.value;\n        let newValueStr = null;\n\n        if (event.altKey) {\n            event.preventDefault();\n        }\n\n        switch (event.which) {\n            //up\n            case 38:\n                this.spin(event, 1);\n                event.preventDefault();\n            break;\n\n            //down\n            case 40:\n                this.spin(event, -1);\n                event.preventDefault();\n            break;\n\n            //left\n            case 37:\n                if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n                    event.preventDefault();\n                }\n            break;\n\n            //right\n            case 39:\n                if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n                    event.preventDefault();\n                }\n            break;\n\n            //enter\n            case 13:\n                newValueStr = this.validateValue(this.parseValue(this.input.nativeElement.value));\n                this.input.nativeElement.value = this.formatValue(newValueStr);\n                this.input.nativeElement.setAttribute('aria-valuenow', newValueStr);\n                this.updateModel(event, newValueStr);\n            break;\n\n            //backspace\n            case 8: {\n                event.preventDefault();\n\n                if (selectionStart === selectionEnd) {\n                    const deleteChar = inputValue.charAt(selectionStart - 1);\n                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n                    if (this.isNumeralChar(deleteChar)) {\n                        const decimalLength = this.getDecimalLength(inputValue);\n\n                        if (this._group.test(deleteChar)) {\n                            this._group.lastIndex = 0;\n                            newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n                        }\n                        else if (this._decimal.test(deleteChar)) {\n                            this._decimal.lastIndex = 0;\n\n                            if (decimalLength) {\n                                this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n                            }\n                            else {\n                                newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n                            }\n                        }\n                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n                        }\n                        else if (decimalCharIndexWithoutPrefix === 1) {\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n                        }\n                        else {\n                            newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n                        }\n                    }\n\n                    this.updateValue(event, newValueStr, null, 'delete-single');\n                }\n                else {\n                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n                    this.updateValue(event, newValueStr, null, 'delete-range');\n                }\n\n                break;\n            }\n\n            // del\n            case 46:\n                event.preventDefault();\n\n                if (selectionStart === selectionEnd) {\n                    const deleteChar = inputValue.charAt(selectionStart);\n                    const { decimalCharIndex, decimalCharIndexWithoutPrefix } = this.getDecimalCharIndexes(inputValue);\n\n                    if (this.isNumeralChar(deleteChar)) {\n                        const decimalLength = this.getDecimalLength(inputValue);\n\n                        if (this._group.test(deleteChar)) {\n                            this._group.lastIndex = 0;\n                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n                        }\n                        else if (this._decimal.test(deleteChar)) {\n                            this._decimal.lastIndex = 0;\n\n                            if (decimalLength) {\n                                this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n                            }\n                            else {\n                                newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n                            }\n                        }\n                        else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                            const insertedText = this.isDecimalMode() && (this.minFractionDigits || 0) < decimalLength ? '' : '0';\n                            newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n                        }\n                        else if (decimalCharIndexWithoutPrefix === 1) {\n                            newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n                            newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n                        }\n                        else {\n                            newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n                        }\n                    }\n\n                    this.updateValue(event, newValueStr, null, 'delete-back-single');\n                }\n                else {\n                    newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n                    this.updateValue(event, newValueStr, null, 'delete-range');\n                }\n            break;\n\n            default:\n            break;\n        }\n\n        this.onKeyDown.emit(event);\n    }\n\n    onInputKeyPress(event) {\n        event.preventDefault();\n        let code = event.which || event.keyCode;\n        let char = String.fromCharCode(code);\n        const isDecimalSign = this.isDecimalSign(char);\n        const isMinusSign = this.isMinusSign(char);\n\n        if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n            this.insert(event, char, { isDecimalSign, isMinusSign });\n        }\n    }\n\n    onPaste(event) {\n        if (!this.disabled) {\n            event.preventDefault();\n            let data = (event.clipboardData || window['clipboardData']).getData('Text');\n            if (data) {\n                let filteredData = this.parseValue(data);\n                if (filteredData != null) {\n                    this.insert(event, filteredData.toString());\n                }\n            }\n        }\n    }\n\n    allowMinusSign() {\n        return this.min == null || this.min < 0;\n    }\n\n    isMinusSign(char) {\n        if (this._minusSign.test(char) || char === '-') {\n            this._minusSign.lastIndex = 0;\n            return true;\n        }\n\n        return false;\n    }\n\n    isDecimalSign(char) {\n        if (this._decimal.test(char)) {\n            this._decimal.lastIndex = 0;\n            return true;\n        }\n\n        return false;\n    }\n\n    isDecimalMode() {\n        return this.mode === 'decimal';\n    }\n\n    getDecimalCharIndexes(val) {\n        let decimalCharIndex = val.search(this._decimal);\n        this._decimal.lastIndex = 0;\n\n        const filteredVal = val.replace(this._prefix, '').trim().replace(/\\s/g, '').replace(this._currency, '');\n        const decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);\n        this._decimal.lastIndex = 0;\n\n        return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n    }\n\n    getCharIndexes(val) {\n        const decimalCharIndex = val.search(this._decimal);\n        this._decimal.lastIndex = 0;\n        const minusCharIndex = val.search(this._minusSign);\n        this._minusSign.lastIndex = 0;\n        const suffixCharIndex = val.search(this._suffix);\n        this._suffix.lastIndex = 0;\n        const currencyCharIndex = val.search(this._currency);\n        this._currency.lastIndex = 0;\n\n        return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n    }\n\n    insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n        const minusCharIndexOnText = text.search(this._minusSign);\n        this._minusSign.lastIndex = 0;\n        if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {\n            return;\n        }\n\n        let selectionStart = this.input.nativeElement.selectionStart;\n        let selectionEnd = this.input.nativeElement.selectionEnd;\n        let inputValue = this.input.nativeElement.value.trim();\n        const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = this.getCharIndexes(inputValue);\n        let newValueStr;\n\n        if (sign.isMinusSign) {\n            if (selectionStart === 0) {\n                newValueStr = inputValue;\n                if (minusCharIndex === -1 || selectionEnd !== 0) {\n                    newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n                }\n\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n        }\n        else if (sign.isDecimalSign) {\n            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n                this.updateValue(event, inputValue, text, 'insert');\n            }\n            else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n            else if (decimalCharIndex === -1 && this.maxFractionDigits) {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, 'insert');\n            }\n        }\n        else {\n            const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n            const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n                if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {\n                    const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : (suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length);\n\n                    newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n                    this.updateValue(event, newValueStr, text, operation);\n                }\n            }\n            else {\n                newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n                this.updateValue(event, newValueStr, text, operation);\n            }\n        }\n    }\n\n    insertText(value, text, start, end) {\n        let textSplit = text === '.' ? text : text.split('.');\n\n        if (textSplit.length === 2) {\n            const decimalCharIndex = value.slice(start, end).search(this._decimal);\n            this._decimal.lastIndex = 0;\n            return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));\n        }\n        else if ((end - start) === value.length) {\n            return this.formatValue(text);\n        }\n        else if (start === 0) {\n            return text + value.slice(end);\n        }\n        else if (end === value.length) {\n            return value.slice(0, start) + text;\n        }\n        else {\n            return value.slice(0, start) + text + value.slice(end);\n        }\n    }\n\n    deleteRange(value, start, end) {\n        let newValueStr;\n\n        if ((end - start) === value.length)\n            newValueStr = '';\n        else if (start === 0)\n            newValueStr = value.slice(end);\n        else if (end === value.length)\n            newValueStr = value.slice(0, start);\n        else\n            newValueStr = value.slice(0, start) + value.slice(end);\n\n        return newValueStr;\n    }\n\n    initCursor() {\n        let selectionStart = this.input.nativeElement.selectionStart;\n        let inputValue = this.input.nativeElement.value;\n        let valueLength = inputValue.length;\n        let index = null;\n\n        // remove prefix\n        let prefixLength = (this.prefixChar || '').length;\n        inputValue = inputValue.replace(this._prefix, '');\n        selectionStart = selectionStart - prefixLength;\n\n        let char = inputValue.charAt(selectionStart);\n        if (this.isNumeralChar(char)) {\n            return selectionStart + prefixLength;\n        }\n\n        //left\n        let i = selectionStart - 1;\n        while (i >= 0) {\n            char = inputValue.charAt(i);\n            if (this.isNumeralChar(char)) {\n                index = i + prefixLength;\n                break;\n            }\n            else {\n                i--;\n            }\n        }\n\n        if (index !== null) {\n            this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n        }\n        else {\n            i = selectionStart;\n            while (i < valueLength) {\n                char = inputValue.charAt(i);\n                if (this.isNumeralChar(char)) {\n                    index = i + prefixLength;\n                    break;\n                }\n                else {\n                    i++;\n                }\n            }\n\n            if (index !== null) {\n                this.input.nativeElement.setSelectionRange(index, index);\n            }\n        }\n\n        return index || 0;\n    }\n\n    onInputClick() {\n        this.initCursor();\n    }\n\n    isNumeralChar(char) {\n        if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n            this.resetRegex();\n            return true;\n        }\n\n        return false;\n    }\n\n    resetRegex() {\n        this._numeral.lastIndex =  0;\n        this._decimal.lastIndex =  0;\n        this._group.lastIndex =  0;\n        this._minusSign.lastIndex =  0;\n    }\n\n    updateValue(event, valueStr, insertedValueStr, operation) {\n        let currentValue = this.input.nativeElement.value;\n        let newValue = null;\n\n        if (valueStr != null) {\n            newValue = this.parseValue(valueStr);\n            newValue = !newValue && !this.allowEmpty ? 0 : newValue;\n            this.updateInput(newValue, insertedValueStr, operation, valueStr);\n\n            this.handleOnInput(event, currentValue, newValue);\n        }\n    }\n\n    handleOnInput(event, currentValue, newValue) {\n        if (this.isValueChanged(currentValue, newValue)) {\n            this.onInput.emit({ originalEvent: event, value: newValue });\n        }\n    }\n\n    isValueChanged(currentValue, newValue) {\n        if (newValue === null && currentValue !== null) {\n            return true;\n        }\n\n        if (newValue != null) {\n            let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;\n            return newValue !== parsedCurrentValue;\n        }\n\n        return false;\n    }\n\n    validateValue(value) {\n        if (value === '-' || value == null) {\n            return null;\n        }\n\n        if (this.min != null && value < this.min) {\n            return this.min;\n        }\n\n        if (this.max != null && value > this.max) {\n            return this.max;\n        }\n\n        return value;\n    }\n\n    updateInput(value, insertedValueStr, operation, valueStr) {\n        insertedValueStr = insertedValueStr || '';\n\n        let inputValue = this.input.nativeElement.value;\n        let newValue = this.formatValue(value);\n        let currentLength = inputValue.length;\n\n        if (newValue !== valueStr) {\n            newValue = this.concatValues(newValue, valueStr);\n        }\n\n        if (currentLength === 0) {\n            this.input.nativeElement.value = newValue;\n            this.input.nativeElement.setSelectionRange(0, 0);\n            const index = this.initCursor();\n            const selectionEnd = index + insertedValueStr.length;\n            this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n        }\n        else {\n            let selectionStart = this.input.nativeElement.selectionStart;\n            let selectionEnd = this.input.nativeElement.selectionEnd;\n            if (this.maxlength && this.maxlength < newValue.length) {\n                return;\n            }\n\n            this.input.nativeElement.value = newValue;\n            let newLength = newValue.length;\n\n            if (operation === 'range-insert') {\n                const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n                const startValueStr = startValue !== null ? startValue.toString() : '';\n                const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n                const sRegex = new RegExp(startExpr, 'g');\n                sRegex.test(newValue);\n\n                const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n                const tRegex = new RegExp(tExpr, 'g');\n                tRegex.test(newValue.slice(sRegex.lastIndex));\n\n                selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (newLength === currentLength) {\n                if (operation === 'insert' || operation === 'delete-back-single')\n                    this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n                else if (operation === 'delete-single')\n                    this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n                else if (operation === 'delete-range' || operation === 'spin')\n                    this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (operation === 'delete-back-single') {\n                let prevChar = inputValue.charAt(selectionEnd - 1);\n                let nextChar = inputValue.charAt(selectionEnd);\n                let diff = currentLength - newLength;\n                let isGroupChar = this._group.test(nextChar);\n\n                if (isGroupChar && diff === 1) {\n                    selectionEnd += 1;\n                }\n                else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n                    selectionEnd += (-1 * diff) + 1;\n                }\n\n                this._group.lastIndex = 0;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else if (inputValue === '-' && operation === 'insert') {\n                this.input.nativeElement.setSelectionRange(0, 0);\n                const index = this.initCursor();\n                const selectionEnd = index + insertedValueStr.length + 1;\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n            else {\n                selectionEnd = selectionEnd + (newLength - currentLength);\n                this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n            }\n        }\n\n        this.input.nativeElement.setAttribute('aria-valuenow', value);\n    }\n\n    concatValues(val1, val2) {\n        if (val1 && val2) {\n            let decimalCharIndex = val2.search(this._decimal);\n            this._decimal.lastIndex = 0;\n\n            return decimalCharIndex !== -1 ? (val1.split(this._decimal)[0] + val2.slice(decimalCharIndex)) : val1;\n        }\n\n        return val1;\n    }\n\n    getDecimalLength(value) {\n        if (value) {\n            const valueSplit = value.split(this._decimal);\n\n            if (valueSplit.length === 2) {\n                return valueSplit[1].replace(this._suffix, '')\n                            .trim()\n                            .replace(/\\s/g, '')\n                            .replace(this._currency, '').length;\n            }\n        }\n\n        return 0;\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n\n        let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n        this.input.nativeElement.value = this.formatValue(newValue);\n        this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n        this.updateModel(event, newValue);\n\n        this.onBlur.emit(event);\n    }\n\n    formattedValue() {\n        const val = !this.value && !this.allowEmpty ? 0 : this.value;\n        return this.formatValue(val);\n    }\n\n    updateModel(event, value) {\n        if (this.value !== value) {\n            this.value = value;\n            this.onModelChange(value);\n        }\n\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get filled() {\n        return (this.value != null && this.value.toString().length > 0)\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n        }\n    }\n\n    getFormatter() {\n        return this.numberFormat;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule, ButtonModule],\n    exports: [InputNumber],\n    declarations: [InputNumber]\n})\nexport class InputNumberModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const INPUTSWITCH_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => InputSwitch),
+    multi: true
+};
+class InputSwitch {
+    constructor(cd) {
+        this.cd = cd;
+        this.trueValue = true;
+        this.falseValue = false;
+        this.onChange = new EventEmitter();
+        this.modelValue = false;
+        this.focused = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, cb) {
+        if (!this.disabled && !this.readonly) {
+            event.preventDefault();
+            this.toggle(event);
+            cb.focus();
+        }
+    }
+    onInputChange(event) {
+        if (!this.readonly) {
+            const inputChecked = event.target.checked;
+            this.updateModel(event, inputChecked);
+        }
+    }
+    toggle(event) {
+        this.updateModel(event, !this.checked());
+    }
+    updateModel(event, value) {
+        this.modelValue = value ? this.trueValue : this.falseValue;
+        this.onModelChange(this.modelValue);
+        this.onChange.emit({
+            originalEvent: event,
+            checked: this.modelValue
+        });
+    }
+    onFocus(event) {
+        this.focused = true;
+    }
+    onBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.modelValue = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    checked() {
+        return this.modelValue === this.trueValue;
+    }
+}
+InputSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+InputSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: InputSwitch, selector: "p-inputSwitch", inputs: { style: "style", styleClass: "styleClass", tabindex: "tabindex", inputId: "inputId", name: "name", disabled: "disabled", readonly: "readonly", trueValue: "trueValue", falseValue: "falseValue", ariaLabelledBy: "ariaLabelledBy" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [INPUTSWITCH_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, isInline: true, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitch, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-inputSwitch', template: `
+        <div [ngClass]="{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}"
+            [ngStyle]="style" [class]="styleClass" (click)="onClick($event, cb)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [attr.tabindex]="tabindex" [checked]="checked()" (change)="onInputChange($event)"
+                    (focus)="onFocus($event)" (blur)="onBlur($event)" [disabled]="disabled" role="switch" [attr.aria-checked]="checked()" [attr.aria-labelledby]="ariaLabelledBy"/>
+            </div>
+            <span class="p-inputswitch-slider"></span>
+        </div>
+    `, providers: [INPUTSWITCH_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inputswitch{position:relative;display:inline-block;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-inputswitch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0}.p-inputswitch-slider:before{position:absolute;content:\"\";top:50%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], trueValue: [{
+                type: Input
+            }], falseValue: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class InputSwitchModule {
+}
+InputSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, declarations: [InputSwitch], imports: [CommonModule], exports: [InputSwitch] });
+InputSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputSwitchModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputSwitch],
+                    declarations: [InputSwitch]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { INPUTSWITCH_VALUE_ACCESSOR, InputSwitch, InputSwitchModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputswitch.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputswitch.mjs","sources":["../../src/app/components/inputswitch/inputswitch.ts","../../src/app/components/inputswitch/primeng-inputswitch.ts"],"sourcesContent":["import {NgModule,Component,Input,forwardRef,EventEmitter,Output,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR,ControlValueAccessor} from '@angular/forms';\n\nexport const INPUTSWITCH_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputSwitch),\n  multi: true\n};\n\n@Component({\n    selector: 'p-inputSwitch',\n    template: `\n        <div [ngClass]=\"{'p-inputswitch p-component': true, 'p-inputswitch-checked': checked(), 'p-disabled': disabled, 'p-focus': focused}\"\n            [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onClick($event, cb)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.tabindex]=\"tabindex\" [checked]=\"checked()\" (change)=\"onInputChange($event)\"\n                    (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [disabled]=\"disabled\" role=\"switch\" [attr.aria-checked]=\"checked()\" [attr.aria-labelledby]=\"ariaLabelledBy\"/>\n            </div>\n            <span class=\"p-inputswitch-slider\"></span>\n        </div>\n    `,\n    providers: [INPUTSWITCH_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./inputswitch.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InputSwitch implements ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() trueValue: any = true;\n\n    @Input() falseValue: any = false;\n\n    @Input() ariaLabelledBy: string;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    modelValue: any = false;\n\n    focused: boolean = false;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    onClick(event: Event, cb: HTMLInputElement) {\n        if (!this.disabled && !this.readonly) {\n            event.preventDefault();\n            this.toggle(event);\n            cb.focus();\n        }\n    }\n\n    onInputChange(event: Event) {\n        if (!this.readonly) {\n            const inputChecked = (<HTMLInputElement> event.target).checked;\n            this.updateModel(event, inputChecked);\n        }\n    }\n\n    toggle(event: Event) {\n        this.updateModel(event, !this.checked());\n    }\n\n    updateModel(event: Event, value: boolean) {\n        this.modelValue = value ? this.trueValue : this.falseValue;\n        this.onModelChange(this.modelValue);\n        this.onChange.emit({\n            originalEvent: event,\n            checked: this.modelValue\n        });\n    }\n\n    onFocus(event: Event) {\n        this.focused = true;\n    }\n\n    onBlur(event: Event) {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.modelValue = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    checked() {\n        return this.modelValue === this.trueValue;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputSwitch],\n    declarations: [InputSwitch]\n})\nexport class InputSwitchModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+import * as i0 from '@angular/core';
+import { Directive, Optional, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/forms';
+
+class InputText {
+    constructor(el, ngModel, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.cd = cd;
+    }
+    ngAfterViewInit() {
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||
+            (this.ngModel && this.ngModel.model);
+    }
+}
+InputText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputText, selector: "[pInputText]", host: { listeners: { "input": "onInput($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputText, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputText]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }] } });
+class InputTextModule {
+}
+InputTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, declarations: [InputText], imports: [CommonModule], exports: [InputText] });
+InputTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputText],
+                    declarations: [InputText]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { InputText, InputTextModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtext.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputtext.mjs","sources":["../../src/app/components/inputtext/inputtext.ts","../../src/app/components/inputtext/primeng-inputtext.ts"],"sourcesContent":["import {NgModule, Directive, ElementRef, HostListener, DoCheck, Optional, ChangeDetectorRef, AfterViewInit} from '@angular/core';\nimport {NgModel} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\n\n@Directive({\n    selector: '[pInputText]',\n    host: {\n        'class': 'p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled'\n    }\n})\nexport class InputText implements DoCheck, AfterViewInit {\n\n    filled: boolean;\n\n    constructor(public el: ElementRef, @Optional() public ngModel: NgModel, private cd: ChangeDetectorRef) {\n    }\n\n    ngAfterViewInit() {\n        this.updateFilledState();\n        this.cd.detectChanges();\n    }\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = (this.el.nativeElement.value && this.el.nativeElement.value.length) ||\n            (this.ngModel && this.ngModel.model);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputText],\n    declarations: [InputText]\n})\nexport class InputTextModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAWa,SAAS;IAIlB,YAAmB,EAAc,EAAqB,OAAgB,EAAU,EAAqB;QAAlF,OAAE,GAAF,EAAE,CAAY;QAAqB,YAAO,GAAP,OAAO,CAAS;QAAU,OAAE,GAAF,EAAE,CAAmB;KACpG;IAED,eAAe;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KAC3B;IAED,SAAS;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAGD,OAAO,CAAC,CAAC;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,iBAAiB;QACb,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;aAC3E,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5C;;sGAxBQ,SAAS;0FAAT,SAAS;2FAAT,SAAS;kBAPrB,SAAS;mBAAC;oBACP,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE;wBACF,OAAO,EAAE,mCAAmC;wBAC5C,kBAAkB,EAAE,QAAQ;qBAC/B;iBACJ;;0BAKuC,QAAQ;4EAa5C,OAAO;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;MAgBxB,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBAhCf,SAAS,aA4BR,YAAY,aA5Bb,SAAS;6GAgCT,eAAe,YAJf,CAAC,YAAY,CAAC;2FAId,eAAe;kBAL3B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;AC1CD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,123 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Directive, Optional, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/forms';
+
+class InputTextarea {
+    constructor(el, ngModel, control, cd) {
+        this.el = el;
+        this.ngModel = ngModel;
+        this.control = control;
+        this.cd = cd;
+        this.onResize = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.ngModel) {
+            this.ngModelSubscription = this.ngModel.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+        if (this.control) {
+            this.ngControlSubscription = this.control.valueChanges.subscribe(() => {
+                this.updateState();
+            });
+        }
+    }
+    ngAfterViewInit() {
+        if (this.autoResize)
+            this.resize();
+        this.updateFilledState();
+        this.cd.detectChanges();
+    }
+    onInput(e) {
+        this.updateState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    onFocus(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    onBlur(e) {
+        if (this.autoResize) {
+            this.resize(e);
+        }
+    }
+    resize(event) {
+        this.el.nativeElement.style.height = 'auto';
+        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';
+        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {
+            this.el.nativeElement.style.overflowY = "scroll";
+            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;
+        }
+        else {
+            this.el.nativeElement.style.overflow = "hidden";
+        }
+        this.onResize.emit(event || {});
+    }
+    updateState() {
+        this.updateFilledState();
+        if (this.autoResize) {
+            this.resize();
+        }
+    }
+    ngOnDestroy() {
+        if (this.ngModelSubscription) {
+            this.ngModelSubscription.unsubscribe();
+        }
+        if (this.ngControlSubscription) {
+            this.ngControlSubscription.unsubscribe();
+        }
+    }
+}
+InputTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, deps: [{ token: i0.ElementRef }, { token: i1.NgModel, optional: true }, { token: i1.NgControl, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
+InputTextarea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InputTextarea, selector: "[pInputTextarea]", inputs: { autoResize: "autoResize" }, outputs: { onResize: "onResize" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus($event)", "blur": "onBlur($event)" }, properties: { "class.p-filled": "filled", "class.p-inputtextarea-resizable": "autoResize" }, classAttribute: "p-inputtextarea p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextarea, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInputTextarea]',
+                    host: {
+                        'class': 'p-inputtextarea p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled',
+                        '[class.p-inputtextarea-resizable]': 'autoResize'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgModel, decorators: [{
+                    type: Optional
+                }] }, { type: i1.NgControl, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { autoResize: [{
+                type: Input
+            }], onResize: [{
+                type: Output
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus', ['$event']]
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur', ['$event']]
+            }] } });
+class InputTextareaModule {
+}
+InputTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+InputTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, declarations: [InputTextarea], imports: [CommonModule], exports: [InputTextarea] });
+InputTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InputTextareaModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [InputTextarea],
+                    declarations: [InputTextarea]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { InputTextarea, InputTextareaModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-inputtextarea.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-inputtextarea.mjs","sources":["../../src/app/components/inputtextarea/inputtextarea.ts","../../src/app/components/inputtextarea/primeng-inputtextarea.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,Output, EventEmitter,Optional, AfterViewInit, OnInit, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {NgModel, NgControl} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n    selector: '[pInputTextarea]',\n    host: {\n        'class': 'p-inputtextarea p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled',\n        '[class.p-inputtextarea-resizable]': 'autoResize'\n    }\n})\nexport class InputTextarea implements OnInit, AfterViewInit, OnDestroy  {\n\n    @Input() autoResize: boolean;\n\n    @Output() onResize: EventEmitter<any> = new EventEmitter();\n\n    filled: boolean;\n\n    cachedScrollHeight:number;\n\n    ngModelSubscription: Subscription;\n\n    ngControlSubscription: Subscription;\n\n    constructor(public el: ElementRef, @Optional() public ngModel: NgModel, @Optional() public control : NgControl, private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        if (this.ngModel) {\n            this.ngModelSubscription = this.ngModel.valueChanges.subscribe(() =>{\n                this.updateState();\n            })\n        }\n\n        if (this.control) {\n            this.ngControlSubscription = this.control.valueChanges.subscribe(() => {\n                this.updateState();\n            });\n        }\n    }\n\n    ngAfterViewInit() {\n        if (this.autoResize)\n            this.resize();\n\n        this.updateFilledState();\n        this.cd.detectChanges();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateState();\n    }\n\n    updateFilledState() {\n        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n    }\n\n    @HostListener('focus', ['$event'])\n    onFocus(e) {\n        if (this.autoResize) {\n            this.resize(e);\n        }\n    }\n\n    @HostListener('blur', ['$event'])\n    onBlur(e) {\n        if (this.autoResize) {\n            this.resize(e);\n        }\n    }\n\n    resize(event?: Event) {\n        this.el.nativeElement.style.height = 'auto';\n        this.el.nativeElement.style.height = this.el.nativeElement.scrollHeight + 'px';\n\n        if (parseFloat(this.el.nativeElement.style.height) >= parseFloat(this.el.nativeElement.style.maxHeight)) {\n            this.el.nativeElement.style.overflowY = \"scroll\";\n            this.el.nativeElement.style.height = this.el.nativeElement.style.maxHeight;\n        }\n        else {\n            this.el.nativeElement.style.overflow = \"hidden\";\n        }\n\n        this.onResize.emit(event||{});\n    }\n\n    updateState() {\n        this.updateFilledState();\n\n        if (this.autoResize) {\n            this.resize();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.ngModelSubscription) {\n            this.ngModelSubscription.unsubscribe();\n        }\n\n        if (this.ngControlSubscription) {\n            this.ngControlSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [InputTextarea],\n    declarations: [InputTextarea]\n})\nexport class InputTextareaModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,209 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Directive, Input, Output, HostListener, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALIDATORS } from '@angular/forms';
+
+const KEYFILTER_VALIDATOR = {
+    provide: NG_VALIDATORS,
+    useExisting: forwardRef(() => KeyFilter),
+    multi: true
+};
+const DEFAULT_MASKS = {
+    pint: /[\d]/,
+    'int': /[\d\-]/,
+    pnum: /[\d\.]/,
+    money: /[\d\.\s,]/,
+    num: /[\d\-\.]/,
+    hex: /[0-9a-f]/i,
+    email: /[a-z0-9_\.\-@]/i,
+    alpha: /[a-z_]/i,
+    alphanum: /[a-z0-9_]/i
+};
+const KEYS = {
+    TAB: 9,
+    RETURN: 13,
+    ESC: 27,
+    BACKSPACE: 8,
+    DELETE: 46
+};
+const SAFARI_KEYS = {
+    63234: 37,
+    63235: 39,
+    63232: 38,
+    63233: 40,
+    63276: 33,
+    63277: 34,
+    63272: 46,
+    63273: 36,
+    63275: 35 // end
+};
+class KeyFilter {
+    constructor(el) {
+        this.el = el;
+        this.ngModelChange = new EventEmitter();
+        this.isAndroid = DomHandler.isAndroid();
+    }
+    get pattern() {
+        return this._pattern;
+    }
+    set pattern(_pattern) {
+        this._pattern = _pattern;
+        this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;
+    }
+    isNavKeyPress(e) {
+        let k = e.keyCode;
+        k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+        return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;
+    }
+    ;
+    isSpecialKey(e) {
+        let k = e.keyCode || e.charCode;
+        return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 || (k >= 18 && k <= 20) ||
+            (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));
+    }
+    getKey(e) {
+        let k = e.keyCode || e.charCode;
+        return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;
+    }
+    getCharCode(e) {
+        return e.charCode || e.keyCode || e.which;
+    }
+    findDelta(value, prevValue) {
+        let delta = '';
+        for (let i = 0; i < value.length; i++) {
+            let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);
+            if (str === prevValue)
+                delta = value.substr(i, value.length - prevValue.length);
+        }
+        return delta;
+    }
+    isValidChar(c) {
+        return this.regex.test(c);
+    }
+    isValidString(str) {
+        for (let i = 0; i < str.length; i++) {
+            if (!this.isValidChar(str.substr(i, 1))) {
+                return false;
+            }
+        }
+        return true;
+    }
+    onInput(e) {
+        if (this.isAndroid && !this.pValidateOnly) {
+            let val = this.el.nativeElement.value;
+            let lastVal = this.lastValue || '';
+            let inserted = this.findDelta(val, lastVal);
+            let removed = this.findDelta(lastVal, val);
+            let pasted = inserted.length > 1 || (!inserted && !removed);
+            if (pasted) {
+                if (!this.isValidString(val)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            else if (!removed) {
+                if (!this.isValidChar(inserted)) {
+                    this.el.nativeElement.value = lastVal;
+                    this.ngModelChange.emit(lastVal);
+                }
+            }
+            val = this.el.nativeElement.value;
+            if (this.isValidString(val)) {
+                this.lastValue = val;
+            }
+        }
+    }
+    onKeyPress(e) {
+        if (this.isAndroid || this.pValidateOnly) {
+            return;
+        }
+        let browser = DomHandler.getBrowser();
+        let k = this.getKey(e);
+        if (browser.mozilla && (e.ctrlKey || e.altKey)) {
+            return;
+        }
+        else if (k == 17 || k == 18) {
+            return;
+        }
+        let c = this.getCharCode(e);
+        let cc = String.fromCharCode(c);
+        let ok = true;
+        if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {
+            return;
+        }
+        ok = this.regex.test(cc);
+        if (!ok) {
+            e.preventDefault();
+        }
+    }
+    onPaste(e) {
+        const clipboardData = e.clipboardData || window.clipboardData.getData('text');
+        if (clipboardData) {
+            const pastedText = clipboardData.getData('text');
+            for (let char of pastedText.toString()) {
+                if (!this.regex.test(char)) {
+                    e.preventDefault();
+                    return;
+                }
+            }
+        }
+    }
+    validate(c) {
+        if (this.pValidateOnly) {
+            let value = this.el.nativeElement.value;
+            if (value && !this.regex.test(value)) {
+                return {
+                    validatePattern: false
+                };
+            }
+        }
+    }
+}
+KeyFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+KeyFilter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: KeyFilter, selector: "[pKeyFilter]", inputs: { pValidateOnly: "pValidateOnly", pattern: ["pKeyFilter", "pattern"] }, outputs: { ngModelChange: "ngModelChange" }, host: { listeners: { "input": "onInput($event)", "keypress": "onKeyPress($event)", "paste": "onPaste($event)" }, classAttribute: "p-element" }, providers: [KEYFILTER_VALIDATOR], ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilter, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pKeyFilter]',
+                    providers: [KEYFILTER_VALIDATOR],
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { pValidateOnly: [{
+                type: Input
+            }], ngModelChange: [{
+                type: Output
+            }], pattern: [{
+                type: Input,
+                args: ['pKeyFilter']
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onKeyPress: [{
+                type: HostListener,
+                args: ['keypress', ['$event']]
+            }], onPaste: [{
+                type: HostListener,
+                args: ['paste', ['$event']]
+            }] } });
+class KeyFilterModule {
+}
+KeyFilterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KeyFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, declarations: [KeyFilter], imports: [CommonModule], exports: [KeyFilter] });
+KeyFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyFilterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [KeyFilter],
+                    declarations: [KeyFilter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { KEYFILTER_VALIDATOR, KeyFilter, KeyFilterModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-keyfilter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-keyfilter.mjs","sources":["../../src/app/components/keyfilter/keyfilter.ts","../../src/app/components/keyfilter/primeng-keyfilter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, HostListener, Input, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\nexport const KEYFILTER_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => KeyFilter),\n    multi: true\n};\n\nconst DEFAULT_MASKS = {\n    pint: /[\\d]/,\n    'int': /[\\d\\-]/,\n    pnum: /[\\d\\.]/,\n    money: /[\\d\\.\\s,]/,\n    num: /[\\d\\-\\.]/,\n    hex: /[0-9a-f]/i,\n    email: /[a-z0-9_\\.\\-@]/i,\n    alpha: /[a-z_]/i,\n    alphanum: /[a-z0-9_]/i\n};\n\nconst KEYS = {\n    TAB: 9,\n    RETURN: 13,\n    ESC: 27,\n    BACKSPACE: 8,\n    DELETE: 46\n};\n\nconst SAFARI_KEYS = {\n    63234: 37, // left\n    63235: 39, // right\n    63232: 38, // up\n    63233: 40, // down\n    63276: 33, // page up\n    63277: 34, // page down\n    63272: 46, // delete\n    63273: 36, // home\n    63275: 35  // end\n};\n\n@Directive({\n    selector: '[pKeyFilter]',\n    providers: [KEYFILTER_VALIDATOR],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class KeyFilter implements Validator {\n\n    @Input() pValidateOnly: boolean;\n\n    @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\n\n    regex: RegExp;\n\n    _pattern: any;\n\n    isAndroid: boolean;\n\n    lastValue: any;\n\n    constructor(public el: ElementRef) {\n        this.isAndroid = DomHandler.isAndroid();\n    }\n\n    get pattern(): any {\n        return this._pattern;\n    }\n\n    @Input('pKeyFilter') set pattern(_pattern: any) {\n        this._pattern = _pattern;\n        this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;\n    }\n\n    isNavKeyPress(e: KeyboardEvent) {\n        let k = e.keyCode;\n        k = DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n\n        return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;\n    };\n\n    isSpecialKey(e: KeyboardEvent) {\n        let k = e.keyCode || e.charCode;\n\n        return k == 9 || k == 13 || k == 27 || k == 16 || k == 17 ||(k >= 18 && k <= 20) ||\n            (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)));\n    }\n\n\n    getKey(e: KeyboardEvent) {\n        let k = e.keyCode || e.charCode;\n        return DomHandler.getBrowser().safari ? (SAFARI_KEYS[k] || k) : k;\n    }\n\n    getCharCode(e: KeyboardEvent) {\n        return e.charCode || e.keyCode || e.which;\n    }\n\n    findDelta(value: string, prevValue: string) {\n        let delta = '';\n\n        for (let i = 0; i < value.length; i++) {\n            let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);\n\n            if (str === prevValue)\n                delta = value.substr(i, value.length - prevValue.length);\n        }\n\n        return delta;\n    }\n\n    isValidChar(c: string) {\n        return this.regex.test(c);\n    }\n\n    isValidString(str: string) {\n        for (let i = 0; i < str.length; i++) {\n            if (!this.isValidChar(str.substr(i, 1))) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e: KeyboardEvent) {\n        if (this.isAndroid && !this.pValidateOnly) {\n            let val = this.el.nativeElement.value;\n            let lastVal = this.lastValue || '';\n\n            let inserted = this.findDelta(val, lastVal);\n            let removed = this.findDelta(lastVal, val);\n            let pasted = inserted.length > 1 || (!inserted && !removed);\n\n            if (pasted) {\n                if (!this.isValidString(val)) {\n                    this.el.nativeElement.value = lastVal;\n                    this.ngModelChange.emit(lastVal);\n                }\n            }\n            else if (!removed) {\n                if (!this.isValidChar(inserted)) {\n                    this.el.nativeElement.value = lastVal;\n                    this.ngModelChange.emit(lastVal);\n                }\n            }\n\n            val = this.el.nativeElement.value;\n            if (this.isValidString(val)) {\n                this.lastValue = val;\n            }\n        }\n    }\n\n    @HostListener('keypress', ['$event'])\n    onKeyPress(e: KeyboardEvent) {\n        if (this.isAndroid || this.pValidateOnly) {\n            return;\n        }\n\n        let browser = DomHandler.getBrowser();\n        let k = this.getKey(e);\n\n        if (browser.mozilla && (e.ctrlKey || e.altKey)) {\n            return;\n        }\n        else if (k == 17 || k == 18) {\n            return;\n        }\n\n        let c = this.getCharCode(e);\n        let cc = String.fromCharCode(c);\n        let ok = true;\n\n        if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {\n            return;\n        }\n\n        ok = this.regex.test(cc);\n\n        if (!ok) {\n            e.preventDefault();\n        }\n    }\n\n    @HostListener('paste', ['$event'])\n    onPaste(e) {\n        const clipboardData = e.clipboardData || (<any>window).clipboardData.getData('text');\n        if (clipboardData) {\n            const pastedText = clipboardData.getData('text');\n            for (let char of pastedText.toString()) {\n                if (!this.regex.test(char)) {\n                    e.preventDefault();\n                    return;\n                }\n            }\n        }\n    }\n\n    validate(c: AbstractControl): { [key: string]: any } {\n        if (this.pValidateOnly) {\n            let value = this.el.nativeElement.value;\n            if (value && !this.regex.test(value)) {\n                return {\n                    validatePattern: false\n                }\n            }\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [KeyFilter],\n    declarations: [KeyFilter]\n})\nexport class KeyFilterModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,266 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const KNOB_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Knob),
+    multi: true
+};
+class Knob {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.valueColor = "var(--primary-color, Black)";
+        this.rangeColor = "var(--surface-d, LightGray)";
+        this.textColor = "var(--text-color-secondary, Black)";
+        this.valueTemplate = "{value}";
+        this.size = 100;
+        this.step = 1;
+        this.min = 0;
+        this.max = 100;
+        this.strokeWidth = 14;
+        this.showValue = true;
+        this.readonly = false;
+        this.onChange = new EventEmitter();
+        this.radius = 40;
+        this.midX = 50;
+        this.midY = 50;
+        this.minRadians = 4 * Math.PI / 3;
+        this.maxRadians = -Math.PI / 3;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    mapRange(x, inMin, inMax, outMin, outMax) {
+        return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
+    }
+    onClick(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+        }
+    }
+    updateValue(offsetX, offsetY) {
+        let dx = offsetX - this.size / 2;
+        let dy = this.size / 2 - offsetY;
+        let angle = Math.atan2(dy, dx);
+        let start = -Math.PI / 2 - Math.PI / 6;
+        this.updateModel(angle, start);
+    }
+    updateModel(angle, start) {
+        let mappedValue;
+        if (angle > this.maxRadians)
+            mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);
+        else if (angle < start)
+            mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);
+        else
+            return;
+        let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;
+        this.value = newValue;
+        this.onModelChange(this.value);
+        this.onChange.emit(this.value);
+    }
+    onMouseDown(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowMouseMoveListener = this.onMouseMove.bind(this);
+            this.windowMouseUpListener = this.onMouseUp.bind(this);
+            window.addEventListener('mousemove', this.windowMouseMoveListener);
+            window.addEventListener('mouseup', this.windowMouseUpListener);
+            event.preventDefault();
+        }
+    }
+    onMouseUp(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('mousemove', this.windowMouseMoveListener);
+            window.removeEventListener('mouseup', this.windowMouseUpListener);
+            this.windowMouseUpListener = null;
+            this.windowMouseMoveListener = null;
+            event.preventDefault();
+        }
+    }
+    onTouchStart(event) {
+        if (!this.disabled && !this.readonly) {
+            this.windowTouchMoveListener = this.onTouchMove.bind(this);
+            this.windowTouchEndListener = this.onTouchEnd.bind(this);
+            window.addEventListener('touchmove', this.windowTouchMoveListener);
+            window.addEventListener('touchend', this.windowTouchEndListener);
+            event.preventDefault();
+        }
+    }
+    onTouchEnd(event) {
+        if (!this.disabled && !this.readonly) {
+            window.removeEventListener('touchmove', this.windowTouchMoveListener);
+            window.removeEventListener('touchend', this.windowTouchEndListener);
+            this.windowTouchMoveListener = null;
+            this.windowTouchEndListener = null;
+            event.preventDefault();
+        }
+    }
+    onMouseMove(event) {
+        if (!this.disabled && !this.readonly) {
+            this.updateValue(event.offsetX, event.offsetY);
+            event.preventDefault();
+        }
+    }
+    onTouchMove(event) {
+        if (!this.disabled && !this.readonly && event.touches.length == 1) {
+            const rect = this.el.nativeElement.children[0].getBoundingClientRect();
+            const touch = event.targetTouches.item(0);
+            const offsetX = touch.clientX - rect.left;
+            const offsetY = touch.clientY - rect.top;
+            this.updateValue(offsetX, offsetY);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    containerClass() {
+        return {
+            'p-knob p-component': true,
+            'p-disabled': this.disabled
+        };
+    }
+    rangePath() {
+        return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;
+    }
+    valuePath() {
+        return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;
+    }
+    zeroRadians() {
+        if (this.min > 0 && this.max > 0)
+            return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);
+        else
+            return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    valueRadians() {
+        return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);
+    }
+    minX() {
+        return this.midX + Math.cos(this.minRadians) * this.radius;
+    }
+    minY() {
+        return this.midY - Math.sin(this.minRadians) * this.radius;
+    }
+    maxX() {
+        return this.midX + Math.cos(this.maxRadians) * this.radius;
+    }
+    maxY() {
+        return this.midY - Math.sin(this.maxRadians) * this.radius;
+    }
+    zeroX() {
+        return this.midX + Math.cos(this.zeroRadians()) * this.radius;
+    }
+    zeroY() {
+        return this.midY - Math.sin(this.zeroRadians()) * this.radius;
+    }
+    valueX() {
+        return this.midX + Math.cos(this.valueRadians()) * this.radius;
+    }
+    valueY() {
+        return this.midY - Math.sin(this.valueRadians()) * this.radius;
+    }
+    largeArc() {
+        return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;
+    }
+    sweep() {
+        return this.valueRadians() > this.zeroRadians() ? 0 : 1;
+    }
+    valueToDisplay() {
+        return this.valueTemplate.replace("{value}", this._value.toString());
+    }
+    get _value() {
+        return this.value != null ? this.value : this.min;
+    }
+}
+Knob.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Knob.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Knob, selector: "p-knob", inputs: { styleClass: "styleClass", style: "style", severity: "severity", valueColor: "valueColor", rangeColor: "rangeColor", textColor: "textColor", valueTemplate: "valueTemplate", name: "name", size: "size", step: "step", min: "min", max: "max", strokeWidth: "strokeWidth", disabled: "disabled", showValue: "showValue", readonly: "readonly" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [KNOB_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, isInline: true, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Knob, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-knob', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+        <svg viewBox="0 0 100 100" [style.width]="size + 'px'" [style.height]="size + 'px'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"
+            (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">
+            <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>
+            <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>
+            <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>
+        </svg>
+        </div>
+    `, providers: [KNOB_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-name:dash-frame;animation-fill-mode:forwards;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], valueColor: [{
+                type: Input
+            }], rangeColor: [{
+                type: Input
+            }], textColor: [{
+                type: Input
+            }], valueTemplate: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class KnobModule {
+}
+KnobModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+KnobModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, declarations: [Knob], imports: [CommonModule], exports: [Knob] });
+KnobModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KnobModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Knob],
+                    declarations: [Knob]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { KNOB_VALUE_ACCESSOR, Knob, KnobModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-knob.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-knob.mjs","sources":["../../src/app/components/knob/knob.ts","../../src/app/components/knob/primeng-knob.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Knob),\n    multi: true\n};\n\n@Component({\n    selector: 'p-knob',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n        <svg viewBox=\"0 0 100 100\" [style.width]=\"size + 'px'\" [style.height]=\"size + 'px'\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n            (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n            <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n            <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n            <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n        </svg>\n        </div>\n    `,\n    providers: [KNOB_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./knob.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Knob {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() severity: string;\n\n    @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n    @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n    @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n    @Input() valueTemplate: string = \"{value}\";\n\n    @Input() name: string;\n\n    @Input() size: number = 100;\n\n    @Input() step: number = 1;\n\n    @Input() min: number = 0;\n\n    @Input() max: number = 100;\n\n    @Input() strokeWidth: number = 14;\n\n    @Input() disabled: boolean;\n\n    @Input() showValue: boolean = true;\n\n    @Input() readonly: boolean = false;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    radius: number = 40;\n\n    midX: number = 50;\n\n    midY: number = 50;\n\n    minRadians: number = 4 * Math.PI / 3;\n\n    maxRadians: number = -Math.PI / 3;\n\n    value: number = null;\n\n    windowMouseMoveListener: any;\n\n    windowMouseUpListener: any;\n\n    windowTouchMoveListener: any;\n\n    windowTouchEndListener: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n    mapRange(x, inMin, inMax, outMin, outMax) {\n        return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n    }\n\n    onClick(event) {\n        if (!this.disabled && !this.readonly) {\n            this.updateValue(event.offsetX, event.offsetY);\n        }\n    }\n\n    updateValue(offsetX, offsetY) {\n        let dx = offsetX - this.size / 2;\n        let dy =  this.size / 2 - offsetY;\n        let angle = Math.atan2(dy, dx);\n        let start = -Math.PI / 2 - Math.PI / 6;\n        this.updateModel(angle, start);\n    }\n\n    updateModel(angle, start) {\n        let mappedValue;\n        if (angle > this.maxRadians)\n            mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n        else if (angle < start)\n            mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n        else\n            return;\n\n        let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n        this.value = newValue;\n        this.onModelChange(this.value);\n        this.onChange.emit(this.value);\n    }\n\n    onMouseDown(event) {\n        if (!this.disabled && !this.readonly) {\n            this.windowMouseMoveListener = this.onMouseMove.bind(this)\n            this.windowMouseUpListener = this.onMouseUp.bind(this)\n            window.addEventListener('mousemove', this.windowMouseMoveListener);\n            window.addEventListener('mouseup', this.windowMouseUpListener);\n            event.preventDefault();\n        }\n    }\n\n    onMouseUp(event) {\n        if (!this.disabled && !this.readonly) {\n            window.removeEventListener('mousemove', this.windowMouseMoveListener);\n            window.removeEventListener('mouseup', this.windowMouseUpListener);\n            this.windowMouseUpListener = null;\n            this.windowMouseMoveListener = null;\n            event.preventDefault();\n        }\n    }\n\n    onTouchStart(event) {\n        if (!this.disabled && !this.readonly) {\n            this.windowTouchMoveListener = this.onTouchMove.bind(this);\n            this.windowTouchEndListener = this.onTouchEnd.bind(this);\n            window.addEventListener('touchmove', this.windowTouchMoveListener);\n            window.addEventListener('touchend', this.windowTouchEndListener);\n            event.preventDefault();\n        }\n    }\n\n    onTouchEnd(event) {\n        if (!this.disabled && !this.readonly) {\n            window.removeEventListener('touchmove', this.windowTouchMoveListener);\n            window.removeEventListener('touchend', this.windowTouchEndListener);\n            this.windowTouchMoveListener = null;\n            this.windowTouchEndListener = null;\n            event.preventDefault();\n        }\n    }\n\n    onMouseMove(event) {\n        if (!this.disabled && !this.readonly) {\n            this.updateValue(event.offsetX, event.offsetY);\n            event.preventDefault();\n        }\n    }\n\n    onTouchMove(event) {\n        if (!this.disabled && !this.readonly && event.touches.length == 1) {\n            const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n            const touch = event.targetTouches.item(0);\n            const offsetX = touch.clientX - rect.left;\n            const offsetY = touch.clientY - rect.top;\n            this.updateValue(offsetX, offsetY);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    containerClass() {\n        return {\n            'p-knob p-component': true,\n            'p-disabled': this.disabled\n        };\n    }\n\n    rangePath() {\n        return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n    }\n\n    valuePath() {\n        return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n    }\n\n    zeroRadians() {\n        if (this.min > 0 && this.max > 0)\n            return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n        else\n            return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n    }\n\n    valueRadians() {\n        return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n    }\n\n    minX() {\n        return this.midX + Math.cos(this.minRadians) * this.radius;\n    }\n\n    minY() {\n        return this.midY - Math.sin(this.minRadians) * this.radius;\n    }\n\n    maxX() {\n        return this.midX + Math.cos(this.maxRadians) * this.radius;\n    }\n\n    maxY() {\n        return this.midY - Math.sin(this.maxRadians) * this.radius;\n    }\n\n    zeroX() {\n        return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n    }\n\n    zeroY() {\n        return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n    }\n\n    valueX() {\n        return this.midX + Math.cos(this.valueRadians()) * this.radius;\n    }\n\n    valueY() {\n        return this.midY - Math.sin(this.valueRadians()) * this.radius;\n    }\n\n    largeArc() {\n        return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n    }\n\n    sweep() {\n        return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n    }\n\n    valueToDisplay() {\n        return this.valueTemplate.replace(\"{value}\", this._value.toString());\n    }\n\n    get _value(): number {\n        return this.value != null ? this.value : this.min;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Knob],\n    declarations: [Knob]\n})\nexport class KnobModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,266 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+
+class Lightbox {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.type = 'image';
+        this.effectDuration = '500ms';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.closeOnEscape = true;
+    }
+    onImageClick(event, image, i, content) {
+        this.index = i;
+        this.loading = true;
+        content.style.width = 32 + 'px';
+        content.style.height = 32 + 'px';
+        this.preventDocumentClickListener = true;
+        this.show();
+        this.displayImage(image);
+        event.preventDefault();
+    }
+    ngAfterViewInit() {
+        this.panel = DomHandler.findSingle(this.el.nativeElement, '.ui-lightbox ');
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.panel);
+            else
+                DomHandler.appendChild(this.panel, this.appendTo);
+        }
+    }
+    onLinkClick(event, content) {
+        this.preventDocumentClickListener = true;
+        this.show();
+        event.preventDefault();
+    }
+    displayImage(image) {
+        setTimeout(() => {
+            this.cd.markForCheck();
+            this.currentImage = image;
+            this.captionText = image.title;
+            this.center();
+        }, 1000);
+    }
+    show() {
+        this.mask = document.createElement('div');
+        DomHandler.addMultipleClasses(this.mask, 'ui-widget-overlay ui-dialog-mask');
+        document.body.appendChild(this.mask);
+        if (this.autoZIndex) {
+            this.zindex = this.baseZIndex + (++DomHandler.zindex);
+        }
+        this.mask.style.zIndex = this.zindex - 1;
+        this.center();
+        this.visible = true;
+        this.bindGlobalListeners();
+    }
+    hide(event) {
+        this.captionText = null;
+        this.index = null;
+        this.currentImage = null;
+        this.visible = false;
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+            this.mask = null;
+        }
+        this.unbindGlobalListeners();
+        event.preventDefault();
+    }
+    center() {
+        let elementWidth = DomHandler.getOuterWidth(this.panel);
+        let elementHeight = DomHandler.getOuterHeight(this.panel);
+        if (elementWidth == 0 && elementHeight == 0) {
+            this.panel.style.visibility = 'hidden';
+            this.panel.style.display = 'block';
+            elementWidth = DomHandler.getOuterWidth(this.panel);
+            elementHeight = DomHandler.getOuterHeight(this.panel);
+            this.panel.style.display = 'none';
+            this.panel.style.visibility = 'visible';
+        }
+    }
+    onImageLoad(event, content) {
+        let image = event.target;
+        image.style.visibility = 'hidden';
+        image.style.display = 'block';
+        let imageWidth = DomHandler.getOuterWidth(image);
+        let imageHeight = DomHandler.getOuterHeight(image);
+        image.style.display = 'none';
+        image.style.visibility = 'visible';
+        content.style.width = imageWidth + 'px';
+        content.style.height = imageHeight + 'px';
+        this.panel.style.left = parseInt(this.panel.style.left) + (DomHandler.getOuterWidth(this.panel) - imageWidth) / 2 + 'px';
+        this.panel.style.top = parseInt(this.panel.style.top) + (DomHandler.getOuterHeight(this.panel) - imageHeight) / 2 + 'px';
+        setTimeout(() => {
+            this.cd.markForCheck();
+            DomHandler.fadeIn(image, 500);
+            image.style.display = 'block';
+            //this.captionText = this.currentImage.title;
+            this.loading = false;
+        }, parseInt(this.effectDuration));
+    }
+    prev(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index > 0) {
+            this.displayImage(this.images[--this.index]);
+        }
+    }
+    next(placeholder) {
+        this.captionText = null;
+        this.loading = true;
+        placeholder.style.display = 'none';
+        if (this.index <= (this.images.length - 1)) {
+            this.displayImage(this.images[++this.index]);
+        }
+    }
+    bindGlobalListeners() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+            if (!this.preventDocumentClickListener && this.visible) {
+                this.hide(event);
+            }
+            this.preventDocumentClickListener = false;
+            this.cd.markForCheck();
+        });
+        if (this.closeOnEscape && !this.documentEscapeListener) {
+            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+                if (event.which == 27) {
+                    if (parseInt(this.panel.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                        this.hide(event);
+                    }
+                }
+            });
+        }
+    }
+    unbindGlobalListeners() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    get leftVisible() {
+        return this.images && this.images.length && this.index != 0 && !this.loading;
+    }
+    get rightVisible() {
+        return this.images && this.images.length && this.index < (this.images.length - 1) && !this.loading;
+    }
+    ngOnDestroy() {
+        this.unbindGlobalListeners();
+        if (this.appendTo) {
+            this.el.nativeElement.appendChild(this.panel);
+        }
+    }
+}
+Lightbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Lightbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Lightbox, selector: "p-lightbox", inputs: { images: "images", type: "type", style: "style", styleClass: "styleClass", appendTo: "appendTo", easing: "easing", effectDuration: "effectDuration", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", closeOnEscape: "closeOnEscape" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, isInline: true, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Lightbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-lightbox', template: `
+        <div [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'image')">
+            <a *ngFor="let image of images; let i = index;" [href]="image.source" (click)="onImageClick($event,image,i,content)">
+                <img [src]="image.thumbnail" [title]="image.title" [alt]="image.alt">
+            </a>
+        </div>
+        <span [ngStyle]="style" [class]="styleClass" *ngIf="(type == 'content')" (click)="onLinkClick($event,content)">
+            <ng-content select="a"></ng-content>
+        </span>
+        <div class="ui-lightbox ui-widget ui-corner-all ui-shadow" [style.display]="visible ? 'block' : 'none'" [style.zIndex]="zindex"
+            [ngClass]="{'ui-lightbox-loading': loading}"
+            [style.transitionProperty]="'all'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing" (click)="preventDocumentClickListener=true">
+           <div class="ui-lightbox-content-wrapper">
+              <a class="ui-state-default ui-lightbox-nav-left ui-corner-right" [style.zIndex]="zindex + 1" (click)="prev(img)"
+                [ngClass]="{'ui-helper-hidden':!leftVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-left"></span></a>
+              <div #content class="ui-lightbox-content ui-corner-all"
+                [style.transitionProperty]="'width,height'" [style.transitionDuration]="effectDuration" [style.transitionTimingFunction]="easing">
+                <img #img [src]="currentImage ? currentImage.source||'' : ''" (load)="onImageLoad($event,content)" style="display:none">
+                <ng-content></ng-content>
+              </div>
+              <a class="ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden" [style.zIndex]="zindex + 1" (click)="next(img)"
+                [ngClass]="{'ui-helper-hidden':!rightVisible}"><span class="ui-lightbox-nav-icon pi pi-chevron-right"></span></a>
+           </div>
+           <div class="ui-lightbox-caption ui-widget-header" [style.display]="captionText ? 'block' : 'none'">
+              <span class="ui-lightbox-caption-text">{{captionText}}</span><a class="ui-lightbox-close ui-corner-all" tabindex="0" (click)="hide($event)" (keydown.enter)="hide($event)"><span class="pi pi-times"></span></a>
+              <div style="clear:both"></div>
+           </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".ui-lightbox{position:fixed;display:none;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}.ui-lightbox-content-wrapper{position:relative}.ui-lightbox-content{position:relative;margin:0;padding:0;background-color:#000}.ui-lightbox-nav-right,.ui-lightbox-nav-left{position:absolute;top:50%;cursor:pointer}.ui-lightbox-nav-left{left:0}.ui-lightbox-nav-right{right:0}.ui-lightbox-loading .ui-lightbox-content{background:url(data:image/gif;base64,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) #000000 center center no-repeat}.ui-lightbox-caption{padding:.2em .4em;display:none}.ui-lightbox-caption-text{margin:.3em 0 .1em;float:left}.ui-lightbox-close{float:right;margin:0;padding:.125em}.ui-lightbox-close.ui-state-hover{padding:0}.ui-lightbox-nav-left,.ui-lightbox-nav-right{opacity:.5}.ui-lightbox-nav-left:hover,.ui-lightbox-nav-right:hover{opacity:1}\n", ".p-dialog-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.p-dialog-mask.p-component-overlay{pointer-events:auto}.p-dialog{display:flex;flex-direction:column;pointer-events:auto;max-height:90%;transform:scale(1);position:relative}.p-dialog-content{overflow-y:auto;flex-grow:1}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.p-dialog-footer{flex-shrink:0}.p-dialog .p-dialog-header-icons{display:flex;align-items:center}.p-dialog .p-dialog-header-icon{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-fluid .p-dialog-footer .p-button{width:auto}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-top-left .p-dialog,.p-dialog-top-right .p-dialog,.p-dialog-bottom-left .p-dialog,.p-dialog-bottom-right .p-dialog{margin:.75rem;transform:translate(0)}.p-dialog-maximized{transition:none;transform:none;width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%}.p-dialog-maximized .p-dialog-content{flex-grow:1}.p-dialog-left{justify-content:flex-start}.p-dialog-right{justify-content:flex-end}.p-dialog-top{align-items:flex-start}.p-dialog-top-left{justify-content:flex-start;align-items:flex-start}.p-dialog-top-right{justify-content:flex-end;align-items:flex-start}.p-dialog-bottom{align-items:flex-end}.p-dialog-bottom-left{justify-content:flex-start;align-items:flex-end}.p-dialog-bottom-right{justify-content:flex-end;align-items:flex-end}.p-dialog .p-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.p-confirm-dialog .p-dialog-content{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { images: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }] } });
+class LightboxModule {
+}
+LightboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+LightboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, declarations: [Lightbox], imports: [CommonModule], exports: [Lightbox] });
+LightboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: LightboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Lightbox],
+                    declarations: [Lightbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Lightbox, LightboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-lightbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-lightbox.mjs","sources":["../../src/app/components/lightbox/lightbox.ts","../../src/app/components/lightbox/primeng-lightbox.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Renderer2,AfterViewInit,OnDestroy,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Component({\n    selector: 'p-lightbox',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"(type == 'image')\">\n            <a *ngFor=\"let image of images; let i = index;\" [href]=\"image.source\" (click)=\"onImageClick($event,image,i,content)\">\n                <img [src]=\"image.thumbnail\" [title]=\"image.title\" [alt]=\"image.alt\">\n            </a>\n        </div>\n        <span [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"(type == 'content')\" (click)=\"onLinkClick($event,content)\">\n            <ng-content select=\"a\"></ng-content>\n        </span>\n        <div class=\"ui-lightbox ui-widget ui-corner-all ui-shadow\" [style.display]=\"visible ? 'block' : 'none'\" [style.zIndex]=\"zindex\"\n            [ngClass]=\"{'ui-lightbox-loading': loading}\"\n            [style.transitionProperty]=\"'all'\" [style.transitionDuration]=\"effectDuration\" [style.transitionTimingFunction]=\"easing\" (click)=\"preventDocumentClickListener=true\">\n           <div class=\"ui-lightbox-content-wrapper\">\n              <a class=\"ui-state-default ui-lightbox-nav-left ui-corner-right\" [style.zIndex]=\"zindex + 1\" (click)=\"prev(img)\"\n                [ngClass]=\"{'ui-helper-hidden':!leftVisible}\"><span class=\"ui-lightbox-nav-icon pi pi-chevron-left\"></span></a>\n              <div #content class=\"ui-lightbox-content ui-corner-all\"\n                [style.transitionProperty]=\"'width,height'\" [style.transitionDuration]=\"effectDuration\" [style.transitionTimingFunction]=\"easing\">\n                <img #img [src]=\"currentImage ? currentImage.source||'' : ''\" (load)=\"onImageLoad($event,content)\" style=\"display:none\">\n                <ng-content></ng-content>\n              </div>\n              <a class=\"ui-state-default ui-lightbox-nav-right ui-corner-left ui-helper-hidden\" [style.zIndex]=\"zindex + 1\" (click)=\"next(img)\"\n                [ngClass]=\"{'ui-helper-hidden':!rightVisible}\"><span class=\"ui-lightbox-nav-icon pi pi-chevron-right\"></span></a>\n           </div>\n           <div class=\"ui-lightbox-caption ui-widget-header\" [style.display]=\"captionText ? 'block' : 'none'\">\n              <span class=\"ui-lightbox-caption-text\">{{captionText}}</span><a class=\"ui-lightbox-close ui-corner-all\" tabindex=\"0\" (click)=\"hide($event)\" (keydown.enter)=\"hide($event)\"><span class=\"pi pi-times\"></span></a>\n              <div style=\"clear:both\"></div>\n           </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: [\n        './lightbox.css',\n        '../dialog/dialog.css'\n    ],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Lightbox implements AfterViewInit,OnDestroy {\n\n    @Input() images: any[];\n\n    @Input() type: string = 'image';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() easing: 'ease-out';\n\n    @Input() effectDuration: any = '500ms';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() closeOnEscape: boolean = true;\n\n    public visible: boolean;\n\n    public loading: boolean;\n\n    public currentImage: any;\n\n    public captionText: string;\n\n    public zindex: any;\n\n    public panel: any;\n\n    public index: number;\n\n    public mask: any;\n\n    public preventDocumentClickListener: boolean;\n\n    public documentClickListener: any;\n\n    public documentEscapeListener: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2,private cd: ChangeDetectorRef) {}\n\n    onImageClick(event,image,i,content) {\n        this.index = i;\n        this.loading = true;\n        content.style.width = 32 + 'px';\n        content.style.height = 32 + 'px';\n        this.preventDocumentClickListener = true;\n        this.show();\n        this.displayImage(image);\n        event.preventDefault();\n    }\n\n    ngAfterViewInit() {\n        this.panel = DomHandler.findSingle(this.el.nativeElement, '.ui-lightbox ');\n\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.panel);\n            else\n                DomHandler.appendChild(this.panel, this.appendTo);\n        }\n    }\n\n    onLinkClick(event,content) {\n        this.preventDocumentClickListener = true;\n        this.show();\n        event.preventDefault();\n    }\n\n    displayImage(image) {\n        setTimeout(() => {\n            this.cd.markForCheck();\n            this.currentImage = image;\n            this.captionText = image.title;\n            this.center();\n        }, 1000);\n    }\n\n    show() {\n        this.mask = document.createElement('div');\n\n        DomHandler.addMultipleClasses(this.mask, 'ui-widget-overlay ui-dialog-mask');\n        document.body.appendChild(this.mask);\n        if (this.autoZIndex) {\n            this.zindex = this.baseZIndex + (++DomHandler.zindex);\n        }\n        this.mask.style.zIndex = this.zindex - 1;\n        this.center();\n        this.visible = true;\n        this.bindGlobalListeners();\n    }\n\n    hide(event) {\n        this.captionText = null;\n        this.index = null;\n        this.currentImage = null;\n        this.visible = false;\n\n        if (this.mask) {\n            document.body.removeChild(this.mask);\n            this.mask = null;\n        }\n\n        this.unbindGlobalListeners();\n        event.preventDefault();\n    }\n\n    center() {\n        let elementWidth = DomHandler.getOuterWidth(this.panel);\n        let elementHeight = DomHandler.getOuterHeight(this.panel);\n        if (elementWidth == 0 && elementHeight == 0) {\n            this.panel.style.visibility = 'hidden';\n            this.panel.style.display = 'block';\n            elementWidth = DomHandler.getOuterWidth(this.panel);\n            elementHeight = DomHandler.getOuterHeight(this.panel);\n            this.panel.style.display = 'none';\n            this.panel.style.visibility = 'visible';\n        }\n    }\n\n    onImageLoad(event,content) {\n        let image = event.target;\n        image.style.visibility = 'hidden';\n        image.style.display = 'block';\n        let imageWidth = DomHandler.getOuterWidth(image);\n        let imageHeight = DomHandler.getOuterHeight(image);\n        image.style.display = 'none';\n        image.style.visibility = 'visible';\n\n        content.style.width = imageWidth + 'px';\n        content.style.height = imageHeight + 'px';\n        this.panel.style.left = parseInt(this.panel.style.left) + (DomHandler.getOuterWidth(this.panel) - imageWidth) / 2 + 'px';\n        this.panel.style.top = parseInt(this.panel.style.top) + (DomHandler.getOuterHeight(this.panel) - imageHeight) / 2 + 'px';\n\n        setTimeout(() => {\n            this.cd.markForCheck();\n            DomHandler.fadeIn(image, 500);\n            image.style.display = 'block';\n            //this.captionText = this.currentImage.title;\n            this.loading = false;\n        }, parseInt(this.effectDuration));\n    }\n\n    prev(placeholder: any) {\n        this.captionText = null;\n        this.loading = true;\n        placeholder.style.display = 'none';\n        if (this.index > 0) {\n            this.displayImage(this.images[--this.index]);\n        }\n    }\n\n    next(placeholder: any) {\n        this.captionText = null;\n        this.loading = true;\n        placeholder.style.display = 'none';\n        if (this.index <= (this.images.length - 1)) {\n            this.displayImage(this.images[++this.index]);\n        }\n    }\n\n    bindGlobalListeners() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n            if (!this.preventDocumentClickListener && this.visible) {\n                this.hide(event);\n            }\n            this.preventDocumentClickListener = false;\n            this.cd.markForCheck();\n        });\n        if (this.closeOnEscape && !this.documentEscapeListener) {\n            this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n                    if (event.which == 27) {\n                    if (parseInt(this.panel.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {\n                        this.hide(event);\n                    }\n                }\n            });\n        }\n    }\n\n    unbindGlobalListeners() {\n        if (this.documentEscapeListener){\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    get leftVisible():boolean {\n        return this.images && this.images.length && this.index != 0 && !this.loading;\n    }\n\n    get rightVisible():boolean {\n        return this.images && this.images.length && this.index < (this.images.length - 1) && !this.loading;\n    }\n\n    ngOnDestroy() {\n        this.unbindGlobalListeners();\n\n        if (this.appendTo) {\n            this.el.nativeElement.appendChild(this.panel);\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Lightbox],\n    declarations: [Lightbox]\n})\nexport class LightboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MA6Ca,QAAQ;IA4CjB,YAAmB,EAAc,EAAS,QAAmB,EAAS,EAAqB;QAAxE,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,OAAE,GAAF,EAAE,CAAmB;QAxClF,SAAI,GAAW,OAAO,CAAC;QAUvB,mBAAc,GAAQ,OAAO,CAAC;QAE9B,eAAU,GAAY,IAAI,CAAC;QAE3B,eAAU,GAAW,CAAC,CAAC;QAEvB,kBAAa,GAAY,IAAI,CAAC;KAwBwD;IAE/F,YAAY,CAAC,KAAK,EAAC,KAAK,EAAC,CAAC,EAAC,OAAO;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,eAAe;QACX,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAE3E,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAEtC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACzD;KACJ;IAED,WAAW,CAAC,KAAK,EAAC,OAAO;QACrB,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,YAAY,CAAC,KAAK;QACd,UAAU,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB,EAAE,IAAI,CAAC,CAAC;KACZ;IAED,IAAI;QACA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1C,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;IAED,IAAI,CAAC,KAAK;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACpB;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,MAAM;QACF,IAAI,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,YAAY,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACnC,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;SAC3C;KACJ;IAED,WAAW,CAAC,KAAK,EAAC,OAAO;QACrB,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAClC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,IAAI,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnD,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7B,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAEnC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC;QACzH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC;QAEzH,UAAU,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YACvB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;;YAE9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACxB,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;KACrC;IAED,IAAI,CAAC,WAAgB;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD;KACJ;IAED,IAAI,CAAC,WAAgB;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD;KACJ;IAED,mBAAmB;QACf,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC;QAEvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK;YAC7E,IAAI,CAAC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;YACD,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,KAAK;gBAC5E,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;oBACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;wBAC7E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACpB;iBACJ;aACJ,CAAC,CAAC;SACN;KACJ;IAED,qBAAqB;QACjB,IAAI,IAAI,CAAC,sBAAsB,EAAC;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;KACJ;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KAChF;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KACtG;IAED,WAAW;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjD;KACJ;;qGArNQ,QAAQ;yFAAR,QAAQ,6UAvCP;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BT;2FAWQ,QAAQ;kBAzCpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BT,mBACgB,uBAAuB,CAAC,OAAO,iBACjC,iBAAiB,CAAC,IAAI,QAK/B;wBACF,OAAO,EAAE,WAAW;qBACvB;yJAIQ,MAAM;sBAAd,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,aAAa;sBAArB,KAAK;;MA0MG,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBA9Nd,QAAQ,aA0NP,YAAY,aA1Nb,QAAQ;4GA8NR,cAAc,YAJd,CAAC,YAAY,CAAC;2FAId,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;AC1QD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,703 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { ObjectUtils } from 'primeng/utils';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const LISTBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Listbox),
+    multi: true
+};
+class Listbox {
+    constructor(el, cd, filterService, config) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.checkbox = false;
+        this.filter = false;
+        this.filterMatchMode = 'contains';
+        this.metaKeySelection = true;
+        this.showToggleAll = true;
+        this.optionGroupChildren = "items";
+        this.onChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onDblClick = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        if (this.hasFilter())
+            this.activateFilter();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.checkbox)
+                this.onOptionClickCheckbox(event, option);
+            else
+                this.onOptionClickMultiple(event, option);
+        }
+        else {
+            this.onOptionClickSingle(event, option);
+        }
+        this.onClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+        this.optionTouched = false;
+    }
+    onOptionTouchEnd(option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.optionTouched = true;
+    }
+    onOptionDoubleClick(event, option) {
+        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
+            return;
+        }
+        this.onDblClick.emit({
+            originalEvent: event,
+            option: option,
+            value: this.value
+        });
+    }
+    onOptionClickSingle(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.value = null;
+                    valueChanged = true;
+                }
+            }
+            else {
+                this.value = this.getOptionValue(option);
+                valueChanged = true;
+            }
+        }
+        else {
+            this.value = selected ? null : this.getOptionValue(option);
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickMultiple(event, option) {
+        let selected = this.isSelected(option);
+        let valueChanged = false;
+        let metaSelection = this.optionTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey);
+            if (selected) {
+                if (metaKey) {
+                    this.removeOption(option);
+                }
+                else {
+                    this.value = [this.getOptionValue(option)];
+                }
+                valueChanged = true;
+            }
+            else {
+                this.value = (metaKey) ? this.value || [] : [];
+                this.value = [...this.value, this.getOptionValue(option)];
+                valueChanged = true;
+            }
+        }
+        else {
+            if (selected) {
+                this.removeOption(option);
+            }
+            else {
+                this.value = [...this.value || [], this.getOptionValue(option)];
+            }
+            valueChanged = true;
+        }
+        if (valueChanged) {
+            this.onModelChange(this.value);
+            this.onChange.emit({
+                originalEvent: event,
+                value: this.value
+            });
+        }
+    }
+    onOptionClickCheckbox(event, option) {
+        if (this.disabled || this.readonly) {
+            return;
+        }
+        let selected = this.isSelected(option);
+        if (selected) {
+            this.removeOption(option);
+        }
+        else {
+            this.value = this.value ? this.value : [];
+            this.value = [...this.value, this.getOptionValue(option)];
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);
+        }
+        return selected;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    isEmpty(optionsToDisplay) {
+        return !optionsToDisplay || (optionsToDisplay && optionsToDisplay.length === 0);
+    }
+    onFilter(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this._options.filter(option => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    onOptionKeyDown(event, option) {
+        if (this.readonly) {
+            return;
+        }
+        let item = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event, option);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    ngOnDestroy() {
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Listbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Listbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Listbox, selector: "p-listbox", inputs: { multiple: "multiple", style: "style", styleClass: "styleClass", listStyle: "listStyle", listStyleClass: "listStyleClass", readonly: "readonly", disabled: "disabled", checkbox: "checkbox", filter: "filter", filterMatchMode: "filterMatchMode", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dataKey: "dataKey", showToggleAll: "showToggleAll", optionLabel: "optionLabel", optionValue: "optionValue", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", optionDisabled: "optionDisabled", ariaFilterLabel: "ariaFilterLabel", filterPlaceHolder: "filterPlaceHolder", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", group: "group", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick" }, host: { classAttribute: "p-element" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerchkbox"], descendants: true }], ngImport: i0, template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, isInline: true, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Listbox, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-listbox', template: `
+    <div [ngClass]="{'p-listbox p-component': true, 'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass">
+      <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
+        <ng-content select="p-header"></ng-content>
+        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+      </div>
+      <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
+        <div class="p-checkbox p-component" *ngIf="checkbox && multiple && showToggleAll" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+          <div class="p-hidden-accessible">
+            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+          </div>
+          <div #headerchkbox class="p-checkbox-box" [ngClass]="{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+          </div>
+        </div>
+        <div class="p-listbox-filter-container" *ngIf="filter">
+          <input type="text" [value]="filterValue||''" (input)="onFilter($event)" class="p-listbox-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+          <span class="p-listbox-filter-icon pi pi-search"></span>
+        </div>
+      </div>
+      <div [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass">
+        <ul class="p-listbox-list" role="listbox" aria-multiselectable="multiple">
+            <ng-container *ngIf="group">
+                <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                    <li class="p-listbox-item-group">
+                        <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                        <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                    </li>
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                </ng-template>
+            </ng-container>
+            <ng-container *ngIf="!group">
+                    <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+            </ng-container>
+            <ng-template #itemslist let-optionsToDisplay>
+                <li *ngFor="let option of optionsToDisplay; let i = index;" [attr.tabindex]="disabled || isOptionDisabled(option) ? null : '0'" pRipple
+                    [ngClass]="{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}" role="option" [attr.aria-label]="getOptionLabel(option)"
+                    [attr.aria-selected]="isSelected(option)" (click)="onOptionClick($event,option)" (dblclick)="onOptionDoubleClick($event,option)" (touchend)="onOptionTouchEnd(option)" (keydown)="onOptionKeyDown($event,option)">
+                    <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{'p-checkbox-disabled': disabled || isOptionDisabled(option)}">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight':isSelected(option)}">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':isSelected(option)}"></span>
+                        </div>
+                    </div>
+                    <span *ngIf="!itemTemplate">{{getOptionLabel(option)}}</span>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </li>
+                <li *ngIf="hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                        {{emptyFilterMessageLabel}}
+                    </ng-container>
+                    <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                </li>
+                <li *ngIf="!hasFilter() && isEmpty(optionsToDisplay)" class="p-listbox-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageLabel}}
+                    </ng-container>
+                    <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                </li>
+            </ng-template>
+        </ul>
+      </div>
+      <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
+        <ng-content select="p-footer"></ng-content>
+        <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+      </div>
+    </div>
+  `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.PrimeNGConfig }]; }, propDecorators: { multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], listStyleClass: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], checkbox: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onDblClick: [{
+                type: Output
+            }], headerCheckboxViewChild: [{
+                type: ViewChild,
+                args: ['headerchkbox']
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class ListboxModule {
+}
+ListboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ListboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule], exports: [Listbox, SharedModule] });
+ListboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ListboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Listbox, SharedModule],
+                    declarations: [Listbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { LISTBOX_VALUE_ACCESSOR, Listbox, ListboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-listbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-listbox.mjs","sources":["../../src/app/components/listbox/listbox.ts","../../src/app/components/listbox/primeng-listbox.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, EventEmitter, AfterContentInit, ContentChildren, ContentChild, QueryList, TemplateRef,forwardRef, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, Footer, Header, FilterService, TranslationKeys, PrimeNGConfig } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { RippleModule } from 'primeng/ripple';\nimport { Subscription } from 'rxjs';\n\nexport const LISTBOX_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Listbox),\n    multi: true\n};\n\n@Component({\n    selector: 'p-listbox',\n    template: `\n    <div [ngClass]=\"{'p-listbox p-component': true, 'p-disabled': disabled}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n      <div class=\"p-listbox-header\" *ngIf=\"headerFacet || headerTemplate\">\n        <ng-content select=\"p-header\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n      </div>\n      <div class=\"p-listbox-header\" *ngIf=\"(checkbox && multiple && showToggleAll) || filter\">\n        <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple && showToggleAll\" [ngClass]=\"{'p-checkbox-disabled': disabled || toggleAllDisabled}\">\n          <div class=\"p-hidden-accessible\">\n            <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\" [disabled]=\"disabled || toggleAllDisabled\">\n          </div>\n          <div #headerchkbox class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}\" (click)=\"toggleAll($event)\">\n            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n          </div>\n        </div>\n        <div class=\"p-listbox-filter-container\" *ngIf=\"filter\">\n          <input type=\"text\" [value]=\"filterValue||''\" (input)=\"onFilter($event)\" class=\"p-listbox-filter p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n          <span class=\"p-listbox-filter-icon pi pi-search\"></span>\n        </div>\n      </div>\n      <div [ngClass]=\"'p-listbox-list-wrapper'\" [ngStyle]=\"listStyle\" [class]=\"listStyleClass\">\n        <ul class=\"p-listbox-list\" role=\"listbox\" aria-multiselectable=\"multiple\">\n            <ng-container *ngIf=\"group\">\n                <ng-template ngFor let-optgroup [ngForOf]=\"optionsToRender\">\n                    <li class=\"p-listbox-item-group\">\n                        <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                        <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                    </li>\n                    <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                </ng-template>\n            </ng-container>\n            <ng-container *ngIf=\"!group\">\n                    <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToRender}\"></ng-container>\n            </ng-container>\n            <ng-template #itemslist let-optionsToDisplay>\n                <li *ngFor=\"let option of optionsToDisplay; let i = index;\" [attr.tabindex]=\"disabled || isOptionDisabled(option) ? null : '0'\" pRipple\n                    [ngClass]=\"{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': this.isOptionDisabled(option)}\" role=\"option\" [attr.aria-label]=\"getOptionLabel(option)\"\n                    [attr.aria-selected]=\"isSelected(option)\" (click)=\"onOptionClick($event,option)\" (dblclick)=\"onOptionDoubleClick($event,option)\" (touchend)=\"onOptionTouchEnd(option)\" (keydown)=\"onOptionKeyDown($event,option)\">\n                    <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple\" [ngClass]=\"{'p-checkbox-disabled': disabled || isOptionDisabled(option)}\">\n                        <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight':isSelected(option)}\">\n                            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':isSelected(option)}\"></span>\n                        </div>\n                    </div>\n                    <span *ngIf=\"!itemTemplate\">{{getOptionLabel(option)}}</span>\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                </li>\n                <li *ngIf=\"hasFilter() && isEmpty(optionsToDisplay)\" class=\"p-listbox-empty-message\">\n                    <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                        {{emptyFilterMessageLabel}}\n                    </ng-container>\n                    <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                </li>\n                <li *ngIf=\"!hasFilter() && isEmpty(optionsToDisplay)\" class=\"p-listbox-empty-message\">\n                    <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                        {{emptyMessageLabel}}\n                    </ng-container>\n                    <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                </li>\n            </ng-template>\n        </ul>\n      </div>\n      <div class=\"p-listbox-footer\" *ngIf=\"footerFacet || footerTemplate\">\n        <ng-content select=\"p-footer\"></ng-content>\n        <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n      </div>\n    </div>\n  `,\n    providers: [LISTBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./listbox.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Listbox implements AfterContentInit, OnInit, ControlValueAccessor, OnDestroy {\n\n    @Input() multiple: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() listStyle: any;\n\n    @Input() listStyleClass: string;\n\n    @Input() readonly: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() checkbox: boolean = false;\n\n    @Input() filter: boolean = false;\n\n    @Input() filterMatchMode: string = 'contains';\n\n    @Input() filterLocale: string;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dataKey: string;\n\n    @Input() showToggleAll: boolean = true;\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterPlaceHolder: string;\n\n    @Input() emptyFilterMessage: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() group: boolean;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDblClick: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('headerchkbox') headerCheckboxViewChild: ElementRef;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public _options: any[];\n\n    public itemTemplate: TemplateRef<any>;\n\n    public groupTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public footerTemplate: TemplateRef<any>;\n\n    public emptyFilterTemplate: TemplateRef<any>;\n\n    public emptyTemplate: TemplateRef<any>;\n\n    public _filterValue: string;\n\n    public _filteredOptions: any[];\n\n    public filtered: boolean;\n\n    public value: any;\n\n    public onModelChange: Function = () => { };\n\n    public onModelTouched: Function = () => { };\n\n    public optionTouched: boolean;\n\n    public focus: boolean;\n\n    public headerCheckboxFocus: boolean;\n\n    translationSubscription: Subscription;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig) { }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n\n        if (this.hasFilter())\n            this.activateFilter();\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    ngOnInit() {\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    writeValue(value: any): void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onOptionClick(event: Event, option: any) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        if (this.multiple) {\n            if (this.checkbox)\n                this.onOptionClickCheckbox(event, option);\n            else\n                this.onOptionClickMultiple(event, option);\n        }\n        else {\n            this.onOptionClickSingle(event, option);\n        }\n        this.onClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        });\n        this.optionTouched = false;\n    }\n\n    onOptionTouchEnd(option: any) {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        this.optionTouched = true;\n    }\n\n    onOptionDoubleClick(event: Event, option: any): any {\n        if (this.disabled || this.isOptionDisabled(option) || this.readonly) {\n            return;\n        }\n\n        this.onDblClick.emit({\n            originalEvent: event,\n            option: option,\n            value: this.value\n        })\n    }\n\n    onOptionClickSingle(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey || event.ctrlKey);\n\n            if (selected) {\n                if (metaKey) {\n                    this.value = null;\n                    valueChanged = true;\n                }\n            }\n            else {\n                this.value = this.getOptionValue(option);\n                valueChanged = true;\n            }\n        }\n        else {\n            this.value = selected ? null : this.getOptionValue(option);\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.onModelChange(this.value);\n            this.onChange.emit({\n                originalEvent: event,\n                value: this.value\n            });\n        }\n    }\n\n    onOptionClickMultiple(event, option) {\n        let selected = this.isSelected(option);\n        let valueChanged = false;\n        let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey || event.ctrlKey);\n\n            if (selected) {\n                if (metaKey) {\n                    this.removeOption(option);\n                }\n                else {\n                    this.value = [this.getOptionValue(option)];\n                }\n                valueChanged = true;\n            }\n            else {\n                this.value = (metaKey) ? this.value || [] : [];\n                this.value = [...this.value, this.getOptionValue(option)];\n                valueChanged = true;\n            }\n        }\n        else {\n            if (selected) {\n                this.removeOption(option);\n            }\n            else {\n                this.value = [...this.value || [], this.getOptionValue(option)];\n            }\n\n            valueChanged = true;\n        }\n\n        if (valueChanged) {\n            this.onModelChange(this.value);\n            this.onChange.emit({\n                originalEvent: event,\n                value: this.value\n            });\n        }\n    }\n\n    onOptionClickCheckbox(event, option) {\n        if (this.disabled || this.readonly) {\n            return;\n        }\n\n        let selected = this.isSelected(option);\n\n        if (selected) {\n            this.removeOption(option);\n        }\n        else {\n            this.value = this.value ? this.value : [];\n            this.value = [...this.value, this.getOptionValue(option)];\n        }\n\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    removeOption(option: any): void {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n    }\n\n    isSelected(option: any) {\n        let selected = false;\n        let optionValue = this.getOptionValue(option);\n\n        if (this.multiple) {\n            if (this.value) {\n                for (let val of this.value) {\n                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                        selected = true;\n                        break;\n                    }\n                }\n            }\n        }\n        else {\n            selected = ObjectUtils.equals(this.value, optionValue, this.dataKey);\n        }\n\n        return selected;\n    }\n\n    get allChecked(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return false;\n        }\n        else {\n            let selectedDisabledItemsLength = 0;\n            let unselectedDisabledItemsLength = 0;\n            let selectedEnabledItemsLength = 0;\n            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n\n            for (let option of optionsToRender) {\n                if (!this.group) {\n                    let disabled = this.isOptionDisabled(option);\n                    let selected = this.isSelected(option);\n\n                    if (disabled) {\n                        if (selected)\n                            selectedDisabledItemsLength++;\n                        else\n                            unselectedDisabledItemsLength++;\n                    }\n                    else {\n                        if (selected)\n                            selectedEnabledItemsLength++;\n                        else\n                            return false;\n                    }\n                }\n                else {\n                    for (let opt of this.getOptionGroupChildren(option)) {\n                        let disabled = this.isOptionDisabled(opt);\n                        let selected = this.isSelected(opt);\n\n                        if (disabled) {\n                            if (selected)\n                                selectedDisabledItemsLength++;\n                            else\n                                unselectedDisabledItemsLength++;\n                        }\n                        else {\n                            if (selected)\n                                selectedEnabledItemsLength++;\n                            else {\n                                return false;\n                            }\n                        }\n\n                        visibleOptionsLength++;\n                    }\n                }\n            }\n\n            return (visibleOptionsLength === selectedDisabledItemsLength\n                    || visibleOptionsLength === selectedEnabledItemsLength\n                    || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n        }\n    }\n\n    get optionsToRender(): any[] {\n        return this._filteredOptions || this.options;\n    }\n\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    hasFilter() {\n        return this._filterValue && this._filterValue.trim().length > 0;\n    }\n\n    isEmpty(optionsToDisplay) {\n        return !optionsToDisplay || (optionsToDisplay && optionsToDisplay.length === 0);\n    }\n\n    onFilter(event: KeyboardEvent) {\n        this._filterValue = (<HTMLInputElement> event.target).value;\n        this.activateFilter();\n    }\n\n    activateFilter() {\n        if (this.hasFilter() && this._options) {\n            if (this.group) {\n                let searchFields: string[] = (this.optionLabel || 'label').split(',');\n\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this._filteredOptions = filteredGroups;\n            }\n            else {\n                this._filteredOptions = this._options.filter(option => this.filterService.filters[this.filterMatchMode](this.getOptionLabel(option), this._filterValue, this.filterLocale));\n            }\n        }\n        else {\n            this._filteredOptions = null;\n        }\n    }\n\n    get toggleAllDisabled(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return true;\n        }\n        else {\n            for (let option of optionsToRender) {\n                if (!this.isOptionDisabled(option))\n                    return false;\n            }\n\n            return true;\n        }\n    }\n\n    toggleAll(event) {\n        if (this.disabled || this.toggleAllDisabled || this.readonly) {\n            return;\n        }\n\n        let allChecked = this.allChecked;\n\n        if (allChecked)\n            this.uncheckAll();\n        else\n            this.checkAll();\n\n        this.onModelChange(this.value);\n        this.onChange.emit({ originalEvent: event, value: this.value });\n        event.preventDefault();\n    }\n\n    checkAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                let subOptions = this.getOptionGroupChildren(opt);\n\n                if (subOptions) {\n                    subOptions.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    uncheckAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (optionDisabled && this.isSelected(opt)) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                if (opt.items) {\n                    opt.items.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (optionDisabled && this.isSelected(option)) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    onOptionKeyDown(event:KeyboardEvent, option) {\n        if (this.readonly) {\n            return;\n        }\n\n        let item = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(item);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(item);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onOptionClick(event, option);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) || DomHandler.hasClass(nextItem, 'p-listbox-item-group') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) || DomHandler.hasClass(prevItem, 'p-listbox-item-group') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    onHeaderCheckboxFocus() {\n        this.headerCheckboxFocus = true;\n    }\n\n    onHeaderCheckboxBlur() {\n        this.headerCheckboxFocus = false;\n    }\n\n    ngOnDestroy() {\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, SharedModule, RippleModule],\n    exports: [Listbox, SharedModule],\n    declarations: [Listbox]\n})\nexport class ListboxModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,314 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class MegaMenu {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.orientation = 'horizontal';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onCategoryMouseEnter(event, menuitem) {
+        if (menuitem.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (this.activeItem) {
+            this.activeItem = menuitem;
+        }
+    }
+    onCategoryClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && this.activeItem === item) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = null;
+    }
+    getColumnClass(menuitem) {
+        let length = menuitem.items ? menuitem.items.length : 0;
+        let columnClass;
+        switch (length) {
+            case 2:
+                columnClass = 'p-megamenu-col-6';
+                break;
+            case 3:
+                columnClass = 'p-megamenu-col-4';
+                break;
+            case 4:
+                columnClass = 'p-megamenu-col-3';
+                break;
+            case 6:
+                columnClass = 'p-megamenu-col-2';
+                break;
+            default:
+                columnClass = 'p-megamenu-col-12';
+                break;
+        }
+        return columnClass;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.unbindDocumentClickListener();
+                    this.cd.markForCheck();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+}
+MegaMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MegaMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MegaMenu, selector: "p-megaMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", orientation: "orientation", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-megaMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style"
+            [ngClass]="{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}">
+            <div class="p-megamenu-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <ul class="p-megamenu-root-list" role="menubar">
+                <ng-template ngFor let-category [ngForOf]="model">
+                    <li *ngIf="category.separator" class="p-menu-separator" [ngClass]="{'p-hidden': category.visible === false}">
+                    <li *ngIf="!category.separator" [ngClass]="{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}" pTooltip [tooltipOptions]="category.tooltipOptions"
+                        (mouseenter)="onCategoryMouseEnter($event, category)">
+                        <a *ngIf="!category.routerLink" [href]="category.url||'#'" [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id" (click)="onCategoryClick($event, category)" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                            <span *ngIf="category.items" class="p-submenu-icon pi" [ngClass]="{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}"></span>
+                        </a>
+                        <a *ngIf="category.routerLink" [routerLink]="category.routerLink" [queryParams]="category.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="category.routerLinkActiveOptions||{exact:false}" [attr.tabindex]="category.tabindex ? category.tabindex : '0'"
+                            [attr.target]="category.target" [attr.title]="category.title" [attr.id]="category.id"
+                            (click)="onCategoryClick($event, category)" [ngClass]="{'p-menuitem-link':true,'p-disabled':category.disabled}" [ngStyle]="category.style" [class]="category.styleClass"
+                            [fragment]="category.fragment" [queryParamsHandling]="category.queryParamsHandling" [preserveFragment]="category.preserveFragment" [skipLocationChange]="category.skipLocationChange" [replaceUrl]="category.replaceUrl" [state]="category.state" pRipple>
+                            <span class="p-menuitem-icon" *ngIf="category.icon" [ngClass]="category.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="category.escape !== false; else categoryHtmlRouteLabel">{{category.label}}</span>
+                            <ng-template #categoryHtmlRouteLabel><span class="p-menuitem-text" [innerHTML]="category.label"></span></ng-template>
+                        </a>
+                        <div class="p-megamenu-panel" *ngIf="category.items">
+                            <div class="p-megamenu-grid">
+                                <ng-template ngFor let-column [ngForOf]="category.items">
+                                    <div [class]="getColumnClass(category)">
+                                        <ng-template ngFor let-submenu [ngForOf]="column">
+                                            <ul class="p-megamenu-submenu" role="menu">
+                                                <li class="p-megamenu-submenu-header">
+                                                    <span *ngIf="submenu.escape !== false; else submenuHtmlLabel">{{submenu.label}}</span>
+                                                    <ng-template #submenuHtmlLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                                                </li>
+                                                <ng-template ngFor let-item [ngForOf]="submenu.items">
+                                                    <li *ngIf="item.separator" class="p-menu-separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator">
+                                                    <li *ngIf="!item.separator" class="p-menuitem" [ngClass]="{'p-hidden': item.visible === false}" role="none" pTooltip [tooltipOptions]="item.tooltipOptions">
+                                                        <a *ngIf="!item.routerLink" role="menuitem" [href]="item.url||'#'" class="p-menuitem-link" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                                                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                        <a *ngIf="item.routerLink" role="menuitem" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [attr.tabindex]="item.tabindex ? item.tabindex : '0'"
+                                                            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                                                             [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                                                            [ngClass]="{'p-disabled':item.disabled}" (click)="itemClick($event, item)"
+                                                            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                                                            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                                                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                                                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                                                        </a>
+                                                    </li>
+                                                </ng-template>
+                                            </ul>
+                                        </ng-template>
+                                    </div>
+                                </ng-template>
+                            </div>
+                        </div>
+                    </li>
+                </ng-template>
+                <div class="p-megamenu-end" *ngIf="endTemplate; else legacy">
+                    <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+                </div>
+                <ng-template #legacy>
+                    <div class="p-megamenu-end">
+                        <ng-content></ng-content>
+                    </div>
+                </ng-template>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-megamenu-root-list{margin:0;padding:0;list-style:none}.p-megamenu-root-list>.p-menuitem{position:relative}.p-megamenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-megamenu .p-menuitem-text{line-height:1}.p-megamenu-panel{display:none;position:absolute;width:auto;z-index:1}.p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{display:block}.p-megamenu-submenu{margin:0;padding:0;list-style:none}.p-megamenu-horizontal .p-megamenu-root-list{display:flex;align-items:center;flex-wrap:wrap}.p-megamenu-vertical .p-megamenu-root-list{flex-direction:column}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem-active>.p-megamenu-panel{left:100%;top:0}.p-megamenu-vertical .p-megamenu-root-list>.p-menuitem>.p-menuitem-link>.p-submenu-icon{margin-left:auto}.p-megamenu-grid{display:flex}.p-megamenu-col-2,.p-megamenu-col-3,.p-megamenu-col-4,.p-megamenu-col-6,.p-megamenu-col-12{flex:0 0 auto;padding:.5rem}.p-megamenu-col-2{width:16.6667%}.p-megamenu-col-3{width:25%}.p-megamenu-col-4{width:33.3333%}.p-megamenu-col-6{width:50%}.p-megamenu-col-12{width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class MegaMenuModule {
+}
+MegaMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MegaMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, declarations: [MegaMenu], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [MegaMenu, RouterModule, TooltipModule] });
+MegaMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MegaMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [MegaMenu, RouterModule, TooltipModule],
+                    declarations: [MegaMenu]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MegaMenu, MegaMenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-megamenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-megamenu.mjs","sources":["../../src/app/components/megamenu/megamenu.ts","../../src/app/components/megamenu/primeng-megamenu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Renderer2,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MegaMenuItem,MenuItem, PrimeTemplate} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-megaMenu',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\"\n            [ngClass]=\"{'p-megamenu p-component':true,'p-megamenu-horizontal': orientation == 'horizontal','p-megamenu-vertical': orientation == 'vertical'}\">\n            <div class=\"p-megamenu-start\" *ngIf=\"startTemplate\">\n                <ng-container *ngTemplateOutlet=\"startTemplate\"></ng-container>\n            </div>\n            <ul class=\"p-megamenu-root-list\" role=\"menubar\">\n                <ng-template ngFor let-category [ngForOf]=\"model\">\n                    <li *ngIf=\"category.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': category.visible === false}\">\n                    <li *ngIf=\"!category.separator\" [ngClass]=\"{'p-menuitem':true,'p-menuitem-active':category==activeItem, 'p-hidden': category.visible === false}\" pTooltip [tooltipOptions]=\"category.tooltipOptions\"\n                        (mouseenter)=\"onCategoryMouseEnter($event, category)\">\n                        <a *ngIf=\"!category.routerLink\" [href]=\"category.url||'#'\" [attr.target]=\"category.target\" [attr.title]=\"category.title\" [attr.id]=\"category.id\" (click)=\"onCategoryClick($event, category)\" [attr.tabindex]=\"category.tabindex ? category.tabindex : '0'\"\n                            [ngClass]=\"{'p-menuitem-link':true,'p-disabled':category.disabled}\" [ngStyle]=\"category.style\" [class]=\"category.styleClass\" pRipple>\n                            <span class=\"p-menuitem-icon\" *ngIf=\"category.icon\" [ngClass]=\"category.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"category.escape !== false; else categoryHtmlLabel\">{{category.label}}</span>\n                            <ng-template #categoryHtmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"category.label\"></span></ng-template>\n                            <span *ngIf=\"category.items\" class=\"p-submenu-icon pi\" [ngClass]=\"{'pi-angle-down':orientation=='horizontal','pi-angle-right':orientation=='vertical'}\"></span>\n                        </a>\n                        <a *ngIf=\"category.routerLink\" [routerLink]=\"category.routerLink\" [queryParams]=\"category.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"category.routerLinkActiveOptions||{exact:false}\" [attr.tabindex]=\"category.tabindex ? category.tabindex : '0'\"\n                            [attr.target]=\"category.target\" [attr.title]=\"category.title\" [attr.id]=\"category.id\"\n                            (click)=\"onCategoryClick($event, category)\" [ngClass]=\"{'p-menuitem-link':true,'p-disabled':category.disabled}\" [ngStyle]=\"category.style\" [class]=\"category.styleClass\"\n                            [fragment]=\"category.fragment\" [queryParamsHandling]=\"category.queryParamsHandling\" [preserveFragment]=\"category.preserveFragment\" [skipLocationChange]=\"category.skipLocationChange\" [replaceUrl]=\"category.replaceUrl\" [state]=\"category.state\" pRipple>\n                            <span class=\"p-menuitem-icon\" *ngIf=\"category.icon\" [ngClass]=\"category.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"category.escape !== false; else categoryHtmlRouteLabel\">{{category.label}}</span>\n                            <ng-template #categoryHtmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"category.label\"></span></ng-template>\n                        </a>\n                        <div class=\"p-megamenu-panel\" *ngIf=\"category.items\">\n                            <div class=\"p-megamenu-grid\">\n                                <ng-template ngFor let-column [ngForOf]=\"category.items\">\n                                    <div [class]=\"getColumnClass(category)\">\n                                        <ng-template ngFor let-submenu [ngForOf]=\"column\">\n                                            <ul class=\"p-megamenu-submenu\" role=\"menu\">\n                                                <li class=\"p-megamenu-submenu-header\">\n                                                    <span *ngIf=\"submenu.escape !== false; else submenuHtmlLabel\">{{submenu.label}}</span>\n                                                    <ng-template #submenuHtmlLabel><span [innerHTML]=\"submenu.label\"></span></ng-template>\n                                                </li>\n                                                <ng-template ngFor let-item [ngForOf]=\"submenu.items\">\n                                                    <li *ngIf=\"item.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"separator\">\n                                                    <li *ngIf=\"!item.separator\" class=\"p-menuitem\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"none\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                                                        <a *ngIf=\"!item.routerLink\" role=\"menuitem\" [href]=\"item.url||'#'\" class=\"p-menuitem-link\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.tabindex ? item.tabindex : '0'\"\n                                                            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"itemClick($event, item)\" pRipple>\n                                                            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                                                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                                                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                                                        </a>\n                                                        <a *ngIf=\"item.routerLink\" role=\"menuitem\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [attr.tabindex]=\"item.tabindex ? item.tabindex : '0'\"\n                                                            [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                                                             [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n                                                            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"itemClick($event, item)\"\n                                                            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" pRipple>\n                                                            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                                                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                                                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                                                        </a>\n                                                    </li>\n                                                </ng-template>\n                                            </ul>\n                                        </ng-template>\n                                    </div>\n                                </ng-template>\n                            </div>\n                        </div>\n                    </li>\n                </ng-template>\n                <div class=\"p-megamenu-end\" *ngIf=\"endTemplate; else legacy\">\n                    <ng-container *ngTemplateOutlet=\"endTemplate\"></ng-container>\n                </div>\n                <ng-template #legacy>\n                    <div class=\"p-megamenu-end\">\n                        <ng-content></ng-content>\n                    </div>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./megamenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MegaMenu implements AfterContentInit {\n\n    @Input() model: MegaMenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() orientation: string = 'horizontal';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    activeItem: any;\n\n    documentClickListener: any;\n\n    startTemplate: TemplateRef<any>;\n\n    endTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'start':\n                    this.startTemplate = item.template;\n                break;\n\n                case 'end':\n                    this.endTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onCategoryMouseEnter(event, menuitem: MegaMenuItem) {\n        if (menuitem.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.activeItem) {\n            this.activeItem = menuitem;\n        }\n    }\n\n    onCategoryClick(event, item: MenuItem | MegaMenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && this.activeItem === item) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n    }\n\n    itemClick(event, item: MenuItem | MegaMenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.activeItem = null;\n    }\n\n    getColumnClass(menuitem: MegaMenuItem) {\n        let length = menuitem.items ? menuitem.items.length: 0;\n        let columnClass;\n        switch(length) {\n            case 2:\n                columnClass= 'p-megamenu-col-6';\n            break;\n\n            case 3:\n                columnClass= 'p-megamenu-col-4';\n            break;\n\n            case 4:\n                columnClass= 'p-megamenu-col-3';\n            break;\n\n            case 6:\n                columnClass= 'p-megamenu-col-2';\n            break;\n\n            default:\n                columnClass= 'p-megamenu-col-12';\n            break;\n        }\n\n        return columnClass;\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.unbindDocumentClickListener();\n                    this.cd.markForCheck();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [MegaMenu,RouterModule,TooltipModule],\n    declarations: [MegaMenu]\n})\nexport class MegaMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,416 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i4 from 'primeng/api';
+
+class MenuItemContent {
+    constructor(menu) {
+        this.menu = menu;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+}
+MenuItemContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, deps: [{ token: forwardRef(() => Menu) }], target: i0.ɵɵFactoryTarget.Component });
+MenuItemContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenuItemContent, selector: "[pMenuItemContent]", inputs: { item: ["pMenuItemContent", "item"] }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuItemContent, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pMenuItemContent]',
+                    template: `
+        <a *ngIf="!item.routerLink"  (keydown)="onItemKeyDown($event)" [attr.href]="item.url||null" class="p-menuitem-link" [attr.tabindex]="item.disabled ? null : '0'" [attr.data-automationid]="item.automationId" [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+            [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+        <a *ngIf="item.routerLink" (keydown)="onItemKeyDown($event)" [routerLink]="item.routerLink" [attr.data-automationid]="item.automationId" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+            [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+            [attr.title]="item.title" [ngClass]="{'p-disabled':item.disabled}" (click)="menu.itemClick($event, item)" role="menuitem" pRipple
+            [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+            <span class="p-menuitem-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+        </a>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Menu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input,
+                args: ["pMenuItemContent"]
+            }] } });
+class Menu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.relativeAlign = event.relativeAlign;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    this.alignOverlay();
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(event.element);
+                }
+                break;
+        }
+    }
+    alignOverlay() {
+        if (this.relativeAlign)
+            DomHandler.relativePosition(this.container, this.target);
+        else
+            DomHandler.absolutePosition(this.container, this.target);
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.relativeAlign = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (this.popup) {
+            this.hide();
+        }
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+    hasSubMenu() {
+        if (this.model) {
+            for (var item of this.model) {
+                if (item.items) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
+Menu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Menu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menu, selector: "p-menu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"], components: [{ type: MenuItemContent, selector: "[pMenuItemContent]", inputs: ["pMenuItemContent"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menu', template: `
+        <div #container [ngClass]="{'p-menu p-component': true, 'p-menu-overlay': popup}"
+            [class]="styleClass" [ngStyle]="style" *ngIf="!popup || visible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)">
+            <ul class="p-menu-list p-reset" role="menu">
+                <ng-template ngFor let-submenu [ngForOf]="model" *ngIf="hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="separator"></li>
+                    <li class="p-submenu-header" [attr.data-automationid]="submenu.automationId" *ngIf="!submenu.separator" [ngClass]="{'p-hidden': submenu.visible === false}" role="none">
+                        <span *ngIf="submenu.escape !== false; else htmlSubmenuLabel">{{submenu.label}}</span>
+                        <ng-template #htmlSubmenuLabel><span [innerHTML]="submenu.label"></span></ng-template>
+                    </li>
+                    <ng-template ngFor let-item [ngForOf]="submenu.items">
+                        <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" role="separator"></li>
+                        <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': (item.visible === false || submenu.visible === false)}" [ngStyle]="item.style" [class]="item.styleClass" role="none"></li>
+                    </ng-template>
+                </ng-template>
+                <ng-template ngFor let-item [ngForOf]="model" *ngIf="!hasSubMenu()">
+                    <li class="p-menu-separator" *ngIf="item.separator" [ngClass]="{'p-hidden': item.visible === false}" role="separator"></li>
+                    <li class="p-menuitem" *ngIf="!item.separator" [pMenuItemContent]="item" [ngClass]="{'p-hidden': item.visible === false}" [ngStyle]="item.style" [class]="item.styleClass" pTooltip [tooltipOptions]="item.tooltipOptions" role="none"></li>
+                </ng-template>
+            </ul>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menu-overlay{position:absolute;top:0;left:0}.p-menu ul{margin:0;padding:0;list-style:none}.p-menu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }] } });
+class MenuModule {
+}
+MenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, declarations: [Menu, MenuItemContent], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menu, RouterModule, TooltipModule] });
+MenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menu, RouterModule, TooltipModule],
+                    declarations: [Menu, MenuItemContent]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Menu, MenuItemContent, MenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-menu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-menu.mjs","sources":["../../src/app/components/menu/menu.ts","../../src/app/components/menu/primeng-menu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,Renderer2,ViewChild,Inject,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {MenuItem, OverlayService, PrimeNGConfig} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {RouterModule} from '@angular/router';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: '[pMenuItemContent]',\n    template: `\n        <a *ngIf=\"!item.routerLink\"  (keydown)=\"onItemKeyDown($event)\" [attr.href]=\"item.url||null\" class=\"p-menuitem-link\" [attr.tabindex]=\"item.disabled ? null : '0'\" [attr.data-automationid]=\"item.automationId\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n            [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"menu.itemClick($event, item)\" role=\"menuitem\">\n            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n        </a>\n        <a *ngIf=\"item.routerLink\" (keydown)=\"onItemKeyDown($event)\" [routerLink]=\"item.routerLink\" [attr.data-automationid]=\"item.automationId\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"\n            [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n            [attr.title]=\"item.title\" [ngClass]=\"{'p-disabled':item.disabled}\" (click)=\"menu.itemClick($event, item)\" role=\"menuitem\" pRipple\n            [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n            <span class=\"p-menuitem-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n        </a>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MenuItemContent {\n\n    @Input(\"pMenuItemContent\") item: MenuItem;\n\n    menu: Menu;\n\n    constructor(@Inject(forwardRef(() => Menu)) menu) {\n        this.menu = menu as Menu;\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.code) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.children[0].click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n}\n\n@Component({\n    selector: 'p-menu',\n    template: `\n        <div #container [ngClass]=\"{'p-menu p-component': true, 'p-menu-overlay': popup}\"\n            [class]=\"styleClass\" [ngStyle]=\"style\" *ngIf=\"!popup || visible\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n            <ul class=\"p-menu-list p-reset\" role=\"menu\">\n                <ng-template ngFor let-submenu [ngForOf]=\"model\" *ngIf=\"hasSubMenu()\">\n                    <li class=\"p-menu-separator\" *ngIf=\"submenu.separator\" [ngClass]=\"{'p-hidden': submenu.visible === false}\" role=\"separator\"></li>\n                    <li class=\"p-submenu-header\" [attr.data-automationid]=\"submenu.automationId\" *ngIf=\"!submenu.separator\" [ngClass]=\"{'p-hidden': submenu.visible === false}\" role=\"none\">\n                        <span *ngIf=\"submenu.escape !== false; else htmlSubmenuLabel\">{{submenu.label}}</span>\n                        <ng-template #htmlSubmenuLabel><span [innerHTML]=\"submenu.label\"></span></ng-template>\n                    </li>\n                    <ng-template ngFor let-item [ngForOf]=\"submenu.items\">\n                        <li class=\"p-menu-separator\" *ngIf=\"item.separator\" [ngClass]=\"{'p-hidden': (item.visible === false || submenu.visible === false)}\" role=\"separator\"></li>\n                        <li class=\"p-menuitem\" *ngIf=\"!item.separator\" [pMenuItemContent]=\"item\" [ngClass]=\"{'p-hidden': (item.visible === false || submenu.visible === false)}\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" role=\"none\"></li>\n                    </ng-template>\n                </ng-template>\n                <ng-template ngFor let-item [ngForOf]=\"model\" *ngIf=\"!hasSubMenu()\">\n                    <li class=\"p-menu-separator\" *ngIf=\"item.separator\" [ngClass]=\"{'p-hidden': item.visible === false}\" role=\"separator\"></li>\n                    <li class=\"p-menuitem\" *ngIf=\"!item.separator\" [pMenuItemContent]=\"item\" [ngClass]=\"{'p-hidden': item.visible === false}\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" pTooltip [tooltipOptions]=\"item.tooltipOptions\" role=\"none\"></li>\n                </ng-template>\n            </ul>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./menu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Menu implements OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    container: HTMLDivElement;\n\n    scrollHandler: any;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    target: any;\n\n    visible: boolean;\n\n    relativeAlign: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.relativeAlign = event.relativeAlign;\n        this.visible = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.container = event.element;\n                    this.moveOnTop();\n                    this.onShow.emit({});\n                    this.appendOverlay();\n                    this.alignOverlay();\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit({});\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n            break;\n        }\n    }\n\n    alignOverlay() {\n        if (this.relativeAlign)\n            DomHandler.relativePosition(this.container, this.target);\n        else\n            DomHandler.absolutePosition(this.container, this.target);\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.relativeAlign = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    itemClick(event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (this.popup) {\n            this.hide();\n        }\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault=true\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault) {\n                    this.hide();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            if (this.container && this.autoZIndex) {\n                ZIndexUtils.clear(this.container);\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n    hasSubMenu(): boolean {\n        if (this.model) {\n            for (var item of this.model) {\n                if (item.items) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [Menu,RouterModule,TooltipModule],\n    declarations: [Menu,MenuItemContent]\n})\nexport class MenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,339 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i5 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class MenubarSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+MenubarSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+MenubarSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MenubarSub, selector: "p-menubarSub", inputs: { item: "item", root: "root", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", autoDisplay: "autoDisplay", parentActive: "parentActive" }, outputs: { leafClick: "leafClick" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-menubarSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root, 'p-menubar-root-list': root}" [attr.role]="root ? 'menubar' : 'menu'">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}" role="separator">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" role="none" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}" [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                        [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi" *ngIf="child.items" [ngClass]="{'pi-angle-down':root,'pi-angle-right':!root}"></span>
+                    </a>
+                    <p-menubarSub [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()"></p-menubarSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }] } });
+class Menubar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'start':
+                    this.startTemplate = item.template;
+                    break;
+                case 'end':
+                    this.endTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    toggle(event) {
+        if (this.mobileActive) {
+            this.hide();
+            ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        }
+        else {
+            this.mobileActive = true;
+            ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);
+        }
+        this.bindOutsideClickListener();
+        event.preventDefault();
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.mobileActive && this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target)
+                    && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    hide() {
+        this.mobileActive = false;
+        this.cd.markForCheck();
+        ZIndexUtils.clear(this.rootmenu.el.nativeElement);
+        this.unbindOutsideClickListener();
+    }
+    onLeafClick() {
+        this.hide();
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindOutsideClickListener();
+    }
+}
+Menubar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Menubar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Menubar, selector: "p-menubar", inputs: { model: "model", style: "style", styleClass: "styleClass", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "menubutton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "rootmenu", first: true, predicate: ["rootmenu"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"], components: [{ type: MenubarSub, selector: "p-menubarSub", inputs: ["item", "root", "autoZIndex", "baseZIndex", "mobileActive", "autoDisplay", "parentActive"], outputs: ["leafClick"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Menubar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-menubar', template: `
+        <div [ngClass]="{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}" [class]="styleClass" [ngStyle]="style">
+            <div class="p-menubar-start" *ngIf="startTemplate">
+                <ng-container *ngTemplateOutlet="startTemplate"></ng-container>
+            </div>
+            <a #menubutton tabindex="0" class="p-menubar-button" (click)="toggle($event)">
+                <i class="pi pi-bars"></i>
+            </a>
+            <p-menubarSub #rootmenu [item]="model" root="root" [baseZIndex]="baseZIndex" (leafClick)="onLeafClick()" [autoZIndex]="autoZIndex" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay"></p-menubarSub>
+            <div class="p-menubar-end" *ngIf="endTemplate; else legacy">
+                <ng-container *ngTemplateOutlet="endTemplate"></ng-container>
+            </div>
+            <ng-template #legacy>
+                <div class="p-menubar-end">
+                    <ng-content></ng-content>
+                </div>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-menubar{display:flex;align-items:center}.p-menubar ul{margin:0;padding:0;list-style:none}.p-menubar .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-menubar .p-menuitem-text{line-height:1}.p-menubar .p-menuitem{position:relative}.p-menubar-root-list{display:flex;align-items:center}.p-menubar-root-list>li ul{display:none;z-index:1}.p-menubar-root-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block}.p-menubar .p-submenu-list{display:none;position:absolute;z-index:1}.p-menubar .p-submenu-list>.p-menuitem-active>p-menubarsub>.p-submenu-list{display:block;left:100%;top:0}.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-menubar .p-menubar-custom,.p-menubar .p-menubar-end{margin-left:auto;align-self:center}.p-menubar-button{display:none;cursor:pointer;align-items:center;justify-content:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], menubutton: [{
+                type: ViewChild,
+                args: ['menubutton']
+            }], rootmenu: [{
+                type: ViewChild,
+                args: ['rootmenu']
+            }] } });
+class MenubarModule {
+}
+MenubarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MenubarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, declarations: [Menubar, MenubarSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [Menubar, RouterModule, TooltipModule] });
+MenubarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MenubarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [Menubar, RouterModule, TooltipModule],
+                    declarations: [Menubar, MenubarSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Menubar, MenubarModule, MenubarSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-menubar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-menubar.mjs","sources":["../../src/app/components/menubar/menubar.ts","../../src/app/components/menubar/primeng-menubar.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Renderer2, OnDestroy,ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { MenuItem, PrimeNGConfig, PrimeTemplate } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-menubarSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': !root, 'p-menubar-root-list': root}\" [attr.role]=\"root ? 'menubar' : 'menu'\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" #listItem [ngClass]=\"{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" role=\"none\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" [attr.href]=\"child.url\" [attr.data-automationid]=\"child.automationId\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                         [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\" [attr.tabindex]=\"child.disabled ? null : '0'\" [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"item === activeItem\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi\" *ngIf=\"child.items\" [ngClass]=\"{'pi-angle-down':root,'pi-angle-right':!root}\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" [routerLink]=\"child.routerLink\" [attr.data-automationid]=\"child.automationId\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                        [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi\" *ngIf=\"child.items\" [ngClass]=\"{'pi-angle-down':root,'pi-angle-right':!root}\"></span>\n                    </a>\n                    <p-menubarSub [parentActive]=\"child === activeItem\" [item]=\"child\" *ngIf=\"child.items\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\" (leafClick)=\"onLeafClick()\"></p-menubarSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MenubarSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() mobileActive: boolean;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() get parentActive():boolean\n    {\n        return this._parentActive;\n    }\n    set parentActive(value) {\n        if (!this.root) {\n            this._parentActive = value;\n\n            if (!value)\n                this.activeItem = null;\n        }\n    }\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    _parentActive: boolean;\n\n    documentClickListener: any;\n\n    menuHoverActive: boolean = false;\n\n    activeItem: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef) { }\n\n    onItemClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && item === this.activeItem) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                if (this.root) {\n                    this.bindDocumentClickListener();\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onItemMouseEnter(event, item) {\n        if (item.disabled || this.mobileActive) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.root) {\n            if (this.activeItem || this.autoDisplay) {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n        else {\n            this.activeItem = item;\n            this.bindDocumentClickListener();\n        }\n    }\n\n    onLeafClick() {\n        this.activeItem = null;\n        if (this.root) {\n            this.unbindDocumentClickListener();\n        }\n\n        this.leafClick.emit();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.cd.markForCheck();\n                    this.unbindDocumentClickListener();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@Component({\n    selector: 'p-menubar',\n    template: `\n        <div [ngClass]=\"{'p-menubar p-component':true, 'p-menubar-mobile-active': mobileActive}\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <div class=\"p-menubar-start\" *ngIf=\"startTemplate\">\n                <ng-container *ngTemplateOutlet=\"startTemplate\"></ng-container>\n            </div>\n            <a #menubutton tabindex=\"0\" class=\"p-menubar-button\" (click)=\"toggle($event)\">\n                <i class=\"pi pi-bars\"></i>\n            </a>\n            <p-menubarSub #rootmenu [item]=\"model\" root=\"root\" [baseZIndex]=\"baseZIndex\" (leafClick)=\"onLeafClick()\" [autoZIndex]=\"autoZIndex\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\"></p-menubarSub>\n            <div class=\"p-menubar-end\" *ngIf=\"endTemplate; else legacy\">\n                <ng-container *ngTemplateOutlet=\"endTemplate\"></ng-container>\n            </div>\n            <ng-template #legacy>\n                <div class=\"p-menubar-end\">\n                    <ng-content></ng-content>\n                </div>\n            </ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./menubar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Menubar implements AfterContentInit, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() autoDisplay: boolean;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('menubutton') menubutton: ElementRef;\n\n    @ViewChild('rootmenu') rootmenu: MenubarSub;\n\n    startTemplate: TemplateRef<any>;\n\n    endTemplate: TemplateRef<any>;\n\n    mobileActive: boolean;\n\n    outsideClickListener: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'start':\n                    this.startTemplate = item.template;\n                break;\n\n                case 'end':\n                    this.endTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    toggle(event) {\n        if (this.mobileActive) {\n            this.hide();\n            ZIndexUtils.clear(this.rootmenu.el.nativeElement);\n        }\n        else {\n            this.mobileActive = true;\n            ZIndexUtils.set('menu', this.rootmenu.el.nativeElement, this.config.zIndex.menu);\n        }\n\n        this.bindOutsideClickListener();\n        event.preventDefault();\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.mobileActive && this.rootmenu.el.nativeElement !== event.target && !this.rootmenu.el.nativeElement.contains(event.target)\n                    && this.menubutton.nativeElement !== event.target && !this.menubutton.nativeElement.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    hide() {\n        this.mobileActive = false;\n        this.cd.markForCheck();\n        ZIndexUtils.clear(this.rootmenu.el.nativeElement);\n        this.unbindOutsideClickListener();\n    }\n\n    onLeafClick() {\n        this.hide();\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindOutsideClickListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [Menubar,RouterModule,TooltipModule],\n    declarations: [Menubar,MenubarSub]\n})\nexport class MenubarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,100 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class UIMessage {
+    constructor() {
+        this.escape = true;
+    }
+    get icon() {
+        let icon = null;
+        if (this.severity) {
+            switch (this.severity) {
+                case 'success':
+                    icon = 'pi pi-check';
+                    break;
+                case 'info':
+                    icon = 'pi pi-info-circle';
+                    break;
+                case 'error':
+                    icon = 'pi pi-times-circle';
+                    break;
+                case 'warn':
+                    icon = 'pi pi-exclamation-triangle';
+                    break;
+                default:
+                    icon = 'pi pi-info-circle';
+                    break;
+            }
+        }
+        return icon;
+    }
+}
+UIMessage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
+UIMessage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UIMessage, selector: "p-message", inputs: { severity: "severity", text: "text", escape: "escape", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UIMessage, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-message', template: `
+        <div aria-live="polite" class="p-inline-message p-component p-inline-message" *ngIf="severity" [ngStyle]="style" [class]="styleClass"
+        [ngClass]="{'p-inline-message-info': (severity === 'info'),
+                'p-inline-message-warn': (severity === 'warn'),
+                'p-inline-message-error': (severity === 'error'),
+                'p-inline-message-success': (severity === 'success'),
+                'p-inline-message-icon-only': this.text == null}">
+            <span class="p-inline-message-icon" [ngClass]="icon"></span>
+            <div *ngIf="!escape; else escapeOut">
+                <span *ngIf="!escape" class="p-inline-message-text" [innerHTML]="text"></span>
+            </div>
+            <ng-template #escapeOut>
+                <span *ngIf="escape" class="p-inline-message-text">{{text}}</span>
+            </ng-template>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-inline-message{display:inline-flex;align-items:center;justify-content:center;vertical-align:top}.p-inline-message-icon-only .p-inline-message-text{visibility:hidden;width:0}.p-fluid .p-inline-message{display:flex}\n"] }]
+        }], propDecorators: { severity: [{
+                type: Input
+            }], text: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }] } });
+class MessageModule {
+}
+MessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, declarations: [UIMessage], imports: [CommonModule], exports: [UIMessage] });
+MessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessageModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [UIMessage],
+                    declarations: [UIMessage]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MessageModule, UIMessage };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-message.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-message.mjs","sources":["../../src/app/components/message/message.ts","../../src/app/components/message/primeng-message.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-message',\n    template: `\n        <div aria-live=\"polite\" class=\"p-inline-message p-component p-inline-message\" *ngIf=\"severity\" [ngStyle]=\"style\" [class]=\"styleClass\"\n        [ngClass]=\"{'p-inline-message-info': (severity === 'info'),\n                'p-inline-message-warn': (severity === 'warn'),\n                'p-inline-message-error': (severity === 'error'),\n                'p-inline-message-success': (severity === 'success'),\n                'p-inline-message-icon-only': this.text == null}\">\n            <span class=\"p-inline-message-icon\" [ngClass]=\"icon\"></span>\n            <div *ngIf=\"!escape; else escapeOut\">\n                <span *ngIf=\"!escape\" class=\"p-inline-message-text\" [innerHTML]=\"text\"></span>\n            </div>\n            <ng-template #escapeOut>\n                <span *ngIf=\"escape\" class=\"p-inline-message-text\">{{text}}</span>\n            </ng-template>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./message.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UIMessage {\n\n    @Input() severity: string;\n\n    @Input() text: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    get icon(): string {\n        let icon: string = null;\n\n        if (this.severity) {\n            switch(this.severity) {\n                case 'success':\n                    icon = 'pi pi-check';\n                break;\n\n                case 'info':\n                    icon = 'pi pi-info-circle';\n                break;\n\n                case 'error':\n                    icon = 'pi pi-times-circle';\n                break;\n\n                case 'warn':\n                    icon = 'pi pi-exclamation-triangle';\n                break;\n\n                default:\n                    icon = 'pi pi-info-circle';\n                break;\n            }\n        }\n\n        return icon;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [UIMessage],\n    declarations: [UIMessage]\n})\nexport class MessageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MA4Ba,SAAS;IAzBtB;QA+Ba,WAAM,GAAY,IAAI,CAAC;KAmCnC;IA7BG,IAAI,IAAI;QACJ,IAAI,IAAI,GAAW,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,QAAO,IAAI,CAAC,QAAQ;gBAChB,KAAK,SAAS;oBACV,IAAI,GAAG,aAAa,CAAC;oBACzB,MAAM;gBAEN,KAAK,MAAM;oBACP,IAAI,GAAG,mBAAmB,CAAC;oBAC/B,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,GAAG,oBAAoB,CAAC;oBAChC,MAAM;gBAEN,KAAK,MAAM;oBACP,IAAI,GAAG,4BAA4B,CAAC;oBACxC,MAAM;gBAEN;oBACI,IAAI,GAAG,mBAAmB,CAAC;oBAC/B,MAAM;aACT;SACJ;QAED,OAAO,IAAI,CAAC;KACf;;sGAxCQ,SAAS;0FAAT,SAAS,oMAvBR;;;;;;;;;;;;;;;KAeT;2FAQQ,SAAS;kBAzBrB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;;;;;;KAeT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,QAAQ;sBAAhB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;;MAsCG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAhDb,SAAS,aA4CR,YAAY,aA5Cb,SAAS;2GAgDT,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,SAAS,CAAC;oBACpB,YAAY,EAAE,CAAC,SAAS,CAAC;iBAC5B;;;AC3ED;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,244 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+class Messages {
+    constructor(messageService, el, cd) {
+        this.messageService = messageService;
+        this.el = el;
+        this.cd = cd;
+        this.closable = true;
+        this.enableService = true;
+        this.escape = true;
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '200ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.valueChange = new EventEmitter();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+        if (this.messageService && this.enableService && !this.contentTemplate) {
+            this.messageSubscription = this.messageService.messageObserver.subscribe((messages) => {
+                if (messages) {
+                    if (messages instanceof Array) {
+                        let filteredMessages = messages.filter(m => this.key === m.key);
+                        this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];
+                    }
+                    else if (this.key === messages.key) {
+                        this.value = this.value ? [...this.value, ...[messages]] : [messages];
+                    }
+                    this.cd.markForCheck();
+                }
+            });
+            this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+                if (key) {
+                    if (this.key === key) {
+                        this.value = null;
+                    }
+                }
+                else {
+                    this.value = null;
+                }
+                this.cd.markForCheck();
+            });
+        }
+    }
+    hasMessages() {
+        let parentEl = this.el.nativeElement.parentElement;
+        if (parentEl && parentEl.offsetParent) {
+            return this.contentTemplate != null || this.value && this.value.length > 0;
+        }
+        return false;
+    }
+    clear() {
+        this.value = [];
+        this.valueChange.emit(this.value);
+    }
+    removeMessage(i) {
+        this.value = this.value.filter((msg, index) => index !== i);
+        this.valueChange.emit(this.value);
+    }
+    get icon() {
+        const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);
+        if (this.hasMessages()) {
+            switch (severity) {
+                case 'success':
+                    return 'pi-check';
+                    break;
+                case 'info':
+                    return 'pi-info-circle';
+                    break;
+                case 'error':
+                    return 'pi-times';
+                    break;
+                case 'warn':
+                    return 'pi-exclamation-triangle';
+                    break;
+                default:
+                    return 'pi-info-circle';
+                    break;
+            }
+        }
+        return null;
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+    }
+}
+Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, deps: [{ token: i1.MessageService, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Messages.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Messages, selector: "p-messages", inputs: { value: "value", closable: "closable", style: "style", styleClass: "styleClass", enableService: "enableService", key: "key", escape: "escape", severity: "severity", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, isInline: true, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('messageAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Messages, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-messages', template: `
+        <div class="p-messages p-component" role="alert" [ngStyle]="style" [class]="styleClass">
+            <ng-container *ngIf="!contentTemplate; else staticMessage">
+                <div *ngFor="let msg of value; let i=index" [ngClass]="'p-message p-message-' + msg.severity" role="alert"
+                    [@messageAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}">
+                    <div class="p-message-wrapper">
+                       <span [class]="'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')" [ngClass]="{'pi-info-circle': msg.severity === 'info',
+                            'pi-check': msg.severity === 'success',
+                            'pi-exclamation-triangle': msg.severity === 'warn',
+                            'pi-times-circle': msg.severity === 'error'}"></span>
+                        <ng-container *ngIf="!escape; else escapeOut">
+                            <span *ngIf="msg.summary" class="p-message-summary" [innerHTML]="msg.summary"></span>
+                            <span *ngIf="msg.detail" class="p-message-detail" [innerHTML]="msg.detail"></span>
+                        </ng-container>
+                        <ng-template #escapeOut>
+                            <span *ngIf="msg.summary" class="p-message-summary">{{msg.summary}}</span>
+                            <span *ngIf="msg.detail" class="p-message-detail">{{msg.detail}}</span>
+                        </ng-template>
+                        <button class="p-message-close p-link" (click)="removeMessage(i)" *ngIf="closable" type="button" pRipple>
+                            <i class="p-message-close-icon pi pi-times"></i>
+                        </button>
+                    </div>
+                </div>
+            </ng-container>
+            <ng-template #staticMessage>
+                <div [ngClass]="'p-message p-message-' + severity" role="alert">
+                    <div class="p-message-wrapper">
+                        <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                    </div>
+                </div>
+            </ng-template>
+            </div>
+    `, animations: [
+                        trigger('messageAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'translateY(-25%)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-message-wrapper{display:flex;align-items:center}.p-message-close{display:flex;align-items:center;justify-content:center}.p-message-close.p-link{margin-left:auto;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.MessageService, decorators: [{
+                    type: Optional
+                }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], closable: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], enableService: [{
+                type: Input
+            }], key: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], valueChange: [{
+                type: Output
+            }] } });
+class MessagesModule {
+}
+MessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, declarations: [Messages], imports: [CommonModule, RippleModule], exports: [Messages] });
+MessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MessagesModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Messages],
+                    declarations: [Messages]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Messages, MessagesModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-messages.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-messages.mjs","sources":["../../src/app/components/messages/messages.ts","../../src/app/components/messages/primeng-messages.ts"],"sourcesContent":["import {NgModule,Component,OnDestroy,Input,Output,EventEmitter,AfterContentInit,Optional,ElementRef,ChangeDetectionStrategy,ContentChildren,QueryList,TemplateRef, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {Message,PrimeTemplate,MessageService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n    selector: 'p-messages',\n    template: `\n        <div class=\"p-messages p-component\" role=\"alert\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ng-container *ngIf=\"!contentTemplate; else staticMessage\">\n                <div *ngFor=\"let msg of value; let i=index\" [ngClass]=\"'p-message p-message-' + msg.severity\" role=\"alert\"\n                    [@messageAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\">\n                    <div class=\"p-message-wrapper\">\n                       <span [class]=\"'p-message-icon pi' + (msg.icon ? ' ' + msg.icon : '')\" [ngClass]=\"{'pi-info-circle': msg.severity === 'info',\n                            'pi-check': msg.severity === 'success',\n                            'pi-exclamation-triangle': msg.severity === 'warn',\n                            'pi-times-circle': msg.severity === 'error'}\"></span>\n                        <ng-container *ngIf=\"!escape; else escapeOut\">\n                            <span *ngIf=\"msg.summary\" class=\"p-message-summary\" [innerHTML]=\"msg.summary\"></span>\n                            <span *ngIf=\"msg.detail\" class=\"p-message-detail\" [innerHTML]=\"msg.detail\"></span>\n                        </ng-container>\n                        <ng-template #escapeOut>\n                            <span *ngIf=\"msg.summary\" class=\"p-message-summary\">{{msg.summary}}</span>\n                            <span *ngIf=\"msg.detail\" class=\"p-message-detail\">{{msg.detail}}</span>\n                        </ng-template>\n                        <button class=\"p-message-close p-link\" (click)=\"removeMessage(i)\" *ngIf=\"closable\" type=\"button\" pRipple>\n                            <i class=\"p-message-close-icon pi pi-times\"></i>\n                        </button>\n                    </div>\n                </div>\n            </ng-container>\n            <ng-template #staticMessage>\n                <div [ngClass]=\"'p-message p-message-' + severity\" role=\"alert\">\n                    <div class=\"p-message-wrapper\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </div>\n                </div>\n            </ng-template>\n            </div>\n    `,\n    animations: [\n        trigger('messageAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'translateY(-25%)'}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ height: 0, marginTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, overflow: 'hidden', opacity: 0 }))\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./messages.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Messages implements AfterContentInit, OnDestroy {\n\n    @Input() value: Message[];\n\n    @Input() closable: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() enableService: boolean = true;\n\n    @Input() key: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() severity: string;\n\n    @Input() showTransitionOptions: string = '300ms ease-out';\n\n    @Input() hideTransitionOptions: string = '200ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() valueChange: EventEmitter<Message[]> = new EventEmitter<Message[]>();\n\n    messageSubscription: Subscription;\n\n    clearSubscription: Subscription;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(@Optional() public messageService: MessageService, public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n\n        if (this.messageService && this.enableService && !this.contentTemplate) {\n            this.messageSubscription = this.messageService.messageObserver.subscribe((messages: any) => {\n                if (messages) {\n                    if (messages instanceof Array) {\n                        let filteredMessages = messages.filter(m => this.key === m.key);\n                        this.value = this.value ? [...this.value, ...filteredMessages] : [...filteredMessages];\n                    }\n                    else if (this.key === messages.key) {\n                        this.value = this.value ? [...this.value, ...[messages]] : [messages];\n                    }\n\n                    this.cd.markForCheck();\n                }\n            });\n\n            this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n                if (key) {\n                    if (this.key === key) {\n                        this.value = null;\n                    }\n                }\n                else {\n                    this.value = null;\n                }\n\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    hasMessages() {\n        let parentEl = this.el.nativeElement.parentElement;\n        if (parentEl && parentEl.offsetParent) {\n            return this.contentTemplate != null || this.value && this.value.length > 0;\n        }\n\n        return false;\n    }\n\n    clear() {\n        this.value = [];\n        this.valueChange.emit(this.value);\n    }\n\n    removeMessage(i: number) {\n        this.value = this.value.filter((msg, index) => index !== i);\n        this.valueChange.emit(this.value);\n    }\n\n    get icon(): string {\n        const severity = this.severity || (this.hasMessages() ? this.value[0].severity : null);\n\n        if (this.hasMessages()) {\n            switch(severity) {\n                case 'success':\n                    return 'pi-check';\n                break;\n\n                case 'info':\n                    return 'pi-info-circle';\n                break;\n\n                case 'error':\n                    return 'pi-times';\n                break;\n\n                case 'warn':\n                    return 'pi-exclamation-triangle';\n                break;\n\n                default:\n                    return 'pi-info-circle';\n                break;\n            }\n        }\n\n        return null;\n    }\n\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Messages],\n    declarations: [Messages]\n})\nexport class MessagesModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1167 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, Footer, Header, PrimeTemplate, SharedModule } from 'primeng/api';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import * as i4 from '@angular/cdk/scrolling';
+import { ScrollingModule } from '@angular/cdk/scrolling';
+import * as i5 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+const MULTISELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => MultiSelect),
+    multi: true
+};
+class MultiSelectItem {
+    constructor() {
+        this.onClick = new EventEmitter();
+        this.onKeydown = new EventEmitter();
+    }
+    onOptionClick(event) {
+        this.onClick.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+    onOptionKeydown(event) {
+        this.onKeydown.emit({
+            originalEvent: event,
+            option: this.option
+        });
+    }
+}
+MultiSelectItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
+MultiSelectItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelectItem, selector: "p-multiSelectItem", inputs: { option: "option", selected: "selected", label: "label", disabled: "disabled", itemSize: "itemSize", template: "template" }, outputs: { onClick: "onClick", onKeydown: "onKeydown" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `, isInline: true, directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-multiSelectItem',
+                    template: `
+        <li class="p-multiselect-item" (click)="onOptionClick($event)" (keydown)="onOptionKeydown($event)" [attr.aria-label]="label"
+            [attr.tabindex]="disabled ? null : '0'" [ngStyle]="{'height': itemSize + 'px'}"
+            [ngClass]="{'p-highlight': selected, 'p-disabled': disabled}" pRipple>
+            <div class="p-checkbox p-component">
+                <div class="p-checkbox-box" [ngClass]="{'p-highlight': selected}">
+                    <span class="p-checkbox-icon" [ngClass]="{'pi pi-check': selected}"></span>
+                </div>
+            </div>
+            <span *ngIf="!template">{{label}}</span>
+            <ng-container *ngTemplateOutlet="template; context: {$implicit: option}"></ng-container>
+        </li>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], propDecorators: { option: [{
+                type: Input
+            }], selected: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onKeydown: [{
+                type: Output
+            }] } });
+class MultiSelect {
+    constructor(el, renderer, cd, filterService, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.filter = true;
+        this.displaySelectedLabel = true;
+        this.maxSelectedLabels = 3;
+        this.selectedItemsLabel = 'ellipsis';
+        this.showToggleAll = true;
+        this.emptyFilterMessage = '';
+        this.emptyMessage = '';
+        this.resetFilterOnHide = false;
+        this.dropdownIcon = 'pi pi-chevron-down';
+        this.optionGroupChildren = "items";
+        this.showHeader = true;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.filterMatchMode = "contains";
+        this.tooltip = '';
+        this.tooltipPosition = 'right';
+        this.tooltipPositionStyle = 'absolute';
+        this.autofocusFilter = true;
+        this.display = 'comma';
+        this.onChange = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onPanelShow = new EventEmitter();
+        this.onPanelHide = new EventEmitter();
+        this.scrollHeight = '200px';
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    set defaultLabel(val) {
+        this._defaultLabel = val;
+        this.updateLabel();
+    }
+    get defaultLabel() {
+        return this._defaultLabel;
+    }
+    set placeholder(val) {
+        this._placeholder = val;
+        this.updateLabel();
+    }
+    get placeholder() {
+        return this._placeholder;
+    }
+    get options() {
+        return this._options;
+    }
+    set options(val) {
+        this._options = val;
+        this.updateLabel();
+    }
+    get filterValue() {
+        return this._filterValue;
+    }
+    set filterValue(val) {
+        this._filterValue = val;
+        this.activateFilter();
+    }
+    ngOnInit() {
+        this.updateLabel();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'group':
+                    this.groupTemplate = item.template;
+                    break;
+                case 'selectedItems':
+                    this.selectedItemsTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.overlayVisible) {
+            this.show();
+        }
+    }
+    ngAfterViewChecked() {
+        if (this.filtered) {
+            this.alignOverlay();
+            this.filtered = false;
+        }
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    getOptionGroupLabel(optionGroup) {
+        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);
+    }
+    getOptionGroupChildren(optionGroup) {
+        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
+    }
+    isOptionDisabled(option) {
+        let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+        return (disabled || (this.maxSelectionLimitReached && !this.isSelected(option)));
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateLabel();
+        this.updateFilledState();
+        this.checkSelectionLimit();
+        this.cd.markForCheck();
+    }
+    checkSelectionLimit() {
+        if (this.selectionLimit && (this.value && this.value.length === this.selectionLimit)) {
+            this.maxSelectionLimitReached = true;
+        }
+        else {
+            this.maxSelectionLimitReached = false;
+        }
+    }
+    updateFilledState() {
+        this.filled = (this.value && this.value.length > 0);
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onOptionClick(event) {
+        let option = event.option;
+        if (this.isOptionDisabled(option)) {
+            return;
+        }
+        let optionValue = this.getOptionValue(option);
+        let selectionIndex = this.findSelectionIndex(optionValue);
+        if (selectionIndex != -1) {
+            this.value = this.value.filter((val, i) => i != selectionIndex);
+            if (this.selectionLimit) {
+                this.maxSelectionLimitReached = false;
+            }
+        }
+        else {
+            if (!this.selectionLimit || (!this.value || this.value.length < this.selectionLimit)) {
+                this.value = [...this.value || [], optionValue];
+            }
+            this.checkSelectionLimit();
+        }
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event.originalEvent, value: this.value, itemValue: optionValue });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isSelected(option) {
+        return this.findSelectionIndex(this.getOptionValue(option)) != -1;
+    }
+    findSelectionIndex(val) {
+        let index = -1;
+        if (this.value) {
+            for (let i = 0; i < this.value.length; i++) {
+                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    get toggleAllDisabled() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return true;
+        }
+        else {
+            for (let option of optionsToRender) {
+                if (!this.isOptionDisabled(option))
+                    return false;
+            }
+            return true;
+        }
+    }
+    toggleAll(event) {
+        if (this.disabled || this.toggleAllDisabled || this.readonly) {
+            return;
+        }
+        let allChecked = this.allChecked;
+        if (allChecked)
+            this.uncheckAll();
+        else
+            this.checkAll();
+        this.onModelChange(this.value);
+        this.onChange.emit({ originalEvent: event, value: this.value });
+        this.updateFilledState();
+        this.updateLabel();
+        event.preventDefault();
+    }
+    checkAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                let subOptions = this.getOptionGroupChildren(opt);
+                if (subOptions) {
+                    subOptions.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    uncheckAll() {
+        let optionsToRender = this.optionsToRender;
+        let val = [];
+        optionsToRender.forEach(opt => {
+            if (!this.group) {
+                let optionDisabled = this.isOptionDisabled(opt);
+                if (optionDisabled && this.isSelected(opt)) {
+                    val.push(this.getOptionValue(opt));
+                }
+            }
+            else {
+                if (opt.items) {
+                    opt.items.forEach(option => {
+                        let optionDisabled = this.isOptionDisabled(option);
+                        if (optionDisabled && this.isSelected(option)) {
+                            val.push(this.getOptionValue(option));
+                        }
+                    });
+                }
+            }
+        });
+        this.value = val;
+    }
+    show() {
+        if (!this.overlayVisible) {
+            this.overlayVisible = true;
+        }
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                this.appendOverlay();
+                if (this.autoZIndex) {
+                    ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                }
+                this.alignOverlay();
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                if (this.filterInputChild && this.filterInputChild.nativeElement) {
+                    this.preventModelTouched = true;
+                    if (this.autofocusFilter) {
+                        this.filterInputChild.nativeElement.focus();
+                    }
+                }
+                this.onPanelShow.emit();
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                DomHandler.appendChild(this.overlay, this.appendTo);
+            if (!this.overlay.style.minWidth) {
+                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';
+            }
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.overlay && this.appendTo) {
+            this.el.nativeElement.appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.overlay) {
+            if (this.appendTo)
+                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);
+            else
+                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.unbindDocumentClickListener();
+        if (this.resetFilterOnHide) {
+            this.filterInputChild.nativeElement.value = '';
+            this._filterValue = null;
+            this._filteredOptions = null;
+        }
+        this.onPanelHide.emit();
+        this.cd.markForCheck();
+    }
+    close(event) {
+        this.hide();
+        event.preventDefault();
+        event.stopPropagation();
+    }
+    onMouseclick(event, input) {
+        if (this.disabled || this.readonly || event.target.isSameNode(this.accessibleViewChild.nativeElement)) {
+            return;
+        }
+        this.onClick.emit(event);
+        if (!this.isOverlayClick(event) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else {
+                input.focus();
+                this.show();
+            }
+        }
+    }
+    removeChip(chip, event) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));
+        this.onModelChange(this.value);
+        this.checkSelectionLimit();
+        this.onChange.emit({ originalEvent: event, value: this.value, itemValue: chip });
+        this.updateLabel();
+        this.updateFilledState();
+    }
+    isOverlayClick(event) {
+        let targetNode = event.target;
+        return this.overlay ? (this.overlay.isSameNode(targetNode) || this.overlay.contains(targetNode)) : false;
+    }
+    isOutsideClicked(event) {
+        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || this.isOverlayClick(event));
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit({ originalEvent: event });
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.onBlur.emit({ originalEvent: event });
+        if (!this.preventModelTouched) {
+            this.onModelTouched();
+        }
+        this.preventModelTouched = false;
+    }
+    onOptionKeydown(event) {
+        if (this.readonly) {
+            return;
+        }
+        switch (event.originalEvent.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(event.originalEvent.target.parentElement);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.originalEvent.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onOptionClick(event);
+                event.originalEvent.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];
+        else
+            return null;
+    }
+    onKeydown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //escape
+            case 27:
+                this.hide();
+                break;
+        }
+    }
+    updateLabel() {
+        if (this.value && this.options && this.value.length && this.displaySelectedLabel) {
+            let label = '';
+            for (let i = 0; i < this.value.length; i++) {
+                let itemLabel = this.findLabelByValue(this.value[i]);
+                if (itemLabel) {
+                    if (label.length > 0) {
+                        label = label + ', ';
+                    }
+                    label = label + itemLabel;
+                }
+            }
+            if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {
+                this.valuesAsString = label;
+            }
+            else {
+                let pattern = /{(.*?)}/;
+                if (pattern.test(this.selectedItemsLabel)) {
+                    this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');
+                }
+                else {
+                    this.valuesAsString = this.selectedItemsLabel;
+                }
+            }
+        }
+        else {
+            this.valuesAsString = this.placeholder || this.defaultLabel;
+        }
+    }
+    findLabelByValue(val) {
+        if (this.group) {
+            let label = null;
+            for (let i = 0; i < this.options.length; i++) {
+                let subOptions = this.getOptionGroupChildren(this.options[i]);
+                if (subOptions) {
+                    label = this.searchLabelByValue(val, subOptions);
+                    if (label) {
+                        break;
+                    }
+                }
+            }
+            return label;
+        }
+        else {
+            return this.searchLabelByValue(val, this.options);
+        }
+    }
+    searchLabelByValue(val, options) {
+        let label = null;
+        for (let i = 0; i < options.length; i++) {
+            let option = options[i];
+            let optionValue = this.getOptionValue(option);
+            if (val == null && optionValue == null || ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                label = this.getOptionLabel(option);
+                break;
+            }
+        }
+        return label;
+    }
+    get allChecked() {
+        let optionsToRender = this.optionsToRender;
+        if (!optionsToRender || optionsToRender.length === 0) {
+            return false;
+        }
+        else {
+            let selectedDisabledItemsLength = 0;
+            let unselectedDisabledItemsLength = 0;
+            let selectedEnabledItemsLength = 0;
+            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;
+            for (let option of optionsToRender) {
+                if (!this.group) {
+                    let disabled = this.isOptionDisabled(option);
+                    let selected = this.isSelected(option);
+                    if (disabled) {
+                        if (selected)
+                            selectedDisabledItemsLength++;
+                        else
+                            unselectedDisabledItemsLength++;
+                    }
+                    else {
+                        if (selected)
+                            selectedEnabledItemsLength++;
+                        else
+                            return false;
+                    }
+                }
+                else {
+                    for (let opt of this.getOptionGroupChildren(option)) {
+                        let disabled = this.isOptionDisabled(opt);
+                        let selected = this.isSelected(opt);
+                        if (disabled) {
+                            if (selected)
+                                selectedDisabledItemsLength++;
+                            else
+                                unselectedDisabledItemsLength++;
+                        }
+                        else {
+                            if (selected)
+                                selectedEnabledItemsLength++;
+                            else {
+                                return false;
+                            }
+                        }
+                        visibleOptionsLength++;
+                    }
+                }
+            }
+            return (visibleOptionsLength === selectedDisabledItemsLength
+                || visibleOptionsLength === selectedEnabledItemsLength
+                || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));
+        }
+    }
+    get optionsToRender() {
+        return this._filteredOptions || this.options;
+    }
+    get emptyOptions() {
+        let optionsToRender = this.optionsToRender;
+        return !optionsToRender || optionsToRender.length === 0;
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyFilterMessageLabel() {
+        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);
+    }
+    hasFilter() {
+        return this._filterValue && this._filterValue.trim().length > 0;
+    }
+    onFilterInputChange(event) {
+        this._filterValue = event.target.value;
+        this.activateFilter();
+        this.onFilter.emit({ originalEvent: event, filter: this._filterValue });
+        this.cd.detectChanges();
+        this.alignOverlay();
+    }
+    activateFilter() {
+        if (this.hasFilter() && this._options) {
+            let searchFields = (this.filterBy || this.optionLabel || 'label').split(',');
+            if (this.group) {
+                let searchFields = (this.optionLabel || 'label').split(',');
+                let filteredGroups = [];
+                for (let optgroup of this.options) {
+                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+                    if (filteredSubOptions && filteredSubOptions.length) {
+                        filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });
+                    }
+                }
+                this._filteredOptions = filteredGroups;
+            }
+            else {
+                this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);
+            }
+        }
+        else {
+            this._filteredOptions = null;
+        }
+    }
+    onHeaderCheckboxFocus() {
+        this.headerCheckboxFocus = true;
+    }
+    onHeaderCheckboxBlur() {
+        this.headerCheckboxFocus = false;
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {
+                if (this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        if (!DomHandler.isAndroid()) {
+            this.hide();
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+        this.onModelTouched();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+        }
+        this.restoreOverlayAppend();
+        this.onOverlayHide();
+    }
+}
+MultiSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i3.FilterService }, { token: i3.PrimeNGConfig }, { token: i3.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+MultiSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: MultiSelect, selector: "p-multiSelect", inputs: { style: "style", styleClass: "styleClass", panelStyle: "panelStyle", panelStyleClass: "panelStyleClass", inputId: "inputId", disabled: "disabled", readonly: "readonly", group: "group", filter: "filter", filterPlaceHolder: "filterPlaceHolder", filterLocale: "filterLocale", overlayVisible: "overlayVisible", tabindex: "tabindex", appendTo: "appendTo", dataKey: "dataKey", name: "name", ariaLabelledBy: "ariaLabelledBy", displaySelectedLabel: "displaySelectedLabel", maxSelectedLabels: "maxSelectedLabels", selectionLimit: "selectionLimit", selectedItemsLabel: "selectedItemsLabel", showToggleAll: "showToggleAll", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", resetFilterOnHide: "resetFilterOnHide", dropdownIcon: "dropdownIcon", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", showHeader: "showHeader", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", filterBy: "filterBy", virtualScroll: "virtualScroll", itemSize: "itemSize", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", autofocusFilter: "autofocusFilter", display: "display", scrollHeight: "scrollHeight", defaultLabel: "defaultLabel", placeholder: "placeholder", options: "options", filterValue: "filterValue" }, outputs: { onChange: "onChange", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onClick: "onClick", onPanelShow: "onPanelShow", onPanelHide: "onPanelHide" }, host: { properties: { "class.p-inputwrapper-filled": "filled", "class.p-inputwrapper-focus": "focus || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [MULTISELECT_VALUE_ACCESSOR], queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "filterInputChild", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "accessibleViewChild", first: true, predicate: ["in"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"], components: [{ type: MultiSelectItem, selector: "p-multiSelectItem", inputs: ["option", "selected", "label", "disabled", "itemSize", "template"], outputs: ["onClick", "onKeydown"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.Ripple, selector: "[pRipple]" }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-multiSelect', template: `
+        <div #container [ngClass]="{'p-multiselect p-component':true,
+            'p-multiselect-open':overlayVisible,
+            'p-multiselect-chip': display === 'chip',
+            'p-focus':focus,
+            'p-disabled': disabled}" [ngStyle]="style" [class]="styleClass"
+            (click)="onMouseclick($event,in)">
+            <div class="p-hidden-accessible">
+                <input #in type="text" readonly="readonly" [attr.id]="inputId" [attr.name]="name" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)"
+                       [disabled]="disabled" [attr.tabindex]="tabindex" (keydown)="onKeydown($event)" aria-haspopup="listbox" [attr.aria-expanded]="overlayVisible"
+                       [attr.aria-labelledby]="ariaLabelledBy" role="listbox">
+            </div>
+            <div class="p-multiselect-label-container" [pTooltip]="tooltip" [tooltipPosition]="tooltipPosition" [positionStyle]="tooltipPositionStyle" [tooltipStyleClass]="tooltipStyleClass">
+                <div class="p-multiselect-label" [ngClass]="{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}">
+                    <ng-container *ngIf="!selectedItemsTemplate">
+                        <ng-container *ngIf="display === 'comma'">{{valuesAsString || 'empty'}}</ng-container>
+                        <ng-container *ngIf="display === 'chip'">
+                            <div #token *ngFor="let item of value; let i = index;" class="p-multiselect-token">
+                                <span class="p-multiselect-token-label">{{findLabelByValue(item)}}</span>
+                                <span *ngIf="!disabled" class="p-multiselect-token-icon pi pi-times-circle" (click)="removeChip(item, $event)"></span>
+                            </div>
+                            <ng-container *ngIf="!value || value.length === 0">{{placeholder || defaultLabel || 'empty'}}</ng-container>
+                        </ng-container>
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="selectedItemsTemplate; context: {$implicit: value}"></ng-container>
+                </div>
+            </div>
+            <div [ngClass]="{'p-multiselect-trigger':true}">
+                <span class="p-multiselect-trigger-icon" [ngClass]="dropdownIcon"></span>
+            </div>
+            <div *ngIf="overlayVisible" [ngClass]="['p-multiselect-panel p-component']" [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)"onOverlayAnimationEnd
+                (@overlayAnimation.done)="onOverlayAnimationEnd($event)" [ngStyle]="panelStyle" [class]="panelStyleClass" (keydown)="onKeydown($event)" (click)="onOverlayClick($event)" >
+                <div class="p-multiselect-header" *ngIf="showHeader">
+                    <ng-content select="p-header"></ng-content>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                    <div class="p-checkbox p-component" *ngIf="showToggleAll && !selectionLimit" [ngClass]="{'p-checkbox-disabled': disabled || toggleAllDisabled}">
+                        <div class="p-hidden-accessible">
+                            <input type="checkbox" readonly="readonly" [checked]="allChecked" (focus)="onHeaderCheckboxFocus()" (blur)="onHeaderCheckboxBlur()" (keydown.space)="toggleAll($event)" [disabled]="disabled || toggleAllDisabled">
+                        </div>
+                        <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allChecked" [ngClass]="{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}" (click)="toggleAll($event)">
+                            <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':allChecked}"></span>
+                        </div>
+                    </div>
+                    <div class="p-multiselect-filter-container" *ngIf="filter">
+                        <input #filterInput type="text" role="textbox" [value]="filterValue||''" (input)="onFilterInputChange($event)" class="p-multiselect-filter p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="filterPlaceHolder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-multiselect-filter-icon pi pi-search"></span>
+                    </div>
+                    <button class="p-multiselect-close p-link" type="button" (click)="close($event)" pRipple>
+                        <span class="p-multiselect-close-icon pi pi-times"></span>
+                    </button>
+                </div>
+                <div class="p-multiselect-items-wrapper" [style.max-height]="virtualScroll ? 'auto' : (scrollHeight||'auto')">
+                    <ul class="p-multiselect-items p-component" [ngClass]="{'p-multiselect-virtualscroll': virtualScroll}" role="listbox" aria-multiselectable="true">
+                        <ng-container *ngIf="group">
+                            <ng-template ngFor let-optgroup [ngForOf]="optionsToRender">
+                                <li class="p-multiselect-item-group">
+                                    <span *ngIf="!groupTemplate">{{getOptionGroupLabel(optgroup)||'empty'}}</span>
+                                    <ng-container *ngTemplateOutlet="groupTemplate; context: {$implicit: optgroup}"></ng-container>
+                                </li>
+                                <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}"></ng-container>
+                            </ng-template>
+                        </ng-container>
+                        <ng-container *ngIf="!group">
+                            <ng-container *ngTemplateOutlet="itemslist; context: {$implicit: optionsToRender}"></ng-container>
+                        </ng-container>
+                        <ng-template #itemslist let-optionsToDisplay let-selectedOption="selectedOption">
+                            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                                <ng-template ngFor let-option let-i="index" [ngForOf]="optionsToDisplay">
+                                    <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate"></p-multiSelectItem>
+                                </ng-template>
+                            </ng-container>
+                            <ng-template #virtualScrollList>
+                                <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" [itemSize]="itemSize" *ngIf="virtualScroll && !emptyOptions">
+                                    <ng-container *cdkVirtualFor="let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd">
+                                        <p-multiSelectItem [option]="option" [selected]="isSelected(option)" [label]="getOptionLabel(option)" [disabled]="isOptionDisabled(option)" (onClick)="onOptionClick($event)" (onKeydown)="onOptionKeydown($event)"
+                                            [template]="itemTemplate" [itemSize]="itemSize"></p-multiSelectItem>
+                                    </ng-container>
+                                </cdk-virtual-scroll-viewport>
+                            </ng-template>
+                            <li *ngIf="hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
+                                    {{emptyFilterMessageLabel}}
+                                </ng-container>
+                                <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
+                            </li>
+                            <li *ngIf="!hasFilter() && emptyOptions" class="p-multiselect-empty-message">
+                                <ng-container *ngIf="!emptyTemplate; else empty">
+                                    {{emptyMessageLabel}}
+                                </ng-container>
+                                <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
+                            </li>
+                        </ng-template>
+                    </ul>
+                </div>
+                <div class="p-multiselect-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled',
+                        '[class.p-inputwrapper-focus]': 'focus || overlayVisible'
+                    }, providers: [MULTISELECT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-multiselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-multiselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-multiselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-multiselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-multiselect-label-empty{overflow:hidden;visibility:hidden}.p-multiselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-multiselect-token-icon{cursor:pointer}.p-multiselect .p-multiselect-panel{min-width:100%}.p-multiselect-panel{position:absolute;top:0;left:0}.p-multiselect-items-wrapper{overflow:auto}.p-multiselect-items{margin:0;padding:0;list-style-type:none}.p-multiselect-item{cursor:pointer;display:flex;align-items:center;font-weight:normal;white-space:nowrap;position:relative;overflow:hidden}.p-multiselect-header{display:flex;align-items:center;justify-content:space-between}.p-multiselect-filter-container{position:relative;flex:1 1 auto}.p-multiselect-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-multiselect-filter-container .p-inputtext{width:100%}.p-multiselect-close{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative}.p-fluid .p-multiselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i3.FilterService }, { type: i3.PrimeNGConfig }, { type: i3.OverlayService }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], group: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterPlaceHolder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], overlayVisible: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], displaySelectedLabel: [{
+                type: Input
+            }], maxSelectedLabels: [{
+                type: Input
+            }], selectionLimit: [{
+                type: Input
+            }], selectedItemsLabel: [{
+                type: Input
+            }], showToggleAll: [{
+                type: Input
+            }], emptyFilterMessage: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], resetFilterOnHide: [{
+                type: Input
+            }], dropdownIcon: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], optionGroupLabel: [{
+                type: Input
+            }], optionGroupChildren: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], autofocusFilter: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], filterInputChild: [{
+                type: ViewChild,
+                args: ['filterInput']
+            }], accessibleViewChild: [{
+                type: ViewChild,
+                args: ['in']
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], headerFacet: [{
+                type: ContentChild,
+                args: [Header]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onChange: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onPanelShow: [{
+                type: Output
+            }], onPanelHide: [{
+                type: Output
+            }], scrollHeight: [{
+                type: Input
+            }], defaultLabel: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], filterValue: [{
+                type: Input
+            }] } });
+class MultiSelectModule {
+}
+MultiSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+MultiSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, declarations: [MultiSelect, MultiSelectItem], imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], exports: [MultiSelect, SharedModule, ScrollingModule] });
+MultiSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, imports: [[CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: MultiSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, ScrollingModule, TooltipModule, RippleModule],
+                    exports: [MultiSelect, SharedModule, ScrollingModule],
+                    declarations: [MultiSelect, MultiSelectItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { MULTISELECT_VALUE_ACCESSOR, MultiSelect, MultiSelectItem, MultiSelectModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-multiselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-multiselect.mjs","sources":["../../src/app/components/multiselect/multiselect.ts","../../src/app/components/multiselect/primeng-multiselect.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, Input, Output, Renderer2, EventEmitter,\n    forwardRef, ViewChild, ChangeDetectorRef, TemplateRef, ContentChildren, QueryList, ContentChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { SharedModule, PrimeTemplate, Footer, Header, FilterService, PrimeNGConfig, TranslationKeys, OverlayService } from 'primeng/api';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { RippleModule } from 'primeng/ripple';\n\nexport const MULTISELECT_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MultiSelect),\n  multi: true\n};\n\n@Component({\n    selector: 'p-multiSelectItem',\n    template: `\n        <li class=\"p-multiselect-item\" (click)=\"onOptionClick($event)\" (keydown)=\"onOptionKeydown($event)\" [attr.aria-label]=\"label\"\n            [attr.tabindex]=\"disabled ? null : '0'\" [ngStyle]=\"{'height': itemSize + 'px'}\"\n            [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\" pRipple>\n            <div class=\"p-checkbox p-component\">\n                <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': selected}\">\n                    <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': selected}\"></span>\n                </div>\n            </div>\n            <span *ngIf=\"!template\">{{label}}</span>\n            <ng-container *ngTemplateOutlet=\"template; context: {$implicit: option}\"></ng-container>\n        </li>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class MultiSelectItem {\n\n    @Input() option: any;\n\n    @Input() selected: boolean;\n\n    @Input() label: any;\n\n    @Input() disabled: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onKeydown: EventEmitter<any> = new EventEmitter();\n\n    onOptionClick(event: Event) {\n        this.onClick.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n\n    onOptionKeydown(event: Event) {\n        this.onKeydown.emit({\n            originalEvent: event,\n            option: this.option\n        });\n    }\n}\n\n@Component({\n    selector: 'p-multiSelect',\n    template: `\n        <div #container [ngClass]=\"{'p-multiselect p-component':true,\n            'p-multiselect-open':overlayVisible,\n            'p-multiselect-chip': display === 'chip',\n            'p-focus':focus,\n            'p-disabled': disabled}\" [ngStyle]=\"style\" [class]=\"styleClass\"\n            (click)=\"onMouseclick($event,in)\">\n            <div class=\"p-hidden-accessible\">\n                <input #in type=\"text\" readonly=\"readonly\" [attr.id]=\"inputId\" [attr.name]=\"name\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\"\n                       [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\" (keydown)=\"onKeydown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\"\n                       [attr.aria-labelledby]=\"ariaLabelledBy\" role=\"listbox\">\n            </div>\n            <div class=\"p-multiselect-label-container\" [pTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition\" [positionStyle]=\"tooltipPositionStyle\" [tooltipStyleClass]=\"tooltipStyleClass\">\n                <div class=\"p-multiselect-label\" [ngClass]=\"{'p-placeholder': valuesAsString === (defaultLabel || placeholder), 'p-multiselect-label-empty': ((valuesAsString == null || valuesAsString.length === 0) && (placeholder == null || placeholder.length === 0))}\">\n                    <ng-container *ngIf=\"!selectedItemsTemplate\">\n                        <ng-container *ngIf=\"display === 'comma'\">{{valuesAsString || 'empty'}}</ng-container>\n                        <ng-container *ngIf=\"display === 'chip'\">\n                            <div #token *ngFor=\"let item of value; let i = index;\" class=\"p-multiselect-token\">\n                                <span class=\"p-multiselect-token-label\">{{findLabelByValue(item)}}</span>\n                                <span *ngIf=\"!disabled\" class=\"p-multiselect-token-icon pi pi-times-circle\" (click)=\"removeChip(item, $event)\"></span>\n                            </div>\n                            <ng-container *ngIf=\"!value || value.length === 0\">{{placeholder || defaultLabel || 'empty'}}</ng-container>\n                        </ng-container>\n                    </ng-container>\n                    <ng-container *ngTemplateOutlet=\"selectedItemsTemplate; context: {$implicit: value}\"></ng-container>\n                </div>\n            </div>\n            <div [ngClass]=\"{'p-multiselect-trigger':true}\">\n                <span class=\"p-multiselect-trigger-icon\" [ngClass]=\"dropdownIcon\"></span>\n            </div>\n            <div *ngIf=\"overlayVisible\" [ngClass]=\"['p-multiselect-panel p-component']\" [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"onOverlayAnimationEnd\n                (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\" (keydown)=\"onKeydown($event)\" (click)=\"onOverlayClick($event)\" >\n                <div class=\"p-multiselect-header\" *ngIf=\"showHeader\">\n                    <ng-content select=\"p-header\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <div class=\"p-checkbox p-component\" *ngIf=\"showToggleAll && !selectionLimit\" [ngClass]=\"{'p-checkbox-disabled': disabled || toggleAllDisabled}\">\n                        <div class=\"p-hidden-accessible\">\n                            <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\" [disabled]=\"disabled || toggleAllDisabled\">\n                        </div>\n                        <div class=\"p-checkbox-box\" role=\"checkbox\" [attr.aria-checked]=\"allChecked\" [ngClass]=\"{'p-highlight':allChecked, 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled}\" (click)=\"toggleAll($event)\">\n                            <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n                        </div>\n                    </div>\n                    <div class=\"p-multiselect-filter-container\" *ngIf=\"filter\">\n                        <input #filterInput type=\"text\" role=\"textbox\" [value]=\"filterValue||''\" (input)=\"onFilterInputChange($event)\" class=\"p-multiselect-filter p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n                        <span class=\"p-multiselect-filter-icon pi pi-search\"></span>\n                    </div>\n                    <button class=\"p-multiselect-close p-link\" type=\"button\" (click)=\"close($event)\" pRipple>\n                        <span class=\"p-multiselect-close-icon pi pi-times\"></span>\n                    </button>\n                </div>\n                <div class=\"p-multiselect-items-wrapper\" [style.max-height]=\"virtualScroll ? 'auto' : (scrollHeight||'auto')\">\n                    <ul class=\"p-multiselect-items p-component\" [ngClass]=\"{'p-multiselect-virtualscroll': virtualScroll}\" role=\"listbox\" aria-multiselectable=\"true\">\n                        <ng-container *ngIf=\"group\">\n                            <ng-template ngFor let-optgroup [ngForOf]=\"optionsToRender\">\n                                <li class=\"p-multiselect-item-group\">\n                                    <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                    <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                                </li>\n                                <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                            </ng-template>\n                        </ng-container>\n                        <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: optionsToRender}\"></ng-container>\n                        </ng-container>\n                        <ng-template #itemslist let-optionsToDisplay let-selectedOption=\"selectedOption\">\n                            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                                <ng-template ngFor let-option let-i=\"index\" [ngForOf]=\"optionsToDisplay\">\n                                    <p-multiSelectItem [option]=\"option\" [selected]=\"isSelected(option)\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\" (onClick)=\"onOptionClick($event)\" (onKeydown)=\"onOptionKeydown($event)\"\n                                            [template]=\"itemTemplate\"></p-multiSelectItem>\n                                </ng-template>\n                            </ng-container>\n                            <ng-template #virtualScrollList>\n                                <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !emptyOptions\">\n                                    <ng-container *cdkVirtualFor=\"let option of optionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                        <p-multiSelectItem [option]=\"option\" [selected]=\"isSelected(option)\" [label]=\"getOptionLabel(option)\" [disabled]=\"isOptionDisabled(option)\" (onClick)=\"onOptionClick($event)\" (onKeydown)=\"onOptionKeydown($event)\"\n                                            [template]=\"itemTemplate\" [itemSize]=\"itemSize\"></p-multiSelectItem>\n                                    </ng-container>\n                                </cdk-virtual-scroll-viewport>\n                            </ng-template>\n                            <li *ngIf=\"hasFilter() && emptyOptions\" class=\"p-multiselect-empty-message\">\n                                <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                                    {{emptyFilterMessageLabel}}\n                                </ng-container>\n                                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                            </li>\n                            <li *ngIf=\"!hasFilter() && emptyOptions\" class=\"p-multiselect-empty-message\">\n                                <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                    {{emptyMessageLabel}}\n                                </ng-container>\n                                <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                            </li>\n                        </ng-template>\n                    </ul>\n                </div>\n                <div class=\"p-multiselect-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focus || overlayVisible'\n    },\n    providers: [MULTISELECT_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./multiselect.css']\n})\nexport class MultiSelect implements OnInit,AfterViewInit,AfterContentInit,AfterViewChecked,OnDestroy,ControlValueAccessor {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() panelStyle: any;\n\n    @Input() panelStyleClass: string;\n\n    @Input() inputId: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() group: boolean;\n\n    @Input() filter: boolean = true;\n\n    @Input() filterPlaceHolder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() overlayVisible: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() appendTo: any;\n\n    @Input() dataKey: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() displaySelectedLabel: boolean = true;\n\n    @Input() maxSelectedLabels: number = 3;\n\n    @Input() selectionLimit: number;\n\n    @Input() selectedItemsLabel: string = 'ellipsis';\n\n    @Input() showToggleAll: boolean = true;\n\n    @Input() emptyFilterMessage: string = '';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() resetFilterOnHide: boolean = false;\n\n    @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() optionGroupLabel: string;\n\n    @Input() optionGroupChildren: string = \"items\";\n\n    @Input() showHeader: boolean = true;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() filterBy: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() itemSize: number;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() tooltip: string = '';\n\n    @Input() tooltipPosition: string = 'right';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() autofocusFilter: boolean = true;\n\n    @Input() display: string = 'comma';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('filterInput') filterInputChild: ElementRef;\n\n    @ViewChild('in') accessibleViewChild: ElementRef;\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChild(Header) headerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPanelShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPanelHide: EventEmitter<any> = new EventEmitter();\n\n    @Input() scrollHeight: string = '200px';\n\n    _defaultLabel: string;\n\n    @Input() set defaultLabel(val: string) {\n        this._defaultLabel = val;\n        this.updateLabel();\n    }\n\n    get defaultLabel(): string {\n        return this._defaultLabel;\n    }\n\n    _placeholder: string;\n\n    @Input() set placeholder(val: string) {\n        this._placeholder = val;\n        this.updateLabel();\n    }\n\n    get placeholder(): string {\n        return this._placeholder;\n    }\n\n    @Input() get options(): any[] {\n        return this._options;\n    }\n\n    set options(val: any[]) {\n        this._options = val;\n        this.updateLabel();\n    }\n\n    @Input() get filterValue(): string {\n        return this._filterValue;\n    }\n\n    set filterValue(val: string) {\n        this._filterValue = val;\n        this.activateFilter();\n    }\n\n    public value: any[];\n\n    public _filteredOptions: any[];\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    overlay: HTMLDivElement;\n\n    public valuesAsString: string;\n\n    public focus: boolean;\n\n    filled: boolean;\n\n    public documentClickListener: any;\n\n    public _filterValue: string;\n\n    public filtered: boolean;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public groupTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public footerTemplate: TemplateRef<any>;\n\n    public emptyFilterTemplate: TemplateRef<any>;\n\n    public emptyTemplate: TemplateRef<any>;\n\n    public selectedItemsTemplate: TemplateRef<any>;\n\n    public headerCheckboxFocus: boolean;\n\n    _options: any[];\n\n    maxSelectionLimitReached: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    preventModelTouched: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public filterService: FilterService, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        this.updateLabel();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'group':\n                    this.groupTemplate = item.template;\n                break;\n\n                case 'selectedItems':\n                    this.selectedItemsTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.overlayVisible) {\n            this.show();\n        }\n    }\n\n    ngAfterViewChecked() {\n        if (this.filtered) {\n            this.alignOverlay();\n\n            this.filtered = false;\n        }\n    }\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    getOptionGroupLabel(optionGroup: any) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n\n    getOptionGroupChildren(optionGroup: any) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n\n    isOptionDisabled(option: any) {\n        let disabled = this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n        return (disabled || (this.maxSelectionLimitReached && !this.isSelected(option)));\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateLabel();\n        this.updateFilledState();\n        this.checkSelectionLimit();\n\n        this.cd.markForCheck();\n    }\n\n    checkSelectionLimit() {\n        if (this.selectionLimit && (this.value && this.value.length === this.selectionLimit)) {\n            this.maxSelectionLimitReached = true;\n        }\n        else {\n            this.maxSelectionLimitReached = false;\n        }\n    }\n\n    updateFilledState() {\n        this.filled = (this.value && this.value.length > 0);\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onOptionClick(event) {\n        let option = event.option;\n        if (this.isOptionDisabled(option)) {\n            return;\n        }\n\n        let optionValue = this.getOptionValue(option);\n        let selectionIndex = this.findSelectionIndex(optionValue);\n        if (selectionIndex != -1) {\n            this.value = this.value.filter((val,i) => i != selectionIndex);\n\n            if (this.selectionLimit) {\n                this.maxSelectionLimitReached = false;\n            }\n        }\n        else {\n            if (!this.selectionLimit || (!this.value || this.value.length < this.selectionLimit)) {\n                this.value = [...this.value || [], optionValue];\n            }\n\n            this.checkSelectionLimit();\n        }\n\n        this.onModelChange(this.value);\n        this.onChange.emit({originalEvent: event.originalEvent, value: this.value, itemValue: optionValue});\n        this.updateLabel();\n        this.updateFilledState();\n    }\n\n    isSelected(option) {\n        return this.findSelectionIndex(this.getOptionValue(option)) != -1;\n    }\n\n    findSelectionIndex(val: any): number {\n        let index = -1;\n\n        if (this.value) {\n            for (let i = 0; i < this.value.length; i++) {\n                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    get toggleAllDisabled(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return true;\n        }\n        else {\n            for (let option of optionsToRender) {\n                if (!this.isOptionDisabled(option))\n                    return false;\n            }\n\n            return true;\n        }\n    }\n\n    toggleAll(event) {\n        if (this.disabled || this.toggleAllDisabled || this.readonly) {\n            return;\n        }\n\n        let allChecked = this.allChecked;\n\n        if (allChecked)\n            this.uncheckAll();\n        else\n            this.checkAll();\n\n        this.onModelChange(this.value);\n        this.onChange.emit({ originalEvent: event, value: this.value });\n        this.updateFilledState();\n        this.updateLabel();\n        event.preventDefault();\n    }\n\n    checkAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (!optionDisabled || (optionDisabled && this.isSelected(opt))) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                let subOptions = this.getOptionGroupChildren(opt);\n\n                if (subOptions) {\n                    subOptions.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (!optionDisabled || (optionDisabled && this.isSelected(option))) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    uncheckAll() {\n        let optionsToRender = this.optionsToRender;\n        let val: any[] = [];\n\n        optionsToRender.forEach(opt => {\n            if (!this.group) {\n                let optionDisabled = this.isOptionDisabled(opt);\n                if (optionDisabled && this.isSelected(opt)) {\n                    val.push(this.getOptionValue(opt));\n                }\n            }\n            else {\n                if (opt.items) {\n                    opt.items.forEach(option => {\n                        let optionDisabled = this.isOptionDisabled(option);\n                        if (optionDisabled && this.isSelected(option)) {\n                            val.push(this.getOptionValue(option));\n                        }\n                    });\n                }\n            }\n        });\n\n        this.value = val;\n    }\n\n    show() {\n        if (!this.overlayVisible){\n            this.overlayVisible = true;\n        }\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.appendOverlay();\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                }\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                if (this.filterInputChild && this.filterInputChild.nativeElement) {\n                    this.preventModelTouched = true;\n\n                    if (this.autofocusFilter) {\n                        this.filterInputChild.nativeElement.focus();\n                    }\n                }\n\n                this.onPanelShow.emit();\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.containerViewChild.nativeElement) + 'px';\n            }\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.overlay) {\n            if (this.appendTo)\n                DomHandler.absolutePosition(this.overlay, this.containerViewChild.nativeElement);\n            else\n                DomHandler.relativePosition(this.overlay, this.containerViewChild.nativeElement);\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.unbindDocumentClickListener();\n        if (this.resetFilterOnHide){\n            this.filterInputChild.nativeElement.value = '';\n            this._filterValue = null;\n            this._filteredOptions = null;\n        }\n        this.onPanelHide.emit();\n        this.cd.markForCheck();\n    }\n\n    close(event) {\n        this.hide();\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    onMouseclick(event: MouseEvent, input) {\n        if (this.disabled || this.readonly || (<Node> event.target).isSameNode(this.accessibleViewChild.nativeElement)) {\n            return;\n        }\n\n        this.onClick.emit(event);\n\n        if (!this.isOverlayClick(event) && !DomHandler.hasClass(event.target, 'p-multiselect-token-icon')) {\n            if (this.overlayVisible) {\n                this.hide();\n            }\n            else {\n                input.focus();\n                this.show();\n            }\n        }\n    }\n\n    removeChip(chip: any, event: MouseEvent) {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, chip, this.dataKey));\n        this.onModelChange(this.value);\n        this.checkSelectionLimit();\n        this.onChange.emit({originalEvent: event, value: this.value, itemValue: chip});\n        this.updateLabel();\n        this.updateFilledState();\n    }\n\n    isOverlayClick(event: MouseEvent) {\n        let targetNode = <Node> event.target;\n        return this.overlay ? (this.overlay.isSameNode(targetNode) || this.overlay.contains(targetNode)) : false;\n    }\n\n    isOutsideClicked(event: MouseEvent): boolean {\n        return !(this.el.nativeElement.isSameNode(event.target) || this.el.nativeElement.contains(event.target) || this.isOverlayClick(event));\n    }\n\n    onInputFocus(event) {\n        this.focus = true;\n        this.onFocus.emit({originalEvent: event});\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.onBlur.emit({originalEvent: event});\n\n        if (!this.preventModelTouched) {\n            this.onModelTouched();\n        }\n        this.preventModelTouched = false;\n    }\n\n    onOptionKeydown(event) {\n        if (this.readonly) {\n            return;\n        }\n\n        switch(event.originalEvent.which) {\n\n            //down\n            case 40:\n                var nextItem = this.findNextItem(event.originalEvent.target.parentElement);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.originalEvent.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(event.originalEvent.target.parentElement);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.originalEvent.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onOptionClick(event);\n                event.originalEvent.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem.children[0], 'p-disabled') || DomHandler.isHidden(nextItem.children[0]) || DomHandler.hasClass(nextItem, 'p-multiselect-item-group') ? this.findNextItem(nextItem) : nextItem.children[0];\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem.children[0], 'p-disabled') || DomHandler.isHidden(prevItem.children[0]) || DomHandler.hasClass(prevItem, 'p-multiselect-item-group') ? this.findPrevItem(prevItem) : prevItem.children[0];\n        else\n            return null;\n    }\n\n    onKeydown(event: KeyboardEvent){\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                    event.preventDefault();\n                }\n            break;\n\n            //space\n            case 32:\n                if (!this.overlayVisible){\n                    this.show();\n                    event.preventDefault();\n                }\n                break;\n\n            //escape\n            case 27:\n                this.hide();\n            break;\n        }\n    }\n\n    updateLabel() {\n        if (this.value && this.options && this.value.length && this.displaySelectedLabel) {\n            let label = '';\n            for (let i = 0; i < this.value.length; i++) {\n                let itemLabel = this.findLabelByValue(this.value[i]);\n                if (itemLabel) {\n                    if (label.length > 0) {\n                        label = label + ', ';\n                    }\n                    label = label + itemLabel;\n                }\n            }\n\n            if (this.value.length <= this.maxSelectedLabels || this.selectedItemsLabel === 'ellipsis') {\n                this.valuesAsString = label;\n            }\n            else {\n                let pattern = /{(.*?)}/;\n                if (pattern.test(this.selectedItemsLabel)) {\n                    this.valuesAsString = this.selectedItemsLabel.replace(this.selectedItemsLabel.match(pattern)[0], this.value.length + '');\n                } else {\n                    this.valuesAsString = this.selectedItemsLabel;\n                }\n            }\n        }\n        else {\n            this.valuesAsString = this.placeholder || this.defaultLabel;\n        }\n    }\n\n    findLabelByValue(val: any): string {\n        if (this.group) {\n            let label = null;\n\n            for (let i = 0; i < this.options.length; i++) {\n                let subOptions = this.getOptionGroupChildren(this.options[i]);\n                if (subOptions) {\n                    label = this.searchLabelByValue(val, subOptions);\n\n                    if (label) {\n                        break;\n                    }\n                }\n            }\n\n            return label;\n        }\n        else {\n            return this.searchLabelByValue(val, this.options)\n        }\n    }\n\n    searchLabelByValue(val: any, options: any[]): string {\n        let label = null;\n\n        for (let i = 0; i < options.length; i++) {\n            let option = options[i];\n            let optionValue = this.getOptionValue(option);\n\n            if (val == null && optionValue == null || ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                label = this.getOptionLabel(option);\n                break;\n            }\n        }\n\n        return label;\n    }\n\n    get allChecked(): boolean {\n        let optionsToRender = this.optionsToRender;\n        if (!optionsToRender || optionsToRender.length === 0) {\n            return false;\n        }\n        else {\n            let selectedDisabledItemsLength = 0;\n            let unselectedDisabledItemsLength = 0;\n            let selectedEnabledItemsLength = 0;\n            let visibleOptionsLength = this.group ? 0 : this.optionsToRender.length;\n\n            for (let option of optionsToRender) {\n                if (!this.group) {\n                    let disabled = this.isOptionDisabled(option);\n                    let selected = this.isSelected(option);\n\n                    if (disabled) {\n                        if (selected)\n                            selectedDisabledItemsLength++;\n                        else\n                            unselectedDisabledItemsLength++;\n                    }\n                    else {\n                        if (selected)\n                            selectedEnabledItemsLength++;\n                        else\n                            return false;\n                    }\n                }\n                else {\n                    for (let opt of this.getOptionGroupChildren(option)) {\n                        let disabled = this.isOptionDisabled(opt);\n                        let selected = this.isSelected(opt);\n\n                        if (disabled) {\n                            if (selected)\n                                selectedDisabledItemsLength++;\n                            else\n                                unselectedDisabledItemsLength++;\n                        }\n                        else {\n                            if (selected)\n                                selectedEnabledItemsLength++;\n                            else {\n                                return false;\n                            }\n                        }\n\n                        visibleOptionsLength++;\n                    }\n                }\n            }\n\n            return (visibleOptionsLength === selectedDisabledItemsLength\n                    || visibleOptionsLength === selectedEnabledItemsLength\n                    || selectedEnabledItemsLength && visibleOptionsLength === (selectedEnabledItemsLength + unselectedDisabledItemsLength + selectedDisabledItemsLength));\n        }\n    }\n\n    get optionsToRender(): any[] {\n        return this._filteredOptions || this.options;\n    }\n\n    get emptyOptions(): boolean {\n        let optionsToRender = this.optionsToRender;\n        return !optionsToRender || optionsToRender.length === 0;\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyFilterMessageLabel(): string {\n        return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n    }\n\n    hasFilter() {\n        return this._filterValue && this._filterValue.trim().length > 0;\n    }\n\n    onFilterInputChange(event: KeyboardEvent) {\n        this._filterValue = (<HTMLInputElement> event.target).value;\n        this.activateFilter();\n        this.onFilter.emit({originalEvent: event, filter: this._filterValue});\n        this.cd.detectChanges();\n        this.alignOverlay();\n    }\n\n    activateFilter() {\n        if (this.hasFilter() && this._options) {\n            let searchFields: string[] = (this.filterBy || this.optionLabel || 'label').split(',');\n            if (this.group) {\n                let searchFields: string[] = (this.optionLabel || 'label').split(',');\n\n                let filteredGroups = [];\n                for (let optgroup of this.options) {\n                    let filteredSubOptions = this.filterService.filter(this.getOptionGroupChildren(optgroup), searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n                    if (filteredSubOptions && filteredSubOptions.length) {\n                        filteredGroups.push({...optgroup, ...{[this.optionGroupChildren]: filteredSubOptions}});\n                    }\n                }\n\n                this._filteredOptions = filteredGroups;\n            }\n            else {\n                this._filteredOptions = this.filterService.filter(this.options, searchFields, this._filterValue, this.filterMatchMode, this.filterLocale);\n            }\n        }\n        else {\n            this._filteredOptions = null;\n        }\n    }\n\n    onHeaderCheckboxFocus() {\n        this.headerCheckboxFocus = true;\n    }\n\n    onHeaderCheckboxBlur() {\n        this.headerCheckboxFocus = false;\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (!DomHandler.isAndroid()) {\n            this.hide();\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.onModelTouched();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,ScrollingModule,TooltipModule,RippleModule],\n    exports: [MultiSelect,SharedModule,ScrollingModule],\n    declarations: [MultiSelect,MultiSelectItem]\n})\nexport class MultiSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,479 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils } from 'primeng/utils';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i5 from '@angular/cdk/drag-drop';
+import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
+
+class OrderList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.controlsPosition = 'left';
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.selectionChange = new EventEmitter();
+        this.trackBy = (index, item) => item;
+        this.onReorder = new EventEmitter();
+        this.onSelectionChange = new EventEmitter();
+        this.onFilterEvent = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'emptyfilter':
+                    this.emptyFilterMessageTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');
+            let listItem;
+            if (listItems.length > 0) {
+                if (this.movedUp)
+                    listItem = listItems[0];
+                else
+                    listItem = listItems[listItems.length - 1];
+                DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);
+            }
+            this.movedUp = false;
+            this.movedDown = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.filterValue) {
+            this.filter();
+        }
+    }
+    onItemClick(event, item, index) {
+        this.itemTouched = false;
+        let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);
+        let selected = (selectedIndex != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = (metaKey) ? this._selection ? [...this._selection] : [] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        else {
+            if (selected) {
+                this._selection = this._selection.filter((val, index) => index !== selectedIndex);
+            }
+            else {
+                this._selection = this._selection ? [...this._selection] : [];
+                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);
+            }
+        }
+        //binding
+        this.selectionChange.emit(this._selection);
+        //event
+        this.onSelectionChange.emit({ originalEvent: event, value: this._selection });
+    }
+    onFilterKeyup(event) {
+        this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        this.filter();
+        this.onFilterEvent.emit({
+            originalEvent: event,
+            value: this.visibleOptions
+        });
+    }
+    filter() {
+        let searchFields = this.filterBy.split(',');
+        this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);
+    }
+    isItemVisible(item) {
+        if (this.filterValue && this.filterValue.trim().length) {
+            for (let i = 0; i < this.visibleOptions.length; i++) {
+                if (item == this.visibleOptions[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        this.itemTouched = true;
+    }
+    isSelected(item) {
+        return ObjectUtils.findIndexInList(item, this.selection) != -1;
+    }
+    isEmpty() {
+        return this.filterValue ? (!this.visibleOptions || this.visibleOptions.length === 0) : (!this.value || this.value.length === 0);
+    }
+    moveUp() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex - 1];
+                    this.value[selectedItemIndex - 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedUp = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveTop() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != 0) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = 0;
+        }
+    }
+    moveDown() {
+        if (this.selection) {
+            for (let i = this.selection.length - 1; i >= 0; i--) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value[selectedItemIndex];
+                    let temp = this.value[selectedItemIndex + 1];
+                    this.value[selectedItemIndex + 1] = movedItem;
+                    this.value[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.movedDown = true;
+            this.onReorder.emit(this.selection);
+        }
+    }
+    moveBottom() {
+        if (this.selection) {
+            for (let i = 0; i < this.selection.length; i++) {
+                let selectedItem = this.selection[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, this.value);
+                if (selectedItemIndex != (this.value.length - 1)) {
+                    let movedItem = this.value.splice(selectedItemIndex, 1)[0];
+                    this.value.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && this.filterValue)
+                this.filter();
+            this.onReorder.emit(this.selection);
+            this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;
+        }
+    }
+    onDrop(event) {
+        let previousIndex = event.previousIndex;
+        let currentIndex = event.currentIndex;
+        if (previousIndex !== currentIndex) {
+            if (this.visibleOptions) {
+                if (this.filterValue) {
+                    previousIndex = ObjectUtils.findIndexInList(event.item.data, this.value);
+                    currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);
+                }
+                moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);
+            }
+            moveItemInArray(this.value, previousIndex, currentIndex);
+            this.onReorder.emit([event.item.data]);
+        }
+    }
+    onItemKeydown(event, item, index) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, index);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+                @media screen and (max-width: ${this.breakpoint}) {
+                    .p-orderlist[${this.id}] {
+                        flex-direction: column;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls {
+                        padding: var(--content-padding);
+                        flex-direction: row;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {
+                        margin-right: var(--inline-spacing);
+                        margin-bottom: 0;
+                    }
+
+                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {
+                        margin-right: 0;
+                    }
+                }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+OrderList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+OrderList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrderList, selector: "p-orderList", inputs: { header: "header", style: "style", styleClass: "styleClass", listStyle: "listStyle", responsive: "responsive", filterBy: "filterBy", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", controlsPosition: "controlsPosition", ariaFilterLabel: "ariaFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint", trackBy: "trackBy", selection: "selection", value: "value" }, outputs: { selectionChange: "selectionChange", onReorder: "onReorder", onSelectionChange: "onSelectionChange", onFilterEvent: "onFilterEvent" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewChild", first: true, predicate: ["listelement"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-orderList', template: `
+        <div [ngClass]="{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',
+                    'p-orderlist-controls-right': controlsPosition === 'right'}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-orderlist-controls">
+                <button type="button" pButton pRipple icon="pi pi-angle-up" (click)="moveUp()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-up" (click)="moveTop()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-down" (click)="moveDown()"></button>
+                <button type="button" pButton pRipple icon="pi pi-angle-double-down" (click)="moveBottom()"></button>
+            </div>
+            <div class="p-orderlist-list-container">
+                <div class="p-orderlist-header" *ngIf="header || headerTemplate">
+                    <div class="p-orderlist-title" *ngIf="!headerTemplate">{{header}}</div>
+                    <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                </div>
+                <div class="p-orderlist-filter-container" *ngIf="filterBy">
+                    <div class="p-orderlist-filter">
+                        <input type="text" role="textbox" (keyup)="onFilterKeyup($event)" class="p-orderlist-filter-input p-inputtext p-component" [attr.placeholder]="filterPlaceholder" [attr.aria-label]="ariaFilterLabel">
+                        <span class="p-orderlist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #listelement cdkDropList (cdkDropListDropped)="onDrop($event)" class="p-orderlist-list" [ngStyle]="listStyle">
+                    <ng-template ngFor [ngForTrackBy]="trackBy" let-item [ngForOf]="value" let-i="index" let-l="last">
+                        <li class="p-orderlist-item" tabindex="0" [ngClass]="{'p-highlight':isSelected(item)}" cdkDrag pRipple [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,i)" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,i)"
+                             *ngIf="isItemVisible(item)" role="option" [attr.aria-selected]="isSelected(item)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)">
+                        <li *ngIf="!filterValue || !emptyFilterMessageTemplate" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+                        </li>
+                        <li *ngIf="filterValue" class="p-orderlist-empty-message">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-orderlist{display:flex}.p-orderlist-controls{display:flex;flex-direction:column;justify-content:center}.p-orderlist-list-container{flex:1 1 auto}.p-orderlist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-orderlist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-orderlist-item:not(.cdk-drag-disabled){cursor:move}.p-orderlist-item.cdk-drag-placeholder{opacity:0}.p-orderlist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-orderlist.p-state-disabled .p-orderlist-item,.p-orderlist.p-state-disabled .p-button{cursor:default}.p-orderlist.p-state-disabled .p-orderlist-list{overflow:hidden}.p-orderlist-filter{position:relative}.p-orderlist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-orderlist-filter-input{width:100%}.p-orderlist-controls-right .p-orderlist-controls{order:2}.p-orderlist-controls-right .p-orderlist-list-container{order:1}.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { header: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], listStyle: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], controlsPosition: [{
+                type: Input
+            }], ariaFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], trackBy: [{
+                type: Input
+            }], onReorder: [{
+                type: Output
+            }], onSelectionChange: [{
+                type: Output
+            }], onFilterEvent: [{
+                type: Output
+            }], listViewChild: [{
+                type: ViewChild,
+                args: ['listelement']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selection: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }] } });
+class OrderListModule {
+}
+OrderListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrderListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, declarations: [OrderList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [OrderList, SharedModule, DragDropModule] });
+OrderListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrderListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [OrderList, SharedModule, DragDropModule],
+                    declarations: [OrderList]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OrderList, OrderListModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-orderlist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-orderlist.mjs","sources":["../../src/app/components/orderlist/orderlist.ts","../../src/app/components/orderlist/primeng-orderlist.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,AfterContentInit,Input,Output,ContentChildren,QueryList,TemplateRef,EventEmitter,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {SharedModule,PrimeTemplate,FilterService} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {CdkDragDrop, DragDropModule, moveItemInArray} from '@angular/cdk/drag-drop';\n\n@Component({\n    selector: 'p-orderList',\n    template: `\n        <div [ngClass]=\"{'p-orderlist p-component': true, 'p-orderlist-controls-left': controlsPosition === 'left',\n                    'p-orderlist-controls-right': controlsPosition === 'right'}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-orderlist-controls\">\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-up\" (click)=\"moveUp()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-double-up\" (click)=\"moveTop()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-down\" (click)=\"moveDown()\"></button>\n                <button type=\"button\" pButton pRipple icon=\"pi pi-angle-double-down\" (click)=\"moveBottom()\"></button>\n            </div>\n            <div class=\"p-orderlist-list-container\">\n                <div class=\"p-orderlist-header\" *ngIf=\"header || headerTemplate\">\n                    <div class=\"p-orderlist-title\" *ngIf=\"!headerTemplate\">{{header}}</div>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                </div>\n                <div class=\"p-orderlist-filter-container\" *ngIf=\"filterBy\">\n                    <div class=\"p-orderlist-filter\">\n                        <input type=\"text\" role=\"textbox\" (keyup)=\"onFilterKeyup($event)\" class=\"p-orderlist-filter-input p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\" [attr.aria-label]=\"ariaFilterLabel\">\n                        <span class=\"p-orderlist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <ul #listelement cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"p-orderlist-list\" [ngStyle]=\"listStyle\">\n                    <ng-template ngFor [ngForTrackBy]=\"trackBy\" let-item [ngForOf]=\"value\" let-i=\"index\" let-l=\"last\">\n                        <li class=\"p-orderlist-item\" tabindex=\"0\" [ngClass]=\"{'p-highlight':isSelected(item)}\" cdkDrag pRipple [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,i)\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,i)\"\n                             *ngIf=\"isItemVisible(item)\" role=\"option\" [attr.aria-selected]=\"isSelected(item)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty() && (emptyMessageTemplate || emptyFilterMessageTemplate)\">\n                        <li *ngIf=\"!filterValue || !emptyFilterMessageTemplate\" class=\"p-orderlist-empty-message\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n                        </li>\n                        <li *ngIf=\"filterValue\" class=\"p-orderlist-empty-message\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./orderlist.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OrderList implements AfterViewChecked,AfterContentInit {\n\n    @Input() header: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() listStyle: any;\n\n    @Input() responsive: boolean;\n\n    @Input() filterBy: string;\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dragdrop: boolean = false;\n\n    @Input() controlsPosition: string = 'left';\n\n    @Input() ariaFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() breakpoint: string = \"960px\";\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Output() onReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilterEvent: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('listelement') listViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public headerTemplate: TemplateRef<any>;\n\n    public emptyMessageTemplate: TemplateRef<any>;\n\n    public emptyFilterMessageTemplate: TemplateRef<any>;\n\n    _selection: any[];\n\n    movedUp: boolean;\n\n    movedDown: boolean;\n\n    itemTouched: boolean;\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    public filterValue: string;\n\n    public visibleOptions: any[];\n\n    public _value: any[];\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n    get selection(): any[] {\n        return this._selection;\n    }\n\n    @Input() set selection(val:any[]) {\n        this._selection = val;\n    }\n\n    ngOnInit() {\n        if (this.responsive) {\n            this.createStyle();\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'emptyfilter':\n                    this.emptyFilterMessageTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.movedUp||this.movedDown) {\n            let listItems = DomHandler.find(this.listViewChild.nativeElement, 'li.p-highlight');\n            let listItem;\n\n            if (listItems.length > 0) {\n                if (this.movedUp)\n                    listItem = listItems[0];\n                else\n                    listItem = listItems[listItems.length - 1];\n\n                DomHandler.scrollInView(this.listViewChild.nativeElement, listItem);\n            }\n            this.movedUp = false;\n            this.movedDown = false;\n        }\n    }\n\n    get value(): any[] {\n        return this._value;\n    }\n\n    @Input() set value(val:any[]) {\n        this._value = val;\n        if (this.filterValue) {\n            this.filter();\n        }\n    }\n\n    onItemClick(event, item, index) {\n        this.itemTouched = false;\n        let selectedIndex = ObjectUtils.findIndexInList(item, this.selection);\n        let selected = (selectedIndex != -1);\n        let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey||event.ctrlKey||event.shiftKey);\n\n            if (selected && metaKey) {\n                this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n            }\n            else {\n                this._selection = (metaKey) ? this._selection ? [...this._selection] : [] : [];\n                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n            }\n        }\n        else {\n            if (selected) {\n                this._selection = this._selection.filter((val, index) => index !== selectedIndex);\n            }\n            else {\n                this._selection = this._selection ? [...this._selection] : [];\n                ObjectUtils.insertIntoOrderedArray(item, index, this._selection, this.value);\n            }\n        }\n\n        //binding\n        this.selectionChange.emit(this._selection);\n\n        //event\n        this.onSelectionChange.emit({originalEvent:event, value: this._selection});\n    }\n\n    onFilterKeyup(event) {\n        this.filterValue = event.target.value.trim().toLocaleLowerCase(this.filterLocale);\n        this.filter();\n\n        this.onFilterEvent.emit({\n            originalEvent: event,\n            value: this.visibleOptions\n        });\n    }\n\n    filter() {\n        let searchFields: string[] = this.filterBy.split(',');\n        this.visibleOptions = this.filterService.filter(this.value, searchFields, this.filterValue, this.filterMatchMode, this.filterLocale);\n    }\n\n    isItemVisible(item: any): boolean {\n        if (this.filterValue && this.filterValue.trim().length) {\n            for (let i = 0; i < this.visibleOptions.length; i++) {\n                if (item == this.visibleOptions[i]) {\n                    return true;\n                }\n            }\n        }\n        else {\n            return true;\n        }\n    }\n\n    onItemTouchEnd() {\n        this.itemTouched = true;\n    }\n\n    isSelected(item: any) {\n        return ObjectUtils.findIndexInList(item, this.selection) != -1;\n    }\n\n    isEmpty() {\n        return this.filterValue ? (!this.visibleOptions || this.visibleOptions.length === 0) : (!this.value || this.value.length === 0);\n    }\n\n    moveUp() {\n        if (this.selection) {\n            for (let i = 0; i < this.selection.length; i++) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = this.value[selectedItemIndex];\n                    let temp = this.value[selectedItemIndex-1];\n                    this.value[selectedItemIndex-1] = movedItem;\n                    this.value[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.movedUp = true;\n            this.onReorder.emit(this.selection);\n        }\n    }\n\n    moveTop() {\n        if (this.selection) {\n            for (let i = this.selection.length - 1; i >= 0; i--) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = this.value.splice(selectedItemIndex,1)[0];\n                    this.value.unshift(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.onReorder.emit(this.selection);\n            this.listViewChild.nativeElement.scrollTop = 0;\n        }\n    }\n\n    moveDown() {\n        if (this.selection) {\n            for (let i = this.selection.length - 1; i >= 0; i--) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != (this.value.length - 1)) {\n                    let movedItem = this.value[selectedItemIndex];\n                    let temp = this.value[selectedItemIndex+1];\n                    this.value[selectedItemIndex+1] = movedItem;\n                    this.value[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.movedDown = true;\n            this.onReorder.emit(this.selection);\n        }\n    }\n\n    moveBottom() {\n        if (this.selection) {\n            for (let i = 0; i < this.selection.length; i++) {\n                let selectedItem = this.selection[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, this.value);\n\n                if (selectedItemIndex != (this.value.length - 1)) {\n                    let movedItem = this.value.splice(selectedItemIndex,1)[0];\n                    this.value.push(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && this.filterValue)\n                this.filter();\n\n            this.onReorder.emit(this.selection);\n            this.listViewChild.nativeElement.scrollTop = this.listViewChild.nativeElement.scrollHeight;\n        }\n    }\n\n    onDrop(event: CdkDragDrop<string[]>) {\n        let previousIndex =  event.previousIndex;\n        let currentIndex = event.currentIndex;\n\n        if (previousIndex !== currentIndex) {\n\n            if (this.visibleOptions) {\n                if (this.filterValue) {\n                    previousIndex =  ObjectUtils.findIndexInList(event.item.data, this.value);\n                    currentIndex = ObjectUtils.findIndexInList(this.visibleOptions[currentIndex], this.value);\n                }\n\n                moveItemInArray(this.visibleOptions, event.previousIndex, event.currentIndex);\n            }\n\n            moveItemInArray(this.value, previousIndex, currentIndex);\n            this.onReorder.emit([event.item.data]);\n        }\n    }\n\n    onItemKeydown(event: KeyboardEvent, item, index: Number) {\n        let listItem = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onItemClick(event, item, index);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return !DomHandler.hasClass(nextItem, 'p-orderlist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return !DomHandler.hasClass(prevItem, 'p-orderlist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.el.nativeElement.children[0].setAttribute(this.id, '');\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n\n            let innerHTML = `\n                @media screen and (max-width: ${this.breakpoint}) {\n                    .p-orderlist[${this.id}] {\n                        flex-direction: column;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls {\n                        padding: var(--content-padding);\n                        flex-direction: row;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button {\n                        margin-right: var(--inline-spacing);\n                        margin-bottom: 0;\n                    }\n\n                    .p-orderlist[${this.id}] .p-orderlist-controls .p-button:last-child {\n                        margin-right: 0;\n                    }\n                }\n            `;\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;``\n        }\n    }\n\n    ngOnDestroy() {\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule,DragDropModule],\n    exports: [OrderList,SharedModule,DragDropModule],\n    declarations: [OrderList]\n})\nexport class OrderListModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,321 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Input, EventEmitter, Output, ContentChildren, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { Subject } from 'rxjs';
+
+class OrganizationChartNode {
+    constructor(chart, cd) {
+        this.cd = cd;
+        this.chart = chart;
+        this.subscription = this.chart.selectionSource$.subscribe(() => {
+            this.cd.markForCheck();
+        });
+    }
+    get leaf() {
+        return this.node.leaf == false ? false : !(this.node.children && this.node.children.length);
+    }
+    get colspan() {
+        return (this.node.children && this.node.children.length) ? this.node.children.length * 2 : null;
+    }
+    onNodeClick(event, node) {
+        this.chart.onNodeClick(event, node);
+    }
+    toggleNode(event, node) {
+        node.expanded = !node.expanded;
+        if (node.expanded)
+            this.chart.onNodeExpand.emit({ originalEvent: event, node: this.node });
+        else
+            this.chart.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+        event.preventDefault();
+    }
+    isSelected() {
+        return this.chart.isSelected(this.node);
+    }
+    ngOnDestroy() {
+        this.subscription.unsubscribe();
+    }
+}
+OrganizationChartNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, deps: [{ token: forwardRef(() => OrganizationChart) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChartNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: { node: "node", root: "root", first: "first", last: "last" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, isInline: true, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"], components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('childState', [
+            state('in', style({ opacity: 1 })),
+            transition('void => *', [
+                style({ opacity: 0 }),
+                animate(150)
+            ]),
+            transition('* => void', [
+                animate(150, style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartNode, decorators: [{
+            type: Component,
+            args: [{ selector: '[pOrganizationChartNode]', template: `
+        <tbody *ngIf="node">
+            <tr>
+                <td [attr.colspan]="colspan">
+                    <div [class]="node.styleClass" [ngClass]="{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}"
+                        (click)="onNodeClick($event,node)">
+                        <div *ngIf="!chart.getTemplateForNode(node)">{{node.label}}</div>
+                        <div *ngIf="chart.getTemplateForNode(node)">
+                            <ng-container *ngTemplateOutlet="chart.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                        </div>
+                        <a *ngIf="!leaf" tabindex="0" class="p-node-toggler" (click)="toggleNode($event, node)" (keydown.enter)="toggleNode($event, node)">
+                            <i class="p-node-toggler-icon pi" [ngClass]="{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}"></i>
+                        </a>
+                    </div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <td [attr.colspan]="colspan">
+                    <div class="p-organizationchart-line-down"></div>
+                </td>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-lines" [@childState]="'in'">
+                <ng-container *ngIf="node.children && node.children.length === 1">
+                    <td [attr.colspan]="colspan">
+                        <div class="p-organizationchart-line-down"></div>
+                    </td>
+                </ng-container>
+                <ng-container *ngIf="node.children && node.children.length > 1">
+                    <ng-template ngFor let-child [ngForOf]="node.children" let-first="first" let-last="last">
+                        <td class="p-organizationchart-line-left" [ngClass]="{'p-organizationchart-line-top':!first}">&nbsp;</td>
+                        <td class="p-organizationchart-line-right" [ngClass]="{'p-organizationchart-line-top':!last}">&nbsp;</td>
+                    </ng-template>
+                </ng-container>
+            </tr>
+            <tr [ngClass]="!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'" class="p-organizationchart-nodes" [@childState]="'in'">
+                <td *ngFor="let child of node.children" colspan="2">
+                    <table class="p-organizationchart-table" pOrganizationChartNode [node]="child"></table>
+                </td>
+            </tr>
+        </tbody>
+    `, animations: [
+                        trigger('childState', [
+                            state('in', style({ opacity: 1 })),
+                            transition('void => *', [
+                                style({ opacity: 0 }),
+                                animate(150)
+                            ]),
+                            transition('* => void', [
+                                animate(150, style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-organizationchart-table{border-spacing:0;border-collapse:separate;margin:0 auto}.p-organizationchart-table>tbody>tr>td{text-align:center;vertical-align:top;padding:0 .75rem}.p-organizationchart-node-content{display:inline-block;position:relative}.p-organizationchart-node-content .p-node-toggler{position:absolute;bottom:-.75rem;margin-left:-.75rem;z-index:2;left:50%;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;width:1.5rem;height:1.5rem}.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon{position:relative;top:.25rem}.p-organizationchart-line-down{margin:0 auto;height:20px;width:1px}.p-organizationchart-line-right,.p-organizationchart-line-left{border-radius:0}.p-organizationchart-selectable-node{cursor:pointer}.p-organizationchart .p-organizationchart-node-hidden{display:none}.p-organizationchart-preservespace .p-organizationchart-node-hidden{visibility:hidden;display:inherit}\n"] }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => OrganizationChart)]
+                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { node: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], last: [{
+                type: Input
+            }] } });
+class OrganizationChart {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.preserveSpace = true;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.selectionSource = new Subject();
+        this.selectionSource$ = this.selectionSource.asObservable();
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+        if (this.initialized)
+            this.selectionSource.next(null);
+    }
+    get root() {
+        return this.value && this.value.length ? this.value[0] : null;
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            this.templateMap[item.getType()] = item.template;
+        });
+        this.initialized = true;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (eventTarget.className && (eventTarget.className.indexOf('p-node-toggler') !== -1 || eventTarget.className.indexOf('p-node-toggler-icon') !== -1)) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.selectionMode === 'single') {
+                if (selected) {
+                    this.selection = null;
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = node;
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else if (this.selectionMode === 'multiple') {
+                if (selected) {
+                    this.selection = this.selection.filter((val, i) => i != index);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    this.selection = [...this.selection || [], node];
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            this.selectionChange.emit(this.selection);
+            this.selectionSource.next(null);
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.selectionMode === 'single') {
+                index = (this.selection == node) ? 0 : -1;
+            }
+            else if (this.selectionMode === 'multiple') {
+                for (let i = 0; i < this.selection.length; i++) {
+                    if (this.selection[i] == node) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+}
+OrganizationChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+OrganizationChart.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OrganizationChart, selector: "p-organizationChart", inputs: { value: "value", style: "style", styleClass: "styleClass", selectionMode: "selectionMode", preserveSpace: "preserveSpace", selection: "selection" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `, isInline: true, components: [{ type: OrganizationChartNode, selector: "[pOrganizationChartNode]", inputs: ["node", "root", "first", "last"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChart, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-organizationChart',
+                    template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}">
+            <table class="p-organizationchart-table" pOrganizationChartNode [node]="root" *ngIf="root"></table>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], preserveSpace: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class OrganizationChartModule {
+}
+OrganizationChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OrganizationChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, declarations: [OrganizationChart, OrganizationChartNode], imports: [CommonModule], exports: [OrganizationChart, SharedModule] });
+OrganizationChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OrganizationChartModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [OrganizationChart, SharedModule],
+                    declarations: [OrganizationChart, OrganizationChartNode]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OrganizationChart, OrganizationChartModule, OrganizationChartNode };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-organizationchart.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-organizationchart.mjs","sources":["../../src/app/components/organizationchart/organizationchart.ts","../../src/app/components/organizationchart/primeng-organizationchart.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,AfterContentInit,EventEmitter,TemplateRef,\n        Inject,forwardRef,ContentChildren,QueryList,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule} from 'primeng/api';\nimport {TreeNode} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\n\n@Component({\n    selector: '[pOrganizationChartNode]',\n    template: `\n        <tbody *ngIf=\"node\">\n            <tr>\n                <td [attr.colspan]=\"colspan\">\n                    <div [class]=\"node.styleClass\" [ngClass]=\"{'p-organizationchart-node-content': true, 'p-organizationchart-selectable-node': chart.selectionMode && node.selectable !== false,'p-highlight':isSelected()}\"\n                        (click)=\"onNodeClick($event,node)\">\n                        <div *ngIf=\"!chart.getTemplateForNode(node)\">{{node.label}}</div>\n                        <div *ngIf=\"chart.getTemplateForNode(node)\">\n                            <ng-container *ngTemplateOutlet=\"chart.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                        </div>\n                        <a *ngIf=\"!leaf\" tabindex=\"0\" class=\"p-node-toggler\" (click)=\"toggleNode($event, node)\" (keydown.enter)=\"toggleNode($event, node)\">\n                            <i class=\"p-node-toggler-icon pi\" [ngClass]=\"{'pi-chevron-down': node.expanded, 'pi-chevron-up': !node.expanded}\"></i>\n                        </a>\n                    </div>\n                </td>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-lines\" [@childState]=\"'in'\">\n                <td [attr.colspan]=\"colspan\">\n                    <div class=\"p-organizationchart-line-down\"></div>\n                </td>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-lines\" [@childState]=\"'in'\">\n                <ng-container *ngIf=\"node.children && node.children.length === 1\">\n                    <td [attr.colspan]=\"colspan\">\n                        <div class=\"p-organizationchart-line-down\"></div>\n                    </td>\n                </ng-container>\n                <ng-container *ngIf=\"node.children && node.children.length > 1\">\n                    <ng-template ngFor let-child [ngForOf]=\"node.children\" let-first=\"first\" let-last=\"last\">\n                        <td class=\"p-organizationchart-line-left\" [ngClass]=\"{'p-organizationchart-line-top':!first}\">&nbsp;</td>\n                        <td class=\"p-organizationchart-line-right\" [ngClass]=\"{'p-organizationchart-line-top':!last}\">&nbsp;</td>\n                    </ng-template>\n                </ng-container>\n            </tr>\n            <tr [ngClass]=\"!leaf&&node.expanded ? 'p-organizationchart-node-visible' : 'p-organizationchart-node-hidden'\" class=\"p-organizationchart-nodes\" [@childState]=\"'in'\">\n                <td *ngFor=\"let child of node.children\" colspan=\"2\">\n                    <table class=\"p-organizationchart-table\" pOrganizationChartNode [node]=\"child\"></table>\n                </td>\n            </tr>\n        </tbody>\n    `,\n    animations: [\n        trigger('childState', [\n            state('in', style({opacity: 1})),\n           transition('void => *', [\n             style({opacity: 0}),\n             animate(150)\n           ]),\n           transition('* => void', [\n             animate(150, style({opacity:0}))\n           ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./organizationchart.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OrganizationChartNode implements OnDestroy{\n\n    @Input() node: TreeNode;\n\n    @Input() root: boolean;\n\n    @Input() first: boolean;\n\n    @Input() last: boolean;\n\n    chart: OrganizationChart;\n\n    subscription: Subscription;\n\n    constructor(@Inject(forwardRef(() => OrganizationChart)) chart, public cd: ChangeDetectorRef) {\n        this.chart = chart as OrganizationChart;\n        this.subscription = this.chart.selectionSource$.subscribe(() =>{\n            this.cd.markForCheck();\n        })\n    }\n\n    get leaf(): boolean {\n        return this.node.leaf == false ? false : !(this.node.children&&this.node.children.length);\n    }\n\n    get colspan() {\n        return (this.node.children && this.node.children.length) ? this.node.children.length * 2: null;\n    }\n\n    onNodeClick(event: Event, node: TreeNode) {\n        this.chart.onNodeClick(event, node)\n    }\n\n    toggleNode(event: Event, node: TreeNode) {\n        node.expanded = !node.expanded;\n        if (node.expanded)\n            this.chart.onNodeExpand.emit({originalEvent: event, node: this.node});\n        else\n            this.chart.onNodeCollapse.emit({originalEvent: event, node: this.node});\n\n        event.preventDefault();\n    }\n\n    isSelected() {\n        return this.chart.isSelected(this.node);\n    }\n\n    ngOnDestroy() {\n        this.subscription.unsubscribe();\n    }\n}\n\n@Component({\n    selector: 'p-organizationChart',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-organizationchart p-component': true, 'p-organizationchart-preservespace': preserveSpace}\">\n            <table class=\"p-organizationchart-table\" pOrganizationChartNode [node]=\"root\" *ngIf=\"root\"></table>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush,\n   host: {\n    'class': 'p-element'\n}\n})\nexport class OrganizationChart implements AfterContentInit {\n\n    @Input() value: TreeNode[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() selectionMode: string;\n\n    @Input() preserveSpace: boolean = true;\n\n    @Input()  get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val:any) {\n        this._selection = val;\n\n        if (this.initialized)\n            this.selectionSource.next(null);\n    }\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public templateMap: any;\n\n    private selectionSource = new Subject<any>();\n\n    _selection: any;\n\n    initialized: boolean;\n\n    selectionSource$ = this.selectionSource.asObservable();\n\n    constructor(public el: ElementRef, public cd:ChangeDetectorRef) {}\n\n    get root(): TreeNode {\n        return this.value && this.value.length ? this.value[0] : null;\n    }\n\n    ngAfterContentInit() {\n        if (this.templates.length) {\n            this.templateMap = {};\n        }\n\n        this.templates.forEach((item) => {\n            this.templateMap[item.getType()] = item.template;\n        });\n\n        this.initialized = true;\n    }\n\n    getTemplateForNode(node: TreeNode): TemplateRef<any> {\n        if (this.templateMap)\n            return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n        else\n            return null;\n    }\n\n    onNodeClick(event: Event, node: TreeNode) {\n        let eventTarget = (<Element> event.target);\n\n        if (eventTarget.className && (eventTarget.className.indexOf('p-node-toggler') !== -1 || eventTarget.className.indexOf('p-node-toggler-icon') !== -1)) {\n            return;\n        }\n        else if (this.selectionMode) {\n            if (node.selectable === false) {\n                return;\n            }\n\n            let index = this.findIndexInSelection(node);\n            let selected = (index >= 0);\n\n            if (this.selectionMode === 'single') {\n                if (selected) {\n                    this.selection = null;\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    this.selection = node;\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n            else if (this.selectionMode === 'multiple') {\n                if (selected) {\n                    this.selection = this.selection.filter((val,i) => i!=index);\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    this.selection = [...this.selection||[],node];\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n\n            this.selectionChange.emit(this.selection);\n            this.selectionSource.next(null);\n        }\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.selectionMode && this.selection) {\n            if (this.selectionMode === 'single') {\n                index = (this.selection == node) ? 0 : - 1;\n            }\n            else if (this.selectionMode === 'multiple') {\n                for(let i = 0; i  < this.selection.length; i++) {\n                    if (this.selection[i] == node) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [OrganizationChart,SharedModule],\n    declarations: [OrganizationChart,OrganizationChartNode]\n})\nexport class OrganizationChartModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,356 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+
+class OverlayPanel {
+    constructor(el, renderer, cd, zone, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.zone = zone;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.dismissable = true;
+        this.appendTo = 'body';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.focusOnShow = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.overlayVisible = false;
+        this.render = false;
+        this.selfClick = false;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.dismissable) {
+            this.zone.runOutsideAngular(() => {
+                let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';
+                const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+                this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {
+                    if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {
+                        this.zone.run(() => {
+                            this.hide();
+                        });
+                    }
+                    this.selfClick = false;
+                    this.cd.markForCheck();
+                });
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    toggle(event, target) {
+        if (this.overlayVisible) {
+            if (this.hasTargetChanged(event, target)) {
+                this.destroyCallback = () => {
+                    this.show(null, (target || event.currentTarget || event.target));
+                };
+            }
+            this.hide();
+        }
+        else {
+            this.show(event, target);
+        }
+    }
+    show(event, target) {
+        this.target = target || event.currentTarget || event.target;
+        this.overlayVisible = true;
+        this.render = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+        this.selfClick = true;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    hasTargetChanged(event, target) {
+        return this.target != null && this.target !== (target || event.currentTarget || event.target);
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    align() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);
+        }
+        DomHandler.absolutePosition(this.container, this.target);
+        const containerOffset = DomHandler.getOffset(this.container);
+        const targetOffset = DomHandler.getOffset(this.target);
+        let arrowLeft = 0;
+        if (containerOffset.left < targetOffset.left) {
+            arrowLeft = targetOffset.left - containerOffset.left;
+        }
+        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);
+        if (containerOffset.top < targetOffset.top) {
+            DomHandler.addClass(this.container, 'p-overlaypanel-flipped');
+        }
+    }
+    onAnimationStart(event) {
+        if (event.toState === 'open') {
+            this.container = event.element;
+            this.onShow.emit(null);
+            this.appendContainer();
+            this.align();
+            this.bindDocumentClickListener();
+            this.bindDocumentResizeListener();
+            this.bindScrollListener();
+            if (this.focusOnShow) {
+                this.focus();
+            }
+            this.overlayEventListener = (e) => {
+                if (this.container && this.container.contains(e.target)) {
+                    this.selfClick = true;
+                }
+            };
+            this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                if (this.destroyCallback) {
+                    this.destroyCallback();
+                    this.destroyCallback = null;
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+            case 'close':
+                if (this.autoZIndex) {
+                    ZIndexUtils.clear(this.container);
+                }
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                this.onContainerDestroy();
+                this.onHide.emit({});
+                this.render = false;
+                break;
+        }
+    }
+    focus() {
+        let focusable = DomHandler.findSingle(this.container, '[autofocus]');
+        if (focusable) {
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => focusable.focus(), 5);
+            });
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onCloseClick(event) {
+        this.hide();
+        event.preventDefault();
+    }
+    onWindowResize(event) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onContainerDestroy() {
+        this.target = null;
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+    }
+    ngOnDestroy() {
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.target = null;
+        this.destroyCallback = null;
+        if (this.container) {
+            this.restoreAppend();
+            this.onContainerDestroy();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+OverlayPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+OverlayPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: OverlayPanel, selector: "p-overlayPanel", inputs: { dismissable: "dismissable", showCloseIcon: "showCloseIcon", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", ariaCloseLabel: "ariaCloseLabel", baseZIndex: "baseZIndex", focusOnShow: "focusOnShow", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, isInline: true, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('animation', [
+            state('void', style({
+                transform: 'scaleY(0.8)',
+                opacity: 0
+            })),
+            state('close', style({
+                opacity: 0
+            })),
+            state('open', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => close', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-overlayPanel', template: `
+        <div *ngIf="render" [ngClass]="'p-overlaypanel p-component'" [ngStyle]="style" [class]="styleClass" (click)="onOverlayClick($event)"
+            [@animation]="{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (@animation.start)="onAnimationStart($event)" (@animation.done)="onAnimationEnd($event)">
+            <div class="p-overlaypanel-content" (click)="onContentClick()" (mousedown)="onContentClick()">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+            <button *ngIf="showCloseIcon" type="button" class="p-overlaypanel-close p-link" (click)="onCloseClick($event)" (keydown.enter)="hide()" [attr.aria-label]="ariaCloseLabel" pRipple>
+                <span class="p-overlaypanel-close-icon pi pi-times"></span>
+            </button>
+        </div>
+    `, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                transform: 'scaleY(0.8)',
+                                opacity: 0
+                            })),
+                            state('close', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => close', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-overlaypanel{position:absolute;margin-top:10px;top:0;left:0}.p-overlaypanel-flipped{margin-top:0;margin-bottom:10px}.p-overlaypanel-close{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-overlaypanel:after,.p-overlaypanel:before{bottom:100%;left:calc(0 + 1.25rem);left:calc(var(--overlayArrowLeft, 0) + 1.25rem);content:\" \";height:0;width:0;position:absolute;pointer-events:none}.p-overlaypanel:after{border-width:8px;margin-left:-8px}.p-overlaypanel:before{border-width:10px;margin-left:-10px}.p-overlaypanel-shifted:after,.p-overlaypanel-shifted:before{left:auto;right:1.25em;margin-left:auto}.p-overlaypanel-flipped:after,.p-overlaypanel-flipped:before{bottom:auto;top:100%}.p-overlaypanel.p-overlaypanel-flipped:after,.p-overlaypanel.p-overlaypanel-flipped:before{border-bottom-color:transparent}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { dismissable: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], focusOnShow: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class OverlayPanelModule {
+}
+OverlayPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+OverlayPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, declarations: [OverlayPanel], imports: [CommonModule, RippleModule, SharedModule], exports: [OverlayPanel, SharedModule] });
+OverlayPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, imports: [[CommonModule, RippleModule, SharedModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: OverlayPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule],
+                    exports: [OverlayPanel, SharedModule],
+                    declarations: [OverlayPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { OverlayPanel, OverlayPanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-overlaypanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-overlaypanel.mjs","sources":["../../src/app/components/overlaypanel/overlaypanel.ts","../../src/app/components/overlaypanel/primeng-overlaypanel.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,OnDestroy,EventEmitter,Renderer2,ElementRef,ChangeDetectorRef,NgZone,\n        ContentChildren,TemplateRef,AfterContentInit,QueryList,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {SharedModule,PrimeTemplate, PrimeNGConfig, OverlayService} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {trigger,state,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {ZIndexUtils} from 'primeng/utils';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    selector: 'p-overlayPanel',\n    template: `\n        <div *ngIf=\"render\" [ngClass]=\"'p-overlaypanel p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"onOverlayClick($event)\"\n            [@animation]=\"{value: (overlayVisible ? 'open': 'close'), params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\">\n            <div class=\"p-overlaypanel-content\" (click)=\"onContentClick()\" (mousedown)=\"onContentClick()\">\n                <ng-content></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </div>\n            <button *ngIf=\"showCloseIcon\" type=\"button\" class=\"p-overlaypanel-close p-link\" (click)=\"onCloseClick($event)\" (keydown.enter)=\"hide()\" [attr.aria-label]=\"ariaCloseLabel\" pRipple>\n                <span class=\"p-overlaypanel-close-icon pi pi-times\"></span>\n            </button>\n        </div>\n    `,\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                transform: 'scaleY(0.8)',\n                opacity: 0\n            })),\n            state('close', style({\n                opacity: 0\n            })),\n            state('open', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => close', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./overlaypanel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class OverlayPanel implements AfterContentInit, OnDestroy {\n\n    @Input() dismissable: boolean = true;\n\n    @Input() showCloseIcon: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any = 'body';\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() ariaCloseLabel: string;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() focusOnShow: boolean = true;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    container: HTMLDivElement;\n\n    overlayVisible: boolean = false;\n\n    render: boolean = false;\n\n    selfClick: boolean = false;\n\n    documentClickListener: any;\n\n    target: any;\n\n    willHide: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    destroyCallback: Function;\n\n    overlayEventListener;\n\n    overlaySubscription: Subscription;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, private zone: NgZone, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n\n            this.cd.markForCheck();\n        });\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener && this.dismissable) {\n            this.zone.runOutsideAngular(() => {\n                let documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n                const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n                this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n                    if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {\n                        this.zone.run(() => {\n                            this.hide();\n                        });\n                    }\n\n                    this.selfClick = false;\n                    this.cd.markForCheck();\n                });\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n            this.selfClick = false;\n        }\n    }\n\n    toggle(event, target?) {\n        if (this.overlayVisible) {\n            if (this.hasTargetChanged(event, target)) {\n                this.destroyCallback = () => {\n                    this.show(null, (target||event.currentTarget||event.target));\n                };\n            }\n\n            this.hide();\n        }\n        else {\n            this.show(event, target);\n        }\n    }\n\n    show(event, target?) {\n        this.target = target||event.currentTarget||event.target;\n        this.overlayVisible = true;\n        this.render = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n\n        this.selfClick = true;\n    }\n\n    onContentClick() {\n        this.selfClick = true;\n    }\n\n    hasTargetChanged(event, target) {\n        return this.target != null && this.target !== (target||event.currentTarget||event.target);\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    align() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);\n        }\n\n        DomHandler.absolutePosition(this.container, this.target);\n\n        const containerOffset = DomHandler.getOffset(this.container);\n        const targetOffset = DomHandler.getOffset(this.target);\n        let arrowLeft = 0;\n\n        if (containerOffset.left < targetOffset.left) {\n            arrowLeft = targetOffset.left - containerOffset.left;\n        }\n        this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n        if (containerOffset.top < targetOffset.top) {\n            DomHandler.addClass(this.container, 'p-overlaypanel-flipped');\n        }\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.toState === 'open') {\n            this.container = event.element;\n            this.onShow.emit(null);\n            this.appendContainer();\n            this.align();\n            this.bindDocumentClickListener();\n            this.bindDocumentResizeListener();\n            this.bindScrollListener();\n\n            if (this.focusOnShow) {\n                this.focus();\n            }\n\n            this.overlayEventListener = (e) => {\n                if (this.container && this.container.contains(e.target)) {\n                    this.selfClick = true;\n                }\n            }\n\n            this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                if (this.destroyCallback) {\n                    this.destroyCallback();\n                    this.destroyCallback = null;\n                }\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n            break;\n\n            case 'close':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(this.container);\n                }\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n\n                this.onContainerDestroy();\n                this.onHide.emit({});\n                this.render = false;\n            break;\n        }\n    }\n\n    focus() {\n        let focusable = DomHandler.findSingle(this.container, '[autofocus]');\n        if (focusable) {\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => focusable.focus(), 5);\n            });\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onCloseClick(event) {\n        this.hide();\n        event.preventDefault();\n    }\n\n    onWindowResize(event) {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onContainerDestroy() {\n        this.target = null;\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.target = null;\n        this.destroyCallback = null;\n        if (this.container) {\n            this.restoreAppend();\n            this.onContainerDestroy();\n        }\n\n        if (this.overlaySubscription) {\n            this.overlaySubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule, SharedModule],\n    exports: [OverlayPanel, SharedModule],\n    declarations: [OverlayPanel]\n})\nexport class OverlayPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i5 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i1 from 'primeng/dropdown';
+import { DropdownModule } from 'primeng/dropdown';
+import * as i4 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i6 from 'primeng/api';
+import { SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/inputnumber';
+import { InputNumberModule } from 'primeng/inputnumber';
+
+class Paginator {
+    constructor(cd) {
+        this.cd = cd;
+        this.pageLinkSize = 5;
+        this.onPageChange = new EventEmitter();
+        this.alwaysShow = true;
+        this.dropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.totalRecords = 0;
+        this.rows = 0;
+        this.showPageLinks = true;
+        this._first = 0;
+        this._page = 0;
+    }
+    ngOnInit() {
+        this.updatePaginatorState();
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.totalRecords) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+            this.updateFirst();
+            this.updateRowsPerPageOptions();
+        }
+        if (simpleChange.first) {
+            this._first = simpleChange.first.currentValue;
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rows) {
+            this.updatePageLinks();
+            this.updatePaginatorState();
+        }
+        if (simpleChange.rowsPerPageOptions) {
+            this.updateRowsPerPageOptions();
+        }
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    updateRowsPerPageOptions() {
+        if (this.rowsPerPageOptions) {
+            this.rowsPerPageItems = [];
+            for (let opt of this.rowsPerPageOptions) {
+                if (typeof opt == 'object' && opt['showAll']) {
+                    this.rowsPerPageItems.unshift({ label: opt['showAll'], value: this.totalRecords });
+                }
+                else {
+                    this.rowsPerPageItems.push({ label: String(opt), value: opt });
+                }
+            }
+        }
+    }
+    isFirstPage() {
+        return this.getPage() === 0;
+    }
+    isLastPage() {
+        return this.getPage() === this.getPageCount() - 1;
+    }
+    getPageCount() {
+        return Math.ceil(this.totalRecords / this.rows);
+    }
+    calculatePageLinkBoundaries() {
+        let numberOfPages = this.getPageCount(), visiblePages = Math.min(this.pageLinkSize, numberOfPages);
+        //calculate range, keep current in middle if necessary
+        let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))), end = Math.min(numberOfPages - 1, start + visiblePages - 1);
+        //check when approaching to last page
+        var delta = this.pageLinkSize - (end - start + 1);
+        start = Math.max(0, start - delta);
+        return [start, end];
+    }
+    updatePageLinks() {
+        this.pageLinks = [];
+        let boundaries = this.calculatePageLinkBoundaries(), start = boundaries[0], end = boundaries[1];
+        for (let i = start; i <= end; i++) {
+            this.pageLinks.push(i + 1);
+        }
+        if (this.showJumpToPageDropdown) {
+            this.pageItems = [];
+            for (let i = 0; i < this.getPageCount(); i++) {
+                this.pageItems.push({ label: String(i + 1), value: i });
+            }
+        }
+    }
+    changePage(p) {
+        var pc = this.getPageCount();
+        if (p >= 0 && p < pc) {
+            this._first = this.rows * p;
+            var state = {
+                page: p,
+                first: this.first,
+                rows: this.rows,
+                pageCount: pc
+            };
+            this.updatePageLinks();
+            this.onPageChange.emit(state);
+            this.updatePaginatorState();
+        }
+    }
+    updateFirst() {
+        const page = this.getPage();
+        if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {
+            Promise.resolve(null).then(() => this.changePage(page - 1));
+        }
+    }
+    getPage() {
+        return Math.floor(this.first / this.rows);
+    }
+    changePageToFirst(event) {
+        if (!this.isFirstPage()) {
+            this.changePage(0);
+        }
+        event.preventDefault();
+    }
+    changePageToPrev(event) {
+        this.changePage(this.getPage() - 1);
+        event.preventDefault();
+    }
+    changePageToNext(event) {
+        this.changePage(this.getPage() + 1);
+        event.preventDefault();
+    }
+    changePageToLast(event) {
+        if (!this.isLastPage()) {
+            this.changePage(this.getPageCount() - 1);
+        }
+        event.preventDefault();
+    }
+    onPageLinkClick(event, page) {
+        this.changePage(page);
+        event.preventDefault();
+    }
+    onRppChange(event) {
+        this.changePage(this.getPage());
+    }
+    onPageDropdownChange(event) {
+        this.changePage(event.value);
+    }
+    updatePaginatorState() {
+        this.paginatorState = {
+            page: this.getPage(),
+            pageCount: this.getPageCount(),
+            rows: this.rows,
+            first: this.first,
+            totalRecords: this.totalRecords
+        };
+    }
+    empty() {
+        return this.getPageCount() === 0;
+    }
+    currentPage() {
+        return this.getPageCount() > 0 ? this.getPage() + 1 : 0;
+    }
+    get currentPageReport() {
+        return this.currentPageReportTemplate
+            .replace("{currentPage}", String(this.currentPage()))
+            .replace("{totalPages}", String(this.getPageCount()))
+            .replace("{first}", String((this.totalRecords > 0) ? this._first + 1 : 0))
+            .replace("{last}", String(Math.min(this._first + this.rows, this.totalRecords)))
+            .replace("{rows}", String(this.rows))
+            .replace("{totalRecords}", String(this.totalRecords));
+    }
+}
+Paginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Paginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Paginator, selector: "p-paginator", inputs: { pageLinkSize: "pageLinkSize", style: "style", styleClass: "styleClass", alwaysShow: "alwaysShow", templateLeft: "templateLeft", templateRight: "templateRight", dropdownAppendTo: "dropdownAppendTo", dropdownScrollHeight: "dropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showFirstLastIcon: "showFirstLastIcon", totalRecords: "totalRecords", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showPageLinks: "showPageLinks", dropdownItemTemplate: "dropdownItemTemplate", first: "first" }, outputs: { onPageChange: "onPageChange" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"], components: [{ type: i1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.Ripple, selector: "[pRipple]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Paginator, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-paginator', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-paginator p-component'" *ngIf="alwaysShow ? true : (pageLinks && pageLinks.length > 1)">
+            <div class="p-paginator-left-content" *ngIf="templateLeft">
+                <ng-container *ngTemplateOutlet="templateLeft; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+            <span class="p-paginator-current" *ngIf="showCurrentPageReport">{{currentPageReport}}</span>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToFirst($event)" pRipple
+                    class="p-paginator-first p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-left"></span>
+            </button>
+            <button type="button" [disabled]="isFirstPage() || empty()" (click)="changePageToPrev($event)" pRipple
+                    class="p-paginator-prev p-paginator-element p-link" [ngClass]="{'p-disabled':isFirstPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-left"></span>
+            </button>
+            <span class="p-paginator-pages" *ngIf="showPageLinks">
+                <button type="button" *ngFor="let pageLink of pageLinks" class="p-paginator-page p-paginator-element p-link" [ngClass]="{'p-highlight': (pageLink-1 == getPage())}"
+                    (click)="onPageLinkClick($event, pageLink - 1)" pRipple>{{pageLink}}</button>
+            </span>
+            <p-dropdown [options]="pageItems" [ngModel]="getPage()" *ngIf="showJumpToPageDropdown" [disabled]="empty()" styleClass="p-paginator-page-options"
+                (onChange)="onPageDropdownChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-template pTemplate="selectedItem">{{currentPageReport}}</ng-template>
+            </p-dropdown>
+            <button type="button" [disabled]="isLastPage() || empty()" (click)="changePageToNext($event)" pRipple
+                    class="p-paginator-next p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-right"></span>
+            </button>
+            <button *ngIf="showFirstLastIcon" type="button" [disabled]="isLastPage() || empty()" (click)="changePageToLast($event)" pRipple
+                    class="p-paginator-last p-paginator-element p-link" [ngClass]="{'p-disabled':isLastPage() || empty()}">
+                <span class="p-paginator-icon pi pi-angle-double-right"></span>
+            </button>
+            <p-inputNumber *ngIf="showJumpToPageInput" [ngModel]="currentPage()" class="p-paginator-page-input" [disabled]="empty()" (ngModelChange)="changePage($event - 1)"></p-inputNumber>
+            <p-dropdown [options]="rowsPerPageItems" [(ngModel)]="rows" *ngIf="rowsPerPageOptions" styleClass="p-paginator-rpp-options" [disabled]="empty()"
+                (onChange)="onRppChange($event)" [appendTo]="dropdownAppendTo" [scrollHeight]="dropdownScrollHeight">
+                <ng-container *ngIf="dropdownItemTemplate">
+                    <ng-template let-item pTemplate="item">
+                        <ng-container *ngTemplateOutlet="dropdownItemTemplate; context: {$implicit: item}">
+                        </ng-container>
+                    </ng-template>
+                </ng-container>
+            </p-dropdown>
+            <div class="p-paginator-right-content" *ngIf="templateRight">
+                <ng-container *ngTemplateOutlet="templateRight; context: {$implicit: paginatorState}"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-paginator{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.p-paginator-left-content{margin-right:auto}.p-paginator-right-content{margin-left:auto}.p-paginator-page,.p-paginator-next,.p-paginator-last,.p-paginator-first,.p-paginator-prev,.p-paginator-current{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;position:relative}.p-paginator-element:focus{z-index:1;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageLinkSize: [{
+                type: Input
+            }], onPageChange: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], alwaysShow: [{
+                type: Input
+            }], templateLeft: [{
+                type: Input
+            }], templateRight: [{
+                type: Input
+            }], dropdownAppendTo: [{
+                type: Input
+            }], dropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], dropdownItemTemplate: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }] } });
+class PaginatorModule {
+}
+PaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, declarations: [Paginator], imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+PaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, imports: [[CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule], DropdownModule, InputNumberModule, FormsModule, SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PaginatorModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, DropdownModule, InputNumberModule, FormsModule, SharedModule, RippleModule],
+                    exports: [Paginator, DropdownModule, InputNumberModule, FormsModule, SharedModule],
+                    declarations: [Paginator]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Paginator, PaginatorModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-paginator.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-paginator.mjs","sources":["../../src/app/components/paginator/paginator.ts","../../src/app/components/paginator/primeng-paginator.ts"],"sourcesContent":["import {NgModule,Component,OnInit,Input,Output,ChangeDetectorRef,EventEmitter,TemplateRef,OnChanges,SimpleChanges,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {SelectItem} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule} from 'primeng/api';\nimport {InputNumberModule} from 'primeng/inputnumber';\n\n@Component({\n    selector: 'p-paginator',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-paginator p-component'\" *ngIf=\"alwaysShow ? true : (pageLinks && pageLinks.length > 1)\">\n            <div class=\"p-paginator-left-content\" *ngIf=\"templateLeft\">\n                <ng-container *ngTemplateOutlet=\"templateLeft; context: {$implicit: paginatorState}\"></ng-container>\n            </div>\n            <span class=\"p-paginator-current\" *ngIf=\"showCurrentPageReport\">{{currentPageReport}}</span>\n            <button *ngIf=\"showFirstLastIcon\" type=\"button\" [disabled]=\"isFirstPage() || empty()\" (click)=\"changePageToFirst($event)\" pRipple\n                    class=\"p-paginator-first p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isFirstPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-double-left\"></span>\n            </button>\n            <button type=\"button\" [disabled]=\"isFirstPage() || empty()\" (click)=\"changePageToPrev($event)\" pRipple\n                    class=\"p-paginator-prev p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isFirstPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-left\"></span>\n            </button>\n            <span class=\"p-paginator-pages\" *ngIf=\"showPageLinks\">\n                <button type=\"button\" *ngFor=\"let pageLink of pageLinks\" class=\"p-paginator-page p-paginator-element p-link\" [ngClass]=\"{'p-highlight': (pageLink-1 == getPage())}\"\n                    (click)=\"onPageLinkClick($event, pageLink - 1)\" pRipple>{{pageLink}}</button>\n            </span>\n            <p-dropdown [options]=\"pageItems\" [ngModel]=\"getPage()\" *ngIf=\"showJumpToPageDropdown\" [disabled]=\"empty()\" styleClass=\"p-paginator-page-options\"\n                (onChange)=\"onPageDropdownChange($event)\" [appendTo]=\"dropdownAppendTo\" [scrollHeight]=\"dropdownScrollHeight\">\n                <ng-template pTemplate=\"selectedItem\">{{currentPageReport}}</ng-template>\n            </p-dropdown>\n            <button type=\"button\" [disabled]=\"isLastPage() || empty()\" (click)=\"changePageToNext($event)\" pRipple\n                    class=\"p-paginator-next p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isLastPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-right\"></span>\n            </button>\n            <button *ngIf=\"showFirstLastIcon\" type=\"button\" [disabled]=\"isLastPage() || empty()\" (click)=\"changePageToLast($event)\" pRipple\n                    class=\"p-paginator-last p-paginator-element p-link\" [ngClass]=\"{'p-disabled':isLastPage() || empty()}\">\n                <span class=\"p-paginator-icon pi pi-angle-double-right\"></span>\n            </button>\n            <p-inputNumber *ngIf=\"showJumpToPageInput\" [ngModel]=\"currentPage()\" class=\"p-paginator-page-input\" [disabled]=\"empty()\" (ngModelChange)=\"changePage($event - 1)\"></p-inputNumber>\n            <p-dropdown [options]=\"rowsPerPageItems\" [(ngModel)]=\"rows\" *ngIf=\"rowsPerPageOptions\" styleClass=\"p-paginator-rpp-options\" [disabled]=\"empty()\"\n                (onChange)=\"onRppChange($event)\" [appendTo]=\"dropdownAppendTo\" [scrollHeight]=\"dropdownScrollHeight\">\n                <ng-container *ngIf=\"dropdownItemTemplate\">\n                    <ng-template let-item pTemplate=\"item\">\n                        <ng-container *ngTemplateOutlet=\"dropdownItemTemplate; context: {$implicit: item}\">\n                        </ng-container>\n                    </ng-template>\n                </ng-container>\n            </p-dropdown>\n            <div class=\"p-paginator-right-content\" *ngIf=\"templateRight\">\n                <ng-container *ngTemplateOutlet=\"templateRight; context: {$implicit: paginatorState}\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./paginator.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Paginator implements OnInit, OnChanges {\n\n    @Input() pageLinkSize: number = 5;\n\n    @Output() onPageChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() alwaysShow: boolean = true;\n\n    @Input() templateLeft: TemplateRef<any>;\n\n    @Input() templateRight: TemplateRef<any>;\n\n    @Input() dropdownAppendTo: any;\n\n    @Input() dropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() totalRecords: number = 0;\n\n    @Input() rows: number = 0;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showJumpToPageInput: boolean;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() dropdownItemTemplate: TemplateRef<any>;\n\n    pageLinks: number[];\n\n    pageItems: SelectItem[];\n\n    rowsPerPageItems: SelectItem[];\n\n    paginatorState: any;\n\n    _first: number = 0;\n\n    _page: number = 0;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        this.updatePaginatorState();\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.totalRecords) {\n            this.updatePageLinks();\n            this.updatePaginatorState();\n            this.updateFirst();\n            this.updateRowsPerPageOptions();\n        }\n\n        if (simpleChange.first) {\n            this._first = simpleChange.first.currentValue;\n            this.updatePageLinks();\n            this.updatePaginatorState();\n        }\n\n        if (simpleChange.rows) {\n            this.updatePageLinks();\n            this.updatePaginatorState();\n        }\n\n        if (simpleChange.rowsPerPageOptions) {\n            this.updateRowsPerPageOptions();\n        }\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val:number) {\n        this._first = val;\n    }\n\n    updateRowsPerPageOptions() {\n        if (this.rowsPerPageOptions) {\n            this.rowsPerPageItems = [];\n            for (let opt of this.rowsPerPageOptions) {\n                if (typeof opt == 'object' && opt['showAll']) {\n                    this.rowsPerPageItems.unshift({label: opt['showAll'], value: this.totalRecords});\n                }\n                else {\n                    this.rowsPerPageItems.push({label: String(opt), value: opt});\n                }\n            }\n        }\n    }\n\n    isFirstPage() {\n        return this.getPage() === 0;\n    }\n\n    isLastPage() {\n        return this.getPage() === this.getPageCount() - 1;\n    }\n\n    getPageCount() {\n        return Math.ceil(this.totalRecords/this.rows);\n    }\n\n    calculatePageLinkBoundaries() {\n        let numberOfPages = this.getPageCount(),\n        visiblePages = Math.min(this.pageLinkSize, numberOfPages);\n\n        //calculate range, keep current in middle if necessary\n        let start = Math.max(0, Math.ceil(this.getPage() - ((visiblePages) / 2))),\n        end = Math.min(numberOfPages - 1, start + visiblePages - 1);\n\n        //check when approaching to last page\n        var delta = this.pageLinkSize - (end - start + 1);\n        start = Math.max(0, start - delta);\n\n        return [start, end];\n    }\n\n    updatePageLinks() {\n        this.pageLinks = [];\n        let boundaries = this.calculatePageLinkBoundaries(),\n        start = boundaries[0],\n        end = boundaries[1];\n\n        for(let i = start; i <= end; i++) {\n            this.pageLinks.push(i + 1);\n        }\n\n        if (this.showJumpToPageDropdown) {\n            this.pageItems = [];\n            for (let i = 0; i < this.getPageCount(); i++) {\n                this.pageItems.push({label: String(i + 1), value: i});\n            }\n        }\n    }\n\n    changePage(p :number) {\n        var pc = this.getPageCount();\n\n        if (p >= 0 && p < pc) {\n            this._first = this.rows * p;\n            var state = {\n                page: p,\n                first: this.first,\n                rows: this.rows,\n                pageCount: pc\n            };\n            this.updatePageLinks();\n\n            this.onPageChange.emit(state);\n            this.updatePaginatorState();\n        }\n    }\n\n    updateFirst() {\n        const page = this.getPage();\n        if (page > 0 && this.totalRecords && (this.first >= this.totalRecords)) {\n            Promise.resolve(null).then(() => this.changePage(page - 1));\n        }\n    }\n\n    getPage(): number {\n        return Math.floor(this.first / this.rows);\n    }\n\n    changePageToFirst(event) {\n      if (!this.isFirstPage()){\n          this.changePage(0);\n      }\n\n      event.preventDefault();\n    }\n\n    changePageToPrev(event) {\n        this.changePage(this.getPage() - 1);\n        event.preventDefault();\n    }\n\n    changePageToNext(event) {\n        this.changePage(this.getPage()  + 1);\n        event.preventDefault();\n    }\n\n    changePageToLast(event) {\n      if (!this.isLastPage()){\n          this.changePage(this.getPageCount() - 1);\n      }\n\n      event.preventDefault();\n    }\n\n    onPageLinkClick(event, page) {\n        this.changePage(page);\n        event.preventDefault();\n    }\n\n    onRppChange(event) {\n        this.changePage(this.getPage());\n    }\n\n    onPageDropdownChange(event) {\n        this.changePage(event.value);\n    }\n\n    updatePaginatorState() {\n        this.paginatorState = {\n            page: this.getPage(),\n            pageCount: this.getPageCount(),\n            rows: this.rows,\n            first: this.first,\n            totalRecords: this.totalRecords\n        }\n    }\n\n    empty() {\n        return this.getPageCount() === 0;\n    }\n\n    currentPage() {\n        return this.getPageCount() > 0 ? this.getPage() + 1 : 0;\n    }\n\n    get currentPageReport() {\n        return this.currentPageReportTemplate\n                .replace(\"{currentPage}\", String(this.currentPage()))\n                .replace(\"{totalPages}\", String(this.getPageCount()))\n                .replace(\"{first}\", String((this.totalRecords > 0) ? this._first + 1 : 0))\n                .replace(\"{last}\", String(Math.min(this._first + this.rows, this.totalRecords)))\n                .replace(\"{rows}\", String(this.rows))\n                .replace(\"{totalRecords}\", String(this.totalRecords));\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,DropdownModule,InputNumberModule,FormsModule,SharedModule,RippleModule],\n    exports: [Paginator,DropdownModule,InputNumberModule,FormsModule,SharedModule],\n    declarations: [Paginator]\n})\nexport class PaginatorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,230 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+
+let idx = 0;
+class Panel {
+    constructor(el) {
+        this.el = el;
+        this.collapsed = false;
+        this.expandIcon = 'pi pi-plus';
+        this.collapseIcon = 'pi pi-minus';
+        this.showHeader = true;
+        this.toggler = "icon";
+        this.collapsedChange = new EventEmitter();
+        this.onBeforeToggle = new EventEmitter();
+        this.onAfterToggle = new EventEmitter();
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+        this.id = `p-panel-${idx++}`;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'icons':
+                    this.iconTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onHeaderClick(event) {
+        if (this.toggler === 'header') {
+            this.toggle(event);
+        }
+    }
+    onIconClick(event) {
+        if (this.toggler === 'icon') {
+            this.toggle(event);
+        }
+    }
+    toggle(event) {
+        if (this.animating) {
+            return false;
+        }
+        this.animating = true;
+        this.onBeforeToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+        if (this.toggleable) {
+            if (this.collapsed)
+                this.expand(event);
+            else
+                this.collapse(event);
+        }
+        event.preventDefault();
+    }
+    expand(event) {
+        this.collapsed = false;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    collapse(event) {
+        this.collapsed = true;
+        this.collapsedChange.emit(this.collapsed);
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onToggleDone(event) {
+        this.animating = false;
+        this.onAfterToggle.emit({ originalEvent: event, collapsed: this.collapsed });
+    }
+}
+Panel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Panel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Panel, selector: "p-panel", inputs: { toggleable: "toggleable", header: "header", collapsed: "collapsed", style: "style", styleClass: "styleClass", expandIcon: "expandIcon", collapseIcon: "collapseIcon", showHeader: "showHeader", toggler: "toggler", transitionOptions: "transitionOptions" }, outputs: { collapsedChange: "collapsedChange", onBeforeToggle: "onBeforeToggle", onAfterToggle: "onAfterToggle" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('panelContent', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('void', style({
+                height: '{{height}}'
+            }), { params: { height: '0' } }),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => hidden', animate('{{transitionParams}}')),
+            transition('void => visible', animate('{{transitionParams}}'))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Panel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panel', template: `
+        <div [attr.id]="id" [ngClass]="{'p-panel p-component': true, 'p-panel-toggleable': toggleable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-panel-header" *ngIf="showHeader" (click)="onHeaderClick($event)" [attr.id]="id + '-titlebar'">
+                <span class="p-panel-title" *ngIf="header" [attr.id]="id + '_header'">{{header}}</span>
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <div class="p-panel-icons">
+                    <ng-template *ngTemplateOutlet="iconTemplate"></ng-template>
+                    <button *ngIf="toggleable" type="button" [attr.id]="id + '-label'" class="p-panel-header-icon p-panel-toggler p-link" pRipple
+                        (click)="onIconClick($event)" (keydown.enter)="onIconClick($event)" [attr.aria-controls]="id + '-content'" role="tab" [attr.aria-expanded]="!collapsed">
+                        <span [class]="collapsed ? expandIcon : collapseIcon"></span>
+                    </button>
+                </div>
+            </div>
+            <div [attr.id]="id + '-content'" class="p-toggleable-content" [@panelContent]="collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}" (@panelContent.done)="onToggleDone($event)"
+                role="region" [attr.aria-hidden]="collapsed" [attr.aria-labelledby]="id  + '-titlebar'">
+                <div class="p-panel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+
+                <div class="p-panel-footer" *ngIf="footerFacet || footerTemplate">
+                    <ng-content select="p-footer"></ng-content>
+                    <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelContent', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('void', style({
+                                height: '{{height}}'
+                            }), { params: { height: '0' } }),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => hidden', animate('{{transitionParams}}')),
+                            transition('void => visible', animate('{{transitionParams}}'))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panel-header{display:flex;justify-content:space-between;align-items:center}.p-panel-title{line-height:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { toggleable: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], collapsed: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], expandIcon: [{
+                type: Input
+            }], collapseIcon: [{
+                type: Input
+            }], showHeader: [{
+                type: Input
+            }], toggler: [{
+                type: Input
+            }], collapsedChange: [{
+                type: Output
+            }], onBeforeToggle: [{
+                type: Output
+            }], onAfterToggle: [{
+                type: Output
+            }], transitionOptions: [{
+                type: Input
+            }], footerFacet: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PanelModule {
+}
+PanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, declarations: [Panel], imports: [CommonModule, SharedModule, RippleModule], exports: [Panel, SharedModule] });
+PanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, imports: [[CommonModule, SharedModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, RippleModule],
+                    exports: [Panel, SharedModule],
+                    declarations: [Panel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Panel, PanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-panel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-panel.mjs","sources":["../../src/app/components/panel/panel.ts","../../src/app/components/panel/primeng-panel.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ElementRef,ContentChild,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, TemplateRef, AfterContentInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SharedModule,Footer, PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-panel',\n    template: `\n        <div [attr.id]=\"id\" [ngClass]=\"{'p-panel p-component': true, 'p-panel-toggleable': toggleable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-panel-header\" *ngIf=\"showHeader\" (click)=\"onHeaderClick($event)\" [attr.id]=\"id + '-titlebar'\">\n                <span class=\"p-panel-title\" *ngIf=\"header\" [attr.id]=\"id + '_header'\">{{header}}</span>\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <div class=\"p-panel-icons\">\n                    <ng-template *ngTemplateOutlet=\"iconTemplate\"></ng-template>\n                    <button *ngIf=\"toggleable\" type=\"button\" [attr.id]=\"id + '-label'\" class=\"p-panel-header-icon p-panel-toggler p-link\" pRipple\n                        (click)=\"onIconClick($event)\" (keydown.enter)=\"onIconClick($event)\" [attr.aria-controls]=\"id + '-content'\" role=\"tab\" [attr.aria-expanded]=\"!collapsed\">\n                        <span [class]=\"collapsed ? expandIcon : collapseIcon\"></span>\n                    </button>\n                </div>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@panelContent]=\"collapsed ? {value: 'hidden', params: {transitionParams: animating ? transitionOptions : '0ms', height: '0', opacity:'0'}} : {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*', opacity: '1'}}\" (@panelContent.done)=\"onToggleDone($event)\"\n                role=\"region\" [attr.aria-hidden]=\"collapsed\" [attr.aria-labelledby]=\"id  + '-titlebar'\">\n                <div class=\"p-panel-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n\n                <div class=\"p-panel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                    <ng-content select=\"p-footer\"></ng-content>\n                    <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('panelContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('void', style({\n                height: '{{height}}'\n            }), {params: {height: '0'}}),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({ overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => hidden', animate('{{transitionParams}}')),\n            transition('void => visible', animate('{{transitionParams}}'))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./panel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Panel implements AfterContentInit,BlockableUI {\n\n    @Input() toggleable: boolean;\n\n    @Input() header: string;\n\n    @Input() collapsed: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() expandIcon: string = 'pi pi-plus';\n\n    @Input() collapseIcon: string = 'pi pi-minus';\n\n    @Input() showHeader: boolean = true;\n\n    @Input() toggler: string = \"icon\";\n\n    @Output() collapsedChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBeforeToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onAfterToggle: EventEmitter<any> = new EventEmitter();\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    @ContentChild(Footer) footerFacet;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public iconTemplate: TemplateRef<any>;\n\n    animating: boolean;\n\n    headerTemplate: TemplateRef<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    id: string = `p-panel-${idx++}`;\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'icons':\n                    this.iconTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onHeaderClick(event: Event) {\n        if (this.toggler === 'header') {\n            this.toggle(event);\n        }\n    }\n\n    onIconClick(event: Event) {\n        if (this.toggler === 'icon') {\n            this.toggle(event);\n        }\n    }\n\n    toggle(event: Event) {\n        if (this.animating) {\n            return false;\n        }\n\n        this.animating = true;\n        this.onBeforeToggle.emit({originalEvent: event, collapsed: this.collapsed});\n\n        if (this.toggleable) {\n            if (this.collapsed)\n                this.expand(event);\n            else\n                this.collapse(event);\n        }\n\n        event.preventDefault();\n    }\n\n    expand(event) {\n        this.collapsed = false;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    collapse(event) {\n        this.collapsed = true;\n        this.collapsedChange.emit(this.collapsed);\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onToggleDone(event: Event) {\n        this.animating = false;\n        this.onAfterToggle.emit({originalEvent: event, collapsed: this.collapsed});\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,SharedModule,RippleModule],\n    exports: [Panel,SharedModule],\n    declarations: [Panel]\n})\nexport class PanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,313 @@
+import * as i0 from '@angular/core';
+import { Component, ViewEncapsulation, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+
+class BasePanelMenuItem {
+    constructor(ref) {
+        this.ref = ref;
+    }
+    handleClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        item.expanded = !item.expanded;
+        this.ref.detectChanges();
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+    }
+}
+class PanelMenuSub extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenuSub, selector: "p-panelMenuSub", inputs: { item: "item", expanded: "expanded", parentExpanded: "parentExpanded", transitionOptions: "transitionOptions", root: "root" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('submenu', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-panelMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}" [@submenu]="expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}" role="tree">
+            <ng-template ngFor let-child [ngForOf]="item.items">
+                <li *ngIf="child.separator" class="p-menu-separator" role="separator">
+                <li *ngIf="!child.separator" class="p-menuitem" [ngClass]="child.styleClass" [class.p-hidden]="child.visible === false" [ngStyle]="child.style" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)" [attr.href]="child.url" class="p-menuitem-link" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'" [attr.id]="child.id" role="treeitem" [attr.aria-expanded]="child.expanded"
+                        (click)="handleClick($event,child)" [attr.target]="child.target" [attr.title]="child.title"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-panelmenu-icon pi pi-fw" [ngClass]="{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}" *ngIf="child.items"></span>
+                        <span class="p-menuitem-icon" [ngClass]="child.icon" *ngIf="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                    </a>
+                    <p-panelMenuSub [item]="child" [parentExpanded]="expanded && parentExpanded" [expanded]="child.expanded" [transitionOptions]="transitionOptions" *ngIf="child.items"></p-panelMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    animations: [
+                        trigger('submenu', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], expanded: [{
+                type: Input
+            }], parentExpanded: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }] } });
+class PanelMenu extends BasePanelMenuItem {
+    constructor(ref) {
+        super(ref);
+        this.multiple = true;
+        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';
+    }
+    collapseAll() {
+        for (let item of this.model) {
+            if (item.expanded) {
+                item.expanded = false;
+            }
+        }
+    }
+    handleClick(event, item) {
+        if (!this.multiple) {
+            for (let modelItem of this.model) {
+                if (item !== modelItem && modelItem.expanded) {
+                    modelItem.expanded = false;
+                }
+            }
+        }
+        this.animating = true;
+        super.handleClick(event, item);
+    }
+    onToggleDone() {
+        this.animating = false;
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.click();
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+}
+PanelMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+PanelMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PanelMenu, selector: "p-panelMenu", inputs: { model: "model", style: "style", styleClass: "styleClass", multiple: "multiple", transitionOptions: "transitionOptions" }, host: { classAttribute: "p-element" }, usesInheritance: true, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, isInline: true, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"], components: [{ type: PanelMenuSub, selector: "p-panelMenuSub", inputs: ["item", "expanded", "parentExpanded", "transitionOptions", "root"] }], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
+        trigger('rootItem', [
+            state('hidden', style({
+                height: '0',
+                overflow: 'hidden'
+            })),
+            state('visible', style({
+                height: '*'
+            })),
+            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+            transition('void => *', animate(0))
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-panelMenu', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-panelmenu p-component'">
+            <ng-container *ngFor="let item of model;let f=first;let l=last;">
+                <div class="p-panelmenu-panel" [ngClass]="{'p-hidden': item.visible === false}">
+                    <div [ngClass]="{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}" [class]="item.styleClass" [ngStyle]="item.style" pTooltip [tooltipOptions]="item.tooltipOptions">
+                        <a *ngIf="!item.routerLink" [attr.href]="item.url" (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.tabindex]="item.disabled ? null : '0'" [attr.id]="item.id"
+                           [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.aria-expanded]="item.expanded" [attr.id]="item.id + '_header'" [attr.aria-controls]="item.id +'_content'">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                        <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                           (click)="handleClick($event,item)" (keydown)="onItemKeyDown($event)" [attr.target]="item.target" [attr.title]="item.title" class="p-panelmenu-header-link" [attr.id]="item.id" [attr.tabindex]="item.disabled ? null : '0'"
+                           [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span *ngIf="item.items" class="p-panelmenu-icon pi" [ngClass]="{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}"></span>
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </div>
+                    <div *ngIf="item.items" class="p-toggleable-content" [@rootItem]="item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}"  (@rootItem.done)="onToggleDone()">
+                        <div class="p-panelmenu-content" role="region" [attr.id]="item.id +'_content' " [attr.aria-labelledby]="item.id +'_header'">
+                            <p-panelMenuSub [item]="item" [parentExpanded]="item.expanded" [expanded]="true" [transitionOptions]="transitionOptions" [root]="true"></p-panelMenuSub>
+                        </div>
+                    </div>
+                </div>
+            </ng-container>
+        </div>
+    `, animations: [
+                        trigger('rootItem', [
+                            state('hidden', style({
+                                height: '0',
+                                overflow: 'hidden'
+                            })),
+                            state('visible', style({
+                                height: '*'
+                            })),
+                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),
+                            transition('void => *', animate(0))
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-panelmenu .p-panelmenu-header-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative;text-decoration:none}.p-panelmenu .p-panelmenu-header-link:focus{z-index:1}.p-panelmenu .p-submenu-list{margin:0;padding:0;list-style:none}.p-panelmenu .p-menuitem-link{display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-decoration:none}.p-panelmenu .p-menuitem-text{line-height:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }] } });
+class PanelMenuModule {
+}
+PanelMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PanelMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, declarations: [PanelMenu, PanelMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [PanelMenu, RouterModule, TooltipModule] });
+PanelMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PanelMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [PanelMenu, RouterModule, TooltipModule],
+                    declarations: [PanelMenu, PanelMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { BasePanelMenuItem, PanelMenu, PanelMenuModule, PanelMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-panelmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-panelmenu.mjs","sources":["../../src/app/components/panelmenu/panelmenu.ts","../../src/app/components/panelmenu/primeng-panelmenu.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,state,style,transition,animate} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {DomHandler} from 'primeng/dom';\n\nexport class BasePanelMenuItem {\n\n    constructor(private ref: ChangeDetectorRef) {}\n\n    handleClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        item.expanded = !item.expanded;\n        this.ref.detectChanges();\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n    }\n}\n\n@Component({\n    selector: 'p-panelMenuSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': true, 'p-panelmenu-root-submenu': root}\" [@submenu]=\"expanded ? {value: 'visible', params: {transitionParams: transitionOptions, height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}\" role=\"tree\">\n            <ng-template ngFor let-child [ngForOf]=\"item.items\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" role=\"separator\">\n                <li *ngIf=\"!child.separator\" class=\"p-menuitem\" [ngClass]=\"child.styleClass\" [class.p-hidden]=\"child.visible === false\" [ngStyle]=\"child.style\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event)\" [attr.href]=\"child.url\" class=\"p-menuitem-link\" [attr.tabindex]=\"!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'\" [attr.id]=\"child.id\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" role=\"treeitem\" [attr.aria-expanded]=\"child.expanded\"\n                        (click)=\"handleClick($event,child)\" [attr.target]=\"child.target\" [attr.title]=\"child.title\">\n                        <span class=\"p-panelmenu-icon pi pi-fw\" [ngClass]=\"{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}\" *ngIf=\"child.items\"></span>\n                        <span class=\"p-menuitem-icon\" [ngClass]=\"child.icon\" *ngIf=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" [attr.tabindex]=\"!item.expanded || !parentExpanded ? null : child.disabled ? null : '0'\" [attr.id]=\"child.id\" role=\"treeitem\" [attr.aria-expanded]=\"child.expanded\"\n                        (click)=\"handleClick($event,child)\" [attr.target]=\"child.target\" [attr.title]=\"child.title\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-panelmenu-icon pi pi-fw\" [ngClass]=\"{'pi-angle-right':!child.expanded,'pi-angle-down':child.expanded}\" *ngIf=\"child.items\"></span>\n                        <span class=\"p-menuitem-icon\" [ngClass]=\"child.icon\" *ngIf=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                    </a>\n                    <p-panelMenuSub [item]=\"child\" [parentExpanded]=\"expanded && parentExpanded\" [expanded]=\"child.expanded\" [transitionOptions]=\"transitionOptions\" *ngIf=\"child.items\"></p-panelMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    animations: [\n        trigger('submenu', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PanelMenuSub extends BasePanelMenuItem {\n\n    @Input() item: MenuItem;\n\n    @Input() expanded: boolean;\n\n    @Input() parentExpanded: boolean;\n\n    @Input() transitionOptions: string;\n\n    @Input() root: boolean;\n\n    constructor(ref: ChangeDetectorRef) {\n        super(ref);\n    }\n\n\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n}\n\n@Component({\n    selector: 'p-panelMenu',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-panelmenu p-component'\">\n            <ng-container *ngFor=\"let item of model;let f=first;let l=last;\">\n                <div class=\"p-panelmenu-panel\" [ngClass]=\"{'p-hidden': item.visible === false}\">\n                    <div [ngClass]=\"{'p-component p-panelmenu-header':true, 'p-highlight':item.expanded,'p-disabled':item.disabled}\" [class]=\"item.styleClass\" [ngStyle]=\"item.style\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                        <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url\" (click)=\"handleClick($event,item)\" (keydown)=\"onItemKeyDown($event)\" [attr.tabindex]=\"item.disabled ? null : '0'\" [attr.id]=\"item.id\"\n                           [attr.target]=\"item.target\" [attr.title]=\"item.title\" class=\"p-panelmenu-header-link\" [attr.aria-expanded]=\"item.expanded\" [attr.id]=\"item.id + '_header'\" [attr.aria-controls]=\"item.id +'_content'\">\n                            <span *ngIf=\"item.items\" class=\"p-panelmenu-icon pi\" [ngClass]=\"{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}\"></span>\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                        <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\"\n                           (click)=\"handleClick($event,item)\" (keydown)=\"onItemKeyDown($event)\" [attr.target]=\"item.target\" [attr.title]=\"item.title\" class=\"p-panelmenu-header-link\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                           [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span *ngIf=\"item.items\" class=\"p-panelmenu-icon pi\" [ngClass]=\"{'pi-chevron-right':!item.expanded,'pi-chevron-down':item.expanded}\"></span>\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                    </div>\n                    <div *ngIf=\"item.items\" class=\"p-toggleable-content\" [@rootItem]=\"item.expanded ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}\"  (@rootItem.done)=\"onToggleDone()\">\n                        <div class=\"p-panelmenu-content\" role=\"region\" [attr.id]=\"item.id +'_content' \" [attr.aria-labelledby]=\"item.id +'_header'\">\n                            <p-panelMenuSub [item]=\"item\" [parentExpanded]=\"item.expanded\" [expanded]=\"true\" [transitionOptions]=\"transitionOptions\" [root]=\"true\"></p-panelMenuSub>\n                        </div>\n                    </div>\n                </div>\n            </ng-container>\n        </div>\n    `,\n    animations: [\n        trigger('rootItem', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({overflow: 'hidden'}), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./panelmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PanelMenu extends BasePanelMenuItem {\n\n    @Input() model: MenuItem[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() multiple: boolean = true;\n\n    @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    public animating: boolean;\n\n    constructor(ref: ChangeDetectorRef) {\n        super(ref);\n    }\n\n    collapseAll() {\n    \tfor(let item of this.model) {\n    \t\tif (item.expanded) {\n    \t\t\titem.expanded = false;\n    \t\t}\n    \t}\n    }\n\n    handleClick(event, item) {\n    \tif (!this.multiple) {\n            for(let modelItem of this.model) {\n        \t\tif (item !== modelItem && modelItem.expanded) {\n        \t\t\tmodelItem.expanded = false;\n        \t\t}\n        \t}\n    \t}\n\n        this.animating = true;\n        super.handleClick(event, item);\n    }\n\n    onToggleDone() {\n        this.animating = false;\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.click();\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [PanelMenu,RouterModule,TooltipModule],\n    declarations: [PanelMenu,PanelMenuSub]\n})\nexport class PanelMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,638 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, HostListener, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i3 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+
+class PasswordDirective {
+    constructor(el, zone) {
+        this.el = el;
+        this.zone = zone;
+        this.promptLabel = 'Enter a password';
+        this.weakLabel = 'Weak';
+        this.mediumLabel = 'Medium';
+        this.strongLabel = 'Strong';
+        this.feedback = true;
+    }
+    set showPassword(show) {
+        this.el.nativeElement.type = show ? 'text' : 'password';
+    }
+    ngDoCheck() {
+        this.updateFilledState();
+    }
+    onInput(e) {
+        this.updateFilledState();
+    }
+    updateFilledState() {
+        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;
+    }
+    createPanel() {
+        this.panel = document.createElement('div');
+        this.panel.className = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';
+        this.meter = document.createElement('div');
+        this.meter.className = 'p-password-meter';
+        this.info = document.createElement('div');
+        this.info.className = 'p-password-info';
+        this.info.textContent = this.promptLabel;
+        this.panel.appendChild(this.meter);
+        this.panel.appendChild(this.info);
+        this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';
+        document.body.appendChild(this.panel);
+    }
+    showOverlay() {
+        if (this.feedback) {
+            if (!this.panel) {
+                this.createPanel();
+            }
+            this.panel.style.zIndex = String(++DomHandler.zindex);
+            this.panel.style.display = 'block';
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');
+                    this.bindScrollListener();
+                    this.bindDocumentResizeListener();
+                }, 1);
+            });
+            DomHandler.absolutePosition(this.panel, this.el.nativeElement);
+        }
+    }
+    hideOverlay() {
+        if (this.feedback && this.panel) {
+            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');
+            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');
+            this.unbindScrollListener();
+            this.unbindDocumentResizeListener();
+            this.zone.runOutsideAngular(() => {
+                setTimeout(() => {
+                    this.ngOnDestroy();
+                }, 150);
+            });
+        }
+    }
+    onFocus() {
+        this.showOverlay();
+    }
+    onBlur() {
+        this.hideOverlay();
+    }
+    onKeyup(e) {
+        if (this.feedback) {
+            let value = e.target.value, label = null, meterPos = null;
+            if (value.length === 0) {
+                label = this.promptLabel;
+                meterPos = '0px 0px';
+            }
+            else {
+                var score = this.testStrength(value);
+                if (score < 30) {
+                    label = this.weakLabel;
+                    meterPos = '0px -10px';
+                }
+                else if (score >= 30 && score < 80) {
+                    label = this.mediumLabel;
+                    meterPos = '0px -20px';
+                }
+                else if (score >= 80) {
+                    label = this.strongLabel;
+                    meterPos = '0px -30px';
+                }
+            }
+            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                this.showOverlay();
+            }
+            this.meter.style.backgroundPosition = meterPos;
+            this.info.textContent = label;
+        }
+    }
+    testStrength(str) {
+        let grade = 0;
+        let val;
+        val = str.match('[0-9]');
+        grade += this.normalize(val ? val.length : 1 / 4, 1) * 25;
+        val = str.match('[a-zA-Z]');
+        grade += this.normalize(val ? val.length : 1 / 2, 3) * 10;
+        val = str.match('[!@#$%^&*?_~.,;=]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 35;
+        val = str.match('[A-Z]');
+        grade += this.normalize(val ? val.length : 1 / 6, 1) * 30;
+        grade *= str.length / 8;
+        return grade > 100 ? 100 : grade;
+    }
+    normalize(x, y) {
+        let diff = x - y;
+        if (diff <= 0)
+            return x / y;
+        else
+            return 1 + 0.5 * (x / (x + y / 4));
+    }
+    get disabled() {
+        return this.el.nativeElement.disabled;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {
+                    this.hideOverlay();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    onWindowResize() {
+        this.hideOverlay();
+    }
+    ngOnDestroy() {
+        if (this.panel) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.unbindDocumentResizeListener();
+            document.body.removeChild(this.panel);
+            this.panel = null;
+            this.meter = null;
+            this.info = null;
+        }
+    }
+}
+PasswordDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+PasswordDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: PasswordDirective, selector: "[pPassword]", inputs: { promptLabel: "promptLabel", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", feedback: "feedback", showPassword: "showPassword" }, host: { listeners: { "input": "onInput($event)", "focus": "onFocus()", "blur": "onBlur()", "keyup": "onKeyup($event)" }, properties: { "class.p-filled": "filled" }, classAttribute: "p-inputtext p-component p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordDirective, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pPassword]',
+                    host: {
+                        'class': 'p-inputtext p-component p-element',
+                        '[class.p-filled]': 'filled'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { promptLabel: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], showPassword: [{
+                type: Input
+            }], onInput: [{
+                type: HostListener,
+                args: ['input', ['$event']]
+            }], onFocus: [{
+                type: HostListener,
+                args: ['focus']
+            }], onBlur: [{
+                type: HostListener,
+                args: ['blur']
+            }], onKeyup: [{
+                type: HostListener,
+                args: ['keyup', ['$event']]
+            }] } });
+const Password_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Password),
+    multi: true
+};
+class Password {
+    constructor(cd, config, el, overlayService) {
+        this.cd = cd;
+        this.config = config;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.mediumRegex = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';
+        this.strongRegex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';
+        this.feedback = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.overlayVisible = false;
+        this.focused = false;
+        this.unmasked = false;
+        this.value = null;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnInit() {
+        this.infoText = this.promptText();
+        this.mediumCheckRegExp = new RegExp(this.mediumRegex);
+        this.strongCheckRegExp = new RegExp(this.strongRegex);
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.updateUI(this.value || "");
+        });
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                this.appendContainer();
+                this.alignOverlay();
+                this.bindScrollListener();
+                this.bindResizeListener();
+                break;
+            case 'void':
+                this.unbindScrollListener();
+                this.unbindResizeListener();
+                this.overlay = null;
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlay);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';
+            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);
+        }
+        else {
+            DomHandler.relativePosition(this.overlay, this.input.nativeElement);
+        }
+    }
+    onInput(event) {
+        this.value = event.target.value;
+        this.onModelChange(this.value);
+        this.onModelTouched();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        if (this.feedback) {
+            this.overlayVisible = true;
+        }
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        if (this.feedback) {
+            this.overlayVisible = false;
+        }
+        this.onBlur.emit(event);
+    }
+    onKeyUp(event) {
+        if (this.feedback) {
+            let value = event.target.value;
+            this.updateUI(value);
+            if (!this.overlayVisible) {
+                this.overlayVisible = true;
+            }
+        }
+    }
+    updateUI(value) {
+        let label = null;
+        let meter = null;
+        switch (this.testStrength(value)) {
+            case 1:
+                label = this.weakText();
+                meter = {
+                    strength: 'weak',
+                    width: '33.33%'
+                };
+                break;
+            case 2:
+                label = this.mediumText();
+                meter = {
+                    strength: 'medium',
+                    width: '66.66%'
+                };
+                break;
+            case 3:
+                label = this.strongText();
+                meter = {
+                    strength: 'strong',
+                    width: '100%'
+                };
+                break;
+            default:
+                label = this.promptText();
+                meter = null;
+                break;
+        }
+        this.meter = meter;
+        this.infoText = label;
+    }
+    onMaskToggle() {
+        this.unmasked = !this.unmasked;
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    testStrength(str) {
+        let level = 0;
+        if (this.strongCheckRegExp.test(str))
+            level = 3;
+        else if (this.mediumCheckRegExp.test(str))
+            level = 2;
+        else if (str.length)
+            level = 1;
+        return level;
+    }
+    writeValue(value) {
+        if (value === undefined)
+            this.value = null;
+        else
+            this.value = value;
+        if (this.feedback)
+            this.updateUI(this.value || "");
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.overlayVisible = false;
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    containerClass() {
+        return { 'p-password p-component p-inputwrapper': true,
+            'p-input-icon-right': this.toggleMask
+        };
+    }
+    inputFieldClass() {
+        return { 'p-password-input': true,
+            'p-disabled': this.disabled
+        };
+    }
+    toggleIconClass() {
+        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';
+    }
+    strengthClass() {
+        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;
+    }
+    filled() {
+        return (this.value != null && this.value.toString().length > 0);
+    }
+    promptText() {
+        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);
+    }
+    weakText() {
+        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);
+    }
+    mediumText() {
+        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);
+    }
+    strongText() {
+        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);
+    }
+    restoreAppend() {
+        if (this.overlay && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlay);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlay);
+        }
+    }
+    inputType() {
+        return this.unmasked ? 'text' : 'password';
+    }
+    getTranslation(option) {
+        return this.config.getTranslation(option);
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+        this.restoreAppend();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+    }
+}
+Password.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Password.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Password, selector: "p-password", inputs: { disabled: "disabled", promptLabel: "promptLabel", mediumRegex: "mediumRegex", strongRegex: "strongRegex", weakLabel: "weakLabel", mediumLabel: "mediumLabel", strongLabel: "strongLabel", inputId: "inputId", feedback: "feedback", appendTo: "appendTo", toggleMask: "toggleMask", inputStyleClass: "inputStyleClass", styleClass: "styleClass", style: "style", inputStyle: "inputStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", placeholder: "placeholder" }, outputs: { onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.p-inputwrapper-filled": "filled()", "class.p-inputwrapper-focus": "focused" }, classAttribute: "p-element p-inputwrapper" }, providers: [Password_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.InputText, selector: "[pInputText]" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Password, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-password', template: `
+        <div [ngClass]="containerClass()" [ngStyle]="style" [class]="styleClass">
+            <input #input [attr.id]="inputId" pInputText [ngClass]="inputFieldClass()" [ngStyle]="inputStyle" [class]="inputStyleClass" [attr.type]="inputType()" [attr.placeholder]="placeholder" [value]="value" (input)="onInput($event)" (focus)="onInputFocus($event)"
+                (blur)="onInputBlur($event)" (keyup)="onKeyUp($event)" />
+            <i *ngIf="toggleMask" [ngClass]="toggleIconClass()" (click)="onMaskToggle()"></i>
+            <div #overlay *ngIf="overlayVisible" [ngClass]="'p-password-panel p-component'" (click)="onOverlayClick($event)"
+                [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onAnimationStart($event)" (@overlayAnimation.done)="onAnimationEnd($event)">
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+                <ng-container *ngIf="contentTemplate; else content">
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </ng-container>
+                <ng-template #content>
+                    <div class="p-password-meter">
+                        <div [ngClass]="strengthClass()" [ngStyle]="{'width': meter ? meter.width : ''}"></div>
+                    </div>
+                    <div className="p-password-info">{{infoText}}</div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': 'filled()',
+                        '[class.p-inputwrapper-focus]': 'focused'
+                    }, providers: [Password_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0%;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], promptLabel: [{
+                type: Input
+            }], mediumRegex: [{
+                type: Input
+            }], strongRegex: [{
+                type: Input
+            }], weakLabel: [{
+                type: Input
+            }], mediumLabel: [{
+                type: Input
+            }], strongLabel: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], feedback: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], toggleMask: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], input: [{
+                type: ViewChild,
+                args: ['input']
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PasswordModule {
+}
+PasswordModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PasswordModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, declarations: [PasswordDirective, Password], imports: [CommonModule, InputTextModule], exports: [PasswordDirective, Password, SharedModule] });
+PasswordModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, imports: [[CommonModule, InputTextModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PasswordModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [PasswordDirective, Password, SharedModule],
+                    declarations: [PasswordDirective, Password]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Password, PasswordDirective, PasswordModule, Password_VALUE_ACCESSOR };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-password.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-password.mjs","sources":["../../src/app/components/password/password.ts","../../src/app/components/password/primeng-password.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,OnDestroy,DoCheck,NgZone, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, QueryList, TemplateRef, Component, AfterContentInit, ViewChild, ChangeDetectorRef, forwardRef, Output, EventEmitter} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {OverlayService, PrimeNGConfig, PrimeTemplate, TranslationKeys, SharedModule} from 'primeng/api';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n    selector: '[pPassword]',\n    host: {\n        'class': 'p-inputtext p-component p-element',\n        '[class.p-filled]': 'filled'\n    }\n})\nexport class PasswordDirective implements OnDestroy,DoCheck {\n\n    @Input() promptLabel: string = 'Enter a password';\n\n    @Input() weakLabel: string = 'Weak';\n\n    @Input() mediumLabel: string = 'Medium';\n\n    @Input() strongLabel: string = 'Strong';\n\n    @Input() feedback: boolean = true;\n\n    @Input() set showPassword(show: boolean) {\n        this.el.nativeElement.type = show ? 'text' : 'password';\n    }\n\n    panel: HTMLDivElement;\n\n    meter: any;\n\n    info: any;\n\n    filled: boolean;\n\n    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e) {\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n    }\n\n    createPanel() {\n        this.panel = document.createElement('div');\n        this.panel.className = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';\n        this.meter = document.createElement('div');\n        this.meter.className = 'p-password-meter';\n        this.info = document.createElement('div');\n        this.info.className = 'p-password-info';\n        this.info.textContent = this.promptLabel;\n        this.panel.appendChild(this.meter);\n        this.panel.appendChild(this.info);\n        this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';\n        document.body.appendChild(this.panel);\n    }\n\n    showOverlay() {\n        if (this.feedback) {\n            if (!this.panel) {\n                this.createPanel();\n            }\n\n            this.panel.style.zIndex = String(++DomHandler.zindex);\n            this.panel.style.display = 'block';\n            this.zone.runOutsideAngular(() => {\n\n                setTimeout(() => {\n                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');\n                    this.bindScrollListener();\n                    this.bindDocumentResizeListener();\n                }, 1);\n            });\n            DomHandler.absolutePosition(this.panel, this.el.nativeElement);\n        }\n    }\n\n    hideOverlay() {\n        if (this.feedback && this.panel) {\n            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');\n            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');\n            this.unbindScrollListener();\n            this.unbindDocumentResizeListener();\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.ngOnDestroy();\n                }, 150);\n            });\n        }\n    }\n\n    @HostListener('focus')\n    onFocus() {\n        this.showOverlay();\n    }\n\n    @HostListener('blur')\n    onBlur() {\n        this.hideOverlay();\n    }\n\n    @HostListener('keyup', ['$event'])\n    onKeyup(e) {\n        if (this.feedback) {\n            let value = e.target.value,\n            label = null,\n            meterPos = null;\n\n            if (value.length === 0) {\n                label = this.promptLabel;\n                meterPos = '0px 0px';\n            }\n            else {\n                var score = this.testStrength(value);\n\n                if (score < 30) {\n                    label = this.weakLabel;\n                    meterPos = '0px -10px';\n                }\n                else if (score >= 30 && score < 80) {\n                    label = this.mediumLabel;\n                    meterPos = '0px -20px';\n                }\n                else if (score >= 80) {\n                    label = this.strongLabel;\n                    meterPos = '0px -30px';\n                }\n            }\n\n            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                this.showOverlay();\n            }\n\n            this.meter.style.backgroundPosition = meterPos;\n            this.info.textContent = label;\n        }\n    }\n\n    testStrength(str: string) {\n        let grade: number = 0;\n        let val: RegExpMatchArray;\n\n        val = str.match('[0-9]');\n        grade += this.normalize(val ? val.length : 1/4, 1) * 25;\n\n        val = str.match('[a-zA-Z]');\n        grade += this.normalize(val ? val.length : 1/2, 3) * 10;\n\n        val = str.match('[!@#$%^&*?_~.,;=]');\n        grade += this.normalize(val ? val.length : 1/6, 1) * 35;\n\n        val = str.match('[A-Z]');\n        grade += this.normalize(val ? val.length : 1/6, 1) * 30;\n\n        grade *= str.length / 8;\n\n        return grade > 100 ? 100 : grade;\n    }\n\n    normalize(x, y) {\n        let diff = x - y;\n\n        if (diff <= 0)\n            return x / y;\n        else\n            return 1 + 0.5 * (x / (x + y/4));\n    }\n\n    get disabled(): boolean {\n        return this.el.nativeElement.disabled;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hideOverlay();\n    }\n\n    ngOnDestroy() {\n        if (this.panel) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.unbindDocumentResizeListener();\n\n            document.body.removeChild(this.panel);\n            this.panel = null;\n            this.meter = null;\n            this.info = null;\n        }\n    }\n}\n\n\nexport const Password_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Password),\n    multi: true\n};\n@Component({\n    selector: 'p-password',\n    template: `\n        <div [ngClass]=\"containerClass()\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input #input [attr.id]=\"inputId\" pInputText [ngClass]=\"inputFieldClass()\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.type]=\"inputType()\" [attr.placeholder]=\"placeholder\" [value]=\"value\" (input)=\"onInput($event)\" (focus)=\"onInputFocus($event)\"\n                (blur)=\"onInputBlur($event)\" (keyup)=\"onKeyUp($event)\" />\n            <i *ngIf=\"toggleMask\" [ngClass]=\"toggleIconClass()\" (click)=\"onMaskToggle()\"></i>\n            <div #overlay *ngIf=\"overlayVisible\" [ngClass]=\"'p-password-panel p-component'\" (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onAnimationStart($event)\" (@overlayAnimation.done)=\"onAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"contentTemplate; else content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #content>\n                    <div class=\"p-password-meter\">\n                        <div [ngClass]=\"strengthClass()\" [ngStyle]=\"{'width': meter ? meter.width : ''}\"></div>\n                    </div>\n                    <div className=\"p-password-info\">{{infoText}}</div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled()',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [Password_VALUE_ACCESSOR],\n    styleUrls: ['./password.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Password implements AfterContentInit,OnInit {\n\n    @Input() disabled: boolean;\n\n    @Input() promptLabel: string;\n\n    @Input() mediumRegex: string = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\n\n    @Input() strongRegex: string = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n\n    @Input() weakLabel: string;\n\n    @Input() mediumLabel: string;\n\n    @Input() strongLabel: string;\n\n    @Input() inputId: string;\n\n    @Input() feedback: boolean = true;\n\n    @Input() appendTo: any;\n\n    @Input() toggleMask: boolean;\n\n    @Input() inputStyleClass: string;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() inputStyle: any;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() placeholder: string;\n\n    @ViewChild('input') input: ElementRef;\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    overlayVisible: boolean = false;\n\n    meter: any;\n\n    infoText: string;\n\n    focused: boolean = false;\n\n    unmasked: boolean = false;\n\n    mediumCheckRegExp: any;\n\n    strongCheckRegExp: any;\n\n    resizeListener: any;\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    overlay: any;\n\n    value: string = null;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    translationSubscription: Subscription;\n\n    constructor(private cd: ChangeDetectorRef, private config: PrimeNGConfig, public el: ElementRef, public overlayService: OverlayService) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.infoText = this.promptText();\n        this.mediumCheckRegExp = new RegExp(this.mediumRegex);\n        this.strongCheckRegExp = new RegExp(this.strongRegex);\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.updateUI(this.value || \"\");\n        });\n    }\n\n    onAnimationStart(event) {\n        switch(event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                this.appendContainer();\n                this.alignOverlay();\n                this.bindScrollListener();\n                this.bindResizeListener();\n            break;\n\n            case 'void':\n                this.unbindScrollListener();\n                this.unbindResizeListener();\n                this.overlay = null;\n            break;\n        }\n    }\n\n    onAnimationEnd(event) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';\n            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);\n        }\n        else {\n            DomHandler.relativePosition(this.overlay, this.input.nativeElement);\n        }\n    }\n\n    onInput(event)  {\n        this.value = event.target.value;\n        this.onModelChange(this.value);\n        this.onModelTouched();\n    }\n\n    onInputFocus(event: Event) {\n        this.focused = true;\n        if (this.feedback) {\n            this.overlayVisible = true;\n        }\n\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: Event) {\n        this.focused = false;\n        if (this.feedback) {\n            this.overlayVisible = false;\n        }\n\n        this.onBlur.emit(event);\n    }\n\n    onKeyUp(event) {\n        if (this.feedback) {\n            let value = event.target.value;\n            this.updateUI(value);\n\n            if (!this.overlayVisible) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n\n    updateUI(value) {\n        let label = null;\n        let meter = null;\n\n        switch (this.testStrength(value)) {\n            case 1:\n                label = this.weakText();\n                meter = {\n                    strength: 'weak',\n                    width: '33.33%'\n                };\n                break;\n\n            case 2:\n                label = this.mediumText();\n                meter = {\n                    strength: 'medium',\n                    width: '66.66%'\n                };\n                break;\n\n            case 3:\n                label = this.strongText();\n                meter = {\n                    strength: 'strong',\n                    width: '100%'\n                };\n                break;\n\n            default:\n                label = this.promptText();\n                meter = null;\n                break;\n        }\n\n        this.meter = meter;\n        this.infoText = label;\n    }\n\n    onMaskToggle() {\n        this.unmasked = !this.unmasked;\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    testStrength(str) {\n        let level = 0;\n\n        if (this.strongCheckRegExp.test(str))\n            level = 3;\n        else if (this.mediumCheckRegExp.test(str))\n            level = 2;\n        else if (str.length)\n            level = 1;\n\n        return level;\n    }\n\n    writeValue(value: any) : void {\n        if (value === undefined)\n            this.value = null;\n        else\n            this.value = value;\n\n        if (this.feedback)\n            this.updateUI(this.value || \"\");\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    containerClass() {\n        return {'p-password p-component p-inputwrapper': true,\n            'p-input-icon-right': this.toggleMask\n        };\n    }\n\n    inputFieldClass() {\n        return {'p-password-input' : true,\n                'p-disabled': this.disabled\n        };\n    }\n\n    toggleIconClass() {\n        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';\n    }\n\n    strengthClass() {\n        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;\n    }\n\n    filled() {\n        return (this.value != null && this.value.toString().length > 0)\n    }\n\n    promptText() {\n        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);\n    }\n\n    weakText() {\n        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);\n    }\n\n    mediumText() {\n        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);\n    }\n\n    strongText() {\n        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);\n    }\n\n    restoreAppend() {\n        if (this.overlay && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlay);\n        }\n    }\n\n    inputType() {\n        return this.unmasked ? 'text' : 'password';\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    ngOnDestroy() {\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n            this.overlay = null;\n        }\n\n        this.restoreAppend();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, InputTextModule],\n    exports: [PasswordDirective, Password, SharedModule],\n    declarations: [PasswordDirective, Password]\n})\nexport class PasswordModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,815 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i4 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i2 from '@angular/cdk/drag-drop';
+import { transferArrayItem, moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
+import { UniqueComponentId, ObjectUtils } from 'primeng/utils';
+
+class PickList {
+    constructor(el, cd, filterService) {
+        this.el = el;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.trackBy = (index, item) => item;
+        this.showSourceFilter = true;
+        this.showTargetFilter = true;
+        this.metaKeySelection = true;
+        this.dragdrop = false;
+        this.showSourceControls = true;
+        this.showTargetControls = true;
+        this.disabled = false;
+        this.filterMatchMode = "contains";
+        this.breakpoint = "960px";
+        this.onMoveToSource = new EventEmitter();
+        this.onMoveAllToSource = new EventEmitter();
+        this.onMoveAllToTarget = new EventEmitter();
+        this.onMoveToTarget = new EventEmitter();
+        this.onSourceReorder = new EventEmitter();
+        this.onTargetReorder = new EventEmitter();
+        this.onSourceSelect = new EventEmitter();
+        this.onTargetSelect = new EventEmitter();
+        this.onSourceFilter = new EventEmitter();
+        this.onTargetFilter = new EventEmitter();
+        this.selectedItemsSource = [];
+        this.selectedItemsTarget = [];
+        this.id = UniqueComponentId();
+        this.SOURCE_LIST = -1;
+        this.TARGET_LIST = 1;
+    }
+    ngOnInit() {
+        if (this.responsive) {
+            this.createStyle();
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'sourceHeader':
+                    this.sourceHeaderTemplate = item.template;
+                    break;
+                case 'targetHeader':
+                    this.targetHeaderTemplate = item.template;
+                    break;
+                case 'emptymessagesource':
+                    this.emptyMessageSourceTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagesource':
+                    this.emptyFilterMessageSourceTemplate = item.template;
+                    break;
+                case 'emptymessagetarget':
+                    this.emptyMessageTargetTemplate = item.template;
+                    break;
+                case 'emptyfiltermessagetarget':
+                    this.emptyFilterMessageTargetTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.movedUp || this.movedDown) {
+            let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');
+            let listItem;
+            if (this.movedUp)
+                listItem = listItems[0];
+            else
+                listItem = listItems[listItems.length - 1];
+            DomHandler.scrollInView(this.reorderedListElement, listItem);
+            this.movedUp = false;
+            this.movedDown = false;
+            this.reorderedListElement = null;
+        }
+    }
+    onItemClick(event, item, selectedItems, callback) {
+        if (this.disabled) {
+            return;
+        }
+        let index = this.findIndexInSelection(item, selectedItems);
+        let selected = (index != -1);
+        let metaSelection = this.itemTouched ? false : this.metaKeySelection;
+        if (metaSelection) {
+            let metaKey = (event.metaKey || event.ctrlKey || event.shiftKey);
+            if (selected && metaKey) {
+                selectedItems.splice(index, 1);
+            }
+            else {
+                if (!metaKey) {
+                    selectedItems.length = 0;
+                }
+                selectedItems.push(item);
+            }
+        }
+        else {
+            if (selected)
+                selectedItems.splice(index, 1);
+            else
+                selectedItems.push(item);
+        }
+        callback.emit({ originalEvent: event, items: selectedItems });
+        this.itemTouched = false;
+    }
+    onSourceItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveRight();
+    }
+    onTargetItemDblClick() {
+        if (this.disabled) {
+            return;
+        }
+        this.moveLeft();
+    }
+    onFilter(event, data, listType) {
+        let query = event.target.value.trim().toLocaleLowerCase(this.filterLocale);
+        if (listType === this.SOURCE_LIST)
+            this.filterValueSource = query;
+        else if (listType === this.TARGET_LIST)
+            this.filterValueTarget = query;
+        this.filter(data, listType);
+    }
+    filter(data, listType) {
+        let searchFields = this.filterBy.split(',');
+        if (listType === this.SOURCE_LIST) {
+            this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
+            this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
+        }
+        else if (listType === this.TARGET_LIST) {
+            this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
+            this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
+        }
+    }
+    isItemVisible(item, listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
+        else
+            return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
+    }
+    isEmpty(listType) {
+        if (listType == this.SOURCE_LIST)
+            return this.filterValueSource ? (!this.visibleOptionsSource || this.visibleOptionsSource.length === 0) : (!this.source || this.source.length === 0);
+        else
+            return this.filterValueTarget ? (!this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0) : (!this.target || this.target.length === 0);
+    }
+    isVisibleInList(data, item, filterValue) {
+        if (filterValue && filterValue.trim().length) {
+            for (let i = 0; i < data.length; i++) {
+                if (item == data[i]) {
+                    return true;
+                }
+            }
+        }
+        else {
+            return true;
+        }
+    }
+    onItemTouchEnd() {
+        if (this.disabled) {
+            return;
+        }
+        this.itemTouched = true;
+    }
+    sortByIndexInList(items, list) {
+        return items.sort((item1, item2) => ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));
+    }
+    moveUp(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex - 1];
+                    list[selectedItemIndex - 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedUp = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveTop(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = 0; i < selectedItems.length; i++) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != 0) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.unshift(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = 0;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveDown(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list[selectedItemIndex];
+                    let temp = list[selectedItemIndex + 1];
+                    list[selectedItemIndex + 1] = movedItem;
+                    list[selectedItemIndex] = temp;
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            this.movedDown = true;
+            this.reorderedListElement = listElement;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveBottom(listElement, list, selectedItems, callback, listType) {
+        if (selectedItems && selectedItems.length) {
+            selectedItems = this.sortByIndexInList(selectedItems, list);
+            for (let i = selectedItems.length - 1; i >= 0; i--) {
+                let selectedItem = selectedItems[i];
+                let selectedItemIndex = ObjectUtils.findIndexInList(selectedItem, list);
+                if (selectedItemIndex != (list.length - 1)) {
+                    let movedItem = list.splice(selectedItemIndex, 1)[0];
+                    list.push(movedItem);
+                }
+                else {
+                    break;
+                }
+            }
+            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
+                this.filter(list, listType);
+            listElement.scrollTop = listElement.scrollHeight;
+            callback.emit({ items: selectedItems });
+        }
+    }
+    moveRight() {
+        if (this.selectedItemsSource && this.selectedItemsSource.length) {
+            for (let i = 0; i < this.selectedItemsSource.length; i++) {
+                let selectedItem = this.selectedItemsSource[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {
+                    this.target.push(this.source.splice(ObjectUtils.findIndexInList(selectedItem, this.source), 1)[0]);
+                    if (this.visibleOptionsSource)
+                        this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource), 1);
+                }
+            }
+            this.onMoveToTarget.emit({
+                items: this.selectedItemsSource
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    moveAllRight() {
+        if (this.source) {
+            let movedItems = [];
+            for (let i = 0; i < this.source.length; i++) {
+                if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
+                    let removedItem = this.source.splice(i, 1)[0];
+                    this.target.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToTarget.emit({
+                items: movedItems
+            });
+            this.selectedItemsSource = [];
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+            this.visibleOptionsSource = [];
+        }
+    }
+    moveLeft() {
+        if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
+            for (let i = 0; i < this.selectedItemsTarget.length; i++) {
+                let selectedItem = this.selectedItemsTarget[i];
+                if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {
+                    this.source.push(this.target.splice(ObjectUtils.findIndexInList(selectedItem, this.target), 1)[0]);
+                    if (this.visibleOptionsTarget)
+                        this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
+                }
+            }
+            this.onMoveToSource.emit({
+                items: this.selectedItemsTarget
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+    }
+    moveAllLeft() {
+        if (this.target) {
+            let movedItems = [];
+            for (let i = 0; i < this.target.length; i++) {
+                if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
+                    let removedItem = this.target.splice(i, 1)[0];
+                    this.source.push(removedItem);
+                    movedItems.push(removedItem);
+                    i--;
+                }
+            }
+            this.onMoveAllToSource.emit({
+                items: movedItems
+            });
+            this.selectedItemsTarget = [];
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+            this.visibleOptionsTarget = [];
+        }
+    }
+    isSelected(item, selectedItems) {
+        return this.findIndexInSelection(item, selectedItems) != -1;
+    }
+    findIndexInSelection(item, selectedItems) {
+        return ObjectUtils.findIndexInList(item, selectedItems);
+    }
+    onDrop(event, listType) {
+        let isTransfer = event.previousContainer !== event.container;
+        let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
+        if (listType === this.SOURCE_LIST) {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsTarget)
+                    this.visibleOptionsTarget.splice(event.previousIndex, 1);
+                this.onMoveToSource.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onSourceReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueSource) {
+                this.filter(this.source, this.SOURCE_LIST);
+            }
+        }
+        else {
+            if (isTransfer) {
+                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                if (this.visibleOptionsSource)
+                    this.visibleOptionsSource.splice(event.previousIndex, 1);
+                this.onMoveToTarget.emit({ items: [event.item.data] });
+            }
+            else {
+                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
+                this.onTargetReorder.emit({ items: [event.item.data] });
+            }
+            if (this.filterValueTarget) {
+                this.filter(this.target, this.TARGET_LIST);
+            }
+        }
+    }
+    getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
+        let previousIndex, currentIndex;
+        if (droppedList === this.SOURCE_LIST) {
+            previousIndex = isTransfer ? this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;
+            currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
+        }
+        else {
+            previousIndex = isTransfer ? this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;
+            currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
+        }
+        return { previousIndex, currentIndex };
+    }
+    findFilteredCurrentIndex(visibleOptions, index, options) {
+        if (visibleOptions.length === index) {
+            let toIndex = ObjectUtils.findIndexInList(visibleOptions[index - 1], options);
+            return toIndex + 1;
+        }
+        else {
+            return ObjectUtils.findIndexInList(visibleOptions[index], options);
+        }
+    }
+    resetFilter() {
+        this.visibleOptionsSource = null;
+        this.filterValueSource = null;
+        this.visibleOptionsTarget = null;
+        this.filterValueTarget = null;
+        this.sourceFilterViewChild.nativeElement.value = '';
+        this.targetFilterViewChild.nativeElement.value = '';
+    }
+    onItemKeydown(event, item, selectedItems, callback) {
+        let listItem = event.currentTarget;
+        switch (event.which) {
+            //down
+            case 40:
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //up
+            case 38:
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.onItemClick(event, item, selectedItems, callback);
+                event.preventDefault();
+                break;
+        }
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.el.nativeElement.children[0].setAttribute(this.id, '');
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = `
+            @media screen and (max-width: ${this.breakpoint}) {
+                .p-picklist[${this.id}] {
+                    flex-direction: column;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons {
+                    padding: var(--content-padding);
+                    flex-direction: row;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button {
+                    margin-right: var(--inline-spacing);
+                    margin-bottom: 0;
+                }
+
+                .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {
+                    margin-right: 0;
+                }
+
+                .p-picklist[${this.id}] .pi-angle-right:before {
+                    content: "\\e930"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-right:before {
+                    content: "\\e92c"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-left:before {
+                    content: "\\e933"
+                }
+
+                .p-picklist[${this.id}] .pi-angle-double-left:before {
+                    content: "\\e92f"
+                }
+            }
+            `;
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+            ``;
+        }
+    }
+    ngOnDestroy() {
+        this.destroyStyle();
+    }
+}
+PickList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+PickList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: PickList, selector: "p-pickList", inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: "responsive", filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: "showSourceFilter", showTargetFilter: "showTargetFilter", metaKeySelection: "metaKeySelection", dragdrop: "dragdrop", style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: "showSourceControls", showTargetControls: "showTargetControls", sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: "disabled", ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "listViewSourceChild", first: true, predicate: ["sourcelist"], descendants: true }, { propertyName: "listViewTargetChild", first: true, predicate: ["targetlist"], descendants: true }, { propertyName: "sourceFilterViewChild", first: true, predicate: ["sourceFilter"], descendants: true }, { propertyName: "targetFilterViewChild", first: true, predicate: ["targetFilter"], descendants: true }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickList, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-pickList', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="'p-picklist p-component'" cdkDropListGroup>
+            <div class="p-picklist-buttons p-picklist-source-controls" *ngIf="showSourceControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-source-wrapper">
+                <div class="p-picklist-header" *ngIf="sourceHeader || sourceHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!sourceHeaderTemplate">{{sourceHeader}}</div>
+                    <ng-container *ngTemplateOutlet="sourceHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showSourceFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #sourceFilter type="text" role="textbox" (keyup)="onFilter($event,source,SOURCE_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="sourceFilterPlaceholder" [attr.aria-label]="ariaSourceFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+
+                <ul #sourcelist class="p-picklist-list p-picklist-source" cdkDropList [cdkDropListData]="source" (cdkDropListDropped)="onDrop($event, SOURCE_LIST)"
+                    [ngStyle]="sourceStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="source" [ngForTrackBy]="sourceTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsSource,onSourceSelect)" (dblclick)="onSourceItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsSource,onSourceSelect)"
+                            *ngIf="isItemVisible(item, SOURCE_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsSource)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueSource || !emptyFilterMessageSourceTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageSourceTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueSource">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageSourceTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-transfer-buttons">
+                <button type="button" [attr.aria-label]="rightButtonAriaLabel" pButton pRipple icon="pi pi-angle-right" [disabled]="disabled" (click)="moveRight()"></button>
+                <button type="button" [attr.aria-label]="allRightButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-right" [disabled]="disabled" (click)="moveAllRight()"></button>
+                <button type="button" [attr.aria-label]="leftButtonAriaLabel" pButton pRipple icon="pi pi-angle-left" [disabled]="disabled" (click)="moveLeft()"></button>
+                <button type="button" [attr.aria-label]="allLeftButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-left" [disabled]="disabled" (click)="moveAllLeft()"></button>
+            </div>
+            <div class="p-picklist-list-wrapper p-picklist-target-wrapper">
+                <div class="p-picklist-header" *ngIf="targetHeader || targetHeaderTemplate">
+                    <div class="p-picklist-title" *ngIf="!targetHeaderTemplate">{{targetHeader}}</div>
+                    <ng-container *ngTemplateOutlet="targetHeaderTemplate"></ng-container>
+                </div>
+                <div class="p-picklist-filter-container" *ngIf="filterBy && showTargetFilter !== false">
+                    <div class="p-picklist-filter">
+                        <input #targetFilter type="text" role="textbox" (keyup)="onFilter($event,target,TARGET_LIST)" class="p-picklist-filter-input p-inputtext p-component" [disabled]="disabled" [attr.placeholder]="targetFilterPlaceholder" [attr.aria-label]="ariaTargetFilterLabel">
+                        <span class="p-picklist-filter-icon pi pi-search"></span>
+                    </div>
+                </div>
+                <ul #targetlist class="p-picklist-list p-picklist-target" cdkDropList [cdkDropListData]="target" (cdkDropListDropped)="onDrop($event, TARGET_LIST)"
+                    [ngStyle]="targetStyle" role="listbox" aria-multiselectable="multiple">
+                    <ng-template ngFor let-item [ngForOf]="target" [ngForTrackBy]="targetTrackBy || trackBy" let-i="index" let-l="last">
+                        <li [ngClass]="{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}" pRipple cdkDrag [cdkDragData]="item" [cdkDragDisabled]="!dragdrop"
+                            (click)="onItemClick($event,item,selectedItemsTarget,onTargetSelect)" (dblclick)="onTargetItemDblClick()" (touchend)="onItemTouchEnd()" (keydown)="onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)"
+                            *ngIf="isItemVisible(item, TARGET_LIST)" tabindex="0" role="option" [attr.aria-selected]="isSelected(item, selectedItemsTarget)">
+                            <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                        </li>
+                    </ng-template>
+                    <ng-container *ngIf="isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)">
+                        <li class="p-picklist-empty-message" *ngIf="!filterValueTarget || !emptyFilterMessageTargetTemplate">
+                            <ng-container *ngTemplateOutlet="emptyMessageTargetTemplate"></ng-container>
+                        </li>
+                        <li class="p-picklist-empty-message" *ngIf="filterValueTarget">
+                            <ng-container *ngTemplateOutlet="emptyFilterMessageTargetTemplate"></ng-container>
+                        </li>
+                    </ng-container>
+                </ul>
+            </div>
+            <div class="p-picklist-buttons p-picklist-target-controls" *ngIf="showTargetControls">
+                <button type="button" [attr.aria-label]="upButtonAriaLabel" pButton pRipple icon="pi pi-angle-up" [disabled]="disabled" (click)="moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="topButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-up" [disabled]="disabled" (click)="moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="downButtonAriaLabel" pButton pRipple icon="pi pi-angle-down" [disabled]="disabled" (click)="moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+                <button type="button" [attr.aria-label]="bottomButtonAriaLabel" pButton pRipple icon="pi pi-angle-double-down" [disabled]="disabled" (click)="moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)"></button>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-picklist{display:flex}.p-picklist-buttons{display:flex;flex-direction:column;justify-content:center}.p-picklist-list-wrapper{flex:1 1 50%}.p-picklist-list{list-style-type:none;margin:0;padding:0;overflow:auto;min-height:12rem}.p-picklist-item{display:block;cursor:pointer;overflow:hidden;position:relative}.p-picklist-item:not(.cdk-drag-disabled){cursor:move}.p-picklist-item.cdk-drag-placeholder{opacity:0}.p-picklist-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.p-picklist-filter{position:relative}.p-picklist-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-picklist-filter-input{width:100%}.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }]; }, propDecorators: { source: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], sourceHeader: [{
+                type: Input
+            }], rightButtonAriaLabel: [{
+                type: Input
+            }], leftButtonAriaLabel: [{
+                type: Input
+            }], allRightButtonAriaLabel: [{
+                type: Input
+            }], allLeftButtonAriaLabel: [{
+                type: Input
+            }], upButtonAriaLabel: [{
+                type: Input
+            }], downButtonAriaLabel: [{
+                type: Input
+            }], topButtonAriaLabel: [{
+                type: Input
+            }], bottomButtonAriaLabel: [{
+                type: Input
+            }], targetHeader: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], sourceTrackBy: [{
+                type: Input
+            }], targetTrackBy: [{
+                type: Input
+            }], showSourceFilter: [{
+                type: Input
+            }], showTargetFilter: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], dragdrop: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], sourceStyle: [{
+                type: Input
+            }], targetStyle: [{
+                type: Input
+            }], showSourceControls: [{
+                type: Input
+            }], showTargetControls: [{
+                type: Input
+            }], sourceFilterPlaceholder: [{
+                type: Input
+            }], targetFilterPlaceholder: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], ariaSourceFilterLabel: [{
+                type: Input
+            }], ariaTargetFilterLabel: [{
+                type: Input
+            }], filterMatchMode: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onMoveToSource: [{
+                type: Output
+            }], onMoveAllToSource: [{
+                type: Output
+            }], onMoveAllToTarget: [{
+                type: Output
+            }], onMoveToTarget: [{
+                type: Output
+            }], onSourceReorder: [{
+                type: Output
+            }], onTargetReorder: [{
+                type: Output
+            }], onSourceSelect: [{
+                type: Output
+            }], onTargetSelect: [{
+                type: Output
+            }], onSourceFilter: [{
+                type: Output
+            }], onTargetFilter: [{
+                type: Output
+            }], listViewSourceChild: [{
+                type: ViewChild,
+                args: ['sourcelist']
+            }], listViewTargetChild: [{
+                type: ViewChild,
+                args: ['targetlist']
+            }], sourceFilterViewChild: [{
+                type: ViewChild,
+                args: ['sourceFilter']
+            }], targetFilterViewChild: [{
+                type: ViewChild,
+                args: ['targetFilter']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class PickListModule {
+}
+PickListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+PickListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, declarations: [PickList], imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], exports: [PickList, SharedModule, DragDropModule] });
+PickListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule], SharedModule, DragDropModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: PickListModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, SharedModule, RippleModule, DragDropModule],
+                    exports: [PickList, SharedModule, DragDropModule],
+                    declarations: [PickList]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { PickList, PickListModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-picklist.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-picklist.mjs","sources":["../../src/app/components/picklist/picklist.ts","../../src/app/components/picklist/primeng-picklist.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, AfterViewChecked, Input, Output, ContentChildren, QueryList, TemplateRef, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule} from 'primeng/button';\nimport {SharedModule,PrimeTemplate,FilterService} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\nimport {CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem} from '@angular/cdk/drag-drop';\nimport {ObjectUtils, UniqueComponentId} from 'primeng/utils';\n\n@Component({\n    selector: 'p-pickList',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"'p-picklist p-component'\" cdkDropListGroup>\n            <div class=\"p-picklist-buttons p-picklist-source-controls\" *ngIf=\"showSourceControls\">\n                <button type=\"button\" [attr.aria-label]=\"upButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-up\" [disabled]=\"disabled\" (click)=\"moveUp(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"topButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-up\" [disabled]=\"disabled\" (click)=\"moveTop(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"downButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-down\" [disabled]=\"disabled\" (click)=\"moveDown(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"bottomButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-down\" [disabled]=\"disabled\" (click)=\"moveBottom(sourcelist,source,selectedItemsSource,onSourceReorder,SOURCE_LIST)\"></button>\n            </div>\n            <div class=\"p-picklist-list-wrapper p-picklist-source-wrapper\">\n                <div class=\"p-picklist-header\" *ngIf=\"sourceHeader || sourceHeaderTemplate\">\n                    <div class=\"p-picklist-title\" *ngIf=\"!sourceHeaderTemplate\">{{sourceHeader}}</div>\n                    <ng-container *ngTemplateOutlet=\"sourceHeaderTemplate\"></ng-container>\n                </div>\n                <div class=\"p-picklist-filter-container\" *ngIf=\"filterBy && showSourceFilter !== false\">\n                    <div class=\"p-picklist-filter\">\n                        <input #sourceFilter type=\"text\" role=\"textbox\" (keyup)=\"onFilter($event,source,SOURCE_LIST)\" class=\"p-picklist-filter-input p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"sourceFilterPlaceholder\" [attr.aria-label]=\"ariaSourceFilterLabel\">\n                        <span class=\"p-picklist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n\n                <ul #sourcelist class=\"p-picklist-list p-picklist-source\" cdkDropList [cdkDropListData]=\"source\" (cdkDropListDropped)=\"onDrop($event, SOURCE_LIST)\"\n                    [ngStyle]=\"sourceStyle\" role=\"listbox\" aria-multiselectable=\"multiple\">\n                    <ng-template ngFor let-item [ngForOf]=\"source\" [ngForTrackBy]=\"sourceTrackBy || trackBy\" let-i=\"index\" let-l=\"last\">\n                        <li [ngClass]=\"{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsSource),'p-disabled': disabled}\" pRipple cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,selectedItemsSource,onSourceSelect)\" (dblclick)=\"onSourceItemDblClick()\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,selectedItemsSource,onSourceSelect)\"\n                            *ngIf=\"isItemVisible(item, SOURCE_LIST)\" tabindex=\"0\" role=\"option\" [attr.aria-selected]=\"isSelected(item, selectedItemsSource)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty(SOURCE_LIST) && (emptyMessageSourceTemplate || emptyFilterMessageSourceTemplate)\">\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"!filterValueSource || !emptyFilterMessageSourceTemplate\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageSourceTemplate\"></ng-container>\n                        </li>\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"filterValueSource\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageSourceTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n            <div class=\"p-picklist-buttons p-picklist-transfer-buttons\">\n                <button type=\"button\" [attr.aria-label]=\"rightButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-right\" [disabled]=\"disabled\" (click)=\"moveRight()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"allRightButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-right\" [disabled]=\"disabled\" (click)=\"moveAllRight()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"leftButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-left\" [disabled]=\"disabled\" (click)=\"moveLeft()\"></button>\n                <button type=\"button\" [attr.aria-label]=\"allLeftButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-left\" [disabled]=\"disabled\" (click)=\"moveAllLeft()\"></button>\n            </div>\n            <div class=\"p-picklist-list-wrapper p-picklist-target-wrapper\">\n                <div class=\"p-picklist-header\" *ngIf=\"targetHeader || targetHeaderTemplate\">\n                    <div class=\"p-picklist-title\" *ngIf=\"!targetHeaderTemplate\">{{targetHeader}}</div>\n                    <ng-container *ngTemplateOutlet=\"targetHeaderTemplate\"></ng-container>\n                </div>\n                <div class=\"p-picklist-filter-container\" *ngIf=\"filterBy && showTargetFilter !== false\">\n                    <div class=\"p-picklist-filter\">\n                        <input #targetFilter type=\"text\" role=\"textbox\" (keyup)=\"onFilter($event,target,TARGET_LIST)\" class=\"p-picklist-filter-input p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"targetFilterPlaceholder\" [attr.aria-label]=\"ariaTargetFilterLabel\">\n                        <span class=\"p-picklist-filter-icon pi pi-search\"></span>\n                    </div>\n                </div>\n                <ul #targetlist class=\"p-picklist-list p-picklist-target\" cdkDropList [cdkDropListData]=\"target\" (cdkDropListDropped)=\"onDrop($event, TARGET_LIST)\"\n                    [ngStyle]=\"targetStyle\" role=\"listbox\" aria-multiselectable=\"multiple\">\n                    <ng-template ngFor let-item [ngForOf]=\"target\" [ngForTrackBy]=\"targetTrackBy || trackBy\" let-i=\"index\" let-l=\"last\">\n                        <li [ngClass]=\"{'p-picklist-item':true,'p-highlight':isSelected(item,selectedItemsTarget), 'p-disabled': disabled}\" pRipple cdkDrag [cdkDragData]=\"item\" [cdkDragDisabled]=\"!dragdrop\"\n                            (click)=\"onItemClick($event,item,selectedItemsTarget,onTargetSelect)\" (dblclick)=\"onTargetItemDblClick()\" (touchend)=\"onItemTouchEnd()\" (keydown)=\"onItemKeydown($event,item,selectedItemsTarget,onTargetSelect)\"\n                            *ngIf=\"isItemVisible(item, TARGET_LIST)\" tabindex=\"0\" role=\"option\" [attr.aria-selected]=\"isSelected(item, selectedItemsTarget)\">\n                            <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                        </li>\n                    </ng-template>\n                    <ng-container *ngIf=\"isEmpty(TARGET_LIST) && (emptyMessageTargetTemplate || emptyFilterMessageTargetTemplate)\">\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"!filterValueTarget || !emptyFilterMessageTargetTemplate\">\n                            <ng-container *ngTemplateOutlet=\"emptyMessageTargetTemplate\"></ng-container>\n                        </li>\n                        <li class=\"p-picklist-empty-message\" *ngIf=\"filterValueTarget\">\n                            <ng-container *ngTemplateOutlet=\"emptyFilterMessageTargetTemplate\"></ng-container>\n                        </li>\n                    </ng-container>\n                </ul>\n            </div>\n            <div class=\"p-picklist-buttons p-picklist-target-controls\" *ngIf=\"showTargetControls\">\n                <button type=\"button\" [attr.aria-label]=\"upButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-up\" [disabled]=\"disabled\" (click)=\"moveUp(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"topButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-up\" [disabled]=\"disabled\" (click)=\"moveTop(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"downButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-down\" [disabled]=\"disabled\" (click)=\"moveDown(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n                <button type=\"button\" [attr.aria-label]=\"bottomButtonAriaLabel\" pButton pRipple icon=\"pi pi-angle-double-down\" [disabled]=\"disabled\" (click)=\"moveBottom(targetlist,target,selectedItemsTarget,onTargetReorder,TARGET_LIST)\"></button>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./picklist.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class PickList implements AfterViewChecked,AfterContentInit {\n\n    @Input() source: any[];\n\n    @Input() target: any[];\n\n    @Input() sourceHeader: string;\n\n    @Input() rightButtonAriaLabel: string;\n\n    @Input() leftButtonAriaLabel: string;\n\n    @Input() allRightButtonAriaLabel: string;\n\n    @Input() allLeftButtonAriaLabel: string;\n\n    @Input() upButtonAriaLabel: string;\n\n    @Input() downButtonAriaLabel: string;\n\n    @Input() topButtonAriaLabel: string;\n\n    @Input() bottomButtonAriaLabel: string;\n\n    @Input() targetHeader: string;\n\n    @Input() responsive: boolean;\n\n    @Input() filterBy: string;\n\n    @Input() filterLocale: string;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Input() sourceTrackBy: Function;\n\n    @Input() targetTrackBy: Function;\n\n    @Input() showSourceFilter: boolean = true;\n\n    @Input() showTargetFilter: boolean = true;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() dragdrop: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() sourceStyle: any;\n\n    @Input() targetStyle: any;\n\n    @Input() showSourceControls: boolean = true;\n\n    @Input() showTargetControls: boolean = true;\n\n    @Input() sourceFilterPlaceholder: string;\n\n    @Input() targetFilterPlaceholder: string;\n\n    @Input() disabled: boolean = false;\n\n    @Input() ariaSourceFilterLabel: string;\n\n    @Input() ariaTargetFilterLabel: string;\n\n    @Input() filterMatchMode: string = \"contains\";\n\n    @Input() breakpoint: string = \"960px\";\n\n    @Output() onMoveToSource: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveAllToSource: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveAllToTarget: EventEmitter<any> = new EventEmitter();\n\n    @Output() onMoveToTarget: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSourceFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onTargetFilter: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('sourcelist') listViewSourceChild: ElementRef;\n\n    @ViewChild('targetlist') listViewTargetChild: ElementRef;\n\n    @ViewChild('sourceFilter') sourceFilterViewChild: ElementRef;\n\n    @ViewChild('targetFilter') targetFilterViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    public itemTemplate: TemplateRef<any>;\n\n    public visibleOptionsSource: any[];\n\n    public visibleOptionsTarget: any[];\n\n    selectedItemsSource: any[] = [];\n\n    selectedItemsTarget: any[] = [];\n\n    reorderedListElement: any;\n\n    movedUp: boolean;\n\n    movedDown: boolean;\n\n    itemTouched: boolean;\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    filterValueSource: string;\n\n    filterValueTarget: string;\n\n    fromListType: number;\n\n    emptyMessageSourceTemplate: TemplateRef<any>;\n\n    emptyFilterMessageSourceTemplate: TemplateRef<any>;\n\n    emptyMessageTargetTemplate: TemplateRef<any>;\n\n    emptyFilterMessageTargetTemplate: TemplateRef<any>;\n\n    sourceHeaderTemplate: TemplateRef<any>;\n\n    targetHeaderTemplate: TemplateRef<any>;\n\n    readonly SOURCE_LIST = -1;\n\n    readonly TARGET_LIST = 1;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef, public filterService: FilterService) {}\n\n\n    ngOnInit() {\n        if (this.responsive) {\n            this.createStyle();\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'sourceHeader':\n                    this.sourceHeaderTemplate = item.template;\n                break;\n\n                case 'targetHeader':\n                    this.targetHeaderTemplate = item.template;\n                break;\n\n                case 'emptymessagesource':\n                    this.emptyMessageSourceTemplate = item.template;\n                break;\n\n                case 'emptyfiltermessagesource':\n                    this.emptyFilterMessageSourceTemplate = item.template;\n                break;\n\n                case 'emptymessagetarget':\n                    this.emptyMessageTargetTemplate = item.template;\n                break;\n\n                case 'emptyfiltermessagetarget':\n                    this.emptyFilterMessageTargetTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.movedUp||this.movedDown) {\n            let listItems = DomHandler.find(this.reorderedListElement, 'li.p-highlight');\n            let listItem;\n\n            if (this.movedUp)\n                listItem = listItems[0];\n            else\n                listItem = listItems[listItems.length - 1];\n\n            DomHandler.scrollInView(this.reorderedListElement, listItem);\n            this.movedUp = false;\n            this.movedDown = false;\n            this.reorderedListElement = null;\n        }\n    }\n\n    onItemClick(event, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n        if (this.disabled) {\n            return;\n        }\n\n        let index = this.findIndexInSelection(item,selectedItems);\n        let selected = (index != -1);\n        let metaSelection = this.itemTouched ? false : this.metaKeySelection;\n\n        if (metaSelection) {\n            let metaKey = (event.metaKey||event.ctrlKey||event.shiftKey);\n\n            if (selected && metaKey) {\n                selectedItems.splice(index, 1);\n            }\n            else {\n                if (!metaKey) {\n                    selectedItems.length = 0;\n                }\n                selectedItems.push(item);\n            }\n        }\n        else {\n            if (selected)\n                selectedItems.splice(index, 1);\n            else\n                selectedItems.push(item);\n        }\n\n        callback.emit({originalEvent: event, items: selectedItems});\n\n        this.itemTouched = false;\n    }\n\n    onSourceItemDblClick() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.moveRight();\n    }\n\n    onTargetItemDblClick() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.moveLeft();\n    }\n\n    onFilter(event: KeyboardEvent, data: any[], listType: number) {\n        let query = ((<HTMLInputElement> event.target).value.trim() as any).toLocaleLowerCase(this.filterLocale);\n        if (listType === this.SOURCE_LIST)\n            this.filterValueSource = query;\n        else if (listType === this.TARGET_LIST)\n            this.filterValueTarget = query;\n\n        this.filter(data, listType);\n    }\n\n    filter(data: any[], listType: number) {\n        let searchFields = this.filterBy.split(',');\n\n        if (listType === this.SOURCE_LIST) {\n            this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);\n            this.onSourceFilter.emit({query: this.filterValueSource, value: this.visibleOptionsSource});\n        }\n        else if (listType === this.TARGET_LIST) {\n            this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);\n            this.onTargetFilter.emit({query: this.filterValueTarget, value: this.visibleOptionsTarget});\n        }\n    }\n\n    isItemVisible(item: any, listType: number): boolean {\n        if (listType == this.SOURCE_LIST)\n            return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);\n        else\n            return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);\n    }\n\n    isEmpty(listType: number) {\n        if (listType == this.SOURCE_LIST)\n            return this.filterValueSource ? (!this.visibleOptionsSource || this.visibleOptionsSource.length === 0) : (!this.source || this.source.length === 0);\n        else\n            return this.filterValueTarget ? (!this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0) : (!this.target || this.target.length === 0);\n    }\n\n\n    isVisibleInList(data: any[], item: any, filterValue: string): boolean {\n        if (filterValue && filterValue.trim().length) {\n            for(let i = 0; i < data.length; i++) {\n                if (item == data[i]) {\n                    return true;\n                }\n            }\n        }\n        else {\n            return true;\n        }\n    }\n\n    onItemTouchEnd() {\n        if (this.disabled) {\n            return;\n        }\n\n        this.itemTouched = true;\n    }\n\n    private sortByIndexInList(items: any[], list: any) {\n        return items.sort((item1, item2) =>\n            ObjectUtils.findIndexInList(item1, list) - ObjectUtils.findIndexInList(item2, list));\n    }\n\n    moveUp(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = 0; i < selectedItems.length; i++) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = list[selectedItemIndex];\n                    let temp = list[selectedItemIndex-1];\n                    list[selectedItemIndex-1] = movedItem;\n                    list[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            this.movedUp = true;\n            this.reorderedListElement = listElement;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveTop(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = 0; i < selectedItems.length; i++) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != 0) {\n                    let movedItem = list.splice(selectedItemIndex,1)[0];\n                    list.unshift(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            listElement.scrollTop = 0;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveDown(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = selectedItems.length - 1; i >= 0; i--) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != (list.length - 1)) {\n                    let movedItem = list[selectedItemIndex];\n                    let temp = list[selectedItemIndex+1];\n                    list[selectedItemIndex+1] = movedItem;\n                    list[selectedItemIndex] = temp;\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            this.movedDown = true;\n            this.reorderedListElement = listElement;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveBottom(listElement, list, selectedItems, callback, listType) {\n        if (selectedItems && selectedItems.length) {\n            selectedItems = this.sortByIndexInList(selectedItems, list);\n            for(let i = selectedItems.length - 1; i >= 0; i--) {\n                let selectedItem = selectedItems[i];\n                let selectedItemIndex: number = ObjectUtils.findIndexInList(selectedItem, list);\n\n                if (selectedItemIndex != (list.length - 1)) {\n                    let movedItem = list.splice(selectedItemIndex,1)[0];\n                    list.push(movedItem);\n                }\n                else {\n                    break;\n                }\n            }\n\n            if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))\n                this.filter(list, listType);\n\n            listElement.scrollTop = listElement.scrollHeight;\n            callback.emit({items: selectedItems});\n        }\n    }\n\n    moveRight() {\n        if (this.selectedItemsSource && this.selectedItemsSource.length) {\n            for(let i = 0; i < this.selectedItemsSource.length; i++) {\n                let selectedItem = this.selectedItemsSource[i];\n                if (ObjectUtils.findIndexInList(selectedItem, this.target) == -1) {\n                    this.target.push(this.source.splice(ObjectUtils.findIndexInList(selectedItem, this.source),1)[0]);\n\n                    if (this.visibleOptionsSource)\n                        this.visibleOptionsSource.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsSource),1);\n                }\n            }\n            this.onMoveToTarget.emit({\n                items: this.selectedItemsSource\n            });\n            this.selectedItemsSource = [];\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n        }\n    }\n\n    moveAllRight() {\n        if (this.source) {\n            let movedItems = [];\n\n            for(let i = 0; i < this.source.length; i++) {\n                if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {\n                    let removedItem = this.source.splice(i, 1)[0];\n                    this.target.push(removedItem);\n                    movedItems.push(removedItem);\n                    i--;\n                }\n            }\n\n            this.onMoveAllToTarget.emit({\n                items: movedItems\n            });\n\n            this.selectedItemsSource = [];\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n\n            this.visibleOptionsSource = [];\n        }\n    }\n\n    moveLeft() {\n        if (this.selectedItemsTarget && this.selectedItemsTarget.length) {\n            for(let i = 0; i < this.selectedItemsTarget.length; i++) {\n                let selectedItem = this.selectedItemsTarget[i];\n                if (ObjectUtils.findIndexInList(selectedItem, this.source) == -1) {\n                    this.source.push(this.target.splice(ObjectUtils.findIndexInList(selectedItem, this.target),1)[0]);\n\n                    if (this.visibleOptionsTarget)\n                        this.visibleOptionsTarget.splice(ObjectUtils.findIndexInList(selectedItem, this.visibleOptionsTarget),1)[0]\n                }\n            }\n            this.onMoveToSource.emit({\n                items: this.selectedItemsTarget\n            });\n\n            this.selectedItemsTarget = [];\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n        }\n    }\n\n    moveAllLeft() {\n        if (this.target) {\n            let movedItems = [];\n\n            for(let i = 0; i < this.target.length; i++) {\n                if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {\n                    let removedItem = this.target.splice(i, 1)[0];\n                    this.source.push(removedItem);\n                    movedItems.push(removedItem);\n                    i--;\n                }\n            }\n\n            this.onMoveAllToSource.emit({\n                items: movedItems\n            });\n\n            this.selectedItemsTarget = [];\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n\n            this.visibleOptionsTarget = [];\n        }\n    }\n\n    isSelected(item: any, selectedItems: any[]) {\n        return this.findIndexInSelection(item, selectedItems) != -1;\n    }\n\n    findIndexInSelection(item: any, selectedItems: any[]): number {\n        return ObjectUtils.findIndexInList(item, selectedItems);\n    }\n\n    onDrop(event: CdkDragDrop<string[]>, listType: number) {\n        let isTransfer = event.previousContainer !== event.container;\n        let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);\n\n        if (listType === this.SOURCE_LIST) {\n            if (isTransfer) {\n                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n\n                if (this.visibleOptionsTarget)\n                    this.visibleOptionsTarget.splice(event.previousIndex, 1);\n\n                this.onMoveToSource.emit({items: [event.item.data]});\n            }\n            else {\n                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n                this.onSourceReorder.emit({items: [event.item.data]});\n            }\n\n            if (this.filterValueSource) {\n                this.filter(this.source, this.SOURCE_LIST);\n            }\n        }\n        else {\n            if (isTransfer) {\n                transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n\n                if (this.visibleOptionsSource)\n                    this.visibleOptionsSource.splice(event.previousIndex, 1);\n\n                this.onMoveToTarget.emit({items: [event.item.data]});\n            }\n            else {\n                moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);\n                this.onTargetReorder.emit({items: [event.item.data]});\n            }\n\n            if (this.filterValueTarget) {\n                this.filter(this.target, this.TARGET_LIST);\n            }\n        }\n    }\n\n    getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {\n        let previousIndex, currentIndex;\n\n        if (droppedList === this.SOURCE_LIST) {\n            previousIndex = isTransfer ? this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex : this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex;\n            currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;\n        }\n        else {\n            previousIndex = isTransfer ? this.filterValueSource ? ObjectUtils.findIndexInList(data, this.source) : fromIndex : this.filterValueTarget ? ObjectUtils.findIndexInList(data, this.target) : fromIndex;\n            currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;\n        }\n\n        return {previousIndex, currentIndex};\n    }\n\n    findFilteredCurrentIndex(visibleOptions, index, options) {\n        if (visibleOptions.length === index) {\n            let toIndex = ObjectUtils.findIndexInList(visibleOptions[index-1], options);\n\n            return toIndex + 1;\n        }\n        else {\n            return ObjectUtils.findIndexInList(visibleOptions[index], options);\n        }\n    }\n\n    resetFilter() {\n        this.visibleOptionsSource = null;\n        this.filterValueSource = null;\n        this.visibleOptionsTarget = null;\n        this.filterValueTarget = null;\n\n        (<HTMLInputElement> this.sourceFilterViewChild.nativeElement).value = '';\n        (<HTMLInputElement> this.targetFilterViewChild.nativeElement).value = '';\n    }\n\n    onItemKeydown(event: KeyboardEvent, item: any, selectedItems: any[], callback: EventEmitter<any>) {\n        let listItem = <HTMLLIElement> event.currentTarget;\n\n        switch(event.which) {\n            //down\n            case 40:\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //up\n            case 38:\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.onItemClick(event, item, selectedItems, callback);\n                event.preventDefault();\n            break;\n        }\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return !DomHandler.hasClass(nextItem, 'p-picklist-item') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return !DomHandler.hasClass(prevItem, 'p-picklist-item') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.el.nativeElement.children[0].setAttribute(this.id, '');\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n\n            let innerHTML = `\n            @media screen and (max-width: ${this.breakpoint}) {\n                .p-picklist[${this.id}] {\n                    flex-direction: column;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons {\n                    padding: var(--content-padding);\n                    flex-direction: row;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons .p-button {\n                    margin-right: var(--inline-spacing);\n                    margin-bottom: 0;\n                }\n\n                .p-picklist[${this.id}] .p-picklist-buttons .p-button:last-child {\n                    margin-right: 0;\n                }\n\n                .p-picklist[${this.id}] .pi-angle-right:before {\n                    content: \"\\\\e930\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-double-right:before {\n                    content: \"\\\\e92c\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-left:before {\n                    content: \"\\\\e933\"\n                }\n\n                .p-picklist[${this.id}] .pi-angle-double-left:before {\n                    content: \"\\\\e92f\"\n                }\n            }\n            `;\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;``\n        }\n    }\n\n    ngOnDestroy() {\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,SharedModule,RippleModule,DragDropModule],\n    exports: [PickList,SharedModule,DragDropModule],\n    declarations: [PickList]\n})\nexport class PickListModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class ProgressBar {
+    constructor() {
+        this.showValue = true;
+        this.unit = '%';
+        this.mode = 'determinate';
+    }
+}
+ProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressBar, selector: "p-progressBar", inputs: { value: "value", showValue: "showValue", style: "style", styleClass: "styleClass", unit: "unit", mode: "mode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressBar', template: `
+        <div [class]="styleClass" [ngStyle]="style" role="progressbar" aria-valuemin="0" [attr.aria-valuenow]="value" aria-valuemax="100"
+            [ngClass]="{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}">
+            <div *ngIf="mode === 'determinate'" class="p-progressbar-value p-progressbar-value-animate" [style.width]="value + '%'" style="display:block"></div>
+            <div *ngIf="mode === 'determinate' && showValue" class="p-progressbar-label" [style.display]="value != null ? 'block' : 'none'">{{value}}{{unit}}</div>
+            <div *ngIf="mode === 'indeterminate'" class="p-progressbar-indeterminate-container">
+                <div class="p-progressbar-value p-progressbar-value-animate"></div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progressbar{position:relative;overflow:hidden}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;border:0 none}.p-progressbar-determinate .p-progressbar-value-animate{transition:width 1s ease-in-out}.p-progressbar-determinate .p-progressbar-label{text-align:center;height:100%;width:100%;position:absolute;font-weight:bold}.p-progressbar-indeterminate .p-progressbar-value:before{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.p-progressbar-indeterminate .p-progressbar-value:after{content:\"\";position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left,right;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation-delay:1.15s}@keyframes p-progressbar-indeterminate-anim{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes p-progressbar-indeterminate-anim-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}\n"] }]
+        }], propDecorators: { value: [{
+                type: Input
+            }], showValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], unit: [{
+                type: Input
+            }], mode: [{
+                type: Input
+            }] } });
+class ProgressBarModule {
+}
+ProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBar], imports: [CommonModule], exports: [ProgressBar] });
+ProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressBarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressBar],
+                    declarations: [ProgressBar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ProgressBar, ProgressBarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-progressbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-progressbar.mjs","sources":["../../src/app/components/progressbar/progressbar.ts","../../src/app/components/progressbar/primeng-progressbar.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-progressBar',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" role=\"progressbar\" aria-valuemin=\"0\" [attr.aria-valuenow]=\"value\" aria-valuemax=\"100\"\n            [ngClass]=\"{'p-progressbar p-component': true, 'p-progressbar-determinate': (mode === 'determinate'), 'p-progressbar-indeterminate': (mode === 'indeterminate')}\">\n            <div *ngIf=\"mode === 'determinate'\" class=\"p-progressbar-value p-progressbar-value-animate\" [style.width]=\"value + '%'\" style=\"display:block\"></div>\n            <div *ngIf=\"mode === 'determinate' && showValue\" class=\"p-progressbar-label\" [style.display]=\"value != null ? 'block' : 'none'\">{{value}}{{unit}}</div>\n            <div *ngIf=\"mode === 'indeterminate'\" class=\"p-progressbar-indeterminate-container\">\n                <div class=\"p-progressbar-value p-progressbar-value-animate\"></div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./progressbar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ProgressBar {\n\n    @Input() value: any;\n\n    @Input() showValue: boolean = true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() unit: string = '%';\n\n    @Input() mode: string = 'determinate';\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ProgressBar],\n    declarations: [ProgressBar]\n})\nexport class ProgressBarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAsBa,WAAW;IAnBxB;QAuBa,cAAS,GAAY,IAAI,CAAC;QAM1B,SAAI,GAAW,GAAG,CAAC;QAEnB,SAAI,GAAW,aAAa,CAAC;KAEzC;;wGAdY,WAAW;4FAAX,WAAW,sNAjBV;;;;;;;;;KAST;2FAQQ,WAAW;kBAnBvB,SAAS;+BACI,eAAe,YACf;;;;;;;;;KAST,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,IAAI;sBAAZ,KAAK;;MASG,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBArBjB,WAAW,aAiBV,YAAY,aAjBb,WAAW;+GAqBX,iBAAiB,YAJjB,CAAC,YAAY,CAAC;2FAId,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AC1CD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class ProgressSpinner {
+    constructor() {
+        this.strokeWidth = "2";
+        this.fill = "none";
+        this.animationDuration = "2s";
+    }
+}
+ProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
+ProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ProgressSpinner, selector: "p-progressSpinner", inputs: { style: "style", styleClass: "styleClass", strokeWidth: "strokeWidth", fill: "fill", animationDuration: "animationDuration" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, isInline: true, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-progressSpinner', template: `
+        <div class="p-progress-spinner" [ngStyle]="style" [ngClass]="styleClass"  role="alert" aria-busy="true">
+            <svg class="p-progress-spinner-svg" viewBox="25 25 50 50" [style.animation-duration]="animationDuration">
+                <circle class="p-progress-spinner-circle" cx="50" cy="50" r="20" [attr.fill]="fill" [attr.stroke-width]="strokeWidth" stroke-miterlimit="10"/>
+            </svg>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-progress-spinner{position:relative;margin:0 auto;width:100px;height:100px;display:inline-block}.p-progress-spinner:before{content:\"\";display:block;padding-top:100%}.p-progress-spinner-svg{animation:p-progress-spinner-rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.p-progress-spinner-circle{stroke-dasharray:89,200;stroke-dashoffset:0;stroke:#d62d20;animation:p-progress-spinner-dash 1.5s ease-in-out infinite,p-progress-spinner-color 6s ease-in-out infinite;stroke-linecap:round}@keyframes p-progress-spinner-rotate{to{transform:rotate(360deg)}}@keyframes p-progress-spinner-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes p-progress-spinner-color{to,0%{stroke:#d62d20}40%{stroke:#0057e7}66%{stroke:#008744}80%,90%{stroke:#ffa700}}\n"] }]
+        }], propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], strokeWidth: [{
+                type: Input
+            }], fill: [{
+                type: Input
+            }], animationDuration: [{
+                type: Input
+            }] } });
+class ProgressSpinnerModule {
+}
+ProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, declarations: [ProgressSpinner], imports: [CommonModule], exports: [ProgressSpinner] });
+ProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ProgressSpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ProgressSpinner],
+                    declarations: [ProgressSpinner]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ProgressSpinner, ProgressSpinnerModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-progressspinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-progressspinner.mjs","sources":["../../src/app/components/progressspinner/progressspinner.ts","../../src/app/components/progressspinner/primeng-progressspinner.ts"],"sourcesContent":["import {NgModule,Component,Input,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n    selector: 'p-progressSpinner',\n    template: `\n        <div class=\"p-progress-spinner\" [ngStyle]=\"style\" [ngClass]=\"styleClass\"  role=\"alert\" aria-busy=\"true\">\n            <svg class=\"p-progress-spinner-svg\" viewBox=\"25 25 50 50\" [style.animation-duration]=\"animationDuration\">\n                <circle class=\"p-progress-spinner-circle\" cx=\"50\" cy=\"50\" r=\"20\" [attr.fill]=\"fill\" [attr.stroke-width]=\"strokeWidth\" stroke-miterlimit=\"10\"/>\n            </svg>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./progressspinner.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ProgressSpinner {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() strokeWidth: string = \"2\";\n\n    @Input() fill: string = \"none\";\n\n    @Input() animationDuration: string = \"2s\";\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ProgressSpinner],\n    declarations: [ProgressSpinner]\n})\nexport class ProgressSpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,eAAe;IAhB5B;QAsBa,gBAAW,GAAW,GAAG,CAAC;QAE1B,SAAI,GAAW,MAAM,CAAC;QAEtB,sBAAiB,GAAW,IAAI,CAAC;KAE7C;;4GAZY,eAAe;gGAAf,eAAe,wOAdd;;;;;;KAMT;2FAQQ,eAAe;kBAhB3B,SAAS;+BACI,mBAAmB,YACnB;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,iBAAiB;sBAAzB,KAAK;;MASG,qBAAqB;;kHAArB,qBAAqB;mHAArB,qBAAqB,iBAnBrB,eAAe,aAed,YAAY,aAfb,eAAe;mHAmBf,qBAAqB,YAJrB,CAAC,YAAY,CAAC;2FAId,qBAAqB;kBALjC,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,YAAY,EAAE,CAAC,eAAe,CAAC;iBAClC;;;ACrCD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,222 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Injectable, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
+
+const RADIO_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => RadioButton),
+    multi: true
+};
+class RadioControlRegistry {
+    constructor() {
+        this.accessors = [];
+    }
+    add(control, accessor) {
+        this.accessors.push([control, accessor]);
+    }
+    remove(accessor) {
+        this.accessors = this.accessors.filter((c) => {
+            return c[1] !== accessor;
+        });
+    }
+    select(accessor) {
+        this.accessors.forEach((c) => {
+            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {
+                c[1].writeValue(accessor.value);
+            }
+        });
+    }
+    isSameGroup(controlPair, accessor) {
+        if (!controlPair[0].control) {
+            return false;
+        }
+        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;
+    }
+}
+RadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+RadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioControlRegistry, decorators: [{
+            type: Injectable,
+            args: [{
+                    providedIn: 'root',
+                }]
+        }] });
+class RadioButton {
+    constructor(cd, injector, registry) {
+        this.cd = cd;
+        this.injector = injector;
+        this.registry = registry;
+        this.onClick = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.control = this.injector.get(NgControl);
+        this.checkName();
+        this.registry.add(this.control, this);
+    }
+    handleClick(event, radioButton, focus) {
+        event.preventDefault();
+        if (this.disabled) {
+            return;
+        }
+        this.select(event);
+        if (focus) {
+            radioButton.focus();
+        }
+    }
+    select(event) {
+        if (!this.disabled) {
+            this.inputViewChild.nativeElement.checked = true;
+            this.checked = true;
+            this.onModelChange(this.value);
+            this.registry.select(this);
+            this.onClick.emit(event);
+        }
+    }
+    writeValue(value) {
+        this.checked = (value == this.value);
+        if (this.inputViewChild && this.inputViewChild.nativeElement) {
+            this.inputViewChild.nativeElement.checked = this.checked;
+        }
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onInputFocus(event) {
+        this.focused = true;
+        this.onFocus.emit(event);
+    }
+    onInputBlur(event) {
+        this.focused = false;
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onChange(event) {
+        this.select(event);
+    }
+    focus() {
+        this.inputViewChild.nativeElement.focus();
+    }
+    ngOnDestroy() {
+        this.registry.remove(this);
+    }
+    checkName() {
+        if (this.name && this.formControlName && this.name !== this.formControlName) {
+            this.throwNameError();
+        }
+        if (!this.name && this.formControlName) {
+            this.name = this.formControlName;
+        }
+    }
+    throwNameError() {
+        throw new Error(`
+          If you define both a name and a formControlName attribute on your radio button, their values
+          must match. Ex: <p-radioButton formControlName="food" name="food"></p-radioButton>
+        `);
+    }
+}
+RadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RadioControlRegistry }], target: i0.ɵɵFactoryTarget.Component });
+RadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: RadioButton, selector: "p-radioButton", inputs: { value: "value", formControlName: "formControlName", name: "name", disabled: "disabled", label: "label", tabindex: "tabindex", inputId: "inputId", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "p-element" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["rb"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-radioButton',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #rb type="radio" [attr.id]="inputId" [attr.name]="name" [attr.value]="value" [attr.tabindex]="tabindex" [attr.aria-checked]="checked" [attr.aria-label]="ariaLabel"
+                    [attr.aria-labelledby]="ariaLabelledBy" [checked]="checked" (change)="onChange($event)" (focus)="onInputFocus($event)" (blur)="onInputBlur($event)" [disabled]="disabled">
+            </div>
+            <div (click)="handleClick($event, rb, true)" [ngClass]="{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}">
+                <span class="p-radiobutton-icon"></span>
+            </div>
+        </div>
+        <label (click)="select($event)" [class]="labelStyleClass"
+            [ngClass]="{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}"
+            *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [RADIO_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: RadioControlRegistry }]; }, propDecorators: { value: [{
+                type: Input
+            }], formControlName: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], labelStyleClass: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], inputViewChild: [{
+                type: ViewChild,
+                args: ['rb']
+            }] } });
+class RadioButtonModule {
+}
+RadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, declarations: [RadioButton], imports: [CommonModule], exports: [RadioButton] });
+RadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RadioButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [RadioButton],
+                    declarations: [RadioButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { RADIO_VALUE_ACCESSOR, RadioButton, RadioButtonModule, RadioControlRegistry };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-radiobutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-radiobutton.mjs","sources":["../../src/app/components/radiobutton/radiobutton.ts","../../src/app/components/radiobutton/primeng-radiobutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,ElementRef,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, Injectable, Injector, OnInit, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor, NgControl} from '@angular/forms';\n\nexport const RADIO_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => RadioButton),\n    multi: true\n};\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class RadioControlRegistry {\n    private accessors: any[] = [];\n\n    add(control: NgControl, accessor: RadioButton) {\n        this.accessors.push([control, accessor]);\n    }\n\n    remove(accessor: RadioButton) {\n        this.accessors = this.accessors.filter((c) => {\n            return c[1] !== accessor;\n        })\n    }\n\n    select(accessor: RadioButton) {\n        this.accessors.forEach((c) => {\n            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {\n                c[1].writeValue(accessor.value);\n            }\n        });\n    }\n\n    private isSameGroup(controlPair: [NgControl, RadioButton], accessor: RadioButton): boolean {\n        if (!controlPair[0].control) {\n            return false;\n        }\n\n        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;\n    }\n}\n\n@Component({\n    selector: 'p-radioButton',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #rb type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.value]=\"value\" [attr.tabindex]=\"tabindex\" [attr.aria-checked]=\"checked\" [attr.aria-label]=\"ariaLabel\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy\" [checked]=\"checked\" (change)=\"onChange($event)\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" [disabled]=\"disabled\">\n            </div>\n            <div (click)=\"handleClick($event, rb, true)\" [ngClass]=\"{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}\">\n                <span class=\"p-radiobutton-icon\"></span>\n            </div>\n        </div>\n        <label (click)=\"select($event)\" [class]=\"labelStyleClass\"\n            [ngClass]=\"{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}\"\n            *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [RADIO_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class RadioButton implements ControlValueAccessor, OnInit, OnDestroy {\n\n    @Input() value: any;\n\n    @Input() formControlName: string;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() label: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() labelStyleClass: string;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('rb') inputViewChild: ElementRef;\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public checked: boolean;\n\n    public focused: boolean;\n\n    control: NgControl;\n\n    constructor(public cd: ChangeDetectorRef, private injector: Injector, private registry: RadioControlRegistry) {}\n\n    ngOnInit() {\n        this.control = this.injector.get(NgControl);\n        this.checkName();\n        this.registry.add(this.control, this);\n    }\n\n    handleClick(event, radioButton, focus) {\n        event.preventDefault();\n\n        if (this.disabled) {\n            return;\n        }\n\n        this.select(event);\n\n        if (focus) {\n            radioButton.focus();\n        }\n    }\n\n    select(event) {\n        if (!this.disabled) {\n            this.inputViewChild.nativeElement.checked = true;\n            this.checked = true;\n            this.onModelChange(this.value);\n            this.registry.select(this);\n            this.onClick.emit(event);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.checked = (value == this.value);\n\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            this.inputViewChild.nativeElement.checked = this.checked;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onChange(event) {\n        this.select(event);\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    ngOnDestroy() {\n        this.registry.remove(this);\n    }\n\n    private checkName() {\n        if (this.name && this.formControlName && this.name !== this.formControlName) {\n            this.throwNameError();\n        }\n        if (!this.name && this.formControlName) {\n            this.name = this.formControlName;\n        }\n    }\n\n    private throwNameError() {\n        throw new Error(`\n          If you define both a name and a formControlName attribute on your radio button, their values\n          must match. Ex: <p-radioButton formControlName=\"food\" name=\"food\"></p-radioButton>\n        `);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [RadioButton],\n    declarations: [RadioButton]\n})\nexport class RadioButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,131 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const RATING_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Rating),
+    multi: true
+};
+class Rating {
+    constructor(cd) {
+        this.cd = cd;
+        this.stars = 5;
+        this.cancel = true;
+        this.iconOnClass = 'pi pi-star-fill';
+        this.iconOffClass = 'pi pi-star';
+        this.iconCancelClass = 'pi pi-ban';
+        this.onRate = new EventEmitter();
+        this.onCancel = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    ngOnInit() {
+        this.starsArray = [];
+        for (let i = 0; i < this.stars; i++) {
+            this.starsArray[i] = i;
+        }
+    }
+    rate(event, i) {
+        if (!this.readonly && !this.disabled) {
+            this.value = (i + 1);
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onRate.emit({
+                originalEvent: event,
+                value: (i + 1)
+            });
+        }
+        event.preventDefault();
+    }
+    clear(event) {
+        if (!this.readonly && !this.disabled) {
+            this.value = null;
+            this.onModelChange(this.value);
+            this.onModelTouched();
+            this.onCancel.emit(event);
+        }
+        event.preventDefault();
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.detectChanges();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+}
+Rating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Rating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Rating, selector: "p-rating", inputs: { disabled: "disabled", readonly: "readonly", stars: "stars", cancel: "cancel", iconOnClass: "iconOnClass", iconOnStyle: "iconOnStyle", iconOffClass: "iconOffClass", iconOffStyle: "iconOffStyle", iconCancelClass: "iconCancelClass", iconCancelStyle: "iconCancelStyle" }, outputs: { onRate: "onRate", onCancel: "onCancel" }, host: { classAttribute: "p-element" }, providers: [RATING_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, isInline: true, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Rating, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-rating', template: `
+        <div class="p-rating" [ngClass]="{'p-readonly': readonly, 'p-disabled': disabled}">
+            <span [attr.tabindex]="(disabled || readonly) ? null : '0'" *ngIf="cancel" (click)="clear($event)" (keydown.enter)="clear($event)" class="p-rating-icon p-rating-cancel" [ngClass]="iconCancelClass" [ngStyle]="iconCancelStyle"></span>
+            <span *ngFor="let star of starsArray;let i=index" class="p-rating-icon" [attr.tabindex]="(disabled || readonly) ? null : '0'"  (click)="rate($event,i)" (keydown.enter)="rate($event,i)"
+                [ngClass]="(!value || i >= value) ? iconOffClass : iconOnClass"
+                [ngStyle]="(!value || i >= value) ? iconOffStyle : iconOnStyle"></span>
+        </div>
+    `, providers: [RATING_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], stars: [{
+                type: Input
+            }], cancel: [{
+                type: Input
+            }], iconOnClass: [{
+                type: Input
+            }], iconOnStyle: [{
+                type: Input
+            }], iconOffClass: [{
+                type: Input
+            }], iconOffStyle: [{
+                type: Input
+            }], iconCancelClass: [{
+                type: Input
+            }], iconCancelStyle: [{
+                type: Input
+            }], onRate: [{
+                type: Output
+            }], onCancel: [{
+                type: Output
+            }] } });
+class RatingModule {
+}
+RatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, declarations: [Rating], imports: [CommonModule], exports: [Rating] });
+RatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RatingModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Rating],
+                    declarations: [Rating]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { RATING_VALUE_ACCESSOR, Rating, RatingModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-rating.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-rating.mjs","sources":["../../src/app/components/rating/rating.ts","../../src/app/components/rating/primeng-rating.ts"],"sourcesContent":["import {NgModule,Component,OnInit,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const RATING_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Rating),\n  multi: true\n};\n\n@Component({\n    selector: 'p-rating',\n    template: `\n        <div class=\"p-rating\" [ngClass]=\"{'p-readonly': readonly, 'p-disabled': disabled}\">\n            <span [attr.tabindex]=\"(disabled || readonly) ? null : '0'\" *ngIf=\"cancel\" (click)=\"clear($event)\" (keydown.enter)=\"clear($event)\" class=\"p-rating-icon p-rating-cancel\" [ngClass]=\"iconCancelClass\" [ngStyle]=\"iconCancelStyle\"></span>\n            <span *ngFor=\"let star of starsArray;let i=index\" class=\"p-rating-icon\" [attr.tabindex]=\"(disabled || readonly) ? null : '0'\"  (click)=\"rate($event,i)\" (keydown.enter)=\"rate($event,i)\"\n                [ngClass]=\"(!value || i >= value) ? iconOffClass : iconOnClass\"\n                [ngStyle]=\"(!value || i >= value) ? iconOffStyle : iconOnStyle\"></span>\n        </div>\n    `,\n    providers: [RATING_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./rating.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Rating implements OnInit,ControlValueAccessor {\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() stars: number = 5;\n\n    @Input() cancel: boolean = true;\n\n    @Input() iconOnClass: string = 'pi pi-star-fill';\n\n    @Input() iconOnStyle: any;\n\n    @Input() iconOffClass: string = 'pi pi-star';\n\n    @Input() iconOffStyle: any;\n\n    @Input() iconCancelClass: string = 'pi pi-ban';\n\n    @Input() iconCancelStyle: any;\n\n    @Output() onRate: EventEmitter<any> = new EventEmitter();\n\n    @Output() onCancel: EventEmitter<any> = new EventEmitter();\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    value: number;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    public starsArray: number[];\n\n    ngOnInit() {\n        this.starsArray = [];\n        for(let i = 0; i < this.stars; i++) {\n            this.starsArray[i] = i;\n        }\n    }\n\n    rate(event, i: number): void {\n        if (!this.readonly&&!this.disabled) {\n            this.value = (i + 1);\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onRate.emit({\n                originalEvent: event,\n                value: (i+1)\n            });\n        }\n        event.preventDefault();\n    }\n\n    clear(event): void {\n        if (!this.readonly&&!this.disabled) {\n            this.value = null;\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onCancel.emit(event);\n        }\n        event.preventDefault();\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.detectChanges();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Rating],\n    declarations: [Rating]\n})\nexport class RatingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,109 @@
+import * as i0 from '@angular/core';
+import { Directive, Optional, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+
+class Ripple {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+    }
+    ngAfterViewInit() {
+        if (this.config && this.config.ripple) {
+            this.zone.runOutsideAngular(() => {
+                this.create();
+                this.mouseDownListener = this.onMouseDown.bind(this);
+                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            });
+        }
+    }
+    onMouseDown(event) {
+        let ink = this.getInk();
+        if (!ink || getComputedStyle(ink, null).display === 'none') {
+            return;
+        }
+        DomHandler.removeClass(ink, 'p-ink-active');
+        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {
+            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));
+            ink.style.height = d + 'px';
+            ink.style.width = d + 'px';
+        }
+        let offset = DomHandler.getOffset(this.el.nativeElement);
+        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;
+        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;
+        ink.style.top = y + 'px';
+        ink.style.left = x + 'px';
+        DomHandler.addClass(ink, 'p-ink-active');
+    }
+    getInk() {
+        for (let i = 0; i < this.el.nativeElement.children.length; i++) {
+            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {
+                return this.el.nativeElement.children[i];
+            }
+        }
+        return null;
+    }
+    resetInk() {
+        let ink = this.getInk();
+        if (ink) {
+            DomHandler.removeClass(ink, 'p-ink-active');
+        }
+    }
+    onAnimationEnd(event) {
+        DomHandler.removeClass(event.currentTarget, 'p-ink-active');
+    }
+    create() {
+        let ink = document.createElement('span');
+        ink.className = 'p-ink';
+        this.el.nativeElement.appendChild(ink);
+        this.animationListener = this.onAnimationEnd.bind(this);
+        ink.addEventListener('animationend', this.animationListener);
+    }
+    remove() {
+        let ink = this.getInk();
+        if (ink) {
+            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);
+            ink.removeEventListener('animationend', this.animationListener);
+            DomHandler.removeElement(ink);
+        }
+    }
+    ngOnDestroy() {
+        if (this.config && this.config.ripple) {
+            this.remove();
+        }
+    }
+}
+Ripple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
+Ripple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Ripple, selector: "[pRipple]", host: { classAttribute: "p-ripple p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Ripple, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRipple]',
+                    host: {
+                        'class': 'p-ripple p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{
+                    type: Optional
+                }] }]; } });
+class RippleModule {
+}
+RippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+RippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });
+RippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RippleModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Ripple],
+                    declarations: [Ripple]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Ripple, RippleModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-ripple.mjs","sources":["../../src/app/components/ripple/ripple.ts","../../src/app/components/ripple/primeng-ripple.ts"],"sourcesContent":["import { NgModule, Directive, AfterViewInit, ElementRef, NgZone, OnDestroy, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeNGConfig } from 'primeng/api';\n\n@Directive({\n    selector: '[pRipple]',\n    host: {\n        'class': 'p-ripple p-element'\n    }\n})\nexport class Ripple implements AfterViewInit, OnDestroy {\n\n    constructor(public el: ElementRef, public zone: NgZone, @Optional() public config: PrimeNGConfig) { }\n\n    animationListener: any;\n\n    mouseDownListener: any;\n\n    ngAfterViewInit() {\n        if (this.config && this.config.ripple) {\n            this.zone.runOutsideAngular(() => {\n                this.create();\n\n                this.mouseDownListener = this.onMouseDown.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n            });\n        }\n    }\n\n    onMouseDown(event: MouseEvent) {\n        let ink = this.getInk();\n        if (!ink || getComputedStyle(ink, null).display === 'none') {\n            return;\n        }\n\n        DomHandler.removeClass(ink, 'p-ink-active');\n        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n            ink.style.height = d + 'px';\n            ink.style.width = d + 'px';\n        }\n\n        let offset = DomHandler.getOffset(this.el.nativeElement);\n        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n\n        ink.style.top = y + 'px';\n        ink.style.left = x + 'px';\n        DomHandler.addClass(ink, 'p-ink-active');\n    }\n\n    getInk() {\n        for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n                return this.el.nativeElement.children[i];\n            }\n        }\n        return null;\n    }\n\n    resetInk() {\n        let ink = this.getInk();\n        if (ink) {\n            DomHandler.removeClass(ink, 'p-ink-active');\n        }\n    }\n\n    onAnimationEnd(event) {\n        DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n    }\n\n    create() {\n        let ink = document.createElement('span');\n        ink.className = 'p-ink';\n        this.el.nativeElement.appendChild(ink);\n\n        this.animationListener = this.onAnimationEnd.bind(this);\n        ink.addEventListener('animationend', this.animationListener);\n    }\n\n    remove() {\n        let ink = this.getInk();\n        if (ink) {\n            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n            ink.removeEventListener('animationend', this.animationListener);\n            DomHandler.removeElement(ink);\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.config && this.config.ripple) {\n            this.remove();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Ripple],\n    declarations: [Ripple]\n})\nexport class RippleModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,237 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate } from 'primeng/api';
+
+class ScrollPanel {
+    constructor(el, zone, cd) {
+        this.el = el;
+        this.zone = zone;
+        this.cd = cd;
+        this.timeoutFrame = (fn) => setTimeout(fn, 0);
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            this.moveBar();
+            this.moveBar = this.moveBar.bind(this);
+            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);
+            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);
+            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);
+            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);
+            window.addEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);
+            this.calculateContainerHeight();
+            this.initialized = true;
+        });
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    calculateContainerHeight() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        let xBar = this.xBarViewChild.nativeElement;
+        let containerStyles = getComputedStyle(container), xBarStyles = getComputedStyle(xBar), pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);
+        if (containerStyles['max-height'] != "none" && pureContainerHeight == 0) {
+            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {
+                container.style.height = containerStyles['max-height'];
+            }
+            else {
+                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + "px";
+            }
+        }
+    }
+    moveBar() {
+        let container = this.containerViewChild.nativeElement;
+        let content = this.contentViewChild.nativeElement;
+        /* horizontal scroll */
+        let xBar = this.xBarViewChild.nativeElement;
+        let totalWidth = content.scrollWidth;
+        let ownWidth = content.clientWidth;
+        let bottom = (container.clientHeight - xBar.clientHeight) * -1;
+        this.scrollXRatio = ownWidth / totalWidth;
+        /* vertical scroll */
+        let yBar = this.yBarViewChild.nativeElement;
+        let totalHeight = content.scrollHeight;
+        let ownHeight = content.clientHeight;
+        let right = (container.clientWidth - yBar.clientWidth) * -1;
+        this.scrollYRatio = ownHeight / totalHeight;
+        this.requestAnimationFrame(() => {
+            if (this.scrollXRatio >= 1) {
+                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');
+                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);
+                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);
+                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';
+            }
+            if (this.scrollYRatio >= 1) {
+                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');
+            }
+            else {
+                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');
+                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);
+                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);
+                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';
+            }
+        });
+        this.cd.markForCheck();
+    }
+    onYBarMouseDown(e) {
+        this.isYBarClicked = true;
+        this.lastPageY = e.pageY;
+        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onXBarMouseDown(e) {
+        this.isXBarClicked = true;
+        this.lastPageX = e.pageX;
+        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');
+        document.addEventListener('mousemove', this.onDocumentMouseMove);
+        document.addEventListener('mouseup', this.onDocumentMouseUp);
+        e.preventDefault();
+    }
+    onDocumentMouseMove(e) {
+        if (this.isXBarClicked) {
+            this.onMouseMoveForXBar(e);
+        }
+        else if (this.isYBarClicked) {
+            this.onMouseMoveForYBar(e);
+        }
+        else {
+            this.onMouseMoveForXBar(e);
+            this.onMouseMoveForYBar(e);
+        }
+    }
+    onMouseMoveForXBar(e) {
+        let deltaX = e.pageX - this.lastPageX;
+        this.lastPageX = e.pageX;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;
+        });
+    }
+    onMouseMoveForYBar(e) {
+        let deltaY = e.pageY - this.lastPageY;
+        this.lastPageY = e.pageY;
+        this.requestAnimationFrame(() => {
+            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;
+        });
+    }
+    scrollTop(scrollTop) {
+        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;
+        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;
+        this.contentViewChild.nativeElement.scrollTop = scrollTop;
+    }
+    onDocumentMouseUp(e) {
+        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');
+        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');
+        document.removeEventListener('mousemove', this.onDocumentMouseMove);
+        document.removeEventListener('mouseup', this.onDocumentMouseUp);
+        this.isXBarClicked = false;
+        this.isYBarClicked = false;
+    }
+    requestAnimationFrame(f) {
+        let frame = window.requestAnimationFrame || this.timeoutFrame;
+        frame(f);
+    }
+    ngOnDestroy() {
+        if (this.initialized) {
+            window.removeEventListener('resize', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);
+            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);
+            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);
+            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);
+        }
+    }
+    refresh() {
+        this.moveBar();
+    }
+}
+ScrollPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ScrollPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollPanel, selector: "p-scrollPanel", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "contentViewChild", first: true, predicate: ["content"], descendants: true }, { propertyName: "xBarViewChild", first: true, predicate: ["xBar"], descendants: true }, { propertyName: "yBarViewChild", first: true, predicate: ["yBar"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, isInline: true, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanel, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollPanel', template: `
+        <div #container [ngClass]="'p-scrollpanel p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-scrollpanel-wrapper">
+                <div #content class="p-scrollpanel-content">
+                    <ng-content></ng-content>
+                    <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+                </div>
+            </div>
+            <div #xBar class="p-scrollpanel-bar p-scrollpanel-bar-x"></div>
+            <div #yBar class="p-scrollpanel-bar p-scrollpanel-bar-y"></div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrollpanel-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.p-scrollpanel-content{height:calc(100% + 18px);width:calc(100% + 18px);padding:0 18px 18px 0;position:relative;overflow:auto;box-sizing:border-box}.p-scrollpanel-bar{position:relative;background:#c1c1c1;border-radius:3px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear}.p-scrollpanel-bar-y{width:9px;top:0}.p-scrollpanel-bar-x{height:9px;bottom:0}.p-scrollpanel-hidden{visibility:hidden}.p-scrollpanel:hover .p-scrollpanel-bar,.p-scrollpanel:active .p-scrollpanel-bar{opacity:1}.p-scrollpanel-grabbed{-webkit-user-select:none;-ms-user-select:none;user-select:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], contentViewChild: [{
+                type: ViewChild,
+                args: ['content']
+            }], xBarViewChild: [{
+                type: ViewChild,
+                args: ['xBar']
+            }], yBarViewChild: [{
+                type: ViewChild,
+                args: ['yBar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ScrollPanelModule {
+}
+ScrollPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, declarations: [ScrollPanel], imports: [CommonModule], exports: [ScrollPanel] });
+ScrollPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollPanelModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollPanel],
+                    declarations: [ScrollPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ScrollPanel, ScrollPanelModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-scrollpanel.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-scrollpanel.mjs","sources":["../../src/app/components/scrollpanel/scrollpanel.ts","../../src/app/components/scrollpanel/primeng-scrollpanel.ts"],"sourcesContent":["import { NgModule, Component, Input, AfterViewInit, OnDestroy, ElementRef, NgZone, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, ContentChildren, QueryList, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeTemplate } from 'primeng/api';\n\n@Component({\n    selector: 'p-scrollPanel',\n    template: `\n        <div #container [ngClass]=\"'p-scrollpanel p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-scrollpanel-wrapper\">\n                <div #content class=\"p-scrollpanel-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n            </div>\n            <div #xBar class=\"p-scrollpanel-bar p-scrollpanel-bar-x\"></div>\n            <div #yBar class=\"p-scrollpanel-bar p-scrollpanel-bar-y\"></div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./scrollpanel.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ScrollPanel implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    constructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {}\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ViewChild('xBar') xBarViewChild: ElementRef;\n\n    @ViewChild('yBar') yBarViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    scrollYRatio: number;\n\n    scrollXRatio: number;\n\n    timeoutFrame: any = (fn) => setTimeout(fn, 0);\n\n    initialized: boolean;\n\n    lastPageY: number;\n\n    lastPageX: number;\n\n    isXBarClicked: boolean;\n\n    isYBarClicked: boolean;\n\n    contentTemplate: TemplateRef<any>;\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            this.moveBar();\n            this.moveBar = this.moveBar.bind(this);\n            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);\n            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);\n            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);\n            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);\n\n            window.addEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);\n\n            this.calculateContainerHeight();\n\n            this.initialized = true;\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    calculateContainerHeight() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n        let xBar = this.xBarViewChild.nativeElement;\n\n        let containerStyles = getComputedStyle(container),\n        xBarStyles = getComputedStyle(xBar),\n        pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);\n\n        if (containerStyles['max-height'] != \"none\" && pureContainerHeight == 0) {\n            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {\n                container.style.height = containerStyles['max-height'];\n            }\n            else {\n                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + \"px\";\n            }\n        }\n    }\n\n    moveBar() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n\n        /* horizontal scroll */\n        let xBar = this.xBarViewChild.nativeElement;\n        let totalWidth = content.scrollWidth;\n        let ownWidth = content.clientWidth;\n        let bottom = (container.clientHeight - xBar.clientHeight) * -1;\n\n        this.scrollXRatio = ownWidth / totalWidth;\n\n        /* vertical scroll */\n        let yBar = this.yBarViewChild.nativeElement;\n        let totalHeight = content.scrollHeight;\n        let ownHeight = content.clientHeight;\n        let right = (container.clientWidth - yBar.clientWidth) * -1;\n\n        this.scrollYRatio = ownHeight / totalHeight;\n\n        this.requestAnimationFrame(() => {\n            if (this.scrollXRatio >= 1) {\n                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');\n            }\n            else {\n                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');\n                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);\n                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);\n                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';\n            }\n\n            if (this.scrollYRatio >= 1) {\n                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');\n            }\n            else {\n                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');\n                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);\n                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);\n                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';\n            }\n        });\n        this.cd.markForCheck();\n    }\n\n    onYBarMouseDown(e: MouseEvent) {\n        this.isYBarClicked = true;\n        this.lastPageY = e.pageY;\n        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n\n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onXBarMouseDown(e: MouseEvent) {\n        this.isXBarClicked = true;\n        this.lastPageX = e.pageX;\n        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n\n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onDocumentMouseMove(e: MouseEvent) {\n        if (this.isXBarClicked) {\n            this.onMouseMoveForXBar(e);\n        }\n        else if (this.isYBarClicked) {\n            this.onMouseMoveForYBar(e);\n        }\n        else {\n            this.onMouseMoveForXBar(e);\n            this.onMouseMoveForYBar(e);\n        }\n\n    }\n\n    onMouseMoveForXBar(e: MouseEvent) {\n        let deltaX = e.pageX - this.lastPageX;\n        this.lastPageX = e.pageX;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;\n        });\n    }\n\n    onMouseMoveForYBar(e: MouseEvent) {\n        let deltaY = e.pageY - this.lastPageY;\n        this.lastPageY = e.pageY;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;\n        });\n    }\n\n    scrollTop(scrollTop: number) {\n        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;\n        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;\n        this.contentViewChild.nativeElement.scrollTop = scrollTop;\n    }\n\n    onDocumentMouseUp(e: Event) {\n        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.removeEventListener('mousemove', this.onDocumentMouseMove);\n        document.removeEventListener('mouseup', this.onDocumentMouseUp);\n        this.isXBarClicked = false;\n        this.isYBarClicked = false;\n    }\n\n    requestAnimationFrame(f: Function) {\n        let frame = window.requestAnimationFrame || this.timeoutFrame;\n        frame(f);\n    }\n\n    ngOnDestroy() {\n        if (this.initialized) {\n            window.removeEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);\n        }\n    }\n\n    refresh() {\n        this.moveBar();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ScrollPanel],\n    declarations: [ScrollPanel]\n})\nexport class ScrollPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,176 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { trigger, state, style, transition, animate } from '@angular/animations';
+import { DomHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+class ScrollTop {
+    constructor(el, cd, config) {
+        this.el = el;
+        this.cd = cd;
+        this.config = config;
+        this.target = "window";
+        this.threshold = 400;
+        this.icon = "pi pi-chevron-up";
+        this.behavior = "smooth";
+        this.showTransitionOptions = '.15s';
+        this.hideTransitionOptions = '.15s';
+        this.visible = false;
+    }
+    ngOnInit() {
+        if (this.target === 'window')
+            this.bindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.bindParentScrollListener();
+    }
+    onClick() {
+        let scrollElement = this.target === 'window' ? window : this.el.nativeElement.parentElement;
+        scrollElement.scroll({
+            top: 0,
+            behavior: this.behavior
+        });
+    }
+    onEnter(event) {
+        switch (event.toState) {
+            case 'open':
+                this.overlay = event.element;
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                break;
+            case 'void':
+                this.overlay = null;
+                break;
+        }
+    }
+    onLeave(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    checkVisibility(scrollY) {
+        if (scrollY > this.threshold)
+            this.visible = true;
+        else
+            this.visible = false;
+        this.cd.markForCheck();
+    }
+    bindParentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(this.el.nativeElement.parentElement.scrollTop);
+        };
+        this.el.nativeElement.parentElement.addEventListener('scroll', this.scrollListener);
+    }
+    bindDocumentScrollListener() {
+        this.scrollListener = () => {
+            this.checkVisibility(DomHandler.getWindowScrollTop());
+        };
+        window.addEventListener('scroll', this.scrollListener);
+    }
+    unbindParentScrollListener() {
+        if (this.scrollListener) {
+            this.el.nativeElement.parentElement.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    unbindDocumentScrollListener() {
+        if (this.scrollListener) {
+            window.removeEventListener('scroll', this.scrollListener);
+            this.scrollListener = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-scrolltop p-link p-component': true,
+            'p-scrolltop-sticky': this.target !== 'window'
+        };
+    }
+    ngOnDestroy() {
+        if (this.target === 'window')
+            this.unbindDocumentScrollListener();
+        else if (this.target === 'parent')
+            this.unbindParentScrollListener();
+        if (this.overlay) {
+            ZIndexUtils.clear(this.overlay);
+            this.overlay = null;
+        }
+    }
+}
+ScrollTop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+ScrollTop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ScrollTop, selector: "p-scrollTop", inputs: { styleClass: "styleClass", style: "style", target: "target", threshold: "threshold", icon: "icon", behavior: "behavior", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, isInline: true, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('animation', [
+            state('void', style({
+                opacity: 0
+            })),
+            state('open', style({
+                opacity: 1
+            })),
+            transition('void => open', animate('{{showTransitionParams}}')),
+            transition('open => void', animate('{{hideTransitionParams}}')),
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTop, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-scrollTop', template: `
+        <button  *ngIf="visible" [@animation]="{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@animation.start)="onEnter($event)" (@animation.done)="onLeave($event)"
+            [ngClass]="containerClass()" (click)="onClick()" [class]="styleClass" [ngStyle]="style" type="button">
+            <span [class]="icon" [ngClass]="'p-scrolltop-icon'"></span>
+        </button>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
+                        trigger('animation', [
+                            state('void', style({
+                                opacity: 0
+                            })),
+                            state('open', style({
+                                opacity: 1
+                            })),
+                            transition('void => open', animate('{{showTransitionParams}}')),
+                            transition('open => void', animate('{{hideTransitionParams}}')),
+                        ])
+                    ], host: {
+                        'class': 'p-element'
+                    }, styles: [".p-scrolltop{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;justify-content:center}.p-scrolltop-sticky{position:sticky}.p-scrolltop-sticky.p-link{margin-left:auto}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], target: [{
+                type: Input
+            }], threshold: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], behavior: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+class ScrollTopModule {
+}
+ScrollTopModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ScrollTopModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, declarations: [ScrollTop], imports: [CommonModule], exports: [ScrollTop] });
+ScrollTopModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ScrollTopModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [ScrollTop],
+                    declarations: [ScrollTop]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ScrollTop, ScrollTopModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-scrolltop.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-scrolltop.mjs","sources":["../../src/app/components/scrolltop/scrolltop.ts","../../src/app/components/scrolltop/primeng-scrolltop.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, OnInit, OnDestroy, ElementRef, ChangeDetectorRef} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { animate, state, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils'\nimport { PrimeNGConfig } from 'primeng/api';\n\n@Component({\n    selector: 'p-scrollTop',\n    template: `\n        <button  *ngIf=\"visible\" [@animation]=\"{value: 'open', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onEnter($event)\" (@animation.done)=\"onLeave($event)\"\n            [ngClass]=\"containerClass()\" (click)=\"onClick()\" [class]=\"styleClass\" [ngStyle]=\"style\" type=\"button\">\n            <span [class]=\"icon\" [ngClass]=\"'p-scrolltop-icon'\"></span>\n        </button>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./scrolltop.css'],\n    animations: [\n        trigger('animation', [\n            state('void', style({\n                opacity: 0\n            })),\n            state('open', style({\n                opacity: 1\n            })),\n            transition('void => open', animate('{{showTransitionParams}}')),\n            transition('open => void', animate('{{hideTransitionParams}}')),\n        ])\n    ],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ScrollTop implements OnInit, OnDestroy {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() target: string = \"window\";\n\n    @Input() threshold: number = 400;\n\n    @Input() icon: string = \"pi pi-chevron-up\";\n\n    @Input() behavior: string = \"smooth\";\n\n    @Input() showTransitionOptions: string = '.15s';\n\n    @Input() hideTransitionOptions: string = '.15s';\n\n    scrollListener: any;\n\n    visible: boolean = false;\n\n    overlay: any;\n\n    constructor(public el: ElementRef, private cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngOnInit() {\n        if (this.target === 'window')\n            this.bindDocumentScrollListener();\n        else if (this.target === 'parent')\n            this.bindParentScrollListener();\n    }\n\n    onClick() {\n        let scrollElement = this.target === 'window' ? window : this.el.nativeElement.parentElement;\n         scrollElement.scroll({\n            top: 0,\n            behavior: this.behavior\n        });\n    }\n\n    onEnter(event: AnimationEvent) {\n\n        switch(event.toState) {\n            case 'open':\n                this.overlay = event.element;\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n            break;\n            case 'void':\n                this.overlay = null;\n            break;\n        }\n    }\n\n    onLeave(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    checkVisibility(scrollY) {\n        if (scrollY > this.threshold)\n            this.visible = true;\n        else\n            this.visible = false;\n\n        this.cd.markForCheck();\n    }\n\n    bindParentScrollListener() {\n        this.scrollListener = () => {\n\n            this.checkVisibility(this.el.nativeElement.parentElement.scrollTop);\n        };\n\n        this.el.nativeElement.parentElement.addEventListener('scroll', this.scrollListener);\n    }\n\n    bindDocumentScrollListener() {\n        this.scrollListener = () => {\n            this.checkVisibility(DomHandler.getWindowScrollTop());\n        };\n\n        window.addEventListener('scroll', this.scrollListener);\n    }\n\n    unbindParentScrollListener() {\n        if (this.scrollListener) {\n            this.el.nativeElement.parentElement.removeEventListener('scroll', this.scrollListener);\n            this.scrollListener = null;\n        }\n    }\n\n    unbindDocumentScrollListener() {\n        if (this.scrollListener) {\n            window.removeEventListener('scroll', this.scrollListener);\n            this.scrollListener = null;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-scrolltop p-link p-component': true,\n            'p-scrolltop-sticky': this.target !== 'window'\n        };\n    }\n\n    ngOnDestroy() {\n        if (this.target === 'window')\n            this.unbindDocumentScrollListener();\n        else if (this.target === 'parent')\n            this.unbindParentScrollListener();\n\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n            this.overlay = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ScrollTop],\n    declarations: [ScrollTop]\n})\nexport class ScrollTopModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,185 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { ObjectUtils } from 'primeng/utils';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SELECTBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => SelectButton),
+    multi: true
+};
+class SelectButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.tabindex = 0;
+        this.onOptionClick = new EventEmitter();
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    getOptionLabel(option) {
+        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);
+    }
+    getOptionValue(option) {
+        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);
+    }
+    isOptionDisabled(option) {
+        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    onItemClick(event, option, index) {
+        if (this.disabled || this.isOptionDisabled(option)) {
+            return;
+        }
+        if (this.multiple) {
+            if (this.isSelected(option))
+                this.removeOption(option);
+            else
+                this.value = [...(this.value || []), this.getOptionValue(option)];
+        }
+        else {
+            this.value = this.getOptionValue(option);
+        }
+        this.onOptionClick.emit({
+            originalEvent: event,
+            option: option,
+            index: index
+        });
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    removeOption(option) {
+        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));
+    }
+    isSelected(option) {
+        let selected = false;
+        let optionValue = this.getOptionValue(option);
+        if (this.multiple) {
+            if (this.value) {
+                for (let val of this.value) {
+                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {
+                        selected = true;
+                        break;
+                    }
+                }
+            }
+        }
+        else {
+            selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);
+        }
+        return selected;
+    }
+}
+SelectButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SelectButton, selector: "p-selectButton", inputs: { options: "options", optionLabel: "optionLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", tabindex: "tabindex", multiple: "multiple", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", dataKey: "dataKey" }, outputs: { onOptionClick: "onOptionClick", onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [SELECTBUTTON_VALUE_ACCESSOR], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-selectButton', template: `
+        <div [ngClass]="'p-selectbutton p-buttonset p-component'" [ngStyle]="style" [class]="styleClass"  role="group">
+            <div *ngFor="let option of options; let i = index" #btn class="p-button p-component" [class]="option.styleClass" role="button" [attr.aria-pressed]="isSelected(option)"
+                [ngClass]="{'p-highlight':isSelected(option),
+                        'p-disabled': disabled || isOptionDisabled(option),
+                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}"
+                (click)="onItemClick($event,option,i)" (keydown.enter)="onItemClick($event,option,i)"
+                [attr.title]="option.title" [attr.aria-label]="option.label" (blur)="onBlur()" [attr.tabindex]="disabled ? null : tabindex" [attr.aria-labelledby]="this.getOptionLabel(option)" pRipple>
+                <ng-container *ngIf="!itemTemplate else customcontent">
+                    <span [ngClass]="'p-button-icon p-button-icon-left'" [class]="option.icon" *ngIf="option.icon"></span>
+                    <span class="p-button-label">{{getOptionLabel(option)}}</span>
+                </ng-container>
+                <ng-template #customcontent>
+                    <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: option, index: i}"></ng-container>
+                </ng-template>
+            </div>
+        </div>
+    `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
+                type: Input
+            }], optionLabel: [{
+                type: Input
+            }], optionValue: [{
+                type: Input
+            }], optionDisabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], multiple: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], onOptionClick: [{
+                type: Output
+            }], onChange: [{
+                type: Output
+            }], itemTemplate: [{
+                type: ContentChild,
+                args: [TemplateRef]
+            }] } });
+class SelectButtonModule {
+}
+SelectButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SelectButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, declarations: [SelectButton], imports: [CommonModule, RippleModule], exports: [SelectButton] });
+SelectButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [SelectButton],
+                    declarations: [SelectButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SELECTBUTTON_VALUE_ACCESSOR, SelectButton, SelectButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-selectbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-selectbutton.mjs","sources":["../../src/app/components/selectbutton/selectbutton.ts","../../src/app/components/selectbutton/primeng-selectbutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ContentChild,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ObjectUtils} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SELECTBUTTON_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SelectButton),\n  multi: true\n};\n\n@Component({\n    selector: 'p-selectButton',\n    template: `\n        <div [ngClass]=\"'p-selectbutton p-buttonset p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\"  role=\"group\">\n            <div *ngFor=\"let option of options; let i = index\" #btn class=\"p-button p-component\" [class]=\"option.styleClass\" role=\"button\" [attr.aria-pressed]=\"isSelected(option)\"\n                [ngClass]=\"{'p-highlight':isSelected(option),\n                        'p-disabled': disabled || isOptionDisabled(option),\n                        'p-button-icon-only': (option.icon && !getOptionLabel(option))}\"\n                (click)=\"onItemClick($event,option,i)\" (keydown.enter)=\"onItemClick($event,option,i)\"\n                [attr.title]=\"option.title\" [attr.aria-label]=\"option.label\" (blur)=\"onBlur()\" [attr.tabindex]=\"disabled ? null : tabindex\" [attr.aria-labelledby]=\"this.getOptionLabel(option)\" pRipple>\n                <ng-container *ngIf=\"!itemTemplate else customcontent\">\n                    <span [ngClass]=\"'p-button-icon p-button-icon-left'\" [class]=\"option.icon\" *ngIf=\"option.icon\"></span>\n                    <span class=\"p-button-label\">{{getOptionLabel(option)}}</span>\n                </ng-container>\n                <ng-template #customcontent>\n                    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                </ng-template>\n            </div>\n        </div>\n    `,\n    providers: [SELECTBUTTON_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['../button/button.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SelectButton implements ControlValueAccessor {\n\n    @Input() options: any[];\n\n    @Input() optionLabel: string;\n\n    @Input() optionValue: string;\n\n    @Input() optionDisabled: string;\n\n    @Input() tabindex: number = 0;\n\n    @Input() multiple: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() disabled: boolean;\n\n    @Input() dataKey: string\n\n    @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @ContentChild(TemplateRef) itemTemplate;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public cd: ChangeDetectorRef) {}\n\n    getOptionLabel(option: any) {\n        return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : (option.label != undefined ? option.label : option);\n    }\n\n    getOptionValue(option: any) {\n        return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : (this.optionLabel || option.value === undefined ? option : option.value);\n    }\n\n    isOptionDisabled(option: any) {\n        return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onItemClick(event, option: any, index: number) {\n        if (this.disabled || this.isOptionDisabled(option)) {\n            return;\n        }\n\n        if (this.multiple) {\n            if (this.isSelected(option))\n                this.removeOption(option);\n            else\n                this.value = [...(this.value||[]), this.getOptionValue(option)];\n        }\n        else {\n            this.value = this.getOptionValue(option);\n        }\n\n        this.onOptionClick.emit({\n            originalEvent: event,\n            option: option,\n            index: index\n        });\n\n        this.onModelChange(this.value);\n\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        });\n    }\n\n    onBlur() {\n        this.onModelTouched();\n    }\n\n    removeOption(option: any): void {\n        this.value = this.value.filter(val => !ObjectUtils.equals(val, this.getOptionValue(option), this.dataKey));\n    }\n\n    isSelected(option: any) {\n        let selected = false;\n        let optionValue = this.getOptionValue(option);\n\n        if (this.multiple) {\n            if (this.value) {\n                for (let val of this.value) {\n                    if (ObjectUtils.equals(val, optionValue, this.dataKey)) {\n                        selected = true;\n                        break;\n                    }\n                }\n            }\n        }\n        else {\n            selected = ObjectUtils.equals(this.getOptionValue(option), this.value, this.dataKey);\n        }\n\n        return selected;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [SelectButton],\n    declarations: [SelectButton]\n})\nexport class SelectButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, Output, NgModule } from '@angular/core';
+import { animation, style, animate, trigger, transition, useAnimation } from '@angular/animations';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { DomHandler } from 'primeng/dom';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate } from 'primeng/api';
+import { ZIndexUtils } from 'primeng/utils';
+
+const showAnimation = animation([
+    style({ transform: '{{transform}}', opacity: 0 }),
+    animate('{{transition}}')
+]);
+const hideAnimation = animation([
+    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))
+]);
+class Sidebar {
+    constructor(el, renderer, cd, config) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.blockScroll = false;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.modal = true;
+        this.dismissible = true;
+        this.showCloseIcon = true;
+        this.closeOnEscape = true;
+        this.transitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this._position = "left";
+        this._fullScreen = false;
+        this.transformOptions = "translate3d(-100%, 0px, 0px)";
+    }
+    ngAfterViewInit() {
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(val) {
+        this._visible = val;
+    }
+    get position() {
+        return this._position;
+    }
+    ;
+    set position(value) {
+        this._position = value;
+        switch (value) {
+            case 'left':
+                this.transformOptions = "translate3d(-100%, 0px, 0px)";
+                break;
+            case 'right':
+                this.transformOptions = "translate3d(100%, 0px, 0px)";
+                break;
+            case 'bottom':
+                this.transformOptions = "translate3d(0px, 100%, 0px)";
+                break;
+            case 'top':
+                this.transformOptions = "translate3d(0px, -100%, 0px)";
+                break;
+        }
+    }
+    get fullScreen() {
+        return this._fullScreen;
+    }
+    set fullScreen(value) {
+        this._fullScreen = value;
+        if (value)
+            this.transformOptions = "none";
+    }
+    show() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);
+        }
+        if (this.modal) {
+            this.enableModality();
+        }
+        this.onShow.emit({});
+    }
+    hide() {
+        this.onHide.emit({});
+        if (this.modal) {
+            this.disableModality();
+        }
+    }
+    close(event) {
+        this.hide();
+        this.visibleChange.emit(false);
+        event.preventDefault();
+    }
+    enableModality() {
+        if (!this.mask) {
+            this.mask = document.createElement('div');
+            this.mask.style.zIndex = String(parseInt(this.container.style.zIndex) - 1);
+            DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');
+            if (this.dismissible) {
+                this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {
+                    if (this.dismissible) {
+                        this.close(event);
+                    }
+                });
+            }
+            document.body.appendChild(this.mask);
+            if (this.blockScroll) {
+                DomHandler.addClass(document.body, 'p-overflow-hidden');
+            }
+        }
+    }
+    disableModality() {
+        if (this.mask) {
+            DomHandler.addClass(this.mask, 'p-component-overlay-leave');
+            this.animationEndListener = this.destroyModal.bind(this);
+            this.mask.addEventListener('animationend', this.animationEndListener);
+        }
+    }
+    destroyModal() {
+        this.unbindMaskClickListener();
+        if (this.mask) {
+            document.body.removeChild(this.mask);
+        }
+        if (this.blockScroll) {
+            DomHandler.removeClass(document.body, 'p-overflow-hidden');
+        }
+        this.unbindAnimationEndListener();
+        this.mask = null;
+    }
+    onAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.container = event.element;
+                this.appendContainer();
+                this.show();
+                if (this.closeOnEscape) {
+                    this.bindDocumentEscapeListener();
+                }
+                break;
+        }
+    }
+    onAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                this.hide();
+                ZIndexUtils.clear(this.container);
+                this.unbindGlobalListeners();
+                break;
+        }
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    bindDocumentEscapeListener() {
+        const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {
+            if (event.which == 27) {
+                if (parseInt(this.container.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {
+                    this.close(event);
+                }
+            }
+        });
+    }
+    unbindDocumentEscapeListener() {
+        if (this.documentEscapeListener) {
+            this.documentEscapeListener();
+            this.documentEscapeListener = null;
+        }
+    }
+    unbindMaskClickListener() {
+        if (this.maskClickListener) {
+            this.maskClickListener();
+            this.maskClickListener = null;
+        }
+    }
+    unbindGlobalListeners() {
+        this.unbindMaskClickListener();
+        this.unbindDocumentEscapeListener();
+    }
+    unbindAnimationEndListener() {
+        if (this.animationEndListener && this.mask) {
+            this.mask.removeEventListener('animationend', this.animationEndListener);
+            this.animationEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.initialized = false;
+        if (this.visible && this.modal) {
+            this.destroyModal();
+        }
+        if (this.appendTo && this.container) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+        if (this.container && this.autoZIndex) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.container = null;
+        this.unbindGlobalListeners();
+        this.unbindAnimationEndListener();
+    }
+}
+Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Sidebar, selector: "p-sidebar", inputs: { appendTo: "appendTo", blockScroll: "blockScroll", style: "style", styleClass: "styleClass", ariaCloseLabel: "ariaCloseLabel", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", modal: "modal", dismissible: "dismissible", showCloseIcon: "showCloseIcon", closeOnEscape: "closeOnEscape", transitionOptions: "transitionOptions", visible: "visible", position: "position", fullScreen: "fullScreen" }, outputs: { onShow: "onShow", onHide: "onHide", visibleChange: "visibleChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
+        trigger('panelState', [
+            transition('void => visible', [
+                useAnimation(showAnimation)
+            ]),
+            transition('visible => void', [
+                useAnimation(hideAnimation)
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Sidebar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-sidebar', template: `
+        <div #container [ngClass]="{'p-sidebar':true, 'p-sidebar-active': visible,
+            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),
+            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),
+            'p-sidebar-full': fullScreen}"  *ngIf="visible" [@panelState]="{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}" (@panelState.start)="onAnimationStart($event)" (@panelState.done)="onAnimationEnd($event)" [ngStyle]="style" [class]="styleClass"  role="complementary" [attr.aria-modal]="modal">
+            <div class="p-sidebar-header">
+                <button type="button" class="p-sidebar-close p-sidebar-icon p-link" (click)="close($event)" (keydown.enter)="close($event)" [attr.aria-label]="ariaCloseLabel"  *ngIf="showCloseIcon" pRipple>
+                    <span class="p-sidebar-close-icon pi pi-times"></span>
+                </button>
+            </div>
+            <div class="p-sidebar-content">
+                <ng-content></ng-content>
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('panelState', [
+                            transition('void => visible', [
+                                useAnimation(showAnimation)
+                            ]),
+                            transition('visible => void', [
+                                useAnimation(hideAnimation)
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-sidebar{position:fixed;transition:transform .3s;display:flex;flex-direction:column}.p-sidebar-content{position:relative;overflow-y:auto}.p-sidebar-header{display:flex;align-items:center;justify-content:flex-end}.p-sidebar-icon{display:flex;align-items:center;justify-content:center}.p-sidebar-left{top:0;left:0;width:20rem;height:100%}.p-sidebar-right{top:0;right:0;width:20rem;height:100%}.p-sidebar-top{top:0;left:0;width:100%;height:10rem}.p-sidebar-bottom{bottom:0;left:0;width:100%;height:10rem}.p-sidebar-full{width:100%;height:100%;top:0;left:0;transition:none}.p-sidebar-left.p-sidebar-sm,.p-sidebar-right.p-sidebar-sm{width:20rem}.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-md{width:40rem}.p-sidebar-left.p-sidebar-lg,.p-sidebar-right.p-sidebar-lg{width:60rem}.p-sidebar-top.p-sidebar-sm,.p-sidebar-bottom.p-sidebar-sm{height:10rem}.p-sidebar-top.p-sidebar-md,.p-sidebar-bottom.p-sidebar-md{height:20rem}.p-sidebar-top.p-sidebar-lg,.p-sidebar-bottom.p-sidebar-lg{height:30rem}@media screen and (max-width: 64em){.p-sidebar-left.p-sidebar-lg,.p-sidebar-left.p-sidebar-md,.p-sidebar-right.p-sidebar-lg,.p-sidebar-right.p-sidebar-md{width:20rem}}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { appendTo: [{
+                type: Input
+            }], blockScroll: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaCloseLabel: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], modal: [{
+                type: Input
+            }], dismissible: [{
+                type: Input
+            }], showCloseIcon: [{
+                type: Input
+            }], closeOnEscape: [{
+                type: Input
+            }], transitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], visible: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], fullScreen: [{
+                type: Input
+            }] } });
+class SidebarModule {
+}
+SidebarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SidebarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, declarations: [Sidebar], imports: [CommonModule, RippleModule], exports: [Sidebar] });
+SidebarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SidebarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Sidebar],
+                    declarations: [Sidebar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Sidebar, SidebarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-sidebar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-sidebar.mjs","sources":["../../src/app/components/sidebar/sidebar.ts","../../src/app/components/sidebar/primeng-sidebar.ts"],"sourcesContent":["import { NgModule, Component, AfterViewInit, OnDestroy, Input, Output, EventEmitter, ElementRef, Renderer2, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, QueryList, AfterContentInit, TemplateRef, ChangeDetectorRef } from '@angular/core';\nimport { trigger, style, transition, animate, animation, useAnimation } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { RippleModule } from 'primeng/ripple';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeNGConfig, PrimeTemplate } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\n\nconst showAnimation = animation([\n    style({ transform: '{{transform}}', opacity: 0 }),\n    animate('{{transition}}')\n]);\n\nconst hideAnimation = animation([\n    animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\n@Component({\n    selector: 'p-sidebar',\n    template: `\n        <div #container [ngClass]=\"{'p-sidebar':true, 'p-sidebar-active': visible,\n            'p-sidebar-left': (position === 'left' && !fullScreen), 'p-sidebar-right': (position === 'right' && !fullScreen),\n            'p-sidebar-top': (position === 'top' && !fullScreen), 'p-sidebar-bottom': (position === 'bottom' && !fullScreen),\n            'p-sidebar-full': fullScreen}\"  *ngIf=\"visible\" [@panelState]=\"{value: 'visible', params: {transform: transformOptions, transition: transitionOptions}}\" (@panelState.start)=\"onAnimationStart($event)\" (@panelState.done)=\"onAnimationEnd($event)\" [ngStyle]=\"style\" [class]=\"styleClass\"  role=\"complementary\" [attr.aria-modal]=\"modal\">\n            <div class=\"p-sidebar-header\">\n                <button type=\"button\" class=\"p-sidebar-close p-sidebar-icon p-link\" (click)=\"close($event)\" (keydown.enter)=\"close($event)\" [attr.aria-label]=\"ariaCloseLabel\"  *ngIf=\"showCloseIcon\" pRipple>\n                    <span class=\"p-sidebar-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n            <div class=\"p-sidebar-content\">\n                <ng-content></ng-content>\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('panelState', [\n            transition('void => visible', [\n                useAnimation(showAnimation)\n            ]),\n            transition('visible => void', [\n                useAnimation(hideAnimation)\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./sidebar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Sidebar implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() appendTo: any;\n\n    @Input() blockScroll: boolean = false;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaCloseLabel: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() modal: boolean = true;\n\n    @Input() dismissible: boolean = true;\n\n    @Input() showCloseIcon: boolean = true;\n\n    @Input() closeOnEscape: boolean = true;\n\n    @Input() transitionOptions: string = '150ms cubic-bezier(0, 0, 0.2, 1)';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n    initialized: boolean;\n\n    _visible: boolean;\n\n    _position: string = \"left\";\n\n    _fullScreen: boolean = false;\n\n    container: HTMLDivElement;\n\n    transformOptions: any = \"translate3d(-100%, 0px, 0px)\";\n\n    mask: HTMLDivElement;\n\n    maskClickListener: Function;\n\n    documentEscapeListener: Function;\n\n    animationEndListener: any;\n\n    contentTemplate: TemplateRef<any>;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    @Input() get visible(): boolean {\n        return this._visible;\n    }\n\n    set visible(val: boolean) {\n        this._visible = val;\n    }\n\n    @Input() get position(): string {\n        return this._position;\n    };\n\n    set position(value: string) {\n        this._position = value;\n\n        switch (value) {\n            case 'left':\n                this.transformOptions = \"translate3d(-100%, 0px, 0px)\";\n                break;\n            case 'right':\n                this.transformOptions = \"translate3d(100%, 0px, 0px)\";\n                break;\n            case 'bottom':\n                this.transformOptions = \"translate3d(0px, 100%, 0px)\";\n                break;\n            case 'top':\n                this.transformOptions = \"translate3d(0px, -100%, 0px)\";\n                break;\n        }\n    }\n\n    @Input() get fullScreen(): boolean {\n        return this._fullScreen;\n    }\n\n    set fullScreen(value: boolean) {\n        this._fullScreen = value;\n\n        if (value)\n            this.transformOptions = \"none\";\n    }\n\n    show() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('modal', this.container, this.baseZIndex || this.config.zIndex.modal);\n        }\n\n        if (this.modal) {\n            this.enableModality();\n        }\n\n        this.onShow.emit({});\n    }\n\n    hide() {\n        this.onHide.emit({});\n\n        if (this.modal) {\n            this.disableModality();\n        }\n    }\n\n    close(event: Event) {\n        this.hide();\n        this.visibleChange.emit(false);\n        event.preventDefault();\n    }\n\n    enableModality() {\n        if (!this.mask) {\n            this.mask = document.createElement('div');\n            this.mask.style.zIndex = String(parseInt(this.container.style.zIndex) - 1);\n            DomHandler.addMultipleClasses(this.mask, 'p-component-overlay p-sidebar-mask p-component-overlay p-component-overlay-enter');\n\n            if (this.dismissible) {\n                this.maskClickListener = this.renderer.listen(this.mask, 'click', (event: any) => {\n                    if (this.dismissible) {\n                        this.close(event);\n                    }\n                });\n            }\n\n            document.body.appendChild(this.mask);\n            if (this.blockScroll) {\n                DomHandler.addClass(document.body, 'p-overflow-hidden');\n            }\n        }\n    }\n\n    disableModality() {\n        if (this.mask) {\n            DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n            this.animationEndListener = this.destroyModal.bind(this);\n            this.mask.addEventListener('animationend', this.animationEndListener);\n        }\n    }\n\n    destroyModal() {\n        this.unbindMaskClickListener();\n\n        if (this.mask) {\n            document.body.removeChild(this.mask);\n        }\n\n        if (this.blockScroll) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n\n        this.unbindAnimationEndListener();\n        this.mask = null;\n    }\n\n    onAnimationStart(event) {\n        switch (event.toState) {\n            case 'visible':\n                this.container = event.element;\n                this.appendContainer();\n                this.show();\n\n                if (this.closeOnEscape) {\n                    this.bindDocumentEscapeListener();\n                }\n                break;\n        }\n    }\n\n    onAnimationEnd(event) {\n        switch (event.toState) {\n            case 'void':\n                this.hide();\n                ZIndexUtils.clear(this.container);\n                this.unbindGlobalListeners();\n            break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    bindDocumentEscapeListener() {\n        const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n        this.documentEscapeListener = this.renderer.listen(documentTarget, 'keydown', (event) => {\n            if (event.which == 27) {\n                if (parseInt(this.container.style.zIndex) === (DomHandler.zindex + this.baseZIndex)) {\n                    this.close(event);\n                }\n            }\n        });\n    }\n\n    unbindDocumentEscapeListener() {\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n            this.documentEscapeListener = null;\n        }\n    }\n\n    unbindMaskClickListener() {\n        if (this.maskClickListener) {\n            this.maskClickListener();\n            this.maskClickListener = null;\n        }\n    }\n\n    unbindGlobalListeners() {\n        this.unbindMaskClickListener();\n        this.unbindDocumentEscapeListener();\n    }\n\n    unbindAnimationEndListener() {\n        if (this.animationEndListener && this.mask) {\n            this.mask.removeEventListener('animationend', this.animationEndListener);\n            this.animationEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.initialized = false;\n\n        if (this.visible && this.modal) {\n            this.destroyModal();\n        }\n\n        if (this.appendTo && this.container) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n\n        if (this.container && this.autoZIndex) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.container = null;\n        this.unbindGlobalListeners();\n        this.unbindAnimationEndListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, RippleModule],\n    exports: [Sidebar],\n    declarations: [Sidebar]\n})\nexport class SidebarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAM,aAAa,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACjD,OAAO,CAAC,gBAAgB,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CAC/E,CAAC,CAAC;MAqCU,OAAO;IAwDhB,YAAmB,EAAc,EAAS,QAAmB,EAAS,EAAqB,EAAS,MAAqB;QAAtG,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,OAAE,GAAF,EAAE,CAAmB;QAAS,WAAM,GAAN,MAAM,CAAe;QApDhH,gBAAW,GAAY,KAAK,CAAC;QAQ7B,eAAU,GAAY,IAAI,CAAC;QAE3B,eAAU,GAAW,CAAC,CAAC;QAEvB,UAAK,GAAY,IAAI,CAAC;QAEtB,gBAAW,GAAY,IAAI,CAAC;QAE5B,kBAAa,GAAY,IAAI,CAAC;QAE9B,kBAAa,GAAY,IAAI,CAAC;QAE9B,sBAAiB,GAAW,kCAAkC,CAAC;QAI9D,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;QAMhE,cAAS,GAAW,MAAM,CAAC;QAE3B,gBAAW,GAAY,KAAK,CAAC;QAI7B,qBAAgB,GAAQ,8BAA8B,CAAC;KAYuE;IAE9H,eAAe;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAQ,IAAI,CAAC,OAAO,EAAE;gBAClB,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACrC,MAAM;gBAEV;oBACI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACrC,MAAM;aACb;SACJ,CAAC,CAAC;KACN;IAED,IAAa,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAED,IAAI,OAAO,CAAC,GAAY;QACpB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IAED,IAAa,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;;IAED,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,QAAQ,KAAK;YACT,KAAK,MAAM;gBACP,IAAI,CAAC,gBAAgB,GAAG,8BAA8B,CAAC;gBACvD,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,gBAAgB,GAAG,6BAA6B,CAAC;gBACtD,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,gBAAgB,GAAG,6BAA6B,CAAC;gBACtD,MAAM;YACV,KAAK,KAAK;gBACN,IAAI,CAAC,gBAAgB,GAAG,8BAA8B,CAAC;gBACvD,MAAM;SACb;KACJ;IAED,IAAa,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,UAAU,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,KAAK;YACL,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;KACtC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzF;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB;IAED,IAAI;QACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;IAED,KAAK,CAAC,KAAY;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,kFAAkF,CAAC,CAAC;YAE7H,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,KAAU;oBACzE,IAAI,IAAI,CAAC,WAAW,EAAE;wBAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACJ,CAAC,CAAC;aACN;YAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;aAC3D;SACJ;KACJ;IAED,eAAe;QACX,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;YAC5D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACzE;KACJ;IAED,YAAY;QACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;IAED,gBAAgB,CAAC,KAAK;QAClB,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,SAAS;gBACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,IAAI,IAAI,CAAC,aAAa,EAAE;oBACpB,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACrC;gBACD,MAAM;SACb;KACJ;IAED,cAAc,CAAC,KAAK;QAChB,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,MAAM;gBACP,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACjC,MAAM;SACT;KACJ;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;gBAE1C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7D;KACJ;IAED,0BAA0B;QACtB,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC;QAEvF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,KAAK;YAChF,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;gBACnB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;oBACjF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACrB;aACJ;SACJ,CAAC,CAAC;KACN;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;KACJ;IAED,uBAAuB;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACjC;KACJ;IAED,qBAAqB;QACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACvC;IAED,0BAA0B;QACtB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SACpC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrD;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACnC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACrC;;oGArRQ,OAAO;wFAAP,OAAO,ylBA0BC,aAAa,6BA3DpB;;;;;;;;;;;;;;;KAeT,6kDACW;QACR,OAAO,CAAC,YAAY,EAAE;YAClB,UAAU,CAAC,iBAAiB,EAAE;gBAC1B,YAAY,CAAC,aAAa,CAAC;aAC9B,CAAC;YACF,UAAU,CAAC,iBAAiB,EAAE;gBAC1B,YAAY,CAAC,aAAa,CAAC;aAC9B,CAAC;SACL,CAAC;KACL;2FAQQ,OAAO;kBAnCnB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;;;;;;KAeT,cACW;wBACR,OAAO,CAAC,YAAY,EAAE;4BAClB,UAAU,CAAC,iBAAiB,EAAE;gCAC1B,YAAY,CAAC,aAAa,CAAC;6BAC9B,CAAC;4BACF,UAAU,CAAC,iBAAiB,EAAE;gCAC1B,YAAY,CAAC,aAAa,CAAC;6BAC9B,CAAC;yBACL,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;qLAIQ,QAAQ;sBAAhB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAEG,iBAAiB;sBAAzB,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;gBAEpB,MAAM;sBAAf,MAAM;gBAEG,MAAM;sBAAf,MAAM;gBAEG,aAAa;sBAAtB,MAAM;gBA4CM,OAAO;sBAAnB,KAAK;gBAQO,QAAQ;sBAApB,KAAK;gBAuBO,UAAU;sBAAtB,KAAK;;MAkLG,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBA7Rb,OAAO,aAyRN,YAAY,EAAE,YAAY,aAzR3B,OAAO;2GA6RP,aAAa,YAJb,CAAC,YAAY,EAAE,YAAY,CAAC;2FAI5B,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;AChVD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,77 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Skeleton {
+    constructor() {
+        this.shape = "rectangle";
+        this.animation = "wave";
+        this.borderRadius = null;
+        this.size = null;
+        this.width = "100%";
+        this.height = "1rem";
+    }
+    containerClass() {
+        return {
+            'p-skeleton p-component': true,
+            'p-skeleton-circle': this.shape === 'circle',
+            'p-skeleton-none': this.animation === 'none'
+        };
+    }
+    containerStyle() {
+        if (this.size)
+            return { ...this.style, width: this.size, height: this.size, borderRadius: this.borderRadius };
+        else
+            return { ...this.style, width: this.width, height: this.height, borderRadius: this.borderRadius };
+    }
+}
+Skeleton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Skeleton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Skeleton, selector: "p-skeleton", inputs: { styleClass: "styleClass", style: "style", shape: "shape", animation: "animation", borderRadius: "borderRadius", size: "size", width: "width", height: "height" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, isInline: true, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Skeleton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-skeleton', template: `
+        <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()">
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-skeleton{position:relative;overflow:hidden}.p-skeleton:after{content:\"\";animation:p-skeleton-animation 1.2s infinite;height:100%;left:0;position:absolute;right:0;top:0;transform:translate(-100%);z-index:1}.p-skeleton.p-skeleton-circle{border-radius:50%}.p-skeleton-none:after{animation:none}@keyframes p-skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], shape: [{
+                type: Input
+            }], animation: [{
+                type: Input
+            }], borderRadius: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], width: [{
+                type: Input
+            }], height: [{
+                type: Input
+            }] } });
+class SkeletonModule {
+}
+SkeletonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SkeletonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, declarations: [Skeleton], imports: [CommonModule], exports: [Skeleton] });
+SkeletonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SkeletonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Skeleton],
+                    declarations: [Skeleton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Skeleton, SkeletonModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-skeleton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-skeleton.mjs","sources":["../../src/app/components/skeleton/skeleton.ts","../../src/app/components/skeleton/primeng-skeleton.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-skeleton',\n    template: `\n        <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"containerStyle()\">\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./skeleton.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Skeleton {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() shape: string = \"rectangle\";\n\n    @Input() animation: string = \"wave\";\n\n    @Input() borderRadius: string = null;\n\n    @Input() size: string = null;\n\n    @Input() width: string = \"100%\";\n\n    @Input() height: string = \"1rem\";\n\n    containerClass() {\n        return {\n            'p-skeleton p-component': true,\n            'p-skeleton-circle': this.shape === 'circle',\n            'p-skeleton-none': this.animation === 'none'\n        };\n    }\n\n    containerStyle() {\n        if (this.size)\n                return {...this.style, width: this.size, height: this.size, borderRadius: this.borderRadius};\n            else\n                return {...this.style, width: this.width, height: this.height, borderRadius: this.borderRadius};\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Skeleton],\n    declarations: [Skeleton]\n})\nexport class SkeletonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAgBa,QAAQ;IAbrB;QAmBa,UAAK,GAAW,WAAW,CAAC;QAE5B,cAAS,GAAW,MAAM,CAAC;QAE3B,iBAAY,GAAW,IAAI,CAAC;QAE5B,SAAI,GAAW,IAAI,CAAC;QAEpB,UAAK,GAAW,MAAM,CAAC;QAEvB,WAAM,GAAW,MAAM,CAAC;KAgBpC;IAdG,cAAc;QACV,OAAO;YACH,wBAAwB,EAAE,IAAI;YAC9B,mBAAmB,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC5C,iBAAiB,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM;SAC/C,CAAC;KACL;IAED,cAAc;QACV,IAAI,IAAI,CAAC,IAAI;YACL,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC;;YAE7F,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC;KAC3G;;qGA/BQ,QAAQ;yFAAR,QAAQ,qQAXP;;;KAGT;2FAQQ,QAAQ;kBAbpB,SAAS;+BACI,YAAY,YACZ;;;KAGT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;;MAuBG,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAvCd,QAAQ,aAmCP,YAAY,aAnCb,QAAQ;4GAuCR,cAAc,YAJd,CAAC,YAAY,CAAC;2FAId,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;ACtDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,483 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, NgModule } from '@angular/core';
+import { trigger, transition, style, animate } from '@angular/animations';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i3 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i4 from 'primeng/api';
+
+class SlideMenuSub {
+    constructor(slideMenu) {
+        this.backLabel = 'Back';
+        this.easing = 'ease-out';
+        this.slideMenu = slideMenu;
+    }
+    itemClick(event, item, listitem) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items && !this.slideMenu.animating) {
+            this.slideMenu.left -= this.slideMenu.menuWidth;
+            this.activeItem = listitem;
+            this.slideMenu.animating = true;
+            setTimeout(() => this.slideMenu.animating = false, this.effectDuration);
+        }
+        if (!item.items && this.slideMenu.popup) {
+            this.slideMenu.hide();
+        }
+    }
+    focusNextList(listitem) {
+        if (!this.slideMenu.animating) {
+            let focusableElements = DomHandler.getFocusableElements(listitem);
+            if (focusableElements && focusableElements.length > 0) {
+                focusableElements[0].focus();
+            }
+            this.unbindTransitionEndListener();
+        }
+    }
+    onItemKeyDown(event) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.code) {
+            case 'Space':
+            case 'Enter':
+                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {
+                    listItem.children[0].click();
+                    this.transitionEndListener = this.focusNextList.bind(this, listItem);
+                    this.sublistViewChild.nativeElement.addEventListener('transitionend', this.transitionEndListener);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+    }
+    unbindTransitionEndListener() {
+        if (this.transitionEndListener && this.sublistViewChild) {
+            this.sublistViewChild.nativeElement.removeEventListener('transitionend', this.transitionEndListener);
+            this.transitionEndListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.activeItem = null;
+        this.unbindTransitionEndListener();
+    }
+    get isActive() {
+        return -this.slideMenu.left == (this.index * this.menuWidth);
+    }
+}
+SlideMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, deps: [{ token: forwardRef(() => SlideMenu) }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenuSub, selector: "p-slideMenuSub", inputs: { item: "item", root: "root", backLabel: "backLabel", menuWidth: "menuWidth", effectDuration: "effectDuration", easing: "easing", index: "index" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "sublistViewChild", first: true, predicate: ["sublist"], descendants: true }], ngImport: i0, template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-slideMenuSub',
+                    template: `
+        <ul #sublist [ngClass]="{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}"
+            [style.width.px]="menuWidth" [style.left.px]="root ? slideMenu.left : slideMenu.menuWidth"
+            [style.transitionProperty]="root ? 'left' : 'none'" [style.transitionDuration]="effectDuration + 'ms'" [style.transitionTimingFunction]="easing">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listitem [ngClass]="{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}" pTooltip [tooltipOptions]="child.tooltipOptions"
+                    [class]="child.styleClass" [ngStyle]="child.style">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event)"  [attr.href]="child.url" class="p-menuitem-link" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                        [ngClass]="{'p-disabled':child.disabled}" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        (click)="itemClick($event, child, listitem)">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event)"  [routerLink]="child.routerLink" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'"
+                        [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}" [href]="child.url" class="p-menuitem-link"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled || !isActive ? null : '0'"
+                        [ngClass]="{'p-disabled':child.disabled}"
+                        (click)="itemClick($event, child, listitem)"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state">
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-fw pi-caret-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-slideMenuSub class="p-submenu" [item]="child" [index]="index + 1" [menuWidth]="menuWidth" *ngIf="child.items"></p-slideMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => SlideMenu)]
+                }] }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], sublistViewChild: [{
+                type: ViewChild,
+                args: ['sublist']
+            }] } });
+class SlideMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.menuWidth = 190;
+        this.viewportHeight = 180;
+        this.effectDuration = 250;
+        this.easing = 'ease-out';
+        this.backLabel = 'Back';
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.left = 0;
+        this.animating = false;
+    }
+    ngAfterViewChecked() {
+        if (!this.viewportUpdated && !this.popup && this.containerViewChild) {
+            this.updateViewPort();
+            this.viewportUpdated = true;
+        }
+    }
+    set container(element) {
+        this.containerViewChild = element;
+    }
+    set backward(element) {
+        this.backwardViewChild = element;
+    }
+    set slideMenuContent(element) {
+        this.slideMenuContentViewChild = element;
+    }
+    updateViewPort() {
+        this.slideMenuContentViewChild.nativeElement.style.height = this.viewportHeight - DomHandler.getHiddenElementOuterHeight(this.backwardViewChild.nativeElement) + 'px';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.updateViewPort();
+                    this.moveOnTop();
+                    this.onShow.emit({});
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.containerViewChild.nativeElement, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                this.onHide.emit({});
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.containerViewChild.nativeElement);
+            else
+                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    goBack() {
+        this.left += this.menuWidth;
+    }
+    onBackwardKeydown(event) {
+        this.goBack();
+        if (!this.left) {
+            setTimeout(() => {
+                let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);
+                if (focusableElements && focusableElements.length > 0) {
+                    focusableElements[0].focus();
+                }
+            }, 1);
+        }
+        event.preventDefault();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault) {
+                    this.hide();
+                    this.cd.detectChanges();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+        this.left = 0;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+SlideMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i4.PrimeNGConfig }, { token: i4.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+SlideMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SlideMenu, selector: "p-slideMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", menuWidth: "menuWidth", viewportHeight: "viewportHeight", effectDuration: "effectDuration", easing: "easing", backLabel: "backLabel", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "backward", first: true, predicate: ["backward"], descendants: true }, { propertyName: "slideMenuContent", first: true, predicate: ["slideMenuContent"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"], components: [{ type: SlideMenuSub, selector: "p-slideMenuSub", inputs: ["item", "root", "backLabel", "menuWidth", "effectDuration", "easing", "index"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slideMenu', template: `
+        <div #container [ngClass]="{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}"
+            [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <div class="p-slidemenu-wrapper" [style.height]="left ? viewportHeight + 'px' : 'auto'" [style.width]="menuWidth + 'px'">
+                <div #slideMenuContent class="p-slidemenu-content">
+                    <p-slideMenuSub [item]="model" root="root" [index]="0" [menuWidth]="menuWidth" [effectDuration]="effectDuration" [easing]="easing"></p-slideMenuSub>
+                </div>
+                <a #backward (keydown.enter)="onBackwardKeydown($event)" (keydown.space)="onBackwardKeydown($event)" class="p-slidemenu-backward p-menuitem-link" tabindex="0" [style.display]="left ? 'block' : 'none'" (click)="goBack()">
+                    <span class="p-slidemenu-backward-icon pi pi-fw pi-caret-left"></span><span>{{backLabel}}</span>
+                </a>
+            </div>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slidemenu{width:12.5rem}.p-slidemenu.p-slidemenu-overlay{position:absolute;top:0;left:0}.p-slidemenu ul{list-style:none;margin:0;padding:0}.p-slidemenu .p-slidemenu-rootlist{position:absolute;top:0}.p-slidemenu .p-submenu-list{display:none;position:absolute;top:0;width:12.5rem}.p-slidemenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden}.p-slidemenu .p-menuitem-icon,.p-slidemenu .p-menuitem-text{vertical-align:middle}.p-slidemenu .p-menuitem{position:relative}.p-slidemenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-slidemenu .p-slidemenu-wrapper{position:relative}.p-slidemenu .p-slidemenu-content{overflow-x:hidden;overflow-y:auto;position:relative}.p-slidemenu-backward{position:absolute;bottom:0;width:100%;cursor:pointer;display:none}.p-slidemenu-backward .p-slidemenu-backward-icon,.p-slidemenu-backward span{vertical-align:middle}.p-slidemenu .p-menuitem-active{position:static}.p-slidemenu .p-menuitem-active>.p-submenu>.p-submenu-list{display:block}.p-slidemenu ul:not(.p-active-submenu)>.p-menuitem:not(.p-menuitem-active),.p-slidemenu .p-active-submenu>.p-menuitem-active>.p-submenu>.p-submenu-list{display:none}.p-slidemenu .p-active-submenu>.p-menuitem-active~.p-menuitem{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i4.PrimeNGConfig }, { type: i4.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuWidth: [{
+                type: Input
+            }], viewportHeight: [{
+                type: Input
+            }], effectDuration: [{
+                type: Input
+            }], easing: [{
+                type: Input
+            }], backLabel: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], backward: [{
+                type: ViewChild,
+                args: ['backward']
+            }], slideMenuContent: [{
+                type: ViewChild,
+                args: ['slideMenuContent']
+            }] } });
+class SlideMenuModule {
+}
+SlideMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SlideMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, declarations: [SlideMenu, SlideMenuSub], imports: [CommonModule, RouterModule, TooltipModule], exports: [SlideMenu, RouterModule, TooltipModule] });
+SlideMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SlideMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [SlideMenu, RouterModule, TooltipModule],
+                    declarations: [SlideMenu, SlideMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SlideMenu, SlideMenuModule, SlideMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-slidemenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-slidemenu.mjs","sources":["../../src/app/components/slidemenu/slidemenu.ts","../../src/app/components/slidemenu/primeng-slidemenu.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterViewChecked,OnDestroy,Input,Renderer2,Inject,forwardRef,ViewChild,Output,EventEmitter,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {MenuItem, OverlayService, PrimeNGConfig} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-slideMenuSub',\n    template: `\n        <ul #sublist [ngClass]=\"{'p-slidemenu-rootlist':root, 'p-submenu-list':!root, 'p-active-submenu': isActive}\"\n            [style.width.px]=\"menuWidth\" [style.left.px]=\"root ? slideMenu.left : slideMenu.menuWidth\"\n            [style.transitionProperty]=\"root ? 'left' : 'none'\" [style.transitionDuration]=\"effectDuration + 'ms'\" [style.transitionTimingFunction]=\"easing\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\">\n                <li *ngIf=\"!child.separator\" #listitem [ngClass]=\"{'p-menuitem':true,'p-menuitem-active':listitem==activeItem,'p-hidden': child.visible === false}\" pTooltip [tooltipOptions]=\"child.tooltipOptions\"\n                    [class]=\"child.styleClass\" [ngStyle]=\"child.style\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [attr.href]=\"child.url\" class=\"p-menuitem-link\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\" [attr.tabindex]=\"child.disabled || !isActive ? null : '0'\"\n                        (click)=\"itemClick($event, child, listitem)\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-fw pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event)\"  [routerLink]=\"child.routerLink\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\"\n                        [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\" [href]=\"child.url\" class=\"p-menuitem-link\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled || !isActive ? null : '0'\"\n                        [ngClass]=\"{'p-disabled':child.disabled}\"\n                        (click)=\"itemClick($event, child, listitem)\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\">\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-fw pi-caret-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-slideMenuSub class=\"p-submenu\" [item]=\"child\" [index]=\"index + 1\" [menuWidth]=\"menuWidth\" *ngIf=\"child.items\"></p-slideMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SlideMenuSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() backLabel: string = 'Back';\n\n    @Input() menuWidth: number;\n\n    @Input() effectDuration: any;\n\n    @Input() easing: string = 'ease-out';\n\n    @Input() index: number;\n\n    @ViewChild('sublist') sublistViewChild: ElementRef;\n\n    slideMenu: SlideMenu;\n\n    transitionEndListener: any;\n\n    constructor(@Inject(forwardRef(() => SlideMenu)) slideMenu) {\n        this.slideMenu = slideMenu as SlideMenu;\n    }\n    activeItem: any;\n\n    itemClick(event, item: MenuItem, listitem: any) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items && !this.slideMenu.animating) {\n            this.slideMenu.left -= this.slideMenu.menuWidth;\n\n            this.activeItem = listitem;\n            this.slideMenu.animating = true;\n            setTimeout(() => this.slideMenu.animating = false, this.effectDuration);\n        }\n\n        if (!item.items && this.slideMenu.popup) {\n            this.slideMenu.hide();\n        }\n    }\n\n    focusNextList(listitem) {\n        if (!this.slideMenu.animating) {\n            let focusableElements = DomHandler.getFocusableElements(listitem);\n\n            if (focusableElements && focusableElements.length > 0) {\n                focusableElements[0].focus();\n            }\n\n            this.unbindTransitionEndListener();\n        }\n    }\n\n    onItemKeyDown(event) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                if (listItem && !DomHandler.hasClass(listItem, 'p-disabled')) {\n                    listItem.children[0].click();\n                    this.transitionEndListener = this.focusNextList.bind(this,listItem);\n                    this.sublistViewChild.nativeElement.addEventListener('transitionend', this.transitionEndListener);\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    unbindTransitionEndListener() {\n        if (this.transitionEndListener && this.sublistViewChild) {\n            this.sublistViewChild.nativeElement.removeEventListener('transitionend', this.transitionEndListener);\n            this.transitionEndListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.activeItem = null;\n        this.unbindTransitionEndListener();\n    }\n\n    get isActive() {\n        return -this.slideMenu.left == (this.index * this.menuWidth)\n    }\n}\n\n@Component({\n    selector: 'p-slideMenu',\n    template: `\n        <div #container [ngClass]=\"{'p-slidemenu p-component':true, 'p-slidemenu-overlay':popup}\"\n            [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\"\n            (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" *ngIf=\"!popup || visible\">\n            <div class=\"p-slidemenu-wrapper\" [style.height]=\"left ? viewportHeight + 'px' : 'auto'\" [style.width]=\"menuWidth + 'px'\">\n                <div #slideMenuContent class=\"p-slidemenu-content\">\n                    <p-slideMenuSub [item]=\"model\" root=\"root\" [index]=\"0\" [menuWidth]=\"menuWidth\" [effectDuration]=\"effectDuration\" [easing]=\"easing\"></p-slideMenuSub>\n                </div>\n                <a #backward (keydown.enter)=\"onBackwardKeydown($event)\" (keydown.space)=\"onBackwardKeydown($event)\" class=\"p-slidemenu-backward p-menuitem-link\" tabindex=\"0\" [style.display]=\"left ? 'block' : 'none'\" (click)=\"goBack()\">\n                    <span class=\"p-slidemenu-backward-icon pi pi-fw pi-caret-left\"></span><span>{{backLabel}}</span>\n                </a>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./slidemenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SlideMenu implements AfterViewChecked, OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() menuWidth: number = 190;\n\n    @Input() viewportHeight: number = 180;\n\n    @Input() effectDuration: any = 250;\n\n    @Input() easing: string = 'ease-out';\n\n    @Input() backLabel: string = 'Back';\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    containerViewChild: ElementRef;\n\n    backwardViewChild: ElementRef;\n\n    slideMenuContentViewChild: ElementRef;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    scrollHandler: any;\n\n    left: number = 0;\n\n    animating: boolean = false;\n\n    target: any;\n\n    visible: boolean;\n\n    viewportUpdated: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    ngAfterViewChecked() {\n        if (!this.viewportUpdated && !this.popup && this.containerViewChild) {\n            this.updateViewPort();\n            this.viewportUpdated = true;\n        }\n    }\n\n    @ViewChild('container') set container(element: ElementRef) {\n        this.containerViewChild = element;\n    }\n\n    @ViewChild('backward') set backward(element: ElementRef) {\n        this.backwardViewChild = element;\n    }\n\n    @ViewChild('slideMenuContent') set slideMenuContent(element: ElementRef) {\n        this.slideMenuContentViewChild = element;\n    }\n\n    updateViewPort() {\n        this.slideMenuContentViewChild.nativeElement.style.height = this.viewportHeight - DomHandler.getHiddenElementOuterHeight(this.backwardViewChild.nativeElement) + 'px';\n    }\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.visible = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.updateViewPort();\n                    this.moveOnTop();\n                    this.onShow.emit({});\n                    this.appendOverlay();\n                    DomHandler.absolutePosition(this.containerViewChild.nativeElement, this.target);\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n                this.onHide.emit({});\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.containerViewChild.nativeElement);\n            else\n                DomHandler.appendChild(this.containerViewChild.nativeElement, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.containerViewChild.nativeElement);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.containerViewChild.nativeElement, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    goBack() {\n        this.left += this.menuWidth;\n    }\n\n    onBackwardKeydown(event) {\n        this.goBack();\n\n        if (!this.left) {\n            setTimeout(() => {\n                let focusableElements = DomHandler.getFocusableElements(this.el.nativeElement);\n\n                if (focusableElements && focusableElements.length > 0) {\n                    focusableElements[0].focus();\n                }\n            }, 1);\n        }\n\n        event.preventDefault();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault) {\n                    this.hide();\n                    this.cd.detectChanges();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n        this.left = 0;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [SlideMenu,RouterModule,TooltipModule],\n    declarations: [SlideMenu,SlideMenuSub]\n})\nexport class SlideMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,438 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SLIDER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Slider),
+    multi: true
+};
+class Slider {
+    constructor(el, renderer, ngZone, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.ngZone = ngZone;
+        this.cd = cd;
+        this.min = 0;
+        this.max = 100;
+        this.orientation = 'horizontal';
+        this.tabindex = 0;
+        this.onChange = new EventEmitter();
+        this.onSlideEnd = new EventEmitter();
+        this.handleValues = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.handleIndex = 0;
+    }
+    onMouseDown(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = true;
+        this.updateDomData();
+        this.sliderHandleClick = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        this.bindDragListeners();
+        event.target.focus();
+        event.preventDefault();
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+    }
+    onTouchStart(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0];
+        this.startHandleValue = (this.range) ? this.handleValues[index] : this.handleValue;
+        this.dragging = true;
+        if (this.range && this.handleValues && this.handleValues[0] === this.max) {
+            this.handleIndex = 0;
+        }
+        else {
+            this.handleIndex = index;
+        }
+        if (this.orientation === 'horizontal') {
+            this.startx = parseInt(touchobj.clientX, 10);
+            this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        }
+        else {
+            this.starty = parseInt(touchobj.clientY, 10);
+            this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+        }
+        if (this.animate) {
+            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onTouchMove(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        var touchobj = event.changedTouches[0], handleValue = 0;
+        if (this.orientation === 'horizontal') {
+            handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / (this.barWidth)) + this.startHandleValue;
+        }
+        else {
+            handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / (this.barHeight)) + this.startHandleValue;
+        }
+        this.setValueFromHandle(event, handleValue);
+        event.preventDefault();
+    }
+    onTouchEnd(event, index) {
+        if (this.disabled) {
+            return;
+        }
+        this.dragging = false;
+        if (this.range)
+            this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+        else
+            this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+        if (this.animate) {
+            DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+        }
+        event.preventDefault();
+    }
+    onBarClick(event) {
+        if (this.disabled) {
+            return;
+        }
+        if (!this.sliderHandleClick) {
+            this.updateDomData();
+            this.handleChange(event);
+        }
+        this.sliderHandleClick = false;
+    }
+    onHandleKeydown(event, handleIndex) {
+        if (this.disabled) {
+            return;
+        }
+        if (event.which == 38 || event.which == 39) {
+            this.spin(event, 1, handleIndex);
+        }
+        else if (event.which == 37 || event.which == 40) {
+            this.spin(event, -1, handleIndex);
+        }
+    }
+    spin(event, dir, handleIndex) {
+        let step = (this.step || 1) * dir;
+        if (this.range) {
+            this.handleIndex = handleIndex;
+            this.updateValue(this.values[this.handleIndex] + step);
+            this.updateHandleValue();
+        }
+        else {
+            this.updateValue(this.value + step);
+            this.updateHandleValue();
+        }
+        event.preventDefault();
+    }
+    handleChange(event) {
+        let handleValue = this.calculateHandleValue(event);
+        this.setValueFromHandle(event, handleValue);
+    }
+    bindDragListeners() {
+        this.ngZone.runOutsideAngular(() => {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            if (!this.dragListener) {
+                this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {
+                    if (this.dragging) {
+                        this.ngZone.run(() => {
+                            this.handleChange(event);
+                        });
+                    }
+                });
+            }
+            if (!this.mouseupListener) {
+                this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {
+                    if (this.dragging) {
+                        this.dragging = false;
+                        this.ngZone.run(() => {
+                            if (this.range)
+                                this.onSlideEnd.emit({ originalEvent: event, values: this.values });
+                            else
+                                this.onSlideEnd.emit({ originalEvent: event, value: this.value });
+                            if (this.animate) {
+                                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');
+                            }
+                        });
+                    }
+                });
+            }
+        });
+    }
+    unbindDragListeners() {
+        if (this.dragListener) {
+            this.dragListener();
+        }
+        if (this.mouseupListener) {
+            this.mouseupListener();
+        }
+    }
+    setValueFromHandle(event, handleValue) {
+        this.sliderHandleClick = false;
+        let newValue = this.getValueFromHandle(handleValue);
+        if (this.range) {
+            if (this.step) {
+                this.handleStepChange(newValue, this.values[this.handleIndex]);
+            }
+            else {
+                this.handleValues[this.handleIndex] = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        else {
+            if (this.step) {
+                this.handleStepChange(newValue, this.value);
+            }
+            else {
+                this.handleValue = handleValue;
+                this.updateValue(newValue, event);
+            }
+        }
+        this.cd.markForCheck();
+    }
+    handleStepChange(newValue, oldValue) {
+        let diff = (newValue - oldValue);
+        let val = oldValue;
+        if (diff < 0) {
+            val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        else if (diff > 0) {
+            val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;
+        }
+        this.updateValue(val);
+        this.updateHandleValue();
+    }
+    writeValue(value) {
+        if (this.range)
+            this.values = value || [0, 0];
+        else
+            this.value = value || 0;
+        this.updateHandleValue();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get rangeStartLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[0] + '%';
+    }
+    get rangeStartBottom() {
+        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';
+    }
+    get rangeEndLeft() {
+        return this.isVertical() ? 'auto' : this.handleValues[1] + '%';
+    }
+    get rangeEndBottom() {
+        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';
+    }
+    isVertical() {
+        return this.orientation === 'vertical';
+    }
+    updateDomData() {
+        let rect = this.el.nativeElement.children[0].getBoundingClientRect();
+        this.initX = rect.left + DomHandler.getWindowScrollLeft();
+        this.initY = rect.top + DomHandler.getWindowScrollTop();
+        this.barWidth = this.el.nativeElement.children[0].offsetWidth;
+        this.barHeight = this.el.nativeElement.children[0].offsetHeight;
+    }
+    calculateHandleValue(event) {
+        if (this.orientation === 'horizontal')
+            return ((event.pageX - this.initX) * 100) / (this.barWidth);
+        else
+            return (((this.initY + this.barHeight) - event.pageY) * 100) / (this.barHeight);
+    }
+    updateHandleValue() {
+        if (this.range) {
+            this.handleValues[0] = (this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100 / (this.max - this.min);
+            this.handleValues[1] = (this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100 / (this.max - this.min);
+        }
+        else {
+            if (this.value < this.min)
+                this.handleValue = 0;
+            else if (this.value > this.max)
+                this.handleValue = 100;
+            else
+                this.handleValue = (this.value - this.min) * 100 / (this.max - this.min);
+        }
+    }
+    updateValue(val, event) {
+        if (this.range) {
+            let value = val;
+            if (this.handleIndex == 0) {
+                if (value < this.min) {
+                    value = this.min;
+                    this.handleValues[0] = 0;
+                }
+                else if (value > this.values[1]) {
+                    value = this.values[1];
+                    this.handleValues[0] = this.handleValues[1];
+                }
+                this.sliderHandleStart.nativeElement.focus();
+            }
+            else {
+                if (value > this.max) {
+                    value = this.max;
+                    this.handleValues[1] = 100;
+                }
+                else if (value < this.values[0]) {
+                    value = this.values[0];
+                    this.handleValues[1] = this.handleValues[0];
+                }
+                this.sliderHandleEnd.nativeElement.focus();
+            }
+            this.values[this.handleIndex] = this.getNormalizedValue(value);
+            this.values = this.values.slice();
+            this.onModelChange(this.values);
+            this.onChange.emit({ event: event, values: this.values });
+        }
+        else {
+            if (val < this.min) {
+                val = this.min;
+                this.handleValue = 0;
+            }
+            else if (val > this.max) {
+                val = this.max;
+                this.handleValue = 100;
+            }
+            this.value = this.getNormalizedValue(val);
+            this.onModelChange(this.value);
+            this.onChange.emit({ event: event, value: this.value });
+            this.sliderHandle.nativeElement.focus();
+        }
+    }
+    getValueFromHandle(handleValue) {
+        return (this.max - this.min) * (handleValue / 100) + this.min;
+    }
+    getDecimalsCount(value) {
+        if (value && Math.floor(value) !== value)
+            return value.toString().split(".")[1].length || 0;
+        return 0;
+    }
+    getNormalizedValue(val) {
+        let decimalsCount = this.getDecimalsCount(this.step);
+        if (decimalsCount > 0) {
+            return +val.toFixed(decimalsCount);
+        }
+        else {
+            return Math.floor(val);
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDragListeners();
+    }
+}
+Slider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Slider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Slider, selector: "p-slider", inputs: { animate: "animate", disabled: "disabled", min: "min", max: "max", orientation: "orientation", step: "step", range: "range", style: "style", styleClass: "styleClass", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex" }, outputs: { onChange: "onChange", onSlideEnd: "onSlideEnd" }, host: { classAttribute: "p-element" }, providers: [SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "sliderHandle", first: true, predicate: ["sliderHandle"], descendants: true }, { propertyName: "sliderHandleStart", first: true, predicate: ["sliderHandleStart"], descendants: true }, { propertyName: "sliderHandleEnd", first: true, predicate: ["sliderHandleEnd"], descendants: true }], ngImport: i0, template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, isInline: true, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Slider, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-slider', template: `
+        <div [ngStyle]="style" [class]="styleClass" [ngClass]="{'p-slider p-component':true,'p-disabled':disabled,
+            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}"
+            (click)="onBarClick($event)">
+            <span *ngIf="range && orientation == 'horizontal'" class="p-slider-range" [ngStyle]="{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="range && orientation == 'vertical'" class="p-slider-range" [ngStyle]="{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}"></span>
+            <span *ngIf="!range && orientation=='vertical'" class="p-slider-range" [ngStyle]="{'height': handleValue + '%'}"></span>
+            <span *ngIf="!range && orientation=='horizontal'" class="p-slider-range" [ngStyle]="{'width': handleValue + '%'}"></span>
+            <span #sliderHandle *ngIf="!range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event)" class="p-slider-handle" (mousedown)="onMouseDown($event)" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" (touchend)="onTouchEnd($event)"
+                [style.transition]="dragging ? 'none': null" [ngStyle]="{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleStart *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,0)" (mousedown)="onMouseDown($event,0)" (touchstart)="onTouchStart($event,0)" (touchmove)="onTouchMove($event,0)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeStartLeft, 'bottom': rangeStartBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==0}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[0] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+            <span #sliderHandleEnd *ngIf="range" [attr.tabindex]="disabled ? null : tabindex" (keydown)="onHandleKeydown($event,1)" (mousedown)="onMouseDown($event,1)" (touchstart)="onTouchStart($event,1)" (touchmove)="onTouchMove($event,1)" (touchend)="onTouchEnd($event)" [style.transition]="dragging ? 'none': null" class="p-slider-handle"
+                [ngStyle]="{'left': rangeEndLeft, 'bottom': rangeEndBottom}" [ngClass]="{'p-slider-handle-active':handleIndex==1}"
+                [attr.aria-valuemin]="min" [attr.aria-valuenow]="value ? value[1] : null" [attr.aria-valuemax]="max" [attr.aria-labelledby]="ariaLabelledBy"></span>
+        </div>
+    `, providers: [SLIDER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-slider{position:relative}.p-slider .p-slider-handle{position:absolute;cursor:grab;touch-action:none;display:block}.p-slider-range{position:absolute;display:block}.p-slider-horizontal .p-slider-range{top:0;left:0;height:100%}.p-slider-horizontal .p-slider-handle{top:50%}.p-slider-vertical{height:100px}.p-slider-vertical .p-slider-handle{left:50%}.p-slider-vertical .p-slider-range{bottom:0;left:0;width:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { animate: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], orientation: [{
+                type: Input
+            }], step: [{
+                type: Input
+            }], range: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }], onSlideEnd: [{
+                type: Output
+            }], sliderHandle: [{
+                type: ViewChild,
+                args: ["sliderHandle"]
+            }], sliderHandleStart: [{
+                type: ViewChild,
+                args: ["sliderHandleStart"]
+            }], sliderHandleEnd: [{
+                type: ViewChild,
+                args: ["sliderHandleEnd"]
+            }] } });
+class SliderModule {
+}
+SliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, declarations: [Slider], imports: [CommonModule], exports: [Slider] });
+SliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SliderModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Slider],
+                    declarations: [Slider]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SLIDER_VALUE_ACCESSOR, Slider, SliderModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-slider.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/primeng-slider.ts"],"sourcesContent":["import {NgModule, Component, ElementRef, OnDestroy, Input, Output, EventEmitter, forwardRef, Renderer2,NgZone,ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Slider),\n  multi: true\n};\n\n@Component({\n    selector: 'p-slider',\n    template: `\n        <div [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-slider p-component':true,'p-disabled':disabled,\n            'p-slider-horizontal':orientation == 'horizontal','p-slider-vertical':orientation == 'vertical','p-slider-animate':animate}\"\n            (click)=\"onBarClick($event)\">\n            <span *ngIf=\"range && orientation == 'horizontal'\" class=\"p-slider-range\" [ngStyle]=\"{'left':handleValues[0] + '%',width: (handleValues[1] - handleValues[0] + '%')}\"></span>\n            <span *ngIf=\"range && orientation == 'vertical'\" class=\"p-slider-range\" [ngStyle]=\"{'bottom':handleValues[0] + '%',height: (handleValues[1] - handleValues[0] + '%')}\"></span>\n            <span *ngIf=\"!range && orientation=='vertical'\" class=\"p-slider-range\" [ngStyle]=\"{'height': handleValue + '%'}\"></span>\n            <span *ngIf=\"!range && orientation=='horizontal'\" class=\"p-slider-range\" [ngStyle]=\"{'width': handleValue + '%'}\"></span>\n            <span #sliderHandle *ngIf=\"!range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event)\" class=\"p-slider-handle\" (mousedown)=\"onMouseDown($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\"\n                [style.transition]=\"dragging ? 'none': null\" [ngStyle]=\"{'left': orientation == 'horizontal' ? handleValue + '%' : null,'bottom': orientation == 'vertical' ? handleValue + '%' : null}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n            <span #sliderHandleStart *ngIf=\"range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event,0)\" (mousedown)=\"onMouseDown($event,0)\" (touchstart)=\"onTouchStart($event,0)\" (touchmove)=\"onTouchMove($event,0)\" (touchend)=\"onTouchEnd($event)\" [style.transition]=\"dragging ? 'none': null\" class=\"p-slider-handle\"\n                [ngStyle]=\"{'left': rangeStartLeft, 'bottom': rangeStartBottom}\" [ngClass]=\"{'p-slider-handle-active':handleIndex==0}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value ? value[0] : null\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n            <span #sliderHandleEnd *ngIf=\"range\" [attr.tabindex]=\"disabled ? null : tabindex\" (keydown)=\"onHandleKeydown($event,1)\" (mousedown)=\"onMouseDown($event,1)\" (touchstart)=\"onTouchStart($event,1)\" (touchmove)=\"onTouchMove($event,1)\" (touchend)=\"onTouchEnd($event)\" [style.transition]=\"dragging ? 'none': null\" class=\"p-slider-handle\"\n                [ngStyle]=\"{'left': rangeEndLeft, 'bottom': rangeEndBottom}\" [ngClass]=\"{'p-slider-handle-active':handleIndex==1}\"\n                [attr.aria-valuemin]=\"min\" [attr.aria-valuenow]=\"value ? value[1] : null\" [attr.aria-valuemax]=\"max\" [attr.aria-labelledby]=\"ariaLabelledBy\"></span>\n        </div>\n    `,\n    providers: [SLIDER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./slider.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Slider implements OnDestroy,ControlValueAccessor {\n\n    @Input() animate: boolean;\n\n    @Input() disabled: boolean;\n\n    @Input() min: number = 0;\n\n    @Input() max: number = 100;\n\n    @Input() orientation: string = 'horizontal';\n\n    @Input() step: number;\n\n    @Input() range: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number = 0;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSlideEnd: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild(\"sliderHandle\") sliderHandle: ElementRef;\n\n    @ViewChild(\"sliderHandleStart\") sliderHandleStart: ElementRef;\n\n    @ViewChild(\"sliderHandleEnd\") sliderHandleEnd: ElementRef;\n\n    public value: number;\n\n    public values: number[];\n\n    public handleValue: number;\n\n    public handleValues: number[] = [];\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public dragging: boolean;\n\n    public dragListener: any;\n\n    public mouseupListener: any;\n\n    public initX: number;\n\n    public initY: number;\n\n    public barWidth: number;\n\n    public barHeight: number;\n\n    public sliderHandleClick: boolean;\n\n    public handleIndex: number = 0;\n\n    public startHandleValue: any;\n\n    public startx: number;\n\n    public starty: number;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private ngZone: NgZone, public cd: ChangeDetectorRef) {}\n\n    onMouseDown(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = true;\n        this.updateDomData();\n        this.sliderHandleClick = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        }\n        else {\n            this.handleIndex = index;\n        }\n\n        this.bindDragListeners();\n        event.target.focus();\n        event.preventDefault();\n\n        if (this.animate) {\n            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n    }\n\n    onTouchStart(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0];\n        this.startHandleValue = (this.range) ? this.handleValues[index] : this.handleValue;\n        this.dragging = true;\n        if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n            this.handleIndex = 0;\n        }\n        else {\n            this.handleIndex = index;\n        }\n\n        if (this.orientation === 'horizontal') {\n            this.startx = parseInt(touchobj.clientX, 10);\n            this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        }\n        else {\n            this.starty = parseInt(touchobj.clientY, 10);\n            this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n        }\n\n        if (this.animate) {\n            DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onTouchMove(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        var touchobj = event.changedTouches[0],\n        handleValue = 0;\n\n        if (this.orientation === 'horizontal') {\n            handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / (this.barWidth)) + this.startHandleValue;\n        }\n        else {\n            handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / (this.barHeight))  + this.startHandleValue;\n        }\n\n        this.setValueFromHandle(event, handleValue);\n\n        event.preventDefault();\n    }\n\n    onTouchEnd(event, index?:number) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.dragging = false;\n\n        if (this.range)\n            this.onSlideEnd.emit({originalEvent: event, values: this.values});\n        else\n            this.onSlideEnd.emit({originalEvent: event, value: this.value});\n\n        if (this.animate) {\n            DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n        }\n\n        event.preventDefault();\n    }\n\n    onBarClick(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!this.sliderHandleClick) {\n            this.updateDomData();\n            this.handleChange(event);\n        }\n\n        this.sliderHandleClick = false;\n    }\n\n    onHandleKeydown(event, handleIndex?:number) {\n        if (this.disabled) {\n            return;\n        }\n        if (event.which == 38 || event.which == 39) {\n            this.spin(event, 1, handleIndex);\n        }\n        else if (event.which == 37 || event.which == 40) {\n            this.spin(event, -1, handleIndex);\n        }\n    }\n\n    spin(event, dir: number, handleIndex?:number) {\n        let step = (this.step || 1) * dir;\n\n        if (this.range) {\n            this.handleIndex = handleIndex;\n            this.updateValue(this.values[this.handleIndex] + step);\n            this.updateHandleValue();\n        }\n        else {\n            this.updateValue(this.value + step);\n            this.updateHandleValue();\n        }\n\n        event.preventDefault();\n    }\n\n    handleChange(event: Event) {\n        let handleValue = this.calculateHandleValue(event);\n        this.setValueFromHandle(event, handleValue);\n    }\n\n    bindDragListeners() {\n        this.ngZone.runOutsideAngular(() => {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            if (!this.dragListener) {\n                this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n                    if (this.dragging) {\n                        this.ngZone.run(() => {\n                            this.handleChange(event);\n                        });\n                    }\n                });\n            }\n\n            if (!this.mouseupListener) {\n                this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n                    if (this.dragging) {\n                        this.dragging = false;\n                        this.ngZone.run(() => {\n                            if (this.range)\n                                this.onSlideEnd.emit({originalEvent: event, values: this.values});\n                            else\n                                this.onSlideEnd.emit({originalEvent: event, value: this.value});\n\n                            if (this.animate) {\n                                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n                            }\n                        });\n                    }\n                });\n            }\n        });\n    }\n\n    unbindDragListeners() {\n        if (this.dragListener) {\n            this.dragListener();\n        }\n\n        if (this.mouseupListener) {\n            this.mouseupListener();\n        }\n    }\n\n    setValueFromHandle(event: Event, handleValue: any) {\n        this.sliderHandleClick = false;\n        let newValue = this.getValueFromHandle(handleValue);\n\n        if (this.range) {\n            if (this.step) {\n                this.handleStepChange(newValue, this.values[this.handleIndex]);\n            }\n            else {\n                this.handleValues[this.handleIndex] = handleValue;\n                this.updateValue(newValue, event);\n            }\n        }\n        else {\n            if (this.step) {\n                this.handleStepChange(newValue, this.value);\n            }\n            else {\n                this.handleValue = handleValue;\n                this.updateValue(newValue, event);\n            }\n        }\n\n        this.cd.markForCheck();\n    }\n\n    handleStepChange(newValue: number, oldValue: number) {\n        let diff = (newValue - oldValue);\n        let val = oldValue;\n\n        if (diff < 0) {\n            val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;\n        }\n        else if (diff > 0) {\n            val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;\n        }\n\n        this.updateValue(val);\n        this.updateHandleValue();\n    }\n\n    writeValue(value: any) : void {\n        if (this.range)\n            this.values = value||[0,0];\n        else\n            this.value = value||0;\n\n        this.updateHandleValue();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get rangeStartLeft() {\n        return this.isVertical() ? 'auto' : this.handleValues[0] + '%';\n    }\n\n    get rangeStartBottom() {\n        return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n    }\n\n    get rangeEndLeft() {\n        return this.isVertical() ? 'auto' : this.handleValues[1] + '%';\n    }\n\n    get rangeEndBottom() {\n        return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n    }\n\n    isVertical(): boolean {\n        return this.orientation === 'vertical';\n    }\n\n    updateDomData(): void {\n        let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n        this.initX = rect.left + DomHandler.getWindowScrollLeft();\n        this.initY = rect.top + DomHandler.getWindowScrollTop();\n        this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n        this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n    }\n\n    calculateHandleValue(event): number {\n        if (this.orientation === 'horizontal')\n            return ((event.pageX - this.initX) * 100) / (this.barWidth);\n        else\n            return(((this.initY + this.barHeight) - event.pageY) * 100) / (this.barHeight);\n    }\n\n    updateHandleValue(): void {\n        if (this.range) {\n            this.handleValues[0] = (this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100 / (this.max - this.min);\n            this.handleValues[1] = (this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100 / (this.max - this.min);\n        }\n        else {\n            if (this.value < this.min)\n                this.handleValue = 0;\n            else if (this.value > this.max)\n                this.handleValue = 100;\n            else\n                this.handleValue = (this.value - this.min) * 100 / (this.max - this.min);\n        }\n    }\n\n    updateValue(val: number, event?: Event): void {\n        if (this.range) {\n            let value = val;\n\n            if (this.handleIndex == 0) {\n                if (value < this.min) {\n                    value = this.min;\n                    this.handleValues[0] = 0;\n                }\n                else if (value > this.values[1]) {\n                    value = this.values[1];\n                    this.handleValues[0] = this.handleValues[1];\n                }\n\n                this.sliderHandleStart.nativeElement.focus();\n            }\n            else {\n                if (value > this.max) {\n                    value = this.max;\n                    this.handleValues[1] = 100;\n                }\n                else if (value < this.values[0]) {\n                    value = this.values[0];\n                    this.handleValues[1] = this.handleValues[0];\n                }\n\n                this.sliderHandleEnd.nativeElement.focus();\n            }\n\n            this.values[this.handleIndex] = this.getNormalizedValue(value);\n            this.values = this.values.slice();\n            this.onModelChange(this.values);\n            this.onChange.emit({event: event, values: this.values});\n        }\n        else {\n            if (val < this.min) {\n                val = this.min;\n                this.handleValue = 0;\n            }\n            else if (val > this.max) {\n                val = this.max;\n                this.handleValue = 100;\n            }\n\n\t\t\tthis.value = this.getNormalizedValue(val);\n\n            this.onModelChange(this.value);\n            this.onChange.emit({event: event, value: this.value});\n            this.sliderHandle.nativeElement.focus();\n        }\n    }\n\n    getValueFromHandle(handleValue: number): number {\n        return (this.max - this.min) * (handleValue / 100) + this.min;\n    }\n\n\tgetDecimalsCount(value: number): number {\n\t\tif (value && Math.floor(value) !== value)\n\t\t\treturn value.toString().split(\".\")[1].length || 0;\n\t\treturn 0;\n\t}\n\n\tgetNormalizedValue(val: number): number {\n\t\tlet decimalsCount = this.getDecimalsCount(this.step);\n\t\tif (decimalsCount > 0) {\n\t\t\treturn +val.toFixed(decimalsCount);\n\t\t}\n\t\telse {\n\t\t\treturn Math.floor(val);\n\t\t}\n\t}\n\n    ngOnDestroy() {\n        this.unbindDragListeners();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Slider],\n    declarations: [Slider]\n})\nexport class SliderModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,338 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import { DomHandler } from 'primeng/dom';
+import * as i5 from '@angular/router';
+import { RouterModule } from '@angular/router';
+
+class SpeedDial {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.model = null;
+        this.direction = 'up';
+        this.transitionDelay = 30;
+        this.type = 'linear';
+        this.radius = 0;
+        this.mask = false;
+        this.disabled = false;
+        this.hideOnClickOutside = true;
+        this.showIcon = 'pi pi-plus';
+        this.rotateAnimation = true;
+        this.onVisibleChange = new EventEmitter();
+        this.visibleChange = new EventEmitter();
+        this.onClick = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.isItemClicked = false;
+        this._visible = false;
+    }
+    get visible() {
+        return this._visible;
+    }
+    set visible(value) {
+        this._visible = value;
+        if (this._visible) {
+            this.bindDocumentClickListener();
+        }
+        else {
+            this.unbindDocumentClickListener();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.type !== 'linear') {
+            const button = DomHandler.findSingle(this.container.nativeElement, '.p-speeddial-button');
+            const firstItem = DomHandler.findSingle(this.list.nativeElement, '.p-speeddial-item');
+            if (button && firstItem) {
+                const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);
+                const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);
+                this.list.nativeElement.style.setProperty('--item-diff-x', `${wDiff / 2}px`);
+                this.list.nativeElement.style.setProperty('--item-diff-y', `${hDiff / 2}px`);
+            }
+        }
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'button':
+                    this.buttonTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    show() {
+        this.onVisibleChange.emit(true);
+        this.visibleChange.emit(true);
+        this._visible = true;
+        this.onShow.emit();
+        this.bindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    hide() {
+        this.onVisibleChange.emit(false);
+        this.visibleChange.emit(false);
+        this._visible = false;
+        this.onHide.emit();
+        this.unbindDocumentClickListener();
+        this.cd.markForCheck();
+    }
+    onButtonClick(event) {
+        this.visible ? this.hide() : this.show();
+        this.onClick.emit(event);
+        this.isItemClicked = true;
+    }
+    onItemClick(e, item) {
+        if (item.command) {
+            item.command({ originalEvent: e, item });
+        }
+        this.hide();
+        this.isItemClicked = true;
+    }
+    calculatePointStyle(index) {
+        const type = this.type;
+        if (type !== 'linear') {
+            const length = this.model.length;
+            const radius = this.radius || (length * 20);
+            if (type === 'circle') {
+                const step = 2 * Math.PI / length;
+                return {
+                    left: `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`,
+                    top: `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`,
+                };
+            }
+            else if (type === 'semi-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (length - 1);
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down') {
+                    return { left: x, top: y };
+                }
+                else if (direction === 'left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'right') {
+                    return { left: y, top: x };
+                }
+            }
+            else if (type === 'quarter-circle') {
+                const direction = this.direction;
+                const step = Math.PI / (2 * (length - 1));
+                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;
+                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;
+                if (direction === 'up-left') {
+                    return { right: x, bottom: y };
+                }
+                else if (direction === 'up-right') {
+                    return { left: x, bottom: y };
+                }
+                else if (direction === 'down-left') {
+                    return { right: y, top: x };
+                }
+                else if (direction === 'down-right') {
+                    return { left: y, top: x };
+                }
+            }
+        }
+        return {};
+    }
+    calculateTransitionDelay(index) {
+        const length = this.model.length;
+        return (this.visible ? index : length - index - 1) * this.transitionDelay;
+    }
+    containerClass() {
+        return {
+            ['p-speeddial p-component' + ` p-speeddial-${this.type}`]: true,
+            [`p-speeddial-direction-${this.direction}`]: this.type !== 'circle',
+            'p-speeddial-opened': this.visible,
+            'p-disabled': this.disabled
+        };
+    }
+    buttonClass() {
+        return {
+            'p-speeddial-button p-button-rounded': true,
+            'p-speeddial-rotate': this.rotateAnimation && !this.hideIcon,
+            [this.buttonClassName]: true
+        };
+    }
+    get buttonIconClass() {
+        return ((!this.visible && this.showIcon) || !this.hideIcon) ? this.showIcon : this.hideIcon;
+    }
+    getItemStyle(index) {
+        const transitionDelay = this.calculateTransitionDelay(index);
+        const pointStyle = this.calculatePointStyle(index);
+        return {
+            transitionDelay: `${transitionDelay}ms`,
+            ...pointStyle
+        };
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.disabled && !item.disabled;
+    }
+    isOutsideClicked(event) {
+        return this.container && !(this.container.nativeElement.isSameNode(event.target) || this.container.nativeElement.contains(event.target) || this.isItemClicked);
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener && this.hideOnClickOutside) {
+            this.documentClickListener = (event) => {
+                if (this.visible && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.isItemClicked = false;
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+SpeedDial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SpeedDial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SpeedDial, selector: "p-speedDial", inputs: { id: "id", model: "model", visible: "visible", style: "style", className: "className", direction: "direction", transitionDelay: "transitionDelay", type: "type", radius: "radius", mask: "mask", disabled: "disabled", hideOnClickOutside: "hideOnClickOutside", buttonStyle: "buttonStyle", buttonClassName: "buttonClassName", maskStyle: "maskStyle", maskClassName: "maskClassName", showIcon: "showIcon", hideIcon: "hideIcon", rotateAnimation: "rotateAnimation" }, outputs: { onVisibleChange: "onVisibleChange", visibleChange: "visibleChange", onClick: "onClick", onShow: "onShow", onHide: "onHide" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, isInline: true, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i5.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDial, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-speedDial', template: `
+        <div #container [attr.id]="id" [ngClass]="containerClass()" [class]="className" [ngStyle]="style">
+            <button pRipple pButton [style]="buttonStyle" [icon]="buttonIconClass" [ngClass]="buttonClass()" (click)="onButtonClick($event)">
+                <ng-container *ngIf="buttonTemplate">
+                    <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
+                </ng-container>
+            </button>
+            <ul #list class="p-speeddial-list" role="menu">
+                <li *ngFor="let item of model; let i = index" [ngStyle]="getItemStyle(i)" class="p-speeddial-item" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" pRipple [routerLink]="item.routerLink" [queryParams]="item.queryParams" class="p-speeddial-action" [ngClass]="{'p-disabled':item.disabled}"  role="menuitem" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" (click)="onItemClick($event, item)" (keydown.enter)="onItemClick($event, item, i)"
+                        [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url||null" class="p-speeddial-action" role="menuitem" pRipple (click)="onItemClick($event, item)" [ngClass]="{'p-disabled':item.disabled}"
+                            (keydown.enter)="onItemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-speeddial-action-icon" *ngIf="item.icon" [ngClass]="item.icon"></span>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+        <div *ngIf="mask && visible" [ngClass]="{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}" [class]="maskClassName" [ngStyle]="maskStyle"></div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-speeddial{position:absolute;display:flex;z-index:1}.p-speeddial-list{margin:0;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;transition:top 0s linear .2s;pointer-events:none}.p-speeddial-item{transform:scale(0);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1) 0ms,opacity .8s;will-change:transform}.p-speeddial-action{display:flex;align-items:center;justify-content:center;border-radius:50%;position:relative;overflow:hidden;cursor:pointer}.p-speeddial-circle .p-speeddial-item,.p-speeddial-semi-circle .p-speeddial-item,.p-speeddial-quarter-circle .p-speeddial-item{position:absolute}.p-speeddial-rotate{transition:transform .25s cubic-bezier(.4,0,.2,1) 0ms;will-change:transform}.p-speeddial-mask{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity .25s cubic-bezier(.25,.8,.25,1)}.p-speeddial-mask-visible{pointer-events:none;opacity:1;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.p-speeddial-opened .p-speeddial-list{pointer-events:auto}.p-speeddial-opened .p-speeddial-item{transform:scale(1);opacity:1}.p-speeddial-opened .p-speeddial-rotate{transform:rotate(45deg)}.p-speeddial-direction-up{align-items:center;flex-direction:column-reverse}.p-speeddial-direction-up .p-speeddial-list{flex-direction:column-reverse}.p-speeddial-direction-down{align-items:center;flex-direction:column}.p-speeddial-direction-down .p-speeddial-list{flex-direction:column}.p-speeddial-direction-left{justify-content:center;flex-direction:row-reverse}.p-speeddial-direction-left .p-speeddial-list{flex-direction:row-reverse}.p-speeddial-direction-right{justify-content:center;flex-direction:row}.p-speeddial-direction-right .p-speeddial-list{flex-direction:row}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], visible: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], className: [{
+                type: Input
+            }], direction: [{
+                type: Input
+            }], transitionDelay: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], radius: [{
+                type: Input
+            }], mask: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], hideOnClickOutside: [{
+                type: Input
+            }], buttonStyle: [{
+                type: Input
+            }], buttonClassName: [{
+                type: Input
+            }], maskStyle: [{
+                type: Input
+            }], maskClassName: [{
+                type: Input
+            }], showIcon: [{
+                type: Input
+            }], hideIcon: [{
+                type: Input
+            }], rotateAnimation: [{
+                type: Input
+            }], onVisibleChange: [{
+                type: Output
+            }], visibleChange: [{
+                type: Output
+            }], onClick: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], container: [{
+                type: ViewChild,
+                args: ['container']
+            }], list: [{
+                type: ViewChild,
+                args: ['list']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class SpeedDialModule {
+}
+SpeedDialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpeedDialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, declarations: [SpeedDial], imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule] });
+SpeedDialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, imports: [[CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule], SharedModule, ButtonModule, TooltipModule, RouterModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpeedDialModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule],
+                    exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule],
+                    declarations: [SpeedDial]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SpeedDial, SpeedDialModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-speeddial.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-speeddial.mjs","sources":["../../src/app/components/speeddial/speeddial.ts","../../src/app/components/speeddial/primeng-speeddial.ts"],"sourcesContent":["import { NgModule, Component, Input, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, AfterContentInit, ContentChildren, QueryList, Output, EventEmitter, ChangeDetectorRef, ViewChild, OnDestroy, OnInit, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, PrimeTemplate, MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { DomHandler } from 'primeng/dom';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n    selector: 'p-speedDial',\n    template: `\n        <div #container [attr.id]=\"id\" [ngClass]=\"containerClass()\" [class]=\"className\" [ngStyle]=\"style\">\n            <button pRipple pButton [style]=\"buttonStyle\" [icon]=\"buttonIconClass\" [ngClass]=\"buttonClass()\" (click)=\"onButtonClick($event)\">\n                <ng-container *ngIf=\"buttonTemplate\">\n                    <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n                </ng-container>\n            </button>\n            <ul #list class=\"p-speeddial-list\" role=\"menu\">\n                <li *ngFor=\"let item of model; let i = index\" [ngStyle]=\"getItemStyle(i)\" class=\"p-speeddial-item\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                    <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" pRipple [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" class=\"p-speeddial-action\" [ngClass]=\"{'p-disabled':item.disabled}\"  role=\"menuitem\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" (click)=\"onItemClick($event, item)\" (keydown.enter)=\"onItemClick($event, item, i)\"\n                        [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                            <span class=\"p-speeddial-action-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                    </a>\n                    <ng-template #elseBlock>\n                        <a [attr.href]=\"item.url||null\" class=\"p-speeddial-action\" role=\"menuitem\" pRipple (click)=\"onItemClick($event, item)\" [ngClass]=\"{'p-disabled':item.disabled}\"\n                            (keydown.enter)=\"onItemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                            <span class=\"p-speeddial-action-icon\" *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></span>\n                        </a>\n                    </ng-template>\n                </li>\n            </ul>\n        </div>\n        <div *ngIf=\"mask && visible\" [ngClass]=\"{'p-speeddial-mask': true, 'p-speeddial-mask-visible': visible}\" [class]=\"maskClassName\" [ngStyle]=\"maskStyle\"></div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./speeddial.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SpeedDial implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() id: string;\n\n    @Input() model: any[] = null;\n\n    @Input() get visible(): any {\n        return this._visible;\n    }\n    set visible(value:any) {\n        this._visible = value;\n\n        if (this._visible) {\n            this.bindDocumentClickListener();\n        }\n        else {\n            this.unbindDocumentClickListener();\n        }\n    }\n\n    @Input() style: any;\n\n    @Input() className: string;\n\n    @Input() direction: string =  'up'\n\n    @Input() transitionDelay: number = 30;\n\n    @Input() type: string =  'linear'\n\n    @Input() radius: number = 0;\n\n    @Input() mask: boolean = false;\n\n    @Input() disabled: boolean = false;\n\n    @Input() hideOnClickOutside: boolean = true;\n\n    @Input() buttonStyle: any;\n\n    @Input() buttonClassName: string;\n\n    @Input() maskStyle: any;\n\n    @Input() maskClassName: string;\n\n    @Input() showIcon: string = 'pi pi-plus';\n\n    @Input() hideIcon: string;\n\n    @Input() rotateAnimation: boolean = true;\n\n    @Output() onVisibleChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') container: ElementRef;\n\n    @ViewChild('list') list: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    buttonTemplate: TemplateRef<any>;\n\n    isItemClicked: boolean = false;\n\n    _visible: boolean = false;\n\n    documentClickListener: any;\n\n    constructor(private el: ElementRef, public cd: ChangeDetectorRef) { }\n\n    ngAfterViewInit() {\n        if (this.type !== 'linear') {\n            const button = DomHandler.findSingle(this.container.nativeElement, '.p-speeddial-button');\n            const firstItem = DomHandler.findSingle(this.list.nativeElement, '.p-speeddial-item');\n\n            if (button && firstItem) {\n                const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n                const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n                this.list.nativeElement.style.setProperty('--item-diff-x', `${wDiff / 2}px`);\n                this.list.nativeElement.style.setProperty('--item-diff-y', `${hDiff / 2}px`);\n            }\n        }\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'button':\n                    this.buttonTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    show() {\n        this.onVisibleChange.emit(true);\n        this.visibleChange.emit(true);\n        this._visible = true;\n        this.onShow.emit();\n        this.bindDocumentClickListener();\n        this.cd.markForCheck();\n    }\n\n    hide() {\n        this.onVisibleChange.emit(false);\n        this.visibleChange.emit(false);\n        this._visible = false;\n        this.onHide.emit();\n        this.unbindDocumentClickListener();\n        this.cd.markForCheck();\n    }\n\n    onButtonClick(event) {\n        this.visible ? this.hide() : this.show();\n        this.onClick.emit(event)\n        this.isItemClicked = true;\n    }\n\n    onItemClick(e, item) {\n        if (item.command) {\n            item.command({ originalEvent: e, item });\n        }\n\n        this.hide();\n\n        this.isItemClicked = true;\n    }\n\n\n    calculatePointStyle(index) {\n        const type = this.type;\n\n        if (type !== 'linear') {\n            const length = this.model.length;\n            const radius = this.radius || (length * 20);\n\n            if (type === 'circle') {\n                const step = 2 * Math.PI / length;\n\n                return {\n                    left: `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`,\n                    top: `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`,\n                }\n            }\n            else if (type === 'semi-circle') {\n                const direction = this.direction;\n                const step = Math.PI / (length - 1);\n                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;\n                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;\n                if (direction === 'up') {\n                    return { left: x, bottom: y };\n                }\n                else if (direction === 'down') {\n                    return { left: x, top: y };\n                }\n                else if (direction === 'left') {\n                    return { right: y, top: x };\n                }\n                else if (direction === 'right') {\n                    return { left: y, top: x };\n                }\n            }\n            else if (type === 'quarter-circle') {\n                const direction = this.direction;\n                const step = Math.PI / (2 * (length - 1));\n                const x = `calc(${radius * Math.cos(step * index)}px + var(--item-diff-x, 0px))`;\n                const y = `calc(${radius * Math.sin(step * index)}px + var(--item-diff-y, 0px))`;\n                if (direction === 'up-left') {\n                    return { right: x, bottom: y };\n                }\n                else if (direction === 'up-right') {\n                    return { left: x, bottom: y };\n                }\n                else if (direction === 'down-left') {\n                    return { right: y, top: x };\n                }\n                else if (direction === 'down-right') {\n                    return { left: y, top: x };\n                }\n            }\n        }\n\n        return {};\n    }\n\n    calculateTransitionDelay(index) {\n        const length = this.model.length;\n\n        return (this.visible ? index : length - index - 1) * this.transitionDelay;\n    }\n\n    containerClass() {\n        return {\n            ['p-speeddial p-component' + ` p-speeddial-${this.type}`]: true,\n            [`p-speeddial-direction-${this.direction}`]: this.type !== 'circle',\n            'p-speeddial-opened': this.visible,\n            'p-disabled': this.disabled\n        };\n    }\n\n    buttonClass() {\n        return {\n            'p-speeddial-button p-button-rounded': true,\n            'p-speeddial-rotate': this.rotateAnimation && !this.hideIcon,\n            [this.buttonClassName]: true\n        };\n    }\n\n    get buttonIconClass() {\n        return ((!this.visible && this.showIcon) || !this.hideIcon) ? this.showIcon : this.hideIcon;\n    }\n\n    getItemStyle(index) {\n        const transitionDelay = this.calculateTransitionDelay(index);\n        const pointStyle = this.calculatePointStyle(index);\n        return {\n            transitionDelay: `${transitionDelay}ms`,\n            ...pointStyle\n        };\n    }\n\n    isClickableRouterLink(item: MenuItem) {\n        return item.routerLink && !this.disabled && !item.disabled;\n    }\n\n    isOutsideClicked(event) {\n        return this.container && !(this.container.nativeElement.isSameNode(event.target) || this.container.nativeElement.contains(event.target) || this.isItemClicked);\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener && this.hideOnClickOutside) {\n            this.documentClickListener = (event) => {\n                if (this.visible && this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n\n                this.isItemClicked = false;\n            };\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, ButtonModule, RippleModule, TooltipModule, RouterModule],\n    exports: [SpeedDial, SharedModule, ButtonModule, TooltipModule, RouterModule],\n    declarations: [SpeedDial]\n})\nexport class SpeedDialModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { InputTextModule } from 'primeng/inputtext';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const SPINNER_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => Spinner),
+    multi: true
+};
+class Spinner {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.onChange = new EventEmitter();
+        this.onFocus = new EventEmitter();
+        this.onBlur = new EventEmitter();
+        this._step = 1;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+        this.keyPattern = /[0-9\+\-]/;
+        this.negativeSeparator = '-';
+    }
+    get step() {
+        return this._step;
+    }
+    set step(val) {
+        this._step = val;
+        if (this._step != null) {
+            let tokens = this.step.toString().split(/[,]|[.]/);
+            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;
+        }
+    }
+    ngOnInit() {
+        if (this.formatInput) {
+            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);
+            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);
+            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');
+            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {
+                console.warn("thousandSeparator and decimalSeparator cannot have the same value.");
+            }
+        }
+    }
+    repeat(event, interval, dir) {
+        let i = interval || 500;
+        this.clearTimer();
+        this.timer = setTimeout(() => {
+            this.repeat(event, 40, dir);
+        }, i);
+        this.spin(event, dir);
+    }
+    spin(event, dir) {
+        let step = this.step * dir;
+        let currentValue;
+        let precision = this.getPrecision();
+        if (this.value)
+            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;
+        else
+            currentValue = 0;
+        if (precision)
+            this.value = parseFloat(this.toFixed(currentValue + step, precision));
+        else
+            this.value = currentValue + step;
+        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {
+            this.value = currentValue;
+        }
+        if (this.min !== undefined && this.value < this.min) {
+            this.value = this.min;
+        }
+        if (this.max !== undefined && this.value > this.max) {
+            this.value = this.max;
+        }
+        this.formatValue();
+        this.onModelChange(this.value);
+        this.onChange.emit(event);
+    }
+    getPrecision() {
+        return this.precision === undefined ? this.calculatedPrecision : this.precision;
+    }
+    toFixed(value, precision) {
+        let power = Math.pow(10, precision || 0);
+        return String(Math.round(value * power) / power);
+    }
+    onUpButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, 1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onUpButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onUpButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMousedown(event) {
+        if (!this.disabled) {
+            this.inputfieldViewChild.nativeElement.focus();
+            this.repeat(event, null, -1);
+            this.updateFilledState();
+            event.preventDefault();
+        }
+    }
+    onDownButtonMouseup(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onDownButtonMouseleave(event) {
+        if (!this.disabled) {
+            this.clearTimer();
+        }
+    }
+    onInputKeydown(event) {
+        if (event.which == 38) {
+            this.spin(event, 1);
+            event.preventDefault();
+        }
+        else if (event.which == 40) {
+            this.spin(event, -1);
+            event.preventDefault();
+        }
+    }
+    onInputChange(event) {
+        this.onChange.emit(event);
+    }
+    onInput(event) {
+        this.value = this.parseValue(event.target.value);
+        this.onModelChange(this.value);
+        this.updateFilledState();
+    }
+    onInputBlur(event) {
+        this.focus = false;
+        this.formatValue();
+        this.onModelTouched();
+        this.onBlur.emit(event);
+    }
+    onInputFocus(event) {
+        this.focus = true;
+        this.onFocus.emit(event);
+    }
+    parseValue(val) {
+        let value;
+        let precision = this.getPrecision();
+        if (val.trim() === '') {
+            value = null;
+        }
+        else {
+            if (this.formatInput) {
+                val = val.replace(this.thousandRegExp, '');
+            }
+            if (precision) {
+                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');
+                value = parseFloat(val);
+            }
+            else {
+                value = parseInt(val, 10);
+            }
+            if (!isNaN(value)) {
+                if (this.max !== null && value > this.max) {
+                    value = this.max;
+                }
+                if (this.min !== null && value < this.min) {
+                    value = this.min;
+                }
+            }
+            else {
+                value = null;
+            }
+        }
+        return value;
+    }
+    formatValue() {
+        let value = this.value;
+        let precision = this.getPrecision();
+        if (value != null) {
+            if (this.formatInput) {
+                value = value.toLocaleString(undefined, { maximumFractionDigits: 20 });
+                if (this.decimalSeparator && this.thousandSeparator) {
+                    value = value.split(this.localeDecimalSeparator);
+                    if (precision && value[1]) {
+                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];
+                    }
+                    if (this.thousandSeparator && value[0].length > 3) {
+                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);
+                    }
+                    value = value.join('');
+                }
+            }
+            this.formattedValue = value.toString();
+        }
+        else {
+            this.formattedValue = null;
+        }
+        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {
+            this.inputfieldViewChild.nativeElement.value = this.formattedValue;
+        }
+    }
+    clearTimer() {
+        if (this.timer) {
+            clearInterval(this.timer);
+        }
+    }
+    writeValue(value) {
+        this.value = value;
+        this.formatValue();
+        this.updateFilledState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    updateFilledState() {
+        this.filled = (this.value !== undefined && this.value != null);
+    }
+}
+Spinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Spinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Spinner, selector: "p-spinner", inputs: { min: "min", max: "max", maxlength: "maxlength", size: "size", placeholder: "placeholder", inputId: "inputId", disabled: "disabled", readonly: "readonly", tabindex: "tabindex", required: "required", name: "name", ariaLabelledBy: "ariaLabelledBy", inputStyle: "inputStyle", inputStyleClass: "inputStyleClass", formatInput: "formatInput", decimalSeparator: "decimalSeparator", thousandSeparator: "thousandSeparator", precision: "precision", step: "step" }, outputs: { onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { properties: { "class.ui-inputwrapper-filled": "filled", "class.ui-inputwrapper-focus": "focus" }, classAttribute: "p-element" }, providers: [SPINNER_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputfieldViewChild", first: true, predicate: ["inputfield"], descendants: true }], ngImport: i0, template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, isInline: true, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Spinner, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-spinner', template: `
+        <span class="ui-spinner ui-widget ui-corner-all">
+            <input #inputfield type="text" [attr.id]="inputId" [value]="formattedValue||null" [attr.name]="name" [attr.aria-valumin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="value" [attr.aria-labelledby]="ariaLabelledBy"
+            [attr.size]="size" [attr.maxlength]="maxlength" [attr.tabindex]="tabindex" [attr.placeholder]="placeholder" [disabled]="disabled" [readonly]="readonly" [attr.required]="required"
+            (keydown)="onInputKeydown($event)" (blur)="onInputBlur($event)" (input)="onInput($event)" (change)="onInputChange($event)" (focus)="onInputFocus($event)"
+            [ngStyle]="inputStyle" [class]="inputStyleClass" [ngClass]="'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'">
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onUpButtonMouseleave($event)" (mousedown)="onUpButtonMousedown($event)" (mouseup)="onUpButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-up ui-clickable"></span>
+            </button>
+            <button type="button" [ngClass]="{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}" [disabled]="disabled||readonly" tabindex="-1" [attr.readonly]="readonly"
+                (mouseleave)="onDownButtonMouseleave($event)" (mousedown)="onDownButtonMousedown($event)" (mouseup)="onDownButtonMouseup($event)">
+                <span class="ui-spinner-button-icon pi pi-caret-down ui-clickable"></span>
+            </button>
+        </span>
+    `, host: {
+                        'class': 'p-element',
+                        '[class.ui-inputwrapper-filled]': 'filled',
+                        '[class.ui-inputwrapper-focus]': 'focus'
+                    }, providers: [SPINNER_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".ui-spinner{display:inline-block;overflow:visible;padding:0;position:relative;vertical-align:middle}.ui-spinner-input{vertical-align:middle;padding-right:1.5em}.ui-spinner-button{cursor:default;display:block;height:50%;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:center;vertical-align:middle;width:1.5em}.ui-spinner .ui-spinner-button-icon{position:absolute;top:50%;left:50%;margin-top:-.5em;margin-left:-.5em;width:1em}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-fluid .ui-spinner{width:100%}.ui-fluid .ui-spinner .ui-spinner-input{padding-right:2em;width:100%}.ui-fluid .ui-spinner .ui-spinner-button{width:1.5em}.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon{left:.7em}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onChange: [{
+                type: Output
+            }], onFocus: [{
+                type: Output
+            }], onBlur: [{
+                type: Output
+            }], min: [{
+                type: Input
+            }], max: [{
+                type: Input
+            }], maxlength: [{
+                type: Input
+            }], size: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], inputStyle: [{
+                type: Input
+            }], inputStyleClass: [{
+                type: Input
+            }], formatInput: [{
+                type: Input
+            }], decimalSeparator: [{
+                type: Input
+            }], thousandSeparator: [{
+                type: Input
+            }], precision: [{
+                type: Input
+            }], inputfieldViewChild: [{
+                type: ViewChild,
+                args: ['inputfield']
+            }], step: [{
+                type: Input
+            }] } });
+class SpinnerModule {
+}
+SpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, declarations: [Spinner], imports: [CommonModule, InputTextModule], exports: [Spinner] });
+SpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, imports: [[CommonModule, InputTextModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SpinnerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, InputTextModule],
+                    exports: [Spinner],
+                    declarations: [Spinner]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SPINNER_VALUE_ACCESSOR, Spinner, SpinnerModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-spinner.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-spinner.mjs","sources":["../../src/app/components/spinner/spinner.ts","../../src/app/components/spinner/primeng-spinner.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnInit,Input,Output,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SPINNER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Spinner),\n    multi: true\n};\n\n@Component({\n    selector: 'p-spinner',\n    template: `\n        <span class=\"ui-spinner ui-widget ui-corner-all\">\n            <input #inputfield type=\"text\" [attr.id]=\"inputId\" [value]=\"formattedValue||null\" [attr.name]=\"name\" [attr.aria-valumin]=\"min\" [attr.aria-valuemax]=\"max\" [attr.aria-valuenow]=\"value\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n            (keydown)=\"onInputKeydown($event)\" (blur)=\"onInputBlur($event)\" (input)=\"onInput($event)\" (change)=\"onInputChange($event)\" (focus)=\"onInputFocus($event)\"\n            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [ngClass]=\"'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'\">\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onUpButtonMouseleave($event)\" (mousedown)=\"onUpButtonMousedown($event)\" (mouseup)=\"onUpButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-up ui-clickable\"></span>\n            </button>\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onDownButtonMouseleave($event)\" (mousedown)=\"onDownButtonMousedown($event)\" (mouseup)=\"onDownButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-down ui-clickable\"></span>\n            </button>\n        </span>\n    `,\n    host: {\n        'class': 'p-element',\n        '[class.ui-inputwrapper-filled]': 'filled',\n        '[class.ui-inputwrapper-focus]': 'focus'\n    },\n    providers: [SPINNER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./spinner.css']\n})\nexport class Spinner implements OnInit,ControlValueAccessor {\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() maxlength: number;\n\n    @Input() size: number;\n\n    @Input() placeholder: string;\n\n    @Input() inputId: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() required: boolean;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: string;\n\n    @Input() formatInput: boolean;\n\n    @Input() decimalSeparator: string;\n\n    @Input() thousandSeparator: string;\n\n    @Input() precision: number;\n\n    value: any;\n\n    _step: number = 1;\n\n    formattedValue: string;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    keyPattern: RegExp = /[0-9\\+\\-]/;\n\n    public timer: any;\n\n    public focus: boolean;\n\n    public filled: boolean;\n\n    public negativeSeparator = '-';\n\n    localeDecimalSeparator: string;\n\n    localeThousandSeparator: string;\n\n    thousandRegExp: RegExp;\n\n    calculatedPrecision: number;\n\n    @ViewChild('inputfield') inputfieldViewChild: ElementRef;\n\n    @Input() get step(): number {\n        return this._step;\n    }\n    set step(val:number) {\n        this._step = val;\n\n        if (this._step != null) {\n            let tokens = this.step.toString().split(/[,]|[.]/);\n            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;\n        }\n    }\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        if (this.formatInput) {\n            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);\n            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);\n            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');\n\n            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {\n                console.warn(\"thousandSeparator and decimalSeparator cannot have the same value.\");\n            }\n        }\n    }\n\n    repeat(event: Event, interval: number, dir: number) {\n        let i = interval||500;\n\n        this.clearTimer();\n        this.timer = setTimeout(() => {\n            this.repeat(event, 40, dir);\n        }, i);\n\n        this.spin(event, dir);\n    }\n\n    spin(event: Event, dir: number) {\n        let step = this.step * dir;\n        let currentValue: number;\n        let precision = this.getPrecision();\n\n        if (this.value)\n            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;\n        else\n            currentValue = 0;\n\n        if (precision)\n            this.value = parseFloat(this.toFixed(currentValue + step, precision));\n        else\n            this.value = currentValue + step;\n\n        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {\n            this.value = currentValue;\n        }\n\n        if (this.min !== undefined && this.value < this.min) {\n            this.value = this.min;\n        }\n\n        if (this.max !== undefined && this.value > this.max) {\n            this.value = this.max;\n        }\n\n        this.formatValue();\n        this.onModelChange(this.value);\n        this.onChange.emit(event);\n    }\n\n    getPrecision() {\n        return this.precision === undefined ? this.calculatedPrecision : this.precision;\n    }\n\n    toFixed(value: number, precision: number) {\n        let power = Math.pow(10, precision||0);\n        return String(Math.round(value * power) / power);\n    }\n\n    onUpButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, 1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onUpButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onUpButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, -1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onDownButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        if (event.which == 38) {\n            this.spin(event, 1);\n            event.preventDefault();\n        }\n        else if (event.which == 40) {\n            this.spin(event, -1);\n            event.preventDefault();\n        }\n    }\n\n    onInputChange(event: Event) {\n        this.onChange.emit(event);\n    }\n\n    onInput(event: KeyboardEvent) {\n        this.value = this.parseValue((<HTMLInputElement> event.target).value);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.formatValue();\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputFocus(event) {\n        this.focus = true;\n        this.onFocus.emit(event);\n    }\n\n    parseValue(val: string): number {\n        let value: number;\n        let precision = this.getPrecision();\n\n        if (val.trim() === '') {\n            value = null;\n        }\n        else {\n            if (this.formatInput) {\n                val = val.replace(this.thousandRegExp, '');\n            }\n\n            if (precision) {\n                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');\n                value = parseFloat(val);\n            }\n            else {\n                value = parseInt(val, 10);\n            }\n\n            if (!isNaN(value)) {\n                if (this.max !== null && value > this.max) {\n                    value = this.max;\n                }\n\n                if (this.min !== null && value < this.min) {\n                    value = this.min;\n                }\n            }\n            else {\n                value = null;\n            }\n        }\n\n        return value;\n    }\n\n    formatValue() {\n        let value = this.value;\n        let precision = this.getPrecision();\n\n        if (value != null) {\n            if (this.formatInput) {\n                value = value.toLocaleString(undefined, {maximumFractionDigits: 20});\n\n                if (this.decimalSeparator && this.thousandSeparator) {\n                    value = value.split(this.localeDecimalSeparator);\n\n                    if (precision && value[1]) {\n                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];\n                    }\n\n                    if (this.thousandSeparator && value[0].length > 3) {\n                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);\n                    }\n\n                    value = value.join('');\n                }\n            }\n\n            this.formattedValue = value.toString();\n        }\n        else {\n            this.formattedValue = null;\n        }\n\n        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n            this.inputfieldViewChild.nativeElement.value = this.formattedValue;\n        }\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.formatValue();\n        this.updateFilledState();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    updateFilledState() {\n        this.filled = (this.value !== undefined && this.value != null);\n    }\n}\n\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\n    exports: [Spinner],\n    declarations: [Spinner]\n})\nexport class SpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,109 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import * as i1 from 'primeng/menu';
+import { MenuModule } from 'primeng/menu';
+
+class SplitButton {
+    constructor() {
+        this.iconPos = 'left';
+        this.onClick = new EventEmitter();
+        this.onDropdownClick = new EventEmitter();
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    onDefaultButtonClick(event) {
+        this.onClick.emit(event);
+    }
+    onDropdownButtonClick(event) {
+        this.onDropdownClick.emit(event);
+        this.menu.toggle({ currentTarget: this.containerViewChild.nativeElement, relativeAlign: this.appendTo == null });
+    }
+}
+SplitButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
+SplitButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SplitButton, selector: "p-splitButton", inputs: { model: "model", icon: "icon", iconPos: "iconPos", label: "label", style: "style", styleClass: "styleClass", menuStyle: "menuStyle", menuStyleClass: "menuStyleClass", disabled: "disabled", tabindex: "tabindex", appendTo: "appendTo", dir: "dir", expandAriaLabel: "expandAriaLabel", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClick: "onClick", onDropdownClick: "onDropdownClick" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "buttonViewChild", first: true, predicate: ["defaultbtn"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, isInline: true, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"], components: [{ type: i1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitButton', template: `
+        <div #container [ngClass]="'p-splitbutton p-component'" [ngStyle]="style" [class]="styleClass">
+            <button #defaultbtn class="p-splitbutton-defaultbutton" type="button" pButton [icon]="icon" [iconPos]="iconPos" [label]="label" (click)="onDefaultButtonClick($event)" [disabled]="disabled" [attr.tabindex]="tabindex"></button>
+            <button type="button" pButton class="p-splitbutton-menubutton" icon="pi pi-chevron-down" (click)="onDropdownButtonClick($event)" [disabled]="disabled" [attr.aria-label]="expandAriaLabel"></button>
+            <p-menu #menu [popup]="true" [model]="model" [style]="menuStyle" [styleClass]="menuStyleClass" [appendTo]="appendTo"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-menu>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-splitbutton{display:inline-flex;position:relative}.p-splitbutton .p-splitbutton-defaultbutton{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0 none}.p-splitbutton-menubutton{display:flex;align-items:center;justify-content:center;border-top-left-radius:0;border-bottom-left-radius:0}.p-splitbutton .p-menu{min-width:100%}.p-fluid .p-splitbutton{display:flex}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], onClick: [{
+                type: Output
+            }], onDropdownClick: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], menuStyle: [{
+                type: Input
+            }], menuStyleClass: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], dir: [{
+                type: Input
+            }], expandAriaLabel: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], buttonViewChild: [{
+                type: ViewChild,
+                args: ['defaultbtn']
+            }], menu: [{
+                type: ViewChild,
+                args: ['menu']
+            }] } });
+class SplitButtonModule {
+}
+SplitButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, declarations: [SplitButton], imports: [CommonModule, ButtonModule, MenuModule], exports: [SplitButton, ButtonModule] });
+SplitButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, imports: [[CommonModule, ButtonModule, MenuModule], ButtonModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ButtonModule, MenuModule],
+                    exports: [SplitButton, ButtonModule],
+                    declarations: [SplitButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { SplitButton, SplitButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-splitbutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-splitbutton.mjs","sources":["../../src/app/components/splitbutton/splitbutton.ts","../../src/app/components/splitbutton/primeng-splitbutton.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,Input,Output,EventEmitter,ViewChild,ChangeDetectionStrategy,ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MenuModule, Menu} from 'primeng/menu';\n\n@Component({\n    selector: 'p-splitButton',\n    template: `\n        <div #container [ngClass]=\"'p-splitbutton p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <button #defaultbtn class=\"p-splitbutton-defaultbutton\" type=\"button\" pButton [icon]=\"icon\" [iconPos]=\"iconPos\" [label]=\"label\" (click)=\"onDefaultButtonClick($event)\" [disabled]=\"disabled\" [attr.tabindex]=\"tabindex\"></button>\n            <button type=\"button\" pButton class=\"p-splitbutton-menubutton\" icon=\"pi pi-chevron-down\" (click)=\"onDropdownButtonClick($event)\" [disabled]=\"disabled\" [attr.aria-label]=\"expandAriaLabel\"></button>\n            <p-menu #menu [popup]=\"true\" [model]=\"model\" [style]=\"menuStyle\" [styleClass]=\"menuStyleClass\" [appendTo]=\"appendTo\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-menu>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./splitbutton.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SplitButton {\n\n    @Input() model: MenuItem[];\n\n    @Input() icon: string;\n\n    @Input() iconPos: string = 'left';\n\n    @Input() label: string;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() menuStyle: any;\n\n    @Input() menuStyleClass: string;\n\n    @Input() disabled: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() appendTo: any;\n\n    @Input() dir: string;\n\n    @Input() expandAriaLabel: string;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('defaultbtn') buttonViewChild: ElementRef;\n\n    @ViewChild('menu') menu: Menu;\n\n    onDefaultButtonClick(event: Event) {\n        this.onClick.emit(event);\n    }\n\n    onDropdownButtonClick(event: Event) {\n        this.onDropdownClick.emit(event);\n        this.menu.toggle({currentTarget: this.containerViewChild.nativeElement, relativeAlign: this.appendTo == null});\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,ButtonModule,MenuModule],\n    exports: [SplitButton,ButtonModule],\n    declarations: [SplitButton]\n})\nexport class SplitButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MAuBa,WAAW;IAjBxB;QAuBa,YAAO,GAAW,MAAM,CAAC;QAIxB,YAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEhD,oBAAe,GAAsB,IAAI,YAAY,EAAE,CAAC;QAoBzD,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;KAiBzD;IATG,oBAAoB,CAAC,KAAY;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,qBAAqB,CAAC,KAAY;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAC,CAAC,CAAC;KAClH;;wGAjDQ,WAAW;4FAAX,WAAW,q0BAfV;;;;;;;KAOT;2FAQQ,WAAW;kBAjBvB,SAAS;+BACI,eAAe,YACf;;;;;;;KAOT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEI,OAAO;sBAAhB,MAAM;gBAEG,eAAe;sBAAxB,MAAM;gBAEE,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,GAAG;sBAAX,KAAK;gBAEG,eAAe;sBAAvB,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEkB,kBAAkB;sBAAzC,SAAS;uBAAC,WAAW;gBAEG,eAAe;sBAAvC,SAAS;uBAAC,YAAY;gBAEJ,IAAI;sBAAtB,SAAS;uBAAC,MAAM;;MAkBR,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBA1DjB,WAAW,aAsDV,YAAY,EAAC,YAAY,EAAC,UAAU,aAtDrC,WAAW,EAuDE,YAAY;+GAGzB,iBAAiB,YAJjB,CAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC,EACzB,YAAY;2FAGzB,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,UAAU,CAAC;oBAC/C,OAAO,EAAE,CAAC,WAAW,EAAC,YAAY,CAAC;oBACnC,YAAY,EAAE,CAAC,WAAW,CAAC;iBAC9B;;;AChFD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,337 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Splitter {
+    constructor(cd, el) {
+        this.cd = cd;
+        this.el = el;
+        this.stateStorage = "session";
+        this.stateKey = null;
+        this.layout = "horizontal";
+        this.gutterSize = 4;
+        this.panelSizes = [];
+        this.minSizes = [];
+        this.onResizeEnd = new EventEmitter();
+        this.onResizeStart = new EventEmitter();
+        this.nested = false;
+        this.panels = [];
+        this.dragging = false;
+        this.mouseMoveListener = null;
+        this.mouseUpListener = null;
+        this.touchMoveListener = null;
+        this.touchEndListener = null;
+        this.size = null;
+        this.gutterElement = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.nextPanelSize = null;
+        this.prevPanelSize = null;
+        this._panelSizes = null;
+        this.prevPanelIndex = null;
+    }
+    ngOnInit() {
+        this.nested = this.isNested();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'panel':
+                    this.panels.push(item.template);
+                    break;
+                default:
+                    this.panels.push(item.template);
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.panels && this.panels.length) {
+            let initialized = false;
+            if (this.isStateful()) {
+                initialized = this.restoreState();
+            }
+            if (!initialized) {
+                let children = [...this.el.nativeElement.children[0].children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+                let _panelSizes = [];
+                this.panels.map((panel, i) => {
+                    let panelInitialSize = this.panelSizes.length - 1 >= i ? this.panelSizes[i] : null;
+                    let panelSize = panelInitialSize || (100 / this.panels.length);
+                    _panelSizes[i] = panelSize;
+                    children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+                });
+                this._panelSizes = _panelSizes;
+            }
+        }
+    }
+    resizeStart(event, index) {
+        this.gutterElement = event.currentTarget;
+        this.size = this.horizontal() ? DomHandler.getWidth(this.containerViewChild.nativeElement) : DomHandler.getHeight(this.containerViewChild.nativeElement);
+        this.dragging = true;
+        this.startPos = this.horizontal() ? (event.pageX || event.changedTouches[0].pageX) : (event.pageY || event.changedTouches[0].pageY);
+        this.prevPanelElement = this.gutterElement.previousElementSibling;
+        this.nextPanelElement = this.gutterElement.nextElementSibling;
+        this.prevPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.prevPanelElement, true) : DomHandler.getOuterHeight(this.prevPanelElement, true)) / this.size;
+        this.nextPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.nextPanelElement, true) : DomHandler.getOuterHeight(this.nextPanelElement, true)) / this.size;
+        this.prevPanelIndex = index;
+        DomHandler.addClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.onResizeStart.emit({ originalEvent: event, sizes: this._panelSizes });
+    }
+    onResize(event) {
+        let newPos;
+        if (this.horizontal())
+            newPos = (event.pageX * 100 / this.size) - (this.startPos * 100 / this.size);
+        else
+            newPos = (event.pageY * 100 / this.size) - (this.startPos * 100 / this.size);
+        let newPrevPanelSize = this.prevPanelSize + newPos;
+        let newNextPanelSize = this.nextPanelSize - newPos;
+        if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {
+            this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            this._panelSizes[this.prevPanelIndex] = newPrevPanelSize;
+            this._panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;
+        }
+    }
+    resizeEnd(event) {
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.onResizeEnd.emit({ originalEvent: event, sizes: this._panelSizes });
+        DomHandler.removeClass(this.gutterElement, 'p-splitter-gutter-resizing');
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');
+        this.clear();
+    }
+    onGutterMouseDown(event, index) {
+        this.resizeStart(event, index);
+        this.bindMouseListeners();
+    }
+    onGutterTouchStart(event, index) {
+        if (event.cancelable) {
+            this.resizeStart(event, index);
+            this.bindTouchListeners();
+            event.preventDefault();
+        }
+    }
+    onGutterTouchEnd(event) {
+        this.resizeEnd(event);
+        this.unbindTouchListeners();
+        if (event.cancelable)
+            event.preventDefault();
+    }
+    validateResize(newPrevPanelSize, newNextPanelSize) {
+        if (this.minSizes.length >= 1 && this.minSizes[0] && this.minSizes[0] > newPrevPanelSize) {
+            return false;
+        }
+        if (this.minSizes.length > 1 && this.minSizes[1] && this.minSizes[1] > newNextPanelSize) {
+            return false;
+        }
+        return true;
+    }
+    bindMouseListeners() {
+        if (!this.mouseMoveListener) {
+            this.mouseMoveListener = event => this.onResize(event);
+            document.addEventListener('mousemove', this.mouseMoveListener);
+        }
+        if (!this.mouseUpListener) {
+            this.mouseUpListener = event => {
+                this.resizeEnd(event);
+                this.unbindMouseListeners();
+            };
+            document.addEventListener('mouseup', this.mouseUpListener);
+        }
+    }
+    bindTouchListeners() {
+        if (!this.touchMoveListener) {
+            this.touchMoveListener = event => this.onResize(event.changedTouches[0]);
+            document.addEventListener('touchmove', this.touchMoveListener);
+        }
+        if (!this.touchEndListener) {
+            this.touchEndListener = event => {
+                this.resizeEnd(event);
+                this.unbindTouchListeners();
+            };
+            document.addEventListener('touchend', this.touchEndListener);
+        }
+    }
+    unbindMouseListeners() {
+        if (this.mouseMoveListener) {
+            document.removeEventListener('mousemove', this.mouseMoveListener);
+            this.mouseMoveListener = null;
+        }
+        if (this.mouseUpListener) {
+            document.removeEventListener('mouseup', this.mouseUpListener);
+            this.mouseUpListener = null;
+        }
+    }
+    unbindTouchListeners() {
+        if (this.touchMoveListener) {
+            document.removeEventListener('touchmove', this.touchMoveListener);
+            this.touchMoveListener = null;
+        }
+        if (this.touchEndListener) {
+            document.removeEventListener('touchend', this.touchEndListener);
+            this.touchEndListener = null;
+        }
+    }
+    clear() {
+        this.dragging = false;
+        this.size = null;
+        this.startPos = null;
+        this.prevPanelElement = null;
+        this.nextPanelElement = null;
+        this.prevPanelSize = null;
+        this.nextPanelSize = null;
+        this.gutterElement = null;
+        this.prevPanelIndex = null;
+    }
+    isNested() {
+        if (this.el.nativeElement) {
+            let parent = this.el.nativeElement.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-splitter')) {
+                parent = parent.parentElement;
+            }
+            return parent !== null;
+        }
+        else {
+            return false;
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    saveState() {
+        this.getStorage().setItem(this.stateKey, JSON.stringify(this._panelSizes));
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            this._panelSizes = JSON.parse(stateString);
+            let children = [...this.containerViewChild.nativeElement.children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));
+            children.forEach((child, i) => {
+                child.style.flexBasis = 'calc(' + this._panelSizes[i] + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';
+            });
+            return true;
+        }
+        return false;
+    }
+    containerClass() {
+        return {
+            'p-splitter p-component': true,
+            'p-splitter-horizontal': this.layout === "horizontal",
+            'p-splitter-vertical': this.layout === "vertical"
+        };
+    }
+    panelContainerClass() {
+        return {
+            'p-splitter-panel': true,
+            'p-splitter-panel-nested': true
+        };
+    }
+    gutterStyle() {
+        if (this.horizontal())
+            return { width: this.gutterSize + 'px' };
+        else
+            return { height: this.gutterSize + 'px' };
+    }
+    horizontal() {
+        return this.layout === 'horizontal';
+    }
+}
+Splitter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Splitter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Splitter, selector: "p-splitter", inputs: { styleClass: "styleClass", panelStyleClass: "panelStyleClass", style: "style", panelStyle: "panelStyle", stateStorage: "stateStorage", stateKey: "stateKey", layout: "layout", gutterSize: "gutterSize", panelSizes: "panelSizes", minSizes: "minSizes" }, outputs: { onResizeEnd: "onResizeEnd", onResizeStart: "onResizeStart" }, host: { properties: { "class.p-splitter-panel-nested": "nested" }, classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, isInline: true, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Splitter, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-splitter', template: `
+        <div #container [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-template ngFor let-panel let-i="index" [ngForOf]="panels">
+                <div [ngClass]="panelContainerClass()" [class]="panelStyleClass" [ngStyle]="panelStyle">
+                    <ng-container *ngTemplateOutlet="panel"></ng-container>
+                </div>
+                <div class="p-splitter-gutter" *ngIf="i !== (panels.length - 1)" [ngStyle]="gutterStyle()"
+                    (mousedown)="onGutterMouseDown($event, i)" (touchstart)="onGutterTouchStart($event, i)">
+                    <div class="p-splitter-gutter-handle"></div>
+                </div>
+            </ng-template>
+        </div>
+    `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element',
+                        '[class.p-splitter-panel-nested]': 'nested'
+                    }, styles: [".p-splitter{display:flex;flex-wrap:nowrap}.p-splitter-vertical{flex-direction:column}.p-splitter-panel{flex-grow:1}.p-splitter-panel-nested{display:flex}.p-splitter-panel p-splitter{flex-grow:1}.p-splitter-panel .p-splitter{flex-grow:1;border:0 none}.p-splitter-gutter{flex-grow:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:col-resize}.p-splitter-horizontal.p-splitter-resizing{cursor:col-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-horizontal>.p-splitter-gutter>.p-splitter-gutter-handle{height:24px;width:100%}.p-splitter-horizontal>.p-splitter-gutter{cursor:col-resize}.p-splitter-vertical.p-splitter-resizing{cursor:row-resize;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-splitter-vertical>.p-splitter-gutter{cursor:row-resize}.p-splitter-vertical>.p-splitter-gutter>.p-splitter-gutter-handle{width:24px;height:100%}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { styleClass: [{
+                type: Input
+            }], panelStyleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], panelStyle: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], gutterSize: [{
+                type: Input
+            }], panelSizes: [{
+                type: Input
+            }], minSizes: [{
+                type: Input
+            }], onResizeEnd: [{
+                type: Output
+            }], onResizeStart: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container', { static: false }]
+            }] } });
+class SplitterModule {
+}
+SplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, declarations: [Splitter], imports: [CommonModule], exports: [Splitter, SharedModule] });
+SplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SplitterModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Splitter, SharedModule],
+                    declarations: [Splitter]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Splitter, SplitterModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-splitter.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-splitter.mjs","sources":["../../src/app/components/splitter/splitter.ts","../../src/app/components/splitter/primeng-splitter.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, QueryList, ElementRef, ChangeDetectorRef, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\n\n@Component({\n    selector: 'p-splitter',\n    template: `\n        <div #container [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-template ngFor let-panel let-i=\"index\" [ngForOf]=\"panels\">\n                <div [ngClass]=\"panelContainerClass()\" [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\">\n                    <ng-container *ngTemplateOutlet=\"panel\"></ng-container>\n                </div>\n                <div class=\"p-splitter-gutter\" *ngIf=\"i !== (panels.length - 1)\" [ngStyle]=\"gutterStyle()\"\n                    (mousedown)=\"onGutterMouseDown($event, i)\" (touchstart)=\"onGutterTouchStart($event, i)\">\n                    <div class=\"p-splitter-gutter-handle\"></div>\n                </div>\n            </ng-template>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./splitter.css'],\n    host: {\n        'class': 'p-element',\n        '[class.p-splitter-panel-nested]': 'nested'\n    }\n})\nexport class Splitter {\n\n    @Input() styleClass: string;\n\n    @Input() panelStyleClass: string;\n\n    @Input() style: any;\n\n    @Input() panelStyle: any;\n\n    @Input() stateStorage: string = \"session\";\n\n    @Input() stateKey: string = null;\n\n    @Input() layout: string = \"horizontal\";\n\n    @Input() gutterSize: number = 4;\n\n    @Input() panelSizes: number[] = [];\n\n    @Input() minSizes: number[] = [];\n\n    @Output() onResizeEnd: EventEmitter<any> = new EventEmitter();\n\n    @Output() onResizeStart: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('container', { static: false }) containerViewChild: ElementRef;\n\n    nested = false;\n\n    panels = [];\n\n    dragging = false;\n\n    mouseMoveListener = null;\n\n    mouseUpListener = null;\n\n    touchMoveListener = null;\n\n    touchEndListener = null;\n\n    size = null;\n\n    gutterElement = null;\n\n    startPos = null;\n\n    prevPanelElement = null;\n\n    nextPanelElement = null;\n\n    nextPanelSize = null;\n\n    prevPanelSize = null;\n\n    _panelSizes = null;\n\n    prevPanelIndex = null;\n\n    constructor(public cd: ChangeDetectorRef, private el: ElementRef) { }\n\n    ngOnInit() {\n        this.nested = this.isNested();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'panel':\n                    this.panels.push(item.template);\n                break;\n                default:\n                    this.panels.push(item.template);\n                break;\n            }\n        })\n    }\n\n    ngAfterViewInit() {\n        if (this.panels && this.panels.length) {\n            let initialized = false;\n            if (this.isStateful()) {\n                initialized = this.restoreState();\n            }\n\n            if (!initialized) {\n                let children = [...this.el.nativeElement.children[0].children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));\n                let _panelSizes = [];\n\n                this.panels.map((panel, i) => {\n                    let panelInitialSize = this.panelSizes.length -1 >= i ? this.panelSizes[i]: null;\n                    let panelSize = panelInitialSize || (100 / this.panels.length);\n                    _panelSizes[i] = panelSize;\n                    children[i].style.flexBasis = 'calc(' + panelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n                });\n\n                this._panelSizes = _panelSizes;\n            }\n        }\n    }\n\n    resizeStart(event, index) {\n        this.gutterElement = event.currentTarget;\n        this.size = this.horizontal() ? DomHandler.getWidth(this.containerViewChild.nativeElement) : DomHandler.getHeight(this.containerViewChild.nativeElement);\n        this.dragging = true;\n        this.startPos = this.horizontal() ? (event.pageX || event.changedTouches[0].pageX) : (event.pageY || event.changedTouches[0].pageY);\n        this.prevPanelElement = this.gutterElement.previousElementSibling;\n        this.nextPanelElement = this.gutterElement.nextElementSibling;\n        this.prevPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.prevPanelElement, true): DomHandler.getOuterHeight(this.prevPanelElement, true)) / this.size;\n        this.nextPanelSize = 100 * (this.horizontal() ? DomHandler.getOuterWidth(this.nextPanelElement, true): DomHandler.getOuterHeight(this.nextPanelElement, true)) / this.size;\n        this.prevPanelIndex = index;\n        DomHandler.addClass(this.gutterElement, 'p-splitter-gutter-resizing');\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');\n        this.onResizeStart.emit({originalEvent: event, sizes: this._panelSizes});\n    }\n\n    onResize(event) {\n        let newPos;\n        if (this.horizontal())\n            newPos = (event.pageX * 100 / this.size) - (this.startPos * 100 / this.size);\n        else\n            newPos = (event.pageY  * 100 / this.size) - (this.startPos * 100 / this.size);\n\n        let newPrevPanelSize = this.prevPanelSize + newPos;\n        let newNextPanelSize = this.nextPanelSize - newPos;\n\n        if (this.validateResize(newPrevPanelSize, newNextPanelSize)) {\n            this.prevPanelElement.style.flexBasis = 'calc(' + newPrevPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            this.nextPanelElement.style.flexBasis = 'calc(' + newNextPanelSize + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            this._panelSizes[this.prevPanelIndex] = newPrevPanelSize;\n            this._panelSizes[this.prevPanelIndex + 1] = newNextPanelSize;\n        }\n    }\n\n    resizeEnd(event) {\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.onResizeEnd.emit({originalEvent: event, sizes: this._panelSizes});\n        DomHandler.removeClass(this.gutterElement, 'p-splitter-gutter-resizing');\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-splitter-resizing');\n        this.clear();\n    }\n\n    onGutterMouseDown(event, index) {\n        this.resizeStart(event, index);\n        this.bindMouseListeners();\n    }\n\n    onGutterTouchStart(event, index) {\n        if (event.cancelable){\n            this.resizeStart(event, index);\n            this.bindTouchListeners();\n\n            event.preventDefault();\n        }\n    }\n\n    onGutterTouchEnd(event) {\n        this.resizeEnd(event);\n        this.unbindTouchListeners();\n\n        if (event.cancelable)\n            event.preventDefault();\n    }\n\n    validateResize(newPrevPanelSize, newNextPanelSize) {\n        if (this.minSizes.length >= 1 && this.minSizes[0] && this.minSizes[0] > newPrevPanelSize) {\n            return false;\n        }\n\n        if (this.minSizes.length > 1 && this.minSizes[1] && this.minSizes[1] > newNextPanelSize) {\n            return false;\n        }\n\n        return true;\n    }\n\n    bindMouseListeners() {\n        if (!this.mouseMoveListener) {\n            this.mouseMoveListener = event => this.onResize(event)\n            document.addEventListener('mousemove', this.mouseMoveListener);\n        }\n\n        if (!this.mouseUpListener) {\n            this.mouseUpListener = event => {\n                this.resizeEnd(event);\n                this.unbindMouseListeners();\n            }\n            document.addEventListener('mouseup', this.mouseUpListener);\n        }\n    }\n\n    bindTouchListeners() {\n        if (!this.touchMoveListener) {\n            this.touchMoveListener = event => this.onResize(event.changedTouches[0])\n            document.addEventListener('touchmove', this.touchMoveListener);\n        }\n\n        if (!this.touchEndListener) {\n            this.touchEndListener = event => {\n                this.resizeEnd(event);\n                this.unbindTouchListeners();\n            }\n            document.addEventListener('touchend', this.touchEndListener);\n        }\n    }\n\n    unbindMouseListeners() {\n        if (this.mouseMoveListener) {\n            document.removeEventListener('mousemove', this.mouseMoveListener);\n            this.mouseMoveListener = null;\n        }\n\n        if (this.mouseUpListener) {\n            document.removeEventListener('mouseup', this.mouseUpListener);\n            this.mouseUpListener = null;\n        }\n    }\n\n    unbindTouchListeners() {\n        if (this.touchMoveListener) {\n            document.removeEventListener('touchmove', this.touchMoveListener);\n            this.touchMoveListener = null;\n        }\n\n        if (this.touchEndListener) {\n            document.removeEventListener('touchend', this.touchEndListener);\n            this.touchEndListener = null;\n        }\n    }\n\n    clear() {\n        this.dragging = false;\n        this.size = null;\n        this.startPos = null;\n        this.prevPanelElement = null;\n        this.nextPanelElement = null;\n        this.prevPanelSize = null;\n        this.nextPanelSize = null;\n        this.gutterElement = null;\n        this.prevPanelIndex = null;\n    }\n\n    isNested() {\n        if (this.el.nativeElement) {\n            let parent = this.el.nativeElement.parentElement;\n            while (parent && !DomHandler.hasClass(parent, 'p-splitter')) {\n                parent = parent.parentElement;\n            }\n\n            return parent !== null;\n        }\n        else {\n            return false;\n        }\n    }\n\n    isStateful() {\n        return this.stateKey != null;\n    }\n\n    getStorage() {\n        switch(this.stateStorage) {\n            case 'local':\n                return window.localStorage;\n\n            case 'session':\n                return window.sessionStorage;\n\n            default:\n                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n        }\n    }\n\n    saveState() {\n        this.getStorage().setItem(this.stateKey, JSON.stringify(this._panelSizes));\n    }\n\n    restoreState() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n\n        if (stateString) {\n            this._panelSizes = JSON.parse(stateString);\n            let children = [...this.containerViewChild.nativeElement.children].filter(child => DomHandler.hasClass(child, 'p-splitter-panel'));\n            children.forEach((child, i) => {\n                child.style.flexBasis = 'calc(' + this._panelSizes[i] + '% - ' + ((this.panels.length - 1) * this.gutterSize) + 'px)';\n            });\n\n            return true;\n        }\n\n        return false;\n    }\n\n    containerClass() {\n        return {\n            'p-splitter p-component': true,\n            'p-splitter-horizontal': this.layout === \"horizontal\",\n            'p-splitter-vertical': this.layout === \"vertical\"\n        };\n    }\n\n    panelContainerClass() {\n        return {\n            'p-splitter-panel': true,\n            'p-splitter-panel-nested': true\n        };\n    }\n\n    gutterStyle() {\n        if (this.horizontal())\n            return {width: this.gutterSize + 'px'};\n        else\n            return {height: this.gutterSize + 'px'};\n    }\n\n    horizontal() {\n        return this.layout === 'horizontal';\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Splitter, SharedModule],\n    declarations: [Splitter]\n})\nexport class SplitterModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,138 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class Steps {
+    constructor(router, route, cd) {
+        this.router = router;
+        this.route = route;
+        this.cd = cd;
+        this.activeIndex = 0;
+        this.readonly = true;
+        this.activeIndexChange = new EventEmitter();
+    }
+    ngOnInit() {
+        this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());
+    }
+    itemClick(event, item, i) {
+        if (this.readonly || item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        this.activeIndexChange.emit(i);
+        if (!item.url) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item,
+                index: i
+            });
+        }
+    }
+    isClickableRouterLink(item) {
+        return item.routerLink && !this.readonly && !item.disabled;
+    }
+    isActive(item, index) {
+        if (item.routerLink)
+            return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], { relativeTo: this.route }).toString(), false);
+        else
+            return index === this.activeIndex;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Steps.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Steps.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Steps, selector: "p-steps", inputs: { activeIndex: "activeIndex", model: "model", readonly: "readonly", style: "style", styleClass: "styleClass" }, outputs: { activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Steps, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-steps', template: `
+        <div [ngClass]="{'p-steps p-component':true,'p-readonly':readonly}" [ngStyle]="style" [class]="styleClass">
+            <ul role="tablist">
+                <li *ngFor="let item of model; let i = index" class="p-steps-item" #menuitem [ngStyle]="item.style" [class]="item.styleClass" role="tab" [attr.aria-selected]="i === activeIndex" [attr.aria-expanded]="i === activeIndex" pTooltip [tooltipOptions]="item.tooltipOptions"
+                    [ngClass]="{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}">
+                    <a *ngIf="isClickableRouterLink(item); else elseBlock" [routerLink]="item.routerLink" [queryParams]="item.queryParams" role="presentation" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}" class="p-menuitem-link"
+                        (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id" [attr.tabindex]="item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state">
+                        <span class="p-steps-number">{{i + 1}}</span>
+                        <span class="p-steps-title" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                        <ng-template #htmlLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                    </a>
+                    <ng-template #elseBlock>
+                        <a [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event, item, i)" (keydown.enter)="itemClick($event, item, i)" [attr.target]="item.target" [attr.id]="item.id"
+                            [attr.tabindex]="item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')">
+                            <span class="p-steps-number">{{i + 1}}</span>
+                            <span class="p-steps-title" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-steps-title" [innerHTML]="item.label"></span></ng-template>
+                        </a>
+                    </ng-template>
+                </li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-steps{position:relative}.p-steps ul{padding:0;margin:0;list-style-type:none;display:flex}.p-steps-item{position:relative;display:flex;justify-content:center;flex:1 1 auto}.p-steps-item .p-menuitem-link{display:inline-flex;flex-direction:column;align-items:center;overflow:hidden;text-decoration:none}.p-steps.p-steps-readonly .p-steps-item{cursor:auto}.p-steps-item.p-steps-current .p-menuitem-link{cursor:default}.p-steps-title{white-space:nowrap}.p-steps-number{display:flex;align-items:center;justify-content:center}.p-steps-title{display:block}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{
+                type: Input
+            }], model: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], activeIndexChange: [{
+                type: Output
+            }] } });
+class StepsModule {
+}
+StepsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StepsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, declarations: [Steps], imports: [CommonModule, RouterModule, TooltipModule], exports: [Steps, RouterModule, TooltipModule] });
+StepsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, imports: [[CommonModule, RouterModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StepsModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, TooltipModule],
+                    exports: [Steps, RouterModule, TooltipModule],
+                    declarations: [Steps]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Steps, StepsModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-steps.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-steps.mjs","sources":["../../src/app/components/steps/steps.ts","../../src/app/components/steps/primeng-steps.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,ChangeDetectionStrategy, ViewEncapsulation, OnInit, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RouterModule, Router, ActivatedRoute} from '@angular/router';\nimport {Subscription} from 'rxjs';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-steps',\n    template: `\n        <div [ngClass]=\"{'p-steps p-component':true,'p-readonly':readonly}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ul role=\"tablist\">\n                <li *ngFor=\"let item of model; let i = index\" class=\"p-steps-item\" #menuitem [ngStyle]=\"item.style\" [class]=\"item.styleClass\" role=\"tab\" [attr.aria-selected]=\"i === activeIndex\" [attr.aria-expanded]=\"i === activeIndex\" pTooltip [tooltipOptions]=\"item.tooltipOptions\"\n                    [ngClass]=\"{'p-highlight p-steps-current': isActive(item, i), 'p-disabled': item.disabled || (readonly && !isActive(item, i))}\">\n                    <a *ngIf=\"isClickableRouterLink(item); else elseBlock\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" role=\"presentation\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\" class=\"p-menuitem-link\"\n                        (click)=\"itemClick($event, item, i)\" (keydown.enter)=\"itemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\" [attr.tabindex]=\"item.disabled || readonly ? null : (item.tabindex ? item.tabindex : '0')\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\">\n                        <span class=\"p-steps-number\">{{i + 1}}</span>\n                        <span class=\"p-steps-title\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-steps-title\" [innerHTML]=\"item.label\"></span></ng-template>\n                    </a>\n                    <ng-template #elseBlock>\n                        <a [attr.href]=\"item.url\" class=\"p-menuitem-link\" role=\"presentation\" (click)=\"itemClick($event, item, i)\" (keydown.enter)=\"itemClick($event, item, i)\" [attr.target]=\"item.target\" [attr.id]=\"item.id\"\n                            [attr.tabindex]=\"item.disabled||(i !== activeIndex && readonly) ? null : (item.tabindex ? item.tabindex : '0')\">\n                            <span class=\"p-steps-number\">{{i + 1}}</span>\n                            <span class=\"p-steps-title\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-steps-title\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </a>\n                    </ng-template>\n                </li>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./steps.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Steps implements OnInit, OnDestroy {\n\n    @Input() activeIndex: number = 0;\n\n    @Input() model: MenuItem[];\n\n    @Input() readonly: boolean =  true;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n\n    constructor(private router: Router, private route:ActivatedRoute, private cd: ChangeDetectorRef) { }\n\n    subscription: Subscription;\n\n    ngOnInit() {\n        this.subscription = this.router.events.subscribe(() => this.cd.markForCheck());\n    }\n\n    itemClick(event: Event, item: MenuItem, i: number) {\n        if (this.readonly || item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        this.activeIndexChange.emit(i);\n\n        if (!item.url) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item,\n                index: i\n            });\n        }\n    }\n\n    isClickableRouterLink(item: MenuItem) {\n        return item.routerLink && !this.readonly && !item.disabled;\n    }\n\n    isActive(item: MenuItem, index: number) {\n        if (item.routerLink)\n            return this.router.isActive(item.routerLink, false) || this.router.isActive(this.router.createUrlTree([item.routerLink], {relativeTo: this.route}).toString(), false);\n        else\n            return index === this.activeIndex;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,TooltipModule],\n    exports: [Steps,RouterModule,TooltipModule],\n    declarations: [Steps]\n})\nexport class StepsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,189 @@
+import { CommonModule } from '@angular/common';
+import * as i0 from '@angular/core';
+import { Directive, Input, NgModule } from '@angular/core';
+import { DomHandler } from 'primeng/dom';
+
+class StyleClass {
+    constructor(el, renderer) {
+        this.el = el;
+        this.renderer = renderer;
+    }
+    ngAfterViewInit() {
+        this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {
+            this.target = this.resolveTarget();
+            if (this.toggleClass) {
+                if (DomHandler.hasClass(this.target, this.toggleClass))
+                    DomHandler.removeClass(this.target, this.toggleClass);
+                else
+                    DomHandler.addClass(this.target, this.toggleClass);
+            }
+            else {
+                if (this.target.offsetParent === null)
+                    this.enter();
+                else
+                    this.leave();
+            }
+        });
+    }
+    enter() {
+        if (this.enterActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                if (this.enterActiveClass === 'slidedown') {
+                    this.target.style.height = '0px';
+                    DomHandler.removeClass(this.target, 'hidden');
+                    this.target.style.maxHeight = this.target.scrollHeight + 'px';
+                    DomHandler.addClass(this.target, 'hidden');
+                    this.target.style.height = '';
+                }
+                DomHandler.addClass(this.target, this.enterActiveClass);
+                if (this.enterClass) {
+                    DomHandler.removeClass(this.target, this.enterClass);
+                }
+                this.enterListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.enterActiveClass);
+                    if (this.enterToClass) {
+                        DomHandler.addClass(this.target, this.enterToClass);
+                    }
+                    this.enterListener();
+                    if (this.enterActiveClass === 'slidedown') {
+                        this.target.style.maxHeight = '';
+                    }
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.enterClass) {
+                DomHandler.removeClass(this.target, this.enterClass);
+            }
+            if (this.enterToClass) {
+                DomHandler.addClass(this.target, this.enterToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.bindDocumentListener();
+        }
+    }
+    leave() {
+        if (this.leaveActiveClass) {
+            if (!this.animating) {
+                this.animating = true;
+                DomHandler.addClass(this.target, this.leaveActiveClass);
+                if (this.leaveClass) {
+                    DomHandler.removeClass(this.target, this.leaveClass);
+                }
+                this.leaveListener = this.renderer.listen(this.target, 'animationend', () => {
+                    DomHandler.removeClass(this.target, this.leaveActiveClass);
+                    if (this.leaveToClass) {
+                        DomHandler.addClass(this.target, this.leaveToClass);
+                    }
+                    this.leaveListener();
+                    this.animating = false;
+                });
+            }
+        }
+        else {
+            if (this.leaveClass) {
+                DomHandler.removeClass(this.target, this.leaveClass);
+            }
+            if (this.leaveToClass) {
+                DomHandler.addClass(this.target, this.leaveToClass);
+            }
+        }
+        if (this.hideOnOutsideClick) {
+            this.unbindDocumentListener();
+        }
+    }
+    resolveTarget() {
+        if (this.target) {
+            return this.target;
+        }
+        switch (this.selector) {
+            case '@next':
+                return this.el.nativeElement.nextElementSibling;
+            case '@prev':
+                return this.el.nativeElement.previousElementSibling;
+            case '@parent':
+                return this.el.nativeElement.parentElement;
+            case '@grandparent':
+                return this.el.nativeElement.parentElement.parentElement;
+            default:
+                return document.querySelector(this.selector);
+        }
+    }
+    bindDocumentListener() {
+        if (!this.documentListener) {
+            this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', event => {
+                if (getComputedStyle(this.target).getPropertyValue('position') === 'static') {
+                    this.unbindDocumentListener();
+                }
+                else if (!this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target)) {
+                    this.leave();
+                }
+            });
+        }
+    }
+    unbindDocumentListener() {
+        if (this.documentListener) {
+            this.documentListener();
+            this.documentListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.target = null;
+        if (this.eventListener) {
+            this.eventListener();
+        }
+        this.unbindDocumentListener();
+    }
+}
+StyleClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
+StyleClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: StyleClass, selector: "[pStyleClass]", inputs: { selector: ["pStyleClass", "selector"], enterClass: "enterClass", enterActiveClass: "enterActiveClass", enterToClass: "enterToClass", leaveClass: "leaveClass", leaveActiveClass: "leaveActiveClass", leaveToClass: "leaveToClass", hideOnOutsideClick: "hideOnOutsideClick", toggleClass: "toggleClass" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClass, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pStyleClass]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { selector: [{
+                type: Input,
+                args: ['pStyleClass']
+            }], enterClass: [{
+                type: Input
+            }], enterActiveClass: [{
+                type: Input
+            }], enterToClass: [{
+                type: Input
+            }], leaveClass: [{
+                type: Input
+            }], leaveActiveClass: [{
+                type: Input
+            }], leaveToClass: [{
+                type: Input
+            }], hideOnOutsideClick: [{
+                type: Input
+            }], toggleClass: [{
+                type: Input
+            }] } });
+class StyleClassModule {
+}
+StyleClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+StyleClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, declarations: [StyleClass], imports: [CommonModule], exports: [StyleClass] });
+StyleClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: StyleClassModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [StyleClass],
+                    declarations: [StyleClass]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { StyleClass, StyleClassModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-styleclass.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-styleclass.mjs","sources":["../../src/app/components/styleclass/styleclass.ts","../../src/app/components/styleclass/primeng-styleclass.ts"],"sourcesContent":["import { CommonModule} from '@angular/common';\nimport { NgModule, Directive, ElementRef, Input, Renderer2, OnDestroy, AfterViewInit } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\n\n@Directive({\n    selector: '[pStyleClass]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class StyleClass implements AfterViewInit, OnDestroy {\n\n    constructor(public el: ElementRef, public renderer: Renderer2) {}\n\n    @Input('pStyleClass') selector: string;\n\n    @Input() enterClass: string;\n\n    @Input() enterActiveClass: string;\n\n    @Input() enterToClass: string;\n\n    @Input() leaveClass: string;\n\n    @Input() leaveActiveClass: string;\n\n    @Input() leaveToClass: string;\n\n    @Input() hideOnOutsideClick: boolean;\n\n    @Input() toggleClass: string;\n\n    eventListener: Function;\n\n    documentListener: Function;\n\n    target: HTMLElement;\n\n    enterListener: Function;\n\n    leaveListener: Function;\n\n    animating: boolean;\n\n    ngAfterViewInit() {\n        this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {\n            this.target = this.resolveTarget();\n\n            if (this.toggleClass) {\n                if (DomHandler.hasClass(this.target, this.toggleClass))\n                    DomHandler.removeClass(this.target, this.toggleClass);\n                else\n                    DomHandler.addClass(this.target, this.toggleClass);\n            }\n            else {\n                if (this.target.offsetParent === null)\n                    this.enter();\n                else\n                    this.leave();\n            }\n        });\n    }\n\n    enter() {\n        if (this.enterActiveClass) {\n            if (!this.animating) {\n                this.animating = true;\n\n                if (this.enterActiveClass === 'slidedown') {\n                    this.target.style.height = '0px';\n                    DomHandler.removeClass(this.target, 'hidden');\n                    this.target.style.maxHeight = this.target.scrollHeight + 'px';\n                    DomHandler.addClass(this.target, 'hidden');\n                    this.target.style.height = '';\n                }\n\n                DomHandler.addClass(this.target, this.enterActiveClass);\n                if (this.enterClass) {\n                    DomHandler.removeClass(this.target, this.enterClass);\n                }\n\n                this.enterListener = this.renderer.listen(this.target, 'animationend', () => {\n                    DomHandler.removeClass(this.target, this.enterActiveClass);\n                    if (this.enterToClass) {\n                        DomHandler.addClass(this.target, this.enterToClass);\n                    }\n                    this.enterListener();\n\n                    if (this.enterActiveClass === 'slidedown') {\n                        this.target.style.maxHeight = '';\n                    }\n                    this.animating = false;\n                });\n            }\n        }\n        else {\n            if (this.enterClass) {\n                DomHandler.removeClass(this.target, this.enterClass);\n            }\n\n            if (this.enterToClass) {\n                DomHandler.addClass(this.target, this.enterToClass);\n            }\n        }\n\n        if (this.hideOnOutsideClick) {\n            this.bindDocumentListener();\n        }\n    }\n\n    leave() {\n        if (this.leaveActiveClass) {\n            if (!this.animating) {\n                this.animating = true;\n                DomHandler.addClass(this.target, this.leaveActiveClass);\n                if (this.leaveClass) {\n                    DomHandler.removeClass(this.target, this.leaveClass);\n                }\n\n                this.leaveListener = this.renderer.listen(this.target, 'animationend', () => {\n                    DomHandler.removeClass(this.target, this.leaveActiveClass);\n                    if (this.leaveToClass) {\n                        DomHandler.addClass(this.target, this.leaveToClass);\n                    }\n                    this.leaveListener();\n                    this.animating = false;\n                });\n            }\n        }\n        else {\n            if (this.leaveClass) {\n                DomHandler.removeClass(this.target, this.leaveClass);\n            }\n\n            if (this.leaveToClass) {\n                DomHandler.addClass(this.target, this.leaveToClass);\n            }\n        }\n\n        if (this.hideOnOutsideClick) {\n            this.unbindDocumentListener();\n        }\n    }\n\n    resolveTarget() {\n        if (this.target) {\n            return this.target;\n        }\n\n        switch (this.selector) {\n            case '@next':\n                return this.el.nativeElement.nextElementSibling;\n\n            case '@prev':\n                return this.el.nativeElement.previousElementSibling;\n\n            case '@parent':\n                return this.el.nativeElement.parentElement;\n\n            case '@grandparent':\n                return this.el.nativeElement.parentElement.parentElement;\n\n            default:\n                return document.querySelector(this.selector);\n        }\n    }\n\n    bindDocumentListener() {\n        if (!this.documentListener) {\n            this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', event => {\n                if (getComputedStyle(this.target).getPropertyValue('position') === 'static') {\n                    this.unbindDocumentListener();\n                }\n                else  if (!this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target)) {\n                    this.leave();\n                }\n            });\n        }\n    }\n\n    unbindDocumentListener() {\n        if (this.documentListener) {\n            this.documentListener();\n            this.documentListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.target = null;\n        if (this.eventListener) {\n            this.eventListener();\n        }\n        this.unbindDocumentListener();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [StyleClass],\n    declarations: [StyleClass]\n})\nexport class StyleClassModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4554 @@
+import * as i0 from '@angular/core';
+import { Injectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, Directive, HostListener, Optional, NgModule } from '@angular/core';
+import * as i4 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i9 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i1 from 'primeng/api';
+import { FilterOperator, FilterMatchMode, PrimeTemplate, TranslationKeys, SharedModule } from 'primeng/api';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+import * as i8 from 'primeng/inputtext';
+import { InputTextModule } from 'primeng/inputtext';
+import * as i11 from 'primeng/button';
+import { ButtonModule } from 'primeng/button';
+import { SelectButtonModule } from 'primeng/selectbutton';
+import * as i6 from 'primeng/tristatecheckbox';
+import { TriStateCheckboxModule } from 'primeng/tristatecheckbox';
+import * as i7 from 'primeng/calendar';
+import { CalendarModule } from 'primeng/calendar';
+import * as i5 from 'primeng/inputnumber';
+import { InputNumberModule } from 'primeng/inputnumber';
+import * as i10 from 'primeng/dropdown';
+import { DropdownModule } from 'primeng/dropdown';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';
+import { Subject } from 'rxjs';
+import * as i3 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import { trigger, transition, style, animate } from '@angular/animations';
+
+class TableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.valueSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.columnsSource = new Subject();
+        this.resetSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.valueSource$ = this.valueSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+        this.columnsSource$ = this.columnsSource.asObservable();
+        this.resetSource$ = this.resetSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onResetChange() {
+        this.resetSource.next(null);
+    }
+    onContextMenu(data) {
+        this.contextMenuSource.next(data);
+    }
+    onValueChange(value) {
+        this.valueSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+    onColumnsChange(columns) {
+        this.columnsSource.next(columns);
+    }
+}
+TableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableService, decorators: [{
+            type: Injectable
+        }] });
+class Table {
+    constructor(el, zone, tableService, cd, filterService, overlayService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.filterService = filterService;
+        this.overlayService = overlayService;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.paginatorDropdownScrollHeight = '200px';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.rowTrackBy = (index, item) => item;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.compareSelectionBy = 'deepEquals';
+        this.csvSeparator = ',';
+        this.exportFilename = 'download';
+        this.filters = {};
+        this.filterDelay = 300;
+        this.expandedRowKeys = {};
+        this.editingRowKeys = {};
+        this.rowExpandMode = 'multiple';
+        this.scrollDirection = "vertical";
+        this.virtualScrollDelay = 250;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.showInitialSortBadge = true;
+        this.stateStorage = 'session';
+        this.editMode = 'cell';
+        this.groupRowsByOrder = 1;
+        this.responsiveLayout = 'stack';
+        this.breakpoint = '960px';
+        this.onRowSelect = new EventEmitter();
+        this.onRowUnselect = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onFilter = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.onRowExpand = new EventEmitter();
+        this.onRowCollapse = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onRowReorder = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.firstChange = new EventEmitter();
+        this.rowsChange = new EventEmitter();
+        this.onStateSave = new EventEmitter();
+        this.onStateRestore = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._first = 0;
+        this.selectionKeys = {};
+        this._sortOrder = 1;
+        this.columnResizing = false;
+        this.rowGroupHeaderStyleObject = {};
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            if (!this.virtualScroll) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            if (this.restoringFilter) {
+                this.restoringFilter = false;
+            }
+        }
+        if (this.responsiveLayout === 'stack' && !this.scrollable) {
+            this.createResponsiveStyle();
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'headergrouped':
+                    this.headerGroupedTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'footergrouped':
+                    this.footerGroupedTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'rowexpansion':
+                    this.expandedRowTemplate = item.template;
+                    break;
+                case 'groupheader':
+                    this.groupHeaderTemplate = item.template;
+                    break;
+                case 'rowspan':
+                    this.rowspanTemplate = item.template;
+                    break;
+                case 'groupfooter':
+                    this.groupFooterTemplate = item.template;
+                    break;
+                case 'frozenrows':
+                    this.frozenRowsTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+                case 'frozenrowexpansion':
+                    this.frozenExpandedRowTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        if (this.isStateful() && this.resizableColumns) {
+            this.restoreColumnWidths();
+        }
+        if (this.scrollable && this.virtualScroll) {
+            this.virtualScrollSubscription = this.virtualScrollBody.renderedRangeStream.subscribe(range => {
+                let top = range.start * this.virtualRowHeight * -1;
+                this.tableHeaderViewChild.nativeElement.style.top = top + 'px';
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            if (this.isStateful() && !this.stateRestored) {
+                this.restoreState();
+            }
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.tableService.onValueChange(simpleChange.value.currentValue);
+        }
+        if (simpleChange.columns) {
+            this._columns = simpleChange.columns.currentValue;
+            this.tableService.onColumnsChange(simpleChange.columns.currentValue);
+            if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored) {
+                this.restoreColumnOrder();
+            }
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsBy) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.groupRowsByOrder) {
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    get columns() {
+        return this._columns;
+    }
+    set columns(cols) {
+        this._columns = cols;
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+    }
+    get rows() {
+        return this._rows;
+    }
+    set rows(val) {
+        this._rows = val;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    get dataToRender() {
+        let data = this.filteredValue || this.value;
+        return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let data of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.firstChange.emit(this.first);
+        this.rowsChange.emit(this.rows);
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            if (this.resetPageOnSort) {
+                this._first = 0;
+                this.firstChange.emit(this._first);
+                if (this.scrollable) {
+                    this.resetScrollTop();
+                }
+            }
+            this.sortSingle();
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                        if (this.scrollable) {
+                            this.resetScrollTop();
+                        }
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort) {
+                        this._first = 0;
+                        this.firstChange.emit(this._first);
+                    }
+                }
+                this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+        this.anchorRowIndex = null;
+    }
+    sortSingle() {
+        let field = this.sortField || this.groupRowsBy;
+        let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;
+        if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {
+            this._multiSortMeta = [this.getGroupRowsMeta(), { field: this.sortField, order: this.sortOrder }];
+            this.sortMultiple();
+            return;
+        }
+        if (field && order) {
+            if (this.restoringSort) {
+                this.restoringSort = false;
+            }
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        field: field,
+                        order: order
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        let value1 = ObjectUtils.resolveFieldData(data1, field);
+                        let value2 = ObjectUtils.resolveFieldData(data2, field);
+                        let result = null;
+                        if (value1 == null && value2 != null)
+                            result = -1;
+                        else if (value1 != null && value2 == null)
+                            result = 1;
+                        else if (value1 == null && value2 == null)
+                            result = 0;
+                        else if (typeof value1 === 'string' && typeof value2 === 'string')
+                            result = value1.localeCompare(value2);
+                        else
+                            result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                        return (order * result);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: field,
+                order: order
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+        }
+    }
+    sortMultiple() {
+        if (this.groupRowsBy) {
+            if (!this._multiSortMeta)
+                this._multiSortMeta = [this.getGroupRowsMeta()];
+            else if (this.multiSortMeta[0].field !== this.groupRowsBy)
+                this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta];
+        }
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                if (this.customSort) {
+                    this.sortFunction.emit({
+                        data: this.value,
+                        mode: this.sortMode,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+                else {
+                    this.value.sort((data1, data2) => {
+                        return this.multisortField(data1, data2, this.multiSortMeta, 0);
+                    });
+                    this._value = [...this.value];
+                }
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    multisortField(data1, data2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        else if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    handleRowClick(event) {
+        let target = event.originalEvent.target;
+        let targetNode = target.nodeName;
+        let parentNode = target.parentElement && target.parentElement.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||
+            parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||
+            (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {
+                DomHandler.clearSelection();
+                if (this.rangeRowIndex != null) {
+                    this.clearSelectionRange(event.originalEvent);
+                }
+                this.rangeRowIndex = event.rowIndex;
+                this.selectRange(event.originalEvent, event.rowIndex);
+            }
+            else {
+                let rowData = event.rowData;
+                let selected = this.isSelected(rowData);
+                let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                this.anchorRowIndex = event.rowIndex;
+                this.rangeRowIndex = event.rowIndex;
+                if (metaSelection) {
+                    let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row' });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this._selection = rowData;
+                            this.selectionChange.emit(rowData);
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            if (metaKey) {
+                                this._selection = this.selection || [];
+                            }
+                            else {
+                                this._selection = [];
+                                this.selectionKeys = {};
+                            }
+                            this._selection = [...this.selection, rowData];
+                            this.selectionChange.emit(this.selection);
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                        this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                    }
+                }
+                else {
+                    if (this.selectionMode === 'single') {
+                        if (selected) {
+                            this._selection = null;
+                            this.selectionKeys = {};
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                        }
+                        else {
+                            this._selection = rowData;
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys = {};
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                    else if (this.selectionMode === 'multiple') {
+                        if (selected) {
+                            let selectionIndex = this.findIndexInSelection(rowData);
+                            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                            this.selectionChange.emit(this.selection);
+                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                delete this.selectionKeys[dataKeyValue];
+                            }
+                        }
+                        else {
+                            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                            this.selectionChange.emit(this.selection);
+                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });
+                            if (dataKeyValue) {
+                                this.selectionKeys[dataKeyValue] = 1;
+                            }
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const rowData = event.rowData;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = rowData;
+                this.contextMenuSelectionChange.emit(rowData);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, data: rowData, index: event.rowIndex });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(rowData);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(rowData);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = rowData;
+                        this.selectionChange.emit(rowData);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                this.tableService.onSelectionChange();
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event, data: rowData, index: event.rowIndex });
+            }
+        }
+    }
+    selectRange(event, rowIndex) {
+        let rangeStart, rangeEnd;
+        if (this.anchorRowIndex > rowIndex) {
+            rangeStart = rowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else if (this.anchorRowIndex < rowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = rowIndex;
+        }
+        else {
+            rangeStart = rowIndex;
+            rangeEnd = rowIndex;
+        }
+        if (this.lazy && this.paginator) {
+            rangeStart -= this.first;
+            rangeEnd -= this.first;
+        }
+        let rangeRowsData = [];
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];
+            if (!this.isSelected(rangeRowData)) {
+                rangeRowsData.push(rangeRowData);
+                this._selection = [...this.selection, rangeRowData];
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+        }
+        this.selectionChange.emit(this.selection);
+        this.onRowSelect.emit({ originalEvent: event, data: rangeRowsData, type: 'row' });
+    }
+    clearSelectionRange(event) {
+        let rangeStart, rangeEnd;
+        if (this.rangeRowIndex > this.anchorRowIndex) {
+            rangeStart = this.anchorRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        else if (this.rangeRowIndex < this.anchorRowIndex) {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.anchorRowIndex;
+        }
+        else {
+            rangeStart = this.rangeRowIndex;
+            rangeEnd = this.rangeRowIndex;
+        }
+        for (let i = rangeStart; i <= rangeEnd; i++) {
+            let rangeRowData = this.value[i];
+            let selectionIndex = this.findIndexInSelection(rangeRowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+            this.onRowUnselect.emit({ originalEvent: event, data: rangeRowData, type: 'row' });
+        }
+    }
+    isSelected(rowData) {
+        if (rowData && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(rowData) > -1;
+                else
+                    return this.equals(rowData, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(rowData) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(rowData, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    toggleRowWithRadio(event, rowData) {
+        this.preventSelectionSetterPropagation = true;
+        if (this.selection != rowData) {
+            this._selection = rowData;
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+            if (this.dataKey) {
+                this.selectionKeys = {};
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;
+            }
+        }
+        else {
+            this._selection = null;
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton' });
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowWithCheckbox(event, rowData) {
+        this.selection = this.selection || [];
+        let selected = this.isSelected(rowData);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;
+        this.preventSelectionSetterPropagation = true;
+        if (selected) {
+            let selectionIndex = this.findIndexInSelection(rowData);
+            this._selection = this.selection.filter((val, i) => i != selectionIndex);
+            this.selectionChange.emit(this.selection);
+            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        else {
+            this._selection = this.selection ? [...this.selection, rowData] : [rowData];
+            this.selectionChange.emit(this.selection);
+            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        this.tableService.onSelectionChange();
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    toggleRowsWithCheckbox(event, check) {
+        this._selection = check ? this.filteredValue ? this.filteredValue.slice() : this.value.slice() : [];
+        this.preventSelectionSetterPropagation = true;
+        this.updateSelectionKeys();
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    equals(data1, data2) {
+        return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);
+    }
+    /* Legacy Filtering for custom elements */
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+        this.anchorRowIndex = null;
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (!this.restoringFilter) {
+            this.first = 0;
+            this.firstChange.emit(this.first);
+        }
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredValue = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredValue = [];
+                for (let i = 0; i < this.value.length; i++) {
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let localFiltered = false;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            localFiltered = true;
+                            let filterField = prop;
+                            let filterMeta = this.filters[filterField];
+                            if (Array.isArray(filterMeta)) {
+                                for (let meta of filterMeta) {
+                                    localMatch = this.executeLocalFilter(filterField, this.value[i], meta);
+                                    if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {
+                                        break;
+                                    }
+                                }
+                            }
+                            else {
+                                localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let globalFilterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            globalMatch = this.filterService.filters[this.filters['global'].matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), this.filters['global'].value, this.filterLocale);
+                            if (globalMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    let matches;
+                    if (this.filters['global']) {
+                        matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;
+                    }
+                    else {
+                        matches = localFiltered && localMatch;
+                    }
+                    if (matches) {
+                        this.filteredValue.push(this.value[i]);
+                    }
+                }
+                if (this.filteredValue.length === this.value.length) {
+                    this.filteredValue = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: this.filteredValue || this.value
+        });
+        this.tableService.onValueChange(this.value);
+        if (this.isStateful() && !this.restoringFilter) {
+            this.saveState();
+        }
+        if (this.restoringFilter) {
+            this.restoringFilter = false;
+        }
+        this.cd.markForCheck();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    executeLocalFilter(field, rowData, filterMeta) {
+        let filterValue = filterMeta.value;
+        let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;
+        let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);
+        let filterConstraint = this.filterService.filters[filterMatchMode];
+        return filterConstraint(dataFieldValue, filterValue, this.filterLocale);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    clear() {
+        this._sortField = null;
+        this._sortOrder = this.defaultSortOrder;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredValue = null;
+        this.tableService.onResetChange();
+        this.first = 0;
+        this.firstChange.emit(this.first);
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    reset() {
+        this.clear();
+    }
+    exportCSV(options) {
+        let data;
+        let csv = '';
+        let columns = this.frozenColumns ? [...this.frozenColumns, ...this.columns] : this.columns;
+        if (options && options.selectionOnly) {
+            data = this.selection || [];
+        }
+        else {
+            data = this.filteredValue || this.value;
+            if (this.frozenValue) {
+                data = data ? [...this.frozenValue, ...data] : this.frozenValue;
+            }
+        }
+        //headers
+        for (let i = 0; i < columns.length; i++) {
+            let column = columns[i];
+            if (column.exportable !== false && column.field) {
+                csv += '"' + (column.header || column.field) + '"';
+                if (i < (columns.length - 1)) {
+                    csv += this.csvSeparator;
+                }
+            }
+        }
+        //body
+        data.forEach((record, i) => {
+            csv += '\n';
+            for (let i = 0; i < columns.length; i++) {
+                let column = columns[i];
+                if (column.exportable !== false && column.field) {
+                    let cellData = ObjectUtils.resolveFieldData(record, column.field);
+                    if (cellData != null) {
+                        if (this.exportFunction) {
+                            cellData = this.exportFunction({
+                                data: cellData,
+                                field: column.field
+                            });
+                        }
+                        else
+                            cellData = String(cellData).replace(/"/g, '""');
+                    }
+                    else
+                        cellData = '';
+                    csv += '"' + cellData + '"';
+                    if (i < (columns.length - 1)) {
+                        csv += this.csvSeparator;
+                    }
+                }
+            }
+        });
+        let blob = new Blob([csv], {
+            type: 'text/csv;charset=utf-8;'
+        });
+        let link = document.createElement("a");
+        link.style.display = 'none';
+        document.body.appendChild(link);
+        if (link.download !== undefined) {
+            link.setAttribute('href', URL.createObjectURL(blob));
+            link.setAttribute('download', this.exportFilename + '.csv');
+            link.click();
+        }
+        else {
+            csv = 'data:text/csv;charset=utf-8,' + csv;
+            window.open(encodeURI(csv));
+        }
+        document.body.removeChild(link);
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({
+                        first: virtualScrollOffset,
+                        rows: virtualScrollChunkSize,
+                        sortField: this.sortField,
+                        sortOrder: this.sortOrder,
+                        filters: this.filters,
+                        globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+                        multiSortMeta: this.multiSortMeta
+                    });
+                }
+            }, this.virtualScrollDelay);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.wrapperViewChild.nativeElement.scrollTo) {
+                this.wrapperViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.wrapperViewChild.nativeElement.scrollLeft = options.left;
+                this.wrapperViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    updateEditingCell(cell, data, field, index) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.editingCellRowIndex = index;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.editingCellRowIndex = null;
+                    this.unbindDocumentEditListener();
+                    this.cd.markForCheck();
+                    if (this.overlaySubscription) {
+                        this.overlaySubscription.unsubscribe();
+                    }
+                }
+                this.selfClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    initRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        this.editingRowKeys[dataKeyValue] = true;
+    }
+    saveRowEdit(rowData, rowElement) {
+        if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {
+            let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+            delete this.editingRowKeys[dataKeyValue];
+        }
+    }
+    cancelRowEdit(rowData) {
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        delete this.editingRowKeys[dataKeyValue];
+    }
+    toggleRow(rowData, event) {
+        if (!this.dataKey) {
+            throw new Error('dataKey must be defined to use row expansion');
+        }
+        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));
+        if (this.expandedRowKeys[dataKeyValue] != null) {
+            delete this.expandedRowKeys[dataKeyValue];
+            this.onRowCollapse.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        else {
+            if (this.rowExpandMode === 'single') {
+                this.expandedRowKeys = {};
+            }
+            this.expandedRowKeys[dataKeyValue] = true;
+            this.onRowExpand.emit({
+                originalEvent: event,
+                data: rowData
+            });
+        }
+        if (event) {
+            event.preventDefault();
+        }
+        if (this.isStateful()) {
+            this.saveState();
+        }
+    }
+    isRowExpanded(rowData) {
+        return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isRowEditing(rowData) {
+        return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.resizeColumnElement = event.target.parentElement;
+        this.columnResizing = true;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        this.onColumnResize(event);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd() {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = this.resizeColumnElement.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = this.resizeColumnElement.style.minWidth || 15;
+        if (newColumnWidth >= minWidth) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = this.resizeColumnElement.nextElementSibling;
+                let nextColumnWidth = nextColumn.offsetWidth - delta;
+                if (newColumnWidth > 15 && nextColumnWidth > 15) {
+                    if (!this.scrollable) {
+                        this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                        if (nextColumn) {
+                            nextColumn.style.width = nextColumnWidth + 'px';
+                        }
+                    }
+                    else {
+                        this.resizeTableCells(newColumnWidth, nextColumnWidth);
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;
+                this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';
+                this.resizeColumnElement.style.width = newColumnWidth + 'px';
+                if (!this.scrollable)
+                    this.tableViewChild.nativeElement.style.width = tableWidth + 'px';
+                else
+                    this.resizeTableCells(newColumnWidth, null);
+            }
+            this.onColResize.emit({
+                element: this.resizeColumnElement,
+                delta: delta
+            });
+            if (this.isStateful()) {
+                this.saveState();
+            }
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    resizeTableCells(newColumnWidth, nextColumnWidth) {
+        let colIndex = DomHandler.index(this.resizeColumnElement);
+        let widths = [];
+        const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');
+        let headers = DomHandler.find(tableHead, 'tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        this.destroyStyleElement();
+        this.createStyleElement();
+        let innerHTML = '';
+        widths.forEach((width, index) => {
+            let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;
+            innerHTML += `
+                #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+
+                #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                    flex: 0 0 ${colWidth}px !important;
+                }
+            `;
+        });
+        this.styleElement.innerHTML = innerHTML;
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+                let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+                }
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+                if (this.isStateful()) {
+                    this.zone.runOutsideAngular(() => {
+                        setTimeout(() => {
+                            this.saveState();
+                        });
+                    });
+                }
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    onRowDragStart(event, index) {
+        this.rowDragging = true;
+        this.draggedRowIndex = index;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onRowDragOver(event, index, rowElement) {
+        if (this.rowDragging && this.draggedRowIndex !== index) {
+            let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();
+            let pageY = event.pageY;
+            let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;
+            let prevRowElement = rowElement.previousElementSibling;
+            if (pageY < rowMidY) {
+                DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+                this.droppedRowIndex = index;
+                if (prevRowElement)
+                    DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+            }
+            else {
+                if (prevRowElement)
+                    DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+                else
+                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
+                this.droppedRowIndex = index + 1;
+                DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');
+            }
+        }
+    }
+    onRowDragLeave(event, rowElement) {
+        let prevRowElement = rowElement.previousElementSibling;
+        if (prevRowElement) {
+            DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
+        }
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
+        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');
+    }
+    onRowDragEnd(event) {
+        this.rowDragging = false;
+        this.draggedRowIndex = null;
+        this.droppedRowIndex = null;
+    }
+    onRowDrop(event, rowElement) {
+        if (this.droppedRowIndex != null) {
+            let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;
+            ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);
+            this.onRowReorder.emit({
+                dragIndex: this.draggedRowIndex,
+                dropIndex: dropIndex
+            });
+        }
+        //cleanup
+        this.onRowDragLeave(event, rowElement);
+        this.onRowDragEnd(event);
+    }
+    isEmpty() {
+        let data = this.filteredValue || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    getStorage() {
+        switch (this.stateStorage) {
+            case 'local':
+                return window.localStorage;
+            case 'session':
+                return window.sessionStorage;
+            default:
+                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are "local" and "session".');
+        }
+    }
+    isStateful() {
+        return this.stateKey != null;
+    }
+    saveState() {
+        const storage = this.getStorage();
+        let state = {};
+        if (this.paginator) {
+            state.first = this.first;
+            state.rows = this.rows;
+        }
+        if (this.sortField) {
+            state.sortField = this.sortField;
+            state.sortOrder = this.sortOrder;
+        }
+        if (this.multiSortMeta) {
+            state.multiSortMeta = this.multiSortMeta;
+        }
+        if (this.hasFilter()) {
+            state.filters = this.filters;
+        }
+        if (this.resizableColumns) {
+            this.saveColumnWidths(state);
+        }
+        if (this.reorderableColumns) {
+            this.saveColumnOrder(state);
+        }
+        if (this.selection) {
+            state.selection = this.selection;
+        }
+        if (Object.keys(this.expandedRowKeys).length) {
+            state.expandedRowKeys = this.expandedRowKeys;
+        }
+        storage.setItem(this.stateKey, JSON.stringify(state));
+        this.onStateSave.emit(state);
+    }
+    clearState() {
+        const storage = this.getStorage();
+        if (this.stateKey) {
+            storage.removeItem(this.stateKey);
+        }
+    }
+    restoreState() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        const dateFormat = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
+        const reviver = function (key, value) {
+            if (typeof value === "string" && dateFormat.test(value)) {
+                return new Date(value);
+            }
+            return value;
+        };
+        if (stateString) {
+            let state = JSON.parse(stateString, reviver);
+            if (this.paginator) {
+                if (this.first !== undefined) {
+                    this.first = state.first;
+                    this.firstChange.emit(this.first);
+                }
+                if (this.rows !== undefined) {
+                    this.rows = state.rows;
+                    this.rowsChange.emit(this.rows);
+                }
+            }
+            if (state.sortField) {
+                this.restoringSort = true;
+                this._sortField = state.sortField;
+                this._sortOrder = state.sortOrder;
+            }
+            if (state.multiSortMeta) {
+                this.restoringSort = true;
+                this._multiSortMeta = state.multiSortMeta;
+            }
+            if (state.filters) {
+                this.restoringFilter = true;
+                this.filters = state.filters;
+            }
+            if (this.resizableColumns) {
+                this.columnWidthsState = state.columnWidths;
+                this.tableWidthState = state.tableWidth;
+            }
+            if (state.expandedRowKeys) {
+                this.expandedRowKeys = state.expandedRowKeys;
+            }
+            if (state.selection) {
+                Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));
+            }
+            this.stateRestored = true;
+            this.onStateRestore.emit(state);
+        }
+    }
+    saveColumnWidths(state) {
+        let widths = [];
+        let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');
+        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));
+        state.columnWidths = widths.join(',');
+        if (this.columnResizeMode === 'expand') {
+            state.tableWidth = DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';
+        }
+    }
+    restoreColumnWidths() {
+        if (this.columnWidthsState) {
+            let widths = this.columnWidthsState.split(',');
+            if (this.columnResizeMode === 'expand' && this.tableWidthState) {
+                this.tableViewChild.nativeElement.style.width = this.tableWidthState;
+                this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;
+                this.containerViewChild.nativeElement.style.width = this.tableWidthState;
+            }
+            this.createStyleElement();
+            if (this.scrollable && widths && widths.length > 0) {
+                let innerHTML = '';
+                widths.forEach((width, index) => {
+                    innerHTML += `
+                            #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+
+                            #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index + 1}) {
+                                flex: 0 0 ${width}px;
+                            }
+                        `;
+                });
+                this.styleElement.innerHTML = innerHTML;
+            }
+            else {
+                DomHandler.find(this.tableViewChild.nativeElement, '.p-datatable-thead > tr > th').forEach((header, index) => {
+                    header.style.width = widths[index] + 'px';
+                });
+            }
+        }
+    }
+    saveColumnOrder(state) {
+        if (this.columns) {
+            let columnOrder = [];
+            this.columns.map(column => {
+                columnOrder.push(column.field || column.key);
+            });
+            state.columnOrder = columnOrder;
+        }
+    }
+    restoreColumnOrder() {
+        const storage = this.getStorage();
+        const stateString = storage.getItem(this.stateKey);
+        if (stateString) {
+            let state = JSON.parse(stateString);
+            let columnOrder = state.columnOrder;
+            if (columnOrder) {
+                let reorderedColumns = [];
+                columnOrder.map(key => {
+                    let col = this.findColumnByKey(key);
+                    if (col) {
+                        reorderedColumns.push(col);
+                    }
+                });
+                this.columnOrderStateRestored = true;
+                this.columns = reorderedColumns;
+            }
+        }
+    }
+    findColumnByKey(key) {
+        if (this.columns) {
+            for (let col of this.columns) {
+                if (col.key === key || col.field === key)
+                    return col;
+                else
+                    continue;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    createStyleElement() {
+        this.styleElement = document.createElement('style');
+        this.styleElement.type = 'text/css';
+        document.head.appendChild(this.styleElement);
+    }
+    getGroupRowsMeta() {
+        return { field: this.groupRowsBy, order: this.groupRowsByOrder };
+    }
+    createResponsiveStyle() {
+        if (!this.responsiveStyleElement) {
+            this.responsiveStyleElement = document.createElement('style');
+            this.responsiveStyleElement.type = 'text/css';
+            document.head.appendChild(this.responsiveStyleElement);
+            let innerHTML = `
+@media screen and (max-width: ${this.breakpoint}) {
+    #${this.id} .p-datatable-thead > tr > th,
+    #${this.id} .p-datatable-tfoot > tr > td {
+        display: none !important;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td {
+        display: flex;
+        width: 100% !important;
+        align-items: center;
+        justify-content: space-between;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {
+        border: 0 none;
+    }
+
+    #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {
+        border-top: 0;
+        border-right: 0;
+        border-left: 0;
+    }
+
+    #${this.id} .p-datatable-tbody > tr > td > .p-column-title {
+        display: block;
+    }
+}
+`;
+            this.responsiveStyleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyResponsiveStyle() {
+        if (this.responsiveStyleElement) {
+            document.head.removeChild(this.responsiveStyleElement);
+            this.responsiveStyleElement = null;
+        }
+    }
+    destroyStyleElement() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.initialized = null;
+        if (this.virtualScrollSubscription) {
+            this.virtualScrollSubscription.unsubscribe();
+        }
+        this.destroyStyleElement();
+        this.destroyResponsiveStyle();
+    }
+}
+Table.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Table, selector: "p-table", inputs: { frozenColumns: "frozenColumns", frozenValue: "frozenValue", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", paginator: "paginator", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", paginatorDropdownScrollHeight: "paginatorDropdownScrollHeight", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showJumpToPageInput: "showJumpToPageInput", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", rowTrackBy: "rowTrackBy", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", compareSelectionBy: "compareSelectionBy", csvSeparator: "csvSeparator", exportFilename: "exportFilename", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterLocale: "filterLocale", expandedRowKeys: "expandedRowKeys", editingRowKeys: "editingRowKeys", rowExpandMode: "rowExpandMode", scrollable: "scrollable", scrollDirection: "scrollDirection", rowGroupMode: "rowGroupMode", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", frozenWidth: "frozenWidth", responsive: "responsive", contextMenu: "contextMenu", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", rowHover: "rowHover", customSort: "customSort", showInitialSortBadge: "showInitialSortBadge", autoLayout: "autoLayout", exportFunction: "exportFunction", stateKey: "stateKey", stateStorage: "stateStorage", editMode: "editMode", groupRowsBy: "groupRowsBy", groupRowsByOrder: "groupRowsByOrder", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", responsiveLayout: "responsiveLayout", breakpoint: "breakpoint", value: "value", columns: "columns", first: "first", rows: "rows", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect", onPage: "onPage", onSort: "onSort", onFilter: "onFilter", onLazyLoad: "onLazyLoad", onRowExpand: "onRowExpand", onRowCollapse: "onRowCollapse", onContextMenuSelect: "onContextMenuSelect", onColResize: "onColResize", onColReorder: "onColReorder", onRowReorder: "onRowReorder", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", sortFunction: "sortFunction", firstChange: "firstChange", rowsChange: "rowsChange", onStateSave: "onStateSave", onStateRestore: "onStateRestore" }, host: { classAttribute: "p-element" }, providers: [TableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "tableHeaderViewChild", first: true, predicate: ["tableHeader"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TableBody; }), selector: "[pTableBody]", inputs: ["pTableBody", "pTableBodyTemplate", "value", "frozen", "frozenRows"] }, { type: i0.forwardRef(function () { return i3.CdkVirtualScrollViewport; }), selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i0.forwardRef(function () { return i4.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i4.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i4.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i0.forwardRef(function () { return i3.CdkFixedSizeVirtualScroll; }), selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Table, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-table', template: `
+        <div #container [ngStyle]="style" [class]="styleClass"
+            [ngClass]="{'p-datatable p-component': true,
+                'p-datatable-hoverable-rows': (rowHover||selectionMode),
+                'p-datatable-auto-layout': autoLayout,
+                'p-datatable-resizable': resizableColumns,
+                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-datatable-scrollable': scrollable,
+                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',
+                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',
+                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',
+                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),
+                'p-datatable-responsive-stack': responsiveLayout === 'stack',
+                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',
+                'p-datatable-responsive': responsive,
+                'p-datatable-grouped-header': headerGroupedTemplate != null,
+                'p-datatable-grouped-footer': footerGroupedTemplate != null}" [attr.id]="id">
+            <div class="p-datatable-loading-overlay p-component-overlay" *ngIf="loading && showLoader">
+                <i [class]="'p-datatable-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <div *ngIf="captionTemplate" class="p-datatable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div #wrapper class="p-datatable-wrapper" [ngStyle]="{height: scrollHeight}">
+                <table #table *ngIf="!virtualScroll" role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-datatable-thead">
+                        <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="frozenBodyTemplate" [frozen]="true"></tbody>
+                    <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+                <cdk-virtual-scroll-viewport *ngIf="virtualScroll" [itemSize]="virtualRowHeight" tabindex="0" [style.height]="scrollHeight !== 'flex' ? scrollHeight : undefined" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)" class="p-datatable-virtual-scrollable-body">
+                    <table #table role="table" class="p-datatable-table" [ngClass]="tableStyleClass" [ngStyle]="tableStyle" [attr.id]="id+'-table'">
+                        <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                        <thead #tableHeader class="p-datatable-thead">
+                            <ng-container *ngTemplateOutlet="headerGroupedTemplate||headerTemplate; context: {$implicit: columns}"></ng-container>
+                        </thead>
+                        <tbody class="p-datatable-tbody p-datatable-frozen-tbody" *ngIf="frozenValue||frozenBodyTemplate" [value]="frozenValue" [frozenRows]="true" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate" [frozen]="true"></tbody>
+                        <tbody class="p-datatable-tbody" [value]="dataToRender" [pTableBody]="columns" [pTableBodyTemplate]="bodyTemplate"></tbody>
+                        <tfoot *ngIf="footerGroupedTemplate||footerTemplate" class="p-datatable-tfoot">
+                            <ng-container *ngTemplateOutlet="footerGroupedTemplate||footerTemplate; context {$implicit: columns}"></ng-container>
+                        </tfoot>
+                    </table>
+                </cdk-virtual-scroll-viewport>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo" [dropdownScrollHeight]="paginatorDropdownScrollHeight"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showJumpToPageInput]="showJumpToPageInput" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div *ngIf="summaryTemplate" class="p-datatable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-datatable-reorder-indicator-up" style="display:none" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-datatable-reorder-indicator-down" style="display:none" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TableService], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-datatable{position:relative}.p-datatable table{border-collapse:collapse;min-width:100%;table-layout:fixed}.p-datatable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-datatable .p-sortable-column .p-column-title,.p-datatable .p-sortable-column .p-sortable-column-icon,.p-datatable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-datatable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-datatable-auto-layout>.p-datatable-wrapper{overflow-x:auto}.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper{overflow-x:auto}.p-datatable-responsive-scroll>.p-datatable-wrapper>table,.p-datatable-auto-layout>.p-datatable-wrapper>table{table-layout:auto}.p-datatable-hoverable-rows .p-selectable-row{cursor:pointer}.p-datatable-scrollable .p-datatable-wrapper{position:relative;overflow:auto}.p-datatable-scrollable .p-datatable-thead,.p-datatable-scrollable .p-datatable-tbody,.p-datatable-scrollable .p-datatable-tfoot{display:block}.p-datatable-scrollable .p-datatable-thead>tr,.p-datatable-scrollable .p-datatable-tbody>tr,.p-datatable-scrollable .p-datatable-tfoot>tr{display:flex;flex-wrap:nowrap;width:100%}.p-datatable-scrollable .p-datatable-thead>tr>th,.p-datatable-scrollable .p-datatable-tbody>tr>td,.p-datatable-scrollable .p-datatable-tfoot>tr>td{display:flex;flex:1 1 0;align-items:center}.p-datatable-scrollable .p-datatable-thead{position:sticky;top:0;z-index:1}.p-datatable-scrollable .p-datatable-frozen-tbody{position:sticky;z-index:1}.p-datatable-scrollable .p-datatable-tfoot{position:sticky;bottom:0;z-index:1}.p-datatable-scrollable .p-frozen-column{position:sticky;background:inherit}.p-datatable-scrollable th.p-frozen-column{z-index:1}.p-datatable-scrollable-both .p-datatable-thead>tr>th,.p-datatable-scrollable-both .p-datatable-tbody>tr>td,.p-datatable-scrollable-both .p-datatable-tfoot>tr>td,.p-datatable-scrollable-horizontal .p-datatable-thead>tr>th .p-datatable-scrollable-horizontal .p-datatable-tbody>tr>td,.p-datatable-scrollable-horizontal .p-datatable-tfoot>tr>td{flex:0 0 auto}.p-datatable-flex-scrollable{display:flex;flex-direction:column;height:100%}.p-datatable-flex-scrollable .p-datatable-wrapper{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-scrollable .p-rowgroup-header{position:sticky;z-index:1}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot{display:table;border-collapse:collapse;width:100%;table-layout:fixed}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr{display:table-row}.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead>tr>th,.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot>tr>td{display:table-cell}.p-datatable-flex-scrollable{display:flex;flex-direction:column;flex:1;height:100%}.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body{flex:1}.p-datatable-resizable>.p-datatable-wrapper{overflow-x:auto}.p-datatable-resizable .p-datatable-thead>tr>th,.p-datatable-resizable .p-datatable-tfoot>tr>td,.p-datatable-resizable .p-datatable-tbody>tr>td{overflow:hidden;white-space:nowrap}.p-datatable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-datatable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-datatable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-datatable .p-row-editor-init,.p-datatable .p-row-editor-save,.p-datatable .p-row-editor-cancel,.p-datatable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-datatable-reorder-indicator-up,.p-datatable-reorder-indicator-down{position:absolute;display:none}.p-datatable-reorderablerow-handle,[pReorderableColumn]{cursor:move}.p-datatable .p-datatable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-column-filter-row{display:flex;align-items:center;width:100%}.p-column-filter-menu{display:inline-flex}.p-column-filter-row p-columnfilterformelement{flex:1 1 auto;width:1%}.p-column-filter-menu-button,.p-column-filter-clear-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-column-filter-overlay{position:absolute;top:0;left:0}.p-column-filter-row-items{margin:0;padding:0;list-style:none}.p-column-filter-row-item{cursor:pointer}.p-column-filter-add-button,.p-column-filter-remove-button{justify-content:center}.p-column-filter-add-button .p-button-label,.p-column-filter-remove-button .p-button-label{flex-grow:0}.p-column-filter-buttonbar{display:flex;align-items:center;justify-content:space-between}.p-column-filter-buttonbar .p-button{width:auto}.p-datatable .p-datatable-tbody>tr>td>.p-column-title{display:none}cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.OverlayService }]; }, propDecorators: { frozenColumns: [{
+                type: Input
+            }], frozenValue: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], paginatorDropdownScrollHeight: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showJumpToPageInput: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], csvSeparator: [{
+                type: Input
+            }], exportFilename: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], expandedRowKeys: [{
+                type: Input
+            }], editingRowKeys: [{
+                type: Input
+            }], rowExpandMode: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollDirection: [{
+                type: Input
+            }], rowGroupMode: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], responsive: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], showInitialSortBadge: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], exportFunction: [{
+                type: Input
+            }], stateKey: [{
+                type: Input
+            }], stateStorage: [{
+                type: Input
+            }], editMode: [{
+                type: Input
+            }], groupRowsBy: [{
+                type: Input
+            }], groupRowsByOrder: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], responsiveLayout: [{
+                type: Input
+            }], breakpoint: [{
+                type: Input
+            }], onRowSelect: [{
+                type: Output
+            }], onRowUnselect: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onFilter: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], onRowExpand: [{
+                type: Output
+            }], onRowCollapse: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onRowReorder: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], firstChange: [{
+                type: Output
+            }], rowsChange: [{
+                type: Output
+            }], onStateSave: [{
+                type: Output
+            }], onStateRestore: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], wrapperViewChild: [{
+                type: ViewChild,
+                args: ['wrapper']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], tableHeaderViewChild: [{
+                type: ViewChild,
+                args: ['tableHeader']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], columns: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+class TableBody {
+    constructor(dt, tableService, cd, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.el = el;
+        this.subscription = this.dt.tableService.valueSource$.subscribe(() => {
+            if (this.dt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    ngAfterViewInit() {
+        if (this.frozenRows) {
+            this.updateFrozenRowStickyPosition();
+        }
+        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {
+            this.updateFrozenRowGroupHeaderStickyPosition();
+        }
+    }
+    shouldRenderRowGroupHeader(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowGroupFooter(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowData = value[i + 1];
+        if (nextRowData) {
+            let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== nextRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    shouldRenderRowspan(value, rowData, i) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let prevRowData = value[i - 1];
+        if (prevRowData) {
+            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);
+            return currentRowFieldData !== previousRowFieldData;
+        }
+        else {
+            return true;
+        }
+    }
+    calculateRowGroupSize(value, rowData, index) {
+        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);
+        let nextRowFieldData = currentRowFieldData;
+        let groupRowSpan = 0;
+        while (currentRowFieldData === nextRowFieldData) {
+            groupRowSpan++;
+            let nextRowData = value[++index];
+            if (nextRowData) {
+                nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);
+            }
+            else {
+                break;
+            }
+        }
+        return groupRowSpan === 1 ? null : groupRowSpan;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+    updateFrozenRowStickyPosition() {
+        this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';
+    }
+    updateFrozenRowGroupHeaderStickyPosition() {
+        if (this.el.nativeElement.previousElementSibling) {
+            let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);
+            this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';
+        }
+    }
+}
+TableBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+TableBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableBody, selector: "[pTableBody]", inputs: { columns: ["pTableBody", "columns"], template: ["pTableBodyTemplate", "template"], value: "value", frozen: "frozen", frozenRows: "frozenRows" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTableBody]',
+                    template: `
+        <ng-container *ngIf="!dt.expandedRowTemplate && !dt.virtualScroll">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode !== 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.rowGroupMode === 'rowspan'">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="!dt.expandedRowTemplate && dt.virtualScroll">
+            <ng-template cdkVirtualFor let-rowData let-rowIndex="index" [cdkVirtualForOf]="value" [cdkVirtualForTrackBy]="dt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngTemplateOutlet="rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngIf="!dt.groupHeaderTemplate">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)" role="row">
+                    <ng-container *ngTemplateOutlet="dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                </ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                    <ng-container *ngIf="dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)" role="row">
+                        <ng-container *ngTemplateOutlet="dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                    </ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.frozenExpandedRowTemplate && frozen">
+            <ng-template ngFor let-rowData let-rowIndex="index" [ngForOf]="value" [ngForTrackBy]="dt.rowTrackBy">
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}"></ng-container>
+                <ng-container *ngIf="dt.isRowExpanded(rowData)">
+                    <ng-container *ngTemplateOutlet="dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="dt.loading">
+            <ng-container *ngTemplateOutlet="dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="dt.isEmpty() && !dt.loading">
+            <ng-container *ngTemplateOutlet="dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    changeDetection: ChangeDetectionStrategy.Default,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTableBodyTemplate"]
+            }], value: [{
+                type: Input
+            }], frozen: [{
+                type: Input
+            }], frozenRows: [{
+                type: Input
+            }] } });
+class RowGroupHeader {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    get getFrozenRowGroupHeaderStickyPosition() {
+        return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';
+    }
+}
+RowGroupHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowGroupHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowGroupHeader, selector: "[pRowGroupHeader]", host: { properties: { "style.top": "getFrozenRowGroupHeaderStickyPosition" }, classAttribute: "p-rowgroup-header p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowGroupHeader, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowGroupHeader]',
+                    host: {
+                        'class': 'p-rowgroup-header p-element',
+                        '[style.top]': "getFrozenRowGroupHeaderStickyPosition"
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; } });
+class FrozenColumn {
+    constructor(el) {
+        this.el = el;
+        this.alignFrozen = "left";
+        this._frozen = true;
+    }
+    get frozen() {
+        return this._frozen;
+    }
+    set frozen(val) {
+        this._frozen = val;
+        this.updateStickyPosition();
+    }
+    ngAfterViewInit() {
+        this.updateStickyPosition();
+    }
+    updateStickyPosition() {
+        if (this._frozen) {
+            if (this.alignFrozen === 'right') {
+                let right = 0;
+                let next = this.el.nativeElement.nextElementSibling;
+                if (next) {
+                    right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right);
+                }
+                this.el.nativeElement.style.right = right + 'px';
+            }
+            else {
+                let left = 0;
+                let prev = this.el.nativeElement.previousElementSibling;
+                if (prev) {
+                    left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);
+                }
+                this.el.nativeElement.style.left = left + 'px';
+            }
+            let filterRow = this.el.nativeElement.parentElement.nextElementSibling;
+            if (filterRow) {
+                let index = DomHandler.index(this.el.nativeElement);
+                if (filterRow.children && filterRow.children[index]) {
+                    filterRow.children[index].style.left = this.el.nativeElement.style.left;
+                    filterRow.children[index].style.right = this.el.nativeElement.style.right;
+                }
+            }
+        }
+    }
+}
+FrozenColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+FrozenColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FrozenColumn, selector: "[pFrozenColumn]", inputs: { frozen: "frozen", alignFrozen: "alignFrozen" }, host: { properties: { "class.p-frozen-column": "frozen" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FrozenColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pFrozenColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-frozen-column]': 'frozen'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { frozen: [{
+                type: Input
+            }], alignFrozen: [{
+                type: Input
+            }] } });
+class SortableColumn {
+    constructor(dt) {
+        this.dt = dt;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.dt.isSorted(this.field);
+        this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';
+    }
+    onClick(event) {
+        if (this.isEnabled() && !this.isFilterElement(event.target)) {
+            this.updateSortState();
+            this.dt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.pSortableColumnDisabled !== true;
+    }
+    isFilterElement(element) {
+        return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+SortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SortableColumn, selector: "[pSortableColumn]", inputs: { field: ["pSortableColumn", "field"], pSortableColumnDisabled: "pSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"", "attr.aria-sort": "sortOrder" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"',
+                        '[attr.aria-sort]': 'sortOrder'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["pSortableColumn"]
+            }], pSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+class SortIcon {
+    constructor(dt, cd) {
+        this.dt = dt;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.dt.sortMode === 'single') {
+            this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;
+        }
+        else if (this.dt.sortMode === 'multiple') {
+            let sortMeta = this.dt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+        this.cd.markForCheck();
+    }
+    getMultiSortMetaIndex() {
+        let multiSortMeta = this.dt._multiSortMeta;
+        let index = -1;
+        if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {
+            for (let i = 0; i < multiSortMeta.length; i++) {
+                let meta = multiSortMeta[i];
+                if (meta.field === this.field || meta.field === this.field) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    getBadgeValue() {
+        let index = this.getMultiSortMetaIndex();
+        return this.dt.groupRowsBy && index > -1 ? index : index + 1;
+    }
+    isMultiSorted() {
+        return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, deps: [{ token: Table }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+SortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: SortIcon, selector: "p-sortIcon", inputs: { field: "field" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-sortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+        <span *ngIf="isMultiSorted()" class="p-sortable-column-badge">{{getBadgeValue()}}</span>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }] } });
+class SelectableRow {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowTouchEnd(event);
+        }
+    }
+    onArrowDownKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const nextRow = this.findNextSelectableRow(row);
+        if (nextRow) {
+            nextRow.focus();
+        }
+        event.preventDefault();
+    }
+    onArrowUpKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        const row = event.currentTarget;
+        const prevRow = this.findPrevSelectableRow(row);
+        if (prevRow) {
+            prevRow.focus();
+        }
+        event.preventDefault();
+    }
+    onEnterKeyDown(event) {
+        if (!this.isEnabled()) {
+            return;
+        }
+        this.dt.handleRowClick({
+            originalEvent: event,
+            rowData: this.data,
+            rowIndex: this.index
+        });
+    }
+    onPageDownKeyDown() {
+        if (this.dt.virtualScroll) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    onSpaceKeydown() {
+        if (this.dt.virtualScroll && !this.dt.editingCell) {
+            this.dt.virtualScrollBody.elementRef.nativeElement.focus();
+        }
+    }
+    findNextSelectableRow(row) {
+        let nextRow = row.nextElementSibling;
+        if (nextRow) {
+            if (DomHandler.hasClass(nextRow, 'p-selectable-row'))
+                return nextRow;
+            else
+                return this.findNextSelectableRow(nextRow);
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevSelectableRow(row) {
+        let prevRow = row.previousElementSibling;
+        if (prevRow) {
+            if (DomHandler.hasClass(prevRow, 'p-selectable-row'))
+                return prevRow;
+            else
+                return this.findPrevSelectableRow(prevRow);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRow, selector: "[pSelectableRow]", inputs: { data: ["pSelectableRow", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "touchend": "onTouchEnd($event)", "keydown.arrowdown": "onArrowDownKeyDown($event)", "keydown.arrowup": "onArrowUpKeyDown($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.shift.enter": "onEnterKeyDown($event)", "keydown.meta.enter": "onEnterKeyDown($event)", "keydown.pagedown": "onPageDownKeyDown()", "keydown.pageup": "onPageDownKeyDown()", "keydown.home": "onPageDownKeyDown()", "keydown.end": "onPageDownKeyDown()", "keydown.space": "onSpaceKeydown()" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRow"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }], onArrowDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUpKeyDown: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.enter', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.enter', ['$event']]
+            }], onPageDownKeyDown: [{
+                type: HostListener,
+                args: ['keydown.pagedown']
+            }, {
+                type: HostListener,
+                args: ['keydown.pageup']
+            }, {
+                type: HostListener,
+                args: ['keydown.home']
+            }, {
+                type: HostListener,
+                args: ['keydown.end']
+            }], onSpaceKeydown: [{
+                type: HostListener,
+                args: ['keydown.space']
+            }] } });
+class SelectableRowDblClick {
+    constructor(dt, tableService) {
+        this.dt = dt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.dt.isSelected(this.data);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.dt.isSelected(this.data);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+        }
+    }
+    isEnabled() {
+        return this.pSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+SelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, deps: [{ token: Table }, { token: TableService }], target: i0.ɵɵFactoryTarget.Directive });
+SelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SelectableRowDblClick, selector: "[pSelectableRowDblClick]", inputs: { data: ["pSelectableRowDblClick", "data"], index: ["pSelectableRowIndex", "index"], pSelectableRowDisabled: "pSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-selectable-row": "isEnabled()", "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-selectable-row]': 'isEnabled()',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pSelectableRowDblClick"]
+            }], index: [{
+                type: Input,
+                args: ["pSelectableRowIndex"]
+            }], pSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+class ContextMenuRow {
+    constructor(dt, tableService, el) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {
+                this.selected = this.dt.equals(this.data, data);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.dt.handleRowRightClick({
+                originalEvent: event,
+                rowData: this.data,
+                rowIndex: this.index
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+ContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, deps: [{ token: Table }, { token: TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ContextMenuRow, selector: "[pContextMenuRow]", inputs: { data: ["pContextMenuRow", "data"], index: ["pContextMenuRowIndex", "index"], pContextMenuRowDisabled: "pContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pContextMenuRow"]
+            }], index: [{
+                type: Input,
+                args: ["pContextMenuRowIndex"]
+            }], pContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+class RowToggler {
+    constructor(dt) {
+        this.dt = dt;
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.toggleRow(this.data, event);
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.pRowTogglerDisabled !== true;
+    }
+}
+RowToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Directive });
+RowToggler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: RowToggler, selector: "[pRowToggler]", inputs: { data: ["pRowToggler", "data"], pRowTogglerDisabled: "pRowTogglerDisabled" }, host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: RowToggler, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pRowToggler]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ['pRowToggler']
+            }], pRowTogglerDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class ResizableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.which === 1) {
+            this.dt.onColumnResizeBegin(event);
+            this.bindDocumentEvents();
+        }
+    }
+    onDocumentMouseMove(event) {
+        this.dt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.dt.onColumnResizeEnd();
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.pResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+ResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ResizableColumn, selector: "[pResizableColumn]", inputs: { pResizableColumnDisabled: "pResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pResizableColumnDisabled: [{
+                type: Input
+            }] } });
+class ReorderableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.dt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.dt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.dt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.dt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.pReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+ReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableColumn, selector: "[pReorderableColumn]", inputs: { pReorderableColumnDisabled: "pReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { pReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class EditableColumn {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.dt.selfClick = true;
+            if (this.dt.editingCell) {
+                if (this.dt.editingCell !== this.el.nativeElement) {
+                    if (!this.dt.isEditingCellValid()) {
+                        return;
+                    }
+                    this.closeEditingCell(true, event);
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.dt.onEditInit.emit({ field: this.field, data: this.data, index: this.rowIndex });
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';
+                let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);
+                if (focusableElement) {
+                    focusableElement.focus();
+                }
+            }, 50);
+        });
+        this.overlayEventListener = (e) => {
+            if (this.el && this.el.nativeElement.contains(e.target)) {
+                this.dt.selfClick = true;
+            }
+        };
+        this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);
+    }
+    closeEditingCell(completed, event) {
+        if (completed)
+            this.dt.onEditComplete.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        else
+            this.dt.onEditCancel.emit({ field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex });
+        DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');
+        this.dt.editingCell = null;
+        this.dt.editingCellData = null;
+        this.dt.editingCellField = null;
+        this.dt.unbindDocumentEditListener();
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+    onEnterKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(true, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onEscapeKeyDown(event) {
+        if (this.isEnabled()) {
+            if (this.dt.isEditingCellValid()) {
+                this.closeEditingCell(false, event);
+            }
+            event.preventDefault();
+        }
+    }
+    onShiftKeyDown(event) {
+        if (this.isEnabled()) {
+            if (event.shiftKey)
+                this.moveToPreviousCell(event);
+            else {
+                this.moveToNextCell(event);
+            }
+        }
+    }
+    onArrowDown(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowUp(event) {
+        if (this.isEnabled()) {
+            let currentCell = this.findCell(event.target);
+            if (currentCell) {
+                let cellIndex = DomHandler.index(currentCell);
+                let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);
+                if (targetCell) {
+                    if (this.dt.isEditingCellValid()) {
+                        this.closeEditingCell(true, event);
+                    }
+                    DomHandler.invokeElementMethod(event.target, 'blur');
+                    DomHandler.invokeElementMethod(targetCell, 'click');
+                }
+                event.preventDefault();
+            }
+        }
+    }
+    onArrowLeft(event) {
+        if (this.isEnabled()) {
+            this.moveToPreviousCell(event);
+        }
+    }
+    onArrowRight(event) {
+        if (this.isEnabled()) {
+            this.moveToNextCell(event);
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findPreviousEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        if (currentCell) {
+            let targetCell = this.findNextEditableColumn(currentCell);
+            if (targetCell) {
+                if (this.dt.isEditingCellValid()) {
+                    this.closeEditingCell(true, event);
+                }
+                DomHandler.invokeElementMethod(event.target, 'blur');
+                DomHandler.invokeElementMethod(targetCell, 'click');
+                event.preventDefault();
+            }
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement.previousElementSibling;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement.nextElementSibling;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumnByIndex(cell, index) {
+        let nextRow = cell.parentElement.nextElementSibling;
+        if (nextRow) {
+            let nextCell = nextRow.children[index];
+            if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {
+                return nextCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    findPrevEditableColumnByIndex(cell, index) {
+        let prevRow = cell.parentElement.previousElementSibling;
+        if (prevRow) {
+            let prevCell = prevRow.children[index];
+            if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {
+                return prevCell;
+            }
+            return null;
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.pEditableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.dt.overlaySubscription) {
+            this.dt.overlaySubscription.unsubscribe();
+        }
+    }
+}
+EditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+EditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableColumn, selector: "[pEditableColumn]", inputs: { data: ["pEditableColumn", "data"], field: ["pEditableColumnField", "field"], rowIndex: ["pEditableColumnRowIndex", "rowIndex"], pEditableColumnDisabled: "pEditableColumnDisabled", pFocusCellSelector: "pFocusCellSelector" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKeyDown($event)", "keydown.escape": "onEscapeKeyDown($event)", "keydown.tab": "onShiftKeyDown($event)", "keydown.shift.tab": "onShiftKeyDown($event)", "keydown.meta.tab": "onShiftKeyDown($event)", "keydown.arrowdown": "onArrowDown($event)", "keydown.arrowup": "onArrowUp($event)", "keydown.arrowleft": "onArrowLeft($event)", "keydown.arrowright": "onArrowRight($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["pEditableColumnField"]
+            }], rowIndex: [{
+                type: Input,
+                args: ["pEditableColumnRowIndex"]
+            }], pEditableColumnDisabled: [{
+                type: Input
+            }], pFocusCellSelector: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKeyDown: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }], onEscapeKeyDown: [{
+                type: HostListener,
+                args: ['keydown.escape', ['$event']]
+            }], onShiftKeyDown: [{
+                type: HostListener,
+                args: ['keydown.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.shift.tab', ['$event']]
+            }, {
+                type: HostListener,
+                args: ['keydown.meta.tab', ['$event']]
+            }], onArrowDown: [{
+                type: HostListener,
+                args: ['keydown.arrowdown', ['$event']]
+            }], onArrowUp: [{
+                type: HostListener,
+                args: ['keydown.arrowup', ['$event']]
+            }], onArrowLeft: [{
+                type: HostListener,
+                args: ['keydown.arrowleft', ['$event']]
+            }], onArrowRight: [{
+                type: HostListener,
+                args: ['keydown.arrowright', ['$event']]
+            }] } });
+class EditableRow {
+    constructor(el) {
+        this.el = el;
+    }
+    isEnabled() {
+        return this.pEditableRowDisabled !== true;
+    }
+}
+EditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+EditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: EditableRow, selector: "[pEditableRow]", inputs: { data: ["pEditableRow", "data"], pEditableRowDisabled: "pEditableRowDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: EditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["pEditableRow"]
+            }], pEditableRowDisabled: [{
+                type: Input
+            }] } });
+class InitEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.initRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+InitEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+InitEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: InitEditableRow, selector: "[pInitEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: InitEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pInitEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class SaveEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);
+        event.preventDefault();
+    }
+}
+SaveEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+SaveEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: SaveEditableRow, selector: "[pSaveEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: SaveEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pSaveEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class CancelEditableRow {
+    constructor(dt, editableRow) {
+        this.dt = dt;
+        this.editableRow = editableRow;
+    }
+    onClick(event) {
+        this.dt.cancelRowEdit(this.editableRow.data);
+        event.preventDefault();
+    }
+}
+CancelEditableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, deps: [{ token: Table }, { token: EditableRow }], target: i0.ɵɵFactoryTarget.Directive });
+CancelEditableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CancelEditableRow, selector: "[pCancelEditableRow]", host: { listeners: { "click": "onClick($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CancelEditableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pCancelEditableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableRow }]; }, propDecorators: { onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }] } });
+class CellEditor {
+    constructor(dt, editableColumn, editableRow) {
+        this.dt = dt;
+        this.editableColumn = editableColumn;
+        this.editableRow = editableRow;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get editing() {
+        return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||
+            (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));
+    }
+}
+CellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, deps: [{ token: Table }, { token: EditableColumn, optional: true }, { token: EditableRow, optional: true }], target: i0.ɵɵFactoryTarget.Component });
+CellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: CellEditor, selector: "p-cellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-cellEditor',
+                    template: `
+        <ng-container *ngIf="editing">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!editing">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: EditableColumn, decorators: [{
+                    type: Optional
+                }] }, { type: EditableRow, decorators: [{
+                    type: Optional
+                }] }]; }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TableRadioButton {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithRadio({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableRadioButton, selector: "p-tableRadioButton", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableRadioButton, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableRadioButton',
+                    template: `
+        <div class="p-radiobutton p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="radio" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="disabled" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}" role="radio" [attr.aria-checked]="checked">
+                <div class="p-radiobutton-icon"></div>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TableCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.dt.isSelected(this.value);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.dt.isSelected(this.value);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.dt.toggleRowWithCheckbox({
+                originalEvent: event,
+                rowIndex: this.index
+            }, this.value);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TableCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableCheckbox, selector: "p-tableCheckbox", inputs: { disabled: "disabled", value: "value", index: "index", inputId: "inputId", name: "name", required: "required", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="disabled"
+                [attr.required]="required" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box p-component':true,
+                'p-highlight':checked, 'p-disabled':disabled}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], required: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TableHeaderCheckbox {
+    constructor(dt, tableService, cd) {
+        this.dt = dt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            if (this.dt.value && this.dt.value.length > 0) {
+                this.dt.toggleRowsWithCheckbox(event, !this.checked);
+            }
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    isDisabled() {
+        return this.disabled || !this.dt.value || !this.dt.value.length;
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        if (this.dt.filteredValue && !this.dt.lazy) {
+            const val = this.dt.filteredValue;
+            return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());
+        }
+        else {
+            const val = this.dt.value;
+            const length = this.dt.lazy ? this.dt._totalRecords : val ? val.length : 0;
+            return (val && length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === length);
+        }
+    }
+    isAllFilteredValuesChecked() {
+        if (!this.dt.filteredValue) {
+            return false;
+        }
+        else {
+            for (let rowData of this.dt.filteredValue) {
+                if (!this.dt.isSelected(rowData)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+}
+TableHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, deps: [{ token: Table }, { token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TableHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: { disabled: "disabled", inputId: "inputId", name: "name", ariaLabel: "ariaLabel" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [attr.id]="inputId" [attr.name]="name" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()"
+                [disabled]="isDisabled()" [attr.aria-label]="ariaLabel">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': isDisabled()}" role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }], disabled: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }] } });
+class ReorderableRowHandle {
+    constructor(el) {
+        this.el = el;
+    }
+    ngAfterViewInit() {
+        DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');
+    }
+}
+ReorderableRowHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRowHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: { index: ["pReorderableRowHandle", "index"] }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRowHandle, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRowHandle]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRowHandle"]
+            }] } });
+class ReorderableRow {
+    constructor(dt, el, zone) {
+        this.dt = dt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.el.nativeElement.droppable = true;
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragEndListener = this.onDragEnd.bind(this);
+            this.el.nativeElement.addEventListener('dragend', this.dragEndListener);
+            this.dragOverListener = this.onDragOver.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragStartListener) {
+            document.removeEventListener('dragstart', this.dragStartListener);
+            this.dragStartListener = null;
+        }
+        if (this.dragEndListener) {
+            document.removeEventListener('dragend', this.dragEndListener);
+            this.dragEndListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))
+            this.el.nativeElement.draggable = true;
+        else
+            this.el.nativeElement.draggable = false;
+    }
+    onDragStart(event) {
+        this.dt.onRowDragStart(event, this.index);
+    }
+    onDragEnd(event) {
+        this.dt.onRowDragEnd(event);
+        this.el.nativeElement.draggable = false;
+    }
+    onDragOver(event) {
+        this.dt.onRowDragOver(event, this.index, this.el.nativeElement);
+        event.preventDefault();
+    }
+    onDragLeave(event) {
+        this.dt.onRowDragLeave(event, this.el.nativeElement);
+    }
+    isEnabled() {
+        return this.pReorderableRowDisabled !== true;
+    }
+    onDrop(event) {
+        if (this.isEnabled() && this.dt.rowDragging) {
+            this.dt.onRowDrop(event, this.el.nativeElement);
+        }
+        event.preventDefault();
+    }
+}
+ReorderableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, deps: [{ token: Table }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+ReorderableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: ReorderableRow, selector: "[pReorderableRow]", inputs: { index: ["pReorderableRow", "index"], pReorderableRowDisabled: "pReorderableRowDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ReorderableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pReorderableRow]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { index: [{
+                type: Input,
+                args: ["pReorderableRow"]
+            }], pReorderableRowDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class ColumnFilterFormElement {
+    constructor(dt) {
+        this.dt = dt;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        this.filterCallback = value => {
+            this.filterConstraint.value = value;
+            this.dt._filter();
+        };
+    }
+    onModelChange(value) {
+        this.filterConstraint.value = value;
+        if (this.type === 'boolean' || value === '') {
+            this.dt._filter();
+        }
+    }
+    onTextInputEnterKeyDown(event) {
+        this.dt._filter();
+        event.preventDefault();
+    }
+    onNumericInputKeyDown(event) {
+        if (event.key === 'Enter') {
+            this.dt._filter();
+            event.preventDefault();
+        }
+    }
+}
+ColumnFilterFormElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, deps: [{ token: Table }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilterFormElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: { field: "field", type: "type", filterConstraint: "filterConstraint", filterTemplate: "filterTemplate", placeholder: "placeholder", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `, isInline: true, components: [{ type: i5.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i6.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { type: i7.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "numberOfMonths", "view", "touchUI", "timeSeparator", "focusTrap", "firstDayOfWeek", "showTransitionOptions", "hideTransitionOptions", "tabindex", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.InputText, selector: "[pInputText]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilterFormElement, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilterFormElement',
+                    template: `
+        <ng-container *ngIf="filterTemplate; else builtInElement">
+            <ng-container *ngTemplateOutlet="filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}"></ng-container>
+        </ng-container>
+        <ng-template #builtInElement>
+            <ng-container [ngSwitch]="type">
+                <input *ngSwitchCase="'text'" type="text" pInputText [value]="filterConstraint?.value" (input)="onModelChange($event.target.value)"
+                    (keydown.enter)="onTextInputEnterKeyDown($event)" [attr.placeholder]="placeholder">
+                <p-inputNumber *ngSwitchCase="'numeric'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)" (onKeyDown)="onNumericInputKeyDown($event)" [showButtons]="true" [attr.placeholder]="placeholder"
+                    [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix" [placeholder]="placeholder"
+                    [mode]="currency ? 'currency' : 'decimal'" [locale]="locale" [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-inputNumber>
+                <p-triStateCheckbox *ngSwitchCase="'boolean'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-triStateCheckbox>
+                <p-calendar *ngSwitchCase="'date'" [ngModel]="filterConstraint?.value" (ngModelChange)="onModelChange($event)"></p-calendar>
+            </ng-container>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: Table }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], filterConstraint: [{
+                type: Input
+            }], filterTemplate: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }] } });
+class ColumnFilter {
+    constructor(el, dt, renderer, config, overlayService) {
+        this.el = el;
+        this.dt = dt;
+        this.renderer = renderer;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.type = 'text';
+        this.display = 'row';
+        this.showMenu = true;
+        this.operator = FilterOperator.AND;
+        this.showOperator = true;
+        this.showClearButton = true;
+        this.showApplyButton = true;
+        this.showMatchModes = true;
+        this.showAddButton = true;
+        this.hideOnClear = false;
+        this.maxConstraints = 2;
+        this.useGrouping = true;
+    }
+    ngOnInit() {
+        if (!this.dt.filters[this.field]) {
+            this.initFieldFilterConstraint();
+        }
+        this.translationSubscription = this.config.translationObserver.subscribe(() => {
+            this.generateMatchModeOptions();
+            this.generateOperatorOptions();
+        });
+        this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {
+            this.clearFilter();
+        });
+        this.generateMatchModeOptions();
+        this.generateOperatorOptions();
+    }
+    generateMatchModeOptions() {
+        this.matchModes = this.matchModeOptions ||
+            this.config.filterMatchModeOptions[this.type]?.map(key => {
+                return { label: this.config.getTranslation(key), value: key };
+            });
+    }
+    generateOperatorOptions() {
+        this.operatorOptions = [
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND },
+            { label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR }
+        ];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'filter':
+                    this.filterTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.filterTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    initFieldFilterConstraint() {
+        let defaultMatchMode = this.getDefaultMatchMode();
+        this.dt.filters[this.field] = this.display == 'row' ? { value: null, matchMode: defaultMatchMode } : [{ value: null, matchMode: defaultMatchMode, operator: this.operator }];
+    }
+    onMenuMatchModeChange(value, filterMeta) {
+        filterMeta.matchMode = value;
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    onRowMatchModeChange(matchMode) {
+        this.dt.filters[this.field].matchMode = matchMode;
+        this.dt._filter();
+        this.hide();
+    }
+    onRowMatchModeKeyDown(event) {
+        let item = event.target;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(item);
+                if (nextItem) {
+                    item.removeAttribute('tabindex');
+                    nextItem.tabIndex = '0';
+                    nextItem.focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(item);
+                if (prevItem) {
+                    item.removeAttribute('tabindex');
+                    prevItem.tabIndex = '0';
+                    prevItem.focus();
+                }
+                event.preventDefault();
+                break;
+        }
+    }
+    onRowClearItemClick() {
+        this.clearFilter();
+        this.hide();
+    }
+    isRowMatchModeSelected(matchMode) {
+        return this.dt.filters[this.field].matchMode === matchMode;
+    }
+    addConstraint() {
+        this.dt.filters[this.field].push({ value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator() });
+        this.dt._filter();
+    }
+    removeConstraint(filterMeta) {
+        this.dt.filters[this.field] = this.dt.filters[this.field].filter(meta => meta !== filterMeta);
+        this.dt._filter();
+    }
+    onOperatorChange(value) {
+        this.dt.filters[this.field].forEach(filterMeta => {
+            filterMeta.operator = value;
+            this.operator = value;
+        });
+        if (!this.showApplyButton) {
+            this.dt._filter();
+        }
+    }
+    toggleMenu() {
+        this.overlayVisible = !this.overlayVisible;
+    }
+    onToggleButtonKeyDown(event) {
+        switch (event.key) {
+            case 'Escape':
+            case 'Tab':
+                this.overlayVisible = false;
+                break;
+            case 'ArrowDown':
+                if (this.overlayVisible) {
+                    let focusable = DomHandler.getFocusableElements(this.overlay);
+                    if (focusable) {
+                        focusable[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                else if (event.altKey) {
+                    this.overlayVisible = true;
+                    event.preventDefault();
+                }
+                break;
+        }
+    }
+    onEscape() {
+        this.overlayVisible = false;
+        this.icon.nativeElement.focus();
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return item.parentElement.firstElementChild;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return item.parentElement.lastElementChild;
+    }
+    onContentClick() {
+        this.selfClick = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlay = event.element;
+                document.body.appendChild(this.overlay);
+                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);
+                DomHandler.absolutePosition(this.overlay, this.icon.nativeElement);
+                this.bindDocumentClickListener();
+                this.bindDocumentResizeListener();
+                this.bindScrollListener();
+                this.overlayEventListener = (e) => {
+                    if (this.overlay && this.overlay.contains(e.target)) {
+                        this.selfClick = true;
+                    }
+                };
+                this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);
+                break;
+            case 'void':
+                this.onOverlayHide();
+                if (this.overlaySubscription) {
+                    this.overlaySubscription.unsubscribe();
+                }
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    getDefaultMatchMode() {
+        if (this.matchMode) {
+            return this.matchMode;
+        }
+        else {
+            if (this.type === 'text')
+                return FilterMatchMode.STARTS_WITH;
+            else if (this.type === 'numeric')
+                return FilterMatchMode.EQUALS;
+            else if (this.type === 'date')
+                return FilterMatchMode.DATE_IS;
+            else
+                return FilterMatchMode.CONTAINS;
+        }
+    }
+    getDefaultOperator() {
+        return this.dt.filters ? this.dt.filters[this.field][0].operator : this.operator;
+    }
+    hasRowFilter() {
+        return this.dt.filters[this.field] && !this.dt.isFilterBlank(this.dt.filters[this.field].value);
+    }
+    get fieldConstraints() {
+        return this.dt.filters ? this.dt.filters[this.field] : null;
+    }
+    get showRemoveIcon() {
+        return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;
+    }
+    get showMenuButton() {
+        return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);
+    }
+    get isShowOperator() {
+        return this.showOperator && this.type !== 'boolean';
+    }
+    get isShowAddConstraint() {
+        return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);
+    }
+    get applyButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.APPLY);
+    }
+    get clearButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.CLEAR);
+    }
+    get addRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.ADD_RULE);
+    }
+    get removeRuleButtonLabel() {
+        return this.config.getTranslation(TranslationKeys.REMOVE_RULE);
+    }
+    get noFilterLabel() {
+        return this.config.getTranslation(TranslationKeys.NO_FILTER);
+    }
+    hasFilter() {
+        let fieldFilter = this.dt.filters[this.field];
+        if (fieldFilter) {
+            if (Array.isArray(fieldFilter))
+                return !this.dt.isFilterBlank(fieldFilter[0].value);
+            else
+                return !this.dt.isFilterBlank(fieldFilter.value);
+        }
+        return false;
+    }
+    isOutsideClicked(event) {
+        return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)
+            || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)
+            || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')
+            || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {
+                if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {
+                    this.hide();
+                }
+                this.selfClick = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+            this.selfClick = false;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = () => this.hide();
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    hide() {
+        this.overlayVisible = false;
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.overlay = null;
+    }
+    clearFilter() {
+        this.initFieldFilterConstraint();
+        this.dt._filter();
+        if (this.hideOnClear)
+            this.hide();
+    }
+    applyFilter() {
+        this.dt._filter();
+        this.hide();
+    }
+    ngOnDestroy() {
+        if (this.overlay) {
+            this.el.nativeElement.appendChild(this.overlay);
+            ZIndexUtils.clear(this.overlay);
+            this.onOverlayHide();
+        }
+        if (this.translationSubscription) {
+            this.translationSubscription.unsubscribe();
+        }
+        if (this.resetSubscription) {
+            this.resetSubscription.unsubscribe();
+        }
+        if (this.overlaySubscription) {
+            this.overlaySubscription.unsubscribe();
+        }
+    }
+}
+ColumnFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, deps: [{ token: i0.ElementRef }, { token: Table }, { token: i0.Renderer2 }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+ColumnFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ColumnFilter, selector: "p-columnFilter", inputs: { field: "field", type: "type", display: "display", showMenu: "showMenu", matchMode: "matchMode", operator: "operator", showOperator: "showOperator", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showMatchModes: "showMatchModes", showAddButton: "showAddButton", hideOnClear: "hideOnClear", placeholder: "placeholder", matchModeOptions: "matchModeOptions", maxConstraints: "maxConstraints", minFractionDigits: "minFractionDigits", maxFractionDigits: "maxFractionDigits", prefix: "prefix", suffix: "suffix", locale: "locale", localeMatcher: "localeMatcher", currency: "currency", currencyDisplay: "currencyDisplay", useGrouping: "useGrouping" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "icon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: ColumnFilterFormElement, selector: "p-columnFilterFormElement", inputs: ["field", "type", "filterConstraint", "filterTemplate", "placeholder", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+            ]),
+            transition(':leave', [
+                animate('.1s linear', style({ opacity: 0 }))
+            ])
+        ])
+    ], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ColumnFilter, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-columnFilter',
+                    template: `
+        <div class="p-column-filter" [ngClass]="{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}">
+            <p-columnFilterFormElement *ngIf="display === 'row'" class="p-fluid" [type]="type" [field]="field" [filterConstraint]="dt.filters[field]" [filterTemplate]="filterTemplate" [placeholder]="placeholder" [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                                    [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+            <button #icon *ngIf="showMenuButton" type="button" class="p-column-filter-menu-button p-link" aria-haspopup="true" [attr.aria-expanded]="overlayVisible"
+                [ngClass]="{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}"
+                (click)="toggleMenu()" (keydown)="onToggleButtonKeyDown($event)"><span class="pi pi-filter-icon pi-filter"></span></button>
+            <button #icon *ngIf="showClearButton && display === 'row'" [ngClass]="{'p-hidden-space': !hasRowFilter()}" type="button" class="p-column-filter-clear-button p-link" (click)="clearFilter()"><span class="pi pi-filter-slash"></span></button>
+            <div *ngIf="showMenu && overlayVisible" [ngClass]="{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}" (click)="onContentClick()"
+                [@overlayAnimation]="'visible'" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" (keydown.escape)="onEscape()">
+                <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: field}"></ng-container>
+                <ul *ngIf="display === 'row'; else menu" class="p-column-filter-row-items">
+                    <li class="p-column-filter-row-item" *ngFor="let matchMode of matchModes; let i = index;" (click)="onRowMatchModeChange(matchMode.value)" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="this.onRowMatchModeChange(matchMode.value)"
+                        [ngClass]="{'p-highlight': isRowMatchModeSelected(matchMode.value)}" [attr.tabindex]="i === 0 ? '0' : null">{{matchMode.label}}</li>
+                    <li class="p-column-filter-separator"></li>
+                    <li class="p-column-filter-row-item" (click)="onRowClearItemClick()" (keydown)="onRowMatchModeKeyDown($event)" (keydown.enter)="onRowClearItemClick()">{{noFilterLabel}}</li>
+                </ul>
+                <ng-template #menu>
+                    <div class="p-column-filter-operator" *ngIf="isShowOperator">
+                        <p-dropdown [options]="operatorOptions" [ngModel]="operator" (ngModelChange)="onOperatorChange($event)" styleClass="p-column-filter-operator-dropdown"></p-dropdown>
+                    </div>
+                    <div class="p-column-filter-constraints">
+                        <div *ngFor="let fieldConstraint of fieldConstraints; let i = index" class="p-column-filter-constraint">
+                            <p-dropdown  *ngIf="showMatchModes && matchModes" [options]="matchModes" [ngModel]="fieldConstraint.matchMode" (ngModelChange)="onMenuMatchModeChange($event, fieldConstraint)" styleClass="p-column-filter-matchmode-dropdown"></p-dropdown>
+                            <p-columnFilterFormElement [type]="type" [field]="field" [filterConstraint]="fieldConstraint" [filterTemplate]="filterTemplate" [placeholder]="placeholder"
+                            [minFractionDigits]="minFractionDigits" [maxFractionDigits]="maxFractionDigits" [prefix]="prefix" [suffix]="suffix"
+                            [locale]="locale"  [localeMatcher]="localeMatcher" [currency]="currency" [currencyDisplay]="currencyDisplay" [useGrouping]="useGrouping"></p-columnFilterFormElement>
+                            <div>
+                                <button *ngIf="showRemoveIcon" type="button" pButton icon="pi pi-trash" class="p-column-filter-remove-button p-button-text p-button-danger p-button-sm" (click)="removeConstraint(fieldConstraint)" pRipple [label]="removeRuleButtonLabel"></button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="p-column-filter-add-rule" *ngIf="isShowAddConstraint">
+                        <button type="button" pButton [label]="addRuleButtonLabel" icon="pi pi-plus" class="p-column-filter-add-button p-button-text p-button-sm" (click)="addConstraint()" pRipple></button>
+                    </div>
+                    <div class="p-column-filter-buttonbar">
+                        <button *ngIf="showClearButton" type="button" pButton class="p-button-outlined" (click)="clearFilter()" [label]="clearButtonLabel" pRipple></button>
+                        <button *ngIf="showApplyButton" type="button" pButton (click)="applyFilter()" [label]="applyButtonLabel" pRipple></button>
+                    </div>
+                </ng-template>
+                <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: field}"></ng-container>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('.12s cubic-bezier(0, 0, 0.2, 1)')
+                            ]),
+                            transition(':leave', [
+                                animate('.1s linear', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Table }, { type: i0.Renderer2 }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { field: [{
+                type: Input
+            }], type: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], showMenu: [{
+                type: Input
+            }], matchMode: [{
+                type: Input
+            }], operator: [{
+                type: Input
+            }], showOperator: [{
+                type: Input
+            }], showClearButton: [{
+                type: Input
+            }], showApplyButton: [{
+                type: Input
+            }], showMatchModes: [{
+                type: Input
+            }], showAddButton: [{
+                type: Input
+            }], hideOnClear: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], matchModeOptions: [{
+                type: Input
+            }], maxConstraints: [{
+                type: Input
+            }], minFractionDigits: [{
+                type: Input
+            }], maxFractionDigits: [{
+                type: Input
+            }], prefix: [{
+                type: Input
+            }], suffix: [{
+                type: Input
+            }], locale: [{
+                type: Input
+            }], localeMatcher: [{
+                type: Input
+            }], currency: [{
+                type: Input
+            }], currencyDisplay: [{
+                type: Input
+            }], useGrouping: [{
+                type: Input
+            }], icon: [{
+                type: ViewChild,
+                args: ['icon']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TableModule {
+}
+TableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement], imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon, TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter] });
+TableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, imports: [[CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule], SharedModule,
+        ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, InputTextModule, DropdownModule, ScrollingModule, FormsModule, ButtonModule, SelectButtonModule, CalendarModule, InputNumberModule, TriStateCheckboxModule],
+                    exports: [Table, SharedModule, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ScrollingModule, ColumnFilter],
+                    declarations: [Table, SortableColumn, FrozenColumn, RowGroupHeader, SelectableRow, RowToggler, ContextMenuRow, ResizableColumn, ReorderableColumn, EditableColumn, CellEditor, TableBody, SortIcon,
+                        TableRadioButton, TableCheckbox, TableHeaderCheckbox, ReorderableRowHandle, ReorderableRow, SelectableRowDblClick, EditableRow, InitEditableRow, SaveEditableRow, CancelEditableRow, ColumnFilter, ColumnFilterFormElement]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { CancelEditableRow, CellEditor, ColumnFilter, ColumnFilterFormElement, ContextMenuRow, EditableColumn, EditableRow, FrozenColumn, InitEditableRow, ReorderableColumn, ReorderableRow, ReorderableRowHandle, ResizableColumn, RowGroupHeader, RowToggler, SaveEditableRow, SelectableRow, SelectableRowDblClick, SortIcon, SortableColumn, Table, TableBody, TableCheckbox, TableHeaderCheckbox, TableModule, TableRadioButton, TableService };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-table.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-table.mjs","sources":["../../src/app/components/table/table.ts","../../src/app/components/table/primeng-table.ts"],"sourcesContent":["import { NgModule, Component, HostListener, OnInit, OnDestroy, AfterViewInit, Directive, Optional, AfterContentInit,\n    Input, Output, EventEmitter, ElementRef, ContentChildren, TemplateRef, QueryList, ViewChild, NgZone, ChangeDetectorRef, OnChanges, SimpleChanges, ChangeDetectionStrategy, Query, ViewEncapsulation, Renderer2} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PrimeTemplate, SharedModule, FilterMatchMode, FilterOperator, SelectItem, PrimeNGConfig, TranslationKeys, FilterService, OverlayService } from 'primeng/api';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport { SortMeta } from 'primeng/api';\nimport { TableState } from 'primeng/api';\nimport { FilterMetadata } from 'primeng/api';\nimport { Injectable } from '@angular/core';\nimport { BlockableUI } from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {trigger,style,transition,animate,AnimationEvent} from '@angular/animations';\n\n@Injectable()\nexport class TableService {\n\n    private sortSource = new Subject<SortMeta|SortMeta[]>();\n    private selectionSource = new Subject();\n    private contextMenuSource = new Subject<any>();\n    private valueSource = new Subject<any>();\n    private totalRecordsSource = new Subject<any>();\n    private columnsSource = new Subject();\n    private resetSource = new Subject();\n\n    sortSource$ = this.sortSource.asObservable();\n    selectionSource$ = this.selectionSource.asObservable();\n    contextMenuSource$ = this.contextMenuSource.asObservable();\n    valueSource$ = this.valueSource.asObservable();\n    totalRecordsSource$ = this.totalRecordsSource.asObservable();\n    columnsSource$ = this.columnsSource.asObservable();\n    resetSource$ = this.resetSource.asObservable();\n\n    onSort(sortMeta: SortMeta|SortMeta[]) {\n        this.sortSource.next(sortMeta);\n    }\n\n    onSelectionChange() {\n        this.selectionSource.next(null);\n    }\n\n    onResetChange() {\n        this.resetSource.next(null);\n    }\n\n    onContextMenu(data: any) {\n        this.contextMenuSource.next(data);\n    }\n\n    onValueChange(value: any) {\n        this.valueSource.next(value);\n    }\n\n    onTotalRecordsChange(value: number) {\n        this.totalRecordsSource.next(value);\n    }\n\n    onColumnsChange(columns: any[]) {\n        this.columnsSource.next(columns);\n    }\n}\n\n@Component({\n    selector: 'p-table',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\"\n            [ngClass]=\"{'p-datatable p-component': true,\n                'p-datatable-hoverable-rows': (rowHover||selectionMode),\n                'p-datatable-auto-layout': autoLayout,\n                'p-datatable-resizable': resizableColumns,\n                'p-datatable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),\n                'p-datatable-scrollable': scrollable,\n                'p-datatable-scrollable-vertical': scrollable && scrollDirection === 'vertical',\n                'p-datatable-scrollable-horizontal': scrollable && scrollDirection === 'horizontal',\n                'p-datatable-scrollable-both': scrollable && scrollDirection === 'both',\n                'p-datatable-flex-scrollable': (scrollable && scrollHeight === 'flex'),\n                'p-datatable-responsive-stack': responsiveLayout === 'stack',\n                'p-datatable-responsive-scroll': responsiveLayout === 'scroll',\n                'p-datatable-responsive': responsive,\n                'p-datatable-grouped-header': headerGroupedTemplate != null,\n                'p-datatable-grouped-footer': footerGroupedTemplate != null}\" [attr.id]=\"id\">\n            <div class=\"p-datatable-loading-overlay p-component-overlay\" *ngIf=\"loading && showLoader\">\n                <i [class]=\"'p-datatable-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <div *ngIf=\"captionTemplate\" class=\"p-datatable-header\">\n                <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-top\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showJumpToPageInput]=\"showJumpToPageInput\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div #wrapper class=\"p-datatable-wrapper\" [ngStyle]=\"{height: scrollHeight}\">\n                <table #table *ngIf=\"!virtualScroll\" role=\"table\" class=\"p-datatable-table\" [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\" [attr.id]=\"id+'-table'\">\n                    <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-datatable-thead\">\n                        <ng-container *ngTemplateOutlet=\"headerGroupedTemplate||headerTemplate; context: {$implicit: columns}\"></ng-container>\n                    </thead>\n                    <tbody class=\"p-datatable-tbody p-datatable-frozen-tbody\" *ngIf=\"frozenValue||frozenBodyTemplate\" [value]=\"frozenValue\" [frozenRows]=\"true\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"frozenBodyTemplate\" [frozen]=\"true\"></tbody>\n                    <tbody class=\"p-datatable-tbody\" [value]=\"dataToRender\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                    <tfoot *ngIf=\"footerGroupedTemplate||footerTemplate\" class=\"p-datatable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"footerGroupedTemplate||footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n                <cdk-virtual-scroll-viewport *ngIf=\"virtualScroll\" [itemSize]=\"virtualRowHeight\" tabindex=\"0\" [style.height]=\"scrollHeight !== 'flex' ? scrollHeight : undefined\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\" (scrolledIndexChange)=\"onScrollIndexChange($event)\" class=\"p-datatable-virtual-scrollable-body\">\n                    <table #table role=\"table\" class=\"p-datatable-table\" [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\" [attr.id]=\"id+'-table'\">\n                        <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                        <thead #tableHeader class=\"p-datatable-thead\">\n                            <ng-container *ngTemplateOutlet=\"headerGroupedTemplate||headerTemplate; context: {$implicit: columns}\"></ng-container>\n                        </thead>\n                        <tbody class=\"p-datatable-tbody p-datatable-frozen-tbody\" *ngIf=\"frozenValue||frozenBodyTemplate\" [value]=\"frozenValue\" [frozenRows]=\"true\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\" [frozen]=\"true\"></tbody>\n                        <tbody class=\"p-datatable-tbody\" [value]=\"dataToRender\" [pTableBody]=\"columns\" [pTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                        <tfoot *ngIf=\"footerGroupedTemplate||footerTemplate\" class=\"p-datatable-tfoot\">\n                            <ng-container *ngTemplateOutlet=\"footerGroupedTemplate||footerTemplate; context {$implicit: columns}\"></ng-container>\n                        </tfoot>\n                    </table>\n                </cdk-virtual-scroll-viewport>\n            </div>\n\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-bottom\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\" [dropdownScrollHeight]=\"paginatorDropdownScrollHeight\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showJumpToPageInput]=\"showJumpToPageInput\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div *ngIf=\"summaryTemplate\" class=\"p-datatable-footer\">\n                <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n            </div>\n\n            <div #resizeHelper class=\"p-column-resizer-helper\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n            <span #reorderIndicatorUp class=\"pi pi-arrow-down p-datatable-reorder-indicator-up\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n            <span #reorderIndicatorDown class=\"pi pi-arrow-up p-datatable-reorder-indicator-down\" style=\"display:none\" *ngIf=\"reorderableColumns\"></span>\n        </div>\n    `,\n    providers: [TableService],\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./table.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Table implements OnInit, AfterViewInit, AfterContentInit, BlockableUI, OnChanges {\n\n    @Input() frozenColumns: any[];\n\n    @Input() frozenValue: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tableStyle: any;\n\n    @Input() tableStyleClass: string;\n\n    @Input() paginator: boolean;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() paginatorDropdownScrollHeight: string = '200px';\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showJumpToPageInput: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() defaultSortOrder: number = 1;\n\n    @Input() sortMode: string = 'single';\n\n    @Input() resetPageOnSort: boolean = true;\n\n    @Input() selectionMode: string;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelection: any;\n\n    @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelectionMode: string = \"separate\";\n\n    @Input() dataKey: string;\n\n    @Input() metaKeySelection: boolean;\n\n    @Input() rowTrackBy: Function = (index: number, item: any) => item;\n\n    @Input() lazy: boolean = false;\n\n    @Input() lazyLoadOnInit: boolean = true;\n\n    @Input() compareSelectionBy: string = 'deepEquals';\n\n    @Input() csvSeparator: string = ',';\n\n    @Input() exportFilename: string = 'download';\n\n    @Input() filters: { [s: string]: FilterMetadata | FilterMetadata[] } = {};\n\n    @Input() globalFilterFields: string[];\n\n    @Input() filterDelay: number = 300;\n\n    @Input() filterLocale: string;\n\n    @Input() expandedRowKeys: { [s: string]: boolean; } = {};\n\n    @Input() editingRowKeys: { [s: string]: boolean; } = {};\n\n    @Input() rowExpandMode: string = 'multiple';\n\n    @Input() scrollable: boolean;\n\n    @Input() scrollDirection: string = \"vertical\";\n\n    @Input() rowGroupMode: string;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualScrollDelay: number = 250;\n\n    @Input() virtualRowHeight: number = 28;\n\n    @Input() frozenWidth: string;\n\n    @Input() responsive: boolean;\n\n    @Input() contextMenu: any;\n\n    @Input() resizableColumns: boolean;\n\n    @Input() columnResizeMode: string = 'fit';\n\n    @Input() reorderableColumns: boolean;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() showLoader: boolean = true;\n\n    @Input() rowHover: boolean;\n\n    @Input() customSort: boolean;\n\n    @Input() showInitialSortBadge: boolean = true;\n\n    @Input() autoLayout: boolean;\n\n    @Input() exportFunction;\n\n    @Input() stateKey: string;\n\n    @Input() stateStorage: string = 'session';\n\n    @Input() editMode: string = 'cell';\n\n    @Input() groupRowsBy: any;\n\n    @Input() groupRowsByOrder: number = 1;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() responsiveLayout: string = 'stack';\n\n    @Input() breakpoint: string = '960px';\n\n    @Output() onRowSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColResize: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onRowReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditCancel: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHeaderCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() sortFunction: EventEmitter<any> = new EventEmitter();\n\n    @Output() firstChange: EventEmitter<number> = new EventEmitter();\n\n    @Output() rowsChange: EventEmitter<number> = new EventEmitter();\n\n    @Output() onStateSave: EventEmitter<any> = new EventEmitter();\n\n    @Output() onStateRestore: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('resizeHelper') resizeHelperViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: ElementRef;\n\n    @ViewChild('wrapper') wrapperViewChild: ElementRef;\n\n    @ViewChild('table') tableViewChild: ElementRef;\n\n    @ViewChild('tableHeader') tableHeaderViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    _value: any[] = [];\n\n    _columns: any[];\n\n    _totalRecords: number = 0;\n\n    _first: number = 0;\n\n    _rows: number;\n\n    filteredValue: any[];\n\n    headerTemplate: TemplateRef<any>;\n\n    headerGroupedTemplate: TemplateRef<any>;\n\n    bodyTemplate: TemplateRef<any>;\n\n    loadingBodyTemplate: TemplateRef<any>;\n\n    captionTemplate: TemplateRef<any>;\n\n    frozenRowsTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    footerGroupedTemplate: TemplateRef<any>;\n\n    summaryTemplate: TemplateRef<any>;\n\n    colGroupTemplate: TemplateRef<any>;\n\n    expandedRowTemplate: TemplateRef<any>;\n\n    groupHeaderTemplate: TemplateRef<any>;\n\n    groupFooterTemplate: TemplateRef<any>;\n\n    rowspanTemplate: TemplateRef<any>;\n\n    frozenExpandedRowTemplate: TemplateRef<any>;\n\n    frozenHeaderTemplate: TemplateRef<any>;\n\n    frozenBodyTemplate: TemplateRef<any>;\n\n    frozenFooterTemplate: TemplateRef<any>;\n\n    frozenColGroupTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    selectionKeys: any = {};\n\n    lastResizerHelperX: number;\n\n    reorderIconWidth: number;\n\n    reorderIconHeight: number;\n\n    draggedColumn: any;\n\n    draggedRowIndex: number;\n\n    droppedRowIndex: number;\n\n    rowDragging: boolean;\n\n    dropPosition: number;\n\n    editingCell: Element;\n\n    editingCellData: any;\n\n    editingCellField: any;\n\n    editingCellRowIndex: number;\n\n    selfClick: boolean;\n\n    documentEditListener: any;\n\n    _multiSortMeta: SortMeta[];\n\n    _sortField: string;\n\n    _sortOrder: number = 1;\n\n    preventSelectionSetterPropagation: boolean;\n\n    _selection: any;\n\n    anchorRowIndex: number;\n\n    rangeRowIndex: number;\n\n    filterTimeout: any;\n\n    initialized: boolean;\n\n    rowTouched: boolean;\n\n    restoringSort: boolean;\n\n    restoringFilter: boolean;\n\n    stateRestored: boolean;\n\n    columnOrderStateRestored: boolean;\n\n    columnWidthsState: string;\n\n    tableWidthState: string;\n\n    overlaySubscription: Subscription;\n\n    virtualScrollSubscription: Subscription;\n\n    resizeColumnElement;\n\n    columnResizing: boolean = false;\n\n    rowGroupHeaderStyleObject: any = {};\n\n    id: string = UniqueComponentId();\n\n    styleElement: any;\n\n    responsiveStyleElement: any;\n\n    constructor(public el: ElementRef, public zone: NgZone, public tableService: TableService, public cd: ChangeDetectorRef, public filterService: FilterService, public overlayService: OverlayService) {}\n\n    ngOnInit() {\n        if (this.lazy && this.lazyLoadOnInit) {\n            if (!this.virtualScroll) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n\n            if (this.restoringFilter) {\n                this.restoringFilter = false;\n            }\n        }\n\n        if (this.responsiveLayout === 'stack' && !this.scrollable) {\n            this.createResponsiveStyle();\n        }\n\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'caption':\n                    this.captionTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'headergrouped':\n                    this.headerGroupedTemplate = item.template;\n                break;\n\n                case 'body':\n                    this.bodyTemplate = item.template;\n                break;\n\n                case 'loadingbody':\n                    this.loadingBodyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'footergrouped':\n                    this.footerGroupedTemplate = item.template;\n                break;\n\n                case 'summary':\n                    this.summaryTemplate = item.template;\n                break;\n\n                case 'colgroup':\n                    this.colGroupTemplate = item.template;\n                break;\n\n                case 'rowexpansion':\n                    this.expandedRowTemplate = item.template;\n                break;\n\n                case 'groupheader':\n                    this.groupHeaderTemplate = item.template;\n                break;\n\n                case 'rowspan':\n                    this.rowspanTemplate = item.template;\n                break;\n\n                case 'groupfooter':\n                    this.groupFooterTemplate = item.template;\n                break;\n\n                case 'frozenrows':\n                    this.frozenRowsTemplate = item.template;\n                break;\n\n                case 'frozenheader':\n                    this.frozenHeaderTemplate = item.template;\n                break;\n\n                case 'frozenbody':\n                    this.frozenBodyTemplate = item.template;\n                break;\n\n                case 'frozenfooter':\n                    this.frozenFooterTemplate = item.template;\n                break;\n\n                case 'frozencolgroup':\n                    this.frozenColGroupTemplate = item.template;\n                break;\n\n                case 'frozenrowexpansion':\n                    this.frozenExpandedRowTemplate = item.template;\n                break;\n\n                case 'emptymessage':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.isStateful() && this.resizableColumns) {\n            this.restoreColumnWidths();\n        }\n\n        if (this.scrollable && this.virtualScroll) {\n            this.virtualScrollSubscription =  this.virtualScrollBody.renderedRangeStream.subscribe(range => {\n                let top = range.start * this.virtualRowHeight * -1;\n                this.tableHeaderViewChild.nativeElement.style.top = top + 'px';\n            });\n        }\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            if (this.isStateful() && !this.stateRestored) {\n                this.restoreState();\n            }\n\n            this._value = simpleChange.value.currentValue;\n\n            if (!this.lazy) {\n                this.totalRecords = (this._value ? this._value.length : 0);\n\n                if (this.sortMode == 'single' && (this.sortField || this.groupRowsBy))\n                    this.sortSingle();\n                else if (this.sortMode == 'multiple' && (this.multiSortMeta || this.groupRowsBy))\n                    this.sortMultiple();\n                else if (this.hasFilter())       //sort already filters\n                    this._filter();\n            }\n\n            this.tableService.onValueChange(simpleChange.value.currentValue);\n        }\n\n        if (simpleChange.columns) {\n            this._columns = simpleChange.columns.currentValue;\n            this.tableService.onColumnsChange(simpleChange.columns.currentValue);\n\n            if (this._columns && this.isStateful() && this.reorderableColumns && !this.columnOrderStateRestored ) {\n                this.restoreColumnOrder();\n            }\n        }\n\n        if (simpleChange.sortField) {\n            this._sortField = simpleChange.sortField.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.groupRowsBy) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.sortOrder) {\n            this._sortOrder = simpleChange.sortOrder.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.groupRowsByOrder) {\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.multiSortMeta) {\n            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n            if (this.sortMode === 'multiple' && (this.initialized || (!this.lazy && !this.virtualScroll))) {\n                this.sortMultiple();\n            }\n        }\n\n        if (simpleChange.selection) {\n            this._selection = simpleChange.selection.currentValue;\n\n            if (!this.preventSelectionSetterPropagation) {\n                this.updateSelectionKeys();\n                this.tableService.onSelectionChange();\n            }\n            this.preventSelectionSetterPropagation = false;\n        }\n    }\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n    }\n\n    @Input() get columns(): any[] {\n        return this._columns;\n    }\n    set columns(cols: any[]) {\n        this._columns = cols;\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val: number) {\n        this._first = val;\n    }\n\n    @Input() get rows(): number {\n        return this._rows;\n    }\n    set rows(val: number) {\n        this._rows = val;\n    }\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        this.tableService.onTotalRecordsChange(this._totalRecords);\n    }\n\n    @Input() get sortField(): string {\n        return this._sortField;\n    }\n\n    set sortField(val: string) {\n        this._sortField = val;\n    }\n\n    @Input() get sortOrder(): number {\n        return this._sortOrder;\n    }\n    set sortOrder(val: number) {\n        this._sortOrder = val;\n    }\n\n    @Input() get multiSortMeta(): SortMeta[] {\n        return this._multiSortMeta;\n    }\n\n    set multiSortMeta(val: SortMeta[]) {\n        this._multiSortMeta = val;\n    }\n\n    @Input() get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val: any) {\n        this._selection = val;\n    }\n\n    get dataToRender() {\n        let data = this.filteredValue||this.value;\n        return data ? ((this.paginator && !this.lazy) ? (data.slice(this.first, this.first + this.rows)) : data) : [];\n    }\n\n    updateSelectionKeys() {\n        if (this.dataKey && this._selection) {\n            this.selectionKeys = {};\n            if (Array.isArray(this._selection)) {\n                for(let data of this._selection) {\n                    this.selectionKeys[String(ObjectUtils.resolveFieldData(data, this.dataKey))] = 1;\n                }\n            }\n            else {\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection, this.dataKey))] = 1;\n            }\n        }\n    }\n\n    onPageChange(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n\n        this.firstChange.emit(this.first);\n        this.rowsChange.emit(this.rows);\n        this.tableService.onValueChange(this.value);\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.anchorRowIndex = null;\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    sort(event) {\n        let originalEvent = event.originalEvent;\n\n        if (this.sortMode === 'single') {\n            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n            this._sortField = event.field;\n\n            if (this.resetPageOnSort) {\n                this._first = 0;\n                this.firstChange.emit(this._first);\n\n                if (this.scrollable) {\n                    this.resetScrollTop();\n                }\n            }\n\n            this.sortSingle();\n        }\n        if (this.sortMode === 'multiple') {\n            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n            let sortMeta = this.getSortMeta(event.field);\n\n            if (sortMeta) {\n                if (!metaKey) {\n                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];\n\n                    if (this.resetPageOnSort) {\n                        this._first = 0;\n                        this.firstChange.emit(this._first);\n\n                        if (this.scrollable) {\n                            this.resetScrollTop();\n                        }\n                    }\n                }\n                else {\n                    sortMeta.order = sortMeta.order * -1;\n                }\n            }\n            else {\n                if (!metaKey || !this.multiSortMeta) {\n                    this._multiSortMeta = [];\n\n                    if (this.resetPageOnSort) {\n                        this._first = 0;\n                        this.firstChange.emit(this._first);\n                    }\n                }\n                this._multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n            }\n\n            this.sortMultiple();\n        }\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.anchorRowIndex = null;\n    }\n\n    sortSingle() {\n        let field = this.sortField || this.groupRowsBy;\n        let order = this.sortField ? this.sortOrder : this.groupRowsByOrder;\n        if (this.groupRowsBy && this.sortField && this.groupRowsBy !== this.sortField) {\n            this._multiSortMeta = [this.getGroupRowsMeta(), {field: this.sortField, order: this.sortOrder}];\n            this.sortMultiple();\n            return;\n        }\n\n        if (field && order) {\n            if (this.restoringSort) {\n                this.restoringSort = false;\n            }\n\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                if (this.customSort) {\n                    this.sortFunction.emit({\n                        data: this.value,\n                        mode: this.sortMode,\n                        field: field,\n                        order: order\n                    });\n                }\n                else {\n                    this.value.sort((data1, data2) => {\n                        let value1 = ObjectUtils.resolveFieldData(data1, field);\n                        let value2 = ObjectUtils.resolveFieldData(data2, field);\n                        let result = null;\n\n                        if (value1 == null && value2 != null)\n                            result = -1;\n                        else if (value1 != null && value2 == null)\n                            result = 1;\n                        else if (value1 == null && value2 == null)\n                            result = 0;\n                        else if (typeof value1 === 'string' && typeof value2 === 'string')\n                            result = value1.localeCompare(value2);\n                        else\n                            result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                        return (order * result);\n                    });\n\n                    this._value = [...this.value];\n                }\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            let sortMeta: SortMeta = {\n                field: field,\n                order: order\n            };\n\n            this.onSort.emit(sortMeta);\n            this.tableService.onSort(sortMeta);\n        }\n    }\n\n    sortMultiple() {\n        if (this.groupRowsBy) {\n            if (!this._multiSortMeta)\n                this._multiSortMeta = [this.getGroupRowsMeta()]\n            else if (this.multiSortMeta[0].field !== this.groupRowsBy)\n                this._multiSortMeta = [this.getGroupRowsMeta(), ...this._multiSortMeta]\n        }\n\n        if (this.multiSortMeta) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                if (this.customSort) {\n                    this.sortFunction.emit({\n                        data: this.value,\n                        mode: this.sortMode,\n                        multiSortMeta: this.multiSortMeta\n                    });\n                }\n                else {\n                    this.value.sort((data1, data2) => {\n                        return this.multisortField(data1, data2, this.multiSortMeta, 0);\n                    });\n\n                    this._value = [...this.value];\n                }\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            this.onSort.emit({\n                multisortmeta: this.multiSortMeta\n            });\n            this.tableService.onSort(this.multiSortMeta);\n        }\n    }\n\n    multisortField(data1, data2, multiSortMeta, index) {\n        let value1 = ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);\n        let value2 = ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);\n        let result = null;\n\n        if (value1 == null && value2 != null)\n            result = -1;\n        else if (value1 != null && value2 == null)\n            result = 1;\n        else if (value1 == null && value2 == null)\n            result = 0;\n        else if (typeof value1 == 'string' || value1 instanceof String) {\n            if (value1.localeCompare && (value1 != value2)) {\n                return (multiSortMeta[index].order * value1.localeCompare(value2));\n            }\n        }\n        else {\n            result = (value1 < value2) ? -1 : 1;\n        }\n\n        if (value1 == value2) {\n            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(data1, data2, multiSortMeta, index + 1)) : 0;\n        }\n\n        return (multiSortMeta[index].order * result);\n    }\n\n    getSortMeta(field: string) {\n        if (this.multiSortMeta && this.multiSortMeta.length) {\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                if (this.multiSortMeta[i].field === field) {\n                    return this.multiSortMeta[i];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    isSorted(field: string) {\n        if (this.sortMode === 'single') {\n            return (this.sortField && this.sortField === field);\n        }\n        else if (this.sortMode === 'multiple') {\n            let sorted = false;\n            if (this.multiSortMeta) {\n                for(let i = 0; i < this.multiSortMeta.length; i++) {\n                    if (this.multiSortMeta[i].field == field) {\n                        sorted = true;\n                        break;\n                    }\n                }\n            }\n            return sorted;\n        }\n    }\n\n    handleRowClick(event) {\n        let target = (<HTMLElement> event.originalEvent.target);\n        let targetNode = target.nodeName;\n        let parentNode = target.parentElement && target.parentElement.nodeName;\n        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' ||\n            parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' ||\n            (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {\n            return;\n        }\n\n        if (this.selectionMode) {\n            this.preventSelectionSetterPropagation = true;\n            if (this.isMultipleSelectionMode() && event.originalEvent.shiftKey && this.anchorRowIndex != null) {\n                DomHandler.clearSelection();\n                if (this.rangeRowIndex != null) {\n                    this.clearSelectionRange(event.originalEvent);\n                }\n\n                this.rangeRowIndex = event.rowIndex;\n                this.selectRange(event.originalEvent, event.rowIndex);\n            }\n            else {\n                let rowData = event.rowData;\n                let selected = this.isSelected(rowData);\n                let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n                this.anchorRowIndex = event.rowIndex;\n                this.rangeRowIndex = event.rowIndex;\n\n                if (metaSelection) {\n                    let metaKey = event.originalEvent.metaKey||event.originalEvent.ctrlKey;\n\n                    if (selected && metaKey) {\n                        if (this.isSingleSelectionMode()) {\n                            this._selection = null;\n                            this.selectionKeys = {};\n                            this.selectionChange.emit(null);\n                        }\n                        else {\n                            let selectionIndex = this.findIndexInSelection(rowData);\n                            this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n                            this.selectionChange.emit(this.selection);\n                            if (dataKeyValue) {\n                                delete this.selectionKeys[dataKeyValue];\n                            }\n                        }\n\n                        this.onRowUnselect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row'});\n                    }\n                    else {\n                        if (this.isSingleSelectionMode()) {\n                            this._selection = rowData;\n                            this.selectionChange.emit(rowData);\n                            if (dataKeyValue) {\n                                this.selectionKeys = {};\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                        else if (this.isMultipleSelectionMode()) {\n                            if (metaKey) {\n                                this._selection = this.selection||[];\n                            }\n                            else {\n                                this._selection = [];\n                                this.selectionKeys = {};\n                            }\n\n                            this._selection = [...this.selection,rowData];\n                            this.selectionChange.emit(this.selection);\n                            if (dataKeyValue) {\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n\n                        this.onRowSelect.emit({originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex});\n                    }\n                }\n                else {\n                    if (this.selectionMode === 'single') {\n                        if (selected) {\n                            this._selection = null;\n                            this.selectionKeys = {};\n                            this.selectionChange.emit(this.selection);\n                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                        }\n                        else {\n                            this._selection = rowData;\n                            this.selectionChange.emit(this.selection);\n                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                this.selectionKeys = {};\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                    }\n                    else if (this.selectionMode === 'multiple') {\n                        if (selected) {\n                            let selectionIndex = this.findIndexInSelection(rowData);\n                            this._selection = this.selection.filter((val, i) => i != selectionIndex);\n                            this.selectionChange.emit(this.selection);\n                            this.onRowUnselect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                delete this.selectionKeys[dataKeyValue];\n                            }\n                        }\n                        else {\n                            this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n                            this.selectionChange.emit(this.selection);\n                            this.onRowSelect.emit({ originalEvent: event.originalEvent, data: rowData, type: 'row', index: event.rowIndex });\n                            if (dataKeyValue) {\n                                this.selectionKeys[dataKeyValue] = 1;\n                            }\n                        }\n                    }\n                }\n            }\n\n            this.tableService.onSelectionChange();\n\n            if (this.isStateful()) {\n                this.saveState();\n            }\n        }\n\n        this.rowTouched = false;\n    }\n\n    handleRowTouchEnd(event) {\n        this.rowTouched = true;\n    }\n\n    handleRowRightClick(event) {\n        if (this.contextMenu) {\n            const rowData = event.rowData;\n\n            if (this.contextMenuSelectionMode === 'separate') {\n                this.contextMenuSelection = rowData;\n                this.contextMenuSelectionChange.emit(rowData);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, data: rowData, index: event.rowIndex});\n                this.contextMenu.show(event.originalEvent);\n                this.tableService.onContextMenu(rowData);\n            }\n            else if (this.contextMenuSelectionMode === 'joint') {\n                this.preventSelectionSetterPropagation = true;\n                let selected = this.isSelected(rowData);\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode()) {\n                        this.selection = rowData;\n                        this.selectionChange.emit(rowData);\n\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n                        this.selectionChange.emit(this.selection);\n\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n\n                this.tableService.onSelectionChange();\n                this.contextMenu.show(event.originalEvent);\n                this.onContextMenuSelect.emit({originalEvent: event, data: rowData, index: event.rowIndex});\n            }\n        }\n    }\n\n    selectRange(event: MouseEvent, rowIndex: number) {\n        let rangeStart, rangeEnd;\n\n        if (this.anchorRowIndex > rowIndex) {\n            rangeStart = rowIndex;\n            rangeEnd = this.anchorRowIndex;\n        }\n        else if (this.anchorRowIndex < rowIndex) {\n            rangeStart = this.anchorRowIndex;\n            rangeEnd = rowIndex;\n        }\n        else {\n            rangeStart = rowIndex;\n            rangeEnd = rowIndex;\n        }\n\n        if (this.lazy && this.paginator) {\n            rangeStart -= this.first;\n            rangeEnd -= this.first;\n        }\n\n        let rangeRowsData = [];\n        for(let i = rangeStart; i <= rangeEnd; i++) {\n            let rangeRowData = this.filteredValue ? this.filteredValue[i] : this.value[i];\n            if (!this.isSelected(rangeRowData)) {\n                rangeRowsData.push(rangeRowData);\n                this._selection = [...this.selection, rangeRowData];\n                let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n                if (dataKeyValue) {\n                    this.selectionKeys[dataKeyValue] = 1;\n                }\n            }\n        }\n        this.selectionChange.emit(this.selection);\n        this.onRowSelect.emit({originalEvent: event, data: rangeRowsData, type: 'row'});\n    }\n\n    clearSelectionRange(event: MouseEvent) {\n        let rangeStart, rangeEnd;\n\n        if (this.rangeRowIndex > this.anchorRowIndex) {\n            rangeStart = this.anchorRowIndex;\n            rangeEnd = this.rangeRowIndex;\n        }\n        else if (this.rangeRowIndex < this.anchorRowIndex) {\n            rangeStart = this.rangeRowIndex;\n            rangeEnd = this.anchorRowIndex;\n        }\n        else {\n            rangeStart = this.rangeRowIndex;\n            rangeEnd = this.rangeRowIndex;\n        }\n\n        for(let i = rangeStart; i <= rangeEnd; i++) {\n            let rangeRowData = this.value[i];\n            let selectionIndex = this.findIndexInSelection(rangeRowData);\n            this._selection = this.selection.filter((val,i) => i!=selectionIndex);\n            let dataKeyValue: string = this.dataKey ? String(ObjectUtils.resolveFieldData(rangeRowData, this.dataKey)) : null;\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n            this.onRowUnselect.emit({originalEvent: event, data: rangeRowData, type: 'row'});\n        }\n    }\n\n    isSelected(rowData) {\n        if (rowData && this.selection) {\n            if (this.dataKey) {\n                return this.selectionKeys[ObjectUtils.resolveFieldData(rowData, this.dataKey)] !== undefined;\n            }\n            else {\n                if (this.selection instanceof Array)\n                    return this.findIndexInSelection(rowData) > -1;\n                else\n                    return this.equals(rowData, this.selection);\n            }\n        }\n\n        return false;\n    }\n\n    findIndexInSelection(rowData: any) {\n        let index: number = -1;\n        if (this.selection && this.selection.length) {\n            for (let i = 0; i < this.selection.length; i++) {\n                if (this.equals(rowData, this.selection[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    toggleRowWithRadio(event: any, rowData:any) {\n        this.preventSelectionSetterPropagation = true;\n\n        if (this.selection != rowData) {\n            this._selection = rowData;\n            this.selectionChange.emit(this.selection);\n            this.onRowSelect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n\n            if (this.dataKey) {\n                this.selectionKeys = {};\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] = 1;\n            }\n        }\n        else {\n            this._selection = null;\n            this.selectionChange.emit(this.selection);\n            this.onRowUnselect.emit({originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'radiobutton'});\n        }\n\n        this.tableService.onSelectionChange();\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    toggleRowWithCheckbox(event, rowData: any) {\n        this.selection = this.selection||[];\n        let selected = this.isSelected(rowData);\n        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowData, this.dataKey)) : null;\n        this.preventSelectionSetterPropagation = true;\n\n        if (selected) {\n            let selectionIndex = this.findIndexInSelection(rowData);\n            this._selection = this.selection.filter((val, i) => i != selectionIndex);\n            this.selectionChange.emit(this.selection);\n            this.onRowUnselect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n        }\n        else {\n            this._selection = this.selection ? [...this.selection, rowData] : [rowData];\n            this.selectionChange.emit(this.selection);\n            this.onRowSelect.emit({ originalEvent: event.originalEvent, index: event.rowIndex, data: rowData, type: 'checkbox' });\n            if (dataKeyValue) {\n                this.selectionKeys[dataKeyValue] = 1;\n            }\n        }\n\n        this.tableService.onSelectionChange();\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    toggleRowsWithCheckbox(event: Event, check: boolean) {\n        this._selection = check ? this.filteredValue ? this.filteredValue.slice(): this.value.slice() : [];\n        this.preventSelectionSetterPropagation = true;\n        this.updateSelectionKeys();\n        this.selectionChange.emit(this._selection);\n        this.tableService.onSelectionChange();\n        this.onHeaderCheckboxToggle.emit({originalEvent: event, checked: check});\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    equals(data1, data2) {\n        return this.compareSelectionBy === 'equals' ? (data1 === data2) : ObjectUtils.equals(data1, data2, this.dataKey);\n    }\n\n    /* Legacy Filtering for custom elements */\n    filter(value: any, field: string, matchMode: string) {\n        if (this.filterTimeout) {\n            clearTimeout(this.filterTimeout);\n        }\n        if (!this.isFilterBlank(value)) {\n            this.filters[field] = { value: value, matchMode: matchMode };\n        } else if (this.filters[field]) {\n            delete this.filters[field];\n        }\n\n        this.filterTimeout = setTimeout(() => {\n            this._filter();\n            this.filterTimeout = null;\n        }, this.filterDelay);\n\n        this.anchorRowIndex = null;\n    }\n\n    filterGlobal(value, matchMode) {\n        this.filter(value, 'global', matchMode);\n    }\n\n    isFilterBlank(filter: any): boolean {\n        if (filter !== null && filter !== undefined) {\n            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n                return true;\n            else\n                return false;\n        }\n        return true;\n    }\n\n    _filter() {\n        if (!this.restoringFilter) {\n            this.first = 0;\n            this.firstChange.emit(this.first);\n        }\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            if (!this.value) {\n                return;\n            }\n\n            if (!this.hasFilter()) {\n                this.filteredValue = null;\n                if (this.paginator) {\n                    this.totalRecords = this.value ? this.value.length : 0;\n                }\n            }\n            else {\n                let globalFilterFieldsArray;\n                if (this.filters['global']) {\n                    if (!this.columns && !this.globalFilterFields)\n                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n                    else\n                        globalFilterFieldsArray = this.globalFilterFields||this.columns;\n                }\n\n                this.filteredValue = [];\n\n                for (let i = 0; i < this.value.length; i++) {\n                    let localMatch = true;\n                    let globalMatch = false;\n                    let localFiltered = false;\n\n                    for (let prop in this.filters) {\n                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n                            localFiltered = true;\n                            let filterField = prop;\n                            let filterMeta = this.filters[filterField];\n\n                            if (Array.isArray(filterMeta)) {\n                                for (let meta of filterMeta) {\n                                    localMatch = this.executeLocalFilter(filterField, this.value[i], meta);\n\n                                    if ((meta.operator === FilterOperator.OR && localMatch) || (meta.operator === FilterOperator.AND && !localMatch)) {\n                                        break;\n                                    }\n                                }\n                            }\n                            else {\n                                localMatch = this.executeLocalFilter(filterField, this.value[i], filterMeta);\n                            }\n\n                            if (!localMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n                        for(let j = 0; j < globalFilterFieldsArray.length; j++) {\n                            let globalFilterField = globalFilterFieldsArray[j].field||globalFilterFieldsArray[j];\n                            globalMatch = this.filterService.filters[(<FilterMetadata> this.filters['global']).matchMode](ObjectUtils.resolveFieldData(this.value[i], globalFilterField), (<FilterMetadata> this.filters['global']).value, this.filterLocale);\n\n                            if (globalMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    let matches: boolean;\n                    if (this.filters['global']) {\n                        matches = localFiltered ? (localFiltered && localMatch && globalMatch) : globalMatch;\n                    }\n                    else {\n                        matches = localFiltered && localMatch;\n                    }\n\n                    if (matches) {\n                        this.filteredValue.push(this.value[i]);\n                    }\n                }\n\n                if (this.filteredValue.length === this.value.length) {\n                    this.filteredValue = null;\n                }\n\n                if (this.paginator) {\n                    this.totalRecords = this.filteredValue ? this.filteredValue.length : this.value ? this.value.length : 0;\n                }\n            }\n        }\n\n        this.onFilter.emit({\n            filters: this.filters,\n            filteredValue: this.filteredValue || this.value\n        });\n\n        this.tableService.onValueChange(this.value);\n\n        if (this.isStateful() && !this.restoringFilter) {\n            this.saveState();\n        }\n\n        if (this.restoringFilter) {\n            this.restoringFilter = false;\n        }\n\n        this.cd.markForCheck();\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    executeLocalFilter(field: string, rowData: any, filterMeta: FilterMetadata): boolean {\n        let filterValue = filterMeta.value;\n        let filterMatchMode = filterMeta.matchMode || FilterMatchMode.STARTS_WITH;\n        let dataFieldValue = ObjectUtils.resolveFieldData(rowData, field);\n        let filterConstraint = this.filterService.filters[filterMatchMode];\n\n        return filterConstraint(dataFieldValue, filterValue, this.filterLocale);\n    }\n\n    hasFilter() {\n        let empty = true;\n        for (let prop in this.filters) {\n            if (this.filters.hasOwnProperty(prop)) {\n                empty = false;\n                break;\n            }\n        }\n\n        return !empty;\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder,\n            filters: this.filters,\n            globalFilter: this.filters && this.filters['global'] ? (<FilterMetadata> this.filters['global']).value : null,\n            multiSortMeta: this.multiSortMeta\n        };\n    }\n\n    public clear() {\n        this._sortField = null;\n        this._sortOrder = this.defaultSortOrder;\n        this._multiSortMeta = null;\n        this.tableService.onSort(null);\n\n        this.filteredValue = null;\n        this.tableService.onResetChange();\n\n        this.first = 0;\n        this.firstChange.emit(this.first);\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            this.totalRecords = (this._value ? this._value.length : 0);\n        }\n    }\n\n    public reset() {\n        this.clear();\n    }\n\n    public exportCSV(options?: any) {\n        let data;\n        let csv = '';\n        let columns = this.frozenColumns ? [...this.frozenColumns, ...this.columns] : this.columns;\n\n        if (options && options.selectionOnly) {\n            data = this.selection || [];\n        }\n        else {\n            data = this.filteredValue || this.value;\n\n            if (this.frozenValue) {\n                data = data ? [...this.frozenValue, ...data] : this.frozenValue;\n            }\n        }\n\n        //headers\n        for (let i = 0; i < columns.length; i++) {\n            let column = columns[i];\n            if (column.exportable !== false && column.field) {\n                csv += '\"' + (column.header || column.field) + '\"';\n\n                if (i < (columns.length - 1)) {\n                    csv += this.csvSeparator;\n                }\n            }\n        }\n\n        //body\n        data.forEach((record, i) => {\n            csv += '\\n';\n            for (let i = 0; i < columns.length; i++) {\n                let column = columns[i];\n                if (column.exportable !== false && column.field) {\n                    let cellData = ObjectUtils.resolveFieldData(record, column.field);\n\n                    if (cellData != null) {\n                        if (this.exportFunction) {\n                            cellData = this.exportFunction({\n                                data: cellData,\n                                field: column.field\n                            });\n                        }\n                        else\n                            cellData = String(cellData).replace(/\"/g, '\"\"');\n                    }\n                    else\n                        cellData = '';\n\n                    csv += '\"' + cellData + '\"';\n\n                    if (i < (columns.length - 1)) {\n                        csv += this.csvSeparator;\n                    }\n                }\n            }\n        });\n\n        let blob = new Blob([csv], {\n            type: 'text/csv;charset=utf-8;'\n        });\n\n        let link = document.createElement(\"a\");\n        link.style.display = 'none';\n        document.body.appendChild(link);\n        if (link.download !== undefined) {\n            link.setAttribute('href', URL.createObjectURL(blob));\n            link.setAttribute('download', this.exportFilename + '.csv');\n            link.click();\n        }\n        else {\n            csv = 'data:text/csv;charset=utf-8,' + csv;\n            window.open(encodeURI(csv));\n        }\n        document.body.removeChild(link);\n    }\n\n    public resetScrollTop() {\n        if (this.virtualScroll)\n            this.scrollToVirtualIndex(0);\n        else\n            this.scrollTo({top: 0});\n    }\n\n    public scrollToVirtualIndex(index: number) {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollToIndex(index);\n        }\n    }\n\n    virtualScrollTimeout: any;\n\n    virtualPage: number;\n\n    onScrollIndexChange(index: number) {\n        if (this.lazy) {\n            if (this.virtualScrollTimeout) {\n                clearTimeout(this.virtualScrollTimeout);\n            }\n\n            this.virtualScrollTimeout = setTimeout(() => {\n                let page = Math.floor(index / this.rows);\n                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;\n                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;\n\n                if (page !== this.virtualPage) {\n                    this.virtualPage = page;\n                    this.onLazyLoad.emit({\n                        first: virtualScrollOffset,\n                        rows: virtualScrollChunkSize,\n                        sortField: this.sortField,\n                        sortOrder: this.sortOrder,\n                        filters: this.filters,\n                        globalFilter: this.filters && this.filters['global'] ? (<FilterMetadata> this.filters['global']).value : null,\n                        multiSortMeta: this.multiSortMeta\n                    });\n                }\n            }, this.virtualScrollDelay);\n        }\n    }\n\n    public scrollTo(options) {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollTo(options);\n        }\n        else {\n            if (this.wrapperViewChild.nativeElement.scrollTo) {\n                this.wrapperViewChild.nativeElement.scrollTo(options);\n            }\n            else {\n                this.wrapperViewChild.nativeElement.scrollLeft = options.left;\n                this.wrapperViewChild.nativeElement.scrollTop = options.top;\n            }\n        }\n    }\n\n    updateEditingCell(cell, data, field, index) {\n        this.editingCell = cell;\n        this.editingCellData = data;\n        this.editingCellField = field;\n        this.editingCellRowIndex = index;\n        this.bindDocumentEditListener();\n    }\n\n    isEditingCellValid() {\n        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n    }\n\n    bindDocumentEditListener() {\n        if (!this.documentEditListener) {\n            this.documentEditListener = (event) => {\n                if (this.editingCell && !this.selfClick && this.isEditingCellValid()) {\n                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n                    this.editingCell = null;\n                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData, originalEvent: event, index: this.editingCellRowIndex });\n                    this.editingCellField = null;\n                    this.editingCellData = null;\n                    this.editingCellRowIndex = null;\n                    this.unbindDocumentEditListener();\n                    this.cd.markForCheck();\n\n                    if (this.overlaySubscription) {\n                        this.overlaySubscription.unsubscribe();\n                    }\n                }\n\n                this.selfClick = false;\n            };\n\n            document.addEventListener('click', this.documentEditListener);\n        }\n    }\n\n    unbindDocumentEditListener() {\n        if (this.documentEditListener) {\n            document.removeEventListener('click', this.documentEditListener);\n            this.documentEditListener = null;\n        }\n    }\n\n    initRowEdit(rowData: any) {\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n        this.editingRowKeys[dataKeyValue] = true;\n    }\n\n    saveRowEdit(rowData: any, rowElement: HTMLTableRowElement) {\n        if (DomHandler.find(rowElement, '.ng-invalid.ng-dirty').length === 0) {\n            let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n            delete this.editingRowKeys[dataKeyValue];\n        }\n    }\n\n    cancelRowEdit(rowData: any) {\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n        delete this.editingRowKeys[dataKeyValue];\n    }\n\n    toggleRow(rowData: any, event?: Event) {\n        if (!this.dataKey) {\n            throw new Error('dataKey must be defined to use row expansion');\n        }\n\n        let dataKeyValue = String(ObjectUtils.resolveFieldData(rowData, this.dataKey));\n\n        if (this.expandedRowKeys[dataKeyValue] != null) {\n            delete this.expandedRowKeys[dataKeyValue];\n            this.onRowCollapse.emit({\n                originalEvent: event,\n                data: rowData\n            });\n        }\n        else {\n            if (this.rowExpandMode === 'single') {\n                this.expandedRowKeys = {};\n            }\n\n            this.expandedRowKeys[dataKeyValue] = true;\n            this.onRowExpand.emit({\n                originalEvent: event,\n                data: rowData\n            });\n        }\n\n        if (event) {\n            event.preventDefault();\n        }\n\n        if (this.isStateful()) {\n            this.saveState();\n        }\n    }\n\n    isRowExpanded(rowData: any): boolean {\n        return this.expandedRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n    }\n\n    isRowEditing(rowData: any): boolean {\n        return this.editingRowKeys[String(ObjectUtils.resolveFieldData(rowData, this.dataKey))] === true;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode === 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode === 'multiple';\n    }\n\n    onColumnResizeBegin(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        this.resizeColumnElement = event.target.parentElement;\n        this.columnResizing = true;\n        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n        this.onColumnResize(event);\n        event.preventDefault();\n    }\n\n    onColumnResize(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'block';\n    }\n\n    onColumnResizeEnd() {\n        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n        let columnWidth = this.resizeColumnElement.offsetWidth;\n        let newColumnWidth = columnWidth + delta;\n        let minWidth = this.resizeColumnElement.style.minWidth||15;\n\n        if (newColumnWidth >= minWidth) {\n            if (this.columnResizeMode === 'fit') {\n                let nextColumn = this.resizeColumnElement.nextElementSibling;\n                let nextColumnWidth = nextColumn.offsetWidth - delta;\n\n                if (newColumnWidth > 15 && nextColumnWidth > 15) {\n                    if (!this.scrollable) {\n                        this.resizeColumnElement.style.width = newColumnWidth + 'px';\n                        if(nextColumn) {\n                            nextColumn.style.width = nextColumnWidth + 'px';\n                        }\n                    }\n                    else {\n                        this.resizeTableCells(newColumnWidth, nextColumnWidth);\n                    }\n                }\n            }\n            else if (this.columnResizeMode === 'expand') {\n                let tableWidth = this.tableViewChild.nativeElement.offsetWidth + delta;\n                this.tableViewChild.nativeElement.style.minWidth = tableWidth + 'px';\n                this.resizeColumnElement.style.width = newColumnWidth + 'px';\n\n                if (!this.scrollable)\n                    this.tableViewChild.nativeElement.style.width = tableWidth + 'px';\n                else\n                    this.resizeTableCells(newColumnWidth, null);\n            }\n\n            this.onColResize.emit({\n                element: this.resizeColumnElement,\n                delta: delta\n            });\n\n            if (this.isStateful()) {\n                this.saveState();\n            }\n        }\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'none';\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n    }\n\n    resizeTableCells(newColumnWidth, nextColumnWidth) {\n        let colIndex = DomHandler.index(this.resizeColumnElement);\n        let widths = [];\n        const tableHead = DomHandler.findSingle(this.containerViewChild.nativeElement, '.p-datatable-thead');\n        let headers = DomHandler.find(tableHead, 'tr > th');\n        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n\n        this.destroyStyleElement();\n        this.createStyleElement();\n\n        let innerHTML = '';\n        widths.forEach((width,index) => {\n            let colWidth = index === colIndex ? newColumnWidth : (nextColumnWidth && index === colIndex + 1) ? nextColumnWidth : width;\n            innerHTML += `\n                #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index+1}) {\n                    flex: 0 0 ${colWidth}px !important;\n                }\n\n                #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index+1}) {\n                    flex: 0 0 ${colWidth}px !important;\n                }\n            `\n        });\n        this.styleElement.innerHTML = innerHTML;\n    }\n\n    onColumnDragStart(event, columnElement) {\n        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n        this.draggedColumn = columnElement;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onColumnDragEnter(event, dropHeader) {\n        if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n            event.preventDefault();\n            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n            let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n\n            if (this.draggedColumn != dropHeader) {\n                let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n                let dropIndex = DomHandler.indexWithinGroup(dropHeader, 'preorderablecolumn');\n                let targetLeft = dropHeaderOffset.left - containerOffset.left;\n                let targetTop = containerOffset.top - dropHeaderOffset.top;\n                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n                if (event.pageX > columnCenter) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = 1;\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = -1;\n                }\n\n                if ((dropIndex - dragIndex === 1 && this.dropPosition === -1) || (dropIndex - dragIndex === -1 && this.dropPosition === 1)) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n                }\n            }\n            else {\n                event.dataTransfer.dropEffect = 'none';\n            }\n        }\n    }\n\n    onColumnDragLeave(event) {\n        if (this.reorderableColumns && this.draggedColumn) {\n            event.preventDefault();\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n        }\n    }\n\n    onColumnDrop(event, dropColumn) {\n        event.preventDefault();\n        if (this.draggedColumn) {\n            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'preorderablecolumn');\n            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'preorderablecolumn');\n            let allowDrop = (dragIndex != dropIndex);\n            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n                allowDrop = false;\n            }\n\n            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n                dropIndex = dropIndex + 1;\n            }\n\n            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n                dropIndex = dropIndex - 1;\n            }\n\n            if (allowDrop) {\n                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n\n                this.onColReorder.emit({\n                    dragIndex: dragIndex,\n                    dropIndex: dropIndex,\n                    columns: this.columns\n                });\n\n                if (this.isStateful()) {\n                    this.zone.runOutsideAngular(() => {\n                        setTimeout(() => {\n                            this.saveState();\n                        });\n                    });\n                }\n            }\n\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n            this.draggedColumn.draggable = false;\n            this.draggedColumn = null;\n            this.dropPosition = null;\n        }\n    }\n\n    onRowDragStart(event, index) {\n        this.rowDragging = true;\n        this.draggedRowIndex = index;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onRowDragOver(event, index, rowElement) {\n        if (this.rowDragging && this.draggedRowIndex !== index) {\n            let rowY = DomHandler.getOffset(rowElement).top + DomHandler.getWindowScrollTop();\n            let pageY = event.pageY;\n            let rowMidY = rowY + DomHandler.getOuterHeight(rowElement) / 2;\n            let prevRowElement = rowElement.previousElementSibling;\n\n            if (pageY < rowMidY) {\n                DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n\n                this.droppedRowIndex = index;\n                if (prevRowElement)\n                    DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n                else\n                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n            }\n            else {\n                if (prevRowElement)\n                    DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n                else\n                    DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');\n\n                this.droppedRowIndex = index + 1;\n                DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');\n            }\n        }\n    }\n\n    onRowDragLeave(event, rowElement) {\n        let prevRowElement = rowElement.previousElementSibling;\n        if (prevRowElement) {\n            DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');\n        }\n\n        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');\n        DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');\n    }\n\n    onRowDragEnd(event) {\n        this.rowDragging = false;\n        this.draggedRowIndex = null;\n        this.droppedRowIndex = null;\n    }\n\n    onRowDrop(event, rowElement) {\n        if (this.droppedRowIndex != null) {\n            let dropIndex = (this.draggedRowIndex > this.droppedRowIndex) ? this.droppedRowIndex : (this.droppedRowIndex === 0) ? 0 : this.droppedRowIndex - 1;\n            ObjectUtils.reorderArray(this.value, this.draggedRowIndex, dropIndex);\n\n            this.onRowReorder.emit({\n                dragIndex: this.draggedRowIndex,\n                dropIndex: dropIndex\n            });\n        }\n        //cleanup\n        this.onRowDragLeave(event, rowElement);\n        this.onRowDragEnd(event);\n    }\n\n    isEmpty() {\n        let data = this.filteredValue||this.value;\n        return data == null || data.length == 0;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    getStorage() {\n        switch(this.stateStorage) {\n            case 'local':\n                return window.localStorage;\n\n            case 'session':\n                return window.sessionStorage;\n\n            default:\n                throw new Error(this.stateStorage + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n        }\n    }\n\n    isStateful() {\n        return this.stateKey != null;\n    }\n\n    saveState() {\n        const storage = this.getStorage();\n        let state: TableState = {};\n\n        if (this.paginator) {\n            state.first = this.first;\n            state.rows = this.rows;\n        }\n\n        if (this.sortField) {\n            state.sortField = this.sortField;\n            state.sortOrder = this.sortOrder;\n        }\n\n        if (this.multiSortMeta) {\n            state.multiSortMeta = this.multiSortMeta;\n        }\n\n        if (this.hasFilter()) {\n            state.filters = this.filters;\n        }\n\n        if (this.resizableColumns) {\n            this.saveColumnWidths(state);\n        }\n\n        if (this.reorderableColumns) {\n            this.saveColumnOrder(state);\n        }\n\n        if (this.selection) {\n            state.selection = this.selection;\n        }\n\n        if (Object.keys(this.expandedRowKeys).length) {\n            state.expandedRowKeys = this.expandedRowKeys;\n        }\n\n        storage.setItem(this.stateKey, JSON.stringify(state));\n        this.onStateSave.emit(state);\n    }\n\n    clearState() {\n        const storage = this.getStorage();\n\n        if (this.stateKey) {\n            storage.removeItem(this.stateKey);\n        }\n    }\n\n    restoreState() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n        const dateFormat = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n        const reviver = function(key, value) {\n            if (typeof value === \"string\" && dateFormat.test(value)) {\n                return new Date(value);\n            }\n\n            return value;\n        }\n\n        if (stateString) {\n            let state: TableState = JSON.parse(stateString, reviver);\n\n            if (this.paginator) {\n                if (this.first !== undefined) {\n                    this.first = state.first;\n                    this.firstChange.emit(this.first);\n                }\n\n                if (this.rows !== undefined) {\n                    this.rows = state.rows;\n                    this.rowsChange.emit(this.rows);\n                }\n            }\n\n            if (state.sortField) {\n                this.restoringSort = true;\n                this._sortField = state.sortField;\n                this._sortOrder = state.sortOrder;\n            }\n\n            if (state.multiSortMeta) {\n                this.restoringSort = true;\n                this._multiSortMeta = state.multiSortMeta;\n            }\n\n            if (state.filters) {\n                this.restoringFilter = true;\n                this.filters = state.filters;\n            }\n\n            if (this.resizableColumns) {\n                this.columnWidthsState = state.columnWidths;\n                this.tableWidthState = state.tableWidth;\n            }\n\n            if (state.expandedRowKeys) {\n                this.expandedRowKeys = state.expandedRowKeys;\n            }\n\n            if (state.selection) {\n                Promise.resolve(null).then(() => this.selectionChange.emit(state.selection));\n            }\n\n            this.stateRestored = true;\n\n            this.onStateRestore.emit(state);\n        }\n    }\n\n    saveColumnWidths(state) {\n        let widths = [];\n        let headers = DomHandler.find(this.containerViewChild.nativeElement, '.p-datatable-thead > tr > th');\n        headers.forEach(header => widths.push(DomHandler.getOuterWidth(header)));\n        state.columnWidths = widths.join(',');\n\n        if (this.columnResizeMode === 'expand') {\n            state.tableWidth =  DomHandler.getOuterWidth(this.tableViewChild.nativeElement) + 'px';\n        }\n    }\n\n    restoreColumnWidths() {\n        if (this.columnWidthsState) {\n            let widths = this.columnWidthsState.split(',');\n\n            if (this.columnResizeMode === 'expand' && this.tableWidthState) {\n                this.tableViewChild.nativeElement.style.width = this.tableWidthState;\n                this.tableViewChild.nativeElement.style.minWidth = this.tableWidthState;\n                this.containerViewChild.nativeElement.style.width = this.tableWidthState;\n            }\n\n            this.createStyleElement();\n\n            if (this.scrollable && widths && widths.length > 0) {\n                    let innerHTML = '';\n                    widths.forEach((width,index) => {\n                        innerHTML += `\n                            #${this.id}-table > .p-datatable-thead > tr > th:nth-child(${index+1}) {\n                                flex: 0 0 ${width}px;\n                            }\n\n                            #${this.id}-table > .p-datatable-tbody > tr > td:nth-child(${index+1}) {\n                                flex: 0 0 ${width}px;\n                            }\n                        `\n                    });\n                this.styleElement.innerHTML = innerHTML;\n            }\n            else {\n                DomHandler.find(this.tableViewChild.nativeElement, '.p-datatable-thead > tr > th').forEach((header, index) => {\n                    header.style.width = widths[index] + 'px';\n                });\n            }\n\n        }\n    }\n\n    saveColumnOrder(state) {\n        if (this.columns) {\n            let columnOrder: string[] = [];\n            this.columns.map(column => {\n                columnOrder.push(column.field||column.key)\n            });\n\n            state.columnOrder = columnOrder;\n        }\n    }\n\n    restoreColumnOrder() {\n        const storage = this.getStorage();\n        const stateString = storage.getItem(this.stateKey);\n        if (stateString) {\n            let state: TableState = JSON.parse(stateString);\n            let columnOrder = state.columnOrder;\n            if (columnOrder) {\n                let reorderedColumns = [];\n\n                columnOrder.map(key =>  {\n                    let col = this.findColumnByKey(key);\n                    if (col) {\n                        reorderedColumns.push(col)\n                    }\n                });\n                this.columnOrderStateRestored = true;\n                this.columns = reorderedColumns;\n            }\n        }\n    }\n\n    findColumnByKey(key) {\n        if (this.columns) {\n            for (let col of this.columns) {\n                if (col.key === key || col.field === key)\n                    return col;\n                else\n                    continue;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    createStyleElement() {\n        this.styleElement = document.createElement('style');\n        this.styleElement.type = 'text/css';\n        document.head.appendChild(this.styleElement);\n    }\n\n    getGroupRowsMeta() {\n        return {field: this.groupRowsBy, order: this.groupRowsByOrder};\n    }\n\n    createResponsiveStyle() {\n        if (!this.responsiveStyleElement) {\n            this.responsiveStyleElement = document.createElement('style');\n            this.responsiveStyleElement.type = 'text/css';\n            document.head.appendChild(this.responsiveStyleElement);\n\n            let innerHTML = `\n@media screen and (max-width: ${this.breakpoint}) {\n    #${this.id} .p-datatable-thead > tr > th,\n    #${this.id} .p-datatable-tfoot > tr > td {\n        display: none !important;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td {\n        display: flex;\n        width: 100% !important;\n        align-items: center;\n        justify-content: space-between;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td:not(:last-child) {\n        border: 0 none;\n    }\n\n    #${this.id}.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child {\n        border-top: 0;\n        border-right: 0;\n        border-left: 0;\n    }\n\n    #${this.id} .p-datatable-tbody > tr > td > .p-column-title {\n        display: block;\n    }\n}\n`;\n\n            this.responsiveStyleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyResponsiveStyle() {\n        if (this.responsiveStyleElement) {\n            document.head.removeChild(this.responsiveStyleElement);\n            this.responsiveStyleElement = null;\n        }\n    }\n\n    destroyStyleElement() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentEditListener();\n        this.editingCell = null;\n        this.initialized = null;\n\n        if (this.virtualScrollSubscription) {\n            this.virtualScrollSubscription.unsubscribe();\n        }\n\n        this.destroyStyleElement();\n        this.destroyResponsiveStyle();\n    }\n}\n\n@Component({\n    selector: '[pTableBody]',\n    template: `\n        <ng-container *ngIf=\"!dt.expandedRowTemplate && !dt.virtualScroll\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngIf=\"dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.rowGroupMode !== 'rowspan'\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.rowGroupMode === 'rowspan'\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen, rowgroup: shouldRenderRowspan(value, rowData, rowIndex), rowspan: calculateRowGroupSize(value, rowData, rowIndex)}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"!dt.expandedRowTemplate && dt.virtualScroll\">\n            <ng-template cdkVirtualFor let-rowData let-rowIndex=\"index\" [cdkVirtualForOf]=\"value\" [cdkVirtualForTrackBy]=\"dt.rowTrackBy\" [cdkVirtualForTemplateCacheSize]=\"0\">\n                <ng-container *ngTemplateOutlet=\"rowData ? template: dt.loadingBodyTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.expandedRowTemplate && !(frozen && dt.frozenExpandedRowTemplate)\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngIf=\"!dt.groupHeaderTemplate\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.groupHeaderTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupHeader(value, rowData, rowIndex)\" role=\"row\">\n                    <ng-container *ngTemplateOutlet=\"dt.groupHeaderTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n                    <ng-container *ngTemplateOutlet=\"dt.expandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}\"></ng-container>\n                    <ng-container *ngIf=\"dt.groupFooterTemplate && dt.rowGroupMode === 'subheader' && shouldRenderRowGroupFooter(value, rowData, rowIndex)\" role=\"row\">\n                        <ng-container *ngTemplateOutlet=\"dt.groupFooterTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                    </ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.frozenExpandedRowTemplate && frozen\">\n            <ng-template ngFor let-rowData let-rowIndex=\"index\" [ngForOf]=\"value\" [ngForTrackBy]=\"dt.rowTrackBy\">\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, expanded: dt.isRowExpanded(rowData), editing: (dt.editMode === 'row' && dt.isRowEditing(rowData)), frozen: frozen}\"></ng-container>\n                <ng-container *ngIf=\"dt.isRowExpanded(rowData)\">\n                    <ng-container *ngTemplateOutlet=\"dt.frozenExpandedRowTemplate; context: {$implicit: rowData, rowIndex: dt.paginator ? (dt.first + rowIndex) : rowIndex, columns: columns, frozen: frozen}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"dt.loading\">\n            <ng-container *ngTemplateOutlet=\"dt.loadingBodyTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"dt.isEmpty() && !dt.loading\">\n            <ng-container *ngTemplateOutlet=\"dt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableBody implements AfterViewInit, OnDestroy {\n\n    @Input(\"pTableBody\") columns: any[];\n\n    @Input(\"pTableBodyTemplate\") template: TemplateRef<any>;\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n        if (this.frozenRows) {\n            this.updateFrozenRowStickyPosition();\n        }\n\n        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n            this.updateFrozenRowGroupHeaderStickyPosition();\n        }\n    }\n\n    @Input() frozen: boolean;\n\n    @Input() frozenRows: boolean;\n\n    subscription: Subscription;\n\n    _value: any[];\n\n    ngAfterViewInit() {\n        if (this.frozenRows) {\n            this.updateFrozenRowStickyPosition();\n        }\n\n        if (this.dt.scrollable && this.dt.rowGroupMode === 'subheader') {\n            this.updateFrozenRowGroupHeaderStickyPosition();\n        }\n    }\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef, public el: ElementRef) {\n        this.subscription = this.dt.tableService.valueSource$.subscribe(() => {\n            if (this.dt.virtualScroll) {\n                this.cd.detectChanges();\n            }\n        });\n    }\n\n    shouldRenderRowGroupHeader(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let prevRowData = value[i - 1];\n        if (prevRowData) {\n            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== previousRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    shouldRenderRowGroupFooter(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let nextRowData = value[i + 1];\n        if (nextRowData) {\n            let nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== nextRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    shouldRenderRowspan(value, rowData, i) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let prevRowData = value[i - 1];\n        if (prevRowData) {\n            let previousRowFieldData = ObjectUtils.resolveFieldData(prevRowData, this.dt.groupRowsBy);\n            return currentRowFieldData !== previousRowFieldData;\n        }\n        else {\n            return true;\n        }\n    }\n\n    calculateRowGroupSize(value, rowData, index) {\n        let currentRowFieldData = ObjectUtils.resolveFieldData(rowData, this.dt.groupRowsBy);\n        let nextRowFieldData = currentRowFieldData;\n        let groupRowSpan = 0;\n\n        while (currentRowFieldData === nextRowFieldData) {\n            groupRowSpan++;\n            let nextRowData = value[++index];\n            if (nextRowData) {\n                nextRowFieldData = ObjectUtils.resolveFieldData(nextRowData, this.dt.groupRowsBy);\n            }\n            else {\n                break;\n            }\n        }\n\n        return groupRowSpan === 1 ? null : groupRowSpan;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n    updateFrozenRowStickyPosition() {\n        this.el.nativeElement.style.top = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling) + 'px';\n    }\n\n    updateFrozenRowGroupHeaderStickyPosition() {\n        if (this.el.nativeElement.previousElementSibling) {\n            let tableHeaderHeight = DomHandler.getOuterHeight(this.el.nativeElement.previousElementSibling);\n            this.dt.rowGroupHeaderStyleObject.top = tableHeaderHeight + 'px';\n        }\n    }\n}\n\n@Directive({\n    selector: '[pRowGroupHeader]',\n    host: {\n        'class': 'p-rowgroup-header p-element',\n        '[style.top]': \"getFrozenRowGroupHeaderStickyPosition\"\n    }\n})\nexport class RowGroupHeader {\n\n    constructor(public dt: Table) { }\n\n    get getFrozenRowGroupHeaderStickyPosition() {\n        return this.dt.rowGroupHeaderStyleObject ? this.dt.rowGroupHeaderStyleObject.top : '';\n    }\n }\n\n@Directive({\n    selector: '[pFrozenColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-frozen-column]': 'frozen'\n    }\n})\nexport class FrozenColumn implements AfterViewInit {\n\n    @Input() get frozen(): boolean {\n        return this._frozen;\n    }\n\n    set frozen(val: boolean) {\n        this._frozen = val;\n        this.updateStickyPosition();\n    }\n\n    @Input() alignFrozen: string = \"left\";\n\n    constructor(private el: ElementRef) { }\n\n    ngAfterViewInit() {\n        this.updateStickyPosition();\n    }\n\n    _frozen: boolean = true;\n\n    updateStickyPosition() {\n        if (this._frozen) {\n            if (this.alignFrozen === 'right') {\n                let right = 0;\n                let next = this.el.nativeElement.nextElementSibling;\n                if (next) {\n                    right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right);\n                }\n                this.el.nativeElement.style.right = right + 'px';\n            }\n            else {\n                let left = 0;\n                let prev = this.el.nativeElement.previousElementSibling;\n                if (prev) {\n                    left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left);\n                }\n                this.el.nativeElement.style.left = left + 'px';\n            }\n\n            let filterRow = this.el.nativeElement.parentElement.nextElementSibling;\n\n            if (filterRow) {\n                let index = DomHandler.index(this.el.nativeElement);\n                if (filterRow.children && filterRow.children[index]) {\n                    filterRow.children[index].style.left = this.el.nativeElement.style.left;\n                    filterRow.children[index].style.right = this.el.nativeElement.style.right;\n                }\n            }\n        }\n    }\n}\n@Directive({\n    selector: '[pSortableColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-sortable-column]': 'isEnabled()',\n        '[class.p-highlight]': 'sorted',\n        '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n        '[attr.role]': '\"columnheader\"',\n        '[attr.aria-sort]': 'sortOrder'\n    }\n})\nexport class SortableColumn implements OnInit, OnDestroy {\n\n    @Input(\"pSortableColumn\") field: string;\n\n    @Input() pSortableColumnDisabled: boolean;\n\n    sorted: boolean;\n\n    sortOrder: string;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n                this.updateSortState();\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.updateSortState();\n        }\n    }\n\n    updateSortState() {\n        this.sorted = this.dt.isSorted(this.field);\n        this.sortOrder = this.sorted ? (this.dt.sortOrder === 1 ? 'ascending' : 'descending') : 'none';\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled() && !this.isFilterElement(<HTMLElement> event.target)) {\n            this.updateSortState();\n            this.dt.sort({\n                originalEvent: event,\n                field: this.field\n            });\n\n            DomHandler.clearSelection();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKey(event: MouseEvent) {\n        this.onClick(event);\n    }\n\n    isEnabled() {\n        return this.pSortableColumnDisabled !== true;\n    }\n\n    isFilterElement(element: HTMLElement) {\n        return DomHandler.hasClass(element, 'pi-filter-icon') || DomHandler.hasClass(element, 'p-column-filter-menu-button');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n\n@Component({\n    selector: 'p-sortIcon',\n    template: `\n        <i class=\"p-sortable-column-icon pi pi-fw\" [ngClass]=\"{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}\"></i>\n        <span *ngIf=\"isMultiSorted()\" class=\"p-sortable-column-badge\">{{getBadgeValue()}}</span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SortIcon implements OnInit, OnDestroy {\n\n    @Input() field: string;\n\n    subscription: Subscription;\n\n    sortOrder: number;\n\n    constructor(public dt: Table, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.sortSource$.subscribe(sortMeta => {\n            this.updateSortState();\n        });\n    }\n\n    ngOnInit() {\n        this.updateSortState();\n    }\n\n    onClick(event){\n        event.preventDefault();\n    }\n\n    updateSortState() {\n        if (this.dt.sortMode === 'single') {\n            this.sortOrder = this.dt.isSorted(this.field) ? this.dt.sortOrder : 0;\n        }\n        else if (this.dt.sortMode === 'multiple') {\n            let sortMeta = this.dt.getSortMeta(this.field);\n            this.sortOrder = sortMeta ? sortMeta.order: 0;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    getMultiSortMetaIndex() {\n        let multiSortMeta = this.dt._multiSortMeta;\n        let index = -1;\n\n        if (multiSortMeta && this.dt.sortMode === 'multiple' && (this.dt.showInitialSortBadge || multiSortMeta.length > 1)) {\n\n            for (let i = 0; i < multiSortMeta.length; i++) {\n                let meta = multiSortMeta[i];\n                if (meta.field === this.field || meta.field === this.field) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    getBadgeValue() {\n        let index = this.getMultiSortMetaIndex();\n\n        return this.dt.groupRowsBy && index > -1 ? index : index + 1;\n    }\n\n    isMultiSorted() {\n        return this.dt.sortMode === 'multiple' && this.getMultiSortMetaIndex() > -1;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[pSelectableRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-selectable-row]': 'isEnabled()',\n        '[class.p-highlight]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class SelectableRow implements OnInit, OnDestroy {\n\n    @Input(\"pSelectableRow\") data: any;\n\n    @Input(\"pSelectableRowIndex\") index: number;\n\n    @Input() pSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.dt.isSelected(this.data);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.dt.isSelected(this.data);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n        }\n    }\n\n    @HostListener('touchend', ['$event'])\n    onTouchEnd(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowTouchEnd(event);\n        }\n    }\n\n    @HostListener('keydown.arrowdown', ['$event'])\n    onArrowDownKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        const row = <HTMLTableRowElement>event.currentTarget;\n        const nextRow = this.findNextSelectableRow(row);\n\n        if (nextRow) {\n            nextRow.focus();\n        }\n\n        event.preventDefault();\n    }\n\n    @HostListener('keydown.arrowup', ['$event'])\n    onArrowUpKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        const row = <HTMLTableRowElement>event.currentTarget;\n        const prevRow = this.findPrevSelectableRow(row);\n\n        if (prevRow) {\n            prevRow.focus();\n        }\n\n        event.preventDefault();\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    @HostListener('keydown.shift.enter', ['$event'])\n    @HostListener('keydown.meta.enter', ['$event'])\n    onEnterKeyDown(event: KeyboardEvent) {\n        if (!this.isEnabled()) {\n            return;\n        }\n\n        this.dt.handleRowClick({\n            originalEvent: event,\n            rowData: this.data,\n            rowIndex: this.index\n        });\n    }\n\n    @HostListener('keydown.pagedown')\n    @HostListener('keydown.pageup')\n    @HostListener('keydown.home')\n    @HostListener('keydown.end')\n    onPageDownKeyDown() {\n        if (this.dt.virtualScroll) {\n            this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n        }\n    }\n\n    @HostListener('keydown.space')\n    onSpaceKeydown() {\n        if (this.dt.virtualScroll && !this.dt.editingCell) {\n            this.dt.virtualScrollBody.elementRef.nativeElement.focus();\n        }\n    }\n\n    findNextSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n        let nextRow = <HTMLTableRowElement> row.nextElementSibling;\n        if (nextRow) {\n            if (DomHandler.hasClass(nextRow, 'p-selectable-row'))\n                return nextRow;\n            else\n                return this.findNextSelectableRow(nextRow);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findPrevSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n        let prevRow = <HTMLTableRowElement> row.previousElementSibling;\n        if (prevRow) {\n            if (DomHandler.hasClass(prevRow, 'p-selectable-row'))\n                return prevRow;\n            else\n                return this.findPrevSelectableRow(prevRow);\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.pSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pSelectableRowDblClick]',\n    host: {\n        'class': 'p-element',\n        '[class.p-selectable-row]': 'isEnabled()',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class SelectableRowDblClick implements OnInit, OnDestroy {\n\n    @Input(\"pSelectableRowDblClick\") data: any;\n\n    @Input(\"pSelectableRowIndex\") index: number;\n\n    @Input() pSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.dt.isSelected(this.data);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.dt.isSelected(this.data);\n        }\n    }\n\n    @HostListener('dblclick', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n        }\n    }\n\n    isEnabled() {\n        return this.pSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pContextMenuRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight-contextmenu]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class ContextMenuRow {\n\n    @Input(\"pContextMenuRow\") data: any;\n\n    @Input(\"pContextMenuRowIndex\") index: number;\n\n    @Input() pContextMenuRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, private el: ElementRef) {\n        if (this.isEnabled()) {\n            this.subscription = this.dt.tableService.contextMenuSource$.subscribe((data) => {\n                this.selected = this.dt.equals(this.data, data);\n            });\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onContextMenu(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.handleRowRightClick({\n                originalEvent: event,\n                rowData: this.data,\n                rowIndex: this.index\n            });\n\n            this.el.nativeElement.focus();\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.pContextMenuRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pRowToggler]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class RowToggler {\n\n    @Input('pRowToggler') data: any;\n\n    @Input() pRowTogglerDisabled: boolean;\n\n    constructor(public dt: Table) { }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.dt.toggleRow(this.data, event);\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.pRowTogglerDisabled !== true;\n    }\n}\n\n@Directive({\n    selector: '[pResizableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ResizableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() pResizableColumnDisabled: boolean;\n\n    resizer: HTMLSpanElement;\n\n    resizerMouseDownListener: any;\n\n    documentMouseMoveListener: any;\n\n    documentMouseUpListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n            this.resizer = document.createElement('span');\n            this.resizer.className = 'p-column-resizer';\n            this.el.nativeElement.appendChild(this.resizer);\n\n            this.zone.runOutsideAngular(() => {\n                this.resizerMouseDownListener = this.onMouseDown.bind(this);\n                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n            });\n        }\n    }\n\n    bindDocumentEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n            document.addEventListener('mousemove', this.documentMouseMoveListener);\n\n            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n            document.addEventListener('mouseup', this.documentMouseUpListener);\n        });\n    }\n\n    unbindDocumentEvents() {\n        if (this.documentMouseMoveListener) {\n            document.removeEventListener('mousemove', this.documentMouseMoveListener);\n            this.documentMouseMoveListener = null;\n        }\n\n        if (this.documentMouseUpListener) {\n            document.removeEventListener('mouseup', this.documentMouseUpListener);\n            this.documentMouseUpListener = null;\n        }\n    }\n\n    onMouseDown(event: MouseEvent) {\n        if (event.which === 1) {\n            this.dt.onColumnResizeBegin(event);\n            this.bindDocumentEvents();\n        }\n    }\n\n    onDocumentMouseMove(event: MouseEvent) {\n        this.dt.onColumnResize(event);\n    }\n\n    onDocumentMouseUp(event: MouseEvent) {\n        this.dt.onColumnResizeEnd();\n        this.unbindDocumentEvents();\n    }\n\n    isEnabled() {\n        return this.pResizableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.resizerMouseDownListener) {\n            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n        }\n\n        this.unbindDocumentEvents();\n    }\n}\n\n@Directive({\n    selector: '[pReorderableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() pReorderableColumnDisabled: boolean;\n\n    dragStartListener: any;\n\n    dragOverListener: any;\n\n    dragEnterListener: any;\n\n    dragLeaveListener: any;\n\n    mouseDownListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragOverListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragEnterListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n            this.el.nativeElement.draggable = false;\n        else\n            this.el.nativeElement.draggable = true;\n    }\n\n    onDragStart(event) {\n        this.dt.onColumnDragStart(event, this.el.nativeElement);\n    }\n\n    onDragOver(event) {\n        event.preventDefault();\n    }\n\n    onDragEnter(event) {\n        this.dt.onColumnDragEnter(event, this.el.nativeElement);\n    }\n\n    onDragLeave(event) {\n        this.dt.onColumnDragLeave(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled()) {\n            this.dt.onColumnDrop(event, this.el.nativeElement);\n        }\n    }\n\n    isEnabled() {\n        return this.pReorderableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n    }\n\n}\n\n@Directive({\n    selector: '[pEditableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class EditableColumn implements AfterViewInit, OnDestroy {\n\n    @Input(\"pEditableColumn\") data: any;\n\n    @Input(\"pEditableColumnField\") field: any;\n\n    @Input(\"pEditableColumnRowIndex\") rowIndex: number;\n\n    @Input() pEditableColumnDisabled: boolean;\n\n    @Input() pFocusCellSelector: string;\n\n    overlayEventListener;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.dt.selfClick = true;\n\n            if (this.dt.editingCell) {\n                if (this.dt.editingCell !== this.el.nativeElement) {\n                    if (!this.dt.isEditingCellValid()) {\n                        return;\n                    }\n\n                    this.closeEditingCell(true, event);\n                    this.openCell();\n                }\n            }\n            else {\n                this.openCell();\n            }\n        }\n    }\n\n    openCell() {\n        this.dt.updateEditingCell(this.el.nativeElement, this.data, this.field, this.rowIndex);\n        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n        this.dt.onEditInit.emit({field: this.field, data: this.data, index: this.rowIndex});\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let focusCellSelector = this.pFocusCellSelector || 'input, textarea, select';\n                let focusableElement = DomHandler.findSingle(this.el.nativeElement, focusCellSelector);\n\n                if (focusableElement) {\n                    focusableElement.focus();\n                }\n            }, 50);\n        });\n\n        this.overlayEventListener = (e) => {\n            if (this.el && this.el.nativeElement.contains(e.target)) {\n                this.dt.selfClick = true;\n            }\n        }\n\n        this.dt.overlaySubscription = this.dt.overlayService.clickObservable.subscribe(this.overlayEventListener);\n    }\n\n    closeEditingCell(completed, event) {\n        if (completed)\n            this.dt.onEditComplete.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex});\n        else\n            this.dt.onEditCancel.emit({field: this.dt.editingCellField, data: this.dt.editingCellData, originalEvent: event, index: this.dt.editingCellRowIndex});\n\n        DomHandler.removeClass(this.dt.editingCell, 'p-cell-editing');\n        this.dt.editingCell = null;\n        this.dt.editingCellData = null;\n        this.dt.editingCellField = null;\n        this.dt.unbindDocumentEditListener();\n\n        if (this.dt.overlaySubscription) {\n            this.dt.overlaySubscription.unsubscribe();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (this.dt.isEditingCellValid()) {\n                this.closeEditingCell(true, event);\n            }\n\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('keydown.escape', ['$event'])\n    onEscapeKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (this.dt.isEditingCellValid()) {\n                this.closeEditingCell(false, event);\n            }\n\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('keydown.tab', ['$event'])\n    @HostListener('keydown.shift.tab', ['$event'])\n    @HostListener('keydown.meta.tab', ['$event'])\n    onShiftKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            if (event.shiftKey)\n                this.moveToPreviousCell(event);\n            else{\n                this.moveToNextCell(event);\n            }\n        }\n    }\n    @HostListener('keydown.arrowdown', ['$event'])\n    onArrowDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            let currentCell = this.findCell(event.target);\n            if (currentCell) {\n                let cellIndex = DomHandler.index(currentCell);\n                let targetCell = this.findNextEditableColumnByIndex(currentCell, cellIndex);\n\n                if (targetCell) {\n                    if (this.dt.isEditingCellValid()) {\n                        this.closeEditingCell(true, event);\n                    }\n\n                    DomHandler.invokeElementMethod(event.target, 'blur');\n                    DomHandler.invokeElementMethod(targetCell, 'click');\n                }\n\n                event.preventDefault();\n            }\n        }\n    }\n\n    @HostListener('keydown.arrowup', ['$event'])\n    onArrowUp(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            let currentCell = this.findCell(event.target);\n            if (currentCell) {\n                let cellIndex = DomHandler.index(currentCell);\n                let targetCell = this.findPrevEditableColumnByIndex(currentCell, cellIndex);\n\n                if (targetCell) {\n                    if (this.dt.isEditingCellValid()) {\n                        this.closeEditingCell(true, event);\n                    }\n\n                    DomHandler.invokeElementMethod(event.target, 'blur');\n                    DomHandler.invokeElementMethod(targetCell, 'click');\n                }\n\n                event.preventDefault();\n            }\n        }\n    }\n\n    @HostListener('keydown.arrowleft', ['$event'])\n    onArrowLeft(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            this.moveToPreviousCell(event);\n        }\n    }\n\n    @HostListener('keydown.arrowright', ['$event'])\n    onArrowRight(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            this.moveToNextCell(event);\n        }\n    }\n\n    findCell(element) {\n        if (element) {\n            let cell = element;\n            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n                cell = cell.parentElement;\n            }\n\n            return cell;\n        }\n        else {\n            return null;\n        }\n    }\n\n    moveToPreviousCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        if (currentCell) {\n            let targetCell = this.findPreviousEditableColumn(currentCell);\n\n            if (targetCell) {\n                if (this.dt.isEditingCellValid()) {\n                    this.closeEditingCell(true, event);\n                }\n\n                DomHandler.invokeElementMethod(event.target, 'blur');\n                DomHandler.invokeElementMethod(targetCell, 'click');\n                event.preventDefault();\n            }\n        }\n    }\n\n    moveToNextCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        if (currentCell) {\n            let targetCell = this.findNextEditableColumn(currentCell);\n\n            if (targetCell) {\n                if (this.dt.isEditingCellValid()) {\n                    this.closeEditingCell(true, event);\n                }\n\n                DomHandler.invokeElementMethod(event.target, 'blur');\n                DomHandler.invokeElementMethod(targetCell, 'click');\n                event.preventDefault();\n            }\n        }\n    }\n\n    findPreviousEditableColumn(cell: Element) {\n        let prevCell = cell.previousElementSibling;\n\n        if (!prevCell) {\n            let previousRow = cell.parentElement.previousElementSibling;\n            if (previousRow) {\n                prevCell = previousRow.lastElementChild;\n            }\n        }\n\n        if (prevCell) {\n            if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n                return prevCell;\n            else\n                return this.findPreviousEditableColumn(prevCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumn(cell: Element) {\n        let nextCell = cell.nextElementSibling;\n\n        if (!nextCell) {\n            let nextRow = cell.parentElement.nextElementSibling;\n            if (nextRow) {\n                nextCell = nextRow.firstElementChild;\n            }\n        }\n\n        if (nextCell) {\n            if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n                return nextCell;\n            else\n                return this.findNextEditableColumn(nextCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumnByIndex(cell: Element, index: number) {\n        let nextRow = cell.parentElement.nextElementSibling;\n\n        if (nextRow) {\n            let nextCell = nextRow.children[index];\n\n            if (nextCell && DomHandler.hasClass(nextCell, 'p-editable-column')) {\n                return nextCell;\n            }\n\n            return null;\n        }\n        else {\n            return null;\n        }\n    }\n\n    findPrevEditableColumnByIndex(cell: Element, index: number) {\n        let prevRow = cell.parentElement.previousElementSibling;\n\n        if (prevRow) {\n            let prevCell = prevRow.children[index];\n\n            if (prevCell && DomHandler.hasClass(prevCell, 'p-editable-column')) {\n                return prevCell;\n            }\n\n            return null;\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.pEditableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.dt.overlaySubscription) {\n            this.dt.overlaySubscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class EditableRow {\n\n    @Input(\"pEditableRow\") data: any;\n\n    @Input() pEditableRowDisabled: boolean;\n\n    constructor(public el: ElementRef) {}\n\n    isEnabled() {\n        return this.pEditableRowDisabled !== true;\n    }\n\n}\n\n@Directive({\n    selector: '[pInitEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class InitEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.initRowEdit(this.editableRow.data);\n        event.preventDefault();\n    }\n\n}\n\n@Directive({\n    selector: '[pSaveEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class SaveEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.saveRowEdit(this.editableRow.data, this.editableRow.el.nativeElement);\n        event.preventDefault();\n    }\n}\n\n@Directive({\n    selector: '[pCancelEditableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CancelEditableRow {\n\n    constructor(public dt: Table, public editableRow: EditableRow) {}\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        this.dt.cancelRowEdit(this.editableRow.data);\n        event.preventDefault();\n    }\n}\n\n@Component({\n    selector: 'p-cellEditor',\n    template: `\n        <ng-container *ngIf=\"editing\">\n            <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!editing\">\n            <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class CellEditor implements AfterContentInit {\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    inputTemplate: TemplateRef<any>;\n\n    outputTemplate: TemplateRef<any>;\n\n    constructor(public dt: Table, @Optional() public editableColumn: EditableColumn, @Optional() public editableRow: EditableRow) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'input':\n                    this.inputTemplate = item.template;\n                    break;\n\n                case 'output':\n                    this.outputTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    get editing(): boolean {\n        return (this.dt.editingCell && this.editableColumn && this.dt.editingCell === this.editableColumn.el.nativeElement) ||\n                (this.editableRow && this.dt.editMode === 'row' && this.dt.isRowEditing(this.editableRow.data));\n    }\n\n}\n\n@Component({\n    selector: 'p-tableRadioButton',\n    template: `\n        <div class=\"p-radiobutton p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-radiobutton-box p-component':true, 'p-highlight':checked, 'p-disabled':disabled}\" role=\"radio\" [attr.aria-checked]=\"checked\">\n                <div class=\"p-radiobutton-icon\"></div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableRadioButton  {\n\n    @Input() disabled: boolean;\n\n    @Input() value: any;\n\n    @Input() index: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabel: string;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.dt.isSelected(this.value);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.dt.isSelected(this.value);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.dt.toggleRowWithRadio({\n                originalEvent: event,\n                rowIndex: this.index\n            }, this.value);\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-tableCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"disabled\"\n                [attr.required]=\"required\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box p-component':true,\n                'p-highlight':checked, 'p-disabled':disabled}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableCheckbox  {\n\n    @Input() disabled: boolean;\n\n    @Input() value: any;\n\n    @Input() index: number;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() required: boolean;\n\n    @Input() ariaLabel: string;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.dt.isSelected(this.value);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.dt.isSelected(this.value);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.dt.toggleRowWithCheckbox({\n                originalEvent: event,\n                rowIndex: this.index\n            }, this.value);\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-tableHeaderCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [attr.id]=\"inputId\" [attr.name]=\"name\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n                [disabled]=\"isDisabled()\" [attr.aria-label]=\"ariaLabel\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-disabled': isDisabled()}\" role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TableHeaderCheckbox  {\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    @Input() disabled: boolean;\n\n    @Input() inputId: string;\n\n    @Input() name: string;\n\n    @Input() ariaLabel: string;\n\n    checked: boolean;\n\n    selectionChangeSubscription: Subscription;\n\n    valueChangeSubscription: Subscription;\n\n    constructor(public dt: Table, public tableService: TableService, public cd: ChangeDetectorRef) {\n        this.valueChangeSubscription = this.dt.tableService.valueSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n\n        this.selectionChangeSubscription = this.dt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.updateCheckedState();\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            if (this.dt.value && this.dt.value.length > 0) {\n                this.dt.toggleRowsWithCheckbox(event, !this.checked);\n            }\n        }\n\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    isDisabled() {\n        return this.disabled || !this.dt.value || !this.dt.value.length;\n    }\n\n    ngOnDestroy() {\n        if (this.selectionChangeSubscription) {\n            this.selectionChangeSubscription.unsubscribe();\n        }\n\n        if (this.valueChangeSubscription) {\n            this.valueChangeSubscription.unsubscribe();\n        }\n    }\n\n    updateCheckedState() {\n        this.cd.markForCheck();\n        if (this.dt.filteredValue && !this.dt.lazy) {\n            const val = this.dt.filteredValue;\n            return (val && val.length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.isAllFilteredValuesChecked());\n        }\n        else {\n            const val = this.dt.value;\n            const length = this.dt.lazy ? this.dt._totalRecords : val ? val.length : 0;\n            return (val && length > 0 && this.dt.selection && this.dt.selection.length > 0 && this.dt.selection.length === length);\n        }\n    }\n\n    isAllFilteredValuesChecked() {\n        if (!this.dt.filteredValue) {\n            return false;\n        }\n        else {\n            for (let rowData of this.dt.filteredValue) {\n                if (!this.dt.isSelected(rowData)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[pReorderableRowHandle]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableRowHandle implements AfterViewInit {\n\n    @Input(\"pReorderableRowHandle\") index: number;\n\n    constructor(public el: ElementRef) {}\n\n    ngAfterViewInit() {\n        DomHandler.addClass(this.el.nativeElement, 'p-datatable-reorderablerow-handle');\n    }\n}\n\n@Directive({\n    selector: '[pReorderableRow]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ReorderableRow implements AfterViewInit {\n\n    @Input(\"pReorderableRow\") index: number;\n\n    @Input() pReorderableRowDisabled: boolean;\n\n    mouseDownListener: any;\n\n    dragStartListener: any;\n\n    dragEndListener: any;\n\n    dragOverListener: any;\n\n    dragLeaveListener: any;\n\n    dropListener: any;\n\n    constructor(public dt: Table, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.el.nativeElement.droppable = true;\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragEndListener = this.onDragEnd.bind(this);\n            this.el.nativeElement.addEventListener('dragend', this.dragEndListener);\n\n            this.dragOverListener = this.onDragOver.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragStartListener) {\n            document.removeEventListener('dragstart', this.dragStartListener);\n            this.dragStartListener = null;\n        }\n\n        if (this.dragEndListener) {\n            document.removeEventListener('dragend', this.dragEndListener);\n            this.dragEndListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle'))\n            this.el.nativeElement.draggable = true;\n        else\n            this.el.nativeElement.draggable = false;\n    }\n\n    onDragStart(event) {\n        this.dt.onRowDragStart(event, this.index);\n    }\n\n    onDragEnd(event) {\n        this.dt.onRowDragEnd(event);\n        this.el.nativeElement.draggable = false;\n    }\n\n    onDragOver(event) {\n        this.dt.onRowDragOver(event, this.index, this.el.nativeElement);\n        event.preventDefault();\n    }\n\n    onDragLeave(event) {\n        this.dt.onRowDragLeave(event, this.el.nativeElement);\n    }\n\n    isEnabled() {\n        return this.pReorderableRowDisabled !== true;\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled() && this.dt.rowDragging) {\n            this.dt.onRowDrop(event, this.el.nativeElement);\n        }\n\n        event.preventDefault()\n    }\n}\n\n@Component({\n    selector: 'p-columnFilterFormElement',\n    template: `\n        <ng-container *ngIf=\"filterTemplate; else builtInElement\">\n            <ng-container *ngTemplateOutlet=\"filterTemplate; context: {$implicit: filterConstraint.value, filterCallback: filterCallback}\"></ng-container>\n        </ng-container>\n        <ng-template #builtInElement>\n            <ng-container [ngSwitch]=\"type\">\n                <input *ngSwitchCase=\"'text'\" type=\"text\" pInputText [value]=\"filterConstraint?.value\" (input)=\"onModelChange($event.target.value)\"\n                    (keydown.enter)=\"onTextInputEnterKeyDown($event)\" [attr.placeholder]=\"placeholder\">\n                <p-inputNumber *ngSwitchCase=\"'numeric'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\" (onKeyDown)=\"onNumericInputKeyDown($event)\" [showButtons]=\"true\" [attr.placeholder]=\"placeholder\"\n                    [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\" [placeholder]=\"placeholder\"\n                    [mode]=\"currency ? 'currency' : 'decimal'\" [locale]=\"locale\" [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-inputNumber>\n                <p-triStateCheckbox *ngSwitchCase=\"'boolean'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\"></p-triStateCheckbox>\n                <p-calendar *ngSwitchCase=\"'date'\" [ngModel]=\"filterConstraint?.value\" (ngModelChange)=\"onModelChange($event)\"></p-calendar>\n            </ng-container>\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColumnFilterFormElement implements OnInit {\n\n    @Input() field: string;\n\n    @Input() type: string;\n\n    @Input() filterConstraint: FilterMetadata;\n\n    @Input() filterTemplate: TemplateRef<any>;\n\n    @Input() placeholder: string;\n\n    @Input() minFractionDigits: number\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    filterCallback: Function;\n\n    constructor(public dt: Table) {}\n\n    ngOnInit() {\n        this.filterCallback = value => {\n            this.filterConstraint.value = value;\n            this.dt._filter();\n        };\n    }\n\n    onModelChange(value: any) {\n        this.filterConstraint.value = value;\n\n        if (this.type === 'boolean' || value === '') {\n            this.dt._filter();\n        }\n    }\n\n    onTextInputEnterKeyDown(event: KeyboardEvent) {\n        this.dt._filter();\n        event.preventDefault();\n    }\n\n    onNumericInputKeyDown(event: KeyboardEvent) {\n        if (event.key === 'Enter') {\n            this.dt._filter();\n            event.preventDefault();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-columnFilter',\n    template: `\n        <div class=\"p-column-filter\" [ngClass]=\"{'p-column-filter-row': display === 'row', 'p-column-filter-menu': display === 'menu'}\">\n            <p-columnFilterFormElement *ngIf=\"display === 'row'\" class=\"p-fluid\" [type]=\"type\" [field]=\"field\" [filterConstraint]=\"dt.filters[field]\" [filterTemplate]=\"filterTemplate\" [placeholder]=\"placeholder\" [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\"\n                                    [locale]=\"locale\"  [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-columnFilterFormElement>\n            <button #icon *ngIf=\"showMenuButton\" type=\"button\" class=\"p-column-filter-menu-button p-link\" aria-haspopup=\"true\" [attr.aria-expanded]=\"overlayVisible\"\n                [ngClass]=\"{'p-column-filter-menu-button-open': overlayVisible, 'p-column-filter-menu-button-active': hasFilter()}\"\n                (click)=\"toggleMenu()\" (keydown)=\"onToggleButtonKeyDown($event)\"><span class=\"pi pi-filter-icon pi-filter\"></span></button>\n            <button #icon *ngIf=\"showClearButton && display === 'row'\" [ngClass]=\"{'p-hidden-space': !hasRowFilter()}\" type=\"button\" class=\"p-column-filter-clear-button p-link\" (click)=\"clearFilter()\"><span class=\"pi pi-filter-slash\"></span></button>\n            <div *ngIf=\"showMenu && overlayVisible\" [ngClass]=\"{'p-column-filter-overlay p-component p-fluid': true, 'p-column-filter-overlay-menu': display === 'menu'}\" (click)=\"onContentClick()\"\n                [@overlayAnimation]=\"'visible'\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" (keydown.escape)=\"onEscape()\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: field}\"></ng-container>\n                <ul *ngIf=\"display === 'row'; else menu\" class=\"p-column-filter-row-items\">\n                    <li class=\"p-column-filter-row-item\" *ngFor=\"let matchMode of matchModes; let i = index;\" (click)=\"onRowMatchModeChange(matchMode.value)\" (keydown)=\"onRowMatchModeKeyDown($event)\" (keydown.enter)=\"this.onRowMatchModeChange(matchMode.value)\"\n                        [ngClass]=\"{'p-highlight': isRowMatchModeSelected(matchMode.value)}\" [attr.tabindex]=\"i === 0 ? '0' : null\">{{matchMode.label}}</li>\n                    <li class=\"p-column-filter-separator\"></li>\n                    <li class=\"p-column-filter-row-item\" (click)=\"onRowClearItemClick()\" (keydown)=\"onRowMatchModeKeyDown($event)\" (keydown.enter)=\"onRowClearItemClick()\">{{noFilterLabel}}</li>\n                </ul>\n                <ng-template #menu>\n                    <div class=\"p-column-filter-operator\" *ngIf=\"isShowOperator\">\n                        <p-dropdown [options]=\"operatorOptions\" [ngModel]=\"operator\" (ngModelChange)=\"onOperatorChange($event)\" styleClass=\"p-column-filter-operator-dropdown\"></p-dropdown>\n                    </div>\n                    <div class=\"p-column-filter-constraints\">\n                        <div *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\" class=\"p-column-filter-constraint\">\n                            <p-dropdown  *ngIf=\"showMatchModes && matchModes\" [options]=\"matchModes\" [ngModel]=\"fieldConstraint.matchMode\" (ngModelChange)=\"onMenuMatchModeChange($event, fieldConstraint)\" styleClass=\"p-column-filter-matchmode-dropdown\"></p-dropdown>\n                            <p-columnFilterFormElement [type]=\"type\" [field]=\"field\" [filterConstraint]=\"fieldConstraint\" [filterTemplate]=\"filterTemplate\" [placeholder]=\"placeholder\"\n                            [minFractionDigits]=\"minFractionDigits\" [maxFractionDigits]=\"maxFractionDigits\" [prefix]=\"prefix\" [suffix]=\"suffix\"\n                            [locale]=\"locale\"  [localeMatcher]=\"localeMatcher\" [currency]=\"currency\" [currencyDisplay]=\"currencyDisplay\" [useGrouping]=\"useGrouping\"></p-columnFilterFormElement>\n                            <div>\n                                <button *ngIf=\"showRemoveIcon\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-column-filter-remove-button p-button-text p-button-danger p-button-sm\" (click)=\"removeConstraint(fieldConstraint)\" pRipple [label]=\"removeRuleButtonLabel\"></button>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"p-column-filter-add-rule\" *ngIf=\"isShowAddConstraint\">\n                        <button type=\"button\" pButton [label]=\"addRuleButtonLabel\" icon=\"pi pi-plus\" class=\"p-column-filter-add-button p-button-text p-button-sm\" (click)=\"addConstraint()\" pRipple></button>\n                    </div>\n                    <div class=\"p-column-filter-buttonbar\">\n                        <button *ngIf=\"showClearButton\" type=\"button\" pButton class=\"p-button-outlined\" (click)=\"clearFilter()\" [label]=\"clearButtonLabel\" pRipple></button>\n                        <button *ngIf=\"showApplyButton\" type=\"button\" pButton (click)=\"applyFilter()\" [label]=\"applyButtonLabel\" pRipple></button>\n                    </div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate; context: {$implicit: field}\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('.12s cubic-bezier(0, 0, 0.2, 1)')\n            ]),\n            transition(':leave', [\n                animate('.1s linear', style({ opacity: 0 }))\n            ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ColumnFilter implements AfterContentInit {\n\n    @Input() field: string;\n\n    @Input() type: string = 'text';\n\n    @Input() display: string = 'row';\n\n    @Input() showMenu: boolean = true;\n\n    @Input() matchMode: string;\n\n    @Input() operator: string = FilterOperator.AND;\n\n    @Input() showOperator: boolean = true;\n\n    @Input() showClearButton: boolean = true;\n\n    @Input() showApplyButton: boolean = true;\n\n    @Input() showMatchModes: boolean = true;\n\n    @Input() showAddButton: boolean = true;\n\n    @Input() hideOnClear: boolean = false;\n\n    @Input() placeholder: string;\n\n    @Input() matchModeOptions: SelectItem[];\n\n    @Input() maxConstraints: number = 2;\n\n    @Input() minFractionDigits: number;\n\n    @Input() maxFractionDigits: number;\n\n    @Input() prefix: string;\n\n    @Input() suffix: string;\n\n    @Input() locale: string;\n\n    @Input() localeMatcher: string;\n\n    @Input() currency: string;\n\n    @Input() currencyDisplay: string;\n\n    @Input() useGrouping: boolean = true;\n\n    @ViewChild('icon') icon: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    constructor(public el: ElementRef, public dt: Table, public renderer: Renderer2, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    overlaySubscription: Subscription;\n\n    headerTemplate: TemplateRef<any>;\n\n    filterTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    operatorOptions: any[];\n\n    overlayVisible: boolean;\n\n    overlay: HTMLElement;\n\n    scrollHandler: any;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    matchModes: SelectItem[];\n\n    translationSubscription: Subscription;\n\n    resetSubscription: Subscription;\n\n    selfClick: boolean;\n\n    overlayEventListener;\n\n    ngOnInit() {\n        if (!this.dt.filters[this.field]) {\n            this.initFieldFilterConstraint();\n        }\n\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.generateMatchModeOptions();\n            this.generateOperatorOptions();\n        });\n\n        this.resetSubscription = this.dt.tableService.resetSource$.subscribe(() => {\n            this.clearFilter();\n        })\n\n        this.generateMatchModeOptions();\n        this.generateOperatorOptions();\n    }\n\n    generateMatchModeOptions() {\n        this.matchModes = this.matchModeOptions ||\n        this.config.filterMatchModeOptions[this.type]?.map(key => {\n            return {label: this.config.getTranslation(key), value: key}\n        });\n    }\n\n    generateOperatorOptions() {\n        this.operatorOptions = [\n            {label: this.config.getTranslation(TranslationKeys.MATCH_ALL), value: FilterOperator.AND},\n            {label: this.config.getTranslation(TranslationKeys.MATCH_ANY), value: FilterOperator.OR}\n        ];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'filter':\n                    this.filterTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.filterTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    initFieldFilterConstraint() {\n        let defaultMatchMode = this.getDefaultMatchMode();\n        this.dt.filters[this.field] = this.display == 'row' ? {value: null, matchMode: defaultMatchMode} : [{value: null, matchMode: defaultMatchMode, operator: this.operator}];\n    }\n\n    onMenuMatchModeChange(value: any, filterMeta: FilterMetadata) {\n        filterMeta.matchMode = value;\n\n        if (!this.showApplyButton) {\n            this.dt._filter();\n        }\n    }\n\n    onRowMatchModeChange(matchMode: string) {\n        (<FilterMetadata> this.dt.filters[this.field]).matchMode = matchMode;\n        this.dt._filter();\n        this.hide();\n    }\n\n    onRowMatchModeKeyDown(event: KeyboardEvent) {\n        let item = <HTMLLIElement> event.target;\n\n        switch(event.key) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(item);\n                if (nextItem) {\n                    item.removeAttribute('tabindex');\n                    nextItem.tabIndex = '0';\n                    nextItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(item);\n                if (prevItem) {\n                    item.removeAttribute('tabindex');\n                    prevItem.tabIndex = '0';\n                    prevItem.focus();\n                }\n\n                event.preventDefault();\n            break;\n        }\n    }\n\n    onRowClearItemClick() {\n        this.clearFilter();\n        this.hide();\n    }\n\n    isRowMatchModeSelected(matchMode: string) {\n        return (<FilterMetadata> this.dt.filters[this.field]).matchMode === matchMode;\n    }\n\n    addConstraint() {\n        (<FilterMetadata[]> this.dt.filters[this.field]).push({value: null, matchMode: this.getDefaultMatchMode(), operator: this.getDefaultOperator()});\n        this.dt._filter();\n    }\n\n    removeConstraint(filterMeta: FilterMetadata) {\n        this.dt.filters[this.field] = (<FilterMetadata[]> this.dt.filters[this.field]).filter(meta => meta !== filterMeta);\n        this.dt._filter();\n    }\n\n    onOperatorChange(value) {\n        (<FilterMetadata[]> this.dt.filters[this.field]).forEach(filterMeta => {\n            filterMeta.operator = value;\n            this.operator = value;\n        });\n\n        if (!this.showApplyButton) {\n            this.dt._filter();\n        }\n    }\n\n    toggleMenu() {\n        this.overlayVisible = !this.overlayVisible;\n    }\n\n    onToggleButtonKeyDown(event: KeyboardEvent) {\n        switch(event.key) {\n            case 'Escape':\n            case 'Tab':\n                this.overlayVisible = false;\n            break;\n\n            case 'ArrowDown':\n                if (this.overlayVisible) {\n                    let focusable = DomHandler.getFocusableElements(this.overlay);\n                    if (focusable) {\n                        focusable[0].focus();\n                    }\n                    event.preventDefault();\n                }\n                else if (event.altKey) {\n                    this.overlayVisible = true;\n                    event.preventDefault();\n                }\n            break;\n        }\n    }\n\n    onEscape() {\n        this.overlayVisible = false;\n        this.icon.nativeElement.focus();\n    }\n\n    findNextItem(item: HTMLLIElement) {\n        let nextItem = <HTMLLIElement> item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-column-filter-separator')  ? this.findNextItem(nextItem) : nextItem;\n        else\n            return item.parentElement.firstElementChild;\n    }\n\n    findPrevItem(item: HTMLLIElement) {\n        let prevItem = <HTMLLIElement> item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-column-filter-separator')  ? this.findPrevItem(prevItem) : prevItem;\n        else\n        return item.parentElement.lastElementChild;\n    }\n\n    onContentClick() {\n        this.selfClick = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n\n                document.body.appendChild(this.overlay);\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                DomHandler.absolutePosition(this.overlay, this.icon.nativeElement)\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n\n                this.overlayEventListener = (e) => {\n                    if (this.overlay && this.overlay.contains(e.target)) {\n                        this.selfClick = true;\n                    }\n                }\n\n                this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n\n                if (this.overlaySubscription) {\n                    this.overlaySubscription.unsubscribe();\n                }\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    getDefaultMatchMode(): string {\n        if (this.matchMode) {\n            return this.matchMode;\n        }\n        else {\n            if (this.type === 'text')\n                return FilterMatchMode.STARTS_WITH;\n            else if (this.type === 'numeric')\n                return FilterMatchMode.EQUALS;\n            else if (this.type === 'date')\n                return FilterMatchMode.DATE_IS;\n            else\n                return FilterMatchMode.CONTAINS;\n        }\n    }\n\n    getDefaultOperator(): string {\n        return this.dt.filters ? (<FilterMetadata[]> this.dt.filters[this.field])[0].operator: this.operator;\n    }\n\n    hasRowFilter() {\n        return this.dt.filters[this.field] && !this.dt.isFilterBlank((<FilterMetadata>this.dt.filters[this.field]).value);\n    }\n\n    get fieldConstraints(): FilterMetadata[] {\n        return this.dt.filters ? <FilterMetadata[]> this.dt.filters[this.field] : null;\n    }\n\n    get showRemoveIcon(): boolean {\n        return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n    }\n\n    get showMenuButton(): boolean {\n        return this.showMenu && (this.display === 'row' ? this.type !== 'boolean': true);\n    }\n\n    get isShowOperator(): boolean {\n        return this.showOperator && this.type !== 'boolean';\n    }\n\n    get isShowAddConstraint(): boolean {\n        return this.showAddButton && this.type !== 'boolean' && (this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints);\n    }\n\n    get applyButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.APPLY);\n    }\n\n    get clearButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.CLEAR);\n    }\n\n    get addRuleButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.ADD_RULE);\n    }\n\n    get removeRuleButtonLabel(): string {\n        return this.config.getTranslation(TranslationKeys.REMOVE_RULE);\n    }\n\n    get noFilterLabel(): string {\n        return this.config.getTranslation(TranslationKeys.NO_FILTER);\n    }\n\n    hasFilter(): boolean {\n        let fieldFilter = this.dt.filters[this.field];\n        if (fieldFilter) {\n            if (Array.isArray(fieldFilter))\n                return !this.dt.isFilterBlank((<FilterMetadata[]> fieldFilter)[0].value);\n            else\n                return !this.dt.isFilterBlank(fieldFilter.value);\n        }\n\n        return false;\n    }\n\n    isOutsideClicked(event): boolean {\n        return !(this.overlay.isSameNode(event.target) || this.overlay.contains(event.target)\n            || this.icon.nativeElement.isSameNode(event.target) || this.icon.nativeElement.contains(event.target)\n            || DomHandler.hasClass(event.target, 'p-column-filter-add-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button')\n            || DomHandler.hasClass(event.target, 'p-column-filter-remove-button') || DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button'));\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'mousedown', event => {\n                if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event)) {\n                    this.hide();\n                }\n\n                this.selfClick = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n            this.selfClick = false;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = () => this.hide();\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    hide() {\n        this.overlayVisible = false;\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n    }\n\n    clearFilter() {\n        this.initFieldFilterConstraint();\n        this.dt._filter();\n        if (this.hideOnClear)\n            this.hide();\n    }\n\n    applyFilter() {\n        this.dt._filter();\n        this.hide();\n    }\n\n    ngOnDestroy() {\n        if (this.overlay) {\n            this.el.nativeElement.appendChild(this.overlay);\n            ZIndexUtils.clear(this.overlay);\n            this.onOverlayHide();\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        if (this.resetSubscription) {\n            this.resetSubscription.unsubscribe();\n        }\n\n        if (this.overlaySubscription) {\n            this.overlaySubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,PaginatorModule,InputTextModule,DropdownModule,ScrollingModule,FormsModule,ButtonModule,SelectButtonModule,CalendarModule,InputNumberModule,TriStateCheckboxModule],\n    exports: [Table,SharedModule,SortableColumn,FrozenColumn,RowGroupHeader,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,SortIcon,\n            TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow,ScrollingModule,ColumnFilter],\n    declarations: [Table,SortableColumn,FrozenColumn,RowGroupHeader,SelectableRow,RowToggler,ContextMenuRow,ResizableColumn,ReorderableColumn,EditableColumn,CellEditor,TableBody,SortIcon,\n            TableRadioButton,TableCheckbox,TableHeaderCheckbox,ReorderableRowHandle,ReorderableRow,SelectableRowDblClick,EditableRow,InitEditableRow,SaveEditableRow,CancelEditableRow,ColumnFilter,ColumnFilterFormElement]\n})\nexport class TableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,161 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+
+class TabMenu {
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngAfterViewInit() {
+        this.updateInkBar();
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    itemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        this.activeItem = item;
+        this.tabChanged = true;
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        if (tabHeader) {
+            this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+            this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+        }
+    }
+}
+TabMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
+TabMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabMenu, selector: "p-tabMenu", inputs: { model: "model", activeItem: "activeItem", popup: "popup", style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, isInline: true, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabMenu', template: `
+        <div [ngClass]="'p-tabmenu p-component'" [ngStyle]="style" [class]="styleClass">
+            <ul #navbar class="p-tabmenu-nav p-reset" role="tablist">
+                <li *ngFor="let item of model; let i = index" role="tab" [ngStyle]="item.style" [class]="item.styleClass" [attr.aria-selected]="activeItem==item" [attr.aria-expanded]="activeItem==item"
+                    [ngClass]="{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}" pTooltip [tooltipOptions]="item.tooltipOptions">
+                    <a *ngIf="!item.routerLink" [attr.href]="item.url" class="p-menuitem-link" role="presentation" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlLabel">{{item.label}}</span>
+                            <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                    <a *ngIf="item.routerLink" [routerLink]="item.routerLink" [queryParams]="item.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="item.routerLinkActiveOptions||{exact:false}"
+                        role="presentation" class="p-menuitem-link" (click)="itemClick($event,item)" (keydown.enter)="itemClick($event,item)" [attr.tabindex]="item.disabled ? null : '0'"
+                        [attr.target]="item.target" [attr.title]="item.title" [attr.id]="item.id"
+                        [fragment]="item.fragment" [queryParamsHandling]="item.queryParamsHandling" [preserveFragment]="item.preserveFragment" [skipLocationChange]="item.skipLocationChange" [replaceUrl]="item.replaceUrl" [state]="item.state" pRipple>
+                        <ng-container *ngIf="!itemTemplate">
+                            <span class="p-menuitem-icon" [ngClass]="item.icon" *ngIf="item.icon"></span>
+                            <span class="p-menuitem-text" *ngIf="item.escape !== false; else htmlRouteLabel">{{item.label}}</span>
+                            <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="item.label"></span></ng-template>
+                        </ng-container>
+                        <ng-container *ngTemplateOutlet="itemTemplate; context: {$implicit: item, index: i}"></ng-container>
+                    </a>
+                </li>
+                <li #inkbar class="p-tabmenu-ink-bar"></li>
+            </ul>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabmenu{overflow-x:auto}.p-tabmenu-nav{display:flex;margin:0;padding:0;list-style-type:none;flex-wrap:nowrap}.p-tabmenu-nav a{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabmenu-nav a:focus{z-index:1}.p-tabmenu-nav .p-menuitem-text{line-height:1}.p-tabmenu-ink-bar{display:none;z-index:1}.p-tabmenu::-webkit-scrollbar{display:none}\n"] }]
+        }], propDecorators: { model: [{
+                type: Input
+            }], activeItem: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TabMenuModule {
+}
+TabMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, declarations: [TabMenu], imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], exports: [TabMenu, RouterModule, SharedModule, TooltipModule] });
+TabMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, imports: [[CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule], RouterModule, SharedModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, SharedModule, RippleModule, TooltipModule],
+                    exports: [TabMenu, RouterModule, SharedModule, TooltipModule],
+                    declarations: [TabMenu]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TabMenu, TabMenuModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tabmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tabmenu.mjs","sources":["../../src/app/components/tabmenu/tabmenu.ts","../../src/app/components/tabmenu/primeng-tabmenu.ts"],"sourcesContent":["import {NgModule,Component,Input,ContentChildren,QueryList,AfterContentInit,AfterViewInit,AfterViewChecked,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation, ViewChild, ElementRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuItem} from 'primeng/api';\nimport {RippleModule} from 'primeng/ripple';\nimport {PrimeTemplate, SharedModule} from 'primeng/api';\nimport {RouterModule} from '@angular/router';\nimport {DomHandler} from 'primeng/dom';\nimport {TooltipModule} from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-tabMenu',\n    template: `\n        <div [ngClass]=\"'p-tabmenu p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <ul #navbar class=\"p-tabmenu-nav p-reset\" role=\"tablist\">\n                <li *ngFor=\"let item of model; let i = index\" role=\"tab\" [ngStyle]=\"item.style\" [class]=\"item.styleClass\" [attr.aria-selected]=\"activeItem==item\" [attr.aria-expanded]=\"activeItem==item\"\n                    [ngClass]=\"{'p-tabmenuitem':true,'p-disabled':item.disabled,'p-highlight':activeItem==item,'p-hidden': item.visible === false}\" pTooltip [tooltipOptions]=\"item.tooltipOptions\">\n                    <a *ngIf=\"!item.routerLink\" [attr.href]=\"item.url\" class=\"p-menuitem-link\" role=\"presentation\" (click)=\"itemClick($event,item)\" (keydown.enter)=\"itemClick($event,item)\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                        [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\" pRipple>\n                        <ng-container *ngIf=\"!itemTemplate\">\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlLabel\">{{item.label}}</span>\n                            <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </ng-container>\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                    </a>\n                    <a *ngIf=\"item.routerLink\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{exact:false}\"\n                        role=\"presentation\" class=\"p-menuitem-link\" (click)=\"itemClick($event,item)\" (keydown.enter)=\"itemClick($event,item)\" [attr.tabindex]=\"item.disabled ? null : '0'\"\n                        [attr.target]=\"item.target\" [attr.title]=\"item.title\" [attr.id]=\"item.id\"\n                        [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\" [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" pRipple>\n                        <ng-container *ngIf=\"!itemTemplate\">\n                            <span class=\"p-menuitem-icon\" [ngClass]=\"item.icon\" *ngIf=\"item.icon\"></span>\n                            <span class=\"p-menuitem-text\" *ngIf=\"item.escape !== false; else htmlRouteLabel\">{{item.label}}</span>\n                            <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"item.label\"></span></ng-template>\n                        </ng-container>\n                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, index: i}\"></ng-container>\n                    </a>\n                </li>\n                <li #inkbar class=\"p-tabmenu-ink-bar\"></li>\n            </ul>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tabmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TabMenu implements AfterContentInit,AfterViewInit,AfterViewChecked {\n\n    @Input() model: MenuItem[];\n\n    @Input() activeItem: MenuItem;\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ViewChild('navbar') navbar: ElementRef;\n\n    @ViewChild('inkbar') inkbar: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    itemTemplate: TemplateRef<any>;\n\n    tabChanged: boolean;\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        this.updateInkBar();\n    }\n\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n\n    itemClick(event: Event, item: MenuItem) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        this.activeItem = item;\n        this.tabChanged = true;\n    }\n\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        if (tabHeader) {\n            this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n            this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,SharedModule,RippleModule,TooltipModule],\n    exports: [TabMenu,RouterModule,SharedModule,TooltipModule],\n    declarations: [TabMenu]\n})\nexport class TabMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,441 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { DomHandler } from 'primeng/dom';
+
+let idx = 0;
+class TabPanel {
+    constructor(tabView, viewContainer, cd) {
+        this.viewContainer = viewContainer;
+        this.cd = cd;
+        this.cache = true;
+        this.tooltipPosition = 'top';
+        this.tooltipPositionStyle = 'absolute';
+        this.id = `p-tabpanel-${idx++}`;
+        this.tabView = tabView;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                default:
+                    this.contentTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    get selected() {
+        return this._selected;
+    }
+    set selected(val) {
+        this._selected = val;
+        if (!this.loaded) {
+            this.cd.detectChanges();
+        }
+        if (val)
+            this.loaded = true;
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    ;
+    set disabled(disabled) {
+        this._disabled = disabled;
+        this.tabView.cd.markForCheck();
+    }
+    get header() {
+        return this._header;
+    }
+    set header(header) {
+        this._header = header;
+        this.tabView.cd.markForCheck();
+    }
+    get leftIcon() {
+        return this._leftIcon;
+    }
+    set leftIcon(leftIcon) {
+        this._leftIcon = leftIcon;
+        this.tabView.cd.markForCheck();
+    }
+    get rightIcon() {
+        return this._rightIcon;
+    }
+    set rightIcon(rightIcon) {
+        this._rightIcon = rightIcon;
+        this.tabView.cd.markForCheck();
+    }
+    ngOnDestroy() {
+        this.view = null;
+    }
+}
+TabPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabPanel, selector: "p-tabPanel", inputs: { closable: "closable", headerStyle: "headerStyle", headerStyleClass: "headerStyleClass", cache: "cache", tooltip: "tooltip", tooltipPosition: "tooltipPosition", tooltipPositionStyle: "tooltipPositionStyle", tooltipStyleClass: "tooltipStyleClass", selected: "selected", disabled: "disabled", header: "header", leftIcon: "leftIcon", rightIcon: "rightIcon" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabPanel, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tabPanel',
+                    template: `
+        <div [attr.id]="id" class="p-tabview-panel" [hidden]="!selected"
+            role="tabpanel" [attr.aria-hidden]="!selected" [attr.aria-labelledby]="id + '-label'" *ngIf="!closed">
+            <ng-content></ng-content>
+            <ng-container *ngIf="contentTemplate && (cache ? loaded : selected)">
+                <ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
+            </ng-container>
+        </div>
+    `,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => TabView)]
+                }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { closable: [{
+                type: Input
+            }], headerStyle: [{
+                type: Input
+            }], headerStyleClass: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }], tooltip: [{
+                type: Input
+            }], tooltipPosition: [{
+                type: Input
+            }], tooltipPositionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], selected: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], header: [{
+                type: Input
+            }], leftIcon: [{
+                type: Input
+            }], rightIcon: [{
+                type: Input
+            }] } });
+class TabView {
+    constructor(el, cd) {
+        this.el = el;
+        this.cd = cd;
+        this.orientation = 'top';
+        this.onChange = new EventEmitter();
+        this.onClose = new EventEmitter();
+        this.activeIndexChange = new EventEmitter();
+        this.backwardIsDisabled = true;
+        this.forwardIsDisabled = false;
+    }
+    ngAfterContentInit() {
+        this.initTabs();
+        this.tabPanels.changes.subscribe(_ => {
+            this.initTabs();
+        });
+    }
+    ngAfterViewChecked() {
+        if (this.tabChanged) {
+            this.updateInkBar();
+            this.tabChanged = false;
+        }
+    }
+    initTabs() {
+        this.tabs = this.tabPanels.toArray();
+        let selectedTab = this.findSelectedTab();
+        if (!selectedTab && this.tabs.length) {
+            if (this.activeIndex != null && this.tabs.length > this.activeIndex)
+                this.tabs[this.activeIndex].selected = true;
+            else
+                this.tabs[0].selected = true;
+            this.tabChanged = true;
+        }
+        this.cd.markForCheck();
+    }
+    open(event, tab) {
+        if (tab.disabled) {
+            if (event) {
+                event.preventDefault();
+            }
+            return;
+        }
+        if (!tab.selected) {
+            let selectedTab = this.findSelectedTab();
+            if (selectedTab) {
+                selectedTab.selected = false;
+            }
+            this.tabChanged = true;
+            tab.selected = true;
+            let selectedTabIndex = this.findTabIndex(tab);
+            this.preventActiveIndexPropagation = true;
+            this.activeIndexChange.emit(selectedTabIndex);
+            this.onChange.emit({ originalEvent: event, index: selectedTabIndex });
+            this.updateScrollBar(selectedTabIndex);
+        }
+        if (event) {
+            event.preventDefault();
+        }
+    }
+    close(event, tab) {
+        if (this.controlClose) {
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab),
+                close: () => {
+                    this.closeTab(tab);
+                }
+            });
+        }
+        else {
+            this.closeTab(tab);
+            this.onClose.emit({
+                originalEvent: event,
+                index: this.findTabIndex(tab)
+            });
+        }
+        event.stopPropagation();
+    }
+    closeTab(tab) {
+        if (tab.disabled) {
+            return;
+        }
+        if (tab.selected) {
+            this.tabChanged = true;
+            tab.selected = false;
+            for (let i = 0; i < this.tabs.length; i++) {
+                let tabPanel = this.tabs[i];
+                if (!tabPanel.closed && !tab.disabled) {
+                    tabPanel.selected = true;
+                    break;
+                }
+            }
+        }
+        tab.closed = true;
+    }
+    findSelectedTab() {
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i].selected) {
+                return this.tabs[i];
+            }
+        }
+        return null;
+    }
+    findTabIndex(tab) {
+        let index = -1;
+        for (let i = 0; i < this.tabs.length; i++) {
+            if (this.tabs[i] == tab) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    get activeIndex() {
+        return this._activeIndex;
+    }
+    set activeIndex(val) {
+        this._activeIndex = val;
+        if (this.preventActiveIndexPropagation) {
+            this.preventActiveIndexPropagation = false;
+            return;
+        }
+        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {
+            this.findSelectedTab().selected = false;
+            this.tabs[this._activeIndex].selected = true;
+            this.tabChanged = true;
+            this.updateScrollBar(val);
+        }
+    }
+    updateInkBar() {
+        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');
+        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';
+        this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';
+    }
+    updateScrollBar(index) {
+        let tabHeader = this.navbar.nativeElement.children[index];
+        tabHeader.scrollIntoView({ block: 'nearest' });
+    }
+    updateButtonState() {
+        const content = this.content.nativeElement;
+        const { scrollLeft, scrollWidth } = content;
+        const width = DomHandler.getWidth(content);
+        this.backwardIsDisabled = scrollLeft === 0;
+        this.forwardIsDisabled = scrollLeft === scrollWidth - width;
+    }
+    onScroll(event) {
+        this.scrollable && this.updateButtonState();
+        event.preventDefault();
+    }
+    getVisibleButtonWidths() {
+        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);
+    }
+    navBackward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft - width;
+        content.scrollLeft = pos <= 0 ? 0 : pos;
+    }
+    navForward() {
+        const content = this.content.nativeElement;
+        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();
+        const pos = content.scrollLeft + width;
+        const lastPos = content.scrollWidth - width;
+        content.scrollLeft = pos >= lastPos ? lastPos : pos;
+    }
+}
+TabView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TabView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TabView, selector: "p-tabView", inputs: { orientation: "orientation", style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "tabPanels", predicate: TabPanel }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabView, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tabView', template: `
+        <div [ngClass]="{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}" [ngStyle]="style" [class]="styleClass">
+            <div class="p-tabview-nav-container">
+                <button *ngIf="scrollable && !backwardIsDisabled" #prevBtn class="p-tabview-nav-prev p-tabview-nav-btn p-link" (click)="navBackward()" type="button" pRipple>
+                    <span class="pi pi-chevron-left"></span>
+                </button>
+                <div #content class="p-tabview-nav-content" (scroll)="onScroll($event)">
+                    <ul #navbar class="p-tabview-nav" role="tablist">
+                        <ng-template ngFor let-tab [ngForOf]="tabs">
+                            <li role="presentation" [ngClass]="{'p-highlight': tab.selected, 'p-disabled': tab.disabled}" [ngStyle]="tab.headerStyle" [class]="tab.headerStyleClass" *ngIf="!tab.closed">
+                                <a role="tab" class="p-tabview-nav-link" [attr.id]="tab.id + '-label'" [attr.aria-selected]="tab.selected" [attr.aria-controls]="tab.id" [pTooltip]="tab.tooltip" [tooltipPosition]="tab.tooltipPosition"
+                                    [attr.aria-selected]="tab.selected" [positionStyle]="tab.tooltipPositionStyle" [tooltipStyleClass]="tab.tooltipStyleClass"
+                                    (click)="open($event,tab)" (keydown.enter)="open($event,tab)" pRipple [attr.tabindex]="tab.disabled ? null : '0'">
+                                    <ng-container *ngIf="!tab.headerTemplate">
+                                        <span class="p-tabview-left-icon" [ngClass]="tab.leftIcon" *ngIf="tab.leftIcon"></span>
+                                        <span class="p-tabview-title">{{tab.header}}</span>
+                                        <span class="p-tabview-right-icon" [ngClass]="tab.rightIcon" *ngIf="tab.rightIcon"></span>
+                                    </ng-container>
+                                    <ng-container *ngTemplateOutlet="tab.headerTemplate"></ng-container>
+                                    <span *ngIf="tab.closable" class="p-tabview-close pi pi-times" (click)="close($event,tab)"></span>
+                                </a>
+                            </li>
+                        </ng-template>
+                        <li #inkbar class="p-tabview-ink-bar"></li>
+                    </ul>
+                </div>
+                <button *ngIf="scrollable && !forwardIsDisabled" #nextBtn class="p-tabview-nav-next p-tabview-nav-btn p-link" (click)="navForward()" type="button" pRipple>
+                    <span class="pi pi-chevron-right"></span>
+                </button>
+            </div>
+            <div class="p-tabview-panels">
+                <ng-content></ng-content>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orientation: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], controlClose: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], content: [{
+                type: ViewChild,
+                args: ['content']
+            }], navbar: [{
+                type: ViewChild,
+                args: ['navbar']
+            }], prevBtn: [{
+                type: ViewChild,
+                args: ['prevBtn']
+            }], nextBtn: [{
+                type: ViewChild,
+                args: ['nextBtn']
+            }], inkbar: [{
+                type: ViewChild,
+                args: ['inkbar']
+            }], tabPanels: [{
+                type: ContentChildren,
+                args: [TabPanel]
+            }], onChange: [{
+                type: Output
+            }], onClose: [{
+                type: Output
+            }], activeIndexChange: [{
+                type: Output
+            }], activeIndex: [{
+                type: Input
+            }] } });
+class TabViewModule {
+}
+TabViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TabViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule], exports: [TabView, TabPanel, SharedModule] });
+TabViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TabViewModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, SharedModule, TooltipModule, RippleModule],
+                    exports: [TabView, TabPanel, SharedModule],
+                    declarations: [TabView, TabPanel]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TabPanel, TabView, TabViewModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tabview.mjs","sources":["../../src/app/components/tabview/tabview.ts","../../src/app/components/tabview/primeng-tabview.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,AfterContentInit,\n        ContentChildren,QueryList,TemplateRef,EmbeddedViewRef,ViewContainerRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation, ViewChild, AfterViewChecked, forwardRef, Inject} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {RippleModule} from 'primeng/ripple';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\n\nlet idx: number = 0;\n\n@Component({\n    selector: 'p-tabPanel',\n    template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TabPanel implements AfterContentInit,OnDestroy {\n\n    @Input() closable: boolean;\n\n    @Input() headerStyle: any;\n\n    @Input() headerStyleClass: string;\n\n    @Input() cache: boolean = true;\n\n    @Input() tooltip: any;\n\n    @Input() tooltipPosition: string = 'top';\n\n    @Input() tooltipPositionStyle: string = 'absolute';\n\n    @Input() tooltipStyleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    closed: boolean;\n\n    view: EmbeddedViewRef<any>;\n\n    _selected: boolean;\n\n    _disabled: boolean;\n\n    _header: string;\n\n    _leftIcon: string;\n\n    _rightIcon: string;\n\n    loaded: boolean;\n\n    id: string = `p-tabpanel-${idx++}`;\n\n    contentTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    tabView: TabView;\n\n    constructor(@Inject(forwardRef(() => TabView)) tabView, public viewContainer: ViewContainerRef, public cd: ChangeDetectorRef) {\n        this.tabView = tabView as TabView;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    @Input() get selected(): boolean {\n        return this._selected;\n    }\n\n    set selected(val: boolean) {\n        this._selected = val;\n\n        if (!this.loaded) {\n            this.cd.detectChanges();\n        }\n\n        if (val)\n            this.loaded = true;\n    }\n\n    @Input() get disabled(): boolean {\n        return this._disabled;\n    };\n\n    set disabled(disabled: boolean) {\n        this._disabled = disabled;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get header(): string {\n        return this._header;\n    }\n\n    set header(header: string) {\n        this._header = header;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get leftIcon(): string {\n        return this._leftIcon;\n    }\n\n    set leftIcon(leftIcon :string) {\n        this._leftIcon = leftIcon;\n        this.tabView.cd.markForCheck();\n    }\n\n    @Input() get rightIcon(): string {\n        return this._rightIcon;\n    }\n\n    set rightIcon(rightIcon :string) {\n        this._rightIcon = rightIcon;\n        this.tabView.cd.markForCheck();\n    }\n\n    ngOnDestroy() {\n        this.view = null;\n    }\n}\n\n@Component({\n    selector: 'p-tabView',\n    template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush,\n   encapsulation: ViewEncapsulation.None,\n   styleUrls: ['./tabview.css'],\n   host: {\n    'class': 'p-element'\n}\n})\nexport class TabView implements AfterContentInit,AfterViewChecked,BlockableUI {\n\n    @Input() orientation: string = 'top';\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() controlClose: boolean;\n\n    @Input() scrollable: boolean;\n\n    @ViewChild('content') content: ElementRef;\n\n    @ViewChild('navbar') navbar: ElementRef;\n\n    @ViewChild('prevBtn') prevBtn: ElementRef;\n\n    @ViewChild('nextBtn') nextBtn: ElementRef;\n\n    @ViewChild('inkbar') inkbar: ElementRef;\n\n    @ContentChildren(TabPanel) tabPanels: QueryList<TabPanel>;\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n\n    initialized: boolean;\n\n    tabs: TabPanel[];\n\n    _activeIndex: number;\n\n    preventActiveIndexPropagation: boolean;\n\n    tabChanged: boolean;\n\n    backwardIsDisabled: boolean = true;\n\n    forwardIsDisabled: boolean = false;\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngAfterContentInit() {\n        this.initTabs();\n\n        this.tabPanels.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n\n    initTabs(): void {\n        this.tabs = this.tabPanels.toArray();\n        let selectedTab: TabPanel = this.findSelectedTab();\n        if (!selectedTab && this.tabs.length) {\n            if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n                this.tabs[this.activeIndex].selected = true;\n            else\n                this.tabs[0].selected = true;\n\n            this.tabChanged = true;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    open(event: Event, tab: TabPanel) {\n        if (tab.disabled) {\n            if (event) {\n                event.preventDefault();\n            }\n            return;\n        }\n\n        if (!tab.selected) {\n            let selectedTab: TabPanel = this.findSelectedTab();\n            if (selectedTab) {\n                selectedTab.selected = false\n            }\n\n            this.tabChanged = true;\n            tab.selected = true;\n            let selectedTabIndex = this.findTabIndex(tab);\n            this.preventActiveIndexPropagation = true;\n            this.activeIndexChange.emit(selectedTabIndex);\n            this.onChange.emit({originalEvent: event, index: selectedTabIndex});\n\n            this.updateScrollBar(selectedTabIndex);\n        }\n\n        if (event) {\n            event.preventDefault();\n        }\n    }\n\n    close(event: Event, tab: TabPanel) {\n        if (this.controlClose) {\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab),\n                close: () => {\n                    this.closeTab(tab);\n                }}\n            );\n        }\n        else {\n            this.closeTab(tab);\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab)\n            });\n        }\n\n        event.stopPropagation();\n    }\n\n    closeTab(tab: TabPanel) {\n        if (tab.disabled) {\n            return;\n        }\n        if (tab.selected) {\n            this.tabChanged = true;\n            tab.selected = false;\n            for(let i = 0; i < this.tabs.length; i++) {\n                let tabPanel = this.tabs[i];\n                if (!tabPanel.closed&&!tab.disabled) {\n                    tabPanel.selected = true;\n                    break;\n                }\n            }\n        }\n\n        tab.closed = true;\n    }\n\n    findSelectedTab() {\n        for(let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i].selected) {\n                return this.tabs[i];\n            }\n        }\n        return null;\n    }\n\n    findTabIndex(tab: TabPanel) {\n        let index = -1;\n        for(let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i] == tab) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    @Input() get activeIndex(): number {\n        return this._activeIndex;\n    }\n\n    set activeIndex(val:number) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n\n        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n            this.findSelectedTab().selected = false;\n            this.tabs[this._activeIndex].selected = true;\n            this.tabChanged = true;\n\n            this.updateScrollBar(val);\n        }\n    }\n\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n        this.inkbar.nativeElement.style.left =  DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n    }\n\n    updateScrollBar(index) {\n        let tabHeader = this.navbar.nativeElement.children[index];\n        tabHeader.scrollIntoView({ block: 'nearest' })\n    }\n\n    updateButtonState() {\n        const content = this.content.nativeElement;\n        const { scrollLeft, scrollWidth } = content;\n        const width = DomHandler.getWidth(content);\n\n        this.backwardIsDisabled = scrollLeft === 0;\n        this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n    }\n\n    onScroll(event) {\n        this.scrollable && this.updateButtonState();\n\n        event.preventDefault();\n    }\n\n    getVisibleButtonWidths() {\n        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n    }\n\n    navBackward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft - width;\n        content.scrollLeft = pos <= 0 ? 0 : pos;\n    }\n\n    navForward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft + width;\n        const lastPos = content.scrollWidth - width;\n\n        content.scrollLeft = pos >= lastPos ? lastPos : pos;\n    }\n}\n\n\n@NgModule({\n    imports: [CommonModule,SharedModule,TooltipModule,RippleModule],\n    exports: [TabView,TabPanel,SharedModule],\n    declarations: [TabView,TabPanel]\n})\nexport class TabViewModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,68 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+
+class Tag {
+    containerClass() {
+        return {
+            'p-tag p-component': true,
+            'p-tag-info': this.severity === 'info',
+            'p-tag-success': this.severity === 'success',
+            'p-tag-warning': this.severity === 'warning',
+            'p-tag-danger': this.severity === 'danger',
+            'p-tag-rounded': this.rounded
+        };
+    }
+}
+Tag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, deps: [], target: i0.ɵɵFactoryTarget.Component });
+Tag.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tag, selector: "p-tag", inputs: { styleClass: "styleClass", style: "style", severity: "severity", value: "value", icon: "icon", rounded: "rounded" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, isInline: true, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tag, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tag', template: `
+        <span [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">
+            <ng-content></ng-content>
+            <span class="p-tag-icon" [ngClass]="icon" *ngIf="icon"></span>
+            <span class="p-tag-value">{{value}}</span>
+        </span>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tag{display:inline-flex;align-items:center;justify-content:center}.p-tag-icon,.p-tag-value,.p-tag-icon.pi{line-height:1.5}.p-tag.p-tag-rounded{border-radius:10rem}\n"] }]
+        }], propDecorators: { styleClass: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], severity: [{
+                type: Input
+            }], value: [{
+                type: Input
+            }], icon: [{
+                type: Input
+            }], rounded: [{
+                type: Input
+            }] } });
+class TagModule {
+}
+TagModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TagModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, declarations: [Tag], imports: [CommonModule], exports: [Tag] });
+TagModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TagModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tag],
+                    declarations: [Tag]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tag, TagModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tag.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tag.mjs","sources":["../../src/app/components/tag/tag.ts","../../src/app/components/tag/primeng-tag.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'p-tag',\n    template: `\n        <span [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n            <ng-content></ng-content>\n            <span class=\"p-tag-icon\" [ngClass]=\"icon\" *ngIf=\"icon\"></span>\n            <span class=\"p-tag-value\">{{value}}</span>\n        </span>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tag.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tag {\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() severity: string;\n\n    @Input() value: string;\n\n    @Input() icon: string;\n\n    @Input() rounded: boolean;\n\n\n    containerClass() {\n        return {\n            'p-tag p-component': true,\n            'p-tag-info': this.severity === 'info',\n            'p-tag-success': this.severity === 'success',\n            'p-tag-warning': this.severity === 'warning',\n            'p-tag-danger': this.severity === 'danger',\n            'p-tag-rounded': this.rounded\n        };\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Tag],\n    declarations: [Tag]\n})\nexport class TagModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;MAmBa,GAAG;IAeZ,cAAc;QACV,OAAO;YACH,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM;YACtC,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC5C,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC5C,cAAc,EAAE,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1C,eAAe,EAAE,IAAI,CAAC,OAAO;SAChC,CAAC;KACL;;gGAxBQ,GAAG;oFAAH,GAAG,kNAdF;;;;;;KAMT;2FAQQ,GAAG;kBAhBf,SAAS;+BACI,OAAO,YACP;;;;;;KAMT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;8BAIQ,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;;MAoBG,SAAS;;sGAAT,SAAS;uGAAT,SAAS,iBAhCT,GAAG,aA4BF,YAAY,aA5Bb,GAAG;uGAgCH,SAAS,YAJT,CAAC,YAAY,CAAC;2FAId,SAAS;kBALrB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,YAAY,EAAE,CAAC,GAAG,CAAC;iBACtB;;;AClDD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,142 @@
+import * as i0 from '@angular/core';
+import { Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, NgModule } from '@angular/core';
+import * as i3 from '@angular/forms';
+import { FormsModule } from '@angular/forms';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler } from 'primeng/dom';
+import { Subject } from 'rxjs';
+
+class TerminalService {
+    constructor() {
+        this.commandSource = new Subject();
+        this.responseSource = new Subject();
+        this.commandHandler = this.commandSource.asObservable();
+        this.responseHandler = this.responseSource.asObservable();
+    }
+    sendCommand(command) {
+        if (command) {
+            this.commandSource.next(command);
+        }
+    }
+    sendResponse(response) {
+        if (response) {
+            this.responseSource.next(response);
+        }
+    }
+}
+TerminalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TerminalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalService, decorators: [{
+            type: Injectable
+        }] });
+
+class Terminal {
+    constructor(el, terminalService, cd) {
+        this.el = el;
+        this.terminalService = terminalService;
+        this.cd = cd;
+        this.commands = [];
+        this.subscription = terminalService.responseHandler.subscribe(response => {
+            this.commands[this.commands.length - 1].response = response;
+            this.commandProcessed = true;
+        });
+    }
+    ngAfterViewInit() {
+        this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];
+    }
+    ngAfterViewChecked() {
+        if (this.commandProcessed) {
+            this.container.scrollTop = this.container.scrollHeight;
+            this.commandProcessed = false;
+        }
+    }
+    set response(value) {
+        if (value) {
+            this.commands[this.commands.length - 1].response = value;
+            this.commandProcessed = true;
+        }
+    }
+    handleCommand(event) {
+        if (event.keyCode == 13) {
+            this.commands.push({ text: this.command });
+            this.terminalService.sendCommand(this.command);
+            this.command = '';
+        }
+    }
+    focus(element) {
+        element.focus();
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+Terminal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, deps: [{ token: i0.ElementRef }, { token: TerminalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+Terminal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Terminal, selector: "p-terminal", inputs: { welcomeMessage: "welcomeMessage", prompt: "prompt", style: "style", styleClass: "styleClass", response: "response" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Terminal, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-terminal', template: `
+        <div [ngClass]="'p-terminal p-component'" [ngStyle]="style" [class]="styleClass" (click)="focus(in)">
+            <div *ngIf="welcomeMessage">{{welcomeMessage}}</div>
+            <div class="p-terminal-content">
+                <div *ngFor="let command of commands">
+                    <span class="p-terminal-prompt">{{prompt}}</span>
+                    <span class="p-terminal-command">{{command.text}}</span>
+                    <div class="p-terminal-response">{{command.response}}</div>
+                </div>
+            </div>
+            <div class="p-terminal-prompt-container">
+                <span class="p-terminal-content-prompt">{{prompt}}</span>
+                <input #in type="text" [(ngModel)]="command" class="p-terminal-input" autocomplete="off" (keydown)="handleCommand($event)" autofocus>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-terminal{height:18rem;overflow:auto}.p-terminal-prompt-container{display:flex;align-items:center}.p-terminal-input{flex:1 1 auto;border:0 none;background-color:transparent;color:inherit;padding:0;outline:0 none}.p-terminal-input::-ms-clear{display:none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: TerminalService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { welcomeMessage: [{
+                type: Input
+            }], prompt: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], response: [{
+                type: Input
+            }] } });
+class TerminalModule {
+}
+TerminalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TerminalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, declarations: [Terminal], imports: [CommonModule, FormsModule], exports: [Terminal] });
+TerminalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, imports: [[CommonModule, FormsModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TerminalModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, FormsModule],
+                    exports: [Terminal],
+                    declarations: [Terminal]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Terminal, TerminalModule, TerminalService };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-terminal.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-terminal.mjs","sources":["../../src/app/components/terminal/terminalservice.ts","../../src/app/components/terminal/terminal.ts","../../src/app/components/terminal/primeng-terminal.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class TerminalService {\n    \n    private commandSource = new Subject<string>();\n    private responseSource = new Subject<string>();\n    \n    commandHandler = this.commandSource.asObservable();\n    responseHandler = this.responseSource.asObservable();\n    \n    sendCommand(command: string) {\n        if (command) {\n            this.commandSource.next(command);\n        }\n    }\n    \n    sendResponse(response: string) {\n        if (response) {\n            this.responseSource.next(response);\n        }\n    }\n}","import {NgModule,Component,AfterViewInit,AfterViewChecked,OnDestroy,Input,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {TerminalService} from './terminalservice';\nimport {Subscription}   from 'rxjs';\n\n@Component({\n    selector: 'p-terminal',\n    template: `\n        <div [ngClass]=\"'p-terminal p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"focus(in)\">\n            <div *ngIf=\"welcomeMessage\">{{welcomeMessage}}</div>\n            <div class=\"p-terminal-content\">\n                <div *ngFor=\"let command of commands\">\n                    <span class=\"p-terminal-prompt\">{{prompt}}</span>\n                    <span class=\"p-terminal-command\">{{command.text}}</span>\n                    <div class=\"p-terminal-response\">{{command.response}}</div>\n                </div>\n            </div>\n            <div class=\"p-terminal-prompt-container\">\n                <span class=\"p-terminal-content-prompt\">{{prompt}}</span>\n                <input #in type=\"text\" [(ngModel)]=\"command\" class=\"p-terminal-input\" autocomplete=\"off\" (keydown)=\"handleCommand($event)\" autofocus>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./terminal.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Terminal implements AfterViewInit,AfterViewChecked,OnDestroy {\n\n    @Input() welcomeMessage: string;\n\n    @Input() prompt: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    commands: any[] = [];\n\n    command: string;\n\n    container: Element;\n\n    commandProcessed: boolean;\n\n    subscription: Subscription;\n\n    constructor(public el: ElementRef, public terminalService: TerminalService, public cd: ChangeDetectorRef) {\n        this.subscription = terminalService.responseHandler.subscribe(response => {\n            this.commands[this.commands.length - 1].response = response;\n            this.commandProcessed = true;\n        });\n    }\n\n    ngAfterViewInit() {\n        this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];\n    }\n\n    ngAfterViewChecked() {\n        if (this.commandProcessed) {\n            this.container.scrollTop = this.container.scrollHeight;\n            this.commandProcessed = false;\n        }\n    }\n\n    @Input()\n    set response(value: string) {\n        if (value) {\n            this.commands[this.commands.length - 1].response = value;\n            this.commandProcessed = true;\n        }\n    }\n\n    handleCommand(event: KeyboardEvent) {\n        if (event.keyCode == 13) {\n            this.commands.push({text: this.command});\n            this.terminalService.sendCommand(this.command);\n            this.command = '';\n        }\n    }\n\n    focus(element: HTMLElement) {\n        element.focus();\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,FormsModule],\n    exports: [Terminal],\n    declarations: [Terminal]\n})\nexport class TerminalModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;MAIa,eAAe;IAD5B;QAGY,kBAAa,GAAG,IAAI,OAAO,EAAU,CAAC;QACtC,mBAAc,GAAG,IAAI,OAAO,EAAU,CAAC;QAE/C,mBAAc,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACnD,oBAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAaxD;IAXG,WAAW,CAAC,OAAe;QACvB,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACpC;KACJ;IAED,YAAY,CAAC,QAAgB;QACzB,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtC;KACJ;;4GAlBQ,eAAe;gHAAf,eAAe;2FAAf,eAAe;kBAD3B,UAAU;;;MC6BE,QAAQ;IAoBjB,YAAmB,EAAc,EAAS,eAAgC,EAAS,EAAqB;QAArF,OAAE,GAAF,EAAE,CAAY;QAAS,oBAAe,GAAf,eAAe,CAAiB;QAAS,OAAE,GAAF,EAAE,CAAmB;QAVxG,aAAQ,GAAU,EAAE,CAAC;QAWjB,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ;YAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC,CAAC,CAAC;KACN;IAED,eAAe;QACX,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7E;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YACvD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACjC;KACJ;IAED,IACI,QAAQ,CAAC,KAAa;QACtB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;KACJ;IAED,aAAa,CAAC,KAAoB;QAC9B,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;SACrB;KACJ;IAED,KAAK,CAAC,OAAoB;QACtB,OAAO,CAAC,KAAK,EAAE,CAAC;KACnB;IAED,WAAW;QACP,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACnC;KACJ;;qGA9DQ,QAAQ;yFAAR,QAAQ,yNAvBP;;;;;;;;;;;;;;;KAeT;2FAQQ,QAAQ;kBAzBpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;KAeT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;4JAIQ,cAAc;sBAAtB,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBA+BF,QAAQ;sBADX,KAAK;;MAiCG,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAvEd,QAAQ,aAmEP,YAAY,EAAC,WAAW,aAnEzB,QAAQ;4GAuER,cAAc,YAJd,CAAC,YAAY,EAAC,WAAW,CAAC;2FAI1B,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,WAAW,CAAC;oBACnC,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;ACtGD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,494 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, Input, Output, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i4 from '@angular/router';
+import { RouterModule } from '@angular/router';
+import * as i3 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/tooltip';
+import { TooltipModule } from 'primeng/tooltip';
+import * as i5 from 'primeng/api';
+
+class TieredMenuSub {
+    constructor(el, renderer, cd) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.leafClick = new EventEmitter();
+        this.keydownItem = new EventEmitter();
+        this.menuHoverActive = false;
+    }
+    get parentActive() {
+        return this._parentActive;
+    }
+    set parentActive(value) {
+        if (!this.root) {
+            this._parentActive = value;
+            if (!value)
+                this.activeItem = null;
+        }
+    }
+    onItemClick(event, item) {
+        if (item.disabled) {
+            event.preventDefault();
+            return;
+        }
+        if (!item.url && !item.routerLink) {
+            event.preventDefault();
+        }
+        if (item.command) {
+            item.command({
+                originalEvent: event,
+                item: item
+            });
+        }
+        if (item.items) {
+            if (this.activeItem && item === this.activeItem) {
+                this.activeItem = null;
+                this.unbindDocumentClickListener();
+            }
+            else {
+                this.activeItem = item;
+                if (this.root) {
+                    this.bindDocumentClickListener();
+                }
+            }
+        }
+        if (!item.items) {
+            this.onLeafClick();
+        }
+    }
+    onItemMouseEnter(event, item) {
+        if (item.disabled || this.mobileActive) {
+            event.preventDefault();
+            return;
+        }
+        if (this.root) {
+            if (this.activeItem || this.autoDisplay || this.popup) {
+                this.activeItem = item;
+                this.bindDocumentClickListener();
+            }
+        }
+        else {
+            this.activeItem = item;
+            this.bindDocumentClickListener();
+        }
+    }
+    onLeafClick() {
+        this.activeItem = null;
+        if (this.root) {
+            this.unbindDocumentClickListener();
+        }
+        this.leafClick.emit();
+    }
+    onItemKeyDown(event, item) {
+        let listItem = event.currentTarget.parentElement;
+        switch (event.key) {
+            case 'ArrowDown':
+                var nextItem = this.findNextItem(listItem);
+                if (nextItem) {
+                    nextItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowUp':
+                var prevItem = this.findPrevItem(listItem);
+                if (prevItem) {
+                    prevItem.children[0].focus();
+                }
+                event.preventDefault();
+                break;
+            case 'ArrowRight':
+                if (item.items) {
+                    this.activeItem = item;
+                    if (this.root) {
+                        this.bindDocumentClickListener();
+                    }
+                    setTimeout(() => {
+                        listItem.children[1].children[0].children[0].children[0].focus();
+                    }, 50);
+                }
+                event.preventDefault();
+                break;
+            default:
+                break;
+        }
+        this.keydownItem.emit({
+            originalEvent: event,
+            element: listItem
+        });
+    }
+    findNextItem(item) {
+        let nextItem = item.nextElementSibling;
+        if (nextItem)
+            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;
+        else
+            return null;
+    }
+    findPrevItem(item) {
+        let prevItem = item.previousElementSibling;
+        if (prevItem)
+            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;
+        else
+            return null;
+    }
+    onChildItemKeyDown(event) {
+        if (event.originalEvent.key === 'ArrowLeft') {
+            this.activeItem = null;
+            if (this.root) {
+                this.unbindDocumentClickListener();
+            }
+            event.element.parentElement.parentElement.parentElement.children[0].focus();
+        }
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            this.documentClickListener = (event) => {
+                if (this.el && !this.el.nativeElement.contains(event.target)) {
+                    this.activeItem = null;
+                    this.cd.markForCheck();
+                    this.unbindDocumentClickListener();
+                }
+            };
+            document.addEventListener('click', this.documentClickListener);
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            document.removeEventListener('click', this.documentClickListener);
+            this.documentClickListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentClickListener();
+    }
+}
+TieredMenuSub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenuSub.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: { item: "item", root: "root", autoDisplay: "autoDisplay", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", mobileActive: "mobileActive", popup: "popup", parentActive: "parentActive" }, outputs: { leafClick: "leafClick", keydownItem: "keydownItem" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `, isInline: true, components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuSub, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-tieredMenuSub',
+                    template: `
+        <ul [ngClass]="{'p-submenu-list': !root}">
+            <ng-template ngFor let-child [ngForOf]="(root ? item : item.items)">
+                <li *ngIf="child.separator" class="p-menu-separator" [ngClass]="{'p-hidden': child.visible === false}">
+                <li *ngIf="!child.separator" #listItem [ngClass]="{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}" [ngStyle]="child.style" [class]="child.styleClass" pTooltip [tooltipOptions]="child.tooltipOptions">
+                    <a *ngIf="!child.routerLink" (keydown)="onItemKeyDown($event, child)" [attr.href]="child.url" [attr.data-automationid]="child.automationId" [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id"
+                         (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"
+                         [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                         [attr.tabindex]="child.disabled ? null : '0'" [attr.aria-haspopup]="item.items != null" [attr.aria-expanded]="item === activeItem" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlLabel">{{child.label}}</span>
+                        <ng-template #htmlLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <a *ngIf="child.routerLink" (keydown)="onItemKeyDown($event, child)" [routerLink]="child.routerLink" [attr.data-automationid]="child.automationId" [queryParams]="child.queryParams" [routerLinkActive]="'p-menuitem-link-active'" [routerLinkActiveOptions]="child.routerLinkActiveOptions||{exact:false}"
+                        [attr.target]="child.target" [attr.title]="child.title" [attr.id]="child.id" [attr.tabindex]="child.disabled ? null : '0'" role="menuitem"
+                        (click)="onItemClick($event, child)" (mouseenter)="onItemMouseEnter($event,child)"  [ngClass]="{'p-menuitem-link':true,'p-disabled':child.disabled}"
+                        [fragment]="child.fragment" [queryParamsHandling]="child.queryParamsHandling" [preserveFragment]="child.preserveFragment" [skipLocationChange]="child.skipLocationChange" [replaceUrl]="child.replaceUrl" [state]="child.state" pRipple>
+                        <span class="p-menuitem-icon" *ngIf="child.icon" [ngClass]="child.icon"></span>
+                        <span class="p-menuitem-text" *ngIf="child.escape !== false; else htmlRouteLabel">{{child.label}}</span>
+                        <ng-template #htmlRouteLabel><span class="p-menuitem-text" [innerHTML]="child.label"></span></ng-template>
+                        <span class="p-submenu-icon pi pi-angle-right" *ngIf="child.items"></span>
+                    </a>
+                    <p-tieredMenuSub (keydownItem)="onChildItemKeyDown($event)" [parentActive]="child === activeItem" [item]="child" *ngIf="child.items" [mobileActive]="mobileActive" [autoDisplay]="autoDisplay" (leafClick)="onLeafClick()" [popup]="popup"></p-tieredMenuSub>
+                </li>
+            </ng-template>
+        </ul>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], mobileActive: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], parentActive: [{
+                type: Input
+            }], leafClick: [{
+                type: Output
+            }], keydownItem: [{
+                type: Output
+            }] } });
+class TieredMenu {
+    constructor(el, renderer, cd, config, overlayService) {
+        this.el = el;
+        this.renderer = renderer;
+        this.cd = cd;
+        this.config = config;
+        this.overlayService = overlayService;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+    }
+    toggle(event) {
+        if (this.visible)
+            this.hide();
+        else
+            this.show(event);
+        this.preventDocumentDefault = true;
+    }
+    show(event) {
+        this.target = event.currentTarget;
+        this.visible = true;
+        this.parentActive = true;
+        this.preventDocumentDefault = true;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        if (this.popup) {
+            this.overlayService.add({
+                originalEvent: event,
+                target: this.el.nativeElement
+            });
+        }
+        this.preventDocumentDefault = true;
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                if (this.popup) {
+                    this.container = event.element;
+                    this.moveOnTop();
+                    this.appendOverlay();
+                    DomHandler.absolutePosition(this.container, this.target);
+                    this.bindDocumentClickListener();
+                    this.bindDocumentResizeListener();
+                    this.bindScrollListener();
+                }
+                break;
+            case 'void':
+                this.onOverlayHide();
+                break;
+        }
+    }
+    onOverlayAnimationEnd(event) {
+        switch (event.toState) {
+            case 'void':
+                ZIndexUtils.clear(event.element);
+                break;
+        }
+    }
+    appendOverlay() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.container);
+            else
+                DomHandler.appendChild(this.container, this.appendTo);
+        }
+    }
+    restoreOverlayAppend() {
+        if (this.container && this.appendTo) {
+            this.el.nativeElement.appendChild(this.container);
+        }
+    }
+    moveOnTop() {
+        if (this.autoZIndex) {
+            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);
+        }
+    }
+    hide() {
+        this.visible = false;
+        this.parentActive = false;
+        this.cd.markForCheck();
+    }
+    onWindowResize() {
+        this.hide();
+    }
+    onLeafClick() {
+        if (this.popup) {
+            this.hide();
+        }
+        this.unbindDocumentClickListener();
+    }
+    bindDocumentClickListener() {
+        if (!this.documentClickListener) {
+            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';
+            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {
+                if (!this.preventDocumentDefault && this.popup) {
+                    this.hide();
+                }
+                this.preventDocumentDefault = false;
+            });
+        }
+    }
+    unbindDocumentClickListener() {
+        if (this.documentClickListener) {
+            this.documentClickListener();
+            this.documentClickListener = null;
+        }
+    }
+    bindDocumentResizeListener() {
+        this.documentResizeListener = this.onWindowResize.bind(this);
+        window.addEventListener('resize', this.documentResizeListener);
+    }
+    unbindDocumentResizeListener() {
+        if (this.documentResizeListener) {
+            window.removeEventListener('resize', this.documentResizeListener);
+            this.documentResizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {
+                if (this.visible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    onOverlayHide() {
+        this.unbindDocumentClickListener();
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.preventDocumentDefault = false;
+        this.target = null;
+    }
+    ngOnDestroy() {
+        if (this.popup) {
+            if (this.scrollHandler) {
+                this.scrollHandler.destroy();
+                this.scrollHandler = null;
+            }
+            if (this.container && this.autoZIndex) {
+                ZIndexUtils.clear(this.container);
+            }
+            this.restoreOverlayAppend();
+            this.onOverlayHide();
+        }
+    }
+}
+TieredMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i5.PrimeNGConfig }, { token: i5.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TieredMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TieredMenu, selector: "p-tieredMenu", inputs: { model: "model", popup: "popup", style: "style", styleClass: "styleClass", appendTo: "appendTo", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", autoDisplay: "autoDisplay", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, isInline: true, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"], components: [{ type: TieredMenuSub, selector: "p-tieredMenuSub", inputs: ["item", "root", "autoDisplay", "autoZIndex", "baseZIndex", "mobileActive", "popup", "parentActive"], outputs: ["leafClick", "keydownItem"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenu, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tieredMenu', template: `
+        <div [ngClass]="{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}" [class]="styleClass" [ngStyle]="style" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" [@.disabled]="popup !== true"
+            (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationEnd($event)" *ngIf="!popup || visible">
+            <p-tieredMenuSub [item]="model" root="root" [parentActive]="parentActive" [baseZIndex]="baseZIndex" [autoZIndex]="autoZIndex" (leafClick)="onLeafClick()"
+                [autoDisplay]="autoDisplay" [popup]="popup"></p-tieredMenuSub>
+        </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tieredmenu-overlay{position:absolute;top:0;left:0}.p-tieredmenu ul{margin:0;padding:0;list-style:none}.p-tieredmenu .p-submenu-list{position:absolute;min-width:100%;z-index:1;display:none}.p-tieredmenu .p-menuitem-link{cursor:pointer;display:flex;align-items:center;text-decoration:none;overflow:hidden;position:relative}.p-tieredmenu .p-menuitem-text{line-height:1}.p-tieredmenu .p-menuitem{position:relative}.p-tieredmenu .p-menuitem-link .p-submenu-icon{margin-left:auto}.p-tieredmenu .p-menuitem-active>p-tieredmenusub>.p-submenu-list{display:block;left:100%;top:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i5.PrimeNGConfig }, { type: i5.OverlayService }]; }, propDecorators: { model: [{
+                type: Input
+            }], popup: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], autoDisplay: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }] } });
+class TieredMenuModule {
+}
+TieredMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TieredMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, declarations: [TieredMenu, TieredMenuSub], imports: [CommonModule, RouterModule, RippleModule, TooltipModule], exports: [TieredMenu, RouterModule, TooltipModule] });
+TieredMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, imports: [[CommonModule, RouterModule, RippleModule, TooltipModule], RouterModule, TooltipModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TieredMenuModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RouterModule, RippleModule, TooltipModule],
+                    exports: [TieredMenu, RouterModule, TooltipModule],
+                    declarations: [TieredMenu, TieredMenuSub]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TieredMenu, TieredMenuModule, TieredMenuSub };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tieredmenu.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tieredmenu.mjs","sources":["../../src/app/components/tieredmenu/tieredmenu.ts","../../src/app/components/tieredmenu/primeng-tieredmenu.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Renderer2, OnDestroy,ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { MenuItem, OverlayService, PrimeNGConfig } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { animate, style, transition, trigger, AnimationEvent } from '@angular/animations';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n    selector: 'p-tieredMenuSub',\n    template: `\n        <ul [ngClass]=\"{'p-submenu-list': !root}\">\n            <ng-template ngFor let-child [ngForOf]=\"(root ? item : item.items)\">\n                <li *ngIf=\"child.separator\" class=\"p-menu-separator\" [ngClass]=\"{'p-hidden': child.visible === false}\">\n                <li *ngIf=\"!child.separator\" #listItem [ngClass]=\"{'p-menuitem':true, 'p-menuitem-active': child === activeItem, 'p-hidden': child.visible === false}\" [ngStyle]=\"child.style\" [class]=\"child.styleClass\" pTooltip [tooltipOptions]=\"child.tooltipOptions\">\n                    <a *ngIf=\"!child.routerLink\" (keydown)=\"onItemKeyDown($event, child)\" [attr.href]=\"child.url\" [attr.data-automationid]=\"child.automationId\" [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\"\n                         (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"\n                         [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                         [attr.tabindex]=\"child.disabled ? null : '0'\" [attr.aria-haspopup]=\"item.items != null\" [attr.aria-expanded]=\"item === activeItem\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlLabel\">{{child.label}}</span>\n                        <ng-template #htmlLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <a *ngIf=\"child.routerLink\" (keydown)=\"onItemKeyDown($event, child)\" [routerLink]=\"child.routerLink\" [attr.data-automationid]=\"child.automationId\" [queryParams]=\"child.queryParams\" [routerLinkActive]=\"'p-menuitem-link-active'\" [routerLinkActiveOptions]=\"child.routerLinkActiveOptions||{exact:false}\"\n                        [attr.target]=\"child.target\" [attr.title]=\"child.title\" [attr.id]=\"child.id\" [attr.tabindex]=\"child.disabled ? null : '0'\" role=\"menuitem\"\n                        (click)=\"onItemClick($event, child)\" (mouseenter)=\"onItemMouseEnter($event,child)\"  [ngClass]=\"{'p-menuitem-link':true,'p-disabled':child.disabled}\"\n                        [fragment]=\"child.fragment\" [queryParamsHandling]=\"child.queryParamsHandling\" [preserveFragment]=\"child.preserveFragment\" [skipLocationChange]=\"child.skipLocationChange\" [replaceUrl]=\"child.replaceUrl\" [state]=\"child.state\" pRipple>\n                        <span class=\"p-menuitem-icon\" *ngIf=\"child.icon\" [ngClass]=\"child.icon\"></span>\n                        <span class=\"p-menuitem-text\" *ngIf=\"child.escape !== false; else htmlRouteLabel\">{{child.label}}</span>\n                        <ng-template #htmlRouteLabel><span class=\"p-menuitem-text\" [innerHTML]=\"child.label\"></span></ng-template>\n                        <span class=\"p-submenu-icon pi pi-angle-right\" *ngIf=\"child.items\"></span>\n                    </a>\n                    <p-tieredMenuSub (keydownItem)=\"onChildItemKeyDown($event)\" [parentActive]=\"child === activeItem\" [item]=\"child\" *ngIf=\"child.items\" [mobileActive]=\"mobileActive\" [autoDisplay]=\"autoDisplay\" (leafClick)=\"onLeafClick()\" [popup]=\"popup\"></p-tieredMenuSub>\n                </li>\n            </ng-template>\n        </ul>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TieredMenuSub implements OnDestroy {\n\n    @Input() item: MenuItem;\n\n    @Input() root: boolean;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() mobileActive: boolean;\n\n    @Input() popup: boolean;\n\n    @Input() get parentActive():boolean\n    {\n        return this._parentActive;\n    }\n    set parentActive(value) {\n        if (!this.root) {\n            this._parentActive = value;\n\n            if (!value)\n                this.activeItem = null;\n        }\n    }\n\n    @Output() leafClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() keydownItem: EventEmitter<any> = new EventEmitter();\n\n    _parentActive: boolean;\n\n    documentClickListener: any;\n\n    menuHoverActive: boolean = false;\n\n    activeItem: any;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, private cd: ChangeDetectorRef) { }\n\n    onItemClick(event, item) {\n        if (item.disabled) {\n            event.preventDefault();\n            return;\n        }\n\n        if (!item.url && !item.routerLink) {\n            event.preventDefault();\n        }\n\n        if (item.command) {\n            item.command({\n                originalEvent: event,\n                item: item\n            });\n        }\n\n        if (item.items) {\n            if (this.activeItem && item === this.activeItem) {\n                this.activeItem = null;\n                this.unbindDocumentClickListener();\n            }\n            else {\n                this.activeItem = item;\n                if (this.root) {\n                    this.bindDocumentClickListener();\n                }\n            }\n        }\n\n        if (!item.items) {\n            this.onLeafClick();\n        }\n    }\n\n    onItemMouseEnter(event, item) {\n        if (item.disabled || this.mobileActive) {\n            event.preventDefault();\n            return;\n        }\n\n        if (this.root) {\n            if (this.activeItem || this.autoDisplay || this.popup) {\n                this.activeItem = item;\n                this.bindDocumentClickListener();\n            }\n        }\n        else {\n            this.activeItem = item;\n            this.bindDocumentClickListener();\n        }\n    }\n\n    onLeafClick() {\n        this.activeItem = null;\n        if (this.root) {\n            this.unbindDocumentClickListener();\n        }\n\n        this.leafClick.emit();\n    }\n\n    onItemKeyDown(event, item) {\n        let listItem = event.currentTarget.parentElement;\n\n        switch (event.key) {\n            case 'ArrowDown':\n                var nextItem = this.findNextItem(listItem);\n                if (nextItem) {\n                    nextItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowUp':\n                var prevItem = this.findPrevItem(listItem);\n                if (prevItem) {\n                    prevItem.children[0].focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            case 'ArrowRight':\n                if (item.items) {\n                    this.activeItem = item;\n\n                    if (this.root) {\n                        this.bindDocumentClickListener();\n                    }\n\n                    setTimeout(() => {\n                        listItem.children[1].children[0].children[0].children[0].focus();\n                    }, 50);\n                }\n\n                event.preventDefault();\n            break;\n\n            default:\n            break;\n        }\n\n        this.keydownItem.emit({\n            originalEvent: event,\n            element: listItem\n        });\n    }\n\n    findNextItem(item) {\n        let nextItem = item.nextElementSibling;\n\n        if (nextItem)\n            return DomHandler.hasClass(nextItem, 'p-disabled') || !DomHandler.hasClass(nextItem, 'p-menuitem') ? this.findNextItem(nextItem) : nextItem;\n        else\n            return null;\n    }\n\n    findPrevItem(item) {\n        let prevItem = item.previousElementSibling;\n\n        if (prevItem)\n            return DomHandler.hasClass(prevItem, 'p-disabled') || !DomHandler.hasClass(prevItem, 'p-menuitem') ? this.findPrevItem(prevItem) : prevItem;\n        else\n            return null;\n    }\n\n    onChildItemKeyDown(event) {\n        if (event.originalEvent.key === 'ArrowLeft') {\n            this.activeItem = null;\n\n            if (this.root) {\n                this.unbindDocumentClickListener();\n            }\n\n            event.element.parentElement.parentElement.parentElement.children[0].focus();\n        }\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            this.documentClickListener = (event) => {\n                if (this.el && !this.el.nativeElement.contains(event.target)) {\n                    this.activeItem = null;\n                    this.cd.markForCheck();\n                    this.unbindDocumentClickListener();\n                }\n            };\n\n            document.addEventListener('click', this.documentClickListener);\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            document.removeEventListener('click', this.documentClickListener);\n            this.documentClickListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentClickListener();\n    }\n}\n\n@Component({\n    selector: 'p-tieredMenu',\n    template: `\n        <div [ngClass]=\"{'p-tieredmenu p-component':true, 'p-tieredmenu-overlay':popup}\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"popup !== true\"\n            (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\" *ngIf=\"!popup || visible\">\n            <p-tieredMenuSub [item]=\"model\" root=\"root\" [parentActive]=\"parentActive\" [baseZIndex]=\"baseZIndex\" [autoZIndex]=\"autoZIndex\" (leafClick)=\"onLeafClick()\"\n                [autoDisplay]=\"autoDisplay\" [popup]=\"popup\"></p-tieredMenuSub>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tieredmenu.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TieredMenu implements OnDestroy {\n\n    @Input() model: MenuItem[];\n\n    @Input() popup: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() appendTo: any;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() autoDisplay: boolean;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    parentActive: boolean;\n\n    container: HTMLDivElement;\n\n    documentClickListener: any;\n\n    documentResizeListener: any;\n\n    preventDocumentDefault: boolean;\n\n    scrollHandler: any;\n\n    target: any;\n\n    visible: boolean;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef, public config: PrimeNGConfig, public overlayService: OverlayService) {}\n\n    toggle(event) {\n        if (this.visible)\n            this.hide();\n        else\n            this.show(event);\n\n        this.preventDocumentDefault = true;\n    }\n\n    show(event) {\n        this.target = event.currentTarget;\n        this.visible = true;\n        this.parentActive = true;\n        this.preventDocumentDefault = true;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        if (this.popup) {\n            this.overlayService.add({\n                originalEvent: event,\n                target: this.el.nativeElement\n            });\n        }\n\n        this.preventDocumentDefault = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (this.popup) {\n                    this.container = event.element;\n                    this.moveOnTop();\n                    this.appendOverlay();\n                    DomHandler.absolutePosition(this.container, this.target);\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.container);\n            else\n                DomHandler.appendChild(this.container, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.container && this.appendTo) {\n            this.el.nativeElement.appendChild(this.container);\n        }\n    }\n\n    moveOnTop() {\n        if (this.autoZIndex) {\n            ZIndexUtils.set('menu', this.container, this.baseZIndex + this.config.zIndex.menu);\n        }\n    }\n\n    hide() {\n        this.visible = false;\n        this.parentActive = false;\n        this.cd.markForCheck();\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    onLeafClick() {\n        if (this.popup) {\n            this.hide();\n        }\n\n        this.unbindDocumentClickListener();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.preventDocumentDefault && this.popup) {\n                    this.hide();\n                }\n\n                this.preventDocumentDefault = false;\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n                if (this.visible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.preventDocumentDefault = false;\n        this.target = null;\n    }\n\n    ngOnDestroy() {\n        if (this.popup) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            if (this.container && this.autoZIndex) {\n                ZIndexUtils.clear(this.container);\n            }\n\n            this.restoreOverlayAppend();\n            this.onOverlayHide();\n        }\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule,RouterModule,RippleModule,TooltipModule],\n    exports: [TieredMenu,RouterModule,TooltipModule],\n    declarations: [TieredMenu,TieredMenuSub]\n})\nexport class TieredMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MA6Ca,aAAa;IAyCtB,YAAmB,EAAc,EAAS,QAAmB,EAAU,EAAqB;QAAzE,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAU,OAAE,GAAF,EAAE,CAAmB;QAjCnF,eAAU,GAAY,IAAI,CAAC;QAE3B,eAAU,GAAW,CAAC,CAAC;QAmBtB,cAAS,GAAsB,IAAI,YAAY,EAAE,CAAC;QAElD,gBAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;QAM9D,oBAAe,GAAY,KAAK,CAAC;KAIgE;IAzBjG,IAAa,YAAY;QAErB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAI,YAAY,CAAC,KAAK;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,IAAI,CAAC,KAAK;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC9B;KACJ;IAgBD,WAAW,CAAC,KAAK,EAAE,IAAI;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC;gBACT,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;SACN;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;gBAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;aACtC;iBACI;gBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,IAAI,CAAC,yBAAyB,EAAE,CAAC;iBACpC;aACJ;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,gBAAgB,CAAC,KAAK,EAAE,IAAI;QACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;SACV;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE;gBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;aACpC;SACJ;aACI;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACpC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,aAAa,CAAC,KAAK,EAAE,IAAI;QACrB,IAAI,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;QAEjD,QAAQ,KAAK,CAAC,GAAG;YACb,KAAK,WAAW;gBACZ,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAChC;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;YAEN,KAAK,SAAS;gBACV,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAChC;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;YAEN,KAAK,YAAY;gBACb,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAEvB,IAAI,IAAI,CAAC,IAAI,EAAE;wBACX,IAAI,CAAC,yBAAyB,EAAE,CAAC;qBACpC;oBAED,UAAU,CAAC;wBACP,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACpE,EAAE,EAAE,CAAC,CAAC;iBACV;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM;YAEN;gBACA,MAAM;SACT;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,QAAQ;SACpB,CAAC,CAAC;KACN;IAED,YAAY,CAAC,IAAI;QACb,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEvC,IAAI,QAAQ;YACR,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;YAE5I,OAAO,IAAI,CAAC;KACnB;IAED,YAAY,CAAC,IAAI;QACb,IAAI,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE3C,IAAI,QAAQ;YACR,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;YAE5I,OAAO,IAAI,CAAC;KACnB;IAED,kBAAkB,CAAC,KAAK;QACpB,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,WAAW,EAAE;YACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,2BAA2B,EAAE,CAAC;aACtC;YAED,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SAC/E;KACJ;IAED,yBAAyB;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAK;gBAC/B,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;iBACtC;aACJ,CAAC;YAEF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAClE;KACJ;IAED,2BAA2B;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACtC;;0GA9MQ,aAAa;8FAAb,aAAa,mWAjCZ;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT,uCAMQ,aAAa;2FAAb,aAAa;kBAnCzB,SAAS;mBAAC;oBACP,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,IAAI,EAAE;wBACF,OAAO,EAAE,WAAW;qBACvB;iBACJ;yJAGY,IAAI;sBAAZ,KAAK;gBAEG,IAAI;sBAAZ,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,YAAY;sBAApB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEO,YAAY;sBAAxB,KAAK;gBAaI,SAAS;sBAAlB,MAAM;gBAEG,WAAW;sBAApB,MAAM;;MA8ME,UAAU;IAsCnB,YAAmB,EAAc,EAAS,QAAmB,EAAS,EAAqB,EAAS,MAAqB,EAAS,cAA8B;QAA7I,OAAE,GAAF,EAAE,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAW;QAAS,OAAE,GAAF,EAAE,CAAmB;QAAS,WAAM,GAAN,MAAM,CAAe;QAAS,mBAAc,GAAd,cAAc,CAAgB;QA1BvJ,eAAU,GAAY,IAAI,CAAC;QAE3B,eAAU,GAAW,CAAC,CAAC;QAIvB,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;KAkB8G;IAEpK,MAAM,CAAC,KAAK;QACR,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;;YAEZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;IAED,IAAI,CAAC,KAAK;QACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,cAAc,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBACpB,aAAa,EAAE,KAAK;gBACpB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;aAChC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;IAED,uBAAuB,CAAC,KAAqB;QACzC,QAAO,KAAK,CAAC,OAAO;YAChB,KAAK,SAAS;gBACV,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACzD,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC7B;gBACL,MAAM;YAEN,KAAK,MAAM;gBACP,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzB,MAAM;SACT;KACJ;IAED,qBAAqB,CAAC,KAAqB;QACvC,QAAO,KAAK,CAAC,OAAO;YAChB,KAAK,MAAM;gBACP,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM;SACT;KACJ;IAED,aAAa;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;gBAE1C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7D;KACJ;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrD;KACJ;IAED,SAAS;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACtF;KACJ;IAED,IAAI;QACA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,cAAc;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAED,WAAW;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACtC;IAED,yBAAyB;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC;YAEvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE;gBACvE,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,KAAK,EAAE;oBAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;gBAED,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;aACvC,CAAC,CAAC;SACN;KACJ;IAED,2BAA2B;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;KACJ;IAED,0BAA0B;QACtB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAClE;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChE,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAC7C;KACJ;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB;IAED,WAAW;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;YAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrC;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;;uGAhNQ,UAAU;2FAAV,UAAU,uXA1BT;;;;;;;KAOT,mnBA1NQ,aAAa,+aA2NV;QACR,OAAO,CAAC,kBAAkB,EAAE;YACxB,UAAU,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC;gBAC7C,OAAO,CAAC,0BAA0B,CAAC;aACpC,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE;gBACnB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3D,CAAC;SACP,CAAC;KACL;2FAQQ,UAAU;kBA5BtB,SAAS;+BACI,cAAc,YACd;;;;;;;KAOT,cACW;wBACR,OAAO,CAAC,kBAAkB,EAAE;4BACxB,UAAU,CAAC,QAAQ,EAAE;gCACjB,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC;gCAC7C,OAAO,CAAC,0BAA0B,CAAC;6BACpC,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACnB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC3D,CAAC;yBACP,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;kNAIQ,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,WAAW;sBAAnB,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;gBAEG,qBAAqB;sBAA7B,KAAK;;MAqMG,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBAzNhB,UAAU,EA7OV,aAAa,aAkcZ,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,aAAa,aArNrD,UAAU,EAsNE,YAAY,EAAC,aAAa;8GAGtC,gBAAgB,YAJhB,CAAC,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC,EAC1C,YAAY,EAAC,aAAa;2FAGtC,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,EAAC,YAAY,EAAC,aAAa,CAAC;oBAC/D,OAAO,EAAE,CAAC,UAAU,EAAC,YAAY,EAAC,aAAa,CAAC;oBAChD,YAAY,EAAE,CAAC,UAAU,EAAC,aAAa,CAAC;iBAC3C;;;AClfD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+
+class Timeline {
+    constructor(el) {
+        this.el = el;
+        this.align = 'left';
+        this.layout = 'vertical';
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'content':
+                    this.contentTemplate = item.template;
+                    break;
+                case 'opposite':
+                    this.oppositeTemplate = item.template;
+                    break;
+                case 'marker':
+                    this.markerTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Timeline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Timeline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Timeline, selector: "p-timeline", inputs: { value: "value", style: "style", styleClass: "styleClass", align: "align", layout: "layout" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"], directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Timeline, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-timeline', template: `
+        <div [class]="styleClass" [ngStyle]="style" [ngClass]="{'p-timeline p-component': true,
+                'p-timeline-left': align === 'left',
+                'p-timeline-right': align === 'right',
+                'p-timeline-top': align === 'top',
+                'p-timeline-bottom': align === 'bottom',
+                'p-timeline-alternate': align === 'alternate',
+                'p-timeline-vertical': layout === 'vertical',
+                'p-timeline-horizontal': layout === 'horizontal'}">
+            <div *ngFor="let event of value; let last=last" class="p-timeline-event">
+                <div class="p-timeline-event-opposite">
+                    <ng-container *ngTemplateOutlet="oppositeTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+                <div class="p-timeline-event-separator">
+                    <ng-container *ngIf="markerTemplate; else marker">
+                        <ng-container *ngTemplateOutlet="markerTemplate; context: {$implicit: event}"></ng-container>
+                    </ng-container>
+                    <ng-template #marker>
+                        <div class="p-timeline-event-marker"></div>
+                    </ng-template>
+                    <div *ngIf="!last" class="p-timeline-event-connector"></div>
+                </div>
+                <div class="p-timeline-event-content">
+                    <ng-container *ngTemplateOutlet="contentTemplate; context: {$implicit: event}"></ng-container>
+                </div>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-timeline{display:flex;flex-grow:1;flex-direction:column}.p-timeline-left .p-timeline-event-opposite{text-align:right}.p-timeline-left .p-timeline-event-content{text-align:left}.p-timeline-right .p-timeline-event{flex-direction:row-reverse}.p-timeline-right .p-timeline-event-opposite{text-align:left}.p-timeline-right .p-timeline-event-content{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:row-reverse}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite{text-align:right}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content,.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite{text-align:left}.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content{text-align:right}.p-timeline-event{display:flex;position:relative;min-height:70px}.p-timeline-event:last-child{min-height:0}.p-timeline-event-opposite,.p-timeline-event-content{flex:1;padding:0 1rem}.p-timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.p-timeline-event-marker{display:flex;align-self:baseline}.p-timeline-event-connector{flex-grow:1}.p-timeline-horizontal{flex-direction:row}.p-timeline-horizontal .p-timeline-event{flex-direction:column;flex:1}.p-timeline-horizontal .p-timeline-event:last-child{flex:0}.p-timeline-horizontal .p-timeline-event-separator{flex-direction:row}.p-timeline-horizontal .p-timeline-event-connector{width:100%}.p-timeline-bottom .p-timeline-event,.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even){flex-direction:column-reverse}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], align: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TimelineModule {
+}
+TimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, declarations: [Timeline], imports: [CommonModule], exports: [Timeline, SharedModule] });
+TimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, imports: [[CommonModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TimelineModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Timeline, SharedModule],
+                    declarations: [Timeline]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Timeline, TimelineModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-timeline.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-timeline.mjs","sources":["../../src/app/components/timeline/timeline.ts","../../src/app/components/timeline/primeng-timeline.ts"],"sourcesContent":["import {NgModule ,Component, Input, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BlockableUI, PrimeTemplate, SharedModule} from 'primeng/api';\n\n@Component({\n    selector: 'p-timeline',\n    template: `\n        <div [class]=\"styleClass\" [ngStyle]=\"style\" [ngClass]=\"{'p-timeline p-component': true,\n                'p-timeline-left': align === 'left',\n                'p-timeline-right': align === 'right',\n                'p-timeline-top': align === 'top',\n                'p-timeline-bottom': align === 'bottom',\n                'p-timeline-alternate': align === 'alternate',\n                'p-timeline-vertical': layout === 'vertical',\n                'p-timeline-horizontal': layout === 'horizontal'}\">\n            <div *ngFor=\"let event of value; let last=last\" class=\"p-timeline-event\">\n                <div class=\"p-timeline-event-opposite\">\n                    <ng-container *ngTemplateOutlet=\"oppositeTemplate; context: {$implicit: event}\"></ng-container>\n                </div>\n                <div class=\"p-timeline-event-separator\">\n                    <ng-container *ngIf=\"markerTemplate; else marker\">\n                        <ng-container *ngTemplateOutlet=\"markerTemplate; context: {$implicit: event}\"></ng-container>\n                    </ng-container>\n                    <ng-template #marker>\n                        <div class=\"p-timeline-event-marker\"></div>\n                    </ng-template>\n                    <div *ngIf=\"!last\" class=\"p-timeline-event-connector\"></div>\n                </div>\n                <div class=\"p-timeline-event-content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate; context: {$implicit: event}\"></ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./timeline.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Timeline implements AfterContentInit, BlockableUI {\n\n    @Input() value: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() align: string = 'left';\n\n    @Input() layout: string = 'vertical';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    contentTemplate: TemplateRef<any>;\n\n    oppositeTemplate: TemplateRef<any>;\n\n    markerTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'opposite':\n                    this.oppositeTemplate = item.template;\n                break;\n\n                case 'marker':\n                    this.markerTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Timeline, SharedModule],\n    declarations: [Timeline]\n})\nexport class TimelineModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAyCa,QAAQ;IAoBjB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAZzB,UAAK,GAAW,MAAM,CAAC;QAEvB,WAAM,GAAW,UAAU,CAAC;KAUC;IAEtC,mBAAmB;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5C;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACzC,MAAM;gBAEN,KAAK,UAAU;oBACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC1C,MAAM;gBAEN,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;;qGA1CQ,QAAQ;yFAAR,QAAQ,2NAYA,aAAa,6BA/CpB;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT;2FAQQ,QAAQ;kBArCpB,SAAS;+BACI,YAAY,YACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,KAAK;sBAAb,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAuCrB,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAnDd,QAAQ,aA+CP,YAAY,aA/Cb,QAAQ,EAgDG,YAAY;4GAGvB,cAAc,YAJd,CAAC,YAAY,CAAC,EACH,YAAY;2FAGvB,cAAc;kBAL1B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;oBACjC,YAAY,EAAE,CAAC,QAAQ,CAAC;iBAC3B;;;AC3FD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,394 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { UniqueComponentId, ZIndexUtils } from 'primeng/utils';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';
+
+class ToastItem {
+    constructor(zone) {
+        this.zone = zone;
+        this.onClose = new EventEmitter();
+    }
+    ngAfterViewInit() {
+        this.initTimeout();
+    }
+    initTimeout() {
+        if (!this.message.sticky) {
+            this.zone.runOutsideAngular(() => {
+                this.timeout = setTimeout(() => {
+                    this.onClose.emit({
+                        index: this.index,
+                        message: this.message
+                    });
+                }, this.message.life || 3000);
+            });
+        }
+    }
+    clearTimeout() {
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+            this.timeout = null;
+        }
+    }
+    onMouseEnter() {
+        this.clearTimeout();
+    }
+    onMouseLeave() {
+        this.initTimeout();
+    }
+    onCloseIconClick(event) {
+        this.clearTimeout();
+        this.onClose.emit({
+            index: this.index,
+            message: this.message
+        });
+        event.preventDefault();
+    }
+    ngOnDestroy() {
+        this.clearTimeout();
+    }
+}
+ToastItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+ToastItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToastItem, selector: "p-toastItem", inputs: { message: "message", index: "index", template: "template", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.Ripple, selector: "[pRipple]" }], animations: [
+        trigger('messageState', [
+            state('visible', style({
+                transform: 'translateY(0)',
+                opacity: 1
+            })),
+            transition('void => *', [
+                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition('* => void', [
+                animate(('{{hideTransitionParams}}'), style({
+                    height: 0,
+                    opacity: 0,
+                    transform: '{{hideTransformParams}}'
+                }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastItem, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-toastItem',
+                    template: `
+        <div #container [attr.id]="message.id" [class]="message.styleClass" [ngClass]="['p-toast-message-' + message.severity, 'p-toast-message']" [@messageState]="{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}"
+                (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
+            <div class="p-toast-message-content" role="alert" aria-live="assertive" aria-atomic="true"  [ngClass]="message.contentStyleClass">
+                <ng-container *ngIf="!template">
+                    <span [class]="'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')" [ngClass]="{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',
+                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}"></span>
+                    <div class="p-toast-message-text">
+                        <div class="p-toast-summary">{{message.summary}}</div>
+                        <div class="p-toast-detail">{{message.detail}}</div>
+                    </div>
+                </ng-container>
+                <ng-container *ngTemplateOutlet="template; context: {$implicit: message}"></ng-container>
+                <button type="button" class="p-toast-icon-close p-link" (click)="onCloseIconClick($event)" (keydown.enter)="onCloseIconClick($event)" *ngIf="message.closable !== false" pRipple>
+                    <span class="p-toast-icon-close-icon pi pi-times"></span>
+                </button>
+            </div>
+        </div>
+    `,
+                    animations: [
+                        trigger('messageState', [
+                            state('visible', style({
+                                transform: 'translateY(0)',
+                                opacity: 1
+                            })),
+                            transition('void => *', [
+                                style({ transform: '{{showTransformParams}}', opacity: 0 }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition('* => void', [
+                                animate(('{{hideTransitionParams}}'), style({
+                                    height: 0,
+                                    opacity: 0,
+                                    transform: '{{hideTransformParams}}'
+                                }))
+                            ])
+                        ])
+                    ],
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { message: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], template: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }] } });
+class Toast {
+    constructor(messageService, cd, config) {
+        this.messageService = messageService;
+        this.cd = cd;
+        this.config = config;
+        this.autoZIndex = true;
+        this.baseZIndex = 0;
+        this.position = 'top-right';
+        this.preventOpenDuplicates = false;
+        this.preventDuplicates = false;
+        this.showTransformOptions = 'translateY(100%)';
+        this.hideTransformOptions = 'translateY(-100%)';
+        this.showTransitionOptions = '300ms ease-out';
+        this.hideTransitionOptions = '250ms ease-in';
+        this.onClose = new EventEmitter();
+        this.id = UniqueComponentId();
+    }
+    ngOnInit() {
+        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {
+            if (messages) {
+                if (messages instanceof Array) {
+                    const filteredMessages = messages.filter(m => this.canAdd(m));
+                    this.add(filteredMessages);
+                }
+                else if (this.canAdd(messages)) {
+                    this.add([messages]);
+                }
+            }
+        });
+        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {
+            if (key) {
+                if (this.key === key) {
+                    this.messages = null;
+                }
+            }
+            else {
+                this.messages = null;
+            }
+            this.cd.markForCheck();
+        });
+    }
+    ngAfterViewInit() {
+        if (this.breakpoints) {
+            this.createStyle();
+        }
+    }
+    add(messages) {
+        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];
+        if (this.preventDuplicates) {
+            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];
+        }
+        this.cd.markForCheck();
+    }
+    canAdd(message) {
+        let allow = this.key === message.key;
+        if (allow && this.preventOpenDuplicates) {
+            allow = !this.containsMessage(this.messages, message);
+        }
+        if (allow && this.preventDuplicates) {
+            allow = !this.containsMessage(this.messagesArchieve, message);
+        }
+        return allow;
+    }
+    containsMessage(collection, message) {
+        if (!collection) {
+            return false;
+        }
+        return collection.find(m => {
+            return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));
+        }) != null;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'message':
+                    this.template = item.template;
+                    break;
+                default:
+                    this.template = item.template;
+                    break;
+            }
+        });
+    }
+    onMessageClose(event) {
+        this.messages.splice(event.index, 1);
+        this.onClose.emit({
+            message: event.message
+        });
+        this.cd.detectChanges();
+    }
+    onAnimationStart(event) {
+        if (event.fromState === 'void') {
+            this.containerViewChild.nativeElement.setAttribute(this.id, '');
+            if (this.autoZIndex) {
+                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);
+            }
+        }
+    }
+    onAnimationEnd(event) {
+        if (event.toState === 'void') {
+            if (this.autoZIndex) {
+                ZIndexUtils.clear(this.containerViewChild.nativeElement);
+            }
+        }
+    }
+    createStyle() {
+        if (!this.styleElement) {
+            this.styleElement = document.createElement('style');
+            this.styleElement.type = 'text/css';
+            document.head.appendChild(this.styleElement);
+            let innerHTML = '';
+            for (let breakpoint in this.breakpoints) {
+                let breakpointStyle = '';
+                for (let styleProp in this.breakpoints[breakpoint]) {
+                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';
+                }
+                innerHTML += `
+                    @media screen and (max-width: ${breakpoint}) {
+                        .p-toast[${this.id}] {
+                           ${breakpointStyle}
+                        }
+                    }
+                `;
+            }
+            this.styleElement.innerHTML = innerHTML;
+        }
+    }
+    destroyStyle() {
+        if (this.styleElement) {
+            document.head.removeChild(this.styleElement);
+            this.styleElement = null;
+        }
+    }
+    ngOnDestroy() {
+        if (this.messageSubscription) {
+            this.messageSubscription.unsubscribe();
+        }
+        if (this.containerViewChild && this.autoZIndex) {
+            ZIndexUtils.clear(this.containerViewChild.nativeElement);
+        }
+        if (this.clearSubscription) {
+            this.clearSubscription.unsubscribe();
+        }
+        this.destroyStyle();
+    }
+}
+Toast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, deps: [{ token: i3.MessageService }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Toast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toast, selector: "p-toast", inputs: { key: "key", autoZIndex: "autoZIndex", baseZIndex: "baseZIndex", style: "style", styleClass: "styleClass", position: "position", preventOpenDuplicates: "preventOpenDuplicates", preventDuplicates: "preventDuplicates", showTransformOptions: "showTransformOptions", hideTransformOptions: "hideTransformOptions", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", breakpoints: "breakpoints" }, outputs: { onClose: "onClose" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, isInline: true, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"], components: [{ type: ToastItem, selector: "p-toastItem", inputs: ["message", "index", "template", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClose"] }], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
+        trigger('toastAnimation', [
+            transition(':enter, :leave', [
+                query('@*', animateChild())
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toast, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toast', template: `
+        <div #container [ngClass]="'p-toast p-component p-toast-' + position" [ngStyle]="style" [class]="styleClass">
+            <p-toastItem *ngFor="let msg of messages; let i=index" [message]="msg" [index]="i" (onClose)="onMessageClose($event)"
+                    [template]="template" @toastAnimation (@toastAnimation.start)="onAnimationStart($event)" (@toastAnimation.done)="onAnimationEnd($event)"
+                    [showTransformOptions]="showTransformOptions" [hideTransformOptions]="hideTransformOptions"
+                    [showTransitionOptions]="showTransitionOptions" [hideTransitionOptions]="hideTransitionOptions"></p-toastItem>
+        </div>
+    `, animations: [
+                        trigger('toastAnimation', [
+                            transition(':enter, :leave', [
+                                query('@*', animateChild())
+                            ])
+                        ])
+                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\n"] }]
+        }], ctorParameters: function () { return [{ type: i3.MessageService }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { key: [{
+                type: Input
+            }], autoZIndex: [{
+                type: Input
+            }], baseZIndex: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], position: [{
+                type: Input
+            }], preventOpenDuplicates: [{
+                type: Input
+            }], preventDuplicates: [{
+                type: Input
+            }], showTransformOptions: [{
+                type: Input
+            }], hideTransformOptions: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], breakpoints: [{
+                type: Input
+            }], onClose: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ToastModule {
+}
+ToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule], exports: [Toast, SharedModule] });
+ToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, imports: [[CommonModule, RippleModule], SharedModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToastModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [Toast, SharedModule],
+                    declarations: [Toast, ToastItem]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Toast, ToastItem, ToastModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-toast.mjs","sources":["../../src/app/components/toast/toast.ts","../../src/app/components/toast/primeng-toast.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,OnInit,AfterViewInit,AfterContentInit,OnDestroy,ElementRef,ViewChild,EventEmitter,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy, NgZone, ChangeDetectorRef, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Message, PrimeNGConfig} from 'primeng/api';\nimport {DomHandler} from 'primeng/dom';\nimport {PrimeTemplate,SharedModule} from 'primeng/api';\nimport {MessageService} from 'primeng/api';\nimport {UniqueComponentId} from 'primeng/utils';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription} from 'rxjs';\nimport {trigger,state,style,transition,animate,query,animateChild,AnimationEvent} from '@angular/animations';\nimport { ZIndexUtils } from 'primeng/utils';\n\n@Component({\n    selector: 'p-toastItem',\n    template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('messageState', [\n            state('visible', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => *', [\n                style({transform: '{{showTransformParams}}', opacity: 0}),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('* => void', [\n                animate(('{{hideTransitionParams}}'), style({\n                    height: 0,\n                    opacity: 0,\n                    transform: '{{hideTransformParams}}'\n                }))\n            ])\n        ])\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ToastItem implements AfterViewInit, OnDestroy {\n\n    @Input() message: Message;\n\n    @Input() index: number;\n\n    @Input() template: TemplateRef<any>;\n\n    @Input() showTransformOptions: string;\n\n    @Input() hideTransformOptions: string;\n\n    @Input() showTransitionOptions: string;\n\n    @Input() hideTransitionOptions: string;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    timeout: any;\n\n    constructor(private zone: NgZone) {}\n\n    ngAfterViewInit() {\n        this.initTimeout();\n    }\n\n    initTimeout() {\n        if (!this.message.sticky) {\n            this.zone.runOutsideAngular(() => {\n                this.timeout = setTimeout(() => {\n                    this.onClose.emit({\n                        index: this.index,\n                        message: this.message\n                    });\n                }, this.message.life || 3000);\n            });\n        }\n    }\n\n    clearTimeout() {\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n    }\n\n    onMouseEnter() {\n        this.clearTimeout();\n    }\n\n    onMouseLeave() {\n        this.initTimeout();\n    }\n\n    onCloseIconClick(event) {\n        this.clearTimeout();\n\n        this.onClose.emit({\n            index: this.index,\n            message: this.message\n        });\n\n        event.preventDefault();\n    }\n\n    ngOnDestroy() {\n        this.clearTimeout();\n    }\n}\n\n@Component({\n    selector: 'p-toast',\n    template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `,\n    animations: [\n        trigger('toastAnimation', [\n            transition(':enter, :leave', [\n                query('@*', animateChild())\n            ])\n        ])\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./toast.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Toast implements OnInit,AfterContentInit,OnDestroy {\n\n    @Input() key: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() position: string = 'top-right';\n\n    @Input() preventOpenDuplicates: boolean = false;\n\n    @Input() preventDuplicates: boolean = false;\n\n    @Input() showTransformOptions: string = 'translateY(100%)';\n\n    @Input() hideTransformOptions: string = 'translateY(-100%)';\n\n    @Input() showTransitionOptions: string = '300ms ease-out';\n\n    @Input() hideTransitionOptions: string = '250ms ease-in';\n\n    @Input() breakpoints: any;\n\n    @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    messageSubscription: Subscription;\n\n    clearSubscription: Subscription;\n\n    messages: Message[];\n\n    messagesArchieve: Message[];\n\n    template: TemplateRef<any>;\n\n    constructor(public messageService: MessageService, private cd: ChangeDetectorRef, public config: PrimeNGConfig) {}\n\n    styleElement: any;\n\n    id: string = UniqueComponentId();\n\n    ngOnInit() {\n        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n            if (messages) {\n                if (messages instanceof Array) {\n                    const filteredMessages = messages.filter(m => this.canAdd(m));\n                    this.add(filteredMessages);\n                }\n                else if (this.canAdd(messages)) {\n                    this.add([messages]);\n                }\n            }\n        });\n\n        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n            if (key) {\n                if (this.key === key) {\n                    this.messages = null;\n                }\n            }\n            else {\n                this.messages = null;\n            }\n\n            this.cd.markForCheck();\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n\n    add(messages: Message[]): void {\n        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n\n        if (this.preventDuplicates) {\n            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n        }\n\n        this.cd.markForCheck();\n    }\n\n    canAdd(message: Message): boolean {\n        let allow = this.key === message.key;\n\n        if (allow && this.preventOpenDuplicates) {\n            allow = !this.containsMessage(this.messages, message);\n        }\n\n        if (allow && this.preventDuplicates) {\n            allow = !this.containsMessage(this.messagesArchieve, message);\n        }\n\n        return allow;\n    }\n\n    containsMessage(collection: Message[], message: Message): boolean {\n        if (!collection) {\n            return false;\n        }\n\n        return collection.find(m => {\n           return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));\n        }) != null;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'message':\n                    this.template = item.template;\n                break;\n\n                default:\n                    this.template = item.template;\n                break;\n            }\n        });\n    }\n\n    onMessageClose(event) {\n        this.messages.splice(event.index, 1);\n\n        this.onClose.emit({\n            message: event.message\n        });\n\n        this.cd.detectChanges();\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        if (event.fromState === 'void') {\n            this.containerViewChild.nativeElement.setAttribute(this.id, '');\n\n            if (this.autoZIndex) {\n                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n            }\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        if (event.toState === 'void') {\n            if (this.autoZIndex) {\n                ZIndexUtils.clear(this.containerViewChild.nativeElement);\n            }\n        }\n    }\n\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                let breakpointStyle = '';\n                for (let styleProp in this.breakpoints[breakpoint]) {\n                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n                }\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `\n            }\n\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n\n        this.destroyStyle();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [Toast,SharedModule],\n    declarations: [Toast,ToastItem]\n})\nexport class ToastModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,125 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i1 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const TOGGLEBUTTON_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => ToggleButton),
+    multi: true
+};
+class ToggleButton {
+    constructor(cd) {
+        this.cd = cd;
+        this.iconPos = 'left';
+        this.onChange = new EventEmitter();
+        this.checked = false;
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    toggle(event) {
+        if (!this.disabled) {
+            this.checked = !this.checked;
+            this.onModelChange(this.checked);
+            this.onModelTouched();
+            this.onChange.emit({
+                originalEvent: event,
+                checked: this.checked
+            });
+            this.cd.markForCheck();
+        }
+    }
+    onBlur() {
+        this.onModelTouched();
+    }
+    writeValue(value) {
+        this.checked = value;
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    get hasOnLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+    get hasOffLabel() {
+        return this.onLabel && this.onLabel.length > 0;
+    }
+}
+ToggleButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+ToggleButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: ToggleButton, selector: "p-toggleButton", inputs: { onLabel: "onLabel", offLabel: "offLabel", onIcon: "onIcon", offIcon: "offIcon", ariaLabelledBy: "ariaLabelledBy", disabled: "disabled", style: "style", styleClass: "styleClass", inputId: "inputId", tabindex: "tabindex", iconPos: "iconPos" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"], directives: [{ type: i1.Ripple, selector: "[pRipple]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButton, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toggleButton', template: `
+        <div [ngClass]="{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}"
+                        [ngStyle]="style" [class]="styleClass" (click)="toggle($event)" (keydown.enter)="toggle($event)"
+                        [attr.tabindex]="disabled ? null : '0'" role="checkbox" [attr.aria-checked]="checked" pRipple>
+            <span *ngIf="onIcon||offIcon" [class]="checked ? this.onIcon : this.offIcon"
+                [ngClass]="{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}"></span>
+            <span class="p-button-label">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>
+        </div>
+    `, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { onLabel: [{
+                type: Input
+            }], offLabel: [{
+                type: Input
+            }], onIcon: [{
+                type: Input
+            }], offIcon: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], iconPos: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class ToggleButtonModule {
+}
+ToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, declarations: [ToggleButton], imports: [CommonModule, RippleModule], exports: [ToggleButton] });
+ToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, imports: [[CommonModule, RippleModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToggleButtonModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule],
+                    exports: [ToggleButton],
+                    declarations: [ToggleButton]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TOGGLEBUTTON_VALUE_ACCESSOR, ToggleButton, ToggleButtonModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-togglebutton.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-togglebutton.mjs","sources":["../../src/app/components/togglebutton/togglebutton.ts","../../src/app/components/togglebutton/primeng-togglebutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectionStrategy,ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const TOGGLEBUTTON_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ToggleButton),\n  multi: true\n};\n\n@Component({\n    selector: 'p-toggleButton',\n    template: `\n        <div [ngClass]=\"{'p-button p-togglebutton p-component': true, 'p-button-icon-only': (onIcon && offIcon && !hasOnLabel && !hasOffLabel),'p-highlight': checked,'p-disabled':disabled}\"\n                        [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"toggle($event)\" (keydown.enter)=\"toggle($event)\"\n                        [attr.tabindex]=\"disabled ? null : '0'\" role=\"checkbox\" [attr.aria-checked]=\"checked\" pRipple>\n            <span *ngIf=\"onIcon||offIcon\" [class]=\"checked ? this.onIcon : this.offIcon\"\n                [ngClass]=\"{'p-button-icon': true, 'p-button-icon-left': (iconPos === 'left'), 'p-button-icon-right': (iconPos === 'right')}\"></span>\n            <span class=\"p-button-label\">{{checked ? hasOnLabel ? onLabel : '' : hasOffLabel ? offLabel : ''}}</span>\n        </div>\n    `,\n    providers: [TOGGLEBUTTON_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['../button/button.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class ToggleButton implements ControlValueAccessor {\n\n    @Input() onLabel: string;\n\n    @Input() offLabel: string;\n\n    @Input() onIcon: string;\n\n    @Input() offIcon: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() disabled: boolean;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inputId: string;\n\n    @Input() tabindex: number;\n\n    @Input() iconPos: string = 'left';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    checked: boolean = false;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public cd: ChangeDetectorRef) { }\n\n    toggle(event: Event) {\n        if (!this.disabled) {\n            this.checked = !this.checked;\n            this.onModelChange(this.checked);\n            this.onModelTouched();\n            this.onChange.emit({\n                originalEvent: event,\n                checked: this.checked\n            });\n\n            this.cd.markForCheck();\n        }\n    }\n\n    onBlur() {\n        this.onModelTouched();\n    }\n\n    writeValue(value: any) : void {\n        this.checked = value;\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    get hasOnLabel():boolean {\n        return this.onLabel && this.onLabel.length > 0;\n    }\n\n    get hasOffLabel():boolean {\n        return this.onLabel && this.onLabel.length > 0;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule],\n    exports: [ToggleButton],\n    declarations: [ToggleButton]\n})\nexport class ToggleButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;MAKa,2BAA2B,GAAQ;IAC9C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;IAC3C,KAAK,EAAE,IAAI;EACX;MAoBW,YAAY;IAgCrB,YAAmB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QAV/B,YAAO,GAAW,MAAM,CAAC;QAExB,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE3D,YAAO,GAAY,KAAK,CAAC;QAEzB,kBAAa,GAAa,SAAQ,CAAC;QAEnC,mBAAc,GAAa,SAAQ,CAAC;KAES;IAE7C,MAAM,CAAC,KAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;SAC1B;KACJ;IAED,MAAM;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAClD;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAClD;;yGA5EQ,YAAY;6FAAZ,YAAY,+WAPV,CAAC,2BAA2B,CAAC,0BAT9B;;;;;;;;KAQT;2FAQQ,YAAY;kBAlBxB,SAAS;+BACI,gBAAgB,YAChB;;;;;;;;KAQT,aACU,CAAC,2BAA2B,CAAC,mBACvB,uBAAuB,CAAC,MAAM,QAEzC;wBACF,OAAO,EAAE,WAAW;qBACvB;wGAIQ,OAAO;sBAAf,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,MAAM;sBAAd,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,cAAc;sBAAtB,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,QAAQ;sBAAhB,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEI,QAAQ;sBAAjB,MAAM;;MA4DE,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBApFlB,YAAY,aAgFX,YAAY,EAAC,YAAY,aAhF1B,YAAY;gHAoFZ,kBAAkB,YAJlB,CAAC,YAAY,EAAC,YAAY,CAAC;2FAI3B,kBAAkB;kBAL9B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAC,YAAY,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,YAAY,CAAC;iBAC/B;;;AChHD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,80 @@
+import * as i0 from '@angular/core';
+import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { PrimeTemplate } from 'primeng/api';
+
+class Toolbar {
+    constructor(el) {
+        this.el = el;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'left':
+                    this.leftTemplate = item.template;
+                    break;
+                case 'right':
+                    this.rightTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+Toolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+Toolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Toolbar, selector: "p-toolbar", inputs: { style: "style", styleClass: "styleClass" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Toolbar, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-toolbar', template: `
+        <div [ngClass]="'p-toolbar p-component'" [ngStyle]="style" [class]="styleClass" role="toolbar">
+            <ng-content></ng-content>
+            <div class="p-toolbar-group-left" *ngIf="leftTemplate">
+                <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>
+            </div>
+            <div class="p-toolbar-group-right" *ngIf="rightTemplate">
+                <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}.p-toolbar-group-left,.p-toolbar-group-right{display:flex;align-items:center}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class ToolbarModule {
+}
+ToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+ToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, declarations: [Toolbar], imports: [CommonModule], exports: [Toolbar] });
+ToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: ToolbarModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Toolbar],
+                    declarations: [Toolbar]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Toolbar, ToolbarModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-toolbar.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-toolbar.mjs","sources":["../../src/app/components/toolbar/toolbar.ts","../../src/app/components/toolbar/primeng-toolbar.ts"],"sourcesContent":["import {NgModule,Component,Input,ElementRef,ChangeDetectionStrategy, ViewEncapsulation, AfterContentInit, ContentChildren, QueryList, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BlockableUI, PrimeTemplate} from 'primeng/api';\n\n@Component({\n    selector: 'p-toolbar',\n    template: `\n        <div [ngClass]=\"'p-toolbar p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"toolbar\">\n            <ng-content></ng-content>\n            <div class=\"p-toolbar-group-left\" *ngIf=\"leftTemplate\">\n                <ng-container *ngTemplateOutlet=\"leftTemplate\"></ng-container>\n            </div>\n            <div class=\"p-toolbar-group-right\" *ngIf=\"rightTemplate\">\n                <ng-container *ngTemplateOutlet=\"rightTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./toolbar.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Toolbar implements AfterContentInit,BlockableUI {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    leftTemplate: TemplateRef<any>;\n\n    rightTemplate: TemplateRef<any>;\n\n    constructor(private el: ElementRef) {}\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'left':\n                    this.leftTemplate = item.template;\n                break;\n\n                case 'right':\n                    this.rightTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Toolbar],\n    declarations: [Toolbar]\n})\nexport class ToolbarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAwBa,OAAO;IAYhB,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;KAAI;IAEtC,mBAAmB;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;YACxB,QAAO,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,MAAM;oBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACtC,MAAM;gBAEN,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACvC,MAAM;aACT;SACJ,CAAC,CAAC;KACN;;oGA9BQ,OAAO;wFAAP,OAAO,wKAMC,aAAa,6BAxBpB;;;;;;;;;;KAUT;2FAQQ,OAAO;kBApBnB,SAAS;+BACI,WAAW,YACX;;;;;;;;;;KAUT,mBACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,QAE/B;wBACF,OAAO,EAAE,WAAW;qBACvB;iGAIQ,KAAK;sBAAb,KAAK;gBAEG,UAAU;sBAAlB,KAAK;gBAE0B,SAAS;sBAAxC,eAAe;uBAAC,aAAa;;MAiCrB,aAAa;;0GAAb,aAAa;2GAAb,aAAa,iBAvCb,OAAO,aAmCN,YAAY,aAnCb,OAAO;2GAuCP,aAAa,YAJb,CAAC,YAAY,CAAC;2FAId,aAAa;kBALzB,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,YAAY,EAAE,CAAC,OAAO,CAAC;iBAC1B;;;AC9DD;;;;;;"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,481 @@
+import * as i0 from '@angular/core';
+import { Directive, Input, NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import { ZIndexUtils } from 'primeng/utils';
+import * as i1 from 'primeng/api';
+
+class Tooltip {
+    constructor(el, zone, config) {
+        this.el = el;
+        this.zone = zone;
+        this.config = config;
+        this.escape = true;
+        this._tooltipOptions = {
+            tooltipPosition: 'right',
+            tooltipEvent: 'hover',
+            appendTo: 'body',
+            tooltipZIndex: 'auto',
+            escape: false,
+            positionTop: 0,
+            positionLeft: 0
+        };
+    }
+    get disabled() {
+        return this._disabled;
+    }
+    set disabled(val) {
+        this._disabled = val;
+        this.deactivate();
+    }
+    ngAfterViewInit() {
+        this.zone.runOutsideAngular(() => {
+            if (this.getOption('tooltipEvent') === 'hover') {
+                this.mouseEnterListener = this.onMouseEnter.bind(this);
+                this.mouseLeaveListener = this.onMouseLeave.bind(this);
+                this.clickListener = this.onClick.bind(this);
+                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);
+                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);
+                this.el.nativeElement.addEventListener('click', this.clickListener);
+            }
+            else if (this.getOption('tooltipEvent') === 'focus') {
+                this.focusListener = this.onFocus.bind(this);
+                this.blurListener = this.onBlur.bind(this);
+                this.el.nativeElement.addEventListener('focus', this.focusListener);
+                this.el.nativeElement.addEventListener('blur', this.blurListener);
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.tooltipPosition) {
+            this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });
+        }
+        if (simpleChange.tooltipEvent) {
+            this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });
+        }
+        if (simpleChange.appendTo) {
+            this.setOption({ appendTo: simpleChange.appendTo.currentValue });
+        }
+        if (simpleChange.positionStyle) {
+            this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });
+        }
+        if (simpleChange.tooltipStyleClass) {
+            this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });
+        }
+        if (simpleChange.tooltipZIndex) {
+            this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });
+        }
+        if (simpleChange.escape) {
+            this.setOption({ escape: simpleChange.escape.currentValue });
+        }
+        if (simpleChange.showDelay) {
+            this.setOption({ showDelay: simpleChange.showDelay.currentValue });
+        }
+        if (simpleChange.hideDelay) {
+            this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });
+        }
+        if (simpleChange.life) {
+            this.setOption({ life: simpleChange.life.currentValue });
+        }
+        if (simpleChange.positionTop) {
+            this.setOption({ positionTop: simpleChange.positionTop.currentValue });
+        }
+        if (simpleChange.positionLeft) {
+            this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });
+        }
+        if (simpleChange.disabled) {
+            this.setOption({ disabled: simpleChange.disabled.currentValue });
+        }
+        if (simpleChange.text) {
+            this.setOption({ tooltipLabel: simpleChange.text.currentValue });
+            if (this.active) {
+                if (simpleChange.text.currentValue) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+        if (simpleChange.tooltipOptions) {
+            this._tooltipOptions = { ...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue };
+            this.deactivate();
+            if (this.active) {
+                if (this.getOption('tooltipLabel')) {
+                    if (this.container && this.container.offsetParent) {
+                        this.updateText();
+                        this.align();
+                    }
+                    else {
+                        this.show();
+                    }
+                }
+                else {
+                    this.hide();
+                }
+            }
+        }
+    }
+    onMouseEnter(e) {
+        if (!this.container && !this.showTimeout) {
+            this.activate();
+        }
+    }
+    onMouseLeave(e) {
+        this.deactivate();
+    }
+    onFocus(e) {
+        this.activate();
+    }
+    onBlur(e) {
+        this.deactivate();
+    }
+    onClick(e) {
+        this.deactivate();
+    }
+    activate() {
+        this.active = true;
+        this.clearHideTimeout();
+        if (this.getOption('showDelay'))
+            this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));
+        else
+            this.show();
+        if (this.getOption('life')) {
+            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');
+            this.hideTimeout = setTimeout(() => { this.hide(); }, duration);
+        }
+    }
+    deactivate() {
+        this.active = false;
+        this.clearShowTimeout();
+        if (this.getOption('hideDelay')) {
+            this.clearHideTimeout(); //life timeout
+            this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));
+        }
+        else {
+            this.hide();
+        }
+    }
+    create() {
+        if (this.container) {
+            this.clearHideTimeout();
+            this.remove();
+        }
+        this.container = document.createElement('div');
+        let tooltipArrow = document.createElement('div');
+        tooltipArrow.className = 'p-tooltip-arrow';
+        this.container.appendChild(tooltipArrow);
+        this.tooltipText = document.createElement('div');
+        this.tooltipText.className = 'p-tooltip-text';
+        this.updateText();
+        if (this.getOption('positionStyle')) {
+            this.container.style.position = this.getOption('positionStyle');
+        }
+        this.container.appendChild(this.tooltipText);
+        if (this.getOption('appendTo') === 'body')
+            document.body.appendChild(this.container);
+        else if (this.getOption('appendTo') === 'target')
+            DomHandler.appendChild(this.container, this.el.nativeElement);
+        else
+            DomHandler.appendChild(this.container, this.getOption('appendTo'));
+        this.container.style.display = 'inline-block';
+    }
+    show() {
+        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {
+            return;
+        }
+        this.create();
+        this.align();
+        DomHandler.fadeIn(this.container, 250);
+        if (this.getOption('tooltipZIndex') === 'auto')
+            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);
+        else
+            this.container.style.zIndex = this.getOption('tooltipZIndex');
+        this.bindDocumentResizeListener();
+        this.bindScrollListener();
+    }
+    hide() {
+        if (this.getOption('tooltipZIndex') === 'auto') {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+    }
+    updateText() {
+        if (this.getOption('escape')) {
+            this.tooltipText.innerHTML = '';
+            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));
+        }
+        else {
+            this.tooltipText.innerHTML = this.getOption('tooltipLabel');
+        }
+    }
+    align() {
+        let position = this.getOption('tooltipPosition');
+        switch (position) {
+            case 'top':
+                this.alignTop();
+                if (this.isOutOfBounds()) {
+                    this.alignBottom();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'bottom':
+                this.alignBottom();
+                if (this.isOutOfBounds()) {
+                    this.alignTop();
+                    if (this.isOutOfBounds()) {
+                        this.alignRight();
+                        if (this.isOutOfBounds()) {
+                            this.alignLeft();
+                        }
+                    }
+                }
+                break;
+            case 'left':
+                this.alignLeft();
+                if (this.isOutOfBounds()) {
+                    this.alignRight();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+            case 'right':
+                this.alignRight();
+                if (this.isOutOfBounds()) {
+                    this.alignLeft();
+                    if (this.isOutOfBounds()) {
+                        this.alignTop();
+                        if (this.isOutOfBounds()) {
+                            this.alignBottom();
+                        }
+                    }
+                }
+                break;
+        }
+    }
+    getHostOffset() {
+        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {
+            let offset = this.el.nativeElement.getBoundingClientRect();
+            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();
+            let targetTop = offset.top + DomHandler.getWindowScrollTop();
+            return { left: targetLeft, top: targetTop };
+        }
+        else {
+            return { left: 0, top: 0 };
+        }
+    }
+    alignRight() {
+        this.preAlign('right');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignLeft() {
+        this.preAlign('left');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);
+        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignTop() {
+        this.preAlign('top');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    alignBottom() {
+        this.preAlign('bottom');
+        let hostOffset = this.getHostOffset();
+        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;
+        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);
+        this.container.style.left = left + this.getOption('positionLeft') + 'px';
+        this.container.style.top = top + this.getOption('positionTop') + 'px';
+    }
+    setOption(option) {
+        this._tooltipOptions = { ...this._tooltipOptions, ...option };
+    }
+    getOption(option) {
+        return this._tooltipOptions[option];
+    }
+    preAlign(position) {
+        this.container.style.left = -999 + 'px';
+        this.container.style.top = -999 + 'px';
+        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;
+        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;
+    }
+    isOutOfBounds() {
+        let offset = this.container.getBoundingClientRect();
+        let targetTop = offset.top;
+        let targetLeft = offset.left;
+        let width = DomHandler.getOuterWidth(this.container);
+        let height = DomHandler.getOuterHeight(this.container);
+        let viewport = DomHandler.getViewport();
+        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);
+    }
+    onWindowResize(e) {
+        this.hide();
+    }
+    bindDocumentResizeListener() {
+        this.zone.runOutsideAngular(() => {
+            this.resizeListener = this.onWindowResize.bind(this);
+            window.addEventListener('resize', this.resizeListener);
+        });
+    }
+    unbindDocumentResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {
+                if (this.container) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    unbindEvents() {
+        if (this.getOption('tooltipEvent') === 'hover') {
+            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);
+            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);
+            this.el.nativeElement.removeEventListener('click', this.clickListener);
+        }
+        else if (this.getOption('tooltipEvent') === 'focus') {
+            this.el.nativeElement.removeEventListener('focus', this.focusListener);
+            this.el.nativeElement.removeEventListener('blur', this.blurListener);
+        }
+        this.unbindDocumentResizeListener();
+    }
+    remove() {
+        if (this.container && this.container.parentElement) {
+            if (this.getOption('appendTo') === 'body')
+                document.body.removeChild(this.container);
+            else if (this.getOption('appendTo') === 'target')
+                this.el.nativeElement.removeChild(this.container);
+            else
+                DomHandler.removeChild(this.container, this.getOption('appendTo'));
+        }
+        this.unbindDocumentResizeListener();
+        this.unbindScrollListener();
+        this.clearTimeouts();
+        this.container = null;
+        this.scrollHandler = null;
+    }
+    clearShowTimeout() {
+        if (this.showTimeout) {
+            clearTimeout(this.showTimeout);
+            this.showTimeout = null;
+        }
+    }
+    clearHideTimeout() {
+        if (this.hideTimeout) {
+            clearTimeout(this.hideTimeout);
+            this.hideTimeout = null;
+        }
+    }
+    clearTimeouts() {
+        this.clearShowTimeout();
+        this.clearHideTimeout();
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        if (this.container) {
+            ZIndexUtils.clear(this.container);
+        }
+        this.remove();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+    }
+}
+Tooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });
+Tooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: Tooltip, selector: "[pTooltip]", inputs: { tooltipPosition: "tooltipPosition", tooltipEvent: "tooltipEvent", appendTo: "appendTo", positionStyle: "positionStyle", tooltipStyleClass: "tooltipStyleClass", tooltipZIndex: "tooltipZIndex", escape: "escape", showDelay: "showDelay", hideDelay: "hideDelay", life: "life", positionTop: "positionTop", positionLeft: "positionLeft", text: ["pTooltip", "text"], disabled: ["tooltipDisabled", "disabled"], tooltipOptions: "tooltipOptions" }, host: { classAttribute: "p-element" }, usesOnChanges: true, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tooltip, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[pTooltip]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{
+                type: Input
+            }], tooltipEvent: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], positionStyle: [{
+                type: Input
+            }], tooltipStyleClass: [{
+                type: Input
+            }], tooltipZIndex: [{
+                type: Input
+            }], escape: [{
+                type: Input
+            }], showDelay: [{
+                type: Input
+            }], hideDelay: [{
+                type: Input
+            }], life: [{
+                type: Input
+            }], positionTop: [{
+                type: Input
+            }], positionLeft: [{
+                type: Input
+            }], text: [{
+                type: Input,
+                args: ['pTooltip']
+            }], disabled: [{
+                type: Input,
+                args: ["tooltipDisabled"]
+            }], tooltipOptions: [{
+                type: Input
+            }] } });
+class TooltipModule {
+}
+TooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });
+TooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TooltipModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [Tooltip],
+                    declarations: [Tooltip]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tooltip, TooltipModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tooltip.mjs","sources":["../../src/app/components/tooltip/tooltip.ts","../../src/app/components/tooltip/primeng-tooltip.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, AfterViewInit, OnDestroy, Input, NgZone, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils'\nimport { PrimeNGConfig } from 'primeng/api';\n\nexport interface TooltipOptions {\n    tooltipLabel?: string;\n    tooltipPosition?: string;\n    tooltipEvent?: string;\n    appendTo?: any;\n    positionStyle?: string;\n    tooltipStyleClass?: string;\n    tooltipZIndex?: string;\n    escape?: boolean;\n    disabled?: boolean;\n    showDelay?: number;\n    hideDelay?: number;\n    positionTop?: number;\n    positionLeft?: number;\n    life?: number;\n}\n\n@Directive({\n    selector: '[pTooltip]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tooltip implements AfterViewInit, OnDestroy {\n\n    @Input() tooltipPosition: string;\n\n    @Input() tooltipEvent: string;\n\n    @Input() appendTo: any;\n\n    @Input() positionStyle: string;\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() tooltipZIndex: string;\n\n    @Input() escape: boolean = true;\n\n    @Input() showDelay: number;\n\n    @Input() hideDelay: number;\n\n    @Input() life: number;\n\n    @Input() positionTop: number;\n\n    @Input() positionLeft: number;\n\n    @Input('pTooltip') text: string;\n\n    @Input(\"tooltipDisabled\") get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(val:boolean) {\n        this._disabled = val;\n        this.deactivate();\n    }\n\n    @Input() tooltipOptions: TooltipOptions;\n\n    _tooltipOptions: TooltipOptions = {\n        tooltipPosition: 'right',\n        tooltipEvent: 'hover',\n        appendTo: 'body',\n        tooltipZIndex: 'auto',\n        escape: false,\n        positionTop: 0,\n        positionLeft: 0\n    }\n\n    _disabled: boolean;\n\n    container: any;\n\n    styleClass: string;\n\n    tooltipText: any;\n\n    showTimeout: any;\n\n    hideTimeout: any;\n\n    active: boolean;\n\n    mouseEnterListener: Function;\n\n    mouseLeaveListener: Function;\n\n    clickListener: Function;\n\n    focusListener: Function;\n\n    blurListener: Function;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone, public config: PrimeNGConfig) { }\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            if (this.getOption('tooltipEvent') === 'hover') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n            }\n            else if (this.getOption('tooltipEvent') === 'focus') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n                this.el.nativeElement.addEventListener('focus', this.focusListener);\n                this.el.nativeElement.addEventListener('blur', this.blurListener);\n            }\n        });\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.tooltipPosition) {\n            this.setOption({tooltipPosition: simpleChange.tooltipPosition.currentValue});\n        }\n\n        if (simpleChange.tooltipEvent) {\n            this.setOption({tooltipEvent: simpleChange.tooltipEvent.currentValue});\n        }\n\n        if (simpleChange.appendTo) {\n            this.setOption({appendTo: simpleChange.appendTo.currentValue});\n        }\n\n        if (simpleChange.positionStyle) {\n            this.setOption({positionStyle: simpleChange.positionStyle.currentValue});\n        }\n\n        if (simpleChange.tooltipStyleClass) {\n            this.setOption({tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue});\n        }\n\n        if (simpleChange.tooltipZIndex) {\n            this.setOption({tooltipZIndex: simpleChange.tooltipZIndex.currentValue});\n        }\n\n        if (simpleChange.escape) {\n            this.setOption({escape: simpleChange.escape.currentValue});\n        }\n\n        if (simpleChange.showDelay) {\n            this.setOption({showDelay: simpleChange.showDelay.currentValue});\n        }\n\n        if (simpleChange.hideDelay) {\n            this.setOption({hideDelay: simpleChange.hideDelay.currentValue});\n        }\n\n        if (simpleChange.life) {\n            this.setOption({life: simpleChange.life.currentValue});\n        }\n\n        if (simpleChange.positionTop) {\n            this.setOption({positionTop: simpleChange.positionTop.currentValue});\n        }\n\n        if (simpleChange.positionLeft) {\n            this.setOption({positionLeft: simpleChange.positionLeft.currentValue});\n        }\n\n        if (simpleChange.disabled) {\n            this.setOption({disabled: simpleChange.disabled.currentValue});\n        }\n\n        if (simpleChange.text) {\n            this.setOption({tooltipLabel: simpleChange.text.currentValue});\n\n            if (this.active) {\n                if (simpleChange.text.currentValue) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n\n        if (simpleChange.tooltipOptions) {\n            this._tooltipOptions = {...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue};\n            this.deactivate();\n\n            if (this.active) {\n                if (this.getOption('tooltipLabel')) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n    }\n\n    onMouseEnter(e: Event) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n\n    onMouseLeave(e: Event) {\n        this.deactivate();\n    }\n\n    onFocus(e: Event) {\n        this.activate();\n    }\n\n    onBlur(e: Event) {\n        this.deactivate();\n    }\n\n    onClick(e: Event) {\n        this.deactivate();\n    }\n\n    activate() {\n        this.active = true;\n        this.clearHideTimeout();\n\n        if (this.getOption('showDelay'))\n            this.showTimeout = setTimeout(() => { this.show() }, this.getOption('showDelay'));\n        else\n            this.show();\n\n        if (this.getOption('life')) {\n            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n            this.hideTimeout = setTimeout(() => { this.hide() }, duration);\n        }\n    }\n\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n\n        if (this.getOption('hideDelay')) {\n            this.clearHideTimeout();    //life timeout\n            this.hideTimeout = setTimeout(() => { this.hide() }, this.getOption('hideDelay'));\n        }\n        else {\n            this.hide();\n        }\n    }\n\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n\n        this.container = document.createElement('div');\n\n        let tooltipArrow = document.createElement('div');\n        tooltipArrow.className = 'p-tooltip-arrow';\n        this.container.appendChild(tooltipArrow);\n\n        this.tooltipText = document.createElement('div');\n        this.tooltipText.className = 'p-tooltip-text';\n\n        this.updateText();\n\n        if (this.getOption('positionStyle')) {\n            this.container.style.position = this.getOption('positionStyle');\n        }\n\n        this.container.appendChild(this.tooltipText);\n\n        if (this.getOption('appendTo') === 'body')\n            document.body.appendChild(this.container);\n        else if (this.getOption('appendTo') === 'target')\n            DomHandler.appendChild(this.container, this.el.nativeElement);\n        else\n            DomHandler.appendChild(this.container, this.getOption('appendTo'));\n\n        this.container.style.display = 'inline-block';\n    }\n\n    show() {\n        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n            return;\n        }\n\n        this.create();\n        this.align();\n        DomHandler.fadeIn(this.container, 250);\n\n        if (this.getOption('tooltipZIndex') === 'auto')\n            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);\n        else\n            this.container.style.zIndex = this.getOption('tooltipZIndex');\n\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    hide() {\n        if (this.getOption('tooltipZIndex') === 'auto') {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.remove();\n    }\n\n    updateText() {\n        if (this.getOption('escape')) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n        }\n        else {\n            this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n        }\n    }\n\n    align() {\n        let position = this.getOption('tooltipPosition');\n\n        switch (position) {\n            case 'top':\n                this.alignTop();\n                if (this.isOutOfBounds()) {\n                    this.alignBottom();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'bottom':\n                this.alignBottom();\n                if (this.isOutOfBounds()) {\n                    this.alignTop();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'left':\n                this.alignLeft();\n                if (this.isOutOfBounds()) {\n                    this.alignRight();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n\n            case 'right':\n                this.alignRight();\n                if (this.isOutOfBounds()) {\n                    this.alignLeft();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n        }\n    }\n\n    getHostOffset() {\n        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n            let targetTop = offset.top + DomHandler.getWindowScrollTop();\n\n            return { left: targetLeft, top: targetTop };\n        }\n        else {\n            return { left: 0, top: 0 };\n        }\n    }\n\n    alignRight() {\n        this.preAlign('right');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignLeft() {\n        this.preAlign('left');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignTop() {\n        this.preAlign('top');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    alignBottom() {\n        this.preAlign('bottom');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    setOption(option: TooltipOptions) {\n        this._tooltipOptions = {...this._tooltipOptions, ...option}\n    }\n\n    getOption(option: string) {\n        return this._tooltipOptions[option];\n    }\n\n    preAlign(position: string) {\n        this.container.style.left = -999 + 'px';\n        this.container.style.top = -999 + 'px';\n\n        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n    }\n\n    isOutOfBounds(): boolean {\n        let offset = this.container.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = DomHandler.getOuterWidth(this.container);\n        let height = DomHandler.getOuterHeight(this.container);\n        let viewport = DomHandler.getViewport();\n\n        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);\n    }\n\n    onWindowResize(e: Event) {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        this.zone.runOutsideAngular(() => {\n            this.resizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.resizeListener);\n        });\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (this.container) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindEvents() {\n        if (this.getOption('tooltipEvent') === 'hover') {\n            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n            this.el.nativeElement.removeEventListener('click', this.clickListener);\n        }\n        else if (this.getOption('tooltipEvent') === 'focus') {\n            this.el.nativeElement.removeEventListener('focus', this.focusListener);\n            this.el.nativeElement.removeEventListener('blur', this.blurListener);\n        }\n\n        this.unbindDocumentResizeListener();\n    }\n\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.getOption('appendTo') === 'body')\n                document.body.removeChild(this.container);\n            else if (this.getOption('appendTo') === 'target')\n                this.el.nativeElement.removeChild(this.container);\n            else\n                DomHandler.removeChild(this.container, this.getOption('appendTo'));\n        }\n\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.clearTimeouts();\n        this.container = null;\n        this.scrollHandler = null;\n    }\n\n    clearShowTimeout() {\n        if (this.showTimeout) {\n            clearTimeout(this.showTimeout);\n            this.showTimeout = null;\n        }\n    }\n\n    clearHideTimeout() {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n    }\n\n    clearTimeouts() {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n\n        if (this.container) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.remove();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Tooltip],\n    declarations: [Tooltip]\n})\nexport class TooltipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1272 @@
+import * as i0 from '@angular/core';
+import { forwardRef, Component, ViewEncapsulation, Inject, Input, EventEmitter, ChangeDetectionStrategy, Optional, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import * as i3 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+
+class UITreeNode {
+    constructor(tree) {
+        this.tree = tree;
+    }
+    ngOnInit() {
+        this.node.parent = this.parentNode;
+        if (this.parentNode) {
+            this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));
+        }
+    }
+    getIcon() {
+        let icon;
+        if (this.node.icon)
+            icon = this.node.icon;
+        else
+            icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;
+        return UITreeNode.ICON_CLASS + ' ' + icon;
+    }
+    isLeaf() {
+        return this.tree.isNodeLeaf(this.node);
+    }
+    toggle(event) {
+        if (this.node.expanded)
+            this.collapse(event);
+        else
+            this.expand(event);
+    }
+    expand(event) {
+        this.node.expanded = true;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeExpand.emit({ originalEvent: event, node: this.node });
+    }
+    collapse(event) {
+        this.node.expanded = false;
+        if (this.tree.virtualScroll) {
+            this.tree.updateSerializedValue();
+        }
+        this.tree.onNodeCollapse.emit({ originalEvent: event, node: this.node });
+    }
+    onNodeClick(event) {
+        this.tree.onNodeClick(event, this.node);
+    }
+    onNodeKeydown(event) {
+        if (event.which === 13) {
+            this.tree.onNodeClick(event, this.node);
+        }
+    }
+    onNodeTouchEnd() {
+        this.tree.onNodeTouchEnd();
+    }
+    onNodeRightClick(event) {
+        this.tree.onNodeRightClick(event, this.node);
+    }
+    isSelected() {
+        return this.tree.isSelected(this.node);
+    }
+    onDropPoint(event, position) {
+        event.preventDefault();
+        let dragNode = this.tree.dragNode;
+        let dragNodeIndex = this.tree.dragNodeIndex;
+        let dragNodeScope = this.tree.dragNodeScope;
+        let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;
+        if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {
+            let dropParams = { ...this.createDropPointEventMetadata(position) };
+            if (this.tree.validateDrop) {
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index,
+                    accept: () => {
+                        this.processPointDrop(dropParams);
+                    }
+                });
+            }
+            else {
+                this.processPointDrop(dropParams);
+                this.tree.onNodeDrop.emit({
+                    originalEvent: event,
+                    dragNode: dragNode,
+                    dropNode: this.node,
+                    index: this.index
+                });
+            }
+        }
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    processPointDrop(event) {
+        let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;
+        event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);
+        let dropIndex = this.index;
+        if (event.position < 0) {
+            dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;
+            newNodeList.splice(dropIndex, 0, event.dragNode);
+        }
+        else {
+            dropIndex = newNodeList.length;
+            newNodeList.push(event.dragNode);
+        }
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: event.dragNodeIndex
+        });
+    }
+    createDropPointEventMetadata(position) {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node,
+            index: this.index,
+            position: position
+        };
+    }
+    onDropPointDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        event.preventDefault();
+    }
+    onDropPointDragEnter(event, position) {
+        if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            if (position < 0)
+                this.draghoverPrev = true;
+            else
+                this.draghoverNext = true;
+        }
+    }
+    onDropPointDragLeave(event) {
+        this.draghoverPrev = false;
+        this.draghoverNext = false;
+    }
+    onDragStart(event) {
+        if (this.tree.draggableNodes && this.node.draggable !== false) {
+            event.dataTransfer.setData("text", "data");
+            this.tree.dragDropService.startDrag({
+                tree: this,
+                node: this.node,
+                subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+                index: this.index,
+                scope: this.tree.draggableScope
+            });
+        }
+        else {
+            event.preventDefault();
+        }
+    }
+    onDragStop(event) {
+        this.tree.dragDropService.stopDrag({
+            node: this.node,
+            subNodes: this.node.parent ? this.node.parent.children : this.tree.value,
+            index: this.index
+        });
+    }
+    onDropNodeDragOver(event) {
+        event.dataTransfer.dropEffect = 'move';
+        if (this.tree.droppableNodes) {
+            event.preventDefault();
+            event.stopPropagation();
+        }
+    }
+    onDropNode(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false) {
+            let dragNode = this.tree.dragNode;
+            if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {
+                let dropParams = { ...this.createDropNodeEventMetadata() };
+                if (this.tree.validateDrop) {
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index,
+                        accept: () => {
+                            this.processNodeDrop(dropParams);
+                        }
+                    });
+                }
+                else {
+                    this.processNodeDrop(dropParams);
+                    this.tree.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: this.node,
+                        index: this.index
+                    });
+                }
+            }
+        }
+        event.preventDefault();
+        event.stopPropagation();
+        this.draghoverNode = false;
+    }
+    createDropNodeEventMetadata() {
+        return {
+            dragNode: this.tree.dragNode,
+            dragNodeIndex: this.tree.dragNodeIndex,
+            dragNodeSubNodes: this.tree.dragNodeSubNodes,
+            dropNode: this.node
+        };
+    }
+    processNodeDrop(event) {
+        let dragNodeIndex = event.dragNodeIndex;
+        event.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        if (event.dropNode.children)
+            event.dropNode.children.push(event.dragNode);
+        else
+            event.dropNode.children = [event.dragNode];
+        this.tree.dragDropService.stopDrag({
+            node: event.dragNode,
+            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,
+            index: dragNodeIndex
+        });
+    }
+    onDropNodeDragEnter(event) {
+        if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {
+            this.draghoverNode = true;
+        }
+    }
+    onDropNodeDragLeave(event) {
+        if (this.tree.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {
+                this.draghoverNode = false;
+            }
+        }
+    }
+    onKeyDown(event) {
+        const nodeElement = event.target.parentElement.parentElement;
+        if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {
+            return;
+        }
+        switch (event.which) {
+            //down arrow
+            case 40:
+                const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];
+                if (listElement && listElement.children.length > 0) {
+                    this.focusNode(listElement.children[0]);
+                }
+                else {
+                    const nextNodeElement = nodeElement.nextElementSibling;
+                    if (nextNodeElement) {
+                        this.focusNode(nextNodeElement);
+                    }
+                    else {
+                        let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);
+                        if (nextSiblingAncestor) {
+                            this.focusNode(nextSiblingAncestor);
+                        }
+                    }
+                }
+                event.preventDefault();
+                break;
+            //up arrow
+            case 38:
+                if (nodeElement.previousElementSibling) {
+                    this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //right arrow
+            case 39:
+                if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {
+                    this.expand(event);
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.node.expanded) {
+                    this.collapse(event);
+                }
+                else {
+                    let parentNodeElement = this.getParentNodeElement(nodeElement);
+                    if (parentNodeElement) {
+                        this.focusNode(parentNodeElement);
+                    }
+                }
+                event.preventDefault();
+                break;
+            //enter
+            case 13:
+                this.tree.onNodeClick(event, this.node);
+                event.preventDefault();
+                break;
+            default:
+                //no op
+                break;
+        }
+    }
+    findNextSiblingOfAncestor(nodeElement) {
+        let parentNodeElement = this.getParentNodeElement(nodeElement);
+        if (parentNodeElement) {
+            if (parentNodeElement.nextElementSibling)
+                return parentNodeElement.nextElementSibling;
+            else
+                return this.findNextSiblingOfAncestor(parentNodeElement);
+        }
+        else {
+            return null;
+        }
+    }
+    findLastVisibleDescendant(nodeElement) {
+        const listElement = Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));
+        const childrenListElement = listElement.children[1];
+        if (childrenListElement && childrenListElement.children.length > 0) {
+            const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];
+            return this.findLastVisibleDescendant(lastChildElement);
+        }
+        else {
+            return nodeElement;
+        }
+    }
+    getParentNodeElement(nodeElement) {
+        const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;
+        return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;
+    }
+    focusNode(element) {
+        if (this.tree.droppableNodes)
+            element.children[1].children[0].focus();
+        else
+            element.children[0].children[0].focus();
+    }
+}
+UITreeNode.ICON_CLASS = 'p-treenode-icon ';
+UITreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, deps: [{ token: forwardRef(() => Tree) }], target: i0.ɵɵFactoryTarget.Component });
+UITreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: UITreeNode, selector: "p-treeNode", inputs: { rowNode: "rowNode", node: "node", parentNode: "parentNode", root: "root", index: "index", firstChild: "firstChild", lastChild: "lastChild", level: "level", indentation: "indentation" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `, isInline: true, components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.Ripple, selector: "[pRipple]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: UITreeNode, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeNode',
+                    template: `
+        <ng-template [ngIf]="node">
+            <li *ngIf="tree.droppableNodes" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverPrev}"
+            (drop)="onDropPoint($event,-1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,-1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <li *ngIf="!tree.horizontal" [ngClass]="['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']">
+                <div class="p-treenode-content" [style.paddingLeft]="(level * indentation)  + 'rem'" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)" (touchend)="onNodeTouchEnd()"
+                    (drop)="onDropNode($event)" (dragover)="onDropNodeDragOver($event)" (dragenter)="onDropNodeDragEnter($event)" (dragleave)="onDropNodeDragLeave($event)"
+                    [draggable]="tree.draggableNodes" (dragstart)="onDragStart($event)" (dragend)="onDragStop($event)" [attr.tabindex]="0"
+                    [ngClass]="{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}" role="treeitem"
+                    (keydown)="onKeyDown($event)" [attr.aria-posinset]="this.index + 1" [attr.aria-expanded]="this.node.expanded" [attr.aria-selected]="isSelected()" [attr.aria-label]="node.label">
+                    <button type="button" [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler p-link" (click)="toggle($event)" pRipple tabindex="-1">
+                        <span class="p-tree-toggler-icon pi pi-fw" [ngClass]="{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}"></span>
+                    </button>
+                    <div class="p-checkbox p-component" [ngClass]="{'p-checkbox-disabled': node.selectable === false}" *ngIf="tree.selectionMode == 'checkbox'" [attr.aria-checked]="isSelected()">
+                        <div class="p-checkbox-box" [ngClass]="{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}">
+                            <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':isSelected(),'pi-minus':node.partialSelected}"></span>
+                        </div>
+                    </div>
+                    <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                    <span class="p-treenode-label">
+                            <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                            <span *ngIf="tree.getTemplateForNode(node)">
+                                <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                            </span>
+                    </span>
+                </div>
+                <ul class="p-treenode-children" style="display: none;" *ngIf="!tree.virtualScroll && node.children && node.expanded" [style.display]="node.expanded ? 'block' : 'none'" role="group">
+                    <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy" [node]="childNode" [parentNode]="node"
+                        [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="tree.virtualNodeHeight" [level]="level + 1"></p-treeNode>
+                </ul>
+            </li>
+            <li *ngIf="tree.droppableNodes&&lastChild" class="p-treenode-droppoint" [ngClass]="{'p-treenode-droppoint-active':draghoverNext}"
+            (drop)="onDropPoint($event,1)" (dragover)="onDropPointDragOver($event)" (dragenter)="onDropPointDragEnter($event,1)" (dragleave)="onDropPointDragLeave($event)"></li>
+            <table *ngIf="tree.horizontal" [class]="node.styleClass">
+                <tbody>
+                    <tr>
+                        <td class="p-treenode-connector" *ngIf="!root">
+                            <table class="p-treenode-connector-table">
+                                <tbody>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!firstChild}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td [ngClass]="{'p-treenode-connector-line':!lastChild}"></td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </td>
+                        <td class="p-treenode" [ngClass]="{'p-treenode-collapsed':!node.expanded}">
+                            <div class="p-treenode-content" tabindex="0" [ngClass]="{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}" (click)="onNodeClick($event)" (contextmenu)="onNodeRightClick($event)"
+                                (touchend)="onNodeTouchEnd()" (keydown)="onNodeKeydown($event)">
+                                <span [attr.aria-label]="tree.togglerAriaLabel" class="p-tree-toggler pi pi-fw" [ngClass]="{'pi-plus':!node.expanded,'pi-minus':node.expanded}" *ngIf="!isLeaf()" (click)="toggle($event)"></span>
+                                <span [class]="getIcon()" *ngIf="node.icon||node.expandedIcon||node.collapsedIcon"></span>
+                                <span class="p-treenode-label">
+                                    <span *ngIf="!tree.getTemplateForNode(node)">{{node.label}}</span>
+                                    <span *ngIf="tree.getTemplateForNode(node)">
+                                        <ng-container *ngTemplateOutlet="tree.getTemplateForNode(node); context: {$implicit: node}"></ng-container>
+                                    </span>
+                                </span>
+                            </div>
+                        </td>
+                        <td class="p-treenode-children-container" *ngIf="node.children && node.expanded" [style.display]="node.expanded ? 'table-cell' : 'none'">
+                            <div class="p-treenode-children">
+                                <p-treeNode *ngFor="let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy" [node]="childNode"
+                                        [firstChild]="firstChild" [lastChild]="lastChild"></p-treeNode>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+            </table>
+        </ng-template>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: undefined, decorators: [{
+                    type: Inject,
+                    args: [forwardRef(() => Tree)]
+                }] }]; }, propDecorators: { rowNode: [{
+                type: Input
+            }], node: [{
+                type: Input
+            }], parentNode: [{
+                type: Input
+            }], root: [{
+                type: Input
+            }], index: [{
+                type: Input
+            }], firstChild: [{
+                type: Input
+            }], lastChild: [{
+                type: Input
+            }], level: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }] } });
+class Tree {
+    constructor(el, dragDropService, config) {
+        this.el = el;
+        this.dragDropService = dragDropService;
+        this.config = config;
+        this.selectionChange = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onNodeContextMenuSelect = new EventEmitter();
+        this.onNodeDrop = new EventEmitter();
+        this.layout = 'vertical';
+        this.metaKeySelection = true;
+        this.propagateSelectionUp = true;
+        this.propagateSelectionDown = true;
+        this.loadingIcon = 'pi pi-spinner';
+        this.emptyMessage = '';
+        this.filterBy = 'label';
+        this.filterMode = 'lenient';
+        this.indentation = 1.5;
+        this.trackBy = (index, item) => item;
+        this.onFilter = new EventEmitter();
+    }
+    ngOnInit() {
+        if (this.droppableNodes) {
+            this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(event => {
+                this.dragNodeTree = event.tree;
+                this.dragNode = event.node;
+                this.dragNodeSubNodes = event.subNodes;
+                this.dragNodeIndex = event.index;
+                this.dragNodeScope = event.scope;
+            });
+            this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(event => {
+                this.dragNodeTree = null;
+                this.dragNode = null;
+                this.dragNodeSubNodes = null;
+                this.dragNodeIndex = null;
+                this.dragNodeScope = null;
+                this.dragHover = false;
+            });
+        }
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this.updateSerializedValue();
+        }
+        if (simpleChange.scrollHeight && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    get horizontal() {
+        return this.layout == 'horizontal';
+    }
+    get emptyMessageLabel() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    ngAfterContentInit() {
+        if (this.templates.length) {
+            this.templateMap = {};
+        }
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.templateMap[item.name] = item.template;
+                    break;
+            }
+        });
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        this.serializeNodes(null, this.getRootNode(), 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    onNodeClick(event, node) {
+        let eventTarget = event.target;
+        if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {
+            return;
+        }
+        else if (this.selectionMode) {
+            if (node.selectable === false) {
+                return;
+            }
+            if (this.hasFilteredNodes()) {
+                node = this.getNodeWithKey(node.key, this.value);
+                if (!node) {
+                    return;
+                }
+            }
+            let index = this.findIndexInSelection(node);
+            let selected = (index >= 0);
+            if (this.isCheckboxSelectionMode()) {
+                if (selected) {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, false);
+                    else
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, false);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                }
+                else {
+                    if (this.propagateSelectionDown)
+                        this.propagateDown(node, true);
+                    else
+                        this.selection = [...this.selection || [], node];
+                    if (this.propagateSelectionUp && node.parent) {
+                        this.propagateUp(node.parent, true);
+                    }
+                    this.selectionChange.emit(this.selection);
+                    this.onNodeSelect.emit({ originalEvent: event, node: node });
+                }
+            }
+            else {
+                let metaSelection = this.nodeTouched ? false : this.metaKeySelection;
+                if (metaSelection) {
+                    let metaKey = (event.metaKey || event.ctrlKey);
+                    if (selected && metaKey) {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(null);
+                        }
+                        else {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                    }
+                    else {
+                        if (this.isSingleSelectionMode()) {
+                            this.selectionChange.emit(node);
+                        }
+                        else if (this.isMultipleSelectionMode()) {
+                            this.selection = (!metaKey) ? [] : this.selection || [];
+                            this.selection = [...this.selection, node];
+                            this.selectionChange.emit(this.selection);
+                        }
+                        this.onNodeSelect.emit({ originalEvent: event, node: node });
+                    }
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        if (selected) {
+                            this.selection = null;
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = node;
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    else {
+                        if (selected) {
+                            this.selection = this.selection.filter((val, i) => i != index);
+                            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+                        }
+                        else {
+                            this.selection = [...this.selection || [], node];
+                            this.onNodeSelect.emit({ originalEvent: event, node: node });
+                        }
+                    }
+                    this.selectionChange.emit(this.selection);
+                }
+            }
+        }
+        this.nodeTouched = false;
+    }
+    onNodeTouchEnd() {
+        this.nodeTouched = true;
+    }
+    onNodeRightClick(event, node) {
+        if (this.contextMenu) {
+            let eventTarget = event.target;
+            if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {
+                return;
+            }
+            else {
+                let index = this.findIndexInSelection(node);
+                let selected = (index >= 0);
+                if (!selected) {
+                    if (this.isSingleSelectionMode())
+                        this.selectionChange.emit(node);
+                    else
+                        this.selectionChange.emit([node]);
+                }
+                this.contextMenu.show(event);
+                this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });
+            }
+        }
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selectionMode && this.selection) {
+            if (this.isSingleSelectionMode()) {
+                let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.selection.length; i++) {
+                    let selectedNode = this.selection[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    syncNodeOption(node, parentNodes, option, value) {
+        // to synchronize the node option between the filtered nodes and the original nodes(this.value)
+        const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;
+        if (_node) {
+            _node[option] = value || node[option];
+        }
+    }
+    hasFilteredNodes() {
+        return this.filter && this.filteredNodes && this.filteredNodes.length;
+    }
+    getNodeWithKey(key, nodes) {
+        for (let node of nodes) {
+            if (node.key === key) {
+                return node;
+            }
+            if (node.children) {
+                let matchedNode = this.getNodeWithKey(key, node.children);
+                if (matchedNode) {
+                    return matchedNode;
+                }
+            }
+        }
+    }
+    propagateUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedCount = 0;
+            let childPartialSelected = false;
+            for (let child of node.children) {
+                if (this.isSelected(child)) {
+                    selectedCount++;
+                }
+                else if (child.partialSelected) {
+                    childPartialSelected = true;
+                }
+            }
+            if (select && selectedCount == node.children.length) {
+                this.selection = [...this.selection || [], node];
+                node.partialSelected = false;
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this.selection = this.selection.filter((val, i) => i != index);
+                    }
+                }
+                if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+            this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateUp(parent, select);
+        }
+    }
+    propagateDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        if (select && index == -1) {
+            this.selection = [...this.selection || [], node];
+        }
+        else if (!select && index > -1) {
+            this.selection = this.selection.filter((val, i) => i != index);
+        }
+        node.partialSelected = false;
+        this.syncNodeOption(node, this.filteredNodes, 'partialSelected');
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'multiple';
+    }
+    isCheckboxSelectionMode() {
+        return this.selectionMode && this.selectionMode == 'checkbox';
+    }
+    isNodeLeaf(node) {
+        return node.leaf == false ? false : !(node.children && node.children.length);
+    }
+    getRootNode() {
+        return this.filteredNodes ? this.filteredNodes : this.value;
+    }
+    getTemplateForNode(node) {
+        if (this.templateMap)
+            return node.type ? this.templateMap[node.type] : this.templateMap['default'];
+        else
+            return null;
+    }
+    onDragOver(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.dataTransfer.dropEffect = 'move';
+            event.preventDefault();
+        }
+    }
+    onDrop(event) {
+        if (this.droppableNodes && (!this.value || this.value.length === 0)) {
+            event.preventDefault();
+            let dragNode = this.dragNode;
+            if (this.allowDrop(dragNode, null, this.dragNodeScope)) {
+                let dragNodeIndex = this.dragNodeIndex;
+                this.value = this.value || [];
+                if (this.validateDrop) {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex,
+                        accept: () => {
+                            this.processTreeDrop(dragNode, dragNodeIndex);
+                        }
+                    });
+                }
+                else {
+                    this.onNodeDrop.emit({
+                        originalEvent: event,
+                        dragNode: dragNode,
+                        dropNode: null,
+                        index: dragNodeIndex
+                    });
+                    this.processTreeDrop(dragNode, dragNodeIndex);
+                }
+            }
+        }
+    }
+    processTreeDrop(dragNode, dragNodeIndex) {
+        this.dragNodeSubNodes.splice(dragNodeIndex, 1);
+        this.value.push(dragNode);
+        this.dragDropService.stopDrag({
+            node: dragNode
+        });
+    }
+    onDragEnter() {
+        if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {
+            this.dragHover = true;
+        }
+    }
+    onDragLeave(event) {
+        if (this.droppableNodes) {
+            let rect = event.currentTarget.getBoundingClientRect();
+            if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {
+                this.dragHover = false;
+            }
+        }
+    }
+    allowDrop(dragNode, dropNode, dragNodeScope) {
+        if (!dragNode) {
+            //prevent random html elements to be dragged
+            return false;
+        }
+        else if (this.isValidDragScope(dragNodeScope)) {
+            let allow = true;
+            if (dropNode) {
+                if (dragNode === dropNode) {
+                    allow = false;
+                }
+                else {
+                    let parent = dropNode.parent;
+                    while (parent != null) {
+                        if (parent === dragNode) {
+                            allow = false;
+                            break;
+                        }
+                        parent = parent.parent;
+                    }
+                }
+            }
+            return allow;
+        }
+        else {
+            return false;
+        }
+    }
+    isValidDragScope(dragScope) {
+        let dropScope = this.droppableScope;
+        if (dropScope) {
+            if (typeof dropScope === 'string') {
+                if (typeof dragScope === 'string')
+                    return dropScope === dragScope;
+                else if (dragScope instanceof Array)
+                    return dragScope.indexOf(dropScope) != -1;
+            }
+            else if (dropScope instanceof Array) {
+                if (typeof dragScope === 'string') {
+                    return dropScope.indexOf(dragScope) != -1;
+                }
+                else if (dragScope instanceof Array) {
+                    for (let s of dropScope) {
+                        for (let ds of dragScope) {
+                            if (s === ds) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+    _filter(value) {
+        let filterValue = value;
+        if (filterValue === '') {
+            this.filteredNodes = null;
+        }
+        else {
+            this.filteredNodes = [];
+            const searchFields = this.filterBy.split(',');
+            const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);
+            const isStrictMode = this.filterMode === 'strict';
+            for (let node of this.value) {
+                let copyNode = { ...node };
+                let paramsWithoutNode = { searchFields, filterText, isStrictMode };
+                if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                    (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                    this.filteredNodes.push(copyNode);
+                }
+            }
+        }
+        this.updateSerializedValue();
+        this.onFilter.emit({
+            filter: filterValue,
+            filteredValue: this.filteredNodes
+        });
+    }
+    resetFilter() {
+        this.filteredNodes = null;
+        if (this.filterViewChild && this.filterViewChild.nativeElement) {
+            this.filterViewChild.nativeElement.value = '';
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = { ...childNode };
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                node.expanded = true;
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { searchFields, filterText, isStrictMode }) {
+        let matched = false;
+        for (let field of searchFields) {
+            let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);
+            if (fieldValue.indexOf(filterText) > -1) {
+                matched = true;
+            }
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    ngOnDestroy() {
+        if (this.dragStartSubscription) {
+            this.dragStartSubscription.unsubscribe();
+        }
+        if (this.dragStopSubscription) {
+            this.dragStopSubscription.unsubscribe();
+        }
+    }
+}
+Tree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, deps: [{ token: i0.ElementRef }, { token: i3.TreeDragDropService, optional: true }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
+Tree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: Tree, selector: "p-tree", inputs: { value: "value", selectionMode: "selectionMode", selection: "selection", style: "style", styleClass: "styleClass", contextMenu: "contextMenu", layout: "layout", draggableScope: "draggableScope", droppableScope: "droppableScope", draggableNodes: "draggableNodes", droppableNodes: "droppableNodes", metaKeySelection: "metaKeySelection", propagateSelectionUp: "propagateSelectionUp", propagateSelectionDown: "propagateSelectionDown", loading: "loading", loadingIcon: "loadingIcon", emptyMessage: "emptyMessage", ariaLabel: "ariaLabel", togglerAriaLabel: "togglerAriaLabel", ariaLabelledBy: "ariaLabelledBy", validateDrop: "validateDrop", filter: "filter", filterBy: "filterBy", filterMode: "filterMode", filterPlaceholder: "filterPlaceholder", filterLocale: "filterLocale", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualNodeHeight: "virtualNodeHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", indentation: "indentation", trackBy: "trackBy" }, outputs: { selectionChange: "selectionChange", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onNodeContextMenuSelect: "onNodeContextMenuSelect", onNodeDrop: "onNodeDrop", onFilter: "onFilter" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, isInline: true, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"], components: [{ type: UITreeNode, selector: "p-treeNode", inputs: ["rowNode", "node", "parentNode", "root", "index", "firstChild", "lastChild", "level", "indentation"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: Tree, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-tree', template: `
+        <div [ngClass]="{'p-tree p-component':true,'p-tree-selectable':selectionMode,
+                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}"
+            [ngStyle]="style" [class]="styleClass" *ngIf="!horizontal"
+            (drop)="onDrop($event)" (dragover)="onDragOver($event)" (dragenter)="onDragEnter()" (dragleave)="onDragLeave($event)">
+            <div class="p-tree-loading-overlay p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div *ngIf="filter" class="p-tree-filter-container">
+                <input #filter type="text" autocomplete="off" class="p-tree-filter p-inputtext p-component" [attr.placeholder]="filterPlaceholder"
+                    (keydown.enter)="$event.preventDefault()" (input)="_filter($event.target.value)">
+                    <span class="p-tree-filter-icon pi pi-search"></span>
+            </div>
+            <ng-container *ngIf="!virtualScroll; else virtualScrollList">
+                <div class="p-tree-wrapper" [style.max-height]="scrollHeight">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *ngFor="let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy" [node]="node"
+                                    [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [level]="0"></p-treeNode>
+                    </ul>
+                </div>
+            </ng-container>
+            <ng-template #virtualScrollList>
+                <cdk-virtual-scroll-viewport class="p-tree-wrapper" [style.height]="scrollHeight" [itemSize]="virtualNodeHeight" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx">
+                    <ul class="p-tree-container" *ngIf="getRootNode()" role="tree" [attr.aria-label]="ariaLabel" [attr.aria-labelledby]="ariaLabelledBy">
+                        <p-treeNode *cdkVirtualFor="let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0"  [level]="rowNode.level"
+                                    [rowNode]="rowNode" [node]="rowNode.node" [firstChild]="firstChild" [lastChild]="lastChild" [index]="index" [style.height.px]="virtualNodeHeight" [indentation]="indentation"></p-treeNode>
+                    </ul>
+                </cdk-virtual-scroll-viewport>
+            </ng-template>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+        <div [ngClass]="{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}"  [ngStyle]="style" [class]="styleClass" *ngIf="horizontal">
+            <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            <div class="p-tree-loading-mask p-component-overlay" *ngIf="loading">
+                <i [class]="'p-tree-loading-icon pi-spin ' + loadingIcon"></i>
+            </div>
+            <table *ngIf="value&&value[0]">
+                <p-treeNode [node]="value[0]" [root]="true"></p-treeNode>
+            </table>
+            <div class="p-tree-empty-message" *ngIf="!loading && (getRootNode() == null || getRootNode().length === 0)">
+                <ng-container *ngIf="!emptyMessageTemplate; else emptyFilter">
+                    {{emptyMessageLabel}}
+                </ng-container>
+                <ng-container #emptyFilter *ngTemplateOutlet="emptyMessageTemplate"></ng-container>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-tree-container{margin:0;padding:0;list-style-type:none;overflow:auto}.p-treenode-children{margin:0;padding:0;list-style-type:none}.p-tree-wrapper{overflow:auto}.p-treenode-selectable{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-tree-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treenode-leaf>.p-treenode-content .p-tree-toggler{visibility:hidden}.p-treenode-content{display:flex;align-items:center}.p-tree-filter{width:100%}.p-tree-filter-container{position:relative;display:block;width:100%}.p-tree-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-tree-loading{position:relative;min-height:4rem}.p-tree .p-tree-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}.p-tree-flex-scrollable{display:flex;flex:1;height:100%;flex-direction:column}.p-tree-flex-scrollable .p-tree-wrapper{flex:1}.p-tree .p-treenode-droppoint{height:4px;list-style-type:none}.p-tree .p-treenode-droppoint-active{border:0 none}.p-tree-horizontal{width:auto;padding-left:0;padding-right:0;overflow:auto}.p-tree.p-tree-horizontal table,.p-tree.p-tree-horizontal tr,.p-tree.p-tree-horizontal td{border-collapse:collapse;margin:0;padding:0;vertical-align:middle}.p-tree-horizontal .p-treenode-content{font-weight:normal;padding:.4em 1em .4em .2em;display:flex;align-items:center}.p-tree-horizontal .p-treenode-parent .p-treenode-content{font-weight:normal;white-space:nowrap}.p-tree.p-tree-horizontal .p-treenode{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-x scroll center center transparent;padding:.25rem 2.5rem}.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed{padding-right:0}.p-tree.p-tree-horizontal .p-treenode-children{padding:0;margin:0}.p-tree.p-tree-horizontal .p-treenode-connector{width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-table{height:100%;width:1px}.p-tree.p-tree-horizontal .p-treenode-connector-line{background:url(data:image/gif;base64,R0lGODlhAQABAIAAALGxsf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzQgNDYuMjcyOTc2LCBTYXQgSmFuIDI3IDIwMDcgMjI6Mzc6MzcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTMzwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAxMC0wMy0xMVQxMDoxNjo0MVo8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAxMC0wMy0xMVQxMjo0NDoxOVo8L3hhcDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQABwD/ACwAAAAAAQABAAACAkQBADs=) repeat-y scroll 0 0 transparent;width:1px}.p-tree.p-tree-horizontal table{height:0}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i3.TreeDragDropService, decorators: [{
+                    type: Optional
+                }] }, { type: i3.PrimeNGConfig }]; }, propDecorators: { value: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onNodeContextMenuSelect: [{
+                type: Output
+            }], onNodeDrop: [{
+                type: Output
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], layout: [{
+                type: Input
+            }], draggableScope: [{
+                type: Input
+            }], droppableScope: [{
+                type: Input
+            }], draggableNodes: [{
+                type: Input
+            }], droppableNodes: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], ariaLabel: [{
+                type: Input
+            }], togglerAriaLabel: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], validateDrop: [{
+                type: Input
+            }], filter: [{
+                type: Input
+            }], filterBy: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterPlaceholder: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualNodeHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], indentation: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], filterViewChild: [{
+                type: ViewChild,
+                args: ['filter']
+            }] } });
+class TreeModule {
+}
+TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, declarations: [Tree, UITreeNode], imports: [CommonModule, ScrollingModule, RippleModule], exports: [Tree, SharedModule, ScrollingModule] });
+TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, imports: [[CommonModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule, RippleModule],
+                    exports: [Tree, SharedModule, ScrollingModule],
+                    declarations: [Tree, UITreeNode]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { Tree, TreeModule, UITreeNode };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tree.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tree.mjs","sources":["../../src/app/components/tree/tree.ts","../../src/app/components/tree/primeng-tree.ts"],"sourcesContent":["import {NgModule,Component,Input,AfterContentInit,OnDestroy,Output,EventEmitter,OnInit,OnChanges,\n    ContentChildren,QueryList,TemplateRef,Inject,ElementRef,forwardRef,ChangeDetectionStrategy,SimpleChanges, ViewEncapsulation, ViewChild} from '@angular/core';\nimport {CdkVirtualScrollViewport, ScrollingModule} from '@angular/cdk/scrolling';\nimport {Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PrimeNGConfig, TranslationKeys, TreeNode} from 'primeng/api';\nimport {SharedModule} from 'primeng/api';\nimport {PrimeTemplate} from 'primeng/api';\nimport {TreeDragDropService} from 'primeng/api';\nimport {Subscription} from 'rxjs';\nimport {BlockableUI} from 'primeng/api';\nimport {ObjectUtils} from 'primeng/utils';\nimport {DomHandler} from 'primeng/dom';\nimport {RippleModule} from 'primeng/ripple';\n\n@Component({\n    selector: 'p-treeNode',\n    template: `\n        <ng-template [ngIf]=\"node\">\n            <li *ngIf=\"tree.droppableNodes\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverPrev}\"\n            (drop)=\"onDropPoint($event,-1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,-1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n            <li *ngIf=\"!tree.horizontal\" [ngClass]=\"['p-treenode',node.styleClass||'', isLeaf() ? 'p-treenode-leaf': '']\">\n                <div class=\"p-treenode-content\" [style.paddingLeft]=\"(level * indentation)  + 'rem'\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\" (touchend)=\"onNodeTouchEnd()\"\n                    (drop)=\"onDropNode($event)\" (dragover)=\"onDropNodeDragOver($event)\" (dragenter)=\"onDropNodeDragEnter($event)\" (dragleave)=\"onDropNodeDragLeave($event)\"\n                    [draggable]=\"tree.draggableNodes\" (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragStop($event)\" [attr.tabindex]=\"0\"\n                    [ngClass]=\"{'p-treenode-selectable':tree.selectionMode && node.selectable !== false,'p-treenode-dragover':draghoverNode, 'p-highlight':isSelected()}\" role=\"treeitem\"\n                    (keydown)=\"onKeyDown($event)\" [attr.aria-posinset]=\"this.index + 1\" [attr.aria-expanded]=\"this.node.expanded\" [attr.aria-selected]=\"isSelected()\" [attr.aria-label]=\"node.label\">\n                    <button type=\"button\" [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler p-link\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\">\n                        <span class=\"p-tree-toggler-icon pi pi-fw\" [ngClass]=\"{'pi-chevron-right':!node.expanded,'pi-chevron-down':node.expanded}\"></span>\n                    </button>\n                    <div class=\"p-checkbox p-component\" [ngClass]=\"{'p-checkbox-disabled': node.selectable === false}\" *ngIf=\"tree.selectionMode == 'checkbox'\" [attr.aria-checked]=\"isSelected()\">\n                        <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': isSelected(), 'p-indeterminate': node.partialSelected}\">\n                            <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':isSelected(),'pi-minus':node.partialSelected}\"></span>\n                        </div>\n                    </div>\n                    <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n                    <span class=\"p-treenode-label\">\n                            <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n                            <span *ngIf=\"tree.getTemplateForNode(node)\">\n                                <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                            </span>\n                    </span>\n                </div>\n                <ul class=\"p-treenode-children\" style=\"display: none;\" *ngIf=\"!tree.virtualScroll && node.children && node.expanded\" [style.display]=\"node.expanded ? 'block' : 'none'\" role=\"group\">\n                    <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; let index=index; trackBy: tree.trackBy\" [node]=\"childNode\" [parentNode]=\"node\"\n                        [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"tree.virtualNodeHeight\" [level]=\"level + 1\"></p-treeNode>\n                </ul>\n            </li>\n            <li *ngIf=\"tree.droppableNodes&&lastChild\" class=\"p-treenode-droppoint\" [ngClass]=\"{'p-treenode-droppoint-active':draghoverNext}\"\n            (drop)=\"onDropPoint($event,1)\" (dragover)=\"onDropPointDragOver($event)\" (dragenter)=\"onDropPointDragEnter($event,1)\" (dragleave)=\"onDropPointDragLeave($event)\"></li>\n            <table *ngIf=\"tree.horizontal\" [class]=\"node.styleClass\">\n                <tbody>\n                    <tr>\n                        <td class=\"p-treenode-connector\" *ngIf=\"!root\">\n                            <table class=\"p-treenode-connector-table\">\n                                <tbody>\n                                    <tr>\n                                        <td [ngClass]=\"{'p-treenode-connector-line':!firstChild}\"></td>\n                                    </tr>\n                                    <tr>\n                                        <td [ngClass]=\"{'p-treenode-connector-line':!lastChild}\"></td>\n                                    </tr>\n                                </tbody>\n                            </table>\n                        </td>\n                        <td class=\"p-treenode\" [ngClass]=\"{'p-treenode-collapsed':!node.expanded}\">\n                            <div class=\"p-treenode-content\" tabindex=\"0\" [ngClass]=\"{'p-treenode-selectable':tree.selectionMode,'p-highlight':isSelected()}\" (click)=\"onNodeClick($event)\" (contextmenu)=\"onNodeRightClick($event)\"\n                                (touchend)=\"onNodeTouchEnd()\" (keydown)=\"onNodeKeydown($event)\">\n                                <span [attr.aria-label]=\"tree.togglerAriaLabel\" class=\"p-tree-toggler pi pi-fw\" [ngClass]=\"{'pi-plus':!node.expanded,'pi-minus':node.expanded}\" *ngIf=\"!isLeaf()\" (click)=\"toggle($event)\"></span>\n                                <span [class]=\"getIcon()\" *ngIf=\"node.icon||node.expandedIcon||node.collapsedIcon\"></span>\n                                <span class=\"p-treenode-label\">\n                                    <span *ngIf=\"!tree.getTemplateForNode(node)\">{{node.label}}</span>\n                                    <span *ngIf=\"tree.getTemplateForNode(node)\">\n                                        <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node); context: {$implicit: node}\"></ng-container>\n                                    </span>\n                                </span>\n                            </div>\n                        </td>\n                        <td class=\"p-treenode-children-container\" *ngIf=\"node.children && node.expanded\" [style.display]=\"node.expanded ? 'table-cell' : 'none'\">\n                            <div class=\"p-treenode-children\">\n                                <p-treeNode *ngFor=\"let childNode of node.children;let firstChild=first;let lastChild=last; trackBy: tree.trackBy\" [node]=\"childNode\"\n                                        [firstChild]=\"firstChild\" [lastChild]=\"lastChild\"></p-treeNode>\n                            </div>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class UITreeNode implements OnInit {\n\n    static ICON_CLASS: string = 'p-treenode-icon ';\n\n    @Input() rowNode: any;\n\n    @Input() node: TreeNode;\n\n    @Input() parentNode: TreeNode;\n\n    @Input() root: boolean;\n\n    @Input() index: number;\n\n    @Input() firstChild: boolean;\n\n    @Input() lastChild: boolean;\n\n    @Input() level: number;\n\n    @Input() indentation: number;\n\n    tree: Tree;\n\n    constructor(@Inject(forwardRef(() => Tree)) tree) {\n        this.tree = tree as Tree;\n    }\n\n    draghoverPrev: boolean;\n\n    draghoverNext: boolean;\n\n    draghoverNode: boolean\n\n    ngOnInit() {\n        this.node.parent = this.parentNode;\n\n        if (this.parentNode) {\n            this.tree.syncNodeOption(this.node, this.tree.value, 'parent', this.tree.getNodeWithKey(this.parentNode.key, this.tree.value));\n        }\n    }\n\n    getIcon() {\n        let icon: string;\n\n        if (this.node.icon)\n            icon = this.node.icon;\n        else\n            icon = this.node.expanded && this.node.children && this.node.children.length ? this.node.expandedIcon : this.node.collapsedIcon;\n\n        return UITreeNode.ICON_CLASS + ' ' + icon;\n    }\n\n    isLeaf() {\n        return this.tree.isNodeLeaf(this.node);\n    }\n\n    toggle(event: Event) {\n        if (this.node.expanded)\n            this.collapse(event);\n        else\n            this.expand(event);\n    }\n\n    expand(event: Event) {\n        this.node.expanded = true;\n        if (this.tree.virtualScroll) {\n            this.tree.updateSerializedValue();\n        }\n        this.tree.onNodeExpand.emit({originalEvent: event, node: this.node});\n    }\n\n    collapse(event: Event) {\n        this.node.expanded = false;\n        if (this.tree.virtualScroll) {\n            this.tree.updateSerializedValue();\n        }\n        this.tree.onNodeCollapse.emit({originalEvent: event, node: this.node});\n    }\n\n    onNodeClick(event: MouseEvent) {\n        this.tree.onNodeClick(event, this.node);\n    }\n\n    onNodeKeydown(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.tree.onNodeClick(event, this.node);\n        }\n    }\n\n    onNodeTouchEnd() {\n        this.tree.onNodeTouchEnd();\n    }\n\n    onNodeRightClick(event: MouseEvent) {\n        this.tree.onNodeRightClick(event, this.node);\n    }\n\n    isSelected() {\n        return this.tree.isSelected(this.node);\n    }\n\n    onDropPoint(event: Event, position: number) {\n        event.preventDefault();\n        let dragNode = this.tree.dragNode;\n        let dragNodeIndex = this.tree.dragNodeIndex;\n        let dragNodeScope = this.tree.dragNodeScope;\n        let isValidDropPointIndex = this.tree.dragNodeTree === this.tree ? (position === 1 || dragNodeIndex !== this.index - 1) : true;\n\n        if (this.tree.allowDrop(dragNode, this.node, dragNodeScope) && isValidDropPointIndex) {\n            let dropParams = {...this.createDropPointEventMetadata(position)};\n\n            if (this.tree.validateDrop) {\n                this.tree.onNodeDrop.emit({\n                    originalEvent: event,\n                    dragNode: dragNode,\n                    dropNode: this.node,\n                    index: this.index,\n                    accept: () => {\n                        this.processPointDrop(dropParams);\n                    }\n                });\n            }\n            else {\n                this.processPointDrop(dropParams);\n                this.tree.onNodeDrop.emit({\n                    originalEvent: event,\n                    dragNode: dragNode,\n                    dropNode: this.node,\n                    index: this.index\n                });\n            }\n        }\n\n        this.draghoverPrev = false;\n        this.draghoverNext = false;\n    }\n\n    processPointDrop(event) {\n        let newNodeList = event.dropNode.parent ? event.dropNode.parent.children : this.tree.value;\n        event.dragNodeSubNodes.splice(event.dragNodeIndex, 1);\n        let dropIndex = this.index;\n\n        if (event.position < 0) {\n            dropIndex = (event.dragNodeSubNodes === newNodeList) ? ((event.dragNodeIndex > event.index) ? event.index : event.index - 1) : event.index;\n            newNodeList.splice(dropIndex, 0, event.dragNode);\n        }\n        else {\n            dropIndex = newNodeList.length;\n            newNodeList.push(event.dragNode);\n        }\n\n        this.tree.dragDropService.stopDrag({\n            node: event.dragNode,\n            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n            index: event.dragNodeIndex\n        });\n    }\n\n    createDropPointEventMetadata(position) {\n        return {\n            dragNode: this.tree.dragNode,\n            dragNodeIndex:  this.tree.dragNodeIndex,\n            dragNodeSubNodes: this.tree.dragNodeSubNodes,\n            dropNode: this.node,\n            index: this.index,\n            position: position\n        };\n    }\n\n    onDropPointDragOver(event) {\n        event.dataTransfer.dropEffect = 'move';\n        event.preventDefault();\n    }\n\n    onDropPointDragEnter(event: Event, position: number) {\n        if (this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n            if (position < 0)\n                this.draghoverPrev = true;\n            else\n                this.draghoverNext = true;\n        }\n    }\n\n    onDropPointDragLeave(event: Event) {\n        this.draghoverPrev = false;\n        this.draghoverNext = false;\n    }\n\n    onDragStart(event) {\n        if (this.tree.draggableNodes && this.node.draggable !== false) {\n            event.dataTransfer.setData(\"text\", \"data\");\n\n            this.tree.dragDropService.startDrag({\n                tree: this,\n                node: this.node,\n                subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n                index: this.index,\n                scope: this.tree.draggableScope\n            });\n        }\n        else {\n            event.preventDefault();\n        }\n    }\n\n    onDragStop(event) {\n        this.tree.dragDropService.stopDrag({\n            node: this.node,\n            subNodes: this.node.parent ? this.node.parent.children : this.tree.value,\n            index: this.index\n        });\n    }\n\n    onDropNodeDragOver(event) {\n        event.dataTransfer.dropEffect = 'move';\n        if (this.tree.droppableNodes) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    onDropNode(event) {\n        if (this.tree.droppableNodes && this.node.droppable !== false) {\n            let dragNode = this.tree.dragNode;\n\n            if (this.tree.allowDrop(dragNode, this.node, this.tree.dragNodeScope)) {\n                let dropParams = {...this.createDropNodeEventMetadata()};\n\n                if (this.tree.validateDrop) {\n                    this.tree.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: this.node,\n                        index: this.index,\n                        accept: () => {\n                            this.processNodeDrop(dropParams);\n                        }\n                    });\n                }\n                else {\n                    this.processNodeDrop(dropParams);\n                    this.tree.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: this.node,\n                        index: this.index\n                    });\n                }\n            }\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.draghoverNode = false;\n    }\n\n    createDropNodeEventMetadata() {\n        return {\n            dragNode: this.tree.dragNode,\n            dragNodeIndex:  this.tree.dragNodeIndex,\n            dragNodeSubNodes: this.tree.dragNodeSubNodes,\n            dropNode: this.node\n        };\n    }\n\n    processNodeDrop(event) {\n        let dragNodeIndex = event.dragNodeIndex;\n        event.dragNodeSubNodes.splice(dragNodeIndex, 1);\n\n        if (event.dropNode.children)\n            event.dropNode.children.push(event.dragNode);\n        else\n            event.dropNode.children = [event.dragNode];\n\n        this.tree.dragDropService.stopDrag({\n            node: event.dragNode,\n            subNodes: event.dropNode.parent ? event.dropNode.parent.children : this.tree.value,\n            index: dragNodeIndex\n        });\n    }\n\n    onDropNodeDragEnter(event) {\n        if (this.tree.droppableNodes && this.node.droppable !== false && this.tree.allowDrop(this.tree.dragNode, this.node, this.tree.dragNodeScope)) {\n            this.draghoverNode = true;\n        }\n    }\n\n    onDropNodeDragLeave(event) {\n        if (this.tree.droppableNodes) {\n            let rect = event.currentTarget.getBoundingClientRect();\n            if (event.x > rect.left + rect.width || event.x < rect.left || event.y >= Math.floor(rect.top + rect.height) || event.y < rect.top) {\n               this.draghoverNode = false;\n            }\n        }\n    }\n\n    onKeyDown(event: KeyboardEvent) {\n        const nodeElement = (<HTMLDivElement> event.target).parentElement.parentElement;\n\n        if (nodeElement.nodeName !== 'P-TREENODE' || (this.tree.contextMenu && this.tree.contextMenu.containerViewChild.nativeElement.style.display === 'block')) {\n            return;\n        }\n\n        switch (event.which) {\n            //down arrow\n            case 40:\n                const listElement = (this.tree.droppableNodes) ? nodeElement.children[1].children[1] : nodeElement.children[0].children[1];\n                if (listElement && listElement.children.length > 0) {\n                    this.focusNode(listElement.children[0]);\n                }\n                else {\n                    const nextNodeElement = nodeElement.nextElementSibling;\n                    if (nextNodeElement) {\n                        this.focusNode(nextNodeElement);\n                    }\n                    else {\n                        let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n                        if (nextSiblingAncestor) {\n                            this.focusNode(nextSiblingAncestor);\n                        }\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //up arrow\n            case 38:\n                if (nodeElement.previousElementSibling) {\n                    this.focusNode(this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n                }\n                else {\n                    let parentNodeElement = this.getParentNodeElement(nodeElement);\n                    if (parentNodeElement) {\n                        this.focusNode(parentNodeElement);\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //right arrow\n            case 39:\n                if (!this.node.expanded && !this.tree.isNodeLeaf(this.node)) {\n                    this.expand(event);\n                }\n\n                event.preventDefault();\n            break;\n\n            //left arrow\n            case 37:\n                if (this.node.expanded) {\n                    this.collapse(event);\n                }\n                else {\n                    let parentNodeElement = this.getParentNodeElement(nodeElement);\n                    if (parentNodeElement) {\n                        this.focusNode(parentNodeElement);\n                    }\n                }\n\n                event.preventDefault();\n            break;\n\n            //enter\n            case 13:\n                this.tree.onNodeClick(event, this.node);\n                event.preventDefault();\n            break;\n\n            default:\n                //no op\n            break;\n        }\n    }\n\n    findNextSiblingOfAncestor(nodeElement) {\n        let parentNodeElement = this.getParentNodeElement(nodeElement);\n        if (parentNodeElement) {\n            if (parentNodeElement.nextElementSibling)\n                return parentNodeElement.nextElementSibling;\n            else\n                return this.findNextSiblingOfAncestor(parentNodeElement);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findLastVisibleDescendant(nodeElement) {\n        const listElement = <HTMLElement> Array.from(nodeElement.children).find(el => DomHandler.hasClass(el, 'p-treenode'));\n        const childrenListElement = listElement.children[1];\n        if (childrenListElement && childrenListElement.children.length > 0) {\n            const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n            return this.findLastVisibleDescendant(lastChildElement);\n        }\n        else {\n            return nodeElement;\n        }\n    }\n\n    getParentNodeElement(nodeElement) {\n        const parentNodeElement = nodeElement.parentElement.parentElement.parentElement;\n\n        return parentNodeElement.tagName === 'P-TREENODE' ? parentNodeElement : null;\n    }\n\n    focusNode(element) {\n        if (this.tree.droppableNodes)\n            element.children[1].children[0].focus();\n        else\n            element.children[0].children[0].focus();\n    }\n}\n\n@Component({\n    selector: 'p-tree',\n    template: `\n        <div [ngClass]=\"{'p-tree p-component':true,'p-tree-selectable':selectionMode,\n                'p-treenode-dragover':dragHover,'p-tree-loading': loading, 'p-tree-flex-scrollable': scrollHeight === 'flex'}\"\n            [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"!horizontal\"\n            (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter()\" (dragleave)=\"onDragLeave($event)\">\n            <div class=\"p-tree-loading-overlay p-component-overlay\" *ngIf=\"loading\">\n                <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            <div *ngIf=\"filter\" class=\"p-tree-filter-container\">\n                <input #filter type=\"text\" autocomplete=\"off\" class=\"p-tree-filter p-inputtext p-component\" [attr.placeholder]=\"filterPlaceholder\"\n                    (keydown.enter)=\"$event.preventDefault()\" (input)=\"_filter($event.target.value)\">\n                    <span class=\"p-tree-filter-icon pi pi-search\"></span>\n            </div>\n            <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                <div class=\"p-tree-wrapper\" [style.max-height]=\"scrollHeight\">\n                    <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n                        <p-treeNode *ngFor=\"let node of getRootNode(); let firstChild=first;let lastChild=last; let index=index; trackBy: trackBy\" [node]=\"node\"\n                                    [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [level]=\"0\"></p-treeNode>\n                    </ul>\n                </div>\n            </ng-container>\n            <ng-template #virtualScrollList>\n                <cdk-virtual-scroll-viewport class=\"p-tree-wrapper\" [style.height]=\"scrollHeight\" [itemSize]=\"virtualNodeHeight\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\">\n                    <ul class=\"p-tree-container\" *ngIf=\"getRootNode()\" role=\"tree\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n                        <p-treeNode *cdkVirtualFor=\"let rowNode of serializedValue; let firstChild=first; let lastChild=last; let index=index; trackBy: trackBy; templateCacheSize: 0\"  [level]=\"rowNode.level\"\n                                    [rowNode]=\"rowNode\" [node]=\"rowNode.node\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"index\" [style.height.px]=\"virtualNodeHeight\" [indentation]=\"indentation\"></p-treeNode>\n                    </ul>\n                </cdk-virtual-scroll-viewport>\n            </ng-template>\n            <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n                <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                    {{emptyMessageLabel}}\n                </ng-container>\n                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n        </div>\n        <div [ngClass]=\"{'p-tree p-tree-horizontal p-component':true,'p-tree-selectable':selectionMode}\"  [ngStyle]=\"style\" [class]=\"styleClass\" *ngIf=\"horizontal\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            <div class=\"p-tree-loading-mask p-component-overlay\" *ngIf=\"loading\">\n                <i [class]=\"'p-tree-loading-icon pi-spin ' + loadingIcon\"></i>\n            </div>\n            <table *ngIf=\"value&&value[0]\">\n                <p-treeNode [node]=\"value[0]\" [root]=\"true\"></p-treeNode>\n            </table>\n            <div class=\"p-tree-empty-message\" *ngIf=\"!loading && (getRootNode() == null || getRootNode().length === 0)\">\n                <ng-container *ngIf=\"!emptyMessageTemplate; else emptyFilter\">\n                    {{emptyMessageLabel}}\n                </ng-container>\n                <ng-container #emptyFilter *ngTemplateOutlet=\"emptyMessageTemplate\"></ng-container>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./tree.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class Tree implements OnInit,AfterContentInit,OnChanges,OnDestroy,BlockableUI {\n\n    @Input() value: TreeNode[];\n\n    @Input() selectionMode: string;\n\n    @Input() selection: any;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeDrop: EventEmitter<any> = new EventEmitter();\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() contextMenu: any;\n\n    @Input() layout: string = 'vertical';\n\n    @Input() draggableScope: any;\n\n    @Input() droppableScope: any;\n\n    @Input() draggableNodes: boolean;\n\n    @Input() droppableNodes: boolean;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() propagateSelectionUp: boolean = true;\n\n    @Input() propagateSelectionDown: boolean = true;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() emptyMessage: string = '';\n\n    @Input() ariaLabel: string;\n\n    @Input() togglerAriaLabel: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() validateDrop: boolean;\n\n    @Input() filter: boolean;\n\n    @Input() filterBy: string = 'label';\n\n    @Input() filterMode: string = 'lenient';\n\n    @Input() filterPlaceholder: string;\n\n    @Input() filterLocale: string;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualNodeHeight: string;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() indentation: number = 1.5;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    @ViewChild('filter') filterViewChild: ElementRef;\n\n    serializedValue: any[];\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    public templateMap: any;\n\n    public nodeTouched: boolean;\n\n    public dragNodeTree: Tree;\n\n    public dragNode: TreeNode;\n\n    public dragNodeSubNodes: TreeNode[];\n\n    public dragNodeIndex: number;\n\n    public dragNodeScope: any;\n\n    public dragHover: boolean;\n\n    public dragStartSubscription: Subscription;\n\n    public dragStopSubscription: Subscription;\n\n    public filteredNodes: TreeNode[];\n\n    constructor(public el: ElementRef, @Optional() public dragDropService: TreeDragDropService, public config: PrimeNGConfig) {}\n\n    ngOnInit() {\n        if (this.droppableNodes) {\n            this.dragStartSubscription = this.dragDropService.dragStart$.subscribe(\n              event => {\n                this.dragNodeTree = event.tree;\n                this.dragNode = event.node;\n                this.dragNodeSubNodes = event.subNodes;\n                this.dragNodeIndex = event.index;\n                this.dragNodeScope = event.scope;\n            });\n\n            this.dragStopSubscription = this.dragDropService.dragStop$.subscribe(\n              event => {\n                this.dragNodeTree = null;\n                this.dragNode = null;\n                this.dragNodeSubNodes = null;\n                this.dragNodeIndex = null;\n                this.dragNodeScope = null;\n                this.dragHover = false;\n            });\n        }\n    }\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            this.updateSerializedValue();\n        }\n\n        if (simpleChange.scrollHeight && this.virtualScrollBody) {\n            this.virtualScrollBody.ngOnInit();\n        }\n    }\n\n    get horizontal(): boolean {\n        return this.layout == 'horizontal';\n    }\n\n    get emptyMessageLabel(): string {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    ngAfterContentInit() {\n        if (this.templates.length) {\n            this.templateMap = {};\n        }\n\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.templateMap[item.name] = item.template;\n                break;\n            }\n        });\n    }\n\n    updateSerializedValue() {\n        this.serializedValue = [];\n        this.serializeNodes(null, this.getRootNode(), 0, true);\n    }\n\n    serializeNodes(parent, nodes, level, visible) {\n        if (nodes && nodes.length) {\n            for(let node of nodes) {\n                node.parent = parent;\n                const rowNode = {\n                    node: node,\n                    parent: parent,\n                    level: level,\n                    visible: visible && (parent ? parent.expanded : true)\n                };\n                this.serializedValue.push(rowNode);\n\n                if (rowNode.visible && node.expanded) {\n                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n                }\n            }\n        }\n    }\n\n    onNodeClick(event, node: TreeNode) {\n        let eventTarget = (<Element> event.target);\n\n        if (DomHandler.hasClass(eventTarget, 'p-tree-toggler') || DomHandler.hasClass(eventTarget, 'p-tree-toggler-icon')) {\n            return;\n        }\n        else if (this.selectionMode) {\n            if (node.selectable === false) {\n                return;\n            }\n\n            if (this.hasFilteredNodes()) {\n                node = this.getNodeWithKey(node.key, this.value);\n\n                if (!node) {\n                    return;\n                }\n            }\n\n            let index = this.findIndexInSelection(node);\n            let selected = (index >= 0);\n\n            if (this.isCheckboxSelectionMode()) {\n                if (selected) {\n                    if (this.propagateSelectionDown)\n                        this.propagateDown(node, false);\n                    else\n                        this.selection = this.selection.filter((val,i) => i!=index);\n\n                    if (this.propagateSelectionUp && node.parent) {\n                        this.propagateUp(node.parent, false);\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                    this.onNodeUnselect.emit({originalEvent: event, node: node});\n                }\n                else {\n                    if (this.propagateSelectionDown)\n                        this.propagateDown(node, true);\n                    else\n                        this.selection = [...this.selection||[],node];\n\n                    if (this.propagateSelectionUp && node.parent) {\n                        this.propagateUp(node.parent, true);\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                    this.onNodeSelect.emit({originalEvent: event, node: node});\n                }\n            }\n            else {\n                let metaSelection = this.nodeTouched ? false : this.metaKeySelection;\n\n                if (metaSelection) {\n                    let metaKey = (event.metaKey||event.ctrlKey);\n\n                    if (selected && metaKey) {\n                        if (this.isSingleSelectionMode()) {\n                            this.selectionChange.emit(null);\n                        }\n                        else {\n                            this.selection = this.selection.filter((val,i) => i!=index);\n                            this.selectionChange.emit(this.selection);\n                        }\n\n                        this.onNodeUnselect.emit({originalEvent: event, node: node});\n                    }\n                    else {\n                        if (this.isSingleSelectionMode()) {\n                            this.selectionChange.emit(node);\n                        }\n                        else if (this.isMultipleSelectionMode()) {\n                            this.selection = (!metaKey) ? [] : this.selection||[];\n                            this.selection = [...this.selection,node];\n                            this.selectionChange.emit(this.selection);\n                        }\n\n                        this.onNodeSelect.emit({originalEvent: event, node: node});\n                    }\n                }\n                else {\n                    if (this.isSingleSelectionMode()) {\n                        if (selected) {\n                            this.selection = null;\n                            this.onNodeUnselect.emit({originalEvent: event, node: node});\n                        }\n                        else {\n                            this.selection = node;\n                            this.onNodeSelect.emit({originalEvent: event, node: node});\n                        }\n                    }\n                    else {\n                        if (selected) {\n                            this.selection = this.selection.filter((val,i) => i!=index);\n                            this.onNodeUnselect.emit({originalEvent: event, node: node});\n                        }\n                        else {\n                            this.selection = [...this.selection||[],node];\n                            this.onNodeSelect.emit({originalEvent: event, node: node});\n                        }\n                    }\n\n                    this.selectionChange.emit(this.selection);\n                }\n            }\n        }\n\n        this.nodeTouched = false;\n    }\n\n    onNodeTouchEnd() {\n        this.nodeTouched = true;\n    }\n\n    onNodeRightClick(event: MouseEvent, node: TreeNode) {\n        if (this.contextMenu) {\n            let eventTarget = (<Element> event.target);\n\n            if (eventTarget.className && eventTarget.className.indexOf('p-tree-toggler') === 0) {\n                return;\n            }\n            else {\n                let index = this.findIndexInSelection(node);\n                let selected = (index >= 0);\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode())\n                        this.selectionChange.emit(node);\n                    else\n                        this.selectionChange.emit([node]);\n                }\n\n                this.contextMenu.show(event);\n                this.onNodeContextMenuSelect.emit({originalEvent: event, node: node});\n            }\n        }\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.selectionMode && this.selection) {\n            if (this.isSingleSelectionMode()) {\n                let areNodesEqual = (this.selection.key && this.selection.key === node.key) || this.selection == node;\n                index = areNodesEqual ? 0 : - 1;\n            }\n            else {\n                for(let i = 0; i  < this.selection.length; i++) {\n                    let selectedNode = this.selection[i];\n                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n                    if (areNodesEqual) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    syncNodeOption(node, parentNodes, option, value?: any) {\n        // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n        const _node = this.hasFilteredNodes() ? this.getNodeWithKey(node.key, parentNodes) : null;\n        if (_node) {\n            _node[option] = value||node[option];\n        }\n    }\n\n    hasFilteredNodes() {\n        return this.filter && this.filteredNodes && this.filteredNodes.length;\n    }\n\n    getNodeWithKey(key: string, nodes: TreeNode[]) {\n        for (let node of nodes) {\n            if (node.key === key) {\n                return node;\n            }\n\n            if (node.children) {\n                let matchedNode = this.getNodeWithKey(key, node.children);\n                if (matchedNode) {\n                    return matchedNode;\n                }\n            }\n        }\n    }\n\n    propagateUp(node: TreeNode, select: boolean) {\n        if (node.children && node.children.length) {\n            let selectedCount: number = 0;\n            let childPartialSelected: boolean = false;\n            for(let child of node.children) {\n                if (this.isSelected(child)) {\n                    selectedCount++;\n                }\n                else if (child.partialSelected) {\n                    childPartialSelected = true;\n                }\n            }\n\n            if (select && selectedCount == node.children.length) {\n                this.selection = [...this.selection||[],node];\n                node.partialSelected = false;\n            }\n            else {\n                if (!select) {\n                    let index = this.findIndexInSelection(node);\n                    if (index >= 0) {\n                        this.selection = this.selection.filter((val,i) => i!=index);\n                    }\n                }\n\n                if (childPartialSelected || selectedCount > 0 && selectedCount != node.children.length)\n                    node.partialSelected = true;\n                else\n                    node.partialSelected = false;\n            }\n\n            this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n        }\n\n        let parent = node.parent;\n        if (parent) {\n            this.propagateUp(parent, select);\n        }\n    }\n\n    propagateDown(node: TreeNode, select: boolean) {\n        let index = this.findIndexInSelection(node);\n\n        if (select && index == -1) {\n            this.selection = [...this.selection||[],node];\n        }\n        else if (!select && index > -1) {\n            this.selection = this.selection.filter((val,i) => i!=index);\n        }\n\n        node.partialSelected = false;\n\n        this.syncNodeOption(node, this.filteredNodes, 'partialSelected');\n\n        if (node.children && node.children.length) {\n            for(let child of node.children) {\n                this.propagateDown(child, select);\n            }\n        }\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'multiple';\n    }\n\n    isCheckboxSelectionMode() {\n        return this.selectionMode && this.selectionMode == 'checkbox';\n    }\n\n    isNodeLeaf(node) {\n        return node.leaf == false ? false : !(node.children && node.children.length);\n    }\n\n    getRootNode() {\n        return this.filteredNodes ? this.filteredNodes : this.value;\n    }\n\n    getTemplateForNode(node: TreeNode): TemplateRef<any> {\n        if (this.templateMap)\n            return node.type ? this.templateMap[node.type] : this.templateMap['default'];\n        else\n            return null;\n    }\n\n    onDragOver(event) {\n        if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n            event.dataTransfer.dropEffect = 'move';\n            event.preventDefault();\n        }\n    }\n\n    onDrop(event) {\n        if (this.droppableNodes && (!this.value || this.value.length === 0)) {\n            event.preventDefault();\n            let dragNode = this.dragNode;\n\n            if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n                let dragNodeIndex = this.dragNodeIndex;\n                this.value = this.value||[];\n\n                if (this.validateDrop) {\n                    this.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: null,\n                        index: dragNodeIndex,\n                        accept: () => {\n                            this.processTreeDrop(dragNode, dragNodeIndex);\n                        }\n                    });\n                }\n                else {\n                    this.onNodeDrop.emit({\n                        originalEvent: event,\n                        dragNode: dragNode,\n                        dropNode: null,\n                        index: dragNodeIndex\n                    });\n\n                    this.processTreeDrop(dragNode, dragNodeIndex);\n                }\n            }\n        }\n    }\n\n    processTreeDrop(dragNode, dragNodeIndex) {\n        this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n        this.value.push(dragNode);\n        this.dragDropService.stopDrag({\n            node: dragNode\n        });\n    }\n\n    onDragEnter() {\n        if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n            this.dragHover = true;\n        }\n    }\n\n    onDragLeave(event) {\n        if (this.droppableNodes) {\n            let rect = event.currentTarget.getBoundingClientRect();\n            if (event.x > rect.left + rect.width || event.x < rect.left || event.y > rect.top + rect.height || event.y < rect.top) {\n               this.dragHover = false;\n            }\n        }\n    }\n\n    allowDrop(dragNode: TreeNode, dropNode: TreeNode, dragNodeScope: any): boolean {\n        if (!dragNode) {\n            //prevent random html elements to be dragged\n            return false;\n        }\n        else if (this.isValidDragScope(dragNodeScope)) {\n            let allow: boolean = true;\n            if (dropNode) {\n                if (dragNode === dropNode) {\n                    allow = false;\n                }\n                else {\n                    let parent = dropNode.parent;\n                    while(parent != null) {\n                        if (parent === dragNode) {\n                            allow = false;\n                            break;\n                        }\n                        parent = parent.parent;\n                    }\n                }\n            }\n\n            return allow;\n        }\n        else {\n            return false;\n        }\n    }\n\n    isValidDragScope(dragScope: any): boolean {\n        let dropScope = this.droppableScope;\n\n        if (dropScope) {\n            if (typeof dropScope === 'string') {\n                if (typeof dragScope === 'string')\n                    return dropScope === dragScope;\n                else if (dragScope instanceof Array)\n                    return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n            }\n            else if (dropScope instanceof Array) {\n                if (typeof dragScope === 'string') {\n                    return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n                }\n                else if (dragScope instanceof Array) {\n                    for(let s of dropScope) {\n                        for(let ds of dragScope) {\n                            if (s === ds) {\n                                return true;\n                            }\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n        else {\n            return true;\n        }\n    }\n\n    _filter(value) {\n        let filterValue = value;\n        if (filterValue === '') {\n            this.filteredNodes = null;\n        }\n        else {\n            this.filteredNodes = [];\n            const searchFields: string[] = this.filterBy.split(',');\n            const filterText = ObjectUtils.removeAccents(filterValue).toLocaleLowerCase(this.filterLocale);\n            const isStrictMode = this.filterMode === 'strict';\n            for(let node of this.value) {\n                let copyNode = {...node};\n                let paramsWithoutNode = {searchFields, filterText, isStrictMode};\n                if ((isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n                    (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n                    this.filteredNodes.push(copyNode);\n                }\n            }\n        }\n\n        this.updateSerializedValue();\n        this.onFilter.emit({\n            filter: filterValue,\n            filteredValue: this.filteredNodes\n        });\n    }\n\n    resetFilter() {\n        this.filteredNodes = null;\n\n        if (this.filterViewChild && this.filterViewChild.nativeElement) {\n            this.filterViewChild.nativeElement.value = '';\n        }\n    }\n\n    findFilteredNodes(node, paramsWithoutNode) {\n        if (node) {\n            let matched = false;\n            if (node.children) {\n                let childNodes = [...node.children];\n                node.children = [];\n                for (let childNode of childNodes) {\n                    let copyChildNode = {...childNode};\n                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n                        matched = true;\n                        node.children.push(copyChildNode);\n                    }\n                }\n            }\n\n            if (matched) {\n                node.expanded = true;\n                return true;\n            }\n        }\n    }\n\n    isFilterMatched(node, {searchFields, filterText, isStrictMode}) {\n        let matched = false;\n        for(let field of searchFields) {\n            let fieldValue = ObjectUtils.removeAccents(String(ObjectUtils.resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale);\n            if (fieldValue.indexOf(filterText) > -1) {\n                matched = true;\n            }\n        }\n\n        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n            matched = this.findFilteredNodes(node, {searchFields, filterText, isStrictMode}) || matched;\n        }\n\n        return matched;\n    }\n\n    getBlockableElement(): HTMLElement {\n      return this.el.nativeElement.children[0];\n    }\n\n    ngOnDestroy() {\n        if (this.dragStartSubscription) {\n            this.dragStartSubscription.unsubscribe();\n        }\n\n        if (this.dragStopSubscription) {\n            this.dragStopSubscription.unsubscribe();\n        }\n    }\n}\n@NgModule({\n    imports: [CommonModule,ScrollingModule,RippleModule],\n    exports: [Tree,SharedModule,ScrollingModule],\n    declarations: [Tree,UITreeNode]\n})\nexport class TreeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,604 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { RippleModule } from 'primeng/ripple';
+import * as i1 from 'primeng/api';
+import { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';
+import { trigger, transition, style, animate } from '@angular/animations';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+import { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';
+import * as i2 from 'primeng/tree';
+import { TreeModule } from 'primeng/tree';
+import { ZIndexUtils } from 'primeng/utils';
+
+const TREESELECT_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TreeSelect),
+    multi: true
+};
+class TreeSelect {
+    constructor(config, cd, el, overlayService) {
+        this.config = config;
+        this.cd = cd;
+        this.el = el;
+        this.overlayService = overlayService;
+        this.type = "button";
+        this.scrollHeight = "400px";
+        this.metaKeySelection = true;
+        this.display = "comma";
+        this.selectionMode = "single";
+        this.propagateSelectionDown = true;
+        this.propagateSelectionUp = true;
+        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';
+        this.hideTransitionOptions = '.1s linear';
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onShow = new EventEmitter();
+        this.onHide = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.expandedNodes = [];
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    get options() {
+        return this._options;
+    }
+    ;
+    set options(options) {
+        this._options = options;
+        this.updateTreeState();
+    }
+    ngOnInit() {
+        this.updateTreeState();
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'value':
+                    this.valueTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'empty':
+                    this.emptyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.valueTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onOverlayAnimationStart(event) {
+        switch (event.toState) {
+            case 'visible':
+                this.overlayEl = event.element;
+                this.onOverlayEnter();
+                break;
+        }
+    }
+    onOverlayAnimationDone(event) {
+        switch (event.toState) {
+            case 'void':
+                this.onOverlayLeave();
+                break;
+        }
+    }
+    onSelectionChange(event) {
+        this.value = event;
+        this.onModelChange(this.value);
+        this.cd.markForCheck();
+    }
+    onClick(event) {
+        if (!this.disabled && (!this.overlayEl || !this.overlayEl.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {
+            if (this.overlayVisible) {
+                this.hide();
+            }
+            else
+                this.show();
+            this.focusInput.nativeElement.focus();
+        }
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down
+            case 40:
+                if (!this.overlayVisible && event.altKey) {
+                    this.show();
+                    event.preventDefault();
+                }
+                else if (this.overlayVisible && this.overlayEl) {
+                    let focusableElements = DomHandler.getFocusableElements(this.overlayEl);
+                    if (focusableElements && focusableElements.length > 0) {
+                        focusableElements[0].focus();
+                    }
+                    event.preventDefault();
+                }
+                break;
+            //space
+            case 32:
+                if (!this.overlayVisible) {
+                    this.show();
+                    event.preventDefault();
+                }
+                break;
+            //enter and escape
+            case 13:
+            case 27:
+                if (this.overlayVisible) {
+                    this.hide();
+                    event.preventDefault();
+                }
+                break;
+            //tab
+            case 9:
+                this.hide();
+                break;
+            default:
+                break;
+        }
+    }
+    show() {
+        this.overlayVisible = true;
+    }
+    hide() {
+        this.overlayVisible = false;
+        this.cd.markForCheck();
+    }
+    onOverlayClick(event) {
+        this.overlayService.add({
+            originalEvent: event,
+            target: this.el.nativeElement
+        });
+    }
+    updateTreeState() {
+        if (this.value) {
+            let selectedNodes = this.selectionMode === "single" ? [this.value] : [...this.value];
+            this.resetExpandedNodes();
+            if (selectedNodes && this.options) {
+                this.updateTreeBranchState(null, null, selectedNodes);
+            }
+        }
+    }
+    updateTreeBranchState(node, path, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                this.expandPath(path);
+                selectedNodes.splice(selectedNodes.indexOf(node), 1);
+            }
+            if (selectedNodes.length > 0 && node.children) {
+                for (let childNode of node.children) {
+                    path.push(node);
+                    this.updateTreeBranchState(childNode, path, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.updateTreeBranchState(childNode, [], selectedNodes);
+            }
+        }
+    }
+    expandPath(expandedNodes) {
+        for (let node of expandedNodes) {
+            node.expanded = true;
+        }
+        this.expandedNodes = [...expandedNodes];
+    }
+    nodeExpand(event) {
+        this.onNodeExpand.emit(event);
+        this.expandedNodes.push(event.node);
+    }
+    nodeCollapse(event) {
+        this.onNodeCollapse.emit(event);
+        this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);
+    }
+    resetExpandedNodes() {
+        for (let node of this.expandedNodes) {
+            node.expanded = false;
+        }
+        this.expandedNodes = [];
+    }
+    findSelectedNodes(node, keys, selectedNodes) {
+        if (node) {
+            if (this.isSelected(node)) {
+                selectedNodes.push(node);
+                delete keys[node.key];
+            }
+            if (Object.keys(keys).length && node.children) {
+                for (let childNode of node.children) {
+                    this.findSelectedNodes(childNode, keys, selectedNodes);
+                }
+            }
+        }
+        else {
+            for (let childNode of this.options) {
+                this.findSelectedNodes(childNode, keys, selectedNodes);
+            }
+        }
+    }
+    isSelected(node) {
+        return this.findIndexInSelection(node) != -1;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.value) {
+            if (this.selectionMode === "single") {
+                let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;
+                index = areNodesEqual ? 0 : -1;
+            }
+            else {
+                for (let i = 0; i < this.value.length; i++) {
+                    let selectedNode = this.value[i];
+                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;
+                    if (areNodesEqual) {
+                        index = i;
+                        break;
+                    }
+                }
+            }
+        }
+        return index;
+    }
+    onSelect(node) {
+        this.onNodeSelect.emit(node);
+        if (this.selectionMode === 'single') {
+            this.hide();
+        }
+    }
+    onUnselect(node) {
+        this.onNodeUnselect.emit(node);
+    }
+    onOverlayEnter() {
+        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);
+        this.appendContainer();
+        this.alignOverlay();
+        this.bindOutsideClickListener();
+        this.bindScrollListener();
+        this.bindResizeListener();
+        this.onShow.emit();
+    }
+    onOverlayLeave() {
+        this.unbindOutsideClickListener();
+        this.unbindScrollListener();
+        this.unbindResizeListener();
+        ZIndexUtils.clear(this.overlayEl);
+        this.overlayEl = null;
+        this.onHide.emit();
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.updateTreeState();
+        this.cd.markForCheck();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    setDisabledState(val) {
+        this.disabled = val;
+        this.cd.markForCheck();
+    }
+    appendContainer() {
+        if (this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.appendChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).appendChild(this.overlayEl);
+        }
+    }
+    restoreAppend() {
+        if (this.overlayEl && this.appendTo) {
+            if (this.appendTo === 'body')
+                document.body.removeChild(this.overlayEl);
+            else
+                document.getElementById(this.appendTo).removeChild(this.overlayEl);
+        }
+    }
+    alignOverlay() {
+        if (this.appendTo) {
+            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);
+            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';
+        }
+        else {
+            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);
+        }
+    }
+    bindOutsideClickListener() {
+        if (!this.outsideClickListener) {
+            this.outsideClickListener = (event) => {
+                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {
+                    this.hide();
+                }
+            };
+            document.addEventListener('click', this.outsideClickListener);
+        }
+    }
+    unbindOutsideClickListener() {
+        if (this.outsideClickListener) {
+            document.removeEventListener('click', this.outsideClickListener);
+            this.outsideClickListener = null;
+        }
+    }
+    bindScrollListener() {
+        if (!this.scrollHandler) {
+            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            });
+        }
+        this.scrollHandler.bindScrollListener();
+    }
+    unbindScrollListener() {
+        if (this.scrollHandler) {
+            this.scrollHandler.unbindScrollListener();
+        }
+    }
+    bindResizeListener() {
+        if (!this.resizeListener) {
+            this.resizeListener = () => {
+                if (this.overlayVisible) {
+                    this.hide();
+                }
+            };
+            window.addEventListener('resize', this.resizeListener);
+        }
+    }
+    unbindResizeListener() {
+        if (this.resizeListener) {
+            window.removeEventListener('resize', this.resizeListener);
+            this.resizeListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.restoreAppend();
+        this.unbindOutsideClickListener();
+        this.unbindResizeListener();
+        if (this.scrollHandler) {
+            this.scrollHandler.destroy();
+            this.scrollHandler = null;
+        }
+        if (this.overlayEl) {
+            ZIndexUtils.clear(this.overlayEl);
+            this.overlayEl = null;
+        }
+    }
+    containerClass() {
+        return {
+            'p-treeselect p-component p-inputwrapper': true,
+            'p-treeselect-chip': this.display === 'chip',
+            'p-disabled': this.disabled,
+            'p-focus': this.focused
+        };
+    }
+    labelClass() {
+        return {
+            'p-treeselect-label': true,
+            'p-placeholder': this.label === this.placeholder,
+            'p-treeselect-label-empty': !this.placeholder && this.emptyValue
+        };
+    }
+    get emptyMessageText() {
+        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);
+    }
+    get emptyValue() {
+        return !this.value || Object.keys(this.value).length === 0;
+    }
+    get emptyOptions() {
+        return !this.options || this.options.length === 0;
+    }
+    get label() {
+        let value = this.value || [];
+        return value.length ? value.map(node => node.label).join(', ') : (this.selectionMode === "single" && this.value) ? value.label : this.placeholder;
+    }
+}
+TreeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, deps: [{ token: i1.PrimeNGConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });
+TreeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeSelect, selector: "p-treeSelect", inputs: { type: "type", inputId: "inputId", scrollHeight: "scrollHeight", disabled: "disabled", metaKeySelection: "metaKeySelection", display: "display", selectionMode: "selectionMode", tabindex: "tabindex", ariaLabelledBy: "ariaLabelledBy", placeholder: "placeholder", panelClass: "panelClass", emptyMessage: "emptyMessage", appendTo: "appendTo", propagateSelectionDown: "propagateSelectionDown", propagateSelectionUp: "propagateSelectionUp", options: "options", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions" }, outputs: { onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onShow: "onShow", onHide: "onHide", onNodeUnselect: "onNodeUnselect", onNodeSelect: "onNodeSelect" }, host: { properties: { "class.p-inputwrapper-filled": "!emptyValue", "class.p-inputwrapper-focus": "focused || overlayVisible" }, classAttribute: "p-element p-inputwrapper" }, providers: [TREESELECT_VALUE_ACCESSOR], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["container"], descendants: true }, { propertyName: "focusInput", first: true, predicate: ["focusInput"], descendants: true }], ngImport: i0, template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, isInline: true, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"], components: [{ type: i2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "scrollHeight", "virtualScroll", "virtualNodeHeight", "minBufferPx", "maxBufferPx", "indentation", "trackBy"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onFilter"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
+        trigger('overlayAnimation', [
+            transition(':enter', [
+                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                animate('{{showTransitionParams}}')
+            ]),
+            transition(':leave', [
+                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+            ])
+        ])
+    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelect, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeSelect', template: `
+    <div #container [ngClass]="containerClass()" (click)="onClick($event)">
+        <div class="p-hidden-accessible">
+            <input #focusInput type="text" role="listbox" [attr.id]="inputId" readonly [disabled]="disabled" (focus)="onFocus()" (blur)="onBlur()" (keydown)="onKeyDown($event)" [attr.tabindex]="tabindex"
+            aria-haspopup="true" [attr.aria-expanded]="overlayVisible" [attr.aria-labelledby]="ariaLabelledBy"/>
+        </div>
+        <div class="p-treeselect-label-container">
+            <div [ngClass]="labelClass()">
+                <ng-container *ngIf="valueTemplate;else defaultValueTemplate">
+                        <ng-container *ngTemplateOutlet="valueTemplate; context: {$implicit: value, placeholder: placeholder}"></ng-container>
+                </ng-container>
+                <ng-template #defaultValueTemplate>
+                    <ng-container *ngIf="display === 'comma';else chipsValueTemplate">
+                        {{label || 'empty'}}
+                    </ng-container>
+                    <ng-template #chipsValueTemplate>
+                        <div *ngFor="let node of value" class="p-treeselect-token">
+                            <span class="p-treeselect-token-label">{{node.label}}</span>
+                        </div>
+                        <ng-container *ngIf="emptyValue">{{placeholder || 'empty'}}</ng-container>
+                    </ng-template>
+                </ng-template>
+            </div>
+        </div>
+        <div class="p-treeselect-trigger">
+            <span class="p-treeselect-trigger-icon pi pi-chevron-down"></span>
+        </div>
+
+        <div #overlayRef class="p-treeselect-panel p-component" *ngIf="overlayVisible" (click)="onOverlayClick($event)"
+            [@overlayAnimation]="{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}" (@overlayAnimation.start)="onOverlayAnimationStart($event)" (@overlayAnimation.done)="onOverlayAnimationDone($event)">
+            <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: value, options: options}"></ng-container>
+            <div class="p-treeselect-items-wrapper" [ngStyle]="{'max-height': scrollHeight}">
+                <p-tree [value]="options" [propagateSelectionDown]="propagateSelectionDown" [propagateSelectionUp]="propagateSelectionUp" [selectionMode]="selectionMode" (selectionChange)="onSelectionChange($event)" [selection]="value"
+                    [metaKeySelection]="metaKeySelection" (onNodeExpand)="nodeExpand($event)" (onNodeCollapse)="nodeCollapse($event)"
+                    (onNodeSelect)="onSelect($event)" (onNodeUnselect)="onUnselect($event)"></p-tree>
+                <div *ngIf="emptyOptions" class="p-treeselect-empty-message">
+                    <ng-container *ngIf="!emptyTemplate; else empty">
+                        {{emptyMessageText}}
+                    </ng-container>
+                    <ng-container *ngTemplateOutlet="emptyTemplate;"></ng-container>
+                </div>
+            </div>
+            <ng-container *ngTemplateOutlet="footerTemplate; context: {$implicit: value, options: options}"></ng-container>
+        </div>
+    </div>
+    `, animations: [
+                        trigger('overlayAnimation', [
+                            transition(':enter', [
+                                style({ opacity: 0, transform: 'scaleY(0.8)' }),
+                                animate('{{showTransitionParams}}')
+                            ]),
+                            transition(':leave', [
+                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))
+                            ])
+                        ])
+                    ], host: {
+                        'class': 'p-element p-inputwrapper',
+                        '[class.p-inputwrapper-filled]': '!emptyValue',
+                        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'
+                    }, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TREESELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, styles: [".p-treeselect{display:inline-flex;cursor:pointer;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treeselect-trigger{display:flex;align-items:center;justify-content:center;flex-shrink:0}.p-treeselect-label-container{overflow:hidden;flex:1 1 auto;cursor:pointer}.p-treeselect-label{display:block;white-space:nowrap;cursor:pointer;overflow:hidden;text-overflow:ellipsis}.p-treeselect-label-empty{overflow:hidden;visibility:hidden}.p-treeselect-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-treeselect .p-treeselect-panel{min-width:100%}.p-treeselect-panel{position:absolute;top:0;left:0}.p-treeselect-items-wrapper{overflow:auto}.p-fluid .p-treeselect{display:flex}\n"] }]
+        }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.OverlayService }]; }, propDecorators: { type: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], disabled: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], display: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], placeholder: [{
+                type: Input
+            }], panelClass: [{
+                type: Input
+            }], emptyMessage: [{
+                type: Input
+            }], appendTo: [{
+                type: Input
+            }], propagateSelectionDown: [{
+                type: Input
+            }], propagateSelectionUp: [{
+                type: Input
+            }], options: [{
+                type: Input
+            }], showTransitionOptions: [{
+                type: Input
+            }], hideTransitionOptions: [{
+                type: Input
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], containerEl: [{
+                type: ViewChild,
+                args: ['container']
+            }], focusInput: [{
+                type: ViewChild,
+                args: ['focusInput']
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onShow: [{
+                type: Output
+            }], onHide: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }] } });
+class TreeSelectModule {
+}
+TreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, declarations: [TreeSelect], imports: [CommonModule, RippleModule, SharedModule, TreeModule], exports: [TreeSelect, SharedModule, TreeModule] });
+TreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, imports: [[CommonModule, RippleModule, SharedModule, TreeModule], SharedModule, TreeModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeSelectModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, RippleModule, SharedModule, TreeModule],
+                    exports: [TreeSelect, SharedModule, TreeModule],
+                    declarations: [TreeSelect]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TREESELECT_VALUE_ACCESSOR, TreeSelect, TreeSelectModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-treeselect.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-treeselect.mjs","sources":["../../src/app/components/treeselect/treeselect.ts","../../src/app/components/treeselect/primeng-treeselect.ts"],"sourcesContent":["import {NgModule,Component,EventEmitter,Output,Input,ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, AfterContentInit, TemplateRef, QueryList, forwardRef, ChangeDetectorRef, ViewChild, ElementRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RippleModule} from 'primeng/ripple';\nimport {OverlayService, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeNode} from 'primeng/api';\nimport {animate, style, transition, trigger, AnimationEvent} from '@angular/animations';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ConnectedOverlayScrollHandler, DomHandler} from 'primeng/dom';\nimport {TreeModule} from 'primeng/tree';\nimport {ZIndexUtils} from 'primeng/utils'\n\n\nexport const TREESELECT_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TreeSelect),\n    multi: true\n};\n\n@Component({\n    selector: 'p-treeSelect',\n    template: `\n    <div #container [ngClass]=\"containerClass()\" (click)=\"onClick($event)\">\n        <div class=\"p-hidden-accessible\">\n            <input #focusInput type=\"text\" role=\"listbox\" [attr.id]=\"inputId\" readonly [disabled]=\"disabled\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" [attr.tabindex]=\"tabindex\"\n            aria-haspopup=\"true\" [attr.aria-expanded]=\"overlayVisible\" [attr.aria-labelledby]=\"ariaLabelledBy\"/>\n        </div>\n        <div class=\"p-treeselect-label-container\">\n            <div [ngClass]=\"labelClass()\">\n                <ng-container *ngIf=\"valueTemplate;else defaultValueTemplate\">\n                        <ng-container *ngTemplateOutlet=\"valueTemplate; context: {$implicit: value, placeholder: placeholder}\"></ng-container>\n                </ng-container>\n                <ng-template #defaultValueTemplate>\n                    <ng-container *ngIf=\"display === 'comma';else chipsValueTemplate\">\n                        {{label || 'empty'}}\n                    </ng-container>\n                    <ng-template #chipsValueTemplate>\n                        <div *ngFor=\"let node of value\" class=\"p-treeselect-token\">\n                            <span class=\"p-treeselect-token-label\">{{node.label}}</span>\n                        </div>\n                        <ng-container *ngIf=\"emptyValue\">{{placeholder || 'empty'}}</ng-container>\n                    </ng-template>\n                </ng-template>\n            </div>\n        </div>\n        <div class=\"p-treeselect-trigger\">\n            <span class=\"p-treeselect-trigger-icon pi pi-chevron-down\"></span>\n        </div>\n\n        <div #overlayRef class=\"p-treeselect-panel p-component\" *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\"\n            [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: value, options: options}\"></ng-container>\n            <div class=\"p-treeselect-items-wrapper\" [ngStyle]=\"{'max-height': scrollHeight}\">\n                <p-tree [value]=\"options\" [propagateSelectionDown]=\"propagateSelectionDown\" [propagateSelectionUp]=\"propagateSelectionUp\" [selectionMode]=\"selectionMode\" (selectionChange)=\"onSelectionChange($event)\" [selection]=\"value\"\n                    [metaKeySelection]=\"metaKeySelection\" (onNodeExpand)=\"nodeExpand($event)\" (onNodeCollapse)=\"nodeCollapse($event)\"\n                    (onNodeSelect)=\"onSelect($event)\" (onNodeUnselect)=\"onUnselect($event)\"></p-tree>\n                <div *ngIf=\"emptyOptions\" class=\"p-treeselect-empty-message\">\n                    <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                        {{emptyMessageText}}\n                    </ng-container>\n                    <ng-container *ngTemplateOutlet=\"emptyTemplate;\"></ng-container>\n                </div>\n            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate; context: {$implicit: value, options: options}\"></ng-container>\n        </div>\n    </div>\n    `,\n    styleUrls: ['./treeselect.css'],\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': '!emptyValue',\n        '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TREESELECT_VALUE_ACCESSOR],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TreeSelect implements AfterContentInit {\n\n    @Input() type: string = \"button\";\n\n    @Input() inputId: string;\n\n    @Input() scrollHeight: string = \"400px\";\n\n    @Input() disabled: boolean;\n\n    @Input() metaKeySelection: boolean = true;\n\n    @Input() display: string = \"comma\";\n\n    @Input() selectionMode: string = \"single\";\n\n    @Input() tabindex: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() placeholder: string;\n\n    @Input() panelClass: string;\n\n    @Input() emptyMessage: string;\n\n    @Input() appendTo: any;\n\n    @Input() propagateSelectionDown: boolean = true;\n\n    @Input() propagateSelectionUp: boolean = true;\n\n    @Input() get options(): any[] {\n        return this._options;\n    };\n    set options(options) {\n        this._options = options;\n        this.updateTreeState();\n    }\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild('container') containerEl: ElementRef;\n\n    @ViewChild('focusInput') focusInput: ElementRef;\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    valueTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    emptyTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    focused: boolean;\n\n    overlayVisible: boolean;\n\n    selfChange: boolean;\n\n    value;\n\n    expandedNodes: any[] = [];\n\n    _options: any[];\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    overlayEl: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    constructor(public config: PrimeNGConfig, public cd: ChangeDetectorRef, public el: ElementRef, public overlayService: OverlayService) { }\n\n    ngOnInit() {\n        this.updateTreeState();\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'value':\n                    this.valueTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.valueTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlayEl = event.element;\n                this.onOverlayEnter();\n            break;\n        }\n    }\n\n    onOverlayAnimationDone(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                this.onOverlayLeave();\n            break;\n        }\n    }\n\n    onSelectionChange(event) {\n        this.value = event;\n        this.onModelChange(this.value);\n        this.cd.markForCheck();\n    }\n\n    onClick(event) {\n        if (!this.disabled && (!this.overlayEl || !this.overlayEl.contains(event.target)) && !DomHandler.hasClass(event.target, 'p-treeselect-close')) {\n            if (this.overlayVisible){\n                this.hide();\n            }\n            else\n                this.show();\n\n            this.focusInput.nativeElement.focus();\n        }\n    }\n\n    onKeyDown(event) {\n        switch(event.which) {\n            //down\n            case 40:\n                if (!this.overlayVisible && event.altKey) {\n                    this.show();\n                    event.preventDefault();\n                }\n                else if (this.overlayVisible && this.overlayEl) {\n                    let focusableElements = DomHandler.getFocusableElements(this.overlayEl);\n\n                    if (focusableElements && focusableElements.length > 0) {\n                        focusableElements[0].focus();\n                    }\n\n                    event.preventDefault();\n                }\n            break;\n\n            //space\n            case 32:\n                if (!this.overlayVisible) {\n                    this.show();\n                    event.preventDefault();\n                }\n            break;\n\n            //enter and escape\n            case 13:\n            case 27:\n                if (this.overlayVisible) {\n                    this.hide();\n                    event.preventDefault();\n                }\n            break;\n\n            //tab\n            case 9:\n                this.hide();\n            break;\n\n            default:\n            break;\n        }\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    updateTreeState() {\n        if (this.value) {\n            let selectedNodes = this.selectionMode === \"single\" ? [this.value] : [...this.value];\n            this.resetExpandedNodes();\n            if (selectedNodes && this.options) {\n                this.updateTreeBranchState(null, null, selectedNodes);\n            }\n        }\n    }\n\n    updateTreeBranchState(node, path, selectedNodes) {\n        if (node) {\n            if (this.isSelected(node)) {\n                this.expandPath(path);\n                selectedNodes.splice(selectedNodes.indexOf(node), 1);\n            }\n\n            if (selectedNodes.length > 0 && node.children) {\n                for (let childNode of node.children) {\n                    path.push(node);\n                    this.updateTreeBranchState(childNode, path, selectedNodes);\n                }\n            }\n        }\n        else {\n            for (let childNode of this.options) {\n                this.updateTreeBranchState(childNode, [], selectedNodes);\n            }\n        }\n    }\n\n    expandPath(expandedNodes) {\n        for (let node of expandedNodes) {\n            node.expanded = true;\n        }\n\n        this.expandedNodes = [...expandedNodes];\n    }\n\n    nodeExpand(event) {\n        this.onNodeExpand.emit(event);\n        this.expandedNodes.push(event.node);\n    }\n\n    nodeCollapse(event) {\n        this.onNodeCollapse.emit(event);\n        this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);\n    }\n\n    resetExpandedNodes() {\n        for (let node of this.expandedNodes) {\n            node.expanded = false;\n        }\n\n        this.expandedNodes = [];\n    }\n\n    findSelectedNodes(node, keys, selectedNodes) {\n        if (node) {\n            if (this.isSelected(node)) {\n                selectedNodes.push(node);\n                delete keys[node.key];\n            }\n\n            if (Object.keys(keys).length && node.children) {\n                for (let childNode of node.children) {\n                    this.findSelectedNodes(childNode, keys, selectedNodes);\n                }\n            }\n        }\n        else {\n            for (let childNode of this.options) {\n                this.findSelectedNodes(childNode, keys, selectedNodes);\n            }\n        }\n    }\n\n    isSelected(node: TreeNode) {\n        return this.findIndexInSelection(node) != -1;\n    }\n\n    findIndexInSelection(node: TreeNode) {\n        let index: number = -1;\n\n        if (this.value) {\n            if (this.selectionMode === \"single\") {\n                let areNodesEqual = (this.value.key && this.value.key === node.key) || this.value == node;\n                index = areNodesEqual ? 0 : - 1;\n            }\n            else {\n                for(let i = 0; i  < this.value.length; i++) {\n                    let selectedNode = this.value[i];\n                    let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n                    if (areNodesEqual) {\n                        index = i;\n                        break;\n                    }\n                }\n            }\n        }\n\n        return index;\n    }\n\n    onSelect(node) {\n        this.onNodeSelect.emit(node);\n\n        if (this.selectionMode === 'single') {\n            this.hide();\n        }\n    }\n\n    onUnselect(node) {\n        this.onNodeUnselect.emit(node);\n    }\n\n    onOverlayEnter() {\n        ZIndexUtils.set('overlay', this.overlayEl, this.config.zIndex.overlay);\n        this.appendContainer();\n        this.alignOverlay();\n        this.bindOutsideClickListener();\n        this.bindScrollListener();\n        this.bindResizeListener();\n        this.onShow.emit();\n    }\n\n    onOverlayLeave() {\n        this.unbindOutsideClickListener();\n        this.unbindScrollListener();\n        this.unbindResizeListener();\n        ZIndexUtils.clear(this.overlayEl);\n        this.overlayEl = null;\n        this.onHide.emit();\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.updateTreeState();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlayEl);\n        }\n    }\n\n    restoreAppend() {\n        if (this.overlayEl && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlayEl);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlayEl);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            DomHandler.absolutePosition(this.overlayEl, this.containerEl.nativeElement);\n            this.overlayEl.style.minWidth = DomHandler.getOuterWidth(this.containerEl.nativeElement) + 'px';\n        } else {\n            DomHandler.relativePosition(this.overlayEl, this.containerEl.nativeElement);\n        }\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = (event) => {\n                if (this.overlayVisible && this.overlayEl && !this.containerEl.nativeElement.contains(event.target) && !this.overlayEl.contains(event.target)) {\n                    this.hide();\n                }\n            };\n            document.addEventListener('click', this.outsideClickListener);\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEl.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlayEl) {\n            ZIndexUtils.clear(this.overlayEl);\n            this.overlayEl = null;\n        }\n    }\n\n    containerClass() {\n        return {\n            'p-treeselect p-component p-inputwrapper': true,\n            'p-treeselect-chip': this.display === 'chip',\n            'p-disabled': this.disabled,\n            'p-focus': this.focused\n        }\n    }\n\n    labelClass() {\n        return {\n            'p-treeselect-label': true,\n            'p-placeholder': this.label === this.placeholder,\n            'p-treeselect-label-empty': !this.placeholder && this.emptyValue\n        }\n    }\n\n    get emptyMessageText() {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n\n    get emptyValue() {\n        return !this.value || Object.keys(this.value).length === 0;\n    }\n\n    get emptyOptions() {\n        return !this.options || this.options.length === 0;\n    }\n\n    get label() {\n        let value = this.value||[];\n        return value.length ? value.map(node => node.label).join(', ') : (this.selectionMode === \"single\" && this.value) ? value.label : this.placeholder;\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,RippleModule,SharedModule,TreeModule],\n    exports: [TreeSelect,SharedModule,TreeModule],\n    declarations: [TreeSelect]\n})\nexport class TreeSelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2827 @@
+import * as i0 from '@angular/core';
+import { Injectable, EventEmitter, Component, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, Directive, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';
+import * as i3 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Subject } from 'rxjs';
+import { DomHandler } from 'primeng/dom';
+import * as i2 from 'primeng/paginator';
+import { PaginatorModule } from 'primeng/paginator';
+import * as i1 from 'primeng/api';
+import { PrimeTemplate, SharedModule } from 'primeng/api';
+import { ObjectUtils } from 'primeng/utils';
+import * as i5 from 'primeng/ripple';
+import { RippleModule } from 'primeng/ripple';
+import * as i4 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+class TreeTableService {
+    constructor() {
+        this.sortSource = new Subject();
+        this.selectionSource = new Subject();
+        this.contextMenuSource = new Subject();
+        this.uiUpdateSource = new Subject();
+        this.totalRecordsSource = new Subject();
+        this.sortSource$ = this.sortSource.asObservable();
+        this.selectionSource$ = this.selectionSource.asObservable();
+        this.contextMenuSource$ = this.contextMenuSource.asObservable();
+        this.uiUpdateSource$ = this.uiUpdateSource.asObservable();
+        this.totalRecordsSource$ = this.totalRecordsSource.asObservable();
+    }
+    onSort(sortMeta) {
+        this.sortSource.next(sortMeta);
+    }
+    onSelectionChange() {
+        this.selectionSource.next(null);
+    }
+    onContextMenu(node) {
+        this.contextMenuSource.next(node);
+    }
+    onUIUpdate(value) {
+        this.uiUpdateSource.next(value);
+    }
+    onTotalRecordsChange(value) {
+        this.totalRecordsSource.next(value);
+    }
+}
+TreeTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
+TreeTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableService, decorators: [{
+            type: Injectable
+        }] });
+class TreeTable {
+    constructor(el, zone, tableService, filterService) {
+        this.el = el;
+        this.zone = zone;
+        this.tableService = tableService;
+        this.filterService = filterService;
+        this.lazy = false;
+        this.lazyLoadOnInit = true;
+        this.first = 0;
+        this.pageLinks = 5;
+        this.alwaysShowPaginator = true;
+        this.paginatorPosition = 'bottom';
+        this.currentPageReportTemplate = '{currentPage} of {totalPages}';
+        this.showFirstLastIcon = true;
+        this.showPageLinks = true;
+        this.defaultSortOrder = 1;
+        this.sortMode = 'single';
+        this.resetPageOnSort = true;
+        this.selectionChange = new EventEmitter();
+        this.contextMenuSelectionChange = new EventEmitter();
+        this.contextMenuSelectionMode = "separate";
+        this.compareSelectionBy = 'deepEquals';
+        this.loadingIcon = 'pi pi-spinner';
+        this.showLoader = true;
+        this.virtualScrollDelay = 150;
+        this.virtualRowHeight = 28;
+        this.columnResizeMode = 'fit';
+        this.rowTrackBy = (index, item) => item;
+        this.filters = {};
+        this.filterDelay = 300;
+        this.filterMode = 'lenient';
+        this.onFilter = new EventEmitter();
+        this.onNodeExpand = new EventEmitter();
+        this.onNodeCollapse = new EventEmitter();
+        this.onPage = new EventEmitter();
+        this.onSort = new EventEmitter();
+        this.onLazyLoad = new EventEmitter();
+        this.sortFunction = new EventEmitter();
+        this.onColResize = new EventEmitter();
+        this.onColReorder = new EventEmitter();
+        this.onNodeSelect = new EventEmitter();
+        this.onNodeUnselect = new EventEmitter();
+        this.onContextMenuSelect = new EventEmitter();
+        this.onHeaderCheckboxToggle = new EventEmitter();
+        this.onEditInit = new EventEmitter();
+        this.onEditComplete = new EventEmitter();
+        this.onEditCancel = new EventEmitter();
+        this._value = [];
+        this._totalRecords = 0;
+        this._sortOrder = 1;
+        this.selectionKeys = {};
+    }
+    ngOnInit() {
+        if (this.lazy && this.lazyLoadOnInit) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        this.initialized = true;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'caption':
+                    this.captionTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'body':
+                    this.bodyTemplate = item.template;
+                    break;
+                case 'loadingbody':
+                    this.loadingBodyTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                case 'summary':
+                    this.summaryTemplate = item.template;
+                    break;
+                case 'colgroup':
+                    this.colGroupTemplate = item.template;
+                    break;
+                case 'emptymessage':
+                    this.emptyMessageTemplate = item.template;
+                    break;
+                case 'paginatorleft':
+                    this.paginatorLeftTemplate = item.template;
+                    break;
+                case 'paginatorright':
+                    this.paginatorRightTemplate = item.template;
+                    break;
+                case 'paginatordropdownitem':
+                    this.paginatorDropdownItemTemplate = item.template;
+                    break;
+                case 'frozenheader':
+                    this.frozenHeaderTemplate = item.template;
+                    break;
+                case 'frozenbody':
+                    this.frozenBodyTemplate = item.template;
+                    break;
+                case 'frozenfooter':
+                    this.frozenFooterTemplate = item.template;
+                    break;
+                case 'frozencolgroup':
+                    this.frozenColGroupTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    ngOnChanges(simpleChange) {
+        if (simpleChange.value) {
+            this._value = simpleChange.value.currentValue;
+            if (!this.lazy) {
+                this.totalRecords = (this._value ? this._value.length : 0);
+                if (this.sortMode == 'single' && this.sortField)
+                    this.sortSingle();
+                else if (this.sortMode == 'multiple' && this.multiSortMeta)
+                    this.sortMultiple();
+                else if (this.hasFilter()) //sort already filters
+                    this._filter();
+            }
+            this.updateSerializedValue();
+            this.tableService.onUIUpdate(this.value);
+        }
+        if (simpleChange.sortField) {
+            this._sortField = simpleChange.sortField.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.sortOrder) {
+            this._sortOrder = simpleChange.sortOrder.currentValue;
+            //avoid triggering lazy load prior to lazy initialization at onInit
+            if (!this.lazy || this.initialized) {
+                if (this.sortMode === 'single') {
+                    this.sortSingle();
+                }
+            }
+        }
+        if (simpleChange.multiSortMeta) {
+            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;
+            if (this.sortMode === 'multiple') {
+                this.sortMultiple();
+            }
+        }
+        if (simpleChange.selection) {
+            this._selection = simpleChange.selection.currentValue;
+            if (!this.preventSelectionSetterPropagation) {
+                this.updateSelectionKeys();
+                this.tableService.onSelectionChange();
+            }
+            this.preventSelectionSetterPropagation = false;
+        }
+    }
+    get value() {
+        return this._value;
+    }
+    set value(val) {
+        this._value = val;
+    }
+    updateSerializedValue() {
+        this.serializedValue = [];
+        if (this.paginator)
+            this.serializePageNodes();
+        else
+            this.serializeNodes(null, this.filteredNodes || this.value, 0, true);
+    }
+    serializeNodes(parent, nodes, level, visible) {
+        if (nodes && nodes.length) {
+            for (let node of nodes) {
+                node.parent = parent;
+                const rowNode = {
+                    node: node,
+                    parent: parent,
+                    level: level,
+                    visible: visible && (parent ? parent.expanded : true)
+                };
+                this.serializedValue.push(rowNode);
+                if (rowNode.visible && node.expanded) {
+                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);
+                }
+            }
+        }
+    }
+    serializePageNodes() {
+        let data = this.filteredNodes || this.value;
+        this.serializedValue = [];
+        if (data && data.length) {
+            const first = this.lazy ? 0 : this.first;
+            for (let i = first; i < (first + this.rows); i++) {
+                let node = data[i];
+                if (node) {
+                    this.serializedValue.push({
+                        node: node,
+                        parent: null,
+                        level: 0,
+                        visible: true
+                    });
+                    this.serializeNodes(node, node.children, 1, true);
+                }
+            }
+        }
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        this.tableService.onTotalRecordsChange(this._totalRecords);
+    }
+    get sortField() {
+        return this._sortField;
+    }
+    set sortField(val) {
+        this._sortField = val;
+    }
+    get sortOrder() {
+        return this._sortOrder;
+    }
+    set sortOrder(val) {
+        this._sortOrder = val;
+    }
+    get multiSortMeta() {
+        return this._multiSortMeta;
+    }
+    set multiSortMeta(val) {
+        this._multiSortMeta = val;
+    }
+    get selection() {
+        return this._selection;
+    }
+    set selection(val) {
+        this._selection = val;
+    }
+    updateSelectionKeys() {
+        if (this.dataKey && this._selection) {
+            this.selectionKeys = {};
+            if (Array.isArray(this._selection)) {
+                for (let node of this._selection) {
+                    this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;
+                }
+            }
+            else {
+                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;
+            }
+        }
+    }
+    onPageChange(event) {
+        this.first = event.first;
+        this.rows = event.rows;
+        if (this.lazy)
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        else
+            this.serializePageNodes();
+        this.onPage.emit({
+            first: this.first,
+            rows: this.rows
+        });
+        this.tableService.onUIUpdate(this.value);
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    sort(event) {
+        let originalEvent = event.originalEvent;
+        if (this.sortMode === 'single') {
+            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;
+            this._sortField = event.field;
+            this.sortSingle();
+            if (this.resetPageOnSort && this.scrollable) {
+                this.resetScrollTop();
+            }
+        }
+        if (this.sortMode === 'multiple') {
+            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;
+            let sortMeta = this.getSortMeta(event.field);
+            if (sortMeta) {
+                if (!metaKey) {
+                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                else {
+                    sortMeta.order = sortMeta.order * -1;
+                }
+            }
+            else {
+                if (!metaKey || !this.multiSortMeta) {
+                    this._multiSortMeta = [];
+                    if (this.resetPageOnSort && this.scrollable) {
+                        this.resetScrollTop();
+                    }
+                }
+                this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });
+            }
+            this.sortMultiple();
+        }
+    }
+    sortSingle() {
+        if (this.sortField && this.sortOrder) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            let sortMeta = {
+                field: this.sortField,
+                order: this.sortOrder
+            };
+            this.onSort.emit(sortMeta);
+            this.tableService.onSort(sortMeta);
+            this.updateSerializedValue();
+        }
+    }
+    sortNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: nodes,
+                mode: this.sortMode,
+                field: this.sortField,
+                order: this.sortOrder
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);
+                let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);
+                let result = null;
+                if (value1 == null && value2 != null)
+                    result = -1;
+                else if (value1 != null && value2 == null)
+                    result = 1;
+                else if (value1 == null && value2 == null)
+                    result = 0;
+                else if (typeof value1 === 'string' && typeof value2 === 'string')
+                    result = value1.localeCompare(value2, undefined, { numeric: true });
+                else
+                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;
+                return (this.sortOrder * result);
+            });
+        }
+        for (let node of nodes) {
+            this.sortNodes(node.children);
+        }
+    }
+    sortMultiple() {
+        if (this.multiSortMeta) {
+            if (this.lazy) {
+                this.onLazyLoad.emit(this.createLazyLoadMetadata());
+            }
+            else if (this.value) {
+                this.sortMultipleNodes(this.value);
+                if (this.hasFilter()) {
+                    this._filter();
+                }
+            }
+            this.onSort.emit({
+                multisortmeta: this.multiSortMeta
+            });
+            this.updateSerializedValue();
+            this.tableService.onSort(this.multiSortMeta);
+        }
+    }
+    sortMultipleNodes(nodes) {
+        if (!nodes || nodes.length === 0) {
+            return;
+        }
+        if (this.customSort) {
+            this.sortFunction.emit({
+                data: this.value,
+                mode: this.sortMode,
+                multiSortMeta: this.multiSortMeta
+            });
+        }
+        else {
+            nodes.sort((node1, node2) => {
+                return this.multisortField(node1, node2, this.multiSortMeta, 0);
+            });
+        }
+        for (let node of nodes) {
+            this.sortMultipleNodes(node.children);
+        }
+    }
+    multisortField(node1, node2, multiSortMeta, index) {
+        let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);
+        let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);
+        let result = null;
+        if (value1 == null && value2 != null)
+            result = -1;
+        else if (value1 != null && value2 == null)
+            result = 1;
+        else if (value1 == null && value2 == null)
+            result = 0;
+        if (typeof value1 == 'string' || value1 instanceof String) {
+            if (value1.localeCompare && (value1 != value2)) {
+                return (multiSortMeta[index].order * value1.localeCompare(value2, undefined, { numeric: true }));
+            }
+        }
+        else {
+            result = (value1 < value2) ? -1 : 1;
+        }
+        if (value1 == value2) {
+            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(node1, node2, multiSortMeta, index + 1)) : 0;
+        }
+        return (multiSortMeta[index].order * result);
+    }
+    getSortMeta(field) {
+        if (this.multiSortMeta && this.multiSortMeta.length) {
+            for (let i = 0; i < this.multiSortMeta.length; i++) {
+                if (this.multiSortMeta[i].field === field) {
+                    return this.multiSortMeta[i];
+                }
+            }
+        }
+        return null;
+    }
+    isSorted(field) {
+        if (this.sortMode === 'single') {
+            return (this.sortField && this.sortField === field);
+        }
+        else if (this.sortMode === 'multiple') {
+            let sorted = false;
+            if (this.multiSortMeta) {
+                for (let i = 0; i < this.multiSortMeta.length; i++) {
+                    if (this.multiSortMeta[i].field == field) {
+                        sorted = true;
+                        break;
+                    }
+                }
+            }
+            return sorted;
+        }
+    }
+    createLazyLoadMetadata() {
+        return {
+            first: this.first,
+            rows: this.rows,
+            sortField: this.sortField,
+            sortOrder: this.sortOrder,
+            filters: this.filters,
+            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,
+            multiSortMeta: this.multiSortMeta
+        };
+    }
+    resetScrollTop() {
+        if (this.virtualScroll)
+            this.scrollToVirtualIndex(0);
+        else
+            this.scrollTo({ top: 0 });
+    }
+    scrollToVirtualIndex(index) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollToVirtualIndex(index);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollToVirtualIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.scrollableViewChild) {
+            this.scrollableViewChild.scrollTo(options);
+        }
+        if (this.scrollableFrozenViewChild) {
+            this.scrollableFrozenViewChild.scrollTo(options);
+        }
+    }
+    isEmpty() {
+        let data = this.filteredNodes || this.value;
+        return data == null || data.length == 0;
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    onColumnResizeBegin(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);
+        event.preventDefault();
+    }
+    onColumnResize(event) {
+        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;
+        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';
+        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';
+        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';
+        this.resizeHelperViewChild.nativeElement.style.display = 'block';
+    }
+    onColumnResizeEnd(event, column) {
+        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;
+        let columnWidth = column.offsetWidth;
+        let newColumnWidth = columnWidth + delta;
+        let minWidth = column.style.minWidth || 15;
+        if (columnWidth + delta > parseInt(minWidth)) {
+            if (this.columnResizeMode === 'fit') {
+                let nextColumn = column.nextElementSibling;
+                while (!nextColumn.offsetParent) {
+                    nextColumn = nextColumn.nextElementSibling;
+                }
+                if (nextColumn) {
+                    let nextColumnWidth = nextColumn.offsetWidth - delta;
+                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;
+                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {
+                        if (this.scrollable) {
+                            let scrollableView = this.findParentScrollableView(column);
+                            let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-treetable-virtual-scrollable-body table');
+                            let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                            let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                            let resizeColumnIndex = DomHandler.index(column);
+                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);
+                        }
+                        else {
+                            column.style.width = newColumnWidth + 'px';
+                            if (nextColumn) {
+                                nextColumn.style.width = nextColumnWidth + 'px';
+                            }
+                        }
+                    }
+                }
+            }
+            else if (this.columnResizeMode === 'expand') {
+                if (this.scrollable) {
+                    let scrollableView = this.findParentScrollableView(column);
+                    let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport');
+                    let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');
+                    let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');
+                    let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport table');
+                    let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');
+                    let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');
+                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';
+                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';
+                    if (scrollableFooterTable) {
+                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';
+                    }
+                    let resizeColumnIndex = DomHandler.index(column);
+                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;
+                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;
+                    const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;
+                    let setWidth = (container, table, width, isContainerInViewport) => {
+                        if (container && table) {
+                            container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto';
+                            table.style.width = width + 'px';
+                        }
+                    };
+                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);
+                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);
+                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);
+                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);
+                }
+                else {
+                    this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';
+                    column.style.width = newColumnWidth + 'px';
+                    let containerWidth = this.tableViewChild.nativeElement.style.width;
+                    this.containerViewChild.nativeElement.style.width = containerWidth + 'px';
+                }
+            }
+            this.onColResize.emit({
+                element: column,
+                delta: delta
+            });
+        }
+        this.resizeHelperViewChild.nativeElement.style.display = 'none';
+        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');
+    }
+    findParentScrollableView(column) {
+        if (column) {
+            let parent = column.parentElement;
+            while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {
+                parent = parent.parentElement;
+            }
+            return parent;
+        }
+        else {
+            return null;
+        }
+    }
+    resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {
+        if (table) {
+            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;
+            if (colGroup) {
+                let col = colGroup.children[resizeColumnIndex];
+                let nextCol = col.nextElementSibling;
+                col.style.width = newColumnWidth + 'px';
+                if (nextCol && nextColumnWidth) {
+                    nextCol.style.width = nextColumnWidth + 'px';
+                }
+            }
+            else {
+                throw "Scrollable tables require a colgroup to support resizable columns";
+            }
+        }
+    }
+    onColumnDragStart(event, columnElement) {
+        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);
+        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);
+        this.draggedColumn = columnElement;
+        event.dataTransfer.setData('text', 'b'); // For firefox
+    }
+    onColumnDragEnter(event, dropHeader) {
+        if (this.reorderableColumns && this.draggedColumn && dropHeader) {
+            event.preventDefault();
+            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);
+            let dropHeaderOffset = DomHandler.getOffset(dropHeader);
+            if (this.draggedColumn != dropHeader) {
+                let targetLeft = dropHeaderOffset.left - containerOffset.left;
+                let targetTop = containerOffset.top - dropHeaderOffset.top;
+                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
+                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';
+                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
+                if (event.pageX > columnCenter) {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = 1;
+                }
+                else {
+                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';
+                    this.dropPosition = -1;
+                }
+                this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';
+                this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';
+            }
+            else {
+                event.dataTransfer.dropEffect = 'none';
+            }
+        }
+    }
+    onColumnDragLeave(event) {
+        if (this.reorderableColumns && this.draggedColumn) {
+            event.preventDefault();
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+        }
+    }
+    onColumnDrop(event, dropColumn) {
+        event.preventDefault();
+        if (this.draggedColumn) {
+            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');
+            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');
+            let allowDrop = (dragIndex != dropIndex);
+            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {
+                allowDrop = false;
+            }
+            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {
+                dropIndex = dropIndex + 1;
+            }
+            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {
+                dropIndex = dropIndex - 1;
+            }
+            if (allowDrop) {
+                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);
+                this.onColReorder.emit({
+                    dragIndex: dragIndex,
+                    dropIndex: dropIndex,
+                    columns: this.columns
+                });
+            }
+            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';
+            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';
+            this.draggedColumn.draggable = false;
+            this.draggedColumn = null;
+            this.dropPosition = null;
+        }
+    }
+    handleRowClick(event) {
+        let targetNode = event.originalEvent.target.nodeName;
+        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {
+            return;
+        }
+        if (this.selectionMode) {
+            this.preventSelectionSetterPropagation = true;
+            let rowNode = event.rowNode;
+            let selected = this.isSelected(rowNode.node);
+            let metaSelection = this.rowTouched ? false : this.metaKeySelection;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;
+            if (metaSelection) {
+                let metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;
+                if (selected && metaKey) {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(null);
+                    }
+                    else {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                }
+                else {
+                    if (this.isSingleSelectionMode()) {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(rowNode.node);
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        if (metaKey) {
+                            this._selection = this.selection || [];
+                        }
+                        else {
+                            this._selection = [];
+                            this.selectionKeys = {};
+                        }
+                        this._selection = [...this.selection, rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                    this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                }
+            }
+            else {
+                if (this.selectionMode === 'single') {
+                    if (selected) {
+                        this._selection = null;
+                        this.selectionKeys = {};
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                    }
+                    else {
+                        this._selection = rowNode.node;
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys = {};
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+                else if (this.selectionMode === 'multiple') {
+                    if (selected) {
+                        let selectionIndex = this.findIndexInSelection(rowNode.node);
+                        this._selection = this.selection.filter((val, i) => i != selectionIndex);
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                    else {
+                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];
+                        this.selectionChange.emit(this.selection);
+                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });
+                        if (dataKeyValue) {
+                            this.selectionKeys[dataKeyValue] = 1;
+                        }
+                    }
+                }
+            }
+            this.tableService.onSelectionChange();
+        }
+        this.rowTouched = false;
+    }
+    handleRowTouchEnd(event) {
+        this.rowTouched = true;
+    }
+    handleRowRightClick(event) {
+        if (this.contextMenu) {
+            const node = event.rowNode.node;
+            if (this.contextMenuSelectionMode === 'separate') {
+                this.contextMenuSelection = node;
+                this.contextMenuSelectionChange.emit(node);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+                this.contextMenu.show(event.originalEvent);
+                this.tableService.onContextMenu(node);
+            }
+            else if (this.contextMenuSelectionMode === 'joint') {
+                this.preventSelectionSetterPropagation = true;
+                let selected = this.isSelected(node);
+                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+                if (!selected) {
+                    if (this.isSingleSelectionMode()) {
+                        this.selection = node;
+                        this.selectionChange.emit(node);
+                    }
+                    else if (this.isMultipleSelectionMode()) {
+                        this.selection = [node];
+                        this.selectionChange.emit(this.selection);
+                    }
+                    if (dataKeyValue) {
+                        this.selectionKeys[dataKeyValue] = 1;
+                    }
+                }
+                this.contextMenu.show(event.originalEvent);
+                this.onContextMenuSelect.emit({ originalEvent: event.originalEvent, node: node });
+            }
+        }
+    }
+    toggleNodeWithCheckbox(event) {
+        this.selection = this.selection || [];
+        this.preventSelectionSetterPropagation = true;
+        let node = event.rowNode.node;
+        let selected = this.isSelected(node);
+        if (selected) {
+            this.propagateSelectionDown(node, false);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, false);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeUnselect.emit({ originalEvent: event, node: node });
+        }
+        else {
+            this.propagateSelectionDown(node, true);
+            if (event.rowNode.parent) {
+                this.propagateSelectionUp(node.parent, true);
+            }
+            this.selectionChange.emit(this.selection);
+            this.onNodeSelect.emit({ originalEvent: event, node: node });
+        }
+        this.tableService.onSelectionChange();
+    }
+    toggleNodesWithCheckbox(event, check) {
+        let data = this.filteredNodes || this.value;
+        this._selection = check && data ? data.slice() : [];
+        if (check) {
+            if (data && data.length) {
+                for (let node of data) {
+                    this.propagateSelectionDown(node, true);
+                }
+            }
+        }
+        else {
+            this._selection = [];
+            this.selectionKeys = {};
+        }
+        this.preventSelectionSetterPropagation = true;
+        this.selectionChange.emit(this._selection);
+        this.tableService.onSelectionChange();
+        this.onHeaderCheckboxToggle.emit({ originalEvent: event, checked: check });
+    }
+    propagateSelectionUp(node, select) {
+        if (node.children && node.children.length) {
+            let selectedChildCount = 0;
+            let childPartialSelected = false;
+            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+            for (let child of node.children) {
+                if (this.isSelected(child))
+                    selectedChildCount++;
+                else if (child.partialSelected)
+                    childPartialSelected = true;
+            }
+            if (select && selectedChildCount == node.children.length) {
+                this._selection = [...this.selection || [], node];
+                node.partialSelected = false;
+                if (dataKeyValue) {
+                    this.selectionKeys[dataKeyValue] = 1;
+                }
+            }
+            else {
+                if (!select) {
+                    let index = this.findIndexInSelection(node);
+                    if (index >= 0) {
+                        this._selection = this.selection.filter((val, i) => i != index);
+                        if (dataKeyValue) {
+                            delete this.selectionKeys[dataKeyValue];
+                        }
+                    }
+                }
+                if (childPartialSelected || selectedChildCount > 0 && selectedChildCount != node.children.length)
+                    node.partialSelected = true;
+                else
+                    node.partialSelected = false;
+            }
+        }
+        let parent = node.parent;
+        if (parent) {
+            this.propagateSelectionUp(parent, select);
+        }
+    }
+    propagateSelectionDown(node, select) {
+        let index = this.findIndexInSelection(node);
+        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;
+        if (select && index == -1) {
+            this._selection = [...this.selection || [], node];
+            if (dataKeyValue) {
+                this.selectionKeys[dataKeyValue] = 1;
+            }
+        }
+        else if (!select && index > -1) {
+            this._selection = this.selection.filter((val, i) => i != index);
+            if (dataKeyValue) {
+                delete this.selectionKeys[dataKeyValue];
+            }
+        }
+        node.partialSelected = false;
+        if (node.children && node.children.length) {
+            for (let child of node.children) {
+                this.propagateSelectionDown(child, select);
+            }
+        }
+    }
+    isSelected(node) {
+        if (node && this.selection) {
+            if (this.dataKey) {
+                return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;
+            }
+            else {
+                if (this.selection instanceof Array)
+                    return this.findIndexInSelection(node) > -1;
+                else
+                    return this.equals(node, this.selection);
+            }
+        }
+        return false;
+    }
+    findIndexInSelection(node) {
+        let index = -1;
+        if (this.selection && this.selection.length) {
+            for (let i = 0; i < this.selection.length; i++) {
+                if (this.equals(node, this.selection[i])) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    isSingleSelectionMode() {
+        return this.selectionMode === 'single';
+    }
+    isMultipleSelectionMode() {
+        return this.selectionMode === 'multiple';
+    }
+    equals(node1, node2) {
+        return this.compareSelectionBy === 'equals' ? (node1 === node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);
+    }
+    filter(value, field, matchMode) {
+        if (this.filterTimeout) {
+            clearTimeout(this.filterTimeout);
+        }
+        if (!this.isFilterBlank(value)) {
+            this.filters[field] = { value: value, matchMode: matchMode };
+        }
+        else if (this.filters[field]) {
+            delete this.filters[field];
+        }
+        this.filterTimeout = setTimeout(() => {
+            this._filter();
+            this.filterTimeout = null;
+        }, this.filterDelay);
+    }
+    filterGlobal(value, matchMode) {
+        this.filter(value, 'global', matchMode);
+    }
+    isFilterBlank(filter) {
+        if (filter !== null && filter !== undefined) {
+            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))
+                return true;
+            else
+                return false;
+        }
+        return true;
+    }
+    _filter() {
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            if (!this.value) {
+                return;
+            }
+            if (!this.hasFilter()) {
+                this.filteredNodes = null;
+                if (this.paginator) {
+                    this.totalRecords = this.value ? this.value.length : 0;
+                }
+            }
+            else {
+                let globalFilterFieldsArray;
+                if (this.filters['global']) {
+                    if (!this.columns && !this.globalFilterFields)
+                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');
+                    else
+                        globalFilterFieldsArray = this.globalFilterFields || this.columns;
+                }
+                this.filteredNodes = [];
+                const isStrictMode = this.filterMode === 'strict';
+                let isValueChanged = false;
+                for (let node of this.value) {
+                    let copyNode = { ...node };
+                    let localMatch = true;
+                    let globalMatch = false;
+                    let paramsWithoutNode;
+                    for (let prop in this.filters) {
+                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {
+                            let filterMeta = this.filters[prop];
+                            let filterField = prop;
+                            let filterValue = filterMeta.value;
+                            let filterMatchMode = filterMeta.matchMode || 'startsWith';
+                            let filterConstraint = this.filterService.filters[filterMatchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||
+                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {
+                                localMatch = false;
+                            }
+                            if (!localMatch) {
+                                break;
+                            }
+                        }
+                    }
+                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {
+                        for (let j = 0; j < globalFilterFieldsArray.length; j++) {
+                            let copyNodeForGlobal = { ...copyNode };
+                            let filterField = globalFilterFieldsArray[j].field || globalFilterFieldsArray[j];
+                            let filterValue = this.filters['global'].value;
+                            let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];
+                            paramsWithoutNode = { filterField, filterValue, filterConstraint, isStrictMode };
+                            if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
+                                (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
+                                globalMatch = true;
+                                copyNode = copyNodeForGlobal;
+                            }
+                        }
+                    }
+                    let matches = localMatch;
+                    if (this.filters['global']) {
+                        matches = localMatch && globalMatch;
+                    }
+                    if (matches) {
+                        this.filteredNodes.push(copyNode);
+                    }
+                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0);
+                }
+                if (!isValueChanged) {
+                    this.filteredNodes = null;
+                }
+                if (this.paginator) {
+                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;
+                }
+            }
+        }
+        this.first = 0;
+        const filteredValue = this.filteredNodes || this.value;
+        this.onFilter.emit({
+            filters: this.filters,
+            filteredValue: filteredValue
+        });
+        this.tableService.onUIUpdate(filteredValue);
+        this.updateSerializedValue();
+        if (this.scrollable) {
+            this.resetScrollTop();
+        }
+    }
+    findFilteredNodes(node, paramsWithoutNode) {
+        if (node) {
+            let matched = false;
+            if (node.children) {
+                let childNodes = [...node.children];
+                node.children = [];
+                for (let childNode of childNodes) {
+                    let copyChildNode = { ...childNode };
+                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {
+                        matched = true;
+                        node.children.push(copyChildNode);
+                    }
+                }
+            }
+            if (matched) {
+                return true;
+            }
+        }
+    }
+    isFilterMatched(node, { filterField, filterValue, filterConstraint, isStrictMode }) {
+        let matched = false;
+        let dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);
+        if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {
+            matched = true;
+        }
+        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {
+            matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, isStrictMode }) || matched;
+        }
+        return matched;
+    }
+    isNodeLeaf(node) {
+        return node.leaf === false ? false : !(node.children && node.children.length);
+    }
+    hasFilter() {
+        let empty = true;
+        for (let prop in this.filters) {
+            if (this.filters.hasOwnProperty(prop)) {
+                empty = false;
+                break;
+            }
+        }
+        return !empty;
+    }
+    reset() {
+        this._sortField = null;
+        this._sortOrder = 1;
+        this._multiSortMeta = null;
+        this.tableService.onSort(null);
+        this.filteredNodes = null;
+        this.filters = {};
+        this.first = 0;
+        if (this.lazy) {
+            this.onLazyLoad.emit(this.createLazyLoadMetadata());
+        }
+        else {
+            this.totalRecords = (this._value ? this._value.length : 0);
+        }
+    }
+    updateEditingCell(cell, data, field) {
+        this.editingCell = cell;
+        this.editingCellData = data;
+        this.editingCellField = field;
+        this.bindDocumentEditListener();
+    }
+    isEditingCellValid() {
+        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);
+    }
+    bindDocumentEditListener() {
+        if (!this.documentEditListener) {
+            this.documentEditListener = (event) => {
+                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {
+                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');
+                    this.editingCell = null;
+                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });
+                    this.editingCellField = null;
+                    this.editingCellData = null;
+                    this.unbindDocumentEditListener();
+                }
+                this.editingCellClick = false;
+            };
+            document.addEventListener('click', this.documentEditListener);
+        }
+    }
+    unbindDocumentEditListener() {
+        if (this.documentEditListener) {
+            document.removeEventListener('click', this.documentEditListener);
+            this.documentEditListener = null;
+        }
+    }
+    ngOnDestroy() {
+        this.unbindDocumentEditListener();
+        this.editingCell = null;
+        this.editingCellField = null;
+        this.editingCellData = null;
+        this.initialized = null;
+    }
+}
+TreeTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: TreeTableService }, { token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
+TreeTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTable, selector: "p-treeTable", inputs: { columns: "columns", style: "style", styleClass: "styleClass", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", autoLayout: "autoLayout", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", paginator: "paginator", rows: "rows", first: "first", pageLinks: "pageLinks", rowsPerPageOptions: "rowsPerPageOptions", alwaysShowPaginator: "alwaysShowPaginator", paginatorPosition: "paginatorPosition", paginatorDropdownAppendTo: "paginatorDropdownAppendTo", currentPageReportTemplate: "currentPageReportTemplate", showCurrentPageReport: "showCurrentPageReport", showJumpToPageDropdown: "showJumpToPageDropdown", showFirstLastIcon: "showFirstLastIcon", showPageLinks: "showPageLinks", defaultSortOrder: "defaultSortOrder", sortMode: "sortMode", resetPageOnSort: "resetPageOnSort", customSort: "customSort", selectionMode: "selectionMode", contextMenuSelection: "contextMenuSelection", contextMenuSelectionMode: "contextMenuSelectionMode", dataKey: "dataKey", metaKeySelection: "metaKeySelection", compareSelectionBy: "compareSelectionBy", rowHover: "rowHover", loading: "loading", loadingIcon: "loadingIcon", showLoader: "showLoader", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", virtualScrollDelay: "virtualScrollDelay", virtualRowHeight: "virtualRowHeight", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", frozenWidth: "frozenWidth", frozenColumns: "frozenColumns", resizableColumns: "resizableColumns", columnResizeMode: "columnResizeMode", reorderableColumns: "reorderableColumns", contextMenu: "contextMenu", rowTrackBy: "rowTrackBy", filters: "filters", globalFilterFields: "globalFilterFields", filterDelay: "filterDelay", filterMode: "filterMode", filterLocale: "filterLocale", value: "value", totalRecords: "totalRecords", sortField: "sortField", sortOrder: "sortOrder", multiSortMeta: "multiSortMeta", selection: "selection" }, outputs: { selectionChange: "selectionChange", contextMenuSelectionChange: "contextMenuSelectionChange", onFilter: "onFilter", onNodeExpand: "onNodeExpand", onNodeCollapse: "onNodeCollapse", onPage: "onPage", onSort: "onSort", onLazyLoad: "onLazyLoad", sortFunction: "sortFunction", onColResize: "onColResize", onColReorder: "onColReorder", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onContextMenuSelect: "onContextMenuSelect", onHeaderCheckboxToggle: "onHeaderCheckboxToggle", onEditInit: "onEditInit", onEditComplete: "onEditComplete", onEditCancel: "onEditCancel" }, host: { classAttribute: "p-element" }, providers: [TreeTableService], queries: [{ propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "containerViewChild", first: true, predicate: ["container"], descendants: true }, { propertyName: "resizeHelperViewChild", first: true, predicate: ["resizeHelper"], descendants: true }, { propertyName: "reorderIndicatorUpViewChild", first: true, predicate: ["reorderIndicatorUp"], descendants: true }, { propertyName: "reorderIndicatorDownViewChild", first: true, predicate: ["reorderIndicatorDown"], descendants: true }, { propertyName: "tableViewChild", first: true, predicate: ["table"], descendants: true }, { propertyName: "scrollableViewChild", first: true, predicate: ["scrollableView"], descendants: true }, { propertyName: "scrollableFrozenViewChild", first: true, predicate: ["scrollableFrozenView"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, isInline: true, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"], components: [{ type: i0.forwardRef(function () { return i2.Paginator; }), selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "templateLeft", "templateRight", "dropdownAppendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "showPageLinks", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { type: i0.forwardRef(function () { return TTBody; }), selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i0.forwardRef(function () { return TTScrollableView; }), selector: "[ttScrollableView]", inputs: ["ttScrollableView", "frozen", "scrollHeight"] }], directives: [{ type: i0.forwardRef(function () { return i3.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i3.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTable, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-treeTable', template: `
+        <div #container [ngStyle]="style" [class]="styleClass" data-scrollselectors=".p-treetable-scrollable-body"
+                [ngClass]="{'p-treetable p-component': true,
+                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),
+                'p-treetable-auto-layout': autoLayout,
+                'p-treetable-resizable': resizableColumns,
+                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),
+                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}">
+            <div class="p-treetable-loading" *ngIf="loading && showLoader">
+                <div class="p-treetable-loading-overlay p-component-overlay">
+                    <i [class]="'p-treetable-loading-icon pi-spin ' + loadingIcon"></i>
+                </div>
+            </div>
+            <div *ngIf="captionTemplate" class="p-treetable-header">
+                <ng-container *ngTemplateOutlet="captionTemplate"></ng-container>
+            </div>
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-top" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'top' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+
+            <div class="p-treetable-wrapper" *ngIf="!scrollable">
+                <table #table [ngClass]="tableStyleClass" [ngStyle]="tableStyle">
+                    <ng-container *ngTemplateOutlet="colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="headerTemplate; context: {$implicit: columns}"></ng-container>
+                    </thead>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="bodyTemplate"></tbody>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+
+            <div class="p-treetable-scrollable-wrapper" *ngIf="scrollable">
+               <div class="p-treetable-scrollable-view p-treetable-frozen-view" *ngIf="frozenColumns||frozenBodyTemplate" #scrollableFrozenView [ttScrollableView]="frozenColumns" [frozen]="true" [ngStyle]="{width: frozenWidth}" [scrollHeight]="scrollHeight"></div>
+               <div class="p-treetable-scrollable-view" #scrollableView [ttScrollableView]="columns" [frozen]="false" [scrollHeight]="scrollHeight" [ngStyle]="{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}"></div>
+            </div>
+
+            <p-paginator [rows]="rows" [first]="first" [totalRecords]="totalRecords" [pageLinkSize]="pageLinks" styleClass="p-paginator-bottom" [alwaysShow]="alwaysShowPaginator"
+                (onPageChange)="onPageChange($event)" [rowsPerPageOptions]="rowsPerPageOptions" *ngIf="paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')"
+                [templateLeft]="paginatorLeftTemplate" [templateRight]="paginatorRightTemplate" [dropdownAppendTo]="paginatorDropdownAppendTo"
+                [currentPageReportTemplate]="currentPageReportTemplate" [showFirstLastIcon]="showFirstLastIcon" [dropdownItemTemplate]="paginatorDropdownItemTemplate" [showCurrentPageReport]="showCurrentPageReport" [showJumpToPageDropdown]="showJumpToPageDropdown" [showPageLinks]="showPageLinks"></p-paginator>
+            <div *ngIf="summaryTemplate" class="p-treetable-footer">
+                <ng-container *ngTemplateOutlet="summaryTemplate"></ng-container>
+            </div>
+
+            <div #resizeHelper class="p-column-resizer-helper" style="display:none" *ngIf="resizableColumns"></div>
+
+            <span #reorderIndicatorUp class="pi pi-arrow-down p-treetable-reorder-indicator-up" *ngIf="reorderableColumns"></span>
+            <span #reorderIndicatorDown class="pi pi-arrow-up p-treetable-reorder-indicator-down" *ngIf="reorderableColumns"></span>
+        </div>
+    `, providers: [TreeTableService], encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: [".p-treetable{position:relative}.p-treetable table{border-collapse:collapse;width:100%;table-layout:fixed}.p-treetable .p-sortable-column{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none}.p-treetable .p-sortable-column .p-column-title,.p-treetable .p-sortable-column .p-sortable-column-icon,.p-treetable .p-sortable-column .p-sortable-column-badge{vertical-align:middle}.p-treetable .p-sortable-column .p-sortable-column-badge{display:inline-flex;align-items:center;justify-content:center}.p-treetable-auto-layout>.p-treetable-wrapper{overflow-x:auto}.p-treetable-auto-layout>.p-treetable-wrapper>table{table-layout:auto}.p-treetable-hoverable-rows .p-treetable-tbody>tr{cursor:pointer}.p-treetable-toggler{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;overflow:hidden;position:relative}p-treetabletoggler+p-treetablecheckbox .p-checkbox,p-treetabletoggler+p-treetablecheckbox+span{vertical-align:middle}.p-treetable-scrollable-wrapper{position:relative}.p-treetable-scrollable-header,.p-treetable-scrollable-footer{overflow:hidden}.p-treetable-scrollable-body{overflow:auto;position:relative}.p-treetable-scrollable-body>table>.p-treetable-tbody>tr:first-child>td{border-top:0 none}.p-treetable-virtual-table{position:absolute}.p-treetable-frozen-view .p-treetable-scrollable-body{overflow:hidden}.p-treetable-frozen-view>.p-treetable-scrollable-body>table>.p-treetable-tbody>tr>td:last-child{border-right:0 none}.p-treetable-unfrozen-view{position:absolute;top:0}.p-treetable-flex-scrollable,.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,.p-treetable-flex-scrollable .p-treetable-scrollable-view{display:flex;flex-direction:column;flex:1;height:100%}.p-treetable-flex-scrollable .p-treetable-scrollable-body{flex:1}.p-treetable-resizable>.p-treetable-wrapper{overflow-x:auto}.p-treetable-resizable .p-treetable-thead>tr>th,.p-treetable-resizable .p-treetable-tfoot>tr>td,.p-treetable-resizable .p-treetable-tbody>tr>td{overflow:hidden}.p-treetable-resizable .p-resizable-column{background-clip:padding-box;position:relative}.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer{display:none}.p-treetable .p-column-resizer{display:block;position:absolute!important;top:0;right:0;margin:0;width:.5rem;height:100%;padding:0;cursor:col-resize;border:1px solid transparent}.p-treetable .p-column-resizer-helper{width:1px;position:absolute;z-index:10;display:none}.p-treetable .p-row-editor-init,.p-treetable .p-row-editor-save,.p-treetable .p-row-editor-cancel,.p-treetable .p-row-toggler{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-treetable-reorder-indicator-up,.p-treetable-reorder-indicator-down{position:absolute;display:none}[ttReorderableColumn]{cursor:move}.p-treetable .p-treetable-loading-overlay{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: TreeTableService }, { type: i1.FilterService }]; }, propDecorators: { columns: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], tableStyle: [{
+                type: Input
+            }], tableStyleClass: [{
+                type: Input
+            }], autoLayout: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], lazyLoadOnInit: [{
+                type: Input
+            }], paginator: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], pageLinks: [{
+                type: Input
+            }], rowsPerPageOptions: [{
+                type: Input
+            }], alwaysShowPaginator: [{
+                type: Input
+            }], paginatorPosition: [{
+                type: Input
+            }], paginatorDropdownAppendTo: [{
+                type: Input
+            }], currentPageReportTemplate: [{
+                type: Input
+            }], showCurrentPageReport: [{
+                type: Input
+            }], showJumpToPageDropdown: [{
+                type: Input
+            }], showFirstLastIcon: [{
+                type: Input
+            }], showPageLinks: [{
+                type: Input
+            }], defaultSortOrder: [{
+                type: Input
+            }], sortMode: [{
+                type: Input
+            }], resetPageOnSort: [{
+                type: Input
+            }], customSort: [{
+                type: Input
+            }], selectionMode: [{
+                type: Input
+            }], selectionChange: [{
+                type: Output
+            }], contextMenuSelection: [{
+                type: Input
+            }], contextMenuSelectionChange: [{
+                type: Output
+            }], contextMenuSelectionMode: [{
+                type: Input
+            }], dataKey: [{
+                type: Input
+            }], metaKeySelection: [{
+                type: Input
+            }], compareSelectionBy: [{
+                type: Input
+            }], rowHover: [{
+                type: Input
+            }], loading: [{
+                type: Input
+            }], loadingIcon: [{
+                type: Input
+            }], showLoader: [{
+                type: Input
+            }], scrollable: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], virtualScroll: [{
+                type: Input
+            }], virtualScrollDelay: [{
+                type: Input
+            }], virtualRowHeight: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], frozenWidth: [{
+                type: Input
+            }], frozenColumns: [{
+                type: Input
+            }], resizableColumns: [{
+                type: Input
+            }], columnResizeMode: [{
+                type: Input
+            }], reorderableColumns: [{
+                type: Input
+            }], contextMenu: [{
+                type: Input
+            }], rowTrackBy: [{
+                type: Input
+            }], filters: [{
+                type: Input
+            }], globalFilterFields: [{
+                type: Input
+            }], filterDelay: [{
+                type: Input
+            }], filterMode: [{
+                type: Input
+            }], filterLocale: [{
+                type: Input
+            }], onFilter: [{
+                type: Output
+            }], onNodeExpand: [{
+                type: Output
+            }], onNodeCollapse: [{
+                type: Output
+            }], onPage: [{
+                type: Output
+            }], onSort: [{
+                type: Output
+            }], onLazyLoad: [{
+                type: Output
+            }], sortFunction: [{
+                type: Output
+            }], onColResize: [{
+                type: Output
+            }], onColReorder: [{
+                type: Output
+            }], onNodeSelect: [{
+                type: Output
+            }], onNodeUnselect: [{
+                type: Output
+            }], onContextMenuSelect: [{
+                type: Output
+            }], onHeaderCheckboxToggle: [{
+                type: Output
+            }], onEditInit: [{
+                type: Output
+            }], onEditComplete: [{
+                type: Output
+            }], onEditCancel: [{
+                type: Output
+            }], containerViewChild: [{
+                type: ViewChild,
+                args: ['container']
+            }], resizeHelperViewChild: [{
+                type: ViewChild,
+                args: ['resizeHelper']
+            }], reorderIndicatorUpViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorUp']
+            }], reorderIndicatorDownViewChild: [{
+                type: ViewChild,
+                args: ['reorderIndicatorDown']
+            }], tableViewChild: [{
+                type: ViewChild,
+                args: ['table']
+            }], scrollableViewChild: [{
+                type: ViewChild,
+                args: ['scrollableView']
+            }], scrollableFrozenViewChild: [{
+                type: ViewChild,
+                args: ['scrollableFrozenView']
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], value: [{
+                type: Input
+            }], totalRecords: [{
+                type: Input
+            }], sortField: [{
+                type: Input
+            }], sortOrder: [{
+                type: Input
+            }], multiSortMeta: [{
+                type: Input
+            }], selection: [{
+                type: Input
+            }] } });
+class TTBody {
+    constructor(tt, treeTableService, cd) {
+        this.tt = tt;
+        this.treeTableService = treeTableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            if (this.tt.virtualScroll) {
+                this.cd.detectChanges();
+            }
+        });
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTBody, selector: "[pTreeTableBody]", inputs: { columns: ["pTreeTableBody", "columns"], template: ["pTreeTableBodyTemplate", "template"], frozen: "frozen" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTBody, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[pTreeTableBody]',
+                    template: `
+        <ng-container *ngIf="!tt.virtualScroll">
+            <ng-template ngFor let-serializedNode let-rowIndex="index" [ngForOf]="tt.serializedValue" [ngForTrackBy]="tt.rowTrackBy">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.virtualScroll">
+            <ng-template cdkVirtualFor let-serializedNode let-rowIndex="index" [cdkVirtualForOf]="tt.serializedValue" [cdkVirtualForTrackBy]="tt.rowTrackBy" [cdkVirtualForTemplateCacheSize]="0">
+                <ng-container *ngIf="serializedNode.visible">
+                    <ng-container *ngTemplateOutlet="template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}"></ng-container>
+                </ng-container>
+            </ng-template>
+        </ng-container>
+        <ng-container *ngIf="tt.isEmpty()">
+            <ng-container *ngTemplateOutlet="tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["pTreeTableBody"]
+            }], template: [{
+                type: Input,
+                args: ["pTreeTableBodyTemplate"]
+            }], frozen: [{
+                type: Input
+            }] } });
+class TTScrollableView {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    get scrollHeight() {
+        return this._scrollHeight;
+    }
+    set scrollHeight(val) {
+        this._scrollHeight = val;
+        if (val != null && (val.includes('%') || val.includes('calc'))) {
+            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight="flex" instead.');
+        }
+        if (this.tt.virtualScroll && this.virtualScrollBody) {
+            this.virtualScrollBody.ngOnInit();
+        }
+    }
+    ngAfterViewInit() {
+        if (!this.frozen) {
+            if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {
+                DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');
+            }
+            let frozenView = this.el.nativeElement.previousElementSibling;
+            if (frozenView) {
+                if (this.tt.virtualScroll)
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-virtual-scrollable-body');
+                else
+                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');
+            }
+            let scrollBarWidth = DomHandler.calculateScrollbarWidth();
+            this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {
+                this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';
+            }
+        }
+        else {
+            if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {
+                this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';
+            }
+        }
+        this.bindEvents();
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+                this.headerScrollListener = this.onHeaderScroll.bind(this);
+                this.scrollHeaderBoxViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);
+            }
+            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+                this.footerScrollListener = this.onFooterScroll.bind(this);
+                this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);
+            }
+            if (!this.frozen) {
+                this.bodyScrollListener = this.onBodyScroll.bind(this);
+                if (this.tt.virtualScroll)
+                    this.virtualScrollBody.getElementRef().nativeElement.addEventListener('scroll', this.bodyScrollListener);
+                else
+                    this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);
+            }
+        });
+    }
+    unbindEvents() {
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);
+        }
+        if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {
+            this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+        if (this.virtualScrollBody && this.virtualScrollBody.getElementRef()) {
+            this.virtualScrollBody.getElementRef().nativeElement.removeEventListener('scroll', this.bodyScrollListener);
+        }
+    }
+    onHeaderScroll() {
+        const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onFooterScroll() {
+        const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;
+        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;
+        }
+        this.preventBodyScrollPropagation = true;
+    }
+    onBodyScroll(event) {
+        if (this.preventBodyScrollPropagation) {
+            this.preventBodyScrollPropagation = false;
+            return;
+        }
+        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {
+            this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {
+            this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';
+        }
+        if (this.frozenSiblingBody) {
+            this.frozenSiblingBody.scrollTop = event.target.scrollTop;
+        }
+    }
+    scrollToVirtualIndex(index) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollToIndex(index);
+        }
+    }
+    scrollTo(options) {
+        if (this.virtualScrollBody) {
+            this.virtualScrollBody.scrollTo(options);
+        }
+        else {
+            if (this.scrollBodyViewChild.nativeElement.scrollTo) {
+                this.scrollBodyViewChild.nativeElement.scrollTo(options);
+            }
+            else {
+                this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;
+                this.scrollBodyViewChild.nativeElement.scrollTop = options.top;
+            }
+        }
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+        this.frozenSiblingBody = null;
+    }
+}
+TTScrollableView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
+TTScrollableView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTScrollableView, selector: "[ttScrollableView]", inputs: { columns: ["ttScrollableView", "columns"], frozen: "frozen", scrollHeight: "scrollHeight" }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "scrollHeaderViewChild", first: true, predicate: ["scrollHeader"], descendants: true }, { propertyName: "scrollHeaderBoxViewChild", first: true, predicate: ["scrollHeaderBox"], descendants: true }, { propertyName: "scrollBodyViewChild", first: true, predicate: ["scrollBody"], descendants: true }, { propertyName: "scrollTableViewChild", first: true, predicate: ["scrollTable"], descendants: true }, { propertyName: "scrollLoadingTableViewChild", first: true, predicate: ["loadingTable"], descendants: true }, { propertyName: "scrollFooterViewChild", first: true, predicate: ["scrollFooter"], descendants: true }, { propertyName: "scrollFooterBoxViewChild", first: true, predicate: ["scrollFooterBox"], descendants: true }, { propertyName: "scrollableAlignerViewChild", first: true, predicate: ["scrollableAligner"], descendants: true }, { propertyName: "virtualScrollBody", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `, isInline: true, components: [{ type: TTBody, selector: "[pTreeTableBody]", inputs: ["pTreeTableBody", "pTreeTableBodyTemplate", "frozen"] }, { type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTScrollableView, decorators: [{
+            type: Component,
+            args: [{
+                    selector: '[ttScrollableView]',
+                    template: `
+        <div #scrollHeader class="p-treetable-scrollable-header">
+            <div #scrollHeaderBox class="p-treetable-scrollable-header-box">
+                <table class="p-treetable-scrollable-header-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <thead class="p-treetable-thead">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}"></ng-container>
+                    </thead>
+                </table>
+            </div>
+        </div>
+        <ng-container *ngIf="!tt.virtualScroll; else virtualScrollTemplate">
+            <div #scrollBody class="p-treetable-scrollable-body" [ngStyle]="{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </div>
+        </ng-container>
+        <ng-template #virtualScrollTemplate>
+            <cdk-virtual-scroll-viewport [itemSize]="tt.virtualRowHeight" [style.height]="tt.scrollHeight !== 'flex' ? scrollHeight : undefined"
+                    [minBufferPx]="tt.minBufferPx" [maxBufferPx]="tt.maxBufferPx" class="p-treetable-virtual-scrollable-body">
+                <table #scrollTable [class]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tbody class="p-treetable-tbody" [pTreeTableBody]="columns" [pTreeTableBodyTemplate]="frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate" [frozen]="frozen"></tbody>
+                </table>
+                <div #scrollableAligner style="background-color:transparent" *ngIf="frozen"></div>
+            </cdk-virtual-scroll-viewport>
+        </ng-template>
+        <div #scrollFooter *ngIf="tt.footerTemplate" class="p-treetable-scrollable-footer">
+            <div #scrollFooterBox class="p-treetable-scrollable-footer-box">
+                <table class="p-treetable-scrollable-footer-table" [ngClass]="tt.tableStyleClass" [ngStyle]="tt.tableStyle">
+                    <ng-container *ngTemplateOutlet="frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}"></ng-container>
+                    <tfoot class="p-treetable-tfoot">
+                        <ng-container *ngTemplateOutlet="frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}"></ng-container>
+                    </tfoot>
+                </table>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { columns: [{
+                type: Input,
+                args: ["ttScrollableView"]
+            }], frozen: [{
+                type: Input
+            }], scrollHeaderViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeader']
+            }], scrollHeaderBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollHeaderBox']
+            }], scrollBodyViewChild: [{
+                type: ViewChild,
+                args: ['scrollBody']
+            }], scrollTableViewChild: [{
+                type: ViewChild,
+                args: ['scrollTable']
+            }], scrollLoadingTableViewChild: [{
+                type: ViewChild,
+                args: ['loadingTable']
+            }], scrollFooterViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooter']
+            }], scrollFooterBoxViewChild: [{
+                type: ViewChild,
+                args: ['scrollFooterBox']
+            }], scrollableAlignerViewChild: [{
+                type: ViewChild,
+                args: ['scrollableAligner']
+            }], virtualScrollBody: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], scrollHeight: [{
+                type: Input
+            }] } });
+class TTSortableColumn {
+    constructor(tt) {
+        this.tt = tt;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+                this.updateSortState();
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.updateSortState();
+        }
+    }
+    updateSortState() {
+        this.sorted = this.tt.isSorted(this.field);
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.updateSortState();
+            this.tt.sort({
+                originalEvent: event,
+                field: this.field
+            });
+            DomHandler.clearSelection();
+        }
+    }
+    onEnterKey(event) {
+        this.onClick(event);
+    }
+    isEnabled() {
+        return this.ttSortableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Directive });
+TTSortableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSortableColumn, selector: "[ttSortableColumn]", inputs: { field: ["ttSortableColumn", "field"], ttSortableColumnDisabled: "ttSortableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown.enter": "onEnterKey($event)" }, properties: { "class.p-sortable-column": "isEnabled()", "class.p-highlight": "sorted", "attr.tabindex": "isEnabled() ? \"0\" : null", "attr.role": "\"columnheader\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSortableColumn]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-sortable-column]': 'isEnabled()',
+                        '[class.p-highlight]': 'sorted',
+                        '[attr.tabindex]': 'isEnabled() ? "0" : null',
+                        '[attr.role]': '"columnheader"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { field: [{
+                type: Input,
+                args: ["ttSortableColumn"]
+            }], ttSortableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown.enter', ['$event']]
+            }] } });
+class TTSortIcon {
+    constructor(tt, cd) {
+        this.tt = tt;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {
+            this.updateSortState();
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.updateSortState();
+    }
+    onClick(event) {
+        event.preventDefault();
+    }
+    updateSortState() {
+        if (this.tt.sortMode === 'single') {
+            this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;
+        }
+        else if (this.tt.sortMode === 'multiple') {
+            let sortMeta = this.tt.getSortMeta(this.field);
+            this.sortOrder = sortMeta ? sortMeta.order : 0;
+        }
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSortIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, deps: [{ token: TreeTable }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTSortIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTSortIcon, selector: "p-treeTableSortIcon", inputs: { field: "field", ariaLabelDesc: "ariaLabelDesc", ariaLabelAsc: "ariaLabelAsc" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSortIcon, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableSortIcon',
+                    template: `
+        <i class="p-sortable-column-icon pi pi-fw" [ngClass]="{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}"></i>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
+                type: Input
+            }], ariaLabelDesc: [{
+                type: Input
+            }], ariaLabelAsc: [{
+                type: Input
+            }] } });
+class TTResizableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');
+            this.resizer = document.createElement('span');
+            this.resizer.className = 'p-column-resizer';
+            this.el.nativeElement.appendChild(this.resizer);
+            this.zone.runOutsideAngular(() => {
+                this.resizerMouseDownListener = this.onMouseDown.bind(this);
+                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);
+            });
+        }
+    }
+    bindDocumentEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);
+            document.addEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);
+            document.addEventListener('mouseup', this.documentMouseUpListener);
+        });
+    }
+    unbindDocumentEvents() {
+        if (this.documentMouseMoveListener) {
+            document.removeEventListener('mousemove', this.documentMouseMoveListener);
+            this.documentMouseMoveListener = null;
+        }
+        if (this.documentMouseUpListener) {
+            document.removeEventListener('mouseup', this.documentMouseUpListener);
+            this.documentMouseUpListener = null;
+        }
+    }
+    onMouseDown(event) {
+        this.tt.onColumnResizeBegin(event);
+        this.bindDocumentEvents();
+    }
+    onDocumentMouseMove(event) {
+        this.tt.onColumnResize(event);
+    }
+    onDocumentMouseUp(event) {
+        this.tt.onColumnResizeEnd(event, this.el.nativeElement);
+        this.unbindDocumentEvents();
+    }
+    isEnabled() {
+        return this.ttResizableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.resizerMouseDownListener) {
+            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);
+        }
+        this.unbindDocumentEvents();
+    }
+}
+TTResizableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTResizableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTResizableColumn, selector: "[ttResizableColumn]", inputs: { ttResizableColumnDisabled: "ttResizableColumnDisabled" }, host: { classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTResizableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttResizableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttResizableColumnDisabled: [{
+                type: Input
+            }] } });
+class TTReorderableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            this.bindEvents();
+        }
+    }
+    bindEvents() {
+        this.zone.runOutsideAngular(() => {
+            this.mouseDownListener = this.onMouseDown.bind(this);
+            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);
+            this.dragStartListener = this.onDragStart.bind(this);
+            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);
+            this.dragOverListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);
+            this.dragEnterListener = this.onDragEnter.bind(this);
+            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);
+            this.dragLeaveListener = this.onDragLeave.bind(this);
+            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);
+        });
+    }
+    unbindEvents() {
+        if (this.mouseDownListener) {
+            document.removeEventListener('mousedown', this.mouseDownListener);
+            this.mouseDownListener = null;
+        }
+        if (this.dragOverListener) {
+            document.removeEventListener('dragover', this.dragOverListener);
+            this.dragOverListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragEnterListener) {
+            document.removeEventListener('dragenter', this.dragEnterListener);
+            this.dragEnterListener = null;
+        }
+        if (this.dragLeaveListener) {
+            document.removeEventListener('dragleave', this.dragLeaveListener);
+            this.dragLeaveListener = null;
+        }
+    }
+    onMouseDown(event) {
+        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))
+            this.el.nativeElement.draggable = false;
+        else
+            this.el.nativeElement.draggable = true;
+    }
+    onDragStart(event) {
+        this.tt.onColumnDragStart(event, this.el.nativeElement);
+    }
+    onDragOver(event) {
+        event.preventDefault();
+    }
+    onDragEnter(event) {
+        this.tt.onColumnDragEnter(event, this.el.nativeElement);
+    }
+    onDragLeave(event) {
+        this.tt.onColumnDragLeave(event);
+    }
+    onDrop(event) {
+        if (this.isEnabled()) {
+            this.tt.onColumnDrop(event, this.el.nativeElement);
+        }
+    }
+    isEnabled() {
+        return this.ttReorderableColumnDisabled !== true;
+    }
+    ngOnDestroy() {
+        this.unbindEvents();
+    }
+}
+TTReorderableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTReorderableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTReorderableColumn, selector: "[ttReorderableColumn]", inputs: { ttReorderableColumnDisabled: "ttReorderableColumnDisabled" }, host: { listeners: { "drop": "onDrop($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTReorderableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttReorderableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { ttReorderableColumnDisabled: [{
+                type: Input
+            }], onDrop: [{
+                type: HostListener,
+                args: ['drop', ['$event']]
+            }] } });
+class TTSelectableRow {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    onEnterKey(event) {
+        if (event.which === 13) {
+            this.onClick(event);
+        }
+    }
+    onTouchEnd(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowTouchEnd(event);
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRow, selector: "[ttSelectableRow]", inputs: { rowNode: ["ttSelectableRow", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onEnterKey($event)", "touchend": "onTouchEnd($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRow"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onEnterKey: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }], onTouchEnd: [{
+                type: HostListener,
+                args: ['touchend', ['$event']]
+            }] } });
+class TTSelectableRowDblClick {
+    constructor(tt, tableService) {
+        this.tt = tt;
+        this.tableService = tableService;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+                this.selected = this.tt.isSelected(this.rowNode.node);
+            });
+        }
+    }
+    ngOnInit() {
+        if (this.isEnabled()) {
+            this.selected = this.tt.isSelected(this.rowNode.node);
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+    }
+    isEnabled() {
+        return this.ttSelectableRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTSelectableRowDblClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, deps: [{ token: TreeTable }, { token: TreeTableService }], target: i0.ɵɵFactoryTarget.Directive });
+TTSelectableRowDblClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTSelectableRowDblClick, selector: "[ttSelectableRowDblClick]", inputs: { rowNode: ["ttSelectableRowDblClick", "rowNode"], ttSelectableRowDisabled: "ttSelectableRowDisabled" }, host: { listeners: { "dblclick": "onClick($event)" }, properties: { "class.p-highlight": "selected" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTSelectableRowDblClick, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttSelectableRowDblClick]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight]': 'selected'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttSelectableRowDblClick"]
+            }], ttSelectableRowDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['dblclick', ['$event']]
+            }] } });
+class TTContextMenuRow {
+    constructor(tt, tableService, el) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.el = el;
+        if (this.isEnabled()) {
+            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {
+                this.selected = this.tt.equals(this.rowNode.node, node);
+            });
+        }
+    }
+    onContextMenu(event) {
+        if (this.isEnabled()) {
+            this.tt.handleRowRightClick({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+            this.el.nativeElement.focus();
+            event.preventDefault();
+        }
+    }
+    isEnabled() {
+        return this.ttContextMenuRowDisabled !== true;
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTContextMenuRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
+TTContextMenuRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTContextMenuRow, selector: "[ttContextMenuRow]", inputs: { rowNode: ["ttContextMenuRow", "rowNode"], ttContextMenuRowDisabled: "ttContextMenuRowDisabled" }, host: { listeners: { "contextmenu": "onContextMenu($event)" }, properties: { "class.p-highlight-contextmenu": "selected", "attr.tabindex": "isEnabled() ? 0 : undefined" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTContextMenuRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttContextMenuRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[class.p-highlight-contextmenu]': 'selected',
+                        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ElementRef }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ["ttContextMenuRow"]
+            }], ttContextMenuRowDisabled: [{
+                type: Input
+            }], onContextMenu: [{
+                type: HostListener,
+                args: ['contextmenu', ['$event']]
+            }] } });
+class TTCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.tt.isSelected(this.rowNode.node);
+            this.cd.markForCheck();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.tt.isSelected(this.rowNode.node);
+    }
+    onClick(event) {
+        if (!this.disabled) {
+            this.tt.toggleNodeWithCheckbox({
+                originalEvent: event,
+                rowNode: this.rowNode
+            });
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.subscription) {
+            this.subscription.unsubscribe();
+        }
+    }
+}
+TTCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTCheckbox, selector: "p-treeTableCheckbox", inputs: { disabled: "disabled", rowNode: ["value", "rowNode"] }, host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event)">
+            <div class="p-hidden-accessible">
+                <input type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon pi" [ngClass]="{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], rowNode: [{
+                type: Input,
+                args: ["value"]
+            }], boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TTHeaderCheckbox {
+    constructor(tt, tableService, cd) {
+        this.tt = tt;
+        this.tableService = tableService;
+        this.cd = cd;
+        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {
+            this.checked = this.updateCheckedState();
+        });
+    }
+    ngOnInit() {
+        this.checked = this.updateCheckedState();
+    }
+    onClick(event, checked) {
+        if (this.tt.value && this.tt.value.length > 0) {
+            this.tt.toggleNodesWithCheckbox(event, !checked);
+        }
+        DomHandler.clearSelection();
+    }
+    onFocus() {
+        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    onBlur() {
+        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');
+    }
+    ngOnDestroy() {
+        if (this.selectionChangeSubscription) {
+            this.selectionChangeSubscription.unsubscribe();
+        }
+        if (this.valueChangeSubscription) {
+            this.valueChangeSubscription.unsubscribe();
+        }
+    }
+    updateCheckedState() {
+        this.cd.markForCheck();
+        let checked;
+        const data = this.tt.filteredNodes || this.tt.value;
+        if (data) {
+            for (let node of data) {
+                if (this.tt.isSelected(node)) {
+                    checked = true;
+                }
+                else {
+                    checked = false;
+                    break;
+                }
+            }
+        }
+        else {
+            checked = false;
+        }
+        return checked;
+    }
+}
+TTHeaderCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, deps: [{ token: TreeTable }, { token: TreeTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TTHeaderCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox", host: { classAttribute: "p-element" }, viewQueries: [{ propertyName: "boxViewChild", first: true, predicate: ["box"], descendants: true }], ngImport: i0, template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `, isInline: true, directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTHeaderCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableHeaderCheckbox',
+                    template: `
+        <div class="p-checkbox p-component" (click)="onClick($event, cb.checked)">
+            <div class="p-hidden-accessible">
+                <input #cb type="checkbox" [checked]="checked" (focus)="onFocus()" (blur)="onBlur()" [disabled]="!tt.value||tt.value.length === 0">
+            </div>
+            <div #box [ngClass]="{'p-checkbox-box':true,
+                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}"  role="checkbox" [attr.aria-checked]="checked">
+                <span class="p-checkbox-icon" [ngClass]="{'pi pi-check':checked}"></span>
+            </div>
+        </div>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TreeTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { boxViewChild: [{
+                type: ViewChild,
+                args: ['box']
+            }] } });
+class TTEditableColumn {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    ngAfterViewInit() {
+        if (this.isEnabled()) {
+            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');
+        }
+    }
+    onClick(event) {
+        if (this.isEnabled()) {
+            this.tt.editingCellClick = true;
+            if (this.tt.editingCell) {
+                if (this.tt.editingCell !== this.el.nativeElement) {
+                    if (!this.tt.isEditingCellValid()) {
+                        return;
+                    }
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.openCell();
+                }
+            }
+            else {
+                this.openCell();
+            }
+        }
+    }
+    openCell() {
+        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);
+        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');
+        this.tt.onEditInit.emit({ field: this.field, data: this.data });
+        this.tt.editingCellClick = true;
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');
+                if (focusable) {
+                    focusable.focus();
+                }
+            }, 50);
+        });
+    }
+    closeEditingCell() {
+        DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');
+        this.tt.editingCell = null;
+        this.tt.unbindDocumentEditListener();
+    }
+    onKeyDown(event) {
+        if (this.isEnabled()) {
+            //enter
+            if (event.keyCode == 13) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //escape
+            else if (event.keyCode == 27) {
+                if (this.tt.isEditingCellValid()) {
+                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');
+                    this.closeEditingCell();
+                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });
+                }
+                event.preventDefault();
+            }
+            //tab
+            else if (event.keyCode == 9) {
+                this.tt.onEditComplete.emit({ field: this.field, data: this.data });
+                if (event.shiftKey)
+                    this.moveToPreviousCell(event);
+                else
+                    this.moveToNextCell(event);
+            }
+        }
+    }
+    findCell(element) {
+        if (element) {
+            let cell = element;
+            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {
+                cell = cell.parentElement;
+            }
+            return cell;
+        }
+        else {
+            return null;
+        }
+    }
+    moveToPreviousCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findPreviousEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    moveToNextCell(event) {
+        let currentCell = this.findCell(event.target);
+        let row = currentCell.parentElement;
+        let targetCell = this.findNextEditableColumn(currentCell);
+        if (targetCell) {
+            DomHandler.invokeElementMethod(targetCell, 'click');
+            event.preventDefault();
+        }
+    }
+    findPreviousEditableColumn(cell) {
+        let prevCell = cell.previousElementSibling;
+        if (!prevCell) {
+            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;
+            if (previousRow) {
+                prevCell = previousRow.lastElementChild;
+            }
+        }
+        if (prevCell) {
+            if (DomHandler.hasClass(prevCell, 'p-editable-column'))
+                return prevCell;
+            else
+                return this.findPreviousEditableColumn(prevCell);
+        }
+        else {
+            return null;
+        }
+    }
+    findNextEditableColumn(cell) {
+        let nextCell = cell.nextElementSibling;
+        if (!nextCell) {
+            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;
+            if (nextRow) {
+                nextCell = nextRow.firstElementChild;
+            }
+        }
+        if (nextCell) {
+            if (DomHandler.hasClass(nextCell, 'p-editable-column'))
+                return nextCell;
+            else
+                return this.findNextEditableColumn(nextCell);
+        }
+        else {
+            return null;
+        }
+    }
+    isEnabled() {
+        return this.ttEditableColumnDisabled !== true;
+    }
+}
+TTEditableColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTEditableColumn.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTEditableColumn, selector: "[ttEditableColumn]", inputs: { data: ["ttEditableColumn", "data"], field: ["ttEditableColumnField", "field"], ttEditableColumnDisabled: "ttEditableColumnDisabled" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTEditableColumn, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttEditableColumn]',
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
+                type: Input,
+                args: ["ttEditableColumn"]
+            }], field: [{
+                type: Input,
+                args: ["ttEditableColumnField"]
+            }], ttEditableColumnDisabled: [{
+                type: Input
+            }], onClick: [{
+                type: HostListener,
+                args: ['click', ['$event']]
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+class TreeTableCellEditor {
+    constructor(tt, editableColumn) {
+        this.tt = tt;
+        this.editableColumn = editableColumn;
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'input':
+                    this.inputTemplate = item.template;
+                    break;
+                case 'output':
+                    this.outputTemplate = item.template;
+                    break;
+            }
+        });
+    }
+}
+TreeTableCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, deps: [{ token: TreeTable }, { token: TTEditableColumn }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableCellEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableCellEditor, selector: "p-treeTableCellEditor", host: { classAttribute: "p-element" }, queries: [{ propertyName: "templates", predicate: PrimeTemplate }], ngImport: i0, template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableCellEditor, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableCellEditor',
+                    template: `
+        <ng-container *ngIf="tt.editingCell === editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="inputTemplate"></ng-container>
+        </ng-container>
+        <ng-container *ngIf="!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement">
+            <ng-container *ngTemplateOutlet="outputTemplate"></ng-container>
+        </ng-container>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: TTEditableColumn }]; }, propDecorators: { templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }] } });
+class TTRow {
+    constructor(tt, el, zone) {
+        this.tt = tt;
+        this.el = el;
+        this.zone = zone;
+    }
+    onKeyDown(event) {
+        switch (event.which) {
+            //down arrow
+            case 40:
+                let nextRow = this.el.nativeElement.nextElementSibling;
+                if (nextRow) {
+                    nextRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //down arrow
+            case 38:
+                let prevRow = this.el.nativeElement.previousElementSibling;
+                if (prevRow) {
+                    prevRow.focus();
+                }
+                event.preventDefault();
+                break;
+            //left arrow
+            case 37:
+                if (this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = false;
+                    this.tt.onNodeCollapse.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+            //right arrow
+            case 39:
+                if (!this.rowNode.node.expanded) {
+                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);
+                    this.rowNode.node.expanded = true;
+                    this.tt.onNodeExpand.emit({
+                        originalEvent: event,
+                        node: this.rowNode.node
+                    });
+                    this.tt.updateSerializedValue();
+                    this.tt.tableService.onUIUpdate(this.tt.value);
+                    this.restoreFocus();
+                }
+                break;
+        }
+    }
+    restoreFocus() {
+        this.zone.runOutsideAngular(() => {
+            setTimeout(() => {
+                let row = DomHandler.findSingle(this.tt.containerViewChild.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];
+                if (row) {
+                    row.focus();
+                }
+            }, 25);
+        });
+    }
+}
+TTRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, deps: [{ token: TreeTable }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
+TTRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: TTRow, selector: "[ttRow]", inputs: { rowNode: ["ttRow", "rowNode"] }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "\"0\"" }, classAttribute: "p-element" }, ngImport: i0 });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TTRow, decorators: [{
+            type: Directive,
+            args: [{
+                    selector: '[ttRow]',
+                    host: {
+                        'class': 'p-element',
+                        '[attr.tabindex]': '"0"'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { rowNode: [{
+                type: Input,
+                args: ['ttRow']
+            }], onKeyDown: [{
+                type: HostListener,
+                args: ['keydown', ['$event']]
+            }] } });
+class TreeTableToggler {
+    constructor(tt) {
+        this.tt = tt;
+    }
+    onClick(event) {
+        this.rowNode.node.expanded = !this.rowNode.node.expanded;
+        if (this.rowNode.node.expanded) {
+            this.tt.onNodeExpand.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        else {
+            this.tt.onNodeCollapse.emit({
+                originalEvent: event,
+                node: this.rowNode.node
+            });
+        }
+        this.tt.updateSerializedValue();
+        this.tt.tableService.onUIUpdate(this.tt.value);
+        event.preventDefault();
+    }
+}
+TreeTableToggler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, deps: [{ token: TreeTable }], target: i0.ɵɵFactoryTarget.Component });
+TreeTableToggler.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TreeTableToggler, selector: "p-treeTableToggler", inputs: { rowNode: "rowNode" }, host: { classAttribute: "p-element" }, ngImport: i0, template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `, isInline: true, directives: [{ type: i5.Ripple, selector: "[pRipple]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableToggler, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-treeTableToggler',
+                    template: `
+        <button type="button" class="p-treetable-toggler p-link" (click)="onClick($event)" tabindex="-1" pRipple
+            [style.visibility]="rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'" [style.marginLeft]="rowNode.level * 16 + 'px'">
+            <i [ngClass]="rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'"></i>
+        </button>
+    `,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: TreeTable }]; }, propDecorators: { rowNode: [{
+                type: Input
+            }] } });
+class TreeTableModule {
+}
+TreeTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TreeTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor], imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule], exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule] });
+TreeTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, imports: [[CommonModule, PaginatorModule, ScrollingModule, RippleModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TreeTableModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, PaginatorModule, ScrollingModule, RippleModule],
+                    exports: [TreeTable, SharedModule, TreeTableToggler, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor, ScrollingModule],
+                    declarations: [TreeTable, TreeTableToggler, TTScrollableView, TTBody, TTSortableColumn, TTSortIcon, TTResizableColumn, TTRow, TTReorderableColumn, TTSelectableRow, TTSelectableRowDblClick, TTContextMenuRow, TTCheckbox, TTHeaderCheckbox, TTEditableColumn, TreeTableCellEditor]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TTBody, TTCheckbox, TTContextMenuRow, TTEditableColumn, TTHeaderCheckbox, TTReorderableColumn, TTResizableColumn, TTRow, TTScrollableView, TTSelectableRow, TTSelectableRowDblClick, TTSortIcon, TTSortableColumn, TreeTable, TreeTableCellEditor, TreeTableModule, TreeTableService, TreeTableToggler };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-treetable.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-treetable.mjs","sources":["../../src/app/components/treetable/treetable.ts","../../src/app/components/treetable/primeng-treetable.ts"],"sourcesContent":["import { NgModule, AfterContentInit, OnInit, OnDestroy, HostListener, Injectable, Directive, Component, Input, Output, EventEmitter, ContentChildren, TemplateRef, QueryList, ElementRef, NgZone, ViewChild, AfterViewInit, AfterViewChecked, OnChanges, SimpleChanges, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeNode } from 'primeng/api';\nimport { Subject, Subscription } from 'rxjs';\nimport { DomHandler } from 'primeng/dom';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { PrimeTemplate, SharedModule, FilterService } from 'primeng/api';\nimport { SortMeta } from 'primeng/api';\nimport { BlockableUI } from 'primeng/api';\nimport { FilterMetadata } from 'primeng/api';\nimport { ObjectUtils } from 'primeng/utils';\nimport { RippleModule } from 'primeng/ripple';\nimport { ScrollingModule, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\n\n@Injectable()\nexport class TreeTableService {\n\n    private sortSource = new Subject<SortMeta|SortMeta[]>();\n    private selectionSource = new Subject();\n    private contextMenuSource = new Subject<any>();\n    private uiUpdateSource = new Subject<any>();\n    private totalRecordsSource = new Subject<any>();\n\n    sortSource$ = this.sortSource.asObservable();\n    selectionSource$ = this.selectionSource.asObservable();\n    contextMenuSource$ = this.contextMenuSource.asObservable();\n    uiUpdateSource$ = this.uiUpdateSource.asObservable();\n    totalRecordsSource$ = this.totalRecordsSource.asObservable();\n\n    onSort(sortMeta: SortMeta|SortMeta[]) {\n        this.sortSource.next(sortMeta);\n    }\n\n    onSelectionChange() {\n        this.selectionSource.next(null);\n    }\n\n    onContextMenu(node: any) {\n        this.contextMenuSource.next(node);\n    }\n\n    onUIUpdate(value: any) {\n        this.uiUpdateSource.next(value);\n    }\n\n    onTotalRecordsChange(value: number) {\n        this.totalRecordsSource.next(value);\n    }\n}\n\n@Component({\n    selector: 'p-treeTable',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\" data-scrollselectors=\".p-treetable-scrollable-body\"\n                [ngClass]=\"{'p-treetable p-component': true,\n                'p-treetable-hoverable-rows': (rowHover||(selectionMode === 'single' || selectionMode === 'multiple')),\n                'p-treetable-auto-layout': autoLayout,\n                'p-treetable-resizable': resizableColumns,\n                'p-treetable-resizable-fit': (resizableColumns && columnResizeMode === 'fit'),\n                'p-treetable-flex-scrollable': (scrollable && scrollHeight === 'flex')}\">\n            <div class=\"p-treetable-loading\" *ngIf=\"loading && showLoader\">\n                <div class=\"p-treetable-loading-overlay p-component-overlay\">\n                    <i [class]=\"'p-treetable-loading-icon pi-spin ' + loadingIcon\"></i>\n                </div>\n            </div>\n            <div *ngIf=\"captionTemplate\" class=\"p-treetable-header\">\n                <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n            </div>\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-top\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'top' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n\n            <div class=\"p-treetable-wrapper\" *ngIf=\"!scrollable\">\n                <table #table [ngClass]=\"tableStyleClass\" [ngStyle]=\"tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-treetable-thead\">\n                        <ng-container *ngTemplateOutlet=\"headerTemplate; context: {$implicit: columns}\"></ng-container>\n                    </thead>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"bodyTemplate\"></tbody>\n                    <tfoot class=\"p-treetable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n            </div>\n\n            <div class=\"p-treetable-scrollable-wrapper\" *ngIf=\"scrollable\">\n               <div class=\"p-treetable-scrollable-view p-treetable-frozen-view\" *ngIf=\"frozenColumns||frozenBodyTemplate\" #scrollableFrozenView [ttScrollableView]=\"frozenColumns\" [frozen]=\"true\" [ngStyle]=\"{width: frozenWidth}\" [scrollHeight]=\"scrollHeight\"></div>\n               <div class=\"p-treetable-scrollable-view\" #scrollableView [ttScrollableView]=\"columns\" [frozen]=\"false\" [scrollHeight]=\"scrollHeight\" [ngStyle]=\"{left: frozenWidth, width: 'calc(100% - '+frozenWidth+')'}\"></div>\n            </div>\n\n            <p-paginator [rows]=\"rows\" [first]=\"first\" [totalRecords]=\"totalRecords\" [pageLinkSize]=\"pageLinks\" styleClass=\"p-paginator-bottom\" [alwaysShow]=\"alwaysShowPaginator\"\n                (onPageChange)=\"onPageChange($event)\" [rowsPerPageOptions]=\"rowsPerPageOptions\" *ngIf=\"paginator && (paginatorPosition === 'bottom' || paginatorPosition =='both')\"\n                [templateLeft]=\"paginatorLeftTemplate\" [templateRight]=\"paginatorRightTemplate\" [dropdownAppendTo]=\"paginatorDropdownAppendTo\"\n                [currentPageReportTemplate]=\"currentPageReportTemplate\" [showFirstLastIcon]=\"showFirstLastIcon\" [dropdownItemTemplate]=\"paginatorDropdownItemTemplate\" [showCurrentPageReport]=\"showCurrentPageReport\" [showJumpToPageDropdown]=\"showJumpToPageDropdown\" [showPageLinks]=\"showPageLinks\"></p-paginator>\n            <div *ngIf=\"summaryTemplate\" class=\"p-treetable-footer\">\n                <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n            </div>\n\n            <div #resizeHelper class=\"p-column-resizer-helper\" style=\"display:none\" *ngIf=\"resizableColumns\"></div>\n\n            <span #reorderIndicatorUp class=\"pi pi-arrow-down p-treetable-reorder-indicator-up\" *ngIf=\"reorderableColumns\"></span>\n            <span #reorderIndicatorDown class=\"pi pi-arrow-up p-treetable-reorder-indicator-down\" *ngIf=\"reorderableColumns\"></span>\n        </div>\n    `,\n    providers: [TreeTableService],\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./treetable.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTable implements AfterContentInit, OnInit, OnDestroy, BlockableUI, OnChanges {\n\n    @Input() columns: any[];\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() tableStyle: any;\n\n    @Input() tableStyleClass: string;\n\n    @Input() autoLayout: boolean;\n\n    @Input() lazy: boolean = false;\n\n    @Input() lazyLoadOnInit: boolean = true;\n\n    @Input() paginator: boolean;\n\n    @Input() rows: number;\n\n    @Input() first: number = 0;\n\n    @Input() pageLinks: number = 5;\n\n    @Input() rowsPerPageOptions: any[];\n\n    @Input() alwaysShowPaginator: boolean = true;\n\n    @Input() paginatorPosition: string = 'bottom';\n\n    @Input() paginatorDropdownAppendTo: any;\n\n    @Input() currentPageReportTemplate: string = '{currentPage} of {totalPages}';\n\n    @Input() showCurrentPageReport: boolean;\n\n    @Input() showJumpToPageDropdown: boolean;\n\n    @Input() showFirstLastIcon: boolean = true;\n\n    @Input() showPageLinks: boolean = true;\n\n    @Input() defaultSortOrder: number = 1;\n\n    @Input() sortMode: string = 'single';\n\n    @Input() resetPageOnSort: boolean = true;\n\n    @Input() customSort: boolean;\n\n    @Input() selectionMode: string;\n\n    @Output() selectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelection: any;\n\n    @Output() contextMenuSelectionChange: EventEmitter<any> = new EventEmitter();\n\n    @Input() contextMenuSelectionMode: string = \"separate\";\n\n    @Input() dataKey: string;\n\n    @Input() metaKeySelection: boolean;\n\n    @Input() compareSelectionBy: string = 'deepEquals';\n\n    @Input() rowHover: boolean;\n\n    @Input() loading: boolean;\n\n    @Input() loadingIcon: string = 'pi pi-spinner';\n\n    @Input() showLoader: boolean = true;\n\n    @Input() scrollable: boolean;\n\n    @Input() scrollHeight: string;\n\n    @Input() virtualScroll: boolean;\n\n    @Input() virtualScrollDelay: number = 150;\n\n    @Input() virtualRowHeight: number = 28;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() frozenWidth: string;\n\n    @Input() frozenColumns: any[];\n\n    @Input() resizableColumns: boolean;\n\n    @Input() columnResizeMode: string = 'fit';\n\n    @Input() reorderableColumns: boolean;\n\n    @Input() contextMenu: any;\n\n    @Input() rowTrackBy: Function = (index: number, item: any) => item;\n\n    @Input() filters: { [s: string]: FilterMetadata; } = {};\n\n    @Input() globalFilterFields: string[];\n\n    @Input() filterDelay: number = 300;\n\n    @Input() filterMode: string = 'lenient';\n\n    @Input() filterLocale: string;\n\n    @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeExpand: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeCollapse: EventEmitter<any> = new EventEmitter();\n\n    @Output() onPage: EventEmitter<any> = new EventEmitter();\n\n    @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    @Output() sortFunction: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColResize: EventEmitter<any> = new EventEmitter();\n\n    @Output() onColReorder: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onContextMenuSelect: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHeaderCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditInit: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditComplete: EventEmitter<any> = new EventEmitter();\n\n    @Output() onEditCancel: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('resizeHelper') resizeHelperViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorUp') reorderIndicatorUpViewChild: ElementRef;\n\n    @ViewChild('reorderIndicatorDown') reorderIndicatorDownViewChild: ElementRef;\n\n    @ViewChild('table') tableViewChild: ElementRef;\n\n    @ViewChild('scrollableView') scrollableViewChild;\n\n    @ViewChild('scrollableFrozenView') scrollableFrozenViewChild;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    _value: TreeNode[] = [];\n\n    serializedValue: any[];\n\n    _totalRecords: number = 0;\n\n    _multiSortMeta: SortMeta[];\n\n    _sortField: string;\n\n    _sortOrder: number = 1;\n\n    filteredNodes: any[];\n\n    filterTimeout: any;\n\n    colGroupTemplate: TemplateRef<any>;\n\n    captionTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    bodyTemplate: TemplateRef<any>;\n\n    loadingBodyTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    summaryTemplate: TemplateRef<any>;\n\n    emptyMessageTemplate: TemplateRef<any>;\n\n    paginatorLeftTemplate: TemplateRef<any>;\n\n    paginatorRightTemplate: TemplateRef<any>;\n\n    paginatorDropdownItemTemplate: TemplateRef<any>;\n\n    frozenHeaderTemplate: TemplateRef<any>;\n\n    frozenBodyTemplate: TemplateRef<any>;\n\n    frozenFooterTemplate: TemplateRef<any>;\n\n    frozenColGroupTemplate: TemplateRef<any>;\n\n    lastResizerHelperX: number;\n\n    reorderIconWidth: number;\n\n    reorderIconHeight: number;\n\n    draggedColumn: any;\n\n    dropPosition: number;\n\n    preventSelectionSetterPropagation: boolean;\n\n    _selection: any;\n\n    selectionKeys: any = {};\n\n    rowTouched: boolean;\n\n    editingCell: Element;\n\n    editingCellData: any;\n\n    editingCellField: any;\n\n    editingCellClick: boolean;\n\n    documentEditListener: any;\n\n    initialized: boolean;\n\n    toggleRowIndex: number;\n\n    ngOnInit() {\n        if (this.lazy && this.lazyLoadOnInit) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        this.initialized = true;\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'caption':\n                    this.captionTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'body':\n                    this.bodyTemplate = item.template;\n                break;\n\n                case 'loadingbody':\n                    this.loadingBodyTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                case 'summary':\n                    this.summaryTemplate = item.template;\n                break;\n\n                case 'colgroup':\n                    this.colGroupTemplate = item.template;\n                break;\n\n                case 'emptymessage':\n                    this.emptyMessageTemplate = item.template;\n                break;\n\n                case 'paginatorleft':\n                    this.paginatorLeftTemplate = item.template;\n                break;\n\n                case 'paginatorright':\n                    this.paginatorRightTemplate = item.template;\n                break;\n\n                case 'paginatordropdownitem':\n                    this.paginatorDropdownItemTemplate = item.template;\n                break;\n\n                case 'frozenheader':\n                    this.frozenHeaderTemplate = item.template;\n                break;\n\n                case 'frozenbody':\n                    this.frozenBodyTemplate = item.template;\n                break;\n\n                case 'frozenfooter':\n                    this.frozenFooterTemplate = item.template;\n                break;\n\n                case 'frozencolgroup':\n                    this.frozenColGroupTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    constructor(public el: ElementRef, public zone: NgZone, public tableService: TreeTableService, public filterService: FilterService) {}\n\n    ngOnChanges(simpleChange: SimpleChanges) {\n        if (simpleChange.value) {\n            this._value = simpleChange.value.currentValue;\n\n            if (!this.lazy) {\n                this.totalRecords = (this._value ? this._value.length : 0);\n\n                if (this.sortMode == 'single' && this.sortField)\n                    this.sortSingle();\n                else if (this.sortMode == 'multiple' && this.multiSortMeta)\n                    this.sortMultiple();\n                else if (this.hasFilter())       //sort already filters\n                    this._filter();\n            }\n\n            this.updateSerializedValue();\n            this.tableService.onUIUpdate(this.value);\n        }\n\n        if (simpleChange.sortField) {\n            this._sortField = simpleChange.sortField.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.sortOrder) {\n            this._sortOrder = simpleChange.sortOrder.currentValue;\n\n            //avoid triggering lazy load prior to lazy initialization at onInit\n            if ( !this.lazy || this.initialized ) {\n                if (this.sortMode === 'single') {\n                    this.sortSingle();\n                }\n            }\n        }\n\n        if (simpleChange.multiSortMeta) {\n            this._multiSortMeta = simpleChange.multiSortMeta.currentValue;\n            if (this.sortMode === 'multiple') {\n                this.sortMultiple();\n            }\n        }\n\n        if (simpleChange.selection) {\n            this._selection = simpleChange.selection.currentValue;\n\n            if (!this.preventSelectionSetterPropagation) {\n                this.updateSelectionKeys();\n                this.tableService.onSelectionChange();\n            }\n            this.preventSelectionSetterPropagation = false;\n        }\n    }\n\n    @Input() get value(): any[] {\n        return this._value;\n    }\n    set value(val: any[]) {\n        this._value = val;\n    }\n\n    updateSerializedValue() {\n        this.serializedValue = [];\n\n        if (this.paginator)\n            this.serializePageNodes();\n        else\n            this.serializeNodes(null, this.filteredNodes||this.value, 0, true);\n    }\n\n    serializeNodes(parent, nodes, level, visible) {\n        if (nodes && nodes.length) {\n            for(let node of nodes) {\n                node.parent = parent;\n                const rowNode = {\n                    node: node,\n                    parent: parent,\n                    level: level,\n                    visible: visible && (parent ? parent.expanded : true)\n                };\n                this.serializedValue.push(rowNode);\n\n                if (rowNode.visible && node.expanded) {\n                    this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n                }\n            }\n        }\n    }\n\n    serializePageNodes() {\n        let data = this.filteredNodes || this.value;\n        this.serializedValue = [];\n        if (data && data.length) {\n            const first = this.lazy ? 0 : this.first;\n\n            for(let i = first; i < (first + this.rows); i++) {\n                let node = data[i];\n                if (node) {\n                    this.serializedValue.push({\n                        node: node,\n                        parent: null,\n                        level: 0,\n                        visible: true\n                    });\n\n                    this.serializeNodes(node, node.children, 1, true);\n                }\n            }\n        }\n    }\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        this.tableService.onTotalRecordsChange(this._totalRecords);\n    }\n\n    @Input() get sortField(): string {\n        return this._sortField;\n    }\n\n    set sortField(val: string) {\n        this._sortField = val;\n    }\n\n    @Input() get sortOrder(): number {\n        return this._sortOrder;\n    }\n    set sortOrder(val: number) {\n        this._sortOrder = val;\n    }\n\n    @Input() get multiSortMeta(): SortMeta[] {\n        return this._multiSortMeta;\n    }\n\n    set multiSortMeta(val: SortMeta[]) {\n        this._multiSortMeta = val;\n    }\n\n    @Input() get selection(): any {\n        return this._selection;\n    }\n\n    set selection(val: any) {\n        this._selection = val;\n    }\n\n    updateSelectionKeys() {\n        if (this.dataKey && this._selection) {\n            this.selectionKeys = {};\n            if (Array.isArray(this._selection)) {\n                for(let node of this._selection) {\n                    this.selectionKeys[String(ObjectUtils.resolveFieldData(node.data, this.dataKey))] = 1;\n                }\n            }\n            else {\n                this.selectionKeys[String(ObjectUtils.resolveFieldData(this._selection.data, this.dataKey))] = 1;\n            }\n        }\n    }\n\n    onPageChange(event) {\n        this.first = event.first;\n        this.rows = event.rows;\n\n        if (this.lazy)\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        else\n            this.serializePageNodes();\n\n        this.onPage.emit({\n            first: this.first,\n            rows: this.rows\n        });\n\n        this.tableService.onUIUpdate(this.value);\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    sort(event) {\n        let originalEvent = event.originalEvent;\n\n        if (this.sortMode === 'single') {\n            this._sortOrder = (this.sortField === event.field) ? this.sortOrder * -1 : this.defaultSortOrder;\n            this._sortField = event.field;\n            this.sortSingle();\n\n            if (this.resetPageOnSort && this.scrollable) {\n                this.resetScrollTop();\n            }\n        }\n        if (this.sortMode === 'multiple') {\n            let metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n            let sortMeta = this.getSortMeta(event.field);\n\n            if (sortMeta) {\n                if (!metaKey) {\n                    this._multiSortMeta = [{ field: event.field, order: sortMeta.order * -1 }]\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                }\n                else {\n                    sortMeta.order = sortMeta.order * -1;\n                }\n            }\n            else {\n                if (!metaKey || !this.multiSortMeta) {\n                    this._multiSortMeta = [];\n\n                    if (this.resetPageOnSort && this.scrollable) {\n                        this.resetScrollTop();\n                    }\n                }\n                this.multiSortMeta.push({ field: event.field, order: this.defaultSortOrder });\n            }\n\n            this.sortMultiple();\n        }\n    }\n\n    sortSingle() {\n        if (this.sortField && this.sortOrder) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n                this.sortNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            let sortMeta: SortMeta = {\n                field: this.sortField,\n                order: this.sortOrder\n            };\n\n            this.onSort.emit(sortMeta);\n            this.tableService.onSort(sortMeta);\n            this.updateSerializedValue();\n        }\n    }\n\n    sortNodes(nodes) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: nodes,\n                mode: this.sortMode,\n                field: this.sortField,\n                order: this.sortOrder\n            });\n        }\n        else {\n            nodes.sort((node1, node2) => {\n                let value1 = ObjectUtils.resolveFieldData(node1.data, this.sortField);\n                let value2 = ObjectUtils.resolveFieldData(node2.data, this.sortField);\n                let result = null;\n\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, {numeric: true});\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n\n                return (this.sortOrder * result);\n            });\n        }\n\n        for(let node of nodes) {\n            this.sortNodes(node.children);\n        }\n    }\n\n    sortMultiple() {\n        if (this.multiSortMeta) {\n            if (this.lazy) {\n                this.onLazyLoad.emit(this.createLazyLoadMetadata());\n            }\n            else if (this.value) {\n               this.sortMultipleNodes(this.value);\n\n                if (this.hasFilter()) {\n                    this._filter();\n                }\n            }\n\n            this.onSort.emit({\n                multisortmeta: this.multiSortMeta\n            });\n            this.updateSerializedValue();\n            this.tableService.onSort(this.multiSortMeta);\n        }\n    }\n\n    sortMultipleNodes(nodes) {\n        if (!nodes || nodes.length === 0) {\n            return;\n        }\n\n        if (this.customSort) {\n            this.sortFunction.emit({\n                data: this.value,\n                mode: this.sortMode,\n                multiSortMeta: this.multiSortMeta\n            });\n        }\n        else {\n            nodes.sort((node1, node2) => {\n                return this.multisortField(node1, node2, this.multiSortMeta, 0);\n            });\n        }\n\n        for(let node of nodes) {\n            this.sortMultipleNodes(node.children);\n        }\n    }\n\n    multisortField(node1, node2, multiSortMeta, index) {\n        let value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n        let value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n        let result = null;\n\n        if (value1 == null && value2 != null)\n            result = -1;\n        else if (value1 != null && value2 == null)\n            result = 1;\n        else if (value1 == null && value2 == null)\n            result = 0;\n        if (typeof value1 == 'string' || value1 instanceof String) {\n            if (value1.localeCompare && (value1 != value2)) {\n                return (multiSortMeta[index].order * value1.localeCompare(value2, undefined, {numeric: true}));\n            }\n        }\n        else {\n            result = (value1 < value2) ? -1 : 1;\n        }\n\n        if (value1 == value2) {\n            return (multiSortMeta.length - 1) > (index) ? (this.multisortField(node1, node2, multiSortMeta, index + 1)) : 0;\n        }\n\n        return (multiSortMeta[index].order * result);\n    }\n\n    getSortMeta(field: string) {\n        if (this.multiSortMeta && this.multiSortMeta.length) {\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                if (this.multiSortMeta[i].field === field) {\n                    return this.multiSortMeta[i];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    isSorted(field: string) {\n        if (this.sortMode === 'single') {\n            return (this.sortField && this.sortField === field);\n        }\n        else if (this.sortMode === 'multiple') {\n            let sorted = false;\n            if (this.multiSortMeta) {\n                for(let i = 0; i < this.multiSortMeta.length; i++) {\n                    if (this.multiSortMeta[i].field == field) {\n                        sorted = true;\n                        break;\n                    }\n                }\n            }\n            return sorted;\n        }\n    }\n\n    createLazyLoadMetadata(): any {\n        return {\n            first: this.first,\n            rows: this.rows,\n            sortField: this.sortField,\n            sortOrder: this.sortOrder,\n            filters: this.filters,\n            globalFilter: this.filters && this.filters['global'] ? this.filters['global'].value : null,\n            multiSortMeta: this.multiSortMeta\n        };\n    }\n\n    public resetScrollTop() {\n        if (this.virtualScroll)\n            this.scrollToVirtualIndex(0);\n        else\n            this.scrollTo({top: 0});\n    }\n\n    public scrollToVirtualIndex(index: number) {\n        if (this.scrollableViewChild) {\n            this.scrollableViewChild.scrollToVirtualIndex(index);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            this.scrollableFrozenViewChild.scrollToVirtualIndex(index);\n        }\n    }\n\n    public scrollTo(options) {\n        if (this.scrollableViewChild) {\n            this.scrollableViewChild.scrollTo(options);\n        }\n\n        if (this.scrollableFrozenViewChild) {\n            this.scrollableFrozenViewChild.scrollTo(options);\n        }\n    }\n\n    isEmpty() {\n        let data = this.filteredNodes||this.value;\n        return data == null || data.length == 0;\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    onColumnResizeBegin(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        this.lastResizerHelperX = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft);\n        event.preventDefault();\n    }\n\n    onColumnResize(event) {\n        let containerLeft = DomHandler.getOffset(this.containerViewChild.nativeElement).left;\n        DomHandler.addClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n        this.resizeHelperViewChild.nativeElement.style.height = this.containerViewChild.nativeElement.offsetHeight + 'px';\n        this.resizeHelperViewChild.nativeElement.style.top = 0 + 'px';\n        this.resizeHelperViewChild.nativeElement.style.left = (event.pageX - containerLeft + this.containerViewChild.nativeElement.scrollLeft) + 'px';\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'block';\n    }\n\n    onColumnResizeEnd(event, column) {\n        let delta = this.resizeHelperViewChild.nativeElement.offsetLeft - this.lastResizerHelperX;\n        let columnWidth = column.offsetWidth;\n        let newColumnWidth = columnWidth + delta;\n        let minWidth = column.style.minWidth || 15;\n\n        if (columnWidth + delta > parseInt(minWidth)) {\n            if (this.columnResizeMode === 'fit') {\n                let nextColumn = column.nextElementSibling;\n                while (!nextColumn.offsetParent) {\n                    nextColumn = nextColumn.nextElementSibling;\n                }\n\n                if (nextColumn) {\n                    let nextColumnWidth = nextColumn.offsetWidth - delta;\n                    let nextColumnMinWidth = nextColumn.style.minWidth || 15;\n\n                    if (newColumnWidth > 15 && nextColumnWidth > parseInt(nextColumnMinWidth)) {\n                        if (this.scrollable) {\n                            let scrollableView = this.findParentScrollableView(column);\n                            let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, '.p-treetable-virtual-scrollable-body table');\n                            let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n                            let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n                            let resizeColumnIndex = DomHandler.index(column);\n\n                            this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                            this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n                        }\n                        else {\n                            column.style.width = newColumnWidth + 'px';\n                            if (nextColumn) {\n                                nextColumn.style.width = nextColumnWidth + 'px';\n                            }\n                        }\n                    }\n                }\n            }\n            else if (this.columnResizeMode === 'expand') {\n                if (this.scrollable) {\n                    let scrollableView = this.findParentScrollableView(column);\n                    let scrollableBody = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport');\n                    let scrollableHeader = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-header');\n                    let scrollableFooter = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-footer');\n                    let scrollableBodyTable = DomHandler.findSingle(scrollableView, '.p-treetable-scrollable-body table') || DomHandler.findSingle(scrollableView, 'cdk-virtual-scroll-viewport table');\n                    let scrollableHeaderTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n                    let scrollableFooterTable = DomHandler.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n                    scrollableBodyTable.style.width = scrollableBodyTable.offsetWidth + delta + 'px';\n                    scrollableHeaderTable.style.width = scrollableHeaderTable.offsetWidth + delta + 'px';\n                    if (scrollableFooterTable) {\n                        scrollableFooterTable.style.width = scrollableFooterTable.offsetWidth + delta + 'px';\n                    }\n                    let resizeColumnIndex = DomHandler.index(column);\n\n                    const scrollableBodyTableWidth = column ? scrollableBodyTable.offsetWidth + delta : newColumnWidth;\n                    const scrollableHeaderTableWidth = column ? scrollableHeaderTable.offsetWidth + delta : newColumnWidth;\n                    const isContainerInViewport = this.containerViewChild.nativeElement.offsetWidth >= scrollableBodyTableWidth;\n\n                    let setWidth = (container, table, width, isContainerInViewport) => {\n                        if (container && table) {\n                            container.style.width = isContainerInViewport ? width + DomHandler.calculateScrollbarWidth(scrollableBody) + 'px' : 'auto'\n                            table.style.width = width + 'px';\n                        }\n                    };\n\n                    setWidth(scrollableBody, scrollableBodyTable, scrollableBodyTableWidth, isContainerInViewport);\n                    setWidth(scrollableHeader, scrollableHeaderTable, scrollableHeaderTableWidth, isContainerInViewport);\n                    setWidth(scrollableFooter, scrollableFooterTable, scrollableHeaderTableWidth, isContainerInViewport);\n\n                    this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, null);\n                    this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, null);\n                }\n                else {\n                    this.tableViewChild.nativeElement.style.width = this.tableViewChild.nativeElement.offsetWidth + delta + 'px';\n                    column.style.width = newColumnWidth + 'px';\n                    let containerWidth = this.tableViewChild.nativeElement.style.width;\n                    this.containerViewChild.nativeElement.style.width = containerWidth + 'px';\n                }\n            }\n\n            this.onColResize.emit({\n                element: column,\n                delta: delta\n            });\n        }\n\n        this.resizeHelperViewChild.nativeElement.style.display = 'none';\n        DomHandler.removeClass(this.containerViewChild.nativeElement, 'p-unselectable-text');\n    }\n\n    findParentScrollableView(column) {\n        if (column) {\n            let parent = column.parentElement;\n            while (parent && !DomHandler.hasClass(parent, 'p-treetable-scrollable-view')) {\n                parent = parent.parentElement;\n            }\n\n            return parent;\n        }\n        else {\n            return null;\n        }\n    }\n\n    resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n        if (table) {\n            let colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n            if (colGroup) {\n                let col = colGroup.children[resizeColumnIndex];\n                let nextCol = col.nextElementSibling;\n                col.style.width = newColumnWidth + 'px';\n\n                if (nextCol && nextColumnWidth) {\n                    nextCol.style.width = nextColumnWidth + 'px';\n                }\n            }\n            else {\n                throw \"Scrollable tables require a colgroup to support resizable columns\";\n            }\n        }\n    }\n\n    onColumnDragStart(event, columnElement) {\n        this.reorderIconWidth = DomHandler.getHiddenElementOuterWidth(this.reorderIndicatorUpViewChild.nativeElement);\n        this.reorderIconHeight = DomHandler.getHiddenElementOuterHeight(this.reorderIndicatorDownViewChild.nativeElement);\n        this.draggedColumn = columnElement;\n        event.dataTransfer.setData('text', 'b');    // For firefox\n    }\n\n    onColumnDragEnter(event, dropHeader) {\n        if (this.reorderableColumns && this.draggedColumn && dropHeader) {\n            event.preventDefault();\n            let containerOffset = DomHandler.getOffset(this.containerViewChild.nativeElement);\n            let dropHeaderOffset = DomHandler.getOffset(dropHeader);\n\n            if (this.draggedColumn != dropHeader) {\n                let targetLeft = dropHeaderOffset.left - containerOffset.left;\n                let targetTop = containerOffset.top - dropHeaderOffset.top;\n                let columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top - (this.reorderIconHeight - 1) + 'px';\n                this.reorderIndicatorDownViewChild.nativeElement.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n                if (event.pageX > columnCenter) {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft + dropHeader.offsetWidth - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = 1;\n                }\n                else {\n                    this.reorderIndicatorUpViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.reorderIndicatorDownViewChild.nativeElement.style.left = (targetLeft - Math.ceil(this.reorderIconWidth / 2)) + 'px';\n                    this.dropPosition = -1;\n                }\n\n                this.reorderIndicatorUpViewChild.nativeElement.style.display = 'block';\n                this.reorderIndicatorDownViewChild.nativeElement.style.display = 'block';\n            }\n            else {\n                event.dataTransfer.dropEffect = 'none';\n            }\n        }\n    }\n\n    onColumnDragLeave(event) {\n        if (this.reorderableColumns && this.draggedColumn) {\n            event.preventDefault();\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n        }\n    }\n\n    onColumnDrop(event, dropColumn) {\n        event.preventDefault();\n        if (this.draggedColumn) {\n            let dragIndex = DomHandler.indexWithinGroup(this.draggedColumn, 'ttreorderablecolumn');\n            let dropIndex = DomHandler.indexWithinGroup(dropColumn, 'ttreorderablecolumn');\n            let allowDrop = (dragIndex != dropIndex);\n            if (allowDrop && ((dropIndex - dragIndex == 1 && this.dropPosition === -1) || (dragIndex - dropIndex == 1 && this.dropPosition === 1))) {\n                allowDrop = false;\n            }\n\n            if (allowDrop && ((dropIndex < dragIndex && this.dropPosition === 1))) {\n                dropIndex = dropIndex + 1;\n            }\n\n            if (allowDrop && ((dropIndex > dragIndex && this.dropPosition === -1))) {\n                dropIndex = dropIndex - 1;\n            }\n\n            if (allowDrop) {\n                ObjectUtils.reorderArray(this.columns, dragIndex, dropIndex);\n\n                this.onColReorder.emit({\n                    dragIndex: dragIndex,\n                    dropIndex: dropIndex,\n                    columns: this.columns\n                });\n            }\n\n            this.reorderIndicatorUpViewChild.nativeElement.style.display = 'none';\n            this.reorderIndicatorDownViewChild.nativeElement.style.display = 'none';\n            this.draggedColumn.draggable = false;\n            this.draggedColumn = null;\n            this.dropPosition = null;\n        }\n    }\n\n    handleRowClick(event) {\n        let targetNode = (<HTMLElement> event.originalEvent.target).nodeName;\n        if (targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || (DomHandler.hasClass(event.originalEvent.target, 'p-clickable'))) {\n            return;\n        }\n\n        if (this.selectionMode) {\n            this.preventSelectionSetterPropagation = true;\n            let rowNode = event.rowNode;\n            let selected = this.isSelected(rowNode.node);\n            let metaSelection = this.rowTouched ? false : this.metaKeySelection;\n            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(rowNode.node.data, this.dataKey)) : null;\n\n            if (metaSelection) {\n                let metaKey = event.originalEvent.metaKey||event.originalEvent.ctrlKey;\n\n                if (selected && metaKey) {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = null;\n                        this.selectionKeys = {};\n                        this.selectionChange.emit(null);\n                    }\n                    else {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val,i) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n\n                    this.onNodeUnselect.emit({originalEvent: event.originalEvent, node: rowNode.node, type: 'row'});\n                }\n                else {\n                    if (this.isSingleSelectionMode()) {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(rowNode.node);\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        if (metaKey) {\n                            this._selection = this.selection||[];\n                        }\n                        else {\n                            this._selection = [];\n                            this.selectionKeys = {};\n                        }\n\n                        this._selection = [...this.selection, rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n\n                    this.onNodeSelect.emit({originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex});\n                }\n            }\n            else {\n                if (this.selectionMode === 'single') {\n                    if (selected) {\n                        this._selection = null;\n                        this.selectionKeys = {};\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n                    }\n                    else {\n                        this._selection = rowNode.node;\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n                        if (dataKeyValue) {\n                            this.selectionKeys = {};\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n                else if (this.selectionMode === 'multiple') {\n                    if (selected) {\n                        let selectionIndex = this.findIndexInSelection(rowNode.node);\n                        this._selection = this.selection.filter((val, i) => i != selectionIndex);\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeUnselect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row' });\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n                    else {\n                        this._selection = this.selection ? [...this.selection, rowNode.node] : [rowNode.node];\n                        this.selectionChange.emit(this.selection);\n                        this.onNodeSelect.emit({ originalEvent: event.originalEvent, node: rowNode.node, type: 'row', index: event.rowIndex });\n                        if (dataKeyValue) {\n                            this.selectionKeys[dataKeyValue] = 1;\n                        }\n                    }\n                }\n            }\n\n            this.tableService.onSelectionChange();\n        }\n\n        this.rowTouched = false;\n    }\n\n    handleRowTouchEnd(event) {\n        this.rowTouched = true;\n    }\n\n    handleRowRightClick(event) {\n        if (this.contextMenu) {\n            const node = event.rowNode.node;\n\n            if (this.contextMenuSelectionMode === 'separate') {\n                this.contextMenuSelection = node;\n                this.contextMenuSelectionChange.emit(node);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, node: node});\n                this.contextMenu.show(event.originalEvent);\n                this.tableService.onContextMenu(node);\n            }\n            else if (this.contextMenuSelectionMode === 'joint') {\n                this.preventSelectionSetterPropagation = true;\n                let selected = this.isSelected(node);\n                let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n                if (!selected) {\n                    if (this.isSingleSelectionMode()) {\n                        this.selection = node;\n                        this.selectionChange.emit(node);\n                    }\n                    else if (this.isMultipleSelectionMode()) {\n                        this.selection = [node];\n                        this.selectionChange.emit(this.selection);\n                    }\n\n                    if (dataKeyValue) {\n                        this.selectionKeys[dataKeyValue] = 1;\n                    }\n                }\n\n                this.contextMenu.show(event.originalEvent);\n                this.onContextMenuSelect.emit({originalEvent: event.originalEvent, node: node});\n            }\n        }\n    }\n\n    toggleNodeWithCheckbox(event) {\n        this.selection = this.selection||[];\n        this.preventSelectionSetterPropagation = true;\n        let node = event.rowNode.node;\n        let selected = this.isSelected(node);\n\n        if (selected) {\n            this.propagateSelectionDown(node, false);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, false);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeUnselect.emit({originalEvent: event, node: node});\n        }\n        else {\n            this.propagateSelectionDown(node, true);\n            if (event.rowNode.parent) {\n                this.propagateSelectionUp(node.parent, true);\n            }\n            this.selectionChange.emit(this.selection);\n            this.onNodeSelect.emit({originalEvent: event, node: node});\n        }\n\n        this.tableService.onSelectionChange();\n    }\n\n    toggleNodesWithCheckbox(event: Event, check: boolean) {\n        let data = this.filteredNodes || this.value;\n        this._selection = check && data ? data.slice() : [];\n        if (check) {\n            if (data && data.length) {\n                for (let node of data) {\n                    this.propagateSelectionDown(node, true);\n                }\n            }\n        }\n        else {\n            this._selection = [];\n            this.selectionKeys = {};\n        }\n\n        this.preventSelectionSetterPropagation = true;\n        this.selectionChange.emit(this._selection);\n        this.tableService.onSelectionChange();\n        this.onHeaderCheckboxToggle.emit({originalEvent: event, checked: check});\n    }\n\n    propagateSelectionUp(node: TreeNode, select: boolean) {\n        if (node.children && node.children.length) {\n            let selectedChildCount: number = 0;\n            let childPartialSelected: boolean = false;\n            let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n            for (let child of node.children) {\n                if (this.isSelected(child))\n                selectedChildCount++;\n                else if (child.partialSelected)\n                    childPartialSelected = true;\n            }\n\n            if (select && selectedChildCount == node.children.length) {\n                this._selection =  [...this.selection||[], node];\n                node.partialSelected = false;\n                if (dataKeyValue) {\n                    this.selectionKeys[dataKeyValue] = 1;\n                }\n            }\n            else {\n                if (!select) {\n                    let index = this.findIndexInSelection(node);\n                    if (index >= 0) {\n                        this._selection =  this.selection.filter((val,i) => i!=index);\n\n                        if (dataKeyValue) {\n                            delete this.selectionKeys[dataKeyValue];\n                        }\n                    }\n                }\n\n                if (childPartialSelected || selectedChildCount > 0 && selectedChildCount != node.children.length)\n                    node.partialSelected = true;\n                else\n                    node.partialSelected = false;\n            }\n        }\n\n        let parent = node.parent;\n        if (parent) {\n            this.propagateSelectionUp(parent, select);\n        }\n    }\n\n    propagateSelectionDown(node: TreeNode, select: boolean) {\n        let index = this.findIndexInSelection(node);\n        let dataKeyValue = this.dataKey ? String(ObjectUtils.resolveFieldData(node.data, this.dataKey)) : null;\n\n        if (select && index == -1) {\n            this._selection =  [...this.selection||[],node]\n            if (dataKeyValue) {\n                this.selectionKeys[dataKeyValue] = 1;\n            }\n        }\n        else if (!select && index > -1) {\n            this._selection =  this.selection.filter((val,i) => i!=index);\n            if (dataKeyValue) {\n                delete this.selectionKeys[dataKeyValue];\n            }\n        }\n\n        node.partialSelected = false;\n\n        if (node.children && node.children.length) {\n            for (let child of node.children) {\n                this.propagateSelectionDown(child, select);\n            }\n        }\n    }\n\n    isSelected(node) {\n        if (node && this.selection) {\n            if (this.dataKey) {\n                return this.selectionKeys[ObjectUtils.resolveFieldData(node.data, this.dataKey)] !== undefined;\n            }\n            else {\n                if (this.selection instanceof Array)\n                    return this.findIndexInSelection(node) > -1;\n                else\n                    return this.equals(node, this.selection);\n            }\n        }\n\n        return false;\n    }\n\n    findIndexInSelection(node: any) {\n        let index: number = -1;\n        if (this.selection && this.selection.length) {\n            for (let i = 0; i < this.selection.length; i++) {\n                if (this.equals(node, this.selection[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    isSingleSelectionMode() {\n        return this.selectionMode === 'single';\n    }\n\n    isMultipleSelectionMode() {\n        return this.selectionMode === 'multiple';\n    }\n\n    equals(node1, node2) {\n        return this.compareSelectionBy === 'equals' ? (node1 === node2) : ObjectUtils.equals(node1.data, node2.data, this.dataKey);\n    }\n\n    filter(value, field, matchMode) {\n        if (this.filterTimeout) {\n            clearTimeout(this.filterTimeout);\n        }\n\n        if (!this.isFilterBlank(value)) {\n            this.filters[field] = { value: value, matchMode: matchMode };\n        } else if (this.filters[field]) {\n            delete this.filters[field];\n        }\n\n        this.filterTimeout = setTimeout(() => {\n            this._filter();\n            this.filterTimeout = null;\n        }, this.filterDelay);\n    }\n\n    filterGlobal(value, matchMode) {\n        this.filter(value, 'global', matchMode);\n    }\n\n    isFilterBlank(filter: any): boolean {\n        if (filter !== null && filter !== undefined) {\n            if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0))\n                return true;\n            else\n                return false;\n        }\n        return true;\n    }\n\n    _filter() {\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            if (!this.value) {\n                return;\n            }\n\n            if (!this.hasFilter()) {\n                this.filteredNodes = null;\n                if (this.paginator) {\n                    this.totalRecords = this.value ? this.value.length : 0;\n                }\n            }\n            else {\n                let globalFilterFieldsArray;\n                if (this.filters['global']) {\n                    if (!this.columns && !this.globalFilterFields)\n                        throw new Error('Global filtering requires dynamic columns or globalFilterFields to be defined.');\n                    else\n                        globalFilterFieldsArray = this.globalFilterFields||this.columns;\n                }\n\n                this.filteredNodes = [];\n                const isStrictMode = this.filterMode === 'strict';\n                let isValueChanged = false;\n\n                for (let node of this.value) {\n                    let copyNode = {...node};\n                    let localMatch = true;\n                    let globalMatch = false;\n                    let paramsWithoutNode;\n\n                    for (let prop in this.filters) {\n                        if (this.filters.hasOwnProperty(prop) && prop !== 'global') {\n                            let filterMeta = this.filters[prop];\n                            let filterField = prop;\n                            let filterValue = filterMeta.value;\n                            let filterMatchMode = filterMeta.matchMode || 'startsWith';\n                            let filterConstraint = this.filterService.filters[filterMatchMode];\n                            paramsWithoutNode = {filterField, filterValue, filterConstraint, isStrictMode};\n                            if ((isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n                                (!isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))) {\n                                    localMatch = false;\n                            }\n\n                            if (!localMatch) {\n                                break;\n                            }\n                        }\n                    }\n\n                    if (this.filters['global'] && !globalMatch && globalFilterFieldsArray) {\n                        for(let j = 0; j < globalFilterFieldsArray.length; j++) {\n                            let copyNodeForGlobal = {...copyNode};\n                            let filterField = globalFilterFieldsArray[j].field||globalFilterFieldsArray[j];\n                            let filterValue = this.filters['global'].value;\n                            let filterConstraint = this.filterService.filters[this.filters['global'].matchMode];\n                            paramsWithoutNode = {filterField, filterValue, filterConstraint, isStrictMode};\n\n                            if ((isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||\n                                (!isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {\n                                    globalMatch = true;\n                                    copyNode = copyNodeForGlobal;\n                            }\n                        }\n                    }\n\n                    let matches = localMatch;\n                    if (this.filters['global']) {\n                        matches = localMatch && globalMatch;\n                    }\n\n                    if (matches) {\n                        this.filteredNodes.push(copyNode);\n                    }\n\n                    isValueChanged = isValueChanged || !localMatch || globalMatch || (localMatch && this.filteredNodes.length > 0) || (!globalMatch && this.filteredNodes.length === 0)\n                }\n\n                if (!isValueChanged) {\n                    this.filteredNodes = null;\n                }\n\n                if (this.paginator) {\n                    this.totalRecords = this.filteredNodes ? this.filteredNodes.length : this.value ? this.value.length : 0;\n                }\n            }\n        }\n\n        this.first = 0;\n\n        const filteredValue = this.filteredNodes || this.value;\n\n        this.onFilter.emit({\n            filters: this.filters,\n            filteredValue: filteredValue\n        });\n\n        this.tableService.onUIUpdate(filteredValue);\n        this.updateSerializedValue();\n\n        if (this.scrollable) {\n            this.resetScrollTop();\n        }\n    }\n\n    findFilteredNodes(node, paramsWithoutNode) {\n        if (node) {\n            let matched = false;\n            if (node.children) {\n                let childNodes = [...node.children];\n                node.children = [];\n                for (let childNode of childNodes) {\n                    let copyChildNode = {...childNode};\n                    if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n                        matched = true;\n                        node.children.push(copyChildNode);\n                    }\n                }\n            }\n\n            if (matched) {\n                return true;\n            }\n        }\n    }\n\n    isFilterMatched(node, {filterField, filterValue, filterConstraint, isStrictMode}) {\n        let matched = false;\n        let dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);\n        if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {\n            matched = true;\n        }\n\n        if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n            matched = this.findFilteredNodes(node, {filterField, filterValue, filterConstraint, isStrictMode}) || matched;\n        }\n\n        return matched;\n    }\n\n    isNodeLeaf(node) {\n        return node.leaf === false ? false : !(node.children && node.children.length);\n    }\n\n    hasFilter() {\n        let empty = true;\n        for (let prop in this.filters) {\n            if (this.filters.hasOwnProperty(prop)) {\n                empty = false;\n                break;\n            }\n        }\n\n        return !empty;\n    }\n\n    public reset() {\n        this._sortField = null;\n        this._sortOrder = 1;\n        this._multiSortMeta = null;\n        this.tableService.onSort(null);\n\n        this.filteredNodes = null;\n        this.filters = {};\n\n        this.first = 0;\n\n        if (this.lazy) {\n            this.onLazyLoad.emit(this.createLazyLoadMetadata());\n        }\n        else {\n            this.totalRecords = (this._value ? this._value.length : 0);\n        }\n    }\n\n    updateEditingCell(cell, data, field) {\n        this.editingCell = cell;\n        this.editingCellData = data;\n        this.editingCellField = field;\n        this.bindDocumentEditListener();\n    }\n\n    isEditingCellValid() {\n        return (this.editingCell && DomHandler.find(this.editingCell, '.ng-invalid.ng-dirty').length === 0);\n    }\n\n    bindDocumentEditListener() {\n        if (!this.documentEditListener) {\n            this.documentEditListener = (event) => {\n                if (this.editingCell && !this.editingCellClick && this.isEditingCellValid()) {\n                    DomHandler.removeClass(this.editingCell, 'p-cell-editing');\n                    this.editingCell = null;\n                    this.onEditComplete.emit({ field: this.editingCellField, data: this.editingCellData });\n                    this.editingCellField = null;\n                    this.editingCellData = null;\n                    this.unbindDocumentEditListener();\n                }\n\n                this.editingCellClick = false;\n            };\n\n            document.addEventListener('click', this.documentEditListener);\n        }\n    }\n\n    unbindDocumentEditListener() {\n        if (this.documentEditListener) {\n            document.removeEventListener('click', this.documentEditListener);\n            this.documentEditListener = null;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindDocumentEditListener();\n        this.editingCell = null;\n        this.editingCellField = null;\n        this.editingCellData = null;\n        this.initialized = null;\n    }\n\n}\n\n@Component({\n    selector: '[pTreeTableBody]',\n    template: `\n        <ng-container *ngIf=\"!tt.virtualScroll\">\n            <ng-template ngFor let-serializedNode let-rowIndex=\"index\" [ngForOf]=\"tt.serializedValue\" [ngForTrackBy]=\"tt.rowTrackBy\">\n                <ng-container *ngIf=\"serializedNode.visible\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"tt.virtualScroll\">\n            <ng-template cdkVirtualFor let-serializedNode let-rowIndex=\"index\" [cdkVirtualForOf]=\"tt.serializedValue\" [cdkVirtualForTrackBy]=\"tt.rowTrackBy\" [cdkVirtualForTemplateCacheSize]=\"0\">\n                <ng-container *ngIf=\"serializedNode.visible\">\n                    <ng-container *ngTemplateOutlet=\"template; context: {$implicit: serializedNode, node: serializedNode.node, rowData: serializedNode.node.data, columns: columns}\"></ng-container>\n                </ng-container>\n            </ng-template>\n        </ng-container>\n        <ng-container *ngIf=\"tt.isEmpty()\">\n            <ng-container *ngTemplateOutlet=\"tt.emptyMessageTemplate; context: {$implicit: columns, frozen: frozen}\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTBody {\n\n    @Input(\"pTreeTableBody\") columns: any[];\n\n    @Input(\"pTreeTableBodyTemplate\") template: TemplateRef<any>;\n\n    @Input() frozen: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public treeTableService: TreeTableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            if (this.tt.virtualScroll) {\n                this.cd.detectChanges();\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: '[ttScrollableView]',\n    template: `\n        <div #scrollHeader class=\"p-treetable-scrollable-header\">\n            <div #scrollHeaderBox class=\"p-treetable-scrollable-header-box\">\n                <table class=\"p-treetable-scrollable-header-table\" [ngClass]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <thead class=\"p-treetable-thead\">\n                        <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenHeaderTemplate||tt.headerTemplate : tt.headerTemplate; context {$implicit: columns}\"></ng-container>\n                    </thead>\n                </table>\n            </div>\n        </div>\n        <ng-container *ngIf=\"!tt.virtualScroll; else virtualScrollTemplate\">\n            <div #scrollBody class=\"p-treetable-scrollable-body\" [ngStyle]=\"{'max-height': tt.scrollHeight !== 'flex' ? scrollHeight : undefined, 'overflow-y': !frozen && tt.scrollHeight ? 'scroll' : undefined}\">\n                <table #scrollTable [class]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate\" [frozen]=\"frozen\"></tbody>\n                </table>\n                <div #scrollableAligner style=\"background-color:transparent\" *ngIf=\"frozen\"></div>\n            </div>\n        </ng-container>\n        <ng-template #virtualScrollTemplate>\n            <cdk-virtual-scroll-viewport [itemSize]=\"tt.virtualRowHeight\" [style.height]=\"tt.scrollHeight !== 'flex' ? scrollHeight : undefined\"\n                    [minBufferPx]=\"tt.minBufferPx\" [maxBufferPx]=\"tt.maxBufferPx\" class=\"p-treetable-virtual-scrollable-body\">\n                <table #scrollTable [class]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tbody class=\"p-treetable-tbody\" [pTreeTableBody]=\"columns\" [pTreeTableBodyTemplate]=\"frozen ? tt.frozenBodyTemplate||tt.bodyTemplate : tt.bodyTemplate\" [frozen]=\"frozen\"></tbody>\n                </table>\n                <div #scrollableAligner style=\"background-color:transparent\" *ngIf=\"frozen\"></div>\n            </cdk-virtual-scroll-viewport>\n        </ng-template>\n        <div #scrollFooter *ngIf=\"tt.footerTemplate\" class=\"p-treetable-scrollable-footer\">\n            <div #scrollFooterBox class=\"p-treetable-scrollable-footer-box\">\n                <table class=\"p-treetable-scrollable-footer-table\" [ngClass]=\"tt.tableStyleClass\" [ngStyle]=\"tt.tableStyle\">\n                    <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenColGroupTemplate||tt.colGroupTemplate : tt.colGroupTemplate; context {$implicit: columns}\"></ng-container>\n                    <tfoot class=\"p-treetable-tfoot\">\n                        <ng-container *ngTemplateOutlet=\"frozen ? tt.frozenFooterTemplate||tt.footerTemplate : tt.footerTemplate; context {$implicit: columns}\"></ng-container>\n                    </tfoot>\n                </table>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTScrollableView implements AfterViewInit, OnDestroy {\n\n    @Input(\"ttScrollableView\") columns: any[];\n\n    @Input() frozen: boolean;\n\n    @ViewChild('scrollHeader') scrollHeaderViewChild: ElementRef;\n\n    @ViewChild('scrollHeaderBox') scrollHeaderBoxViewChild: ElementRef;\n\n    @ViewChild('scrollBody') scrollBodyViewChild: ElementRef;\n\n    @ViewChild('scrollTable') scrollTableViewChild: ElementRef;\n\n    @ViewChild('loadingTable') scrollLoadingTableViewChild: ElementRef;\n\n    @ViewChild('scrollFooter') scrollFooterViewChild: ElementRef;\n\n    @ViewChild('scrollFooterBox') scrollFooterBoxViewChild: ElementRef;\n\n    @ViewChild('scrollableAligner') scrollableAlignerViewChild: ElementRef;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScrollBody: CdkVirtualScrollViewport;\n\n    headerScrollListener;\n\n    bodyScrollListener;\n\n    footerScrollListener;\n\n    frozenSiblingBody: Element;\n\n    totalRecordsSubscription: Subscription;\n\n    _scrollHeight: string;\n\n    preventBodyScrollPropagation: boolean;\n\n    @Input() get scrollHeight(): string {\n        return this._scrollHeight;\n    }\n    set scrollHeight(val: string) {\n        this._scrollHeight = val;\n        if (val != null && (val.includes('%') || val.includes('calc'))) {\n            console.log('Percentage scroll height calculation is removed in favor of the more performant CSS based flex mode, use scrollHeight=\"flex\" instead.')\n        }\n\n        if (this.tt.virtualScroll && this.virtualScrollBody) {\n            this.virtualScrollBody.ngOnInit();\n        }\n    }\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (!this.frozen) {\n            if (this.tt.frozenColumns || this.tt.frozenBodyTemplate) {\n                DomHandler.addClass(this.el.nativeElement, 'p-treetable-unfrozen-view');\n            }\n\n            let frozenView = this.el.nativeElement.previousElementSibling;\n            if (frozenView) {\n                if (this.tt.virtualScroll)\n                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-virtual-scrollable-body');\n                else\n                    this.frozenSiblingBody = DomHandler.findSingle(frozenView, '.p-treetable-scrollable-body');\n            }\n\n            let scrollBarWidth = DomHandler.calculateScrollbarWidth();\n            this.scrollHeaderBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n\n            if (this.scrollFooterBoxViewChild && this.scrollFooterBoxViewChild.nativeElement) {\n                this.scrollFooterBoxViewChild.nativeElement.style.paddingRight = scrollBarWidth + 'px';\n            }\n        }\n        else {\n            if (this.scrollableAlignerViewChild && this.scrollableAlignerViewChild.nativeElement) {\n                this.scrollableAlignerViewChild.nativeElement.style.height = DomHandler.calculateScrollbarHeight() + 'px';\n            }\n        }\n\n        this.bindEvents();\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n                this.headerScrollListener = this.onHeaderScroll.bind(this);\n                this.scrollHeaderBoxViewChild.nativeElement.addEventListener('scroll', this.headerScrollListener);\n            }\n\n            if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n                this.footerScrollListener = this.onFooterScroll.bind(this);\n                this.scrollFooterViewChild.nativeElement.addEventListener('scroll', this.footerScrollListener);\n            }\n\n            if (!this.frozen) {\n                this.bodyScrollListener = this.onBodyScroll.bind(this);\n\n                if (this.tt.virtualScroll)\n                    this.virtualScrollBody.getElementRef().nativeElement.addEventListener('scroll', this.bodyScrollListener);\n                else\n                    this.scrollBodyViewChild.nativeElement.addEventListener('scroll', this.bodyScrollListener);\n            }\n        });\n    }\n\n    unbindEvents() {\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderBoxViewChild.nativeElement.removeEventListener('scroll', this.headerScrollListener);\n        }\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterViewChild.nativeElement.removeEventListener('scroll', this.footerScrollListener);\n        }\n\n        if (this.scrollBodyViewChild && this.scrollBodyViewChild.nativeElement) {\n            this.scrollBodyViewChild.nativeElement.removeEventListener('scroll', this.bodyScrollListener);\n        }\n\n        if (this.virtualScrollBody && this.virtualScrollBody.getElementRef()) {\n            this.virtualScrollBody.getElementRef().nativeElement.removeEventListener('scroll', this.bodyScrollListener);\n        }\n    }\n\n    onHeaderScroll() {\n        const scrollLeft = this.scrollHeaderViewChild.nativeElement.scrollLeft;\n\n        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onFooterScroll() {\n        const scrollLeft = this.scrollFooterViewChild.nativeElement.scrollLeft;\n        this.scrollBodyViewChild.nativeElement.scrollLeft = scrollLeft;\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderViewChild.nativeElement.scrollLeft = scrollLeft;\n        }\n\n        this.preventBodyScrollPropagation = true;\n    }\n\n    onBodyScroll(event) {\n        if (this.preventBodyScrollPropagation) {\n            this.preventBodyScrollPropagation = false;\n            return;\n        }\n\n        if (this.scrollHeaderViewChild && this.scrollHeaderViewChild.nativeElement) {\n            this.scrollHeaderBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.scrollFooterViewChild && this.scrollFooterViewChild.nativeElement) {\n            this.scrollFooterBoxViewChild.nativeElement.style.marginLeft = -1 * event.target.scrollLeft + 'px';\n        }\n\n        if (this.frozenSiblingBody) {\n            this.frozenSiblingBody.scrollTop = event.target.scrollTop;\n        }\n    }\n\n    scrollToVirtualIndex(index: number): void {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollToIndex(index);\n        }\n    }\n\n    scrollTo(options): void {\n        if (this.virtualScrollBody) {\n            this.virtualScrollBody.scrollTo(options);\n        }\n        else {\n            if (this.scrollBodyViewChild.nativeElement.scrollTo) {\n                this.scrollBodyViewChild.nativeElement.scrollTo(options);\n            }\n            else {\n                this.scrollBodyViewChild.nativeElement.scrollLeft = options.left;\n                this.scrollBodyViewChild.nativeElement.scrollTop = options.top;\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n\n        this.frozenSiblingBody = null;\n    }\n}\n\n@Directive({\n    selector: '[ttSortableColumn]',\n    host: {\n        'class': 'p-element',\n        '[class.p-sortable-column]': 'isEnabled()',\n        '[class.p-highlight]': 'sorted',\n        '[attr.tabindex]': 'isEnabled() ? \"0\" : null',\n        '[attr.role]': '\"columnheader\"'\n    }\n})\nexport class TTSortableColumn implements OnInit, OnDestroy {\n\n    @Input(\"ttSortableColumn\") field: string;\n\n    @Input() ttSortableColumnDisabled: boolean;\n\n    sorted: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {\n                this.updateSortState();\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.updateSortState();\n        }\n    }\n\n    updateSortState() {\n        this.sorted = this.tt.isSorted(this.field);\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.updateSortState();\n            this.tt.sort({\n                originalEvent: event,\n                field: this.field\n            });\n\n            DomHandler.clearSelection();\n        }\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    onEnterKey(event: MouseEvent) {\n        this.onClick(event);\n    }\n\n    isEnabled() {\n        return this.ttSortableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Component({\n    selector: 'p-treeTableSortIcon',\n    template: `\n        <i class=\"p-sortable-column-icon pi pi-fw\" [ngClass]=\"{'pi-sort-amount-up-alt': sortOrder === 1, 'pi-sort-amount-down': sortOrder === -1, 'pi-sort-alt': sortOrder === 0}\"></i>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTSortIcon implements OnInit, OnDestroy {\n\n    @Input() field: string;\n\n    @Input() ariaLabelDesc: string;\n\n    @Input() ariaLabelAsc: string;\n\n    subscription: Subscription;\n\n    sortOrder: number;\n\n    constructor(public tt: TreeTable, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.sortSource$.subscribe(sortMeta => {\n            this.updateSortState();\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.updateSortState();\n    }\n\n    onClick(event){\n        event.preventDefault();\n    }\n\n    updateSortState() {\n        if (this.tt.sortMode === 'single') {\n            this.sortOrder = this.tt.isSorted(this.field) ? this.tt.sortOrder : 0;\n        }\n        else if (this.tt.sortMode === 'multiple') {\n            let sortMeta = this.tt.getSortMeta(this.field);\n            this.sortOrder = sortMeta ? sortMeta.order: 0;\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@Directive({\n    selector: '[ttResizableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTResizableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() ttResizableColumnDisabled: boolean;\n\n    resizer: HTMLSpanElement;\n\n    resizerMouseDownListener: any;\n\n    documentMouseMoveListener: any;\n\n    documentMouseUpListener: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-resizable-column');\n            this.resizer = document.createElement('span');\n            this.resizer.className = 'p-column-resizer';\n            this.el.nativeElement.appendChild(this.resizer);\n\n            this.zone.runOutsideAngular(() => {\n                this.resizerMouseDownListener = this.onMouseDown.bind(this);\n                this.resizer.addEventListener('mousedown', this.resizerMouseDownListener);\n            });\n        }\n    }\n\n    bindDocumentEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.documentMouseMoveListener = this.onDocumentMouseMove.bind(this);\n            document.addEventListener('mousemove', this.documentMouseMoveListener);\n\n            this.documentMouseUpListener = this.onDocumentMouseUp.bind(this);\n            document.addEventListener('mouseup', this.documentMouseUpListener);\n        });\n    }\n\n    unbindDocumentEvents() {\n        if (this.documentMouseMoveListener) {\n            document.removeEventListener('mousemove', this.documentMouseMoveListener);\n            this.documentMouseMoveListener = null;\n        }\n\n        if (this.documentMouseUpListener) {\n            document.removeEventListener('mouseup', this.documentMouseUpListener);\n            this.documentMouseUpListener = null;\n        }\n    }\n\n    onMouseDown(event: Event) {\n        this.tt.onColumnResizeBegin(event);\n        this.bindDocumentEvents();\n    }\n\n    onDocumentMouseMove(event: Event) {\n        this.tt.onColumnResize(event);\n    }\n\n    onDocumentMouseUp(event: Event) {\n        this.tt.onColumnResizeEnd(event, this.el.nativeElement);\n        this.unbindDocumentEvents();\n    }\n\n    isEnabled() {\n        return this.ttResizableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.resizerMouseDownListener) {\n            this.resizer.removeEventListener('mousedown', this.resizerMouseDownListener);\n        }\n\n        this.unbindDocumentEvents();\n    }\n}\n\n@Directive({\n    selector: '[ttReorderableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTReorderableColumn implements AfterViewInit, OnDestroy {\n\n    @Input() ttReorderableColumnDisabled: boolean;\n\n    dragStartListener: any;\n\n    dragOverListener: any;\n\n    dragEnterListener: any;\n\n    dragLeaveListener: any;\n\n    mouseDownListener: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            this.bindEvents();\n        }\n    }\n\n    bindEvents() {\n        this.zone.runOutsideAngular(() => {\n            this.mouseDownListener = this.onMouseDown.bind(this);\n            this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n\n            this.dragStartListener = this.onDragStart.bind(this);\n            this.el.nativeElement.addEventListener('dragstart', this.dragStartListener);\n\n            this.dragOverListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragover', this.dragOverListener);\n\n            this.dragEnterListener = this.onDragEnter.bind(this);\n            this.el.nativeElement.addEventListener('dragenter', this.dragEnterListener);\n\n            this.dragLeaveListener = this.onDragLeave.bind(this);\n            this.el.nativeElement.addEventListener('dragleave', this.dragLeaveListener);\n        });\n    }\n\n    unbindEvents() {\n        if (this.mouseDownListener) {\n            document.removeEventListener('mousedown', this.mouseDownListener);\n            this.mouseDownListener = null;\n        }\n\n        if (this.dragOverListener) {\n            document.removeEventListener('dragover', this.dragOverListener);\n            this.dragOverListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragEnterListener) {\n            document.removeEventListener('dragenter', this.dragEnterListener);\n            this.dragEnterListener = null;\n        }\n\n        if (this.dragLeaveListener) {\n            document.removeEventListener('dragleave', this.dragLeaveListener);\n            this.dragLeaveListener = null;\n        }\n    }\n\n    onMouseDown(event) {\n        if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || DomHandler.hasClass(event.target, 'p-column-resizer'))\n            this.el.nativeElement.draggable = false;\n        else\n            this.el.nativeElement.draggable = true;\n    }\n\n    onDragStart(event) {\n        this.tt.onColumnDragStart(event, this.el.nativeElement);\n    }\n\n    onDragOver(event) {\n        event.preventDefault();\n    }\n\n    onDragEnter(event) {\n        this.tt.onColumnDragEnter(event, this.el.nativeElement);\n    }\n\n    onDragLeave(event) {\n        this.tt.onColumnDragLeave(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event) {\n        if (this.isEnabled()) {\n            this.tt.onColumnDrop(event, this.el.nativeElement);\n        }\n    }\n\n    isEnabled() {\n        return this.ttReorderableColumnDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        this.unbindEvents();\n    }\n\n}\n\n@Directive({\n    selector: '[ttSelectableRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class TTSelectableRow implements OnInit, OnDestroy {\n\n    @Input(\"ttSelectableRow\") rowNode: any;\n\n    @Input() ttSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onEnterKey(event: KeyboardEvent) {\n        if (event.which === 13) {\n            this.onClick(event);\n        }\n    }\n\n    @HostListener('touchend', ['$event'])\n    onTouchEnd(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowTouchEnd(event);\n        }\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[ttSelectableRowDblClick]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight]': 'selected'\n    }\n})\nexport class TTSelectableRowDblClick implements OnInit, OnDestroy {\n\n    @Input(\"ttSelectableRowDblClick\") rowNode: any;\n\n    @Input() ttSelectableRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n                this.selected = this.tt.isSelected(this.rowNode.node);\n            });\n        }\n    }\n\n    ngOnInit() {\n        if (this.isEnabled()) {\n            this.selected = this.tt.isSelected(this.rowNode.node);\n        }\n    }\n\n    @HostListener('dblclick', ['$event'])\n    onClick(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n    }\n\n    isEnabled() {\n        return this.ttSelectableRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Directive({\n    selector: '[ttContextMenuRow]',\n    host: {\n        'class': 'p-element',\n        '[class.p-highlight-contextmenu]': 'selected',\n        '[attr.tabindex]': 'isEnabled() ? 0 : undefined'\n    }\n})\nexport class TTContextMenuRow {\n\n    @Input(\"ttContextMenuRow\") rowNode: any;\n\n    @Input() ttContextMenuRowDisabled: boolean;\n\n    selected: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, private el: ElementRef) {\n        if (this.isEnabled()) {\n            this.subscription = this.tt.tableService.contextMenuSource$.subscribe((node) => {\n                this.selected = this.tt.equals(this.rowNode.node, node);\n            });\n        }\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    onContextMenu(event: Event) {\n        if (this.isEnabled()) {\n            this.tt.handleRowRightClick({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n\n            this.el.nativeElement.focus();\n\n            event.preventDefault();\n        }\n    }\n\n    isEnabled() {\n        return this.ttContextMenuRowDisabled !== true;\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event)\">\n            <div class=\"p-hidden-accessible\">\n                <input type=\"checkbox\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-indeterminate': rowNode.node.partialSelected, 'p-disabled':disabled}\"  role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon pi\" [ngClass]=\"{'pi-check':checked, 'pi-minus': rowNode.node.partialSelected}\"></span>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTCheckbox  {\n\n    @Input() disabled: boolean;\n\n    @Input(\"value\") rowNode: any;\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    subscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, public cd: ChangeDetectorRef) {\n        this.subscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.tt.isSelected(this.rowNode.node);\n            this.cd.markForCheck();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.tt.isSelected(this.rowNode.node);\n    }\n\n    onClick(event: Event) {\n        if (!this.disabled) {\n            this.tt.toggleNodeWithCheckbox({\n                originalEvent: event,\n                rowNode: this.rowNode\n            });\n        }\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableHeaderCheckbox',\n    template: `\n        <div class=\"p-checkbox p-component\" (click)=\"onClick($event, cb.checked)\">\n            <div class=\"p-hidden-accessible\">\n                <input #cb type=\"checkbox\" [checked]=\"checked\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [disabled]=\"!tt.value||tt.value.length === 0\">\n            </div>\n            <div #box [ngClass]=\"{'p-checkbox-box':true,\n                'p-highlight':checked, 'p-disabled': (!tt.value || tt.value.length === 0)}\"  role=\"checkbox\" [attr.aria-checked]=\"checked\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':checked}\"></span>\n            </div>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTHeaderCheckbox  {\n\n    @ViewChild('box') boxViewChild: ElementRef;\n\n    checked: boolean;\n\n    disabled: boolean;\n\n    selectionChangeSubscription: Subscription;\n\n    valueChangeSubscription: Subscription;\n\n    constructor(public tt: TreeTable, public tableService: TreeTableService, private cd: ChangeDetectorRef) {\n        this.valueChangeSubscription = this.tt.tableService.uiUpdateSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n\n        this.selectionChangeSubscription = this.tt.tableService.selectionSource$.subscribe(() => {\n            this.checked = this.updateCheckedState();\n        });\n    }\n\n    ngOnInit() {\n        this.checked = this.updateCheckedState();\n    }\n\n    onClick(event: Event, checked) {\n        if (this.tt.value && this.tt.value.length > 0) {\n            this.tt.toggleNodesWithCheckbox(event, !checked);\n        }\n\n        DomHandler.clearSelection();\n    }\n\n    onFocus() {\n        DomHandler.addClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    onBlur() {\n        DomHandler.removeClass(this.boxViewChild.nativeElement, 'p-focus');\n    }\n\n    ngOnDestroy() {\n        if (this.selectionChangeSubscription) {\n            this.selectionChangeSubscription.unsubscribe();\n        }\n\n        if (this.valueChangeSubscription) {\n            this.valueChangeSubscription.unsubscribe();\n        }\n    }\n\n    updateCheckedState() {\n        this.cd.markForCheck();\n        let checked: boolean;\n        const data = this.tt.filteredNodes||this.tt.value;\n\n        if (data) {\n            for (let node of data) {\n                if (this.tt.isSelected(node)) {\n                    checked = true;\n                }\n                else  {\n                    checked = false;\n                    break;\n                }\n            }\n        }\n        else {\n            checked = false;\n        }\n\n        return checked;\n    }\n\n}\n\n@Directive({\n    selector: '[ttEditableColumn]',\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TTEditableColumn implements AfterViewInit {\n\n    @Input(\"ttEditableColumn\") data: any;\n\n    @Input(\"ttEditableColumnField\") field: any;\n\n    @Input() ttEditableColumnDisabled: boolean;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    ngAfterViewInit() {\n        if (this.isEnabled()) {\n            DomHandler.addClass(this.el.nativeElement, 'p-editable-column');\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.isEnabled()) {\n            this.tt.editingCellClick = true;\n\n            if (this.tt.editingCell) {\n                if (this.tt.editingCell !== this.el.nativeElement) {\n                    if (!this.tt.isEditingCellValid()) {\n                        return;\n                    }\n\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.openCell();\n                }\n            }\n            else {\n                this.openCell();\n            }\n        }\n    }\n\n    openCell() {\n        this.tt.updateEditingCell(this.el.nativeElement, this.data, this.field);\n        DomHandler.addClass(this.el.nativeElement, 'p-cell-editing');\n        this.tt.onEditInit.emit({ field: this.field, data: this.data});\n        this.tt.editingCellClick = true;\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let focusable = DomHandler.findSingle(this.el.nativeElement, 'input, textarea');\n                if (focusable) {\n                    focusable.focus();\n                }\n            }, 50);\n        });\n    }\n\n    closeEditingCell() {\n        DomHandler.removeClass(this.tt.editingCell, 'p-checkbox-icon');\n        this.tt.editingCell = null;\n        this.tt.unbindDocumentEditListener();\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            //enter\n            if (event.keyCode == 13) {\n                if (this.tt.isEditingCellValid()) {\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.closeEditingCell();\n                    this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //escape\n            else if (event.keyCode == 27) {\n                if (this.tt.isEditingCellValid()) {\n                    DomHandler.removeClass(this.tt.editingCell, 'p-cell-editing');\n                    this.closeEditingCell();\n                    this.tt.onEditCancel.emit({ field: this.field, data: this.data });\n                }\n\n                event.preventDefault();\n            }\n\n            //tab\n            else if (event.keyCode == 9) {\n                this.tt.onEditComplete.emit({ field: this.field, data: this.data });\n\n                if (event.shiftKey)\n                    this.moveToPreviousCell(event);\n                else\n                    this.moveToNextCell(event);\n            }\n        }\n    }\n\n    findCell(element) {\n        if (element) {\n            let cell = element;\n            while (cell && !DomHandler.hasClass(cell, 'p-cell-editing')) {\n                cell = cell.parentElement;\n            }\n\n            return cell;\n        }\n        else {\n            return null;\n        }\n    }\n\n    moveToPreviousCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findPreviousEditableColumn(currentCell);\n\n        if (targetCell) {\n            DomHandler.invokeElementMethod(targetCell, 'click');\n            event.preventDefault();\n        }\n    }\n\n    moveToNextCell(event: KeyboardEvent) {\n        let currentCell = this.findCell(event.target);\n        let row = currentCell.parentElement;\n        let targetCell = this.findNextEditableColumn(currentCell);\n\n        if (targetCell) {\n            DomHandler.invokeElementMethod(targetCell, 'click');\n            event.preventDefault();\n        }\n    }\n\n    findPreviousEditableColumn(cell: Element) {\n        let prevCell = cell.previousElementSibling;\n\n        if (!prevCell) {\n            let previousRow = cell.parentElement ? cell.parentElement.previousElementSibling : null;\n            if (previousRow) {\n                prevCell = previousRow.lastElementChild;\n            }\n        }\n\n        if (prevCell) {\n            if (DomHandler.hasClass(prevCell, 'p-editable-column'))\n                return prevCell;\n            else\n                return this.findPreviousEditableColumn(prevCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    findNextEditableColumn(cell: Element) {\n        let nextCell = cell.nextElementSibling;\n\n        if (!nextCell) {\n            let nextRow = cell.parentElement ? cell.parentElement.nextElementSibling : null;\n            if (nextRow) {\n                nextCell = nextRow.firstElementChild;\n            }\n        }\n\n        if (nextCell) {\n            if (DomHandler.hasClass(nextCell, 'p-editable-column'))\n                return nextCell;\n            else\n                return this.findNextEditableColumn(nextCell);\n        }\n        else {\n            return null;\n        }\n    }\n\n    isEnabled() {\n        return this.ttEditableColumnDisabled !== true;\n    }\n\n}\n\n@Component({\n    selector: 'p-treeTableCellEditor',\n    template: `\n        <ng-container *ngIf=\"tt.editingCell === editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"inputTemplate\"></ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"!tt.editingCell || tt.editingCell !== editableColumn.el.nativeElement\">\n            <ng-container *ngTemplateOutlet=\"outputTemplate\"></ng-container>\n        </ng-container>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTableCellEditor implements AfterContentInit {\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate>;\n\n    inputTemplate: TemplateRef<any>;\n\n    outputTemplate: TemplateRef<any>;\n\n    constructor(public tt: TreeTable, public editableColumn: TTEditableColumn) { }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'input':\n                    this.inputTemplate = item.template;\n                    break;\n\n                case 'output':\n                    this.outputTemplate = item.template;\n                    break;\n            }\n        });\n    }\n}\n\n@Directive({\n    selector: '[ttRow]',\n    host: {\n        'class': 'p-element',\n        '[attr.tabindex]': '\"0\"'\n    }\n})\nexport class TTRow {\n\n    @Input('ttRow') rowNode: any;\n\n    constructor(public tt: TreeTable, public el: ElementRef, public zone: NgZone) {}\n\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent) {\n        switch (event.which) {\n            //down arrow\n            case 40:\n                let nextRow = this.el.nativeElement.nextElementSibling;\n                if (nextRow) {\n                    nextRow.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //down arrow\n            case 38:\n                let prevRow = this.el.nativeElement.previousElementSibling;\n                if (prevRow) {\n                    prevRow.focus();\n                }\n\n                event.preventDefault();\n            break;\n\n            //left arrow\n            case 37:\n                if (this.rowNode.node.expanded) {\n                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);\n                    this.rowNode.node.expanded = false;\n\n                    this.tt.onNodeCollapse.emit({\n                        originalEvent: event,\n                        node: this.rowNode.node\n                    });\n\n                    this.tt.updateSerializedValue();\n                    this.tt.tableService.onUIUpdate(this.tt.value);\n                    this.restoreFocus();\n                }\n            break;\n\n            //right arrow\n            case 39:\n                if (!this.rowNode.node.expanded) {\n                    this.tt.toggleRowIndex = DomHandler.index(this.el.nativeElement);\n                    this.rowNode.node.expanded = true;\n\n                    this.tt.onNodeExpand.emit({\n                        originalEvent: event,\n                        node: this.rowNode.node\n                    });\n\n                    this.tt.updateSerializedValue();\n                    this.tt.tableService.onUIUpdate(this.tt.value);\n                    this.restoreFocus();\n                }\n            break;\n        }\n    }\n\n    restoreFocus() {\n        this.zone.runOutsideAngular(() => {\n            setTimeout(() => {\n                let row = DomHandler.findSingle(this.tt.containerViewChild.nativeElement, '.p-treetable-tbody').children[this.tt.toggleRowIndex];\n                if (row) {\n                    row.focus();\n                }\n            }, 25);\n        });\n    }\n}\n\n@Component({\n    selector: 'p-treeTableToggler',\n    template: `\n        <button type=\"button\" class=\"p-treetable-toggler p-link\" (click)=\"onClick($event)\" tabindex=\"-1\" pRipple\n            [style.visibility]=\"rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'\" [style.marginLeft]=\"rowNode.level * 16 + 'px'\">\n            <i [ngClass]=\"rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'\"></i>\n        </button>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TreeTableToggler {\n\n    @Input() rowNode: any;\n\n    constructor(public tt: TreeTable) {}\n\n    onClick(event: Event) {\n        this.rowNode.node.expanded = !this.rowNode.node.expanded;\n\n        if (this.rowNode.node.expanded) {\n            this.tt.onNodeExpand.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        }\n        else {\n            this.tt.onNodeCollapse.emit({\n                originalEvent: event,\n                node: this.rowNode.node\n            });\n        }\n\n        this.tt.updateSerializedValue();\n        this.tt.tableService.onUIUpdate(this.tt.value);\n\n        event.preventDefault();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,PaginatorModule,ScrollingModule,RippleModule],\n    exports: [TreeTable,SharedModule,TreeTableToggler,TTSortableColumn,TTSortIcon,TTResizableColumn,TTRow,TTReorderableColumn,TTSelectableRow,TTSelectableRowDblClick,TTContextMenuRow,TTCheckbox,TTHeaderCheckbox,TTEditableColumn,TreeTableCellEditor,ScrollingModule],\n    declarations: [TreeTable,TreeTableToggler,TTScrollableView,TTBody,TTSortableColumn,TTSortIcon,TTResizableColumn,TTRow,TTReorderableColumn,TTSelectableRow,TTSelectableRowDblClick,TTContextMenuRow,TTCheckbox,TTHeaderCheckbox,TTEditableColumn,TreeTableCellEditor]\n})\nexport class TreeTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,157 @@
+import * as i0 from '@angular/core';
+import { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';
+import * as i1 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { NG_VALUE_ACCESSOR } from '@angular/forms';
+
+const TRISTATECHECKBOX_VALUE_ACCESSOR = {
+    provide: NG_VALUE_ACCESSOR,
+    useExisting: forwardRef(() => TriStateCheckbox),
+    multi: true
+};
+class TriStateCheckbox {
+    constructor(cd) {
+        this.cd = cd;
+        this.checkboxTrueIcon = 'pi pi-check';
+        this.checkboxFalseIcon = 'pi pi-times';
+        this.onChange = new EventEmitter();
+        this.onModelChange = () => { };
+        this.onModelTouched = () => { };
+    }
+    onClick(event, input) {
+        if (!this.disabled && !this.readonly) {
+            this.toggle(event);
+            this.focused = true;
+            input.focus();
+        }
+    }
+    onKeydown(event) {
+        if (event.keyCode == 32) {
+            event.preventDefault();
+        }
+    }
+    onKeyup(event) {
+        if (event.keyCode == 32 && !this.readonly) {
+            this.toggle(event);
+            event.preventDefault();
+        }
+    }
+    toggle(event) {
+        if (this.value == null || this.value == undefined)
+            this.value = true;
+        else if (this.value == true)
+            this.value = false;
+        else if (this.value == false)
+            this.value = null;
+        this.onModelChange(this.value);
+        this.onChange.emit({
+            originalEvent: event,
+            value: this.value
+        });
+    }
+    onFocus() {
+        this.focused = true;
+    }
+    onBlur() {
+        this.focused = false;
+        this.onModelTouched();
+    }
+    registerOnChange(fn) {
+        this.onModelChange = fn;
+    }
+    registerOnTouched(fn) {
+        this.onModelTouched = fn;
+    }
+    writeValue(value) {
+        this.value = value;
+        this.cd.markForCheck();
+    }
+    setDisabledState(disabled) {
+        this.disabled = disabled;
+        this.cd.markForCheck();
+    }
+}
+TriStateCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
+TriStateCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: TriStateCheckbox, selector: "p-triStateCheckbox", inputs: { disabled: "disabled", name: "name", ariaLabelledBy: "ariaLabelledBy", tabindex: "tabindex", inputId: "inputId", style: "style", styleClass: "styleClass", label: "label", readonly: "readonly", checkboxTrueIcon: "checkboxTrueIcon", checkboxFalseIcon: "checkboxFalseIcon" }, outputs: { onChange: "onChange" }, host: { classAttribute: "p-element" }, providers: [TRISTATECHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `, isInline: true, directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckbox, decorators: [{
+            type: Component,
+            args: [{
+                    selector: 'p-triStateCheckbox',
+                    template: `
+        <div [ngStyle]="style" [ngClass]="{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}" [class]="styleClass">
+            <div class="p-hidden-accessible">
+                <input #input type="text" [attr.id]="inputId" [name]="name" [attr.tabindex]="tabindex" [readonly]="readonly" [disabled]="disabled" (keyup)="onKeyup($event)" (keydown)="onKeydown($event)" (focus)="onFocus()" (blur)="onBlur()" [attr.aria-labelledby]="ariaLabelledBy" inputmode="none">
+            </div>
+            <div class="p-checkbox-box" (click)="onClick($event,input)"  role="checkbox" [attr.aria-checked]="value === true"
+                [ngClass]="{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}">
+                <span class="p-checkbox-icon" [ngClass]="value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''"></span>
+            </div>
+        </div>
+        <label class="p-checkbox-label" (click)="onClick($event,input)"
+               [ngClass]="{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}"
+               *ngIf="label" [attr.for]="inputId">{{label}}</label>
+    `,
+                    providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],
+                    changeDetection: ChangeDetectionStrategy.OnPush,
+                    encapsulation: ViewEncapsulation.None,
+                    host: {
+                        'class': 'p-element'
+                    }
+                }]
+        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
+                type: Input
+            }], name: [{
+                type: Input
+            }], ariaLabelledBy: [{
+                type: Input
+            }], tabindex: [{
+                type: Input
+            }], inputId: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], label: [{
+                type: Input
+            }], readonly: [{
+                type: Input
+            }], checkboxTrueIcon: [{
+                type: Input
+            }], checkboxFalseIcon: [{
+                type: Input
+            }], onChange: [{
+                type: Output
+            }] } });
+class TriStateCheckboxModule {
+}
+TriStateCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+TriStateCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, declarations: [TriStateCheckbox], imports: [CommonModule], exports: [TriStateCheckbox] });
+TriStateCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: TriStateCheckboxModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule],
+                    exports: [TriStateCheckbox],
+                    declarations: [TriStateCheckbox]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { TRISTATECHECKBOX_VALUE_ACCESSOR, TriStateCheckbox, TriStateCheckboxModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-tristatecheckbox.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-tristatecheckbox.mjs","sources":["../../src/app/components/tristatecheckbox/tristatecheckbox.ts","../../src/app/components/tristatecheckbox/primeng-tristatecheckbox.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,EventEmitter,forwardRef,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const TRISTATECHECKBOX_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => TriStateCheckbox),\n  multi: true\n};\n\n@Component({\n    selector: 'p-triStateCheckbox',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-checkbox p-component': true,'p-checkbox-disabled': disabled, 'p-checkbox-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #input type=\"text\" [attr.id]=\"inputId\" [name]=\"name\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" (keyup)=\"onKeyup($event)\" (keydown)=\"onKeydown($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [attr.aria-labelledby]=\"ariaLabelledBy\" inputmode=\"none\">\n            </div>\n            <div class=\"p-checkbox-box\" (click)=\"onClick($event,input)\"  role=\"checkbox\" [attr.aria-checked]=\"value === true\"\n                [ngClass]=\"{'p-highlight':value!=null,'p-disabled':disabled,'p-focus':focused}\">\n                <span class=\"p-checkbox-icon\" [ngClass]=\"value === true ? checkboxTrueIcon : value === false ? checkboxFalseIcon : ''\"></span>\n            </div>\n        </div>\n        <label class=\"p-checkbox-label\" (click)=\"onClick($event,input)\"\n               [ngClass]=\"{'p-checkbox-label-active':value!=null, 'p-disabled':disabled, 'p-checkbox-label-focus':focused}\"\n               *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [TRISTATECHECKBOX_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class TriStateCheckbox implements ControlValueAccessor  {\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    @Input() disabled: boolean;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() label: string;\n\n    @Input() readonly: boolean;\n\n    @Input() checkboxTrueIcon: string = 'pi pi-check';\n\n    @Input() checkboxFalseIcon: string = 'pi pi-times';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    focused: boolean;\n\n    value: any;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    onClick(event: Event, input: HTMLInputElement) {\n        if (!this.disabled && !this.readonly) {\n            this.toggle(event);\n            this.focused = true;\n            input.focus();\n        }\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        if (event.keyCode == 32) {\n            event.preventDefault();\n        }\n    }\n\n    onKeyup(event: KeyboardEvent) {\n        if (event.keyCode == 32 && !this.readonly) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n\n    toggle(event: Event) {\n        if (this.value == null || this.value == undefined)\n            this.value = true;\n        else if (this.value == true)\n            this.value = false;\n        else if (this.value == false)\n            this.value = null;\n\n        this.onModelChange(this.value);\n        this.onChange.emit({\n            originalEvent: event,\n            value: this.value\n        })\n    }\n\n    onFocus() {\n        this.focused = true;\n    }\n\n    onBlur() {\n        this.focused = false;\n        this.onModelTouched();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.cd.markForCheck();\n    }\n\n    setDisabledState(disabled: boolean): void {\n        this.disabled = disabled;\n        this.cd.markForCheck();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [TriStateCheckbox],\n    declarations: [TriStateCheckbox]\n})\nexport class TriStateCheckboxModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,202 @@
+class ObjectUtils {
+    static equals(obj1, obj2, field) {
+        if (field)
+            return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));
+        else
+            return this.equalsByValue(obj1, obj2);
+    }
+    static equalsByValue(obj1, obj2) {
+        if (obj1 === obj2)
+            return true;
+        if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {
+            var arrA = Array.isArray(obj1), arrB = Array.isArray(obj2), i, length, key;
+            if (arrA && arrB) {
+                length = obj1.length;
+                if (length != obj2.length)
+                    return false;
+                for (i = length; i-- !== 0;)
+                    if (!this.equalsByValue(obj1[i], obj2[i]))
+                        return false;
+                return true;
+            }
+            if (arrA != arrB)
+                return false;
+            var dateA = obj1 instanceof Date, dateB = obj2 instanceof Date;
+            if (dateA != dateB)
+                return false;
+            if (dateA && dateB)
+                return obj1.getTime() == obj2.getTime();
+            var regexpA = obj1 instanceof RegExp, regexpB = obj2 instanceof RegExp;
+            if (regexpA != regexpB)
+                return false;
+            if (regexpA && regexpB)
+                return obj1.toString() == obj2.toString();
+            var keys = Object.keys(obj1);
+            length = keys.length;
+            if (length !== Object.keys(obj2).length)
+                return false;
+            for (i = length; i-- !== 0;)
+                if (!Object.prototype.hasOwnProperty.call(obj2, keys[i]))
+                    return false;
+            for (i = length; i-- !== 0;) {
+                key = keys[i];
+                if (!this.equalsByValue(obj1[key], obj2[key]))
+                    return false;
+            }
+            return true;
+        }
+        return obj1 !== obj1 && obj2 !== obj2;
+    }
+    static resolveFieldData(data, field) {
+        if (data && field) {
+            if (this.isFunction(field)) {
+                return field(data);
+            }
+            else if (field.indexOf('.') == -1) {
+                return data[field];
+            }
+            else {
+                let fields = field.split('.');
+                let value = data;
+                for (let i = 0, len = fields.length; i < len; ++i) {
+                    if (value == null) {
+                        return null;
+                    }
+                    value = value[fields[i]];
+                }
+                return value;
+            }
+        }
+        else {
+            return null;
+        }
+    }
+    static isFunction(obj) {
+        return !!(obj && obj.constructor && obj.call && obj.apply);
+    }
+    static reorderArray(value, from, to) {
+        let target;
+        if (value && from !== to) {
+            if (to >= value.length) {
+                to %= value.length;
+                from %= value.length;
+            }
+            value.splice(to, 0, value.splice(from, 1)[0]);
+        }
+    }
+    static insertIntoOrderedArray(item, index, arr, sourceArr) {
+        if (arr.length > 0) {
+            let injected = false;
+            for (let i = 0; i < arr.length; i++) {
+                let currentItemIndex = this.findIndexInList(arr[i], sourceArr);
+                if (currentItemIndex > index) {
+                    arr.splice(i, 0, item);
+                    injected = true;
+                    break;
+                }
+            }
+            if (!injected) {
+                arr.push(item);
+            }
+        }
+        else {
+            arr.push(item);
+        }
+    }
+    static findIndexInList(item, list) {
+        let index = -1;
+        if (list) {
+            for (let i = 0; i < list.length; i++) {
+                if (list[i] == item) {
+                    index = i;
+                    break;
+                }
+            }
+        }
+        return index;
+    }
+    static contains(value, list) {
+        if (value != null && list && list.length) {
+            for (let val of list) {
+                if (this.equals(value, val))
+                    return true;
+            }
+        }
+        return false;
+    }
+    static removeAccents(str) {
+        if (str && str.search(/[\xC0-\xFF]/g) > -1) {
+            str = str
+                .replace(/[\xC0-\xC5]/g, "A")
+                .replace(/[\xC6]/g, "AE")
+                .replace(/[\xC7]/g, "C")
+                .replace(/[\xC8-\xCB]/g, "E")
+                .replace(/[\xCC-\xCF]/g, "I")
+                .replace(/[\xD0]/g, "D")
+                .replace(/[\xD1]/g, "N")
+                .replace(/[\xD2-\xD6\xD8]/g, "O")
+                .replace(/[\xD9-\xDC]/g, "U")
+                .replace(/[\xDD]/g, "Y")
+                .replace(/[\xDE]/g, "P")
+                .replace(/[\xE0-\xE5]/g, "a")
+                .replace(/[\xE6]/g, "ae")
+                .replace(/[\xE7]/g, "c")
+                .replace(/[\xE8-\xEB]/g, "e")
+                .replace(/[\xEC-\xEF]/g, "i")
+                .replace(/[\xF1]/g, "n")
+                .replace(/[\xF2-\xF6\xF8]/g, "o")
+                .replace(/[\xF9-\xFC]/g, "u")
+                .replace(/[\xFE]/g, "p")
+                .replace(/[\xFD\xFF]/g, "y");
+        }
+        return str;
+    }
+}
+
+var lastId = 0;
+function UniqueComponentId() {
+    let prefix = 'pr_id_';
+    lastId++;
+    return `${prefix}${lastId}`;
+}
+
+function ZIndexUtils() {
+    let zIndexes = [];
+    const generateZIndex = (key, baseZIndex) => {
+        let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };
+        let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;
+        zIndexes.push({ key, value: newZIndex });
+        return newZIndex;
+    };
+    const revertZIndex = (zIndex) => {
+        zIndexes = zIndexes.filter(obj => obj.value !== zIndex);
+    };
+    const getCurrentZIndex = () => {
+        return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;
+    };
+    const getZIndex = (el) => {
+        return el ? parseInt(el.style.zIndex, 10) || 0 : 0;
+    };
+    return {
+        get: getZIndex,
+        set: (key, el, baseZIndex) => {
+            if (el) {
+                el.style.zIndex = String(generateZIndex(key, baseZIndex));
+            }
+        },
+        clear: (el) => {
+            if (el) {
+                revertZIndex(getZIndex(el));
+                el.style.zIndex = '';
+            }
+        },
+        getCurrent: () => getCurrentZIndex()
+    };
+}
+var zindexutils = ZIndexUtils();
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { ObjectUtils, UniqueComponentId, zindexutils as ZIndexUtils };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-utils.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-utils.mjs","sources":["../../src/app/components/utils/objectutils.ts","../../src/app/components/utils/uniquecomponentid.ts","../../src/app/components/utils/zindexutils.ts","../../src/app/components/utils/primeng-utils.ts"],"sourcesContent":["export class ObjectUtils {\n\n    public static equals(obj1: any, obj2: any, field?: string): boolean {\n        if (field)\n            return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));\n        else\n            return this.equalsByValue(obj1, obj2);\n    }\n\n    public static equalsByValue(obj1: any, obj2: any): boolean {\n        if (obj1 === obj2) return true;\n\n        if (obj1 && obj2 && typeof obj1 == 'object' && typeof obj2 == 'object') {\n            var arrA = Array.isArray(obj1)\n                , arrB = Array.isArray(obj2)\n                , i\n                , length\n                , key;\n\n            if (arrA && arrB) {\n                length = obj1.length;\n                if (length != obj2.length) return false;\n                for (i = length; i-- !== 0;)\n                    if (!this.equalsByValue(obj1[i], obj2[i])) return false;\n                return true;\n            }\n\n            if (arrA != arrB) return false;\n\n            var dateA = obj1 instanceof Date\n                , dateB = obj2 instanceof Date;\n            if (dateA != dateB) return false;\n            if (dateA && dateB) return obj1.getTime() == obj2.getTime();\n\n            var regexpA = obj1 instanceof RegExp\n                , regexpB = obj2 instanceof RegExp;\n            if (regexpA != regexpB) return false;\n            if (regexpA && regexpB) return obj1.toString() == obj2.toString();\n\n            var keys = Object.keys(obj1);\n            length = keys.length;\n\n            if (length !== Object.keys(obj2).length)\n                return false;\n\n            for (i = length; i-- !== 0;)\n                if (!Object.prototype.hasOwnProperty.call(obj2, keys[i])) return false;\n\n            for (i = length; i-- !== 0;) {\n                key = keys[i];\n                if (!this.equalsByValue(obj1[key], obj2[key])) return false;\n            }\n\n            return true;\n        }\n\n        return obj1 !== obj1 && obj2 !== obj2;\n    }\n\n    public static resolveFieldData(data: any, field: any): any {\n        if (data && field) {\n            if (this.isFunction(field)) {\n                return field(data);\n            }\n            else if (field.indexOf('.') == -1) {\n                return data[field];\n            }\n            else {\n                let fields: string[] = field.split('.');\n                let value = data;\n                for(let i = 0, len = fields.length; i < len; ++i) {\n                    if (value == null) {\n                        return null;\n                    }\n                    value = value[fields[i]];\n                }\n                return value;\n            }\n        }\n        else {\n            return null;\n        }\n    }\n\n    public static isFunction(obj: any) {\n        return !!(obj && obj.constructor && obj.call && obj.apply);\n    }\n\n    public static reorderArray(value: any[], from: number, to: number) {\n        let target: number;\n        if (value && from !== to) {\n            if (to >= value.length) {\n                to %= value.length;\n                from %= value.length;\n            }\n            value.splice(to, 0, value.splice(from, 1)[0]);\n        }\n    }\n\n    public static insertIntoOrderedArray(item: any, index: number, arr: any[], sourceArr: any[]): void {\n        if (arr.length > 0) {\n            let injected = false;\n            for(let i = 0; i < arr.length; i++) {\n                let currentItemIndex = this.findIndexInList(arr[i], sourceArr);\n                if (currentItemIndex > index) {\n                    arr.splice(i, 0, item);\n                    injected = true;\n                    break;\n                }\n            }\n\n            if (!injected) {\n                arr.push(item);\n            }\n        }\n        else {\n            arr.push(item);\n        }\n    }\n\n    public static findIndexInList(item: any, list: any): number {\n        let index: number = -1;\n\n        if (list) {\n            for(let i = 0; i < list.length; i++) {\n                if (list[i] == item) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n\n        return index;\n    }\n\n    public static contains(value, list) {\n        if (value != null && list && list.length) {\n            for (let val of list) {\n                if (this.equals(value, val))\n                    return true;\n            }\n        }\n\n        return false;\n    }\n\n    public static removeAccents(str) {\n        if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n            str = str\n                    .replace(/[\\xC0-\\xC5]/g, \"A\")\n                    .replace(/[\\xC6]/g, \"AE\")\n                    .replace(/[\\xC7]/g, \"C\")\n                    .replace(/[\\xC8-\\xCB]/g, \"E\")\n                    .replace(/[\\xCC-\\xCF]/g, \"I\")\n                    .replace(/[\\xD0]/g, \"D\")\n                    .replace(/[\\xD1]/g, \"N\")\n                    .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n                    .replace(/[\\xD9-\\xDC]/g, \"U\")\n                    .replace(/[\\xDD]/g, \"Y\")\n                    .replace(/[\\xDE]/g, \"P\")\n                    .replace(/[\\xE0-\\xE5]/g, \"a\")\n                    .replace(/[\\xE6]/g, \"ae\")\n                    .replace(/[\\xE7]/g, \"c\")\n                    .replace(/[\\xE8-\\xEB]/g, \"e\")\n                    .replace(/[\\xEC-\\xEF]/g, \"i\")\n                    .replace(/[\\xF1]/g, \"n\")\n                    .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n                    .replace(/[\\xF9-\\xFC]/g, \"u\")\n                    .replace(/[\\xFE]/g, \"p\")\n                    .replace(/[\\xFD\\xFF]/g, \"y\");\n        }\n\n        return str;\n      }\n}\n","\nexport var lastId = 0;\n\nexport function UniqueComponentId () {\n    let prefix = 'pr_id_';\n    lastId++;\n    return `${prefix}${lastId}`;\n}","function ZIndexUtils() {\n    let zIndexes = [];\n\n    const generateZIndex = (key, baseZIndex) => {\n        let lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n        let newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n\n        zIndexes.push({ key, value: newZIndex });\n\n        return newZIndex;\n    }\n\n    const revertZIndex = (zIndex) => {\n        zIndexes = zIndexes.filter(obj => obj.value !== zIndex);\n    }\n\n    const getCurrentZIndex = () => {\n        return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n    }\n\n    const getZIndex = (el) => {\n        return el ? parseInt(el.style.zIndex, 10) || 0 : 0\n    }\n\n    return {\n        get: getZIndex,\n        set: (key, el, baseZIndex) => {\n            if (el) {\n                el.style.zIndex = String(generateZIndex(key, baseZIndex));\n            }\n        },\n        clear: (el) => {\n            if (el) {\n                revertZIndex(getZIndex(el));\n                el.style.zIndex = '';\n            }\n        },\n        getCurrent: () => getCurrentZIndex()\n    };\n}\n\nexport default ZIndexUtils();\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,202 @@
+import * as i0 from '@angular/core';
+import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChild, ContentChildren, ViewChild, Output, NgModule } from '@angular/core';
+import * as i2 from '@angular/common';
+import { CommonModule } from '@angular/common';
+import { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';
+import * as i1 from '@angular/cdk/scrolling';
+import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
+
+class VirtualScroller {
+    constructor(el) {
+        this.el = el;
+        this.delay = 250;
+        this.trackBy = (index, item) => item;
+        this.onLazyLoad = new EventEmitter();
+        this._totalRecords = 0;
+        this.page = 0;
+        this._first = 0;
+    }
+    get totalRecords() {
+        return this._totalRecords;
+    }
+    set totalRecords(val) {
+        this._totalRecords = val;
+        console.log("totalRecords is deprecated, provide a value with the length of virtual items instead.");
+    }
+    get first() {
+        return this._first;
+    }
+    set first(val) {
+        this._first = val;
+        console.log("first property is deprecated, use scrollToIndex function to scroll a specific item.");
+    }
+    get cache() {
+        return this._cache;
+    }
+    set cache(val) {
+        this._cache = val;
+        console.log("cache is deprecated as it is always on.");
+    }
+    ngAfterContentInit() {
+        this.templates.forEach((item) => {
+            switch (item.getType()) {
+                case 'item':
+                    this.itemTemplate = item.template;
+                    break;
+                case 'loadingItem':
+                    this.loadingItemTemplate = item.template;
+                    break;
+                case 'header':
+                    this.headerTemplate = item.template;
+                    break;
+                case 'footer':
+                    this.footerTemplate = item.template;
+                    break;
+                default:
+                    this.itemTemplate = item.template;
+                    break;
+            }
+        });
+    }
+    onScrollIndexChange(index) {
+        if (this.lazy) {
+            if (this.virtualScrollTimeout) {
+                clearTimeout(this.virtualScrollTimeout);
+            }
+            this.virtualScrollTimeout = setTimeout(() => {
+                let page = Math.floor(index / this.rows);
+                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;
+                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;
+                if (page !== this.virtualPage) {
+                    this.virtualPage = page;
+                    this.onLazyLoad.emit({ first: virtualScrollOffset, rows: virtualScrollChunkSize });
+                }
+            }, this.delay);
+        }
+    }
+    getBlockableElement() {
+        return this.el.nativeElement.children[0];
+    }
+    //@deprecated
+    scrollTo(index, mode) {
+        this.scrollToIndex(index, mode);
+    }
+    scrollToIndex(index, mode) {
+        if (this.viewport) {
+            this.viewport.scrollToIndex(index, mode);
+        }
+    }
+}
+VirtualScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
+VirtualScroller.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: VirtualScroller, selector: "p-virtualScroller", inputs: { value: "value", itemSize: "itemSize", style: "style", styleClass: "styleClass", scrollHeight: "scrollHeight", lazy: "lazy", rows: "rows", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", delay: "delay", trackBy: "trackBy", totalRecords: "totalRecords", first: "first", cache: "cache" }, outputs: { onLazyLoad: "onLazyLoad" }, host: { classAttribute: "p-element" }, queries: [{ propertyName: "header", first: true, predicate: Header, descendants: true }, { propertyName: "footer", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, isInline: true, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"], components: [{ type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScroller, decorators: [{
+            type: Component,
+            args: [{ selector: 'p-virtualScroller', template: `
+        <div [ngClass]="'p-virtualscroller p-component'" [ngStyle]="style" [class]="styleClass">
+            <div class="p-virtualscroller-header" *ngIf="header || headerTemplate">
+                <ng-content select="p-header"></ng-content>
+                <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>
+            </div>
+            <div #content class="p-virtualscroller-content">
+                <div class="p-virtualscroller-list">
+                    <cdk-virtual-scroll-viewport #viewport [ngStyle]="{'height': scrollHeight}" tabindex="0" [itemSize]="itemSize" [minBufferPx]="minBufferPx" [maxBufferPx]="maxBufferPx" (scrolledIndexChange)="onScrollIndexChange($event)">
+                        <ng-container *cdkVirtualFor="let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;">
+                            <div [ngStyle]="{'height': itemSize + 'px'}" class="p-virtualscroller-item">
+                                <ng-container *ngTemplateOutlet="item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}"></ng-container>
+                            </div>
+                        </ng-container>
+                    </cdk-virtual-scroll-viewport>
+                </div>
+            </div>
+            <div class="p-virtualscroller-footer" *ngIf="footer || footerTemplate">
+                <ng-content select="p-footer"></ng-content>
+                <ng-container *ngTemplateOutlet="footerTemplate"></ng-container>
+            </div>
+        </div>
+    `, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, host: {
+                        'class': 'p-element'
+                    }, styles: ["cdk-virtual-scroll-viewport{outline:0 none}\n"] }]
+        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { value: [{
+                type: Input
+            }], itemSize: [{
+                type: Input
+            }], style: [{
+                type: Input
+            }], styleClass: [{
+                type: Input
+            }], scrollHeight: [{
+                type: Input
+            }], lazy: [{
+                type: Input
+            }], rows: [{
+                type: Input
+            }], minBufferPx: [{
+                type: Input
+            }], maxBufferPx: [{
+                type: Input
+            }], delay: [{
+                type: Input
+            }], trackBy: [{
+                type: Input
+            }], header: [{
+                type: ContentChild,
+                args: [Header]
+            }], footer: [{
+                type: ContentChild,
+                args: [Footer]
+            }], templates: [{
+                type: ContentChildren,
+                args: [PrimeTemplate]
+            }], viewport: [{
+                type: ViewChild,
+                args: [CdkVirtualScrollViewport]
+            }], onLazyLoad: [{
+                type: Output
+            }], totalRecords: [{
+                type: Input
+            }], first: [{
+                type: Input
+            }], cache: [{
+                type: Input
+            }] } });
+class VirtualScrollerModule {
+}
+VirtualScrollerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+VirtualScrollerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, declarations: [VirtualScroller], imports: [CommonModule, ScrollingModule], exports: [VirtualScroller, SharedModule, ScrollingModule] });
+VirtualScrollerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, imports: [[CommonModule, ScrollingModule], SharedModule, ScrollingModule] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: VirtualScrollerModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    imports: [CommonModule, ScrollingModule],
+                    exports: [VirtualScroller, SharedModule, ScrollingModule],
+                    declarations: [VirtualScroller]
+                }]
+        }] });
+
+/**
+ * Generated bundle index. Do not edit.
+ */
+
+export { VirtualScroller, VirtualScrollerModule };
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng-virtualscroller.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng-virtualscroller.mjs","sources":["../../src/app/components/virtualscroller/virtualscroller.ts","../../src/app/components/virtualscroller/primeng-virtualscroller.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,AfterContentInit,Input,Output,ViewChild,EventEmitter,ContentChild,ContentChildren,QueryList,TemplateRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Header,Footer,PrimeTemplate,SharedModule} from 'primeng/api';\nimport {ScrollingModule,CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {BlockableUI} from 'primeng/api';\n\n@Component({\n    selector: 'p-virtualScroller',\n    template:`\n        <div [ngClass]=\"'p-virtualscroller p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-virtualscroller-header\" *ngIf=\"header || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            </div>\n            <div #content class=\"p-virtualscroller-content\">\n                <div class=\"p-virtualscroller-list\">\n                    <cdk-virtual-scroll-viewport #viewport [ngStyle]=\"{'height': scrollHeight}\" tabindex=\"0\" [itemSize]=\"itemSize\" [minBufferPx]=\"minBufferPx\" [maxBufferPx]=\"maxBufferPx\" (scrolledIndexChange)=\"onScrollIndexChange($event)\">\n                        <ng-container *cdkVirtualFor=\"let item of value; trackBy: trackBy; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd;\">\n                            <div [ngStyle]=\"{'height': itemSize + 'px'}\" class=\"p-virtualscroller-item\">\n                                <ng-container *ngTemplateOutlet=\"item ? itemTemplate : loadingItemTemplate; context: {$implicit: item, index: i, count: c, first: f, last: l, even: e, odd: o}\"></ng-container>\n                            </div>\n                        </ng-container>\n                    </cdk-virtual-scroll-viewport>\n                </div>\n            </div>\n            <div class=\"p-virtualscroller-footer\" *ngIf=\"footer || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.Default,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./virtualscroller.css'],\n    host: {\n        'class': 'p-element'\n    }\n})\nexport class VirtualScroller implements AfterContentInit,BlockableUI {\n\n    @Input() value: any[];\n\n    @Input() itemSize: number;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() scrollHeight: any;\n\n    @Input() lazy: boolean;\n\n    @Input() rows: number;\n\n    @Input() minBufferPx: number;\n\n    @Input() maxBufferPx: number;\n\n    @Input() delay: number = 250;\n\n    @Input() trackBy: Function = (index: number, item: any) => item;\n\n    @ContentChild(Header) header: Header;\n\n    @ContentChild(Footer) footer: Footer;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    @ViewChild(CdkVirtualScrollViewport) viewport: CdkVirtualScrollViewport;\n\n    @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n    itemTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    loadingItemTemplate: TemplateRef<any>;\n\n    _totalRecords: number = 0;\n\n    page: number = 0;\n\n    _first: number = 0;\n\n    _cache: boolean;\n\n    virtualScrollTimeout: any;\n\n    virtualPage: number;\n\n    constructor(public el: ElementRef) {}\n\n    @Input() get totalRecords(): number {\n        return this._totalRecords;\n    }\n    set totalRecords(val: number) {\n        this._totalRecords = val;\n        console.log(\"totalRecords is deprecated, provide a value with the length of virtual items instead.\");\n    }\n\n    @Input() get first(): number {\n        return this._first;\n    }\n    set first(val:number) {\n        this._first = val;\n        console.log(\"first property is deprecated, use scrollToIndex function to scroll a specific item.\");\n    }\n\n    @Input() get cache(): boolean {\n        return this._cache;\n    }\n    set cache(val: boolean) {\n        this._cache = val;\n        console.log(\"cache is deprecated as it is always on.\");\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                break;\n\n                case 'loadingItem':\n                    this.loadingItemTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n\n                default:\n                    this.itemTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    onScrollIndexChange(index: number) {\n        if (this.lazy) {\n            if (this.virtualScrollTimeout) {\n                clearTimeout(this.virtualScrollTimeout);\n            }\n\n            this.virtualScrollTimeout = setTimeout(() => {\n                let page = Math.floor(index / this.rows);\n                let virtualScrollOffset = page === 0 ? 0 : (page - 1) * this.rows;\n                let virtualScrollChunkSize = page === 0 ? this.rows * 2 : this.rows * 3;\n\n                if (page !== this.virtualPage) {\n                    this.virtualPage = page;\n                    this.onLazyLoad.emit({first: virtualScrollOffset, rows: virtualScrollChunkSize});\n                }\n            }, this.delay);\n        }\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    //@deprecated\n    scrollTo(index: number, mode?: ScrollBehavior): void {\n        this.scrollToIndex(index, mode);\n    }\n\n    scrollToIndex(index: number, mode?: ScrollBehavior): void {\n        if (this.viewport) {\n            this.viewport.scrollToIndex(index, mode);\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,ScrollingModule],\n    exports: [VirtualScroller,SharedModule,ScrollingModule],\n    declarations: [VirtualScroller]\n})\nexport class VirtualScrollerModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+var public_api = {};
+
+/**
+ * Generated bundle index. Do not edit.
+ */
Index: trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs.map
===================================================================
--- trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fesm2020/primeng.mjs.map	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"version":3,"file":"primeng.mjs","sources":["../../src/app/components/public_api.ts","../../src/app/components/primeng.ts"],"sourcesContent":["export default {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"AAAA,iBAAe,EAAE;;ACAjB;;"}
Index: trip-planner-front/node_modules/primeng/fieldset/fieldset.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fieldset/fieldset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fieldset/fieldset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,37 @@
+import { EventEmitter, ElementRef, AfterContentInit, QueryList, TemplateRef } from '@angular/core';
+import { BlockableUI } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/api";
+export declare class Fieldset implements AfterContentInit, BlockableUI {
+    private el;
+    legend: string;
+    toggleable: boolean;
+    collapsed: boolean;
+    collapsedChange: EventEmitter<any>;
+    onBeforeToggle: EventEmitter<any>;
+    onAfterToggle: EventEmitter<any>;
+    style: any;
+    styleClass: string;
+    transitionOptions: string;
+    templates: QueryList<any>;
+    animating: boolean;
+    headerTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    constructor(el: ElementRef);
+    id: string;
+    ngAfterContentInit(): void;
+    toggle(event: any): boolean;
+    expand(event: any): void;
+    collapse(event: any): void;
+    getBlockableElement(): HTMLElement;
+    onToggleDone(event: Event): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Fieldset, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Fieldset, "p-fieldset", never, { "legend": "legend"; "toggleable": "toggleable"; "collapsed": "collapsed"; "style": "style"; "styleClass": "styleClass"; "transitionOptions": "transitionOptions"; }, { "collapsedChange": "collapsedChange"; "onBeforeToggle": "onBeforeToggle"; "onAfterToggle": "onAfterToggle"; }, ["templates"], ["p-header", "*"]>;
+}
+export declare class FieldsetModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<FieldsetModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<FieldsetModule, [typeof Fieldset], [typeof i1.CommonModule, typeof i2.RippleModule], [typeof Fieldset, typeof i3.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<FieldsetModule>;
+}
Index: trip-planner-front/node_modules/primeng/fieldset/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/fieldset/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fieldset/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-fieldset.mjs",
+  "es2020": "../fesm2020/primeng-fieldset.mjs",
+  "esm2020": "../esm2020/fieldset/primeng-fieldset.mjs",
+  "fesm2020": "../fesm2020/primeng-fieldset.mjs",
+  "fesm2015": "../fesm2015/primeng-fieldset.mjs",
+  "typings": "primeng-fieldset.d.ts",
+  "sideEffects": false,
+  "name": "primeng/fieldset"
+}
Index: trip-planner-front/node_modules/primeng/fieldset/primeng-fieldset.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fieldset/primeng-fieldset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fieldset/primeng-fieldset.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/fieldset" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/fieldset/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fieldset/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fieldset/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './fieldset';
Index: trip-planner-front/node_modules/primeng/fileupload/fileupload.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fileupload/fileupload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fileupload/fileupload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,123 @@
+import { OnDestroy, EventEmitter, TemplateRef, AfterViewInit, AfterContentInit, QueryList, ElementRef, NgZone, ChangeDetectorRef, OnInit } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+import { Message } from 'primeng/api';
+import { PrimeNGConfig } from 'primeng/api';
+import { BlockableUI } from 'primeng/api';
+import { HttpClient, HttpHeaders } from "@angular/common/http";
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/button";
+import * as i4 from "primeng/progressbar";
+import * as i5 from "primeng/messages";
+import * as i6 from "primeng/ripple";
+export declare class FileUpload implements AfterViewInit, AfterContentInit, OnInit, OnDestroy, BlockableUI {
+    private el;
+    sanitizer: DomSanitizer;
+    zone: NgZone;
+    private http;
+    cd: ChangeDetectorRef;
+    config: PrimeNGConfig;
+    name: string;
+    url: string;
+    method: string;
+    multiple: boolean;
+    accept: string;
+    disabled: boolean;
+    auto: boolean;
+    withCredentials: boolean;
+    maxFileSize: number;
+    invalidFileSizeMessageSummary: string;
+    invalidFileSizeMessageDetail: string;
+    invalidFileTypeMessageSummary: string;
+    invalidFileTypeMessageDetail: string;
+    invalidFileLimitMessageDetail: string;
+    invalidFileLimitMessageSummary: string;
+    style: any;
+    styleClass: string;
+    previewWidth: number;
+    chooseLabel: string;
+    uploadLabel: string;
+    cancelLabel: string;
+    chooseIcon: string;
+    uploadIcon: string;
+    cancelIcon: string;
+    showUploadButton: boolean;
+    showCancelButton: boolean;
+    mode: string;
+    headers: HttpHeaders;
+    customUpload: boolean;
+    fileLimit: number;
+    onBeforeUpload: EventEmitter<any>;
+    onSend: EventEmitter<any>;
+    onUpload: EventEmitter<any>;
+    onError: EventEmitter<any>;
+    onClear: EventEmitter<any>;
+    onRemove: EventEmitter<any>;
+    onSelect: EventEmitter<any>;
+    onProgress: EventEmitter<any>;
+    uploadHandler: EventEmitter<any>;
+    templates: QueryList<any>;
+    advancedFileInput: ElementRef;
+    basicFileInput: ElementRef;
+    content: ElementRef;
+    set files(files: File[]);
+    get files(): File[];
+    _files: File[];
+    progress: number;
+    dragHighlight: boolean;
+    msgs: Message[];
+    fileTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    toolbarTemplate: TemplateRef<any>;
+    uploadedFileCount: number;
+    focus: boolean;
+    uploading: boolean;
+    duplicateIEEvent: boolean;
+    translationSubscription: Subscription;
+    constructor(el: ElementRef, sanitizer: DomSanitizer, zone: NgZone, http: HttpClient, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    ngAfterContentInit(): void;
+    ngOnInit(): void;
+    ngAfterViewInit(): void;
+    choose(): void;
+    onFileSelect(event: any): void;
+    isFileSelected(file: File): boolean;
+    isIE11(): boolean;
+    validate(file: File): boolean;
+    private isFileTypeValid;
+    getTypeClass(fileType: string): string;
+    isWildcard(fileType: string): boolean;
+    getFileExtension(file: File): string;
+    isImage(file: File): boolean;
+    onImageLoad(img: any): void;
+    upload(): void;
+    clear(): void;
+    remove(event: Event, index: number): void;
+    isFileLimitExceeded(): boolean;
+    isChooseDisabled(): boolean;
+    checkFileLimit(): void;
+    clearInputElement(): void;
+    clearIEInput(): void;
+    hasFiles(): boolean;
+    onDragEnter(e: any): void;
+    onDragOver(e: any): void;
+    onDragLeave(event: any): void;
+    onDrop(event: any): void;
+    onFocus(): void;
+    onBlur(): void;
+    formatSize(bytes: any): string;
+    onBasicUploaderClick(): void;
+    getBlockableElement(): HTMLElement;
+    get chooseButtonLabel(): string;
+    get uploadButtonLabel(): string;
+    get cancelButtonLabel(): string;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<FileUpload, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<FileUpload, "p-fileUpload", never, { "name": "name"; "url": "url"; "method": "method"; "multiple": "multiple"; "accept": "accept"; "disabled": "disabled"; "auto": "auto"; "withCredentials": "withCredentials"; "maxFileSize": "maxFileSize"; "invalidFileSizeMessageSummary": "invalidFileSizeMessageSummary"; "invalidFileSizeMessageDetail": "invalidFileSizeMessageDetail"; "invalidFileTypeMessageSummary": "invalidFileTypeMessageSummary"; "invalidFileTypeMessageDetail": "invalidFileTypeMessageDetail"; "invalidFileLimitMessageDetail": "invalidFileLimitMessageDetail"; "invalidFileLimitMessageSummary": "invalidFileLimitMessageSummary"; "style": "style"; "styleClass": "styleClass"; "previewWidth": "previewWidth"; "chooseLabel": "chooseLabel"; "uploadLabel": "uploadLabel"; "cancelLabel": "cancelLabel"; "chooseIcon": "chooseIcon"; "uploadIcon": "uploadIcon"; "cancelIcon": "cancelIcon"; "showUploadButton": "showUploadButton"; "showCancelButton": "showCancelButton"; "mode": "mode"; "headers": "headers"; "customUpload": "customUpload"; "fileLimit": "fileLimit"; "files": "files"; }, { "onBeforeUpload": "onBeforeUpload"; "onSend": "onSend"; "onUpload": "onUpload"; "onError": "onError"; "onClear": "onClear"; "onRemove": "onRemove"; "onSelect": "onSelect"; "onProgress": "onProgress"; "uploadHandler": "uploadHandler"; }, ["templates"], never>;
+}
+export declare class FileUploadModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<FileUploadModule, [typeof FileUpload], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.ButtonModule, typeof i4.ProgressBarModule, typeof i5.MessagesModule, typeof i6.RippleModule], [typeof FileUpload, typeof i2.SharedModule, typeof i3.ButtonModule, typeof i4.ProgressBarModule, typeof i5.MessagesModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<FileUploadModule>;
+}
Index: trip-planner-front/node_modules/primeng/fileupload/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/fileupload/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fileupload/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-fileupload.mjs",
+  "es2020": "../fesm2020/primeng-fileupload.mjs",
+  "esm2020": "../esm2020/fileupload/primeng-fileupload.mjs",
+  "fesm2020": "../fesm2020/primeng-fileupload.mjs",
+  "fesm2015": "../fesm2015/primeng-fileupload.mjs",
+  "typings": "primeng-fileupload.d.ts",
+  "sideEffects": false,
+  "name": "primeng/fileupload"
+}
Index: trip-planner-front/node_modules/primeng/fileupload/primeng-fileupload.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fileupload/primeng-fileupload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fileupload/primeng-fileupload.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/fileupload" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/fileupload/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fileupload/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fileupload/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './fileupload';
Index: trip-planner-front/node_modules/primeng/focustrap/focustrap.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/focustrap/focustrap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/focustrap/focustrap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import { ElementRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class FocusTrap {
+    el: ElementRef;
+    pFocusTrapDisabled: boolean;
+    constructor(el: ElementRef);
+    onkeydown(e: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<FocusTrap, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<FocusTrap, "[pFocusTrap]", never, { "pFocusTrapDisabled": "pFocusTrapDisabled"; }, {}, never>;
+}
+export declare class FocusTrapModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<FocusTrapModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<FocusTrapModule, [typeof FocusTrap], [typeof i1.CommonModule], [typeof FocusTrap]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<FocusTrapModule>;
+}
Index: trip-planner-front/node_modules/primeng/focustrap/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/focustrap/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/focustrap/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-focustrap.mjs",
+  "es2020": "../fesm2020/primeng-focustrap.mjs",
+  "esm2020": "../esm2020/focustrap/primeng-focustrap.mjs",
+  "fesm2020": "../fesm2020/primeng-focustrap.mjs",
+  "fesm2015": "../fesm2015/primeng-focustrap.mjs",
+  "typings": "primeng-focustrap.d.ts",
+  "sideEffects": false,
+  "name": "primeng/focustrap"
+}
Index: trip-planner-front/node_modules/primeng/focustrap/primeng-focustrap.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/focustrap/primeng-focustrap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/focustrap/primeng-focustrap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/focustrap" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/focustrap/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/focustrap/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/focustrap/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './focustrap';
Index: trip-planner-front/node_modules/primeng/fullcalendar/fullcalendar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fullcalendar/fullcalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fullcalendar/fullcalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,30 @@
+import { ElementRef, OnDestroy, OnInit, AfterViewChecked } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class FullCalendar implements OnDestroy, OnInit, AfterViewChecked {
+    el: ElementRef;
+    style: any;
+    styleClass: string;
+    initialized: boolean;
+    calendar: any;
+    config: any;
+    _options: any;
+    _events: any[];
+    constructor(el: ElementRef);
+    ngOnInit(): void;
+    ngAfterViewChecked(): void;
+    get events(): any;
+    set events(value: any);
+    get options(): any;
+    set options(value: any);
+    initialize(): void;
+    getCalendar(): any;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<FullCalendar, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<FullCalendar, "p-fullCalendar", never, { "style": "style"; "styleClass": "styleClass"; "events": "events"; "options": "options"; }, {}, never, never>;
+}
+export declare class FullCalendarModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<FullCalendarModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<FullCalendarModule, [typeof FullCalendar], [typeof i1.CommonModule], [typeof FullCalendar]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<FullCalendarModule>;
+}
Index: trip-planner-front/node_modules/primeng/fullcalendar/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/fullcalendar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fullcalendar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-fullcalendar.mjs",
+  "es2020": "../fesm2020/primeng-fullcalendar.mjs",
+  "esm2020": "../esm2020/fullcalendar/primeng-fullcalendar.mjs",
+  "fesm2020": "../fesm2020/primeng-fullcalendar.mjs",
+  "fesm2015": "../fesm2015/primeng-fullcalendar.mjs",
+  "typings": "primeng-fullcalendar.d.ts",
+  "sideEffects": false,
+  "name": "primeng/fullcalendar"
+}
Index: trip-planner-front/node_modules/primeng/fullcalendar/primeng-fullcalendar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fullcalendar/primeng-fullcalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fullcalendar/primeng-fullcalendar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/fullcalendar" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/fullcalendar/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/fullcalendar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/fullcalendar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './fullcalendar';
Index: trip-planner-front/node_modules/primeng/galleria/galleria.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/galleria/galleria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/galleria/galleria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,199 @@
+import { ElementRef, OnDestroy, EventEmitter, QueryList, TemplateRef, OnInit, OnChanges, AfterContentChecked, SimpleChanges, ChangeDetectorRef, AfterViewInit } from '@angular/core';
+import { PrimeNGConfig } from 'primeng/api';
+import { AnimationEvent } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/ripple";
+export declare class Galleria implements OnChanges, OnDestroy {
+    element: ElementRef;
+    cd: ChangeDetectorRef;
+    config: PrimeNGConfig;
+    get activeIndex(): number;
+    set activeIndex(activeIndex: number);
+    fullScreen: boolean;
+    id: string;
+    value: any[];
+    numVisible: number;
+    responsiveOptions: any[];
+    showItemNavigators: boolean;
+    showThumbnailNavigators: boolean;
+    showItemNavigatorsOnHover: boolean;
+    changeItemOnIndicatorHover: boolean;
+    circular: boolean;
+    autoPlay: boolean;
+    transitionInterval: number;
+    showThumbnails: boolean;
+    thumbnailsPosition: string;
+    verticalThumbnailViewPortHeight: string;
+    showIndicators: boolean;
+    showIndicatorsOnItem: boolean;
+    indicatorsPosition: string;
+    baseZIndex: number;
+    maskClass: string;
+    containerClass: string;
+    containerStyle: any;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    mask: ElementRef;
+    get visible(): boolean;
+    set visible(visible: boolean);
+    activeIndexChange: EventEmitter<any>;
+    visibleChange: EventEmitter<any>;
+    templates: QueryList<any>;
+    _visible: boolean;
+    _activeIndex: number;
+    headerFacet: any;
+    footerFacet: any;
+    indicatorFacet: any;
+    captionFacet: any;
+    maskVisible: boolean;
+    constructor(element: ElementRef, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    ngAfterContentInit(): void;
+    ngOnChanges(simpleChanges: SimpleChanges): void;
+    onMaskHide(): void;
+    onActiveItemChange(index: any): void;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    enableModality(): void;
+    disableModality(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Galleria, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Galleria, "p-galleria", never, { "activeIndex": "activeIndex"; "fullScreen": "fullScreen"; "id": "id"; "value": "value"; "numVisible": "numVisible"; "responsiveOptions": "responsiveOptions"; "showItemNavigators": "showItemNavigators"; "showThumbnailNavigators": "showThumbnailNavigators"; "showItemNavigatorsOnHover": "showItemNavigatorsOnHover"; "changeItemOnIndicatorHover": "changeItemOnIndicatorHover"; "circular": "circular"; "autoPlay": "autoPlay"; "transitionInterval": "transitionInterval"; "showThumbnails": "showThumbnails"; "thumbnailsPosition": "thumbnailsPosition"; "verticalThumbnailViewPortHeight": "verticalThumbnailViewPortHeight"; "showIndicators": "showIndicators"; "showIndicatorsOnItem": "showIndicatorsOnItem"; "indicatorsPosition": "indicatorsPosition"; "baseZIndex": "baseZIndex"; "maskClass": "maskClass"; "containerClass": "containerClass"; "containerStyle": "containerStyle"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "visible": "visible"; }, { "activeIndexChange": "activeIndexChange"; "visibleChange": "visibleChange"; }, ["templates"], never>;
+}
+export declare class GalleriaContent {
+    galleria: Galleria;
+    cd: ChangeDetectorRef;
+    get activeIndex(): number;
+    set activeIndex(activeIndex: number);
+    value: any[];
+    numVisible: number;
+    maskHide: EventEmitter<any>;
+    activeItemChange: EventEmitter<any>;
+    id: string;
+    slideShowActicve: boolean;
+    _activeIndex: number;
+    slideShowActive: boolean;
+    interval: any;
+    styleClass: string;
+    constructor(galleria: Galleria, cd: ChangeDetectorRef);
+    galleriaClass(): string;
+    startSlideShow(): void;
+    stopSlideShow(): void;
+    getPositionClass(preClassName: any, position: any): string;
+    isVertical(): boolean;
+    onActiveIndexChange(index: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<GalleriaContent, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<GalleriaContent, "p-galleriaContent", never, { "activeIndex": "activeIndex"; "value": "value"; "numVisible": "numVisible"; }, { "maskHide": "maskHide"; "activeItemChange": "activeItemChange"; }, never, never>;
+}
+export declare class GalleriaItemSlot {
+    templates: QueryList<any>;
+    index: number;
+    get item(): any;
+    set item(item: any);
+    type: string;
+    contentTemplate: TemplateRef<any>;
+    context: any;
+    _item: any;
+    ngAfterContentInit(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<GalleriaItemSlot, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<GalleriaItemSlot, "p-galleriaItemSlot", never, { "templates": "templates"; "index": "index"; "item": "item"; "type": "type"; }, {}, never, never>;
+}
+export declare class GalleriaItem implements OnInit {
+    circular: boolean;
+    value: any[];
+    showItemNavigators: boolean;
+    showIndicators: boolean;
+    slideShowActive: boolean;
+    changeItemOnIndicatorHover: boolean;
+    autoPlay: boolean;
+    templates: QueryList<any>;
+    indicatorFacet: any;
+    captionFacet: any;
+    startSlideShow: EventEmitter<any>;
+    stopSlideShow: EventEmitter<any>;
+    onActiveIndexChange: EventEmitter<any>;
+    get activeIndex(): number;
+    set activeIndex(activeIndex: number);
+    _activeIndex: number;
+    activeItem: any;
+    ngOnInit(): void;
+    next(): void;
+    prev(): void;
+    stopTheSlideShow(): void;
+    navForward(e: any): void;
+    navBackward(e: any): void;
+    onIndicatorClick(index: any): void;
+    onIndicatorMouseEnter(index: any): void;
+    onIndicatorKeyDown(index: any): void;
+    isNavForwardDisabled(): boolean;
+    isNavBackwardDisabled(): boolean;
+    isIndicatorItemActive(index: any): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<GalleriaItem, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<GalleriaItem, "p-galleriaItem", never, { "circular": "circular"; "value": "value"; "showItemNavigators": "showItemNavigators"; "showIndicators": "showIndicators"; "slideShowActive": "slideShowActive"; "changeItemOnIndicatorHover": "changeItemOnIndicatorHover"; "autoPlay": "autoPlay"; "templates": "templates"; "indicatorFacet": "indicatorFacet"; "captionFacet": "captionFacet"; "activeIndex": "activeIndex"; }, { "startSlideShow": "startSlideShow"; "stopSlideShow": "stopSlideShow"; "onActiveIndexChange": "onActiveIndexChange"; }, never, never>;
+}
+export declare class GalleriaThumbnails implements OnInit, AfterContentChecked, AfterViewInit, OnDestroy {
+    private cd;
+    containerId: string;
+    value: any[];
+    isVertical: boolean;
+    slideShowActive: boolean;
+    circular: boolean;
+    responsiveOptions: any[];
+    contentHeight: string;
+    showThumbnailNavigators: boolean;
+    templates: QueryList<any>;
+    onActiveIndexChange: EventEmitter<any>;
+    stopSlideShow: EventEmitter<any>;
+    itemsContainer: ElementRef;
+    get numVisible(): number;
+    set numVisible(numVisible: number);
+    get activeIndex(): number;
+    set activeIndex(activeIndex: number);
+    index: number;
+    startPos: any;
+    thumbnailsStyle: any;
+    sortedResponsiveOptions: any;
+    totalShiftedItems: number;
+    page: number;
+    documentResizeListener: any;
+    _numVisible: number;
+    d_numVisible: number;
+    _oldNumVisible: number;
+    _activeIndex: number;
+    _oldactiveIndex: number;
+    constructor(cd: ChangeDetectorRef);
+    ngOnInit(): void;
+    ngAfterContentChecked(): void;
+    ngAfterViewInit(): void;
+    createStyle(): void;
+    calculatePosition(): void;
+    getTabIndex(index: any): number;
+    navForward(e: any): void;
+    navBackward(e: any): void;
+    onItemClick(index: any): void;
+    step(dir: any): void;
+    stopTheSlideShow(): void;
+    changePageOnTouch(e: any, diff: any): void;
+    getTotalPageNumber(): number;
+    getMedianItemIndex(): number;
+    onTransitionEnd(): void;
+    onTouchEnd(e: any): void;
+    onTouchMove(e: any): void;
+    onTouchStart(e: any): void;
+    isNavBackwardDisabled(): boolean;
+    isNavForwardDisabled(): boolean;
+    firstItemAciveIndex(): number;
+    lastItemActiveIndex(): number;
+    isItemActive(index: any): boolean;
+    bindDocumentListeners(): void;
+    unbindDocumentListeners(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<GalleriaThumbnails, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<GalleriaThumbnails, "p-galleriaThumbnails", never, { "containerId": "containerId"; "value": "value"; "isVertical": "isVertical"; "slideShowActive": "slideShowActive"; "circular": "circular"; "responsiveOptions": "responsiveOptions"; "contentHeight": "contentHeight"; "showThumbnailNavigators": "showThumbnailNavigators"; "templates": "templates"; "numVisible": "numVisible"; "activeIndex": "activeIndex"; }, { "onActiveIndexChange": "onActiveIndexChange"; "stopSlideShow": "stopSlideShow"; }, never, never>;
+}
+export declare class GalleriaModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<GalleriaModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<GalleriaModule, [typeof Galleria, typeof GalleriaContent, typeof GalleriaItemSlot, typeof GalleriaItem, typeof GalleriaThumbnails], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.RippleModule], [typeof i1.CommonModule, typeof Galleria, typeof GalleriaContent, typeof GalleriaItemSlot, typeof GalleriaItem, typeof GalleriaThumbnails, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<GalleriaModule>;
+}
Index: trip-planner-front/node_modules/primeng/galleria/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/galleria/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/galleria/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-galleria.mjs",
+  "es2020": "../fesm2020/primeng-galleria.mjs",
+  "esm2020": "../esm2020/galleria/primeng-galleria.mjs",
+  "fesm2020": "../fesm2020/primeng-galleria.mjs",
+  "fesm2015": "../fesm2015/primeng-galleria.mjs",
+  "typings": "primeng-galleria.d.ts",
+  "sideEffects": false,
+  "name": "primeng/galleria"
+}
Index: trip-planner-front/node_modules/primeng/galleria/primeng-galleria.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/galleria/primeng-galleria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/galleria/primeng-galleria.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/galleria" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/galleria/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/galleria/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/galleria/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './galleria';
Index: trip-planner-front/node_modules/primeng/gmap/gmap.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/gmap/gmap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/gmap/gmap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,37 @@
+import { ElementRef, AfterViewChecked, DoCheck, EventEmitter, IterableDiffers, ChangeDetectorRef, NgZone } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class GMap implements AfterViewChecked, DoCheck {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    zone: NgZone;
+    style: any;
+    styleClass: string;
+    options: any;
+    overlays: any[];
+    onMapClick: EventEmitter<any>;
+    onOverlayClick: EventEmitter<any>;
+    onOverlayDblClick: EventEmitter<any>;
+    onOverlayDragStart: EventEmitter<any>;
+    onOverlayDrag: EventEmitter<any>;
+    onOverlayDragEnd: EventEmitter<any>;
+    onMapReady: EventEmitter<any>;
+    onMapDragEnd: EventEmitter<any>;
+    onZoomChanged: EventEmitter<any>;
+    differ: any;
+    map: any;
+    constructor(el: ElementRef, differs: IterableDiffers, cd: ChangeDetectorRef, zone: NgZone);
+    ngAfterViewChecked(): void;
+    initialize(): void;
+    bindOverlayEvents(overlay: any): void;
+    ngDoCheck(): void;
+    bindDragEvents(overlay: any): void;
+    getMap(): any;
+    static ɵfac: i0.ɵɵFactoryDeclaration<GMap, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<GMap, "p-gmap", never, { "style": "style"; "styleClass": "styleClass"; "options": "options"; "overlays": "overlays"; }, { "onMapClick": "onMapClick"; "onOverlayClick": "onOverlayClick"; "onOverlayDblClick": "onOverlayDblClick"; "onOverlayDragStart": "onOverlayDragStart"; "onOverlayDrag": "onOverlayDrag"; "onOverlayDragEnd": "onOverlayDragEnd"; "onMapReady": "onMapReady"; "onMapDragEnd": "onMapDragEnd"; "onZoomChanged": "onZoomChanged"; }, never, never>;
+}
+export declare class GMapModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<GMapModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<GMapModule, [typeof GMap], [typeof i1.CommonModule], [typeof GMap]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<GMapModule>;
+}
Index: trip-planner-front/node_modules/primeng/gmap/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/gmap/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/gmap/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-gmap.mjs",
+  "es2020": "../fesm2020/primeng-gmap.mjs",
+  "esm2020": "../esm2020/gmap/primeng-gmap.mjs",
+  "fesm2020": "../fesm2020/primeng-gmap.mjs",
+  "fesm2015": "../fesm2015/primeng-gmap.mjs",
+  "typings": "primeng-gmap.d.ts",
+  "sideEffects": false,
+  "name": "primeng/gmap"
+}
Index: trip-planner-front/node_modules/primeng/gmap/primeng-gmap.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/gmap/primeng-gmap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/gmap/primeng-gmap.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/gmap" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/gmap/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/gmap/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/gmap/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './gmap';
Index: trip-planner-front/node_modules/primeng/image/image.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/image/image.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/image/image.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+import { ElementRef, TemplateRef, AfterContentInit, QueryList, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { PrimeNGConfig } from 'primeng/api';
+import { AnimationEvent } from '@angular/animations';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare class Image implements AfterContentInit {
+    private config;
+    private cd;
+    imageClass: string;
+    imageStyle: any;
+    styleClass: string;
+    style: any;
+    src: string;
+    alt: string;
+    width: string;
+    height: string;
+    appendTo: any;
+    preview: boolean;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    mask: ElementRef;
+    templates: QueryList<any>;
+    indicatorTemplate: TemplateRef<any>;
+    maskVisible: boolean;
+    previewVisible: boolean;
+    rotate: number;
+    scale: number;
+    previewClick: boolean;
+    container: HTMLElement;
+    wrapper: HTMLElement;
+    constructor(config: PrimeNGConfig, cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    onImageClick(): void;
+    onMaskClick(): void;
+    onPreviewImageClick(): void;
+    rotateRight(): void;
+    rotateLeft(): void;
+    zoomIn(): void;
+    zoomOut(): void;
+    zoomDisabled(): boolean;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    moveOnTop(): void;
+    appendContainer(): void;
+    imagePreviewStyle(): {
+        transform: string;
+    };
+    containerClass(): {
+        'p-image p-component': boolean;
+        'p-image-preview-container': boolean;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<Image, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Image, "p-image", never, { "imageClass": "imageClass"; "imageStyle": "imageStyle"; "styleClass": "styleClass"; "style": "style"; "src": "src"; "alt": "alt"; "width": "width"; "height": "height"; "appendTo": "appendTo"; "preview": "preview"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "onShow": "onShow"; "onHide": "onHide"; }, ["templates"], never>;
+}
+export declare class ImageModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ImageModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ImageModule, [typeof Image], [typeof i1.CommonModule], [typeof Image, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ImageModule>;
+}
Index: trip-planner-front/node_modules/primeng/image/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/image/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/image/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-image.mjs",
+  "es2020": "../fesm2020/primeng-image.mjs",
+  "esm2020": "../esm2020/image/primeng-image.mjs",
+  "fesm2020": "../fesm2020/primeng-image.mjs",
+  "fesm2015": "../fesm2015/primeng-image.mjs",
+  "typings": "primeng-image.d.ts",
+  "sideEffects": false,
+  "name": "primeng/image"
+}
Index: trip-planner-front/node_modules/primeng/image/primeng-image.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/image/primeng-image.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/image/primeng-image.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/image" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/image/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/image/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/image/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './image';
Index: trip-planner-front/node_modules/primeng/inplace/inplace.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inplace/inplace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inplace/inplace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+import { EventEmitter, ChangeDetectorRef, AfterContentInit, TemplateRef, QueryList } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+export declare class InplaceDisplay {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InplaceDisplay, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<InplaceDisplay, "p-inplaceDisplay", never, {}, {}, never, ["*"]>;
+}
+export declare class InplaceContent {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InplaceContent, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<InplaceContent, "p-inplaceContent", never, {}, {}, never, ["*"]>;
+}
+export declare class Inplace implements AfterContentInit {
+    cd: ChangeDetectorRef;
+    active: boolean;
+    closable: boolean;
+    disabled: boolean;
+    preventClick: boolean;
+    style: any;
+    styleClass: string;
+    closeIcon: string;
+    templates: QueryList<any>;
+    onActivate: EventEmitter<any>;
+    onDeactivate: EventEmitter<any>;
+    hover: boolean;
+    displayTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    constructor(cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    onActivateClick(event: any): void;
+    onDeactivateClick(event: any): void;
+    activate(event?: Event): void;
+    deactivate(event?: Event): void;
+    onKeydown(event: KeyboardEvent): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Inplace, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Inplace, "p-inplace", never, { "active": "active"; "closable": "closable"; "disabled": "disabled"; "preventClick": "preventClick"; "style": "style"; "styleClass": "styleClass"; "closeIcon": "closeIcon"; }, { "onActivate": "onActivate"; "onDeactivate": "onDeactivate"; }, ["templates"], ["[pInplaceDisplay]", "[pInplaceContent]"]>;
+}
+export declare class InplaceModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InplaceModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InplaceModule, [typeof Inplace, typeof InplaceDisplay, typeof InplaceContent], [typeof i1.CommonModule, typeof i2.ButtonModule], [typeof Inplace, typeof InplaceDisplay, typeof InplaceContent, typeof i2.ButtonModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InplaceModule>;
+}
Index: trip-planner-front/node_modules/primeng/inplace/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inplace/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inplace/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inplace.mjs",
+  "es2020": "../fesm2020/primeng-inplace.mjs",
+  "esm2020": "../esm2020/inplace/primeng-inplace.mjs",
+  "fesm2020": "../fesm2020/primeng-inplace.mjs",
+  "fesm2015": "../fesm2015/primeng-inplace.mjs",
+  "typings": "primeng-inplace.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inplace"
+}
Index: trip-planner-front/node_modules/primeng/inplace/primeng-inplace.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inplace/primeng-inplace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inplace/primeng-inplace.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inplace" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inplace/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inplace/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inplace/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inplace';
Index: trip-planner-front/node_modules/primeng/inputmask/inputmask.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputmask/inputmask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputmask/inputmask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,97 @@
+import { ElementRef, OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+export declare const INPUTMASK_VALUE_ACCESSOR: any;
+export declare class InputMask implements OnInit, OnDestroy, ControlValueAccessor {
+    el: ElementRef;
+    private cd;
+    type: string;
+    slotChar: string;
+    autoClear: boolean;
+    style: any;
+    inputId: string;
+    styleClass: string;
+    placeholder: string;
+    size: number;
+    maxlength: number;
+    tabindex: string;
+    title: string;
+    ariaLabel: string;
+    ariaRequired: boolean;
+    disabled: boolean;
+    readonly: boolean;
+    unmask: boolean;
+    name: string;
+    required: boolean;
+    characterPattern: string;
+    autoFocus: boolean;
+    autocomplete: string;
+    inputViewChild: ElementRef;
+    onComplete: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onInput: EventEmitter<any>;
+    onKeydown: EventEmitter<any>;
+    value: any;
+    _mask: string;
+    onModelChange: Function;
+    onModelTouched: Function;
+    input: HTMLInputElement;
+    filled: boolean;
+    defs: any;
+    tests: any[];
+    partialPosition: any;
+    firstNonMaskPos: number;
+    lastRequiredNonMaskPos: any;
+    len: number;
+    oldVal: string;
+    buffer: any;
+    defaultBuffer: string;
+    focusText: string;
+    caretTimeoutId: any;
+    androidChrome: boolean;
+    focused: boolean;
+    constructor(el: ElementRef, cd: ChangeDetectorRef);
+    ngOnInit(): void;
+    get mask(): string;
+    set mask(val: string);
+    initMask(): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    caret(first?: number, last?: number): {
+        begin: any;
+        end: any;
+    };
+    isCompleted(): boolean;
+    getPlaceholder(i: number): string;
+    seekNext(pos: any): any;
+    seekPrev(pos: any): any;
+    shiftL(begin: number, end: number): void;
+    shiftR(pos: any): void;
+    handleAndroidInput(e: any): void;
+    onInputBlur(e: any): void;
+    onInputKeydown(e: any): void;
+    onKeyPress(e: any): void;
+    clearBuffer(start: any, end: any): void;
+    writeBuffer(): void;
+    checkVal(allow?: boolean): any;
+    onInputFocus(event: any): void;
+    onInputChange(event: any): void;
+    handleInputChange(event: any): void;
+    getUnmaskedValue(): string;
+    updateModel(e: any): void;
+    updateFilledState(): void;
+    focus(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputMask, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<InputMask, "p-inputMask", never, { "type": "type"; "slotChar": "slotChar"; "autoClear": "autoClear"; "style": "style"; "inputId": "inputId"; "styleClass": "styleClass"; "placeholder": "placeholder"; "size": "size"; "maxlength": "maxlength"; "tabindex": "tabindex"; "title": "title"; "ariaLabel": "ariaLabel"; "ariaRequired": "ariaRequired"; "disabled": "disabled"; "readonly": "readonly"; "unmask": "unmask"; "name": "name"; "required": "required"; "characterPattern": "characterPattern"; "autoFocus": "autoFocus"; "autocomplete": "autocomplete"; "mask": "mask"; }, { "onComplete": "onComplete"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onInput": "onInput"; "onKeydown": "onKeydown"; }, never, never>;
+}
+export declare class InputMaskModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputMaskModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InputMaskModule, [typeof InputMask], [typeof i1.CommonModule, typeof i2.InputTextModule], [typeof InputMask]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InputMaskModule>;
+}
Index: trip-planner-front/node_modules/primeng/inputmask/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inputmask/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputmask/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inputmask.mjs",
+  "es2020": "../fesm2020/primeng-inputmask.mjs",
+  "esm2020": "../esm2020/inputmask/primeng-inputmask.mjs",
+  "fesm2020": "../fesm2020/primeng-inputmask.mjs",
+  "fesm2015": "../fesm2015/primeng-inputmask.mjs",
+  "typings": "primeng-inputmask.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inputmask"
+}
Index: trip-planner-front/node_modules/primeng/inputmask/primeng-inputmask.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputmask/primeng-inputmask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputmask/primeng-inputmask.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inputmask" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inputmask/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputmask/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputmask/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inputmask';
Index: trip-planner-front/node_modules/primeng/inputnumber/inputnumber.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputnumber/inputnumber.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputnumber/inputnumber.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,164 @@
+import { ElementRef, OnInit, EventEmitter, ChangeDetectorRef, SimpleChanges } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+import * as i3 from "primeng/button";
+export declare const INPUTNUMBER_VALUE_ACCESSOR: any;
+export declare class InputNumber implements OnInit, ControlValueAccessor {
+    el: ElementRef;
+    private cd;
+    showButtons: boolean;
+    format: boolean;
+    buttonLayout: string;
+    inputId: string;
+    styleClass: string;
+    style: any;
+    placeholder: string;
+    size: number;
+    maxlength: number;
+    tabindex: string;
+    title: string;
+    ariaLabel: string;
+    ariaRequired: boolean;
+    name: string;
+    required: boolean;
+    autocomplete: string;
+    min: number;
+    max: number;
+    incrementButtonClass: string;
+    decrementButtonClass: string;
+    incrementButtonIcon: string;
+    decrementButtonIcon: string;
+    readonly: boolean;
+    step: number;
+    allowEmpty: boolean;
+    locale: string;
+    localeMatcher: string;
+    mode: string;
+    currency: string;
+    currencyDisplay: string;
+    useGrouping: boolean;
+    minFractionDigits: number;
+    maxFractionDigits: number;
+    prefix: string;
+    suffix: string;
+    inputStyle: any;
+    inputStyleClass: string;
+    input: ElementRef;
+    onInput: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onKeyDown: EventEmitter<any>;
+    value: number;
+    onModelChange: Function;
+    onModelTouched: Function;
+    focused: boolean;
+    initialized: boolean;
+    groupChar: string;
+    prefixChar: string;
+    suffixChar: string;
+    isSpecialChar: boolean;
+    timer: any;
+    lastValue: string;
+    _numeral: any;
+    numberFormat: any;
+    _decimal: any;
+    _group: any;
+    _minusSign: any;
+    _currency: any;
+    _prefix: any;
+    _suffix: any;
+    _index: any;
+    _disabled: boolean;
+    get disabled(): boolean;
+    set disabled(disabled: boolean);
+    constructor(el: ElementRef, cd: ChangeDetectorRef);
+    ngOnChanges(simpleChange: SimpleChanges): void;
+    ngOnInit(): void;
+    getOptions(): {
+        localeMatcher: string;
+        style: string;
+        currency: string;
+        currencyDisplay: string;
+        useGrouping: boolean;
+        minimumFractionDigits: number;
+        maximumFractionDigits: number;
+    };
+    constructParser(): void;
+    updateConstructParser(): void;
+    escapeRegExp(text: any): any;
+    getDecimalExpression(): RegExp;
+    getGroupingExpression(): RegExp;
+    getMinusSignExpression(): RegExp;
+    getCurrencyExpression(): RegExp;
+    getPrefixExpression(): RegExp;
+    getSuffixExpression(): RegExp;
+    formatValue(value: any): any;
+    parseValue(text: any): any;
+    repeat(event: any, interval: any, dir: any): void;
+    spin(event: any, dir: any): void;
+    onUpButtonMouseDown(event: any): void;
+    onUpButtonMouseUp(): void;
+    onUpButtonMouseLeave(): void;
+    onUpButtonKeyDown(event: any): void;
+    onUpButtonKeyUp(): void;
+    onDownButtonMouseDown(event: any): void;
+    onDownButtonMouseUp(): void;
+    onDownButtonMouseLeave(): void;
+    onDownButtonKeyUp(): void;
+    onDownButtonKeyDown(event: any): void;
+    onUserInput(event: any): void;
+    onInputKeyDown(event: any): void;
+    onInputKeyPress(event: any): void;
+    onPaste(event: any): void;
+    allowMinusSign(): boolean;
+    isMinusSign(char: any): boolean;
+    isDecimalSign(char: any): boolean;
+    isDecimalMode(): boolean;
+    getDecimalCharIndexes(val: any): {
+        decimalCharIndex: any;
+        decimalCharIndexWithoutPrefix: any;
+    };
+    getCharIndexes(val: any): {
+        decimalCharIndex: any;
+        minusCharIndex: any;
+        suffixCharIndex: any;
+        currencyCharIndex: any;
+    };
+    insert(event: any, text: any, sign?: {
+        isDecimalSign: boolean;
+        isMinusSign: boolean;
+    }): void;
+    insertText(value: any, text: any, start: any, end: any): any;
+    deleteRange(value: any, start: any, end: any): any;
+    initCursor(): any;
+    onInputClick(): void;
+    isNumeralChar(char: any): boolean;
+    resetRegex(): void;
+    updateValue(event: any, valueStr: any, insertedValueStr: any, operation: any): void;
+    handleOnInput(event: any, currentValue: any, newValue: any): void;
+    isValueChanged(currentValue: any, newValue: any): boolean;
+    validateValue(value: any): any;
+    updateInput(value: any, insertedValueStr: any, operation: any, valueStr: any): void;
+    concatValues(val1: any, val2: any): any;
+    getDecimalLength(value: any): any;
+    onInputFocus(event: any): void;
+    onInputBlur(event: any): void;
+    formattedValue(): any;
+    updateModel(event: any, value: any): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    get filled(): boolean;
+    clearTimer(): void;
+    getFormatter(): any;
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputNumber, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<InputNumber, "p-inputNumber", never, { "showButtons": "showButtons"; "format": "format"; "buttonLayout": "buttonLayout"; "inputId": "inputId"; "styleClass": "styleClass"; "style": "style"; "placeholder": "placeholder"; "size": "size"; "maxlength": "maxlength"; "tabindex": "tabindex"; "title": "title"; "ariaLabel": "ariaLabel"; "ariaRequired": "ariaRequired"; "name": "name"; "required": "required"; "autocomplete": "autocomplete"; "min": "min"; "max": "max"; "incrementButtonClass": "incrementButtonClass"; "decrementButtonClass": "decrementButtonClass"; "incrementButtonIcon": "incrementButtonIcon"; "decrementButtonIcon": "decrementButtonIcon"; "readonly": "readonly"; "step": "step"; "allowEmpty": "allowEmpty"; "locale": "locale"; "localeMatcher": "localeMatcher"; "mode": "mode"; "currency": "currency"; "currencyDisplay": "currencyDisplay"; "useGrouping": "useGrouping"; "minFractionDigits": "minFractionDigits"; "maxFractionDigits": "maxFractionDigits"; "prefix": "prefix"; "suffix": "suffix"; "inputStyle": "inputStyle"; "inputStyleClass": "inputStyleClass"; "disabled": "disabled"; }, { "onInput": "onInput"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onKeyDown": "onKeyDown"; }, never, never>;
+}
+export declare class InputNumberModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputNumberModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InputNumberModule, [typeof InputNumber], [typeof i1.CommonModule, typeof i2.InputTextModule, typeof i3.ButtonModule], [typeof InputNumber]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InputNumberModule>;
+}
Index: trip-planner-front/node_modules/primeng/inputnumber/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inputnumber/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputnumber/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inputnumber.mjs",
+  "es2020": "../fesm2020/primeng-inputnumber.mjs",
+  "esm2020": "../esm2020/inputnumber/primeng-inputnumber.mjs",
+  "fesm2020": "../fesm2020/primeng-inputnumber.mjs",
+  "fesm2015": "../fesm2015/primeng-inputnumber.mjs",
+  "typings": "primeng-inputnumber.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inputnumber"
+}
Index: trip-planner-front/node_modules/primeng/inputnumber/primeng-inputnumber.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputnumber/primeng-inputnumber.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputnumber/primeng-inputnumber.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inputnumber" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inputnumber/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputnumber/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputnumber/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inputnumber';
Index: trip-planner-front/node_modules/primeng/inputswitch/inputswitch.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputswitch/inputswitch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputswitch/inputswitch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+import { EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const INPUTSWITCH_VALUE_ACCESSOR: any;
+export declare class InputSwitch implements ControlValueAccessor {
+    private cd;
+    style: any;
+    styleClass: string;
+    tabindex: number;
+    inputId: string;
+    name: string;
+    disabled: boolean;
+    readonly: boolean;
+    trueValue: any;
+    falseValue: any;
+    ariaLabelledBy: string;
+    onChange: EventEmitter<any>;
+    modelValue: any;
+    focused: boolean;
+    onModelChange: Function;
+    onModelTouched: Function;
+    constructor(cd: ChangeDetectorRef);
+    onClick(event: Event, cb: HTMLInputElement): void;
+    onInputChange(event: Event): void;
+    toggle(event: Event): void;
+    updateModel(event: Event, value: boolean): void;
+    onFocus(event: Event): void;
+    onBlur(event: Event): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    checked(): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputSwitch, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<InputSwitch, "p-inputSwitch", never, { "style": "style"; "styleClass": "styleClass"; "tabindex": "tabindex"; "inputId": "inputId"; "name": "name"; "disabled": "disabled"; "readonly": "readonly"; "trueValue": "trueValue"; "falseValue": "falseValue"; "ariaLabelledBy": "ariaLabelledBy"; }, { "onChange": "onChange"; }, never, never>;
+}
+export declare class InputSwitchModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputSwitchModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InputSwitchModule, [typeof InputSwitch], [typeof i1.CommonModule], [typeof InputSwitch]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InputSwitchModule>;
+}
Index: trip-planner-front/node_modules/primeng/inputswitch/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inputswitch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputswitch/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inputswitch.mjs",
+  "es2020": "../fesm2020/primeng-inputswitch.mjs",
+  "esm2020": "../esm2020/inputswitch/primeng-inputswitch.mjs",
+  "fesm2020": "../fesm2020/primeng-inputswitch.mjs",
+  "fesm2015": "../fesm2015/primeng-inputswitch.mjs",
+  "typings": "primeng-inputswitch.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inputswitch"
+}
Index: trip-planner-front/node_modules/primeng/inputswitch/primeng-inputswitch.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputswitch/primeng-inputswitch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputswitch/primeng-inputswitch.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inputswitch" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inputswitch/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputswitch/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputswitch/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inputswitch';
Index: trip-planner-front/node_modules/primeng/inputtext/inputtext.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtext/inputtext.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtext/inputtext.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,22 @@
+import { ElementRef, DoCheck, ChangeDetectorRef, AfterViewInit } from '@angular/core';
+import { NgModel } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class InputText implements DoCheck, AfterViewInit {
+    el: ElementRef;
+    ngModel: NgModel;
+    private cd;
+    filled: boolean;
+    constructor(el: ElementRef, ngModel: NgModel, cd: ChangeDetectorRef);
+    ngAfterViewInit(): void;
+    ngDoCheck(): void;
+    onInput(e: any): void;
+    updateFilledState(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputText, [null, { optional: true; }, null]>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<InputText, "[pInputText]", never, {}, {}, never>;
+}
+export declare class InputTextModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputTextModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InputTextModule, [typeof InputText], [typeof i1.CommonModule], [typeof InputText]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InputTextModule>;
+}
Index: trip-planner-front/node_modules/primeng/inputtext/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inputtext/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtext/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inputtext.mjs",
+  "es2020": "../fesm2020/primeng-inputtext.mjs",
+  "esm2020": "../esm2020/inputtext/primeng-inputtext.mjs",
+  "fesm2020": "../fesm2020/primeng-inputtext.mjs",
+  "fesm2015": "../fesm2015/primeng-inputtext.mjs",
+  "typings": "primeng-inputtext.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inputtext"
+}
Index: trip-planner-front/node_modules/primeng/inputtext/primeng-inputtext.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtext/primeng-inputtext.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtext/primeng-inputtext.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inputtext" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inputtext/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtext/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtext/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inputtext';
Index: trip-planner-front/node_modules/primeng/inputtextarea/inputtextarea.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtextarea/inputtextarea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtextarea/inputtextarea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,34 @@
+import { ElementRef, EventEmitter, AfterViewInit, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
+import { NgModel, NgControl } from '@angular/forms';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class InputTextarea implements OnInit, AfterViewInit, OnDestroy {
+    el: ElementRef;
+    ngModel: NgModel;
+    control: NgControl;
+    private cd;
+    autoResize: boolean;
+    onResize: EventEmitter<any>;
+    filled: boolean;
+    cachedScrollHeight: number;
+    ngModelSubscription: Subscription;
+    ngControlSubscription: Subscription;
+    constructor(el: ElementRef, ngModel: NgModel, control: NgControl, cd: ChangeDetectorRef);
+    ngOnInit(): void;
+    ngAfterViewInit(): void;
+    onInput(e: any): void;
+    updateFilledState(): void;
+    onFocus(e: any): void;
+    onBlur(e: any): void;
+    resize(event?: Event): void;
+    updateState(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputTextarea, [null, { optional: true; }, { optional: true; }, null]>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<InputTextarea, "[pInputTextarea]", never, { "autoResize": "autoResize"; }, { "onResize": "onResize"; }, never>;
+}
+export declare class InputTextareaModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<InputTextareaModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<InputTextareaModule, [typeof InputTextarea], [typeof i1.CommonModule], [typeof InputTextarea]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<InputTextareaModule>;
+}
Index: trip-planner-front/node_modules/primeng/inputtextarea/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/inputtextarea/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtextarea/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-inputtextarea.mjs",
+  "es2020": "../fesm2020/primeng-inputtextarea.mjs",
+  "esm2020": "../esm2020/inputtextarea/primeng-inputtextarea.mjs",
+  "fesm2020": "../fesm2020/primeng-inputtextarea.mjs",
+  "fesm2015": "../fesm2015/primeng-inputtextarea.mjs",
+  "typings": "primeng-inputtextarea.d.ts",
+  "sideEffects": false,
+  "name": "primeng/inputtextarea"
+}
Index: trip-planner-front/node_modules/primeng/inputtextarea/primeng-inputtextarea.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtextarea/primeng-inputtextarea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtextarea/primeng-inputtextarea.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/inputtextarea" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/inputtextarea/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/inputtextarea/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/inputtextarea/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './inputtextarea';
Index: trip-planner-front/node_modules/primeng/keyfilter/keyfilter.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/keyfilter/keyfilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/keyfilter/keyfilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,37 @@
+import { ElementRef, EventEmitter } from '@angular/core';
+import { Validator, AbstractControl } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const KEYFILTER_VALIDATOR: any;
+export declare class KeyFilter implements Validator {
+    el: ElementRef;
+    pValidateOnly: boolean;
+    ngModelChange: EventEmitter<any>;
+    regex: RegExp;
+    _pattern: any;
+    isAndroid: boolean;
+    lastValue: any;
+    constructor(el: ElementRef);
+    get pattern(): any;
+    set pattern(_pattern: any);
+    isNavKeyPress(e: KeyboardEvent): boolean;
+    isSpecialKey(e: KeyboardEvent): boolean;
+    getKey(e: KeyboardEvent): any;
+    getCharCode(e: KeyboardEvent): number;
+    findDelta(value: string, prevValue: string): string;
+    isValidChar(c: string): boolean;
+    isValidString(str: string): boolean;
+    onInput(e: KeyboardEvent): void;
+    onKeyPress(e: KeyboardEvent): void;
+    onPaste(e: any): void;
+    validate(c: AbstractControl): {
+        [key: string]: any;
+    };
+    static ɵfac: i0.ɵɵFactoryDeclaration<KeyFilter, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<KeyFilter, "[pKeyFilter]", never, { "pValidateOnly": "pValidateOnly"; "pattern": "pKeyFilter"; }, { "ngModelChange": "ngModelChange"; }, never>;
+}
+export declare class KeyFilterModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<KeyFilterModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<KeyFilterModule, [typeof KeyFilter], [typeof i1.CommonModule], [typeof KeyFilter]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<KeyFilterModule>;
+}
Index: trip-planner-front/node_modules/primeng/keyfilter/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/keyfilter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/keyfilter/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-keyfilter.mjs",
+  "es2020": "../fesm2020/primeng-keyfilter.mjs",
+  "esm2020": "../esm2020/keyfilter/primeng-keyfilter.mjs",
+  "fesm2020": "../fesm2020/primeng-keyfilter.mjs",
+  "fesm2015": "../fesm2015/primeng-keyfilter.mjs",
+  "typings": "primeng-keyfilter.d.ts",
+  "sideEffects": false,
+  "name": "primeng/keyfilter"
+}
Index: trip-planner-front/node_modules/primeng/keyfilter/primeng-keyfilter.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/keyfilter/primeng-keyfilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/keyfilter/primeng-keyfilter.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/keyfilter" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/keyfilter/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/keyfilter/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/keyfilter/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './keyfilter';
Index: trip-planner-front/node_modules/primeng/knob/knob.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/knob/knob.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/knob/knob.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,79 @@
+import { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const KNOB_VALUE_ACCESSOR: any;
+export declare class Knob {
+    private cd;
+    private el;
+    styleClass: string;
+    style: any;
+    severity: string;
+    valueColor: string;
+    rangeColor: string;
+    textColor: string;
+    valueTemplate: string;
+    name: string;
+    size: number;
+    step: number;
+    min: number;
+    max: number;
+    strokeWidth: number;
+    disabled: boolean;
+    showValue: boolean;
+    readonly: boolean;
+    onChange: EventEmitter<any>;
+    radius: number;
+    midX: number;
+    midY: number;
+    minRadians: number;
+    maxRadians: number;
+    value: number;
+    windowMouseMoveListener: any;
+    windowMouseUpListener: any;
+    windowTouchMoveListener: any;
+    windowTouchEndListener: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    constructor(cd: ChangeDetectorRef, el: ElementRef);
+    mapRange(x: any, inMin: any, inMax: any, outMin: any, outMax: any): any;
+    onClick(event: any): void;
+    updateValue(offsetX: any, offsetY: any): void;
+    updateModel(angle: any, start: any): void;
+    onMouseDown(event: any): void;
+    onMouseUp(event: any): void;
+    onTouchStart(event: any): void;
+    onTouchEnd(event: any): void;
+    onMouseMove(event: any): void;
+    onTouchMove(event: any): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    containerClass(): {
+        'p-knob p-component': boolean;
+        'p-disabled': boolean;
+    };
+    rangePath(): string;
+    valuePath(): string;
+    zeroRadians(): any;
+    valueRadians(): any;
+    minX(): number;
+    minY(): number;
+    maxX(): number;
+    maxY(): number;
+    zeroX(): number;
+    zeroY(): number;
+    valueX(): number;
+    valueY(): number;
+    largeArc(): 1 | 0;
+    sweep(): 1 | 0;
+    valueToDisplay(): string;
+    get _value(): number;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Knob, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Knob, "p-knob", never, { "styleClass": "styleClass"; "style": "style"; "severity": "severity"; "valueColor": "valueColor"; "rangeColor": "rangeColor"; "textColor": "textColor"; "valueTemplate": "valueTemplate"; "name": "name"; "size": "size"; "step": "step"; "min": "min"; "max": "max"; "strokeWidth": "strokeWidth"; "disabled": "disabled"; "showValue": "showValue"; "readonly": "readonly"; }, { "onChange": "onChange"; }, never, never>;
+}
+export declare class KnobModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<KnobModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<KnobModule, [typeof Knob], [typeof i1.CommonModule], [typeof Knob]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<KnobModule>;
+}
Index: trip-planner-front/node_modules/primeng/knob/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/knob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/knob/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-knob.mjs",
+  "es2020": "../fesm2020/primeng-knob.mjs",
+  "esm2020": "../esm2020/knob/primeng-knob.mjs",
+  "fesm2020": "../fesm2020/primeng-knob.mjs",
+  "fesm2015": "../fesm2015/primeng-knob.mjs",
+  "typings": "primeng-knob.d.ts",
+  "sideEffects": false,
+  "name": "primeng/knob"
+}
Index: trip-planner-front/node_modules/primeng/knob/primeng-knob.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/knob/primeng-knob.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/knob/primeng-knob.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/knob" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/knob/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/knob/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/knob/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './knob';
Index: trip-planner-front/node_modules/primeng/lightbox/lightbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/lightbox/lightbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/lightbox/lightbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,52 @@
+import { ElementRef, Renderer2, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class Lightbox implements AfterViewInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    private cd;
+    images: any[];
+    type: string;
+    style: any;
+    styleClass: string;
+    appendTo: any;
+    easing: 'ease-out';
+    effectDuration: any;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    closeOnEscape: boolean;
+    visible: boolean;
+    loading: boolean;
+    currentImage: any;
+    captionText: string;
+    zindex: any;
+    panel: any;
+    index: number;
+    mask: any;
+    preventDocumentClickListener: boolean;
+    documentClickListener: any;
+    documentEscapeListener: any;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef);
+    onImageClick(event: any, image: any, i: any, content: any): void;
+    ngAfterViewInit(): void;
+    onLinkClick(event: any, content: any): void;
+    displayImage(image: any): void;
+    show(): void;
+    hide(event: any): void;
+    center(): void;
+    onImageLoad(event: any, content: any): void;
+    prev(placeholder: any): void;
+    next(placeholder: any): void;
+    bindGlobalListeners(): void;
+    unbindGlobalListeners(): void;
+    get leftVisible(): boolean;
+    get rightVisible(): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Lightbox, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Lightbox, "p-lightbox", never, { "images": "images"; "type": "type"; "style": "style"; "styleClass": "styleClass"; "appendTo": "appendTo"; "easing": "easing"; "effectDuration": "effectDuration"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "closeOnEscape": "closeOnEscape"; }, {}, never, ["a", "*"]>;
+}
+export declare class LightboxModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<LightboxModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<LightboxModule, [typeof Lightbox], [typeof i1.CommonModule], [typeof Lightbox]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<LightboxModule>;
+}
Index: trip-planner-front/node_modules/primeng/lightbox/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/lightbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/lightbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-lightbox.mjs",
+  "es2020": "../fesm2020/primeng-lightbox.mjs",
+  "esm2020": "../esm2020/lightbox/primeng-lightbox.mjs",
+  "fesm2020": "../fesm2020/primeng-lightbox.mjs",
+  "fesm2015": "../fesm2015/primeng-lightbox.mjs",
+  "typings": "primeng-lightbox.d.ts",
+  "sideEffects": false,
+  "name": "primeng/lightbox"
+}
Index: trip-planner-front/node_modules/primeng/lightbox/primeng-lightbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/lightbox/primeng-lightbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/lightbox/primeng-lightbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/lightbox" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/lightbox/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/lightbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/lightbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './lightbox';
Index: trip-planner-front/node_modules/primeng/listbox/listbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/listbox/listbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/listbox/listbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,112 @@
+import { ElementRef, EventEmitter, AfterContentInit, QueryList, TemplateRef, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';
+import { FilterService, PrimeNGConfig } from 'primeng/api';
+import { ControlValueAccessor } from '@angular/forms';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/ripple";
+export declare const LISTBOX_VALUE_ACCESSOR: any;
+export declare class Listbox implements AfterContentInit, OnInit, ControlValueAccessor, OnDestroy {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    filterService: FilterService;
+    config: PrimeNGConfig;
+    multiple: boolean;
+    style: any;
+    styleClass: string;
+    listStyle: any;
+    listStyleClass: string;
+    readonly: boolean;
+    disabled: boolean;
+    checkbox: boolean;
+    filter: boolean;
+    filterMatchMode: string;
+    filterLocale: string;
+    metaKeySelection: boolean;
+    dataKey: string;
+    showToggleAll: boolean;
+    optionLabel: string;
+    optionValue: string;
+    optionGroupChildren: string;
+    optionGroupLabel: string;
+    optionDisabled: string;
+    ariaFilterLabel: string;
+    filterPlaceHolder: string;
+    emptyFilterMessage: string;
+    emptyMessage: string;
+    group: boolean;
+    onChange: EventEmitter<any>;
+    onClick: EventEmitter<any>;
+    onDblClick: EventEmitter<any>;
+    headerCheckboxViewChild: ElementRef;
+    headerFacet: any;
+    footerFacet: any;
+    templates: QueryList<any>;
+    _options: any[];
+    itemTemplate: TemplateRef<any>;
+    groupTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    emptyFilterTemplate: TemplateRef<any>;
+    emptyTemplate: TemplateRef<any>;
+    _filterValue: string;
+    _filteredOptions: any[];
+    filtered: boolean;
+    value: any;
+    onModelChange: Function;
+    onModelTouched: Function;
+    optionTouched: boolean;
+    focus: boolean;
+    headerCheckboxFocus: boolean;
+    translationSubscription: Subscription;
+    constructor(el: ElementRef, cd: ChangeDetectorRef, filterService: FilterService, config: PrimeNGConfig);
+    get options(): any[];
+    set options(val: any[]);
+    get filterValue(): string;
+    set filterValue(val: string);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    getOptionLabel(option: any): any;
+    getOptionGroupChildren(optionGroup: any): any;
+    getOptionGroupLabel(optionGroup: any): any;
+    getOptionValue(option: any): any;
+    isOptionDisabled(option: any): any;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    onOptionClick(event: Event, option: any): void;
+    onOptionTouchEnd(option: any): void;
+    onOptionDoubleClick(event: Event, option: any): any;
+    onOptionClickSingle(event: any, option: any): void;
+    onOptionClickMultiple(event: any, option: any): void;
+    onOptionClickCheckbox(event: any, option: any): void;
+    removeOption(option: any): void;
+    isSelected(option: any): boolean;
+    get allChecked(): boolean;
+    get optionsToRender(): any[];
+    get emptyMessageLabel(): string;
+    get emptyFilterMessageLabel(): string;
+    hasFilter(): boolean;
+    isEmpty(optionsToDisplay: any): boolean;
+    onFilter(event: KeyboardEvent): void;
+    activateFilter(): void;
+    get toggleAllDisabled(): boolean;
+    toggleAll(event: any): void;
+    checkAll(): void;
+    uncheckAll(): void;
+    onOptionKeyDown(event: KeyboardEvent, option: any): void;
+    findNextItem(item: any): any;
+    findPrevItem(item: any): any;
+    onHeaderCheckboxFocus(): void;
+    onHeaderCheckboxBlur(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Listbox, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Listbox, "p-listbox", never, { "multiple": "multiple"; "style": "style"; "styleClass": "styleClass"; "listStyle": "listStyle"; "listStyleClass": "listStyleClass"; "readonly": "readonly"; "disabled": "disabled"; "checkbox": "checkbox"; "filter": "filter"; "filterMatchMode": "filterMatchMode"; "filterLocale": "filterLocale"; "metaKeySelection": "metaKeySelection"; "dataKey": "dataKey"; "showToggleAll": "showToggleAll"; "optionLabel": "optionLabel"; "optionValue": "optionValue"; "optionGroupChildren": "optionGroupChildren"; "optionGroupLabel": "optionGroupLabel"; "optionDisabled": "optionDisabled"; "ariaFilterLabel": "ariaFilterLabel"; "filterPlaceHolder": "filterPlaceHolder"; "emptyFilterMessage": "emptyFilterMessage"; "emptyMessage": "emptyMessage"; "group": "group"; "options": "options"; "filterValue": "filterValue"; }, { "onChange": "onChange"; "onClick": "onClick"; "onDblClick": "onDblClick"; }, ["headerFacet", "footerFacet", "templates"], ["p-header", "p-footer"]>;
+}
+export declare class ListboxModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ListboxModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ListboxModule, [typeof Listbox], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.RippleModule], [typeof Listbox, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ListboxModule>;
+}
Index: trip-planner-front/node_modules/primeng/listbox/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/listbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/listbox/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-listbox.mjs",
+  "es2020": "../fesm2020/primeng-listbox.mjs",
+  "esm2020": "../esm2020/listbox/primeng-listbox.mjs",
+  "fesm2020": "../fesm2020/primeng-listbox.mjs",
+  "fesm2015": "../fesm2015/primeng-listbox.mjs",
+  "typings": "primeng-listbox.d.ts",
+  "sideEffects": false,
+  "name": "primeng/listbox"
+}
Index: trip-planner-front/node_modules/primeng/listbox/primeng-listbox.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/listbox/primeng-listbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/listbox/primeng-listbox.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/listbox" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/listbox/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/listbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/listbox/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './listbox';
Index: trip-planner-front/node_modules/primeng/megamenu/megamenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/megamenu/megamenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/megamenu/megamenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,38 @@
+import { ElementRef, Renderer2, ChangeDetectorRef, AfterContentInit, QueryList, TemplateRef } from '@angular/core';
+import { MegaMenuItem, MenuItem } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+export declare class MegaMenu implements AfterContentInit {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    model: MegaMenuItem[];
+    style: any;
+    styleClass: string;
+    orientation: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    templates: QueryList<any>;
+    activeItem: any;
+    documentClickListener: any;
+    startTemplate: TemplateRef<any>;
+    endTemplate: TemplateRef<any>;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    onCategoryMouseEnter(event: any, menuitem: MegaMenuItem): void;
+    onCategoryClick(event: any, item: MenuItem | MegaMenuItem): void;
+    itemClick(event: any, item: MenuItem | MegaMenuItem): void;
+    getColumnClass(menuitem: MegaMenuItem): any;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MegaMenu, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<MegaMenu, "p-megaMenu", never, { "model": "model"; "style": "style"; "styleClass": "styleClass"; "orientation": "orientation"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; }, {}, ["templates"], ["*"]>;
+}
+export declare class MegaMenuModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MegaMenuModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MegaMenuModule, [typeof MegaMenu], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.RippleModule, typeof i4.TooltipModule], [typeof MegaMenu, typeof i2.RouterModule, typeof i4.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MegaMenuModule>;
+}
Index: trip-planner-front/node_modules/primeng/megamenu/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/megamenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/megamenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-megamenu.mjs",
+  "es2020": "../fesm2020/primeng-megamenu.mjs",
+  "esm2020": "../esm2020/megamenu/primeng-megamenu.mjs",
+  "fesm2020": "../fesm2020/primeng-megamenu.mjs",
+  "fesm2015": "../fesm2015/primeng-megamenu.mjs",
+  "typings": "primeng-megamenu.d.ts",
+  "sideEffects": false,
+  "name": "primeng/megamenu"
+}
Index: trip-planner-front/node_modules/primeng/megamenu/primeng-megamenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/megamenu/primeng-megamenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/megamenu/primeng-megamenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/megamenu" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/megamenu/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/megamenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/megamenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './megamenu';
Index: trip-planner-front/node_modules/primeng/menu/menu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menu/menu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menu/menu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,74 @@
+import { ElementRef, OnDestroy, EventEmitter, Renderer2, ChangeDetectorRef } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { MenuItem, OverlayService, PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+export declare class MenuItemContent {
+    item: MenuItem;
+    menu: Menu;
+    constructor(menu: any);
+    onItemKeyDown(event: any): void;
+    findNextItem(item: any): any;
+    findPrevItem(item: any): any;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemContent, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemContent, "[pMenuItemContent]", never, { "item": "pMenuItemContent"; }, {}, never, never>;
+}
+export declare class Menu implements OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    private cd;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    model: MenuItem[];
+    popup: boolean;
+    style: any;
+    styleClass: string;
+    appendTo: any;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    containerViewChild: ElementRef;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    container: HTMLDivElement;
+    scrollHandler: any;
+    documentClickListener: any;
+    documentResizeListener: any;
+    preventDocumentDefault: boolean;
+    target: any;
+    visible: boolean;
+    relativeAlign: boolean;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, config: PrimeNGConfig, overlayService: OverlayService);
+    toggle(event: any): void;
+    show(event: any): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationEnd(event: AnimationEvent): void;
+    alignOverlay(): void;
+    appendOverlay(): void;
+    restoreOverlayAppend(): void;
+    moveOnTop(): void;
+    hide(): void;
+    onWindowResize(): void;
+    itemClick(event: any, item: MenuItem): void;
+    onOverlayClick(event: any): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    hasSubMenu(): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Menu, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Menu, "p-menu", never, { "model": "model"; "popup": "popup"; "style": "style"; "styleClass": "styleClass"; "appendTo": "appendTo"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "onShow": "onShow"; "onHide": "onHide"; }, never, never>;
+}
+export declare class MenuModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MenuModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MenuModule, [typeof Menu, typeof MenuItemContent], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.RippleModule, typeof i4.TooltipModule], [typeof Menu, typeof i2.RouterModule, typeof i4.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MenuModule>;
+}
Index: trip-planner-front/node_modules/primeng/menu/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/menu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-menu.mjs",
+  "es2020": "../fesm2020/primeng-menu.mjs",
+  "esm2020": "../esm2020/menu/primeng-menu.mjs",
+  "fesm2020": "../fesm2020/primeng-menu.mjs",
+  "fesm2015": "../fesm2015/primeng-menu.mjs",
+  "typings": "primeng-menu.d.ts",
+  "sideEffects": false,
+  "name": "primeng/menu"
+}
Index: trip-planner-front/node_modules/primeng/menu/primeng-menu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menu/primeng-menu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menu/primeng-menu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/menu" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/menu/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './menu';
Index: trip-planner-front/node_modules/primeng/menubar/menubar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menubar/menubar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menubar/menubar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,68 @@
+import { ElementRef, Renderer2, OnDestroy, ChangeDetectorRef, AfterContentInit, QueryList, TemplateRef, EventEmitter } from '@angular/core';
+import { MenuItem, PrimeNGConfig } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/ripple";
+import * as i4 from "primeng/tooltip";
+export declare class MenubarSub implements OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    private cd;
+    item: MenuItem;
+    root: boolean;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    mobileActive: boolean;
+    autoDisplay: boolean;
+    get parentActive(): boolean;
+    set parentActive(value: boolean);
+    leafClick: EventEmitter<any>;
+    _parentActive: boolean;
+    documentClickListener: any;
+    menuHoverActive: boolean;
+    activeItem: any;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef);
+    onItemClick(event: any, item: any): void;
+    onItemMouseEnter(event: any, item: any): void;
+    onLeafClick(): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MenubarSub, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<MenubarSub, "p-menubarSub", never, { "item": "item"; "root": "root"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "mobileActive": "mobileActive"; "autoDisplay": "autoDisplay"; "parentActive": "parentActive"; }, { "leafClick": "leafClick"; }, never, never>;
+}
+export declare class Menubar implements AfterContentInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    config: PrimeNGConfig;
+    model: MenuItem[];
+    style: any;
+    styleClass: string;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    autoDisplay: boolean;
+    templates: QueryList<any>;
+    menubutton: ElementRef;
+    rootmenu: MenubarSub;
+    startTemplate: TemplateRef<any>;
+    endTemplate: TemplateRef<any>;
+    mobileActive: boolean;
+    outsideClickListener: any;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, config: PrimeNGConfig);
+    ngAfterContentInit(): void;
+    toggle(event: any): void;
+    bindOutsideClickListener(): void;
+    hide(): void;
+    onLeafClick(): void;
+    unbindOutsideClickListener(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Menubar, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Menubar, "p-menubar", never, { "model": "model"; "style": "style"; "styleClass": "styleClass"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "autoDisplay": "autoDisplay"; }, {}, ["templates"], ["*"]>;
+}
+export declare class MenubarModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MenubarModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MenubarModule, [typeof Menubar, typeof MenubarSub], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.RippleModule, typeof i4.TooltipModule], [typeof Menubar, typeof i2.RouterModule, typeof i4.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MenubarModule>;
+}
Index: trip-planner-front/node_modules/primeng/menubar/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/menubar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menubar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-menubar.mjs",
+  "es2020": "../fesm2020/primeng-menubar.mjs",
+  "esm2020": "../esm2020/menubar/primeng-menubar.mjs",
+  "fesm2020": "../fesm2020/primeng-menubar.mjs",
+  "fesm2015": "../fesm2015/primeng-menubar.mjs",
+  "typings": "primeng-menubar.d.ts",
+  "sideEffects": false,
+  "name": "primeng/menubar"
+}
Index: trip-planner-front/node_modules/primeng/menubar/primeng-menubar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menubar/primeng-menubar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menubar/primeng-menubar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/menubar" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/menubar/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/menubar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/menubar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './menubar';
Index: trip-planner-front/node_modules/primeng/message/message.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/message/message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/message/message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class UIMessage {
+    severity: string;
+    text: string;
+    escape: boolean;
+    style: any;
+    styleClass: string;
+    get icon(): string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<UIMessage, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<UIMessage, "p-message", never, { "severity": "severity"; "text": "text"; "escape": "escape"; "style": "style"; "styleClass": "styleClass"; }, {}, never, never>;
+}
+export declare class MessageModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MessageModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MessageModule, [typeof UIMessage], [typeof i1.CommonModule], [typeof UIMessage]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MessageModule>;
+}
Index: trip-planner-front/node_modules/primeng/message/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/message/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/message/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-message.mjs",
+  "es2020": "../fesm2020/primeng-message.mjs",
+  "esm2020": "../esm2020/message/primeng-message.mjs",
+  "fesm2020": "../fesm2020/primeng-message.mjs",
+  "fesm2015": "../fesm2015/primeng-message.mjs",
+  "typings": "primeng-message.d.ts",
+  "sideEffects": false,
+  "name": "primeng/message"
+}
Index: trip-planner-front/node_modules/primeng/message/primeng-message.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/message/primeng-message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/message/primeng-message.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/message" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/message/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/message/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/message/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './message';
Index: trip-planner-front/node_modules/primeng/messages/messages.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/messages/messages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/messages/messages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,40 @@
+import { OnDestroy, EventEmitter, AfterContentInit, ElementRef, QueryList, TemplateRef, ChangeDetectorRef } from '@angular/core';
+import { Message, MessageService } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+export declare class Messages implements AfterContentInit, OnDestroy {
+    messageService: MessageService;
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    value: Message[];
+    closable: boolean;
+    style: any;
+    styleClass: string;
+    enableService: boolean;
+    key: string;
+    escape: boolean;
+    severity: string;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    templates: QueryList<any>;
+    valueChange: EventEmitter<Message[]>;
+    messageSubscription: Subscription;
+    clearSubscription: Subscription;
+    contentTemplate: TemplateRef<any>;
+    constructor(messageService: MessageService, el: ElementRef, cd: ChangeDetectorRef);
+    ngAfterContentInit(): void;
+    hasMessages(): boolean;
+    clear(): void;
+    removeMessage(i: number): void;
+    get icon(): string;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Messages, [{ optional: true; }, null, null]>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Messages, "p-messages", never, { "value": "value"; "closable": "closable"; "style": "style"; "styleClass": "styleClass"; "enableService": "enableService"; "key": "key"; "escape": "escape"; "severity": "severity"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "valueChange": "valueChange"; }, ["templates"], never>;
+}
+export declare class MessagesModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MessagesModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MessagesModule, [typeof Messages], [typeof i1.CommonModule, typeof i2.RippleModule], [typeof Messages]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MessagesModule>;
+}
Index: trip-planner-front/node_modules/primeng/messages/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/messages/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/messages/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-messages.mjs",
+  "es2020": "../fesm2020/primeng-messages.mjs",
+  "esm2020": "../esm2020/messages/primeng-messages.mjs",
+  "fesm2020": "../fesm2020/primeng-messages.mjs",
+  "fesm2015": "../fesm2015/primeng-messages.mjs",
+  "typings": "primeng-messages.d.ts",
+  "sideEffects": false,
+  "name": "primeng/messages"
+}
Index: trip-planner-front/node_modules/primeng/messages/primeng-messages.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/messages/primeng-messages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/messages/primeng-messages.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/messages" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/messages/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/messages/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/messages/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './messages';
Index: trip-planner-front/node_modules/primeng/multiselect/multiselect.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/multiselect/multiselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/multiselect/multiselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,199 @@
+import { ElementRef, OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, Renderer2, EventEmitter, ChangeDetectorRef, TemplateRef, QueryList } from '@angular/core';
+import { AnimationEvent } from '@angular/animations';
+import { FilterService, PrimeNGConfig, OverlayService } from 'primeng/api';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "@angular/cdk/scrolling";
+import * as i4 from "primeng/tooltip";
+import * as i5 from "primeng/ripple";
+export declare const MULTISELECT_VALUE_ACCESSOR: any;
+export declare class MultiSelectItem {
+    option: any;
+    selected: boolean;
+    label: any;
+    disabled: boolean;
+    itemSize: number;
+    template: TemplateRef<any>;
+    onClick: EventEmitter<any>;
+    onKeydown: EventEmitter<any>;
+    onOptionClick(event: Event): void;
+    onOptionKeydown(event: Event): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectItem, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectItem, "p-multiSelectItem", never, { "option": "option"; "selected": "selected"; "label": "label"; "disabled": "disabled"; "itemSize": "itemSize"; "template": "template"; }, { "onClick": "onClick"; "onKeydown": "onKeydown"; }, never, never>;
+}
+export declare class MultiSelect implements OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, OnDestroy, ControlValueAccessor {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    filterService: FilterService;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    style: any;
+    styleClass: string;
+    panelStyle: any;
+    panelStyleClass: string;
+    inputId: string;
+    disabled: boolean;
+    readonly: boolean;
+    group: boolean;
+    filter: boolean;
+    filterPlaceHolder: string;
+    filterLocale: string;
+    overlayVisible: boolean;
+    tabindex: number;
+    appendTo: any;
+    dataKey: string;
+    name: string;
+    ariaLabelledBy: string;
+    displaySelectedLabel: boolean;
+    maxSelectedLabels: number;
+    selectionLimit: number;
+    selectedItemsLabel: string;
+    showToggleAll: boolean;
+    emptyFilterMessage: string;
+    emptyMessage: string;
+    resetFilterOnHide: boolean;
+    dropdownIcon: string;
+    optionLabel: string;
+    optionValue: string;
+    optionDisabled: string;
+    optionGroupLabel: string;
+    optionGroupChildren: string;
+    showHeader: boolean;
+    autoZIndex: boolean;
+    baseZIndex: number;
+    filterBy: string;
+    virtualScroll: boolean;
+    itemSize: number;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    ariaFilterLabel: string;
+    filterMatchMode: string;
+    tooltip: string;
+    tooltipPosition: string;
+    tooltipPositionStyle: string;
+    tooltipStyleClass: string;
+    autofocusFilter: boolean;
+    display: string;
+    containerViewChild: ElementRef;
+    filterInputChild: ElementRef;
+    accessibleViewChild: ElementRef;
+    footerFacet: any;
+    headerFacet: any;
+    templates: QueryList<any>;
+    onChange: EventEmitter<any>;
+    onFilter: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    onClick: EventEmitter<any>;
+    onPanelShow: EventEmitter<any>;
+    onPanelHide: EventEmitter<any>;
+    scrollHeight: string;
+    _defaultLabel: string;
+    set defaultLabel(val: string);
+    get defaultLabel(): string;
+    _placeholder: string;
+    set placeholder(val: string);
+    get placeholder(): string;
+    get options(): any[];
+    set options(val: any[]);
+    get filterValue(): string;
+    set filterValue(val: string);
+    value: any[];
+    _filteredOptions: any[];
+    onModelChange: Function;
+    onModelTouched: Function;
+    overlay: HTMLDivElement;
+    valuesAsString: string;
+    focus: boolean;
+    filled: boolean;
+    documentClickListener: any;
+    _filterValue: string;
+    filtered: boolean;
+    itemTemplate: TemplateRef<any>;
+    groupTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    emptyFilterTemplate: TemplateRef<any>;
+    emptyTemplate: TemplateRef<any>;
+    selectedItemsTemplate: TemplateRef<any>;
+    headerCheckboxFocus: boolean;
+    _options: any[];
+    maxSelectionLimitReached: boolean;
+    scrollHandler: any;
+    documentResizeListener: any;
+    preventModelTouched: boolean;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, filterService: FilterService, config: PrimeNGConfig, overlayService: OverlayService);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    ngAfterViewInit(): void;
+    ngAfterViewChecked(): void;
+    getOptionLabel(option: any): any;
+    getOptionValue(option: any): any;
+    getOptionGroupLabel(optionGroup: any): any;
+    getOptionGroupChildren(optionGroup: any): any;
+    isOptionDisabled(option: any): any;
+    writeValue(value: any): void;
+    checkSelectionLimit(): void;
+    updateFilledState(): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    onOptionClick(event: any): void;
+    isSelected(option: any): boolean;
+    findSelectionIndex(val: any): number;
+    get toggleAllDisabled(): boolean;
+    toggleAll(event: any): void;
+    checkAll(): void;
+    uncheckAll(): void;
+    show(): void;
+    onOverlayClick(event: any): void;
+    onOverlayAnimationStart(event: AnimationEvent): void;
+    onOverlayAnimationEnd(event: AnimationEvent): void;
+    appendOverlay(): void;
+    restoreOverlayAppend(): void;
+    alignOverlay(): void;
+    hide(): void;
+    close(event: any): void;
+    onMouseclick(event: MouseEvent, input: any): void;
+    removeChip(chip: any, event: MouseEvent): void;
+    isOverlayClick(event: MouseEvent): boolean;
+    isOutsideClicked(event: MouseEvent): boolean;
+    onInputFocus(event: any): void;
+    onInputBlur(event: any): void;
+    onOptionKeydown(event: any): void;
+    findNextItem(item: any): any;
+    findPrevItem(item: any): any;
+    onKeydown(event: KeyboardEvent): void;
+    updateLabel(): void;
+    findLabelByValue(val: any): string;
+    searchLabelByValue(val: any, options: any[]): string;
+    get allChecked(): boolean;
+    get optionsToRender(): any[];
+    get emptyOptions(): boolean;
+    get emptyMessageLabel(): string;
+    get emptyFilterMessageLabel(): string;
+    hasFilter(): boolean;
+    onFilterInputChange(event: KeyboardEvent): void;
+    activateFilter(): void;
+    onHeaderCheckboxFocus(): void;
+    onHeaderCheckboxBlur(): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    onWindowResize(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    onOverlayHide(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelect, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelect, "p-multiSelect", never, { "style": "style"; "styleClass": "styleClass"; "panelStyle": "panelStyle"; "panelStyleClass": "panelStyleClass"; "inputId": "inputId"; "disabled": "disabled"; "readonly": "readonly"; "group": "group"; "filter": "filter"; "filterPlaceHolder": "filterPlaceHolder"; "filterLocale": "filterLocale"; "overlayVisible": "overlayVisible"; "tabindex": "tabindex"; "appendTo": "appendTo"; "dataKey": "dataKey"; "name": "name"; "ariaLabelledBy": "ariaLabelledBy"; "displaySelectedLabel": "displaySelectedLabel"; "maxSelectedLabels": "maxSelectedLabels"; "selectionLimit": "selectionLimit"; "selectedItemsLabel": "selectedItemsLabel"; "showToggleAll": "showToggleAll"; "emptyFilterMessage": "emptyFilterMessage"; "emptyMessage": "emptyMessage"; "resetFilterOnHide": "resetFilterOnHide"; "dropdownIcon": "dropdownIcon"; "optionLabel": "optionLabel"; "optionValue": "optionValue"; "optionDisabled": "optionDisabled"; "optionGroupLabel": "optionGroupLabel"; "optionGroupChildren": "optionGroupChildren"; "showHeader": "showHeader"; "autoZIndex": "autoZIndex"; "baseZIndex": "baseZIndex"; "filterBy": "filterBy"; "virtualScroll": "virtualScroll"; "itemSize": "itemSize"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "ariaFilterLabel": "ariaFilterLabel"; "filterMatchMode": "filterMatchMode"; "tooltip": "tooltip"; "tooltipPosition": "tooltipPosition"; "tooltipPositionStyle": "tooltipPositionStyle"; "tooltipStyleClass": "tooltipStyleClass"; "autofocusFilter": "autofocusFilter"; "display": "display"; "scrollHeight": "scrollHeight"; "defaultLabel": "defaultLabel"; "placeholder": "placeholder"; "options": "options"; "filterValue": "filterValue"; }, { "onChange": "onChange"; "onFilter": "onFilter"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onClick": "onClick"; "onPanelShow": "onPanelShow"; "onPanelHide": "onPanelHide"; }, ["footerFacet", "headerFacet", "templates"], ["p-header", "p-footer"]>;
+}
+export declare class MultiSelectModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<MultiSelectModule, [typeof MultiSelect, typeof MultiSelectItem], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.ScrollingModule, typeof i4.TooltipModule, typeof i5.RippleModule], [typeof MultiSelect, typeof i2.SharedModule, typeof i3.ScrollingModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<MultiSelectModule>;
+}
Index: trip-planner-front/node_modules/primeng/multiselect/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/multiselect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/multiselect/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-multiselect.mjs",
+  "es2020": "../fesm2020/primeng-multiselect.mjs",
+  "esm2020": "../esm2020/multiselect/primeng-multiselect.mjs",
+  "fesm2020": "../fesm2020/primeng-multiselect.mjs",
+  "fesm2015": "../fesm2015/primeng-multiselect.mjs",
+  "typings": "primeng-multiselect.d.ts",
+  "sideEffects": false,
+  "name": "primeng/multiselect"
+}
Index: trip-planner-front/node_modules/primeng/multiselect/primeng-multiselect.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/multiselect/primeng-multiselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/multiselect/primeng-multiselect.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/multiselect" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/multiselect/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/multiselect/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/multiselect/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './multiselect';
Index: trip-planner-front/node_modules/primeng/orderlist/orderlist.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/orderlist/orderlist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/orderlist/orderlist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,81 @@
+import { ElementRef, AfterViewChecked, AfterContentInit, QueryList, TemplateRef, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { FilterService } from 'primeng/api';
+import { CdkDragDrop } from '@angular/cdk/drag-drop';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+import * as i3 from "primeng/api";
+import * as i4 from "primeng/ripple";
+import * as i5 from "@angular/cdk/drag-drop";
+export declare class OrderList implements AfterViewChecked, AfterContentInit {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    filterService: FilterService;
+    header: string;
+    style: any;
+    styleClass: string;
+    listStyle: any;
+    responsive: boolean;
+    filterBy: string;
+    filterPlaceholder: string;
+    filterLocale: string;
+    metaKeySelection: boolean;
+    dragdrop: boolean;
+    controlsPosition: string;
+    ariaFilterLabel: string;
+    filterMatchMode: string;
+    breakpoint: string;
+    selectionChange: EventEmitter<any>;
+    trackBy: Function;
+    onReorder: EventEmitter<any>;
+    onSelectionChange: EventEmitter<any>;
+    onFilterEvent: EventEmitter<any>;
+    listViewChild: ElementRef;
+    templates: QueryList<any>;
+    itemTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    emptyMessageTemplate: TemplateRef<any>;
+    emptyFilterMessageTemplate: TemplateRef<any>;
+    _selection: any[];
+    movedUp: boolean;
+    movedDown: boolean;
+    itemTouched: boolean;
+    styleElement: any;
+    id: string;
+    filterValue: string;
+    visibleOptions: any[];
+    _value: any[];
+    constructor(el: ElementRef, cd: ChangeDetectorRef, filterService: FilterService);
+    get selection(): any[];
+    set selection(val: any[]);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    ngAfterViewChecked(): void;
+    get value(): any[];
+    set value(val: any[]);
+    onItemClick(event: any, item: any, index: any): void;
+    onFilterKeyup(event: any): void;
+    filter(): void;
+    isItemVisible(item: any): boolean;
+    onItemTouchEnd(): void;
+    isSelected(item: any): boolean;
+    isEmpty(): boolean;
+    moveUp(): void;
+    moveTop(): void;
+    moveDown(): void;
+    moveBottom(): void;
+    onDrop(event: CdkDragDrop<string[]>): void;
+    onItemKeydown(event: KeyboardEvent, item: any, index: Number): void;
+    findNextItem(item: any): any;
+    findPrevItem(item: any): any;
+    createStyle(): void;
+    destroyStyle(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<OrderList, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<OrderList, "p-orderList", never, { "header": "header"; "style": "style"; "styleClass": "styleClass"; "listStyle": "listStyle"; "responsive": "responsive"; "filterBy": "filterBy"; "filterPlaceholder": "filterPlaceholder"; "filterLocale": "filterLocale"; "metaKeySelection": "metaKeySelection"; "dragdrop": "dragdrop"; "controlsPosition": "controlsPosition"; "ariaFilterLabel": "ariaFilterLabel"; "filterMatchMode": "filterMatchMode"; "breakpoint": "breakpoint"; "trackBy": "trackBy"; "selection": "selection"; "value": "value"; }, { "selectionChange": "selectionChange"; "onReorder": "onReorder"; "onSelectionChange": "onSelectionChange"; "onFilterEvent": "onFilterEvent"; }, ["templates"], never>;
+}
+export declare class OrderListModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<OrderListModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<OrderListModule, [typeof OrderList], [typeof i1.CommonModule, typeof i2.ButtonModule, typeof i3.SharedModule, typeof i4.RippleModule, typeof i5.DragDropModule], [typeof OrderList, typeof i3.SharedModule, typeof i5.DragDropModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<OrderListModule>;
+}
Index: trip-planner-front/node_modules/primeng/orderlist/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/orderlist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/orderlist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-orderlist.mjs",
+  "es2020": "../fesm2020/primeng-orderlist.mjs",
+  "esm2020": "../esm2020/orderlist/primeng-orderlist.mjs",
+  "fesm2020": "../fesm2020/primeng-orderlist.mjs",
+  "fesm2015": "../fesm2015/primeng-orderlist.mjs",
+  "typings": "primeng-orderlist.d.ts",
+  "sideEffects": false,
+  "name": "primeng/orderlist"
+}
Index: trip-planner-front/node_modules/primeng/orderlist/primeng-orderlist.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/orderlist/primeng-orderlist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/orderlist/primeng-orderlist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/orderlist" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/orderlist/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/orderlist/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/orderlist/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './orderlist';
Index: trip-planner-front/node_modules/primeng/organizationchart/organizationchart.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/organizationchart/organizationchart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/organizationchart/organizationchart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,60 @@
+import { ElementRef, AfterContentInit, EventEmitter, TemplateRef, QueryList, ChangeDetectorRef, OnDestroy } from '@angular/core';
+import { TreeNode } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+export declare class OrganizationChartNode implements OnDestroy {
+    cd: ChangeDetectorRef;
+    node: TreeNode;
+    root: boolean;
+    first: boolean;
+    last: boolean;
+    chart: OrganizationChart;
+    subscription: Subscription;
+    constructor(chart: any, cd: ChangeDetectorRef);
+    get leaf(): boolean;
+    get colspan(): number;
+    onNodeClick(event: Event, node: TreeNode): void;
+    toggleNode(event: Event, node: TreeNode): void;
+    isSelected(): boolean;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChartNode, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationChartNode, "[pOrganizationChartNode]", never, { "node": "node"; "root": "root"; "first": "first"; "last": "last"; }, {}, never, never>;
+}
+export declare class OrganizationChart implements AfterContentInit {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    value: TreeNode[];
+    style: any;
+    styleClass: string;
+    selectionMode: string;
+    preserveSpace: boolean;
+    get selection(): any;
+    set selection(val: any);
+    selectionChange: EventEmitter<any>;
+    onNodeSelect: EventEmitter<any>;
+    onNodeUnselect: EventEmitter<any>;
+    onNodeExpand: EventEmitter<any>;
+    onNodeCollapse: EventEmitter<any>;
+    templates: QueryList<any>;
+    templateMap: any;
+    private selectionSource;
+    _selection: any;
+    initialized: boolean;
+    selectionSource$: import("rxjs").Observable<any>;
+    constructor(el: ElementRef, cd: ChangeDetectorRef);
+    get root(): TreeNode;
+    ngAfterContentInit(): void;
+    getTemplateForNode(node: TreeNode): TemplateRef<any>;
+    onNodeClick(event: Event, node: TreeNode): void;
+    findIndexInSelection(node: TreeNode): number;
+    isSelected(node: TreeNode): boolean;
+    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChart, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationChart, "p-organizationChart", never, { "value": "value"; "style": "style"; "styleClass": "styleClass"; "selectionMode": "selectionMode"; "preserveSpace": "preserveSpace"; "selection": "selection"; }, { "selectionChange": "selectionChange"; "onNodeSelect": "onNodeSelect"; "onNodeUnselect": "onNodeUnselect"; "onNodeExpand": "onNodeExpand"; "onNodeCollapse": "onNodeCollapse"; }, ["templates"], never>;
+}
+export declare class OrganizationChartModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChartModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<OrganizationChartModule, [typeof OrganizationChart, typeof OrganizationChartNode], [typeof i1.CommonModule], [typeof OrganizationChart, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<OrganizationChartModule>;
+}
Index: trip-planner-front/node_modules/primeng/organizationchart/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/organizationchart/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/organizationchart/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-organizationchart.mjs",
+  "es2020": "../fesm2020/primeng-organizationchart.mjs",
+  "esm2020": "../esm2020/organizationchart/primeng-organizationchart.mjs",
+  "fesm2020": "../fesm2020/primeng-organizationchart.mjs",
+  "fesm2015": "../fesm2015/primeng-organizationchart.mjs",
+  "typings": "primeng-organizationchart.d.ts",
+  "sideEffects": false,
+  "name": "primeng/organizationchart"
+}
Index: trip-planner-front/node_modules/primeng/organizationchart/primeng-organizationchart.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/organizationchart/primeng-organizationchart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/organizationchart/primeng-organizationchart.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/organizationchart" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/organizationchart/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/organizationchart/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/organizationchart/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './organizationchart';
Index: trip-planner-front/node_modules/primeng/overlaypanel/overlaypanel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/overlaypanel/overlaypanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/overlaypanel/overlaypanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,74 @@
+import { OnDestroy, EventEmitter, Renderer2, ElementRef, ChangeDetectorRef, NgZone, TemplateRef, AfterContentInit, QueryList } from '@angular/core';
+import { PrimeNGConfig, OverlayService } from 'primeng/api';
+import { AnimationEvent } from '@angular/animations';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/ripple";
+import * as i3 from "primeng/api";
+export declare class OverlayPanel implements AfterContentInit, OnDestroy {
+    el: ElementRef;
+    renderer: Renderer2;
+    cd: ChangeDetectorRef;
+    private zone;
+    config: PrimeNGConfig;
+    overlayService: OverlayService;
+    dismissable: boolean;
+    showCloseIcon: boolean;
+    style: any;
+    styleClass: string;
+    appendTo: any;
+    autoZIndex: boolean;
+    ariaCloseLabel: string;
+    baseZIndex: number;
+    focusOnShow: boolean;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    onShow: EventEmitter<any>;
+    onHide: EventEmitter<any>;
+    templates: QueryList<any>;
+    container: HTMLDivElement;
+    overlayVisible: boolean;
+    render: boolean;
+    selfClick: boolean;
+    documentClickListener: any;
+    target: any;
+    willHide: boolean;
+    scrollHandler: any;
+    documentResizeListener: any;
+    contentTemplate: TemplateRef<any>;
+    destroyCallback: Function;
+    overlayEventListener: any;
+    overlaySubscription: Subscription;
+    constructor(el: ElementRef, renderer: Renderer2, cd: ChangeDetectorRef, zone: NgZone, config: PrimeNGConfig, overlayService: OverlayService);
+    ngAfterContentInit(): void;
+    bindDocumentClickListener(): void;
+    unbindDocumentClickListener(): void;
+    toggle(event: any, target?: any): void;
+    show(event: any, target?: any): void;
+    onOverlayClick(event: any): void;
+    onContentClick(): void;
+    hasTargetChanged(event: any, target: any): boolean;
+    appendContainer(): void;
+    restoreAppend(): void;
+    align(): void;
+    onAnimationStart(event: AnimationEvent): void;
+    onAnimationEnd(event: AnimationEvent): void;
+    focus(): void;
+    hide(): void;
+    onCloseClick(event: any): void;
+    onWindowResize(event: any): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    onContainerDestroy(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<OverlayPanel, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<OverlayPanel, "p-overlayPanel", never, { "dismissable": "dismissable"; "showCloseIcon": "showCloseIcon"; "style": "style"; "styleClass": "styleClass"; "appendTo": "appendTo"; "autoZIndex": "autoZIndex"; "ariaCloseLabel": "ariaCloseLabel"; "baseZIndex": "baseZIndex"; "focusOnShow": "focusOnShow"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; }, { "onShow": "onShow"; "onHide": "onHide"; }, ["templates"], ["*"]>;
+}
+export declare class OverlayPanelModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<OverlayPanelModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<OverlayPanelModule, [typeof OverlayPanel], [typeof i1.CommonModule, typeof i2.RippleModule, typeof i3.SharedModule], [typeof OverlayPanel, typeof i3.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<OverlayPanelModule>;
+}
Index: trip-planner-front/node_modules/primeng/overlaypanel/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/overlaypanel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/overlaypanel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-overlaypanel.mjs",
+  "es2020": "../fesm2020/primeng-overlaypanel.mjs",
+  "esm2020": "../esm2020/overlaypanel/primeng-overlaypanel.mjs",
+  "fesm2020": "../fesm2020/primeng-overlaypanel.mjs",
+  "fesm2015": "../fesm2015/primeng-overlaypanel.mjs",
+  "typings": "primeng-overlaypanel.d.ts",
+  "sideEffects": false,
+  "name": "primeng/overlaypanel"
+}
Index: trip-planner-front/node_modules/primeng/overlaypanel/primeng-overlaypanel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/overlaypanel/primeng-overlaypanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/overlaypanel/primeng-overlaypanel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/overlaypanel" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/overlaypanel/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/overlaypanel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/overlaypanel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './overlaypanel';
Index: trip-planner-front/node_modules/primeng/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,866 @@
+{
+  "_from": "primeng",
+  "_id": "primeng@13.0.0-rc.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Y0ktkNOttaNVthC5g259Diw5c9BjgvqGxzceZ3gv83m3+8AUbnA+CcNN1Q8a4u7awm9cSoQ2F9LBRrip2Mqr+Q==",
+  "_location": "/primeng",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "primeng",
+    "name": "primeng",
+    "escapedName": "primeng",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/primeng/-/primeng-13.0.0-rc.2.tgz",
+  "_shasum": "6b294c747eb0e95bb8e5b1ebf42a2c1586224616",
+  "_spec": "primeng",
+  "_where": "C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front",
+  "bugs": {
+    "url": "https://github.com/primefaces/primeng/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "tslib": "^2.3.0"
+  },
+  "deprecated": false,
+  "description": "[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primeng.svg)](https://badge.fury.io/js/primeng) [![npm downloads](https://img.shields.io/npm/dm/primeng.svg)](https://www.npmjs.com/package/primeng) [![Build Status](https://travis-ci.org/primefaces/primeng.svg?branch=master)](https://travis-ci.org/primefaces/primeng) [![Discord Chat](https://img.shields.io/discord/557940238991753223.svg?color=7289da&label=chat&logo=discord)](https://discord.gg/gzKFYnpmCY)",
+  "es2020": "fesm2020/primeng.mjs",
+  "esm2020": "esm2020/primeng.mjs",
+  "exports": {
+    "./package.json": {
+      "default": "./package.json"
+    },
+    ".": {
+      "types": "./primeng.d.ts",
+      "esm2020": "./esm2020/primeng.mjs",
+      "es2020": "./fesm2020/primeng.mjs",
+      "es2015": "./fesm2015/primeng.mjs",
+      "node": "./fesm2015/primeng.mjs",
+      "default": "./fesm2020/primeng.mjs"
+    },
+    "./accordion": {
+      "types": "./accordion/primeng-accordion.d.ts",
+      "esm2020": "./esm2020/accordion/primeng-accordion.mjs",
+      "es2020": "./fesm2020/primeng-accordion.mjs",
+      "es2015": "./fesm2015/primeng-accordion.mjs",
+      "node": "./fesm2015/primeng-accordion.mjs",
+      "default": "./fesm2020/primeng-accordion.mjs"
+    },
+    "./api": {
+      "types": "./api/primeng-api.d.ts",
+      "esm2020": "./esm2020/api/primeng-api.mjs",
+      "es2020": "./fesm2020/primeng-api.mjs",
+      "es2015": "./fesm2015/primeng-api.mjs",
+      "node": "./fesm2015/primeng-api.mjs",
+      "default": "./fesm2020/primeng-api.mjs"
+    },
+    "./autocomplete": {
+      "types": "./autocomplete/primeng-autocomplete.d.ts",
+      "esm2020": "./esm2020/autocomplete/primeng-autocomplete.mjs",
+      "es2020": "./fesm2020/primeng-autocomplete.mjs",
+      "es2015": "./fesm2015/primeng-autocomplete.mjs",
+      "node": "./fesm2015/primeng-autocomplete.mjs",
+      "default": "./fesm2020/primeng-autocomplete.mjs"
+    },
+    "./avatar": {
+      "types": "./avatar/primeng-avatar.d.ts",
+      "esm2020": "./esm2020/avatar/primeng-avatar.mjs",
+      "es2020": "./fesm2020/primeng-avatar.mjs",
+      "es2015": "./fesm2015/primeng-avatar.mjs",
+      "node": "./fesm2015/primeng-avatar.mjs",
+      "default": "./fesm2020/primeng-avatar.mjs"
+    },
+    "./avatargroup": {
+      "types": "./avatargroup/primeng-avatargroup.d.ts",
+      "esm2020": "./esm2020/avatargroup/primeng-avatargroup.mjs",
+      "es2020": "./fesm2020/primeng-avatargroup.mjs",
+      "es2015": "./fesm2015/primeng-avatargroup.mjs",
+      "node": "./fesm2015/primeng-avatargroup.mjs",
+      "default": "./fesm2020/primeng-avatargroup.mjs"
+    },
+    "./badge": {
+      "types": "./badge/primeng-badge.d.ts",
+      "esm2020": "./esm2020/badge/primeng-badge.mjs",
+      "es2020": "./fesm2020/primeng-badge.mjs",
+      "es2015": "./fesm2015/primeng-badge.mjs",
+      "node": "./fesm2015/primeng-badge.mjs",
+      "default": "./fesm2020/primeng-badge.mjs"
+    },
+    "./blockui": {
+      "types": "./blockui/primeng-blockui.d.ts",
+      "esm2020": "./esm2020/blockui/primeng-blockui.mjs",
+      "es2020": "./fesm2020/primeng-blockui.mjs",
+      "es2015": "./fesm2015/primeng-blockui.mjs",
+      "node": "./fesm2015/primeng-blockui.mjs",
+      "default": "./fesm2020/primeng-blockui.mjs"
+    },
+    "./breadcrumb": {
+      "types": "./breadcrumb/primeng-breadcrumb.d.ts",
+      "esm2020": "./esm2020/breadcrumb/primeng-breadcrumb.mjs",
+      "es2020": "./fesm2020/primeng-breadcrumb.mjs",
+      "es2015": "./fesm2015/primeng-breadcrumb.mjs",
+      "node": "./fesm2015/primeng-breadcrumb.mjs",
+      "default": "./fesm2020/primeng-breadcrumb.mjs"
+    },
+    "./button": {
+      "types": "./button/primeng-button.d.ts",
+      "esm2020": "./esm2020/button/primeng-button.mjs",
+      "es2020": "./fesm2020/primeng-button.mjs",
+      "es2015": "./fesm2015/primeng-button.mjs",
+      "node": "./fesm2015/primeng-button.mjs",
+      "default": "./fesm2020/primeng-button.mjs"
+    },
+    "./calendar": {
+      "types": "./calendar/primeng-calendar.d.ts",
+      "esm2020": "./esm2020/calendar/primeng-calendar.mjs",
+      "es2020": "./fesm2020/primeng-calendar.mjs",
+      "es2015": "./fesm2015/primeng-calendar.mjs",
+      "node": "./fesm2015/primeng-calendar.mjs",
+      "default": "./fesm2020/primeng-calendar.mjs"
+    },
+    "./captcha": {
+      "types": "./captcha/primeng-captcha.d.ts",
+      "esm2020": "./esm2020/captcha/primeng-captcha.mjs",
+      "es2020": "./fesm2020/primeng-captcha.mjs",
+      "es2015": "./fesm2015/primeng-captcha.mjs",
+      "node": "./fesm2015/primeng-captcha.mjs",
+      "default": "./fesm2020/primeng-captcha.mjs"
+    },
+    "./card": {
+      "types": "./card/primeng-card.d.ts",
+      "esm2020": "./esm2020/card/primeng-card.mjs",
+      "es2020": "./fesm2020/primeng-card.mjs",
+      "es2015": "./fesm2015/primeng-card.mjs",
+      "node": "./fesm2015/primeng-card.mjs",
+      "default": "./fesm2020/primeng-card.mjs"
+    },
+    "./carousel": {
+      "types": "./carousel/primeng-carousel.d.ts",
+      "esm2020": "./esm2020/carousel/primeng-carousel.mjs",
+      "es2020": "./fesm2020/primeng-carousel.mjs",
+      "es2015": "./fesm2015/primeng-carousel.mjs",
+      "node": "./fesm2015/primeng-carousel.mjs",
+      "default": "./fesm2020/primeng-carousel.mjs"
+    },
+    "./cascadeselect": {
+      "types": "./cascadeselect/primeng-cascadeselect.d.ts",
+      "esm2020": "./esm2020/cascadeselect/primeng-cascadeselect.mjs",
+      "es2020": "./fesm2020/primeng-cascadeselect.mjs",
+      "es2015": "./fesm2015/primeng-cascadeselect.mjs",
+      "node": "./fesm2015/primeng-cascadeselect.mjs",
+      "default": "./fesm2020/primeng-cascadeselect.mjs"
+    },
+    "./chart": {
+      "types": "./chart/primeng-chart.d.ts",
+      "esm2020": "./esm2020/chart/primeng-chart.mjs",
+      "es2020": "./fesm2020/primeng-chart.mjs",
+      "es2015": "./fesm2015/primeng-chart.mjs",
+      "node": "./fesm2015/primeng-chart.mjs",
+      "default": "./fesm2020/primeng-chart.mjs"
+    },
+    "./checkbox": {
+      "types": "./checkbox/primeng-checkbox.d.ts",
+      "esm2020": "./esm2020/checkbox/primeng-checkbox.mjs",
+      "es2020": "./fesm2020/primeng-checkbox.mjs",
+      "es2015": "./fesm2015/primeng-checkbox.mjs",
+      "node": "./fesm2015/primeng-checkbox.mjs",
+      "default": "./fesm2020/primeng-checkbox.mjs"
+    },
+    "./chip": {
+      "types": "./chip/primeng-chip.d.ts",
+      "esm2020": "./esm2020/chip/primeng-chip.mjs",
+      "es2020": "./fesm2020/primeng-chip.mjs",
+      "es2015": "./fesm2015/primeng-chip.mjs",
+      "node": "./fesm2015/primeng-chip.mjs",
+      "default": "./fesm2020/primeng-chip.mjs"
+    },
+    "./chips": {
+      "types": "./chips/primeng-chips.d.ts",
+      "esm2020": "./esm2020/chips/primeng-chips.mjs",
+      "es2020": "./fesm2020/primeng-chips.mjs",
+      "es2015": "./fesm2015/primeng-chips.mjs",
+      "node": "./fesm2015/primeng-chips.mjs",
+      "default": "./fesm2020/primeng-chips.mjs"
+    },
+    "./codehighlighter": {
+      "types": "./codehighlighter/primeng-codehighlighter.d.ts",
+      "esm2020": "./esm2020/codehighlighter/primeng-codehighlighter.mjs",
+      "es2020": "./fesm2020/primeng-codehighlighter.mjs",
+      "es2015": "./fesm2015/primeng-codehighlighter.mjs",
+      "node": "./fesm2015/primeng-codehighlighter.mjs",
+      "default": "./fesm2020/primeng-codehighlighter.mjs"
+    },
+    "./colorpicker": {
+      "types": "./colorpicker/primeng-colorpicker.d.ts",
+      "esm2020": "./esm2020/colorpicker/primeng-colorpicker.mjs",
+      "es2020": "./fesm2020/primeng-colorpicker.mjs",
+      "es2015": "./fesm2015/primeng-colorpicker.mjs",
+      "node": "./fesm2015/primeng-colorpicker.mjs",
+      "default": "./fesm2020/primeng-colorpicker.mjs"
+    },
+    "./confirmdialog": {
+      "types": "./confirmdialog/primeng-confirmdialog.d.ts",
+      "esm2020": "./esm2020/confirmdialog/primeng-confirmdialog.mjs",
+      "es2020": "./fesm2020/primeng-confirmdialog.mjs",
+      "es2015": "./fesm2015/primeng-confirmdialog.mjs",
+      "node": "./fesm2015/primeng-confirmdialog.mjs",
+      "default": "./fesm2020/primeng-confirmdialog.mjs"
+    },
+    "./confirmpopup": {
+      "types": "./confirmpopup/primeng-confirmpopup.d.ts",
+      "esm2020": "./esm2020/confirmpopup/primeng-confirmpopup.mjs",
+      "es2020": "./fesm2020/primeng-confirmpopup.mjs",
+      "es2015": "./fesm2015/primeng-confirmpopup.mjs",
+      "node": "./fesm2015/primeng-confirmpopup.mjs",
+      "default": "./fesm2020/primeng-confirmpopup.mjs"
+    },
+    "./contextmenu": {
+      "types": "./contextmenu/primeng-contextmenu.d.ts",
+      "esm2020": "./esm2020/contextmenu/primeng-contextmenu.mjs",
+      "es2020": "./fesm2020/primeng-contextmenu.mjs",
+      "es2015": "./fesm2015/primeng-contextmenu.mjs",
+      "node": "./fesm2015/primeng-contextmenu.mjs",
+      "default": "./fesm2020/primeng-contextmenu.mjs"
+    },
+    "./dataview": {
+      "types": "./dataview/primeng-dataview.d.ts",
+      "esm2020": "./esm2020/dataview/primeng-dataview.mjs",
+      "es2020": "./fesm2020/primeng-dataview.mjs",
+      "es2015": "./fesm2015/primeng-dataview.mjs",
+      "node": "./fesm2015/primeng-dataview.mjs",
+      "default": "./fesm2020/primeng-dataview.mjs"
+    },
+    "./defer": {
+      "types": "./defer/primeng-defer.d.ts",
+      "esm2020": "./esm2020/defer/primeng-defer.mjs",
+      "es2020": "./fesm2020/primeng-defer.mjs",
+      "es2015": "./fesm2015/primeng-defer.mjs",
+      "node": "./fesm2015/primeng-defer.mjs",
+      "default": "./fesm2020/primeng-defer.mjs"
+    },
+    "./dialog": {
+      "types": "./dialog/primeng-dialog.d.ts",
+      "esm2020": "./esm2020/dialog/primeng-dialog.mjs",
+      "es2020": "./fesm2020/primeng-dialog.mjs",
+      "es2015": "./fesm2015/primeng-dialog.mjs",
+      "node": "./fesm2015/primeng-dialog.mjs",
+      "default": "./fesm2020/primeng-dialog.mjs"
+    },
+    "./divider": {
+      "types": "./divider/primeng-divider.d.ts",
+      "esm2020": "./esm2020/divider/primeng-divider.mjs",
+      "es2020": "./fesm2020/primeng-divider.mjs",
+      "es2015": "./fesm2015/primeng-divider.mjs",
+      "node": "./fesm2015/primeng-divider.mjs",
+      "default": "./fesm2020/primeng-divider.mjs"
+    },
+    "./dock": {
+      "types": "./dock/primeng-dock.d.ts",
+      "esm2020": "./esm2020/dock/primeng-dock.mjs",
+      "es2020": "./fesm2020/primeng-dock.mjs",
+      "es2015": "./fesm2015/primeng-dock.mjs",
+      "node": "./fesm2015/primeng-dock.mjs",
+      "default": "./fesm2020/primeng-dock.mjs"
+    },
+    "./dom": {
+      "types": "./dom/primeng-dom.d.ts",
+      "esm2020": "./esm2020/dom/primeng-dom.mjs",
+      "es2020": "./fesm2020/primeng-dom.mjs",
+      "es2015": "./fesm2015/primeng-dom.mjs",
+      "node": "./fesm2015/primeng-dom.mjs",
+      "default": "./fesm2020/primeng-dom.mjs"
+    },
+    "./dragdrop": {
+      "types": "./dragdrop/primeng-dragdrop.d.ts",
+      "esm2020": "./esm2020/dragdrop/primeng-dragdrop.mjs",
+      "es2020": "./fesm2020/primeng-dragdrop.mjs",
+      "es2015": "./fesm2015/primeng-dragdrop.mjs",
+      "node": "./fesm2015/primeng-dragdrop.mjs",
+      "default": "./fesm2020/primeng-dragdrop.mjs"
+    },
+    "./dropdown": {
+      "types": "./dropdown/primeng-dropdown.d.ts",
+      "esm2020": "./esm2020/dropdown/primeng-dropdown.mjs",
+      "es2020": "./fesm2020/primeng-dropdown.mjs",
+      "es2015": "./fesm2015/primeng-dropdown.mjs",
+      "node": "./fesm2015/primeng-dropdown.mjs",
+      "default": "./fesm2020/primeng-dropdown.mjs"
+    },
+    "./dynamicdialog": {
+      "types": "./dynamicdialog/primeng-dynamicdialog.d.ts",
+      "esm2020": "./esm2020/dynamicdialog/primeng-dynamicdialog.mjs",
+      "es2020": "./fesm2020/primeng-dynamicdialog.mjs",
+      "es2015": "./fesm2015/primeng-dynamicdialog.mjs",
+      "node": "./fesm2015/primeng-dynamicdialog.mjs",
+      "default": "./fesm2020/primeng-dynamicdialog.mjs"
+    },
+    "./editor": {
+      "types": "./editor/primeng-editor.d.ts",
+      "esm2020": "./esm2020/editor/primeng-editor.mjs",
+      "es2020": "./fesm2020/primeng-editor.mjs",
+      "es2015": "./fesm2015/primeng-editor.mjs",
+      "node": "./fesm2015/primeng-editor.mjs",
+      "default": "./fesm2020/primeng-editor.mjs"
+    },
+    "./fieldset": {
+      "types": "./fieldset/primeng-fieldset.d.ts",
+      "esm2020": "./esm2020/fieldset/primeng-fieldset.mjs",
+      "es2020": "./fesm2020/primeng-fieldset.mjs",
+      "es2015": "./fesm2015/primeng-fieldset.mjs",
+      "node": "./fesm2015/primeng-fieldset.mjs",
+      "default": "./fesm2020/primeng-fieldset.mjs"
+    },
+    "./fileupload": {
+      "types": "./fileupload/primeng-fileupload.d.ts",
+      "esm2020": "./esm2020/fileupload/primeng-fileupload.mjs",
+      "es2020": "./fesm2020/primeng-fileupload.mjs",
+      "es2015": "./fesm2015/primeng-fileupload.mjs",
+      "node": "./fesm2015/primeng-fileupload.mjs",
+      "default": "./fesm2020/primeng-fileupload.mjs"
+    },
+    "./focustrap": {
+      "types": "./focustrap/primeng-focustrap.d.ts",
+      "esm2020": "./esm2020/focustrap/primeng-focustrap.mjs",
+      "es2020": "./fesm2020/primeng-focustrap.mjs",
+      "es2015": "./fesm2015/primeng-focustrap.mjs",
+      "node": "./fesm2015/primeng-focustrap.mjs",
+      "default": "./fesm2020/primeng-focustrap.mjs"
+    },
+    "./fullcalendar": {
+      "types": "./fullcalendar/primeng-fullcalendar.d.ts",
+      "esm2020": "./esm2020/fullcalendar/primeng-fullcalendar.mjs",
+      "es2020": "./fesm2020/primeng-fullcalendar.mjs",
+      "es2015": "./fesm2015/primeng-fullcalendar.mjs",
+      "node": "./fesm2015/primeng-fullcalendar.mjs",
+      "default": "./fesm2020/primeng-fullcalendar.mjs"
+    },
+    "./galleria": {
+      "types": "./galleria/primeng-galleria.d.ts",
+      "esm2020": "./esm2020/galleria/primeng-galleria.mjs",
+      "es2020": "./fesm2020/primeng-galleria.mjs",
+      "es2015": "./fesm2015/primeng-galleria.mjs",
+      "node": "./fesm2015/primeng-galleria.mjs",
+      "default": "./fesm2020/primeng-galleria.mjs"
+    },
+    "./gmap": {
+      "types": "./gmap/primeng-gmap.d.ts",
+      "esm2020": "./esm2020/gmap/primeng-gmap.mjs",
+      "es2020": "./fesm2020/primeng-gmap.mjs",
+      "es2015": "./fesm2015/primeng-gmap.mjs",
+      "node": "./fesm2015/primeng-gmap.mjs",
+      "default": "./fesm2020/primeng-gmap.mjs"
+    },
+    "./image": {
+      "types": "./image/primeng-image.d.ts",
+      "esm2020": "./esm2020/image/primeng-image.mjs",
+      "es2020": "./fesm2020/primeng-image.mjs",
+      "es2015": "./fesm2015/primeng-image.mjs",
+      "node": "./fesm2015/primeng-image.mjs",
+      "default": "./fesm2020/primeng-image.mjs"
+    },
+    "./inplace": {
+      "types": "./inplace/primeng-inplace.d.ts",
+      "esm2020": "./esm2020/inplace/primeng-inplace.mjs",
+      "es2020": "./fesm2020/primeng-inplace.mjs",
+      "es2015": "./fesm2015/primeng-inplace.mjs",
+      "node": "./fesm2015/primeng-inplace.mjs",
+      "default": "./fesm2020/primeng-inplace.mjs"
+    },
+    "./inputmask": {
+      "types": "./inputmask/primeng-inputmask.d.ts",
+      "esm2020": "./esm2020/inputmask/primeng-inputmask.mjs",
+      "es2020": "./fesm2020/primeng-inputmask.mjs",
+      "es2015": "./fesm2015/primeng-inputmask.mjs",
+      "node": "./fesm2015/primeng-inputmask.mjs",
+      "default": "./fesm2020/primeng-inputmask.mjs"
+    },
+    "./inputnumber": {
+      "types": "./inputnumber/primeng-inputnumber.d.ts",
+      "esm2020": "./esm2020/inputnumber/primeng-inputnumber.mjs",
+      "es2020": "./fesm2020/primeng-inputnumber.mjs",
+      "es2015": "./fesm2015/primeng-inputnumber.mjs",
+      "node": "./fesm2015/primeng-inputnumber.mjs",
+      "default": "./fesm2020/primeng-inputnumber.mjs"
+    },
+    "./inputswitch": {
+      "types": "./inputswitch/primeng-inputswitch.d.ts",
+      "esm2020": "./esm2020/inputswitch/primeng-inputswitch.mjs",
+      "es2020": "./fesm2020/primeng-inputswitch.mjs",
+      "es2015": "./fesm2015/primeng-inputswitch.mjs",
+      "node": "./fesm2015/primeng-inputswitch.mjs",
+      "default": "./fesm2020/primeng-inputswitch.mjs"
+    },
+    "./inputtext": {
+      "types": "./inputtext/primeng-inputtext.d.ts",
+      "esm2020": "./esm2020/inputtext/primeng-inputtext.mjs",
+      "es2020": "./fesm2020/primeng-inputtext.mjs",
+      "es2015": "./fesm2015/primeng-inputtext.mjs",
+      "node": "./fesm2015/primeng-inputtext.mjs",
+      "default": "./fesm2020/primeng-inputtext.mjs"
+    },
+    "./inputtextarea": {
+      "types": "./inputtextarea/primeng-inputtextarea.d.ts",
+      "esm2020": "./esm2020/inputtextarea/primeng-inputtextarea.mjs",
+      "es2020": "./fesm2020/primeng-inputtextarea.mjs",
+      "es2015": "./fesm2015/primeng-inputtextarea.mjs",
+      "node": "./fesm2015/primeng-inputtextarea.mjs",
+      "default": "./fesm2020/primeng-inputtextarea.mjs"
+    },
+    "./keyfilter": {
+      "types": "./keyfilter/primeng-keyfilter.d.ts",
+      "esm2020": "./esm2020/keyfilter/primeng-keyfilter.mjs",
+      "es2020": "./fesm2020/primeng-keyfilter.mjs",
+      "es2015": "./fesm2015/primeng-keyfilter.mjs",
+      "node": "./fesm2015/primeng-keyfilter.mjs",
+      "default": "./fesm2020/primeng-keyfilter.mjs"
+    },
+    "./knob": {
+      "types": "./knob/primeng-knob.d.ts",
+      "esm2020": "./esm2020/knob/primeng-knob.mjs",
+      "es2020": "./fesm2020/primeng-knob.mjs",
+      "es2015": "./fesm2015/primeng-knob.mjs",
+      "node": "./fesm2015/primeng-knob.mjs",
+      "default": "./fesm2020/primeng-knob.mjs"
+    },
+    "./lightbox": {
+      "types": "./lightbox/primeng-lightbox.d.ts",
+      "esm2020": "./esm2020/lightbox/primeng-lightbox.mjs",
+      "es2020": "./fesm2020/primeng-lightbox.mjs",
+      "es2015": "./fesm2015/primeng-lightbox.mjs",
+      "node": "./fesm2015/primeng-lightbox.mjs",
+      "default": "./fesm2020/primeng-lightbox.mjs"
+    },
+    "./listbox": {
+      "types": "./listbox/primeng-listbox.d.ts",
+      "esm2020": "./esm2020/listbox/primeng-listbox.mjs",
+      "es2020": "./fesm2020/primeng-listbox.mjs",
+      "es2015": "./fesm2015/primeng-listbox.mjs",
+      "node": "./fesm2015/primeng-listbox.mjs",
+      "default": "./fesm2020/primeng-listbox.mjs"
+    },
+    "./megamenu": {
+      "types": "./megamenu/primeng-megamenu.d.ts",
+      "esm2020": "./esm2020/megamenu/primeng-megamenu.mjs",
+      "es2020": "./fesm2020/primeng-megamenu.mjs",
+      "es2015": "./fesm2015/primeng-megamenu.mjs",
+      "node": "./fesm2015/primeng-megamenu.mjs",
+      "default": "./fesm2020/primeng-megamenu.mjs"
+    },
+    "./menu": {
+      "types": "./menu/primeng-menu.d.ts",
+      "esm2020": "./esm2020/menu/primeng-menu.mjs",
+      "es2020": "./fesm2020/primeng-menu.mjs",
+      "es2015": "./fesm2015/primeng-menu.mjs",
+      "node": "./fesm2015/primeng-menu.mjs",
+      "default": "./fesm2020/primeng-menu.mjs"
+    },
+    "./menubar": {
+      "types": "./menubar/primeng-menubar.d.ts",
+      "esm2020": "./esm2020/menubar/primeng-menubar.mjs",
+      "es2020": "./fesm2020/primeng-menubar.mjs",
+      "es2015": "./fesm2015/primeng-menubar.mjs",
+      "node": "./fesm2015/primeng-menubar.mjs",
+      "default": "./fesm2020/primeng-menubar.mjs"
+    },
+    "./message": {
+      "types": "./message/primeng-message.d.ts",
+      "esm2020": "./esm2020/message/primeng-message.mjs",
+      "es2020": "./fesm2020/primeng-message.mjs",
+      "es2015": "./fesm2015/primeng-message.mjs",
+      "node": "./fesm2015/primeng-message.mjs",
+      "default": "./fesm2020/primeng-message.mjs"
+    },
+    "./messages": {
+      "types": "./messages/primeng-messages.d.ts",
+      "esm2020": "./esm2020/messages/primeng-messages.mjs",
+      "es2020": "./fesm2020/primeng-messages.mjs",
+      "es2015": "./fesm2015/primeng-messages.mjs",
+      "node": "./fesm2015/primeng-messages.mjs",
+      "default": "./fesm2020/primeng-messages.mjs"
+    },
+    "./multiselect": {
+      "types": "./multiselect/primeng-multiselect.d.ts",
+      "esm2020": "./esm2020/multiselect/primeng-multiselect.mjs",
+      "es2020": "./fesm2020/primeng-multiselect.mjs",
+      "es2015": "./fesm2015/primeng-multiselect.mjs",
+      "node": "./fesm2015/primeng-multiselect.mjs",
+      "default": "./fesm2020/primeng-multiselect.mjs"
+    },
+    "./orderlist": {
+      "types": "./orderlist/primeng-orderlist.d.ts",
+      "esm2020": "./esm2020/orderlist/primeng-orderlist.mjs",
+      "es2020": "./fesm2020/primeng-orderlist.mjs",
+      "es2015": "./fesm2015/primeng-orderlist.mjs",
+      "node": "./fesm2015/primeng-orderlist.mjs",
+      "default": "./fesm2020/primeng-orderlist.mjs"
+    },
+    "./organizationchart": {
+      "types": "./organizationchart/primeng-organizationchart.d.ts",
+      "esm2020": "./esm2020/organizationchart/primeng-organizationchart.mjs",
+      "es2020": "./fesm2020/primeng-organizationchart.mjs",
+      "es2015": "./fesm2015/primeng-organizationchart.mjs",
+      "node": "./fesm2015/primeng-organizationchart.mjs",
+      "default": "./fesm2020/primeng-organizationchart.mjs"
+    },
+    "./overlaypanel": {
+      "types": "./overlaypanel/primeng-overlaypanel.d.ts",
+      "esm2020": "./esm2020/overlaypanel/primeng-overlaypanel.mjs",
+      "es2020": "./fesm2020/primeng-overlaypanel.mjs",
+      "es2015": "./fesm2015/primeng-overlaypanel.mjs",
+      "node": "./fesm2015/primeng-overlaypanel.mjs",
+      "default": "./fesm2020/primeng-overlaypanel.mjs"
+    },
+    "./paginator": {
+      "types": "./paginator/primeng-paginator.d.ts",
+      "esm2020": "./esm2020/paginator/primeng-paginator.mjs",
+      "es2020": "./fesm2020/primeng-paginator.mjs",
+      "es2015": "./fesm2015/primeng-paginator.mjs",
+      "node": "./fesm2015/primeng-paginator.mjs",
+      "default": "./fesm2020/primeng-paginator.mjs"
+    },
+    "./panel": {
+      "types": "./panel/primeng-panel.d.ts",
+      "esm2020": "./esm2020/panel/primeng-panel.mjs",
+      "es2020": "./fesm2020/primeng-panel.mjs",
+      "es2015": "./fesm2015/primeng-panel.mjs",
+      "node": "./fesm2015/primeng-panel.mjs",
+      "default": "./fesm2020/primeng-panel.mjs"
+    },
+    "./panelmenu": {
+      "types": "./panelmenu/primeng-panelmenu.d.ts",
+      "esm2020": "./esm2020/panelmenu/primeng-panelmenu.mjs",
+      "es2020": "./fesm2020/primeng-panelmenu.mjs",
+      "es2015": "./fesm2015/primeng-panelmenu.mjs",
+      "node": "./fesm2015/primeng-panelmenu.mjs",
+      "default": "./fesm2020/primeng-panelmenu.mjs"
+    },
+    "./password": {
+      "types": "./password/primeng-password.d.ts",
+      "esm2020": "./esm2020/password/primeng-password.mjs",
+      "es2020": "./fesm2020/primeng-password.mjs",
+      "es2015": "./fesm2015/primeng-password.mjs",
+      "node": "./fesm2015/primeng-password.mjs",
+      "default": "./fesm2020/primeng-password.mjs"
+    },
+    "./picklist": {
+      "types": "./picklist/primeng-picklist.d.ts",
+      "esm2020": "./esm2020/picklist/primeng-picklist.mjs",
+      "es2020": "./fesm2020/primeng-picklist.mjs",
+      "es2015": "./fesm2015/primeng-picklist.mjs",
+      "node": "./fesm2015/primeng-picklist.mjs",
+      "default": "./fesm2020/primeng-picklist.mjs"
+    },
+    "./progressbar": {
+      "types": "./progressbar/primeng-progressbar.d.ts",
+      "esm2020": "./esm2020/progressbar/primeng-progressbar.mjs",
+      "es2020": "./fesm2020/primeng-progressbar.mjs",
+      "es2015": "./fesm2015/primeng-progressbar.mjs",
+      "node": "./fesm2015/primeng-progressbar.mjs",
+      "default": "./fesm2020/primeng-progressbar.mjs"
+    },
+    "./progressspinner": {
+      "types": "./progressspinner/primeng-progressspinner.d.ts",
+      "esm2020": "./esm2020/progressspinner/primeng-progressspinner.mjs",
+      "es2020": "./fesm2020/primeng-progressspinner.mjs",
+      "es2015": "./fesm2015/primeng-progressspinner.mjs",
+      "node": "./fesm2015/primeng-progressspinner.mjs",
+      "default": "./fesm2020/primeng-progressspinner.mjs"
+    },
+    "./radiobutton": {
+      "types": "./radiobutton/primeng-radiobutton.d.ts",
+      "esm2020": "./esm2020/radiobutton/primeng-radiobutton.mjs",
+      "es2020": "./fesm2020/primeng-radiobutton.mjs",
+      "es2015": "./fesm2015/primeng-radiobutton.mjs",
+      "node": "./fesm2015/primeng-radiobutton.mjs",
+      "default": "./fesm2020/primeng-radiobutton.mjs"
+    },
+    "./rating": {
+      "types": "./rating/primeng-rating.d.ts",
+      "esm2020": "./esm2020/rating/primeng-rating.mjs",
+      "es2020": "./fesm2020/primeng-rating.mjs",
+      "es2015": "./fesm2015/primeng-rating.mjs",
+      "node": "./fesm2015/primeng-rating.mjs",
+      "default": "./fesm2020/primeng-rating.mjs"
+    },
+    "./ripple": {
+      "types": "./ripple/primeng-ripple.d.ts",
+      "esm2020": "./esm2020/ripple/primeng-ripple.mjs",
+      "es2020": "./fesm2020/primeng-ripple.mjs",
+      "es2015": "./fesm2015/primeng-ripple.mjs",
+      "node": "./fesm2015/primeng-ripple.mjs",
+      "default": "./fesm2020/primeng-ripple.mjs"
+    },
+    "./scrollpanel": {
+      "types": "./scrollpanel/primeng-scrollpanel.d.ts",
+      "esm2020": "./esm2020/scrollpanel/primeng-scrollpanel.mjs",
+      "es2020": "./fesm2020/primeng-scrollpanel.mjs",
+      "es2015": "./fesm2015/primeng-scrollpanel.mjs",
+      "node": "./fesm2015/primeng-scrollpanel.mjs",
+      "default": "./fesm2020/primeng-scrollpanel.mjs"
+    },
+    "./scrolltop": {
+      "types": "./scrolltop/primeng-scrolltop.d.ts",
+      "esm2020": "./esm2020/scrolltop/primeng-scrolltop.mjs",
+      "es2020": "./fesm2020/primeng-scrolltop.mjs",
+      "es2015": "./fesm2015/primeng-scrolltop.mjs",
+      "node": "./fesm2015/primeng-scrolltop.mjs",
+      "default": "./fesm2020/primeng-scrolltop.mjs"
+    },
+    "./selectbutton": {
+      "types": "./selectbutton/primeng-selectbutton.d.ts",
+      "esm2020": "./esm2020/selectbutton/primeng-selectbutton.mjs",
+      "es2020": "./fesm2020/primeng-selectbutton.mjs",
+      "es2015": "./fesm2015/primeng-selectbutton.mjs",
+      "node": "./fesm2015/primeng-selectbutton.mjs",
+      "default": "./fesm2020/primeng-selectbutton.mjs"
+    },
+    "./sidebar": {
+      "types": "./sidebar/primeng-sidebar.d.ts",
+      "esm2020": "./esm2020/sidebar/primeng-sidebar.mjs",
+      "es2020": "./fesm2020/primeng-sidebar.mjs",
+      "es2015": "./fesm2015/primeng-sidebar.mjs",
+      "node": "./fesm2015/primeng-sidebar.mjs",
+      "default": "./fesm2020/primeng-sidebar.mjs"
+    },
+    "./skeleton": {
+      "types": "./skeleton/primeng-skeleton.d.ts",
+      "esm2020": "./esm2020/skeleton/primeng-skeleton.mjs",
+      "es2020": "./fesm2020/primeng-skeleton.mjs",
+      "es2015": "./fesm2015/primeng-skeleton.mjs",
+      "node": "./fesm2015/primeng-skeleton.mjs",
+      "default": "./fesm2020/primeng-skeleton.mjs"
+    },
+    "./slidemenu": {
+      "types": "./slidemenu/primeng-slidemenu.d.ts",
+      "esm2020": "./esm2020/slidemenu/primeng-slidemenu.mjs",
+      "es2020": "./fesm2020/primeng-slidemenu.mjs",
+      "es2015": "./fesm2015/primeng-slidemenu.mjs",
+      "node": "./fesm2015/primeng-slidemenu.mjs",
+      "default": "./fesm2020/primeng-slidemenu.mjs"
+    },
+    "./slider": {
+      "types": "./slider/primeng-slider.d.ts",
+      "esm2020": "./esm2020/slider/primeng-slider.mjs",
+      "es2020": "./fesm2020/primeng-slider.mjs",
+      "es2015": "./fesm2015/primeng-slider.mjs",
+      "node": "./fesm2015/primeng-slider.mjs",
+      "default": "./fesm2020/primeng-slider.mjs"
+    },
+    "./speeddial": {
+      "types": "./speeddial/primeng-speeddial.d.ts",
+      "esm2020": "./esm2020/speeddial/primeng-speeddial.mjs",
+      "es2020": "./fesm2020/primeng-speeddial.mjs",
+      "es2015": "./fesm2015/primeng-speeddial.mjs",
+      "node": "./fesm2015/primeng-speeddial.mjs",
+      "default": "./fesm2020/primeng-speeddial.mjs"
+    },
+    "./spinner": {
+      "types": "./spinner/primeng-spinner.d.ts",
+      "esm2020": "./esm2020/spinner/primeng-spinner.mjs",
+      "es2020": "./fesm2020/primeng-spinner.mjs",
+      "es2015": "./fesm2015/primeng-spinner.mjs",
+      "node": "./fesm2015/primeng-spinner.mjs",
+      "default": "./fesm2020/primeng-spinner.mjs"
+    },
+    "./splitbutton": {
+      "types": "./splitbutton/primeng-splitbutton.d.ts",
+      "esm2020": "./esm2020/splitbutton/primeng-splitbutton.mjs",
+      "es2020": "./fesm2020/primeng-splitbutton.mjs",
+      "es2015": "./fesm2015/primeng-splitbutton.mjs",
+      "node": "./fesm2015/primeng-splitbutton.mjs",
+      "default": "./fesm2020/primeng-splitbutton.mjs"
+    },
+    "./splitter": {
+      "types": "./splitter/primeng-splitter.d.ts",
+      "esm2020": "./esm2020/splitter/primeng-splitter.mjs",
+      "es2020": "./fesm2020/primeng-splitter.mjs",
+      "es2015": "./fesm2015/primeng-splitter.mjs",
+      "node": "./fesm2015/primeng-splitter.mjs",
+      "default": "./fesm2020/primeng-splitter.mjs"
+    },
+    "./steps": {
+      "types": "./steps/primeng-steps.d.ts",
+      "esm2020": "./esm2020/steps/primeng-steps.mjs",
+      "es2020": "./fesm2020/primeng-steps.mjs",
+      "es2015": "./fesm2015/primeng-steps.mjs",
+      "node": "./fesm2015/primeng-steps.mjs",
+      "default": "./fesm2020/primeng-steps.mjs"
+    },
+    "./styleclass": {
+      "types": "./styleclass/primeng-styleclass.d.ts",
+      "esm2020": "./esm2020/styleclass/primeng-styleclass.mjs",
+      "es2020": "./fesm2020/primeng-styleclass.mjs",
+      "es2015": "./fesm2015/primeng-styleclass.mjs",
+      "node": "./fesm2015/primeng-styleclass.mjs",
+      "default": "./fesm2020/primeng-styleclass.mjs"
+    },
+    "./table": {
+      "types": "./table/primeng-table.d.ts",
+      "esm2020": "./esm2020/table/primeng-table.mjs",
+      "es2020": "./fesm2020/primeng-table.mjs",
+      "es2015": "./fesm2015/primeng-table.mjs",
+      "node": "./fesm2015/primeng-table.mjs",
+      "default": "./fesm2020/primeng-table.mjs"
+    },
+    "./tabmenu": {
+      "types": "./tabmenu/primeng-tabmenu.d.ts",
+      "esm2020": "./esm2020/tabmenu/primeng-tabmenu.mjs",
+      "es2020": "./fesm2020/primeng-tabmenu.mjs",
+      "es2015": "./fesm2015/primeng-tabmenu.mjs",
+      "node": "./fesm2015/primeng-tabmenu.mjs",
+      "default": "./fesm2020/primeng-tabmenu.mjs"
+    },
+    "./tabview": {
+      "types": "./tabview/primeng-tabview.d.ts",
+      "esm2020": "./esm2020/tabview/primeng-tabview.mjs",
+      "es2020": "./fesm2020/primeng-tabview.mjs",
+      "es2015": "./fesm2015/primeng-tabview.mjs",
+      "node": "./fesm2015/primeng-tabview.mjs",
+      "default": "./fesm2020/primeng-tabview.mjs"
+    },
+    "./tag": {
+      "types": "./tag/primeng-tag.d.ts",
+      "esm2020": "./esm2020/tag/primeng-tag.mjs",
+      "es2020": "./fesm2020/primeng-tag.mjs",
+      "es2015": "./fesm2015/primeng-tag.mjs",
+      "node": "./fesm2015/primeng-tag.mjs",
+      "default": "./fesm2020/primeng-tag.mjs"
+    },
+    "./terminal": {
+      "types": "./terminal/primeng-terminal.d.ts",
+      "esm2020": "./esm2020/terminal/primeng-terminal.mjs",
+      "es2020": "./fesm2020/primeng-terminal.mjs",
+      "es2015": "./fesm2015/primeng-terminal.mjs",
+      "node": "./fesm2015/primeng-terminal.mjs",
+      "default": "./fesm2020/primeng-terminal.mjs"
+    },
+    "./tieredmenu": {
+      "types": "./tieredmenu/primeng-tieredmenu.d.ts",
+      "esm2020": "./esm2020/tieredmenu/primeng-tieredmenu.mjs",
+      "es2020": "./fesm2020/primeng-tieredmenu.mjs",
+      "es2015": "./fesm2015/primeng-tieredmenu.mjs",
+      "node": "./fesm2015/primeng-tieredmenu.mjs",
+      "default": "./fesm2020/primeng-tieredmenu.mjs"
+    },
+    "./timeline": {
+      "types": "./timeline/primeng-timeline.d.ts",
+      "esm2020": "./esm2020/timeline/primeng-timeline.mjs",
+      "es2020": "./fesm2020/primeng-timeline.mjs",
+      "es2015": "./fesm2015/primeng-timeline.mjs",
+      "node": "./fesm2015/primeng-timeline.mjs",
+      "default": "./fesm2020/primeng-timeline.mjs"
+    },
+    "./toast": {
+      "types": "./toast/primeng-toast.d.ts",
+      "esm2020": "./esm2020/toast/primeng-toast.mjs",
+      "es2020": "./fesm2020/primeng-toast.mjs",
+      "es2015": "./fesm2015/primeng-toast.mjs",
+      "node": "./fesm2015/primeng-toast.mjs",
+      "default": "./fesm2020/primeng-toast.mjs"
+    },
+    "./togglebutton": {
+      "types": "./togglebutton/primeng-togglebutton.d.ts",
+      "esm2020": "./esm2020/togglebutton/primeng-togglebutton.mjs",
+      "es2020": "./fesm2020/primeng-togglebutton.mjs",
+      "es2015": "./fesm2015/primeng-togglebutton.mjs",
+      "node": "./fesm2015/primeng-togglebutton.mjs",
+      "default": "./fesm2020/primeng-togglebutton.mjs"
+    },
+    "./toolbar": {
+      "types": "./toolbar/primeng-toolbar.d.ts",
+      "esm2020": "./esm2020/toolbar/primeng-toolbar.mjs",
+      "es2020": "./fesm2020/primeng-toolbar.mjs",
+      "es2015": "./fesm2015/primeng-toolbar.mjs",
+      "node": "./fesm2015/primeng-toolbar.mjs",
+      "default": "./fesm2020/primeng-toolbar.mjs"
+    },
+    "./tooltip": {
+      "types": "./tooltip/primeng-tooltip.d.ts",
+      "esm2020": "./esm2020/tooltip/primeng-tooltip.mjs",
+      "es2020": "./fesm2020/primeng-tooltip.mjs",
+      "es2015": "./fesm2015/primeng-tooltip.mjs",
+      "node": "./fesm2015/primeng-tooltip.mjs",
+      "default": "./fesm2020/primeng-tooltip.mjs"
+    },
+    "./tree": {
+      "types": "./tree/primeng-tree.d.ts",
+      "esm2020": "./esm2020/tree/primeng-tree.mjs",
+      "es2020": "./fesm2020/primeng-tree.mjs",
+      "es2015": "./fesm2015/primeng-tree.mjs",
+      "node": "./fesm2015/primeng-tree.mjs",
+      "default": "./fesm2020/primeng-tree.mjs"
+    },
+    "./treeselect": {
+      "types": "./treeselect/primeng-treeselect.d.ts",
+      "esm2020": "./esm2020/treeselect/primeng-treeselect.mjs",
+      "es2020": "./fesm2020/primeng-treeselect.mjs",
+      "es2015": "./fesm2015/primeng-treeselect.mjs",
+      "node": "./fesm2015/primeng-treeselect.mjs",
+      "default": "./fesm2020/primeng-treeselect.mjs"
+    },
+    "./treetable": {
+      "types": "./treetable/primeng-treetable.d.ts",
+      "esm2020": "./esm2020/treetable/primeng-treetable.mjs",
+      "es2020": "./fesm2020/primeng-treetable.mjs",
+      "es2015": "./fesm2015/primeng-treetable.mjs",
+      "node": "./fesm2015/primeng-treetable.mjs",
+      "default": "./fesm2020/primeng-treetable.mjs"
+    },
+    "./tristatecheckbox": {
+      "types": "./tristatecheckbox/primeng-tristatecheckbox.d.ts",
+      "esm2020": "./esm2020/tristatecheckbox/primeng-tristatecheckbox.mjs",
+      "es2020": "./fesm2020/primeng-tristatecheckbox.mjs",
+      "es2015": "./fesm2015/primeng-tristatecheckbox.mjs",
+      "node": "./fesm2015/primeng-tristatecheckbox.mjs",
+      "default": "./fesm2020/primeng-tristatecheckbox.mjs"
+    },
+    "./utils": {
+      "types": "./utils/primeng-utils.d.ts",
+      "esm2020": "./esm2020/utils/primeng-utils.mjs",
+      "es2020": "./fesm2020/primeng-utils.mjs",
+      "es2015": "./fesm2015/primeng-utils.mjs",
+      "node": "./fesm2015/primeng-utils.mjs",
+      "default": "./fesm2020/primeng-utils.mjs"
+    },
+    "./virtualscroller": {
+      "types": "./virtualscroller/primeng-virtualscroller.d.ts",
+      "esm2020": "./esm2020/virtualscroller/primeng-virtualscroller.mjs",
+      "es2020": "./fesm2020/primeng-virtualscroller.mjs",
+      "es2015": "./fesm2015/primeng-virtualscroller.mjs",
+      "node": "./fesm2015/primeng-virtualscroller.mjs",
+      "default": "./fesm2020/primeng-virtualscroller.mjs"
+    }
+  },
+  "fesm2015": "fesm2015/primeng.mjs",
+  "fesm2020": "fesm2020/primeng.mjs",
+  "homepage": "https://github.com/primefaces/primeng#readme",
+  "keywords": [
+    "angular"
+  ],
+  "license": "MIT",
+  "module": "fesm2015/primeng.mjs",
+  "name": "primeng",
+  "peerDependencies": {
+    "@angular/core": "^13.0.0",
+    "@angular/common": "^13.0.0",
+    "@angular/forms": "^13.0.0",
+    "rxjs": "^6.0.0 || ^7.0.0",
+    "zone.js": "^0.10.2 || ^0.11.0",
+    "primeicons": "^5.0.0"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/primefaces/primeng.git"
+  },
+  "sideEffects": false,
+  "typings": "primeng.d.ts",
+  "version": "13.0.0-rc.2"
+}
Index: trip-planner-front/node_modules/primeng/paginator/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/paginator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/paginator/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-paginator.mjs",
+  "es2020": "../fesm2020/primeng-paginator.mjs",
+  "esm2020": "../esm2020/paginator/primeng-paginator.mjs",
+  "fesm2020": "../fesm2020/primeng-paginator.mjs",
+  "fesm2015": "../fesm2015/primeng-paginator.mjs",
+  "typings": "primeng-paginator.d.ts",
+  "sideEffects": false,
+  "name": "primeng/paginator"
+}
Index: trip-planner-front/node_modules/primeng/paginator/paginator.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/paginator/paginator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/paginator/paginator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+import { OnInit, ChangeDetectorRef, EventEmitter, TemplateRef, OnChanges, SimpleChanges } from '@angular/core';
+import { SelectItem } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/dropdown";
+import * as i3 from "primeng/inputnumber";
+import * as i4 from "@angular/forms";
+import * as i5 from "primeng/api";
+import * as i6 from "primeng/ripple";
+export declare class Paginator implements OnInit, OnChanges {
+    private cd;
+    pageLinkSize: number;
+    onPageChange: EventEmitter<any>;
+    style: any;
+    styleClass: string;
+    alwaysShow: boolean;
+    templateLeft: TemplateRef<any>;
+    templateRight: TemplateRef<any>;
+    dropdownAppendTo: any;
+    dropdownScrollHeight: string;
+    currentPageReportTemplate: string;
+    showCurrentPageReport: boolean;
+    showFirstLastIcon: boolean;
+    totalRecords: number;
+    rows: number;
+    rowsPerPageOptions: any[];
+    showJumpToPageDropdown: boolean;
+    showJumpToPageInput: boolean;
+    showPageLinks: boolean;
+    dropdownItemTemplate: TemplateRef<any>;
+    pageLinks: number[];
+    pageItems: SelectItem[];
+    rowsPerPageItems: SelectItem[];
+    paginatorState: any;
+    _first: number;
+    _page: number;
+    constructor(cd: ChangeDetectorRef);
+    ngOnInit(): void;
+    ngOnChanges(simpleChange: SimpleChanges): void;
+    get first(): number;
+    set first(val: number);
+    updateRowsPerPageOptions(): void;
+    isFirstPage(): boolean;
+    isLastPage(): boolean;
+    getPageCount(): number;
+    calculatePageLinkBoundaries(): number[];
+    updatePageLinks(): void;
+    changePage(p: number): void;
+    updateFirst(): void;
+    getPage(): number;
+    changePageToFirst(event: any): void;
+    changePageToPrev(event: any): void;
+    changePageToNext(event: any): void;
+    changePageToLast(event: any): void;
+    onPageLinkClick(event: any, page: any): void;
+    onRppChange(event: any): void;
+    onPageDropdownChange(event: any): void;
+    updatePaginatorState(): void;
+    empty(): boolean;
+    currentPage(): number;
+    get currentPageReport(): string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Paginator, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Paginator, "p-paginator", never, { "pageLinkSize": "pageLinkSize"; "style": "style"; "styleClass": "styleClass"; "alwaysShow": "alwaysShow"; "templateLeft": "templateLeft"; "templateRight": "templateRight"; "dropdownAppendTo": "dropdownAppendTo"; "dropdownScrollHeight": "dropdownScrollHeight"; "currentPageReportTemplate": "currentPageReportTemplate"; "showCurrentPageReport": "showCurrentPageReport"; "showFirstLastIcon": "showFirstLastIcon"; "totalRecords": "totalRecords"; "rows": "rows"; "rowsPerPageOptions": "rowsPerPageOptions"; "showJumpToPageDropdown": "showJumpToPageDropdown"; "showJumpToPageInput": "showJumpToPageInput"; "showPageLinks": "showPageLinks"; "dropdownItemTemplate": "dropdownItemTemplate"; "first": "first"; }, { "onPageChange": "onPageChange"; }, never, never>;
+}
+export declare class PaginatorModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<PaginatorModule, [typeof Paginator], [typeof i1.CommonModule, typeof i2.DropdownModule, typeof i3.InputNumberModule, typeof i4.FormsModule, typeof i5.SharedModule, typeof i6.RippleModule], [typeof Paginator, typeof i2.DropdownModule, typeof i3.InputNumberModule, typeof i4.FormsModule, typeof i5.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<PaginatorModule>;
+}
Index: trip-planner-front/node_modules/primeng/paginator/primeng-paginator.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/paginator/primeng-paginator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/paginator/primeng-paginator.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/paginator" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/paginator/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/paginator/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/paginator/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './paginator';
Index: trip-planner-front/node_modules/primeng/panel/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/panel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panel/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-panel.mjs",
+  "es2020": "../fesm2020/primeng-panel.mjs",
+  "esm2020": "../esm2020/panel/primeng-panel.mjs",
+  "fesm2020": "../fesm2020/primeng-panel.mjs",
+  "fesm2015": "../fesm2015/primeng-panel.mjs",
+  "typings": "primeng-panel.d.ts",
+  "sideEffects": false,
+  "name": "primeng/panel"
+}
Index: trip-planner-front/node_modules/primeng/panel/panel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panel/panel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panel/panel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,46 @@
+import { EventEmitter, ElementRef, QueryList, TemplateRef, AfterContentInit } from '@angular/core';
+import { BlockableUI } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/api";
+import * as i3 from "primeng/ripple";
+export declare class Panel implements AfterContentInit, BlockableUI {
+    private el;
+    toggleable: boolean;
+    header: string;
+    collapsed: boolean;
+    style: any;
+    styleClass: string;
+    expandIcon: string;
+    collapseIcon: string;
+    showHeader: boolean;
+    toggler: string;
+    collapsedChange: EventEmitter<any>;
+    onBeforeToggle: EventEmitter<any>;
+    onAfterToggle: EventEmitter<any>;
+    transitionOptions: string;
+    footerFacet: any;
+    templates: QueryList<any>;
+    iconTemplate: TemplateRef<any>;
+    animating: boolean;
+    headerTemplate: TemplateRef<any>;
+    contentTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    id: string;
+    constructor(el: ElementRef);
+    ngAfterContentInit(): void;
+    onHeaderClick(event: Event): void;
+    onIconClick(event: Event): void;
+    toggle(event: Event): boolean;
+    expand(event: any): void;
+    collapse(event: any): void;
+    getBlockableElement(): HTMLElement;
+    onToggleDone(event: Event): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Panel, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Panel, "p-panel", never, { "toggleable": "toggleable"; "header": "header"; "collapsed": "collapsed"; "style": "style"; "styleClass": "styleClass"; "expandIcon": "expandIcon"; "collapseIcon": "collapseIcon"; "showHeader": "showHeader"; "toggler": "toggler"; "transitionOptions": "transitionOptions"; }, { "collapsedChange": "collapsedChange"; "onBeforeToggle": "onBeforeToggle"; "onAfterToggle": "onAfterToggle"; }, ["footerFacet", "templates"], ["p-header", "*", "p-footer"]>;
+}
+export declare class PanelModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<PanelModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<PanelModule, [typeof Panel], [typeof i1.CommonModule, typeof i2.SharedModule, typeof i3.RippleModule], [typeof Panel, typeof i2.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<PanelModule>;
+}
Index: trip-planner-front/node_modules/primeng/panel/primeng-panel.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panel/primeng-panel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panel/primeng-panel.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/panel" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/panel/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panel/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './panel';
Index: trip-planner-front/node_modules/primeng/panelmenu/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/panelmenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panelmenu/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-panelmenu.mjs",
+  "es2020": "../fesm2020/primeng-panelmenu.mjs",
+  "esm2020": "../esm2020/panelmenu/primeng-panelmenu.mjs",
+  "fesm2020": "../fesm2020/primeng-panelmenu.mjs",
+  "fesm2015": "../fesm2015/primeng-panelmenu.mjs",
+  "typings": "primeng-panelmenu.d.ts",
+  "sideEffects": false,
+  "name": "primeng/panelmenu"
+}
Index: trip-planner-front/node_modules/primeng/panelmenu/panelmenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panelmenu/panelmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panelmenu/panelmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+import { ChangeDetectorRef } from '@angular/core';
+import { MenuItem } from 'primeng/api';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "@angular/router";
+import * as i3 from "primeng/tooltip";
+export declare class BasePanelMenuItem {
+    private ref;
+    constructor(ref: ChangeDetectorRef);
+    handleClick(event: any, item: any): void;
+}
+export declare class PanelMenuSub extends BasePanelMenuItem {
+    item: MenuItem;
+    expanded: boolean;
+    parentExpanded: boolean;
+    transitionOptions: string;
+    root: boolean;
+    constructor(ref: ChangeDetectorRef);
+    onItemKeyDown(event: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PanelMenuSub, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<PanelMenuSub, "p-panelMenuSub", never, { "item": "item"; "expanded": "expanded"; "parentExpanded": "parentExpanded"; "transitionOptions": "transitionOptions"; "root": "root"; }, {}, never, never>;
+}
+export declare class PanelMenu extends BasePanelMenuItem {
+    model: MenuItem[];
+    style: any;
+    styleClass: string;
+    multiple: boolean;
+    transitionOptions: string;
+    animating: boolean;
+    constructor(ref: ChangeDetectorRef);
+    collapseAll(): void;
+    handleClick(event: any, item: any): void;
+    onToggleDone(): void;
+    onItemKeyDown(event: any): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PanelMenu, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<PanelMenu, "p-panelMenu", never, { "model": "model"; "style": "style"; "styleClass": "styleClass"; "multiple": "multiple"; "transitionOptions": "transitionOptions"; }, {}, never, never>;
+}
+export declare class PanelMenuModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<PanelMenuModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<PanelMenuModule, [typeof PanelMenu, typeof PanelMenuSub], [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.TooltipModule], [typeof PanelMenu, typeof i2.RouterModule, typeof i3.TooltipModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<PanelMenuModule>;
+}
Index: trip-planner-front/node_modules/primeng/panelmenu/primeng-panelmenu.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panelmenu/primeng-panelmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panelmenu/primeng-panelmenu.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/panelmenu" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/panelmenu/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/panelmenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/panelmenu/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './panelmenu';
Index: trip-planner-front/node_modules/primeng/password/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/password/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/password/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-password.mjs",
+  "es2020": "../fesm2020/primeng-password.mjs",
+  "esm2020": "../esm2020/password/primeng-password.mjs",
+  "fesm2020": "../fesm2020/primeng-password.mjs",
+  "fesm2015": "../fesm2015/primeng-password.mjs",
+  "typings": "primeng-password.d.ts",
+  "sideEffects": false,
+  "name": "primeng/password"
+}
Index: trip-planner-front/node_modules/primeng/password/password.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/password/password.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/password/password.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,141 @@
+import { ElementRef, OnDestroy, DoCheck, NgZone, OnInit, QueryList, TemplateRef, AfterContentInit, ChangeDetectorRef, EventEmitter } from '@angular/core';
+import { OverlayService, PrimeNGConfig } from 'primeng/api';
+import { Subscription } from 'rxjs';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/inputtext";
+import * as i3 from "primeng/api";
+export declare class PasswordDirective implements OnDestroy, DoCheck {
+    el: ElementRef;
+    zone: NgZone;
+    promptLabel: string;
+    weakLabel: string;
+    mediumLabel: string;
+    strongLabel: string;
+    feedback: boolean;
+    set showPassword(show: boolean);
+    panel: HTMLDivElement;
+    meter: any;
+    info: any;
+    filled: boolean;
+    scrollHandler: any;
+    documentResizeListener: any;
+    constructor(el: ElementRef, zone: NgZone);
+    ngDoCheck(): void;
+    onInput(e: any): void;
+    updateFilledState(): void;
+    createPanel(): void;
+    showOverlay(): void;
+    hideOverlay(): void;
+    onFocus(): void;
+    onBlur(): void;
+    onKeyup(e: any): void;
+    testStrength(str: string): number;
+    normalize(x: any, y: any): number;
+    get disabled(): boolean;
+    bindScrollListener(): void;
+    unbindScrollListener(): void;
+    bindDocumentResizeListener(): void;
+    unbindDocumentResizeListener(): void;
+    onWindowResize(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PasswordDirective, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<PasswordDirective, "[pPassword]", never, { "promptLabel": "promptLabel"; "weakLabel": "weakLabel"; "mediumLabel": "mediumLabel"; "strongLabel": "strongLabel"; "feedback": "feedback"; "showPassword": "showPassword"; }, {}, never>;
+}
+export declare const Password_VALUE_ACCESSOR: any;
+export declare class Password implements AfterContentInit, OnInit {
+    private cd;
+    private config;
+    el: ElementRef;
+    overlayService: OverlayService;
+    disabled: boolean;
+    promptLabel: string;
+    mediumRegex: string;
+    strongRegex: string;
+    weakLabel: string;
+    mediumLabel: string;
+    strongLabel: string;
+    inputId: string;
+    feedback: boolean;
+    appendTo: any;
+    toggleMask: boolean;
+    inputStyleClass: string;
+    styleClass: string;
+    style: any;
+    inputStyle: any;
+    showTransitionOptions: string;
+    hideTransitionOptions: string;
+    placeholder: string;
+    input: ElementRef;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    contentTemplate: TemplateRef<any>;
+    footerTemplate: TemplateRef<any>;
+    headerTemplate: TemplateRef<any>;
+    templates: QueryList<any>;
+    overlayVisible: boolean;
+    meter: any;
+    infoText: string;
+    focused: boolean;
+    unmasked: boolean;
+    mediumCheckRegExp: any;
+    strongCheckRegExp: any;
+    resizeListener: any;
+    outsideClickListener: any;
+    scrollHandler: any;
+    overlay: any;
+    value: string;
+    onModelChange: Function;
+    onModelTouched: Function;
+    translationSubscription: Subscription;
+    constructor(cd: ChangeDetectorRef, config: PrimeNGConfig, el: ElementRef, overlayService: OverlayService);
+    ngAfterContentInit(): void;
+    ngOnInit(): void;
+    onAnimationStart(event: any): void;
+    onAnimationEnd(event: any): void;
+    appendContainer(): void;
+    alignOverlay(): void;
+    onInput(event: any): void;
+    onInputFocus(event: Event): void;
+    onInputBlur(event: Event): void;
+    onKeyUp(event: any): void;
+    updateUI(value: any): void;
+    onMaskToggle(): void;
+    onOverlayClick(event: any): void;
+    testStrength(str: any): number;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    bindScrollListener(): void;
+    bindResizeListener(): void;
+    unbindScrollListener(): void;
+    unbindResizeListener(): void;
+    unbindOutsideClickListener(): void;
+    containerClass(): {
+        'p-password p-component p-inputwrapper': boolean;
+        'p-input-icon-right': boolean;
+    };
+    inputFieldClass(): {
+        'p-password-input': boolean;
+        'p-disabled': boolean;
+    };
+    toggleIconClass(): "pi pi-eye-slash" | "pi pi-eye";
+    strengthClass(): string;
+    filled(): boolean;
+    promptText(): any;
+    weakText(): any;
+    mediumText(): any;
+    strongText(): any;
+    restoreAppend(): void;
+    inputType(): "text" | "password";
+    getTranslation(option: string): any;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Password, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Password, "p-password", never, { "disabled": "disabled"; "promptLabel": "promptLabel"; "mediumRegex": "mediumRegex"; "strongRegex": "strongRegex"; "weakLabel": "weakLabel"; "mediumLabel": "mediumLabel"; "strongLabel": "strongLabel"; "inputId": "inputId"; "feedback": "feedback"; "appendTo": "appendTo"; "toggleMask": "toggleMask"; "inputStyleClass": "inputStyleClass"; "styleClass": "styleClass"; "style": "style"; "inputStyle": "inputStyle"; "showTransitionOptions": "showTransitionOptions"; "hideTransitionOptions": "hideTransitionOptions"; "placeholder": "placeholder"; }, { "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["templates"], never>;
+}
+export declare class PasswordModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<PasswordModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<PasswordModule, [typeof PasswordDirective, typeof Password], [typeof i1.CommonModule, typeof i2.InputTextModule], [typeof PasswordDirective, typeof Password, typeof i3.SharedModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<PasswordModule>;
+}
Index: trip-planner-front/node_modules/primeng/password/primeng-password.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/password/primeng-password.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/password/primeng-password.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/password" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/password/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/password/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/password/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './password';
Index: trip-planner-front/node_modules/primeng/picklist/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/picklist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/picklist/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-picklist.mjs",
+  "es2020": "../fesm2020/primeng-picklist.mjs",
+  "esm2020": "../esm2020/picklist/primeng-picklist.mjs",
+  "fesm2020": "../fesm2020/primeng-picklist.mjs",
+  "fesm2015": "../fesm2015/primeng-picklist.mjs",
+  "typings": "primeng-picklist.d.ts",
+  "sideEffects": false,
+  "name": "primeng/picklist"
+}
Index: trip-planner-front/node_modules/primeng/picklist/picklist.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/picklist/picklist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/picklist/picklist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,130 @@
+import { ElementRef, AfterContentInit, AfterViewChecked, QueryList, TemplateRef, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { FilterService } from 'primeng/api';
+import { CdkDragDrop } from '@angular/cdk/drag-drop';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+import * as i2 from "primeng/button";
+import * as i3 from "primeng/api";
+import * as i4 from "primeng/ripple";
+import * as i5 from "@angular/cdk/drag-drop";
+export declare class PickList implements AfterViewChecked, AfterContentInit {
+    el: ElementRef;
+    cd: ChangeDetectorRef;
+    filterService: FilterService;
+    source: any[];
+    target: any[];
+    sourceHeader: string;
+    rightButtonAriaLabel: string;
+    leftButtonAriaLabel: string;
+    allRightButtonAriaLabel: string;
+    allLeftButtonAriaLabel: string;
+    upButtonAriaLabel: string;
+    downButtonAriaLabel: string;
+    topButtonAriaLabel: string;
+    bottomButtonAriaLabel: string;
+    targetHeader: string;
+    responsive: boolean;
+    filterBy: string;
+    filterLocale: string;
+    trackBy: Function;
+    sourceTrackBy: Function;
+    targetTrackBy: Function;
+    showSourceFilter: boolean;
+    showTargetFilter: boolean;
+    metaKeySelection: boolean;
+    dragdrop: boolean;
+    style: any;
+    styleClass: string;
+    sourceStyle: any;
+    targetStyle: any;
+    showSourceControls: boolean;
+    showTargetControls: boolean;
+    sourceFilterPlaceholder: string;
+    targetFilterPlaceholder: string;
+    disabled: boolean;
+    ariaSourceFilterLabel: string;
+    ariaTargetFilterLabel: string;
+    filterMatchMode: string;
+    breakpoint: string;
+    onMoveToSource: EventEmitter<any>;
+    onMoveAllToSource: EventEmitter<any>;
+    onMoveAllToTarget: EventEmitter<any>;
+    onMoveToTarget: EventEmitter<any>;
+    onSourceReorder: EventEmitter<any>;
+    onTargetReorder: EventEmitter<any>;
+    onSourceSelect: EventEmitter<any>;
+    onTargetSelect: EventEmitter<any>;
+    onSourceFilter: EventEmitter<any>;
+    onTargetFilter: EventEmitter<any>;
+    listViewSourceChild: ElementRef;
+    listViewTargetChild: ElementRef;
+    sourceFilterViewChild: ElementRef;
+    targetFilterViewChild: ElementRef;
+    templates: QueryList<any>;
+    itemTemplate: TemplateRef<any>;
+    visibleOptionsSource: any[];
+    visibleOptionsTarget: any[];
+    selectedItemsSource: any[];
+    selectedItemsTarget: any[];
+    reorderedListElement: any;
+    movedUp: boolean;
+    movedDown: boolean;
+    itemTouched: boolean;
+    styleElement: any;
+    id: string;
+    filterValueSource: string;
+    filterValueTarget: string;
+    fromListType: number;
+    emptyMessageSourceTemplate: TemplateRef<any>;
+    emptyFilterMessageSourceTemplate: TemplateRef<any>;
+    emptyMessageTargetTemplate: TemplateRef<any>;
+    emptyFilterMessageTargetTemplate: TemplateRef<any>;
+    sourceHeaderTemplate: TemplateRef<any>;
+    targetHeaderTemplate: TemplateRef<any>;
+    readonly SOURCE_LIST = -1;
+    readonly TARGET_LIST = 1;
+    constructor(el: ElementRef, cd: ChangeDetectorRef, filterService: FilterService);
+    ngOnInit(): void;
+    ngAfterContentInit(): void;
+    ngAfterViewChecked(): void;
+    onItemClick(event: any, item: any, selectedItems: any[], callback: EventEmitter<any>): void;
+    onSourceItemDblClick(): void;
+    onTargetItemDblClick(): void;
+    onFilter(event: KeyboardEvent, data: any[], listType: number): void;
+    filter(data: any[], listType: number): void;
+    isItemVisible(item: any, listType: number): boolean;
+    isEmpty(listType: number): boolean;
+    isVisibleInList(data: any[], item: any, filterValue: string): boolean;
+    onItemTouchEnd(): void;
+    private sortByIndexInList;
+    moveUp(listElement: any, list: any, selectedItems: any, callback: any, listType: any): void;
+    moveTop(listElement: any, list: any, selectedItems: any, callback: any, listType: any): void;
+    moveDown(listElement: any, list: any, selectedItems: any, callback: any, listType: any): void;
+    moveBottom(listElement: any, list: any, selectedItems: any, callback: any, listType: any): void;
+    moveRight(): void;
+    moveAllRight(): void;
+    moveLeft(): void;
+    moveAllLeft(): void;
+    isSelected(item: any, selectedItems: any[]): boolean;
+    findIndexInSelection(item: any, selectedItems: any[]): number;
+    onDrop(event: CdkDragDrop<string[]>, listType: number): void;
+    getDropIndexes(fromIndex: any, toIndex: any, droppedList: any, isTransfer: any, data: any): {
+        previousIndex: any;
+        currentIndex: any;
+    };
+    findFilteredCurrentIndex(visibleOptions: any, index: any, options: any): number;
+    resetFilter(): void;
+    onItemKeydown(event: KeyboardEvent, item: any, selectedItems: any[], callback: EventEmitter<any>): void;
+    findNextItem(item: any): any;
+    findPrevItem(item: any): any;
+    createStyle(): void;
+    destroyStyle(): void;
+    ngOnDestroy(): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<PickList, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<PickList, "p-pickList", never, { "source": "source"; "target": "target"; "sourceHeader": "sourceHeader"; "rightButtonAriaLabel": "rightButtonAriaLabel"; "leftButtonAriaLabel": "leftButtonAriaLabel"; "allRightButtonAriaLabel": "allRightButtonAriaLabel"; "allLeftButtonAriaLabel": "allLeftButtonAriaLabel"; "upButtonAriaLabel": "upButtonAriaLabel"; "downButtonAriaLabel": "downButtonAriaLabel"; "topButtonAriaLabel": "topButtonAriaLabel"; "bottomButtonAriaLabel": "bottomButtonAriaLabel"; "targetHeader": "targetHeader"; "responsive": "responsive"; "filterBy": "filterBy"; "filterLocale": "filterLocale"; "trackBy": "trackBy"; "sourceTrackBy": "sourceTrackBy"; "targetTrackBy": "targetTrackBy"; "showSourceFilter": "showSourceFilter"; "showTargetFilter": "showTargetFilter"; "metaKeySelection": "metaKeySelection"; "dragdrop": "dragdrop"; "style": "style"; "styleClass": "styleClass"; "sourceStyle": "sourceStyle"; "targetStyle": "targetStyle"; "showSourceControls": "showSourceControls"; "showTargetControls": "showTargetControls"; "sourceFilterPlaceholder": "sourceFilterPlaceholder"; "targetFilterPlaceholder": "targetFilterPlaceholder"; "disabled": "disabled"; "ariaSourceFilterLabel": "ariaSourceFilterLabel"; "ariaTargetFilterLabel": "ariaTargetFilterLabel"; "filterMatchMode": "filterMatchMode"; "breakpoint": "breakpoint"; }, { "onMoveToSource": "onMoveToSource"; "onMoveAllToSource": "onMoveAllToSource"; "onMoveAllToTarget": "onMoveAllToTarget"; "onMoveToTarget": "onMoveToTarget"; "onSourceReorder": "onSourceReorder"; "onTargetReorder": "onTargetReorder"; "onSourceSelect": "onSourceSelect"; "onTargetSelect": "onTargetSelect"; "onSourceFilter": "onSourceFilter"; "onTargetFilter": "onTargetFilter"; }, ["templates"], never>;
+}
+export declare class PickListModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<PickListModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<PickListModule, [typeof PickList], [typeof i1.CommonModule, typeof i2.ButtonModule, typeof i3.SharedModule, typeof i4.RippleModule, typeof i5.DragDropModule], [typeof PickList, typeof i3.SharedModule, typeof i5.DragDropModule]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<PickListModule>;
+}
Index: trip-planner-front/node_modules/primeng/picklist/primeng-picklist.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/picklist/primeng-picklist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/picklist/primeng-picklist.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/picklist" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/picklist/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/picklist/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/picklist/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './picklist';
Index: trip-planner-front/node_modules/primeng/primeng.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/primeng.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/primeng.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/progressbar/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/progressbar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressbar/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-progressbar.mjs",
+  "es2020": "../fesm2020/primeng-progressbar.mjs",
+  "esm2020": "../esm2020/progressbar/primeng-progressbar.mjs",
+  "fesm2020": "../fesm2020/primeng-progressbar.mjs",
+  "fesm2015": "../fesm2015/primeng-progressbar.mjs",
+  "typings": "primeng-progressbar.d.ts",
+  "sideEffects": false,
+  "name": "primeng/progressbar"
+}
Index: trip-planner-front/node_modules/primeng/progressbar/primeng-progressbar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressbar/primeng-progressbar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressbar/primeng-progressbar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/progressbar" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/progressbar/progressbar.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressbar/progressbar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressbar/progressbar.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class ProgressBar {
+    value: any;
+    showValue: boolean;
+    style: any;
+    styleClass: string;
+    unit: string;
+    mode: string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ProgressBar, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ProgressBar, "p-progressBar", never, { "value": "value"; "showValue": "showValue"; "style": "style"; "styleClass": "styleClass"; "unit": "unit"; "mode": "mode"; }, {}, never, never>;
+}
+export declare class ProgressBarModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ProgressBarModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ProgressBarModule, [typeof ProgressBar], [typeof i1.CommonModule], [typeof ProgressBar]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ProgressBarModule>;
+}
Index: trip-planner-front/node_modules/primeng/progressbar/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressbar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressbar/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './progressbar';
Index: trip-planner-front/node_modules/primeng/progressspinner/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/progressspinner/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressspinner/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-progressspinner.mjs",
+  "es2020": "../fesm2020/primeng-progressspinner.mjs",
+  "esm2020": "../esm2020/progressspinner/primeng-progressspinner.mjs",
+  "fesm2020": "../fesm2020/primeng-progressspinner.mjs",
+  "fesm2015": "../fesm2015/primeng-progressspinner.mjs",
+  "typings": "primeng-progressspinner.d.ts",
+  "sideEffects": false,
+  "name": "primeng/progressspinner"
+}
Index: trip-planner-front/node_modules/primeng/progressspinner/primeng-progressspinner.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressspinner/primeng-progressspinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressspinner/primeng-progressspinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/progressspinner" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/progressspinner/progressspinner.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressspinner/progressspinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressspinner/progressspinner.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare class ProgressSpinner {
+    style: any;
+    styleClass: string;
+    strokeWidth: string;
+    fill: string;
+    animationDuration: string;
+    static ɵfac: i0.ɵɵFactoryDeclaration<ProgressSpinner, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<ProgressSpinner, "p-progressSpinner", never, { "style": "style"; "styleClass": "styleClass"; "strokeWidth": "strokeWidth"; "fill": "fill"; "animationDuration": "animationDuration"; }, {}, never, never>;
+}
+export declare class ProgressSpinnerModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<ProgressSpinnerModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<ProgressSpinnerModule, [typeof ProgressSpinner], [typeof i1.CommonModule], [typeof ProgressSpinner]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<ProgressSpinnerModule>;
+}
Index: trip-planner-front/node_modules/primeng/progressspinner/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/progressspinner/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/progressspinner/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './progressspinner';
Index: trip-planner-front/node_modules/primeng/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,2 @@
+declare const _default: {};
+export default _default;
Index: trip-planner-front/node_modules/primeng/radiobutton/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/radiobutton/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/radiobutton/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-radiobutton.mjs",
+  "es2020": "../fesm2020/primeng-radiobutton.mjs",
+  "esm2020": "../esm2020/radiobutton/primeng-radiobutton.mjs",
+  "fesm2020": "../fesm2020/primeng-radiobutton.mjs",
+  "fesm2015": "../fesm2015/primeng-radiobutton.mjs",
+  "typings": "primeng-radiobutton.d.ts",
+  "sideEffects": false,
+  "name": "primeng/radiobutton"
+}
Index: trip-planner-front/node_modules/primeng/radiobutton/primeng-radiobutton.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/radiobutton/primeng-radiobutton.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/radiobutton/primeng-radiobutton.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/radiobutton" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/radiobutton/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/radiobutton/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/radiobutton/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './radiobutton';
Index: trip-planner-front/node_modules/primeng/radiobutton/radiobutton.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/radiobutton/radiobutton.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/radiobutton/radiobutton.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+import { ElementRef, EventEmitter, ChangeDetectorRef, Injector, OnInit, OnDestroy } from '@angular/core';
+import { ControlValueAccessor, NgControl } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const RADIO_VALUE_ACCESSOR: any;
+export declare class RadioControlRegistry {
+    private accessors;
+    add(control: NgControl, accessor: RadioButton): void;
+    remove(accessor: RadioButton): void;
+    select(accessor: RadioButton): void;
+    private isSameGroup;
+    static ɵfac: i0.ɵɵFactoryDeclaration<RadioControlRegistry, never>;
+    static ɵprov: i0.ɵɵInjectableDeclaration<RadioControlRegistry>;
+}
+export declare class RadioButton implements ControlValueAccessor, OnInit, OnDestroy {
+    cd: ChangeDetectorRef;
+    private injector;
+    private registry;
+    value: any;
+    formControlName: string;
+    name: string;
+    disabled: boolean;
+    label: string;
+    tabindex: number;
+    inputId: string;
+    ariaLabelledBy: string;
+    ariaLabel: string;
+    style: any;
+    styleClass: string;
+    labelStyleClass: string;
+    onClick: EventEmitter<any>;
+    onFocus: EventEmitter<any>;
+    onBlur: EventEmitter<any>;
+    inputViewChild: ElementRef;
+    onModelChange: Function;
+    onModelTouched: Function;
+    checked: boolean;
+    focused: boolean;
+    control: NgControl;
+    constructor(cd: ChangeDetectorRef, injector: Injector, registry: RadioControlRegistry);
+    ngOnInit(): void;
+    handleClick(event: any, radioButton: any, focus: any): void;
+    select(event: any): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    onInputFocus(event: any): void;
+    onInputBlur(event: any): void;
+    onChange(event: any): void;
+    focus(): void;
+    ngOnDestroy(): void;
+    private checkName;
+    private throwNameError;
+    static ɵfac: i0.ɵɵFactoryDeclaration<RadioButton, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<RadioButton, "p-radioButton", never, { "value": "value"; "formControlName": "formControlName"; "name": "name"; "disabled": "disabled"; "label": "label"; "tabindex": "tabindex"; "inputId": "inputId"; "ariaLabelledBy": "ariaLabelledBy"; "ariaLabel": "ariaLabel"; "style": "style"; "styleClass": "styleClass"; "labelStyleClass": "labelStyleClass"; }, { "onClick": "onClick"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, never>;
+}
+export declare class RadioButtonModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<RadioButtonModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<RadioButtonModule, [typeof RadioButton], [typeof i1.CommonModule], [typeof RadioButton]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<RadioButtonModule>;
+}
Index: trip-planner-front/node_modules/primeng/rating/package.json
===================================================================
--- trip-planner-front/node_modules/primeng/rating/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/rating/package.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,10 @@
+{
+  "module": "../fesm2015/primeng-rating.mjs",
+  "es2020": "../fesm2020/primeng-rating.mjs",
+  "esm2020": "../esm2020/rating/primeng-rating.mjs",
+  "fesm2020": "../fesm2020/primeng-rating.mjs",
+  "fesm2015": "../fesm2015/primeng-rating.mjs",
+  "typings": "primeng-rating.d.ts",
+  "sideEffects": false,
+  "name": "primeng/rating"
+}
Index: trip-planner-front/node_modules/primeng/rating/primeng-rating.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/rating/primeng-rating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/rating/primeng-rating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="primeng/rating" />
+export * from './public_api';
Index: trip-planner-front/node_modules/primeng/rating/public_api.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/rating/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/rating/public_api.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+export * from './rating';
Index: trip-planner-front/node_modules/primeng/rating/rating.d.ts
===================================================================
--- trip-planner-front/node_modules/primeng/rating/rating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/rating/rating.d.ts	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,39 @@
+import { OnInit, EventEmitter, ChangeDetectorRef } from '@angular/core';
+import { ControlValueAccessor } from '@angular/forms';
+import * as i0 from "@angular/core";
+import * as i1 from "@angular/common";
+export declare const RATING_VALUE_ACCESSOR: any;
+export declare class Rating implements OnInit, ControlValueAccessor {
+    private cd;
+    disabled: boolean;
+    readonly: boolean;
+    stars: number;
+    cancel: boolean;
+    iconOnClass: string;
+    iconOnStyle: any;
+    iconOffClass: string;
+    iconOffStyle: any;
+    iconCancelClass: string;
+    iconCancelStyle: any;
+    onRate: EventEmitter<any>;
+    onCancel: EventEmitter<any>;
+    constructor(cd: ChangeDetectorRef);
+    value: number;
+    onModelChange: Function;
+    onModelTouched: Function;
+    starsArray: number[];
+    ngOnInit(): void;
+    rate(event: any, i: number): void;
+    clear(event: any): void;
+    writeValue(value: any): void;
+    registerOnChange(fn: Function): void;
+    registerOnTouched(fn: Function): void;
+    setDisabledState(val: boolean): void;
+    static ɵfac: i0.ɵɵFactoryDeclaration<Rating, never>;
+    static ɵcmp: i0.ɵɵComponentDeclaration<Rating, "p-rating", never, { "disabled": "disabled"; "readonly": "readonly"; "stars": "stars"; "cancel": "cancel"; "iconOnClass": "iconOnClass"; "iconOnStyle": "iconOnStyle"; "iconOffClass": "iconOffClass"; "iconOffStyle": "iconOffStyle"; "iconCancelClass": "iconCancelClass"; "iconCancelStyle": "iconCancelStyle"; }, { "onRate": "onRate"; "onCancel": "onCancel"; }, never, never>;
+}
+export declare class RatingModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<RatingModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<RatingModule, [typeof Rating], [typeof i1.CommonModule], [typeof Rating]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<RatingModule>;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/accordion/accordion.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/accordion/accordion.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/accordion/accordion.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+.p-accordion-header-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    user-select: none;
+    position: relative;
+    text-decoration: none;
+}
+
+.p-accordion-header-link:focus {
+    z-index: 1;
+}
+
+.p-accordion-header-text {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/autocomplete/autocomplete.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/autocomplete/autocomplete.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/autocomplete/autocomplete.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,96 @@
+.p-autocomplete {
+    display: inline-flex;
+    position: relative;
+}
+
+.p-autocomplete-loader {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-autocomplete-dd .p-autocomplete-input {
+    flex: 1 1 auto;
+    width: 1%;
+}
+
+.p-autocomplete-dd .p-autocomplete-input,
+.p-autocomplete-dd .p-autocomplete-multiple-container {
+     border-top-right-radius: 0;
+     border-bottom-right-radius: 0;
+ }
+
+.p-autocomplete-dd .p-autocomplete-dropdown {
+     border-top-left-radius: 0;
+     border-bottom-left-radius: 0px;
+}
+
+.p-autocomplete .p-autocomplete-panel {
+    min-width: 100%;
+    top: 0;
+    left: 0;
+}
+
+.p-autocomplete-panel {
+    position: absolute;
+    overflow: auto;
+}
+
+.p-autocomplete-items {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+}
+
+.p-autocomplete-item {
+    cursor: pointer;
+    white-space: nowrap;
+    position: relative;
+    overflow: hidden;
+}
+
+.p-autocomplete-multiple-container {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    cursor: text;
+    overflow: hidden;
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+}
+
+.p-autocomplete-token {
+    cursor: default;
+    display: inline-flex;
+    align-items: center;
+    flex: 0 0 auto;
+}
+
+.p-autocomplete-token-icon {
+    cursor: pointer;
+}
+
+.p-autocomplete-input-token {
+    flex: 1 1 auto;
+    display: inline-flex;
+}
+
+.p-autocomplete-input-token input {
+    border: 0 none;
+    outline: 0 none;
+    background-color: transparent;
+    margin: 0;
+    padding: 0;
+    box-shadow: none;
+    border-radius: 0;
+    width: 100%;
+}
+
+.p-fluid .p-autocomplete {
+    display: flex;
+}
+
+.p-fluid .p-autocomplete-dd .p-autocomplete-input {
+    width: 1%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/avatar/avatar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/avatar/avatar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/avatar/avatar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,26 @@
+.p-avatar {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    width: 2rem;
+    height: 2rem;
+    font-size: 1rem;
+}
+
+.p-avatar.p-avatar-image {
+    background-color: transparent;
+}
+
+.p-avatar.p-avatar-circle {
+    border-radius: 50%;
+    overflow: hidden;
+}
+
+.p-avatar .p-avatar-icon {
+    font-size: 1rem;
+}
+
+.p-avatar img {
+    width: 100%;
+    height: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/avatargroup/avatargroup.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/avatargroup/avatargroup.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/avatargroup/avatargroup.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+.p-avatar-group p-avatar + p-avatar {
+    margin-left: -1rem;
+}
+
+.p-avatar-group {
+    display: flex;
+    align-items: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/badge/badge.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/badge/badge.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/badge/badge.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,32 @@
+.p-badge {
+    display: inline-block;
+    border-radius: 10px;
+    text-align: center;
+    padding: 0 .5rem;
+}
+
+.p-overlay-badge {
+    position: relative;
+}
+
+.p-overlay-badge .p-badge {
+    position: absolute;
+    top: 0;
+    right: 0;
+    transform: translate(50%,-50%);
+    transform-origin: 100% 0;
+    margin: 0;
+}
+
+.p-badge-dot {
+    width: .5rem;
+    min-width: .5rem;
+    height: .5rem;
+    border-radius: 50%;
+    padding: 0;
+}
+
+.p-badge-no-gutter {
+    padding: 0;
+    border-radius: 50%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/blockui/blockui.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/blockui/blockui.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/blockui/blockui.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,24 @@
+.p-blockui {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: transparent;
+    transition-property: background-color;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-blockui.p-component-overlay {
+    position: absolute;
+}
+
+.p-blockui-document.p-component-overlay {
+    position: fixed;
+}
+
+.p-blockui-leave.p-component-overlay {
+    background-color: transparent;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/breadcrumb/breadcrumb.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/breadcrumb/breadcrumb.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/breadcrumb/breadcrumb.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,24 @@
+.p-breadcrumb {
+    overflow-x: auto;
+}
+
+.p-breadcrumb ul {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    display: flex;
+    align-items: center;
+    flex-wrap: nowrap;
+}
+
+.p-breadcrumb .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-breadcrumb .p-menuitem-link {
+    text-decoration: none;
+}
+
+.p-breadcrumb::-webkit-scrollbar {
+    display: none;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/button/button.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/button/button.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/button/button.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,72 @@
+.p-button {
+    margin: 0;
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    align-items: center;
+    vertical-align: bottom;
+    text-align: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-button-label {
+    flex: 1 1 auto;
+}
+
+.p-button-icon-right {
+    order: 1;
+}
+
+.p-button:disabled {
+    cursor: default;
+}
+
+.p-button-icon-only {
+    justify-content: center;
+}
+
+.p-button-icon-only .p-button-label {
+    visibility: hidden;
+    width: 0;
+    flex: 0 0 auto;
+}
+
+.p-button-vertical {
+    flex-direction: column;
+}
+
+.p-button-icon-bottom {
+    order: 2;
+}
+
+.p-buttonset .p-button {
+    margin: 0;
+}
+
+.p-buttonset .p-button:not(:last-child) {
+    border-right: 0 none;
+}
+
+.p-buttonset .p-button:not(:first-of-type):not(:last-of-type) {
+    border-radius: 0;
+}
+
+.p-buttonset .p-button:first-of-type {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-buttonset .p-button:last-of-type {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+.p-buttonset .p-button:focus {
+    position: relative;
+    z-index: 1;
+}
+
+.p-button-label {
+    transition: all .2s;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/calendar/calendar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/calendar/calendar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/calendar/calendar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,136 @@
+.p-calendar {
+    position: relative;
+    display: inline-flex;
+}
+
+.p-calendar .p-inputtext {
+    flex: 1 1 auto;
+    width: 1%;
+}
+
+.p-calendar-w-btn .p-inputtext {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-calendar-w-btn .p-datepicker-trigger {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+/* Fluid */
+.p-fluid .p-calendar {
+    display: flex;
+}
+
+.p-fluid .p-calendar .p-inputtext {
+    width: 1%;
+}
+
+/* Datepicker */
+.p-calendar .p-datepicker {
+    min-width: 100%;
+}
+
+.p-datepicker {
+	width: auto;
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-datepicker-inline {
+    position: static;
+}
+
+/* Header */
+.p-datepicker-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+
+.p-datepicker-header .p-datepicker-title {
+    margin: 0 auto;
+}
+
+.p-datepicker-prev,
+.p-datepicker-next {
+    cursor: pointer;
+    display: inline-flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Multiple Month DatePicker */
+.p-datepicker-multiple-month .p-datepicker-group-container {
+    display: flex;
+}
+
+/* DatePicker Table */
+.p-datepicker table {
+	width: 100%;
+	border-collapse: collapse;
+}
+
+.p-datepicker td > span {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    margin: 0 auto;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Month Picker */
+.p-monthpicker-month {
+    width: 33.3%;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+}
+
+/*  Button Bar */
+.p-datepicker-buttonbar {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+
+/* Time Picker */
+.p-timepicker {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.p-timepicker button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-timepicker > div {
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+}
+
+/* Touch UI */
+.p-datepicker-touch-ui,
+.p-calendar .p-datepicker-touch-ui {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    min-width: 80vw;
+    transform: translate(-50%, -50%);
+}
Index: trip-planner-front/node_modules/primeng/resources/components/card/card.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/card/card.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/card/card.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+.p-card-header img {
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/carousel/carousel.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/carousel/carousel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/carousel/carousel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,69 @@
+.p-carousel {
+	display: flex;
+	flex-direction: column;
+}
+
+.p-carousel-content {
+	display: flex;
+	flex-direction: column;
+	overflow: auto;
+}
+
+.p-carousel-prev,
+.p-carousel-next {
+	align-self: center;
+	flex-grow: 0;
+    flex-shrink: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-carousel-container {
+	display: flex;
+	flex-direction: row;
+}
+
+.p-carousel-items-content {
+	overflow: hidden;
+    width: 100%;
+}
+
+.p-carousel-items-container {
+	display: flex;
+	flex-direction: row;
+}
+
+.p-carousel-indicators {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+	flex-wrap: wrap;
+}
+
+.p-carousel-indicator > button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+/* Vertical */
+.p-carousel-vertical .p-carousel-container {
+	flex-direction: column;
+}
+
+.p-carousel-vertical .p-carousel-items-container {
+	flex-direction: column;
+	height: 100%;
+}
+
+/* Keyboard Support */
+.p-items-hidden .p-carousel-item {
+	visibility: hidden;
+}
+
+.p-items-hidden .p-carousel-item.p-carousel-item-active {
+	visibility: visible;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/cascadeselect/cascadeselect.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/cascadeselect/cascadeselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/cascadeselect/cascadeselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,86 @@
+.p-cascadeselect {
+    display: inline-flex;
+    cursor: pointer;
+    position: relative;
+    user-select: none;
+}
+
+.p-cascadeselect-trigger {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+}
+
+.p-cascadeselect-label {
+    display: block;
+    white-space: nowrap;
+    overflow: hidden;
+    flex: 1 1 auto;
+    width: 1%;
+    text-overflow: ellipsis;
+    cursor: pointer;
+}
+
+.p-cascadeselect-label-empty {
+    overflow: hidden;
+    visibility: hidden;
+}
+
+.p-cascadeselect .p-cascadeselect-panel {
+    min-width: 100%;
+}
+
+.p-cascadeselect-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-cascadeselect-item {
+    cursor: pointer;
+    font-weight: normal;
+    white-space: nowrap;
+}
+
+.p-cascadeselect-item-content {
+    display: flex;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-cascadeselect-group-icon {
+    margin-left: auto;
+}
+
+.p-cascadeselect-items {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+}
+
+.p-fluid .p-cascadeselect {
+    display: flex;
+}
+
+.p-fluid .p-cascadeselect .p-cascadeselect-label {
+    width: 1%;
+}
+
+.p-cascadeselect-sublist {
+    position: absolute;
+    min-width: 100%;
+    z-index: 1;
+    display: none;
+}
+
+.p-cascadeselect-item-active {
+    overflow: visible !important;
+}
+
+.p-cascadeselect-item-active > .p-cascadeselect-sublist {
+    display: block;
+    left: 100%;
+    top: 0;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/checkbox/checkbox.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/checkbox/checkbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/checkbox/checkbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,28 @@
+.p-checkbox {
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    vertical-align: bottom;
+    position: relative;
+}
+
+.p-checkbox-disabled {
+    cursor: default !important;
+    pointer-events: none;
+}
+
+.p-checkbox-box {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+p-checkbox {
+    display: inline-flex;
+    vertical-align: bottom;
+    align-items: center;
+}
+
+.p-checkbox-label {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/chip/chip.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/chip/chip.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/chip/chip.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,21 @@
+.p-chip {
+    display: inline-flex;
+    align-items: center;
+}
+
+.p-chip-text {
+    line-height: 1.5;
+}
+ 
+.p-chip-icon.pi {
+    line-height: 1.5;
+}
+
+.pi-chip-remove-icon {
+    line-height: 1.5;
+    cursor: pointer;
+}
+
+.p-chip img {
+    border-radius: 50%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/chips/chips.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/chips/chips.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/chips/chips.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,45 @@
+.p-chips {
+    display: inline-flex;
+}
+
+.p-chips-multiple-container {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    cursor: text;
+    overflow: hidden;
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+}
+
+.p-chips-token {
+    cursor: default;
+    display: inline-flex;
+    align-items: center;
+    flex: 0 0 auto;
+}
+
+.p-chips-input-token {
+    flex: 1 1 auto;
+    display: inline-flex;
+}
+
+.p-chips-token-icon {
+    cursor: pointer;
+}
+
+.p-chips-input-token input {
+    border: 0 none;
+    outline: 0 none;
+    background-color: transparent;
+    margin: 0;
+    padding: 0;
+    box-shadow: none;
+    border-radius: 0;
+    width: 100%;
+}
+
+.p-fluid .p-chips {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker-images.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker-images.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker-images.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+.p-colorpicker-panel .p-colorpicker-color {
+    background: transparent url("./images/color.png") no-repeat left top; 
+}
+
+.p-colorpicker-panel .p-colorpicker-hue {
+   background: transparent url("./images/hue.png") no-repeat left top; 
+}
Index: trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/colorpicker/colorpicker.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,81 @@
+.p-colorpicker {
+    display: inline-block;
+}
+
+.p-colorpicker-dragging {
+    cursor: pointer;
+}
+
+.p-colorpicker-overlay {
+    position: relative;
+}
+
+.p-colorpicker-panel {
+    position: relative;
+    width: 193px;
+    height: 166px;
+}
+
+.p-colorpicker-overlay-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-colorpicker-preview {
+    cursor: pointer;
+}
+
+.p-colorpicker-panel .p-colorpicker-content {
+    position: relative;
+}
+
+.p-colorpicker-panel .p-colorpicker-color-selector {
+    width: 150px;
+    height: 150px;
+    top: 8px;
+    left: 8px;
+    position: absolute;
+}
+
+.p-colorpicker-panel .p-colorpicker-color {
+     width: 150px;
+     height: 150px;
+}
+
+.p-colorpicker-panel .p-colorpicker-color-handle {
+     position: absolute;
+     top: 0px;
+     left: 150px;
+     border-radius: 100%;
+     width: 10px;
+     height: 10px;
+     border-width: 1px;
+     border-style: solid;
+     margin: -5px 0 0 -5px;
+     cursor: pointer;
+     opacity: .85;
+}
+
+.p-colorpicker-panel .p-colorpicker-hue {
+    width: 17px;
+    height: 150px;
+    top: 8px;
+    left: 167px;
+    position: absolute;
+    opacity: .85;
+}
+
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+     position: absolute;
+     top: 150px;
+     left: 0px;
+     width: 21px;
+     margin-left: -2px;
+     margin-top: -5px;
+     height: 10px;
+     border-width: 2px;
+     border-style: solid;
+     opacity: .85;
+     cursor: pointer;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/common/common.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/common/common.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/common/common.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,129 @@
+.p-component, .p-component * {
+    box-sizing: border-box;
+}
+
+.p-hidden {
+    display: none;
+}
+
+.p-hidden-space {
+    visibility: hidden;
+}
+
+.p-hidden-accessible {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+.p-hidden-accessible input,
+.p-hidden-accessible select {
+    transform: scale(0);
+}
+
+.p-reset {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    outline: 0;
+    text-decoration: none;
+    font-size: 100%;
+    list-style: none;
+}
+
+.p-disabled, .p-disabled * {
+    cursor: default !important;
+    pointer-events: none;
+}
+
+.p-component-overlay {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
+
+.p-overflow-hidden {
+    overflow: hidden;
+}
+
+.p-unselectable-text {
+    user-select: none;
+}
+
+.p-scrollbar-measure {
+    width: 100px;
+    height: 100px;
+    overflow: scroll;
+    position: absolute;
+    top: -9999px;
+}
+
+@-webkit-keyframes p-fadein {
+  0%   { opacity: 0; }
+  100% { opacity: 1; }
+}
+@keyframes p-fadein {
+  0%   { opacity: 0; }
+  100% { opacity: 1; }
+}
+
+input[type="button"],
+input[type="submit"],
+input[type="reset"],
+input[type="file"]::-webkit-file-upload-button,
+button {
+    border-radius: 0;
+}
+
+.p-link {
+	text-align: left;
+	background-color: transparent;
+	margin: 0;
+	padding: 0;
+	border: none;
+    cursor: pointer;
+    user-select: none;
+}
+
+.p-sr-only {
+    border: 0;
+    clip: rect(1px, 1px, 1px, 1px);
+    clip-path: inset(50%);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+    word-wrap: normal !important;
+}
+
+/* Non ng overlay animations */
+.p-connected-overlay {
+    opacity: 0;
+    transform: scaleY(0.8);
+    transition: transform .12s cubic-bezier(0, 0, 0.2, 1), opacity .12s cubic-bezier(0, 0, 0.2, 1);
+}
+
+.p-connected-overlay-visible {
+    opacity: 1;
+    transform: scaleY(1);
+}
+
+.p-connected-overlay-hidden {
+    opacity: 0;
+    transform: scaleY(1);
+    transition: opacity .1s linear;
+}
+
+.p-toggleable-content.ng-animating {
+    overflow: hidden;
+}
+
Index: trip-planner-front/node_modules/primeng/resources/components/confirmpopup/confirmpopup.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/confirmpopup/confirmpopup.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/confirmpopup/confirmpopup.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,49 @@
+.p-confirm-popup {
+    position: absolute;
+    margin-top: 10px;
+    top: 0;
+    left: 0;
+}
+
+.p-confirm-popup-flipped {
+    margin-top: 0;
+    margin-bottom: 10px;
+}
+
+.p-confirm-popup:after, .p-confirm-popup:before {
+	bottom: 100%;
+	left: calc(var(--overlayArrowLeft, 0) + 1.25rem);
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+	pointer-events: none;
+}
+
+.p-confirm-popup:after {
+	border-width: 8px;
+	margin-left: -8px;
+}
+
+.p-confirm-popup:before {
+	border-width: 10px;
+	margin-left: -10px;
+}
+
+.p-confirm-popup-flipped:after, .p-confirm-popup-flipped:before {
+    bottom: auto;
+    top: 100%;
+}
+
+.p-confirm-popup.p-confirm-popup-flipped:after {
+    border-bottom-color: transparent;
+}
+
+.p-confirm-popup.p-confirm-popup-flipped:before {
+    border-bottom-color: transparent
+}
+
+.p-confirm-popup .p-confirm-popup-content {
+    display: flex;
+    align-items: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/contextmenu/contextmenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/contextmenu/contextmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/contextmenu/contextmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,42 @@
+.p-contextmenu {
+    position: absolute;
+    display: none;
+}
+
+.p-contextmenu ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-contextmenu .p-submenu-list {
+    position: absolute;
+    min-width: 100%;
+    z-index: 1;
+    display: none;
+}
+
+.p-contextmenu .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-contextmenu .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-contextmenu .p-menuitem {
+    position: relative;
+}
+
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+    margin-left: auto;
+}
+
+.p-contextmenu .p-menuitem-active > p-contextmenusub > .p-submenu-list.p-submenu-list-active {
+    display: block !important;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/dataview/dataview.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/dataview/dataview.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/dataview/dataview.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,11 @@
+.p-dataview {
+    position: relative;
+}
+
+.p-dataview .p-dataview-loading-overlay {
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    z-index: 2;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/dialog/dialog.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/dialog/dialog.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/dialog/dialog.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,134 @@
+.p-dialog-mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    pointer-events: none;
+}
+
+.p-dialog-mask.p-component-overlay {
+    pointer-events: auto;
+}
+
+.p-dialog {
+    display: flex;
+    flex-direction: column;
+    pointer-events: auto;
+    max-height: 90%;
+    transform: scale(1);
+    position: relative;
+}
+.p-dialog-content {
+    overflow-y: auto;
+    flex-grow: 1;
+}
+
+.p-dialog-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    flex-shrink: 0;
+}
+
+.p-dialog-footer {
+    flex-shrink: 0;
+}
+
+.p-dialog .p-dialog-header-icons {
+    display: flex;
+    align-items: center;
+}
+
+.p-dialog .p-dialog-header-icon {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Fluid */
+.p-fluid .p-dialog-footer .p-button {
+    width: auto;
+}
+
+
+/* Top, Bottom, Left, Right, Top* and Bottom* */
+.p-dialog-top .p-dialog,
+.p-dialog-bottom .p-dialog,
+.p-dialog-left .p-dialog,
+.p-dialog-right .p-dialog,
+.p-dialog-top-left .p-dialog,
+.p-dialog-top-right .p-dialog,
+.p-dialog-bottom-left .p-dialog,
+.p-dialog-bottom-right .p-dialog {
+    margin: .75rem;
+    transform: translate3d(0px, 0px, 0px);
+}
+
+/* Maximize */
+.p-dialog-maximized {
+    -webkit-transition: none;
+    transition: none;
+    transform: none;
+    width: 100vw !important;
+    height: 100vh !important;
+    top: 0px !important;
+    left: 0px !important;
+    max-height: 100%;
+    height: 100%;
+}
+.p-dialog-maximized .p-dialog-content {
+    flex-grow: 1;
+}
+
+/* Position */
+.p-dialog-left {
+    justify-content: flex-start;
+}
+.p-dialog-right {
+    justify-content: flex-end;
+}
+.p-dialog-top {
+    align-items: flex-start;
+}
+.p-dialog-top-left {
+    justify-content: flex-start;
+    align-items: flex-start;
+}
+.p-dialog-top-right {
+    justify-content: flex-end;
+    align-items: flex-start;
+}
+.p-dialog-bottom {
+    align-items: flex-end;
+}
+.p-dialog-bottom-left {
+    justify-content: flex-start;
+    align-items: flex-end;
+}
+.p-dialog-bottom-right {
+    justify-content: flex-end;
+    align-items: flex-end;
+}
+
+/* Resizable */
+.p-dialog .p-resizable-handle {
+    position: absolute;
+    font-size: 0.1px;
+    display: block;
+    cursor: se-resize;
+    width: 12px;
+    height: 12px;
+    right: 1px;
+    bottom: 1px;
+}
+
+.p-confirm-dialog .p-dialog-content {
+    display: flex;
+    align-items: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/divider/divider.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/divider/divider.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/divider/divider.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,84 @@
+.p-divider-horizontal {
+    display: flex;
+    width: 100%;
+    position: relative;
+    align-items: center;
+}
+
+.p-divider-horizontal:before {
+    position: absolute;
+    display: block;
+    top: 50%;
+    left: 0;
+    width: 100%;
+    content: "";
+}
+
+.p-divider-horizontal.p-divider-left {
+    justify-content: flex-start;
+}
+
+.p-divider-horizontal.p-divider-right {
+    justify-content: flex-end;
+}
+
+.p-divider-horizontal.p-divider-center {
+    justify-content: center;
+}
+
+.p-divider-content {
+    z-index: 1;
+}
+
+.p-divider-vertical {
+    min-height: 100%;
+    margin: 0 1rem;
+    display: flex;
+    position: relative;
+    justify-content: center;
+}
+
+.p-divider-vertical:before {
+    position: absolute;
+    display: block;
+    top: 0;
+    left: 50%;
+    height: 100%;
+    content: "";
+}
+
+.p-divider-vertical.p-divider-top {
+    align-items: flex-start;
+}
+
+.p-divider-vertical.p-divider-center {
+    align-items: center;
+}
+
+.p-divider-vertical.p-divider-bottom {
+    align-items: flex-end;
+}
+
+.p-divider-solid.p-divider-horizontal:before {
+    border-top-style: solid;
+}
+
+.p-divider-solid.p-divider-vertical:before {
+    border-left-style: solid;
+}
+
+.p-divider-dashed.p-divider-horizontal:before {
+    border-top-style: dashed;
+}
+
+.p-divider-dashed.p-divider-vertical:before {
+    border-left-style: dashed;
+}
+
+.p-divider-dotted.p-divider-horizontal:before {
+    border-top-style: dotted;
+}
+
+.p-divider-dotted.p-divider-horizontal:before {
+    border-left-style: dotted;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/dock/dock.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/dock/dock.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/dock/dock.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,105 @@
+.p-dock {
+    position: absolute;
+    z-index: 1;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    pointer-events: none;
+}
+
+.p-dock-list-container {
+    display: flex;
+    pointer-events: auto;
+}
+
+.p-dock-list {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-dock-item {
+    transition: all .2s cubic-bezier(0.4, 0, 0.2, 1);
+    will-change: transform;
+}
+
+.p-dock-action {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    position: relative;
+    overflow: hidden;
+    cursor: default;
+}
+
+.p-dock-item-second-prev,
+.p-dock-item-second-next {
+    transform: scale(1.2);
+}
+
+.p-dock-item-prev,
+.p-dock-item-next {
+    transform: scale(1.4);
+}
+
+.p-dock-item-current {
+    transform: scale(1.6);
+    z-index: 1;
+}
+
+/* Position */
+/* top */
+.p-dock-top {
+    left: 0;
+    top: 0;
+    width: 100%;
+}
+
+.p-dock-top .p-dock-item {
+    transform-origin: center top;
+}
+
+/* bottom */
+.p-dock-bottom {
+    left: 0;
+    bottom: 0;
+    width: 100%;
+}
+
+.p-dock-bottom .p-dock-item {
+    transform-origin: center bottom;
+}
+
+/* right */
+.p-dock-right {
+    right: 0;
+    top: 0;
+    height: 100%;
+}
+
+.p-dock-right .p-dock-item {
+    transform-origin: center right;
+}
+
+.p-dock-right .p-dock-list {
+    flex-direction: column;
+}
+
+/* left */
+.p-dock-left {
+    left: 0;
+    top: 0;
+    height: 100%;
+}
+
+.p-dock-left .p-dock-item {
+    transform-origin: center left;
+}
+
+.p-dock-left .p-dock-list {
+    flex-direction: column;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/dropdown/dropdown.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/dropdown/dropdown.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/dropdown/dropdown.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,88 @@
+.p-dropdown {
+    display: inline-flex;
+    cursor: pointer;
+    position: relative;
+    user-select: none;
+}
+
+.p-dropdown-clear-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-dropdown-trigger {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+}
+
+.p-dropdown-label {
+    display: block;
+    white-space: nowrap;
+    overflow: hidden;
+    flex: 1 1 auto;
+    width: 1%;
+    text-overflow: ellipsis;
+    cursor: pointer;
+}
+
+.p-dropdown-label-empty {
+    overflow: hidden;
+    visibility: hidden;
+}
+
+input.p-dropdown-label  {
+    cursor: default;
+}
+
+.p-dropdown .p-dropdown-panel {
+    min-width: 100%;
+}
+
+.p-dropdown-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-dropdown-items-wrapper {
+    overflow: auto;
+}
+
+.p-dropdown-item {
+    cursor: pointer;
+    font-weight: normal;
+    white-space: nowrap;
+    position: relative;
+    overflow: hidden;
+}
+
+.p-dropdown-items {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+}
+
+.p-dropdown-filter {
+    width: 100%;
+}
+
+.p-dropdown-filter-container {
+    position: relative;
+}
+
+.p-dropdown-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-fluid .p-dropdown {
+    display: flex;
+}
+
+.p-fluid .p-dropdown .p-dropdown-label {
+    width: 1%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/editor/editor.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/editor/editor.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/editor/editor.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,4 @@
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+    width: auto;
+    height: auto;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/fieldset/fieldset.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/fieldset/fieldset.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/fieldset/fieldset.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+.p-fieldset-legend > a,
+.p-fieldset-legend > span {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-fieldset-toggleable .p-fieldset-legend a {
+    cursor: pointer;
+    user-select: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-fieldset-legend-text {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/fileupload/fileupload.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/fileupload/fileupload.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/fileupload/fileupload.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,45 @@
+.p-fileupload-content {
+    position: relative;
+}
+
+.p-fileupload-row {
+    display: flex;
+    align-items: center;
+}
+
+.p-fileupload-row > div {
+    flex: 1 1 auto;
+    width: 25%;
+}
+
+.p-fileupload-row > div:last-child {
+    text-align: right;
+}
+
+.p-fileupload-content .p-progressbar {
+    width: 100%;
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-button.p-fileupload-choose {
+    position: relative;
+    overflow: hidden;
+}
+
+.p-button.p-fileupload-choose input[type=file] {
+    display: none;
+}
+
+.p-fileupload-choose.p-fileupload-choose-selected input[type=file] {
+    display: none;
+}
+
+.p-fluid .p-fileupload .p-button {
+    width: auto;
+}
+
+.p-fileupload-filename {
+    word-break: break-all;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/galleria/galleria.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/galleria/galleria.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/galleria/galleria.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,274 @@
+.p-galleria-content {
+    display: flex;
+    flex-direction: column;
+}
+
+.p-galleria-item-wrapper {
+    display: flex;
+    flex-direction: column;
+    position: relative;
+}
+
+.p-galleria-item-container {
+    position: relative;
+    display: flex;
+    height: 100%;
+}
+
+.p-galleria-item-nav {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+    display: inline-flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+}
+
+.p-galleria-item-prev {
+    left: 0;
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+.p-galleria-item-next {
+    right: 0;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-galleria-item {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100%;
+    width: 100%;
+}
+
+.p-galleria-item-nav-onhover .p-galleria-item-nav {
+    pointer-events: none;
+    opacity: 0;
+    transition: opacity .2s ease-in-out;
+}
+
+.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav {
+    pointer-events: all;
+    opacity: 1;
+}
+
+.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled {
+    pointer-events: none;
+}
+
+.p-galleria-caption {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+}
+
+/* Thumbnails */
+.p-galleria-thumbnail-wrapper {
+    display: flex;
+    flex-direction: column;
+    overflow: auto;
+    flex-shrink: 0;
+}
+
+.p-galleria-thumbnail-prev,
+.p-galleria-thumbnail-next {
+    align-self: center;
+    flex: 0 0 auto;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-galleria-thumbnail-prev span,
+.p-galleria-thumbnail-next span {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.p-galleria-thumbnail-container {
+    display: flex;
+    flex-direction: row;
+}
+
+.p-galleria-thumbnail-items-container {
+    overflow: hidden;
+    width: 100%;
+}
+
+.p-galleria-thumbnail-items {
+    display: flex;
+}
+
+.p-galleria-thumbnail-item {
+    overflow: auto;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    opacity: .5;
+}
+
+.p-galleria-thumbnail-item:hover {
+    opacity: 1;
+    transition: opacity .3s;
+}
+
+.p-galleria-thumbnail-item-current {
+    opacity: 1;
+}
+
+/* Positions */
+/* Thumbnails */
+.p-galleria-thumbnails-left .p-galleria-content,
+.p-galleria-thumbnails-right .p-galleria-content {
+    flex-direction: row;
+}
+
+.p-galleria-thumbnails-left .p-galleria-item-wrapper,
+.p-galleria-thumbnails-right .p-galleria-item-wrapper {
+    flex-direction: row;
+}
+
+.p-galleria-thumbnails-left p-galleriaitem,
+.p-galleria-thumbnails-top p-galleriaitem {
+    order: 2;
+}
+
+.p-galleria-thumbnails-left p-galleriathumbnails,
+.p-galleria-thumbnails-top p-galleriathumbnails {
+    order: 1;
+}
+
+.p-galleria-thumbnails-left .p-galleria-thumbnail-container,
+.p-galleria-thumbnails-right .p-galleria-thumbnail-container {
+    flex-direction: column;
+    flex-grow: 1;
+}
+
+.p-galleria-thumbnails-left .p-galleria-thumbnail-items,
+.p-galleria-thumbnails-right .p-galleria-thumbnail-items {
+    flex-direction: column;
+    height: 100%;
+}
+.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,
+.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper {
+    height: 100%;
+}
+
+/* Indicators */
+.p-galleria-indicators {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-galleria-indicator > button {
+    display: inline-flex;
+    align-items: center;
+}
+
+.p-galleria-indicators-left .p-galleria-item-wrapper,
+.p-galleria-indicators-right .p-galleria-item-wrapper {
+    flex-direction: row;
+    align-items: center;
+}
+
+.p-galleria-indicators-left .p-galleria-item-container,
+.p-galleria-indicators-top .p-galleria-item-container {
+    order: 2;
+}
+
+.p-galleria-indicators-left .p-galleria-indicators,
+.p-galleria-indicators-top .p-galleria-indicators {
+    order: 1;
+}
+
+.p-galleria-indicators-left .p-galleria-indicators,
+.p-galleria-indicators-right .p-galleria-indicators {
+    flex-direction: column;
+}
+
+.p-galleria-indicator-onitem .p-galleria-indicators {
+    position: absolute;
+    display: flex;
+    z-index: 1;
+}
+
+.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators {
+    top: 0;
+    left: 0;
+    width: 100%;
+    align-items: flex-start;
+}
+
+.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators {
+    right: 0;
+    top: 0;
+    height: 100%;
+    align-items: flex-end;
+}
+
+.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators {
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    align-items: flex-end;
+}
+
+.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators {
+    left: 0;
+    top: 0;
+    height: 100%;
+    align-items: flex-start;
+}
+
+/* FullScreen */
+.p-galleria-mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background-color: transparent;
+    transition-property: background-color;
+}
+
+.p-galleria-close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+}
+
+.p-galleria-mask .p-galleria-item-nav {
+    position: fixed;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-galleria-mask.p-galleria-mask-leave {
+    background-color: transparent;
+}
+
+/* Keyboard Support */
+.p-items-hidden .p-galleria-thumbnail-item {
+    visibility: hidden;
+}
+
+.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active {
+    visibility: visible;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/image/image.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/image/image.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/image/image.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,55 @@
+.p-image-mask {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-image-preview-container {
+    position: relative;
+    display: inline-block;
+}
+
+.p-image-preview-indicator {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    opacity: 0;
+    transition: opacity .3s;
+}
+
+.p-image-preview-icon {
+    font-size: 1.5rem;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+    opacity: 1;
+    cursor: pointer;
+}
+
+.p-image-preview-container > img {
+    cursor: pointer;
+}
+
+.p-image-toolbar {
+    position: absolute;
+    top: 0;
+    right: 0;
+    display: flex;
+}
+
+.p-image-action.p-link {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.p-image-preview {
+    transition: transform .15s;
+    max-width: 100vw;
+    max-height: 100vh;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/inplace/inplace.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/inplace/inplace.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/inplace/inplace.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,17 @@
+.p-inplace .p-inplace-display {
+    display: inline;
+    cursor: pointer;
+}
+
+.p-inplace .p-inplace-content {
+    display: inline;
+}
+
+.p-fluid .p-inplace.p-inplace-closable .p-inplace-content {
+    display: flex;
+}
+
+.p-fluid .p-inplace.p-inplace-closable .p-inplace-content > .p-inputtext {
+    flex: 1 1 auto;
+    width: 1%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/inputnumber/inputnumber.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/inputnumber/inputnumber.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/inputnumber/inputnumber.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,102 @@
+p-inputnumber,
+.p-inputnumber {
+    display: inline-flex;
+}
+
+.p-inputnumber-button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex: 0 0 auto;
+}
+
+.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button .p-button-label,
+.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button .p-button-label {
+    display: none;
+}
+
+.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-up {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+    padding: 0;
+}
+
+.p-inputnumber-buttons-stacked .p-inputnumber-input {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-inputnumber-buttons-stacked .p-button.p-inputnumber-button-down {
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+    border-bottom-left-radius: 0;
+    padding: 0;
+}
+
+.p-inputnumber-buttons-stacked .p-inputnumber-button-group {
+    display: flex;
+    flex-direction: column;
+}
+
+.p-inputnumber-buttons-stacked .p-inputnumber-button-group .p-button.p-inputnumber-button {
+    flex: 1 1 auto;
+}
+
+.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up {
+    order: 3;
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+.p-inputnumber-buttons-horizontal .p-inputnumber-input {
+    order: 2;
+    border-radius: 0;
+}
+
+.p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down {
+    order: 1;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-inputnumber-buttons-vertical {
+    flex-direction: column;
+}
+
+.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-up {
+    order: 1;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+    width: 100%;
+}
+
+.p-inputnumber-buttons-vertical .p-inputnumber-input {
+    order: 2;
+    border-radius: 0;
+    text-align: center;
+}
+
+.p-inputnumber-buttons-vertical .p-button.p-inputnumber-button-down {
+    order: 3;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+    width: 100%;
+}
+
+.p-inputnumber-input {
+    flex: 1 1 auto;
+}
+
+.p-fluid p-inputnumber,
+.p-fluid .p-inputnumber {
+    width: 100%;
+}
+
+.p-fluid .p-inputnumber .p-inputnumber-input {
+    width: 1%;
+}
+
+.p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input {
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/inputswitch/inputswitch.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/inputswitch/inputswitch.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/inputswitch/inputswitch.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,20 @@
+.p-inputswitch {
+    position: relative;
+    display: inline-block;
+    user-select: none;
+}
+
+.p-inputswitch-slider {
+    position: absolute;
+    cursor: pointer;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+}
+
+.p-inputswitch-slider:before {
+    position: absolute;
+    content: "";
+    top: 50%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/inputtext/inputtext.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/inputtext/inputtext.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/inputtext/inputtext.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,88 @@
+.p-inputtext {
+    margin: 0;
+}
+
+.p-fluid .p-inputtext {
+    width: 100%;
+}
+
+/* InputGroup */
+.p-inputgroup {
+    display: flex;
+    align-items: stretch;
+    width: 100%;
+}
+
+.p-inputgroup-addon {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-inputgroup .p-float-label {
+    display: flex;
+    align-items: stretch;
+    width: 100%;
+}
+
+.p-inputgroup .p-inputtext,
+.p-fluid .p-inputgroup .p-inputtext,
+.p-inputgroup .p-inputwrapper,
+.p-inputgroup .p-inputwrapper > .p-component {
+    flex: 1 1 auto;
+    width: 1%;
+}
+
+/* Floating Label */
+.p-float-label {
+    display: block;
+    position: relative;
+}
+
+.p-float-label label {
+    position: absolute;
+    pointer-events: none;
+    top: 50%;
+    margin-top: -.5rem;
+    transition-property: all;
+    transition-timing-function: ease;
+    line-height: 1;
+}
+
+.p-float-label textarea ~ label {
+    top: 1rem;
+}
+
+.p-float-label input:focus ~ label,
+.p-float-label input.p-filled ~ label,
+.p-float-label textarea:focus ~ label,
+.p-float-label textarea.p-filled ~ label,
+.p-float-label .p-inputwrapper-focus ~ label,
+.p-float-label .p-inputwrapper-filled ~ label {
+    top: -.75rem;
+    font-size: 12px;
+}
+
+.p-float-label .input:-webkit-autofill ~ label {
+    top: -20px;
+    font-size: 12px;
+}
+
+.p-input-icon-left,
+.p-input-icon-right {
+    position: relative;
+    display: inline-block;
+}
+
+.p-input-icon-left > i,
+.p-input-icon-right > i {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-fluid .p-input-icon-left,
+.p-fluid .p-input-icon-right {
+    display: block;
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/inputtextarea/inputtextarea.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/inputtextarea/inputtextarea.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/inputtextarea/inputtextarea.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,8 @@
+.p-inputtextarea-resizable {
+    overflow: hidden;
+    resize: none;
+}
+
+.p-fluid .p-inputtextarea {
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/knob/knob.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/knob/knob.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/knob/knob.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,18 @@
+@keyframes dash-frame {
+    100% {
+        stroke-dashoffset: 0;
+    }
+}
+.p-knob-range {
+    fill: none;
+    transition: stroke .1s ease-in;
+}
+.p-knob-value {
+    animation-name: dash-frame;
+    animation-fill-mode: forwards;
+    fill: none;
+}
+.p-knob-text {
+    font-size: 1.3rem;
+    text-align: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/lightbox/lightbox.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/lightbox/lightbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/lightbox/lightbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,64 @@
+.ui-lightbox {
+    position: fixed;
+    display: none;
+    top: 50%;
+    left: 50%;
+    transform: translateX(-50%) translateY(-50%);
+}
+
+.ui-lightbox-content-wrapper {
+    position: relative;
+}
+
+.ui-lightbox-content {
+    position: relative;
+    margin: 0;
+    padding: 0;
+    background-color: #000000;
+}
+
+.ui-lightbox-nav-right, .ui-lightbox-nav-left {
+   position: absolute;
+   top: 50%;
+   cursor: pointer;
+}
+
+.ui-lightbox-nav-left {
+   left: 0;
+}
+
+.ui-lightbox-nav-right {
+   right: 0;
+}
+
+.ui-lightbox-loading .ui-lightbox-content {
+    background: url("./images/loading.gif") #000000 center center no-repeat;
+}
+
+.ui-lightbox-caption {
+    padding: 0.2em 0.4em;
+    display: none;
+}
+
+.ui-lightbox-caption-text {
+    margin: 0.3em 0 0.1em 0;
+    float:left;
+}
+
+.ui-lightbox-close {
+    float:right;
+    margin: 0;
+    padding: .125em;
+}
+
+.ui-lightbox-close.ui-state-hover {
+    padding: 0;
+}
+
+.ui-lightbox-nav-left, .ui-lightbox-nav-right {
+    opacity: .5;
+}
+
+.ui-lightbox-nav-left:hover, .ui-lightbox-nav-right:hover{
+    opacity: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/listbox/listbox.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/listbox/listbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/listbox/listbox.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,38 @@
+.p-listbox-list-wrapper {
+    overflow: auto;
+}
+
+.p-listbox-list {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+}
+
+.p-listbox-item {
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    display: flex;
+    align-items: center;
+    user-select: none;
+}
+
+.p-listbox-header {
+    display: flex;
+    align-items: center;
+}
+
+.p-listbox-filter-container {
+    position: relative;
+    flex: 1 1 auto;
+}
+
+.p-listbox-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-listbox-filter {
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/megamenu/megamenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/megamenu/megamenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/megamenu/megamenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,94 @@
+.p-megamenu-root-list {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-megamenu-root-list > .p-menuitem {
+    position: relative;
+}
+
+.p-megamenu .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-megamenu .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-megamenu-panel {
+    display: none;
+    position: absolute;
+    width: auto;
+    z-index: 1;
+}
+
+.p-megamenu-root-list > .p-menuitem-active > .p-megamenu-panel {
+    display: block;
+}
+
+.p-megamenu-submenu {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+/* Horizontal */
+.p-megamenu-horizontal .p-megamenu-root-list {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+}
+
+/* Vertical */
+.p-megamenu-vertical .p-megamenu-root-list {
+    flex-direction: column;
+}
+
+.p-megamenu-vertical .p-megamenu-root-list > .p-menuitem-active > .p-megamenu-panel {
+    left: 100%;
+    top: 0;
+}
+
+.p-megamenu-vertical .p-megamenu-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+}
+
+
+.p-megamenu-grid {
+    display: flex;
+}
+
+.p-megamenu-col-2,
+.p-megamenu-col-3,
+.p-megamenu-col-4,
+.p-megamenu-col-6,
+.p-megamenu-col-12 {
+    flex: 0 0 auto;
+    padding: 0.5rem;
+}
+
+.p-megamenu-col-2 {
+    width: 16.6667%;
+}
+
+.p-megamenu-col-3 {
+    width: 25%;
+}
+
+.p-megamenu-col-4 {
+    width: 33.3333%;
+}
+
+.p-megamenu-col-6 {
+    width: 50%;
+}
+
+.p-megamenu-col-12 {
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/menu/menu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/menu/menu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/menu/menu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,24 @@
+.p-menu-overlay {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-menu ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-menu .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-menu .p-menuitem-text {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/menubar/menubar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/menubar/menubar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/menubar/menubar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,70 @@
+.p-menubar {
+    display: flex;
+    align-items: center;
+}
+
+.p-menubar ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-menubar .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-menubar .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-menubar .p-menuitem {
+    position: relative;
+}
+
+.p-menubar-root-list {
+    display: flex;
+    align-items: center;
+}
+
+.p-menubar-root-list > li ul {
+    display: none;
+    z-index: 1;
+}
+
+.p-menubar-root-list > .p-menuitem-active > p-menubarsub > .p-submenu-list {
+    display: block;
+}
+
+.p-menubar .p-submenu-list {
+    display: none;
+    position: absolute;
+    z-index: 1;
+}
+
+.p-menubar .p-submenu-list > .p-menuitem-active > p-menubarsub > .p-submenu-list  {
+    display: block;
+    left: 100%;
+    top: 0;
+}
+
+.p-menubar .p-submenu-list .p-menuitem-link .p-submenu-icon {
+    margin-left: auto;
+}
+
+.p-menubar .p-menubar-custom,
+.p-menubar .p-menubar-end {
+    margin-left: auto;
+    align-self: center;
+}
+
+.p-menubar-button {
+    display: none;
+    cursor: pointer;
+    align-items: center;
+    justify-content: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/message/message.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/message/message.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/message/message.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,15 @@
+.p-inline-message {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    vertical-align: top;
+}
+
+.p-inline-message-icon-only .p-inline-message-text {
+    visibility: hidden;
+    width: 0;
+}
+
+.p-fluid .p-inline-message {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/messages/messages.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/messages/messages.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/messages/messages.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+.p-message-wrapper {
+    display: flex;
+    align-items: center;
+}
+
+.p-message-close {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-message-close.p-link {
+    margin-left: auto;
+    overflow: hidden;
+    position: relative;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/multiselect/multiselect.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/multiselect/multiselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/multiselect/multiselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,107 @@
+.p-multiselect {
+    display: inline-flex;
+    cursor: pointer;
+    position: relative;
+    user-select: none;
+}
+
+.p-multiselect-trigger {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+}
+
+.p-multiselect-label-container {
+    overflow: hidden;
+    flex: 1 1 auto;
+    cursor: pointer;
+}
+
+.p-multiselect-label  {
+    display: block;
+    white-space: nowrap;
+    cursor: pointer;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.p-multiselect-label-empty {
+    overflow: hidden;
+    visibility: hidden;
+}
+
+.p-multiselect-token {
+    cursor: default;
+    display: inline-flex;
+    align-items: center;
+    flex: 0 0 auto;
+}
+
+.p-multiselect-token-icon {
+    cursor: pointer;
+}
+
+.p-multiselect .p-multiselect-panel {
+    min-width: 100%;
+}
+
+.p-multiselect-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-multiselect-items-wrapper {
+    overflow: auto;
+}
+
+.p-multiselect-items {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+}
+
+.p-multiselect-item {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    font-weight: normal;
+    white-space: nowrap;
+    position: relative;
+    overflow: hidden;
+}
+
+.p-multiselect-header {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+
+.p-multiselect-filter-container {
+    position: relative;
+    flex: 1 1 auto;
+}
+
+.p-multiselect-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-multiselect-filter-container .p-inputtext {
+    width: 100%;
+}
+
+.p-multiselect-close {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-fluid .p-multiselect {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/orderlist/orderlist.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/orderlist/orderlist.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/orderlist/orderlist.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,75 @@
+.p-orderlist {
+    display: flex;
+}
+
+.p-orderlist-controls {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.p-orderlist-list-container {
+    flex: 1 1 auto;
+}
+
+.p-orderlist-list {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    overflow: auto;
+    min-height: 12rem;
+}
+
+.p-orderlist-item {
+    display: block;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-orderlist-item:not(.cdk-drag-disabled) {
+    cursor: move;
+}
+
+.p-orderlist-item.cdk-drag-placeholder {
+    opacity: 0;
+}
+
+.p-orderlist-item.cdk-drag-animating {
+    transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
+
+.p-orderlist.p-state-disabled .p-orderlist-item,
+.p-orderlist.p-state-disabled .p-button {
+    cursor: default;
+}
+
+.p-orderlist.p-state-disabled .p-orderlist-list {
+    overflow: hidden;
+}
+
+.p-orderlist-filter {
+    position: relative;
+}
+
+.p-orderlist-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-orderlist-filter-input {
+    width: 100%;
+}
+
+.p-orderlist-controls-right .p-orderlist-controls {
+    order: 2;
+}
+
+.p-orderlist-controls-right .p-orderlist-list-container {
+    order: 1;
+}
+
+.p-orderlist-list.cdk-drop-list-dragging .p-orderlist-item:not(.cdk-drag-placeholder) {
+    transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
Index: trip-planner-front/node_modules/primeng/resources/components/organizationchart/organizationchart.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/organizationchart/organizationchart.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/organizationchart/organizationchart.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,60 @@
+.p-organizationchart-table {
+    border-spacing: 0;
+    border-collapse: separate;
+    margin: 0 auto;
+}
+
+.p-organizationchart-table > tbody > tr > td {
+    text-align: center;
+    vertical-align: top;
+    padding: 0 .75rem;
+}
+
+.p-organizationchart-node-content {
+    display: inline-block;
+    position: relative;
+}
+
+.p-organizationchart-node-content .p-node-toggler {
+    position: absolute;
+    bottom: -.75rem;
+    margin-left: -.75rem;
+    z-index: 2;
+    left: 50%;
+    user-select: none;
+    cursor: pointer;
+    width: 1.5rem;
+    height: 1.5rem;
+}
+
+.p-organizationchart-node-content .p-node-toggler .p-node-toggler-icon {
+    position: relative;
+    top: .25rem;
+}
+
+.p-organizationchart-line-down {
+    margin: 0 auto;
+    height: 20px;
+    width: 1px;
+}
+
+.p-organizationchart-line-right {
+    border-radius: 0px;
+}
+
+ .p-organizationchart-line-left {
+    border-radius: 0;
+}
+
+.p-organizationchart-selectable-node {
+    cursor: pointer;
+}
+
+.p-organizationchart .p-organizationchart-node-hidden {
+    display: none;
+}
+
+.p-organizationchart-preservespace .p-organizationchart-node-hidden {
+    visibility: hidden;
+    display: inherit;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/overlaypanel/overlaypanel.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/overlaypanel/overlaypanel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/overlaypanel/overlaypanel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,58 @@
+.p-overlaypanel {
+    position: absolute;
+    margin-top: 10px;
+    top: 0;
+    left: 0;
+}
+
+.p-overlaypanel-flipped {
+    margin-top: 0;
+    margin-bottom: 10px;
+}
+
+.p-overlaypanel-close {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-overlaypanel:after, .p-overlaypanel:before {
+	bottom: 100%;
+	left: calc(var(--overlayArrowLeft, 0) + 1.25rem);
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+	pointer-events: none;
+}
+
+.p-overlaypanel:after {
+	border-width: 8px;
+	margin-left: -8px;
+}
+
+.p-overlaypanel:before {
+	border-width: 10px;
+	margin-left: -10px;
+}
+
+.p-overlaypanel-shifted:after, .p-overlaypanel-shifted:before {
+    left: auto;
+    right: 1.25em;
+    margin-left: auto;
+}
+
+.p-overlaypanel-flipped:after, .p-overlaypanel-flipped:before {
+    bottom: auto;
+    top: 100%;
+}
+
+.p-overlaypanel.p-overlaypanel-flipped:after {
+    border-bottom-color: transparent;
+}
+
+.p-overlaypanel.p-overlaypanel-flipped:before {
+    border-bottom-color: transparent
+}
Index: trip-planner-front/node_modules/primeng/resources/components/paginator/paginator.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/paginator/paginator.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/paginator/paginator.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,35 @@
+.p-paginator {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-wrap: wrap;
+}
+
+.p-paginator-left-content {
+	margin-right: auto;
+}
+
+.p-paginator-right-content {
+	margin-left: auto;
+}
+
+.p-paginator-page,
+.p-paginator-next,
+.p-paginator-last,
+.p-paginator-first,
+.p-paginator-prev,
+.p-paginator-current {
+    cursor: pointer;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    line-height: 1;
+    user-select: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-paginator-element:focus {
+    z-index: 1;
+    position: relative;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/panel/panel.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/panel/panel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/panel/panel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,19 @@
+.p-panel-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.p-panel-title {
+    line-height: 1;
+}
+
+.p-panel-header-icon {
+    display: inline-flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/panelmenu/panelmenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/panelmenu/panelmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/panelmenu/panelmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,30 @@
+.p-panelmenu .p-panelmenu-header-link {
+    display: flex;
+    align-items: center;
+    user-select: none;
+    cursor: pointer;
+    position: relative;
+    text-decoration: none;
+}
+
+.p-panelmenu .p-panelmenu-header-link:focus {
+    z-index: 1;
+}
+
+.p-panelmenu .p-submenu-list {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-panelmenu .p-menuitem-link {
+    display: flex;
+    align-items: center;
+    user-select: none;
+    cursor: pointer;
+    text-decoration: none;
+}
+
+.p-panelmenu .p-menuitem-text {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/password/password.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/password/password.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/password/password.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,28 @@
+.p-password {
+    position: relative;
+    display: inline-flex;
+}
+
+.p-password-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-password .p-password-panel {
+    min-width: 100%;
+}
+
+.p-password-meter {
+    height: 10px;
+}
+
+.p-password-strength {
+    height: 100%;
+    width: 0%;
+    transition: width 1s ease-in-out;
+}
+
+.p-fluid .p-password {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/picklist/picklist.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/picklist/picklist.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/picklist/picklist.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,58 @@
+.p-picklist {
+    display: flex;
+}
+
+.p-picklist-buttons {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+}
+
+.p-picklist-list-wrapper {
+    flex: 1 1 50%;
+}
+
+.p-picklist-list {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    overflow: auto;
+    min-height: 12rem;
+}
+
+.p-picklist-item {
+    display: block;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-picklist-item:not(.cdk-drag-disabled) {
+    cursor: move;
+}
+
+.p-picklist-item.cdk-drag-placeholder {
+    opacity: 0;
+}
+
+.p-picklist-item.cdk-drag-animating {
+    transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
+
+.p-picklist-filter {
+    position: relative;
+}
+
+.p-picklist-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-picklist-filter-input {
+    width: 100%;
+}
+
+.p-picklist-list.cdk-drop-list-dragging .p-picklist-item:not(.cdk-drag-placeholder) {
+    transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
+}
Index: trip-planner-front/node_modules/primeng/resources/components/progressbar/progressbar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/progressbar/progressbar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/progressbar/progressbar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,96 @@
+.p-progressbar {
+    position: relative;
+    overflow: hidden;
+}
+
+.p-progressbar-determinate .p-progressbar-value {
+    height: 100%;
+    width: 0%;
+    position: absolute;
+    display: none;
+    border: 0 none;
+}
+
+.p-progressbar-determinate .p-progressbar-value-animate {
+    transition: width 1s ease-in-out;
+}
+
+.p-progressbar-determinate .p-progressbar-label {
+    text-align: center;
+    height: 100%;
+    width: 100%;
+    position: absolute;
+    font-weight: bold;
+}
+
+.p-progressbar-indeterminate .p-progressbar-value::before {
+      content: '';
+      position: absolute;
+      background-color: inherit;
+      top: 0;
+      left: 0;
+      bottom: 0;
+      will-change: left, right;
+      -webkit-animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+              animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+}
+
+.p-progressbar-indeterminate .p-progressbar-value::after {
+    content: '';
+    position: absolute;
+    background-color: inherit;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    will-change: left, right;
+    -webkit-animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
+            animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
+    -webkit-animation-delay: 1.15s;
+            animation-delay: 1.15s;
+}
+
+@-webkit-keyframes p-progressbar-indeterminate-anim {
+  0% {
+    left: -35%;
+    right: 100%; }
+  60% {
+    left: 100%;
+    right: -90%; }
+  100% {
+    left: 100%;
+    right: -90%; }
+}
+@keyframes p-progressbar-indeterminate-anim {
+  0% {
+    left: -35%;
+    right: 100%; }
+  60% {
+    left: 100%;
+    right: -90%; }
+  100% {
+    left: 100%;
+    right: -90%; }
+}
+
+@-webkit-keyframes p-progressbar-indeterminate-anim-short {
+  0% {
+    left: -200%;
+    right: 100%; }
+  60% {
+    left: 107%;
+    right: -8%; }
+  100% {
+    left: 107%;
+    right: -8%; }
+}
+@keyframes p-progressbar-indeterminate-anim-short {
+  0% {
+    left: -200%;
+    right: 100%; }
+  60% {
+    left: 107%;
+    right: -8%; }
+  100% {
+    left: 107%;
+    right: -8%; }
+}
Index: trip-planner-front/node_modules/primeng/resources/components/progressspinner/progressspinner.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/progressspinner/progressspinner.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/progressspinner/progressspinner.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,72 @@
+.p-progress-spinner {
+    position: relative;
+    margin: 0 auto;
+    width: 100px;
+    height: 100px;
+    display: inline-block;
+}
+
+.p-progress-spinner::before {
+     content: '';
+     display: block;
+     padding-top: 100%;
+}
+
+.p-progress-spinner-svg {
+    animation: p-progress-spinner-rotate 2s linear infinite;
+    height: 100%;
+    transform-origin: center center;
+    width: 100%;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    margin: auto;
+}
+
+.p-progress-spinner-circle {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: 0;
+    stroke: #d62d20;
+    animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite;
+    stroke-linecap: round;
+}
+
+@keyframes p-progress-spinner-rotate {
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+@keyframes p-progress-spinner-dash {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0;
+    }
+    50% {
+        stroke-dasharray: 89, 200;
+        stroke-dashoffset: -35px;
+    }
+    100% {
+        stroke-dasharray: 89, 200;
+        stroke-dashoffset: -124px;
+    }
+}
+
+@keyframes p-progress-spinner-color {
+    100%,
+    0% {
+        stroke: #d62d20;
+    }
+    40% {
+        stroke: #0057e7;
+    }
+    66% {
+        stroke: #008744;
+    }
+    80%,
+    90% {
+        stroke: #ffa700;
+    }
+}
Index: trip-planner-front/node_modules/primeng/resources/components/radiobutton/radiobutton.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/radiobutton/radiobutton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/radiobutton/radiobutton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,36 @@
+.p-radiobutton {
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    vertical-align: bottom;
+    position: relative;
+}
+
+.p-radiobutton-box {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.p-radiobutton-icon {
+    -webkit-backface-visibility: hidden;
+    backface-visibility: hidden;
+    transform: translateZ(0) scale(.1);
+    border-radius: 50%;
+    visibility: hidden;
+}
+
+.p-radiobutton-box.p-highlight .p-radiobutton-icon {
+    transform: translateZ(0) scale(1.0, 1.0);
+    visibility: visible;
+}
+
+p-radiobutton {
+    display: inline-flex;
+    vertical-align: bottom;
+    align-items: center;
+}
+
+.p-radiobutton-label {
+    line-height: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/rating/rating.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/rating/rating.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/rating/rating.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,7 @@
+.p-rating-icon {
+    cursor: pointer;
+}
+
+.p-rating.p-rating-readonly .p-rating-icon {
+    cursor: default;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/ripple/ripple.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/ripple/ripple.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/ripple/ripple.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+.p-ripple {
+    overflow: hidden;
+    position: relative;
+}
+
+.p-ink {
+    display: block;
+    position: absolute;
+    background: rgba(255, 255, 255, 0.5);
+    border-radius: 100%;
+    transform: scale(0);
+}
+  
+.p-ink-active {
+    animation: ripple 0.4s linear;
+}
+
+.p-ripple-disabled .p-ink {
+    display: none !important;
+}
+  
+@keyframes ripple {  
+    100% {
+        opacity: 0;
+        transform: scale(2.5);
+    }
+}
Index: trip-planner-front/node_modules/primeng/resources/components/scrollpanel/scrollpanel.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/scrollpanel/scrollpanel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/scrollpanel/scrollpanel.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,50 @@
+.p-scrollpanel-wrapper {
+    overflow: hidden;
+    width: 100%;
+    height: 100%;
+    position: relative;
+    z-index: 1;
+    float: left;
+}
+
+.p-scrollpanel-content {
+    height: calc(100% + 18px);
+    width: calc(100% + 18px);
+    padding: 0 18px 18px 0;
+    position: relative;
+    overflow: auto;
+    box-sizing: border-box;
+}
+
+.p-scrollpanel-bar {
+    position: relative;
+    background: #c1c1c1;
+    border-radius: 3px;
+    z-index: 2;
+    cursor: pointer;
+    opacity: 0;
+    transition: opacity 0.25s linear;
+}
+
+.p-scrollpanel-bar-y {
+    width: 9px;
+    top: 0;
+}
+
+.p-scrollpanel-bar-x {
+    height: 9px;
+    bottom: 0;
+}
+
+.p-scrollpanel-hidden {
+    visibility: hidden;
+}
+
+.p-scrollpanel:hover .p-scrollpanel-bar,
+.p-scrollpanel:active .p-scrollpanel-bar {
+    opacity: 1;
+}
+
+.p-scrollpanel-grabbed {
+    user-select: none;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/scrolltop/scrolltop.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/scrolltop/scrolltop.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/scrolltop/scrolltop.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,16 @@
+.p-scrolltop {
+    position: fixed;
+    bottom: 20px;
+    right: 20px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-scrolltop-sticky {
+    position: sticky;
+}
+
+.p-scrolltop-sticky.p-link {
+    margin-left: auto;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/sidebar/sidebar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/sidebar/sidebar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/sidebar/sidebar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,99 @@
+.p-sidebar {
+    position: fixed;
+    transition: transform .3s;
+    display: flex;
+    flex-direction: column;
+}
+
+.p-sidebar-content {
+    position: relative;
+    overflow-y: auto;
+}
+
+.p-sidebar-header {
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+}
+
+.p-sidebar-icon {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-sidebar-left {
+    top: 0;
+    left: 0;
+    width: 20rem;
+    height: 100%;
+}
+
+.p-sidebar-right {
+    top: 0;
+    right: 0;
+    width: 20rem;
+    height: 100%;
+}
+
+.p-sidebar-top {
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 10rem;
+}
+
+.p-sidebar-bottom {
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 10rem;
+}
+
+.p-sidebar-full {
+    width: 100%;
+    height: 100%;
+    top: 0;
+    left: 0;
+    -webkit-transition: none;
+    transition: none;
+}
+
+.p-sidebar-left.p-sidebar-sm,
+.p-sidebar-right.p-sidebar-sm {
+    width: 20rem;
+}
+
+.p-sidebar-left.p-sidebar-md,
+.p-sidebar-right.p-sidebar-md {
+    width: 40rem;
+}
+
+.p-sidebar-left.p-sidebar-lg,
+.p-sidebar-right.p-sidebar-lg {
+    width: 60rem;
+}
+
+.p-sidebar-top.p-sidebar-sm,
+.p-sidebar-bottom.p-sidebar-sm {
+    height: 10rem;
+}
+
+.p-sidebar-top.p-sidebar-md,
+.p-sidebar-bottom.p-sidebar-md {
+    height: 20rem;
+}
+
+.p-sidebar-top.p-sidebar-lg,
+.p-sidebar-bottom.p-sidebar-lg {
+    height: 30rem;
+}
+
+@media screen and (max-width: 64em) {
+    .p-sidebar-left.p-sidebar-lg,
+    .p-sidebar-left.p-sidebar-md,
+    .p-sidebar-right.p-sidebar-lg,
+    .p-sidebar-right.p-sidebar-md {
+        width: 20rem;
+    }
+}
Index: trip-planner-front/node_modules/primeng/resources/components/skeleton/skeleton.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/skeleton/skeleton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/skeleton/skeleton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,33 @@
+.p-skeleton {
+    position: relative;
+    overflow: hidden;
+}
+
+.p-skeleton::after {
+    content: "";
+    animation: p-skeleton-animation 1.2s infinite;
+    height: 100%;
+    left: 0;
+    position: absolute;
+    right: 0;
+    top: 0;
+    transform: translateX(-100%);
+    z-index: 1;
+}
+
+.p-skeleton.p-skeleton-circle {
+    border-radius: 50%;
+}
+
+.p-skeleton-none::after {
+   animation: none;
+}
+
+@keyframes p-skeleton-animation {
+    from {
+        transform: translateX(-100%);
+    }
+    to {
+        transform: translateX(100%);
+    }
+}
Index: trip-planner-front/node_modules/primeng/resources/components/slidemenu/slidemenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/slidemenu/slidemenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/slidemenu/slidemenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,94 @@
+.p-slidemenu {
+    width: 12.5rem;
+}
+
+.p-slidemenu.p-slidemenu-overlay {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-slidemenu ul {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+.p-slidemenu .p-slidemenu-rootlist {
+    position: absolute;
+    top: 0;
+}
+
+.p-slidemenu .p-submenu-list {
+    display: none;
+    position: absolute;
+    top: 0;
+    width: 12.5rem;
+}
+
+.p-slidemenu .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+}
+
+.p-slidemenu .p-menuitem-icon {
+    vertical-align: middle;
+}
+
+.p-slidemenu .p-menuitem-text {
+    vertical-align: middle;
+}
+
+.p-slidemenu .p-menuitem {
+    position: relative;
+}
+
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+    margin-left: auto;
+}
+
+.p-slidemenu .p-slidemenu-wrapper {
+    position: relative;
+}
+
+.p-slidemenu .p-slidemenu-content {
+    overflow-x: hidden;
+    overflow-y: auto;
+    position: relative;
+}
+
+.p-slidemenu-backward {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    cursor: pointer;
+    display: none;
+}
+
+.p-slidemenu-backward .p-slidemenu-backward-icon {
+    vertical-align: middle;
+}
+
+.p-slidemenu-backward span {
+    vertical-align: middle;
+}
+
+.p-slidemenu .p-menuitem-active {
+    position: static;
+}
+
+.p-slidemenu .p-menuitem-active > .p-submenu > .p-submenu-list {
+    display: block;
+}
+
+.p-slidemenu ul:not(.p-active-submenu) > .p-menuitem:not(.p-menuitem-active),
+.p-slidemenu .p-active-submenu > .p-menuitem-active > .p-submenu > .p-submenu-list {
+    display: none;
+}
+
+.p-slidemenu .p-active-submenu > .p-menuitem-active ~ .p-menuitem {
+    display: block;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/slider/slider.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/slider/slider.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/slider/slider.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,39 @@
+.p-slider {
+	position: relative;
+}
+
+.p-slider .p-slider-handle {
+	position: absolute;
+	cursor: grab;
+    touch-action: none;
+    display: block;
+}
+
+.p-slider-range {
+	position: absolute;
+    display: block;
+}
+
+.p-slider-horizontal .p-slider-range {
+    top: 0;
+    left: 0;
+	height: 100%;
+}
+
+.p-slider-horizontal .p-slider-handle {
+    top: 50%;
+}
+
+.p-slider-vertical {
+	height: 100px;
+}
+
+.p-slider-vertical .p-slider-handle {
+    left: 50%;
+}
+
+.p-slider-vertical .p-slider-range {
+    bottom: 0;
+    left: 0;
+    width: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/speeddial/speeddial.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/speeddial/speeddial.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/speeddial/speeddial.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,110 @@
+.p-speeddial {
+    position: absolute;
+    display: flex;
+    z-index: 1;
+}
+
+.p-speeddial-list {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    transition: top 0s linear 0.2s;
+    pointer-events: none;
+}
+
+.p-speeddial-item {
+    transform: scale(0);
+    opacity: 0;
+    transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, opacity 0.8s;
+    will-change: transform;
+}
+
+.p-speeddial-action {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border-radius: 50%;
+    position: relative;
+    overflow: hidden;
+    cursor: pointer;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+    position: absolute;
+}
+
+.p-speeddial-rotate {
+    transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
+    will-change: transform;
+}
+
+.p-speeddial-mask {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    opacity: 0;
+    transition: opacity 250ms cubic-bezier(0.25, 0.8, 0.25, 1);
+}
+
+.p-speeddial-mask-visible {
+    pointer-events: none;
+    opacity: 1;
+    transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);
+}
+
+.p-speeddial-opened .p-speeddial-list {
+    pointer-events: auto;
+}
+
+.p-speeddial-opened .p-speeddial-item {
+    transform: scale(1);
+    opacity: 1;
+}
+
+.p-speeddial-opened .p-speeddial-rotate {
+    transform: rotate(45deg);
+}
+
+/* Direction */
+.p-speeddial-direction-up {
+    align-items: center;
+    flex-direction: column-reverse;
+}
+
+.p-speeddial-direction-up .p-speeddial-list {
+    flex-direction: column-reverse;
+}
+
+.p-speeddial-direction-down {
+    align-items: center;
+    flex-direction: column;
+}
+
+.p-speeddial-direction-down .p-speeddial-list {
+    flex-direction: column;
+}
+
+.p-speeddial-direction-left {
+    justify-content: center;
+    flex-direction: row-reverse;
+}
+
+.p-speeddial-direction-left .p-speeddial-list {
+    flex-direction: row-reverse;
+}
+
+.p-speeddial-direction-right {
+    justify-content: center;
+    flex-direction: row;
+}
+
+.p-speeddial-direction-right .p-speeddial-list {
+    flex-direction: row;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/spinner/spinner.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/spinner/spinner.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/spinner/spinner.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+.ui-spinner {
+    display: inline-block;
+    overflow: visible;
+    padding: 0;
+    position: relative;
+    vertical-align: middle;
+}
+
+.ui-spinner-input {
+    vertical-align: middle;
+    padding-right: 1.5em;
+}
+
+.ui-spinner-button {
+    cursor: default;
+    display: block;
+    height: 50%;
+    margin: 0;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    right: 0;
+    text-align: center;
+    vertical-align: middle;
+    width: 1.5em;
+}
+
+.ui-spinner .ui-spinner-button-icon {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    margin-top: -.5em;
+    margin-left: -.5em;
+    width: 1em;
+}
+
+.ui-spinner-up {
+    top: 0;
+}
+
+.ui-spinner-down {
+    bottom: 0;
+}
+
+/* Fluid */
+.ui-fluid .ui-spinner {
+    width: 100%;
+}
+
+.ui-fluid .ui-spinner .ui-spinner-input {
+    padding-right: 2em;
+    width: 100%;
+}
+
+.ui-fluid .ui-spinner .ui-spinner-button {
+    width: 1.5em;
+}
+
+.ui-fluid .ui-spinner .ui-spinner-button .ui-spinner-button-icon {
+    left: .7em;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/splitbutton/splitbutton.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/splitbutton/splitbutton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/splitbutton/splitbutton.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,27 @@
+.p-splitbutton {
+    display: inline-flex;
+    position: relative;
+}
+
+.p-splitbutton .p-splitbutton-defaultbutton {
+    flex: 1 1 auto;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+    border-right: 0 none;
+}
+
+.p-splitbutton-menubutton {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+.p-splitbutton .p-menu {
+    min-width: 100%;
+}
+
+.p-fluid .p-splitbutton  {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/splitter/splitter.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/splitter/splitter.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/splitter/splitter.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,62 @@
+.p-splitter {
+    display: flex;
+    flex-wrap: nowrap;
+}
+
+.p-splitter-vertical {
+    flex-direction: column;
+}
+
+.p-splitter-panel {
+    flex-grow: 1;
+}
+
+.p-splitter-panel-nested {
+    display: flex;
+}
+
+.p-splitter-panel p-splitter {
+    flex-grow: 1;
+}
+
+.p-splitter-panel .p-splitter {
+    flex-grow: 1;
+    border: 0 none;
+}
+
+.p-splitter-gutter {
+    flex-grow: 0;
+    flex-shrink: 0;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: col-resize;
+}
+
+.p-splitter-horizontal.p-splitter-resizing {
+    cursor: col-resize;
+    user-select: none;
+}
+
+.p-splitter-horizontal > .p-splitter-gutter > .p-splitter-gutter-handle {
+    height: 24px;
+    width: 100%;
+}
+
+.p-splitter-horizontal > .p-splitter-gutter {
+    cursor: col-resize;
+}
+
+.p-splitter-vertical.p-splitter-resizing {
+    cursor: row-resize;
+    user-select: none;
+}
+
+.p-splitter-vertical > .p-splitter-gutter {
+    cursor: row-resize;
+}
+
+.p-splitter-vertical > .p-splitter-gutter > .p-splitter-gutter-handle {
+    width: 24px;
+    height: 100%;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/steps/steps.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/steps/steps.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/steps/steps.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,47 @@
+.p-steps {
+    position: relative;
+}
+
+.p-steps ul {
+    padding: 0;
+    margin: 0;
+    list-style-type: none;
+    display: flex;
+}
+
+.p-steps-item {
+    position: relative;
+    display: flex;
+    justify-content: center;
+    flex: 1 1 auto;
+}
+
+.p-steps-item .p-menuitem-link {
+    display: inline-flex;
+    flex-direction: column;
+    align-items: center;
+    overflow: hidden;
+    text-decoration: none;
+}
+
+.p-steps.p-steps-readonly .p-steps-item {
+    cursor: auto;
+}
+
+.p-steps-item.p-steps-current .p-menuitem-link {
+    cursor: default;
+}
+
+.p-steps-title {
+    white-space: nowrap;
+}
+
+.p-steps-number {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-steps-title {
+    display: block;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/table/table.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/table/table.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/table/table.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,316 @@
+.p-datatable {
+    position: relative;
+}
+
+.p-datatable table {
+    border-collapse: collapse;
+    min-width: 100%;
+    table-layout: fixed;
+}
+
+.p-datatable .p-sortable-column {
+    cursor: pointer;
+    user-select: none;
+}
+
+.p-datatable .p-sortable-column .p-column-title,
+.p-datatable .p-sortable-column .p-sortable-column-icon,
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+    vertical-align: middle;
+}
+
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-datatable-auto-layout > .p-datatable-wrapper {
+    overflow-x: auto;
+}
+
+.p-datatable-auto-layout > .p-datatable-wrapper > table {
+    table-layout: auto;
+}
+
+.p-datatable-responsive-scroll > .p-datatable-wrapper {
+    overflow-x: auto;
+}
+
+.p-datatable-responsive-scroll > .p-datatable-wrapper > table,
+.p-datatable-auto-layout > .p-datatable-wrapper > table {
+    table-layout: auto;
+}
+
+.p-datatable-hoverable-rows .p-selectable-row {
+    cursor: pointer;
+}
+
+/* Scrollable */
+.p-datatable-scrollable .p-datatable-wrapper {
+    position: relative;
+    overflow: auto;
+}
+
+.p-datatable-scrollable .p-datatable-thead,
+.p-datatable-scrollable .p-datatable-tbody,
+.p-datatable-scrollable .p-datatable-tfoot {
+    display: block;
+}
+
+.p-datatable-scrollable .p-datatable-thead > tr,
+.p-datatable-scrollable .p-datatable-tbody > tr,
+.p-datatable-scrollable .p-datatable-tfoot > tr {
+    display: flex;
+    flex-wrap: nowrap;
+    width: 100%;
+}
+
+.p-datatable-scrollable .p-datatable-thead > tr > th,
+.p-datatable-scrollable .p-datatable-tbody > tr > td,
+.p-datatable-scrollable .p-datatable-tfoot > tr > td {
+    display: flex;
+    flex: 1 1 0;
+    align-items: center;
+}
+
+.p-datatable-scrollable .p-datatable-thead {
+    position: sticky;
+    top: 0;
+    z-index: 1;
+}
+
+.p-datatable-scrollable .p-datatable-frozen-tbody {
+    position: sticky;
+    z-index: 1;
+}
+
+.p-datatable-scrollable .p-datatable-tfoot {
+    position: sticky;
+    bottom: 0;
+    z-index: 1;
+}
+
+.p-datatable-scrollable .p-frozen-column {
+    position: sticky;
+    background: inherit;
+}
+
+.p-datatable-scrollable th.p-frozen-column {
+    z-index: 1;
+}
+
+.p-datatable-scrollable-both .p-datatable-thead > tr > th,
+.p-datatable-scrollable-both .p-datatable-tbody > tr > td,
+.p-datatable-scrollable-both .p-datatable-tfoot > tr > td,
+.p-datatable-scrollable-horizontal .p-datatable-thead > tr > th
+.p-datatable-scrollable-horizontal .p-datatable-tbody > tr > td,
+.p-datatable-scrollable-horizontal .p-datatable-tfoot > tr > td {
+    flex: 0 0 auto;
+}
+
+.p-datatable-flex-scrollable {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+}
+
+.p-datatable-flex-scrollable .p-datatable-wrapper {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    height: 100%;
+}
+
+.p-datatable-scrollable .p-rowgroup-header {
+    position: sticky;
+    z-index: 1;
+}
+
+.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead,
+.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot {
+    display: table;
+    border-collapse: collapse;
+    width: 100%;
+    table-layout: fixed;
+}
+
+.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead > tr,
+.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot > tr {
+    display: table-row;
+}
+
+.p-datatable-scrollable.p-datatable-grouped-header .p-datatable-thead > tr > th,
+.p-datatable-scrollable.p-datatable-grouped-footer .p-datatable-tfoot > tr > td {
+    display: table-cell;
+}
+
+/* Flex Scrollable */
+.p-datatable-flex-scrollable {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    height: 100%;
+}
+
+.p-datatable-flex-scrollable .p-datatable-virtual-scrollable-body {
+    flex: 1;
+}
+
+/* Resizable */
+.p-datatable-resizable > .p-datatable-wrapper {
+    overflow-x: auto;
+}
+
+.p-datatable-resizable .p-datatable-thead > tr > th,
+.p-datatable-resizable .p-datatable-tfoot > tr > td,
+.p-datatable-resizable .p-datatable-tbody > tr > td {
+    overflow: hidden;
+    white-space: nowrap;
+}
+
+.p-datatable-resizable .p-resizable-column {
+    background-clip: padding-box;
+    position: relative;
+}
+
+.p-datatable-resizable-fit .p-resizable-column:last-child .p-column-resizer {
+    display: none;
+}
+
+.p-datatable .p-column-resizer {
+    display: block;
+    position: absolute !important;
+    top: 0;
+    right: 0;
+    margin: 0;
+    width: .5rem;
+    height: 100%;
+    padding: 0px;
+    cursor:col-resize;
+    border: 1px solid transparent;
+}
+
+.p-datatable .p-column-resizer-helper {
+    width: 1px;
+    position: absolute;
+    z-index: 10;
+    display: none;
+}
+
+.p-datatable .p-row-editor-init,
+.p-datatable .p-row-editor-save,
+.p-datatable .p-row-editor-cancel {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Expand */
+.p-datatable .p-row-toggler {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Reorder */
+.p-datatable-reorder-indicator-up,
+.p-datatable-reorder-indicator-down {
+    position: absolute;
+    display: none;
+}
+
+.p-datatable-reorderablerow-handle {
+    cursor: move;
+}
+
+[pReorderableColumn] {
+    cursor: move;
+}
+
+/* Loader */
+.p-datatable .p-datatable-loading-overlay {
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    z-index: 2;
+}
+
+/* Filter */
+.p-column-filter-row {
+    display: flex;
+    align-items: center;
+    width: 100%;
+}
+
+.p-column-filter-menu {
+    display: inline-flex;
+}
+
+.p-column-filter-row p-columnfilterformelement {
+    flex: 1 1 auto;
+    width: 1%;
+}
+
+.p-column-filter-menu-button,
+.p-column-filter-clear-button {
+    display: inline-flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-column-filter-overlay {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-column-filter-row-items {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-column-filter-row-item {
+    cursor: pointer;
+}
+
+.p-column-filter-add-button,
+.p-column-filter-remove-button {
+    justify-content: center;
+}
+
+.p-column-filter-add-button .p-button-label,
+.p-column-filter-remove-button .p-button-label {
+    flex-grow: 0;
+}
+
+.p-column-filter-buttonbar {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+
+.p-column-filter-buttonbar .p-button {
+    width: auto;
+}
+
+/* Responsive */
+.p-datatable .p-datatable-tbody > tr > td > .p-column-title {
+    display: none;
+}
+
+/* Virtual Scroll*/
+
+cdk-virtual-scroll-viewport {
+    outline: 0 none;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tabmenu/tabmenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tabmenu/tabmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tabmenu/tabmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,39 @@
+.p-tabmenu {
+    overflow-x: auto;
+}
+
+.p-tabmenu-nav {
+    display: flex;
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    flex-wrap: nowrap;
+}
+
+.p-tabmenu-nav a {
+    cursor: pointer;
+    user-select: none;
+    display: flex;
+    align-items: center;
+    position: relative;
+    text-decoration: none;
+    text-decoration: none;
+    overflow: hidden;
+}
+
+.p-tabmenu-nav a:focus {
+    z-index: 1;
+}
+
+.p-tabmenu-nav .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-tabmenu-ink-bar {
+    display: none;
+    z-index: 1;
+}
+
+.p-tabmenu::-webkit-scrollbar {
+    display: none;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tabview/tabview.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tabview/tabview.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tabview/tabview.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,73 @@
+.p-tabview-nav-container {
+    position: relative;
+}
+
+.p-tabview-scrollable .p-tabview-nav-container {
+    overflow: hidden;
+}
+
+.p-tabview-nav-content {
+    overflow-x: auto;
+    overflow-y: hidden;
+    scroll-behavior: smooth;
+    scrollbar-width: none;
+    overscroll-behavior: contain auto;
+}
+
+.p-tabview-nav {
+    display: flex;
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    flex: 1 1 auto;
+}
+
+.p-tabview-nav-link {
+    cursor: pointer;
+    user-select: none;
+    display: flex;
+    align-items: center;
+    position: relative;
+    text-decoration: none;
+    overflow: hidden;
+}
+
+.p-tabview-ink-bar {
+    display: none;
+    z-index: 1;
+}
+
+.p-tabview-nav-link:focus {
+    z-index: 1;
+}
+
+.p-tabview-title {
+    line-height: 1;
+    white-space: nowrap;
+}
+
+.p-tabview-nav-btn {
+    position: absolute;
+    top: 0;
+    z-index: 2;
+    height: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-tabview-nav-prev {
+    left: 0;
+}
+
+.p-tabview-nav-next {
+    right: 0;
+}
+
+.p-tabview-nav-content::-webkit-scrollbar {
+    display: none;
+}
+
+.p-tabview-close {
+    z-index: 1;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tag/tag.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tag/tag.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tag/tag.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,15 @@
+.p-tag {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-tag-icon,
+.p-tag-value,
+.p-tag-icon.pi {
+    line-height: 1.5;
+}
+
+.p-tag.p-tag-rounded {
+    border-radius: 10rem;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/terminal/terminal.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/terminal/terminal.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/terminal/terminal.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,22 @@
+.p-terminal {
+    height: 18rem;
+    overflow: auto;
+}
+
+.p-terminal-prompt-container {
+    display: flex;
+    align-items: center;
+}
+
+.p-terminal-input {
+    flex: 1 1 auto;
+    border: 0 none;
+    background-color: transparent;
+    color: inherit;
+    padding: 0;
+    outline: 0 none;
+}
+
+.p-terminal-input::-ms-clear {
+    display: none;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tieredmenu/tieredmenu.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tieredmenu/tieredmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tieredmenu/tieredmenu.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,45 @@
+.p-tieredmenu-overlay {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-tieredmenu ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.p-tieredmenu .p-submenu-list {
+    position: absolute;
+    min-width: 100%;
+    z-index: 1;
+    display: none;
+}
+
+.p-tieredmenu .p-menuitem-link {
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    text-decoration: none;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-tieredmenu .p-menuitem-text {
+    line-height: 1;
+}
+
+.p-tieredmenu .p-menuitem {
+    position: relative;
+}
+
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+    margin-left: auto;
+}
+
+.p-tieredmenu .p-menuitem-active > p-tieredmenusub > .p-submenu-list {
+    display: block;
+    left: 100%;
+    top: 0;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/timeline/timeline.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/timeline/timeline.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/timeline/timeline.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,110 @@
+.p-timeline {
+    display: flex;
+    flex-grow: 1;
+    flex-direction: column;
+}
+
+.p-timeline-left .p-timeline-event-opposite {
+    text-align: right;
+}
+
+.p-timeline-left .p-timeline-event-content {
+    text-align: left;
+}
+
+.p-timeline-right .p-timeline-event {
+    flex-direction: row-reverse;
+}
+
+.p-timeline-right .p-timeline-event-opposite {
+    text-align: left;
+}
+
+.p-timeline-right .p-timeline-event-content {
+    text-align: right;
+}
+
+.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) {
+    flex-direction: row-reverse;
+}
+
+.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-opposite {
+    text-align: right;
+}
+
+.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(odd) .p-timeline-event-content {
+    text-align: left;
+}
+
+.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-opposite {
+    text-align: left;
+}
+
+.p-timeline-vertical.p-timeline-alternate .p-timeline-event:nth-child(even) .p-timeline-event-content {
+    text-align: right;
+}
+
+.p-timeline-event {
+    display: flex;
+    position: relative;
+    min-height: 70px;
+}
+
+.p-timeline-event:last-child {
+    min-height: 0;
+}
+
+.p-timeline-event-opposite {
+    flex: 1;
+    padding: 0 1rem;
+}
+
+.p-timeline-event-content {
+    flex: 1;
+    padding: 0 1rem;
+}
+
+.p-timeline-event-separator {
+    flex: 0;
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+}
+
+.p-timeline-event-marker {
+    display: flex;
+    align-self: baseline;
+}
+
+.p-timeline-event-connector {
+    flex-grow: 1;
+}
+
+.p-timeline-horizontal {
+    flex-direction: row;
+}
+
+.p-timeline-horizontal .p-timeline-event {
+    flex-direction: column;
+    flex: 1;
+}
+
+.p-timeline-horizontal .p-timeline-event:last-child {
+    flex: 0;
+}
+
+.p-timeline-horizontal .p-timeline-event-separator {
+    flex-direction: row;
+}
+
+.p-timeline-horizontal .p-timeline-event-connector  {
+    width: 100%;
+}
+
+.p-timeline-bottom .p-timeline-event {
+    flex-direction: column-reverse;
+}
+
+.p-timeline-horizontal.p-timeline-alternate .p-timeline-event:nth-child(even) {
+    flex-direction: column-reverse;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/toast/toast.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/toast/toast.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/toast/toast.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,68 @@
+.p-toast {
+    position: fixed;
+    width: 25rem;
+}
+
+.p-toast-message {
+    overflow: hidden;
+}
+
+.p-toast-message-content {
+    display: flex;
+    align-items: flex-start;
+}
+
+.p-toast-message-text {
+    flex: 1 1 auto;
+}
+
+.p-toast-top-right {
+	top: 20px;
+	right: 20px;
+}
+
+.p-toast-top-left {
+	top: 20px;
+	left: 20px;
+}
+
+.p-toast-bottom-left {
+	bottom: 20px;
+	left: 20px;
+}
+
+.p-toast-bottom-right {
+	bottom: 20px;
+	right: 20px;
+}
+
+.p-toast-top-center {
+	top: 20px;
+    left: 50%;
+    transform: translateX(-50%);
+}
+
+.p-toast-bottom-center {
+	bottom: 20px;
+    left: 50%;
+    transform: translateX(-50%);
+}
+
+.p-toast-center {
+	left: 50%;
+	top: 50%;
+    min-width: 20vw;
+    transform: translate(-50%, -50%);
+}
+
+.p-toast-icon-close {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-toast-icon-close.p-link {
+	cursor: pointer;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/toolbar/toolbar.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/toolbar/toolbar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/toolbar/toolbar.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,12 @@
+.p-toolbar {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    flex-wrap: wrap;
+}
+
+.p-toolbar-group-left,
+.p-toolbar-group-right {
+    display: flex;
+    align-items: center;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tooltip/tooltip.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tooltip/tooltip.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tooltip/tooltip.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,61 @@
+.p-tooltip {
+    position:absolute;
+    display:none;
+    padding: .25em .5rem;
+    max-width: 12.5rem;
+}
+
+.p-tooltip.p-tooltip-right,
+.p-tooltip.p-tooltip-left {
+    padding: 0 .25rem;
+}
+
+.p-tooltip.p-tooltip-top,
+.p-tooltip.p-tooltip-bottom {
+    padding:.25em 0;
+}
+
+.p-tooltip .p-tooltip-text {
+   white-space: pre-line;
+   word-break: break-word;
+}
+
+.p-tooltip-arrow {
+    position: absolute;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid;
+}
+
+.p-tooltip-right .p-tooltip-arrow {
+    top: 50%;
+    left: 0;
+    margin-top: -.25rem;
+    border-width: .25em .25em .25em 0;
+}
+
+.p-tooltip-left .p-tooltip-arrow {
+    top: 50%;
+    right: 0;
+    margin-top: -.25rem;
+    border-width: .25em 0 .25em .25rem;
+}
+
+.p-tooltip.p-tooltip-top {
+    padding: .25em 0;
+}
+
+.p-tooltip-top .p-tooltip-arrow {
+    bottom: 0;
+    left: 50%;
+    margin-left: -.25rem;
+    border-width: .25em .25em 0;
+}
+
+.p-tooltip-bottom .p-tooltip-arrow {
+    top: 0;
+    left: 50%;
+    margin-left: -.25rem;
+    border-width: 0 .25em .25rem;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/tree/tree.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/tree/tree.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/tree/tree.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,150 @@
+.p-tree-container {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+    overflow: auto;
+}
+
+.p-treenode-children {
+    margin: 0;
+    padding: 0;
+    list-style-type: none;
+}
+
+.p-tree-wrapper {
+    overflow: auto;
+}
+
+.p-treenode-selectable {
+    cursor: pointer;
+    user-select: none;
+}
+
+.p-tree-toggler {
+    cursor: pointer;
+    user-select: none;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-treenode-leaf > .p-treenode-content .p-tree-toggler {
+    visibility: hidden;
+}
+
+.p-treenode-content {
+    display: flex;
+    align-items: center;
+}
+
+.p-tree-filter {
+    width: 100%;
+}
+
+.p-tree-filter-container {
+    position: relative;
+    display: block;
+    width: 100%;
+}
+
+.p-tree-filter-icon {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-tree-loading {
+    position: relative;
+    min-height: 4rem;
+}
+
+.p-tree .p-tree-loading-overlay {
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    z-index: 2;
+}
+
+.p-tree-flex-scrollable {
+    display: flex;
+    flex: 1;
+    height: 100%;
+    flex-direction: column;
+}
+
+.p-tree-flex-scrollable .p-tree-wrapper {
+    flex: 1;
+}
+
+.p-tree .p-treenode-droppoint {
+    height: 4px;
+    list-style-type: none;
+}
+
+.p-tree .p-treenode-droppoint-active {
+    border: 0 none;
+}
+
+.p-tree-horizontal {
+    width:auto;
+    padding-left: 0;
+    padding-right: 0;
+    overflow:auto;
+}
+
+.p-tree.p-tree-horizontal table,
+.p-tree.p-tree-horizontal tr,
+.p-tree.p-tree-horizontal td {
+    border-collapse: collapse;
+    margin: 0;
+    padding: 0;
+    vertical-align: middle;
+}
+
+.p-tree-horizontal .p-treenode-content {
+    font-weight: normal;
+    padding: 0.4em 1em 0.4em 0.2em;
+    display: flex;
+    align-items: center;
+}
+
+.p-tree-horizontal .p-treenode-parent .p-treenode-content {
+    font-weight: normal;
+    white-space: nowrap;
+}
+
+.p-tree.p-tree-horizontal .p-treenode {
+    background: url("./images/line.gif") repeat-x scroll center center transparent;
+    padding: .25rem 2.5rem;
+}
+
+.p-tree.p-tree-horizontal .p-treenode.p-treenode-leaf,
+.p-tree.p-tree-horizontal .p-treenode.p-treenode-collapsed {
+    padding-right: 0;
+}
+
+.p-tree.p-tree-horizontal .p-treenode-children {
+    padding: 0;
+    margin: 0;
+}
+
+.p-tree.p-tree-horizontal .p-treenode-connector {
+    width: 1px;
+}
+
+.p-tree.p-tree-horizontal .p-treenode-connector-table {
+    height: 100%;
+    width: 1px;
+}
+
+.p-tree.p-tree-horizontal .p-treenode-connector-line {
+    background: url("./images/line.gif") repeat-y scroll 0 0 transparent;
+    width: 1px;
+}
+
+.p-tree.p-tree-horizontal table {
+	height: 0;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/treeselect/treeselect.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/treeselect/treeselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/treeselect/treeselect.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,57 @@
+.p-treeselect {
+    display: inline-flex;
+    cursor: pointer;
+    position: relative;
+    user-select: none;
+}
+
+.p-treeselect-trigger {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+}
+
+.p-treeselect-label-container {
+    overflow: hidden;
+    flex: 1 1 auto;
+    cursor: pointer;
+}
+
+.p-treeselect-label  {
+    display: block;
+    white-space: nowrap;
+    cursor: pointer;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.p-treeselect-label-empty {
+    overflow: hidden;
+    visibility: hidden;
+}
+
+.p-treeselect-token {
+    cursor: default;
+    display: inline-flex;
+    align-items: center;
+    flex: 0 0 auto;
+}
+
+.p-treeselect .p-treeselect-panel {
+    min-width: 100%;
+}
+
+.p-treeselect-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-treeselect-items-wrapper {
+    overflow: auto;
+}
+
+.p-fluid .p-treeselect {
+    display: flex;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/treetable/treetable.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/treetable/treetable.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/treetable/treetable.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,193 @@
+.p-treetable {
+    position: relative;
+}
+
+.p-treetable table {
+    border-collapse: collapse;
+    width: 100%;
+    table-layout: fixed;
+}
+
+.p-treetable .p-sortable-column {
+    cursor: pointer;
+    user-select: none;
+}
+
+.p-treetable .p-sortable-column .p-column-title,
+.p-treetable .p-sortable-column .p-sortable-column-icon,
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+    vertical-align: middle;
+}
+
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-treetable-auto-layout > .p-treetable-wrapper {
+    overflow-x: auto;
+}
+
+.p-treetable-auto-layout > .p-treetable-wrapper > table {
+    table-layout: auto;
+}
+
+.p-treetable-hoverable-rows .p-treetable-tbody > tr {
+    cursor: pointer;
+}
+
+.p-treetable-toggler {
+    cursor: pointer;
+    user-select: none;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    vertical-align: middle;
+    overflow: hidden;
+    position: relative;
+}
+
+p-treetabletoggler + p-treetablecheckbox .p-checkbox {
+    vertical-align: middle;
+}
+
+p-treetabletoggler + p-treetablecheckbox + span {
+    vertical-align: middle;
+}
+
+/* Scrollable */
+.p-treetable-scrollable-wrapper {
+    position: relative;
+}
+
+.p-treetable-scrollable-header,
+.p-treetable-scrollable-footer {
+    overflow: hidden;
+}
+
+.p-treetable-scrollable-body {
+    overflow: auto;
+    position: relative;
+}
+
+.p-treetable-scrollable-body > table > .p-treetable-tbody > tr:first-child > td {
+    border-top: 0 none;
+}
+
+.p-treetable-virtual-table {
+    position: absolute;
+}
+
+/* Frozen Columns */
+.p-treetable-frozen-view .p-treetable-scrollable-body {
+    overflow: hidden;
+}
+
+.p-treetable-frozen-view > .p-treetable-scrollable-body > table > .p-treetable-tbody > tr > td:last-child {
+    border-right: 0 none;
+}
+
+.p-treetable-unfrozen-view {
+    position: absolute;
+    top: 0;
+}
+
+/* Flex Scrollable */
+.p-treetable-flex-scrollable {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    height: 100%;
+}
+
+.p-treetable-flex-scrollable .p-treetable-scrollable-wrapper,
+.p-treetable-flex-scrollable .p-treetable-scrollable-view {
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    height: 100%;
+}
+
+.p-treetable-flex-scrollable .p-treetable-scrollable-body {
+    flex: 1;
+}
+
+/* Resizable */
+.p-treetable-resizable > .p-treetable-wrapper {
+    overflow-x: auto;
+}
+
+.p-treetable-resizable .p-treetable-thead > tr > th,
+.p-treetable-resizable .p-treetable-tfoot > tr > td,
+.p-treetable-resizable .p-treetable-tbody > tr > td {
+    overflow: hidden;
+}
+
+.p-treetable-resizable .p-resizable-column {
+    background-clip: padding-box;
+    position: relative;
+}
+
+.p-treetable-resizable-fit .p-resizable-column:last-child .p-column-resizer {
+    display: none;
+}
+
+.p-treetable .p-column-resizer {
+    display: block;
+    position: absolute !important;
+    top: 0;
+    right: 0;
+    margin: 0;
+    width: .5rem;
+    height: 100%;
+    padding: 0px;
+    cursor:col-resize;
+    border: 1px solid transparent;
+}
+
+.p-treetable .p-column-resizer-helper {
+    width: 1px;
+    position: absolute;
+    z-index: 10;
+    display: none;
+}
+
+.p-treetable .p-row-editor-init,
+.p-treetable .p-row-editor-save,
+.p-treetable .p-row-editor-cancel {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Expand */
+.p-treetable .p-row-toggler {
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+    position: relative;
+}
+
+/* Reorder */
+.p-treetable-reorder-indicator-up,
+.p-treetable-reorder-indicator-down {
+    position: absolute;
+    display: none;
+}
+
+[ttReorderableColumn] {
+    cursor: move;
+}
+
+/* Loader */
+.p-treetable .p-treetable-loading-overlay {
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    z-index: 2;
+}
Index: trip-planner-front/node_modules/primeng/resources/components/virtualscroller/virtualscroller.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/components/virtualscroller/virtualscroller.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/components/virtualscroller/virtualscroller.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,3 @@
+cdk-virtual-scroll-viewport {
+    outline: 0 none;
+}
Index: trip-planner-front/node_modules/primeng/resources/primeng.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/primeng.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/primeng.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,521 @@
+.p-component, .p-component * {
+    box-sizing: border-box;
+}
+
+.p-hidden {
+    display: none;
+}
+
+.p-hidden-space {
+    visibility: hidden;
+}
+
+.p-hidden-accessible {
+    border: 0;
+    clip: rect(0 0 0 0);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+}
+
+.p-hidden-accessible input,
+.p-hidden-accessible select {
+    transform: scale(0);
+}
+
+.p-reset {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    outline: 0;
+    text-decoration: none;
+    font-size: 100%;
+    list-style: none;
+}
+
+.p-disabled, .p-disabled * {
+    cursor: default !important;
+    pointer-events: none;
+}
+
+.p-component-overlay {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
+
+.p-overflow-hidden {
+    overflow: hidden;
+}
+
+.p-unselectable-text {
+    user-select: none;
+}
+
+.p-scrollbar-measure {
+    width: 100px;
+    height: 100px;
+    overflow: scroll;
+    position: absolute;
+    top: -9999px;
+}
+
+@-webkit-keyframes p-fadein {
+  0%   { opacity: 0; }
+  100% { opacity: 1; }
+}
+@keyframes p-fadein {
+  0%   { opacity: 0; }
+  100% { opacity: 1; }
+}
+
+input[type="button"],
+input[type="submit"],
+input[type="reset"],
+input[type="file"]::-webkit-file-upload-button,
+button {
+    border-radius: 0;
+}
+
+.p-link {
+	text-align: left;
+	background-color: transparent;
+	margin: 0;
+	padding: 0;
+	border: none;
+    cursor: pointer;
+    user-select: none;
+}
+
+.p-sr-only {
+    border: 0;
+    clip: rect(1px, 1px, 1px, 1px);
+    clip-path: inset(50%);
+    height: 1px;
+    margin: -1px;
+    overflow: hidden;
+    padding: 0;
+    position: absolute;
+    width: 1px;
+    word-wrap: normal !important;
+}
+
+/* Non ng overlay animations */
+.p-connected-overlay {
+    opacity: 0;
+    transform: scaleY(0.8);
+    transition: transform .12s cubic-bezier(0, 0, 0.2, 1), opacity .12s cubic-bezier(0, 0, 0.2, 1);
+}
+
+.p-connected-overlay-visible {
+    opacity: 1;
+    transform: scaleY(1);
+}
+
+.p-connected-overlay-hidden {
+    opacity: 0;
+    transform: scaleY(1);
+    transition: opacity .1s linear;
+}
+
+.p-toggleable-content.ng-animating {
+    overflow: hidden;
+}
+
+
+.p-badge {
+    display: inline-block;
+    border-radius: 10px;
+    text-align: center;
+    padding: 0 .5rem;
+}
+
+.p-overlay-badge {
+    position: relative;
+}
+
+.p-overlay-badge .p-badge {
+    position: absolute;
+    top: 0;
+    right: 0;
+    transform: translate(50%,-50%);
+    transform-origin: 100% 0;
+    margin: 0;
+}
+
+.p-badge-dot {
+    width: .5rem;
+    min-width: .5rem;
+    height: .5rem;
+    border-radius: 50%;
+    padding: 0;
+}
+
+.p-badge-no-gutter {
+    padding: 0;
+    border-radius: 50%;
+}
+.p-button {
+    margin: 0;
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    align-items: center;
+    vertical-align: bottom;
+    text-align: center;
+    overflow: hidden;
+    position: relative;
+}
+
+.p-button-label {
+    flex: 1 1 auto;
+}
+
+.p-button-icon-right {
+    order: 1;
+}
+
+.p-button:disabled {
+    cursor: default;
+}
+
+.p-button-icon-only {
+    justify-content: center;
+}
+
+.p-button-icon-only .p-button-label {
+    visibility: hidden;
+    width: 0;
+    flex: 0 0 auto;
+}
+
+.p-button-vertical {
+    flex-direction: column;
+}
+
+.p-button-icon-bottom {
+    order: 2;
+}
+
+.p-buttonset .p-button {
+    margin: 0;
+}
+
+.p-buttonset .p-button:not(:last-child) {
+    border-right: 0 none;
+}
+
+.p-buttonset .p-button:not(:first-of-type):not(:last-of-type) {
+    border-radius: 0;
+}
+
+.p-buttonset .p-button:first-of-type {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.p-buttonset .p-button:last-of-type {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+}
+
+.p-buttonset .p-button:focus {
+    position: relative;
+    z-index: 1;
+}
+
+.p-button-label {
+    transition: all .2s;
+}
+.p-checkbox {
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    vertical-align: bottom;
+    position: relative;
+}
+
+.p-checkbox-disabled {
+    cursor: default !important;
+    pointer-events: none;
+}
+
+.p-checkbox-box {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+p-checkbox {
+    display: inline-flex;
+    vertical-align: bottom;
+    align-items: center;
+}
+
+.p-checkbox-label {
+    line-height: 1;
+}
+
+.p-colorpicker-panel .p-colorpicker-color {
+    background: transparent url("./images/color.png") no-repeat left top; 
+}
+
+.p-colorpicker-panel .p-colorpicker-hue {
+   background: transparent url("./images/hue.png") no-repeat left top; 
+}
+.p-inputtext {
+    margin: 0;
+}
+
+.p-fluid .p-inputtext {
+    width: 100%;
+}
+
+/* InputGroup */
+.p-inputgroup {
+    display: flex;
+    align-items: stretch;
+    width: 100%;
+}
+
+.p-inputgroup-addon {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
+.p-inputgroup .p-float-label {
+    display: flex;
+    align-items: stretch;
+    width: 100%;
+}
+
+.p-inputgroup .p-inputtext,
+.p-fluid .p-inputgroup .p-inputtext,
+.p-inputgroup .p-inputwrapper,
+.p-inputgroup .p-inputwrapper > .p-component {
+    flex: 1 1 auto;
+    width: 1%;
+}
+
+/* Floating Label */
+.p-float-label {
+    display: block;
+    position: relative;
+}
+
+.p-float-label label {
+    position: absolute;
+    pointer-events: none;
+    top: 50%;
+    margin-top: -.5rem;
+    transition-property: all;
+    transition-timing-function: ease;
+    line-height: 1;
+}
+
+.p-float-label textarea ~ label {
+    top: 1rem;
+}
+
+.p-float-label input:focus ~ label,
+.p-float-label input.p-filled ~ label,
+.p-float-label textarea:focus ~ label,
+.p-float-label textarea.p-filled ~ label,
+.p-float-label .p-inputwrapper-focus ~ label,
+.p-float-label .p-inputwrapper-filled ~ label {
+    top: -.75rem;
+    font-size: 12px;
+}
+
+.p-float-label .input:-webkit-autofill ~ label {
+    top: -20px;
+    font-size: 12px;
+}
+
+.p-input-icon-left,
+.p-input-icon-right {
+    position: relative;
+    display: inline-block;
+}
+
+.p-input-icon-left > i,
+.p-input-icon-right > i {
+    position: absolute;
+    top: 50%;
+    margin-top: -.5rem;
+}
+
+.p-fluid .p-input-icon-left,
+.p-fluid .p-input-icon-right {
+    display: block;
+    width: 100%;
+}
+
+.p-inputtextarea-resizable {
+    overflow: hidden;
+    resize: none;
+}
+
+.p-fluid .p-inputtextarea {
+    width: 100%;
+}
+.p-password {
+    position: relative;
+    display: inline-flex;
+}
+
+.p-password-panel {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.p-password .p-password-panel {
+    min-width: 100%;
+}
+
+.p-password-meter {
+    height: 10px;
+}
+
+.p-password-strength {
+    height: 100%;
+    width: 0%;
+    transition: width 1s ease-in-out;
+}
+
+.p-fluid .p-password {
+    display: flex;
+}
+
+.p-radiobutton {
+    display: inline-flex;
+    cursor: pointer;
+    user-select: none;
+    vertical-align: bottom;
+    position: relative;
+}
+
+.p-radiobutton-box {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.p-radiobutton-icon {
+    -webkit-backface-visibility: hidden;
+    backface-visibility: hidden;
+    transform: translateZ(0) scale(.1);
+    border-radius: 50%;
+    visibility: hidden;
+}
+
+.p-radiobutton-box.p-highlight .p-radiobutton-icon {
+    transform: translateZ(0) scale(1.0, 1.0);
+    visibility: visible;
+}
+
+p-radiobutton {
+    display: inline-flex;
+    vertical-align: bottom;
+    align-items: center;
+}
+
+.p-radiobutton-label {
+    line-height: 1;
+}
+
+.p-ripple {
+    overflow: hidden;
+    position: relative;
+}
+
+.p-ink {
+    display: block;
+    position: absolute;
+    background: rgba(255, 255, 255, 0.5);
+    border-radius: 100%;
+    transform: scale(0);
+}
+  
+.p-ink-active {
+    animation: ripple 0.4s linear;
+}
+
+.p-ripple-disabled .p-ink {
+    display: none !important;
+}
+  
+@keyframes ripple {  
+    100% {
+        opacity: 0;
+        transform: scale(2.5);
+    }
+}
+.p-tooltip {
+    position:absolute;
+    display:none;
+    padding: .25em .5rem;
+    max-width: 12.5rem;
+}
+
+.p-tooltip.p-tooltip-right,
+.p-tooltip.p-tooltip-left {
+    padding: 0 .25rem;
+}
+
+.p-tooltip.p-tooltip-top,
+.p-tooltip.p-tooltip-bottom {
+    padding:.25em 0;
+}
+
+.p-tooltip .p-tooltip-text {
+   white-space: pre-line;
+   word-break: break-word;
+}
+
+.p-tooltip-arrow {
+    position: absolute;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid;
+}
+
+.p-tooltip-right .p-tooltip-arrow {
+    top: 50%;
+    left: 0;
+    margin-top: -.25rem;
+    border-width: .25em .25em .25em 0;
+}
+
+.p-tooltip-left .p-tooltip-arrow {
+    top: 50%;
+    right: 0;
+    margin-top: -.25rem;
+    border-width: .25em 0 .25em .25rem;
+}
+
+.p-tooltip.p-tooltip-top {
+    padding: .25em 0;
+}
+
+.p-tooltip-top .p-tooltip-arrow {
+    bottom: 0;
+    left: 50%;
+    margin-left: -.25rem;
+    border-width: .25em .25em 0;
+}
+
+.p-tooltip-bottom .p-tooltip-arrow {
+    top: 0;
+    left: 50%;
+    margin-left: -.25rem;
+    border-width: 0 .25em .25rem;
+}
Index: trip-planner-front/node_modules/primeng/resources/primeng.min.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/primeng.min.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/primeng.min.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+.p-component,.p-component *{box-sizing:border-box}.p-hidden{display:none}.p-hidden-space{visibility:hidden}.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0)}.p-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.p-disabled,.p-disabled *{cursor:default !important;pointer-events:none}.p-component-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.p-overflow-hidden{overflow:hidden}.p-unselectable-text{user-select:none}.p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}@-webkit-keyframes p-fadein{0%{opacity:0}100%{opacity:1}}@keyframes p-fadein{0%{opacity:0}100%{opacity:1}}input[type="button"],input[type="submit"],input[type="reset"],input[type="file"]::-webkit-file-upload-button,button{border-radius:0}.p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:0;cursor:pointer;user-select:none}.p-sr-only{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal !important}.p-connected-overlay{opacity:0;transform:scaleY(0.8);transition:transform .12s cubic-bezier(0,0,0.2,1),opacity .12s cubic-bezier(0,0,0.2,1)}.p-connected-overlay-visible{opacity:1;transform:scaleY(1)}.p-connected-overlay-hidden{opacity:0;transform:scaleY(1);transition:opacity .1s linear}.p-toggleable-content.ng-animating{overflow:hidden}.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}.p-button{margin:0;display:inline-flex;cursor:pointer;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only .p-button-label{visibility:hidden;width:0;flex:0 0 auto}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}.p-button-label{transition:all .2s}.p-checkbox{display:inline-flex;cursor:pointer;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default !important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}.p-colorpicker-panel .p-colorpicker-color{background:transparent url("./images/color.png") no-repeat left top}.p-colorpicker-panel .p-colorpicker-hue{background:transparent url("./images/hue.png") no-repeat left top}.p-inputtext{margin:0}.p-fluid .p-inputtext{width:100%}.p-inputgroup{display:flex;align-items:stretch;width:100%}.p-inputgroup-addon{display:flex;align-items:center;justify-content:center}.p-inputgroup .p-float-label{display:flex;align-items:stretch;width:100%}.p-inputgroup .p-inputtext,.p-fluid .p-inputgroup .p-inputtext,.p-inputgroup .p-inputwrapper,.p-inputgroup .p-inputwrapper>.p-component{flex:1 1 auto;width:1%}.p-float-label{display:block;position:relative}.p-float-label label{position:absolute;pointer-events:none;top:50%;margin-top:-.5rem;transition-property:all;transition-timing-function:ease;line-height:1}.p-float-label textarea ~ label{top:1rem}.p-float-label input:focus ~ label,.p-float-label input.p-filled ~ label,.p-float-label textarea:focus ~ label,.p-float-label textarea.p-filled ~ label,.p-float-label .p-inputwrapper-focus ~ label,.p-float-label .p-inputwrapper-filled ~ label{top:-.75rem;font-size:12px}.p-float-label .input:-webkit-autofill ~ label{top:-20px;font-size:12px}.p-input-icon-left,.p-input-icon-right{position:relative;display:inline-block}.p-input-icon-left>i,.p-input-icon-right>i{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-input-icon-left,.p-fluid .p-input-icon-right{display:block;width:100%}.p-inputtextarea-resizable{overflow:hidden;resize:none}.p-fluid .p-inputtextarea{width:100%}.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-radiobutton{display:inline-flex;cursor:pointer;user-select:none;vertical-align:bottom;position:relative}.p-radiobutton-box{display:flex;justify-content:center;align-items:center}.p-radiobutton-icon{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0) scale(.1);border-radius:50%;visibility:hidden}.p-radiobutton-box.p-highlight .p-radiobutton-icon{transform:translateZ(0) scale(1.0,1.0);visibility:visible}p-radiobutton{display:inline-flex;vertical-align:bottom;align-items:center}.p-radiobutton-label{line-height:1}.p-ripple{overflow:hidden;position:relative}.p-ink{display:block;position:absolute;background:rgba(255,255,255,0.5);border-radius:100%;transform:scale(0)}.p-ink-active{animation:ripple .4s linear}.p-ripple-disabled .p-ink{display:none !important}@keyframes ripple{100%{opacity:0;transform:scale(2.5)}}.p-tooltip{position:absolute;display:none;padding:.25em .5rem;max-width:12.5rem}.p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-left{padding:0 .25rem}.p-tooltip.p-tooltip-top,.p-tooltip.p-tooltip-bottom{padding:.25em 0}.p-tooltip .p-tooltip-text{white-space:pre-line;word-break:break-word}.p-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.p-tooltip-right .p-tooltip-arrow{top:50%;left:0;margin-top:-.25rem;border-width:.25em .25em .25em 0}.p-tooltip-left .p-tooltip-arrow{top:50%;right:0;margin-top:-.25rem;border-width:.25em 0 .25em .25rem}.p-tooltip.p-tooltip-top{padding:.25em 0}.p-tooltip-top .p-tooltip-arrow{bottom:0;left:50%;margin-left:-.25rem;border-width:.25em .25em 0}.p-tooltip-bottom .p-tooltip-arrow{top:0;left:50%;margin-left:-.25rem;border-width:0 .25em .25rem}
Index: trip-planner-front/node_modules/primeng/resources/themes/arya-blue/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/arya-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/arya-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5657 @@
+:root {
+  --surface-a:#1e1e1e;
+  --surface-b:#121212;
+  --surface-c:rgba(255, 255, 255, 0.03);
+  --surface-d:#383838;
+  --surface-e:#1e1e1e;
+  --surface-f:#1e1e1e;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#64B5F6;
+  --primary-color-text:#212529;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #121212;
+  --surface-50: #2a2a2a;
+  --surface-100: #414141;
+  --surface-200: #595959;
+  --surface-300: #717171;
+  --surface-400: #898989;
+  --surface-500: #a0a0a0;
+  --surface-600: #b8b8b8;
+  --surface-700: #d0d0d0;
+  --surface-800: #e7e7e7;
+  --surface-900: #ffffff;
+  --gray-50:#e7e7e7;
+  --gray-100: #d0d0d0;
+  --gray-200: #b8b8b8;
+  --gray-300: #a0a0a0;
+  --gray-400: #898989;
+  --gray-500: #717171;
+  --gray-600: #595959;
+  --gray-700: #414141;
+  --gray-800: #2a2a2a;
+  --gray-900: #121212;
+  --content-padding:1rem;
+  --inline-spacing:0.5rem;
+  --border-radius:3px;
+  --surface-ground:#121212;
+  --surface-section:#121212;
+  --surface-card:#1e1e1e;
+  --surface-overlay:#1e1e1e;
+  --surface-border:#383838;
+  --surface-hover:rgba(255,255,255,.03);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #93cbf9;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.2s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.4;
+}
+
+.p-error {
+  color: #ef9a9a;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 3px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f4fafe;
+  --blue-100:#cae6fc;
+  --blue-200:#a0d2fa;
+  --blue-300:#75bef8;
+  --blue-400:#4baaf5;
+  --blue-500:#2196f3;
+  --blue-600:#1c80cf;
+  --blue-700:#1769aa;
+  --blue-800:#125386;
+  --blue-900:#0d3c61;
+  --green-50:#f6fbf6;
+  --green-100:#d4ecd5;
+  --green-200:#b2ddb4;
+  --green-300:#90cd93;
+  --green-400:#6ebe71;
+  --green-500:#4caf50;
+  --green-600:#419544;
+  --green-700:#357b38;
+  --green-800:#2a602c;
+  --green-900:#1e4620;
+  --yellow-50:#fffcf5;
+  --yellow-100:#fef0cd;
+  --yellow-200:#fde4a5;
+  --yellow-300:#fdd87d;
+  --yellow-400:#fccc55;
+  --yellow-500:#fbc02d;
+  --yellow-600:#d5a326;
+  --yellow-700:#b08620;
+  --yellow-800:#8a6a19;
+  --yellow-900:#644d12;
+  --cyan-50:#f2fcfd;
+  --cyan-100:#c2eff5;
+  --cyan-200:#91e2ed;
+  --cyan-300:#61d5e4;
+  --cyan-400:#30c9dc;
+  --cyan-500:#00bcd4;
+  --cyan-600:#00a0b4;
+  --cyan-700:#008494;
+  --cyan-800:#006775;
+  --cyan-900:#004b55;
+  --pink-50:#fef4f7;
+  --pink-100:#fac9da;
+  --pink-200:#f69ebc;
+  --pink-300:#f1749e;
+  --pink-400:#ed4981;
+  --pink-500:#e91e63;
+  --pink-600:#c61a54;
+  --pink-700:#a31545;
+  --pink-800:#801136;
+  --pink-900:#5d0c28;
+  --indigo-50:#f5f6fb;
+  --indigo-100:#d1d5ed;
+  --indigo-200:#acb4df;
+  --indigo-300:#8893d1;
+  --indigo-400:#6372c3;
+  --indigo-500:#3f51b5;
+  --indigo-600:#36459a;
+  --indigo-700:#2c397f;
+  --indigo-800:#232d64;
+  --indigo-900:#192048;
+  --teal-50:#f2faf9;
+  --teal-100:#c2e6e2;
+  --teal-200:#91d2cc;
+  --teal-300:#61beb5;
+  --teal-400:#30aa9f;
+  --teal-500:#009688;
+  --teal-600:#008074;
+  --teal-700:#00695f;
+  --teal-800:#00534b;
+  --teal-900:#003c36;
+  --orange-50:#fff8f2;
+  --orange-100:#fde0c2;
+  --orange-200:#fbc791;
+  --orange-300:#f9ae61;
+  --orange-400:#f79530;
+  --orange-500:#f57c00;
+  --orange-600:#d06900;
+  --orange-700:#ac5700;
+  --orange-800:#874400;
+  --orange-900:#623200;
+  --bluegray-50:#f7f9f9;
+  --bluegray-100:#d9e0e3;
+  --bluegray-200:#bbc7cd;
+  --bluegray-300:#9caeb7;
+  --bluegray-400:#7e96a1;
+  --bluegray-500:#607d8b;
+  --bluegray-600:#526a76;
+  --bluegray-700:#435861;
+  --bluegray-800:#35454c;
+  --bluegray-900:#263238;
+  --purple-50:#faf4fb;
+  --purple-100:#e7cbec;
+  --purple-200:#d4a2dd;
+  --purple-300:#c279ce;
+  --purple-400:#af50bf;
+  --purple-500:#9c27b0;
+  --purple-600:#852196;
+  --purple-700:#6d1b7b;
+  --purple-800:#561561;
+  --purple-900:#3e1046;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.5rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 2.857rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-autocomplete-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-datepicker {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #1e1e1e;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #383838;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 50%;
+  transition: box-shadow 0.2s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #64B5F6;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #383838;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #383838;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #383838;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.5rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-cascadeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.2s;
+  color: #212529;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #64B5F6;
+  background: #64B5F6;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #64B5F6;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #2396f2;
+  background: #2396f2;
+  color: #212529;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #64B5F6;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #2396f2;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #1e1e1e;
+  border-color: #383838;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+.p-dropdown {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.5rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.5rem;
+  margin-right: -1.5rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-dropdown {
+  background: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #1e1e1e;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #121212;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #64B5F6;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #64B5F6;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #64B5F6;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #64B5F6;
+}
+
+.p-inputgroup-addon {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #383838;
+  border-left: 1px solid #383838;
+  border-bottom: 1px solid #383838;
+  padding: 0.5rem 0.5rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #383838;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 30px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 50%;
+  transition-duration: 0.2s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #64B5F6;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.87);
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #43a5f4;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #ef9a9a;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #121212;
+  padding: 0.5rem 0.5rem;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  appearance: none;
+  border-radius: 3px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #64B5F6;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #ef9a9a;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-float-label > label {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.2s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #ef9a9a;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #383838;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-listbox {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.5rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #ef9a9a;
+}
+
+.p-multiselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-multiselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-multiselect {
+  background: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-password-panel {
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #383838;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #F48FB1;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #FFE082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #C5E1A5;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #64B5F6;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.2s;
+  background-color: #212529;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #64B5F6;
+  background: #64B5F6;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #2396f2;
+  background: #2396f2;
+  color: #212529;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #64B5F6;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #2396f2;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #F48FB1;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #64B5F6;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #64B5F6;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #F48FB1;
+}
+
+.p-selectbutton .p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #64B5F6;
+  border-color: #64B5F6;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #43a5f4;
+  border-color: #43a5f4;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #ef9a9a;
+}
+
+.p-slider {
+  background: #383838;
+  border: 0 none;
+  border-radius: 3px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #383838;
+  border: 2px solid #64B5F6;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-slider .p-slider-range {
+  background: #64B5F6;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #64B5F6;
+  border-color: #64B5F6;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, left 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, bottom 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.2s;
+}
+
+.p-togglebutton.p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #64B5F6;
+  border-color: #64B5F6;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #43a5f4;
+  border-color: #43a5f4;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #ef9a9a;
+}
+
+.p-treeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #64B5F6;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: #64B5F6;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #ef9a9a;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-treeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-button {
+  color: #212529;
+  background: #64B5F6;
+  border: 1px solid #64B5F6;
+  padding: 0.5rem 1rem;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-button:enabled:hover {
+  background: #43a5f4;
+  color: #212529;
+  border-color: #43a5f4;
+}
+.p-button:enabled:active {
+  background: #2396f2;
+  color: #212529;
+  border-color: #2396f2;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #64B5F6;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(100, 181, 246, 0.04);
+  color: #64B5F6;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(100, 181, 246, 0.16);
+  color: #64B5F6;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #64B5F6;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(100, 181, 246, 0.04);
+  color: #64B5F6;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(100, 181, 246, 0.16);
+  color: #64B5F6;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #64B5F6;
+  background-color: #212529;
+}
+.p-button.p-button-raised {
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.875rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 1.25rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #78909C;
+  border: 1px solid #78909C;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #69838f;
+  color: #ffffff;
+  border-color: #69838f;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a1b1ba;
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #5d747f;
+  color: #ffffff;
+  border-color: #5d747f;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #78909C;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  border-color: transparent;
+  color: #78909C;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  border-color: transparent;
+  color: #78909C;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #121212;
+  background: #81D4FA;
+  border: 1px solid #81D4FA;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #5dc8f9;
+  color: #121212;
+  border-color: #5dc8f9;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a7e1fc;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #38bbf7;
+  color: #121212;
+  border-color: #38bbf7;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #81D4FA;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  border-color: transparent;
+  color: #81D4FA;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  border-color: transparent;
+  color: #81D4FA;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #121212;
+  background: #C5E1A5;
+  border: 1px solid #C5E1A5;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #b2d788;
+  color: #121212;
+  border-color: #b2d788;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d6eac0;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #9fce6b;
+  color: #121212;
+  border-color: #9fce6b;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #C5E1A5;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #121212;
+  background: #FFE082;
+  border: 1px solid #FFE082;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd65c;
+  color: #121212;
+  border-color: #ffd65c;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffe9a8;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffcd35;
+  color: #121212;
+  border-color: #ffcd35;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #FFE082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #FFE082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #FFE082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #121212;
+  background: #CE93D8;
+  border: 1px solid #CE93D8;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #c278ce;
+  color: #121212;
+  border-color: #c278ce;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ddb3e4;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #b65ec5;
+  color: #121212;
+  border-color: #b65ec5;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #CE93D8;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  border-color: transparent;
+  color: #CE93D8;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  border-color: transparent;
+  color: #CE93D8;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #121212;
+  background: #F48FB1;
+  border: 1px solid #F48FB1;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #f16c98;
+  color: #121212;
+  border-color: #f16c98;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #f7b1c8;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #ed4980;
+  color: #121212;
+  border-color: #ed4980;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #F48FB1;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  border-color: transparent;
+  color: #F48FB1;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  border-color: transparent;
+  color: #F48FB1;
+}
+
+.p-button.p-button-link {
+  color: #64B5F6;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #64B5F6;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #93cbf9;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #64B5F6;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: rgba(255, 255, 255, 0.87);
+  color: #121212;
+}
+.p-speeddial-action:hover {
+  background: rgba(255, 255, 255, 0.6);
+  color: #121212;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #383838;
+  width: 2rem;
+  height: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #64B5F6;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #64B5F6;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: #64B5F6;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #64B5F6;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 1px #93cbf9;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #93cbf9;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 rgba(100, 181, 246, 0.16);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 rgba(100, 181, 246, 0.16);
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #64B5F6;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.01);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: solid #383838;
+  border-width: 0 0 1px 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-column-filter-overlay {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1rem;
+  border-bottom: 1px solid #383838;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #43a5f4;
+  border: 1px solid #43a5f4;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #212529;
+  background: #64B5F6;
+  border: 1px solid #64B5F6;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #43a5f4;
+  color: #212529;
+  border-color: #43a5f4;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #2396f2;
+  color: #212529;
+  border-color: #2396f2;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #64B5F6;
+  border-color: #64B5F6;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #43a5f4;
+  border-color: #43a5f4;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #212529;
+  background: #43a5f4;
+  border-color: #43a5f4;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #43a5f4;
+  border-color: #43a5f4;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #212529;
+  background: #64B5F6;
+  border: 1px solid #64B5F6;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #43a5f4;
+  color: #212529;
+  border-color: #43a5f4;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #2396f2;
+  color: #212529;
+  border-color: #2396f2;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.4;
+  color: #212529;
+  background: #64B5F6;
+  border: 1px solid #64B5F6;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #64B5F6;
+  border-color: #64B5F6;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #43a5f4;
+  border-color: #43a5f4;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: rgba(12, 120, 207, 0.16);
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #383838;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-paginator {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #383838;
+  border-width: 1px;
+  padding: 0.5rem 1rem;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.286em;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.286em;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  border-color: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 2px solid #64B5F6;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #1e1e1e;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #383838;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  padding: 0;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: rgba(35, 150, 242, 0.16);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  border: 1px solid #383838;
+  background-color: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  transition: box-shadow 0.2s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #93cbf9;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(100, 181, 246, 0.16);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #64B5F6;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #64B5F6;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #93cbf9;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #64B5F6;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-card {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-card .p-card-body {
+  padding: 1rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #1e1e1e;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #383838;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #383838;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1rem;
+}
+.p-panel .p-panel-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #383838;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  border-radius: 3px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #383838;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #383838;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #64B5F6;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #64B5F6;
+  color: #64B5F6;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #1e1e1e;
+  color: #64B5F6;
+  width: 2.357rem;
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-tabview .p-tabview-panels {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-toolbar {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #383838;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+  border: 1px solid #383838;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.5rem;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 2rem 1.5rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 1.5rem 1.5rem;
+  text-align: right;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #64B5F6;
+  color: #212529;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #43a5f4;
+  color: #212529;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #383838;
+}
+
+.p-sidebar {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.5rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #383838;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #383838;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #383838;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #383838;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-fileupload .p-fileupload-content {
+  background: #1e1e1e;
+  padding: 2rem 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #43a5f4;
+  color: #212529;
+  border-color: #43a5f4;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #2396f2;
+  color: #212529;
+  border-color: #2396f2;
+}
+
+.p-breadcrumb {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-radius: 3px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-contextmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.25rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.25rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-menu.p-menu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #93cbf9;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.25rem 0;
+    background: #1e1e1e;
+    border: 1px solid #383838;
+    box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #383838;
+    margin: 0.25rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.2s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 1px #93cbf9;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.2s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.2s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.25rem 0;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-slidemenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 50%;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #383838;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #64B5F6;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #64B5F6;
+  color: #64B5F6;
+}
+
+.p-tieredmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #93cbf9;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.5rem;
+  margin: 0;
+  border-radius: 3px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 1px;
+  color: #044868;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #044868;
+}
+.p-inline-message.p-inline-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 1px;
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 1px;
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 1px;
+  color: #73000c;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #73000c;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 3px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.5rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-message.p-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #044868;
+}
+.p-message.p-message-info .p-message-close {
+  color: #044868;
+}
+.p-message.p-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-close {
+  color: #224a23;
+}
+.p-message.p-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #6d5100;
+}
+.p-message.p-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-close {
+  color: #73000c;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 0.9;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: none;
+  border-radius: 3px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0 0 0 6px;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #73000c;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #f8f9fa;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #383838;
+  width: 1rem;
+  height: 1rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(100, 181, 246, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #f8f9fa;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #383838;
+  border-radius: 3px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #1e1e1e;
+}
+
+.p-badge {
+  background: #64B5F6;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #78909C;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-badge.p-badge-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-badge.p-badge-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-badge.p-badge-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.5rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.5rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.5rem;
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #93cbf9;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #383838;
+  border-radius: 3px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #64B5F6;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-scrolltop.p-link {
+  background: rgba(100, 181, 246, 0.16);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(100, 181, 246, 0.3616);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 3px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #64B5F6;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 3px;
+}
+.p-tag.p-tag-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-tag.p-tag-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-tag.p-tag-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-tag.p-tag-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Customizations to the designer theme should be defined here */
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background-color: #64B5F6;
+}
+
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background-color: #64B5F6;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #64B5F6;
+}
Index: trip-planner-front/node_modules/primeng/resources/themes/arya-green/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/arya-green/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/arya-green/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5657 @@
+:root {
+  --surface-a:#1e1e1e;
+  --surface-b:#121212;
+  --surface-c:rgba(255, 255, 255, 0.03);
+  --surface-d:#383838;
+  --surface-e:#1e1e1e;
+  --surface-f:#1e1e1e;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#81C784;
+  --primary-color-text:#212529;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #121212;
+  --surface-50: #2a2a2a;
+  --surface-100: #414141;
+  --surface-200: #595959;
+  --surface-300: #717171;
+  --surface-400: #898989;
+  --surface-500: #a0a0a0;
+  --surface-600: #b8b8b8;
+  --surface-700: #d0d0d0;
+  --surface-800: #e7e7e7;
+  --surface-900: #ffffff;
+  --gray-50:#e7e7e7;
+  --gray-100: #d0d0d0;
+  --gray-200: #b8b8b8;
+  --gray-300: #a0a0a0;
+  --gray-400: #898989;
+  --gray-500: #717171;
+  --gray-600: #595959;
+  --gray-700: #414141;
+  --gray-800: #2a2a2a;
+  --gray-900: #121212;
+  --content-padding:1rem;
+  --inline-spacing:0.5rem;
+  --border-radius:3px;
+  --surface-ground:#121212;
+  --surface-section:#121212;
+  --surface-card:#1e1e1e;
+  --surface-overlay:#1e1e1e;
+  --surface-border:#383838;
+  --surface-hover:rgba(255,255,255,.03);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #a7d8a9;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.2s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.4;
+}
+
+.p-error {
+  color: #ef9a9a;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 3px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f4fafe;
+  --blue-100:#cae6fc;
+  --blue-200:#a0d2fa;
+  --blue-300:#75bef8;
+  --blue-400:#4baaf5;
+  --blue-500:#2196f3;
+  --blue-600:#1c80cf;
+  --blue-700:#1769aa;
+  --blue-800:#125386;
+  --blue-900:#0d3c61;
+  --green-50:#f6fbf6;
+  --green-100:#d4ecd5;
+  --green-200:#b2ddb4;
+  --green-300:#90cd93;
+  --green-400:#6ebe71;
+  --green-500:#4caf50;
+  --green-600:#419544;
+  --green-700:#357b38;
+  --green-800:#2a602c;
+  --green-900:#1e4620;
+  --yellow-50:#fffcf5;
+  --yellow-100:#fef0cd;
+  --yellow-200:#fde4a5;
+  --yellow-300:#fdd87d;
+  --yellow-400:#fccc55;
+  --yellow-500:#fbc02d;
+  --yellow-600:#d5a326;
+  --yellow-700:#b08620;
+  --yellow-800:#8a6a19;
+  --yellow-900:#644d12;
+  --cyan-50:#f2fcfd;
+  --cyan-100:#c2eff5;
+  --cyan-200:#91e2ed;
+  --cyan-300:#61d5e4;
+  --cyan-400:#30c9dc;
+  --cyan-500:#00bcd4;
+  --cyan-600:#00a0b4;
+  --cyan-700:#008494;
+  --cyan-800:#006775;
+  --cyan-900:#004b55;
+  --pink-50:#fef4f7;
+  --pink-100:#fac9da;
+  --pink-200:#f69ebc;
+  --pink-300:#f1749e;
+  --pink-400:#ed4981;
+  --pink-500:#e91e63;
+  --pink-600:#c61a54;
+  --pink-700:#a31545;
+  --pink-800:#801136;
+  --pink-900:#5d0c28;
+  --indigo-50:#f5f6fb;
+  --indigo-100:#d1d5ed;
+  --indigo-200:#acb4df;
+  --indigo-300:#8893d1;
+  --indigo-400:#6372c3;
+  --indigo-500:#3f51b5;
+  --indigo-600:#36459a;
+  --indigo-700:#2c397f;
+  --indigo-800:#232d64;
+  --indigo-900:#192048;
+  --teal-50:#f2faf9;
+  --teal-100:#c2e6e2;
+  --teal-200:#91d2cc;
+  --teal-300:#61beb5;
+  --teal-400:#30aa9f;
+  --teal-500:#009688;
+  --teal-600:#008074;
+  --teal-700:#00695f;
+  --teal-800:#00534b;
+  --teal-900:#003c36;
+  --orange-50:#fff8f2;
+  --orange-100:#fde0c2;
+  --orange-200:#fbc791;
+  --orange-300:#f9ae61;
+  --orange-400:#f79530;
+  --orange-500:#f57c00;
+  --orange-600:#d06900;
+  --orange-700:#ac5700;
+  --orange-800:#874400;
+  --orange-900:#623200;
+  --bluegray-50:#f7f9f9;
+  --bluegray-100:#d9e0e3;
+  --bluegray-200:#bbc7cd;
+  --bluegray-300:#9caeb7;
+  --bluegray-400:#7e96a1;
+  --bluegray-500:#607d8b;
+  --bluegray-600:#526a76;
+  --bluegray-700:#435861;
+  --bluegray-800:#35454c;
+  --bluegray-900:#263238;
+  --purple-50:#faf4fb;
+  --purple-100:#e7cbec;
+  --purple-200:#d4a2dd;
+  --purple-300:#c279ce;
+  --purple-400:#af50bf;
+  --purple-500:#9c27b0;
+  --purple-600:#852196;
+  --purple-700:#6d1b7b;
+  --purple-800:#561561;
+  --purple-900:#3e1046;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.5rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 2.857rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-autocomplete-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-datepicker {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #1e1e1e;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #383838;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 50%;
+  transition: box-shadow 0.2s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #81C784;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #383838;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #383838;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #383838;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.5rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-cascadeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.2s;
+  color: #212529;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #81C784;
+  background: #81C784;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #81C784;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #54b358;
+  background: #54b358;
+  color: #212529;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #81C784;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #54b358;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #1e1e1e;
+  border-color: #383838;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+.p-dropdown {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.5rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.5rem;
+  margin-right: -1.5rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-dropdown {
+  background: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #1e1e1e;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #121212;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #81C784;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #81C784;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #81C784;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #81C784;
+}
+
+.p-inputgroup-addon {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #383838;
+  border-left: 1px solid #383838;
+  border-bottom: 1px solid #383838;
+  padding: 0.5rem 0.5rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #383838;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 30px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 50%;
+  transition-duration: 0.2s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #81C784;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.87);
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #6abd6e;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #ef9a9a;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #121212;
+  padding: 0.5rem 0.5rem;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  appearance: none;
+  border-radius: 3px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #81C784;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #ef9a9a;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-float-label > label {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.2s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #ef9a9a;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #383838;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-listbox {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.5rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #ef9a9a;
+}
+
+.p-multiselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-multiselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-multiselect {
+  background: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-password-panel {
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #383838;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #F48FB1;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #FFE082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #C5E1A5;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #81C784;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.2s;
+  background-color: #212529;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #81C784;
+  background: #81C784;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #54b358;
+  background: #54b358;
+  color: #212529;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #81C784;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #54b358;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #F48FB1;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #81C784;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #81C784;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #F48FB1;
+}
+
+.p-selectbutton .p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #81C784;
+  border-color: #81C784;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #6abd6e;
+  border-color: #6abd6e;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #ef9a9a;
+}
+
+.p-slider {
+  background: #383838;
+  border: 0 none;
+  border-radius: 3px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #383838;
+  border: 2px solid #81C784;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-slider .p-slider-range {
+  background: #81C784;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #81C784;
+  border-color: #81C784;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, left 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, bottom 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.2s;
+}
+
+.p-togglebutton.p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #81C784;
+  border-color: #81C784;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #6abd6e;
+  border-color: #6abd6e;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #ef9a9a;
+}
+
+.p-treeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #81C784;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: #81C784;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #ef9a9a;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-treeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-button {
+  color: #212529;
+  background: #81C784;
+  border: 1px solid #81C784;
+  padding: 0.5rem 1rem;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-button:enabled:hover {
+  background: #6abd6e;
+  color: #212529;
+  border-color: #6abd6e;
+}
+.p-button:enabled:active {
+  background: #54b358;
+  color: #212529;
+  border-color: #54b358;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #81C784;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(129, 199, 132, 0.04);
+  color: #81C784;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(129, 199, 132, 0.16);
+  color: #81C784;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #81C784;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(129, 199, 132, 0.04);
+  color: #81C784;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(129, 199, 132, 0.16);
+  color: #81C784;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #81C784;
+  background-color: #212529;
+}
+.p-button.p-button-raised {
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.875rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 1.25rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #78909C;
+  border: 1px solid #78909C;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #69838f;
+  color: #ffffff;
+  border-color: #69838f;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a1b1ba;
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #5d747f;
+  color: #ffffff;
+  border-color: #5d747f;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #78909C;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  border-color: transparent;
+  color: #78909C;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  border-color: transparent;
+  color: #78909C;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #121212;
+  background: #81D4FA;
+  border: 1px solid #81D4FA;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #5dc8f9;
+  color: #121212;
+  border-color: #5dc8f9;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a7e1fc;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #38bbf7;
+  color: #121212;
+  border-color: #38bbf7;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #81D4FA;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  border-color: transparent;
+  color: #81D4FA;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  border-color: transparent;
+  color: #81D4FA;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #121212;
+  background: #C5E1A5;
+  border: 1px solid #C5E1A5;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #b2d788;
+  color: #121212;
+  border-color: #b2d788;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d6eac0;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #9fce6b;
+  color: #121212;
+  border-color: #9fce6b;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #C5E1A5;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #121212;
+  background: #FFE082;
+  border: 1px solid #FFE082;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd65c;
+  color: #121212;
+  border-color: #ffd65c;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffe9a8;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffcd35;
+  color: #121212;
+  border-color: #ffcd35;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #FFE082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #FFE082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #FFE082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #121212;
+  background: #CE93D8;
+  border: 1px solid #CE93D8;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #c278ce;
+  color: #121212;
+  border-color: #c278ce;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ddb3e4;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #b65ec5;
+  color: #121212;
+  border-color: #b65ec5;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #CE93D8;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  border-color: transparent;
+  color: #CE93D8;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  border-color: transparent;
+  color: #CE93D8;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #121212;
+  background: #F48FB1;
+  border: 1px solid #F48FB1;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #f16c98;
+  color: #121212;
+  border-color: #f16c98;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #f7b1c8;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #ed4980;
+  color: #121212;
+  border-color: #ed4980;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #F48FB1;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  border-color: transparent;
+  color: #F48FB1;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  border-color: transparent;
+  color: #F48FB1;
+}
+
+.p-button.p-button-link {
+  color: #81C784;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #81C784;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #81C784;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: rgba(255, 255, 255, 0.87);
+  color: #121212;
+}
+.p-speeddial-action:hover {
+  background: rgba(255, 255, 255, 0.6);
+  color: #121212;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #383838;
+  width: 2rem;
+  height: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #81C784;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #81C784;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: #81C784;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #81C784;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #a7d8a9;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 rgba(129, 199, 132, 0.16);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 rgba(129, 199, 132, 0.16);
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #81C784;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.01);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: solid #383838;
+  border-width: 0 0 1px 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-column-filter-overlay {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1rem;
+  border-bottom: 1px solid #383838;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #6abd6e;
+  border: 1px solid #6abd6e;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #212529;
+  background: #81C784;
+  border: 1px solid #81C784;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #6abd6e;
+  color: #212529;
+  border-color: #6abd6e;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #54b358;
+  color: #212529;
+  border-color: #54b358;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #81C784;
+  border-color: #81C784;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #6abd6e;
+  border-color: #6abd6e;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #212529;
+  background: #6abd6e;
+  border-color: #6abd6e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #6abd6e;
+  border-color: #6abd6e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #212529;
+  background: #81C784;
+  border: 1px solid #81C784;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #6abd6e;
+  color: #212529;
+  border-color: #6abd6e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #54b358;
+  color: #212529;
+  border-color: #54b358;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.4;
+  color: #212529;
+  background: #81C784;
+  border: 1px solid #81C784;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #81C784;
+  border-color: #81C784;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #6abd6e;
+  border-color: #6abd6e;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: rgba(62, 139, 65, 0.16);
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #383838;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-paginator {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #383838;
+  border-width: 1px;
+  padding: 0.5rem 1rem;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.286em;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.286em;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  border-color: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 2px solid #81C784;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #1e1e1e;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #383838;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  padding: 0;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: rgba(84, 179, 88, 0.16);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  border: 1px solid #383838;
+  background-color: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  transition: box-shadow 0.2s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #a7d8a9;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(129, 199, 132, 0.16);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #81C784;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #81C784;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #a7d8a9;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #81C784;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-card {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-card .p-card-body {
+  padding: 1rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #1e1e1e;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #383838;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #383838;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1rem;
+}
+.p-panel .p-panel-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #383838;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  border-radius: 3px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #383838;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #383838;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #81C784;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #81C784;
+  color: #81C784;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #1e1e1e;
+  color: #81C784;
+  width: 2.357rem;
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-tabview .p-tabview-panels {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-toolbar {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #383838;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+  border: 1px solid #383838;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.5rem;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 2rem 1.5rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 1.5rem 1.5rem;
+  text-align: right;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #81C784;
+  color: #212529;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #6abd6e;
+  color: #212529;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #383838;
+}
+
+.p-sidebar {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.5rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #383838;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #383838;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #383838;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #383838;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-fileupload .p-fileupload-content {
+  background: #1e1e1e;
+  padding: 2rem 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #6abd6e;
+  color: #212529;
+  border-color: #6abd6e;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #54b358;
+  color: #212529;
+  border-color: #54b358;
+}
+
+.p-breadcrumb {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-radius: 3px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-contextmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.25rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.25rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-menu.p-menu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #a7d8a9;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.25rem 0;
+    background: #1e1e1e;
+    border: 1px solid #383838;
+    box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #383838;
+    margin: 0.25rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.2s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 1px #a7d8a9;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.2s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.2s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.25rem 0;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-slidemenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 50%;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #383838;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #81C784;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #81C784;
+  color: #81C784;
+}
+
+.p-tieredmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #a7d8a9;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.5rem;
+  margin: 0;
+  border-radius: 3px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 1px;
+  color: #044868;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #044868;
+}
+.p-inline-message.p-inline-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 1px;
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 1px;
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 1px;
+  color: #73000c;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #73000c;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 3px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.5rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-message.p-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #044868;
+}
+.p-message.p-message-info .p-message-close {
+  color: #044868;
+}
+.p-message.p-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-close {
+  color: #224a23;
+}
+.p-message.p-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #6d5100;
+}
+.p-message.p-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-close {
+  color: #73000c;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 0.9;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: none;
+  border-radius: 3px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0 0 0 6px;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #73000c;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #f8f9fa;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #383838;
+  width: 1rem;
+  height: 1rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(129, 199, 132, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #f8f9fa;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #383838;
+  border-radius: 3px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #1e1e1e;
+}
+
+.p-badge {
+  background: #81C784;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #78909C;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-badge.p-badge-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-badge.p-badge-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-badge.p-badge-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.5rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.5rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.5rem;
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #a7d8a9;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #383838;
+  border-radius: 3px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #81C784;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-scrolltop.p-link {
+  background: rgba(129, 199, 132, 0.16);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(129, 199, 132, 0.3616);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 3px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #81C784;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 3px;
+}
+.p-tag.p-tag-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-tag.p-tag-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-tag.p-tag-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-tag.p-tag-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Customizations to the designer theme should be defined here */
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background-color: #81C784;
+}
+
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background-color: #81C784;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #81C784;
+}
Index: trip-planner-front/node_modules/primeng/resources/themes/arya-orange/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/arya-orange/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/arya-orange/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5657 @@
+:root {
+  --surface-a:#1e1e1e;
+  --surface-b:#121212;
+  --surface-c:rgba(255, 255, 255, 0.03);
+  --surface-d:#383838;
+  --surface-e:#1e1e1e;
+  --surface-f:#1e1e1e;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#FFD54F;
+  --primary-color-text:#212529;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #121212;
+  --surface-50: #2a2a2a;
+  --surface-100: #414141;
+  --surface-200: #595959;
+  --surface-300: #717171;
+  --surface-400: #898989;
+  --surface-500: #a0a0a0;
+  --surface-600: #b8b8b8;
+  --surface-700: #d0d0d0;
+  --surface-800: #e7e7e7;
+  --surface-900: #ffffff;
+  --gray-50:#e7e7e7;
+  --gray-100: #d0d0d0;
+  --gray-200: #b8b8b8;
+  --gray-300: #a0a0a0;
+  --gray-400: #898989;
+  --gray-500: #717171;
+  --gray-600: #595959;
+  --gray-700: #414141;
+  --gray-800: #2a2a2a;
+  --gray-900: #121212;
+  --content-padding:1rem;
+  --inline-spacing:0.5rem;
+  --border-radius:3px;
+  --surface-ground:#121212;
+  --surface-section:#121212;
+  --surface-card:#1e1e1e;
+  --surface-overlay:#1e1e1e;
+  --surface-border:#383838;
+  --surface-hover:rgba(255,255,255,.03);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #ffe284;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.2s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.4;
+}
+
+.p-error {
+  color: #ef9a9a;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 3px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f4fafe;
+  --blue-100:#cae6fc;
+  --blue-200:#a0d2fa;
+  --blue-300:#75bef8;
+  --blue-400:#4baaf5;
+  --blue-500:#2196f3;
+  --blue-600:#1c80cf;
+  --blue-700:#1769aa;
+  --blue-800:#125386;
+  --blue-900:#0d3c61;
+  --green-50:#f6fbf6;
+  --green-100:#d4ecd5;
+  --green-200:#b2ddb4;
+  --green-300:#90cd93;
+  --green-400:#6ebe71;
+  --green-500:#4caf50;
+  --green-600:#419544;
+  --green-700:#357b38;
+  --green-800:#2a602c;
+  --green-900:#1e4620;
+  --yellow-50:#fffcf5;
+  --yellow-100:#fef0cd;
+  --yellow-200:#fde4a5;
+  --yellow-300:#fdd87d;
+  --yellow-400:#fccc55;
+  --yellow-500:#fbc02d;
+  --yellow-600:#d5a326;
+  --yellow-700:#b08620;
+  --yellow-800:#8a6a19;
+  --yellow-900:#644d12;
+  --cyan-50:#f2fcfd;
+  --cyan-100:#c2eff5;
+  --cyan-200:#91e2ed;
+  --cyan-300:#61d5e4;
+  --cyan-400:#30c9dc;
+  --cyan-500:#00bcd4;
+  --cyan-600:#00a0b4;
+  --cyan-700:#008494;
+  --cyan-800:#006775;
+  --cyan-900:#004b55;
+  --pink-50:#fef4f7;
+  --pink-100:#fac9da;
+  --pink-200:#f69ebc;
+  --pink-300:#f1749e;
+  --pink-400:#ed4981;
+  --pink-500:#e91e63;
+  --pink-600:#c61a54;
+  --pink-700:#a31545;
+  --pink-800:#801136;
+  --pink-900:#5d0c28;
+  --indigo-50:#f5f6fb;
+  --indigo-100:#d1d5ed;
+  --indigo-200:#acb4df;
+  --indigo-300:#8893d1;
+  --indigo-400:#6372c3;
+  --indigo-500:#3f51b5;
+  --indigo-600:#36459a;
+  --indigo-700:#2c397f;
+  --indigo-800:#232d64;
+  --indigo-900:#192048;
+  --teal-50:#f2faf9;
+  --teal-100:#c2e6e2;
+  --teal-200:#91d2cc;
+  --teal-300:#61beb5;
+  --teal-400:#30aa9f;
+  --teal-500:#009688;
+  --teal-600:#008074;
+  --teal-700:#00695f;
+  --teal-800:#00534b;
+  --teal-900:#003c36;
+  --orange-50:#fff8f2;
+  --orange-100:#fde0c2;
+  --orange-200:#fbc791;
+  --orange-300:#f9ae61;
+  --orange-400:#f79530;
+  --orange-500:#f57c00;
+  --orange-600:#d06900;
+  --orange-700:#ac5700;
+  --orange-800:#874400;
+  --orange-900:#623200;
+  --bluegray-50:#f7f9f9;
+  --bluegray-100:#d9e0e3;
+  --bluegray-200:#bbc7cd;
+  --bluegray-300:#9caeb7;
+  --bluegray-400:#7e96a1;
+  --bluegray-500:#607d8b;
+  --bluegray-600:#526a76;
+  --bluegray-700:#435861;
+  --bluegray-800:#35454c;
+  --bluegray-900:#263238;
+  --purple-50:#faf4fb;
+  --purple-100:#e7cbec;
+  --purple-200:#d4a2dd;
+  --purple-300:#c279ce;
+  --purple-400:#af50bf;
+  --purple-500:#9c27b0;
+  --purple-600:#852196;
+  --purple-700:#6d1b7b;
+  --purple-800:#561561;
+  --purple-900:#3e1046;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.5rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 2.857rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-autocomplete-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-datepicker {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #1e1e1e;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #383838;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 50%;
+  transition: box-shadow 0.2s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #FFD54F;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #383838;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #383838;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #383838;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.5rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-cascadeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.2s;
+  color: #212529;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #FFD54F;
+  background: #FFD54F;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #FFD54F;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #ffc50c;
+  background: #ffc50c;
+  color: #212529;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #FFD54F;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #ffc50c;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #1e1e1e;
+  border-color: #383838;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+.p-dropdown {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.5rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.5rem;
+  margin-right: -1.5rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-dropdown {
+  background: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #1e1e1e;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #121212;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #FFD54F;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #FFD54F;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #FFD54F;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #FFD54F;
+}
+
+.p-inputgroup-addon {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #383838;
+  border-left: 1px solid #383838;
+  border-bottom: 1px solid #383838;
+  padding: 0.5rem 0.5rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #383838;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 30px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 50%;
+  transition-duration: 0.2s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #FFD54F;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.87);
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #ffcd2e;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #ef9a9a;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #121212;
+  padding: 0.5rem 0.5rem;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  appearance: none;
+  border-radius: 3px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #FFD54F;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #ef9a9a;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-float-label > label {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.2s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #ef9a9a;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #383838;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-listbox {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.5rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #ef9a9a;
+}
+
+.p-multiselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-multiselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-multiselect {
+  background: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-password-panel {
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #383838;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #F48FB1;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #FFE082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #C5E1A5;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #FFD54F;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.2s;
+  background-color: #212529;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #FFD54F;
+  background: #FFD54F;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #ffc50c;
+  background: #ffc50c;
+  color: #212529;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #FFD54F;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #ffc50c;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #F48FB1;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #FFD54F;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #FFD54F;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #F48FB1;
+}
+
+.p-selectbutton .p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #FFD54F;
+  border-color: #FFD54F;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+  color: #212529;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #ef9a9a;
+}
+
+.p-slider {
+  background: #383838;
+  border: 0 none;
+  border-radius: 3px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #383838;
+  border: 2px solid #FFD54F;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-slider .p-slider-range {
+  background: #FFD54F;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #FFD54F;
+  border-color: #FFD54F;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, left 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, bottom 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.2s;
+}
+
+.p-togglebutton.p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #FFD54F;
+  border-color: #FFD54F;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+  color: #212529;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #212529;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #ef9a9a;
+}
+
+.p-treeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #FFD54F;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: #FFD54F;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #ef9a9a;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-treeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-button {
+  color: #212529;
+  background: #FFD54F;
+  border: 1px solid #FFD54F;
+  padding: 0.5rem 1rem;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-button:enabled:hover {
+  background: #ffcd2e;
+  color: #212529;
+  border-color: #ffcd2e;
+}
+.p-button:enabled:active {
+  background: #ffc50c;
+  color: #212529;
+  border-color: #ffc50c;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #FFD54F;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 213, 79, 0.04);
+  color: #FFD54F;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 213, 79, 0.16);
+  color: #FFD54F;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #FFD54F;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(255, 213, 79, 0.04);
+  color: #FFD54F;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(255, 213, 79, 0.16);
+  color: #FFD54F;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #FFD54F;
+  background-color: #212529;
+}
+.p-button.p-button-raised {
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.875rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 1.25rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #78909C;
+  border: 1px solid #78909C;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #69838f;
+  color: #ffffff;
+  border-color: #69838f;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a1b1ba;
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #5d747f;
+  color: #ffffff;
+  border-color: #5d747f;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #78909C;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  border-color: transparent;
+  color: #78909C;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  border-color: transparent;
+  color: #78909C;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #121212;
+  background: #81D4FA;
+  border: 1px solid #81D4FA;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #5dc8f9;
+  color: #121212;
+  border-color: #5dc8f9;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a7e1fc;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #38bbf7;
+  color: #121212;
+  border-color: #38bbf7;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #81D4FA;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  border-color: transparent;
+  color: #81D4FA;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  border-color: transparent;
+  color: #81D4FA;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #121212;
+  background: #C5E1A5;
+  border: 1px solid #C5E1A5;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #b2d788;
+  color: #121212;
+  border-color: #b2d788;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d6eac0;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #9fce6b;
+  color: #121212;
+  border-color: #9fce6b;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #C5E1A5;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #121212;
+  background: #FFE082;
+  border: 1px solid #FFE082;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd65c;
+  color: #121212;
+  border-color: #ffd65c;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffe9a8;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffcd35;
+  color: #121212;
+  border-color: #ffcd35;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #FFE082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #FFE082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #FFE082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #121212;
+  background: #CE93D8;
+  border: 1px solid #CE93D8;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #c278ce;
+  color: #121212;
+  border-color: #c278ce;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ddb3e4;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #b65ec5;
+  color: #121212;
+  border-color: #b65ec5;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #CE93D8;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  border-color: transparent;
+  color: #CE93D8;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  border-color: transparent;
+  color: #CE93D8;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #121212;
+  background: #F48FB1;
+  border: 1px solid #F48FB1;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #f16c98;
+  color: #121212;
+  border-color: #f16c98;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #f7b1c8;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #ed4980;
+  color: #121212;
+  border-color: #ed4980;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #F48FB1;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  border-color: transparent;
+  color: #F48FB1;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  border-color: transparent;
+  color: #F48FB1;
+}
+
+.p-button.p-button-link {
+  color: #FFD54F;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #FFD54F;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #ffe284;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #FFD54F;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: rgba(255, 255, 255, 0.87);
+  color: #121212;
+}
+.p-speeddial-action:hover {
+  background: rgba(255, 255, 255, 0.6);
+  color: #121212;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #383838;
+  width: 2rem;
+  height: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #FFD54F;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #FFD54F;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: #FFD54F;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #FFD54F;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 1px #ffe284;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #ffe284;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 rgba(255, 213, 79, 0.16);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 rgba(255, 213, 79, 0.16);
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #FFD54F;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.01);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: solid #383838;
+  border-width: 0 0 1px 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-column-filter-overlay {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1rem;
+  border-bottom: 1px solid #383838;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #ffcd2e;
+  border: 1px solid #ffcd2e;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #212529;
+  background: #FFD54F;
+  border: 1px solid #FFD54F;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #ffcd2e;
+  color: #212529;
+  border-color: #ffcd2e;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #ffc50c;
+  color: #212529;
+  border-color: #ffc50c;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #FFD54F;
+  border-color: #FFD54F;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #212529;
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #212529;
+  background: #FFD54F;
+  border: 1px solid #FFD54F;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #ffcd2e;
+  color: #212529;
+  border-color: #ffcd2e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #ffc50c;
+  color: #212529;
+  border-color: #ffc50c;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.4;
+  color: #212529;
+  background: #FFD54F;
+  border: 1px solid #FFD54F;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #FFD54F;
+  border-color: #FFD54F;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #ffcd2e;
+  border-color: #ffcd2e;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: rgba(207, 157, 0, 0.16);
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #383838;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-paginator {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #383838;
+  border-width: 1px;
+  padding: 0.5rem 1rem;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.286em;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.286em;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  border-color: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 2px solid #FFD54F;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #1e1e1e;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #383838;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  padding: 0;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: rgba(255, 197, 12, 0.16);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  border: 1px solid #383838;
+  background-color: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  transition: box-shadow 0.2s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #ffe284;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 213, 79, 0.16);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #FFD54F;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #FFD54F;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #ffe284;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #FFD54F;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-card {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-card .p-card-body {
+  padding: 1rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #1e1e1e;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #383838;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #383838;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1rem;
+}
+.p-panel .p-panel-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #383838;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  border-radius: 3px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #383838;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #383838;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #FFD54F;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #FFD54F;
+  color: #FFD54F;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #1e1e1e;
+  color: #FFD54F;
+  width: 2.357rem;
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-tabview .p-tabview-panels {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-toolbar {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #383838;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+  border: 1px solid #383838;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.5rem;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 2rem 1.5rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 1.5rem 1.5rem;
+  text-align: right;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #FFD54F;
+  color: #212529;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #ffcd2e;
+  color: #212529;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #383838;
+}
+
+.p-sidebar {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.5rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #383838;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #383838;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #383838;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #383838;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-fileupload .p-fileupload-content {
+  background: #1e1e1e;
+  padding: 2rem 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #ffcd2e;
+  color: #212529;
+  border-color: #ffcd2e;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #ffc50c;
+  color: #212529;
+  border-color: #ffc50c;
+}
+
+.p-breadcrumb {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-radius: 3px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-contextmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.25rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.25rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-menu.p-menu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #ffe284;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.25rem 0;
+    background: #1e1e1e;
+    border: 1px solid #383838;
+    box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #383838;
+    margin: 0.25rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.2s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 1px #ffe284;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.2s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.2s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.25rem 0;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-slidemenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 50%;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #383838;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #FFD54F;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #FFD54F;
+  color: #FFD54F;
+}
+
+.p-tieredmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #ffe284;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.5rem;
+  margin: 0;
+  border-radius: 3px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 1px;
+  color: #044868;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #044868;
+}
+.p-inline-message.p-inline-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 1px;
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 1px;
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 1px;
+  color: #73000c;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #73000c;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 3px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.5rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-message.p-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #044868;
+}
+.p-message.p-message-info .p-message-close {
+  color: #044868;
+}
+.p-message.p-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-close {
+  color: #224a23;
+}
+.p-message.p-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #6d5100;
+}
+.p-message.p-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-close {
+  color: #73000c;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 0.9;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: none;
+  border-radius: 3px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0 0 0 6px;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #73000c;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #f8f9fa;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #383838;
+  width: 1rem;
+  height: 1rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(255, 213, 79, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #f8f9fa;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #383838;
+  border-radius: 3px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #1e1e1e;
+}
+
+.p-badge {
+  background: #FFD54F;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #78909C;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-badge.p-badge-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-badge.p-badge-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-badge.p-badge-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.5rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.5rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.5rem;
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #ffe284;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #383838;
+  border-radius: 3px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #FFD54F;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-scrolltop.p-link {
+  background: rgba(255, 213, 79, 0.16);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(255, 213, 79, 0.3616);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 3px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #FFD54F;
+  color: #212529;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 3px;
+}
+.p-tag.p-tag-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-tag.p-tag-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-tag.p-tag-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-tag.p-tag-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Customizations to the designer theme should be defined here */
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background-color: #FFD54F;
+}
+
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background-color: #FFD54F;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #FFD54F;
+}
Index: trip-planner-front/node_modules/primeng/resources/themes/arya-purple/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/arya-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/arya-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5657 @@
+:root {
+  --surface-a:#1e1e1e;
+  --surface-b:#121212;
+  --surface-c:rgba(255, 255, 255, 0.03);
+  --surface-d:#383838;
+  --surface-e:#1e1e1e;
+  --surface-f:#1e1e1e;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#BA68C8;
+  --primary-color-text:#ffffff;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #121212;
+  --surface-50: #2a2a2a;
+  --surface-100: #414141;
+  --surface-200: #595959;
+  --surface-300: #717171;
+  --surface-400: #898989;
+  --surface-500: #a0a0a0;
+  --surface-600: #b8b8b8;
+  --surface-700: #d0d0d0;
+  --surface-800: #e7e7e7;
+  --surface-900: #ffffff;
+  --gray-50:#e7e7e7;
+  --gray-100: #d0d0d0;
+  --gray-200: #b8b8b8;
+  --gray-300: #a0a0a0;
+  --gray-400: #898989;
+  --gray-500: #717171;
+  --gray-600: #595959;
+  --gray-700: #414141;
+  --gray-800: #2a2a2a;
+  --gray-900: #121212;
+  --content-padding:1rem;
+  --inline-spacing:0.5rem;
+  --border-radius:3px;
+  --surface-ground:#121212;
+  --surface-section:#121212;
+  --surface-card:#1e1e1e;
+  --surface-overlay:#1e1e1e;
+  --surface-border:#383838;
+  --surface-hover:rgba(255,255,255,.03);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #cf95d9;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.2s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.4;
+}
+
+.p-error {
+  color: #ef9a9a;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 3px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f4fafe;
+  --blue-100:#cae6fc;
+  --blue-200:#a0d2fa;
+  --blue-300:#75bef8;
+  --blue-400:#4baaf5;
+  --blue-500:#2196f3;
+  --blue-600:#1c80cf;
+  --blue-700:#1769aa;
+  --blue-800:#125386;
+  --blue-900:#0d3c61;
+  --green-50:#f6fbf6;
+  --green-100:#d4ecd5;
+  --green-200:#b2ddb4;
+  --green-300:#90cd93;
+  --green-400:#6ebe71;
+  --green-500:#4caf50;
+  --green-600:#419544;
+  --green-700:#357b38;
+  --green-800:#2a602c;
+  --green-900:#1e4620;
+  --yellow-50:#fffcf5;
+  --yellow-100:#fef0cd;
+  --yellow-200:#fde4a5;
+  --yellow-300:#fdd87d;
+  --yellow-400:#fccc55;
+  --yellow-500:#fbc02d;
+  --yellow-600:#d5a326;
+  --yellow-700:#b08620;
+  --yellow-800:#8a6a19;
+  --yellow-900:#644d12;
+  --cyan-50:#f2fcfd;
+  --cyan-100:#c2eff5;
+  --cyan-200:#91e2ed;
+  --cyan-300:#61d5e4;
+  --cyan-400:#30c9dc;
+  --cyan-500:#00bcd4;
+  --cyan-600:#00a0b4;
+  --cyan-700:#008494;
+  --cyan-800:#006775;
+  --cyan-900:#004b55;
+  --pink-50:#fef4f7;
+  --pink-100:#fac9da;
+  --pink-200:#f69ebc;
+  --pink-300:#f1749e;
+  --pink-400:#ed4981;
+  --pink-500:#e91e63;
+  --pink-600:#c61a54;
+  --pink-700:#a31545;
+  --pink-800:#801136;
+  --pink-900:#5d0c28;
+  --indigo-50:#f5f6fb;
+  --indigo-100:#d1d5ed;
+  --indigo-200:#acb4df;
+  --indigo-300:#8893d1;
+  --indigo-400:#6372c3;
+  --indigo-500:#3f51b5;
+  --indigo-600:#36459a;
+  --indigo-700:#2c397f;
+  --indigo-800:#232d64;
+  --indigo-900:#192048;
+  --teal-50:#f2faf9;
+  --teal-100:#c2e6e2;
+  --teal-200:#91d2cc;
+  --teal-300:#61beb5;
+  --teal-400:#30aa9f;
+  --teal-500:#009688;
+  --teal-600:#008074;
+  --teal-700:#00695f;
+  --teal-800:#00534b;
+  --teal-900:#003c36;
+  --orange-50:#fff8f2;
+  --orange-100:#fde0c2;
+  --orange-200:#fbc791;
+  --orange-300:#f9ae61;
+  --orange-400:#f79530;
+  --orange-500:#f57c00;
+  --orange-600:#d06900;
+  --orange-700:#ac5700;
+  --orange-800:#874400;
+  --orange-900:#623200;
+  --bluegray-50:#f7f9f9;
+  --bluegray-100:#d9e0e3;
+  --bluegray-200:#bbc7cd;
+  --bluegray-300:#9caeb7;
+  --bluegray-400:#7e96a1;
+  --bluegray-500:#607d8b;
+  --bluegray-600:#526a76;
+  --bluegray-700:#435861;
+  --bluegray-800:#35454c;
+  --bluegray-900:#263238;
+  --purple-50:#faf4fb;
+  --purple-100:#e7cbec;
+  --purple-200:#d4a2dd;
+  --purple-300:#c279ce;
+  --purple-400:#af50bf;
+  --purple-500:#9c27b0;
+  --purple-600:#852196;
+  --purple-700:#6d1b7b;
+  --purple-800:#561561;
+  --purple-900:#3e1046;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.5rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 2.857rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-autocomplete-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-datepicker {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #1e1e1e;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #383838;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 50%;
+  transition: box-shadow 0.2s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #BA68C8;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #383838;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #383838;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #383838;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.5rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-cascadeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.2s;
+  color: #ffffff;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #BA68C8;
+  background: #BA68C8;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #BA68C8;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #a241b2;
+  background: #a241b2;
+  color: #ffffff;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #BA68C8;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #a241b2;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.5rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #1e1e1e;
+  border-color: #383838;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+.p-dropdown {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.5rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.5rem;
+  margin-right: -1.5rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-dropdown {
+  background: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #1e1e1e;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #383838;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #121212;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #BA68C8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #BA68C8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #BA68C8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #BA68C8;
+}
+
+.p-inputgroup-addon {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #383838;
+  border-left: 1px solid #383838;
+  border-bottom: 1px solid #383838;
+  padding: 0.5rem 0.5rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #383838;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 30px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 50%;
+  transition-duration: 0.2s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #BA68C8;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.87);
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #b052c0;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #ef9a9a;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #121212;
+  padding: 0.5rem 0.5rem;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  appearance: none;
+  border-radius: 3px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #BA68C8;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #ef9a9a;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-float-label > label {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.2s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #ef9a9a;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #383838;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #383838;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.4375rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.625rem;
+}
+
+.p-listbox {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.5rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #ef9a9a;
+}
+
+.p-multiselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-multiselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-multiselect {
+  background: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #ef9a9a;
+}
+
+.p-password-panel {
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #383838;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #F48FB1;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #FFE082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #C5E1A5;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #383838;
+  background: #121212;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #BA68C8;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.2s;
+  background-color: #ffffff;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #BA68C8;
+  background: #BA68C8;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #a241b2;
+  background: #a241b2;
+  color: #ffffff;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #ef9a9a;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #BA68C8;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #a241b2;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #F48FB1;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #BA68C8;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #BA68C8;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #F48FB1;
+}
+
+.p-selectbutton .p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #BA68C8;
+  border-color: #BA68C8;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #b052c0;
+  border-color: #b052c0;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #ef9a9a;
+}
+
+.p-slider {
+  background: #383838;
+  border: 0 none;
+  border-radius: 3px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #383838;
+  border: 2px solid #BA68C8;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-slider .p-slider-range {
+  background: #BA68C8;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #BA68C8;
+  border-color: #BA68C8;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, left 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, bottom 0.2s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.2s;
+}
+
+.p-togglebutton.p-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #BA68C8;
+  border-color: #BA68C8;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #b052c0;
+  border-color: #b052c0;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #ef9a9a;
+}
+
+.p-treeselect {
+  background: #121212;
+  border: 1px solid #383838;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #BA68C8;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: #BA68C8;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.5rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.5rem;
+  margin-right: 0.5rem;
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #ef9a9a;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.5rem;
+}
+
+.p-treeselect-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #383838;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #383838;
+}
+
+.p-button {
+  color: #ffffff;
+  background: #BA68C8;
+  border: 1px solid #BA68C8;
+  padding: 0.5rem 1rem;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-button:enabled:hover {
+  background: #b052c0;
+  color: #ffffff;
+  border-color: #b052c0;
+}
+.p-button:enabled:active {
+  background: #a241b2;
+  color: #ffffff;
+  border-color: #a241b2;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #BA68C8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(186, 104, 200, 0.04);
+  color: #BA68C8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(186, 104, 200, 0.16);
+  color: #BA68C8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #BA68C8;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(186, 104, 200, 0.04);
+  color: #BA68C8;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(186, 104, 200, 0.16);
+  color: #BA68C8;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #BA68C8;
+  background-color: #ffffff;
+}
+.p-button.p-button-raised {
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.875rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 1.25rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #78909C;
+  border: 1px solid #78909C;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #69838f;
+  color: #ffffff;
+  border-color: #69838f;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a1b1ba;
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #5d747f;
+  color: #ffffff;
+  border-color: #5d747f;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  color: #78909C;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #78909C;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(120, 144, 156, 0.04);
+  border-color: transparent;
+  color: #78909C;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(120, 144, 156, 0.16);
+  border-color: transparent;
+  color: #78909C;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #121212;
+  background: #81D4FA;
+  border: 1px solid #81D4FA;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #5dc8f9;
+  color: #121212;
+  border-color: #5dc8f9;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #a7e1fc;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #38bbf7;
+  color: #121212;
+  border-color: #38bbf7;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  color: #81D4FA;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #81D4FA;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(129, 212, 250, 0.04);
+  border-color: transparent;
+  color: #81D4FA;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(129, 212, 250, 0.16);
+  border-color: transparent;
+  color: #81D4FA;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #121212;
+  background: #C5E1A5;
+  border: 1px solid #C5E1A5;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #b2d788;
+  color: #121212;
+  border-color: #b2d788;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d6eac0;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #9fce6b;
+  color: #121212;
+  border-color: #9fce6b;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  color: #C5E1A5;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #C5E1A5;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(197, 225, 165, 0.04);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(197, 225, 165, 0.16);
+  border-color: transparent;
+  color: #C5E1A5;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #121212;
+  background: #FFE082;
+  border: 1px solid #FFE082;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd65c;
+  color: #121212;
+  border-color: #ffd65c;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffe9a8;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffcd35;
+  color: #121212;
+  border-color: #ffcd35;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #FFE082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #FFE082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #FFE082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #FFE082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #121212;
+  background: #CE93D8;
+  border: 1px solid #CE93D8;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #c278ce;
+  color: #121212;
+  border-color: #c278ce;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ddb3e4;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #b65ec5;
+  color: #121212;
+  border-color: #b65ec5;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  color: #CE93D8;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #CE93D8;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(206, 147, 216, 0.04);
+  border-color: transparent;
+  color: #CE93D8;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(206, 147, 216, 0.16);
+  border-color: transparent;
+  color: #CE93D8;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #121212;
+  background: #F48FB1;
+  border: 1px solid #F48FB1;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #f16c98;
+  color: #121212;
+  border-color: #f16c98;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #f7b1c8;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #ed4980;
+  color: #121212;
+  border-color: #ed4980;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  color: #F48FB1;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #F48FB1;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(244, 143, 177, 0.04);
+  border-color: transparent;
+  color: #F48FB1;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(244, 143, 177, 0.16);
+  border-color: transparent;
+  color: #F48FB1;
+}
+
+.p-button.p-button-link {
+  color: #BA68C8;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #BA68C8;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #cf95d9;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #BA68C8;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: rgba(255, 255, 255, 0.87);
+  color: #121212;
+}
+.p-speeddial-action:hover {
+  background: rgba(255, 255, 255, 0.6);
+  color: #121212;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #383838;
+  width: 2rem;
+  height: 0.5rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #BA68C8;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #BA68C8;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: #BA68C8;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #BA68C8;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 1px #cf95d9;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #cf95d9;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 rgba(186, 104, 200, 0.16);
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 rgba(186, 104, 200, 0.16);
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #BA68C8;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.01);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: solid #383838;
+  border-width: 0 0 1px 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-column-filter-overlay {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.5rem 1rem;
+  border-bottom: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1rem;
+  border-bottom: 1px solid #383838;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #b052c0;
+  border: 1px solid #b052c0;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #BA68C8;
+  border: 1px solid #BA68C8;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #b052c0;
+  color: #ffffff;
+  border-color: #b052c0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #a241b2;
+  color: #ffffff;
+  border-color: #a241b2;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #BA68C8;
+  border-color: #BA68C8;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #b052c0;
+  border-color: #b052c0;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #383838;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #ffffff;
+  background: #b052c0;
+  border-color: #b052c0;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #b052c0;
+  border-color: #b052c0;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #1e1e1e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #BA68C8;
+  border: 1px solid #BA68C8;
+  font-size: 1rem;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #b052c0;
+  color: #ffffff;
+  border-color: #b052c0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #a241b2;
+  color: #ffffff;
+  border-color: #a241b2;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.4;
+  color: #ffffff;
+  background: #BA68C8;
+  border: 1px solid #BA68C8;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #BA68C8;
+  border-color: #BA68C8;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #b052c0;
+  border-color: #b052c0;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: rgba(117, 47, 129, 0.16);
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #383838;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #383838;
+  border-color: #383838;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-paginator {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #383838;
+  border-width: 1px;
+  padding: 0.5rem 1rem;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.286em;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.286em;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+  min-width: 2.286em;
+  height: 2.286em;
+  margin: 0.143rem;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  border-color: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.5rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.2s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 2px solid #BA68C8;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #1e1e1e;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #383838;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  padding: 0;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: rgba(162, 65, 178, 0.16);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 3px;
+  border: 1px solid #383838;
+  background-color: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  transition: box-shadow 0.2s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 0 0 1px 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  transition: box-shadow 0.2s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #cf95d9;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(186, 104, 200, 0.16);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #1e1e1e;
+  color: #BA68C8;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #BA68C8;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.2s;
+  outline-color: #cf95d9;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #BA68C8;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #1e1e1e;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-width: 0 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-card {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-card .p-card-body {
+  padding: 1rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #1e1e1e;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #383838;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #383838;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #383838;
+  padding: 1rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1rem;
+}
+.p-panel .p-panel-content {
+  padding: 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1rem;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #383838;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  border-radius: 3px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #383838;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #383838;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #BA68C8;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #1e1e1e;
+  border-color: #BA68C8;
+  color: #BA68C8;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #1e1e1e;
+  color: #BA68C8;
+  width: 2.357rem;
+  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-tabview .p-tabview-panels {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-toolbar {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  padding: 1rem;
+  border-radius: 3px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #383838;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+  border: 1px solid #383838;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.5rem;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 2rem 1.5rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 0 none;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0 1.5rem 1.5rem 1.5rem;
+  text-align: right;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #BA68C8;
+  color: #ffffff;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #b052c0;
+  color: #ffffff;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(30, 30, 30, 0);
+  border-bottom-color: #1e1e1e;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(56, 56, 56, 0);
+  border-bottom-color: #383838;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #1e1e1e;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #383838;
+}
+
+.p-sidebar {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.5rem;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #383838;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #383838;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #383838;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #383838;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #1e1e1e;
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-fileupload .p-fileupload-content {
+  background: #1e1e1e;
+  padding: 2rem 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #b052c0;
+  color: #ffffff;
+  border-color: #b052c0;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #a241b2;
+  color: #ffffff;
+  border-color: #a241b2;
+}
+
+.p-breadcrumb {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  border-radius: 3px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-contextmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 3px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.25rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.25rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-menu.p-menu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #cf95d9;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.25rem 0;
+    background: #1e1e1e;
+    border: 1px solid #383838;
+    box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #383838;
+    margin: 0.25rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.2s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.03);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 1px #cf95d9;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.2s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.2s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem;
+  border: 1px solid #383838;
+  color: rgba(255, 255, 255, 0.87);
+  background: #1e1e1e;
+  font-weight: 600;
+  border-radius: 3px;
+  transition: box-shadow 0.2s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.03);
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #1e1e1e;
+  border-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #383838;
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.25rem 0;
+  border: 1px solid #383838;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.p-slidemenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.2s;
+  border-radius: 3px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 50%;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #383838;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #383838;
+  border-width: 0 0 2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid #383838;
+  border-width: 0 0 2px 0;
+  border-color: transparent transparent #383838 transparent;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+  font-weight: 600;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px;
+  transition: box-shadow 0.2s;
+  margin: 0 0 -2px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #BA68C8;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #1e1e1e;
+  border-color: #BA68C8;
+  color: #BA68C8;
+}
+
+.p-tieredmenu {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  border-radius: 3px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.2s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #cf95d9;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.25rem 0;
+  background: #1e1e1e;
+  border: 1px solid #383838;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: rgba(255, 255, 255, 0.03);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #383838;
+  margin: 0.25rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.5rem;
+  margin: 0;
+  border-radius: 3px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 1px;
+  color: #044868;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #044868;
+}
+.p-inline-message.p-inline-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 1px;
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #224a23;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 1px;
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #6d5100;
+}
+.p-inline-message.p-inline-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 1px;
+  color: #73000c;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #73000c;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 3px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.5rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-message.p-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #044868;
+}
+.p-message.p-message-info .p-message-close {
+  color: #044868;
+}
+.p-message.p-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #224a23;
+}
+.p-message.p-message-success .p-message-close {
+  color: #224a23;
+}
+.p-message.p-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #6d5100;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #6d5100;
+}
+.p-message.p-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #73000c;
+}
+.p-message.p-message-error .p-message-close {
+  color: #73000c;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 0.9;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: none;
+  border-radius: 3px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0 0 0 6px;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #B3E5FC;
+  border: solid #0891cf;
+  border-width: 0 0 0 6px;
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #044868;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #C8E6C9;
+  border: solid #439446;
+  border-width: 0 0 0 6px;
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #224a23;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #FFECB3;
+  border: solid #d9a300;
+  border-width: 0 0 0 6px;
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #6d5100;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #FFCDD2;
+  border: solid #e60017;
+  border-width: 0 0 0 6px;
+  color: #73000c;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #73000c;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #f8f9fa;
+  width: 4rem;
+  height: 4rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 3px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #f8f9fa;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #383838;
+  width: 1rem;
+  height: 1rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #4c4c4c;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: rgba(186, 104, 200, 0.16);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #f8f9fa;
+  width: 2rem;
+  height: 2rem;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  border-radius: 50%;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #f8f9fa;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #383838;
+  border-radius: 3px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #1e1e1e;
+}
+
+.p-badge {
+  background: #BA68C8;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #78909C;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-badge.p-badge-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-badge.p-badge-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-badge.p-badge-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #383838;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.5rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.5rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.5rem;
+  border-radius: 3px;
+  transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.03);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #cf95d9;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #383838;
+  border-radius: 3px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #BA68C8;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
+  transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
+}
+.p-scrolltop.p-link {
+  background: rgba(186, 104, 200, 0.16);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(186, 104, 200, 0.3616);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 3px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #BA68C8;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 3px;
+}
+.p-tag.p-tag-success {
+  background-color: #C5E1A5;
+  color: #121212;
+}
+.p-tag.p-tag-info {
+  background-color: #81D4FA;
+  color: #121212;
+}
+.p-tag.p-tag-warning {
+  background-color: #FFE082;
+  color: #121212;
+}
+.p-tag.p-tag-danger {
+  background-color: #F48FB1;
+  color: #121212;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #1e1e1e;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #383838;
+  padding: 1rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Customizations to the designer theme should be defined here */
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background-color: #BA68C8;
+}
+
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background-color: #BA68C8;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #BA68C8;
+}
Index: trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-blue/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5667 @@
+:root {
+  --surface-a:#2a323d;
+  --surface-b:#20262e;
+  --surface-c:rgba(255, 255, 255, 0.04);
+  --surface-d:#3f4b5b;
+  --surface-e:#2a323d;
+  --surface-f:#2a323d;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#8dd0ff;
+  --primary-color-text:#151515;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #20262e;
+  --surface-50: #363c43;
+  --surface-100: #4d5158;
+  --surface-200: #63676d;
+  --surface-300: #797d82;
+  --surface-400: #909397;
+  --surface-500: #a6a8ab;
+  --surface-600: #bcbec0;
+  --surface-700: #d2d4d5;
+  --surface-800: #e9e9ea;
+  --surface-900: #ffffff;
+  --gray-50:#e9e9ea;
+  --gray-100: #d2d4d5;
+  --gray-200: #bcbec0;
+  --gray-300: #a6a8ab;
+  --gray-400: #909397;
+  --gray-500: #797d82;
+  --gray-600: #63676d;
+  --gray-700: #4d5158;
+  --gray-800: #363c43;
+  --gray-900: #20262e;
+  --content-padding:1.25rem;
+  --inline-spacing:0.5rem;
+  --border-radius:4px;
+  --surface-ground:#20262e;
+  --surface-section:#20262e;
+  --surface-card:#2a323d;
+  --surface-overlay:#2a323d;
+  --surface-border:#3f4b5b;
+  --surface-hover:rgba(255,255,255,.04);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #e3f3fe;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.15s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.65;
+}
+
+.p-error {
+  color: #f19ea6;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 4px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f3f8ff;
+  --blue-100:#c5dcff;
+  --blue-200:#97c1fe;
+  --blue-300:#69a5fe;
+  --blue-400:#3b8afd;
+  --blue-500:#0d6efd;
+  --blue-600:#0b5ed7;
+  --blue-700:#094db1;
+  --blue-800:#073d8b;
+  --blue-900:#052c65;
+  --green-50:#f4f9f6;
+  --green-100:#c8e2d6;
+  --green-200:#9ccbb5;
+  --green-300:#70b595;
+  --green-400:#459e74;
+  --green-500:#198754;
+  --green-600:#157347;
+  --green-700:#125f3b;
+  --green-800:#0e4a2e;
+  --green-900:#0a3622;
+  --yellow-50:#fffcf3;
+  --yellow-100:#fff0c3;
+  --yellow-200:#ffe494;
+  --yellow-300:#ffd965;
+  --yellow-400:#ffcd36;
+  --yellow-500:#ffc107;
+  --yellow-600:#d9a406;
+  --yellow-700:#b38705;
+  --yellow-800:#8c6a04;
+  --yellow-900:#664d03;
+  --cyan-50:#f3fcfe;
+  --cyan-100:#c5f2fb;
+  --cyan-200:#97e8f9;
+  --cyan-300:#69def6;
+  --cyan-400:#3bd4f3;
+  --cyan-500:#0dcaf0;
+  --cyan-600:#0baccc;
+  --cyan-700:#098da8;
+  --cyan-800:#076f84;
+  --cyan-900:#055160;
+  --pink-50:#fdf5f9;
+  --pink-100:#f5cee1;
+  --pink-200:#eda7ca;
+  --pink-300:#e681b3;
+  --pink-400:#de5a9b;
+  --pink-500:#d63384;
+  --pink-600:#b62b70;
+  --pink-700:#96245c;
+  --pink-800:#761c49;
+  --pink-900:#561435;
+  --indigo-50:#f7f3fe;
+  --indigo-100:#dac6fc;
+  --indigo-200:#bd98f9;
+  --indigo-300:#a06bf7;
+  --indigo-400:#833df4;
+  --indigo-500:#6610f2;
+  --indigo-600:#570ece;
+  --indigo-700:#470ba9;
+  --indigo-800:#380985;
+  --indigo-900:#290661;
+  --teal-50:#f4fcfa;
+  --teal-100:#c9f2e6;
+  --teal-200:#9fe8d2;
+  --teal-300:#75debf;
+  --teal-400:#4ad3ab;
+  --teal-500:#20c997;
+  --teal-600:#1bab80;
+  --teal-700:#168d6a;
+  --teal-800:#126f53;
+  --teal-900:#0d503c;
+  --orange-50:#fff9f3;
+  --orange-100:#ffe0c7;
+  --orange-200:#fec89a;
+  --orange-300:#feaf6d;
+  --orange-400:#fd9741;
+  --orange-500:#fd7e14;
+  --orange-600:#d76b11;
+  --orange-700:#b1580e;
+  --orange-800:#8b450b;
+  --orange-900:#653208;
+  --bluegray-50:#f8f9fb;
+  --bluegray-100:#e0e4ea;
+  --bluegray-200:#c7ced9;
+  --bluegray-300:#aeb9c8;
+  --bluegray-400:#95a3b8;
+  --bluegray-500:#7c8ea7;
+  --bluegray-600:#69798e;
+  --bluegray-700:#576375;
+  --bluegray-800:#444e5c;
+  --bluegray-900:#323943;
+  --purple-50:#f8f6fc;
+  --purple-100:#dcd2f0;
+  --purple-200:#c1aee4;
+  --purple-300:#a68ad9;
+  --purple-400:#8a66cd;
+  --purple-500:#6f42c1;
+  --purple-600:#5e38a4;
+  --purple-700:#4e2e87;
+  --purple-800:#3d246a;
+  --purple-900:#2c1a4d;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.75rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 3.107rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #8dd0ff;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-autocomplete-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-datepicker {
+  padding: 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #2a323d;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #3f4b5b;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #8dd0ff;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #3f4b5b;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #3f4b5b;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #3f4b5b;
+  padding-right: 0;
+  padding-left: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.75rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-cascadeselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1.5rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 1px solid #3f4b5b;
+  background: #20262e;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.15s;
+  color: #151515;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #8dd0ff;
+  background: #8dd0ff;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #3f4b5b;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #1dadff;
+  background: #1dadff;
+  color: #151515;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #8dd0ff;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #1dadff;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-checkbox .p-checkbox-box {
+  border-color: #151515;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #8dd0ff;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #2a323d;
+  border-color: #3f4b5b;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: none;
+}
+
+.p-dropdown {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.75rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.75rem;
+  margin-right: -1.75rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-dropdown {
+  background: #3f4b5b;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #2a323d;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #3f4b5b;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1.5rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #3f4b5b;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #20262e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #8dd0ff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #8dd0ff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #8dd0ff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #8dd0ff;
+}
+
+.p-inputgroup-addon {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #3f4b5b;
+  border-left: 1px solid #3f4b5b;
+  border-bottom: 1px solid #3f4b5b;
+  padding: 0.5rem 0.75rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #3f4b5b;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 4px;
+  transition-duration: 0.15s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #3f4b5b;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #8dd0ff;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: #151515;
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #8dd0ff;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #f19ea6;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #20262e;
+  padding: 0.5rem 0.75rem;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  appearance: none;
+  border-radius: 4px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #3f4b5b;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #f19ea6;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-float-label > label {
+  left: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.15s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #f19ea6;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2.5rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2.5rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2.5rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #3f4b5b;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-listbox {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.75rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #f19ea6;
+}
+
+.p-multiselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #8dd0ff;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-multiselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.75rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-multiselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-password-panel {
+  padding: 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #3f4b5b;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #f19ea6;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #ffe082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #9fdaa8;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 1px solid #3f4b5b;
+  background: #20262e;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #3f4b5b;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.15s;
+  background-color: #151515;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #8dd0ff;
+  background: #8dd0ff;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #1dadff;
+  background: #1dadff;
+  color: #151515;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #8dd0ff;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #1dadff;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-radiobutton .p-radiobutton-box {
+  border-color: #151515;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #f19ea6;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #8dd0ff;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #8dd0ff;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #f19ea6;
+}
+
+.p-highlight .p-rating .p-rating-icon {
+  color: #151515;
+}
+
+.p-selectbutton .p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #f19ea6;
+}
+
+.p-slider {
+  background: #3f4b5b;
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #8dd0ff;
+  border: 2px solid #8dd0ff;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-slider .p-slider-range {
+  background: #8dd0ff;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #56bdff;
+  border-color: #56bdff;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, left 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, bottom 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.15s;
+}
+
+.p-togglebutton.p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #f19ea6;
+}
+
+.p-treeselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: #8dd0ff;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #f19ea6;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-treeselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-button {
+  color: #151515;
+  background: #8dd0ff;
+  border: 1px solid #8dd0ff;
+  padding: 0.5rem 0.75rem;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-button:enabled:hover {
+  background: #56bdff;
+  color: #151515;
+  border-color: #56bdff;
+}
+.p-button:enabled:active {
+  background: #1dadff;
+  color: #151515;
+  border-color: #1dadff;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #8dd0ff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(141, 208, 255, 0.04);
+  color: #8dd0ff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(141, 208, 255, 0.16);
+  color: #8dd0ff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #8dd0ff;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(141, 208, 255, 0.04);
+  color: #8dd0ff;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(141, 208, 255, 0.16);
+  color: #8dd0ff;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #8dd0ff;
+  background-color: #151515;
+}
+.p-button.p-button-raised {
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #6c757d;
+  border: 1px solid #6c757d;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #5a6268;
+  color: #ffffff;
+  border-color: #5a6268;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px rgba(130, 138, 145, 0.5);
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #545b62;
+  color: #ffffff;
+  border-color: #4e555b;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6c757d;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  border-color: transparent;
+  color: #6c757d;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  border-color: transparent;
+  color: #6c757d;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #151515;
+  background: #7fd8e6;
+  border: 1px solid #4cc8db;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #4cc8db;
+  color: #151515;
+  border-color: #26bdd3;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #b1e8f0;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #26bdd3;
+  color: #151515;
+  border-color: #00b2cc;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(127, 216, 230, 0.04);
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(127, 216, 230, 0.16);
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #7fd8e6;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(127, 216, 230, 0.04);
+  border-color: transparent;
+  color: #7fd8e6;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(127, 216, 230, 0.16);
+  border-color: transparent;
+  color: #7fd8e6;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #151515;
+  background: #9fdaa8;
+  border: 1px solid #78cc86;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #78cc86;
+  color: #151515;
+  border-color: #5ac06c;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #c5e8ca;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #5ac06c;
+  color: #151515;
+  border-color: #3cb553;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(159, 218, 168, 0.04);
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(159, 218, 168, 0.16);
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #9fdaa8;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(159, 218, 168, 0.04);
+  border-color: transparent;
+  color: #9fdaa8;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(159, 218, 168, 0.16);
+  border-color: transparent;
+  color: #9fdaa8;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #151515;
+  background: #ffe082;
+  border: 1px solid #ffd54f;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd54f;
+  color: #151515;
+  border-color: #ffca28;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffecb3;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffca28;
+  color: #151515;
+  border-color: #ffc107;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #ffe082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #ffe082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #ffe082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #151515;
+  background: #b7a2e0;
+  border: 1px solid #9a7cd4;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #9a7cd4;
+  color: #151515;
+  border-color: #845fca;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d3c7ec;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #845fca;
+  color: #151515;
+  border-color: #6d43c0;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(183, 162, 224, 0.04);
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(183, 162, 224, 0.16);
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #b7a2e0;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(183, 162, 224, 0.04);
+  border-color: transparent;
+  color: #b7a2e0;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(183, 162, 224, 0.16);
+  border-color: transparent;
+  color: #b7a2e0;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #151515;
+  background: #f19ea6;
+  border: 1px solid #e97984;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #e97984;
+  color: #151515;
+  border-color: #f75965;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffd0d9;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #f75965;
+  color: #151515;
+  border-color: #fd464e;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(241, 158, 166, 0.04);
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(241, 158, 166, 0.16);
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #f19ea6;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(241, 158, 166, 0.04);
+  border-color: transparent;
+  color: #f19ea6;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(241, 158, 166, 0.16);
+  border-color: transparent;
+  color: #f19ea6;
+}
+
+.p-button.p-button-link {
+  color: #8dd0ff;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #56bdff;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #8dd0ff;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: #343e4d;
+  color: #fff;
+}
+.p-speeddial-action:hover {
+  background: #3f4b5b;
+  color: #fff;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #3f4b5b;
+  width: 2rem;
+  height: 0.5rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: #8dd0ff;
+  color: #151515;
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #151515;
+  background: #8dd0ff;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #2a323d;
+  color: #8dd0ff;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #8dd0ff;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: #8dd0ff;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #8dd0ff;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  outline-color: #e3f3fe;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 #8dd0ff;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 #8dd0ff;
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #8dd0ff;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #2a323d;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 2px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.02);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: #151515;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: #151515;
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1.25rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-column-filter-overlay {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1.25rem;
+  border-bottom: 1px solid #3f4b5b;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1.25rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1.25rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #56bdff;
+  border: 1px solid #56bdff;
+  color: #151515;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #151515;
+  background: #8dd0ff;
+  border: 1px solid #8dd0ff;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #56bdff;
+  color: #151515;
+  border-color: #56bdff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #1dadff;
+  color: #151515;
+  border-color: #1dadff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #3f4b5b;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #3f4b5b;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #2a323d;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #151515;
+  background: #56bdff;
+  border-color: #56bdff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #151515;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #56bdff;
+  border-color: #56bdff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #2a323d;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #151515;
+  background: #8dd0ff;
+  border: 1px solid #8dd0ff;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #56bdff;
+  color: #151515;
+  border-color: #56bdff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #1dadff;
+  color: #151515;
+  border-color: #1dadff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.65;
+  color: #151515;
+  background: #8dd0ff;
+  border: 1px solid #8dd0ff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1.25rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: #0e9bff;
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #3f4b5b;
+  border-color: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #3f4b5b;
+  border-color: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.25rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-paginator {
+  background: #2a323d;
+  color: #8dd0ff;
+  border: solid #3f4b5b;
+  border-width: 0;
+  padding: 0.75rem;
+  border-radius: 4px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #8dd0ff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: #8dd0ff;
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.357rem;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.357rem;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #8dd0ff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #8dd0ff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: #8dd0ff;
+  border-color: #8dd0ff;
+  color: #151515;
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: #8dd0ff;
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1.25rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: #151515;
+  background: #8dd0ff;
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 0 none;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #8dd0ff;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #3f4b5b;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.25rem;
+  border-radius: 4px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  padding: 0.286rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: #3f4b5b;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.75rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: #3eafff;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  border: 1px solid #3f4b5b;
+  background-color: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.286rem;
+  transition: box-shadow 0.15s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: #8dd0ff;
+  color: #151515;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #151515;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: #3f4b5b;
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  transition: box-shadow 0.15s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #e3f3fe;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #151515;
+  background: #8dd0ff;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #2a323d;
+  color: #8dd0ff;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #8dd0ff;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  outline-color: #e3f3fe;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: #151515;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: #151515;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #8dd0ff;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #2a323d;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #3f4b5b;
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-card {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 4px;
+}
+.p-card .p-card-body {
+  padding: 1.5rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 400;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #2a323d;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #3f4b5b;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #3f4b5b;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem 1.25rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1.25rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1.25rem;
+}
+.p-panel .p-panel-content {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #3f4b5b;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  border-radius: 4px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: color 0.15s, box-shadow 0.15s;
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #3f4b5b;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #3f4b5b;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #3f4b5b;
+  border-width: 0 0 1px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #2a323d #2a323d #3f4b5b #2a323d;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #e3f3fe;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #2a323d;
+  border-color: #3f4b5b #3f4b5b #2a323d #3f4b5b;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #e3f3fe;
+}
+.p-tabview .p-tabview-panels {
+  background: #2a323d;
+  padding: 1.25rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-toolbar {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-radius: 4px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(42, 50, 61, 0);
+  border-bottom-color: #2a323d;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(63, 75, 91, 0);
+  border-bottom-color: #3f4b5b;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #2a323d;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #3f4b5b;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 4px;
+  box-shadow: none;
+  border: 1px solid #3f4b5b;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  text-align: right;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1.25rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #8dd0ff;
+  color: #151515;
+  width: 2rem;
+  height: 2rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #56bdff;
+  color: #151515;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(42, 50, 61, 0);
+  border-bottom-color: #2a323d;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(63, 75, 91, 0);
+  border-bottom-color: #3f4b5b;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #2a323d;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #3f4b5b;
+}
+
+.p-sidebar {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem 1.25rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1.25rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.75rem;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #3f4b5b;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #2a323d;
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-fileupload .p-fileupload-content {
+  background: #2a323d;
+  padding: 2rem 1rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #56bdff;
+  color: #151515;
+  border-color: #56bdff;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #1dadff;
+  color: #151515;
+  border-color: #1dadff;
+}
+
+.p-breadcrumb {
+  background: #343e4d;
+  border: 0 none;
+  border-radius: 4px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: #8dd0ff;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: #8dd0ff;
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-contextmenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem 1rem;
+  background: #343e4d;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.6);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.5rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.5rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-menu.p-menu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem 1rem;
+  background: #343e4d;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.6);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: color 0.15s, box-shadow 0.15s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: transparent;
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #e3f3fe;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.5rem 0;
+    background: #2a323d;
+    border: 1px solid #3f4b5b;
+    box-shadow: none;
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #3f4b5b;
+    margin: 0.5rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.15s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.04);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.15s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.15s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #3f4b5b;
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.5rem 0;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-slidemenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: #20262e;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 4px;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #3f4b5b;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #3f4b5b;
+  border-width: 0 0 1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #2a323d #2a323d #3f4b5b #2a323d;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #e3f3fe;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #2a323d;
+  border-color: #3f4b5b #3f4b5b #2a323d #3f4b5b;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-tieredmenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #e3f3fe;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.75rem;
+  margin: 0;
+  border-radius: 4px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 0px;
+  color: #004085;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #004085;
+}
+.p-inline-message.p-inline-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 0px;
+  color: #155724;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #155724;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 0px;
+  color: #856404;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #856404;
+}
+.p-inline-message.p-inline-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 0px;
+  color: #721c24;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #721c24;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 4px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.25rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-message.p-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #004085;
+}
+.p-message.p-message-info .p-message-close {
+  color: #004085;
+}
+.p-message.p-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #155724;
+}
+.p-message.p-message-success .p-message-close {
+  color: #155724;
+}
+.p-message.p-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #856404;
+}
+.p-message.p-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-close {
+  color: #721c24;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 1;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #721c24;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 4rem;
+  height: 4rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 4rem;
+  height: 4rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #7789a1;
+  width: 1rem;
+  height: 1rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #687c97;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #8dd0ff;
+  color: #151515;
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2rem;
+  height: 2rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #3f4b5b;
+  border-radius: 4px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #2a323d;
+}
+
+.p-badge {
+  background: #8dd0ff;
+  color: #151515;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #6c757d;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #9fdaa8;
+  color: #151515;
+}
+.p-badge.p-badge-info {
+  background-color: #7fd8e6;
+  color: #151515;
+}
+.p-badge.p-badge-warning {
+  background-color: #ffe082;
+  color: #151515;
+}
+.p-badge.p-badge-danger {
+  background-color: #f19ea6;
+  color: #151515;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.75rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.75rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 4px;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.75rem;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #e3f3fe;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #3f4b5b;
+  border-radius: 4px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #8dd0ff;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 4px;
+  box-shadow: none;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-scrolltop.p-link {
+  background: #8dd0ff;
+}
+.p-scrolltop.p-link:hover {
+  background: #56bdff;
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: #151515;
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 4px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #8dd0ff;
+  color: #151515;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 4px;
+}
+.p-tag.p-tag-success {
+  background-color: #9fdaa8;
+  color: #151515;
+}
+.p-tag.p-tag-info {
+  background-color: #7fd8e6;
+  color: #151515;
+}
+.p-tag.p-tag-warning {
+  background-color: #ffe082;
+  color: #151515;
+}
+.p-tag.p-tag-danger {
+  background-color: #f19ea6;
+  color: #151515;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1.25rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Vendor extensions to the designer enhanced bootstrap compatibility */
+.p-breadcrumb .p-breadcrumb-chevron {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+.p-breadcrumb .p-breadcrumb-chevron:before {
+  content: "/";
+}
+
+/* Customizations to the designer theme should be defined here */
Index: trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-purple/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-dark-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5667 @@
+:root {
+  --surface-a:#2a323d;
+  --surface-b:#20262e;
+  --surface-c:rgba(255, 255, 255, 0.04);
+  --surface-d:#3f4b5b;
+  --surface-e:#2a323d;
+  --surface-f:#2a323d;
+  --text-color:rgba(255, 255, 255, 0.87);
+  --text-color-secondary:rgba(255, 255, 255, 0.6);
+  --primary-color:#c298d8;
+  --primary-color-text:#151515;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #20262e;
+  --surface-50: #363c43;
+  --surface-100: #4d5158;
+  --surface-200: #63676d;
+  --surface-300: #797d82;
+  --surface-400: #909397;
+  --surface-500: #a6a8ab;
+  --surface-600: #bcbec0;
+  --surface-700: #d2d4d5;
+  --surface-800: #e9e9ea;
+  --surface-900: #ffffff;
+  --gray-50:#e9e9ea;
+  --gray-100: #d2d4d5;
+  --gray-200: #bcbec0;
+  --gray-300: #a6a8ab;
+  --gray-400: #909397;
+  --gray-500: #797d82;
+  --gray-600: #63676d;
+  --gray-700: #4d5158;
+  --gray-800: #363c43;
+  --gray-900: #20262e;
+  --content-padding:1.25rem;
+  --inline-spacing:0.5rem;
+  --border-radius:4px;
+  --surface-ground:#20262e;
+  --surface-section:#20262e;
+  --surface-card:#2a323d;
+  --surface-overlay:#2a323d;
+  --surface-border:#3f4b5b;
+  --surface-hover:rgba(255,255,255,.04);
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 1px #f0e6f5;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.15s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.65;
+}
+
+.p-error {
+  color: #f19ea6;
+}
+
+.p-text-secondary {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 4px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f3f8ff;
+  --blue-100:#c5dcff;
+  --blue-200:#97c1fe;
+  --blue-300:#69a5fe;
+  --blue-400:#3b8afd;
+  --blue-500:#0d6efd;
+  --blue-600:#0b5ed7;
+  --blue-700:#094db1;
+  --blue-800:#073d8b;
+  --blue-900:#052c65;
+  --green-50:#f4f9f6;
+  --green-100:#c8e2d6;
+  --green-200:#9ccbb5;
+  --green-300:#70b595;
+  --green-400:#459e74;
+  --green-500:#198754;
+  --green-600:#157347;
+  --green-700:#125f3b;
+  --green-800:#0e4a2e;
+  --green-900:#0a3622;
+  --yellow-50:#fffcf3;
+  --yellow-100:#fff0c3;
+  --yellow-200:#ffe494;
+  --yellow-300:#ffd965;
+  --yellow-400:#ffcd36;
+  --yellow-500:#ffc107;
+  --yellow-600:#d9a406;
+  --yellow-700:#b38705;
+  --yellow-800:#8c6a04;
+  --yellow-900:#664d03;
+  --cyan-50:#f3fcfe;
+  --cyan-100:#c5f2fb;
+  --cyan-200:#97e8f9;
+  --cyan-300:#69def6;
+  --cyan-400:#3bd4f3;
+  --cyan-500:#0dcaf0;
+  --cyan-600:#0baccc;
+  --cyan-700:#098da8;
+  --cyan-800:#076f84;
+  --cyan-900:#055160;
+  --pink-50:#fdf5f9;
+  --pink-100:#f5cee1;
+  --pink-200:#eda7ca;
+  --pink-300:#e681b3;
+  --pink-400:#de5a9b;
+  --pink-500:#d63384;
+  --pink-600:#b62b70;
+  --pink-700:#96245c;
+  --pink-800:#761c49;
+  --pink-900:#561435;
+  --indigo-50:#f7f3fe;
+  --indigo-100:#dac6fc;
+  --indigo-200:#bd98f9;
+  --indigo-300:#a06bf7;
+  --indigo-400:#833df4;
+  --indigo-500:#6610f2;
+  --indigo-600:#570ece;
+  --indigo-700:#470ba9;
+  --indigo-800:#380985;
+  --indigo-900:#290661;
+  --teal-50:#f4fcfa;
+  --teal-100:#c9f2e6;
+  --teal-200:#9fe8d2;
+  --teal-300:#75debf;
+  --teal-400:#4ad3ab;
+  --teal-500:#20c997;
+  --teal-600:#1bab80;
+  --teal-700:#168d6a;
+  --teal-800:#126f53;
+  --teal-900:#0d503c;
+  --orange-50:#fff9f3;
+  --orange-100:#ffe0c7;
+  --orange-200:#fec89a;
+  --orange-300:#feaf6d;
+  --orange-400:#fd9741;
+  --orange-500:#fd7e14;
+  --orange-600:#d76b11;
+  --orange-700:#b1580e;
+  --orange-800:#8b450b;
+  --orange-900:#653208;
+  --bluegray-50:#f8f9fb;
+  --bluegray-100:#e0e4ea;
+  --bluegray-200:#c7ced9;
+  --bluegray-300:#aeb9c8;
+  --bluegray-400:#95a3b8;
+  --bluegray-500:#7c8ea7;
+  --bluegray-600:#69798e;
+  --bluegray-700:#576375;
+  --bluegray-800:#444e5c;
+  --bluegray-900:#323943;
+  --purple-50:#f8f6fc;
+  --purple-100:#dcd2f0;
+  --purple-200:#c1aee4;
+  --purple-300:#a68ad9;
+  --purple-400:#8a66cd;
+  --purple-500:#6f42c1;
+  --purple-600:#5e38a4;
+  --purple-700:#4e2e87;
+  --purple-800:#3d246a;
+  --purple-900:#2c1a4d;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.75rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 3.107rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #c298d8;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-autocomplete-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-datepicker {
+  padding: 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #2a323d;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #3f4b5b;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: transparent;
+  color: #c298d8;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #3f4b5b;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #3f4b5b;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #3f4b5b;
+  padding-right: 0;
+  padding-left: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.75rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-cascadeselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1.5rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 1px solid #3f4b5b;
+  background: #20262e;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.15s;
+  color: #151515;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #c298d8;
+  background: #c298d8;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #3f4b5b;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #9954bb;
+  background: #9954bb;
+  color: #151515;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #c298d8;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #9954bb;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-checkbox .p-checkbox-box {
+  border-color: #151515;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #c298d8;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #2a323d;
+  border-color: #3f4b5b;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: rgba(255, 255, 255, 0.87);
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: none;
+}
+
+.p-dropdown {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.75rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: rgba(255, 255, 255, 0.6);
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.75rem;
+  margin-right: -1.75rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-dropdown {
+  background: #3f4b5b;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #2a323d;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #3f4b5b;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1.5rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #3f4b5b;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #20262e;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: rgba(255, 255, 255, 0.87);
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #c298d8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #c298d8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #c298d8;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #c298d8;
+}
+
+.p-inputgroup-addon {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border-top: 1px solid #3f4b5b;
+  border-left: 1px solid #3f4b5b;
+  border-bottom: 1px solid #3f4b5b;
+  padding: 0.5rem 0.75rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #3f4b5b;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: rgba(255, 255, 255, 0.6);
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 4px;
+  transition-duration: 0.15s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #3f4b5b;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #c298d8;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: #151515;
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #c298d8;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #f19ea6;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #20262e;
+  padding: 0.5rem 0.75rem;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  appearance: none;
+  border-radius: 4px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #3f4b5b;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #f19ea6;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-float-label > label {
+  left: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+  transition-duration: 0.15s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #f19ea6;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2.5rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2.5rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2.5rem;
+}
+
+::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #3f4b5b;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-listbox {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.75rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #f19ea6;
+}
+
+.p-multiselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #c298d8;
+  color: #151515;
+  border-radius: 4px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-multiselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.75rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-multiselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #f19ea6;
+}
+
+.p-password-panel {
+  padding: 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #3f4b5b;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #f19ea6;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #ffe082;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #9fdaa8;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 1px solid #3f4b5b;
+  background: #20262e;
+  width: 20px;
+  height: 20px;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 50%;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #3f4b5b;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.15s;
+  background-color: #151515;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #c298d8;
+  background: #c298d8;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #9954bb;
+  background: #9954bb;
+  color: #151515;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #f19ea6;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #c298d8;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #9954bb;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-radiobutton .p-radiobutton-box {
+  border-color: #151515;
+}
+
+.p-rating .p-rating-icon {
+  color: rgba(255, 255, 255, 0.87);
+  margin-left: 0.5rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #f19ea6;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #c298d8;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #c298d8;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #f19ea6;
+}
+
+.p-highlight .p-rating .p-rating-icon {
+  color: #151515;
+}
+
+.p-selectbutton .p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #f19ea6;
+}
+
+.p-slider {
+  background: #3f4b5b;
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #c298d8;
+  border: 2px solid #c298d8;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-slider .p-slider-range {
+  background: #c298d8;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #aa70c7;
+  border-color: #aa70c7;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, left 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, bottom 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.15s;
+}
+
+.p-togglebutton.p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #f19ea6;
+}
+
+.p-treeselect {
+  background: #20262e;
+  border: 1px solid #3f4b5b;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #3f4b5b;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: #c298d8;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #f19ea6;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-treeselect-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #3f4b5b;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #3f4b5b;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #3f4b5b;
+}
+
+.p-button {
+  color: #151515;
+  background: #c298d8;
+  border: 1px solid #c298d8;
+  padding: 0.5rem 0.75rem;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-button:enabled:hover {
+  background: #aa70c7;
+  color: #151515;
+  border-color: #aa70c7;
+}
+.p-button:enabled:active {
+  background: #9954bb;
+  color: #151515;
+  border-color: #9954bb;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #c298d8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(194, 152, 216, 0.04);
+  color: #c298d8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(194, 152, 216, 0.16);
+  color: #c298d8;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+  border-color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #c298d8;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(194, 152, 216, 0.04);
+  color: #c298d8;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(194, 152, 216, 0.16);
+  color: #c298d8;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: rgba(255, 255, 255, 0.16);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #c298d8;
+  background-color: #151515;
+}
+.p-button.p-button-raised {
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #6c757d;
+  border: 1px solid #6c757d;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #5a6268;
+  color: #ffffff;
+  border-color: #5a6268;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px rgba(130, 138, 145, 0.5);
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #545b62;
+  color: #ffffff;
+  border-color: #4e555b;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6c757d;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  border-color: transparent;
+  color: #6c757d;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  border-color: transparent;
+  color: #6c757d;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #151515;
+  background: #7fd8e6;
+  border: 1px solid #4cc8db;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #4cc8db;
+  color: #151515;
+  border-color: #26bdd3;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #b1e8f0;
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #26bdd3;
+  color: #151515;
+  border-color: #00b2cc;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(127, 216, 230, 0.04);
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(127, 216, 230, 0.16);
+  color: #7fd8e6;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #7fd8e6;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(127, 216, 230, 0.04);
+  border-color: transparent;
+  color: #7fd8e6;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(127, 216, 230, 0.16);
+  border-color: transparent;
+  color: #7fd8e6;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #151515;
+  background: #9fdaa8;
+  border: 1px solid #78cc86;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #78cc86;
+  color: #151515;
+  border-color: #5ac06c;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #c5e8ca;
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #5ac06c;
+  color: #151515;
+  border-color: #3cb553;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(159, 218, 168, 0.04);
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(159, 218, 168, 0.16);
+  color: #9fdaa8;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #9fdaa8;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(159, 218, 168, 0.04);
+  border-color: transparent;
+  color: #9fdaa8;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(159, 218, 168, 0.16);
+  border-color: transparent;
+  color: #9fdaa8;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #151515;
+  background: #ffe082;
+  border: 1px solid #ffd54f;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #ffd54f;
+  color: #151515;
+  border-color: #ffca28;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffecb3;
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #ffca28;
+  color: #151515;
+  border-color: #ffc107;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  color: #ffe082;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #ffe082;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 224, 130, 0.04);
+  border-color: transparent;
+  color: #ffe082;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 224, 130, 0.16);
+  border-color: transparent;
+  color: #ffe082;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #151515;
+  background: #b7a2e0;
+  border: 1px solid #9a7cd4;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #9a7cd4;
+  color: #151515;
+  border-color: #845fca;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #d3c7ec;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #845fca;
+  color: #151515;
+  border-color: #6d43c0;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(183, 162, 224, 0.04);
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(183, 162, 224, 0.16);
+  color: #b7a2e0;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #b7a2e0;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(183, 162, 224, 0.04);
+  border-color: transparent;
+  color: #b7a2e0;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(183, 162, 224, 0.16);
+  border-color: transparent;
+  color: #b7a2e0;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #151515;
+  background: #f19ea6;
+  border: 1px solid #e97984;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #e97984;
+  color: #151515;
+  border-color: #f75965;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 1px #ffd0d9;
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #f75965;
+  color: #151515;
+  border-color: #fd464e;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(241, 158, 166, 0.04);
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(241, 158, 166, 0.16);
+  color: #f19ea6;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #f19ea6;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(241, 158, 166, 0.04);
+  border-color: transparent;
+  color: #f19ea6;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(241, 158, 166, 0.16);
+  border-color: transparent;
+  color: #f19ea6;
+}
+
+.p-button.p-button-link {
+  color: #c298d8;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #aa70c7;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #c298d8;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: #343e4d;
+  color: #fff;
+}
+.p-speeddial-action:hover {
+  background: #3f4b5b;
+  color: #fff;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #3f4b5b;
+  width: 2rem;
+  height: 0.5rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: #c298d8;
+  color: #151515;
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #151515;
+  background: #c298d8;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #2a323d;
+  color: #c298d8;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #c298d8;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: #c298d8;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #c298d8;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  outline-color: #f0e6f5;
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: #c298d8;
+  color: #151515;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 #c298d8;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 #c298d8;
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-datatable .p-column-resizer-helper {
+  background: #c298d8;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #2a323d;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 2px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(255, 255, 255, 0.02);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: #c298d8;
+  color: #151515;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: #151515;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: #151515;
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1.25rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-column-filter-menu-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: #c298d8;
+  color: #151515;
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-column-filter-clear-button:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-column-filter-overlay {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: rgba(255, 255, 255, 0.87);
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1.25rem;
+  border-bottom: 1px solid #3f4b5b;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1.25rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1.25rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #aa70c7;
+  border: 1px solid #aa70c7;
+  color: #151515;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #151515;
+  background: #c298d8;
+  border: 1px solid #c298d8;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #aa70c7;
+  color: #151515;
+  border-color: #aa70c7;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #9954bb;
+  color: #151515;
+  border-color: #9954bb;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #3f4b5b;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: #3f4b5b;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #2a323d;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #151515;
+  background: #aa70c7;
+  border-color: #aa70c7;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #151515;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #aa70c7;
+  border-color: #aa70c7;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #2a323d;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #151515;
+  background: #c298d8;
+  border: 1px solid #c298d8;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #aa70c7;
+  color: #151515;
+  border-color: #aa70c7;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #9954bb;
+  color: #151515;
+  border-color: #9954bb;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.65;
+  color: #151515;
+  background: #c298d8;
+  border: 1px solid #c298d8;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard a {
+  color: rgba(255, 255, 255, 0.87);
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1.25rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: #c298d8;
+  color: #151515;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: #8942ae;
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #3f4b5b;
+  border-color: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #3f4b5b;
+  border-color: #3f4b5b;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.25rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-paginator {
+  background: #2a323d;
+  color: #c298d8;
+  border: solid #3f4b5b;
+  border-width: 0;
+  padding: 0.75rem;
+  border-radius: 4px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #c298d8;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: #c298d8;
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.357rem;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.357rem;
+}
+.p-paginator .p-paginator-current {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #c298d8;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: transparent;
+  border: 1px solid #3f4b5b;
+  color: #c298d8;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: #c298d8;
+  border-color: #c298d8;
+  color: #151515;
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: #c298d8;
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1.25rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: #151515;
+  background: #c298d8;
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 0 none;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #c298d8;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #3f4b5b;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1.25rem;
+  border-radius: 4px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  padding: 0.286rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: #3f4b5b;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: #c298d8;
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: #151515;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.75rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.75rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: #a263c4;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  border: 1px solid #3f4b5b;
+  background-color: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.286rem;
+  transition: box-shadow 0.15s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: #c298d8;
+  color: #151515;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #151515;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: #3f4b5b;
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  transition: box-shadow 0.15s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+}
+.p-treetable .p-sortable-column {
+  outline-color: #f0e6f5;
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #151515;
+  background: #c298d8;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #2a323d;
+  color: #c298d8;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #c298d8;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  transition: box-shadow 0.15s;
+  outline-color: #f0e6f5;
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: #c298d8;
+  color: #151515;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: #151515;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: #151515;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-treetable .p-column-resizer-helper {
+  background: #c298d8;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #2a323d;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  border: solid #3f4b5b;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #3f4b5b;
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-accordion .p-accordion-content {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-card {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 4px;
+}
+.p-card .p-card-body {
+  padding: 1.5rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 400;
+  margin-bottom: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #2a323d;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #3f4b5b;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #3f4b5b;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem 1.25rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1.25rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1.25rem;
+}
+.p-panel .p-panel-content {
+  padding: 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #3f4b5b;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  border-radius: 4px;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-splitter .p-splitter-gutter {
+  transition: color 0.15s, box-shadow 0.15s;
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #3f4b5b;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #3f4b5b;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #3f4b5b;
+  border-width: 0 0 1px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #2a323d #2a323d #3f4b5b #2a323d;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #f0e6f5;
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #2a323d;
+  border-color: #3f4b5b #3f4b5b #2a323d #3f4b5b;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2.357rem;
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #f0e6f5;
+}
+.p-tabview .p-tabview-panels {
+  background: #2a323d;
+  padding: 1.25rem;
+  border: 0 none;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-toolbar {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  padding: 1rem 1.25rem;
+  border-radius: 4px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(42, 50, 61, 0);
+  border-bottom-color: #2a323d;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(63, 75, 91, 0);
+  border-bottom-color: #3f4b5b;
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #2a323d;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: #3f4b5b;
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 4px;
+  box-shadow: none;
+  border: 1px solid #3f4b5b;
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 1rem;
+  text-align: right;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1.25rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #c298d8;
+  color: #151515;
+  width: 2rem;
+  height: 2rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #aa70c7;
+  color: #151515;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(42, 50, 61, 0);
+  border-bottom-color: #2a323d;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(63, 75, 91, 0);
+  border-bottom-color: #3f4b5b;
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #2a323d;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: #3f4b5b;
+}
+
+.p-sidebar {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem 1.25rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: rgba(255, 255, 255, 0.87);
+  border-color: transparent;
+  background: transparent;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1.25rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  padding: 0.5rem 0.75rem;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #3f4b5b;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #3f4b5b;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #2a323d;
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-fileupload .p-fileupload-content {
+  background: #2a323d;
+  padding: 2rem 1rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #aa70c7;
+  color: #151515;
+  border-color: #aa70c7;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #9954bb;
+  color: #151515;
+  border-color: #9954bb;
+}
+
+.p-breadcrumb {
+  background: #343e4d;
+  border: 0 none;
+  border-radius: 4px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: #c298d8;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: #c298d8;
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-contextmenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem 1rem;
+  background: #343e4d;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.6);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-megamenu .p-megamenu-panel {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.5rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.5rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-menu.p-menu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem 1rem;
+  background: #343e4d;
+  color: rgba(255, 255, 255, 0.6);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(255, 255, 255, 0.6);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(255, 255, 255, 0.6);
+    border-radius: 50%;
+    transition: color 0.15s, box-shadow 0.15s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(255, 255, 255, 0.87);
+    background: transparent;
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 1px #f0e6f5;
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.5rem 0;
+    background: #2a323d;
+    border: 1px solid #3f4b5b;
+    box-shadow: none;
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #3f4b5b;
+    margin: 0.5rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: rgba(255, 255, 255, 0.87);
+    border-radius: 0;
+    transition: box-shadow 0.15s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.6);
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.6);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: rgba(255, 255, 255, 0.04);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: rgba(255, 255, 255, 0.87);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.15s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.15s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem 1.25rem;
+  border: 1px solid #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  background: #2a323d;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: rgba(255, 255, 255, 0.04);
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #3f4b5b;
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.5rem 0;
+  border: 1px solid #3f4b5b;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-slidemenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: #20262e;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 4px;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: #c298d8;
+  color: #151515;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #3f4b5b;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #3f4b5b;
+  border-width: 0 0 1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #2a323d #2a323d #3f4b5b #2a323d;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.6);
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #f0e6f5;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #2a323d;
+  border-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #2a323d;
+  border-color: #3f4b5b #3f4b5b #2a323d #3f4b5b;
+  color: rgba(255, 255, 255, 0.6);
+}
+
+.p-tieredmenu {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.6);
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem #f0e6f5;
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #2a323d;
+  border: 1px solid #3f4b5b;
+  box-shadow: none;
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #20262e;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #3f4b5b;
+  margin: 0.5rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.75rem;
+  margin: 0;
+  border-radius: 4px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 0px;
+  color: #004085;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #004085;
+}
+.p-inline-message.p-inline-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 0px;
+  color: #155724;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #155724;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 0px;
+  color: #856404;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #856404;
+}
+.p-inline-message.p-inline-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 0px;
+  color: #721c24;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #721c24;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 4px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.25rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-message.p-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #004085;
+}
+.p-message.p-message-info .p-message-close {
+  color: #004085;
+}
+.p-message.p-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #155724;
+}
+.p-message.p-message-success .p-message-close {
+  color: #155724;
+}
+.p-message.p-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #856404;
+}
+.p-message.p-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-close {
+  color: #721c24;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 1;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #721c24;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 4rem;
+  height: 4rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 4rem;
+  height: 4rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: rgba(255, 255, 255, 0.6);
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #7789a1;
+  width: 1rem;
+  height: 1rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #687c97;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #c298d8;
+  color: #151515;
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #c298d8;
+  color: #151515;
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: rgba(255, 255, 255, 0.6);
+  width: 2rem;
+  height: 2rem;
+  transition: color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: rgba(255, 255, 255, 0.6);
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: color 0.15s, box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #3f4b5b;
+  border-radius: 4px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #2a323d;
+}
+
+.p-badge {
+  background: #c298d8;
+  color: #151515;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #6c757d;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #9fdaa8;
+  color: #151515;
+}
+.p-badge.p-badge-info {
+  background-color: #7fd8e6;
+  color: #151515;
+}
+.p-badge.p-badge-warning {
+  background-color: #ffe082;
+  color: #151515;
+}
+.p-badge.p-badge-danger {
+  background-color: #f19ea6;
+  color: #151515;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #3f4b5b;
+  color: rgba(255, 255, 255, 0.87);
+  border-radius: 16px;
+  padding: 0 0.75rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.75rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 4px;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.75rem;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.04);
+  color: rgba(255, 255, 255, 0.87);
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 1px #f0e6f5;
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #3f4b5b;
+  border-radius: 4px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #c298d8;
+}
+.p-progressbar .p-progressbar-label {
+  color: rgba(255, 255, 255, 0.87);
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 4px;
+  box-shadow: none;
+  transition: color 0.15s, box-shadow 0.15s;
+}
+.p-scrolltop.p-link {
+  background: #c298d8;
+}
+.p-scrolltop.p-link:hover {
+  background: #aa70c7;
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: #151515;
+}
+
+.p-skeleton {
+  background-color: rgba(255, 255, 255, 0.06);
+  border-radius: 4px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #c298d8;
+  color: #151515;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 4px;
+}
+.p-tag.p-tag-success {
+  background-color: #9fdaa8;
+  color: #151515;
+}
+.p-tag.p-tag-info {
+  background-color: #7fd8e6;
+  color: #151515;
+}
+.p-tag.p-tag-warning {
+  background-color: #ffe082;
+  color: #151515;
+}
+.p-tag.p-tag-danger {
+  background-color: #f19ea6;
+  color: #151515;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #2a323d;
+  color: rgba(255, 255, 255, 0.87);
+  border: 1px solid #3f4b5b;
+  padding: 1.25rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Vendor extensions to the designer enhanced bootstrap compatibility */
+.p-breadcrumb .p-breadcrumb-chevron {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+.p-breadcrumb .p-breadcrumb-chevron:before {
+  content: "/";
+}
+
+/* Customizations to the designer theme should be defined here */
Index: trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-blue/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-blue/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5667 @@
+:root {
+  --surface-a:#ffffff;
+  --surface-b:#efefef;
+  --surface-c:#e9ecef;
+  --surface-d:#dee2e6;
+  --surface-e:#ffffff;
+  --surface-f:#ffffff;
+  --text-color:#212529;
+  --text-color-secondary:#6c757d;
+  --primary-color:#007bff;
+  --primary-color-text:#ffffff;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #ffffff;
+  --surface-50: #f9fafb;
+  --surface-100: #f8f9fa;
+  --surface-200: #e9ecef;
+  --surface-300: #dee2e6;
+  --surface-400: #ced4da;
+  --surface-500: #adb5bd;
+  --surface-600: #6c757d;
+  --surface-700: #495057;
+  --surface-800: #343a40;
+  --surface-900: #212529;
+  --gray-50: #f9fafb;
+  --gray-100: #f8f9fa;
+  --gray-200: #e9ecef;
+  --gray-300: #dee2e6;
+  --gray-400: #ced4da;
+  --gray-500: #adb5bd;
+  --gray-600: #6c757d;
+  --gray-700: #495057;
+  --gray-800: #343a40;
+  --gray-900: #212529;
+  --content-padding:1.25rem;
+  --inline-spacing:0.5rem;
+  --border-radius:4px;
+  --surface-ground:#efefef;
+  --surface-section:#ffffff;
+  --surface-card:#ffffff;
+  --surface-overlay:#ffffff;
+  --surface-border:#dee2e6;
+  --surface-hover:#e9ecef;
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.15s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.65;
+}
+
+.p-error {
+  color: #dc3545;
+}
+
+.p-text-secondary {
+  color: #6c757d;
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 4px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f3f8ff;
+  --blue-100:#c5dcff;
+  --blue-200:#97c1fe;
+  --blue-300:#69a5fe;
+  --blue-400:#3b8afd;
+  --blue-500:#0d6efd;
+  --blue-600:#0b5ed7;
+  --blue-700:#094db1;
+  --blue-800:#073d8b;
+  --blue-900:#052c65;
+  --green-50:#f4f9f6;
+  --green-100:#c8e2d6;
+  --green-200:#9ccbb5;
+  --green-300:#70b595;
+  --green-400:#459e74;
+  --green-500:#198754;
+  --green-600:#157347;
+  --green-700:#125f3b;
+  --green-800:#0e4a2e;
+  --green-900:#0a3622;
+  --yellow-50:#fffcf3;
+  --yellow-100:#fff0c3;
+  --yellow-200:#ffe494;
+  --yellow-300:#ffd965;
+  --yellow-400:#ffcd36;
+  --yellow-500:#ffc107;
+  --yellow-600:#d9a406;
+  --yellow-700:#b38705;
+  --yellow-800:#8c6a04;
+  --yellow-900:#664d03;
+  --cyan-50:#f3fcfe;
+  --cyan-100:#c5f2fb;
+  --cyan-200:#97e8f9;
+  --cyan-300:#69def6;
+  --cyan-400:#3bd4f3;
+  --cyan-500:#0dcaf0;
+  --cyan-600:#0baccc;
+  --cyan-700:#098da8;
+  --cyan-800:#076f84;
+  --cyan-900:#055160;
+  --pink-50:#fdf5f9;
+  --pink-100:#f5cee1;
+  --pink-200:#eda7ca;
+  --pink-300:#e681b3;
+  --pink-400:#de5a9b;
+  --pink-500:#d63384;
+  --pink-600:#b62b70;
+  --pink-700:#96245c;
+  --pink-800:#761c49;
+  --pink-900:#561435;
+  --indigo-50:#f7f3fe;
+  --indigo-100:#dac6fc;
+  --indigo-200:#bd98f9;
+  --indigo-300:#a06bf7;
+  --indigo-400:#833df4;
+  --indigo-500:#6610f2;
+  --indigo-600:#570ece;
+  --indigo-700:#470ba9;
+  --indigo-800:#380985;
+  --indigo-900:#290661;
+  --teal-50:#f4fcfa;
+  --teal-100:#c9f2e6;
+  --teal-200:#9fe8d2;
+  --teal-300:#75debf;
+  --teal-400:#4ad3ab;
+  --teal-500:#20c997;
+  --teal-600:#1bab80;
+  --teal-700:#168d6a;
+  --teal-800:#126f53;
+  --teal-900:#0d503c;
+  --orange-50:#fff9f3;
+  --orange-100:#ffe0c7;
+  --orange-200:#fec89a;
+  --orange-300:#feaf6d;
+  --orange-400:#fd9741;
+  --orange-500:#fd7e14;
+  --orange-600:#d76b11;
+  --orange-700:#b1580e;
+  --orange-800:#8b450b;
+  --orange-900:#653208;
+  --bluegray-50:#f8f9fb;
+  --bluegray-100:#e0e4ea;
+  --bluegray-200:#c7ced9;
+  --bluegray-300:#aeb9c8;
+  --bluegray-400:#95a3b8;
+  --bluegray-500:#7c8ea7;
+  --bluegray-600:#69798e;
+  --bluegray-700:#576375;
+  --bluegray-800:#444e5c;
+  --bluegray-900:#323943;
+  --purple-50:#f8f6fc;
+  --purple-100:#dcd2f0;
+  --purple-200:#c1aee4;
+  --purple-300:#a68ad9;
+  --purple-400:#8a66cd;
+  --purple-500:#6f42c1;
+  --purple-600:#5e38a4;
+  --purple-700:#4e2e87;
+  --purple-800:#3d246a;
+  --purple-900:#2c1a4d;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.75rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 3.107rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #212529;
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #007bff;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-autocomplete-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-datepicker {
+  padding: 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #ced4da;
+  border-radius: 4px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #efefef;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #dee2e6;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: #ced4da;
+  color: #212529;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #dee2e6;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #dee2e6;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #dee2e6;
+  padding-right: 0;
+  padding-left: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.75rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-cascadeselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1.5rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #efefef;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #ced4da;
+  background: #ffffff;
+  width: 20px;
+  height: 20px;
+  color: #212529;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.15s;
+  color: #ffffff;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #007bff;
+  background: #007bff;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #ced4da;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #0062cc;
+  background: #0062cc;
+  color: #ffffff;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #efefef;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #007bff;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #0062cc;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-checkbox .p-checkbox-box {
+  border-color: #ffffff;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #007bff;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #212529;
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #212529;
+  border-color: #212529;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: #ffffff;
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: none;
+}
+
+.p-dropdown {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.75rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: #6c757d;
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: #495057;
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.75rem;
+  margin-right: -1.75rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-dropdown {
+  background: #efefef;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #efefef;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #dee2e6;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1.5rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #dee2e6;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #ffffff;
+  color: #495057;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #007bff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #007bff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #007bff;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #007bff;
+}
+
+.p-inputgroup-addon {
+  background: #e9ecef;
+  color: #495057;
+  border-top: 1px solid #ced4da;
+  border-left: 1px solid #ced4da;
+  border-bottom: 1px solid #ced4da;
+  padding: 0.5rem 0.75rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #ced4da;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #dc3545;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: #ffffff;
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 4px;
+  transition-duration: 0.15s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #ced4da;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #007bff;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: #ffffff;
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #007bff;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #dc3545;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #495057;
+  background: #ffffff;
+  padding: 0.5rem 0.75rem;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  appearance: none;
+  border-radius: 4px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #ced4da;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #dc3545;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-float-label > label {
+  left: 0.75rem;
+  color: #6c757d;
+  transition-duration: 0.15s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #dc3545;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.75rem;
+  color: #495057;
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2.5rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2.5rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.75rem;
+  color: #495057;
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2.5rem;
+}
+
+::-webkit-input-placeholder {
+  color: #6c757d;
+}
+
+:-moz-placeholder {
+  color: #6c757d;
+}
+
+::-moz-placeholder {
+  color: #6c757d;
+}
+
+:-ms-input-placeholder {
+  color: #6c757d;
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #efefef;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #efefef;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-listbox {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #ced4da;
+  border-radius: 4px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.75rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #dc3545;
+}
+
+.p-multiselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #007bff;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-multiselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.75rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-multiselect {
+  background: #efefef;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-password-panel {
+  padding: 1.25rem;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #e9ecef;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #dc3545;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #ffc107;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #28a745;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #ced4da;
+  background: #ffffff;
+  width: 20px;
+  height: 20px;
+  color: #212529;
+  border-radius: 50%;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #ced4da;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.15s;
+  background-color: #ffffff;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #007bff;
+  background: #007bff;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #0062cc;
+  background: #0062cc;
+  color: #ffffff;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #efefef;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #007bff;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #0062cc;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-radiobutton .p-radiobutton-box {
+  border-color: #ffffff;
+}
+
+.p-rating .p-rating-icon {
+  color: #495057;
+  margin-left: 0.5rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #dc3545;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #007bff;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #007bff;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #dc3545;
+}
+
+.p-highlight .p-rating .p-rating-icon {
+  color: #ffffff;
+}
+
+.p-selectbutton .p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #dc3545;
+}
+
+.p-slider {
+  background: #e9ecef;
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #007bff;
+  border: 2px solid #007bff;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-slider .p-slider-range {
+  background: #007bff;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #0069d9;
+  border-color: #0069d9;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, left 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, bottom 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.15s;
+}
+
+.p-togglebutton.p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #dc3545;
+}
+
+.p-treeselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: #007bff;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #dee2e6;
+  color: #212529;
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #dc3545;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-treeselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #efefef;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-button {
+  color: #ffffff;
+  background: #007bff;
+  border: 1px solid #007bff;
+  padding: 0.5rem 0.75rem;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-button:enabled:hover {
+  background: #0069d9;
+  color: #ffffff;
+  border-color: #0069d9;
+}
+.p-button:enabled:active {
+  background: #0062cc;
+  color: #ffffff;
+  border-color: #0062cc;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #007bff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(0, 123, 255, 0.04);
+  color: #007bff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(0, 123, 255, 0.16);
+  color: #007bff;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: #6c757d;
+  border-color: #6c757d;
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: #e9ecef;
+  color: #6c757d;
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: #dee2e6;
+  color: #6c757d;
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #007bff;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(0, 123, 255, 0.04);
+  color: #007bff;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(0, 123, 255, 0.16);
+  color: #007bff;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: #6c757d;
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: #e9ecef;
+  color: #6c757d;
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: #dee2e6;
+  color: #6c757d;
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #007bff;
+  background-color: #ffffff;
+}
+.p-button.p-button-raised {
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #6c757d;
+  border: 1px solid #6c757d;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #5a6268;
+  color: #ffffff;
+  border-color: #5a6268;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #545b62;
+  color: #ffffff;
+  border-color: #4e555b;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6c757d;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  border-color: transparent;
+  color: #6c757d;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  border-color: transparent;
+  color: #6c757d;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #ffffff;
+  background: #17a2b8;
+  border: 1px solid #17a2b8;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #138496;
+  color: #ffffff;
+  border-color: #117a8b;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #138496;
+  color: #ffffff;
+  border-color: #117a8b;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(23, 162, 184, 0.04);
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(23, 162, 184, 0.16);
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #17a2b8;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(23, 162, 184, 0.04);
+  border-color: transparent;
+  color: #17a2b8;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(23, 162, 184, 0.16);
+  border-color: transparent;
+  color: #17a2b8;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #ffffff;
+  background: #28a745;
+  border: 1px solid #28a745;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #218838;
+  color: #ffffff;
+  border-color: #1e7e34;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #1e7e34;
+  color: #ffffff;
+  border-color: #1c7430;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(40, 167, 69, 0.04);
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(40, 167, 69, 0.16);
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #28a745;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(40, 167, 69, 0.04);
+  border-color: transparent;
+  color: #28a745;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(40, 167, 69, 0.16);
+  border-color: transparent;
+  color: #28a745;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #212529;
+  background: #ffc107;
+  border: 1px solid #ffc107;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #e0a800;
+  color: #212529;
+  border-color: #d39e00;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #d39e00;
+  color: #212529;
+  border-color: #c69500;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 193, 7, 0.04);
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 193, 7, 0.16);
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #ffc107;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 193, 7, 0.04);
+  border-color: transparent;
+  color: #ffc107;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 193, 7, 0.16);
+  border-color: transparent;
+  color: #ffc107;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #ffffff;
+  background: #6f42c1;
+  border: 1px solid #6f42c1;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #633bad;
+  color: #ffffff;
+  border-color: #58349a;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem #d3c6ec;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #58349a;
+  color: #ffffff;
+  border-color: #4d2e87;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(111, 66, 193, 0.04);
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(111, 66, 193, 0.16);
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6f42c1;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(111, 66, 193, 0.04);
+  border-color: transparent;
+  color: #6f42c1;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(111, 66, 193, 0.16);
+  border-color: transparent;
+  color: #6f42c1;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #ffffff;
+  background: #dc3545;
+  border: 1px solid #dc3545;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #c82333;
+  color: #ffffff;
+  border-color: #bd2130;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #bd2130;
+  color: #ffffff;
+  border-color: #b21f2d;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(220, 53, 69, 0.04);
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(220, 53, 69, 0.16);
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #dc3545;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(220, 53, 69, 0.04);
+  border-color: transparent;
+  color: #dc3545;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(220, 53, 69, 0.16);
+  border-color: transparent;
+  color: #dc3545;
+}
+
+.p-button.p-button-link {
+  color: #007bff;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #0069d9;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #007bff;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: #495057;
+  color: #fff;
+}
+.p-speeddial-action:hover {
+  background: #343a40;
+  color: #fff;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #e9ecef;
+  width: 2rem;
+  height: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #dee2e6;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: #007bff;
+  color: #ffffff;
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: #6c757d;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #ffffff;
+  background: #007bff;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: #6c757d;
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #ffffff;
+  color: #007bff;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #007bff;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: #e9ecef;
+  color: #007bff;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #007bff;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #ffffff;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  outline-color: rgba(38, 143, 255, 0.5);
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 #007bff;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 #007bff;
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-datatable .p-column-resizer-helper {
+  background: #007bff;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #efefef;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 2px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(0, 0, 0, 0.05);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: #ffffff;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: #ffffff;
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #ffffff;
+  color: #212529;
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1.25rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-column-filter-menu-button:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: transparent;
+  color: #495057;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-column-filter-clear-button:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-column-filter-overlay {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1.25rem;
+  border-bottom: 1px solid #dee2e6;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1.25rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1.25rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #0069d9;
+  border: 1px solid #0069d9;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #007bff;
+  border: 1px solid #007bff;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #0069d9;
+  color: #ffffff;
+  border-color: #0069d9;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #0062cc;
+  color: #ffffff;
+  border-color: #0062cc;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #dee2e6;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: #212529;
+  border-color: #dee2e6;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #ffffff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  background: #efefef;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #ffffff;
+  background: #0069d9;
+  border-color: #0069d9;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #0069d9;
+  border-color: #0069d9;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #efefef;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #007bff;
+  border: 1px solid #007bff;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #0069d9;
+  color: #ffffff;
+  border-color: #0069d9;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #0062cc;
+  color: #ffffff;
+  border-color: #0062cc;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.65;
+  color: #ffffff;
+  background: #007bff;
+  border: 1px solid #007bff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard a {
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1.25rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: #212529;
+  background: #ffffff;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: #003e80;
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #dee2e6;
+  border-color: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #dee2e6;
+  border-color: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 1.25rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-paginator {
+  background: #ffffff;
+  color: #007bff;
+  border: solid #dee2e6;
+  border-width: 0;
+  padding: 0.75rem;
+  border-radius: 4px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #007bff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #007bff;
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.357rem;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.357rem;
+}
+.p-paginator .p-paginator-current {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #007bff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #007bff;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: #007bff;
+  border-color: #007bff;
+  color: #ffffff;
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #007bff;
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1.25rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: #ffffff;
+  background: #007bff;
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: #212529;
+  background: #ffffff;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 0 none;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #007bff;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #dee2e6;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 1.25rem;
+  border-radius: 4px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  padding: 0.286rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: #6c757d;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: #212529;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.75rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: #0062cc;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  border: 1px solid #dee2e6;
+  background-color: #ffffff;
+  color: #212529;
+  padding: 0.286rem;
+  transition: box-shadow 0.15s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: #007bff;
+  color: #ffffff;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #ffffff;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: #6c757d;
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+  transition: box-shadow 0.15s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+}
+.p-treetable .p-sortable-column {
+  outline-color: rgba(38, 143, 255, 0.5);
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: #6c757d;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #ffffff;
+  background: #007bff;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: #6c757d;
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #ffffff;
+  color: #007bff;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #007bff;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #ffffff;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  outline-color: rgba(38, 143, 255, 0.5);
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: #212529;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: #ffffff;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: #ffffff;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: #212529;
+}
+.p-treetable .p-column-resizer-helper {
+  background: #007bff;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #efefef;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #ffffff;
+  color: #212529;
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #dee2e6;
+  background: #e9ecef;
+  color: #212529;
+}
+.p-accordion .p-accordion-content {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-card {
+  background: #ffffff;
+  color: #212529;
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 4px;
+}
+.p-card .p-card-body {
+  padding: 1.5rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 400;
+  margin-bottom: 0.5rem;
+  color: #6c757d;
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #ffffff;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #dee2e6;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #dee2e6;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-radius: 4px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem 1.25rem;
+  color: #212529;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1.25rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  background: #efefef;
+  color: #212529;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1.25rem;
+}
+.p-panel .p-panel-content {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #efefef;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  border-radius: 4px;
+  color: #212529;
+}
+.p-splitter .p-splitter-gutter {
+  transition: box-shadow 0.15s;
+  background: #efefef;
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #dee2e6;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #dee2e6;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #dee2e6;
+  border-width: 0 0 1px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #ffffff #ffffff #dee2e6 #ffffff;
+  background: #ffffff;
+  color: #6c757d;
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #ffffff;
+  border-color: #dee2e6;
+  color: #6c757d;
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #ffffff;
+  border-color: #dee2e6 #dee2e6 #ffffff #dee2e6;
+  color: #495057;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #ffffff;
+  color: #495057;
+  width: 2.357rem;
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-tabview .p-tabview-panels {
+  background: #ffffff;
+  padding: 1.25rem;
+  border: 0 none;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-toolbar {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-radius: 4px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #ffffff;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(0, 0, 0, 0);
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #ffffff;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: rgba(0, 0, 0, 0.2);
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 4px;
+  box-shadow: none;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 1px solid #e9ecef;
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 1px solid #e9ecef;
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+  text-align: right;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1.25rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #007bff;
+  color: #ffffff;
+  width: 2rem;
+  height: 2rem;
+  transition: box-shadow 0.15s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #0069d9;
+  color: #ffffff;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #ffffff;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(0, 0, 0, 0);
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #ffffff;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: rgba(0, 0, 0, 0.2);
+}
+
+.p-sidebar {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  box-shadow: none;
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem 1.25rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1.25rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #212529;
+  color: #ffffff;
+  padding: 0.5rem 0.75rem;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #212529;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #212529;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #212529;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #212529;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #efefef;
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-fileupload .p-fileupload-content {
+  background: #ffffff;
+  padding: 2rem 1rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #0069d9;
+  color: #ffffff;
+  border-color: #0069d9;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #0062cc;
+  color: #ffffff;
+  border-color: #0062cc;
+}
+
+.p-breadcrumb {
+  background: #efefef;
+  border: 0 none;
+  border-radius: 4px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: #007bff;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: #007bff;
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: #6c757d;
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: #6c757d;
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: #6c757d;
+}
+
+.p-contextmenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem 1rem;
+  background: #efefef;
+  color: rgba(0, 0, 0, 0.9);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(0, 0, 0, 0.5);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.5);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-megamenu .p-megamenu-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.5rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.5rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-menu.p-menu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem 1rem;
+  background: #efefef;
+  color: rgba(0, 0, 0, 0.9);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(0, 0, 0, 0.5);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(0, 0, 0, 0.5);
+    border-radius: 50%;
+    transition: box-shadow 0.15s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(0, 0, 0, 0.7);
+    background: transparent;
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.5rem 0;
+    background: #ffffff;
+    border: 1px solid rgba(0, 0, 0, 0.15);
+    box-shadow: none;
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #dee2e6;
+    margin: 0.5rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: #212529;
+    border-radius: 0;
+    transition: box-shadow 0.15s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: #212529;
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: #e9ecef;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.15s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.15s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #dee2e6;
+  background: #e9ecef;
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.5rem 0;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-slidemenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: #e9ecef;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: #212529;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: #212529;
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: #212529;
+  border: 1px solid #dee2e6;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 4px;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: #6c757d;
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: #212529;
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #dee2e6;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #dee2e6;
+  border-width: 0 0 1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #ffffff #ffffff #dee2e6 #ffffff;
+  background: #ffffff;
+  color: #6c757d;
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #ffffff;
+  border-color: #dee2e6;
+  color: #6c757d;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #ffffff;
+  border-color: #dee2e6 #dee2e6 #ffffff #dee2e6;
+  color: #495057;
+}
+
+.p-tieredmenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(38, 143, 255, 0.5);
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.75rem;
+  margin: 0;
+  border-radius: 4px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 0px;
+  color: #004085;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #004085;
+}
+.p-inline-message.p-inline-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 0px;
+  color: #155724;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #155724;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 0px;
+  color: #856404;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #856404;
+}
+.p-inline-message.p-inline-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 0px;
+  color: #721c24;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #721c24;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 4px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.25rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-message.p-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #004085;
+}
+.p-message.p-message-info .p-message-close {
+  color: #004085;
+}
+.p-message.p-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #155724;
+}
+.p-message.p-message-success .p-message-close {
+  color: #155724;
+}
+.p-message.p-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #856404;
+}
+.p-message.p-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-close {
+  color: #721c24;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 1;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #721c24;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #efefef;
+  width: 4rem;
+  height: 4rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #efefef;
+  width: 4rem;
+  height: 4rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #efefef;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #e9ecef;
+  width: 1rem;
+  height: 1rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #dee2e6;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #007bff;
+  color: #ffffff;
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #efefef;
+  width: 2rem;
+  height: 2rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: box-shadow 0.15s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #dee2e6;
+  border-radius: 4px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #ffffff;
+}
+
+.p-badge {
+  background: #007bff;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #6c757d;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #28a745;
+  color: #ffffff;
+}
+.p-badge.p-badge-info {
+  background-color: #17a2b8;
+  color: #ffffff;
+}
+.p-badge.p-badge-warning {
+  background-color: #ffc107;
+  color: #212529;
+}
+.p-badge.p-badge-danger {
+  background-color: #dc3545;
+  color: #ffffff;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #dee2e6;
+  color: #212529;
+  border-radius: 16px;
+  padding: 0 0.75rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.75rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.75rem;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #e9ecef;
+  border-radius: 4px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #007bff;
+}
+.p-progressbar .p-progressbar-label {
+  color: #212529;
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 4px;
+  box-shadow: none;
+  transition: box-shadow 0.15s;
+}
+.p-scrolltop.p-link {
+  background: rgba(0, 0, 0, 0.7);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(0, 0, 0, 0.8);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: #efefef;
+}
+
+.p-skeleton {
+  background-color: #e9ecef;
+  border-radius: 4px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #007bff;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 4px;
+}
+.p-tag.p-tag-success {
+  background-color: #28a745;
+  color: #ffffff;
+}
+.p-tag.p-tag-info {
+  background-color: #17a2b8;
+  color: #ffffff;
+}
+.p-tag.p-tag-warning {
+  background-color: #ffc107;
+  color: #212529;
+}
+.p-tag.p-tag-danger {
+  background-color: #dc3545;
+  color: #ffffff;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1.25rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Vendor extensions to the designer enhanced bootstrap compatibility */
+.p-breadcrumb .p-breadcrumb-chevron {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+.p-breadcrumb .p-breadcrumb-chevron:before {
+  content: "/";
+}
+
+/* Customizations to the designer theme should be defined here */
Index: trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-purple/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/bootstrap4-light-purple/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5667 @@
+:root {
+  --surface-a:#ffffff;
+  --surface-b:#efefef;
+  --surface-c:#e9ecef;
+  --surface-d:#dee2e6;
+  --surface-e:#ffffff;
+  --surface-f:#ffffff;
+  --text-color:#212529;
+  --text-color-secondary:#6c757d;
+  --primary-color:#883cae;
+  --primary-color-text:#ffffff;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #ffffff;
+  --surface-50: #f9fafb;
+  --surface-100: #f8f9fa;
+  --surface-200: #e9ecef;
+  --surface-300: #dee2e6;
+  --surface-400: #ced4da;
+  --surface-500: #adb5bd;
+  --surface-600: #6c757d;
+  --surface-700: #495057;
+  --surface-800: #343a40;
+  --surface-900: #212529;
+  --gray-50: #f9fafb;
+  --gray-100: #f8f9fa;
+  --gray-200: #e9ecef;
+  --gray-300: #dee2e6;
+  --gray-400: #ced4da;
+  --gray-500: #adb5bd;
+  --gray-600: #6c757d;
+  --gray-700: #495057;
+  --gray-800: #343a40;
+  --gray-900: #212529;
+  --content-padding:1.25rem;
+  --inline-spacing:0.5rem;
+  --border-radius:4px;
+  --surface-ground:#efefef;
+  --surface-section:#ffffff;
+  --surface-card:#ffffff;
+  --surface-overlay:#ffffff;
+  --surface-border:#dee2e6;
+  --surface-hover:#e9ecef;
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.15s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.65;
+}
+
+.p-error {
+  color: #dc3545;
+}
+
+.p-text-secondary {
+  color: #6c757d;
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 4px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f3f8ff;
+  --blue-100:#c5dcff;
+  --blue-200:#97c1fe;
+  --blue-300:#69a5fe;
+  --blue-400:#3b8afd;
+  --blue-500:#0d6efd;
+  --blue-600:#0b5ed7;
+  --blue-700:#094db1;
+  --blue-800:#073d8b;
+  --blue-900:#052c65;
+  --green-50:#f4f9f6;
+  --green-100:#c8e2d6;
+  --green-200:#9ccbb5;
+  --green-300:#70b595;
+  --green-400:#459e74;
+  --green-500:#198754;
+  --green-600:#157347;
+  --green-700:#125f3b;
+  --green-800:#0e4a2e;
+  --green-900:#0a3622;
+  --yellow-50:#fffcf3;
+  --yellow-100:#fff0c3;
+  --yellow-200:#ffe494;
+  --yellow-300:#ffd965;
+  --yellow-400:#ffcd36;
+  --yellow-500:#ffc107;
+  --yellow-600:#d9a406;
+  --yellow-700:#b38705;
+  --yellow-800:#8c6a04;
+  --yellow-900:#664d03;
+  --cyan-50:#f3fcfe;
+  --cyan-100:#c5f2fb;
+  --cyan-200:#97e8f9;
+  --cyan-300:#69def6;
+  --cyan-400:#3bd4f3;
+  --cyan-500:#0dcaf0;
+  --cyan-600:#0baccc;
+  --cyan-700:#098da8;
+  --cyan-800:#076f84;
+  --cyan-900:#055160;
+  --pink-50:#fdf5f9;
+  --pink-100:#f5cee1;
+  --pink-200:#eda7ca;
+  --pink-300:#e681b3;
+  --pink-400:#de5a9b;
+  --pink-500:#d63384;
+  --pink-600:#b62b70;
+  --pink-700:#96245c;
+  --pink-800:#761c49;
+  --pink-900:#561435;
+  --indigo-50:#f7f3fe;
+  --indigo-100:#dac6fc;
+  --indigo-200:#bd98f9;
+  --indigo-300:#a06bf7;
+  --indigo-400:#833df4;
+  --indigo-500:#6610f2;
+  --indigo-600:#570ece;
+  --indigo-700:#470ba9;
+  --indigo-800:#380985;
+  --indigo-900:#290661;
+  --teal-50:#f4fcfa;
+  --teal-100:#c9f2e6;
+  --teal-200:#9fe8d2;
+  --teal-300:#75debf;
+  --teal-400:#4ad3ab;
+  --teal-500:#20c997;
+  --teal-600:#1bab80;
+  --teal-700:#168d6a;
+  --teal-800:#126f53;
+  --teal-900:#0d503c;
+  --orange-50:#fff9f3;
+  --orange-100:#ffe0c7;
+  --orange-200:#fec89a;
+  --orange-300:#feaf6d;
+  --orange-400:#fd9741;
+  --orange-500:#fd7e14;
+  --orange-600:#d76b11;
+  --orange-700:#b1580e;
+  --orange-800:#8b450b;
+  --orange-900:#653208;
+  --bluegray-50:#f8f9fb;
+  --bluegray-100:#e0e4ea;
+  --bluegray-200:#c7ced9;
+  --bluegray-300:#aeb9c8;
+  --bluegray-400:#95a3b8;
+  --bluegray-500:#7c8ea7;
+  --bluegray-600:#69798e;
+  --bluegray-700:#576375;
+  --bluegray-800:#444e5c;
+  --bluegray-900:#323943;
+  --purple-50:#f8f6fc;
+  --purple-100:#dcd2f0;
+  --purple-200:#c1aee4;
+  --purple-300:#a68ad9;
+  --purple-400:#8a66cd;
+  --purple-500:#6f42c1;
+  --purple-600:#5e38a4;
+  --purple-700:#4e2e87;
+  --purple-800:#3d246a;
+  --purple-900:#2c1a4d;
+}
+
+.p-autocomplete .p-autocomplete-loader {
+  right: 0.75rem;
+}
+.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
+  right: 3.107rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
+  padding: 0.25rem 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #212529;
+  padding: 0;
+  margin: 0;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #883cae;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
+  margin-left: 0.5rem;
+}
+
+p-autocomplete.ng-dirty.ng-invalid > .p-autocomplete > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-autocomplete-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-autocomplete-panel .p-autocomplete-items:not(.p-autocomplete-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items.p-autocomplete-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+
+p-calendar.ng-dirty.ng-invalid > .p-calendar > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-datepicker {
+  padding: 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #ced4da;
+  border-radius: 4px;
+}
+.p-datepicker:not(.p-datepicker-inline) {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-datepicker:not(.p-datepicker-inline) .p-datepicker-header {
+  background: #efefef;
+}
+.p-datepicker .p-datepicker-header {
+  padding: 0.5rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  margin: 0;
+  border-bottom: 1px solid #dee2e6;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev,
+.p-datepicker .p-datepicker-header .p-datepicker-next {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
+.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-prev:focus,
+.p-datepicker .p-datepicker-header .p-datepicker-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title {
+  line-height: 2rem;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title select:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month {
+  margin-right: 0.5rem;
+}
+.p-datepicker table {
+  font-size: 1rem;
+  margin: 0.5rem 0;
+}
+.p-datepicker table th {
+  padding: 0.5rem;
+}
+.p-datepicker table th > span {
+  width: 2.5rem;
+  height: 2.5rem;
+}
+.p-datepicker table td {
+  padding: 0.5rem;
+}
+.p-datepicker table td > span {
+  width: 2.5rem;
+  height: 2.5rem;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  border: 1px solid transparent;
+}
+.p-datepicker table td > span.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-datepicker table td > span:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-datepicker table td.p-datepicker-today > span {
+  background: #ced4da;
+  color: #212529;
+  border-color: transparent;
+}
+.p-datepicker table td.p-datepicker-today > span.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-datepicker .p-datepicker-buttonbar {
+  padding: 1rem 0;
+  border-top: 1px solid #dee2e6;
+}
+.p-datepicker .p-datepicker-buttonbar .p-button {
+  width: auto;
+}
+.p-datepicker .p-timepicker {
+  border-top: 1px solid #dee2e6;
+  padding: 0.5rem;
+}
+.p-datepicker .p-timepicker button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datepicker .p-timepicker button:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datepicker .p-timepicker button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-datepicker .p-timepicker button:last-child {
+  margin-top: 0.2em;
+}
+.p-datepicker .p-timepicker span {
+  font-size: 1.25rem;
+}
+.p-datepicker .p-timepicker > div {
+  padding: 0 0.5rem;
+}
+.p-datepicker.p-datepicker-timeonly .p-timepicker {
+  border-top: 0 none;
+}
+.p-datepicker .p-monthpicker {
+  margin: 0.5rem 0;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month {
+  padding: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group {
+  border-right: 1px solid #dee2e6;
+  padding-right: 0;
+  padding-left: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child {
+  padding-left: 0;
+}
+.p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child {
+  padding-right: 0;
+  border-right: 0 none;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-highlight):not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+@media screen and (max-width: 769px) {
+  .p-datepicker table th, .p-datepicker table td {
+    padding: 0;
+  }
+}
+.p-cascadeselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-cascadeselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-cascadeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-cascadeselect .p-cascadeselect-label {
+  background: transparent;
+  border: 0 none;
+  padding: 0.5rem 0.75rem;
+}
+.p-cascadeselect .p-cascadeselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-cascadeselect .p-cascadeselect-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-cascadeselect .p-cascadeselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-cascadeselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-cascadeselect-panel .p-cascadeselect-items {
+  padding: 0.5rem 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
+  padding: 0.5rem 1.5rem;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
+  font-size: 0.875rem;
+}
+
+p-cascadeselect.ng-dirty.ng-invalid > .p-cascadeselect {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-cascadeselect {
+  background: #efefef;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-cascadeselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-checkbox {
+  width: 20px;
+  height: 20px;
+}
+.p-checkbox .p-checkbox-box {
+  border: 2px solid #ced4da;
+  background: #ffffff;
+  width: 20px;
+  height: 20px;
+  color: #212529;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-checkbox .p-checkbox-box .p-checkbox-icon {
+  transition-duration: 0.15s;
+  color: #ffffff;
+  font-size: 14px;
+}
+.p-checkbox .p-checkbox-box.p-highlight {
+  border-color: #883cae;
+  background: #883cae;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  border-color: #ced4da;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  border-color: #68329e;
+  background: #68329e;
+  color: #ffffff;
+}
+
+p-checkbox.ng-dirty.ng-invalid > .p-checkbox > .p-checkbox-box {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-checkbox .p-checkbox-box {
+  background-color: #efefef;
+}
+.p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
+  background: #883cae;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover {
+  background: #68329e;
+}
+
+.p-checkbox-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-checkbox .p-checkbox-box {
+  border-color: #ffffff;
+}
+
+.p-chips .p-chips-multiple-container {
+  padding: 0.25rem 0.75rem;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-chips .p-chips-multiple-container:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-chips .p-chips-multiple-container .p-chips-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #883cae;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon {
+  margin-left: 0.5rem;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token {
+  padding: 0.25rem 0;
+}
+.p-chips .p-chips-multiple-container .p-chips-input-token input {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #212529;
+  padding: 0;
+  margin: 0;
+}
+
+p-chips.ng-dirty.ng-invalid > .p-chips > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-colorpicker-preview,
+.p-fluid .p-colorpicker-preview.p-inputtext {
+  width: 2rem;
+  height: 2rem;
+}
+
+.p-colorpicker-panel {
+  background: #212529;
+  border-color: #212529;
+}
+.p-colorpicker-panel .p-colorpicker-color-handle,
+.p-colorpicker-panel .p-colorpicker-hue-handle {
+  border-color: #ffffff;
+}
+
+.p-colorpicker-overlay-panel {
+  box-shadow: none;
+}
+
+.p-dropdown {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-dropdown:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-dropdown:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-dropdown.p-dropdown-clearable .p-dropdown-label {
+  padding-right: 1.75rem;
+}
+.p-dropdown .p-dropdown-label {
+  background: transparent;
+  border: 0 none;
+}
+.p-dropdown .p-dropdown-label.p-placeholder {
+  color: #6c757d;
+}
+.p-dropdown .p-dropdown-label:enabled:focus {
+  outline: 0 none;
+  box-shadow: none;
+}
+.p-dropdown .p-dropdown-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dropdown .p-dropdown-clear-icon {
+  color: #495057;
+  right: 2.357rem;
+}
+
+.p-dropdown-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-dropdown-panel .p-dropdown-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
+  padding-right: 1.75rem;
+  margin-right: -1.75rem;
+}
+.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-dropdown-panel .p-dropdown-items:not(.p-dropdown-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items.p-dropdown-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+
+p-dropdown.ng-dirty.ng-invalid > .p-dropdown {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-dropdown {
+  background: #efefef;
+}
+.p-input-filled .p-dropdown:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-dropdown:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-editor-container .p-editor-toolbar {
+  background: #efefef;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-editor-container .p-editor-toolbar.ql-snow {
+  border: 1px solid #dee2e6;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke {
+  stroke: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-fill {
+  fill: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label {
+  border: 0 none;
+  color: #6c757d;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+  padding: 0.5rem 0;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item {
+  color: #212529;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item {
+  padding: 0.5rem 1.5rem;
+}
+.p-editor-container .p-editor-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .p-editor-content.ql-snow {
+  border: 1px solid #dee2e6;
+}
+.p-editor-container .p-editor-content .ql-editor {
+  background: #ffffff;
+  color: #495057;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover,
+.p-editor-container .ql-snow.ql-toolbar button:focus {
+  color: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke {
+  stroke: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill {
+  fill: #212529;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected {
+  color: #883cae;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke {
+  stroke: #883cae;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill {
+  fill: #883cae;
+}
+.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label,
+.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label {
+  color: #883cae;
+}
+
+.p-inputgroup-addon {
+  background: #e9ecef;
+  color: #495057;
+  border-top: 1px solid #ced4da;
+  border-left: 1px solid #ced4da;
+  border-bottom: 1px solid #ced4da;
+  padding: 0.5rem 0.75rem;
+  min-width: 2.357rem;
+}
+.p-inputgroup-addon:last-child {
+  border-right: 1px solid #ced4da;
+}
+
+.p-inputgroup > .p-component,
+.p-inputgroup > .p-element,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext,
+.p-inputgroup > .p-float-label > .p-component {
+  border-radius: 0;
+  margin: 0;
+}
+.p-inputgroup > .p-component + .p-inputgroup-addon,
+.p-inputgroup > .p-element + .p-inputgroup-addon,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext + .p-inputgroup-addon,
+.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon {
+  border-left: 0 none;
+}
+.p-inputgroup > .p-component:focus,
+.p-inputgroup > .p-element:focus,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus,
+.p-inputgroup > .p-float-label > .p-component:focus {
+  z-index: 1;
+}
+.p-inputgroup > .p-component:focus ~ label,
+.p-inputgroup > .p-element:focus ~ label,
+.p-inputgroup > .p-inputwrapper > .p-component > .p-inputtext:focus ~ label,
+.p-inputgroup > .p-float-label > .p-component:focus ~ label {
+  z-index: 1;
+}
+
+.p-inputgroup-addon:first-child,
+.p-inputgroup button:first-child,
+.p-inputgroup input:first-child,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component,
+.p-inputgroup > .p-inputwrapper:first-child > .p-component > .p-inputtext {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:first-child input {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-inputgroup-addon:last-child,
+.p-inputgroup button:last-child,
+.p-inputgroup input:last-child,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component,
+.p-inputgroup > .p-inputwrapper:last-child > .p-component > .p-inputtext {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputgroup .p-float-label:last-child input {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-fluid .p-inputgroup .p-button {
+  width: auto;
+}
+.p-fluid .p-inputgroup .p-button.p-button-icon-only {
+  width: 2.357rem;
+}
+
+p-inputmask.ng-dirty.ng-invalid > .p-inputtext {
+  border-color: #dc3545;
+}
+
+p-inputnumber.ng-dirty.ng-invalid > .p-inputnumber > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-inputswitch {
+  width: 3rem;
+  height: 1.75rem;
+}
+.p-inputswitch .p-inputswitch-slider {
+  background: #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-inputswitch .p-inputswitch-slider:before {
+  background: #ffffff;
+  width: 1.25rem;
+  height: 1.25rem;
+  left: 0.25rem;
+  margin-top: -0.625rem;
+  border-radius: 4px;
+  transition-duration: 0.15s;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  transform: translateX(1.25rem);
+}
+.p-inputswitch.p-focus .p-inputswitch-slider {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #ced4da;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider {
+  background: #883cae;
+}
+.p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before {
+  background: #ffffff;
+}
+.p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
+  background: #883cae;
+}
+
+p-inputswitch.ng-dirty.ng-invalid > .p-inputswitch {
+  border-color: #dc3545;
+}
+
+.p-inputtext {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  color: #495057;
+  background: #ffffff;
+  padding: 0.5rem 0.75rem;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  appearance: none;
+  border-radius: 4px;
+}
+.p-inputtext:enabled:hover {
+  border-color: #ced4da;
+}
+.p-inputtext:enabled:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-inputtext.ng-dirty.ng-invalid {
+  border-color: #dc3545;
+}
+.p-inputtext.p-inputtext-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-inputtext.p-inputtext-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-float-label > label {
+  left: 0.75rem;
+  color: #6c757d;
+  transition-duration: 0.15s;
+}
+
+.p-float-label > .ng-invalid.ng-dirty + label {
+  color: #dc3545;
+}
+
+.p-input-icon-left > i:first-of-type {
+  left: 0.75rem;
+  color: #495057;
+}
+
+.p-input-icon-left > .p-inputtext {
+  padding-left: 2.5rem;
+}
+
+.p-input-icon-left.p-float-label > label {
+  left: 2.5rem;
+}
+
+.p-input-icon-right > i:last-of-type {
+  right: 0.75rem;
+  color: #495057;
+}
+
+.p-input-icon-right > .p-inputtext {
+  padding-right: 2.5rem;
+}
+
+::-webkit-input-placeholder {
+  color: #6c757d;
+}
+
+:-moz-placeholder {
+  color: #6c757d;
+}
+
+::-moz-placeholder {
+  color: #6c757d;
+}
+
+:-ms-input-placeholder {
+  color: #6c757d;
+}
+
+.p-input-filled .p-inputtext {
+  background-color: #efefef;
+}
+.p-input-filled .p-inputtext:enabled:hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-inputtext:enabled:focus {
+  background-color: #efefef;
+}
+
+.p-inputtext-sm .p-inputtext {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+
+.p-inputtext-lg .p-inputtext {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+
+.p-listbox {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #ced4da;
+  border-radius: 4px;
+}
+.p-listbox .p-listbox-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-listbox .p-listbox-header .p-listbox-filter {
+  padding-right: 1.75rem;
+}
+.p-listbox .p-listbox-header .p-listbox-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-listbox .p-listbox-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list {
+  padding: 0.5rem 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-listbox .p-listbox-list .p-listbox-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-listbox .p-listbox-list .p-listbox-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-listbox .p-listbox-list .p-listbox-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-listbox .p-listbox-list .p-listbox-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+.p-listbox .p-listbox-list .p-listbox-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+.p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+
+p-listbox.ng-dirty.ng-invalid > .p-listbox {
+  border-color: #dc3545;
+}
+
+.p-multiselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-multiselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-multiselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-multiselect .p-multiselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-multiselect .p-multiselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #883cae;
+  color: #ffffff;
+  border-radius: 4px;
+}
+.p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon {
+  margin-left: 0.5rem;
+}
+.p-multiselect .p-multiselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-inputwrapper-filled .p-multiselect.p-multiselect-chip .p-multiselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-multiselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-multiselect-panel .p-multiselect-header {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
+  padding-right: 1.75rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-multiselect-panel .p-multiselect-header .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close {
+  margin-left: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-multiselect-panel .p-multiselect-items:not(.p-multiselect-virtualscroll) {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items.p-multiselect-virtualscroll .cdk-virtual-scroll-content-wrapper {
+  padding: 0.5rem 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-item-group {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+}
+.p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+
+p-multiselect.ng-dirty.ng-invalid > .p-multiselect {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-multiselect {
+  background: #efefef;
+}
+.p-input-filled .p-multiselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-multiselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+p-password.ng-invalid.ng-dirty > .p-password > .p-inputtext {
+  border-color: #dc3545;
+}
+
+.p-password-panel {
+  padding: 1.25rem;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-password-panel .p-password-meter {
+  margin-bottom: 0.5rem;
+  background: #e9ecef;
+}
+.p-password-panel .p-password-meter .p-password-strength.weak {
+  background: #dc3545;
+}
+.p-password-panel .p-password-meter .p-password-strength.medium {
+  background: #ffc107;
+}
+.p-password-panel .p-password-meter .p-password-strength.strong {
+  background: #28a745;
+}
+
+.p-radiobutton {
+  width: 20px;
+  height: 20px;
+}
+.p-radiobutton .p-radiobutton-box {
+  border: 2px solid #ced4da;
+  background: #ffffff;
+  width: 20px;
+  height: 20px;
+  color: #212529;
+  border-radius: 50%;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover {
+  border-color: #ced4da;
+}
+.p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-radiobutton .p-radiobutton-box .p-radiobutton-icon {
+  width: 12px;
+  height: 12px;
+  transition-duration: 0.15s;
+  background-color: #ffffff;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight {
+  border-color: #883cae;
+  background: #883cae;
+}
+.p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  border-color: #68329e;
+  background: #68329e;
+  color: #ffffff;
+}
+
+p-radiobutton.ng-dirty.ng-invalid > .p-radiobutton > .p-radiobutton-box {
+  border-color: #dc3545;
+}
+
+.p-input-filled .p-radiobutton .p-radiobutton-box {
+  background-color: #efefef;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
+  background: #883cae;
+}
+.p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover {
+  background: #68329e;
+}
+
+.p-radiobutton-label {
+  margin-left: 0.5rem;
+}
+
+.p-highlight .p-radiobutton .p-radiobutton-box {
+  border-color: #ffffff;
+}
+
+.p-rating .p-rating-icon {
+  color: #495057;
+  margin-left: 0.5rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  font-size: 1.143rem;
+}
+.p-rating .p-rating-icon.p-rating-cancel {
+  color: #dc3545;
+}
+.p-rating .p-rating-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-rating .p-rating-icon:first-child {
+  margin-left: 0;
+}
+.p-rating .p-rating-icon.pi-star-fill {
+  color: #883cae;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon:hover {
+  color: #883cae;
+}
+.p-rating:not(.p-disabled):not(.p-readonly) .p-rating-icon.p-rating-cancel:hover {
+  color: #dc3545;
+}
+
+.p-highlight .p-rating .p-rating-icon {
+  color: #ffffff;
+}
+
+.p-selectbutton .p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-selectbutton .p-button .p-button-icon-left,
+.p-selectbutton .p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-left,
+.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-selectbutton.ng-dirty.ng-invalid > .p-selectbutton > .p-button {
+  border-color: #dc3545;
+}
+
+.p-slider {
+  background: #e9ecef;
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-slider.p-slider-horizontal {
+  height: 0.286rem;
+}
+.p-slider.p-slider-horizontal .p-slider-handle {
+  margin-top: -0.5715rem;
+  margin-left: -0.5715rem;
+}
+.p-slider.p-slider-vertical {
+  width: 0.286rem;
+}
+.p-slider.p-slider-vertical .p-slider-handle {
+  margin-left: -0.5715rem;
+  margin-bottom: -0.5715rem;
+}
+.p-slider .p-slider-handle {
+  height: 1.143rem;
+  width: 1.143rem;
+  background: #883cae;
+  border: 2px solid #883cae;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-slider .p-slider-handle:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-slider .p-slider-range {
+  background: #883cae;
+}
+.p-slider:not(.p-disabled) .p-slider-handle:hover {
+  background: #7a38a7;
+  border-color: #7a38a7;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, left 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-horizontal .p-slider-range {
+  transition: width 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-handle {
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s, bottom 0.15s;
+}
+.p-slider.p-slider-animate.p-slider-vertical .p-slider-range {
+  transition: height 0.15s;
+}
+
+.p-togglebutton.p-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-togglebutton.p-button .p-button-icon-left,
+.p-togglebutton.p-button .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left,
+.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight .p-button-icon-right {
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-left,
+.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right {
+  color: #ffffff;
+}
+
+p-togglebutton.ng-dirty.ng-invalid > .p-togglebutton.p-button {
+  border-color: #dc3545;
+}
+
+.p-treeselect {
+  background: #ffffff;
+  border: 1px solid #ced4da;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-treeselect:not(.p-disabled):hover {
+  border-color: #ced4da;
+}
+.p-treeselect:not(.p-disabled).p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: #883cae;
+}
+.p-treeselect .p-treeselect-label {
+  padding: 0.5rem 0.75rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-treeselect .p-treeselect-label.p-placeholder {
+  color: #6c757d;
+}
+.p-treeselect.p-treeselect-chip .p-treeselect-token {
+  padding: 0.25rem 0.75rem;
+  margin-right: 0.5rem;
+  background: #dee2e6;
+  color: #212529;
+  border-radius: 16px;
+}
+.p-treeselect .p-treeselect-trigger {
+  background: transparent;
+  color: #495057;
+  width: 2.357rem;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+p-treeselect.ng-invalid.ng-dirty > .p-treeselect {
+  border-color: #dc3545;
+}
+
+.p-inputwrapper-filled .p-treeselect.p-treeselect-chip .p-treeselect-label {
+  padding: 0.25rem 0.75rem;
+}
+
+.p-treeselect-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
+  border: 0 none;
+}
+.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+  background: transparent;
+}
+
+.p-input-filled .p-treeselect {
+  background: #efefef;
+}
+.p-input-filled .p-treeselect:not(.p-disabled):hover {
+  background-color: #efefef;
+}
+.p-input-filled .p-treeselect:not(.p-disabled).p-focus {
+  background-color: #efefef;
+}
+
+.p-button {
+  color: #ffffff;
+  background: #883cae;
+  border: 1px solid #883cae;
+  padding: 0.5rem 0.75rem;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-button:enabled:hover {
+  background: #7a38a7;
+  color: #ffffff;
+  border-color: #7a38a7;
+}
+.p-button:enabled:active {
+  background: #68329e;
+  color: #ffffff;
+  border-color: #68329e;
+}
+.p-button.p-button-outlined {
+  background-color: transparent;
+  color: #883cae;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:hover {
+  background: rgba(136, 60, 174, 0.04);
+  color: #883cae;
+  border: 1px solid;
+}
+.p-button.p-button-outlined:enabled:active {
+  background: rgba(136, 60, 174, 0.16);
+  color: #883cae;
+  border: 1px solid;
+}
+.p-button.p-button-outlined.p-button-plain {
+  color: #6c757d;
+  border-color: #6c757d;
+}
+.p-button.p-button-outlined.p-button-plain:enabled:hover {
+  background: #e9ecef;
+  color: #6c757d;
+}
+.p-button.p-button-outlined.p-button-plain:enabled:active {
+  background: #dee2e6;
+  color: #6c757d;
+}
+.p-button.p-button-text {
+  background-color: transparent;
+  color: #883cae;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:hover {
+  background: rgba(136, 60, 174, 0.04);
+  color: #883cae;
+  border-color: transparent;
+}
+.p-button.p-button-text:enabled:active {
+  background: rgba(136, 60, 174, 0.16);
+  color: #883cae;
+  border-color: transparent;
+}
+.p-button.p-button-text.p-button-plain {
+  color: #6c757d;
+}
+.p-button.p-button-text.p-button-plain:enabled:hover {
+  background: #e9ecef;
+  color: #6c757d;
+}
+.p-button.p-button-text.p-button-plain:enabled:active {
+  background: #dee2e6;
+  color: #6c757d;
+}
+.p-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-button .p-button-icon-left {
+  margin-right: 0.5rem;
+}
+.p-button .p-button-icon-right {
+  margin-left: 0.5rem;
+}
+.p-button .p-button-icon-bottom {
+  margin-top: 0.5rem;
+}
+.p-button .p-button-icon-top {
+  margin-bottom: 0.5rem;
+}
+.p-button .p-badge {
+  margin-left: 0.5rem;
+  min-width: 1rem;
+  height: 1rem;
+  line-height: 1rem;
+  color: #883cae;
+  background-color: #ffffff;
+}
+.p-button.p-button-raised {
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+.p-button.p-button-rounded {
+  border-radius: 2rem;
+}
+.p-button.p-button-icon-only {
+  width: 2.357rem;
+  padding: 0.5rem 0;
+}
+.p-button.p-button-icon-only .p-button-icon-left,
+.p-button.p-button-icon-only .p-button-icon-right {
+  margin: 0;
+}
+.p-button.p-button-icon-only.p-button-rounded {
+  border-radius: 50%;
+  height: 2.357rem;
+}
+.p-button.p-button-sm {
+  font-size: 0.875rem;
+  padding: 0.4375rem 0.65625rem;
+}
+.p-button.p-button-sm .p-button-icon {
+  font-size: 0.875rem;
+}
+.p-button.p-button-lg {
+  font-size: 1.25rem;
+  padding: 0.625rem 0.9375rem;
+}
+.p-button.p-button-lg .p-button-icon {
+  font-size: 1.25rem;
+}
+.p-button.p-button-loading-label-only .p-button-label {
+  margin-left: 0.5rem;
+}
+.p-button.p-button-loading-label-only .p-button-loading-icon {
+  margin-right: 0;
+}
+
+.p-fluid .p-button {
+  width: 100%;
+}
+.p-fluid .p-button-icon-only {
+  width: 2.357rem;
+}
+.p-fluid .p-buttonset {
+  display: flex;
+}
+.p-fluid .p-buttonset .p-button {
+  flex: 1;
+}
+
+.p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button {
+  color: #ffffff;
+  background: #6c757d;
+  border: 1px solid #6c757d;
+}
+.p-button.p-button-secondary:enabled:hover, .p-buttonset.p-button-secondary > .p-button:enabled:hover, .p-splitbutton.p-button-secondary > .p-button:enabled:hover {
+  background: #5a6268;
+  color: #ffffff;
+  border-color: #5a6268;
+}
+.p-button.p-button-secondary:enabled:focus, .p-buttonset.p-button-secondary > .p-button:enabled:focus, .p-splitbutton.p-button-secondary > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
+}
+.p-button.p-button-secondary:enabled:active, .p-buttonset.p-button-secondary > .p-button:enabled:active, .p-splitbutton.p-button-secondary > .p-button:enabled:active {
+  background: #545b62;
+  color: #ffffff;
+  border-color: #4e555b;
+}
+.p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-outlined:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  color: #6c757d;
+  border: 1px solid;
+}
+.p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6c757d;
+  border-color: transparent;
+}
+.p-button.p-button-secondary.p-button-text:enabled:hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:hover {
+  background: rgba(108, 117, 125, 0.04);
+  border-color: transparent;
+  color: #6c757d;
+}
+.p-button.p-button-secondary.p-button-text:enabled:active, .p-buttonset.p-button-secondary > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:enabled:active {
+  background: rgba(108, 117, 125, 0.16);
+  border-color: transparent;
+  color: #6c757d;
+}
+
+.p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button {
+  color: #ffffff;
+  background: #17a2b8;
+  border: 1px solid #17a2b8;
+}
+.p-button.p-button-info:enabled:hover, .p-buttonset.p-button-info > .p-button:enabled:hover, .p-splitbutton.p-button-info > .p-button:enabled:hover {
+  background: #138496;
+  color: #ffffff;
+  border-color: #117a8b;
+}
+.p-button.p-button-info:enabled:focus, .p-buttonset.p-button-info > .p-button:enabled:focus, .p-splitbutton.p-button-info > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
+}
+.p-button.p-button-info:enabled:active, .p-buttonset.p-button-info > .p-button:enabled:active, .p-splitbutton.p-button-info > .p-button:enabled:active {
+  background: #138496;
+  color: #ffffff;
+  border-color: #117a8b;
+}
+.p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(23, 162, 184, 0.04);
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-outlined:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:enabled:active {
+  background: rgba(23, 162, 184, 0.16);
+  color: #17a2b8;
+  border: 1px solid;
+}
+.p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text {
+  background-color: transparent;
+  color: #17a2b8;
+  border-color: transparent;
+}
+.p-button.p-button-info.p-button-text:enabled:hover, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:hover {
+  background: rgba(23, 162, 184, 0.04);
+  border-color: transparent;
+  color: #17a2b8;
+}
+.p-button.p-button-info.p-button-text:enabled:active, .p-buttonset.p-button-info > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-info > .p-button.p-button-text:enabled:active {
+  background: rgba(23, 162, 184, 0.16);
+  border-color: transparent;
+  color: #17a2b8;
+}
+
+.p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button {
+  color: #ffffff;
+  background: #28a745;
+  border: 1px solid #28a745;
+}
+.p-button.p-button-success:enabled:hover, .p-buttonset.p-button-success > .p-button:enabled:hover, .p-splitbutton.p-button-success > .p-button:enabled:hover {
+  background: #218838;
+  color: #ffffff;
+  border-color: #1e7e34;
+}
+.p-button.p-button-success:enabled:focus, .p-buttonset.p-button-success > .p-button:enabled:focus, .p-splitbutton.p-button-success > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
+}
+.p-button.p-button-success:enabled:active, .p-buttonset.p-button-success > .p-button:enabled:active, .p-splitbutton.p-button-success > .p-button:enabled:active {
+  background: #1e7e34;
+  color: #ffffff;
+  border-color: #1c7430;
+}
+.p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(40, 167, 69, 0.04);
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-outlined:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:enabled:active {
+  background: rgba(40, 167, 69, 0.16);
+  color: #28a745;
+  border: 1px solid;
+}
+.p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text {
+  background-color: transparent;
+  color: #28a745;
+  border-color: transparent;
+}
+.p-button.p-button-success.p-button-text:enabled:hover, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:hover {
+  background: rgba(40, 167, 69, 0.04);
+  border-color: transparent;
+  color: #28a745;
+}
+.p-button.p-button-success.p-button-text:enabled:active, .p-buttonset.p-button-success > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-success > .p-button.p-button-text:enabled:active {
+  background: rgba(40, 167, 69, 0.16);
+  border-color: transparent;
+  color: #28a745;
+}
+
+.p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button {
+  color: #212529;
+  background: #ffc107;
+  border: 1px solid #ffc107;
+}
+.p-button.p-button-warning:enabled:hover, .p-buttonset.p-button-warning > .p-button:enabled:hover, .p-splitbutton.p-button-warning > .p-button:enabled:hover {
+  background: #e0a800;
+  color: #212529;
+  border-color: #d39e00;
+}
+.p-button.p-button-warning:enabled:focus, .p-buttonset.p-button-warning > .p-button:enabled:focus, .p-splitbutton.p-button-warning > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
+}
+.p-button.p-button-warning:enabled:active, .p-buttonset.p-button-warning > .p-button:enabled:active, .p-splitbutton.p-button-warning > .p-button:enabled:active {
+  background: #d39e00;
+  color: #212529;
+  border-color: #c69500;
+}
+.p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(255, 193, 7, 0.04);
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-outlined:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:enabled:active {
+  background: rgba(255, 193, 7, 0.16);
+  color: #ffc107;
+  border: 1px solid;
+}
+.p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text {
+  background-color: transparent;
+  color: #ffc107;
+  border-color: transparent;
+}
+.p-button.p-button-warning.p-button-text:enabled:hover, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:hover {
+  background: rgba(255, 193, 7, 0.04);
+  border-color: transparent;
+  color: #ffc107;
+}
+.p-button.p-button-warning.p-button-text:enabled:active, .p-buttonset.p-button-warning > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-warning > .p-button.p-button-text:enabled:active {
+  background: rgba(255, 193, 7, 0.16);
+  border-color: transparent;
+  color: #ffc107;
+}
+
+.p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button {
+  color: #ffffff;
+  background: #6f42c1;
+  border: 1px solid #6f42c1;
+}
+.p-button.p-button-help:enabled:hover, .p-buttonset.p-button-help > .p-button:enabled:hover, .p-splitbutton.p-button-help > .p-button:enabled:hover {
+  background: #633bad;
+  color: #ffffff;
+  border-color: #58349a;
+}
+.p-button.p-button-help:enabled:focus, .p-buttonset.p-button-help > .p-button:enabled:focus, .p-splitbutton.p-button-help > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem #d3c6ec;
+}
+.p-button.p-button-help:enabled:active, .p-buttonset.p-button-help > .p-button:enabled:active, .p-splitbutton.p-button-help > .p-button:enabled:active {
+  background: #58349a;
+  color: #ffffff;
+  border-color: #4d2e87;
+}
+.p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(111, 66, 193, 0.04);
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-outlined:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:enabled:active {
+  background: rgba(111, 66, 193, 0.16);
+  color: #6f42c1;
+  border: 1px solid;
+}
+.p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text {
+  background-color: transparent;
+  color: #6f42c1;
+  border-color: transparent;
+}
+.p-button.p-button-help.p-button-text:enabled:hover, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:hover {
+  background: rgba(111, 66, 193, 0.04);
+  border-color: transparent;
+  color: #6f42c1;
+}
+.p-button.p-button-help.p-button-text:enabled:active, .p-buttonset.p-button-help > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-help > .p-button.p-button-text:enabled:active {
+  background: rgba(111, 66, 193, 0.16);
+  border-color: transparent;
+  color: #6f42c1;
+}
+
+.p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button {
+  color: #ffffff;
+  background: #dc3545;
+  border: 1px solid #dc3545;
+}
+.p-button.p-button-danger:enabled:hover, .p-buttonset.p-button-danger > .p-button:enabled:hover, .p-splitbutton.p-button-danger > .p-button:enabled:hover {
+  background: #c82333;
+  color: #ffffff;
+  border-color: #bd2130;
+}
+.p-button.p-button-danger:enabled:focus, .p-buttonset.p-button-danger > .p-button:enabled:focus, .p-splitbutton.p-button-danger > .p-button:enabled:focus {
+  box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
+}
+.p-button.p-button-danger:enabled:active, .p-buttonset.p-button-danger > .p-button:enabled:active, .p-splitbutton.p-button-danger > .p-button:enabled:active {
+  background: #bd2130;
+  color: #ffffff;
+  border-color: #b21f2d;
+}
+.p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined {
+  background-color: transparent;
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:hover {
+  background: rgba(220, 53, 69, 0.04);
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-outlined:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:enabled:active {
+  background: rgba(220, 53, 69, 0.16);
+  color: #dc3545;
+  border: 1px solid;
+}
+.p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text {
+  background-color: transparent;
+  color: #dc3545;
+  border-color: transparent;
+}
+.p-button.p-button-danger.p-button-text:enabled:hover, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:hover {
+  background: rgba(220, 53, 69, 0.04);
+  border-color: transparent;
+  color: #dc3545;
+}
+.p-button.p-button-danger.p-button-text:enabled:active, .p-buttonset.p-button-danger > .p-button.p-button-text:enabled:active, .p-splitbutton.p-button-danger > .p-button.p-button-text:enabled:active {
+  background: rgba(220, 53, 69, 0.16);
+  border-color: transparent;
+  color: #dc3545;
+}
+
+.p-button.p-button-link {
+  color: #883cae;
+  background: transparent;
+  border: transparent;
+}
+.p-button.p-button-link:enabled:hover {
+  background: transparent;
+  color: #7a38a7;
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:hover .p-button-label {
+  text-decoration: underline;
+}
+.p-button.p-button-link:enabled:focus {
+  background: transparent;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  border-color: transparent;
+}
+.p-button.p-button-link:enabled:active {
+  background: transparent;
+  color: #883cae;
+  border-color: transparent;
+}
+
+.p-speeddial-button.p-button.p-button-icon-only {
+  width: 4rem;
+  height: 4rem;
+}
+.p-speeddial-button.p-button.p-button-icon-only .p-button-icon {
+  font-size: 1.3rem;
+}
+
+.p-speeddial-action {
+  width: 3rem;
+  height: 3rem;
+  background: #495057;
+  color: #fff;
+}
+.p-speeddial-action:hover {
+  background: #343a40;
+  color: #fff;
+}
+
+.p-speeddial-direction-up .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-up .p-speeddial-item:first-child {
+  margin-bottom: 0.5rem;
+}
+
+.p-speeddial-direction-down .p-speeddial-item {
+  margin: 0.25rem 0;
+}
+.p-speeddial-direction-down .p-speeddial-item:first-child {
+  margin-top: 0.5rem;
+}
+
+.p-speeddial-direction-left .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-left .p-speeddial-item:first-child {
+  margin-right: 0.5rem;
+}
+
+.p-speeddial-direction-right .p-speeddial-item {
+  margin: 0 0.25rem;
+}
+.p-speeddial-direction-right .p-speeddial-item:first-child {
+  margin-left: 0.5rem;
+}
+
+.p-speeddial-circle .p-speeddial-item,
+.p-speeddial-semi-circle .p-speeddial-item,
+.p-speeddial-quarter-circle .p-speeddial-item {
+  margin: 0;
+}
+.p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child,
+.p-speeddial-semi-circle .p-speeddial-item:first-child,
+.p-speeddial-semi-circle .p-speeddial-item:last-child,
+.p-speeddial-quarter-circle .p-speeddial-item:first-child,
+.p-speeddial-quarter-circle .p-speeddial-item:last-child {
+  margin: 0;
+}
+
+.p-speeddial-mask {
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+.p-carousel .p-carousel-content .p-carousel-prev,
+.p-carousel .p-carousel-content .p-carousel-next {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin: 0.5rem;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:enabled:hover,
+.p-carousel .p-carousel-content .p-carousel-next:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-carousel .p-carousel-content .p-carousel-prev:focus,
+.p-carousel .p-carousel-content .p-carousel-next:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-carousel .p-carousel-indicators {
+  padding: 1rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator {
+  margin-right: 0.5rem;
+  margin-bottom: 0.5rem;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button {
+  background-color: #e9ecef;
+  width: 2rem;
+  height: 0.5rem;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator button:hover {
+  background: #dee2e6;
+}
+.p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button {
+  background: #883cae;
+  color: #ffffff;
+}
+
+.p-datatable .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-datatable .p-datatable-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-datatable .p-datatable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+}
+.p-datatable .p-sortable-column .p-sortable-column-icon {
+  color: #6c757d;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #ffffff;
+  background: #883cae;
+  margin-left: 0.5rem;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: #6c757d;
+}
+.p-datatable .p-sortable-column.p-highlight {
+  background: #ffffff;
+  color: #883cae;
+}
+.p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #883cae;
+}
+.p-datatable .p-sortable-column.p-highlight:hover {
+  background: #e9ecef;
+  color: #883cae;
+}
+.p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon {
+  color: #883cae;
+}
+.p-datatable .p-sortable-column:focus {
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+  outline: 0 none;
+}
+.p-datatable .p-datatable-tbody > tr {
+  background: #ffffff;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  outline-color: rgba(136, 60, 174, 0.5);
+}
+.p-datatable .p-datatable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus,
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save {
+  margin-right: 0.5rem;
+}
+.p-datatable .p-datatable-tbody > tr.p-highlight {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td {
+  box-shadow: inset 0 2px 0 0 #883cae;
+}
+.p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td {
+  box-shadow: inset 0 -2px 0 0 #883cae;
+}
+.p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-datatable .p-column-resizer-helper {
+  background: #883cae;
+}
+.p-datatable .p-datatable-scrollable-header,
+.p-datatable .p-datatable-scrollable-footer {
+  background: #efefef;
+}
+.p-datatable .p-datatable-loading-icon {
+  font-size: 2rem;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-top {
+  border-width: 0 1px 0 1px;
+}
+.p-datatable.p-datatable-gridlines .p-paginator-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th {
+  border-width: 1px 1px 2px 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) {
+  background: rgba(0, 0, 0, 0.05);
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler {
+  color: #ffffff;
+}
+.p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight .p-row-toggler:hover {
+  color: #ffffff;
+}
+.p-datatable.p-datatable-sm .p-datatable-header {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-sm .p-datatable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-datatable.p-datatable-lg .p-datatable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-dataview .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-dataview .p-dataview-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-dataview .p-dataview-content {
+  background: #ffffff;
+  color: #212529;
+  border: 0 none;
+  padding: 0;
+}
+.p-dataview.p-dataview-list .p-dataview-content > .p-grid > div {
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+}
+.p-dataview .p-dataview-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.p-dataview .p-dataview-loading-icon {
+  font-size: 2rem;
+}
+.p-dataview .p-dataview-emptymessage {
+  padding: 1.25rem;
+}
+
+.p-column-filter-row .p-column-filter-menu-button,
+.p-column-filter-row .p-column-filter-clear-button {
+  margin-left: 0.5rem;
+}
+
+.p-column-filter-menu-button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-column-filter-menu-button:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
+  background: transparent;
+  color: #495057;
+}
+.p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-column-filter-menu-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-column-filter-clear-button {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-column-filter-clear-button:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-column-filter-clear-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-column-filter-overlay {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  box-shadow: none;
+  min-width: 12.5rem;
+}
+.p-column-filter-overlay .p-column-filter-row-items {
+  padding: 0.5rem 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
+  margin: 0;
+  padding: 0.5rem 1.5rem;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover {
+  color: #212529;
+  background: #e9ecef;
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+
+.p-column-filter-overlay-menu .p-column-filter-operator {
+  padding: 0.75rem 1.5rem;
+  border-bottom: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  margin: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint {
+  padding: 1.25rem;
+  border-bottom: 1px solid #dee2e6;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
+  margin-bottom: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
+  margin-top: 0.5rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
+  border-bottom: 0 none;
+}
+.p-column-filter-overlay-menu .p-column-filter-add-rule {
+  padding: 0.5rem 1.25rem;
+}
+.p-column-filter-overlay-menu .p-column-filter-buttonbar {
+  padding: 1.25rem;
+}
+
+.fc {
+  /* FullCalendar 4 */
+  /* FullCalendar 5 */
+}
+.fc.fc-unthemed .fc-view-container th {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container td.fc-widget-content {
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #212529;
+}
+.fc.fc-unthemed .fc-view-container td.fc-head-container {
+  border: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-view-container .fc-row {
+  border-right: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-view-container .fc-event {
+  background: #7a38a7;
+  border: 1px solid #7a38a7;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-view-container .fc-divider {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #883cae;
+  border: 1px solid #883cae;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:hover {
+  background: #7a38a7;
+  color: #ffffff;
+  border-color: #7a38a7;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active {
+  background: #68329e;
+  color: #ffffff;
+  border-color: #68329e;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-unthemed .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button.fc-dayGridMonth-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridWeek-button:focus, .fc.fc-unthemed .fc-toolbar .fc-button.fc-timeGridDay-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  z-index: 1;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-unthemed .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-scrollgrid {
+  border-color: #dee2e6;
+}
+.fc.fc-theme-standard .fc-view-harness th {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness td {
+  color: #212529;
+  border-color: #dee2e6;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-view {
+  background: #ffffff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover {
+  background: none;
+  border: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header {
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  background: #efefef;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close {
+  opacity: 1;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  overflow: hidden;
+  font-family: "PrimeIcons" !important;
+  font-size: 1rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:before {
+  content: "\e90b";
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-header .fc-popover-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.fc.fc-theme-standard .fc-view-harness .fc-popover .fc-popover-body {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0 none;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event {
+  color: #ffffff;
+  background: #7a38a7;
+  border-color: #7a38a7;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-block-event .fc-event-main {
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event .fc-daygrid-event-dot {
+  background: #7a38a7;
+  border-color: #7a38a7;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-event.fc-daygrid-dot-event:hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-view-harness .fc-cell-shaded {
+  background: #efefef;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button {
+  color: #ffffff;
+  background: #883cae;
+  border: 1px solid #883cae;
+  font-size: 1rem;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+  border-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:hover {
+  background: #7a38a7;
+  color: #ffffff;
+  border-color: #7a38a7;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active {
+  background: #68329e;
+  color: #ffffff;
+  border-color: #68329e;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:enabled:active:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:disabled {
+  opacity: 0.65;
+  color: #ffffff;
+  background: #883cae;
+  border: 1px solid #883cae;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-left:before {
+  content: "\e900";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right {
+  font-family: "PrimeIcons" !important;
+  text-indent: 0;
+  font-size: 1rem;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button .fc-icon-chevron-right:before {
+  content: "\e901";
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button {
+  background: #6c757d;
+  border: 1px solid #6c757d;
+  color: #ffffff;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:hover {
+  background: #5a6268;
+  border-color: #545b62;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button.fc-button-active:hover, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button.fc-button-active:hover {
+  background: #545b62;
+  border-color: #4e555b;
+  color: #ffffff;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button.fc-dayGridMonth-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridWeek-button:not(:disabled):focus, .fc.fc-theme-standard .fc-toolbar .fc-button.fc-timeGridDay-button:not(:disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  z-index: 1;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button {
+  border-radius: 0;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:first-child {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.fc.fc-theme-standard .fc-toolbar .fc-button-group .fc-button:last-child {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.fc.fc-theme-standard a {
+  color: #212529;
+}
+.fc.fc-theme-standard .fc-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+
+.p-orderlist .p-orderlist-controls {
+  padding: 1.25rem;
+}
+.p-orderlist .p-orderlist-controls .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-orderlist .p-orderlist-header {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-header .p-orderlist-title {
+  font-weight: 600;
+}
+.p-orderlist .p-orderlist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  border-bottom: 0 none;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-orderlist .p-orderlist-filter-container .p-orderlist-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-orderlist .p-orderlist-list {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-orderlist .p-orderlist-list .p-orderlist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+}
+.p-orderlist .p-orderlist-list:not(.cdk-drop-list-dragging) .p-orderlist-item:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+
+.p-orderlist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: #212529;
+  background: #ffffff;
+  margin: 0;
+}
+
+.p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i {
+  color: #3e1b4f;
+}
+.p-organizationchart .p-organizationchart-line-down {
+  background: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-line-left {
+  border-right: 1px solid #dee2e6;
+  border-color: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-line-top {
+  border-top: 1px solid #dee2e6;
+  border-color: #dee2e6;
+}
+.p-organizationchart .p-organizationchart-node-content {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 1.25rem;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler {
+  background: inherit;
+  color: inherit;
+  border-radius: 50%;
+}
+.p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-paginator {
+  background: #ffffff;
+  color: #883cae;
+  border: solid #dee2e6;
+  border-width: 0;
+  padding: 0.75rem;
+  border-radius: 4px;
+}
+.p-paginator .p-paginator-first,
+.p-paginator .p-paginator-prev,
+.p-paginator .p-paginator-next,
+.p-paginator .p-paginator-last {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #883cae;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
+.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #883cae;
+}
+.p-paginator .p-paginator-first {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-paginator .p-paginator-last {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.p-paginator .p-dropdown {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+  height: 2.357rem;
+}
+.p-paginator .p-dropdown .p-dropdown-label {
+  padding-right: 0;
+}
+.p-paginator .p-paginator-page-input {
+  margin-left: 0.5rem;
+  margin-right: 0.5rem;
+}
+.p-paginator .p-paginator-page-input .p-inputtext {
+  max-width: 2.357rem;
+}
+.p-paginator .p-paginator-current {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #883cae;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  padding: 0 0.5rem;
+}
+.p-paginator .p-paginator-pages .p-paginator-page {
+  background-color: #ffffff;
+  border: 1px solid #dee2e6;
+  color: #883cae;
+  min-width: 2.357rem;
+  height: 2.357rem;
+  margin: 0 0 0 -1px;
+  transition: box-shadow 0.15s;
+  border-radius: 0;
+}
+.p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
+  background: #883cae;
+  border-color: #883cae;
+  color: #ffffff;
+}
+.p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #883cae;
+}
+
+.p-picklist .p-picklist-buttons {
+  padding: 1.25rem;
+}
+.p-picklist .p-picklist-buttons .p-button {
+  margin-bottom: 0.5rem;
+}
+.p-picklist .p-picklist-header {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-picklist .p-picklist-header .p-picklist-title {
+  font-weight: 600;
+}
+.p-picklist .p-picklist-filter-container {
+  padding: 1rem 1.25rem;
+  background: #ffffff;
+  border: 1px solid #dee2e6;
+  border-bottom: 0 none;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-input {
+  padding-right: 1.75rem;
+}
+.p-picklist .p-picklist-filter-container .p-picklist-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-picklist .p-picklist-list {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 0.5rem 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-picklist .p-picklist-list .p-picklist-item {
+  padding: 0.5rem 1.5rem;
+  margin: 0;
+  border: 0 none;
+  color: #212529;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-picklist .p-picklist-list .p-picklist-item:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-picklist .p-picklist-list .p-picklist-item.p-highlight {
+  color: #ffffff;
+  background: #883cae;
+}
+.p-picklist .p-picklist-list .p-picklist-empty-message {
+  padding: 0.5rem 1.5rem;
+  color: #212529;
+}
+.p-picklist .p-picklist-list:not(.cdk-drop-list-dragging) .p-picklist-item:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+
+.p-picklist-item.cdk-drag-preview {
+  padding: 0.5rem 1.5rem;
+  box-shadow: none;
+  border: 0 none;
+  color: #212529;
+  background: #ffffff;
+  margin: 0;
+}
+
+.p-timeline .p-timeline-event-marker {
+  border: 0 none;
+  border-radius: 50%;
+  width: 1rem;
+  height: 1rem;
+  background-color: #883cae;
+}
+.p-timeline .p-timeline-event-connector {
+  background-color: #dee2e6;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-opposite,
+.p-timeline.p-timeline-vertical .p-timeline-event-content {
+  padding: 0 1rem;
+}
+.p-timeline.p-timeline-vertical .p-timeline-event-connector {
+  width: 2px;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-opposite,
+.p-timeline.p-timeline-horizontal .p-timeline-event-content {
+  padding: 1rem 0;
+}
+.p-timeline.p-timeline-horizontal .p-timeline-event-connector {
+  height: 2px;
+}
+
+.p-tree {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  padding: 1.25rem;
+  border-radius: 4px;
+}
+.p-tree .p-tree-container .p-treenode {
+  padding: 0.143rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  padding: 0.286rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon {
+  margin-right: 0.5rem;
+  color: #6c757d;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: #212529;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover,
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover {
+  color: #ffffff;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-dragover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree .p-tree-filter-container {
+  margin-bottom: 0.5rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter {
+  width: 100%;
+  padding-right: 1.75rem;
+}
+.p-tree .p-tree-filter-container .p-tree-filter-icon {
+  right: 0.75rem;
+  color: #495057;
+}
+.p-tree .p-treenode-children {
+  padding: 0 0 0 1rem;
+}
+.p-tree .p-tree-loading-icon {
+  font-size: 2rem;
+}
+.p-tree .p-treenode-droppoint.p-treenode-droppoint-active {
+  background-color: #6d308b;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content {
+  border-radius: 4px;
+  border: 1px solid #dee2e6;
+  background-color: #ffffff;
+  color: #212529;
+  padding: 0.286rem;
+  transition: box-shadow 0.15s;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight {
+  background-color: #883cae;
+  color: #ffffff;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-highlight .p-treenode-icon {
+  color: #ffffff;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-tree-toggler {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-icon {
+  color: #6c757d;
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content .p-treenode-label:not(.p-highlight):hover {
+  background-color: inherit;
+  color: inherit;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-tree.p-tree-horizontal .p-treenode .p-treenode-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-treetable .p-paginator-top {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-paginator-bottom {
+  border-width: 1px 0 0 0;
+  border-radius: 0;
+}
+.p-treetable .p-treetable-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-treetable .p-treetable-thead > tr > th {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 2px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+  transition: box-shadow 0.15s;
+}
+.p-treetable .p-treetable-tfoot > tr > td {
+  text-align: left;
+  padding: 1rem 1rem;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  font-weight: 600;
+  color: #212529;
+  background: #ffffff;
+}
+.p-treetable .p-sortable-column {
+  outline-color: rgba(136, 60, 174, 0.5);
+}
+.p-treetable .p-sortable-column .p-sortable-column-icon {
+  color: #6c757d;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column .p-sortable-column-badge {
+  border-radius: 50%;
+  height: 1.143rem;
+  min-width: 1.143rem;
+  line-height: 1.143rem;
+  color: #ffffff;
+  background: #883cae;
+  margin-left: 0.5rem;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon {
+  color: #6c757d;
+}
+.p-treetable .p-sortable-column.p-highlight {
+  background: #ffffff;
+  color: #883cae;
+}
+.p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon {
+  color: #883cae;
+}
+.p-treetable .p-treetable-tbody > tr {
+  background: #ffffff;
+  color: #212529;
+  transition: box-shadow 0.15s;
+  outline-color: rgba(136, 60, 174, 0.5);
+}
+.p-treetable .p-treetable-tbody > tr > td {
+  text-align: left;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox {
+  margin-right: 0.5rem;
+}
+.p-treetable .p-treetable-tbody > tr > td p-treetablecheckbox .p-checkbox .p-indeterminate .p-checkbox-icon {
+  color: #212529;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler {
+  color: #ffffff;
+}
+.p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover {
+  color: #ffffff;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler {
+  color: #212529;
+}
+.p-treetable .p-column-resizer-helper {
+  background: #883cae;
+}
+.p-treetable .p-treetable-scrollable-header,
+.p-treetable .p-treetable-scrollable-footer {
+  background: #efefef;
+}
+.p-treetable .p-treetable-loading-icon {
+  font-size: 2rem;
+}
+.p-treetable.p-treetable-gridlines .p-datatable-header {
+  border-width: 1px 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-footer {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-top {
+  border-width: 0 1px 0 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-bottom {
+  border-width: 0 1px 1px 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td {
+  border-width: 1px;
+}
+.p-treetable.p-treetable-sm .p-treetable-header {
+  padding: 0.875rem 0.875rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-thead > tr > th {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tbody > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-sm .p-treetable-footer {
+  padding: 0.5rem 0.5rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-header {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-thead > tr > th {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tbody > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td {
+  padding: 1.25rem 1.25rem;
+}
+.p-treetable.p-treetable-lg .p-treetable-footer {
+  padding: 1.25rem 1.25rem;
+}
+
+.p-virtualscroller .p-virtualscroller-header {
+  background: #efefef;
+  color: #212529;
+  border: solid #dee2e6;
+  border-width: 1px 0 0 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+}
+.p-virtualscroller .p-virtualscroller-content {
+  background: #ffffff;
+  color: #212529;
+  border: 0 none;
+  padding: 0;
+}
+.p-virtualscroller .p-virtualscroller-footer {
+  background: #efefef;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-width: 1px 0 1px 0;
+  padding: 1rem 1rem;
+  font-weight: 600;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+
+.p-accordion .p-accordion-header .p-accordion-header-link {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon {
+  margin-right: 0.5rem;
+}
+.p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-color: #dee2e6;
+  background: #e9ecef;
+  color: #212529;
+}
+.p-accordion .p-accordion-content {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab .p-accordion-tab {
+  margin-bottom: 0;
+}
+.p-accordion p-accordiontab .p-accordion-header .p-accordion-header-link {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab .p-accordion-content {
+  border-radius: 0;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion p-accordiontab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link {
+  border-top: 0 none;
+}
+.p-accordion p-accordiontab:first-child .p-accordion-header .p-accordion-header-link {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-accordion p-accordiontab:last-child .p-accordion-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-card {
+  background: #ffffff;
+  color: #212529;
+  box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 4px;
+}
+.p-card .p-card-body {
+  padding: 1.5rem;
+}
+.p-card .p-card-title {
+  font-size: 1.5rem;
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+.p-card .p-card-subtitle {
+  font-weight: 400;
+  margin-bottom: 0.5rem;
+  color: #6c757d;
+}
+.p-card .p-card-content {
+  padding: 1rem 0;
+}
+.p-card .p-card-footer {
+  padding: 1rem 0 0 0;
+}
+
+.p-divider .p-divider-content {
+  background-color: #ffffff;
+}
+.p-divider.p-divider-horizontal {
+  margin: 1rem 0;
+  padding: 0 1rem;
+}
+.p-divider.p-divider-horizontal:before {
+  border-top: 1px #dee2e6;
+}
+.p-divider.p-divider-horizontal .p-divider-content {
+  padding: 0 0.5rem;
+}
+.p-divider.p-divider-vertical {
+  margin: 0 1rem;
+  padding: 1rem 0;
+}
+.p-divider.p-divider-vertical:before {
+  border-left: 1px #dee2e6;
+}
+.p-divider.p-divider-vertical .p-divider-content {
+  padding: 0.5rem 0;
+}
+
+.p-fieldset {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-radius: 4px;
+}
+.p-fieldset .p-fieldset-legend {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend {
+  padding: 0;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a {
+  padding: 1rem 1.25rem;
+  color: #212529;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler {
+  margin-right: 0.5rem;
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-fieldset .p-fieldset-content {
+  padding: 1.25rem;
+}
+
+.p-panel .p-panel-header {
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  background: #efefef;
+  color: #212529;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panel .p-panel-header .p-panel-title {
+  font-weight: 600;
+}
+.p-panel .p-panel-header .p-panel-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-panel .p-panel-header .p-panel-header-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-panel .p-panel-header .p-panel-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-panel.p-panel-toggleable .p-panel-header {
+  padding: 0.5rem 1.25rem;
+}
+.p-panel .p-panel-content {
+  padding: 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+  border-top: 0 none;
+}
+.p-panel .p-panel-footer {
+  padding: 0.5rem 1.25rem;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  border-top: 0 none;
+}
+
+.p-scrollpanel .p-scrollpanel-bar {
+  background: #efefef;
+  border: 0 none;
+}
+
+.p-splitter {
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  border-radius: 4px;
+  color: #212529;
+}
+.p-splitter .p-splitter-gutter {
+  transition: box-shadow 0.15s;
+  background: #efefef;
+}
+.p-splitter .p-splitter-gutter .p-splitter-gutter-handle {
+  background: #dee2e6;
+}
+.p-splitter .p-splitter-gutter-resizing {
+  background: #dee2e6;
+}
+
+.p-tabview .p-tabview-nav {
+  background: transparent;
+  border: 1px solid #dee2e6;
+  border-width: 0 0 1px 0;
+}
+.p-tabview .p-tabview-nav li {
+  margin-right: 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #ffffff #ffffff #dee2e6 #ffffff;
+  background: #ffffff;
+  color: #6c757d;
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
+  background: #ffffff;
+  border-color: #dee2e6;
+  color: #6c757d;
+}
+.p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
+  background: #ffffff;
+  border-color: #dee2e6 #dee2e6 #ffffff #dee2e6;
+  color: #495057;
+}
+.p-tabview .p-tabview-left-icon {
+  margin-right: 0.5rem;
+}
+.p-tabview .p-tabview-right-icon {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-close {
+  margin-left: 0.5rem;
+}
+.p-tabview .p-tabview-nav-btn.p-link {
+  background: #ffffff;
+  color: #495057;
+  width: 2.357rem;
+  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+  border-radius: 0;
+}
+.p-tabview .p-tabview-nav-btn.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-tabview .p-tabview-panels {
+  background: #ffffff;
+  padding: 1.25rem;
+  border: 0 none;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-toolbar {
+  background: #efefef;
+  border: 1px solid #dee2e6;
+  padding: 1rem 1.25rem;
+  border-radius: 4px;
+}
+.p-toolbar .p-toolbar-separator {
+  margin: 0 0.5rem;
+}
+
+.p-confirm-popup {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-confirm-popup .p-confirm-popup-content {
+  padding: 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer {
+  text-align: right;
+  padding: 0.5rem 1.25rem;
+}
+.p-confirm-popup .p-confirm-popup-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-confirm-popup .p-confirm-popup-footer button:last-child {
+  margin: 0;
+}
+.p-confirm-popup:after {
+  border: solid transparent;
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #ffffff;
+}
+.p-confirm-popup:before {
+  border: solid transparent;
+  border-color: rgba(0, 0, 0, 0);
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+}
+.p-confirm-popup.p-confirm-popup-flipped:after {
+  border-top-color: #ffffff;
+}
+.p-confirm-popup.p-confirm-popup-flipped:before {
+  border-top-color: rgba(0, 0, 0, 0.2);
+}
+.p-confirm-popup .p-confirm-popup-icon {
+  font-size: 1.5rem;
+}
+.p-confirm-popup .p-confirm-popup-message {
+  margin-left: 1rem;
+}
+
+.p-dialog {
+  border-radius: 4px;
+  box-shadow: none;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+}
+.p-dialog .p-dialog-header {
+  border-bottom: 1px solid #e9ecef;
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-dialog .p-dialog-header .p-dialog-title {
+  font-weight: 600;
+  font-size: 1.25rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-dialog .p-dialog-header .p-dialog-header-icon:last-child {
+  margin-right: 0;
+}
+.p-dialog .p-dialog-content {
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+}
+.p-dialog .p-dialog-footer {
+  border-top: 1px solid #e9ecef;
+  background: #ffffff;
+  color: #212529;
+  padding: 1rem;
+  text-align: right;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-dialog .p-dialog-footer button {
+  margin: 0 0.5rem 0 0;
+  width: auto;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-icon {
+  font-size: 2rem;
+}
+.p-dialog.p-confirm-dialog .p-confirm-dialog-message {
+  margin-left: 1rem;
+}
+
+.p-overlaypanel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 4px;
+  box-shadow: none;
+}
+.p-overlaypanel .p-overlaypanel-content {
+  padding: 1.25rem;
+}
+.p-overlaypanel .p-overlaypanel-close {
+  background: #883cae;
+  color: #ffffff;
+  width: 2rem;
+  height: 2rem;
+  transition: box-shadow 0.15s;
+  border-radius: 50%;
+  position: absolute;
+  top: -1rem;
+  right: -1rem;
+}
+.p-overlaypanel .p-overlaypanel-close:enabled:hover {
+  background: #7a38a7;
+  color: #ffffff;
+}
+.p-overlaypanel:after {
+  border: solid transparent;
+  border-color: rgba(255, 255, 255, 0);
+  border-bottom-color: #ffffff;
+}
+.p-overlaypanel:before {
+  border: solid transparent;
+  border-color: rgba(0, 0, 0, 0);
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+}
+.p-overlaypanel.p-overlaypanel-flipped:after {
+  border-top-color: #ffffff;
+}
+.p-overlaypanel.p-overlaypanel-flipped:before {
+  border-top-color: rgba(0, 0, 0, 0.2);
+}
+
+.p-sidebar {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  box-shadow: none;
+}
+.p-sidebar .p-sidebar-header {
+  padding: 1rem 1.25rem;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close,
+.p-sidebar .p-sidebar-header .p-sidebar-icon {
+  width: 2rem;
+  height: 2rem;
+  color: #6c757d;
+  border: 0 none;
+  background: transparent;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover {
+  color: #495057;
+  border-color: transparent;
+  background: transparent;
+}
+.p-sidebar .p-sidebar-header .p-sidebar-close:focus,
+.p-sidebar .p-sidebar-header .p-sidebar-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-sidebar .p-sidebar-header + .p-sidebar-content {
+  padding-top: 0;
+}
+.p-sidebar .p-sidebar-content {
+  padding: 1.25rem;
+}
+
+.p-tooltip .p-tooltip-text {
+  background: #212529;
+  color: #ffffff;
+  padding: 0.5rem 0.75rem;
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-tooltip.p-tooltip-right .p-tooltip-arrow {
+  border-right-color: #212529;
+}
+.p-tooltip.p-tooltip-left .p-tooltip-arrow {
+  border-left-color: #212529;
+}
+.p-tooltip.p-tooltip-top .p-tooltip-arrow {
+  border-top-color: #212529;
+}
+.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
+  border-bottom-color: #212529;
+}
+
+.p-fileupload .p-fileupload-buttonbar {
+  background: #efefef;
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  border-bottom: 0 none;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button {
+  margin-right: 0.5rem;
+}
+.p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-fileupload .p-fileupload-content {
+  background: #ffffff;
+  padding: 2rem 1rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-fileupload .p-progressbar {
+  height: 0.25rem;
+}
+.p-fileupload .p-fileupload-row > div {
+  padding: 1rem 1rem;
+}
+.p-fileupload.p-fileupload-advanced .p-message {
+  margin-top: 0;
+}
+
+.p-fileupload-choose:not(.p-disabled):hover {
+  background: #7a38a7;
+  color: #ffffff;
+  border-color: #7a38a7;
+}
+.p-fileupload-choose:not(.p-disabled):active {
+  background: #68329e;
+  color: #ffffff;
+  border-color: #68329e;
+}
+
+.p-breadcrumb {
+  background: #efefef;
+  border: 0 none;
+  border-radius: 4px;
+  padding: 1rem;
+}
+.p-breadcrumb ul li .p-menuitem-link {
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-breadcrumb ul li .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-text {
+  color: #883cae;
+}
+.p-breadcrumb ul li .p-menuitem-link .p-menuitem-icon {
+  color: #883cae;
+}
+.p-breadcrumb ul li.p-breadcrumb-chevron {
+  margin: 0 0.5rem 0 0.5rem;
+  color: #6c757d;
+}
+.p-breadcrumb ul li:last-child .p-menuitem-text {
+  color: #6c757d;
+}
+.p-breadcrumb ul li:last-child .p-menuitem-icon {
+  color: #6c757d;
+}
+
+.p-contextmenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-contextmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-contextmenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-contextmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  border-radius: 4px;
+}
+.p-contextmenu .p-menuitem {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-contextmenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-contextmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-dock .p-dock-list {
+  background: rgba(255, 255, 255, 0.1);
+  border: 1px solid rgba(255, 255, 255, 0.2);
+  padding: 0.5rem 0.5rem;
+  border-radius: 0.5rem;
+}
+.p-dock .p-dock-item {
+  padding: 0.5rem;
+}
+.p-dock .p-dock-action {
+  width: 4rem;
+  height: 4rem;
+}
+.p-dock.p-dock-top .p-dock-item-second-prev,
+.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev,
+.p-dock.p-dock-bottom .p-dock-item-second-next {
+  margin: 0 0.9rem;
+}
+.p-dock.p-dock-top .p-dock-item-prev,
+.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev,
+.p-dock.p-dock-bottom .p-dock-item-next {
+  margin: 0 1.3rem;
+}
+.p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current {
+  margin: 0 1.5rem;
+}
+.p-dock.p-dock-left .p-dock-item-second-prev,
+.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev,
+.p-dock.p-dock-right .p-dock-item-second-next {
+  margin: 0.9rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-prev,
+.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev,
+.p-dock.p-dock-right .p-dock-item-next {
+  margin: 1.3rem 0;
+}
+.p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current {
+  margin: 1.5rem 0;
+}
+
+@media screen and (max-width: 960px) {
+  .p-dock.p-dock-top .p-dock-list-container, .p-dock.p-dock-bottom .p-dock-list-container {
+    overflow-x: auto;
+    width: 100%;
+  }
+  .p-dock.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-bottom .p-dock-list-container .p-dock-list {
+    margin: 0 auto;
+  }
+  .p-dock.p-dock-left .p-dock-list-container, .p-dock.p-dock-right .p-dock-list-container {
+    overflow-y: auto;
+    height: 100%;
+  }
+  .p-dock.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-right .p-dock-list-container .p-dock-list {
+    margin: auto 0;
+  }
+  .p-dock .p-dock-list .p-dock-item {
+    transform: none;
+    margin: 0;
+  }
+}
+.p-megamenu {
+  padding: 0.5rem 1rem;
+  background: #efefef;
+  color: rgba(0, 0, 0, 0.9);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(0, 0, 0, 0.5);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.5);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-left: 0.5rem;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-megamenu .p-megamenu-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-megamenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-megamenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-megamenu .p-megamenu-panel {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-megamenu .p-megamenu-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-megamenu .p-megamenu-submenu {
+  padding: 0.5rem 0;
+  width: 12.5rem;
+}
+.p-megamenu .p-megamenu-submenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem {
+  margin: 0;
+}
+.p-megamenu .p-megamenu-submenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-megamenu.p-megamenu-vertical {
+  width: 12.5rem;
+  padding: 0.5rem 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem {
+  margin: 0;
+}
+.p-megamenu.p-megamenu-vertical .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-menu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-menu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-menu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-menu.p-menu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-menu .p-submenu-header {
+  margin: 0;
+  padding: 0.75rem 1rem;
+  color: #212529;
+  background: #ffffff;
+  font-weight: 600;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+}
+.p-menu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-menu .p-menuitem {
+  margin: 0;
+}
+.p-menu .p-menuitem:last-child {
+  margin: 0;
+}
+
+.p-menubar {
+  padding: 0.5rem 1rem;
+  background: #efefef;
+  color: rgba(0, 0, 0, 0.9);
+  border: 0 none;
+  border-radius: 4px;
+}
+.p-menubar .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-menubar .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+  padding: 1rem;
+  color: rgba(0, 0, 0, 0.5);
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-right: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.5);
+  margin-left: 0.5rem;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.7);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover {
+  background: transparent;
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon,
+.p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: rgba(0, 0, 0, 0.9);
+}
+.p-menubar .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+  width: 12.5rem;
+}
+.p-menubar .p-submenu-list .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-menubar .p-submenu-list .p-submenu-icon {
+  font-size: 0.875rem;
+}
+.p-menubar .p-submenu-list .p-menuitem {
+  margin: 0;
+}
+.p-menubar .p-submenu-list .p-menuitem:last-child {
+  margin: 0;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+
+@media screen and (max-width: 960px) {
+  .p-menubar {
+    position: relative;
+  }
+  .p-menubar .p-menubar-button {
+    display: flex;
+    width: 2rem;
+    height: 2rem;
+    color: rgba(0, 0, 0, 0.5);
+    border-radius: 50%;
+    transition: box-shadow 0.15s;
+  }
+  .p-menubar .p-menubar-button:hover {
+    color: rgba(0, 0, 0, 0.7);
+    background: transparent;
+  }
+  .p-menubar .p-menubar-button:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+  }
+  .p-menubar .p-menubar-root-list {
+    position: absolute;
+    display: none;
+    padding: 0.5rem 0;
+    background: #ffffff;
+    border: 1px solid rgba(0, 0, 0, 0.15);
+    box-shadow: none;
+    width: 100%;
+  }
+  .p-menubar .p-menubar-root-list .p-menu-separator {
+    border-top: 1px solid #dee2e6;
+    margin: 0.5rem 0;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-icon {
+    font-size: 0.875rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link {
+    padding: 0.75rem 1rem;
+    color: #212529;
+    border-radius: 0;
+    transition: box-shadow 0.15s;
+    user-select: none;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-text {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-menuitem-icon {
+    color: #212529;
+    margin-right: 0.5rem;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link .p-submenu-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover {
+    background: #e9ecef;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+    color: #212529;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link:focus {
+    outline: 0 none;
+    outline-offset: 0;
+    box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-link > .p-submenu-icon {
+    margin-left: auto;
+    transition: transform 0.15s;
+  }
+  .p-menubar .p-menubar-root-list > .p-menuitem.p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-180deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list {
+    width: 100%;
+    position: static;
+    box-shadow: none;
+    border: 0 none;
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-submenu-icon {
+    transition: transform 0.15s;
+    transform: rotate(90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-link > .p-submenu-icon {
+    transform: rotate(-90deg);
+  }
+  .p-menubar .p-menubar-root-list .p-menuitem {
+    width: 100%;
+    position: static;
+  }
+  .p-menubar .p-menubar-root-list ul li a {
+    padding-left: 2.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li a {
+    padding-left: 3.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li a {
+    padding-left: 5.25rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li a {
+    padding-left: 6.75rem;
+  }
+  .p-menubar .p-menubar-root-list ul li ul li ul li ul li ul li a {
+    padding-left: 8.25rem;
+  }
+  .p-menubar.p-menubar-mobile-active .p-menubar-root-list {
+    display: flex;
+    flex-direction: column;
+    top: 100%;
+    left: 0;
+    z-index: 1;
+  }
+}
+.p-panelmenu .p-panelmenu-header > a {
+  padding: 1rem 1.25rem;
+  border: 1px solid #dee2e6;
+  color: #212529;
+  background: #efefef;
+  font-weight: 600;
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-panelmenu .p-panelmenu-header > a .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-header > a:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled) > a:hover {
+  background: #e9ecef;
+  border-color: #dee2e6;
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight > a {
+  background: #efefef;
+  border-color: #dee2e6;
+  color: #212529;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.p-panelmenu .p-panelmenu-header.p-highlight:not(.p-disabled) > a:hover {
+  border-color: #dee2e6;
+  background: #e9ecef;
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content {
+  padding: 0.5rem 0;
+  border: 1px solid #dee2e6;
+  background: #ffffff;
+  color: #212529;
+  margin-bottom: 0;
+  border-top: 0;
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-link .p-panelmenu-icon {
+  margin-right: 0.5rem;
+}
+.p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-submenu) {
+  padding: 0 0 0 1rem;
+}
+.p-panelmenu .p-panelmenu-panel {
+  margin-bottom: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-header > a {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel .p-panelmenu-content {
+  border-radius: 0;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover > a, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover > a {
+  border-top: 0 none;
+}
+.p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header > a {
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) > a {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content {
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+
+.p-slidemenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-slidemenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-slidemenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-slidemenu.p-slidemenu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link {
+  background: #e9ecef;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-text {
+  color: #212529;
+}
+.p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon, .p-slidemenu .p-slidemenu.p-slidemenu-active > .p-slidemenu-link .p-slidemenu-icon {
+  color: #212529;
+}
+.p-slidemenu .p-slidemenu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-slidemenu .p-slidemenu-icon {
+  font-size: 0.875rem;
+}
+.p-slidemenu .p-slidemenu-backward {
+  padding: 0.75rem 1rem;
+  color: #212529;
+}
+
+.p-steps .p-steps-item .p-menuitem-link {
+  background: transparent;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  background: transparent;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-number {
+  color: #212529;
+  border: 1px solid #dee2e6;
+  background: transparent;
+  min-width: 2rem;
+  height: 2rem;
+  line-height: 2rem;
+  font-size: 1.143rem;
+  z-index: 1;
+  border-radius: 4px;
+}
+.p-steps .p-steps-item .p-menuitem-link .p-steps-title {
+  margin-top: 0.5rem;
+  color: #6c757d;
+}
+.p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-steps .p-steps-item.p-highlight .p-steps-number {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-steps .p-steps-item.p-highlight .p-steps-title {
+  font-weight: 600;
+  color: #212529;
+}
+.p-steps .p-steps-item:before {
+  content: " ";
+  border-top: 1px solid #dee2e6;
+  width: 100%;
+  top: 50%;
+  left: 0;
+  display: block;
+  position: absolute;
+  margin-top: -1rem;
+}
+
+.p-tabmenu .p-tabmenu-nav {
+  background: transparent;
+  border: 1px solid #dee2e6;
+  border-width: 0 0 1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem {
+  margin-right: 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
+  border: solid;
+  border-width: 1px;
+  border-color: #ffffff #ffffff #dee2e6 #ffffff;
+  background: #ffffff;
+  color: #6c757d;
+  padding: 0.75rem 1rem;
+  font-weight: 600;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  transition: box-shadow 0.15s;
+  margin: 0 0 -1px 0;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon {
+  margin-right: 0.5rem;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link {
+  background: #ffffff;
+  border-color: #dee2e6;
+  color: #6c757d;
+}
+.p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link {
+  background: #ffffff;
+  border-color: #dee2e6 #dee2e6 #ffffff #dee2e6;
+  color: #495057;
+}
+
+.p-tieredmenu {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  border-radius: 4px;
+  width: 12.5rem;
+}
+.p-tieredmenu .p-menuitem-link {
+  padding: 0.75rem 1rem;
+  color: #212529;
+  border-radius: 0;
+  transition: box-shadow 0.15s;
+  user-select: none;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link .p-menuitem-icon {
+  color: #212529;
+  margin-right: 0.5rem;
+}
+.p-tieredmenu .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover {
+  background: #e9ecef;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-menuitem-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:not(.p-disabled):hover .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 0.15rem rgba(136, 60, 174, 0.5);
+}
+.p-tieredmenu.p-tieredmenu-overlay {
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-tieredmenu .p-submenu-list {
+  padding: 0.5rem 0;
+  background: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  box-shadow: none;
+}
+.p-tieredmenu .p-menuitem {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem:last-child {
+  margin: 0;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link {
+  background: #e9ecef;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-text {
+  color: #212529;
+}
+.p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-menuitem-active > .p-menuitem-link .p-submenu-icon {
+  color: #212529;
+}
+.p-tieredmenu .p-menu-separator {
+  border-top: 1px solid #dee2e6;
+  margin: 0.5rem 0;
+}
+.p-tieredmenu .p-submenu-icon {
+  font-size: 0.875rem;
+}
+
+.p-inline-message {
+  padding: 0.5rem 0.75rem;
+  margin: 0;
+  border-radius: 4px;
+}
+.p-inline-message.p-inline-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 0px;
+  color: #004085;
+}
+.p-inline-message.p-inline-message-info .p-inline-message-icon {
+  color: #004085;
+}
+.p-inline-message.p-inline-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 0px;
+  color: #155724;
+}
+.p-inline-message.p-inline-message-success .p-inline-message-icon {
+  color: #155724;
+}
+.p-inline-message.p-inline-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 0px;
+  color: #856404;
+}
+.p-inline-message.p-inline-message-warn .p-inline-message-icon {
+  color: #856404;
+}
+.p-inline-message.p-inline-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 0px;
+  color: #721c24;
+}
+.p-inline-message.p-inline-message-error .p-inline-message-icon {
+  color: #721c24;
+}
+.p-inline-message .p-inline-message-icon {
+  font-size: 1rem;
+  margin-right: 0.5rem;
+}
+.p-inline-message .p-inline-message-text {
+  font-size: 1rem;
+}
+.p-inline-message.p-inline-message-icon-only .p-inline-message-icon {
+  margin-right: 0;
+}
+
+.p-message {
+  margin: 1rem 0;
+  border-radius: 4px;
+}
+.p-message .p-message-wrapper {
+  padding: 1rem 1.25rem;
+}
+.p-message .p-message-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-message .p-message-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-message .p-message-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-message.p-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-message.p-message-info .p-message-icon {
+  color: #004085;
+}
+.p-message.p-message-info .p-message-close {
+  color: #004085;
+}
+.p-message.p-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-message.p-message-success .p-message-icon {
+  color: #155724;
+}
+.p-message.p-message-success .p-message-close {
+  color: #155724;
+}
+.p-message.p-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-icon {
+  color: #856404;
+}
+.p-message.p-message-warn .p-message-close {
+  color: #856404;
+}
+.p-message.p-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-icon {
+  color: #721c24;
+}
+.p-message.p-message-error .p-message-close {
+  color: #721c24;
+}
+.p-message .p-message-text {
+  font-size: 1rem;
+  font-weight: 500;
+}
+.p-message .p-message-icon {
+  font-size: 1.5rem;
+  margin-right: 0.5rem;
+}
+.p-message .p-message-summary {
+  font-weight: 700;
+}
+.p-message .p-message-detail {
+  margin-left: 0.5rem;
+}
+
+.p-toast {
+  opacity: 1;
+}
+.p-toast .p-toast-message {
+  margin: 0 0 1rem 0;
+  box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
+  border-radius: 4px;
+}
+.p-toast .p-toast-message .p-toast-message-content {
+  padding: 1rem;
+  border-width: 0;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-text {
+  margin: 0 0 0 1rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon {
+  font-size: 2rem;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-summary {
+  font-weight: 700;
+}
+.p-toast .p-toast-message .p-toast-message-content .p-toast-detail {
+  margin: 0.5rem 0 0 0;
+}
+.p-toast .p-toast-message .p-toast-icon-close {
+  width: 2rem;
+  height: 2rem;
+  border-radius: 50%;
+  background: transparent;
+  transition: box-shadow 0.15s;
+}
+.p-toast .p-toast-message .p-toast-icon-close:hover {
+  background: rgba(255, 255, 255, 0.3);
+}
+.p-toast .p-toast-message .p-toast-icon-close:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+.p-toast .p-toast-message.p-toast-message-info {
+  background: #cce5ff;
+  border: solid #b8daff;
+  border-width: 1px;
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close {
+  color: #004085;
+}
+.p-toast .p-toast-message.p-toast-message-success {
+  background: #d4edda;
+  border: solid #c3e6cb;
+  border-width: 1px;
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close {
+  color: #155724;
+}
+.p-toast .p-toast-message.p-toast-message-warn {
+  background: #fff3cd;
+  border: solid #ffeeba;
+  border-width: 1px;
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close {
+  color: #856404;
+}
+.p-toast .p-toast-message.p-toast-message-error {
+  background: #f8d7da;
+  border: solid #f5c6cb;
+  border-width: 1px;
+  color: #721c24;
+}
+.p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon,
+.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close {
+  color: #721c24;
+}
+
+.p-galleria .p-galleria-close {
+  margin: 0.5rem;
+  background: transparent;
+  color: #efefef;
+  width: 4rem;
+  height: 4rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-close .p-galleria-close-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-close:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-item-nav {
+  background: transparent;
+  color: #efefef;
+  width: 4rem;
+  height: 4rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+  margin: 0 0.5rem;
+}
+.p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon,
+.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon {
+  font-size: 2rem;
+}
+.p-galleria .p-galleria-item-nav:not(.p-disabled):hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-caption {
+  background: rgba(0, 0, 0, 0.5);
+  color: #efefef;
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators {
+  padding: 1rem;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button {
+  background-color: #e9ecef;
+  width: 1rem;
+  height: 1rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: #dee2e6;
+}
+.p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator {
+  margin-right: 0.5rem;
+}
+.p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator {
+  margin-bottom: 0.5rem;
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators {
+  background: rgba(0, 0, 0, 0.5);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button {
+  background: rgba(255, 255, 255, 0.4);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover {
+  background: rgba(255, 255, 255, 0.6);
+}
+.p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button {
+  background: #883cae;
+  color: #ffffff;
+}
+.p-galleria .p-galleria-thumbnail-container {
+  background: rgba(0, 0, 0, 0.9);
+  padding: 1rem 0.25rem;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next {
+  margin: 0.5rem;
+  background-color: transparent;
+  color: #efefef;
+  width: 2rem;
+  height: 2rem;
+  transition: box-shadow 0.15s;
+  border-radius: 4px;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover,
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover {
+  background: rgba(255, 255, 255, 0.1);
+  color: #efefef;
+}
+.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-galleria-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-mask {
+  --maskbg: rgba(0, 0, 0, 0.9);
+}
+
+.p-image-preview-indicator {
+  background-color: transparent;
+  color: #f8f9fa;
+  transition: box-shadow 0.15s;
+}
+
+.p-image-preview-container:hover > .p-image-preview-indicator {
+  background-color: rgba(0, 0, 0, 0.5);
+}
+
+.p-image-toolbar {
+  padding: 1rem;
+}
+
+.p-image-action.p-link {
+  color: #f8f9fa;
+  background-color: transparent;
+  width: 3rem;
+  height: 3rem;
+  border-radius: 50%;
+  transition: box-shadow 0.15s;
+  margin-right: 0.5rem;
+}
+.p-image-action.p-link:last-child {
+  margin-right: 0;
+}
+.p-image-action.p-link:hover {
+  color: #f8f9fa;
+  background-color: rgba(255, 255, 255, 0.1);
+}
+.p-image-action.p-link i {
+  font-size: 1.5rem;
+}
+
+.p-avatar {
+  background-color: #dee2e6;
+  border-radius: 4px;
+}
+.p-avatar.p-avatar-lg {
+  width: 3rem;
+  height: 3rem;
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-lg .p-avatar-icon {
+  font-size: 1.5rem;
+}
+.p-avatar.p-avatar-xl {
+  width: 4rem;
+  height: 4rem;
+  font-size: 2rem;
+}
+.p-avatar.p-avatar-xl .p-avatar-icon {
+  font-size: 2rem;
+}
+
+.p-avatar-group .p-avatar {
+  border: 2px solid #ffffff;
+}
+
+.p-badge {
+  background: #883cae;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  min-width: 1.5rem;
+  height: 1.5rem;
+  line-height: 1.5rem;
+}
+.p-badge.p-badge-secondary {
+  background-color: #6c757d;
+  color: #ffffff;
+}
+.p-badge.p-badge-success {
+  background-color: #28a745;
+  color: #ffffff;
+}
+.p-badge.p-badge-info {
+  background-color: #17a2b8;
+  color: #ffffff;
+}
+.p-badge.p-badge-warning {
+  background-color: #ffc107;
+  color: #212529;
+}
+.p-badge.p-badge-danger {
+  background-color: #dc3545;
+  color: #ffffff;
+}
+.p-badge.p-badge-lg {
+  font-size: 1.125rem;
+  min-width: 2.25rem;
+  height: 2.25rem;
+  line-height: 2.25rem;
+}
+.p-badge.p-badge-xl {
+  font-size: 1.5rem;
+  min-width: 3rem;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.p-chip {
+  background-color: #dee2e6;
+  color: #212529;
+  border-radius: 16px;
+  padding: 0 0.75rem;
+}
+.p-chip .p-chip-text {
+  line-height: 1.5;
+  margin-top: 0.25rem;
+  margin-bottom: 0.25rem;
+}
+.p-chip .p-chip-icon {
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  margin-left: 0.5rem;
+}
+.p-chip img {
+  width: 2rem;
+  height: 2rem;
+  margin-left: -0.75rem;
+  margin-right: 0.5rem;
+}
+.p-chip .pi-chip-remove-icon {
+  border-radius: 4px;
+  transition: box-shadow 0.15s;
+}
+.p-chip .pi-chip-remove-icon:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-inplace .p-inplace-display {
+  padding: 0.5rem 0.75rem;
+  border-radius: 4px;
+  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
+}
+.p-inplace .p-inplace-display:not(.p-disabled):hover {
+  background: #e9ecef;
+  color: #212529;
+}
+.p-inplace .p-inplace-display:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: 0 0 0 0.2rem rgba(136, 60, 174, 0.5);
+}
+
+.p-progressbar {
+  border: 0 none;
+  height: 1.5rem;
+  background: #e9ecef;
+  border-radius: 4px;
+}
+.p-progressbar .p-progressbar-value {
+  border: 0 none;
+  margin: 0;
+  background: #883cae;
+}
+.p-progressbar .p-progressbar-label {
+  color: #212529;
+  line-height: 1.5rem;
+}
+
+.p-scrolltop {
+  width: 3rem;
+  height: 3rem;
+  border-radius: 4px;
+  box-shadow: none;
+  transition: box-shadow 0.15s;
+}
+.p-scrolltop.p-link {
+  background: rgba(0, 0, 0, 0.7);
+}
+.p-scrolltop.p-link:hover {
+  background: rgba(0, 0, 0, 0.8);
+}
+.p-scrolltop .p-scrolltop-icon {
+  font-size: 1.5rem;
+  color: #efefef;
+}
+
+.p-skeleton {
+  background-color: #e9ecef;
+  border-radius: 4px;
+}
+.p-skeleton:after {
+  background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0));
+}
+
+.p-tag {
+  background: #883cae;
+  color: #ffffff;
+  font-size: 0.75rem;
+  font-weight: 700;
+  padding: 0.25rem 0.4rem;
+  border-radius: 4px;
+}
+.p-tag.p-tag-success {
+  background-color: #28a745;
+  color: #ffffff;
+}
+.p-tag.p-tag-info {
+  background-color: #17a2b8;
+  color: #ffffff;
+}
+.p-tag.p-tag-warning {
+  background-color: #ffc107;
+  color: #212529;
+}
+.p-tag.p-tag-danger {
+  background-color: #dc3545;
+  color: #ffffff;
+}
+.p-tag .p-tag-icon {
+  margin-right: 0.25rem;
+  font-size: 0.75rem;
+}
+
+.p-terminal {
+  background: #ffffff;
+  color: #212529;
+  border: 1px solid #dee2e6;
+  padding: 1.25rem;
+}
+.p-terminal .p-terminal-input {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+
+/* Vendor extensions to the designer enhanced bootstrap compatibility */
+.p-breadcrumb .p-breadcrumb-chevron {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+}
+.p-breadcrumb .p-breadcrumb-chevron:before {
+  content: "/";
+}
+
+/* Customizations to the designer theme should be defined here */
Index: trip-planner-front/node_modules/primeng/resources/themes/fluent-light/theme.css
===================================================================
--- trip-planner-front/node_modules/primeng/resources/themes/fluent-light/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/primeng/resources/themes/fluent-light/theme.css	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,5792 @@
+:root {
+  --surface-a:#ffffff;
+  --surface-b:#faf9f8;
+  --surface-c:#f3f2f1;
+  --surface-d:#edebe9;
+  --surface-e:#ffffff;
+  --surface-f:#ffffff;
+  --text-color:#323130;
+  --text-color-secondary:#605e5c;
+  --primary-color:#0078d4;
+  --primary-color-text:#ffffff;
+  --font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  --surface-0: #ffffff;
+  --surface-50: #f3f2f1;
+  --surface-100: #e1dfdd;
+  --surface-200: #bebbb8;
+  --surface-300: #a19f9d;
+  --surface-400: #797775;
+  --surface-500: #484644;
+  --surface-600: #323130;
+  --surface-700: #252423;
+  --surface-800: #1b1a19;
+  --surface-900: #11100f;
+  --gray-50: #f3f2f1;
+  --gray-100: #e1dfdd;
+  --gray-200: #bebbb8;
+  --gray-300: #a19f9d;
+  --gray-400: #797775;
+  --gray-500: #484644;
+  --gray-600: #323130;
+  --gray-700: #252423;
+  --gray-800: #1b1a19;
+  --gray-900: #11100f;
+  --content-padding:1rem;
+  --inline-spacing:0.5rem;
+  --border-radius:2px;
+  --surface-ground:#faf9f8;
+  --surface-section:#ffffff;
+  --surface-card:#ffffff;
+  --surface-overlay:#ffffff;
+  --surface-border:#edebe9;
+  --surface-hover:#f3f2f1;
+  --maskbg: rgba(0, 0, 0, 0.4);
+  --focus-ring: inset 0 0 0 1px #605e5c;
+}
+
+* {
+  box-sizing: border-box;
+}
+
+.p-component {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  font-size: 1rem;
+  font-weight: normal;
+}
+
+.p-component-overlay {
+  background-color: rgba(0, 0, 0, 0.4);
+  transition-duration: 0.2s;
+}
+
+.p-disabled, .p-component:disabled {
+  opacity: 0.6;
+}
+
+.p-error {
+  color: #a4252c;
+}
+
+.p-text-secondary {
+  color: #605e5c;
+}
+
+.pi {
+  font-size: 1rem;
+}
+
+.p-link {
+  font-size: 1rem;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+  border-radius: 2px;
+}
+.p-link:focus {
+  outline: 0 none;
+  outline-offset: 0;
+  box-shadow: inset 0 0 0 1px #605e5c;
+}
+
+.p-component-overlay-enter {
+  animation: p-component-overlay-enter-animation 150ms forwards;
+}
+
+.p-component-overlay-leave {
+  animation: p-component-overlay-leave-animation 150ms forwards;
+}
+
+@keyframes p-component-overlay-enter-animation {
+  from {
+    background-color: transparent;
+  }
+  to {
+    background-color: var(--maskbg);
+  }
+}
+@keyframes p-component-overlay-leave-animation {
+  from {
+    background-color: var(--maskbg);
+  }
+  to {
+    background-color: transparent;
+  }
+}
+
+:root {
+  --blue-50:#f3f8fc;
+  --blue-100:#c6dcef;
+  --blue-200:#98c1e3;
+  --blue-300:#6ba5d7;
+  --blue-400:#3d8aca;
+  --blue-500:#106ebe;
+  --blue-600:#0e5ea2;
+  --blue-700:#0b4d85;
+  --blue-800:#093d69;
+  --blue-900:#062c4c;
+  --green-50:#f7fbf3;
+  --green-100:#d9eac4;
+  --green-200:#bbda96;
+  --green-300:#9cca67;
+  --green-400:#7eb939;
+  --green-500:#60a90a;
+  --green-600:#529009;
+  --green-700:#437607;
+  --green-800:#355d06;
+  --green-900:#264404;
+  --yellow-50:#fffcf2;
+  --yellow-100:#ffeec2;
+  --yellow-200:#ffe191;
+  --yellow-300:#ffd461;
+  --yellow-400:#ffc630;
+  --yellow-500:#ffb900;
+  --yellow-600:#d99d00;
+  --yellow-700:#b38200;
+  --yellow-800:#8c6600;
+  --yellow-900:#664a00;
+  --cyan-50:#f2fbfc;
+  --cyan-100:#c2eef1;
+  --cyan-200:#91e0e5;
+  --cyan-300:#61d2da;
+  --cyan-400:#30c5ce;
+  --cyan-500:#00b7c3;
+  --cyan-600:#009ca6;
+  --cyan-700:#008089;
+  --cyan-800:#00656b;
+  --cyan-900:#00494e;
+  --pink-50:#fef2f9;
+  --pink-100:#f8c2e3;
+  --pink-200:#f391ce;
+  --pink-300:#ee61b8;
+  --pink-400:#e830a2;
+  --pink-500:#e3008c;
+  --pink-600:#c10077;
+  --pink-700:#9f0062;
+  --pink-800:#7d004d;
+  --pink-900:#5b0038;
+  --indigo-50:#f5f6fc;
+  --indigo-100:#cdd3f1;
+  --indigo-200:#a5b0e6;
+  --indigo-300:#7d8edc;
+  --indigo-400:#566bd1;
+  --indigo-500:#2e48c6;
+  --indigo-600:#273da8;
+  --indigo-700:#20328b;
+  --indigo-800:#19286d;
+  --indigo-900:#121d4f;
+  --teal-50:#f2f9f8;
+  --teal-100:#c2e1dd;
+  --teal-200:#91c9c2;
+  --teal-300:#61b2a8;
+  --teal-400:#309a8d;
+  --teal-500:#008272;
+  --teal-600:#006f61;
+  --teal-700:#005b50;
+  --teal-800:#00483f;
+  --teal-900:#00342e;
+  --orange-50:#fdf7f2;
+  --orange-100:#f5d8c2;
+  --orange-200:#edb991;
+  --orange-300:#e49a61;
+  --orange-400:#dc7b30;
+  --orange-500:#d45c00;
+  --orange-600:#b44e00;
+  --orange-700:#944000;
+  --orange-800:#753300;
+  --orange-900:#552500;
+  --bluegray-50:#f8f9fb;
+  --bluegray-100:#dee4ed;
+  --bluegray-200:#c4cfe0;
+  --bluegray-300:#a9bad2;
+  --bluegray-400:#8fa4c4;
+  --bluegray-500:#758fb6;
+  --bluegr